diff --git a/.gitignore b/.gitignore index bb856fb..486a795 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,24 @@ obj/ *.o *.exe .DS_Store +*.log +*.user +*.sdf +*.filters +*.obj +*.tlog +*.dep +*.lastbuildstate +*.ncb + +#vs files +[Dd]ebug/ +[Rr]elease/ +*.opensdf +*.pdb +*.idb +*.ipch +*.suo #codeblocks files */*/*.layout diff --git a/compiledLib/CodeBlocks12/libvideoInputLib.a b/compiledLib/CodeBlocks12/libvideoInputLib.a new file mode 100644 index 0000000..c127fbf Binary files /dev/null and b/compiledLib/CodeBlocks12/libvideoInputLib.a differ diff --git a/compiledLib/compiledByCW/include/videoInput.h b/compiledLib/compiledByCW/include/videoInput.h deleted file mode 100755 index 4244902..0000000 --- a/compiledLib/compiledByCW/include/videoInput.h +++ /dev/null @@ -1,385 +0,0 @@ -#ifndef _VIDEOINPUT -#define _VIDEOINPUT - -//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -//IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -//FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -//AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -//LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -//OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -//THE SOFTWARE. - -////////////////////////////////////////////////////////// -//Written by Theodore Watson - theo.watson@gmail.com // -//Do whatever you want with this code but if you find // -//a bug or make an improvement I would love to know! // -// // -//Warning This code is experimental // -//use at your own risk :) // -////////////////////////////////////////////////////////// -///////////////////////////////////////////////////////// -/* Shoutouts - -Thanks to: - - Dillip Kumar Kara for crossbar code. - Zachary Lieberman for getting me into this stuff - and for being so generous with time and code. - The guys at Potion Design for helping me with VC++ - Josh Fisher for being a serious C++ nerd :) - Golan Levin for helping me debug the strangest - and slowest bug in the world! - - And all the people using this library who send in - bugs, suggestions and improvements who keep me working on - the next version - yeah thanks a lot ;) - -*/ -///////////////////////////////////////////////////////// - - - -#include -#include -#include -#include -#include - -//this is for TryEnterCriticalSection -#ifndef _WIN32_WINNT - # define _WIN32_WINNT 0x400 -#endif -#include - - -//Example Usage -/* - //create a videoInput object - videoInput VI; - - //Prints out a list of available devices and returns num of devices found - int numDevices = VI.listDevices(); - - int device1 = 0; //this could be any deviceID that shows up in listDevices - int device2 = 1; //this could be any deviceID that shows up in listDevices - - //if you want to capture at a different frame rate (default is 30) - //specify it here, you are not guaranteed to get this fps though. - //VI.setIdealFramerate(dev, 60); - - //setup the first device - there are a number of options: - - VI.setupDevice(device1); //setup the first device with the default settings - //VI.setupDevice(device1, VI_COMPOSITE); //or setup device with specific connection type - //VI.setupDevice(device1, 320, 240); //or setup device with specified video size - //VI.setupDevice(device1, 320, 240, VI_COMPOSITE); //or setup device with video size and connection type - - //VI.setFormat(device1, VI_NTSC_M); //if your card doesn't remember what format it should be - //call this with the appropriate format listed above - //NOTE: must be called after setupDevice! - - //optionally setup a second (or third, fourth ...) device - same options as above - VI.setupDevice(device2); - - //As requested width and height can not always be accomodated - //make sure to check the size once the device is setup - - int width = VI.getWidth(device1); - int height = VI.getHeight(device1); - int size = VI.getSize(device1); - - unsigned char * yourBuffer1 = new unsigned char[size]; - unsigned char * yourBuffer2 = new unsigned char[size]; - - //to get the data from the device first check if the data is new - if(VI.isFrameNew(device1)){ - VI.getPixels(device1, yourBuffer1, false, false); //fills pixels as a BGR (for openCV) unsigned char array - no flipping - VI.getPixels(device1, yourBuffer2, true, true); //fills pixels as a RGB (for openGL) unsigned char array - flipping! - } - - //same applies to device2 etc - - //to get a settings dialog for the device - VI.showSettingsWindow(device1); - - - //Shut down devices properly - VI.stopDevice(device1); - VI.stopDevice(device2); -*/ - - -////////////////////////////////////// VARS AND DEFS ////////////////////////////////// - - -//STUFF YOU CAN CHANGE - -//change for verbose debug info -static bool verbose = true; - -//if you need VI to use multi threaded com -//#define VI_COM_MULTI_THREADED - -//STUFF YOU DON'T CHANGE - -//videoInput defines -#define VI_VERSION 0.1995 -#define VI_MAX_CAMERAS 20 -#define VI_NUM_TYPES 18 //DON'T TOUCH -#define VI_NUM_FORMATS 18 //DON'T TOUCH - -//defines for setPhyCon - tuner is not as well supported as composite and s-video -#define VI_COMPOSITE 0 -#define VI_S_VIDEO 1 -#define VI_TUNER 2 -#define VI_USB 3 -#define VI_1394 4 - -//defines for formats -#define VI_NTSC_M 0 -#define VI_PAL_B 1 -#define VI_PAL_D 2 -#define VI_PAL_G 3 -#define VI_PAL_H 4 -#define VI_PAL_I 5 -#define VI_PAL_M 6 -#define VI_PAL_N 7 -#define VI_PAL_NC 8 -#define VI_SECAM_B 9 -#define VI_SECAM_D 10 -#define VI_SECAM_G 11 -#define VI_SECAM_H 12 -#define VI_SECAM_K 13 -#define VI_SECAM_K1 14 -#define VI_SECAM_L 15 -#define VI_NTSC_M_J 16 -#define VI_NTSC_433 17 - - -//allows us to directShow classes here with the includes in the cpp -struct ICaptureGraphBuilder2; -struct IGraphBuilder; -struct IBaseFilter; -struct IAMCrossbar; -struct IMediaControl; -struct ISampleGrabber; -struct IMediaEventEx; -struct IAMStreamConfig; -struct _AMMediaType; -class SampleGrabberCallback; -typedef _AMMediaType AM_MEDIA_TYPE; - -//keeps track of how many instances of VI are being used -//don't touch -static int comInitCount = 0; - - -//////////////////////////////////////// VIDEO DEVICE /////////////////////////////////// - -class videoDevice{ - - - public: - - videoDevice(); - void setSize(int w, int h); - void NukeDownstream(IBaseFilter *pBF); - void destroyGraph(); - ~videoDevice(); - - int videoSize; - int width; - int height; - int tryWidth; - int tryHeight; - - ICaptureGraphBuilder2 *pCaptureGraph; // Capture graph builder object - IGraphBuilder *pGraph; // Graph builder object - IMediaControl *pControl; // Media control object - IBaseFilter *pVideoInputFilter; // Video Capture filter - IBaseFilter *pGrabberF; - IBaseFilter * pDestFilter; - IAMStreamConfig *streamConf; - ISampleGrabber * pGrabber; // Grabs frame - AM_MEDIA_TYPE * pAmMediaType; - - IMediaEventEx * pMediaEvent; - - GUID videoType; - long formatType; - - SampleGrabberCallback * sgCallback; - - bool tryDiffSize; - bool useCrossbar; - bool readyToCapture; - bool sizeSet; - bool setupStarted; - bool specificFormat; - bool autoReconnect; - int nFramesForReconnect; - unsigned long nFramesRunning; - int connection; - int storeConn; - int myID; - long requestedFrameTime; //ie fps - - char nDeviceName[255]; - WCHAR wDeviceName[255]; - - unsigned char * pixels; - char * pBuffer; - -}; - - - - -////////////////////////////////////// VIDEO INPUT ///////////////////////////////////// - - - -class videoInput{ - - public: - videoInput(); - ~videoInput(); - - //turns off console messages - default is to print messages - static void setVerbose(bool _verbose); - - //Functions in rough order they should be used. - static int listDevices(bool silent = false); - - //needs to be called after listDevices - otherwise returns NULL - static char * getDeviceName(int deviceID); - - //choose to use callback based capture - or single threaded - void setUseCallback(bool useCallback); - - //call before setupDevice - //directshow will try and get the closest possible framerate to what is requested - void setIdealFramerate(int deviceID, int idealFramerate); - - //some devices will stop delivering frames after a while - this method gives you the option to try and reconnect - //to a device if videoInput detects that a device has stopped delivering frames. - //you MUST CALL isFrameNew every app loop for this to have any effect - void setAutoReconnectOnFreeze(int deviceNumber, bool doReconnect, int numMissedFramesBeforeReconnect); - - //Choose one of these four to setup your device - bool setupDevice(int deviceID); - bool setupDevice(int deviceID, int w, int h); - - //These two are only for capture cards - //USB and Firewire cameras souldn't specify connection - bool setupDevice(int deviceID, int connection); - bool setupDevice(int deviceID, int w, int h, int connection); - - //If you need to you can set your NTSC/PAL/SECAM - //preference here. if it is available it will be used. - //see #defines above for available formats - eg VI_NTSC_M or VI_PAL_B - //should be called after setupDevice - //can be called multiple times - bool setFormat(int deviceNumber, int format); - - //Tells you when a new frame has arrived - you should call this if you have specified setAutoReconnectOnFreeze to true - bool isFrameNew(int deviceID); - - bool isDeviceSetup(int deviceID); - - //Returns the pixels - flipRedAndBlue toggles RGB/BGR flipping - and you can flip the image too - unsigned char * getPixels(int deviceID, bool flipRedAndBlue = true, bool flipImage = false); - - //Or pass in a buffer for getPixels to fill returns true if successful. - bool getPixels(int id, unsigned char * pixels, bool flipRedAndBlue = true, bool flipImage = false); - - //Launches a pop up settings window - //For some reason in GLUT you have to call it twice each time. - void showSettingsWindow(int deviceID); - - //Manual control over settings thanks..... - //These are experimental for now. - bool setVideoSettingFilter(int deviceID, long Property, long lValue, long Flags = NULL, bool useDefaultValue = false); - bool setVideoSettingFilterPct(int deviceID, long Property, float pctValue, long Flags = NULL); - bool getVideoSettingFilter(int deviceID, long Property, long &min, long &max, long &SteppingDelta, long ¤tValue, long &flags, long &defaultValue); - - bool setVideoSettingCamera(int deviceID, long Property, long lValue, long Flags = NULL, bool useDefaultValue = false); - bool setVideoSettingCameraPct(int deviceID, long Property, float pctValue, long Flags = NULL); - bool getVideoSettingCamera(int deviceID, long Property, long &min, long &max, long &SteppingDelta, long ¤tValue, long &flags, long &defaultValue); - - //bool setVideoSettingCam(int deviceID, long Property, long lValue, long Flags = NULL, bool useDefaultValue = false); - - //get width, height and number of pixels - int getWidth(int deviceID); - int getHeight(int deviceID); - int getSize(int deviceID); - - //completely stops and frees a device - void stopDevice(int deviceID); - - //as above but then sets it up with same settings - bool restartDevice(int deviceID); - - //number of devices available - int devicesFound; - - long propBrightness; - long propContrast; - long propHue; - long propSaturation; - long propSharpness; - long propGamma; - long propColorEnable; - long propWhiteBalance; - long propBacklightCompensation; - long propGain; - - long propPan; - long propTilt; - long propRoll; - long propZoom; - long propExposure; - long propIris; - long propFocus; - - - private: - void setPhyCon(int deviceID, int conn); - void setAttemptCaptureSize(int deviceID, int w, int h); - bool setup(int deviceID); - void processPixels(unsigned char * src, unsigned char * dst, int width, int height, bool bRGB, bool bFlip); - int start(int deviceID, videoDevice * VD); - int getDeviceCount(); - void getMediaSubtypeAsString(GUID type, char * typeAsString); - - HRESULT getDevice(IBaseFilter **pSrcFilter, int deviceID, WCHAR * wDeviceName, char * nDeviceName); - static HRESULT ShowFilterPropertyPages(IBaseFilter *pFilter); - HRESULT SaveGraphFile(IGraphBuilder *pGraph, WCHAR *wszPath); - HRESULT routeCrossbar(ICaptureGraphBuilder2 **ppBuild, IBaseFilter **pVidInFilter, int conType, GUID captureMode); - - //don't touch - static bool comInit(); - static bool comUnInit(); - - int connection; - int callbackSetCount; - bool bCallback; - - GUID CAPTURE_MODE; - - //Extra video subtypes - GUID MEDIASUBTYPE_Y800; - GUID MEDIASUBTYPE_Y8; - GUID MEDIASUBTYPE_GREY; - - videoDevice * VDList[VI_MAX_CAMERAS]; - GUID mediaSubtypes[VI_NUM_TYPES]; - long formatTypes[VI_NUM_FORMATS]; - - static void __cdecl basicThread(void * objPtr); - - static char deviceNames[VI_MAX_CAMERAS][255]; - -}; - - #endif diff --git a/compiledLib/compiledByDevCpp/include/videoInput.h b/compiledLib/compiledByDevCpp/include/videoInput.h deleted file mode 100755 index 4244902..0000000 --- a/compiledLib/compiledByDevCpp/include/videoInput.h +++ /dev/null @@ -1,385 +0,0 @@ -#ifndef _VIDEOINPUT -#define _VIDEOINPUT - -//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -//IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -//FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -//AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -//LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -//OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -//THE SOFTWARE. - -////////////////////////////////////////////////////////// -//Written by Theodore Watson - theo.watson@gmail.com // -//Do whatever you want with this code but if you find // -//a bug or make an improvement I would love to know! // -// // -//Warning This code is experimental // -//use at your own risk :) // -////////////////////////////////////////////////////////// -///////////////////////////////////////////////////////// -/* Shoutouts - -Thanks to: - - Dillip Kumar Kara for crossbar code. - Zachary Lieberman for getting me into this stuff - and for being so generous with time and code. - The guys at Potion Design for helping me with VC++ - Josh Fisher for being a serious C++ nerd :) - Golan Levin for helping me debug the strangest - and slowest bug in the world! - - And all the people using this library who send in - bugs, suggestions and improvements who keep me working on - the next version - yeah thanks a lot ;) - -*/ -///////////////////////////////////////////////////////// - - - -#include -#include -#include -#include -#include - -//this is for TryEnterCriticalSection -#ifndef _WIN32_WINNT - # define _WIN32_WINNT 0x400 -#endif -#include - - -//Example Usage -/* - //create a videoInput object - videoInput VI; - - //Prints out a list of available devices and returns num of devices found - int numDevices = VI.listDevices(); - - int device1 = 0; //this could be any deviceID that shows up in listDevices - int device2 = 1; //this could be any deviceID that shows up in listDevices - - //if you want to capture at a different frame rate (default is 30) - //specify it here, you are not guaranteed to get this fps though. - //VI.setIdealFramerate(dev, 60); - - //setup the first device - there are a number of options: - - VI.setupDevice(device1); //setup the first device with the default settings - //VI.setupDevice(device1, VI_COMPOSITE); //or setup device with specific connection type - //VI.setupDevice(device1, 320, 240); //or setup device with specified video size - //VI.setupDevice(device1, 320, 240, VI_COMPOSITE); //or setup device with video size and connection type - - //VI.setFormat(device1, VI_NTSC_M); //if your card doesn't remember what format it should be - //call this with the appropriate format listed above - //NOTE: must be called after setupDevice! - - //optionally setup a second (or third, fourth ...) device - same options as above - VI.setupDevice(device2); - - //As requested width and height can not always be accomodated - //make sure to check the size once the device is setup - - int width = VI.getWidth(device1); - int height = VI.getHeight(device1); - int size = VI.getSize(device1); - - unsigned char * yourBuffer1 = new unsigned char[size]; - unsigned char * yourBuffer2 = new unsigned char[size]; - - //to get the data from the device first check if the data is new - if(VI.isFrameNew(device1)){ - VI.getPixels(device1, yourBuffer1, false, false); //fills pixels as a BGR (for openCV) unsigned char array - no flipping - VI.getPixels(device1, yourBuffer2, true, true); //fills pixels as a RGB (for openGL) unsigned char array - flipping! - } - - //same applies to device2 etc - - //to get a settings dialog for the device - VI.showSettingsWindow(device1); - - - //Shut down devices properly - VI.stopDevice(device1); - VI.stopDevice(device2); -*/ - - -////////////////////////////////////// VARS AND DEFS ////////////////////////////////// - - -//STUFF YOU CAN CHANGE - -//change for verbose debug info -static bool verbose = true; - -//if you need VI to use multi threaded com -//#define VI_COM_MULTI_THREADED - -//STUFF YOU DON'T CHANGE - -//videoInput defines -#define VI_VERSION 0.1995 -#define VI_MAX_CAMERAS 20 -#define VI_NUM_TYPES 18 //DON'T TOUCH -#define VI_NUM_FORMATS 18 //DON'T TOUCH - -//defines for setPhyCon - tuner is not as well supported as composite and s-video -#define VI_COMPOSITE 0 -#define VI_S_VIDEO 1 -#define VI_TUNER 2 -#define VI_USB 3 -#define VI_1394 4 - -//defines for formats -#define VI_NTSC_M 0 -#define VI_PAL_B 1 -#define VI_PAL_D 2 -#define VI_PAL_G 3 -#define VI_PAL_H 4 -#define VI_PAL_I 5 -#define VI_PAL_M 6 -#define VI_PAL_N 7 -#define VI_PAL_NC 8 -#define VI_SECAM_B 9 -#define VI_SECAM_D 10 -#define VI_SECAM_G 11 -#define VI_SECAM_H 12 -#define VI_SECAM_K 13 -#define VI_SECAM_K1 14 -#define VI_SECAM_L 15 -#define VI_NTSC_M_J 16 -#define VI_NTSC_433 17 - - -//allows us to directShow classes here with the includes in the cpp -struct ICaptureGraphBuilder2; -struct IGraphBuilder; -struct IBaseFilter; -struct IAMCrossbar; -struct IMediaControl; -struct ISampleGrabber; -struct IMediaEventEx; -struct IAMStreamConfig; -struct _AMMediaType; -class SampleGrabberCallback; -typedef _AMMediaType AM_MEDIA_TYPE; - -//keeps track of how many instances of VI are being used -//don't touch -static int comInitCount = 0; - - -//////////////////////////////////////// VIDEO DEVICE /////////////////////////////////// - -class videoDevice{ - - - public: - - videoDevice(); - void setSize(int w, int h); - void NukeDownstream(IBaseFilter *pBF); - void destroyGraph(); - ~videoDevice(); - - int videoSize; - int width; - int height; - int tryWidth; - int tryHeight; - - ICaptureGraphBuilder2 *pCaptureGraph; // Capture graph builder object - IGraphBuilder *pGraph; // Graph builder object - IMediaControl *pControl; // Media control object - IBaseFilter *pVideoInputFilter; // Video Capture filter - IBaseFilter *pGrabberF; - IBaseFilter * pDestFilter; - IAMStreamConfig *streamConf; - ISampleGrabber * pGrabber; // Grabs frame - AM_MEDIA_TYPE * pAmMediaType; - - IMediaEventEx * pMediaEvent; - - GUID videoType; - long formatType; - - SampleGrabberCallback * sgCallback; - - bool tryDiffSize; - bool useCrossbar; - bool readyToCapture; - bool sizeSet; - bool setupStarted; - bool specificFormat; - bool autoReconnect; - int nFramesForReconnect; - unsigned long nFramesRunning; - int connection; - int storeConn; - int myID; - long requestedFrameTime; //ie fps - - char nDeviceName[255]; - WCHAR wDeviceName[255]; - - unsigned char * pixels; - char * pBuffer; - -}; - - - - -////////////////////////////////////// VIDEO INPUT ///////////////////////////////////// - - - -class videoInput{ - - public: - videoInput(); - ~videoInput(); - - //turns off console messages - default is to print messages - static void setVerbose(bool _verbose); - - //Functions in rough order they should be used. - static int listDevices(bool silent = false); - - //needs to be called after listDevices - otherwise returns NULL - static char * getDeviceName(int deviceID); - - //choose to use callback based capture - or single threaded - void setUseCallback(bool useCallback); - - //call before setupDevice - //directshow will try and get the closest possible framerate to what is requested - void setIdealFramerate(int deviceID, int idealFramerate); - - //some devices will stop delivering frames after a while - this method gives you the option to try and reconnect - //to a device if videoInput detects that a device has stopped delivering frames. - //you MUST CALL isFrameNew every app loop for this to have any effect - void setAutoReconnectOnFreeze(int deviceNumber, bool doReconnect, int numMissedFramesBeforeReconnect); - - //Choose one of these four to setup your device - bool setupDevice(int deviceID); - bool setupDevice(int deviceID, int w, int h); - - //These two are only for capture cards - //USB and Firewire cameras souldn't specify connection - bool setupDevice(int deviceID, int connection); - bool setupDevice(int deviceID, int w, int h, int connection); - - //If you need to you can set your NTSC/PAL/SECAM - //preference here. if it is available it will be used. - //see #defines above for available formats - eg VI_NTSC_M or VI_PAL_B - //should be called after setupDevice - //can be called multiple times - bool setFormat(int deviceNumber, int format); - - //Tells you when a new frame has arrived - you should call this if you have specified setAutoReconnectOnFreeze to true - bool isFrameNew(int deviceID); - - bool isDeviceSetup(int deviceID); - - //Returns the pixels - flipRedAndBlue toggles RGB/BGR flipping - and you can flip the image too - unsigned char * getPixels(int deviceID, bool flipRedAndBlue = true, bool flipImage = false); - - //Or pass in a buffer for getPixels to fill returns true if successful. - bool getPixels(int id, unsigned char * pixels, bool flipRedAndBlue = true, bool flipImage = false); - - //Launches a pop up settings window - //For some reason in GLUT you have to call it twice each time. - void showSettingsWindow(int deviceID); - - //Manual control over settings thanks..... - //These are experimental for now. - bool setVideoSettingFilter(int deviceID, long Property, long lValue, long Flags = NULL, bool useDefaultValue = false); - bool setVideoSettingFilterPct(int deviceID, long Property, float pctValue, long Flags = NULL); - bool getVideoSettingFilter(int deviceID, long Property, long &min, long &max, long &SteppingDelta, long ¤tValue, long &flags, long &defaultValue); - - bool setVideoSettingCamera(int deviceID, long Property, long lValue, long Flags = NULL, bool useDefaultValue = false); - bool setVideoSettingCameraPct(int deviceID, long Property, float pctValue, long Flags = NULL); - bool getVideoSettingCamera(int deviceID, long Property, long &min, long &max, long &SteppingDelta, long ¤tValue, long &flags, long &defaultValue); - - //bool setVideoSettingCam(int deviceID, long Property, long lValue, long Flags = NULL, bool useDefaultValue = false); - - //get width, height and number of pixels - int getWidth(int deviceID); - int getHeight(int deviceID); - int getSize(int deviceID); - - //completely stops and frees a device - void stopDevice(int deviceID); - - //as above but then sets it up with same settings - bool restartDevice(int deviceID); - - //number of devices available - int devicesFound; - - long propBrightness; - long propContrast; - long propHue; - long propSaturation; - long propSharpness; - long propGamma; - long propColorEnable; - long propWhiteBalance; - long propBacklightCompensation; - long propGain; - - long propPan; - long propTilt; - long propRoll; - long propZoom; - long propExposure; - long propIris; - long propFocus; - - - private: - void setPhyCon(int deviceID, int conn); - void setAttemptCaptureSize(int deviceID, int w, int h); - bool setup(int deviceID); - void processPixels(unsigned char * src, unsigned char * dst, int width, int height, bool bRGB, bool bFlip); - int start(int deviceID, videoDevice * VD); - int getDeviceCount(); - void getMediaSubtypeAsString(GUID type, char * typeAsString); - - HRESULT getDevice(IBaseFilter **pSrcFilter, int deviceID, WCHAR * wDeviceName, char * nDeviceName); - static HRESULT ShowFilterPropertyPages(IBaseFilter *pFilter); - HRESULT SaveGraphFile(IGraphBuilder *pGraph, WCHAR *wszPath); - HRESULT routeCrossbar(ICaptureGraphBuilder2 **ppBuild, IBaseFilter **pVidInFilter, int conType, GUID captureMode); - - //don't touch - static bool comInit(); - static bool comUnInit(); - - int connection; - int callbackSetCount; - bool bCallback; - - GUID CAPTURE_MODE; - - //Extra video subtypes - GUID MEDIASUBTYPE_Y800; - GUID MEDIASUBTYPE_Y8; - GUID MEDIASUBTYPE_GREY; - - videoDevice * VDList[VI_MAX_CAMERAS]; - GUID mediaSubtypes[VI_NUM_TYPES]; - long formatTypes[VI_NUM_FORMATS]; - - static void __cdecl basicThread(void * objPtr); - - static char deviceNames[VI_MAX_CAMERAS][255]; - -}; - - #endif diff --git a/compiledLib/compiledByDevCpp/videoInputLib.a b/compiledLib/compiledByDevCpp/videoInputLib.a deleted file mode 100755 index 15df518..0000000 Binary files a/compiledLib/compiledByDevCpp/videoInputLib.a and /dev/null differ diff --git a/compiledLib/compiledByVS2005/include/videoInput.h b/compiledLib/compiledByVS2005/include/videoInput.h deleted file mode 100755 index 4244902..0000000 --- a/compiledLib/compiledByVS2005/include/videoInput.h +++ /dev/null @@ -1,385 +0,0 @@ -#ifndef _VIDEOINPUT -#define _VIDEOINPUT - -//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -//IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -//FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -//AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -//LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -//OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -//THE SOFTWARE. - -////////////////////////////////////////////////////////// -//Written by Theodore Watson - theo.watson@gmail.com // -//Do whatever you want with this code but if you find // -//a bug or make an improvement I would love to know! // -// // -//Warning This code is experimental // -//use at your own risk :) // -////////////////////////////////////////////////////////// -///////////////////////////////////////////////////////// -/* Shoutouts - -Thanks to: - - Dillip Kumar Kara for crossbar code. - Zachary Lieberman for getting me into this stuff - and for being so generous with time and code. - The guys at Potion Design for helping me with VC++ - Josh Fisher for being a serious C++ nerd :) - Golan Levin for helping me debug the strangest - and slowest bug in the world! - - And all the people using this library who send in - bugs, suggestions and improvements who keep me working on - the next version - yeah thanks a lot ;) - -*/ -///////////////////////////////////////////////////////// - - - -#include -#include -#include -#include -#include - -//this is for TryEnterCriticalSection -#ifndef _WIN32_WINNT - # define _WIN32_WINNT 0x400 -#endif -#include - - -//Example Usage -/* - //create a videoInput object - videoInput VI; - - //Prints out a list of available devices and returns num of devices found - int numDevices = VI.listDevices(); - - int device1 = 0; //this could be any deviceID that shows up in listDevices - int device2 = 1; //this could be any deviceID that shows up in listDevices - - //if you want to capture at a different frame rate (default is 30) - //specify it here, you are not guaranteed to get this fps though. - //VI.setIdealFramerate(dev, 60); - - //setup the first device - there are a number of options: - - VI.setupDevice(device1); //setup the first device with the default settings - //VI.setupDevice(device1, VI_COMPOSITE); //or setup device with specific connection type - //VI.setupDevice(device1, 320, 240); //or setup device with specified video size - //VI.setupDevice(device1, 320, 240, VI_COMPOSITE); //or setup device with video size and connection type - - //VI.setFormat(device1, VI_NTSC_M); //if your card doesn't remember what format it should be - //call this with the appropriate format listed above - //NOTE: must be called after setupDevice! - - //optionally setup a second (or third, fourth ...) device - same options as above - VI.setupDevice(device2); - - //As requested width and height can not always be accomodated - //make sure to check the size once the device is setup - - int width = VI.getWidth(device1); - int height = VI.getHeight(device1); - int size = VI.getSize(device1); - - unsigned char * yourBuffer1 = new unsigned char[size]; - unsigned char * yourBuffer2 = new unsigned char[size]; - - //to get the data from the device first check if the data is new - if(VI.isFrameNew(device1)){ - VI.getPixels(device1, yourBuffer1, false, false); //fills pixels as a BGR (for openCV) unsigned char array - no flipping - VI.getPixels(device1, yourBuffer2, true, true); //fills pixels as a RGB (for openGL) unsigned char array - flipping! - } - - //same applies to device2 etc - - //to get a settings dialog for the device - VI.showSettingsWindow(device1); - - - //Shut down devices properly - VI.stopDevice(device1); - VI.stopDevice(device2); -*/ - - -////////////////////////////////////// VARS AND DEFS ////////////////////////////////// - - -//STUFF YOU CAN CHANGE - -//change for verbose debug info -static bool verbose = true; - -//if you need VI to use multi threaded com -//#define VI_COM_MULTI_THREADED - -//STUFF YOU DON'T CHANGE - -//videoInput defines -#define VI_VERSION 0.1995 -#define VI_MAX_CAMERAS 20 -#define VI_NUM_TYPES 18 //DON'T TOUCH -#define VI_NUM_FORMATS 18 //DON'T TOUCH - -//defines for setPhyCon - tuner is not as well supported as composite and s-video -#define VI_COMPOSITE 0 -#define VI_S_VIDEO 1 -#define VI_TUNER 2 -#define VI_USB 3 -#define VI_1394 4 - -//defines for formats -#define VI_NTSC_M 0 -#define VI_PAL_B 1 -#define VI_PAL_D 2 -#define VI_PAL_G 3 -#define VI_PAL_H 4 -#define VI_PAL_I 5 -#define VI_PAL_M 6 -#define VI_PAL_N 7 -#define VI_PAL_NC 8 -#define VI_SECAM_B 9 -#define VI_SECAM_D 10 -#define VI_SECAM_G 11 -#define VI_SECAM_H 12 -#define VI_SECAM_K 13 -#define VI_SECAM_K1 14 -#define VI_SECAM_L 15 -#define VI_NTSC_M_J 16 -#define VI_NTSC_433 17 - - -//allows us to directShow classes here with the includes in the cpp -struct ICaptureGraphBuilder2; -struct IGraphBuilder; -struct IBaseFilter; -struct IAMCrossbar; -struct IMediaControl; -struct ISampleGrabber; -struct IMediaEventEx; -struct IAMStreamConfig; -struct _AMMediaType; -class SampleGrabberCallback; -typedef _AMMediaType AM_MEDIA_TYPE; - -//keeps track of how many instances of VI are being used -//don't touch -static int comInitCount = 0; - - -//////////////////////////////////////// VIDEO DEVICE /////////////////////////////////// - -class videoDevice{ - - - public: - - videoDevice(); - void setSize(int w, int h); - void NukeDownstream(IBaseFilter *pBF); - void destroyGraph(); - ~videoDevice(); - - int videoSize; - int width; - int height; - int tryWidth; - int tryHeight; - - ICaptureGraphBuilder2 *pCaptureGraph; // Capture graph builder object - IGraphBuilder *pGraph; // Graph builder object - IMediaControl *pControl; // Media control object - IBaseFilter *pVideoInputFilter; // Video Capture filter - IBaseFilter *pGrabberF; - IBaseFilter * pDestFilter; - IAMStreamConfig *streamConf; - ISampleGrabber * pGrabber; // Grabs frame - AM_MEDIA_TYPE * pAmMediaType; - - IMediaEventEx * pMediaEvent; - - GUID videoType; - long formatType; - - SampleGrabberCallback * sgCallback; - - bool tryDiffSize; - bool useCrossbar; - bool readyToCapture; - bool sizeSet; - bool setupStarted; - bool specificFormat; - bool autoReconnect; - int nFramesForReconnect; - unsigned long nFramesRunning; - int connection; - int storeConn; - int myID; - long requestedFrameTime; //ie fps - - char nDeviceName[255]; - WCHAR wDeviceName[255]; - - unsigned char * pixels; - char * pBuffer; - -}; - - - - -////////////////////////////////////// VIDEO INPUT ///////////////////////////////////// - - - -class videoInput{ - - public: - videoInput(); - ~videoInput(); - - //turns off console messages - default is to print messages - static void setVerbose(bool _verbose); - - //Functions in rough order they should be used. - static int listDevices(bool silent = false); - - //needs to be called after listDevices - otherwise returns NULL - static char * getDeviceName(int deviceID); - - //choose to use callback based capture - or single threaded - void setUseCallback(bool useCallback); - - //call before setupDevice - //directshow will try and get the closest possible framerate to what is requested - void setIdealFramerate(int deviceID, int idealFramerate); - - //some devices will stop delivering frames after a while - this method gives you the option to try and reconnect - //to a device if videoInput detects that a device has stopped delivering frames. - //you MUST CALL isFrameNew every app loop for this to have any effect - void setAutoReconnectOnFreeze(int deviceNumber, bool doReconnect, int numMissedFramesBeforeReconnect); - - //Choose one of these four to setup your device - bool setupDevice(int deviceID); - bool setupDevice(int deviceID, int w, int h); - - //These two are only for capture cards - //USB and Firewire cameras souldn't specify connection - bool setupDevice(int deviceID, int connection); - bool setupDevice(int deviceID, int w, int h, int connection); - - //If you need to you can set your NTSC/PAL/SECAM - //preference here. if it is available it will be used. - //see #defines above for available formats - eg VI_NTSC_M or VI_PAL_B - //should be called after setupDevice - //can be called multiple times - bool setFormat(int deviceNumber, int format); - - //Tells you when a new frame has arrived - you should call this if you have specified setAutoReconnectOnFreeze to true - bool isFrameNew(int deviceID); - - bool isDeviceSetup(int deviceID); - - //Returns the pixels - flipRedAndBlue toggles RGB/BGR flipping - and you can flip the image too - unsigned char * getPixels(int deviceID, bool flipRedAndBlue = true, bool flipImage = false); - - //Or pass in a buffer for getPixels to fill returns true if successful. - bool getPixels(int id, unsigned char * pixels, bool flipRedAndBlue = true, bool flipImage = false); - - //Launches a pop up settings window - //For some reason in GLUT you have to call it twice each time. - void showSettingsWindow(int deviceID); - - //Manual control over settings thanks..... - //These are experimental for now. - bool setVideoSettingFilter(int deviceID, long Property, long lValue, long Flags = NULL, bool useDefaultValue = false); - bool setVideoSettingFilterPct(int deviceID, long Property, float pctValue, long Flags = NULL); - bool getVideoSettingFilter(int deviceID, long Property, long &min, long &max, long &SteppingDelta, long ¤tValue, long &flags, long &defaultValue); - - bool setVideoSettingCamera(int deviceID, long Property, long lValue, long Flags = NULL, bool useDefaultValue = false); - bool setVideoSettingCameraPct(int deviceID, long Property, float pctValue, long Flags = NULL); - bool getVideoSettingCamera(int deviceID, long Property, long &min, long &max, long &SteppingDelta, long ¤tValue, long &flags, long &defaultValue); - - //bool setVideoSettingCam(int deviceID, long Property, long lValue, long Flags = NULL, bool useDefaultValue = false); - - //get width, height and number of pixels - int getWidth(int deviceID); - int getHeight(int deviceID); - int getSize(int deviceID); - - //completely stops and frees a device - void stopDevice(int deviceID); - - //as above but then sets it up with same settings - bool restartDevice(int deviceID); - - //number of devices available - int devicesFound; - - long propBrightness; - long propContrast; - long propHue; - long propSaturation; - long propSharpness; - long propGamma; - long propColorEnable; - long propWhiteBalance; - long propBacklightCompensation; - long propGain; - - long propPan; - long propTilt; - long propRoll; - long propZoom; - long propExposure; - long propIris; - long propFocus; - - - private: - void setPhyCon(int deviceID, int conn); - void setAttemptCaptureSize(int deviceID, int w, int h); - bool setup(int deviceID); - void processPixels(unsigned char * src, unsigned char * dst, int width, int height, bool bRGB, bool bFlip); - int start(int deviceID, videoDevice * VD); - int getDeviceCount(); - void getMediaSubtypeAsString(GUID type, char * typeAsString); - - HRESULT getDevice(IBaseFilter **pSrcFilter, int deviceID, WCHAR * wDeviceName, char * nDeviceName); - static HRESULT ShowFilterPropertyPages(IBaseFilter *pFilter); - HRESULT SaveGraphFile(IGraphBuilder *pGraph, WCHAR *wszPath); - HRESULT routeCrossbar(ICaptureGraphBuilder2 **ppBuild, IBaseFilter **pVidInFilter, int conType, GUID captureMode); - - //don't touch - static bool comInit(); - static bool comUnInit(); - - int connection; - int callbackSetCount; - bool bCallback; - - GUID CAPTURE_MODE; - - //Extra video subtypes - GUID MEDIASUBTYPE_Y800; - GUID MEDIASUBTYPE_Y8; - GUID MEDIASUBTYPE_GREY; - - videoDevice * VDList[VI_MAX_CAMERAS]; - GUID mediaSubtypes[VI_NUM_TYPES]; - long formatTypes[VI_NUM_FORMATS]; - - static void __cdecl basicThread(void * objPtr); - - static char deviceNames[VI_MAX_CAMERAS][255]; - -}; - - #endif diff --git a/compiledLib/compiledByVS2005/videoInput.lib b/compiledLib/compiledByVS2005/videoInput.lib deleted file mode 100755 index 15ca9cf..0000000 Binary files a/compiledLib/compiledByVS2005/videoInput.lib and /dev/null differ diff --git a/compiledLib/compiledByVS2008/include/videoInput.h b/compiledLib/compiledByVS2008/include/videoInput.h deleted file mode 100755 index 4244902..0000000 --- a/compiledLib/compiledByVS2008/include/videoInput.h +++ /dev/null @@ -1,385 +0,0 @@ -#ifndef _VIDEOINPUT -#define _VIDEOINPUT - -//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -//IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -//FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -//AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -//LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -//OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -//THE SOFTWARE. - -////////////////////////////////////////////////////////// -//Written by Theodore Watson - theo.watson@gmail.com // -//Do whatever you want with this code but if you find // -//a bug or make an improvement I would love to know! // -// // -//Warning This code is experimental // -//use at your own risk :) // -////////////////////////////////////////////////////////// -///////////////////////////////////////////////////////// -/* Shoutouts - -Thanks to: - - Dillip Kumar Kara for crossbar code. - Zachary Lieberman for getting me into this stuff - and for being so generous with time and code. - The guys at Potion Design for helping me with VC++ - Josh Fisher for being a serious C++ nerd :) - Golan Levin for helping me debug the strangest - and slowest bug in the world! - - And all the people using this library who send in - bugs, suggestions and improvements who keep me working on - the next version - yeah thanks a lot ;) - -*/ -///////////////////////////////////////////////////////// - - - -#include -#include -#include -#include -#include - -//this is for TryEnterCriticalSection -#ifndef _WIN32_WINNT - # define _WIN32_WINNT 0x400 -#endif -#include - - -//Example Usage -/* - //create a videoInput object - videoInput VI; - - //Prints out a list of available devices and returns num of devices found - int numDevices = VI.listDevices(); - - int device1 = 0; //this could be any deviceID that shows up in listDevices - int device2 = 1; //this could be any deviceID that shows up in listDevices - - //if you want to capture at a different frame rate (default is 30) - //specify it here, you are not guaranteed to get this fps though. - //VI.setIdealFramerate(dev, 60); - - //setup the first device - there are a number of options: - - VI.setupDevice(device1); //setup the first device with the default settings - //VI.setupDevice(device1, VI_COMPOSITE); //or setup device with specific connection type - //VI.setupDevice(device1, 320, 240); //or setup device with specified video size - //VI.setupDevice(device1, 320, 240, VI_COMPOSITE); //or setup device with video size and connection type - - //VI.setFormat(device1, VI_NTSC_M); //if your card doesn't remember what format it should be - //call this with the appropriate format listed above - //NOTE: must be called after setupDevice! - - //optionally setup a second (or third, fourth ...) device - same options as above - VI.setupDevice(device2); - - //As requested width and height can not always be accomodated - //make sure to check the size once the device is setup - - int width = VI.getWidth(device1); - int height = VI.getHeight(device1); - int size = VI.getSize(device1); - - unsigned char * yourBuffer1 = new unsigned char[size]; - unsigned char * yourBuffer2 = new unsigned char[size]; - - //to get the data from the device first check if the data is new - if(VI.isFrameNew(device1)){ - VI.getPixels(device1, yourBuffer1, false, false); //fills pixels as a BGR (for openCV) unsigned char array - no flipping - VI.getPixels(device1, yourBuffer2, true, true); //fills pixels as a RGB (for openGL) unsigned char array - flipping! - } - - //same applies to device2 etc - - //to get a settings dialog for the device - VI.showSettingsWindow(device1); - - - //Shut down devices properly - VI.stopDevice(device1); - VI.stopDevice(device2); -*/ - - -////////////////////////////////////// VARS AND DEFS ////////////////////////////////// - - -//STUFF YOU CAN CHANGE - -//change for verbose debug info -static bool verbose = true; - -//if you need VI to use multi threaded com -//#define VI_COM_MULTI_THREADED - -//STUFF YOU DON'T CHANGE - -//videoInput defines -#define VI_VERSION 0.1995 -#define VI_MAX_CAMERAS 20 -#define VI_NUM_TYPES 18 //DON'T TOUCH -#define VI_NUM_FORMATS 18 //DON'T TOUCH - -//defines for setPhyCon - tuner is not as well supported as composite and s-video -#define VI_COMPOSITE 0 -#define VI_S_VIDEO 1 -#define VI_TUNER 2 -#define VI_USB 3 -#define VI_1394 4 - -//defines for formats -#define VI_NTSC_M 0 -#define VI_PAL_B 1 -#define VI_PAL_D 2 -#define VI_PAL_G 3 -#define VI_PAL_H 4 -#define VI_PAL_I 5 -#define VI_PAL_M 6 -#define VI_PAL_N 7 -#define VI_PAL_NC 8 -#define VI_SECAM_B 9 -#define VI_SECAM_D 10 -#define VI_SECAM_G 11 -#define VI_SECAM_H 12 -#define VI_SECAM_K 13 -#define VI_SECAM_K1 14 -#define VI_SECAM_L 15 -#define VI_NTSC_M_J 16 -#define VI_NTSC_433 17 - - -//allows us to directShow classes here with the includes in the cpp -struct ICaptureGraphBuilder2; -struct IGraphBuilder; -struct IBaseFilter; -struct IAMCrossbar; -struct IMediaControl; -struct ISampleGrabber; -struct IMediaEventEx; -struct IAMStreamConfig; -struct _AMMediaType; -class SampleGrabberCallback; -typedef _AMMediaType AM_MEDIA_TYPE; - -//keeps track of how many instances of VI are being used -//don't touch -static int comInitCount = 0; - - -//////////////////////////////////////// VIDEO DEVICE /////////////////////////////////// - -class videoDevice{ - - - public: - - videoDevice(); - void setSize(int w, int h); - void NukeDownstream(IBaseFilter *pBF); - void destroyGraph(); - ~videoDevice(); - - int videoSize; - int width; - int height; - int tryWidth; - int tryHeight; - - ICaptureGraphBuilder2 *pCaptureGraph; // Capture graph builder object - IGraphBuilder *pGraph; // Graph builder object - IMediaControl *pControl; // Media control object - IBaseFilter *pVideoInputFilter; // Video Capture filter - IBaseFilter *pGrabberF; - IBaseFilter * pDestFilter; - IAMStreamConfig *streamConf; - ISampleGrabber * pGrabber; // Grabs frame - AM_MEDIA_TYPE * pAmMediaType; - - IMediaEventEx * pMediaEvent; - - GUID videoType; - long formatType; - - SampleGrabberCallback * sgCallback; - - bool tryDiffSize; - bool useCrossbar; - bool readyToCapture; - bool sizeSet; - bool setupStarted; - bool specificFormat; - bool autoReconnect; - int nFramesForReconnect; - unsigned long nFramesRunning; - int connection; - int storeConn; - int myID; - long requestedFrameTime; //ie fps - - char nDeviceName[255]; - WCHAR wDeviceName[255]; - - unsigned char * pixels; - char * pBuffer; - -}; - - - - -////////////////////////////////////// VIDEO INPUT ///////////////////////////////////// - - - -class videoInput{ - - public: - videoInput(); - ~videoInput(); - - //turns off console messages - default is to print messages - static void setVerbose(bool _verbose); - - //Functions in rough order they should be used. - static int listDevices(bool silent = false); - - //needs to be called after listDevices - otherwise returns NULL - static char * getDeviceName(int deviceID); - - //choose to use callback based capture - or single threaded - void setUseCallback(bool useCallback); - - //call before setupDevice - //directshow will try and get the closest possible framerate to what is requested - void setIdealFramerate(int deviceID, int idealFramerate); - - //some devices will stop delivering frames after a while - this method gives you the option to try and reconnect - //to a device if videoInput detects that a device has stopped delivering frames. - //you MUST CALL isFrameNew every app loop for this to have any effect - void setAutoReconnectOnFreeze(int deviceNumber, bool doReconnect, int numMissedFramesBeforeReconnect); - - //Choose one of these four to setup your device - bool setupDevice(int deviceID); - bool setupDevice(int deviceID, int w, int h); - - //These two are only for capture cards - //USB and Firewire cameras souldn't specify connection - bool setupDevice(int deviceID, int connection); - bool setupDevice(int deviceID, int w, int h, int connection); - - //If you need to you can set your NTSC/PAL/SECAM - //preference here. if it is available it will be used. - //see #defines above for available formats - eg VI_NTSC_M or VI_PAL_B - //should be called after setupDevice - //can be called multiple times - bool setFormat(int deviceNumber, int format); - - //Tells you when a new frame has arrived - you should call this if you have specified setAutoReconnectOnFreeze to true - bool isFrameNew(int deviceID); - - bool isDeviceSetup(int deviceID); - - //Returns the pixels - flipRedAndBlue toggles RGB/BGR flipping - and you can flip the image too - unsigned char * getPixels(int deviceID, bool flipRedAndBlue = true, bool flipImage = false); - - //Or pass in a buffer for getPixels to fill returns true if successful. - bool getPixels(int id, unsigned char * pixels, bool flipRedAndBlue = true, bool flipImage = false); - - //Launches a pop up settings window - //For some reason in GLUT you have to call it twice each time. - void showSettingsWindow(int deviceID); - - //Manual control over settings thanks..... - //These are experimental for now. - bool setVideoSettingFilter(int deviceID, long Property, long lValue, long Flags = NULL, bool useDefaultValue = false); - bool setVideoSettingFilterPct(int deviceID, long Property, float pctValue, long Flags = NULL); - bool getVideoSettingFilter(int deviceID, long Property, long &min, long &max, long &SteppingDelta, long ¤tValue, long &flags, long &defaultValue); - - bool setVideoSettingCamera(int deviceID, long Property, long lValue, long Flags = NULL, bool useDefaultValue = false); - bool setVideoSettingCameraPct(int deviceID, long Property, float pctValue, long Flags = NULL); - bool getVideoSettingCamera(int deviceID, long Property, long &min, long &max, long &SteppingDelta, long ¤tValue, long &flags, long &defaultValue); - - //bool setVideoSettingCam(int deviceID, long Property, long lValue, long Flags = NULL, bool useDefaultValue = false); - - //get width, height and number of pixels - int getWidth(int deviceID); - int getHeight(int deviceID); - int getSize(int deviceID); - - //completely stops and frees a device - void stopDevice(int deviceID); - - //as above but then sets it up with same settings - bool restartDevice(int deviceID); - - //number of devices available - int devicesFound; - - long propBrightness; - long propContrast; - long propHue; - long propSaturation; - long propSharpness; - long propGamma; - long propColorEnable; - long propWhiteBalance; - long propBacklightCompensation; - long propGain; - - long propPan; - long propTilt; - long propRoll; - long propZoom; - long propExposure; - long propIris; - long propFocus; - - - private: - void setPhyCon(int deviceID, int conn); - void setAttemptCaptureSize(int deviceID, int w, int h); - bool setup(int deviceID); - void processPixels(unsigned char * src, unsigned char * dst, int width, int height, bool bRGB, bool bFlip); - int start(int deviceID, videoDevice * VD); - int getDeviceCount(); - void getMediaSubtypeAsString(GUID type, char * typeAsString); - - HRESULT getDevice(IBaseFilter **pSrcFilter, int deviceID, WCHAR * wDeviceName, char * nDeviceName); - static HRESULT ShowFilterPropertyPages(IBaseFilter *pFilter); - HRESULT SaveGraphFile(IGraphBuilder *pGraph, WCHAR *wszPath); - HRESULT routeCrossbar(ICaptureGraphBuilder2 **ppBuild, IBaseFilter **pVidInFilter, int conType, GUID captureMode); - - //don't touch - static bool comInit(); - static bool comUnInit(); - - int connection; - int callbackSetCount; - bool bCallback; - - GUID CAPTURE_MODE; - - //Extra video subtypes - GUID MEDIASUBTYPE_Y800; - GUID MEDIASUBTYPE_Y8; - GUID MEDIASUBTYPE_GREY; - - videoDevice * VDList[VI_MAX_CAMERAS]; - GUID mediaSubtypes[VI_NUM_TYPES]; - long formatTypes[VI_NUM_FORMATS]; - - static void __cdecl basicThread(void * objPtr); - - static char deviceNames[VI_MAX_CAMERAS][255]; - -}; - - #endif diff --git a/compiledLib/compiledByVS2008/videoInput.lib b/compiledLib/compiledByVS2008/videoInput.lib deleted file mode 100755 index 32637cc..0000000 Binary files a/compiledLib/compiledByVS2008/videoInput.lib and /dev/null differ diff --git a/compiledLib/compiledByCW/videoInput.lib b/compiledLib/vs2012/videoInput.lib old mode 100755 new mode 100644 similarity index 75% rename from compiledLib/compiledByCW/videoInput.lib rename to compiledLib/vs2012/videoInput.lib index 339c934..8eaef96 Binary files a/compiledLib/compiledByCW/videoInput.lib and b/compiledLib/vs2012/videoInput.lib differ diff --git a/videoInputSrcAndDemos/CWProject-compileAsLib/videoInput.lib b/compiledLib/vs2012/videoInputD.lib old mode 100755 new mode 100644 similarity index 72% rename from videoInputSrcAndDemos/CWProject-compileAsLib/videoInput.lib rename to compiledLib/vs2012/videoInputD.lib index 339c934..0b1ee25 Binary files a/videoInputSrcAndDemos/CWProject-compileAsLib/videoInput.lib and b/compiledLib/vs2012/videoInputD.lib differ diff --git a/videoInputSrcAndDemos/CWProject-compileAsLib/videoInputLib.mcp b/videoInputSrcAndDemos/CWProject-compileAsLib/videoInputLib.mcp deleted file mode 100755 index 23830ab..0000000 Binary files a/videoInputSrcAndDemos/CWProject-compileAsLib/videoInputLib.mcp and /dev/null differ diff --git a/videoInputSrcAndDemos/CWProject-compileAsLib/videoInputLib_Data/CWSettingsWindows.stg b/videoInputSrcAndDemos/CWProject-compileAsLib/videoInputLib_Data/CWSettingsWindows.stg deleted file mode 100755 index f56e894..0000000 Binary files a/videoInputSrcAndDemos/CWProject-compileAsLib/videoInputLib_Data/CWSettingsWindows.stg and /dev/null differ diff --git a/videoInputSrcAndDemos/CWProject-compileAsLib/videoInputLib_Data/Debug_Win32_x86/TargetDataWindows.tdt b/videoInputSrcAndDemos/CWProject-compileAsLib/videoInputLib_Data/Debug_Win32_x86/TargetDataWindows.tdt deleted file mode 100755 index 9e54154..0000000 Binary files a/videoInputSrcAndDemos/CWProject-compileAsLib/videoInputLib_Data/Debug_Win32_x86/TargetDataWindows.tdt and /dev/null differ diff --git a/videoInputSrcAndDemos/CWProject-compileAsLib/videoInputLib_Data/Release_Win32_x86/TargetDataWindows.tdt b/videoInputSrcAndDemos/CWProject-compileAsLib/videoInputLib_Data/Release_Win32_x86/TargetDataWindows.tdt deleted file mode 100755 index eb42c90..0000000 Binary files a/videoInputSrcAndDemos/CWProject-compileAsLib/videoInputLib_Data/Release_Win32_x86/TargetDataWindows.tdt and /dev/null differ diff --git a/videoInputSrcAndDemos/CWProject-videoDemo/src/hello.cpp b/videoInputSrcAndDemos/CWProject-videoDemo/src/hello.cpp deleted file mode 100755 index 81b4a21..0000000 --- a/videoInputSrcAndDemos/CWProject-videoDemo/src/hello.cpp +++ /dev/null @@ -1,112 +0,0 @@ -#include -#include "glfw.h" -#include "triangleApp.h" -#include "windows.h" - - - -triangleApp TAPP; - - -void GLFWCALL keyfun( int key, int action ) -{ - if( action != GLFW_PRESS ) - { - return; - } - - switch( key ) - { - case GLFW_KEY_ESC: - printf( "ESC => quit program\n" ); - break; - - } - - TAPP.keyDown(key); - - fflush( stdout ); -} - - - - - - - -int main( void ) -{ - - - int width, height, running, frames, x, y; - double t, t0, fps; - char titlestr[ 200 ]; - - - // Initialise GLFW - glfwInit(); - - // Open OpenGL window - if (!glfwOpenWindow(1024,768, // Open window - 24, 24, 24, // Red, green, and blue bits for color buffer - 24, // Bits for alpha buffer - 24, // Bits for depth buffer (Z-buffer) - 24, // Bits for stencil buffer - GLFW_WINDOW)){ - glfwTerminate(); - return 0; - } - - - glfwSetKeyCallback( keyfun ); - TAPP.init(); - glfwEnable( GLFW_STICKY_KEYS ); - // Disable vertical sync (on cards that support it) - glfwSwapInterval( 1 ); - - // Main loop - running = GL_TRUE; - frames = 0; - t0 = glfwGetTime(); - while( running ){ - - // Get time and mouse position - t = glfwGetTime(); - glfwGetMousePos( &x, &y ); - - // Calculate and display FPS (frames per second) - if( (t-t0) > 1.0 || frames == 0 ) - { - fps = (double)frames / (t-t0); - sprintf( titlestr, "videoInput Demo App (%.1f FPS)", fps ); - glfwSetWindowTitle( titlestr ); - t0 = t; - frames = 0; - } - frames ++; - TAPP.idle(); - - - // Get window size (may be different than the requested size) - glfwGetWindowSize( &width, &height ); - height = height > 0 ? height : 1; - // Set viewport - glViewport( 0, 0, width, height ); - // Clear color buffer - glClearColor( 0.0f, 0.0f, 0.0f, 0.0f ); - glClear( GL_COLOR_BUFFER_BIT ); - - TAPP.draw(); - // Swap buffers - glfwSwapBuffers(); - - // Check if the ESC key was pressed or the window was closed - running = !glfwGetKey( GLFW_KEY_ESC ) && - glfwGetWindowParam( GLFW_OPENED ); - } - - // Close OpenGL window and terminate GLFW - glfwTerminate(); - - return 0; -} diff --git a/videoInputSrcAndDemos/CWProject-videoDemo/src/imageTexture.cpp b/videoInputSrcAndDemos/CWProject-videoDemo/src/imageTexture.cpp deleted file mode 100755 index f1dc9bb..0000000 --- a/videoInputSrcAndDemos/CWProject-videoDemo/src/imageTexture.cpp +++ /dev/null @@ -1,120 +0,0 @@ - -#include "imageTexture.h" - - - -imageTexture::imageTexture(int w, int h, int internalGlDataType){ - - tex_w = w; - tex_h = h; - - tex_u = 1.0f; - tex_t = 1.0f; - - // if w, h are not powers of 2 you will not see anything. - // create the named texture: - - myTex = new GLuint[1]; - //glPixelStorei(GL_UNPACK_ALIGNMENT, 1); // not necessary, I think - glGenTextures(1, myTex); // could be more then one, but for now, just one - - glEnable(GL_TEXTURE_2D); - - glBindTexture(GL_TEXTURE_2D, myTex[0]); - glTexImage2D(GL_TEXTURE_2D, 0, internalGlDataType, tex_w, tex_h, 0, GL_LUMINANCE, GL_UNSIGNED_BYTE, 0); // init to black... - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); - - glDisable(GL_TEXTURE_2D); - - -} - - - - -void imageTexture::loadImageData(unsigned char * data, int w, int h, int glDataType){ - - if ( w > tex_w || h > tex_h) { - printf("image data too big - bailing \n"); - return; - } - - - //compute new tex co-ords based on the ratio of data's w, h to texture w,h; - - tex_t = (float)w / (float)tex_w; - tex_u = (float)h / (float)tex_h; - - // update the texture image: - - glEnable(GL_TEXTURE_2D); - - glBindTexture(GL_TEXTURE_2D, myTex[0]); - glTexSubImage2D(GL_TEXTURE_2D,0,0,0,w,h,glDataType,GL_UNSIGNED_BYTE,data); - - glDisable(GL_TEXTURE_2D); -} - -//================================================================================= -void imageTexture::renderTexture(int x, int y, int w, int h){ - - - glEnable(GL_TEXTURE_2D); - - // bind the texture - glBindTexture( GL_TEXTURE_2D, myTex[0] ); - - float px0 = x ; // up to you to get the aspect ratio right - float py0 = y ; - float px1 = x+w; - float py1 = y+h; - - glBegin( GL_QUADS ); - glTexCoord2f(0.0,0.0); glVertex3f(px0, py0,0); - glTexCoord2f(tex_t,0.0); glVertex3f(px1, py0,0); - glTexCoord2f(tex_t,tex_u); glVertex3f(px1, py1,0); - glTexCoord2f(0.0,tex_u); glVertex3f(px0, py1,0); - glEnd(); - - glDisable(GL_TEXTURE_2D); - -} - -//================================================================================= -void imageTexture::renderTextureWithBox(int x, int y, int w, int h, float r, float g, float b, int border){ - - - - // bind the texture - - float px0 = x ; // up to you to get the aspect ratio right - float py0 = y ; - float px1 = x+w; - float py1 = y+h; - - glColor3f(r,g,b); - glBegin( GL_QUADS ); - glVertex3f(px0-border, py0-border,0); - glVertex3f(px1+border, py0-border,0); - glVertex3f(px1+border, py1+border,0); - glVertex3f(px0-border, py1+border,0); - glEnd(); - - glEnable(GL_TEXTURE_2D); - glBindTexture( GL_TEXTURE_2D, myTex[0] ); - - glBegin( GL_QUADS ); - glTexCoord2f(0.0,0.0); glVertex3f(px0, py0,0); - glTexCoord2f(tex_t,0.0); glVertex3f(px1, py0,0); - glTexCoord2f(tex_t,tex_u); glVertex3f(px1, py1,0); - glTexCoord2f(0.0,tex_u); glVertex3f(px0, py1,0); - glEnd(); - - glDisable(GL_TEXTURE_2D); - -} - diff --git a/videoInputSrcAndDemos/CWProject-videoDemo/src/simpleApp.cpp b/videoInputSrcAndDemos/CWProject-videoDemo/src/simpleApp.cpp deleted file mode 100755 index b29121e..0000000 --- a/videoInputSrcAndDemos/CWProject-videoDemo/src/simpleApp.cpp +++ /dev/null @@ -1,86 +0,0 @@ -#include "simpleApp.h" - -simpleApp::simpleApp(){ - -} - -void simpleApp::idle(){ - -} - -void simpleApp::init(){ - -} - - -void simpleApp::draw(){ - -} - -void simpleApp::keyDown (char c){ - -} - -void simpleApp::mouseMove( float x, float y ){ - -} - -void simpleApp::mouseDrag( float x, float y ){ - -} - -void simpleApp::mouseDown( float x, float y, int button ){ - -} - -void simpleApp::mouseUp ( float x, float y, int button ){ - -} - - -void simpleApp::printYo(){ - -} - - -void simpleApp::setupScreen(){ - - int w, h; - - glfwGetWindowSize( &w, &h ); - float halfFov, theTan, screenFov, aspect; - - screenFov = 60.0f; - - float eyeX = (float)w / 2.0; - float eyeY = (float)h / 2.0; - halfFov = PI * screenFov / 360.0; - theTan = tanf(halfFov); - float dist = eyeY / theTan; - float nearDist = dist / 10.0; // near / far clip plane - float farDist = dist * 10.0; - aspect = (float)w/(float)h; - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(screenFov, aspect, nearDist, farDist); - gluLookAt(eyeX, eyeY, dist, - eyeX, eyeY, 0.0, 0.0, 1.0, 0.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - - - -} - - - - -/* - simpleApp : openFullscreen; - coordSystem; - swap(); - - -*/ - diff --git a/videoInputSrcAndDemos/CWProject-videoDemo/src/simpleApp.h b/videoInputSrcAndDemos/CWProject-videoDemo/src/simpleApp.h deleted file mode 100755 index dfd389d..0000000 --- a/videoInputSrcAndDemos/CWProject-videoDemo/src/simpleApp.h +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef _SIMPLE_APP -#define _SIMPLE_APP - -#include -#include "glfw.h" - -#define PI 3.141592654 -#include - -class simpleApp{ - - public: - simpleApp(); - void printYo(); - virtual void idle(); - virtual void init(); - virtual void draw(); - virtual void keyDown (char c); - virtual void mouseMove( float x, float y ); - virtual void mouseDrag( float x, float y ); - virtual void mouseDown( float x, float y, int button ); - virtual void mouseUp ( float x, float y, int button ); - - - void setupScreen(); -}; - -#endif // _SIMPLE_APP \ No newline at end of file diff --git a/videoInputSrcAndDemos/CWProject-videoDemo/src/triangleApp.cpp b/videoInputSrcAndDemos/CWProject-videoDemo/src/triangleApp.cpp deleted file mode 100755 index 17bad10..0000000 --- a/videoInputSrcAndDemos/CWProject-videoDemo/src/triangleApp.cpp +++ /dev/null @@ -1,123 +0,0 @@ -#include "triangleApp.h" - -//The first device we want to open -int dev = 0; - -//empty constructor -triangleApp::triangleApp(){ - -} - -void triangleApp::init(){ - - //optional static function to list devices - //for silent listDevices use listDevices(true); - int numDevices = videoInput::listDevices(); - - //uncomment for silent setup - //videoInput::setVerbose(false); - - //we allocate our openGL texture objects - //we give them a ma size of 2048 by 2048 pixels - IT = new imageTexture(2048,2048, GL_RGB); - IT2 = new imageTexture(2048,2048, GL_RGB); - - //by default we use a callback method - //this updates whenever a new frame - //arrives if you are only ocassionally grabbing frames - //you might want to set this to false as the callback caches the last - //frame for performance reasons. - VI.setUseCallback(true); - - //try and setup device with id 0 and id 1 - //if only one device is found the second - //setupDevice should return false - - //if you want to capture at a different frame rate (default is 30) - //specify it here, you are not guaranteed to get this fps though. - //VI.setIdealFramerate(dev, 60); - - - //we can specifiy the dimensions we want to capture at - //if those sizes are not possible VI will look for the next nearest matching size - VI.setupDevice(dev, 320, 240, VI_COMPOSITE); - VI.setupDevice(dev+1, 640, 480, VI_COMPOSITE); - - //once the device is setup you can try and - //set the format - this is useful if your device - //doesn't remember what format you set it to - //VI.setFormat(dev, VI_NTSC_M); //optional set the format - - //we allocate our buffer based on the number - //of pixels in each frame - this will be width * height * 3 - frame = new unsigned char[VI.getSize(dev)]; - -} - -void triangleApp::idle(){ - - //check to see if we have got a new frame - if( VI.isFrameNew(dev) ) - { - //we get the pixels by passing in out buffer which gets filled - VI.getPixels(dev,frame, true); - - //we then load them into our texture - IT->loadImageData(frame, VI.getWidth(dev), VI.getHeight(dev),GL_RGB); - } - - //check to see if we have got a new frame - if( VI.isFrameNew(dev+1) ) - { - //here we are directly return the pixels into our texture - //use VI.getWidth getHeight etc so that you don't get a crash - IT2->loadImageData(VI.getPixels(dev+1, true), VI.getWidth(dev+1), VI.getHeight(dev+1), GL_RGB); - } -} - -void triangleApp::draw(){ - - setupScreen(); - IT->renderTexture(0, 0, VI.getWidth(dev), VI.getHeight(dev)); - IT2->renderTexture(VI.getWidth(dev), 0, VI.getWidth(dev+1), VI.getHeight(dev+1)); -} - -void triangleApp::keyDown (char c){ - - //some options hooked up to key commands - if(c=='S')VI.showSettingsWindow(dev); - if(c=='D')VI.showSettingsWindow(dev+1); - - if(c=='R')VI.restartDevice(dev); - if(c=='T')VI.restartDevice(dev+1); - - if(c == '1')VI.setVideoSettingCameraPct(0, VI.propExposure, 0.1, 2); - if(c == '2')VI.setVideoSettingCameraPct(0, VI.propExposure, 0.9, 2); - - if(c == '5')VI.setVideoSettingFilterPct(0, VI.propWhiteBalance, 0.12, 2); - if(c == '6')VI.setVideoSettingFilterPct(0, VI.propWhiteBalance, 0.88, 2); - - if(c=='Q') - { - VI.stopDevice(dev); - VI.stopDevice(dev+1); - } -} - -void triangleApp::mouseMove( float x, float y ){ - -} - -void triangleApp::mouseDrag( float x, float y ){ - -} - -void triangleApp::mouseDown( float x, float y, int button ){ - -} - -void triangleApp::mouseUp ( float x, float y, int button ){ - -} - - diff --git a/videoInputSrcAndDemos/CWProject-videoDemo/src/triangleApp.h b/videoInputSrcAndDemos/CWProject-videoDemo/src/triangleApp.h deleted file mode 100755 index 22a7855..0000000 --- a/videoInputSrcAndDemos/CWProject-videoDemo/src/triangleApp.h +++ /dev/null @@ -1,33 +0,0 @@ -#ifndef _TRIANGLE_APP - -#include -#include "glfw.h" -#include "simpleApp.h" -#include "imageTexture.h" -#include "videoInput.h" - - -class triangleApp : public simpleApp{ - - public: - triangleApp(); - virtual void idle(); - virtual void init(); - virtual void draw(); - virtual void keyDown (char c); - virtual void mouseMove( float x, float y ); - virtual void mouseDrag( float x, float y ); - virtual void mouseDown( float x, float y, int button ); - virtual void mouseUp ( float x, float y, int button ); - - - imageTexture * IT; - imageTexture * IT2; - videoInput VI; - - unsigned char * frame; - unsigned char * frame2; - -}; - -#endif // _triangle_APP \ No newline at end of file diff --git a/videoInputSrcAndDemos/CWProject-videoDemo/videoInput.mcp b/videoInputSrcAndDemos/CWProject-videoDemo/videoInput.mcp deleted file mode 100755 index 972c994..0000000 Binary files a/videoInputSrcAndDemos/CWProject-videoDemo/videoInput.mcp and /dev/null differ diff --git a/videoInputSrcAndDemos/CWProject-videoDemo/videoInput_Data/CWSettingsWindows.stg b/videoInputSrcAndDemos/CWProject-videoDemo/videoInput_Data/CWSettingsWindows.stg deleted file mode 100755 index 1eb144f..0000000 Binary files a/videoInputSrcAndDemos/CWProject-videoDemo/videoInput_Data/CWSettingsWindows.stg and /dev/null differ diff --git a/videoInputSrcAndDemos/CWProject-videoDemo/videoInput_Data/Debug_Win32_x86/TargetDataWindows.tdt b/videoInputSrcAndDemos/CWProject-videoDemo/videoInput_Data/Debug_Win32_x86/TargetDataWindows.tdt deleted file mode 100755 index 2fb598c..0000000 Binary files a/videoInputSrcAndDemos/CWProject-videoDemo/videoInput_Data/Debug_Win32_x86/TargetDataWindows.tdt and /dev/null differ diff --git a/videoInputSrcAndDemos/CWProject-videoDemo/videoInput_Data/Release_Win32_x86/TargetDataWindows.tdt b/videoInputSrcAndDemos/CWProject-videoDemo/videoInput_Data/Release_Win32_x86/TargetDataWindows.tdt deleted file mode 100755 index 6469dac..0000000 Binary files a/videoInputSrcAndDemos/CWProject-videoDemo/videoInput_Data/Release_Win32_x86/TargetDataWindows.tdt and /dev/null differ diff --git a/videoInputSrcAndDemos/CodeBlocks-compileAsLib/videoInputLib/libvideoInputLib.a b/videoInputSrcAndDemos/CodeBlocks-compileAsLib/videoInputLib/libvideoInputLib.a new file mode 100644 index 0000000..c127fbf Binary files /dev/null and b/videoInputSrcAndDemos/CodeBlocks-compileAsLib/videoInputLib/libvideoInputLib.a differ diff --git a/videoInputSrcAndDemos/CodeBlocks-compileAsLib/videoInputLib/videoInputLib.cbp b/videoInputSrcAndDemos/CodeBlocks-compileAsLib/videoInputLib/videoInputLib.cbp new file mode 100644 index 0000000..4de3ae7 --- /dev/null +++ b/videoInputSrcAndDemos/CodeBlocks-compileAsLib/videoInputLib/videoInputLib.cbp @@ -0,0 +1,58 @@ + + + + + + diff --git a/videoInputSrcAndDemos/CodeBlocks-compileAsLib/videoInputLib/videoInputLib.depend b/videoInputSrcAndDemos/CodeBlocks-compileAsLib/videoInputLib/videoInputLib.depend new file mode 100644 index 0000000..ea10d83 --- /dev/null +++ b/videoInputSrcAndDemos/CodeBlocks-compileAsLib/videoInputLib/videoInputLib.depend @@ -0,0 +1,265 @@ +# depslib dependency file v1.0 +1312966937 source:c:\users\gameover\code\videoinput\videoinputsrcanddemos\libs\videoinput\videoinput.cpp + "videoInput.h" + "tchar.h" + "DShow.h" + "streams.h" + "myqedit.h" + "vector" + "Aviriff.h" + "Windows.h" + + +1312966388 c:\users\gameover\code\videoinput\videoinputsrcanddemos\libs\videoinput\videoinput.h + + + + + + + +1310625476 c:\users\gameover\code\videoinput\videoinputsrcanddemos\libs\dshow\include\dshow.h + + + + + + + + + + + + + + + + +1310625477 c:\users\gameover\code\videoinput\videoinputsrcanddemos\libs\dshow\include\ddraw.h + + +1312964807 c:\users\gameover\code\videoinput\videoinputsrcanddemos\libs\dshow\include\strmif.h + +1310625476 c:\users\gameover\code\videoinput\videoinputsrcanddemos\libs\dshow\include\amvideo.h + + +1310625476 c:\users\gameover\code\videoinput\videoinputsrcanddemos\libs\dshow\include\amaudio.h + + + +1310625477 c:\users\gameover\code\videoinput\videoinputsrcanddemos\libs\dshow\include\dsound.h + + + +1310625476 c:\users\gameover\code\videoinput\videoinputsrcanddemos\libs\dshow\include\control.h + "rpc.h" + "rpcndr.h" + +1310625477 c:\users\gameover\code\videoinput\videoinputsrcanddemos\libs\dshow\include\evcode.h + +1310625477 c:\users\gameover\code\videoinput\videoinputsrcanddemos\libs\dshow\include\uuids.h + "ksuuids.h" + +1310625477 c:\users\gameover\code\videoinput\videoinputsrcanddemos\libs\dshow\include\ksuuids.h + +1310625477 c:\users\gameover\code\videoinput\videoinputsrcanddemos\libs\dshow\include\errors.h + + +1310625477 c:\users\gameover\code\videoinput\videoinputsrcanddemos\libs\dshow\include\vfwmsgs.h + +1310625477 c:\users\gameover\code\videoinput\videoinputsrcanddemos\libs\dshow\include\edevdefs.h + +1310625476 c:\users\gameover\code\videoinput\videoinputsrcanddemos\libs\dshow\include\audevcod.h + +1310625477 c:\users\gameover\code\videoinput\videoinputsrcanddemos\libs\dshow\include\dvdevcod.h + +1310625477 c:\users\gameover\code\videoinput\videoinputsrcanddemos\libs\dshow\include\streams.h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +1310625477 c:\users\gameover\code\videoinput\videoinputsrcanddemos\libs\dshow\include\reftime.h + +1310625477 c:\users\gameover\code\videoinput\videoinputsrcanddemos\libs\dshow\include\wxdebug.h + +1312964920 c:\users\gameover\code\videoinput\videoinputsrcanddemos\libs\dshow\include\wxutil.h + +1312965028 c:\users\gameover\code\videoinput\videoinputsrcanddemos\libs\dshow\include\combase.h + +1310625477 c:\users\gameover\code\videoinput\videoinputsrcanddemos\libs\dshow\include\dllsetup.h + +1310625477 c:\users\gameover\code\videoinput\videoinputsrcanddemos\libs\dshow\include\measure.h + +1310625476 c:\users\gameover\code\videoinput\videoinputsrcanddemos\libs\dshow\include\comlite.h + +1310625476 c:\users\gameover\code\videoinput\videoinputsrcanddemos\libs\dshow\include\cache.h + +1310625477 c:\users\gameover\code\videoinput\videoinputsrcanddemos\libs\dshow\include\wxlist.h + +1310625477 c:\users\gameover\code\videoinput\videoinputsrcanddemos\libs\dshow\include\msgthrd.h + +1310625477 c:\users\gameover\code\videoinput\videoinputsrcanddemos\libs\dshow\include\mtype.h + +1310625477 c:\users\gameover\code\videoinput\videoinputsrcanddemos\libs\dshow\include\fourcc.h + +1312965063 c:\users\gameover\code\videoinput\videoinputsrcanddemos\libs\dshow\include\ctlutil.h + +1310625476 c:\users\gameover\code\videoinput\videoinputsrcanddemos\libs\dshow\include\amfilter.h + +1310625477 c:\users\gameover\code\videoinput\videoinputsrcanddemos\libs\dshow\include\transfrm.h + +1312965222 c:\users\gameover\code\videoinput\videoinputsrcanddemos\libs\dshow\include\transip.h + +1310625477 c:\users\gameover\code\videoinput\videoinputsrcanddemos\libs\dshow\include\source.h + +1310625477 c:\users\gameover\code\videoinput\videoinputsrcanddemos\libs\dshow\include\outputq.h + +1310625477 c:\users\gameover\code\videoinput\videoinputsrcanddemos\libs\dshow\include\renbase.h + +1310625477 c:\users\gameover\code\videoinput\videoinputsrcanddemos\libs\dshow\include\winutil.h + +1310625477 c:\users\gameover\code\videoinput\videoinputsrcanddemos\libs\dshow\include\winctrl.h + +1312965250 c:\users\gameover\code\videoinput\videoinputsrcanddemos\libs\dshow\include\videoctl.h + +1312965362 c:\users\gameover\code\videoinput\videoinputsrcanddemos\libs\dshow\include\refclock.h + "dsschedule.h" + +1310625477 c:\users\gameover\code\videoinput\videoinputsrcanddemos\libs\dshow\include\dsschedule.h + +1310625477 c:\users\gameover\code\videoinput\videoinputsrcanddemos\libs\dshow\include\sysclock.h + +1310625477 c:\users\gameover\code\videoinput\videoinputsrcanddemos\libs\dshow\include\pstream.h + +1310625477 c:\users\gameover\code\videoinput\videoinputsrcanddemos\libs\dshow\include\vtrans.h + +1310625476 c:\users\gameover\code\videoinput\videoinputsrcanddemos\libs\dshow\include\amextra.h + +1310625476 c:\users\gameover\code\videoinput\videoinputsrcanddemos\libs\dshow\include\cprop.h + +1310625477 c:\users\gameover\code\videoinput\videoinputsrcanddemos\libs\dshow\include\strmctl.h + +1310629243 c:\users\gameover\code\videoinput\videoinputsrcanddemos\libs\extra\myqedit.h + +1310625476 c:\users\gameover\code\videoinput\videoinputsrcanddemos\libs\dshow\include\aviriff.h + + + +1373814362 source:c:\users\theo\documents\github\videoinput\videoinputsrcanddemos\libs\videoinput\videoinput.cpp + + "videoInput.h" + + + + + + + +1373812707 c:\users\theo\documents\github\videoinput\videoinputsrcanddemos\libs\videoinput\videoinput.h + + + + + + + + + +1373139129 c:\users\theo\documents\github\videoinput\videoinputsrcanddemos\libs\dshow\include\dshow.h + + + + + + + + + + + + + + + + +1373139865 c:\users\theo\documents\github\videoinput\videoinputsrcanddemos\libs\dshow\include\ddraw.h + + +1373139866 c:\users\theo\documents\github\videoinput\videoinputsrcanddemos\libs\dshow\include\strmif.h + +1373139129 c:\users\theo\documents\github\videoinput\videoinputsrcanddemos\libs\dshow\include\amvideo.h + + +1373139129 c:\users\theo\documents\github\videoinput\videoinputsrcanddemos\libs\dshow\include\amaudio.h + + + +1373139865 c:\users\theo\documents\github\videoinput\videoinputsrcanddemos\libs\dshow\include\dsound.h + + + +1373139129 c:\users\theo\documents\github\videoinput\videoinputsrcanddemos\libs\dshow\include\control.h + "rpc.h" + "rpcndr.h" + +1373139865 c:\users\theo\documents\github\videoinput\videoinputsrcanddemos\libs\dshow\include\evcode.h + +1373139866 c:\users\theo\documents\github\videoinput\videoinputsrcanddemos\libs\dshow\include\uuids.h + "ksuuids.h" + +1373139866 c:\users\theo\documents\github\videoinput\videoinputsrcanddemos\libs\dshow\include\ksuuids.h + +1373139865 c:\users\theo\documents\github\videoinput\videoinputsrcanddemos\libs\dshow\include\errors.h + + +1373139866 c:\users\theo\documents\github\videoinput\videoinputsrcanddemos\libs\dshow\include\vfwmsgs.h + +1373139865 c:\users\theo\documents\github\videoinput\videoinputsrcanddemos\libs\dshow\include\edevdefs.h + +1373139129 c:\users\theo\documents\github\videoinput\videoinputsrcanddemos\libs\dshow\include\audevcod.h + +1373139865 c:\users\theo\documents\github\videoinput\videoinputsrcanddemos\libs\dshow\include\dvdevcod.h + +1373139129 c:\users\theo\documents\github\videoinput\videoinputsrcanddemos\libs\dshow\include\aviriff.h + + + diff --git a/videoInputSrcAndDemos/CodeBlocks-compileAsLib/videoInputLib/videoInputLib.layout b/videoInputSrcAndDemos/CodeBlocks-compileAsLib/videoInputLib/videoInputLib.layout new file mode 100644 index 0000000..8ea0024 --- /dev/null +++ b/videoInputSrcAndDemos/CodeBlocks-compileAsLib/videoInputLib/videoInputLib.layout @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/videoInputSrcAndDemos/DevCpp-CompileAsLib/compileInDevCpp.txt b/videoInputSrcAndDemos/DevCpp-CompileAsLib/compileInDevCpp.txt deleted file mode 100755 index 03ecb9f..0000000 --- a/videoInputSrcAndDemos/DevCpp-CompileAsLib/compileInDevCpp.txt +++ /dev/null @@ -1,20 +0,0 @@ -to compile in dev-c++ - -1) install direct-x devpak - -2) add include directory: - C:\Dev-Cpp\include\BaseClasses - -3) comment out this include in dxtrans.h (in dev-c++) - //#include - -4) comment these includes from the theo's code (both places): - //#include "atlbase.h" - //#include "dxutil.h" - -5) asm -> in flipRGB, replace with regular c++ - -6) replace all occurances of SAFE_RELEASE - //SAFE_RELEASE(pControl); - with - if ( (pControl) ) { (pControl)->Release(); (pControl) = 0; } \ No newline at end of file diff --git a/videoInputSrcAndDemos/DevCpp-CompileAsLib/useInDevCpp.txt b/videoInputSrcAndDemos/DevCpp-CompileAsLib/useInDevCpp.txt deleted file mode 100755 index fa9eb9b..0000000 --- a/videoInputSrcAndDemos/DevCpp-CompileAsLib/useInDevCpp.txt +++ /dev/null @@ -1,13 +0,0 @@ - - -1) download the directx devpak (devpaks.org) - -2) link against: - -videoInputLib.a --l dxguid --l strmbase --l strmiids --l uuid --l ole32 --l oleaut32 \ No newline at end of file diff --git a/videoInputSrcAndDemos/DevCpp-CompileAsLib/videoInput/Makefile.win b/videoInputSrcAndDemos/DevCpp-CompileAsLib/videoInput/Makefile.win deleted file mode 100755 index ef6f8f6..0000000 --- a/videoInputSrcAndDemos/DevCpp-CompileAsLib/videoInput/Makefile.win +++ /dev/null @@ -1,31 +0,0 @@ -# Project: videoInputLib -# Makefile created by Dev-C++ 4.9.9.2 - -CPP = g++.exe -CC = gcc.exe -WINDRES = windres.exe -RES = -OBJ = ../../libs/videoInput/videoInput.o $(RES) -LINKOBJ = ../../libs/videoInput/videoInput.o $(RES) -LIBS = -L"C:/Dev-Cpp/lib" -INCS = -I"C:/Dev-Cpp/include" -I"C:/Dev-Cpp/include/BaseClasses" -CXXINCS = -I"C:/Dev-Cpp/lib/gcc/mingw32/3.4.2/include" -I"C:/Dev-Cpp/include/c++/3.4.2/backward" -I"C:/Dev-Cpp/include/c++/3.4.2/mingw32" -I"C:/Dev-Cpp/include/c++/3.4.2" -I"C:/Dev-Cpp/include" -I"C:/Dev-Cpp/include/BaseClasses" -BIN = videoInputLib.a -CXXFLAGS = $(CXXINCS) -w -O3 -CFLAGS = $(INCS) -w -O3 -RM = rm -f - -.PHONY: all all-before all-after clean clean-custom - -all: all-before videoInputLib.a all-after - - -clean: clean-custom - ${RM} $(OBJ) $(BIN) - -$(BIN): $(LINKOBJ) - ar r $(BIN) $(LINKOBJ) - ranlib $(BIN) - -../../libs/videoInput/videoInput.o: ../../libs/videoInput/videoInput.cpp - $(CPP) -c ../../libs/videoInput/videoInput.cpp -o ../../libs/videoInput/videoInput.o $(CXXFLAGS) diff --git a/videoInputSrcAndDemos/DevCpp-CompileAsLib/videoInput/videoInputLib.a b/videoInputSrcAndDemos/DevCpp-CompileAsLib/videoInput/videoInputLib.a deleted file mode 100755 index 15df518..0000000 Binary files a/videoInputSrcAndDemos/DevCpp-CompileAsLib/videoInput/videoInputLib.a and /dev/null differ diff --git a/videoInputSrcAndDemos/DevCpp-CompileAsLib/videoInput/videoInputLib.dev b/videoInputSrcAndDemos/DevCpp-CompileAsLib/videoInput/videoInputLib.dev deleted file mode 100755 index 4e8e74d..0000000 --- a/videoInputSrcAndDemos/DevCpp-CompileAsLib/videoInput/videoInputLib.dev +++ /dev/null @@ -1,89 +0,0 @@ -[Project] -FileName=videoInputLib.dev -Name=videoInputLib -UnitCount=2 -Type=2 -Ver=1 -ObjFiles= -Includes=C:\Dev-Cpp\include\BaseClasses -Libs= -PrivateResource= -ResourceIncludes= -MakeIncludes= -Compiler= -CppCompiler= -Linker= -IsCpp=1 -Icon= -ExeOutput= -ObjectOutput= -OverrideOutput=0 -OverrideOutputName=videoInputLib.a -HostApplication= -Folders= -CommandLine= -UseCustomMakefile=0 -CustomMakefile= -IncludeVersionInfo=0 -SupportXPThemes=0 -CompilerSet=0 -CompilerSettings=0010000000001000000000 - -[Unit1] -FileName=..\..\libs\videoInput\videoInput.cpp -CompileCpp=1 -Folder=videoInputLib -Compile=1 -Link=1 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit2] -FileName=..\..\libs\videoInput\videoInput.h -CompileCpp=1 -Folder=videoInputLib -Compile=1 -Link=1 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit3] -FileName=videoInput.cpp -CompileCpp=1 -Folder=videoInputLib -Compile=1 -Link=1 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[Unit4] -FileName=videoInput.h -CompileCpp=1 -Folder=videoInputLib -Compile=1 -Link=1 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - -[VersionInfo] -Major=0 -Minor=1 -Release=1 -Build=1 -LanguageID=1033 -CharsetID=1252 -CompanyName= -FileVersion= -FileDescription=Developed using the Dev-C++ IDE -InternalName= -LegalCopyright= -LegalTrademarks= -OriginalFilename= -ProductName= -ProductVersion= -AutoIncBuildNr=0 - diff --git a/videoInputSrcAndDemos/DevCpp-CompileAsLib/videoInput/videoInputLib.layout b/videoInputSrcAndDemos/DevCpp-CompileAsLib/videoInput/videoInputLib.layout deleted file mode 100755 index 7a5b18a..0000000 --- a/videoInputSrcAndDemos/DevCpp-CompileAsLib/videoInput/videoInputLib.layout +++ /dev/null @@ -1,24 +0,0 @@ -[Editor_2] -CursorCol=1 -CursorRow=1161 -TopLine=1159 -LeftChar=1 -Open=1 -Top=1 -[Editors] -Focused=-1 -Order= -[Editor_0] -Open=0 -Top=0 -CursorCol=16 -CursorRow=23 -TopLine=18 -LeftChar=1 -[Editor_1] -Open=0 -Top=0 -CursorCol=16 -CursorRow=54 -TopLine=46 -LeftChar=1 diff --git a/videoInputSrcAndDemos/VC2005 INSTRUCTIONS/SETUP INSTSTUCTIONS AND QUIRKS .txt b/videoInputSrcAndDemos/VC2005 INSTRUCTIONS/SETUP INSTSTUCTIONS AND QUIRKS .txt deleted file mode 100755 index 43356cb..0000000 --- a/videoInputSrcAndDemos/VC2005 INSTRUCTIONS/SETUP INSTSTUCTIONS AND QUIRKS .txt +++ /dev/null @@ -1,89 +0,0 @@ --- REQUIREMENTS - -1 Install the platform SDK - follows these instructions: http://msdn.microsoft.com/vstudio/express/visualc/usingpsdk/ - -2 Directshow SDK-> http://www.microsoft.com/downloads/details.aspx?FamilyID=8af0afa9-1383-44b4-bc8b-7d6315212323&DisplayLang=en - -3 Directx SDK-> http://www.microsoft.com/downloads/details.aspx?FamilyID=77960733-06e9-47ba-914a-844575031b81&DisplayLang=en - -I used the Feb 2005 for both directx and directshow - I have had problems with later versions - - --- VC++2005 SETTINGS - -Tools->Options... Projects and solutions->VC++Directories as in included pictures -(obviously you can have the directories in diferent locations but make sure that the ones listed are included) -The order is also VERY IMPORTANT - make sure you have the same order - - -EXECUTABLE PATHS -C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Bin -C:\Program Files\Microsoft DirectX 9.0 SDK (February 2005)\Utilities\Bin\x86 - - -INCLUDE PATHS -C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include -C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\mfc -C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\atl -C:\Program Files\Microsoft DirectX 9.0 SDK (February 2005)\Include -C:\Program Files\Microsoft DirectX 9.0 SDK (February 2005)\Extras\DirectShow\Include -C:\Program Files\Microsoft DirectX 9.0 SDK (February 2005)\Extras\DirectShow\Samples\C++\DirectShow\BaseClasses - - -LIBRARY PATHS -C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Lib -C:\Program Files\Microsoft DirectX 9.0 SDK (February 2005)\Lib\x86 -C:\Program Files\Microsoft DirectX 9.0 SDK (February 2005)\Extras\DirectShow\Lib\x86 - - --- LINKER ERRORS!!!!!!!!!!!!!!!: - -If you get a linker error C2146 for winnt.h or error C4430 in ctlutil.h - -the problem here is that this member operator function does not have a return type: - - operator=(LONG); - -Change it to: - - COARefTime& operator=(LONG); - - -Read about it here: -http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=63785&SiteID=1 - - --- LINKER SETTINGS FOR MAKING STATIC LIB: - -Make sure you have your Additional Dependecies in ProjectSettings->Librarian->General set to: -dxguid.lib ole32.lib strmiids.lib uuid.lib - -And Link Library Dependencies: set to yes. -When it compiles you will get a LOT of warnings but it should build fine - nice static lib. - - --- LINKER SETTINGS FOR USING COMPILED LIB - -If you get an error about atlthunk.lib add this to your ProjectSettings->Linker->Command Line -/NODEFAULTLIB:"atlthunk" - -I also have -/NODEFAULTLIB:"LIBCMT" - - --- OTHER DEBUGGING --- -Look through how the example apps settings are set in project properties. -Check if there is something there that you are missing from your project settings. - - - - - - - - - - - - - diff --git a/videoInputSrcAndDemos/VC2005-videoInputCompileAsLib/Debug/BuildLog.htm b/videoInputSrcAndDemos/VC2005-videoInputCompileAsLib/Debug/BuildLog.htm deleted file mode 100755 index 40b4877..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputCompileAsLib/Debug/BuildLog.htm and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputCompileAsLib/Debug/vc80.idb b/videoInputSrcAndDemos/VC2005-videoInputCompileAsLib/Debug/vc80.idb deleted file mode 100755 index 95242cd..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputCompileAsLib/Debug/vc80.idb and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputCompileAsLib/Debug/vc80.pdb b/videoInputSrcAndDemos/VC2005-videoInputCompileAsLib/Debug/vc80.pdb deleted file mode 100755 index 102721d..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputCompileAsLib/Debug/vc80.pdb and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputCompileAsLib/Debug/videoInput.obj b/videoInputSrcAndDemos/VC2005-videoInputCompileAsLib/Debug/videoInput.obj deleted file mode 100755 index 51ed3a8..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputCompileAsLib/Debug/videoInput.obj and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputCompileAsLib/Release/BuildLog.htm b/videoInputSrcAndDemos/VC2005-videoInputCompileAsLib/Release/BuildLog.htm deleted file mode 100755 index cbcece5..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputCompileAsLib/Release/BuildLog.htm and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputCompileAsLib/Release/vc80.idb b/videoInputSrcAndDemos/VC2005-videoInputCompileAsLib/Release/vc80.idb deleted file mode 100755 index 430c122..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputCompileAsLib/Release/vc80.idb and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputCompileAsLib/Release/vc80.pdb b/videoInputSrcAndDemos/VC2005-videoInputCompileAsLib/Release/vc80.pdb deleted file mode 100755 index a2b83c1..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputCompileAsLib/Release/vc80.pdb and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputCompileAsLib/Release/videoInput.obj b/videoInputSrcAndDemos/VC2005-videoInputCompileAsLib/Release/videoInput.obj deleted file mode 100755 index e91b971..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputCompileAsLib/Release/videoInput.obj and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputCompileAsLib/videoInput.suo b/videoInputSrcAndDemos/VC2005-videoInputCompileAsLib/videoInput.suo deleted file mode 100755 index 606b878..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputCompileAsLib/videoInput.suo and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputCompileAsLib/videoInput.vcproj b/videoInputSrcAndDemos/VC2005-videoInputCompileAsLib/videoInput.vcproj deleted file mode 100755 index c196041..0000000 --- a/videoInputSrcAndDemos/VC2005-videoInputCompileAsLib/videoInput.vcproj +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Debug/BuildLog.htm b/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Debug/BuildLog.htm deleted file mode 100755 index 080c2bf..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Debug/BuildLog.htm and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Debug/imageTexture.obj b/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Debug/imageTexture.obj deleted file mode 100755 index 54a178f..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Debug/imageTexture.obj and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Debug/mt.dep b/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Debug/mt.dep deleted file mode 100755 index d0fa29a..0000000 --- a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Debug/mt.dep +++ /dev/null @@ -1 +0,0 @@ -Manifest resource last updated at 18:05:59.34 on Mon 02/02/2009 diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Debug/simpleApp.obj b/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Debug/simpleApp.obj deleted file mode 100755 index e89339f..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Debug/simpleApp.obj and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Debug/stdafx.obj b/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Debug/stdafx.obj deleted file mode 100755 index c0a9be0..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Debug/stdafx.obj and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Debug/triangleApp.obj b/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Debug/triangleApp.obj deleted file mode 100755 index 230b478..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Debug/triangleApp.obj and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Debug/vc80.idb b/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Debug/vc80.idb deleted file mode 100755 index 139c971..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Debug/vc80.idb and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Debug/vc80.pdb b/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Debug/vc80.pdb deleted file mode 100755 index 6715792..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Debug/vc80.pdb and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Debug/videoInputBasicDemo.exe.embed.manifest b/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Debug/videoInputBasicDemo.exe.embed.manifest deleted file mode 100755 index 3d9330a..0000000 --- a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Debug/videoInputBasicDemo.exe.embed.manifest +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Debug/videoInputBasicDemo.exe.embed.manifest.res b/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Debug/videoInputBasicDemo.exe.embed.manifest.res deleted file mode 100755 index 7b55d19..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Debug/videoInputBasicDemo.exe.embed.manifest.res and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Debug/videoInputBasicDemo.exe.intermediate.manifest b/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Debug/videoInputBasicDemo.exe.intermediate.manifest deleted file mode 100755 index 1b520e1..0000000 --- a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Debug/videoInputBasicDemo.exe.intermediate.manifest +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Debug/videoInputBasicDemo.ilk b/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Debug/videoInputBasicDemo.ilk deleted file mode 100755 index 876676a..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Debug/videoInputBasicDemo.ilk and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Debug/videoInputBasicDemo.obj b/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Debug/videoInputBasicDemo.obj deleted file mode 100755 index 2039bc4..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Debug/videoInputBasicDemo.obj and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Debug/videoInputBasicDemo.pdb b/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Debug/videoInputBasicDemo.pdb deleted file mode 100755 index f221741..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Debug/videoInputBasicDemo.pdb and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Release/BuildLog.htm b/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Release/BuildLog.htm deleted file mode 100755 index fcc1d0e..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Release/BuildLog.htm and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Release/imageTexture.obj b/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Release/imageTexture.obj deleted file mode 100755 index 2a6df02..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Release/imageTexture.obj and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Release/mt.dep b/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Release/mt.dep deleted file mode 100755 index 14cac39..0000000 --- a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Release/mt.dep +++ /dev/null @@ -1 +0,0 @@ -Manifest resource last updated at 18:06:05.92 on Mon 02/02/2009 diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Release/simpleApp.obj b/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Release/simpleApp.obj deleted file mode 100755 index f7ec46f..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Release/simpleApp.obj and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Release/stdafx.obj b/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Release/stdafx.obj deleted file mode 100755 index 21bae03..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Release/stdafx.obj and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Release/triangleApp.obj b/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Release/triangleApp.obj deleted file mode 100755 index c32f2c5..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Release/triangleApp.obj and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Release/vc80.idb b/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Release/vc80.idb deleted file mode 100755 index 000cdf5..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Release/vc80.idb and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Release/vc80.pdb b/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Release/vc80.pdb deleted file mode 100755 index c243c51..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Release/vc80.pdb and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Release/videoInputBasicDemo.exe.intermediate.manifest b/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Release/videoInputBasicDemo.exe.intermediate.manifest deleted file mode 100755 index e47a6b3..0000000 --- a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Release/videoInputBasicDemo.exe.intermediate.manifest +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Release/videoInputBasicDemo.obj b/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Release/videoInputBasicDemo.obj deleted file mode 100755 index fc9697d..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Release/videoInputBasicDemo.obj and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Release/videoInputBasicDemo.pdb b/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Release/videoInputBasicDemo.pdb deleted file mode 100755 index 681efc1..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/Release/videoInputBasicDemo.pdb and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/requiredLibs/dxguid.lib b/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/requiredLibs/dxguid.lib deleted file mode 100755 index 07c68bb..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/requiredLibs/dxguid.lib and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/requiredLibs/ole32.lib b/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/requiredLibs/ole32.lib deleted file mode 100755 index a9aa665..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/requiredLibs/ole32.lib and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/requiredLibs/oleaut32.lib b/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/requiredLibs/oleaut32.lib deleted file mode 100755 index d33a426..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/requiredLibs/oleaut32.lib and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/requiredLibs/quartz.lib b/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/requiredLibs/quartz.lib deleted file mode 100755 index 89901e8..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/requiredLibs/quartz.lib and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/requiredLibs/strmbasd.lib b/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/requiredLibs/strmbasd.lib deleted file mode 100755 index 515f6ca..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/requiredLibs/strmbasd.lib and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/requiredLibs/strmbase.lib b/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/requiredLibs/strmbase.lib deleted file mode 100755 index 218391a..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/requiredLibs/strmbase.lib and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/requiredLibs/strmiids.lib b/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/requiredLibs/strmiids.lib deleted file mode 100755 index bd8725d..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/requiredLibs/strmiids.lib and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/requiredLibs/uuid.lib b/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/requiredLibs/uuid.lib deleted file mode 100755 index 22d0437..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/requiredLibs/uuid.lib and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/requiredLibs/videoInput.lib b/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/requiredLibs/videoInput.lib deleted file mode 100755 index 15ca9cf..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/requiredLibs/videoInput.lib and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/requiredLibs/videoInputDebug.lib b/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/requiredLibs/videoInputDebug.lib deleted file mode 100755 index 1ce3e75..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/requiredLibs/videoInputDebug.lib and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/src/imageTexture.cpp b/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/src/imageTexture.cpp deleted file mode 100755 index f1dc9bb..0000000 --- a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/src/imageTexture.cpp +++ /dev/null @@ -1,120 +0,0 @@ - -#include "imageTexture.h" - - - -imageTexture::imageTexture(int w, int h, int internalGlDataType){ - - tex_w = w; - tex_h = h; - - tex_u = 1.0f; - tex_t = 1.0f; - - // if w, h are not powers of 2 you will not see anything. - // create the named texture: - - myTex = new GLuint[1]; - //glPixelStorei(GL_UNPACK_ALIGNMENT, 1); // not necessary, I think - glGenTextures(1, myTex); // could be more then one, but for now, just one - - glEnable(GL_TEXTURE_2D); - - glBindTexture(GL_TEXTURE_2D, myTex[0]); - glTexImage2D(GL_TEXTURE_2D, 0, internalGlDataType, tex_w, tex_h, 0, GL_LUMINANCE, GL_UNSIGNED_BYTE, 0); // init to black... - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); - - glDisable(GL_TEXTURE_2D); - - -} - - - - -void imageTexture::loadImageData(unsigned char * data, int w, int h, int glDataType){ - - if ( w > tex_w || h > tex_h) { - printf("image data too big - bailing \n"); - return; - } - - - //compute new tex co-ords based on the ratio of data's w, h to texture w,h; - - tex_t = (float)w / (float)tex_w; - tex_u = (float)h / (float)tex_h; - - // update the texture image: - - glEnable(GL_TEXTURE_2D); - - glBindTexture(GL_TEXTURE_2D, myTex[0]); - glTexSubImage2D(GL_TEXTURE_2D,0,0,0,w,h,glDataType,GL_UNSIGNED_BYTE,data); - - glDisable(GL_TEXTURE_2D); -} - -//================================================================================= -void imageTexture::renderTexture(int x, int y, int w, int h){ - - - glEnable(GL_TEXTURE_2D); - - // bind the texture - glBindTexture( GL_TEXTURE_2D, myTex[0] ); - - float px0 = x ; // up to you to get the aspect ratio right - float py0 = y ; - float px1 = x+w; - float py1 = y+h; - - glBegin( GL_QUADS ); - glTexCoord2f(0.0,0.0); glVertex3f(px0, py0,0); - glTexCoord2f(tex_t,0.0); glVertex3f(px1, py0,0); - glTexCoord2f(tex_t,tex_u); glVertex3f(px1, py1,0); - glTexCoord2f(0.0,tex_u); glVertex3f(px0, py1,0); - glEnd(); - - glDisable(GL_TEXTURE_2D); - -} - -//================================================================================= -void imageTexture::renderTextureWithBox(int x, int y, int w, int h, float r, float g, float b, int border){ - - - - // bind the texture - - float px0 = x ; // up to you to get the aspect ratio right - float py0 = y ; - float px1 = x+w; - float py1 = y+h; - - glColor3f(r,g,b); - glBegin( GL_QUADS ); - glVertex3f(px0-border, py0-border,0); - glVertex3f(px1+border, py0-border,0); - glVertex3f(px1+border, py1+border,0); - glVertex3f(px0-border, py1+border,0); - glEnd(); - - glEnable(GL_TEXTURE_2D); - glBindTexture( GL_TEXTURE_2D, myTex[0] ); - - glBegin( GL_QUADS ); - glTexCoord2f(0.0,0.0); glVertex3f(px0, py0,0); - glTexCoord2f(tex_t,0.0); glVertex3f(px1, py0,0); - glTexCoord2f(tex_t,tex_u); glVertex3f(px1, py1,0); - glTexCoord2f(0.0,tex_u); glVertex3f(px0, py1,0); - glEnd(); - - glDisable(GL_TEXTURE_2D); - -} - diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/src/imageTexture.h b/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/src/imageTexture.h deleted file mode 100755 index 94c3126..0000000 --- a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/src/imageTexture.h +++ /dev/null @@ -1,31 +0,0 @@ -#ifndef _IMAGE_TEXTURE_H_ -#define _IMAGE_TEXTURE_H_ - -#include "glfw.h" //gl shit -#include - - -class imageTexture { - - - public : - - imageTexture(int w, int h, int internalGlDataType); - // if w, h are not powers of 2 you will not see anything. - - void loadImageData(unsigned char * data, int w, int h, int glDataType); - // w,h here MUST be <= initial w,h - - void renderTexture(int x, int y, int w, int h); - - void renderTextureWithBox(int x, int y, int w, int h, float r, float g, float b, int border); - - float tex_t, tex_u; - - private: - int tex_w, tex_h; - GLuint * myTex; - -}; - -#endif diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/src/stdafx.h b/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/src/stdafx.h deleted file mode 100755 index 930e7cf..0000000 --- a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/src/stdafx.h +++ /dev/null @@ -1,19 +0,0 @@ -// stdafx.h : include file for standard system include files, -// or project specific include files that are used frequently, but -// are changed infrequently -// - -#pragma once - - -#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers -#include -#include -#include "videoInput.h" - -#include -#include "glfw.h" -#include "triangleApp.h" -#include "windows.h" - -// TODO: reference additional headers your program requires here diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/src/triangleApp.cpp b/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/src/triangleApp.cpp deleted file mode 100755 index a9c4781..0000000 --- a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/src/triangleApp.cpp +++ /dev/null @@ -1,124 +0,0 @@ -#include "triangleApp.h" - -//The first device we want to open -int dev = 0; - - -//empty constructor -triangleApp::triangleApp(){ - -} - -void triangleApp::init(){ - - //optional static function to list devices - //for silent listDevices use listDevices(true); - int numDevices = videoInput::listDevices(); - - //uncomment for silent setup - //videoInput::setVerbose(false); - - //we allocate our openGL texture objects - //we give them a ma size of 2048 by 2048 pixels - IT = new imageTexture(2048,2048, GL_RGB); - IT2 = new imageTexture(2048,2048, GL_RGB); - - //by default we use a callback method - //this updates whenever a new frame - //arrives if you are only ocassionally grabbing frames - //you might want to set this to false as the callback caches the last - //frame for performance reasons. - VI.setUseCallback(true); - - //try and setup device with id 0 and id 1 - //if only one device is found the second - //setupDevice should return false - - //if you want to capture at a different frame rate (default is 30) - //specify it here, you are not guaranteed to get this fps though. - // VI.setIdealFramerate(dev, 60); - - //we can specifiy the dimensions we want to capture at - //if those sizes are not possible VI will look for the next nearest matching size - VI.setupDevice(dev, 320, 240, VI_COMPOSITE); - VI.setupDevice(dev+1, 640, 480, VI_COMPOSITE); - - //once the device is setup you can try and - //set the format - this is useful if your device - //doesn't remember what format you set it to - //VI.setFormat(dev, VI_NTSC_M); //optional set the format - - //we allocate our buffer based on the number - //of pixels in each frame - this will be width * height * 3 - frame = new unsigned char[VI.getSize(dev)]; -} - -void triangleApp::idle(){ - - //check to see if we have got a new frame - if( VI.isFrameNew(dev) ) - { - //we get the pixels by passing in out buffer which gets filled - VI.getPixels(dev,frame, true); - - //we then load them into our texture - IT->loadImageData(frame, VI.getWidth(dev), VI.getHeight(dev),GL_RGB); - } - - //check to see if we have got a new frame - if( VI.isFrameNew(dev+1) ) - { - //here we are directly return the pixels into our texture - //use VI.getWidth getHeight etc so that you don't get a crash - IT2->loadImageData(VI.getPixels(dev+1, true), VI.getWidth(dev+1), VI.getHeight(dev+1), GL_RGB); - } -} - - -void triangleApp::draw(){ - - setupScreen(); - IT->renderTexture(0, 0, VI.getWidth(dev), VI.getHeight(dev)); - IT2->renderTexture(VI.getWidth(dev), 0, VI.getWidth(dev+1), VI.getHeight(dev+1)); -} - -void triangleApp::keyDown (char c){ - - //some options hooked up to key commands - if(c=='S')VI.showSettingsWindow(dev); - if(c=='D')VI.showSettingsWindow(dev+1); - - if(c=='R')VI.restartDevice(dev); - if(c=='T')VI.restartDevice(dev+1); - - if(c == '1')VI.setVideoSettingCameraPct(0, VI.propExposure, 0.1, 2); - if(c == '2')VI.setVideoSettingCameraPct(0, VI.propExposure, 0.9, 2); - - if(c == '5')VI.setVideoSettingFilterPct(0, VI.propWhiteBalance, 0.12, 2); - if(c == '6')VI.setVideoSettingFilterPct(0, VI.propWhiteBalance, 0.88, 2); - - if(c=='Q') - { - VI.stopDevice(dev); - VI.stopDevice(dev+1); - } -} - -void triangleApp::mouseMove( float x, float y ){ - - -} - -void triangleApp::mouseDrag( float x, float y ){ - -} - -void triangleApp::mouseDown( float x, float y, int button ){ - -} - -void triangleApp::mouseUp ( float x, float y, int button ){ - -} - - diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/src/triangleApp.h b/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/src/triangleApp.h deleted file mode 100755 index 22a7855..0000000 --- a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/src/triangleApp.h +++ /dev/null @@ -1,33 +0,0 @@ -#ifndef _TRIANGLE_APP - -#include -#include "glfw.h" -#include "simpleApp.h" -#include "imageTexture.h" -#include "videoInput.h" - - -class triangleApp : public simpleApp{ - - public: - triangleApp(); - virtual void idle(); - virtual void init(); - virtual void draw(); - virtual void keyDown (char c); - virtual void mouseMove( float x, float y ); - virtual void mouseDrag( float x, float y ); - virtual void mouseDown( float x, float y, int button ); - virtual void mouseUp ( float x, float y, int button ); - - - imageTexture * IT; - imageTexture * IT2; - videoInput VI; - - unsigned char * frame; - unsigned char * frame2; - -}; - -#endif // _triangle_APP \ No newline at end of file diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/src/videoInputBasicDemo.cpp b/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/src/videoInputBasicDemo.cpp deleted file mode 100755 index f6fea06..0000000 --- a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/src/videoInputBasicDemo.cpp +++ /dev/null @@ -1,109 +0,0 @@ -// videoInputBasicDemo.cpp : Defines the entry point for the console application. -// - -#include "stdafx.h" - - -triangleApp TAPP; - - -void GLFWCALL keyfun( int key, int action ) -{ - if( action != GLFW_PRESS ) - { - return; - } - - switch( key ) - { - case GLFW_KEY_ESC: - printf( "ESC => quit program\n" ); - break; - - } - - TAPP.keyDown(key); - - fflush( stdout ); -} - - - - - - - -int main( void ) -{ - - - int width, height, running, frames, x, y; - double t, t0, fps; - char titlestr[ 200 ]; - - - // Initialise GLFW - glfwInit(); - - // Open OpenGL window - if (!glfwOpenWindow(1024,768, // Open window - 24, 24, 24, // Red, green, and blue bits for color buffer - 24, // Bits for alpha buffer - 24, // Bits for depth buffer (Z-buffer) - 24, // Bits for stencil buffer - GLFW_WINDOW)){ - glfwTerminate(); - return 0; - } - - glfwSetKeyCallback( keyfun ); - TAPP.init(); - glfwEnable( GLFW_STICKY_KEYS ); - // Disable vertical sync (on cards that support it) - glfwSwapInterval( 1 ); - - // Main loop - running = GL_TRUE; - frames = 0; - t0 = glfwGetTime(); - while( running ){ - - // Get time and mouse position - t = glfwGetTime(); - glfwGetMousePos( &x, &y ); - - // Calculate and display FPS (frames per second) - if( (t-t0) > 1.0 || frames == 0 ) - { - fps = (double)frames / (t-t0); - sprintf( titlestr, "videoInput Demo App (%.1f FPS)", fps ); - glfwSetWindowTitle( titlestr ); - t0 = t; - frames = 0; - } - frames ++; - TAPP.idle(); - - - // Get window size (may be different than the requested size) - glfwGetWindowSize( &width, &height ); - height = height > 0 ? height : 1; - // Set viewport - glViewport( 0, 0, width, height ); - // Clear color buffer - glClearColor( 0.0f, 0.0f, 0.0f, 0.0f ); - glClear( GL_COLOR_BUFFER_BIT ); - - TAPP.draw(); - // Swap buffers - glfwSwapBuffers(); - - // Check if the ESC key was pressed or the window was closed - running = !glfwGetKey( GLFW_KEY_ESC ) && - glfwGetWindowParam( GLFW_OPENED ); - } - - // Close OpenGL window and terminate GLFW - glfwTerminate(); - return 0; -} diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/videoInputBasicDemo.suo b/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/videoInputBasicDemo.suo deleted file mode 100755 index fb864e6..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/videoInputBasicDemo.suo and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/videoInputBasicDemo.vcproj b/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/videoInputBasicDemo.vcproj deleted file mode 100755 index b0ca190..0000000 --- a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/videoInputBasicDemo.vcproj +++ /dev/null @@ -1,288 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Debug/BuildLog.htm b/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Debug/BuildLog.htm deleted file mode 100755 index 7d90343..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Debug/BuildLog.htm and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Debug/imageTexture.obj b/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Debug/imageTexture.obj deleted file mode 100755 index 46f0dfd..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Debug/imageTexture.obj and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Debug/mt.dep b/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Debug/mt.dep deleted file mode 100755 index 7f67211..0000000 --- a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Debug/mt.dep +++ /dev/null @@ -1 +0,0 @@ -Manifest resource last updated at 18:04:36.14 on Mon 02/02/2009 diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Debug/simpleApp.obj b/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Debug/simpleApp.obj deleted file mode 100755 index 13c4afc..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Debug/simpleApp.obj and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Debug/stdafx.obj b/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Debug/stdafx.obj deleted file mode 100755 index 9413bb3..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Debug/stdafx.obj and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Debug/triangleApp.obj b/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Debug/triangleApp.obj deleted file mode 100755 index 0ed4126..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Debug/triangleApp.obj and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Debug/vc80.idb b/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Debug/vc80.idb deleted file mode 100755 index a8306ed..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Debug/vc80.idb and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Debug/vc80.pdb b/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Debug/vc80.pdb deleted file mode 100755 index 3a141b1..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Debug/vc80.pdb and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Debug/videoInput.obj b/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Debug/videoInput.obj deleted file mode 100755 index 94aac7f..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Debug/videoInput.obj and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Debug/videoInputBasicDemo.exe.embed.manifest b/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Debug/videoInputBasicDemo.exe.embed.manifest deleted file mode 100755 index 3d9330a..0000000 --- a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Debug/videoInputBasicDemo.exe.embed.manifest +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Debug/videoInputBasicDemo.exe.embed.manifest.res b/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Debug/videoInputBasicDemo.exe.embed.manifest.res deleted file mode 100755 index 7b55d19..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Debug/videoInputBasicDemo.exe.embed.manifest.res and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Debug/videoInputBasicDemo.exe.intermediate.manifest b/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Debug/videoInputBasicDemo.exe.intermediate.manifest deleted file mode 100755 index 1b520e1..0000000 --- a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Debug/videoInputBasicDemo.exe.intermediate.manifest +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Debug/videoInputBasicDemo.ilk b/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Debug/videoInputBasicDemo.ilk deleted file mode 100755 index 720236c..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Debug/videoInputBasicDemo.ilk and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Debug/videoInputBasicDemo.obj b/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Debug/videoInputBasicDemo.obj deleted file mode 100755 index fd3b748..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Debug/videoInputBasicDemo.obj and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Debug/videoInputBasicDemo.pdb b/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Debug/videoInputBasicDemo.pdb deleted file mode 100755 index cb77b6a..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Debug/videoInputBasicDemo.pdb and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Release/BuildLog.htm b/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Release/BuildLog.htm deleted file mode 100755 index 9a1daef..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Release/BuildLog.htm and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Release/imageTexture.obj b/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Release/imageTexture.obj deleted file mode 100755 index 78c450c..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Release/imageTexture.obj and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Release/mt.dep b/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Release/mt.dep deleted file mode 100755 index 274c12d..0000000 --- a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Release/mt.dep +++ /dev/null @@ -1 +0,0 @@ -Manifest resource last updated at 18:04:44.84 on Mon 02/02/2009 diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Release/simpleApp.obj b/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Release/simpleApp.obj deleted file mode 100755 index be7b7af..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Release/simpleApp.obj and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Release/stdafx.obj b/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Release/stdafx.obj deleted file mode 100755 index 78ebb4f..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Release/stdafx.obj and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Release/triangleApp.obj b/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Release/triangleApp.obj deleted file mode 100755 index 3850f97..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Release/triangleApp.obj and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Release/vc80.idb b/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Release/vc80.idb deleted file mode 100755 index dd8a1e1..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Release/vc80.idb and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Release/vc80.pdb b/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Release/vc80.pdb deleted file mode 100755 index 0daeb48..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Release/vc80.pdb and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Release/videoInput.obj b/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Release/videoInput.obj deleted file mode 100755 index ac1a338..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Release/videoInput.obj and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Release/videoInputBasicDemo.exe.intermediate.manifest b/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Release/videoInputBasicDemo.exe.intermediate.manifest deleted file mode 100755 index 475de47..0000000 --- a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Release/videoInputBasicDemo.exe.intermediate.manifest +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Release/videoInputBasicDemo.obj b/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Release/videoInputBasicDemo.obj deleted file mode 100755 index 1d838d0..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Release/videoInputBasicDemo.obj and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Release/videoInputBasicDemo.pdb b/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Release/videoInputBasicDemo.pdb deleted file mode 100755 index ad93137..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/Release/videoInputBasicDemo.pdb and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/requiredLibs/GlAux.Lib b/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/requiredLibs/GlAux.Lib deleted file mode 100755 index 2470670..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/requiredLibs/GlAux.Lib and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/requiredLibs/GlU32.Lib b/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/requiredLibs/GlU32.Lib deleted file mode 100755 index 298f6c7..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/requiredLibs/GlU32.Lib and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/requiredLibs/OpenGL32.Lib b/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/requiredLibs/OpenGL32.Lib deleted file mode 100755 index ba089e8..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/requiredLibs/OpenGL32.Lib and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/requiredLibs/dxguid.lib b/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/requiredLibs/dxguid.lib deleted file mode 100755 index 07c68bb..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/requiredLibs/dxguid.lib and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/requiredLibs/glfw.lib b/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/requiredLibs/glfw.lib deleted file mode 100755 index 58985bc..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/requiredLibs/glfw.lib and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/requiredLibs/ole32.lib b/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/requiredLibs/ole32.lib deleted file mode 100755 index a9aa665..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/requiredLibs/ole32.lib and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/requiredLibs/oleaut32.lib b/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/requiredLibs/oleaut32.lib deleted file mode 100755 index d33a426..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/requiredLibs/oleaut32.lib and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/requiredLibs/quartz.lib b/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/requiredLibs/quartz.lib deleted file mode 100755 index 89901e8..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/requiredLibs/quartz.lib and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/requiredLibs/strmbasd.lib b/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/requiredLibs/strmbasd.lib deleted file mode 100755 index 515f6ca..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/requiredLibs/strmbasd.lib and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/requiredLibs/strmbase.lib b/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/requiredLibs/strmbase.lib deleted file mode 100755 index 218391a..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/requiredLibs/strmbase.lib and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/requiredLibs/strmiids.lib b/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/requiredLibs/strmiids.lib deleted file mode 100755 index bd8725d..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/requiredLibs/strmiids.lib and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/requiredLibs/uuid.lib b/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/requiredLibs/uuid.lib deleted file mode 100755 index 22d0437..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/requiredLibs/uuid.lib and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/src/glfw.h b/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/src/glfw.h deleted file mode 100755 index ee4bbff..0000000 --- a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/src/glfw.h +++ /dev/null @@ -1,465 +0,0 @@ -//======================================================================== -// GLFW - An OpenGL framework -// File: glfw.h -// API version: 2.4 -// Author: Marcus Geelnard (marcus.geelnard at home.se) -// WWW: http://glfw.sourceforge.net -//------------------------------------------------------------------------ -// Copyright (c) 2002-2004 Marcus Geelnard -// -// This software is provided 'as-is', without any express or implied -// warranty. In no event will the authors be held liable for any damages -// arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose, -// including commercial applications, and to alter it and redistribute it -// freely, subject to the following restrictions: -// -// 1. The origin of this software must not be misrepresented; you must not -// claim that you wrote the original software. If you use this software -// in a product, an acknowledgment in the product documentation would -// be appreciated but is not required. -// -// 2. Altered source versions must be plainly marked as such, and must not -// be misrepresented as being the original software. -// -// 3. This notice may not be removed or altered from any source -// distribution. -// -// Marcus Geelnard -// marcus.geelnard at home.se -//------------------------------------------------------------------------ -// $Id: glfw.h,v 1.7 2004/02/14 20:42:00 marcus256 Exp $ -//======================================================================== - -#ifndef __glfw_h_ -#define __glfw_h_ - -#ifdef __cplusplus -extern "C" { -#endif - - -//======================================================================== -// Global definitions -//======================================================================== - -// We need a NULL pointer from time to time -#ifndef NULL - #ifdef __cplusplus - #define NULL 0 - #else - #define NULL ((void *)0) - #endif -#endif // NULL - - -// ------------------- BEGIN SYSTEM/COMPILER SPECIFIC -------------------- - -// Please report any probles that you find with your compiler, which may -// be solved in this section! There are several compilers that I have not -// been able to test this file with yet. - -// First: If we are we on Windows, we want a single define for it (_WIN32) -// (Note: For Cygwin the compiler flag -mwin32 should be used, but to -// make sure that things run smoothly for Cygwin users, we add __CYGWIN__ -// to the list of "valid Win32 identifiers", which removes the need for -// -mwin32) -#if !defined(_WIN32) && (defined(__WIN32__) || defined(WIN32) || defined(__CYGWIN__)) - #define _WIN32 -#endif // _WIN32 - -// In order for extension support to be portable, we need to define an -// OpenGL function call method. We use the keyword APIENTRY, which is -// defined for Win32. (Note: Windows also needs this for ) -#ifndef APIENTRY - #ifdef _WIN32 - #define APIENTRY __stdcall - #else - #define APIENTRY - #endif - #define GL_APIENTRY_DEFINED -#endif // APIENTRY - - -// The following three defines are here solely to make some Windows-based -// files happy. Theoretically we could include , but -// it has the major drawback of severely polluting our namespace. - -// Under Windows, we need WINGDIAPI defined -#if !defined(WINGDIAPI) && defined(_WIN32) - #if defined(_MSC_VER) || defined(__BORLANDC__) - // Microsoft Visual C++ & Borland C++ Builder - #define WINGDIAPI __declspec(dllimport) - #elif defined(__LCC__) - // LCC-Win32 - #define WINGDIAPI __stdcall - #else - // Others (e.g. MinGW, Cygwin) - #define WINGDIAPI extern - #endif - #define GL_WINGDIAPI_DEFINED -#endif // WINGDIAPI - -// Some files also need CALLBACK defined -#if !defined(CALLBACK) && defined(_WIN32) - #if defined(_MSC_VER) - // Microsoft Visual C++ - #if (defined(_M_MRX000) || defined(_M_IX86) || defined(_M_ALPHA) || defined(_M_PPC)) && !defined(MIDL_PASS) - #define CALLBACK __stdcall - #else - #define CALLBACK - #endif - #else - // Other Windows compilers - #define CALLBACK __stdcall - #endif - #define GLU_CALLBACK_DEFINED -#endif // CALLBACK - -// Microsoft Visual C++ & Borland C++ needs wchar_t -#if defined(_WIN32) && (defined(_MSC_VER) || defined(__BORLANDC__)) && !defined(_WCHAR_T_DEFINED) - typedef unsigned short wchar_t; - #define _WCHAR_T_DEFINED -#endif // _WCHAR_T_DEFINED - - -// ---------------- GLFW related system specific defines ----------------- - -#if defined(_WIN32) && defined(GLFW_BUILD_DLL) - - // We are building a Win32 DLL - #define GLFWAPI __declspec(dllexport) - #define GLFWAPIENTRY __stdcall - #define GLFWCALL __stdcall - -#elif defined(_WIN32) && defined(GLFW_DLL) - - // We are calling a Win32 DLL - #if defined(__LCC__) - #define GLFWAPI extern - #else - #define GLFWAPI __declspec(dllimport) - #endif - #define GLFWAPIENTRY __stdcall - #define GLFWCALL __stdcall - -#else - - // We are either building/calling a static lib or we are non-win32 - #define GLFWAPIENTRY - #define GLFWAPI - #define GLFWCALL - -#endif - -// -------------------- END SYSTEM/COMPILER SPECIFIC --------------------- - -// Include standard OpenGL headers: GLFW uses GL_FALSE/GL_TRUE, and it is -// convenient for the user to only have to include . This also -// solves the problem with Windows and needing some -// special defines which normally requires the user to include -// (which is not a nice solution for portable programs). -#if defined(__APPLE_CC__) - #include - #include -#else - #include - #include -#endif - - -//======================================================================== -// GLFW version -//======================================================================== - -#define GLFW_VERSION_MAJOR 2 -#define GLFW_VERSION_MINOR 4 -#define GLFW_VERSION_REVISION 2 - - -//======================================================================== -// Input handling definitions -//======================================================================== - -// Key and button state/action definitions -#define GLFW_RELEASE 0 -#define GLFW_PRESS 1 - -// Keyboard key definitions: 8-bit ISO-8859-1 (Latin 1) encoding is used -// for printable keys (such as A-Z, 0-9 etc), and values above 256 -// represent special (non-printable) keys (e.g. F1, Page Up etc). -#define GLFW_KEY_UNKNOWN -1 -#define GLFW_KEY_SPACE 32 -#define GLFW_KEY_SPECIAL 256 -#define GLFW_KEY_ESC (GLFW_KEY_SPECIAL+1) -#define GLFW_KEY_F1 (GLFW_KEY_SPECIAL+2) -#define GLFW_KEY_F2 (GLFW_KEY_SPECIAL+3) -#define GLFW_KEY_F3 (GLFW_KEY_SPECIAL+4) -#define GLFW_KEY_F4 (GLFW_KEY_SPECIAL+5) -#define GLFW_KEY_F5 (GLFW_KEY_SPECIAL+6) -#define GLFW_KEY_F6 (GLFW_KEY_SPECIAL+7) -#define GLFW_KEY_F7 (GLFW_KEY_SPECIAL+8) -#define GLFW_KEY_F8 (GLFW_KEY_SPECIAL+9) -#define GLFW_KEY_F9 (GLFW_KEY_SPECIAL+10) -#define GLFW_KEY_F10 (GLFW_KEY_SPECIAL+11) -#define GLFW_KEY_F11 (GLFW_KEY_SPECIAL+12) -#define GLFW_KEY_F12 (GLFW_KEY_SPECIAL+13) -#define GLFW_KEY_F13 (GLFW_KEY_SPECIAL+14) -#define GLFW_KEY_F14 (GLFW_KEY_SPECIAL+15) -#define GLFW_KEY_F15 (GLFW_KEY_SPECIAL+16) -#define GLFW_KEY_F16 (GLFW_KEY_SPECIAL+17) -#define GLFW_KEY_F17 (GLFW_KEY_SPECIAL+18) -#define GLFW_KEY_F18 (GLFW_KEY_SPECIAL+19) -#define GLFW_KEY_F19 (GLFW_KEY_SPECIAL+20) -#define GLFW_KEY_F20 (GLFW_KEY_SPECIAL+21) -#define GLFW_KEY_F21 (GLFW_KEY_SPECIAL+22) -#define GLFW_KEY_F22 (GLFW_KEY_SPECIAL+23) -#define GLFW_KEY_F23 (GLFW_KEY_SPECIAL+24) -#define GLFW_KEY_F24 (GLFW_KEY_SPECIAL+25) -#define GLFW_KEY_F25 (GLFW_KEY_SPECIAL+26) -#define GLFW_KEY_UP (GLFW_KEY_SPECIAL+27) -#define GLFW_KEY_DOWN (GLFW_KEY_SPECIAL+28) -#define GLFW_KEY_LEFT (GLFW_KEY_SPECIAL+29) -#define GLFW_KEY_RIGHT (GLFW_KEY_SPECIAL+30) -#define GLFW_KEY_LSHIFT (GLFW_KEY_SPECIAL+31) -#define GLFW_KEY_RSHIFT (GLFW_KEY_SPECIAL+32) -#define GLFW_KEY_LCTRL (GLFW_KEY_SPECIAL+33) -#define GLFW_KEY_RCTRL (GLFW_KEY_SPECIAL+34) -#define GLFW_KEY_LALT (GLFW_KEY_SPECIAL+35) -#define GLFW_KEY_RALT (GLFW_KEY_SPECIAL+36) -#define GLFW_KEY_TAB (GLFW_KEY_SPECIAL+37) -#define GLFW_KEY_ENTER (GLFW_KEY_SPECIAL+38) -#define GLFW_KEY_BACKSPACE (GLFW_KEY_SPECIAL+39) -#define GLFW_KEY_INSERT (GLFW_KEY_SPECIAL+40) -#define GLFW_KEY_DEL (GLFW_KEY_SPECIAL+41) -#define GLFW_KEY_PAGEUP (GLFW_KEY_SPECIAL+42) -#define GLFW_KEY_PAGEDOWN (GLFW_KEY_SPECIAL+43) -#define GLFW_KEY_HOME (GLFW_KEY_SPECIAL+44) -#define GLFW_KEY_END (GLFW_KEY_SPECIAL+45) -#define GLFW_KEY_KP_0 (GLFW_KEY_SPECIAL+46) -#define GLFW_KEY_KP_1 (GLFW_KEY_SPECIAL+47) -#define GLFW_KEY_KP_2 (GLFW_KEY_SPECIAL+48) -#define GLFW_KEY_KP_3 (GLFW_KEY_SPECIAL+49) -#define GLFW_KEY_KP_4 (GLFW_KEY_SPECIAL+50) -#define GLFW_KEY_KP_5 (GLFW_KEY_SPECIAL+51) -#define GLFW_KEY_KP_6 (GLFW_KEY_SPECIAL+52) -#define GLFW_KEY_KP_7 (GLFW_KEY_SPECIAL+53) -#define GLFW_KEY_KP_8 (GLFW_KEY_SPECIAL+54) -#define GLFW_KEY_KP_9 (GLFW_KEY_SPECIAL+55) -#define GLFW_KEY_KP_DIVIDE (GLFW_KEY_SPECIAL+56) -#define GLFW_KEY_KP_MULTIPLY (GLFW_KEY_SPECIAL+57) -#define GLFW_KEY_KP_SUBTRACT (GLFW_KEY_SPECIAL+58) -#define GLFW_KEY_KP_ADD (GLFW_KEY_SPECIAL+59) -#define GLFW_KEY_KP_DECIMAL (GLFW_KEY_SPECIAL+60) -#define GLFW_KEY_KP_EQUAL (GLFW_KEY_SPECIAL+61) -#define GLFW_KEY_KP_ENTER (GLFW_KEY_SPECIAL+62) -#define GLFW_KEY_LAST GLFW_KEY_KP_ENTER - -// Mouse button definitions -#define GLFW_MOUSE_BUTTON_LEFT 0 -#define GLFW_MOUSE_BUTTON_RIGHT 1 -#define GLFW_MOUSE_BUTTON_MIDDLE 2 -#define GLFW_MOUSE_BUTTON_LAST GLFW_MOUSE_BUTTON_MIDDLE - -// Joystick identifiers -#define GLFW_JOYSTICK_1 0 -#define GLFW_JOYSTICK_2 1 -#define GLFW_JOYSTICK_3 2 -#define GLFW_JOYSTICK_4 3 -#define GLFW_JOYSTICK_5 4 -#define GLFW_JOYSTICK_6 5 -#define GLFW_JOYSTICK_7 6 -#define GLFW_JOYSTICK_8 7 -#define GLFW_JOYSTICK_9 8 -#define GLFW_JOYSTICK_10 9 -#define GLFW_JOYSTICK_11 10 -#define GLFW_JOYSTICK_12 11 -#define GLFW_JOYSTICK_13 12 -#define GLFW_JOYSTICK_14 13 -#define GLFW_JOYSTICK_15 14 -#define GLFW_JOYSTICK_16 15 -#define GLFW_JOYSTICK_LAST GLFW_JOYSTICK_16 - - -//======================================================================== -// Other definitions -//======================================================================== - -// glfwOpenWindow modes -#define GLFW_WINDOW 0x00010001 -#define GLFW_FULLSCREEN 0x00010002 - -// glfwGetWindowParam tokens -#define GLFW_OPENED 0x00020001 -#define GLFW_ACTIVE 0x00020002 -#define GLFW_ICONIFIED 0x00020003 -#define GLFW_ACCELERATED 0x00020004 -#define GLFW_RED_BITS 0x00020005 -#define GLFW_GREEN_BITS 0x00020006 -#define GLFW_BLUE_BITS 0x00020007 -#define GLFW_ALPHA_BITS 0x00020008 -#define GLFW_DEPTH_BITS 0x00020009 -#define GLFW_STENCIL_BITS 0x0002000A - -// The following constants are used for both glfwGetWindowParam -// and glfwOpenWindowHint -#define GLFW_REFRESH_RATE 0x0002000B -#define GLFW_ACCUM_RED_BITS 0x0002000C -#define GLFW_ACCUM_GREEN_BITS 0x0002000D -#define GLFW_ACCUM_BLUE_BITS 0x0002000E -#define GLFW_ACCUM_ALPHA_BITS 0x0002000F -#define GLFW_AUX_BUFFERS 0x00020010 -#define GLFW_STEREO 0x00020011 - -// glfwEnable/glfwDisable tokens -#define GLFW_MOUSE_CURSOR 0x00030001 -#define GLFW_STICKY_KEYS 0x00030002 -#define GLFW_STICKY_MOUSE_BUTTONS 0x00030003 -#define GLFW_SYSTEM_KEYS 0x00030004 -#define GLFW_KEY_REPEAT 0x00030005 -#define GLFW_AUTO_POLL_EVENTS 0x00030006 - -// glfwWaitThread wait modes -#define GLFW_WAIT 0x00040001 -#define GLFW_NOWAIT 0x00040002 - -// glfwGetJoystickParam tokens -#define GLFW_PRESENT 0x00050001 -#define GLFW_AXES 0x00050002 -#define GLFW_BUTTONS 0x00050003 - -// glfwReadImage/glfwLoadTexture2D flags -#define GLFW_NO_RESCALE_BIT 0x00000001 // Only for glfwReadImage -#define GLFW_ORIGIN_UL_BIT 0x00000002 -#define GLFW_BUILD_MIPMAPS_BIT 0x00000004 // Only for glfwLoadTexture2D - -// Time spans longer than this (seconds) are considered to be infinity -#define GLFW_INFINITY 100000.0 - - -//======================================================================== -// Typedefs -//======================================================================== - -// The video mode structure used by glfwGetVideoModes() -typedef struct { - int Width, Height; - int RedBits, BlueBits, GreenBits; -} GLFWvidmode; - -// Image/texture information -typedef struct { - int Width, Height; - int Format; - int BytesPerPixel; - unsigned char *Data; -} GLFWimage; - -// Thread ID -typedef int GLFWthread; - -// Mutex object -typedef void * GLFWmutex; - -// Condition variable object -typedef void * GLFWcond; - -// Function pointer types -typedef void (GLFWCALL * GLFWwindowsizefun)(int,int); -typedef void (GLFWCALL * GLFWmousebuttonfun)(int,int); -typedef void (GLFWCALL * GLFWmouseposfun)(int,int); -typedef void (GLFWCALL * GLFWmousewheelfun)(int); -typedef void (GLFWCALL * GLFWkeyfun)(int,int); -typedef void (GLFWCALL * GLFWcharfun)(int,int); -typedef void (GLFWCALL * GLFWthreadfun)(void *); - - -//======================================================================== -// Prototypes -//======================================================================== - -// GLFW initialization, termination and version querying -GLFWAPI int GLFWAPIENTRY glfwInit( void ); -GLFWAPI void GLFWAPIENTRY glfwTerminate( void ); -GLFWAPI void GLFWAPIENTRY glfwGetVersion( int *major, int *minor, int *rev ); - -// Window handling -GLFWAPI int GLFWAPIENTRY glfwOpenWindow( int width, int height, int redbits, int greenbits, int bluebits, int alphabits, int depthbits, int stencilbits, int mode ); -GLFWAPI void GLFWAPIENTRY glfwOpenWindowHint( int target, int hint ); -GLFWAPI void GLFWAPIENTRY glfwCloseWindow( void ); -GLFWAPI void GLFWAPIENTRY glfwSetWindowTitle( const char *title ); -GLFWAPI void GLFWAPIENTRY glfwGetWindowSize( int *width, int *height ); -GLFWAPI void GLFWAPIENTRY glfwSetWindowSize( int width, int height ); -GLFWAPI void GLFWAPIENTRY glfwSetWindowPos( int x, int y ); -GLFWAPI void GLFWAPIENTRY glfwIconifyWindow( void ); -GLFWAPI void GLFWAPIENTRY glfwRestoreWindow( void ); -GLFWAPI void GLFWAPIENTRY glfwSwapBuffers( void ); -GLFWAPI void GLFWAPIENTRY glfwSwapInterval( int interval ); -GLFWAPI int GLFWAPIENTRY glfwGetWindowParam( int param ); -GLFWAPI void GLFWAPIENTRY glfwSetWindowSizeCallback( GLFWwindowsizefun cbfun ); - -// Video mode functions -GLFWAPI int GLFWAPIENTRY glfwGetVideoModes( GLFWvidmode *list, int maxcount ); -GLFWAPI void GLFWAPIENTRY glfwGetDesktopMode( GLFWvidmode *mode ); - -// Input handling -GLFWAPI void GLFWAPIENTRY glfwPollEvents( void ); -GLFWAPI int GLFWAPIENTRY glfwGetKey( int key ); -GLFWAPI int GLFWAPIENTRY glfwGetMouseButton( int button ); -GLFWAPI void GLFWAPIENTRY glfwGetMousePos( int *xpos, int *ypos ); -GLFWAPI void GLFWAPIENTRY glfwSetMousePos( int xpos, int ypos ); -GLFWAPI int GLFWAPIENTRY glfwGetMouseWheel( void ); -GLFWAPI void GLFWAPIENTRY glfwSetMouseWheel( int pos ); -GLFWAPI void GLFWAPIENTRY glfwSetKeyCallback( GLFWkeyfun cbfun ); -GLFWAPI void GLFWAPIENTRY glfwSetCharCallback( GLFWcharfun cbfun ); -GLFWAPI void GLFWAPIENTRY glfwSetMouseButtonCallback( GLFWmousebuttonfun cbfun ); -GLFWAPI void GLFWAPIENTRY glfwSetMousePosCallback( GLFWmouseposfun cbfun ); -GLFWAPI void GLFWAPIENTRY glfwSetMouseWheelCallback( GLFWmousewheelfun cbfun ); - -// Joystick input -GLFWAPI int GLFWAPIENTRY glfwGetJoystickParam( int joy, int param ); -GLFWAPI int GLFWAPIENTRY glfwGetJoystickPos( int joy, float *pos, int numaxes ); -GLFWAPI int GLFWAPIENTRY glfwGetJoystickButtons( int joy, unsigned char *buttons, int numbuttons ); - -// Time -GLFWAPI double GLFWAPIENTRY glfwGetTime( void ); -GLFWAPI void GLFWAPIENTRY glfwSetTime( double time ); -GLFWAPI void GLFWAPIENTRY glfwSleep( double time ); - -// Extension support -GLFWAPI int GLFWAPIENTRY glfwExtensionSupported( const char *extension ); -GLFWAPI void* GLFWAPIENTRY glfwGetProcAddress( const char *procname ); -GLFWAPI void GLFWAPIENTRY glfwGetGLVersion( int *major, int *minor, int *rev ); - -// Threading support -GLFWAPI GLFWthread GLFWAPIENTRY glfwCreateThread( GLFWthreadfun fun, void *arg ); -GLFWAPI void GLFWAPIENTRY glfwDestroyThread( GLFWthread ID ); -GLFWAPI int GLFWAPIENTRY glfwWaitThread( GLFWthread ID, int waitmode ); -GLFWAPI GLFWthread GLFWAPIENTRY glfwGetThreadID( void ); -GLFWAPI GLFWmutex GLFWAPIENTRY glfwCreateMutex( void ); -GLFWAPI void GLFWAPIENTRY glfwDestroyMutex( GLFWmutex mutex ); -GLFWAPI void GLFWAPIENTRY glfwLockMutex( GLFWmutex mutex ); -GLFWAPI void GLFWAPIENTRY glfwUnlockMutex( GLFWmutex mutex ); -GLFWAPI GLFWcond GLFWAPIENTRY glfwCreateCond( void ); -GLFWAPI void GLFWAPIENTRY glfwDestroyCond( GLFWcond cond ); -GLFWAPI void GLFWAPIENTRY glfwWaitCond( GLFWcond cond, GLFWmutex mutex, double timeout ); -GLFWAPI void GLFWAPIENTRY glfwSignalCond( GLFWcond cond ); -GLFWAPI void GLFWAPIENTRY glfwBroadcastCond( GLFWcond cond ); -GLFWAPI int GLFWAPIENTRY glfwGetNumberOfProcessors( void ); - -// Enable/disable functions -GLFWAPI void GLFWAPIENTRY glfwEnable( int token ); -GLFWAPI void GLFWAPIENTRY glfwDisable( int token ); - -// Image/texture I/O support -GLFWAPI int GLFWAPIENTRY glfwReadImage( const char *name, GLFWimage *img, int flags ); -GLFWAPI void GLFWAPIENTRY glfwFreeImage( GLFWimage *img ); -GLFWAPI int GLFWAPIENTRY glfwLoadTexture2D( const char *name, int flags ); - - -#ifdef __cplusplus -} -#endif - -#endif // __glfw_h_ diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/src/imageTexture.h b/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/src/imageTexture.h deleted file mode 100755 index 94c3126..0000000 --- a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/src/imageTexture.h +++ /dev/null @@ -1,31 +0,0 @@ -#ifndef _IMAGE_TEXTURE_H_ -#define _IMAGE_TEXTURE_H_ - -#include "glfw.h" //gl shit -#include - - -class imageTexture { - - - public : - - imageTexture(int w, int h, int internalGlDataType); - // if w, h are not powers of 2 you will not see anything. - - void loadImageData(unsigned char * data, int w, int h, int glDataType); - // w,h here MUST be <= initial w,h - - void renderTexture(int x, int y, int w, int h); - - void renderTextureWithBox(int x, int y, int w, int h, float r, float g, float b, int border); - - float tex_t, tex_u; - - private: - int tex_w, tex_h; - GLuint * myTex; - -}; - -#endif diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/src/simpleApp.cpp b/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/src/simpleApp.cpp deleted file mode 100755 index b29121e..0000000 --- a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/src/simpleApp.cpp +++ /dev/null @@ -1,86 +0,0 @@ -#include "simpleApp.h" - -simpleApp::simpleApp(){ - -} - -void simpleApp::idle(){ - -} - -void simpleApp::init(){ - -} - - -void simpleApp::draw(){ - -} - -void simpleApp::keyDown (char c){ - -} - -void simpleApp::mouseMove( float x, float y ){ - -} - -void simpleApp::mouseDrag( float x, float y ){ - -} - -void simpleApp::mouseDown( float x, float y, int button ){ - -} - -void simpleApp::mouseUp ( float x, float y, int button ){ - -} - - -void simpleApp::printYo(){ - -} - - -void simpleApp::setupScreen(){ - - int w, h; - - glfwGetWindowSize( &w, &h ); - float halfFov, theTan, screenFov, aspect; - - screenFov = 60.0f; - - float eyeX = (float)w / 2.0; - float eyeY = (float)h / 2.0; - halfFov = PI * screenFov / 360.0; - theTan = tanf(halfFov); - float dist = eyeY / theTan; - float nearDist = dist / 10.0; // near / far clip plane - float farDist = dist * 10.0; - aspect = (float)w/(float)h; - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(screenFov, aspect, nearDist, farDist); - gluLookAt(eyeX, eyeY, dist, - eyeX, eyeY, 0.0, 0.0, 1.0, 0.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - - - -} - - - - -/* - simpleApp : openFullscreen; - coordSystem; - swap(); - - -*/ - diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/src/simpleApp.h b/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/src/simpleApp.h deleted file mode 100755 index dfd389d..0000000 --- a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/src/simpleApp.h +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef _SIMPLE_APP -#define _SIMPLE_APP - -#include -#include "glfw.h" - -#define PI 3.141592654 -#include - -class simpleApp{ - - public: - simpleApp(); - void printYo(); - virtual void idle(); - virtual void init(); - virtual void draw(); - virtual void keyDown (char c); - virtual void mouseMove( float x, float y ); - virtual void mouseDrag( float x, float y ); - virtual void mouseDown( float x, float y, int button ); - virtual void mouseUp ( float x, float y, int button ); - - - void setupScreen(); -}; - -#endif // _SIMPLE_APP \ No newline at end of file diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/src/stdafx.cpp b/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/src/stdafx.cpp deleted file mode 100755 index 2bb5769..0000000 --- a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/src/stdafx.cpp +++ /dev/null @@ -1,8 +0,0 @@ -// stdafx.cpp : source file that includes just the standard includes -// videoInputBasicDemo.pch will be the pre-compiled header -// stdafx.obj will contain the pre-compiled type information - -#include "stdafx.h" - -// TODO: reference any additional headers you need in STDAFX.H -// and not in this file diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/src/stdafx.h b/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/src/stdafx.h deleted file mode 100755 index 930e7cf..0000000 --- a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/src/stdafx.h +++ /dev/null @@ -1,19 +0,0 @@ -// stdafx.h : include file for standard system include files, -// or project specific include files that are used frequently, but -// are changed infrequently -// - -#pragma once - - -#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers -#include -#include -#include "videoInput.h" - -#include -#include "glfw.h" -#include "triangleApp.h" -#include "windows.h" - -// TODO: reference additional headers your program requires here diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/src/triangleApp.cpp b/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/src/triangleApp.cpp deleted file mode 100755 index aff7d16..0000000 --- a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/src/triangleApp.cpp +++ /dev/null @@ -1,124 +0,0 @@ -#include "triangleApp.h" - -//The first device we want to open -int dev = 0; - - -//empty constructor -triangleApp::triangleApp(){ - -} - -void triangleApp::init(){ - - //optional static function to list devices - //for silent listDevices use listDevices(true); - int numDevices = videoInput::listDevices(); - - //uncomment for silent setup - //videoInput::setVerbose(false); - - //we allocate our openGL texture objects - //we give them a ma size of 2048 by 2048 pixels - IT = new imageTexture(2048,2048, GL_RGB); - IT2 = new imageTexture(2048,2048, GL_RGB); - - //by default we use a callback method - //this updates whenever a new frame - //arrives if you are only ocassionally grabbing frames - //you might want to set this to false as the callback caches the last - //frame for performance reasons. - VI.setUseCallback(true); - - //try and setup device with id 0 and id 1 - //if only one device is found the second - //setupDevice should return false - - //if you want to capture at a different frame rate (default is 30) - //specify it here, you are not guaranteed to get this fps though. - //VI.setIdealFramerate(dev, 60); - - //we can specifiy the dimensions we want to capture at - //if those sizes are not possible VI will look for the next nearest matching size - VI.setupDevice(dev, 320, 240, VI_COMPOSITE); - VI.setupDevice(dev+1, 640, 480, VI_COMPOSITE); - - //once the device is setup you can try and - //set the format - this is useful if your device - //doesn't remember what format you set it to - //VI.setFormat(dev, VI_NTSC_M); //optional set the format - - //we allocate our buffer based on the number - //of pixels in each frame - this will be width * height * 3 - frame = new unsigned char[VI.getSize(dev)]; -} - -void triangleApp::idle(){ - - //check to see if we have got a new frame - if( VI.isFrameNew(dev) ) - { - //we get the pixels by passing in out buffer which gets filled - VI.getPixels(dev,frame, true); - - //we then load them into our texture - IT->loadImageData(frame, VI.getWidth(dev), VI.getHeight(dev),GL_RGB); - } - - //check to see if we have got a new frame - if( VI.isFrameNew(dev+1) ) - { - //here we are directly return the pixels into our texture - //use VI.getWidth getHeight etc so that you don't get a crash - IT2->loadImageData(VI.getPixels(dev+1, true), VI.getWidth(dev+1), VI.getHeight(dev+1), GL_RGB); - } -} - - -void triangleApp::draw(){ - - setupScreen(); - IT->renderTexture(0, 0, VI.getWidth(dev), VI.getHeight(dev)); - IT2->renderTexture(VI.getWidth(dev), 0, VI.getWidth(dev+1), VI.getHeight(dev+1)); -} - -void triangleApp::keyDown (char c){ - - //some options hooked up to key commands - if(c=='S')VI.showSettingsWindow(dev); - if(c=='D')VI.showSettingsWindow(dev+1); - - if(c=='R')VI.restartDevice(dev); - if(c=='T')VI.restartDevice(dev+1); - - if(c == '1')VI.setVideoSettingCameraPct(0, VI.propExposure, 0.1, 2); - if(c == '2')VI.setVideoSettingCameraPct(0, VI.propExposure, 0.9, 2); - - if(c == '5')VI.setVideoSettingFilterPct(0, VI.propWhiteBalance, 0.12, 2); - if(c == '6')VI.setVideoSettingFilterPct(0, VI.propWhiteBalance, 0.88, 2); - - if(c=='Q') - { - VI.stopDevice(dev); - VI.stopDevice(dev+1); - } -} - -void triangleApp::mouseMove( float x, float y ){ - - -} - -void triangleApp::mouseDrag( float x, float y ){ - -} - -void triangleApp::mouseDown( float x, float y, int button ){ - -} - -void triangleApp::mouseUp ( float x, float y, int button ){ - -} - - diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/src/videoInputBasicDemo.cpp b/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/src/videoInputBasicDemo.cpp deleted file mode 100755 index f6fea06..0000000 --- a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/src/videoInputBasicDemo.cpp +++ /dev/null @@ -1,109 +0,0 @@ -// videoInputBasicDemo.cpp : Defines the entry point for the console application. -// - -#include "stdafx.h" - - -triangleApp TAPP; - - -void GLFWCALL keyfun( int key, int action ) -{ - if( action != GLFW_PRESS ) - { - return; - } - - switch( key ) - { - case GLFW_KEY_ESC: - printf( "ESC => quit program\n" ); - break; - - } - - TAPP.keyDown(key); - - fflush( stdout ); -} - - - - - - - -int main( void ) -{ - - - int width, height, running, frames, x, y; - double t, t0, fps; - char titlestr[ 200 ]; - - - // Initialise GLFW - glfwInit(); - - // Open OpenGL window - if (!glfwOpenWindow(1024,768, // Open window - 24, 24, 24, // Red, green, and blue bits for color buffer - 24, // Bits for alpha buffer - 24, // Bits for depth buffer (Z-buffer) - 24, // Bits for stencil buffer - GLFW_WINDOW)){ - glfwTerminate(); - return 0; - } - - glfwSetKeyCallback( keyfun ); - TAPP.init(); - glfwEnable( GLFW_STICKY_KEYS ); - // Disable vertical sync (on cards that support it) - glfwSwapInterval( 1 ); - - // Main loop - running = GL_TRUE; - frames = 0; - t0 = glfwGetTime(); - while( running ){ - - // Get time and mouse position - t = glfwGetTime(); - glfwGetMousePos( &x, &y ); - - // Calculate and display FPS (frames per second) - if( (t-t0) > 1.0 || frames == 0 ) - { - fps = (double)frames / (t-t0); - sprintf( titlestr, "videoInput Demo App (%.1f FPS)", fps ); - glfwSetWindowTitle( titlestr ); - t0 = t; - frames = 0; - } - frames ++; - TAPP.idle(); - - - // Get window size (may be different than the requested size) - glfwGetWindowSize( &width, &height ); - height = height > 0 ? height : 1; - // Set viewport - glViewport( 0, 0, width, height ); - // Clear color buffer - glClearColor( 0.0f, 0.0f, 0.0f, 0.0f ); - glClear( GL_COLOR_BUFFER_BIT ); - - TAPP.draw(); - // Swap buffers - glfwSwapBuffers(); - - // Check if the ESC key was pressed or the window was closed - running = !glfwGetKey( GLFW_KEY_ESC ) && - glfwGetWindowParam( GLFW_OPENED ); - } - - // Close OpenGL window and terminate GLFW - glfwTerminate(); - return 0; -} diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/videoInputBasicDemo.sln b/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/videoInputBasicDemo.sln deleted file mode 100755 index 610dc80..0000000 --- a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/videoInputBasicDemo.sln +++ /dev/null @@ -1,20 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 9.00 -# Visual C++ Express 2005 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "videoInputBasicDemo", "videoInputBasicDemo.vcproj", "{B575FBFC-3E99-4993-9293-74AC0A6802CF}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Win32 = Debug|Win32 - Release|Win32 = Release|Win32 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B575FBFC-3E99-4993-9293-74AC0A6802CF}.Debug|Win32.ActiveCfg = Debug|Win32 - {B575FBFC-3E99-4993-9293-74AC0A6802CF}.Debug|Win32.Build.0 = Debug|Win32 - {B575FBFC-3E99-4993-9293-74AC0A6802CF}.Release|Win32.ActiveCfg = Release|Win32 - {B575FBFC-3E99-4993-9293-74AC0A6802CF}.Release|Win32.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/videoInputBasicDemo.suo b/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/videoInputBasicDemo.suo deleted file mode 100755 index a35f5f9..0000000 Binary files a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/videoInputBasicDemo.suo and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/videoInputBasicDemo.vcproj b/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/videoInputBasicDemo.vcproj deleted file mode 100755 index 0e9d1ac..0000000 --- a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/videoInputBasicDemo.vcproj +++ /dev/null @@ -1,298 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/videoInputSrcAndDemos/VC2008 INSTRUCTIONS/New Text Document.txt b/videoInputSrcAndDemos/VC2008 INSTRUCTIONS/New Text Document.txt deleted file mode 100755 index c71ded5..0000000 --- a/videoInputSrcAndDemos/VC2008 INSTRUCTIONS/New Text Document.txt +++ /dev/null @@ -1,93 +0,0 @@ --- REQUIREMENTS - -1 Install the express edition of 2008 - -2 Get the Microsoft Platform SDK for Windows Server 2003 R2 - I recommend the ISO/IMG - as you can burn it to disk -(if you want to mount it, virtual clone drive is a nice freeware disk mounter). -Anyway the reason you need this and not the 2008 sdk is because microsoft doesn't provide the atl or mfc libraries in the 2008 sdk. -Compiling videoInput to a lib requires that the atl library is in your search path. -http://www.microsoft.com/downloads/details.aspx?familyid=E15438AC-60BE-41BD-AA14-7F1E0F19CA0D&displaylang=en - -2 Install Directx SDK-> http://www.microsoft.com/downloads/details.aspx?FamilyID=77960733-06e9-47ba-914a-844575031b81&DisplayLang=en - -3 Install Directshow SDK-> http://www.microsoft.com/downloads/details.aspx?FamilyID=8af0afa9-1383-44b4-bc8b-7d6315212323&DisplayLang=en - -I used the Feb 2005 for both directx and directshow - I have had problems with later versions - so I can only gaurantee the above combination. - --- VC++2008 SETTINGS - -Tools->Options... Projects and solutions->VC++Directories as in included pictures -(obviously you can have the directories in diferent locations but make sure that the ones listed are included) -The order is also VERY IMPORTANT - make sure you have the same order - -EXECUTABLE PATHS -C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Bin -C:\Program Files\Microsoft DirectX 9.0 SDK (February 2005)\Utilities\Bin\x86 - - -INCLUDE PATHS -C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include -C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\mfc -C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\atl -C:\Program Files\Microsoft DirectX 9.0 SDK (February 2005)\Include -C:\Program Files\Microsoft DirectX 9.0 SDK (February 2005)\Extras\DirectShow\Include -C:\Program Files\Microsoft DirectX 9.0 SDK (February 2005)\Extras\DirectShow\Samples\C++\DirectShow\BaseClasses - - -LIBRARY PATHS -C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Lib -C:\Program Files\Microsoft DirectX 9.0 SDK (February 2005)\Lib\x86 -C:\Program Files\Microsoft DirectX 9.0 SDK (February 2005)\Extras\DirectShow\Lib\x86 - - --- LINKER ERRORS!!!!!!!!!!!!!!!: - -If you get a linker error C2146 for winnt.h or error C4430 in ctlutil.h - -the problem here is that this member operator function does not have a return type: - - operator=(LONG); - -Change it to: - - COARefTime& operator=(LONG); - - -Read about it here: -http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=63785&SiteID=1 - - --- LINKER SETTINGS FOR MAKING STATIC LIB: - -Make sure you have your Additional Dependecies in ProjectSettings->Librarian->General set to: -dxguid.lib ole32.lib strmiids.lib uuid.lib - -And Link Library Dependencies: set to yes. -When it compiles you will get a LOT of warnings but it should build fine - nice static lib. - - --- LINKER SETTINGS FOR USING COMPILED LIB - -If you get an error about atlthunk.lib add this to your ProjectSettings->Linker->Command Line -/NODEFAULTLIB:"atlthunk" - -I also have -/NODEFAULTLIB:"LIBCMT" - - --- OTHER DEBUGGING --- -Look through how the example apps settings are set in project properties. -Check if there is something there that you are missing from your project settings. - - - - - - - - - - - - - diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/Debug/BuildLog.htm b/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/Debug/BuildLog.htm deleted file mode 100755 index 5b96bcc..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/Debug/BuildLog.htm and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/Debug/imageTexture.obj b/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/Debug/imageTexture.obj deleted file mode 100755 index 4a766cb..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/Debug/imageTexture.obj and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/Debug/mt.dep b/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/Debug/mt.dep deleted file mode 100755 index e3518d7..0000000 --- a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/Debug/mt.dep +++ /dev/null @@ -1 +0,0 @@ -Manifest resource last updated at 18:03:43.40 on Mon 02/02/2009 diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/Debug/simpleApp.obj b/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/Debug/simpleApp.obj deleted file mode 100755 index c6cc21b..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/Debug/simpleApp.obj and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/Debug/stdafx.obj b/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/Debug/stdafx.obj deleted file mode 100755 index 4af8ef9..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/Debug/stdafx.obj and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/Debug/triangleApp.obj b/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/Debug/triangleApp.obj deleted file mode 100755 index c9a48a5..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/Debug/triangleApp.obj and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/Debug/vc90.idb b/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/Debug/vc90.idb deleted file mode 100755 index 0f4bae5..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/Debug/vc90.idb and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/Debug/vc90.pdb b/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/Debug/vc90.pdb deleted file mode 100755 index 162d63d..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/Debug/vc90.pdb and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/Debug/videoInputBasicDemo.exe.embed.manifest b/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/Debug/videoInputBasicDemo.exe.embed.manifest deleted file mode 100755 index 4248d28..0000000 --- a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/Debug/videoInputBasicDemo.exe.embed.manifest +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/Debug/videoInputBasicDemo.exe.embed.manifest.res b/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/Debug/videoInputBasicDemo.exe.embed.manifest.res deleted file mode 100755 index 9e54244..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/Debug/videoInputBasicDemo.exe.embed.manifest.res and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/Debug/videoInputBasicDemo.exe.intermediate.manifest b/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/Debug/videoInputBasicDemo.exe.intermediate.manifest deleted file mode 100755 index 9e781d8..0000000 --- a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/Debug/videoInputBasicDemo.exe.intermediate.manifest +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/Debug/videoInputBasicDemo.ilk b/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/Debug/videoInputBasicDemo.ilk deleted file mode 100755 index 8eee1b0..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/Debug/videoInputBasicDemo.ilk and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/Debug/videoInputBasicDemo.obj b/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/Debug/videoInputBasicDemo.obj deleted file mode 100755 index c524a49..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/Debug/videoInputBasicDemo.obj and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/Release/BuildLog.htm b/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/Release/BuildLog.htm deleted file mode 100755 index 5b13de8..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/Release/BuildLog.htm and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/Release/imageTexture.obj b/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/Release/imageTexture.obj deleted file mode 100755 index b0301ab..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/Release/imageTexture.obj and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/Release/mt.dep b/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/Release/mt.dep deleted file mode 100755 index a3dd750..0000000 --- a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/Release/mt.dep +++ /dev/null @@ -1 +0,0 @@ -Manifest resource last updated at 18:03:58.31 on Mon 02/02/2009 diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/Release/simpleApp.obj b/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/Release/simpleApp.obj deleted file mode 100755 index aa9fe67..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/Release/simpleApp.obj and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/Release/stdafx.obj b/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/Release/stdafx.obj deleted file mode 100755 index ce2f848..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/Release/stdafx.obj and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/Release/triangleApp.obj b/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/Release/triangleApp.obj deleted file mode 100755 index f4b4bcb..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/Release/triangleApp.obj and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/Release/vc90.idb b/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/Release/vc90.idb deleted file mode 100755 index 758e2cd..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/Release/vc90.idb and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/Release/vc90.pdb b/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/Release/vc90.pdb deleted file mode 100755 index 568b101..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/Release/vc90.pdb and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/Release/videoInputBasicDemo.exe.intermediate.manifest b/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/Release/videoInputBasicDemo.exe.intermediate.manifest deleted file mode 100755 index 5b04466..0000000 --- a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/Release/videoInputBasicDemo.exe.intermediate.manifest +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/Release/videoInputBasicDemo.obj b/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/Release/videoInputBasicDemo.obj deleted file mode 100755 index ccb58c4..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/Release/videoInputBasicDemo.obj and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/requiredLibs/GlAux.Lib b/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/requiredLibs/GlAux.Lib deleted file mode 100755 index 2470670..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/requiredLibs/GlAux.Lib and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/requiredLibs/GlU32.Lib b/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/requiredLibs/GlU32.Lib deleted file mode 100755 index 298f6c7..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/requiredLibs/GlU32.Lib and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/requiredLibs/OpenGL32.Lib b/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/requiredLibs/OpenGL32.Lib deleted file mode 100755 index ba089e8..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/requiredLibs/OpenGL32.Lib and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/requiredLibs/dxguid.lib b/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/requiredLibs/dxguid.lib deleted file mode 100755 index 07c68bb..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/requiredLibs/dxguid.lib and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/requiredLibs/glfw.lib b/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/requiredLibs/glfw.lib deleted file mode 100755 index 58985bc..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/requiredLibs/glfw.lib and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/requiredLibs/ole32.lib b/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/requiredLibs/ole32.lib deleted file mode 100755 index a9aa665..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/requiredLibs/ole32.lib and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/requiredLibs/oleaut32.lib b/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/requiredLibs/oleaut32.lib deleted file mode 100755 index d33a426..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/requiredLibs/oleaut32.lib and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/requiredLibs/quartz.lib b/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/requiredLibs/quartz.lib deleted file mode 100755 index 89901e8..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/requiredLibs/quartz.lib and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/requiredLibs/strmbasd.lib b/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/requiredLibs/strmbasd.lib deleted file mode 100755 index 515f6ca..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/requiredLibs/strmbasd.lib and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/requiredLibs/strmbase.lib b/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/requiredLibs/strmbase.lib deleted file mode 100755 index 218391a..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/requiredLibs/strmbase.lib and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/requiredLibs/strmiids.lib b/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/requiredLibs/strmiids.lib deleted file mode 100755 index bd8725d..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/requiredLibs/strmiids.lib and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/requiredLibs/uuid.lib b/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/requiredLibs/uuid.lib deleted file mode 100755 index 22d0437..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/requiredLibs/uuid.lib and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/requiredLibs/videoInput.lib b/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/requiredLibs/videoInput.lib deleted file mode 100755 index 32637cc..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/requiredLibs/videoInput.lib and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/requiredLibs/videoInputDebug.lib b/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/requiredLibs/videoInputDebug.lib deleted file mode 100755 index 769b777..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/requiredLibs/videoInputDebug.lib and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/src/glfw.h b/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/src/glfw.h deleted file mode 100755 index ee4bbff..0000000 --- a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/src/glfw.h +++ /dev/null @@ -1,465 +0,0 @@ -//======================================================================== -// GLFW - An OpenGL framework -// File: glfw.h -// API version: 2.4 -// Author: Marcus Geelnard (marcus.geelnard at home.se) -// WWW: http://glfw.sourceforge.net -//------------------------------------------------------------------------ -// Copyright (c) 2002-2004 Marcus Geelnard -// -// This software is provided 'as-is', without any express or implied -// warranty. In no event will the authors be held liable for any damages -// arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose, -// including commercial applications, and to alter it and redistribute it -// freely, subject to the following restrictions: -// -// 1. The origin of this software must not be misrepresented; you must not -// claim that you wrote the original software. If you use this software -// in a product, an acknowledgment in the product documentation would -// be appreciated but is not required. -// -// 2. Altered source versions must be plainly marked as such, and must not -// be misrepresented as being the original software. -// -// 3. This notice may not be removed or altered from any source -// distribution. -// -// Marcus Geelnard -// marcus.geelnard at home.se -//------------------------------------------------------------------------ -// $Id: glfw.h,v 1.7 2004/02/14 20:42:00 marcus256 Exp $ -//======================================================================== - -#ifndef __glfw_h_ -#define __glfw_h_ - -#ifdef __cplusplus -extern "C" { -#endif - - -//======================================================================== -// Global definitions -//======================================================================== - -// We need a NULL pointer from time to time -#ifndef NULL - #ifdef __cplusplus - #define NULL 0 - #else - #define NULL ((void *)0) - #endif -#endif // NULL - - -// ------------------- BEGIN SYSTEM/COMPILER SPECIFIC -------------------- - -// Please report any probles that you find with your compiler, which may -// be solved in this section! There are several compilers that I have not -// been able to test this file with yet. - -// First: If we are we on Windows, we want a single define for it (_WIN32) -// (Note: For Cygwin the compiler flag -mwin32 should be used, but to -// make sure that things run smoothly for Cygwin users, we add __CYGWIN__ -// to the list of "valid Win32 identifiers", which removes the need for -// -mwin32) -#if !defined(_WIN32) && (defined(__WIN32__) || defined(WIN32) || defined(__CYGWIN__)) - #define _WIN32 -#endif // _WIN32 - -// In order for extension support to be portable, we need to define an -// OpenGL function call method. We use the keyword APIENTRY, which is -// defined for Win32. (Note: Windows also needs this for ) -#ifndef APIENTRY - #ifdef _WIN32 - #define APIENTRY __stdcall - #else - #define APIENTRY - #endif - #define GL_APIENTRY_DEFINED -#endif // APIENTRY - - -// The following three defines are here solely to make some Windows-based -// files happy. Theoretically we could include , but -// it has the major drawback of severely polluting our namespace. - -// Under Windows, we need WINGDIAPI defined -#if !defined(WINGDIAPI) && defined(_WIN32) - #if defined(_MSC_VER) || defined(__BORLANDC__) - // Microsoft Visual C++ & Borland C++ Builder - #define WINGDIAPI __declspec(dllimport) - #elif defined(__LCC__) - // LCC-Win32 - #define WINGDIAPI __stdcall - #else - // Others (e.g. MinGW, Cygwin) - #define WINGDIAPI extern - #endif - #define GL_WINGDIAPI_DEFINED -#endif // WINGDIAPI - -// Some files also need CALLBACK defined -#if !defined(CALLBACK) && defined(_WIN32) - #if defined(_MSC_VER) - // Microsoft Visual C++ - #if (defined(_M_MRX000) || defined(_M_IX86) || defined(_M_ALPHA) || defined(_M_PPC)) && !defined(MIDL_PASS) - #define CALLBACK __stdcall - #else - #define CALLBACK - #endif - #else - // Other Windows compilers - #define CALLBACK __stdcall - #endif - #define GLU_CALLBACK_DEFINED -#endif // CALLBACK - -// Microsoft Visual C++ & Borland C++ needs wchar_t -#if defined(_WIN32) && (defined(_MSC_VER) || defined(__BORLANDC__)) && !defined(_WCHAR_T_DEFINED) - typedef unsigned short wchar_t; - #define _WCHAR_T_DEFINED -#endif // _WCHAR_T_DEFINED - - -// ---------------- GLFW related system specific defines ----------------- - -#if defined(_WIN32) && defined(GLFW_BUILD_DLL) - - // We are building a Win32 DLL - #define GLFWAPI __declspec(dllexport) - #define GLFWAPIENTRY __stdcall - #define GLFWCALL __stdcall - -#elif defined(_WIN32) && defined(GLFW_DLL) - - // We are calling a Win32 DLL - #if defined(__LCC__) - #define GLFWAPI extern - #else - #define GLFWAPI __declspec(dllimport) - #endif - #define GLFWAPIENTRY __stdcall - #define GLFWCALL __stdcall - -#else - - // We are either building/calling a static lib or we are non-win32 - #define GLFWAPIENTRY - #define GLFWAPI - #define GLFWCALL - -#endif - -// -------------------- END SYSTEM/COMPILER SPECIFIC --------------------- - -// Include standard OpenGL headers: GLFW uses GL_FALSE/GL_TRUE, and it is -// convenient for the user to only have to include . This also -// solves the problem with Windows and needing some -// special defines which normally requires the user to include -// (which is not a nice solution for portable programs). -#if defined(__APPLE_CC__) - #include - #include -#else - #include - #include -#endif - - -//======================================================================== -// GLFW version -//======================================================================== - -#define GLFW_VERSION_MAJOR 2 -#define GLFW_VERSION_MINOR 4 -#define GLFW_VERSION_REVISION 2 - - -//======================================================================== -// Input handling definitions -//======================================================================== - -// Key and button state/action definitions -#define GLFW_RELEASE 0 -#define GLFW_PRESS 1 - -// Keyboard key definitions: 8-bit ISO-8859-1 (Latin 1) encoding is used -// for printable keys (such as A-Z, 0-9 etc), and values above 256 -// represent special (non-printable) keys (e.g. F1, Page Up etc). -#define GLFW_KEY_UNKNOWN -1 -#define GLFW_KEY_SPACE 32 -#define GLFW_KEY_SPECIAL 256 -#define GLFW_KEY_ESC (GLFW_KEY_SPECIAL+1) -#define GLFW_KEY_F1 (GLFW_KEY_SPECIAL+2) -#define GLFW_KEY_F2 (GLFW_KEY_SPECIAL+3) -#define GLFW_KEY_F3 (GLFW_KEY_SPECIAL+4) -#define GLFW_KEY_F4 (GLFW_KEY_SPECIAL+5) -#define GLFW_KEY_F5 (GLFW_KEY_SPECIAL+6) -#define GLFW_KEY_F6 (GLFW_KEY_SPECIAL+7) -#define GLFW_KEY_F7 (GLFW_KEY_SPECIAL+8) -#define GLFW_KEY_F8 (GLFW_KEY_SPECIAL+9) -#define GLFW_KEY_F9 (GLFW_KEY_SPECIAL+10) -#define GLFW_KEY_F10 (GLFW_KEY_SPECIAL+11) -#define GLFW_KEY_F11 (GLFW_KEY_SPECIAL+12) -#define GLFW_KEY_F12 (GLFW_KEY_SPECIAL+13) -#define GLFW_KEY_F13 (GLFW_KEY_SPECIAL+14) -#define GLFW_KEY_F14 (GLFW_KEY_SPECIAL+15) -#define GLFW_KEY_F15 (GLFW_KEY_SPECIAL+16) -#define GLFW_KEY_F16 (GLFW_KEY_SPECIAL+17) -#define GLFW_KEY_F17 (GLFW_KEY_SPECIAL+18) -#define GLFW_KEY_F18 (GLFW_KEY_SPECIAL+19) -#define GLFW_KEY_F19 (GLFW_KEY_SPECIAL+20) -#define GLFW_KEY_F20 (GLFW_KEY_SPECIAL+21) -#define GLFW_KEY_F21 (GLFW_KEY_SPECIAL+22) -#define GLFW_KEY_F22 (GLFW_KEY_SPECIAL+23) -#define GLFW_KEY_F23 (GLFW_KEY_SPECIAL+24) -#define GLFW_KEY_F24 (GLFW_KEY_SPECIAL+25) -#define GLFW_KEY_F25 (GLFW_KEY_SPECIAL+26) -#define GLFW_KEY_UP (GLFW_KEY_SPECIAL+27) -#define GLFW_KEY_DOWN (GLFW_KEY_SPECIAL+28) -#define GLFW_KEY_LEFT (GLFW_KEY_SPECIAL+29) -#define GLFW_KEY_RIGHT (GLFW_KEY_SPECIAL+30) -#define GLFW_KEY_LSHIFT (GLFW_KEY_SPECIAL+31) -#define GLFW_KEY_RSHIFT (GLFW_KEY_SPECIAL+32) -#define GLFW_KEY_LCTRL (GLFW_KEY_SPECIAL+33) -#define GLFW_KEY_RCTRL (GLFW_KEY_SPECIAL+34) -#define GLFW_KEY_LALT (GLFW_KEY_SPECIAL+35) -#define GLFW_KEY_RALT (GLFW_KEY_SPECIAL+36) -#define GLFW_KEY_TAB (GLFW_KEY_SPECIAL+37) -#define GLFW_KEY_ENTER (GLFW_KEY_SPECIAL+38) -#define GLFW_KEY_BACKSPACE (GLFW_KEY_SPECIAL+39) -#define GLFW_KEY_INSERT (GLFW_KEY_SPECIAL+40) -#define GLFW_KEY_DEL (GLFW_KEY_SPECIAL+41) -#define GLFW_KEY_PAGEUP (GLFW_KEY_SPECIAL+42) -#define GLFW_KEY_PAGEDOWN (GLFW_KEY_SPECIAL+43) -#define GLFW_KEY_HOME (GLFW_KEY_SPECIAL+44) -#define GLFW_KEY_END (GLFW_KEY_SPECIAL+45) -#define GLFW_KEY_KP_0 (GLFW_KEY_SPECIAL+46) -#define GLFW_KEY_KP_1 (GLFW_KEY_SPECIAL+47) -#define GLFW_KEY_KP_2 (GLFW_KEY_SPECIAL+48) -#define GLFW_KEY_KP_3 (GLFW_KEY_SPECIAL+49) -#define GLFW_KEY_KP_4 (GLFW_KEY_SPECIAL+50) -#define GLFW_KEY_KP_5 (GLFW_KEY_SPECIAL+51) -#define GLFW_KEY_KP_6 (GLFW_KEY_SPECIAL+52) -#define GLFW_KEY_KP_7 (GLFW_KEY_SPECIAL+53) -#define GLFW_KEY_KP_8 (GLFW_KEY_SPECIAL+54) -#define GLFW_KEY_KP_9 (GLFW_KEY_SPECIAL+55) -#define GLFW_KEY_KP_DIVIDE (GLFW_KEY_SPECIAL+56) -#define GLFW_KEY_KP_MULTIPLY (GLFW_KEY_SPECIAL+57) -#define GLFW_KEY_KP_SUBTRACT (GLFW_KEY_SPECIAL+58) -#define GLFW_KEY_KP_ADD (GLFW_KEY_SPECIAL+59) -#define GLFW_KEY_KP_DECIMAL (GLFW_KEY_SPECIAL+60) -#define GLFW_KEY_KP_EQUAL (GLFW_KEY_SPECIAL+61) -#define GLFW_KEY_KP_ENTER (GLFW_KEY_SPECIAL+62) -#define GLFW_KEY_LAST GLFW_KEY_KP_ENTER - -// Mouse button definitions -#define GLFW_MOUSE_BUTTON_LEFT 0 -#define GLFW_MOUSE_BUTTON_RIGHT 1 -#define GLFW_MOUSE_BUTTON_MIDDLE 2 -#define GLFW_MOUSE_BUTTON_LAST GLFW_MOUSE_BUTTON_MIDDLE - -// Joystick identifiers -#define GLFW_JOYSTICK_1 0 -#define GLFW_JOYSTICK_2 1 -#define GLFW_JOYSTICK_3 2 -#define GLFW_JOYSTICK_4 3 -#define GLFW_JOYSTICK_5 4 -#define GLFW_JOYSTICK_6 5 -#define GLFW_JOYSTICK_7 6 -#define GLFW_JOYSTICK_8 7 -#define GLFW_JOYSTICK_9 8 -#define GLFW_JOYSTICK_10 9 -#define GLFW_JOYSTICK_11 10 -#define GLFW_JOYSTICK_12 11 -#define GLFW_JOYSTICK_13 12 -#define GLFW_JOYSTICK_14 13 -#define GLFW_JOYSTICK_15 14 -#define GLFW_JOYSTICK_16 15 -#define GLFW_JOYSTICK_LAST GLFW_JOYSTICK_16 - - -//======================================================================== -// Other definitions -//======================================================================== - -// glfwOpenWindow modes -#define GLFW_WINDOW 0x00010001 -#define GLFW_FULLSCREEN 0x00010002 - -// glfwGetWindowParam tokens -#define GLFW_OPENED 0x00020001 -#define GLFW_ACTIVE 0x00020002 -#define GLFW_ICONIFIED 0x00020003 -#define GLFW_ACCELERATED 0x00020004 -#define GLFW_RED_BITS 0x00020005 -#define GLFW_GREEN_BITS 0x00020006 -#define GLFW_BLUE_BITS 0x00020007 -#define GLFW_ALPHA_BITS 0x00020008 -#define GLFW_DEPTH_BITS 0x00020009 -#define GLFW_STENCIL_BITS 0x0002000A - -// The following constants are used for both glfwGetWindowParam -// and glfwOpenWindowHint -#define GLFW_REFRESH_RATE 0x0002000B -#define GLFW_ACCUM_RED_BITS 0x0002000C -#define GLFW_ACCUM_GREEN_BITS 0x0002000D -#define GLFW_ACCUM_BLUE_BITS 0x0002000E -#define GLFW_ACCUM_ALPHA_BITS 0x0002000F -#define GLFW_AUX_BUFFERS 0x00020010 -#define GLFW_STEREO 0x00020011 - -// glfwEnable/glfwDisable tokens -#define GLFW_MOUSE_CURSOR 0x00030001 -#define GLFW_STICKY_KEYS 0x00030002 -#define GLFW_STICKY_MOUSE_BUTTONS 0x00030003 -#define GLFW_SYSTEM_KEYS 0x00030004 -#define GLFW_KEY_REPEAT 0x00030005 -#define GLFW_AUTO_POLL_EVENTS 0x00030006 - -// glfwWaitThread wait modes -#define GLFW_WAIT 0x00040001 -#define GLFW_NOWAIT 0x00040002 - -// glfwGetJoystickParam tokens -#define GLFW_PRESENT 0x00050001 -#define GLFW_AXES 0x00050002 -#define GLFW_BUTTONS 0x00050003 - -// glfwReadImage/glfwLoadTexture2D flags -#define GLFW_NO_RESCALE_BIT 0x00000001 // Only for glfwReadImage -#define GLFW_ORIGIN_UL_BIT 0x00000002 -#define GLFW_BUILD_MIPMAPS_BIT 0x00000004 // Only for glfwLoadTexture2D - -// Time spans longer than this (seconds) are considered to be infinity -#define GLFW_INFINITY 100000.0 - - -//======================================================================== -// Typedefs -//======================================================================== - -// The video mode structure used by glfwGetVideoModes() -typedef struct { - int Width, Height; - int RedBits, BlueBits, GreenBits; -} GLFWvidmode; - -// Image/texture information -typedef struct { - int Width, Height; - int Format; - int BytesPerPixel; - unsigned char *Data; -} GLFWimage; - -// Thread ID -typedef int GLFWthread; - -// Mutex object -typedef void * GLFWmutex; - -// Condition variable object -typedef void * GLFWcond; - -// Function pointer types -typedef void (GLFWCALL * GLFWwindowsizefun)(int,int); -typedef void (GLFWCALL * GLFWmousebuttonfun)(int,int); -typedef void (GLFWCALL * GLFWmouseposfun)(int,int); -typedef void (GLFWCALL * GLFWmousewheelfun)(int); -typedef void (GLFWCALL * GLFWkeyfun)(int,int); -typedef void (GLFWCALL * GLFWcharfun)(int,int); -typedef void (GLFWCALL * GLFWthreadfun)(void *); - - -//======================================================================== -// Prototypes -//======================================================================== - -// GLFW initialization, termination and version querying -GLFWAPI int GLFWAPIENTRY glfwInit( void ); -GLFWAPI void GLFWAPIENTRY glfwTerminate( void ); -GLFWAPI void GLFWAPIENTRY glfwGetVersion( int *major, int *minor, int *rev ); - -// Window handling -GLFWAPI int GLFWAPIENTRY glfwOpenWindow( int width, int height, int redbits, int greenbits, int bluebits, int alphabits, int depthbits, int stencilbits, int mode ); -GLFWAPI void GLFWAPIENTRY glfwOpenWindowHint( int target, int hint ); -GLFWAPI void GLFWAPIENTRY glfwCloseWindow( void ); -GLFWAPI void GLFWAPIENTRY glfwSetWindowTitle( const char *title ); -GLFWAPI void GLFWAPIENTRY glfwGetWindowSize( int *width, int *height ); -GLFWAPI void GLFWAPIENTRY glfwSetWindowSize( int width, int height ); -GLFWAPI void GLFWAPIENTRY glfwSetWindowPos( int x, int y ); -GLFWAPI void GLFWAPIENTRY glfwIconifyWindow( void ); -GLFWAPI void GLFWAPIENTRY glfwRestoreWindow( void ); -GLFWAPI void GLFWAPIENTRY glfwSwapBuffers( void ); -GLFWAPI void GLFWAPIENTRY glfwSwapInterval( int interval ); -GLFWAPI int GLFWAPIENTRY glfwGetWindowParam( int param ); -GLFWAPI void GLFWAPIENTRY glfwSetWindowSizeCallback( GLFWwindowsizefun cbfun ); - -// Video mode functions -GLFWAPI int GLFWAPIENTRY glfwGetVideoModes( GLFWvidmode *list, int maxcount ); -GLFWAPI void GLFWAPIENTRY glfwGetDesktopMode( GLFWvidmode *mode ); - -// Input handling -GLFWAPI void GLFWAPIENTRY glfwPollEvents( void ); -GLFWAPI int GLFWAPIENTRY glfwGetKey( int key ); -GLFWAPI int GLFWAPIENTRY glfwGetMouseButton( int button ); -GLFWAPI void GLFWAPIENTRY glfwGetMousePos( int *xpos, int *ypos ); -GLFWAPI void GLFWAPIENTRY glfwSetMousePos( int xpos, int ypos ); -GLFWAPI int GLFWAPIENTRY glfwGetMouseWheel( void ); -GLFWAPI void GLFWAPIENTRY glfwSetMouseWheel( int pos ); -GLFWAPI void GLFWAPIENTRY glfwSetKeyCallback( GLFWkeyfun cbfun ); -GLFWAPI void GLFWAPIENTRY glfwSetCharCallback( GLFWcharfun cbfun ); -GLFWAPI void GLFWAPIENTRY glfwSetMouseButtonCallback( GLFWmousebuttonfun cbfun ); -GLFWAPI void GLFWAPIENTRY glfwSetMousePosCallback( GLFWmouseposfun cbfun ); -GLFWAPI void GLFWAPIENTRY glfwSetMouseWheelCallback( GLFWmousewheelfun cbfun ); - -// Joystick input -GLFWAPI int GLFWAPIENTRY glfwGetJoystickParam( int joy, int param ); -GLFWAPI int GLFWAPIENTRY glfwGetJoystickPos( int joy, float *pos, int numaxes ); -GLFWAPI int GLFWAPIENTRY glfwGetJoystickButtons( int joy, unsigned char *buttons, int numbuttons ); - -// Time -GLFWAPI double GLFWAPIENTRY glfwGetTime( void ); -GLFWAPI void GLFWAPIENTRY glfwSetTime( double time ); -GLFWAPI void GLFWAPIENTRY glfwSleep( double time ); - -// Extension support -GLFWAPI int GLFWAPIENTRY glfwExtensionSupported( const char *extension ); -GLFWAPI void* GLFWAPIENTRY glfwGetProcAddress( const char *procname ); -GLFWAPI void GLFWAPIENTRY glfwGetGLVersion( int *major, int *minor, int *rev ); - -// Threading support -GLFWAPI GLFWthread GLFWAPIENTRY glfwCreateThread( GLFWthreadfun fun, void *arg ); -GLFWAPI void GLFWAPIENTRY glfwDestroyThread( GLFWthread ID ); -GLFWAPI int GLFWAPIENTRY glfwWaitThread( GLFWthread ID, int waitmode ); -GLFWAPI GLFWthread GLFWAPIENTRY glfwGetThreadID( void ); -GLFWAPI GLFWmutex GLFWAPIENTRY glfwCreateMutex( void ); -GLFWAPI void GLFWAPIENTRY glfwDestroyMutex( GLFWmutex mutex ); -GLFWAPI void GLFWAPIENTRY glfwLockMutex( GLFWmutex mutex ); -GLFWAPI void GLFWAPIENTRY glfwUnlockMutex( GLFWmutex mutex ); -GLFWAPI GLFWcond GLFWAPIENTRY glfwCreateCond( void ); -GLFWAPI void GLFWAPIENTRY glfwDestroyCond( GLFWcond cond ); -GLFWAPI void GLFWAPIENTRY glfwWaitCond( GLFWcond cond, GLFWmutex mutex, double timeout ); -GLFWAPI void GLFWAPIENTRY glfwSignalCond( GLFWcond cond ); -GLFWAPI void GLFWAPIENTRY glfwBroadcastCond( GLFWcond cond ); -GLFWAPI int GLFWAPIENTRY glfwGetNumberOfProcessors( void ); - -// Enable/disable functions -GLFWAPI void GLFWAPIENTRY glfwEnable( int token ); -GLFWAPI void GLFWAPIENTRY glfwDisable( int token ); - -// Image/texture I/O support -GLFWAPI int GLFWAPIENTRY glfwReadImage( const char *name, GLFWimage *img, int flags ); -GLFWAPI void GLFWAPIENTRY glfwFreeImage( GLFWimage *img ); -GLFWAPI int GLFWAPIENTRY glfwLoadTexture2D( const char *name, int flags ); - - -#ifdef __cplusplus -} -#endif - -#endif // __glfw_h_ diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/src/imageTexture.cpp b/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/src/imageTexture.cpp deleted file mode 100755 index f1dc9bb..0000000 --- a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/src/imageTexture.cpp +++ /dev/null @@ -1,120 +0,0 @@ - -#include "imageTexture.h" - - - -imageTexture::imageTexture(int w, int h, int internalGlDataType){ - - tex_w = w; - tex_h = h; - - tex_u = 1.0f; - tex_t = 1.0f; - - // if w, h are not powers of 2 you will not see anything. - // create the named texture: - - myTex = new GLuint[1]; - //glPixelStorei(GL_UNPACK_ALIGNMENT, 1); // not necessary, I think - glGenTextures(1, myTex); // could be more then one, but for now, just one - - glEnable(GL_TEXTURE_2D); - - glBindTexture(GL_TEXTURE_2D, myTex[0]); - glTexImage2D(GL_TEXTURE_2D, 0, internalGlDataType, tex_w, tex_h, 0, GL_LUMINANCE, GL_UNSIGNED_BYTE, 0); // init to black... - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); - - glDisable(GL_TEXTURE_2D); - - -} - - - - -void imageTexture::loadImageData(unsigned char * data, int w, int h, int glDataType){ - - if ( w > tex_w || h > tex_h) { - printf("image data too big - bailing \n"); - return; - } - - - //compute new tex co-ords based on the ratio of data's w, h to texture w,h; - - tex_t = (float)w / (float)tex_w; - tex_u = (float)h / (float)tex_h; - - // update the texture image: - - glEnable(GL_TEXTURE_2D); - - glBindTexture(GL_TEXTURE_2D, myTex[0]); - glTexSubImage2D(GL_TEXTURE_2D,0,0,0,w,h,glDataType,GL_UNSIGNED_BYTE,data); - - glDisable(GL_TEXTURE_2D); -} - -//================================================================================= -void imageTexture::renderTexture(int x, int y, int w, int h){ - - - glEnable(GL_TEXTURE_2D); - - // bind the texture - glBindTexture( GL_TEXTURE_2D, myTex[0] ); - - float px0 = x ; // up to you to get the aspect ratio right - float py0 = y ; - float px1 = x+w; - float py1 = y+h; - - glBegin( GL_QUADS ); - glTexCoord2f(0.0,0.0); glVertex3f(px0, py0,0); - glTexCoord2f(tex_t,0.0); glVertex3f(px1, py0,0); - glTexCoord2f(tex_t,tex_u); glVertex3f(px1, py1,0); - glTexCoord2f(0.0,tex_u); glVertex3f(px0, py1,0); - glEnd(); - - glDisable(GL_TEXTURE_2D); - -} - -//================================================================================= -void imageTexture::renderTextureWithBox(int x, int y, int w, int h, float r, float g, float b, int border){ - - - - // bind the texture - - float px0 = x ; // up to you to get the aspect ratio right - float py0 = y ; - float px1 = x+w; - float py1 = y+h; - - glColor3f(r,g,b); - glBegin( GL_QUADS ); - glVertex3f(px0-border, py0-border,0); - glVertex3f(px1+border, py0-border,0); - glVertex3f(px1+border, py1+border,0); - glVertex3f(px0-border, py1+border,0); - glEnd(); - - glEnable(GL_TEXTURE_2D); - glBindTexture( GL_TEXTURE_2D, myTex[0] ); - - glBegin( GL_QUADS ); - glTexCoord2f(0.0,0.0); glVertex3f(px0, py0,0); - glTexCoord2f(tex_t,0.0); glVertex3f(px1, py0,0); - glTexCoord2f(tex_t,tex_u); glVertex3f(px1, py1,0); - glTexCoord2f(0.0,tex_u); glVertex3f(px0, py1,0); - glEnd(); - - glDisable(GL_TEXTURE_2D); - -} - diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/src/imageTexture.h b/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/src/imageTexture.h deleted file mode 100755 index 94c3126..0000000 --- a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/src/imageTexture.h +++ /dev/null @@ -1,31 +0,0 @@ -#ifndef _IMAGE_TEXTURE_H_ -#define _IMAGE_TEXTURE_H_ - -#include "glfw.h" //gl shit -#include - - -class imageTexture { - - - public : - - imageTexture(int w, int h, int internalGlDataType); - // if w, h are not powers of 2 you will not see anything. - - void loadImageData(unsigned char * data, int w, int h, int glDataType); - // w,h here MUST be <= initial w,h - - void renderTexture(int x, int y, int w, int h); - - void renderTextureWithBox(int x, int y, int w, int h, float r, float g, float b, int border); - - float tex_t, tex_u; - - private: - int tex_w, tex_h; - GLuint * myTex; - -}; - -#endif diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/src/simpleApp.cpp b/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/src/simpleApp.cpp deleted file mode 100755 index b29121e..0000000 --- a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/src/simpleApp.cpp +++ /dev/null @@ -1,86 +0,0 @@ -#include "simpleApp.h" - -simpleApp::simpleApp(){ - -} - -void simpleApp::idle(){ - -} - -void simpleApp::init(){ - -} - - -void simpleApp::draw(){ - -} - -void simpleApp::keyDown (char c){ - -} - -void simpleApp::mouseMove( float x, float y ){ - -} - -void simpleApp::mouseDrag( float x, float y ){ - -} - -void simpleApp::mouseDown( float x, float y, int button ){ - -} - -void simpleApp::mouseUp ( float x, float y, int button ){ - -} - - -void simpleApp::printYo(){ - -} - - -void simpleApp::setupScreen(){ - - int w, h; - - glfwGetWindowSize( &w, &h ); - float halfFov, theTan, screenFov, aspect; - - screenFov = 60.0f; - - float eyeX = (float)w / 2.0; - float eyeY = (float)h / 2.0; - halfFov = PI * screenFov / 360.0; - theTan = tanf(halfFov); - float dist = eyeY / theTan; - float nearDist = dist / 10.0; // near / far clip plane - float farDist = dist * 10.0; - aspect = (float)w/(float)h; - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(screenFov, aspect, nearDist, farDist); - gluLookAt(eyeX, eyeY, dist, - eyeX, eyeY, 0.0, 0.0, 1.0, 0.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - - - -} - - - - -/* - simpleApp : openFullscreen; - coordSystem; - swap(); - - -*/ - diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/src/simpleApp.h b/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/src/simpleApp.h deleted file mode 100755 index dfd389d..0000000 --- a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/src/simpleApp.h +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef _SIMPLE_APP -#define _SIMPLE_APP - -#include -#include "glfw.h" - -#define PI 3.141592654 -#include - -class simpleApp{ - - public: - simpleApp(); - void printYo(); - virtual void idle(); - virtual void init(); - virtual void draw(); - virtual void keyDown (char c); - virtual void mouseMove( float x, float y ); - virtual void mouseDrag( float x, float y ); - virtual void mouseDown( float x, float y, int button ); - virtual void mouseUp ( float x, float y, int button ); - - - void setupScreen(); -}; - -#endif // _SIMPLE_APP \ No newline at end of file diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/src/stdafx.cpp b/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/src/stdafx.cpp deleted file mode 100755 index 2bb5769..0000000 --- a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/src/stdafx.cpp +++ /dev/null @@ -1,8 +0,0 @@ -// stdafx.cpp : source file that includes just the standard includes -// videoInputBasicDemo.pch will be the pre-compiled header -// stdafx.obj will contain the pre-compiled type information - -#include "stdafx.h" - -// TODO: reference any additional headers you need in STDAFX.H -// and not in this file diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/src/triangleApp.cpp b/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/src/triangleApp.cpp deleted file mode 100755 index a9c4781..0000000 --- a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/src/triangleApp.cpp +++ /dev/null @@ -1,124 +0,0 @@ -#include "triangleApp.h" - -//The first device we want to open -int dev = 0; - - -//empty constructor -triangleApp::triangleApp(){ - -} - -void triangleApp::init(){ - - //optional static function to list devices - //for silent listDevices use listDevices(true); - int numDevices = videoInput::listDevices(); - - //uncomment for silent setup - //videoInput::setVerbose(false); - - //we allocate our openGL texture objects - //we give them a ma size of 2048 by 2048 pixels - IT = new imageTexture(2048,2048, GL_RGB); - IT2 = new imageTexture(2048,2048, GL_RGB); - - //by default we use a callback method - //this updates whenever a new frame - //arrives if you are only ocassionally grabbing frames - //you might want to set this to false as the callback caches the last - //frame for performance reasons. - VI.setUseCallback(true); - - //try and setup device with id 0 and id 1 - //if only one device is found the second - //setupDevice should return false - - //if you want to capture at a different frame rate (default is 30) - //specify it here, you are not guaranteed to get this fps though. - // VI.setIdealFramerate(dev, 60); - - //we can specifiy the dimensions we want to capture at - //if those sizes are not possible VI will look for the next nearest matching size - VI.setupDevice(dev, 320, 240, VI_COMPOSITE); - VI.setupDevice(dev+1, 640, 480, VI_COMPOSITE); - - //once the device is setup you can try and - //set the format - this is useful if your device - //doesn't remember what format you set it to - //VI.setFormat(dev, VI_NTSC_M); //optional set the format - - //we allocate our buffer based on the number - //of pixels in each frame - this will be width * height * 3 - frame = new unsigned char[VI.getSize(dev)]; -} - -void triangleApp::idle(){ - - //check to see if we have got a new frame - if( VI.isFrameNew(dev) ) - { - //we get the pixels by passing in out buffer which gets filled - VI.getPixels(dev,frame, true); - - //we then load them into our texture - IT->loadImageData(frame, VI.getWidth(dev), VI.getHeight(dev),GL_RGB); - } - - //check to see if we have got a new frame - if( VI.isFrameNew(dev+1) ) - { - //here we are directly return the pixels into our texture - //use VI.getWidth getHeight etc so that you don't get a crash - IT2->loadImageData(VI.getPixels(dev+1, true), VI.getWidth(dev+1), VI.getHeight(dev+1), GL_RGB); - } -} - - -void triangleApp::draw(){ - - setupScreen(); - IT->renderTexture(0, 0, VI.getWidth(dev), VI.getHeight(dev)); - IT2->renderTexture(VI.getWidth(dev), 0, VI.getWidth(dev+1), VI.getHeight(dev+1)); -} - -void triangleApp::keyDown (char c){ - - //some options hooked up to key commands - if(c=='S')VI.showSettingsWindow(dev); - if(c=='D')VI.showSettingsWindow(dev+1); - - if(c=='R')VI.restartDevice(dev); - if(c=='T')VI.restartDevice(dev+1); - - if(c == '1')VI.setVideoSettingCameraPct(0, VI.propExposure, 0.1, 2); - if(c == '2')VI.setVideoSettingCameraPct(0, VI.propExposure, 0.9, 2); - - if(c == '5')VI.setVideoSettingFilterPct(0, VI.propWhiteBalance, 0.12, 2); - if(c == '6')VI.setVideoSettingFilterPct(0, VI.propWhiteBalance, 0.88, 2); - - if(c=='Q') - { - VI.stopDevice(dev); - VI.stopDevice(dev+1); - } -} - -void triangleApp::mouseMove( float x, float y ){ - - -} - -void triangleApp::mouseDrag( float x, float y ){ - -} - -void triangleApp::mouseDown( float x, float y, int button ){ - -} - -void triangleApp::mouseUp ( float x, float y, int button ){ - -} - - diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/src/triangleApp.h b/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/src/triangleApp.h deleted file mode 100755 index 22a7855..0000000 --- a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/src/triangleApp.h +++ /dev/null @@ -1,33 +0,0 @@ -#ifndef _TRIANGLE_APP - -#include -#include "glfw.h" -#include "simpleApp.h" -#include "imageTexture.h" -#include "videoInput.h" - - -class triangleApp : public simpleApp{ - - public: - triangleApp(); - virtual void idle(); - virtual void init(); - virtual void draw(); - virtual void keyDown (char c); - virtual void mouseMove( float x, float y ); - virtual void mouseDrag( float x, float y ); - virtual void mouseDown( float x, float y, int button ); - virtual void mouseUp ( float x, float y, int button ); - - - imageTexture * IT; - imageTexture * IT2; - videoInput VI; - - unsigned char * frame; - unsigned char * frame2; - -}; - -#endif // _triangle_APP \ No newline at end of file diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/src/videoInputBasicDemo.cpp b/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/src/videoInputBasicDemo.cpp deleted file mode 100755 index f6fea06..0000000 --- a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/src/videoInputBasicDemo.cpp +++ /dev/null @@ -1,109 +0,0 @@ -// videoInputBasicDemo.cpp : Defines the entry point for the console application. -// - -#include "stdafx.h" - - -triangleApp TAPP; - - -void GLFWCALL keyfun( int key, int action ) -{ - if( action != GLFW_PRESS ) - { - return; - } - - switch( key ) - { - case GLFW_KEY_ESC: - printf( "ESC => quit program\n" ); - break; - - } - - TAPP.keyDown(key); - - fflush( stdout ); -} - - - - - - - -int main( void ) -{ - - - int width, height, running, frames, x, y; - double t, t0, fps; - char titlestr[ 200 ]; - - - // Initialise GLFW - glfwInit(); - - // Open OpenGL window - if (!glfwOpenWindow(1024,768, // Open window - 24, 24, 24, // Red, green, and blue bits for color buffer - 24, // Bits for alpha buffer - 24, // Bits for depth buffer (Z-buffer) - 24, // Bits for stencil buffer - GLFW_WINDOW)){ - glfwTerminate(); - return 0; - } - - glfwSetKeyCallback( keyfun ); - TAPP.init(); - glfwEnable( GLFW_STICKY_KEYS ); - // Disable vertical sync (on cards that support it) - glfwSwapInterval( 1 ); - - // Main loop - running = GL_TRUE; - frames = 0; - t0 = glfwGetTime(); - while( running ){ - - // Get time and mouse position - t = glfwGetTime(); - glfwGetMousePos( &x, &y ); - - // Calculate and display FPS (frames per second) - if( (t-t0) > 1.0 || frames == 0 ) - { - fps = (double)frames / (t-t0); - sprintf( titlestr, "videoInput Demo App (%.1f FPS)", fps ); - glfwSetWindowTitle( titlestr ); - t0 = t; - frames = 0; - } - frames ++; - TAPP.idle(); - - - // Get window size (may be different than the requested size) - glfwGetWindowSize( &width, &height ); - height = height > 0 ? height : 1; - // Set viewport - glViewport( 0, 0, width, height ); - // Clear color buffer - glClearColor( 0.0f, 0.0f, 0.0f, 0.0f ); - glClear( GL_COLOR_BUFFER_BIT ); - - TAPP.draw(); - // Swap buffers - glfwSwapBuffers(); - - // Check if the ESC key was pressed or the window was closed - running = !glfwGetKey( GLFW_KEY_ESC ) && - glfwGetWindowParam( GLFW_OPENED ); - } - - // Close OpenGL window and terminate GLFW - glfwTerminate(); - return 0; -} diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/videoInputBasicDemo.sln b/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/videoInputBasicDemo.sln deleted file mode 100755 index 64dc776..0000000 --- a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/videoInputBasicDemo.sln +++ /dev/null @@ -1,20 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 10.00 -# Visual C++ Express 2008 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "videoInputBasicDemo", "videoInputBasicDemo.vcproj", "{B575FBFC-3E99-4993-9293-74AC0A6802CF}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Win32 = Debug|Win32 - Release|Win32 = Release|Win32 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B575FBFC-3E99-4993-9293-74AC0A6802CF}.Debug|Win32.ActiveCfg = Debug|Win32 - {B575FBFC-3E99-4993-9293-74AC0A6802CF}.Debug|Win32.Build.0 = Debug|Win32 - {B575FBFC-3E99-4993-9293-74AC0A6802CF}.Release|Win32.ActiveCfg = Release|Win32 - {B575FBFC-3E99-4993-9293-74AC0A6802CF}.Release|Win32.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/videoInputBasicDemo.suo b/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/videoInputBasicDemo.suo deleted file mode 100755 index 597f0ca..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/videoInputBasicDemo.suo and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/videoInputBasicDemo.suo.old b/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/videoInputBasicDemo.suo.old deleted file mode 100755 index b107073..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/videoInputBasicDemo.suo.old and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/videoInputBasicDemo.vcproj b/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/videoInputBasicDemo.vcproj deleted file mode 100755 index f677834..0000000 --- a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/videoInputBasicDemo.vcproj +++ /dev/null @@ -1,287 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Debug/BuildLog.htm b/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Debug/BuildLog.htm deleted file mode 100755 index d07ee1b..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Debug/BuildLog.htm and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Debug/imageTexture.obj b/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Debug/imageTexture.obj deleted file mode 100755 index d9053db..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Debug/imageTexture.obj and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Debug/mt.dep b/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Debug/mt.dep deleted file mode 100755 index 8728b79..0000000 --- a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Debug/mt.dep +++ /dev/null @@ -1 +0,0 @@ -Manifest resource last updated at 18:01:36.51 on Mon 02/02/2009 diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Debug/simpleApp.obj b/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Debug/simpleApp.obj deleted file mode 100755 index b71a89b..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Debug/simpleApp.obj and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Debug/stdafx.obj b/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Debug/stdafx.obj deleted file mode 100755 index c47d609..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Debug/stdafx.obj and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Debug/triangleApp.obj b/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Debug/triangleApp.obj deleted file mode 100755 index 70f2730..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Debug/triangleApp.obj and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Debug/vc90.idb b/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Debug/vc90.idb deleted file mode 100755 index e454efa..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Debug/vc90.idb and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Debug/vc90.pdb b/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Debug/vc90.pdb deleted file mode 100755 index 15d3f2c..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Debug/vc90.pdb and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Debug/videoInput.obj b/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Debug/videoInput.obj deleted file mode 100755 index 679b73b..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Debug/videoInput.obj and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Debug/videoInputBasicDemo.exe.embed.manifest b/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Debug/videoInputBasicDemo.exe.embed.manifest deleted file mode 100755 index 4248d28..0000000 --- a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Debug/videoInputBasicDemo.exe.embed.manifest +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Debug/videoInputBasicDemo.exe.embed.manifest.res b/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Debug/videoInputBasicDemo.exe.embed.manifest.res deleted file mode 100755 index 9e54244..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Debug/videoInputBasicDemo.exe.embed.manifest.res and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Debug/videoInputBasicDemo.exe.intermediate.manifest b/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Debug/videoInputBasicDemo.exe.intermediate.manifest deleted file mode 100755 index 9e781d8..0000000 --- a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Debug/videoInputBasicDemo.exe.intermediate.manifest +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Debug/videoInputBasicDemo.ilk b/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Debug/videoInputBasicDemo.ilk deleted file mode 100755 index 202a43b..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Debug/videoInputBasicDemo.ilk and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Debug/videoInputBasicDemo.obj b/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Debug/videoInputBasicDemo.obj deleted file mode 100755 index bdafd68..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Debug/videoInputBasicDemo.obj and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Release/BuildLog.htm b/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Release/BuildLog.htm deleted file mode 100755 index 21f06f5..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Release/BuildLog.htm and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Release/imageTexture.obj b/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Release/imageTexture.obj deleted file mode 100755 index 6dbdc34..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Release/imageTexture.obj and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Release/mt.dep b/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Release/mt.dep deleted file mode 100755 index 2861934..0000000 --- a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Release/mt.dep +++ /dev/null @@ -1 +0,0 @@ -Manifest resource last updated at 18:01:09.54 on Mon 02/02/2009 diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Release/simpleApp.obj b/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Release/simpleApp.obj deleted file mode 100755 index b485916..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Release/simpleApp.obj and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Release/stdafx.obj b/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Release/stdafx.obj deleted file mode 100755 index 460a891..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Release/stdafx.obj and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Release/triangleApp.obj b/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Release/triangleApp.obj deleted file mode 100755 index a7ed254..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Release/triangleApp.obj and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Release/vc90.idb b/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Release/vc90.idb deleted file mode 100755 index cc6a79f..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Release/vc90.idb and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Release/vc90.pdb b/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Release/vc90.pdb deleted file mode 100755 index 8479f8a..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Release/vc90.pdb and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Release/videoInput.obj b/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Release/videoInput.obj deleted file mode 100755 index 4eb809e..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Release/videoInput.obj and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Release/videoInputBasicDemo.exe.intermediate.manifest b/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Release/videoInputBasicDemo.exe.intermediate.manifest deleted file mode 100755 index 63689c6..0000000 --- a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Release/videoInputBasicDemo.exe.intermediate.manifest +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Release/videoInputBasicDemo.obj b/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Release/videoInputBasicDemo.obj deleted file mode 100755 index 2b618b8..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/Release/videoInputBasicDemo.obj and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/requiredLibs/GlAux.Lib b/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/requiredLibs/GlAux.Lib deleted file mode 100755 index 2470670..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/requiredLibs/GlAux.Lib and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/requiredLibs/GlU32.Lib b/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/requiredLibs/GlU32.Lib deleted file mode 100755 index 298f6c7..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/requiredLibs/GlU32.Lib and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/requiredLibs/OpenGL32.Lib b/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/requiredLibs/OpenGL32.Lib deleted file mode 100755 index ba089e8..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/requiredLibs/OpenGL32.Lib and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/requiredLibs/dxguid.lib b/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/requiredLibs/dxguid.lib deleted file mode 100755 index 07c68bb..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/requiredLibs/dxguid.lib and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/requiredLibs/glfw.lib b/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/requiredLibs/glfw.lib deleted file mode 100755 index 58985bc..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/requiredLibs/glfw.lib and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/requiredLibs/ole32.lib b/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/requiredLibs/ole32.lib deleted file mode 100755 index a9aa665..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/requiredLibs/ole32.lib and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/requiredLibs/oleaut32.lib b/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/requiredLibs/oleaut32.lib deleted file mode 100755 index d33a426..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/requiredLibs/oleaut32.lib and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/requiredLibs/quartz.lib b/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/requiredLibs/quartz.lib deleted file mode 100755 index 89901e8..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/requiredLibs/quartz.lib and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/requiredLibs/strmbasd.lib b/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/requiredLibs/strmbasd.lib deleted file mode 100755 index 515f6ca..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/requiredLibs/strmbasd.lib and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/requiredLibs/strmbase.lib b/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/requiredLibs/strmbase.lib deleted file mode 100755 index 218391a..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/requiredLibs/strmbase.lib and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/requiredLibs/strmiids.lib b/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/requiredLibs/strmiids.lib deleted file mode 100755 index bd8725d..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/requiredLibs/strmiids.lib and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/requiredLibs/uuid.lib b/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/requiredLibs/uuid.lib deleted file mode 100755 index 22d0437..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/requiredLibs/uuid.lib and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/src/glfw.h b/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/src/glfw.h deleted file mode 100755 index ee4bbff..0000000 --- a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/src/glfw.h +++ /dev/null @@ -1,465 +0,0 @@ -//======================================================================== -// GLFW - An OpenGL framework -// File: glfw.h -// API version: 2.4 -// Author: Marcus Geelnard (marcus.geelnard at home.se) -// WWW: http://glfw.sourceforge.net -//------------------------------------------------------------------------ -// Copyright (c) 2002-2004 Marcus Geelnard -// -// This software is provided 'as-is', without any express or implied -// warranty. In no event will the authors be held liable for any damages -// arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose, -// including commercial applications, and to alter it and redistribute it -// freely, subject to the following restrictions: -// -// 1. The origin of this software must not be misrepresented; you must not -// claim that you wrote the original software. If you use this software -// in a product, an acknowledgment in the product documentation would -// be appreciated but is not required. -// -// 2. Altered source versions must be plainly marked as such, and must not -// be misrepresented as being the original software. -// -// 3. This notice may not be removed or altered from any source -// distribution. -// -// Marcus Geelnard -// marcus.geelnard at home.se -//------------------------------------------------------------------------ -// $Id: glfw.h,v 1.7 2004/02/14 20:42:00 marcus256 Exp $ -//======================================================================== - -#ifndef __glfw_h_ -#define __glfw_h_ - -#ifdef __cplusplus -extern "C" { -#endif - - -//======================================================================== -// Global definitions -//======================================================================== - -// We need a NULL pointer from time to time -#ifndef NULL - #ifdef __cplusplus - #define NULL 0 - #else - #define NULL ((void *)0) - #endif -#endif // NULL - - -// ------------------- BEGIN SYSTEM/COMPILER SPECIFIC -------------------- - -// Please report any probles that you find with your compiler, which may -// be solved in this section! There are several compilers that I have not -// been able to test this file with yet. - -// First: If we are we on Windows, we want a single define for it (_WIN32) -// (Note: For Cygwin the compiler flag -mwin32 should be used, but to -// make sure that things run smoothly for Cygwin users, we add __CYGWIN__ -// to the list of "valid Win32 identifiers", which removes the need for -// -mwin32) -#if !defined(_WIN32) && (defined(__WIN32__) || defined(WIN32) || defined(__CYGWIN__)) - #define _WIN32 -#endif // _WIN32 - -// In order for extension support to be portable, we need to define an -// OpenGL function call method. We use the keyword APIENTRY, which is -// defined for Win32. (Note: Windows also needs this for ) -#ifndef APIENTRY - #ifdef _WIN32 - #define APIENTRY __stdcall - #else - #define APIENTRY - #endif - #define GL_APIENTRY_DEFINED -#endif // APIENTRY - - -// The following three defines are here solely to make some Windows-based -// files happy. Theoretically we could include , but -// it has the major drawback of severely polluting our namespace. - -// Under Windows, we need WINGDIAPI defined -#if !defined(WINGDIAPI) && defined(_WIN32) - #if defined(_MSC_VER) || defined(__BORLANDC__) - // Microsoft Visual C++ & Borland C++ Builder - #define WINGDIAPI __declspec(dllimport) - #elif defined(__LCC__) - // LCC-Win32 - #define WINGDIAPI __stdcall - #else - // Others (e.g. MinGW, Cygwin) - #define WINGDIAPI extern - #endif - #define GL_WINGDIAPI_DEFINED -#endif // WINGDIAPI - -// Some files also need CALLBACK defined -#if !defined(CALLBACK) && defined(_WIN32) - #if defined(_MSC_VER) - // Microsoft Visual C++ - #if (defined(_M_MRX000) || defined(_M_IX86) || defined(_M_ALPHA) || defined(_M_PPC)) && !defined(MIDL_PASS) - #define CALLBACK __stdcall - #else - #define CALLBACK - #endif - #else - // Other Windows compilers - #define CALLBACK __stdcall - #endif - #define GLU_CALLBACK_DEFINED -#endif // CALLBACK - -// Microsoft Visual C++ & Borland C++ needs wchar_t -#if defined(_WIN32) && (defined(_MSC_VER) || defined(__BORLANDC__)) && !defined(_WCHAR_T_DEFINED) - typedef unsigned short wchar_t; - #define _WCHAR_T_DEFINED -#endif // _WCHAR_T_DEFINED - - -// ---------------- GLFW related system specific defines ----------------- - -#if defined(_WIN32) && defined(GLFW_BUILD_DLL) - - // We are building a Win32 DLL - #define GLFWAPI __declspec(dllexport) - #define GLFWAPIENTRY __stdcall - #define GLFWCALL __stdcall - -#elif defined(_WIN32) && defined(GLFW_DLL) - - // We are calling a Win32 DLL - #if defined(__LCC__) - #define GLFWAPI extern - #else - #define GLFWAPI __declspec(dllimport) - #endif - #define GLFWAPIENTRY __stdcall - #define GLFWCALL __stdcall - -#else - - // We are either building/calling a static lib or we are non-win32 - #define GLFWAPIENTRY - #define GLFWAPI - #define GLFWCALL - -#endif - -// -------------------- END SYSTEM/COMPILER SPECIFIC --------------------- - -// Include standard OpenGL headers: GLFW uses GL_FALSE/GL_TRUE, and it is -// convenient for the user to only have to include . This also -// solves the problem with Windows and needing some -// special defines which normally requires the user to include -// (which is not a nice solution for portable programs). -#if defined(__APPLE_CC__) - #include - #include -#else - #include - #include -#endif - - -//======================================================================== -// GLFW version -//======================================================================== - -#define GLFW_VERSION_MAJOR 2 -#define GLFW_VERSION_MINOR 4 -#define GLFW_VERSION_REVISION 2 - - -//======================================================================== -// Input handling definitions -//======================================================================== - -// Key and button state/action definitions -#define GLFW_RELEASE 0 -#define GLFW_PRESS 1 - -// Keyboard key definitions: 8-bit ISO-8859-1 (Latin 1) encoding is used -// for printable keys (such as A-Z, 0-9 etc), and values above 256 -// represent special (non-printable) keys (e.g. F1, Page Up etc). -#define GLFW_KEY_UNKNOWN -1 -#define GLFW_KEY_SPACE 32 -#define GLFW_KEY_SPECIAL 256 -#define GLFW_KEY_ESC (GLFW_KEY_SPECIAL+1) -#define GLFW_KEY_F1 (GLFW_KEY_SPECIAL+2) -#define GLFW_KEY_F2 (GLFW_KEY_SPECIAL+3) -#define GLFW_KEY_F3 (GLFW_KEY_SPECIAL+4) -#define GLFW_KEY_F4 (GLFW_KEY_SPECIAL+5) -#define GLFW_KEY_F5 (GLFW_KEY_SPECIAL+6) -#define GLFW_KEY_F6 (GLFW_KEY_SPECIAL+7) -#define GLFW_KEY_F7 (GLFW_KEY_SPECIAL+8) -#define GLFW_KEY_F8 (GLFW_KEY_SPECIAL+9) -#define GLFW_KEY_F9 (GLFW_KEY_SPECIAL+10) -#define GLFW_KEY_F10 (GLFW_KEY_SPECIAL+11) -#define GLFW_KEY_F11 (GLFW_KEY_SPECIAL+12) -#define GLFW_KEY_F12 (GLFW_KEY_SPECIAL+13) -#define GLFW_KEY_F13 (GLFW_KEY_SPECIAL+14) -#define GLFW_KEY_F14 (GLFW_KEY_SPECIAL+15) -#define GLFW_KEY_F15 (GLFW_KEY_SPECIAL+16) -#define GLFW_KEY_F16 (GLFW_KEY_SPECIAL+17) -#define GLFW_KEY_F17 (GLFW_KEY_SPECIAL+18) -#define GLFW_KEY_F18 (GLFW_KEY_SPECIAL+19) -#define GLFW_KEY_F19 (GLFW_KEY_SPECIAL+20) -#define GLFW_KEY_F20 (GLFW_KEY_SPECIAL+21) -#define GLFW_KEY_F21 (GLFW_KEY_SPECIAL+22) -#define GLFW_KEY_F22 (GLFW_KEY_SPECIAL+23) -#define GLFW_KEY_F23 (GLFW_KEY_SPECIAL+24) -#define GLFW_KEY_F24 (GLFW_KEY_SPECIAL+25) -#define GLFW_KEY_F25 (GLFW_KEY_SPECIAL+26) -#define GLFW_KEY_UP (GLFW_KEY_SPECIAL+27) -#define GLFW_KEY_DOWN (GLFW_KEY_SPECIAL+28) -#define GLFW_KEY_LEFT (GLFW_KEY_SPECIAL+29) -#define GLFW_KEY_RIGHT (GLFW_KEY_SPECIAL+30) -#define GLFW_KEY_LSHIFT (GLFW_KEY_SPECIAL+31) -#define GLFW_KEY_RSHIFT (GLFW_KEY_SPECIAL+32) -#define GLFW_KEY_LCTRL (GLFW_KEY_SPECIAL+33) -#define GLFW_KEY_RCTRL (GLFW_KEY_SPECIAL+34) -#define GLFW_KEY_LALT (GLFW_KEY_SPECIAL+35) -#define GLFW_KEY_RALT (GLFW_KEY_SPECIAL+36) -#define GLFW_KEY_TAB (GLFW_KEY_SPECIAL+37) -#define GLFW_KEY_ENTER (GLFW_KEY_SPECIAL+38) -#define GLFW_KEY_BACKSPACE (GLFW_KEY_SPECIAL+39) -#define GLFW_KEY_INSERT (GLFW_KEY_SPECIAL+40) -#define GLFW_KEY_DEL (GLFW_KEY_SPECIAL+41) -#define GLFW_KEY_PAGEUP (GLFW_KEY_SPECIAL+42) -#define GLFW_KEY_PAGEDOWN (GLFW_KEY_SPECIAL+43) -#define GLFW_KEY_HOME (GLFW_KEY_SPECIAL+44) -#define GLFW_KEY_END (GLFW_KEY_SPECIAL+45) -#define GLFW_KEY_KP_0 (GLFW_KEY_SPECIAL+46) -#define GLFW_KEY_KP_1 (GLFW_KEY_SPECIAL+47) -#define GLFW_KEY_KP_2 (GLFW_KEY_SPECIAL+48) -#define GLFW_KEY_KP_3 (GLFW_KEY_SPECIAL+49) -#define GLFW_KEY_KP_4 (GLFW_KEY_SPECIAL+50) -#define GLFW_KEY_KP_5 (GLFW_KEY_SPECIAL+51) -#define GLFW_KEY_KP_6 (GLFW_KEY_SPECIAL+52) -#define GLFW_KEY_KP_7 (GLFW_KEY_SPECIAL+53) -#define GLFW_KEY_KP_8 (GLFW_KEY_SPECIAL+54) -#define GLFW_KEY_KP_9 (GLFW_KEY_SPECIAL+55) -#define GLFW_KEY_KP_DIVIDE (GLFW_KEY_SPECIAL+56) -#define GLFW_KEY_KP_MULTIPLY (GLFW_KEY_SPECIAL+57) -#define GLFW_KEY_KP_SUBTRACT (GLFW_KEY_SPECIAL+58) -#define GLFW_KEY_KP_ADD (GLFW_KEY_SPECIAL+59) -#define GLFW_KEY_KP_DECIMAL (GLFW_KEY_SPECIAL+60) -#define GLFW_KEY_KP_EQUAL (GLFW_KEY_SPECIAL+61) -#define GLFW_KEY_KP_ENTER (GLFW_KEY_SPECIAL+62) -#define GLFW_KEY_LAST GLFW_KEY_KP_ENTER - -// Mouse button definitions -#define GLFW_MOUSE_BUTTON_LEFT 0 -#define GLFW_MOUSE_BUTTON_RIGHT 1 -#define GLFW_MOUSE_BUTTON_MIDDLE 2 -#define GLFW_MOUSE_BUTTON_LAST GLFW_MOUSE_BUTTON_MIDDLE - -// Joystick identifiers -#define GLFW_JOYSTICK_1 0 -#define GLFW_JOYSTICK_2 1 -#define GLFW_JOYSTICK_3 2 -#define GLFW_JOYSTICK_4 3 -#define GLFW_JOYSTICK_5 4 -#define GLFW_JOYSTICK_6 5 -#define GLFW_JOYSTICK_7 6 -#define GLFW_JOYSTICK_8 7 -#define GLFW_JOYSTICK_9 8 -#define GLFW_JOYSTICK_10 9 -#define GLFW_JOYSTICK_11 10 -#define GLFW_JOYSTICK_12 11 -#define GLFW_JOYSTICK_13 12 -#define GLFW_JOYSTICK_14 13 -#define GLFW_JOYSTICK_15 14 -#define GLFW_JOYSTICK_16 15 -#define GLFW_JOYSTICK_LAST GLFW_JOYSTICK_16 - - -//======================================================================== -// Other definitions -//======================================================================== - -// glfwOpenWindow modes -#define GLFW_WINDOW 0x00010001 -#define GLFW_FULLSCREEN 0x00010002 - -// glfwGetWindowParam tokens -#define GLFW_OPENED 0x00020001 -#define GLFW_ACTIVE 0x00020002 -#define GLFW_ICONIFIED 0x00020003 -#define GLFW_ACCELERATED 0x00020004 -#define GLFW_RED_BITS 0x00020005 -#define GLFW_GREEN_BITS 0x00020006 -#define GLFW_BLUE_BITS 0x00020007 -#define GLFW_ALPHA_BITS 0x00020008 -#define GLFW_DEPTH_BITS 0x00020009 -#define GLFW_STENCIL_BITS 0x0002000A - -// The following constants are used for both glfwGetWindowParam -// and glfwOpenWindowHint -#define GLFW_REFRESH_RATE 0x0002000B -#define GLFW_ACCUM_RED_BITS 0x0002000C -#define GLFW_ACCUM_GREEN_BITS 0x0002000D -#define GLFW_ACCUM_BLUE_BITS 0x0002000E -#define GLFW_ACCUM_ALPHA_BITS 0x0002000F -#define GLFW_AUX_BUFFERS 0x00020010 -#define GLFW_STEREO 0x00020011 - -// glfwEnable/glfwDisable tokens -#define GLFW_MOUSE_CURSOR 0x00030001 -#define GLFW_STICKY_KEYS 0x00030002 -#define GLFW_STICKY_MOUSE_BUTTONS 0x00030003 -#define GLFW_SYSTEM_KEYS 0x00030004 -#define GLFW_KEY_REPEAT 0x00030005 -#define GLFW_AUTO_POLL_EVENTS 0x00030006 - -// glfwWaitThread wait modes -#define GLFW_WAIT 0x00040001 -#define GLFW_NOWAIT 0x00040002 - -// glfwGetJoystickParam tokens -#define GLFW_PRESENT 0x00050001 -#define GLFW_AXES 0x00050002 -#define GLFW_BUTTONS 0x00050003 - -// glfwReadImage/glfwLoadTexture2D flags -#define GLFW_NO_RESCALE_BIT 0x00000001 // Only for glfwReadImage -#define GLFW_ORIGIN_UL_BIT 0x00000002 -#define GLFW_BUILD_MIPMAPS_BIT 0x00000004 // Only for glfwLoadTexture2D - -// Time spans longer than this (seconds) are considered to be infinity -#define GLFW_INFINITY 100000.0 - - -//======================================================================== -// Typedefs -//======================================================================== - -// The video mode structure used by glfwGetVideoModes() -typedef struct { - int Width, Height; - int RedBits, BlueBits, GreenBits; -} GLFWvidmode; - -// Image/texture information -typedef struct { - int Width, Height; - int Format; - int BytesPerPixel; - unsigned char *Data; -} GLFWimage; - -// Thread ID -typedef int GLFWthread; - -// Mutex object -typedef void * GLFWmutex; - -// Condition variable object -typedef void * GLFWcond; - -// Function pointer types -typedef void (GLFWCALL * GLFWwindowsizefun)(int,int); -typedef void (GLFWCALL * GLFWmousebuttonfun)(int,int); -typedef void (GLFWCALL * GLFWmouseposfun)(int,int); -typedef void (GLFWCALL * GLFWmousewheelfun)(int); -typedef void (GLFWCALL * GLFWkeyfun)(int,int); -typedef void (GLFWCALL * GLFWcharfun)(int,int); -typedef void (GLFWCALL * GLFWthreadfun)(void *); - - -//======================================================================== -// Prototypes -//======================================================================== - -// GLFW initialization, termination and version querying -GLFWAPI int GLFWAPIENTRY glfwInit( void ); -GLFWAPI void GLFWAPIENTRY glfwTerminate( void ); -GLFWAPI void GLFWAPIENTRY glfwGetVersion( int *major, int *minor, int *rev ); - -// Window handling -GLFWAPI int GLFWAPIENTRY glfwOpenWindow( int width, int height, int redbits, int greenbits, int bluebits, int alphabits, int depthbits, int stencilbits, int mode ); -GLFWAPI void GLFWAPIENTRY glfwOpenWindowHint( int target, int hint ); -GLFWAPI void GLFWAPIENTRY glfwCloseWindow( void ); -GLFWAPI void GLFWAPIENTRY glfwSetWindowTitle( const char *title ); -GLFWAPI void GLFWAPIENTRY glfwGetWindowSize( int *width, int *height ); -GLFWAPI void GLFWAPIENTRY glfwSetWindowSize( int width, int height ); -GLFWAPI void GLFWAPIENTRY glfwSetWindowPos( int x, int y ); -GLFWAPI void GLFWAPIENTRY glfwIconifyWindow( void ); -GLFWAPI void GLFWAPIENTRY glfwRestoreWindow( void ); -GLFWAPI void GLFWAPIENTRY glfwSwapBuffers( void ); -GLFWAPI void GLFWAPIENTRY glfwSwapInterval( int interval ); -GLFWAPI int GLFWAPIENTRY glfwGetWindowParam( int param ); -GLFWAPI void GLFWAPIENTRY glfwSetWindowSizeCallback( GLFWwindowsizefun cbfun ); - -// Video mode functions -GLFWAPI int GLFWAPIENTRY glfwGetVideoModes( GLFWvidmode *list, int maxcount ); -GLFWAPI void GLFWAPIENTRY glfwGetDesktopMode( GLFWvidmode *mode ); - -// Input handling -GLFWAPI void GLFWAPIENTRY glfwPollEvents( void ); -GLFWAPI int GLFWAPIENTRY glfwGetKey( int key ); -GLFWAPI int GLFWAPIENTRY glfwGetMouseButton( int button ); -GLFWAPI void GLFWAPIENTRY glfwGetMousePos( int *xpos, int *ypos ); -GLFWAPI void GLFWAPIENTRY glfwSetMousePos( int xpos, int ypos ); -GLFWAPI int GLFWAPIENTRY glfwGetMouseWheel( void ); -GLFWAPI void GLFWAPIENTRY glfwSetMouseWheel( int pos ); -GLFWAPI void GLFWAPIENTRY glfwSetKeyCallback( GLFWkeyfun cbfun ); -GLFWAPI void GLFWAPIENTRY glfwSetCharCallback( GLFWcharfun cbfun ); -GLFWAPI void GLFWAPIENTRY glfwSetMouseButtonCallback( GLFWmousebuttonfun cbfun ); -GLFWAPI void GLFWAPIENTRY glfwSetMousePosCallback( GLFWmouseposfun cbfun ); -GLFWAPI void GLFWAPIENTRY glfwSetMouseWheelCallback( GLFWmousewheelfun cbfun ); - -// Joystick input -GLFWAPI int GLFWAPIENTRY glfwGetJoystickParam( int joy, int param ); -GLFWAPI int GLFWAPIENTRY glfwGetJoystickPos( int joy, float *pos, int numaxes ); -GLFWAPI int GLFWAPIENTRY glfwGetJoystickButtons( int joy, unsigned char *buttons, int numbuttons ); - -// Time -GLFWAPI double GLFWAPIENTRY glfwGetTime( void ); -GLFWAPI void GLFWAPIENTRY glfwSetTime( double time ); -GLFWAPI void GLFWAPIENTRY glfwSleep( double time ); - -// Extension support -GLFWAPI int GLFWAPIENTRY glfwExtensionSupported( const char *extension ); -GLFWAPI void* GLFWAPIENTRY glfwGetProcAddress( const char *procname ); -GLFWAPI void GLFWAPIENTRY glfwGetGLVersion( int *major, int *minor, int *rev ); - -// Threading support -GLFWAPI GLFWthread GLFWAPIENTRY glfwCreateThread( GLFWthreadfun fun, void *arg ); -GLFWAPI void GLFWAPIENTRY glfwDestroyThread( GLFWthread ID ); -GLFWAPI int GLFWAPIENTRY glfwWaitThread( GLFWthread ID, int waitmode ); -GLFWAPI GLFWthread GLFWAPIENTRY glfwGetThreadID( void ); -GLFWAPI GLFWmutex GLFWAPIENTRY glfwCreateMutex( void ); -GLFWAPI void GLFWAPIENTRY glfwDestroyMutex( GLFWmutex mutex ); -GLFWAPI void GLFWAPIENTRY glfwLockMutex( GLFWmutex mutex ); -GLFWAPI void GLFWAPIENTRY glfwUnlockMutex( GLFWmutex mutex ); -GLFWAPI GLFWcond GLFWAPIENTRY glfwCreateCond( void ); -GLFWAPI void GLFWAPIENTRY glfwDestroyCond( GLFWcond cond ); -GLFWAPI void GLFWAPIENTRY glfwWaitCond( GLFWcond cond, GLFWmutex mutex, double timeout ); -GLFWAPI void GLFWAPIENTRY glfwSignalCond( GLFWcond cond ); -GLFWAPI void GLFWAPIENTRY glfwBroadcastCond( GLFWcond cond ); -GLFWAPI int GLFWAPIENTRY glfwGetNumberOfProcessors( void ); - -// Enable/disable functions -GLFWAPI void GLFWAPIENTRY glfwEnable( int token ); -GLFWAPI void GLFWAPIENTRY glfwDisable( int token ); - -// Image/texture I/O support -GLFWAPI int GLFWAPIENTRY glfwReadImage( const char *name, GLFWimage *img, int flags ); -GLFWAPI void GLFWAPIENTRY glfwFreeImage( GLFWimage *img ); -GLFWAPI int GLFWAPIENTRY glfwLoadTexture2D( const char *name, int flags ); - - -#ifdef __cplusplus -} -#endif - -#endif // __glfw_h_ diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/src/imageTexture.cpp b/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/src/imageTexture.cpp deleted file mode 100755 index f1dc9bb..0000000 --- a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/src/imageTexture.cpp +++ /dev/null @@ -1,120 +0,0 @@ - -#include "imageTexture.h" - - - -imageTexture::imageTexture(int w, int h, int internalGlDataType){ - - tex_w = w; - tex_h = h; - - tex_u = 1.0f; - tex_t = 1.0f; - - // if w, h are not powers of 2 you will not see anything. - // create the named texture: - - myTex = new GLuint[1]; - //glPixelStorei(GL_UNPACK_ALIGNMENT, 1); // not necessary, I think - glGenTextures(1, myTex); // could be more then one, but for now, just one - - glEnable(GL_TEXTURE_2D); - - glBindTexture(GL_TEXTURE_2D, myTex[0]); - glTexImage2D(GL_TEXTURE_2D, 0, internalGlDataType, tex_w, tex_h, 0, GL_LUMINANCE, GL_UNSIGNED_BYTE, 0); // init to black... - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); - - glDisable(GL_TEXTURE_2D); - - -} - - - - -void imageTexture::loadImageData(unsigned char * data, int w, int h, int glDataType){ - - if ( w > tex_w || h > tex_h) { - printf("image data too big - bailing \n"); - return; - } - - - //compute new tex co-ords based on the ratio of data's w, h to texture w,h; - - tex_t = (float)w / (float)tex_w; - tex_u = (float)h / (float)tex_h; - - // update the texture image: - - glEnable(GL_TEXTURE_2D); - - glBindTexture(GL_TEXTURE_2D, myTex[0]); - glTexSubImage2D(GL_TEXTURE_2D,0,0,0,w,h,glDataType,GL_UNSIGNED_BYTE,data); - - glDisable(GL_TEXTURE_2D); -} - -//================================================================================= -void imageTexture::renderTexture(int x, int y, int w, int h){ - - - glEnable(GL_TEXTURE_2D); - - // bind the texture - glBindTexture( GL_TEXTURE_2D, myTex[0] ); - - float px0 = x ; // up to you to get the aspect ratio right - float py0 = y ; - float px1 = x+w; - float py1 = y+h; - - glBegin( GL_QUADS ); - glTexCoord2f(0.0,0.0); glVertex3f(px0, py0,0); - glTexCoord2f(tex_t,0.0); glVertex3f(px1, py0,0); - glTexCoord2f(tex_t,tex_u); glVertex3f(px1, py1,0); - glTexCoord2f(0.0,tex_u); glVertex3f(px0, py1,0); - glEnd(); - - glDisable(GL_TEXTURE_2D); - -} - -//================================================================================= -void imageTexture::renderTextureWithBox(int x, int y, int w, int h, float r, float g, float b, int border){ - - - - // bind the texture - - float px0 = x ; // up to you to get the aspect ratio right - float py0 = y ; - float px1 = x+w; - float py1 = y+h; - - glColor3f(r,g,b); - glBegin( GL_QUADS ); - glVertex3f(px0-border, py0-border,0); - glVertex3f(px1+border, py0-border,0); - glVertex3f(px1+border, py1+border,0); - glVertex3f(px0-border, py1+border,0); - glEnd(); - - glEnable(GL_TEXTURE_2D); - glBindTexture( GL_TEXTURE_2D, myTex[0] ); - - glBegin( GL_QUADS ); - glTexCoord2f(0.0,0.0); glVertex3f(px0, py0,0); - glTexCoord2f(tex_t,0.0); glVertex3f(px1, py0,0); - glTexCoord2f(tex_t,tex_u); glVertex3f(px1, py1,0); - glTexCoord2f(0.0,tex_u); glVertex3f(px0, py1,0); - glEnd(); - - glDisable(GL_TEXTURE_2D); - -} - diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/src/imageTexture.h b/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/src/imageTexture.h deleted file mode 100755 index 94c3126..0000000 --- a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/src/imageTexture.h +++ /dev/null @@ -1,31 +0,0 @@ -#ifndef _IMAGE_TEXTURE_H_ -#define _IMAGE_TEXTURE_H_ - -#include "glfw.h" //gl shit -#include - - -class imageTexture { - - - public : - - imageTexture(int w, int h, int internalGlDataType); - // if w, h are not powers of 2 you will not see anything. - - void loadImageData(unsigned char * data, int w, int h, int glDataType); - // w,h here MUST be <= initial w,h - - void renderTexture(int x, int y, int w, int h); - - void renderTextureWithBox(int x, int y, int w, int h, float r, float g, float b, int border); - - float tex_t, tex_u; - - private: - int tex_w, tex_h; - GLuint * myTex; - -}; - -#endif diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/src/simpleApp.cpp b/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/src/simpleApp.cpp deleted file mode 100755 index b29121e..0000000 --- a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/src/simpleApp.cpp +++ /dev/null @@ -1,86 +0,0 @@ -#include "simpleApp.h" - -simpleApp::simpleApp(){ - -} - -void simpleApp::idle(){ - -} - -void simpleApp::init(){ - -} - - -void simpleApp::draw(){ - -} - -void simpleApp::keyDown (char c){ - -} - -void simpleApp::mouseMove( float x, float y ){ - -} - -void simpleApp::mouseDrag( float x, float y ){ - -} - -void simpleApp::mouseDown( float x, float y, int button ){ - -} - -void simpleApp::mouseUp ( float x, float y, int button ){ - -} - - -void simpleApp::printYo(){ - -} - - -void simpleApp::setupScreen(){ - - int w, h; - - glfwGetWindowSize( &w, &h ); - float halfFov, theTan, screenFov, aspect; - - screenFov = 60.0f; - - float eyeX = (float)w / 2.0; - float eyeY = (float)h / 2.0; - halfFov = PI * screenFov / 360.0; - theTan = tanf(halfFov); - float dist = eyeY / theTan; - float nearDist = dist / 10.0; // near / far clip plane - float farDist = dist * 10.0; - aspect = (float)w/(float)h; - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(screenFov, aspect, nearDist, farDist); - gluLookAt(eyeX, eyeY, dist, - eyeX, eyeY, 0.0, 0.0, 1.0, 0.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - - - -} - - - - -/* - simpleApp : openFullscreen; - coordSystem; - swap(); - - -*/ - diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/src/simpleApp.h b/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/src/simpleApp.h deleted file mode 100755 index dfd389d..0000000 --- a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/src/simpleApp.h +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef _SIMPLE_APP -#define _SIMPLE_APP - -#include -#include "glfw.h" - -#define PI 3.141592654 -#include - -class simpleApp{ - - public: - simpleApp(); - void printYo(); - virtual void idle(); - virtual void init(); - virtual void draw(); - virtual void keyDown (char c); - virtual void mouseMove( float x, float y ); - virtual void mouseDrag( float x, float y ); - virtual void mouseDown( float x, float y, int button ); - virtual void mouseUp ( float x, float y, int button ); - - - void setupScreen(); -}; - -#endif // _SIMPLE_APP \ No newline at end of file diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/src/stdafx.cpp b/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/src/stdafx.cpp deleted file mode 100755 index 2bb5769..0000000 --- a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/src/stdafx.cpp +++ /dev/null @@ -1,8 +0,0 @@ -// stdafx.cpp : source file that includes just the standard includes -// videoInputBasicDemo.pch will be the pre-compiled header -// stdafx.obj will contain the pre-compiled type information - -#include "stdafx.h" - -// TODO: reference any additional headers you need in STDAFX.H -// and not in this file diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/src/stdafx.h b/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/src/stdafx.h deleted file mode 100755 index 930e7cf..0000000 --- a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/src/stdafx.h +++ /dev/null @@ -1,19 +0,0 @@ -// stdafx.h : include file for standard system include files, -// or project specific include files that are used frequently, but -// are changed infrequently -// - -#pragma once - - -#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers -#include -#include -#include "videoInput.h" - -#include -#include "glfw.h" -#include "triangleApp.h" -#include "windows.h" - -// TODO: reference additional headers your program requires here diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/src/triangleApp.h b/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/src/triangleApp.h deleted file mode 100755 index 614524c..0000000 --- a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/src/triangleApp.h +++ /dev/null @@ -1,35 +0,0 @@ -#ifndef _TRIANGLE_APP - -#include -#include "glfw.h" -#include "simpleApp.h" -#include "imageTexture.h" -#include "videoInput.h" - - -class triangleApp : public simpleApp{ - - public: - triangleApp(); - virtual void idle(); - virtual void init(); - virtual void draw(); - virtual void keyDown (char c); - virtual void mouseMove( float x, float y ); - virtual void mouseDrag( float x, float y ); - virtual void mouseDown( float x, float y, int button ); - virtual void mouseUp ( float x, float y, int button ); - - - imageTexture * IT; - imageTexture * IT2; - videoInput VI; - - unsigned char * frame; - unsigned char * frame2; - - - -}; - -#endif // _triangle_APP \ No newline at end of file diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/videoInputBasicDemo.sln b/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/videoInputBasicDemo.sln deleted file mode 100755 index 64dc776..0000000 --- a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/videoInputBasicDemo.sln +++ /dev/null @@ -1,20 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 10.00 -# Visual C++ Express 2008 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "videoInputBasicDemo", "videoInputBasicDemo.vcproj", "{B575FBFC-3E99-4993-9293-74AC0A6802CF}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Win32 = Debug|Win32 - Release|Win32 = Release|Win32 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B575FBFC-3E99-4993-9293-74AC0A6802CF}.Debug|Win32.ActiveCfg = Debug|Win32 - {B575FBFC-3E99-4993-9293-74AC0A6802CF}.Debug|Win32.Build.0 = Debug|Win32 - {B575FBFC-3E99-4993-9293-74AC0A6802CF}.Release|Win32.ActiveCfg = Release|Win32 - {B575FBFC-3E99-4993-9293-74AC0A6802CF}.Release|Win32.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/videoInputBasicDemo.suo b/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/videoInputBasicDemo.suo deleted file mode 100755 index 2233f0f..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/videoInputBasicDemo.suo and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/videoInputBasicDemo.vcproj b/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/videoInputBasicDemo.vcproj deleted file mode 100755 index a2a78e6..0000000 --- a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/videoInputBasicDemo.vcproj +++ /dev/null @@ -1,297 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/videoInputSrcAndDemos/VC2008-videoInputcompileAsLib/Debug/BuildLog.htm b/videoInputSrcAndDemos/VC2008-videoInputcompileAsLib/Debug/BuildLog.htm deleted file mode 100755 index 1427c42..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputcompileAsLib/Debug/BuildLog.htm and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputcompileAsLib/Debug/vc90.idb b/videoInputSrcAndDemos/VC2008-videoInputcompileAsLib/Debug/vc90.idb deleted file mode 100755 index 479a81a..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputcompileAsLib/Debug/vc90.idb and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputcompileAsLib/Debug/vc90.pdb b/videoInputSrcAndDemos/VC2008-videoInputcompileAsLib/Debug/vc90.pdb deleted file mode 100755 index ddd8655..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputcompileAsLib/Debug/vc90.pdb and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputcompileAsLib/Debug/videoInput.lib b/videoInputSrcAndDemos/VC2008-videoInputcompileAsLib/Debug/videoInput.lib deleted file mode 100755 index 769b777..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputcompileAsLib/Debug/videoInput.lib and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputcompileAsLib/Debug/videoInput.obj b/videoInputSrcAndDemos/VC2008-videoInputcompileAsLib/Debug/videoInput.obj deleted file mode 100755 index 63a1bba..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputcompileAsLib/Debug/videoInput.obj and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputcompileAsLib/Release/BuildLog.htm b/videoInputSrcAndDemos/VC2008-videoInputcompileAsLib/Release/BuildLog.htm deleted file mode 100755 index 80fe614..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputcompileAsLib/Release/BuildLog.htm and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputcompileAsLib/Release/vc90.idb b/videoInputSrcAndDemos/VC2008-videoInputcompileAsLib/Release/vc90.idb deleted file mode 100755 index a2c12c8..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputcompileAsLib/Release/vc90.idb and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputcompileAsLib/Release/vc90.pdb b/videoInputSrcAndDemos/VC2008-videoInputcompileAsLib/Release/vc90.pdb deleted file mode 100755 index 68dd97c..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputcompileAsLib/Release/vc90.pdb and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputcompileAsLib/Release/videoInput.obj b/videoInputSrcAndDemos/VC2008-videoInputcompileAsLib/Release/videoInput.obj deleted file mode 100755 index 8288601..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputcompileAsLib/Release/videoInput.obj and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputcompileAsLib/dxguid.lib b/videoInputSrcAndDemos/VC2008-videoInputcompileAsLib/dxguid.lib deleted file mode 100755 index 07c68bb..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputcompileAsLib/dxguid.lib and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputcompileAsLib/ole32.lib b/videoInputSrcAndDemos/VC2008-videoInputcompileAsLib/ole32.lib deleted file mode 100755 index a9aa665..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputcompileAsLib/ole32.lib and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputcompileAsLib/oleaut32.lib b/videoInputSrcAndDemos/VC2008-videoInputcompileAsLib/oleaut32.lib deleted file mode 100755 index d33a426..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputcompileAsLib/oleaut32.lib and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputcompileAsLib/quartz.lib b/videoInputSrcAndDemos/VC2008-videoInputcompileAsLib/quartz.lib deleted file mode 100755 index 89901e8..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputcompileAsLib/quartz.lib and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputcompileAsLib/strmbasd.lib b/videoInputSrcAndDemos/VC2008-videoInputcompileAsLib/strmbasd.lib deleted file mode 100755 index 515f6ca..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputcompileAsLib/strmbasd.lib and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputcompileAsLib/strmbase.lib b/videoInputSrcAndDemos/VC2008-videoInputcompileAsLib/strmbase.lib deleted file mode 100755 index 218391a..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputcompileAsLib/strmbase.lib and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputcompileAsLib/strmiids.lib b/videoInputSrcAndDemos/VC2008-videoInputcompileAsLib/strmiids.lib deleted file mode 100755 index bd8725d..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputcompileAsLib/strmiids.lib and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputcompileAsLib/uuid.lib b/videoInputSrcAndDemos/VC2008-videoInputcompileAsLib/uuid.lib deleted file mode 100755 index 22d0437..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputcompileAsLib/uuid.lib and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputcompileAsLib/videoInput.sln b/videoInputSrcAndDemos/VC2008-videoInputcompileAsLib/videoInput.sln deleted file mode 100755 index a5a4f7a..0000000 --- a/videoInputSrcAndDemos/VC2008-videoInputcompileAsLib/videoInput.sln +++ /dev/null @@ -1,20 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 10.00 -# Visual C++ Express 2008 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "videoInput", "videoInput.vcproj", "{0D49DFE2-6BF1-4AA3-95B7-010FB9273F5F}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Win32 = Debug|Win32 - Release|Win32 = Release|Win32 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {0D49DFE2-6BF1-4AA3-95B7-010FB9273F5F}.Debug|Win32.ActiveCfg = Debug|Win32 - {0D49DFE2-6BF1-4AA3-95B7-010FB9273F5F}.Debug|Win32.Build.0 = Debug|Win32 - {0D49DFE2-6BF1-4AA3-95B7-010FB9273F5F}.Release|Win32.ActiveCfg = Release|Win32 - {0D49DFE2-6BF1-4AA3-95B7-010FB9273F5F}.Release|Win32.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/videoInputSrcAndDemos/VC2008-videoInputcompileAsLib/videoInput.suo b/videoInputSrcAndDemos/VC2008-videoInputcompileAsLib/videoInput.suo deleted file mode 100755 index 7877cf9..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputcompileAsLib/videoInput.suo and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputcompileAsLib/videoInput.suo.old b/videoInputSrcAndDemos/VC2008-videoInputcompileAsLib/videoInput.suo.old deleted file mode 100755 index ace966f..0000000 Binary files a/videoInputSrcAndDemos/VC2008-videoInputcompileAsLib/videoInput.suo.old and /dev/null differ diff --git a/videoInputSrcAndDemos/VC2008-videoInputcompileAsLib/videoInput.vcproj b/videoInputSrcAndDemos/VC2008-videoInputcompileAsLib/videoInput.vcproj deleted file mode 100755 index d282df7..0000000 --- a/videoInputSrcAndDemos/VC2008-videoInputcompileAsLib/videoInput.vcproj +++ /dev/null @@ -1,178 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/requiredLibs/GlAux.Lib b/videoInputSrcAndDemos/VS-videoInputDemoWithSrc/requiredLibs/GlAux.Lib old mode 100755 new mode 100644 similarity index 100% rename from videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/requiredLibs/GlAux.Lib rename to videoInputSrcAndDemos/VS-videoInputDemoWithSrc/requiredLibs/GlAux.Lib diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/requiredLibs/GlU32.Lib b/videoInputSrcAndDemos/VS-videoInputDemoWithSrc/requiredLibs/GlU32.Lib old mode 100755 new mode 100644 similarity index 100% rename from videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/requiredLibs/GlU32.Lib rename to videoInputSrcAndDemos/VS-videoInputDemoWithSrc/requiredLibs/GlU32.Lib diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/requiredLibs/OpenGL32.Lib b/videoInputSrcAndDemos/VS-videoInputDemoWithSrc/requiredLibs/OpenGL32.Lib old mode 100755 new mode 100644 similarity index 100% rename from videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/requiredLibs/OpenGL32.Lib rename to videoInputSrcAndDemos/VS-videoInputDemoWithSrc/requiredLibs/OpenGL32.Lib diff --git a/videoInputSrcAndDemos/VC2005-videoInputCompileAsLib/dxguid.lib b/videoInputSrcAndDemos/VS-videoInputDemoWithSrc/requiredLibs/dxguid.lib old mode 100755 new mode 100644 similarity index 100% rename from videoInputSrcAndDemos/VC2005-videoInputCompileAsLib/dxguid.lib rename to videoInputSrcAndDemos/VS-videoInputDemoWithSrc/requiredLibs/dxguid.lib diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/requiredLibs/glfw.lib b/videoInputSrcAndDemos/VS-videoInputDemoWithSrc/requiredLibs/glfw.lib old mode 100755 new mode 100644 similarity index 100% rename from videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/requiredLibs/glfw.lib rename to videoInputSrcAndDemos/VS-videoInputDemoWithSrc/requiredLibs/glfw.lib diff --git a/videoInputSrcAndDemos/VC2005-videoInputCompileAsLib/ole32.lib b/videoInputSrcAndDemos/VS-videoInputDemoWithSrc/requiredLibs/ole32.lib old mode 100755 new mode 100644 similarity index 100% rename from videoInputSrcAndDemos/VC2005-videoInputCompileAsLib/ole32.lib rename to videoInputSrcAndDemos/VS-videoInputDemoWithSrc/requiredLibs/ole32.lib diff --git a/videoInputSrcAndDemos/VC2005-videoInputCompileAsLib/oleaut32.lib b/videoInputSrcAndDemos/VS-videoInputDemoWithSrc/requiredLibs/oleaut32.lib old mode 100755 new mode 100644 similarity index 100% rename from videoInputSrcAndDemos/VC2005-videoInputCompileAsLib/oleaut32.lib rename to videoInputSrcAndDemos/VS-videoInputDemoWithSrc/requiredLibs/oleaut32.lib diff --git a/videoInputSrcAndDemos/VC2005-videoInputCompileAsLib/quartz.lib b/videoInputSrcAndDemos/VS-videoInputDemoWithSrc/requiredLibs/quartz.lib old mode 100755 new mode 100644 similarity index 100% rename from videoInputSrcAndDemos/VC2005-videoInputCompileAsLib/quartz.lib rename to videoInputSrcAndDemos/VS-videoInputDemoWithSrc/requiredLibs/quartz.lib diff --git a/videoInputSrcAndDemos/VC2005-videoInputCompileAsLib/strmbasd.lib b/videoInputSrcAndDemos/VS-videoInputDemoWithSrc/requiredLibs/strmbasd.lib old mode 100755 new mode 100644 similarity index 100% rename from videoInputSrcAndDemos/VC2005-videoInputCompileAsLib/strmbasd.lib rename to videoInputSrcAndDemos/VS-videoInputDemoWithSrc/requiredLibs/strmbasd.lib diff --git a/videoInputSrcAndDemos/VC2005-videoInputCompileAsLib/strmbase.lib b/videoInputSrcAndDemos/VS-videoInputDemoWithSrc/requiredLibs/strmbase.lib old mode 100755 new mode 100644 similarity index 100% rename from videoInputSrcAndDemos/VC2005-videoInputCompileAsLib/strmbase.lib rename to videoInputSrcAndDemos/VS-videoInputDemoWithSrc/requiredLibs/strmbase.lib diff --git a/videoInputSrcAndDemos/VC2005-videoInputCompileAsLib/strmiids.lib b/videoInputSrcAndDemos/VS-videoInputDemoWithSrc/requiredLibs/strmiids.lib old mode 100755 new mode 100644 similarity index 100% rename from videoInputSrcAndDemos/VC2005-videoInputCompileAsLib/strmiids.lib rename to videoInputSrcAndDemos/VS-videoInputDemoWithSrc/requiredLibs/strmiids.lib diff --git a/videoInputSrcAndDemos/VC2005-videoInputCompileAsLib/uuid.lib b/videoInputSrcAndDemos/VS-videoInputDemoWithSrc/requiredLibs/uuid.lib old mode 100755 new mode 100644 similarity index 100% rename from videoInputSrcAndDemos/VC2005-videoInputCompileAsLib/uuid.lib rename to videoInputSrcAndDemos/VS-videoInputDemoWithSrc/requiredLibs/uuid.lib diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/src/glfw.h b/videoInputSrcAndDemos/VS-videoInputDemoWithSrc/src/glfw.h old mode 100755 new mode 100644 similarity index 100% rename from videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/src/glfw.h rename to videoInputSrcAndDemos/VS-videoInputDemoWithSrc/src/glfw.h diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/src/imageTexture.cpp b/videoInputSrcAndDemos/VS-videoInputDemoWithSrc/src/imageTexture.cpp old mode 100755 new mode 100644 similarity index 96% rename from videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/src/imageTexture.cpp rename to videoInputSrcAndDemos/VS-videoInputDemoWithSrc/src/imageTexture.cpp index f1dc9bb..8fecc8f --- a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/src/imageTexture.cpp +++ b/videoInputSrcAndDemos/VS-videoInputDemoWithSrc/src/imageTexture.cpp @@ -1,120 +1,120 @@ - -#include "imageTexture.h" - - - -imageTexture::imageTexture(int w, int h, int internalGlDataType){ - - tex_w = w; - tex_h = h; - - tex_u = 1.0f; - tex_t = 1.0f; - - // if w, h are not powers of 2 you will not see anything. - // create the named texture: - - myTex = new GLuint[1]; - //glPixelStorei(GL_UNPACK_ALIGNMENT, 1); // not necessary, I think - glGenTextures(1, myTex); // could be more then one, but for now, just one - - glEnable(GL_TEXTURE_2D); - - glBindTexture(GL_TEXTURE_2D, myTex[0]); - glTexImage2D(GL_TEXTURE_2D, 0, internalGlDataType, tex_w, tex_h, 0, GL_LUMINANCE, GL_UNSIGNED_BYTE, 0); // init to black... - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); - - glDisable(GL_TEXTURE_2D); - - -} - - - - -void imageTexture::loadImageData(unsigned char * data, int w, int h, int glDataType){ - - if ( w > tex_w || h > tex_h) { - printf("image data too big - bailing \n"); - return; - } - - - //compute new tex co-ords based on the ratio of data's w, h to texture w,h; - - tex_t = (float)w / (float)tex_w; - tex_u = (float)h / (float)tex_h; - - // update the texture image: - - glEnable(GL_TEXTURE_2D); - - glBindTexture(GL_TEXTURE_2D, myTex[0]); - glTexSubImage2D(GL_TEXTURE_2D,0,0,0,w,h,glDataType,GL_UNSIGNED_BYTE,data); - - glDisable(GL_TEXTURE_2D); -} - -//================================================================================= -void imageTexture::renderTexture(int x, int y, int w, int h){ - - - glEnable(GL_TEXTURE_2D); - - // bind the texture - glBindTexture( GL_TEXTURE_2D, myTex[0] ); - - float px0 = x ; // up to you to get the aspect ratio right - float py0 = y ; - float px1 = x+w; - float py1 = y+h; - - glBegin( GL_QUADS ); - glTexCoord2f(0.0,0.0); glVertex3f(px0, py0,0); - glTexCoord2f(tex_t,0.0); glVertex3f(px1, py0,0); - glTexCoord2f(tex_t,tex_u); glVertex3f(px1, py1,0); - glTexCoord2f(0.0,tex_u); glVertex3f(px0, py1,0); - glEnd(); - - glDisable(GL_TEXTURE_2D); - -} - -//================================================================================= -void imageTexture::renderTextureWithBox(int x, int y, int w, int h, float r, float g, float b, int border){ - - - - // bind the texture - - float px0 = x ; // up to you to get the aspect ratio right - float py0 = y ; - float px1 = x+w; - float py1 = y+h; - - glColor3f(r,g,b); - glBegin( GL_QUADS ); - glVertex3f(px0-border, py0-border,0); - glVertex3f(px1+border, py0-border,0); - glVertex3f(px1+border, py1+border,0); - glVertex3f(px0-border, py1+border,0); - glEnd(); - - glEnable(GL_TEXTURE_2D); - glBindTexture( GL_TEXTURE_2D, myTex[0] ); - - glBegin( GL_QUADS ); - glTexCoord2f(0.0,0.0); glVertex3f(px0, py0,0); - glTexCoord2f(tex_t,0.0); glVertex3f(px1, py0,0); - glTexCoord2f(tex_t,tex_u); glVertex3f(px1, py1,0); - glTexCoord2f(0.0,tex_u); glVertex3f(px0, py1,0); - glEnd(); - - glDisable(GL_TEXTURE_2D); - -} - + +#include "imageTexture.h" + + + +imageTexture::imageTexture(int w, int h, int internalGlDataType){ + + tex_w = w; + tex_h = h; + + tex_u = 1.0f; + tex_t = 1.0f; + + // if w, h are not powers of 2 you will not see anything. + // create the named texture: + + myTex = new GLuint[1]; + //glPixelStorei(GL_UNPACK_ALIGNMENT, 1); // not necessary, I think + glGenTextures(1, myTex); // could be more then one, but for now, just one + + glEnable(GL_TEXTURE_2D); + + glBindTexture(GL_TEXTURE_2D, myTex[0]); + glTexImage2D(GL_TEXTURE_2D, 0, internalGlDataType, tex_w, tex_h, 0, GL_LUMINANCE, GL_UNSIGNED_BYTE, 0); // init to black... + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); + + glDisable(GL_TEXTURE_2D); + + +} + + + + +void imageTexture::loadImageData(unsigned char * data, int w, int h, int glDataType){ + + if ( w > tex_w || h > tex_h) { + printf("image data too big - bailing \n"); + return; + } + + + //compute new tex co-ords based on the ratio of data's w, h to texture w,h; + + tex_t = (float)w / (float)tex_w; + tex_u = (float)h / (float)tex_h; + + // update the texture image: + + glEnable(GL_TEXTURE_2D); + + glBindTexture(GL_TEXTURE_2D, myTex[0]); + glTexSubImage2D(GL_TEXTURE_2D,0,0,0,w,h,glDataType,GL_UNSIGNED_BYTE,data); + + glDisable(GL_TEXTURE_2D); +} + +//================================================================================= +void imageTexture::renderTexture(int x, int y, int w, int h){ + + + glEnable(GL_TEXTURE_2D); + + // bind the texture + glBindTexture( GL_TEXTURE_2D, myTex[0] ); + + float px0 = x ; // up to you to get the aspect ratio right + float py0 = y ; + float px1 = x+w; + float py1 = y+h; + + glBegin( GL_QUADS ); + glTexCoord2f(0.0,0.0); glVertex3f(px0, py0,0); + glTexCoord2f(tex_t,0.0); glVertex3f(px1, py0,0); + glTexCoord2f(tex_t,tex_u); glVertex3f(px1, py1,0); + glTexCoord2f(0.0,tex_u); glVertex3f(px0, py1,0); + glEnd(); + + glDisable(GL_TEXTURE_2D); + +} + +//================================================================================= +void imageTexture::renderTextureWithBox(int x, int y, int w, int h, float r, float g, float b, int border){ + + + + // bind the texture + + float px0 = x ; // up to you to get the aspect ratio right + float py0 = y ; + float px1 = x+w; + float py1 = y+h; + + glColor3f(r,g,b); + glBegin( GL_QUADS ); + glVertex3f(px0-border, py0-border,0); + glVertex3f(px1+border, py0-border,0); + glVertex3f(px1+border, py1+border,0); + glVertex3f(px0-border, py1+border,0); + glEnd(); + + glEnable(GL_TEXTURE_2D); + glBindTexture( GL_TEXTURE_2D, myTex[0] ); + + glBegin( GL_QUADS ); + glTexCoord2f(0.0,0.0); glVertex3f(px0, py0,0); + glTexCoord2f(tex_t,0.0); glVertex3f(px1, py0,0); + glTexCoord2f(tex_t,tex_u); glVertex3f(px1, py1,0); + glTexCoord2f(0.0,tex_u); glVertex3f(px0, py1,0); + glEnd(); + + glDisable(GL_TEXTURE_2D); + +} + diff --git a/videoInputSrcAndDemos/CWProject-videoDemo/src/imageTexture.h b/videoInputSrcAndDemos/VS-videoInputDemoWithSrc/src/imageTexture.h old mode 100755 new mode 100644 similarity index 95% rename from videoInputSrcAndDemos/CWProject-videoDemo/src/imageTexture.h rename to videoInputSrcAndDemos/VS-videoInputDemoWithSrc/src/imageTexture.h index 94c3126..e8681ac --- a/videoInputSrcAndDemos/CWProject-videoDemo/src/imageTexture.h +++ b/videoInputSrcAndDemos/VS-videoInputDemoWithSrc/src/imageTexture.h @@ -1,31 +1,31 @@ -#ifndef _IMAGE_TEXTURE_H_ -#define _IMAGE_TEXTURE_H_ - -#include "glfw.h" //gl shit -#include - - -class imageTexture { - - - public : - - imageTexture(int w, int h, int internalGlDataType); - // if w, h are not powers of 2 you will not see anything. - - void loadImageData(unsigned char * data, int w, int h, int glDataType); - // w,h here MUST be <= initial w,h - - void renderTexture(int x, int y, int w, int h); - - void renderTextureWithBox(int x, int y, int w, int h, float r, float g, float b, int border); - - float tex_t, tex_u; - - private: - int tex_w, tex_h; - GLuint * myTex; - -}; - -#endif +#ifndef _IMAGE_TEXTURE_H_ +#define _IMAGE_TEXTURE_H_ + +#include "glfw.h" //gl shit +#include + + +class imageTexture { + + + public : + + imageTexture(int w, int h, int internalGlDataType); + // if w, h are not powers of 2 you will not see anything. + + void loadImageData(unsigned char * data, int w, int h, int glDataType); + // w,h here MUST be <= initial w,h + + void renderTexture(int x, int y, int w, int h); + + void renderTextureWithBox(int x, int y, int w, int h, float r, float g, float b, int border); + + float tex_t, tex_u; + + private: + int tex_w, tex_h; + GLuint * myTex; + +}; + +#endif diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/src/simpleApp.cpp b/videoInputSrcAndDemos/VS-videoInputDemoWithSrc/src/simpleApp.cpp old mode 100755 new mode 100644 similarity index 93% rename from videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/src/simpleApp.cpp rename to videoInputSrcAndDemos/VS-videoInputDemoWithSrc/src/simpleApp.cpp index b29121e..2850130 --- a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/src/simpleApp.cpp +++ b/videoInputSrcAndDemos/VS-videoInputDemoWithSrc/src/simpleApp.cpp @@ -1,86 +1,86 @@ -#include "simpleApp.h" - -simpleApp::simpleApp(){ - -} - -void simpleApp::idle(){ - -} - -void simpleApp::init(){ - -} - - -void simpleApp::draw(){ - -} - -void simpleApp::keyDown (char c){ - -} - -void simpleApp::mouseMove( float x, float y ){ - -} - -void simpleApp::mouseDrag( float x, float y ){ - -} - -void simpleApp::mouseDown( float x, float y, int button ){ - -} - -void simpleApp::mouseUp ( float x, float y, int button ){ - -} - - -void simpleApp::printYo(){ - -} - - -void simpleApp::setupScreen(){ - - int w, h; - - glfwGetWindowSize( &w, &h ); - float halfFov, theTan, screenFov, aspect; - - screenFov = 60.0f; - - float eyeX = (float)w / 2.0; - float eyeY = (float)h / 2.0; - halfFov = PI * screenFov / 360.0; - theTan = tanf(halfFov); - float dist = eyeY / theTan; - float nearDist = dist / 10.0; // near / far clip plane - float farDist = dist * 10.0; - aspect = (float)w/(float)h; - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(screenFov, aspect, nearDist, farDist); - gluLookAt(eyeX, eyeY, dist, - eyeX, eyeY, 0.0, 0.0, 1.0, 0.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - - - -} - - - - -/* - simpleApp : openFullscreen; - coordSystem; - swap(); - - -*/ - +#include "simpleApp.h" + +simpleApp::simpleApp(){ + +} + +void simpleApp::idle(){ + +} + +void simpleApp::init(){ + +} + + +void simpleApp::draw(){ + +} + +void simpleApp::keyDown (char c){ + +} + +void simpleApp::mouseMove( float x, float y ){ + +} + +void simpleApp::mouseDrag( float x, float y ){ + +} + +void simpleApp::mouseDown( float x, float y, int button ){ + +} + +void simpleApp::mouseUp ( float x, float y, int button ){ + +} + + +void simpleApp::printYo(){ + +} + + +void simpleApp::setupScreen(){ + + int w, h; + + glfwGetWindowSize( &w, &h ); + float halfFov, theTan, screenFov, aspect; + + screenFov = 60.0f; + + float eyeX = (float)w / 2.0; + float eyeY = (float)h / 2.0; + halfFov = PI * screenFov / 360.0; + theTan = tanf(halfFov); + float dist = eyeY / theTan; + float nearDist = dist / 10.0; // near / far clip plane + float farDist = dist * 10.0; + aspect = (float)w/(float)h; + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective(screenFov, aspect, nearDist, farDist); + gluLookAt(eyeX, eyeY, dist, + eyeX, eyeY, 0.0, 0.0, 1.0, 0.0); + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + + + +} + + + + +/* + simpleApp : openFullscreen; + coordSystem; + swap(); + + +*/ + diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/src/simpleApp.h b/videoInputSrcAndDemos/VS-videoInputDemoWithSrc/src/simpleApp.h old mode 100755 new mode 100644 similarity index 95% rename from videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/src/simpleApp.h rename to videoInputSrcAndDemos/VS-videoInputDemoWithSrc/src/simpleApp.h index dfd389d..9bacbee --- a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/src/simpleApp.h +++ b/videoInputSrcAndDemos/VS-videoInputDemoWithSrc/src/simpleApp.h @@ -1,28 +1,28 @@ -#ifndef _SIMPLE_APP -#define _SIMPLE_APP - -#include -#include "glfw.h" - -#define PI 3.141592654 -#include - -class simpleApp{ - - public: - simpleApp(); - void printYo(); - virtual void idle(); - virtual void init(); - virtual void draw(); - virtual void keyDown (char c); - virtual void mouseMove( float x, float y ); - virtual void mouseDrag( float x, float y ); - virtual void mouseDown( float x, float y, int button ); - virtual void mouseUp ( float x, float y, int button ); - - - void setupScreen(); -}; - +#ifndef _SIMPLE_APP +#define _SIMPLE_APP + +#include +#include "glfw.h" + +#define PI 3.141592654 +#include + +class simpleApp{ + + public: + simpleApp(); + void printYo(); + virtual void idle(); + virtual void init(); + virtual void draw(); + virtual void keyDown (char c); + virtual void mouseMove( float x, float y ); + virtual void mouseDrag( float x, float y ); + virtual void mouseDown( float x, float y, int button ); + virtual void mouseUp ( float x, float y, int button ); + + + void setupScreen(); +}; + #endif // _SIMPLE_APP \ No newline at end of file diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/src/stdafx.cpp b/videoInputSrcAndDemos/VS-videoInputDemoWithSrc/src/stdafx.cpp old mode 100755 new mode 100644 similarity index 97% rename from videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/src/stdafx.cpp rename to videoInputSrcAndDemos/VS-videoInputDemoWithSrc/src/stdafx.cpp index 2bb5769..0166c8d --- a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/src/stdafx.cpp +++ b/videoInputSrcAndDemos/VS-videoInputDemoWithSrc/src/stdafx.cpp @@ -1,8 +1,8 @@ -// stdafx.cpp : source file that includes just the standard includes -// videoInputBasicDemo.pch will be the pre-compiled header -// stdafx.obj will contain the pre-compiled type information - -#include "stdafx.h" - -// TODO: reference any additional headers you need in STDAFX.H -// and not in this file +// stdafx.cpp : source file that includes just the standard includes +// videoInputBasicDemo.pch will be the pre-compiled header +// stdafx.obj will contain the pre-compiled type information + +#include "stdafx.h" + +// TODO: reference any additional headers you need in STDAFX.H +// and not in this file diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/src/stdafx.h b/videoInputSrcAndDemos/VS-videoInputDemoWithSrc/src/stdafx.h old mode 100755 new mode 100644 similarity index 96% rename from videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/src/stdafx.h rename to videoInputSrcAndDemos/VS-videoInputDemoWithSrc/src/stdafx.h index 930e7cf..7812ce5 --- a/videoInputSrcAndDemos/VC2008-videoInputDemoWithLib/src/stdafx.h +++ b/videoInputSrcAndDemos/VS-videoInputDemoWithSrc/src/stdafx.h @@ -1,19 +1,19 @@ -// stdafx.h : include file for standard system include files, -// or project specific include files that are used frequently, but -// are changed infrequently -// - -#pragma once - - -#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers -#include -#include -#include "videoInput.h" - -#include -#include "glfw.h" -#include "triangleApp.h" -#include "windows.h" - -// TODO: reference additional headers your program requires here +// stdafx.h : include file for standard system include files, +// or project specific include files that are used frequently, but +// are changed infrequently +// + +#pragma once + + +#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers +#include +#include +#include "videoInput.h" + +#include +#include "glfw.h" +#include "triangleApp.h" +#include "windows.h" + +// TODO: reference additional headers your program requires here diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/src/triangleApp.cpp b/videoInputSrcAndDemos/VS-videoInputDemoWithSrc/src/triangleApp.cpp old mode 100755 new mode 100644 similarity index 86% rename from videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/src/triangleApp.cpp rename to videoInputSrcAndDemos/VS-videoInputDemoWithSrc/src/triangleApp.cpp index ceb45a9..925ff99 --- a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/src/triangleApp.cpp +++ b/videoInputSrcAndDemos/VS-videoInputDemoWithSrc/src/triangleApp.cpp @@ -1,126 +1,136 @@ -#include "triangleApp.h" - -//The first device we want to open -int dev = 0; - - -//empty constructor -triangleApp::triangleApp(){ - -} - -void triangleApp::init(){ - - //optional static function to list devices - //for silent listDevices use listDevices(true); - int numDevices = videoInput::listDevices(); - - //uncomment for silent setup - //videoInput::setVerbose(false); - - //we allocate our openGL texture objects - //we give them a ma size of 1024 by 1024 pixels - IT = new imageTexture(2048,2048, GL_RGB); - IT2 = new imageTexture(2048,2048, GL_RGB); - - //by default we use a callback method - //this updates whenever a new frame - //arrives if you are only ocassionally grabbing frames - //you might want to set this to false as the callback caches the last - //frame for performance reasons. - VI.setUseCallback(true); - - //try and setup device with id 0 and id 1 - //if only one device is found the second - //setupDevice should return false - - //if you want to capture at a different frame rate (default is 30) - //specify it here, you are not guaranteed to get this fps though. - //VI.setIdealFramerate(dev, 60); - - //we can specifiy the dimensions we want to capture at - //if those sizes are not possible VI will look for the next nearest matching size - VI.setupDevice(dev, 320, 240, VI_COMPOSITE); - VI.setupDevice(dev+1, 640, 480, VI_COMPOSITE); - - //once the device is setup you can try and - //set the format - this is useful if your device - //doesn't remember what format you set it to - //VI.setFormat(dev, VI_NTSC_M); //optional set the format - - //we allocate our buffer based on the number - //of pixels in each frame - this will be width * height * 3 - frame = new unsigned char[VI.getSize(dev)]; - frame2 = new unsigned char[VI.getSize(dev+1)]; - -} - -void triangleApp::idle(){ - - //check to see if we have got a new frame - if( VI.isFrameNew(dev) ) - { - //we get the pixels by passing in out buffer which gets filled - VI.getPixels(dev,frame, true); - - //we then load them into our texture - IT->loadImageData(frame, VI.getWidth(dev), VI.getHeight(dev),GL_RGB); - } - - //check to see if we have got a new frame - if( VI.isFrameNew(dev+1) ) - { - //here we are directly return the pixels into our texture - //use VI.getWidth getHeight etc so that you don't get a crash - IT2->loadImageData(VI.getPixels(dev+1, true), VI.getWidth(dev+1), VI.getHeight(dev+1), GL_RGB); - } -} - - -void triangleApp::draw(){ - - setupScreen(); - IT->renderTexture(0, 0, VI.getWidth(dev), VI.getHeight(dev)); - IT2->renderTexture(VI.getWidth(dev), 0, VI.getWidth(dev+1), VI.getHeight(dev+1)); -} - -void triangleApp::keyDown (char c){ - - //some options hooked up to key commands - if(c=='S')VI.showSettingsWindow(dev); - if(c=='D')VI.showSettingsWindow(dev+1); - - if(c=='R')VI.restartDevice(dev); - if(c=='T')VI.restartDevice(dev+1); - - if(c == '1')VI.setVideoSettingCameraPct(0, VI.propExposure, 0.1, 2); - if(c == '2')VI.setVideoSettingCameraPct(0, VI.propExposure, 0.9, 2); - - if(c == '5')VI.setVideoSettingFilterPct(0, VI.propWhiteBalance, 0.12, 2); - if(c == '6')VI.setVideoSettingFilterPct(0, VI.propWhiteBalance, 0.88, 2); - - if(c=='Q') - { - VI.stopDevice(dev); - VI.stopDevice(dev+1); - } -} - -void triangleApp::mouseMove( float x, float y ){ - - -} - -void triangleApp::mouseDrag( float x, float y ){ - -} - -void triangleApp::mouseDown( float x, float y, int button ){ - -} - -void triangleApp::mouseUp ( float x, float y, int button ){ - -} - - +#include "triangleApp.h" + +//The first device we want to open +int dev = 0; + + +//empty constructor +triangleApp::triangleApp(){ + +} + +void triangleApp::init(){ + + //uncomment for silent setup + //videoInput::setVerbose(false); + + //uncomment for multithreaded setup + //videoInput::setComMultiThreaded(true); + + //optional static function to list devices + //for silent listDevices use listDevices(true); + int numDevices = videoInput::listDevices(); + + //you can also now get the device list as a vector of strings + std::vector list = videoInput::getDeviceList(); + for(int i = 0; i < list.size(); i++){ + printf("[%i] device is %s\n", i, list[i].c_str()); + } + + //we allocate our openGL texture objects + //we give them a ma size of 1024 by 1024 pixels + IT = new imageTexture(2048,2048, GL_RGB); + IT2 = new imageTexture(2048,2048, GL_RGB); + + //by default we use a callback method + //this updates whenever a new frame + //arrives if you are only ocassionally grabbing frames + //you might want to set this to false as the callback caches the last + //frame for performance reasons. + VI.setUseCallback(true); + + //try and setup device with id 0 and id 1 + //if only one device is found the second + //setupDevice should return false + + //if you want to capture at a different frame rate (default is 30) + //specify it here, you are not guaranteed to get this fps though. + //VI.setIdealFramerate(dev, 60); + + //we can specifiy the dimensions we want to capture at + //if those sizes are not possible VI will look for the next nearest matching size + //VI.setRequestedMediaSubType((int)MEDIASUBTYPE_MJPG); + VI.setupDevice(dev, 1920, 1080, VI_COMPOSITE); + VI.setupDevice(dev+1, 1920, 1080, VI_COMPOSITE); + + //once the device is setup you can try and + //set the format - this is useful if your device + //doesn't remember what format you set it to + //VI.setFormat(dev, VI_NTSC_M); //optional set the format + + //we allocate our buffer based on the number + //of pixels in each frame - this will be width * height * 3 + frame = new unsigned char[VI.getSize(dev)]; + frame2 = new unsigned char[VI.getSize(dev+1)]; + +} + +void triangleApp::idle(){ + + //check to see if we have got a new frame + if( VI.isFrameNew(dev) ) + { + //we get the pixels by passing in out buffer which gets filled + VI.getPixels(dev,frame, true); + + //we then load them into our texture + IT->loadImageData(frame, VI.getWidth(dev), VI.getHeight(dev),GL_RGB); + } + + //check to see if we have got a new frame + if( VI.isFrameNew(dev+1) ) + { + //here we are directly return the pixels into our texture + //use VI.getWidth getHeight etc so that you don't get a crash + IT2->loadImageData(VI.getPixels(dev+1, true), VI.getWidth(dev+1), VI.getHeight(dev+1), GL_RGB); + } +} + + +void triangleApp::draw(){ + + setupScreen(); + IT->renderTexture(0, 0, VI.getWidth(dev), VI.getHeight(dev)); + IT2->renderTexture(VI.getWidth(dev), 0, VI.getWidth(dev+1), VI.getHeight(dev+1)); +} + +void triangleApp::keyDown (char c){ + + //some options hooked up to key commands + if(c=='S')VI.showSettingsWindow(dev); + if(c=='D')VI.showSettingsWindow(dev+1); + + if(c=='R')VI.restartDevice(dev); + if(c=='T')VI.restartDevice(dev+1); + + if(c == '1')VI.setVideoSettingCameraPct(0, VI.propExposure, 0.1, 2); + if(c == '2')VI.setVideoSettingCameraPct(0, VI.propExposure, 0.9, 2); + + if(c == '5')VI.setVideoSettingFilterPct(0, VI.propWhiteBalance, 0.12, 2); + if(c == '6')VI.setVideoSettingFilterPct(0, VI.propWhiteBalance, 0.88, 2); + + if(c=='Q') + { + VI.stopDevice(dev); + VI.stopDevice(dev+1); + } +} + +void triangleApp::mouseMove( float x, float y ){ + + +} + +void triangleApp::mouseDrag( float x, float y ){ + +} + +void triangleApp::mouseDown( float x, float y, int button ){ + +} + +void triangleApp::mouseUp ( float x, float y, int button ){ + +} + + diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/src/triangleApp.h b/videoInputSrcAndDemos/VS-videoInputDemoWithSrc/src/triangleApp.h old mode 100755 new mode 100644 similarity index 95% rename from videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/src/triangleApp.h rename to videoInputSrcAndDemos/VS-videoInputDemoWithSrc/src/triangleApp.h index 22a7855..0972e6c --- a/videoInputSrcAndDemos/VC2005-videoInputDemoWithSrc/src/triangleApp.h +++ b/videoInputSrcAndDemos/VS-videoInputDemoWithSrc/src/triangleApp.h @@ -1,33 +1,35 @@ -#ifndef _TRIANGLE_APP - -#include -#include "glfw.h" -#include "simpleApp.h" -#include "imageTexture.h" -#include "videoInput.h" - - -class triangleApp : public simpleApp{ - - public: - triangleApp(); - virtual void idle(); - virtual void init(); - virtual void draw(); - virtual void keyDown (char c); - virtual void mouseMove( float x, float y ); - virtual void mouseDrag( float x, float y ); - virtual void mouseDown( float x, float y, int button ); - virtual void mouseUp ( float x, float y, int button ); - - - imageTexture * IT; - imageTexture * IT2; - videoInput VI; - - unsigned char * frame; - unsigned char * frame2; - -}; - +#ifndef _TRIANGLE_APP + +#include +#include "glfw.h" +#include "simpleApp.h" +#include "imageTexture.h" +#include "videoInput.h" +#include "uuids.h" + +class triangleApp : public simpleApp{ + + public: + triangleApp(); + virtual void idle(); + virtual void init(); + virtual void draw(); + virtual void keyDown (char c); + virtual void mouseMove( float x, float y ); + virtual void mouseDrag( float x, float y ); + virtual void mouseDown( float x, float y, int button ); + virtual void mouseUp ( float x, float y, int button ); + + + imageTexture * IT; + imageTexture * IT2; + videoInput VI; + + unsigned char * frame; + unsigned char * frame2; + + + +}; + #endif // _triangle_APP \ No newline at end of file diff --git a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/src/videoInputBasicDemo.cpp b/videoInputSrcAndDemos/VS-videoInputDemoWithSrc/src/videoInputBasicDemo.cpp old mode 100755 new mode 100644 similarity index 95% rename from videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/src/videoInputBasicDemo.cpp rename to videoInputSrcAndDemos/VS-videoInputDemoWithSrc/src/videoInputBasicDemo.cpp index a55d167..f26c968 --- a/videoInputSrcAndDemos/VC2008-videoInputDemoWithSrc/src/videoInputBasicDemo.cpp +++ b/videoInputSrcAndDemos/VS-videoInputDemoWithSrc/src/videoInputBasicDemo.cpp @@ -1,107 +1,107 @@ -// videoInputBasicDemo.cpp : Defines the entry point for the console application. -// - -#include "stdafx.h" -triangleApp TAPP; - - -void GLFWCALL keyfun( int key, int action ) -{ - if( action != GLFW_PRESS ) - { - return; - } - - switch( key ) - { - case GLFW_KEY_ESC: - printf( "ESC => quit program\n" ); - break; - - } - - TAPP.keyDown(key); - - fflush( stdout ); -} - - - - - - - -int main( void ) -{ - - - int width, height, running, frames, x, y; - double t, t0, fps; - char titlestr[ 200 ]; - - - // Initialise GLFW - glfwInit(); - - // Open OpenGL window - if (!glfwOpenWindow(1024,768, // Open window - 24, 24, 24, // Red, green, and blue bits for color buffer - 24, // Bits for alpha buffer - 24, // Bits for depth buffer (Z-buffer) - 24, // Bits for stencil buffer - GLFW_WINDOW)){ - glfwTerminate(); - return 0; - } - - glfwSetKeyCallback( keyfun ); - TAPP.init(); - glfwEnable( GLFW_STICKY_KEYS ); - // Disable vertical sync (on cards that support it) - glfwSwapInterval( 1 ); - - // Main loop - running = GL_TRUE; - frames = 0; - t0 = glfwGetTime(); - while( running ){ - - // Get time and mouse position - t = glfwGetTime(); - glfwGetMousePos( &x, &y ); - - // Calculate and display FPS (frames per second) - if( (t-t0) > 1.0 || frames == 0 ) - { - fps = (double)frames / (t-t0); - sprintf( titlestr, "videoInput Demo App (%.1f FPS)", fps ); - glfwSetWindowTitle( titlestr ); - t0 = t; - frames = 0; - } - frames ++; - TAPP.idle(); - - - // Get window size (may be different than the requested size) - glfwGetWindowSize( &width, &height ); - height = height > 0 ? height : 1; - // Set viewport - glViewport( 0, 0, width, height ); - // Clear color buffer - glClearColor( 0.0f, 0.0f, 0.0f, 0.0f ); - glClear( GL_COLOR_BUFFER_BIT ); - - TAPP.draw(); - // Swap buffers - glfwSwapBuffers(); - - // Check if the ESC key was pressed or the window was closed - running = !glfwGetKey( GLFW_KEY_ESC ) && - glfwGetWindowParam( GLFW_OPENED ); - } - - // Close OpenGL window and terminate GLFW - glfwTerminate(); - return 0; -} +// videoInputBasicDemo.cpp : Defines the entry point for the console application. +// + +#include "stdafx.h" +triangleApp TAPP; + + +void GLFWCALL keyfun( int key, int action ) +{ + if( action != GLFW_PRESS ) + { + return; + } + + switch( key ) + { + case GLFW_KEY_ESC: + printf( "ESC => quit program\n" ); + break; + + } + + TAPP.keyDown(key); + + fflush( stdout ); +} + + + + + + + +int main( void ) +{ + + + int width, height, running, frames, x, y; + double t, t0, fps; + char titlestr[ 200 ]; + + + // Initialise GLFW + glfwInit(); + + // Open OpenGL window + if (!glfwOpenWindow(1024,768, // Open window + 24, 24, 24, // Red, green, and blue bits for color buffer + 24, // Bits for alpha buffer + 24, // Bits for depth buffer (Z-buffer) + 24, // Bits for stencil buffer + GLFW_WINDOW)){ + glfwTerminate(); + return 0; + } + + glfwSetKeyCallback( keyfun ); + TAPP.init(); + glfwEnable( GLFW_STICKY_KEYS ); + // Disable vertical sync (on cards that support it) + glfwSwapInterval( 1 ); + + // Main loop + running = GL_TRUE; + frames = 0; + t0 = glfwGetTime(); + while( running ){ + + // Get time and mouse position + t = glfwGetTime(); + glfwGetMousePos( &x, &y ); + + // Calculate and display FPS (frames per second) + if( (t-t0) > 1.0 || frames == 0 ) + { + fps = (double)frames / (t-t0); + sprintf( titlestr, "videoInput Demo App (%.1f FPS)", fps ); + glfwSetWindowTitle( titlestr ); + t0 = t; + frames = 0; + } + frames ++; + TAPP.idle(); + + + // Get window size (may be different than the requested size) + glfwGetWindowSize( &width, &height ); + height = height > 0 ? height : 1; + // Set viewport + glViewport( 0, 0, width, height ); + // Clear color buffer + glClearColor( 0.0f, 0.0f, 0.0f, 0.0f ); + glClear( GL_COLOR_BUFFER_BIT ); + + TAPP.draw(); + // Swap buffers + glfwSwapBuffers(); + + // Check if the ESC key was pressed or the window was closed + running = !glfwGetKey( GLFW_KEY_ESC ) && + glfwGetWindowParam( GLFW_OPENED ); + } + + // Close OpenGL window and terminate GLFW + glfwTerminate(); + return 0; +} diff --git a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/videoInputBasicDemo.sln b/videoInputSrcAndDemos/VS-videoInputDemoWithSrc/videoInputBasicDemo.sln old mode 100755 new mode 100644 similarity index 79% rename from videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/videoInputBasicDemo.sln rename to videoInputSrcAndDemos/VS-videoInputDemoWithSrc/videoInputBasicDemo.sln index 610dc80..845b9aa --- a/videoInputSrcAndDemos/VC2005-videoInputDemoWithLib/videoInputBasicDemo.sln +++ b/videoInputSrcAndDemos/VS-videoInputDemoWithSrc/videoInputBasicDemo.sln @@ -1,20 +1,20 @@ - -Microsoft Visual Studio Solution File, Format Version 9.00 -# Visual C++ Express 2005 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "videoInputBasicDemo", "videoInputBasicDemo.vcproj", "{B575FBFC-3E99-4993-9293-74AC0A6802CF}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Win32 = Debug|Win32 - Release|Win32 = Release|Win32 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B575FBFC-3E99-4993-9293-74AC0A6802CF}.Debug|Win32.ActiveCfg = Debug|Win32 - {B575FBFC-3E99-4993-9293-74AC0A6802CF}.Debug|Win32.Build.0 = Debug|Win32 - {B575FBFC-3E99-4993-9293-74AC0A6802CF}.Release|Win32.ActiveCfg = Release|Win32 - {B575FBFC-3E99-4993-9293-74AC0A6802CF}.Release|Win32.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual C++ Express 2010 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "videoInputBasicDemo", "videoInputBasicDemo.vcxproj", "{B575FBFC-3E99-4993-9293-74AC0A6802CF}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {B575FBFC-3E99-4993-9293-74AC0A6802CF}.Debug|Win32.ActiveCfg = Debug|Win32 + {B575FBFC-3E99-4993-9293-74AC0A6802CF}.Debug|Win32.Build.0 = Debug|Win32 + {B575FBFC-3E99-4993-9293-74AC0A6802CF}.Release|Win32.ActiveCfg = Release|Win32 + {B575FBFC-3E99-4993-9293-74AC0A6802CF}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/videoInputSrcAndDemos/VS-videoInputDemoWithSrc/videoInputBasicDemo.vcxproj b/videoInputSrcAndDemos/VS-videoInputDemoWithSrc/videoInputBasicDemo.vcxproj new file mode 100644 index 0000000..3973cc7 --- /dev/null +++ b/videoInputSrcAndDemos/VS-videoInputDemoWithSrc/videoInputBasicDemo.vcxproj @@ -0,0 +1,136 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {B575FBFC-3E99-4993-9293-74AC0A6802CF} + videoInputBasicDemo + Win32Proj + + + + Application + Unicode + true + v110 + + + Application + Unicode + v110 + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + .\src;.\libs;.\requiredLibs;..\libs\videoInput;$(ReferencePath) + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + false + .\src;.\libs;.\requiredLibs;..\libs\videoInput;$(ReferencePath) + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + false + + + + Disabled + ..\libs\videoInput; src; requiredLibs;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + EditAndContinue + + + /NODEFAULTLIB:"atlthunk" +/NODEFAULTLIB:"LIBCMT" %(AdditionalOptions) + kernel32.lib;..\libs\DShow\lib\dxguid.lib;..\libs\DShow\lib\ole32.lib;..\libs\DShow\lib\strmiids.lib;..\libs\DShow\lib\uuid.lib;%(AdditionalDependencies) + false + Console + false + + + MachineX86 + false + + + + + ..\libs\videoInput; src; requiredLibs;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + + + /NODEFAULTLIB:"atlthunk" +/NODEFAULTLIB:"LIBCMT" %(AdditionalOptions) + kernel32.lib;..\libs\DShow\lib\dxguid.lib;..\libs\DShow\lib\ole32.lib;..\libs\DShow\lib\strmiids.lib;..\libs\DShow\lib\uuid.lib;%(AdditionalDependencies) + false + Console + true + true + false + + + MachineX86 + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/videoInputSrcAndDemos/VC2005-videoInputCompileAsLib/videoInput.sln b/videoInputSrcAndDemos/VS-videoInputcompileAsLib/videoInput.sln old mode 100755 new mode 100644 similarity index 80% rename from videoInputSrcAndDemos/VC2005-videoInputCompileAsLib/videoInput.sln rename to videoInputSrcAndDemos/VS-videoInputcompileAsLib/videoInput.sln index 2e74980..7dd40dd --- a/videoInputSrcAndDemos/VC2005-videoInputCompileAsLib/videoInput.sln +++ b/videoInputSrcAndDemos/VS-videoInputcompileAsLib/videoInput.sln @@ -1,20 +1,19 @@ - -Microsoft Visual Studio Solution File, Format Version 9.00 -# Visual C++ Express 2005 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "videoInput", "videoInput.vcproj", "{0D49DFE2-6BF1-4AA3-95B7-010FB9273F5F}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Win32 = Debug|Win32 - Release|Win32 = Release|Win32 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {0D49DFE2-6BF1-4AA3-95B7-010FB9273F5F}.Debug|Win32.ActiveCfg = Debug|Win32 - {0D49DFE2-6BF1-4AA3-95B7-010FB9273F5F}.Debug|Win32.Build.0 = Debug|Win32 - {0D49DFE2-6BF1-4AA3-95B7-010FB9273F5F}.Release|Win32.ActiveCfg = Release|Win32 - {0D49DFE2-6BF1-4AA3-95B7-010FB9273F5F}.Release|Win32.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2013 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "videoInput", "videoInput.vcxproj", "{0D49DFE2-6BF1-4AA3-95B7-010FB9273F5F}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {0D49DFE2-6BF1-4AA3-95B7-010FB9273F5F}.Debug|Win32.ActiveCfg = Debug|Win32 + {0D49DFE2-6BF1-4AA3-95B7-010FB9273F5F}.Debug|Win32.Build.0 = Debug|Win32 + {0D49DFE2-6BF1-4AA3-95B7-010FB9273F5F}.Release|Win32.ActiveCfg = Release|Win32 + {0D49DFE2-6BF1-4AA3-95B7-010FB9273F5F}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/videoInputSrcAndDemos/VS-videoInputcompileAsLib/videoInput.vcxproj b/videoInputSrcAndDemos/VS-videoInputcompileAsLib/videoInput.vcxproj new file mode 100644 index 0000000..d739cd2 --- /dev/null +++ b/videoInputSrcAndDemos/VS-videoInputcompileAsLib/videoInput.vcxproj @@ -0,0 +1,95 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {0D49DFE2-6BF1-4AA3-95B7-010FB9273F5F} + videoInput + Win32Proj + + + + StaticLibrary + Unicode + true + v120 + + + StaticLibrary + Unicode + v120 + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + + + $(ProjectName)D + + + + Disabled + ..\libs\videoInput; src; requiredLibs;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + EditAndContinue + + + ..\libs\DShow\lib\dxguid.lib;..\libs\DShow\lib\ole32.lib;..\libs\DShow\lib\strmiids.lib;..\libs\DShow\lib\uuid.lib;%(AdditionalDependencies) + + + + + false + ..\libs\videoInput; src; requiredLibs;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + + + true + + + ..\libs\DShow\lib\dxguid.lib;..\libs\DShow\lib\ole32.lib;..\libs\DShow\lib\strmiids.lib;..\libs\DShow\lib\uuid.lib;%(AdditionalDependencies) + + + + + + + + + + + + + \ No newline at end of file diff --git a/videoInputSrcAndDemos/libs/DShow/Include/combase.h b/videoInputSrcAndDemos/libs/DShow/Include/combase.h index a16428b..e0bae8c 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/combase.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/combase.h @@ -1,319 +1,319 @@ -//------------------------------------------------------------------------------ -// File: ComBase.h -// -// Desc: DirectShow base classes - defines a class hierarchy for creating -// COM objects. -// -// Copyright (c) Microsoft Corporation. All rights reserved. -//------------------------------------------------------------------------------ - - -/* - -a. Derive your COM object from CUnknown - -b. Make a static CreateInstance function that takes an LPUNKNOWN, an HRESULT * - and a TCHAR *. The LPUNKNOWN defines the object to delegate IUnknown calls - to. The HRESULT * allows error codes to be passed around constructors and - the TCHAR * is a descriptive name that can be printed on the debugger. - - It is important that constructors only change the HRESULT * if they have - to set an ERROR code, if it was successful then leave it alone or you may - overwrite an error code from an object previously created. - - When you call a constructor the descriptive name should be in static store - as we do not copy the string. To stop large amounts of memory being used - in retail builds by all these static strings use the NAME macro, - - CMyFilter = new CImplFilter(NAME("My filter"),pUnknown,phr); - if (FAILED(hr)) { - return hr; - } - - In retail builds NAME(_x_) compiles to NULL, the base CBaseObject class - knows not to do anything with objects that don't have a name. - -c. Have a constructor for your object that passes the LPUNKNOWN, HRESULT * and - TCHAR * to the CUnknown constructor. You can set the HRESULT if you have an - error, or just simply pass it through to the constructor. - - The object creation will fail in the class factory if the HRESULT indicates - an error (ie FAILED(HRESULT) == TRUE) - -d. Create a FactoryTemplate with your object's class id and CreateInstance - function. - -Then (for each interface) either - -Multiple inheritance - -1. Also derive it from ISomeInterface -2. Include DECLARE_IUNKNOWN in your class definition to declare - implementations of QueryInterface, AddRef and Release that - call the outer unknown -3. Override NonDelegatingQueryInterface to expose ISomeInterface by - code something like - - if (riid == IID_ISomeInterface) { - return GetInterface((ISomeInterface *) this, ppv); - } else { - return CUnknown::NonDelegatingQueryInterface(riid, ppv); - } - -4. Declare and implement the member functions of ISomeInterface. - -or: Nested interfaces - -1. Declare a class derived from CUnknown -2. Include DECLARE_IUNKNOWN in your class definition -3. Override NonDelegatingQueryInterface to expose ISomeInterface by - code something like - - if (riid == IID_ISomeInterface) { - return GetInterface((ISomeInterface *) this, ppv); - } else { - return CUnknown::NonDelegatingQueryInterface(riid, ppv); - } - -4. Implement the member functions of ISomeInterface. Use GetOwner() to - access the COM object class. - -And in your COM object class: - -5. Make the nested class a friend of the COM object class, and declare - an instance of the nested class as a member of the COM object class. - - NOTE that because you must always pass the outer unknown and an hResult - to the CUnknown constructor you cannot use a default constructor, in - other words you will have to make the member variable a pointer to the - class and make a NEW call in your constructor to actually create it. - -6. override the NonDelegatingQueryInterface with code like this: - - if (riid == IID_ISomeInterface) { - return m_pImplFilter-> - NonDelegatingQueryInterface(IID_ISomeInterface, ppv); - } else { - return CUnknown::NonDelegatingQueryInterface(riid, ppv); - } - -You can have mixed classes which support some interfaces via multiple -inheritance and some via nested classes - -*/ - -#ifndef __COMBASE__ -#define __COMBASE__ - -// Filter Setup data structures no defined in axextend.idl - -typedef REGPINTYPES -AMOVIESETUP_MEDIATYPE, * PAMOVIESETUP_MEDIATYPE, * FAR LPAMOVIESETUP_MEDIATYPE; - -typedef REGFILTERPINS -AMOVIESETUP_PIN, * PAMOVIESETUP_PIN, * FAR LPAMOVIESETUP_PIN; - -typedef struct _AMOVIESETUP_FILTER -{ - const CLSID * clsID; - const WCHAR * strName; - DWORD dwMerit; - UINT nPins; - const AMOVIESETUP_PIN * lpPin; -} -AMOVIESETUP_FILTER, * PAMOVIESETUP_FILTER, * FAR LPAMOVIESETUP_FILTER; - -/* The DLLENTRY module initialises the module handle on loading */ - -extern HINSTANCE g_hInst; - -/* On DLL load remember which platform we are running on */ - -extern DWORD g_amPlatform; -extern OSVERSIONINFO g_osInfo; // Filled in by GetVersionEx - -/* Version of IUnknown that is renamed to allow a class to support both - non delegating and delegating IUnknowns in the same COM object */ - -#ifndef INONDELEGATINGUNKNOWN_DEFINED -DECLARE_INTERFACE(INonDelegatingUnknown) -{ - STDMETHOD(NonDelegatingQueryInterface) (THIS_ REFIID, LPVOID *) PURE; - STDMETHOD_(ULONG, NonDelegatingAddRef)(THIS) PURE; - STDMETHOD_(ULONG, NonDelegatingRelease)(THIS) PURE; -}; -#define INONDELEGATINGUNKNOWN_DEFINED -#endif - -typedef INonDelegatingUnknown *PNDUNKNOWN; - - -/* This is the base object class that supports active object counting. As - part of the debug facilities we trace every time a C++ object is created - or destroyed. The name of the object has to be passed up through the class - derivation list during construction as you cannot call virtual functions - in the constructor. The downside of all this is that every single object - constructor has to take an object name parameter that describes it */ - -class CBaseObject -{ - -private: - - // Disable the copy constructor and assignment by default so you will get - // compiler errors instead of unexpected behaviour if you pass objects - // by value or assign objects. - CBaseObject(const CBaseObject& objectSrc); // no implementation - void operator=(const CBaseObject& objectSrc); // no implementation - -private: - static LONG m_cObjects; /* Total number of objects active */ - -protected: -#ifdef DEBUG - DWORD m_dwCookie; /* Cookie identifying this object */ -#endif - - -public: - - /* These increment and decrement the number of active objects */ - - CBaseObject(const TCHAR *pName); -#ifdef UNICODE - CBaseObject(const char *pName); -#endif - ~CBaseObject(); - - /* Call this to find if there are any CUnknown derived objects active */ - - static LONG ObjectsActive() { - return m_cObjects; - }; -}; - - -/* An object that supports one or more COM interfaces will be based on - this class. It supports counting of total objects for DLLCanUnloadNow - support, and an implementation of the core non delegating IUnknown */ - -class CUnknown : public INonDelegatingUnknown, - public CBaseObject -{ -private: - const LPUNKNOWN m_pUnknown; /* Owner of this object */ - -protected: /* So we can override NonDelegatingRelease() */ - volatile LONG m_cRef; /* Number of reference counts */ - -public: - - CUnknown(const TCHAR *pName, LPUNKNOWN pUnk); - virtual ~CUnknown() {}; - - // This is redundant, just use the other constructor - // as we never touch the HRESULT in this anyway - CUnknown(TCHAR *pName, LPUNKNOWN pUnk,HRESULT *phr); -#ifdef UNICODE - CUnknown(const char *pName, LPUNKNOWN pUnk); - CUnknown(char *pName, LPUNKNOWN pUnk,HRESULT *phr); -#endif - - /* Return the owner of this object */ - - LPUNKNOWN GetOwner() const { - return m_pUnknown; - }; - - /* Called from the class factory to create a new instance, it is - pure virtual so it must be overriden in your derived class */ - - /* static CUnknown *CreateInstance(LPUNKNOWN, HRESULT *) */ - - /* Non delegating unknown implementation */ - - STDMETHODIMP NonDelegatingQueryInterface(REFIID, void **); - STDMETHODIMP_(ULONG) NonDelegatingAddRef(); - STDMETHODIMP_(ULONG) NonDelegatingRelease(); -}; - -#if (_MSC_VER <= 1200) -#pragma warning(disable:4211) - -/* The standard InterlockedXXX functions won't take volatiles */ -static inline LONG WINAPI InterlockedIncrement( volatile LONG * plong ) -{ return InterlockedIncrement( const_cast( plong ) ); } - -static inline LONG WINAPI InterlockedDecrement( volatile LONG * plong ) -{ return InterlockedDecrement( const_cast( plong ) ); } - -#pragma warning(default:4211) -#endif - - -/* Return an interface pointer to a requesting client - performing a thread safe AddRef as necessary */ - -STDAPI GetInterface(LPUNKNOWN pUnk, void **ppv); - -/* A function that can create a new COM object */ - -typedef CUnknown *(CALLBACK *LPFNNewCOMObject)(LPUNKNOWN pUnkOuter, HRESULT *phr); - -/* A function (can be NULL) which is called from the DLL entrypoint - routine for each factory template: - - bLoading - TRUE on DLL load, FALSE on DLL unload - rclsid - the m_ClsID of the entry -*/ -typedef void (CALLBACK *LPFNInitRoutine)(BOOL bLoading, const CLSID *rclsid); - -/* Create one of these per object class in an array so that - the default class factory code can create new instances */ - -class CFactoryTemplate { - -public: - - const WCHAR * m_Name; - const CLSID * m_ClsID; - LPFNNewCOMObject m_lpfnNew; - LPFNInitRoutine m_lpfnInit; - const AMOVIESETUP_FILTER * m_pAMovieSetup_Filter; - - BOOL IsClassID(REFCLSID rclsid) const { - return (IsEqualCLSID(*m_ClsID,rclsid)); - }; - - CUnknown *CreateInstance(LPUNKNOWN pUnk, HRESULT *phr) const { - CheckPointer(phr,NULL); - return m_lpfnNew(pUnk, phr); - }; -}; - - -/* You must override the (pure virtual) NonDelegatingQueryInterface to return - interface pointers (using GetInterface) to the interfaces your derived - class supports (the default implementation only supports IUnknown) */ - -#define DECLARE_IUNKNOWN \ - STDMETHODIMP QueryInterface(REFIID riid, void **ppv) { \ - return GetOwner()->QueryInterface(riid,ppv); \ - }; \ - STDMETHODIMP_(ULONG) AddRef() { \ - return GetOwner()->AddRef(); \ - }; \ - STDMETHODIMP_(ULONG) Release() { \ - return GetOwner()->Release(); \ - }; - - - -HINSTANCE LoadOLEAut32(); - - -#endif /* __COMBASE__ */ - - - - +//------------------------------------------------------------------------------ +// File: ComBase.h +// +// Desc: DirectShow base classes - defines a class hierarchy for creating +// COM objects. +// +// Copyright (c) Microsoft Corporation. All rights reserved. +//------------------------------------------------------------------------------ + + +/* + +a. Derive your COM object from CUnknown + +b. Make a static CreateInstance function that takes an LPUNKNOWN, an HRESULT * + and a TCHAR *. The LPUNKNOWN defines the object to delegate IUnknown calls + to. The HRESULT * allows error codes to be passed around constructors and + the TCHAR * is a descriptive name that can be printed on the debugger. + + It is important that constructors only change the HRESULT * if they have + to set an ERROR code, if it was successful then leave it alone or you may + overwrite an error code from an object previously created. + + When you call a constructor the descriptive name should be in static store + as we do not copy the string. To stop large amounts of memory being used + in retail builds by all these static strings use the NAME macro, + + CMyFilter = new CImplFilter(NAME("My filter"),pUnknown,phr); + if (FAILED(hr)) { + return hr; + } + + In retail builds NAME(_x_) compiles to NULL, the base CBaseObject class + knows not to do anything with objects that don't have a name. + +c. Have a constructor for your object that passes the LPUNKNOWN, HRESULT * and + TCHAR * to the CUnknown constructor. You can set the HRESULT if you have an + error, or just simply pass it through to the constructor. + + The object creation will fail in the class factory if the HRESULT indicates + an error (ie FAILED(HRESULT) == TRUE) + +d. Create a FactoryTemplate with your object's class id and CreateInstance + function. + +Then (for each interface) either + +Multiple inheritance + +1. Also derive it from ISomeInterface +2. Include DECLARE_IUNKNOWN in your class definition to declare + implementations of QueryInterface, AddRef and Release that + call the outer unknown +3. Override NonDelegatingQueryInterface to expose ISomeInterface by + code something like + + if (riid == IID_ISomeInterface) { + return GetInterface((ISomeInterface *) this, ppv); + } else { + return CUnknown::NonDelegatingQueryInterface(riid, ppv); + } + +4. Declare and implement the member functions of ISomeInterface. + +or: Nested interfaces + +1. Declare a class derived from CUnknown +2. Include DECLARE_IUNKNOWN in your class definition +3. Override NonDelegatingQueryInterface to expose ISomeInterface by + code something like + + if (riid == IID_ISomeInterface) { + return GetInterface((ISomeInterface *) this, ppv); + } else { + return CUnknown::NonDelegatingQueryInterface(riid, ppv); + } + +4. Implement the member functions of ISomeInterface. Use GetOwner() to + access the COM object class. + +And in your COM object class: + +5. Make the nested class a friend of the COM object class, and declare + an instance of the nested class as a member of the COM object class. + + NOTE that because you must always pass the outer unknown and an hResult + to the CUnknown constructor you cannot use a default constructor, in + other words you will have to make the member variable a pointer to the + class and make a NEW call in your constructor to actually create it. + +6. override the NonDelegatingQueryInterface with code like this: + + if (riid == IID_ISomeInterface) { + return m_pImplFilter-> + NonDelegatingQueryInterface(IID_ISomeInterface, ppv); + } else { + return CUnknown::NonDelegatingQueryInterface(riid, ppv); + } + +You can have mixed classes which support some interfaces via multiple +inheritance and some via nested classes + +*/ + +#ifndef __COMBASE__ +#define __COMBASE__ + +// Filter Setup data structures no defined in axextend.idl + +typedef REGPINTYPES +AMOVIESETUP_MEDIATYPE, * PAMOVIESETUP_MEDIATYPE, * FAR LPAMOVIESETUP_MEDIATYPE; + +typedef REGFILTERPINS +AMOVIESETUP_PIN, * PAMOVIESETUP_PIN, * FAR LPAMOVIESETUP_PIN; + +typedef struct _AMOVIESETUP_FILTER +{ + const CLSID * clsID; + const WCHAR * strName; + DWORD dwMerit; + UINT nPins; + const AMOVIESETUP_PIN * lpPin; +} +AMOVIESETUP_FILTER, * PAMOVIESETUP_FILTER, * FAR LPAMOVIESETUP_FILTER; + +/* The DLLENTRY module initialises the module handle on loading */ + +extern HINSTANCE g_hInst; + +/* On DLL load remember which platform we are running on */ + +extern DWORD g_amPlatform; +extern OSVERSIONINFO g_osInfo; // Filled in by GetVersionEx + +/* Version of IUnknown that is renamed to allow a class to support both + non delegating and delegating IUnknowns in the same COM object */ + +#ifndef INONDELEGATINGUNKNOWN_DEFINED +DECLARE_INTERFACE(INonDelegatingUnknown) +{ + STDMETHOD(NonDelegatingQueryInterface) (THIS_ REFIID, LPVOID *) PURE; + STDMETHOD_(ULONG, NonDelegatingAddRef)(THIS) PURE; + STDMETHOD_(ULONG, NonDelegatingRelease)(THIS) PURE; +}; +#define INONDELEGATINGUNKNOWN_DEFINED +#endif + +typedef INonDelegatingUnknown *PNDUNKNOWN; + + +/* This is the base object class that supports active object counting. As + part of the debug facilities we trace every time a C++ object is created + or destroyed. The name of the object has to be passed up through the class + derivation list during construction as you cannot call virtual functions + in the constructor. The downside of all this is that every single object + constructor has to take an object name parameter that describes it */ + +class CBaseObject +{ + +private: + + // Disable the copy constructor and assignment by default so you will get + // compiler errors instead of unexpected behaviour if you pass objects + // by value or assign objects. + CBaseObject(const CBaseObject& objectSrc); // no implementation + void operator=(const CBaseObject& objectSrc); // no implementation + +private: + static LONG m_cObjects; /* Total number of objects active */ + +protected: +#ifdef DEBUG + DWORD m_dwCookie; /* Cookie identifying this object */ +#endif + + +public: + + /* These increment and decrement the number of active objects */ + + CBaseObject(const TCHAR *pName); +#ifdef UNICODE + CBaseObject(const char *pName); +#endif + ~CBaseObject(); + + /* Call this to find if there are any CUnknown derived objects active */ + + static LONG ObjectsActive() { + return m_cObjects; + }; +}; + + +/* An object that supports one or more COM interfaces will be based on + this class. It supports counting of total objects for DLLCanUnloadNow + support, and an implementation of the core non delegating IUnknown */ + +class CUnknown : public INonDelegatingUnknown, + public CBaseObject +{ +private: + const LPUNKNOWN m_pUnknown; /* Owner of this object */ + +protected: /* So we can override NonDelegatingRelease() */ + volatile LONG m_cRef; /* Number of reference counts */ + +public: + + CUnknown(const TCHAR *pName, LPUNKNOWN pUnk); + virtual ~CUnknown() {}; + + // This is redundant, just use the other constructor + // as we never touch the HRESULT in this anyway + CUnknown(TCHAR *pName, LPUNKNOWN pUnk,HRESULT *phr); +#ifdef UNICODE + CUnknown(const char *pName, LPUNKNOWN pUnk); + CUnknown(char *pName, LPUNKNOWN pUnk,HRESULT *phr); +#endif + + /* Return the owner of this object */ + + LPUNKNOWN GetOwner() const { + return m_pUnknown; + }; + + /* Called from the class factory to create a new instance, it is + pure virtual so it must be overriden in your derived class */ + + /* static CUnknown *CreateInstance(LPUNKNOWN, HRESULT *) */ + + /* Non delegating unknown implementation */ + + STDMETHODIMP NonDelegatingQueryInterface(REFIID, void **); + STDMETHODIMP_(ULONG) NonDelegatingAddRef(); + STDMETHODIMP_(ULONG) NonDelegatingRelease(); +}; + +#if (_MSC_VER <= 1200) && !defined(__MINGW32_MAJOR_VERSION) +#pragma warning(disable:4211) + +/* The standard InterlockedXXX functions won't take volatiles */ +static inline LONG WINAPI InterlockedIncrement( volatile LONG * plong ) +{ return InterlockedIncrement( const_cast( plong ) ); } + +static inline LONG WINAPI InterlockedDecrement( volatile LONG * plong ) +{ return InterlockedDecrement( const_cast( plong ) ); } + +#pragma warning(default:4211) +#endif + + +/* Return an interface pointer to a requesting client + performing a thread safe AddRef as necessary */ + +STDAPI GetInterface(LPUNKNOWN pUnk, void **ppv); + +/* A function that can create a new COM object */ + +typedef CUnknown *(CALLBACK *LPFNNewCOMObject)(LPUNKNOWN pUnkOuter, HRESULT *phr); + +/* A function (can be NULL) which is called from the DLL entrypoint + routine for each factory template: + + bLoading - TRUE on DLL load, FALSE on DLL unload + rclsid - the m_ClsID of the entry +*/ +typedef void (CALLBACK *LPFNInitRoutine)(BOOL bLoading, const CLSID *rclsid); + +/* Create one of these per object class in an array so that + the default class factory code can create new instances */ + +class CFactoryTemplate { + +public: + + const WCHAR * m_Name; + const CLSID * m_ClsID; + LPFNNewCOMObject m_lpfnNew; + LPFNInitRoutine m_lpfnInit; + const AMOVIESETUP_FILTER * m_pAMovieSetup_Filter; + + BOOL IsClassID(REFCLSID rclsid) const { + return (IsEqualCLSID(*m_ClsID,rclsid)); + }; + + CUnknown *CreateInstance(LPUNKNOWN pUnk, HRESULT *phr) const { + CheckPointer(phr,NULL); + return m_lpfnNew(pUnk, phr); + }; +}; + + +/* You must override the (pure virtual) NonDelegatingQueryInterface to return + interface pointers (using GetInterface) to the interfaces your derived + class supports (the default implementation only supports IUnknown) */ + +#define DECLARE_IUNKNOWN \ + STDMETHODIMP QueryInterface(REFIID riid, void **ppv) { \ + return GetOwner()->QueryInterface(riid,ppv); \ + }; \ + STDMETHODIMP_(ULONG) AddRef() { \ + return GetOwner()->AddRef(); \ + }; \ + STDMETHODIMP_(ULONG) Release() { \ + return GetOwner()->Release(); \ + }; + + + +HINSTANCE LoadOLEAut32(); + + +#endif /* __COMBASE__ */ + + + + diff --git a/videoInputSrcAndDemos/libs/DShow/Include/ctlutil.h b/videoInputSrcAndDemos/libs/DShow/Include/ctlutil.h index fd3ac3e..1d2609f 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/ctlutil.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/ctlutil.h @@ -1,919 +1,923 @@ -//------------------------------------------------------------------------------ -// File: CtlUtil.h -// -// Desc: DirectShow base classes. -// -// Copyright (c) Microsoft Corporation. All rights reserved. -//------------------------------------------------------------------------------ - - -// Base classes implementing IDispatch parsing for the basic control dual -// interfaces. Derive from these and implement just the custom method and -// property methods. We also implement CPosPassThru that can be used by -// renderers and transforms to pass by IMediaPosition and IMediaSeeking - -#ifndef __CTLUTIL__ -#define __CTLUTIL__ - -// OLE Automation has different ideas of TRUE and FALSE - -#define OATRUE (-1) -#define OAFALSE (0) - - -// It's possible that we could replace this class with CreateStdDispatch - -class CBaseDispatch -{ - ITypeInfo * m_pti; - -public: - - CBaseDispatch() : m_pti(NULL) {} - ~CBaseDispatch(); - - /* IDispatch methods */ - STDMETHODIMP GetTypeInfoCount(UINT * pctinfo); - - STDMETHODIMP GetTypeInfo( - REFIID riid, - UINT itinfo, - LCID lcid, - ITypeInfo ** pptinfo); - - STDMETHODIMP GetIDsOfNames( - REFIID riid, - OLECHAR ** rgszNames, - UINT cNames, - LCID lcid, - DISPID * rgdispid); -}; - - -class AM_NOVTABLE CMediaControl : - public IMediaControl, - public CUnknown -{ - CBaseDispatch m_basedisp; - -public: - - CMediaControl(const TCHAR *, LPUNKNOWN); - - DECLARE_IUNKNOWN - - // override this to publicise our interfaces - STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, void **ppv); - - /* IDispatch methods */ - STDMETHODIMP GetTypeInfoCount(UINT * pctinfo); - - STDMETHODIMP GetTypeInfo( - UINT itinfo, - LCID lcid, - ITypeInfo ** pptinfo); - - STDMETHODIMP GetIDsOfNames( - REFIID riid, - OLECHAR ** rgszNames, - UINT cNames, - LCID lcid, - DISPID * rgdispid); - - STDMETHODIMP Invoke( - DISPID dispidMember, - REFIID riid, - LCID lcid, - WORD wFlags, - DISPPARAMS * pdispparams, - VARIANT * pvarResult, - EXCEPINFO * pexcepinfo, - UINT * puArgErr); -}; - - -class AM_NOVTABLE CMediaEvent : - public IMediaEventEx, - public CUnknown -{ - CBaseDispatch m_basedisp; - -public: - - CMediaEvent(const TCHAR *, LPUNKNOWN); - - DECLARE_IUNKNOWN - - // override this to publicise our interfaces - STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, void **ppv); - - /* IDispatch methods */ - STDMETHODIMP GetTypeInfoCount(UINT * pctinfo); - - STDMETHODIMP GetTypeInfo( - UINT itinfo, - LCID lcid, - ITypeInfo ** pptinfo); - - STDMETHODIMP GetIDsOfNames( - REFIID riid, - OLECHAR ** rgszNames, - UINT cNames, - LCID lcid, - DISPID * rgdispid); - - STDMETHODIMP Invoke( - DISPID dispidMember, - REFIID riid, - LCID lcid, - WORD wFlags, - DISPPARAMS * pdispparams, - VARIANT * pvarResult, - EXCEPINFO * pexcepinfo, - UINT * puArgErr); -}; - - -class AM_NOVTABLE CMediaPosition : - public IMediaPosition, - public CUnknown -{ - CBaseDispatch m_basedisp; - - -public: - - CMediaPosition(const TCHAR *, LPUNKNOWN); - CMediaPosition(const TCHAR *, LPUNKNOWN, HRESULT *phr); - - DECLARE_IUNKNOWN - - // override this to publicise our interfaces - STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, void **ppv); - - /* IDispatch methods */ - STDMETHODIMP GetTypeInfoCount(UINT * pctinfo); - - STDMETHODIMP GetTypeInfo( - UINT itinfo, - LCID lcid, - ITypeInfo ** pptinfo); - - STDMETHODIMP GetIDsOfNames( - REFIID riid, - OLECHAR ** rgszNames, - UINT cNames, - LCID lcid, - DISPID * rgdispid); - - STDMETHODIMP Invoke( - DISPID dispidMember, - REFIID riid, - LCID lcid, - WORD wFlags, - DISPPARAMS * pdispparams, - VARIANT * pvarResult, - EXCEPINFO * pexcepinfo, - UINT * puArgErr); - -}; - - -// OA-compatibility means that we must use double as the RefTime value, -// and REFERENCE_TIME (essentially a LONGLONG) within filters. -// this class converts between the two - -class COARefTime : public CRefTime { -public: - - COARefTime() { - }; - - COARefTime(CRefTime t) - : CRefTime(t) - { - }; - - COARefTime(REFERENCE_TIME t) - : CRefTime(t) - { - }; - - COARefTime(double d) { - m_time = (LONGLONG) (d * 10000000); - }; - - operator double() { - return double(m_time) / 10000000; - }; - - operator REFERENCE_TIME() { - return m_time; - }; - - COARefTime& operator=(const double& rd) { - m_time = (LONGLONG) (rd * 10000000); - return *this; - } - - COARefTime& operator=(const REFERENCE_TIME& rt) { - m_time = rt; - return *this; - } - - inline BOOL operator==(const COARefTime& rt) - { - return m_time == rt.m_time; - }; - - inline BOOL operator!=(const COARefTime& rt) - { - return m_time != rt.m_time; - }; - - inline BOOL operator < (const COARefTime& rt) - { - return m_time < rt.m_time; - }; - - inline BOOL operator > (const COARefTime& rt) - { - return m_time > rt.m_time; - }; - - inline BOOL operator >= (const COARefTime& rt) - { - return m_time >= rt.m_time; - }; - - inline BOOL operator <= (const COARefTime& rt) - { - return m_time <= rt.m_time; - }; - - inline COARefTime operator+(const COARefTime& rt) - { - return COARefTime(m_time + rt.m_time); - }; - - inline COARefTime operator-(const COARefTime& rt) - { - return COARefTime(m_time - rt.m_time); - }; - - inline COARefTime operator*(LONG l) - { - return COARefTime(m_time * l); - }; - - inline COARefTime operator/(LONG l) - { - return COARefTime(m_time / l); - }; - -private: - // Prevent bugs from constructing from LONG (which gets - // converted to double and then multiplied by 10000000 - COARefTime(LONG); - operator=(LONG); -}; - - -// A utility class that handles IMediaPosition and IMediaSeeking on behalf -// of single-input pin renderers, or transform filters. -// -// Renderers will expose this from the filter; transform filters will -// expose it from the output pin and not the renderer. -// -// Create one of these, giving it your IPin* for your input pin, and delegate -// all IMediaPosition methods to it. It will query the input pin for -// IMediaPosition and respond appropriately. -// -// Call ForceRefresh if the pin connection changes. -// -// This class no longer caches the upstream IMediaPosition or IMediaSeeking -// it acquires it on each method call. This means ForceRefresh is not needed. -// The method is kept for source compatibility and to minimise the changes -// if we need to put it back later for performance reasons. - -class CPosPassThru : public IMediaSeeking, public CMediaPosition -{ - IPin *m_pPin; - - HRESULT GetPeer(IMediaPosition **ppMP); - HRESULT GetPeerSeeking(IMediaSeeking **ppMS); - -public: - - CPosPassThru(const TCHAR *, LPUNKNOWN, HRESULT*, IPin *); - DECLARE_IUNKNOWN - - HRESULT ForceRefresh() { - return S_OK; - }; - - // override to return an accurate current position - virtual HRESULT GetMediaTime(LONGLONG *pStartTime,LONGLONG *pEndTime) { - return E_FAIL; - } - - STDMETHODIMP NonDelegatingQueryInterface(REFIID riid,void **ppv); - - // IMediaSeeking methods - STDMETHODIMP GetCapabilities( DWORD * pCapabilities ); - STDMETHODIMP CheckCapabilities( DWORD * pCapabilities ); - STDMETHODIMP SetTimeFormat(const GUID * pFormat); - STDMETHODIMP GetTimeFormat(GUID *pFormat); - STDMETHODIMP IsUsingTimeFormat(const GUID * pFormat); - STDMETHODIMP IsFormatSupported( const GUID * pFormat); - STDMETHODIMP QueryPreferredFormat( GUID *pFormat); - STDMETHODIMP ConvertTimeFormat(LONGLONG * pTarget, const GUID * pTargetFormat, - LONGLONG Source, const GUID * pSourceFormat ); - STDMETHODIMP SetPositions( LONGLONG * pCurrent, DWORD CurrentFlags - , LONGLONG * pStop, DWORD StopFlags ); - - STDMETHODIMP GetPositions( LONGLONG * pCurrent, LONGLONG * pStop ); - STDMETHODIMP GetCurrentPosition( LONGLONG * pCurrent ); - STDMETHODIMP GetStopPosition( LONGLONG * pStop ); - STDMETHODIMP SetRate( double dRate); - STDMETHODIMP GetRate( double * pdRate); - STDMETHODIMP GetDuration( LONGLONG *pDuration); - STDMETHODIMP GetAvailable( LONGLONG *pEarliest, LONGLONG *pLatest ); - STDMETHODIMP GetPreroll( LONGLONG *pllPreroll ); - - // IMediaPosition properties - STDMETHODIMP get_Duration(REFTIME * plength); - STDMETHODIMP put_CurrentPosition(REFTIME llTime); - STDMETHODIMP get_StopTime(REFTIME * pllTime); - STDMETHODIMP put_StopTime(REFTIME llTime); - STDMETHODIMP get_PrerollTime(REFTIME * pllTime); - STDMETHODIMP put_PrerollTime(REFTIME llTime); - STDMETHODIMP get_Rate(double * pdRate); - STDMETHODIMP put_Rate(double dRate); - STDMETHODIMP get_CurrentPosition(REFTIME * pllTime); - STDMETHODIMP CanSeekForward(LONG *pCanSeekForward); - STDMETHODIMP CanSeekBackward(LONG *pCanSeekBackward); - -private: - HRESULT GetSeekingLongLong( HRESULT (__stdcall IMediaSeeking::*pMethod)( LONGLONG * ), - LONGLONG * pll ); -}; - - -// Adds the ability to return a current position - -class CRendererPosPassThru : public CPosPassThru -{ - CCritSec m_PositionLock; // Locks access to our position - LONGLONG m_StartMedia; // Start media time last seen - LONGLONG m_EndMedia; // And likewise the end media - BOOL m_bReset; // Have media times been set - -public: - - // Used to help with passing media times through graph - - CRendererPosPassThru(const TCHAR *, LPUNKNOWN, HRESULT*, IPin *); - HRESULT RegisterMediaTime(IMediaSample *pMediaSample); - HRESULT RegisterMediaTime(LONGLONG StartTime,LONGLONG EndTime); - HRESULT GetMediaTime(LONGLONG *pStartTime,LONGLONG *pEndTime); - HRESULT ResetMediaTime(); - HRESULT EOS(); -}; - -STDAPI CreatePosPassThru( - LPUNKNOWN pAgg, - BOOL bRenderer, - IPin *pPin, - IUnknown **ppPassThru -); - -// A class that handles the IDispatch part of IBasicAudio and leaves the -// properties and methods themselves pure virtual. - -class AM_NOVTABLE CBasicAudio : public IBasicAudio, public CUnknown -{ - CBaseDispatch m_basedisp; - -public: - - CBasicAudio(const TCHAR *, LPUNKNOWN); - - DECLARE_IUNKNOWN - - // override this to publicise our interfaces - STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, void **ppv); - - /* IDispatch methods */ - STDMETHODIMP GetTypeInfoCount(UINT * pctinfo); - - STDMETHODIMP GetTypeInfo( - UINT itinfo, - LCID lcid, - ITypeInfo ** pptinfo); - - STDMETHODIMP GetIDsOfNames( - REFIID riid, - OLECHAR ** rgszNames, - UINT cNames, - LCID lcid, - DISPID * rgdispid); - - STDMETHODIMP Invoke( - DISPID dispidMember, - REFIID riid, - LCID lcid, - WORD wFlags, - DISPPARAMS * pdispparams, - VARIANT * pvarResult, - EXCEPINFO * pexcepinfo, - UINT * puArgErr); -}; - - -// A class that handles the IDispatch part of IBasicVideo and leaves the -// properties and methods themselves pure virtual. - -class AM_NOVTABLE CBaseBasicVideo : public IBasicVideo2, public CUnknown -{ - CBaseDispatch m_basedisp; - -public: - - CBaseBasicVideo(const TCHAR *, LPUNKNOWN); - - DECLARE_IUNKNOWN - - // override this to publicise our interfaces - STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, void **ppv); - - /* IDispatch methods */ - STDMETHODIMP GetTypeInfoCount(UINT * pctinfo); - - STDMETHODIMP GetTypeInfo( - UINT itinfo, - LCID lcid, - ITypeInfo ** pptinfo); - - STDMETHODIMP GetIDsOfNames( - REFIID riid, - OLECHAR ** rgszNames, - UINT cNames, - LCID lcid, - DISPID * rgdispid); - - STDMETHODIMP Invoke( - DISPID dispidMember, - REFIID riid, - LCID lcid, - WORD wFlags, - DISPPARAMS * pdispparams, - VARIANT * pvarResult, - EXCEPINFO * pexcepinfo, - UINT * puArgErr); - - STDMETHODIMP GetPreferredAspectRatio( - long *plAspectX, - long *plAspectY) - { - return E_NOTIMPL; - } -}; - - -// A class that handles the IDispatch part of IVideoWindow and leaves the -// properties and methods themselves pure virtual. - -class AM_NOVTABLE CBaseVideoWindow : public IVideoWindow, public CUnknown -{ - CBaseDispatch m_basedisp; - -public: - - CBaseVideoWindow(const TCHAR *, LPUNKNOWN); - - DECLARE_IUNKNOWN - - // override this to publicise our interfaces - STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, void **ppv); - - /* IDispatch methods */ - STDMETHODIMP GetTypeInfoCount(UINT * pctinfo); - - STDMETHODIMP GetTypeInfo( - UINT itinfo, - LCID lcid, - ITypeInfo ** pptinfo); - - STDMETHODIMP GetIDsOfNames( - REFIID riid, - OLECHAR ** rgszNames, - UINT cNames, - LCID lcid, - DISPID * rgdispid); - - STDMETHODIMP Invoke( - DISPID dispidMember, - REFIID riid, - LCID lcid, - WORD wFlags, - DISPPARAMS * pdispparams, - VARIANT * pvarResult, - EXCEPINFO * pexcepinfo, - UINT * puArgErr); -}; - - -// abstract class to help source filters with their implementation -// of IMediaPosition. Derive from this and set the duration (and stop -// position). Also override NotifyChange to do something when the properties -// change. - -class AM_NOVTABLE CSourcePosition : public CMediaPosition -{ - -public: - CSourcePosition(const TCHAR *, LPUNKNOWN, HRESULT*, CCritSec *); - - // IMediaPosition methods - STDMETHODIMP get_Duration(REFTIME * plength); - STDMETHODIMP put_CurrentPosition(REFTIME llTime); - STDMETHODIMP get_StopTime(REFTIME * pllTime); - STDMETHODIMP put_StopTime(REFTIME llTime); - STDMETHODIMP get_PrerollTime(REFTIME * pllTime); - STDMETHODIMP put_PrerollTime(REFTIME llTime); - STDMETHODIMP get_Rate(double * pdRate); - STDMETHODIMP put_Rate(double dRate); - STDMETHODIMP CanSeekForward(LONG *pCanSeekForward); - STDMETHODIMP CanSeekBackward(LONG *pCanSeekBackward); - - // override if you can return the data you are actually working on - STDMETHODIMP get_CurrentPosition(REFTIME * pllTime) { - return E_NOTIMPL; - }; - -protected: - - // we call this to notify changes. Override to handle them - virtual HRESULT ChangeStart() PURE; - virtual HRESULT ChangeStop() PURE; - virtual HRESULT ChangeRate() PURE; - - COARefTime m_Duration; - COARefTime m_Start; - COARefTime m_Stop; - double m_Rate; - - CCritSec * m_pLock; -}; - -class AM_NOVTABLE CSourceSeeking : - public IMediaSeeking, - public CUnknown -{ - -public: - - DECLARE_IUNKNOWN; - STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, void **ppv); - - // IMediaSeeking methods - - STDMETHODIMP IsFormatSupported(const GUID * pFormat); - STDMETHODIMP QueryPreferredFormat(GUID *pFormat); - STDMETHODIMP SetTimeFormat(const GUID * pFormat); - STDMETHODIMP IsUsingTimeFormat(const GUID * pFormat); - STDMETHODIMP GetTimeFormat(GUID *pFormat); - STDMETHODIMP GetDuration(LONGLONG *pDuration); - STDMETHODIMP GetStopPosition(LONGLONG *pStop); - STDMETHODIMP GetCurrentPosition(LONGLONG *pCurrent); - STDMETHODIMP GetCapabilities( DWORD * pCapabilities ); - STDMETHODIMP CheckCapabilities( DWORD * pCapabilities ); - STDMETHODIMP ConvertTimeFormat( LONGLONG * pTarget, const GUID * pTargetFormat, - LONGLONG Source, const GUID * pSourceFormat ); - - STDMETHODIMP SetPositions( LONGLONG * pCurrent, DWORD CurrentFlags - , LONGLONG * pStop, DWORD StopFlags ); - - STDMETHODIMP GetPositions( LONGLONG * pCurrent, LONGLONG * pStop ); - - STDMETHODIMP GetAvailable( LONGLONG * pEarliest, LONGLONG * pLatest ); - STDMETHODIMP SetRate( double dRate); - STDMETHODIMP GetRate( double * pdRate); - STDMETHODIMP GetPreroll(LONGLONG *pPreroll); - - -protected: - - // ctor - CSourceSeeking(const TCHAR *, LPUNKNOWN, HRESULT*, CCritSec *); - - // we call this to notify changes. Override to handle them - virtual HRESULT ChangeStart() PURE; - virtual HRESULT ChangeStop() PURE; - virtual HRESULT ChangeRate() PURE; - - CRefTime m_rtDuration; // length of stream - CRefTime m_rtStart; // source will start here - CRefTime m_rtStop; // source will stop here - double m_dRateSeeking; - - // seeking capabilities - DWORD m_dwSeekingCaps; - - CCritSec * m_pLock; -}; - - -// Base classes supporting Deferred commands. - -// Deferred commands are queued by calls to methods on the IQueueCommand -// interface, exposed by the filtergraph and by some filters. A successful -// call to one of these methods will return an IDeferredCommand interface -// representing the queued command. -// -// A CDeferredCommand object represents a single deferred command, and exposes -// the IDeferredCommand interface as well as other methods permitting time -// checks and actual execution. It contains a reference to the CCommandQueue -// object on which it is queued. -// -// CCommandQueue is a base class providing a queue of CDeferredCommand -// objects, and methods to add, remove, check status and invoke the queued -// commands. A CCommandQueue object would be part of an object that -// implemented IQueueCommand. - -class CCmdQueue; - -// take a copy of the params and store them. Release any allocated -// memory in destructor - -class CDispParams : public DISPPARAMS -{ -public: - CDispParams(UINT nArgs, VARIANT* pArgs, HRESULT *phr = NULL); - ~CDispParams(); -}; - - -// CDeferredCommand lifetime is controlled by refcounts. Caller of -// InvokeAt.. gets a refcounted interface pointer, and the CCmdQueue -// object also holds a refcount on us. Calling Cancel or Invoke takes -// us off the CCmdQueue and thus reduces the refcount by 1. Once taken -// off the queue we cannot be put back on the queue. - -class CDeferredCommand - : public CUnknown, - public IDeferredCommand -{ -public: - - CDeferredCommand( - CCmdQueue * pQ, - LPUNKNOWN pUnk, // aggregation outer unk - HRESULT * phr, - LPUNKNOWN pUnkExecutor, // object that will execute this cmd - REFTIME time, - GUID* iid, - long dispidMethod, - short wFlags, - long cArgs, - VARIANT* pDispParams, - VARIANT* pvarResult, - short* puArgErr, - BOOL bStream - ); - - DECLARE_IUNKNOWN - - // override this to publicise our interfaces - STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, void **ppv); - - // IDeferredCommand methods - STDMETHODIMP Cancel(); - STDMETHODIMP Confidence( - LONG* pConfidence); - STDMETHODIMP Postpone( - REFTIME newtime); - STDMETHODIMP GetHResult( - HRESULT* phrResult); - - // other public methods - - HRESULT Invoke(); - - // access methods - - // returns TRUE if streamtime, FALSE if presentation time - BOOL IsStreamTime() { - return m_bStream; - }; - - CRefTime GetTime() { - return m_time; - }; - - REFIID GetIID() { - return *m_iid; - }; - - long GetMethod() { - return m_dispidMethod; - }; - - short GetFlags() { - return m_wFlags; - }; - - DISPPARAMS* GetParams() { - return &m_DispParams; - }; - - VARIANT* GetResult() { - return m_pvarResult; - }; - -protected: - - CCmdQueue* m_pQueue; - - // pUnk for the interface that we will execute the command on - LPUNKNOWN m_pUnk; - - // stored command data - REFERENCE_TIME m_time; - GUID* m_iid; - long m_dispidMethod; - short m_wFlags; - VARIANT* m_pvarResult; - BOOL m_bStream; - CDispParams m_DispParams; - DISPID m_DispId; // For get and put - - // we use this for ITypeInfo access - CBaseDispatch m_Dispatch; - - // save retval here - HRESULT m_hrResult; -}; - - -// a list of CDeferredCommand objects. this is a base class providing -// the basics of access to the list. If you want to use CDeferredCommand -// objects then your queue needs to be derived from this class. - -class AM_NOVTABLE CCmdQueue -{ -public: - CCmdQueue(); - virtual ~CCmdQueue(); - - // returns a new CDeferredCommand object that will be initialised with - // the parameters and will be added to the queue during construction. - // returns S_OK if successfully created otherwise an error and - // no object has been queued. - virtual HRESULT New( - CDeferredCommand **ppCmd, - LPUNKNOWN pUnk, - REFTIME time, - GUID* iid, - long dispidMethod, - short wFlags, - long cArgs, - VARIANT* pDispParams, - VARIANT* pvarResult, - short* puArgErr, - BOOL bStream - ); - - // called by the CDeferredCommand object to add and remove itself - // from the queue - virtual HRESULT Insert(CDeferredCommand* pCmd); - virtual HRESULT Remove(CDeferredCommand* pCmd); - - // Command-Due Checking - // - // There are two schemes of synchronisation: coarse and accurate. In - // coarse mode, you wait till the time arrives and then execute the cmd. - // In accurate mode, you wait until you are processing the sample that - // will appear at the time, and then execute the command. It's up to the - // filter which one it will implement. The filtergraph will always - // implement coarse mode for commands queued at the filtergraph. - // - // If you want coarse sync, you probably want to wait until there is a - // command due, and then execute it. You can do this by calling - // GetDueCommand. If you have several things to wait for, get the - // event handle from GetDueHandle() and when this is signalled then call - // GetDueCommand. Stream time will only advance between calls to Run and - // EndRun. Note that to avoid an extra thread there is no guarantee that - // if the handle is set there will be a command ready. Each time the - // event is signalled, call GetDueCommand (probably with a 0 timeout); - // This may return E_ABORT. - // - // If you want accurate sync, you must call GetCommandDueFor, passing - // as a parameter the stream time of the samples you are about to process. - // This will return: - // -- a stream-time command due at or before that stream time - // -- a presentation-time command due at or before the - // time that stream time will be presented (only between Run - // and EndRun calls, since outside of this, the mapping from - // stream time to presentation time is not known. - // -- any presentation-time command due now. - // This means that if you want accurate synchronisation on samples that - // might be processed during Paused mode, you need to use - // stream-time commands. - // - // In all cases, commands remain queued until Invoked or Cancelled. The - // setting and resetting of the event handle is managed entirely by this - // queue object. - - // set the clock used for timing - virtual HRESULT SetSyncSource(IReferenceClock*); - - // switch to run mode. Streamtime to Presentation time mapping known. - virtual HRESULT Run(REFERENCE_TIME tStreamTimeOffset); - - // switch to Stopped or Paused mode. Time mapping not known. - virtual HRESULT EndRun(); - - // return a pointer to the next due command. Blocks for msTimeout - // milliseconds until there is a due command. - // Stream-time commands will only become due between Run and Endrun calls. - // The command remains queued until invoked or cancelled. - // Returns E_ABORT if timeout occurs, otherwise S_OK (or other error). - // Returns an AddRef-ed object - virtual HRESULT GetDueCommand(CDeferredCommand ** ppCmd, long msTimeout); - - // return the event handle that will be signalled whenever - // there are deferred commands due for execution (when GetDueCommand - // will not block). - HANDLE GetDueHandle() { - return HANDLE(m_evDue); - }; - - // return a pointer to a command that will be due for a given time. - // Pass in a stream time here. The stream time offset will be passed - // in via the Run method. - // Commands remain queued until invoked or cancelled. - // This method will not block. It will report VFW_E_NOT_FOUND if there - // are no commands due yet. - // Returns an AddRef-ed object - virtual HRESULT GetCommandDueFor(REFERENCE_TIME tStream, CDeferredCommand**ppCmd); - - // check if a given time is due (TRUE if it is due yet) - BOOL CheckTime(CRefTime time, BOOL bStream) { - - // if no clock, nothing is due! - if (!m_pClock) { - return FALSE; - } - - // stream time - if (bStream) { - - // not valid if not running - if (!m_bRunning) { - return FALSE; - } - // add on known stream time offset to get presentation time - time += m_StreamTimeOffset; - } - - CRefTime Now; - m_pClock->GetTime((REFERENCE_TIME*)&Now); - return (time <= Now); - }; - -protected: - - // protect access to lists etc - CCritSec m_Lock; - - // commands queued in presentation time are stored here - CGenericList m_listPresentation; - - // commands queued in stream time are stored here - CGenericList m_listStream; - - // set when any commands are due - CAMEvent m_evDue; - - // creates an advise for the earliest time required, if any - void SetTimeAdvise(void); - - // advise id from reference clock (0 if no outstanding advise) - DWORD_PTR m_dwAdvise; - - // advise time is for this presentation time - CRefTime m_tCurrentAdvise; - - // the reference clock we are using (addrefed) - IReferenceClock* m_pClock; - - // true when running - BOOL m_bRunning; - - // contains stream time offset when m_bRunning is true - CRefTime m_StreamTimeOffset; -}; - -#endif // __CTLUTIL__ +//------------------------------------------------------------------------------ +// File: CtlUtil.h +// +// Desc: DirectShow base classes. +// +// Copyright (c) Microsoft Corporation. All rights reserved. +//------------------------------------------------------------------------------ + + +// Base classes implementing IDispatch parsing for the basic control dual +// interfaces. Derive from these and implement just the custom method and +// property methods. We also implement CPosPassThru that can be used by +// renderers and transforms to pass by IMediaPosition and IMediaSeeking + +#ifndef __CTLUTIL__ +#define __CTLUTIL__ + +// OLE Automation has different ideas of TRUE and FALSE + +#define OATRUE (-1) +#define OAFALSE (0) + + +// It's possible that we could replace this class with CreateStdDispatch + +class CBaseDispatch +{ + ITypeInfo * m_pti; + +public: + + CBaseDispatch() : m_pti(NULL) {} + ~CBaseDispatch(); + + /* IDispatch methods */ + STDMETHODIMP GetTypeInfoCount(UINT * pctinfo); + + STDMETHODIMP GetTypeInfo( + REFIID riid, + UINT itinfo, + LCID lcid, + ITypeInfo ** pptinfo); + + STDMETHODIMP GetIDsOfNames( + REFIID riid, + OLECHAR ** rgszNames, + UINT cNames, + LCID lcid, + DISPID * rgdispid); +}; + + +class AM_NOVTABLE CMediaControl : + public IMediaControl, + public CUnknown +{ + CBaseDispatch m_basedisp; + +public: + + CMediaControl(const TCHAR *, LPUNKNOWN); + + DECLARE_IUNKNOWN + + // override this to publicise our interfaces + STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, void **ppv); + + /* IDispatch methods */ + STDMETHODIMP GetTypeInfoCount(UINT * pctinfo); + + STDMETHODIMP GetTypeInfo( + UINT itinfo, + LCID lcid, + ITypeInfo ** pptinfo); + + STDMETHODIMP GetIDsOfNames( + REFIID riid, + OLECHAR ** rgszNames, + UINT cNames, + LCID lcid, + DISPID * rgdispid); + + STDMETHODIMP Invoke( + DISPID dispidMember, + REFIID riid, + LCID lcid, + WORD wFlags, + DISPPARAMS * pdispparams, + VARIANT * pvarResult, + EXCEPINFO * pexcepinfo, + UINT * puArgErr); +}; + + +class AM_NOVTABLE CMediaEvent : + public IMediaEventEx, + public CUnknown +{ + CBaseDispatch m_basedisp; + +public: + + CMediaEvent(const TCHAR *, LPUNKNOWN); + + DECLARE_IUNKNOWN + + // override this to publicise our interfaces + STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, void **ppv); + + /* IDispatch methods */ + STDMETHODIMP GetTypeInfoCount(UINT * pctinfo); + + STDMETHODIMP GetTypeInfo( + UINT itinfo, + LCID lcid, + ITypeInfo ** pptinfo); + + STDMETHODIMP GetIDsOfNames( + REFIID riid, + OLECHAR ** rgszNames, + UINT cNames, + LCID lcid, + DISPID * rgdispid); + + STDMETHODIMP Invoke( + DISPID dispidMember, + REFIID riid, + LCID lcid, + WORD wFlags, + DISPPARAMS * pdispparams, + VARIANT * pvarResult, + EXCEPINFO * pexcepinfo, + UINT * puArgErr); +}; + + +class AM_NOVTABLE CMediaPosition : + public IMediaPosition, + public CUnknown +{ + CBaseDispatch m_basedisp; + + +public: + + CMediaPosition(const TCHAR *, LPUNKNOWN); + CMediaPosition(const TCHAR *, LPUNKNOWN, HRESULT *phr); + + DECLARE_IUNKNOWN + + // override this to publicise our interfaces + STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, void **ppv); + + /* IDispatch methods */ + STDMETHODIMP GetTypeInfoCount(UINT * pctinfo); + + STDMETHODIMP GetTypeInfo( + UINT itinfo, + LCID lcid, + ITypeInfo ** pptinfo); + + STDMETHODIMP GetIDsOfNames( + REFIID riid, + OLECHAR ** rgszNames, + UINT cNames, + LCID lcid, + DISPID * rgdispid); + + STDMETHODIMP Invoke( + DISPID dispidMember, + REFIID riid, + LCID lcid, + WORD wFlags, + DISPPARAMS * pdispparams, + VARIANT * pvarResult, + EXCEPINFO * pexcepinfo, + UINT * puArgErr); + +}; + + +// OA-compatibility means that we must use double as the RefTime value, +// and REFERENCE_TIME (essentially a LONGLONG) within filters. +// this class converts between the two + +class COARefTime : public CRefTime { +public: + + COARefTime() { + }; + + COARefTime(CRefTime t) + : CRefTime(t) + { + }; + + COARefTime(REFERENCE_TIME t) + : CRefTime(t) + { + }; + + COARefTime(double d) { + m_time = (LONGLONG) (d * 10000000); + }; + + operator double() { + return double(m_time) / 10000000; + }; + + operator REFERENCE_TIME() { + return m_time; + }; + + COARefTime& operator=(const double& rd) { + m_time = (LONGLONG) (rd * 10000000); + return *this; + } + + COARefTime& operator=(const REFERENCE_TIME& rt) { + m_time = rt; + return *this; + } + + inline BOOL operator==(const COARefTime& rt) + { + return m_time == rt.m_time; + }; + + inline BOOL operator!=(const COARefTime& rt) + { + return m_time != rt.m_time; + }; + + inline BOOL operator < (const COARefTime& rt) + { + return m_time < rt.m_time; + }; + + inline BOOL operator > (const COARefTime& rt) + { + return m_time > rt.m_time; + }; + + inline BOOL operator >= (const COARefTime& rt) + { + return m_time >= rt.m_time; + }; + + inline BOOL operator <= (const COARefTime& rt) + { + return m_time <= rt.m_time; + }; + + inline COARefTime operator+(const COARefTime& rt) + { + return COARefTime(m_time + rt.m_time); + }; + + inline COARefTime operator-(const COARefTime& rt) + { + return COARefTime(m_time - rt.m_time); + }; + + inline COARefTime operator*(LONG l) + { + return COARefTime(m_time * l); + }; + + inline COARefTime operator/(LONG l) + { + return COARefTime(m_time / l); + }; + +private: + // Prevent bugs from constructing from LONG (which gets + // converted to double and then multiplied by 10000000 + COARefTime(LONG); +#ifdef __MINGW32_MAJOR_VERSION + void operator=(LONG); +#else + operator=(LONG); +#endif +}; + + +// A utility class that handles IMediaPosition and IMediaSeeking on behalf +// of single-input pin renderers, or transform filters. +// +// Renderers will expose this from the filter; transform filters will +// expose it from the output pin and not the renderer. +// +// Create one of these, giving it your IPin* for your input pin, and delegate +// all IMediaPosition methods to it. It will query the input pin for +// IMediaPosition and respond appropriately. +// +// Call ForceRefresh if the pin connection changes. +// +// This class no longer caches the upstream IMediaPosition or IMediaSeeking +// it acquires it on each method call. This means ForceRefresh is not needed. +// The method is kept for source compatibility and to minimise the changes +// if we need to put it back later for performance reasons. + +class CPosPassThru : public IMediaSeeking, public CMediaPosition +{ + IPin *m_pPin; + + HRESULT GetPeer(IMediaPosition **ppMP); + HRESULT GetPeerSeeking(IMediaSeeking **ppMS); + +public: + + CPosPassThru(const TCHAR *, LPUNKNOWN, HRESULT*, IPin *); + DECLARE_IUNKNOWN + + HRESULT ForceRefresh() { + return S_OK; + }; + + // override to return an accurate current position + virtual HRESULT GetMediaTime(LONGLONG *pStartTime,LONGLONG *pEndTime) { + return E_FAIL; + } + + STDMETHODIMP NonDelegatingQueryInterface(REFIID riid,void **ppv); + + // IMediaSeeking methods + STDMETHODIMP GetCapabilities( DWORD * pCapabilities ); + STDMETHODIMP CheckCapabilities( DWORD * pCapabilities ); + STDMETHODIMP SetTimeFormat(const GUID * pFormat); + STDMETHODIMP GetTimeFormat(GUID *pFormat); + STDMETHODIMP IsUsingTimeFormat(const GUID * pFormat); + STDMETHODIMP IsFormatSupported( const GUID * pFormat); + STDMETHODIMP QueryPreferredFormat( GUID *pFormat); + STDMETHODIMP ConvertTimeFormat(LONGLONG * pTarget, const GUID * pTargetFormat, + LONGLONG Source, const GUID * pSourceFormat ); + STDMETHODIMP SetPositions( LONGLONG * pCurrent, DWORD CurrentFlags + , LONGLONG * pStop, DWORD StopFlags ); + + STDMETHODIMP GetPositions( LONGLONG * pCurrent, LONGLONG * pStop ); + STDMETHODIMP GetCurrentPosition( LONGLONG * pCurrent ); + STDMETHODIMP GetStopPosition( LONGLONG * pStop ); + STDMETHODIMP SetRate( double dRate); + STDMETHODIMP GetRate( double * pdRate); + STDMETHODIMP GetDuration( LONGLONG *pDuration); + STDMETHODIMP GetAvailable( LONGLONG *pEarliest, LONGLONG *pLatest ); + STDMETHODIMP GetPreroll( LONGLONG *pllPreroll ); + + // IMediaPosition properties + STDMETHODIMP get_Duration(REFTIME * plength); + STDMETHODIMP put_CurrentPosition(REFTIME llTime); + STDMETHODIMP get_StopTime(REFTIME * pllTime); + STDMETHODIMP put_StopTime(REFTIME llTime); + STDMETHODIMP get_PrerollTime(REFTIME * pllTime); + STDMETHODIMP put_PrerollTime(REFTIME llTime); + STDMETHODIMP get_Rate(double * pdRate); + STDMETHODIMP put_Rate(double dRate); + STDMETHODIMP get_CurrentPosition(REFTIME * pllTime); + STDMETHODIMP CanSeekForward(LONG *pCanSeekForward); + STDMETHODIMP CanSeekBackward(LONG *pCanSeekBackward); + +private: + HRESULT GetSeekingLongLong( HRESULT (__stdcall IMediaSeeking::*pMethod)( LONGLONG * ), + LONGLONG * pll ); +}; + + +// Adds the ability to return a current position + +class CRendererPosPassThru : public CPosPassThru +{ + CCritSec m_PositionLock; // Locks access to our position + LONGLONG m_StartMedia; // Start media time last seen + LONGLONG m_EndMedia; // And likewise the end media + BOOL m_bReset; // Have media times been set + +public: + + // Used to help with passing media times through graph + + CRendererPosPassThru(const TCHAR *, LPUNKNOWN, HRESULT*, IPin *); + HRESULT RegisterMediaTime(IMediaSample *pMediaSample); + HRESULT RegisterMediaTime(LONGLONG StartTime,LONGLONG EndTime); + HRESULT GetMediaTime(LONGLONG *pStartTime,LONGLONG *pEndTime); + HRESULT ResetMediaTime(); + HRESULT EOS(); +}; + +STDAPI CreatePosPassThru( + LPUNKNOWN pAgg, + BOOL bRenderer, + IPin *pPin, + IUnknown **ppPassThru +); + +// A class that handles the IDispatch part of IBasicAudio and leaves the +// properties and methods themselves pure virtual. + +class AM_NOVTABLE CBasicAudio : public IBasicAudio, public CUnknown +{ + CBaseDispatch m_basedisp; + +public: + + CBasicAudio(const TCHAR *, LPUNKNOWN); + + DECLARE_IUNKNOWN + + // override this to publicise our interfaces + STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, void **ppv); + + /* IDispatch methods */ + STDMETHODIMP GetTypeInfoCount(UINT * pctinfo); + + STDMETHODIMP GetTypeInfo( + UINT itinfo, + LCID lcid, + ITypeInfo ** pptinfo); + + STDMETHODIMP GetIDsOfNames( + REFIID riid, + OLECHAR ** rgszNames, + UINT cNames, + LCID lcid, + DISPID * rgdispid); + + STDMETHODIMP Invoke( + DISPID dispidMember, + REFIID riid, + LCID lcid, + WORD wFlags, + DISPPARAMS * pdispparams, + VARIANT * pvarResult, + EXCEPINFO * pexcepinfo, + UINT * puArgErr); +}; + + +// A class that handles the IDispatch part of IBasicVideo and leaves the +// properties and methods themselves pure virtual. + +class AM_NOVTABLE CBaseBasicVideo : public IBasicVideo2, public CUnknown +{ + CBaseDispatch m_basedisp; + +public: + + CBaseBasicVideo(const TCHAR *, LPUNKNOWN); + + DECLARE_IUNKNOWN + + // override this to publicise our interfaces + STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, void **ppv); + + /* IDispatch methods */ + STDMETHODIMP GetTypeInfoCount(UINT * pctinfo); + + STDMETHODIMP GetTypeInfo( + UINT itinfo, + LCID lcid, + ITypeInfo ** pptinfo); + + STDMETHODIMP GetIDsOfNames( + REFIID riid, + OLECHAR ** rgszNames, + UINT cNames, + LCID lcid, + DISPID * rgdispid); + + STDMETHODIMP Invoke( + DISPID dispidMember, + REFIID riid, + LCID lcid, + WORD wFlags, + DISPPARAMS * pdispparams, + VARIANT * pvarResult, + EXCEPINFO * pexcepinfo, + UINT * puArgErr); + + STDMETHODIMP GetPreferredAspectRatio( + long *plAspectX, + long *plAspectY) + { + return E_NOTIMPL; + } +}; + + +// A class that handles the IDispatch part of IVideoWindow and leaves the +// properties and methods themselves pure virtual. + +class AM_NOVTABLE CBaseVideoWindow : public IVideoWindow, public CUnknown +{ + CBaseDispatch m_basedisp; + +public: + + CBaseVideoWindow(const TCHAR *, LPUNKNOWN); + + DECLARE_IUNKNOWN + + // override this to publicise our interfaces + STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, void **ppv); + + /* IDispatch methods */ + STDMETHODIMP GetTypeInfoCount(UINT * pctinfo); + + STDMETHODIMP GetTypeInfo( + UINT itinfo, + LCID lcid, + ITypeInfo ** pptinfo); + + STDMETHODIMP GetIDsOfNames( + REFIID riid, + OLECHAR ** rgszNames, + UINT cNames, + LCID lcid, + DISPID * rgdispid); + + STDMETHODIMP Invoke( + DISPID dispidMember, + REFIID riid, + LCID lcid, + WORD wFlags, + DISPPARAMS * pdispparams, + VARIANT * pvarResult, + EXCEPINFO * pexcepinfo, + UINT * puArgErr); +}; + + +// abstract class to help source filters with their implementation +// of IMediaPosition. Derive from this and set the duration (and stop +// position). Also override NotifyChange to do something when the properties +// change. + +class AM_NOVTABLE CSourcePosition : public CMediaPosition +{ + +public: + CSourcePosition(const TCHAR *, LPUNKNOWN, HRESULT*, CCritSec *); + + // IMediaPosition methods + STDMETHODIMP get_Duration(REFTIME * plength); + STDMETHODIMP put_CurrentPosition(REFTIME llTime); + STDMETHODIMP get_StopTime(REFTIME * pllTime); + STDMETHODIMP put_StopTime(REFTIME llTime); + STDMETHODIMP get_PrerollTime(REFTIME * pllTime); + STDMETHODIMP put_PrerollTime(REFTIME llTime); + STDMETHODIMP get_Rate(double * pdRate); + STDMETHODIMP put_Rate(double dRate); + STDMETHODIMP CanSeekForward(LONG *pCanSeekForward); + STDMETHODIMP CanSeekBackward(LONG *pCanSeekBackward); + + // override if you can return the data you are actually working on + STDMETHODIMP get_CurrentPosition(REFTIME * pllTime) { + return E_NOTIMPL; + }; + +protected: + + // we call this to notify changes. Override to handle them + virtual HRESULT ChangeStart() PURE; + virtual HRESULT ChangeStop() PURE; + virtual HRESULT ChangeRate() PURE; + + COARefTime m_Duration; + COARefTime m_Start; + COARefTime m_Stop; + double m_Rate; + + CCritSec * m_pLock; +}; + +class AM_NOVTABLE CSourceSeeking : + public IMediaSeeking, + public CUnknown +{ + +public: + + DECLARE_IUNKNOWN; + STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, void **ppv); + + // IMediaSeeking methods + + STDMETHODIMP IsFormatSupported(const GUID * pFormat); + STDMETHODIMP QueryPreferredFormat(GUID *pFormat); + STDMETHODIMP SetTimeFormat(const GUID * pFormat); + STDMETHODIMP IsUsingTimeFormat(const GUID * pFormat); + STDMETHODIMP GetTimeFormat(GUID *pFormat); + STDMETHODIMP GetDuration(LONGLONG *pDuration); + STDMETHODIMP GetStopPosition(LONGLONG *pStop); + STDMETHODIMP GetCurrentPosition(LONGLONG *pCurrent); + STDMETHODIMP GetCapabilities( DWORD * pCapabilities ); + STDMETHODIMP CheckCapabilities( DWORD * pCapabilities ); + STDMETHODIMP ConvertTimeFormat( LONGLONG * pTarget, const GUID * pTargetFormat, + LONGLONG Source, const GUID * pSourceFormat ); + + STDMETHODIMP SetPositions( LONGLONG * pCurrent, DWORD CurrentFlags + , LONGLONG * pStop, DWORD StopFlags ); + + STDMETHODIMP GetPositions( LONGLONG * pCurrent, LONGLONG * pStop ); + + STDMETHODIMP GetAvailable( LONGLONG * pEarliest, LONGLONG * pLatest ); + STDMETHODIMP SetRate( double dRate); + STDMETHODIMP GetRate( double * pdRate); + STDMETHODIMP GetPreroll(LONGLONG *pPreroll); + + +protected: + + // ctor + CSourceSeeking(const TCHAR *, LPUNKNOWN, HRESULT*, CCritSec *); + + // we call this to notify changes. Override to handle them + virtual HRESULT ChangeStart() PURE; + virtual HRESULT ChangeStop() PURE; + virtual HRESULT ChangeRate() PURE; + + CRefTime m_rtDuration; // length of stream + CRefTime m_rtStart; // source will start here + CRefTime m_rtStop; // source will stop here + double m_dRateSeeking; + + // seeking capabilities + DWORD m_dwSeekingCaps; + + CCritSec * m_pLock; +}; + + +// Base classes supporting Deferred commands. + +// Deferred commands are queued by calls to methods on the IQueueCommand +// interface, exposed by the filtergraph and by some filters. A successful +// call to one of these methods will return an IDeferredCommand interface +// representing the queued command. +// +// A CDeferredCommand object represents a single deferred command, and exposes +// the IDeferredCommand interface as well as other methods permitting time +// checks and actual execution. It contains a reference to the CCommandQueue +// object on which it is queued. +// +// CCommandQueue is a base class providing a queue of CDeferredCommand +// objects, and methods to add, remove, check status and invoke the queued +// commands. A CCommandQueue object would be part of an object that +// implemented IQueueCommand. + +class CCmdQueue; + +// take a copy of the params and store them. Release any allocated +// memory in destructor + +class CDispParams : public DISPPARAMS +{ +public: + CDispParams(UINT nArgs, VARIANT* pArgs, HRESULT *phr = NULL); + ~CDispParams(); +}; + + +// CDeferredCommand lifetime is controlled by refcounts. Caller of +// InvokeAt.. gets a refcounted interface pointer, and the CCmdQueue +// object also holds a refcount on us. Calling Cancel or Invoke takes +// us off the CCmdQueue and thus reduces the refcount by 1. Once taken +// off the queue we cannot be put back on the queue. + +class CDeferredCommand + : public CUnknown, + public IDeferredCommand +{ +public: + + CDeferredCommand( + CCmdQueue * pQ, + LPUNKNOWN pUnk, // aggregation outer unk + HRESULT * phr, + LPUNKNOWN pUnkExecutor, // object that will execute this cmd + REFTIME time, + GUID* iid, + long dispidMethod, + short wFlags, + long cArgs, + VARIANT* pDispParams, + VARIANT* pvarResult, + short* puArgErr, + BOOL bStream + ); + + DECLARE_IUNKNOWN + + // override this to publicise our interfaces + STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, void **ppv); + + // IDeferredCommand methods + STDMETHODIMP Cancel(); + STDMETHODIMP Confidence( + LONG* pConfidence); + STDMETHODIMP Postpone( + REFTIME newtime); + STDMETHODIMP GetHResult( + HRESULT* phrResult); + + // other public methods + + HRESULT Invoke(); + + // access methods + + // returns TRUE if streamtime, FALSE if presentation time + BOOL IsStreamTime() { + return m_bStream; + }; + + CRefTime GetTime() { + return m_time; + }; + + REFIID GetIID() { + return *m_iid; + }; + + long GetMethod() { + return m_dispidMethod; + }; + + short GetFlags() { + return m_wFlags; + }; + + DISPPARAMS* GetParams() { + return &m_DispParams; + }; + + VARIANT* GetResult() { + return m_pvarResult; + }; + +protected: + + CCmdQueue* m_pQueue; + + // pUnk for the interface that we will execute the command on + LPUNKNOWN m_pUnk; + + // stored command data + REFERENCE_TIME m_time; + GUID* m_iid; + long m_dispidMethod; + short m_wFlags; + VARIANT* m_pvarResult; + BOOL m_bStream; + CDispParams m_DispParams; + DISPID m_DispId; // For get and put + + // we use this for ITypeInfo access + CBaseDispatch m_Dispatch; + + // save retval here + HRESULT m_hrResult; +}; + + +// a list of CDeferredCommand objects. this is a base class providing +// the basics of access to the list. If you want to use CDeferredCommand +// objects then your queue needs to be derived from this class. + +class AM_NOVTABLE CCmdQueue +{ +public: + CCmdQueue(); + virtual ~CCmdQueue(); + + // returns a new CDeferredCommand object that will be initialised with + // the parameters and will be added to the queue during construction. + // returns S_OK if successfully created otherwise an error and + // no object has been queued. + virtual HRESULT New( + CDeferredCommand **ppCmd, + LPUNKNOWN pUnk, + REFTIME time, + GUID* iid, + long dispidMethod, + short wFlags, + long cArgs, + VARIANT* pDispParams, + VARIANT* pvarResult, + short* puArgErr, + BOOL bStream + ); + + // called by the CDeferredCommand object to add and remove itself + // from the queue + virtual HRESULT Insert(CDeferredCommand* pCmd); + virtual HRESULT Remove(CDeferredCommand* pCmd); + + // Command-Due Checking + // + // There are two schemes of synchronisation: coarse and accurate. In + // coarse mode, you wait till the time arrives and then execute the cmd. + // In accurate mode, you wait until you are processing the sample that + // will appear at the time, and then execute the command. It's up to the + // filter which one it will implement. The filtergraph will always + // implement coarse mode for commands queued at the filtergraph. + // + // If you want coarse sync, you probably want to wait until there is a + // command due, and then execute it. You can do this by calling + // GetDueCommand. If you have several things to wait for, get the + // event handle from GetDueHandle() and when this is signalled then call + // GetDueCommand. Stream time will only advance between calls to Run and + // EndRun. Note that to avoid an extra thread there is no guarantee that + // if the handle is set there will be a command ready. Each time the + // event is signalled, call GetDueCommand (probably with a 0 timeout); + // This may return E_ABORT. + // + // If you want accurate sync, you must call GetCommandDueFor, passing + // as a parameter the stream time of the samples you are about to process. + // This will return: + // -- a stream-time command due at or before that stream time + // -- a presentation-time command due at or before the + // time that stream time will be presented (only between Run + // and EndRun calls, since outside of this, the mapping from + // stream time to presentation time is not known. + // -- any presentation-time command due now. + // This means that if you want accurate synchronisation on samples that + // might be processed during Paused mode, you need to use + // stream-time commands. + // + // In all cases, commands remain queued until Invoked or Cancelled. The + // setting and resetting of the event handle is managed entirely by this + // queue object. + + // set the clock used for timing + virtual HRESULT SetSyncSource(IReferenceClock*); + + // switch to run mode. Streamtime to Presentation time mapping known. + virtual HRESULT Run(REFERENCE_TIME tStreamTimeOffset); + + // switch to Stopped or Paused mode. Time mapping not known. + virtual HRESULT EndRun(); + + // return a pointer to the next due command. Blocks for msTimeout + // milliseconds until there is a due command. + // Stream-time commands will only become due between Run and Endrun calls. + // The command remains queued until invoked or cancelled. + // Returns E_ABORT if timeout occurs, otherwise S_OK (or other error). + // Returns an AddRef-ed object + virtual HRESULT GetDueCommand(CDeferredCommand ** ppCmd, long msTimeout); + + // return the event handle that will be signalled whenever + // there are deferred commands due for execution (when GetDueCommand + // will not block). + HANDLE GetDueHandle() { + return HANDLE(m_evDue); + }; + + // return a pointer to a command that will be due for a given time. + // Pass in a stream time here. The stream time offset will be passed + // in via the Run method. + // Commands remain queued until invoked or cancelled. + // This method will not block. It will report VFW_E_NOT_FOUND if there + // are no commands due yet. + // Returns an AddRef-ed object + virtual HRESULT GetCommandDueFor(REFERENCE_TIME tStream, CDeferredCommand**ppCmd); + + // check if a given time is due (TRUE if it is due yet) + BOOL CheckTime(CRefTime time, BOOL bStream) { + + // if no clock, nothing is due! + if (!m_pClock) { + return FALSE; + } + + // stream time + if (bStream) { + + // not valid if not running + if (!m_bRunning) { + return FALSE; + } + // add on known stream time offset to get presentation time + time += m_StreamTimeOffset; + } + + CRefTime Now; + m_pClock->GetTime((REFERENCE_TIME*)&Now); + return (time <= Now); + }; + +protected: + + // protect access to lists etc + CCritSec m_Lock; + + // commands queued in presentation time are stored here + CGenericList m_listPresentation; + + // commands queued in stream time are stored here + CGenericList m_listStream; + + // set when any commands are due + CAMEvent m_evDue; + + // creates an advise for the earliest time required, if any + void SetTimeAdvise(void); + + // advise id from reference clock (0 if no outstanding advise) + DWORD_PTR m_dwAdvise; + + // advise time is for this presentation time + CRefTime m_tCurrentAdvise; + + // the reference clock we are using (addrefed) + IReferenceClock* m_pClock; + + // true when running + BOOL m_bRunning; + + // contains stream time offset when m_bRunning is true + CRefTime m_StreamTimeOffset; +}; + +#endif // __CTLUTIL__ diff --git a/videoInputSrcAndDemos/libs/DShow/Include/d3dx9shape.h b/videoInputSrcAndDemos/libs/DShow/Include/d3dx9shape.h index 82908fe..4c23091 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/d3dx9shape.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/d3dx9shape.h @@ -1,221 +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__ - +/////////////////////////////////////////////////////////////////////////// +// +// 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__ + diff --git a/videoInputSrcAndDemos/libs/DShow/Include/d3dx9tex.h b/videoInputSrcAndDemos/libs/DShow/Include/d3dx9tex.h index 3e63941..0d62b69 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/d3dx9tex.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/d3dx9tex.h @@ -1,1723 +1,1723 @@ -////////////////////////////////////////////////////////////////////////////// -// -// Copyright (C) Microsoft Corporation. All Rights Reserved. -// -// File: d3dx9tex.h -// Content: D3DX texturing APIs -// -////////////////////////////////////////////////////////////////////////////// - -#include "d3dx9.h" - -#ifndef __D3DX9TEX_H__ -#define __D3DX9TEX_H__ - - -//---------------------------------------------------------------------------- -// D3DX_FILTER flags: -// ------------------ -// -// A valid filter must contain one of these values: -// -// D3DX_FILTER_NONE -// No scaling or filtering will take place. Pixels outside the bounds -// of the source image are assumed to be transparent black. -// D3DX_FILTER_POINT -// Each destination pixel is computed by sampling the nearest pixel -// from the source image. -// D3DX_FILTER_LINEAR -// Each destination pixel is computed by linearly interpolating between -// the nearest pixels in the source image. This filter works best -// when the scale on each axis is less than 2. -// D3DX_FILTER_TRIANGLE -// Every pixel in the source image contributes equally to the -// destination image. This is the slowest of all the filters. -// D3DX_FILTER_BOX -// Each pixel is computed by averaging a 2x2(x2) box pixels from -// the source image. Only works when the dimensions of the -// destination are half those of the source. (as with mip maps) -// -// And can be OR'd with any of these optional flags: -// -// D3DX_FILTER_MIRROR_U -// Indicates that pixels off the edge of the texture on the U-axis -// should be mirrored, not wraped. -// D3DX_FILTER_MIRROR_V -// Indicates that pixels off the edge of the texture on the V-axis -// should be mirrored, not wraped. -// D3DX_FILTER_MIRROR_W -// Indicates that pixels off the edge of the texture on the W-axis -// should be mirrored, not wraped. -// D3DX_FILTER_MIRROR -// Same as specifying D3DX_FILTER_MIRROR_U | D3DX_FILTER_MIRROR_V | -// D3DX_FILTER_MIRROR_V -// D3DX_FILTER_DITHER -// Dithers the resulting image using a 4x4 order dither pattern. -// D3DX_FILTER_SRGB_IN -// Denotes that the input data is in sRGB (gamma 2.2) colorspace. -// D3DX_FILTER_SRGB_OUT -// Denotes that the output data is in sRGB (gamma 2.2) colorspace. -// D3DX_FILTER_SRGB -// Same as specifying D3DX_FILTER_SRGB_IN | D3DX_FILTER_SRGB_OUT -// -//---------------------------------------------------------------------------- - -#define D3DX_FILTER_NONE (1 << 0) -#define D3DX_FILTER_POINT (2 << 0) -#define D3DX_FILTER_LINEAR (3 << 0) -#define D3DX_FILTER_TRIANGLE (4 << 0) -#define D3DX_FILTER_BOX (5 << 0) - -#define D3DX_FILTER_MIRROR_U (1 << 16) -#define D3DX_FILTER_MIRROR_V (2 << 16) -#define D3DX_FILTER_MIRROR_W (4 << 16) -#define D3DX_FILTER_MIRROR (7 << 16) - -#define D3DX_FILTER_DITHER (1 << 19) -#define D3DX_FILTER_DITHER_DIFFUSION (2 << 19) - -#define D3DX_FILTER_SRGB_IN (1 << 21) -#define D3DX_FILTER_SRGB_OUT (2 << 21) -#define D3DX_FILTER_SRGB (3 << 21) - - -//---------------------------------------------------------------------------- -// D3DX_NORMALMAP flags: -// --------------------- -// These flags are used to control how D3DXComputeNormalMap generates normal -// maps. Any number of these flags may be OR'd together in any combination. -// -// D3DX_NORMALMAP_MIRROR_U -// Indicates that pixels off the edge of the texture on the U-axis -// should be mirrored, not wraped. -// D3DX_NORMALMAP_MIRROR_V -// Indicates that pixels off the edge of the texture on the V-axis -// should be mirrored, not wraped. -// D3DX_NORMALMAP_MIRROR -// Same as specifying D3DX_NORMALMAP_MIRROR_U | D3DX_NORMALMAP_MIRROR_V -// D3DX_NORMALMAP_INVERTSIGN -// Inverts the direction of each normal -// D3DX_NORMALMAP_COMPUTE_OCCLUSION -// Compute the per pixel Occlusion term and encodes it into the alpha. -// An Alpha of 1 means that the pixel is not obscured in anyway, and -// an alpha of 0 would mean that the pixel is completly obscured. -// -//---------------------------------------------------------------------------- - -//---------------------------------------------------------------------------- - -#define D3DX_NORMALMAP_MIRROR_U (1 << 16) -#define D3DX_NORMALMAP_MIRROR_V (2 << 16) -#define D3DX_NORMALMAP_MIRROR (3 << 16) -#define D3DX_NORMALMAP_INVERTSIGN (8 << 16) -#define D3DX_NORMALMAP_COMPUTE_OCCLUSION (16 << 16) - - - - -//---------------------------------------------------------------------------- -// D3DX_CHANNEL flags: -// ------------------- -// These flags are used by functions which operate on or more channels -// in a texture. -// -// D3DX_CHANNEL_RED -// Indicates the red channel should be used -// D3DX_CHANNEL_BLUE -// Indicates the blue channel should be used -// D3DX_CHANNEL_GREEN -// Indicates the green channel should be used -// D3DX_CHANNEL_ALPHA -// Indicates the alpha channel should be used -// D3DX_CHANNEL_LUMINANCE -// Indicates the luminaces of the red green and blue channels should be -// used. -// -//---------------------------------------------------------------------------- - -#define D3DX_CHANNEL_RED (1 << 0) -#define D3DX_CHANNEL_BLUE (1 << 1) -#define D3DX_CHANNEL_GREEN (1 << 2) -#define D3DX_CHANNEL_ALPHA (1 << 3) -#define D3DX_CHANNEL_LUMINANCE (1 << 4) - - - - -//---------------------------------------------------------------------------- -// D3DXIMAGE_FILEFORMAT: -// --------------------- -// This enum is used to describe supported image file formats. -// -//---------------------------------------------------------------------------- - -typedef enum _D3DXIMAGE_FILEFORMAT -{ - D3DXIFF_BMP = 0, - D3DXIFF_JPG = 1, - D3DXIFF_TGA = 2, - D3DXIFF_PNG = 3, - D3DXIFF_DDS = 4, - D3DXIFF_PPM = 5, - D3DXIFF_DIB = 6, - D3DXIFF_HDR = 7, //high dynamic range formats - D3DXIFF_PFM = 8, // - D3DXIFF_FORCE_DWORD = 0x7fffffff - -} D3DXIMAGE_FILEFORMAT; - - -//---------------------------------------------------------------------------- -// LPD3DXFILL2D and LPD3DXFILL3D: -// ------------------------------ -// Function types used by the texture fill functions. -// -// Parameters: -// pOut -// Pointer to a vector which the function uses to return its result. -// X,Y,Z,W will be mapped to R,G,B,A respectivly. -// pTexCoord -// Pointer to a vector containing the coordinates of the texel currently -// being evaluated. Textures and VolumeTexture texcoord components -// range from 0 to 1. CubeTexture texcoord component range from -1 to 1. -// pTexelSize -// Pointer to a vector containing the dimensions of the current texel. -// pData -// Pointer to user data. -// -//---------------------------------------------------------------------------- - -typedef VOID (WINAPI *LPD3DXFILL2D)(D3DXVECTOR4 *pOut, - CONST D3DXVECTOR2 *pTexCoord, CONST D3DXVECTOR2 *pTexelSize, LPVOID pData); - -typedef VOID (WINAPI *LPD3DXFILL3D)(D3DXVECTOR4 *pOut, - CONST D3DXVECTOR3 *pTexCoord, CONST D3DXVECTOR3 *pTexelSize, LPVOID pData); - - - -//---------------------------------------------------------------------------- -// D3DXIMAGE_INFO: -// --------------- -// This structure is used to return a rough description of what the -// the original contents of an image file looked like. -// -// Width -// Width of original image in pixels -// Height -// Height of original image in pixels -// Depth -// Depth of original image in pixels -// MipLevels -// Number of mip levels in original image -// Format -// D3D format which most closely describes the data in original image -// ResourceType -// D3DRESOURCETYPE representing the type of texture stored in the file. -// D3DRTYPE_TEXTURE, D3DRTYPE_VOLUMETEXTURE, or D3DRTYPE_CUBETEXTURE. -// ImageFileFormat -// D3DXIMAGE_FILEFORMAT representing the format of the image file. -// -//---------------------------------------------------------------------------- - -typedef struct _D3DXIMAGE_INFO -{ - UINT Width; - UINT Height; - UINT Depth; - UINT MipLevels; - D3DFORMAT Format; - D3DRESOURCETYPE ResourceType; - D3DXIMAGE_FILEFORMAT ImageFileFormat; - -} D3DXIMAGE_INFO; - - - - - -#ifdef __cplusplus -extern "C" { -#endif //__cplusplus - - - -////////////////////////////////////////////////////////////////////////////// -// Image File APIs /////////////////////////////////////////////////////////// -////////////////////////////////////////////////////////////////////////////// -; -//---------------------------------------------------------------------------- -// GetImageInfoFromFile/Resource: -// ------------------------------ -// Fills in a D3DXIMAGE_INFO struct with information about an image file. -// -// Parameters: -// pSrcFile -// File name of the source image. -// pSrcModule -// Module where resource is located, or NULL for module associated -// with image the os used to create the current process. -// pSrcResource -// Resource name -// pSrcData -// Pointer to file in memory. -// SrcDataSize -// Size in bytes of file in memory. -// pSrcInfo -// Pointer to a D3DXIMAGE_INFO structure to be filled in with the -// description of the data in the source image file. -// -//---------------------------------------------------------------------------- - -HRESULT WINAPI - D3DXGetImageInfoFromFileA( - LPCSTR pSrcFile, - D3DXIMAGE_INFO* pSrcInfo); - -HRESULT WINAPI - D3DXGetImageInfoFromFileW( - LPCWSTR pSrcFile, - D3DXIMAGE_INFO* pSrcInfo); - -#ifdef UNICODE -#define D3DXGetImageInfoFromFile D3DXGetImageInfoFromFileW -#else -#define D3DXGetImageInfoFromFile D3DXGetImageInfoFromFileA -#endif - - -HRESULT WINAPI - D3DXGetImageInfoFromResourceA( - HMODULE hSrcModule, - LPCSTR pSrcResource, - D3DXIMAGE_INFO* pSrcInfo); - -HRESULT WINAPI - D3DXGetImageInfoFromResourceW( - HMODULE hSrcModule, - LPCWSTR pSrcResource, - D3DXIMAGE_INFO* pSrcInfo); - -#ifdef UNICODE -#define D3DXGetImageInfoFromResource D3DXGetImageInfoFromResourceW -#else -#define D3DXGetImageInfoFromResource D3DXGetImageInfoFromResourceA -#endif - - -HRESULT WINAPI - D3DXGetImageInfoFromFileInMemory( - LPCVOID pSrcData, - UINT SrcDataSize, - D3DXIMAGE_INFO* pSrcInfo); - - - - -////////////////////////////////////////////////////////////////////////////// -// Load/Save Surface APIs //////////////////////////////////////////////////// -////////////////////////////////////////////////////////////////////////////// - -//---------------------------------------------------------------------------- -// D3DXLoadSurfaceFromFile/Resource: -// --------------------------------- -// Load surface from a file or resource -// -// Parameters: -// pDestSurface -// Destination surface, which will receive the image. -// pDestPalette -// Destination palette of 256 colors, or NULL -// pDestRect -// Destination rectangle, or NULL for entire surface -// pSrcFile -// File name of the source image. -// pSrcModule -// Module where resource is located, or NULL for module associated -// with image the os used to create the current process. -// pSrcResource -// Resource name -// pSrcData -// Pointer to file in memory. -// SrcDataSize -// Size in bytes of file in memory. -// pSrcRect -// Source rectangle, or NULL for entire image -// Filter -// D3DX_FILTER flags controlling how the image is filtered. -// Or D3DX_DEFAULT for D3DX_FILTER_TRIANGLE. -// ColorKey -// Color to replace with transparent black, or 0 to disable colorkey. -// This is always a 32-bit ARGB color, independent of the source image -// format. Alpha is significant, and should usually be set to FF for -// opaque colorkeys. (ex. Opaque black == 0xff000000) -// pSrcInfo -// Pointer to a D3DXIMAGE_INFO structure to be filled in with the -// description of the data in the source image file, or NULL. -// -//---------------------------------------------------------------------------- - -HRESULT WINAPI - D3DXLoadSurfaceFromFileA( - LPDIRECT3DSURFACE9 pDestSurface, - CONST PALETTEENTRY* pDestPalette, - CONST RECT* pDestRect, - LPCSTR pSrcFile, - CONST RECT* pSrcRect, - DWORD Filter, - D3DCOLOR ColorKey, - D3DXIMAGE_INFO* pSrcInfo); - -HRESULT WINAPI - D3DXLoadSurfaceFromFileW( - LPDIRECT3DSURFACE9 pDestSurface, - CONST PALETTEENTRY* pDestPalette, - CONST RECT* pDestRect, - LPCWSTR pSrcFile, - CONST RECT* pSrcRect, - DWORD Filter, - D3DCOLOR ColorKey, - D3DXIMAGE_INFO* pSrcInfo); - -#ifdef UNICODE -#define D3DXLoadSurfaceFromFile D3DXLoadSurfaceFromFileW -#else -#define D3DXLoadSurfaceFromFile D3DXLoadSurfaceFromFileA -#endif - - - -HRESULT WINAPI - D3DXLoadSurfaceFromResourceA( - LPDIRECT3DSURFACE9 pDestSurface, - CONST PALETTEENTRY* pDestPalette, - CONST RECT* pDestRect, - HMODULE hSrcModule, - LPCSTR pSrcResource, - CONST RECT* pSrcRect, - DWORD Filter, - D3DCOLOR ColorKey, - D3DXIMAGE_INFO* pSrcInfo); - -HRESULT WINAPI - D3DXLoadSurfaceFromResourceW( - LPDIRECT3DSURFACE9 pDestSurface, - CONST PALETTEENTRY* pDestPalette, - CONST RECT* pDestRect, - HMODULE hSrcModule, - LPCWSTR pSrcResource, - CONST RECT* pSrcRect, - DWORD Filter, - D3DCOLOR ColorKey, - D3DXIMAGE_INFO* pSrcInfo); - - -#ifdef UNICODE -#define D3DXLoadSurfaceFromResource D3DXLoadSurfaceFromResourceW -#else -#define D3DXLoadSurfaceFromResource D3DXLoadSurfaceFromResourceA -#endif - - - -HRESULT WINAPI - D3DXLoadSurfaceFromFileInMemory( - LPDIRECT3DSURFACE9 pDestSurface, - CONST PALETTEENTRY* pDestPalette, - CONST RECT* pDestRect, - LPCVOID pSrcData, - UINT SrcDataSize, - CONST RECT* pSrcRect, - DWORD Filter, - D3DCOLOR ColorKey, - D3DXIMAGE_INFO* pSrcInfo); - - - -//---------------------------------------------------------------------------- -// D3DXLoadSurfaceFromSurface: -// --------------------------- -// Load surface from another surface (with color conversion) -// -// Parameters: -// pDestSurface -// Destination surface, which will receive the image. -// pDestPalette -// Destination palette of 256 colors, or NULL -// pDestRect -// Destination rectangle, or NULL for entire surface -// pSrcSurface -// Source surface -// pSrcPalette -// Source palette of 256 colors, or NULL -// pSrcRect -// Source rectangle, or NULL for entire surface -// Filter -// D3DX_FILTER flags controlling how the image is filtered. -// Or D3DX_DEFAULT for D3DX_FILTER_TRIANGLE. -// ColorKey -// Color to replace with transparent black, or 0 to disable colorkey. -// This is always a 32-bit ARGB color, independent of the source image -// format. Alpha is significant, and should usually be set to FF for -// opaque colorkeys. (ex. Opaque black == 0xff000000) -// -//---------------------------------------------------------------------------- - -HRESULT WINAPI - D3DXLoadSurfaceFromSurface( - LPDIRECT3DSURFACE9 pDestSurface, - CONST PALETTEENTRY* pDestPalette, - CONST RECT* pDestRect, - LPDIRECT3DSURFACE9 pSrcSurface, - CONST PALETTEENTRY* pSrcPalette, - CONST RECT* pSrcRect, - DWORD Filter, - D3DCOLOR ColorKey); - - -//---------------------------------------------------------------------------- -// D3DXLoadSurfaceFromMemory: -// -------------------------- -// Load surface from memory. -// -// Parameters: -// pDestSurface -// Destination surface, which will receive the image. -// pDestPalette -// Destination palette of 256 colors, or NULL -// pDestRect -// Destination rectangle, or NULL for entire surface -// pSrcMemory -// Pointer to the top-left corner of the source image in memory -// SrcFormat -// Pixel format of the source image. -// SrcPitch -// Pitch of source image, in bytes. For DXT formats, this number -// should represent the width of one row of cells, in bytes. -// pSrcPalette -// Source palette of 256 colors, or NULL -// pSrcRect -// Source rectangle. -// Filter -// D3DX_FILTER flags controlling how the image is filtered. -// Or D3DX_DEFAULT for D3DX_FILTER_TRIANGLE. -// ColorKey -// Color to replace with transparent black, or 0 to disable colorkey. -// This is always a 32-bit ARGB color, independent of the source image -// format. Alpha is significant, and should usually be set to FF for -// opaque colorkeys. (ex. Opaque black == 0xff000000) -// -//---------------------------------------------------------------------------- - -HRESULT WINAPI - D3DXLoadSurfaceFromMemory( - LPDIRECT3DSURFACE9 pDestSurface, - CONST PALETTEENTRY* pDestPalette, - CONST RECT* pDestRect, - LPCVOID pSrcMemory, - D3DFORMAT SrcFormat, - UINT SrcPitch, - CONST PALETTEENTRY* pSrcPalette, - CONST RECT* pSrcRect, - DWORD Filter, - D3DCOLOR ColorKey); - - -//---------------------------------------------------------------------------- -// D3DXSaveSurfaceToFile: -// ---------------------- -// Save a surface to a image file. -// -// Parameters: -// pDestFile -// File name of the destination file -// DestFormat -// D3DXIMAGE_FILEFORMAT specifying file format to use when saving. -// pSrcSurface -// Source surface, containing the image to be saved -// pSrcPalette -// Source palette of 256 colors, or NULL -// pSrcRect -// Source rectangle, or NULL for the entire image -// -//---------------------------------------------------------------------------- - -HRESULT WINAPI - D3DXSaveSurfaceToFileA( - LPCSTR pDestFile, - D3DXIMAGE_FILEFORMAT DestFormat, - LPDIRECT3DSURFACE9 pSrcSurface, - CONST PALETTEENTRY* pSrcPalette, - CONST RECT* pSrcRect); - -HRESULT WINAPI - D3DXSaveSurfaceToFileW( - LPCWSTR pDestFile, - D3DXIMAGE_FILEFORMAT DestFormat, - LPDIRECT3DSURFACE9 pSrcSurface, - CONST PALETTEENTRY* pSrcPalette, - CONST RECT* pSrcRect); - -#ifdef UNICODE -#define D3DXSaveSurfaceToFile D3DXSaveSurfaceToFileW -#else -#define D3DXSaveSurfaceToFile D3DXSaveSurfaceToFileA -#endif - -//---------------------------------------------------------------------------- -// D3DXSaveSurfaceToFileInMemory: -// ---------------------- -// Save a surface to a image file. -// -// Parameters: -// ppDestBuf -// address of pointer to d3dxbuffer for returning data bits -// DestFormat -// D3DXIMAGE_FILEFORMAT specifying file format to use when saving. -// pSrcSurface -// Source surface, containing the image to be saved -// pSrcPalette -// Source palette of 256 colors, or NULL -// pSrcRect -// Source rectangle, or NULL for the entire image -// -//---------------------------------------------------------------------------- - -HRESULT WINAPI - D3DXSaveSurfaceToFileInMemory( - LPD3DXBUFFER* ppDestBuf, - D3DXIMAGE_FILEFORMAT DestFormat, - LPDIRECT3DSURFACE9 pSrcSurface, - CONST PALETTEENTRY* pSrcPalette, - CONST RECT* pSrcRect); - - -////////////////////////////////////////////////////////////////////////////// -// Load/Save Volume APIs ///////////////////////////////////////////////////// -////////////////////////////////////////////////////////////////////////////// - -//---------------------------------------------------------------------------- -// D3DXLoadVolumeFromFile/Resource: -// -------------------------------- -// Load volume from a file or resource -// -// Parameters: -// pDestVolume -// Destination volume, which will receive the image. -// pDestPalette -// Destination palette of 256 colors, or NULL -// pDestBox -// Destination box, or NULL for entire volume -// pSrcFile -// File name of the source image. -// pSrcModule -// Module where resource is located, or NULL for module associated -// with image the os used to create the current process. -// pSrcResource -// Resource name -// pSrcData -// Pointer to file in memory. -// SrcDataSize -// Size in bytes of file in memory. -// pSrcBox -// Source box, or NULL for entire image -// Filter -// D3DX_FILTER flags controlling how the image is filtered. -// Or D3DX_DEFAULT for D3DX_FILTER_TRIANGLE. -// ColorKey -// Color to replace with transparent black, or 0 to disable colorkey. -// This is always a 32-bit ARGB color, independent of the source image -// format. Alpha is significant, and should usually be set to FF for -// opaque colorkeys. (ex. Opaque black == 0xff000000) -// pSrcInfo -// Pointer to a D3DXIMAGE_INFO structure to be filled in with the -// description of the data in the source image file, or NULL. -// -//---------------------------------------------------------------------------- - -HRESULT WINAPI - D3DXLoadVolumeFromFileA( - LPDIRECT3DVOLUME9 pDestVolume, - CONST PALETTEENTRY* pDestPalette, - CONST D3DBOX* pDestBox, - LPCSTR pSrcFile, - CONST D3DBOX* pSrcBox, - DWORD Filter, - D3DCOLOR ColorKey, - D3DXIMAGE_INFO* pSrcInfo); - -HRESULT WINAPI - D3DXLoadVolumeFromFileW( - LPDIRECT3DVOLUME9 pDestVolume, - CONST PALETTEENTRY* pDestPalette, - CONST D3DBOX* pDestBox, - LPCWSTR pSrcFile, - CONST D3DBOX* pSrcBox, - DWORD Filter, - D3DCOLOR ColorKey, - D3DXIMAGE_INFO* pSrcInfo); - -#ifdef UNICODE -#define D3DXLoadVolumeFromFile D3DXLoadVolumeFromFileW -#else -#define D3DXLoadVolumeFromFile D3DXLoadVolumeFromFileA -#endif - - -HRESULT WINAPI - D3DXLoadVolumeFromResourceA( - LPDIRECT3DVOLUME9 pDestVolume, - CONST PALETTEENTRY* pDestPalette, - CONST D3DBOX* pDestBox, - HMODULE hSrcModule, - LPCSTR pSrcResource, - CONST D3DBOX* pSrcBox, - DWORD Filter, - D3DCOLOR ColorKey, - D3DXIMAGE_INFO* pSrcInfo); - -HRESULT WINAPI - D3DXLoadVolumeFromResourceW( - LPDIRECT3DVOLUME9 pDestVolume, - CONST PALETTEENTRY* pDestPalette, - CONST D3DBOX* pDestBox, - HMODULE hSrcModule, - LPCWSTR pSrcResource, - CONST D3DBOX* pSrcBox, - DWORD Filter, - D3DCOLOR ColorKey, - D3DXIMAGE_INFO* pSrcInfo); - -#ifdef UNICODE -#define D3DXLoadVolumeFromResource D3DXLoadVolumeFromResourceW -#else -#define D3DXLoadVolumeFromResource D3DXLoadVolumeFromResourceA -#endif - - - -HRESULT WINAPI - D3DXLoadVolumeFromFileInMemory( - LPDIRECT3DVOLUME9 pDestVolume, - CONST PALETTEENTRY* pDestPalette, - CONST D3DBOX* pDestBox, - LPCVOID pSrcData, - UINT SrcDataSize, - CONST D3DBOX* pSrcBox, - DWORD Filter, - D3DCOLOR ColorKey, - D3DXIMAGE_INFO* pSrcInfo); - - - -//---------------------------------------------------------------------------- -// D3DXLoadVolumeFromVolume: -// ------------------------- -// Load volume from another volume (with color conversion) -// -// Parameters: -// pDestVolume -// Destination volume, which will receive the image. -// pDestPalette -// Destination palette of 256 colors, or NULL -// pDestBox -// Destination box, or NULL for entire volume -// pSrcVolume -// Source volume -// pSrcPalette -// Source palette of 256 colors, or NULL -// pSrcBox -// Source box, or NULL for entire volume -// Filter -// D3DX_FILTER flags controlling how the image is filtered. -// Or D3DX_DEFAULT for D3DX_FILTER_TRIANGLE. -// ColorKey -// Color to replace with transparent black, or 0 to disable colorkey. -// This is always a 32-bit ARGB color, independent of the source image -// format. Alpha is significant, and should usually be set to FF for -// opaque colorkeys. (ex. Opaque black == 0xff000000) -// -//---------------------------------------------------------------------------- - -HRESULT WINAPI - D3DXLoadVolumeFromVolume( - LPDIRECT3DVOLUME9 pDestVolume, - CONST PALETTEENTRY* pDestPalette, - CONST D3DBOX* pDestBox, - LPDIRECT3DVOLUME9 pSrcVolume, - CONST PALETTEENTRY* pSrcPalette, - CONST D3DBOX* pSrcBox, - DWORD Filter, - D3DCOLOR ColorKey); - - - -//---------------------------------------------------------------------------- -// D3DXLoadVolumeFromMemory: -// ------------------------- -// Load volume from memory. -// -// Parameters: -// pDestVolume -// Destination volume, which will receive the image. -// pDestPalette -// Destination palette of 256 colors, or NULL -// pDestBox -// Destination box, or NULL for entire volume -// pSrcMemory -// Pointer to the top-left corner of the source volume in memory -// SrcFormat -// Pixel format of the source volume. -// SrcRowPitch -// Pitch of source image, in bytes. For DXT formats, this number -// should represent the size of one row of cells, in bytes. -// SrcSlicePitch -// Pitch of source image, in bytes. For DXT formats, this number -// should represent the size of one slice of cells, in bytes. -// pSrcPalette -// Source palette of 256 colors, or NULL -// pSrcBox -// Source box. -// Filter -// D3DX_FILTER flags controlling how the image is filtered. -// Or D3DX_DEFAULT for D3DX_FILTER_TRIANGLE. -// ColorKey -// Color to replace with transparent black, or 0 to disable colorkey. -// This is always a 32-bit ARGB color, independent of the source image -// format. Alpha is significant, and should usually be set to FF for -// opaque colorkeys. (ex. Opaque black == 0xff000000) -// -//---------------------------------------------------------------------------- - -HRESULT WINAPI - D3DXLoadVolumeFromMemory( - LPDIRECT3DVOLUME9 pDestVolume, - CONST PALETTEENTRY* pDestPalette, - CONST D3DBOX* pDestBox, - LPCVOID pSrcMemory, - D3DFORMAT SrcFormat, - UINT SrcRowPitch, - UINT SrcSlicePitch, - CONST PALETTEENTRY* pSrcPalette, - CONST D3DBOX* pSrcBox, - DWORD Filter, - D3DCOLOR ColorKey); - - - -//---------------------------------------------------------------------------- -// D3DXSaveVolumeToFile: -// --------------------- -// Save a volume to a image file. -// -// Parameters: -// pDestFile -// File name of the destination file -// DestFormat -// D3DXIMAGE_FILEFORMAT specifying file format to use when saving. -// pSrcVolume -// Source volume, containing the image to be saved -// pSrcPalette -// Source palette of 256 colors, or NULL -// pSrcBox -// Source box, or NULL for the entire volume -// -//---------------------------------------------------------------------------- - -HRESULT WINAPI - D3DXSaveVolumeToFileA( - LPCSTR pDestFile, - D3DXIMAGE_FILEFORMAT DestFormat, - LPDIRECT3DVOLUME9 pSrcVolume, - CONST PALETTEENTRY* pSrcPalette, - CONST D3DBOX* pSrcBox); - -HRESULT WINAPI - D3DXSaveVolumeToFileW( - LPCWSTR pDestFile, - D3DXIMAGE_FILEFORMAT DestFormat, - LPDIRECT3DVOLUME9 pSrcVolume, - CONST PALETTEENTRY* pSrcPalette, - CONST D3DBOX* pSrcBox); - -#ifdef UNICODE -#define D3DXSaveVolumeToFile D3DXSaveVolumeToFileW -#else -#define D3DXSaveVolumeToFile D3DXSaveVolumeToFileA -#endif - - -//---------------------------------------------------------------------------- -// D3DXSaveVolumeToFileInMemory: -// --------------------- -// Save a volume to a image file. -// -// Parameters: -// pDestFile -// File name of the destination file -// DestFormat -// D3DXIMAGE_FILEFORMAT specifying file format to use when saving. -// pSrcVolume -// Source volume, containing the image to be saved -// pSrcPalette -// Source palette of 256 colors, or NULL -// pSrcBox -// Source box, or NULL for the entire volume -// -//---------------------------------------------------------------------------- - -HRESULT WINAPI - D3DXSaveVolumeToFileInMemory( - LPD3DXBUFFER* ppDestBuf, - D3DXIMAGE_FILEFORMAT DestFormat, - LPDIRECT3DVOLUME9 pSrcVolume, - CONST PALETTEENTRY* pSrcPalette, - CONST D3DBOX* pSrcBox); - -////////////////////////////////////////////////////////////////////////////// -// Create/Save Texture APIs ////////////////////////////////////////////////// -////////////////////////////////////////////////////////////////////////////// - -//---------------------------------------------------------------------------- -// D3DXCheckTextureRequirements: -// ----------------------------- -// Checks texture creation parameters. If parameters are invalid, this -// function returns corrected parameters. -// -// Parameters: -// -// pDevice -// The D3D device to be used -// pWidth, pHeight, pDepth, pSize -// Desired size in pixels, or NULL. Returns corrected size. -// pNumMipLevels -// Number of desired mipmap levels, or NULL. Returns corrected number. -// Usage -// Texture usage flags -// pFormat -// Desired pixel format, or NULL. Returns corrected format. -// Pool -// Memory pool to be used to create texture -// -//---------------------------------------------------------------------------- - -HRESULT WINAPI - D3DXCheckTextureRequirements( - LPDIRECT3DDEVICE9 pDevice, - UINT* pWidth, - UINT* pHeight, - UINT* pNumMipLevels, - DWORD Usage, - D3DFORMAT* pFormat, - D3DPOOL Pool); - -HRESULT WINAPI - D3DXCheckCubeTextureRequirements( - LPDIRECT3DDEVICE9 pDevice, - UINT* pSize, - UINT* pNumMipLevels, - DWORD Usage, - D3DFORMAT* pFormat, - D3DPOOL Pool); - -HRESULT WINAPI - D3DXCheckVolumeTextureRequirements( - LPDIRECT3DDEVICE9 pDevice, - UINT* pWidth, - UINT* pHeight, - UINT* pDepth, - UINT* pNumMipLevels, - DWORD Usage, - D3DFORMAT* pFormat, - D3DPOOL Pool); - - -//---------------------------------------------------------------------------- -// D3DXCreateTexture: -// ------------------ -// Create an empty texture -// -// Parameters: -// -// pDevice -// The D3D device with which the texture is going to be used. -// Width, Height, Depth, Size -// size in pixels. these must be non-zero -// MipLevels -// number of mip levels desired. if zero or D3DX_DEFAULT, a complete -// mipmap chain will be created. -// Usage -// Texture usage flags -// Format -// Pixel format. -// Pool -// Memory pool to be used to create texture -// ppTexture, ppCubeTexture, ppVolumeTexture -// The texture object that will be created -// -//---------------------------------------------------------------------------- - -HRESULT WINAPI - D3DXCreateTexture( - LPDIRECT3DDEVICE9 pDevice, - UINT Width, - UINT Height, - UINT MipLevels, - DWORD Usage, - D3DFORMAT Format, - D3DPOOL Pool, - LPDIRECT3DTEXTURE9* ppTexture); - -HRESULT WINAPI - D3DXCreateCubeTexture( - LPDIRECT3DDEVICE9 pDevice, - UINT Size, - UINT MipLevels, - DWORD Usage, - D3DFORMAT Format, - D3DPOOL Pool, - LPDIRECT3DCUBETEXTURE9* ppCubeTexture); - -HRESULT WINAPI - D3DXCreateVolumeTexture( - LPDIRECT3DDEVICE9 pDevice, - UINT Width, - UINT Height, - UINT Depth, - UINT MipLevels, - DWORD Usage, - D3DFORMAT Format, - D3DPOOL Pool, - LPDIRECT3DVOLUMETEXTURE9* ppVolumeTexture); - - - -//---------------------------------------------------------------------------- -// D3DXCreateTextureFromFile/Resource: -// ----------------------------------- -// Create a texture object from a file or resource. -// -// Parameters: -// -// pDevice -// The D3D device with which the texture is going to be used. -// pSrcFile -// File name. -// hSrcModule -// Module handle. if NULL, current module will be used. -// pSrcResource -// Resource name in module -// pvSrcData -// Pointer to file in memory. -// SrcDataSize -// Size in bytes of file in memory. -// Width, Height, Depth, Size -// Size in pixels. If zero or D3DX_DEFAULT, the size will be taken from -// the file and rounded up to a power of two. If D3DX_DEFAULT_NONPOW2, -// and the device supports NONPOW2 textures, the size will not be rounded. -// If D3DX_FROM_FILE, the size will be taken exactly as it is in the file, -// and the call will fail if this violates device capabilities. -// MipLevels -// Number of mip levels. If zero or D3DX_DEFAULT, a complete mipmap -// chain will be created. If D3DX_FROM_FILE, the size will be taken -// exactly as it is in the file, and the call will fail if this violates -// device capabilities. -// Usage -// Texture usage flags -// Format -// Desired pixel format. If D3DFMT_UNKNOWN, the format will be -// taken from the file. If D3DFMT_FROM_FILE, the format will be taken -// exactly as it is in the file, and the call will fail if the device does -// not support the given format. -// Pool -// Memory pool to be used to create texture -// Filter -// D3DX_FILTER flags controlling how the image is filtered. -// Or D3DX_DEFAULT for D3DX_FILTER_TRIANGLE. -// MipFilter -// D3DX_FILTER flags controlling how each miplevel is filtered. -// Or D3DX_DEFAULT for D3DX_FILTER_BOX, -// ColorKey -// Color to replace with transparent black, or 0 to disable colorkey. -// This is always a 32-bit ARGB color, independent of the source image -// format. Alpha is significant, and should usually be set to FF for -// opaque colorkeys. (ex. Opaque black == 0xff000000) -// pSrcInfo -// Pointer to a D3DXIMAGE_INFO structure to be filled in with the -// description of the data in the source image file, or NULL. -// pPalette -// 256 color palette to be filled in, or NULL -// ppTexture, ppCubeTexture, ppVolumeTexture -// The texture object that will be created -// -//---------------------------------------------------------------------------- - - -// FromFile - -HRESULT WINAPI - D3DXCreateTextureFromFileA( - LPDIRECT3DDEVICE9 pDevice, - LPCSTR pSrcFile, - LPDIRECT3DTEXTURE9* ppTexture); - -HRESULT WINAPI - D3DXCreateTextureFromFileW( - LPDIRECT3DDEVICE9 pDevice, - LPCWSTR pSrcFile, - LPDIRECT3DTEXTURE9* ppTexture); - -#ifdef UNICODE -#define D3DXCreateTextureFromFile D3DXCreateTextureFromFileW -#else -#define D3DXCreateTextureFromFile D3DXCreateTextureFromFileA -#endif - - -HRESULT WINAPI - D3DXCreateCubeTextureFromFileA( - LPDIRECT3DDEVICE9 pDevice, - LPCSTR pSrcFile, - LPDIRECT3DCUBETEXTURE9* ppCubeTexture); - -HRESULT WINAPI - D3DXCreateCubeTextureFromFileW( - LPDIRECT3DDEVICE9 pDevice, - LPCWSTR pSrcFile, - LPDIRECT3DCUBETEXTURE9* ppCubeTexture); - -#ifdef UNICODE -#define D3DXCreateCubeTextureFromFile D3DXCreateCubeTextureFromFileW -#else -#define D3DXCreateCubeTextureFromFile D3DXCreateCubeTextureFromFileA -#endif - - -HRESULT WINAPI - D3DXCreateVolumeTextureFromFileA( - LPDIRECT3DDEVICE9 pDevice, - LPCSTR pSrcFile, - LPDIRECT3DVOLUMETEXTURE9* ppVolumeTexture); - -HRESULT WINAPI - D3DXCreateVolumeTextureFromFileW( - LPDIRECT3DDEVICE9 pDevice, - LPCWSTR pSrcFile, - LPDIRECT3DVOLUMETEXTURE9* ppVolumeTexture); - -#ifdef UNICODE -#define D3DXCreateVolumeTextureFromFile D3DXCreateVolumeTextureFromFileW -#else -#define D3DXCreateVolumeTextureFromFile D3DXCreateVolumeTextureFromFileA -#endif - - -// FromResource - -HRESULT WINAPI - D3DXCreateTextureFromResourceA( - LPDIRECT3DDEVICE9 pDevice, - HMODULE hSrcModule, - LPCSTR pSrcResource, - LPDIRECT3DTEXTURE9* ppTexture); - -HRESULT WINAPI - D3DXCreateTextureFromResourceW( - LPDIRECT3DDEVICE9 pDevice, - HMODULE hSrcModule, - LPCWSTR pSrcResource, - LPDIRECT3DTEXTURE9* ppTexture); - -#ifdef UNICODE -#define D3DXCreateTextureFromResource D3DXCreateTextureFromResourceW -#else -#define D3DXCreateTextureFromResource D3DXCreateTextureFromResourceA -#endif - - -HRESULT WINAPI - D3DXCreateCubeTextureFromResourceA( - LPDIRECT3DDEVICE9 pDevice, - HMODULE hSrcModule, - LPCSTR pSrcResource, - LPDIRECT3DCUBETEXTURE9* ppCubeTexture); - -HRESULT WINAPI - D3DXCreateCubeTextureFromResourceW( - LPDIRECT3DDEVICE9 pDevice, - HMODULE hSrcModule, - LPCWSTR pSrcResource, - LPDIRECT3DCUBETEXTURE9* ppCubeTexture); - -#ifdef UNICODE -#define D3DXCreateCubeTextureFromResource D3DXCreateCubeTextureFromResourceW -#else -#define D3DXCreateCubeTextureFromResource D3DXCreateCubeTextureFromResourceA -#endif - - -HRESULT WINAPI - D3DXCreateVolumeTextureFromResourceA( - LPDIRECT3DDEVICE9 pDevice, - HMODULE hSrcModule, - LPCSTR pSrcResource, - LPDIRECT3DVOLUMETEXTURE9* ppVolumeTexture); - -HRESULT WINAPI - D3DXCreateVolumeTextureFromResourceW( - LPDIRECT3DDEVICE9 pDevice, - HMODULE hSrcModule, - LPCWSTR pSrcResource, - LPDIRECT3DVOLUMETEXTURE9* ppVolumeTexture); - -#ifdef UNICODE -#define D3DXCreateVolumeTextureFromResource D3DXCreateVolumeTextureFromResourceW -#else -#define D3DXCreateVolumeTextureFromResource D3DXCreateVolumeTextureFromResourceA -#endif - - -// FromFileEx - -HRESULT WINAPI - D3DXCreateTextureFromFileExA( - LPDIRECT3DDEVICE9 pDevice, - LPCSTR pSrcFile, - UINT Width, - UINT Height, - UINT MipLevels, - DWORD Usage, - D3DFORMAT Format, - D3DPOOL Pool, - DWORD Filter, - DWORD MipFilter, - D3DCOLOR ColorKey, - D3DXIMAGE_INFO* pSrcInfo, - PALETTEENTRY* pPalette, - LPDIRECT3DTEXTURE9* ppTexture); - -HRESULT WINAPI - D3DXCreateTextureFromFileExW( - LPDIRECT3DDEVICE9 pDevice, - LPCWSTR pSrcFile, - UINT Width, - UINT Height, - UINT MipLevels, - DWORD Usage, - D3DFORMAT Format, - D3DPOOL Pool, - DWORD Filter, - DWORD MipFilter, - D3DCOLOR ColorKey, - D3DXIMAGE_INFO* pSrcInfo, - PALETTEENTRY* pPalette, - LPDIRECT3DTEXTURE9* ppTexture); - -#ifdef UNICODE -#define D3DXCreateTextureFromFileEx D3DXCreateTextureFromFileExW -#else -#define D3DXCreateTextureFromFileEx D3DXCreateTextureFromFileExA -#endif - - -HRESULT WINAPI - D3DXCreateCubeTextureFromFileExA( - LPDIRECT3DDEVICE9 pDevice, - LPCSTR pSrcFile, - UINT Size, - UINT MipLevels, - DWORD Usage, - D3DFORMAT Format, - D3DPOOL Pool, - DWORD Filter, - DWORD MipFilter, - D3DCOLOR ColorKey, - D3DXIMAGE_INFO* pSrcInfo, - PALETTEENTRY* pPalette, - LPDIRECT3DCUBETEXTURE9* ppCubeTexture); - -HRESULT WINAPI - D3DXCreateCubeTextureFromFileExW( - LPDIRECT3DDEVICE9 pDevice, - LPCWSTR pSrcFile, - UINT Size, - UINT MipLevels, - DWORD Usage, - D3DFORMAT Format, - D3DPOOL Pool, - DWORD Filter, - DWORD MipFilter, - D3DCOLOR ColorKey, - D3DXIMAGE_INFO* pSrcInfo, - PALETTEENTRY* pPalette, - LPDIRECT3DCUBETEXTURE9* ppCubeTexture); - -#ifdef UNICODE -#define D3DXCreateCubeTextureFromFileEx D3DXCreateCubeTextureFromFileExW -#else -#define D3DXCreateCubeTextureFromFileEx D3DXCreateCubeTextureFromFileExA -#endif - - -HRESULT WINAPI - D3DXCreateVolumeTextureFromFileExA( - LPDIRECT3DDEVICE9 pDevice, - LPCSTR pSrcFile, - UINT Width, - UINT Height, - UINT Depth, - UINT MipLevels, - DWORD Usage, - D3DFORMAT Format, - D3DPOOL Pool, - DWORD Filter, - DWORD MipFilter, - D3DCOLOR ColorKey, - D3DXIMAGE_INFO* pSrcInfo, - PALETTEENTRY* pPalette, - LPDIRECT3DVOLUMETEXTURE9* ppVolumeTexture); - -HRESULT WINAPI - D3DXCreateVolumeTextureFromFileExW( - LPDIRECT3DDEVICE9 pDevice, - LPCWSTR pSrcFile, - UINT Width, - UINT Height, - UINT Depth, - UINT MipLevels, - DWORD Usage, - D3DFORMAT Format, - D3DPOOL Pool, - DWORD Filter, - DWORD MipFilter, - D3DCOLOR ColorKey, - D3DXIMAGE_INFO* pSrcInfo, - PALETTEENTRY* pPalette, - LPDIRECT3DVOLUMETEXTURE9* ppVolumeTexture); - -#ifdef UNICODE -#define D3DXCreateVolumeTextureFromFileEx D3DXCreateVolumeTextureFromFileExW -#else -#define D3DXCreateVolumeTextureFromFileEx D3DXCreateVolumeTextureFromFileExA -#endif - - -// FromResourceEx - -HRESULT WINAPI - D3DXCreateTextureFromResourceExA( - LPDIRECT3DDEVICE9 pDevice, - HMODULE hSrcModule, - LPCSTR pSrcResource, - UINT Width, - UINT Height, - UINT MipLevels, - DWORD Usage, - D3DFORMAT Format, - D3DPOOL Pool, - DWORD Filter, - DWORD MipFilter, - D3DCOLOR ColorKey, - D3DXIMAGE_INFO* pSrcInfo, - PALETTEENTRY* pPalette, - LPDIRECT3DTEXTURE9* ppTexture); - -HRESULT WINAPI - D3DXCreateTextureFromResourceExW( - LPDIRECT3DDEVICE9 pDevice, - HMODULE hSrcModule, - LPCWSTR pSrcResource, - UINT Width, - UINT Height, - UINT MipLevels, - DWORD Usage, - D3DFORMAT Format, - D3DPOOL Pool, - DWORD Filter, - DWORD MipFilter, - D3DCOLOR ColorKey, - D3DXIMAGE_INFO* pSrcInfo, - PALETTEENTRY* pPalette, - LPDIRECT3DTEXTURE9* ppTexture); - -#ifdef UNICODE -#define D3DXCreateTextureFromResourceEx D3DXCreateTextureFromResourceExW -#else -#define D3DXCreateTextureFromResourceEx D3DXCreateTextureFromResourceExA -#endif - - -HRESULT WINAPI - D3DXCreateCubeTextureFromResourceExA( - LPDIRECT3DDEVICE9 pDevice, - HMODULE hSrcModule, - LPCSTR pSrcResource, - UINT Size, - UINT MipLevels, - DWORD Usage, - D3DFORMAT Format, - D3DPOOL Pool, - DWORD Filter, - DWORD MipFilter, - D3DCOLOR ColorKey, - D3DXIMAGE_INFO* pSrcInfo, - PALETTEENTRY* pPalette, - LPDIRECT3DCUBETEXTURE9* ppCubeTexture); - -HRESULT WINAPI - D3DXCreateCubeTextureFromResourceExW( - LPDIRECT3DDEVICE9 pDevice, - HMODULE hSrcModule, - LPCWSTR pSrcResource, - UINT Size, - UINT MipLevels, - DWORD Usage, - D3DFORMAT Format, - D3DPOOL Pool, - DWORD Filter, - DWORD MipFilter, - D3DCOLOR ColorKey, - D3DXIMAGE_INFO* pSrcInfo, - PALETTEENTRY* pPalette, - LPDIRECT3DCUBETEXTURE9* ppCubeTexture); - -#ifdef UNICODE -#define D3DXCreateCubeTextureFromResourceEx D3DXCreateCubeTextureFromResourceExW -#else -#define D3DXCreateCubeTextureFromResourceEx D3DXCreateCubeTextureFromResourceExA -#endif - - -HRESULT WINAPI - D3DXCreateVolumeTextureFromResourceExA( - LPDIRECT3DDEVICE9 pDevice, - HMODULE hSrcModule, - LPCSTR pSrcResource, - UINT Width, - UINT Height, - UINT Depth, - UINT MipLevels, - DWORD Usage, - D3DFORMAT Format, - D3DPOOL Pool, - DWORD Filter, - DWORD MipFilter, - D3DCOLOR ColorKey, - D3DXIMAGE_INFO* pSrcInfo, - PALETTEENTRY* pPalette, - LPDIRECT3DVOLUMETEXTURE9* ppVolumeTexture); - -HRESULT WINAPI - D3DXCreateVolumeTextureFromResourceExW( - LPDIRECT3DDEVICE9 pDevice, - HMODULE hSrcModule, - LPCWSTR pSrcResource, - UINT Width, - UINT Height, - UINT Depth, - UINT MipLevels, - DWORD Usage, - D3DFORMAT Format, - D3DPOOL Pool, - DWORD Filter, - DWORD MipFilter, - D3DCOLOR ColorKey, - D3DXIMAGE_INFO* pSrcInfo, - PALETTEENTRY* pPalette, - LPDIRECT3DVOLUMETEXTURE9* ppVolumeTexture); - -#ifdef UNICODE -#define D3DXCreateVolumeTextureFromResourceEx D3DXCreateVolumeTextureFromResourceExW -#else -#define D3DXCreateVolumeTextureFromResourceEx D3DXCreateVolumeTextureFromResourceExA -#endif - - -// FromFileInMemory - -HRESULT WINAPI - D3DXCreateTextureFromFileInMemory( - LPDIRECT3DDEVICE9 pDevice, - LPCVOID pSrcData, - UINT SrcDataSize, - LPDIRECT3DTEXTURE9* ppTexture); - -HRESULT WINAPI - D3DXCreateCubeTextureFromFileInMemory( - LPDIRECT3DDEVICE9 pDevice, - LPCVOID pSrcData, - UINT SrcDataSize, - LPDIRECT3DCUBETEXTURE9* ppCubeTexture); - -HRESULT WINAPI - D3DXCreateVolumeTextureFromFileInMemory( - LPDIRECT3DDEVICE9 pDevice, - LPCVOID pSrcData, - UINT SrcDataSize, - LPDIRECT3DVOLUMETEXTURE9* ppVolumeTexture); - - -// FromFileInMemoryEx - -HRESULT WINAPI - D3DXCreateTextureFromFileInMemoryEx( - LPDIRECT3DDEVICE9 pDevice, - LPCVOID pSrcData, - UINT SrcDataSize, - UINT Width, - UINT Height, - UINT MipLevels, - DWORD Usage, - D3DFORMAT Format, - D3DPOOL Pool, - DWORD Filter, - DWORD MipFilter, - D3DCOLOR ColorKey, - D3DXIMAGE_INFO* pSrcInfo, - PALETTEENTRY* pPalette, - LPDIRECT3DTEXTURE9* ppTexture); - -HRESULT WINAPI - D3DXCreateCubeTextureFromFileInMemoryEx( - LPDIRECT3DDEVICE9 pDevice, - LPCVOID pSrcData, - UINT SrcDataSize, - UINT Size, - UINT MipLevels, - DWORD Usage, - D3DFORMAT Format, - D3DPOOL Pool, - DWORD Filter, - DWORD MipFilter, - D3DCOLOR ColorKey, - D3DXIMAGE_INFO* pSrcInfo, - PALETTEENTRY* pPalette, - LPDIRECT3DCUBETEXTURE9* ppCubeTexture); - -HRESULT WINAPI - D3DXCreateVolumeTextureFromFileInMemoryEx( - LPDIRECT3DDEVICE9 pDevice, - LPCVOID pSrcData, - UINT SrcDataSize, - UINT Width, - UINT Height, - UINT Depth, - UINT MipLevels, - DWORD Usage, - D3DFORMAT Format, - D3DPOOL Pool, - DWORD Filter, - DWORD MipFilter, - D3DCOLOR ColorKey, - D3DXIMAGE_INFO* pSrcInfo, - PALETTEENTRY* pPalette, - LPDIRECT3DVOLUMETEXTURE9* ppVolumeTexture); - - - -//---------------------------------------------------------------------------- -// D3DXSaveTextureToFile: -// ---------------------- -// Save a texture to a file. -// -// Parameters: -// pDestFile -// File name of the destination file -// DestFormat -// D3DXIMAGE_FILEFORMAT specifying file format to use when saving. -// pSrcTexture -// Source texture, containing the image to be saved -// pSrcPalette -// Source palette of 256 colors, or NULL -// -//---------------------------------------------------------------------------- - - -HRESULT WINAPI - D3DXSaveTextureToFileA( - LPCSTR pDestFile, - D3DXIMAGE_FILEFORMAT DestFormat, - LPDIRECT3DBASETEXTURE9 pSrcTexture, - CONST PALETTEENTRY* pSrcPalette); - -HRESULT WINAPI - D3DXSaveTextureToFileW( - LPCWSTR pDestFile, - D3DXIMAGE_FILEFORMAT DestFormat, - LPDIRECT3DBASETEXTURE9 pSrcTexture, - CONST PALETTEENTRY* pSrcPalette); - -#ifdef UNICODE -#define D3DXSaveTextureToFile D3DXSaveTextureToFileW -#else -#define D3DXSaveTextureToFile D3DXSaveTextureToFileA -#endif - - -//---------------------------------------------------------------------------- -// D3DXSaveTextureToFileInMemory: -// ---------------------- -// Save a texture to a file. -// -// Parameters: -// ppDestBuf -// address of a d3dxbuffer pointer to return the image data -// DestFormat -// D3DXIMAGE_FILEFORMAT specifying file format to use when saving. -// pSrcTexture -// Source texture, containing the image to be saved -// pSrcPalette -// Source palette of 256 colors, or NULL -// -//---------------------------------------------------------------------------- - -HRESULT WINAPI - D3DXSaveTextureToFileInMemory( - LPD3DXBUFFER* ppDestBuf, - D3DXIMAGE_FILEFORMAT DestFormat, - LPDIRECT3DBASETEXTURE9 pSrcTexture, - CONST PALETTEENTRY* pSrcPalette); - - - - -////////////////////////////////////////////////////////////////////////////// -// Misc Texture APIs ///////////////////////////////////////////////////////// -////////////////////////////////////////////////////////////////////////////// - -//---------------------------------------------------------------------------- -// D3DXFilterTexture: -// ------------------ -// Filters mipmaps levels of a texture. -// -// Parameters: -// pBaseTexture -// The texture object to be filtered -// pPalette -// 256 color palette to be used, or NULL for non-palettized formats -// SrcLevel -// The level whose image is used to generate the subsequent levels. -// Filter -// D3DX_FILTER flags controlling how each miplevel is filtered. -// Or D3DX_DEFAULT for D3DX_FILTER_BOX, -// -//---------------------------------------------------------------------------- - -HRESULT WINAPI - D3DXFilterTexture( - LPDIRECT3DBASETEXTURE9 pBaseTexture, - CONST PALETTEENTRY* pPalette, - UINT SrcLevel, - DWORD Filter); - -#define D3DXFilterCubeTexture D3DXFilterTexture -#define D3DXFilterVolumeTexture D3DXFilterTexture - - - -//---------------------------------------------------------------------------- -// D3DXFillTexture: -// ---------------- -// Uses a user provided function to fill each texel of each mip level of a -// given texture. -// -// Paramters: -// pTexture, pCubeTexture, pVolumeTexture -// Pointer to the texture to be filled. -// pFunction -// Pointer to user provided evalutor function which will be used to -// compute the value of each texel. -// pData -// Pointer to an arbitrary block of user defined data. This pointer -// will be passed to the function provided in pFunction -//----------------------------------------------------------------------------- - -HRESULT WINAPI - D3DXFillTexture( - LPDIRECT3DTEXTURE9 pTexture, - LPD3DXFILL2D pFunction, - LPVOID pData); - -HRESULT WINAPI - D3DXFillCubeTexture( - LPDIRECT3DCUBETEXTURE9 pCubeTexture, - LPD3DXFILL3D pFunction, - LPVOID pData); - -HRESULT WINAPI - D3DXFillVolumeTexture( - LPDIRECT3DVOLUMETEXTURE9 pVolumeTexture, - LPD3DXFILL3D pFunction, - LPVOID pData); - -//--------------------------------------------------------------------------- -// D3DXFillTextureTX: -// ------------------ -// Uses a TX Shader target to function to fill each texel of each mip level -// of a given texture. The TX Shader target should be a compiled function -// taking 2 paramters and returning a float4 color. -// -// Paramters: -// pTexture, pCubeTexture, pVolumeTexture -// Pointer to the texture to be filled. -// pTextureShader -// Pointer to the texture shader to be used to fill in the texture -//---------------------------------------------------------------------------- - -HRESULT WINAPI - D3DXFillTextureTX( - LPDIRECT3DTEXTURE9 pTexture, - LPD3DXTEXTURESHADER pTextureShader); - - -HRESULT WINAPI - D3DXFillCubeTextureTX( - LPDIRECT3DCUBETEXTURE9 pCubeTexture, - LPD3DXTEXTURESHADER pTextureShader); - - -HRESULT WINAPI - D3DXFillVolumeTextureTX( - LPDIRECT3DVOLUMETEXTURE9 pVolumeTexture, - LPD3DXTEXTURESHADER pTextureShader); - - - -//---------------------------------------------------------------------------- -// D3DXComputeNormalMap: -// --------------------- -// Converts a height map into a normal map. The (x,y,z) components of each -// normal are mapped to the (r,g,b) channels of the output texture. -// -// Parameters -// pTexture -// Pointer to the destination texture -// pSrcTexture -// Pointer to the source heightmap texture -// pSrcPalette -// Source palette of 256 colors, or NULL -// Flags -// D3DX_NORMALMAP flags -// Channel -// D3DX_CHANNEL specifying source of height information -// Amplitude -// The constant value which the height information is multiplied by. -//--------------------------------------------------------------------------- - -HRESULT WINAPI - D3DXComputeNormalMap( - LPDIRECT3DTEXTURE9 pTexture, - LPDIRECT3DTEXTURE9 pSrcTexture, - CONST PALETTEENTRY* pSrcPalette, - DWORD Flags, - DWORD Channel, - FLOAT Amplitude); - - - - -#ifdef __cplusplus -} -#endif //__cplusplus - -#endif //__D3DX9TEX_H__ - +////////////////////////////////////////////////////////////////////////////// +// +// Copyright (C) Microsoft Corporation. All Rights Reserved. +// +// File: d3dx9tex.h +// Content: D3DX texturing APIs +// +////////////////////////////////////////////////////////////////////////////// + +#include "d3dx9.h" + +#ifndef __D3DX9TEX_H__ +#define __D3DX9TEX_H__ + + +//---------------------------------------------------------------------------- +// D3DX_FILTER flags: +// ------------------ +// +// A valid filter must contain one of these values: +// +// D3DX_FILTER_NONE +// No scaling or filtering will take place. Pixels outside the bounds +// of the source image are assumed to be transparent black. +// D3DX_FILTER_POINT +// Each destination pixel is computed by sampling the nearest pixel +// from the source image. +// D3DX_FILTER_LINEAR +// Each destination pixel is computed by linearly interpolating between +// the nearest pixels in the source image. This filter works best +// when the scale on each axis is less than 2. +// D3DX_FILTER_TRIANGLE +// Every pixel in the source image contributes equally to the +// destination image. This is the slowest of all the filters. +// D3DX_FILTER_BOX +// Each pixel is computed by averaging a 2x2(x2) box pixels from +// the source image. Only works when the dimensions of the +// destination are half those of the source. (as with mip maps) +// +// And can be OR'd with any of these optional flags: +// +// D3DX_FILTER_MIRROR_U +// Indicates that pixels off the edge of the texture on the U-axis +// should be mirrored, not wraped. +// D3DX_FILTER_MIRROR_V +// Indicates that pixels off the edge of the texture on the V-axis +// should be mirrored, not wraped. +// D3DX_FILTER_MIRROR_W +// Indicates that pixels off the edge of the texture on the W-axis +// should be mirrored, not wraped. +// D3DX_FILTER_MIRROR +// Same as specifying D3DX_FILTER_MIRROR_U | D3DX_FILTER_MIRROR_V | +// D3DX_FILTER_MIRROR_V +// D3DX_FILTER_DITHER +// Dithers the resulting image using a 4x4 order dither pattern. +// D3DX_FILTER_SRGB_IN +// Denotes that the input data is in sRGB (gamma 2.2) colorspace. +// D3DX_FILTER_SRGB_OUT +// Denotes that the output data is in sRGB (gamma 2.2) colorspace. +// D3DX_FILTER_SRGB +// Same as specifying D3DX_FILTER_SRGB_IN | D3DX_FILTER_SRGB_OUT +// +//---------------------------------------------------------------------------- + +#define D3DX_FILTER_NONE (1 << 0) +#define D3DX_FILTER_POINT (2 << 0) +#define D3DX_FILTER_LINEAR (3 << 0) +#define D3DX_FILTER_TRIANGLE (4 << 0) +#define D3DX_FILTER_BOX (5 << 0) + +#define D3DX_FILTER_MIRROR_U (1 << 16) +#define D3DX_FILTER_MIRROR_V (2 << 16) +#define D3DX_FILTER_MIRROR_W (4 << 16) +#define D3DX_FILTER_MIRROR (7 << 16) + +#define D3DX_FILTER_DITHER (1 << 19) +#define D3DX_FILTER_DITHER_DIFFUSION (2 << 19) + +#define D3DX_FILTER_SRGB_IN (1 << 21) +#define D3DX_FILTER_SRGB_OUT (2 << 21) +#define D3DX_FILTER_SRGB (3 << 21) + + +//---------------------------------------------------------------------------- +// D3DX_NORMALMAP flags: +// --------------------- +// These flags are used to control how D3DXComputeNormalMap generates normal +// maps. Any number of these flags may be OR'd together in any combination. +// +// D3DX_NORMALMAP_MIRROR_U +// Indicates that pixels off the edge of the texture on the U-axis +// should be mirrored, not wraped. +// D3DX_NORMALMAP_MIRROR_V +// Indicates that pixels off the edge of the texture on the V-axis +// should be mirrored, not wraped. +// D3DX_NORMALMAP_MIRROR +// Same as specifying D3DX_NORMALMAP_MIRROR_U | D3DX_NORMALMAP_MIRROR_V +// D3DX_NORMALMAP_INVERTSIGN +// Inverts the direction of each normal +// D3DX_NORMALMAP_COMPUTE_OCCLUSION +// Compute the per pixel Occlusion term and encodes it into the alpha. +// An Alpha of 1 means that the pixel is not obscured in anyway, and +// an alpha of 0 would mean that the pixel is completly obscured. +// +//---------------------------------------------------------------------------- + +//---------------------------------------------------------------------------- + +#define D3DX_NORMALMAP_MIRROR_U (1 << 16) +#define D3DX_NORMALMAP_MIRROR_V (2 << 16) +#define D3DX_NORMALMAP_MIRROR (3 << 16) +#define D3DX_NORMALMAP_INVERTSIGN (8 << 16) +#define D3DX_NORMALMAP_COMPUTE_OCCLUSION (16 << 16) + + + + +//---------------------------------------------------------------------------- +// D3DX_CHANNEL flags: +// ------------------- +// These flags are used by functions which operate on or more channels +// in a texture. +// +// D3DX_CHANNEL_RED +// Indicates the red channel should be used +// D3DX_CHANNEL_BLUE +// Indicates the blue channel should be used +// D3DX_CHANNEL_GREEN +// Indicates the green channel should be used +// D3DX_CHANNEL_ALPHA +// Indicates the alpha channel should be used +// D3DX_CHANNEL_LUMINANCE +// Indicates the luminaces of the red green and blue channels should be +// used. +// +//---------------------------------------------------------------------------- + +#define D3DX_CHANNEL_RED (1 << 0) +#define D3DX_CHANNEL_BLUE (1 << 1) +#define D3DX_CHANNEL_GREEN (1 << 2) +#define D3DX_CHANNEL_ALPHA (1 << 3) +#define D3DX_CHANNEL_LUMINANCE (1 << 4) + + + + +//---------------------------------------------------------------------------- +// D3DXIMAGE_FILEFORMAT: +// --------------------- +// This enum is used to describe supported image file formats. +// +//---------------------------------------------------------------------------- + +typedef enum _D3DXIMAGE_FILEFORMAT +{ + D3DXIFF_BMP = 0, + D3DXIFF_JPG = 1, + D3DXIFF_TGA = 2, + D3DXIFF_PNG = 3, + D3DXIFF_DDS = 4, + D3DXIFF_PPM = 5, + D3DXIFF_DIB = 6, + D3DXIFF_HDR = 7, //high dynamic range formats + D3DXIFF_PFM = 8, // + D3DXIFF_FORCE_DWORD = 0x7fffffff + +} D3DXIMAGE_FILEFORMAT; + + +//---------------------------------------------------------------------------- +// LPD3DXFILL2D and LPD3DXFILL3D: +// ------------------------------ +// Function types used by the texture fill functions. +// +// Parameters: +// pOut +// Pointer to a vector which the function uses to return its result. +// X,Y,Z,W will be mapped to R,G,B,A respectivly. +// pTexCoord +// Pointer to a vector containing the coordinates of the texel currently +// being evaluated. Textures and VolumeTexture texcoord components +// range from 0 to 1. CubeTexture texcoord component range from -1 to 1. +// pTexelSize +// Pointer to a vector containing the dimensions of the current texel. +// pData +// Pointer to user data. +// +//---------------------------------------------------------------------------- + +typedef VOID (WINAPI *LPD3DXFILL2D)(D3DXVECTOR4 *pOut, + CONST D3DXVECTOR2 *pTexCoord, CONST D3DXVECTOR2 *pTexelSize, LPVOID pData); + +typedef VOID (WINAPI *LPD3DXFILL3D)(D3DXVECTOR4 *pOut, + CONST D3DXVECTOR3 *pTexCoord, CONST D3DXVECTOR3 *pTexelSize, LPVOID pData); + + + +//---------------------------------------------------------------------------- +// D3DXIMAGE_INFO: +// --------------- +// This structure is used to return a rough description of what the +// the original contents of an image file looked like. +// +// Width +// Width of original image in pixels +// Height +// Height of original image in pixels +// Depth +// Depth of original image in pixels +// MipLevels +// Number of mip levels in original image +// Format +// D3D format which most closely describes the data in original image +// ResourceType +// D3DRESOURCETYPE representing the type of texture stored in the file. +// D3DRTYPE_TEXTURE, D3DRTYPE_VOLUMETEXTURE, or D3DRTYPE_CUBETEXTURE. +// ImageFileFormat +// D3DXIMAGE_FILEFORMAT representing the format of the image file. +// +//---------------------------------------------------------------------------- + +typedef struct _D3DXIMAGE_INFO +{ + UINT Width; + UINT Height; + UINT Depth; + UINT MipLevels; + D3DFORMAT Format; + D3DRESOURCETYPE ResourceType; + D3DXIMAGE_FILEFORMAT ImageFileFormat; + +} D3DXIMAGE_INFO; + + + + + +#ifdef __cplusplus +extern "C" { +#endif //__cplusplus + + + +////////////////////////////////////////////////////////////////////////////// +// Image File APIs /////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// +; +//---------------------------------------------------------------------------- +// GetImageInfoFromFile/Resource: +// ------------------------------ +// Fills in a D3DXIMAGE_INFO struct with information about an image file. +// +// Parameters: +// pSrcFile +// File name of the source image. +// pSrcModule +// Module where resource is located, or NULL for module associated +// with image the os used to create the current process. +// pSrcResource +// Resource name +// pSrcData +// Pointer to file in memory. +// SrcDataSize +// Size in bytes of file in memory. +// pSrcInfo +// Pointer to a D3DXIMAGE_INFO structure to be filled in with the +// description of the data in the source image file. +// +//---------------------------------------------------------------------------- + +HRESULT WINAPI + D3DXGetImageInfoFromFileA( + LPCSTR pSrcFile, + D3DXIMAGE_INFO* pSrcInfo); + +HRESULT WINAPI + D3DXGetImageInfoFromFileW( + LPCWSTR pSrcFile, + D3DXIMAGE_INFO* pSrcInfo); + +#ifdef UNICODE +#define D3DXGetImageInfoFromFile D3DXGetImageInfoFromFileW +#else +#define D3DXGetImageInfoFromFile D3DXGetImageInfoFromFileA +#endif + + +HRESULT WINAPI + D3DXGetImageInfoFromResourceA( + HMODULE hSrcModule, + LPCSTR pSrcResource, + D3DXIMAGE_INFO* pSrcInfo); + +HRESULT WINAPI + D3DXGetImageInfoFromResourceW( + HMODULE hSrcModule, + LPCWSTR pSrcResource, + D3DXIMAGE_INFO* pSrcInfo); + +#ifdef UNICODE +#define D3DXGetImageInfoFromResource D3DXGetImageInfoFromResourceW +#else +#define D3DXGetImageInfoFromResource D3DXGetImageInfoFromResourceA +#endif + + +HRESULT WINAPI + D3DXGetImageInfoFromFileInMemory( + LPCVOID pSrcData, + UINT SrcDataSize, + D3DXIMAGE_INFO* pSrcInfo); + + + + +////////////////////////////////////////////////////////////////////////////// +// Load/Save Surface APIs //////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// + +//---------------------------------------------------------------------------- +// D3DXLoadSurfaceFromFile/Resource: +// --------------------------------- +// Load surface from a file or resource +// +// Parameters: +// pDestSurface +// Destination surface, which will receive the image. +// pDestPalette +// Destination palette of 256 colors, or NULL +// pDestRect +// Destination rectangle, or NULL for entire surface +// pSrcFile +// File name of the source image. +// pSrcModule +// Module where resource is located, or NULL for module associated +// with image the os used to create the current process. +// pSrcResource +// Resource name +// pSrcData +// Pointer to file in memory. +// SrcDataSize +// Size in bytes of file in memory. +// pSrcRect +// Source rectangle, or NULL for entire image +// Filter +// D3DX_FILTER flags controlling how the image is filtered. +// Or D3DX_DEFAULT for D3DX_FILTER_TRIANGLE. +// ColorKey +// Color to replace with transparent black, or 0 to disable colorkey. +// This is always a 32-bit ARGB color, independent of the source image +// format. Alpha is significant, and should usually be set to FF for +// opaque colorkeys. (ex. Opaque black == 0xff000000) +// pSrcInfo +// Pointer to a D3DXIMAGE_INFO structure to be filled in with the +// description of the data in the source image file, or NULL. +// +//---------------------------------------------------------------------------- + +HRESULT WINAPI + D3DXLoadSurfaceFromFileA( + LPDIRECT3DSURFACE9 pDestSurface, + CONST PALETTEENTRY* pDestPalette, + CONST RECT* pDestRect, + LPCSTR pSrcFile, + CONST RECT* pSrcRect, + DWORD Filter, + D3DCOLOR ColorKey, + D3DXIMAGE_INFO* pSrcInfo); + +HRESULT WINAPI + D3DXLoadSurfaceFromFileW( + LPDIRECT3DSURFACE9 pDestSurface, + CONST PALETTEENTRY* pDestPalette, + CONST RECT* pDestRect, + LPCWSTR pSrcFile, + CONST RECT* pSrcRect, + DWORD Filter, + D3DCOLOR ColorKey, + D3DXIMAGE_INFO* pSrcInfo); + +#ifdef UNICODE +#define D3DXLoadSurfaceFromFile D3DXLoadSurfaceFromFileW +#else +#define D3DXLoadSurfaceFromFile D3DXLoadSurfaceFromFileA +#endif + + + +HRESULT WINAPI + D3DXLoadSurfaceFromResourceA( + LPDIRECT3DSURFACE9 pDestSurface, + CONST PALETTEENTRY* pDestPalette, + CONST RECT* pDestRect, + HMODULE hSrcModule, + LPCSTR pSrcResource, + CONST RECT* pSrcRect, + DWORD Filter, + D3DCOLOR ColorKey, + D3DXIMAGE_INFO* pSrcInfo); + +HRESULT WINAPI + D3DXLoadSurfaceFromResourceW( + LPDIRECT3DSURFACE9 pDestSurface, + CONST PALETTEENTRY* pDestPalette, + CONST RECT* pDestRect, + HMODULE hSrcModule, + LPCWSTR pSrcResource, + CONST RECT* pSrcRect, + DWORD Filter, + D3DCOLOR ColorKey, + D3DXIMAGE_INFO* pSrcInfo); + + +#ifdef UNICODE +#define D3DXLoadSurfaceFromResource D3DXLoadSurfaceFromResourceW +#else +#define D3DXLoadSurfaceFromResource D3DXLoadSurfaceFromResourceA +#endif + + + +HRESULT WINAPI + D3DXLoadSurfaceFromFileInMemory( + LPDIRECT3DSURFACE9 pDestSurface, + CONST PALETTEENTRY* pDestPalette, + CONST RECT* pDestRect, + LPCVOID pSrcData, + UINT SrcDataSize, + CONST RECT* pSrcRect, + DWORD Filter, + D3DCOLOR ColorKey, + D3DXIMAGE_INFO* pSrcInfo); + + + +//---------------------------------------------------------------------------- +// D3DXLoadSurfaceFromSurface: +// --------------------------- +// Load surface from another surface (with color conversion) +// +// Parameters: +// pDestSurface +// Destination surface, which will receive the image. +// pDestPalette +// Destination palette of 256 colors, or NULL +// pDestRect +// Destination rectangle, or NULL for entire surface +// pSrcSurface +// Source surface +// pSrcPalette +// Source palette of 256 colors, or NULL +// pSrcRect +// Source rectangle, or NULL for entire surface +// Filter +// D3DX_FILTER flags controlling how the image is filtered. +// Or D3DX_DEFAULT for D3DX_FILTER_TRIANGLE. +// ColorKey +// Color to replace with transparent black, or 0 to disable colorkey. +// This is always a 32-bit ARGB color, independent of the source image +// format. Alpha is significant, and should usually be set to FF for +// opaque colorkeys. (ex. Opaque black == 0xff000000) +// +//---------------------------------------------------------------------------- + +HRESULT WINAPI + D3DXLoadSurfaceFromSurface( + LPDIRECT3DSURFACE9 pDestSurface, + CONST PALETTEENTRY* pDestPalette, + CONST RECT* pDestRect, + LPDIRECT3DSURFACE9 pSrcSurface, + CONST PALETTEENTRY* pSrcPalette, + CONST RECT* pSrcRect, + DWORD Filter, + D3DCOLOR ColorKey); + + +//---------------------------------------------------------------------------- +// D3DXLoadSurfaceFromMemory: +// -------------------------- +// Load surface from memory. +// +// Parameters: +// pDestSurface +// Destination surface, which will receive the image. +// pDestPalette +// Destination palette of 256 colors, or NULL +// pDestRect +// Destination rectangle, or NULL for entire surface +// pSrcMemory +// Pointer to the top-left corner of the source image in memory +// SrcFormat +// Pixel format of the source image. +// SrcPitch +// Pitch of source image, in bytes. For DXT formats, this number +// should represent the width of one row of cells, in bytes. +// pSrcPalette +// Source palette of 256 colors, or NULL +// pSrcRect +// Source rectangle. +// Filter +// D3DX_FILTER flags controlling how the image is filtered. +// Or D3DX_DEFAULT for D3DX_FILTER_TRIANGLE. +// ColorKey +// Color to replace with transparent black, or 0 to disable colorkey. +// This is always a 32-bit ARGB color, independent of the source image +// format. Alpha is significant, and should usually be set to FF for +// opaque colorkeys. (ex. Opaque black == 0xff000000) +// +//---------------------------------------------------------------------------- + +HRESULT WINAPI + D3DXLoadSurfaceFromMemory( + LPDIRECT3DSURFACE9 pDestSurface, + CONST PALETTEENTRY* pDestPalette, + CONST RECT* pDestRect, + LPCVOID pSrcMemory, + D3DFORMAT SrcFormat, + UINT SrcPitch, + CONST PALETTEENTRY* pSrcPalette, + CONST RECT* pSrcRect, + DWORD Filter, + D3DCOLOR ColorKey); + + +//---------------------------------------------------------------------------- +// D3DXSaveSurfaceToFile: +// ---------------------- +// Save a surface to a image file. +// +// Parameters: +// pDestFile +// File name of the destination file +// DestFormat +// D3DXIMAGE_FILEFORMAT specifying file format to use when saving. +// pSrcSurface +// Source surface, containing the image to be saved +// pSrcPalette +// Source palette of 256 colors, or NULL +// pSrcRect +// Source rectangle, or NULL for the entire image +// +//---------------------------------------------------------------------------- + +HRESULT WINAPI + D3DXSaveSurfaceToFileA( + LPCSTR pDestFile, + D3DXIMAGE_FILEFORMAT DestFormat, + LPDIRECT3DSURFACE9 pSrcSurface, + CONST PALETTEENTRY* pSrcPalette, + CONST RECT* pSrcRect); + +HRESULT WINAPI + D3DXSaveSurfaceToFileW( + LPCWSTR pDestFile, + D3DXIMAGE_FILEFORMAT DestFormat, + LPDIRECT3DSURFACE9 pSrcSurface, + CONST PALETTEENTRY* pSrcPalette, + CONST RECT* pSrcRect); + +#ifdef UNICODE +#define D3DXSaveSurfaceToFile D3DXSaveSurfaceToFileW +#else +#define D3DXSaveSurfaceToFile D3DXSaveSurfaceToFileA +#endif + +//---------------------------------------------------------------------------- +// D3DXSaveSurfaceToFileInMemory: +// ---------------------- +// Save a surface to a image file. +// +// Parameters: +// ppDestBuf +// address of pointer to d3dxbuffer for returning data bits +// DestFormat +// D3DXIMAGE_FILEFORMAT specifying file format to use when saving. +// pSrcSurface +// Source surface, containing the image to be saved +// pSrcPalette +// Source palette of 256 colors, or NULL +// pSrcRect +// Source rectangle, or NULL for the entire image +// +//---------------------------------------------------------------------------- + +HRESULT WINAPI + D3DXSaveSurfaceToFileInMemory( + LPD3DXBUFFER* ppDestBuf, + D3DXIMAGE_FILEFORMAT DestFormat, + LPDIRECT3DSURFACE9 pSrcSurface, + CONST PALETTEENTRY* pSrcPalette, + CONST RECT* pSrcRect); + + +////////////////////////////////////////////////////////////////////////////// +// Load/Save Volume APIs ///////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// + +//---------------------------------------------------------------------------- +// D3DXLoadVolumeFromFile/Resource: +// -------------------------------- +// Load volume from a file or resource +// +// Parameters: +// pDestVolume +// Destination volume, which will receive the image. +// pDestPalette +// Destination palette of 256 colors, or NULL +// pDestBox +// Destination box, or NULL for entire volume +// pSrcFile +// File name of the source image. +// pSrcModule +// Module where resource is located, or NULL for module associated +// with image the os used to create the current process. +// pSrcResource +// Resource name +// pSrcData +// Pointer to file in memory. +// SrcDataSize +// Size in bytes of file in memory. +// pSrcBox +// Source box, or NULL for entire image +// Filter +// D3DX_FILTER flags controlling how the image is filtered. +// Or D3DX_DEFAULT for D3DX_FILTER_TRIANGLE. +// ColorKey +// Color to replace with transparent black, or 0 to disable colorkey. +// This is always a 32-bit ARGB color, independent of the source image +// format. Alpha is significant, and should usually be set to FF for +// opaque colorkeys. (ex. Opaque black == 0xff000000) +// pSrcInfo +// Pointer to a D3DXIMAGE_INFO structure to be filled in with the +// description of the data in the source image file, or NULL. +// +//---------------------------------------------------------------------------- + +HRESULT WINAPI + D3DXLoadVolumeFromFileA( + LPDIRECT3DVOLUME9 pDestVolume, + CONST PALETTEENTRY* pDestPalette, + CONST D3DBOX* pDestBox, + LPCSTR pSrcFile, + CONST D3DBOX* pSrcBox, + DWORD Filter, + D3DCOLOR ColorKey, + D3DXIMAGE_INFO* pSrcInfo); + +HRESULT WINAPI + D3DXLoadVolumeFromFileW( + LPDIRECT3DVOLUME9 pDestVolume, + CONST PALETTEENTRY* pDestPalette, + CONST D3DBOX* pDestBox, + LPCWSTR pSrcFile, + CONST D3DBOX* pSrcBox, + DWORD Filter, + D3DCOLOR ColorKey, + D3DXIMAGE_INFO* pSrcInfo); + +#ifdef UNICODE +#define D3DXLoadVolumeFromFile D3DXLoadVolumeFromFileW +#else +#define D3DXLoadVolumeFromFile D3DXLoadVolumeFromFileA +#endif + + +HRESULT WINAPI + D3DXLoadVolumeFromResourceA( + LPDIRECT3DVOLUME9 pDestVolume, + CONST PALETTEENTRY* pDestPalette, + CONST D3DBOX* pDestBox, + HMODULE hSrcModule, + LPCSTR pSrcResource, + CONST D3DBOX* pSrcBox, + DWORD Filter, + D3DCOLOR ColorKey, + D3DXIMAGE_INFO* pSrcInfo); + +HRESULT WINAPI + D3DXLoadVolumeFromResourceW( + LPDIRECT3DVOLUME9 pDestVolume, + CONST PALETTEENTRY* pDestPalette, + CONST D3DBOX* pDestBox, + HMODULE hSrcModule, + LPCWSTR pSrcResource, + CONST D3DBOX* pSrcBox, + DWORD Filter, + D3DCOLOR ColorKey, + D3DXIMAGE_INFO* pSrcInfo); + +#ifdef UNICODE +#define D3DXLoadVolumeFromResource D3DXLoadVolumeFromResourceW +#else +#define D3DXLoadVolumeFromResource D3DXLoadVolumeFromResourceA +#endif + + + +HRESULT WINAPI + D3DXLoadVolumeFromFileInMemory( + LPDIRECT3DVOLUME9 pDestVolume, + CONST PALETTEENTRY* pDestPalette, + CONST D3DBOX* pDestBox, + LPCVOID pSrcData, + UINT SrcDataSize, + CONST D3DBOX* pSrcBox, + DWORD Filter, + D3DCOLOR ColorKey, + D3DXIMAGE_INFO* pSrcInfo); + + + +//---------------------------------------------------------------------------- +// D3DXLoadVolumeFromVolume: +// ------------------------- +// Load volume from another volume (with color conversion) +// +// Parameters: +// pDestVolume +// Destination volume, which will receive the image. +// pDestPalette +// Destination palette of 256 colors, or NULL +// pDestBox +// Destination box, or NULL for entire volume +// pSrcVolume +// Source volume +// pSrcPalette +// Source palette of 256 colors, or NULL +// pSrcBox +// Source box, or NULL for entire volume +// Filter +// D3DX_FILTER flags controlling how the image is filtered. +// Or D3DX_DEFAULT for D3DX_FILTER_TRIANGLE. +// ColorKey +// Color to replace with transparent black, or 0 to disable colorkey. +// This is always a 32-bit ARGB color, independent of the source image +// format. Alpha is significant, and should usually be set to FF for +// opaque colorkeys. (ex. Opaque black == 0xff000000) +// +//---------------------------------------------------------------------------- + +HRESULT WINAPI + D3DXLoadVolumeFromVolume( + LPDIRECT3DVOLUME9 pDestVolume, + CONST PALETTEENTRY* pDestPalette, + CONST D3DBOX* pDestBox, + LPDIRECT3DVOLUME9 pSrcVolume, + CONST PALETTEENTRY* pSrcPalette, + CONST D3DBOX* pSrcBox, + DWORD Filter, + D3DCOLOR ColorKey); + + + +//---------------------------------------------------------------------------- +// D3DXLoadVolumeFromMemory: +// ------------------------- +// Load volume from memory. +// +// Parameters: +// pDestVolume +// Destination volume, which will receive the image. +// pDestPalette +// Destination palette of 256 colors, or NULL +// pDestBox +// Destination box, or NULL for entire volume +// pSrcMemory +// Pointer to the top-left corner of the source volume in memory +// SrcFormat +// Pixel format of the source volume. +// SrcRowPitch +// Pitch of source image, in bytes. For DXT formats, this number +// should represent the size of one row of cells, in bytes. +// SrcSlicePitch +// Pitch of source image, in bytes. For DXT formats, this number +// should represent the size of one slice of cells, in bytes. +// pSrcPalette +// Source palette of 256 colors, or NULL +// pSrcBox +// Source box. +// Filter +// D3DX_FILTER flags controlling how the image is filtered. +// Or D3DX_DEFAULT for D3DX_FILTER_TRIANGLE. +// ColorKey +// Color to replace with transparent black, or 0 to disable colorkey. +// This is always a 32-bit ARGB color, independent of the source image +// format. Alpha is significant, and should usually be set to FF for +// opaque colorkeys. (ex. Opaque black == 0xff000000) +// +//---------------------------------------------------------------------------- + +HRESULT WINAPI + D3DXLoadVolumeFromMemory( + LPDIRECT3DVOLUME9 pDestVolume, + CONST PALETTEENTRY* pDestPalette, + CONST D3DBOX* pDestBox, + LPCVOID pSrcMemory, + D3DFORMAT SrcFormat, + UINT SrcRowPitch, + UINT SrcSlicePitch, + CONST PALETTEENTRY* pSrcPalette, + CONST D3DBOX* pSrcBox, + DWORD Filter, + D3DCOLOR ColorKey); + + + +//---------------------------------------------------------------------------- +// D3DXSaveVolumeToFile: +// --------------------- +// Save a volume to a image file. +// +// Parameters: +// pDestFile +// File name of the destination file +// DestFormat +// D3DXIMAGE_FILEFORMAT specifying file format to use when saving. +// pSrcVolume +// Source volume, containing the image to be saved +// pSrcPalette +// Source palette of 256 colors, or NULL +// pSrcBox +// Source box, or NULL for the entire volume +// +//---------------------------------------------------------------------------- + +HRESULT WINAPI + D3DXSaveVolumeToFileA( + LPCSTR pDestFile, + D3DXIMAGE_FILEFORMAT DestFormat, + LPDIRECT3DVOLUME9 pSrcVolume, + CONST PALETTEENTRY* pSrcPalette, + CONST D3DBOX* pSrcBox); + +HRESULT WINAPI + D3DXSaveVolumeToFileW( + LPCWSTR pDestFile, + D3DXIMAGE_FILEFORMAT DestFormat, + LPDIRECT3DVOLUME9 pSrcVolume, + CONST PALETTEENTRY* pSrcPalette, + CONST D3DBOX* pSrcBox); + +#ifdef UNICODE +#define D3DXSaveVolumeToFile D3DXSaveVolumeToFileW +#else +#define D3DXSaveVolumeToFile D3DXSaveVolumeToFileA +#endif + + +//---------------------------------------------------------------------------- +// D3DXSaveVolumeToFileInMemory: +// --------------------- +// Save a volume to a image file. +// +// Parameters: +// pDestFile +// File name of the destination file +// DestFormat +// D3DXIMAGE_FILEFORMAT specifying file format to use when saving. +// pSrcVolume +// Source volume, containing the image to be saved +// pSrcPalette +// Source palette of 256 colors, or NULL +// pSrcBox +// Source box, or NULL for the entire volume +// +//---------------------------------------------------------------------------- + +HRESULT WINAPI + D3DXSaveVolumeToFileInMemory( + LPD3DXBUFFER* ppDestBuf, + D3DXIMAGE_FILEFORMAT DestFormat, + LPDIRECT3DVOLUME9 pSrcVolume, + CONST PALETTEENTRY* pSrcPalette, + CONST D3DBOX* pSrcBox); + +////////////////////////////////////////////////////////////////////////////// +// Create/Save Texture APIs ////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// + +//---------------------------------------------------------------------------- +// D3DXCheckTextureRequirements: +// ----------------------------- +// Checks texture creation parameters. If parameters are invalid, this +// function returns corrected parameters. +// +// Parameters: +// +// pDevice +// The D3D device to be used +// pWidth, pHeight, pDepth, pSize +// Desired size in pixels, or NULL. Returns corrected size. +// pNumMipLevels +// Number of desired mipmap levels, or NULL. Returns corrected number. +// Usage +// Texture usage flags +// pFormat +// Desired pixel format, or NULL. Returns corrected format. +// Pool +// Memory pool to be used to create texture +// +//---------------------------------------------------------------------------- + +HRESULT WINAPI + D3DXCheckTextureRequirements( + LPDIRECT3DDEVICE9 pDevice, + UINT* pWidth, + UINT* pHeight, + UINT* pNumMipLevels, + DWORD Usage, + D3DFORMAT* pFormat, + D3DPOOL Pool); + +HRESULT WINAPI + D3DXCheckCubeTextureRequirements( + LPDIRECT3DDEVICE9 pDevice, + UINT* pSize, + UINT* pNumMipLevels, + DWORD Usage, + D3DFORMAT* pFormat, + D3DPOOL Pool); + +HRESULT WINAPI + D3DXCheckVolumeTextureRequirements( + LPDIRECT3DDEVICE9 pDevice, + UINT* pWidth, + UINT* pHeight, + UINT* pDepth, + UINT* pNumMipLevels, + DWORD Usage, + D3DFORMAT* pFormat, + D3DPOOL Pool); + + +//---------------------------------------------------------------------------- +// D3DXCreateTexture: +// ------------------ +// Create an empty texture +// +// Parameters: +// +// pDevice +// The D3D device with which the texture is going to be used. +// Width, Height, Depth, Size +// size in pixels. these must be non-zero +// MipLevels +// number of mip levels desired. if zero or D3DX_DEFAULT, a complete +// mipmap chain will be created. +// Usage +// Texture usage flags +// Format +// Pixel format. +// Pool +// Memory pool to be used to create texture +// ppTexture, ppCubeTexture, ppVolumeTexture +// The texture object that will be created +// +//---------------------------------------------------------------------------- + +HRESULT WINAPI + D3DXCreateTexture( + LPDIRECT3DDEVICE9 pDevice, + UINT Width, + UINT Height, + UINT MipLevels, + DWORD Usage, + D3DFORMAT Format, + D3DPOOL Pool, + LPDIRECT3DTEXTURE9* ppTexture); + +HRESULT WINAPI + D3DXCreateCubeTexture( + LPDIRECT3DDEVICE9 pDevice, + UINT Size, + UINT MipLevels, + DWORD Usage, + D3DFORMAT Format, + D3DPOOL Pool, + LPDIRECT3DCUBETEXTURE9* ppCubeTexture); + +HRESULT WINAPI + D3DXCreateVolumeTexture( + LPDIRECT3DDEVICE9 pDevice, + UINT Width, + UINT Height, + UINT Depth, + UINT MipLevels, + DWORD Usage, + D3DFORMAT Format, + D3DPOOL Pool, + LPDIRECT3DVOLUMETEXTURE9* ppVolumeTexture); + + + +//---------------------------------------------------------------------------- +// D3DXCreateTextureFromFile/Resource: +// ----------------------------------- +// Create a texture object from a file or resource. +// +// Parameters: +// +// pDevice +// The D3D device with which the texture is going to be used. +// pSrcFile +// File name. +// hSrcModule +// Module handle. if NULL, current module will be used. +// pSrcResource +// Resource name in module +// pvSrcData +// Pointer to file in memory. +// SrcDataSize +// Size in bytes of file in memory. +// Width, Height, Depth, Size +// Size in pixels. If zero or D3DX_DEFAULT, the size will be taken from +// the file and rounded up to a power of two. If D3DX_DEFAULT_NONPOW2, +// and the device supports NONPOW2 textures, the size will not be rounded. +// If D3DX_FROM_FILE, the size will be taken exactly as it is in the file, +// and the call will fail if this violates device capabilities. +// MipLevels +// Number of mip levels. If zero or D3DX_DEFAULT, a complete mipmap +// chain will be created. If D3DX_FROM_FILE, the size will be taken +// exactly as it is in the file, and the call will fail if this violates +// device capabilities. +// Usage +// Texture usage flags +// Format +// Desired pixel format. If D3DFMT_UNKNOWN, the format will be +// taken from the file. If D3DFMT_FROM_FILE, the format will be taken +// exactly as it is in the file, and the call will fail if the device does +// not support the given format. +// Pool +// Memory pool to be used to create texture +// Filter +// D3DX_FILTER flags controlling how the image is filtered. +// Or D3DX_DEFAULT for D3DX_FILTER_TRIANGLE. +// MipFilter +// D3DX_FILTER flags controlling how each miplevel is filtered. +// Or D3DX_DEFAULT for D3DX_FILTER_BOX, +// ColorKey +// Color to replace with transparent black, or 0 to disable colorkey. +// This is always a 32-bit ARGB color, independent of the source image +// format. Alpha is significant, and should usually be set to FF for +// opaque colorkeys. (ex. Opaque black == 0xff000000) +// pSrcInfo +// Pointer to a D3DXIMAGE_INFO structure to be filled in with the +// description of the data in the source image file, or NULL. +// pPalette +// 256 color palette to be filled in, or NULL +// ppTexture, ppCubeTexture, ppVolumeTexture +// The texture object that will be created +// +//---------------------------------------------------------------------------- + + +// FromFile + +HRESULT WINAPI + D3DXCreateTextureFromFileA( + LPDIRECT3DDEVICE9 pDevice, + LPCSTR pSrcFile, + LPDIRECT3DTEXTURE9* ppTexture); + +HRESULT WINAPI + D3DXCreateTextureFromFileW( + LPDIRECT3DDEVICE9 pDevice, + LPCWSTR pSrcFile, + LPDIRECT3DTEXTURE9* ppTexture); + +#ifdef UNICODE +#define D3DXCreateTextureFromFile D3DXCreateTextureFromFileW +#else +#define D3DXCreateTextureFromFile D3DXCreateTextureFromFileA +#endif + + +HRESULT WINAPI + D3DXCreateCubeTextureFromFileA( + LPDIRECT3DDEVICE9 pDevice, + LPCSTR pSrcFile, + LPDIRECT3DCUBETEXTURE9* ppCubeTexture); + +HRESULT WINAPI + D3DXCreateCubeTextureFromFileW( + LPDIRECT3DDEVICE9 pDevice, + LPCWSTR pSrcFile, + LPDIRECT3DCUBETEXTURE9* ppCubeTexture); + +#ifdef UNICODE +#define D3DXCreateCubeTextureFromFile D3DXCreateCubeTextureFromFileW +#else +#define D3DXCreateCubeTextureFromFile D3DXCreateCubeTextureFromFileA +#endif + + +HRESULT WINAPI + D3DXCreateVolumeTextureFromFileA( + LPDIRECT3DDEVICE9 pDevice, + LPCSTR pSrcFile, + LPDIRECT3DVOLUMETEXTURE9* ppVolumeTexture); + +HRESULT WINAPI + D3DXCreateVolumeTextureFromFileW( + LPDIRECT3DDEVICE9 pDevice, + LPCWSTR pSrcFile, + LPDIRECT3DVOLUMETEXTURE9* ppVolumeTexture); + +#ifdef UNICODE +#define D3DXCreateVolumeTextureFromFile D3DXCreateVolumeTextureFromFileW +#else +#define D3DXCreateVolumeTextureFromFile D3DXCreateVolumeTextureFromFileA +#endif + + +// FromResource + +HRESULT WINAPI + D3DXCreateTextureFromResourceA( + LPDIRECT3DDEVICE9 pDevice, + HMODULE hSrcModule, + LPCSTR pSrcResource, + LPDIRECT3DTEXTURE9* ppTexture); + +HRESULT WINAPI + D3DXCreateTextureFromResourceW( + LPDIRECT3DDEVICE9 pDevice, + HMODULE hSrcModule, + LPCWSTR pSrcResource, + LPDIRECT3DTEXTURE9* ppTexture); + +#ifdef UNICODE +#define D3DXCreateTextureFromResource D3DXCreateTextureFromResourceW +#else +#define D3DXCreateTextureFromResource D3DXCreateTextureFromResourceA +#endif + + +HRESULT WINAPI + D3DXCreateCubeTextureFromResourceA( + LPDIRECT3DDEVICE9 pDevice, + HMODULE hSrcModule, + LPCSTR pSrcResource, + LPDIRECT3DCUBETEXTURE9* ppCubeTexture); + +HRESULT WINAPI + D3DXCreateCubeTextureFromResourceW( + LPDIRECT3DDEVICE9 pDevice, + HMODULE hSrcModule, + LPCWSTR pSrcResource, + LPDIRECT3DCUBETEXTURE9* ppCubeTexture); + +#ifdef UNICODE +#define D3DXCreateCubeTextureFromResource D3DXCreateCubeTextureFromResourceW +#else +#define D3DXCreateCubeTextureFromResource D3DXCreateCubeTextureFromResourceA +#endif + + +HRESULT WINAPI + D3DXCreateVolumeTextureFromResourceA( + LPDIRECT3DDEVICE9 pDevice, + HMODULE hSrcModule, + LPCSTR pSrcResource, + LPDIRECT3DVOLUMETEXTURE9* ppVolumeTexture); + +HRESULT WINAPI + D3DXCreateVolumeTextureFromResourceW( + LPDIRECT3DDEVICE9 pDevice, + HMODULE hSrcModule, + LPCWSTR pSrcResource, + LPDIRECT3DVOLUMETEXTURE9* ppVolumeTexture); + +#ifdef UNICODE +#define D3DXCreateVolumeTextureFromResource D3DXCreateVolumeTextureFromResourceW +#else +#define D3DXCreateVolumeTextureFromResource D3DXCreateVolumeTextureFromResourceA +#endif + + +// FromFileEx + +HRESULT WINAPI + D3DXCreateTextureFromFileExA( + LPDIRECT3DDEVICE9 pDevice, + LPCSTR pSrcFile, + UINT Width, + UINT Height, + UINT MipLevels, + DWORD Usage, + D3DFORMAT Format, + D3DPOOL Pool, + DWORD Filter, + DWORD MipFilter, + D3DCOLOR ColorKey, + D3DXIMAGE_INFO* pSrcInfo, + PALETTEENTRY* pPalette, + LPDIRECT3DTEXTURE9* ppTexture); + +HRESULT WINAPI + D3DXCreateTextureFromFileExW( + LPDIRECT3DDEVICE9 pDevice, + LPCWSTR pSrcFile, + UINT Width, + UINT Height, + UINT MipLevels, + DWORD Usage, + D3DFORMAT Format, + D3DPOOL Pool, + DWORD Filter, + DWORD MipFilter, + D3DCOLOR ColorKey, + D3DXIMAGE_INFO* pSrcInfo, + PALETTEENTRY* pPalette, + LPDIRECT3DTEXTURE9* ppTexture); + +#ifdef UNICODE +#define D3DXCreateTextureFromFileEx D3DXCreateTextureFromFileExW +#else +#define D3DXCreateTextureFromFileEx D3DXCreateTextureFromFileExA +#endif + + +HRESULT WINAPI + D3DXCreateCubeTextureFromFileExA( + LPDIRECT3DDEVICE9 pDevice, + LPCSTR pSrcFile, + UINT Size, + UINT MipLevels, + DWORD Usage, + D3DFORMAT Format, + D3DPOOL Pool, + DWORD Filter, + DWORD MipFilter, + D3DCOLOR ColorKey, + D3DXIMAGE_INFO* pSrcInfo, + PALETTEENTRY* pPalette, + LPDIRECT3DCUBETEXTURE9* ppCubeTexture); + +HRESULT WINAPI + D3DXCreateCubeTextureFromFileExW( + LPDIRECT3DDEVICE9 pDevice, + LPCWSTR pSrcFile, + UINT Size, + UINT MipLevels, + DWORD Usage, + D3DFORMAT Format, + D3DPOOL Pool, + DWORD Filter, + DWORD MipFilter, + D3DCOLOR ColorKey, + D3DXIMAGE_INFO* pSrcInfo, + PALETTEENTRY* pPalette, + LPDIRECT3DCUBETEXTURE9* ppCubeTexture); + +#ifdef UNICODE +#define D3DXCreateCubeTextureFromFileEx D3DXCreateCubeTextureFromFileExW +#else +#define D3DXCreateCubeTextureFromFileEx D3DXCreateCubeTextureFromFileExA +#endif + + +HRESULT WINAPI + D3DXCreateVolumeTextureFromFileExA( + LPDIRECT3DDEVICE9 pDevice, + LPCSTR pSrcFile, + UINT Width, + UINT Height, + UINT Depth, + UINT MipLevels, + DWORD Usage, + D3DFORMAT Format, + D3DPOOL Pool, + DWORD Filter, + DWORD MipFilter, + D3DCOLOR ColorKey, + D3DXIMAGE_INFO* pSrcInfo, + PALETTEENTRY* pPalette, + LPDIRECT3DVOLUMETEXTURE9* ppVolumeTexture); + +HRESULT WINAPI + D3DXCreateVolumeTextureFromFileExW( + LPDIRECT3DDEVICE9 pDevice, + LPCWSTR pSrcFile, + UINT Width, + UINT Height, + UINT Depth, + UINT MipLevels, + DWORD Usage, + D3DFORMAT Format, + D3DPOOL Pool, + DWORD Filter, + DWORD MipFilter, + D3DCOLOR ColorKey, + D3DXIMAGE_INFO* pSrcInfo, + PALETTEENTRY* pPalette, + LPDIRECT3DVOLUMETEXTURE9* ppVolumeTexture); + +#ifdef UNICODE +#define D3DXCreateVolumeTextureFromFileEx D3DXCreateVolumeTextureFromFileExW +#else +#define D3DXCreateVolumeTextureFromFileEx D3DXCreateVolumeTextureFromFileExA +#endif + + +// FromResourceEx + +HRESULT WINAPI + D3DXCreateTextureFromResourceExA( + LPDIRECT3DDEVICE9 pDevice, + HMODULE hSrcModule, + LPCSTR pSrcResource, + UINT Width, + UINT Height, + UINT MipLevels, + DWORD Usage, + D3DFORMAT Format, + D3DPOOL Pool, + DWORD Filter, + DWORD MipFilter, + D3DCOLOR ColorKey, + D3DXIMAGE_INFO* pSrcInfo, + PALETTEENTRY* pPalette, + LPDIRECT3DTEXTURE9* ppTexture); + +HRESULT WINAPI + D3DXCreateTextureFromResourceExW( + LPDIRECT3DDEVICE9 pDevice, + HMODULE hSrcModule, + LPCWSTR pSrcResource, + UINT Width, + UINT Height, + UINT MipLevels, + DWORD Usage, + D3DFORMAT Format, + D3DPOOL Pool, + DWORD Filter, + DWORD MipFilter, + D3DCOLOR ColorKey, + D3DXIMAGE_INFO* pSrcInfo, + PALETTEENTRY* pPalette, + LPDIRECT3DTEXTURE9* ppTexture); + +#ifdef UNICODE +#define D3DXCreateTextureFromResourceEx D3DXCreateTextureFromResourceExW +#else +#define D3DXCreateTextureFromResourceEx D3DXCreateTextureFromResourceExA +#endif + + +HRESULT WINAPI + D3DXCreateCubeTextureFromResourceExA( + LPDIRECT3DDEVICE9 pDevice, + HMODULE hSrcModule, + LPCSTR pSrcResource, + UINT Size, + UINT MipLevels, + DWORD Usage, + D3DFORMAT Format, + D3DPOOL Pool, + DWORD Filter, + DWORD MipFilter, + D3DCOLOR ColorKey, + D3DXIMAGE_INFO* pSrcInfo, + PALETTEENTRY* pPalette, + LPDIRECT3DCUBETEXTURE9* ppCubeTexture); + +HRESULT WINAPI + D3DXCreateCubeTextureFromResourceExW( + LPDIRECT3DDEVICE9 pDevice, + HMODULE hSrcModule, + LPCWSTR pSrcResource, + UINT Size, + UINT MipLevels, + DWORD Usage, + D3DFORMAT Format, + D3DPOOL Pool, + DWORD Filter, + DWORD MipFilter, + D3DCOLOR ColorKey, + D3DXIMAGE_INFO* pSrcInfo, + PALETTEENTRY* pPalette, + LPDIRECT3DCUBETEXTURE9* ppCubeTexture); + +#ifdef UNICODE +#define D3DXCreateCubeTextureFromResourceEx D3DXCreateCubeTextureFromResourceExW +#else +#define D3DXCreateCubeTextureFromResourceEx D3DXCreateCubeTextureFromResourceExA +#endif + + +HRESULT WINAPI + D3DXCreateVolumeTextureFromResourceExA( + LPDIRECT3DDEVICE9 pDevice, + HMODULE hSrcModule, + LPCSTR pSrcResource, + UINT Width, + UINT Height, + UINT Depth, + UINT MipLevels, + DWORD Usage, + D3DFORMAT Format, + D3DPOOL Pool, + DWORD Filter, + DWORD MipFilter, + D3DCOLOR ColorKey, + D3DXIMAGE_INFO* pSrcInfo, + PALETTEENTRY* pPalette, + LPDIRECT3DVOLUMETEXTURE9* ppVolumeTexture); + +HRESULT WINAPI + D3DXCreateVolumeTextureFromResourceExW( + LPDIRECT3DDEVICE9 pDevice, + HMODULE hSrcModule, + LPCWSTR pSrcResource, + UINT Width, + UINT Height, + UINT Depth, + UINT MipLevels, + DWORD Usage, + D3DFORMAT Format, + D3DPOOL Pool, + DWORD Filter, + DWORD MipFilter, + D3DCOLOR ColorKey, + D3DXIMAGE_INFO* pSrcInfo, + PALETTEENTRY* pPalette, + LPDIRECT3DVOLUMETEXTURE9* ppVolumeTexture); + +#ifdef UNICODE +#define D3DXCreateVolumeTextureFromResourceEx D3DXCreateVolumeTextureFromResourceExW +#else +#define D3DXCreateVolumeTextureFromResourceEx D3DXCreateVolumeTextureFromResourceExA +#endif + + +// FromFileInMemory + +HRESULT WINAPI + D3DXCreateTextureFromFileInMemory( + LPDIRECT3DDEVICE9 pDevice, + LPCVOID pSrcData, + UINT SrcDataSize, + LPDIRECT3DTEXTURE9* ppTexture); + +HRESULT WINAPI + D3DXCreateCubeTextureFromFileInMemory( + LPDIRECT3DDEVICE9 pDevice, + LPCVOID pSrcData, + UINT SrcDataSize, + LPDIRECT3DCUBETEXTURE9* ppCubeTexture); + +HRESULT WINAPI + D3DXCreateVolumeTextureFromFileInMemory( + LPDIRECT3DDEVICE9 pDevice, + LPCVOID pSrcData, + UINT SrcDataSize, + LPDIRECT3DVOLUMETEXTURE9* ppVolumeTexture); + + +// FromFileInMemoryEx + +HRESULT WINAPI + D3DXCreateTextureFromFileInMemoryEx( + LPDIRECT3DDEVICE9 pDevice, + LPCVOID pSrcData, + UINT SrcDataSize, + UINT Width, + UINT Height, + UINT MipLevels, + DWORD Usage, + D3DFORMAT Format, + D3DPOOL Pool, + DWORD Filter, + DWORD MipFilter, + D3DCOLOR ColorKey, + D3DXIMAGE_INFO* pSrcInfo, + PALETTEENTRY* pPalette, + LPDIRECT3DTEXTURE9* ppTexture); + +HRESULT WINAPI + D3DXCreateCubeTextureFromFileInMemoryEx( + LPDIRECT3DDEVICE9 pDevice, + LPCVOID pSrcData, + UINT SrcDataSize, + UINT Size, + UINT MipLevels, + DWORD Usage, + D3DFORMAT Format, + D3DPOOL Pool, + DWORD Filter, + DWORD MipFilter, + D3DCOLOR ColorKey, + D3DXIMAGE_INFO* pSrcInfo, + PALETTEENTRY* pPalette, + LPDIRECT3DCUBETEXTURE9* ppCubeTexture); + +HRESULT WINAPI + D3DXCreateVolumeTextureFromFileInMemoryEx( + LPDIRECT3DDEVICE9 pDevice, + LPCVOID pSrcData, + UINT SrcDataSize, + UINT Width, + UINT Height, + UINT Depth, + UINT MipLevels, + DWORD Usage, + D3DFORMAT Format, + D3DPOOL Pool, + DWORD Filter, + DWORD MipFilter, + D3DCOLOR ColorKey, + D3DXIMAGE_INFO* pSrcInfo, + PALETTEENTRY* pPalette, + LPDIRECT3DVOLUMETEXTURE9* ppVolumeTexture); + + + +//---------------------------------------------------------------------------- +// D3DXSaveTextureToFile: +// ---------------------- +// Save a texture to a file. +// +// Parameters: +// pDestFile +// File name of the destination file +// DestFormat +// D3DXIMAGE_FILEFORMAT specifying file format to use when saving. +// pSrcTexture +// Source texture, containing the image to be saved +// pSrcPalette +// Source palette of 256 colors, or NULL +// +//---------------------------------------------------------------------------- + + +HRESULT WINAPI + D3DXSaveTextureToFileA( + LPCSTR pDestFile, + D3DXIMAGE_FILEFORMAT DestFormat, + LPDIRECT3DBASETEXTURE9 pSrcTexture, + CONST PALETTEENTRY* pSrcPalette); + +HRESULT WINAPI + D3DXSaveTextureToFileW( + LPCWSTR pDestFile, + D3DXIMAGE_FILEFORMAT DestFormat, + LPDIRECT3DBASETEXTURE9 pSrcTexture, + CONST PALETTEENTRY* pSrcPalette); + +#ifdef UNICODE +#define D3DXSaveTextureToFile D3DXSaveTextureToFileW +#else +#define D3DXSaveTextureToFile D3DXSaveTextureToFileA +#endif + + +//---------------------------------------------------------------------------- +// D3DXSaveTextureToFileInMemory: +// ---------------------- +// Save a texture to a file. +// +// Parameters: +// ppDestBuf +// address of a d3dxbuffer pointer to return the image data +// DestFormat +// D3DXIMAGE_FILEFORMAT specifying file format to use when saving. +// pSrcTexture +// Source texture, containing the image to be saved +// pSrcPalette +// Source palette of 256 colors, or NULL +// +//---------------------------------------------------------------------------- + +HRESULT WINAPI + D3DXSaveTextureToFileInMemory( + LPD3DXBUFFER* ppDestBuf, + D3DXIMAGE_FILEFORMAT DestFormat, + LPDIRECT3DBASETEXTURE9 pSrcTexture, + CONST PALETTEENTRY* pSrcPalette); + + + + +////////////////////////////////////////////////////////////////////////////// +// Misc Texture APIs ///////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// + +//---------------------------------------------------------------------------- +// D3DXFilterTexture: +// ------------------ +// Filters mipmaps levels of a texture. +// +// Parameters: +// pBaseTexture +// The texture object to be filtered +// pPalette +// 256 color palette to be used, or NULL for non-palettized formats +// SrcLevel +// The level whose image is used to generate the subsequent levels. +// Filter +// D3DX_FILTER flags controlling how each miplevel is filtered. +// Or D3DX_DEFAULT for D3DX_FILTER_BOX, +// +//---------------------------------------------------------------------------- + +HRESULT WINAPI + D3DXFilterTexture( + LPDIRECT3DBASETEXTURE9 pBaseTexture, + CONST PALETTEENTRY* pPalette, + UINT SrcLevel, + DWORD Filter); + +#define D3DXFilterCubeTexture D3DXFilterTexture +#define D3DXFilterVolumeTexture D3DXFilterTexture + + + +//---------------------------------------------------------------------------- +// D3DXFillTexture: +// ---------------- +// Uses a user provided function to fill each texel of each mip level of a +// given texture. +// +// Paramters: +// pTexture, pCubeTexture, pVolumeTexture +// Pointer to the texture to be filled. +// pFunction +// Pointer to user provided evalutor function which will be used to +// compute the value of each texel. +// pData +// Pointer to an arbitrary block of user defined data. This pointer +// will be passed to the function provided in pFunction +//----------------------------------------------------------------------------- + +HRESULT WINAPI + D3DXFillTexture( + LPDIRECT3DTEXTURE9 pTexture, + LPD3DXFILL2D pFunction, + LPVOID pData); + +HRESULT WINAPI + D3DXFillCubeTexture( + LPDIRECT3DCUBETEXTURE9 pCubeTexture, + LPD3DXFILL3D pFunction, + LPVOID pData); + +HRESULT WINAPI + D3DXFillVolumeTexture( + LPDIRECT3DVOLUMETEXTURE9 pVolumeTexture, + LPD3DXFILL3D pFunction, + LPVOID pData); + +//--------------------------------------------------------------------------- +// D3DXFillTextureTX: +// ------------------ +// Uses a TX Shader target to function to fill each texel of each mip level +// of a given texture. The TX Shader target should be a compiled function +// taking 2 paramters and returning a float4 color. +// +// Paramters: +// pTexture, pCubeTexture, pVolumeTexture +// Pointer to the texture to be filled. +// pTextureShader +// Pointer to the texture shader to be used to fill in the texture +//---------------------------------------------------------------------------- + +HRESULT WINAPI + D3DXFillTextureTX( + LPDIRECT3DTEXTURE9 pTexture, + LPD3DXTEXTURESHADER pTextureShader); + + +HRESULT WINAPI + D3DXFillCubeTextureTX( + LPDIRECT3DCUBETEXTURE9 pCubeTexture, + LPD3DXTEXTURESHADER pTextureShader); + + +HRESULT WINAPI + D3DXFillVolumeTextureTX( + LPDIRECT3DVOLUMETEXTURE9 pVolumeTexture, + LPD3DXTEXTURESHADER pTextureShader); + + + +//---------------------------------------------------------------------------- +// D3DXComputeNormalMap: +// --------------------- +// Converts a height map into a normal map. The (x,y,z) components of each +// normal are mapped to the (r,g,b) channels of the output texture. +// +// Parameters +// pTexture +// Pointer to the destination texture +// pSrcTexture +// Pointer to the source heightmap texture +// pSrcPalette +// Source palette of 256 colors, or NULL +// Flags +// D3DX_NORMALMAP flags +// Channel +// D3DX_CHANNEL specifying source of height information +// Amplitude +// The constant value which the height information is multiplied by. +//--------------------------------------------------------------------------- + +HRESULT WINAPI + D3DXComputeNormalMap( + LPDIRECT3DTEXTURE9 pTexture, + LPDIRECT3DTEXTURE9 pSrcTexture, + CONST PALETTEENTRY* pSrcPalette, + DWORD Flags, + DWORD Channel, + FLOAT Amplitude); + + + + +#ifdef __cplusplus +} +#endif //__cplusplus + +#endif //__D3DX9TEX_H__ + diff --git a/videoInputSrcAndDemos/libs/DShow/Include/d3dx9xof.h b/videoInputSrcAndDemos/libs/DShow/Include/d3dx9xof.h index 6edb926..c513f0f 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/d3dx9xof.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/d3dx9xof.h @@ -1,299 +1,299 @@ -/////////////////////////////////////////////////////////////////////////// -// -// Copyright (C) Microsoft Corporation. All Rights Reserved. -// -// File: d3dx9xof.h -// Content: D3DX .X File types and functions -// -/////////////////////////////////////////////////////////////////////////// - -#include "d3dx9.h" - -#if !defined( __D3DX9XOF_H__ ) -#define __D3DX9XOF_H__ - -#if defined( __cplusplus ) -extern "C" { -#endif // defined( __cplusplus ) - -//---------------------------------------------------------------------------- -// D3DXF_FILEFORMAT -// This flag is used to specify what file type to use when saving to disk. -// _BINARY, and _TEXT are mutually exclusive, while -// _COMPRESSED is an optional setting that works with all file types. -//---------------------------------------------------------------------------- -typedef DWORD D3DXF_FILEFORMAT; - -#define D3DXF_FILEFORMAT_BINARY 0 -#define D3DXF_FILEFORMAT_TEXT 1 -#define D3DXF_FILEFORMAT_COMPRESSED 2 - -//---------------------------------------------------------------------------- -// D3DXF_FILESAVEOPTIONS -// This flag is used to specify where to save the file to. Each flag is -// mutually exclusive, indicates the data location of the file, and also -// chooses which additional data will specify the location. -// _TOFILE is paired with a filename (LPCSTR) -// _TOWFILE is paired with a filename (LPWSTR) -//---------------------------------------------------------------------------- -typedef DWORD D3DXF_FILESAVEOPTIONS; - -#define D3DXF_FILESAVE_TOFILE 0x00L -#define D3DXF_FILESAVE_TOWFILE 0x01L - -//---------------------------------------------------------------------------- -// D3DXF_FILELOADOPTIONS -// This flag is used to specify where to load the file from. Each flag is -// mutually exclusive, indicates the data location of the file, and also -// chooses which additional data will specify the location. -// _FROMFILE is paired with a filename (LPCSTR) -// _FROMWFILE is paired with a filename (LPWSTR) -// _FROMRESOURCE is paired with a (D3DXF_FILELOADRESOUCE*) description. -// _FROMMEMORY is paired with a (D3DXF_FILELOADMEMORY*) description. -//---------------------------------------------------------------------------- -typedef DWORD D3DXF_FILELOADOPTIONS; - -#define D3DXF_FILELOAD_FROMFILE 0x00L -#define D3DXF_FILELOAD_FROMWFILE 0x01L -#define D3DXF_FILELOAD_FROMRESOURCE 0x02L -#define D3DXF_FILELOAD_FROMMEMORY 0x03L - -//---------------------------------------------------------------------------- -// D3DXF_FILELOADRESOURCE: -//---------------------------------------------------------------------------- - -typedef struct _D3DXF_FILELOADRESOURCE -{ - HMODULE hModule; // Desc - LPCSTR lpName; // Desc - LPCSTR lpType; // Desc -} D3DXF_FILELOADRESOURCE; - -//---------------------------------------------------------------------------- -// D3DXF_FILELOADMEMORY: -//---------------------------------------------------------------------------- - -typedef struct _D3DXF_FILELOADMEMORY -{ - LPCVOID lpMemory; // Desc - SIZE_T dSize; // Desc -} D3DXF_FILELOADMEMORY; - -#if defined( _WIN32 ) && !defined( _NO_COM ) - -// {cef08cf9-7b4f-4429-9624-2a690a933201} -DEFINE_GUID( IID_ID3DXFile, -0xcef08cf9, 0x7b4f, 0x4429, 0x96, 0x24, 0x2a, 0x69, 0x0a, 0x93, 0x32, 0x01 ); - -// {cef08cfa-7b4f-4429-9624-2a690a933201} -DEFINE_GUID( IID_ID3DXFileSaveObject, -0xcef08cfa, 0x7b4f, 0x4429, 0x96, 0x24, 0x2a, 0x69, 0x0a, 0x93, 0x32, 0x01 ); - -// {cef08cfb-7b4f-4429-9624-2a690a933201} -DEFINE_GUID( IID_ID3DXFileSaveData, -0xcef08cfb, 0x7b4f, 0x4429, 0x96, 0x24, 0x2a, 0x69, 0x0a, 0x93, 0x32, 0x01 ); - -// {cef08cfc-7b4f-4429-9624-2a690a933201} -DEFINE_GUID( IID_ID3DXFileEnumObject, -0xcef08cfc, 0x7b4f, 0x4429, 0x96, 0x24, 0x2a, 0x69, 0x0a, 0x93, 0x32, 0x01 ); - -// {cef08cfd-7b4f-4429-9624-2a690a933201} -DEFINE_GUID( IID_ID3DXFileData, -0xcef08cfd, 0x7b4f, 0x4429, 0x96, 0x24, 0x2a, 0x69, 0x0a, 0x93, 0x32, 0x01 ); - -#endif // defined( _WIN32 ) && !defined( _NO_COM ) - -#if defined( __cplusplus ) -#if !defined( DECLSPEC_UUID ) -#if _MSC_VER >= 1100 -#define DECLSPEC_UUID( x ) __declspec( uuid( x ) ) -#else // !( _MSC_VER >= 1100 ) -#define DECLSPEC_UUID( x ) -#endif // !( _MSC_VER >= 1100 ) -#endif // !defined( DECLSPEC_UUID ) - -interface DECLSPEC_UUID( "cef08cf9-7b4f-4429-9624-2a690a933201" ) - ID3DXFile; -interface DECLSPEC_UUID( "cef08cfa-7b4f-4429-9624-2a690a933201" ) - ID3DXFileSaveObject; -interface DECLSPEC_UUID( "cef08cfb-7b4f-4429-9624-2a690a933201" ) - ID3DXFileSaveData; -interface DECLSPEC_UUID( "cef08cfc-7b4f-4429-9624-2a690a933201" ) - ID3DXFileEnumObject; -interface DECLSPEC_UUID( "cef08cfd-7b4f-4429-9624-2a690a933201" ) - ID3DXFileData; - -#if defined( _COM_SMARTPTR_TYPEDEF ) -_COM_SMARTPTR_TYPEDEF( ID3DXFile, - __uuidof( ID3DXFile ) ); -_COM_SMARTPTR_TYPEDEF( ID3DXFileSaveObject, - __uuidof( ID3DXFileSaveObject ) ); -_COM_SMARTPTR_TYPEDEF( ID3DXFileSaveData, - __uuidof( ID3DXFileSaveData ) ); -_COM_SMARTPTR_TYPEDEF( ID3DXFileEnumObject, - __uuidof( ID3DXFileEnumObject ) ); -_COM_SMARTPTR_TYPEDEF( ID3DXFileData, - __uuidof( ID3DXFileData ) ); -#endif // defined( _COM_SMARTPTR_TYPEDEF ) -#endif // defined( __cplusplus ) - -typedef interface ID3DXFile ID3DXFile; -typedef interface ID3DXFileSaveObject ID3DXFileSaveObject; -typedef interface ID3DXFileSaveData ID3DXFileSaveData; -typedef interface ID3DXFileEnumObject ID3DXFileEnumObject; -typedef interface ID3DXFileData ID3DXFileData; - -////////////////////////////////////////////////////////////////////////////// -// ID3DXFile ///////////////////////////////////////////////////////////////// -////////////////////////////////////////////////////////////////////////////// - -#undef INTERFACE -#define INTERFACE ID3DXFile - -DECLARE_INTERFACE_( ID3DXFile, IUnknown ) -{ - STDMETHOD( QueryInterface )( THIS_ REFIID, LPVOID* ) PURE; - STDMETHOD_( ULONG, AddRef )( THIS ) PURE; - STDMETHOD_( ULONG, Release )( THIS ) PURE; - - STDMETHOD( CreateEnumObject )( THIS_ LPCVOID, D3DXF_FILELOADOPTIONS, - ID3DXFileEnumObject** ) PURE; - STDMETHOD( CreateSaveObject )( THIS_ LPCVOID, D3DXF_FILESAVEOPTIONS, - D3DXF_FILEFORMAT, ID3DXFileSaveObject** ) PURE; - STDMETHOD( RegisterTemplates )( THIS_ LPCVOID, SIZE_T ) PURE; - STDMETHOD( RegisterEnumTemplates )( THIS_ ID3DXFileEnumObject* ) PURE; -}; - -////////////////////////////////////////////////////////////////////////////// -// ID3DXFileSaveObject /////////////////////////////////////////////////////// -////////////////////////////////////////////////////////////////////////////// - -#undef INTERFACE -#define INTERFACE ID3DXFileSaveObject - -DECLARE_INTERFACE_( ID3DXFileSaveObject, IUnknown ) -{ - STDMETHOD( QueryInterface )( THIS_ REFIID, LPVOID* ) PURE; - STDMETHOD_( ULONG, AddRef )( THIS ) PURE; - STDMETHOD_( ULONG, Release )( THIS ) PURE; - - STDMETHOD( GetFile )( THIS_ ID3DXFile** ) PURE; - STDMETHOD( AddDataObject )( THIS_ REFGUID, LPCSTR, CONST GUID*, - SIZE_T, LPCVOID, ID3DXFileSaveData** ) PURE; - STDMETHOD( Save )( THIS ) PURE; -}; - -////////////////////////////////////////////////////////////////////////////// -// ID3DXFileSaveData ///////////////////////////////////////////////////////// -////////////////////////////////////////////////////////////////////////////// - -#undef INTERFACE -#define INTERFACE ID3DXFileSaveData - -DECLARE_INTERFACE_( ID3DXFileSaveData, IUnknown ) -{ - STDMETHOD( QueryInterface )( THIS_ REFIID, LPVOID* ) PURE; - STDMETHOD_( ULONG, AddRef )( THIS ) PURE; - STDMETHOD_( ULONG, Release )( THIS ) PURE; - - STDMETHOD( GetSave )( THIS_ ID3DXFileSaveObject** ) PURE; - STDMETHOD( GetName )( THIS_ LPSTR, SIZE_T* ) PURE; - STDMETHOD( GetId )( THIS_ LPGUID ) PURE; - STDMETHOD( GetType )( THIS_ GUID* ) PURE; - STDMETHOD( AddDataObject )( THIS_ REFGUID, LPCSTR, CONST GUID*, - SIZE_T, LPCVOID, ID3DXFileSaveData** ) PURE; - STDMETHOD( AddDataReference )( THIS_ LPCSTR, CONST GUID* ) PURE; -}; - -////////////////////////////////////////////////////////////////////////////// -// ID3DXFileEnumObject /////////////////////////////////////////////////////// -////////////////////////////////////////////////////////////////////////////// - -#undef INTERFACE -#define INTERFACE ID3DXFileEnumObject - -DECLARE_INTERFACE_( ID3DXFileEnumObject, IUnknown ) -{ - STDMETHOD( QueryInterface )( THIS_ REFIID, LPVOID* ) PURE; - STDMETHOD_( ULONG, AddRef )( THIS ) PURE; - STDMETHOD_( ULONG, Release )( THIS ) PURE; - - STDMETHOD( GetFile )( THIS_ ID3DXFile** ) PURE; - STDMETHOD( GetChildren )( THIS_ SIZE_T* ) PURE; - STDMETHOD( GetChild )( THIS_ SIZE_T, ID3DXFileData** ) PURE; - STDMETHOD( GetDataObjectById )( THIS_ REFGUID, ID3DXFileData** ) PURE; - STDMETHOD( GetDataObjectByName )( THIS_ LPCSTR, ID3DXFileData** ) PURE; -}; - -////////////////////////////////////////////////////////////////////////////// -// ID3DXFileData ///////////////////////////////////////////////////////////// -////////////////////////////////////////////////////////////////////////////// - -#undef INTERFACE -#define INTERFACE ID3DXFileData - -DECLARE_INTERFACE_( ID3DXFileData, IUnknown ) -{ - STDMETHOD( QueryInterface )( THIS_ REFIID, LPVOID* ) PURE; - STDMETHOD_( ULONG, AddRef )( THIS ) PURE; - STDMETHOD_( ULONG, Release )( THIS ) PURE; - - STDMETHOD( GetEnum )( THIS_ ID3DXFileEnumObject** ) PURE; - STDMETHOD( GetName )( THIS_ LPSTR, SIZE_T* ) PURE; - STDMETHOD( GetId )( THIS_ LPGUID ) PURE; - STDMETHOD( Lock )( THIS_ SIZE_T*, LPCVOID* ) PURE; - STDMETHOD( Unlock )( THIS ) PURE; - STDMETHOD( GetType )( THIS_ GUID* ) PURE; - STDMETHOD_( BOOL, IsReference )( THIS ) PURE; - STDMETHOD( GetChildren )( THIS_ SIZE_T* ) PURE; - STDMETHOD( GetChild )( THIS_ SIZE_T, ID3DXFileData** ) PURE; -}; - -STDAPI D3DXFileCreate( ID3DXFile** lplpDirectXFile ); - -/* - * DirectX File errors. - */ - -#define _FACD3DXF 0x876 - -#define D3DXFERR_BADOBJECT MAKE_HRESULT( 1, _FACD3DXF, 900 ) -#define D3DXFERR_BADVALUE MAKE_HRESULT( 1, _FACD3DXF, 901 ) -#define D3DXFERR_BADTYPE MAKE_HRESULT( 1, _FACD3DXF, 902 ) -#define D3DXFERR_NOTFOUND MAKE_HRESULT( 1, _FACD3DXF, 903 ) -#define D3DXFERR_NOTDONEYET MAKE_HRESULT( 1, _FACD3DXF, 904 ) -#define D3DXFERR_FILENOTFOUND MAKE_HRESULT( 1, _FACD3DXF, 905 ) -#define D3DXFERR_RESOURCENOTFOUND MAKE_HRESULT( 1, _FACD3DXF, 906 ) -#define D3DXFERR_BADRESOURCE MAKE_HRESULT( 1, _FACD3DXF, 907 ) -#define D3DXFERR_BADFILETYPE MAKE_HRESULT( 1, _FACD3DXF, 908 ) -#define D3DXFERR_BADFILEVERSION MAKE_HRESULT( 1, _FACD3DXF, 909 ) -#define D3DXFERR_BADFILEFLOATSIZE MAKE_HRESULT( 1, _FACD3DXF, 910 ) -#define D3DXFERR_BADFILE MAKE_HRESULT( 1, _FACD3DXF, 911 ) -#define D3DXFERR_PARSEERROR MAKE_HRESULT( 1, _FACD3DXF, 912 ) -#define D3DXFERR_BADARRAYSIZE MAKE_HRESULT( 1, _FACD3DXF, 913 ) -#define D3DXFERR_BADDATAREFERENCE MAKE_HRESULT( 1, _FACD3DXF, 914 ) -#define D3DXFERR_NOMOREOBJECTS MAKE_HRESULT( 1, _FACD3DXF, 915 ) -#define D3DXFERR_NOMOREDATA MAKE_HRESULT( 1, _FACD3DXF, 916 ) -#define D3DXFERR_BADCACHEFILE MAKE_HRESULT( 1, _FACD3DXF, 917 ) - -/* - * DirectX File object types. - */ - -#ifndef WIN_TYPES -#define WIN_TYPES(itype, ptype) typedef interface itype *LP##ptype, **LPLP##ptype -#endif - -WIN_TYPES(ID3DXFile, D3DXFILE); -WIN_TYPES(ID3DXFileEnumObject, D3DXFILEENUMOBJECT); -WIN_TYPES(ID3DXFileSaveObject, D3DXFILESAVEOBJECT); -WIN_TYPES(ID3DXFileData, D3DXFILEDATA); -WIN_TYPES(ID3DXFileSaveData, D3DXFILESAVEDATA); - -#if defined( __cplusplus ) -} // extern "C" -#endif // defined( __cplusplus ) - -#endif // !defined( __D3DX9XOF_H__ ) - - +/////////////////////////////////////////////////////////////////////////// +// +// Copyright (C) Microsoft Corporation. All Rights Reserved. +// +// File: d3dx9xof.h +// Content: D3DX .X File types and functions +// +/////////////////////////////////////////////////////////////////////////// + +#include "d3dx9.h" + +#if !defined( __D3DX9XOF_H__ ) +#define __D3DX9XOF_H__ + +#if defined( __cplusplus ) +extern "C" { +#endif // defined( __cplusplus ) + +//---------------------------------------------------------------------------- +// D3DXF_FILEFORMAT +// This flag is used to specify what file type to use when saving to disk. +// _BINARY, and _TEXT are mutually exclusive, while +// _COMPRESSED is an optional setting that works with all file types. +//---------------------------------------------------------------------------- +typedef DWORD D3DXF_FILEFORMAT; + +#define D3DXF_FILEFORMAT_BINARY 0 +#define D3DXF_FILEFORMAT_TEXT 1 +#define D3DXF_FILEFORMAT_COMPRESSED 2 + +//---------------------------------------------------------------------------- +// D3DXF_FILESAVEOPTIONS +// This flag is used to specify where to save the file to. Each flag is +// mutually exclusive, indicates the data location of the file, and also +// chooses which additional data will specify the location. +// _TOFILE is paired with a filename (LPCSTR) +// _TOWFILE is paired with a filename (LPWSTR) +//---------------------------------------------------------------------------- +typedef DWORD D3DXF_FILESAVEOPTIONS; + +#define D3DXF_FILESAVE_TOFILE 0x00L +#define D3DXF_FILESAVE_TOWFILE 0x01L + +//---------------------------------------------------------------------------- +// D3DXF_FILELOADOPTIONS +// This flag is used to specify where to load the file from. Each flag is +// mutually exclusive, indicates the data location of the file, and also +// chooses which additional data will specify the location. +// _FROMFILE is paired with a filename (LPCSTR) +// _FROMWFILE is paired with a filename (LPWSTR) +// _FROMRESOURCE is paired with a (D3DXF_FILELOADRESOUCE*) description. +// _FROMMEMORY is paired with a (D3DXF_FILELOADMEMORY*) description. +//---------------------------------------------------------------------------- +typedef DWORD D3DXF_FILELOADOPTIONS; + +#define D3DXF_FILELOAD_FROMFILE 0x00L +#define D3DXF_FILELOAD_FROMWFILE 0x01L +#define D3DXF_FILELOAD_FROMRESOURCE 0x02L +#define D3DXF_FILELOAD_FROMMEMORY 0x03L + +//---------------------------------------------------------------------------- +// D3DXF_FILELOADRESOURCE: +//---------------------------------------------------------------------------- + +typedef struct _D3DXF_FILELOADRESOURCE +{ + HMODULE hModule; // Desc + LPCSTR lpName; // Desc + LPCSTR lpType; // Desc +} D3DXF_FILELOADRESOURCE; + +//---------------------------------------------------------------------------- +// D3DXF_FILELOADMEMORY: +//---------------------------------------------------------------------------- + +typedef struct _D3DXF_FILELOADMEMORY +{ + LPCVOID lpMemory; // Desc + SIZE_T dSize; // Desc +} D3DXF_FILELOADMEMORY; + +#if defined( _WIN32 ) && !defined( _NO_COM ) + +// {cef08cf9-7b4f-4429-9624-2a690a933201} +DEFINE_GUID( IID_ID3DXFile, +0xcef08cf9, 0x7b4f, 0x4429, 0x96, 0x24, 0x2a, 0x69, 0x0a, 0x93, 0x32, 0x01 ); + +// {cef08cfa-7b4f-4429-9624-2a690a933201} +DEFINE_GUID( IID_ID3DXFileSaveObject, +0xcef08cfa, 0x7b4f, 0x4429, 0x96, 0x24, 0x2a, 0x69, 0x0a, 0x93, 0x32, 0x01 ); + +// {cef08cfb-7b4f-4429-9624-2a690a933201} +DEFINE_GUID( IID_ID3DXFileSaveData, +0xcef08cfb, 0x7b4f, 0x4429, 0x96, 0x24, 0x2a, 0x69, 0x0a, 0x93, 0x32, 0x01 ); + +// {cef08cfc-7b4f-4429-9624-2a690a933201} +DEFINE_GUID( IID_ID3DXFileEnumObject, +0xcef08cfc, 0x7b4f, 0x4429, 0x96, 0x24, 0x2a, 0x69, 0x0a, 0x93, 0x32, 0x01 ); + +// {cef08cfd-7b4f-4429-9624-2a690a933201} +DEFINE_GUID( IID_ID3DXFileData, +0xcef08cfd, 0x7b4f, 0x4429, 0x96, 0x24, 0x2a, 0x69, 0x0a, 0x93, 0x32, 0x01 ); + +#endif // defined( _WIN32 ) && !defined( _NO_COM ) + +#if defined( __cplusplus ) +#if !defined( DECLSPEC_UUID ) +#if _MSC_VER >= 1100 +#define DECLSPEC_UUID( x ) __declspec( uuid( x ) ) +#else // !( _MSC_VER >= 1100 ) +#define DECLSPEC_UUID( x ) +#endif // !( _MSC_VER >= 1100 ) +#endif // !defined( DECLSPEC_UUID ) + +interface DECLSPEC_UUID( "cef08cf9-7b4f-4429-9624-2a690a933201" ) + ID3DXFile; +interface DECLSPEC_UUID( "cef08cfa-7b4f-4429-9624-2a690a933201" ) + ID3DXFileSaveObject; +interface DECLSPEC_UUID( "cef08cfb-7b4f-4429-9624-2a690a933201" ) + ID3DXFileSaveData; +interface DECLSPEC_UUID( "cef08cfc-7b4f-4429-9624-2a690a933201" ) + ID3DXFileEnumObject; +interface DECLSPEC_UUID( "cef08cfd-7b4f-4429-9624-2a690a933201" ) + ID3DXFileData; + +#if defined( _COM_SMARTPTR_TYPEDEF ) +_COM_SMARTPTR_TYPEDEF( ID3DXFile, + __uuidof( ID3DXFile ) ); +_COM_SMARTPTR_TYPEDEF( ID3DXFileSaveObject, + __uuidof( ID3DXFileSaveObject ) ); +_COM_SMARTPTR_TYPEDEF( ID3DXFileSaveData, + __uuidof( ID3DXFileSaveData ) ); +_COM_SMARTPTR_TYPEDEF( ID3DXFileEnumObject, + __uuidof( ID3DXFileEnumObject ) ); +_COM_SMARTPTR_TYPEDEF( ID3DXFileData, + __uuidof( ID3DXFileData ) ); +#endif // defined( _COM_SMARTPTR_TYPEDEF ) +#endif // defined( __cplusplus ) + +typedef interface ID3DXFile ID3DXFile; +typedef interface ID3DXFileSaveObject ID3DXFileSaveObject; +typedef interface ID3DXFileSaveData ID3DXFileSaveData; +typedef interface ID3DXFileEnumObject ID3DXFileEnumObject; +typedef interface ID3DXFileData ID3DXFileData; + +////////////////////////////////////////////////////////////////////////////// +// ID3DXFile ///////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// + +#undef INTERFACE +#define INTERFACE ID3DXFile + +DECLARE_INTERFACE_( ID3DXFile, IUnknown ) +{ + STDMETHOD( QueryInterface )( THIS_ REFIID, LPVOID* ) PURE; + STDMETHOD_( ULONG, AddRef )( THIS ) PURE; + STDMETHOD_( ULONG, Release )( THIS ) PURE; + + STDMETHOD( CreateEnumObject )( THIS_ LPCVOID, D3DXF_FILELOADOPTIONS, + ID3DXFileEnumObject** ) PURE; + STDMETHOD( CreateSaveObject )( THIS_ LPCVOID, D3DXF_FILESAVEOPTIONS, + D3DXF_FILEFORMAT, ID3DXFileSaveObject** ) PURE; + STDMETHOD( RegisterTemplates )( THIS_ LPCVOID, SIZE_T ) PURE; + STDMETHOD( RegisterEnumTemplates )( THIS_ ID3DXFileEnumObject* ) PURE; +}; + +////////////////////////////////////////////////////////////////////////////// +// ID3DXFileSaveObject /////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// + +#undef INTERFACE +#define INTERFACE ID3DXFileSaveObject + +DECLARE_INTERFACE_( ID3DXFileSaveObject, IUnknown ) +{ + STDMETHOD( QueryInterface )( THIS_ REFIID, LPVOID* ) PURE; + STDMETHOD_( ULONG, AddRef )( THIS ) PURE; + STDMETHOD_( ULONG, Release )( THIS ) PURE; + + STDMETHOD( GetFile )( THIS_ ID3DXFile** ) PURE; + STDMETHOD( AddDataObject )( THIS_ REFGUID, LPCSTR, CONST GUID*, + SIZE_T, LPCVOID, ID3DXFileSaveData** ) PURE; + STDMETHOD( Save )( THIS ) PURE; +}; + +////////////////////////////////////////////////////////////////////////////// +// ID3DXFileSaveData ///////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// + +#undef INTERFACE +#define INTERFACE ID3DXFileSaveData + +DECLARE_INTERFACE_( ID3DXFileSaveData, IUnknown ) +{ + STDMETHOD( QueryInterface )( THIS_ REFIID, LPVOID* ) PURE; + STDMETHOD_( ULONG, AddRef )( THIS ) PURE; + STDMETHOD_( ULONG, Release )( THIS ) PURE; + + STDMETHOD( GetSave )( THIS_ ID3DXFileSaveObject** ) PURE; + STDMETHOD( GetName )( THIS_ LPSTR, SIZE_T* ) PURE; + STDMETHOD( GetId )( THIS_ LPGUID ) PURE; + STDMETHOD( GetType )( THIS_ GUID* ) PURE; + STDMETHOD( AddDataObject )( THIS_ REFGUID, LPCSTR, CONST GUID*, + SIZE_T, LPCVOID, ID3DXFileSaveData** ) PURE; + STDMETHOD( AddDataReference )( THIS_ LPCSTR, CONST GUID* ) PURE; +}; + +////////////////////////////////////////////////////////////////////////////// +// ID3DXFileEnumObject /////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// + +#undef INTERFACE +#define INTERFACE ID3DXFileEnumObject + +DECLARE_INTERFACE_( ID3DXFileEnumObject, IUnknown ) +{ + STDMETHOD( QueryInterface )( THIS_ REFIID, LPVOID* ) PURE; + STDMETHOD_( ULONG, AddRef )( THIS ) PURE; + STDMETHOD_( ULONG, Release )( THIS ) PURE; + + STDMETHOD( GetFile )( THIS_ ID3DXFile** ) PURE; + STDMETHOD( GetChildren )( THIS_ SIZE_T* ) PURE; + STDMETHOD( GetChild )( THIS_ SIZE_T, ID3DXFileData** ) PURE; + STDMETHOD( GetDataObjectById )( THIS_ REFGUID, ID3DXFileData** ) PURE; + STDMETHOD( GetDataObjectByName )( THIS_ LPCSTR, ID3DXFileData** ) PURE; +}; + +////////////////////////////////////////////////////////////////////////////// +// ID3DXFileData ///////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// + +#undef INTERFACE +#define INTERFACE ID3DXFileData + +DECLARE_INTERFACE_( ID3DXFileData, IUnknown ) +{ + STDMETHOD( QueryInterface )( THIS_ REFIID, LPVOID* ) PURE; + STDMETHOD_( ULONG, AddRef )( THIS ) PURE; + STDMETHOD_( ULONG, Release )( THIS ) PURE; + + STDMETHOD( GetEnum )( THIS_ ID3DXFileEnumObject** ) PURE; + STDMETHOD( GetName )( THIS_ LPSTR, SIZE_T* ) PURE; + STDMETHOD( GetId )( THIS_ LPGUID ) PURE; + STDMETHOD( Lock )( THIS_ SIZE_T*, LPCVOID* ) PURE; + STDMETHOD( Unlock )( THIS ) PURE; + STDMETHOD( GetType )( THIS_ GUID* ) PURE; + STDMETHOD_( BOOL, IsReference )( THIS ) PURE; + STDMETHOD( GetChildren )( THIS_ SIZE_T* ) PURE; + STDMETHOD( GetChild )( THIS_ SIZE_T, ID3DXFileData** ) PURE; +}; + +STDAPI D3DXFileCreate( ID3DXFile** lplpDirectXFile ); + +/* + * DirectX File errors. + */ + +#define _FACD3DXF 0x876 + +#define D3DXFERR_BADOBJECT MAKE_HRESULT( 1, _FACD3DXF, 900 ) +#define D3DXFERR_BADVALUE MAKE_HRESULT( 1, _FACD3DXF, 901 ) +#define D3DXFERR_BADTYPE MAKE_HRESULT( 1, _FACD3DXF, 902 ) +#define D3DXFERR_NOTFOUND MAKE_HRESULT( 1, _FACD3DXF, 903 ) +#define D3DXFERR_NOTDONEYET MAKE_HRESULT( 1, _FACD3DXF, 904 ) +#define D3DXFERR_FILENOTFOUND MAKE_HRESULT( 1, _FACD3DXF, 905 ) +#define D3DXFERR_RESOURCENOTFOUND MAKE_HRESULT( 1, _FACD3DXF, 906 ) +#define D3DXFERR_BADRESOURCE MAKE_HRESULT( 1, _FACD3DXF, 907 ) +#define D3DXFERR_BADFILETYPE MAKE_HRESULT( 1, _FACD3DXF, 908 ) +#define D3DXFERR_BADFILEVERSION MAKE_HRESULT( 1, _FACD3DXF, 909 ) +#define D3DXFERR_BADFILEFLOATSIZE MAKE_HRESULT( 1, _FACD3DXF, 910 ) +#define D3DXFERR_BADFILE MAKE_HRESULT( 1, _FACD3DXF, 911 ) +#define D3DXFERR_PARSEERROR MAKE_HRESULT( 1, _FACD3DXF, 912 ) +#define D3DXFERR_BADARRAYSIZE MAKE_HRESULT( 1, _FACD3DXF, 913 ) +#define D3DXFERR_BADDATAREFERENCE MAKE_HRESULT( 1, _FACD3DXF, 914 ) +#define D3DXFERR_NOMOREOBJECTS MAKE_HRESULT( 1, _FACD3DXF, 915 ) +#define D3DXFERR_NOMOREDATA MAKE_HRESULT( 1, _FACD3DXF, 916 ) +#define D3DXFERR_BADCACHEFILE MAKE_HRESULT( 1, _FACD3DXF, 917 ) + +/* + * DirectX File object types. + */ + +#ifndef WIN_TYPES +#define WIN_TYPES(itype, ptype) typedef interface itype *LP##ptype, **LPLP##ptype +#endif + +WIN_TYPES(ID3DXFile, D3DXFILE); +WIN_TYPES(ID3DXFileEnumObject, D3DXFILEENUMOBJECT); +WIN_TYPES(ID3DXFileSaveObject, D3DXFILESAVEOBJECT); +WIN_TYPES(ID3DXFileData, D3DXFILEDATA); +WIN_TYPES(ID3DXFileSaveData, D3DXFILESAVEDATA); + +#if defined( __cplusplus ) +} // extern "C" +#endif // defined( __cplusplus ) + +#endif // !defined( __D3DX9XOF_H__ ) + + diff --git a/videoInputSrcAndDemos/libs/DShow/Include/d3dxcore.h b/videoInputSrcAndDemos/libs/DShow/Include/d3dxcore.h index 84f992c..da1e989 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/d3dxcore.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/d3dxcore.h @@ -1,1027 +1,1027 @@ -/////////////////////////////////////////////////////////////////////////// -// -// Copyright (C) Microsoft Corporation. All Rights Reserved. -// -// File: d3dxcore.h -// Content: D3DX core types and functions -// -/////////////////////////////////////////////////////////////////////////// - -#ifndef __D3DXCORE_H__ -#define __D3DXCORE_H__ - -#include -#include -#include "d3dxerr.h" - - -typedef struct ID3DXContext *LPD3DXCONTEXT; - -// {9B74ED7A-BBEF-11d2-9F8E-0000F8080835} -DEFINE_GUID(IID_ID3DXContext, - 0x9b74ed7a, 0xbbef, 0x11d2, 0x9f, 0x8e, 0x0, 0x0, 0xf8, 0x8, 0x8, 0x35); - - -/////////////////////////////////////////////////////////////////////////// -// Defines and Enumerators used below: -/////////////////////////////////////////////////////////////////////////// - -//------------------------------------------------------------------------- -// D3DX_DEFAULT: -// --------- -// A predefined value that could be used for any parameter in D3DX APIs or -// member functions that is an enumerant or a handle. The D3DX -// documentation indicates wherever D3DX_DEFAULT may be used, -// and how it will be interpreted in each situation. -//------------------------------------------------------------------------- -#define D3DX_DEFAULT ULONG_MAX - -//------------------------------------------------------------------------- -// D3DX_DEFAULT_FLOAT: -// ------------------ -// Similar to D3DX_DEFAULT, but used for floating point parameters. -// The D3DX documentation indicates wherever D3DX_DEFAULT_FLOAT may be used, -// and how it will be interpreted in each situation. -//------------------------------------------------------------------------- -#define D3DX_DEFAULT_FLOAT FLT_MAX - -//------------------------------------------------------------------------- -// Hardware Acceleration Level: -// --------------------------- -// These constants represent pre-defined hardware acceleration levels, -// and may be used as a default anywhere a (DWORD) deviceIndex is required. -// Each pre-define indicates a different level of hardware acceleration. -// They are an alternative to using explicit deviceIndices retrieved by -// D3DXGetDeviceDescription(). -// -// The only case these pre-defines should be used as device indices is if -// a particular level of acceleration is required, and given more than -// one capable device on the computer, it does not matter which one -// is used. -// -// The method of selection is as follows: If one of the D3DX devices on -// the primary DDraw device supports a requested hardware acceleration -// level, it will be used. Otherwise, the first matching device discovered -// by D3DX will be used. -// -// Of course, it is possible for no match to exist for any of the -// pre-defines on a particular computer. Passing such a value into the -// D3DX apis will simply cause them to fail, reporting that no match -// is available. -// -// D3DX_HWLEVEL_NULL: Null implementation (draws nothing) -// D3DX_HWLEVEL_REFERENCE: Reference implementation (slowest) -// D3DX_HWLEVEL_2D: 2D acceleration only (RGB rasterizer used) -// D3DX_HWLEVEL_RASTER: Rasterization acceleration (likely most useful) -// D3DX_HWLEVEL_TL: Transform and lighting acceleration -// D3DX_DEFAULT: The highest level of acceleration available -// on the primary DDraw device. -//------------------------------------------------------------------------- -#define D3DX_HWLEVEL_NULL (D3DX_DEFAULT - 1) -#define D3DX_HWLEVEL_REFERENCE (D3DX_DEFAULT - 2) -#define D3DX_HWLEVEL_2D (D3DX_DEFAULT - 3) -#define D3DX_HWLEVEL_RASTER (D3DX_DEFAULT - 4) -#define D3DX_HWLEVEL_TL (D3DX_DEFAULT - 5) - -//------------------------------------------------------------------------- -// Surface Class: -// ------------- -// These are the various types of 2D-surfaces classified according to their -// usage. Note that a number of them overlap. e.g. STENCILBUFFERS and -// DEPTHBUFFERS overlap (since in DX7 implementation the stencil and depth -// bits are part of the same pixel format). -// -// Mapping to the DX7 DDPIXELFORMAT concepts: -// ----------------------------------------- -// D3DX_SC_DEPTHBUFFER: All ddpfs which have the DDPF_ZPIXELS or the -// DDPF_ZBUFFER flags set. -// D3DX_SC_STENCILBUFFER: All ddpfs which have the DDPF_STENCILBUFFER -// flag set. -// D3DX_SC_BUMPMAP: All ddpfs which have the DDPF_BUMPLUMINANCE -// or the DDPF_BUMPDUDV flags set. -// D3DX_SC_LUMINANCEMAP: All ddpfs which have the DDPF_BUMPLUMINANCE -// or the DDPF_LUMINANCE flags set. -// D3DX_SC_COLORTEXTURE: All the surfaces that have color information in -// them and can be used for texturing. -// D3DX_SC_COLORRENDERTGT: All the surfaces that contain color -// information and can be used as render targets. -//------------------------------------------------------------------------- -#define D3DX_SC_DEPTHBUFFER 0x01 -#define D3DX_SC_STENCILBUFFER 0x02 -#define D3DX_SC_COLORTEXTURE 0x04 -#define D3DX_SC_BUMPMAP 0x08 -#define D3DX_SC_LUMINANCEMAP 0x10 -#define D3DX_SC_COLORRENDERTGT 0x20 - -//------------------------------------------------------------------------- -// Surface Formats: -// --------------- -// These are the various types of surface formats that can be enumerated, -// there is no DDPIXELFORMAT structure in D3DX, the enums carry the meaning -// (like FOURCCs). -// -// All the surface classes are represented here. -// -//------------------------------------------------------------------------- -typedef enum _D3DX_SURFACEFORMAT -{ - D3DX_SF_UNKNOWN = 0, - D3DX_SF_R8G8B8 = 1, - D3DX_SF_A8R8G8B8 = 2, - D3DX_SF_X8R8G8B8 = 3, - D3DX_SF_R5G6B5 = 4, - D3DX_SF_R5G5B5 = 5, - D3DX_SF_PALETTE4 = 6, - D3DX_SF_PALETTE8 = 7, - D3DX_SF_A1R5G5B5 = 8, - D3DX_SF_X4R4G4B4 = 9, - D3DX_SF_A4R4G4B4 =10, - D3DX_SF_L8 =11, // 8 bit luminance-only - D3DX_SF_A8L8 =12, // 16 bit alpha-luminance - D3DX_SF_U8V8 =13, // 16 bit bump map format - D3DX_SF_U5V5L6 =14, // 16 bit bump map format with luminance - D3DX_SF_U8V8L8 =15, // 24 bit bump map format with luminance - D3DX_SF_UYVY =16, // UYVY format (PC98 compliance) - D3DX_SF_YUY2 =17, // YUY2 format (PC98 compliance) - D3DX_SF_DXT1 =18, // S3 texture compression technique 1 - D3DX_SF_DXT3 =19, // S3 texture compression technique 3 - D3DX_SF_DXT5 =20, // S3 texture compression technique 5 - D3DX_SF_R3G3B2 =21, // 8 bit RGB texture format - D3DX_SF_A8 =22, // 8 bit alpha-only - D3DX_SF_TEXTUREMAX =23, // Last texture format - - D3DX_SF_Z16S0 =256, - D3DX_SF_Z32S0 =257, - D3DX_SF_Z15S1 =258, - D3DX_SF_Z24S8 =259, - D3DX_SF_S1Z15 =260, - D3DX_SF_S8Z24 =261, - D3DX_SF_DEPTHMAX =262, // Last depth format - - D3DX_SF_FORCEMAX = (DWORD)(-1) -} D3DX_SURFACEFORMAT; - -//------------------------------------------------------------------------- -// Filtering types for Texture APIs -// -// ------------- -// These are the various filter types for generation of mip-maps -// -// D3DX_FILTERTYPE -// ----------------------------------------- -// D3DX_FT_POINT: Point sampling only - no filtering -// D3DX_FT_LINEAR: Bi-linear filtering -// -//------------------------------------------------------------------------- -typedef enum _D3DX_FILTERTYPE -{ - D3DX_FT_POINT = 0x01, - D3DX_FT_LINEAR = 0x02, - D3DX_FT_DEFAULT = D3DX_DEFAULT -} D3DX_FILTERTYPE; - -/////////////////////////////////////////////////////////////////////////// -// Structures used below: -/////////////////////////////////////////////////////////////////////////// - -//------------------------------------------------------------------------- -// D3DX_VIDMODEDESC: Display mode description. -// ---------------- -// width: Screen Width -// height: Screen Height -// bpp: Bits per pixel -// refreshRate: Refresh rate -//------------------------------------------------------------------------- -typedef struct _D3DX_VIDMODEDESC -{ - DWORD width; - DWORD height; - DWORD bpp; - DWORD refreshRate; -} D3DX_VIDMODEDESC; - -//------------------------------------------------------------------------- -// D3DX_DEVICEDESC: Description of a device that can do 3D -// --------------- -// deviceIndex: Unique (DWORD) number for the device. -// hwLevel: Level of acceleration afforded. This is one of the -// predefined Device Indices, and exists in this -// structure for informational purposes only. More than -// one device on the system may have the same hwLevel. -// To refer to a particular device with the D3DX apis, -// use the value in the deviceIndex member instead. -// ddGuid: The ddraw GUID -// d3dDeviceGuid: Direct3D Device GUID -// ddDeviceID: DDraw's GetDeviceIdentifier GUID. This GUID is unique to -// a particular driver revision on a particular video card. -// driverDesc: String describing the driver -// monitor: Handle to the video monitor used by this device (multimon -// specific). Devices that use different monitors on a -// multimon system report different values in this field. -// Therefore, to test for a multimon system, an application -// should look for more than one different monitor handle in -// the list of D3DX devices. -// onPrimary: Indicates if this device is on the primary monitor -// (multimon specific). -//------------------------------------------------------------------------- -#define D3DX_DRIVERDESC_LENGTH 256 - -typedef struct _D3DX_DEVICEDESC -{ - DWORD deviceIndex; - DWORD hwLevel; - GUID ddGuid; - GUID d3dDeviceGuid; - GUID ddDeviceID; - char driverDesc[D3DX_DRIVERDESC_LENGTH]; - HMONITOR monitor; - BOOL onPrimary; -} D3DX_DEVICEDESC; - -/////////////////////////////////////////////////////////////////////////// -// APIs: -/////////////////////////////////////////////////////////////////////////// -#ifdef __cplusplus -extern "C" { -#endif //__cplusplus - -//------------------------------------------------------------------------- -// D3DXInitialize: The very first call a D3DX app must make. -//------------------------------------------------------------------------- -HRESULT WINAPI - D3DXInitialize(); - -//------------------------------------------------------------------------- -// D3DXUninitialize: The very last call a D3DX app must make. -//------------------------------------------------------------------------- -HRESULT WINAPI - D3DXUninitialize(); - -//------------------------------------------------------------------------- -// D3DXGetDeviceCount: Returns the maximum number of D3DXdevices -// ------------------ available. -// -// D3DXGetDeviceDescription: Lists the 2D and 3D capabilities of the devices. -// ------------------------ Also, the various guids needed by ddraw and d3d. -// -// Params: -// [in] DWORD deviceIndex: Which device? Starts at 0. -// [in] D3DX_DEVICEDESC* pd3dxDevice: Pointer to the D3DX_DEVICEDESC -// structure to be filled in. -//------------------------------------------------------------------------- -DWORD WINAPI - D3DXGetDeviceCount(); - -HRESULT WINAPI - D3DXGetDeviceDescription(DWORD deviceIndex, - D3DX_DEVICEDESC* pd3dxDeviceDesc); - -//------------------------------------------------------------------------- -// D3DXGetMaxNumVideoModes: Returns the maximum number of video-modes . -// ----------------------- -// -// Params: -// [in] DWORD deviceIndex: The device being referred to. -// [in] DWORD flags: If D3DX_GVM_REFRESHRATE is set, then the refresh -// rates are not ignored. -// -// D3DXGetVideoMode: Describes a particular video mode for this device -// ---------------- -// -// Note: These queries will simply give you a list of modes that the -// display adapter tells DirectX that it supports. -// There is no guarantee that D3DXCreateContext(Ex) will succeed -// with all listed video modes. This is a fundamental limitation -// of the current DirectX architecture which D3DX cannot hide in -// any clean way. -// -// Params: -// [in] DWORD deviceIndex: The device being referred to. -// [in] DWORD flags: If D3DX_GVM_REFRESHRATE is set, then the refresh -// rates are returned -// [in] DWORD which: Which VideoMode ? Starts at 0. -// [out] D3DX_VIDMODEDESC* pModeList: Pointer to the D3DX_VIDMODEDESC -// structure that will be filled in. -//------------------------------------------------------------------------- -DWORD WINAPI - D3DXGetMaxNumVideoModes(DWORD deviceIndex, - DWORD flags); - -HRESULT WINAPI - D3DXGetVideoMode(DWORD deviceIndex, - DWORD flags, - DWORD modeIndex, - D3DX_VIDMODEDESC* pModeDesc); - -#define D3DX_GVM_REFRESHRATE 0x00000001 -//------------------------------------------------------------------------- -// D3DXGetMaxSurfaceFormats: Returns the maximum number of surface -// ------------------------ formats supported by the device at that -// video mode. -// -// D3DXGetSurfaceFormat: Describes one of the supported surface formats. -// --------------------- -// -// Params: -// [in] DWORD deviceIndex: The device being referred to. -// [in] D3DX_VIDMODEDESC* pDesc: The display mode at which the supported -// surface formats are requested. If it is -// NULL, the current display mode is -// assumed. -// [in] DWORD surfClassFlags: Required surface classes. Only surface -// formats which support all specified -// surface classes will be returned. -// (Multiple surface classes may be specified -// using bitwise OR.) -// [in] DWORD which: Which surface formats to retrieve. Starts at 0. -// [out] D3DX_SURFACEFORMAT* pFormat: The surface format -//------------------------------------------------------------------------- -DWORD WINAPI - D3DXGetMaxSurfaceFormats(DWORD deviceIndex, - D3DX_VIDMODEDESC* pDesc, - DWORD surfClassFlags); -HRESULT WINAPI - D3DXGetSurfaceFormat(DWORD deviceIndex, - D3DX_VIDMODEDESC* pDesc, - DWORD surfClassFlags, - DWORD surfaceIndex, - D3DX_SURFACEFORMAT* pFormat); - - -//------------------------------------------------------------------------- -// D3DXGetCurrentVideoMode: Retrieves the current video mode for this device. -// ------------------- -// -// Params: -// [in] DWORD deviceIndex: The device being referred to. -// [out] D3DX_VIDMODEDESC* pVidMode: The current video mode -//------------------------------------------------------------------------- -HRESULT WINAPI - D3DXGetCurrentVideoMode(DWORD deviceIndex, - D3DX_VIDMODEDESC* pVidMode); - -//------------------------------------------------------------------------- -// D3DXGetDeviceCaps: Lists all the capabilities of a device at a display -// mode. -// ---------------- -// -// Params: -// [in] DWORD deviceIndex: The device being referred to. -// [in] D3DX_VIDMODEDESC* pDesc: If this is NULL, we will return the -// caps at the current display mode of -// the device. -// [out] D3DDEVICEDESC7* pD3DDeviceDesc7: D3D Caps ( NULL to ignore -// parameter) -// [out] DDCAPS7* pDDHalCaps: DDraw HAL Caps (NULL to ignore parameter) -// [out] DDCAPS7* pDDHelCaps: DDraw HEL Caps (NULL to ignore paramter) -//------------------------------------------------------------------------- -HRESULT WINAPI - D3DXGetDeviceCaps(DWORD deviceIndex, - D3DX_VIDMODEDESC* pVidMode, - D3DDEVICEDESC7* pD3DCaps, - DDCAPS* pDDHALCaps, - DDCAPS* pDDHELCaps); - -//------------------------------------------------------------------------- -// D3DXCreateContext: Initializes the chosen device. It is the simplest init -// ----------------- function available. Parameters are treated the same -// as the matching subset of parameters in -// D3DXCreateContextEx, documented below. -// Remaining D3DXCreateContextEx parameters that are -// not present in D3DXCreateContext are treated as -// D3DX_DEFAULT. Note that multimon is not supported -// with D3DXCreateContext. -// -// D3DXCreateContextEx: A more advanced function to initialize the device. -// ------------------- Also accepts D3DX_DEFAULT for most of the parameters -// and then will do what D3DXCreateContext did. -// -// Note: Do not expect D3DXCreateContext(Ex) to be fail-safe (as with any -// API). Supported device capablilites should be used as a guide -// for choosing parameter values. Keep in mind that there will -// inevitably be some combinations of parameters that just do not work. -// -// Params: -// [in] DWORD deviceIndex: The device being referred to. -// [in] DWORD flags: The valid flags are D3DX_CONTEXT_FULLSCREEN, and -// D3DX_CONTEXT_OFFSCREEN. These flags cannot both -// be specified. If no flags are specified, the -// context defaults to windowed mode. -// -// [in] HWND hwnd: Device window. See note. -// [in] HWND hwndFocus: Window which receives keyboard messages from -// the device window. The device window should be -// a child of focus window. Useful for multimon -// applications. See note. -// NOTE: -// windowed: -// hwnd must be a valid window. hwndFocus must be NULL or -// D3DX_DEFAULT. -// -// fullscreen: -// Either hwnd or hwndFocus must be a valid window. (Both cannot -// be NULL or D3DX_DEFAULT). If hwnd is NULL or D3DX_DEFAULT, -// a default device window will be created as a child of hwndFocus. -// -// offscreen: -// Both hwnd and hwndFocus must be NULL or D3DX_DEFAULT -// -// [in] DWORD numColorBits: If D3DX_DEFAULT is passed for windowed mode, -// the current desktop's color depth is chosen. -// For full screen mode, D3DX_DEFAULT causes 16 -// bit color to be used. -// [in] DWORD numAlphaBits: If D3DX_DEFAULT is passed, 0 is chosen. -// [in] DWORD numDepthbits: If D3DX_DEFAULT is passed, -// the highest available number of depth bits -// is chosen. See note. -// [in] DWORD numStencilBits: If D3DX_DEFAULT is passed, the highest -// available number of stencil bits is chosen. -// See note. -// -// NOTE: If both numDepthBits and numStencilBits are D3DX_DEFAULT, -// D3DX first picks the highest available number of stencil -// bits. Then, for the chosen number of stencil bits, -// the highest available number of depth bits is chosen. -// If only one of numStencilBits or numDepthBits -// is D3DX_DEFAULT, the highest number of bits available -// for this parameter is chosen out of only the formats -// that support the number of bits requested for the -// fixed parameter. -// -// [in] DWORD numBackBuffers: Number of back buffers, or D3DX_DEFAULT. -// See note. -// -// NOTE: -// windowed: D3DX_DEFAULT means 1. You must specify one back buffer. -// -// fullscreen: D3DX_DEFAULT means 1. Any number of back buffers can be -// specified. -// -// offscreen: D3DX_DEFAULT means 0. You cannot specify additional back -// buffers. -// -// [in] DWORD width: Width, in pixels, or D3DX_DEFAULT. See note. -// [in] DWORD height: Height, in pixels, or D3DX_DEFAULT. See note. -// -// NOTE: -// windowed: If either width or height is D3DX_DEFAULT, both values -// default to the dimensions of the client area of hwnd. -// -// fullscreen: If either width or height is D3DX_DEFAULT, width -// defaults to 640, and height defaults to 480. -// -// offscreen: An error is returned if either width or height is -// D3DX_DEFAULT. -// -// [in] DWORD refreshRate: D3DX_DEFAULT means we let ddraw choose for -// us. Ignored for windowed and offscreen modes. -// [out] LPD3DXCONTEXT* ppCtx: This is the Context object that is used for -// rendering on that device. -// -//------------------------------------------------------------------------- -HRESULT WINAPI - D3DXCreateContext(DWORD deviceIndex, - DWORD flags, - HWND hwnd, - DWORD width, - DWORD height, - LPD3DXCONTEXT* ppCtx); - -HRESULT WINAPI - D3DXCreateContextEx(DWORD deviceIndex, - DWORD flags, - HWND hwnd, - HWND hwndFocus, - DWORD numColorBits, - DWORD numAlphaBits, - DWORD numDepthbits, - DWORD numStencilBits, - DWORD numBackBuffers, - DWORD width, - DWORD height, - DWORD refreshRate, - LPD3DXCONTEXT* ppCtx); - -// The D3DXCreateContext(Ex) flags are: -#define D3DX_CONTEXT_FULLSCREEN 0x00000001 -#define D3DX_CONTEXT_OFFSCREEN 0x00000002 - -//------------------------------------------------------------------------- -// D3DXGetErrorString: Prints out the error string given an hresult. Prints -// ------------------ Win32 as well as DX6 error messages besides the D3DX -// messages. -// -// Params: -// [in] HRESULT hr: The error code to be deciphered. -// [in] DWORD strLength: Length of the string passed in. -// [out] LPSTR pStr: The string output. This string of appropriate -// size needs to be passed in. -//------------------------------------------------------------------------- -void WINAPI - D3DXGetErrorString(HRESULT hr, - DWORD strLength, - LPSTR pStr); - -//------------------------------------------------------------------------- -// D3DXMakeDDPixelFormat: Fills in a DDPIXELFORMAT structure based on the -// --------------------- D3DX surface format requested. -// -// Params: -// [in] D3DX_SURFACEFORMAT d3dxFormat: Surface format. -// [out] DDPIXELFORMAT* pddpf: Pixel format matching the given -// surface format. -//------------------------------------------------------------------------- -HRESULT WINAPI - D3DXMakeDDPixelFormat(D3DX_SURFACEFORMAT d3dxFormat, - DDPIXELFORMAT* pddpf); - -//------------------------------------------------------------------------- -// D3DXMakeSurfaceFormat: Determines the surface format corresponding to -// --------------------- a given DDPIXELFORMAT. -// -// Params: -// [in] DDPIXELFORMAT* pddpf: Pixel format. -// Return Value: -// D3DX_SURFACEFORMAT: Surface format matching the given pixel format. -// D3DX_SF_UNKNOWN if the format is not supported -//------------------------------------------------------------------------- -D3DX_SURFACEFORMAT WINAPI - D3DXMakeSurfaceFormat(DDPIXELFORMAT* pddpf); - -#ifdef __cplusplus -} -#endif //__cplusplus - -/////////////////////////////////////////////////////////////////////////// -// Interfaces: -/////////////////////////////////////////////////////////////////////////// - -//------------------------------------------------------------------------- -// ID3DXContext interface: -// -// This encapsulates all the stuff that the app might -// want to do at initialization time and any global control over d3d and -// ddraw. -//------------------------------------------------------------------------- - - -DECLARE_INTERFACE_(ID3DXContext, IUnknown) -{ - // - // IUnknown methods - // - STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID* ppvObj) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - - // Get the DDraw and Direct3D objects to call DirectDraw or - // Direct3D Immediate Mode functions. - // If the objects don't exist (because they have not - // been created for some reason) NULL is returned. - // All the objects returned in the following Get* functions - // are addref'ed. It is the application's responsibility to - // release them when no longer needed. - STDMETHOD_(LPDIRECTDRAW7,GetDD)(THIS) PURE; - STDMETHOD_(LPDIRECT3D7,GetD3D)(THIS) PURE; - STDMETHOD_(LPDIRECT3DDEVICE7,GetD3DDevice)(THIS) PURE; - - // Get the various buffers that get created at the init time - // These are addref'ed as well. It is the application's responsibility - // to release them before the app quits or when it needs a resize. - STDMETHOD_(LPDIRECTDRAWSURFACE7,GetPrimary)(THIS) PURE; - STDMETHOD_(LPDIRECTDRAWSURFACE7,GetZBuffer)(THIS) PURE; - STDMETHOD_(LPDIRECTDRAWSURFACE7,GetBackBuffer)(THIS_ DWORD which) PURE; - - // Get the associated window handles - STDMETHOD_(HWND,GetWindow)(THIS) PURE; - STDMETHOD_(HWND,GetFocusWindow)(THIS) PURE; - - // - // Various Get methods, in case the user had specified default - // parameters - // - STDMETHOD(GetDeviceIndex)(THIS_ - LPDWORD pDeviceIndex, - LPDWORD pHwLevel) PURE; - - STDMETHOD_(DWORD, GetNumBackBuffers)(THIS) PURE; - - STDMETHOD(GetNumBits)(THIS_ - LPDWORD pColorBits, - LPDWORD pDepthBits, - LPDWORD pAlphaBits, - LPDWORD pStencilBits) PURE; - - STDMETHOD(GetBufferSize)(THIS_ - LPDWORD pWidth, - LPDWORD pHeight) PURE; - - // Get the flags that were used to create this context - STDMETHOD_(DWORD, GetCreationFlags)(THIS) PURE; - STDMETHOD_(DWORD, GetRefreshRate)(THIS) PURE; - - // Restoring surfaces in case stuff is lost - STDMETHOD(RestoreSurfaces)(THIS) PURE; - - // Resize all the buffers to the new width and height - STDMETHOD(Resize)(THIS_ DWORD width, DWORD height) PURE; - - // Update the frame using a flip or a blit, - // If the D3DX_UPDATE_NOVSYNC flag is set, blit is used if the - // driver cannot flip without waiting for vsync in full-screen mode. - STDMETHOD(UpdateFrame)(THIS_ DWORD flags) PURE; - - // Render a string at the specified coordinates, with the specified - // colour. This is only provided as a convenience for - // debugging/information during development. - // topLeftX and topLeftY represent the location of the top left corner - // of the string, on the render target. - // The coordinate and color parameters each have a range of 0.0-1.0 - STDMETHOD(DrawDebugText)(THIS_ - float topLeftX, - float topLeftY, - D3DCOLOR color, - LPSTR pString) PURE; - - // Clears to the current viewport - // The following are the valid flags: - // D3DCLEAR_TARGET (to clear the render target ) - // D3DCLEAR_ZBUFFER (to clear the depth-buffer ) - // D3DCLEAR_STENCIL (to clear the stencil-buffer ) - STDMETHOD(Clear)(THIS_ DWORD ClearFlags) PURE; - - STDMETHOD(SetClearColor)(THIS_ D3DCOLOR color ) PURE; - STDMETHOD(SetClearDepth)(THIS_ float z) PURE; - STDMETHOD(SetClearStencil)(THIS_ DWORD stencil) PURE; -}; - - -//------------------------------------------------------------------------- -// Flags for Update member function: -// - -// Flag to indicate that blit should be used instead of a flip -// for full-screen rendering. -#define D3DX_UPDATE_NOVSYNC (1<<0) - -/////////////////////////////////////////////////////////////////////////// -// Texturing APIs: -/////////////////////////////////////////////////////////////////////////// -#ifdef __cplusplus -extern "C" { -#endif //__cplusplus - -//------------------------------------------------------------------------- -// D3DXCheckTextureRequirements: Return information about texture creation -// ---------------------------- (used by CreateTexture, CreateTextureFromFile -// and CreateCubeMapTexture) -// -// Parameters: -// -// pd3dDevice -// The D3D device with which the texture is going to be used. -// pFlags -// allows specification of D3DX_TEXTURE_NOMIPMAP -// D3DX_TEXTURE_NOMIPMAP may be returned in the case where mipmap creation -// is not supported. -// pWidth -// width in pixels or NULL -// returns corrected width -// pHeight -// height in pixels or NULL -// returns corrected height -// pPixelFormat -// surface format -// returns best match to input format -// -// Notes: 1. Unless the flags is set to specifically prevent creating -// mipmaps, mipmaps are generated all the way till 1x1 surface. -// 2. width, height and pixelformat are altered based on available -// hardware. For example: -// a. Texture dimensions may be required to be powers of 2 -// b. We may require width == height for some devices -// c. If PixelFormat is unavailable, a best fit is made -//------------------------------------------------------------------------- -HRESULT WINAPI - D3DXCheckTextureRequirements( LPDIRECT3DDEVICE7 pd3dDevice, - LPDWORD pFlags, - LPDWORD pWidth, - LPDWORD pHeight, - D3DX_SURFACEFORMAT* pPixelFormat); - -//------------------------------------------------------------------------- -// D3DXCreateTexture: Create an empty texture object -// ----------------- -// -// Parameters: -// -// pd3dDevice -// The D3D device with which the texture is going to be used. -// pFlags -// allows specification of D3DX_TEXTURE_NOMIPMAP -// D3DX_TEXTURE_NOMIPMAP may be returned in the case where mipmap creation -// is not supported. Additionally, D3DX_TEXTURE_STAGE can be specified -// to indicate which texture stage the texture is for e.g. -// D3D_TEXTURE_STAGE1 indicates that the texture is for use with texture -// stage one. Stage Zero is the default if no TEXTURE_STAGE flags are -// set. -// pWidth -// width in pixels; 0 or NULL is unacceptable -// returns corrected width -// pHeight -// height in pixels; 0 or NULL is unacceptable -// returns corrected height -// pPixelFormat -// surface format. D3DX_DEFAULT is unacceptable. -// returns actual format that was used -// pDDPal -// DDraw palette that is set (if present) on paletted surfaces. -// It is ignored even if it is set, for non-paletted surfaces. -// ppDDSurf -// The ddraw surface that will be created -// pNumMipMaps -// the number of mipmaps actually generated -// -// Notes: See notes for D3DXCheckTextureRequirements. -//------------------------------------------------------------------------- -HRESULT WINAPI - D3DXCreateTexture( LPDIRECT3DDEVICE7 pd3dDevice, - LPDWORD pFlags, - LPDWORD pWidth, - LPDWORD pHeight, - D3DX_SURFACEFORMAT* pPixelFormat, - LPDIRECTDRAWPALETTE pDDPal, - LPDIRECTDRAWSURFACE7* ppDDSurf, - LPDWORD pNumMipMaps); - -//------------------------------------------------------------------------- -// D3DXCreateCubeMapTexture: Create blank cube-map texture -// ------------------------ -// -// Parameters: -// -// pd3dDevice -// The D3D device with which the texture is going to be used. -// pFlags -// allows specification of D3DX_TEXTURE_NOMIPMAP -// D3DX_TEXTURE_NOMIPMAP may be returned in the case where mipmap creation -// is not supported. Additionally, D3DX_TEXTURE_STAGE can be specified -// to indicate which texture stage the texture is for e.g. -// D3D_TEXTURE_STAGE1 indicates that the texture is for use with texture -// stage one. Stage Zero is the default if no TEXTURE_STAGE flags are -// set. -// cubefaces -// allows specification of which faces of the cube-map to generate. -// D3DX_DEFAULT, 0, and DDSCAPS2_CUBEMAP_ALLFACES all mean -// "create all 6 faces of the cubemap". Any combination of -// DDSCAPS2_CUBEMAP_POSITIVEX, DDSCAPS2_CUBEMAP_NEGATIVEX, -// DDSCAPS2_CUBEMAP_POSITIVEY, DDSCAPS2_CUBEMAP_NEGATIVEY, -// DDSCAPS2_CUBEMAP_POSITIVEZ, or DDSCAPS2_CUBEMAP_NEGATIVEZ, is -// valid. -// colorEmptyFaces -// allows specification of the color to use for the faces that were not -// specified in the cubefaces parameter. -// pWidth -// width in pixels; 0 or NULL is unacceptable -// returns corrected width -// pHeight -// height in pixels; 0 or NULL is unacceptable -// returns corrected height -// pPixelFormat -// surface format. D3DX_DEFAULT is unacceptable. -// returns actual format that was used -// pDDPal -// DDraw palette that is set (if present) on paletted surfaces. -// It is ignored even if it is set, for non-paletted surfaces. -// ppDDSurf -// the ddraw surface that will be created -// pNumMipMaps -// the number of mipmaps generated for a particular face of the -// cubemap. -// -// Notes: See notes for D3DXCheckTextureRequirements. -//------------------------------------------------------------------------- -HRESULT WINAPI - D3DXCreateCubeMapTexture( LPDIRECT3DDEVICE7 pd3dDevice, - LPDWORD pFlags, - DWORD cubefaces, - D3DCOLOR colorEmptyFaces, - LPDWORD pWidth, - LPDWORD pHeight, - D3DX_SURFACEFORMAT *pPixelFormat, - LPDIRECTDRAWPALETTE pDDPal, - LPDIRECTDRAWSURFACE7* ppDDSurf, - LPDWORD pNumMipMaps); - - -//------------------------------------------------------------------------- -// D3DXCreateTextureFromFile: Create a texture object from a file or from the -// ------------------------- resource. Only BMP and DIB are supported from the -// resource portion of the executable. -// -// Parameters: -// -// pd3dDevice -// The D3D device with which the texture is going to be used. -// pFlags -// allows specification of D3DX_TEXTURE_NOMIPMAP -// D3DX_TEXTURE_NOMIPMAP may be returned in the case where mipmap creation -// is not supported. Additionally, D3DX_TEXTURE_STAGE can be specified -// to indicate which texture stage the texture is for e.g. -// D3D_TEXTURE_STAGE1 indicates that the texture is for use with texture -// stage one. Stage Zero is the default if no TEXTURE_STAGE flags are -// set. -// pWidth -// Width in pixels. If 0 or D3DX_DEFAULT, the width will be taken -// from the file -// returns corrected width -// pHeight -// Height in pixels. If 0 or D3DX_DEFAULT, the height will be taken -// from the file -// returns corrected height -// pPixelFormat -// If D3DX_SF_UNKNOWN is passed in, pixel format closest to the bitmap -// will be chosen -// returns actual format that was used -// pDDPal -// DDraw palette that is set (if present) on paletted surfaces. -// It is ignored even if it is set, for non-paletted surfaces. -// ppDDSurf -// The ddraw surface that will be created. -// pNumMipMaps -// The number of mipmaps generated. -// pSrcName -// File name. BMP, DIB, DDS, are supported. -// -// TGA is supported for the following cases: 16, 24, 32bpp direct color and 8bpp palettized. -// Also, 8, 16bpp grayscale is supported. RLE versions of the above -// TGA formats are also supported. ColorKey and Premultiplied Alpha -// are not currently supported for TGA files. -// returns created format -// -// Notes: See notes for D3DXCheckTextureRequirements. -//------------------------------------------------------------------------- -HRESULT WINAPI - D3DXCreateTextureFromFile( LPDIRECT3DDEVICE7 pd3dDevice, - LPDWORD pFlags, - LPDWORD pWidth, - LPDWORD pHeight, - D3DX_SURFACEFORMAT* pPixelFormat, - LPDIRECTDRAWPALETTE pDDPal, - LPDIRECTDRAWSURFACE7* ppDDSurf, - LPDWORD pNumMipMaps, - LPSTR pSrcName, - D3DX_FILTERTYPE filterType); - -//------------------------------------------------------------------------- -// D3DXLoadTextureFromFile: Load from a file into a mipmap level. Doing the -// ----------------------- necessary color conversion and rescaling. File -// format support is identical to -// D3DXCreateTextureFromFile's. -// -// pd3dDevice -// The D3D device with which the texture is going to be used. -// pTexture -// a pointer to a DD7Surface which was created with either -// CreateTextureFromFile or CreateTexture. -// mipMapLevel -// indicates mipmap level -// Note: -// 1. Error if mipmap level doesn't exist -// 2. If D3DX_DEFAULT and equal number of mipmap levels exist -// then all the source mip-levels are loaded -// 3. If the source has mipmaps and the dest doesn't, use the top one -// 4. If the dest has miplevels and source doesn't, we expand -// 5. If there are unequal numbers of miplevels, we expand -// pSrcName -// File name. BMP, DIB, DDS, are supported. -// For details on TGA support, refer to the comments for -// D3DXCreateTextureFromFile -// pSrcRect -// the source rectangle or null (whole surface) -// pDestRect -// the destination rectangle or null (whole surface) -// filterType -// filter used for mipmap generation -//------------------------------------------------------------------------- -HRESULT WINAPI - D3DXLoadTextureFromFile( LPDIRECT3DDEVICE7 pd3dDevice, - LPDIRECTDRAWSURFACE7 pTexture, - DWORD mipMapLevel, - LPSTR pSrcName, - RECT* pSrcRect, - RECT* pDestRect, - D3DX_FILTERTYPE filterType); - -//------------------------------------------------------------------------- -// D3DXLoadTextureFromSurface: Load from a DDraw Surface into a mipmap level. -// -------------------------- Doing the necessary color conversion. -// -// pd3dDevice -// The D3D device with which the texture is going to be used. -// pTexture -// a pointer to a DD7Surface which was created with either -// CreateTextureFromFile or CreateTexture. -// mipMapLevel -// indicates mipmap level -// Note: -// 1. Error if mipmap level doesn't exist -// 2. If D3DX_DEFAULT and equal number of mipmap levels exist -// then all the source mip-levels are loaded -// 3. If the source has mipmaps and the dest doesn't, use the top one -// 4. If the dest has miplevels and source doesn't, we expand -// 5. If there are unequal numbers of miplevels, we expand -// pSurfaceSrc -// the source surface -// pSrcRect -// the source rectangle or null (whole surface) -// pDestRect -// the destination rectangle or null (whole surface) -// filterType -// filter used for mipmap generation -//------------------------------------------------------------------------- -HRESULT WINAPI - D3DXLoadTextureFromSurface( LPDIRECT3DDEVICE7 pd3dDevice, - LPDIRECTDRAWSURFACE7 pTexture, - DWORD mipMapLevel, - LPDIRECTDRAWSURFACE7 pSurfaceSrc, - RECT* pSrcRect, - RECT* pDestRect, - D3DX_FILTERTYPE filterType); - -//------------------------------------------------------------------------- -// D3DXLoadTextureFromMemory: Load a mip level from memory. Doing the necessary -// ------------------------- color conversion. -// -// pd3dDevice -// The D3D device with which the texture is going to be used. -// pTexture -// a pointer to a DD7Surface which was created with either -// CreateTextureFromFile or CreateTexture. -// mipMapLevel -// indicates mipmap level -// Note: -// 1. Error if mipmap level doesn't exist -// 2. If D3DX_DEFAULT and equal number of mipmap levels exist -// then all the source mip-levels are loaded -// 3. If the source has mipmaps and the dest doesn't, use the top one -// 4. If the dest has miplevels and source doesn't, we expand -// 5. If there are unequal numbers of miplevels, we expand -// pMemory -// pointer to source memory from which the texture will be loaded -// pDDPal -// DirectDraw Palette, that the app passes in optionally if the memory is -// supposed to be paletteized. -// srcPixelFormat -// PixelFormat of the source. -// srcPitch -// The pitch of the memory or D3DX_DEFAULT (based on srcPixelFormat) -// pDestRect -// The destination rectangle or null (whole surface) -// filterType -// filter used for mipmap generation -// -// Assumptions: The source (memory) is loaded in full -//------------------------------------------------------------------------- -HRESULT WINAPI - D3DXLoadTextureFromMemory( LPDIRECT3DDEVICE7 pd3dDevice, - LPDIRECTDRAWSURFACE7 pTexture, - DWORD mipMapLevel, - LPVOID pMemory, - LPDIRECTDRAWPALETTE pDDPal, - D3DX_SURFACEFORMAT srcPixelFormat, - DWORD srcPitch, - RECT* pDestRect, - D3DX_FILTERTYPE filterType); - -#ifdef __cplusplus -} -#endif //__cplusplus - -//------------------------------------------------------------------------- -// Flags for texture create functions; applies to -// D3DXCreateTexture, D3DXCreateCubeMapTexture and D3DXCreateTextureFromFile. -// - -// Flag to indicate that mipmap generation is not desired. -#define D3DX_TEXTURE_NOMIPMAP (1 << 8) - -// Flags to indicate which texture stage the texture is -// intended for use with. Specifying the stage is necessary at -// texture creation time for HW devices that expose the -// D3DDEVCAPS_SEPARATETEXTUREMEMORIES bit in their D3DDEVICEDESC -// structure. -#define D3DX_TEXTURE_STAGE0 (0) -#define D3DX_TEXTURE_STAGE1 (1) -#define D3DX_TEXTURE_STAGE2 (2) -#define D3DX_TEXTURE_STAGE3 (3) -#define D3DX_TEXTURE_STAGE4 (4) -#define D3DX_TEXTURE_STAGE5 (5) -#define D3DX_TEXTURE_STAGE6 (6) -#define D3DX_TEXTURE_STAGE7 (7) - -// Mask to extract the texture stage value out of the flags to -// the texture create functions. -#define D3DX_TEXTURE_STAGE_MASK (0x7) - -#endif //__D3DXCORE_H__ +/////////////////////////////////////////////////////////////////////////// +// +// Copyright (C) Microsoft Corporation. All Rights Reserved. +// +// File: d3dxcore.h +// Content: D3DX core types and functions +// +/////////////////////////////////////////////////////////////////////////// + +#ifndef __D3DXCORE_H__ +#define __D3DXCORE_H__ + +#include +#include +#include "d3dxerr.h" + + +typedef struct ID3DXContext *LPD3DXCONTEXT; + +// {9B74ED7A-BBEF-11d2-9F8E-0000F8080835} +DEFINE_GUID(IID_ID3DXContext, + 0x9b74ed7a, 0xbbef, 0x11d2, 0x9f, 0x8e, 0x0, 0x0, 0xf8, 0x8, 0x8, 0x35); + + +/////////////////////////////////////////////////////////////////////////// +// Defines and Enumerators used below: +/////////////////////////////////////////////////////////////////////////// + +//------------------------------------------------------------------------- +// D3DX_DEFAULT: +// --------- +// A predefined value that could be used for any parameter in D3DX APIs or +// member functions that is an enumerant or a handle. The D3DX +// documentation indicates wherever D3DX_DEFAULT may be used, +// and how it will be interpreted in each situation. +//------------------------------------------------------------------------- +#define D3DX_DEFAULT ULONG_MAX + +//------------------------------------------------------------------------- +// D3DX_DEFAULT_FLOAT: +// ------------------ +// Similar to D3DX_DEFAULT, but used for floating point parameters. +// The D3DX documentation indicates wherever D3DX_DEFAULT_FLOAT may be used, +// and how it will be interpreted in each situation. +//------------------------------------------------------------------------- +#define D3DX_DEFAULT_FLOAT FLT_MAX + +//------------------------------------------------------------------------- +// Hardware Acceleration Level: +// --------------------------- +// These constants represent pre-defined hardware acceleration levels, +// and may be used as a default anywhere a (DWORD) deviceIndex is required. +// Each pre-define indicates a different level of hardware acceleration. +// They are an alternative to using explicit deviceIndices retrieved by +// D3DXGetDeviceDescription(). +// +// The only case these pre-defines should be used as device indices is if +// a particular level of acceleration is required, and given more than +// one capable device on the computer, it does not matter which one +// is used. +// +// The method of selection is as follows: If one of the D3DX devices on +// the primary DDraw device supports a requested hardware acceleration +// level, it will be used. Otherwise, the first matching device discovered +// by D3DX will be used. +// +// Of course, it is possible for no match to exist for any of the +// pre-defines on a particular computer. Passing such a value into the +// D3DX apis will simply cause them to fail, reporting that no match +// is available. +// +// D3DX_HWLEVEL_NULL: Null implementation (draws nothing) +// D3DX_HWLEVEL_REFERENCE: Reference implementation (slowest) +// D3DX_HWLEVEL_2D: 2D acceleration only (RGB rasterizer used) +// D3DX_HWLEVEL_RASTER: Rasterization acceleration (likely most useful) +// D3DX_HWLEVEL_TL: Transform and lighting acceleration +// D3DX_DEFAULT: The highest level of acceleration available +// on the primary DDraw device. +//------------------------------------------------------------------------- +#define D3DX_HWLEVEL_NULL (D3DX_DEFAULT - 1) +#define D3DX_HWLEVEL_REFERENCE (D3DX_DEFAULT - 2) +#define D3DX_HWLEVEL_2D (D3DX_DEFAULT - 3) +#define D3DX_HWLEVEL_RASTER (D3DX_DEFAULT - 4) +#define D3DX_HWLEVEL_TL (D3DX_DEFAULT - 5) + +//------------------------------------------------------------------------- +// Surface Class: +// ------------- +// These are the various types of 2D-surfaces classified according to their +// usage. Note that a number of them overlap. e.g. STENCILBUFFERS and +// DEPTHBUFFERS overlap (since in DX7 implementation the stencil and depth +// bits are part of the same pixel format). +// +// Mapping to the DX7 DDPIXELFORMAT concepts: +// ----------------------------------------- +// D3DX_SC_DEPTHBUFFER: All ddpfs which have the DDPF_ZPIXELS or the +// DDPF_ZBUFFER flags set. +// D3DX_SC_STENCILBUFFER: All ddpfs which have the DDPF_STENCILBUFFER +// flag set. +// D3DX_SC_BUMPMAP: All ddpfs which have the DDPF_BUMPLUMINANCE +// or the DDPF_BUMPDUDV flags set. +// D3DX_SC_LUMINANCEMAP: All ddpfs which have the DDPF_BUMPLUMINANCE +// or the DDPF_LUMINANCE flags set. +// D3DX_SC_COLORTEXTURE: All the surfaces that have color information in +// them and can be used for texturing. +// D3DX_SC_COLORRENDERTGT: All the surfaces that contain color +// information and can be used as render targets. +//------------------------------------------------------------------------- +#define D3DX_SC_DEPTHBUFFER 0x01 +#define D3DX_SC_STENCILBUFFER 0x02 +#define D3DX_SC_COLORTEXTURE 0x04 +#define D3DX_SC_BUMPMAP 0x08 +#define D3DX_SC_LUMINANCEMAP 0x10 +#define D3DX_SC_COLORRENDERTGT 0x20 + +//------------------------------------------------------------------------- +// Surface Formats: +// --------------- +// These are the various types of surface formats that can be enumerated, +// there is no DDPIXELFORMAT structure in D3DX, the enums carry the meaning +// (like FOURCCs). +// +// All the surface classes are represented here. +// +//------------------------------------------------------------------------- +typedef enum _D3DX_SURFACEFORMAT +{ + D3DX_SF_UNKNOWN = 0, + D3DX_SF_R8G8B8 = 1, + D3DX_SF_A8R8G8B8 = 2, + D3DX_SF_X8R8G8B8 = 3, + D3DX_SF_R5G6B5 = 4, + D3DX_SF_R5G5B5 = 5, + D3DX_SF_PALETTE4 = 6, + D3DX_SF_PALETTE8 = 7, + D3DX_SF_A1R5G5B5 = 8, + D3DX_SF_X4R4G4B4 = 9, + D3DX_SF_A4R4G4B4 =10, + D3DX_SF_L8 =11, // 8 bit luminance-only + D3DX_SF_A8L8 =12, // 16 bit alpha-luminance + D3DX_SF_U8V8 =13, // 16 bit bump map format + D3DX_SF_U5V5L6 =14, // 16 bit bump map format with luminance + D3DX_SF_U8V8L8 =15, // 24 bit bump map format with luminance + D3DX_SF_UYVY =16, // UYVY format (PC98 compliance) + D3DX_SF_YUY2 =17, // YUY2 format (PC98 compliance) + D3DX_SF_DXT1 =18, // S3 texture compression technique 1 + D3DX_SF_DXT3 =19, // S3 texture compression technique 3 + D3DX_SF_DXT5 =20, // S3 texture compression technique 5 + D3DX_SF_R3G3B2 =21, // 8 bit RGB texture format + D3DX_SF_A8 =22, // 8 bit alpha-only + D3DX_SF_TEXTUREMAX =23, // Last texture format + + D3DX_SF_Z16S0 =256, + D3DX_SF_Z32S0 =257, + D3DX_SF_Z15S1 =258, + D3DX_SF_Z24S8 =259, + D3DX_SF_S1Z15 =260, + D3DX_SF_S8Z24 =261, + D3DX_SF_DEPTHMAX =262, // Last depth format + + D3DX_SF_FORCEMAX = (DWORD)(-1) +} D3DX_SURFACEFORMAT; + +//------------------------------------------------------------------------- +// Filtering types for Texture APIs +// +// ------------- +// These are the various filter types for generation of mip-maps +// +// D3DX_FILTERTYPE +// ----------------------------------------- +// D3DX_FT_POINT: Point sampling only - no filtering +// D3DX_FT_LINEAR: Bi-linear filtering +// +//------------------------------------------------------------------------- +typedef enum _D3DX_FILTERTYPE +{ + D3DX_FT_POINT = 0x01, + D3DX_FT_LINEAR = 0x02, + D3DX_FT_DEFAULT = D3DX_DEFAULT +} D3DX_FILTERTYPE; + +/////////////////////////////////////////////////////////////////////////// +// Structures used below: +/////////////////////////////////////////////////////////////////////////// + +//------------------------------------------------------------------------- +// D3DX_VIDMODEDESC: Display mode description. +// ---------------- +// width: Screen Width +// height: Screen Height +// bpp: Bits per pixel +// refreshRate: Refresh rate +//------------------------------------------------------------------------- +typedef struct _D3DX_VIDMODEDESC +{ + DWORD width; + DWORD height; + DWORD bpp; + DWORD refreshRate; +} D3DX_VIDMODEDESC; + +//------------------------------------------------------------------------- +// D3DX_DEVICEDESC: Description of a device that can do 3D +// --------------- +// deviceIndex: Unique (DWORD) number for the device. +// hwLevel: Level of acceleration afforded. This is one of the +// predefined Device Indices, and exists in this +// structure for informational purposes only. More than +// one device on the system may have the same hwLevel. +// To refer to a particular device with the D3DX apis, +// use the value in the deviceIndex member instead. +// ddGuid: The ddraw GUID +// d3dDeviceGuid: Direct3D Device GUID +// ddDeviceID: DDraw's GetDeviceIdentifier GUID. This GUID is unique to +// a particular driver revision on a particular video card. +// driverDesc: String describing the driver +// monitor: Handle to the video monitor used by this device (multimon +// specific). Devices that use different monitors on a +// multimon system report different values in this field. +// Therefore, to test for a multimon system, an application +// should look for more than one different monitor handle in +// the list of D3DX devices. +// onPrimary: Indicates if this device is on the primary monitor +// (multimon specific). +//------------------------------------------------------------------------- +#define D3DX_DRIVERDESC_LENGTH 256 + +typedef struct _D3DX_DEVICEDESC +{ + DWORD deviceIndex; + DWORD hwLevel; + GUID ddGuid; + GUID d3dDeviceGuid; + GUID ddDeviceID; + char driverDesc[D3DX_DRIVERDESC_LENGTH]; + HMONITOR monitor; + BOOL onPrimary; +} D3DX_DEVICEDESC; + +/////////////////////////////////////////////////////////////////////////// +// APIs: +/////////////////////////////////////////////////////////////////////////// +#ifdef __cplusplus +extern "C" { +#endif //__cplusplus + +//------------------------------------------------------------------------- +// D3DXInitialize: The very first call a D3DX app must make. +//------------------------------------------------------------------------- +HRESULT WINAPI + D3DXInitialize(); + +//------------------------------------------------------------------------- +// D3DXUninitialize: The very last call a D3DX app must make. +//------------------------------------------------------------------------- +HRESULT WINAPI + D3DXUninitialize(); + +//------------------------------------------------------------------------- +// D3DXGetDeviceCount: Returns the maximum number of D3DXdevices +// ------------------ available. +// +// D3DXGetDeviceDescription: Lists the 2D and 3D capabilities of the devices. +// ------------------------ Also, the various guids needed by ddraw and d3d. +// +// Params: +// [in] DWORD deviceIndex: Which device? Starts at 0. +// [in] D3DX_DEVICEDESC* pd3dxDevice: Pointer to the D3DX_DEVICEDESC +// structure to be filled in. +//------------------------------------------------------------------------- +DWORD WINAPI + D3DXGetDeviceCount(); + +HRESULT WINAPI + D3DXGetDeviceDescription(DWORD deviceIndex, + D3DX_DEVICEDESC* pd3dxDeviceDesc); + +//------------------------------------------------------------------------- +// D3DXGetMaxNumVideoModes: Returns the maximum number of video-modes . +// ----------------------- +// +// Params: +// [in] DWORD deviceIndex: The device being referred to. +// [in] DWORD flags: If D3DX_GVM_REFRESHRATE is set, then the refresh +// rates are not ignored. +// +// D3DXGetVideoMode: Describes a particular video mode for this device +// ---------------- +// +// Note: These queries will simply give you a list of modes that the +// display adapter tells DirectX that it supports. +// There is no guarantee that D3DXCreateContext(Ex) will succeed +// with all listed video modes. This is a fundamental limitation +// of the current DirectX architecture which D3DX cannot hide in +// any clean way. +// +// Params: +// [in] DWORD deviceIndex: The device being referred to. +// [in] DWORD flags: If D3DX_GVM_REFRESHRATE is set, then the refresh +// rates are returned +// [in] DWORD which: Which VideoMode ? Starts at 0. +// [out] D3DX_VIDMODEDESC* pModeList: Pointer to the D3DX_VIDMODEDESC +// structure that will be filled in. +//------------------------------------------------------------------------- +DWORD WINAPI + D3DXGetMaxNumVideoModes(DWORD deviceIndex, + DWORD flags); + +HRESULT WINAPI + D3DXGetVideoMode(DWORD deviceIndex, + DWORD flags, + DWORD modeIndex, + D3DX_VIDMODEDESC* pModeDesc); + +#define D3DX_GVM_REFRESHRATE 0x00000001 +//------------------------------------------------------------------------- +// D3DXGetMaxSurfaceFormats: Returns the maximum number of surface +// ------------------------ formats supported by the device at that +// video mode. +// +// D3DXGetSurfaceFormat: Describes one of the supported surface formats. +// --------------------- +// +// Params: +// [in] DWORD deviceIndex: The device being referred to. +// [in] D3DX_VIDMODEDESC* pDesc: The display mode at which the supported +// surface formats are requested. If it is +// NULL, the current display mode is +// assumed. +// [in] DWORD surfClassFlags: Required surface classes. Only surface +// formats which support all specified +// surface classes will be returned. +// (Multiple surface classes may be specified +// using bitwise OR.) +// [in] DWORD which: Which surface formats to retrieve. Starts at 0. +// [out] D3DX_SURFACEFORMAT* pFormat: The surface format +//------------------------------------------------------------------------- +DWORD WINAPI + D3DXGetMaxSurfaceFormats(DWORD deviceIndex, + D3DX_VIDMODEDESC* pDesc, + DWORD surfClassFlags); +HRESULT WINAPI + D3DXGetSurfaceFormat(DWORD deviceIndex, + D3DX_VIDMODEDESC* pDesc, + DWORD surfClassFlags, + DWORD surfaceIndex, + D3DX_SURFACEFORMAT* pFormat); + + +//------------------------------------------------------------------------- +// D3DXGetCurrentVideoMode: Retrieves the current video mode for this device. +// ------------------- +// +// Params: +// [in] DWORD deviceIndex: The device being referred to. +// [out] D3DX_VIDMODEDESC* pVidMode: The current video mode +//------------------------------------------------------------------------- +HRESULT WINAPI + D3DXGetCurrentVideoMode(DWORD deviceIndex, + D3DX_VIDMODEDESC* pVidMode); + +//------------------------------------------------------------------------- +// D3DXGetDeviceCaps: Lists all the capabilities of a device at a display +// mode. +// ---------------- +// +// Params: +// [in] DWORD deviceIndex: The device being referred to. +// [in] D3DX_VIDMODEDESC* pDesc: If this is NULL, we will return the +// caps at the current display mode of +// the device. +// [out] D3DDEVICEDESC7* pD3DDeviceDesc7: D3D Caps ( NULL to ignore +// parameter) +// [out] DDCAPS7* pDDHalCaps: DDraw HAL Caps (NULL to ignore parameter) +// [out] DDCAPS7* pDDHelCaps: DDraw HEL Caps (NULL to ignore paramter) +//------------------------------------------------------------------------- +HRESULT WINAPI + D3DXGetDeviceCaps(DWORD deviceIndex, + D3DX_VIDMODEDESC* pVidMode, + D3DDEVICEDESC7* pD3DCaps, + DDCAPS* pDDHALCaps, + DDCAPS* pDDHELCaps); + +//------------------------------------------------------------------------- +// D3DXCreateContext: Initializes the chosen device. It is the simplest init +// ----------------- function available. Parameters are treated the same +// as the matching subset of parameters in +// D3DXCreateContextEx, documented below. +// Remaining D3DXCreateContextEx parameters that are +// not present in D3DXCreateContext are treated as +// D3DX_DEFAULT. Note that multimon is not supported +// with D3DXCreateContext. +// +// D3DXCreateContextEx: A more advanced function to initialize the device. +// ------------------- Also accepts D3DX_DEFAULT for most of the parameters +// and then will do what D3DXCreateContext did. +// +// Note: Do not expect D3DXCreateContext(Ex) to be fail-safe (as with any +// API). Supported device capablilites should be used as a guide +// for choosing parameter values. Keep in mind that there will +// inevitably be some combinations of parameters that just do not work. +// +// Params: +// [in] DWORD deviceIndex: The device being referred to. +// [in] DWORD flags: The valid flags are D3DX_CONTEXT_FULLSCREEN, and +// D3DX_CONTEXT_OFFSCREEN. These flags cannot both +// be specified. If no flags are specified, the +// context defaults to windowed mode. +// +// [in] HWND hwnd: Device window. See note. +// [in] HWND hwndFocus: Window which receives keyboard messages from +// the device window. The device window should be +// a child of focus window. Useful for multimon +// applications. See note. +// NOTE: +// windowed: +// hwnd must be a valid window. hwndFocus must be NULL or +// D3DX_DEFAULT. +// +// fullscreen: +// Either hwnd or hwndFocus must be a valid window. (Both cannot +// be NULL or D3DX_DEFAULT). If hwnd is NULL or D3DX_DEFAULT, +// a default device window will be created as a child of hwndFocus. +// +// offscreen: +// Both hwnd and hwndFocus must be NULL or D3DX_DEFAULT +// +// [in] DWORD numColorBits: If D3DX_DEFAULT is passed for windowed mode, +// the current desktop's color depth is chosen. +// For full screen mode, D3DX_DEFAULT causes 16 +// bit color to be used. +// [in] DWORD numAlphaBits: If D3DX_DEFAULT is passed, 0 is chosen. +// [in] DWORD numDepthbits: If D3DX_DEFAULT is passed, +// the highest available number of depth bits +// is chosen. See note. +// [in] DWORD numStencilBits: If D3DX_DEFAULT is passed, the highest +// available number of stencil bits is chosen. +// See note. +// +// NOTE: If both numDepthBits and numStencilBits are D3DX_DEFAULT, +// D3DX first picks the highest available number of stencil +// bits. Then, for the chosen number of stencil bits, +// the highest available number of depth bits is chosen. +// If only one of numStencilBits or numDepthBits +// is D3DX_DEFAULT, the highest number of bits available +// for this parameter is chosen out of only the formats +// that support the number of bits requested for the +// fixed parameter. +// +// [in] DWORD numBackBuffers: Number of back buffers, or D3DX_DEFAULT. +// See note. +// +// NOTE: +// windowed: D3DX_DEFAULT means 1. You must specify one back buffer. +// +// fullscreen: D3DX_DEFAULT means 1. Any number of back buffers can be +// specified. +// +// offscreen: D3DX_DEFAULT means 0. You cannot specify additional back +// buffers. +// +// [in] DWORD width: Width, in pixels, or D3DX_DEFAULT. See note. +// [in] DWORD height: Height, in pixels, or D3DX_DEFAULT. See note. +// +// NOTE: +// windowed: If either width or height is D3DX_DEFAULT, both values +// default to the dimensions of the client area of hwnd. +// +// fullscreen: If either width or height is D3DX_DEFAULT, width +// defaults to 640, and height defaults to 480. +// +// offscreen: An error is returned if either width or height is +// D3DX_DEFAULT. +// +// [in] DWORD refreshRate: D3DX_DEFAULT means we let ddraw choose for +// us. Ignored for windowed and offscreen modes. +// [out] LPD3DXCONTEXT* ppCtx: This is the Context object that is used for +// rendering on that device. +// +//------------------------------------------------------------------------- +HRESULT WINAPI + D3DXCreateContext(DWORD deviceIndex, + DWORD flags, + HWND hwnd, + DWORD width, + DWORD height, + LPD3DXCONTEXT* ppCtx); + +HRESULT WINAPI + D3DXCreateContextEx(DWORD deviceIndex, + DWORD flags, + HWND hwnd, + HWND hwndFocus, + DWORD numColorBits, + DWORD numAlphaBits, + DWORD numDepthbits, + DWORD numStencilBits, + DWORD numBackBuffers, + DWORD width, + DWORD height, + DWORD refreshRate, + LPD3DXCONTEXT* ppCtx); + +// The D3DXCreateContext(Ex) flags are: +#define D3DX_CONTEXT_FULLSCREEN 0x00000001 +#define D3DX_CONTEXT_OFFSCREEN 0x00000002 + +//------------------------------------------------------------------------- +// D3DXGetErrorString: Prints out the error string given an hresult. Prints +// ------------------ Win32 as well as DX6 error messages besides the D3DX +// messages. +// +// Params: +// [in] HRESULT hr: The error code to be deciphered. +// [in] DWORD strLength: Length of the string passed in. +// [out] LPSTR pStr: The string output. This string of appropriate +// size needs to be passed in. +//------------------------------------------------------------------------- +void WINAPI + D3DXGetErrorString(HRESULT hr, + DWORD strLength, + LPSTR pStr); + +//------------------------------------------------------------------------- +// D3DXMakeDDPixelFormat: Fills in a DDPIXELFORMAT structure based on the +// --------------------- D3DX surface format requested. +// +// Params: +// [in] D3DX_SURFACEFORMAT d3dxFormat: Surface format. +// [out] DDPIXELFORMAT* pddpf: Pixel format matching the given +// surface format. +//------------------------------------------------------------------------- +HRESULT WINAPI + D3DXMakeDDPixelFormat(D3DX_SURFACEFORMAT d3dxFormat, + DDPIXELFORMAT* pddpf); + +//------------------------------------------------------------------------- +// D3DXMakeSurfaceFormat: Determines the surface format corresponding to +// --------------------- a given DDPIXELFORMAT. +// +// Params: +// [in] DDPIXELFORMAT* pddpf: Pixel format. +// Return Value: +// D3DX_SURFACEFORMAT: Surface format matching the given pixel format. +// D3DX_SF_UNKNOWN if the format is not supported +//------------------------------------------------------------------------- +D3DX_SURFACEFORMAT WINAPI + D3DXMakeSurfaceFormat(DDPIXELFORMAT* pddpf); + +#ifdef __cplusplus +} +#endif //__cplusplus + +/////////////////////////////////////////////////////////////////////////// +// Interfaces: +/////////////////////////////////////////////////////////////////////////// + +//------------------------------------------------------------------------- +// ID3DXContext interface: +// +// This encapsulates all the stuff that the app might +// want to do at initialization time and any global control over d3d and +// ddraw. +//------------------------------------------------------------------------- + + +DECLARE_INTERFACE_(ID3DXContext, IUnknown) +{ + // + // IUnknown methods + // + STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID* ppvObj) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + + // Get the DDraw and Direct3D objects to call DirectDraw or + // Direct3D Immediate Mode functions. + // If the objects don't exist (because they have not + // been created for some reason) NULL is returned. + // All the objects returned in the following Get* functions + // are addref'ed. It is the application's responsibility to + // release them when no longer needed. + STDMETHOD_(LPDIRECTDRAW7,GetDD)(THIS) PURE; + STDMETHOD_(LPDIRECT3D7,GetD3D)(THIS) PURE; + STDMETHOD_(LPDIRECT3DDEVICE7,GetD3DDevice)(THIS) PURE; + + // Get the various buffers that get created at the init time + // These are addref'ed as well. It is the application's responsibility + // to release them before the app quits or when it needs a resize. + STDMETHOD_(LPDIRECTDRAWSURFACE7,GetPrimary)(THIS) PURE; + STDMETHOD_(LPDIRECTDRAWSURFACE7,GetZBuffer)(THIS) PURE; + STDMETHOD_(LPDIRECTDRAWSURFACE7,GetBackBuffer)(THIS_ DWORD which) PURE; + + // Get the associated window handles + STDMETHOD_(HWND,GetWindow)(THIS) PURE; + STDMETHOD_(HWND,GetFocusWindow)(THIS) PURE; + + // + // Various Get methods, in case the user had specified default + // parameters + // + STDMETHOD(GetDeviceIndex)(THIS_ + LPDWORD pDeviceIndex, + LPDWORD pHwLevel) PURE; + + STDMETHOD_(DWORD, GetNumBackBuffers)(THIS) PURE; + + STDMETHOD(GetNumBits)(THIS_ + LPDWORD pColorBits, + LPDWORD pDepthBits, + LPDWORD pAlphaBits, + LPDWORD pStencilBits) PURE; + + STDMETHOD(GetBufferSize)(THIS_ + LPDWORD pWidth, + LPDWORD pHeight) PURE; + + // Get the flags that were used to create this context + STDMETHOD_(DWORD, GetCreationFlags)(THIS) PURE; + STDMETHOD_(DWORD, GetRefreshRate)(THIS) PURE; + + // Restoring surfaces in case stuff is lost + STDMETHOD(RestoreSurfaces)(THIS) PURE; + + // Resize all the buffers to the new width and height + STDMETHOD(Resize)(THIS_ DWORD width, DWORD height) PURE; + + // Update the frame using a flip or a blit, + // If the D3DX_UPDATE_NOVSYNC flag is set, blit is used if the + // driver cannot flip without waiting for vsync in full-screen mode. + STDMETHOD(UpdateFrame)(THIS_ DWORD flags) PURE; + + // Render a string at the specified coordinates, with the specified + // colour. This is only provided as a convenience for + // debugging/information during development. + // topLeftX and topLeftY represent the location of the top left corner + // of the string, on the render target. + // The coordinate and color parameters each have a range of 0.0-1.0 + STDMETHOD(DrawDebugText)(THIS_ + float topLeftX, + float topLeftY, + D3DCOLOR color, + LPSTR pString) PURE; + + // Clears to the current viewport + // The following are the valid flags: + // D3DCLEAR_TARGET (to clear the render target ) + // D3DCLEAR_ZBUFFER (to clear the depth-buffer ) + // D3DCLEAR_STENCIL (to clear the stencil-buffer ) + STDMETHOD(Clear)(THIS_ DWORD ClearFlags) PURE; + + STDMETHOD(SetClearColor)(THIS_ D3DCOLOR color ) PURE; + STDMETHOD(SetClearDepth)(THIS_ float z) PURE; + STDMETHOD(SetClearStencil)(THIS_ DWORD stencil) PURE; +}; + + +//------------------------------------------------------------------------- +// Flags for Update member function: +// + +// Flag to indicate that blit should be used instead of a flip +// for full-screen rendering. +#define D3DX_UPDATE_NOVSYNC (1<<0) + +/////////////////////////////////////////////////////////////////////////// +// Texturing APIs: +/////////////////////////////////////////////////////////////////////////// +#ifdef __cplusplus +extern "C" { +#endif //__cplusplus + +//------------------------------------------------------------------------- +// D3DXCheckTextureRequirements: Return information about texture creation +// ---------------------------- (used by CreateTexture, CreateTextureFromFile +// and CreateCubeMapTexture) +// +// Parameters: +// +// pd3dDevice +// The D3D device with which the texture is going to be used. +// pFlags +// allows specification of D3DX_TEXTURE_NOMIPMAP +// D3DX_TEXTURE_NOMIPMAP may be returned in the case where mipmap creation +// is not supported. +// pWidth +// width in pixels or NULL +// returns corrected width +// pHeight +// height in pixels or NULL +// returns corrected height +// pPixelFormat +// surface format +// returns best match to input format +// +// Notes: 1. Unless the flags is set to specifically prevent creating +// mipmaps, mipmaps are generated all the way till 1x1 surface. +// 2. width, height and pixelformat are altered based on available +// hardware. For example: +// a. Texture dimensions may be required to be powers of 2 +// b. We may require width == height for some devices +// c. If PixelFormat is unavailable, a best fit is made +//------------------------------------------------------------------------- +HRESULT WINAPI + D3DXCheckTextureRequirements( LPDIRECT3DDEVICE7 pd3dDevice, + LPDWORD pFlags, + LPDWORD pWidth, + LPDWORD pHeight, + D3DX_SURFACEFORMAT* pPixelFormat); + +//------------------------------------------------------------------------- +// D3DXCreateTexture: Create an empty texture object +// ----------------- +// +// Parameters: +// +// pd3dDevice +// The D3D device with which the texture is going to be used. +// pFlags +// allows specification of D3DX_TEXTURE_NOMIPMAP +// D3DX_TEXTURE_NOMIPMAP may be returned in the case where mipmap creation +// is not supported. Additionally, D3DX_TEXTURE_STAGE can be specified +// to indicate which texture stage the texture is for e.g. +// D3D_TEXTURE_STAGE1 indicates that the texture is for use with texture +// stage one. Stage Zero is the default if no TEXTURE_STAGE flags are +// set. +// pWidth +// width in pixels; 0 or NULL is unacceptable +// returns corrected width +// pHeight +// height in pixels; 0 or NULL is unacceptable +// returns corrected height +// pPixelFormat +// surface format. D3DX_DEFAULT is unacceptable. +// returns actual format that was used +// pDDPal +// DDraw palette that is set (if present) on paletted surfaces. +// It is ignored even if it is set, for non-paletted surfaces. +// ppDDSurf +// The ddraw surface that will be created +// pNumMipMaps +// the number of mipmaps actually generated +// +// Notes: See notes for D3DXCheckTextureRequirements. +//------------------------------------------------------------------------- +HRESULT WINAPI + D3DXCreateTexture( LPDIRECT3DDEVICE7 pd3dDevice, + LPDWORD pFlags, + LPDWORD pWidth, + LPDWORD pHeight, + D3DX_SURFACEFORMAT* pPixelFormat, + LPDIRECTDRAWPALETTE pDDPal, + LPDIRECTDRAWSURFACE7* ppDDSurf, + LPDWORD pNumMipMaps); + +//------------------------------------------------------------------------- +// D3DXCreateCubeMapTexture: Create blank cube-map texture +// ------------------------ +// +// Parameters: +// +// pd3dDevice +// The D3D device with which the texture is going to be used. +// pFlags +// allows specification of D3DX_TEXTURE_NOMIPMAP +// D3DX_TEXTURE_NOMIPMAP may be returned in the case where mipmap creation +// is not supported. Additionally, D3DX_TEXTURE_STAGE can be specified +// to indicate which texture stage the texture is for e.g. +// D3D_TEXTURE_STAGE1 indicates that the texture is for use with texture +// stage one. Stage Zero is the default if no TEXTURE_STAGE flags are +// set. +// cubefaces +// allows specification of which faces of the cube-map to generate. +// D3DX_DEFAULT, 0, and DDSCAPS2_CUBEMAP_ALLFACES all mean +// "create all 6 faces of the cubemap". Any combination of +// DDSCAPS2_CUBEMAP_POSITIVEX, DDSCAPS2_CUBEMAP_NEGATIVEX, +// DDSCAPS2_CUBEMAP_POSITIVEY, DDSCAPS2_CUBEMAP_NEGATIVEY, +// DDSCAPS2_CUBEMAP_POSITIVEZ, or DDSCAPS2_CUBEMAP_NEGATIVEZ, is +// valid. +// colorEmptyFaces +// allows specification of the color to use for the faces that were not +// specified in the cubefaces parameter. +// pWidth +// width in pixels; 0 or NULL is unacceptable +// returns corrected width +// pHeight +// height in pixels; 0 or NULL is unacceptable +// returns corrected height +// pPixelFormat +// surface format. D3DX_DEFAULT is unacceptable. +// returns actual format that was used +// pDDPal +// DDraw palette that is set (if present) on paletted surfaces. +// It is ignored even if it is set, for non-paletted surfaces. +// ppDDSurf +// the ddraw surface that will be created +// pNumMipMaps +// the number of mipmaps generated for a particular face of the +// cubemap. +// +// Notes: See notes for D3DXCheckTextureRequirements. +//------------------------------------------------------------------------- +HRESULT WINAPI + D3DXCreateCubeMapTexture( LPDIRECT3DDEVICE7 pd3dDevice, + LPDWORD pFlags, + DWORD cubefaces, + D3DCOLOR colorEmptyFaces, + LPDWORD pWidth, + LPDWORD pHeight, + D3DX_SURFACEFORMAT *pPixelFormat, + LPDIRECTDRAWPALETTE pDDPal, + LPDIRECTDRAWSURFACE7* ppDDSurf, + LPDWORD pNumMipMaps); + + +//------------------------------------------------------------------------- +// D3DXCreateTextureFromFile: Create a texture object from a file or from the +// ------------------------- resource. Only BMP and DIB are supported from the +// resource portion of the executable. +// +// Parameters: +// +// pd3dDevice +// The D3D device with which the texture is going to be used. +// pFlags +// allows specification of D3DX_TEXTURE_NOMIPMAP +// D3DX_TEXTURE_NOMIPMAP may be returned in the case where mipmap creation +// is not supported. Additionally, D3DX_TEXTURE_STAGE can be specified +// to indicate which texture stage the texture is for e.g. +// D3D_TEXTURE_STAGE1 indicates that the texture is for use with texture +// stage one. Stage Zero is the default if no TEXTURE_STAGE flags are +// set. +// pWidth +// Width in pixels. If 0 or D3DX_DEFAULT, the width will be taken +// from the file +// returns corrected width +// pHeight +// Height in pixels. If 0 or D3DX_DEFAULT, the height will be taken +// from the file +// returns corrected height +// pPixelFormat +// If D3DX_SF_UNKNOWN is passed in, pixel format closest to the bitmap +// will be chosen +// returns actual format that was used +// pDDPal +// DDraw palette that is set (if present) on paletted surfaces. +// It is ignored even if it is set, for non-paletted surfaces. +// ppDDSurf +// The ddraw surface that will be created. +// pNumMipMaps +// The number of mipmaps generated. +// pSrcName +// File name. BMP, DIB, DDS, are supported. +// +// TGA is supported for the following cases: 16, 24, 32bpp direct color and 8bpp palettized. +// Also, 8, 16bpp grayscale is supported. RLE versions of the above +// TGA formats are also supported. ColorKey and Premultiplied Alpha +// are not currently supported for TGA files. +// returns created format +// +// Notes: See notes for D3DXCheckTextureRequirements. +//------------------------------------------------------------------------- +HRESULT WINAPI + D3DXCreateTextureFromFile( LPDIRECT3DDEVICE7 pd3dDevice, + LPDWORD pFlags, + LPDWORD pWidth, + LPDWORD pHeight, + D3DX_SURFACEFORMAT* pPixelFormat, + LPDIRECTDRAWPALETTE pDDPal, + LPDIRECTDRAWSURFACE7* ppDDSurf, + LPDWORD pNumMipMaps, + LPSTR pSrcName, + D3DX_FILTERTYPE filterType); + +//------------------------------------------------------------------------- +// D3DXLoadTextureFromFile: Load from a file into a mipmap level. Doing the +// ----------------------- necessary color conversion and rescaling. File +// format support is identical to +// D3DXCreateTextureFromFile's. +// +// pd3dDevice +// The D3D device with which the texture is going to be used. +// pTexture +// a pointer to a DD7Surface which was created with either +// CreateTextureFromFile or CreateTexture. +// mipMapLevel +// indicates mipmap level +// Note: +// 1. Error if mipmap level doesn't exist +// 2. If D3DX_DEFAULT and equal number of mipmap levels exist +// then all the source mip-levels are loaded +// 3. If the source has mipmaps and the dest doesn't, use the top one +// 4. If the dest has miplevels and source doesn't, we expand +// 5. If there are unequal numbers of miplevels, we expand +// pSrcName +// File name. BMP, DIB, DDS, are supported. +// For details on TGA support, refer to the comments for +// D3DXCreateTextureFromFile +// pSrcRect +// the source rectangle or null (whole surface) +// pDestRect +// the destination rectangle or null (whole surface) +// filterType +// filter used for mipmap generation +//------------------------------------------------------------------------- +HRESULT WINAPI + D3DXLoadTextureFromFile( LPDIRECT3DDEVICE7 pd3dDevice, + LPDIRECTDRAWSURFACE7 pTexture, + DWORD mipMapLevel, + LPSTR pSrcName, + RECT* pSrcRect, + RECT* pDestRect, + D3DX_FILTERTYPE filterType); + +//------------------------------------------------------------------------- +// D3DXLoadTextureFromSurface: Load from a DDraw Surface into a mipmap level. +// -------------------------- Doing the necessary color conversion. +// +// pd3dDevice +// The D3D device with which the texture is going to be used. +// pTexture +// a pointer to a DD7Surface which was created with either +// CreateTextureFromFile or CreateTexture. +// mipMapLevel +// indicates mipmap level +// Note: +// 1. Error if mipmap level doesn't exist +// 2. If D3DX_DEFAULT and equal number of mipmap levels exist +// then all the source mip-levels are loaded +// 3. If the source has mipmaps and the dest doesn't, use the top one +// 4. If the dest has miplevels and source doesn't, we expand +// 5. If there are unequal numbers of miplevels, we expand +// pSurfaceSrc +// the source surface +// pSrcRect +// the source rectangle or null (whole surface) +// pDestRect +// the destination rectangle or null (whole surface) +// filterType +// filter used for mipmap generation +//------------------------------------------------------------------------- +HRESULT WINAPI + D3DXLoadTextureFromSurface( LPDIRECT3DDEVICE7 pd3dDevice, + LPDIRECTDRAWSURFACE7 pTexture, + DWORD mipMapLevel, + LPDIRECTDRAWSURFACE7 pSurfaceSrc, + RECT* pSrcRect, + RECT* pDestRect, + D3DX_FILTERTYPE filterType); + +//------------------------------------------------------------------------- +// D3DXLoadTextureFromMemory: Load a mip level from memory. Doing the necessary +// ------------------------- color conversion. +// +// pd3dDevice +// The D3D device with which the texture is going to be used. +// pTexture +// a pointer to a DD7Surface which was created with either +// CreateTextureFromFile or CreateTexture. +// mipMapLevel +// indicates mipmap level +// Note: +// 1. Error if mipmap level doesn't exist +// 2. If D3DX_DEFAULT and equal number of mipmap levels exist +// then all the source mip-levels are loaded +// 3. If the source has mipmaps and the dest doesn't, use the top one +// 4. If the dest has miplevels and source doesn't, we expand +// 5. If there are unequal numbers of miplevels, we expand +// pMemory +// pointer to source memory from which the texture will be loaded +// pDDPal +// DirectDraw Palette, that the app passes in optionally if the memory is +// supposed to be paletteized. +// srcPixelFormat +// PixelFormat of the source. +// srcPitch +// The pitch of the memory or D3DX_DEFAULT (based on srcPixelFormat) +// pDestRect +// The destination rectangle or null (whole surface) +// filterType +// filter used for mipmap generation +// +// Assumptions: The source (memory) is loaded in full +//------------------------------------------------------------------------- +HRESULT WINAPI + D3DXLoadTextureFromMemory( LPDIRECT3DDEVICE7 pd3dDevice, + LPDIRECTDRAWSURFACE7 pTexture, + DWORD mipMapLevel, + LPVOID pMemory, + LPDIRECTDRAWPALETTE pDDPal, + D3DX_SURFACEFORMAT srcPixelFormat, + DWORD srcPitch, + RECT* pDestRect, + D3DX_FILTERTYPE filterType); + +#ifdef __cplusplus +} +#endif //__cplusplus + +//------------------------------------------------------------------------- +// Flags for texture create functions; applies to +// D3DXCreateTexture, D3DXCreateCubeMapTexture and D3DXCreateTextureFromFile. +// + +// Flag to indicate that mipmap generation is not desired. +#define D3DX_TEXTURE_NOMIPMAP (1 << 8) + +// Flags to indicate which texture stage the texture is +// intended for use with. Specifying the stage is necessary at +// texture creation time for HW devices that expose the +// D3DDEVCAPS_SEPARATETEXTUREMEMORIES bit in their D3DDEVICEDESC +// structure. +#define D3DX_TEXTURE_STAGE0 (0) +#define D3DX_TEXTURE_STAGE1 (1) +#define D3DX_TEXTURE_STAGE2 (2) +#define D3DX_TEXTURE_STAGE3 (3) +#define D3DX_TEXTURE_STAGE4 (4) +#define D3DX_TEXTURE_STAGE5 (5) +#define D3DX_TEXTURE_STAGE6 (6) +#define D3DX_TEXTURE_STAGE7 (7) + +// Mask to extract the texture stage value out of the flags to +// the texture create functions. +#define D3DX_TEXTURE_STAGE_MASK (0x7) + +#endif //__D3DXCORE_H__ diff --git a/videoInputSrcAndDemos/libs/DShow/Include/d3dxerr.h b/videoInputSrcAndDemos/libs/DShow/Include/d3dxerr.h index dc97f56..155005b 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/d3dxerr.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/d3dxerr.h @@ -1,407 +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__ - +//---------------------------------------------------------------------- +// +// 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__ + diff --git a/videoInputSrcAndDemos/libs/DShow/Include/d3dxmath.h b/videoInputSrcAndDemos/libs/DShow/Include/d3dxmath.h index 3180b42..42f00d1 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/d3dxmath.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/d3dxmath.h @@ -1,1092 +1,1092 @@ -////////////////////////////////////////////////////////////////////////////// -// -// Copyright (C) Microsoft Corporation. All Rights Reserved. -// -// File: d3dxmath.h -// Content: D3DX math types and functions -// -////////////////////////////////////////////////////////////////////////////// - -#ifndef __D3DXMATH_H__ -#define __D3DXMATH_H__ - -#include -#include -#include -#include "d3dxerr.h" - -#ifndef D3DXINLINE -#ifdef __cplusplus -#define D3DXINLINE inline -#else -#define D3DXINLINE _inline -#endif -#endif - -#if _MSC_VER >= 1200 -#pragma warning(push) -#endif -#pragma warning(disable:4201) // anonymous unions warning - - - -typedef struct ID3DXMatrixStack *LPD3DXMATRIXSTACK; - -// {E3357330-CC5E-11d2-A434-00A0C90629A8} -DEFINE_GUID( IID_ID3DXMatrixStack, - 0xe3357330, 0xcc5e, 0x11d2, 0xa4, 0x34, 0x0, 0xa0, 0xc9, 0x6, 0x29, 0xa8); - - -//=========================================================================== -// -// General purpose utilities -// -//=========================================================================== -#define D3DX_PI ((float) 3.141592654f) -#define D3DX_1BYPI ((float) 0.318309886f) - -#define D3DXToRadian( degree ) ((degree) * (D3DX_PI / 180.0f)) -#define D3DXToDegree( radian ) ((radian) * (180.0f / D3DX_PI)) - - - -//=========================================================================== -// -// Vectors -// -//=========================================================================== - -//-------------------------- -// 2D Vector -//-------------------------- -typedef struct D3DXVECTOR2 -{ -#ifdef __cplusplus -public: - D3DXVECTOR2() {}; - D3DXVECTOR2( const float * ); - D3DXVECTOR2( float x, float y ); - - // casting - operator float* (); - operator const float* () const; - - // assignment operators - D3DXVECTOR2& operator += ( const D3DXVECTOR2& ); - D3DXVECTOR2& operator -= ( const D3DXVECTOR2& ); - D3DXVECTOR2& operator *= ( float ); - D3DXVECTOR2& operator /= ( float ); - - // unary operators - D3DXVECTOR2 operator + () const; - D3DXVECTOR2 operator - () const; - - // binary operators - D3DXVECTOR2 operator + ( const D3DXVECTOR2& ) const; - D3DXVECTOR2 operator - ( const D3DXVECTOR2& ) const; - D3DXVECTOR2 operator * ( float ) const; - D3DXVECTOR2 operator / ( float ) const; - - friend D3DXVECTOR2 operator * ( float, const D3DXVECTOR2& ); - - BOOL operator == ( const D3DXVECTOR2& ) const; - BOOL operator != ( const D3DXVECTOR2& ) const; - - -public: -#endif //__cplusplus - float x, y; -} D3DXVECTOR2, *LPD3DXVECTOR2; - - -//-------------------------- -// 3D Vector -//-------------------------- -typedef struct D3DXVECTOR3 -{ -#ifdef __cplusplus -public: - D3DXVECTOR3() {}; - D3DXVECTOR3( const float * ); - D3DXVECTOR3( const D3DVECTOR& ); - D3DXVECTOR3( float x, float y, float z ); - - // casting - operator float* (); - operator const float* () const; - - operator D3DVECTOR* (); - operator const D3DVECTOR* () const; - - operator D3DVECTOR& (); - operator const D3DVECTOR& () const; - - // assignment operators - D3DXVECTOR3& operator += ( const D3DXVECTOR3& ); - D3DXVECTOR3& operator -= ( const D3DXVECTOR3& ); - D3DXVECTOR3& operator *= ( float ); - D3DXVECTOR3& operator /= ( float ); - - // unary operators - D3DXVECTOR3 operator + () const; - D3DXVECTOR3 operator - () const; - - // binary operators - D3DXVECTOR3 operator + ( const D3DXVECTOR3& ) const; - D3DXVECTOR3 operator - ( const D3DXVECTOR3& ) const; - D3DXVECTOR3 operator * ( float ) const; - D3DXVECTOR3 operator / ( float ) const; - - friend D3DXVECTOR3 operator * ( float, const struct D3DXVECTOR3& ); - - BOOL operator == ( const D3DXVECTOR3& ) const; - BOOL operator != ( const D3DXVECTOR3& ) const; - -public: -#endif //__cplusplus - float x, y, z; -} D3DXVECTOR3, *LPD3DXVECTOR3; - - -//-------------------------- -// 4D Vector -//-------------------------- -typedef struct D3DXVECTOR4 -{ -#ifdef __cplusplus -public: - D3DXVECTOR4() {}; - D3DXVECTOR4( const float* ); - D3DXVECTOR4( float x, float y, float z, float w ); - - // casting - operator float* (); - operator const float* () const; - - // assignment operators - D3DXVECTOR4& operator += ( const D3DXVECTOR4& ); - D3DXVECTOR4& operator -= ( const D3DXVECTOR4& ); - D3DXVECTOR4& operator *= ( float ); - D3DXVECTOR4& operator /= ( float ); - - // unary operators - D3DXVECTOR4 operator + () const; - D3DXVECTOR4 operator - () const; - - // binary operators - D3DXVECTOR4 operator + ( const D3DXVECTOR4& ) const; - D3DXVECTOR4 operator - ( const D3DXVECTOR4& ) const; - D3DXVECTOR4 operator * ( float ) const; - D3DXVECTOR4 operator / ( float ) const; - - friend D3DXVECTOR4 operator * ( float, const D3DXVECTOR4& ); - - BOOL operator == ( const D3DXVECTOR4& ) const; - BOOL operator != ( const D3DXVECTOR4& ) const; - -public: -#endif //__cplusplus - float x, y, z, w; -} D3DXVECTOR4, *LPD3DXVECTOR4; - - -//=========================================================================== -// -// Matrices -// -//=========================================================================== -typedef struct D3DXMATRIX -{ -#ifdef __cplusplus -public: - D3DXMATRIX() {}; - D3DXMATRIX( const float * ); - D3DXMATRIX( const D3DMATRIX& ); - D3DXMATRIX( float m00, float m01, float m02, float m03, - float m10, float m11, float m12, float m13, - float m20, float m21, float m22, float m23, - float m30, float m31, float m32, float m33 ); - - - // access grants - float& operator () ( UINT iRow, UINT iCol ); - float operator () ( UINT iRow, UINT iCol ) const; - - // casting operators - operator float* (); - operator const float* () const; - - operator D3DMATRIX* (); - operator const D3DMATRIX* () const; - - operator D3DMATRIX& (); - operator const D3DMATRIX& () const; - - // assignment operators - D3DXMATRIX& operator *= ( const D3DXMATRIX& ); - D3DXMATRIX& operator += ( const D3DXMATRIX& ); - D3DXMATRIX& operator -= ( const D3DXMATRIX& ); - D3DXMATRIX& operator *= ( float ); - D3DXMATRIX& operator /= ( float ); - - // unary operators - D3DXMATRIX operator + () const; - D3DXMATRIX operator - () const; - - // binary operators - D3DXMATRIX operator * ( const D3DXMATRIX& ) const; - D3DXMATRIX operator + ( const D3DXMATRIX& ) const; - D3DXMATRIX operator - ( const D3DXMATRIX& ) const; - D3DXMATRIX operator * ( float ) const; - D3DXMATRIX operator / ( float ) const; - - friend D3DXMATRIX operator * ( float, const D3DXMATRIX& ); - - BOOL operator == ( const D3DXMATRIX& ) const; - BOOL operator != ( const D3DXMATRIX& ) const; - - -#endif //__cplusplus - - union - { - float m[4][4]; -#ifdef __cplusplus - struct - { - float m00, m01, m02, m03; - float m10, m11, m12, m13; - float m20, m21, m22, m23; - float m30, m31, m32, m33; - }; -#endif //__cplusplus - }; -} D3DXMATRIX, *LPD3DXMATRIX; - - -//=========================================================================== -// -// Quaternions -// -//=========================================================================== -typedef struct D3DXQUATERNION -{ -#ifdef __cplusplus -public: - D3DXQUATERNION() {} - D3DXQUATERNION( const float * ); - D3DXQUATERNION( float x, float y, float z, float w ); - - // casting - operator float* (); - operator const float* () const; - - // assignment operators - D3DXQUATERNION& operator += ( const D3DXQUATERNION& ); - D3DXQUATERNION& operator -= ( const D3DXQUATERNION& ); - D3DXQUATERNION& operator *= ( const D3DXQUATERNION& ); - D3DXQUATERNION& operator *= ( float ); - D3DXQUATERNION& operator /= ( float ); - - // unary operators - D3DXQUATERNION operator + () const; - D3DXQUATERNION operator - () const; - - // binary operators - D3DXQUATERNION operator + ( const D3DXQUATERNION& ) const; - D3DXQUATERNION operator - ( const D3DXQUATERNION& ) const; - D3DXQUATERNION operator * ( const D3DXQUATERNION& ) const; - D3DXQUATERNION operator * ( float ) const; - D3DXQUATERNION operator / ( float ) const; - - friend D3DXQUATERNION operator * (float, const D3DXQUATERNION& ); - - BOOL operator == ( const D3DXQUATERNION& ) const; - BOOL operator != ( const D3DXQUATERNION& ) const; - -#endif //__cplusplus - float x, y, z, w; -} D3DXQUATERNION, *LPD3DXQUATERNION; - - -//=========================================================================== -// -// Planes -// -//=========================================================================== -typedef struct D3DXPLANE -{ -#ifdef __cplusplus -public: - D3DXPLANE() {} - D3DXPLANE( const float* ); - D3DXPLANE( float a, float b, float c, float d ); - - // casting - operator float* (); - operator const float* () const; - - // unary operators - D3DXPLANE operator + () const; - D3DXPLANE operator - () const; - - // binary operators - BOOL operator == ( const D3DXPLANE& ) const; - BOOL operator != ( const D3DXPLANE& ) const; - -#endif //__cplusplus - float a, b, c, d; -} D3DXPLANE, *LPD3DXPLANE; - - -//=========================================================================== -// -// Colors -// -//=========================================================================== - -typedef struct D3DXCOLOR -{ -#ifdef __cplusplus -public: - D3DXCOLOR() {} - D3DXCOLOR( DWORD argb ); - D3DXCOLOR( const float * ); - D3DXCOLOR( const D3DCOLORVALUE& ); - D3DXCOLOR( float r, float g, float b, float a ); - - // casting - operator DWORD () const; - - operator float* (); - operator const float* () const; - - operator D3DCOLORVALUE* (); - operator const D3DCOLORVALUE* () const; - - operator D3DCOLORVALUE& (); - operator const D3DCOLORVALUE& () const; - - // assignment operators - D3DXCOLOR& operator += ( const D3DXCOLOR& ); - D3DXCOLOR& operator -= ( const D3DXCOLOR& ); - D3DXCOLOR& operator *= ( float ); - D3DXCOLOR& operator /= ( float ); - - // unary operators - D3DXCOLOR operator + () const; - D3DXCOLOR operator - () const; - - // binary operators - D3DXCOLOR operator + ( const D3DXCOLOR& ) const; - D3DXCOLOR operator - ( const D3DXCOLOR& ) const; - D3DXCOLOR operator * ( float ) const; - D3DXCOLOR operator / ( float ) const; - - friend D3DXCOLOR operator * (float, const D3DXCOLOR& ); - - BOOL operator == ( const D3DXCOLOR& ) const; - BOOL operator != ( const D3DXCOLOR& ) const; - -#endif //__cplusplus - FLOAT r, g, b, a; -} D3DXCOLOR, *LPD3DXCOLOR; - - - -//=========================================================================== -// -// D3DX math functions: -// -// NOTE: -// * All these functions can take the same object as in and out parameters. -// -// * Out parameters are typically also returned as return values, so that -// the output of one function may be used as a parameter to another. -// -//=========================================================================== - -//-------------------------- -// 2D Vector -//-------------------------- - -// inline - -float D3DXVec2Length - ( const D3DXVECTOR2 *pV ); - -float D3DXVec2LengthSq - ( const D3DXVECTOR2 *pV ); - -float D3DXVec2Dot - ( const D3DXVECTOR2 *pV1, const D3DXVECTOR2 *pV2 ); - -// Z component of ((x1,y1,0) cross (x2,y2,0)) -float D3DXVec2CCW - ( const D3DXVECTOR2 *pV1, const D3DXVECTOR2 *pV2 ); - -D3DXVECTOR2* D3DXVec2Add - ( D3DXVECTOR2 *pOut, const D3DXVECTOR2 *pV1, const D3DXVECTOR2 *pV2 ); - -D3DXVECTOR2* D3DXVec2Subtract - ( D3DXVECTOR2 *pOut, const D3DXVECTOR2 *pV1, const D3DXVECTOR2 *pV2 ); - -// Minimize each component. x = min(x1, x2), y = min(y1, y2) -D3DXVECTOR2* D3DXVec2Minimize - ( D3DXVECTOR2 *pOut, const D3DXVECTOR2 *pV1, const D3DXVECTOR2 *pV2 ); - -// Maximize each component. x = max(x1, x2), y = max(y1, y2) -D3DXVECTOR2* D3DXVec2Maximize - ( D3DXVECTOR2 *pOut, const D3DXVECTOR2 *pV1, const D3DXVECTOR2 *pV2 ); - -D3DXVECTOR2* D3DXVec2Scale - ( D3DXVECTOR2 *pOut, const D3DXVECTOR2 *pV, float s ); - -// Linear interpolation. V1 + s(V2-V1) -D3DXVECTOR2* D3DXVec2Lerp - ( D3DXVECTOR2 *pOut, const D3DXVECTOR2 *pV1, const D3DXVECTOR2 *pV2, - float s ); - -// non-inline -#ifdef __cplusplus -extern "C" { -#endif - -D3DXVECTOR2* WINAPI D3DXVec2Normalize - ( D3DXVECTOR2 *pOut, const D3DXVECTOR2 *pV ); - -// Hermite interpolation between position V1, tangent T1 (when s == 0) -// and position V2, tangent T2 (when s == 1). -D3DXVECTOR2* WINAPI D3DXVec2Hermite - ( D3DXVECTOR2 *pOut, const D3DXVECTOR2 *pV1, const D3DXVECTOR2 *pT1, - const D3DXVECTOR2 *pV2, const D3DXVECTOR2 *pT2, float s ); - -// Barycentric coordinates. V1 + f(V2-V1) + g(V3-V1) -D3DXVECTOR2* WINAPI D3DXVec2BaryCentric - ( D3DXVECTOR2 *pOut, const D3DXVECTOR2 *pV1, const D3DXVECTOR2 *pV2, - D3DXVECTOR2 *pV3, float f, float g); - -// Transform (x, y, 0, 1) by matrix. -D3DXVECTOR4* WINAPI D3DXVec2Transform - ( D3DXVECTOR4 *pOut, const D3DXVECTOR2 *pV, const D3DXMATRIX *pM ); - -// Transform (x, y, 0, 1) by matrix, project result back into w=1. -D3DXVECTOR2* WINAPI D3DXVec2TransformCoord - ( D3DXVECTOR2 *pOut, const D3DXVECTOR2 *pV, const D3DXMATRIX *pM ); - -// Transform (x, y, 0, 0) by matrix. -D3DXVECTOR2* WINAPI D3DXVec2TransformNormal - ( D3DXVECTOR2 *pOut, const D3DXVECTOR2 *pV, const D3DXMATRIX *pM ); - -#ifdef __cplusplus -} -#endif - - -//-------------------------- -// 3D Vector -//-------------------------- - -// inline - -float D3DXVec3Length - ( const D3DXVECTOR3 *pV ); - -float D3DXVec3LengthSq - ( const D3DXVECTOR3 *pV ); - -float D3DXVec3Dot - ( const D3DXVECTOR3 *pV1, const D3DXVECTOR3 *pV2 ); - -D3DXVECTOR3* D3DXVec3Cross - ( D3DXVECTOR3 *pOut, const D3DXVECTOR3 *pV1, const D3DXVECTOR3 *pV2 ); - -D3DXVECTOR3* D3DXVec3Add - ( D3DXVECTOR3 *pOut, const D3DXVECTOR3 *pV1, const D3DXVECTOR3 *pV2 ); - -D3DXVECTOR3* D3DXVec3Subtract - ( D3DXVECTOR3 *pOut, const D3DXVECTOR3 *pV1, const D3DXVECTOR3 *pV2 ); - -// Minimize each component. x = min(x1, x2), y = min(y1, y2), ... -D3DXVECTOR3* D3DXVec3Minimize - ( D3DXVECTOR3 *pOut, const D3DXVECTOR3 *pV1, const D3DXVECTOR3 *pV2 ); - -// Maximize each component. x = max(x1, x2), y = max(y1, y2), ... -D3DXVECTOR3* D3DXVec3Maximize - ( D3DXVECTOR3 *pOut, const D3DXVECTOR3 *pV1, const D3DXVECTOR3 *pV2 ); - -D3DXVECTOR3* D3DXVec3Scale - ( D3DXVECTOR3 *pOut, const D3DXVECTOR3 *pV, float s); - -// Linear interpolation. V1 + s(V2-V1) -D3DXVECTOR3* D3DXVec3Lerp - ( D3DXVECTOR3 *pOut, const D3DXVECTOR3 *pV1, const D3DXVECTOR3 *pV2, - float s ); - -// non-inline -#ifdef __cplusplus -extern "C" { -#endif - -D3DXVECTOR3* WINAPI D3DXVec3Normalize - ( D3DXVECTOR3 *pOut, const D3DXVECTOR3 *pV ); - -// Hermite interpolation between position V1, tangent T1 (when s == 0) -// and position V2, tangent T2 (when s == 1). -D3DXVECTOR3* WINAPI D3DXVec3Hermite - ( D3DXVECTOR3 *pOut, const D3DXVECTOR3 *pV1, const D3DXVECTOR3 *pT1, - const D3DXVECTOR3 *pV2, const D3DXVECTOR3 *pT2, float s ); - -// Barycentric coordinates. V1 + f(V2-V1) + g(V3-V1) -D3DXVECTOR3* WINAPI D3DXVec3BaryCentric - ( D3DXVECTOR3 *pOut, const D3DXVECTOR3 *pV1, const D3DXVECTOR3 *pV2, - const D3DXVECTOR3 *pV3, float f, float g); - -// Transform (x, y, z, 1) by matrix. -D3DXVECTOR4* WINAPI D3DXVec3Transform - ( D3DXVECTOR4 *pOut, const D3DXVECTOR3 *pV, const D3DXMATRIX *pM ); - -// Transform (x, y, z, 1) by matrix, project result back into w=1. -D3DXVECTOR3* WINAPI D3DXVec3TransformCoord - ( D3DXVECTOR3 *pOut, const D3DXVECTOR3 *pV, const D3DXMATRIX *pM ); - -// Transform (x, y, z, 0) by matrix. -D3DXVECTOR3* WINAPI D3DXVec3TransformNormal - ( D3DXVECTOR3 *pOut, const D3DXVECTOR3 *pV, const D3DXMATRIX *pM ); - -#ifdef __cplusplus -} -#endif - - - -//-------------------------- -// 4D Vector -//-------------------------- - -// inline - -float D3DXVec4Length - ( const D3DXVECTOR4 *pV ); - -float D3DXVec4LengthSq - ( const D3DXVECTOR4 *pV ); - -float D3DXVec4Dot - ( const D3DXVECTOR4 *pV1, const D3DXVECTOR4 *pV2 ); - -D3DXVECTOR4* D3DXVec4Add - ( D3DXVECTOR4 *pOut, const D3DXVECTOR4 *pV1, const D3DXVECTOR4 *pV2); - -D3DXVECTOR4* D3DXVec4Subtract - ( D3DXVECTOR4 *pOut, const D3DXVECTOR4 *pV1, const D3DXVECTOR4 *pV2); - -// Minimize each component. x = min(x1, x2), y = min(y1, y2), ... -D3DXVECTOR4* D3DXVec4Minimize - ( D3DXVECTOR4 *pOut, const D3DXVECTOR4 *pV1, const D3DXVECTOR4 *pV2); - -// Maximize each component. x = max(x1, x2), y = max(y1, y2), ... -D3DXVECTOR4* D3DXVec4Maximize - ( D3DXVECTOR4 *pOut, const D3DXVECTOR4 *pV1, const D3DXVECTOR4 *pV2); - -D3DXVECTOR4* D3DXVec4Scale - ( D3DXVECTOR4 *pOut, const D3DXVECTOR4 *pV, float s); - -// Linear interpolation. V1 + s(V2-V1) -D3DXVECTOR4* D3DXVec4Lerp - ( D3DXVECTOR4 *pOut, const D3DXVECTOR4 *pV1, const D3DXVECTOR4 *pV2, - float s ); - -// non-inline -#ifdef __cplusplus -extern "C" { -#endif - -// Cross-product in 4 dimensions. -D3DXVECTOR4* WINAPI D3DXVec4Cross - ( D3DXVECTOR4 *pOut, const D3DXVECTOR4 *pV1, const D3DXVECTOR4 *pV2, - const D3DXVECTOR4 *pV3); - -D3DXVECTOR4* WINAPI D3DXVec4Normalize - ( D3DXVECTOR4 *pOut, const D3DXVECTOR4 *pV ); - -// Hermite interpolation between position V1, tangent T1 (when s == 0) -// and position V2, tangent T2 (when s == 1). -D3DXVECTOR4* WINAPI D3DXVec4Hermite - ( D3DXVECTOR4 *pOut, const D3DXVECTOR4 *pV1, const D3DXVECTOR4 *pT1, - const D3DXVECTOR4 *pV2, const D3DXVECTOR4 *pT2, float s ); - -// Barycentric coordinates. V1 + f(V2-V1) + g(V3-V1) -D3DXVECTOR4* WINAPI D3DXVec4BaryCentric - ( D3DXVECTOR4 *pOut, const D3DXVECTOR4 *pV1, const D3DXVECTOR4 *pV2, - const D3DXVECTOR4 *pV3, float f, float g); - -// Transform vector by matrix. -D3DXVECTOR4* WINAPI D3DXVec4Transform - ( D3DXVECTOR4 *pOut, const D3DXVECTOR4 *pV, const D3DXMATRIX *pM ); - -#ifdef __cplusplus -} -#endif - - -//-------------------------- -// 4D Matrix -//-------------------------- - -// inline - -D3DXMATRIX* D3DXMatrixIdentity - ( D3DXMATRIX *pOut ); - -BOOL D3DXMatrixIsIdentity - ( const D3DXMATRIX *pM ); - - -// non-inline -#ifdef __cplusplus -extern "C" { -#endif - -float WINAPI D3DXMatrixfDeterminant - ( const D3DXMATRIX *pM ); - -// Matrix multiplication. The result represents the transformation M2 -// followed by the transformation M1. (Out = M1 * M2) -D3DXMATRIX* WINAPI D3DXMatrixMultiply - ( D3DXMATRIX *pOut, const D3DXMATRIX *pM1, const D3DXMATRIX *pM2 ); - -D3DXMATRIX* WINAPI D3DXMatrixTranspose - ( D3DXMATRIX *pOut, const D3DXMATRIX *pM ); - -// Calculate inverse of matrix. Inversion my fail, in which case NULL will -// be returned. The determinant of pM is also returned it pfDeterminant -// is non-NULL. -D3DXMATRIX* WINAPI D3DXMatrixInverse - ( D3DXMATRIX *pOut, float *pfDeterminant, const D3DXMATRIX *pM ); - -// Build a matrix which scales by (sx, sy, sz) -D3DXMATRIX* WINAPI D3DXMatrixScaling - ( D3DXMATRIX *pOut, float sx, float sy, float sz ); - -// Build a matrix which translates by (x, y, z) -D3DXMATRIX* WINAPI D3DXMatrixTranslation - ( D3DXMATRIX *pOut, float x, float y, float z ); - -// Build a matrix which rotates around the X axis -D3DXMATRIX* WINAPI D3DXMatrixRotationX - ( D3DXMATRIX *pOut, float angle ); - -// Build a matrix which rotates around the Y axis -D3DXMATRIX* WINAPI D3DXMatrixRotationY - ( D3DXMATRIX *pOut, float angle ); - -// Build a matrix which rotates around the Z axis -D3DXMATRIX* WINAPI D3DXMatrixRotationZ - ( D3DXMATRIX *pOut, float angle ); - -// Build a matrix which rotates around an arbitrary axis -D3DXMATRIX* WINAPI D3DXMatrixRotationAxis - ( D3DXMATRIX *pOut, const D3DXVECTOR3 *pV, float angle ); - -// Build a matrix from a quaternion -D3DXMATRIX* WINAPI D3DXMatrixRotationQuaternion - ( D3DXMATRIX *pOut, const D3DXQUATERNION *pQ); - -// Yaw around the Y axis, a pitch around the X axis, -// and a roll around the Z axis. -D3DXMATRIX* WINAPI D3DXMatrixRotationYawPitchRoll - ( D3DXMATRIX *pOut, float yaw, float pitch, float roll ); - - -// Build transformation matrix. NULL arguments are treated as identity. -// Mout = Msc-1 * Msr-1 * Ms * Msr * Msc * Mrc-1 * Mr * Mrc * Mt -D3DXMATRIX* WINAPI D3DXMatrixTransformation - ( D3DXMATRIX *pOut, const D3DXVECTOR3 *pScalingCenter, - const D3DXQUATERNION *pScalingRotation, const D3DXVECTOR3 *pScaling, - const D3DXVECTOR3 *pRotationCenter, const D3DXQUATERNION *pRotation, - const D3DXVECTOR3 *pTranslation); - -// Build affine transformation matrix. NULL arguments are treated as identity. -// Mout = Ms * Mrc-1 * Mr * Mrc * Mt -D3DXMATRIX* WINAPI D3DXMatrixAffineTransformation - ( D3DXMATRIX *pOut, float Scaling, const D3DXVECTOR3 *pRotationCenter, - const D3DXQUATERNION *pRotation, const D3DXVECTOR3 *pTranslation); - -// Build a lookat matrix. (right-handed) -D3DXMATRIX* WINAPI D3DXMatrixLookAt - ( D3DXMATRIX *pOut, const D3DXVECTOR3 *pEye, const D3DXVECTOR3 *pAt, - const D3DXVECTOR3 *pUp ); - -// Build a lookat matrix. (left-handed) -D3DXMATRIX* WINAPI D3DXMatrixLookAtLH - ( D3DXMATRIX *pOut, const D3DXVECTOR3 *pEye, const D3DXVECTOR3 *pAt, - const D3DXVECTOR3 *pUp ); - -// Build a perspective projection matrix. (right-handed) -D3DXMATRIX* WINAPI D3DXMatrixPerspective - ( D3DXMATRIX *pOut, float w, float h, float zn, float zf ); - -// Build a perspective projection matrix. (left-handed) -D3DXMATRIX* WINAPI D3DXMatrixPerspectiveLH - ( D3DXMATRIX *pOut, float w, float h, float zn, float zf ); - -// Build a perspective projection matrix. (right-handed) -D3DXMATRIX* WINAPI D3DXMatrixPerspectiveFov - ( D3DXMATRIX *pOut, float fovy, float aspect, float zn, float zf ); - -// Build a perspective projection matrix. (left-handed) -D3DXMATRIX* WINAPI D3DXMatrixPerspectiveFovLH - ( D3DXMATRIX *pOut, float fovy, float aspect, float zn, float zf ); - -// Build a perspective projection matrix. (right-handed) -D3DXMATRIX* WINAPI D3DXMatrixPerspectiveOffCenter - ( D3DXMATRIX *pOut, float l, float r, float b, float t, float zn, - float zf ); - -// Build a perspective projection matrix. (left-handed) -D3DXMATRIX* WINAPI D3DXMatrixPerspectiveOffCenterLH - ( D3DXMATRIX *pOut, float l, float r, float b, float t, float zn, - float zf ); - -// Build an ortho projection matrix. (right-handed) -D3DXMATRIX* WINAPI D3DXMatrixOrtho - ( D3DXMATRIX *pOut, float w, float h, float zn, float zf ); - -// Build an ortho projection matrix. (left-handed) -D3DXMATRIX* WINAPI D3DXMatrixOrthoLH - ( D3DXMATRIX *pOut, float w, float h, float zn, float zf ); - -// Build an ortho projection matrix. (right-handed) -D3DXMATRIX* WINAPI D3DXMatrixOrthoOffCenter - ( D3DXMATRIX *pOut, float l, float r, float b, float t, float zn, - float zf ); - -// Build an ortho projection matrix. (left-handed) -D3DXMATRIX* WINAPI D3DXMatrixOrthoOffCenterLH - ( D3DXMATRIX *pOut, float l, float r, float b, float t, float zn, - float zf ); - -// Build a matrix which flattens geometry into a plane, as if casting -// a shadow from a light. -D3DXMATRIX* WINAPI D3DXMatrixShadow - ( D3DXMATRIX *pOut, const D3DXVECTOR4 *pLight, - const D3DXPLANE *pPlane ); - -// Build a matrix which reflects the coordinate system about a plane -D3DXMATRIX* WINAPI D3DXMatrixReflect - ( D3DXMATRIX *pOut, const D3DXPLANE *pPlane ); - -#ifdef __cplusplus -} -#endif - - -//-------------------------- -// Quaternion -//-------------------------- - -// inline - -float D3DXQuaternionLength - ( const D3DXQUATERNION *pQ ); - -// Length squared, or "norm" -float D3DXQuaternionLengthSq - ( const D3DXQUATERNION *pQ ); - -float D3DXQuaternionDot - ( const D3DXQUATERNION *pQ1, const D3DXQUATERNION *pQ2 ); - -// (0, 0, 0, 1) -D3DXQUATERNION* D3DXQuaternionIdentity - ( D3DXQUATERNION *pOut ); - -BOOL D3DXQuaternionIsIdentity - ( const D3DXQUATERNION *pQ ); - -// (-x, -y, -z, w) -D3DXQUATERNION* D3DXQuaternionConjugate - ( D3DXQUATERNION *pOut, const D3DXQUATERNION *pQ ); - - -// non-inline -#ifdef __cplusplus -extern "C" { -#endif - -// Compute a quaternin's axis and angle of rotation. Expects unit quaternions. -void WINAPI D3DXQuaternionToAxisAngle - ( const D3DXQUATERNION *pQ, D3DXVECTOR3 *pAxis, float *pAngle ); - -// Build a quaternion from a rotation matrix. -D3DXQUATERNION* WINAPI D3DXQuaternionRotationMatrix - ( D3DXQUATERNION *pOut, const D3DXMATRIX *pM); - -// Rotation about arbitrary axis. -D3DXQUATERNION* WINAPI D3DXQuaternionRotationAxis - ( D3DXQUATERNION *pOut, const D3DXVECTOR3 *pV, float angle ); - -// Yaw around the Y axis, a pitch around the X axis, -// and a roll around the Z axis. -D3DXQUATERNION* WINAPI D3DXQuaternionRotationYawPitchRoll - ( D3DXQUATERNION *pOut, float yaw, float pitch, float roll ); - -// Quaternion multiplication. The result represents the rotation Q2 -// followed by the rotation Q1. (Out = Q2 * Q1) -D3DXQUATERNION* WINAPI D3DXQuaternionMultiply - ( D3DXQUATERNION *pOut, const D3DXQUATERNION *pQ1, - const D3DXQUATERNION *pQ2 ); - -D3DXQUATERNION* WINAPI D3DXQuaternionNormalize - ( D3DXQUATERNION *pOut, const D3DXQUATERNION *pQ ); - -// Conjugate and re-norm -D3DXQUATERNION* WINAPI D3DXQuaternionInverse - ( D3DXQUATERNION *pOut, const D3DXQUATERNION *pQ ); - -// Expects unit quaternions. -// if q = (cos(theta), sin(theta) * v); ln(q) = (0, theta * v) -D3DXQUATERNION* WINAPI D3DXQuaternionLn - ( D3DXQUATERNION *pOut, const D3DXQUATERNION *pQ ); - -// Expects pure quaternions. (w == 0) w is ignored in calculation. -// if q = (0, theta * v); exp(q) = (cos(theta), sin(theta) * v) -D3DXQUATERNION* WINAPI D3DXQuaternionExp - ( D3DXQUATERNION *pOut, const D3DXQUATERNION *pQ ); - -// Spherical linear interpolation between Q1 (s == 0) and Q2 (s == 1). -// Expects unit quaternions. -D3DXQUATERNION* WINAPI D3DXQuaternionSlerp - ( D3DXQUATERNION *pOut, const D3DXQUATERNION *pQ1, - const D3DXQUATERNION *pQ2, float t ); - -// Spherical quadrangle interpolation. -// Slerp(Slerp(Q1, Q4, t), Slerp(Q2, Q3, t), 2t(1-t)) -D3DXQUATERNION* WINAPI D3DXQuaternionSquad - ( D3DXQUATERNION *pOut, const D3DXQUATERNION *pQ1, - const D3DXQUATERNION *pQ2, const D3DXQUATERNION *pQ3, - const D3DXQUATERNION *pQ4, float t ); - -// Slerp(Slerp(Q1, Q2, f+g), Slerp(Q1, Q3, f+g), g/(f+g)) -D3DXQUATERNION* WINAPI D3DXQuaternionBaryCentric - ( D3DXQUATERNION *pOut, const D3DXQUATERNION *pQ1, - const D3DXQUATERNION *pQ2, const D3DXQUATERNION *pQ3, - float f, float g ); - -#ifdef __cplusplus -} -#endif - - -//-------------------------- -// Plane -//-------------------------- - -// inline - -// ax + by + cz + dw -float D3DXPlaneDot - ( const D3DXPLANE *pP, const D3DXVECTOR4 *pV); - -// ax + by + cz + d -float D3DXPlaneDotCoord - ( const D3DXPLANE *pP, const D3DXVECTOR3 *pV); - -// ax + by + cz -float D3DXPlaneDotNormal - ( const D3DXPLANE *pP, const D3DXVECTOR3 *pV); - -// non-inline -#ifdef __cplusplus -extern "C" { -#endif - -// Normalize plane (so that |a,b,c| == 1) -D3DXPLANE* WINAPI D3DXPlaneNormalize - ( D3DXPLANE *pOut, const D3DXPLANE *pP); - -// Find the intersection between a plane and a line. If the line is -// parallel to the plane, NULL is returned. -D3DXVECTOR3* WINAPI D3DXPlaneIntersectLine - ( D3DXVECTOR3 *pOut, const D3DXPLANE *pP, const D3DXVECTOR3 *pV1, - const D3DXVECTOR3 *pV2); - -// Construct a plane from a point and a normal -D3DXPLANE* WINAPI D3DXPlaneFromPointNormal - ( D3DXPLANE *pOut, const D3DXVECTOR3 *pPoint, const D3DXVECTOR3 *pNormal); - -// Construct a plane from 3 points -D3DXPLANE* WINAPI D3DXPlaneFromPoints - ( D3DXPLANE *pOut, const D3DXVECTOR3 *pV1, const D3DXVECTOR3 *pV2, - const D3DXVECTOR3 *pV3); - -// Transform a plane by a matrix. The vector (a,b,c) must be normal. -// M must be an affine transform. -D3DXPLANE* WINAPI D3DXPlaneTransform - ( D3DXPLANE *pOut, const D3DXPLANE *pP, const D3DXMATRIX *pM ); - -#ifdef __cplusplus -} -#endif - - -//-------------------------- -// Color -//-------------------------- - -// inline - -// (1-r, 1-g, 1-b, a) -D3DXCOLOR* D3DXColorNegative - (D3DXCOLOR *pOut, const D3DXCOLOR *pC); - -D3DXCOLOR* D3DXColorAdd - (D3DXCOLOR *pOut, const D3DXCOLOR *pC1, const D3DXCOLOR *pC2); - -D3DXCOLOR* D3DXColorSubtract - (D3DXCOLOR *pOut, const D3DXCOLOR *pC1, const D3DXCOLOR *pC2); - -D3DXCOLOR* D3DXColorScale - (D3DXCOLOR *pOut, const D3DXCOLOR *pC, float s); - -// (r1*r2, g1*g2, b1*b2, a1*a2) -D3DXCOLOR* D3DXColorModulate - (D3DXCOLOR *pOut, const D3DXCOLOR *pC1, const D3DXCOLOR *pC2); - -// Linear interpolation of r,g,b, and a. C1 + s(C2-C1) -D3DXCOLOR* D3DXColorLerp - (D3DXCOLOR *pOut, const D3DXCOLOR *pC1, const D3DXCOLOR *pC2, float s); - -// non-inline -#ifdef __cplusplus -extern "C" { -#endif - -// Interpolate r,g,b between desaturated color and color. -// DesaturatedColor + s(Color - DesaturatedColor) -D3DXCOLOR* WINAPI D3DXColorAdjustSaturation - (D3DXCOLOR *pOut, const D3DXCOLOR *pC, float s); - -// Interpolate r,g,b between 50% grey and color. Grey + s(Color - Grey) -D3DXCOLOR* WINAPI D3DXColorAdjustContrast - (D3DXCOLOR *pOut, const D3DXCOLOR *pC, float c); - -#ifdef __cplusplus -} -#endif - - - - - - -//=========================================================================== -// -// Matrix Stack -// -//=========================================================================== - -DECLARE_INTERFACE_(ID3DXMatrixStack, IUnknown) -{ - // - // IUnknown methods - // - STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - - // - // ID3DXMatrixStack methods - // - - // Pops the top of the stack, returns the current top - // *after* popping the top. - STDMETHOD(Pop)(THIS) PURE; - - // Pushes the stack by one, duplicating the current matrix. - STDMETHOD(Push)(THIS) PURE; - - // Loads identity in the current matrix. - STDMETHOD(LoadIdentity)(THIS) PURE; - - // Loads the given matrix into the current matrix - STDMETHOD(LoadMatrix)(THIS_ const D3DXMATRIX* pM ) PURE; - - // Right-Multiplies the given matrix to the current matrix. - // (transformation is about the current world origin) - STDMETHOD(MultMatrix)(THIS_ const D3DXMATRIX* pM ) PURE; - - // Left-Multiplies the given matrix to the current matrix - // (transformation is about the local origin of the object) - STDMETHOD(MultMatrixLocal)(THIS_ const D3DXMATRIX* pM ) PURE; - - // Right multiply the current matrix with the computed rotation - // matrix, counterclockwise about the given axis with the given angle. - // (rotation is about the current world origin) - STDMETHOD(RotateAxis) - (THIS_ const D3DXVECTOR3* pV, float angle) PURE; - - // Left multiply the current matrix with the computed rotation - // matrix, counterclockwise about the given axis with the given angle. - // (rotation is about the local origin of the object) - STDMETHOD(RotateAxisLocal) - (THIS_ const D3DXVECTOR3* pV, float angle) PURE; - - // Right multiply the current matrix with the computed rotation - // matrix. All angles are counterclockwise. (rotation is about the - // current world origin) - - // The rotation is composed of a yaw around the Y axis, a pitch around - // the X axis, and a roll around the Z axis. - STDMETHOD(RotateYawPitchRoll) - (THIS_ float yaw, float pitch, float roll) PURE; - - // Left multiply the current matrix with the computed rotation - // matrix. All angles are counterclockwise. (rotation is about the - // local origin of the object) - - // The rotation is composed of a yaw around the Y axis, a pitch around - // the X axis, and a roll around the Z axis. - STDMETHOD(RotateYawPitchRollLocal) - (THIS_ float yaw, float pitch, float roll) PURE; - - // Right multiply the current matrix with the computed scale - // matrix. (transformation is about the current world origin) - STDMETHOD(Scale)(THIS_ float x, float y, float z) PURE; - - // Left multiply the current matrix with the computed scale - // matrix. (transformation is about the local origin of the object) - STDMETHOD(ScaleLocal)(THIS_ float x, float y, float z) PURE; - - // Right multiply the current matrix with the computed translation - // matrix. (transformation is about the current world origin) - STDMETHOD(Translate)(THIS_ float x, float y, float z ) PURE; - - // Left multiply the current matrix with the computed translation - // matrix. (transformation is about the local origin of the object) - STDMETHOD(TranslateLocal)(THIS_ float x, float y, float z) PURE; - - // Obtain the current matrix at the top of the stack - STDMETHOD_(D3DXMATRIX*, GetTop)(THIS) PURE; -}; - -#ifdef __cplusplus -extern "C" { -#endif - -HRESULT WINAPI D3DXCreateMatrixStack( DWORD flags, LPD3DXMATRIXSTACK *ppStack ); - -#ifdef __cplusplus -} -#endif - -#include "d3dxmath.inl" - -#if _MSC_VER >= 1200 -#pragma warning(pop) -#else -#pragma warning(default:4201) -#endif - -#endif // __D3DXMATH_H__ +////////////////////////////////////////////////////////////////////////////// +// +// Copyright (C) Microsoft Corporation. All Rights Reserved. +// +// File: d3dxmath.h +// Content: D3DX math types and functions +// +////////////////////////////////////////////////////////////////////////////// + +#ifndef __D3DXMATH_H__ +#define __D3DXMATH_H__ + +#include +#include +#include +#include "d3dxerr.h" + +#ifndef D3DXINLINE +#ifdef __cplusplus +#define D3DXINLINE inline +#else +#define D3DXINLINE _inline +#endif +#endif + +#if _MSC_VER >= 1200 +#pragma warning(push) +#endif +#pragma warning(disable:4201) // anonymous unions warning + + + +typedef struct ID3DXMatrixStack *LPD3DXMATRIXSTACK; + +// {E3357330-CC5E-11d2-A434-00A0C90629A8} +DEFINE_GUID( IID_ID3DXMatrixStack, + 0xe3357330, 0xcc5e, 0x11d2, 0xa4, 0x34, 0x0, 0xa0, 0xc9, 0x6, 0x29, 0xa8); + + +//=========================================================================== +// +// General purpose utilities +// +//=========================================================================== +#define D3DX_PI ((float) 3.141592654f) +#define D3DX_1BYPI ((float) 0.318309886f) + +#define D3DXToRadian( degree ) ((degree) * (D3DX_PI / 180.0f)) +#define D3DXToDegree( radian ) ((radian) * (180.0f / D3DX_PI)) + + + +//=========================================================================== +// +// Vectors +// +//=========================================================================== + +//-------------------------- +// 2D Vector +//-------------------------- +typedef struct D3DXVECTOR2 +{ +#ifdef __cplusplus +public: + D3DXVECTOR2() {}; + D3DXVECTOR2( const float * ); + D3DXVECTOR2( float x, float y ); + + // casting + operator float* (); + operator const float* () const; + + // assignment operators + D3DXVECTOR2& operator += ( const D3DXVECTOR2& ); + D3DXVECTOR2& operator -= ( const D3DXVECTOR2& ); + D3DXVECTOR2& operator *= ( float ); + D3DXVECTOR2& operator /= ( float ); + + // unary operators + D3DXVECTOR2 operator + () const; + D3DXVECTOR2 operator - () const; + + // binary operators + D3DXVECTOR2 operator + ( const D3DXVECTOR2& ) const; + D3DXVECTOR2 operator - ( const D3DXVECTOR2& ) const; + D3DXVECTOR2 operator * ( float ) const; + D3DXVECTOR2 operator / ( float ) const; + + friend D3DXVECTOR2 operator * ( float, const D3DXVECTOR2& ); + + BOOL operator == ( const D3DXVECTOR2& ) const; + BOOL operator != ( const D3DXVECTOR2& ) const; + + +public: +#endif //__cplusplus + float x, y; +} D3DXVECTOR2, *LPD3DXVECTOR2; + + +//-------------------------- +// 3D Vector +//-------------------------- +typedef struct D3DXVECTOR3 +{ +#ifdef __cplusplus +public: + D3DXVECTOR3() {}; + D3DXVECTOR3( const float * ); + D3DXVECTOR3( const D3DVECTOR& ); + D3DXVECTOR3( float x, float y, float z ); + + // casting + operator float* (); + operator const float* () const; + + operator D3DVECTOR* (); + operator const D3DVECTOR* () const; + + operator D3DVECTOR& (); + operator const D3DVECTOR& () const; + + // assignment operators + D3DXVECTOR3& operator += ( const D3DXVECTOR3& ); + D3DXVECTOR3& operator -= ( const D3DXVECTOR3& ); + D3DXVECTOR3& operator *= ( float ); + D3DXVECTOR3& operator /= ( float ); + + // unary operators + D3DXVECTOR3 operator + () const; + D3DXVECTOR3 operator - () const; + + // binary operators + D3DXVECTOR3 operator + ( const D3DXVECTOR3& ) const; + D3DXVECTOR3 operator - ( const D3DXVECTOR3& ) const; + D3DXVECTOR3 operator * ( float ) const; + D3DXVECTOR3 operator / ( float ) const; + + friend D3DXVECTOR3 operator * ( float, const struct D3DXVECTOR3& ); + + BOOL operator == ( const D3DXVECTOR3& ) const; + BOOL operator != ( const D3DXVECTOR3& ) const; + +public: +#endif //__cplusplus + float x, y, z; +} D3DXVECTOR3, *LPD3DXVECTOR3; + + +//-------------------------- +// 4D Vector +//-------------------------- +typedef struct D3DXVECTOR4 +{ +#ifdef __cplusplus +public: + D3DXVECTOR4() {}; + D3DXVECTOR4( const float* ); + D3DXVECTOR4( float x, float y, float z, float w ); + + // casting + operator float* (); + operator const float* () const; + + // assignment operators + D3DXVECTOR4& operator += ( const D3DXVECTOR4& ); + D3DXVECTOR4& operator -= ( const D3DXVECTOR4& ); + D3DXVECTOR4& operator *= ( float ); + D3DXVECTOR4& operator /= ( float ); + + // unary operators + D3DXVECTOR4 operator + () const; + D3DXVECTOR4 operator - () const; + + // binary operators + D3DXVECTOR4 operator + ( const D3DXVECTOR4& ) const; + D3DXVECTOR4 operator - ( const D3DXVECTOR4& ) const; + D3DXVECTOR4 operator * ( float ) const; + D3DXVECTOR4 operator / ( float ) const; + + friend D3DXVECTOR4 operator * ( float, const D3DXVECTOR4& ); + + BOOL operator == ( const D3DXVECTOR4& ) const; + BOOL operator != ( const D3DXVECTOR4& ) const; + +public: +#endif //__cplusplus + float x, y, z, w; +} D3DXVECTOR4, *LPD3DXVECTOR4; + + +//=========================================================================== +// +// Matrices +// +//=========================================================================== +typedef struct D3DXMATRIX +{ +#ifdef __cplusplus +public: + D3DXMATRIX() {}; + D3DXMATRIX( const float * ); + D3DXMATRIX( const D3DMATRIX& ); + D3DXMATRIX( float m00, float m01, float m02, float m03, + float m10, float m11, float m12, float m13, + float m20, float m21, float m22, float m23, + float m30, float m31, float m32, float m33 ); + + + // access grants + float& operator () ( UINT iRow, UINT iCol ); + float operator () ( UINT iRow, UINT iCol ) const; + + // casting operators + operator float* (); + operator const float* () const; + + operator D3DMATRIX* (); + operator const D3DMATRIX* () const; + + operator D3DMATRIX& (); + operator const D3DMATRIX& () const; + + // assignment operators + D3DXMATRIX& operator *= ( const D3DXMATRIX& ); + D3DXMATRIX& operator += ( const D3DXMATRIX& ); + D3DXMATRIX& operator -= ( const D3DXMATRIX& ); + D3DXMATRIX& operator *= ( float ); + D3DXMATRIX& operator /= ( float ); + + // unary operators + D3DXMATRIX operator + () const; + D3DXMATRIX operator - () const; + + // binary operators + D3DXMATRIX operator * ( const D3DXMATRIX& ) const; + D3DXMATRIX operator + ( const D3DXMATRIX& ) const; + D3DXMATRIX operator - ( const D3DXMATRIX& ) const; + D3DXMATRIX operator * ( float ) const; + D3DXMATRIX operator / ( float ) const; + + friend D3DXMATRIX operator * ( float, const D3DXMATRIX& ); + + BOOL operator == ( const D3DXMATRIX& ) const; + BOOL operator != ( const D3DXMATRIX& ) const; + + +#endif //__cplusplus + + union + { + float m[4][4]; +#ifdef __cplusplus + struct + { + float m00, m01, m02, m03; + float m10, m11, m12, m13; + float m20, m21, m22, m23; + float m30, m31, m32, m33; + }; +#endif //__cplusplus + }; +} D3DXMATRIX, *LPD3DXMATRIX; + + +//=========================================================================== +// +// Quaternions +// +//=========================================================================== +typedef struct D3DXQUATERNION +{ +#ifdef __cplusplus +public: + D3DXQUATERNION() {} + D3DXQUATERNION( const float * ); + D3DXQUATERNION( float x, float y, float z, float w ); + + // casting + operator float* (); + operator const float* () const; + + // assignment operators + D3DXQUATERNION& operator += ( const D3DXQUATERNION& ); + D3DXQUATERNION& operator -= ( const D3DXQUATERNION& ); + D3DXQUATERNION& operator *= ( const D3DXQUATERNION& ); + D3DXQUATERNION& operator *= ( float ); + D3DXQUATERNION& operator /= ( float ); + + // unary operators + D3DXQUATERNION operator + () const; + D3DXQUATERNION operator - () const; + + // binary operators + D3DXQUATERNION operator + ( const D3DXQUATERNION& ) const; + D3DXQUATERNION operator - ( const D3DXQUATERNION& ) const; + D3DXQUATERNION operator * ( const D3DXQUATERNION& ) const; + D3DXQUATERNION operator * ( float ) const; + D3DXQUATERNION operator / ( float ) const; + + friend D3DXQUATERNION operator * (float, const D3DXQUATERNION& ); + + BOOL operator == ( const D3DXQUATERNION& ) const; + BOOL operator != ( const D3DXQUATERNION& ) const; + +#endif //__cplusplus + float x, y, z, w; +} D3DXQUATERNION, *LPD3DXQUATERNION; + + +//=========================================================================== +// +// Planes +// +//=========================================================================== +typedef struct D3DXPLANE +{ +#ifdef __cplusplus +public: + D3DXPLANE() {} + D3DXPLANE( const float* ); + D3DXPLANE( float a, float b, float c, float d ); + + // casting + operator float* (); + operator const float* () const; + + // unary operators + D3DXPLANE operator + () const; + D3DXPLANE operator - () const; + + // binary operators + BOOL operator == ( const D3DXPLANE& ) const; + BOOL operator != ( const D3DXPLANE& ) const; + +#endif //__cplusplus + float a, b, c, d; +} D3DXPLANE, *LPD3DXPLANE; + + +//=========================================================================== +// +// Colors +// +//=========================================================================== + +typedef struct D3DXCOLOR +{ +#ifdef __cplusplus +public: + D3DXCOLOR() {} + D3DXCOLOR( DWORD argb ); + D3DXCOLOR( const float * ); + D3DXCOLOR( const D3DCOLORVALUE& ); + D3DXCOLOR( float r, float g, float b, float a ); + + // casting + operator DWORD () const; + + operator float* (); + operator const float* () const; + + operator D3DCOLORVALUE* (); + operator const D3DCOLORVALUE* () const; + + operator D3DCOLORVALUE& (); + operator const D3DCOLORVALUE& () const; + + // assignment operators + D3DXCOLOR& operator += ( const D3DXCOLOR& ); + D3DXCOLOR& operator -= ( const D3DXCOLOR& ); + D3DXCOLOR& operator *= ( float ); + D3DXCOLOR& operator /= ( float ); + + // unary operators + D3DXCOLOR operator + () const; + D3DXCOLOR operator - () const; + + // binary operators + D3DXCOLOR operator + ( const D3DXCOLOR& ) const; + D3DXCOLOR operator - ( const D3DXCOLOR& ) const; + D3DXCOLOR operator * ( float ) const; + D3DXCOLOR operator / ( float ) const; + + friend D3DXCOLOR operator * (float, const D3DXCOLOR& ); + + BOOL operator == ( const D3DXCOLOR& ) const; + BOOL operator != ( const D3DXCOLOR& ) const; + +#endif //__cplusplus + FLOAT r, g, b, a; +} D3DXCOLOR, *LPD3DXCOLOR; + + + +//=========================================================================== +// +// D3DX math functions: +// +// NOTE: +// * All these functions can take the same object as in and out parameters. +// +// * Out parameters are typically also returned as return values, so that +// the output of one function may be used as a parameter to another. +// +//=========================================================================== + +//-------------------------- +// 2D Vector +//-------------------------- + +// inline + +float D3DXVec2Length + ( const D3DXVECTOR2 *pV ); + +float D3DXVec2LengthSq + ( const D3DXVECTOR2 *pV ); + +float D3DXVec2Dot + ( const D3DXVECTOR2 *pV1, const D3DXVECTOR2 *pV2 ); + +// Z component of ((x1,y1,0) cross (x2,y2,0)) +float D3DXVec2CCW + ( const D3DXVECTOR2 *pV1, const D3DXVECTOR2 *pV2 ); + +D3DXVECTOR2* D3DXVec2Add + ( D3DXVECTOR2 *pOut, const D3DXVECTOR2 *pV1, const D3DXVECTOR2 *pV2 ); + +D3DXVECTOR2* D3DXVec2Subtract + ( D3DXVECTOR2 *pOut, const D3DXVECTOR2 *pV1, const D3DXVECTOR2 *pV2 ); + +// Minimize each component. x = min(x1, x2), y = min(y1, y2) +D3DXVECTOR2* D3DXVec2Minimize + ( D3DXVECTOR2 *pOut, const D3DXVECTOR2 *pV1, const D3DXVECTOR2 *pV2 ); + +// Maximize each component. x = max(x1, x2), y = max(y1, y2) +D3DXVECTOR2* D3DXVec2Maximize + ( D3DXVECTOR2 *pOut, const D3DXVECTOR2 *pV1, const D3DXVECTOR2 *pV2 ); + +D3DXVECTOR2* D3DXVec2Scale + ( D3DXVECTOR2 *pOut, const D3DXVECTOR2 *pV, float s ); + +// Linear interpolation. V1 + s(V2-V1) +D3DXVECTOR2* D3DXVec2Lerp + ( D3DXVECTOR2 *pOut, const D3DXVECTOR2 *pV1, const D3DXVECTOR2 *pV2, + float s ); + +// non-inline +#ifdef __cplusplus +extern "C" { +#endif + +D3DXVECTOR2* WINAPI D3DXVec2Normalize + ( D3DXVECTOR2 *pOut, const D3DXVECTOR2 *pV ); + +// Hermite interpolation between position V1, tangent T1 (when s == 0) +// and position V2, tangent T2 (when s == 1). +D3DXVECTOR2* WINAPI D3DXVec2Hermite + ( D3DXVECTOR2 *pOut, const D3DXVECTOR2 *pV1, const D3DXVECTOR2 *pT1, + const D3DXVECTOR2 *pV2, const D3DXVECTOR2 *pT2, float s ); + +// Barycentric coordinates. V1 + f(V2-V1) + g(V3-V1) +D3DXVECTOR2* WINAPI D3DXVec2BaryCentric + ( D3DXVECTOR2 *pOut, const D3DXVECTOR2 *pV1, const D3DXVECTOR2 *pV2, + D3DXVECTOR2 *pV3, float f, float g); + +// Transform (x, y, 0, 1) by matrix. +D3DXVECTOR4* WINAPI D3DXVec2Transform + ( D3DXVECTOR4 *pOut, const D3DXVECTOR2 *pV, const D3DXMATRIX *pM ); + +// Transform (x, y, 0, 1) by matrix, project result back into w=1. +D3DXVECTOR2* WINAPI D3DXVec2TransformCoord + ( D3DXVECTOR2 *pOut, const D3DXVECTOR2 *pV, const D3DXMATRIX *pM ); + +// Transform (x, y, 0, 0) by matrix. +D3DXVECTOR2* WINAPI D3DXVec2TransformNormal + ( D3DXVECTOR2 *pOut, const D3DXVECTOR2 *pV, const D3DXMATRIX *pM ); + +#ifdef __cplusplus +} +#endif + + +//-------------------------- +// 3D Vector +//-------------------------- + +// inline + +float D3DXVec3Length + ( const D3DXVECTOR3 *pV ); + +float D3DXVec3LengthSq + ( const D3DXVECTOR3 *pV ); + +float D3DXVec3Dot + ( const D3DXVECTOR3 *pV1, const D3DXVECTOR3 *pV2 ); + +D3DXVECTOR3* D3DXVec3Cross + ( D3DXVECTOR3 *pOut, const D3DXVECTOR3 *pV1, const D3DXVECTOR3 *pV2 ); + +D3DXVECTOR3* D3DXVec3Add + ( D3DXVECTOR3 *pOut, const D3DXVECTOR3 *pV1, const D3DXVECTOR3 *pV2 ); + +D3DXVECTOR3* D3DXVec3Subtract + ( D3DXVECTOR3 *pOut, const D3DXVECTOR3 *pV1, const D3DXVECTOR3 *pV2 ); + +// Minimize each component. x = min(x1, x2), y = min(y1, y2), ... +D3DXVECTOR3* D3DXVec3Minimize + ( D3DXVECTOR3 *pOut, const D3DXVECTOR3 *pV1, const D3DXVECTOR3 *pV2 ); + +// Maximize each component. x = max(x1, x2), y = max(y1, y2), ... +D3DXVECTOR3* D3DXVec3Maximize + ( D3DXVECTOR3 *pOut, const D3DXVECTOR3 *pV1, const D3DXVECTOR3 *pV2 ); + +D3DXVECTOR3* D3DXVec3Scale + ( D3DXVECTOR3 *pOut, const D3DXVECTOR3 *pV, float s); + +// Linear interpolation. V1 + s(V2-V1) +D3DXVECTOR3* D3DXVec3Lerp + ( D3DXVECTOR3 *pOut, const D3DXVECTOR3 *pV1, const D3DXVECTOR3 *pV2, + float s ); + +// non-inline +#ifdef __cplusplus +extern "C" { +#endif + +D3DXVECTOR3* WINAPI D3DXVec3Normalize + ( D3DXVECTOR3 *pOut, const D3DXVECTOR3 *pV ); + +// Hermite interpolation between position V1, tangent T1 (when s == 0) +// and position V2, tangent T2 (when s == 1). +D3DXVECTOR3* WINAPI D3DXVec3Hermite + ( D3DXVECTOR3 *pOut, const D3DXVECTOR3 *pV1, const D3DXVECTOR3 *pT1, + const D3DXVECTOR3 *pV2, const D3DXVECTOR3 *pT2, float s ); + +// Barycentric coordinates. V1 + f(V2-V1) + g(V3-V1) +D3DXVECTOR3* WINAPI D3DXVec3BaryCentric + ( D3DXVECTOR3 *pOut, const D3DXVECTOR3 *pV1, const D3DXVECTOR3 *pV2, + const D3DXVECTOR3 *pV3, float f, float g); + +// Transform (x, y, z, 1) by matrix. +D3DXVECTOR4* WINAPI D3DXVec3Transform + ( D3DXVECTOR4 *pOut, const D3DXVECTOR3 *pV, const D3DXMATRIX *pM ); + +// Transform (x, y, z, 1) by matrix, project result back into w=1. +D3DXVECTOR3* WINAPI D3DXVec3TransformCoord + ( D3DXVECTOR3 *pOut, const D3DXVECTOR3 *pV, const D3DXMATRIX *pM ); + +// Transform (x, y, z, 0) by matrix. +D3DXVECTOR3* WINAPI D3DXVec3TransformNormal + ( D3DXVECTOR3 *pOut, const D3DXVECTOR3 *pV, const D3DXMATRIX *pM ); + +#ifdef __cplusplus +} +#endif + + + +//-------------------------- +// 4D Vector +//-------------------------- + +// inline + +float D3DXVec4Length + ( const D3DXVECTOR4 *pV ); + +float D3DXVec4LengthSq + ( const D3DXVECTOR4 *pV ); + +float D3DXVec4Dot + ( const D3DXVECTOR4 *pV1, const D3DXVECTOR4 *pV2 ); + +D3DXVECTOR4* D3DXVec4Add + ( D3DXVECTOR4 *pOut, const D3DXVECTOR4 *pV1, const D3DXVECTOR4 *pV2); + +D3DXVECTOR4* D3DXVec4Subtract + ( D3DXVECTOR4 *pOut, const D3DXVECTOR4 *pV1, const D3DXVECTOR4 *pV2); + +// Minimize each component. x = min(x1, x2), y = min(y1, y2), ... +D3DXVECTOR4* D3DXVec4Minimize + ( D3DXVECTOR4 *pOut, const D3DXVECTOR4 *pV1, const D3DXVECTOR4 *pV2); + +// Maximize each component. x = max(x1, x2), y = max(y1, y2), ... +D3DXVECTOR4* D3DXVec4Maximize + ( D3DXVECTOR4 *pOut, const D3DXVECTOR4 *pV1, const D3DXVECTOR4 *pV2); + +D3DXVECTOR4* D3DXVec4Scale + ( D3DXVECTOR4 *pOut, const D3DXVECTOR4 *pV, float s); + +// Linear interpolation. V1 + s(V2-V1) +D3DXVECTOR4* D3DXVec4Lerp + ( D3DXVECTOR4 *pOut, const D3DXVECTOR4 *pV1, const D3DXVECTOR4 *pV2, + float s ); + +// non-inline +#ifdef __cplusplus +extern "C" { +#endif + +// Cross-product in 4 dimensions. +D3DXVECTOR4* WINAPI D3DXVec4Cross + ( D3DXVECTOR4 *pOut, const D3DXVECTOR4 *pV1, const D3DXVECTOR4 *pV2, + const D3DXVECTOR4 *pV3); + +D3DXVECTOR4* WINAPI D3DXVec4Normalize + ( D3DXVECTOR4 *pOut, const D3DXVECTOR4 *pV ); + +// Hermite interpolation between position V1, tangent T1 (when s == 0) +// and position V2, tangent T2 (when s == 1). +D3DXVECTOR4* WINAPI D3DXVec4Hermite + ( D3DXVECTOR4 *pOut, const D3DXVECTOR4 *pV1, const D3DXVECTOR4 *pT1, + const D3DXVECTOR4 *pV2, const D3DXVECTOR4 *pT2, float s ); + +// Barycentric coordinates. V1 + f(V2-V1) + g(V3-V1) +D3DXVECTOR4* WINAPI D3DXVec4BaryCentric + ( D3DXVECTOR4 *pOut, const D3DXVECTOR4 *pV1, const D3DXVECTOR4 *pV2, + const D3DXVECTOR4 *pV3, float f, float g); + +// Transform vector by matrix. +D3DXVECTOR4* WINAPI D3DXVec4Transform + ( D3DXVECTOR4 *pOut, const D3DXVECTOR4 *pV, const D3DXMATRIX *pM ); + +#ifdef __cplusplus +} +#endif + + +//-------------------------- +// 4D Matrix +//-------------------------- + +// inline + +D3DXMATRIX* D3DXMatrixIdentity + ( D3DXMATRIX *pOut ); + +BOOL D3DXMatrixIsIdentity + ( const D3DXMATRIX *pM ); + + +// non-inline +#ifdef __cplusplus +extern "C" { +#endif + +float WINAPI D3DXMatrixfDeterminant + ( const D3DXMATRIX *pM ); + +// Matrix multiplication. The result represents the transformation M2 +// followed by the transformation M1. (Out = M1 * M2) +D3DXMATRIX* WINAPI D3DXMatrixMultiply + ( D3DXMATRIX *pOut, const D3DXMATRIX *pM1, const D3DXMATRIX *pM2 ); + +D3DXMATRIX* WINAPI D3DXMatrixTranspose + ( D3DXMATRIX *pOut, const D3DXMATRIX *pM ); + +// Calculate inverse of matrix. Inversion my fail, in which case NULL will +// be returned. The determinant of pM is also returned it pfDeterminant +// is non-NULL. +D3DXMATRIX* WINAPI D3DXMatrixInverse + ( D3DXMATRIX *pOut, float *pfDeterminant, const D3DXMATRIX *pM ); + +// Build a matrix which scales by (sx, sy, sz) +D3DXMATRIX* WINAPI D3DXMatrixScaling + ( D3DXMATRIX *pOut, float sx, float sy, float sz ); + +// Build a matrix which translates by (x, y, z) +D3DXMATRIX* WINAPI D3DXMatrixTranslation + ( D3DXMATRIX *pOut, float x, float y, float z ); + +// Build a matrix which rotates around the X axis +D3DXMATRIX* WINAPI D3DXMatrixRotationX + ( D3DXMATRIX *pOut, float angle ); + +// Build a matrix which rotates around the Y axis +D3DXMATRIX* WINAPI D3DXMatrixRotationY + ( D3DXMATRIX *pOut, float angle ); + +// Build a matrix which rotates around the Z axis +D3DXMATRIX* WINAPI D3DXMatrixRotationZ + ( D3DXMATRIX *pOut, float angle ); + +// Build a matrix which rotates around an arbitrary axis +D3DXMATRIX* WINAPI D3DXMatrixRotationAxis + ( D3DXMATRIX *pOut, const D3DXVECTOR3 *pV, float angle ); + +// Build a matrix from a quaternion +D3DXMATRIX* WINAPI D3DXMatrixRotationQuaternion + ( D3DXMATRIX *pOut, const D3DXQUATERNION *pQ); + +// Yaw around the Y axis, a pitch around the X axis, +// and a roll around the Z axis. +D3DXMATRIX* WINAPI D3DXMatrixRotationYawPitchRoll + ( D3DXMATRIX *pOut, float yaw, float pitch, float roll ); + + +// Build transformation matrix. NULL arguments are treated as identity. +// Mout = Msc-1 * Msr-1 * Ms * Msr * Msc * Mrc-1 * Mr * Mrc * Mt +D3DXMATRIX* WINAPI D3DXMatrixTransformation + ( D3DXMATRIX *pOut, const D3DXVECTOR3 *pScalingCenter, + const D3DXQUATERNION *pScalingRotation, const D3DXVECTOR3 *pScaling, + const D3DXVECTOR3 *pRotationCenter, const D3DXQUATERNION *pRotation, + const D3DXVECTOR3 *pTranslation); + +// Build affine transformation matrix. NULL arguments are treated as identity. +// Mout = Ms * Mrc-1 * Mr * Mrc * Mt +D3DXMATRIX* WINAPI D3DXMatrixAffineTransformation + ( D3DXMATRIX *pOut, float Scaling, const D3DXVECTOR3 *pRotationCenter, + const D3DXQUATERNION *pRotation, const D3DXVECTOR3 *pTranslation); + +// Build a lookat matrix. (right-handed) +D3DXMATRIX* WINAPI D3DXMatrixLookAt + ( D3DXMATRIX *pOut, const D3DXVECTOR3 *pEye, const D3DXVECTOR3 *pAt, + const D3DXVECTOR3 *pUp ); + +// Build a lookat matrix. (left-handed) +D3DXMATRIX* WINAPI D3DXMatrixLookAtLH + ( D3DXMATRIX *pOut, const D3DXVECTOR3 *pEye, const D3DXVECTOR3 *pAt, + const D3DXVECTOR3 *pUp ); + +// Build a perspective projection matrix. (right-handed) +D3DXMATRIX* WINAPI D3DXMatrixPerspective + ( D3DXMATRIX *pOut, float w, float h, float zn, float zf ); + +// Build a perspective projection matrix. (left-handed) +D3DXMATRIX* WINAPI D3DXMatrixPerspectiveLH + ( D3DXMATRIX *pOut, float w, float h, float zn, float zf ); + +// Build a perspective projection matrix. (right-handed) +D3DXMATRIX* WINAPI D3DXMatrixPerspectiveFov + ( D3DXMATRIX *pOut, float fovy, float aspect, float zn, float zf ); + +// Build a perspective projection matrix. (left-handed) +D3DXMATRIX* WINAPI D3DXMatrixPerspectiveFovLH + ( D3DXMATRIX *pOut, float fovy, float aspect, float zn, float zf ); + +// Build a perspective projection matrix. (right-handed) +D3DXMATRIX* WINAPI D3DXMatrixPerspectiveOffCenter + ( D3DXMATRIX *pOut, float l, float r, float b, float t, float zn, + float zf ); + +// Build a perspective projection matrix. (left-handed) +D3DXMATRIX* WINAPI D3DXMatrixPerspectiveOffCenterLH + ( D3DXMATRIX *pOut, float l, float r, float b, float t, float zn, + float zf ); + +// Build an ortho projection matrix. (right-handed) +D3DXMATRIX* WINAPI D3DXMatrixOrtho + ( D3DXMATRIX *pOut, float w, float h, float zn, float zf ); + +// Build an ortho projection matrix. (left-handed) +D3DXMATRIX* WINAPI D3DXMatrixOrthoLH + ( D3DXMATRIX *pOut, float w, float h, float zn, float zf ); + +// Build an ortho projection matrix. (right-handed) +D3DXMATRIX* WINAPI D3DXMatrixOrthoOffCenter + ( D3DXMATRIX *pOut, float l, float r, float b, float t, float zn, + float zf ); + +// Build an ortho projection matrix. (left-handed) +D3DXMATRIX* WINAPI D3DXMatrixOrthoOffCenterLH + ( D3DXMATRIX *pOut, float l, float r, float b, float t, float zn, + float zf ); + +// Build a matrix which flattens geometry into a plane, as if casting +// a shadow from a light. +D3DXMATRIX* WINAPI D3DXMatrixShadow + ( D3DXMATRIX *pOut, const D3DXVECTOR4 *pLight, + const D3DXPLANE *pPlane ); + +// Build a matrix which reflects the coordinate system about a plane +D3DXMATRIX* WINAPI D3DXMatrixReflect + ( D3DXMATRIX *pOut, const D3DXPLANE *pPlane ); + +#ifdef __cplusplus +} +#endif + + +//-------------------------- +// Quaternion +//-------------------------- + +// inline + +float D3DXQuaternionLength + ( const D3DXQUATERNION *pQ ); + +// Length squared, or "norm" +float D3DXQuaternionLengthSq + ( const D3DXQUATERNION *pQ ); + +float D3DXQuaternionDot + ( const D3DXQUATERNION *pQ1, const D3DXQUATERNION *pQ2 ); + +// (0, 0, 0, 1) +D3DXQUATERNION* D3DXQuaternionIdentity + ( D3DXQUATERNION *pOut ); + +BOOL D3DXQuaternionIsIdentity + ( const D3DXQUATERNION *pQ ); + +// (-x, -y, -z, w) +D3DXQUATERNION* D3DXQuaternionConjugate + ( D3DXQUATERNION *pOut, const D3DXQUATERNION *pQ ); + + +// non-inline +#ifdef __cplusplus +extern "C" { +#endif + +// Compute a quaternin's axis and angle of rotation. Expects unit quaternions. +void WINAPI D3DXQuaternionToAxisAngle + ( const D3DXQUATERNION *pQ, D3DXVECTOR3 *pAxis, float *pAngle ); + +// Build a quaternion from a rotation matrix. +D3DXQUATERNION* WINAPI D3DXQuaternionRotationMatrix + ( D3DXQUATERNION *pOut, const D3DXMATRIX *pM); + +// Rotation about arbitrary axis. +D3DXQUATERNION* WINAPI D3DXQuaternionRotationAxis + ( D3DXQUATERNION *pOut, const D3DXVECTOR3 *pV, float angle ); + +// Yaw around the Y axis, a pitch around the X axis, +// and a roll around the Z axis. +D3DXQUATERNION* WINAPI D3DXQuaternionRotationYawPitchRoll + ( D3DXQUATERNION *pOut, float yaw, float pitch, float roll ); + +// Quaternion multiplication. The result represents the rotation Q2 +// followed by the rotation Q1. (Out = Q2 * Q1) +D3DXQUATERNION* WINAPI D3DXQuaternionMultiply + ( D3DXQUATERNION *pOut, const D3DXQUATERNION *pQ1, + const D3DXQUATERNION *pQ2 ); + +D3DXQUATERNION* WINAPI D3DXQuaternionNormalize + ( D3DXQUATERNION *pOut, const D3DXQUATERNION *pQ ); + +// Conjugate and re-norm +D3DXQUATERNION* WINAPI D3DXQuaternionInverse + ( D3DXQUATERNION *pOut, const D3DXQUATERNION *pQ ); + +// Expects unit quaternions. +// if q = (cos(theta), sin(theta) * v); ln(q) = (0, theta * v) +D3DXQUATERNION* WINAPI D3DXQuaternionLn + ( D3DXQUATERNION *pOut, const D3DXQUATERNION *pQ ); + +// Expects pure quaternions. (w == 0) w is ignored in calculation. +// if q = (0, theta * v); exp(q) = (cos(theta), sin(theta) * v) +D3DXQUATERNION* WINAPI D3DXQuaternionExp + ( D3DXQUATERNION *pOut, const D3DXQUATERNION *pQ ); + +// Spherical linear interpolation between Q1 (s == 0) and Q2 (s == 1). +// Expects unit quaternions. +D3DXQUATERNION* WINAPI D3DXQuaternionSlerp + ( D3DXQUATERNION *pOut, const D3DXQUATERNION *pQ1, + const D3DXQUATERNION *pQ2, float t ); + +// Spherical quadrangle interpolation. +// Slerp(Slerp(Q1, Q4, t), Slerp(Q2, Q3, t), 2t(1-t)) +D3DXQUATERNION* WINAPI D3DXQuaternionSquad + ( D3DXQUATERNION *pOut, const D3DXQUATERNION *pQ1, + const D3DXQUATERNION *pQ2, const D3DXQUATERNION *pQ3, + const D3DXQUATERNION *pQ4, float t ); + +// Slerp(Slerp(Q1, Q2, f+g), Slerp(Q1, Q3, f+g), g/(f+g)) +D3DXQUATERNION* WINAPI D3DXQuaternionBaryCentric + ( D3DXQUATERNION *pOut, const D3DXQUATERNION *pQ1, + const D3DXQUATERNION *pQ2, const D3DXQUATERNION *pQ3, + float f, float g ); + +#ifdef __cplusplus +} +#endif + + +//-------------------------- +// Plane +//-------------------------- + +// inline + +// ax + by + cz + dw +float D3DXPlaneDot + ( const D3DXPLANE *pP, const D3DXVECTOR4 *pV); + +// ax + by + cz + d +float D3DXPlaneDotCoord + ( const D3DXPLANE *pP, const D3DXVECTOR3 *pV); + +// ax + by + cz +float D3DXPlaneDotNormal + ( const D3DXPLANE *pP, const D3DXVECTOR3 *pV); + +// non-inline +#ifdef __cplusplus +extern "C" { +#endif + +// Normalize plane (so that |a,b,c| == 1) +D3DXPLANE* WINAPI D3DXPlaneNormalize + ( D3DXPLANE *pOut, const D3DXPLANE *pP); + +// Find the intersection between a plane and a line. If the line is +// parallel to the plane, NULL is returned. +D3DXVECTOR3* WINAPI D3DXPlaneIntersectLine + ( D3DXVECTOR3 *pOut, const D3DXPLANE *pP, const D3DXVECTOR3 *pV1, + const D3DXVECTOR3 *pV2); + +// Construct a plane from a point and a normal +D3DXPLANE* WINAPI D3DXPlaneFromPointNormal + ( D3DXPLANE *pOut, const D3DXVECTOR3 *pPoint, const D3DXVECTOR3 *pNormal); + +// Construct a plane from 3 points +D3DXPLANE* WINAPI D3DXPlaneFromPoints + ( D3DXPLANE *pOut, const D3DXVECTOR3 *pV1, const D3DXVECTOR3 *pV2, + const D3DXVECTOR3 *pV3); + +// Transform a plane by a matrix. The vector (a,b,c) must be normal. +// M must be an affine transform. +D3DXPLANE* WINAPI D3DXPlaneTransform + ( D3DXPLANE *pOut, const D3DXPLANE *pP, const D3DXMATRIX *pM ); + +#ifdef __cplusplus +} +#endif + + +//-------------------------- +// Color +//-------------------------- + +// inline + +// (1-r, 1-g, 1-b, a) +D3DXCOLOR* D3DXColorNegative + (D3DXCOLOR *pOut, const D3DXCOLOR *pC); + +D3DXCOLOR* D3DXColorAdd + (D3DXCOLOR *pOut, const D3DXCOLOR *pC1, const D3DXCOLOR *pC2); + +D3DXCOLOR* D3DXColorSubtract + (D3DXCOLOR *pOut, const D3DXCOLOR *pC1, const D3DXCOLOR *pC2); + +D3DXCOLOR* D3DXColorScale + (D3DXCOLOR *pOut, const D3DXCOLOR *pC, float s); + +// (r1*r2, g1*g2, b1*b2, a1*a2) +D3DXCOLOR* D3DXColorModulate + (D3DXCOLOR *pOut, const D3DXCOLOR *pC1, const D3DXCOLOR *pC2); + +// Linear interpolation of r,g,b, and a. C1 + s(C2-C1) +D3DXCOLOR* D3DXColorLerp + (D3DXCOLOR *pOut, const D3DXCOLOR *pC1, const D3DXCOLOR *pC2, float s); + +// non-inline +#ifdef __cplusplus +extern "C" { +#endif + +// Interpolate r,g,b between desaturated color and color. +// DesaturatedColor + s(Color - DesaturatedColor) +D3DXCOLOR* WINAPI D3DXColorAdjustSaturation + (D3DXCOLOR *pOut, const D3DXCOLOR *pC, float s); + +// Interpolate r,g,b between 50% grey and color. Grey + s(Color - Grey) +D3DXCOLOR* WINAPI D3DXColorAdjustContrast + (D3DXCOLOR *pOut, const D3DXCOLOR *pC, float c); + +#ifdef __cplusplus +} +#endif + + + + + + +//=========================================================================== +// +// Matrix Stack +// +//=========================================================================== + +DECLARE_INTERFACE_(ID3DXMatrixStack, IUnknown) +{ + // + // IUnknown methods + // + STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + + // + // ID3DXMatrixStack methods + // + + // Pops the top of the stack, returns the current top + // *after* popping the top. + STDMETHOD(Pop)(THIS) PURE; + + // Pushes the stack by one, duplicating the current matrix. + STDMETHOD(Push)(THIS) PURE; + + // Loads identity in the current matrix. + STDMETHOD(LoadIdentity)(THIS) PURE; + + // Loads the given matrix into the current matrix + STDMETHOD(LoadMatrix)(THIS_ const D3DXMATRIX* pM ) PURE; + + // Right-Multiplies the given matrix to the current matrix. + // (transformation is about the current world origin) + STDMETHOD(MultMatrix)(THIS_ const D3DXMATRIX* pM ) PURE; + + // Left-Multiplies the given matrix to the current matrix + // (transformation is about the local origin of the object) + STDMETHOD(MultMatrixLocal)(THIS_ const D3DXMATRIX* pM ) PURE; + + // Right multiply the current matrix with the computed rotation + // matrix, counterclockwise about the given axis with the given angle. + // (rotation is about the current world origin) + STDMETHOD(RotateAxis) + (THIS_ const D3DXVECTOR3* pV, float angle) PURE; + + // Left multiply the current matrix with the computed rotation + // matrix, counterclockwise about the given axis with the given angle. + // (rotation is about the local origin of the object) + STDMETHOD(RotateAxisLocal) + (THIS_ const D3DXVECTOR3* pV, float angle) PURE; + + // Right multiply the current matrix with the computed rotation + // matrix. All angles are counterclockwise. (rotation is about the + // current world origin) + + // The rotation is composed of a yaw around the Y axis, a pitch around + // the X axis, and a roll around the Z axis. + STDMETHOD(RotateYawPitchRoll) + (THIS_ float yaw, float pitch, float roll) PURE; + + // Left multiply the current matrix with the computed rotation + // matrix. All angles are counterclockwise. (rotation is about the + // local origin of the object) + + // The rotation is composed of a yaw around the Y axis, a pitch around + // the X axis, and a roll around the Z axis. + STDMETHOD(RotateYawPitchRollLocal) + (THIS_ float yaw, float pitch, float roll) PURE; + + // Right multiply the current matrix with the computed scale + // matrix. (transformation is about the current world origin) + STDMETHOD(Scale)(THIS_ float x, float y, float z) PURE; + + // Left multiply the current matrix with the computed scale + // matrix. (transformation is about the local origin of the object) + STDMETHOD(ScaleLocal)(THIS_ float x, float y, float z) PURE; + + // Right multiply the current matrix with the computed translation + // matrix. (transformation is about the current world origin) + STDMETHOD(Translate)(THIS_ float x, float y, float z ) PURE; + + // Left multiply the current matrix with the computed translation + // matrix. (transformation is about the local origin of the object) + STDMETHOD(TranslateLocal)(THIS_ float x, float y, float z) PURE; + + // Obtain the current matrix at the top of the stack + STDMETHOD_(D3DXMATRIX*, GetTop)(THIS) PURE; +}; + +#ifdef __cplusplus +extern "C" { +#endif + +HRESULT WINAPI D3DXCreateMatrixStack( DWORD flags, LPD3DXMATRIXSTACK *ppStack ); + +#ifdef __cplusplus +} +#endif + +#include "d3dxmath.inl" + +#if _MSC_VER >= 1200 +#pragma warning(pop) +#else +#pragma warning(default:4201) +#endif + +#endif // __D3DXMATH_H__ diff --git a/videoInputSrcAndDemos/libs/DShow/Include/d3dxshapes.h b/videoInputSrcAndDemos/libs/DShow/Include/d3dxshapes.h index b4ef209..765c59f 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/d3dxshapes.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/d3dxshapes.h @@ -1,209 +1,209 @@ -/////////////////////////////////////////////////////////////////////////// -// -// Copyright (C) Microsoft Corporation. All Rights Reserved. -// -// File: d3dxshapes.h -// Content: D3DX simple shapes -// -/////////////////////////////////////////////////////////////////////////// - -#ifndef __D3DXSHAPES_H__ -#define __D3DXSHAPES_H__ - -#include -#include -#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__ +/////////////////////////////////////////////////////////////////////////// +// +// Copyright (C) Microsoft Corporation. All Rights Reserved. +// +// File: d3dxshapes.h +// Content: D3DX simple shapes +// +/////////////////////////////////////////////////////////////////////////// + +#ifndef __D3DXSHAPES_H__ +#define __D3DXSHAPES_H__ + +#include +#include +#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__ diff --git a/videoInputSrcAndDemos/libs/DShow/Include/d3dxsprite.h b/videoInputSrcAndDemos/libs/DShow/Include/d3dxsprite.h index 2e08d30..a08b4a9 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/d3dxsprite.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/d3dxsprite.h @@ -1,321 +1,321 @@ -/////////////////////////////////////////////////////////////////////////// -// -// Copyright (C) Microsoft Corporation. All Rights Reserved. -// -// File: d3dxsprite.h -// Content: D3DX sprite helper functions -// -// These functions allow you to use sprites with D3DX. A "sprite" is -// loosely defined as a 2D image that you want to transfer to the -// rendering target. The source image can be a texture created -// with the help of the D3DX texture loader; though advanced users may -// want to create their own. A helper function (PrepareDeviceForSprite) -// is provided to make it easy to set up render states on a device. -// (Again, advanced users can use their own created devices.) -// -// There are two general techniques for sprites; the simpler one just -// specifies a destination rectangle and a rotation anlge. A more -// powerful technique supports rendering to non-rectangular quads. -// -// Both techniques support clipping, alpha, and rotation. More -// details are below. -// -/////////////////////////////////////////////////////////////////////////// - -#ifndef __D3DXSPRITE_H__ -#define __D3DXSPRITE_H__ - -#include -#include -#include "d3dxerr.h" - -#ifdef __cplusplus -extern "C" { -#endif - - -//------------------------------------------------------------------------- -// D3DXPrepareDeviceForSprite: -// -// Call this function to set up all the render states necessary for -// BltSprite/WarpSprite to work correctly. (Advanced users may opt to -// not call this function first; in which case Blt/WarpSprite functions -// will use whatever render/texture states were set up on the device when -// they are called.) -// -// Warning: This function modifies render states and may impact performance -// negatively on some 3D hardware if it is called too often per frame. -// -// Warning: If the render state changes (other than through calls to -// BltSprite or WarpSprite), you will need to call this function again before -// calling BltSprite or WarpSprite. -// -// Details: This function modifies the the rendering first texture stage and -// it modifies some renderstates for the entire device. Here is the exact -// list: -// -// SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE); -// SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_SELECTARG1); -// SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE); -// SetTextureStageState(0, D3DTSS_ALPHAARG2, D3DTA_DIFFUSE); -// SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_MODULATE); -// SetTextureStageState(0, D3DTSS_MINFILTER, D3DTFN_LINEAR); -// SetTextureStageState(0, D3DTSS_MAGFILTER, D3DTFG_LINEAR); -// -// SetRenderState(D3DRENDERSTATE_SRCBLEND, D3DBLEND_SRCALPHA); -// SetRenderState(D3DRENDERSTATE_DESTBLEND, D3DBLEND_INVSRCALPHA); -// SetRenderState(D3DRENDERSTATE_ALPHABLENDENABLE, TRUE); -// -// Depending on the value of ZEnable parameter, this function will -// will either call -// SetRenderState(D3DRENDERSTATE_ZENABLE, FALSE); -// - or - -// SetRenderState(D3DRENDERSTATE_ZENABLE, TRUE); -// -// Parameters: -// pd3dDevice - a pointer to the d3d device that you wish to prepare -// for use with D3DX Sprite Services -// ZEnable - a flag indicating whether you want the sprites to -// check and update the Z buffer as part of rendering. -// If ZEnable is FALSE, OR you are using -// alpha-blending, then it is necessary to render your -// sprites from back-to-front. -// -//------------------------------------------------------------------------- - -#ifdef __cplusplus -HRESULT WINAPI - D3DXPrepareDeviceForSprite( LPDIRECT3DDEVICE7 pd3dDevice, - BOOL ZEnable = FALSE); -#else -HRESULT WINAPI - D3DXPrepareDeviceForSprite( LPDIRECT3DDEVICE7 pd3dDevice, - BOOL ZEnable); -#endif - - - -//------------------------------------------------------------------------- -// The D3DXDrawBasicSprite() function performs blitting of source images onto -// a 3D rendering device. This function only calls SetTexture on the first -// renderstage with the parameter (pd3dTexture) if that parameter is non-null. -// This function assumes that D3DXPrepareDeviceForSprite has been called on -// the device or that caller has in some other way correctly prepared the -// renderstates. -// -// This function supports scaling, rotations, alpha-blending, and choosing -// a source sub-rect. -// -// Rotation angle is specified in radians. Both rotations and scales -// are applied around the center of the sprite; where the center of the -// sprite is half the width/height of the sprite, plus the offset parameter. -// -// Use the offset parameter if you want the sprite's center to be something -// other than the image center. -// -// The destination point indicates where you would like the center of -// the sprite to draw to. -// -// Parameters: -// pd3dTexture - a pointer to the surface containing the texture -// pd3dDevice - a pointer to the d3d device to render to. It is -// assumed that render states are set up. (See -// D3DXPrepareDeviceForSprite) -// ppointDest - a pointer to the target point for the sprite. The -// components of the vector must be in screen -// space. -// alpha - alpha value to apply to sprite. 1.0 means totally -// opaque; and 0.0 means totally transparent. -// WARNING: If you are using alpha, then you should render -// from back to front in order to avoid rendering -// artifacts. -// angleRad - angle of rotation around the 'center' of the rect -// scale - a uniform scale that is applied to the source rect -// to specify the size of the image that is rendered -// pOffset - offset from the center of the source rect to use as the -// center of rotation -// pSourceRect - a rect that indicates what portion of the source -// source texture to use. If NULL is passed, then the -// entire source is used. If the source texture was -// created via D3DX, then the rect should be specified -// in the coordinates of the original image (so that you -// don't have to worry about stretching/scaling that D3DX -// may have done to make the image work with your current -// 3D Device.) Note that horizontal or vertical mirroring -// may be simply accomplished by swapping the left/right -// or top/bottom fields of this RECT. -//------------------------------------------------------------------------- - -#ifdef __cplusplus -HRESULT WINAPI - D3DXDrawSpriteSimple(LPDIRECTDRAWSURFACE7 pd3dTexture, - LPDIRECT3DDEVICE7 pd3dDevice, - const D3DXVECTOR3 *ppointDest, - float alpha = 1.0f, - float scale = 1.0f, - float angleRad = 0.0f, - const D3DXVECTOR2 *pOffset = NULL, - const RECT *pSourceRect = NULL); -#else -HRESULT WINAPI - D3DXDrawSpriteSimple(LPDIRECTDRAWSURFACE7 pd3dTexture, - LPDIRECT3DDEVICE7 pd3dDevice, - D3DXVECTOR3 *ppointDest, - float alpha, - float scale, - float angleRad, - D3DXVECTOR2 *pOffset, - RECT *pSourceRect); -#endif - -//------------------------------------------------------------------------- -// The D3DXDrawSprite() function transforms source images onto a 3D -// rendering device. It takes a general 4x4 matrix which is use to transform -// the points of a default rect: (left=-.5, top=-.5, right=+.5, bottom=+.5). -// (This default rect was chosen so that it was centered around the origin -// to ease setting up rotations. And it was chosen to have a width/height of one -// to ease setting up scales.) -// -// This function only calls SetTexture on the first -// renderstage with the parameter (pd3dTexture) if that parameter is non-null. -// This function assumes that D3DXPrepareDeviceForSprite has been called on -// the device or that caller has in some other way correctly prepared the -// renderstates. -// -// This function supports alpha-blending, and choosing -// a source sub-rect. (A value of NULL for source sub-rect means the entire -// texture is used.) -// -// Note that if the transformed points have a value for w (the homogenous -// coordinate) that is not 1, then this function will invert it and pass -// that value to D3D as the rhw field of a TLVERTEX. If the value for w is -// zero, then it use 1 as the rhw. -// -// Parameters: -// pd3dTexture - a pointer to the surface containing the texture -// pd3dDevice - a pointer to the d3d device to render to. It is -// assumed that render states are set up. (See -// D3DXPrepareDeviceForSprite) -// pMatrixTransform - 4x4 matrix that specifies the transformation -// that will be applied to the default -.5 to +.5 -// rectangle. -// alpha - alpha value to apply to sprite. 1.0 means totally -// opaque; and 0.0 means totally transparent. -// WARNING: If you are using alpha, then you should render -// from back to front in order to avoid rendering -// artifacts.Furthermore, you should avoid scenarios where -// semi-transparent objects intersect. -// pSourceRect - a rect that indicates what portion of the source -// source texture to use. If NULL is passed, then the -// entire source is used. If the source texture was -// created via D3DX, then the rect should be specified -// in the coordinates of the original image (so that you -// don't have to worry about stretching/scaling that D3DX -// may have done to make the image work with your current -// 3D Device.) Note that mirroring may be simply accomplished -// by swapping the left/right or top/bottom fields of -// this RECT. -// -//------------------------------------------------------------------------- - -#ifdef __cplusplus -HRESULT WINAPI - D3DXDrawSpriteTransform(LPDIRECTDRAWSURFACE7 pd3dTexture, - LPDIRECT3DDEVICE7 pd3dDevice, - const D3DXMATRIX *pMatrixTransform, - float alpha = 1.0f, - const RECT *pSourceRect = NULL); -#else -HRESULT WINAPI - D3DXDrawSpriteTransform(LPDIRECTDRAWSURFACE7 pd3dTexture, - LPDIRECT3DDEVICE7 pd3dDevice, - D3DXMATRIX *pMatrixTransform, - float alpha, - RECT *pSourceRect); -#endif - -//------------------------------------------------------------------------- -// The D3DXBuildSpriteTransform() function is a helper provided which -// creates a matrix corresponding to simple properties. This matrix is -// set up to pass directly to D3DXTransformSprite. -// -// Parameters: -// pMatrix - a pointer to the result matrix -// prectDest - a pointer to the target rectangle for the sprite -// angleRad - angle of rotation around the 'center' of the rect -// pOffset - offset from the center of the source rect to use as the -// center of rotation -// -//------------------------------------------------------------------------- - -#ifdef __cplusplus -void WINAPI - D3DXBuildSpriteTransform(D3DXMATRIX *pMatrix, - const RECT *prectDest, - float angleRad = 0.0f, - const D3DXVECTOR2 *pOffset = NULL); -#else -void WINAPI - D3DXBuildSpriteTransform(D3DXMATRIX *pMatrix, - RECT *prectDest, - float angleRad, - D3DXVECTOR2 *pOffset); -#endif - - -//------------------------------------------------------------------------- -// The D3DXDrawSprite3D() function renders a texture onto a 3D quad. The -// quad ABCD is broken into two triangles ABC and ACD which are rendered -// via DrawPrim. -// -// Parameters: -// pd3dTexture - a pointer to the surface containing the texture -// pd3dDevice - a pointer to the d3d device to render to. It is -// assumed that render states are set up. (See -// D3DXPrepareDeviceForSprite) -// quad - array of 4 points in the following order: -// upper-left, upper-right, lower-right, lower-left. -// If these vectors contain a W, then this function -// will take the reciprocal of that value to pass as -// as the rhw (i.e. reciprocal homogenous w). -// alpha - alpha value to apply to sprite. 1.0 means totally -// opaque; and 0.0 means totally transparent. -// WARNING: If you are using alpha, then you should render -// from back to front in order to avoid rendering -// artifacts.Furthermore, you should avoid scenarios where -// semi-transparent objects intersect. -// pSourceRect - a rect that indicates what portion of the source -// source texture to use. If NULL is passed, then the -// entire source is used. If the source texture was -// created via D3DX, then the rect should be specified -// in the coordinates of the original image (so that you -// don't have to worry about stretching/scaling that D3DX -// may have done to make the image work with your current -// 3D Device.) Note that mirroring may be simply accomplished -// by swapping the left/right or top/bottom fields of -// this RECT. -//------------------------------------------------------------------------- - -#ifdef __cplusplus -HRESULT WINAPI - D3DXDrawSprite3D(LPDIRECTDRAWSURFACE7 pd3dTexture, - LPDIRECT3DDEVICE7 pd3dDevice, - const D3DXVECTOR4 quad[4], - float alpha = 1.0f, - const RECT *pSourceRect = NULL); -#else -HRESULT WINAPI - D3DXDrawSprite3D(LPDIRECTDRAWSURFACE7 pd3dTexture, - LPDIRECT3DDEVICE7 pd3dDevice, - D3DXVECTOR4 quad[4], - float alpha, - RECT *pSourceRect); -#endif - - - -#ifdef __cplusplus -} // extern "C" -#endif - -#endif // __D3DXSPRITE_H__ +/////////////////////////////////////////////////////////////////////////// +// +// Copyright (C) Microsoft Corporation. All Rights Reserved. +// +// File: d3dxsprite.h +// Content: D3DX sprite helper functions +// +// These functions allow you to use sprites with D3DX. A "sprite" is +// loosely defined as a 2D image that you want to transfer to the +// rendering target. The source image can be a texture created +// with the help of the D3DX texture loader; though advanced users may +// want to create their own. A helper function (PrepareDeviceForSprite) +// is provided to make it easy to set up render states on a device. +// (Again, advanced users can use their own created devices.) +// +// There are two general techniques for sprites; the simpler one just +// specifies a destination rectangle and a rotation anlge. A more +// powerful technique supports rendering to non-rectangular quads. +// +// Both techniques support clipping, alpha, and rotation. More +// details are below. +// +/////////////////////////////////////////////////////////////////////////// + +#ifndef __D3DXSPRITE_H__ +#define __D3DXSPRITE_H__ + +#include +#include +#include "d3dxerr.h" + +#ifdef __cplusplus +extern "C" { +#endif + + +//------------------------------------------------------------------------- +// D3DXPrepareDeviceForSprite: +// +// Call this function to set up all the render states necessary for +// BltSprite/WarpSprite to work correctly. (Advanced users may opt to +// not call this function first; in which case Blt/WarpSprite functions +// will use whatever render/texture states were set up on the device when +// they are called.) +// +// Warning: This function modifies render states and may impact performance +// negatively on some 3D hardware if it is called too often per frame. +// +// Warning: If the render state changes (other than through calls to +// BltSprite or WarpSprite), you will need to call this function again before +// calling BltSprite or WarpSprite. +// +// Details: This function modifies the the rendering first texture stage and +// it modifies some renderstates for the entire device. Here is the exact +// list: +// +// SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE); +// SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_SELECTARG1); +// SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE); +// SetTextureStageState(0, D3DTSS_ALPHAARG2, D3DTA_DIFFUSE); +// SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_MODULATE); +// SetTextureStageState(0, D3DTSS_MINFILTER, D3DTFN_LINEAR); +// SetTextureStageState(0, D3DTSS_MAGFILTER, D3DTFG_LINEAR); +// +// SetRenderState(D3DRENDERSTATE_SRCBLEND, D3DBLEND_SRCALPHA); +// SetRenderState(D3DRENDERSTATE_DESTBLEND, D3DBLEND_INVSRCALPHA); +// SetRenderState(D3DRENDERSTATE_ALPHABLENDENABLE, TRUE); +// +// Depending on the value of ZEnable parameter, this function will +// will either call +// SetRenderState(D3DRENDERSTATE_ZENABLE, FALSE); +// - or - +// SetRenderState(D3DRENDERSTATE_ZENABLE, TRUE); +// +// Parameters: +// pd3dDevice - a pointer to the d3d device that you wish to prepare +// for use with D3DX Sprite Services +// ZEnable - a flag indicating whether you want the sprites to +// check and update the Z buffer as part of rendering. +// If ZEnable is FALSE, OR you are using +// alpha-blending, then it is necessary to render your +// sprites from back-to-front. +// +//------------------------------------------------------------------------- + +#ifdef __cplusplus +HRESULT WINAPI + D3DXPrepareDeviceForSprite( LPDIRECT3DDEVICE7 pd3dDevice, + BOOL ZEnable = FALSE); +#else +HRESULT WINAPI + D3DXPrepareDeviceForSprite( LPDIRECT3DDEVICE7 pd3dDevice, + BOOL ZEnable); +#endif + + + +//------------------------------------------------------------------------- +// The D3DXDrawBasicSprite() function performs blitting of source images onto +// a 3D rendering device. This function only calls SetTexture on the first +// renderstage with the parameter (pd3dTexture) if that parameter is non-null. +// This function assumes that D3DXPrepareDeviceForSprite has been called on +// the device or that caller has in some other way correctly prepared the +// renderstates. +// +// This function supports scaling, rotations, alpha-blending, and choosing +// a source sub-rect. +// +// Rotation angle is specified in radians. Both rotations and scales +// are applied around the center of the sprite; where the center of the +// sprite is half the width/height of the sprite, plus the offset parameter. +// +// Use the offset parameter if you want the sprite's center to be something +// other than the image center. +// +// The destination point indicates where you would like the center of +// the sprite to draw to. +// +// Parameters: +// pd3dTexture - a pointer to the surface containing the texture +// pd3dDevice - a pointer to the d3d device to render to. It is +// assumed that render states are set up. (See +// D3DXPrepareDeviceForSprite) +// ppointDest - a pointer to the target point for the sprite. The +// components of the vector must be in screen +// space. +// alpha - alpha value to apply to sprite. 1.0 means totally +// opaque; and 0.0 means totally transparent. +// WARNING: If you are using alpha, then you should render +// from back to front in order to avoid rendering +// artifacts. +// angleRad - angle of rotation around the 'center' of the rect +// scale - a uniform scale that is applied to the source rect +// to specify the size of the image that is rendered +// pOffset - offset from the center of the source rect to use as the +// center of rotation +// pSourceRect - a rect that indicates what portion of the source +// source texture to use. If NULL is passed, then the +// entire source is used. If the source texture was +// created via D3DX, then the rect should be specified +// in the coordinates of the original image (so that you +// don't have to worry about stretching/scaling that D3DX +// may have done to make the image work with your current +// 3D Device.) Note that horizontal or vertical mirroring +// may be simply accomplished by swapping the left/right +// or top/bottom fields of this RECT. +//------------------------------------------------------------------------- + +#ifdef __cplusplus +HRESULT WINAPI + D3DXDrawSpriteSimple(LPDIRECTDRAWSURFACE7 pd3dTexture, + LPDIRECT3DDEVICE7 pd3dDevice, + const D3DXVECTOR3 *ppointDest, + float alpha = 1.0f, + float scale = 1.0f, + float angleRad = 0.0f, + const D3DXVECTOR2 *pOffset = NULL, + const RECT *pSourceRect = NULL); +#else +HRESULT WINAPI + D3DXDrawSpriteSimple(LPDIRECTDRAWSURFACE7 pd3dTexture, + LPDIRECT3DDEVICE7 pd3dDevice, + D3DXVECTOR3 *ppointDest, + float alpha, + float scale, + float angleRad, + D3DXVECTOR2 *pOffset, + RECT *pSourceRect); +#endif + +//------------------------------------------------------------------------- +// The D3DXDrawSprite() function transforms source images onto a 3D +// rendering device. It takes a general 4x4 matrix which is use to transform +// the points of a default rect: (left=-.5, top=-.5, right=+.5, bottom=+.5). +// (This default rect was chosen so that it was centered around the origin +// to ease setting up rotations. And it was chosen to have a width/height of one +// to ease setting up scales.) +// +// This function only calls SetTexture on the first +// renderstage with the parameter (pd3dTexture) if that parameter is non-null. +// This function assumes that D3DXPrepareDeviceForSprite has been called on +// the device or that caller has in some other way correctly prepared the +// renderstates. +// +// This function supports alpha-blending, and choosing +// a source sub-rect. (A value of NULL for source sub-rect means the entire +// texture is used.) +// +// Note that if the transformed points have a value for w (the homogenous +// coordinate) that is not 1, then this function will invert it and pass +// that value to D3D as the rhw field of a TLVERTEX. If the value for w is +// zero, then it use 1 as the rhw. +// +// Parameters: +// pd3dTexture - a pointer to the surface containing the texture +// pd3dDevice - a pointer to the d3d device to render to. It is +// assumed that render states are set up. (See +// D3DXPrepareDeviceForSprite) +// pMatrixTransform - 4x4 matrix that specifies the transformation +// that will be applied to the default -.5 to +.5 +// rectangle. +// alpha - alpha value to apply to sprite. 1.0 means totally +// opaque; and 0.0 means totally transparent. +// WARNING: If you are using alpha, then you should render +// from back to front in order to avoid rendering +// artifacts.Furthermore, you should avoid scenarios where +// semi-transparent objects intersect. +// pSourceRect - a rect that indicates what portion of the source +// source texture to use. If NULL is passed, then the +// entire source is used. If the source texture was +// created via D3DX, then the rect should be specified +// in the coordinates of the original image (so that you +// don't have to worry about stretching/scaling that D3DX +// may have done to make the image work with your current +// 3D Device.) Note that mirroring may be simply accomplished +// by swapping the left/right or top/bottom fields of +// this RECT. +// +//------------------------------------------------------------------------- + +#ifdef __cplusplus +HRESULT WINAPI + D3DXDrawSpriteTransform(LPDIRECTDRAWSURFACE7 pd3dTexture, + LPDIRECT3DDEVICE7 pd3dDevice, + const D3DXMATRIX *pMatrixTransform, + float alpha = 1.0f, + const RECT *pSourceRect = NULL); +#else +HRESULT WINAPI + D3DXDrawSpriteTransform(LPDIRECTDRAWSURFACE7 pd3dTexture, + LPDIRECT3DDEVICE7 pd3dDevice, + D3DXMATRIX *pMatrixTransform, + float alpha, + RECT *pSourceRect); +#endif + +//------------------------------------------------------------------------- +// The D3DXBuildSpriteTransform() function is a helper provided which +// creates a matrix corresponding to simple properties. This matrix is +// set up to pass directly to D3DXTransformSprite. +// +// Parameters: +// pMatrix - a pointer to the result matrix +// prectDest - a pointer to the target rectangle for the sprite +// angleRad - angle of rotation around the 'center' of the rect +// pOffset - offset from the center of the source rect to use as the +// center of rotation +// +//------------------------------------------------------------------------- + +#ifdef __cplusplus +void WINAPI + D3DXBuildSpriteTransform(D3DXMATRIX *pMatrix, + const RECT *prectDest, + float angleRad = 0.0f, + const D3DXVECTOR2 *pOffset = NULL); +#else +void WINAPI + D3DXBuildSpriteTransform(D3DXMATRIX *pMatrix, + RECT *prectDest, + float angleRad, + D3DXVECTOR2 *pOffset); +#endif + + +//------------------------------------------------------------------------- +// The D3DXDrawSprite3D() function renders a texture onto a 3D quad. The +// quad ABCD is broken into two triangles ABC and ACD which are rendered +// via DrawPrim. +// +// Parameters: +// pd3dTexture - a pointer to the surface containing the texture +// pd3dDevice - a pointer to the d3d device to render to. It is +// assumed that render states are set up. (See +// D3DXPrepareDeviceForSprite) +// quad - array of 4 points in the following order: +// upper-left, upper-right, lower-right, lower-left. +// If these vectors contain a W, then this function +// will take the reciprocal of that value to pass as +// as the rhw (i.e. reciprocal homogenous w). +// alpha - alpha value to apply to sprite. 1.0 means totally +// opaque; and 0.0 means totally transparent. +// WARNING: If you are using alpha, then you should render +// from back to front in order to avoid rendering +// artifacts.Furthermore, you should avoid scenarios where +// semi-transparent objects intersect. +// pSourceRect - a rect that indicates what portion of the source +// source texture to use. If NULL is passed, then the +// entire source is used. If the source texture was +// created via D3DX, then the rect should be specified +// in the coordinates of the original image (so that you +// don't have to worry about stretching/scaling that D3DX +// may have done to make the image work with your current +// 3D Device.) Note that mirroring may be simply accomplished +// by swapping the left/right or top/bottom fields of +// this RECT. +//------------------------------------------------------------------------- + +#ifdef __cplusplus +HRESULT WINAPI + D3DXDrawSprite3D(LPDIRECTDRAWSURFACE7 pd3dTexture, + LPDIRECT3DDEVICE7 pd3dDevice, + const D3DXVECTOR4 quad[4], + float alpha = 1.0f, + const RECT *pSourceRect = NULL); +#else +HRESULT WINAPI + D3DXDrawSprite3D(LPDIRECTDRAWSURFACE7 pd3dTexture, + LPDIRECT3DDEVICE7 pd3dDevice, + D3DXVECTOR4 quad[4], + float alpha, + RECT *pSourceRect); +#endif + + + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif // __D3DXSPRITE_H__ diff --git a/videoInputSrcAndDemos/libs/DShow/Include/ddmm.h b/videoInputSrcAndDemos/libs/DShow/Include/ddmm.h index 678bec3..c790754 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/ddmm.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/ddmm.h @@ -1,28 +1,28 @@ -//------------------------------------------------------------------------------ -// File: DDMM.h -// -// Desc: DirectShow base classes - efines routines for using DirectDraw -// on a multimonitor system. -// -// Copyright (c) Microsoft Corporation. All rights reserved. -//------------------------------------------------------------------------------ - - -#ifdef __cplusplus -extern "C" { /* Assume C declarations for C++ */ -#endif /* __cplusplus */ - -// DDRAW.H might not include these -#ifndef DDENUM_ATTACHEDSECONDARYDEVICES -#define DDENUM_ATTACHEDSECONDARYDEVICES 0x00000001L -#endif - -typedef HRESULT (*PDRAWCREATE)(IID *,LPDIRECTDRAW *,LPUNKNOWN); -typedef HRESULT (*PDRAWENUM)(LPDDENUMCALLBACKA, LPVOID); - -IDirectDraw * DirectDrawCreateFromDevice(LPSTR, PDRAWCREATE, PDRAWENUM); -IDirectDraw * DirectDrawCreateFromDeviceEx(LPSTR, PDRAWCREATE, LPDIRECTDRAWENUMERATEEXA); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ +//------------------------------------------------------------------------------ +// File: DDMM.h +// +// Desc: DirectShow base classes - efines routines for using DirectDraw +// on a multimonitor system. +// +// Copyright (c) Microsoft Corporation. All rights reserved. +//------------------------------------------------------------------------------ + + +#ifdef __cplusplus +extern "C" { /* Assume C declarations for C++ */ +#endif /* __cplusplus */ + +// DDRAW.H might not include these +#ifndef DDENUM_ATTACHEDSECONDARYDEVICES +#define DDENUM_ATTACHEDSECONDARYDEVICES 0x00000001L +#endif + +typedef HRESULT (*PDRAWCREATE)(IID *,LPDIRECTDRAW *,LPUNKNOWN); +typedef HRESULT (*PDRAWENUM)(LPDDENUMCALLBACKA, LPVOID); + +IDirectDraw * DirectDrawCreateFromDevice(LPSTR, PDRAWCREATE, PDRAWENUM); +IDirectDraw * DirectDrawCreateFromDeviceEx(LPSTR, PDRAWCREATE, LPDIRECTDRAWENUMERATEEXA); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ diff --git a/videoInputSrcAndDemos/libs/DShow/Include/ddraw.h b/videoInputSrcAndDemos/libs/DShow/Include/ddraw.h index 0f204f8..e66314b 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/ddraw.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/ddraw.h @@ -1,5792 +1,5792 @@ -/*==========================================================================; - * - * Copyright (C) Microsoft Corporation. All Rights Reserved. - * - * File: ddraw.h - * Content: DirectDraw include file - * - ***************************************************************************/ - -#ifndef __DDRAW_INCLUDED__ -#define __DDRAW_INCLUDED__ - -//Disable the nameless union warning when building internally -#undef ENABLE_NAMELESS_UNION_PRAGMA -#ifdef DIRECTX_REDIST -#define ENABLE_NAMELESS_UNION_PRAGMA -#endif - -#ifdef ENABLE_NAMELESS_UNION_PRAGMA -#pragma warning(disable:4201) -#endif - -/* - * If you wish an application built against the newest version of DirectDraw - * to run against an older DirectDraw run time then define DIRECTDRAW_VERSION - * to be the earlies version of DirectDraw you wish to run against. For, - * example if you wish an application to run against a DX 3 runtime define - * DIRECTDRAW_VERSION to be 0x0300. - */ -#ifndef DIRECTDRAW_VERSION -#define DIRECTDRAW_VERSION 0x0700 -#endif /* DIRECTDRAW_VERSION */ - -#if defined( _WIN32 ) && !defined( _NO_COM ) -#define COM_NO_WINDOWS_H -#include -#else -#define IUnknown void -#if !defined( NT_BUILD_ENVIRONMENT ) && !defined(WINNT) - #define CO_E_NOTINITIALIZED 0x800401F0L -#endif -#endif - -#define _FACDD 0x876 -#define MAKE_DDHRESULT( code ) MAKE_HRESULT( 1, _FACDD, code ) - -#ifdef __cplusplus -extern "C" { -#endif - -// -// For compilers that don't support nameless unions, do a -// -// #define NONAMELESSUNION -// -// before #include -// -#ifndef DUMMYUNIONNAMEN -#if defined(__cplusplus) || !defined(NONAMELESSUNION) -#define DUMMYUNIONNAMEN(n) -#else -#define DUMMYUNIONNAMEN(n) u##n -#endif -#endif - -#ifndef MAKEFOURCC - #define MAKEFOURCC(ch0, ch1, ch2, ch3) \ - ((DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8) | \ - ((DWORD)(BYTE)(ch2) << 16) | ((DWORD)(BYTE)(ch3) << 24 )) -#endif //defined(MAKEFOURCC) - -/* - * FOURCC codes for DX compressed-texture pixel formats - */ -#define FOURCC_DXT1 (MAKEFOURCC('D','X','T','1')) -#define FOURCC_DXT2 (MAKEFOURCC('D','X','T','2')) -#define FOURCC_DXT3 (MAKEFOURCC('D','X','T','3')) -#define FOURCC_DXT4 (MAKEFOURCC('D','X','T','4')) -#define FOURCC_DXT5 (MAKEFOURCC('D','X','T','5')) - -/* - * GUIDS used by DirectDraw objects - */ -#if defined( _WIN32 ) && !defined( _NO_COM ) - -DEFINE_GUID( CLSID_DirectDraw, 0xD7B70EE0,0x4340,0x11CF,0xB0,0x63,0x00,0x20,0xAF,0xC2,0xCD,0x35 ); -DEFINE_GUID( CLSID_DirectDraw7, 0x3c305196,0x50db,0x11d3,0x9c,0xfe,0x00,0xc0,0x4f,0xd9,0x30,0xc5 ); -DEFINE_GUID( CLSID_DirectDrawClipper, 0x593817A0,0x7DB3,0x11CF,0xA2,0xDE,0x00,0xAA,0x00,0xb9,0x33,0x56 ); -DEFINE_GUID( IID_IDirectDraw, 0x6C14DB80,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60 ); -DEFINE_GUID( IID_IDirectDraw2, 0xB3A6F3E0,0x2B43,0x11CF,0xA2,0xDE,0x00,0xAA,0x00,0xB9,0x33,0x56 ); -DEFINE_GUID( IID_IDirectDraw4, 0x9c59509a,0x39bd,0x11d1,0x8c,0x4a,0x00,0xc0,0x4f,0xd9,0x30,0xc5 ); -DEFINE_GUID( IID_IDirectDraw7, 0x15e65ec0,0x3b9c,0x11d2,0xb9,0x2f,0x00,0x60,0x97,0x97,0xea,0x5b ); -DEFINE_GUID( IID_IDirectDrawSurface, 0x6C14DB81,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60 ); -DEFINE_GUID( IID_IDirectDrawSurface2, 0x57805885,0x6eec,0x11cf,0x94,0x41,0xa8,0x23,0x03,0xc1,0x0e,0x27 ); -DEFINE_GUID( IID_IDirectDrawSurface3, 0xDA044E00,0x69B2,0x11D0,0xA1,0xD5,0x00,0xAA,0x00,0xB8,0xDF,0xBB ); -DEFINE_GUID( IID_IDirectDrawSurface4, 0x0B2B8630,0xAD35,0x11D0,0x8E,0xA6,0x00,0x60,0x97,0x97,0xEA,0x5B ); -DEFINE_GUID( IID_IDirectDrawSurface7, 0x06675a80,0x3b9b,0x11d2,0xb9,0x2f,0x00,0x60,0x97,0x97,0xea,0x5b ); -DEFINE_GUID( IID_IDirectDrawPalette, 0x6C14DB84,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60 ); -DEFINE_GUID( IID_IDirectDrawClipper, 0x6C14DB85,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60 ); -DEFINE_GUID( IID_IDirectDrawColorControl, 0x4B9F0EE0,0x0D7E,0x11D0,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8 ); -DEFINE_GUID( IID_IDirectDrawGammaControl, 0x69C11C3E,0xB46B,0x11D1,0xAD,0x7A,0x00,0xC0,0x4F,0xC2,0x9B,0x4E ); - -#endif - -/*============================================================================ - * - * DirectDraw Structures - * - * Various structures used to invoke DirectDraw. - * - *==========================================================================*/ - -struct IDirectDraw; -struct IDirectDrawSurface; -struct IDirectDrawPalette; -struct IDirectDrawClipper; - -typedef struct IDirectDraw FAR *LPDIRECTDRAW; -typedef struct IDirectDraw2 FAR *LPDIRECTDRAW2; -typedef struct IDirectDraw4 FAR *LPDIRECTDRAW4; -typedef struct IDirectDraw7 FAR *LPDIRECTDRAW7; -typedef struct IDirectDrawSurface FAR *LPDIRECTDRAWSURFACE; -typedef struct IDirectDrawSurface2 FAR *LPDIRECTDRAWSURFACE2; -typedef struct IDirectDrawSurface3 FAR *LPDIRECTDRAWSURFACE3; -typedef struct IDirectDrawSurface4 FAR *LPDIRECTDRAWSURFACE4; -typedef struct IDirectDrawSurface7 FAR *LPDIRECTDRAWSURFACE7; -typedef struct IDirectDrawPalette FAR *LPDIRECTDRAWPALETTE; -typedef struct IDirectDrawClipper FAR *LPDIRECTDRAWCLIPPER; -typedef struct IDirectDrawColorControl FAR *LPDIRECTDRAWCOLORCONTROL; -typedef struct IDirectDrawGammaControl FAR *LPDIRECTDRAWGAMMACONTROL; - -typedef struct _DDFXROP FAR *LPDDFXROP; -typedef struct _DDSURFACEDESC FAR *LPDDSURFACEDESC; -typedef struct _DDSURFACEDESC2 FAR *LPDDSURFACEDESC2; -typedef struct _DDCOLORCONTROL FAR *LPDDCOLORCONTROL; - -/* - * API's - */ -#if (defined (WIN32) || defined( _WIN32 ) ) && !defined( _NO_COM ) -//#if defined( _WIN32 ) && !defined( _NO_ENUM ) - typedef BOOL (FAR PASCAL * LPDDENUMCALLBACKA)(GUID FAR *, LPSTR, LPSTR, LPVOID); - typedef BOOL (FAR PASCAL * LPDDENUMCALLBACKW)(GUID FAR *, LPWSTR, LPWSTR, LPVOID); - extern HRESULT WINAPI DirectDrawEnumerateW( LPDDENUMCALLBACKW lpCallback, LPVOID lpContext ); - extern HRESULT WINAPI DirectDrawEnumerateA( LPDDENUMCALLBACKA lpCallback, LPVOID lpContext ); - /* - * Protect against old SDKs - */ - #if !defined(HMONITOR_DECLARED) && (WINVER < 0x0500) - #define HMONITOR_DECLARED - DECLARE_HANDLE(HMONITOR); - #endif - typedef BOOL (FAR PASCAL * LPDDENUMCALLBACKEXA)(GUID FAR *, LPSTR, LPSTR, LPVOID, HMONITOR); - typedef BOOL (FAR PASCAL * LPDDENUMCALLBACKEXW)(GUID FAR *, LPWSTR, LPWSTR, LPVOID, HMONITOR); - extern HRESULT WINAPI DirectDrawEnumerateExW( LPDDENUMCALLBACKEXW lpCallback, LPVOID lpContext, DWORD dwFlags); - extern HRESULT WINAPI DirectDrawEnumerateExA( LPDDENUMCALLBACKEXA lpCallback, LPVOID lpContext, DWORD dwFlags); - typedef HRESULT (WINAPI * LPDIRECTDRAWENUMERATEEXA)( LPDDENUMCALLBACKEXA lpCallback, LPVOID lpContext, DWORD dwFlags); - typedef HRESULT (WINAPI * LPDIRECTDRAWENUMERATEEXW)( LPDDENUMCALLBACKEXW lpCallback, LPVOID lpContext, DWORD dwFlags); - - #ifdef UNICODE - typedef LPDDENUMCALLBACKW LPDDENUMCALLBACK; - #define DirectDrawEnumerate DirectDrawEnumerateW - typedef LPDDENUMCALLBACKEXW LPDDENUMCALLBACKEX; - typedef LPDIRECTDRAWENUMERATEEXW LPDIRECTDRAWENUMERATEEX; - #define DirectDrawEnumerateEx DirectDrawEnumerateExW - #else - typedef LPDDENUMCALLBACKA LPDDENUMCALLBACK; - #define DirectDrawEnumerate DirectDrawEnumerateA - typedef LPDDENUMCALLBACKEXA LPDDENUMCALLBACKEX; - typedef LPDIRECTDRAWENUMERATEEXA LPDIRECTDRAWENUMERATEEX; - #define DirectDrawEnumerateEx DirectDrawEnumerateExA - #endif - extern HRESULT WINAPI DirectDrawCreate( GUID FAR *lpGUID, LPDIRECTDRAW FAR *lplpDD, IUnknown FAR *pUnkOuter ); - extern HRESULT WINAPI DirectDrawCreateEx( GUID FAR * lpGuid, LPVOID *lplpDD, REFIID iid,IUnknown FAR *pUnkOuter ); - extern HRESULT WINAPI DirectDrawCreateClipper( DWORD dwFlags, LPDIRECTDRAWCLIPPER FAR *lplpDDClipper, IUnknown FAR *pUnkOuter ); -#endif -/* - * Flags for DirectDrawEnumerateEx - * DirectDrawEnumerateEx supercedes DirectDrawEnumerate. You must use GetProcAddress to - * obtain a function pointer (of type LPDIRECTDRAWENUMERATEEX) to DirectDrawEnumerateEx. - * By default, only the primary display device is enumerated. - * DirectDrawEnumerate is equivalent to DirectDrawEnumerate(,,DDENUM_NONDISPLAYDEVICES) - */ - -/* - * This flag causes enumeration of any GDI display devices which are part of - * the Windows Desktop - */ -#define DDENUM_ATTACHEDSECONDARYDEVICES 0x00000001L - -/* - * This flag causes enumeration of any GDI display devices which are not - * part of the Windows Desktop - */ -#define DDENUM_DETACHEDSECONDARYDEVICES 0x00000002L - -/* - * This flag causes enumeration of non-display devices - */ -#define DDENUM_NONDISPLAYDEVICES 0x00000004L - - -#define REGSTR_KEY_DDHW_DESCRIPTION "Description" -#define REGSTR_KEY_DDHW_DRIVERNAME "DriverName" -#define REGSTR_PATH_DDHW "Hardware\\DirectDrawDrivers" - -#define DDCREATE_HARDWAREONLY 0x00000001l -#define DDCREATE_EMULATIONONLY 0x00000002l - -#if defined(WINNT) || !defined(WIN32) -typedef long HRESULT; -#endif - -//#ifndef WINNT -typedef HRESULT (FAR PASCAL * LPDDENUMMODESCALLBACK)(LPDDSURFACEDESC, LPVOID); -typedef HRESULT (FAR PASCAL * LPDDENUMMODESCALLBACK2)(LPDDSURFACEDESC2, LPVOID); -typedef HRESULT (FAR PASCAL * LPDDENUMSURFACESCALLBACK)(LPDIRECTDRAWSURFACE, LPDDSURFACEDESC, LPVOID); -typedef HRESULT (FAR PASCAL * LPDDENUMSURFACESCALLBACK2)(LPDIRECTDRAWSURFACE4, LPDDSURFACEDESC2, LPVOID); -typedef HRESULT (FAR PASCAL * LPDDENUMSURFACESCALLBACK7)(LPDIRECTDRAWSURFACE7, LPDDSURFACEDESC2, LPVOID); -//#endif - -/* - * Generic pixel format with 8-bit RGB and alpha components - */ -typedef struct _DDARGB -{ - BYTE blue; - BYTE green; - BYTE red; - BYTE alpha; -} DDARGB; - -typedef DDARGB FAR *LPDDARGB; - -/* - * This version of the structure remains for backwards source compatibility. - * The DDARGB structure is the one that should be used for all DirectDraw APIs. - */ -typedef struct _DDRGBA -{ - BYTE red; - BYTE green; - BYTE blue; - BYTE alpha; -} DDRGBA; - -typedef DDRGBA FAR *LPDDRGBA; - - -/* - * DDCOLORKEY - */ -typedef struct _DDCOLORKEY -{ - DWORD dwColorSpaceLowValue; // low boundary of color space that is to - // be treated as Color Key, inclusive - DWORD dwColorSpaceHighValue; // high boundary of color space that is - // to be treated as Color Key, inclusive -} DDCOLORKEY; - -typedef DDCOLORKEY FAR* LPDDCOLORKEY; - -/* - * DDBLTFX - * Used to pass override information to the DIRECTDRAWSURFACE callback Blt. - */ -typedef struct _DDBLTFX -{ - DWORD dwSize; // size of structure - DWORD dwDDFX; // FX operations - DWORD dwROP; // Win32 raster operations - DWORD dwDDROP; // Raster operations new for DirectDraw - DWORD dwRotationAngle; // Rotation angle for blt - DWORD dwZBufferOpCode; // ZBuffer compares - DWORD dwZBufferLow; // Low limit of Z buffer - DWORD dwZBufferHigh; // High limit of Z buffer - DWORD dwZBufferBaseDest; // Destination base value - DWORD dwZDestConstBitDepth; // Bit depth used to specify Z constant for destination - union - { - DWORD dwZDestConst; // Constant to use as Z buffer for dest - LPDIRECTDRAWSURFACE lpDDSZBufferDest; // Surface to use as Z buffer for dest - } DUMMYUNIONNAMEN(1); - DWORD dwZSrcConstBitDepth; // Bit depth used to specify Z constant for source - union - { - DWORD dwZSrcConst; // Constant to use as Z buffer for src - LPDIRECTDRAWSURFACE lpDDSZBufferSrc; // Surface to use as Z buffer for src - } DUMMYUNIONNAMEN(2); - DWORD dwAlphaEdgeBlendBitDepth; // Bit depth used to specify constant for alpha edge blend - DWORD dwAlphaEdgeBlend; // Alpha for edge blending - DWORD dwReserved; - DWORD dwAlphaDestConstBitDepth; // Bit depth used to specify alpha constant for destination - union - { - DWORD dwAlphaDestConst; // Constant to use as Alpha Channel - LPDIRECTDRAWSURFACE lpDDSAlphaDest; // Surface to use as Alpha Channel - } DUMMYUNIONNAMEN(3); - DWORD dwAlphaSrcConstBitDepth; // Bit depth used to specify alpha constant for source - union - { - DWORD dwAlphaSrcConst; // Constant to use as Alpha Channel - LPDIRECTDRAWSURFACE lpDDSAlphaSrc; // Surface to use as Alpha Channel - } DUMMYUNIONNAMEN(4); - union - { - DWORD dwFillColor; // color in RGB or Palettized - DWORD dwFillDepth; // depth value for z-buffer - DWORD dwFillPixel; // pixel value for RGBA or RGBZ - LPDIRECTDRAWSURFACE lpDDSPattern; // Surface to use as pattern - } DUMMYUNIONNAMEN(5); - DDCOLORKEY ddckDestColorkey; // DestColorkey override - DDCOLORKEY ddckSrcColorkey; // SrcColorkey override -} DDBLTFX; - -typedef DDBLTFX FAR* LPDDBLTFX; - - - -/* - * DDSCAPS - */ -typedef struct _DDSCAPS -{ - DWORD dwCaps; // capabilities of surface wanted -} DDSCAPS; - -typedef DDSCAPS FAR* LPDDSCAPS; - - -/* - * DDOSCAPS - */ -typedef struct _DDOSCAPS -{ - DWORD dwCaps; // capabilities of surface wanted -} DDOSCAPS; - -typedef DDOSCAPS FAR* LPDDOSCAPS; - -/* - * This structure is used internally by DirectDraw. - */ -typedef struct _DDSCAPSEX -{ - DWORD dwCaps2; - DWORD dwCaps3; - union - { - DWORD dwCaps4; - DWORD dwVolumeDepth; - } DUMMYUNIONNAMEN(1); -} DDSCAPSEX, FAR * LPDDSCAPSEX; - -/* - * DDSCAPS2 - */ -typedef struct _DDSCAPS2 -{ - DWORD dwCaps; // capabilities of surface wanted - DWORD dwCaps2; - DWORD dwCaps3; - union - { - DWORD dwCaps4; - DWORD dwVolumeDepth; - } DUMMYUNIONNAMEN(1); -} DDSCAPS2; - -typedef DDSCAPS2 FAR* LPDDSCAPS2; - -/* - * DDCAPS - */ -#define DD_ROP_SPACE (256/32) // space required to store ROP array -/* - * NOTE: Our choosen structure number scheme is to append a single digit to - * the end of the structure giving the version that structure is associated - * with. - */ - -/* - * This structure represents the DDCAPS structure released in DirectDraw 1.0. It is used internally - * by DirectDraw to interpret caps passed into ddraw by drivers written prior to the release of DirectDraw 2.0. - * New applications should use the DDCAPS structure defined below. - */ -typedef struct _DDCAPS_DX1 -{ - DWORD dwSize; // size of the DDDRIVERCAPS structure - DWORD dwCaps; // driver specific capabilities - DWORD dwCaps2; // more driver specific capabilites - DWORD dwCKeyCaps; // color key capabilities of the surface - DWORD dwFXCaps; // driver specific stretching and effects capabilites - DWORD dwFXAlphaCaps; // alpha driver specific capabilities - DWORD dwPalCaps; // palette capabilities - DWORD dwSVCaps; // stereo vision capabilities - DWORD dwAlphaBltConstBitDepths; // DDBD_2,4,8 - DWORD dwAlphaBltPixelBitDepths; // DDBD_1,2,4,8 - DWORD dwAlphaBltSurfaceBitDepths; // DDBD_1,2,4,8 - DWORD dwAlphaOverlayConstBitDepths; // DDBD_2,4,8 - DWORD dwAlphaOverlayPixelBitDepths; // DDBD_1,2,4,8 - DWORD dwAlphaOverlaySurfaceBitDepths; // DDBD_1,2,4,8 - DWORD dwZBufferBitDepths; // DDBD_8,16,24,32 - DWORD dwVidMemTotal; // total amount of video memory - DWORD dwVidMemFree; // amount of free video memory - DWORD dwMaxVisibleOverlays; // maximum number of visible overlays - DWORD dwCurrVisibleOverlays; // current number of visible overlays - DWORD dwNumFourCCCodes; // number of four cc codes - DWORD dwAlignBoundarySrc; // source rectangle alignment - DWORD dwAlignSizeSrc; // source rectangle byte size - DWORD dwAlignBoundaryDest; // dest rectangle alignment - DWORD dwAlignSizeDest; // dest rectangle byte size - DWORD dwAlignStrideAlign; // stride alignment - DWORD dwRops[DD_ROP_SPACE]; // ROPS supported - DDSCAPS ddsCaps; // DDSCAPS structure has all the general capabilities - DWORD dwMinOverlayStretch; // minimum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 - DWORD dwMaxOverlayStretch; // maximum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 - DWORD dwMinLiveVideoStretch; // OBSOLETE! This field remains for compatability reasons only - DWORD dwMaxLiveVideoStretch; // OBSOLETE! This field remains for compatability reasons only - DWORD dwMinHwCodecStretch; // OBSOLETE! This field remains for compatability reasons only - DWORD dwMaxHwCodecStretch; // OBSOLETE! This field remains for compatability reasons only - DWORD dwReserved1; // reserved - DWORD dwReserved2; // reserved - DWORD dwReserved3; // reserved -} DDCAPS_DX1; - -typedef DDCAPS_DX1 FAR* LPDDCAPS_DX1; - -/* - * This structure is the DDCAPS structure as it was in version 2 and 3 of Direct X. - * It is present for back compatability. - */ -typedef struct _DDCAPS_DX3 -{ - DWORD dwSize; // size of the DDDRIVERCAPS structure - DWORD dwCaps; // driver specific capabilities - DWORD dwCaps2; // more driver specific capabilites - DWORD dwCKeyCaps; // color key capabilities of the surface - DWORD dwFXCaps; // driver specific stretching and effects capabilites - DWORD dwFXAlphaCaps; // alpha driver specific capabilities - DWORD dwPalCaps; // palette capabilities - DWORD dwSVCaps; // stereo vision capabilities - DWORD dwAlphaBltConstBitDepths; // DDBD_2,4,8 - DWORD dwAlphaBltPixelBitDepths; // DDBD_1,2,4,8 - DWORD dwAlphaBltSurfaceBitDepths; // DDBD_1,2,4,8 - DWORD dwAlphaOverlayConstBitDepths; // DDBD_2,4,8 - DWORD dwAlphaOverlayPixelBitDepths; // DDBD_1,2,4,8 - DWORD dwAlphaOverlaySurfaceBitDepths; // DDBD_1,2,4,8 - DWORD dwZBufferBitDepths; // DDBD_8,16,24,32 - DWORD dwVidMemTotal; // total amount of video memory - DWORD dwVidMemFree; // amount of free video memory - DWORD dwMaxVisibleOverlays; // maximum number of visible overlays - DWORD dwCurrVisibleOverlays; // current number of visible overlays - DWORD dwNumFourCCCodes; // number of four cc codes - DWORD dwAlignBoundarySrc; // source rectangle alignment - DWORD dwAlignSizeSrc; // source rectangle byte size - DWORD dwAlignBoundaryDest; // dest rectangle alignment - DWORD dwAlignSizeDest; // dest rectangle byte size - DWORD dwAlignStrideAlign; // stride alignment - DWORD dwRops[DD_ROP_SPACE]; // ROPS supported - DDSCAPS ddsCaps; // DDSCAPS structure has all the general capabilities - DWORD dwMinOverlayStretch; // minimum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 - DWORD dwMaxOverlayStretch; // maximum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 - DWORD dwMinLiveVideoStretch; // minimum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 - DWORD dwMaxLiveVideoStretch; // maximum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 - DWORD dwMinHwCodecStretch; // minimum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 - DWORD dwMaxHwCodecStretch; // maximum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 - DWORD dwReserved1; // reserved - DWORD dwReserved2; // reserved - DWORD dwReserved3; // reserved - DWORD dwSVBCaps; // driver specific capabilities for System->Vmem blts - DWORD dwSVBCKeyCaps; // driver color key capabilities for System->Vmem blts - DWORD dwSVBFXCaps; // driver FX capabilities for System->Vmem blts - DWORD dwSVBRops[DD_ROP_SPACE];// ROPS supported for System->Vmem blts - DWORD dwVSBCaps; // driver specific capabilities for Vmem->System blts - DWORD dwVSBCKeyCaps; // driver color key capabilities for Vmem->System blts - DWORD dwVSBFXCaps; // driver FX capabilities for Vmem->System blts - DWORD dwVSBRops[DD_ROP_SPACE];// ROPS supported for Vmem->System blts - DWORD dwSSBCaps; // driver specific capabilities for System->System blts - DWORD dwSSBCKeyCaps; // driver color key capabilities for System->System blts - DWORD dwSSBFXCaps; // driver FX capabilities for System->System blts - DWORD dwSSBRops[DD_ROP_SPACE];// ROPS supported for System->System blts - DWORD dwReserved4; // reserved - DWORD dwReserved5; // reserved - DWORD dwReserved6; // reserved -} DDCAPS_DX3; -typedef DDCAPS_DX3 FAR* LPDDCAPS_DX3; - -/* - * This structure is the DDCAPS structure as it was in version 5 of Direct X. - * It is present for back compatability. - */ -typedef struct _DDCAPS_DX5 -{ -/* 0*/ DWORD dwSize; // size of the DDDRIVERCAPS structure -/* 4*/ DWORD dwCaps; // driver specific capabilities -/* 8*/ DWORD dwCaps2; // more driver specific capabilites -/* c*/ DWORD dwCKeyCaps; // color key capabilities of the surface -/* 10*/ DWORD dwFXCaps; // driver specific stretching and effects capabilites -/* 14*/ DWORD dwFXAlphaCaps; // alpha driver specific capabilities -/* 18*/ DWORD dwPalCaps; // palette capabilities -/* 1c*/ DWORD dwSVCaps; // stereo vision capabilities -/* 20*/ DWORD dwAlphaBltConstBitDepths; // DDBD_2,4,8 -/* 24*/ DWORD dwAlphaBltPixelBitDepths; // DDBD_1,2,4,8 -/* 28*/ DWORD dwAlphaBltSurfaceBitDepths; // DDBD_1,2,4,8 -/* 2c*/ DWORD dwAlphaOverlayConstBitDepths; // DDBD_2,4,8 -/* 30*/ DWORD dwAlphaOverlayPixelBitDepths; // DDBD_1,2,4,8 -/* 34*/ DWORD dwAlphaOverlaySurfaceBitDepths; // DDBD_1,2,4,8 -/* 38*/ DWORD dwZBufferBitDepths; // DDBD_8,16,24,32 -/* 3c*/ DWORD dwVidMemTotal; // total amount of video memory -/* 40*/ DWORD dwVidMemFree; // amount of free video memory -/* 44*/ DWORD dwMaxVisibleOverlays; // maximum number of visible overlays -/* 48*/ DWORD dwCurrVisibleOverlays; // current number of visible overlays -/* 4c*/ DWORD dwNumFourCCCodes; // number of four cc codes -/* 50*/ DWORD dwAlignBoundarySrc; // source rectangle alignment -/* 54*/ DWORD dwAlignSizeSrc; // source rectangle byte size -/* 58*/ DWORD dwAlignBoundaryDest; // dest rectangle alignment -/* 5c*/ DWORD dwAlignSizeDest; // dest rectangle byte size -/* 60*/ DWORD dwAlignStrideAlign; // stride alignment -/* 64*/ DWORD dwRops[DD_ROP_SPACE]; // ROPS supported -/* 84*/ DDSCAPS ddsCaps; // DDSCAPS structure has all the general capabilities -/* 88*/ DWORD dwMinOverlayStretch; // minimum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 -/* 8c*/ DWORD dwMaxOverlayStretch; // maximum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 -/* 90*/ DWORD dwMinLiveVideoStretch; // minimum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 -/* 94*/ DWORD dwMaxLiveVideoStretch; // maximum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 -/* 98*/ DWORD dwMinHwCodecStretch; // minimum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 -/* 9c*/ DWORD dwMaxHwCodecStretch; // maximum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 -/* a0*/ DWORD dwReserved1; // reserved -/* a4*/ DWORD dwReserved2; // reserved -/* a8*/ DWORD dwReserved3; // reserved -/* ac*/ DWORD dwSVBCaps; // driver specific capabilities for System->Vmem blts -/* b0*/ DWORD dwSVBCKeyCaps; // driver color key capabilities for System->Vmem blts -/* b4*/ DWORD dwSVBFXCaps; // driver FX capabilities for System->Vmem blts -/* b8*/ DWORD dwSVBRops[DD_ROP_SPACE];// ROPS supported for System->Vmem blts -/* d8*/ DWORD dwVSBCaps; // driver specific capabilities for Vmem->System blts -/* dc*/ DWORD dwVSBCKeyCaps; // driver color key capabilities for Vmem->System blts -/* e0*/ DWORD dwVSBFXCaps; // driver FX capabilities for Vmem->System blts -/* e4*/ DWORD dwVSBRops[DD_ROP_SPACE];// ROPS supported for Vmem->System blts -/*104*/ DWORD dwSSBCaps; // driver specific capabilities for System->System blts -/*108*/ DWORD dwSSBCKeyCaps; // driver color key capabilities for System->System blts -/*10c*/ DWORD dwSSBFXCaps; // driver FX capabilities for System->System blts -/*110*/ DWORD dwSSBRops[DD_ROP_SPACE];// ROPS supported for System->System blts -// Members added for DX5: -/*130*/ DWORD dwMaxVideoPorts; // maximum number of usable video ports -/*134*/ DWORD dwCurrVideoPorts; // current number of video ports used -/*138*/ DWORD dwSVBCaps2; // more driver specific capabilities for System->Vmem blts -/*13c*/ DWORD dwNLVBCaps; // driver specific capabilities for non-local->local vidmem blts -/*140*/ DWORD dwNLVBCaps2; // more driver specific capabilities non-local->local vidmem blts -/*144*/ DWORD dwNLVBCKeyCaps; // driver color key capabilities for non-local->local vidmem blts -/*148*/ DWORD dwNLVBFXCaps; // driver FX capabilities for non-local->local blts -/*14c*/ DWORD dwNLVBRops[DD_ROP_SPACE]; // ROPS supported for non-local->local blts -} DDCAPS_DX5; -typedef DDCAPS_DX5 FAR* LPDDCAPS_DX5; - -typedef struct _DDCAPS_DX6 -{ -/* 0*/ DWORD dwSize; // size of the DDDRIVERCAPS structure -/* 4*/ DWORD dwCaps; // driver specific capabilities -/* 8*/ DWORD dwCaps2; // more driver specific capabilites -/* c*/ DWORD dwCKeyCaps; // color key capabilities of the surface -/* 10*/ DWORD dwFXCaps; // driver specific stretching and effects capabilites -/* 14*/ DWORD dwFXAlphaCaps; // alpha caps -/* 18*/ DWORD dwPalCaps; // palette capabilities -/* 1c*/ DWORD dwSVCaps; // stereo vision capabilities -/* 20*/ DWORD dwAlphaBltConstBitDepths; // DDBD_2,4,8 -/* 24*/ DWORD dwAlphaBltPixelBitDepths; // DDBD_1,2,4,8 -/* 28*/ DWORD dwAlphaBltSurfaceBitDepths; // DDBD_1,2,4,8 -/* 2c*/ DWORD dwAlphaOverlayConstBitDepths; // DDBD_2,4,8 -/* 30*/ DWORD dwAlphaOverlayPixelBitDepths; // DDBD_1,2,4,8 -/* 34*/ DWORD dwAlphaOverlaySurfaceBitDepths; // DDBD_1,2,4,8 -/* 38*/ DWORD dwZBufferBitDepths; // DDBD_8,16,24,32 -/* 3c*/ DWORD dwVidMemTotal; // total amount of video memory -/* 40*/ DWORD dwVidMemFree; // amount of free video memory -/* 44*/ DWORD dwMaxVisibleOverlays; // maximum number of visible overlays -/* 48*/ DWORD dwCurrVisibleOverlays; // current number of visible overlays -/* 4c*/ DWORD dwNumFourCCCodes; // number of four cc codes -/* 50*/ DWORD dwAlignBoundarySrc; // source rectangle alignment -/* 54*/ DWORD dwAlignSizeSrc; // source rectangle byte size -/* 58*/ DWORD dwAlignBoundaryDest; // dest rectangle alignment -/* 5c*/ DWORD dwAlignSizeDest; // dest rectangle byte size -/* 60*/ DWORD dwAlignStrideAlign; // stride alignment -/* 64*/ DWORD dwRops[DD_ROP_SPACE]; // ROPS supported -/* 84*/ DDSCAPS ddsOldCaps; // Was DDSCAPS ddsCaps. ddsCaps is of type DDSCAPS2 for DX6 -/* 88*/ DWORD dwMinOverlayStretch; // minimum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 -/* 8c*/ DWORD dwMaxOverlayStretch; // maximum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 -/* 90*/ DWORD dwMinLiveVideoStretch; // minimum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 -/* 94*/ DWORD dwMaxLiveVideoStretch; // maximum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 -/* 98*/ DWORD dwMinHwCodecStretch; // minimum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 -/* 9c*/ DWORD dwMaxHwCodecStretch; // maximum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 -/* a0*/ DWORD dwReserved1; // reserved -/* a4*/ DWORD dwReserved2; // reserved -/* a8*/ DWORD dwReserved3; // reserved -/* ac*/ DWORD dwSVBCaps; // driver specific capabilities for System->Vmem blts -/* b0*/ DWORD dwSVBCKeyCaps; // driver color key capabilities for System->Vmem blts -/* b4*/ DWORD dwSVBFXCaps; // driver FX capabilities for System->Vmem blts -/* b8*/ DWORD dwSVBRops[DD_ROP_SPACE];// ROPS supported for System->Vmem blts -/* d8*/ DWORD dwVSBCaps; // driver specific capabilities for Vmem->System blts -/* dc*/ DWORD dwVSBCKeyCaps; // driver color key capabilities for Vmem->System blts -/* e0*/ DWORD dwVSBFXCaps; // driver FX capabilities for Vmem->System blts -/* e4*/ DWORD dwVSBRops[DD_ROP_SPACE];// ROPS supported for Vmem->System blts -/*104*/ DWORD dwSSBCaps; // driver specific capabilities for System->System blts -/*108*/ DWORD dwSSBCKeyCaps; // driver color key capabilities for System->System blts -/*10c*/ DWORD dwSSBFXCaps; // driver FX capabilities for System->System blts -/*110*/ DWORD dwSSBRops[DD_ROP_SPACE];// ROPS supported for System->System blts -/*130*/ DWORD dwMaxVideoPorts; // maximum number of usable video ports -/*134*/ DWORD dwCurrVideoPorts; // current number of video ports used -/*138*/ DWORD dwSVBCaps2; // more driver specific capabilities for System->Vmem blts -/*13c*/ DWORD dwNLVBCaps; // driver specific capabilities for non-local->local vidmem blts -/*140*/ DWORD dwNLVBCaps2; // more driver specific capabilities non-local->local vidmem blts -/*144*/ DWORD dwNLVBCKeyCaps; // driver color key capabilities for non-local->local vidmem blts -/*148*/ DWORD dwNLVBFXCaps; // driver FX capabilities for non-local->local blts -/*14c*/ DWORD dwNLVBRops[DD_ROP_SPACE]; // ROPS supported for non-local->local blts -// Members added for DX6 release -/*16c*/ DDSCAPS2 ddsCaps; // Surface Caps -} DDCAPS_DX6; -typedef DDCAPS_DX6 FAR* LPDDCAPS_DX6; - -typedef struct _DDCAPS_DX7 -{ -/* 0*/ DWORD dwSize; // size of the DDDRIVERCAPS structure -/* 4*/ DWORD dwCaps; // driver specific capabilities -/* 8*/ DWORD dwCaps2; // more driver specific capabilites -/* c*/ DWORD dwCKeyCaps; // color key capabilities of the surface -/* 10*/ DWORD dwFXCaps; // driver specific stretching and effects capabilites -/* 14*/ DWORD dwFXAlphaCaps; // alpha driver specific capabilities -/* 18*/ DWORD dwPalCaps; // palette capabilities -/* 1c*/ DWORD dwSVCaps; // stereo vision capabilities -/* 20*/ DWORD dwAlphaBltConstBitDepths; // DDBD_2,4,8 -/* 24*/ DWORD dwAlphaBltPixelBitDepths; // DDBD_1,2,4,8 -/* 28*/ DWORD dwAlphaBltSurfaceBitDepths; // DDBD_1,2,4,8 -/* 2c*/ DWORD dwAlphaOverlayConstBitDepths; // DDBD_2,4,8 -/* 30*/ DWORD dwAlphaOverlayPixelBitDepths; // DDBD_1,2,4,8 -/* 34*/ DWORD dwAlphaOverlaySurfaceBitDepths; // DDBD_1,2,4,8 -/* 38*/ DWORD dwZBufferBitDepths; // DDBD_8,16,24,32 -/* 3c*/ DWORD dwVidMemTotal; // total amount of video memory -/* 40*/ DWORD dwVidMemFree; // amount of free video memory -/* 44*/ DWORD dwMaxVisibleOverlays; // maximum number of visible overlays -/* 48*/ DWORD dwCurrVisibleOverlays; // current number of visible overlays -/* 4c*/ DWORD dwNumFourCCCodes; // number of four cc codes -/* 50*/ DWORD dwAlignBoundarySrc; // source rectangle alignment -/* 54*/ DWORD dwAlignSizeSrc; // source rectangle byte size -/* 58*/ DWORD dwAlignBoundaryDest; // dest rectangle alignment -/* 5c*/ DWORD dwAlignSizeDest; // dest rectangle byte size -/* 60*/ DWORD dwAlignStrideAlign; // stride alignment -/* 64*/ DWORD dwRops[DD_ROP_SPACE]; // ROPS supported -/* 84*/ DDSCAPS ddsOldCaps; // Was DDSCAPS ddsCaps. ddsCaps is of type DDSCAPS2 for DX6 -/* 88*/ DWORD dwMinOverlayStretch; // minimum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 -/* 8c*/ DWORD dwMaxOverlayStretch; // maximum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 -/* 90*/ DWORD dwMinLiveVideoStretch; // minimum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 -/* 94*/ DWORD dwMaxLiveVideoStretch; // maximum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 -/* 98*/ DWORD dwMinHwCodecStretch; // minimum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 -/* 9c*/ DWORD dwMaxHwCodecStretch; // maximum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 -/* a0*/ DWORD dwReserved1; // reserved -/* a4*/ DWORD dwReserved2; // reserved -/* a8*/ DWORD dwReserved3; // reserved -/* ac*/ DWORD dwSVBCaps; // driver specific capabilities for System->Vmem blts -/* b0*/ DWORD dwSVBCKeyCaps; // driver color key capabilities for System->Vmem blts -/* b4*/ DWORD dwSVBFXCaps; // driver FX capabilities for System->Vmem blts -/* b8*/ DWORD dwSVBRops[DD_ROP_SPACE];// ROPS supported for System->Vmem blts -/* d8*/ DWORD dwVSBCaps; // driver specific capabilities for Vmem->System blts -/* dc*/ DWORD dwVSBCKeyCaps; // driver color key capabilities for Vmem->System blts -/* e0*/ DWORD dwVSBFXCaps; // driver FX capabilities for Vmem->System blts -/* e4*/ DWORD dwVSBRops[DD_ROP_SPACE];// ROPS supported for Vmem->System blts -/*104*/ DWORD dwSSBCaps; // driver specific capabilities for System->System blts -/*108*/ DWORD dwSSBCKeyCaps; // driver color key capabilities for System->System blts -/*10c*/ DWORD dwSSBFXCaps; // driver FX capabilities for System->System blts -/*110*/ DWORD dwSSBRops[DD_ROP_SPACE];// ROPS supported for System->System blts -/*130*/ DWORD dwMaxVideoPorts; // maximum number of usable video ports -/*134*/ DWORD dwCurrVideoPorts; // current number of video ports used -/*138*/ DWORD dwSVBCaps2; // more driver specific capabilities for System->Vmem blts -/*13c*/ DWORD dwNLVBCaps; // driver specific capabilities for non-local->local vidmem blts -/*140*/ DWORD dwNLVBCaps2; // more driver specific capabilities non-local->local vidmem blts -/*144*/ DWORD dwNLVBCKeyCaps; // driver color key capabilities for non-local->local vidmem blts -/*148*/ DWORD dwNLVBFXCaps; // driver FX capabilities for non-local->local blts -/*14c*/ DWORD dwNLVBRops[DD_ROP_SPACE]; // ROPS supported for non-local->local blts -// Members added for DX6 release -/*16c*/ DDSCAPS2 ddsCaps; // Surface Caps -} DDCAPS_DX7; -typedef DDCAPS_DX7 FAR* LPDDCAPS_DX7; - - -#if DIRECTDRAW_VERSION <= 0x300 - typedef DDCAPS_DX3 DDCAPS; -#elif DIRECTDRAW_VERSION <= 0x500 - typedef DDCAPS_DX5 DDCAPS; -#elif DIRECTDRAW_VERSION <= 0x600 - typedef DDCAPS_DX6 DDCAPS; -#else - typedef DDCAPS_DX7 DDCAPS; -#endif - -typedef DDCAPS FAR* LPDDCAPS; - - - -/* - * DDPIXELFORMAT - */ -typedef struct _DDPIXELFORMAT -{ - DWORD dwSize; // size of structure - DWORD dwFlags; // pixel format flags - DWORD dwFourCC; // (FOURCC code) - union - { - DWORD dwRGBBitCount; // how many bits per pixel - DWORD dwYUVBitCount; // how many bits per pixel - DWORD dwZBufferBitDepth; // how many total bits/pixel in z buffer (including any stencil bits) - DWORD dwAlphaBitDepth; // how many bits for alpha channels - DWORD dwLuminanceBitCount; // how many bits per pixel - DWORD dwBumpBitCount; // how many bits per "buxel", total - DWORD dwPrivateFormatBitCount;// Bits per pixel of private driver formats. Only valid in texture - // format list and if DDPF_D3DFORMAT is set - } DUMMYUNIONNAMEN(1); - union - { - DWORD dwRBitMask; // mask for red bit - DWORD dwYBitMask; // mask for Y bits - DWORD dwStencilBitDepth; // how many stencil bits (note: dwZBufferBitDepth-dwStencilBitDepth is total Z-only bits) - DWORD dwLuminanceBitMask; // mask for luminance bits - DWORD dwBumpDuBitMask; // mask for bump map U delta bits - DWORD dwOperations; // DDPF_D3DFORMAT Operations - } DUMMYUNIONNAMEN(2); - union - { - DWORD dwGBitMask; // mask for green bits - DWORD dwUBitMask; // mask for U bits - DWORD dwZBitMask; // mask for Z bits - DWORD dwBumpDvBitMask; // mask for bump map V delta bits - struct - { - WORD wFlipMSTypes; // Multisample methods supported via flip for this D3DFORMAT - WORD wBltMSTypes; // Multisample methods supported via blt for this D3DFORMAT - } MultiSampleCaps; - - } DUMMYUNIONNAMEN(3); - union - { - DWORD dwBBitMask; // mask for blue bits - DWORD dwVBitMask; // mask for V bits - DWORD dwStencilBitMask; // mask for stencil bits - DWORD dwBumpLuminanceBitMask; // mask for luminance in bump map - } DUMMYUNIONNAMEN(4); - union - { - DWORD dwRGBAlphaBitMask; // mask for alpha channel - DWORD dwYUVAlphaBitMask; // mask for alpha channel - DWORD dwLuminanceAlphaBitMask;// mask for alpha channel - DWORD dwRGBZBitMask; // mask for Z channel - DWORD dwYUVZBitMask; // mask for Z channel - } DUMMYUNIONNAMEN(5); -} DDPIXELFORMAT; - -typedef DDPIXELFORMAT FAR* LPDDPIXELFORMAT; - -/* - * DDOVERLAYFX - */ -typedef struct _DDOVERLAYFX -{ - DWORD dwSize; // size of structure - DWORD dwAlphaEdgeBlendBitDepth; // Bit depth used to specify constant for alpha edge blend - DWORD dwAlphaEdgeBlend; // Constant to use as alpha for edge blend - DWORD dwReserved; - DWORD dwAlphaDestConstBitDepth; // Bit depth used to specify alpha constant for destination - union - { - DWORD dwAlphaDestConst; // Constant to use as alpha channel for dest - LPDIRECTDRAWSURFACE lpDDSAlphaDest; // Surface to use as alpha channel for dest - } DUMMYUNIONNAMEN(1); - DWORD dwAlphaSrcConstBitDepth; // Bit depth used to specify alpha constant for source - union - { - DWORD dwAlphaSrcConst; // Constant to use as alpha channel for src - LPDIRECTDRAWSURFACE lpDDSAlphaSrc; // Surface to use as alpha channel for src - } DUMMYUNIONNAMEN(2); - DDCOLORKEY dckDestColorkey; // DestColorkey override - DDCOLORKEY dckSrcColorkey; // DestColorkey override - DWORD dwDDFX; // Overlay FX - DWORD dwFlags; // flags -} DDOVERLAYFX; - -typedef DDOVERLAYFX FAR *LPDDOVERLAYFX; - - -/* - * DDBLTBATCH: BltBatch entry structure - */ -typedef struct _DDBLTBATCH -{ - LPRECT lprDest; - LPDIRECTDRAWSURFACE lpDDSSrc; - LPRECT lprSrc; - DWORD dwFlags; - LPDDBLTFX lpDDBltFx; -} DDBLTBATCH; - -typedef DDBLTBATCH FAR * LPDDBLTBATCH; - - -/* - * DDGAMMARAMP - */ -typedef struct _DDGAMMARAMP -{ - WORD red[256]; - WORD green[256]; - WORD blue[256]; -} DDGAMMARAMP; -typedef DDGAMMARAMP FAR * LPDDGAMMARAMP; - -/* - * This is the structure within which DirectDraw returns data about the current graphics driver and chipset - */ - -#define MAX_DDDEVICEID_STRING 512 - -typedef struct tagDDDEVICEIDENTIFIER -{ - /* - * These elements are for presentation to the user only. They should not be used to identify particular - * drivers, since this is unreliable and many different strings may be associated with the same - * device, and the same driver from different vendors. - */ - char szDriver[MAX_DDDEVICEID_STRING]; - char szDescription[MAX_DDDEVICEID_STRING]; - - /* - * This element is the version of the DirectDraw/3D driver. It is legal to do <, > comparisons - * on the whole 64 bits. Caution should be exercised if you use this element to identify problematic - * drivers. It is recommended that guidDeviceIdentifier is used for this purpose. - * - * This version has the form: - * wProduct = HIWORD(liDriverVersion.HighPart) - * wVersion = LOWORD(liDriverVersion.HighPart) - * wSubVersion = HIWORD(liDriverVersion.LowPart) - * wBuild = LOWORD(liDriverVersion.LowPart) - */ -#ifdef _WIN32 - LARGE_INTEGER liDriverVersion; /* Defined for applications and other 32 bit components */ -#else - DWORD dwDriverVersionLowPart; /* Defined for 16 bit driver components */ - DWORD dwDriverVersionHighPart; -#endif - - - /* - * These elements can be used to identify particular chipsets. Use with extreme caution. - * dwVendorId Identifies the manufacturer. May be zero if unknown. - * dwDeviceId Identifies the type of chipset. May be zero if unknown. - * dwSubSysId Identifies the subsystem, typically this means the particular board. May be zero if unknown. - * dwRevision Identifies the revision level of the chipset. May be zero if unknown. - */ - DWORD dwVendorId; - DWORD dwDeviceId; - DWORD dwSubSysId; - DWORD dwRevision; - - /* - * This element can be used to check changes in driver/chipset. This GUID is a unique identifier for the - * driver/chipset pair. Use this element if you wish to track changes to the driver/chipset in order to - * reprofile the graphics subsystem. - * This element can also be used to identify particular problematic drivers. - */ - GUID guidDeviceIdentifier; -} DDDEVICEIDENTIFIER, * LPDDDEVICEIDENTIFIER; - -typedef struct tagDDDEVICEIDENTIFIER2 -{ - /* - * These elements are for presentation to the user only. They should not be used to identify particular - * drivers, since this is unreliable and many different strings may be associated with the same - * device, and the same driver from different vendors. - */ - char szDriver[MAX_DDDEVICEID_STRING]; - char szDescription[MAX_DDDEVICEID_STRING]; - - /* - * This element is the version of the DirectDraw/3D driver. It is legal to do <, > comparisons - * on the whole 64 bits. Caution should be exercised if you use this element to identify problematic - * drivers. It is recommended that guidDeviceIdentifier is used for this purpose. - * - * This version has the form: - * wProduct = HIWORD(liDriverVersion.HighPart) - * wVersion = LOWORD(liDriverVersion.HighPart) - * wSubVersion = HIWORD(liDriverVersion.LowPart) - * wBuild = LOWORD(liDriverVersion.LowPart) - */ -#ifdef _WIN32 - LARGE_INTEGER liDriverVersion; /* Defined for applications and other 32 bit components */ -#else - DWORD dwDriverVersionLowPart; /* Defined for 16 bit driver components */ - DWORD dwDriverVersionHighPart; -#endif - - - /* - * These elements can be used to identify particular chipsets. Use with extreme caution. - * dwVendorId Identifies the manufacturer. May be zero if unknown. - * dwDeviceId Identifies the type of chipset. May be zero if unknown. - * dwSubSysId Identifies the subsystem, typically this means the particular board. May be zero if unknown. - * dwRevision Identifies the revision level of the chipset. May be zero if unknown. - */ - DWORD dwVendorId; - DWORD dwDeviceId; - DWORD dwSubSysId; - DWORD dwRevision; - - /* - * This element can be used to check changes in driver/chipset. This GUID is a unique identifier for the - * driver/chipset pair. Use this element if you wish to track changes to the driver/chipset in order to - * reprofile the graphics subsystem. - * This element can also be used to identify particular problematic drivers. - */ - GUID guidDeviceIdentifier; - - /* - * This element is used to determine the Windows Hardware Quality Lab (WHQL) - * certification level for this driver/device pair. - */ - DWORD dwWHQLLevel; - -} DDDEVICEIDENTIFIER2, * LPDDDEVICEIDENTIFIER2; - -/* - * Flags for the IDirectDraw4::GetDeviceIdentifier method - */ - -/* - * This flag causes GetDeviceIdentifier to return information about the host (typically 2D) adapter in a system equipped - * with a stacked secondary 3D adapter. Such an adapter appears to the application as if it were part of the - * host adapter, but is typically physcially located on a separate card. The stacked secondary's information is - * returned when GetDeviceIdentifier's dwFlags field is zero, since this most accurately reflects the qualities - * of the DirectDraw object involved. - */ -#define DDGDI_GETHOSTIDENTIFIER 0x00000001L - -/* - * Macros for interpretting DDEVICEIDENTIFIER2.dwWHQLLevel - */ -#define GET_WHQL_YEAR( dwWHQLLevel ) \ - ( (dwWHQLLevel) / 0x10000 ) -#define GET_WHQL_MONTH( dwWHQLLevel ) \ - ( ( (dwWHQLLevel) / 0x100 ) & 0x00ff ) -#define GET_WHQL_DAY( dwWHQLLevel ) \ - ( (dwWHQLLevel) & 0xff ) - - -/* - * callbacks - */ -typedef DWORD (FAR PASCAL *LPCLIPPERCALLBACK)(LPDIRECTDRAWCLIPPER lpDDClipper, HWND hWnd, DWORD code, LPVOID lpContext ); -#ifdef STREAMING -typedef DWORD (FAR PASCAL *LPSURFACESTREAMINGCALLBACK)(DWORD); -#endif - - -/* - * INTERACES FOLLOW: - * IDirectDraw - * IDirectDrawClipper - * IDirectDrawPalette - * IDirectDrawSurface - */ - -/* - * IDirectDraw - */ -#if defined( _WIN32 ) && !defined( _NO_COM ) -#undef INTERFACE -#define INTERFACE IDirectDraw -DECLARE_INTERFACE_( IDirectDraw, IUnknown ) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - /*** IDirectDraw methods ***/ - STDMETHOD(Compact)(THIS) PURE; - STDMETHOD(CreateClipper)(THIS_ DWORD, LPDIRECTDRAWCLIPPER FAR*, IUnknown FAR * ) PURE; - STDMETHOD(CreatePalette)(THIS_ DWORD, LPPALETTEENTRY, LPDIRECTDRAWPALETTE FAR*, IUnknown FAR * ) PURE; - STDMETHOD(CreateSurface)(THIS_ LPDDSURFACEDESC, LPDIRECTDRAWSURFACE FAR *, IUnknown FAR *) PURE; - STDMETHOD(DuplicateSurface)( THIS_ LPDIRECTDRAWSURFACE, LPDIRECTDRAWSURFACE FAR * ) PURE; - STDMETHOD(EnumDisplayModes)( THIS_ DWORD, LPDDSURFACEDESC, LPVOID, LPDDENUMMODESCALLBACK ) PURE; - STDMETHOD(EnumSurfaces)(THIS_ DWORD, LPDDSURFACEDESC, LPVOID,LPDDENUMSURFACESCALLBACK ) PURE; - STDMETHOD(FlipToGDISurface)(THIS) PURE; - STDMETHOD(GetCaps)( THIS_ LPDDCAPS, LPDDCAPS) PURE; - STDMETHOD(GetDisplayMode)( THIS_ LPDDSURFACEDESC) PURE; - STDMETHOD(GetFourCCCodes)(THIS_ LPDWORD, LPDWORD ) PURE; - STDMETHOD(GetGDISurface)(THIS_ LPDIRECTDRAWSURFACE FAR *) PURE; - STDMETHOD(GetMonitorFrequency)(THIS_ LPDWORD) PURE; - STDMETHOD(GetScanLine)(THIS_ LPDWORD) PURE; - STDMETHOD(GetVerticalBlankStatus)(THIS_ LPBOOL ) PURE; - STDMETHOD(Initialize)(THIS_ GUID FAR *) PURE; - STDMETHOD(RestoreDisplayMode)(THIS) PURE; - STDMETHOD(SetCooperativeLevel)(THIS_ HWND, DWORD) PURE; - STDMETHOD(SetDisplayMode)(THIS_ DWORD, DWORD,DWORD) PURE; - STDMETHOD(WaitForVerticalBlank)(THIS_ DWORD, HANDLE ) PURE; -}; - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectDraw_QueryInterface(p, a, b) (p)->lpVtbl->QueryInterface(p, a, b) -#define IDirectDraw_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDirectDraw_Release(p) (p)->lpVtbl->Release(p) -#define IDirectDraw_Compact(p) (p)->lpVtbl->Compact(p) -#define IDirectDraw_CreateClipper(p, a, b, c) (p)->lpVtbl->CreateClipper(p, a, b, c) -#define IDirectDraw_CreatePalette(p, a, b, c, d) (p)->lpVtbl->CreatePalette(p, a, b, c, d) -#define IDirectDraw_CreateSurface(p, a, b, c) (p)->lpVtbl->CreateSurface(p, a, b, c) -#define IDirectDraw_DuplicateSurface(p, a, b) (p)->lpVtbl->DuplicateSurface(p, a, b) -#define IDirectDraw_EnumDisplayModes(p, a, b, c, d) (p)->lpVtbl->EnumDisplayModes(p, a, b, c, d) -#define IDirectDraw_EnumSurfaces(p, a, b, c, d) (p)->lpVtbl->EnumSurfaces(p, a, b, c, d) -#define IDirectDraw_FlipToGDISurface(p) (p)->lpVtbl->FlipToGDISurface(p) -#define IDirectDraw_GetCaps(p, a, b) (p)->lpVtbl->GetCaps(p, a, b) -#define IDirectDraw_GetDisplayMode(p, a) (p)->lpVtbl->GetDisplayMode(p, a) -#define IDirectDraw_GetFourCCCodes(p, a, b) (p)->lpVtbl->GetFourCCCodes(p, a, b) -#define IDirectDraw_GetGDISurface(p, a) (p)->lpVtbl->GetGDISurface(p, a) -#define IDirectDraw_GetMonitorFrequency(p, a) (p)->lpVtbl->GetMonitorFrequency(p, a) -#define IDirectDraw_GetScanLine(p, a) (p)->lpVtbl->GetScanLine(p, a) -#define IDirectDraw_GetVerticalBlankStatus(p, a) (p)->lpVtbl->GetVerticalBlankStatus(p, a) -#define IDirectDraw_Initialize(p, a) (p)->lpVtbl->Initialize(p, a) -#define IDirectDraw_RestoreDisplayMode(p) (p)->lpVtbl->RestoreDisplayMode(p) -#define IDirectDraw_SetCooperativeLevel(p, a, b) (p)->lpVtbl->SetCooperativeLevel(p, a, b) -#define IDirectDraw_SetDisplayMode(p, a, b, c) (p)->lpVtbl->SetDisplayMode(p, a, b, c) -#define IDirectDraw_WaitForVerticalBlank(p, a, b) (p)->lpVtbl->WaitForVerticalBlank(p, a, b) -#else -#define IDirectDraw_QueryInterface(p, a, b) (p)->QueryInterface(a, b) -#define IDirectDraw_AddRef(p) (p)->AddRef() -#define IDirectDraw_Release(p) (p)->Release() -#define IDirectDraw_Compact(p) (p)->Compact() -#define IDirectDraw_CreateClipper(p, a, b, c) (p)->CreateClipper(a, b, c) -#define IDirectDraw_CreatePalette(p, a, b, c, d) (p)->CreatePalette(a, b, c, d) -#define IDirectDraw_CreateSurface(p, a, b, c) (p)->CreateSurface(a, b, c) -#define IDirectDraw_DuplicateSurface(p, a, b) (p)->DuplicateSurface(a, b) -#define IDirectDraw_EnumDisplayModes(p, a, b, c, d) (p)->EnumDisplayModes(a, b, c, d) -#define IDirectDraw_EnumSurfaces(p, a, b, c, d) (p)->EnumSurfaces(a, b, c, d) -#define IDirectDraw_FlipToGDISurface(p) (p)->FlipToGDISurface() -#define IDirectDraw_GetCaps(p, a, b) (p)->GetCaps(a, b) -#define IDirectDraw_GetDisplayMode(p, a) (p)->GetDisplayMode(a) -#define IDirectDraw_GetFourCCCodes(p, a, b) (p)->GetFourCCCodes(a, b) -#define IDirectDraw_GetGDISurface(p, a) (p)->GetGDISurface(a) -#define IDirectDraw_GetMonitorFrequency(p, a) (p)->GetMonitorFrequency(a) -#define IDirectDraw_GetScanLine(p, a) (p)->GetScanLine(a) -#define IDirectDraw_GetVerticalBlankStatus(p, a) (p)->GetVerticalBlankStatus(a) -#define IDirectDraw_Initialize(p, a) (p)->Initialize(a) -#define IDirectDraw_RestoreDisplayMode(p) (p)->RestoreDisplayMode() -#define IDirectDraw_SetCooperativeLevel(p, a, b) (p)->SetCooperativeLevel(a, b) -#define IDirectDraw_SetDisplayMode(p, a, b, c) (p)->SetDisplayMode(a, b, c) -#define IDirectDraw_WaitForVerticalBlank(p, a, b) (p)->WaitForVerticalBlank(a, b) -#endif - -#endif - -#if defined( _WIN32 ) && !defined( _NO_COM ) -#undef INTERFACE -#define INTERFACE IDirectDraw2 -DECLARE_INTERFACE_( IDirectDraw2, IUnknown ) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - /*** IDirectDraw methods ***/ - STDMETHOD(Compact)(THIS) PURE; - STDMETHOD(CreateClipper)(THIS_ DWORD, LPDIRECTDRAWCLIPPER FAR*, IUnknown FAR * ) PURE; - STDMETHOD(CreatePalette)(THIS_ DWORD, LPPALETTEENTRY, LPDIRECTDRAWPALETTE FAR*, IUnknown FAR * ) PURE; - STDMETHOD(CreateSurface)(THIS_ LPDDSURFACEDESC, LPDIRECTDRAWSURFACE FAR *, IUnknown FAR *) PURE; - STDMETHOD(DuplicateSurface)( THIS_ LPDIRECTDRAWSURFACE, LPDIRECTDRAWSURFACE FAR * ) PURE; - STDMETHOD(EnumDisplayModes)( THIS_ DWORD, LPDDSURFACEDESC, LPVOID, LPDDENUMMODESCALLBACK ) PURE; - STDMETHOD(EnumSurfaces)(THIS_ DWORD, LPDDSURFACEDESC, LPVOID,LPDDENUMSURFACESCALLBACK ) PURE; - STDMETHOD(FlipToGDISurface)(THIS) PURE; - STDMETHOD(GetCaps)( THIS_ LPDDCAPS, LPDDCAPS) PURE; - STDMETHOD(GetDisplayMode)( THIS_ LPDDSURFACEDESC) PURE; - STDMETHOD(GetFourCCCodes)(THIS_ LPDWORD, LPDWORD ) PURE; - STDMETHOD(GetGDISurface)(THIS_ LPDIRECTDRAWSURFACE FAR *) PURE; - STDMETHOD(GetMonitorFrequency)(THIS_ LPDWORD) PURE; - STDMETHOD(GetScanLine)(THIS_ LPDWORD) PURE; - STDMETHOD(GetVerticalBlankStatus)(THIS_ LPBOOL ) PURE; - STDMETHOD(Initialize)(THIS_ GUID FAR *) PURE; - STDMETHOD(RestoreDisplayMode)(THIS) PURE; - STDMETHOD(SetCooperativeLevel)(THIS_ HWND, DWORD) PURE; - STDMETHOD(SetDisplayMode)(THIS_ DWORD, DWORD,DWORD, DWORD, DWORD) PURE; - STDMETHOD(WaitForVerticalBlank)(THIS_ DWORD, HANDLE ) PURE; - /*** Added in the v2 interface ***/ - STDMETHOD(GetAvailableVidMem)(THIS_ LPDDSCAPS, LPDWORD, LPDWORD) PURE; -}; -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectDraw2_QueryInterface(p, a, b) (p)->lpVtbl->QueryInterface(p, a, b) -#define IDirectDraw2_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDirectDraw2_Release(p) (p)->lpVtbl->Release(p) -#define IDirectDraw2_Compact(p) (p)->lpVtbl->Compact(p) -#define IDirectDraw2_CreateClipper(p, a, b, c) (p)->lpVtbl->CreateClipper(p, a, b, c) -#define IDirectDraw2_CreatePalette(p, a, b, c, d) (p)->lpVtbl->CreatePalette(p, a, b, c, d) -#define IDirectDraw2_CreateSurface(p, a, b, c) (p)->lpVtbl->CreateSurface(p, a, b, c) -#define IDirectDraw2_DuplicateSurface(p, a, b) (p)->lpVtbl->DuplicateSurface(p, a, b) -#define IDirectDraw2_EnumDisplayModes(p, a, b, c, d) (p)->lpVtbl->EnumDisplayModes(p, a, b, c, d) -#define IDirectDraw2_EnumSurfaces(p, a, b, c, d) (p)->lpVtbl->EnumSurfaces(p, a, b, c, d) -#define IDirectDraw2_FlipToGDISurface(p) (p)->lpVtbl->FlipToGDISurface(p) -#define IDirectDraw2_GetCaps(p, a, b) (p)->lpVtbl->GetCaps(p, a, b) -#define IDirectDraw2_GetDisplayMode(p, a) (p)->lpVtbl->GetDisplayMode(p, a) -#define IDirectDraw2_GetFourCCCodes(p, a, b) (p)->lpVtbl->GetFourCCCodes(p, a, b) -#define IDirectDraw2_GetGDISurface(p, a) (p)->lpVtbl->GetGDISurface(p, a) -#define IDirectDraw2_GetMonitorFrequency(p, a) (p)->lpVtbl->GetMonitorFrequency(p, a) -#define IDirectDraw2_GetScanLine(p, a) (p)->lpVtbl->GetScanLine(p, a) -#define IDirectDraw2_GetVerticalBlankStatus(p, a) (p)->lpVtbl->GetVerticalBlankStatus(p, a) -#define IDirectDraw2_Initialize(p, a) (p)->lpVtbl->Initialize(p, a) -#define IDirectDraw2_RestoreDisplayMode(p) (p)->lpVtbl->RestoreDisplayMode(p) -#define IDirectDraw2_SetCooperativeLevel(p, a, b) (p)->lpVtbl->SetCooperativeLevel(p, a, b) -#define IDirectDraw2_SetDisplayMode(p, a, b, c, d, e) (p)->lpVtbl->SetDisplayMode(p, a, b, c, d, e) -#define IDirectDraw2_WaitForVerticalBlank(p, a, b) (p)->lpVtbl->WaitForVerticalBlank(p, a, b) -#define IDirectDraw2_GetAvailableVidMem(p, a, b, c) (p)->lpVtbl->GetAvailableVidMem(p, a, b, c) -#else -#define IDirectDraw2_QueryInterface(p, a, b) (p)->QueryInterface(a, b) -#define IDirectDraw2_AddRef(p) (p)->AddRef() -#define IDirectDraw2_Release(p) (p)->Release() -#define IDirectDraw2_Compact(p) (p)->Compact() -#define IDirectDraw2_CreateClipper(p, a, b, c) (p)->CreateClipper(a, b, c) -#define IDirectDraw2_CreatePalette(p, a, b, c, d) (p)->CreatePalette(a, b, c, d) -#define IDirectDraw2_CreateSurface(p, a, b, c) (p)->CreateSurface(a, b, c) -#define IDirectDraw2_DuplicateSurface(p, a, b) (p)->DuplicateSurface(a, b) -#define IDirectDraw2_EnumDisplayModes(p, a, b, c, d) (p)->EnumDisplayModes(a, b, c, d) -#define IDirectDraw2_EnumSurfaces(p, a, b, c, d) (p)->EnumSurfaces(a, b, c, d) -#define IDirectDraw2_FlipToGDISurface(p) (p)->FlipToGDISurface() -#define IDirectDraw2_GetCaps(p, a, b) (p)->GetCaps(a, b) -#define IDirectDraw2_GetDisplayMode(p, a) (p)->GetDisplayMode(a) -#define IDirectDraw2_GetFourCCCodes(p, a, b) (p)->GetFourCCCodes(a, b) -#define IDirectDraw2_GetGDISurface(p, a) (p)->GetGDISurface(a) -#define IDirectDraw2_GetMonitorFrequency(p, a) (p)->GetMonitorFrequency(a) -#define IDirectDraw2_GetScanLine(p, a) (p)->GetScanLine(a) -#define IDirectDraw2_GetVerticalBlankStatus(p, a) (p)->GetVerticalBlankStatus(a) -#define IDirectDraw2_Initialize(p, a) (p)->Initialize(a) -#define IDirectDraw2_RestoreDisplayMode(p) (p)->RestoreDisplayMode() -#define IDirectDraw2_SetCooperativeLevel(p, a, b) (p)->SetCooperativeLevel(a, b) -#define IDirectDraw2_SetDisplayMode(p, a, b, c, d, e) (p)->SetDisplayMode(a, b, c, d, e) -#define IDirectDraw2_WaitForVerticalBlank(p, a, b) (p)->WaitForVerticalBlank(a, b) -#define IDirectDraw2_GetAvailableVidMem(p, a, b, c) (p)->GetAvailableVidMem(a, b, c) -#endif - -#endif - -#if defined( _WIN32 ) && !defined( _NO_COM ) -#undef INTERFACE -#define INTERFACE IDirectDraw4 -DECLARE_INTERFACE_( IDirectDraw4, IUnknown ) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - /*** IDirectDraw methods ***/ - STDMETHOD(Compact)(THIS) PURE; - STDMETHOD(CreateClipper)(THIS_ DWORD, LPDIRECTDRAWCLIPPER FAR*, IUnknown FAR * ) PURE; - STDMETHOD(CreatePalette)(THIS_ DWORD, LPPALETTEENTRY, LPDIRECTDRAWPALETTE FAR*, IUnknown FAR * ) PURE; - STDMETHOD(CreateSurface)(THIS_ LPDDSURFACEDESC2, LPDIRECTDRAWSURFACE4 FAR *, IUnknown FAR *) PURE; - STDMETHOD(DuplicateSurface)( THIS_ LPDIRECTDRAWSURFACE4, LPDIRECTDRAWSURFACE4 FAR * ) PURE; - STDMETHOD(EnumDisplayModes)( THIS_ DWORD, LPDDSURFACEDESC2, LPVOID, LPDDENUMMODESCALLBACK2 ) PURE; - STDMETHOD(EnumSurfaces)(THIS_ DWORD, LPDDSURFACEDESC2, LPVOID,LPDDENUMSURFACESCALLBACK2 ) PURE; - STDMETHOD(FlipToGDISurface)(THIS) PURE; - STDMETHOD(GetCaps)( THIS_ LPDDCAPS, LPDDCAPS) PURE; - STDMETHOD(GetDisplayMode)( THIS_ LPDDSURFACEDESC2) PURE; - STDMETHOD(GetFourCCCodes)(THIS_ LPDWORD, LPDWORD ) PURE; - STDMETHOD(GetGDISurface)(THIS_ LPDIRECTDRAWSURFACE4 FAR *) PURE; - STDMETHOD(GetMonitorFrequency)(THIS_ LPDWORD) PURE; - STDMETHOD(GetScanLine)(THIS_ LPDWORD) PURE; - STDMETHOD(GetVerticalBlankStatus)(THIS_ LPBOOL ) PURE; - STDMETHOD(Initialize)(THIS_ GUID FAR *) PURE; - STDMETHOD(RestoreDisplayMode)(THIS) PURE; - STDMETHOD(SetCooperativeLevel)(THIS_ HWND, DWORD) PURE; - STDMETHOD(SetDisplayMode)(THIS_ DWORD, DWORD,DWORD, DWORD, DWORD) PURE; - STDMETHOD(WaitForVerticalBlank)(THIS_ DWORD, HANDLE ) PURE; - /*** Added in the v2 interface ***/ - STDMETHOD(GetAvailableVidMem)(THIS_ LPDDSCAPS2, LPDWORD, LPDWORD) PURE; - /*** Added in the V4 Interface ***/ - STDMETHOD(GetSurfaceFromDC) (THIS_ HDC, LPDIRECTDRAWSURFACE4 *) PURE; - STDMETHOD(RestoreAllSurfaces)(THIS) PURE; - STDMETHOD(TestCooperativeLevel)(THIS) PURE; - STDMETHOD(GetDeviceIdentifier)(THIS_ LPDDDEVICEIDENTIFIER, DWORD ) PURE; -}; -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectDraw4_QueryInterface(p, a, b) (p)->lpVtbl->QueryInterface(p, a, b) -#define IDirectDraw4_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDirectDraw4_Release(p) (p)->lpVtbl->Release(p) -#define IDirectDraw4_Compact(p) (p)->lpVtbl->Compact(p) -#define IDirectDraw4_CreateClipper(p, a, b, c) (p)->lpVtbl->CreateClipper(p, a, b, c) -#define IDirectDraw4_CreatePalette(p, a, b, c, d) (p)->lpVtbl->CreatePalette(p, a, b, c, d) -#define IDirectDraw4_CreateSurface(p, a, b, c) (p)->lpVtbl->CreateSurface(p, a, b, c) -#define IDirectDraw4_DuplicateSurface(p, a, b) (p)->lpVtbl->DuplicateSurface(p, a, b) -#define IDirectDraw4_EnumDisplayModes(p, a, b, c, d) (p)->lpVtbl->EnumDisplayModes(p, a, b, c, d) -#define IDirectDraw4_EnumSurfaces(p, a, b, c, d) (p)->lpVtbl->EnumSurfaces(p, a, b, c, d) -#define IDirectDraw4_FlipToGDISurface(p) (p)->lpVtbl->FlipToGDISurface(p) -#define IDirectDraw4_GetCaps(p, a, b) (p)->lpVtbl->GetCaps(p, a, b) -#define IDirectDraw4_GetDisplayMode(p, a) (p)->lpVtbl->GetDisplayMode(p, a) -#define IDirectDraw4_GetFourCCCodes(p, a, b) (p)->lpVtbl->GetFourCCCodes(p, a, b) -#define IDirectDraw4_GetGDISurface(p, a) (p)->lpVtbl->GetGDISurface(p, a) -#define IDirectDraw4_GetMonitorFrequency(p, a) (p)->lpVtbl->GetMonitorFrequency(p, a) -#define IDirectDraw4_GetScanLine(p, a) (p)->lpVtbl->GetScanLine(p, a) -#define IDirectDraw4_GetVerticalBlankStatus(p, a) (p)->lpVtbl->GetVerticalBlankStatus(p, a) -#define IDirectDraw4_Initialize(p, a) (p)->lpVtbl->Initialize(p, a) -#define IDirectDraw4_RestoreDisplayMode(p) (p)->lpVtbl->RestoreDisplayMode(p) -#define IDirectDraw4_SetCooperativeLevel(p, a, b) (p)->lpVtbl->SetCooperativeLevel(p, a, b) -#define IDirectDraw4_SetDisplayMode(p, a, b, c, d, e) (p)->lpVtbl->SetDisplayMode(p, a, b, c, d, e) -#define IDirectDraw4_WaitForVerticalBlank(p, a, b) (p)->lpVtbl->WaitForVerticalBlank(p, a, b) -#define IDirectDraw4_GetAvailableVidMem(p, a, b, c) (p)->lpVtbl->GetAvailableVidMem(p, a, b, c) -#define IDirectDraw4_GetSurfaceFromDC(p, a, b) (p)->lpVtbl->GetSurfaceFromDC(p, a, b) -#define IDirectDraw4_RestoreAllSurfaces(p) (p)->lpVtbl->RestoreAllSurfaces(p) -#define IDirectDraw4_TestCooperativeLevel(p) (p)->lpVtbl->TestCooperativeLevel(p) -#define IDirectDraw4_GetDeviceIdentifier(p,a,b) (p)->lpVtbl->GetDeviceIdentifier(p,a,b) -#else -#define IDirectDraw4_QueryInterface(p, a, b) (p)->QueryInterface(a, b) -#define IDirectDraw4_AddRef(p) (p)->AddRef() -#define IDirectDraw4_Release(p) (p)->Release() -#define IDirectDraw4_Compact(p) (p)->Compact() -#define IDirectDraw4_CreateClipper(p, a, b, c) (p)->CreateClipper(a, b, c) -#define IDirectDraw4_CreatePalette(p, a, b, c, d) (p)->CreatePalette(a, b, c, d) -#define IDirectDraw4_CreateSurface(p, a, b, c) (p)->CreateSurface(a, b, c) -#define IDirectDraw4_DuplicateSurface(p, a, b) (p)->DuplicateSurface(a, b) -#define IDirectDraw4_EnumDisplayModes(p, a, b, c, d) (p)->EnumDisplayModes(a, b, c, d) -#define IDirectDraw4_EnumSurfaces(p, a, b, c, d) (p)->EnumSurfaces(a, b, c, d) -#define IDirectDraw4_FlipToGDISurface(p) (p)->FlipToGDISurface() -#define IDirectDraw4_GetCaps(p, a, b) (p)->GetCaps(a, b) -#define IDirectDraw4_GetDisplayMode(p, a) (p)->GetDisplayMode(a) -#define IDirectDraw4_GetFourCCCodes(p, a, b) (p)->GetFourCCCodes(a, b) -#define IDirectDraw4_GetGDISurface(p, a) (p)->GetGDISurface(a) -#define IDirectDraw4_GetMonitorFrequency(p, a) (p)->GetMonitorFrequency(a) -#define IDirectDraw4_GetScanLine(p, a) (p)->GetScanLine(a) -#define IDirectDraw4_GetVerticalBlankStatus(p, a) (p)->GetVerticalBlankStatus(a) -#define IDirectDraw4_Initialize(p, a) (p)->Initialize(a) -#define IDirectDraw4_RestoreDisplayMode(p) (p)->RestoreDisplayMode() -#define IDirectDraw4_SetCooperativeLevel(p, a, b) (p)->SetCooperativeLevel(a, b) -#define IDirectDraw4_SetDisplayMode(p, a, b, c, d, e) (p)->SetDisplayMode(a, b, c, d, e) -#define IDirectDraw4_WaitForVerticalBlank(p, a, b) (p)->WaitForVerticalBlank(a, b) -#define IDirectDraw4_GetAvailableVidMem(p, a, b, c) (p)->GetAvailableVidMem(a, b, c) -#define IDirectDraw4_GetSurfaceFromDC(p, a, b) (p)->GetSurfaceFromDC(a, b) -#define IDirectDraw4_RestoreAllSurfaces(p) (p)->RestoreAllSurfaces() -#define IDirectDraw4_TestCooperativeLevel(p) (p)->TestCooperativeLevel() -#define IDirectDraw4_GetDeviceIdentifier(p,a,b) (p)->GetDeviceIdentifier(a,b) -#endif - -#endif - -#if defined( _WIN32 ) && !defined( _NO_COM ) -#undef INTERFACE -#define INTERFACE IDirectDraw7 -DECLARE_INTERFACE_( IDirectDraw7, IUnknown ) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - /*** IDirectDraw methods ***/ - STDMETHOD(Compact)(THIS) PURE; - STDMETHOD(CreateClipper)(THIS_ DWORD, LPDIRECTDRAWCLIPPER FAR*, IUnknown FAR * ) PURE; - STDMETHOD(CreatePalette)(THIS_ DWORD, LPPALETTEENTRY, LPDIRECTDRAWPALETTE FAR*, IUnknown FAR * ) PURE; - STDMETHOD(CreateSurface)(THIS_ LPDDSURFACEDESC2, LPDIRECTDRAWSURFACE7 FAR *, IUnknown FAR *) PURE; - STDMETHOD(DuplicateSurface)( THIS_ LPDIRECTDRAWSURFACE7, LPDIRECTDRAWSURFACE7 FAR * ) PURE; - STDMETHOD(EnumDisplayModes)( THIS_ DWORD, LPDDSURFACEDESC2, LPVOID, LPDDENUMMODESCALLBACK2 ) PURE; - STDMETHOD(EnumSurfaces)(THIS_ DWORD, LPDDSURFACEDESC2, LPVOID,LPDDENUMSURFACESCALLBACK7 ) PURE; - STDMETHOD(FlipToGDISurface)(THIS) PURE; - STDMETHOD(GetCaps)( THIS_ LPDDCAPS, LPDDCAPS) PURE; - STDMETHOD(GetDisplayMode)( THIS_ LPDDSURFACEDESC2) PURE; - STDMETHOD(GetFourCCCodes)(THIS_ LPDWORD, LPDWORD ) PURE; - STDMETHOD(GetGDISurface)(THIS_ LPDIRECTDRAWSURFACE7 FAR *) PURE; - STDMETHOD(GetMonitorFrequency)(THIS_ LPDWORD) PURE; - STDMETHOD(GetScanLine)(THIS_ LPDWORD) PURE; - STDMETHOD(GetVerticalBlankStatus)(THIS_ LPBOOL ) PURE; - STDMETHOD(Initialize)(THIS_ GUID FAR *) PURE; - STDMETHOD(RestoreDisplayMode)(THIS) PURE; - STDMETHOD(SetCooperativeLevel)(THIS_ HWND, DWORD) PURE; - STDMETHOD(SetDisplayMode)(THIS_ DWORD, DWORD,DWORD, DWORD, DWORD) PURE; - STDMETHOD(WaitForVerticalBlank)(THIS_ DWORD, HANDLE ) PURE; - /*** Added in the v2 interface ***/ - STDMETHOD(GetAvailableVidMem)(THIS_ LPDDSCAPS2, LPDWORD, LPDWORD) PURE; - /*** Added in the V4 Interface ***/ - STDMETHOD(GetSurfaceFromDC) (THIS_ HDC, LPDIRECTDRAWSURFACE7 *) PURE; - STDMETHOD(RestoreAllSurfaces)(THIS) PURE; - STDMETHOD(TestCooperativeLevel)(THIS) PURE; - STDMETHOD(GetDeviceIdentifier)(THIS_ LPDDDEVICEIDENTIFIER2, DWORD ) PURE; - STDMETHOD(StartModeTest)(THIS_ LPSIZE, DWORD, DWORD ) PURE; - STDMETHOD(EvaluateMode)(THIS_ DWORD, DWORD * ) PURE; -}; -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectDraw7_QueryInterface(p, a, b) (p)->lpVtbl->QueryInterface(p, a, b) -#define IDirectDraw7_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDirectDraw7_Release(p) (p)->lpVtbl->Release(p) -#define IDirectDraw7_Compact(p) (p)->lpVtbl->Compact(p) -#define IDirectDraw7_CreateClipper(p, a, b, c) (p)->lpVtbl->CreateClipper(p, a, b, c) -#define IDirectDraw7_CreatePalette(p, a, b, c, d) (p)->lpVtbl->CreatePalette(p, a, b, c, d) -#define IDirectDraw7_CreateSurface(p, a, b, c) (p)->lpVtbl->CreateSurface(p, a, b, c) -#define IDirectDraw7_DuplicateSurface(p, a, b) (p)->lpVtbl->DuplicateSurface(p, a, b) -#define IDirectDraw7_EnumDisplayModes(p, a, b, c, d) (p)->lpVtbl->EnumDisplayModes(p, a, b, c, d) -#define IDirectDraw7_EnumSurfaces(p, a, b, c, d) (p)->lpVtbl->EnumSurfaces(p, a, b, c, d) -#define IDirectDraw7_FlipToGDISurface(p) (p)->lpVtbl->FlipToGDISurface(p) -#define IDirectDraw7_GetCaps(p, a, b) (p)->lpVtbl->GetCaps(p, a, b) -#define IDirectDraw7_GetDisplayMode(p, a) (p)->lpVtbl->GetDisplayMode(p, a) -#define IDirectDraw7_GetFourCCCodes(p, a, b) (p)->lpVtbl->GetFourCCCodes(p, a, b) -#define IDirectDraw7_GetGDISurface(p, a) (p)->lpVtbl->GetGDISurface(p, a) -#define IDirectDraw7_GetMonitorFrequency(p, a) (p)->lpVtbl->GetMonitorFrequency(p, a) -#define IDirectDraw7_GetScanLine(p, a) (p)->lpVtbl->GetScanLine(p, a) -#define IDirectDraw7_GetVerticalBlankStatus(p, a) (p)->lpVtbl->GetVerticalBlankStatus(p, a) -#define IDirectDraw7_Initialize(p, a) (p)->lpVtbl->Initialize(p, a) -#define IDirectDraw7_RestoreDisplayMode(p) (p)->lpVtbl->RestoreDisplayMode(p) -#define IDirectDraw7_SetCooperativeLevel(p, a, b) (p)->lpVtbl->SetCooperativeLevel(p, a, b) -#define IDirectDraw7_SetDisplayMode(p, a, b, c, d, e) (p)->lpVtbl->SetDisplayMode(p, a, b, c, d, e) -#define IDirectDraw7_WaitForVerticalBlank(p, a, b) (p)->lpVtbl->WaitForVerticalBlank(p, a, b) -#define IDirectDraw7_GetAvailableVidMem(p, a, b, c) (p)->lpVtbl->GetAvailableVidMem(p, a, b, c) -#define IDirectDraw7_GetSurfaceFromDC(p, a, b) (p)->lpVtbl->GetSurfaceFromDC(p, a, b) -#define IDirectDraw7_RestoreAllSurfaces(p) (p)->lpVtbl->RestoreAllSurfaces(p) -#define IDirectDraw7_TestCooperativeLevel(p) (p)->lpVtbl->TestCooperativeLevel(p) -#define IDirectDraw7_GetDeviceIdentifier(p,a,b) (p)->lpVtbl->GetDeviceIdentifier(p,a,b) -#define IDirectDraw7_StartModeTest(p,a,b,c) (p)->lpVtbl->StartModeTest(p,a,b,c) -#define IDirectDraw7_EvaluateMode(p,a,b) (p)->lpVtbl->EvaluateMode(p,a,b) -#else -#define IDirectDraw7_QueryInterface(p, a, b) (p)->QueryInterface(a, b) -#define IDirectDraw7_AddRef(p) (p)->AddRef() -#define IDirectDraw7_Release(p) (p)->Release() -#define IDirectDraw7_Compact(p) (p)->Compact() -#define IDirectDraw7_CreateClipper(p, a, b, c) (p)->CreateClipper(a, b, c) -#define IDirectDraw7_CreatePalette(p, a, b, c, d) (p)->CreatePalette(a, b, c, d) -#define IDirectDraw7_CreateSurface(p, a, b, c) (p)->CreateSurface(a, b, c) -#define IDirectDraw7_DuplicateSurface(p, a, b) (p)->DuplicateSurface(a, b) -#define IDirectDraw7_EnumDisplayModes(p, a, b, c, d) (p)->EnumDisplayModes(a, b, c, d) -#define IDirectDraw7_EnumSurfaces(p, a, b, c, d) (p)->EnumSurfaces(a, b, c, d) -#define IDirectDraw7_FlipToGDISurface(p) (p)->FlipToGDISurface() -#define IDirectDraw7_GetCaps(p, a, b) (p)->GetCaps(a, b) -#define IDirectDraw7_GetDisplayMode(p, a) (p)->GetDisplayMode(a) -#define IDirectDraw7_GetFourCCCodes(p, a, b) (p)->GetFourCCCodes(a, b) -#define IDirectDraw7_GetGDISurface(p, a) (p)->GetGDISurface(a) -#define IDirectDraw7_GetMonitorFrequency(p, a) (p)->GetMonitorFrequency(a) -#define IDirectDraw7_GetScanLine(p, a) (p)->GetScanLine(a) -#define IDirectDraw7_GetVerticalBlankStatus(p, a) (p)->GetVerticalBlankStatus(a) -#define IDirectDraw7_Initialize(p, a) (p)->Initialize(a) -#define IDirectDraw7_RestoreDisplayMode(p) (p)->RestoreDisplayMode() -#define IDirectDraw7_SetCooperativeLevel(p, a, b) (p)->SetCooperativeLevel(a, b) -#define IDirectDraw7_SetDisplayMode(p, a, b, c, d, e) (p)->SetDisplayMode(a, b, c, d, e) -#define IDirectDraw7_WaitForVerticalBlank(p, a, b) (p)->WaitForVerticalBlank(a, b) -#define IDirectDraw7_GetAvailableVidMem(p, a, b, c) (p)->GetAvailableVidMem(a, b, c) -#define IDirectDraw7_GetSurfaceFromDC(p, a, b) (p)->GetSurfaceFromDC(a, b) -#define IDirectDraw7_RestoreAllSurfaces(p) (p)->RestoreAllSurfaces() -#define IDirectDraw7_TestCooperativeLevel(p) (p)->TestCooperativeLevel() -#define IDirectDraw7_GetDeviceIdentifier(p,a,b) (p)->GetDeviceIdentifier(a,b) -#define IDirectDraw7_StartModeTest(p,a,b,c) (p)->lpVtbl->StartModeTest(a,b,c) -#define IDirectDraw7_EvaluateMode(p,a,b) (p)->lpVtbl->EvaluateMode(a,b) -#endif - -#endif - - -/* - * IDirectDrawPalette - */ -#if defined( _WIN32 ) && !defined( _NO_COM ) -#undef INTERFACE -#define INTERFACE IDirectDrawPalette -DECLARE_INTERFACE_( IDirectDrawPalette, IUnknown ) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - /*** IDirectDrawPalette methods ***/ - STDMETHOD(GetCaps)(THIS_ LPDWORD) PURE; - STDMETHOD(GetEntries)(THIS_ DWORD,DWORD,DWORD,LPPALETTEENTRY) PURE; - STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, DWORD, LPPALETTEENTRY) PURE; - STDMETHOD(SetEntries)(THIS_ DWORD,DWORD,DWORD,LPPALETTEENTRY) PURE; -}; - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectDrawPalette_QueryInterface(p, a, b) (p)->lpVtbl->QueryInterface(p, a, b) -#define IDirectDrawPalette_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDirectDrawPalette_Release(p) (p)->lpVtbl->Release(p) -#define IDirectDrawPalette_GetCaps(p, a) (p)->lpVtbl->GetCaps(p, a) -#define IDirectDrawPalette_GetEntries(p, a, b, c, d) (p)->lpVtbl->GetEntries(p, a, b, c, d) -#define IDirectDrawPalette_Initialize(p, a, b, c) (p)->lpVtbl->Initialize(p, a, b, c) -#define IDirectDrawPalette_SetEntries(p, a, b, c, d) (p)->lpVtbl->SetEntries(p, a, b, c, d) -#else -#define IDirectDrawPalette_QueryInterface(p, a, b) (p)->QueryInterface(a, b) -#define IDirectDrawPalette_AddRef(p) (p)->AddRef() -#define IDirectDrawPalette_Release(p) (p)->Release() -#define IDirectDrawPalette_GetCaps(p, a) (p)->GetCaps(a) -#define IDirectDrawPalette_GetEntries(p, a, b, c, d) (p)->GetEntries(a, b, c, d) -#define IDirectDrawPalette_Initialize(p, a, b, c) (p)->Initialize(a, b, c) -#define IDirectDrawPalette_SetEntries(p, a, b, c, d) (p)->SetEntries(a, b, c, d) -#endif - -#endif - - -/* - * IDirectDrawClipper - */ -#if defined( _WIN32 ) && !defined( _NO_COM ) -#undef INTERFACE -#define INTERFACE IDirectDrawClipper -DECLARE_INTERFACE_( IDirectDrawClipper, IUnknown ) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - /*** IDirectDrawClipper methods ***/ - STDMETHOD(GetClipList)(THIS_ LPRECT, LPRGNDATA, LPDWORD) PURE; - STDMETHOD(GetHWnd)(THIS_ HWND FAR *) PURE; - STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, DWORD) PURE; - STDMETHOD(IsClipListChanged)(THIS_ BOOL FAR *) PURE; - STDMETHOD(SetClipList)(THIS_ LPRGNDATA,DWORD) PURE; - STDMETHOD(SetHWnd)(THIS_ DWORD, HWND ) PURE; -}; - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectDrawClipper_QueryInterface(p, a, b) (p)->lpVtbl->QueryInterface(p, a, b) -#define IDirectDrawClipper_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDirectDrawClipper_Release(p) (p)->lpVtbl->Release(p) -#define IDirectDrawClipper_GetClipList(p, a, b, c) (p)->lpVtbl->GetClipList(p, a, b, c) -#define IDirectDrawClipper_GetHWnd(p, a) (p)->lpVtbl->GetHWnd(p, a) -#define IDirectDrawClipper_Initialize(p, a, b) (p)->lpVtbl->Initialize(p, a, b) -#define IDirectDrawClipper_IsClipListChanged(p, a) (p)->lpVtbl->IsClipListChanged(p, a) -#define IDirectDrawClipper_SetClipList(p, a, b) (p)->lpVtbl->SetClipList(p, a, b) -#define IDirectDrawClipper_SetHWnd(p, a, b) (p)->lpVtbl->SetHWnd(p, a, b) -#else -#define IDirectDrawClipper_QueryInterface(p, a, b) (p)->QueryInterface(a, b) -#define IDirectDrawClipper_AddRef(p) (p)->AddRef() -#define IDirectDrawClipper_Release(p) (p)->Release() -#define IDirectDrawClipper_GetClipList(p, a, b, c) (p)->GetClipList(a, b, c) -#define IDirectDrawClipper_GetHWnd(p, a) (p)->GetHWnd(a) -#define IDirectDrawClipper_Initialize(p, a, b) (p)->Initialize(a, b) -#define IDirectDrawClipper_IsClipListChanged(p, a) (p)->IsClipListChanged(a) -#define IDirectDrawClipper_SetClipList(p, a, b) (p)->SetClipList(a, b) -#define IDirectDrawClipper_SetHWnd(p, a, b) (p)->SetHWnd(a, b) -#endif - -#endif - -/* - * IDirectDrawSurface and related interfaces - */ -#if defined( _WIN32 ) && !defined( _NO_COM ) -#undef INTERFACE -#define INTERFACE IDirectDrawSurface -DECLARE_INTERFACE_( IDirectDrawSurface, IUnknown ) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - /*** IDirectDrawSurface methods ***/ - STDMETHOD(AddAttachedSurface)(THIS_ LPDIRECTDRAWSURFACE) PURE; - STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT) PURE; - STDMETHOD(Blt)(THIS_ LPRECT,LPDIRECTDRAWSURFACE, LPRECT,DWORD, LPDDBLTFX) PURE; - STDMETHOD(BltBatch)(THIS_ LPDDBLTBATCH, DWORD, DWORD ) PURE; - STDMETHOD(BltFast)(THIS_ DWORD,DWORD,LPDIRECTDRAWSURFACE, LPRECT,DWORD) PURE; - STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD,LPDIRECTDRAWSURFACE) PURE; - STDMETHOD(EnumAttachedSurfaces)(THIS_ LPVOID,LPDDENUMSURFACESCALLBACK) PURE; - STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD,LPVOID,LPDDENUMSURFACESCALLBACK) PURE; - STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE, DWORD) PURE; - STDMETHOD(GetAttachedSurface)(THIS_ LPDDSCAPS, LPDIRECTDRAWSURFACE FAR *) PURE; - STDMETHOD(GetBltStatus)(THIS_ DWORD) PURE; - STDMETHOD(GetCaps)(THIS_ LPDDSCAPS) PURE; - STDMETHOD(GetClipper)(THIS_ LPDIRECTDRAWCLIPPER FAR*) PURE; - STDMETHOD(GetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE; - STDMETHOD(GetDC)(THIS_ HDC FAR *) PURE; - STDMETHOD(GetFlipStatus)(THIS_ DWORD) PURE; - STDMETHOD(GetOverlayPosition)(THIS_ LPLONG, LPLONG ) PURE; - STDMETHOD(GetPalette)(THIS_ LPDIRECTDRAWPALETTE FAR*) PURE; - STDMETHOD(GetPixelFormat)(THIS_ LPDDPIXELFORMAT) PURE; - STDMETHOD(GetSurfaceDesc)(THIS_ LPDDSURFACEDESC) PURE; - STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, LPDDSURFACEDESC) PURE; - STDMETHOD(IsLost)(THIS) PURE; - STDMETHOD(Lock)(THIS_ LPRECT,LPDDSURFACEDESC,DWORD,HANDLE) PURE; - STDMETHOD(ReleaseDC)(THIS_ HDC) PURE; - STDMETHOD(Restore)(THIS) PURE; - STDMETHOD(SetClipper)(THIS_ LPDIRECTDRAWCLIPPER) PURE; - STDMETHOD(SetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE; - STDMETHOD(SetOverlayPosition)(THIS_ LONG, LONG ) PURE; - STDMETHOD(SetPalette)(THIS_ LPDIRECTDRAWPALETTE) PURE; - STDMETHOD(Unlock)(THIS_ LPVOID) PURE; - STDMETHOD(UpdateOverlay)(THIS_ LPRECT, LPDIRECTDRAWSURFACE,LPRECT,DWORD, LPDDOVERLAYFX) PURE; - STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD) PURE; - STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD, LPDIRECTDRAWSURFACE) PURE; -}; - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectDrawSurface_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IDirectDrawSurface_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDirectDrawSurface_Release(p) (p)->lpVtbl->Release(p) -#define IDirectDrawSurface_AddAttachedSurface(p,a) (p)->lpVtbl->AddAttachedSurface(p,a) -#define IDirectDrawSurface_AddOverlayDirtyRect(p,a) (p)->lpVtbl->AddOverlayDirtyRect(p,a) -#define IDirectDrawSurface_Blt(p,a,b,c,d,e) (p)->lpVtbl->Blt(p,a,b,c,d,e) -#define IDirectDrawSurface_BltBatch(p,a,b,c) (p)->lpVtbl->BltBatch(p,a,b,c) -#define IDirectDrawSurface_BltFast(p,a,b,c,d,e) (p)->lpVtbl->BltFast(p,a,b,c,d,e) -#define IDirectDrawSurface_DeleteAttachedSurface(p,a,b) (p)->lpVtbl->DeleteAttachedSurface(p,a,b) -#define IDirectDrawSurface_EnumAttachedSurfaces(p,a,b) (p)->lpVtbl->EnumAttachedSurfaces(p,a,b) -#define IDirectDrawSurface_EnumOverlayZOrders(p,a,b,c) (p)->lpVtbl->EnumOverlayZOrders(p,a,b,c) -#define IDirectDrawSurface_Flip(p,a,b) (p)->lpVtbl->Flip(p,a,b) -#define IDirectDrawSurface_GetAttachedSurface(p,a,b) (p)->lpVtbl->GetAttachedSurface(p,a,b) -#define IDirectDrawSurface_GetBltStatus(p,a) (p)->lpVtbl->GetBltStatus(p,a) -#define IDirectDrawSurface_GetCaps(p,b) (p)->lpVtbl->GetCaps(p,b) -#define IDirectDrawSurface_GetClipper(p,a) (p)->lpVtbl->GetClipper(p,a) -#define IDirectDrawSurface_GetColorKey(p,a,b) (p)->lpVtbl->GetColorKey(p,a,b) -#define IDirectDrawSurface_GetDC(p,a) (p)->lpVtbl->GetDC(p,a) -#define IDirectDrawSurface_GetFlipStatus(p,a) (p)->lpVtbl->GetFlipStatus(p,a) -#define IDirectDrawSurface_GetOverlayPosition(p,a,b) (p)->lpVtbl->GetOverlayPosition(p,a,b) -#define IDirectDrawSurface_GetPalette(p,a) (p)->lpVtbl->GetPalette(p,a) -#define IDirectDrawSurface_GetPixelFormat(p,a) (p)->lpVtbl->GetPixelFormat(p,a) -#define IDirectDrawSurface_GetSurfaceDesc(p,a) (p)->lpVtbl->GetSurfaceDesc(p,a) -#define IDirectDrawSurface_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b) -#define IDirectDrawSurface_IsLost(p) (p)->lpVtbl->IsLost(p) -#define IDirectDrawSurface_Lock(p,a,b,c,d) (p)->lpVtbl->Lock(p,a,b,c,d) -#define IDirectDrawSurface_ReleaseDC(p,a) (p)->lpVtbl->ReleaseDC(p,a) -#define IDirectDrawSurface_Restore(p) (p)->lpVtbl->Restore(p) -#define IDirectDrawSurface_SetClipper(p,a) (p)->lpVtbl->SetClipper(p,a) -#define IDirectDrawSurface_SetColorKey(p,a,b) (p)->lpVtbl->SetColorKey(p,a,b) -#define IDirectDrawSurface_SetOverlayPosition(p,a,b) (p)->lpVtbl->SetOverlayPosition(p,a,b) -#define IDirectDrawSurface_SetPalette(p,a) (p)->lpVtbl->SetPalette(p,a) -#define IDirectDrawSurface_Unlock(p,b) (p)->lpVtbl->Unlock(p,b) -#define IDirectDrawSurface_UpdateOverlay(p,a,b,c,d,e) (p)->lpVtbl->UpdateOverlay(p,a,b,c,d,e) -#define IDirectDrawSurface_UpdateOverlayDisplay(p,a) (p)->lpVtbl->UpdateOverlayDisplay(p,a) -#define IDirectDrawSurface_UpdateOverlayZOrder(p,a,b) (p)->lpVtbl->UpdateOverlayZOrder(p,a,b) -#else -#define IDirectDrawSurface_QueryInterface(p,a,b) (p)->QueryInterface(a,b) -#define IDirectDrawSurface_AddRef(p) (p)->AddRef() -#define IDirectDrawSurface_Release(p) (p)->Release() -#define IDirectDrawSurface_AddAttachedSurface(p,a) (p)->AddAttachedSurface(a) -#define IDirectDrawSurface_AddOverlayDirtyRect(p,a) (p)->AddOverlayDirtyRect(a) -#define IDirectDrawSurface_Blt(p,a,b,c,d,e) (p)->Blt(a,b,c,d,e) -#define IDirectDrawSurface_BltBatch(p,a,b,c) (p)->BltBatch(a,b,c) -#define IDirectDrawSurface_BltFast(p,a,b,c,d,e) (p)->BltFast(a,b,c,d,e) -#define IDirectDrawSurface_DeleteAttachedSurface(p,a,b) (p)->DeleteAttachedSurface(a,b) -#define IDirectDrawSurface_EnumAttachedSurfaces(p,a,b) (p)->EnumAttachedSurfaces(a,b) -#define IDirectDrawSurface_EnumOverlayZOrders(p,a,b,c) (p)->EnumOverlayZOrders(a,b,c) -#define IDirectDrawSurface_Flip(p,a,b) (p)->Flip(a,b) -#define IDirectDrawSurface_GetAttachedSurface(p,a,b) (p)->GetAttachedSurface(a,b) -#define IDirectDrawSurface_GetBltStatus(p,a) (p)->GetBltStatus(a) -#define IDirectDrawSurface_GetCaps(p,b) (p)->GetCaps(b) -#define IDirectDrawSurface_GetClipper(p,a) (p)->GetClipper(a) -#define IDirectDrawSurface_GetColorKey(p,a,b) (p)->GetColorKey(a,b) -#define IDirectDrawSurface_GetDC(p,a) (p)->GetDC(a) -#define IDirectDrawSurface_GetFlipStatus(p,a) (p)->GetFlipStatus(a) -#define IDirectDrawSurface_GetOverlayPosition(p,a,b) (p)->GetOverlayPosition(a,b) -#define IDirectDrawSurface_GetPalette(p,a) (p)->GetPalette(a) -#define IDirectDrawSurface_GetPixelFormat(p,a) (p)->GetPixelFormat(a) -#define IDirectDrawSurface_GetSurfaceDesc(p,a) (p)->GetSurfaceDesc(a) -#define IDirectDrawSurface_Initialize(p,a,b) (p)->Initialize(a,b) -#define IDirectDrawSurface_IsLost(p) (p)->IsLost() -#define IDirectDrawSurface_Lock(p,a,b,c,d) (p)->Lock(a,b,c,d) -#define IDirectDrawSurface_ReleaseDC(p,a) (p)->ReleaseDC(a) -#define IDirectDrawSurface_Restore(p) (p)->Restore() -#define IDirectDrawSurface_SetClipper(p,a) (p)->SetClipper(a) -#define IDirectDrawSurface_SetColorKey(p,a,b) (p)->SetColorKey(a,b) -#define IDirectDrawSurface_SetOverlayPosition(p,a,b) (p)->SetOverlayPosition(a,b) -#define IDirectDrawSurface_SetPalette(p,a) (p)->SetPalette(a) -#define IDirectDrawSurface_Unlock(p,b) (p)->Unlock(b) -#define IDirectDrawSurface_UpdateOverlay(p,a,b,c,d,e) (p)->UpdateOverlay(a,b,c,d,e) -#define IDirectDrawSurface_UpdateOverlayDisplay(p,a) (p)->UpdateOverlayDisplay(a) -#define IDirectDrawSurface_UpdateOverlayZOrder(p,a,b) (p)->UpdateOverlayZOrder(a,b) -#endif - -/* - * IDirectDrawSurface2 and related interfaces - */ -#undef INTERFACE -#define INTERFACE IDirectDrawSurface2 -DECLARE_INTERFACE_( IDirectDrawSurface2, IUnknown ) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - /*** IDirectDrawSurface methods ***/ - STDMETHOD(AddAttachedSurface)(THIS_ LPDIRECTDRAWSURFACE2) PURE; - STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT) PURE; - STDMETHOD(Blt)(THIS_ LPRECT,LPDIRECTDRAWSURFACE2, LPRECT,DWORD, LPDDBLTFX) PURE; - STDMETHOD(BltBatch)(THIS_ LPDDBLTBATCH, DWORD, DWORD ) PURE; - STDMETHOD(BltFast)(THIS_ DWORD,DWORD,LPDIRECTDRAWSURFACE2, LPRECT,DWORD) PURE; - STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD,LPDIRECTDRAWSURFACE2) PURE; - STDMETHOD(EnumAttachedSurfaces)(THIS_ LPVOID,LPDDENUMSURFACESCALLBACK) PURE; - STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD,LPVOID,LPDDENUMSURFACESCALLBACK) PURE; - STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE2, DWORD) PURE; - STDMETHOD(GetAttachedSurface)(THIS_ LPDDSCAPS, LPDIRECTDRAWSURFACE2 FAR *) PURE; - STDMETHOD(GetBltStatus)(THIS_ DWORD) PURE; - STDMETHOD(GetCaps)(THIS_ LPDDSCAPS) PURE; - STDMETHOD(GetClipper)(THIS_ LPDIRECTDRAWCLIPPER FAR*) PURE; - STDMETHOD(GetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE; - STDMETHOD(GetDC)(THIS_ HDC FAR *) PURE; - STDMETHOD(GetFlipStatus)(THIS_ DWORD) PURE; - STDMETHOD(GetOverlayPosition)(THIS_ LPLONG, LPLONG ) PURE; - STDMETHOD(GetPalette)(THIS_ LPDIRECTDRAWPALETTE FAR*) PURE; - STDMETHOD(GetPixelFormat)(THIS_ LPDDPIXELFORMAT) PURE; - STDMETHOD(GetSurfaceDesc)(THIS_ LPDDSURFACEDESC) PURE; - STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, LPDDSURFACEDESC) PURE; - STDMETHOD(IsLost)(THIS) PURE; - STDMETHOD(Lock)(THIS_ LPRECT,LPDDSURFACEDESC,DWORD,HANDLE) PURE; - STDMETHOD(ReleaseDC)(THIS_ HDC) PURE; - STDMETHOD(Restore)(THIS) PURE; - STDMETHOD(SetClipper)(THIS_ LPDIRECTDRAWCLIPPER) PURE; - STDMETHOD(SetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE; - STDMETHOD(SetOverlayPosition)(THIS_ LONG, LONG ) PURE; - STDMETHOD(SetPalette)(THIS_ LPDIRECTDRAWPALETTE) PURE; - STDMETHOD(Unlock)(THIS_ LPVOID) PURE; - STDMETHOD(UpdateOverlay)(THIS_ LPRECT, LPDIRECTDRAWSURFACE2,LPRECT,DWORD, LPDDOVERLAYFX) PURE; - STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD) PURE; - STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD, LPDIRECTDRAWSURFACE2) PURE; - /*** Added in the v2 interface ***/ - STDMETHOD(GetDDInterface)(THIS_ LPVOID FAR *) PURE; - STDMETHOD(PageLock)(THIS_ DWORD) PURE; - STDMETHOD(PageUnlock)(THIS_ DWORD) PURE; -}; - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectDrawSurface2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IDirectDrawSurface2_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDirectDrawSurface2_Release(p) (p)->lpVtbl->Release(p) -#define IDirectDrawSurface2_AddAttachedSurface(p,a) (p)->lpVtbl->AddAttachedSurface(p,a) -#define IDirectDrawSurface2_AddOverlayDirtyRect(p,a) (p)->lpVtbl->AddOverlayDirtyRect(p,a) -#define IDirectDrawSurface2_Blt(p,a,b,c,d,e) (p)->lpVtbl->Blt(p,a,b,c,d,e) -#define IDirectDrawSurface2_BltBatch(p,a,b,c) (p)->lpVtbl->BltBatch(p,a,b,c) -#define IDirectDrawSurface2_BltFast(p,a,b,c,d,e) (p)->lpVtbl->BltFast(p,a,b,c,d,e) -#define IDirectDrawSurface2_DeleteAttachedSurface(p,a,b) (p)->lpVtbl->DeleteAttachedSurface(p,a,b) -#define IDirectDrawSurface2_EnumAttachedSurfaces(p,a,b) (p)->lpVtbl->EnumAttachedSurfaces(p,a,b) -#define IDirectDrawSurface2_EnumOverlayZOrders(p,a,b,c) (p)->lpVtbl->EnumOverlayZOrders(p,a,b,c) -#define IDirectDrawSurface2_Flip(p,a,b) (p)->lpVtbl->Flip(p,a,b) -#define IDirectDrawSurface2_GetAttachedSurface(p,a,b) (p)->lpVtbl->GetAttachedSurface(p,a,b) -#define IDirectDrawSurface2_GetBltStatus(p,a) (p)->lpVtbl->GetBltStatus(p,a) -#define IDirectDrawSurface2_GetCaps(p,b) (p)->lpVtbl->GetCaps(p,b) -#define IDirectDrawSurface2_GetClipper(p,a) (p)->lpVtbl->GetClipper(p,a) -#define IDirectDrawSurface2_GetColorKey(p,a,b) (p)->lpVtbl->GetColorKey(p,a,b) -#define IDirectDrawSurface2_GetDC(p,a) (p)->lpVtbl->GetDC(p,a) -#define IDirectDrawSurface2_GetFlipStatus(p,a) (p)->lpVtbl->GetFlipStatus(p,a) -#define IDirectDrawSurface2_GetOverlayPosition(p,a,b) (p)->lpVtbl->GetOverlayPosition(p,a,b) -#define IDirectDrawSurface2_GetPalette(p,a) (p)->lpVtbl->GetPalette(p,a) -#define IDirectDrawSurface2_GetPixelFormat(p,a) (p)->lpVtbl->GetPixelFormat(p,a) -#define IDirectDrawSurface2_GetSurfaceDesc(p,a) (p)->lpVtbl->GetSurfaceDesc(p,a) -#define IDirectDrawSurface2_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b) -#define IDirectDrawSurface2_IsLost(p) (p)->lpVtbl->IsLost(p) -#define IDirectDrawSurface2_Lock(p,a,b,c,d) (p)->lpVtbl->Lock(p,a,b,c,d) -#define IDirectDrawSurface2_ReleaseDC(p,a) (p)->lpVtbl->ReleaseDC(p,a) -#define IDirectDrawSurface2_Restore(p) (p)->lpVtbl->Restore(p) -#define IDirectDrawSurface2_SetClipper(p,a) (p)->lpVtbl->SetClipper(p,a) -#define IDirectDrawSurface2_SetColorKey(p,a,b) (p)->lpVtbl->SetColorKey(p,a,b) -#define IDirectDrawSurface2_SetOverlayPosition(p,a,b) (p)->lpVtbl->SetOverlayPosition(p,a,b) -#define IDirectDrawSurface2_SetPalette(p,a) (p)->lpVtbl->SetPalette(p,a) -#define IDirectDrawSurface2_Unlock(p,b) (p)->lpVtbl->Unlock(p,b) -#define IDirectDrawSurface2_UpdateOverlay(p,a,b,c,d,e) (p)->lpVtbl->UpdateOverlay(p,a,b,c,d,e) -#define IDirectDrawSurface2_UpdateOverlayDisplay(p,a) (p)->lpVtbl->UpdateOverlayDisplay(p,a) -#define IDirectDrawSurface2_UpdateOverlayZOrder(p,a,b) (p)->lpVtbl->UpdateOverlayZOrder(p,a,b) -#define IDirectDrawSurface2_GetDDInterface(p,a) (p)->lpVtbl->GetDDInterface(p,a) -#define IDirectDrawSurface2_PageLock(p,a) (p)->lpVtbl->PageLock(p,a) -#define IDirectDrawSurface2_PageUnlock(p,a) (p)->lpVtbl->PageUnlock(p,a) -#else -#define IDirectDrawSurface2_QueryInterface(p,a,b) (p)->QueryInterface(a,b) -#define IDirectDrawSurface2_AddRef(p) (p)->AddRef() -#define IDirectDrawSurface2_Release(p) (p)->Release() -#define IDirectDrawSurface2_AddAttachedSurface(p,a) (p)->AddAttachedSurface(a) -#define IDirectDrawSurface2_AddOverlayDirtyRect(p,a) (p)->AddOverlayDirtyRect(a) -#define IDirectDrawSurface2_Blt(p,a,b,c,d,e) (p)->Blt(a,b,c,d,e) -#define IDirectDrawSurface2_BltBatch(p,a,b,c) (p)->BltBatch(a,b,c) -#define IDirectDrawSurface2_BltFast(p,a,b,c,d,e) (p)->BltFast(a,b,c,d,e) -#define IDirectDrawSurface2_DeleteAttachedSurface(p,a,b) (p)->DeleteAttachedSurface(a,b) -#define IDirectDrawSurface2_EnumAttachedSurfaces(p,a,b) (p)->EnumAttachedSurfaces(a,b) -#define IDirectDrawSurface2_EnumOverlayZOrders(p,a,b,c) (p)->EnumOverlayZOrders(a,b,c) -#define IDirectDrawSurface2_Flip(p,a,b) (p)->Flip(a,b) -#define IDirectDrawSurface2_GetAttachedSurface(p,a,b) (p)->GetAttachedSurface(a,b) -#define IDirectDrawSurface2_GetBltStatus(p,a) (p)->GetBltStatus(a) -#define IDirectDrawSurface2_GetCaps(p,b) (p)->GetCaps(b) -#define IDirectDrawSurface2_GetClipper(p,a) (p)->GetClipper(a) -#define IDirectDrawSurface2_GetColorKey(p,a,b) (p)->GetColorKey(a,b) -#define IDirectDrawSurface2_GetDC(p,a) (p)->GetDC(a) -#define IDirectDrawSurface2_GetFlipStatus(p,a) (p)->GetFlipStatus(a) -#define IDirectDrawSurface2_GetOverlayPosition(p,a,b) (p)->GetOverlayPosition(a,b) -#define IDirectDrawSurface2_GetPalette(p,a) (p)->GetPalette(a) -#define IDirectDrawSurface2_GetPixelFormat(p,a) (p)->GetPixelFormat(a) -#define IDirectDrawSurface2_GetSurfaceDesc(p,a) (p)->GetSurfaceDesc(a) -#define IDirectDrawSurface2_Initialize(p,a,b) (p)->Initialize(a,b) -#define IDirectDrawSurface2_IsLost(p) (p)->IsLost() -#define IDirectDrawSurface2_Lock(p,a,b,c,d) (p)->Lock(a,b,c,d) -#define IDirectDrawSurface2_ReleaseDC(p,a) (p)->ReleaseDC(a) -#define IDirectDrawSurface2_Restore(p) (p)->Restore() -#define IDirectDrawSurface2_SetClipper(p,a) (p)->SetClipper(a) -#define IDirectDrawSurface2_SetColorKey(p,a,b) (p)->SetColorKey(a,b) -#define IDirectDrawSurface2_SetOverlayPosition(p,a,b) (p)->SetOverlayPosition(a,b) -#define IDirectDrawSurface2_SetPalette(p,a) (p)->SetPalette(a) -#define IDirectDrawSurface2_Unlock(p,b) (p)->Unlock(b) -#define IDirectDrawSurface2_UpdateOverlay(p,a,b,c,d,e) (p)->UpdateOverlay(a,b,c,d,e) -#define IDirectDrawSurface2_UpdateOverlayDisplay(p,a) (p)->UpdateOverlayDisplay(a) -#define IDirectDrawSurface2_UpdateOverlayZOrder(p,a,b) (p)->UpdateOverlayZOrder(a,b) -#define IDirectDrawSurface2_GetDDInterface(p,a) (p)->GetDDInterface(a) -#define IDirectDrawSurface2_PageLock(p,a) (p)->PageLock(a) -#define IDirectDrawSurface2_PageUnlock(p,a) (p)->PageUnlock(a) -#endif - -/* - * IDirectDrawSurface3 and related interfaces - */ -#undef INTERFACE -#define INTERFACE IDirectDrawSurface3 -DECLARE_INTERFACE_( IDirectDrawSurface3, IUnknown ) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - /*** IDirectDrawSurface methods ***/ - STDMETHOD(AddAttachedSurface)(THIS_ LPDIRECTDRAWSURFACE3) PURE; - STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT) PURE; - STDMETHOD(Blt)(THIS_ LPRECT,LPDIRECTDRAWSURFACE3, LPRECT,DWORD, LPDDBLTFX) PURE; - STDMETHOD(BltBatch)(THIS_ LPDDBLTBATCH, DWORD, DWORD ) PURE; - STDMETHOD(BltFast)(THIS_ DWORD,DWORD,LPDIRECTDRAWSURFACE3, LPRECT,DWORD) PURE; - STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD,LPDIRECTDRAWSURFACE3) PURE; - STDMETHOD(EnumAttachedSurfaces)(THIS_ LPVOID,LPDDENUMSURFACESCALLBACK) PURE; - STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD,LPVOID,LPDDENUMSURFACESCALLBACK) PURE; - STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE3, DWORD) PURE; - STDMETHOD(GetAttachedSurface)(THIS_ LPDDSCAPS, LPDIRECTDRAWSURFACE3 FAR *) PURE; - STDMETHOD(GetBltStatus)(THIS_ DWORD) PURE; - STDMETHOD(GetCaps)(THIS_ LPDDSCAPS) PURE; - STDMETHOD(GetClipper)(THIS_ LPDIRECTDRAWCLIPPER FAR*) PURE; - STDMETHOD(GetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE; - STDMETHOD(GetDC)(THIS_ HDC FAR *) PURE; - STDMETHOD(GetFlipStatus)(THIS_ DWORD) PURE; - STDMETHOD(GetOverlayPosition)(THIS_ LPLONG, LPLONG ) PURE; - STDMETHOD(GetPalette)(THIS_ LPDIRECTDRAWPALETTE FAR*) PURE; - STDMETHOD(GetPixelFormat)(THIS_ LPDDPIXELFORMAT) PURE; - STDMETHOD(GetSurfaceDesc)(THIS_ LPDDSURFACEDESC) PURE; - STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, LPDDSURFACEDESC) PURE; - STDMETHOD(IsLost)(THIS) PURE; - STDMETHOD(Lock)(THIS_ LPRECT,LPDDSURFACEDESC,DWORD,HANDLE) PURE; - STDMETHOD(ReleaseDC)(THIS_ HDC) PURE; - STDMETHOD(Restore)(THIS) PURE; - STDMETHOD(SetClipper)(THIS_ LPDIRECTDRAWCLIPPER) PURE; - STDMETHOD(SetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE; - STDMETHOD(SetOverlayPosition)(THIS_ LONG, LONG ) PURE; - STDMETHOD(SetPalette)(THIS_ LPDIRECTDRAWPALETTE) PURE; - STDMETHOD(Unlock)(THIS_ LPVOID) PURE; - STDMETHOD(UpdateOverlay)(THIS_ LPRECT, LPDIRECTDRAWSURFACE3,LPRECT,DWORD, LPDDOVERLAYFX) PURE; - STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD) PURE; - STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD, LPDIRECTDRAWSURFACE3) PURE; - /*** Added in the v2 interface ***/ - STDMETHOD(GetDDInterface)(THIS_ LPVOID FAR *) PURE; - STDMETHOD(PageLock)(THIS_ DWORD) PURE; - STDMETHOD(PageUnlock)(THIS_ DWORD) PURE; - /*** Added in the V3 interface ***/ - STDMETHOD(SetSurfaceDesc)(THIS_ LPDDSURFACEDESC, DWORD) PURE; -}; - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectDrawSurface3_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IDirectDrawSurface3_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDirectDrawSurface3_Release(p) (p)->lpVtbl->Release(p) -#define IDirectDrawSurface3_AddAttachedSurface(p,a) (p)->lpVtbl->AddAttachedSurface(p,a) -#define IDirectDrawSurface3_AddOverlayDirtyRect(p,a) (p)->lpVtbl->AddOverlayDirtyRect(p,a) -#define IDirectDrawSurface3_Blt(p,a,b,c,d,e) (p)->lpVtbl->Blt(p,a,b,c,d,e) -#define IDirectDrawSurface3_BltBatch(p,a,b,c) (p)->lpVtbl->BltBatch(p,a,b,c) -#define IDirectDrawSurface3_BltFast(p,a,b,c,d,e) (p)->lpVtbl->BltFast(p,a,b,c,d,e) -#define IDirectDrawSurface3_DeleteAttachedSurface(p,a,b) (p)->lpVtbl->DeleteAttachedSurface(p,a,b) -#define IDirectDrawSurface3_EnumAttachedSurfaces(p,a,b) (p)->lpVtbl->EnumAttachedSurfaces(p,a,b) -#define IDirectDrawSurface3_EnumOverlayZOrders(p,a,b,c) (p)->lpVtbl->EnumOverlayZOrders(p,a,b,c) -#define IDirectDrawSurface3_Flip(p,a,b) (p)->lpVtbl->Flip(p,a,b) -#define IDirectDrawSurface3_GetAttachedSurface(p,a,b) (p)->lpVtbl->GetAttachedSurface(p,a,b) -#define IDirectDrawSurface3_GetBltStatus(p,a) (p)->lpVtbl->GetBltStatus(p,a) -#define IDirectDrawSurface3_GetCaps(p,b) (p)->lpVtbl->GetCaps(p,b) -#define IDirectDrawSurface3_GetClipper(p,a) (p)->lpVtbl->GetClipper(p,a) -#define IDirectDrawSurface3_GetColorKey(p,a,b) (p)->lpVtbl->GetColorKey(p,a,b) -#define IDirectDrawSurface3_GetDC(p,a) (p)->lpVtbl->GetDC(p,a) -#define IDirectDrawSurface3_GetFlipStatus(p,a) (p)->lpVtbl->GetFlipStatus(p,a) -#define IDirectDrawSurface3_GetOverlayPosition(p,a,b) (p)->lpVtbl->GetOverlayPosition(p,a,b) -#define IDirectDrawSurface3_GetPalette(p,a) (p)->lpVtbl->GetPalette(p,a) -#define IDirectDrawSurface3_GetPixelFormat(p,a) (p)->lpVtbl->GetPixelFormat(p,a) -#define IDirectDrawSurface3_GetSurfaceDesc(p,a) (p)->lpVtbl->GetSurfaceDesc(p,a) -#define IDirectDrawSurface3_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b) -#define IDirectDrawSurface3_IsLost(p) (p)->lpVtbl->IsLost(p) -#define IDirectDrawSurface3_Lock(p,a,b,c,d) (p)->lpVtbl->Lock(p,a,b,c,d) -#define IDirectDrawSurface3_ReleaseDC(p,a) (p)->lpVtbl->ReleaseDC(p,a) -#define IDirectDrawSurface3_Restore(p) (p)->lpVtbl->Restore(p) -#define IDirectDrawSurface3_SetClipper(p,a) (p)->lpVtbl->SetClipper(p,a) -#define IDirectDrawSurface3_SetColorKey(p,a,b) (p)->lpVtbl->SetColorKey(p,a,b) -#define IDirectDrawSurface3_SetOverlayPosition(p,a,b) (p)->lpVtbl->SetOverlayPosition(p,a,b) -#define IDirectDrawSurface3_SetPalette(p,a) (p)->lpVtbl->SetPalette(p,a) -#define IDirectDrawSurface3_Unlock(p,b) (p)->lpVtbl->Unlock(p,b) -#define IDirectDrawSurface3_UpdateOverlay(p,a,b,c,d,e) (p)->lpVtbl->UpdateOverlay(p,a,b,c,d,e) -#define IDirectDrawSurface3_UpdateOverlayDisplay(p,a) (p)->lpVtbl->UpdateOverlayDisplay(p,a) -#define IDirectDrawSurface3_UpdateOverlayZOrder(p,a,b) (p)->lpVtbl->UpdateOverlayZOrder(p,a,b) -#define IDirectDrawSurface3_GetDDInterface(p,a) (p)->lpVtbl->GetDDInterface(p,a) -#define IDirectDrawSurface3_PageLock(p,a) (p)->lpVtbl->PageLock(p,a) -#define IDirectDrawSurface3_PageUnlock(p,a) (p)->lpVtbl->PageUnlock(p,a) -#define IDirectDrawSurface3_SetSurfaceDesc(p,a,b) (p)->lpVtbl->SetSurfaceDesc(p,a,b) -#else -#define IDirectDrawSurface3_QueryInterface(p,a,b) (p)->QueryInterface(a,b) -#define IDirectDrawSurface3_AddRef(p) (p)->AddRef() -#define IDirectDrawSurface3_Release(p) (p)->Release() -#define IDirectDrawSurface3_AddAttachedSurface(p,a) (p)->AddAttachedSurface(a) -#define IDirectDrawSurface3_AddOverlayDirtyRect(p,a) (p)->AddOverlayDirtyRect(a) -#define IDirectDrawSurface3_Blt(p,a,b,c,d,e) (p)->Blt(a,b,c,d,e) -#define IDirectDrawSurface3_BltBatch(p,a,b,c) (p)->BltBatch(a,b,c) -#define IDirectDrawSurface3_BltFast(p,a,b,c,d,e) (p)->BltFast(a,b,c,d,e) -#define IDirectDrawSurface3_DeleteAttachedSurface(p,a,b) (p)->DeleteAttachedSurface(a,b) -#define IDirectDrawSurface3_EnumAttachedSurfaces(p,a,b) (p)->EnumAttachedSurfaces(a,b) -#define IDirectDrawSurface3_EnumOverlayZOrders(p,a,b,c) (p)->EnumOverlayZOrders(a,b,c) -#define IDirectDrawSurface3_Flip(p,a,b) (p)->Flip(a,b) -#define IDirectDrawSurface3_GetAttachedSurface(p,a,b) (p)->GetAttachedSurface(a,b) -#define IDirectDrawSurface3_GetBltStatus(p,a) (p)->GetBltStatus(a) -#define IDirectDrawSurface3_GetCaps(p,b) (p)->GetCaps(b) -#define IDirectDrawSurface3_GetClipper(p,a) (p)->GetClipper(a) -#define IDirectDrawSurface3_GetColorKey(p,a,b) (p)->GetColorKey(a,b) -#define IDirectDrawSurface3_GetDC(p,a) (p)->GetDC(a) -#define IDirectDrawSurface3_GetFlipStatus(p,a) (p)->GetFlipStatus(a) -#define IDirectDrawSurface3_GetOverlayPosition(p,a,b) (p)->GetOverlayPosition(a,b) -#define IDirectDrawSurface3_GetPalette(p,a) (p)->GetPalette(a) -#define IDirectDrawSurface3_GetPixelFormat(p,a) (p)->GetPixelFormat(a) -#define IDirectDrawSurface3_GetSurfaceDesc(p,a) (p)->GetSurfaceDesc(a) -#define IDirectDrawSurface3_Initialize(p,a,b) (p)->Initialize(a,b) -#define IDirectDrawSurface3_IsLost(p) (p)->IsLost() -#define IDirectDrawSurface3_Lock(p,a,b,c,d) (p)->Lock(a,b,c,d) -#define IDirectDrawSurface3_ReleaseDC(p,a) (p)->ReleaseDC(a) -#define IDirectDrawSurface3_Restore(p) (p)->Restore() -#define IDirectDrawSurface3_SetClipper(p,a) (p)->SetClipper(a) -#define IDirectDrawSurface3_SetColorKey(p,a,b) (p)->SetColorKey(a,b) -#define IDirectDrawSurface3_SetOverlayPosition(p,a,b) (p)->SetOverlayPosition(a,b) -#define IDirectDrawSurface3_SetPalette(p,a) (p)->SetPalette(a) -#define IDirectDrawSurface3_Unlock(p,b) (p)->Unlock(b) -#define IDirectDrawSurface3_UpdateOverlay(p,a,b,c,d,e) (p)->UpdateOverlay(a,b,c,d,e) -#define IDirectDrawSurface3_UpdateOverlayDisplay(p,a) (p)->UpdateOverlayDisplay(a) -#define IDirectDrawSurface3_UpdateOverlayZOrder(p,a,b) (p)->UpdateOverlayZOrder(a,b) -#define IDirectDrawSurface3_GetDDInterface(p,a) (p)->GetDDInterface(a) -#define IDirectDrawSurface3_PageLock(p,a) (p)->PageLock(a) -#define IDirectDrawSurface3_PageUnlock(p,a) (p)->PageUnlock(a) -#define IDirectDrawSurface3_SetSurfaceDesc(p,a,b) (p)->SetSurfaceDesc(a,b) -#endif - -/* - * IDirectDrawSurface4 and related interfaces - */ -#undef INTERFACE -#define INTERFACE IDirectDrawSurface4 -DECLARE_INTERFACE_( IDirectDrawSurface4, IUnknown ) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - /*** IDirectDrawSurface methods ***/ - STDMETHOD(AddAttachedSurface)(THIS_ LPDIRECTDRAWSURFACE4) PURE; - STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT) PURE; - STDMETHOD(Blt)(THIS_ LPRECT,LPDIRECTDRAWSURFACE4, LPRECT,DWORD, LPDDBLTFX) PURE; - STDMETHOD(BltBatch)(THIS_ LPDDBLTBATCH, DWORD, DWORD ) PURE; - STDMETHOD(BltFast)(THIS_ DWORD,DWORD,LPDIRECTDRAWSURFACE4, LPRECT,DWORD) PURE; - STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD,LPDIRECTDRAWSURFACE4) PURE; - STDMETHOD(EnumAttachedSurfaces)(THIS_ LPVOID,LPDDENUMSURFACESCALLBACK2) PURE; - STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD,LPVOID,LPDDENUMSURFACESCALLBACK2) PURE; - STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE4, DWORD) PURE; - STDMETHOD(GetAttachedSurface)(THIS_ LPDDSCAPS2, LPDIRECTDRAWSURFACE4 FAR *) PURE; - STDMETHOD(GetBltStatus)(THIS_ DWORD) PURE; - STDMETHOD(GetCaps)(THIS_ LPDDSCAPS2) PURE; - STDMETHOD(GetClipper)(THIS_ LPDIRECTDRAWCLIPPER FAR*) PURE; - STDMETHOD(GetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE; - STDMETHOD(GetDC)(THIS_ HDC FAR *) PURE; - STDMETHOD(GetFlipStatus)(THIS_ DWORD) PURE; - STDMETHOD(GetOverlayPosition)(THIS_ LPLONG, LPLONG ) PURE; - STDMETHOD(GetPalette)(THIS_ LPDIRECTDRAWPALETTE FAR*) PURE; - STDMETHOD(GetPixelFormat)(THIS_ LPDDPIXELFORMAT) PURE; - STDMETHOD(GetSurfaceDesc)(THIS_ LPDDSURFACEDESC2) PURE; - STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, LPDDSURFACEDESC2) PURE; - STDMETHOD(IsLost)(THIS) PURE; - STDMETHOD(Lock)(THIS_ LPRECT,LPDDSURFACEDESC2,DWORD,HANDLE) PURE; - STDMETHOD(ReleaseDC)(THIS_ HDC) PURE; - STDMETHOD(Restore)(THIS) PURE; - STDMETHOD(SetClipper)(THIS_ LPDIRECTDRAWCLIPPER) PURE; - STDMETHOD(SetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE; - STDMETHOD(SetOverlayPosition)(THIS_ LONG, LONG ) PURE; - STDMETHOD(SetPalette)(THIS_ LPDIRECTDRAWPALETTE) PURE; - STDMETHOD(Unlock)(THIS_ LPRECT) PURE; - STDMETHOD(UpdateOverlay)(THIS_ LPRECT, LPDIRECTDRAWSURFACE4,LPRECT,DWORD, LPDDOVERLAYFX) PURE; - STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD) PURE; - STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD, LPDIRECTDRAWSURFACE4) PURE; - /*** Added in the v2 interface ***/ - STDMETHOD(GetDDInterface)(THIS_ LPVOID FAR *) PURE; - STDMETHOD(PageLock)(THIS_ DWORD) PURE; - STDMETHOD(PageUnlock)(THIS_ DWORD) PURE; - /*** Added in the v3 interface ***/ - STDMETHOD(SetSurfaceDesc)(THIS_ LPDDSURFACEDESC2, DWORD) PURE; - /*** Added in the v4 interface ***/ - STDMETHOD(SetPrivateData)(THIS_ REFGUID, LPVOID, DWORD, DWORD) PURE; - STDMETHOD(GetPrivateData)(THIS_ REFGUID, LPVOID, LPDWORD) PURE; - STDMETHOD(FreePrivateData)(THIS_ REFGUID) PURE; - STDMETHOD(GetUniquenessValue)(THIS_ LPDWORD) PURE; - STDMETHOD(ChangeUniquenessValue)(THIS) PURE; -}; - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectDrawSurface4_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IDirectDrawSurface4_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDirectDrawSurface4_Release(p) (p)->lpVtbl->Release(p) -#define IDirectDrawSurface4_AddAttachedSurface(p,a) (p)->lpVtbl->AddAttachedSurface(p,a) -#define IDirectDrawSurface4_AddOverlayDirtyRect(p,a) (p)->lpVtbl->AddOverlayDirtyRect(p,a) -#define IDirectDrawSurface4_Blt(p,a,b,c,d,e) (p)->lpVtbl->Blt(p,a,b,c,d,e) -#define IDirectDrawSurface4_BltBatch(p,a,b,c) (p)->lpVtbl->BltBatch(p,a,b,c) -#define IDirectDrawSurface4_BltFast(p,a,b,c,d,e) (p)->lpVtbl->BltFast(p,a,b,c,d,e) -#define IDirectDrawSurface4_DeleteAttachedSurface(p,a,b) (p)->lpVtbl->DeleteAttachedSurface(p,a,b) -#define IDirectDrawSurface4_EnumAttachedSurfaces(p,a,b) (p)->lpVtbl->EnumAttachedSurfaces(p,a,b) -#define IDirectDrawSurface4_EnumOverlayZOrders(p,a,b,c) (p)->lpVtbl->EnumOverlayZOrders(p,a,b,c) -#define IDirectDrawSurface4_Flip(p,a,b) (p)->lpVtbl->Flip(p,a,b) -#define IDirectDrawSurface4_GetAttachedSurface(p,a,b) (p)->lpVtbl->GetAttachedSurface(p,a,b) -#define IDirectDrawSurface4_GetBltStatus(p,a) (p)->lpVtbl->GetBltStatus(p,a) -#define IDirectDrawSurface4_GetCaps(p,b) (p)->lpVtbl->GetCaps(p,b) -#define IDirectDrawSurface4_GetClipper(p,a) (p)->lpVtbl->GetClipper(p,a) -#define IDirectDrawSurface4_GetColorKey(p,a,b) (p)->lpVtbl->GetColorKey(p,a,b) -#define IDirectDrawSurface4_GetDC(p,a) (p)->lpVtbl->GetDC(p,a) -#define IDirectDrawSurface4_GetFlipStatus(p,a) (p)->lpVtbl->GetFlipStatus(p,a) -#define IDirectDrawSurface4_GetOverlayPosition(p,a,b) (p)->lpVtbl->GetOverlayPosition(p,a,b) -#define IDirectDrawSurface4_GetPalette(p,a) (p)->lpVtbl->GetPalette(p,a) -#define IDirectDrawSurface4_GetPixelFormat(p,a) (p)->lpVtbl->GetPixelFormat(p,a) -#define IDirectDrawSurface4_GetSurfaceDesc(p,a) (p)->lpVtbl->GetSurfaceDesc(p,a) -#define IDirectDrawSurface4_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b) -#define IDirectDrawSurface4_IsLost(p) (p)->lpVtbl->IsLost(p) -#define IDirectDrawSurface4_Lock(p,a,b,c,d) (p)->lpVtbl->Lock(p,a,b,c,d) -#define IDirectDrawSurface4_ReleaseDC(p,a) (p)->lpVtbl->ReleaseDC(p,a) -#define IDirectDrawSurface4_Restore(p) (p)->lpVtbl->Restore(p) -#define IDirectDrawSurface4_SetClipper(p,a) (p)->lpVtbl->SetClipper(p,a) -#define IDirectDrawSurface4_SetColorKey(p,a,b) (p)->lpVtbl->SetColorKey(p,a,b) -#define IDirectDrawSurface4_SetOverlayPosition(p,a,b) (p)->lpVtbl->SetOverlayPosition(p,a,b) -#define IDirectDrawSurface4_SetPalette(p,a) (p)->lpVtbl->SetPalette(p,a) -#define IDirectDrawSurface4_Unlock(p,b) (p)->lpVtbl->Unlock(p,b) -#define IDirectDrawSurface4_UpdateOverlay(p,a,b,c,d,e) (p)->lpVtbl->UpdateOverlay(p,a,b,c,d,e) -#define IDirectDrawSurface4_UpdateOverlayDisplay(p,a) (p)->lpVtbl->UpdateOverlayDisplay(p,a) -#define IDirectDrawSurface4_UpdateOverlayZOrder(p,a,b) (p)->lpVtbl->UpdateOverlayZOrder(p,a,b) -#define IDirectDrawSurface4_GetDDInterface(p,a) (p)->lpVtbl->GetDDInterface(p,a) -#define IDirectDrawSurface4_PageLock(p,a) (p)->lpVtbl->PageLock(p,a) -#define IDirectDrawSurface4_PageUnlock(p,a) (p)->lpVtbl->PageUnlock(p,a) -#define IDirectDrawSurface4_SetSurfaceDesc(p,a,b) (p)->lpVtbl->SetSurfaceDesc(p,a,b) -#define IDirectDrawSurface4_SetPrivateData(p,a,b,c,d) (p)->lpVtbl->SetPrivateData(p,a,b,c,d) -#define IDirectDrawSurface4_GetPrivateData(p,a,b,c) (p)->lpVtbl->GetPrivateData(p,a,b,c) -#define IDirectDrawSurface4_FreePrivateData(p,a) (p)->lpVtbl->FreePrivateData(p,a) -#define IDirectDrawSurface4_GetUniquenessValue(p, a) (p)->lpVtbl->GetUniquenessValue(p, a) -#define IDirectDrawSurface4_ChangeUniquenessValue(p) (p)->lpVtbl->ChangeUniquenessValue(p) -#else -#define IDirectDrawSurface4_QueryInterface(p,a,b) (p)->QueryInterface(a,b) -#define IDirectDrawSurface4_AddRef(p) (p)->AddRef() -#define IDirectDrawSurface4_Release(p) (p)->Release() -#define IDirectDrawSurface4_AddAttachedSurface(p,a) (p)->AddAttachedSurface(a) -#define IDirectDrawSurface4_AddOverlayDirtyRect(p,a) (p)->AddOverlayDirtyRect(a) -#define IDirectDrawSurface4_Blt(p,a,b,c,d,e) (p)->Blt(a,b,c,d,e) -#define IDirectDrawSurface4_BltBatch(p,a,b,c) (p)->BltBatch(a,b,c) -#define IDirectDrawSurface4_BltFast(p,a,b,c,d,e) (p)->BltFast(a,b,c,d,e) -#define IDirectDrawSurface4_DeleteAttachedSurface(p,a,b) (p)->DeleteAttachedSurface(a,b) -#define IDirectDrawSurface4_EnumAttachedSurfaces(p,a,b) (p)->EnumAttachedSurfaces(a,b) -#define IDirectDrawSurface4_EnumOverlayZOrders(p,a,b,c) (p)->EnumOverlayZOrders(a,b,c) -#define IDirectDrawSurface4_Flip(p,a,b) (p)->Flip(a,b) -#define IDirectDrawSurface4_GetAttachedSurface(p,a,b) (p)->GetAttachedSurface(a,b) -#define IDirectDrawSurface4_GetBltStatus(p,a) (p)->GetBltStatus(a) -#define IDirectDrawSurface4_GetCaps(p,b) (p)->GetCaps(b) -#define IDirectDrawSurface4_GetClipper(p,a) (p)->GetClipper(a) -#define IDirectDrawSurface4_GetColorKey(p,a,b) (p)->GetColorKey(a,b) -#define IDirectDrawSurface4_GetDC(p,a) (p)->GetDC(a) -#define IDirectDrawSurface4_GetFlipStatus(p,a) (p)->GetFlipStatus(a) -#define IDirectDrawSurface4_GetOverlayPosition(p,a,b) (p)->GetOverlayPosition(a,b) -#define IDirectDrawSurface4_GetPalette(p,a) (p)->GetPalette(a) -#define IDirectDrawSurface4_GetPixelFormat(p,a) (p)->GetPixelFormat(a) -#define IDirectDrawSurface4_GetSurfaceDesc(p,a) (p)->GetSurfaceDesc(a) -#define IDirectDrawSurface4_Initialize(p,a,b) (p)->Initialize(a,b) -#define IDirectDrawSurface4_IsLost(p) (p)->IsLost() -#define IDirectDrawSurface4_Lock(p,a,b,c,d) (p)->Lock(a,b,c,d) -#define IDirectDrawSurface4_ReleaseDC(p,a) (p)->ReleaseDC(a) -#define IDirectDrawSurface4_Restore(p) (p)->Restore() -#define IDirectDrawSurface4_SetClipper(p,a) (p)->SetClipper(a) -#define IDirectDrawSurface4_SetColorKey(p,a,b) (p)->SetColorKey(a,b) -#define IDirectDrawSurface4_SetOverlayPosition(p,a,b) (p)->SetOverlayPosition(a,b) -#define IDirectDrawSurface4_SetPalette(p,a) (p)->SetPalette(a) -#define IDirectDrawSurface4_Unlock(p,b) (p)->Unlock(b) -#define IDirectDrawSurface4_UpdateOverlay(p,a,b,c,d,e) (p)->UpdateOverlay(a,b,c,d,e) -#define IDirectDrawSurface4_UpdateOverlayDisplay(p,a) (p)->UpdateOverlayDisplay(a) -#define IDirectDrawSurface4_UpdateOverlayZOrder(p,a,b) (p)->UpdateOverlayZOrder(a,b) -#define IDirectDrawSurface4_GetDDInterface(p,a) (p)->GetDDInterface(a) -#define IDirectDrawSurface4_PageLock(p,a) (p)->PageLock(a) -#define IDirectDrawSurface4_PageUnlock(p,a) (p)->PageUnlock(a) -#define IDirectDrawSurface4_SetSurfaceDesc(p,a,b) (p)->SetSurfaceDesc(a,b) -#define IDirectDrawSurface4_SetPrivateData(p,a,b,c,d) (p)->SetPrivateData(a,b,c,d) -#define IDirectDrawSurface4_GetPrivateData(p,a,b,c) (p)->GetPrivateData(a,b,c) -#define IDirectDrawSurface4_FreePrivateData(p,a) (p)->FreePrivateData(a) -#define IDirectDrawSurface4_GetUniquenessValue(p, a) (p)->GetUniquenessValue(a) -#define IDirectDrawSurface4_ChangeUniquenessValue(p) (p)->ChangeUniquenessValue() -#endif - -/* - * IDirectDrawSurface7 and related interfaces - */ -#undef INTERFACE -#define INTERFACE IDirectDrawSurface7 -DECLARE_INTERFACE_( IDirectDrawSurface7, IUnknown ) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - /*** IDirectDrawSurface methods ***/ - STDMETHOD(AddAttachedSurface)(THIS_ LPDIRECTDRAWSURFACE7) PURE; - STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT) PURE; - STDMETHOD(Blt)(THIS_ LPRECT,LPDIRECTDRAWSURFACE7, LPRECT,DWORD, LPDDBLTFX) PURE; - STDMETHOD(BltBatch)(THIS_ LPDDBLTBATCH, DWORD, DWORD ) PURE; - STDMETHOD(BltFast)(THIS_ DWORD,DWORD,LPDIRECTDRAWSURFACE7, LPRECT,DWORD) PURE; - STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD,LPDIRECTDRAWSURFACE7) PURE; - STDMETHOD(EnumAttachedSurfaces)(THIS_ LPVOID,LPDDENUMSURFACESCALLBACK7) PURE; - STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD,LPVOID,LPDDENUMSURFACESCALLBACK7) PURE; - STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE7, DWORD) PURE; - STDMETHOD(GetAttachedSurface)(THIS_ LPDDSCAPS2, LPDIRECTDRAWSURFACE7 FAR *) PURE; - STDMETHOD(GetBltStatus)(THIS_ DWORD) PURE; - STDMETHOD(GetCaps)(THIS_ LPDDSCAPS2) PURE; - STDMETHOD(GetClipper)(THIS_ LPDIRECTDRAWCLIPPER FAR*) PURE; - STDMETHOD(GetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE; - STDMETHOD(GetDC)(THIS_ HDC FAR *) PURE; - STDMETHOD(GetFlipStatus)(THIS_ DWORD) PURE; - STDMETHOD(GetOverlayPosition)(THIS_ LPLONG, LPLONG ) PURE; - STDMETHOD(GetPalette)(THIS_ LPDIRECTDRAWPALETTE FAR*) PURE; - STDMETHOD(GetPixelFormat)(THIS_ LPDDPIXELFORMAT) PURE; - STDMETHOD(GetSurfaceDesc)(THIS_ LPDDSURFACEDESC2) PURE; - STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, LPDDSURFACEDESC2) PURE; - STDMETHOD(IsLost)(THIS) PURE; - STDMETHOD(Lock)(THIS_ LPRECT,LPDDSURFACEDESC2,DWORD,HANDLE) PURE; - STDMETHOD(ReleaseDC)(THIS_ HDC) PURE; - STDMETHOD(Restore)(THIS) PURE; - STDMETHOD(SetClipper)(THIS_ LPDIRECTDRAWCLIPPER) PURE; - STDMETHOD(SetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE; - STDMETHOD(SetOverlayPosition)(THIS_ LONG, LONG ) PURE; - STDMETHOD(SetPalette)(THIS_ LPDIRECTDRAWPALETTE) PURE; - STDMETHOD(Unlock)(THIS_ LPRECT) PURE; - STDMETHOD(UpdateOverlay)(THIS_ LPRECT, LPDIRECTDRAWSURFACE7,LPRECT,DWORD, LPDDOVERLAYFX) PURE; - STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD) PURE; - STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD, LPDIRECTDRAWSURFACE7) PURE; - /*** Added in the v2 interface ***/ - STDMETHOD(GetDDInterface)(THIS_ LPVOID FAR *) PURE; - STDMETHOD(PageLock)(THIS_ DWORD) PURE; - STDMETHOD(PageUnlock)(THIS_ DWORD) PURE; - /*** Added in the v3 interface ***/ - STDMETHOD(SetSurfaceDesc)(THIS_ LPDDSURFACEDESC2, DWORD) PURE; - /*** Added in the v4 interface ***/ - STDMETHOD(SetPrivateData)(THIS_ REFGUID, LPVOID, DWORD, DWORD) PURE; - STDMETHOD(GetPrivateData)(THIS_ REFGUID, LPVOID, LPDWORD) PURE; - STDMETHOD(FreePrivateData)(THIS_ REFGUID) PURE; - STDMETHOD(GetUniquenessValue)(THIS_ LPDWORD) PURE; - STDMETHOD(ChangeUniquenessValue)(THIS) PURE; - /*** Moved Texture7 methods here ***/ - STDMETHOD(SetPriority)(THIS_ DWORD) PURE; - STDMETHOD(GetPriority)(THIS_ LPDWORD) PURE; - STDMETHOD(SetLOD)(THIS_ DWORD) PURE; - STDMETHOD(GetLOD)(THIS_ LPDWORD) PURE; -}; - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectDrawSurface7_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IDirectDrawSurface7_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDirectDrawSurface7_Release(p) (p)->lpVtbl->Release(p) -#define IDirectDrawSurface7_AddAttachedSurface(p,a) (p)->lpVtbl->AddAttachedSurface(p,a) -#define IDirectDrawSurface7_AddOverlayDirtyRect(p,a) (p)->lpVtbl->AddOverlayDirtyRect(p,a) -#define IDirectDrawSurface7_Blt(p,a,b,c,d,e) (p)->lpVtbl->Blt(p,a,b,c,d,e) -#define IDirectDrawSurface7_BltBatch(p,a,b,c) (p)->lpVtbl->BltBatch(p,a,b,c) -#define IDirectDrawSurface7_BltFast(p,a,b,c,d,e) (p)->lpVtbl->BltFast(p,a,b,c,d,e) -#define IDirectDrawSurface7_DeleteAttachedSurface(p,a,b) (p)->lpVtbl->DeleteAttachedSurface(p,a,b) -#define IDirectDrawSurface7_EnumAttachedSurfaces(p,a,b) (p)->lpVtbl->EnumAttachedSurfaces(p,a,b) -#define IDirectDrawSurface7_EnumOverlayZOrders(p,a,b,c) (p)->lpVtbl->EnumOverlayZOrders(p,a,b,c) -#define IDirectDrawSurface7_Flip(p,a,b) (p)->lpVtbl->Flip(p,a,b) -#define IDirectDrawSurface7_GetAttachedSurface(p,a,b) (p)->lpVtbl->GetAttachedSurface(p,a,b) -#define IDirectDrawSurface7_GetBltStatus(p,a) (p)->lpVtbl->GetBltStatus(p,a) -#define IDirectDrawSurface7_GetCaps(p,b) (p)->lpVtbl->GetCaps(p,b) -#define IDirectDrawSurface7_GetClipper(p,a) (p)->lpVtbl->GetClipper(p,a) -#define IDirectDrawSurface7_GetColorKey(p,a,b) (p)->lpVtbl->GetColorKey(p,a,b) -#define IDirectDrawSurface7_GetDC(p,a) (p)->lpVtbl->GetDC(p,a) -#define IDirectDrawSurface7_GetFlipStatus(p,a) (p)->lpVtbl->GetFlipStatus(p,a) -#define IDirectDrawSurface7_GetOverlayPosition(p,a,b) (p)->lpVtbl->GetOverlayPosition(p,a,b) -#define IDirectDrawSurface7_GetPalette(p,a) (p)->lpVtbl->GetPalette(p,a) -#define IDirectDrawSurface7_GetPixelFormat(p,a) (p)->lpVtbl->GetPixelFormat(p,a) -#define IDirectDrawSurface7_GetSurfaceDesc(p,a) (p)->lpVtbl->GetSurfaceDesc(p,a) -#define IDirectDrawSurface7_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b) -#define IDirectDrawSurface7_IsLost(p) (p)->lpVtbl->IsLost(p) -#define IDirectDrawSurface7_Lock(p,a,b,c,d) (p)->lpVtbl->Lock(p,a,b,c,d) -#define IDirectDrawSurface7_ReleaseDC(p,a) (p)->lpVtbl->ReleaseDC(p,a) -#define IDirectDrawSurface7_Restore(p) (p)->lpVtbl->Restore(p) -#define IDirectDrawSurface7_SetClipper(p,a) (p)->lpVtbl->SetClipper(p,a) -#define IDirectDrawSurface7_SetColorKey(p,a,b) (p)->lpVtbl->SetColorKey(p,a,b) -#define IDirectDrawSurface7_SetOverlayPosition(p,a,b) (p)->lpVtbl->SetOverlayPosition(p,a,b) -#define IDirectDrawSurface7_SetPalette(p,a) (p)->lpVtbl->SetPalette(p,a) -#define IDirectDrawSurface7_Unlock(p,b) (p)->lpVtbl->Unlock(p,b) -#define IDirectDrawSurface7_UpdateOverlay(p,a,b,c,d,e) (p)->lpVtbl->UpdateOverlay(p,a,b,c,d,e) -#define IDirectDrawSurface7_UpdateOverlayDisplay(p,a) (p)->lpVtbl->UpdateOverlayDisplay(p,a) -#define IDirectDrawSurface7_UpdateOverlayZOrder(p,a,b) (p)->lpVtbl->UpdateOverlayZOrder(p,a,b) -#define IDirectDrawSurface7_GetDDInterface(p,a) (p)->lpVtbl->GetDDInterface(p,a) -#define IDirectDrawSurface7_PageLock(p,a) (p)->lpVtbl->PageLock(p,a) -#define IDirectDrawSurface7_PageUnlock(p,a) (p)->lpVtbl->PageUnlock(p,a) -#define IDirectDrawSurface7_SetSurfaceDesc(p,a,b) (p)->lpVtbl->SetSurfaceDesc(p,a,b) -#define IDirectDrawSurface7_SetPrivateData(p,a,b,c,d) (p)->lpVtbl->SetPrivateData(p,a,b,c,d) -#define IDirectDrawSurface7_GetPrivateData(p,a,b,c) (p)->lpVtbl->GetPrivateData(p,a,b,c) -#define IDirectDrawSurface7_FreePrivateData(p,a) (p)->lpVtbl->FreePrivateData(p,a) -#define IDirectDrawSurface7_GetUniquenessValue(p, a) (p)->lpVtbl->GetUniquenessValue(p, a) -#define IDirectDrawSurface7_ChangeUniquenessValue(p) (p)->lpVtbl->ChangeUniquenessValue(p) -#define IDirectDrawSurface7_SetPriority(p,a) (p)->lpVtbl->SetPriority(p,a) -#define IDirectDrawSurface7_GetPriority(p,a) (p)->lpVtbl->GetPriority(p,a) -#define IDirectDrawSurface7_SetLOD(p,a) (p)->lpVtbl->SetLOD(p,a) -#define IDirectDrawSurface7_GetLOD(p,a) (p)->lpVtbl->GetLOD(p,a) -#else -#define IDirectDrawSurface7_QueryInterface(p,a,b) (p)->QueryInterface(a,b) -#define IDirectDrawSurface7_AddRef(p) (p)->AddRef() -#define IDirectDrawSurface7_Release(p) (p)->Release() -#define IDirectDrawSurface7_AddAttachedSurface(p,a) (p)->AddAttachedSurface(a) -#define IDirectDrawSurface7_AddOverlayDirtyRect(p,a) (p)->AddOverlayDirtyRect(a) -#define IDirectDrawSurface7_Blt(p,a,b,c,d,e) (p)->Blt(a,b,c,d,e) -#define IDirectDrawSurface7_BltBatch(p,a,b,c) (p)->BltBatch(a,b,c) -#define IDirectDrawSurface7_BltFast(p,a,b,c,d,e) (p)->BltFast(a,b,c,d,e) -#define IDirectDrawSurface7_DeleteAttachedSurface(p,a,b) (p)->DeleteAttachedSurface(a,b) -#define IDirectDrawSurface7_EnumAttachedSurfaces(p,a,b) (p)->EnumAttachedSurfaces(a,b) -#define IDirectDrawSurface7_EnumOverlayZOrders(p,a,b,c) (p)->EnumOverlayZOrders(a,b,c) -#define IDirectDrawSurface7_Flip(p,a,b) (p)->Flip(a,b) -#define IDirectDrawSurface7_GetAttachedSurface(p,a,b) (p)->GetAttachedSurface(a,b) -#define IDirectDrawSurface7_GetBltStatus(p,a) (p)->GetBltStatus(a) -#define IDirectDrawSurface7_GetCaps(p,b) (p)->GetCaps(b) -#define IDirectDrawSurface7_GetClipper(p,a) (p)->GetClipper(a) -#define IDirectDrawSurface7_GetColorKey(p,a,b) (p)->GetColorKey(a,b) -#define IDirectDrawSurface7_GetDC(p,a) (p)->GetDC(a) -#define IDirectDrawSurface7_GetFlipStatus(p,a) (p)->GetFlipStatus(a) -#define IDirectDrawSurface7_GetOverlayPosition(p,a,b) (p)->GetOverlayPosition(a,b) -#define IDirectDrawSurface7_GetPalette(p,a) (p)->GetPalette(a) -#define IDirectDrawSurface7_GetPixelFormat(p,a) (p)->GetPixelFormat(a) -#define IDirectDrawSurface7_GetSurfaceDesc(p,a) (p)->GetSurfaceDesc(a) -#define IDirectDrawSurface7_Initialize(p,a,b) (p)->Initialize(a,b) -#define IDirectDrawSurface7_IsLost(p) (p)->IsLost() -#define IDirectDrawSurface7_Lock(p,a,b,c,d) (p)->Lock(a,b,c,d) -#define IDirectDrawSurface7_ReleaseDC(p,a) (p)->ReleaseDC(a) -#define IDirectDrawSurface7_Restore(p) (p)->Restore() -#define IDirectDrawSurface7_SetClipper(p,a) (p)->SetClipper(a) -#define IDirectDrawSurface7_SetColorKey(p,a,b) (p)->SetColorKey(a,b) -#define IDirectDrawSurface7_SetOverlayPosition(p,a,b) (p)->SetOverlayPosition(a,b) -#define IDirectDrawSurface7_SetPalette(p,a) (p)->SetPalette(a) -#define IDirectDrawSurface7_Unlock(p,b) (p)->Unlock(b) -#define IDirectDrawSurface7_UpdateOverlay(p,a,b,c,d,e) (p)->UpdateOverlay(a,b,c,d,e) -#define IDirectDrawSurface7_UpdateOverlayDisplay(p,a) (p)->UpdateOverlayDisplay(a) -#define IDirectDrawSurface7_UpdateOverlayZOrder(p,a,b) (p)->UpdateOverlayZOrder(a,b) -#define IDirectDrawSurface7_GetDDInterface(p,a) (p)->GetDDInterface(a) -#define IDirectDrawSurface7_PageLock(p,a) (p)->PageLock(a) -#define IDirectDrawSurface7_PageUnlock(p,a) (p)->PageUnlock(a) -#define IDirectDrawSurface7_SetSurfaceDesc(p,a,b) (p)->SetSurfaceDesc(a,b) -#define IDirectDrawSurface7_SetPrivateData(p,a,b,c,d) (p)->SetPrivateData(a,b,c,d) -#define IDirectDrawSurface7_GetPrivateData(p,a,b,c) (p)->GetPrivateData(a,b,c) -#define IDirectDrawSurface7_FreePrivateData(p,a) (p)->FreePrivateData(a) -#define IDirectDrawSurface7_GetUniquenessValue(p, a) (p)->GetUniquenessValue(a) -#define IDirectDrawSurface7_ChangeUniquenessValue(p) (p)->ChangeUniquenessValue() -#define IDirectDrawSurface7_SetPriority(p,a) (p)->SetPriority(a) -#define IDirectDrawSurface7_GetPriority(p,a) (p)->GetPriority(a) -#define IDirectDrawSurface7_SetLOD(p,a) (p)->SetLOD(a) -#define IDirectDrawSurface7_GetLOD(p,a) (p)->GetLOD(a) -#endif - - -/* - * IDirectDrawColorControl - */ -#if defined( _WIN32 ) && !defined( _NO_COM ) -#undef INTERFACE -#define INTERFACE IDirectDrawColorControl -DECLARE_INTERFACE_( IDirectDrawColorControl, IUnknown ) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - /*** IDirectDrawColorControl methods ***/ - STDMETHOD(GetColorControls)(THIS_ LPDDCOLORCONTROL) PURE; - STDMETHOD(SetColorControls)(THIS_ LPDDCOLORCONTROL) PURE; -}; - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectDrawColorControl_QueryInterface(p, a, b) (p)->lpVtbl->QueryInterface(p, a, b) -#define IDirectDrawColorControl_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDirectDrawColorControl_Release(p) (p)->lpVtbl->Release(p) -#define IDirectDrawColorControl_GetColorControls(p, a) (p)->lpVtbl->GetColorControls(p, a) -#define IDirectDrawColorControl_SetColorControls(p, a) (p)->lpVtbl->SetColorControls(p, a) -#else -#define IDirectDrawColorControl_QueryInterface(p, a, b) (p)->QueryInterface(a, b) -#define IDirectDrawColorControl_AddRef(p) (p)->AddRef() -#define IDirectDrawColorControl_Release(p) (p)->Release() -#define IDirectDrawColorControl_GetColorControls(p, a) (p)->GetColorControls(a) -#define IDirectDrawColorControl_SetColorControls(p, a) (p)->SetColorControls(a) -#endif - -#endif - - -/* - * IDirectDrawGammaControl - */ -#if defined( _WIN32 ) && !defined( _NO_COM ) -#undef INTERFACE -#define INTERFACE IDirectDrawGammaControl -DECLARE_INTERFACE_( IDirectDrawGammaControl, IUnknown ) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - /*** IDirectDrawGammaControl methods ***/ - STDMETHOD(GetGammaRamp)(THIS_ DWORD, LPDDGAMMARAMP) PURE; - STDMETHOD(SetGammaRamp)(THIS_ DWORD, LPDDGAMMARAMP) PURE; -}; - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectDrawGammaControl_QueryInterface(p, a, b) (p)->lpVtbl->QueryInterface(p, a, b) -#define IDirectDrawGammaControl_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDirectDrawGammaControl_Release(p) (p)->lpVtbl->Release(p) -#define IDirectDrawGammaControl_GetGammaRamp(p, a, b) (p)->lpVtbl->GetGammaRamp(p, a, b) -#define IDirectDrawGammaControl_SetGammaRamp(p, a, b) (p)->lpVtbl->SetGammaRamp(p, a, b) -#else -#define IDirectDrawGammaControl_QueryInterface(p, a, b) (p)->QueryInterface(a, b) -#define IDirectDrawGammaControl_AddRef(p) (p)->AddRef() -#define IDirectDrawGammaControl_Release(p) (p)->Release() -#define IDirectDrawGammaControl_GetGammaRamp(p, a, b) (p)->GetGammaRamp(a, b) -#define IDirectDrawGammaControl_SetGammaRamp(p, a, b) (p)->SetGammaRamp(a, b) -#endif - -#endif - - - -#endif - - -/* - * DDSURFACEDESC - */ -typedef struct _DDSURFACEDESC -{ - DWORD dwSize; // size of the DDSURFACEDESC structure - DWORD dwFlags; // determines what fields are valid - DWORD dwHeight; // height of surface to be created - DWORD dwWidth; // width of input surface - union - { - LONG lPitch; // distance to start of next line (return value only) - DWORD dwLinearSize; // Formless late-allocated optimized surface size - } DUMMYUNIONNAMEN(1); - DWORD dwBackBufferCount; // number of back buffers requested - union - { - DWORD dwMipMapCount; // number of mip-map levels requested - DWORD dwZBufferBitDepth; // depth of Z buffer requested - DWORD dwRefreshRate; // refresh rate (used when display mode is described) - } DUMMYUNIONNAMEN(2); - DWORD dwAlphaBitDepth; // depth of alpha buffer requested - DWORD dwReserved; // reserved - LPVOID lpSurface; // pointer to the associated surface memory - DDCOLORKEY ddckCKDestOverlay; // color key for destination overlay use - DDCOLORKEY ddckCKDestBlt; // color key for destination blt use - DDCOLORKEY ddckCKSrcOverlay; // color key for source overlay use - DDCOLORKEY ddckCKSrcBlt; // color key for source blt use - DDPIXELFORMAT ddpfPixelFormat; // pixel format description of the surface - DDSCAPS ddsCaps; // direct draw surface capabilities -} DDSURFACEDESC; - -/* - * DDSURFACEDESC2 - */ -typedef struct _DDSURFACEDESC2 -{ - DWORD dwSize; // size of the DDSURFACEDESC structure - DWORD dwFlags; // determines what fields are valid - DWORD dwHeight; // height of surface to be created - DWORD dwWidth; // width of input surface - union - { - LONG lPitch; // distance to start of next line (return value only) - DWORD dwLinearSize; // Formless late-allocated optimized surface size - } DUMMYUNIONNAMEN(1); - union - { - DWORD dwBackBufferCount; // number of back buffers requested - DWORD dwDepth; // the depth if this is a volume texture - } DUMMYUNIONNAMEN(5); - union - { - DWORD dwMipMapCount; // number of mip-map levels requestde - // dwZBufferBitDepth removed, use ddpfPixelFormat one instead - DWORD dwRefreshRate; // refresh rate (used when display mode is described) - DWORD dwSrcVBHandle; // The source used in VB::Optimize - } DUMMYUNIONNAMEN(2); - DWORD dwAlphaBitDepth; // depth of alpha buffer requested - DWORD dwReserved; // reserved - LPVOID lpSurface; // pointer to the associated surface memory - union - { - DDCOLORKEY ddckCKDestOverlay; // color key for destination overlay use - DWORD dwEmptyFaceColor; // Physical color for empty cubemap faces - } DUMMYUNIONNAMEN(3); - DDCOLORKEY ddckCKDestBlt; // color key for destination blt use - DDCOLORKEY ddckCKSrcOverlay; // color key for source overlay use - DDCOLORKEY ddckCKSrcBlt; // color key for source blt use - union - { - DDPIXELFORMAT ddpfPixelFormat; // pixel format description of the surface - DWORD dwFVF; // vertex format description of vertex buffers - } DUMMYUNIONNAMEN(4); - DDSCAPS2 ddsCaps; // direct draw surface capabilities - DWORD dwTextureStage; // stage in multitexture cascade -} DDSURFACEDESC2; - -/* - * ddsCaps field is valid. - */ -#define DDSD_CAPS 0x00000001l // default - -/* - * dwHeight field is valid. - */ -#define DDSD_HEIGHT 0x00000002l - -/* - * dwWidth field is valid. - */ -#define DDSD_WIDTH 0x00000004l - -/* - * lPitch is valid. - */ -#define DDSD_PITCH 0x00000008l - -/* - * dwBackBufferCount is valid. - */ -#define DDSD_BACKBUFFERCOUNT 0x00000020l - -/* - * dwZBufferBitDepth is valid. (shouldnt be used in DDSURFACEDESC2) - */ -#define DDSD_ZBUFFERBITDEPTH 0x00000040l - -/* - * dwAlphaBitDepth is valid. - */ -#define DDSD_ALPHABITDEPTH 0x00000080l - - -/* - * lpSurface is valid. - */ -#define DDSD_LPSURFACE 0x00000800l - -/* - * ddpfPixelFormat is valid. - */ -#define DDSD_PIXELFORMAT 0x00001000l - -/* - * ddckCKDestOverlay is valid. - */ -#define DDSD_CKDESTOVERLAY 0x00002000l - -/* - * ddckCKDestBlt is valid. - */ -#define DDSD_CKDESTBLT 0x00004000l - -/* - * ddckCKSrcOverlay is valid. - */ -#define DDSD_CKSRCOVERLAY 0x00008000l - -/* - * ddckCKSrcBlt is valid. - */ -#define DDSD_CKSRCBLT 0x00010000l - -/* - * dwMipMapCount is valid. - */ -#define DDSD_MIPMAPCOUNT 0x00020000l - - /* - * dwRefreshRate is valid - */ -#define DDSD_REFRESHRATE 0x00040000l - -/* - * dwLinearSize is valid - */ -#define DDSD_LINEARSIZE 0x00080000l - -/* - * dwTextureStage is valid - */ -#define DDSD_TEXTURESTAGE 0x00100000l -/* - * dwFVF is valid - */ -#define DDSD_FVF 0x00200000l -/* - * dwSrcVBHandle is valid - */ -#define DDSD_SRCVBHANDLE 0x00400000l - -/* - * dwDepth is valid - */ -#define DDSD_DEPTH 0x00800000l - -/* - * All input fields are valid. - */ -#define DDSD_ALL 0x00fff9eel - -/* - * DDOPTSURFACEDESC - */ -typedef struct _DDOPTSURFACEDESC -{ - DWORD dwSize; // size of the DDOPTSURFACEDESC structure - DWORD dwFlags; // determines what fields are valid - DDSCAPS2 ddSCaps; // Common caps like: Memory type - DDOSCAPS ddOSCaps; // Common caps like: Memory type - GUID guid; // Compression technique GUID - DWORD dwCompressionRatio; // Compression ratio -} DDOPTSURFACEDESC; - -/* - * guid field is valid. - */ -#define DDOSD_GUID 0x00000001l - -/* - * dwCompressionRatio field is valid. - */ -#define DDOSD_COMPRESSION_RATIO 0x00000002l - -/* - * ddSCaps field is valid. - */ -#define DDOSD_SCAPS 0x00000004l - -/* - * ddOSCaps field is valid. - */ -#define DDOSD_OSCAPS 0x00000008l - -/* - * All input fields are valid. - */ -#define DDOSD_ALL 0x0000000fl - -/* - * The surface's optimized pixelformat is compressed - */ -#define DDOSDCAPS_OPTCOMPRESSED 0x00000001l - -/* - * The surface's optimized pixelformat is reordered - */ -#define DDOSDCAPS_OPTREORDERED 0x00000002l - -/* - * The opt surface is a monolithic mipmap - */ -#define DDOSDCAPS_MONOLITHICMIPMAP 0x00000004l - -/* - * The valid Surf caps: - * #define DDSCAPS_SYSTEMMEMORY 0x00000800l - * #define DDSCAPS_VIDEOMEMORY 0x00004000l - * #define DDSCAPS_LOCALVIDMEM 0x10000000l - * #define DDSCAPS_NONLOCALVIDMEM 0x20000000l - */ -#define DDOSDCAPS_VALIDSCAPS 0x30004800l - -/* - * The valid OptSurf caps - */ -#define DDOSDCAPS_VALIDOSCAPS 0x00000007l - - -/* - * DDCOLORCONTROL - */ -typedef struct _DDCOLORCONTROL -{ - DWORD dwSize; - DWORD dwFlags; - LONG lBrightness; - LONG lContrast; - LONG lHue; - LONG lSaturation; - LONG lSharpness; - LONG lGamma; - LONG lColorEnable; - DWORD dwReserved1; -} DDCOLORCONTROL; - - -/* - * lBrightness field is valid. - */ -#define DDCOLOR_BRIGHTNESS 0x00000001l - -/* - * lContrast field is valid. - */ -#define DDCOLOR_CONTRAST 0x00000002l - -/* - * lHue field is valid. - */ -#define DDCOLOR_HUE 0x00000004l - -/* - * lSaturation field is valid. - */ -#define DDCOLOR_SATURATION 0x00000008l - -/* - * lSharpness field is valid. - */ -#define DDCOLOR_SHARPNESS 0x00000010l - -/* - * lGamma field is valid. - */ -#define DDCOLOR_GAMMA 0x00000020l - -/* - * lColorEnable field is valid. - */ -#define DDCOLOR_COLORENABLE 0x00000040l - - - -/*============================================================================ - * - * Direct Draw Capability Flags - * - * These flags are used to describe the capabilities of a given Surface. - * All flags are bit flags. - * - *==========================================================================*/ - -/**************************************************************************** - * - * DIRECTDRAWSURFACE CAPABILITY FLAGS - * - ****************************************************************************/ - -/* - * This bit is reserved. It should not be specified. - */ -#define DDSCAPS_RESERVED1 0x00000001l - -/* - * Indicates that this surface contains alpha-only information. - * (To determine if a surface is RGBA/YUVA, the pixel format must be - * interrogated.) - */ -#define DDSCAPS_ALPHA 0x00000002l - -/* - * Indicates that this surface is a backbuffer. It is generally - * set by CreateSurface when the DDSCAPS_FLIP capability bit is set. - * It indicates that this surface is THE back buffer of a surface - * flipping structure. DirectDraw supports N surfaces in a - * surface flipping structure. Only the surface that immediately - * precedeces the DDSCAPS_FRONTBUFFER has this capability bit set. - * The other surfaces are identified as back buffers by the presence - * of the DDSCAPS_FLIP capability, their attachment order, and the - * absence of the DDSCAPS_FRONTBUFFER and DDSCAPS_BACKBUFFER - * capabilities. The bit is sent to CreateSurface when a standalone - * back buffer is being created. This surface could be attached to - * a front buffer and/or back buffers to form a flipping surface - * structure after the CreateSurface call. See AddAttachments for - * a detailed description of the behaviors in this case. - */ -#define DDSCAPS_BACKBUFFER 0x00000004l - -/* - * Indicates a complex surface structure is being described. A - * complex surface structure results in the creation of more than - * one surface. The additional surfaces are attached to the root - * surface. The complex structure can only be destroyed by - * destroying the root. - */ -#define DDSCAPS_COMPLEX 0x00000008l - -/* - * Indicates that this surface is a part of a surface flipping structure. - * When it is passed to CreateSurface the DDSCAPS_FRONTBUFFER and - * DDSCAP_BACKBUFFER bits are not set. They are set by CreateSurface - * on the resulting creations. The dwBackBufferCount field in the - * DDSURFACEDESC structure must be set to at least 1 in order for - * the CreateSurface call to succeed. The DDSCAPS_COMPLEX capability - * must always be set with creating multiple surfaces through CreateSurface. - */ -#define DDSCAPS_FLIP 0x00000010l - -/* - * Indicates that this surface is THE front buffer of a surface flipping - * structure. It is generally set by CreateSurface when the DDSCAPS_FLIP - * capability bit is set. - * If this capability is sent to CreateSurface then a standalonw front buffer - * is created. This surface will not have the DDSCAPS_FLIP capability. - * It can be attached to other back buffers to form a flipping structure. - * See AddAttachments for a detailed description of the behaviors in this - * case. - */ -#define DDSCAPS_FRONTBUFFER 0x00000020l - -/* - * Indicates that this surface is any offscreen surface that is not an overlay, - * texture, zbuffer, front buffer, back buffer, or alpha surface. It is used - * to identify plain vanilla surfaces. - */ -#define DDSCAPS_OFFSCREENPLAIN 0x00000040l - -/* - * Indicates that this surface is an overlay. It may or may not be directly visible - * depending on whether or not it is currently being overlayed onto the primary - * surface. DDSCAPS_VISIBLE can be used to determine whether or not it is being - * overlayed at the moment. - */ -#define DDSCAPS_OVERLAY 0x00000080l - -/* - * Indicates that unique DirectDrawPalette objects can be created and - * attached to this surface. - */ -#define DDSCAPS_PALETTE 0x00000100l - -/* - * Indicates that this surface is the primary surface. The primary - * surface represents what the user is seeing at the moment. - */ -#define DDSCAPS_PRIMARYSURFACE 0x00000200l - - -/* - * This flag used to be DDSCAPS_PRIMARYSURFACELEFT, which is now - * obsolete. - */ -#define DDSCAPS_RESERVED3 0x00000400l -#define DDSCAPS_PRIMARYSURFACELEFT 0x00000000l - -/* - * Indicates that this surface memory was allocated in system memory - */ -#define DDSCAPS_SYSTEMMEMORY 0x00000800l - -/* - * Indicates that this surface can be used as a 3D texture. It does not - * indicate whether or not the surface is being used for that purpose. - */ -#define DDSCAPS_TEXTURE 0x00001000l - -/* - * Indicates that a surface may be a destination for 3D rendering. This - * bit must be set in order to query for a Direct3D Device Interface - * from this surface. - */ -#define DDSCAPS_3DDEVICE 0x00002000l - -/* - * Indicates that this surface exists in video memory. - */ -#define DDSCAPS_VIDEOMEMORY 0x00004000l - -/* - * Indicates that changes made to this surface are immediately visible. - * It is always set for the primary surface and is set for overlays while - * they are being overlayed and texture maps while they are being textured. - */ -#define DDSCAPS_VISIBLE 0x00008000l - -/* - * Indicates that only writes are permitted to the surface. Read accesses - * from the surface may or may not generate a protection fault, but the - * results of a read from this surface will not be meaningful. READ ONLY. - */ -#define DDSCAPS_WRITEONLY 0x00010000l - -/* - * Indicates that this surface is a z buffer. A z buffer does not contain - * displayable information. Instead it contains bit depth information that is - * used to determine which pixels are visible and which are obscured. - */ -#define DDSCAPS_ZBUFFER 0x00020000l - -/* - * Indicates surface will have a DC associated long term - */ -#define DDSCAPS_OWNDC 0x00040000l - -/* - * Indicates surface should be able to receive live video - */ -#define DDSCAPS_LIVEVIDEO 0x00080000l - -/* - * Indicates surface should be able to have a stream decompressed - * to it by the hardware. - */ -#define DDSCAPS_HWCODEC 0x00100000l - -/* - * Surface is a ModeX surface. - * - */ -#define DDSCAPS_MODEX 0x00200000l - -/* - * Indicates surface is one level of a mip-map. This surface will - * be attached to other DDSCAPS_MIPMAP surfaces to form the mip-map. - * This can be done explicitly, by creating a number of surfaces and - * attaching them with AddAttachedSurface or by implicitly by CreateSurface. - * If this bit is set then DDSCAPS_TEXTURE must also be set. - */ -#define DDSCAPS_MIPMAP 0x00400000l - -/* - * This bit is reserved. It should not be specified. - */ -#define DDSCAPS_RESERVED2 0x00800000l - - -/* - * Indicates that memory for the surface is not allocated until the surface - * is loaded (via the Direct3D texture Load() function). - */ -#define DDSCAPS_ALLOCONLOAD 0x04000000l - -/* - * Indicates that the surface will recieve data from a video port. - */ -#define DDSCAPS_VIDEOPORT 0x08000000l - -/* - * Indicates that a video memory surface is resident in true, local video - * memory rather than non-local video memory. If this flag is specified then - * so must DDSCAPS_VIDEOMEMORY. This flag is mutually exclusive with - * DDSCAPS_NONLOCALVIDMEM. - */ -#define DDSCAPS_LOCALVIDMEM 0x10000000l - -/* - * Indicates that a video memory surface is resident in non-local video - * memory rather than true, local video memory. If this flag is specified - * then so must DDSCAPS_VIDEOMEMORY. This flag is mutually exclusive with - * DDSCAPS_LOCALVIDMEM. - */ -#define DDSCAPS_NONLOCALVIDMEM 0x20000000l - -/* - * Indicates that this surface is a standard VGA mode surface, and not a - * ModeX surface. (This flag will never be set in combination with the - * DDSCAPS_MODEX flag). - */ -#define DDSCAPS_STANDARDVGAMODE 0x40000000l - -/* - * Indicates that this surface will be an optimized surface. This flag is - * currently only valid in conjunction with the DDSCAPS_TEXTURE flag. The surface - * will be created without any underlying video memory until loaded. - */ -#define DDSCAPS_OPTIMIZED 0x80000000l - - - -/* - * This bit is reserved - */ -#define DDSCAPS2_RESERVED4 0x00000002L -#define DDSCAPS2_HARDWAREDEINTERLACE 0x00000000L - -/* - * Indicates to the driver that this surface will be locked very frequently - * (for procedural textures, dynamic lightmaps, etc). Surfaces with this cap - * set must also have DDSCAPS_TEXTURE. This cap cannot be used with - * DDSCAPS2_HINTSTATIC and DDSCAPS2_OPAQUE. - */ -#define DDSCAPS2_HINTDYNAMIC 0x00000004L - -/* - * Indicates to the driver that this surface can be re-ordered/retiled on - * load. This operation will not change the size of the texture. It is - * relatively fast and symmetrical, since the application may lock these - * bits (although it will take a performance hit when doing so). Surfaces - * with this cap set must also have DDSCAPS_TEXTURE. This cap cannot be - * used with DDSCAPS2_HINTDYNAMIC and DDSCAPS2_OPAQUE. - */ -#define DDSCAPS2_HINTSTATIC 0x00000008L - -/* - * Indicates that the client would like this texture surface to be managed by the - * DirectDraw/Direct3D runtime. Surfaces with this cap set must also have - * DDSCAPS_TEXTURE set. - */ -#define DDSCAPS2_TEXTUREMANAGE 0x00000010L - -/* - * These bits are reserved for internal use */ -#define DDSCAPS2_RESERVED1 0x00000020L -#define DDSCAPS2_RESERVED2 0x00000040L - -/* - * Indicates to the driver that this surface will never be locked again. - * The driver is free to optimize this surface via retiling and actual compression. - * All calls to Lock() or Blts from this surface will fail. Surfaces with this - * cap set must also have DDSCAPS_TEXTURE. This cap cannot be used with - * DDSCAPS2_HINTDYNAMIC and DDSCAPS2_HINTSTATIC. - */ -#define DDSCAPS2_OPAQUE 0x00000080L - -/* - * Applications should set this bit at CreateSurface time to indicate that they - * intend to use antialiasing. Only valid if DDSCAPS_3DDEVICE is also set. - */ -#define DDSCAPS2_HINTANTIALIASING 0x00000100L - - -/* - * This flag is used at CreateSurface time to indicate that this set of - * surfaces is a cubic environment map - */ -#define DDSCAPS2_CUBEMAP 0x00000200L - -/* - * These flags preform two functions: - * - At CreateSurface time, they define which of the six cube faces are - * required by the application. - * - After creation, each face in the cubemap will have exactly one of these - * bits set. - */ -#define DDSCAPS2_CUBEMAP_POSITIVEX 0x00000400L -#define DDSCAPS2_CUBEMAP_NEGATIVEX 0x00000800L -#define DDSCAPS2_CUBEMAP_POSITIVEY 0x00001000L -#define DDSCAPS2_CUBEMAP_NEGATIVEY 0x00002000L -#define DDSCAPS2_CUBEMAP_POSITIVEZ 0x00004000L -#define DDSCAPS2_CUBEMAP_NEGATIVEZ 0x00008000L - -/* - * This macro may be used to specify all faces of a cube map at CreateSurface time - */ -#define DDSCAPS2_CUBEMAP_ALLFACES ( DDSCAPS2_CUBEMAP_POSITIVEX |\ - DDSCAPS2_CUBEMAP_NEGATIVEX |\ - DDSCAPS2_CUBEMAP_POSITIVEY |\ - DDSCAPS2_CUBEMAP_NEGATIVEY |\ - DDSCAPS2_CUBEMAP_POSITIVEZ |\ - DDSCAPS2_CUBEMAP_NEGATIVEZ ) - - -/* - * This flag is an additional flag which is present on mipmap sublevels from DX7 onwards - * It enables easier use of GetAttachedSurface rather than EnumAttachedSurfaces for surface - * constructs such as Cube Maps, wherein there are more than one mipmap surface attached - * to the root surface. - * This caps bit is ignored by CreateSurface - */ -#define DDSCAPS2_MIPMAPSUBLEVEL 0x00010000L - -/* This flag indicates that the texture should be managed by D3D only */ -#define DDSCAPS2_D3DTEXTUREMANAGE 0x00020000L - -/* This flag indicates that the managed surface can be safely lost */ -#define DDSCAPS2_DONOTPERSIST 0x00040000L - -/* indicates that this surface is part of a stereo flipping chain */ -#define DDSCAPS2_STEREOSURFACELEFT 0x00080000L - - -/* - * Indicates that the surface is a volume. - * Can be combined with DDSCAPS_MIPMAP to indicate a multi-level volume - */ -#define DDSCAPS2_VOLUME 0x00200000L - -/* - * Indicates that the surface may be locked multiple times by the application. - * This cap cannot be used with DDSCAPS2_OPAQUE. - */ -#define DDSCAPS2_NOTUSERLOCKABLE 0x00400000L - -/* - * Indicates that the vertex buffer data can be used to render points and - * point sprites. - */ -#define DDSCAPS2_POINTS 0x00800000L - -/* - * Indicates that the vertex buffer data can be used to render rt pactches. - */ -#define DDSCAPS2_RTPATCHES 0x01000000L - -/* - * Indicates that the vertex buffer data can be used to render n patches. - */ -#define DDSCAPS2_NPATCHES 0x02000000L - -/* - * This bit is reserved for internal use - */ -#define DDSCAPS2_RESERVED3 0x04000000L - - -/* - * Indicates that the contents of the backbuffer do not have to be preserved - * the contents of the backbuffer after they are presented. - */ -#define DDSCAPS2_DISCARDBACKBUFFER 0x10000000L - -/* - * Indicates that all surfaces in this creation chain should be given an alpha channel. - * This flag will be set on primary surface chains that may have no explicit pixel format - * (and thus take on the format of the current display mode). - * The driver should infer that all these surfaces have a format having an alpha channel. - * (e.g. assume D3DFMT_A8R8G8B8 if the display mode is x888.) - */ -#define DDSCAPS2_ENABLEALPHACHANNEL 0x20000000L - -/* - * Indicates that all surfaces in this creation chain is extended primary surface format. - * This flag will be set on extended primary surface chains that always have explicit pixel - * format and the pixel format is typically GDI (Graphics Device Interface) couldn't handle, - * thus only used with fullscreen application. (e.g. D3DFMT_A2R10G10B10 format) - */ -#define DDSCAPS2_EXTENDEDFORMATPRIMARY 0x40000000L - -/* - * Indicates that all surfaces in this creation chain is additional primary surface. - * This flag will be set on primary surface chains which must present on the adapter - * id provided on dwCaps4. Typically this will be used to create secondary primary surface - * on DualView display adapter. - */ -#define DDSCAPS2_ADDITIONALPRIMARY 0x80000000L - -/* - * This is a mask that indicates the set of bits that may be set - * at createsurface time to indicate number of samples per pixel - * when multisampling - */ -#define DDSCAPS3_MULTISAMPLE_MASK 0x0000001FL - -/* - * This is a mask that indicates the set of bits that may be set - * at createsurface time to indicate the quality level of rendering - * for the current number of samples per pixel - */ -#define DDSCAPS3_MULTISAMPLE_QUALITY_MASK 0x000000E0L -#define DDSCAPS3_MULTISAMPLE_QUALITY_SHIFT 5 - -/* - * This bit is reserved for internal use - */ -#define DDSCAPS3_RESERVED1 0x00000100L - -/* - * This bit is reserved for internal use - */ -#define DDSCAPS3_RESERVED2 0x00000200L - -/* - * This indicates whether this surface has light-weight miplevels - */ -#define DDSCAPS3_LIGHTWEIGHTMIPMAP 0x00000400L - -/* - * This indicates that the mipsublevels for this surface are auto-generated - */ -#define DDSCAPS3_AUTOGENMIPMAP 0x00000800L - -/* - * This indicates that the mipsublevels for this surface are auto-generated - */ -#define DDSCAPS3_DMAP 0x00001000L - - - /**************************************************************************** - * - * DIRECTDRAW DRIVER CAPABILITY FLAGS - * - ****************************************************************************/ - -/* - * Display hardware has 3D acceleration. - */ -#define DDCAPS_3D 0x00000001l - -/* - * Indicates that DirectDraw will support only dest rectangles that are aligned - * on DIRECTDRAWCAPS.dwAlignBoundaryDest boundaries of the surface, respectively. - * READ ONLY. - */ -#define DDCAPS_ALIGNBOUNDARYDEST 0x00000002l - -/* - * Indicates that DirectDraw will support only source rectangles whose sizes in - * BYTEs are DIRECTDRAWCAPS.dwAlignSizeDest multiples, respectively. READ ONLY. - */ -#define DDCAPS_ALIGNSIZEDEST 0x00000004l -/* - * Indicates that DirectDraw will support only source rectangles that are aligned - * on DIRECTDRAWCAPS.dwAlignBoundarySrc boundaries of the surface, respectively. - * READ ONLY. - */ -#define DDCAPS_ALIGNBOUNDARYSRC 0x00000008l - -/* - * Indicates that DirectDraw will support only source rectangles whose sizes in - * BYTEs are DIRECTDRAWCAPS.dwAlignSizeSrc multiples, respectively. READ ONLY. - */ -#define DDCAPS_ALIGNSIZESRC 0x00000010l - -/* - * Indicates that DirectDraw will create video memory surfaces that have a stride - * alignment equal to DIRECTDRAWCAPS.dwAlignStride. READ ONLY. - */ -#define DDCAPS_ALIGNSTRIDE 0x00000020l - -/* - * Display hardware is capable of blt operations. - */ -#define DDCAPS_BLT 0x00000040l - -/* - * Display hardware is capable of asynchronous blt operations. - */ -#define DDCAPS_BLTQUEUE 0x00000080l - -/* - * Display hardware is capable of color space conversions during the blt operation. - */ -#define DDCAPS_BLTFOURCC 0x00000100l - -/* - * Display hardware is capable of stretching during blt operations. - */ -#define DDCAPS_BLTSTRETCH 0x00000200l - -/* - * Display hardware is shared with GDI. - */ -#define DDCAPS_GDI 0x00000400l - -/* - * Display hardware can overlay. - */ -#define DDCAPS_OVERLAY 0x00000800l - -/* - * Set if display hardware supports overlays but can not clip them. - */ -#define DDCAPS_OVERLAYCANTCLIP 0x00001000l - -/* - * Indicates that overlay hardware is capable of color space conversions during - * the overlay operation. - */ -#define DDCAPS_OVERLAYFOURCC 0x00002000l - -/* - * Indicates that stretching can be done by the overlay hardware. - */ -#define DDCAPS_OVERLAYSTRETCH 0x00004000l - -/* - * Indicates that unique DirectDrawPalettes can be created for DirectDrawSurfaces - * other than the primary surface. - */ -#define DDCAPS_PALETTE 0x00008000l - -/* - * Indicates that palette changes can be syncd with the veritcal refresh. - */ -#define DDCAPS_PALETTEVSYNC 0x00010000l - -/* - * Display hardware can return the current scan line. - */ -#define DDCAPS_READSCANLINE 0x00020000l - - -/* - * This flag used to bo DDCAPS_STEREOVIEW, which is now obsolete - */ -#define DDCAPS_RESERVED1 0x00040000l - -/* - * Display hardware is capable of generating a vertical blank interrupt. - */ -#define DDCAPS_VBI 0x00080000l - -/* - * Supports the use of z buffers with blt operations. - */ -#define DDCAPS_ZBLTS 0x00100000l - -/* - * Supports Z Ordering of overlays. - */ -#define DDCAPS_ZOVERLAYS 0x00200000l - -/* - * Supports color key - */ -#define DDCAPS_COLORKEY 0x00400000l - -/* - * Supports alpha surfaces - */ -#define DDCAPS_ALPHA 0x00800000l - -/* - * colorkey is hardware assisted(DDCAPS_COLORKEY will also be set) - */ -#define DDCAPS_COLORKEYHWASSIST 0x01000000l - -/* - * no hardware support at all - */ -#define DDCAPS_NOHARDWARE 0x02000000l - -/* - * Display hardware is capable of color fill with bltter - */ -#define DDCAPS_BLTCOLORFILL 0x04000000l - -/* - * Display hardware is bank switched, and potentially very slow at - * random access to VRAM. - */ -#define DDCAPS_BANKSWITCHED 0x08000000l - -/* - * Display hardware is capable of depth filling Z-buffers with bltter - */ -#define DDCAPS_BLTDEPTHFILL 0x10000000l - -/* - * Display hardware is capable of clipping while bltting. - */ -#define DDCAPS_CANCLIP 0x20000000l - -/* - * Display hardware is capable of clipping while stretch bltting. - */ -#define DDCAPS_CANCLIPSTRETCHED 0x40000000l - -/* - * Display hardware is capable of bltting to or from system memory - */ -#define DDCAPS_CANBLTSYSMEM 0x80000000l - - - /**************************************************************************** - * - * MORE DIRECTDRAW DRIVER CAPABILITY FLAGS (dwCaps2) - * - ****************************************************************************/ - -/* - * Display hardware is certified - */ -#define DDCAPS2_CERTIFIED 0x00000001l - -/* - * Driver cannot interleave 2D operations (lock and blt) to surfaces with - * Direct3D rendering operations between calls to BeginScene() and EndScene() - */ -#define DDCAPS2_NO2DDURING3DSCENE 0x00000002l - -/* - * Display hardware contains a video port - */ -#define DDCAPS2_VIDEOPORT 0x00000004l - -/* - * The overlay can be automatically flipped according to the video port - * VSYNCs, providing automatic doubled buffered display of video port - * data using an overlay - */ -#define DDCAPS2_AUTOFLIPOVERLAY 0x00000008l - -/* - * Overlay can display each field of interlaced data individually while - * it is interleaved in memory without causing jittery artifacts. - */ -#define DDCAPS2_CANBOBINTERLEAVED 0x00000010l - -/* - * Overlay can display each field of interlaced data individually while - * it is not interleaved in memory without causing jittery artifacts. - */ -#define DDCAPS2_CANBOBNONINTERLEAVED 0x00000020l - -/* - * The overlay surface contains color controls (brightness, sharpness, etc.) - */ -#define DDCAPS2_COLORCONTROLOVERLAY 0x00000040l - -/* - * The primary surface contains color controls (gamma, etc.) - */ -#define DDCAPS2_COLORCONTROLPRIMARY 0x00000080l - -/* - * RGBZ -> RGB supported for 16:16 RGB:Z - */ -#define DDCAPS2_CANDROPZ16BIT 0x00000100l - -/* - * Driver supports non-local video memory. - */ -#define DDCAPS2_NONLOCALVIDMEM 0x00000200l - -/* - * Dirver supports non-local video memory but has different capabilities for - * non-local video memory surfaces. If this bit is set then so must - * DDCAPS2_NONLOCALVIDMEM. - */ -#define DDCAPS2_NONLOCALVIDMEMCAPS 0x00000400l - -/* - * Driver neither requires nor prefers surfaces to be pagelocked when performing - * blts involving system memory surfaces - */ -#define DDCAPS2_NOPAGELOCKREQUIRED 0x00000800l - -/* - * Driver can create surfaces which are wider than the primary surface - */ -#define DDCAPS2_WIDESURFACES 0x00001000l - -/* - * Driver supports bob without using a video port by handling the - * DDFLIP_ODD and DDFLIP_EVEN flags specified in Flip. - */ -#define DDCAPS2_CANFLIPODDEVEN 0x00002000l - -/* - * Driver supports bob using hardware - */ -#define DDCAPS2_CANBOBHARDWARE 0x00004000l - -/* - * Driver supports bltting any FOURCC surface to another surface of the same FOURCC - */ -#define DDCAPS2_COPYFOURCC 0x00008000l - - -/* - * Driver supports loadable gamma ramps for the primary surface - */ -#define DDCAPS2_PRIMARYGAMMA 0x00020000l - -/* - * Driver can render in windowed mode. - */ -#define DDCAPS2_CANRENDERWINDOWED 0x00080000l - -/* - * A calibrator is available to adjust the gamma ramp according to the - * physical display properties so that the result will be identical on - * all calibrated systems. - */ -#define DDCAPS2_CANCALIBRATEGAMMA 0x00100000l - -/* - * Indicates that the driver will respond to DDFLIP_INTERVALn flags - */ -#define DDCAPS2_FLIPINTERVAL 0x00200000l - -/* - * Indicates that the driver will respond to DDFLIP_NOVSYNC - */ -#define DDCAPS2_FLIPNOVSYNC 0x00400000l - -/* - * Driver supports management of video memory, if this flag is ON, - * driver manages the texture if requested with DDSCAPS2_TEXTUREMANAGE on - * DirectX manages the texture if this flag is OFF and surface has DDSCAPS2_TEXTUREMANAGE on - */ -#define DDCAPS2_CANMANAGETEXTURE 0x00800000l - -/* - * The Direct3D texture manager uses this cap to decide whether to put managed - * surfaces in non-local video memory. If the cap is set, the texture manager will - * put managed surfaces in non-local vidmem. Drivers that cannot texture from - * local vidmem SHOULD NOT set this cap. - */ -#define DDCAPS2_TEXMANINNONLOCALVIDMEM 0x01000000l - -/* - * Indicates that the driver supports DX7 type of stereo in at least one mode (which may - * not necessarily be the current mode). Applications should use IDirectDraw7 (or higher) - * ::EnumDisplayModes and check the DDSURFACEDESC.ddsCaps.dwCaps2 field for the presence of - * DDSCAPS2_STEREOSURFACELEFT to check if a particular mode supports stereo. The application - * can also use IDirectDraw7(or higher)::GetDisplayMode to check the current mode. - */ -#define DDCAPS2_STEREO 0x02000000L - -/* - * This caps bit is intended for internal DirectDraw use. - * -It is only valid if DDCAPS2_NONLOCALVIDMEMCAPS is set. - * -If this bit is set, then DDCAPS_CANBLTSYSMEM MUST be set by the driver (and - * all the assoicated system memory blt caps must be correct). - * -It implies that the system->video blt caps in DDCAPS also apply to system to - * nonlocal blts. I.e. the dwSVBCaps, dwSVBCKeyCaps, dwSVBFXCaps and dwSVBRops - * members of DDCAPS (DDCORECAPS) are filled in correctly. - * -Any blt from system to nonlocal memory that matches these caps bits will - * be passed to the driver. - * - * NOTE: This is intended to enable the driver itself to do efficient reordering - * of textures. This is NOT meant to imply that hardware can write into AGP memory. - * This operation is not currently supported. - */ -#define DDCAPS2_SYSTONONLOCAL_AS_SYSTOLOCAL 0x04000000L - -/* - * was DDCAPS2_PUREHAL - */ -#define DDCAPS2_RESERVED1 0x08000000L - -/* - * Driver supports management of video memory, if this flag is ON, - * driver manages the resource if requested with DDSCAPS2_TEXTUREMANAGE on - * DirectX manages the resource if this flag is OFF and surface has DDSCAPS2_TEXTUREMANAGE on - */ -#define DDCAPS2_CANMANAGERESOURCE 0x10000000L - -/* - * Driver supports dynamic textures. This will allow the application to set - * D3DUSAGE_DYNAMIC (DDSCAPS2_HINTDYNAMIC for drivers) at texture create time. - * Video memory dynamic textures WILL be lockable by applications. It is - * expected that these locks will be very efficient (which implies that the - * driver should always maintain a linear copy, a pointer to which can be - * quickly handed out to the application). - */ -#define DDCAPS2_DYNAMICTEXTURES 0x20000000L - -/* - * Driver supports auto-generation of mipmaps. - */ -#define DDCAPS2_CANAUTOGENMIPMAP 0x40000000L - - -/**************************************************************************** - * - * DIRECTDRAW FX ALPHA CAPABILITY FLAGS - * - ****************************************************************************/ - -/* - * Supports alpha blending around the edge of a source color keyed surface. - * For Blt. - */ -#define DDFXALPHACAPS_BLTALPHAEDGEBLEND 0x00000001l - -/* - * Supports alpha information in the pixel format. The bit depth of alpha - * information in the pixel format can be 1,2,4, or 8. The alpha value becomes - * more opaque as the alpha value increases. (0 is transparent.) - * For Blt. - */ -#define DDFXALPHACAPS_BLTALPHAPIXELS 0x00000002l - -/* - * Supports alpha information in the pixel format. The bit depth of alpha - * information in the pixel format can be 1,2,4, or 8. The alpha value - * becomes more transparent as the alpha value increases. (0 is opaque.) - * This flag can only be set if DDCAPS_ALPHA is set. - * For Blt. - */ -#define DDFXALPHACAPS_BLTALPHAPIXELSNEG 0x00000004l - -/* - * Supports alpha only surfaces. The bit depth of an alpha only surface can be - * 1,2,4, or 8. The alpha value becomes more opaque as the alpha value increases. - * (0 is transparent.) - * For Blt. - */ -#define DDFXALPHACAPS_BLTALPHASURFACES 0x00000008l - -/* - * The depth of the alpha channel data can range can be 1,2,4, or 8. - * The NEG suffix indicates that this alpha channel becomes more transparent - * as the alpha value increases. (0 is opaque.) This flag can only be set if - * DDCAPS_ALPHA is set. - * For Blt. - */ -#define DDFXALPHACAPS_BLTALPHASURFACESNEG 0x00000010l - -/* - * Supports alpha blending around the edge of a source color keyed surface. - * For Overlays. - */ -#define DDFXALPHACAPS_OVERLAYALPHAEDGEBLEND 0x00000020l - -/* - * Supports alpha information in the pixel format. The bit depth of alpha - * information in the pixel format can be 1,2,4, or 8. The alpha value becomes - * more opaque as the alpha value increases. (0 is transparent.) - * For Overlays. - */ -#define DDFXALPHACAPS_OVERLAYALPHAPIXELS 0x00000040l - -/* - * Supports alpha information in the pixel format. The bit depth of alpha - * information in the pixel format can be 1,2,4, or 8. The alpha value - * becomes more transparent as the alpha value increases. (0 is opaque.) - * This flag can only be set if DDCAPS_ALPHA is set. - * For Overlays. - */ -#define DDFXALPHACAPS_OVERLAYALPHAPIXELSNEG 0x00000080l - -/* - * Supports alpha only surfaces. The bit depth of an alpha only surface can be - * 1,2,4, or 8. The alpha value becomes more opaque as the alpha value increases. - * (0 is transparent.) - * For Overlays. - */ -#define DDFXALPHACAPS_OVERLAYALPHASURFACES 0x00000100l - -/* - * The depth of the alpha channel data can range can be 1,2,4, or 8. - * The NEG suffix indicates that this alpha channel becomes more transparent - * as the alpha value increases. (0 is opaque.) This flag can only be set if - * DDCAPS_ALPHA is set. - * For Overlays. - */ -#define DDFXALPHACAPS_OVERLAYALPHASURFACESNEG 0x00000200l - -#if DIRECTDRAW_VERSION < 0x0600 -#endif //DIRECTDRAW_VERSION - - -/**************************************************************************** - * - * DIRECTDRAW FX CAPABILITY FLAGS - * - ****************************************************************************/ - -/* - * Uses arithmetic operations to stretch and shrink surfaces during blt - * rather than pixel doubling techniques. Along the Y axis. - */ -#define DDFXCAPS_BLTARITHSTRETCHY 0x00000020l - -/* - * Uses arithmetic operations to stretch during blt - * rather than pixel doubling techniques. Along the Y axis. Only - * works for x1, x2, etc. - */ -#define DDFXCAPS_BLTARITHSTRETCHYN 0x00000010l - -/* - * Supports mirroring left to right in blt. - */ -#define DDFXCAPS_BLTMIRRORLEFTRIGHT 0x00000040l - -/* - * Supports mirroring top to bottom in blt. - */ -#define DDFXCAPS_BLTMIRRORUPDOWN 0x00000080l - -/* - * Supports arbitrary rotation for blts. - */ -#define DDFXCAPS_BLTROTATION 0x00000100l - -/* - * Supports 90 degree rotations for blts. - */ -#define DDFXCAPS_BLTROTATION90 0x00000200l - -/* - * DirectDraw supports arbitrary shrinking of a surface along the - * x axis (horizontal direction) for blts. - */ -#define DDFXCAPS_BLTSHRINKX 0x00000400l - -/* - * DirectDraw supports integer shrinking (1x,2x,) of a surface - * along the x axis (horizontal direction) for blts. - */ -#define DDFXCAPS_BLTSHRINKXN 0x00000800l - -/* - * DirectDraw supports arbitrary shrinking of a surface along the - * y axis (horizontal direction) for blts. - */ -#define DDFXCAPS_BLTSHRINKY 0x00001000l - -/* - * DirectDraw supports integer shrinking (1x,2x,) of a surface - * along the y axis (vertical direction) for blts. - */ -#define DDFXCAPS_BLTSHRINKYN 0x00002000l - -/* - * DirectDraw supports arbitrary stretching of a surface along the - * x axis (horizontal direction) for blts. - */ -#define DDFXCAPS_BLTSTRETCHX 0x00004000l - -/* - * DirectDraw supports integer stretching (1x,2x,) of a surface - * along the x axis (horizontal direction) for blts. - */ -#define DDFXCAPS_BLTSTRETCHXN 0x00008000l - -/* - * DirectDraw supports arbitrary stretching of a surface along the - * y axis (horizontal direction) for blts. - */ -#define DDFXCAPS_BLTSTRETCHY 0x00010000l - -/* - * DirectDraw supports integer stretching (1x,2x,) of a surface - * along the y axis (vertical direction) for blts. - */ -#define DDFXCAPS_BLTSTRETCHYN 0x00020000l - -/* - * Uses arithmetic operations to stretch and shrink surfaces during - * overlay rather than pixel doubling techniques. Along the Y axis - * for overlays. - */ -#define DDFXCAPS_OVERLAYARITHSTRETCHY 0x00040000l - -/* - * Uses arithmetic operations to stretch surfaces during - * overlay rather than pixel doubling techniques. Along the Y axis - * for overlays. Only works for x1, x2, etc. - */ -#define DDFXCAPS_OVERLAYARITHSTRETCHYN 0x00000008l - -/* - * DirectDraw supports arbitrary shrinking of a surface along the - * x axis (horizontal direction) for overlays. - */ -#define DDFXCAPS_OVERLAYSHRINKX 0x00080000l - -/* - * DirectDraw supports integer shrinking (1x,2x,) of a surface - * along the x axis (horizontal direction) for overlays. - */ -#define DDFXCAPS_OVERLAYSHRINKXN 0x00100000l - -/* - * DirectDraw supports arbitrary shrinking of a surface along the - * y axis (horizontal direction) for overlays. - */ -#define DDFXCAPS_OVERLAYSHRINKY 0x00200000l - -/* - * DirectDraw supports integer shrinking (1x,2x,) of a surface - * along the y axis (vertical direction) for overlays. - */ -#define DDFXCAPS_OVERLAYSHRINKYN 0x00400000l - -/* - * DirectDraw supports arbitrary stretching of a surface along the - * x axis (horizontal direction) for overlays. - */ -#define DDFXCAPS_OVERLAYSTRETCHX 0x00800000l - -/* - * DirectDraw supports integer stretching (1x,2x,) of a surface - * along the x axis (horizontal direction) for overlays. - */ -#define DDFXCAPS_OVERLAYSTRETCHXN 0x01000000l - -/* - * DirectDraw supports arbitrary stretching of a surface along the - * y axis (horizontal direction) for overlays. - */ -#define DDFXCAPS_OVERLAYSTRETCHY 0x02000000l - -/* - * DirectDraw supports integer stretching (1x,2x,) of a surface - * along the y axis (vertical direction) for overlays. - */ -#define DDFXCAPS_OVERLAYSTRETCHYN 0x04000000l - -/* - * DirectDraw supports mirroring of overlays across the vertical axis - */ -#define DDFXCAPS_OVERLAYMIRRORLEFTRIGHT 0x08000000l - -/* - * DirectDraw supports mirroring of overlays across the horizontal axis - */ -#define DDFXCAPS_OVERLAYMIRRORUPDOWN 0x10000000l - -/* - * DirectDraw supports deinterlacing of overlay surfaces - */ -#define DDFXCAPS_OVERLAYDEINTERLACE 0x20000000l - -/* - * Driver can do alpha blending for blits. - */ -#define DDFXCAPS_BLTALPHA 0x00000001l - - -/* - * Driver can do surface-reconstruction filtering for warped blits. - */ -#define DDFXCAPS_BLTFILTER DDFXCAPS_BLTARITHSTRETCHY - -/* - * Driver can do alpha blending for overlays. - */ -#define DDFXCAPS_OVERLAYALPHA 0x00000004l - - -/* - * Driver can do surface-reconstruction filtering for warped overlays. - */ -#define DDFXCAPS_OVERLAYFILTER DDFXCAPS_OVERLAYARITHSTRETCHY - -/**************************************************************************** - * - * DIRECTDRAW STEREO VIEW CAPABILITIES - * - ****************************************************************************/ - -/* - * This flag used to be DDSVCAPS_ENIGMA, which is now obsolete - */ - -#define DDSVCAPS_RESERVED1 0x00000001l - -/* - * This flag used to be DDSVCAPS_FLICKER, which is now obsolete - */ -#define DDSVCAPS_RESERVED2 0x00000002l - -/* - * This flag used to be DDSVCAPS_REDBLUE, which is now obsolete - */ -#define DDSVCAPS_RESERVED3 0x00000004l - -/* - * This flag used to be DDSVCAPS_SPLIT, which is now obsolete - */ -#define DDSVCAPS_RESERVED4 0x00000008l - -/* - * The stereo view is accomplished with switching technology - */ - -#define DDSVCAPS_STEREOSEQUENTIAL 0x00000010L - - - -/**************************************************************************** - * - * DIRECTDRAWPALETTE CAPABILITIES - * - ****************************************************************************/ - -/* - * Index is 4 bits. There are sixteen color entries in the palette table. - */ -#define DDPCAPS_4BIT 0x00000001l - -/* - * Index is onto a 8 bit color index. This field is only valid with the - * DDPCAPS_1BIT, DDPCAPS_2BIT or DDPCAPS_4BIT capability and the target - * surface is in 8bpp. Each color entry is one byte long and is an index - * into destination surface's 8bpp palette. - */ -#define DDPCAPS_8BITENTRIES 0x00000002l - -/* - * Index is 8 bits. There are 256 color entries in the palette table. - */ -#define DDPCAPS_8BIT 0x00000004l - -/* - * Indicates that this DIRECTDRAWPALETTE should use the palette color array - * passed into the lpDDColorArray parameter to initialize the DIRECTDRAWPALETTE - * object. - * This flag is obsolete. DirectDraw always initializes the color array from - * the lpDDColorArray parameter. The definition remains for source-level - * compatibility. - */ -#define DDPCAPS_INITIALIZE 0x00000000l - -/* - * This palette is the one attached to the primary surface. Changing this - * table has immediate effect on the display unless DDPSETPAL_VSYNC is specified - * and supported. - */ -#define DDPCAPS_PRIMARYSURFACE 0x00000010l - -/* - * This palette is the one attached to the primary surface left. Changing - * this table has immediate effect on the display for the left eye unless - * DDPSETPAL_VSYNC is specified and supported. - */ -#define DDPCAPS_PRIMARYSURFACELEFT 0x00000020l - -/* - * This palette can have all 256 entries defined - */ -#define DDPCAPS_ALLOW256 0x00000040l - -/* - * This palette can have modifications to it synced with the monitors - * refresh rate. - */ -#define DDPCAPS_VSYNC 0x00000080l - -/* - * Index is 1 bit. There are two color entries in the palette table. - */ -#define DDPCAPS_1BIT 0x00000100l - -/* - * Index is 2 bit. There are four color entries in the palette table. - */ -#define DDPCAPS_2BIT 0x00000200l - -/* - * The peFlags member of PALETTEENTRY denotes an 8 bit alpha value - */ -#define DDPCAPS_ALPHA 0x00000400l - - -/**************************************************************************** - * - * DIRECTDRAWPALETTE SETENTRY CONSTANTS - * - ****************************************************************************/ - - -/**************************************************************************** - * - * DIRECTDRAWPALETTE GETENTRY CONSTANTS - * - ****************************************************************************/ - -/* 0 is the only legal value */ - -/**************************************************************************** - * - * DIRECTDRAWSURFACE SETPRIVATEDATA CONSTANTS - * - ****************************************************************************/ - -/* - * The passed pointer is an IUnknown ptr. The cbData argument to SetPrivateData - * must be set to sizeof(IUnknown*). DirectDraw will call AddRef through this - * pointer and Release when the private data is destroyed. This includes when - * the surface or palette is destroyed before such priovate data is destroyed. - */ -#define DDSPD_IUNKNOWNPOINTER 0x00000001L - -/* - * Private data is only valid for the current state of the object, - * as determined by the uniqueness value. - */ -#define DDSPD_VOLATILE 0x00000002L - - -/**************************************************************************** - * - * DIRECTDRAWSURFACE SETPALETTE CONSTANTS - * - ****************************************************************************/ - - -/**************************************************************************** - * - * DIRECTDRAW BITDEPTH CONSTANTS - * - * NOTE: These are only used to indicate supported bit depths. These - * are flags only, they are not to be used as an actual bit depth. The - * absolute numbers 1, 2, 4, 8, 16, 24 and 32 are used to indicate actual - * bit depths in a surface or for changing the display mode. - * - ****************************************************************************/ - -/* - * 1 bit per pixel. - */ -#define DDBD_1 0x00004000l - -/* - * 2 bits per pixel. - */ -#define DDBD_2 0x00002000l - -/* - * 4 bits per pixel. - */ -#define DDBD_4 0x00001000l - -/* - * 8 bits per pixel. - */ -#define DDBD_8 0x00000800l - -/* - * 16 bits per pixel. - */ -#define DDBD_16 0x00000400l - -/* - * 24 bits per pixel. - */ -#define DDBD_24 0X00000200l - -/* - * 32 bits per pixel. - */ -#define DDBD_32 0x00000100l - -/**************************************************************************** - * - * DIRECTDRAWSURFACE SET/GET COLOR KEY FLAGS - * - ****************************************************************************/ - -/* - * Set if the structure contains a color space. Not set if the structure - * contains a single color key. - */ -#define DDCKEY_COLORSPACE 0x00000001l - -/* - * Set if the structure specifies a color key or color space which is to be - * used as a destination color key for blt operations. - */ -#define DDCKEY_DESTBLT 0x00000002l - -/* - * Set if the structure specifies a color key or color space which is to be - * used as a destination color key for overlay operations. - */ -#define DDCKEY_DESTOVERLAY 0x00000004l - -/* - * Set if the structure specifies a color key or color space which is to be - * used as a source color key for blt operations. - */ -#define DDCKEY_SRCBLT 0x00000008l - -/* - * Set if the structure specifies a color key or color space which is to be - * used as a source color key for overlay operations. - */ -#define DDCKEY_SRCOVERLAY 0x00000010l - - -/**************************************************************************** - * - * DIRECTDRAW COLOR KEY CAPABILITY FLAGS - * - ****************************************************************************/ - -/* - * Supports transparent blting using a color key to identify the replaceable - * bits of the destination surface for RGB colors. - */ -#define DDCKEYCAPS_DESTBLT 0x00000001l - -/* - * Supports transparent blting using a color space to identify the replaceable - * bits of the destination surface for RGB colors. - */ -#define DDCKEYCAPS_DESTBLTCLRSPACE 0x00000002l - -/* - * Supports transparent blting using a color space to identify the replaceable - * bits of the destination surface for YUV colors. - */ -#define DDCKEYCAPS_DESTBLTCLRSPACEYUV 0x00000004l - -/* - * Supports transparent blting using a color key to identify the replaceable - * bits of the destination surface for YUV colors. - */ -#define DDCKEYCAPS_DESTBLTYUV 0x00000008l - -/* - * Supports overlaying using colorkeying of the replaceable bits of the surface - * being overlayed for RGB colors. - */ -#define DDCKEYCAPS_DESTOVERLAY 0x00000010l - -/* - * Supports a color space as the color key for the destination for RGB colors. - */ -#define DDCKEYCAPS_DESTOVERLAYCLRSPACE 0x00000020l - -/* - * Supports a color space as the color key for the destination for YUV colors. - */ -#define DDCKEYCAPS_DESTOVERLAYCLRSPACEYUV 0x00000040l - -/* - * Supports only one active destination color key value for visible overlay - * surfaces. - */ -#define DDCKEYCAPS_DESTOVERLAYONEACTIVE 0x00000080l - -/* - * Supports overlaying using colorkeying of the replaceable bits of the - * surface being overlayed for YUV colors. - */ -#define DDCKEYCAPS_DESTOVERLAYYUV 0x00000100l - -/* - * Supports transparent blting using the color key for the source with - * this surface for RGB colors. - */ -#define DDCKEYCAPS_SRCBLT 0x00000200l - -/* - * Supports transparent blting using a color space for the source with - * this surface for RGB colors. - */ -#define DDCKEYCAPS_SRCBLTCLRSPACE 0x00000400l - -/* - * Supports transparent blting using a color space for the source with - * this surface for YUV colors. - */ -#define DDCKEYCAPS_SRCBLTCLRSPACEYUV 0x00000800l - -/* - * Supports transparent blting using the color key for the source with - * this surface for YUV colors. - */ -#define DDCKEYCAPS_SRCBLTYUV 0x00001000l - -/* - * Supports overlays using the color key for the source with this - * overlay surface for RGB colors. - */ -#define DDCKEYCAPS_SRCOVERLAY 0x00002000l - -/* - * Supports overlays using a color space as the source color key for - * the overlay surface for RGB colors. - */ -#define DDCKEYCAPS_SRCOVERLAYCLRSPACE 0x00004000l - -/* - * Supports overlays using a color space as the source color key for - * the overlay surface for YUV colors. - */ -#define DDCKEYCAPS_SRCOVERLAYCLRSPACEYUV 0x00008000l - -/* - * Supports only one active source color key value for visible - * overlay surfaces. - */ -#define DDCKEYCAPS_SRCOVERLAYONEACTIVE 0x00010000l - -/* - * Supports overlays using the color key for the source with this - * overlay surface for YUV colors. - */ -#define DDCKEYCAPS_SRCOVERLAYYUV 0x00020000l - -/* - * there are no bandwidth trade-offs for using colorkey with an overlay - */ -#define DDCKEYCAPS_NOCOSTOVERLAY 0x00040000l - - -/**************************************************************************** - * - * DIRECTDRAW PIXELFORMAT FLAGS - * - ****************************************************************************/ - -/* - * The surface has alpha channel information in the pixel format. - */ -#define DDPF_ALPHAPIXELS 0x00000001l - -/* - * The pixel format contains alpha only information - */ -#define DDPF_ALPHA 0x00000002l - -/* - * The FourCC code is valid. - */ -#define DDPF_FOURCC 0x00000004l - -/* - * The surface is 4-bit color indexed. - */ -#define DDPF_PALETTEINDEXED4 0x00000008l - -/* - * The surface is indexed into a palette which stores indices - * into the destination surface's 8-bit palette. - */ -#define DDPF_PALETTEINDEXEDTO8 0x00000010l - -/* - * The surface is 8-bit color indexed. - */ -#define DDPF_PALETTEINDEXED8 0x00000020l - -/* - * The RGB data in the pixel format structure is valid. - */ -#define DDPF_RGB 0x00000040l - -/* - * The surface will accept pixel data in the format specified - * and compress it during the write. - */ -#define DDPF_COMPRESSED 0x00000080l - -/* - * The surface will accept RGB data and translate it during - * the write to YUV data. The format of the data to be written - * will be contained in the pixel format structure. The DDPF_RGB - * flag will be set. - */ -#define DDPF_RGBTOYUV 0x00000100l - -/* - * pixel format is YUV - YUV data in pixel format struct is valid - */ -#define DDPF_YUV 0x00000200l - -/* - * pixel format is a z buffer only surface - */ -#define DDPF_ZBUFFER 0x00000400l - -/* - * The surface is 1-bit color indexed. - */ -#define DDPF_PALETTEINDEXED1 0x00000800l - -/* - * The surface is 2-bit color indexed. - */ -#define DDPF_PALETTEINDEXED2 0x00001000l - -/* - * The surface contains Z information in the pixels - */ -#define DDPF_ZPIXELS 0x00002000l - -/* - * The surface contains stencil information along with Z - */ -#define DDPF_STENCILBUFFER 0x00004000l - -/* - * Premultiplied alpha format -- the color components have been - * premultiplied by the alpha component. - */ -#define DDPF_ALPHAPREMULT 0x00008000l - - -/* - * Luminance data in the pixel format is valid. - * Use this flag for luminance-only or luminance+alpha surfaces, - * the bit depth is then ddpf.dwLuminanceBitCount. - */ -#define DDPF_LUMINANCE 0x00020000l - -/* - * Luminance data in the pixel format is valid. - * Use this flag when hanging luminance off bumpmap surfaces, - * the bit mask for the luminance portion of the pixel is then - * ddpf.dwBumpLuminanceBitMask - */ -#define DDPF_BUMPLUMINANCE 0x00040000l - -/* - * Bump map dUdV data in the pixel format is valid. - */ -#define DDPF_BUMPDUDV 0x00080000l - - -/*=========================================================================== - * - * - * DIRECTDRAW CALLBACK FLAGS - * - * - *==========================================================================*/ - -/**************************************************************************** - * - * DIRECTDRAW ENUMSURFACES FLAGS - * - ****************************************************************************/ - -/* - * Enumerate all of the surfaces that meet the search criterion. - */ -#define DDENUMSURFACES_ALL 0x00000001l - -/* - * A search hit is a surface that matches the surface description. - */ -#define DDENUMSURFACES_MATCH 0x00000002l - -/* - * A search hit is a surface that does not match the surface description. - */ -#define DDENUMSURFACES_NOMATCH 0x00000004l - -/* - * Enumerate the first surface that can be created which meets the search criterion. - */ -#define DDENUMSURFACES_CANBECREATED 0x00000008l - -/* - * Enumerate the surfaces that already exist that meet the search criterion. - */ -#define DDENUMSURFACES_DOESEXIST 0x00000010l - - -/**************************************************************************** - * - * DIRECTDRAW SETDISPLAYMODE FLAGS - * - ****************************************************************************/ - -/* - * The desired mode is a standard VGA mode - */ -#define DDSDM_STANDARDVGAMODE 0x00000001l - - -/**************************************************************************** - * - * DIRECTDRAW ENUMDISPLAYMODES FLAGS - * - ****************************************************************************/ - -/* - * Enumerate Modes with different refresh rates. EnumDisplayModes guarantees - * that a particular mode will be enumerated only once. This flag specifies whether - * the refresh rate is taken into account when determining if a mode is unique. - */ -#define DDEDM_REFRESHRATES 0x00000001l - -/* - * Enumerate VGA modes. Specify this flag if you wish to enumerate supported VGA - * modes such as mode 0x13 in addition to the usual ModeX modes (which are always - * enumerated if the application has previously called SetCooperativeLevel with the - * DDSCL_ALLOWMODEX flag set). - */ -#define DDEDM_STANDARDVGAMODES 0x00000002L - - -/**************************************************************************** - * - * DIRECTDRAW SETCOOPERATIVELEVEL FLAGS - * - ****************************************************************************/ - -/* - * Exclusive mode owner will be responsible for the entire primary surface. - * GDI can be ignored. used with DD - */ -#define DDSCL_FULLSCREEN 0x00000001l - -/* - * allow CTRL_ALT_DEL to work while in fullscreen exclusive mode - */ -#define DDSCL_ALLOWREBOOT 0x00000002l - -/* - * prevents DDRAW from modifying the application window. - * prevents DDRAW from minimize/restore the application window on activation. - */ -#define DDSCL_NOWINDOWCHANGES 0x00000004l - -/* - * app wants to work as a regular Windows application - */ -#define DDSCL_NORMAL 0x00000008l - -/* - * app wants exclusive access - */ -#define DDSCL_EXCLUSIVE 0x00000010l - - -/* - * app can deal with non-windows display modes - */ -#define DDSCL_ALLOWMODEX 0x00000040l - -/* - * this window will receive the focus messages - */ -#define DDSCL_SETFOCUSWINDOW 0x00000080l - -/* - * this window is associated with the DDRAW object and will - * cover the screen in fullscreen mode - */ -#define DDSCL_SETDEVICEWINDOW 0x00000100l - -/* - * app wants DDRAW to create a window to be associated with the - * DDRAW object - */ -#define DDSCL_CREATEDEVICEWINDOW 0x00000200l - -/* - * App explicitly asks DDRAW/D3D to be multithread safe. This makes D3D - * take the global crtisec more frequently. - */ -#define DDSCL_MULTITHREADED 0x00000400l - -/* - * App specifies that it would like to keep the FPU set up for optimal Direct3D - * performance (single precision and exceptions disabled) so Direct3D - * does not need to explicitly set the FPU each time. This is assumed by - * default in DirectX 7. See also DDSCL_FPUPRESERVE - */ -#define DDSCL_FPUSETUP 0x00000800l - -/* - * App specifies that it needs either double precision FPU or FPU exceptions - * enabled. This makes Direct3D explicitly set the FPU state eah time it is - * called. Setting the flag will reduce Direct3D performance. The flag is - * assumed by default in DirectX 6 and earlier. See also DDSCL_FPUSETUP - */ -#define DDSCL_FPUPRESERVE 0x00001000l - - -/**************************************************************************** - * - * DIRECTDRAW BLT FLAGS - * - ****************************************************************************/ - -/* - * Use the alpha information in the pixel format or the alpha channel surface - * attached to the destination surface as the alpha channel for this blt. - */ -#define DDBLT_ALPHADEST 0x00000001l - -/* - * Use the dwConstAlphaDest field in the DDBLTFX structure as the alpha channel - * for the destination surface for this blt. - */ -#define DDBLT_ALPHADESTCONSTOVERRIDE 0x00000002l - -/* - * The NEG suffix indicates that the destination surface becomes more - * transparent as the alpha value increases. (0 is opaque) - */ -#define DDBLT_ALPHADESTNEG 0x00000004l - -/* - * Use the lpDDSAlphaDest field in the DDBLTFX structure as the alpha - * channel for the destination for this blt. - */ -#define DDBLT_ALPHADESTSURFACEOVERRIDE 0x00000008l - -/* - * Use the dwAlphaEdgeBlend field in the DDBLTFX structure as the alpha channel - * for the edges of the image that border the color key colors. - */ -#define DDBLT_ALPHAEDGEBLEND 0x00000010l - -/* - * Use the alpha information in the pixel format or the alpha channel surface - * attached to the source surface as the alpha channel for this blt. - */ -#define DDBLT_ALPHASRC 0x00000020l - -/* - * Use the dwConstAlphaSrc field in the DDBLTFX structure as the alpha channel - * for the source for this blt. - */ -#define DDBLT_ALPHASRCCONSTOVERRIDE 0x00000040l - -/* - * The NEG suffix indicates that the source surface becomes more transparent - * as the alpha value increases. (0 is opaque) - */ -#define DDBLT_ALPHASRCNEG 0x00000080l - -/* - * Use the lpDDSAlphaSrc field in the DDBLTFX structure as the alpha channel - * for the source for this blt. - */ -#define DDBLT_ALPHASRCSURFACEOVERRIDE 0x00000100l - -/* - * Do this blt asynchronously through the FIFO in the order received. If - * there is no room in the hardware FIFO fail the call. - */ -#define DDBLT_ASYNC 0x00000200l - -/* - * Uses the dwFillColor field in the DDBLTFX structure as the RGB color - * to fill the destination rectangle on the destination surface with. - */ -#define DDBLT_COLORFILL 0x00000400l - -/* - * Uses the dwDDFX field in the DDBLTFX structure to specify the effects - * to use for the blt. - */ -#define DDBLT_DDFX 0x00000800l - -/* - * Uses the dwDDROPS field in the DDBLTFX structure to specify the ROPS - * that are not part of the Win32 API. - */ -#define DDBLT_DDROPS 0x00001000l - -/* - * Use the color key associated with the destination surface. - */ -#define DDBLT_KEYDEST 0x00002000l - -/* - * Use the dckDestColorkey field in the DDBLTFX structure as the color key - * for the destination surface. - */ -#define DDBLT_KEYDESTOVERRIDE 0x00004000l - -/* - * Use the color key associated with the source surface. - */ -#define DDBLT_KEYSRC 0x00008000l - -/* - * Use the dckSrcColorkey field in the DDBLTFX structure as the color key - * for the source surface. - */ -#define DDBLT_KEYSRCOVERRIDE 0x00010000l - -/* - * Use the dwROP field in the DDBLTFX structure for the raster operation - * for this blt. These ROPs are the same as the ones defined in the Win32 API. - */ -#define DDBLT_ROP 0x00020000l - -/* - * Use the dwRotationAngle field in the DDBLTFX structure as the angle - * (specified in 1/100th of a degree) to rotate the surface. - */ -#define DDBLT_ROTATIONANGLE 0x00040000l - -/* - * Z-buffered blt using the z-buffers attached to the source and destination - * surfaces and the dwZBufferOpCode field in the DDBLTFX structure as the - * z-buffer opcode. - */ -#define DDBLT_ZBUFFER 0x00080000l - -/* - * Z-buffered blt using the dwConstDest Zfield and the dwZBufferOpCode field - * in the DDBLTFX structure as the z-buffer and z-buffer opcode respectively - * for the destination. - */ -#define DDBLT_ZBUFFERDESTCONSTOVERRIDE 0x00100000l - -/* - * Z-buffered blt using the lpDDSDestZBuffer field and the dwZBufferOpCode - * field in the DDBLTFX structure as the z-buffer and z-buffer opcode - * respectively for the destination. - */ -#define DDBLT_ZBUFFERDESTOVERRIDE 0x00200000l - -/* - * Z-buffered blt using the dwConstSrcZ field and the dwZBufferOpCode field - * in the DDBLTFX structure as the z-buffer and z-buffer opcode respectively - * for the source. - */ -#define DDBLT_ZBUFFERSRCCONSTOVERRIDE 0x00400000l - -/* - * Z-buffered blt using the lpDDSSrcZBuffer field and the dwZBufferOpCode - * field in the DDBLTFX structure as the z-buffer and z-buffer opcode - * respectively for the source. - */ -#define DDBLT_ZBUFFERSRCOVERRIDE 0x00800000l - -/* - * wait until the device is ready to handle the blt - * this will cause blt to not return DDERR_WASSTILLDRAWING - */ -#define DDBLT_WAIT 0x01000000l - -/* - * Uses the dwFillDepth field in the DDBLTFX structure as the depth value - * to fill the destination rectangle on the destination Z-buffer surface - * with. - */ -#define DDBLT_DEPTHFILL 0x02000000l - - -/* - * Return immediately (with DDERR_WASSTILLDRAWING) if the device is not - * ready to schedule the blt at the time Blt() is called. - */ -#define DDBLT_DONOTWAIT 0x08000000l - -/* - * These flags indicate a presentation blt (i.e. a blt - * that moves surface contents from an offscreen back buffer to the primary - * surface). The driver is not allowed to "queue" more than three such blts. - * The "end" of the presentation blt is indicated, since the - * blt may be clipped, in which case the runtime will call the driver with - * several blts. All blts (even if not clipped) are tagged with DDBLT_PRESENTATION - * and the last (even if not clipped) additionally with DDBLT_LAST_PRESENTATION. - * Thus the true rule is that the driver must not schedule a DDBLT_PRESENTATION - * blt if there are 3 or more DDBLT_PRESENTLAST blts in the hardware pipe. - * If there are such blts in the pipe, the driver should return DDERR_WASSTILLDRAWING - * until the oldest queued DDBLT_LAST_PRESENTATION blts has been retired (i.e. the - * pixels have been actually written to the primary surface). Once the oldest blt - * has been retired, the driver is free to schedule the current blt. - * The goal is to provide a mechanism whereby the device's hardware queue never - * gets more than 3 frames ahead of the frames being generated by the application. - * When excessive queueing occurs, applications become unusable because the application - * visibly lags user input, and such problems make windowed interactive applications impossible. - * Some drivers may not have sufficient knowledge of their hardware's FIFO to know - * when a certain blt has been retired. Such drivers should code cautiously, and - * simply not allow any frames to be queued at all. DDBLT_LAST_PRESENTATION should cause - * such drivers to return DDERR_WASSTILLDRAWING until the accelerator is completely - * finished- exactly as if the application had called Lock on the source surface - * before calling Blt. - * In other words, the driver is allowed and encouraged to - * generate as much latency as it can, but never more than 3 frames worth. - * Implementation detail: Drivers should count blts against the SOURCE surface, not - * against the primary surface. This enables multiple parallel windowed application - * to function more optimally. - * This flag is passed only to DX8 or higher drivers. - * - * APPLICATIONS DO NOT SET THESE FLAGS. THEY ARE SET BY THE DIRECTDRAW RUNTIME. - * - */ -#define DDBLT_PRESENTATION 0x10000000l -#define DDBLT_LAST_PRESENTATION 0x20000000l - -/* - * If DDBLT_EXTENDED_FLAGS is set, then the driver should re-interpret - * other flags according to the definitions that follow. - * For example, bit 0 (0x00000001L) means DDBLT_ALPHADEST, unless - * DDBLT_EXTENDED_FLAGS is also set, in which case bit 0 means - * DDBLT_EXTENDED_LINEAR_CONTENT. - * Only DirectX9 and higher drivers will be given extended blt flags. - * Only flags explicitly mentioned here should be re-interpreted. - * All other flags retain their original meanings. - * - * List of re-interpreted flags: - * - * Bit Hex value New meaning old meaning - * --------------------------------------------------------------- - * 2 0x00000004 DDBLT_EXTENDED_LINEAR_CONTENT DDBLT_ALPHADESTNEG - * 4 0x00000010 DDBLT_EXTENDED_PRESENTATION_STRETCHFACTOR DDBLT_ALPHAEDGEBLEND - * - * - * NOTE: APPLICATIONS SHOULD NOT SET THIS FLAG. THIS FLAG IS INTENDED - * FOR USE BY THE DIRECT3D RUNTIME. - */ -#define DDBLT_EXTENDED_FLAGS 0x40000000l - -/* - * EXTENDED FLAG. SEE DEFINITION OF DDBLT_EXTENDED_FLAGS. - * This flag indidcates that the source surface contains content in a - * linear color space. The driver may perform gamma correction to the - * desktop color space (i.e. sRGB, gamma 2.2) as part of this blt. - * If the device can perform such a conversion as part of the copy, - * the driver should also set D3DCAPS3_LINEAR_TO_SRGB_PRESENTATION - * - * NOTE: APPLICATIONS SHOULD NOT SET THIS FLAG. THIS FLAG IS INTENDED - * FOR USE BY THE DIRECT3D RUNTIME. Use IDirect3DSwapChain9::Present - * and specify D3DPRESENT_LINEAR_CONTENT in order to use this functionality. - */ -#define DDBLT_EXTENDED_LINEAR_CONTENT 0x00000004l - - -/**************************************************************************** - * - * BLTFAST FLAGS - * - ****************************************************************************/ - -#define DDBLTFAST_NOCOLORKEY 0x00000000 -#define DDBLTFAST_SRCCOLORKEY 0x00000001 -#define DDBLTFAST_DESTCOLORKEY 0x00000002 -#define DDBLTFAST_WAIT 0x00000010 -#define DDBLTFAST_DONOTWAIT 0x00000020 - -/**************************************************************************** - * - * FLIP FLAGS - * - ****************************************************************************/ - -#define DDFLIP_WAIT 0x00000001L - -/* - * Indicates that the target surface contains the even field of video data. - * This flag is only valid with an overlay surface. - */ -#define DDFLIP_EVEN 0x00000002L - -/* - * Indicates that the target surface contains the odd field of video data. - * This flag is only valid with an overlay surface. - */ -#define DDFLIP_ODD 0x00000004L - -/* - * Causes DirectDraw to perform the physical flip immediately and return - * to the application. Typically, what was the front buffer but is now the back - * buffer will still be visible (depending on timing) until the next vertical - * retrace. Subsequent operations involving the two flipped surfaces will - * not check to see if the physical flip has finished (i.e. will not return - * DDERR_WASSTILLDRAWING for that reason (but may for other reasons)). - * This allows an application to perform Flips at a higher frequency than the - * monitor refresh rate, but may introduce visible artifacts. - * Only effective if DDCAPS2_FLIPNOVSYNC is set. If that bit is not set, - * DDFLIP_NOVSYNC has no effect. - */ -#define DDFLIP_NOVSYNC 0x00000008L - - -/* - * Flip Interval Flags. These flags indicate how many vertical retraces to wait between - * each flip. The default is one. DirectDraw will return DDERR_WASSTILLDRAWING for each - * surface involved in the flip until the specified number of vertical retraces has - * ocurred. Only effective if DDCAPS2_FLIPINTERVAL is set. If that bit is not set, - * DDFLIP_INTERVALn has no effect. - */ - -/* - * DirectDraw will flip on every other vertical sync - */ -#define DDFLIP_INTERVAL2 0x02000000L - - -/* - * DirectDraw will flip on every third vertical sync - */ -#define DDFLIP_INTERVAL3 0x03000000L - - -/* - * DirectDraw will flip on every fourth vertical sync - */ -#define DDFLIP_INTERVAL4 0x04000000L - -/* - * DirectDraw will flip and display a main stereo surface - */ -#define DDFLIP_STEREO 0x00000010L - -/* - * On IDirectDrawSurface7 and higher interfaces, the default is DDFLIP_WAIT. If you wish - * to override the default and use time when the accelerator is busy (as denoted by - * the DDERR_WASSTILLDRAWING return code) then use DDFLIP_DONOTWAIT. - */ -#define DDFLIP_DONOTWAIT 0x00000020L - - -/**************************************************************************** - * - * DIRECTDRAW SURFACE OVERLAY FLAGS - * - ****************************************************************************/ - -/* - * Use the alpha information in the pixel format or the alpha channel surface - * attached to the destination surface as the alpha channel for the - * destination overlay. - */ -#define DDOVER_ALPHADEST 0x00000001l - -/* - * Use the dwConstAlphaDest field in the DDOVERLAYFX structure as the - * destination alpha channel for this overlay. - */ -#define DDOVER_ALPHADESTCONSTOVERRIDE 0x00000002l - -/* - * The NEG suffix indicates that the destination surface becomes more - * transparent as the alpha value increases. - */ -#define DDOVER_ALPHADESTNEG 0x00000004l - -/* - * Use the lpDDSAlphaDest field in the DDOVERLAYFX structure as the alpha - * channel destination for this overlay. - */ -#define DDOVER_ALPHADESTSURFACEOVERRIDE 0x00000008l - -/* - * Use the dwAlphaEdgeBlend field in the DDOVERLAYFX structure as the alpha - * channel for the edges of the image that border the color key colors. - */ -#define DDOVER_ALPHAEDGEBLEND 0x00000010l - -/* - * Use the alpha information in the pixel format or the alpha channel surface - * attached to the source surface as the source alpha channel for this overlay. - */ -#define DDOVER_ALPHASRC 0x00000020l - -/* - * Use the dwConstAlphaSrc field in the DDOVERLAYFX structure as the source - * alpha channel for this overlay. - */ -#define DDOVER_ALPHASRCCONSTOVERRIDE 0x00000040l - -/* - * The NEG suffix indicates that the source surface becomes more transparent - * as the alpha value increases. - */ -#define DDOVER_ALPHASRCNEG 0x00000080l - -/* - * Use the lpDDSAlphaSrc field in the DDOVERLAYFX structure as the alpha channel - * source for this overlay. - */ -#define DDOVER_ALPHASRCSURFACEOVERRIDE 0x00000100l - -/* - * Turn this overlay off. - */ -#define DDOVER_HIDE 0x00000200l - -/* - * Use the color key associated with the destination surface. - */ -#define DDOVER_KEYDEST 0x00000400l - -/* - * Use the dckDestColorkey field in the DDOVERLAYFX structure as the color key - * for the destination surface - */ -#define DDOVER_KEYDESTOVERRIDE 0x00000800l - -/* - * Use the color key associated with the source surface. - */ -#define DDOVER_KEYSRC 0x00001000l - -/* - * Use the dckSrcColorkey field in the DDOVERLAYFX structure as the color key - * for the source surface. - */ -#define DDOVER_KEYSRCOVERRIDE 0x00002000l - -/* - * Turn this overlay on. - */ -#define DDOVER_SHOW 0x00004000l - -/* - * Add a dirty rect to an emulated overlayed surface. - */ -#define DDOVER_ADDDIRTYRECT 0x00008000l - -/* - * Redraw all dirty rects on an emulated overlayed surface. - */ -#define DDOVER_REFRESHDIRTYRECTS 0x00010000l - -/* - * Redraw the entire surface on an emulated overlayed surface. - */ -#define DDOVER_REFRESHALL 0x00020000l - - -/* - * Use the overlay FX flags to define special overlay FX - */ -#define DDOVER_DDFX 0x00080000l - -/* - * Autoflip the overlay when ever the video port autoflips - */ -#define DDOVER_AUTOFLIP 0x00100000l - -/* - * Display each field of video port data individually without - * causing any jittery artifacts - */ -#define DDOVER_BOB 0x00200000l - -/* - * Indicates that bob/weave decisions should not be overridden by other - * interfaces. - */ -#define DDOVER_OVERRIDEBOBWEAVE 0x00400000l - -/* - * Indicates that the surface memory is composed of interleaved fields. - */ -#define DDOVER_INTERLEAVED 0x00800000l - -/* - * Indicates that bob will be performed using hardware rather than - * software or emulated. - */ -#define DDOVER_BOBHARDWARE 0x01000000l - -/* - * Indicates that overlay FX structure contains valid ARGB scaling factors. - */ -#define DDOVER_ARGBSCALEFACTORS 0x02000000l - -/* - * Indicates that ARGB scaling factors can be degraded to fit driver capabilities. - */ -#define DDOVER_DEGRADEARGBSCALING 0x04000000l - - -/**************************************************************************** - * - * DIRECTDRAWSURFACE LOCK FLAGS - * - ****************************************************************************/ - -/* - * The default. Set to indicate that Lock should return a valid memory pointer - * to the top of the specified rectangle. If no rectangle is specified then a - * pointer to the top of the surface is returned. - */ -#define DDLOCK_SURFACEMEMORYPTR 0x00000000L // default - -/* - * Set to indicate that Lock should wait until it can obtain a valid memory - * pointer before returning. If this bit is set, Lock will never return - * DDERR_WASSTILLDRAWING. - */ -#define DDLOCK_WAIT 0x00000001L - -/* - * Set if an event handle is being passed to Lock. Lock will trigger the event - * when it can return the surface memory pointer requested. - */ -#define DDLOCK_EVENT 0x00000002L - -/* - * Indicates that the surface being locked will only be read from. - */ -#define DDLOCK_READONLY 0x00000010L - -/* - * Indicates that the surface being locked will only be written to - */ -#define DDLOCK_WRITEONLY 0x00000020L - - -/* - * Indicates that a system wide lock should not be taken when this surface - * is locked. This has several advantages (cursor responsiveness, ability - * to call more Windows functions, easier debugging) when locking video - * memory surfaces. However, an application specifying this flag must - * comply with a number of conditions documented in the help file. - * Furthermore, this flag cannot be specified when locking the primary. - */ -#define DDLOCK_NOSYSLOCK 0x00000800L - -/* - * Used only with Direct3D Vertex Buffer Locks. Indicates that no vertices - * that were referred to in Draw*PrimtiveVB calls since the start of the - * frame (or the last lock without this flag) will be modified during the - * lock. This can be useful when one is only appending data to the vertex - * buffer - */ -#define DDLOCK_NOOVERWRITE 0x00001000L - -/* - * Indicates that no assumptions will be made about the contents of the - * surface or vertex buffer during this lock. - * This enables two things: - * - Direct3D or the driver may provide an alternative memory - * area as the vertex buffer. This is useful when one plans to clear the - * contents of the vertex buffer and fill in new data. - * - Drivers sometimes store surface data in a re-ordered format. - * When the application locks the surface, the driver is forced to un-re-order - * the surface data before allowing the application to see the surface contents. - * This flag is a hint to the driver that it can skip the un-re-ordering process - * since the application plans to overwrite every single pixel in the surface - * or locked rectangle (and so erase any un-re-ordered pixels anyway). - * Applications should always set this flag when they intend to overwrite the entire - * surface or locked rectangle. - */ -#define DDLOCK_DISCARDCONTENTS 0x00002000L - /* - * DDLOCK_OKTOSWAP is an older, less informative name for DDLOCK_DISCARDCONTENTS - */ -#define DDLOCK_OKTOSWAP 0x00002000L - -/* - * On IDirectDrawSurface7 and higher interfaces, the default is DDLOCK_WAIT. If you wish - * to override the default and use time when the accelerator is busy (as denoted by - * the DDERR_WASSTILLDRAWING return code) then use DDLOCK_DONOTWAIT. - */ -#define DDLOCK_DONOTWAIT 0x00004000L - -/* - * This indicates volume texture lock with front and back specified. - */ -#define DDLOCK_HASVOLUMETEXTUREBOXRECT 0x00008000L - -/* - * This indicates that the driver should not update dirty rect information for this lock. - */ -#define DDLOCK_NODIRTYUPDATE 0x00010000L - - -/**************************************************************************** - * - * DIRECTDRAWSURFACE PAGELOCK FLAGS - * - ****************************************************************************/ - -/* - * No flags defined at present - */ - - -/**************************************************************************** - * - * DIRECTDRAWSURFACE PAGEUNLOCK FLAGS - * - ****************************************************************************/ - -/* - * No flags defined at present - */ - - -/**************************************************************************** - * - * DIRECTDRAWSURFACE BLT FX FLAGS - * - ****************************************************************************/ - -/* - * If stretching, use arithmetic stretching along the Y axis for this blt. - */ -#define DDBLTFX_ARITHSTRETCHY 0x00000001l - -/* - * Do this blt mirroring the surface left to right. Spin the - * surface around its y-axis. - */ -#define DDBLTFX_MIRRORLEFTRIGHT 0x00000002l - -/* - * Do this blt mirroring the surface up and down. Spin the surface - * around its x-axis. - */ -#define DDBLTFX_MIRRORUPDOWN 0x00000004l - -/* - * Schedule this blt to avoid tearing. - */ -#define DDBLTFX_NOTEARING 0x00000008l - -/* - * Do this blt rotating the surface one hundred and eighty degrees. - */ -#define DDBLTFX_ROTATE180 0x00000010l - -/* - * Do this blt rotating the surface two hundred and seventy degrees. - */ -#define DDBLTFX_ROTATE270 0x00000020l - -/* - * Do this blt rotating the surface ninety degrees. - */ -#define DDBLTFX_ROTATE90 0x00000040l - -/* - * Do this z blt using dwZBufferLow and dwZBufferHigh as range values - * specified to limit the bits copied from the source surface. - */ -#define DDBLTFX_ZBUFFERRANGE 0x00000080l - -/* - * Do this z blt adding the dwZBufferBaseDest to each of the sources z values - * before comparing it with the desting z values. - */ -#define DDBLTFX_ZBUFFERBASEDEST 0x00000100l - -/**************************************************************************** - * - * DIRECTDRAWSURFACE OVERLAY FX FLAGS - * - ****************************************************************************/ - -/* - * If stretching, use arithmetic stretching along the Y axis for this overlay. - */ -#define DDOVERFX_ARITHSTRETCHY 0x00000001l - -/* - * Mirror the overlay across the vertical axis - */ -#define DDOVERFX_MIRRORLEFTRIGHT 0x00000002l - -/* - * Mirror the overlay across the horizontal axis - */ -#define DDOVERFX_MIRRORUPDOWN 0x00000004l - -/* - * Deinterlace the overlay, if possible - */ -#define DDOVERFX_DEINTERLACE 0x00000008l - - -/**************************************************************************** - * - * DIRECTDRAW WAITFORVERTICALBLANK FLAGS - * - ****************************************************************************/ - -/* - * return when the vertical blank interval begins - */ -#define DDWAITVB_BLOCKBEGIN 0x00000001l - -/* - * set up an event to trigger when the vertical blank begins - */ -#define DDWAITVB_BLOCKBEGINEVENT 0x00000002l - -/* - * return when the vertical blank interval ends and display begins - */ -#define DDWAITVB_BLOCKEND 0x00000004l - -/**************************************************************************** - * - * DIRECTDRAW GETFLIPSTATUS FLAGS - * - ****************************************************************************/ - -/* - * is it OK to flip now? - */ -#define DDGFS_CANFLIP 0x00000001l - -/* - * is the last flip finished? - */ -#define DDGFS_ISFLIPDONE 0x00000002l - -/**************************************************************************** - * - * DIRECTDRAW GETBLTSTATUS FLAGS - * - ****************************************************************************/ - -/* - * is it OK to blt now? - */ -#define DDGBS_CANBLT 0x00000001l - -/* - * is the blt to the surface finished? - */ -#define DDGBS_ISBLTDONE 0x00000002l - - -/**************************************************************************** - * - * DIRECTDRAW ENUMOVERLAYZORDER FLAGS - * - ****************************************************************************/ - -/* - * Enumerate overlays back to front. - */ -#define DDENUMOVERLAYZ_BACKTOFRONT 0x00000000l - -/* - * Enumerate overlays front to back - */ -#define DDENUMOVERLAYZ_FRONTTOBACK 0x00000001l - -/**************************************************************************** - * - * DIRECTDRAW UPDATEOVERLAYZORDER FLAGS - * - ****************************************************************************/ - -/* - * Send overlay to front - */ -#define DDOVERZ_SENDTOFRONT 0x00000000l - -/* - * Send overlay to back - */ -#define DDOVERZ_SENDTOBACK 0x00000001l - -/* - * Move Overlay forward - */ -#define DDOVERZ_MOVEFORWARD 0x00000002l - -/* - * Move Overlay backward - */ -#define DDOVERZ_MOVEBACKWARD 0x00000003l - -/* - * Move Overlay in front of relative surface - */ -#define DDOVERZ_INSERTINFRONTOF 0x00000004l - -/* - * Move Overlay in back of relative surface - */ -#define DDOVERZ_INSERTINBACKOF 0x00000005l - - -/**************************************************************************** - * - * DIRECTDRAW SETGAMMARAMP FLAGS - * - ****************************************************************************/ - -/* - * Request calibrator to adjust the gamma ramp according to the physical - * properties of the display so that the result should appear identical - * on all systems. - */ -#define DDSGR_CALIBRATE 0x00000001L - - -/**************************************************************************** - * - * DIRECTDRAW STARTMODETEST FLAGS - * - ****************************************************************************/ - -/* - * Indicates that the mode being tested has passed - */ -#define DDSMT_ISTESTREQUIRED 0x00000001L - - -/**************************************************************************** - * - * DIRECTDRAW EVALUATEMODE FLAGS - * - ****************************************************************************/ - -/* - * Indicates that the mode being tested has passed - */ -#define DDEM_MODEPASSED 0x00000001L - -/* - * Indicates that the mode being tested has failed - */ -#define DDEM_MODEFAILED 0x00000002L - - -/*=========================================================================== - * - * - * DIRECTDRAW RETURN CODES - * - * The return values from DirectDraw Commands and Surface that return an HRESULT - * are codes from DirectDraw concerning the results of the action - * requested by DirectDraw. - * - *==========================================================================*/ - -/* - * Status is OK - * - * Issued by: DirectDraw Commands and all callbacks - */ -#define DD_OK S_OK -#define DD_FALSE S_FALSE - -/**************************************************************************** - * - * DIRECTDRAW ENUMCALLBACK RETURN VALUES - * - * EnumCallback returns are used to control the flow of the DIRECTDRAW and - * DIRECTDRAWSURFACE object enumerations. They can only be returned by - * enumeration callback routines. - * - ****************************************************************************/ - -/* - * stop the enumeration - */ -#define DDENUMRET_CANCEL 0 - -/* - * continue the enumeration - */ -#define DDENUMRET_OK 1 - -/**************************************************************************** - * - * DIRECTDRAW ERRORS - * - * Errors are represented by negative values and cannot be combined. - * - ****************************************************************************/ - -/* - * This object is already initialized - */ -#define DDERR_ALREADYINITIALIZED MAKE_DDHRESULT( 5 ) - -/* - * This surface can not be attached to the requested surface. - */ -#define DDERR_CANNOTATTACHSURFACE MAKE_DDHRESULT( 10 ) - -/* - * This surface can not be detached from the requested surface. - */ -#define DDERR_CANNOTDETACHSURFACE MAKE_DDHRESULT( 20 ) - -/* - * Support is currently not available. - */ -#define DDERR_CURRENTLYNOTAVAIL MAKE_DDHRESULT( 40 ) - -/* - * An exception was encountered while performing the requested operation - */ -#define DDERR_EXCEPTION MAKE_DDHRESULT( 55 ) - -/* - * Generic failure. - */ -#define DDERR_GENERIC E_FAIL - -/* - * Height of rectangle provided is not a multiple of reqd alignment - */ -#define DDERR_HEIGHTALIGN MAKE_DDHRESULT( 90 ) - -/* - * Unable to match primary surface creation request with existing - * primary surface. - */ -#define DDERR_INCOMPATIBLEPRIMARY MAKE_DDHRESULT( 95 ) - -/* - * One or more of the caps bits passed to the callback are incorrect. - */ -#define DDERR_INVALIDCAPS MAKE_DDHRESULT( 100 ) - -/* - * DirectDraw does not support provided Cliplist. - */ -#define DDERR_INVALIDCLIPLIST MAKE_DDHRESULT( 110 ) - -/* - * DirectDraw does not support the requested mode - */ -#define DDERR_INVALIDMODE MAKE_DDHRESULT( 120 ) - -/* - * DirectDraw received a pointer that was an invalid DIRECTDRAW object. - */ -#define DDERR_INVALIDOBJECT MAKE_DDHRESULT( 130 ) - -/* - * One or more of the parameters passed to the callback function are - * incorrect. - */ -#define DDERR_INVALIDPARAMS E_INVALIDARG - -/* - * pixel format was invalid as specified - */ -#define DDERR_INVALIDPIXELFORMAT MAKE_DDHRESULT( 145 ) - -/* - * Rectangle provided was invalid. - */ -#define DDERR_INVALIDRECT MAKE_DDHRESULT( 150 ) - -/* - * Operation could not be carried out because one or more surfaces are locked - */ -#define DDERR_LOCKEDSURFACES MAKE_DDHRESULT( 160 ) - -/* - * There is no 3D present. - */ -#define DDERR_NO3D MAKE_DDHRESULT( 170 ) - -/* - * Operation could not be carried out because there is no alpha accleration - * hardware present or available. - */ -#define DDERR_NOALPHAHW MAKE_DDHRESULT( 180 ) - -/* - * Operation could not be carried out because there is no stereo - * hardware present or available. - */ -#define DDERR_NOSTEREOHARDWARE MAKE_DDHRESULT( 181 ) - -/* - * Operation could not be carried out because there is no hardware - * present which supports stereo surfaces - */ -#define DDERR_NOSURFACELEFT MAKE_DDHRESULT( 182 ) - - - -/* - * no clip list available - */ -#define DDERR_NOCLIPLIST MAKE_DDHRESULT( 205 ) - -/* - * Operation could not be carried out because there is no color conversion - * hardware present or available. - */ -#define DDERR_NOCOLORCONVHW MAKE_DDHRESULT( 210 ) - -/* - * Create function called without DirectDraw object method SetCooperativeLevel - * being called. - */ -#define DDERR_NOCOOPERATIVELEVELSET MAKE_DDHRESULT( 212 ) - -/* - * Surface doesn't currently have a color key - */ -#define DDERR_NOCOLORKEY MAKE_DDHRESULT( 215 ) - -/* - * Operation could not be carried out because there is no hardware support - * of the dest color key. - */ -#define DDERR_NOCOLORKEYHW MAKE_DDHRESULT( 220 ) - -/* - * No DirectDraw support possible with current display driver - */ -#define DDERR_NODIRECTDRAWSUPPORT MAKE_DDHRESULT( 222 ) - -/* - * Operation requires the application to have exclusive mode but the - * application does not have exclusive mode. - */ -#define DDERR_NOEXCLUSIVEMODE MAKE_DDHRESULT( 225 ) - -/* - * Flipping visible surfaces is not supported. - */ -#define DDERR_NOFLIPHW MAKE_DDHRESULT( 230 ) - -/* - * There is no GDI present. - */ -#define DDERR_NOGDI MAKE_DDHRESULT( 240 ) - -/* - * Operation could not be carried out because there is no hardware present - * or available. - */ -#define DDERR_NOMIRRORHW MAKE_DDHRESULT( 250 ) - -/* - * Requested item was not found - */ -#define DDERR_NOTFOUND MAKE_DDHRESULT( 255 ) - -/* - * Operation could not be carried out because there is no overlay hardware - * present or available. - */ -#define DDERR_NOOVERLAYHW MAKE_DDHRESULT( 260 ) - -/* - * Operation could not be carried out because the source and destination - * rectangles are on the same surface and overlap each other. - */ -#define DDERR_OVERLAPPINGRECTS MAKE_DDHRESULT( 270 ) - -/* - * Operation could not be carried out because there is no appropriate raster - * op hardware present or available. - */ -#define DDERR_NORASTEROPHW MAKE_DDHRESULT( 280 ) - -/* - * Operation could not be carried out because there is no rotation hardware - * present or available. - */ -#define DDERR_NOROTATIONHW MAKE_DDHRESULT( 290 ) - -/* - * Operation could not be carried out because there is no hardware support - * for stretching - */ -#define DDERR_NOSTRETCHHW MAKE_DDHRESULT( 310 ) - -/* - * DirectDrawSurface is not in 4 bit color palette and the requested operation - * requires 4 bit color palette. - */ -#define DDERR_NOT4BITCOLOR MAKE_DDHRESULT( 316 ) - -/* - * DirectDrawSurface is not in 4 bit color index palette and the requested - * operation requires 4 bit color index palette. - */ -#define DDERR_NOT4BITCOLORINDEX MAKE_DDHRESULT( 317 ) - -/* - * DirectDraw Surface is not in 8 bit color mode and the requested operation - * requires 8 bit color. - */ -#define DDERR_NOT8BITCOLOR MAKE_DDHRESULT( 320 ) - -/* - * Operation could not be carried out because there is no texture mapping - * hardware present or available. - */ -#define DDERR_NOTEXTUREHW MAKE_DDHRESULT( 330 ) - -/* - * Operation could not be carried out because there is no hardware support - * for vertical blank synchronized operations. - */ -#define DDERR_NOVSYNCHW MAKE_DDHRESULT( 335 ) - -/* - * Operation could not be carried out because there is no hardware support - * for zbuffer blting. - */ -#define DDERR_NOZBUFFERHW MAKE_DDHRESULT( 340 ) - -/* - * Overlay surfaces could not be z layered based on their BltOrder because - * the hardware does not support z layering of overlays. - */ -#define DDERR_NOZOVERLAYHW MAKE_DDHRESULT( 350 ) - -/* - * The hardware needed for the requested operation has already been - * allocated. - */ -#define DDERR_OUTOFCAPS MAKE_DDHRESULT( 360 ) - -/* - * DirectDraw does not have enough memory to perform the operation. - */ -#define DDERR_OUTOFMEMORY E_OUTOFMEMORY - -/* - * DirectDraw does not have enough memory to perform the operation. - */ -#define DDERR_OUTOFVIDEOMEMORY MAKE_DDHRESULT( 380 ) - -/* - * hardware does not support clipped overlays - */ -#define DDERR_OVERLAYCANTCLIP MAKE_DDHRESULT( 382 ) - -/* - * Can only have ony color key active at one time for overlays - */ -#define DDERR_OVERLAYCOLORKEYONLYONEACTIVE MAKE_DDHRESULT( 384 ) - -/* - * Access to this palette is being refused because the palette is already - * locked by another thread. - */ -#define DDERR_PALETTEBUSY MAKE_DDHRESULT( 387 ) - -/* - * No src color key specified for this operation. - */ -#define DDERR_COLORKEYNOTSET MAKE_DDHRESULT( 400 ) - -/* - * This surface is already attached to the surface it is being attached to. - */ -#define DDERR_SURFACEALREADYATTACHED MAKE_DDHRESULT( 410 ) - -/* - * This surface is already a dependency of the surface it is being made a - * dependency of. - */ -#define DDERR_SURFACEALREADYDEPENDENT MAKE_DDHRESULT( 420 ) - -/* - * Access to this surface is being refused because the surface is already - * locked by another thread. - */ -#define DDERR_SURFACEBUSY MAKE_DDHRESULT( 430 ) - -/* - * Access to this surface is being refused because no driver exists - * which can supply a pointer to the surface. - * This is most likely to happen when attempting to lock the primary - * surface when no DCI provider is present. - * Will also happen on attempts to lock an optimized surface. - */ -#define DDERR_CANTLOCKSURFACE MAKE_DDHRESULT( 435 ) - -/* - * Access to Surface refused because Surface is obscured. - */ -#define DDERR_SURFACEISOBSCURED MAKE_DDHRESULT( 440 ) - -/* - * Access to this surface is being refused because the surface is gone. - * The DIRECTDRAWSURFACE object representing this surface should - * have Restore called on it. - */ -#define DDERR_SURFACELOST MAKE_DDHRESULT( 450 ) - -/* - * The requested surface is not attached. - */ -#define DDERR_SURFACENOTATTACHED MAKE_DDHRESULT( 460 ) - -/* - * Height requested by DirectDraw is too large. - */ -#define DDERR_TOOBIGHEIGHT MAKE_DDHRESULT( 470 ) - -/* - * Size requested by DirectDraw is too large -- The individual height and - * width are OK. - */ -#define DDERR_TOOBIGSIZE MAKE_DDHRESULT( 480 ) - -/* - * Width requested by DirectDraw is too large. - */ -#define DDERR_TOOBIGWIDTH MAKE_DDHRESULT( 490 ) - -/* - * Action not supported. - */ -#define DDERR_UNSUPPORTED E_NOTIMPL - -/* - * Pixel format requested is unsupported by DirectDraw - */ -#define DDERR_UNSUPPORTEDFORMAT MAKE_DDHRESULT( 510 ) - -/* - * Bitmask in the pixel format requested is unsupported by DirectDraw - */ -#define DDERR_UNSUPPORTEDMASK MAKE_DDHRESULT( 520 ) - -/* - * The specified stream contains invalid data - */ -#define DDERR_INVALIDSTREAM MAKE_DDHRESULT( 521 ) - -/* - * vertical blank is in progress - */ -#define DDERR_VERTICALBLANKINPROGRESS MAKE_DDHRESULT( 537 ) - -/* - * Informs DirectDraw that the previous Blt which is transfering information - * to or from this Surface is incomplete. - */ -#define DDERR_WASSTILLDRAWING MAKE_DDHRESULT( 540 ) - - -/* - * The specified surface type requires specification of the COMPLEX flag - */ -#define DDERR_DDSCAPSCOMPLEXREQUIRED MAKE_DDHRESULT( 542 ) - - -/* - * Rectangle provided was not horizontally aligned on reqd. boundary - */ -#define DDERR_XALIGN MAKE_DDHRESULT( 560 ) - -/* - * The GUID passed to DirectDrawCreate is not a valid DirectDraw driver - * identifier. - */ -#define DDERR_INVALIDDIRECTDRAWGUID MAKE_DDHRESULT( 561 ) - -/* - * A DirectDraw object representing this driver has already been created - * for this process. - */ -#define DDERR_DIRECTDRAWALREADYCREATED MAKE_DDHRESULT( 562 ) - -/* - * A hardware only DirectDraw object creation was attempted but the driver - * did not support any hardware. - */ -#define DDERR_NODIRECTDRAWHW MAKE_DDHRESULT( 563 ) - -/* - * this process already has created a primary surface - */ -#define DDERR_PRIMARYSURFACEALREADYEXISTS MAKE_DDHRESULT( 564 ) - -/* - * software emulation not available. - */ -#define DDERR_NOEMULATION MAKE_DDHRESULT( 565 ) - -/* - * region passed to Clipper::GetClipList is too small. - */ -#define DDERR_REGIONTOOSMALL MAKE_DDHRESULT( 566 ) - -/* - * an attempt was made to set a clip list for a clipper objec that - * is already monitoring an hwnd. - */ -#define DDERR_CLIPPERISUSINGHWND MAKE_DDHRESULT( 567 ) - -/* - * No clipper object attached to surface object - */ -#define DDERR_NOCLIPPERATTACHED MAKE_DDHRESULT( 568 ) - -/* - * Clipper notification requires an HWND or - * no HWND has previously been set as the CooperativeLevel HWND. - */ -#define DDERR_NOHWND MAKE_DDHRESULT( 569 ) - -/* - * HWND used by DirectDraw CooperativeLevel has been subclassed, - * this prevents DirectDraw from restoring state. - */ -#define DDERR_HWNDSUBCLASSED MAKE_DDHRESULT( 570 ) - -/* - * The CooperativeLevel HWND has already been set. - * It can not be reset while the process has surfaces or palettes created. - */ -#define DDERR_HWNDALREADYSET MAKE_DDHRESULT( 571 ) - -/* - * No palette object attached to this surface. - */ -#define DDERR_NOPALETTEATTACHED MAKE_DDHRESULT( 572 ) - -/* - * No hardware support for 16 or 256 color palettes. - */ -#define DDERR_NOPALETTEHW MAKE_DDHRESULT( 573 ) - -/* - * If a clipper object is attached to the source surface passed into a - * BltFast call. - */ -#define DDERR_BLTFASTCANTCLIP MAKE_DDHRESULT( 574 ) - -/* - * No blter. - */ -#define DDERR_NOBLTHW MAKE_DDHRESULT( 575 ) - -/* - * No DirectDraw ROP hardware. - */ -#define DDERR_NODDROPSHW MAKE_DDHRESULT( 576 ) - -/* - * returned when GetOverlayPosition is called on a hidden overlay - */ -#define DDERR_OVERLAYNOTVISIBLE MAKE_DDHRESULT( 577 ) - -/* - * returned when GetOverlayPosition is called on a overlay that UpdateOverlay - * has never been called on to establish a destionation. - */ -#define DDERR_NOOVERLAYDEST MAKE_DDHRESULT( 578 ) - -/* - * returned when the position of the overlay on the destionation is no longer - * legal for that destionation. - */ -#define DDERR_INVALIDPOSITION MAKE_DDHRESULT( 579 ) - -/* - * returned when an overlay member is called for a non-overlay surface - */ -#define DDERR_NOTAOVERLAYSURFACE MAKE_DDHRESULT( 580 ) - -/* - * An attempt was made to set the cooperative level when it was already - * set to exclusive. - */ -#define DDERR_EXCLUSIVEMODEALREADYSET MAKE_DDHRESULT( 581 ) - -/* - * An attempt has been made to flip a surface that is not flippable. - */ -#define DDERR_NOTFLIPPABLE MAKE_DDHRESULT( 582 ) - -/* - * Can't duplicate primary & 3D surfaces, or surfaces that are implicitly - * created. - */ -#define DDERR_CANTDUPLICATE MAKE_DDHRESULT( 583 ) - -/* - * Surface was not locked. An attempt to unlock a surface that was not - * locked at all, or by this process, has been attempted. - */ -#define DDERR_NOTLOCKED MAKE_DDHRESULT( 584 ) - -/* - * Windows can not create any more DCs, or a DC was requested for a paltte-indexed - * surface when the surface had no palette AND the display mode was not palette-indexed - * (in this case DirectDraw cannot select a proper palette into the DC) - */ -#define DDERR_CANTCREATEDC MAKE_DDHRESULT( 585 ) - -/* - * No DC was ever created for this surface. - */ -#define DDERR_NODC MAKE_DDHRESULT( 586 ) - -/* - * This surface can not be restored because it was created in a different - * mode. - */ -#define DDERR_WRONGMODE MAKE_DDHRESULT( 587 ) - -/* - * This surface can not be restored because it is an implicitly created - * surface. - */ -#define DDERR_IMPLICITLYCREATED MAKE_DDHRESULT( 588 ) - -/* - * The surface being used is not a palette-based surface - */ -#define DDERR_NOTPALETTIZED MAKE_DDHRESULT( 589 ) - - -/* - * The display is currently in an unsupported mode - */ -#define DDERR_UNSUPPORTEDMODE MAKE_DDHRESULT( 590 ) - -/* - * Operation could not be carried out because there is no mip-map - * texture mapping hardware present or available. - */ -#define DDERR_NOMIPMAPHW MAKE_DDHRESULT( 591 ) - -/* - * The requested action could not be performed because the surface was of - * the wrong type. - */ -#define DDERR_INVALIDSURFACETYPE MAKE_DDHRESULT( 592 ) - - -/* - * Device does not support optimized surfaces, therefore no video memory optimized surfaces - */ -#define DDERR_NOOPTIMIZEHW MAKE_DDHRESULT( 600 ) - -/* - * Surface is an optimized surface, but has not yet been allocated any memory - */ -#define DDERR_NOTLOADED MAKE_DDHRESULT( 601 ) - -/* - * Attempt was made to create or set a device window without first setting - * the focus window - */ -#define DDERR_NOFOCUSWINDOW MAKE_DDHRESULT( 602 ) - -/* - * Attempt was made to set a palette on a mipmap sublevel - */ -#define DDERR_NOTONMIPMAPSUBLEVEL MAKE_DDHRESULT( 603 ) - -/* - * A DC has already been returned for this surface. Only one DC can be - * retrieved per surface. - */ -#define DDERR_DCALREADYCREATED MAKE_DDHRESULT( 620 ) - -/* - * An attempt was made to allocate non-local video memory from a device - * that does not support non-local video memory. - */ -#define DDERR_NONONLOCALVIDMEM MAKE_DDHRESULT( 630 ) - -/* - * The attempt to page lock a surface failed. - */ -#define DDERR_CANTPAGELOCK MAKE_DDHRESULT( 640 ) - - -/* - * The attempt to page unlock a surface failed. - */ -#define DDERR_CANTPAGEUNLOCK MAKE_DDHRESULT( 660 ) - -/* - * An attempt was made to page unlock a surface with no outstanding page locks. - */ -#define DDERR_NOTPAGELOCKED MAKE_DDHRESULT( 680 ) - -/* - * There is more data available than the specified buffer size could hold - */ -#define DDERR_MOREDATA MAKE_DDHRESULT( 690 ) - -/* - * The data has expired and is therefore no longer valid. - */ -#define DDERR_EXPIRED MAKE_DDHRESULT( 691 ) - -/* - * The mode test has finished executing. - */ -#define DDERR_TESTFINISHED MAKE_DDHRESULT( 692 ) - -/* - * The mode test has switched to a new mode. - */ -#define DDERR_NEWMODE MAKE_DDHRESULT( 693 ) - -/* - * D3D has not yet been initialized. - */ -#define DDERR_D3DNOTINITIALIZED MAKE_DDHRESULT( 694 ) - -/* - * The video port is not active - */ -#define DDERR_VIDEONOTACTIVE MAKE_DDHRESULT( 695 ) - -/* - * The monitor does not have EDID data. - */ -#define DDERR_NOMONITORINFORMATION MAKE_DDHRESULT( 696 ) - -/* - * The driver does not enumerate display mode refresh rates. - */ -#define DDERR_NODRIVERSUPPORT MAKE_DDHRESULT( 697 ) - -/* - * Surfaces created by one direct draw device cannot be used directly by - * another direct draw device. - */ -#define DDERR_DEVICEDOESNTOWNSURFACE MAKE_DDHRESULT( 699 ) - - - -/* - * An attempt was made to invoke an interface member of a DirectDraw object - * created by CoCreateInstance() before it was initialized. - */ -#define DDERR_NOTINITIALIZED CO_E_NOTINITIALIZED - - -/* Alpha bit depth constants */ - - -#ifdef __cplusplus -}; -#endif - -#ifdef ENABLE_NAMELESS_UNION_PRAGMA -#pragma warning(default:4201) -#endif - -#endif //__DDRAW_INCLUDED__ - - +/*==========================================================================; + * + * Copyright (C) Microsoft Corporation. All Rights Reserved. + * + * File: ddraw.h + * Content: DirectDraw include file + * + ***************************************************************************/ + +#ifndef __DDRAW_INCLUDED__ +#define __DDRAW_INCLUDED__ + +//Disable the nameless union warning when building internally +#undef ENABLE_NAMELESS_UNION_PRAGMA +#ifdef DIRECTX_REDIST +#define ENABLE_NAMELESS_UNION_PRAGMA +#endif + +#ifdef ENABLE_NAMELESS_UNION_PRAGMA +#pragma warning(disable:4201) +#endif + +/* + * If you wish an application built against the newest version of DirectDraw + * to run against an older DirectDraw run time then define DIRECTDRAW_VERSION + * to be the earlies version of DirectDraw you wish to run against. For, + * example if you wish an application to run against a DX 3 runtime define + * DIRECTDRAW_VERSION to be 0x0300. + */ +#ifndef DIRECTDRAW_VERSION +#define DIRECTDRAW_VERSION 0x0700 +#endif /* DIRECTDRAW_VERSION */ + +#if defined( _WIN32 ) && !defined( _NO_COM ) +#define COM_NO_WINDOWS_H +#include +#else +#define IUnknown void +#if !defined( NT_BUILD_ENVIRONMENT ) && !defined(WINNT) + #define CO_E_NOTINITIALIZED 0x800401F0L +#endif +#endif + +#define _FACDD 0x876 +#define MAKE_DDHRESULT( code ) MAKE_HRESULT( 1, _FACDD, code ) + +#ifdef __cplusplus +extern "C" { +#endif + +// +// For compilers that don't support nameless unions, do a +// +// #define NONAMELESSUNION +// +// before #include +// +#ifndef DUMMYUNIONNAMEN +#if defined(__cplusplus) || !defined(NONAMELESSUNION) +#define DUMMYUNIONNAMEN(n) +#else +#define DUMMYUNIONNAMEN(n) u##n +#endif +#endif + +#ifndef MAKEFOURCC + #define MAKEFOURCC(ch0, ch1, ch2, ch3) \ + ((DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8) | \ + ((DWORD)(BYTE)(ch2) << 16) | ((DWORD)(BYTE)(ch3) << 24 )) +#endif //defined(MAKEFOURCC) + +/* + * FOURCC codes for DX compressed-texture pixel formats + */ +#define FOURCC_DXT1 (MAKEFOURCC('D','X','T','1')) +#define FOURCC_DXT2 (MAKEFOURCC('D','X','T','2')) +#define FOURCC_DXT3 (MAKEFOURCC('D','X','T','3')) +#define FOURCC_DXT4 (MAKEFOURCC('D','X','T','4')) +#define FOURCC_DXT5 (MAKEFOURCC('D','X','T','5')) + +/* + * GUIDS used by DirectDraw objects + */ +#if defined( _WIN32 ) && !defined( _NO_COM ) + +DEFINE_GUID( CLSID_DirectDraw, 0xD7B70EE0,0x4340,0x11CF,0xB0,0x63,0x00,0x20,0xAF,0xC2,0xCD,0x35 ); +DEFINE_GUID( CLSID_DirectDraw7, 0x3c305196,0x50db,0x11d3,0x9c,0xfe,0x00,0xc0,0x4f,0xd9,0x30,0xc5 ); +DEFINE_GUID( CLSID_DirectDrawClipper, 0x593817A0,0x7DB3,0x11CF,0xA2,0xDE,0x00,0xAA,0x00,0xb9,0x33,0x56 ); +DEFINE_GUID( IID_IDirectDraw, 0x6C14DB80,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60 ); +DEFINE_GUID( IID_IDirectDraw2, 0xB3A6F3E0,0x2B43,0x11CF,0xA2,0xDE,0x00,0xAA,0x00,0xB9,0x33,0x56 ); +DEFINE_GUID( IID_IDirectDraw4, 0x9c59509a,0x39bd,0x11d1,0x8c,0x4a,0x00,0xc0,0x4f,0xd9,0x30,0xc5 ); +DEFINE_GUID( IID_IDirectDraw7, 0x15e65ec0,0x3b9c,0x11d2,0xb9,0x2f,0x00,0x60,0x97,0x97,0xea,0x5b ); +DEFINE_GUID( IID_IDirectDrawSurface, 0x6C14DB81,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60 ); +DEFINE_GUID( IID_IDirectDrawSurface2, 0x57805885,0x6eec,0x11cf,0x94,0x41,0xa8,0x23,0x03,0xc1,0x0e,0x27 ); +DEFINE_GUID( IID_IDirectDrawSurface3, 0xDA044E00,0x69B2,0x11D0,0xA1,0xD5,0x00,0xAA,0x00,0xB8,0xDF,0xBB ); +DEFINE_GUID( IID_IDirectDrawSurface4, 0x0B2B8630,0xAD35,0x11D0,0x8E,0xA6,0x00,0x60,0x97,0x97,0xEA,0x5B ); +DEFINE_GUID( IID_IDirectDrawSurface7, 0x06675a80,0x3b9b,0x11d2,0xb9,0x2f,0x00,0x60,0x97,0x97,0xea,0x5b ); +DEFINE_GUID( IID_IDirectDrawPalette, 0x6C14DB84,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60 ); +DEFINE_GUID( IID_IDirectDrawClipper, 0x6C14DB85,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60 ); +DEFINE_GUID( IID_IDirectDrawColorControl, 0x4B9F0EE0,0x0D7E,0x11D0,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8 ); +DEFINE_GUID( IID_IDirectDrawGammaControl, 0x69C11C3E,0xB46B,0x11D1,0xAD,0x7A,0x00,0xC0,0x4F,0xC2,0x9B,0x4E ); + +#endif + +/*============================================================================ + * + * DirectDraw Structures + * + * Various structures used to invoke DirectDraw. + * + *==========================================================================*/ + +struct IDirectDraw; +struct IDirectDrawSurface; +struct IDirectDrawPalette; +struct IDirectDrawClipper; + +typedef struct IDirectDraw FAR *LPDIRECTDRAW; +typedef struct IDirectDraw2 FAR *LPDIRECTDRAW2; +typedef struct IDirectDraw4 FAR *LPDIRECTDRAW4; +typedef struct IDirectDraw7 FAR *LPDIRECTDRAW7; +typedef struct IDirectDrawSurface FAR *LPDIRECTDRAWSURFACE; +typedef struct IDirectDrawSurface2 FAR *LPDIRECTDRAWSURFACE2; +typedef struct IDirectDrawSurface3 FAR *LPDIRECTDRAWSURFACE3; +typedef struct IDirectDrawSurface4 FAR *LPDIRECTDRAWSURFACE4; +typedef struct IDirectDrawSurface7 FAR *LPDIRECTDRAWSURFACE7; +typedef struct IDirectDrawPalette FAR *LPDIRECTDRAWPALETTE; +typedef struct IDirectDrawClipper FAR *LPDIRECTDRAWCLIPPER; +typedef struct IDirectDrawColorControl FAR *LPDIRECTDRAWCOLORCONTROL; +typedef struct IDirectDrawGammaControl FAR *LPDIRECTDRAWGAMMACONTROL; + +typedef struct _DDFXROP FAR *LPDDFXROP; +typedef struct _DDSURFACEDESC FAR *LPDDSURFACEDESC; +typedef struct _DDSURFACEDESC2 FAR *LPDDSURFACEDESC2; +typedef struct _DDCOLORCONTROL FAR *LPDDCOLORCONTROL; + +/* + * API's + */ +#if (defined (WIN32) || defined( _WIN32 ) ) && !defined( _NO_COM ) +//#if defined( _WIN32 ) && !defined( _NO_ENUM ) + typedef BOOL (FAR PASCAL * LPDDENUMCALLBACKA)(GUID FAR *, LPSTR, LPSTR, LPVOID); + typedef BOOL (FAR PASCAL * LPDDENUMCALLBACKW)(GUID FAR *, LPWSTR, LPWSTR, LPVOID); + extern HRESULT WINAPI DirectDrawEnumerateW( LPDDENUMCALLBACKW lpCallback, LPVOID lpContext ); + extern HRESULT WINAPI DirectDrawEnumerateA( LPDDENUMCALLBACKA lpCallback, LPVOID lpContext ); + /* + * Protect against old SDKs + */ + #if !defined(HMONITOR_DECLARED) && (WINVER < 0x0500) + #define HMONITOR_DECLARED + DECLARE_HANDLE(HMONITOR); + #endif + typedef BOOL (FAR PASCAL * LPDDENUMCALLBACKEXA)(GUID FAR *, LPSTR, LPSTR, LPVOID, HMONITOR); + typedef BOOL (FAR PASCAL * LPDDENUMCALLBACKEXW)(GUID FAR *, LPWSTR, LPWSTR, LPVOID, HMONITOR); + extern HRESULT WINAPI DirectDrawEnumerateExW( LPDDENUMCALLBACKEXW lpCallback, LPVOID lpContext, DWORD dwFlags); + extern HRESULT WINAPI DirectDrawEnumerateExA( LPDDENUMCALLBACKEXA lpCallback, LPVOID lpContext, DWORD dwFlags); + typedef HRESULT (WINAPI * LPDIRECTDRAWENUMERATEEXA)( LPDDENUMCALLBACKEXA lpCallback, LPVOID lpContext, DWORD dwFlags); + typedef HRESULT (WINAPI * LPDIRECTDRAWENUMERATEEXW)( LPDDENUMCALLBACKEXW lpCallback, LPVOID lpContext, DWORD dwFlags); + + #ifdef UNICODE + typedef LPDDENUMCALLBACKW LPDDENUMCALLBACK; + #define DirectDrawEnumerate DirectDrawEnumerateW + typedef LPDDENUMCALLBACKEXW LPDDENUMCALLBACKEX; + typedef LPDIRECTDRAWENUMERATEEXW LPDIRECTDRAWENUMERATEEX; + #define DirectDrawEnumerateEx DirectDrawEnumerateExW + #else + typedef LPDDENUMCALLBACKA LPDDENUMCALLBACK; + #define DirectDrawEnumerate DirectDrawEnumerateA + typedef LPDDENUMCALLBACKEXA LPDDENUMCALLBACKEX; + typedef LPDIRECTDRAWENUMERATEEXA LPDIRECTDRAWENUMERATEEX; + #define DirectDrawEnumerateEx DirectDrawEnumerateExA + #endif + extern HRESULT WINAPI DirectDrawCreate( GUID FAR *lpGUID, LPDIRECTDRAW FAR *lplpDD, IUnknown FAR *pUnkOuter ); + extern HRESULT WINAPI DirectDrawCreateEx( GUID FAR * lpGuid, LPVOID *lplpDD, REFIID iid,IUnknown FAR *pUnkOuter ); + extern HRESULT WINAPI DirectDrawCreateClipper( DWORD dwFlags, LPDIRECTDRAWCLIPPER FAR *lplpDDClipper, IUnknown FAR *pUnkOuter ); +#endif +/* + * Flags for DirectDrawEnumerateEx + * DirectDrawEnumerateEx supercedes DirectDrawEnumerate. You must use GetProcAddress to + * obtain a function pointer (of type LPDIRECTDRAWENUMERATEEX) to DirectDrawEnumerateEx. + * By default, only the primary display device is enumerated. + * DirectDrawEnumerate is equivalent to DirectDrawEnumerate(,,DDENUM_NONDISPLAYDEVICES) + */ + +/* + * This flag causes enumeration of any GDI display devices which are part of + * the Windows Desktop + */ +#define DDENUM_ATTACHEDSECONDARYDEVICES 0x00000001L + +/* + * This flag causes enumeration of any GDI display devices which are not + * part of the Windows Desktop + */ +#define DDENUM_DETACHEDSECONDARYDEVICES 0x00000002L + +/* + * This flag causes enumeration of non-display devices + */ +#define DDENUM_NONDISPLAYDEVICES 0x00000004L + + +#define REGSTR_KEY_DDHW_DESCRIPTION "Description" +#define REGSTR_KEY_DDHW_DRIVERNAME "DriverName" +#define REGSTR_PATH_DDHW "Hardware\\DirectDrawDrivers" + +#define DDCREATE_HARDWAREONLY 0x00000001l +#define DDCREATE_EMULATIONONLY 0x00000002l + +#if defined(WINNT) || !defined(WIN32) +typedef long HRESULT; +#endif + +//#ifndef WINNT +typedef HRESULT (FAR PASCAL * LPDDENUMMODESCALLBACK)(LPDDSURFACEDESC, LPVOID); +typedef HRESULT (FAR PASCAL * LPDDENUMMODESCALLBACK2)(LPDDSURFACEDESC2, LPVOID); +typedef HRESULT (FAR PASCAL * LPDDENUMSURFACESCALLBACK)(LPDIRECTDRAWSURFACE, LPDDSURFACEDESC, LPVOID); +typedef HRESULT (FAR PASCAL * LPDDENUMSURFACESCALLBACK2)(LPDIRECTDRAWSURFACE4, LPDDSURFACEDESC2, LPVOID); +typedef HRESULT (FAR PASCAL * LPDDENUMSURFACESCALLBACK7)(LPDIRECTDRAWSURFACE7, LPDDSURFACEDESC2, LPVOID); +//#endif + +/* + * Generic pixel format with 8-bit RGB and alpha components + */ +typedef struct _DDARGB +{ + BYTE blue; + BYTE green; + BYTE red; + BYTE alpha; +} DDARGB; + +typedef DDARGB FAR *LPDDARGB; + +/* + * This version of the structure remains for backwards source compatibility. + * The DDARGB structure is the one that should be used for all DirectDraw APIs. + */ +typedef struct _DDRGBA +{ + BYTE red; + BYTE green; + BYTE blue; + BYTE alpha; +} DDRGBA; + +typedef DDRGBA FAR *LPDDRGBA; + + +/* + * DDCOLORKEY + */ +typedef struct _DDCOLORKEY +{ + DWORD dwColorSpaceLowValue; // low boundary of color space that is to + // be treated as Color Key, inclusive + DWORD dwColorSpaceHighValue; // high boundary of color space that is + // to be treated as Color Key, inclusive +} DDCOLORKEY; + +typedef DDCOLORKEY FAR* LPDDCOLORKEY; + +/* + * DDBLTFX + * Used to pass override information to the DIRECTDRAWSURFACE callback Blt. + */ +typedef struct _DDBLTFX +{ + DWORD dwSize; // size of structure + DWORD dwDDFX; // FX operations + DWORD dwROP; // Win32 raster operations + DWORD dwDDROP; // Raster operations new for DirectDraw + DWORD dwRotationAngle; // Rotation angle for blt + DWORD dwZBufferOpCode; // ZBuffer compares + DWORD dwZBufferLow; // Low limit of Z buffer + DWORD dwZBufferHigh; // High limit of Z buffer + DWORD dwZBufferBaseDest; // Destination base value + DWORD dwZDestConstBitDepth; // Bit depth used to specify Z constant for destination + union + { + DWORD dwZDestConst; // Constant to use as Z buffer for dest + LPDIRECTDRAWSURFACE lpDDSZBufferDest; // Surface to use as Z buffer for dest + } DUMMYUNIONNAMEN(1); + DWORD dwZSrcConstBitDepth; // Bit depth used to specify Z constant for source + union + { + DWORD dwZSrcConst; // Constant to use as Z buffer for src + LPDIRECTDRAWSURFACE lpDDSZBufferSrc; // Surface to use as Z buffer for src + } DUMMYUNIONNAMEN(2); + DWORD dwAlphaEdgeBlendBitDepth; // Bit depth used to specify constant for alpha edge blend + DWORD dwAlphaEdgeBlend; // Alpha for edge blending + DWORD dwReserved; + DWORD dwAlphaDestConstBitDepth; // Bit depth used to specify alpha constant for destination + union + { + DWORD dwAlphaDestConst; // Constant to use as Alpha Channel + LPDIRECTDRAWSURFACE lpDDSAlphaDest; // Surface to use as Alpha Channel + } DUMMYUNIONNAMEN(3); + DWORD dwAlphaSrcConstBitDepth; // Bit depth used to specify alpha constant for source + union + { + DWORD dwAlphaSrcConst; // Constant to use as Alpha Channel + LPDIRECTDRAWSURFACE lpDDSAlphaSrc; // Surface to use as Alpha Channel + } DUMMYUNIONNAMEN(4); + union + { + DWORD dwFillColor; // color in RGB or Palettized + DWORD dwFillDepth; // depth value for z-buffer + DWORD dwFillPixel; // pixel value for RGBA or RGBZ + LPDIRECTDRAWSURFACE lpDDSPattern; // Surface to use as pattern + } DUMMYUNIONNAMEN(5); + DDCOLORKEY ddckDestColorkey; // DestColorkey override + DDCOLORKEY ddckSrcColorkey; // SrcColorkey override +} DDBLTFX; + +typedef DDBLTFX FAR* LPDDBLTFX; + + + +/* + * DDSCAPS + */ +typedef struct _DDSCAPS +{ + DWORD dwCaps; // capabilities of surface wanted +} DDSCAPS; + +typedef DDSCAPS FAR* LPDDSCAPS; + + +/* + * DDOSCAPS + */ +typedef struct _DDOSCAPS +{ + DWORD dwCaps; // capabilities of surface wanted +} DDOSCAPS; + +typedef DDOSCAPS FAR* LPDDOSCAPS; + +/* + * This structure is used internally by DirectDraw. + */ +typedef struct _DDSCAPSEX +{ + DWORD dwCaps2; + DWORD dwCaps3; + union + { + DWORD dwCaps4; + DWORD dwVolumeDepth; + } DUMMYUNIONNAMEN(1); +} DDSCAPSEX, FAR * LPDDSCAPSEX; + +/* + * DDSCAPS2 + */ +typedef struct _DDSCAPS2 +{ + DWORD dwCaps; // capabilities of surface wanted + DWORD dwCaps2; + DWORD dwCaps3; + union + { + DWORD dwCaps4; + DWORD dwVolumeDepth; + } DUMMYUNIONNAMEN(1); +} DDSCAPS2; + +typedef DDSCAPS2 FAR* LPDDSCAPS2; + +/* + * DDCAPS + */ +#define DD_ROP_SPACE (256/32) // space required to store ROP array +/* + * NOTE: Our choosen structure number scheme is to append a single digit to + * the end of the structure giving the version that structure is associated + * with. + */ + +/* + * This structure represents the DDCAPS structure released in DirectDraw 1.0. It is used internally + * by DirectDraw to interpret caps passed into ddraw by drivers written prior to the release of DirectDraw 2.0. + * New applications should use the DDCAPS structure defined below. + */ +typedef struct _DDCAPS_DX1 +{ + DWORD dwSize; // size of the DDDRIVERCAPS structure + DWORD dwCaps; // driver specific capabilities + DWORD dwCaps2; // more driver specific capabilites + DWORD dwCKeyCaps; // color key capabilities of the surface + DWORD dwFXCaps; // driver specific stretching and effects capabilites + DWORD dwFXAlphaCaps; // alpha driver specific capabilities + DWORD dwPalCaps; // palette capabilities + DWORD dwSVCaps; // stereo vision capabilities + DWORD dwAlphaBltConstBitDepths; // DDBD_2,4,8 + DWORD dwAlphaBltPixelBitDepths; // DDBD_1,2,4,8 + DWORD dwAlphaBltSurfaceBitDepths; // DDBD_1,2,4,8 + DWORD dwAlphaOverlayConstBitDepths; // DDBD_2,4,8 + DWORD dwAlphaOverlayPixelBitDepths; // DDBD_1,2,4,8 + DWORD dwAlphaOverlaySurfaceBitDepths; // DDBD_1,2,4,8 + DWORD dwZBufferBitDepths; // DDBD_8,16,24,32 + DWORD dwVidMemTotal; // total amount of video memory + DWORD dwVidMemFree; // amount of free video memory + DWORD dwMaxVisibleOverlays; // maximum number of visible overlays + DWORD dwCurrVisibleOverlays; // current number of visible overlays + DWORD dwNumFourCCCodes; // number of four cc codes + DWORD dwAlignBoundarySrc; // source rectangle alignment + DWORD dwAlignSizeSrc; // source rectangle byte size + DWORD dwAlignBoundaryDest; // dest rectangle alignment + DWORD dwAlignSizeDest; // dest rectangle byte size + DWORD dwAlignStrideAlign; // stride alignment + DWORD dwRops[DD_ROP_SPACE]; // ROPS supported + DDSCAPS ddsCaps; // DDSCAPS structure has all the general capabilities + DWORD dwMinOverlayStretch; // minimum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 + DWORD dwMaxOverlayStretch; // maximum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 + DWORD dwMinLiveVideoStretch; // OBSOLETE! This field remains for compatability reasons only + DWORD dwMaxLiveVideoStretch; // OBSOLETE! This field remains for compatability reasons only + DWORD dwMinHwCodecStretch; // OBSOLETE! This field remains for compatability reasons only + DWORD dwMaxHwCodecStretch; // OBSOLETE! This field remains for compatability reasons only + DWORD dwReserved1; // reserved + DWORD dwReserved2; // reserved + DWORD dwReserved3; // reserved +} DDCAPS_DX1; + +typedef DDCAPS_DX1 FAR* LPDDCAPS_DX1; + +/* + * This structure is the DDCAPS structure as it was in version 2 and 3 of Direct X. + * It is present for back compatability. + */ +typedef struct _DDCAPS_DX3 +{ + DWORD dwSize; // size of the DDDRIVERCAPS structure + DWORD dwCaps; // driver specific capabilities + DWORD dwCaps2; // more driver specific capabilites + DWORD dwCKeyCaps; // color key capabilities of the surface + DWORD dwFXCaps; // driver specific stretching and effects capabilites + DWORD dwFXAlphaCaps; // alpha driver specific capabilities + DWORD dwPalCaps; // palette capabilities + DWORD dwSVCaps; // stereo vision capabilities + DWORD dwAlphaBltConstBitDepths; // DDBD_2,4,8 + DWORD dwAlphaBltPixelBitDepths; // DDBD_1,2,4,8 + DWORD dwAlphaBltSurfaceBitDepths; // DDBD_1,2,4,8 + DWORD dwAlphaOverlayConstBitDepths; // DDBD_2,4,8 + DWORD dwAlphaOverlayPixelBitDepths; // DDBD_1,2,4,8 + DWORD dwAlphaOverlaySurfaceBitDepths; // DDBD_1,2,4,8 + DWORD dwZBufferBitDepths; // DDBD_8,16,24,32 + DWORD dwVidMemTotal; // total amount of video memory + DWORD dwVidMemFree; // amount of free video memory + DWORD dwMaxVisibleOverlays; // maximum number of visible overlays + DWORD dwCurrVisibleOverlays; // current number of visible overlays + DWORD dwNumFourCCCodes; // number of four cc codes + DWORD dwAlignBoundarySrc; // source rectangle alignment + DWORD dwAlignSizeSrc; // source rectangle byte size + DWORD dwAlignBoundaryDest; // dest rectangle alignment + DWORD dwAlignSizeDest; // dest rectangle byte size + DWORD dwAlignStrideAlign; // stride alignment + DWORD dwRops[DD_ROP_SPACE]; // ROPS supported + DDSCAPS ddsCaps; // DDSCAPS structure has all the general capabilities + DWORD dwMinOverlayStretch; // minimum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 + DWORD dwMaxOverlayStretch; // maximum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 + DWORD dwMinLiveVideoStretch; // minimum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 + DWORD dwMaxLiveVideoStretch; // maximum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 + DWORD dwMinHwCodecStretch; // minimum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 + DWORD dwMaxHwCodecStretch; // maximum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 + DWORD dwReserved1; // reserved + DWORD dwReserved2; // reserved + DWORD dwReserved3; // reserved + DWORD dwSVBCaps; // driver specific capabilities for System->Vmem blts + DWORD dwSVBCKeyCaps; // driver color key capabilities for System->Vmem blts + DWORD dwSVBFXCaps; // driver FX capabilities for System->Vmem blts + DWORD dwSVBRops[DD_ROP_SPACE];// ROPS supported for System->Vmem blts + DWORD dwVSBCaps; // driver specific capabilities for Vmem->System blts + DWORD dwVSBCKeyCaps; // driver color key capabilities for Vmem->System blts + DWORD dwVSBFXCaps; // driver FX capabilities for Vmem->System blts + DWORD dwVSBRops[DD_ROP_SPACE];// ROPS supported for Vmem->System blts + DWORD dwSSBCaps; // driver specific capabilities for System->System blts + DWORD dwSSBCKeyCaps; // driver color key capabilities for System->System blts + DWORD dwSSBFXCaps; // driver FX capabilities for System->System blts + DWORD dwSSBRops[DD_ROP_SPACE];// ROPS supported for System->System blts + DWORD dwReserved4; // reserved + DWORD dwReserved5; // reserved + DWORD dwReserved6; // reserved +} DDCAPS_DX3; +typedef DDCAPS_DX3 FAR* LPDDCAPS_DX3; + +/* + * This structure is the DDCAPS structure as it was in version 5 of Direct X. + * It is present for back compatability. + */ +typedef struct _DDCAPS_DX5 +{ +/* 0*/ DWORD dwSize; // size of the DDDRIVERCAPS structure +/* 4*/ DWORD dwCaps; // driver specific capabilities +/* 8*/ DWORD dwCaps2; // more driver specific capabilites +/* c*/ DWORD dwCKeyCaps; // color key capabilities of the surface +/* 10*/ DWORD dwFXCaps; // driver specific stretching and effects capabilites +/* 14*/ DWORD dwFXAlphaCaps; // alpha driver specific capabilities +/* 18*/ DWORD dwPalCaps; // palette capabilities +/* 1c*/ DWORD dwSVCaps; // stereo vision capabilities +/* 20*/ DWORD dwAlphaBltConstBitDepths; // DDBD_2,4,8 +/* 24*/ DWORD dwAlphaBltPixelBitDepths; // DDBD_1,2,4,8 +/* 28*/ DWORD dwAlphaBltSurfaceBitDepths; // DDBD_1,2,4,8 +/* 2c*/ DWORD dwAlphaOverlayConstBitDepths; // DDBD_2,4,8 +/* 30*/ DWORD dwAlphaOverlayPixelBitDepths; // DDBD_1,2,4,8 +/* 34*/ DWORD dwAlphaOverlaySurfaceBitDepths; // DDBD_1,2,4,8 +/* 38*/ DWORD dwZBufferBitDepths; // DDBD_8,16,24,32 +/* 3c*/ DWORD dwVidMemTotal; // total amount of video memory +/* 40*/ DWORD dwVidMemFree; // amount of free video memory +/* 44*/ DWORD dwMaxVisibleOverlays; // maximum number of visible overlays +/* 48*/ DWORD dwCurrVisibleOverlays; // current number of visible overlays +/* 4c*/ DWORD dwNumFourCCCodes; // number of four cc codes +/* 50*/ DWORD dwAlignBoundarySrc; // source rectangle alignment +/* 54*/ DWORD dwAlignSizeSrc; // source rectangle byte size +/* 58*/ DWORD dwAlignBoundaryDest; // dest rectangle alignment +/* 5c*/ DWORD dwAlignSizeDest; // dest rectangle byte size +/* 60*/ DWORD dwAlignStrideAlign; // stride alignment +/* 64*/ DWORD dwRops[DD_ROP_SPACE]; // ROPS supported +/* 84*/ DDSCAPS ddsCaps; // DDSCAPS structure has all the general capabilities +/* 88*/ DWORD dwMinOverlayStretch; // minimum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 +/* 8c*/ DWORD dwMaxOverlayStretch; // maximum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 +/* 90*/ DWORD dwMinLiveVideoStretch; // minimum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 +/* 94*/ DWORD dwMaxLiveVideoStretch; // maximum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 +/* 98*/ DWORD dwMinHwCodecStretch; // minimum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 +/* 9c*/ DWORD dwMaxHwCodecStretch; // maximum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 +/* a0*/ DWORD dwReserved1; // reserved +/* a4*/ DWORD dwReserved2; // reserved +/* a8*/ DWORD dwReserved3; // reserved +/* ac*/ DWORD dwSVBCaps; // driver specific capabilities for System->Vmem blts +/* b0*/ DWORD dwSVBCKeyCaps; // driver color key capabilities for System->Vmem blts +/* b4*/ DWORD dwSVBFXCaps; // driver FX capabilities for System->Vmem blts +/* b8*/ DWORD dwSVBRops[DD_ROP_SPACE];// ROPS supported for System->Vmem blts +/* d8*/ DWORD dwVSBCaps; // driver specific capabilities for Vmem->System blts +/* dc*/ DWORD dwVSBCKeyCaps; // driver color key capabilities for Vmem->System blts +/* e0*/ DWORD dwVSBFXCaps; // driver FX capabilities for Vmem->System blts +/* e4*/ DWORD dwVSBRops[DD_ROP_SPACE];// ROPS supported for Vmem->System blts +/*104*/ DWORD dwSSBCaps; // driver specific capabilities for System->System blts +/*108*/ DWORD dwSSBCKeyCaps; // driver color key capabilities for System->System blts +/*10c*/ DWORD dwSSBFXCaps; // driver FX capabilities for System->System blts +/*110*/ DWORD dwSSBRops[DD_ROP_SPACE];// ROPS supported for System->System blts +// Members added for DX5: +/*130*/ DWORD dwMaxVideoPorts; // maximum number of usable video ports +/*134*/ DWORD dwCurrVideoPorts; // current number of video ports used +/*138*/ DWORD dwSVBCaps2; // more driver specific capabilities for System->Vmem blts +/*13c*/ DWORD dwNLVBCaps; // driver specific capabilities for non-local->local vidmem blts +/*140*/ DWORD dwNLVBCaps2; // more driver specific capabilities non-local->local vidmem blts +/*144*/ DWORD dwNLVBCKeyCaps; // driver color key capabilities for non-local->local vidmem blts +/*148*/ DWORD dwNLVBFXCaps; // driver FX capabilities for non-local->local blts +/*14c*/ DWORD dwNLVBRops[DD_ROP_SPACE]; // ROPS supported for non-local->local blts +} DDCAPS_DX5; +typedef DDCAPS_DX5 FAR* LPDDCAPS_DX5; + +typedef struct _DDCAPS_DX6 +{ +/* 0*/ DWORD dwSize; // size of the DDDRIVERCAPS structure +/* 4*/ DWORD dwCaps; // driver specific capabilities +/* 8*/ DWORD dwCaps2; // more driver specific capabilites +/* c*/ DWORD dwCKeyCaps; // color key capabilities of the surface +/* 10*/ DWORD dwFXCaps; // driver specific stretching and effects capabilites +/* 14*/ DWORD dwFXAlphaCaps; // alpha caps +/* 18*/ DWORD dwPalCaps; // palette capabilities +/* 1c*/ DWORD dwSVCaps; // stereo vision capabilities +/* 20*/ DWORD dwAlphaBltConstBitDepths; // DDBD_2,4,8 +/* 24*/ DWORD dwAlphaBltPixelBitDepths; // DDBD_1,2,4,8 +/* 28*/ DWORD dwAlphaBltSurfaceBitDepths; // DDBD_1,2,4,8 +/* 2c*/ DWORD dwAlphaOverlayConstBitDepths; // DDBD_2,4,8 +/* 30*/ DWORD dwAlphaOverlayPixelBitDepths; // DDBD_1,2,4,8 +/* 34*/ DWORD dwAlphaOverlaySurfaceBitDepths; // DDBD_1,2,4,8 +/* 38*/ DWORD dwZBufferBitDepths; // DDBD_8,16,24,32 +/* 3c*/ DWORD dwVidMemTotal; // total amount of video memory +/* 40*/ DWORD dwVidMemFree; // amount of free video memory +/* 44*/ DWORD dwMaxVisibleOverlays; // maximum number of visible overlays +/* 48*/ DWORD dwCurrVisibleOverlays; // current number of visible overlays +/* 4c*/ DWORD dwNumFourCCCodes; // number of four cc codes +/* 50*/ DWORD dwAlignBoundarySrc; // source rectangle alignment +/* 54*/ DWORD dwAlignSizeSrc; // source rectangle byte size +/* 58*/ DWORD dwAlignBoundaryDest; // dest rectangle alignment +/* 5c*/ DWORD dwAlignSizeDest; // dest rectangle byte size +/* 60*/ DWORD dwAlignStrideAlign; // stride alignment +/* 64*/ DWORD dwRops[DD_ROP_SPACE]; // ROPS supported +/* 84*/ DDSCAPS ddsOldCaps; // Was DDSCAPS ddsCaps. ddsCaps is of type DDSCAPS2 for DX6 +/* 88*/ DWORD dwMinOverlayStretch; // minimum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 +/* 8c*/ DWORD dwMaxOverlayStretch; // maximum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 +/* 90*/ DWORD dwMinLiveVideoStretch; // minimum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 +/* 94*/ DWORD dwMaxLiveVideoStretch; // maximum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 +/* 98*/ DWORD dwMinHwCodecStretch; // minimum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 +/* 9c*/ DWORD dwMaxHwCodecStretch; // maximum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 +/* a0*/ DWORD dwReserved1; // reserved +/* a4*/ DWORD dwReserved2; // reserved +/* a8*/ DWORD dwReserved3; // reserved +/* ac*/ DWORD dwSVBCaps; // driver specific capabilities for System->Vmem blts +/* b0*/ DWORD dwSVBCKeyCaps; // driver color key capabilities for System->Vmem blts +/* b4*/ DWORD dwSVBFXCaps; // driver FX capabilities for System->Vmem blts +/* b8*/ DWORD dwSVBRops[DD_ROP_SPACE];// ROPS supported for System->Vmem blts +/* d8*/ DWORD dwVSBCaps; // driver specific capabilities for Vmem->System blts +/* dc*/ DWORD dwVSBCKeyCaps; // driver color key capabilities for Vmem->System blts +/* e0*/ DWORD dwVSBFXCaps; // driver FX capabilities for Vmem->System blts +/* e4*/ DWORD dwVSBRops[DD_ROP_SPACE];// ROPS supported for Vmem->System blts +/*104*/ DWORD dwSSBCaps; // driver specific capabilities for System->System blts +/*108*/ DWORD dwSSBCKeyCaps; // driver color key capabilities for System->System blts +/*10c*/ DWORD dwSSBFXCaps; // driver FX capabilities for System->System blts +/*110*/ DWORD dwSSBRops[DD_ROP_SPACE];// ROPS supported for System->System blts +/*130*/ DWORD dwMaxVideoPorts; // maximum number of usable video ports +/*134*/ DWORD dwCurrVideoPorts; // current number of video ports used +/*138*/ DWORD dwSVBCaps2; // more driver specific capabilities for System->Vmem blts +/*13c*/ DWORD dwNLVBCaps; // driver specific capabilities for non-local->local vidmem blts +/*140*/ DWORD dwNLVBCaps2; // more driver specific capabilities non-local->local vidmem blts +/*144*/ DWORD dwNLVBCKeyCaps; // driver color key capabilities for non-local->local vidmem blts +/*148*/ DWORD dwNLVBFXCaps; // driver FX capabilities for non-local->local blts +/*14c*/ DWORD dwNLVBRops[DD_ROP_SPACE]; // ROPS supported for non-local->local blts +// Members added for DX6 release +/*16c*/ DDSCAPS2 ddsCaps; // Surface Caps +} DDCAPS_DX6; +typedef DDCAPS_DX6 FAR* LPDDCAPS_DX6; + +typedef struct _DDCAPS_DX7 +{ +/* 0*/ DWORD dwSize; // size of the DDDRIVERCAPS structure +/* 4*/ DWORD dwCaps; // driver specific capabilities +/* 8*/ DWORD dwCaps2; // more driver specific capabilites +/* c*/ DWORD dwCKeyCaps; // color key capabilities of the surface +/* 10*/ DWORD dwFXCaps; // driver specific stretching and effects capabilites +/* 14*/ DWORD dwFXAlphaCaps; // alpha driver specific capabilities +/* 18*/ DWORD dwPalCaps; // palette capabilities +/* 1c*/ DWORD dwSVCaps; // stereo vision capabilities +/* 20*/ DWORD dwAlphaBltConstBitDepths; // DDBD_2,4,8 +/* 24*/ DWORD dwAlphaBltPixelBitDepths; // DDBD_1,2,4,8 +/* 28*/ DWORD dwAlphaBltSurfaceBitDepths; // DDBD_1,2,4,8 +/* 2c*/ DWORD dwAlphaOverlayConstBitDepths; // DDBD_2,4,8 +/* 30*/ DWORD dwAlphaOverlayPixelBitDepths; // DDBD_1,2,4,8 +/* 34*/ DWORD dwAlphaOverlaySurfaceBitDepths; // DDBD_1,2,4,8 +/* 38*/ DWORD dwZBufferBitDepths; // DDBD_8,16,24,32 +/* 3c*/ DWORD dwVidMemTotal; // total amount of video memory +/* 40*/ DWORD dwVidMemFree; // amount of free video memory +/* 44*/ DWORD dwMaxVisibleOverlays; // maximum number of visible overlays +/* 48*/ DWORD dwCurrVisibleOverlays; // current number of visible overlays +/* 4c*/ DWORD dwNumFourCCCodes; // number of four cc codes +/* 50*/ DWORD dwAlignBoundarySrc; // source rectangle alignment +/* 54*/ DWORD dwAlignSizeSrc; // source rectangle byte size +/* 58*/ DWORD dwAlignBoundaryDest; // dest rectangle alignment +/* 5c*/ DWORD dwAlignSizeDest; // dest rectangle byte size +/* 60*/ DWORD dwAlignStrideAlign; // stride alignment +/* 64*/ DWORD dwRops[DD_ROP_SPACE]; // ROPS supported +/* 84*/ DDSCAPS ddsOldCaps; // Was DDSCAPS ddsCaps. ddsCaps is of type DDSCAPS2 for DX6 +/* 88*/ DWORD dwMinOverlayStretch; // minimum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 +/* 8c*/ DWORD dwMaxOverlayStretch; // maximum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 +/* 90*/ DWORD dwMinLiveVideoStretch; // minimum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 +/* 94*/ DWORD dwMaxLiveVideoStretch; // maximum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 +/* 98*/ DWORD dwMinHwCodecStretch; // minimum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 +/* 9c*/ DWORD dwMaxHwCodecStretch; // maximum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 +/* a0*/ DWORD dwReserved1; // reserved +/* a4*/ DWORD dwReserved2; // reserved +/* a8*/ DWORD dwReserved3; // reserved +/* ac*/ DWORD dwSVBCaps; // driver specific capabilities for System->Vmem blts +/* b0*/ DWORD dwSVBCKeyCaps; // driver color key capabilities for System->Vmem blts +/* b4*/ DWORD dwSVBFXCaps; // driver FX capabilities for System->Vmem blts +/* b8*/ DWORD dwSVBRops[DD_ROP_SPACE];// ROPS supported for System->Vmem blts +/* d8*/ DWORD dwVSBCaps; // driver specific capabilities for Vmem->System blts +/* dc*/ DWORD dwVSBCKeyCaps; // driver color key capabilities for Vmem->System blts +/* e0*/ DWORD dwVSBFXCaps; // driver FX capabilities for Vmem->System blts +/* e4*/ DWORD dwVSBRops[DD_ROP_SPACE];// ROPS supported for Vmem->System blts +/*104*/ DWORD dwSSBCaps; // driver specific capabilities for System->System blts +/*108*/ DWORD dwSSBCKeyCaps; // driver color key capabilities for System->System blts +/*10c*/ DWORD dwSSBFXCaps; // driver FX capabilities for System->System blts +/*110*/ DWORD dwSSBRops[DD_ROP_SPACE];// ROPS supported for System->System blts +/*130*/ DWORD dwMaxVideoPorts; // maximum number of usable video ports +/*134*/ DWORD dwCurrVideoPorts; // current number of video ports used +/*138*/ DWORD dwSVBCaps2; // more driver specific capabilities for System->Vmem blts +/*13c*/ DWORD dwNLVBCaps; // driver specific capabilities for non-local->local vidmem blts +/*140*/ DWORD dwNLVBCaps2; // more driver specific capabilities non-local->local vidmem blts +/*144*/ DWORD dwNLVBCKeyCaps; // driver color key capabilities for non-local->local vidmem blts +/*148*/ DWORD dwNLVBFXCaps; // driver FX capabilities for non-local->local blts +/*14c*/ DWORD dwNLVBRops[DD_ROP_SPACE]; // ROPS supported for non-local->local blts +// Members added for DX6 release +/*16c*/ DDSCAPS2 ddsCaps; // Surface Caps +} DDCAPS_DX7; +typedef DDCAPS_DX7 FAR* LPDDCAPS_DX7; + + +#if DIRECTDRAW_VERSION <= 0x300 + typedef DDCAPS_DX3 DDCAPS; +#elif DIRECTDRAW_VERSION <= 0x500 + typedef DDCAPS_DX5 DDCAPS; +#elif DIRECTDRAW_VERSION <= 0x600 + typedef DDCAPS_DX6 DDCAPS; +#else + typedef DDCAPS_DX7 DDCAPS; +#endif + +typedef DDCAPS FAR* LPDDCAPS; + + + +/* + * DDPIXELFORMAT + */ +typedef struct _DDPIXELFORMAT +{ + DWORD dwSize; // size of structure + DWORD dwFlags; // pixel format flags + DWORD dwFourCC; // (FOURCC code) + union + { + DWORD dwRGBBitCount; // how many bits per pixel + DWORD dwYUVBitCount; // how many bits per pixel + DWORD dwZBufferBitDepth; // how many total bits/pixel in z buffer (including any stencil bits) + DWORD dwAlphaBitDepth; // how many bits for alpha channels + DWORD dwLuminanceBitCount; // how many bits per pixel + DWORD dwBumpBitCount; // how many bits per "buxel", total + DWORD dwPrivateFormatBitCount;// Bits per pixel of private driver formats. Only valid in texture + // format list and if DDPF_D3DFORMAT is set + } DUMMYUNIONNAMEN(1); + union + { + DWORD dwRBitMask; // mask for red bit + DWORD dwYBitMask; // mask for Y bits + DWORD dwStencilBitDepth; // how many stencil bits (note: dwZBufferBitDepth-dwStencilBitDepth is total Z-only bits) + DWORD dwLuminanceBitMask; // mask for luminance bits + DWORD dwBumpDuBitMask; // mask for bump map U delta bits + DWORD dwOperations; // DDPF_D3DFORMAT Operations + } DUMMYUNIONNAMEN(2); + union + { + DWORD dwGBitMask; // mask for green bits + DWORD dwUBitMask; // mask for U bits + DWORD dwZBitMask; // mask for Z bits + DWORD dwBumpDvBitMask; // mask for bump map V delta bits + struct + { + WORD wFlipMSTypes; // Multisample methods supported via flip for this D3DFORMAT + WORD wBltMSTypes; // Multisample methods supported via blt for this D3DFORMAT + } MultiSampleCaps; + + } DUMMYUNIONNAMEN(3); + union + { + DWORD dwBBitMask; // mask for blue bits + DWORD dwVBitMask; // mask for V bits + DWORD dwStencilBitMask; // mask for stencil bits + DWORD dwBumpLuminanceBitMask; // mask for luminance in bump map + } DUMMYUNIONNAMEN(4); + union + { + DWORD dwRGBAlphaBitMask; // mask for alpha channel + DWORD dwYUVAlphaBitMask; // mask for alpha channel + DWORD dwLuminanceAlphaBitMask;// mask for alpha channel + DWORD dwRGBZBitMask; // mask for Z channel + DWORD dwYUVZBitMask; // mask for Z channel + } DUMMYUNIONNAMEN(5); +} DDPIXELFORMAT; + +typedef DDPIXELFORMAT FAR* LPDDPIXELFORMAT; + +/* + * DDOVERLAYFX + */ +typedef struct _DDOVERLAYFX +{ + DWORD dwSize; // size of structure + DWORD dwAlphaEdgeBlendBitDepth; // Bit depth used to specify constant for alpha edge blend + DWORD dwAlphaEdgeBlend; // Constant to use as alpha for edge blend + DWORD dwReserved; + DWORD dwAlphaDestConstBitDepth; // Bit depth used to specify alpha constant for destination + union + { + DWORD dwAlphaDestConst; // Constant to use as alpha channel for dest + LPDIRECTDRAWSURFACE lpDDSAlphaDest; // Surface to use as alpha channel for dest + } DUMMYUNIONNAMEN(1); + DWORD dwAlphaSrcConstBitDepth; // Bit depth used to specify alpha constant for source + union + { + DWORD dwAlphaSrcConst; // Constant to use as alpha channel for src + LPDIRECTDRAWSURFACE lpDDSAlphaSrc; // Surface to use as alpha channel for src + } DUMMYUNIONNAMEN(2); + DDCOLORKEY dckDestColorkey; // DestColorkey override + DDCOLORKEY dckSrcColorkey; // DestColorkey override + DWORD dwDDFX; // Overlay FX + DWORD dwFlags; // flags +} DDOVERLAYFX; + +typedef DDOVERLAYFX FAR *LPDDOVERLAYFX; + + +/* + * DDBLTBATCH: BltBatch entry structure + */ +typedef struct _DDBLTBATCH +{ + LPRECT lprDest; + LPDIRECTDRAWSURFACE lpDDSSrc; + LPRECT lprSrc; + DWORD dwFlags; + LPDDBLTFX lpDDBltFx; +} DDBLTBATCH; + +typedef DDBLTBATCH FAR * LPDDBLTBATCH; + + +/* + * DDGAMMARAMP + */ +typedef struct _DDGAMMARAMP +{ + WORD red[256]; + WORD green[256]; + WORD blue[256]; +} DDGAMMARAMP; +typedef DDGAMMARAMP FAR * LPDDGAMMARAMP; + +/* + * This is the structure within which DirectDraw returns data about the current graphics driver and chipset + */ + +#define MAX_DDDEVICEID_STRING 512 + +typedef struct tagDDDEVICEIDENTIFIER +{ + /* + * These elements are for presentation to the user only. They should not be used to identify particular + * drivers, since this is unreliable and many different strings may be associated with the same + * device, and the same driver from different vendors. + */ + char szDriver[MAX_DDDEVICEID_STRING]; + char szDescription[MAX_DDDEVICEID_STRING]; + + /* + * This element is the version of the DirectDraw/3D driver. It is legal to do <, > comparisons + * on the whole 64 bits. Caution should be exercised if you use this element to identify problematic + * drivers. It is recommended that guidDeviceIdentifier is used for this purpose. + * + * This version has the form: + * wProduct = HIWORD(liDriverVersion.HighPart) + * wVersion = LOWORD(liDriverVersion.HighPart) + * wSubVersion = HIWORD(liDriverVersion.LowPart) + * wBuild = LOWORD(liDriverVersion.LowPart) + */ +#ifdef _WIN32 + LARGE_INTEGER liDriverVersion; /* Defined for applications and other 32 bit components */ +#else + DWORD dwDriverVersionLowPart; /* Defined for 16 bit driver components */ + DWORD dwDriverVersionHighPart; +#endif + + + /* + * These elements can be used to identify particular chipsets. Use with extreme caution. + * dwVendorId Identifies the manufacturer. May be zero if unknown. + * dwDeviceId Identifies the type of chipset. May be zero if unknown. + * dwSubSysId Identifies the subsystem, typically this means the particular board. May be zero if unknown. + * dwRevision Identifies the revision level of the chipset. May be zero if unknown. + */ + DWORD dwVendorId; + DWORD dwDeviceId; + DWORD dwSubSysId; + DWORD dwRevision; + + /* + * This element can be used to check changes in driver/chipset. This GUID is a unique identifier for the + * driver/chipset pair. Use this element if you wish to track changes to the driver/chipset in order to + * reprofile the graphics subsystem. + * This element can also be used to identify particular problematic drivers. + */ + GUID guidDeviceIdentifier; +} DDDEVICEIDENTIFIER, * LPDDDEVICEIDENTIFIER; + +typedef struct tagDDDEVICEIDENTIFIER2 +{ + /* + * These elements are for presentation to the user only. They should not be used to identify particular + * drivers, since this is unreliable and many different strings may be associated with the same + * device, and the same driver from different vendors. + */ + char szDriver[MAX_DDDEVICEID_STRING]; + char szDescription[MAX_DDDEVICEID_STRING]; + + /* + * This element is the version of the DirectDraw/3D driver. It is legal to do <, > comparisons + * on the whole 64 bits. Caution should be exercised if you use this element to identify problematic + * drivers. It is recommended that guidDeviceIdentifier is used for this purpose. + * + * This version has the form: + * wProduct = HIWORD(liDriverVersion.HighPart) + * wVersion = LOWORD(liDriverVersion.HighPart) + * wSubVersion = HIWORD(liDriverVersion.LowPart) + * wBuild = LOWORD(liDriverVersion.LowPart) + */ +#ifdef _WIN32 + LARGE_INTEGER liDriverVersion; /* Defined for applications and other 32 bit components */ +#else + DWORD dwDriverVersionLowPart; /* Defined for 16 bit driver components */ + DWORD dwDriverVersionHighPart; +#endif + + + /* + * These elements can be used to identify particular chipsets. Use with extreme caution. + * dwVendorId Identifies the manufacturer. May be zero if unknown. + * dwDeviceId Identifies the type of chipset. May be zero if unknown. + * dwSubSysId Identifies the subsystem, typically this means the particular board. May be zero if unknown. + * dwRevision Identifies the revision level of the chipset. May be zero if unknown. + */ + DWORD dwVendorId; + DWORD dwDeviceId; + DWORD dwSubSysId; + DWORD dwRevision; + + /* + * This element can be used to check changes in driver/chipset. This GUID is a unique identifier for the + * driver/chipset pair. Use this element if you wish to track changes to the driver/chipset in order to + * reprofile the graphics subsystem. + * This element can also be used to identify particular problematic drivers. + */ + GUID guidDeviceIdentifier; + + /* + * This element is used to determine the Windows Hardware Quality Lab (WHQL) + * certification level for this driver/device pair. + */ + DWORD dwWHQLLevel; + +} DDDEVICEIDENTIFIER2, * LPDDDEVICEIDENTIFIER2; + +/* + * Flags for the IDirectDraw4::GetDeviceIdentifier method + */ + +/* + * This flag causes GetDeviceIdentifier to return information about the host (typically 2D) adapter in a system equipped + * with a stacked secondary 3D adapter. Such an adapter appears to the application as if it were part of the + * host adapter, but is typically physcially located on a separate card. The stacked secondary's information is + * returned when GetDeviceIdentifier's dwFlags field is zero, since this most accurately reflects the qualities + * of the DirectDraw object involved. + */ +#define DDGDI_GETHOSTIDENTIFIER 0x00000001L + +/* + * Macros for interpretting DDEVICEIDENTIFIER2.dwWHQLLevel + */ +#define GET_WHQL_YEAR( dwWHQLLevel ) \ + ( (dwWHQLLevel) / 0x10000 ) +#define GET_WHQL_MONTH( dwWHQLLevel ) \ + ( ( (dwWHQLLevel) / 0x100 ) & 0x00ff ) +#define GET_WHQL_DAY( dwWHQLLevel ) \ + ( (dwWHQLLevel) & 0xff ) + + +/* + * callbacks + */ +typedef DWORD (FAR PASCAL *LPCLIPPERCALLBACK)(LPDIRECTDRAWCLIPPER lpDDClipper, HWND hWnd, DWORD code, LPVOID lpContext ); +#ifdef STREAMING +typedef DWORD (FAR PASCAL *LPSURFACESTREAMINGCALLBACK)(DWORD); +#endif + + +/* + * INTERACES FOLLOW: + * IDirectDraw + * IDirectDrawClipper + * IDirectDrawPalette + * IDirectDrawSurface + */ + +/* + * IDirectDraw + */ +#if defined( _WIN32 ) && !defined( _NO_COM ) +#undef INTERFACE +#define INTERFACE IDirectDraw +DECLARE_INTERFACE_( IDirectDraw, IUnknown ) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + /*** IDirectDraw methods ***/ + STDMETHOD(Compact)(THIS) PURE; + STDMETHOD(CreateClipper)(THIS_ DWORD, LPDIRECTDRAWCLIPPER FAR*, IUnknown FAR * ) PURE; + STDMETHOD(CreatePalette)(THIS_ DWORD, LPPALETTEENTRY, LPDIRECTDRAWPALETTE FAR*, IUnknown FAR * ) PURE; + STDMETHOD(CreateSurface)(THIS_ LPDDSURFACEDESC, LPDIRECTDRAWSURFACE FAR *, IUnknown FAR *) PURE; + STDMETHOD(DuplicateSurface)( THIS_ LPDIRECTDRAWSURFACE, LPDIRECTDRAWSURFACE FAR * ) PURE; + STDMETHOD(EnumDisplayModes)( THIS_ DWORD, LPDDSURFACEDESC, LPVOID, LPDDENUMMODESCALLBACK ) PURE; + STDMETHOD(EnumSurfaces)(THIS_ DWORD, LPDDSURFACEDESC, LPVOID,LPDDENUMSURFACESCALLBACK ) PURE; + STDMETHOD(FlipToGDISurface)(THIS) PURE; + STDMETHOD(GetCaps)( THIS_ LPDDCAPS, LPDDCAPS) PURE; + STDMETHOD(GetDisplayMode)( THIS_ LPDDSURFACEDESC) PURE; + STDMETHOD(GetFourCCCodes)(THIS_ LPDWORD, LPDWORD ) PURE; + STDMETHOD(GetGDISurface)(THIS_ LPDIRECTDRAWSURFACE FAR *) PURE; + STDMETHOD(GetMonitorFrequency)(THIS_ LPDWORD) PURE; + STDMETHOD(GetScanLine)(THIS_ LPDWORD) PURE; + STDMETHOD(GetVerticalBlankStatus)(THIS_ LPBOOL ) PURE; + STDMETHOD(Initialize)(THIS_ GUID FAR *) PURE; + STDMETHOD(RestoreDisplayMode)(THIS) PURE; + STDMETHOD(SetCooperativeLevel)(THIS_ HWND, DWORD) PURE; + STDMETHOD(SetDisplayMode)(THIS_ DWORD, DWORD,DWORD) PURE; + STDMETHOD(WaitForVerticalBlank)(THIS_ DWORD, HANDLE ) PURE; +}; + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectDraw_QueryInterface(p, a, b) (p)->lpVtbl->QueryInterface(p, a, b) +#define IDirectDraw_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectDraw_Release(p) (p)->lpVtbl->Release(p) +#define IDirectDraw_Compact(p) (p)->lpVtbl->Compact(p) +#define IDirectDraw_CreateClipper(p, a, b, c) (p)->lpVtbl->CreateClipper(p, a, b, c) +#define IDirectDraw_CreatePalette(p, a, b, c, d) (p)->lpVtbl->CreatePalette(p, a, b, c, d) +#define IDirectDraw_CreateSurface(p, a, b, c) (p)->lpVtbl->CreateSurface(p, a, b, c) +#define IDirectDraw_DuplicateSurface(p, a, b) (p)->lpVtbl->DuplicateSurface(p, a, b) +#define IDirectDraw_EnumDisplayModes(p, a, b, c, d) (p)->lpVtbl->EnumDisplayModes(p, a, b, c, d) +#define IDirectDraw_EnumSurfaces(p, a, b, c, d) (p)->lpVtbl->EnumSurfaces(p, a, b, c, d) +#define IDirectDraw_FlipToGDISurface(p) (p)->lpVtbl->FlipToGDISurface(p) +#define IDirectDraw_GetCaps(p, a, b) (p)->lpVtbl->GetCaps(p, a, b) +#define IDirectDraw_GetDisplayMode(p, a) (p)->lpVtbl->GetDisplayMode(p, a) +#define IDirectDraw_GetFourCCCodes(p, a, b) (p)->lpVtbl->GetFourCCCodes(p, a, b) +#define IDirectDraw_GetGDISurface(p, a) (p)->lpVtbl->GetGDISurface(p, a) +#define IDirectDraw_GetMonitorFrequency(p, a) (p)->lpVtbl->GetMonitorFrequency(p, a) +#define IDirectDraw_GetScanLine(p, a) (p)->lpVtbl->GetScanLine(p, a) +#define IDirectDraw_GetVerticalBlankStatus(p, a) (p)->lpVtbl->GetVerticalBlankStatus(p, a) +#define IDirectDraw_Initialize(p, a) (p)->lpVtbl->Initialize(p, a) +#define IDirectDraw_RestoreDisplayMode(p) (p)->lpVtbl->RestoreDisplayMode(p) +#define IDirectDraw_SetCooperativeLevel(p, a, b) (p)->lpVtbl->SetCooperativeLevel(p, a, b) +#define IDirectDraw_SetDisplayMode(p, a, b, c) (p)->lpVtbl->SetDisplayMode(p, a, b, c) +#define IDirectDraw_WaitForVerticalBlank(p, a, b) (p)->lpVtbl->WaitForVerticalBlank(p, a, b) +#else +#define IDirectDraw_QueryInterface(p, a, b) (p)->QueryInterface(a, b) +#define IDirectDraw_AddRef(p) (p)->AddRef() +#define IDirectDraw_Release(p) (p)->Release() +#define IDirectDraw_Compact(p) (p)->Compact() +#define IDirectDraw_CreateClipper(p, a, b, c) (p)->CreateClipper(a, b, c) +#define IDirectDraw_CreatePalette(p, a, b, c, d) (p)->CreatePalette(a, b, c, d) +#define IDirectDraw_CreateSurface(p, a, b, c) (p)->CreateSurface(a, b, c) +#define IDirectDraw_DuplicateSurface(p, a, b) (p)->DuplicateSurface(a, b) +#define IDirectDraw_EnumDisplayModes(p, a, b, c, d) (p)->EnumDisplayModes(a, b, c, d) +#define IDirectDraw_EnumSurfaces(p, a, b, c, d) (p)->EnumSurfaces(a, b, c, d) +#define IDirectDraw_FlipToGDISurface(p) (p)->FlipToGDISurface() +#define IDirectDraw_GetCaps(p, a, b) (p)->GetCaps(a, b) +#define IDirectDraw_GetDisplayMode(p, a) (p)->GetDisplayMode(a) +#define IDirectDraw_GetFourCCCodes(p, a, b) (p)->GetFourCCCodes(a, b) +#define IDirectDraw_GetGDISurface(p, a) (p)->GetGDISurface(a) +#define IDirectDraw_GetMonitorFrequency(p, a) (p)->GetMonitorFrequency(a) +#define IDirectDraw_GetScanLine(p, a) (p)->GetScanLine(a) +#define IDirectDraw_GetVerticalBlankStatus(p, a) (p)->GetVerticalBlankStatus(a) +#define IDirectDraw_Initialize(p, a) (p)->Initialize(a) +#define IDirectDraw_RestoreDisplayMode(p) (p)->RestoreDisplayMode() +#define IDirectDraw_SetCooperativeLevel(p, a, b) (p)->SetCooperativeLevel(a, b) +#define IDirectDraw_SetDisplayMode(p, a, b, c) (p)->SetDisplayMode(a, b, c) +#define IDirectDraw_WaitForVerticalBlank(p, a, b) (p)->WaitForVerticalBlank(a, b) +#endif + +#endif + +#if defined( _WIN32 ) && !defined( _NO_COM ) +#undef INTERFACE +#define INTERFACE IDirectDraw2 +DECLARE_INTERFACE_( IDirectDraw2, IUnknown ) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + /*** IDirectDraw methods ***/ + STDMETHOD(Compact)(THIS) PURE; + STDMETHOD(CreateClipper)(THIS_ DWORD, LPDIRECTDRAWCLIPPER FAR*, IUnknown FAR * ) PURE; + STDMETHOD(CreatePalette)(THIS_ DWORD, LPPALETTEENTRY, LPDIRECTDRAWPALETTE FAR*, IUnknown FAR * ) PURE; + STDMETHOD(CreateSurface)(THIS_ LPDDSURFACEDESC, LPDIRECTDRAWSURFACE FAR *, IUnknown FAR *) PURE; + STDMETHOD(DuplicateSurface)( THIS_ LPDIRECTDRAWSURFACE, LPDIRECTDRAWSURFACE FAR * ) PURE; + STDMETHOD(EnumDisplayModes)( THIS_ DWORD, LPDDSURFACEDESC, LPVOID, LPDDENUMMODESCALLBACK ) PURE; + STDMETHOD(EnumSurfaces)(THIS_ DWORD, LPDDSURFACEDESC, LPVOID,LPDDENUMSURFACESCALLBACK ) PURE; + STDMETHOD(FlipToGDISurface)(THIS) PURE; + STDMETHOD(GetCaps)( THIS_ LPDDCAPS, LPDDCAPS) PURE; + STDMETHOD(GetDisplayMode)( THIS_ LPDDSURFACEDESC) PURE; + STDMETHOD(GetFourCCCodes)(THIS_ LPDWORD, LPDWORD ) PURE; + STDMETHOD(GetGDISurface)(THIS_ LPDIRECTDRAWSURFACE FAR *) PURE; + STDMETHOD(GetMonitorFrequency)(THIS_ LPDWORD) PURE; + STDMETHOD(GetScanLine)(THIS_ LPDWORD) PURE; + STDMETHOD(GetVerticalBlankStatus)(THIS_ LPBOOL ) PURE; + STDMETHOD(Initialize)(THIS_ GUID FAR *) PURE; + STDMETHOD(RestoreDisplayMode)(THIS) PURE; + STDMETHOD(SetCooperativeLevel)(THIS_ HWND, DWORD) PURE; + STDMETHOD(SetDisplayMode)(THIS_ DWORD, DWORD,DWORD, DWORD, DWORD) PURE; + STDMETHOD(WaitForVerticalBlank)(THIS_ DWORD, HANDLE ) PURE; + /*** Added in the v2 interface ***/ + STDMETHOD(GetAvailableVidMem)(THIS_ LPDDSCAPS, LPDWORD, LPDWORD) PURE; +}; +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectDraw2_QueryInterface(p, a, b) (p)->lpVtbl->QueryInterface(p, a, b) +#define IDirectDraw2_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectDraw2_Release(p) (p)->lpVtbl->Release(p) +#define IDirectDraw2_Compact(p) (p)->lpVtbl->Compact(p) +#define IDirectDraw2_CreateClipper(p, a, b, c) (p)->lpVtbl->CreateClipper(p, a, b, c) +#define IDirectDraw2_CreatePalette(p, a, b, c, d) (p)->lpVtbl->CreatePalette(p, a, b, c, d) +#define IDirectDraw2_CreateSurface(p, a, b, c) (p)->lpVtbl->CreateSurface(p, a, b, c) +#define IDirectDraw2_DuplicateSurface(p, a, b) (p)->lpVtbl->DuplicateSurface(p, a, b) +#define IDirectDraw2_EnumDisplayModes(p, a, b, c, d) (p)->lpVtbl->EnumDisplayModes(p, a, b, c, d) +#define IDirectDraw2_EnumSurfaces(p, a, b, c, d) (p)->lpVtbl->EnumSurfaces(p, a, b, c, d) +#define IDirectDraw2_FlipToGDISurface(p) (p)->lpVtbl->FlipToGDISurface(p) +#define IDirectDraw2_GetCaps(p, a, b) (p)->lpVtbl->GetCaps(p, a, b) +#define IDirectDraw2_GetDisplayMode(p, a) (p)->lpVtbl->GetDisplayMode(p, a) +#define IDirectDraw2_GetFourCCCodes(p, a, b) (p)->lpVtbl->GetFourCCCodes(p, a, b) +#define IDirectDraw2_GetGDISurface(p, a) (p)->lpVtbl->GetGDISurface(p, a) +#define IDirectDraw2_GetMonitorFrequency(p, a) (p)->lpVtbl->GetMonitorFrequency(p, a) +#define IDirectDraw2_GetScanLine(p, a) (p)->lpVtbl->GetScanLine(p, a) +#define IDirectDraw2_GetVerticalBlankStatus(p, a) (p)->lpVtbl->GetVerticalBlankStatus(p, a) +#define IDirectDraw2_Initialize(p, a) (p)->lpVtbl->Initialize(p, a) +#define IDirectDraw2_RestoreDisplayMode(p) (p)->lpVtbl->RestoreDisplayMode(p) +#define IDirectDraw2_SetCooperativeLevel(p, a, b) (p)->lpVtbl->SetCooperativeLevel(p, a, b) +#define IDirectDraw2_SetDisplayMode(p, a, b, c, d, e) (p)->lpVtbl->SetDisplayMode(p, a, b, c, d, e) +#define IDirectDraw2_WaitForVerticalBlank(p, a, b) (p)->lpVtbl->WaitForVerticalBlank(p, a, b) +#define IDirectDraw2_GetAvailableVidMem(p, a, b, c) (p)->lpVtbl->GetAvailableVidMem(p, a, b, c) +#else +#define IDirectDraw2_QueryInterface(p, a, b) (p)->QueryInterface(a, b) +#define IDirectDraw2_AddRef(p) (p)->AddRef() +#define IDirectDraw2_Release(p) (p)->Release() +#define IDirectDraw2_Compact(p) (p)->Compact() +#define IDirectDraw2_CreateClipper(p, a, b, c) (p)->CreateClipper(a, b, c) +#define IDirectDraw2_CreatePalette(p, a, b, c, d) (p)->CreatePalette(a, b, c, d) +#define IDirectDraw2_CreateSurface(p, a, b, c) (p)->CreateSurface(a, b, c) +#define IDirectDraw2_DuplicateSurface(p, a, b) (p)->DuplicateSurface(a, b) +#define IDirectDraw2_EnumDisplayModes(p, a, b, c, d) (p)->EnumDisplayModes(a, b, c, d) +#define IDirectDraw2_EnumSurfaces(p, a, b, c, d) (p)->EnumSurfaces(a, b, c, d) +#define IDirectDraw2_FlipToGDISurface(p) (p)->FlipToGDISurface() +#define IDirectDraw2_GetCaps(p, a, b) (p)->GetCaps(a, b) +#define IDirectDraw2_GetDisplayMode(p, a) (p)->GetDisplayMode(a) +#define IDirectDraw2_GetFourCCCodes(p, a, b) (p)->GetFourCCCodes(a, b) +#define IDirectDraw2_GetGDISurface(p, a) (p)->GetGDISurface(a) +#define IDirectDraw2_GetMonitorFrequency(p, a) (p)->GetMonitorFrequency(a) +#define IDirectDraw2_GetScanLine(p, a) (p)->GetScanLine(a) +#define IDirectDraw2_GetVerticalBlankStatus(p, a) (p)->GetVerticalBlankStatus(a) +#define IDirectDraw2_Initialize(p, a) (p)->Initialize(a) +#define IDirectDraw2_RestoreDisplayMode(p) (p)->RestoreDisplayMode() +#define IDirectDraw2_SetCooperativeLevel(p, a, b) (p)->SetCooperativeLevel(a, b) +#define IDirectDraw2_SetDisplayMode(p, a, b, c, d, e) (p)->SetDisplayMode(a, b, c, d, e) +#define IDirectDraw2_WaitForVerticalBlank(p, a, b) (p)->WaitForVerticalBlank(a, b) +#define IDirectDraw2_GetAvailableVidMem(p, a, b, c) (p)->GetAvailableVidMem(a, b, c) +#endif + +#endif + +#if defined( _WIN32 ) && !defined( _NO_COM ) +#undef INTERFACE +#define INTERFACE IDirectDraw4 +DECLARE_INTERFACE_( IDirectDraw4, IUnknown ) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + /*** IDirectDraw methods ***/ + STDMETHOD(Compact)(THIS) PURE; + STDMETHOD(CreateClipper)(THIS_ DWORD, LPDIRECTDRAWCLIPPER FAR*, IUnknown FAR * ) PURE; + STDMETHOD(CreatePalette)(THIS_ DWORD, LPPALETTEENTRY, LPDIRECTDRAWPALETTE FAR*, IUnknown FAR * ) PURE; + STDMETHOD(CreateSurface)(THIS_ LPDDSURFACEDESC2, LPDIRECTDRAWSURFACE4 FAR *, IUnknown FAR *) PURE; + STDMETHOD(DuplicateSurface)( THIS_ LPDIRECTDRAWSURFACE4, LPDIRECTDRAWSURFACE4 FAR * ) PURE; + STDMETHOD(EnumDisplayModes)( THIS_ DWORD, LPDDSURFACEDESC2, LPVOID, LPDDENUMMODESCALLBACK2 ) PURE; + STDMETHOD(EnumSurfaces)(THIS_ DWORD, LPDDSURFACEDESC2, LPVOID,LPDDENUMSURFACESCALLBACK2 ) PURE; + STDMETHOD(FlipToGDISurface)(THIS) PURE; + STDMETHOD(GetCaps)( THIS_ LPDDCAPS, LPDDCAPS) PURE; + STDMETHOD(GetDisplayMode)( THIS_ LPDDSURFACEDESC2) PURE; + STDMETHOD(GetFourCCCodes)(THIS_ LPDWORD, LPDWORD ) PURE; + STDMETHOD(GetGDISurface)(THIS_ LPDIRECTDRAWSURFACE4 FAR *) PURE; + STDMETHOD(GetMonitorFrequency)(THIS_ LPDWORD) PURE; + STDMETHOD(GetScanLine)(THIS_ LPDWORD) PURE; + STDMETHOD(GetVerticalBlankStatus)(THIS_ LPBOOL ) PURE; + STDMETHOD(Initialize)(THIS_ GUID FAR *) PURE; + STDMETHOD(RestoreDisplayMode)(THIS) PURE; + STDMETHOD(SetCooperativeLevel)(THIS_ HWND, DWORD) PURE; + STDMETHOD(SetDisplayMode)(THIS_ DWORD, DWORD,DWORD, DWORD, DWORD) PURE; + STDMETHOD(WaitForVerticalBlank)(THIS_ DWORD, HANDLE ) PURE; + /*** Added in the v2 interface ***/ + STDMETHOD(GetAvailableVidMem)(THIS_ LPDDSCAPS2, LPDWORD, LPDWORD) PURE; + /*** Added in the V4 Interface ***/ + STDMETHOD(GetSurfaceFromDC) (THIS_ HDC, LPDIRECTDRAWSURFACE4 *) PURE; + STDMETHOD(RestoreAllSurfaces)(THIS) PURE; + STDMETHOD(TestCooperativeLevel)(THIS) PURE; + STDMETHOD(GetDeviceIdentifier)(THIS_ LPDDDEVICEIDENTIFIER, DWORD ) PURE; +}; +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectDraw4_QueryInterface(p, a, b) (p)->lpVtbl->QueryInterface(p, a, b) +#define IDirectDraw4_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectDraw4_Release(p) (p)->lpVtbl->Release(p) +#define IDirectDraw4_Compact(p) (p)->lpVtbl->Compact(p) +#define IDirectDraw4_CreateClipper(p, a, b, c) (p)->lpVtbl->CreateClipper(p, a, b, c) +#define IDirectDraw4_CreatePalette(p, a, b, c, d) (p)->lpVtbl->CreatePalette(p, a, b, c, d) +#define IDirectDraw4_CreateSurface(p, a, b, c) (p)->lpVtbl->CreateSurface(p, a, b, c) +#define IDirectDraw4_DuplicateSurface(p, a, b) (p)->lpVtbl->DuplicateSurface(p, a, b) +#define IDirectDraw4_EnumDisplayModes(p, a, b, c, d) (p)->lpVtbl->EnumDisplayModes(p, a, b, c, d) +#define IDirectDraw4_EnumSurfaces(p, a, b, c, d) (p)->lpVtbl->EnumSurfaces(p, a, b, c, d) +#define IDirectDraw4_FlipToGDISurface(p) (p)->lpVtbl->FlipToGDISurface(p) +#define IDirectDraw4_GetCaps(p, a, b) (p)->lpVtbl->GetCaps(p, a, b) +#define IDirectDraw4_GetDisplayMode(p, a) (p)->lpVtbl->GetDisplayMode(p, a) +#define IDirectDraw4_GetFourCCCodes(p, a, b) (p)->lpVtbl->GetFourCCCodes(p, a, b) +#define IDirectDraw4_GetGDISurface(p, a) (p)->lpVtbl->GetGDISurface(p, a) +#define IDirectDraw4_GetMonitorFrequency(p, a) (p)->lpVtbl->GetMonitorFrequency(p, a) +#define IDirectDraw4_GetScanLine(p, a) (p)->lpVtbl->GetScanLine(p, a) +#define IDirectDraw4_GetVerticalBlankStatus(p, a) (p)->lpVtbl->GetVerticalBlankStatus(p, a) +#define IDirectDraw4_Initialize(p, a) (p)->lpVtbl->Initialize(p, a) +#define IDirectDraw4_RestoreDisplayMode(p) (p)->lpVtbl->RestoreDisplayMode(p) +#define IDirectDraw4_SetCooperativeLevel(p, a, b) (p)->lpVtbl->SetCooperativeLevel(p, a, b) +#define IDirectDraw4_SetDisplayMode(p, a, b, c, d, e) (p)->lpVtbl->SetDisplayMode(p, a, b, c, d, e) +#define IDirectDraw4_WaitForVerticalBlank(p, a, b) (p)->lpVtbl->WaitForVerticalBlank(p, a, b) +#define IDirectDraw4_GetAvailableVidMem(p, a, b, c) (p)->lpVtbl->GetAvailableVidMem(p, a, b, c) +#define IDirectDraw4_GetSurfaceFromDC(p, a, b) (p)->lpVtbl->GetSurfaceFromDC(p, a, b) +#define IDirectDraw4_RestoreAllSurfaces(p) (p)->lpVtbl->RestoreAllSurfaces(p) +#define IDirectDraw4_TestCooperativeLevel(p) (p)->lpVtbl->TestCooperativeLevel(p) +#define IDirectDraw4_GetDeviceIdentifier(p,a,b) (p)->lpVtbl->GetDeviceIdentifier(p,a,b) +#else +#define IDirectDraw4_QueryInterface(p, a, b) (p)->QueryInterface(a, b) +#define IDirectDraw4_AddRef(p) (p)->AddRef() +#define IDirectDraw4_Release(p) (p)->Release() +#define IDirectDraw4_Compact(p) (p)->Compact() +#define IDirectDraw4_CreateClipper(p, a, b, c) (p)->CreateClipper(a, b, c) +#define IDirectDraw4_CreatePalette(p, a, b, c, d) (p)->CreatePalette(a, b, c, d) +#define IDirectDraw4_CreateSurface(p, a, b, c) (p)->CreateSurface(a, b, c) +#define IDirectDraw4_DuplicateSurface(p, a, b) (p)->DuplicateSurface(a, b) +#define IDirectDraw4_EnumDisplayModes(p, a, b, c, d) (p)->EnumDisplayModes(a, b, c, d) +#define IDirectDraw4_EnumSurfaces(p, a, b, c, d) (p)->EnumSurfaces(a, b, c, d) +#define IDirectDraw4_FlipToGDISurface(p) (p)->FlipToGDISurface() +#define IDirectDraw4_GetCaps(p, a, b) (p)->GetCaps(a, b) +#define IDirectDraw4_GetDisplayMode(p, a) (p)->GetDisplayMode(a) +#define IDirectDraw4_GetFourCCCodes(p, a, b) (p)->GetFourCCCodes(a, b) +#define IDirectDraw4_GetGDISurface(p, a) (p)->GetGDISurface(a) +#define IDirectDraw4_GetMonitorFrequency(p, a) (p)->GetMonitorFrequency(a) +#define IDirectDraw4_GetScanLine(p, a) (p)->GetScanLine(a) +#define IDirectDraw4_GetVerticalBlankStatus(p, a) (p)->GetVerticalBlankStatus(a) +#define IDirectDraw4_Initialize(p, a) (p)->Initialize(a) +#define IDirectDraw4_RestoreDisplayMode(p) (p)->RestoreDisplayMode() +#define IDirectDraw4_SetCooperativeLevel(p, a, b) (p)->SetCooperativeLevel(a, b) +#define IDirectDraw4_SetDisplayMode(p, a, b, c, d, e) (p)->SetDisplayMode(a, b, c, d, e) +#define IDirectDraw4_WaitForVerticalBlank(p, a, b) (p)->WaitForVerticalBlank(a, b) +#define IDirectDraw4_GetAvailableVidMem(p, a, b, c) (p)->GetAvailableVidMem(a, b, c) +#define IDirectDraw4_GetSurfaceFromDC(p, a, b) (p)->GetSurfaceFromDC(a, b) +#define IDirectDraw4_RestoreAllSurfaces(p) (p)->RestoreAllSurfaces() +#define IDirectDraw4_TestCooperativeLevel(p) (p)->TestCooperativeLevel() +#define IDirectDraw4_GetDeviceIdentifier(p,a,b) (p)->GetDeviceIdentifier(a,b) +#endif + +#endif + +#if defined( _WIN32 ) && !defined( _NO_COM ) +#undef INTERFACE +#define INTERFACE IDirectDraw7 +DECLARE_INTERFACE_( IDirectDraw7, IUnknown ) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + /*** IDirectDraw methods ***/ + STDMETHOD(Compact)(THIS) PURE; + STDMETHOD(CreateClipper)(THIS_ DWORD, LPDIRECTDRAWCLIPPER FAR*, IUnknown FAR * ) PURE; + STDMETHOD(CreatePalette)(THIS_ DWORD, LPPALETTEENTRY, LPDIRECTDRAWPALETTE FAR*, IUnknown FAR * ) PURE; + STDMETHOD(CreateSurface)(THIS_ LPDDSURFACEDESC2, LPDIRECTDRAWSURFACE7 FAR *, IUnknown FAR *) PURE; + STDMETHOD(DuplicateSurface)( THIS_ LPDIRECTDRAWSURFACE7, LPDIRECTDRAWSURFACE7 FAR * ) PURE; + STDMETHOD(EnumDisplayModes)( THIS_ DWORD, LPDDSURFACEDESC2, LPVOID, LPDDENUMMODESCALLBACK2 ) PURE; + STDMETHOD(EnumSurfaces)(THIS_ DWORD, LPDDSURFACEDESC2, LPVOID,LPDDENUMSURFACESCALLBACK7 ) PURE; + STDMETHOD(FlipToGDISurface)(THIS) PURE; + STDMETHOD(GetCaps)( THIS_ LPDDCAPS, LPDDCAPS) PURE; + STDMETHOD(GetDisplayMode)( THIS_ LPDDSURFACEDESC2) PURE; + STDMETHOD(GetFourCCCodes)(THIS_ LPDWORD, LPDWORD ) PURE; + STDMETHOD(GetGDISurface)(THIS_ LPDIRECTDRAWSURFACE7 FAR *) PURE; + STDMETHOD(GetMonitorFrequency)(THIS_ LPDWORD) PURE; + STDMETHOD(GetScanLine)(THIS_ LPDWORD) PURE; + STDMETHOD(GetVerticalBlankStatus)(THIS_ LPBOOL ) PURE; + STDMETHOD(Initialize)(THIS_ GUID FAR *) PURE; + STDMETHOD(RestoreDisplayMode)(THIS) PURE; + STDMETHOD(SetCooperativeLevel)(THIS_ HWND, DWORD) PURE; + STDMETHOD(SetDisplayMode)(THIS_ DWORD, DWORD,DWORD, DWORD, DWORD) PURE; + STDMETHOD(WaitForVerticalBlank)(THIS_ DWORD, HANDLE ) PURE; + /*** Added in the v2 interface ***/ + STDMETHOD(GetAvailableVidMem)(THIS_ LPDDSCAPS2, LPDWORD, LPDWORD) PURE; + /*** Added in the V4 Interface ***/ + STDMETHOD(GetSurfaceFromDC) (THIS_ HDC, LPDIRECTDRAWSURFACE7 *) PURE; + STDMETHOD(RestoreAllSurfaces)(THIS) PURE; + STDMETHOD(TestCooperativeLevel)(THIS) PURE; + STDMETHOD(GetDeviceIdentifier)(THIS_ LPDDDEVICEIDENTIFIER2, DWORD ) PURE; + STDMETHOD(StartModeTest)(THIS_ LPSIZE, DWORD, DWORD ) PURE; + STDMETHOD(EvaluateMode)(THIS_ DWORD, DWORD * ) PURE; +}; +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectDraw7_QueryInterface(p, a, b) (p)->lpVtbl->QueryInterface(p, a, b) +#define IDirectDraw7_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectDraw7_Release(p) (p)->lpVtbl->Release(p) +#define IDirectDraw7_Compact(p) (p)->lpVtbl->Compact(p) +#define IDirectDraw7_CreateClipper(p, a, b, c) (p)->lpVtbl->CreateClipper(p, a, b, c) +#define IDirectDraw7_CreatePalette(p, a, b, c, d) (p)->lpVtbl->CreatePalette(p, a, b, c, d) +#define IDirectDraw7_CreateSurface(p, a, b, c) (p)->lpVtbl->CreateSurface(p, a, b, c) +#define IDirectDraw7_DuplicateSurface(p, a, b) (p)->lpVtbl->DuplicateSurface(p, a, b) +#define IDirectDraw7_EnumDisplayModes(p, a, b, c, d) (p)->lpVtbl->EnumDisplayModes(p, a, b, c, d) +#define IDirectDraw7_EnumSurfaces(p, a, b, c, d) (p)->lpVtbl->EnumSurfaces(p, a, b, c, d) +#define IDirectDraw7_FlipToGDISurface(p) (p)->lpVtbl->FlipToGDISurface(p) +#define IDirectDraw7_GetCaps(p, a, b) (p)->lpVtbl->GetCaps(p, a, b) +#define IDirectDraw7_GetDisplayMode(p, a) (p)->lpVtbl->GetDisplayMode(p, a) +#define IDirectDraw7_GetFourCCCodes(p, a, b) (p)->lpVtbl->GetFourCCCodes(p, a, b) +#define IDirectDraw7_GetGDISurface(p, a) (p)->lpVtbl->GetGDISurface(p, a) +#define IDirectDraw7_GetMonitorFrequency(p, a) (p)->lpVtbl->GetMonitorFrequency(p, a) +#define IDirectDraw7_GetScanLine(p, a) (p)->lpVtbl->GetScanLine(p, a) +#define IDirectDraw7_GetVerticalBlankStatus(p, a) (p)->lpVtbl->GetVerticalBlankStatus(p, a) +#define IDirectDraw7_Initialize(p, a) (p)->lpVtbl->Initialize(p, a) +#define IDirectDraw7_RestoreDisplayMode(p) (p)->lpVtbl->RestoreDisplayMode(p) +#define IDirectDraw7_SetCooperativeLevel(p, a, b) (p)->lpVtbl->SetCooperativeLevel(p, a, b) +#define IDirectDraw7_SetDisplayMode(p, a, b, c, d, e) (p)->lpVtbl->SetDisplayMode(p, a, b, c, d, e) +#define IDirectDraw7_WaitForVerticalBlank(p, a, b) (p)->lpVtbl->WaitForVerticalBlank(p, a, b) +#define IDirectDraw7_GetAvailableVidMem(p, a, b, c) (p)->lpVtbl->GetAvailableVidMem(p, a, b, c) +#define IDirectDraw7_GetSurfaceFromDC(p, a, b) (p)->lpVtbl->GetSurfaceFromDC(p, a, b) +#define IDirectDraw7_RestoreAllSurfaces(p) (p)->lpVtbl->RestoreAllSurfaces(p) +#define IDirectDraw7_TestCooperativeLevel(p) (p)->lpVtbl->TestCooperativeLevel(p) +#define IDirectDraw7_GetDeviceIdentifier(p,a,b) (p)->lpVtbl->GetDeviceIdentifier(p,a,b) +#define IDirectDraw7_StartModeTest(p,a,b,c) (p)->lpVtbl->StartModeTest(p,a,b,c) +#define IDirectDraw7_EvaluateMode(p,a,b) (p)->lpVtbl->EvaluateMode(p,a,b) +#else +#define IDirectDraw7_QueryInterface(p, a, b) (p)->QueryInterface(a, b) +#define IDirectDraw7_AddRef(p) (p)->AddRef() +#define IDirectDraw7_Release(p) (p)->Release() +#define IDirectDraw7_Compact(p) (p)->Compact() +#define IDirectDraw7_CreateClipper(p, a, b, c) (p)->CreateClipper(a, b, c) +#define IDirectDraw7_CreatePalette(p, a, b, c, d) (p)->CreatePalette(a, b, c, d) +#define IDirectDraw7_CreateSurface(p, a, b, c) (p)->CreateSurface(a, b, c) +#define IDirectDraw7_DuplicateSurface(p, a, b) (p)->DuplicateSurface(a, b) +#define IDirectDraw7_EnumDisplayModes(p, a, b, c, d) (p)->EnumDisplayModes(a, b, c, d) +#define IDirectDraw7_EnumSurfaces(p, a, b, c, d) (p)->EnumSurfaces(a, b, c, d) +#define IDirectDraw7_FlipToGDISurface(p) (p)->FlipToGDISurface() +#define IDirectDraw7_GetCaps(p, a, b) (p)->GetCaps(a, b) +#define IDirectDraw7_GetDisplayMode(p, a) (p)->GetDisplayMode(a) +#define IDirectDraw7_GetFourCCCodes(p, a, b) (p)->GetFourCCCodes(a, b) +#define IDirectDraw7_GetGDISurface(p, a) (p)->GetGDISurface(a) +#define IDirectDraw7_GetMonitorFrequency(p, a) (p)->GetMonitorFrequency(a) +#define IDirectDraw7_GetScanLine(p, a) (p)->GetScanLine(a) +#define IDirectDraw7_GetVerticalBlankStatus(p, a) (p)->GetVerticalBlankStatus(a) +#define IDirectDraw7_Initialize(p, a) (p)->Initialize(a) +#define IDirectDraw7_RestoreDisplayMode(p) (p)->RestoreDisplayMode() +#define IDirectDraw7_SetCooperativeLevel(p, a, b) (p)->SetCooperativeLevel(a, b) +#define IDirectDraw7_SetDisplayMode(p, a, b, c, d, e) (p)->SetDisplayMode(a, b, c, d, e) +#define IDirectDraw7_WaitForVerticalBlank(p, a, b) (p)->WaitForVerticalBlank(a, b) +#define IDirectDraw7_GetAvailableVidMem(p, a, b, c) (p)->GetAvailableVidMem(a, b, c) +#define IDirectDraw7_GetSurfaceFromDC(p, a, b) (p)->GetSurfaceFromDC(a, b) +#define IDirectDraw7_RestoreAllSurfaces(p) (p)->RestoreAllSurfaces() +#define IDirectDraw7_TestCooperativeLevel(p) (p)->TestCooperativeLevel() +#define IDirectDraw7_GetDeviceIdentifier(p,a,b) (p)->GetDeviceIdentifier(a,b) +#define IDirectDraw7_StartModeTest(p,a,b,c) (p)->lpVtbl->StartModeTest(a,b,c) +#define IDirectDraw7_EvaluateMode(p,a,b) (p)->lpVtbl->EvaluateMode(a,b) +#endif + +#endif + + +/* + * IDirectDrawPalette + */ +#if defined( _WIN32 ) && !defined( _NO_COM ) +#undef INTERFACE +#define INTERFACE IDirectDrawPalette +DECLARE_INTERFACE_( IDirectDrawPalette, IUnknown ) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + /*** IDirectDrawPalette methods ***/ + STDMETHOD(GetCaps)(THIS_ LPDWORD) PURE; + STDMETHOD(GetEntries)(THIS_ DWORD,DWORD,DWORD,LPPALETTEENTRY) PURE; + STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, DWORD, LPPALETTEENTRY) PURE; + STDMETHOD(SetEntries)(THIS_ DWORD,DWORD,DWORD,LPPALETTEENTRY) PURE; +}; + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectDrawPalette_QueryInterface(p, a, b) (p)->lpVtbl->QueryInterface(p, a, b) +#define IDirectDrawPalette_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectDrawPalette_Release(p) (p)->lpVtbl->Release(p) +#define IDirectDrawPalette_GetCaps(p, a) (p)->lpVtbl->GetCaps(p, a) +#define IDirectDrawPalette_GetEntries(p, a, b, c, d) (p)->lpVtbl->GetEntries(p, a, b, c, d) +#define IDirectDrawPalette_Initialize(p, a, b, c) (p)->lpVtbl->Initialize(p, a, b, c) +#define IDirectDrawPalette_SetEntries(p, a, b, c, d) (p)->lpVtbl->SetEntries(p, a, b, c, d) +#else +#define IDirectDrawPalette_QueryInterface(p, a, b) (p)->QueryInterface(a, b) +#define IDirectDrawPalette_AddRef(p) (p)->AddRef() +#define IDirectDrawPalette_Release(p) (p)->Release() +#define IDirectDrawPalette_GetCaps(p, a) (p)->GetCaps(a) +#define IDirectDrawPalette_GetEntries(p, a, b, c, d) (p)->GetEntries(a, b, c, d) +#define IDirectDrawPalette_Initialize(p, a, b, c) (p)->Initialize(a, b, c) +#define IDirectDrawPalette_SetEntries(p, a, b, c, d) (p)->SetEntries(a, b, c, d) +#endif + +#endif + + +/* + * IDirectDrawClipper + */ +#if defined( _WIN32 ) && !defined( _NO_COM ) +#undef INTERFACE +#define INTERFACE IDirectDrawClipper +DECLARE_INTERFACE_( IDirectDrawClipper, IUnknown ) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + /*** IDirectDrawClipper methods ***/ + STDMETHOD(GetClipList)(THIS_ LPRECT, LPRGNDATA, LPDWORD) PURE; + STDMETHOD(GetHWnd)(THIS_ HWND FAR *) PURE; + STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, DWORD) PURE; + STDMETHOD(IsClipListChanged)(THIS_ BOOL FAR *) PURE; + STDMETHOD(SetClipList)(THIS_ LPRGNDATA,DWORD) PURE; + STDMETHOD(SetHWnd)(THIS_ DWORD, HWND ) PURE; +}; + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectDrawClipper_QueryInterface(p, a, b) (p)->lpVtbl->QueryInterface(p, a, b) +#define IDirectDrawClipper_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectDrawClipper_Release(p) (p)->lpVtbl->Release(p) +#define IDirectDrawClipper_GetClipList(p, a, b, c) (p)->lpVtbl->GetClipList(p, a, b, c) +#define IDirectDrawClipper_GetHWnd(p, a) (p)->lpVtbl->GetHWnd(p, a) +#define IDirectDrawClipper_Initialize(p, a, b) (p)->lpVtbl->Initialize(p, a, b) +#define IDirectDrawClipper_IsClipListChanged(p, a) (p)->lpVtbl->IsClipListChanged(p, a) +#define IDirectDrawClipper_SetClipList(p, a, b) (p)->lpVtbl->SetClipList(p, a, b) +#define IDirectDrawClipper_SetHWnd(p, a, b) (p)->lpVtbl->SetHWnd(p, a, b) +#else +#define IDirectDrawClipper_QueryInterface(p, a, b) (p)->QueryInterface(a, b) +#define IDirectDrawClipper_AddRef(p) (p)->AddRef() +#define IDirectDrawClipper_Release(p) (p)->Release() +#define IDirectDrawClipper_GetClipList(p, a, b, c) (p)->GetClipList(a, b, c) +#define IDirectDrawClipper_GetHWnd(p, a) (p)->GetHWnd(a) +#define IDirectDrawClipper_Initialize(p, a, b) (p)->Initialize(a, b) +#define IDirectDrawClipper_IsClipListChanged(p, a) (p)->IsClipListChanged(a) +#define IDirectDrawClipper_SetClipList(p, a, b) (p)->SetClipList(a, b) +#define IDirectDrawClipper_SetHWnd(p, a, b) (p)->SetHWnd(a, b) +#endif + +#endif + +/* + * IDirectDrawSurface and related interfaces + */ +#if defined( _WIN32 ) && !defined( _NO_COM ) +#undef INTERFACE +#define INTERFACE IDirectDrawSurface +DECLARE_INTERFACE_( IDirectDrawSurface, IUnknown ) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + /*** IDirectDrawSurface methods ***/ + STDMETHOD(AddAttachedSurface)(THIS_ LPDIRECTDRAWSURFACE) PURE; + STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT) PURE; + STDMETHOD(Blt)(THIS_ LPRECT,LPDIRECTDRAWSURFACE, LPRECT,DWORD, LPDDBLTFX) PURE; + STDMETHOD(BltBatch)(THIS_ LPDDBLTBATCH, DWORD, DWORD ) PURE; + STDMETHOD(BltFast)(THIS_ DWORD,DWORD,LPDIRECTDRAWSURFACE, LPRECT,DWORD) PURE; + STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD,LPDIRECTDRAWSURFACE) PURE; + STDMETHOD(EnumAttachedSurfaces)(THIS_ LPVOID,LPDDENUMSURFACESCALLBACK) PURE; + STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD,LPVOID,LPDDENUMSURFACESCALLBACK) PURE; + STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE, DWORD) PURE; + STDMETHOD(GetAttachedSurface)(THIS_ LPDDSCAPS, LPDIRECTDRAWSURFACE FAR *) PURE; + STDMETHOD(GetBltStatus)(THIS_ DWORD) PURE; + STDMETHOD(GetCaps)(THIS_ LPDDSCAPS) PURE; + STDMETHOD(GetClipper)(THIS_ LPDIRECTDRAWCLIPPER FAR*) PURE; + STDMETHOD(GetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE; + STDMETHOD(GetDC)(THIS_ HDC FAR *) PURE; + STDMETHOD(GetFlipStatus)(THIS_ DWORD) PURE; + STDMETHOD(GetOverlayPosition)(THIS_ LPLONG, LPLONG ) PURE; + STDMETHOD(GetPalette)(THIS_ LPDIRECTDRAWPALETTE FAR*) PURE; + STDMETHOD(GetPixelFormat)(THIS_ LPDDPIXELFORMAT) PURE; + STDMETHOD(GetSurfaceDesc)(THIS_ LPDDSURFACEDESC) PURE; + STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, LPDDSURFACEDESC) PURE; + STDMETHOD(IsLost)(THIS) PURE; + STDMETHOD(Lock)(THIS_ LPRECT,LPDDSURFACEDESC,DWORD,HANDLE) PURE; + STDMETHOD(ReleaseDC)(THIS_ HDC) PURE; + STDMETHOD(Restore)(THIS) PURE; + STDMETHOD(SetClipper)(THIS_ LPDIRECTDRAWCLIPPER) PURE; + STDMETHOD(SetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE; + STDMETHOD(SetOverlayPosition)(THIS_ LONG, LONG ) PURE; + STDMETHOD(SetPalette)(THIS_ LPDIRECTDRAWPALETTE) PURE; + STDMETHOD(Unlock)(THIS_ LPVOID) PURE; + STDMETHOD(UpdateOverlay)(THIS_ LPRECT, LPDIRECTDRAWSURFACE,LPRECT,DWORD, LPDDOVERLAYFX) PURE; + STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD) PURE; + STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD, LPDIRECTDRAWSURFACE) PURE; +}; + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectDrawSurface_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDirectDrawSurface_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectDrawSurface_Release(p) (p)->lpVtbl->Release(p) +#define IDirectDrawSurface_AddAttachedSurface(p,a) (p)->lpVtbl->AddAttachedSurface(p,a) +#define IDirectDrawSurface_AddOverlayDirtyRect(p,a) (p)->lpVtbl->AddOverlayDirtyRect(p,a) +#define IDirectDrawSurface_Blt(p,a,b,c,d,e) (p)->lpVtbl->Blt(p,a,b,c,d,e) +#define IDirectDrawSurface_BltBatch(p,a,b,c) (p)->lpVtbl->BltBatch(p,a,b,c) +#define IDirectDrawSurface_BltFast(p,a,b,c,d,e) (p)->lpVtbl->BltFast(p,a,b,c,d,e) +#define IDirectDrawSurface_DeleteAttachedSurface(p,a,b) (p)->lpVtbl->DeleteAttachedSurface(p,a,b) +#define IDirectDrawSurface_EnumAttachedSurfaces(p,a,b) (p)->lpVtbl->EnumAttachedSurfaces(p,a,b) +#define IDirectDrawSurface_EnumOverlayZOrders(p,a,b,c) (p)->lpVtbl->EnumOverlayZOrders(p,a,b,c) +#define IDirectDrawSurface_Flip(p,a,b) (p)->lpVtbl->Flip(p,a,b) +#define IDirectDrawSurface_GetAttachedSurface(p,a,b) (p)->lpVtbl->GetAttachedSurface(p,a,b) +#define IDirectDrawSurface_GetBltStatus(p,a) (p)->lpVtbl->GetBltStatus(p,a) +#define IDirectDrawSurface_GetCaps(p,b) (p)->lpVtbl->GetCaps(p,b) +#define IDirectDrawSurface_GetClipper(p,a) (p)->lpVtbl->GetClipper(p,a) +#define IDirectDrawSurface_GetColorKey(p,a,b) (p)->lpVtbl->GetColorKey(p,a,b) +#define IDirectDrawSurface_GetDC(p,a) (p)->lpVtbl->GetDC(p,a) +#define IDirectDrawSurface_GetFlipStatus(p,a) (p)->lpVtbl->GetFlipStatus(p,a) +#define IDirectDrawSurface_GetOverlayPosition(p,a,b) (p)->lpVtbl->GetOverlayPosition(p,a,b) +#define IDirectDrawSurface_GetPalette(p,a) (p)->lpVtbl->GetPalette(p,a) +#define IDirectDrawSurface_GetPixelFormat(p,a) (p)->lpVtbl->GetPixelFormat(p,a) +#define IDirectDrawSurface_GetSurfaceDesc(p,a) (p)->lpVtbl->GetSurfaceDesc(p,a) +#define IDirectDrawSurface_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b) +#define IDirectDrawSurface_IsLost(p) (p)->lpVtbl->IsLost(p) +#define IDirectDrawSurface_Lock(p,a,b,c,d) (p)->lpVtbl->Lock(p,a,b,c,d) +#define IDirectDrawSurface_ReleaseDC(p,a) (p)->lpVtbl->ReleaseDC(p,a) +#define IDirectDrawSurface_Restore(p) (p)->lpVtbl->Restore(p) +#define IDirectDrawSurface_SetClipper(p,a) (p)->lpVtbl->SetClipper(p,a) +#define IDirectDrawSurface_SetColorKey(p,a,b) (p)->lpVtbl->SetColorKey(p,a,b) +#define IDirectDrawSurface_SetOverlayPosition(p,a,b) (p)->lpVtbl->SetOverlayPosition(p,a,b) +#define IDirectDrawSurface_SetPalette(p,a) (p)->lpVtbl->SetPalette(p,a) +#define IDirectDrawSurface_Unlock(p,b) (p)->lpVtbl->Unlock(p,b) +#define IDirectDrawSurface_UpdateOverlay(p,a,b,c,d,e) (p)->lpVtbl->UpdateOverlay(p,a,b,c,d,e) +#define IDirectDrawSurface_UpdateOverlayDisplay(p,a) (p)->lpVtbl->UpdateOverlayDisplay(p,a) +#define IDirectDrawSurface_UpdateOverlayZOrder(p,a,b) (p)->lpVtbl->UpdateOverlayZOrder(p,a,b) +#else +#define IDirectDrawSurface_QueryInterface(p,a,b) (p)->QueryInterface(a,b) +#define IDirectDrawSurface_AddRef(p) (p)->AddRef() +#define IDirectDrawSurface_Release(p) (p)->Release() +#define IDirectDrawSurface_AddAttachedSurface(p,a) (p)->AddAttachedSurface(a) +#define IDirectDrawSurface_AddOverlayDirtyRect(p,a) (p)->AddOverlayDirtyRect(a) +#define IDirectDrawSurface_Blt(p,a,b,c,d,e) (p)->Blt(a,b,c,d,e) +#define IDirectDrawSurface_BltBatch(p,a,b,c) (p)->BltBatch(a,b,c) +#define IDirectDrawSurface_BltFast(p,a,b,c,d,e) (p)->BltFast(a,b,c,d,e) +#define IDirectDrawSurface_DeleteAttachedSurface(p,a,b) (p)->DeleteAttachedSurface(a,b) +#define IDirectDrawSurface_EnumAttachedSurfaces(p,a,b) (p)->EnumAttachedSurfaces(a,b) +#define IDirectDrawSurface_EnumOverlayZOrders(p,a,b,c) (p)->EnumOverlayZOrders(a,b,c) +#define IDirectDrawSurface_Flip(p,a,b) (p)->Flip(a,b) +#define IDirectDrawSurface_GetAttachedSurface(p,a,b) (p)->GetAttachedSurface(a,b) +#define IDirectDrawSurface_GetBltStatus(p,a) (p)->GetBltStatus(a) +#define IDirectDrawSurface_GetCaps(p,b) (p)->GetCaps(b) +#define IDirectDrawSurface_GetClipper(p,a) (p)->GetClipper(a) +#define IDirectDrawSurface_GetColorKey(p,a,b) (p)->GetColorKey(a,b) +#define IDirectDrawSurface_GetDC(p,a) (p)->GetDC(a) +#define IDirectDrawSurface_GetFlipStatus(p,a) (p)->GetFlipStatus(a) +#define IDirectDrawSurface_GetOverlayPosition(p,a,b) (p)->GetOverlayPosition(a,b) +#define IDirectDrawSurface_GetPalette(p,a) (p)->GetPalette(a) +#define IDirectDrawSurface_GetPixelFormat(p,a) (p)->GetPixelFormat(a) +#define IDirectDrawSurface_GetSurfaceDesc(p,a) (p)->GetSurfaceDesc(a) +#define IDirectDrawSurface_Initialize(p,a,b) (p)->Initialize(a,b) +#define IDirectDrawSurface_IsLost(p) (p)->IsLost() +#define IDirectDrawSurface_Lock(p,a,b,c,d) (p)->Lock(a,b,c,d) +#define IDirectDrawSurface_ReleaseDC(p,a) (p)->ReleaseDC(a) +#define IDirectDrawSurface_Restore(p) (p)->Restore() +#define IDirectDrawSurface_SetClipper(p,a) (p)->SetClipper(a) +#define IDirectDrawSurface_SetColorKey(p,a,b) (p)->SetColorKey(a,b) +#define IDirectDrawSurface_SetOverlayPosition(p,a,b) (p)->SetOverlayPosition(a,b) +#define IDirectDrawSurface_SetPalette(p,a) (p)->SetPalette(a) +#define IDirectDrawSurface_Unlock(p,b) (p)->Unlock(b) +#define IDirectDrawSurface_UpdateOverlay(p,a,b,c,d,e) (p)->UpdateOverlay(a,b,c,d,e) +#define IDirectDrawSurface_UpdateOverlayDisplay(p,a) (p)->UpdateOverlayDisplay(a) +#define IDirectDrawSurface_UpdateOverlayZOrder(p,a,b) (p)->UpdateOverlayZOrder(a,b) +#endif + +/* + * IDirectDrawSurface2 and related interfaces + */ +#undef INTERFACE +#define INTERFACE IDirectDrawSurface2 +DECLARE_INTERFACE_( IDirectDrawSurface2, IUnknown ) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + /*** IDirectDrawSurface methods ***/ + STDMETHOD(AddAttachedSurface)(THIS_ LPDIRECTDRAWSURFACE2) PURE; + STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT) PURE; + STDMETHOD(Blt)(THIS_ LPRECT,LPDIRECTDRAWSURFACE2, LPRECT,DWORD, LPDDBLTFX) PURE; + STDMETHOD(BltBatch)(THIS_ LPDDBLTBATCH, DWORD, DWORD ) PURE; + STDMETHOD(BltFast)(THIS_ DWORD,DWORD,LPDIRECTDRAWSURFACE2, LPRECT,DWORD) PURE; + STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD,LPDIRECTDRAWSURFACE2) PURE; + STDMETHOD(EnumAttachedSurfaces)(THIS_ LPVOID,LPDDENUMSURFACESCALLBACK) PURE; + STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD,LPVOID,LPDDENUMSURFACESCALLBACK) PURE; + STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE2, DWORD) PURE; + STDMETHOD(GetAttachedSurface)(THIS_ LPDDSCAPS, LPDIRECTDRAWSURFACE2 FAR *) PURE; + STDMETHOD(GetBltStatus)(THIS_ DWORD) PURE; + STDMETHOD(GetCaps)(THIS_ LPDDSCAPS) PURE; + STDMETHOD(GetClipper)(THIS_ LPDIRECTDRAWCLIPPER FAR*) PURE; + STDMETHOD(GetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE; + STDMETHOD(GetDC)(THIS_ HDC FAR *) PURE; + STDMETHOD(GetFlipStatus)(THIS_ DWORD) PURE; + STDMETHOD(GetOverlayPosition)(THIS_ LPLONG, LPLONG ) PURE; + STDMETHOD(GetPalette)(THIS_ LPDIRECTDRAWPALETTE FAR*) PURE; + STDMETHOD(GetPixelFormat)(THIS_ LPDDPIXELFORMAT) PURE; + STDMETHOD(GetSurfaceDesc)(THIS_ LPDDSURFACEDESC) PURE; + STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, LPDDSURFACEDESC) PURE; + STDMETHOD(IsLost)(THIS) PURE; + STDMETHOD(Lock)(THIS_ LPRECT,LPDDSURFACEDESC,DWORD,HANDLE) PURE; + STDMETHOD(ReleaseDC)(THIS_ HDC) PURE; + STDMETHOD(Restore)(THIS) PURE; + STDMETHOD(SetClipper)(THIS_ LPDIRECTDRAWCLIPPER) PURE; + STDMETHOD(SetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE; + STDMETHOD(SetOverlayPosition)(THIS_ LONG, LONG ) PURE; + STDMETHOD(SetPalette)(THIS_ LPDIRECTDRAWPALETTE) PURE; + STDMETHOD(Unlock)(THIS_ LPVOID) PURE; + STDMETHOD(UpdateOverlay)(THIS_ LPRECT, LPDIRECTDRAWSURFACE2,LPRECT,DWORD, LPDDOVERLAYFX) PURE; + STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD) PURE; + STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD, LPDIRECTDRAWSURFACE2) PURE; + /*** Added in the v2 interface ***/ + STDMETHOD(GetDDInterface)(THIS_ LPVOID FAR *) PURE; + STDMETHOD(PageLock)(THIS_ DWORD) PURE; + STDMETHOD(PageUnlock)(THIS_ DWORD) PURE; +}; + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectDrawSurface2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDirectDrawSurface2_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectDrawSurface2_Release(p) (p)->lpVtbl->Release(p) +#define IDirectDrawSurface2_AddAttachedSurface(p,a) (p)->lpVtbl->AddAttachedSurface(p,a) +#define IDirectDrawSurface2_AddOverlayDirtyRect(p,a) (p)->lpVtbl->AddOverlayDirtyRect(p,a) +#define IDirectDrawSurface2_Blt(p,a,b,c,d,e) (p)->lpVtbl->Blt(p,a,b,c,d,e) +#define IDirectDrawSurface2_BltBatch(p,a,b,c) (p)->lpVtbl->BltBatch(p,a,b,c) +#define IDirectDrawSurface2_BltFast(p,a,b,c,d,e) (p)->lpVtbl->BltFast(p,a,b,c,d,e) +#define IDirectDrawSurface2_DeleteAttachedSurface(p,a,b) (p)->lpVtbl->DeleteAttachedSurface(p,a,b) +#define IDirectDrawSurface2_EnumAttachedSurfaces(p,a,b) (p)->lpVtbl->EnumAttachedSurfaces(p,a,b) +#define IDirectDrawSurface2_EnumOverlayZOrders(p,a,b,c) (p)->lpVtbl->EnumOverlayZOrders(p,a,b,c) +#define IDirectDrawSurface2_Flip(p,a,b) (p)->lpVtbl->Flip(p,a,b) +#define IDirectDrawSurface2_GetAttachedSurface(p,a,b) (p)->lpVtbl->GetAttachedSurface(p,a,b) +#define IDirectDrawSurface2_GetBltStatus(p,a) (p)->lpVtbl->GetBltStatus(p,a) +#define IDirectDrawSurface2_GetCaps(p,b) (p)->lpVtbl->GetCaps(p,b) +#define IDirectDrawSurface2_GetClipper(p,a) (p)->lpVtbl->GetClipper(p,a) +#define IDirectDrawSurface2_GetColorKey(p,a,b) (p)->lpVtbl->GetColorKey(p,a,b) +#define IDirectDrawSurface2_GetDC(p,a) (p)->lpVtbl->GetDC(p,a) +#define IDirectDrawSurface2_GetFlipStatus(p,a) (p)->lpVtbl->GetFlipStatus(p,a) +#define IDirectDrawSurface2_GetOverlayPosition(p,a,b) (p)->lpVtbl->GetOverlayPosition(p,a,b) +#define IDirectDrawSurface2_GetPalette(p,a) (p)->lpVtbl->GetPalette(p,a) +#define IDirectDrawSurface2_GetPixelFormat(p,a) (p)->lpVtbl->GetPixelFormat(p,a) +#define IDirectDrawSurface2_GetSurfaceDesc(p,a) (p)->lpVtbl->GetSurfaceDesc(p,a) +#define IDirectDrawSurface2_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b) +#define IDirectDrawSurface2_IsLost(p) (p)->lpVtbl->IsLost(p) +#define IDirectDrawSurface2_Lock(p,a,b,c,d) (p)->lpVtbl->Lock(p,a,b,c,d) +#define IDirectDrawSurface2_ReleaseDC(p,a) (p)->lpVtbl->ReleaseDC(p,a) +#define IDirectDrawSurface2_Restore(p) (p)->lpVtbl->Restore(p) +#define IDirectDrawSurface2_SetClipper(p,a) (p)->lpVtbl->SetClipper(p,a) +#define IDirectDrawSurface2_SetColorKey(p,a,b) (p)->lpVtbl->SetColorKey(p,a,b) +#define IDirectDrawSurface2_SetOverlayPosition(p,a,b) (p)->lpVtbl->SetOverlayPosition(p,a,b) +#define IDirectDrawSurface2_SetPalette(p,a) (p)->lpVtbl->SetPalette(p,a) +#define IDirectDrawSurface2_Unlock(p,b) (p)->lpVtbl->Unlock(p,b) +#define IDirectDrawSurface2_UpdateOverlay(p,a,b,c,d,e) (p)->lpVtbl->UpdateOverlay(p,a,b,c,d,e) +#define IDirectDrawSurface2_UpdateOverlayDisplay(p,a) (p)->lpVtbl->UpdateOverlayDisplay(p,a) +#define IDirectDrawSurface2_UpdateOverlayZOrder(p,a,b) (p)->lpVtbl->UpdateOverlayZOrder(p,a,b) +#define IDirectDrawSurface2_GetDDInterface(p,a) (p)->lpVtbl->GetDDInterface(p,a) +#define IDirectDrawSurface2_PageLock(p,a) (p)->lpVtbl->PageLock(p,a) +#define IDirectDrawSurface2_PageUnlock(p,a) (p)->lpVtbl->PageUnlock(p,a) +#else +#define IDirectDrawSurface2_QueryInterface(p,a,b) (p)->QueryInterface(a,b) +#define IDirectDrawSurface2_AddRef(p) (p)->AddRef() +#define IDirectDrawSurface2_Release(p) (p)->Release() +#define IDirectDrawSurface2_AddAttachedSurface(p,a) (p)->AddAttachedSurface(a) +#define IDirectDrawSurface2_AddOverlayDirtyRect(p,a) (p)->AddOverlayDirtyRect(a) +#define IDirectDrawSurface2_Blt(p,a,b,c,d,e) (p)->Blt(a,b,c,d,e) +#define IDirectDrawSurface2_BltBatch(p,a,b,c) (p)->BltBatch(a,b,c) +#define IDirectDrawSurface2_BltFast(p,a,b,c,d,e) (p)->BltFast(a,b,c,d,e) +#define IDirectDrawSurface2_DeleteAttachedSurface(p,a,b) (p)->DeleteAttachedSurface(a,b) +#define IDirectDrawSurface2_EnumAttachedSurfaces(p,a,b) (p)->EnumAttachedSurfaces(a,b) +#define IDirectDrawSurface2_EnumOverlayZOrders(p,a,b,c) (p)->EnumOverlayZOrders(a,b,c) +#define IDirectDrawSurface2_Flip(p,a,b) (p)->Flip(a,b) +#define IDirectDrawSurface2_GetAttachedSurface(p,a,b) (p)->GetAttachedSurface(a,b) +#define IDirectDrawSurface2_GetBltStatus(p,a) (p)->GetBltStatus(a) +#define IDirectDrawSurface2_GetCaps(p,b) (p)->GetCaps(b) +#define IDirectDrawSurface2_GetClipper(p,a) (p)->GetClipper(a) +#define IDirectDrawSurface2_GetColorKey(p,a,b) (p)->GetColorKey(a,b) +#define IDirectDrawSurface2_GetDC(p,a) (p)->GetDC(a) +#define IDirectDrawSurface2_GetFlipStatus(p,a) (p)->GetFlipStatus(a) +#define IDirectDrawSurface2_GetOverlayPosition(p,a,b) (p)->GetOverlayPosition(a,b) +#define IDirectDrawSurface2_GetPalette(p,a) (p)->GetPalette(a) +#define IDirectDrawSurface2_GetPixelFormat(p,a) (p)->GetPixelFormat(a) +#define IDirectDrawSurface2_GetSurfaceDesc(p,a) (p)->GetSurfaceDesc(a) +#define IDirectDrawSurface2_Initialize(p,a,b) (p)->Initialize(a,b) +#define IDirectDrawSurface2_IsLost(p) (p)->IsLost() +#define IDirectDrawSurface2_Lock(p,a,b,c,d) (p)->Lock(a,b,c,d) +#define IDirectDrawSurface2_ReleaseDC(p,a) (p)->ReleaseDC(a) +#define IDirectDrawSurface2_Restore(p) (p)->Restore() +#define IDirectDrawSurface2_SetClipper(p,a) (p)->SetClipper(a) +#define IDirectDrawSurface2_SetColorKey(p,a,b) (p)->SetColorKey(a,b) +#define IDirectDrawSurface2_SetOverlayPosition(p,a,b) (p)->SetOverlayPosition(a,b) +#define IDirectDrawSurface2_SetPalette(p,a) (p)->SetPalette(a) +#define IDirectDrawSurface2_Unlock(p,b) (p)->Unlock(b) +#define IDirectDrawSurface2_UpdateOverlay(p,a,b,c,d,e) (p)->UpdateOverlay(a,b,c,d,e) +#define IDirectDrawSurface2_UpdateOverlayDisplay(p,a) (p)->UpdateOverlayDisplay(a) +#define IDirectDrawSurface2_UpdateOverlayZOrder(p,a,b) (p)->UpdateOverlayZOrder(a,b) +#define IDirectDrawSurface2_GetDDInterface(p,a) (p)->GetDDInterface(a) +#define IDirectDrawSurface2_PageLock(p,a) (p)->PageLock(a) +#define IDirectDrawSurface2_PageUnlock(p,a) (p)->PageUnlock(a) +#endif + +/* + * IDirectDrawSurface3 and related interfaces + */ +#undef INTERFACE +#define INTERFACE IDirectDrawSurface3 +DECLARE_INTERFACE_( IDirectDrawSurface3, IUnknown ) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + /*** IDirectDrawSurface methods ***/ + STDMETHOD(AddAttachedSurface)(THIS_ LPDIRECTDRAWSURFACE3) PURE; + STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT) PURE; + STDMETHOD(Blt)(THIS_ LPRECT,LPDIRECTDRAWSURFACE3, LPRECT,DWORD, LPDDBLTFX) PURE; + STDMETHOD(BltBatch)(THIS_ LPDDBLTBATCH, DWORD, DWORD ) PURE; + STDMETHOD(BltFast)(THIS_ DWORD,DWORD,LPDIRECTDRAWSURFACE3, LPRECT,DWORD) PURE; + STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD,LPDIRECTDRAWSURFACE3) PURE; + STDMETHOD(EnumAttachedSurfaces)(THIS_ LPVOID,LPDDENUMSURFACESCALLBACK) PURE; + STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD,LPVOID,LPDDENUMSURFACESCALLBACK) PURE; + STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE3, DWORD) PURE; + STDMETHOD(GetAttachedSurface)(THIS_ LPDDSCAPS, LPDIRECTDRAWSURFACE3 FAR *) PURE; + STDMETHOD(GetBltStatus)(THIS_ DWORD) PURE; + STDMETHOD(GetCaps)(THIS_ LPDDSCAPS) PURE; + STDMETHOD(GetClipper)(THIS_ LPDIRECTDRAWCLIPPER FAR*) PURE; + STDMETHOD(GetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE; + STDMETHOD(GetDC)(THIS_ HDC FAR *) PURE; + STDMETHOD(GetFlipStatus)(THIS_ DWORD) PURE; + STDMETHOD(GetOverlayPosition)(THIS_ LPLONG, LPLONG ) PURE; + STDMETHOD(GetPalette)(THIS_ LPDIRECTDRAWPALETTE FAR*) PURE; + STDMETHOD(GetPixelFormat)(THIS_ LPDDPIXELFORMAT) PURE; + STDMETHOD(GetSurfaceDesc)(THIS_ LPDDSURFACEDESC) PURE; + STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, LPDDSURFACEDESC) PURE; + STDMETHOD(IsLost)(THIS) PURE; + STDMETHOD(Lock)(THIS_ LPRECT,LPDDSURFACEDESC,DWORD,HANDLE) PURE; + STDMETHOD(ReleaseDC)(THIS_ HDC) PURE; + STDMETHOD(Restore)(THIS) PURE; + STDMETHOD(SetClipper)(THIS_ LPDIRECTDRAWCLIPPER) PURE; + STDMETHOD(SetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE; + STDMETHOD(SetOverlayPosition)(THIS_ LONG, LONG ) PURE; + STDMETHOD(SetPalette)(THIS_ LPDIRECTDRAWPALETTE) PURE; + STDMETHOD(Unlock)(THIS_ LPVOID) PURE; + STDMETHOD(UpdateOverlay)(THIS_ LPRECT, LPDIRECTDRAWSURFACE3,LPRECT,DWORD, LPDDOVERLAYFX) PURE; + STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD) PURE; + STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD, LPDIRECTDRAWSURFACE3) PURE; + /*** Added in the v2 interface ***/ + STDMETHOD(GetDDInterface)(THIS_ LPVOID FAR *) PURE; + STDMETHOD(PageLock)(THIS_ DWORD) PURE; + STDMETHOD(PageUnlock)(THIS_ DWORD) PURE; + /*** Added in the V3 interface ***/ + STDMETHOD(SetSurfaceDesc)(THIS_ LPDDSURFACEDESC, DWORD) PURE; +}; + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectDrawSurface3_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDirectDrawSurface3_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectDrawSurface3_Release(p) (p)->lpVtbl->Release(p) +#define IDirectDrawSurface3_AddAttachedSurface(p,a) (p)->lpVtbl->AddAttachedSurface(p,a) +#define IDirectDrawSurface3_AddOverlayDirtyRect(p,a) (p)->lpVtbl->AddOverlayDirtyRect(p,a) +#define IDirectDrawSurface3_Blt(p,a,b,c,d,e) (p)->lpVtbl->Blt(p,a,b,c,d,e) +#define IDirectDrawSurface3_BltBatch(p,a,b,c) (p)->lpVtbl->BltBatch(p,a,b,c) +#define IDirectDrawSurface3_BltFast(p,a,b,c,d,e) (p)->lpVtbl->BltFast(p,a,b,c,d,e) +#define IDirectDrawSurface3_DeleteAttachedSurface(p,a,b) (p)->lpVtbl->DeleteAttachedSurface(p,a,b) +#define IDirectDrawSurface3_EnumAttachedSurfaces(p,a,b) (p)->lpVtbl->EnumAttachedSurfaces(p,a,b) +#define IDirectDrawSurface3_EnumOverlayZOrders(p,a,b,c) (p)->lpVtbl->EnumOverlayZOrders(p,a,b,c) +#define IDirectDrawSurface3_Flip(p,a,b) (p)->lpVtbl->Flip(p,a,b) +#define IDirectDrawSurface3_GetAttachedSurface(p,a,b) (p)->lpVtbl->GetAttachedSurface(p,a,b) +#define IDirectDrawSurface3_GetBltStatus(p,a) (p)->lpVtbl->GetBltStatus(p,a) +#define IDirectDrawSurface3_GetCaps(p,b) (p)->lpVtbl->GetCaps(p,b) +#define IDirectDrawSurface3_GetClipper(p,a) (p)->lpVtbl->GetClipper(p,a) +#define IDirectDrawSurface3_GetColorKey(p,a,b) (p)->lpVtbl->GetColorKey(p,a,b) +#define IDirectDrawSurface3_GetDC(p,a) (p)->lpVtbl->GetDC(p,a) +#define IDirectDrawSurface3_GetFlipStatus(p,a) (p)->lpVtbl->GetFlipStatus(p,a) +#define IDirectDrawSurface3_GetOverlayPosition(p,a,b) (p)->lpVtbl->GetOverlayPosition(p,a,b) +#define IDirectDrawSurface3_GetPalette(p,a) (p)->lpVtbl->GetPalette(p,a) +#define IDirectDrawSurface3_GetPixelFormat(p,a) (p)->lpVtbl->GetPixelFormat(p,a) +#define IDirectDrawSurface3_GetSurfaceDesc(p,a) (p)->lpVtbl->GetSurfaceDesc(p,a) +#define IDirectDrawSurface3_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b) +#define IDirectDrawSurface3_IsLost(p) (p)->lpVtbl->IsLost(p) +#define IDirectDrawSurface3_Lock(p,a,b,c,d) (p)->lpVtbl->Lock(p,a,b,c,d) +#define IDirectDrawSurface3_ReleaseDC(p,a) (p)->lpVtbl->ReleaseDC(p,a) +#define IDirectDrawSurface3_Restore(p) (p)->lpVtbl->Restore(p) +#define IDirectDrawSurface3_SetClipper(p,a) (p)->lpVtbl->SetClipper(p,a) +#define IDirectDrawSurface3_SetColorKey(p,a,b) (p)->lpVtbl->SetColorKey(p,a,b) +#define IDirectDrawSurface3_SetOverlayPosition(p,a,b) (p)->lpVtbl->SetOverlayPosition(p,a,b) +#define IDirectDrawSurface3_SetPalette(p,a) (p)->lpVtbl->SetPalette(p,a) +#define IDirectDrawSurface3_Unlock(p,b) (p)->lpVtbl->Unlock(p,b) +#define IDirectDrawSurface3_UpdateOverlay(p,a,b,c,d,e) (p)->lpVtbl->UpdateOverlay(p,a,b,c,d,e) +#define IDirectDrawSurface3_UpdateOverlayDisplay(p,a) (p)->lpVtbl->UpdateOverlayDisplay(p,a) +#define IDirectDrawSurface3_UpdateOverlayZOrder(p,a,b) (p)->lpVtbl->UpdateOverlayZOrder(p,a,b) +#define IDirectDrawSurface3_GetDDInterface(p,a) (p)->lpVtbl->GetDDInterface(p,a) +#define IDirectDrawSurface3_PageLock(p,a) (p)->lpVtbl->PageLock(p,a) +#define IDirectDrawSurface3_PageUnlock(p,a) (p)->lpVtbl->PageUnlock(p,a) +#define IDirectDrawSurface3_SetSurfaceDesc(p,a,b) (p)->lpVtbl->SetSurfaceDesc(p,a,b) +#else +#define IDirectDrawSurface3_QueryInterface(p,a,b) (p)->QueryInterface(a,b) +#define IDirectDrawSurface3_AddRef(p) (p)->AddRef() +#define IDirectDrawSurface3_Release(p) (p)->Release() +#define IDirectDrawSurface3_AddAttachedSurface(p,a) (p)->AddAttachedSurface(a) +#define IDirectDrawSurface3_AddOverlayDirtyRect(p,a) (p)->AddOverlayDirtyRect(a) +#define IDirectDrawSurface3_Blt(p,a,b,c,d,e) (p)->Blt(a,b,c,d,e) +#define IDirectDrawSurface3_BltBatch(p,a,b,c) (p)->BltBatch(a,b,c) +#define IDirectDrawSurface3_BltFast(p,a,b,c,d,e) (p)->BltFast(a,b,c,d,e) +#define IDirectDrawSurface3_DeleteAttachedSurface(p,a,b) (p)->DeleteAttachedSurface(a,b) +#define IDirectDrawSurface3_EnumAttachedSurfaces(p,a,b) (p)->EnumAttachedSurfaces(a,b) +#define IDirectDrawSurface3_EnumOverlayZOrders(p,a,b,c) (p)->EnumOverlayZOrders(a,b,c) +#define IDirectDrawSurface3_Flip(p,a,b) (p)->Flip(a,b) +#define IDirectDrawSurface3_GetAttachedSurface(p,a,b) (p)->GetAttachedSurface(a,b) +#define IDirectDrawSurface3_GetBltStatus(p,a) (p)->GetBltStatus(a) +#define IDirectDrawSurface3_GetCaps(p,b) (p)->GetCaps(b) +#define IDirectDrawSurface3_GetClipper(p,a) (p)->GetClipper(a) +#define IDirectDrawSurface3_GetColorKey(p,a,b) (p)->GetColorKey(a,b) +#define IDirectDrawSurface3_GetDC(p,a) (p)->GetDC(a) +#define IDirectDrawSurface3_GetFlipStatus(p,a) (p)->GetFlipStatus(a) +#define IDirectDrawSurface3_GetOverlayPosition(p,a,b) (p)->GetOverlayPosition(a,b) +#define IDirectDrawSurface3_GetPalette(p,a) (p)->GetPalette(a) +#define IDirectDrawSurface3_GetPixelFormat(p,a) (p)->GetPixelFormat(a) +#define IDirectDrawSurface3_GetSurfaceDesc(p,a) (p)->GetSurfaceDesc(a) +#define IDirectDrawSurface3_Initialize(p,a,b) (p)->Initialize(a,b) +#define IDirectDrawSurface3_IsLost(p) (p)->IsLost() +#define IDirectDrawSurface3_Lock(p,a,b,c,d) (p)->Lock(a,b,c,d) +#define IDirectDrawSurface3_ReleaseDC(p,a) (p)->ReleaseDC(a) +#define IDirectDrawSurface3_Restore(p) (p)->Restore() +#define IDirectDrawSurface3_SetClipper(p,a) (p)->SetClipper(a) +#define IDirectDrawSurface3_SetColorKey(p,a,b) (p)->SetColorKey(a,b) +#define IDirectDrawSurface3_SetOverlayPosition(p,a,b) (p)->SetOverlayPosition(a,b) +#define IDirectDrawSurface3_SetPalette(p,a) (p)->SetPalette(a) +#define IDirectDrawSurface3_Unlock(p,b) (p)->Unlock(b) +#define IDirectDrawSurface3_UpdateOverlay(p,a,b,c,d,e) (p)->UpdateOverlay(a,b,c,d,e) +#define IDirectDrawSurface3_UpdateOverlayDisplay(p,a) (p)->UpdateOverlayDisplay(a) +#define IDirectDrawSurface3_UpdateOverlayZOrder(p,a,b) (p)->UpdateOverlayZOrder(a,b) +#define IDirectDrawSurface3_GetDDInterface(p,a) (p)->GetDDInterface(a) +#define IDirectDrawSurface3_PageLock(p,a) (p)->PageLock(a) +#define IDirectDrawSurface3_PageUnlock(p,a) (p)->PageUnlock(a) +#define IDirectDrawSurface3_SetSurfaceDesc(p,a,b) (p)->SetSurfaceDesc(a,b) +#endif + +/* + * IDirectDrawSurface4 and related interfaces + */ +#undef INTERFACE +#define INTERFACE IDirectDrawSurface4 +DECLARE_INTERFACE_( IDirectDrawSurface4, IUnknown ) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + /*** IDirectDrawSurface methods ***/ + STDMETHOD(AddAttachedSurface)(THIS_ LPDIRECTDRAWSURFACE4) PURE; + STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT) PURE; + STDMETHOD(Blt)(THIS_ LPRECT,LPDIRECTDRAWSURFACE4, LPRECT,DWORD, LPDDBLTFX) PURE; + STDMETHOD(BltBatch)(THIS_ LPDDBLTBATCH, DWORD, DWORD ) PURE; + STDMETHOD(BltFast)(THIS_ DWORD,DWORD,LPDIRECTDRAWSURFACE4, LPRECT,DWORD) PURE; + STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD,LPDIRECTDRAWSURFACE4) PURE; + STDMETHOD(EnumAttachedSurfaces)(THIS_ LPVOID,LPDDENUMSURFACESCALLBACK2) PURE; + STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD,LPVOID,LPDDENUMSURFACESCALLBACK2) PURE; + STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE4, DWORD) PURE; + STDMETHOD(GetAttachedSurface)(THIS_ LPDDSCAPS2, LPDIRECTDRAWSURFACE4 FAR *) PURE; + STDMETHOD(GetBltStatus)(THIS_ DWORD) PURE; + STDMETHOD(GetCaps)(THIS_ LPDDSCAPS2) PURE; + STDMETHOD(GetClipper)(THIS_ LPDIRECTDRAWCLIPPER FAR*) PURE; + STDMETHOD(GetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE; + STDMETHOD(GetDC)(THIS_ HDC FAR *) PURE; + STDMETHOD(GetFlipStatus)(THIS_ DWORD) PURE; + STDMETHOD(GetOverlayPosition)(THIS_ LPLONG, LPLONG ) PURE; + STDMETHOD(GetPalette)(THIS_ LPDIRECTDRAWPALETTE FAR*) PURE; + STDMETHOD(GetPixelFormat)(THIS_ LPDDPIXELFORMAT) PURE; + STDMETHOD(GetSurfaceDesc)(THIS_ LPDDSURFACEDESC2) PURE; + STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, LPDDSURFACEDESC2) PURE; + STDMETHOD(IsLost)(THIS) PURE; + STDMETHOD(Lock)(THIS_ LPRECT,LPDDSURFACEDESC2,DWORD,HANDLE) PURE; + STDMETHOD(ReleaseDC)(THIS_ HDC) PURE; + STDMETHOD(Restore)(THIS) PURE; + STDMETHOD(SetClipper)(THIS_ LPDIRECTDRAWCLIPPER) PURE; + STDMETHOD(SetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE; + STDMETHOD(SetOverlayPosition)(THIS_ LONG, LONG ) PURE; + STDMETHOD(SetPalette)(THIS_ LPDIRECTDRAWPALETTE) PURE; + STDMETHOD(Unlock)(THIS_ LPRECT) PURE; + STDMETHOD(UpdateOverlay)(THIS_ LPRECT, LPDIRECTDRAWSURFACE4,LPRECT,DWORD, LPDDOVERLAYFX) PURE; + STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD) PURE; + STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD, LPDIRECTDRAWSURFACE4) PURE; + /*** Added in the v2 interface ***/ + STDMETHOD(GetDDInterface)(THIS_ LPVOID FAR *) PURE; + STDMETHOD(PageLock)(THIS_ DWORD) PURE; + STDMETHOD(PageUnlock)(THIS_ DWORD) PURE; + /*** Added in the v3 interface ***/ + STDMETHOD(SetSurfaceDesc)(THIS_ LPDDSURFACEDESC2, DWORD) PURE; + /*** Added in the v4 interface ***/ + STDMETHOD(SetPrivateData)(THIS_ REFGUID, LPVOID, DWORD, DWORD) PURE; + STDMETHOD(GetPrivateData)(THIS_ REFGUID, LPVOID, LPDWORD) PURE; + STDMETHOD(FreePrivateData)(THIS_ REFGUID) PURE; + STDMETHOD(GetUniquenessValue)(THIS_ LPDWORD) PURE; + STDMETHOD(ChangeUniquenessValue)(THIS) PURE; +}; + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectDrawSurface4_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDirectDrawSurface4_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectDrawSurface4_Release(p) (p)->lpVtbl->Release(p) +#define IDirectDrawSurface4_AddAttachedSurface(p,a) (p)->lpVtbl->AddAttachedSurface(p,a) +#define IDirectDrawSurface4_AddOverlayDirtyRect(p,a) (p)->lpVtbl->AddOverlayDirtyRect(p,a) +#define IDirectDrawSurface4_Blt(p,a,b,c,d,e) (p)->lpVtbl->Blt(p,a,b,c,d,e) +#define IDirectDrawSurface4_BltBatch(p,a,b,c) (p)->lpVtbl->BltBatch(p,a,b,c) +#define IDirectDrawSurface4_BltFast(p,a,b,c,d,e) (p)->lpVtbl->BltFast(p,a,b,c,d,e) +#define IDirectDrawSurface4_DeleteAttachedSurface(p,a,b) (p)->lpVtbl->DeleteAttachedSurface(p,a,b) +#define IDirectDrawSurface4_EnumAttachedSurfaces(p,a,b) (p)->lpVtbl->EnumAttachedSurfaces(p,a,b) +#define IDirectDrawSurface4_EnumOverlayZOrders(p,a,b,c) (p)->lpVtbl->EnumOverlayZOrders(p,a,b,c) +#define IDirectDrawSurface4_Flip(p,a,b) (p)->lpVtbl->Flip(p,a,b) +#define IDirectDrawSurface4_GetAttachedSurface(p,a,b) (p)->lpVtbl->GetAttachedSurface(p,a,b) +#define IDirectDrawSurface4_GetBltStatus(p,a) (p)->lpVtbl->GetBltStatus(p,a) +#define IDirectDrawSurface4_GetCaps(p,b) (p)->lpVtbl->GetCaps(p,b) +#define IDirectDrawSurface4_GetClipper(p,a) (p)->lpVtbl->GetClipper(p,a) +#define IDirectDrawSurface4_GetColorKey(p,a,b) (p)->lpVtbl->GetColorKey(p,a,b) +#define IDirectDrawSurface4_GetDC(p,a) (p)->lpVtbl->GetDC(p,a) +#define IDirectDrawSurface4_GetFlipStatus(p,a) (p)->lpVtbl->GetFlipStatus(p,a) +#define IDirectDrawSurface4_GetOverlayPosition(p,a,b) (p)->lpVtbl->GetOverlayPosition(p,a,b) +#define IDirectDrawSurface4_GetPalette(p,a) (p)->lpVtbl->GetPalette(p,a) +#define IDirectDrawSurface4_GetPixelFormat(p,a) (p)->lpVtbl->GetPixelFormat(p,a) +#define IDirectDrawSurface4_GetSurfaceDesc(p,a) (p)->lpVtbl->GetSurfaceDesc(p,a) +#define IDirectDrawSurface4_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b) +#define IDirectDrawSurface4_IsLost(p) (p)->lpVtbl->IsLost(p) +#define IDirectDrawSurface4_Lock(p,a,b,c,d) (p)->lpVtbl->Lock(p,a,b,c,d) +#define IDirectDrawSurface4_ReleaseDC(p,a) (p)->lpVtbl->ReleaseDC(p,a) +#define IDirectDrawSurface4_Restore(p) (p)->lpVtbl->Restore(p) +#define IDirectDrawSurface4_SetClipper(p,a) (p)->lpVtbl->SetClipper(p,a) +#define IDirectDrawSurface4_SetColorKey(p,a,b) (p)->lpVtbl->SetColorKey(p,a,b) +#define IDirectDrawSurface4_SetOverlayPosition(p,a,b) (p)->lpVtbl->SetOverlayPosition(p,a,b) +#define IDirectDrawSurface4_SetPalette(p,a) (p)->lpVtbl->SetPalette(p,a) +#define IDirectDrawSurface4_Unlock(p,b) (p)->lpVtbl->Unlock(p,b) +#define IDirectDrawSurface4_UpdateOverlay(p,a,b,c,d,e) (p)->lpVtbl->UpdateOverlay(p,a,b,c,d,e) +#define IDirectDrawSurface4_UpdateOverlayDisplay(p,a) (p)->lpVtbl->UpdateOverlayDisplay(p,a) +#define IDirectDrawSurface4_UpdateOverlayZOrder(p,a,b) (p)->lpVtbl->UpdateOverlayZOrder(p,a,b) +#define IDirectDrawSurface4_GetDDInterface(p,a) (p)->lpVtbl->GetDDInterface(p,a) +#define IDirectDrawSurface4_PageLock(p,a) (p)->lpVtbl->PageLock(p,a) +#define IDirectDrawSurface4_PageUnlock(p,a) (p)->lpVtbl->PageUnlock(p,a) +#define IDirectDrawSurface4_SetSurfaceDesc(p,a,b) (p)->lpVtbl->SetSurfaceDesc(p,a,b) +#define IDirectDrawSurface4_SetPrivateData(p,a,b,c,d) (p)->lpVtbl->SetPrivateData(p,a,b,c,d) +#define IDirectDrawSurface4_GetPrivateData(p,a,b,c) (p)->lpVtbl->GetPrivateData(p,a,b,c) +#define IDirectDrawSurface4_FreePrivateData(p,a) (p)->lpVtbl->FreePrivateData(p,a) +#define IDirectDrawSurface4_GetUniquenessValue(p, a) (p)->lpVtbl->GetUniquenessValue(p, a) +#define IDirectDrawSurface4_ChangeUniquenessValue(p) (p)->lpVtbl->ChangeUniquenessValue(p) +#else +#define IDirectDrawSurface4_QueryInterface(p,a,b) (p)->QueryInterface(a,b) +#define IDirectDrawSurface4_AddRef(p) (p)->AddRef() +#define IDirectDrawSurface4_Release(p) (p)->Release() +#define IDirectDrawSurface4_AddAttachedSurface(p,a) (p)->AddAttachedSurface(a) +#define IDirectDrawSurface4_AddOverlayDirtyRect(p,a) (p)->AddOverlayDirtyRect(a) +#define IDirectDrawSurface4_Blt(p,a,b,c,d,e) (p)->Blt(a,b,c,d,e) +#define IDirectDrawSurface4_BltBatch(p,a,b,c) (p)->BltBatch(a,b,c) +#define IDirectDrawSurface4_BltFast(p,a,b,c,d,e) (p)->BltFast(a,b,c,d,e) +#define IDirectDrawSurface4_DeleteAttachedSurface(p,a,b) (p)->DeleteAttachedSurface(a,b) +#define IDirectDrawSurface4_EnumAttachedSurfaces(p,a,b) (p)->EnumAttachedSurfaces(a,b) +#define IDirectDrawSurface4_EnumOverlayZOrders(p,a,b,c) (p)->EnumOverlayZOrders(a,b,c) +#define IDirectDrawSurface4_Flip(p,a,b) (p)->Flip(a,b) +#define IDirectDrawSurface4_GetAttachedSurface(p,a,b) (p)->GetAttachedSurface(a,b) +#define IDirectDrawSurface4_GetBltStatus(p,a) (p)->GetBltStatus(a) +#define IDirectDrawSurface4_GetCaps(p,b) (p)->GetCaps(b) +#define IDirectDrawSurface4_GetClipper(p,a) (p)->GetClipper(a) +#define IDirectDrawSurface4_GetColorKey(p,a,b) (p)->GetColorKey(a,b) +#define IDirectDrawSurface4_GetDC(p,a) (p)->GetDC(a) +#define IDirectDrawSurface4_GetFlipStatus(p,a) (p)->GetFlipStatus(a) +#define IDirectDrawSurface4_GetOverlayPosition(p,a,b) (p)->GetOverlayPosition(a,b) +#define IDirectDrawSurface4_GetPalette(p,a) (p)->GetPalette(a) +#define IDirectDrawSurface4_GetPixelFormat(p,a) (p)->GetPixelFormat(a) +#define IDirectDrawSurface4_GetSurfaceDesc(p,a) (p)->GetSurfaceDesc(a) +#define IDirectDrawSurface4_Initialize(p,a,b) (p)->Initialize(a,b) +#define IDirectDrawSurface4_IsLost(p) (p)->IsLost() +#define IDirectDrawSurface4_Lock(p,a,b,c,d) (p)->Lock(a,b,c,d) +#define IDirectDrawSurface4_ReleaseDC(p,a) (p)->ReleaseDC(a) +#define IDirectDrawSurface4_Restore(p) (p)->Restore() +#define IDirectDrawSurface4_SetClipper(p,a) (p)->SetClipper(a) +#define IDirectDrawSurface4_SetColorKey(p,a,b) (p)->SetColorKey(a,b) +#define IDirectDrawSurface4_SetOverlayPosition(p,a,b) (p)->SetOverlayPosition(a,b) +#define IDirectDrawSurface4_SetPalette(p,a) (p)->SetPalette(a) +#define IDirectDrawSurface4_Unlock(p,b) (p)->Unlock(b) +#define IDirectDrawSurface4_UpdateOverlay(p,a,b,c,d,e) (p)->UpdateOverlay(a,b,c,d,e) +#define IDirectDrawSurface4_UpdateOverlayDisplay(p,a) (p)->UpdateOverlayDisplay(a) +#define IDirectDrawSurface4_UpdateOverlayZOrder(p,a,b) (p)->UpdateOverlayZOrder(a,b) +#define IDirectDrawSurface4_GetDDInterface(p,a) (p)->GetDDInterface(a) +#define IDirectDrawSurface4_PageLock(p,a) (p)->PageLock(a) +#define IDirectDrawSurface4_PageUnlock(p,a) (p)->PageUnlock(a) +#define IDirectDrawSurface4_SetSurfaceDesc(p,a,b) (p)->SetSurfaceDesc(a,b) +#define IDirectDrawSurface4_SetPrivateData(p,a,b,c,d) (p)->SetPrivateData(a,b,c,d) +#define IDirectDrawSurface4_GetPrivateData(p,a,b,c) (p)->GetPrivateData(a,b,c) +#define IDirectDrawSurface4_FreePrivateData(p,a) (p)->FreePrivateData(a) +#define IDirectDrawSurface4_GetUniquenessValue(p, a) (p)->GetUniquenessValue(a) +#define IDirectDrawSurface4_ChangeUniquenessValue(p) (p)->ChangeUniquenessValue() +#endif + +/* + * IDirectDrawSurface7 and related interfaces + */ +#undef INTERFACE +#define INTERFACE IDirectDrawSurface7 +DECLARE_INTERFACE_( IDirectDrawSurface7, IUnknown ) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + /*** IDirectDrawSurface methods ***/ + STDMETHOD(AddAttachedSurface)(THIS_ LPDIRECTDRAWSURFACE7) PURE; + STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT) PURE; + STDMETHOD(Blt)(THIS_ LPRECT,LPDIRECTDRAWSURFACE7, LPRECT,DWORD, LPDDBLTFX) PURE; + STDMETHOD(BltBatch)(THIS_ LPDDBLTBATCH, DWORD, DWORD ) PURE; + STDMETHOD(BltFast)(THIS_ DWORD,DWORD,LPDIRECTDRAWSURFACE7, LPRECT,DWORD) PURE; + STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD,LPDIRECTDRAWSURFACE7) PURE; + STDMETHOD(EnumAttachedSurfaces)(THIS_ LPVOID,LPDDENUMSURFACESCALLBACK7) PURE; + STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD,LPVOID,LPDDENUMSURFACESCALLBACK7) PURE; + STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE7, DWORD) PURE; + STDMETHOD(GetAttachedSurface)(THIS_ LPDDSCAPS2, LPDIRECTDRAWSURFACE7 FAR *) PURE; + STDMETHOD(GetBltStatus)(THIS_ DWORD) PURE; + STDMETHOD(GetCaps)(THIS_ LPDDSCAPS2) PURE; + STDMETHOD(GetClipper)(THIS_ LPDIRECTDRAWCLIPPER FAR*) PURE; + STDMETHOD(GetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE; + STDMETHOD(GetDC)(THIS_ HDC FAR *) PURE; + STDMETHOD(GetFlipStatus)(THIS_ DWORD) PURE; + STDMETHOD(GetOverlayPosition)(THIS_ LPLONG, LPLONG ) PURE; + STDMETHOD(GetPalette)(THIS_ LPDIRECTDRAWPALETTE FAR*) PURE; + STDMETHOD(GetPixelFormat)(THIS_ LPDDPIXELFORMAT) PURE; + STDMETHOD(GetSurfaceDesc)(THIS_ LPDDSURFACEDESC2) PURE; + STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, LPDDSURFACEDESC2) PURE; + STDMETHOD(IsLost)(THIS) PURE; + STDMETHOD(Lock)(THIS_ LPRECT,LPDDSURFACEDESC2,DWORD,HANDLE) PURE; + STDMETHOD(ReleaseDC)(THIS_ HDC) PURE; + STDMETHOD(Restore)(THIS) PURE; + STDMETHOD(SetClipper)(THIS_ LPDIRECTDRAWCLIPPER) PURE; + STDMETHOD(SetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE; + STDMETHOD(SetOverlayPosition)(THIS_ LONG, LONG ) PURE; + STDMETHOD(SetPalette)(THIS_ LPDIRECTDRAWPALETTE) PURE; + STDMETHOD(Unlock)(THIS_ LPRECT) PURE; + STDMETHOD(UpdateOverlay)(THIS_ LPRECT, LPDIRECTDRAWSURFACE7,LPRECT,DWORD, LPDDOVERLAYFX) PURE; + STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD) PURE; + STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD, LPDIRECTDRAWSURFACE7) PURE; + /*** Added in the v2 interface ***/ + STDMETHOD(GetDDInterface)(THIS_ LPVOID FAR *) PURE; + STDMETHOD(PageLock)(THIS_ DWORD) PURE; + STDMETHOD(PageUnlock)(THIS_ DWORD) PURE; + /*** Added in the v3 interface ***/ + STDMETHOD(SetSurfaceDesc)(THIS_ LPDDSURFACEDESC2, DWORD) PURE; + /*** Added in the v4 interface ***/ + STDMETHOD(SetPrivateData)(THIS_ REFGUID, LPVOID, DWORD, DWORD) PURE; + STDMETHOD(GetPrivateData)(THIS_ REFGUID, LPVOID, LPDWORD) PURE; + STDMETHOD(FreePrivateData)(THIS_ REFGUID) PURE; + STDMETHOD(GetUniquenessValue)(THIS_ LPDWORD) PURE; + STDMETHOD(ChangeUniquenessValue)(THIS) PURE; + /*** Moved Texture7 methods here ***/ + STDMETHOD(SetPriority)(THIS_ DWORD) PURE; + STDMETHOD(GetPriority)(THIS_ LPDWORD) PURE; + STDMETHOD(SetLOD)(THIS_ DWORD) PURE; + STDMETHOD(GetLOD)(THIS_ LPDWORD) PURE; +}; + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectDrawSurface7_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDirectDrawSurface7_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectDrawSurface7_Release(p) (p)->lpVtbl->Release(p) +#define IDirectDrawSurface7_AddAttachedSurface(p,a) (p)->lpVtbl->AddAttachedSurface(p,a) +#define IDirectDrawSurface7_AddOverlayDirtyRect(p,a) (p)->lpVtbl->AddOverlayDirtyRect(p,a) +#define IDirectDrawSurface7_Blt(p,a,b,c,d,e) (p)->lpVtbl->Blt(p,a,b,c,d,e) +#define IDirectDrawSurface7_BltBatch(p,a,b,c) (p)->lpVtbl->BltBatch(p,a,b,c) +#define IDirectDrawSurface7_BltFast(p,a,b,c,d,e) (p)->lpVtbl->BltFast(p,a,b,c,d,e) +#define IDirectDrawSurface7_DeleteAttachedSurface(p,a,b) (p)->lpVtbl->DeleteAttachedSurface(p,a,b) +#define IDirectDrawSurface7_EnumAttachedSurfaces(p,a,b) (p)->lpVtbl->EnumAttachedSurfaces(p,a,b) +#define IDirectDrawSurface7_EnumOverlayZOrders(p,a,b,c) (p)->lpVtbl->EnumOverlayZOrders(p,a,b,c) +#define IDirectDrawSurface7_Flip(p,a,b) (p)->lpVtbl->Flip(p,a,b) +#define IDirectDrawSurface7_GetAttachedSurface(p,a,b) (p)->lpVtbl->GetAttachedSurface(p,a,b) +#define IDirectDrawSurface7_GetBltStatus(p,a) (p)->lpVtbl->GetBltStatus(p,a) +#define IDirectDrawSurface7_GetCaps(p,b) (p)->lpVtbl->GetCaps(p,b) +#define IDirectDrawSurface7_GetClipper(p,a) (p)->lpVtbl->GetClipper(p,a) +#define IDirectDrawSurface7_GetColorKey(p,a,b) (p)->lpVtbl->GetColorKey(p,a,b) +#define IDirectDrawSurface7_GetDC(p,a) (p)->lpVtbl->GetDC(p,a) +#define IDirectDrawSurface7_GetFlipStatus(p,a) (p)->lpVtbl->GetFlipStatus(p,a) +#define IDirectDrawSurface7_GetOverlayPosition(p,a,b) (p)->lpVtbl->GetOverlayPosition(p,a,b) +#define IDirectDrawSurface7_GetPalette(p,a) (p)->lpVtbl->GetPalette(p,a) +#define IDirectDrawSurface7_GetPixelFormat(p,a) (p)->lpVtbl->GetPixelFormat(p,a) +#define IDirectDrawSurface7_GetSurfaceDesc(p,a) (p)->lpVtbl->GetSurfaceDesc(p,a) +#define IDirectDrawSurface7_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b) +#define IDirectDrawSurface7_IsLost(p) (p)->lpVtbl->IsLost(p) +#define IDirectDrawSurface7_Lock(p,a,b,c,d) (p)->lpVtbl->Lock(p,a,b,c,d) +#define IDirectDrawSurface7_ReleaseDC(p,a) (p)->lpVtbl->ReleaseDC(p,a) +#define IDirectDrawSurface7_Restore(p) (p)->lpVtbl->Restore(p) +#define IDirectDrawSurface7_SetClipper(p,a) (p)->lpVtbl->SetClipper(p,a) +#define IDirectDrawSurface7_SetColorKey(p,a,b) (p)->lpVtbl->SetColorKey(p,a,b) +#define IDirectDrawSurface7_SetOverlayPosition(p,a,b) (p)->lpVtbl->SetOverlayPosition(p,a,b) +#define IDirectDrawSurface7_SetPalette(p,a) (p)->lpVtbl->SetPalette(p,a) +#define IDirectDrawSurface7_Unlock(p,b) (p)->lpVtbl->Unlock(p,b) +#define IDirectDrawSurface7_UpdateOverlay(p,a,b,c,d,e) (p)->lpVtbl->UpdateOverlay(p,a,b,c,d,e) +#define IDirectDrawSurface7_UpdateOverlayDisplay(p,a) (p)->lpVtbl->UpdateOverlayDisplay(p,a) +#define IDirectDrawSurface7_UpdateOverlayZOrder(p,a,b) (p)->lpVtbl->UpdateOverlayZOrder(p,a,b) +#define IDirectDrawSurface7_GetDDInterface(p,a) (p)->lpVtbl->GetDDInterface(p,a) +#define IDirectDrawSurface7_PageLock(p,a) (p)->lpVtbl->PageLock(p,a) +#define IDirectDrawSurface7_PageUnlock(p,a) (p)->lpVtbl->PageUnlock(p,a) +#define IDirectDrawSurface7_SetSurfaceDesc(p,a,b) (p)->lpVtbl->SetSurfaceDesc(p,a,b) +#define IDirectDrawSurface7_SetPrivateData(p,a,b,c,d) (p)->lpVtbl->SetPrivateData(p,a,b,c,d) +#define IDirectDrawSurface7_GetPrivateData(p,a,b,c) (p)->lpVtbl->GetPrivateData(p,a,b,c) +#define IDirectDrawSurface7_FreePrivateData(p,a) (p)->lpVtbl->FreePrivateData(p,a) +#define IDirectDrawSurface7_GetUniquenessValue(p, a) (p)->lpVtbl->GetUniquenessValue(p, a) +#define IDirectDrawSurface7_ChangeUniquenessValue(p) (p)->lpVtbl->ChangeUniquenessValue(p) +#define IDirectDrawSurface7_SetPriority(p,a) (p)->lpVtbl->SetPriority(p,a) +#define IDirectDrawSurface7_GetPriority(p,a) (p)->lpVtbl->GetPriority(p,a) +#define IDirectDrawSurface7_SetLOD(p,a) (p)->lpVtbl->SetLOD(p,a) +#define IDirectDrawSurface7_GetLOD(p,a) (p)->lpVtbl->GetLOD(p,a) +#else +#define IDirectDrawSurface7_QueryInterface(p,a,b) (p)->QueryInterface(a,b) +#define IDirectDrawSurface7_AddRef(p) (p)->AddRef() +#define IDirectDrawSurface7_Release(p) (p)->Release() +#define IDirectDrawSurface7_AddAttachedSurface(p,a) (p)->AddAttachedSurface(a) +#define IDirectDrawSurface7_AddOverlayDirtyRect(p,a) (p)->AddOverlayDirtyRect(a) +#define IDirectDrawSurface7_Blt(p,a,b,c,d,e) (p)->Blt(a,b,c,d,e) +#define IDirectDrawSurface7_BltBatch(p,a,b,c) (p)->BltBatch(a,b,c) +#define IDirectDrawSurface7_BltFast(p,a,b,c,d,e) (p)->BltFast(a,b,c,d,e) +#define IDirectDrawSurface7_DeleteAttachedSurface(p,a,b) (p)->DeleteAttachedSurface(a,b) +#define IDirectDrawSurface7_EnumAttachedSurfaces(p,a,b) (p)->EnumAttachedSurfaces(a,b) +#define IDirectDrawSurface7_EnumOverlayZOrders(p,a,b,c) (p)->EnumOverlayZOrders(a,b,c) +#define IDirectDrawSurface7_Flip(p,a,b) (p)->Flip(a,b) +#define IDirectDrawSurface7_GetAttachedSurface(p,a,b) (p)->GetAttachedSurface(a,b) +#define IDirectDrawSurface7_GetBltStatus(p,a) (p)->GetBltStatus(a) +#define IDirectDrawSurface7_GetCaps(p,b) (p)->GetCaps(b) +#define IDirectDrawSurface7_GetClipper(p,a) (p)->GetClipper(a) +#define IDirectDrawSurface7_GetColorKey(p,a,b) (p)->GetColorKey(a,b) +#define IDirectDrawSurface7_GetDC(p,a) (p)->GetDC(a) +#define IDirectDrawSurface7_GetFlipStatus(p,a) (p)->GetFlipStatus(a) +#define IDirectDrawSurface7_GetOverlayPosition(p,a,b) (p)->GetOverlayPosition(a,b) +#define IDirectDrawSurface7_GetPalette(p,a) (p)->GetPalette(a) +#define IDirectDrawSurface7_GetPixelFormat(p,a) (p)->GetPixelFormat(a) +#define IDirectDrawSurface7_GetSurfaceDesc(p,a) (p)->GetSurfaceDesc(a) +#define IDirectDrawSurface7_Initialize(p,a,b) (p)->Initialize(a,b) +#define IDirectDrawSurface7_IsLost(p) (p)->IsLost() +#define IDirectDrawSurface7_Lock(p,a,b,c,d) (p)->Lock(a,b,c,d) +#define IDirectDrawSurface7_ReleaseDC(p,a) (p)->ReleaseDC(a) +#define IDirectDrawSurface7_Restore(p) (p)->Restore() +#define IDirectDrawSurface7_SetClipper(p,a) (p)->SetClipper(a) +#define IDirectDrawSurface7_SetColorKey(p,a,b) (p)->SetColorKey(a,b) +#define IDirectDrawSurface7_SetOverlayPosition(p,a,b) (p)->SetOverlayPosition(a,b) +#define IDirectDrawSurface7_SetPalette(p,a) (p)->SetPalette(a) +#define IDirectDrawSurface7_Unlock(p,b) (p)->Unlock(b) +#define IDirectDrawSurface7_UpdateOverlay(p,a,b,c,d,e) (p)->UpdateOverlay(a,b,c,d,e) +#define IDirectDrawSurface7_UpdateOverlayDisplay(p,a) (p)->UpdateOverlayDisplay(a) +#define IDirectDrawSurface7_UpdateOverlayZOrder(p,a,b) (p)->UpdateOverlayZOrder(a,b) +#define IDirectDrawSurface7_GetDDInterface(p,a) (p)->GetDDInterface(a) +#define IDirectDrawSurface7_PageLock(p,a) (p)->PageLock(a) +#define IDirectDrawSurface7_PageUnlock(p,a) (p)->PageUnlock(a) +#define IDirectDrawSurface7_SetSurfaceDesc(p,a,b) (p)->SetSurfaceDesc(a,b) +#define IDirectDrawSurface7_SetPrivateData(p,a,b,c,d) (p)->SetPrivateData(a,b,c,d) +#define IDirectDrawSurface7_GetPrivateData(p,a,b,c) (p)->GetPrivateData(a,b,c) +#define IDirectDrawSurface7_FreePrivateData(p,a) (p)->FreePrivateData(a) +#define IDirectDrawSurface7_GetUniquenessValue(p, a) (p)->GetUniquenessValue(a) +#define IDirectDrawSurface7_ChangeUniquenessValue(p) (p)->ChangeUniquenessValue() +#define IDirectDrawSurface7_SetPriority(p,a) (p)->SetPriority(a) +#define IDirectDrawSurface7_GetPriority(p,a) (p)->GetPriority(a) +#define IDirectDrawSurface7_SetLOD(p,a) (p)->SetLOD(a) +#define IDirectDrawSurface7_GetLOD(p,a) (p)->GetLOD(a) +#endif + + +/* + * IDirectDrawColorControl + */ +#if defined( _WIN32 ) && !defined( _NO_COM ) +#undef INTERFACE +#define INTERFACE IDirectDrawColorControl +DECLARE_INTERFACE_( IDirectDrawColorControl, IUnknown ) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + /*** IDirectDrawColorControl methods ***/ + STDMETHOD(GetColorControls)(THIS_ LPDDCOLORCONTROL) PURE; + STDMETHOD(SetColorControls)(THIS_ LPDDCOLORCONTROL) PURE; +}; + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectDrawColorControl_QueryInterface(p, a, b) (p)->lpVtbl->QueryInterface(p, a, b) +#define IDirectDrawColorControl_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectDrawColorControl_Release(p) (p)->lpVtbl->Release(p) +#define IDirectDrawColorControl_GetColorControls(p, a) (p)->lpVtbl->GetColorControls(p, a) +#define IDirectDrawColorControl_SetColorControls(p, a) (p)->lpVtbl->SetColorControls(p, a) +#else +#define IDirectDrawColorControl_QueryInterface(p, a, b) (p)->QueryInterface(a, b) +#define IDirectDrawColorControl_AddRef(p) (p)->AddRef() +#define IDirectDrawColorControl_Release(p) (p)->Release() +#define IDirectDrawColorControl_GetColorControls(p, a) (p)->GetColorControls(a) +#define IDirectDrawColorControl_SetColorControls(p, a) (p)->SetColorControls(a) +#endif + +#endif + + +/* + * IDirectDrawGammaControl + */ +#if defined( _WIN32 ) && !defined( _NO_COM ) +#undef INTERFACE +#define INTERFACE IDirectDrawGammaControl +DECLARE_INTERFACE_( IDirectDrawGammaControl, IUnknown ) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + /*** IDirectDrawGammaControl methods ***/ + STDMETHOD(GetGammaRamp)(THIS_ DWORD, LPDDGAMMARAMP) PURE; + STDMETHOD(SetGammaRamp)(THIS_ DWORD, LPDDGAMMARAMP) PURE; +}; + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectDrawGammaControl_QueryInterface(p, a, b) (p)->lpVtbl->QueryInterface(p, a, b) +#define IDirectDrawGammaControl_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectDrawGammaControl_Release(p) (p)->lpVtbl->Release(p) +#define IDirectDrawGammaControl_GetGammaRamp(p, a, b) (p)->lpVtbl->GetGammaRamp(p, a, b) +#define IDirectDrawGammaControl_SetGammaRamp(p, a, b) (p)->lpVtbl->SetGammaRamp(p, a, b) +#else +#define IDirectDrawGammaControl_QueryInterface(p, a, b) (p)->QueryInterface(a, b) +#define IDirectDrawGammaControl_AddRef(p) (p)->AddRef() +#define IDirectDrawGammaControl_Release(p) (p)->Release() +#define IDirectDrawGammaControl_GetGammaRamp(p, a, b) (p)->GetGammaRamp(a, b) +#define IDirectDrawGammaControl_SetGammaRamp(p, a, b) (p)->SetGammaRamp(a, b) +#endif + +#endif + + + +#endif + + +/* + * DDSURFACEDESC + */ +typedef struct _DDSURFACEDESC +{ + DWORD dwSize; // size of the DDSURFACEDESC structure + DWORD dwFlags; // determines what fields are valid + DWORD dwHeight; // height of surface to be created + DWORD dwWidth; // width of input surface + union + { + LONG lPitch; // distance to start of next line (return value only) + DWORD dwLinearSize; // Formless late-allocated optimized surface size + } DUMMYUNIONNAMEN(1); + DWORD dwBackBufferCount; // number of back buffers requested + union + { + DWORD dwMipMapCount; // number of mip-map levels requested + DWORD dwZBufferBitDepth; // depth of Z buffer requested + DWORD dwRefreshRate; // refresh rate (used when display mode is described) + } DUMMYUNIONNAMEN(2); + DWORD dwAlphaBitDepth; // depth of alpha buffer requested + DWORD dwReserved; // reserved + LPVOID lpSurface; // pointer to the associated surface memory + DDCOLORKEY ddckCKDestOverlay; // color key for destination overlay use + DDCOLORKEY ddckCKDestBlt; // color key for destination blt use + DDCOLORKEY ddckCKSrcOverlay; // color key for source overlay use + DDCOLORKEY ddckCKSrcBlt; // color key for source blt use + DDPIXELFORMAT ddpfPixelFormat; // pixel format description of the surface + DDSCAPS ddsCaps; // direct draw surface capabilities +} DDSURFACEDESC; + +/* + * DDSURFACEDESC2 + */ +typedef struct _DDSURFACEDESC2 +{ + DWORD dwSize; // size of the DDSURFACEDESC structure + DWORD dwFlags; // determines what fields are valid + DWORD dwHeight; // height of surface to be created + DWORD dwWidth; // width of input surface + union + { + LONG lPitch; // distance to start of next line (return value only) + DWORD dwLinearSize; // Formless late-allocated optimized surface size + } DUMMYUNIONNAMEN(1); + union + { + DWORD dwBackBufferCount; // number of back buffers requested + DWORD dwDepth; // the depth if this is a volume texture + } DUMMYUNIONNAMEN(5); + union + { + DWORD dwMipMapCount; // number of mip-map levels requestde + // dwZBufferBitDepth removed, use ddpfPixelFormat one instead + DWORD dwRefreshRate; // refresh rate (used when display mode is described) + DWORD dwSrcVBHandle; // The source used in VB::Optimize + } DUMMYUNIONNAMEN(2); + DWORD dwAlphaBitDepth; // depth of alpha buffer requested + DWORD dwReserved; // reserved + LPVOID lpSurface; // pointer to the associated surface memory + union + { + DDCOLORKEY ddckCKDestOverlay; // color key for destination overlay use + DWORD dwEmptyFaceColor; // Physical color for empty cubemap faces + } DUMMYUNIONNAMEN(3); + DDCOLORKEY ddckCKDestBlt; // color key for destination blt use + DDCOLORKEY ddckCKSrcOverlay; // color key for source overlay use + DDCOLORKEY ddckCKSrcBlt; // color key for source blt use + union + { + DDPIXELFORMAT ddpfPixelFormat; // pixel format description of the surface + DWORD dwFVF; // vertex format description of vertex buffers + } DUMMYUNIONNAMEN(4); + DDSCAPS2 ddsCaps; // direct draw surface capabilities + DWORD dwTextureStage; // stage in multitexture cascade +} DDSURFACEDESC2; + +/* + * ddsCaps field is valid. + */ +#define DDSD_CAPS 0x00000001l // default + +/* + * dwHeight field is valid. + */ +#define DDSD_HEIGHT 0x00000002l + +/* + * dwWidth field is valid. + */ +#define DDSD_WIDTH 0x00000004l + +/* + * lPitch is valid. + */ +#define DDSD_PITCH 0x00000008l + +/* + * dwBackBufferCount is valid. + */ +#define DDSD_BACKBUFFERCOUNT 0x00000020l + +/* + * dwZBufferBitDepth is valid. (shouldnt be used in DDSURFACEDESC2) + */ +#define DDSD_ZBUFFERBITDEPTH 0x00000040l + +/* + * dwAlphaBitDepth is valid. + */ +#define DDSD_ALPHABITDEPTH 0x00000080l + + +/* + * lpSurface is valid. + */ +#define DDSD_LPSURFACE 0x00000800l + +/* + * ddpfPixelFormat is valid. + */ +#define DDSD_PIXELFORMAT 0x00001000l + +/* + * ddckCKDestOverlay is valid. + */ +#define DDSD_CKDESTOVERLAY 0x00002000l + +/* + * ddckCKDestBlt is valid. + */ +#define DDSD_CKDESTBLT 0x00004000l + +/* + * ddckCKSrcOverlay is valid. + */ +#define DDSD_CKSRCOVERLAY 0x00008000l + +/* + * ddckCKSrcBlt is valid. + */ +#define DDSD_CKSRCBLT 0x00010000l + +/* + * dwMipMapCount is valid. + */ +#define DDSD_MIPMAPCOUNT 0x00020000l + + /* + * dwRefreshRate is valid + */ +#define DDSD_REFRESHRATE 0x00040000l + +/* + * dwLinearSize is valid + */ +#define DDSD_LINEARSIZE 0x00080000l + +/* + * dwTextureStage is valid + */ +#define DDSD_TEXTURESTAGE 0x00100000l +/* + * dwFVF is valid + */ +#define DDSD_FVF 0x00200000l +/* + * dwSrcVBHandle is valid + */ +#define DDSD_SRCVBHANDLE 0x00400000l + +/* + * dwDepth is valid + */ +#define DDSD_DEPTH 0x00800000l + +/* + * All input fields are valid. + */ +#define DDSD_ALL 0x00fff9eel + +/* + * DDOPTSURFACEDESC + */ +typedef struct _DDOPTSURFACEDESC +{ + DWORD dwSize; // size of the DDOPTSURFACEDESC structure + DWORD dwFlags; // determines what fields are valid + DDSCAPS2 ddSCaps; // Common caps like: Memory type + DDOSCAPS ddOSCaps; // Common caps like: Memory type + GUID guid; // Compression technique GUID + DWORD dwCompressionRatio; // Compression ratio +} DDOPTSURFACEDESC; + +/* + * guid field is valid. + */ +#define DDOSD_GUID 0x00000001l + +/* + * dwCompressionRatio field is valid. + */ +#define DDOSD_COMPRESSION_RATIO 0x00000002l + +/* + * ddSCaps field is valid. + */ +#define DDOSD_SCAPS 0x00000004l + +/* + * ddOSCaps field is valid. + */ +#define DDOSD_OSCAPS 0x00000008l + +/* + * All input fields are valid. + */ +#define DDOSD_ALL 0x0000000fl + +/* + * The surface's optimized pixelformat is compressed + */ +#define DDOSDCAPS_OPTCOMPRESSED 0x00000001l + +/* + * The surface's optimized pixelformat is reordered + */ +#define DDOSDCAPS_OPTREORDERED 0x00000002l + +/* + * The opt surface is a monolithic mipmap + */ +#define DDOSDCAPS_MONOLITHICMIPMAP 0x00000004l + +/* + * The valid Surf caps: + * #define DDSCAPS_SYSTEMMEMORY 0x00000800l + * #define DDSCAPS_VIDEOMEMORY 0x00004000l + * #define DDSCAPS_LOCALVIDMEM 0x10000000l + * #define DDSCAPS_NONLOCALVIDMEM 0x20000000l + */ +#define DDOSDCAPS_VALIDSCAPS 0x30004800l + +/* + * The valid OptSurf caps + */ +#define DDOSDCAPS_VALIDOSCAPS 0x00000007l + + +/* + * DDCOLORCONTROL + */ +typedef struct _DDCOLORCONTROL +{ + DWORD dwSize; + DWORD dwFlags; + LONG lBrightness; + LONG lContrast; + LONG lHue; + LONG lSaturation; + LONG lSharpness; + LONG lGamma; + LONG lColorEnable; + DWORD dwReserved1; +} DDCOLORCONTROL; + + +/* + * lBrightness field is valid. + */ +#define DDCOLOR_BRIGHTNESS 0x00000001l + +/* + * lContrast field is valid. + */ +#define DDCOLOR_CONTRAST 0x00000002l + +/* + * lHue field is valid. + */ +#define DDCOLOR_HUE 0x00000004l + +/* + * lSaturation field is valid. + */ +#define DDCOLOR_SATURATION 0x00000008l + +/* + * lSharpness field is valid. + */ +#define DDCOLOR_SHARPNESS 0x00000010l + +/* + * lGamma field is valid. + */ +#define DDCOLOR_GAMMA 0x00000020l + +/* + * lColorEnable field is valid. + */ +#define DDCOLOR_COLORENABLE 0x00000040l + + + +/*============================================================================ + * + * Direct Draw Capability Flags + * + * These flags are used to describe the capabilities of a given Surface. + * All flags are bit flags. + * + *==========================================================================*/ + +/**************************************************************************** + * + * DIRECTDRAWSURFACE CAPABILITY FLAGS + * + ****************************************************************************/ + +/* + * This bit is reserved. It should not be specified. + */ +#define DDSCAPS_RESERVED1 0x00000001l + +/* + * Indicates that this surface contains alpha-only information. + * (To determine if a surface is RGBA/YUVA, the pixel format must be + * interrogated.) + */ +#define DDSCAPS_ALPHA 0x00000002l + +/* + * Indicates that this surface is a backbuffer. It is generally + * set by CreateSurface when the DDSCAPS_FLIP capability bit is set. + * It indicates that this surface is THE back buffer of a surface + * flipping structure. DirectDraw supports N surfaces in a + * surface flipping structure. Only the surface that immediately + * precedeces the DDSCAPS_FRONTBUFFER has this capability bit set. + * The other surfaces are identified as back buffers by the presence + * of the DDSCAPS_FLIP capability, their attachment order, and the + * absence of the DDSCAPS_FRONTBUFFER and DDSCAPS_BACKBUFFER + * capabilities. The bit is sent to CreateSurface when a standalone + * back buffer is being created. This surface could be attached to + * a front buffer and/or back buffers to form a flipping surface + * structure after the CreateSurface call. See AddAttachments for + * a detailed description of the behaviors in this case. + */ +#define DDSCAPS_BACKBUFFER 0x00000004l + +/* + * Indicates a complex surface structure is being described. A + * complex surface structure results in the creation of more than + * one surface. The additional surfaces are attached to the root + * surface. The complex structure can only be destroyed by + * destroying the root. + */ +#define DDSCAPS_COMPLEX 0x00000008l + +/* + * Indicates that this surface is a part of a surface flipping structure. + * When it is passed to CreateSurface the DDSCAPS_FRONTBUFFER and + * DDSCAP_BACKBUFFER bits are not set. They are set by CreateSurface + * on the resulting creations. The dwBackBufferCount field in the + * DDSURFACEDESC structure must be set to at least 1 in order for + * the CreateSurface call to succeed. The DDSCAPS_COMPLEX capability + * must always be set with creating multiple surfaces through CreateSurface. + */ +#define DDSCAPS_FLIP 0x00000010l + +/* + * Indicates that this surface is THE front buffer of a surface flipping + * structure. It is generally set by CreateSurface when the DDSCAPS_FLIP + * capability bit is set. + * If this capability is sent to CreateSurface then a standalonw front buffer + * is created. This surface will not have the DDSCAPS_FLIP capability. + * It can be attached to other back buffers to form a flipping structure. + * See AddAttachments for a detailed description of the behaviors in this + * case. + */ +#define DDSCAPS_FRONTBUFFER 0x00000020l + +/* + * Indicates that this surface is any offscreen surface that is not an overlay, + * texture, zbuffer, front buffer, back buffer, or alpha surface. It is used + * to identify plain vanilla surfaces. + */ +#define DDSCAPS_OFFSCREENPLAIN 0x00000040l + +/* + * Indicates that this surface is an overlay. It may or may not be directly visible + * depending on whether or not it is currently being overlayed onto the primary + * surface. DDSCAPS_VISIBLE can be used to determine whether or not it is being + * overlayed at the moment. + */ +#define DDSCAPS_OVERLAY 0x00000080l + +/* + * Indicates that unique DirectDrawPalette objects can be created and + * attached to this surface. + */ +#define DDSCAPS_PALETTE 0x00000100l + +/* + * Indicates that this surface is the primary surface. The primary + * surface represents what the user is seeing at the moment. + */ +#define DDSCAPS_PRIMARYSURFACE 0x00000200l + + +/* + * This flag used to be DDSCAPS_PRIMARYSURFACELEFT, which is now + * obsolete. + */ +#define DDSCAPS_RESERVED3 0x00000400l +#define DDSCAPS_PRIMARYSURFACELEFT 0x00000000l + +/* + * Indicates that this surface memory was allocated in system memory + */ +#define DDSCAPS_SYSTEMMEMORY 0x00000800l + +/* + * Indicates that this surface can be used as a 3D texture. It does not + * indicate whether or not the surface is being used for that purpose. + */ +#define DDSCAPS_TEXTURE 0x00001000l + +/* + * Indicates that a surface may be a destination for 3D rendering. This + * bit must be set in order to query for a Direct3D Device Interface + * from this surface. + */ +#define DDSCAPS_3DDEVICE 0x00002000l + +/* + * Indicates that this surface exists in video memory. + */ +#define DDSCAPS_VIDEOMEMORY 0x00004000l + +/* + * Indicates that changes made to this surface are immediately visible. + * It is always set for the primary surface and is set for overlays while + * they are being overlayed and texture maps while they are being textured. + */ +#define DDSCAPS_VISIBLE 0x00008000l + +/* + * Indicates that only writes are permitted to the surface. Read accesses + * from the surface may or may not generate a protection fault, but the + * results of a read from this surface will not be meaningful. READ ONLY. + */ +#define DDSCAPS_WRITEONLY 0x00010000l + +/* + * Indicates that this surface is a z buffer. A z buffer does not contain + * displayable information. Instead it contains bit depth information that is + * used to determine which pixels are visible and which are obscured. + */ +#define DDSCAPS_ZBUFFER 0x00020000l + +/* + * Indicates surface will have a DC associated long term + */ +#define DDSCAPS_OWNDC 0x00040000l + +/* + * Indicates surface should be able to receive live video + */ +#define DDSCAPS_LIVEVIDEO 0x00080000l + +/* + * Indicates surface should be able to have a stream decompressed + * to it by the hardware. + */ +#define DDSCAPS_HWCODEC 0x00100000l + +/* + * Surface is a ModeX surface. + * + */ +#define DDSCAPS_MODEX 0x00200000l + +/* + * Indicates surface is one level of a mip-map. This surface will + * be attached to other DDSCAPS_MIPMAP surfaces to form the mip-map. + * This can be done explicitly, by creating a number of surfaces and + * attaching them with AddAttachedSurface or by implicitly by CreateSurface. + * If this bit is set then DDSCAPS_TEXTURE must also be set. + */ +#define DDSCAPS_MIPMAP 0x00400000l + +/* + * This bit is reserved. It should not be specified. + */ +#define DDSCAPS_RESERVED2 0x00800000l + + +/* + * Indicates that memory for the surface is not allocated until the surface + * is loaded (via the Direct3D texture Load() function). + */ +#define DDSCAPS_ALLOCONLOAD 0x04000000l + +/* + * Indicates that the surface will recieve data from a video port. + */ +#define DDSCAPS_VIDEOPORT 0x08000000l + +/* + * Indicates that a video memory surface is resident in true, local video + * memory rather than non-local video memory. If this flag is specified then + * so must DDSCAPS_VIDEOMEMORY. This flag is mutually exclusive with + * DDSCAPS_NONLOCALVIDMEM. + */ +#define DDSCAPS_LOCALVIDMEM 0x10000000l + +/* + * Indicates that a video memory surface is resident in non-local video + * memory rather than true, local video memory. If this flag is specified + * then so must DDSCAPS_VIDEOMEMORY. This flag is mutually exclusive with + * DDSCAPS_LOCALVIDMEM. + */ +#define DDSCAPS_NONLOCALVIDMEM 0x20000000l + +/* + * Indicates that this surface is a standard VGA mode surface, and not a + * ModeX surface. (This flag will never be set in combination with the + * DDSCAPS_MODEX flag). + */ +#define DDSCAPS_STANDARDVGAMODE 0x40000000l + +/* + * Indicates that this surface will be an optimized surface. This flag is + * currently only valid in conjunction with the DDSCAPS_TEXTURE flag. The surface + * will be created without any underlying video memory until loaded. + */ +#define DDSCAPS_OPTIMIZED 0x80000000l + + + +/* + * This bit is reserved + */ +#define DDSCAPS2_RESERVED4 0x00000002L +#define DDSCAPS2_HARDWAREDEINTERLACE 0x00000000L + +/* + * Indicates to the driver that this surface will be locked very frequently + * (for procedural textures, dynamic lightmaps, etc). Surfaces with this cap + * set must also have DDSCAPS_TEXTURE. This cap cannot be used with + * DDSCAPS2_HINTSTATIC and DDSCAPS2_OPAQUE. + */ +#define DDSCAPS2_HINTDYNAMIC 0x00000004L + +/* + * Indicates to the driver that this surface can be re-ordered/retiled on + * load. This operation will not change the size of the texture. It is + * relatively fast and symmetrical, since the application may lock these + * bits (although it will take a performance hit when doing so). Surfaces + * with this cap set must also have DDSCAPS_TEXTURE. This cap cannot be + * used with DDSCAPS2_HINTDYNAMIC and DDSCAPS2_OPAQUE. + */ +#define DDSCAPS2_HINTSTATIC 0x00000008L + +/* + * Indicates that the client would like this texture surface to be managed by the + * DirectDraw/Direct3D runtime. Surfaces with this cap set must also have + * DDSCAPS_TEXTURE set. + */ +#define DDSCAPS2_TEXTUREMANAGE 0x00000010L + +/* + * These bits are reserved for internal use */ +#define DDSCAPS2_RESERVED1 0x00000020L +#define DDSCAPS2_RESERVED2 0x00000040L + +/* + * Indicates to the driver that this surface will never be locked again. + * The driver is free to optimize this surface via retiling and actual compression. + * All calls to Lock() or Blts from this surface will fail. Surfaces with this + * cap set must also have DDSCAPS_TEXTURE. This cap cannot be used with + * DDSCAPS2_HINTDYNAMIC and DDSCAPS2_HINTSTATIC. + */ +#define DDSCAPS2_OPAQUE 0x00000080L + +/* + * Applications should set this bit at CreateSurface time to indicate that they + * intend to use antialiasing. Only valid if DDSCAPS_3DDEVICE is also set. + */ +#define DDSCAPS2_HINTANTIALIASING 0x00000100L + + +/* + * This flag is used at CreateSurface time to indicate that this set of + * surfaces is a cubic environment map + */ +#define DDSCAPS2_CUBEMAP 0x00000200L + +/* + * These flags preform two functions: + * - At CreateSurface time, they define which of the six cube faces are + * required by the application. + * - After creation, each face in the cubemap will have exactly one of these + * bits set. + */ +#define DDSCAPS2_CUBEMAP_POSITIVEX 0x00000400L +#define DDSCAPS2_CUBEMAP_NEGATIVEX 0x00000800L +#define DDSCAPS2_CUBEMAP_POSITIVEY 0x00001000L +#define DDSCAPS2_CUBEMAP_NEGATIVEY 0x00002000L +#define DDSCAPS2_CUBEMAP_POSITIVEZ 0x00004000L +#define DDSCAPS2_CUBEMAP_NEGATIVEZ 0x00008000L + +/* + * This macro may be used to specify all faces of a cube map at CreateSurface time + */ +#define DDSCAPS2_CUBEMAP_ALLFACES ( DDSCAPS2_CUBEMAP_POSITIVEX |\ + DDSCAPS2_CUBEMAP_NEGATIVEX |\ + DDSCAPS2_CUBEMAP_POSITIVEY |\ + DDSCAPS2_CUBEMAP_NEGATIVEY |\ + DDSCAPS2_CUBEMAP_POSITIVEZ |\ + DDSCAPS2_CUBEMAP_NEGATIVEZ ) + + +/* + * This flag is an additional flag which is present on mipmap sublevels from DX7 onwards + * It enables easier use of GetAttachedSurface rather than EnumAttachedSurfaces for surface + * constructs such as Cube Maps, wherein there are more than one mipmap surface attached + * to the root surface. + * This caps bit is ignored by CreateSurface + */ +#define DDSCAPS2_MIPMAPSUBLEVEL 0x00010000L + +/* This flag indicates that the texture should be managed by D3D only */ +#define DDSCAPS2_D3DTEXTUREMANAGE 0x00020000L + +/* This flag indicates that the managed surface can be safely lost */ +#define DDSCAPS2_DONOTPERSIST 0x00040000L + +/* indicates that this surface is part of a stereo flipping chain */ +#define DDSCAPS2_STEREOSURFACELEFT 0x00080000L + + +/* + * Indicates that the surface is a volume. + * Can be combined with DDSCAPS_MIPMAP to indicate a multi-level volume + */ +#define DDSCAPS2_VOLUME 0x00200000L + +/* + * Indicates that the surface may be locked multiple times by the application. + * This cap cannot be used with DDSCAPS2_OPAQUE. + */ +#define DDSCAPS2_NOTUSERLOCKABLE 0x00400000L + +/* + * Indicates that the vertex buffer data can be used to render points and + * point sprites. + */ +#define DDSCAPS2_POINTS 0x00800000L + +/* + * Indicates that the vertex buffer data can be used to render rt pactches. + */ +#define DDSCAPS2_RTPATCHES 0x01000000L + +/* + * Indicates that the vertex buffer data can be used to render n patches. + */ +#define DDSCAPS2_NPATCHES 0x02000000L + +/* + * This bit is reserved for internal use + */ +#define DDSCAPS2_RESERVED3 0x04000000L + + +/* + * Indicates that the contents of the backbuffer do not have to be preserved + * the contents of the backbuffer after they are presented. + */ +#define DDSCAPS2_DISCARDBACKBUFFER 0x10000000L + +/* + * Indicates that all surfaces in this creation chain should be given an alpha channel. + * This flag will be set on primary surface chains that may have no explicit pixel format + * (and thus take on the format of the current display mode). + * The driver should infer that all these surfaces have a format having an alpha channel. + * (e.g. assume D3DFMT_A8R8G8B8 if the display mode is x888.) + */ +#define DDSCAPS2_ENABLEALPHACHANNEL 0x20000000L + +/* + * Indicates that all surfaces in this creation chain is extended primary surface format. + * This flag will be set on extended primary surface chains that always have explicit pixel + * format and the pixel format is typically GDI (Graphics Device Interface) couldn't handle, + * thus only used with fullscreen application. (e.g. D3DFMT_A2R10G10B10 format) + */ +#define DDSCAPS2_EXTENDEDFORMATPRIMARY 0x40000000L + +/* + * Indicates that all surfaces in this creation chain is additional primary surface. + * This flag will be set on primary surface chains which must present on the adapter + * id provided on dwCaps4. Typically this will be used to create secondary primary surface + * on DualView display adapter. + */ +#define DDSCAPS2_ADDITIONALPRIMARY 0x80000000L + +/* + * This is a mask that indicates the set of bits that may be set + * at createsurface time to indicate number of samples per pixel + * when multisampling + */ +#define DDSCAPS3_MULTISAMPLE_MASK 0x0000001FL + +/* + * This is a mask that indicates the set of bits that may be set + * at createsurface time to indicate the quality level of rendering + * for the current number of samples per pixel + */ +#define DDSCAPS3_MULTISAMPLE_QUALITY_MASK 0x000000E0L +#define DDSCAPS3_MULTISAMPLE_QUALITY_SHIFT 5 + +/* + * This bit is reserved for internal use + */ +#define DDSCAPS3_RESERVED1 0x00000100L + +/* + * This bit is reserved for internal use + */ +#define DDSCAPS3_RESERVED2 0x00000200L + +/* + * This indicates whether this surface has light-weight miplevels + */ +#define DDSCAPS3_LIGHTWEIGHTMIPMAP 0x00000400L + +/* + * This indicates that the mipsublevels for this surface are auto-generated + */ +#define DDSCAPS3_AUTOGENMIPMAP 0x00000800L + +/* + * This indicates that the mipsublevels for this surface are auto-generated + */ +#define DDSCAPS3_DMAP 0x00001000L + + + /**************************************************************************** + * + * DIRECTDRAW DRIVER CAPABILITY FLAGS + * + ****************************************************************************/ + +/* + * Display hardware has 3D acceleration. + */ +#define DDCAPS_3D 0x00000001l + +/* + * Indicates that DirectDraw will support only dest rectangles that are aligned + * on DIRECTDRAWCAPS.dwAlignBoundaryDest boundaries of the surface, respectively. + * READ ONLY. + */ +#define DDCAPS_ALIGNBOUNDARYDEST 0x00000002l + +/* + * Indicates that DirectDraw will support only source rectangles whose sizes in + * BYTEs are DIRECTDRAWCAPS.dwAlignSizeDest multiples, respectively. READ ONLY. + */ +#define DDCAPS_ALIGNSIZEDEST 0x00000004l +/* + * Indicates that DirectDraw will support only source rectangles that are aligned + * on DIRECTDRAWCAPS.dwAlignBoundarySrc boundaries of the surface, respectively. + * READ ONLY. + */ +#define DDCAPS_ALIGNBOUNDARYSRC 0x00000008l + +/* + * Indicates that DirectDraw will support only source rectangles whose sizes in + * BYTEs are DIRECTDRAWCAPS.dwAlignSizeSrc multiples, respectively. READ ONLY. + */ +#define DDCAPS_ALIGNSIZESRC 0x00000010l + +/* + * Indicates that DirectDraw will create video memory surfaces that have a stride + * alignment equal to DIRECTDRAWCAPS.dwAlignStride. READ ONLY. + */ +#define DDCAPS_ALIGNSTRIDE 0x00000020l + +/* + * Display hardware is capable of blt operations. + */ +#define DDCAPS_BLT 0x00000040l + +/* + * Display hardware is capable of asynchronous blt operations. + */ +#define DDCAPS_BLTQUEUE 0x00000080l + +/* + * Display hardware is capable of color space conversions during the blt operation. + */ +#define DDCAPS_BLTFOURCC 0x00000100l + +/* + * Display hardware is capable of stretching during blt operations. + */ +#define DDCAPS_BLTSTRETCH 0x00000200l + +/* + * Display hardware is shared with GDI. + */ +#define DDCAPS_GDI 0x00000400l + +/* + * Display hardware can overlay. + */ +#define DDCAPS_OVERLAY 0x00000800l + +/* + * Set if display hardware supports overlays but can not clip them. + */ +#define DDCAPS_OVERLAYCANTCLIP 0x00001000l + +/* + * Indicates that overlay hardware is capable of color space conversions during + * the overlay operation. + */ +#define DDCAPS_OVERLAYFOURCC 0x00002000l + +/* + * Indicates that stretching can be done by the overlay hardware. + */ +#define DDCAPS_OVERLAYSTRETCH 0x00004000l + +/* + * Indicates that unique DirectDrawPalettes can be created for DirectDrawSurfaces + * other than the primary surface. + */ +#define DDCAPS_PALETTE 0x00008000l + +/* + * Indicates that palette changes can be syncd with the veritcal refresh. + */ +#define DDCAPS_PALETTEVSYNC 0x00010000l + +/* + * Display hardware can return the current scan line. + */ +#define DDCAPS_READSCANLINE 0x00020000l + + +/* + * This flag used to bo DDCAPS_STEREOVIEW, which is now obsolete + */ +#define DDCAPS_RESERVED1 0x00040000l + +/* + * Display hardware is capable of generating a vertical blank interrupt. + */ +#define DDCAPS_VBI 0x00080000l + +/* + * Supports the use of z buffers with blt operations. + */ +#define DDCAPS_ZBLTS 0x00100000l + +/* + * Supports Z Ordering of overlays. + */ +#define DDCAPS_ZOVERLAYS 0x00200000l + +/* + * Supports color key + */ +#define DDCAPS_COLORKEY 0x00400000l + +/* + * Supports alpha surfaces + */ +#define DDCAPS_ALPHA 0x00800000l + +/* + * colorkey is hardware assisted(DDCAPS_COLORKEY will also be set) + */ +#define DDCAPS_COLORKEYHWASSIST 0x01000000l + +/* + * no hardware support at all + */ +#define DDCAPS_NOHARDWARE 0x02000000l + +/* + * Display hardware is capable of color fill with bltter + */ +#define DDCAPS_BLTCOLORFILL 0x04000000l + +/* + * Display hardware is bank switched, and potentially very slow at + * random access to VRAM. + */ +#define DDCAPS_BANKSWITCHED 0x08000000l + +/* + * Display hardware is capable of depth filling Z-buffers with bltter + */ +#define DDCAPS_BLTDEPTHFILL 0x10000000l + +/* + * Display hardware is capable of clipping while bltting. + */ +#define DDCAPS_CANCLIP 0x20000000l + +/* + * Display hardware is capable of clipping while stretch bltting. + */ +#define DDCAPS_CANCLIPSTRETCHED 0x40000000l + +/* + * Display hardware is capable of bltting to or from system memory + */ +#define DDCAPS_CANBLTSYSMEM 0x80000000l + + + /**************************************************************************** + * + * MORE DIRECTDRAW DRIVER CAPABILITY FLAGS (dwCaps2) + * + ****************************************************************************/ + +/* + * Display hardware is certified + */ +#define DDCAPS2_CERTIFIED 0x00000001l + +/* + * Driver cannot interleave 2D operations (lock and blt) to surfaces with + * Direct3D rendering operations between calls to BeginScene() and EndScene() + */ +#define DDCAPS2_NO2DDURING3DSCENE 0x00000002l + +/* + * Display hardware contains a video port + */ +#define DDCAPS2_VIDEOPORT 0x00000004l + +/* + * The overlay can be automatically flipped according to the video port + * VSYNCs, providing automatic doubled buffered display of video port + * data using an overlay + */ +#define DDCAPS2_AUTOFLIPOVERLAY 0x00000008l + +/* + * Overlay can display each field of interlaced data individually while + * it is interleaved in memory without causing jittery artifacts. + */ +#define DDCAPS2_CANBOBINTERLEAVED 0x00000010l + +/* + * Overlay can display each field of interlaced data individually while + * it is not interleaved in memory without causing jittery artifacts. + */ +#define DDCAPS2_CANBOBNONINTERLEAVED 0x00000020l + +/* + * The overlay surface contains color controls (brightness, sharpness, etc.) + */ +#define DDCAPS2_COLORCONTROLOVERLAY 0x00000040l + +/* + * The primary surface contains color controls (gamma, etc.) + */ +#define DDCAPS2_COLORCONTROLPRIMARY 0x00000080l + +/* + * RGBZ -> RGB supported for 16:16 RGB:Z + */ +#define DDCAPS2_CANDROPZ16BIT 0x00000100l + +/* + * Driver supports non-local video memory. + */ +#define DDCAPS2_NONLOCALVIDMEM 0x00000200l + +/* + * Dirver supports non-local video memory but has different capabilities for + * non-local video memory surfaces. If this bit is set then so must + * DDCAPS2_NONLOCALVIDMEM. + */ +#define DDCAPS2_NONLOCALVIDMEMCAPS 0x00000400l + +/* + * Driver neither requires nor prefers surfaces to be pagelocked when performing + * blts involving system memory surfaces + */ +#define DDCAPS2_NOPAGELOCKREQUIRED 0x00000800l + +/* + * Driver can create surfaces which are wider than the primary surface + */ +#define DDCAPS2_WIDESURFACES 0x00001000l + +/* + * Driver supports bob without using a video port by handling the + * DDFLIP_ODD and DDFLIP_EVEN flags specified in Flip. + */ +#define DDCAPS2_CANFLIPODDEVEN 0x00002000l + +/* + * Driver supports bob using hardware + */ +#define DDCAPS2_CANBOBHARDWARE 0x00004000l + +/* + * Driver supports bltting any FOURCC surface to another surface of the same FOURCC + */ +#define DDCAPS2_COPYFOURCC 0x00008000l + + +/* + * Driver supports loadable gamma ramps for the primary surface + */ +#define DDCAPS2_PRIMARYGAMMA 0x00020000l + +/* + * Driver can render in windowed mode. + */ +#define DDCAPS2_CANRENDERWINDOWED 0x00080000l + +/* + * A calibrator is available to adjust the gamma ramp according to the + * physical display properties so that the result will be identical on + * all calibrated systems. + */ +#define DDCAPS2_CANCALIBRATEGAMMA 0x00100000l + +/* + * Indicates that the driver will respond to DDFLIP_INTERVALn flags + */ +#define DDCAPS2_FLIPINTERVAL 0x00200000l + +/* + * Indicates that the driver will respond to DDFLIP_NOVSYNC + */ +#define DDCAPS2_FLIPNOVSYNC 0x00400000l + +/* + * Driver supports management of video memory, if this flag is ON, + * driver manages the texture if requested with DDSCAPS2_TEXTUREMANAGE on + * DirectX manages the texture if this flag is OFF and surface has DDSCAPS2_TEXTUREMANAGE on + */ +#define DDCAPS2_CANMANAGETEXTURE 0x00800000l + +/* + * The Direct3D texture manager uses this cap to decide whether to put managed + * surfaces in non-local video memory. If the cap is set, the texture manager will + * put managed surfaces in non-local vidmem. Drivers that cannot texture from + * local vidmem SHOULD NOT set this cap. + */ +#define DDCAPS2_TEXMANINNONLOCALVIDMEM 0x01000000l + +/* + * Indicates that the driver supports DX7 type of stereo in at least one mode (which may + * not necessarily be the current mode). Applications should use IDirectDraw7 (or higher) + * ::EnumDisplayModes and check the DDSURFACEDESC.ddsCaps.dwCaps2 field for the presence of + * DDSCAPS2_STEREOSURFACELEFT to check if a particular mode supports stereo. The application + * can also use IDirectDraw7(or higher)::GetDisplayMode to check the current mode. + */ +#define DDCAPS2_STEREO 0x02000000L + +/* + * This caps bit is intended for internal DirectDraw use. + * -It is only valid if DDCAPS2_NONLOCALVIDMEMCAPS is set. + * -If this bit is set, then DDCAPS_CANBLTSYSMEM MUST be set by the driver (and + * all the assoicated system memory blt caps must be correct). + * -It implies that the system->video blt caps in DDCAPS also apply to system to + * nonlocal blts. I.e. the dwSVBCaps, dwSVBCKeyCaps, dwSVBFXCaps and dwSVBRops + * members of DDCAPS (DDCORECAPS) are filled in correctly. + * -Any blt from system to nonlocal memory that matches these caps bits will + * be passed to the driver. + * + * NOTE: This is intended to enable the driver itself to do efficient reordering + * of textures. This is NOT meant to imply that hardware can write into AGP memory. + * This operation is not currently supported. + */ +#define DDCAPS2_SYSTONONLOCAL_AS_SYSTOLOCAL 0x04000000L + +/* + * was DDCAPS2_PUREHAL + */ +#define DDCAPS2_RESERVED1 0x08000000L + +/* + * Driver supports management of video memory, if this flag is ON, + * driver manages the resource if requested with DDSCAPS2_TEXTUREMANAGE on + * DirectX manages the resource if this flag is OFF and surface has DDSCAPS2_TEXTUREMANAGE on + */ +#define DDCAPS2_CANMANAGERESOURCE 0x10000000L + +/* + * Driver supports dynamic textures. This will allow the application to set + * D3DUSAGE_DYNAMIC (DDSCAPS2_HINTDYNAMIC for drivers) at texture create time. + * Video memory dynamic textures WILL be lockable by applications. It is + * expected that these locks will be very efficient (which implies that the + * driver should always maintain a linear copy, a pointer to which can be + * quickly handed out to the application). + */ +#define DDCAPS2_DYNAMICTEXTURES 0x20000000L + +/* + * Driver supports auto-generation of mipmaps. + */ +#define DDCAPS2_CANAUTOGENMIPMAP 0x40000000L + + +/**************************************************************************** + * + * DIRECTDRAW FX ALPHA CAPABILITY FLAGS + * + ****************************************************************************/ + +/* + * Supports alpha blending around the edge of a source color keyed surface. + * For Blt. + */ +#define DDFXALPHACAPS_BLTALPHAEDGEBLEND 0x00000001l + +/* + * Supports alpha information in the pixel format. The bit depth of alpha + * information in the pixel format can be 1,2,4, or 8. The alpha value becomes + * more opaque as the alpha value increases. (0 is transparent.) + * For Blt. + */ +#define DDFXALPHACAPS_BLTALPHAPIXELS 0x00000002l + +/* + * Supports alpha information in the pixel format. The bit depth of alpha + * information in the pixel format can be 1,2,4, or 8. The alpha value + * becomes more transparent as the alpha value increases. (0 is opaque.) + * This flag can only be set if DDCAPS_ALPHA is set. + * For Blt. + */ +#define DDFXALPHACAPS_BLTALPHAPIXELSNEG 0x00000004l + +/* + * Supports alpha only surfaces. The bit depth of an alpha only surface can be + * 1,2,4, or 8. The alpha value becomes more opaque as the alpha value increases. + * (0 is transparent.) + * For Blt. + */ +#define DDFXALPHACAPS_BLTALPHASURFACES 0x00000008l + +/* + * The depth of the alpha channel data can range can be 1,2,4, or 8. + * The NEG suffix indicates that this alpha channel becomes more transparent + * as the alpha value increases. (0 is opaque.) This flag can only be set if + * DDCAPS_ALPHA is set. + * For Blt. + */ +#define DDFXALPHACAPS_BLTALPHASURFACESNEG 0x00000010l + +/* + * Supports alpha blending around the edge of a source color keyed surface. + * For Overlays. + */ +#define DDFXALPHACAPS_OVERLAYALPHAEDGEBLEND 0x00000020l + +/* + * Supports alpha information in the pixel format. The bit depth of alpha + * information in the pixel format can be 1,2,4, or 8. The alpha value becomes + * more opaque as the alpha value increases. (0 is transparent.) + * For Overlays. + */ +#define DDFXALPHACAPS_OVERLAYALPHAPIXELS 0x00000040l + +/* + * Supports alpha information in the pixel format. The bit depth of alpha + * information in the pixel format can be 1,2,4, or 8. The alpha value + * becomes more transparent as the alpha value increases. (0 is opaque.) + * This flag can only be set if DDCAPS_ALPHA is set. + * For Overlays. + */ +#define DDFXALPHACAPS_OVERLAYALPHAPIXELSNEG 0x00000080l + +/* + * Supports alpha only surfaces. The bit depth of an alpha only surface can be + * 1,2,4, or 8. The alpha value becomes more opaque as the alpha value increases. + * (0 is transparent.) + * For Overlays. + */ +#define DDFXALPHACAPS_OVERLAYALPHASURFACES 0x00000100l + +/* + * The depth of the alpha channel data can range can be 1,2,4, or 8. + * The NEG suffix indicates that this alpha channel becomes more transparent + * as the alpha value increases. (0 is opaque.) This flag can only be set if + * DDCAPS_ALPHA is set. + * For Overlays. + */ +#define DDFXALPHACAPS_OVERLAYALPHASURFACESNEG 0x00000200l + +#if DIRECTDRAW_VERSION < 0x0600 +#endif //DIRECTDRAW_VERSION + + +/**************************************************************************** + * + * DIRECTDRAW FX CAPABILITY FLAGS + * + ****************************************************************************/ + +/* + * Uses arithmetic operations to stretch and shrink surfaces during blt + * rather than pixel doubling techniques. Along the Y axis. + */ +#define DDFXCAPS_BLTARITHSTRETCHY 0x00000020l + +/* + * Uses arithmetic operations to stretch during blt + * rather than pixel doubling techniques. Along the Y axis. Only + * works for x1, x2, etc. + */ +#define DDFXCAPS_BLTARITHSTRETCHYN 0x00000010l + +/* + * Supports mirroring left to right in blt. + */ +#define DDFXCAPS_BLTMIRRORLEFTRIGHT 0x00000040l + +/* + * Supports mirroring top to bottom in blt. + */ +#define DDFXCAPS_BLTMIRRORUPDOWN 0x00000080l + +/* + * Supports arbitrary rotation for blts. + */ +#define DDFXCAPS_BLTROTATION 0x00000100l + +/* + * Supports 90 degree rotations for blts. + */ +#define DDFXCAPS_BLTROTATION90 0x00000200l + +/* + * DirectDraw supports arbitrary shrinking of a surface along the + * x axis (horizontal direction) for blts. + */ +#define DDFXCAPS_BLTSHRINKX 0x00000400l + +/* + * DirectDraw supports integer shrinking (1x,2x,) of a surface + * along the x axis (horizontal direction) for blts. + */ +#define DDFXCAPS_BLTSHRINKXN 0x00000800l + +/* + * DirectDraw supports arbitrary shrinking of a surface along the + * y axis (horizontal direction) for blts. + */ +#define DDFXCAPS_BLTSHRINKY 0x00001000l + +/* + * DirectDraw supports integer shrinking (1x,2x,) of a surface + * along the y axis (vertical direction) for blts. + */ +#define DDFXCAPS_BLTSHRINKYN 0x00002000l + +/* + * DirectDraw supports arbitrary stretching of a surface along the + * x axis (horizontal direction) for blts. + */ +#define DDFXCAPS_BLTSTRETCHX 0x00004000l + +/* + * DirectDraw supports integer stretching (1x,2x,) of a surface + * along the x axis (horizontal direction) for blts. + */ +#define DDFXCAPS_BLTSTRETCHXN 0x00008000l + +/* + * DirectDraw supports arbitrary stretching of a surface along the + * y axis (horizontal direction) for blts. + */ +#define DDFXCAPS_BLTSTRETCHY 0x00010000l + +/* + * DirectDraw supports integer stretching (1x,2x,) of a surface + * along the y axis (vertical direction) for blts. + */ +#define DDFXCAPS_BLTSTRETCHYN 0x00020000l + +/* + * Uses arithmetic operations to stretch and shrink surfaces during + * overlay rather than pixel doubling techniques. Along the Y axis + * for overlays. + */ +#define DDFXCAPS_OVERLAYARITHSTRETCHY 0x00040000l + +/* + * Uses arithmetic operations to stretch surfaces during + * overlay rather than pixel doubling techniques. Along the Y axis + * for overlays. Only works for x1, x2, etc. + */ +#define DDFXCAPS_OVERLAYARITHSTRETCHYN 0x00000008l + +/* + * DirectDraw supports arbitrary shrinking of a surface along the + * x axis (horizontal direction) for overlays. + */ +#define DDFXCAPS_OVERLAYSHRINKX 0x00080000l + +/* + * DirectDraw supports integer shrinking (1x,2x,) of a surface + * along the x axis (horizontal direction) for overlays. + */ +#define DDFXCAPS_OVERLAYSHRINKXN 0x00100000l + +/* + * DirectDraw supports arbitrary shrinking of a surface along the + * y axis (horizontal direction) for overlays. + */ +#define DDFXCAPS_OVERLAYSHRINKY 0x00200000l + +/* + * DirectDraw supports integer shrinking (1x,2x,) of a surface + * along the y axis (vertical direction) for overlays. + */ +#define DDFXCAPS_OVERLAYSHRINKYN 0x00400000l + +/* + * DirectDraw supports arbitrary stretching of a surface along the + * x axis (horizontal direction) for overlays. + */ +#define DDFXCAPS_OVERLAYSTRETCHX 0x00800000l + +/* + * DirectDraw supports integer stretching (1x,2x,) of a surface + * along the x axis (horizontal direction) for overlays. + */ +#define DDFXCAPS_OVERLAYSTRETCHXN 0x01000000l + +/* + * DirectDraw supports arbitrary stretching of a surface along the + * y axis (horizontal direction) for overlays. + */ +#define DDFXCAPS_OVERLAYSTRETCHY 0x02000000l + +/* + * DirectDraw supports integer stretching (1x,2x,) of a surface + * along the y axis (vertical direction) for overlays. + */ +#define DDFXCAPS_OVERLAYSTRETCHYN 0x04000000l + +/* + * DirectDraw supports mirroring of overlays across the vertical axis + */ +#define DDFXCAPS_OVERLAYMIRRORLEFTRIGHT 0x08000000l + +/* + * DirectDraw supports mirroring of overlays across the horizontal axis + */ +#define DDFXCAPS_OVERLAYMIRRORUPDOWN 0x10000000l + +/* + * DirectDraw supports deinterlacing of overlay surfaces + */ +#define DDFXCAPS_OVERLAYDEINTERLACE 0x20000000l + +/* + * Driver can do alpha blending for blits. + */ +#define DDFXCAPS_BLTALPHA 0x00000001l + + +/* + * Driver can do surface-reconstruction filtering for warped blits. + */ +#define DDFXCAPS_BLTFILTER DDFXCAPS_BLTARITHSTRETCHY + +/* + * Driver can do alpha blending for overlays. + */ +#define DDFXCAPS_OVERLAYALPHA 0x00000004l + + +/* + * Driver can do surface-reconstruction filtering for warped overlays. + */ +#define DDFXCAPS_OVERLAYFILTER DDFXCAPS_OVERLAYARITHSTRETCHY + +/**************************************************************************** + * + * DIRECTDRAW STEREO VIEW CAPABILITIES + * + ****************************************************************************/ + +/* + * This flag used to be DDSVCAPS_ENIGMA, which is now obsolete + */ + +#define DDSVCAPS_RESERVED1 0x00000001l + +/* + * This flag used to be DDSVCAPS_FLICKER, which is now obsolete + */ +#define DDSVCAPS_RESERVED2 0x00000002l + +/* + * This flag used to be DDSVCAPS_REDBLUE, which is now obsolete + */ +#define DDSVCAPS_RESERVED3 0x00000004l + +/* + * This flag used to be DDSVCAPS_SPLIT, which is now obsolete + */ +#define DDSVCAPS_RESERVED4 0x00000008l + +/* + * The stereo view is accomplished with switching technology + */ + +#define DDSVCAPS_STEREOSEQUENTIAL 0x00000010L + + + +/**************************************************************************** + * + * DIRECTDRAWPALETTE CAPABILITIES + * + ****************************************************************************/ + +/* + * Index is 4 bits. There are sixteen color entries in the palette table. + */ +#define DDPCAPS_4BIT 0x00000001l + +/* + * Index is onto a 8 bit color index. This field is only valid with the + * DDPCAPS_1BIT, DDPCAPS_2BIT or DDPCAPS_4BIT capability and the target + * surface is in 8bpp. Each color entry is one byte long and is an index + * into destination surface's 8bpp palette. + */ +#define DDPCAPS_8BITENTRIES 0x00000002l + +/* + * Index is 8 bits. There are 256 color entries in the palette table. + */ +#define DDPCAPS_8BIT 0x00000004l + +/* + * Indicates that this DIRECTDRAWPALETTE should use the palette color array + * passed into the lpDDColorArray parameter to initialize the DIRECTDRAWPALETTE + * object. + * This flag is obsolete. DirectDraw always initializes the color array from + * the lpDDColorArray parameter. The definition remains for source-level + * compatibility. + */ +#define DDPCAPS_INITIALIZE 0x00000000l + +/* + * This palette is the one attached to the primary surface. Changing this + * table has immediate effect on the display unless DDPSETPAL_VSYNC is specified + * and supported. + */ +#define DDPCAPS_PRIMARYSURFACE 0x00000010l + +/* + * This palette is the one attached to the primary surface left. Changing + * this table has immediate effect on the display for the left eye unless + * DDPSETPAL_VSYNC is specified and supported. + */ +#define DDPCAPS_PRIMARYSURFACELEFT 0x00000020l + +/* + * This palette can have all 256 entries defined + */ +#define DDPCAPS_ALLOW256 0x00000040l + +/* + * This palette can have modifications to it synced with the monitors + * refresh rate. + */ +#define DDPCAPS_VSYNC 0x00000080l + +/* + * Index is 1 bit. There are two color entries in the palette table. + */ +#define DDPCAPS_1BIT 0x00000100l + +/* + * Index is 2 bit. There are four color entries in the palette table. + */ +#define DDPCAPS_2BIT 0x00000200l + +/* + * The peFlags member of PALETTEENTRY denotes an 8 bit alpha value + */ +#define DDPCAPS_ALPHA 0x00000400l + + +/**************************************************************************** + * + * DIRECTDRAWPALETTE SETENTRY CONSTANTS + * + ****************************************************************************/ + + +/**************************************************************************** + * + * DIRECTDRAWPALETTE GETENTRY CONSTANTS + * + ****************************************************************************/ + +/* 0 is the only legal value */ + +/**************************************************************************** + * + * DIRECTDRAWSURFACE SETPRIVATEDATA CONSTANTS + * + ****************************************************************************/ + +/* + * The passed pointer is an IUnknown ptr. The cbData argument to SetPrivateData + * must be set to sizeof(IUnknown*). DirectDraw will call AddRef through this + * pointer and Release when the private data is destroyed. This includes when + * the surface or palette is destroyed before such priovate data is destroyed. + */ +#define DDSPD_IUNKNOWNPOINTER 0x00000001L + +/* + * Private data is only valid for the current state of the object, + * as determined by the uniqueness value. + */ +#define DDSPD_VOLATILE 0x00000002L + + +/**************************************************************************** + * + * DIRECTDRAWSURFACE SETPALETTE CONSTANTS + * + ****************************************************************************/ + + +/**************************************************************************** + * + * DIRECTDRAW BITDEPTH CONSTANTS + * + * NOTE: These are only used to indicate supported bit depths. These + * are flags only, they are not to be used as an actual bit depth. The + * absolute numbers 1, 2, 4, 8, 16, 24 and 32 are used to indicate actual + * bit depths in a surface or for changing the display mode. + * + ****************************************************************************/ + +/* + * 1 bit per pixel. + */ +#define DDBD_1 0x00004000l + +/* + * 2 bits per pixel. + */ +#define DDBD_2 0x00002000l + +/* + * 4 bits per pixel. + */ +#define DDBD_4 0x00001000l + +/* + * 8 bits per pixel. + */ +#define DDBD_8 0x00000800l + +/* + * 16 bits per pixel. + */ +#define DDBD_16 0x00000400l + +/* + * 24 bits per pixel. + */ +#define DDBD_24 0X00000200l + +/* + * 32 bits per pixel. + */ +#define DDBD_32 0x00000100l + +/**************************************************************************** + * + * DIRECTDRAWSURFACE SET/GET COLOR KEY FLAGS + * + ****************************************************************************/ + +/* + * Set if the structure contains a color space. Not set if the structure + * contains a single color key. + */ +#define DDCKEY_COLORSPACE 0x00000001l + +/* + * Set if the structure specifies a color key or color space which is to be + * used as a destination color key for blt operations. + */ +#define DDCKEY_DESTBLT 0x00000002l + +/* + * Set if the structure specifies a color key or color space which is to be + * used as a destination color key for overlay operations. + */ +#define DDCKEY_DESTOVERLAY 0x00000004l + +/* + * Set if the structure specifies a color key or color space which is to be + * used as a source color key for blt operations. + */ +#define DDCKEY_SRCBLT 0x00000008l + +/* + * Set if the structure specifies a color key or color space which is to be + * used as a source color key for overlay operations. + */ +#define DDCKEY_SRCOVERLAY 0x00000010l + + +/**************************************************************************** + * + * DIRECTDRAW COLOR KEY CAPABILITY FLAGS + * + ****************************************************************************/ + +/* + * Supports transparent blting using a color key to identify the replaceable + * bits of the destination surface for RGB colors. + */ +#define DDCKEYCAPS_DESTBLT 0x00000001l + +/* + * Supports transparent blting using a color space to identify the replaceable + * bits of the destination surface for RGB colors. + */ +#define DDCKEYCAPS_DESTBLTCLRSPACE 0x00000002l + +/* + * Supports transparent blting using a color space to identify the replaceable + * bits of the destination surface for YUV colors. + */ +#define DDCKEYCAPS_DESTBLTCLRSPACEYUV 0x00000004l + +/* + * Supports transparent blting using a color key to identify the replaceable + * bits of the destination surface for YUV colors. + */ +#define DDCKEYCAPS_DESTBLTYUV 0x00000008l + +/* + * Supports overlaying using colorkeying of the replaceable bits of the surface + * being overlayed for RGB colors. + */ +#define DDCKEYCAPS_DESTOVERLAY 0x00000010l + +/* + * Supports a color space as the color key for the destination for RGB colors. + */ +#define DDCKEYCAPS_DESTOVERLAYCLRSPACE 0x00000020l + +/* + * Supports a color space as the color key for the destination for YUV colors. + */ +#define DDCKEYCAPS_DESTOVERLAYCLRSPACEYUV 0x00000040l + +/* + * Supports only one active destination color key value for visible overlay + * surfaces. + */ +#define DDCKEYCAPS_DESTOVERLAYONEACTIVE 0x00000080l + +/* + * Supports overlaying using colorkeying of the replaceable bits of the + * surface being overlayed for YUV colors. + */ +#define DDCKEYCAPS_DESTOVERLAYYUV 0x00000100l + +/* + * Supports transparent blting using the color key for the source with + * this surface for RGB colors. + */ +#define DDCKEYCAPS_SRCBLT 0x00000200l + +/* + * Supports transparent blting using a color space for the source with + * this surface for RGB colors. + */ +#define DDCKEYCAPS_SRCBLTCLRSPACE 0x00000400l + +/* + * Supports transparent blting using a color space for the source with + * this surface for YUV colors. + */ +#define DDCKEYCAPS_SRCBLTCLRSPACEYUV 0x00000800l + +/* + * Supports transparent blting using the color key for the source with + * this surface for YUV colors. + */ +#define DDCKEYCAPS_SRCBLTYUV 0x00001000l + +/* + * Supports overlays using the color key for the source with this + * overlay surface for RGB colors. + */ +#define DDCKEYCAPS_SRCOVERLAY 0x00002000l + +/* + * Supports overlays using a color space as the source color key for + * the overlay surface for RGB colors. + */ +#define DDCKEYCAPS_SRCOVERLAYCLRSPACE 0x00004000l + +/* + * Supports overlays using a color space as the source color key for + * the overlay surface for YUV colors. + */ +#define DDCKEYCAPS_SRCOVERLAYCLRSPACEYUV 0x00008000l + +/* + * Supports only one active source color key value for visible + * overlay surfaces. + */ +#define DDCKEYCAPS_SRCOVERLAYONEACTIVE 0x00010000l + +/* + * Supports overlays using the color key for the source with this + * overlay surface for YUV colors. + */ +#define DDCKEYCAPS_SRCOVERLAYYUV 0x00020000l + +/* + * there are no bandwidth trade-offs for using colorkey with an overlay + */ +#define DDCKEYCAPS_NOCOSTOVERLAY 0x00040000l + + +/**************************************************************************** + * + * DIRECTDRAW PIXELFORMAT FLAGS + * + ****************************************************************************/ + +/* + * The surface has alpha channel information in the pixel format. + */ +#define DDPF_ALPHAPIXELS 0x00000001l + +/* + * The pixel format contains alpha only information + */ +#define DDPF_ALPHA 0x00000002l + +/* + * The FourCC code is valid. + */ +#define DDPF_FOURCC 0x00000004l + +/* + * The surface is 4-bit color indexed. + */ +#define DDPF_PALETTEINDEXED4 0x00000008l + +/* + * The surface is indexed into a palette which stores indices + * into the destination surface's 8-bit palette. + */ +#define DDPF_PALETTEINDEXEDTO8 0x00000010l + +/* + * The surface is 8-bit color indexed. + */ +#define DDPF_PALETTEINDEXED8 0x00000020l + +/* + * The RGB data in the pixel format structure is valid. + */ +#define DDPF_RGB 0x00000040l + +/* + * The surface will accept pixel data in the format specified + * and compress it during the write. + */ +#define DDPF_COMPRESSED 0x00000080l + +/* + * The surface will accept RGB data and translate it during + * the write to YUV data. The format of the data to be written + * will be contained in the pixel format structure. The DDPF_RGB + * flag will be set. + */ +#define DDPF_RGBTOYUV 0x00000100l + +/* + * pixel format is YUV - YUV data in pixel format struct is valid + */ +#define DDPF_YUV 0x00000200l + +/* + * pixel format is a z buffer only surface + */ +#define DDPF_ZBUFFER 0x00000400l + +/* + * The surface is 1-bit color indexed. + */ +#define DDPF_PALETTEINDEXED1 0x00000800l + +/* + * The surface is 2-bit color indexed. + */ +#define DDPF_PALETTEINDEXED2 0x00001000l + +/* + * The surface contains Z information in the pixels + */ +#define DDPF_ZPIXELS 0x00002000l + +/* + * The surface contains stencil information along with Z + */ +#define DDPF_STENCILBUFFER 0x00004000l + +/* + * Premultiplied alpha format -- the color components have been + * premultiplied by the alpha component. + */ +#define DDPF_ALPHAPREMULT 0x00008000l + + +/* + * Luminance data in the pixel format is valid. + * Use this flag for luminance-only or luminance+alpha surfaces, + * the bit depth is then ddpf.dwLuminanceBitCount. + */ +#define DDPF_LUMINANCE 0x00020000l + +/* + * Luminance data in the pixel format is valid. + * Use this flag when hanging luminance off bumpmap surfaces, + * the bit mask for the luminance portion of the pixel is then + * ddpf.dwBumpLuminanceBitMask + */ +#define DDPF_BUMPLUMINANCE 0x00040000l + +/* + * Bump map dUdV data in the pixel format is valid. + */ +#define DDPF_BUMPDUDV 0x00080000l + + +/*=========================================================================== + * + * + * DIRECTDRAW CALLBACK FLAGS + * + * + *==========================================================================*/ + +/**************************************************************************** + * + * DIRECTDRAW ENUMSURFACES FLAGS + * + ****************************************************************************/ + +/* + * Enumerate all of the surfaces that meet the search criterion. + */ +#define DDENUMSURFACES_ALL 0x00000001l + +/* + * A search hit is a surface that matches the surface description. + */ +#define DDENUMSURFACES_MATCH 0x00000002l + +/* + * A search hit is a surface that does not match the surface description. + */ +#define DDENUMSURFACES_NOMATCH 0x00000004l + +/* + * Enumerate the first surface that can be created which meets the search criterion. + */ +#define DDENUMSURFACES_CANBECREATED 0x00000008l + +/* + * Enumerate the surfaces that already exist that meet the search criterion. + */ +#define DDENUMSURFACES_DOESEXIST 0x00000010l + + +/**************************************************************************** + * + * DIRECTDRAW SETDISPLAYMODE FLAGS + * + ****************************************************************************/ + +/* + * The desired mode is a standard VGA mode + */ +#define DDSDM_STANDARDVGAMODE 0x00000001l + + +/**************************************************************************** + * + * DIRECTDRAW ENUMDISPLAYMODES FLAGS + * + ****************************************************************************/ + +/* + * Enumerate Modes with different refresh rates. EnumDisplayModes guarantees + * that a particular mode will be enumerated only once. This flag specifies whether + * the refresh rate is taken into account when determining if a mode is unique. + */ +#define DDEDM_REFRESHRATES 0x00000001l + +/* + * Enumerate VGA modes. Specify this flag if you wish to enumerate supported VGA + * modes such as mode 0x13 in addition to the usual ModeX modes (which are always + * enumerated if the application has previously called SetCooperativeLevel with the + * DDSCL_ALLOWMODEX flag set). + */ +#define DDEDM_STANDARDVGAMODES 0x00000002L + + +/**************************************************************************** + * + * DIRECTDRAW SETCOOPERATIVELEVEL FLAGS + * + ****************************************************************************/ + +/* + * Exclusive mode owner will be responsible for the entire primary surface. + * GDI can be ignored. used with DD + */ +#define DDSCL_FULLSCREEN 0x00000001l + +/* + * allow CTRL_ALT_DEL to work while in fullscreen exclusive mode + */ +#define DDSCL_ALLOWREBOOT 0x00000002l + +/* + * prevents DDRAW from modifying the application window. + * prevents DDRAW from minimize/restore the application window on activation. + */ +#define DDSCL_NOWINDOWCHANGES 0x00000004l + +/* + * app wants to work as a regular Windows application + */ +#define DDSCL_NORMAL 0x00000008l + +/* + * app wants exclusive access + */ +#define DDSCL_EXCLUSIVE 0x00000010l + + +/* + * app can deal with non-windows display modes + */ +#define DDSCL_ALLOWMODEX 0x00000040l + +/* + * this window will receive the focus messages + */ +#define DDSCL_SETFOCUSWINDOW 0x00000080l + +/* + * this window is associated with the DDRAW object and will + * cover the screen in fullscreen mode + */ +#define DDSCL_SETDEVICEWINDOW 0x00000100l + +/* + * app wants DDRAW to create a window to be associated with the + * DDRAW object + */ +#define DDSCL_CREATEDEVICEWINDOW 0x00000200l + +/* + * App explicitly asks DDRAW/D3D to be multithread safe. This makes D3D + * take the global crtisec more frequently. + */ +#define DDSCL_MULTITHREADED 0x00000400l + +/* + * App specifies that it would like to keep the FPU set up for optimal Direct3D + * performance (single precision and exceptions disabled) so Direct3D + * does not need to explicitly set the FPU each time. This is assumed by + * default in DirectX 7. See also DDSCL_FPUPRESERVE + */ +#define DDSCL_FPUSETUP 0x00000800l + +/* + * App specifies that it needs either double precision FPU or FPU exceptions + * enabled. This makes Direct3D explicitly set the FPU state eah time it is + * called. Setting the flag will reduce Direct3D performance. The flag is + * assumed by default in DirectX 6 and earlier. See also DDSCL_FPUSETUP + */ +#define DDSCL_FPUPRESERVE 0x00001000l + + +/**************************************************************************** + * + * DIRECTDRAW BLT FLAGS + * + ****************************************************************************/ + +/* + * Use the alpha information in the pixel format or the alpha channel surface + * attached to the destination surface as the alpha channel for this blt. + */ +#define DDBLT_ALPHADEST 0x00000001l + +/* + * Use the dwConstAlphaDest field in the DDBLTFX structure as the alpha channel + * for the destination surface for this blt. + */ +#define DDBLT_ALPHADESTCONSTOVERRIDE 0x00000002l + +/* + * The NEG suffix indicates that the destination surface becomes more + * transparent as the alpha value increases. (0 is opaque) + */ +#define DDBLT_ALPHADESTNEG 0x00000004l + +/* + * Use the lpDDSAlphaDest field in the DDBLTFX structure as the alpha + * channel for the destination for this blt. + */ +#define DDBLT_ALPHADESTSURFACEOVERRIDE 0x00000008l + +/* + * Use the dwAlphaEdgeBlend field in the DDBLTFX structure as the alpha channel + * for the edges of the image that border the color key colors. + */ +#define DDBLT_ALPHAEDGEBLEND 0x00000010l + +/* + * Use the alpha information in the pixel format or the alpha channel surface + * attached to the source surface as the alpha channel for this blt. + */ +#define DDBLT_ALPHASRC 0x00000020l + +/* + * Use the dwConstAlphaSrc field in the DDBLTFX structure as the alpha channel + * for the source for this blt. + */ +#define DDBLT_ALPHASRCCONSTOVERRIDE 0x00000040l + +/* + * The NEG suffix indicates that the source surface becomes more transparent + * as the alpha value increases. (0 is opaque) + */ +#define DDBLT_ALPHASRCNEG 0x00000080l + +/* + * Use the lpDDSAlphaSrc field in the DDBLTFX structure as the alpha channel + * for the source for this blt. + */ +#define DDBLT_ALPHASRCSURFACEOVERRIDE 0x00000100l + +/* + * Do this blt asynchronously through the FIFO in the order received. If + * there is no room in the hardware FIFO fail the call. + */ +#define DDBLT_ASYNC 0x00000200l + +/* + * Uses the dwFillColor field in the DDBLTFX structure as the RGB color + * to fill the destination rectangle on the destination surface with. + */ +#define DDBLT_COLORFILL 0x00000400l + +/* + * Uses the dwDDFX field in the DDBLTFX structure to specify the effects + * to use for the blt. + */ +#define DDBLT_DDFX 0x00000800l + +/* + * Uses the dwDDROPS field in the DDBLTFX structure to specify the ROPS + * that are not part of the Win32 API. + */ +#define DDBLT_DDROPS 0x00001000l + +/* + * Use the color key associated with the destination surface. + */ +#define DDBLT_KEYDEST 0x00002000l + +/* + * Use the dckDestColorkey field in the DDBLTFX structure as the color key + * for the destination surface. + */ +#define DDBLT_KEYDESTOVERRIDE 0x00004000l + +/* + * Use the color key associated with the source surface. + */ +#define DDBLT_KEYSRC 0x00008000l + +/* + * Use the dckSrcColorkey field in the DDBLTFX structure as the color key + * for the source surface. + */ +#define DDBLT_KEYSRCOVERRIDE 0x00010000l + +/* + * Use the dwROP field in the DDBLTFX structure for the raster operation + * for this blt. These ROPs are the same as the ones defined in the Win32 API. + */ +#define DDBLT_ROP 0x00020000l + +/* + * Use the dwRotationAngle field in the DDBLTFX structure as the angle + * (specified in 1/100th of a degree) to rotate the surface. + */ +#define DDBLT_ROTATIONANGLE 0x00040000l + +/* + * Z-buffered blt using the z-buffers attached to the source and destination + * surfaces and the dwZBufferOpCode field in the DDBLTFX structure as the + * z-buffer opcode. + */ +#define DDBLT_ZBUFFER 0x00080000l + +/* + * Z-buffered blt using the dwConstDest Zfield and the dwZBufferOpCode field + * in the DDBLTFX structure as the z-buffer and z-buffer opcode respectively + * for the destination. + */ +#define DDBLT_ZBUFFERDESTCONSTOVERRIDE 0x00100000l + +/* + * Z-buffered blt using the lpDDSDestZBuffer field and the dwZBufferOpCode + * field in the DDBLTFX structure as the z-buffer and z-buffer opcode + * respectively for the destination. + */ +#define DDBLT_ZBUFFERDESTOVERRIDE 0x00200000l + +/* + * Z-buffered blt using the dwConstSrcZ field and the dwZBufferOpCode field + * in the DDBLTFX structure as the z-buffer and z-buffer opcode respectively + * for the source. + */ +#define DDBLT_ZBUFFERSRCCONSTOVERRIDE 0x00400000l + +/* + * Z-buffered blt using the lpDDSSrcZBuffer field and the dwZBufferOpCode + * field in the DDBLTFX structure as the z-buffer and z-buffer opcode + * respectively for the source. + */ +#define DDBLT_ZBUFFERSRCOVERRIDE 0x00800000l + +/* + * wait until the device is ready to handle the blt + * this will cause blt to not return DDERR_WASSTILLDRAWING + */ +#define DDBLT_WAIT 0x01000000l + +/* + * Uses the dwFillDepth field in the DDBLTFX structure as the depth value + * to fill the destination rectangle on the destination Z-buffer surface + * with. + */ +#define DDBLT_DEPTHFILL 0x02000000l + + +/* + * Return immediately (with DDERR_WASSTILLDRAWING) if the device is not + * ready to schedule the blt at the time Blt() is called. + */ +#define DDBLT_DONOTWAIT 0x08000000l + +/* + * These flags indicate a presentation blt (i.e. a blt + * that moves surface contents from an offscreen back buffer to the primary + * surface). The driver is not allowed to "queue" more than three such blts. + * The "end" of the presentation blt is indicated, since the + * blt may be clipped, in which case the runtime will call the driver with + * several blts. All blts (even if not clipped) are tagged with DDBLT_PRESENTATION + * and the last (even if not clipped) additionally with DDBLT_LAST_PRESENTATION. + * Thus the true rule is that the driver must not schedule a DDBLT_PRESENTATION + * blt if there are 3 or more DDBLT_PRESENTLAST blts in the hardware pipe. + * If there are such blts in the pipe, the driver should return DDERR_WASSTILLDRAWING + * until the oldest queued DDBLT_LAST_PRESENTATION blts has been retired (i.e. the + * pixels have been actually written to the primary surface). Once the oldest blt + * has been retired, the driver is free to schedule the current blt. + * The goal is to provide a mechanism whereby the device's hardware queue never + * gets more than 3 frames ahead of the frames being generated by the application. + * When excessive queueing occurs, applications become unusable because the application + * visibly lags user input, and such problems make windowed interactive applications impossible. + * Some drivers may not have sufficient knowledge of their hardware's FIFO to know + * when a certain blt has been retired. Such drivers should code cautiously, and + * simply not allow any frames to be queued at all. DDBLT_LAST_PRESENTATION should cause + * such drivers to return DDERR_WASSTILLDRAWING until the accelerator is completely + * finished- exactly as if the application had called Lock on the source surface + * before calling Blt. + * In other words, the driver is allowed and encouraged to + * generate as much latency as it can, but never more than 3 frames worth. + * Implementation detail: Drivers should count blts against the SOURCE surface, not + * against the primary surface. This enables multiple parallel windowed application + * to function more optimally. + * This flag is passed only to DX8 or higher drivers. + * + * APPLICATIONS DO NOT SET THESE FLAGS. THEY ARE SET BY THE DIRECTDRAW RUNTIME. + * + */ +#define DDBLT_PRESENTATION 0x10000000l +#define DDBLT_LAST_PRESENTATION 0x20000000l + +/* + * If DDBLT_EXTENDED_FLAGS is set, then the driver should re-interpret + * other flags according to the definitions that follow. + * For example, bit 0 (0x00000001L) means DDBLT_ALPHADEST, unless + * DDBLT_EXTENDED_FLAGS is also set, in which case bit 0 means + * DDBLT_EXTENDED_LINEAR_CONTENT. + * Only DirectX9 and higher drivers will be given extended blt flags. + * Only flags explicitly mentioned here should be re-interpreted. + * All other flags retain their original meanings. + * + * List of re-interpreted flags: + * + * Bit Hex value New meaning old meaning + * --------------------------------------------------------------- + * 2 0x00000004 DDBLT_EXTENDED_LINEAR_CONTENT DDBLT_ALPHADESTNEG + * 4 0x00000010 DDBLT_EXTENDED_PRESENTATION_STRETCHFACTOR DDBLT_ALPHAEDGEBLEND + * + * + * NOTE: APPLICATIONS SHOULD NOT SET THIS FLAG. THIS FLAG IS INTENDED + * FOR USE BY THE DIRECT3D RUNTIME. + */ +#define DDBLT_EXTENDED_FLAGS 0x40000000l + +/* + * EXTENDED FLAG. SEE DEFINITION OF DDBLT_EXTENDED_FLAGS. + * This flag indidcates that the source surface contains content in a + * linear color space. The driver may perform gamma correction to the + * desktop color space (i.e. sRGB, gamma 2.2) as part of this blt. + * If the device can perform such a conversion as part of the copy, + * the driver should also set D3DCAPS3_LINEAR_TO_SRGB_PRESENTATION + * + * NOTE: APPLICATIONS SHOULD NOT SET THIS FLAG. THIS FLAG IS INTENDED + * FOR USE BY THE DIRECT3D RUNTIME. Use IDirect3DSwapChain9::Present + * and specify D3DPRESENT_LINEAR_CONTENT in order to use this functionality. + */ +#define DDBLT_EXTENDED_LINEAR_CONTENT 0x00000004l + + +/**************************************************************************** + * + * BLTFAST FLAGS + * + ****************************************************************************/ + +#define DDBLTFAST_NOCOLORKEY 0x00000000 +#define DDBLTFAST_SRCCOLORKEY 0x00000001 +#define DDBLTFAST_DESTCOLORKEY 0x00000002 +#define DDBLTFAST_WAIT 0x00000010 +#define DDBLTFAST_DONOTWAIT 0x00000020 + +/**************************************************************************** + * + * FLIP FLAGS + * + ****************************************************************************/ + +#define DDFLIP_WAIT 0x00000001L + +/* + * Indicates that the target surface contains the even field of video data. + * This flag is only valid with an overlay surface. + */ +#define DDFLIP_EVEN 0x00000002L + +/* + * Indicates that the target surface contains the odd field of video data. + * This flag is only valid with an overlay surface. + */ +#define DDFLIP_ODD 0x00000004L + +/* + * Causes DirectDraw to perform the physical flip immediately and return + * to the application. Typically, what was the front buffer but is now the back + * buffer will still be visible (depending on timing) until the next vertical + * retrace. Subsequent operations involving the two flipped surfaces will + * not check to see if the physical flip has finished (i.e. will not return + * DDERR_WASSTILLDRAWING for that reason (but may for other reasons)). + * This allows an application to perform Flips at a higher frequency than the + * monitor refresh rate, but may introduce visible artifacts. + * Only effective if DDCAPS2_FLIPNOVSYNC is set. If that bit is not set, + * DDFLIP_NOVSYNC has no effect. + */ +#define DDFLIP_NOVSYNC 0x00000008L + + +/* + * Flip Interval Flags. These flags indicate how many vertical retraces to wait between + * each flip. The default is one. DirectDraw will return DDERR_WASSTILLDRAWING for each + * surface involved in the flip until the specified number of vertical retraces has + * ocurred. Only effective if DDCAPS2_FLIPINTERVAL is set. If that bit is not set, + * DDFLIP_INTERVALn has no effect. + */ + +/* + * DirectDraw will flip on every other vertical sync + */ +#define DDFLIP_INTERVAL2 0x02000000L + + +/* + * DirectDraw will flip on every third vertical sync + */ +#define DDFLIP_INTERVAL3 0x03000000L + + +/* + * DirectDraw will flip on every fourth vertical sync + */ +#define DDFLIP_INTERVAL4 0x04000000L + +/* + * DirectDraw will flip and display a main stereo surface + */ +#define DDFLIP_STEREO 0x00000010L + +/* + * On IDirectDrawSurface7 and higher interfaces, the default is DDFLIP_WAIT. If you wish + * to override the default and use time when the accelerator is busy (as denoted by + * the DDERR_WASSTILLDRAWING return code) then use DDFLIP_DONOTWAIT. + */ +#define DDFLIP_DONOTWAIT 0x00000020L + + +/**************************************************************************** + * + * DIRECTDRAW SURFACE OVERLAY FLAGS + * + ****************************************************************************/ + +/* + * Use the alpha information in the pixel format or the alpha channel surface + * attached to the destination surface as the alpha channel for the + * destination overlay. + */ +#define DDOVER_ALPHADEST 0x00000001l + +/* + * Use the dwConstAlphaDest field in the DDOVERLAYFX structure as the + * destination alpha channel for this overlay. + */ +#define DDOVER_ALPHADESTCONSTOVERRIDE 0x00000002l + +/* + * The NEG suffix indicates that the destination surface becomes more + * transparent as the alpha value increases. + */ +#define DDOVER_ALPHADESTNEG 0x00000004l + +/* + * Use the lpDDSAlphaDest field in the DDOVERLAYFX structure as the alpha + * channel destination for this overlay. + */ +#define DDOVER_ALPHADESTSURFACEOVERRIDE 0x00000008l + +/* + * Use the dwAlphaEdgeBlend field in the DDOVERLAYFX structure as the alpha + * channel for the edges of the image that border the color key colors. + */ +#define DDOVER_ALPHAEDGEBLEND 0x00000010l + +/* + * Use the alpha information in the pixel format or the alpha channel surface + * attached to the source surface as the source alpha channel for this overlay. + */ +#define DDOVER_ALPHASRC 0x00000020l + +/* + * Use the dwConstAlphaSrc field in the DDOVERLAYFX structure as the source + * alpha channel for this overlay. + */ +#define DDOVER_ALPHASRCCONSTOVERRIDE 0x00000040l + +/* + * The NEG suffix indicates that the source surface becomes more transparent + * as the alpha value increases. + */ +#define DDOVER_ALPHASRCNEG 0x00000080l + +/* + * Use the lpDDSAlphaSrc field in the DDOVERLAYFX structure as the alpha channel + * source for this overlay. + */ +#define DDOVER_ALPHASRCSURFACEOVERRIDE 0x00000100l + +/* + * Turn this overlay off. + */ +#define DDOVER_HIDE 0x00000200l + +/* + * Use the color key associated with the destination surface. + */ +#define DDOVER_KEYDEST 0x00000400l + +/* + * Use the dckDestColorkey field in the DDOVERLAYFX structure as the color key + * for the destination surface + */ +#define DDOVER_KEYDESTOVERRIDE 0x00000800l + +/* + * Use the color key associated with the source surface. + */ +#define DDOVER_KEYSRC 0x00001000l + +/* + * Use the dckSrcColorkey field in the DDOVERLAYFX structure as the color key + * for the source surface. + */ +#define DDOVER_KEYSRCOVERRIDE 0x00002000l + +/* + * Turn this overlay on. + */ +#define DDOVER_SHOW 0x00004000l + +/* + * Add a dirty rect to an emulated overlayed surface. + */ +#define DDOVER_ADDDIRTYRECT 0x00008000l + +/* + * Redraw all dirty rects on an emulated overlayed surface. + */ +#define DDOVER_REFRESHDIRTYRECTS 0x00010000l + +/* + * Redraw the entire surface on an emulated overlayed surface. + */ +#define DDOVER_REFRESHALL 0x00020000l + + +/* + * Use the overlay FX flags to define special overlay FX + */ +#define DDOVER_DDFX 0x00080000l + +/* + * Autoflip the overlay when ever the video port autoflips + */ +#define DDOVER_AUTOFLIP 0x00100000l + +/* + * Display each field of video port data individually without + * causing any jittery artifacts + */ +#define DDOVER_BOB 0x00200000l + +/* + * Indicates that bob/weave decisions should not be overridden by other + * interfaces. + */ +#define DDOVER_OVERRIDEBOBWEAVE 0x00400000l + +/* + * Indicates that the surface memory is composed of interleaved fields. + */ +#define DDOVER_INTERLEAVED 0x00800000l + +/* + * Indicates that bob will be performed using hardware rather than + * software or emulated. + */ +#define DDOVER_BOBHARDWARE 0x01000000l + +/* + * Indicates that overlay FX structure contains valid ARGB scaling factors. + */ +#define DDOVER_ARGBSCALEFACTORS 0x02000000l + +/* + * Indicates that ARGB scaling factors can be degraded to fit driver capabilities. + */ +#define DDOVER_DEGRADEARGBSCALING 0x04000000l + + +/**************************************************************************** + * + * DIRECTDRAWSURFACE LOCK FLAGS + * + ****************************************************************************/ + +/* + * The default. Set to indicate that Lock should return a valid memory pointer + * to the top of the specified rectangle. If no rectangle is specified then a + * pointer to the top of the surface is returned. + */ +#define DDLOCK_SURFACEMEMORYPTR 0x00000000L // default + +/* + * Set to indicate that Lock should wait until it can obtain a valid memory + * pointer before returning. If this bit is set, Lock will never return + * DDERR_WASSTILLDRAWING. + */ +#define DDLOCK_WAIT 0x00000001L + +/* + * Set if an event handle is being passed to Lock. Lock will trigger the event + * when it can return the surface memory pointer requested. + */ +#define DDLOCK_EVENT 0x00000002L + +/* + * Indicates that the surface being locked will only be read from. + */ +#define DDLOCK_READONLY 0x00000010L + +/* + * Indicates that the surface being locked will only be written to + */ +#define DDLOCK_WRITEONLY 0x00000020L + + +/* + * Indicates that a system wide lock should not be taken when this surface + * is locked. This has several advantages (cursor responsiveness, ability + * to call more Windows functions, easier debugging) when locking video + * memory surfaces. However, an application specifying this flag must + * comply with a number of conditions documented in the help file. + * Furthermore, this flag cannot be specified when locking the primary. + */ +#define DDLOCK_NOSYSLOCK 0x00000800L + +/* + * Used only with Direct3D Vertex Buffer Locks. Indicates that no vertices + * that were referred to in Draw*PrimtiveVB calls since the start of the + * frame (or the last lock without this flag) will be modified during the + * lock. This can be useful when one is only appending data to the vertex + * buffer + */ +#define DDLOCK_NOOVERWRITE 0x00001000L + +/* + * Indicates that no assumptions will be made about the contents of the + * surface or vertex buffer during this lock. + * This enables two things: + * - Direct3D or the driver may provide an alternative memory + * area as the vertex buffer. This is useful when one plans to clear the + * contents of the vertex buffer and fill in new data. + * - Drivers sometimes store surface data in a re-ordered format. + * When the application locks the surface, the driver is forced to un-re-order + * the surface data before allowing the application to see the surface contents. + * This flag is a hint to the driver that it can skip the un-re-ordering process + * since the application plans to overwrite every single pixel in the surface + * or locked rectangle (and so erase any un-re-ordered pixels anyway). + * Applications should always set this flag when they intend to overwrite the entire + * surface or locked rectangle. + */ +#define DDLOCK_DISCARDCONTENTS 0x00002000L + /* + * DDLOCK_OKTOSWAP is an older, less informative name for DDLOCK_DISCARDCONTENTS + */ +#define DDLOCK_OKTOSWAP 0x00002000L + +/* + * On IDirectDrawSurface7 and higher interfaces, the default is DDLOCK_WAIT. If you wish + * to override the default and use time when the accelerator is busy (as denoted by + * the DDERR_WASSTILLDRAWING return code) then use DDLOCK_DONOTWAIT. + */ +#define DDLOCK_DONOTWAIT 0x00004000L + +/* + * This indicates volume texture lock with front and back specified. + */ +#define DDLOCK_HASVOLUMETEXTUREBOXRECT 0x00008000L + +/* + * This indicates that the driver should not update dirty rect information for this lock. + */ +#define DDLOCK_NODIRTYUPDATE 0x00010000L + + +/**************************************************************************** + * + * DIRECTDRAWSURFACE PAGELOCK FLAGS + * + ****************************************************************************/ + +/* + * No flags defined at present + */ + + +/**************************************************************************** + * + * DIRECTDRAWSURFACE PAGEUNLOCK FLAGS + * + ****************************************************************************/ + +/* + * No flags defined at present + */ + + +/**************************************************************************** + * + * DIRECTDRAWSURFACE BLT FX FLAGS + * + ****************************************************************************/ + +/* + * If stretching, use arithmetic stretching along the Y axis for this blt. + */ +#define DDBLTFX_ARITHSTRETCHY 0x00000001l + +/* + * Do this blt mirroring the surface left to right. Spin the + * surface around its y-axis. + */ +#define DDBLTFX_MIRRORLEFTRIGHT 0x00000002l + +/* + * Do this blt mirroring the surface up and down. Spin the surface + * around its x-axis. + */ +#define DDBLTFX_MIRRORUPDOWN 0x00000004l + +/* + * Schedule this blt to avoid tearing. + */ +#define DDBLTFX_NOTEARING 0x00000008l + +/* + * Do this blt rotating the surface one hundred and eighty degrees. + */ +#define DDBLTFX_ROTATE180 0x00000010l + +/* + * Do this blt rotating the surface two hundred and seventy degrees. + */ +#define DDBLTFX_ROTATE270 0x00000020l + +/* + * Do this blt rotating the surface ninety degrees. + */ +#define DDBLTFX_ROTATE90 0x00000040l + +/* + * Do this z blt using dwZBufferLow and dwZBufferHigh as range values + * specified to limit the bits copied from the source surface. + */ +#define DDBLTFX_ZBUFFERRANGE 0x00000080l + +/* + * Do this z blt adding the dwZBufferBaseDest to each of the sources z values + * before comparing it with the desting z values. + */ +#define DDBLTFX_ZBUFFERBASEDEST 0x00000100l + +/**************************************************************************** + * + * DIRECTDRAWSURFACE OVERLAY FX FLAGS + * + ****************************************************************************/ + +/* + * If stretching, use arithmetic stretching along the Y axis for this overlay. + */ +#define DDOVERFX_ARITHSTRETCHY 0x00000001l + +/* + * Mirror the overlay across the vertical axis + */ +#define DDOVERFX_MIRRORLEFTRIGHT 0x00000002l + +/* + * Mirror the overlay across the horizontal axis + */ +#define DDOVERFX_MIRRORUPDOWN 0x00000004l + +/* + * Deinterlace the overlay, if possible + */ +#define DDOVERFX_DEINTERLACE 0x00000008l + + +/**************************************************************************** + * + * DIRECTDRAW WAITFORVERTICALBLANK FLAGS + * + ****************************************************************************/ + +/* + * return when the vertical blank interval begins + */ +#define DDWAITVB_BLOCKBEGIN 0x00000001l + +/* + * set up an event to trigger when the vertical blank begins + */ +#define DDWAITVB_BLOCKBEGINEVENT 0x00000002l + +/* + * return when the vertical blank interval ends and display begins + */ +#define DDWAITVB_BLOCKEND 0x00000004l + +/**************************************************************************** + * + * DIRECTDRAW GETFLIPSTATUS FLAGS + * + ****************************************************************************/ + +/* + * is it OK to flip now? + */ +#define DDGFS_CANFLIP 0x00000001l + +/* + * is the last flip finished? + */ +#define DDGFS_ISFLIPDONE 0x00000002l + +/**************************************************************************** + * + * DIRECTDRAW GETBLTSTATUS FLAGS + * + ****************************************************************************/ + +/* + * is it OK to blt now? + */ +#define DDGBS_CANBLT 0x00000001l + +/* + * is the blt to the surface finished? + */ +#define DDGBS_ISBLTDONE 0x00000002l + + +/**************************************************************************** + * + * DIRECTDRAW ENUMOVERLAYZORDER FLAGS + * + ****************************************************************************/ + +/* + * Enumerate overlays back to front. + */ +#define DDENUMOVERLAYZ_BACKTOFRONT 0x00000000l + +/* + * Enumerate overlays front to back + */ +#define DDENUMOVERLAYZ_FRONTTOBACK 0x00000001l + +/**************************************************************************** + * + * DIRECTDRAW UPDATEOVERLAYZORDER FLAGS + * + ****************************************************************************/ + +/* + * Send overlay to front + */ +#define DDOVERZ_SENDTOFRONT 0x00000000l + +/* + * Send overlay to back + */ +#define DDOVERZ_SENDTOBACK 0x00000001l + +/* + * Move Overlay forward + */ +#define DDOVERZ_MOVEFORWARD 0x00000002l + +/* + * Move Overlay backward + */ +#define DDOVERZ_MOVEBACKWARD 0x00000003l + +/* + * Move Overlay in front of relative surface + */ +#define DDOVERZ_INSERTINFRONTOF 0x00000004l + +/* + * Move Overlay in back of relative surface + */ +#define DDOVERZ_INSERTINBACKOF 0x00000005l + + +/**************************************************************************** + * + * DIRECTDRAW SETGAMMARAMP FLAGS + * + ****************************************************************************/ + +/* + * Request calibrator to adjust the gamma ramp according to the physical + * properties of the display so that the result should appear identical + * on all systems. + */ +#define DDSGR_CALIBRATE 0x00000001L + + +/**************************************************************************** + * + * DIRECTDRAW STARTMODETEST FLAGS + * + ****************************************************************************/ + +/* + * Indicates that the mode being tested has passed + */ +#define DDSMT_ISTESTREQUIRED 0x00000001L + + +/**************************************************************************** + * + * DIRECTDRAW EVALUATEMODE FLAGS + * + ****************************************************************************/ + +/* + * Indicates that the mode being tested has passed + */ +#define DDEM_MODEPASSED 0x00000001L + +/* + * Indicates that the mode being tested has failed + */ +#define DDEM_MODEFAILED 0x00000002L + + +/*=========================================================================== + * + * + * DIRECTDRAW RETURN CODES + * + * The return values from DirectDraw Commands and Surface that return an HRESULT + * are codes from DirectDraw concerning the results of the action + * requested by DirectDraw. + * + *==========================================================================*/ + +/* + * Status is OK + * + * Issued by: DirectDraw Commands and all callbacks + */ +#define DD_OK S_OK +#define DD_FALSE S_FALSE + +/**************************************************************************** + * + * DIRECTDRAW ENUMCALLBACK RETURN VALUES + * + * EnumCallback returns are used to control the flow of the DIRECTDRAW and + * DIRECTDRAWSURFACE object enumerations. They can only be returned by + * enumeration callback routines. + * + ****************************************************************************/ + +/* + * stop the enumeration + */ +#define DDENUMRET_CANCEL 0 + +/* + * continue the enumeration + */ +#define DDENUMRET_OK 1 + +/**************************************************************************** + * + * DIRECTDRAW ERRORS + * + * Errors are represented by negative values and cannot be combined. + * + ****************************************************************************/ + +/* + * This object is already initialized + */ +#define DDERR_ALREADYINITIALIZED MAKE_DDHRESULT( 5 ) + +/* + * This surface can not be attached to the requested surface. + */ +#define DDERR_CANNOTATTACHSURFACE MAKE_DDHRESULT( 10 ) + +/* + * This surface can not be detached from the requested surface. + */ +#define DDERR_CANNOTDETACHSURFACE MAKE_DDHRESULT( 20 ) + +/* + * Support is currently not available. + */ +#define DDERR_CURRENTLYNOTAVAIL MAKE_DDHRESULT( 40 ) + +/* + * An exception was encountered while performing the requested operation + */ +#define DDERR_EXCEPTION MAKE_DDHRESULT( 55 ) + +/* + * Generic failure. + */ +#define DDERR_GENERIC E_FAIL + +/* + * Height of rectangle provided is not a multiple of reqd alignment + */ +#define DDERR_HEIGHTALIGN MAKE_DDHRESULT( 90 ) + +/* + * Unable to match primary surface creation request with existing + * primary surface. + */ +#define DDERR_INCOMPATIBLEPRIMARY MAKE_DDHRESULT( 95 ) + +/* + * One or more of the caps bits passed to the callback are incorrect. + */ +#define DDERR_INVALIDCAPS MAKE_DDHRESULT( 100 ) + +/* + * DirectDraw does not support provided Cliplist. + */ +#define DDERR_INVALIDCLIPLIST MAKE_DDHRESULT( 110 ) + +/* + * DirectDraw does not support the requested mode + */ +#define DDERR_INVALIDMODE MAKE_DDHRESULT( 120 ) + +/* + * DirectDraw received a pointer that was an invalid DIRECTDRAW object. + */ +#define DDERR_INVALIDOBJECT MAKE_DDHRESULT( 130 ) + +/* + * One or more of the parameters passed to the callback function are + * incorrect. + */ +#define DDERR_INVALIDPARAMS E_INVALIDARG + +/* + * pixel format was invalid as specified + */ +#define DDERR_INVALIDPIXELFORMAT MAKE_DDHRESULT( 145 ) + +/* + * Rectangle provided was invalid. + */ +#define DDERR_INVALIDRECT MAKE_DDHRESULT( 150 ) + +/* + * Operation could not be carried out because one or more surfaces are locked + */ +#define DDERR_LOCKEDSURFACES MAKE_DDHRESULT( 160 ) + +/* + * There is no 3D present. + */ +#define DDERR_NO3D MAKE_DDHRESULT( 170 ) + +/* + * Operation could not be carried out because there is no alpha accleration + * hardware present or available. + */ +#define DDERR_NOALPHAHW MAKE_DDHRESULT( 180 ) + +/* + * Operation could not be carried out because there is no stereo + * hardware present or available. + */ +#define DDERR_NOSTEREOHARDWARE MAKE_DDHRESULT( 181 ) + +/* + * Operation could not be carried out because there is no hardware + * present which supports stereo surfaces + */ +#define DDERR_NOSURFACELEFT MAKE_DDHRESULT( 182 ) + + + +/* + * no clip list available + */ +#define DDERR_NOCLIPLIST MAKE_DDHRESULT( 205 ) + +/* + * Operation could not be carried out because there is no color conversion + * hardware present or available. + */ +#define DDERR_NOCOLORCONVHW MAKE_DDHRESULT( 210 ) + +/* + * Create function called without DirectDraw object method SetCooperativeLevel + * being called. + */ +#define DDERR_NOCOOPERATIVELEVELSET MAKE_DDHRESULT( 212 ) + +/* + * Surface doesn't currently have a color key + */ +#define DDERR_NOCOLORKEY MAKE_DDHRESULT( 215 ) + +/* + * Operation could not be carried out because there is no hardware support + * of the dest color key. + */ +#define DDERR_NOCOLORKEYHW MAKE_DDHRESULT( 220 ) + +/* + * No DirectDraw support possible with current display driver + */ +#define DDERR_NODIRECTDRAWSUPPORT MAKE_DDHRESULT( 222 ) + +/* + * Operation requires the application to have exclusive mode but the + * application does not have exclusive mode. + */ +#define DDERR_NOEXCLUSIVEMODE MAKE_DDHRESULT( 225 ) + +/* + * Flipping visible surfaces is not supported. + */ +#define DDERR_NOFLIPHW MAKE_DDHRESULT( 230 ) + +/* + * There is no GDI present. + */ +#define DDERR_NOGDI MAKE_DDHRESULT( 240 ) + +/* + * Operation could not be carried out because there is no hardware present + * or available. + */ +#define DDERR_NOMIRRORHW MAKE_DDHRESULT( 250 ) + +/* + * Requested item was not found + */ +#define DDERR_NOTFOUND MAKE_DDHRESULT( 255 ) + +/* + * Operation could not be carried out because there is no overlay hardware + * present or available. + */ +#define DDERR_NOOVERLAYHW MAKE_DDHRESULT( 260 ) + +/* + * Operation could not be carried out because the source and destination + * rectangles are on the same surface and overlap each other. + */ +#define DDERR_OVERLAPPINGRECTS MAKE_DDHRESULT( 270 ) + +/* + * Operation could not be carried out because there is no appropriate raster + * op hardware present or available. + */ +#define DDERR_NORASTEROPHW MAKE_DDHRESULT( 280 ) + +/* + * Operation could not be carried out because there is no rotation hardware + * present or available. + */ +#define DDERR_NOROTATIONHW MAKE_DDHRESULT( 290 ) + +/* + * Operation could not be carried out because there is no hardware support + * for stretching + */ +#define DDERR_NOSTRETCHHW MAKE_DDHRESULT( 310 ) + +/* + * DirectDrawSurface is not in 4 bit color palette and the requested operation + * requires 4 bit color palette. + */ +#define DDERR_NOT4BITCOLOR MAKE_DDHRESULT( 316 ) + +/* + * DirectDrawSurface is not in 4 bit color index palette and the requested + * operation requires 4 bit color index palette. + */ +#define DDERR_NOT4BITCOLORINDEX MAKE_DDHRESULT( 317 ) + +/* + * DirectDraw Surface is not in 8 bit color mode and the requested operation + * requires 8 bit color. + */ +#define DDERR_NOT8BITCOLOR MAKE_DDHRESULT( 320 ) + +/* + * Operation could not be carried out because there is no texture mapping + * hardware present or available. + */ +#define DDERR_NOTEXTUREHW MAKE_DDHRESULT( 330 ) + +/* + * Operation could not be carried out because there is no hardware support + * for vertical blank synchronized operations. + */ +#define DDERR_NOVSYNCHW MAKE_DDHRESULT( 335 ) + +/* + * Operation could not be carried out because there is no hardware support + * for zbuffer blting. + */ +#define DDERR_NOZBUFFERHW MAKE_DDHRESULT( 340 ) + +/* + * Overlay surfaces could not be z layered based on their BltOrder because + * the hardware does not support z layering of overlays. + */ +#define DDERR_NOZOVERLAYHW MAKE_DDHRESULT( 350 ) + +/* + * The hardware needed for the requested operation has already been + * allocated. + */ +#define DDERR_OUTOFCAPS MAKE_DDHRESULT( 360 ) + +/* + * DirectDraw does not have enough memory to perform the operation. + */ +#define DDERR_OUTOFMEMORY E_OUTOFMEMORY + +/* + * DirectDraw does not have enough memory to perform the operation. + */ +#define DDERR_OUTOFVIDEOMEMORY MAKE_DDHRESULT( 380 ) + +/* + * hardware does not support clipped overlays + */ +#define DDERR_OVERLAYCANTCLIP MAKE_DDHRESULT( 382 ) + +/* + * Can only have ony color key active at one time for overlays + */ +#define DDERR_OVERLAYCOLORKEYONLYONEACTIVE MAKE_DDHRESULT( 384 ) + +/* + * Access to this palette is being refused because the palette is already + * locked by another thread. + */ +#define DDERR_PALETTEBUSY MAKE_DDHRESULT( 387 ) + +/* + * No src color key specified for this operation. + */ +#define DDERR_COLORKEYNOTSET MAKE_DDHRESULT( 400 ) + +/* + * This surface is already attached to the surface it is being attached to. + */ +#define DDERR_SURFACEALREADYATTACHED MAKE_DDHRESULT( 410 ) + +/* + * This surface is already a dependency of the surface it is being made a + * dependency of. + */ +#define DDERR_SURFACEALREADYDEPENDENT MAKE_DDHRESULT( 420 ) + +/* + * Access to this surface is being refused because the surface is already + * locked by another thread. + */ +#define DDERR_SURFACEBUSY MAKE_DDHRESULT( 430 ) + +/* + * Access to this surface is being refused because no driver exists + * which can supply a pointer to the surface. + * This is most likely to happen when attempting to lock the primary + * surface when no DCI provider is present. + * Will also happen on attempts to lock an optimized surface. + */ +#define DDERR_CANTLOCKSURFACE MAKE_DDHRESULT( 435 ) + +/* + * Access to Surface refused because Surface is obscured. + */ +#define DDERR_SURFACEISOBSCURED MAKE_DDHRESULT( 440 ) + +/* + * Access to this surface is being refused because the surface is gone. + * The DIRECTDRAWSURFACE object representing this surface should + * have Restore called on it. + */ +#define DDERR_SURFACELOST MAKE_DDHRESULT( 450 ) + +/* + * The requested surface is not attached. + */ +#define DDERR_SURFACENOTATTACHED MAKE_DDHRESULT( 460 ) + +/* + * Height requested by DirectDraw is too large. + */ +#define DDERR_TOOBIGHEIGHT MAKE_DDHRESULT( 470 ) + +/* + * Size requested by DirectDraw is too large -- The individual height and + * width are OK. + */ +#define DDERR_TOOBIGSIZE MAKE_DDHRESULT( 480 ) + +/* + * Width requested by DirectDraw is too large. + */ +#define DDERR_TOOBIGWIDTH MAKE_DDHRESULT( 490 ) + +/* + * Action not supported. + */ +#define DDERR_UNSUPPORTED E_NOTIMPL + +/* + * Pixel format requested is unsupported by DirectDraw + */ +#define DDERR_UNSUPPORTEDFORMAT MAKE_DDHRESULT( 510 ) + +/* + * Bitmask in the pixel format requested is unsupported by DirectDraw + */ +#define DDERR_UNSUPPORTEDMASK MAKE_DDHRESULT( 520 ) + +/* + * The specified stream contains invalid data + */ +#define DDERR_INVALIDSTREAM MAKE_DDHRESULT( 521 ) + +/* + * vertical blank is in progress + */ +#define DDERR_VERTICALBLANKINPROGRESS MAKE_DDHRESULT( 537 ) + +/* + * Informs DirectDraw that the previous Blt which is transfering information + * to or from this Surface is incomplete. + */ +#define DDERR_WASSTILLDRAWING MAKE_DDHRESULT( 540 ) + + +/* + * The specified surface type requires specification of the COMPLEX flag + */ +#define DDERR_DDSCAPSCOMPLEXREQUIRED MAKE_DDHRESULT( 542 ) + + +/* + * Rectangle provided was not horizontally aligned on reqd. boundary + */ +#define DDERR_XALIGN MAKE_DDHRESULT( 560 ) + +/* + * The GUID passed to DirectDrawCreate is not a valid DirectDraw driver + * identifier. + */ +#define DDERR_INVALIDDIRECTDRAWGUID MAKE_DDHRESULT( 561 ) + +/* + * A DirectDraw object representing this driver has already been created + * for this process. + */ +#define DDERR_DIRECTDRAWALREADYCREATED MAKE_DDHRESULT( 562 ) + +/* + * A hardware only DirectDraw object creation was attempted but the driver + * did not support any hardware. + */ +#define DDERR_NODIRECTDRAWHW MAKE_DDHRESULT( 563 ) + +/* + * this process already has created a primary surface + */ +#define DDERR_PRIMARYSURFACEALREADYEXISTS MAKE_DDHRESULT( 564 ) + +/* + * software emulation not available. + */ +#define DDERR_NOEMULATION MAKE_DDHRESULT( 565 ) + +/* + * region passed to Clipper::GetClipList is too small. + */ +#define DDERR_REGIONTOOSMALL MAKE_DDHRESULT( 566 ) + +/* + * an attempt was made to set a clip list for a clipper objec that + * is already monitoring an hwnd. + */ +#define DDERR_CLIPPERISUSINGHWND MAKE_DDHRESULT( 567 ) + +/* + * No clipper object attached to surface object + */ +#define DDERR_NOCLIPPERATTACHED MAKE_DDHRESULT( 568 ) + +/* + * Clipper notification requires an HWND or + * no HWND has previously been set as the CooperativeLevel HWND. + */ +#define DDERR_NOHWND MAKE_DDHRESULT( 569 ) + +/* + * HWND used by DirectDraw CooperativeLevel has been subclassed, + * this prevents DirectDraw from restoring state. + */ +#define DDERR_HWNDSUBCLASSED MAKE_DDHRESULT( 570 ) + +/* + * The CooperativeLevel HWND has already been set. + * It can not be reset while the process has surfaces or palettes created. + */ +#define DDERR_HWNDALREADYSET MAKE_DDHRESULT( 571 ) + +/* + * No palette object attached to this surface. + */ +#define DDERR_NOPALETTEATTACHED MAKE_DDHRESULT( 572 ) + +/* + * No hardware support for 16 or 256 color palettes. + */ +#define DDERR_NOPALETTEHW MAKE_DDHRESULT( 573 ) + +/* + * If a clipper object is attached to the source surface passed into a + * BltFast call. + */ +#define DDERR_BLTFASTCANTCLIP MAKE_DDHRESULT( 574 ) + +/* + * No blter. + */ +#define DDERR_NOBLTHW MAKE_DDHRESULT( 575 ) + +/* + * No DirectDraw ROP hardware. + */ +#define DDERR_NODDROPSHW MAKE_DDHRESULT( 576 ) + +/* + * returned when GetOverlayPosition is called on a hidden overlay + */ +#define DDERR_OVERLAYNOTVISIBLE MAKE_DDHRESULT( 577 ) + +/* + * returned when GetOverlayPosition is called on a overlay that UpdateOverlay + * has never been called on to establish a destionation. + */ +#define DDERR_NOOVERLAYDEST MAKE_DDHRESULT( 578 ) + +/* + * returned when the position of the overlay on the destionation is no longer + * legal for that destionation. + */ +#define DDERR_INVALIDPOSITION MAKE_DDHRESULT( 579 ) + +/* + * returned when an overlay member is called for a non-overlay surface + */ +#define DDERR_NOTAOVERLAYSURFACE MAKE_DDHRESULT( 580 ) + +/* + * An attempt was made to set the cooperative level when it was already + * set to exclusive. + */ +#define DDERR_EXCLUSIVEMODEALREADYSET MAKE_DDHRESULT( 581 ) + +/* + * An attempt has been made to flip a surface that is not flippable. + */ +#define DDERR_NOTFLIPPABLE MAKE_DDHRESULT( 582 ) + +/* + * Can't duplicate primary & 3D surfaces, or surfaces that are implicitly + * created. + */ +#define DDERR_CANTDUPLICATE MAKE_DDHRESULT( 583 ) + +/* + * Surface was not locked. An attempt to unlock a surface that was not + * locked at all, or by this process, has been attempted. + */ +#define DDERR_NOTLOCKED MAKE_DDHRESULT( 584 ) + +/* + * Windows can not create any more DCs, or a DC was requested for a paltte-indexed + * surface when the surface had no palette AND the display mode was not palette-indexed + * (in this case DirectDraw cannot select a proper palette into the DC) + */ +#define DDERR_CANTCREATEDC MAKE_DDHRESULT( 585 ) + +/* + * No DC was ever created for this surface. + */ +#define DDERR_NODC MAKE_DDHRESULT( 586 ) + +/* + * This surface can not be restored because it was created in a different + * mode. + */ +#define DDERR_WRONGMODE MAKE_DDHRESULT( 587 ) + +/* + * This surface can not be restored because it is an implicitly created + * surface. + */ +#define DDERR_IMPLICITLYCREATED MAKE_DDHRESULT( 588 ) + +/* + * The surface being used is not a palette-based surface + */ +#define DDERR_NOTPALETTIZED MAKE_DDHRESULT( 589 ) + + +/* + * The display is currently in an unsupported mode + */ +#define DDERR_UNSUPPORTEDMODE MAKE_DDHRESULT( 590 ) + +/* + * Operation could not be carried out because there is no mip-map + * texture mapping hardware present or available. + */ +#define DDERR_NOMIPMAPHW MAKE_DDHRESULT( 591 ) + +/* + * The requested action could not be performed because the surface was of + * the wrong type. + */ +#define DDERR_INVALIDSURFACETYPE MAKE_DDHRESULT( 592 ) + + +/* + * Device does not support optimized surfaces, therefore no video memory optimized surfaces + */ +#define DDERR_NOOPTIMIZEHW MAKE_DDHRESULT( 600 ) + +/* + * Surface is an optimized surface, but has not yet been allocated any memory + */ +#define DDERR_NOTLOADED MAKE_DDHRESULT( 601 ) + +/* + * Attempt was made to create or set a device window without first setting + * the focus window + */ +#define DDERR_NOFOCUSWINDOW MAKE_DDHRESULT( 602 ) + +/* + * Attempt was made to set a palette on a mipmap sublevel + */ +#define DDERR_NOTONMIPMAPSUBLEVEL MAKE_DDHRESULT( 603 ) + +/* + * A DC has already been returned for this surface. Only one DC can be + * retrieved per surface. + */ +#define DDERR_DCALREADYCREATED MAKE_DDHRESULT( 620 ) + +/* + * An attempt was made to allocate non-local video memory from a device + * that does not support non-local video memory. + */ +#define DDERR_NONONLOCALVIDMEM MAKE_DDHRESULT( 630 ) + +/* + * The attempt to page lock a surface failed. + */ +#define DDERR_CANTPAGELOCK MAKE_DDHRESULT( 640 ) + + +/* + * The attempt to page unlock a surface failed. + */ +#define DDERR_CANTPAGEUNLOCK MAKE_DDHRESULT( 660 ) + +/* + * An attempt was made to page unlock a surface with no outstanding page locks. + */ +#define DDERR_NOTPAGELOCKED MAKE_DDHRESULT( 680 ) + +/* + * There is more data available than the specified buffer size could hold + */ +#define DDERR_MOREDATA MAKE_DDHRESULT( 690 ) + +/* + * The data has expired and is therefore no longer valid. + */ +#define DDERR_EXPIRED MAKE_DDHRESULT( 691 ) + +/* + * The mode test has finished executing. + */ +#define DDERR_TESTFINISHED MAKE_DDHRESULT( 692 ) + +/* + * The mode test has switched to a new mode. + */ +#define DDERR_NEWMODE MAKE_DDHRESULT( 693 ) + +/* + * D3D has not yet been initialized. + */ +#define DDERR_D3DNOTINITIALIZED MAKE_DDHRESULT( 694 ) + +/* + * The video port is not active + */ +#define DDERR_VIDEONOTACTIVE MAKE_DDHRESULT( 695 ) + +/* + * The monitor does not have EDID data. + */ +#define DDERR_NOMONITORINFORMATION MAKE_DDHRESULT( 696 ) + +/* + * The driver does not enumerate display mode refresh rates. + */ +#define DDERR_NODRIVERSUPPORT MAKE_DDHRESULT( 697 ) + +/* + * Surfaces created by one direct draw device cannot be used directly by + * another direct draw device. + */ +#define DDERR_DEVICEDOESNTOWNSURFACE MAKE_DDHRESULT( 699 ) + + + +/* + * An attempt was made to invoke an interface member of a DirectDraw object + * created by CoCreateInstance() before it was initialized. + */ +#define DDERR_NOTINITIALIZED CO_E_NOTINITIALIZED + + +/* Alpha bit depth constants */ + + +#ifdef __cplusplus +}; +#endif + +#ifdef ENABLE_NAMELESS_UNION_PRAGMA +#pragma warning(default:4201) +#endif + +#endif //__DDRAW_INCLUDED__ + + diff --git a/videoInputSrcAndDemos/libs/DShow/Include/ddstream.h b/videoInputSrcAndDemos/libs/DShow/Include/ddstream.h index fbec509..49c3171 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/ddstream.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/ddstream.h @@ -1,533 +1,533 @@ - -#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 ddstream.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 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 -#endif // __RPCNDR_H_VERSION__ - -#ifndef COM_NO_WINDOWS_H -#include "windows.h" -#include "ole2.h" -#endif /*COM_NO_WINDOWS_H*/ - -#ifndef __ddstream_h__ -#define __ddstream_h__ - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -#pragma once -#endif - -/* Forward Declarations */ - -#ifndef __IDirectDrawMediaStream_FWD_DEFINED__ -#define __IDirectDrawMediaStream_FWD_DEFINED__ -typedef interface IDirectDrawMediaStream IDirectDrawMediaStream; -#endif /* __IDirectDrawMediaStream_FWD_DEFINED__ */ - - -#ifndef __IDirectDrawStreamSample_FWD_DEFINED__ -#define __IDirectDrawStreamSample_FWD_DEFINED__ -typedef interface IDirectDrawStreamSample IDirectDrawStreamSample; -#endif /* __IDirectDrawStreamSample_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_ddstream_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 void *LPDDSURFACEDESC; - -typedef struct tDDSURFACEDESC DDSURFACEDESC; - -#endif -#include - -enum __MIDL___MIDL_itf_ddstream_0000_0001 - { DDSFF_PROGRESSIVERENDER = 0x1 - } ; - - - - - - - -extern RPC_IF_HANDLE __MIDL_itf_ddstream_0000_v0_0_c_ifspec; -extern RPC_IF_HANDLE __MIDL_itf_ddstream_0000_v0_0_s_ifspec; - -#ifndef __IDirectDrawMediaStream_INTERFACE_DEFINED__ -#define __IDirectDrawMediaStream_INTERFACE_DEFINED__ - -/* interface IDirectDrawMediaStream */ -/* [unique][uuid][local][object] */ - - -EXTERN_C const IID IID_IDirectDrawMediaStream; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("F4104FCE-9A70-11d0-8FDE-00C04FD9189D") - IDirectDrawMediaStream : public IMediaStream - { - public: - virtual HRESULT STDMETHODCALLTYPE GetFormat( - /* [out] */ DDSURFACEDESC *pDDSDCurrent, - /* [out] */ IDirectDrawPalette **ppDirectDrawPalette, - /* [out] */ DDSURFACEDESC *pDDSDDesired, - /* [out] */ DWORD *pdwFlags) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetFormat( - /* [in] */ const DDSURFACEDESC *pDDSurfaceDesc, - /* [in] */ IDirectDrawPalette *pDirectDrawPalette) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetDirectDraw( - /* [out] */ IDirectDraw **ppDirectDraw) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetDirectDraw( - /* [in] */ IDirectDraw *pDirectDraw) = 0; - - virtual HRESULT STDMETHODCALLTYPE CreateSample( - /* [in] */ IDirectDrawSurface *pSurface, - /* [in] */ const RECT *pRect, - /* [in] */ DWORD dwFlags, - /* [out] */ IDirectDrawStreamSample **ppSample) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetTimePerFrame( - /* [out] */ STREAM_TIME *pFrameTime) = 0; - - }; - -#else /* C style interface */ - - typedef struct IDirectDrawMediaStreamVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IDirectDrawMediaStream * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IDirectDrawMediaStream * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IDirectDrawMediaStream * This); - - HRESULT ( STDMETHODCALLTYPE *GetMultiMediaStream )( - IDirectDrawMediaStream * This, - /* [out] */ IMultiMediaStream **ppMultiMediaStream); - - HRESULT ( STDMETHODCALLTYPE *GetInformation )( - IDirectDrawMediaStream * This, - /* [out] */ MSPID *pPurposeId, - /* [out] */ STREAM_TYPE *pType); - - HRESULT ( STDMETHODCALLTYPE *SetSameFormat )( - IDirectDrawMediaStream * This, - /* [in] */ IMediaStream *pStreamThatHasDesiredFormat, - /* [in] */ DWORD dwFlags); - - HRESULT ( STDMETHODCALLTYPE *AllocateSample )( - IDirectDrawMediaStream * This, - /* [in] */ DWORD dwFlags, - /* [out] */ IStreamSample **ppSample); - - HRESULT ( STDMETHODCALLTYPE *CreateSharedSample )( - IDirectDrawMediaStream * This, - /* [in] */ IStreamSample *pExistingSample, - /* [in] */ DWORD dwFlags, - /* [out] */ IStreamSample **ppNewSample); - - HRESULT ( STDMETHODCALLTYPE *SendEndOfStream )( - IDirectDrawMediaStream * This, - DWORD dwFlags); - - HRESULT ( STDMETHODCALLTYPE *GetFormat )( - IDirectDrawMediaStream * This, - /* [out] */ DDSURFACEDESC *pDDSDCurrent, - /* [out] */ IDirectDrawPalette **ppDirectDrawPalette, - /* [out] */ DDSURFACEDESC *pDDSDDesired, - /* [out] */ DWORD *pdwFlags); - - HRESULT ( STDMETHODCALLTYPE *SetFormat )( - IDirectDrawMediaStream * This, - /* [in] */ const DDSURFACEDESC *pDDSurfaceDesc, - /* [in] */ IDirectDrawPalette *pDirectDrawPalette); - - HRESULT ( STDMETHODCALLTYPE *GetDirectDraw )( - IDirectDrawMediaStream * This, - /* [out] */ IDirectDraw **ppDirectDraw); - - HRESULT ( STDMETHODCALLTYPE *SetDirectDraw )( - IDirectDrawMediaStream * This, - /* [in] */ IDirectDraw *pDirectDraw); - - HRESULT ( STDMETHODCALLTYPE *CreateSample )( - IDirectDrawMediaStream * This, - /* [in] */ IDirectDrawSurface *pSurface, - /* [in] */ const RECT *pRect, - /* [in] */ DWORD dwFlags, - /* [out] */ IDirectDrawStreamSample **ppSample); - - HRESULT ( STDMETHODCALLTYPE *GetTimePerFrame )( - IDirectDrawMediaStream * This, - /* [out] */ STREAM_TIME *pFrameTime); - - END_INTERFACE - } IDirectDrawMediaStreamVtbl; - - interface IDirectDrawMediaStream - { - CONST_VTBL struct IDirectDrawMediaStreamVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IDirectDrawMediaStream_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IDirectDrawMediaStream_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IDirectDrawMediaStream_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IDirectDrawMediaStream_GetMultiMediaStream(This,ppMultiMediaStream) \ - (This)->lpVtbl -> GetMultiMediaStream(This,ppMultiMediaStream) - -#define IDirectDrawMediaStream_GetInformation(This,pPurposeId,pType) \ - (This)->lpVtbl -> GetInformation(This,pPurposeId,pType) - -#define IDirectDrawMediaStream_SetSameFormat(This,pStreamThatHasDesiredFormat,dwFlags) \ - (This)->lpVtbl -> SetSameFormat(This,pStreamThatHasDesiredFormat,dwFlags) - -#define IDirectDrawMediaStream_AllocateSample(This,dwFlags,ppSample) \ - (This)->lpVtbl -> AllocateSample(This,dwFlags,ppSample) - -#define IDirectDrawMediaStream_CreateSharedSample(This,pExistingSample,dwFlags,ppNewSample) \ - (This)->lpVtbl -> CreateSharedSample(This,pExistingSample,dwFlags,ppNewSample) - -#define IDirectDrawMediaStream_SendEndOfStream(This,dwFlags) \ - (This)->lpVtbl -> SendEndOfStream(This,dwFlags) - - -#define IDirectDrawMediaStream_GetFormat(This,pDDSDCurrent,ppDirectDrawPalette,pDDSDDesired,pdwFlags) \ - (This)->lpVtbl -> GetFormat(This,pDDSDCurrent,ppDirectDrawPalette,pDDSDDesired,pdwFlags) - -#define IDirectDrawMediaStream_SetFormat(This,pDDSurfaceDesc,pDirectDrawPalette) \ - (This)->lpVtbl -> SetFormat(This,pDDSurfaceDesc,pDirectDrawPalette) - -#define IDirectDrawMediaStream_GetDirectDraw(This,ppDirectDraw) \ - (This)->lpVtbl -> GetDirectDraw(This,ppDirectDraw) - -#define IDirectDrawMediaStream_SetDirectDraw(This,pDirectDraw) \ - (This)->lpVtbl -> SetDirectDraw(This,pDirectDraw) - -#define IDirectDrawMediaStream_CreateSample(This,pSurface,pRect,dwFlags,ppSample) \ - (This)->lpVtbl -> CreateSample(This,pSurface,pRect,dwFlags,ppSample) - -#define IDirectDrawMediaStream_GetTimePerFrame(This,pFrameTime) \ - (This)->lpVtbl -> GetTimePerFrame(This,pFrameTime) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IDirectDrawMediaStream_GetFormat_Proxy( - IDirectDrawMediaStream * This, - /* [out] */ DDSURFACEDESC *pDDSDCurrent, - /* [out] */ IDirectDrawPalette **ppDirectDrawPalette, - /* [out] */ DDSURFACEDESC *pDDSDDesired, - /* [out] */ DWORD *pdwFlags); - - -void __RPC_STUB IDirectDrawMediaStream_GetFormat_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IDirectDrawMediaStream_SetFormat_Proxy( - IDirectDrawMediaStream * This, - /* [in] */ const DDSURFACEDESC *pDDSurfaceDesc, - /* [in] */ IDirectDrawPalette *pDirectDrawPalette); - - -void __RPC_STUB IDirectDrawMediaStream_SetFormat_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IDirectDrawMediaStream_GetDirectDraw_Proxy( - IDirectDrawMediaStream * This, - /* [out] */ IDirectDraw **ppDirectDraw); - - -void __RPC_STUB IDirectDrawMediaStream_GetDirectDraw_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IDirectDrawMediaStream_SetDirectDraw_Proxy( - IDirectDrawMediaStream * This, - /* [in] */ IDirectDraw *pDirectDraw); - - -void __RPC_STUB IDirectDrawMediaStream_SetDirectDraw_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IDirectDrawMediaStream_CreateSample_Proxy( - IDirectDrawMediaStream * This, - /* [in] */ IDirectDrawSurface *pSurface, - /* [in] */ const RECT *pRect, - /* [in] */ DWORD dwFlags, - /* [out] */ IDirectDrawStreamSample **ppSample); - - -void __RPC_STUB IDirectDrawMediaStream_CreateSample_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IDirectDrawMediaStream_GetTimePerFrame_Proxy( - IDirectDrawMediaStream * This, - /* [out] */ STREAM_TIME *pFrameTime); - - -void __RPC_STUB IDirectDrawMediaStream_GetTimePerFrame_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IDirectDrawMediaStream_INTERFACE_DEFINED__ */ - - -#ifndef __IDirectDrawStreamSample_INTERFACE_DEFINED__ -#define __IDirectDrawStreamSample_INTERFACE_DEFINED__ - -/* interface IDirectDrawStreamSample */ -/* [unique][uuid][local][object] */ - - -EXTERN_C const IID IID_IDirectDrawStreamSample; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("F4104FCF-9A70-11d0-8FDE-00C04FD9189D") - IDirectDrawStreamSample : public IStreamSample - { - public: - virtual HRESULT STDMETHODCALLTYPE GetSurface( - /* [out] */ IDirectDrawSurface **ppDirectDrawSurface, - /* [out] */ RECT *pRect) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetRect( - /* [in] */ const RECT *pRect) = 0; - - }; - -#else /* C style interface */ - - typedef struct IDirectDrawStreamSampleVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IDirectDrawStreamSample * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IDirectDrawStreamSample * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IDirectDrawStreamSample * This); - - HRESULT ( STDMETHODCALLTYPE *GetMediaStream )( - IDirectDrawStreamSample * This, - /* [in] */ IMediaStream **ppMediaStream); - - HRESULT ( STDMETHODCALLTYPE *GetSampleTimes )( - IDirectDrawStreamSample * This, - /* [out] */ STREAM_TIME *pStartTime, - /* [out] */ STREAM_TIME *pEndTime, - /* [out] */ STREAM_TIME *pCurrentTime); - - HRESULT ( STDMETHODCALLTYPE *SetSampleTimes )( - IDirectDrawStreamSample * This, - /* [in] */ const STREAM_TIME *pStartTime, - /* [in] */ const STREAM_TIME *pEndTime); - - HRESULT ( STDMETHODCALLTYPE *Update )( - IDirectDrawStreamSample * This, - /* [in] */ DWORD dwFlags, - /* [in] */ HANDLE hEvent, - /* [in] */ PAPCFUNC pfnAPC, - /* [in] */ DWORD_PTR dwAPCData); - - HRESULT ( STDMETHODCALLTYPE *CompletionStatus )( - IDirectDrawStreamSample * This, - /* [in] */ DWORD dwFlags, - /* [in] */ DWORD dwMilliseconds); - - HRESULT ( STDMETHODCALLTYPE *GetSurface )( - IDirectDrawStreamSample * This, - /* [out] */ IDirectDrawSurface **ppDirectDrawSurface, - /* [out] */ RECT *pRect); - - HRESULT ( STDMETHODCALLTYPE *SetRect )( - IDirectDrawStreamSample * This, - /* [in] */ const RECT *pRect); - - END_INTERFACE - } IDirectDrawStreamSampleVtbl; - - interface IDirectDrawStreamSample - { - CONST_VTBL struct IDirectDrawStreamSampleVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IDirectDrawStreamSample_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IDirectDrawStreamSample_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IDirectDrawStreamSample_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IDirectDrawStreamSample_GetMediaStream(This,ppMediaStream) \ - (This)->lpVtbl -> GetMediaStream(This,ppMediaStream) - -#define IDirectDrawStreamSample_GetSampleTimes(This,pStartTime,pEndTime,pCurrentTime) \ - (This)->lpVtbl -> GetSampleTimes(This,pStartTime,pEndTime,pCurrentTime) - -#define IDirectDrawStreamSample_SetSampleTimes(This,pStartTime,pEndTime) \ - (This)->lpVtbl -> SetSampleTimes(This,pStartTime,pEndTime) - -#define IDirectDrawStreamSample_Update(This,dwFlags,hEvent,pfnAPC,dwAPCData) \ - (This)->lpVtbl -> Update(This,dwFlags,hEvent,pfnAPC,dwAPCData) - -#define IDirectDrawStreamSample_CompletionStatus(This,dwFlags,dwMilliseconds) \ - (This)->lpVtbl -> CompletionStatus(This,dwFlags,dwMilliseconds) - - -#define IDirectDrawStreamSample_GetSurface(This,ppDirectDrawSurface,pRect) \ - (This)->lpVtbl -> GetSurface(This,ppDirectDrawSurface,pRect) - -#define IDirectDrawStreamSample_SetRect(This,pRect) \ - (This)->lpVtbl -> SetRect(This,pRect) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IDirectDrawStreamSample_GetSurface_Proxy( - IDirectDrawStreamSample * This, - /* [out] */ IDirectDrawSurface **ppDirectDrawSurface, - /* [out] */ RECT *pRect); - - -void __RPC_STUB IDirectDrawStreamSample_GetSurface_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IDirectDrawStreamSample_SetRect_Proxy( - IDirectDrawStreamSample * This, - /* [in] */ const RECT *pRect); - - -void __RPC_STUB IDirectDrawStreamSample_SetRect_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IDirectDrawStreamSample_INTERFACE_DEFINED__ */ - - -/* Additional Prototypes for ALL interfaces */ - -/* end of Additional Prototypes */ - -#ifdef __cplusplus -} -#endif - -#endif - - + +#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 ddstream.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 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 +#endif // __RPCNDR_H_VERSION__ + +#ifndef COM_NO_WINDOWS_H +#include "windows.h" +#include "ole2.h" +#endif /*COM_NO_WINDOWS_H*/ + +#ifndef __ddstream_h__ +#define __ddstream_h__ + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#pragma once +#endif + +/* Forward Declarations */ + +#ifndef __IDirectDrawMediaStream_FWD_DEFINED__ +#define __IDirectDrawMediaStream_FWD_DEFINED__ +typedef interface IDirectDrawMediaStream IDirectDrawMediaStream; +#endif /* __IDirectDrawMediaStream_FWD_DEFINED__ */ + + +#ifndef __IDirectDrawStreamSample_FWD_DEFINED__ +#define __IDirectDrawStreamSample_FWD_DEFINED__ +typedef interface IDirectDrawStreamSample IDirectDrawStreamSample; +#endif /* __IDirectDrawStreamSample_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_ddstream_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 void *LPDDSURFACEDESC; + +typedef struct tDDSURFACEDESC DDSURFACEDESC; + +#endif +#include + +enum __MIDL___MIDL_itf_ddstream_0000_0001 + { DDSFF_PROGRESSIVERENDER = 0x1 + } ; + + + + + + + +extern RPC_IF_HANDLE __MIDL_itf_ddstream_0000_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_ddstream_0000_v0_0_s_ifspec; + +#ifndef __IDirectDrawMediaStream_INTERFACE_DEFINED__ +#define __IDirectDrawMediaStream_INTERFACE_DEFINED__ + +/* interface IDirectDrawMediaStream */ +/* [unique][uuid][local][object] */ + + +EXTERN_C const IID IID_IDirectDrawMediaStream; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("F4104FCE-9A70-11d0-8FDE-00C04FD9189D") + IDirectDrawMediaStream : public IMediaStream + { + public: + virtual HRESULT STDMETHODCALLTYPE GetFormat( + /* [out] */ DDSURFACEDESC *pDDSDCurrent, + /* [out] */ IDirectDrawPalette **ppDirectDrawPalette, + /* [out] */ DDSURFACEDESC *pDDSDDesired, + /* [out] */ DWORD *pdwFlags) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetFormat( + /* [in] */ const DDSURFACEDESC *pDDSurfaceDesc, + /* [in] */ IDirectDrawPalette *pDirectDrawPalette) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetDirectDraw( + /* [out] */ IDirectDraw **ppDirectDraw) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetDirectDraw( + /* [in] */ IDirectDraw *pDirectDraw) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreateSample( + /* [in] */ IDirectDrawSurface *pSurface, + /* [in] */ const RECT *pRect, + /* [in] */ DWORD dwFlags, + /* [out] */ IDirectDrawStreamSample **ppSample) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetTimePerFrame( + /* [out] */ STREAM_TIME *pFrameTime) = 0; + + }; + +#else /* C style interface */ + + typedef struct IDirectDrawMediaStreamVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDirectDrawMediaStream * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDirectDrawMediaStream * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDirectDrawMediaStream * This); + + HRESULT ( STDMETHODCALLTYPE *GetMultiMediaStream )( + IDirectDrawMediaStream * This, + /* [out] */ IMultiMediaStream **ppMultiMediaStream); + + HRESULT ( STDMETHODCALLTYPE *GetInformation )( + IDirectDrawMediaStream * This, + /* [out] */ MSPID *pPurposeId, + /* [out] */ STREAM_TYPE *pType); + + HRESULT ( STDMETHODCALLTYPE *SetSameFormat )( + IDirectDrawMediaStream * This, + /* [in] */ IMediaStream *pStreamThatHasDesiredFormat, + /* [in] */ DWORD dwFlags); + + HRESULT ( STDMETHODCALLTYPE *AllocateSample )( + IDirectDrawMediaStream * This, + /* [in] */ DWORD dwFlags, + /* [out] */ IStreamSample **ppSample); + + HRESULT ( STDMETHODCALLTYPE *CreateSharedSample )( + IDirectDrawMediaStream * This, + /* [in] */ IStreamSample *pExistingSample, + /* [in] */ DWORD dwFlags, + /* [out] */ IStreamSample **ppNewSample); + + HRESULT ( STDMETHODCALLTYPE *SendEndOfStream )( + IDirectDrawMediaStream * This, + DWORD dwFlags); + + HRESULT ( STDMETHODCALLTYPE *GetFormat )( + IDirectDrawMediaStream * This, + /* [out] */ DDSURFACEDESC *pDDSDCurrent, + /* [out] */ IDirectDrawPalette **ppDirectDrawPalette, + /* [out] */ DDSURFACEDESC *pDDSDDesired, + /* [out] */ DWORD *pdwFlags); + + HRESULT ( STDMETHODCALLTYPE *SetFormat )( + IDirectDrawMediaStream * This, + /* [in] */ const DDSURFACEDESC *pDDSurfaceDesc, + /* [in] */ IDirectDrawPalette *pDirectDrawPalette); + + HRESULT ( STDMETHODCALLTYPE *GetDirectDraw )( + IDirectDrawMediaStream * This, + /* [out] */ IDirectDraw **ppDirectDraw); + + HRESULT ( STDMETHODCALLTYPE *SetDirectDraw )( + IDirectDrawMediaStream * This, + /* [in] */ IDirectDraw *pDirectDraw); + + HRESULT ( STDMETHODCALLTYPE *CreateSample )( + IDirectDrawMediaStream * This, + /* [in] */ IDirectDrawSurface *pSurface, + /* [in] */ const RECT *pRect, + /* [in] */ DWORD dwFlags, + /* [out] */ IDirectDrawStreamSample **ppSample); + + HRESULT ( STDMETHODCALLTYPE *GetTimePerFrame )( + IDirectDrawMediaStream * This, + /* [out] */ STREAM_TIME *pFrameTime); + + END_INTERFACE + } IDirectDrawMediaStreamVtbl; + + interface IDirectDrawMediaStream + { + CONST_VTBL struct IDirectDrawMediaStreamVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDirectDrawMediaStream_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IDirectDrawMediaStream_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IDirectDrawMediaStream_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IDirectDrawMediaStream_GetMultiMediaStream(This,ppMultiMediaStream) \ + (This)->lpVtbl -> GetMultiMediaStream(This,ppMultiMediaStream) + +#define IDirectDrawMediaStream_GetInformation(This,pPurposeId,pType) \ + (This)->lpVtbl -> GetInformation(This,pPurposeId,pType) + +#define IDirectDrawMediaStream_SetSameFormat(This,pStreamThatHasDesiredFormat,dwFlags) \ + (This)->lpVtbl -> SetSameFormat(This,pStreamThatHasDesiredFormat,dwFlags) + +#define IDirectDrawMediaStream_AllocateSample(This,dwFlags,ppSample) \ + (This)->lpVtbl -> AllocateSample(This,dwFlags,ppSample) + +#define IDirectDrawMediaStream_CreateSharedSample(This,pExistingSample,dwFlags,ppNewSample) \ + (This)->lpVtbl -> CreateSharedSample(This,pExistingSample,dwFlags,ppNewSample) + +#define IDirectDrawMediaStream_SendEndOfStream(This,dwFlags) \ + (This)->lpVtbl -> SendEndOfStream(This,dwFlags) + + +#define IDirectDrawMediaStream_GetFormat(This,pDDSDCurrent,ppDirectDrawPalette,pDDSDDesired,pdwFlags) \ + (This)->lpVtbl -> GetFormat(This,pDDSDCurrent,ppDirectDrawPalette,pDDSDDesired,pdwFlags) + +#define IDirectDrawMediaStream_SetFormat(This,pDDSurfaceDesc,pDirectDrawPalette) \ + (This)->lpVtbl -> SetFormat(This,pDDSurfaceDesc,pDirectDrawPalette) + +#define IDirectDrawMediaStream_GetDirectDraw(This,ppDirectDraw) \ + (This)->lpVtbl -> GetDirectDraw(This,ppDirectDraw) + +#define IDirectDrawMediaStream_SetDirectDraw(This,pDirectDraw) \ + (This)->lpVtbl -> SetDirectDraw(This,pDirectDraw) + +#define IDirectDrawMediaStream_CreateSample(This,pSurface,pRect,dwFlags,ppSample) \ + (This)->lpVtbl -> CreateSample(This,pSurface,pRect,dwFlags,ppSample) + +#define IDirectDrawMediaStream_GetTimePerFrame(This,pFrameTime) \ + (This)->lpVtbl -> GetTimePerFrame(This,pFrameTime) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IDirectDrawMediaStream_GetFormat_Proxy( + IDirectDrawMediaStream * This, + /* [out] */ DDSURFACEDESC *pDDSDCurrent, + /* [out] */ IDirectDrawPalette **ppDirectDrawPalette, + /* [out] */ DDSURFACEDESC *pDDSDDesired, + /* [out] */ DWORD *pdwFlags); + + +void __RPC_STUB IDirectDrawMediaStream_GetFormat_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDirectDrawMediaStream_SetFormat_Proxy( + IDirectDrawMediaStream * This, + /* [in] */ const DDSURFACEDESC *pDDSurfaceDesc, + /* [in] */ IDirectDrawPalette *pDirectDrawPalette); + + +void __RPC_STUB IDirectDrawMediaStream_SetFormat_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDirectDrawMediaStream_GetDirectDraw_Proxy( + IDirectDrawMediaStream * This, + /* [out] */ IDirectDraw **ppDirectDraw); + + +void __RPC_STUB IDirectDrawMediaStream_GetDirectDraw_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDirectDrawMediaStream_SetDirectDraw_Proxy( + IDirectDrawMediaStream * This, + /* [in] */ IDirectDraw *pDirectDraw); + + +void __RPC_STUB IDirectDrawMediaStream_SetDirectDraw_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDirectDrawMediaStream_CreateSample_Proxy( + IDirectDrawMediaStream * This, + /* [in] */ IDirectDrawSurface *pSurface, + /* [in] */ const RECT *pRect, + /* [in] */ DWORD dwFlags, + /* [out] */ IDirectDrawStreamSample **ppSample); + + +void __RPC_STUB IDirectDrawMediaStream_CreateSample_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDirectDrawMediaStream_GetTimePerFrame_Proxy( + IDirectDrawMediaStream * This, + /* [out] */ STREAM_TIME *pFrameTime); + + +void __RPC_STUB IDirectDrawMediaStream_GetTimePerFrame_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IDirectDrawMediaStream_INTERFACE_DEFINED__ */ + + +#ifndef __IDirectDrawStreamSample_INTERFACE_DEFINED__ +#define __IDirectDrawStreamSample_INTERFACE_DEFINED__ + +/* interface IDirectDrawStreamSample */ +/* [unique][uuid][local][object] */ + + +EXTERN_C const IID IID_IDirectDrawStreamSample; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("F4104FCF-9A70-11d0-8FDE-00C04FD9189D") + IDirectDrawStreamSample : public IStreamSample + { + public: + virtual HRESULT STDMETHODCALLTYPE GetSurface( + /* [out] */ IDirectDrawSurface **ppDirectDrawSurface, + /* [out] */ RECT *pRect) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetRect( + /* [in] */ const RECT *pRect) = 0; + + }; + +#else /* C style interface */ + + typedef struct IDirectDrawStreamSampleVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDirectDrawStreamSample * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDirectDrawStreamSample * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDirectDrawStreamSample * This); + + HRESULT ( STDMETHODCALLTYPE *GetMediaStream )( + IDirectDrawStreamSample * This, + /* [in] */ IMediaStream **ppMediaStream); + + HRESULT ( STDMETHODCALLTYPE *GetSampleTimes )( + IDirectDrawStreamSample * This, + /* [out] */ STREAM_TIME *pStartTime, + /* [out] */ STREAM_TIME *pEndTime, + /* [out] */ STREAM_TIME *pCurrentTime); + + HRESULT ( STDMETHODCALLTYPE *SetSampleTimes )( + IDirectDrawStreamSample * This, + /* [in] */ const STREAM_TIME *pStartTime, + /* [in] */ const STREAM_TIME *pEndTime); + + HRESULT ( STDMETHODCALLTYPE *Update )( + IDirectDrawStreamSample * This, + /* [in] */ DWORD dwFlags, + /* [in] */ HANDLE hEvent, + /* [in] */ PAPCFUNC pfnAPC, + /* [in] */ DWORD_PTR dwAPCData); + + HRESULT ( STDMETHODCALLTYPE *CompletionStatus )( + IDirectDrawStreamSample * This, + /* [in] */ DWORD dwFlags, + /* [in] */ DWORD dwMilliseconds); + + HRESULT ( STDMETHODCALLTYPE *GetSurface )( + IDirectDrawStreamSample * This, + /* [out] */ IDirectDrawSurface **ppDirectDrawSurface, + /* [out] */ RECT *pRect); + + HRESULT ( STDMETHODCALLTYPE *SetRect )( + IDirectDrawStreamSample * This, + /* [in] */ const RECT *pRect); + + END_INTERFACE + } IDirectDrawStreamSampleVtbl; + + interface IDirectDrawStreamSample + { + CONST_VTBL struct IDirectDrawStreamSampleVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDirectDrawStreamSample_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IDirectDrawStreamSample_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IDirectDrawStreamSample_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IDirectDrawStreamSample_GetMediaStream(This,ppMediaStream) \ + (This)->lpVtbl -> GetMediaStream(This,ppMediaStream) + +#define IDirectDrawStreamSample_GetSampleTimes(This,pStartTime,pEndTime,pCurrentTime) \ + (This)->lpVtbl -> GetSampleTimes(This,pStartTime,pEndTime,pCurrentTime) + +#define IDirectDrawStreamSample_SetSampleTimes(This,pStartTime,pEndTime) \ + (This)->lpVtbl -> SetSampleTimes(This,pStartTime,pEndTime) + +#define IDirectDrawStreamSample_Update(This,dwFlags,hEvent,pfnAPC,dwAPCData) \ + (This)->lpVtbl -> Update(This,dwFlags,hEvent,pfnAPC,dwAPCData) + +#define IDirectDrawStreamSample_CompletionStatus(This,dwFlags,dwMilliseconds) \ + (This)->lpVtbl -> CompletionStatus(This,dwFlags,dwMilliseconds) + + +#define IDirectDrawStreamSample_GetSurface(This,ppDirectDrawSurface,pRect) \ + (This)->lpVtbl -> GetSurface(This,ppDirectDrawSurface,pRect) + +#define IDirectDrawStreamSample_SetRect(This,pRect) \ + (This)->lpVtbl -> SetRect(This,pRect) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IDirectDrawStreamSample_GetSurface_Proxy( + IDirectDrawStreamSample * This, + /* [out] */ IDirectDrawSurface **ppDirectDrawSurface, + /* [out] */ RECT *pRect); + + +void __RPC_STUB IDirectDrawStreamSample_GetSurface_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDirectDrawStreamSample_SetRect_Proxy( + IDirectDrawStreamSample * This, + /* [in] */ const RECT *pRect); + + +void __RPC_STUB IDirectDrawStreamSample_SetRect_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IDirectDrawStreamSample_INTERFACE_DEFINED__ */ + + +/* Additional Prototypes for ALL interfaces */ + +/* end of Additional Prototypes */ + +#ifdef __cplusplus +} +#endif + +#endif + + diff --git a/videoInputSrcAndDemos/libs/DShow/Include/dinput.h b/videoInputSrcAndDemos/libs/DShow/Include/dinput.h index bf74e16..5aac256 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/dinput.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/dinput.h @@ -1,4417 +1,4417 @@ -/**************************************************************************** - * - * Copyright (C) 1996-2000 Microsoft Corporation. All Rights Reserved. - * - * File: dinput.h - * Content: DirectInput include file - * - ****************************************************************************/ - -#ifndef __DINPUT_INCLUDED__ -#define __DINPUT_INCLUDED__ - -#ifndef DIJ_RINGZERO - -#ifdef _WIN32 -#define COM_NO_WINDOWS_H -#include -#endif - -#endif /* DIJ_RINGZERO */ - -#ifdef __cplusplus -extern "C" { -#endif - - - - - -/* - * To build applications for older versions of DirectInput - * - * #define DIRECTINPUT_VERSION [ 0x0300 | 0x0500 | 0x0700 ] - * - * before #include . By default, #include - * will produce a DirectX 8-compatible header file. - * - */ - -#define DIRECTINPUT_HEADER_VERSION 0x0800 -#ifndef DIRECTINPUT_VERSION -#define DIRECTINPUT_VERSION DIRECTINPUT_HEADER_VERSION -#pragma message(__FILE__ ": DIRECTINPUT_VERSION undefined. Defaulting to version 0x0800") -#endif - -#ifndef DIJ_RINGZERO - -/**************************************************************************** - * - * Class IDs - * - ****************************************************************************/ - -DEFINE_GUID(CLSID_DirectInput, 0x25E609E0,0xB259,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); -DEFINE_GUID(CLSID_DirectInputDevice, 0x25E609E1,0xB259,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); - -DEFINE_GUID(CLSID_DirectInput8, 0x25E609E4,0xB259,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); -DEFINE_GUID(CLSID_DirectInputDevice8,0x25E609E5,0xB259,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); - -/**************************************************************************** - * - * Interfaces - * - ****************************************************************************/ - -DEFINE_GUID(IID_IDirectInputA, 0x89521360,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); -DEFINE_GUID(IID_IDirectInputW, 0x89521361,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); -DEFINE_GUID(IID_IDirectInput2A, 0x5944E662,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); -DEFINE_GUID(IID_IDirectInput2W, 0x5944E663,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); -DEFINE_GUID(IID_IDirectInput7A, 0x9A4CB684,0x236D,0x11D3,0x8E,0x9D,0x00,0xC0,0x4F,0x68,0x44,0xAE); -DEFINE_GUID(IID_IDirectInput7W, 0x9A4CB685,0x236D,0x11D3,0x8E,0x9D,0x00,0xC0,0x4F,0x68,0x44,0xAE); -DEFINE_GUID(IID_IDirectInput8A, 0xBF798030,0x483A,0x4DA2,0xAA,0x99,0x5D,0x64,0xED,0x36,0x97,0x00); -DEFINE_GUID(IID_IDirectInput8W, 0xBF798031,0x483A,0x4DA2,0xAA,0x99,0x5D,0x64,0xED,0x36,0x97,0x00); -DEFINE_GUID(IID_IDirectInputDeviceA, 0x5944E680,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); -DEFINE_GUID(IID_IDirectInputDeviceW, 0x5944E681,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); -DEFINE_GUID(IID_IDirectInputDevice2A,0x5944E682,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); -DEFINE_GUID(IID_IDirectInputDevice2W,0x5944E683,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); -DEFINE_GUID(IID_IDirectInputDevice7A,0x57D7C6BC,0x2356,0x11D3,0x8E,0x9D,0x00,0xC0,0x4F,0x68,0x44,0xAE); -DEFINE_GUID(IID_IDirectInputDevice7W,0x57D7C6BD,0x2356,0x11D3,0x8E,0x9D,0x00,0xC0,0x4F,0x68,0x44,0xAE); -DEFINE_GUID(IID_IDirectInputDevice8A,0x54D41080,0xDC15,0x4833,0xA4,0x1B,0x74,0x8F,0x73,0xA3,0x81,0x79); -DEFINE_GUID(IID_IDirectInputDevice8W,0x54D41081,0xDC15,0x4833,0xA4,0x1B,0x74,0x8F,0x73,0xA3,0x81,0x79); -DEFINE_GUID(IID_IDirectInputEffect, 0xE7E1F7C0,0x88D2,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); - -/**************************************************************************** - * - * Predefined object types - * - ****************************************************************************/ - -DEFINE_GUID(GUID_XAxis, 0xA36D02E0,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); -DEFINE_GUID(GUID_YAxis, 0xA36D02E1,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); -DEFINE_GUID(GUID_ZAxis, 0xA36D02E2,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); -DEFINE_GUID(GUID_RxAxis, 0xA36D02F4,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); -DEFINE_GUID(GUID_RyAxis, 0xA36D02F5,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); -DEFINE_GUID(GUID_RzAxis, 0xA36D02E3,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); -DEFINE_GUID(GUID_Slider, 0xA36D02E4,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); - -DEFINE_GUID(GUID_Button, 0xA36D02F0,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); -DEFINE_GUID(GUID_Key, 0x55728220,0xD33C,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); - -DEFINE_GUID(GUID_POV, 0xA36D02F2,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); - -DEFINE_GUID(GUID_Unknown, 0xA36D02F3,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); - -/**************************************************************************** - * - * Predefined product GUIDs - * - ****************************************************************************/ - -DEFINE_GUID(GUID_SysMouse, 0x6F1D2B60,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); -DEFINE_GUID(GUID_SysKeyboard,0x6F1D2B61,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); -DEFINE_GUID(GUID_Joystick ,0x6F1D2B70,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); -DEFINE_GUID(GUID_SysMouseEm, 0x6F1D2B80,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); -DEFINE_GUID(GUID_SysMouseEm2,0x6F1D2B81,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); -DEFINE_GUID(GUID_SysKeyboardEm, 0x6F1D2B82,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); -DEFINE_GUID(GUID_SysKeyboardEm2,0x6F1D2B83,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); - -/**************************************************************************** - * - * Predefined force feedback effects - * - ****************************************************************************/ - -DEFINE_GUID(GUID_ConstantForce, 0x13541C20,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); -DEFINE_GUID(GUID_RampForce, 0x13541C21,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); -DEFINE_GUID(GUID_Square, 0x13541C22,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); -DEFINE_GUID(GUID_Sine, 0x13541C23,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); -DEFINE_GUID(GUID_Triangle, 0x13541C24,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); -DEFINE_GUID(GUID_SawtoothUp, 0x13541C25,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); -DEFINE_GUID(GUID_SawtoothDown, 0x13541C26,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); -DEFINE_GUID(GUID_Spring, 0x13541C27,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); -DEFINE_GUID(GUID_Damper, 0x13541C28,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); -DEFINE_GUID(GUID_Inertia, 0x13541C29,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); -DEFINE_GUID(GUID_Friction, 0x13541C2A,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); -DEFINE_GUID(GUID_CustomForce, 0x13541C2B,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); - -#endif /* DIJ_RINGZERO */ - -/**************************************************************************** - * - * Interfaces and Structures... - * - ****************************************************************************/ - -#if(DIRECTINPUT_VERSION >= 0x0500) - -/**************************************************************************** - * - * IDirectInputEffect - * - ****************************************************************************/ - -#define DIEFT_ALL 0x00000000 - -#define DIEFT_CONSTANTFORCE 0x00000001 -#define DIEFT_RAMPFORCE 0x00000002 -#define DIEFT_PERIODIC 0x00000003 -#define DIEFT_CONDITION 0x00000004 -#define DIEFT_CUSTOMFORCE 0x00000005 -#define DIEFT_HARDWARE 0x000000FF -#define DIEFT_FFATTACK 0x00000200 -#define DIEFT_FFFADE 0x00000400 -#define DIEFT_SATURATION 0x00000800 -#define DIEFT_POSNEGCOEFFICIENTS 0x00001000 -#define DIEFT_POSNEGSATURATION 0x00002000 -#define DIEFT_DEADBAND 0x00004000 -#define DIEFT_STARTDELAY 0x00008000 -#define DIEFT_GETTYPE(n) LOBYTE(n) - -#define DI_DEGREES 100 -#define DI_FFNOMINALMAX 10000 -#define DI_SECONDS 1000000 - -typedef struct DICONSTANTFORCE { - LONG lMagnitude; -} DICONSTANTFORCE, *LPDICONSTANTFORCE; -typedef const DICONSTANTFORCE *LPCDICONSTANTFORCE; - -typedef struct DIRAMPFORCE { - LONG lStart; - LONG lEnd; -} DIRAMPFORCE, *LPDIRAMPFORCE; -typedef const DIRAMPFORCE *LPCDIRAMPFORCE; - -typedef struct DIPERIODIC { - DWORD dwMagnitude; - LONG lOffset; - DWORD dwPhase; - DWORD dwPeriod; -} DIPERIODIC, *LPDIPERIODIC; -typedef const DIPERIODIC *LPCDIPERIODIC; - -typedef struct DICONDITION { - LONG lOffset; - LONG lPositiveCoefficient; - LONG lNegativeCoefficient; - DWORD dwPositiveSaturation; - DWORD dwNegativeSaturation; - LONG lDeadBand; -} DICONDITION, *LPDICONDITION; -typedef const DICONDITION *LPCDICONDITION; - -typedef struct DICUSTOMFORCE { - DWORD cChannels; - DWORD dwSamplePeriod; - DWORD cSamples; - LPLONG rglForceData; -} DICUSTOMFORCE, *LPDICUSTOMFORCE; -typedef const DICUSTOMFORCE *LPCDICUSTOMFORCE; - - -typedef struct DIENVELOPE { - DWORD dwSize; /* sizeof(DIENVELOPE) */ - DWORD dwAttackLevel; - DWORD dwAttackTime; /* Microseconds */ - DWORD dwFadeLevel; - DWORD dwFadeTime; /* Microseconds */ -} DIENVELOPE, *LPDIENVELOPE; -typedef const DIENVELOPE *LPCDIENVELOPE; - - -/* This structure is defined for DirectX 5.0 compatibility */ -typedef struct DIEFFECT_DX5 { - DWORD dwSize; /* sizeof(DIEFFECT_DX5) */ - DWORD dwFlags; /* DIEFF_* */ - DWORD dwDuration; /* Microseconds */ - DWORD dwSamplePeriod; /* Microseconds */ - DWORD dwGain; - DWORD dwTriggerButton; /* or DIEB_NOTRIGGER */ - DWORD dwTriggerRepeatInterval; /* Microseconds */ - DWORD cAxes; /* Number of axes */ - LPDWORD rgdwAxes; /* Array of axes */ - LPLONG rglDirection; /* Array of directions */ - LPDIENVELOPE lpEnvelope; /* Optional */ - DWORD cbTypeSpecificParams; /* Size of params */ - LPVOID lpvTypeSpecificParams; /* Pointer to params */ -} DIEFFECT_DX5, *LPDIEFFECT_DX5; -typedef const DIEFFECT_DX5 *LPCDIEFFECT_DX5; - -typedef struct DIEFFECT { - DWORD dwSize; /* sizeof(DIEFFECT) */ - DWORD dwFlags; /* DIEFF_* */ - DWORD dwDuration; /* Microseconds */ - DWORD dwSamplePeriod; /* Microseconds */ - DWORD dwGain; - DWORD dwTriggerButton; /* or DIEB_NOTRIGGER */ - DWORD dwTriggerRepeatInterval; /* Microseconds */ - DWORD cAxes; /* Number of axes */ - LPDWORD rgdwAxes; /* Array of axes */ - LPLONG rglDirection; /* Array of directions */ - LPDIENVELOPE lpEnvelope; /* Optional */ - DWORD cbTypeSpecificParams; /* Size of params */ - LPVOID lpvTypeSpecificParams; /* Pointer to params */ -#if(DIRECTINPUT_VERSION >= 0x0600) - DWORD dwStartDelay; /* Microseconds */ -#endif /* DIRECTINPUT_VERSION >= 0x0600 */ -} DIEFFECT, *LPDIEFFECT; -typedef DIEFFECT DIEFFECT_DX6; -typedef LPDIEFFECT LPDIEFFECT_DX6; -typedef const DIEFFECT *LPCDIEFFECT; - - -#if(DIRECTINPUT_VERSION >= 0x0700) -#ifndef DIJ_RINGZERO -typedef struct DIFILEEFFECT{ - DWORD dwSize; - GUID GuidEffect; - LPCDIEFFECT lpDiEffect; - CHAR szFriendlyName[MAX_PATH]; -}DIFILEEFFECT, *LPDIFILEEFFECT; -typedef const DIFILEEFFECT *LPCDIFILEEFFECT; -typedef BOOL (FAR PASCAL * LPDIENUMEFFECTSINFILECALLBACK)(LPCDIFILEEFFECT , LPVOID); -#endif /* DIJ_RINGZERO */ -#endif /* DIRECTINPUT_VERSION >= 0x0700 */ - -#define DIEFF_OBJECTIDS 0x00000001 -#define DIEFF_OBJECTOFFSETS 0x00000002 -#define DIEFF_CARTESIAN 0x00000010 -#define DIEFF_POLAR 0x00000020 -#define DIEFF_SPHERICAL 0x00000040 - -#define DIEP_DURATION 0x00000001 -#define DIEP_SAMPLEPERIOD 0x00000002 -#define DIEP_GAIN 0x00000004 -#define DIEP_TRIGGERBUTTON 0x00000008 -#define DIEP_TRIGGERREPEATINTERVAL 0x00000010 -#define DIEP_AXES 0x00000020 -#define DIEP_DIRECTION 0x00000040 -#define DIEP_ENVELOPE 0x00000080 -#define DIEP_TYPESPECIFICPARAMS 0x00000100 -#if(DIRECTINPUT_VERSION >= 0x0600) -#define DIEP_STARTDELAY 0x00000200 -#define DIEP_ALLPARAMS_DX5 0x000001FF -#define DIEP_ALLPARAMS 0x000003FF -#else /* DIRECTINPUT_VERSION < 0x0600 */ -#define DIEP_ALLPARAMS 0x000001FF -#endif /* DIRECTINPUT_VERSION < 0x0600 */ -#define DIEP_START 0x20000000 -#define DIEP_NORESTART 0x40000000 -#define DIEP_NODOWNLOAD 0x80000000 -#define DIEB_NOTRIGGER 0xFFFFFFFF - -#define DIES_SOLO 0x00000001 -#define DIES_NODOWNLOAD 0x80000000 - -#define DIEGES_PLAYING 0x00000001 -#define DIEGES_EMULATED 0x00000002 - -typedef struct DIEFFESCAPE { - DWORD dwSize; - DWORD dwCommand; - LPVOID lpvInBuffer; - DWORD cbInBuffer; - LPVOID lpvOutBuffer; - DWORD cbOutBuffer; -} DIEFFESCAPE, *LPDIEFFESCAPE; - -#ifndef DIJ_RINGZERO - -#undef INTERFACE -#define INTERFACE IDirectInputEffect - -DECLARE_INTERFACE_(IDirectInputEffect, IUnknown) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - - /*** IDirectInputEffect methods ***/ - STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD,REFGUID) PURE; - STDMETHOD(GetEffectGuid)(THIS_ LPGUID) PURE; - STDMETHOD(GetParameters)(THIS_ LPDIEFFECT,DWORD) PURE; - STDMETHOD(SetParameters)(THIS_ LPCDIEFFECT,DWORD) PURE; - STDMETHOD(Start)(THIS_ DWORD,DWORD) PURE; - STDMETHOD(Stop)(THIS) PURE; - STDMETHOD(GetEffectStatus)(THIS_ LPDWORD) PURE; - STDMETHOD(Download)(THIS) PURE; - STDMETHOD(Unload)(THIS) PURE; - STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE) PURE; -}; - -typedef struct IDirectInputEffect *LPDIRECTINPUTEFFECT; - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectInputEffect_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IDirectInputEffect_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDirectInputEffect_Release(p) (p)->lpVtbl->Release(p) -#define IDirectInputEffect_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c) -#define IDirectInputEffect_GetEffectGuid(p,a) (p)->lpVtbl->GetEffectGuid(p,a) -#define IDirectInputEffect_GetParameters(p,a,b) (p)->lpVtbl->GetParameters(p,a,b) -#define IDirectInputEffect_SetParameters(p,a,b) (p)->lpVtbl->SetParameters(p,a,b) -#define IDirectInputEffect_Start(p,a,b) (p)->lpVtbl->Start(p,a,b) -#define IDirectInputEffect_Stop(p) (p)->lpVtbl->Stop(p) -#define IDirectInputEffect_GetEffectStatus(p,a) (p)->lpVtbl->GetEffectStatus(p,a) -#define IDirectInputEffect_Download(p) (p)->lpVtbl->Download(p) -#define IDirectInputEffect_Unload(p) (p)->lpVtbl->Unload(p) -#define IDirectInputEffect_Escape(p,a) (p)->lpVtbl->Escape(p,a) -#else -#define IDirectInputEffect_QueryInterface(p,a,b) (p)->QueryInterface(a,b) -#define IDirectInputEffect_AddRef(p) (p)->AddRef() -#define IDirectInputEffect_Release(p) (p)->Release() -#define IDirectInputEffect_Initialize(p,a,b,c) (p)->Initialize(a,b,c) -#define IDirectInputEffect_GetEffectGuid(p,a) (p)->GetEffectGuid(a) -#define IDirectInputEffect_GetParameters(p,a,b) (p)->GetParameters(a,b) -#define IDirectInputEffect_SetParameters(p,a,b) (p)->SetParameters(a,b) -#define IDirectInputEffect_Start(p,a,b) (p)->Start(a,b) -#define IDirectInputEffect_Stop(p) (p)->Stop() -#define IDirectInputEffect_GetEffectStatus(p,a) (p)->GetEffectStatus(a) -#define IDirectInputEffect_Download(p) (p)->Download() -#define IDirectInputEffect_Unload(p) (p)->Unload() -#define IDirectInputEffect_Escape(p,a) (p)->Escape(a) -#endif - -#endif /* DIJ_RINGZERO */ - -#endif /* DIRECTINPUT_VERSION >= 0x0500 */ - -/**************************************************************************** - * - * IDirectInputDevice - * - ****************************************************************************/ - -#if DIRECTINPUT_VERSION <= 0x700 -#define DIDEVTYPE_DEVICE 1 -#define DIDEVTYPE_MOUSE 2 -#define DIDEVTYPE_KEYBOARD 3 -#define DIDEVTYPE_JOYSTICK 4 - -#else -#define DI8DEVCLASS_ALL 0 -#define DI8DEVCLASS_DEVICE 1 -#define DI8DEVCLASS_POINTER 2 -#define DI8DEVCLASS_KEYBOARD 3 -#define DI8DEVCLASS_GAMECTRL 4 - -#define DI8DEVTYPE_DEVICE 0x11 -#define DI8DEVTYPE_MOUSE 0x12 -#define DI8DEVTYPE_KEYBOARD 0x13 -#define DI8DEVTYPE_JOYSTICK 0x14 -#define DI8DEVTYPE_GAMEPAD 0x15 -#define DI8DEVTYPE_DRIVING 0x16 -#define DI8DEVTYPE_FLIGHT 0x17 -#define DI8DEVTYPE_1STPERSON 0x18 -#define DI8DEVTYPE_DEVICECTRL 0x19 -#define DI8DEVTYPE_SCREENPOINTER 0x1A -#define DI8DEVTYPE_REMOTE 0x1B -#define DI8DEVTYPE_SUPPLEMENTAL 0x1C -#endif /* DIRECTINPUT_VERSION <= 0x700 */ - -#define DIDEVTYPE_HID 0x00010000 - -#if DIRECTINPUT_VERSION <= 0x700 -#define DIDEVTYPEMOUSE_UNKNOWN 1 -#define DIDEVTYPEMOUSE_TRADITIONAL 2 -#define DIDEVTYPEMOUSE_FINGERSTICK 3 -#define DIDEVTYPEMOUSE_TOUCHPAD 4 -#define DIDEVTYPEMOUSE_TRACKBALL 5 - -#define DIDEVTYPEKEYBOARD_UNKNOWN 0 -#define DIDEVTYPEKEYBOARD_PCXT 1 -#define DIDEVTYPEKEYBOARD_OLIVETTI 2 -#define DIDEVTYPEKEYBOARD_PCAT 3 -#define DIDEVTYPEKEYBOARD_PCENH 4 -#define DIDEVTYPEKEYBOARD_NOKIA1050 5 -#define DIDEVTYPEKEYBOARD_NOKIA9140 6 -#define DIDEVTYPEKEYBOARD_NEC98 7 -#define DIDEVTYPEKEYBOARD_NEC98LAPTOP 8 -#define DIDEVTYPEKEYBOARD_NEC98106 9 -#define DIDEVTYPEKEYBOARD_JAPAN106 10 -#define DIDEVTYPEKEYBOARD_JAPANAX 11 -#define DIDEVTYPEKEYBOARD_J3100 12 - -#define DIDEVTYPEJOYSTICK_UNKNOWN 1 -#define DIDEVTYPEJOYSTICK_TRADITIONAL 2 -#define DIDEVTYPEJOYSTICK_FLIGHTSTICK 3 -#define DIDEVTYPEJOYSTICK_GAMEPAD 4 -#define DIDEVTYPEJOYSTICK_RUDDER 5 -#define DIDEVTYPEJOYSTICK_WHEEL 6 -#define DIDEVTYPEJOYSTICK_HEADTRACKER 7 - -#else -#define DI8DEVTYPEMOUSE_UNKNOWN 1 -#define DI8DEVTYPEMOUSE_TRADITIONAL 2 -#define DI8DEVTYPEMOUSE_FINGERSTICK 3 -#define DI8DEVTYPEMOUSE_TOUCHPAD 4 -#define DI8DEVTYPEMOUSE_TRACKBALL 5 -#define DI8DEVTYPEMOUSE_ABSOLUTE 6 - -#define DI8DEVTYPEKEYBOARD_UNKNOWN 0 -#define DI8DEVTYPEKEYBOARD_PCXT 1 -#define DI8DEVTYPEKEYBOARD_OLIVETTI 2 -#define DI8DEVTYPEKEYBOARD_PCAT 3 -#define DI8DEVTYPEKEYBOARD_PCENH 4 -#define DI8DEVTYPEKEYBOARD_NOKIA1050 5 -#define DI8DEVTYPEKEYBOARD_NOKIA9140 6 -#define DI8DEVTYPEKEYBOARD_NEC98 7 -#define DI8DEVTYPEKEYBOARD_NEC98LAPTOP 8 -#define DI8DEVTYPEKEYBOARD_NEC98106 9 -#define DI8DEVTYPEKEYBOARD_JAPAN106 10 -#define DI8DEVTYPEKEYBOARD_JAPANAX 11 -#define DI8DEVTYPEKEYBOARD_J3100 12 - -#define DI8DEVTYPE_LIMITEDGAMESUBTYPE 1 - -#define DI8DEVTYPEJOYSTICK_LIMITED DI8DEVTYPE_LIMITEDGAMESUBTYPE -#define DI8DEVTYPEJOYSTICK_STANDARD 2 - -#define DI8DEVTYPEGAMEPAD_LIMITED DI8DEVTYPE_LIMITEDGAMESUBTYPE -#define DI8DEVTYPEGAMEPAD_STANDARD 2 -#define DI8DEVTYPEGAMEPAD_TILT 3 - -#define DI8DEVTYPEDRIVING_LIMITED DI8DEVTYPE_LIMITEDGAMESUBTYPE -#define DI8DEVTYPEDRIVING_COMBINEDPEDALS 2 -#define DI8DEVTYPEDRIVING_DUALPEDALS 3 -#define DI8DEVTYPEDRIVING_THREEPEDALS 4 -#define DI8DEVTYPEDRIVING_HANDHELD 5 - -#define DI8DEVTYPEFLIGHT_LIMITED DI8DEVTYPE_LIMITEDGAMESUBTYPE -#define DI8DEVTYPEFLIGHT_STICK 2 -#define DI8DEVTYPEFLIGHT_YOKE 3 -#define DI8DEVTYPEFLIGHT_RC 4 - -#define DI8DEVTYPE1STPERSON_LIMITED DI8DEVTYPE_LIMITEDGAMESUBTYPE -#define DI8DEVTYPE1STPERSON_UNKNOWN 2 -#define DI8DEVTYPE1STPERSON_SIXDOF 3 -#define DI8DEVTYPE1STPERSON_SHOOTER 4 - -#define DI8DEVTYPESCREENPTR_UNKNOWN 2 -#define DI8DEVTYPESCREENPTR_LIGHTGUN 3 -#define DI8DEVTYPESCREENPTR_LIGHTPEN 4 -#define DI8DEVTYPESCREENPTR_TOUCH 5 - -#define DI8DEVTYPEREMOTE_UNKNOWN 2 - -#define DI8DEVTYPEDEVICECTRL_UNKNOWN 2 -#define DI8DEVTYPEDEVICECTRL_COMMSSELECTION 3 -#define DI8DEVTYPEDEVICECTRL_COMMSSELECTION_HARDWIRED 4 - -#define DI8DEVTYPESUPPLEMENTAL_UNKNOWN 2 -#define DI8DEVTYPESUPPLEMENTAL_2NDHANDCONTROLLER 3 -#define DI8DEVTYPESUPPLEMENTAL_HEADTRACKER 4 -#define DI8DEVTYPESUPPLEMENTAL_HANDTRACKER 5 -#define DI8DEVTYPESUPPLEMENTAL_SHIFTSTICKGATE 6 -#define DI8DEVTYPESUPPLEMENTAL_SHIFTER 7 -#define DI8DEVTYPESUPPLEMENTAL_THROTTLE 8 -#define DI8DEVTYPESUPPLEMENTAL_SPLITTHROTTLE 9 -#define DI8DEVTYPESUPPLEMENTAL_COMBINEDPEDALS 10 -#define DI8DEVTYPESUPPLEMENTAL_DUALPEDALS 11 -#define DI8DEVTYPESUPPLEMENTAL_THREEPEDALS 12 -#define DI8DEVTYPESUPPLEMENTAL_RUDDERPEDALS 13 -#endif /* DIRECTINPUT_VERSION <= 0x700 */ - -#define GET_DIDEVICE_TYPE(dwDevType) LOBYTE(dwDevType) -#define GET_DIDEVICE_SUBTYPE(dwDevType) HIBYTE(dwDevType) - -#if(DIRECTINPUT_VERSION >= 0x0500) -/* This structure is defined for DirectX 3.0 compatibility */ -typedef struct DIDEVCAPS_DX3 { - DWORD dwSize; - DWORD dwFlags; - DWORD dwDevType; - DWORD dwAxes; - DWORD dwButtons; - DWORD dwPOVs; -} DIDEVCAPS_DX3, *LPDIDEVCAPS_DX3; -#endif /* DIRECTINPUT_VERSION >= 0x0500 */ - -typedef struct DIDEVCAPS { - DWORD dwSize; - DWORD dwFlags; - DWORD dwDevType; - DWORD dwAxes; - DWORD dwButtons; - DWORD dwPOVs; -#if(DIRECTINPUT_VERSION >= 0x0500) - DWORD dwFFSamplePeriod; - DWORD dwFFMinTimeResolution; - DWORD dwFirmwareRevision; - DWORD dwHardwareRevision; - DWORD dwFFDriverVersion; -#endif /* DIRECTINPUT_VERSION >= 0x0500 */ -} DIDEVCAPS, *LPDIDEVCAPS; - -#define DIDC_ATTACHED 0x00000001 -#define DIDC_POLLEDDEVICE 0x00000002 -#define DIDC_EMULATED 0x00000004 -#define DIDC_POLLEDDATAFORMAT 0x00000008 -#if(DIRECTINPUT_VERSION >= 0x0500) -#define DIDC_FORCEFEEDBACK 0x00000100 -#define DIDC_FFATTACK 0x00000200 -#define DIDC_FFFADE 0x00000400 -#define DIDC_SATURATION 0x00000800 -#define DIDC_POSNEGCOEFFICIENTS 0x00001000 -#define DIDC_POSNEGSATURATION 0x00002000 -#define DIDC_DEADBAND 0x00004000 -#endif /* DIRECTINPUT_VERSION >= 0x0500 */ -#define DIDC_STARTDELAY 0x00008000 -#if(DIRECTINPUT_VERSION >= 0x050a) -#define DIDC_ALIAS 0x00010000 -#define DIDC_PHANTOM 0x00020000 -#endif /* DIRECTINPUT_VERSION >= 0x050a */ -#if(DIRECTINPUT_VERSION >= 0x0800) -#define DIDC_HIDDEN 0x00040000 -#endif /* DIRECTINPUT_VERSION >= 0x0800 */ - -#define DIDFT_ALL 0x00000000 - -#define DIDFT_RELAXIS 0x00000001 -#define DIDFT_ABSAXIS 0x00000002 -#define DIDFT_AXIS 0x00000003 - -#define DIDFT_PSHBUTTON 0x00000004 -#define DIDFT_TGLBUTTON 0x00000008 -#define DIDFT_BUTTON 0x0000000C - -#define DIDFT_POV 0x00000010 -#define DIDFT_COLLECTION 0x00000040 -#define DIDFT_NODATA 0x00000080 - -#define DIDFT_ANYINSTANCE 0x00FFFF00 -#define DIDFT_INSTANCEMASK DIDFT_ANYINSTANCE -#define DIDFT_MAKEINSTANCE(n) ((WORD)(n) << 8) -#define DIDFT_GETTYPE(n) LOBYTE(n) -#define DIDFT_GETINSTANCE(n) LOWORD((n) >> 8) -#define DIDFT_FFACTUATOR 0x01000000 -#define DIDFT_FFEFFECTTRIGGER 0x02000000 -#if(DIRECTINPUT_VERSION >= 0x050a) -#define DIDFT_OUTPUT 0x10000000 -#define DIDFT_VENDORDEFINED 0x04000000 -#define DIDFT_ALIAS 0x08000000 -#endif /* DIRECTINPUT_VERSION >= 0x050a */ -#ifndef DIDFT_OPTIONAL -#define DIDFT_OPTIONAL 0x80000000 -#endif - -#define DIDFT_ENUMCOLLECTION(n) ((WORD)(n) << 8) -#define DIDFT_NOCOLLECTION 0x00FFFF00 - -#ifndef DIJ_RINGZERO - -typedef struct _DIOBJECTDATAFORMAT { - const GUID *pguid; - DWORD dwOfs; - DWORD dwType; - DWORD dwFlags; -} DIOBJECTDATAFORMAT, *LPDIOBJECTDATAFORMAT; -typedef const DIOBJECTDATAFORMAT *LPCDIOBJECTDATAFORMAT; - -typedef struct _DIDATAFORMAT { - DWORD dwSize; - DWORD dwObjSize; - DWORD dwFlags; - DWORD dwDataSize; - DWORD dwNumObjs; - LPDIOBJECTDATAFORMAT rgodf; -} DIDATAFORMAT, *LPDIDATAFORMAT; -typedef const DIDATAFORMAT *LPCDIDATAFORMAT; - -#define DIDF_ABSAXIS 0x00000001 -#define DIDF_RELAXIS 0x00000002 - -#ifdef __cplusplus -extern "C" { -#endif -extern const DIDATAFORMAT c_dfDIMouse; - -#if(DIRECTINPUT_VERSION >= 0x0700) -extern const DIDATAFORMAT c_dfDIMouse2; -#endif /* DIRECTINPUT_VERSION >= 0x0700 */ - -extern const DIDATAFORMAT c_dfDIKeyboard; - -#if(DIRECTINPUT_VERSION >= 0x0500) -extern const DIDATAFORMAT c_dfDIJoystick; -extern const DIDATAFORMAT c_dfDIJoystick2; -#endif /* DIRECTINPUT_VERSION >= 0x0500 */ - -#ifdef __cplusplus -}; -#endif - - -#if DIRECTINPUT_VERSION > 0x0700 - -typedef struct _DIACTIONA { - UINT_PTR uAppData; - DWORD dwSemantic; - OPTIONAL DWORD dwFlags; - OPTIONAL union { - LPCSTR lptszActionName; - UINT uResIdString; - }; - OPTIONAL GUID guidInstance; - OPTIONAL DWORD dwObjID; - OPTIONAL DWORD dwHow; -} DIACTIONA, *LPDIACTIONA ; -typedef struct _DIACTIONW { - UINT_PTR uAppData; - DWORD dwSemantic; - OPTIONAL DWORD dwFlags; - OPTIONAL union { - LPCWSTR lptszActionName; - UINT uResIdString; - }; - OPTIONAL GUID guidInstance; - OPTIONAL DWORD dwObjID; - OPTIONAL DWORD dwHow; -} DIACTIONW, *LPDIACTIONW ; -#ifdef UNICODE -typedef DIACTIONW DIACTION; -typedef LPDIACTIONW LPDIACTION; -#else -typedef DIACTIONA DIACTION; -typedef LPDIACTIONA LPDIACTION; -#endif // UNICODE - -typedef const DIACTIONA *LPCDIACTIONA; -typedef const DIACTIONW *LPCDIACTIONW; -#ifdef UNICODE -typedef DIACTIONW DIACTION; -typedef LPCDIACTIONW LPCDIACTION; -#else -typedef DIACTIONA DIACTION; -typedef LPCDIACTIONA LPCDIACTION; -#endif // UNICODE -typedef const DIACTION *LPCDIACTION; - - -#define DIA_FORCEFEEDBACK 0x00000001 -#define DIA_APPMAPPED 0x00000002 -#define DIA_APPNOMAP 0x00000004 -#define DIA_NORANGE 0x00000008 -#define DIA_APPFIXED 0x00000010 - -#define DIAH_UNMAPPED 0x00000000 -#define DIAH_USERCONFIG 0x00000001 -#define DIAH_APPREQUESTED 0x00000002 -#define DIAH_HWAPP 0x00000004 -#define DIAH_HWDEFAULT 0x00000008 -#define DIAH_DEFAULT 0x00000020 -#define DIAH_ERROR 0x80000000 - -typedef struct _DIACTIONFORMATA { - DWORD dwSize; - DWORD dwActionSize; - DWORD dwDataSize; - DWORD dwNumActions; - LPDIACTIONA rgoAction; - GUID guidActionMap; - DWORD dwGenre; - DWORD dwBufferSize; - OPTIONAL LONG lAxisMin; - OPTIONAL LONG lAxisMax; - OPTIONAL HINSTANCE hInstString; - FILETIME ftTimeStamp; - DWORD dwCRC; - CHAR tszActionMap[MAX_PATH]; -} DIACTIONFORMATA, *LPDIACTIONFORMATA; -typedef struct _DIACTIONFORMATW { - DWORD dwSize; - DWORD dwActionSize; - DWORD dwDataSize; - DWORD dwNumActions; - LPDIACTIONW rgoAction; - GUID guidActionMap; - DWORD dwGenre; - DWORD dwBufferSize; - OPTIONAL LONG lAxisMin; - OPTIONAL LONG lAxisMax; - OPTIONAL HINSTANCE hInstString; - FILETIME ftTimeStamp; - DWORD dwCRC; - WCHAR tszActionMap[MAX_PATH]; -} DIACTIONFORMATW, *LPDIACTIONFORMATW; -#ifdef UNICODE -typedef DIACTIONFORMATW DIACTIONFORMAT; -typedef LPDIACTIONFORMATW LPDIACTIONFORMAT; -#else -typedef DIACTIONFORMATA DIACTIONFORMAT; -typedef LPDIACTIONFORMATA LPDIACTIONFORMAT; -#endif // UNICODE -typedef const DIACTIONFORMATA *LPCDIACTIONFORMATA; -typedef const DIACTIONFORMATW *LPCDIACTIONFORMATW; -#ifdef UNICODE -typedef DIACTIONFORMATW DIACTIONFORMAT; -typedef LPCDIACTIONFORMATW LPCDIACTIONFORMAT; -#else -typedef DIACTIONFORMATA DIACTIONFORMAT; -typedef LPCDIACTIONFORMATA LPCDIACTIONFORMAT; -#endif // UNICODE -typedef const DIACTIONFORMAT *LPCDIACTIONFORMAT; - -#define DIAFTS_NEWDEVICELOW 0xFFFFFFFF -#define DIAFTS_NEWDEVICEHIGH 0xFFFFFFFF -#define DIAFTS_UNUSEDDEVICELOW 0x00000000 -#define DIAFTS_UNUSEDDEVICEHIGH 0x00000000 - -#define DIDBAM_DEFAULT 0x00000000 -#define DIDBAM_PRESERVE 0x00000001 -#define DIDBAM_INITIALIZE 0x00000002 -#define DIDBAM_HWDEFAULTS 0x00000004 - -#define DIDSAM_DEFAULT 0x00000000 -#define DIDSAM_NOUSER 0x00000001 -#define DIDSAM_FORCESAVE 0x00000002 - -#define DICD_DEFAULT 0x00000000 -#define DICD_EDIT 0x00000001 - -/* - * The following definition is normally defined in d3dtypes.h - */ -#ifndef D3DCOLOR_DEFINED -typedef DWORD D3DCOLOR; -#define D3DCOLOR_DEFINED -#endif - -typedef struct _DICOLORSET{ - DWORD dwSize; - D3DCOLOR cTextFore; - D3DCOLOR cTextHighlight; - D3DCOLOR cCalloutLine; - D3DCOLOR cCalloutHighlight; - D3DCOLOR cBorder; - D3DCOLOR cControlFill; - D3DCOLOR cHighlightFill; - D3DCOLOR cAreaFill; -} DICOLORSET, *LPDICOLORSET; -typedef const DICOLORSET *LPCDICOLORSET; - - -typedef struct _DICONFIGUREDEVICESPARAMSA{ - DWORD dwSize; - DWORD dwcUsers; - LPSTR lptszUserNames; - DWORD dwcFormats; - LPDIACTIONFORMATA lprgFormats; - HWND hwnd; - DICOLORSET dics; - IUnknown FAR * lpUnkDDSTarget; -} DICONFIGUREDEVICESPARAMSA, *LPDICONFIGUREDEVICESPARAMSA; -typedef struct _DICONFIGUREDEVICESPARAMSW{ - DWORD dwSize; - DWORD dwcUsers; - LPWSTR lptszUserNames; - DWORD dwcFormats; - LPDIACTIONFORMATW lprgFormats; - HWND hwnd; - DICOLORSET dics; - IUnknown FAR * lpUnkDDSTarget; -} DICONFIGUREDEVICESPARAMSW, *LPDICONFIGUREDEVICESPARAMSW; -#ifdef UNICODE -typedef DICONFIGUREDEVICESPARAMSW DICONFIGUREDEVICESPARAMS; -typedef LPDICONFIGUREDEVICESPARAMSW LPDICONFIGUREDEVICESPARAMS; -#else -typedef DICONFIGUREDEVICESPARAMSA DICONFIGUREDEVICESPARAMS; -typedef LPDICONFIGUREDEVICESPARAMSA LPDICONFIGUREDEVICESPARAMS; -#endif // UNICODE -typedef const DICONFIGUREDEVICESPARAMSA *LPCDICONFIGUREDEVICESPARAMSA; -typedef const DICONFIGUREDEVICESPARAMSW *LPCDICONFIGUREDEVICESPARAMSW; -#ifdef UNICODE -typedef DICONFIGUREDEVICESPARAMSW DICONFIGUREDEVICESPARAMS; -typedef LPCDICONFIGUREDEVICESPARAMSW LPCDICONFIGUREDEVICESPARAMS; -#else -typedef DICONFIGUREDEVICESPARAMSA DICONFIGUREDEVICESPARAMS; -typedef LPCDICONFIGUREDEVICESPARAMSA LPCDICONFIGUREDEVICESPARAMS; -#endif // UNICODE -typedef const DICONFIGUREDEVICESPARAMS *LPCDICONFIGUREDEVICESPARAMS; - - -#define DIDIFT_CONFIGURATION 0x00000001 -#define DIDIFT_OVERLAY 0x00000002 - -#define DIDAL_CENTERED 0x00000000 -#define DIDAL_LEFTALIGNED 0x00000001 -#define DIDAL_RIGHTALIGNED 0x00000002 -#define DIDAL_MIDDLE 0x00000000 -#define DIDAL_TOPALIGNED 0x00000004 -#define DIDAL_BOTTOMALIGNED 0x00000008 - -typedef struct _DIDEVICEIMAGEINFOA { - CHAR tszImagePath[MAX_PATH]; - DWORD dwFlags; - // These are valid if DIDIFT_OVERLAY is present in dwFlags. - DWORD dwViewID; - RECT rcOverlay; - DWORD dwObjID; - DWORD dwcValidPts; - POINT rgptCalloutLine[5]; - RECT rcCalloutRect; - DWORD dwTextAlign; -} DIDEVICEIMAGEINFOA, *LPDIDEVICEIMAGEINFOA; -typedef struct _DIDEVICEIMAGEINFOW { - WCHAR tszImagePath[MAX_PATH]; - DWORD dwFlags; - // These are valid if DIDIFT_OVERLAY is present in dwFlags. - DWORD dwViewID; - RECT rcOverlay; - DWORD dwObjID; - DWORD dwcValidPts; - POINT rgptCalloutLine[5]; - RECT rcCalloutRect; - DWORD dwTextAlign; -} DIDEVICEIMAGEINFOW, *LPDIDEVICEIMAGEINFOW; -#ifdef UNICODE -typedef DIDEVICEIMAGEINFOW DIDEVICEIMAGEINFO; -typedef LPDIDEVICEIMAGEINFOW LPDIDEVICEIMAGEINFO; -#else -typedef DIDEVICEIMAGEINFOA DIDEVICEIMAGEINFO; -typedef LPDIDEVICEIMAGEINFOA LPDIDEVICEIMAGEINFO; -#endif // UNICODE -typedef const DIDEVICEIMAGEINFOA *LPCDIDEVICEIMAGEINFOA; -typedef const DIDEVICEIMAGEINFOW *LPCDIDEVICEIMAGEINFOW; -#ifdef UNICODE -typedef DIDEVICEIMAGEINFOW DIDEVICEIMAGEINFO; -typedef LPCDIDEVICEIMAGEINFOW LPCDIDEVICEIMAGEINFO; -#else -typedef DIDEVICEIMAGEINFOA DIDEVICEIMAGEINFO; -typedef LPCDIDEVICEIMAGEINFOA LPCDIDEVICEIMAGEINFO; -#endif // UNICODE -typedef const DIDEVICEIMAGEINFO *LPCDIDEVICEIMAGEINFO; - -typedef struct _DIDEVICEIMAGEINFOHEADERA { - DWORD dwSize; - DWORD dwSizeImageInfo; - DWORD dwcViews; - DWORD dwcButtons; - DWORD dwcAxes; - DWORD dwcPOVs; - DWORD dwBufferSize; - DWORD dwBufferUsed; - LPDIDEVICEIMAGEINFOA lprgImageInfoArray; -} DIDEVICEIMAGEINFOHEADERA, *LPDIDEVICEIMAGEINFOHEADERA; -typedef struct _DIDEVICEIMAGEINFOHEADERW { - DWORD dwSize; - DWORD dwSizeImageInfo; - DWORD dwcViews; - DWORD dwcButtons; - DWORD dwcAxes; - DWORD dwcPOVs; - DWORD dwBufferSize; - DWORD dwBufferUsed; - LPDIDEVICEIMAGEINFOW lprgImageInfoArray; -} DIDEVICEIMAGEINFOHEADERW, *LPDIDEVICEIMAGEINFOHEADERW; -#ifdef UNICODE -typedef DIDEVICEIMAGEINFOHEADERW DIDEVICEIMAGEINFOHEADER; -typedef LPDIDEVICEIMAGEINFOHEADERW LPDIDEVICEIMAGEINFOHEADER; -#else -typedef DIDEVICEIMAGEINFOHEADERA DIDEVICEIMAGEINFOHEADER; -typedef LPDIDEVICEIMAGEINFOHEADERA LPDIDEVICEIMAGEINFOHEADER; -#endif // UNICODE -typedef const DIDEVICEIMAGEINFOHEADERA *LPCDIDEVICEIMAGEINFOHEADERA; -typedef const DIDEVICEIMAGEINFOHEADERW *LPCDIDEVICEIMAGEINFOHEADERW; -#ifdef UNICODE -typedef DIDEVICEIMAGEINFOHEADERW DIDEVICEIMAGEINFOHEADER; -typedef LPCDIDEVICEIMAGEINFOHEADERW LPCDIDEVICEIMAGEINFOHEADER; -#else -typedef DIDEVICEIMAGEINFOHEADERA DIDEVICEIMAGEINFOHEADER; -typedef LPCDIDEVICEIMAGEINFOHEADERA LPCDIDEVICEIMAGEINFOHEADER; -#endif // UNICODE -typedef const DIDEVICEIMAGEINFOHEADER *LPCDIDEVICEIMAGEINFOHEADER; - -#endif /* DIRECTINPUT_VERSION > 0x0700 */ - -#if(DIRECTINPUT_VERSION >= 0x0500) -/* These structures are defined for DirectX 3.0 compatibility */ - -typedef struct DIDEVICEOBJECTINSTANCE_DX3A { - DWORD dwSize; - GUID guidType; - DWORD dwOfs; - DWORD dwType; - DWORD dwFlags; - CHAR tszName[MAX_PATH]; -} DIDEVICEOBJECTINSTANCE_DX3A, *LPDIDEVICEOBJECTINSTANCE_DX3A; -typedef struct DIDEVICEOBJECTINSTANCE_DX3W { - DWORD dwSize; - GUID guidType; - DWORD dwOfs; - DWORD dwType; - DWORD dwFlags; - WCHAR tszName[MAX_PATH]; -} DIDEVICEOBJECTINSTANCE_DX3W, *LPDIDEVICEOBJECTINSTANCE_DX3W; -#ifdef UNICODE -typedef DIDEVICEOBJECTINSTANCE_DX3W DIDEVICEOBJECTINSTANCE_DX3; -typedef LPDIDEVICEOBJECTINSTANCE_DX3W LPDIDEVICEOBJECTINSTANCE_DX3; -#else -typedef DIDEVICEOBJECTINSTANCE_DX3A DIDEVICEOBJECTINSTANCE_DX3; -typedef LPDIDEVICEOBJECTINSTANCE_DX3A LPDIDEVICEOBJECTINSTANCE_DX3; -#endif // UNICODE -typedef const DIDEVICEOBJECTINSTANCE_DX3A *LPCDIDEVICEOBJECTINSTANCE_DX3A; -typedef const DIDEVICEOBJECTINSTANCE_DX3W *LPCDIDEVICEOBJECTINSTANCE_DX3W; -typedef const DIDEVICEOBJECTINSTANCE_DX3 *LPCDIDEVICEOBJECTINSTANCE_DX3; -#endif /* DIRECTINPUT_VERSION >= 0x0500 */ - -typedef struct DIDEVICEOBJECTINSTANCEA { - DWORD dwSize; - GUID guidType; - DWORD dwOfs; - DWORD dwType; - DWORD dwFlags; - CHAR tszName[MAX_PATH]; -#if(DIRECTINPUT_VERSION >= 0x0500) - DWORD dwFFMaxForce; - DWORD dwFFForceResolution; - WORD wCollectionNumber; - WORD wDesignatorIndex; - WORD wUsagePage; - WORD wUsage; - DWORD dwDimension; - WORD wExponent; - WORD wReportId; -#endif /* DIRECTINPUT_VERSION >= 0x0500 */ -} DIDEVICEOBJECTINSTANCEA, *LPDIDEVICEOBJECTINSTANCEA; -typedef struct DIDEVICEOBJECTINSTANCEW { - DWORD dwSize; - GUID guidType; - DWORD dwOfs; - DWORD dwType; - DWORD dwFlags; - WCHAR tszName[MAX_PATH]; -#if(DIRECTINPUT_VERSION >= 0x0500) - DWORD dwFFMaxForce; - DWORD dwFFForceResolution; - WORD wCollectionNumber; - WORD wDesignatorIndex; - WORD wUsagePage; - WORD wUsage; - DWORD dwDimension; - WORD wExponent; - WORD wReportId; -#endif /* DIRECTINPUT_VERSION >= 0x0500 */ -} DIDEVICEOBJECTINSTANCEW, *LPDIDEVICEOBJECTINSTANCEW; -#ifdef UNICODE -typedef DIDEVICEOBJECTINSTANCEW DIDEVICEOBJECTINSTANCE; -typedef LPDIDEVICEOBJECTINSTANCEW LPDIDEVICEOBJECTINSTANCE; -#else -typedef DIDEVICEOBJECTINSTANCEA DIDEVICEOBJECTINSTANCE; -typedef LPDIDEVICEOBJECTINSTANCEA LPDIDEVICEOBJECTINSTANCE; -#endif // UNICODE -typedef const DIDEVICEOBJECTINSTANCEA *LPCDIDEVICEOBJECTINSTANCEA; -typedef const DIDEVICEOBJECTINSTANCEW *LPCDIDEVICEOBJECTINSTANCEW; -typedef const DIDEVICEOBJECTINSTANCE *LPCDIDEVICEOBJECTINSTANCE; - -typedef BOOL (FAR PASCAL * LPDIENUMDEVICEOBJECTSCALLBACKA)(LPCDIDEVICEOBJECTINSTANCEA, LPVOID); -typedef BOOL (FAR PASCAL * LPDIENUMDEVICEOBJECTSCALLBACKW)(LPCDIDEVICEOBJECTINSTANCEW, LPVOID); -#ifdef UNICODE -#define LPDIENUMDEVICEOBJECTSCALLBACK LPDIENUMDEVICEOBJECTSCALLBACKW -#else -#define LPDIENUMDEVICEOBJECTSCALLBACK LPDIENUMDEVICEOBJECTSCALLBACKA -#endif // !UNICODE - -#if(DIRECTINPUT_VERSION >= 0x0500) -#define DIDOI_FFACTUATOR 0x00000001 -#define DIDOI_FFEFFECTTRIGGER 0x00000002 -#define DIDOI_POLLED 0x00008000 -#define DIDOI_ASPECTPOSITION 0x00000100 -#define DIDOI_ASPECTVELOCITY 0x00000200 -#define DIDOI_ASPECTACCEL 0x00000300 -#define DIDOI_ASPECTFORCE 0x00000400 -#define DIDOI_ASPECTMASK 0x00000F00 -#endif /* DIRECTINPUT_VERSION >= 0x0500 */ -#if(DIRECTINPUT_VERSION >= 0x050a) -#define DIDOI_GUIDISUSAGE 0x00010000 -#endif /* DIRECTINPUT_VERSION >= 0x050a */ - -typedef struct DIPROPHEADER { - DWORD dwSize; - DWORD dwHeaderSize; - DWORD dwObj; - DWORD dwHow; -} DIPROPHEADER, *LPDIPROPHEADER; -typedef const DIPROPHEADER *LPCDIPROPHEADER; - -#define DIPH_DEVICE 0 -#define DIPH_BYOFFSET 1 -#define DIPH_BYID 2 -#if(DIRECTINPUT_VERSION >= 0x050a) -#define DIPH_BYUSAGE 3 -#endif /* DIRECTINPUT_VERSION >= 0x050a */ - -#if(DIRECTINPUT_VERSION >= 0x050a) -#define DIMAKEUSAGEDWORD(UsagePage, Usage) \ - (DWORD)MAKELONG(Usage, UsagePage) -#endif /* DIRECTINPUT_VERSION >= 0x050a */ - -typedef struct DIPROPDWORD { - DIPROPHEADER diph; - DWORD dwData; -} DIPROPDWORD, *LPDIPROPDWORD; -typedef const DIPROPDWORD *LPCDIPROPDWORD; - -#if(DIRECTINPUT_VERSION >= 0x0800) -typedef struct DIPROPPOINTER { - DIPROPHEADER diph; - UINT_PTR uData; -} DIPROPPOINTER, *LPDIPROPPOINTER; -typedef const DIPROPPOINTER *LPCDIPROPPOINTER; -#endif /* DIRECTINPUT_VERSION >= 0x0800 */ - -typedef struct DIPROPRANGE { - DIPROPHEADER diph; - LONG lMin; - LONG lMax; -} DIPROPRANGE, *LPDIPROPRANGE; -typedef const DIPROPRANGE *LPCDIPROPRANGE; - -#define DIPROPRANGE_NOMIN ((LONG)0x80000000) -#define DIPROPRANGE_NOMAX ((LONG)0x7FFFFFFF) - -#if(DIRECTINPUT_VERSION >= 0x050a) -typedef struct DIPROPCAL { - DIPROPHEADER diph; - LONG lMin; - LONG lCenter; - LONG lMax; -} DIPROPCAL, *LPDIPROPCAL; -typedef const DIPROPCAL *LPCDIPROPCAL; - -typedef struct DIPROPCALPOV { - DIPROPHEADER diph; - LONG lMin[5]; - LONG lMax[5]; -} DIPROPCALPOV, *LPDIPROPCALPOV; -typedef const DIPROPCALPOV *LPCDIPROPCALPOV; - -typedef struct DIPROPGUIDANDPATH { - DIPROPHEADER diph; - GUID guidClass; - WCHAR wszPath[MAX_PATH]; -} DIPROPGUIDANDPATH, *LPDIPROPGUIDANDPATH; -typedef const DIPROPGUIDANDPATH *LPCDIPROPGUIDANDPATH; - -typedef struct DIPROPSTRING { - DIPROPHEADER diph; - WCHAR wsz[MAX_PATH]; -} DIPROPSTRING, *LPDIPROPSTRING; -typedef const DIPROPSTRING *LPCDIPROPSTRING; - -#endif /* DIRECTINPUT_VERSION >= 0x050a */ - -#if(DIRECTINPUT_VERSION >= 0x0800) -#define MAXCPOINTSNUM 8 - -typedef struct _CPOINT -{ - LONG lP; // raw value - DWORD dwLog; // logical_value / max_logical_value * 10000 -} CPOINT, *PCPOINT; - -typedef struct DIPROPCPOINTS { - DIPROPHEADER diph; - DWORD dwCPointsNum; - CPOINT cp[MAXCPOINTSNUM]; -} DIPROPCPOINTS, *LPDIPROPCPOINTS; -typedef const DIPROPCPOINTS *LPCDIPROPCPOINTS; -#endif /* DIRECTINPUT_VERSION >= 0x0800 */ - - -#ifdef __cplusplus -#define MAKEDIPROP(prop) (*(const GUID *)(prop)) -#else -#define MAKEDIPROP(prop) ((REFGUID)(prop)) -#endif - -#define DIPROP_BUFFERSIZE MAKEDIPROP(1) - -#define DIPROP_AXISMODE MAKEDIPROP(2) - -#define DIPROPAXISMODE_ABS 0 -#define DIPROPAXISMODE_REL 1 - -#define DIPROP_GRANULARITY MAKEDIPROP(3) - -#define DIPROP_RANGE MAKEDIPROP(4) - -#define DIPROP_DEADZONE MAKEDIPROP(5) - -#define DIPROP_SATURATION MAKEDIPROP(6) - -#define DIPROP_FFGAIN MAKEDIPROP(7) - -#define DIPROP_FFLOAD MAKEDIPROP(8) - -#define DIPROP_AUTOCENTER MAKEDIPROP(9) - -#define DIPROPAUTOCENTER_OFF 0 -#define DIPROPAUTOCENTER_ON 1 - -#define DIPROP_CALIBRATIONMODE MAKEDIPROP(10) - -#define DIPROPCALIBRATIONMODE_COOKED 0 -#define DIPROPCALIBRATIONMODE_RAW 1 - -#if(DIRECTINPUT_VERSION >= 0x050a) -#define DIPROP_CALIBRATION MAKEDIPROP(11) - -#define DIPROP_GUIDANDPATH MAKEDIPROP(12) - -#define DIPROP_INSTANCENAME MAKEDIPROP(13) - -#define DIPROP_PRODUCTNAME MAKEDIPROP(14) -#endif /* DIRECTINPUT_VERSION >= 0x050a */ - -#if(DIRECTINPUT_VERSION >= 0x05b2) -#define DIPROP_JOYSTICKID MAKEDIPROP(15) - -#define DIPROP_GETPORTDISPLAYNAME MAKEDIPROP(16) - -#endif /* DIRECTINPUT_VERSION >= 0x05b2 */ - -#if(DIRECTINPUT_VERSION >= 0x0700) -#define DIPROP_PHYSICALRANGE MAKEDIPROP(18) - -#define DIPROP_LOGICALRANGE MAKEDIPROP(19) -#endif /* DIRECTINPUT_VERSION >= 0x0700 */ - -#if(DIRECTINPUT_VERSION >= 0x0800) -#define DIPROP_KEYNAME MAKEDIPROP(20) - -#define DIPROP_CPOINTS MAKEDIPROP(21) - -#define DIPROP_APPDATA MAKEDIPROP(22) - -#define DIPROP_SCANCODE MAKEDIPROP(23) - -#define DIPROP_VIDPID MAKEDIPROP(24) - -#define DIPROP_USERNAME MAKEDIPROP(25) - -#define DIPROP_TYPENAME MAKEDIPROP(26) -#endif /* DIRECTINPUT_VERSION >= 0x0800 */ - - -typedef struct DIDEVICEOBJECTDATA_DX3 { - DWORD dwOfs; - DWORD dwData; - DWORD dwTimeStamp; - DWORD dwSequence; -} DIDEVICEOBJECTDATA_DX3, *LPDIDEVICEOBJECTDATA_DX3; -typedef const DIDEVICEOBJECTDATA_DX3 *LPCDIDEVICEOBJECTDATA_DX; - -typedef struct DIDEVICEOBJECTDATA { - DWORD dwOfs; - DWORD dwData; - DWORD dwTimeStamp; - DWORD dwSequence; -#if(DIRECTINPUT_VERSION >= 0x0800) - UINT_PTR uAppData; -#endif /* DIRECTINPUT_VERSION >= 0x0800 */ -} DIDEVICEOBJECTDATA, *LPDIDEVICEOBJECTDATA; -typedef const DIDEVICEOBJECTDATA *LPCDIDEVICEOBJECTDATA; - -#define DIGDD_PEEK 0x00000001 - -#define DISEQUENCE_COMPARE(dwSequence1, cmp, dwSequence2) \ - ((int)((dwSequence1) - (dwSequence2)) cmp 0) -#define DISCL_EXCLUSIVE 0x00000001 -#define DISCL_NONEXCLUSIVE 0x00000002 -#define DISCL_FOREGROUND 0x00000004 -#define DISCL_BACKGROUND 0x00000008 -#define DISCL_NOWINKEY 0x00000010 - -#if(DIRECTINPUT_VERSION >= 0x0500) -/* These structures are defined for DirectX 3.0 compatibility */ - -typedef struct DIDEVICEINSTANCE_DX3A { - DWORD dwSize; - GUID guidInstance; - GUID guidProduct; - DWORD dwDevType; - CHAR tszInstanceName[MAX_PATH]; - CHAR tszProductName[MAX_PATH]; -} DIDEVICEINSTANCE_DX3A, *LPDIDEVICEINSTANCE_DX3A; -typedef struct DIDEVICEINSTANCE_DX3W { - DWORD dwSize; - GUID guidInstance; - GUID guidProduct; - DWORD dwDevType; - WCHAR tszInstanceName[MAX_PATH]; - WCHAR tszProductName[MAX_PATH]; -} DIDEVICEINSTANCE_DX3W, *LPDIDEVICEINSTANCE_DX3W; -#ifdef UNICODE -typedef DIDEVICEINSTANCE_DX3W DIDEVICEINSTANCE_DX3; -typedef LPDIDEVICEINSTANCE_DX3W LPDIDEVICEINSTANCE_DX3; -#else -typedef DIDEVICEINSTANCE_DX3A DIDEVICEINSTANCE_DX3; -typedef LPDIDEVICEINSTANCE_DX3A LPDIDEVICEINSTANCE_DX3; -#endif // UNICODE -typedef const DIDEVICEINSTANCE_DX3A *LPCDIDEVICEINSTANCE_DX3A; -typedef const DIDEVICEINSTANCE_DX3W *LPCDIDEVICEINSTANCE_DX3W; -typedef const DIDEVICEINSTANCE_DX3 *LPCDIDEVICEINSTANCE_DX3; -#endif /* DIRECTINPUT_VERSION >= 0x0500 */ - -typedef struct DIDEVICEINSTANCEA { - DWORD dwSize; - GUID guidInstance; - GUID guidProduct; - DWORD dwDevType; - CHAR tszInstanceName[MAX_PATH]; - CHAR tszProductName[MAX_PATH]; -#if(DIRECTINPUT_VERSION >= 0x0500) - GUID guidFFDriver; - WORD wUsagePage; - WORD wUsage; -#endif /* DIRECTINPUT_VERSION >= 0x0500 */ -} DIDEVICEINSTANCEA, *LPDIDEVICEINSTANCEA; -typedef struct DIDEVICEINSTANCEW { - DWORD dwSize; - GUID guidInstance; - GUID guidProduct; - DWORD dwDevType; - WCHAR tszInstanceName[MAX_PATH]; - WCHAR tszProductName[MAX_PATH]; -#if(DIRECTINPUT_VERSION >= 0x0500) - GUID guidFFDriver; - WORD wUsagePage; - WORD wUsage; -#endif /* DIRECTINPUT_VERSION >= 0x0500 */ -} DIDEVICEINSTANCEW, *LPDIDEVICEINSTANCEW; -#ifdef UNICODE -typedef DIDEVICEINSTANCEW DIDEVICEINSTANCE; -typedef LPDIDEVICEINSTANCEW LPDIDEVICEINSTANCE; -#else -typedef DIDEVICEINSTANCEA DIDEVICEINSTANCE; -typedef LPDIDEVICEINSTANCEA LPDIDEVICEINSTANCE; -#endif // UNICODE - -typedef const DIDEVICEINSTANCEA *LPCDIDEVICEINSTANCEA; -typedef const DIDEVICEINSTANCEW *LPCDIDEVICEINSTANCEW; -#ifdef UNICODE -typedef DIDEVICEINSTANCEW DIDEVICEINSTANCE; -typedef LPCDIDEVICEINSTANCEW LPCDIDEVICEINSTANCE; -#else -typedef DIDEVICEINSTANCEA DIDEVICEINSTANCE; -typedef LPCDIDEVICEINSTANCEA LPCDIDEVICEINSTANCE; -#endif // UNICODE -typedef const DIDEVICEINSTANCE *LPCDIDEVICEINSTANCE; - -#undef INTERFACE -#define INTERFACE IDirectInputDeviceW - -DECLARE_INTERFACE_(IDirectInputDeviceW, IUnknown) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - - /*** IDirectInputDeviceW methods ***/ - STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS) PURE; - STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKW,LPVOID,DWORD) PURE; - STDMETHOD(GetProperty)(THIS_ REFGUID,LPDIPROPHEADER) PURE; - STDMETHOD(SetProperty)(THIS_ REFGUID,LPCDIPROPHEADER) PURE; - STDMETHOD(Acquire)(THIS) PURE; - STDMETHOD(Unacquire)(THIS) PURE; - STDMETHOD(GetDeviceState)(THIS_ DWORD,LPVOID) PURE; - STDMETHOD(GetDeviceData)(THIS_ DWORD,LPDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE; - STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT) PURE; - STDMETHOD(SetEventNotification)(THIS_ HANDLE) PURE; - STDMETHOD(SetCooperativeLevel)(THIS_ HWND,DWORD) PURE; - STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEW,DWORD,DWORD) PURE; - STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEW) PURE; - STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE; - STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD,REFGUID) PURE; -}; - -typedef struct IDirectInputDeviceW *LPDIRECTINPUTDEVICEW; - -#undef INTERFACE -#define INTERFACE IDirectInputDeviceA - -DECLARE_INTERFACE_(IDirectInputDeviceA, IUnknown) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - - /*** IDirectInputDeviceA methods ***/ - STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS) PURE; - STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKA,LPVOID,DWORD) PURE; - STDMETHOD(GetProperty)(THIS_ REFGUID,LPDIPROPHEADER) PURE; - STDMETHOD(SetProperty)(THIS_ REFGUID,LPCDIPROPHEADER) PURE; - STDMETHOD(Acquire)(THIS) PURE; - STDMETHOD(Unacquire)(THIS) PURE; - STDMETHOD(GetDeviceState)(THIS_ DWORD,LPVOID) PURE; - STDMETHOD(GetDeviceData)(THIS_ DWORD,LPDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE; - STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT) PURE; - STDMETHOD(SetEventNotification)(THIS_ HANDLE) PURE; - STDMETHOD(SetCooperativeLevel)(THIS_ HWND,DWORD) PURE; - STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEA,DWORD,DWORD) PURE; - STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEA) PURE; - STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE; - STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD,REFGUID) PURE; -}; - -typedef struct IDirectInputDeviceA *LPDIRECTINPUTDEVICEA; - -#ifdef UNICODE -#define IID_IDirectInputDevice IID_IDirectInputDeviceW -#define IDirectInputDevice IDirectInputDeviceW -#define IDirectInputDeviceVtbl IDirectInputDeviceWVtbl -#else -#define IID_IDirectInputDevice IID_IDirectInputDeviceA -#define IDirectInputDevice IDirectInputDeviceA -#define IDirectInputDeviceVtbl IDirectInputDeviceAVtbl -#endif -typedef struct IDirectInputDevice *LPDIRECTINPUTDEVICE; - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectInputDevice_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IDirectInputDevice_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDirectInputDevice_Release(p) (p)->lpVtbl->Release(p) -#define IDirectInputDevice_GetCapabilities(p,a) (p)->lpVtbl->GetCapabilities(p,a) -#define IDirectInputDevice_EnumObjects(p,a,b,c) (p)->lpVtbl->EnumObjects(p,a,b,c) -#define IDirectInputDevice_GetProperty(p,a,b) (p)->lpVtbl->GetProperty(p,a,b) -#define IDirectInputDevice_SetProperty(p,a,b) (p)->lpVtbl->SetProperty(p,a,b) -#define IDirectInputDevice_Acquire(p) (p)->lpVtbl->Acquire(p) -#define IDirectInputDevice_Unacquire(p) (p)->lpVtbl->Unacquire(p) -#define IDirectInputDevice_GetDeviceState(p,a,b) (p)->lpVtbl->GetDeviceState(p,a,b) -#define IDirectInputDevice_GetDeviceData(p,a,b,c,d) (p)->lpVtbl->GetDeviceData(p,a,b,c,d) -#define IDirectInputDevice_SetDataFormat(p,a) (p)->lpVtbl->SetDataFormat(p,a) -#define IDirectInputDevice_SetEventNotification(p,a) (p)->lpVtbl->SetEventNotification(p,a) -#define IDirectInputDevice_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b) -#define IDirectInputDevice_GetObjectInfo(p,a,b,c) (p)->lpVtbl->GetObjectInfo(p,a,b,c) -#define IDirectInputDevice_GetDeviceInfo(p,a) (p)->lpVtbl->GetDeviceInfo(p,a) -#define IDirectInputDevice_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b) -#define IDirectInputDevice_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c) -#else -#define IDirectInputDevice_QueryInterface(p,a,b) (p)->QueryInterface(a,b) -#define IDirectInputDevice_AddRef(p) (p)->AddRef() -#define IDirectInputDevice_Release(p) (p)->Release() -#define IDirectInputDevice_GetCapabilities(p,a) (p)->GetCapabilities(a) -#define IDirectInputDevice_EnumObjects(p,a,b,c) (p)->EnumObjects(a,b,c) -#define IDirectInputDevice_GetProperty(p,a,b) (p)->GetProperty(a,b) -#define IDirectInputDevice_SetProperty(p,a,b) (p)->SetProperty(a,b) -#define IDirectInputDevice_Acquire(p) (p)->Acquire() -#define IDirectInputDevice_Unacquire(p) (p)->Unacquire() -#define IDirectInputDevice_GetDeviceState(p,a,b) (p)->GetDeviceState(a,b) -#define IDirectInputDevice_GetDeviceData(p,a,b,c,d) (p)->GetDeviceData(a,b,c,d) -#define IDirectInputDevice_SetDataFormat(p,a) (p)->SetDataFormat(a) -#define IDirectInputDevice_SetEventNotification(p,a) (p)->SetEventNotification(a) -#define IDirectInputDevice_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b) -#define IDirectInputDevice_GetObjectInfo(p,a,b,c) (p)->GetObjectInfo(a,b,c) -#define IDirectInputDevice_GetDeviceInfo(p,a) (p)->GetDeviceInfo(a) -#define IDirectInputDevice_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b) -#define IDirectInputDevice_Initialize(p,a,b,c) (p)->Initialize(a,b,c) -#endif - -#endif /* DIJ_RINGZERO */ - - -#if(DIRECTINPUT_VERSION >= 0x0500) - -#define DISFFC_RESET 0x00000001 -#define DISFFC_STOPALL 0x00000002 -#define DISFFC_PAUSE 0x00000004 -#define DISFFC_CONTINUE 0x00000008 -#define DISFFC_SETACTUATORSON 0x00000010 -#define DISFFC_SETACTUATORSOFF 0x00000020 - -#define DIGFFS_EMPTY 0x00000001 -#define DIGFFS_STOPPED 0x00000002 -#define DIGFFS_PAUSED 0x00000004 -#define DIGFFS_ACTUATORSON 0x00000010 -#define DIGFFS_ACTUATORSOFF 0x00000020 -#define DIGFFS_POWERON 0x00000040 -#define DIGFFS_POWEROFF 0x00000080 -#define DIGFFS_SAFETYSWITCHON 0x00000100 -#define DIGFFS_SAFETYSWITCHOFF 0x00000200 -#define DIGFFS_USERFFSWITCHON 0x00000400 -#define DIGFFS_USERFFSWITCHOFF 0x00000800 -#define DIGFFS_DEVICELOST 0x80000000 - -#ifndef DIJ_RINGZERO - -typedef struct DIEFFECTINFOA { - DWORD dwSize; - GUID guid; - DWORD dwEffType; - DWORD dwStaticParams; - DWORD dwDynamicParams; - CHAR tszName[MAX_PATH]; -} DIEFFECTINFOA, *LPDIEFFECTINFOA; -typedef struct DIEFFECTINFOW { - DWORD dwSize; - GUID guid; - DWORD dwEffType; - DWORD dwStaticParams; - DWORD dwDynamicParams; - WCHAR tszName[MAX_PATH]; -} DIEFFECTINFOW, *LPDIEFFECTINFOW; -#ifdef UNICODE -typedef DIEFFECTINFOW DIEFFECTINFO; -typedef LPDIEFFECTINFOW LPDIEFFECTINFO; -#else -typedef DIEFFECTINFOA DIEFFECTINFO; -typedef LPDIEFFECTINFOA LPDIEFFECTINFO; -#endif // UNICODE -typedef const DIEFFECTINFOA *LPCDIEFFECTINFOA; -typedef const DIEFFECTINFOW *LPCDIEFFECTINFOW; -typedef const DIEFFECTINFO *LPCDIEFFECTINFO; - -#define DISDD_CONTINUE 0x00000001 - -typedef BOOL (FAR PASCAL * LPDIENUMEFFECTSCALLBACKA)(LPCDIEFFECTINFOA, LPVOID); -typedef BOOL (FAR PASCAL * LPDIENUMEFFECTSCALLBACKW)(LPCDIEFFECTINFOW, LPVOID); -#ifdef UNICODE -#define LPDIENUMEFFECTSCALLBACK LPDIENUMEFFECTSCALLBACKW -#else -#define LPDIENUMEFFECTSCALLBACK LPDIENUMEFFECTSCALLBACKA -#endif // !UNICODE -typedef BOOL (FAR PASCAL * LPDIENUMCREATEDEFFECTOBJECTSCALLBACK)(LPDIRECTINPUTEFFECT, LPVOID); - -#undef INTERFACE -#define INTERFACE IDirectInputDevice2W - -DECLARE_INTERFACE_(IDirectInputDevice2W, IDirectInputDeviceW) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - - /*** IDirectInputDeviceW methods ***/ - STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS) PURE; - STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKW,LPVOID,DWORD) PURE; - STDMETHOD(GetProperty)(THIS_ REFGUID,LPDIPROPHEADER) PURE; - STDMETHOD(SetProperty)(THIS_ REFGUID,LPCDIPROPHEADER) PURE; - STDMETHOD(Acquire)(THIS) PURE; - STDMETHOD(Unacquire)(THIS) PURE; - STDMETHOD(GetDeviceState)(THIS_ DWORD,LPVOID) PURE; - STDMETHOD(GetDeviceData)(THIS_ DWORD,LPDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE; - STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT) PURE; - STDMETHOD(SetEventNotification)(THIS_ HANDLE) PURE; - STDMETHOD(SetCooperativeLevel)(THIS_ HWND,DWORD) PURE; - STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEW,DWORD,DWORD) PURE; - STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEW) PURE; - STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE; - STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD,REFGUID) PURE; - - /*** IDirectInputDevice2W methods ***/ - STDMETHOD(CreateEffect)(THIS_ REFGUID,LPCDIEFFECT,LPDIRECTINPUTEFFECT *,LPUNKNOWN) PURE; - STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKW,LPVOID,DWORD) PURE; - STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOW,REFGUID) PURE; - STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD) PURE; - STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD) PURE; - STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK,LPVOID,DWORD) PURE; - STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE) PURE; - STDMETHOD(Poll)(THIS) PURE; - STDMETHOD(SendDeviceData)(THIS_ DWORD,LPCDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE; -}; - -typedef struct IDirectInputDevice2W *LPDIRECTINPUTDEVICE2W; - -#undef INTERFACE -#define INTERFACE IDirectInputDevice2A - -DECLARE_INTERFACE_(IDirectInputDevice2A, IDirectInputDeviceA) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - - /*** IDirectInputDeviceA methods ***/ - STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS) PURE; - STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKA,LPVOID,DWORD) PURE; - STDMETHOD(GetProperty)(THIS_ REFGUID,LPDIPROPHEADER) PURE; - STDMETHOD(SetProperty)(THIS_ REFGUID,LPCDIPROPHEADER) PURE; - STDMETHOD(Acquire)(THIS) PURE; - STDMETHOD(Unacquire)(THIS) PURE; - STDMETHOD(GetDeviceState)(THIS_ DWORD,LPVOID) PURE; - STDMETHOD(GetDeviceData)(THIS_ DWORD,LPDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE; - STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT) PURE; - STDMETHOD(SetEventNotification)(THIS_ HANDLE) PURE; - STDMETHOD(SetCooperativeLevel)(THIS_ HWND,DWORD) PURE; - STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEA,DWORD,DWORD) PURE; - STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEA) PURE; - STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE; - STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD,REFGUID) PURE; - - /*** IDirectInputDevice2A methods ***/ - STDMETHOD(CreateEffect)(THIS_ REFGUID,LPCDIEFFECT,LPDIRECTINPUTEFFECT *,LPUNKNOWN) PURE; - STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKA,LPVOID,DWORD) PURE; - STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOA,REFGUID) PURE; - STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD) PURE; - STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD) PURE; - STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK,LPVOID,DWORD) PURE; - STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE) PURE; - STDMETHOD(Poll)(THIS) PURE; - STDMETHOD(SendDeviceData)(THIS_ DWORD,LPCDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE; -}; - -typedef struct IDirectInputDevice2A *LPDIRECTINPUTDEVICE2A; - -#ifdef UNICODE -#define IID_IDirectInputDevice2 IID_IDirectInputDevice2W -#define IDirectInputDevice2 IDirectInputDevice2W -#define IDirectInputDevice2Vtbl IDirectInputDevice2WVtbl -#else -#define IID_IDirectInputDevice2 IID_IDirectInputDevice2A -#define IDirectInputDevice2 IDirectInputDevice2A -#define IDirectInputDevice2Vtbl IDirectInputDevice2AVtbl -#endif -typedef struct IDirectInputDevice2 *LPDIRECTINPUTDEVICE2; - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectInputDevice2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IDirectInputDevice2_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDirectInputDevice2_Release(p) (p)->lpVtbl->Release(p) -#define IDirectInputDevice2_GetCapabilities(p,a) (p)->lpVtbl->GetCapabilities(p,a) -#define IDirectInputDevice2_EnumObjects(p,a,b,c) (p)->lpVtbl->EnumObjects(p,a,b,c) -#define IDirectInputDevice2_GetProperty(p,a,b) (p)->lpVtbl->GetProperty(p,a,b) -#define IDirectInputDevice2_SetProperty(p,a,b) (p)->lpVtbl->SetProperty(p,a,b) -#define IDirectInputDevice2_Acquire(p) (p)->lpVtbl->Acquire(p) -#define IDirectInputDevice2_Unacquire(p) (p)->lpVtbl->Unacquire(p) -#define IDirectInputDevice2_GetDeviceState(p,a,b) (p)->lpVtbl->GetDeviceState(p,a,b) -#define IDirectInputDevice2_GetDeviceData(p,a,b,c,d) (p)->lpVtbl->GetDeviceData(p,a,b,c,d) -#define IDirectInputDevice2_SetDataFormat(p,a) (p)->lpVtbl->SetDataFormat(p,a) -#define IDirectInputDevice2_SetEventNotification(p,a) (p)->lpVtbl->SetEventNotification(p,a) -#define IDirectInputDevice2_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b) -#define IDirectInputDevice2_GetObjectInfo(p,a,b,c) (p)->lpVtbl->GetObjectInfo(p,a,b,c) -#define IDirectInputDevice2_GetDeviceInfo(p,a) (p)->lpVtbl->GetDeviceInfo(p,a) -#define IDirectInputDevice2_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b) -#define IDirectInputDevice2_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c) -#define IDirectInputDevice2_CreateEffect(p,a,b,c,d) (p)->lpVtbl->CreateEffect(p,a,b,c,d) -#define IDirectInputDevice2_EnumEffects(p,a,b,c) (p)->lpVtbl->EnumEffects(p,a,b,c) -#define IDirectInputDevice2_GetEffectInfo(p,a,b) (p)->lpVtbl->GetEffectInfo(p,a,b) -#define IDirectInputDevice2_GetForceFeedbackState(p,a) (p)->lpVtbl->GetForceFeedbackState(p,a) -#define IDirectInputDevice2_SendForceFeedbackCommand(p,a) (p)->lpVtbl->SendForceFeedbackCommand(p,a) -#define IDirectInputDevice2_EnumCreatedEffectObjects(p,a,b,c) (p)->lpVtbl->EnumCreatedEffectObjects(p,a,b,c) -#define IDirectInputDevice2_Escape(p,a) (p)->lpVtbl->Escape(p,a) -#define IDirectInputDevice2_Poll(p) (p)->lpVtbl->Poll(p) -#define IDirectInputDevice2_SendDeviceData(p,a,b,c,d) (p)->lpVtbl->SendDeviceData(p,a,b,c,d) -#else -#define IDirectInputDevice2_QueryInterface(p,a,b) (p)->QueryInterface(a,b) -#define IDirectInputDevice2_AddRef(p) (p)->AddRef() -#define IDirectInputDevice2_Release(p) (p)->Release() -#define IDirectInputDevice2_GetCapabilities(p,a) (p)->GetCapabilities(a) -#define IDirectInputDevice2_EnumObjects(p,a,b,c) (p)->EnumObjects(a,b,c) -#define IDirectInputDevice2_GetProperty(p,a,b) (p)->GetProperty(a,b) -#define IDirectInputDevice2_SetProperty(p,a,b) (p)->SetProperty(a,b) -#define IDirectInputDevice2_Acquire(p) (p)->Acquire() -#define IDirectInputDevice2_Unacquire(p) (p)->Unacquire() -#define IDirectInputDevice2_GetDeviceState(p,a,b) (p)->GetDeviceState(a,b) -#define IDirectInputDevice2_GetDeviceData(p,a,b,c,d) (p)->GetDeviceData(a,b,c,d) -#define IDirectInputDevice2_SetDataFormat(p,a) (p)->SetDataFormat(a) -#define IDirectInputDevice2_SetEventNotification(p,a) (p)->SetEventNotification(a) -#define IDirectInputDevice2_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b) -#define IDirectInputDevice2_GetObjectInfo(p,a,b,c) (p)->GetObjectInfo(a,b,c) -#define IDirectInputDevice2_GetDeviceInfo(p,a) (p)->GetDeviceInfo(a) -#define IDirectInputDevice2_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b) -#define IDirectInputDevice2_Initialize(p,a,b,c) (p)->Initialize(a,b,c) -#define IDirectInputDevice2_CreateEffect(p,a,b,c,d) (p)->CreateEffect(a,b,c,d) -#define IDirectInputDevice2_EnumEffects(p,a,b,c) (p)->EnumEffects(a,b,c) -#define IDirectInputDevice2_GetEffectInfo(p,a,b) (p)->GetEffectInfo(a,b) -#define IDirectInputDevice2_GetForceFeedbackState(p,a) (p)->GetForceFeedbackState(a) -#define IDirectInputDevice2_SendForceFeedbackCommand(p,a) (p)->SendForceFeedbackCommand(a) -#define IDirectInputDevice2_EnumCreatedEffectObjects(p,a,b,c) (p)->EnumCreatedEffectObjects(a,b,c) -#define IDirectInputDevice2_Escape(p,a) (p)->Escape(a) -#define IDirectInputDevice2_Poll(p) (p)->Poll() -#define IDirectInputDevice2_SendDeviceData(p,a,b,c,d) (p)->SendDeviceData(a,b,c,d) -#endif - -#endif /* DIJ_RINGZERO */ - -#endif /* DIRECTINPUT_VERSION >= 0x0500 */ - -#if(DIRECTINPUT_VERSION >= 0x0700) -#define DIFEF_DEFAULT 0x00000000 -#define DIFEF_INCLUDENONSTANDARD 0x00000001 -#define DIFEF_MODIFYIFNEEDED 0x00000010 - -#ifndef DIJ_RINGZERO - -#undef INTERFACE -#define INTERFACE IDirectInputDevice7W - -DECLARE_INTERFACE_(IDirectInputDevice7W, IDirectInputDevice2W) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - - /*** IDirectInputDevice2W methods ***/ - STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS) PURE; - STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKW,LPVOID,DWORD) PURE; - STDMETHOD(GetProperty)(THIS_ REFGUID,LPDIPROPHEADER) PURE; - STDMETHOD(SetProperty)(THIS_ REFGUID,LPCDIPROPHEADER) PURE; - STDMETHOD(Acquire)(THIS) PURE; - STDMETHOD(Unacquire)(THIS) PURE; - STDMETHOD(GetDeviceState)(THIS_ DWORD,LPVOID) PURE; - STDMETHOD(GetDeviceData)(THIS_ DWORD,LPDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE; - STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT) PURE; - STDMETHOD(SetEventNotification)(THIS_ HANDLE) PURE; - STDMETHOD(SetCooperativeLevel)(THIS_ HWND,DWORD) PURE; - STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEW,DWORD,DWORD) PURE; - STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEW) PURE; - STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE; - STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD,REFGUID) PURE; - STDMETHOD(CreateEffect)(THIS_ REFGUID,LPCDIEFFECT,LPDIRECTINPUTEFFECT *,LPUNKNOWN) PURE; - STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKW,LPVOID,DWORD) PURE; - STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOW,REFGUID) PURE; - STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD) PURE; - STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD) PURE; - STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK,LPVOID,DWORD) PURE; - STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE) PURE; - STDMETHOD(Poll)(THIS) PURE; - STDMETHOD(SendDeviceData)(THIS_ DWORD,LPCDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE; - - /*** IDirectInputDevice7W methods ***/ - STDMETHOD(EnumEffectsInFile)(THIS_ LPCWSTR,LPDIENUMEFFECTSINFILECALLBACK,LPVOID,DWORD) PURE; - STDMETHOD(WriteEffectToFile)(THIS_ LPCWSTR,DWORD,LPDIFILEEFFECT,DWORD) PURE; -}; - -typedef struct IDirectInputDevice7W *LPDIRECTINPUTDEVICE7W; - -#undef INTERFACE -#define INTERFACE IDirectInputDevice7A - -DECLARE_INTERFACE_(IDirectInputDevice7A, IDirectInputDevice2A) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - - /*** IDirectInputDevice2A methods ***/ - STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS) PURE; - STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKA,LPVOID,DWORD) PURE; - STDMETHOD(GetProperty)(THIS_ REFGUID,LPDIPROPHEADER) PURE; - STDMETHOD(SetProperty)(THIS_ REFGUID,LPCDIPROPHEADER) PURE; - STDMETHOD(Acquire)(THIS) PURE; - STDMETHOD(Unacquire)(THIS) PURE; - STDMETHOD(GetDeviceState)(THIS_ DWORD,LPVOID) PURE; - STDMETHOD(GetDeviceData)(THIS_ DWORD,LPDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE; - STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT) PURE; - STDMETHOD(SetEventNotification)(THIS_ HANDLE) PURE; - STDMETHOD(SetCooperativeLevel)(THIS_ HWND,DWORD) PURE; - STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEA,DWORD,DWORD) PURE; - STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEA) PURE; - STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE; - STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD,REFGUID) PURE; - STDMETHOD(CreateEffect)(THIS_ REFGUID,LPCDIEFFECT,LPDIRECTINPUTEFFECT *,LPUNKNOWN) PURE; - STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKA,LPVOID,DWORD) PURE; - STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOA,REFGUID) PURE; - STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD) PURE; - STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD) PURE; - STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK,LPVOID,DWORD) PURE; - STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE) PURE; - STDMETHOD(Poll)(THIS) PURE; - STDMETHOD(SendDeviceData)(THIS_ DWORD,LPCDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE; - - /*** IDirectInputDevice7A methods ***/ - STDMETHOD(EnumEffectsInFile)(THIS_ LPCSTR,LPDIENUMEFFECTSINFILECALLBACK,LPVOID,DWORD) PURE; - STDMETHOD(WriteEffectToFile)(THIS_ LPCSTR,DWORD,LPDIFILEEFFECT,DWORD) PURE; -}; - -typedef struct IDirectInputDevice7A *LPDIRECTINPUTDEVICE7A; - -#ifdef UNICODE -#define IID_IDirectInputDevice7 IID_IDirectInputDevice7W -#define IDirectInputDevice7 IDirectInputDevice7W -#define IDirectInputDevice7Vtbl IDirectInputDevice7WVtbl -#else -#define IID_IDirectInputDevice7 IID_IDirectInputDevice7A -#define IDirectInputDevice7 IDirectInputDevice7A -#define IDirectInputDevice7Vtbl IDirectInputDevice7AVtbl -#endif -typedef struct IDirectInputDevice7 *LPDIRECTINPUTDEVICE7; - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectInputDevice7_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IDirectInputDevice7_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDirectInputDevice7_Release(p) (p)->lpVtbl->Release(p) -#define IDirectInputDevice7_GetCapabilities(p,a) (p)->lpVtbl->GetCapabilities(p,a) -#define IDirectInputDevice7_EnumObjects(p,a,b,c) (p)->lpVtbl->EnumObjects(p,a,b,c) -#define IDirectInputDevice7_GetProperty(p,a,b) (p)->lpVtbl->GetProperty(p,a,b) -#define IDirectInputDevice7_SetProperty(p,a,b) (p)->lpVtbl->SetProperty(p,a,b) -#define IDirectInputDevice7_Acquire(p) (p)->lpVtbl->Acquire(p) -#define IDirectInputDevice7_Unacquire(p) (p)->lpVtbl->Unacquire(p) -#define IDirectInputDevice7_GetDeviceState(p,a,b) (p)->lpVtbl->GetDeviceState(p,a,b) -#define IDirectInputDevice7_GetDeviceData(p,a,b,c,d) (p)->lpVtbl->GetDeviceData(p,a,b,c,d) -#define IDirectInputDevice7_SetDataFormat(p,a) (p)->lpVtbl->SetDataFormat(p,a) -#define IDirectInputDevice7_SetEventNotification(p,a) (p)->lpVtbl->SetEventNotification(p,a) -#define IDirectInputDevice7_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b) -#define IDirectInputDevice7_GetObjectInfo(p,a,b,c) (p)->lpVtbl->GetObjectInfo(p,a,b,c) -#define IDirectInputDevice7_GetDeviceInfo(p,a) (p)->lpVtbl->GetDeviceInfo(p,a) -#define IDirectInputDevice7_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b) -#define IDirectInputDevice7_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c) -#define IDirectInputDevice7_CreateEffect(p,a,b,c,d) (p)->lpVtbl->CreateEffect(p,a,b,c,d) -#define IDirectInputDevice7_EnumEffects(p,a,b,c) (p)->lpVtbl->EnumEffects(p,a,b,c) -#define IDirectInputDevice7_GetEffectInfo(p,a,b) (p)->lpVtbl->GetEffectInfo(p,a,b) -#define IDirectInputDevice7_GetForceFeedbackState(p,a) (p)->lpVtbl->GetForceFeedbackState(p,a) -#define IDirectInputDevice7_SendForceFeedbackCommand(p,a) (p)->lpVtbl->SendForceFeedbackCommand(p,a) -#define IDirectInputDevice7_EnumCreatedEffectObjects(p,a,b,c) (p)->lpVtbl->EnumCreatedEffectObjects(p,a,b,c) -#define IDirectInputDevice7_Escape(p,a) (p)->lpVtbl->Escape(p,a) -#define IDirectInputDevice7_Poll(p) (p)->lpVtbl->Poll(p) -#define IDirectInputDevice7_SendDeviceData(p,a,b,c,d) (p)->lpVtbl->SendDeviceData(p,a,b,c,d) -#define IDirectInputDevice7_EnumEffectsInFile(p,a,b,c,d) (p)->lpVtbl->EnumEffectsInFile(p,a,b,c,d) -#define IDirectInputDevice7_WriteEffectToFile(p,a,b,c,d) (p)->lpVtbl->WriteEffectToFile(p,a,b,c,d) -#else -#define IDirectInputDevice7_QueryInterface(p,a,b) (p)->QueryInterface(a,b) -#define IDirectInputDevice7_AddRef(p) (p)->AddRef() -#define IDirectInputDevice7_Release(p) (p)->Release() -#define IDirectInputDevice7_GetCapabilities(p,a) (p)->GetCapabilities(a) -#define IDirectInputDevice7_EnumObjects(p,a,b,c) (p)->EnumObjects(a,b,c) -#define IDirectInputDevice7_GetProperty(p,a,b) (p)->GetProperty(a,b) -#define IDirectInputDevice7_SetProperty(p,a,b) (p)->SetProperty(a,b) -#define IDirectInputDevice7_Acquire(p) (p)->Acquire() -#define IDirectInputDevice7_Unacquire(p) (p)->Unacquire() -#define IDirectInputDevice7_GetDeviceState(p,a,b) (p)->GetDeviceState(a,b) -#define IDirectInputDevice7_GetDeviceData(p,a,b,c,d) (p)->GetDeviceData(a,b,c,d) -#define IDirectInputDevice7_SetDataFormat(p,a) (p)->SetDataFormat(a) -#define IDirectInputDevice7_SetEventNotification(p,a) (p)->SetEventNotification(a) -#define IDirectInputDevice7_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b) -#define IDirectInputDevice7_GetObjectInfo(p,a,b,c) (p)->GetObjectInfo(a,b,c) -#define IDirectInputDevice7_GetDeviceInfo(p,a) (p)->GetDeviceInfo(a) -#define IDirectInputDevice7_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b) -#define IDirectInputDevice7_Initialize(p,a,b,c) (p)->Initialize(a,b,c) -#define IDirectInputDevice7_CreateEffect(p,a,b,c,d) (p)->CreateEffect(a,b,c,d) -#define IDirectInputDevice7_EnumEffects(p,a,b,c) (p)->EnumEffects(a,b,c) -#define IDirectInputDevice7_GetEffectInfo(p,a,b) (p)->GetEffectInfo(a,b) -#define IDirectInputDevice7_GetForceFeedbackState(p,a) (p)->GetForceFeedbackState(a) -#define IDirectInputDevice7_SendForceFeedbackCommand(p,a) (p)->SendForceFeedbackCommand(a) -#define IDirectInputDevice7_EnumCreatedEffectObjects(p,a,b,c) (p)->EnumCreatedEffectObjects(a,b,c) -#define IDirectInputDevice7_Escape(p,a) (p)->Escape(a) -#define IDirectInputDevice7_Poll(p) (p)->Poll() -#define IDirectInputDevice7_SendDeviceData(p,a,b,c,d) (p)->SendDeviceData(a,b,c,d) -#define IDirectInputDevice7_EnumEffectsInFile(p,a,b,c,d) (p)->EnumEffectsInFile(a,b,c,d) -#define IDirectInputDevice7_WriteEffectToFile(p,a,b,c,d) (p)->WriteEffectToFile(a,b,c,d) -#endif - -#endif /* DIJ_RINGZERO */ - -#endif /* DIRECTINPUT_VERSION >= 0x0700 */ - -#if(DIRECTINPUT_VERSION >= 0x0800) - -#ifndef DIJ_RINGZERO - -#undef INTERFACE -#define INTERFACE IDirectInputDevice8W - -DECLARE_INTERFACE_(IDirectInputDevice8W, IUnknown) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - - /*** IDirectInputDevice8W methods ***/ - STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS) PURE; - STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKW,LPVOID,DWORD) PURE; - STDMETHOD(GetProperty)(THIS_ REFGUID,LPDIPROPHEADER) PURE; - STDMETHOD(SetProperty)(THIS_ REFGUID,LPCDIPROPHEADER) PURE; - STDMETHOD(Acquire)(THIS) PURE; - STDMETHOD(Unacquire)(THIS) PURE; - STDMETHOD(GetDeviceState)(THIS_ DWORD,LPVOID) PURE; - STDMETHOD(GetDeviceData)(THIS_ DWORD,LPDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE; - STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT) PURE; - STDMETHOD(SetEventNotification)(THIS_ HANDLE) PURE; - STDMETHOD(SetCooperativeLevel)(THIS_ HWND,DWORD) PURE; - STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEW,DWORD,DWORD) PURE; - STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEW) PURE; - STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE; - STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD,REFGUID) PURE; - STDMETHOD(CreateEffect)(THIS_ REFGUID,LPCDIEFFECT,LPDIRECTINPUTEFFECT *,LPUNKNOWN) PURE; - STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKW,LPVOID,DWORD) PURE; - STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOW,REFGUID) PURE; - STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD) PURE; - STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD) PURE; - STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK,LPVOID,DWORD) PURE; - STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE) PURE; - STDMETHOD(Poll)(THIS) PURE; - STDMETHOD(SendDeviceData)(THIS_ DWORD,LPCDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE; - STDMETHOD(EnumEffectsInFile)(THIS_ LPCWSTR,LPDIENUMEFFECTSINFILECALLBACK,LPVOID,DWORD) PURE; - STDMETHOD(WriteEffectToFile)(THIS_ LPCWSTR,DWORD,LPDIFILEEFFECT,DWORD) PURE; - STDMETHOD(BuildActionMap)(THIS_ LPDIACTIONFORMATW,LPCWSTR,DWORD) PURE; - STDMETHOD(SetActionMap)(THIS_ LPDIACTIONFORMATW,LPCWSTR,DWORD) PURE; - STDMETHOD(GetImageInfo)(THIS_ LPDIDEVICEIMAGEINFOHEADERW) PURE; -}; - -typedef struct IDirectInputDevice8W *LPDIRECTINPUTDEVICE8W; - -#undef INTERFACE -#define INTERFACE IDirectInputDevice8A - -DECLARE_INTERFACE_(IDirectInputDevice8A, IUnknown) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - - /*** IDirectInputDevice8A methods ***/ - STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS) PURE; - STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKA,LPVOID,DWORD) PURE; - STDMETHOD(GetProperty)(THIS_ REFGUID,LPDIPROPHEADER) PURE; - STDMETHOD(SetProperty)(THIS_ REFGUID,LPCDIPROPHEADER) PURE; - STDMETHOD(Acquire)(THIS) PURE; - STDMETHOD(Unacquire)(THIS) PURE; - STDMETHOD(GetDeviceState)(THIS_ DWORD,LPVOID) PURE; - STDMETHOD(GetDeviceData)(THIS_ DWORD,LPDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE; - STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT) PURE; - STDMETHOD(SetEventNotification)(THIS_ HANDLE) PURE; - STDMETHOD(SetCooperativeLevel)(THIS_ HWND,DWORD) PURE; - STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEA,DWORD,DWORD) PURE; - STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEA) PURE; - STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE; - STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD,REFGUID) PURE; - STDMETHOD(CreateEffect)(THIS_ REFGUID,LPCDIEFFECT,LPDIRECTINPUTEFFECT *,LPUNKNOWN) PURE; - STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKA,LPVOID,DWORD) PURE; - STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOA,REFGUID) PURE; - STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD) PURE; - STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD) PURE; - STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK,LPVOID,DWORD) PURE; - STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE) PURE; - STDMETHOD(Poll)(THIS) PURE; - STDMETHOD(SendDeviceData)(THIS_ DWORD,LPCDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE; - STDMETHOD(EnumEffectsInFile)(THIS_ LPCSTR,LPDIENUMEFFECTSINFILECALLBACK,LPVOID,DWORD) PURE; - STDMETHOD(WriteEffectToFile)(THIS_ LPCSTR,DWORD,LPDIFILEEFFECT,DWORD) PURE; - STDMETHOD(BuildActionMap)(THIS_ LPDIACTIONFORMATA,LPCSTR,DWORD) PURE; - STDMETHOD(SetActionMap)(THIS_ LPDIACTIONFORMATA,LPCSTR,DWORD) PURE; - STDMETHOD(GetImageInfo)(THIS_ LPDIDEVICEIMAGEINFOHEADERA) PURE; -}; - -typedef struct IDirectInputDevice8A *LPDIRECTINPUTDEVICE8A; - -#ifdef UNICODE -#define IID_IDirectInputDevice8 IID_IDirectInputDevice8W -#define IDirectInputDevice8 IDirectInputDevice8W -#define IDirectInputDevice8Vtbl IDirectInputDevice8WVtbl -#else -#define IID_IDirectInputDevice8 IID_IDirectInputDevice8A -#define IDirectInputDevice8 IDirectInputDevice8A -#define IDirectInputDevice8Vtbl IDirectInputDevice8AVtbl -#endif -typedef struct IDirectInputDevice8 *LPDIRECTINPUTDEVICE8; - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectInputDevice8_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IDirectInputDevice8_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDirectInputDevice8_Release(p) (p)->lpVtbl->Release(p) -#define IDirectInputDevice8_GetCapabilities(p,a) (p)->lpVtbl->GetCapabilities(p,a) -#define IDirectInputDevice8_EnumObjects(p,a,b,c) (p)->lpVtbl->EnumObjects(p,a,b,c) -#define IDirectInputDevice8_GetProperty(p,a,b) (p)->lpVtbl->GetProperty(p,a,b) -#define IDirectInputDevice8_SetProperty(p,a,b) (p)->lpVtbl->SetProperty(p,a,b) -#define IDirectInputDevice8_Acquire(p) (p)->lpVtbl->Acquire(p) -#define IDirectInputDevice8_Unacquire(p) (p)->lpVtbl->Unacquire(p) -#define IDirectInputDevice8_GetDeviceState(p,a,b) (p)->lpVtbl->GetDeviceState(p,a,b) -#define IDirectInputDevice8_GetDeviceData(p,a,b,c,d) (p)->lpVtbl->GetDeviceData(p,a,b,c,d) -#define IDirectInputDevice8_SetDataFormat(p,a) (p)->lpVtbl->SetDataFormat(p,a) -#define IDirectInputDevice8_SetEventNotification(p,a) (p)->lpVtbl->SetEventNotification(p,a) -#define IDirectInputDevice8_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b) -#define IDirectInputDevice8_GetObjectInfo(p,a,b,c) (p)->lpVtbl->GetObjectInfo(p,a,b,c) -#define IDirectInputDevice8_GetDeviceInfo(p,a) (p)->lpVtbl->GetDeviceInfo(p,a) -#define IDirectInputDevice8_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b) -#define IDirectInputDevice8_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c) -#define IDirectInputDevice8_CreateEffect(p,a,b,c,d) (p)->lpVtbl->CreateEffect(p,a,b,c,d) -#define IDirectInputDevice8_EnumEffects(p,a,b,c) (p)->lpVtbl->EnumEffects(p,a,b,c) -#define IDirectInputDevice8_GetEffectInfo(p,a,b) (p)->lpVtbl->GetEffectInfo(p,a,b) -#define IDirectInputDevice8_GetForceFeedbackState(p,a) (p)->lpVtbl->GetForceFeedbackState(p,a) -#define IDirectInputDevice8_SendForceFeedbackCommand(p,a) (p)->lpVtbl->SendForceFeedbackCommand(p,a) -#define IDirectInputDevice8_EnumCreatedEffectObjects(p,a,b,c) (p)->lpVtbl->EnumCreatedEffectObjects(p,a,b,c) -#define IDirectInputDevice8_Escape(p,a) (p)->lpVtbl->Escape(p,a) -#define IDirectInputDevice8_Poll(p) (p)->lpVtbl->Poll(p) -#define IDirectInputDevice8_SendDeviceData(p,a,b,c,d) (p)->lpVtbl->SendDeviceData(p,a,b,c,d) -#define IDirectInputDevice8_EnumEffectsInFile(p,a,b,c,d) (p)->lpVtbl->EnumEffectsInFile(p,a,b,c,d) -#define IDirectInputDevice8_WriteEffectToFile(p,a,b,c,d) (p)->lpVtbl->WriteEffectToFile(p,a,b,c,d) -#define IDirectInputDevice8_BuildActionMap(p,a,b,c) (p)->lpVtbl->BuildActionMap(p,a,b,c) -#define IDirectInputDevice8_SetActionMap(p,a,b,c) (p)->lpVtbl->SetActionMap(p,a,b,c) -#define IDirectInputDevice8_GetImageInfo(p,a) (p)->lpVtbl->GetImageInfo(p,a) -#else -#define IDirectInputDevice8_QueryInterface(p,a,b) (p)->QueryInterface(a,b) -#define IDirectInputDevice8_AddRef(p) (p)->AddRef() -#define IDirectInputDevice8_Release(p) (p)->Release() -#define IDirectInputDevice8_GetCapabilities(p,a) (p)->GetCapabilities(a) -#define IDirectInputDevice8_EnumObjects(p,a,b,c) (p)->EnumObjects(a,b,c) -#define IDirectInputDevice8_GetProperty(p,a,b) (p)->GetProperty(a,b) -#define IDirectInputDevice8_SetProperty(p,a,b) (p)->SetProperty(a,b) -#define IDirectInputDevice8_Acquire(p) (p)->Acquire() -#define IDirectInputDevice8_Unacquire(p) (p)->Unacquire() -#define IDirectInputDevice8_GetDeviceState(p,a,b) (p)->GetDeviceState(a,b) -#define IDirectInputDevice8_GetDeviceData(p,a,b,c,d) (p)->GetDeviceData(a,b,c,d) -#define IDirectInputDevice8_SetDataFormat(p,a) (p)->SetDataFormat(a) -#define IDirectInputDevice8_SetEventNotification(p,a) (p)->SetEventNotification(a) -#define IDirectInputDevice8_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b) -#define IDirectInputDevice8_GetObjectInfo(p,a,b,c) (p)->GetObjectInfo(a,b,c) -#define IDirectInputDevice8_GetDeviceInfo(p,a) (p)->GetDeviceInfo(a) -#define IDirectInputDevice8_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b) -#define IDirectInputDevice8_Initialize(p,a,b,c) (p)->Initialize(a,b,c) -#define IDirectInputDevice8_CreateEffect(p,a,b,c,d) (p)->CreateEffect(a,b,c,d) -#define IDirectInputDevice8_EnumEffects(p,a,b,c) (p)->EnumEffects(a,b,c) -#define IDirectInputDevice8_GetEffectInfo(p,a,b) (p)->GetEffectInfo(a,b) -#define IDirectInputDevice8_GetForceFeedbackState(p,a) (p)->GetForceFeedbackState(a) -#define IDirectInputDevice8_SendForceFeedbackCommand(p,a) (p)->SendForceFeedbackCommand(a) -#define IDirectInputDevice8_EnumCreatedEffectObjects(p,a,b,c) (p)->EnumCreatedEffectObjects(a,b,c) -#define IDirectInputDevice8_Escape(p,a) (p)->Escape(a) -#define IDirectInputDevice8_Poll(p) (p)->Poll() -#define IDirectInputDevice8_SendDeviceData(p,a,b,c,d) (p)->SendDeviceData(a,b,c,d) -#define IDirectInputDevice8_EnumEffectsInFile(p,a,b,c,d) (p)->EnumEffectsInFile(a,b,c,d) -#define IDirectInputDevice8_WriteEffectToFile(p,a,b,c,d) (p)->WriteEffectToFile(a,b,c,d) -#define IDirectInputDevice8_BuildActionMap(p,a,b,c) (p)->BuildActionMap(a,b,c) -#define IDirectInputDevice8_SetActionMap(p,a,b,c) (p)->SetActionMap(a,b,c) -#define IDirectInputDevice8_GetImageInfo(p,a) (p)->GetImageInfo(a) -#endif - -#endif /* DIJ_RINGZERO */ - -#endif /* DIRECTINPUT_VERSION >= 0x0800 */ - -/**************************************************************************** - * - * Mouse - * - ****************************************************************************/ - -#ifndef DIJ_RINGZERO - -typedef struct _DIMOUSESTATE { - LONG lX; - LONG lY; - LONG lZ; - BYTE rgbButtons[4]; -} DIMOUSESTATE, *LPDIMOUSESTATE; - -#if DIRECTINPUT_VERSION >= 0x0700 -typedef struct _DIMOUSESTATE2 { - LONG lX; - LONG lY; - LONG lZ; - BYTE rgbButtons[8]; -} DIMOUSESTATE2, *LPDIMOUSESTATE2; -#endif - - -#define DIMOFS_X FIELD_OFFSET(DIMOUSESTATE, lX) -#define DIMOFS_Y FIELD_OFFSET(DIMOUSESTATE, lY) -#define DIMOFS_Z FIELD_OFFSET(DIMOUSESTATE, lZ) -#define DIMOFS_BUTTON0 (FIELD_OFFSET(DIMOUSESTATE, rgbButtons) + 0) -#define DIMOFS_BUTTON1 (FIELD_OFFSET(DIMOUSESTATE, rgbButtons) + 1) -#define DIMOFS_BUTTON2 (FIELD_OFFSET(DIMOUSESTATE, rgbButtons) + 2) -#define DIMOFS_BUTTON3 (FIELD_OFFSET(DIMOUSESTATE, rgbButtons) + 3) -#if (DIRECTINPUT_VERSION >= 0x0700) -#define DIMOFS_BUTTON4 (FIELD_OFFSET(DIMOUSESTATE2, rgbButtons) + 4) -#define DIMOFS_BUTTON5 (FIELD_OFFSET(DIMOUSESTATE2, rgbButtons) + 5) -#define DIMOFS_BUTTON6 (FIELD_OFFSET(DIMOUSESTATE2, rgbButtons) + 6) -#define DIMOFS_BUTTON7 (FIELD_OFFSET(DIMOUSESTATE2, rgbButtons) + 7) -#endif -#endif /* DIJ_RINGZERO */ - -/**************************************************************************** - * - * Keyboard - * - ****************************************************************************/ - -#ifndef DIJ_RINGZERO - -/**************************************************************************** - * - * DirectInput keyboard scan codes - * - ****************************************************************************/ -#define DIK_ESCAPE 0x01 -#define DIK_1 0x02 -#define DIK_2 0x03 -#define DIK_3 0x04 -#define DIK_4 0x05 -#define DIK_5 0x06 -#define DIK_6 0x07 -#define DIK_7 0x08 -#define DIK_8 0x09 -#define DIK_9 0x0A -#define DIK_0 0x0B -#define DIK_MINUS 0x0C /* - on main keyboard */ -#define DIK_EQUALS 0x0D -#define DIK_BACK 0x0E /* backspace */ -#define DIK_TAB 0x0F -#define DIK_Q 0x10 -#define DIK_W 0x11 -#define DIK_E 0x12 -#define DIK_R 0x13 -#define DIK_T 0x14 -#define DIK_Y 0x15 -#define DIK_U 0x16 -#define DIK_I 0x17 -#define DIK_O 0x18 -#define DIK_P 0x19 -#define DIK_LBRACKET 0x1A -#define DIK_RBRACKET 0x1B -#define DIK_RETURN 0x1C /* Enter on main keyboard */ -#define DIK_LCONTROL 0x1D -#define DIK_A 0x1E -#define DIK_S 0x1F -#define DIK_D 0x20 -#define DIK_F 0x21 -#define DIK_G 0x22 -#define DIK_H 0x23 -#define DIK_J 0x24 -#define DIK_K 0x25 -#define DIK_L 0x26 -#define DIK_SEMICOLON 0x27 -#define DIK_APOSTROPHE 0x28 -#define DIK_GRAVE 0x29 /* accent grave */ -#define DIK_LSHIFT 0x2A -#define DIK_BACKSLASH 0x2B -#define DIK_Z 0x2C -#define DIK_X 0x2D -#define DIK_C 0x2E -#define DIK_V 0x2F -#define DIK_B 0x30 -#define DIK_N 0x31 -#define DIK_M 0x32 -#define DIK_COMMA 0x33 -#define DIK_PERIOD 0x34 /* . on main keyboard */ -#define DIK_SLASH 0x35 /* / on main keyboard */ -#define DIK_RSHIFT 0x36 -#define DIK_MULTIPLY 0x37 /* * on numeric keypad */ -#define DIK_LMENU 0x38 /* left Alt */ -#define DIK_SPACE 0x39 -#define DIK_CAPITAL 0x3A -#define DIK_F1 0x3B -#define DIK_F2 0x3C -#define DIK_F3 0x3D -#define DIK_F4 0x3E -#define DIK_F5 0x3F -#define DIK_F6 0x40 -#define DIK_F7 0x41 -#define DIK_F8 0x42 -#define DIK_F9 0x43 -#define DIK_F10 0x44 -#define DIK_NUMLOCK 0x45 -#define DIK_SCROLL 0x46 /* Scroll Lock */ -#define DIK_NUMPAD7 0x47 -#define DIK_NUMPAD8 0x48 -#define DIK_NUMPAD9 0x49 -#define DIK_SUBTRACT 0x4A /* - on numeric keypad */ -#define DIK_NUMPAD4 0x4B -#define DIK_NUMPAD5 0x4C -#define DIK_NUMPAD6 0x4D -#define DIK_ADD 0x4E /* + on numeric keypad */ -#define DIK_NUMPAD1 0x4F -#define DIK_NUMPAD2 0x50 -#define DIK_NUMPAD3 0x51 -#define DIK_NUMPAD0 0x52 -#define DIK_DECIMAL 0x53 /* . on numeric keypad */ -#define DIK_OEM_102 0x56 /* <> or \| on RT 102-key keyboard (Non-U.S.) */ -#define DIK_F11 0x57 -#define DIK_F12 0x58 -#define DIK_F13 0x64 /* (NEC PC98) */ -#define DIK_F14 0x65 /* (NEC PC98) */ -#define DIK_F15 0x66 /* (NEC PC98) */ -#define DIK_KANA 0x70 /* (Japanese keyboard) */ -#define DIK_ABNT_C1 0x73 /* /? on Brazilian keyboard */ -#define DIK_CONVERT 0x79 /* (Japanese keyboard) */ -#define DIK_NOCONVERT 0x7B /* (Japanese keyboard) */ -#define DIK_YEN 0x7D /* (Japanese keyboard) */ -#define DIK_ABNT_C2 0x7E /* Numpad . on Brazilian keyboard */ -#define DIK_NUMPADEQUALS 0x8D /* = on numeric keypad (NEC PC98) */ -#define DIK_PREVTRACK 0x90 /* Previous Track (DIK_CIRCUMFLEX on Japanese keyboard) */ -#define DIK_AT 0x91 /* (NEC PC98) */ -#define DIK_COLON 0x92 /* (NEC PC98) */ -#define DIK_UNDERLINE 0x93 /* (NEC PC98) */ -#define DIK_KANJI 0x94 /* (Japanese keyboard) */ -#define DIK_STOP 0x95 /* (NEC PC98) */ -#define DIK_AX 0x96 /* (Japan AX) */ -#define DIK_UNLABELED 0x97 /* (J3100) */ -#define DIK_NEXTTRACK 0x99 /* Next Track */ -#define DIK_NUMPADENTER 0x9C /* Enter on numeric keypad */ -#define DIK_RCONTROL 0x9D -#define DIK_MUTE 0xA0 /* Mute */ -#define DIK_CALCULATOR 0xA1 /* Calculator */ -#define DIK_PLAYPAUSE 0xA2 /* Play / Pause */ -#define DIK_MEDIASTOP 0xA4 /* Media Stop */ -#define DIK_VOLUMEDOWN 0xAE /* Volume - */ -#define DIK_VOLUMEUP 0xB0 /* Volume + */ -#define DIK_WEBHOME 0xB2 /* Web home */ -#define DIK_NUMPADCOMMA 0xB3 /* , on numeric keypad (NEC PC98) */ -#define DIK_DIVIDE 0xB5 /* / on numeric keypad */ -#define DIK_SYSRQ 0xB7 -#define DIK_RMENU 0xB8 /* right Alt */ -#define DIK_PAUSE 0xC5 /* Pause */ -#define DIK_HOME 0xC7 /* Home on arrow keypad */ -#define DIK_UP 0xC8 /* UpArrow on arrow keypad */ -#define DIK_PRIOR 0xC9 /* PgUp on arrow keypad */ -#define DIK_LEFT 0xCB /* LeftArrow on arrow keypad */ -#define DIK_RIGHT 0xCD /* RightArrow on arrow keypad */ -#define DIK_END 0xCF /* End on arrow keypad */ -#define DIK_DOWN 0xD0 /* DownArrow on arrow keypad */ -#define DIK_NEXT 0xD1 /* PgDn on arrow keypad */ -#define DIK_INSERT 0xD2 /* Insert on arrow keypad */ -#define DIK_DELETE 0xD3 /* Delete on arrow keypad */ -#define DIK_LWIN 0xDB /* Left Windows key */ -#define DIK_RWIN 0xDC /* Right Windows key */ -#define DIK_APPS 0xDD /* AppMenu key */ -#define DIK_POWER 0xDE /* System Power */ -#define DIK_SLEEP 0xDF /* System Sleep */ -#define DIK_WAKE 0xE3 /* System Wake */ -#define DIK_WEBSEARCH 0xE5 /* Web Search */ -#define DIK_WEBFAVORITES 0xE6 /* Web Favorites */ -#define DIK_WEBREFRESH 0xE7 /* Web Refresh */ -#define DIK_WEBSTOP 0xE8 /* Web Stop */ -#define DIK_WEBFORWARD 0xE9 /* Web Forward */ -#define DIK_WEBBACK 0xEA /* Web Back */ -#define DIK_MYCOMPUTER 0xEB /* My Computer */ -#define DIK_MAIL 0xEC /* Mail */ -#define DIK_MEDIASELECT 0xED /* Media Select */ - -/* - * Alternate names for keys, to facilitate transition from DOS. - */ -#define DIK_BACKSPACE DIK_BACK /* backspace */ -#define DIK_NUMPADSTAR DIK_MULTIPLY /* * on numeric keypad */ -#define DIK_LALT DIK_LMENU /* left Alt */ -#define DIK_CAPSLOCK DIK_CAPITAL /* CapsLock */ -#define DIK_NUMPADMINUS DIK_SUBTRACT /* - on numeric keypad */ -#define DIK_NUMPADPLUS DIK_ADD /* + on numeric keypad */ -#define DIK_NUMPADPERIOD DIK_DECIMAL /* . on numeric keypad */ -#define DIK_NUMPADSLASH DIK_DIVIDE /* / on numeric keypad */ -#define DIK_RALT DIK_RMENU /* right Alt */ -#define DIK_UPARROW DIK_UP /* UpArrow on arrow keypad */ -#define DIK_PGUP DIK_PRIOR /* PgUp on arrow keypad */ -#define DIK_LEFTARROW DIK_LEFT /* LeftArrow on arrow keypad */ -#define DIK_RIGHTARROW DIK_RIGHT /* RightArrow on arrow keypad */ -#define DIK_DOWNARROW DIK_DOWN /* DownArrow on arrow keypad */ -#define DIK_PGDN DIK_NEXT /* PgDn on arrow keypad */ - -/* - * Alternate names for keys originally not used on US keyboards. - */ -#define DIK_CIRCUMFLEX DIK_PREVTRACK /* Japanese keyboard */ - -#endif /* DIJ_RINGZERO */ - -/**************************************************************************** - * - * Joystick - * - ****************************************************************************/ - -#ifndef DIJ_RINGZERO - -typedef struct DIJOYSTATE { - LONG lX; /* x-axis position */ - LONG lY; /* y-axis position */ - LONG lZ; /* z-axis position */ - LONG lRx; /* x-axis rotation */ - LONG lRy; /* y-axis rotation */ - LONG lRz; /* z-axis rotation */ - LONG rglSlider[2]; /* extra axes positions */ - DWORD rgdwPOV[4]; /* POV directions */ - BYTE rgbButtons[32]; /* 32 buttons */ -} DIJOYSTATE, *LPDIJOYSTATE; - -typedef struct DIJOYSTATE2 { - LONG lX; /* x-axis position */ - LONG lY; /* y-axis position */ - LONG lZ; /* z-axis position */ - LONG lRx; /* x-axis rotation */ - LONG lRy; /* y-axis rotation */ - LONG lRz; /* z-axis rotation */ - LONG rglSlider[2]; /* extra axes positions */ - DWORD rgdwPOV[4]; /* POV directions */ - BYTE rgbButtons[128]; /* 128 buttons */ - LONG lVX; /* x-axis velocity */ - LONG lVY; /* y-axis velocity */ - LONG lVZ; /* z-axis velocity */ - LONG lVRx; /* x-axis angular velocity */ - LONG lVRy; /* y-axis angular velocity */ - LONG lVRz; /* z-axis angular velocity */ - LONG rglVSlider[2]; /* extra axes velocities */ - LONG lAX; /* x-axis acceleration */ - LONG lAY; /* y-axis acceleration */ - LONG lAZ; /* z-axis acceleration */ - LONG lARx; /* x-axis angular acceleration */ - LONG lARy; /* y-axis angular acceleration */ - LONG lARz; /* z-axis angular acceleration */ - LONG rglASlider[2]; /* extra axes accelerations */ - LONG lFX; /* x-axis force */ - LONG lFY; /* y-axis force */ - LONG lFZ; /* z-axis force */ - LONG lFRx; /* x-axis torque */ - LONG lFRy; /* y-axis torque */ - LONG lFRz; /* z-axis torque */ - LONG rglFSlider[2]; /* extra axes forces */ -} DIJOYSTATE2, *LPDIJOYSTATE2; - -#define DIJOFS_X FIELD_OFFSET(DIJOYSTATE, lX) -#define DIJOFS_Y FIELD_OFFSET(DIJOYSTATE, lY) -#define DIJOFS_Z FIELD_OFFSET(DIJOYSTATE, lZ) -#define DIJOFS_RX FIELD_OFFSET(DIJOYSTATE, lRx) -#define DIJOFS_RY FIELD_OFFSET(DIJOYSTATE, lRy) -#define DIJOFS_RZ FIELD_OFFSET(DIJOYSTATE, lRz) -#define DIJOFS_SLIDER(n) (FIELD_OFFSET(DIJOYSTATE, rglSlider) + \ - (n) * sizeof(LONG)) -#define DIJOFS_POV(n) (FIELD_OFFSET(DIJOYSTATE, rgdwPOV) + \ - (n) * sizeof(DWORD)) -#define DIJOFS_BUTTON(n) (FIELD_OFFSET(DIJOYSTATE, rgbButtons) + (n)) -#define DIJOFS_BUTTON0 DIJOFS_BUTTON(0) -#define DIJOFS_BUTTON1 DIJOFS_BUTTON(1) -#define DIJOFS_BUTTON2 DIJOFS_BUTTON(2) -#define DIJOFS_BUTTON3 DIJOFS_BUTTON(3) -#define DIJOFS_BUTTON4 DIJOFS_BUTTON(4) -#define DIJOFS_BUTTON5 DIJOFS_BUTTON(5) -#define DIJOFS_BUTTON6 DIJOFS_BUTTON(6) -#define DIJOFS_BUTTON7 DIJOFS_BUTTON(7) -#define DIJOFS_BUTTON8 DIJOFS_BUTTON(8) -#define DIJOFS_BUTTON9 DIJOFS_BUTTON(9) -#define DIJOFS_BUTTON10 DIJOFS_BUTTON(10) -#define DIJOFS_BUTTON11 DIJOFS_BUTTON(11) -#define DIJOFS_BUTTON12 DIJOFS_BUTTON(12) -#define DIJOFS_BUTTON13 DIJOFS_BUTTON(13) -#define DIJOFS_BUTTON14 DIJOFS_BUTTON(14) -#define DIJOFS_BUTTON15 DIJOFS_BUTTON(15) -#define DIJOFS_BUTTON16 DIJOFS_BUTTON(16) -#define DIJOFS_BUTTON17 DIJOFS_BUTTON(17) -#define DIJOFS_BUTTON18 DIJOFS_BUTTON(18) -#define DIJOFS_BUTTON19 DIJOFS_BUTTON(19) -#define DIJOFS_BUTTON20 DIJOFS_BUTTON(20) -#define DIJOFS_BUTTON21 DIJOFS_BUTTON(21) -#define DIJOFS_BUTTON22 DIJOFS_BUTTON(22) -#define DIJOFS_BUTTON23 DIJOFS_BUTTON(23) -#define DIJOFS_BUTTON24 DIJOFS_BUTTON(24) -#define DIJOFS_BUTTON25 DIJOFS_BUTTON(25) -#define DIJOFS_BUTTON26 DIJOFS_BUTTON(26) -#define DIJOFS_BUTTON27 DIJOFS_BUTTON(27) -#define DIJOFS_BUTTON28 DIJOFS_BUTTON(28) -#define DIJOFS_BUTTON29 DIJOFS_BUTTON(29) -#define DIJOFS_BUTTON30 DIJOFS_BUTTON(30) -#define DIJOFS_BUTTON31 DIJOFS_BUTTON(31) - - -#endif /* DIJ_RINGZERO */ - -/**************************************************************************** - * - * IDirectInput - * - ****************************************************************************/ - -#ifndef DIJ_RINGZERO - -#define DIENUM_STOP 0 -#define DIENUM_CONTINUE 1 - -typedef BOOL (FAR PASCAL * LPDIENUMDEVICESCALLBACKA)(LPCDIDEVICEINSTANCEA, LPVOID); -typedef BOOL (FAR PASCAL * LPDIENUMDEVICESCALLBACKW)(LPCDIDEVICEINSTANCEW, LPVOID); -#ifdef UNICODE -#define LPDIENUMDEVICESCALLBACK LPDIENUMDEVICESCALLBACKW -#else -#define LPDIENUMDEVICESCALLBACK LPDIENUMDEVICESCALLBACKA -#endif // !UNICODE -typedef BOOL (FAR PASCAL * LPDICONFIGUREDEVICESCALLBACK)(IUnknown FAR *, LPVOID); - -#define DIEDFL_ALLDEVICES 0x00000000 -#define DIEDFL_ATTACHEDONLY 0x00000001 -#if(DIRECTINPUT_VERSION >= 0x0500) -#define DIEDFL_FORCEFEEDBACK 0x00000100 -#endif /* DIRECTINPUT_VERSION >= 0x0500 */ -#if(DIRECTINPUT_VERSION >= 0x050a) -#define DIEDFL_INCLUDEALIASES 0x00010000 -#define DIEDFL_INCLUDEPHANTOMS 0x00020000 -#endif /* DIRECTINPUT_VERSION >= 0x050a */ -#if(DIRECTINPUT_VERSION >= 0x0800) -#define DIEDFL_INCLUDEHIDDEN 0x00040000 -#endif /* DIRECTINPUT_VERSION >= 0x0800 */ - - -#if(DIRECTINPUT_VERSION >= 0x0800) -typedef BOOL (FAR PASCAL * LPDIENUMDEVICESBYSEMANTICSCBA)(LPCDIDEVICEINSTANCEA, LPDIRECTINPUTDEVICE8A, DWORD, DWORD, LPVOID); -typedef BOOL (FAR PASCAL * LPDIENUMDEVICESBYSEMANTICSCBW)(LPCDIDEVICEINSTANCEW, LPDIRECTINPUTDEVICE8W, DWORD, DWORD, LPVOID); -#ifdef UNICODE -#define LPDIENUMDEVICESBYSEMANTICSCB LPDIENUMDEVICESBYSEMANTICSCBW -#else -#define LPDIENUMDEVICESBYSEMANTICSCB LPDIENUMDEVICESBYSEMANTICSCBA -#endif // !UNICODE -#endif /* DIRECTINPUT_VERSION >= 0x0800 */ - -#if(DIRECTINPUT_VERSION >= 0x0800) -#define DIEDBS_MAPPEDPRI1 0x00000001 -#define DIEDBS_MAPPEDPRI2 0x00000002 -#define DIEDBS_RECENTDEVICE 0x00000010 -#define DIEDBS_NEWDEVICE 0x00000020 -#endif /* DIRECTINPUT_VERSION >= 0x0800 */ - -#if(DIRECTINPUT_VERSION >= 0x0800) -#define DIEDBSFL_ATTACHEDONLY 0x00000000 -#define DIEDBSFL_THISUSER 0x00000010 -#define DIEDBSFL_FORCEFEEDBACK DIEDFL_FORCEFEEDBACK -#define DIEDBSFL_AVAILABLEDEVICES 0x00001000 -#define DIEDBSFL_MULTIMICEKEYBOARDS 0x00002000 -#define DIEDBSFL_NONGAMINGDEVICES 0x00004000 -#define DIEDBSFL_VALID 0x00007110 -#endif /* DIRECTINPUT_VERSION >= 0x0800 */ - -#undef INTERFACE -#define INTERFACE IDirectInputW - -DECLARE_INTERFACE_(IDirectInputW, IUnknown) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - - /*** IDirectInputW methods ***/ - STDMETHOD(CreateDevice)(THIS_ REFGUID,LPDIRECTINPUTDEVICEW *,LPUNKNOWN) PURE; - STDMETHOD(EnumDevices)(THIS_ DWORD,LPDIENUMDEVICESCALLBACKW,LPVOID,DWORD) PURE; - STDMETHOD(GetDeviceStatus)(THIS_ REFGUID) PURE; - STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE; - STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD) PURE; -}; - -typedef struct IDirectInputW *LPDIRECTINPUTW; - -#undef INTERFACE -#define INTERFACE IDirectInputA - -DECLARE_INTERFACE_(IDirectInputA, IUnknown) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - - /*** IDirectInputA methods ***/ - STDMETHOD(CreateDevice)(THIS_ REFGUID,LPDIRECTINPUTDEVICEA *,LPUNKNOWN) PURE; - STDMETHOD(EnumDevices)(THIS_ DWORD,LPDIENUMDEVICESCALLBACKA,LPVOID,DWORD) PURE; - STDMETHOD(GetDeviceStatus)(THIS_ REFGUID) PURE; - STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE; - STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD) PURE; -}; - -typedef struct IDirectInputA *LPDIRECTINPUTA; - -#ifdef UNICODE -#define IID_IDirectInput IID_IDirectInputW -#define IDirectInput IDirectInputW -#define IDirectInputVtbl IDirectInputWVtbl -#else -#define IID_IDirectInput IID_IDirectInputA -#define IDirectInput IDirectInputA -#define IDirectInputVtbl IDirectInputAVtbl -#endif -typedef struct IDirectInput *LPDIRECTINPUT; - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectInput_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IDirectInput_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDirectInput_Release(p) (p)->lpVtbl->Release(p) -#define IDirectInput_CreateDevice(p,a,b,c) (p)->lpVtbl->CreateDevice(p,a,b,c) -#define IDirectInput_EnumDevices(p,a,b,c,d) (p)->lpVtbl->EnumDevices(p,a,b,c,d) -#define IDirectInput_GetDeviceStatus(p,a) (p)->lpVtbl->GetDeviceStatus(p,a) -#define IDirectInput_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b) -#define IDirectInput_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b) -#else -#define IDirectInput_QueryInterface(p,a,b) (p)->QueryInterface(a,b) -#define IDirectInput_AddRef(p) (p)->AddRef() -#define IDirectInput_Release(p) (p)->Release() -#define IDirectInput_CreateDevice(p,a,b,c) (p)->CreateDevice(a,b,c) -#define IDirectInput_EnumDevices(p,a,b,c,d) (p)->EnumDevices(a,b,c,d) -#define IDirectInput_GetDeviceStatus(p,a) (p)->GetDeviceStatus(a) -#define IDirectInput_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b) -#define IDirectInput_Initialize(p,a,b) (p)->Initialize(a,b) -#endif - -#undef INTERFACE -#define INTERFACE IDirectInput2W - -DECLARE_INTERFACE_(IDirectInput2W, IDirectInputW) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - - /*** IDirectInputW methods ***/ - STDMETHOD(CreateDevice)(THIS_ REFGUID,LPDIRECTINPUTDEVICEW *,LPUNKNOWN) PURE; - STDMETHOD(EnumDevices)(THIS_ DWORD,LPDIENUMDEVICESCALLBACKW,LPVOID,DWORD) PURE; - STDMETHOD(GetDeviceStatus)(THIS_ REFGUID) PURE; - STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE; - STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD) PURE; - - /*** IDirectInput2W methods ***/ - STDMETHOD(FindDevice)(THIS_ REFGUID,LPCWSTR,LPGUID) PURE; -}; - -typedef struct IDirectInput2W *LPDIRECTINPUT2W; - -#undef INTERFACE -#define INTERFACE IDirectInput2A - -DECLARE_INTERFACE_(IDirectInput2A, IDirectInputA) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - - /*** IDirectInputA methods ***/ - STDMETHOD(CreateDevice)(THIS_ REFGUID,LPDIRECTINPUTDEVICEA *,LPUNKNOWN) PURE; - STDMETHOD(EnumDevices)(THIS_ DWORD,LPDIENUMDEVICESCALLBACKA,LPVOID,DWORD) PURE; - STDMETHOD(GetDeviceStatus)(THIS_ REFGUID) PURE; - STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE; - STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD) PURE; - - /*** IDirectInput2A methods ***/ - STDMETHOD(FindDevice)(THIS_ REFGUID,LPCSTR,LPGUID) PURE; -}; - -typedef struct IDirectInput2A *LPDIRECTINPUT2A; - -#ifdef UNICODE -#define IID_IDirectInput2 IID_IDirectInput2W -#define IDirectInput2 IDirectInput2W -#define IDirectInput2Vtbl IDirectInput2WVtbl -#else -#define IID_IDirectInput2 IID_IDirectInput2A -#define IDirectInput2 IDirectInput2A -#define IDirectInput2Vtbl IDirectInput2AVtbl -#endif -typedef struct IDirectInput2 *LPDIRECTINPUT2; - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectInput2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IDirectInput2_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDirectInput2_Release(p) (p)->lpVtbl->Release(p) -#define IDirectInput2_CreateDevice(p,a,b,c) (p)->lpVtbl->CreateDevice(p,a,b,c) -#define IDirectInput2_EnumDevices(p,a,b,c,d) (p)->lpVtbl->EnumDevices(p,a,b,c,d) -#define IDirectInput2_GetDeviceStatus(p,a) (p)->lpVtbl->GetDeviceStatus(p,a) -#define IDirectInput2_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b) -#define IDirectInput2_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b) -#define IDirectInput2_FindDevice(p,a,b,c) (p)->lpVtbl->FindDevice(p,a,b,c) -#else -#define IDirectInput2_QueryInterface(p,a,b) (p)->QueryInterface(a,b) -#define IDirectInput2_AddRef(p) (p)->AddRef() -#define IDirectInput2_Release(p) (p)->Release() -#define IDirectInput2_CreateDevice(p,a,b,c) (p)->CreateDevice(a,b,c) -#define IDirectInput2_EnumDevices(p,a,b,c,d) (p)->EnumDevices(a,b,c,d) -#define IDirectInput2_GetDeviceStatus(p,a) (p)->GetDeviceStatus(a) -#define IDirectInput2_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b) -#define IDirectInput2_Initialize(p,a,b) (p)->Initialize(a,b) -#define IDirectInput2_FindDevice(p,a,b,c) (p)->FindDevice(a,b,c) -#endif - - -#undef INTERFACE -#define INTERFACE IDirectInput7W - -DECLARE_INTERFACE_(IDirectInput7W, IDirectInput2W) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - - /*** IDirectInput2W methods ***/ - STDMETHOD(CreateDevice)(THIS_ REFGUID,LPDIRECTINPUTDEVICEW *,LPUNKNOWN) PURE; - STDMETHOD(EnumDevices)(THIS_ DWORD,LPDIENUMDEVICESCALLBACKW,LPVOID,DWORD) PURE; - STDMETHOD(GetDeviceStatus)(THIS_ REFGUID) PURE; - STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE; - STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD) PURE; - STDMETHOD(FindDevice)(THIS_ REFGUID,LPCWSTR,LPGUID) PURE; - - /*** IDirectInput7W methods ***/ - STDMETHOD(CreateDeviceEx)(THIS_ REFGUID,REFIID,LPVOID *,LPUNKNOWN) PURE; -}; - -typedef struct IDirectInput7W *LPDIRECTINPUT7W; - -#undef INTERFACE -#define INTERFACE IDirectInput7A - -DECLARE_INTERFACE_(IDirectInput7A, IDirectInput2A) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - - /*** IDirectInput2A methods ***/ - STDMETHOD(CreateDevice)(THIS_ REFGUID,LPDIRECTINPUTDEVICEA *,LPUNKNOWN) PURE; - STDMETHOD(EnumDevices)(THIS_ DWORD,LPDIENUMDEVICESCALLBACKA,LPVOID,DWORD) PURE; - STDMETHOD(GetDeviceStatus)(THIS_ REFGUID) PURE; - STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE; - STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD) PURE; - STDMETHOD(FindDevice)(THIS_ REFGUID,LPCSTR,LPGUID) PURE; - - /*** IDirectInput7A methods ***/ - STDMETHOD(CreateDeviceEx)(THIS_ REFGUID,REFIID,LPVOID *,LPUNKNOWN) PURE; -}; - -typedef struct IDirectInput7A *LPDIRECTINPUT7A; - -#ifdef UNICODE -#define IID_IDirectInput7 IID_IDirectInput7W -#define IDirectInput7 IDirectInput7W -#define IDirectInput7Vtbl IDirectInput7WVtbl -#else -#define IID_IDirectInput7 IID_IDirectInput7A -#define IDirectInput7 IDirectInput7A -#define IDirectInput7Vtbl IDirectInput7AVtbl -#endif -typedef struct IDirectInput7 *LPDIRECTINPUT7; - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectInput7_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IDirectInput7_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDirectInput7_Release(p) (p)->lpVtbl->Release(p) -#define IDirectInput7_CreateDevice(p,a,b,c) (p)->lpVtbl->CreateDevice(p,a,b,c) -#define IDirectInput7_EnumDevices(p,a,b,c,d) (p)->lpVtbl->EnumDevices(p,a,b,c,d) -#define IDirectInput7_GetDeviceStatus(p,a) (p)->lpVtbl->GetDeviceStatus(p,a) -#define IDirectInput7_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b) -#define IDirectInput7_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b) -#define IDirectInput7_FindDevice(p,a,b,c) (p)->lpVtbl->FindDevice(p,a,b,c) -#define IDirectInput7_CreateDeviceEx(p,a,b,c,d) (p)->lpVtbl->CreateDeviceEx(p,a,b,c,d) -#else -#define IDirectInput7_QueryInterface(p,a,b) (p)->QueryInterface(a,b) -#define IDirectInput7_AddRef(p) (p)->AddRef() -#define IDirectInput7_Release(p) (p)->Release() -#define IDirectInput7_CreateDevice(p,a,b,c) (p)->CreateDevice(a,b,c) -#define IDirectInput7_EnumDevices(p,a,b,c,d) (p)->EnumDevices(a,b,c,d) -#define IDirectInput7_GetDeviceStatus(p,a) (p)->GetDeviceStatus(a) -#define IDirectInput7_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b) -#define IDirectInput7_Initialize(p,a,b) (p)->Initialize(a,b) -#define IDirectInput7_FindDevice(p,a,b,c) (p)->FindDevice(a,b,c) -#define IDirectInput7_CreateDeviceEx(p,a,b,c,d) (p)->CreateDeviceEx(a,b,c,d) -#endif - -#if(DIRECTINPUT_VERSION >= 0x0800) -#undef INTERFACE -#define INTERFACE IDirectInput8W - -DECLARE_INTERFACE_(IDirectInput8W, IUnknown) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - - /*** IDirectInput8W methods ***/ - STDMETHOD(CreateDevice)(THIS_ REFGUID,LPDIRECTINPUTDEVICE8W *,LPUNKNOWN) PURE; - STDMETHOD(EnumDevices)(THIS_ DWORD,LPDIENUMDEVICESCALLBACKW,LPVOID,DWORD) PURE; - STDMETHOD(GetDeviceStatus)(THIS_ REFGUID) PURE; - STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE; - STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD) PURE; - STDMETHOD(FindDevice)(THIS_ REFGUID,LPCWSTR,LPGUID) PURE; - STDMETHOD(EnumDevicesBySemantics)(THIS_ LPCWSTR,LPDIACTIONFORMATW,LPDIENUMDEVICESBYSEMANTICSCBW,LPVOID,DWORD) PURE; - STDMETHOD(ConfigureDevices)(THIS_ LPDICONFIGUREDEVICESCALLBACK,LPDICONFIGUREDEVICESPARAMSW,DWORD,LPVOID) PURE; -}; - -typedef struct IDirectInput8W *LPDIRECTINPUT8W; - -#undef INTERFACE -#define INTERFACE IDirectInput8A - -DECLARE_INTERFACE_(IDirectInput8A, IUnknown) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - - /*** IDirectInput8A methods ***/ - STDMETHOD(CreateDevice)(THIS_ REFGUID,LPDIRECTINPUTDEVICE8A *,LPUNKNOWN) PURE; - STDMETHOD(EnumDevices)(THIS_ DWORD,LPDIENUMDEVICESCALLBACKA,LPVOID,DWORD) PURE; - STDMETHOD(GetDeviceStatus)(THIS_ REFGUID) PURE; - STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE; - STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD) PURE; - STDMETHOD(FindDevice)(THIS_ REFGUID,LPCSTR,LPGUID) PURE; - STDMETHOD(EnumDevicesBySemantics)(THIS_ LPCSTR,LPDIACTIONFORMATA,LPDIENUMDEVICESBYSEMANTICSCBA,LPVOID,DWORD) PURE; - STDMETHOD(ConfigureDevices)(THIS_ LPDICONFIGUREDEVICESCALLBACK,LPDICONFIGUREDEVICESPARAMSA,DWORD,LPVOID) PURE; -}; - -typedef struct IDirectInput8A *LPDIRECTINPUT8A; - -#ifdef UNICODE -#define IID_IDirectInput8 IID_IDirectInput8W -#define IDirectInput8 IDirectInput8W -#define IDirectInput8Vtbl IDirectInput8WVtbl -#else -#define IID_IDirectInput8 IID_IDirectInput8A -#define IDirectInput8 IDirectInput8A -#define IDirectInput8Vtbl IDirectInput8AVtbl -#endif -typedef struct IDirectInput8 *LPDIRECTINPUT8; - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectInput8_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IDirectInput8_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDirectInput8_Release(p) (p)->lpVtbl->Release(p) -#define IDirectInput8_CreateDevice(p,a,b,c) (p)->lpVtbl->CreateDevice(p,a,b,c) -#define IDirectInput8_EnumDevices(p,a,b,c,d) (p)->lpVtbl->EnumDevices(p,a,b,c,d) -#define IDirectInput8_GetDeviceStatus(p,a) (p)->lpVtbl->GetDeviceStatus(p,a) -#define IDirectInput8_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b) -#define IDirectInput8_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b) -#define IDirectInput8_FindDevice(p,a,b,c) (p)->lpVtbl->FindDevice(p,a,b,c) -#define IDirectInput8_EnumDevicesBySemantics(p,a,b,c,d,e) (p)->lpVtbl->EnumDevicesBySemantics(p,a,b,c,d,e) -#define IDirectInput8_ConfigureDevices(p,a,b,c,d) (p)->lpVtbl->ConfigureDevices(p,a,b,c,d) -#else -#define IDirectInput8_QueryInterface(p,a,b) (p)->QueryInterface(a,b) -#define IDirectInput8_AddRef(p) (p)->AddRef() -#define IDirectInput8_Release(p) (p)->Release() -#define IDirectInput8_CreateDevice(p,a,b,c) (p)->CreateDevice(a,b,c) -#define IDirectInput8_EnumDevices(p,a,b,c,d) (p)->EnumDevices(a,b,c,d) -#define IDirectInput8_GetDeviceStatus(p,a) (p)->GetDeviceStatus(a) -#define IDirectInput8_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b) -#define IDirectInput8_Initialize(p,a,b) (p)->Initialize(a,b) -#define IDirectInput8_FindDevice(p,a,b,c) (p)->FindDevice(a,b,c) -#define IDirectInput8_EnumDevicesBySemantics(p,a,b,c,d,e) (p)->EnumDevicesBySemantics(a,b,c,d,e) -#define IDirectInput8_ConfigureDevices(p,a,b,c,d) (p)->ConfigureDevices(a,b,c,d) -#endif -#endif /* DIRECTINPUT_VERSION >= 0x0800 */ - -#if DIRECTINPUT_VERSION > 0x0700 - -extern HRESULT WINAPI DirectInput8Create(HINSTANCE hinst, DWORD dwVersion, REFIID riidltf, LPVOID *ppvOut, LPUNKNOWN punkOuter); - -#else -extern HRESULT WINAPI DirectInputCreateA(HINSTANCE hinst, DWORD dwVersion, LPDIRECTINPUTA *ppDI, LPUNKNOWN punkOuter); -extern HRESULT WINAPI DirectInputCreateW(HINSTANCE hinst, DWORD dwVersion, LPDIRECTINPUTW *ppDI, LPUNKNOWN punkOuter); -#ifdef UNICODE -#define DirectInputCreate DirectInputCreateW -#else -#define DirectInputCreate DirectInputCreateA -#endif // !UNICODE - -extern HRESULT WINAPI DirectInputCreateEx(HINSTANCE hinst, DWORD dwVersion, REFIID riidltf, LPVOID *ppvOut, LPUNKNOWN punkOuter); - -#endif /* DIRECTINPUT_VERSION > 0x700 */ - -#endif /* DIJ_RINGZERO */ - - -/**************************************************************************** - * - * Return Codes - * - ****************************************************************************/ - -/* - * The operation completed successfully. - */ -#define DI_OK S_OK - -/* - * The device exists but is not currently attached. - */ -#define DI_NOTATTACHED S_FALSE - -/* - * The device buffer overflowed. Some input was lost. - */ -#define DI_BUFFEROVERFLOW S_FALSE - -/* - * The change in device properties had no effect. - */ -#define DI_PROPNOEFFECT S_FALSE - -/* - * The operation had no effect. - */ -#define DI_NOEFFECT S_FALSE - -/* - * The device is a polled device. As a result, device buffering - * will not collect any data and event notifications will not be - * signalled until GetDeviceState is called. - */ -#define DI_POLLEDDEVICE ((HRESULT)0x00000002L) - -/* - * The parameters of the effect were successfully updated by - * IDirectInputEffect::SetParameters, but the effect was not - * downloaded because the device is not exclusively acquired - * or because the DIEP_NODOWNLOAD flag was passed. - */ -#define DI_DOWNLOADSKIPPED ((HRESULT)0x00000003L) - -/* - * The parameters of the effect were successfully updated by - * IDirectInputEffect::SetParameters, but in order to change - * the parameters, the effect needed to be restarted. - */ -#define DI_EFFECTRESTARTED ((HRESULT)0x00000004L) - -/* - * The parameters of the effect were successfully updated by - * IDirectInputEffect::SetParameters, but some of them were - * beyond the capabilities of the device and were truncated. - */ -#define DI_TRUNCATED ((HRESULT)0x00000008L) - -/* - * The settings have been successfully applied but could not be - * persisted. - */ -#define DI_SETTINGSNOTSAVED ((HRESULT)0x0000000BL) - -/* - * Equal to DI_EFFECTRESTARTED | DI_TRUNCATED. - */ -#define DI_TRUNCATEDANDRESTARTED ((HRESULT)0x0000000CL) - -/* - * A SUCCESS code indicating that settings cannot be modified. - */ -#define DI_WRITEPROTECT ((HRESULT)0x00000013L) - -/* - * The application requires a newer version of DirectInput. - */ -#define DIERR_OLDDIRECTINPUTVERSION \ - MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_OLD_WIN_VERSION) - -/* - * The application was written for an unsupported prerelease version - * of DirectInput. - */ -#define DIERR_BETADIRECTINPUTVERSION \ - MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_RMODE_APP) - -/* - * The object could not be created due to an incompatible driver version - * or mismatched or incomplete driver components. - */ -#define DIERR_BADDRIVERVER \ - MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_BAD_DRIVER_LEVEL) - -/* - * The device or device instance or effect is not registered with DirectInput. - */ -#define DIERR_DEVICENOTREG REGDB_E_CLASSNOTREG - -/* - * The requested object does not exist. - */ -#define DIERR_NOTFOUND \ - MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_FILE_NOT_FOUND) - -/* - * The requested object does not exist. - */ -#define DIERR_OBJECTNOTFOUND \ - MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_FILE_NOT_FOUND) - -/* - * An invalid parameter was passed to the returning function, - * or the object was not in a state that admitted the function - * to be called. - */ -#define DIERR_INVALIDPARAM E_INVALIDARG - -/* - * The specified interface is not supported by the object - */ -#define DIERR_NOINTERFACE E_NOINTERFACE - -/* - * An undetermined error occured inside the DInput subsystem - */ -#define DIERR_GENERIC E_FAIL - -/* - * The DInput subsystem couldn't allocate sufficient memory to complete the - * caller's request. - */ -#define DIERR_OUTOFMEMORY E_OUTOFMEMORY - -/* - * The function called is not supported at this time - */ -#define DIERR_UNSUPPORTED E_NOTIMPL - -/* - * This object has not been initialized - */ -#define DIERR_NOTINITIALIZED \ - MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_NOT_READY) - -/* - * This object is already initialized - */ -#define DIERR_ALREADYINITIALIZED \ - MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_ALREADY_INITIALIZED) - -/* - * This object does not support aggregation - */ -#define DIERR_NOAGGREGATION CLASS_E_NOAGGREGATION - -/* - * Another app has a higher priority level, preventing this call from - * succeeding. - */ -#define DIERR_OTHERAPPHASPRIO E_ACCESSDENIED - -/* - * Access to the device has been lost. It must be re-acquired. - */ -#define DIERR_INPUTLOST \ - MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_READ_FAULT) - -/* - * The operation cannot be performed while the device is acquired. - */ -#define DIERR_ACQUIRED \ - MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_BUSY) - -/* - * The operation cannot be performed unless the device is acquired. - */ -#define DIERR_NOTACQUIRED \ - MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_INVALID_ACCESS) - -/* - * The specified property cannot be changed. - */ -#define DIERR_READONLY E_ACCESSDENIED - -/* - * The device already has an event notification associated with it. - */ -#define DIERR_HANDLEEXISTS E_ACCESSDENIED - -/* - * Data is not yet available. - */ -#ifndef E_PENDING -#define E_PENDING 0x8000000AL -#endif - -/* - * Unable to IDirectInputJoyConfig_Acquire because the user - * does not have sufficient privileges to change the joystick - * configuration. - */ -#define DIERR_INSUFFICIENTPRIVS 0x80040200L - -/* - * The device is full. - */ -#define DIERR_DEVICEFULL 0x80040201L - -/* - * Not all the requested information fit into the buffer. - */ -#define DIERR_MOREDATA 0x80040202L - -/* - * The effect is not downloaded. - */ -#define DIERR_NOTDOWNLOADED 0x80040203L - -/* - * The device cannot be reinitialized because there are still effects - * attached to it. - */ -#define DIERR_HASEFFECTS 0x80040204L - -/* - * The operation cannot be performed unless the device is acquired - * in DISCL_EXCLUSIVE mode. - */ -#define DIERR_NOTEXCLUSIVEACQUIRED 0x80040205L - -/* - * The effect could not be downloaded because essential information - * is missing. For example, no axes have been associated with the - * effect, or no type-specific information has been created. - */ -#define DIERR_INCOMPLETEEFFECT 0x80040206L - -/* - * Attempted to read buffered device data from a device that is - * not buffered. - */ -#define DIERR_NOTBUFFERED 0x80040207L - -/* - * An attempt was made to modify parameters of an effect while it is - * playing. Not all hardware devices support altering the parameters - * of an effect while it is playing. - */ -#define DIERR_EFFECTPLAYING 0x80040208L - -/* - * The operation could not be completed because the device is not - * plugged in. - */ -#define DIERR_UNPLUGGED 0x80040209L - -/* - * SendDeviceData failed because more information was requested - * to be sent than can be sent to the device. Some devices have - * restrictions on how much data can be sent to them. (For example, - * there might be a limit on the number of buttons that can be - * pressed at once.) - */ -#define DIERR_REPORTFULL 0x8004020AL - - -/* - * A mapper file function failed because reading or writing the user or IHV - * settings file failed. - */ -#define DIERR_MAPFILEFAIL 0x8004020BL - - -/*--- DINPUT Mapper Definitions: New for Dx8 ---*/ - - -/*--- Keyboard - Physical Keyboard Device ---*/ - -#define DIKEYBOARD_ESCAPE 0x81000401 -#define DIKEYBOARD_1 0x81000402 -#define DIKEYBOARD_2 0x81000403 -#define DIKEYBOARD_3 0x81000404 -#define DIKEYBOARD_4 0x81000405 -#define DIKEYBOARD_5 0x81000406 -#define DIKEYBOARD_6 0x81000407 -#define DIKEYBOARD_7 0x81000408 -#define DIKEYBOARD_8 0x81000409 -#define DIKEYBOARD_9 0x8100040A -#define DIKEYBOARD_0 0x8100040B -#define DIKEYBOARD_MINUS 0x8100040C /* - on main keyboard */ -#define DIKEYBOARD_EQUALS 0x8100040D -#define DIKEYBOARD_BACK 0x8100040E /* backspace */ -#define DIKEYBOARD_TAB 0x8100040F -#define DIKEYBOARD_Q 0x81000410 -#define DIKEYBOARD_W 0x81000411 -#define DIKEYBOARD_E 0x81000412 -#define DIKEYBOARD_R 0x81000413 -#define DIKEYBOARD_T 0x81000414 -#define DIKEYBOARD_Y 0x81000415 -#define DIKEYBOARD_U 0x81000416 -#define DIKEYBOARD_I 0x81000417 -#define DIKEYBOARD_O 0x81000418 -#define DIKEYBOARD_P 0x81000419 -#define DIKEYBOARD_LBRACKET 0x8100041A -#define DIKEYBOARD_RBRACKET 0x8100041B -#define DIKEYBOARD_RETURN 0x8100041C /* Enter on main keyboard */ -#define DIKEYBOARD_LCONTROL 0x8100041D -#define DIKEYBOARD_A 0x8100041E -#define DIKEYBOARD_S 0x8100041F -#define DIKEYBOARD_D 0x81000420 -#define DIKEYBOARD_F 0x81000421 -#define DIKEYBOARD_G 0x81000422 -#define DIKEYBOARD_H 0x81000423 -#define DIKEYBOARD_J 0x81000424 -#define DIKEYBOARD_K 0x81000425 -#define DIKEYBOARD_L 0x81000426 -#define DIKEYBOARD_SEMICOLON 0x81000427 -#define DIKEYBOARD_APOSTROPHE 0x81000428 -#define DIKEYBOARD_GRAVE 0x81000429 /* accent grave */ -#define DIKEYBOARD_LSHIFT 0x8100042A -#define DIKEYBOARD_BACKSLASH 0x8100042B -#define DIKEYBOARD_Z 0x8100042C -#define DIKEYBOARD_X 0x8100042D -#define DIKEYBOARD_C 0x8100042E -#define DIKEYBOARD_V 0x8100042F -#define DIKEYBOARD_B 0x81000430 -#define DIKEYBOARD_N 0x81000431 -#define DIKEYBOARD_M 0x81000432 -#define DIKEYBOARD_COMMA 0x81000433 -#define DIKEYBOARD_PERIOD 0x81000434 /* . on main keyboard */ -#define DIKEYBOARD_SLASH 0x81000435 /* / on main keyboard */ -#define DIKEYBOARD_RSHIFT 0x81000436 -#define DIKEYBOARD_MULTIPLY 0x81000437 /* * on numeric keypad */ -#define DIKEYBOARD_LMENU 0x81000438 /* left Alt */ -#define DIKEYBOARD_SPACE 0x81000439 -#define DIKEYBOARD_CAPITAL 0x8100043A -#define DIKEYBOARD_F1 0x8100043B -#define DIKEYBOARD_F2 0x8100043C -#define DIKEYBOARD_F3 0x8100043D -#define DIKEYBOARD_F4 0x8100043E -#define DIKEYBOARD_F5 0x8100043F -#define DIKEYBOARD_F6 0x81000440 -#define DIKEYBOARD_F7 0x81000441 -#define DIKEYBOARD_F8 0x81000442 -#define DIKEYBOARD_F9 0x81000443 -#define DIKEYBOARD_F10 0x81000444 -#define DIKEYBOARD_NUMLOCK 0x81000445 -#define DIKEYBOARD_SCROLL 0x81000446 /* Scroll Lock */ -#define DIKEYBOARD_NUMPAD7 0x81000447 -#define DIKEYBOARD_NUMPAD8 0x81000448 -#define DIKEYBOARD_NUMPAD9 0x81000449 -#define DIKEYBOARD_SUBTRACT 0x8100044A /* - on numeric keypad */ -#define DIKEYBOARD_NUMPAD4 0x8100044B -#define DIKEYBOARD_NUMPAD5 0x8100044C -#define DIKEYBOARD_NUMPAD6 0x8100044D -#define DIKEYBOARD_ADD 0x8100044E /* + on numeric keypad */ -#define DIKEYBOARD_NUMPAD1 0x8100044F -#define DIKEYBOARD_NUMPAD2 0x81000450 -#define DIKEYBOARD_NUMPAD3 0x81000451 -#define DIKEYBOARD_NUMPAD0 0x81000452 -#define DIKEYBOARD_DECIMAL 0x81000453 /* . on numeric keypad */ -#define DIKEYBOARD_OEM_102 0x81000456 /* <> or \| on RT 102-key keyboard (Non-U.S.) */ -#define DIKEYBOARD_F11 0x81000457 -#define DIKEYBOARD_F12 0x81000458 -#define DIKEYBOARD_F13 0x81000464 /* (NEC PC98) */ -#define DIKEYBOARD_F14 0x81000465 /* (NEC PC98) */ -#define DIKEYBOARD_F15 0x81000466 /* (NEC PC98) */ -#define DIKEYBOARD_KANA 0x81000470 /* (Japanese keyboard) */ -#define DIKEYBOARD_ABNT_C1 0x81000473 /* /? on Brazilian keyboard */ -#define DIKEYBOARD_CONVERT 0x81000479 /* (Japanese keyboard) */ -#define DIKEYBOARD_NOCONVERT 0x8100047B /* (Japanese keyboard) */ -#define DIKEYBOARD_YEN 0x8100047D /* (Japanese keyboard) */ -#define DIKEYBOARD_ABNT_C2 0x8100047E /* Numpad . on Brazilian keyboard */ -#define DIKEYBOARD_NUMPADEQUALS 0x8100048D /* = on numeric keypad (NEC PC98) */ -#define DIKEYBOARD_PREVTRACK 0x81000490 /* Previous Track (DIK_CIRCUMFLEX on Japanese keyboard) */ -#define DIKEYBOARD_AT 0x81000491 /* (NEC PC98) */ -#define DIKEYBOARD_COLON 0x81000492 /* (NEC PC98) */ -#define DIKEYBOARD_UNDERLINE 0x81000493 /* (NEC PC98) */ -#define DIKEYBOARD_KANJI 0x81000494 /* (Japanese keyboard) */ -#define DIKEYBOARD_STOP 0x81000495 /* (NEC PC98) */ -#define DIKEYBOARD_AX 0x81000496 /* (Japan AX) */ -#define DIKEYBOARD_UNLABELED 0x81000497 /* (J3100) */ -#define DIKEYBOARD_NEXTTRACK 0x81000499 /* Next Track */ -#define DIKEYBOARD_NUMPADENTER 0x8100049C /* Enter on numeric keypad */ -#define DIKEYBOARD_RCONTROL 0x8100049D -#define DIKEYBOARD_MUTE 0x810004A0 /* Mute */ -#define DIKEYBOARD_CALCULATOR 0x810004A1 /* Calculator */ -#define DIKEYBOARD_PLAYPAUSE 0x810004A2 /* Play / Pause */ -#define DIKEYBOARD_MEDIASTOP 0x810004A4 /* Media Stop */ -#define DIKEYBOARD_VOLUMEDOWN 0x810004AE /* Volume - */ -#define DIKEYBOARD_VOLUMEUP 0x810004B0 /* Volume + */ -#define DIKEYBOARD_WEBHOME 0x810004B2 /* Web home */ -#define DIKEYBOARD_NUMPADCOMMA 0x810004B3 /* , on numeric keypad (NEC PC98) */ -#define DIKEYBOARD_DIVIDE 0x810004B5 /* / on numeric keypad */ -#define DIKEYBOARD_SYSRQ 0x810004B7 -#define DIKEYBOARD_RMENU 0x810004B8 /* right Alt */ -#define DIKEYBOARD_PAUSE 0x810004C5 /* Pause */ -#define DIKEYBOARD_HOME 0x810004C7 /* Home on arrow keypad */ -#define DIKEYBOARD_UP 0x810004C8 /* UpArrow on arrow keypad */ -#define DIKEYBOARD_PRIOR 0x810004C9 /* PgUp on arrow keypad */ -#define DIKEYBOARD_LEFT 0x810004CB /* LeftArrow on arrow keypad */ -#define DIKEYBOARD_RIGHT 0x810004CD /* RightArrow on arrow keypad */ -#define DIKEYBOARD_END 0x810004CF /* End on arrow keypad */ -#define DIKEYBOARD_DOWN 0x810004D0 /* DownArrow on arrow keypad */ -#define DIKEYBOARD_NEXT 0x810004D1 /* PgDn on arrow keypad */ -#define DIKEYBOARD_INSERT 0x810004D2 /* Insert on arrow keypad */ -#define DIKEYBOARD_DELETE 0x810004D3 /* Delete on arrow keypad */ -#define DIKEYBOARD_LWIN 0x810004DB /* Left Windows key */ -#define DIKEYBOARD_RWIN 0x810004DC /* Right Windows key */ -#define DIKEYBOARD_APPS 0x810004DD /* AppMenu key */ -#define DIKEYBOARD_POWER 0x810004DE /* System Power */ -#define DIKEYBOARD_SLEEP 0x810004DF /* System Sleep */ -#define DIKEYBOARD_WAKE 0x810004E3 /* System Wake */ -#define DIKEYBOARD_WEBSEARCH 0x810004E5 /* Web Search */ -#define DIKEYBOARD_WEBFAVORITES 0x810004E6 /* Web Favorites */ -#define DIKEYBOARD_WEBREFRESH 0x810004E7 /* Web Refresh */ -#define DIKEYBOARD_WEBSTOP 0x810004E8 /* Web Stop */ -#define DIKEYBOARD_WEBFORWARD 0x810004E9 /* Web Forward */ -#define DIKEYBOARD_WEBBACK 0x810004EA /* Web Back */ -#define DIKEYBOARD_MYCOMPUTER 0x810004EB /* My Computer */ -#define DIKEYBOARD_MAIL 0x810004EC /* Mail */ -#define DIKEYBOARD_MEDIASELECT 0x810004ED /* Media Select */ - - -/*--- MOUSE - Physical Mouse Device ---*/ - -#define DIMOUSE_XAXISAB (0x82000200 |DIMOFS_X ) /* X Axis-absolute: Some mice natively report absolute coordinates */ -#define DIMOUSE_YAXISAB (0x82000200 |DIMOFS_Y ) /* Y Axis-absolute: Some mice natively report absolute coordinates */ -#define DIMOUSE_XAXIS (0x82000300 |DIMOFS_X ) /* X Axis */ -#define DIMOUSE_YAXIS (0x82000300 |DIMOFS_Y ) /* Y Axis */ -#define DIMOUSE_WHEEL (0x82000300 |DIMOFS_Z ) /* Z Axis */ -#define DIMOUSE_BUTTON0 (0x82000400 |DIMOFS_BUTTON0) /* Button 0 */ -#define DIMOUSE_BUTTON1 (0x82000400 |DIMOFS_BUTTON1) /* Button 1 */ -#define DIMOUSE_BUTTON2 (0x82000400 |DIMOFS_BUTTON2) /* Button 2 */ -#define DIMOUSE_BUTTON3 (0x82000400 |DIMOFS_BUTTON3) /* Button 3 */ -#define DIMOUSE_BUTTON4 (0x82000400 |DIMOFS_BUTTON4) /* Button 4 */ -#define DIMOUSE_BUTTON5 (0x82000400 |DIMOFS_BUTTON5) /* Button 5 */ -#define DIMOUSE_BUTTON6 (0x82000400 |DIMOFS_BUTTON6) /* Button 6 */ -#define DIMOUSE_BUTTON7 (0x82000400 |DIMOFS_BUTTON7) /* Button 7 */ - - -/*--- VOICE - Physical Dplay Voice Device ---*/ - -#define DIVOICE_CHANNEL1 0x83000401 -#define DIVOICE_CHANNEL2 0x83000402 -#define DIVOICE_CHANNEL3 0x83000403 -#define DIVOICE_CHANNEL4 0x83000404 -#define DIVOICE_CHANNEL5 0x83000405 -#define DIVOICE_CHANNEL6 0x83000406 -#define DIVOICE_CHANNEL7 0x83000407 -#define DIVOICE_CHANNEL8 0x83000408 -#define DIVOICE_TEAM 0x83000409 -#define DIVOICE_ALL 0x8300040A -#define DIVOICE_RECORDMUTE 0x8300040B -#define DIVOICE_PLAYBACKMUTE 0x8300040C -#define DIVOICE_TRANSMIT 0x8300040D - -#define DIVOICE_VOICECOMMAND 0x83000410 - - -/*--- Driving Simulator - Racing - Vehicle control is primary objective ---*/ -#define DIVIRTUAL_DRIVING_RACE 0x01000000 -#define DIAXIS_DRIVINGR_STEER 0x01008A01 /* Steering */ -#define DIAXIS_DRIVINGR_ACCELERATE 0x01039202 /* Accelerate */ -#define DIAXIS_DRIVINGR_BRAKE 0x01041203 /* Brake-Axis */ -#define DIBUTTON_DRIVINGR_SHIFTUP 0x01000C01 /* Shift to next higher gear */ -#define DIBUTTON_DRIVINGR_SHIFTDOWN 0x01000C02 /* Shift to next lower gear */ -#define DIBUTTON_DRIVINGR_VIEW 0x01001C03 /* Cycle through view options */ -#define DIBUTTON_DRIVINGR_MENU 0x010004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIAXIS_DRIVINGR_ACCEL_AND_BRAKE 0x01014A04 /* Some devices combine accelerate and brake in a single axis */ -#define DIHATSWITCH_DRIVINGR_GLANCE 0x01004601 /* Look around */ -#define DIBUTTON_DRIVINGR_BRAKE 0x01004C04 /* Brake-button */ -#define DIBUTTON_DRIVINGR_DASHBOARD 0x01004405 /* Select next dashboard option */ -#define DIBUTTON_DRIVINGR_AIDS 0x01004406 /* Driver correction aids */ -#define DIBUTTON_DRIVINGR_MAP 0x01004407 /* Display Driving Map */ -#define DIBUTTON_DRIVINGR_BOOST 0x01004408 /* Turbo Boost */ -#define DIBUTTON_DRIVINGR_PIT 0x01004409 /* Pit stop notification */ -#define DIBUTTON_DRIVINGR_ACCELERATE_LINK 0x0103D4E0 /* Fallback Accelerate button */ -#define DIBUTTON_DRIVINGR_STEER_LEFT_LINK 0x0100CCE4 /* Fallback Steer Left button */ -#define DIBUTTON_DRIVINGR_STEER_RIGHT_LINK 0x0100CCEC /* Fallback Steer Right button */ -#define DIBUTTON_DRIVINGR_GLANCE_LEFT_LINK 0x0107C4E4 /* Fallback Glance Left button */ -#define DIBUTTON_DRIVINGR_GLANCE_RIGHT_LINK 0x0107C4EC /* Fallback Glance Right button */ -#define DIBUTTON_DRIVINGR_DEVICE 0x010044FE /* Show input device and controls */ -#define DIBUTTON_DRIVINGR_PAUSE 0x010044FC /* Start / Pause / Restart game */ - -/*--- Driving Simulator - Combat - Combat from within a vehicle is primary objective ---*/ -#define DIVIRTUAL_DRIVING_COMBAT 0x02000000 -#define DIAXIS_DRIVINGC_STEER 0x02008A01 /* Steering */ -#define DIAXIS_DRIVINGC_ACCELERATE 0x02039202 /* Accelerate */ -#define DIAXIS_DRIVINGC_BRAKE 0x02041203 /* Brake-axis */ -#define DIBUTTON_DRIVINGC_FIRE 0x02000C01 /* Fire */ -#define DIBUTTON_DRIVINGC_WEAPONS 0x02000C02 /* Select next weapon */ -#define DIBUTTON_DRIVINGC_TARGET 0x02000C03 /* Select next available target */ -#define DIBUTTON_DRIVINGC_MENU 0x020004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIAXIS_DRIVINGC_ACCEL_AND_BRAKE 0x02014A04 /* Some devices combine accelerate and brake in a single axis */ -#define DIHATSWITCH_DRIVINGC_GLANCE 0x02004601 /* Look around */ -#define DIBUTTON_DRIVINGC_SHIFTUP 0x02004C04 /* Shift to next higher gear */ -#define DIBUTTON_DRIVINGC_SHIFTDOWN 0x02004C05 /* Shift to next lower gear */ -#define DIBUTTON_DRIVINGC_DASHBOARD 0x02004406 /* Select next dashboard option */ -#define DIBUTTON_DRIVINGC_AIDS 0x02004407 /* Driver correction aids */ -#define DIBUTTON_DRIVINGC_BRAKE 0x02004C08 /* Brake-button */ -#define DIBUTTON_DRIVINGC_FIRESECONDARY 0x02004C09 /* Alternative fire button */ -#define DIBUTTON_DRIVINGC_ACCELERATE_LINK 0x0203D4E0 /* Fallback Accelerate button */ -#define DIBUTTON_DRIVINGC_STEER_LEFT_LINK 0x0200CCE4 /* Fallback Steer Left button */ -#define DIBUTTON_DRIVINGC_STEER_RIGHT_LINK 0x0200CCEC /* Fallback Steer Right button */ -#define DIBUTTON_DRIVINGC_GLANCE_LEFT_LINK 0x0207C4E4 /* Fallback Glance Left button */ -#define DIBUTTON_DRIVINGC_GLANCE_RIGHT_LINK 0x0207C4EC /* Fallback Glance Right button */ -#define DIBUTTON_DRIVINGC_DEVICE 0x020044FE /* Show input device and controls */ -#define DIBUTTON_DRIVINGC_PAUSE 0x020044FC /* Start / Pause / Restart game */ - -/*--- Driving Simulator - Tank - Combat from withing a tank is primary objective ---*/ -#define DIVIRTUAL_DRIVING_TANK 0x03000000 -#define DIAXIS_DRIVINGT_STEER 0x03008A01 /* Turn tank left / right */ -#define DIAXIS_DRIVINGT_BARREL 0x03010202 /* Raise / lower barrel */ -#define DIAXIS_DRIVINGT_ACCELERATE 0x03039203 /* Accelerate */ -#define DIAXIS_DRIVINGT_ROTATE 0x03020204 /* Turn barrel left / right */ -#define DIBUTTON_DRIVINGT_FIRE 0x03000C01 /* Fire */ -#define DIBUTTON_DRIVINGT_WEAPONS 0x03000C02 /* Select next weapon */ -#define DIBUTTON_DRIVINGT_TARGET 0x03000C03 /* Selects next available target */ -#define DIBUTTON_DRIVINGT_MENU 0x030004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIHATSWITCH_DRIVINGT_GLANCE 0x03004601 /* Look around */ -#define DIAXIS_DRIVINGT_BRAKE 0x03045205 /* Brake-axis */ -#define DIAXIS_DRIVINGT_ACCEL_AND_BRAKE 0x03014A06 /* Some devices combine accelerate and brake in a single axis */ -#define DIBUTTON_DRIVINGT_VIEW 0x03005C04 /* Cycle through view options */ -#define DIBUTTON_DRIVINGT_DASHBOARD 0x03005C05 /* Select next dashboard option */ -#define DIBUTTON_DRIVINGT_BRAKE 0x03004C06 /* Brake-button */ -#define DIBUTTON_DRIVINGT_FIRESECONDARY 0x03004C07 /* Alternative fire button */ -#define DIBUTTON_DRIVINGT_ACCELERATE_LINK 0x0303D4E0 /* Fallback Accelerate button */ -#define DIBUTTON_DRIVINGT_STEER_LEFT_LINK 0x0300CCE4 /* Fallback Steer Left button */ -#define DIBUTTON_DRIVINGT_STEER_RIGHT_LINK 0x0300CCEC /* Fallback Steer Right button */ -#define DIBUTTON_DRIVINGT_BARREL_UP_LINK 0x030144E0 /* Fallback Barrel up button */ -#define DIBUTTON_DRIVINGT_BARREL_DOWN_LINK 0x030144E8 /* Fallback Barrel down button */ -#define DIBUTTON_DRIVINGT_ROTATE_LEFT_LINK 0x030244E4 /* Fallback Rotate left button */ -#define DIBUTTON_DRIVINGT_ROTATE_RIGHT_LINK 0x030244EC /* Fallback Rotate right button */ -#define DIBUTTON_DRIVINGT_GLANCE_LEFT_LINK 0x0307C4E4 /* Fallback Glance Left button */ -#define DIBUTTON_DRIVINGT_GLANCE_RIGHT_LINK 0x0307C4EC /* Fallback Glance Right button */ -#define DIBUTTON_DRIVINGT_DEVICE 0x030044FE /* Show input device and controls */ -#define DIBUTTON_DRIVINGT_PAUSE 0x030044FC /* Start / Pause / Restart game */ - -/*--- Flight Simulator - Civilian - Plane control is the primary objective ---*/ -#define DIVIRTUAL_FLYING_CIVILIAN 0x04000000 -#define DIAXIS_FLYINGC_BANK 0x04008A01 /* Roll ship left / right */ -#define DIAXIS_FLYINGC_PITCH 0x04010A02 /* Nose up / down */ -#define DIAXIS_FLYINGC_THROTTLE 0x04039203 /* Throttle */ -#define DIBUTTON_FLYINGC_VIEW 0x04002401 /* Cycle through view options */ -#define DIBUTTON_FLYINGC_DISPLAY 0x04002402 /* Select next dashboard / heads up display option */ -#define DIBUTTON_FLYINGC_GEAR 0x04002C03 /* Gear up / down */ -#define DIBUTTON_FLYINGC_MENU 0x040004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIHATSWITCH_FLYINGC_GLANCE 0x04004601 /* Look around */ -#define DIAXIS_FLYINGC_BRAKE 0x04046A04 /* Apply Brake */ -#define DIAXIS_FLYINGC_RUDDER 0x04025205 /* Yaw ship left/right */ -#define DIAXIS_FLYINGC_FLAPS 0x04055A06 /* Flaps */ -#define DIBUTTON_FLYINGC_FLAPSUP 0x04006404 /* Increment stepping up until fully retracted */ -#define DIBUTTON_FLYINGC_FLAPSDOWN 0x04006405 /* Decrement stepping down until fully extended */ -#define DIBUTTON_FLYINGC_BRAKE_LINK 0x04046CE0 /* Fallback brake button */ -#define DIBUTTON_FLYINGC_FASTER_LINK 0x0403D4E0 /* Fallback throttle up button */ -#define DIBUTTON_FLYINGC_SLOWER_LINK 0x0403D4E8 /* Fallback throttle down button */ -#define DIBUTTON_FLYINGC_GLANCE_LEFT_LINK 0x0407C4E4 /* Fallback Glance Left button */ -#define DIBUTTON_FLYINGC_GLANCE_RIGHT_LINK 0x0407C4EC /* Fallback Glance Right button */ -#define DIBUTTON_FLYINGC_GLANCE_UP_LINK 0x0407C4E0 /* Fallback Glance Up button */ -#define DIBUTTON_FLYINGC_GLANCE_DOWN_LINK 0x0407C4E8 /* Fallback Glance Down button */ -#define DIBUTTON_FLYINGC_DEVICE 0x040044FE /* Show input device and controls */ -#define DIBUTTON_FLYINGC_PAUSE 0x040044FC /* Start / Pause / Restart game */ - -/*--- Flight Simulator - Military - Aerial combat is the primary objective ---*/ -#define DIVIRTUAL_FLYING_MILITARY 0x05000000 -#define DIAXIS_FLYINGM_BANK 0x05008A01 /* Bank - Roll ship left / right */ -#define DIAXIS_FLYINGM_PITCH 0x05010A02 /* Pitch - Nose up / down */ -#define DIAXIS_FLYINGM_THROTTLE 0x05039203 /* Throttle - faster / slower */ -#define DIBUTTON_FLYINGM_FIRE 0x05000C01 /* Fire */ -#define DIBUTTON_FLYINGM_WEAPONS 0x05000C02 /* Select next weapon */ -#define DIBUTTON_FLYINGM_TARGET 0x05000C03 /* Selects next available target */ -#define DIBUTTON_FLYINGM_MENU 0x050004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIHATSWITCH_FLYINGM_GLANCE 0x05004601 /* Look around */ -#define DIBUTTON_FLYINGM_COUNTER 0x05005C04 /* Activate counter measures */ -#define DIAXIS_FLYINGM_RUDDER 0x05024A04 /* Rudder - Yaw ship left/right */ -#define DIAXIS_FLYINGM_BRAKE 0x05046205 /* Brake-axis */ -#define DIBUTTON_FLYINGM_VIEW 0x05006405 /* Cycle through view options */ -#define DIBUTTON_FLYINGM_DISPLAY 0x05006406 /* Select next dashboard option */ -#define DIAXIS_FLYINGM_FLAPS 0x05055206 /* Flaps */ -#define DIBUTTON_FLYINGM_FLAPSUP 0x05005407 /* Increment stepping up until fully retracted */ -#define DIBUTTON_FLYINGM_FLAPSDOWN 0x05005408 /* Decrement stepping down until fully extended */ -#define DIBUTTON_FLYINGM_FIRESECONDARY 0x05004C09 /* Alternative fire button */ -#define DIBUTTON_FLYINGM_GEAR 0x0500640A /* Gear up / down */ -#define DIBUTTON_FLYINGM_BRAKE_LINK 0x050464E0 /* Fallback brake button */ -#define DIBUTTON_FLYINGM_FASTER_LINK 0x0503D4E0 /* Fallback throttle up button */ -#define DIBUTTON_FLYINGM_SLOWER_LINK 0x0503D4E8 /* Fallback throttle down button */ -#define DIBUTTON_FLYINGM_GLANCE_LEFT_LINK 0x0507C4E4 /* Fallback Glance Left button */ -#define DIBUTTON_FLYINGM_GLANCE_RIGHT_LINK 0x0507C4EC /* Fallback Glance Right button */ -#define DIBUTTON_FLYINGM_GLANCE_UP_LINK 0x0507C4E0 /* Fallback Glance Up button */ -#define DIBUTTON_FLYINGM_GLANCE_DOWN_LINK 0x0507C4E8 /* Fallback Glance Down button */ -#define DIBUTTON_FLYINGM_DEVICE 0x050044FE /* Show input device and controls */ -#define DIBUTTON_FLYINGM_PAUSE 0x050044FC /* Start / Pause / Restart game */ - -/*--- Flight Simulator - Combat Helicopter - Combat from helicopter is primary objective ---*/ -#define DIVIRTUAL_FLYING_HELICOPTER 0x06000000 -#define DIAXIS_FLYINGH_BANK 0x06008A01 /* Bank - Roll ship left / right */ -#define DIAXIS_FLYINGH_PITCH 0x06010A02 /* Pitch - Nose up / down */ -#define DIAXIS_FLYINGH_COLLECTIVE 0x06018A03 /* Collective - Blade pitch/power */ -#define DIBUTTON_FLYINGH_FIRE 0x06001401 /* Fire */ -#define DIBUTTON_FLYINGH_WEAPONS 0x06001402 /* Select next weapon */ -#define DIBUTTON_FLYINGH_TARGET 0x06001403 /* Selects next available target */ -#define DIBUTTON_FLYINGH_MENU 0x060004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIHATSWITCH_FLYINGH_GLANCE 0x06004601 /* Look around */ -#define DIAXIS_FLYINGH_TORQUE 0x06025A04 /* Torque - Rotate ship around left / right axis */ -#define DIAXIS_FLYINGH_THROTTLE 0x0603DA05 /* Throttle */ -#define DIBUTTON_FLYINGH_COUNTER 0x06005404 /* Activate counter measures */ -#define DIBUTTON_FLYINGH_VIEW 0x06006405 /* Cycle through view options */ -#define DIBUTTON_FLYINGH_GEAR 0x06006406 /* Gear up / down */ -#define DIBUTTON_FLYINGH_FIRESECONDARY 0x06004C07 /* Alternative fire button */ -#define DIBUTTON_FLYINGH_FASTER_LINK 0x0603DCE0 /* Fallback throttle up button */ -#define DIBUTTON_FLYINGH_SLOWER_LINK 0x0603DCE8 /* Fallback throttle down button */ -#define DIBUTTON_FLYINGH_GLANCE_LEFT_LINK 0x0607C4E4 /* Fallback Glance Left button */ -#define DIBUTTON_FLYINGH_GLANCE_RIGHT_LINK 0x0607C4EC /* Fallback Glance Right button */ -#define DIBUTTON_FLYINGH_GLANCE_UP_LINK 0x0607C4E0 /* Fallback Glance Up button */ -#define DIBUTTON_FLYINGH_GLANCE_DOWN_LINK 0x0607C4E8 /* Fallback Glance Down button */ -#define DIBUTTON_FLYINGH_DEVICE 0x060044FE /* Show input device and controls */ -#define DIBUTTON_FLYINGH_PAUSE 0x060044FC /* Start / Pause / Restart game */ - -/*--- Space Simulator - Combat - Space Simulator with weapons ---*/ -#define DIVIRTUAL_SPACESIM 0x07000000 -#define DIAXIS_SPACESIM_LATERAL 0x07008201 /* Move ship left / right */ -#define DIAXIS_SPACESIM_MOVE 0x07010202 /* Move ship forward/backward */ -#define DIAXIS_SPACESIM_THROTTLE 0x07038203 /* Throttle - Engine speed */ -#define DIBUTTON_SPACESIM_FIRE 0x07000401 /* Fire */ -#define DIBUTTON_SPACESIM_WEAPONS 0x07000402 /* Select next weapon */ -#define DIBUTTON_SPACESIM_TARGET 0x07000403 /* Selects next available target */ -#define DIBUTTON_SPACESIM_MENU 0x070004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIHATSWITCH_SPACESIM_GLANCE 0x07004601 /* Look around */ -#define DIAXIS_SPACESIM_CLIMB 0x0701C204 /* Climb - Pitch ship up/down */ -#define DIAXIS_SPACESIM_ROTATE 0x07024205 /* Rotate - Turn ship left/right */ -#define DIBUTTON_SPACESIM_VIEW 0x07004404 /* Cycle through view options */ -#define DIBUTTON_SPACESIM_DISPLAY 0x07004405 /* Select next dashboard / heads up display option */ -#define DIBUTTON_SPACESIM_RAISE 0x07004406 /* Raise ship while maintaining current pitch */ -#define DIBUTTON_SPACESIM_LOWER 0x07004407 /* Lower ship while maintaining current pitch */ -#define DIBUTTON_SPACESIM_GEAR 0x07004408 /* Gear up / down */ -#define DIBUTTON_SPACESIM_FIRESECONDARY 0x07004409 /* Alternative fire button */ -#define DIBUTTON_SPACESIM_LEFT_LINK 0x0700C4E4 /* Fallback move left button */ -#define DIBUTTON_SPACESIM_RIGHT_LINK 0x0700C4EC /* Fallback move right button */ -#define DIBUTTON_SPACESIM_FORWARD_LINK 0x070144E0 /* Fallback move forward button */ -#define DIBUTTON_SPACESIM_BACKWARD_LINK 0x070144E8 /* Fallback move backwards button */ -#define DIBUTTON_SPACESIM_FASTER_LINK 0x0703C4E0 /* Fallback throttle up button */ -#define DIBUTTON_SPACESIM_SLOWER_LINK 0x0703C4E8 /* Fallback throttle down button */ -#define DIBUTTON_SPACESIM_TURN_LEFT_LINK 0x070244E4 /* Fallback turn left button */ -#define DIBUTTON_SPACESIM_TURN_RIGHT_LINK 0x070244EC /* Fallback turn right button */ -#define DIBUTTON_SPACESIM_GLANCE_LEFT_LINK 0x0707C4E4 /* Fallback Glance Left button */ -#define DIBUTTON_SPACESIM_GLANCE_RIGHT_LINK 0x0707C4EC /* Fallback Glance Right button */ -#define DIBUTTON_SPACESIM_GLANCE_UP_LINK 0x0707C4E0 /* Fallback Glance Up button */ -#define DIBUTTON_SPACESIM_GLANCE_DOWN_LINK 0x0707C4E8 /* Fallback Glance Down button */ -#define DIBUTTON_SPACESIM_DEVICE 0x070044FE /* Show input device and controls */ -#define DIBUTTON_SPACESIM_PAUSE 0x070044FC /* Start / Pause / Restart game */ - -/*--- Fighting - First Person - Hand to Hand combat is primary objective ---*/ -#define DIVIRTUAL_FIGHTING_HAND2HAND 0x08000000 -#define DIAXIS_FIGHTINGH_LATERAL 0x08008201 /* Sidestep left/right */ -#define DIAXIS_FIGHTINGH_MOVE 0x08010202 /* Move forward/backward */ -#define DIBUTTON_FIGHTINGH_PUNCH 0x08000401 /* Punch */ -#define DIBUTTON_FIGHTINGH_KICK 0x08000402 /* Kick */ -#define DIBUTTON_FIGHTINGH_BLOCK 0x08000403 /* Block */ -#define DIBUTTON_FIGHTINGH_CROUCH 0x08000404 /* Crouch */ -#define DIBUTTON_FIGHTINGH_JUMP 0x08000405 /* Jump */ -#define DIBUTTON_FIGHTINGH_SPECIAL1 0x08000406 /* Apply first special move */ -#define DIBUTTON_FIGHTINGH_SPECIAL2 0x08000407 /* Apply second special move */ -#define DIBUTTON_FIGHTINGH_MENU 0x080004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIBUTTON_FIGHTINGH_SELECT 0x08004408 /* Select special move */ -#define DIHATSWITCH_FIGHTINGH_SLIDE 0x08004601 /* Look around */ -#define DIBUTTON_FIGHTINGH_DISPLAY 0x08004409 /* Shows next on-screen display option */ -#define DIAXIS_FIGHTINGH_ROTATE 0x08024203 /* Rotate - Turn body left/right */ -#define DIBUTTON_FIGHTINGH_DODGE 0x0800440A /* Dodge */ -#define DIBUTTON_FIGHTINGH_LEFT_LINK 0x0800C4E4 /* Fallback left sidestep button */ -#define DIBUTTON_FIGHTINGH_RIGHT_LINK 0x0800C4EC /* Fallback right sidestep button */ -#define DIBUTTON_FIGHTINGH_FORWARD_LINK 0x080144E0 /* Fallback forward button */ -#define DIBUTTON_FIGHTINGH_BACKWARD_LINK 0x080144E8 /* Fallback backward button */ -#define DIBUTTON_FIGHTINGH_DEVICE 0x080044FE /* Show input device and controls */ -#define DIBUTTON_FIGHTINGH_PAUSE 0x080044FC /* Start / Pause / Restart game */ - -/*--- Fighting - First Person Shooting - Navigation and combat are primary objectives ---*/ -#define DIVIRTUAL_FIGHTING_FPS 0x09000000 -#define DIAXIS_FPS_ROTATE 0x09008201 /* Rotate character left/right */ -#define DIAXIS_FPS_MOVE 0x09010202 /* Move forward/backward */ -#define DIBUTTON_FPS_FIRE 0x09000401 /* Fire */ -#define DIBUTTON_FPS_WEAPONS 0x09000402 /* Select next weapon */ -#define DIBUTTON_FPS_APPLY 0x09000403 /* Use item */ -#define DIBUTTON_FPS_SELECT 0x09000404 /* Select next inventory item */ -#define DIBUTTON_FPS_CROUCH 0x09000405 /* Crouch/ climb down/ swim down */ -#define DIBUTTON_FPS_JUMP 0x09000406 /* Jump/ climb up/ swim up */ -#define DIAXIS_FPS_LOOKUPDOWN 0x09018203 /* Look up / down */ -#define DIBUTTON_FPS_STRAFE 0x09000407 /* Enable strafing while active */ -#define DIBUTTON_FPS_MENU 0x090004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIHATSWITCH_FPS_GLANCE 0x09004601 /* Look around */ -#define DIBUTTON_FPS_DISPLAY 0x09004408 /* Shows next on-screen display option/ map */ -#define DIAXIS_FPS_SIDESTEP 0x09024204 /* Sidestep */ -#define DIBUTTON_FPS_DODGE 0x09004409 /* Dodge */ -#define DIBUTTON_FPS_GLANCEL 0x0900440A /* Glance Left */ -#define DIBUTTON_FPS_GLANCER 0x0900440B /* Glance Right */ -#define DIBUTTON_FPS_FIRESECONDARY 0x0900440C /* Alternative fire button */ -#define DIBUTTON_FPS_ROTATE_LEFT_LINK 0x0900C4E4 /* Fallback rotate left button */ -#define DIBUTTON_FPS_ROTATE_RIGHT_LINK 0x0900C4EC /* Fallback rotate right button */ -#define DIBUTTON_FPS_FORWARD_LINK 0x090144E0 /* Fallback forward button */ -#define DIBUTTON_FPS_BACKWARD_LINK 0x090144E8 /* Fallback backward button */ -#define DIBUTTON_FPS_GLANCE_UP_LINK 0x0901C4E0 /* Fallback look up button */ -#define DIBUTTON_FPS_GLANCE_DOWN_LINK 0x0901C4E8 /* Fallback look down button */ -#define DIBUTTON_FPS_STEP_LEFT_LINK 0x090244E4 /* Fallback step left button */ -#define DIBUTTON_FPS_STEP_RIGHT_LINK 0x090244EC /* Fallback step right button */ -#define DIBUTTON_FPS_DEVICE 0x090044FE /* Show input device and controls */ -#define DIBUTTON_FPS_PAUSE 0x090044FC /* Start / Pause / Restart game */ - -/*--- Fighting - Third Person action - Perspective of camera is behind the main character ---*/ -#define DIVIRTUAL_FIGHTING_THIRDPERSON 0x0A000000 -#define DIAXIS_TPS_TURN 0x0A020201 /* Turn left/right */ -#define DIAXIS_TPS_MOVE 0x0A010202 /* Move forward/backward */ -#define DIBUTTON_TPS_RUN 0x0A000401 /* Run or walk toggle switch */ -#define DIBUTTON_TPS_ACTION 0x0A000402 /* Action Button */ -#define DIBUTTON_TPS_SELECT 0x0A000403 /* Select next weapon */ -#define DIBUTTON_TPS_USE 0x0A000404 /* Use inventory item currently selected */ -#define DIBUTTON_TPS_JUMP 0x0A000405 /* Character Jumps */ -#define DIBUTTON_TPS_MENU 0x0A0004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIHATSWITCH_TPS_GLANCE 0x0A004601 /* Look around */ -#define DIBUTTON_TPS_VIEW 0x0A004406 /* Select camera view */ -#define DIBUTTON_TPS_STEPLEFT 0x0A004407 /* Character takes a left step */ -#define DIBUTTON_TPS_STEPRIGHT 0x0A004408 /* Character takes a right step */ -#define DIAXIS_TPS_STEP 0x0A00C203 /* Character steps left/right */ -#define DIBUTTON_TPS_DODGE 0x0A004409 /* Character dodges or ducks */ -#define DIBUTTON_TPS_INVENTORY 0x0A00440A /* Cycle through inventory */ -#define DIBUTTON_TPS_TURN_LEFT_LINK 0x0A0244E4 /* Fallback turn left button */ -#define DIBUTTON_TPS_TURN_RIGHT_LINK 0x0A0244EC /* Fallback turn right button */ -#define DIBUTTON_TPS_FORWARD_LINK 0x0A0144E0 /* Fallback forward button */ -#define DIBUTTON_TPS_BACKWARD_LINK 0x0A0144E8 /* Fallback backward button */ -#define DIBUTTON_TPS_GLANCE_UP_LINK 0x0A07C4E0 /* Fallback look up button */ -#define DIBUTTON_TPS_GLANCE_DOWN_LINK 0x0A07C4E8 /* Fallback look down button */ -#define DIBUTTON_TPS_GLANCE_LEFT_LINK 0x0A07C4E4 /* Fallback glance up button */ -#define DIBUTTON_TPS_GLANCE_RIGHT_LINK 0x0A07C4EC /* Fallback glance right button */ -#define DIBUTTON_TPS_DEVICE 0x0A0044FE /* Show input device and controls */ -#define DIBUTTON_TPS_PAUSE 0x0A0044FC /* Start / Pause / Restart game */ - -/*--- Strategy - Role Playing - Navigation and problem solving are primary actions ---*/ -#define DIVIRTUAL_STRATEGY_ROLEPLAYING 0x0B000000 -#define DIAXIS_STRATEGYR_LATERAL 0x0B008201 /* sidestep - left/right */ -#define DIAXIS_STRATEGYR_MOVE 0x0B010202 /* move forward/backward */ -#define DIBUTTON_STRATEGYR_GET 0x0B000401 /* Acquire item */ -#define DIBUTTON_STRATEGYR_APPLY 0x0B000402 /* Use selected item */ -#define DIBUTTON_STRATEGYR_SELECT 0x0B000403 /* Select nextitem */ -#define DIBUTTON_STRATEGYR_ATTACK 0x0B000404 /* Attack */ -#define DIBUTTON_STRATEGYR_CAST 0x0B000405 /* Cast Spell */ -#define DIBUTTON_STRATEGYR_CROUCH 0x0B000406 /* Crouch */ -#define DIBUTTON_STRATEGYR_JUMP 0x0B000407 /* Jump */ -#define DIBUTTON_STRATEGYR_MENU 0x0B0004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIHATSWITCH_STRATEGYR_GLANCE 0x0B004601 /* Look around */ -#define DIBUTTON_STRATEGYR_MAP 0x0B004408 /* Cycle through map options */ -#define DIBUTTON_STRATEGYR_DISPLAY 0x0B004409 /* Shows next on-screen display option */ -#define DIAXIS_STRATEGYR_ROTATE 0x0B024203 /* Turn body left/right */ -#define DIBUTTON_STRATEGYR_LEFT_LINK 0x0B00C4E4 /* Fallback sidestep left button */ -#define DIBUTTON_STRATEGYR_RIGHT_LINK 0x0B00C4EC /* Fallback sidestep right button */ -#define DIBUTTON_STRATEGYR_FORWARD_LINK 0x0B0144E0 /* Fallback move forward button */ -#define DIBUTTON_STRATEGYR_BACK_LINK 0x0B0144E8 /* Fallback move backward button */ -#define DIBUTTON_STRATEGYR_ROTATE_LEFT_LINK 0x0B0244E4 /* Fallback turn body left button */ -#define DIBUTTON_STRATEGYR_ROTATE_RIGHT_LINK 0x0B0244EC /* Fallback turn body right button */ -#define DIBUTTON_STRATEGYR_DEVICE 0x0B0044FE /* Show input device and controls */ -#define DIBUTTON_STRATEGYR_PAUSE 0x0B0044FC /* Start / Pause / Restart game */ - -/*--- Strategy - Turn based - Navigation and problem solving are primary actions ---*/ -#define DIVIRTUAL_STRATEGY_TURN 0x0C000000 -#define DIAXIS_STRATEGYT_LATERAL 0x0C008201 /* Sidestep left/right */ -#define DIAXIS_STRATEGYT_MOVE 0x0C010202 /* Move forward/backwards */ -#define DIBUTTON_STRATEGYT_SELECT 0x0C000401 /* Select unit or object */ -#define DIBUTTON_STRATEGYT_INSTRUCT 0x0C000402 /* Cycle through instructions */ -#define DIBUTTON_STRATEGYT_APPLY 0x0C000403 /* Apply selected instruction */ -#define DIBUTTON_STRATEGYT_TEAM 0x0C000404 /* Select next team / cycle through all */ -#define DIBUTTON_STRATEGYT_TURN 0x0C000405 /* Indicate turn over */ -#define DIBUTTON_STRATEGYT_MENU 0x0C0004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIBUTTON_STRATEGYT_ZOOM 0x0C004406 /* Zoom - in / out */ -#define DIBUTTON_STRATEGYT_MAP 0x0C004407 /* cycle through map options */ -#define DIBUTTON_STRATEGYT_DISPLAY 0x0C004408 /* shows next on-screen display options */ -#define DIBUTTON_STRATEGYT_LEFT_LINK 0x0C00C4E4 /* Fallback sidestep left button */ -#define DIBUTTON_STRATEGYT_RIGHT_LINK 0x0C00C4EC /* Fallback sidestep right button */ -#define DIBUTTON_STRATEGYT_FORWARD_LINK 0x0C0144E0 /* Fallback move forward button */ -#define DIBUTTON_STRATEGYT_BACK_LINK 0x0C0144E8 /* Fallback move back button */ -#define DIBUTTON_STRATEGYT_DEVICE 0x0C0044FE /* Show input device and controls */ -#define DIBUTTON_STRATEGYT_PAUSE 0x0C0044FC /* Start / Pause / Restart game */ - -/*--- Sports - Hunting - Hunting ---*/ -#define DIVIRTUAL_SPORTS_HUNTING 0x0D000000 -#define DIAXIS_HUNTING_LATERAL 0x0D008201 /* sidestep left/right */ -#define DIAXIS_HUNTING_MOVE 0x0D010202 /* move forward/backwards */ -#define DIBUTTON_HUNTING_FIRE 0x0D000401 /* Fire selected weapon */ -#define DIBUTTON_HUNTING_AIM 0x0D000402 /* Select aim/move */ -#define DIBUTTON_HUNTING_WEAPON 0x0D000403 /* Select next weapon */ -#define DIBUTTON_HUNTING_BINOCULAR 0x0D000404 /* Look through Binoculars */ -#define DIBUTTON_HUNTING_CALL 0x0D000405 /* Make animal call */ -#define DIBUTTON_HUNTING_MAP 0x0D000406 /* View Map */ -#define DIBUTTON_HUNTING_SPECIAL 0x0D000407 /* Special game operation */ -#define DIBUTTON_HUNTING_MENU 0x0D0004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIHATSWITCH_HUNTING_GLANCE 0x0D004601 /* Look around */ -#define DIBUTTON_HUNTING_DISPLAY 0x0D004408 /* show next on-screen display option */ -#define DIAXIS_HUNTING_ROTATE 0x0D024203 /* Turn body left/right */ -#define DIBUTTON_HUNTING_CROUCH 0x0D004409 /* Crouch/ Climb / Swim down */ -#define DIBUTTON_HUNTING_JUMP 0x0D00440A /* Jump/ Climb up / Swim up */ -#define DIBUTTON_HUNTING_FIRESECONDARY 0x0D00440B /* Alternative fire button */ -#define DIBUTTON_HUNTING_LEFT_LINK 0x0D00C4E4 /* Fallback sidestep left button */ -#define DIBUTTON_HUNTING_RIGHT_LINK 0x0D00C4EC /* Fallback sidestep right button */ -#define DIBUTTON_HUNTING_FORWARD_LINK 0x0D0144E0 /* Fallback move forward button */ -#define DIBUTTON_HUNTING_BACK_LINK 0x0D0144E8 /* Fallback move back button */ -#define DIBUTTON_HUNTING_ROTATE_LEFT_LINK 0x0D0244E4 /* Fallback turn body left button */ -#define DIBUTTON_HUNTING_ROTATE_RIGHT_LINK 0x0D0244EC /* Fallback turn body right button */ -#define DIBUTTON_HUNTING_DEVICE 0x0D0044FE /* Show input device and controls */ -#define DIBUTTON_HUNTING_PAUSE 0x0D0044FC /* Start / Pause / Restart game */ - -/*--- Sports - Fishing - Catching Fish is primary objective ---*/ -#define DIVIRTUAL_SPORTS_FISHING 0x0E000000 -#define DIAXIS_FISHING_LATERAL 0x0E008201 /* sidestep left/right */ -#define DIAXIS_FISHING_MOVE 0x0E010202 /* move forward/backwards */ -#define DIBUTTON_FISHING_CAST 0x0E000401 /* Cast line */ -#define DIBUTTON_FISHING_TYPE 0x0E000402 /* Select cast type */ -#define DIBUTTON_FISHING_BINOCULAR 0x0E000403 /* Look through Binocular */ -#define DIBUTTON_FISHING_BAIT 0x0E000404 /* Select type of Bait */ -#define DIBUTTON_FISHING_MAP 0x0E000405 /* View Map */ -#define DIBUTTON_FISHING_MENU 0x0E0004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIHATSWITCH_FISHING_GLANCE 0x0E004601 /* Look around */ -#define DIBUTTON_FISHING_DISPLAY 0x0E004406 /* Show next on-screen display option */ -#define DIAXIS_FISHING_ROTATE 0x0E024203 /* Turn character left / right */ -#define DIBUTTON_FISHING_CROUCH 0x0E004407 /* Crouch/ Climb / Swim down */ -#define DIBUTTON_FISHING_JUMP 0x0E004408 /* Jump/ Climb up / Swim up */ -#define DIBUTTON_FISHING_LEFT_LINK 0x0E00C4E4 /* Fallback sidestep left button */ -#define DIBUTTON_FISHING_RIGHT_LINK 0x0E00C4EC /* Fallback sidestep right button */ -#define DIBUTTON_FISHING_FORWARD_LINK 0x0E0144E0 /* Fallback move forward button */ -#define DIBUTTON_FISHING_BACK_LINK 0x0E0144E8 /* Fallback move back button */ -#define DIBUTTON_FISHING_ROTATE_LEFT_LINK 0x0E0244E4 /* Fallback turn body left button */ -#define DIBUTTON_FISHING_ROTATE_RIGHT_LINK 0x0E0244EC /* Fallback turn body right button */ -#define DIBUTTON_FISHING_DEVICE 0x0E0044FE /* Show input device and controls */ -#define DIBUTTON_FISHING_PAUSE 0x0E0044FC /* Start / Pause / Restart game */ - -/*--- Sports - Baseball - Batting - Batter control is primary objective ---*/ -#define DIVIRTUAL_SPORTS_BASEBALL_BAT 0x0F000000 -#define DIAXIS_BASEBALLB_LATERAL 0x0F008201 /* Aim left / right */ -#define DIAXIS_BASEBALLB_MOVE 0x0F010202 /* Aim up / down */ -#define DIBUTTON_BASEBALLB_SELECT 0x0F000401 /* cycle through swing options */ -#define DIBUTTON_BASEBALLB_NORMAL 0x0F000402 /* normal swing */ -#define DIBUTTON_BASEBALLB_POWER 0x0F000403 /* swing for the fence */ -#define DIBUTTON_BASEBALLB_BUNT 0x0F000404 /* bunt */ -#define DIBUTTON_BASEBALLB_STEAL 0x0F000405 /* Base runner attempts to steal a base */ -#define DIBUTTON_BASEBALLB_BURST 0x0F000406 /* Base runner invokes burst of speed */ -#define DIBUTTON_BASEBALLB_SLIDE 0x0F000407 /* Base runner slides into base */ -#define DIBUTTON_BASEBALLB_CONTACT 0x0F000408 /* Contact swing */ -#define DIBUTTON_BASEBALLB_MENU 0x0F0004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIBUTTON_BASEBALLB_NOSTEAL 0x0F004409 /* Base runner goes back to a base */ -#define DIBUTTON_BASEBALLB_BOX 0x0F00440A /* Enter or exit batting box */ -#define DIBUTTON_BASEBALLB_LEFT_LINK 0x0F00C4E4 /* Fallback sidestep left button */ -#define DIBUTTON_BASEBALLB_RIGHT_LINK 0x0F00C4EC /* Fallback sidestep right button */ -#define DIBUTTON_BASEBALLB_FORWARD_LINK 0x0F0144E0 /* Fallback move forward button */ -#define DIBUTTON_BASEBALLB_BACK_LINK 0x0F0144E8 /* Fallback move back button */ -#define DIBUTTON_BASEBALLB_DEVICE 0x0F0044FE /* Show input device and controls */ -#define DIBUTTON_BASEBALLB_PAUSE 0x0F0044FC /* Start / Pause / Restart game */ - -/*--- Sports - Baseball - Pitching - Pitcher control is primary objective ---*/ -#define DIVIRTUAL_SPORTS_BASEBALL_PITCH 0x10000000 -#define DIAXIS_BASEBALLP_LATERAL 0x10008201 /* Aim left / right */ -#define DIAXIS_BASEBALLP_MOVE 0x10010202 /* Aim up / down */ -#define DIBUTTON_BASEBALLP_SELECT 0x10000401 /* cycle through pitch selections */ -#define DIBUTTON_BASEBALLP_PITCH 0x10000402 /* throw pitch */ -#define DIBUTTON_BASEBALLP_BASE 0x10000403 /* select base to throw to */ -#define DIBUTTON_BASEBALLP_THROW 0x10000404 /* throw to base */ -#define DIBUTTON_BASEBALLP_FAKE 0x10000405 /* Fake a throw to a base */ -#define DIBUTTON_BASEBALLP_MENU 0x100004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIBUTTON_BASEBALLP_WALK 0x10004406 /* Throw intentional walk / pitch out */ -#define DIBUTTON_BASEBALLP_LOOK 0x10004407 /* Look at runners on bases */ -#define DIBUTTON_BASEBALLP_LEFT_LINK 0x1000C4E4 /* Fallback sidestep left button */ -#define DIBUTTON_BASEBALLP_RIGHT_LINK 0x1000C4EC /* Fallback sidestep right button */ -#define DIBUTTON_BASEBALLP_FORWARD_LINK 0x100144E0 /* Fallback move forward button */ -#define DIBUTTON_BASEBALLP_BACK_LINK 0x100144E8 /* Fallback move back button */ -#define DIBUTTON_BASEBALLP_DEVICE 0x100044FE /* Show input device and controls */ -#define DIBUTTON_BASEBALLP_PAUSE 0x100044FC /* Start / Pause / Restart game */ - -/*--- Sports - Baseball - Fielding - Fielder control is primary objective ---*/ -#define DIVIRTUAL_SPORTS_BASEBALL_FIELD 0x11000000 -#define DIAXIS_BASEBALLF_LATERAL 0x11008201 /* Aim left / right */ -#define DIAXIS_BASEBALLF_MOVE 0x11010202 /* Aim up / down */ -#define DIBUTTON_BASEBALLF_NEAREST 0x11000401 /* Switch to fielder nearest to the ball */ -#define DIBUTTON_BASEBALLF_THROW1 0x11000402 /* Make conservative throw */ -#define DIBUTTON_BASEBALLF_THROW2 0x11000403 /* Make aggressive throw */ -#define DIBUTTON_BASEBALLF_BURST 0x11000404 /* Invoke burst of speed */ -#define DIBUTTON_BASEBALLF_JUMP 0x11000405 /* Jump to catch ball */ -#define DIBUTTON_BASEBALLF_DIVE 0x11000406 /* Dive to catch ball */ -#define DIBUTTON_BASEBALLF_MENU 0x110004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIBUTTON_BASEBALLF_SHIFTIN 0x11004407 /* Shift the infield positioning */ -#define DIBUTTON_BASEBALLF_SHIFTOUT 0x11004408 /* Shift the outfield positioning */ -#define DIBUTTON_BASEBALLF_AIM_LEFT_LINK 0x1100C4E4 /* Fallback aim left button */ -#define DIBUTTON_BASEBALLF_AIM_RIGHT_LINK 0x1100C4EC /* Fallback aim right button */ -#define DIBUTTON_BASEBALLF_FORWARD_LINK 0x110144E0 /* Fallback move forward button */ -#define DIBUTTON_BASEBALLF_BACK_LINK 0x110144E8 /* Fallback move back button */ -#define DIBUTTON_BASEBALLF_DEVICE 0x110044FE /* Show input device and controls */ -#define DIBUTTON_BASEBALLF_PAUSE 0x110044FC /* Start / Pause / Restart game */ - -/*--- Sports - Basketball - Offense - Offense ---*/ -#define DIVIRTUAL_SPORTS_BASKETBALL_OFFENSE 0x12000000 -#define DIAXIS_BBALLO_LATERAL 0x12008201 /* left / right */ -#define DIAXIS_BBALLO_MOVE 0x12010202 /* up / down */ -#define DIBUTTON_BBALLO_SHOOT 0x12000401 /* shoot basket */ -#define DIBUTTON_BBALLO_DUNK 0x12000402 /* dunk basket */ -#define DIBUTTON_BBALLO_PASS 0x12000403 /* throw pass */ -#define DIBUTTON_BBALLO_FAKE 0x12000404 /* fake shot or pass */ -#define DIBUTTON_BBALLO_SPECIAL 0x12000405 /* apply special move */ -#define DIBUTTON_BBALLO_PLAYER 0x12000406 /* select next player */ -#define DIBUTTON_BBALLO_BURST 0x12000407 /* invoke burst */ -#define DIBUTTON_BBALLO_CALL 0x12000408 /* call for ball / pass to me */ -#define DIBUTTON_BBALLO_MENU 0x120004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIHATSWITCH_BBALLO_GLANCE 0x12004601 /* scroll view */ -#define DIBUTTON_BBALLO_SCREEN 0x12004409 /* Call for screen */ -#define DIBUTTON_BBALLO_PLAY 0x1200440A /* Call for specific offensive play */ -#define DIBUTTON_BBALLO_JAB 0x1200440B /* Initiate fake drive to basket */ -#define DIBUTTON_BBALLO_POST 0x1200440C /* Perform post move */ -#define DIBUTTON_BBALLO_TIMEOUT 0x1200440D /* Time Out */ -#define DIBUTTON_BBALLO_SUBSTITUTE 0x1200440E /* substitute one player for another */ -#define DIBUTTON_BBALLO_LEFT_LINK 0x1200C4E4 /* Fallback sidestep left button */ -#define DIBUTTON_BBALLO_RIGHT_LINK 0x1200C4EC /* Fallback sidestep right button */ -#define DIBUTTON_BBALLO_FORWARD_LINK 0x120144E0 /* Fallback move forward button */ -#define DIBUTTON_BBALLO_BACK_LINK 0x120144E8 /* Fallback move back button */ -#define DIBUTTON_BBALLO_DEVICE 0x120044FE /* Show input device and controls */ -#define DIBUTTON_BBALLO_PAUSE 0x120044FC /* Start / Pause / Restart game */ - -/*--- Sports - Basketball - Defense - Defense ---*/ -#define DIVIRTUAL_SPORTS_BASKETBALL_DEFENSE 0x13000000 -#define DIAXIS_BBALLD_LATERAL 0x13008201 /* left / right */ -#define DIAXIS_BBALLD_MOVE 0x13010202 /* up / down */ -#define DIBUTTON_BBALLD_JUMP 0x13000401 /* jump to block shot */ -#define DIBUTTON_BBALLD_STEAL 0x13000402 /* attempt to steal ball */ -#define DIBUTTON_BBALLD_FAKE 0x13000403 /* fake block or steal */ -#define DIBUTTON_BBALLD_SPECIAL 0x13000404 /* apply special move */ -#define DIBUTTON_BBALLD_PLAYER 0x13000405 /* select next player */ -#define DIBUTTON_BBALLD_BURST 0x13000406 /* invoke burst */ -#define DIBUTTON_BBALLD_PLAY 0x13000407 /* call for specific defensive play */ -#define DIBUTTON_BBALLD_MENU 0x130004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIHATSWITCH_BBALLD_GLANCE 0x13004601 /* scroll view */ -#define DIBUTTON_BBALLD_TIMEOUT 0x13004408 /* Time Out */ -#define DIBUTTON_BBALLD_SUBSTITUTE 0x13004409 /* substitute one player for another */ -#define DIBUTTON_BBALLD_LEFT_LINK 0x1300C4E4 /* Fallback sidestep left button */ -#define DIBUTTON_BBALLD_RIGHT_LINK 0x1300C4EC /* Fallback sidestep right button */ -#define DIBUTTON_BBALLD_FORWARD_LINK 0x130144E0 /* Fallback move forward button */ -#define DIBUTTON_BBALLD_BACK_LINK 0x130144E8 /* Fallback move back button */ -#define DIBUTTON_BBALLD_DEVICE 0x130044FE /* Show input device and controls */ -#define DIBUTTON_BBALLD_PAUSE 0x130044FC /* Start / Pause / Restart game */ - -/*--- Sports - Football - Play - Play selection ---*/ -#define DIVIRTUAL_SPORTS_FOOTBALL_FIELD 0x14000000 -#define DIBUTTON_FOOTBALLP_PLAY 0x14000401 /* cycle through available plays */ -#define DIBUTTON_FOOTBALLP_SELECT 0x14000402 /* select play */ -#define DIBUTTON_FOOTBALLP_HELP 0x14000403 /* Bring up pop-up help */ -#define DIBUTTON_FOOTBALLP_MENU 0x140004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIBUTTON_FOOTBALLP_DEVICE 0x140044FE /* Show input device and controls */ -#define DIBUTTON_FOOTBALLP_PAUSE 0x140044FC /* Start / Pause / Restart game */ - -/*--- Sports - Football - QB - Offense: Quarterback / Kicker ---*/ -#define DIVIRTUAL_SPORTS_FOOTBALL_QBCK 0x15000000 -#define DIAXIS_FOOTBALLQ_LATERAL 0x15008201 /* Move / Aim: left / right */ -#define DIAXIS_FOOTBALLQ_MOVE 0x15010202 /* Move / Aim: up / down */ -#define DIBUTTON_FOOTBALLQ_SELECT 0x15000401 /* Select */ -#define DIBUTTON_FOOTBALLQ_SNAP 0x15000402 /* snap ball - start play */ -#define DIBUTTON_FOOTBALLQ_JUMP 0x15000403 /* jump over defender */ -#define DIBUTTON_FOOTBALLQ_SLIDE 0x15000404 /* Dive/Slide */ -#define DIBUTTON_FOOTBALLQ_PASS 0x15000405 /* throws pass to receiver */ -#define DIBUTTON_FOOTBALLQ_FAKE 0x15000406 /* pump fake pass or fake kick */ -#define DIBUTTON_FOOTBALLQ_MENU 0x150004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIBUTTON_FOOTBALLQ_FAKESNAP 0x15004407 /* Fake snap */ -#define DIBUTTON_FOOTBALLQ_MOTION 0x15004408 /* Send receivers in motion */ -#define DIBUTTON_FOOTBALLQ_AUDIBLE 0x15004409 /* Change offensive play at line of scrimmage */ -#define DIBUTTON_FOOTBALLQ_LEFT_LINK 0x1500C4E4 /* Fallback sidestep left button */ -#define DIBUTTON_FOOTBALLQ_RIGHT_LINK 0x1500C4EC /* Fallback sidestep right button */ -#define DIBUTTON_FOOTBALLQ_FORWARD_LINK 0x150144E0 /* Fallback move forward button */ -#define DIBUTTON_FOOTBALLQ_BACK_LINK 0x150144E8 /* Fallback move back button */ -#define DIBUTTON_FOOTBALLQ_DEVICE 0x150044FE /* Show input device and controls */ -#define DIBUTTON_FOOTBALLQ_PAUSE 0x150044FC /* Start / Pause / Restart game */ - -/*--- Sports - Football - Offense - Offense - Runner ---*/ -#define DIVIRTUAL_SPORTS_FOOTBALL_OFFENSE 0x16000000 -#define DIAXIS_FOOTBALLO_LATERAL 0x16008201 /* Move / Aim: left / right */ -#define DIAXIS_FOOTBALLO_MOVE 0x16010202 /* Move / Aim: up / down */ -#define DIBUTTON_FOOTBALLO_JUMP 0x16000401 /* jump or hurdle over defender */ -#define DIBUTTON_FOOTBALLO_LEFTARM 0x16000402 /* holds out left arm */ -#define DIBUTTON_FOOTBALLO_RIGHTARM 0x16000403 /* holds out right arm */ -#define DIBUTTON_FOOTBALLO_THROW 0x16000404 /* throw pass or lateral ball to another runner */ -#define DIBUTTON_FOOTBALLO_SPIN 0x16000405 /* Spin to avoid defenders */ -#define DIBUTTON_FOOTBALLO_MENU 0x160004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIBUTTON_FOOTBALLO_JUKE 0x16004406 /* Use special move to avoid defenders */ -#define DIBUTTON_FOOTBALLO_SHOULDER 0x16004407 /* Lower shoulder to run over defenders */ -#define DIBUTTON_FOOTBALLO_TURBO 0x16004408 /* Speed burst past defenders */ -#define DIBUTTON_FOOTBALLO_DIVE 0x16004409 /* Dive over defenders */ -#define DIBUTTON_FOOTBALLO_ZOOM 0x1600440A /* Zoom view in / out */ -#define DIBUTTON_FOOTBALLO_SUBSTITUTE 0x1600440B /* substitute one player for another */ -#define DIBUTTON_FOOTBALLO_LEFT_LINK 0x1600C4E4 /* Fallback sidestep left button */ -#define DIBUTTON_FOOTBALLO_RIGHT_LINK 0x1600C4EC /* Fallback sidestep right button */ -#define DIBUTTON_FOOTBALLO_FORWARD_LINK 0x160144E0 /* Fallback move forward button */ -#define DIBUTTON_FOOTBALLO_BACK_LINK 0x160144E8 /* Fallback move back button */ -#define DIBUTTON_FOOTBALLO_DEVICE 0x160044FE /* Show input device and controls */ -#define DIBUTTON_FOOTBALLO_PAUSE 0x160044FC /* Start / Pause / Restart game */ - -/*--- Sports - Football - Defense - Defense ---*/ -#define DIVIRTUAL_SPORTS_FOOTBALL_DEFENSE 0x17000000 -#define DIAXIS_FOOTBALLD_LATERAL 0x17008201 /* Move / Aim: left / right */ -#define DIAXIS_FOOTBALLD_MOVE 0x17010202 /* Move / Aim: up / down */ -#define DIBUTTON_FOOTBALLD_PLAY 0x17000401 /* cycle through available plays */ -#define DIBUTTON_FOOTBALLD_SELECT 0x17000402 /* select player closest to the ball */ -#define DIBUTTON_FOOTBALLD_JUMP 0x17000403 /* jump to intercept or block */ -#define DIBUTTON_FOOTBALLD_TACKLE 0x17000404 /* tackler runner */ -#define DIBUTTON_FOOTBALLD_FAKE 0x17000405 /* hold down to fake tackle or intercept */ -#define DIBUTTON_FOOTBALLD_SUPERTACKLE 0x17000406 /* Initiate special tackle */ -#define DIBUTTON_FOOTBALLD_MENU 0x170004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIBUTTON_FOOTBALLD_SPIN 0x17004407 /* Spin to beat offensive line */ -#define DIBUTTON_FOOTBALLD_SWIM 0x17004408 /* Swim to beat the offensive line */ -#define DIBUTTON_FOOTBALLD_BULLRUSH 0x17004409 /* Bull rush the offensive line */ -#define DIBUTTON_FOOTBALLD_RIP 0x1700440A /* Rip the offensive line */ -#define DIBUTTON_FOOTBALLD_AUDIBLE 0x1700440B /* Change defensive play at the line of scrimmage */ -#define DIBUTTON_FOOTBALLD_ZOOM 0x1700440C /* Zoom view in / out */ -#define DIBUTTON_FOOTBALLD_SUBSTITUTE 0x1700440D /* substitute one player for another */ -#define DIBUTTON_FOOTBALLD_LEFT_LINK 0x1700C4E4 /* Fallback sidestep left button */ -#define DIBUTTON_FOOTBALLD_RIGHT_LINK 0x1700C4EC /* Fallback sidestep right button */ -#define DIBUTTON_FOOTBALLD_FORWARD_LINK 0x170144E0 /* Fallback move forward button */ -#define DIBUTTON_FOOTBALLD_BACK_LINK 0x170144E8 /* Fallback move back button */ -#define DIBUTTON_FOOTBALLD_DEVICE 0x170044FE /* Show input device and controls */ -#define DIBUTTON_FOOTBALLD_PAUSE 0x170044FC /* Start / Pause / Restart game */ - -/*--- Sports - Golf - ---*/ -#define DIVIRTUAL_SPORTS_GOLF 0x18000000 -#define DIAXIS_GOLF_LATERAL 0x18008201 /* Move / Aim: left / right */ -#define DIAXIS_GOLF_MOVE 0x18010202 /* Move / Aim: up / down */ -#define DIBUTTON_GOLF_SWING 0x18000401 /* swing club */ -#define DIBUTTON_GOLF_SELECT 0x18000402 /* cycle between: club / swing strength / ball arc / ball spin */ -#define DIBUTTON_GOLF_UP 0x18000403 /* increase selection */ -#define DIBUTTON_GOLF_DOWN 0x18000404 /* decrease selection */ -#define DIBUTTON_GOLF_TERRAIN 0x18000405 /* shows terrain detail */ -#define DIBUTTON_GOLF_FLYBY 0x18000406 /* view the hole via a flyby */ -#define DIBUTTON_GOLF_MENU 0x180004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIHATSWITCH_GOLF_SCROLL 0x18004601 /* scroll view */ -#define DIBUTTON_GOLF_ZOOM 0x18004407 /* Zoom view in / out */ -#define DIBUTTON_GOLF_TIMEOUT 0x18004408 /* Call for time out */ -#define DIBUTTON_GOLF_SUBSTITUTE 0x18004409 /* substitute one player for another */ -#define DIBUTTON_GOLF_LEFT_LINK 0x1800C4E4 /* Fallback sidestep left button */ -#define DIBUTTON_GOLF_RIGHT_LINK 0x1800C4EC /* Fallback sidestep right button */ -#define DIBUTTON_GOLF_FORWARD_LINK 0x180144E0 /* Fallback move forward button */ -#define DIBUTTON_GOLF_BACK_LINK 0x180144E8 /* Fallback move back button */ -#define DIBUTTON_GOLF_DEVICE 0x180044FE /* Show input device and controls */ -#define DIBUTTON_GOLF_PAUSE 0x180044FC /* Start / Pause / Restart game */ - -/*--- Sports - Hockey - Offense - Offense ---*/ -#define DIVIRTUAL_SPORTS_HOCKEY_OFFENSE 0x19000000 -#define DIAXIS_HOCKEYO_LATERAL 0x19008201 /* Move / Aim: left / right */ -#define DIAXIS_HOCKEYO_MOVE 0x19010202 /* Move / Aim: up / down */ -#define DIBUTTON_HOCKEYO_SHOOT 0x19000401 /* Shoot */ -#define DIBUTTON_HOCKEYO_PASS 0x19000402 /* pass the puck */ -#define DIBUTTON_HOCKEYO_BURST 0x19000403 /* invoke speed burst */ -#define DIBUTTON_HOCKEYO_SPECIAL 0x19000404 /* invoke special move */ -#define DIBUTTON_HOCKEYO_FAKE 0x19000405 /* hold down to fake pass or kick */ -#define DIBUTTON_HOCKEYO_MENU 0x190004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIHATSWITCH_HOCKEYO_SCROLL 0x19004601 /* scroll view */ -#define DIBUTTON_HOCKEYO_ZOOM 0x19004406 /* Zoom view in / out */ -#define DIBUTTON_HOCKEYO_STRATEGY 0x19004407 /* Invoke coaching menu for strategy help */ -#define DIBUTTON_HOCKEYO_TIMEOUT 0x19004408 /* Call for time out */ -#define DIBUTTON_HOCKEYO_SUBSTITUTE 0x19004409 /* substitute one player for another */ -#define DIBUTTON_HOCKEYO_LEFT_LINK 0x1900C4E4 /* Fallback sidestep left button */ -#define DIBUTTON_HOCKEYO_RIGHT_LINK 0x1900C4EC /* Fallback sidestep right button */ -#define DIBUTTON_HOCKEYO_FORWARD_LINK 0x190144E0 /* Fallback move forward button */ -#define DIBUTTON_HOCKEYO_BACK_LINK 0x190144E8 /* Fallback move back button */ -#define DIBUTTON_HOCKEYO_DEVICE 0x190044FE /* Show input device and controls */ -#define DIBUTTON_HOCKEYO_PAUSE 0x190044FC /* Start / Pause / Restart game */ - -/*--- Sports - Hockey - Defense - Defense ---*/ -#define DIVIRTUAL_SPORTS_HOCKEY_DEFENSE 0x1A000000 -#define DIAXIS_HOCKEYD_LATERAL 0x1A008201 /* Move / Aim: left / right */ -#define DIAXIS_HOCKEYD_MOVE 0x1A010202 /* Move / Aim: up / down */ -#define DIBUTTON_HOCKEYD_PLAYER 0x1A000401 /* control player closest to the puck */ -#define DIBUTTON_HOCKEYD_STEAL 0x1A000402 /* attempt steal */ -#define DIBUTTON_HOCKEYD_BURST 0x1A000403 /* speed burst or body check */ -#define DIBUTTON_HOCKEYD_BLOCK 0x1A000404 /* block puck */ -#define DIBUTTON_HOCKEYD_FAKE 0x1A000405 /* hold down to fake tackle or intercept */ -#define DIBUTTON_HOCKEYD_MENU 0x1A0004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIHATSWITCH_HOCKEYD_SCROLL 0x1A004601 /* scroll view */ -#define DIBUTTON_HOCKEYD_ZOOM 0x1A004406 /* Zoom view in / out */ -#define DIBUTTON_HOCKEYD_STRATEGY 0x1A004407 /* Invoke coaching menu for strategy help */ -#define DIBUTTON_HOCKEYD_TIMEOUT 0x1A004408 /* Call for time out */ -#define DIBUTTON_HOCKEYD_SUBSTITUTE 0x1A004409 /* substitute one player for another */ -#define DIBUTTON_HOCKEYD_LEFT_LINK 0x1A00C4E4 /* Fallback sidestep left button */ -#define DIBUTTON_HOCKEYD_RIGHT_LINK 0x1A00C4EC /* Fallback sidestep right button */ -#define DIBUTTON_HOCKEYD_FORWARD_LINK 0x1A0144E0 /* Fallback move forward button */ -#define DIBUTTON_HOCKEYD_BACK_LINK 0x1A0144E8 /* Fallback move back button */ -#define DIBUTTON_HOCKEYD_DEVICE 0x1A0044FE /* Show input device and controls */ -#define DIBUTTON_HOCKEYD_PAUSE 0x1A0044FC /* Start / Pause / Restart game */ - -/*--- Sports - Hockey - Goalie - Goal tending ---*/ -#define DIVIRTUAL_SPORTS_HOCKEY_GOALIE 0x1B000000 -#define DIAXIS_HOCKEYG_LATERAL 0x1B008201 /* Move / Aim: left / right */ -#define DIAXIS_HOCKEYG_MOVE 0x1B010202 /* Move / Aim: up / down */ -#define DIBUTTON_HOCKEYG_PASS 0x1B000401 /* pass puck */ -#define DIBUTTON_HOCKEYG_POKE 0x1B000402 /* poke / check / hack */ -#define DIBUTTON_HOCKEYG_STEAL 0x1B000403 /* attempt steal */ -#define DIBUTTON_HOCKEYG_BLOCK 0x1B000404 /* block puck */ -#define DIBUTTON_HOCKEYG_MENU 0x1B0004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIHATSWITCH_HOCKEYG_SCROLL 0x1B004601 /* scroll view */ -#define DIBUTTON_HOCKEYG_ZOOM 0x1B004405 /* Zoom view in / out */ -#define DIBUTTON_HOCKEYG_STRATEGY 0x1B004406 /* Invoke coaching menu for strategy help */ -#define DIBUTTON_HOCKEYG_TIMEOUT 0x1B004407 /* Call for time out */ -#define DIBUTTON_HOCKEYG_SUBSTITUTE 0x1B004408 /* substitute one player for another */ -#define DIBUTTON_HOCKEYG_LEFT_LINK 0x1B00C4E4 /* Fallback sidestep left button */ -#define DIBUTTON_HOCKEYG_RIGHT_LINK 0x1B00C4EC /* Fallback sidestep right button */ -#define DIBUTTON_HOCKEYG_FORWARD_LINK 0x1B0144E0 /* Fallback move forward button */ -#define DIBUTTON_HOCKEYG_BACK_LINK 0x1B0144E8 /* Fallback move back button */ -#define DIBUTTON_HOCKEYG_DEVICE 0x1B0044FE /* Show input device and controls */ -#define DIBUTTON_HOCKEYG_PAUSE 0x1B0044FC /* Start / Pause / Restart game */ - -/*--- Sports - Mountain Biking - ---*/ -#define DIVIRTUAL_SPORTS_BIKING_MOUNTAIN 0x1C000000 -#define DIAXIS_BIKINGM_TURN 0x1C008201 /* left / right */ -#define DIAXIS_BIKINGM_PEDAL 0x1C010202 /* Pedal faster / slower / brake */ -#define DIBUTTON_BIKINGM_JUMP 0x1C000401 /* jump over obstacle */ -#define DIBUTTON_BIKINGM_CAMERA 0x1C000402 /* switch camera view */ -#define DIBUTTON_BIKINGM_SPECIAL1 0x1C000403 /* perform first special move */ -#define DIBUTTON_BIKINGM_SELECT 0x1C000404 /* Select */ -#define DIBUTTON_BIKINGM_SPECIAL2 0x1C000405 /* perform second special move */ -#define DIBUTTON_BIKINGM_MENU 0x1C0004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIHATSWITCH_BIKINGM_SCROLL 0x1C004601 /* scroll view */ -#define DIBUTTON_BIKINGM_ZOOM 0x1C004406 /* Zoom view in / out */ -#define DIAXIS_BIKINGM_BRAKE 0x1C044203 /* Brake axis */ -#define DIBUTTON_BIKINGM_LEFT_LINK 0x1C00C4E4 /* Fallback turn left button */ -#define DIBUTTON_BIKINGM_RIGHT_LINK 0x1C00C4EC /* Fallback turn right button */ -#define DIBUTTON_BIKINGM_FASTER_LINK 0x1C0144E0 /* Fallback pedal faster button */ -#define DIBUTTON_BIKINGM_SLOWER_LINK 0x1C0144E8 /* Fallback pedal slower button */ -#define DIBUTTON_BIKINGM_BRAKE_BUTTON_LINK 0x1C0444E8 /* Fallback brake button */ -#define DIBUTTON_BIKINGM_DEVICE 0x1C0044FE /* Show input device and controls */ -#define DIBUTTON_BIKINGM_PAUSE 0x1C0044FC /* Start / Pause / Restart game */ - -/*--- Sports: Skiing / Snowboarding / Skateboarding - ---*/ -#define DIVIRTUAL_SPORTS_SKIING 0x1D000000 -#define DIAXIS_SKIING_TURN 0x1D008201 /* left / right */ -#define DIAXIS_SKIING_SPEED 0x1D010202 /* faster / slower */ -#define DIBUTTON_SKIING_JUMP 0x1D000401 /* Jump */ -#define DIBUTTON_SKIING_CROUCH 0x1D000402 /* crouch down */ -#define DIBUTTON_SKIING_CAMERA 0x1D000403 /* switch camera view */ -#define DIBUTTON_SKIING_SPECIAL1 0x1D000404 /* perform first special move */ -#define DIBUTTON_SKIING_SELECT 0x1D000405 /* Select */ -#define DIBUTTON_SKIING_SPECIAL2 0x1D000406 /* perform second special move */ -#define DIBUTTON_SKIING_MENU 0x1D0004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIHATSWITCH_SKIING_GLANCE 0x1D004601 /* scroll view */ -#define DIBUTTON_SKIING_ZOOM 0x1D004407 /* Zoom view in / out */ -#define DIBUTTON_SKIING_LEFT_LINK 0x1D00C4E4 /* Fallback turn left button */ -#define DIBUTTON_SKIING_RIGHT_LINK 0x1D00C4EC /* Fallback turn right button */ -#define DIBUTTON_SKIING_FASTER_LINK 0x1D0144E0 /* Fallback increase speed button */ -#define DIBUTTON_SKIING_SLOWER_LINK 0x1D0144E8 /* Fallback decrease speed button */ -#define DIBUTTON_SKIING_DEVICE 0x1D0044FE /* Show input device and controls */ -#define DIBUTTON_SKIING_PAUSE 0x1D0044FC /* Start / Pause / Restart game */ - -/*--- Sports - Soccer - Offense - Offense ---*/ -#define DIVIRTUAL_SPORTS_SOCCER_OFFENSE 0x1E000000 -#define DIAXIS_SOCCERO_LATERAL 0x1E008201 /* Move / Aim: left / right */ -#define DIAXIS_SOCCERO_MOVE 0x1E010202 /* Move / Aim: up / down */ -#define DIAXIS_SOCCERO_BEND 0x1E018203 /* Bend to soccer shot/pass */ -#define DIBUTTON_SOCCERO_SHOOT 0x1E000401 /* Shoot the ball */ -#define DIBUTTON_SOCCERO_PASS 0x1E000402 /* Pass */ -#define DIBUTTON_SOCCERO_FAKE 0x1E000403 /* Fake */ -#define DIBUTTON_SOCCERO_PLAYER 0x1E000404 /* Select next player */ -#define DIBUTTON_SOCCERO_SPECIAL1 0x1E000405 /* Apply special move */ -#define DIBUTTON_SOCCERO_SELECT 0x1E000406 /* Select special move */ -#define DIBUTTON_SOCCERO_MENU 0x1E0004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIHATSWITCH_SOCCERO_GLANCE 0x1E004601 /* scroll view */ -#define DIBUTTON_SOCCERO_SUBSTITUTE 0x1E004407 /* Substitute one player for another */ -#define DIBUTTON_SOCCERO_SHOOTLOW 0x1E004408 /* Shoot the ball low */ -#define DIBUTTON_SOCCERO_SHOOTHIGH 0x1E004409 /* Shoot the ball high */ -#define DIBUTTON_SOCCERO_PASSTHRU 0x1E00440A /* Make a thru pass */ -#define DIBUTTON_SOCCERO_SPRINT 0x1E00440B /* Sprint / turbo boost */ -#define DIBUTTON_SOCCERO_CONTROL 0x1E00440C /* Obtain control of the ball */ -#define DIBUTTON_SOCCERO_HEAD 0x1E00440D /* Attempt to head the ball */ -#define DIBUTTON_SOCCERO_LEFT_LINK 0x1E00C4E4 /* Fallback sidestep left button */ -#define DIBUTTON_SOCCERO_RIGHT_LINK 0x1E00C4EC /* Fallback sidestep right button */ -#define DIBUTTON_SOCCERO_FORWARD_LINK 0x1E0144E0 /* Fallback move forward button */ -#define DIBUTTON_SOCCERO_BACK_LINK 0x1E0144E8 /* Fallback move back button */ -#define DIBUTTON_SOCCERO_DEVICE 0x1E0044FE /* Show input device and controls */ -#define DIBUTTON_SOCCERO_PAUSE 0x1E0044FC /* Start / Pause / Restart game */ - -/*--- Sports - Soccer - Defense - Defense ---*/ -#define DIVIRTUAL_SPORTS_SOCCER_DEFENSE 0x1F000000 -#define DIAXIS_SOCCERD_LATERAL 0x1F008201 /* Move / Aim: left / right */ -#define DIAXIS_SOCCERD_MOVE 0x1F010202 /* Move / Aim: up / down */ -#define DIBUTTON_SOCCERD_BLOCK 0x1F000401 /* Attempt to block shot */ -#define DIBUTTON_SOCCERD_STEAL 0x1F000402 /* Attempt to steal ball */ -#define DIBUTTON_SOCCERD_FAKE 0x1F000403 /* Fake a block or a steal */ -#define DIBUTTON_SOCCERD_PLAYER 0x1F000404 /* Select next player */ -#define DIBUTTON_SOCCERD_SPECIAL 0x1F000405 /* Apply special move */ -#define DIBUTTON_SOCCERD_SELECT 0x1F000406 /* Select special move */ -#define DIBUTTON_SOCCERD_SLIDE 0x1F000407 /* Attempt a slide tackle */ -#define DIBUTTON_SOCCERD_MENU 0x1F0004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIHATSWITCH_SOCCERD_GLANCE 0x1F004601 /* scroll view */ -#define DIBUTTON_SOCCERD_FOUL 0x1F004408 /* Initiate a foul / hard-foul */ -#define DIBUTTON_SOCCERD_HEAD 0x1F004409 /* Attempt a Header */ -#define DIBUTTON_SOCCERD_CLEAR 0x1F00440A /* Attempt to clear the ball down the field */ -#define DIBUTTON_SOCCERD_GOALIECHARGE 0x1F00440B /* Make the goalie charge out of the box */ -#define DIBUTTON_SOCCERD_SUBSTITUTE 0x1F00440C /* Substitute one player for another */ -#define DIBUTTON_SOCCERD_LEFT_LINK 0x1F00C4E4 /* Fallback sidestep left button */ -#define DIBUTTON_SOCCERD_RIGHT_LINK 0x1F00C4EC /* Fallback sidestep right button */ -#define DIBUTTON_SOCCERD_FORWARD_LINK 0x1F0144E0 /* Fallback move forward button */ -#define DIBUTTON_SOCCERD_BACK_LINK 0x1F0144E8 /* Fallback move back button */ -#define DIBUTTON_SOCCERD_DEVICE 0x1F0044FE /* Show input device and controls */ -#define DIBUTTON_SOCCERD_PAUSE 0x1F0044FC /* Start / Pause / Restart game */ - -/*--- Sports - Racquet - Tennis - Table-Tennis - Squash ---*/ -#define DIVIRTUAL_SPORTS_RACQUET 0x20000000 -#define DIAXIS_RACQUET_LATERAL 0x20008201 /* Move / Aim: left / right */ -#define DIAXIS_RACQUET_MOVE 0x20010202 /* Move / Aim: up / down */ -#define DIBUTTON_RACQUET_SWING 0x20000401 /* Swing racquet */ -#define DIBUTTON_RACQUET_BACKSWING 0x20000402 /* Swing backhand */ -#define DIBUTTON_RACQUET_SMASH 0x20000403 /* Smash shot */ -#define DIBUTTON_RACQUET_SPECIAL 0x20000404 /* Special shot */ -#define DIBUTTON_RACQUET_SELECT 0x20000405 /* Select special shot */ -#define DIBUTTON_RACQUET_MENU 0x200004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIHATSWITCH_RACQUET_GLANCE 0x20004601 /* scroll view */ -#define DIBUTTON_RACQUET_TIMEOUT 0x20004406 /* Call for time out */ -#define DIBUTTON_RACQUET_SUBSTITUTE 0x20004407 /* Substitute one player for another */ -#define DIBUTTON_RACQUET_LEFT_LINK 0x2000C4E4 /* Fallback sidestep left button */ -#define DIBUTTON_RACQUET_RIGHT_LINK 0x2000C4EC /* Fallback sidestep right button */ -#define DIBUTTON_RACQUET_FORWARD_LINK 0x200144E0 /* Fallback move forward button */ -#define DIBUTTON_RACQUET_BACK_LINK 0x200144E8 /* Fallback move back button */ -#define DIBUTTON_RACQUET_DEVICE 0x200044FE /* Show input device and controls */ -#define DIBUTTON_RACQUET_PAUSE 0x200044FC /* Start / Pause / Restart game */ - -/*--- Arcade- 2D - Side to Side movement ---*/ -#define DIVIRTUAL_ARCADE_SIDE2SIDE 0x21000000 -#define DIAXIS_ARCADES_LATERAL 0x21008201 /* left / right */ -#define DIAXIS_ARCADES_MOVE 0x21010202 /* up / down */ -#define DIBUTTON_ARCADES_THROW 0x21000401 /* throw object */ -#define DIBUTTON_ARCADES_CARRY 0x21000402 /* carry object */ -#define DIBUTTON_ARCADES_ATTACK 0x21000403 /* attack */ -#define DIBUTTON_ARCADES_SPECIAL 0x21000404 /* apply special move */ -#define DIBUTTON_ARCADES_SELECT 0x21000405 /* select special move */ -#define DIBUTTON_ARCADES_MENU 0x210004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIHATSWITCH_ARCADES_VIEW 0x21004601 /* scroll view left / right / up / down */ -#define DIBUTTON_ARCADES_LEFT_LINK 0x2100C4E4 /* Fallback sidestep left button */ -#define DIBUTTON_ARCADES_RIGHT_LINK 0x2100C4EC /* Fallback sidestep right button */ -#define DIBUTTON_ARCADES_FORWARD_LINK 0x210144E0 /* Fallback move forward button */ -#define DIBUTTON_ARCADES_BACK_LINK 0x210144E8 /* Fallback move back button */ -#define DIBUTTON_ARCADES_VIEW_UP_LINK 0x2107C4E0 /* Fallback scroll view up button */ -#define DIBUTTON_ARCADES_VIEW_DOWN_LINK 0x2107C4E8 /* Fallback scroll view down button */ -#define DIBUTTON_ARCADES_VIEW_LEFT_LINK 0x2107C4E4 /* Fallback scroll view left button */ -#define DIBUTTON_ARCADES_VIEW_RIGHT_LINK 0x2107C4EC /* Fallback scroll view right button */ -#define DIBUTTON_ARCADES_DEVICE 0x210044FE /* Show input device and controls */ -#define DIBUTTON_ARCADES_PAUSE 0x210044FC /* Start / Pause / Restart game */ - -/*--- Arcade - Platform Game - Character moves around on screen ---*/ -#define DIVIRTUAL_ARCADE_PLATFORM 0x22000000 -#define DIAXIS_ARCADEP_LATERAL 0x22008201 /* Left / right */ -#define DIAXIS_ARCADEP_MOVE 0x22010202 /* Up / down */ -#define DIBUTTON_ARCADEP_JUMP 0x22000401 /* Jump */ -#define DIBUTTON_ARCADEP_FIRE 0x22000402 /* Fire */ -#define DIBUTTON_ARCADEP_CROUCH 0x22000403 /* Crouch */ -#define DIBUTTON_ARCADEP_SPECIAL 0x22000404 /* Apply special move */ -#define DIBUTTON_ARCADEP_SELECT 0x22000405 /* Select special move */ -#define DIBUTTON_ARCADEP_MENU 0x220004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIHATSWITCH_ARCADEP_VIEW 0x22004601 /* Scroll view */ -#define DIBUTTON_ARCADEP_FIRESECONDARY 0x22004406 /* Alternative fire button */ -#define DIBUTTON_ARCADEP_LEFT_LINK 0x2200C4E4 /* Fallback sidestep left button */ -#define DIBUTTON_ARCADEP_RIGHT_LINK 0x2200C4EC /* Fallback sidestep right button */ -#define DIBUTTON_ARCADEP_FORWARD_LINK 0x220144E0 /* Fallback move forward button */ -#define DIBUTTON_ARCADEP_BACK_LINK 0x220144E8 /* Fallback move back button */ -#define DIBUTTON_ARCADEP_VIEW_UP_LINK 0x2207C4E0 /* Fallback scroll view up button */ -#define DIBUTTON_ARCADEP_VIEW_DOWN_LINK 0x2207C4E8 /* Fallback scroll view down button */ -#define DIBUTTON_ARCADEP_VIEW_LEFT_LINK 0x2207C4E4 /* Fallback scroll view left button */ -#define DIBUTTON_ARCADEP_VIEW_RIGHT_LINK 0x2207C4EC /* Fallback scroll view right button */ -#define DIBUTTON_ARCADEP_DEVICE 0x220044FE /* Show input device and controls */ -#define DIBUTTON_ARCADEP_PAUSE 0x220044FC /* Start / Pause / Restart game */ - -/*--- CAD - 2D Object Control - Controls to select and move objects in 2D ---*/ -#define DIVIRTUAL_CAD_2DCONTROL 0x23000000 -#define DIAXIS_2DCONTROL_LATERAL 0x23008201 /* Move view left / right */ -#define DIAXIS_2DCONTROL_MOVE 0x23010202 /* Move view up / down */ -#define DIAXIS_2DCONTROL_INOUT 0x23018203 /* Zoom - in / out */ -#define DIBUTTON_2DCONTROL_SELECT 0x23000401 /* Select Object */ -#define DIBUTTON_2DCONTROL_SPECIAL1 0x23000402 /* Do first special operation */ -#define DIBUTTON_2DCONTROL_SPECIAL 0x23000403 /* Select special operation */ -#define DIBUTTON_2DCONTROL_SPECIAL2 0x23000404 /* Do second special operation */ -#define DIBUTTON_2DCONTROL_MENU 0x230004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIHATSWITCH_2DCONTROL_HATSWITCH 0x23004601 /* Hat switch */ -#define DIAXIS_2DCONTROL_ROTATEZ 0x23024204 /* Rotate view clockwise / counterclockwise */ -#define DIBUTTON_2DCONTROL_DISPLAY 0x23004405 /* Shows next on-screen display options */ -#define DIBUTTON_2DCONTROL_DEVICE 0x230044FE /* Show input device and controls */ -#define DIBUTTON_2DCONTROL_PAUSE 0x230044FC /* Start / Pause / Restart game */ - -/*--- CAD - 3D object control - Controls to select and move objects within a 3D environment ---*/ -#define DIVIRTUAL_CAD_3DCONTROL 0x24000000 -#define DIAXIS_3DCONTROL_LATERAL 0x24008201 /* Move view left / right */ -#define DIAXIS_3DCONTROL_MOVE 0x24010202 /* Move view up / down */ -#define DIAXIS_3DCONTROL_INOUT 0x24018203 /* Zoom - in / out */ -#define DIBUTTON_3DCONTROL_SELECT 0x24000401 /* Select Object */ -#define DIBUTTON_3DCONTROL_SPECIAL1 0x24000402 /* Do first special operation */ -#define DIBUTTON_3DCONTROL_SPECIAL 0x24000403 /* Select special operation */ -#define DIBUTTON_3DCONTROL_SPECIAL2 0x24000404 /* Do second special operation */ -#define DIBUTTON_3DCONTROL_MENU 0x240004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIHATSWITCH_3DCONTROL_HATSWITCH 0x24004601 /* Hat switch */ -#define DIAXIS_3DCONTROL_ROTATEX 0x24034204 /* Rotate view forward or up / backward or down */ -#define DIAXIS_3DCONTROL_ROTATEY 0x2402C205 /* Rotate view clockwise / counterclockwise */ -#define DIAXIS_3DCONTROL_ROTATEZ 0x24024206 /* Rotate view left / right */ -#define DIBUTTON_3DCONTROL_DISPLAY 0x24004405 /* Show next on-screen display options */ -#define DIBUTTON_3DCONTROL_DEVICE 0x240044FE /* Show input device and controls */ -#define DIBUTTON_3DCONTROL_PAUSE 0x240044FC /* Start / Pause / Restart game */ - -/*--- CAD - 3D Navigation - Fly through - Controls for 3D modeling ---*/ -#define DIVIRTUAL_CAD_FLYBY 0x25000000 -#define DIAXIS_CADF_LATERAL 0x25008201 /* move view left / right */ -#define DIAXIS_CADF_MOVE 0x25010202 /* move view up / down */ -#define DIAXIS_CADF_INOUT 0x25018203 /* in / out */ -#define DIBUTTON_CADF_SELECT 0x25000401 /* Select Object */ -#define DIBUTTON_CADF_SPECIAL1 0x25000402 /* do first special operation */ -#define DIBUTTON_CADF_SPECIAL 0x25000403 /* Select special operation */ -#define DIBUTTON_CADF_SPECIAL2 0x25000404 /* do second special operation */ -#define DIBUTTON_CADF_MENU 0x250004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIHATSWITCH_CADF_HATSWITCH 0x25004601 /* Hat switch */ -#define DIAXIS_CADF_ROTATEX 0x25034204 /* Rotate view forward or up / backward or down */ -#define DIAXIS_CADF_ROTATEY 0x2502C205 /* Rotate view clockwise / counterclockwise */ -#define DIAXIS_CADF_ROTATEZ 0x25024206 /* Rotate view left / right */ -#define DIBUTTON_CADF_DISPLAY 0x25004405 /* shows next on-screen display options */ -#define DIBUTTON_CADF_DEVICE 0x250044FE /* Show input device and controls */ -#define DIBUTTON_CADF_PAUSE 0x250044FC /* Start / Pause / Restart game */ - -/*--- CAD - 3D Model Control - Controls for 3D modeling ---*/ -#define DIVIRTUAL_CAD_MODEL 0x26000000 -#define DIAXIS_CADM_LATERAL 0x26008201 /* move view left / right */ -#define DIAXIS_CADM_MOVE 0x26010202 /* move view up / down */ -#define DIAXIS_CADM_INOUT 0x26018203 /* in / out */ -#define DIBUTTON_CADM_SELECT 0x26000401 /* Select Object */ -#define DIBUTTON_CADM_SPECIAL1 0x26000402 /* do first special operation */ -#define DIBUTTON_CADM_SPECIAL 0x26000403 /* Select special operation */ -#define DIBUTTON_CADM_SPECIAL2 0x26000404 /* do second special operation */ -#define DIBUTTON_CADM_MENU 0x260004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIHATSWITCH_CADM_HATSWITCH 0x26004601 /* Hat switch */ -#define DIAXIS_CADM_ROTATEX 0x26034204 /* Rotate view forward or up / backward or down */ -#define DIAXIS_CADM_ROTATEY 0x2602C205 /* Rotate view clockwise / counterclockwise */ -#define DIAXIS_CADM_ROTATEZ 0x26024206 /* Rotate view left / right */ -#define DIBUTTON_CADM_DISPLAY 0x26004405 /* shows next on-screen display options */ -#define DIBUTTON_CADM_DEVICE 0x260044FE /* Show input device and controls */ -#define DIBUTTON_CADM_PAUSE 0x260044FC /* Start / Pause / Restart game */ - -/*--- Control - Media Equipment - Remote ---*/ -#define DIVIRTUAL_REMOTE_CONTROL 0x27000000 -#define DIAXIS_REMOTE_SLIDER 0x27050201 /* Slider for adjustment: volume / color / bass / etc */ -#define DIBUTTON_REMOTE_MUTE 0x27000401 /* Set volume on current device to zero */ -#define DIBUTTON_REMOTE_SELECT 0x27000402 /* Next/previous: channel/ track / chapter / picture / station */ -#define DIBUTTON_REMOTE_PLAY 0x27002403 /* Start or pause entertainment on current device */ -#define DIBUTTON_REMOTE_CUE 0x27002404 /* Move through current media */ -#define DIBUTTON_REMOTE_REVIEW 0x27002405 /* Move through current media */ -#define DIBUTTON_REMOTE_CHANGE 0x27002406 /* Select next device */ -#define DIBUTTON_REMOTE_RECORD 0x27002407 /* Start recording the current media */ -#define DIBUTTON_REMOTE_MENU 0x270004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIAXIS_REMOTE_SLIDER2 0x27054202 /* Slider for adjustment: volume */ -#define DIBUTTON_REMOTE_TV 0x27005C08 /* Select TV */ -#define DIBUTTON_REMOTE_CABLE 0x27005C09 /* Select cable box */ -#define DIBUTTON_REMOTE_CD 0x27005C0A /* Select CD player */ -#define DIBUTTON_REMOTE_VCR 0x27005C0B /* Select VCR */ -#define DIBUTTON_REMOTE_TUNER 0x27005C0C /* Select tuner */ -#define DIBUTTON_REMOTE_DVD 0x27005C0D /* Select DVD player */ -#define DIBUTTON_REMOTE_ADJUST 0x27005C0E /* Enter device adjustment menu */ -#define DIBUTTON_REMOTE_DIGIT0 0x2700540F /* Digit 0 */ -#define DIBUTTON_REMOTE_DIGIT1 0x27005410 /* Digit 1 */ -#define DIBUTTON_REMOTE_DIGIT2 0x27005411 /* Digit 2 */ -#define DIBUTTON_REMOTE_DIGIT3 0x27005412 /* Digit 3 */ -#define DIBUTTON_REMOTE_DIGIT4 0x27005413 /* Digit 4 */ -#define DIBUTTON_REMOTE_DIGIT5 0x27005414 /* Digit 5 */ -#define DIBUTTON_REMOTE_DIGIT6 0x27005415 /* Digit 6 */ -#define DIBUTTON_REMOTE_DIGIT7 0x27005416 /* Digit 7 */ -#define DIBUTTON_REMOTE_DIGIT8 0x27005417 /* Digit 8 */ -#define DIBUTTON_REMOTE_DIGIT9 0x27005418 /* Digit 9 */ -#define DIBUTTON_REMOTE_DEVICE 0x270044FE /* Show input device and controls */ -#define DIBUTTON_REMOTE_PAUSE 0x270044FC /* Start / Pause / Restart game */ - -/*--- Control- Web - Help or Browser ---*/ -#define DIVIRTUAL_BROWSER_CONTROL 0x28000000 -#define DIAXIS_BROWSER_LATERAL 0x28008201 /* Move on screen pointer */ -#define DIAXIS_BROWSER_MOVE 0x28010202 /* Move on screen pointer */ -#define DIBUTTON_BROWSER_SELECT 0x28000401 /* Select current item */ -#define DIAXIS_BROWSER_VIEW 0x28018203 /* Move view up/down */ -#define DIBUTTON_BROWSER_REFRESH 0x28000402 /* Refresh */ -#define DIBUTTON_BROWSER_MENU 0x280004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIBUTTON_BROWSER_SEARCH 0x28004403 /* Use search tool */ -#define DIBUTTON_BROWSER_STOP 0x28004404 /* Cease current update */ -#define DIBUTTON_BROWSER_HOME 0x28004405 /* Go directly to "home" location */ -#define DIBUTTON_BROWSER_FAVORITES 0x28004406 /* Mark current site as favorite */ -#define DIBUTTON_BROWSER_NEXT 0x28004407 /* Select Next page */ -#define DIBUTTON_BROWSER_PREVIOUS 0x28004408 /* Select Previous page */ -#define DIBUTTON_BROWSER_HISTORY 0x28004409 /* Show/Hide History */ -#define DIBUTTON_BROWSER_PRINT 0x2800440A /* Print current page */ -#define DIBUTTON_BROWSER_DEVICE 0x280044FE /* Show input device and controls */ -#define DIBUTTON_BROWSER_PAUSE 0x280044FC /* Start / Pause / Restart game */ - -/*--- Driving Simulator - Giant Walking Robot - Walking tank with weapons ---*/ -#define DIVIRTUAL_DRIVING_MECHA 0x29000000 -#define DIAXIS_MECHA_STEER 0x29008201 /* Turns mecha left/right */ -#define DIAXIS_MECHA_TORSO 0x29010202 /* Tilts torso forward/backward */ -#define DIAXIS_MECHA_ROTATE 0x29020203 /* Turns torso left/right */ -#define DIAXIS_MECHA_THROTTLE 0x29038204 /* Engine Speed */ -#define DIBUTTON_MECHA_FIRE 0x29000401 /* Fire */ -#define DIBUTTON_MECHA_WEAPONS 0x29000402 /* Select next weapon group */ -#define DIBUTTON_MECHA_TARGET 0x29000403 /* Select closest enemy available target */ -#define DIBUTTON_MECHA_REVERSE 0x29000404 /* Toggles throttle in/out of reverse */ -#define DIBUTTON_MECHA_ZOOM 0x29000405 /* Zoom in/out targeting reticule */ -#define DIBUTTON_MECHA_JUMP 0x29000406 /* Fires jump jets */ -#define DIBUTTON_MECHA_MENU 0x290004FD /* Show menu options */ -/*--- Priority 2 controls ---*/ - -#define DIBUTTON_MECHA_CENTER 0x29004407 /* Center torso to legs */ -#define DIHATSWITCH_MECHA_GLANCE 0x29004601 /* Look around */ -#define DIBUTTON_MECHA_VIEW 0x29004408 /* Cycle through view options */ -#define DIBUTTON_MECHA_FIRESECONDARY 0x29004409 /* Alternative fire button */ -#define DIBUTTON_MECHA_LEFT_LINK 0x2900C4E4 /* Fallback steer left button */ -#define DIBUTTON_MECHA_RIGHT_LINK 0x2900C4EC /* Fallback steer right button */ -#define DIBUTTON_MECHA_FORWARD_LINK 0x290144E0 /* Fallback tilt torso forward button */ -#define DIBUTTON_MECHA_BACK_LINK 0x290144E8 /* Fallback tilt toroso backward button */ -#define DIBUTTON_MECHA_ROTATE_LEFT_LINK 0x290244E4 /* Fallback rotate toroso right button */ -#define DIBUTTON_MECHA_ROTATE_RIGHT_LINK 0x290244EC /* Fallback rotate torso left button */ -#define DIBUTTON_MECHA_FASTER_LINK 0x2903C4E0 /* Fallback increase engine speed */ -#define DIBUTTON_MECHA_SLOWER_LINK 0x2903C4E8 /* Fallback decrease engine speed */ -#define DIBUTTON_MECHA_DEVICE 0x290044FE /* Show input device and controls */ -#define DIBUTTON_MECHA_PAUSE 0x290044FC /* Start / Pause / Restart game */ - -/* - * "ANY" semantics can be used as a last resort to get mappings for actions - * that match nothing in the chosen virtual genre. These semantics will be - * mapped at a lower priority that virtual genre semantics. Also, hardware - * vendors will not be able to provide sensible mappings for these unless - * they provide application specific mappings. - */ -#define DIAXIS_ANY_X_1 0xFF00C201 -#define DIAXIS_ANY_X_2 0xFF00C202 -#define DIAXIS_ANY_Y_1 0xFF014201 -#define DIAXIS_ANY_Y_2 0xFF014202 -#define DIAXIS_ANY_Z_1 0xFF01C201 -#define DIAXIS_ANY_Z_2 0xFF01C202 -#define DIAXIS_ANY_R_1 0xFF024201 -#define DIAXIS_ANY_R_2 0xFF024202 -#define DIAXIS_ANY_U_1 0xFF02C201 -#define DIAXIS_ANY_U_2 0xFF02C202 -#define DIAXIS_ANY_V_1 0xFF034201 -#define DIAXIS_ANY_V_2 0xFF034202 -#define DIAXIS_ANY_A_1 0xFF03C201 -#define DIAXIS_ANY_A_2 0xFF03C202 -#define DIAXIS_ANY_B_1 0xFF044201 -#define DIAXIS_ANY_B_2 0xFF044202 -#define DIAXIS_ANY_C_1 0xFF04C201 -#define DIAXIS_ANY_C_2 0xFF04C202 -#define DIAXIS_ANY_S_1 0xFF054201 -#define DIAXIS_ANY_S_2 0xFF054202 - -#define DIAXIS_ANY_1 0xFF004201 -#define DIAXIS_ANY_2 0xFF004202 -#define DIAXIS_ANY_3 0xFF004203 -#define DIAXIS_ANY_4 0xFF004204 - -#define DIPOV_ANY_1 0xFF004601 -#define DIPOV_ANY_2 0xFF004602 -#define DIPOV_ANY_3 0xFF004603 -#define DIPOV_ANY_4 0xFF004604 - -#define DIBUTTON_ANY(instance) ( 0xFF004400 | instance ) - - -#ifdef __cplusplus -}; -#endif - -#endif /* __DINPUT_INCLUDED__ */ - -/**************************************************************************** - * - * Definitions for non-IDirectInput (VJoyD) features defined more recently - * than the current sdk files - * - ****************************************************************************/ - -#ifdef _INC_MMSYSTEM -#ifndef MMNOJOY - -#ifndef __VJOYDX_INCLUDED__ -#define __VJOYDX_INCLUDED__ - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * Flag to indicate that the dwReserved2 field of the JOYINFOEX structure - * contains mini-driver specific data to be passed by VJoyD to the mini- - * driver instead of doing a poll. - */ -#define JOY_PASSDRIVERDATA 0x10000000l - -/* - * Informs the joystick driver that the configuration has been changed - * and should be reloaded from the registery. - * dwFlags is reserved and should be set to zero - */ -WINMMAPI MMRESULT WINAPI joyConfigChanged( DWORD dwFlags ); - -#ifndef DIJ_RINGZERO -/* - * Invoke the joystick control panel directly, using the passed window handle - * as the parent of the dialog. This API is only supported for compatibility - * purposes; new applications should use the RunControlPanel method of a - * device interface for a game controller. - * The API is called by using the function pointer returned by - * GetProcAddress( hCPL, TEXT("ShowJoyCPL") ) where hCPL is a HMODULE returned - * by LoadLibrary( TEXT("joy.cpl") ). The typedef is provided to allow - * declaration and casting of an appropriately typed variable. - */ -void WINAPI ShowJoyCPL( HWND hWnd ); -typedef void (WINAPI* LPFNSHOWJOYCPL)( HWND hWnd ); -#endif /* DIJ_RINGZERO */ - - -/* - * Hardware Setting indicating that the device is a headtracker - */ -#define JOY_HWS_ISHEADTRACKER 0x02000000l - -/* - * Hardware Setting indicating that the VxD is used to replace - * the standard analog polling - */ -#define JOY_HWS_ISGAMEPORTDRIVER 0x04000000l - -/* - * Hardware Setting indicating that the driver needs a standard - * gameport in order to communicate with the device. - */ -#define JOY_HWS_ISANALOGPORTDRIVER 0x08000000l - -/* - * Hardware Setting indicating that VJoyD should not load this - * driver, it will be loaded externally and will register with - * VJoyD of it's own accord. - */ -#define JOY_HWS_AUTOLOAD 0x10000000l - -/* - * Hardware Setting indicating that the driver acquires any - * resources needed without needing a devnode through VJoyD. - */ -#define JOY_HWS_NODEVNODE 0x20000000l - - -/* - * Hardware Setting indicating that the device is a gameport bus - */ -#define JOY_HWS_ISGAMEPORTBUS 0x80000000l -#define JOY_HWS_GAMEPORTBUSBUSY 0x00000001l - -/* - * Usage Setting indicating that the settings are volatile and - * should be removed if still present on a reboot. - */ -#define JOY_US_VOLATILE 0x00000008L - -#ifdef __cplusplus -}; -#endif - -#endif /* __VJOYDX_INCLUDED__ */ - -#endif /* not MMNOJOY */ -#endif /* _INC_MMSYSTEM */ - -/**************************************************************************** - * - * Definitions for non-IDirectInput (VJoyD) features defined more recently - * than the current ddk files - * - ****************************************************************************/ - -#ifndef DIJ_RINGZERO - -#ifdef _INC_MMDDK -#ifndef MMNOJOYDEV - -#ifndef __VJOYDXD_INCLUDED__ -#define __VJOYDXD_INCLUDED__ -/* - * Poll type in which the do_other field of the JOYOEMPOLLDATA - * structure contains mini-driver specific data passed from an app. - */ -#define JOY_OEMPOLL_PASSDRIVERDATA 7 - -#endif /* __VJOYDXD_INCLUDED__ */ - -#endif /* not MMNOJOYDEV */ -#endif /* _INC_MMDDK */ - -#endif /* DIJ_RINGZERO */ - +/**************************************************************************** + * + * Copyright (C) 1996-2000 Microsoft Corporation. All Rights Reserved. + * + * File: dinput.h + * Content: DirectInput include file + * + ****************************************************************************/ + +#ifndef __DINPUT_INCLUDED__ +#define __DINPUT_INCLUDED__ + +#ifndef DIJ_RINGZERO + +#ifdef _WIN32 +#define COM_NO_WINDOWS_H +#include +#endif + +#endif /* DIJ_RINGZERO */ + +#ifdef __cplusplus +extern "C" { +#endif + + + + + +/* + * To build applications for older versions of DirectInput + * + * #define DIRECTINPUT_VERSION [ 0x0300 | 0x0500 | 0x0700 ] + * + * before #include . By default, #include + * will produce a DirectX 8-compatible header file. + * + */ + +#define DIRECTINPUT_HEADER_VERSION 0x0800 +#ifndef DIRECTINPUT_VERSION +#define DIRECTINPUT_VERSION DIRECTINPUT_HEADER_VERSION +#pragma message(__FILE__ ": DIRECTINPUT_VERSION undefined. Defaulting to version 0x0800") +#endif + +#ifndef DIJ_RINGZERO + +/**************************************************************************** + * + * Class IDs + * + ****************************************************************************/ + +DEFINE_GUID(CLSID_DirectInput, 0x25E609E0,0xB259,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); +DEFINE_GUID(CLSID_DirectInputDevice, 0x25E609E1,0xB259,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); + +DEFINE_GUID(CLSID_DirectInput8, 0x25E609E4,0xB259,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); +DEFINE_GUID(CLSID_DirectInputDevice8,0x25E609E5,0xB259,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); + +/**************************************************************************** + * + * Interfaces + * + ****************************************************************************/ + +DEFINE_GUID(IID_IDirectInputA, 0x89521360,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); +DEFINE_GUID(IID_IDirectInputW, 0x89521361,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); +DEFINE_GUID(IID_IDirectInput2A, 0x5944E662,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); +DEFINE_GUID(IID_IDirectInput2W, 0x5944E663,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); +DEFINE_GUID(IID_IDirectInput7A, 0x9A4CB684,0x236D,0x11D3,0x8E,0x9D,0x00,0xC0,0x4F,0x68,0x44,0xAE); +DEFINE_GUID(IID_IDirectInput7W, 0x9A4CB685,0x236D,0x11D3,0x8E,0x9D,0x00,0xC0,0x4F,0x68,0x44,0xAE); +DEFINE_GUID(IID_IDirectInput8A, 0xBF798030,0x483A,0x4DA2,0xAA,0x99,0x5D,0x64,0xED,0x36,0x97,0x00); +DEFINE_GUID(IID_IDirectInput8W, 0xBF798031,0x483A,0x4DA2,0xAA,0x99,0x5D,0x64,0xED,0x36,0x97,0x00); +DEFINE_GUID(IID_IDirectInputDeviceA, 0x5944E680,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); +DEFINE_GUID(IID_IDirectInputDeviceW, 0x5944E681,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); +DEFINE_GUID(IID_IDirectInputDevice2A,0x5944E682,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); +DEFINE_GUID(IID_IDirectInputDevice2W,0x5944E683,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); +DEFINE_GUID(IID_IDirectInputDevice7A,0x57D7C6BC,0x2356,0x11D3,0x8E,0x9D,0x00,0xC0,0x4F,0x68,0x44,0xAE); +DEFINE_GUID(IID_IDirectInputDevice7W,0x57D7C6BD,0x2356,0x11D3,0x8E,0x9D,0x00,0xC0,0x4F,0x68,0x44,0xAE); +DEFINE_GUID(IID_IDirectInputDevice8A,0x54D41080,0xDC15,0x4833,0xA4,0x1B,0x74,0x8F,0x73,0xA3,0x81,0x79); +DEFINE_GUID(IID_IDirectInputDevice8W,0x54D41081,0xDC15,0x4833,0xA4,0x1B,0x74,0x8F,0x73,0xA3,0x81,0x79); +DEFINE_GUID(IID_IDirectInputEffect, 0xE7E1F7C0,0x88D2,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); + +/**************************************************************************** + * + * Predefined object types + * + ****************************************************************************/ + +DEFINE_GUID(GUID_XAxis, 0xA36D02E0,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); +DEFINE_GUID(GUID_YAxis, 0xA36D02E1,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); +DEFINE_GUID(GUID_ZAxis, 0xA36D02E2,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); +DEFINE_GUID(GUID_RxAxis, 0xA36D02F4,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); +DEFINE_GUID(GUID_RyAxis, 0xA36D02F5,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); +DEFINE_GUID(GUID_RzAxis, 0xA36D02E3,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); +DEFINE_GUID(GUID_Slider, 0xA36D02E4,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); + +DEFINE_GUID(GUID_Button, 0xA36D02F0,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); +DEFINE_GUID(GUID_Key, 0x55728220,0xD33C,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); + +DEFINE_GUID(GUID_POV, 0xA36D02F2,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); + +DEFINE_GUID(GUID_Unknown, 0xA36D02F3,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); + +/**************************************************************************** + * + * Predefined product GUIDs + * + ****************************************************************************/ + +DEFINE_GUID(GUID_SysMouse, 0x6F1D2B60,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); +DEFINE_GUID(GUID_SysKeyboard,0x6F1D2B61,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); +DEFINE_GUID(GUID_Joystick ,0x6F1D2B70,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); +DEFINE_GUID(GUID_SysMouseEm, 0x6F1D2B80,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); +DEFINE_GUID(GUID_SysMouseEm2,0x6F1D2B81,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); +DEFINE_GUID(GUID_SysKeyboardEm, 0x6F1D2B82,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); +DEFINE_GUID(GUID_SysKeyboardEm2,0x6F1D2B83,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); + +/**************************************************************************** + * + * Predefined force feedback effects + * + ****************************************************************************/ + +DEFINE_GUID(GUID_ConstantForce, 0x13541C20,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); +DEFINE_GUID(GUID_RampForce, 0x13541C21,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); +DEFINE_GUID(GUID_Square, 0x13541C22,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); +DEFINE_GUID(GUID_Sine, 0x13541C23,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); +DEFINE_GUID(GUID_Triangle, 0x13541C24,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); +DEFINE_GUID(GUID_SawtoothUp, 0x13541C25,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); +DEFINE_GUID(GUID_SawtoothDown, 0x13541C26,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); +DEFINE_GUID(GUID_Spring, 0x13541C27,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); +DEFINE_GUID(GUID_Damper, 0x13541C28,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); +DEFINE_GUID(GUID_Inertia, 0x13541C29,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); +DEFINE_GUID(GUID_Friction, 0x13541C2A,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); +DEFINE_GUID(GUID_CustomForce, 0x13541C2B,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); + +#endif /* DIJ_RINGZERO */ + +/**************************************************************************** + * + * Interfaces and Structures... + * + ****************************************************************************/ + +#if(DIRECTINPUT_VERSION >= 0x0500) + +/**************************************************************************** + * + * IDirectInputEffect + * + ****************************************************************************/ + +#define DIEFT_ALL 0x00000000 + +#define DIEFT_CONSTANTFORCE 0x00000001 +#define DIEFT_RAMPFORCE 0x00000002 +#define DIEFT_PERIODIC 0x00000003 +#define DIEFT_CONDITION 0x00000004 +#define DIEFT_CUSTOMFORCE 0x00000005 +#define DIEFT_HARDWARE 0x000000FF +#define DIEFT_FFATTACK 0x00000200 +#define DIEFT_FFFADE 0x00000400 +#define DIEFT_SATURATION 0x00000800 +#define DIEFT_POSNEGCOEFFICIENTS 0x00001000 +#define DIEFT_POSNEGSATURATION 0x00002000 +#define DIEFT_DEADBAND 0x00004000 +#define DIEFT_STARTDELAY 0x00008000 +#define DIEFT_GETTYPE(n) LOBYTE(n) + +#define DI_DEGREES 100 +#define DI_FFNOMINALMAX 10000 +#define DI_SECONDS 1000000 + +typedef struct DICONSTANTFORCE { + LONG lMagnitude; +} DICONSTANTFORCE, *LPDICONSTANTFORCE; +typedef const DICONSTANTFORCE *LPCDICONSTANTFORCE; + +typedef struct DIRAMPFORCE { + LONG lStart; + LONG lEnd; +} DIRAMPFORCE, *LPDIRAMPFORCE; +typedef const DIRAMPFORCE *LPCDIRAMPFORCE; + +typedef struct DIPERIODIC { + DWORD dwMagnitude; + LONG lOffset; + DWORD dwPhase; + DWORD dwPeriod; +} DIPERIODIC, *LPDIPERIODIC; +typedef const DIPERIODIC *LPCDIPERIODIC; + +typedef struct DICONDITION { + LONG lOffset; + LONG lPositiveCoefficient; + LONG lNegativeCoefficient; + DWORD dwPositiveSaturation; + DWORD dwNegativeSaturation; + LONG lDeadBand; +} DICONDITION, *LPDICONDITION; +typedef const DICONDITION *LPCDICONDITION; + +typedef struct DICUSTOMFORCE { + DWORD cChannels; + DWORD dwSamplePeriod; + DWORD cSamples; + LPLONG rglForceData; +} DICUSTOMFORCE, *LPDICUSTOMFORCE; +typedef const DICUSTOMFORCE *LPCDICUSTOMFORCE; + + +typedef struct DIENVELOPE { + DWORD dwSize; /* sizeof(DIENVELOPE) */ + DWORD dwAttackLevel; + DWORD dwAttackTime; /* Microseconds */ + DWORD dwFadeLevel; + DWORD dwFadeTime; /* Microseconds */ +} DIENVELOPE, *LPDIENVELOPE; +typedef const DIENVELOPE *LPCDIENVELOPE; + + +/* This structure is defined for DirectX 5.0 compatibility */ +typedef struct DIEFFECT_DX5 { + DWORD dwSize; /* sizeof(DIEFFECT_DX5) */ + DWORD dwFlags; /* DIEFF_* */ + DWORD dwDuration; /* Microseconds */ + DWORD dwSamplePeriod; /* Microseconds */ + DWORD dwGain; + DWORD dwTriggerButton; /* or DIEB_NOTRIGGER */ + DWORD dwTriggerRepeatInterval; /* Microseconds */ + DWORD cAxes; /* Number of axes */ + LPDWORD rgdwAxes; /* Array of axes */ + LPLONG rglDirection; /* Array of directions */ + LPDIENVELOPE lpEnvelope; /* Optional */ + DWORD cbTypeSpecificParams; /* Size of params */ + LPVOID lpvTypeSpecificParams; /* Pointer to params */ +} DIEFFECT_DX5, *LPDIEFFECT_DX5; +typedef const DIEFFECT_DX5 *LPCDIEFFECT_DX5; + +typedef struct DIEFFECT { + DWORD dwSize; /* sizeof(DIEFFECT) */ + DWORD dwFlags; /* DIEFF_* */ + DWORD dwDuration; /* Microseconds */ + DWORD dwSamplePeriod; /* Microseconds */ + DWORD dwGain; + DWORD dwTriggerButton; /* or DIEB_NOTRIGGER */ + DWORD dwTriggerRepeatInterval; /* Microseconds */ + DWORD cAxes; /* Number of axes */ + LPDWORD rgdwAxes; /* Array of axes */ + LPLONG rglDirection; /* Array of directions */ + LPDIENVELOPE lpEnvelope; /* Optional */ + DWORD cbTypeSpecificParams; /* Size of params */ + LPVOID lpvTypeSpecificParams; /* Pointer to params */ +#if(DIRECTINPUT_VERSION >= 0x0600) + DWORD dwStartDelay; /* Microseconds */ +#endif /* DIRECTINPUT_VERSION >= 0x0600 */ +} DIEFFECT, *LPDIEFFECT; +typedef DIEFFECT DIEFFECT_DX6; +typedef LPDIEFFECT LPDIEFFECT_DX6; +typedef const DIEFFECT *LPCDIEFFECT; + + +#if(DIRECTINPUT_VERSION >= 0x0700) +#ifndef DIJ_RINGZERO +typedef struct DIFILEEFFECT{ + DWORD dwSize; + GUID GuidEffect; + LPCDIEFFECT lpDiEffect; + CHAR szFriendlyName[MAX_PATH]; +}DIFILEEFFECT, *LPDIFILEEFFECT; +typedef const DIFILEEFFECT *LPCDIFILEEFFECT; +typedef BOOL (FAR PASCAL * LPDIENUMEFFECTSINFILECALLBACK)(LPCDIFILEEFFECT , LPVOID); +#endif /* DIJ_RINGZERO */ +#endif /* DIRECTINPUT_VERSION >= 0x0700 */ + +#define DIEFF_OBJECTIDS 0x00000001 +#define DIEFF_OBJECTOFFSETS 0x00000002 +#define DIEFF_CARTESIAN 0x00000010 +#define DIEFF_POLAR 0x00000020 +#define DIEFF_SPHERICAL 0x00000040 + +#define DIEP_DURATION 0x00000001 +#define DIEP_SAMPLEPERIOD 0x00000002 +#define DIEP_GAIN 0x00000004 +#define DIEP_TRIGGERBUTTON 0x00000008 +#define DIEP_TRIGGERREPEATINTERVAL 0x00000010 +#define DIEP_AXES 0x00000020 +#define DIEP_DIRECTION 0x00000040 +#define DIEP_ENVELOPE 0x00000080 +#define DIEP_TYPESPECIFICPARAMS 0x00000100 +#if(DIRECTINPUT_VERSION >= 0x0600) +#define DIEP_STARTDELAY 0x00000200 +#define DIEP_ALLPARAMS_DX5 0x000001FF +#define DIEP_ALLPARAMS 0x000003FF +#else /* DIRECTINPUT_VERSION < 0x0600 */ +#define DIEP_ALLPARAMS 0x000001FF +#endif /* DIRECTINPUT_VERSION < 0x0600 */ +#define DIEP_START 0x20000000 +#define DIEP_NORESTART 0x40000000 +#define DIEP_NODOWNLOAD 0x80000000 +#define DIEB_NOTRIGGER 0xFFFFFFFF + +#define DIES_SOLO 0x00000001 +#define DIES_NODOWNLOAD 0x80000000 + +#define DIEGES_PLAYING 0x00000001 +#define DIEGES_EMULATED 0x00000002 + +typedef struct DIEFFESCAPE { + DWORD dwSize; + DWORD dwCommand; + LPVOID lpvInBuffer; + DWORD cbInBuffer; + LPVOID lpvOutBuffer; + DWORD cbOutBuffer; +} DIEFFESCAPE, *LPDIEFFESCAPE; + +#ifndef DIJ_RINGZERO + +#undef INTERFACE +#define INTERFACE IDirectInputEffect + +DECLARE_INTERFACE_(IDirectInputEffect, IUnknown) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + + /*** IDirectInputEffect methods ***/ + STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD,REFGUID) PURE; + STDMETHOD(GetEffectGuid)(THIS_ LPGUID) PURE; + STDMETHOD(GetParameters)(THIS_ LPDIEFFECT,DWORD) PURE; + STDMETHOD(SetParameters)(THIS_ LPCDIEFFECT,DWORD) PURE; + STDMETHOD(Start)(THIS_ DWORD,DWORD) PURE; + STDMETHOD(Stop)(THIS) PURE; + STDMETHOD(GetEffectStatus)(THIS_ LPDWORD) PURE; + STDMETHOD(Download)(THIS) PURE; + STDMETHOD(Unload)(THIS) PURE; + STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE) PURE; +}; + +typedef struct IDirectInputEffect *LPDIRECTINPUTEFFECT; + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectInputEffect_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDirectInputEffect_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectInputEffect_Release(p) (p)->lpVtbl->Release(p) +#define IDirectInputEffect_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c) +#define IDirectInputEffect_GetEffectGuid(p,a) (p)->lpVtbl->GetEffectGuid(p,a) +#define IDirectInputEffect_GetParameters(p,a,b) (p)->lpVtbl->GetParameters(p,a,b) +#define IDirectInputEffect_SetParameters(p,a,b) (p)->lpVtbl->SetParameters(p,a,b) +#define IDirectInputEffect_Start(p,a,b) (p)->lpVtbl->Start(p,a,b) +#define IDirectInputEffect_Stop(p) (p)->lpVtbl->Stop(p) +#define IDirectInputEffect_GetEffectStatus(p,a) (p)->lpVtbl->GetEffectStatus(p,a) +#define IDirectInputEffect_Download(p) (p)->lpVtbl->Download(p) +#define IDirectInputEffect_Unload(p) (p)->lpVtbl->Unload(p) +#define IDirectInputEffect_Escape(p,a) (p)->lpVtbl->Escape(p,a) +#else +#define IDirectInputEffect_QueryInterface(p,a,b) (p)->QueryInterface(a,b) +#define IDirectInputEffect_AddRef(p) (p)->AddRef() +#define IDirectInputEffect_Release(p) (p)->Release() +#define IDirectInputEffect_Initialize(p,a,b,c) (p)->Initialize(a,b,c) +#define IDirectInputEffect_GetEffectGuid(p,a) (p)->GetEffectGuid(a) +#define IDirectInputEffect_GetParameters(p,a,b) (p)->GetParameters(a,b) +#define IDirectInputEffect_SetParameters(p,a,b) (p)->SetParameters(a,b) +#define IDirectInputEffect_Start(p,a,b) (p)->Start(a,b) +#define IDirectInputEffect_Stop(p) (p)->Stop() +#define IDirectInputEffect_GetEffectStatus(p,a) (p)->GetEffectStatus(a) +#define IDirectInputEffect_Download(p) (p)->Download() +#define IDirectInputEffect_Unload(p) (p)->Unload() +#define IDirectInputEffect_Escape(p,a) (p)->Escape(a) +#endif + +#endif /* DIJ_RINGZERO */ + +#endif /* DIRECTINPUT_VERSION >= 0x0500 */ + +/**************************************************************************** + * + * IDirectInputDevice + * + ****************************************************************************/ + +#if DIRECTINPUT_VERSION <= 0x700 +#define DIDEVTYPE_DEVICE 1 +#define DIDEVTYPE_MOUSE 2 +#define DIDEVTYPE_KEYBOARD 3 +#define DIDEVTYPE_JOYSTICK 4 + +#else +#define DI8DEVCLASS_ALL 0 +#define DI8DEVCLASS_DEVICE 1 +#define DI8DEVCLASS_POINTER 2 +#define DI8DEVCLASS_KEYBOARD 3 +#define DI8DEVCLASS_GAMECTRL 4 + +#define DI8DEVTYPE_DEVICE 0x11 +#define DI8DEVTYPE_MOUSE 0x12 +#define DI8DEVTYPE_KEYBOARD 0x13 +#define DI8DEVTYPE_JOYSTICK 0x14 +#define DI8DEVTYPE_GAMEPAD 0x15 +#define DI8DEVTYPE_DRIVING 0x16 +#define DI8DEVTYPE_FLIGHT 0x17 +#define DI8DEVTYPE_1STPERSON 0x18 +#define DI8DEVTYPE_DEVICECTRL 0x19 +#define DI8DEVTYPE_SCREENPOINTER 0x1A +#define DI8DEVTYPE_REMOTE 0x1B +#define DI8DEVTYPE_SUPPLEMENTAL 0x1C +#endif /* DIRECTINPUT_VERSION <= 0x700 */ + +#define DIDEVTYPE_HID 0x00010000 + +#if DIRECTINPUT_VERSION <= 0x700 +#define DIDEVTYPEMOUSE_UNKNOWN 1 +#define DIDEVTYPEMOUSE_TRADITIONAL 2 +#define DIDEVTYPEMOUSE_FINGERSTICK 3 +#define DIDEVTYPEMOUSE_TOUCHPAD 4 +#define DIDEVTYPEMOUSE_TRACKBALL 5 + +#define DIDEVTYPEKEYBOARD_UNKNOWN 0 +#define DIDEVTYPEKEYBOARD_PCXT 1 +#define DIDEVTYPEKEYBOARD_OLIVETTI 2 +#define DIDEVTYPEKEYBOARD_PCAT 3 +#define DIDEVTYPEKEYBOARD_PCENH 4 +#define DIDEVTYPEKEYBOARD_NOKIA1050 5 +#define DIDEVTYPEKEYBOARD_NOKIA9140 6 +#define DIDEVTYPEKEYBOARD_NEC98 7 +#define DIDEVTYPEKEYBOARD_NEC98LAPTOP 8 +#define DIDEVTYPEKEYBOARD_NEC98106 9 +#define DIDEVTYPEKEYBOARD_JAPAN106 10 +#define DIDEVTYPEKEYBOARD_JAPANAX 11 +#define DIDEVTYPEKEYBOARD_J3100 12 + +#define DIDEVTYPEJOYSTICK_UNKNOWN 1 +#define DIDEVTYPEJOYSTICK_TRADITIONAL 2 +#define DIDEVTYPEJOYSTICK_FLIGHTSTICK 3 +#define DIDEVTYPEJOYSTICK_GAMEPAD 4 +#define DIDEVTYPEJOYSTICK_RUDDER 5 +#define DIDEVTYPEJOYSTICK_WHEEL 6 +#define DIDEVTYPEJOYSTICK_HEADTRACKER 7 + +#else +#define DI8DEVTYPEMOUSE_UNKNOWN 1 +#define DI8DEVTYPEMOUSE_TRADITIONAL 2 +#define DI8DEVTYPEMOUSE_FINGERSTICK 3 +#define DI8DEVTYPEMOUSE_TOUCHPAD 4 +#define DI8DEVTYPEMOUSE_TRACKBALL 5 +#define DI8DEVTYPEMOUSE_ABSOLUTE 6 + +#define DI8DEVTYPEKEYBOARD_UNKNOWN 0 +#define DI8DEVTYPEKEYBOARD_PCXT 1 +#define DI8DEVTYPEKEYBOARD_OLIVETTI 2 +#define DI8DEVTYPEKEYBOARD_PCAT 3 +#define DI8DEVTYPEKEYBOARD_PCENH 4 +#define DI8DEVTYPEKEYBOARD_NOKIA1050 5 +#define DI8DEVTYPEKEYBOARD_NOKIA9140 6 +#define DI8DEVTYPEKEYBOARD_NEC98 7 +#define DI8DEVTYPEKEYBOARD_NEC98LAPTOP 8 +#define DI8DEVTYPEKEYBOARD_NEC98106 9 +#define DI8DEVTYPEKEYBOARD_JAPAN106 10 +#define DI8DEVTYPEKEYBOARD_JAPANAX 11 +#define DI8DEVTYPEKEYBOARD_J3100 12 + +#define DI8DEVTYPE_LIMITEDGAMESUBTYPE 1 + +#define DI8DEVTYPEJOYSTICK_LIMITED DI8DEVTYPE_LIMITEDGAMESUBTYPE +#define DI8DEVTYPEJOYSTICK_STANDARD 2 + +#define DI8DEVTYPEGAMEPAD_LIMITED DI8DEVTYPE_LIMITEDGAMESUBTYPE +#define DI8DEVTYPEGAMEPAD_STANDARD 2 +#define DI8DEVTYPEGAMEPAD_TILT 3 + +#define DI8DEVTYPEDRIVING_LIMITED DI8DEVTYPE_LIMITEDGAMESUBTYPE +#define DI8DEVTYPEDRIVING_COMBINEDPEDALS 2 +#define DI8DEVTYPEDRIVING_DUALPEDALS 3 +#define DI8DEVTYPEDRIVING_THREEPEDALS 4 +#define DI8DEVTYPEDRIVING_HANDHELD 5 + +#define DI8DEVTYPEFLIGHT_LIMITED DI8DEVTYPE_LIMITEDGAMESUBTYPE +#define DI8DEVTYPEFLIGHT_STICK 2 +#define DI8DEVTYPEFLIGHT_YOKE 3 +#define DI8DEVTYPEFLIGHT_RC 4 + +#define DI8DEVTYPE1STPERSON_LIMITED DI8DEVTYPE_LIMITEDGAMESUBTYPE +#define DI8DEVTYPE1STPERSON_UNKNOWN 2 +#define DI8DEVTYPE1STPERSON_SIXDOF 3 +#define DI8DEVTYPE1STPERSON_SHOOTER 4 + +#define DI8DEVTYPESCREENPTR_UNKNOWN 2 +#define DI8DEVTYPESCREENPTR_LIGHTGUN 3 +#define DI8DEVTYPESCREENPTR_LIGHTPEN 4 +#define DI8DEVTYPESCREENPTR_TOUCH 5 + +#define DI8DEVTYPEREMOTE_UNKNOWN 2 + +#define DI8DEVTYPEDEVICECTRL_UNKNOWN 2 +#define DI8DEVTYPEDEVICECTRL_COMMSSELECTION 3 +#define DI8DEVTYPEDEVICECTRL_COMMSSELECTION_HARDWIRED 4 + +#define DI8DEVTYPESUPPLEMENTAL_UNKNOWN 2 +#define DI8DEVTYPESUPPLEMENTAL_2NDHANDCONTROLLER 3 +#define DI8DEVTYPESUPPLEMENTAL_HEADTRACKER 4 +#define DI8DEVTYPESUPPLEMENTAL_HANDTRACKER 5 +#define DI8DEVTYPESUPPLEMENTAL_SHIFTSTICKGATE 6 +#define DI8DEVTYPESUPPLEMENTAL_SHIFTER 7 +#define DI8DEVTYPESUPPLEMENTAL_THROTTLE 8 +#define DI8DEVTYPESUPPLEMENTAL_SPLITTHROTTLE 9 +#define DI8DEVTYPESUPPLEMENTAL_COMBINEDPEDALS 10 +#define DI8DEVTYPESUPPLEMENTAL_DUALPEDALS 11 +#define DI8DEVTYPESUPPLEMENTAL_THREEPEDALS 12 +#define DI8DEVTYPESUPPLEMENTAL_RUDDERPEDALS 13 +#endif /* DIRECTINPUT_VERSION <= 0x700 */ + +#define GET_DIDEVICE_TYPE(dwDevType) LOBYTE(dwDevType) +#define GET_DIDEVICE_SUBTYPE(dwDevType) HIBYTE(dwDevType) + +#if(DIRECTINPUT_VERSION >= 0x0500) +/* This structure is defined for DirectX 3.0 compatibility */ +typedef struct DIDEVCAPS_DX3 { + DWORD dwSize; + DWORD dwFlags; + DWORD dwDevType; + DWORD dwAxes; + DWORD dwButtons; + DWORD dwPOVs; +} DIDEVCAPS_DX3, *LPDIDEVCAPS_DX3; +#endif /* DIRECTINPUT_VERSION >= 0x0500 */ + +typedef struct DIDEVCAPS { + DWORD dwSize; + DWORD dwFlags; + DWORD dwDevType; + DWORD dwAxes; + DWORD dwButtons; + DWORD dwPOVs; +#if(DIRECTINPUT_VERSION >= 0x0500) + DWORD dwFFSamplePeriod; + DWORD dwFFMinTimeResolution; + DWORD dwFirmwareRevision; + DWORD dwHardwareRevision; + DWORD dwFFDriverVersion; +#endif /* DIRECTINPUT_VERSION >= 0x0500 */ +} DIDEVCAPS, *LPDIDEVCAPS; + +#define DIDC_ATTACHED 0x00000001 +#define DIDC_POLLEDDEVICE 0x00000002 +#define DIDC_EMULATED 0x00000004 +#define DIDC_POLLEDDATAFORMAT 0x00000008 +#if(DIRECTINPUT_VERSION >= 0x0500) +#define DIDC_FORCEFEEDBACK 0x00000100 +#define DIDC_FFATTACK 0x00000200 +#define DIDC_FFFADE 0x00000400 +#define DIDC_SATURATION 0x00000800 +#define DIDC_POSNEGCOEFFICIENTS 0x00001000 +#define DIDC_POSNEGSATURATION 0x00002000 +#define DIDC_DEADBAND 0x00004000 +#endif /* DIRECTINPUT_VERSION >= 0x0500 */ +#define DIDC_STARTDELAY 0x00008000 +#if(DIRECTINPUT_VERSION >= 0x050a) +#define DIDC_ALIAS 0x00010000 +#define DIDC_PHANTOM 0x00020000 +#endif /* DIRECTINPUT_VERSION >= 0x050a */ +#if(DIRECTINPUT_VERSION >= 0x0800) +#define DIDC_HIDDEN 0x00040000 +#endif /* DIRECTINPUT_VERSION >= 0x0800 */ + +#define DIDFT_ALL 0x00000000 + +#define DIDFT_RELAXIS 0x00000001 +#define DIDFT_ABSAXIS 0x00000002 +#define DIDFT_AXIS 0x00000003 + +#define DIDFT_PSHBUTTON 0x00000004 +#define DIDFT_TGLBUTTON 0x00000008 +#define DIDFT_BUTTON 0x0000000C + +#define DIDFT_POV 0x00000010 +#define DIDFT_COLLECTION 0x00000040 +#define DIDFT_NODATA 0x00000080 + +#define DIDFT_ANYINSTANCE 0x00FFFF00 +#define DIDFT_INSTANCEMASK DIDFT_ANYINSTANCE +#define DIDFT_MAKEINSTANCE(n) ((WORD)(n) << 8) +#define DIDFT_GETTYPE(n) LOBYTE(n) +#define DIDFT_GETINSTANCE(n) LOWORD((n) >> 8) +#define DIDFT_FFACTUATOR 0x01000000 +#define DIDFT_FFEFFECTTRIGGER 0x02000000 +#if(DIRECTINPUT_VERSION >= 0x050a) +#define DIDFT_OUTPUT 0x10000000 +#define DIDFT_VENDORDEFINED 0x04000000 +#define DIDFT_ALIAS 0x08000000 +#endif /* DIRECTINPUT_VERSION >= 0x050a */ +#ifndef DIDFT_OPTIONAL +#define DIDFT_OPTIONAL 0x80000000 +#endif + +#define DIDFT_ENUMCOLLECTION(n) ((WORD)(n) << 8) +#define DIDFT_NOCOLLECTION 0x00FFFF00 + +#ifndef DIJ_RINGZERO + +typedef struct _DIOBJECTDATAFORMAT { + const GUID *pguid; + DWORD dwOfs; + DWORD dwType; + DWORD dwFlags; +} DIOBJECTDATAFORMAT, *LPDIOBJECTDATAFORMAT; +typedef const DIOBJECTDATAFORMAT *LPCDIOBJECTDATAFORMAT; + +typedef struct _DIDATAFORMAT { + DWORD dwSize; + DWORD dwObjSize; + DWORD dwFlags; + DWORD dwDataSize; + DWORD dwNumObjs; + LPDIOBJECTDATAFORMAT rgodf; +} DIDATAFORMAT, *LPDIDATAFORMAT; +typedef const DIDATAFORMAT *LPCDIDATAFORMAT; + +#define DIDF_ABSAXIS 0x00000001 +#define DIDF_RELAXIS 0x00000002 + +#ifdef __cplusplus +extern "C" { +#endif +extern const DIDATAFORMAT c_dfDIMouse; + +#if(DIRECTINPUT_VERSION >= 0x0700) +extern const DIDATAFORMAT c_dfDIMouse2; +#endif /* DIRECTINPUT_VERSION >= 0x0700 */ + +extern const DIDATAFORMAT c_dfDIKeyboard; + +#if(DIRECTINPUT_VERSION >= 0x0500) +extern const DIDATAFORMAT c_dfDIJoystick; +extern const DIDATAFORMAT c_dfDIJoystick2; +#endif /* DIRECTINPUT_VERSION >= 0x0500 */ + +#ifdef __cplusplus +}; +#endif + + +#if DIRECTINPUT_VERSION > 0x0700 + +typedef struct _DIACTIONA { + UINT_PTR uAppData; + DWORD dwSemantic; + OPTIONAL DWORD dwFlags; + OPTIONAL union { + LPCSTR lptszActionName; + UINT uResIdString; + }; + OPTIONAL GUID guidInstance; + OPTIONAL DWORD dwObjID; + OPTIONAL DWORD dwHow; +} DIACTIONA, *LPDIACTIONA ; +typedef struct _DIACTIONW { + UINT_PTR uAppData; + DWORD dwSemantic; + OPTIONAL DWORD dwFlags; + OPTIONAL union { + LPCWSTR lptszActionName; + UINT uResIdString; + }; + OPTIONAL GUID guidInstance; + OPTIONAL DWORD dwObjID; + OPTIONAL DWORD dwHow; +} DIACTIONW, *LPDIACTIONW ; +#ifdef UNICODE +typedef DIACTIONW DIACTION; +typedef LPDIACTIONW LPDIACTION; +#else +typedef DIACTIONA DIACTION; +typedef LPDIACTIONA LPDIACTION; +#endif // UNICODE + +typedef const DIACTIONA *LPCDIACTIONA; +typedef const DIACTIONW *LPCDIACTIONW; +#ifdef UNICODE +typedef DIACTIONW DIACTION; +typedef LPCDIACTIONW LPCDIACTION; +#else +typedef DIACTIONA DIACTION; +typedef LPCDIACTIONA LPCDIACTION; +#endif // UNICODE +typedef const DIACTION *LPCDIACTION; + + +#define DIA_FORCEFEEDBACK 0x00000001 +#define DIA_APPMAPPED 0x00000002 +#define DIA_APPNOMAP 0x00000004 +#define DIA_NORANGE 0x00000008 +#define DIA_APPFIXED 0x00000010 + +#define DIAH_UNMAPPED 0x00000000 +#define DIAH_USERCONFIG 0x00000001 +#define DIAH_APPREQUESTED 0x00000002 +#define DIAH_HWAPP 0x00000004 +#define DIAH_HWDEFAULT 0x00000008 +#define DIAH_DEFAULT 0x00000020 +#define DIAH_ERROR 0x80000000 + +typedef struct _DIACTIONFORMATA { + DWORD dwSize; + DWORD dwActionSize; + DWORD dwDataSize; + DWORD dwNumActions; + LPDIACTIONA rgoAction; + GUID guidActionMap; + DWORD dwGenre; + DWORD dwBufferSize; + OPTIONAL LONG lAxisMin; + OPTIONAL LONG lAxisMax; + OPTIONAL HINSTANCE hInstString; + FILETIME ftTimeStamp; + DWORD dwCRC; + CHAR tszActionMap[MAX_PATH]; +} DIACTIONFORMATA, *LPDIACTIONFORMATA; +typedef struct _DIACTIONFORMATW { + DWORD dwSize; + DWORD dwActionSize; + DWORD dwDataSize; + DWORD dwNumActions; + LPDIACTIONW rgoAction; + GUID guidActionMap; + DWORD dwGenre; + DWORD dwBufferSize; + OPTIONAL LONG lAxisMin; + OPTIONAL LONG lAxisMax; + OPTIONAL HINSTANCE hInstString; + FILETIME ftTimeStamp; + DWORD dwCRC; + WCHAR tszActionMap[MAX_PATH]; +} DIACTIONFORMATW, *LPDIACTIONFORMATW; +#ifdef UNICODE +typedef DIACTIONFORMATW DIACTIONFORMAT; +typedef LPDIACTIONFORMATW LPDIACTIONFORMAT; +#else +typedef DIACTIONFORMATA DIACTIONFORMAT; +typedef LPDIACTIONFORMATA LPDIACTIONFORMAT; +#endif // UNICODE +typedef const DIACTIONFORMATA *LPCDIACTIONFORMATA; +typedef const DIACTIONFORMATW *LPCDIACTIONFORMATW; +#ifdef UNICODE +typedef DIACTIONFORMATW DIACTIONFORMAT; +typedef LPCDIACTIONFORMATW LPCDIACTIONFORMAT; +#else +typedef DIACTIONFORMATA DIACTIONFORMAT; +typedef LPCDIACTIONFORMATA LPCDIACTIONFORMAT; +#endif // UNICODE +typedef const DIACTIONFORMAT *LPCDIACTIONFORMAT; + +#define DIAFTS_NEWDEVICELOW 0xFFFFFFFF +#define DIAFTS_NEWDEVICEHIGH 0xFFFFFFFF +#define DIAFTS_UNUSEDDEVICELOW 0x00000000 +#define DIAFTS_UNUSEDDEVICEHIGH 0x00000000 + +#define DIDBAM_DEFAULT 0x00000000 +#define DIDBAM_PRESERVE 0x00000001 +#define DIDBAM_INITIALIZE 0x00000002 +#define DIDBAM_HWDEFAULTS 0x00000004 + +#define DIDSAM_DEFAULT 0x00000000 +#define DIDSAM_NOUSER 0x00000001 +#define DIDSAM_FORCESAVE 0x00000002 + +#define DICD_DEFAULT 0x00000000 +#define DICD_EDIT 0x00000001 + +/* + * The following definition is normally defined in d3dtypes.h + */ +#ifndef D3DCOLOR_DEFINED +typedef DWORD D3DCOLOR; +#define D3DCOLOR_DEFINED +#endif + +typedef struct _DICOLORSET{ + DWORD dwSize; + D3DCOLOR cTextFore; + D3DCOLOR cTextHighlight; + D3DCOLOR cCalloutLine; + D3DCOLOR cCalloutHighlight; + D3DCOLOR cBorder; + D3DCOLOR cControlFill; + D3DCOLOR cHighlightFill; + D3DCOLOR cAreaFill; +} DICOLORSET, *LPDICOLORSET; +typedef const DICOLORSET *LPCDICOLORSET; + + +typedef struct _DICONFIGUREDEVICESPARAMSA{ + DWORD dwSize; + DWORD dwcUsers; + LPSTR lptszUserNames; + DWORD dwcFormats; + LPDIACTIONFORMATA lprgFormats; + HWND hwnd; + DICOLORSET dics; + IUnknown FAR * lpUnkDDSTarget; +} DICONFIGUREDEVICESPARAMSA, *LPDICONFIGUREDEVICESPARAMSA; +typedef struct _DICONFIGUREDEVICESPARAMSW{ + DWORD dwSize; + DWORD dwcUsers; + LPWSTR lptszUserNames; + DWORD dwcFormats; + LPDIACTIONFORMATW lprgFormats; + HWND hwnd; + DICOLORSET dics; + IUnknown FAR * lpUnkDDSTarget; +} DICONFIGUREDEVICESPARAMSW, *LPDICONFIGUREDEVICESPARAMSW; +#ifdef UNICODE +typedef DICONFIGUREDEVICESPARAMSW DICONFIGUREDEVICESPARAMS; +typedef LPDICONFIGUREDEVICESPARAMSW LPDICONFIGUREDEVICESPARAMS; +#else +typedef DICONFIGUREDEVICESPARAMSA DICONFIGUREDEVICESPARAMS; +typedef LPDICONFIGUREDEVICESPARAMSA LPDICONFIGUREDEVICESPARAMS; +#endif // UNICODE +typedef const DICONFIGUREDEVICESPARAMSA *LPCDICONFIGUREDEVICESPARAMSA; +typedef const DICONFIGUREDEVICESPARAMSW *LPCDICONFIGUREDEVICESPARAMSW; +#ifdef UNICODE +typedef DICONFIGUREDEVICESPARAMSW DICONFIGUREDEVICESPARAMS; +typedef LPCDICONFIGUREDEVICESPARAMSW LPCDICONFIGUREDEVICESPARAMS; +#else +typedef DICONFIGUREDEVICESPARAMSA DICONFIGUREDEVICESPARAMS; +typedef LPCDICONFIGUREDEVICESPARAMSA LPCDICONFIGUREDEVICESPARAMS; +#endif // UNICODE +typedef const DICONFIGUREDEVICESPARAMS *LPCDICONFIGUREDEVICESPARAMS; + + +#define DIDIFT_CONFIGURATION 0x00000001 +#define DIDIFT_OVERLAY 0x00000002 + +#define DIDAL_CENTERED 0x00000000 +#define DIDAL_LEFTALIGNED 0x00000001 +#define DIDAL_RIGHTALIGNED 0x00000002 +#define DIDAL_MIDDLE 0x00000000 +#define DIDAL_TOPALIGNED 0x00000004 +#define DIDAL_BOTTOMALIGNED 0x00000008 + +typedef struct _DIDEVICEIMAGEINFOA { + CHAR tszImagePath[MAX_PATH]; + DWORD dwFlags; + // These are valid if DIDIFT_OVERLAY is present in dwFlags. + DWORD dwViewID; + RECT rcOverlay; + DWORD dwObjID; + DWORD dwcValidPts; + POINT rgptCalloutLine[5]; + RECT rcCalloutRect; + DWORD dwTextAlign; +} DIDEVICEIMAGEINFOA, *LPDIDEVICEIMAGEINFOA; +typedef struct _DIDEVICEIMAGEINFOW { + WCHAR tszImagePath[MAX_PATH]; + DWORD dwFlags; + // These are valid if DIDIFT_OVERLAY is present in dwFlags. + DWORD dwViewID; + RECT rcOverlay; + DWORD dwObjID; + DWORD dwcValidPts; + POINT rgptCalloutLine[5]; + RECT rcCalloutRect; + DWORD dwTextAlign; +} DIDEVICEIMAGEINFOW, *LPDIDEVICEIMAGEINFOW; +#ifdef UNICODE +typedef DIDEVICEIMAGEINFOW DIDEVICEIMAGEINFO; +typedef LPDIDEVICEIMAGEINFOW LPDIDEVICEIMAGEINFO; +#else +typedef DIDEVICEIMAGEINFOA DIDEVICEIMAGEINFO; +typedef LPDIDEVICEIMAGEINFOA LPDIDEVICEIMAGEINFO; +#endif // UNICODE +typedef const DIDEVICEIMAGEINFOA *LPCDIDEVICEIMAGEINFOA; +typedef const DIDEVICEIMAGEINFOW *LPCDIDEVICEIMAGEINFOW; +#ifdef UNICODE +typedef DIDEVICEIMAGEINFOW DIDEVICEIMAGEINFO; +typedef LPCDIDEVICEIMAGEINFOW LPCDIDEVICEIMAGEINFO; +#else +typedef DIDEVICEIMAGEINFOA DIDEVICEIMAGEINFO; +typedef LPCDIDEVICEIMAGEINFOA LPCDIDEVICEIMAGEINFO; +#endif // UNICODE +typedef const DIDEVICEIMAGEINFO *LPCDIDEVICEIMAGEINFO; + +typedef struct _DIDEVICEIMAGEINFOHEADERA { + DWORD dwSize; + DWORD dwSizeImageInfo; + DWORD dwcViews; + DWORD dwcButtons; + DWORD dwcAxes; + DWORD dwcPOVs; + DWORD dwBufferSize; + DWORD dwBufferUsed; + LPDIDEVICEIMAGEINFOA lprgImageInfoArray; +} DIDEVICEIMAGEINFOHEADERA, *LPDIDEVICEIMAGEINFOHEADERA; +typedef struct _DIDEVICEIMAGEINFOHEADERW { + DWORD dwSize; + DWORD dwSizeImageInfo; + DWORD dwcViews; + DWORD dwcButtons; + DWORD dwcAxes; + DWORD dwcPOVs; + DWORD dwBufferSize; + DWORD dwBufferUsed; + LPDIDEVICEIMAGEINFOW lprgImageInfoArray; +} DIDEVICEIMAGEINFOHEADERW, *LPDIDEVICEIMAGEINFOHEADERW; +#ifdef UNICODE +typedef DIDEVICEIMAGEINFOHEADERW DIDEVICEIMAGEINFOHEADER; +typedef LPDIDEVICEIMAGEINFOHEADERW LPDIDEVICEIMAGEINFOHEADER; +#else +typedef DIDEVICEIMAGEINFOHEADERA DIDEVICEIMAGEINFOHEADER; +typedef LPDIDEVICEIMAGEINFOHEADERA LPDIDEVICEIMAGEINFOHEADER; +#endif // UNICODE +typedef const DIDEVICEIMAGEINFOHEADERA *LPCDIDEVICEIMAGEINFOHEADERA; +typedef const DIDEVICEIMAGEINFOHEADERW *LPCDIDEVICEIMAGEINFOHEADERW; +#ifdef UNICODE +typedef DIDEVICEIMAGEINFOHEADERW DIDEVICEIMAGEINFOHEADER; +typedef LPCDIDEVICEIMAGEINFOHEADERW LPCDIDEVICEIMAGEINFOHEADER; +#else +typedef DIDEVICEIMAGEINFOHEADERA DIDEVICEIMAGEINFOHEADER; +typedef LPCDIDEVICEIMAGEINFOHEADERA LPCDIDEVICEIMAGEINFOHEADER; +#endif // UNICODE +typedef const DIDEVICEIMAGEINFOHEADER *LPCDIDEVICEIMAGEINFOHEADER; + +#endif /* DIRECTINPUT_VERSION > 0x0700 */ + +#if(DIRECTINPUT_VERSION >= 0x0500) +/* These structures are defined for DirectX 3.0 compatibility */ + +typedef struct DIDEVICEOBJECTINSTANCE_DX3A { + DWORD dwSize; + GUID guidType; + DWORD dwOfs; + DWORD dwType; + DWORD dwFlags; + CHAR tszName[MAX_PATH]; +} DIDEVICEOBJECTINSTANCE_DX3A, *LPDIDEVICEOBJECTINSTANCE_DX3A; +typedef struct DIDEVICEOBJECTINSTANCE_DX3W { + DWORD dwSize; + GUID guidType; + DWORD dwOfs; + DWORD dwType; + DWORD dwFlags; + WCHAR tszName[MAX_PATH]; +} DIDEVICEOBJECTINSTANCE_DX3W, *LPDIDEVICEOBJECTINSTANCE_DX3W; +#ifdef UNICODE +typedef DIDEVICEOBJECTINSTANCE_DX3W DIDEVICEOBJECTINSTANCE_DX3; +typedef LPDIDEVICEOBJECTINSTANCE_DX3W LPDIDEVICEOBJECTINSTANCE_DX3; +#else +typedef DIDEVICEOBJECTINSTANCE_DX3A DIDEVICEOBJECTINSTANCE_DX3; +typedef LPDIDEVICEOBJECTINSTANCE_DX3A LPDIDEVICEOBJECTINSTANCE_DX3; +#endif // UNICODE +typedef const DIDEVICEOBJECTINSTANCE_DX3A *LPCDIDEVICEOBJECTINSTANCE_DX3A; +typedef const DIDEVICEOBJECTINSTANCE_DX3W *LPCDIDEVICEOBJECTINSTANCE_DX3W; +typedef const DIDEVICEOBJECTINSTANCE_DX3 *LPCDIDEVICEOBJECTINSTANCE_DX3; +#endif /* DIRECTINPUT_VERSION >= 0x0500 */ + +typedef struct DIDEVICEOBJECTINSTANCEA { + DWORD dwSize; + GUID guidType; + DWORD dwOfs; + DWORD dwType; + DWORD dwFlags; + CHAR tszName[MAX_PATH]; +#if(DIRECTINPUT_VERSION >= 0x0500) + DWORD dwFFMaxForce; + DWORD dwFFForceResolution; + WORD wCollectionNumber; + WORD wDesignatorIndex; + WORD wUsagePage; + WORD wUsage; + DWORD dwDimension; + WORD wExponent; + WORD wReportId; +#endif /* DIRECTINPUT_VERSION >= 0x0500 */ +} DIDEVICEOBJECTINSTANCEA, *LPDIDEVICEOBJECTINSTANCEA; +typedef struct DIDEVICEOBJECTINSTANCEW { + DWORD dwSize; + GUID guidType; + DWORD dwOfs; + DWORD dwType; + DWORD dwFlags; + WCHAR tszName[MAX_PATH]; +#if(DIRECTINPUT_VERSION >= 0x0500) + DWORD dwFFMaxForce; + DWORD dwFFForceResolution; + WORD wCollectionNumber; + WORD wDesignatorIndex; + WORD wUsagePage; + WORD wUsage; + DWORD dwDimension; + WORD wExponent; + WORD wReportId; +#endif /* DIRECTINPUT_VERSION >= 0x0500 */ +} DIDEVICEOBJECTINSTANCEW, *LPDIDEVICEOBJECTINSTANCEW; +#ifdef UNICODE +typedef DIDEVICEOBJECTINSTANCEW DIDEVICEOBJECTINSTANCE; +typedef LPDIDEVICEOBJECTINSTANCEW LPDIDEVICEOBJECTINSTANCE; +#else +typedef DIDEVICEOBJECTINSTANCEA DIDEVICEOBJECTINSTANCE; +typedef LPDIDEVICEOBJECTINSTANCEA LPDIDEVICEOBJECTINSTANCE; +#endif // UNICODE +typedef const DIDEVICEOBJECTINSTANCEA *LPCDIDEVICEOBJECTINSTANCEA; +typedef const DIDEVICEOBJECTINSTANCEW *LPCDIDEVICEOBJECTINSTANCEW; +typedef const DIDEVICEOBJECTINSTANCE *LPCDIDEVICEOBJECTINSTANCE; + +typedef BOOL (FAR PASCAL * LPDIENUMDEVICEOBJECTSCALLBACKA)(LPCDIDEVICEOBJECTINSTANCEA, LPVOID); +typedef BOOL (FAR PASCAL * LPDIENUMDEVICEOBJECTSCALLBACKW)(LPCDIDEVICEOBJECTINSTANCEW, LPVOID); +#ifdef UNICODE +#define LPDIENUMDEVICEOBJECTSCALLBACK LPDIENUMDEVICEOBJECTSCALLBACKW +#else +#define LPDIENUMDEVICEOBJECTSCALLBACK LPDIENUMDEVICEOBJECTSCALLBACKA +#endif // !UNICODE + +#if(DIRECTINPUT_VERSION >= 0x0500) +#define DIDOI_FFACTUATOR 0x00000001 +#define DIDOI_FFEFFECTTRIGGER 0x00000002 +#define DIDOI_POLLED 0x00008000 +#define DIDOI_ASPECTPOSITION 0x00000100 +#define DIDOI_ASPECTVELOCITY 0x00000200 +#define DIDOI_ASPECTACCEL 0x00000300 +#define DIDOI_ASPECTFORCE 0x00000400 +#define DIDOI_ASPECTMASK 0x00000F00 +#endif /* DIRECTINPUT_VERSION >= 0x0500 */ +#if(DIRECTINPUT_VERSION >= 0x050a) +#define DIDOI_GUIDISUSAGE 0x00010000 +#endif /* DIRECTINPUT_VERSION >= 0x050a */ + +typedef struct DIPROPHEADER { + DWORD dwSize; + DWORD dwHeaderSize; + DWORD dwObj; + DWORD dwHow; +} DIPROPHEADER, *LPDIPROPHEADER; +typedef const DIPROPHEADER *LPCDIPROPHEADER; + +#define DIPH_DEVICE 0 +#define DIPH_BYOFFSET 1 +#define DIPH_BYID 2 +#if(DIRECTINPUT_VERSION >= 0x050a) +#define DIPH_BYUSAGE 3 +#endif /* DIRECTINPUT_VERSION >= 0x050a */ + +#if(DIRECTINPUT_VERSION >= 0x050a) +#define DIMAKEUSAGEDWORD(UsagePage, Usage) \ + (DWORD)MAKELONG(Usage, UsagePage) +#endif /* DIRECTINPUT_VERSION >= 0x050a */ + +typedef struct DIPROPDWORD { + DIPROPHEADER diph; + DWORD dwData; +} DIPROPDWORD, *LPDIPROPDWORD; +typedef const DIPROPDWORD *LPCDIPROPDWORD; + +#if(DIRECTINPUT_VERSION >= 0x0800) +typedef struct DIPROPPOINTER { + DIPROPHEADER diph; + UINT_PTR uData; +} DIPROPPOINTER, *LPDIPROPPOINTER; +typedef const DIPROPPOINTER *LPCDIPROPPOINTER; +#endif /* DIRECTINPUT_VERSION >= 0x0800 */ + +typedef struct DIPROPRANGE { + DIPROPHEADER diph; + LONG lMin; + LONG lMax; +} DIPROPRANGE, *LPDIPROPRANGE; +typedef const DIPROPRANGE *LPCDIPROPRANGE; + +#define DIPROPRANGE_NOMIN ((LONG)0x80000000) +#define DIPROPRANGE_NOMAX ((LONG)0x7FFFFFFF) + +#if(DIRECTINPUT_VERSION >= 0x050a) +typedef struct DIPROPCAL { + DIPROPHEADER diph; + LONG lMin; + LONG lCenter; + LONG lMax; +} DIPROPCAL, *LPDIPROPCAL; +typedef const DIPROPCAL *LPCDIPROPCAL; + +typedef struct DIPROPCALPOV { + DIPROPHEADER diph; + LONG lMin[5]; + LONG lMax[5]; +} DIPROPCALPOV, *LPDIPROPCALPOV; +typedef const DIPROPCALPOV *LPCDIPROPCALPOV; + +typedef struct DIPROPGUIDANDPATH { + DIPROPHEADER diph; + GUID guidClass; + WCHAR wszPath[MAX_PATH]; +} DIPROPGUIDANDPATH, *LPDIPROPGUIDANDPATH; +typedef const DIPROPGUIDANDPATH *LPCDIPROPGUIDANDPATH; + +typedef struct DIPROPSTRING { + DIPROPHEADER diph; + WCHAR wsz[MAX_PATH]; +} DIPROPSTRING, *LPDIPROPSTRING; +typedef const DIPROPSTRING *LPCDIPROPSTRING; + +#endif /* DIRECTINPUT_VERSION >= 0x050a */ + +#if(DIRECTINPUT_VERSION >= 0x0800) +#define MAXCPOINTSNUM 8 + +typedef struct _CPOINT +{ + LONG lP; // raw value + DWORD dwLog; // logical_value / max_logical_value * 10000 +} CPOINT, *PCPOINT; + +typedef struct DIPROPCPOINTS { + DIPROPHEADER diph; + DWORD dwCPointsNum; + CPOINT cp[MAXCPOINTSNUM]; +} DIPROPCPOINTS, *LPDIPROPCPOINTS; +typedef const DIPROPCPOINTS *LPCDIPROPCPOINTS; +#endif /* DIRECTINPUT_VERSION >= 0x0800 */ + + +#ifdef __cplusplus +#define MAKEDIPROP(prop) (*(const GUID *)(prop)) +#else +#define MAKEDIPROP(prop) ((REFGUID)(prop)) +#endif + +#define DIPROP_BUFFERSIZE MAKEDIPROP(1) + +#define DIPROP_AXISMODE MAKEDIPROP(2) + +#define DIPROPAXISMODE_ABS 0 +#define DIPROPAXISMODE_REL 1 + +#define DIPROP_GRANULARITY MAKEDIPROP(3) + +#define DIPROP_RANGE MAKEDIPROP(4) + +#define DIPROP_DEADZONE MAKEDIPROP(5) + +#define DIPROP_SATURATION MAKEDIPROP(6) + +#define DIPROP_FFGAIN MAKEDIPROP(7) + +#define DIPROP_FFLOAD MAKEDIPROP(8) + +#define DIPROP_AUTOCENTER MAKEDIPROP(9) + +#define DIPROPAUTOCENTER_OFF 0 +#define DIPROPAUTOCENTER_ON 1 + +#define DIPROP_CALIBRATIONMODE MAKEDIPROP(10) + +#define DIPROPCALIBRATIONMODE_COOKED 0 +#define DIPROPCALIBRATIONMODE_RAW 1 + +#if(DIRECTINPUT_VERSION >= 0x050a) +#define DIPROP_CALIBRATION MAKEDIPROP(11) + +#define DIPROP_GUIDANDPATH MAKEDIPROP(12) + +#define DIPROP_INSTANCENAME MAKEDIPROP(13) + +#define DIPROP_PRODUCTNAME MAKEDIPROP(14) +#endif /* DIRECTINPUT_VERSION >= 0x050a */ + +#if(DIRECTINPUT_VERSION >= 0x05b2) +#define DIPROP_JOYSTICKID MAKEDIPROP(15) + +#define DIPROP_GETPORTDISPLAYNAME MAKEDIPROP(16) + +#endif /* DIRECTINPUT_VERSION >= 0x05b2 */ + +#if(DIRECTINPUT_VERSION >= 0x0700) +#define DIPROP_PHYSICALRANGE MAKEDIPROP(18) + +#define DIPROP_LOGICALRANGE MAKEDIPROP(19) +#endif /* DIRECTINPUT_VERSION >= 0x0700 */ + +#if(DIRECTINPUT_VERSION >= 0x0800) +#define DIPROP_KEYNAME MAKEDIPROP(20) + +#define DIPROP_CPOINTS MAKEDIPROP(21) + +#define DIPROP_APPDATA MAKEDIPROP(22) + +#define DIPROP_SCANCODE MAKEDIPROP(23) + +#define DIPROP_VIDPID MAKEDIPROP(24) + +#define DIPROP_USERNAME MAKEDIPROP(25) + +#define DIPROP_TYPENAME MAKEDIPROP(26) +#endif /* DIRECTINPUT_VERSION >= 0x0800 */ + + +typedef struct DIDEVICEOBJECTDATA_DX3 { + DWORD dwOfs; + DWORD dwData; + DWORD dwTimeStamp; + DWORD dwSequence; +} DIDEVICEOBJECTDATA_DX3, *LPDIDEVICEOBJECTDATA_DX3; +typedef const DIDEVICEOBJECTDATA_DX3 *LPCDIDEVICEOBJECTDATA_DX; + +typedef struct DIDEVICEOBJECTDATA { + DWORD dwOfs; + DWORD dwData; + DWORD dwTimeStamp; + DWORD dwSequence; +#if(DIRECTINPUT_VERSION >= 0x0800) + UINT_PTR uAppData; +#endif /* DIRECTINPUT_VERSION >= 0x0800 */ +} DIDEVICEOBJECTDATA, *LPDIDEVICEOBJECTDATA; +typedef const DIDEVICEOBJECTDATA *LPCDIDEVICEOBJECTDATA; + +#define DIGDD_PEEK 0x00000001 + +#define DISEQUENCE_COMPARE(dwSequence1, cmp, dwSequence2) \ + ((int)((dwSequence1) - (dwSequence2)) cmp 0) +#define DISCL_EXCLUSIVE 0x00000001 +#define DISCL_NONEXCLUSIVE 0x00000002 +#define DISCL_FOREGROUND 0x00000004 +#define DISCL_BACKGROUND 0x00000008 +#define DISCL_NOWINKEY 0x00000010 + +#if(DIRECTINPUT_VERSION >= 0x0500) +/* These structures are defined for DirectX 3.0 compatibility */ + +typedef struct DIDEVICEINSTANCE_DX3A { + DWORD dwSize; + GUID guidInstance; + GUID guidProduct; + DWORD dwDevType; + CHAR tszInstanceName[MAX_PATH]; + CHAR tszProductName[MAX_PATH]; +} DIDEVICEINSTANCE_DX3A, *LPDIDEVICEINSTANCE_DX3A; +typedef struct DIDEVICEINSTANCE_DX3W { + DWORD dwSize; + GUID guidInstance; + GUID guidProduct; + DWORD dwDevType; + WCHAR tszInstanceName[MAX_PATH]; + WCHAR tszProductName[MAX_PATH]; +} DIDEVICEINSTANCE_DX3W, *LPDIDEVICEINSTANCE_DX3W; +#ifdef UNICODE +typedef DIDEVICEINSTANCE_DX3W DIDEVICEINSTANCE_DX3; +typedef LPDIDEVICEINSTANCE_DX3W LPDIDEVICEINSTANCE_DX3; +#else +typedef DIDEVICEINSTANCE_DX3A DIDEVICEINSTANCE_DX3; +typedef LPDIDEVICEINSTANCE_DX3A LPDIDEVICEINSTANCE_DX3; +#endif // UNICODE +typedef const DIDEVICEINSTANCE_DX3A *LPCDIDEVICEINSTANCE_DX3A; +typedef const DIDEVICEINSTANCE_DX3W *LPCDIDEVICEINSTANCE_DX3W; +typedef const DIDEVICEINSTANCE_DX3 *LPCDIDEVICEINSTANCE_DX3; +#endif /* DIRECTINPUT_VERSION >= 0x0500 */ + +typedef struct DIDEVICEINSTANCEA { + DWORD dwSize; + GUID guidInstance; + GUID guidProduct; + DWORD dwDevType; + CHAR tszInstanceName[MAX_PATH]; + CHAR tszProductName[MAX_PATH]; +#if(DIRECTINPUT_VERSION >= 0x0500) + GUID guidFFDriver; + WORD wUsagePage; + WORD wUsage; +#endif /* DIRECTINPUT_VERSION >= 0x0500 */ +} DIDEVICEINSTANCEA, *LPDIDEVICEINSTANCEA; +typedef struct DIDEVICEINSTANCEW { + DWORD dwSize; + GUID guidInstance; + GUID guidProduct; + DWORD dwDevType; + WCHAR tszInstanceName[MAX_PATH]; + WCHAR tszProductName[MAX_PATH]; +#if(DIRECTINPUT_VERSION >= 0x0500) + GUID guidFFDriver; + WORD wUsagePage; + WORD wUsage; +#endif /* DIRECTINPUT_VERSION >= 0x0500 */ +} DIDEVICEINSTANCEW, *LPDIDEVICEINSTANCEW; +#ifdef UNICODE +typedef DIDEVICEINSTANCEW DIDEVICEINSTANCE; +typedef LPDIDEVICEINSTANCEW LPDIDEVICEINSTANCE; +#else +typedef DIDEVICEINSTANCEA DIDEVICEINSTANCE; +typedef LPDIDEVICEINSTANCEA LPDIDEVICEINSTANCE; +#endif // UNICODE + +typedef const DIDEVICEINSTANCEA *LPCDIDEVICEINSTANCEA; +typedef const DIDEVICEINSTANCEW *LPCDIDEVICEINSTANCEW; +#ifdef UNICODE +typedef DIDEVICEINSTANCEW DIDEVICEINSTANCE; +typedef LPCDIDEVICEINSTANCEW LPCDIDEVICEINSTANCE; +#else +typedef DIDEVICEINSTANCEA DIDEVICEINSTANCE; +typedef LPCDIDEVICEINSTANCEA LPCDIDEVICEINSTANCE; +#endif // UNICODE +typedef const DIDEVICEINSTANCE *LPCDIDEVICEINSTANCE; + +#undef INTERFACE +#define INTERFACE IDirectInputDeviceW + +DECLARE_INTERFACE_(IDirectInputDeviceW, IUnknown) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + + /*** IDirectInputDeviceW methods ***/ + STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS) PURE; + STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKW,LPVOID,DWORD) PURE; + STDMETHOD(GetProperty)(THIS_ REFGUID,LPDIPROPHEADER) PURE; + STDMETHOD(SetProperty)(THIS_ REFGUID,LPCDIPROPHEADER) PURE; + STDMETHOD(Acquire)(THIS) PURE; + STDMETHOD(Unacquire)(THIS) PURE; + STDMETHOD(GetDeviceState)(THIS_ DWORD,LPVOID) PURE; + STDMETHOD(GetDeviceData)(THIS_ DWORD,LPDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE; + STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT) PURE; + STDMETHOD(SetEventNotification)(THIS_ HANDLE) PURE; + STDMETHOD(SetCooperativeLevel)(THIS_ HWND,DWORD) PURE; + STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEW,DWORD,DWORD) PURE; + STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEW) PURE; + STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE; + STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD,REFGUID) PURE; +}; + +typedef struct IDirectInputDeviceW *LPDIRECTINPUTDEVICEW; + +#undef INTERFACE +#define INTERFACE IDirectInputDeviceA + +DECLARE_INTERFACE_(IDirectInputDeviceA, IUnknown) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + + /*** IDirectInputDeviceA methods ***/ + STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS) PURE; + STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKA,LPVOID,DWORD) PURE; + STDMETHOD(GetProperty)(THIS_ REFGUID,LPDIPROPHEADER) PURE; + STDMETHOD(SetProperty)(THIS_ REFGUID,LPCDIPROPHEADER) PURE; + STDMETHOD(Acquire)(THIS) PURE; + STDMETHOD(Unacquire)(THIS) PURE; + STDMETHOD(GetDeviceState)(THIS_ DWORD,LPVOID) PURE; + STDMETHOD(GetDeviceData)(THIS_ DWORD,LPDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE; + STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT) PURE; + STDMETHOD(SetEventNotification)(THIS_ HANDLE) PURE; + STDMETHOD(SetCooperativeLevel)(THIS_ HWND,DWORD) PURE; + STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEA,DWORD,DWORD) PURE; + STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEA) PURE; + STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE; + STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD,REFGUID) PURE; +}; + +typedef struct IDirectInputDeviceA *LPDIRECTINPUTDEVICEA; + +#ifdef UNICODE +#define IID_IDirectInputDevice IID_IDirectInputDeviceW +#define IDirectInputDevice IDirectInputDeviceW +#define IDirectInputDeviceVtbl IDirectInputDeviceWVtbl +#else +#define IID_IDirectInputDevice IID_IDirectInputDeviceA +#define IDirectInputDevice IDirectInputDeviceA +#define IDirectInputDeviceVtbl IDirectInputDeviceAVtbl +#endif +typedef struct IDirectInputDevice *LPDIRECTINPUTDEVICE; + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectInputDevice_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDirectInputDevice_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectInputDevice_Release(p) (p)->lpVtbl->Release(p) +#define IDirectInputDevice_GetCapabilities(p,a) (p)->lpVtbl->GetCapabilities(p,a) +#define IDirectInputDevice_EnumObjects(p,a,b,c) (p)->lpVtbl->EnumObjects(p,a,b,c) +#define IDirectInputDevice_GetProperty(p,a,b) (p)->lpVtbl->GetProperty(p,a,b) +#define IDirectInputDevice_SetProperty(p,a,b) (p)->lpVtbl->SetProperty(p,a,b) +#define IDirectInputDevice_Acquire(p) (p)->lpVtbl->Acquire(p) +#define IDirectInputDevice_Unacquire(p) (p)->lpVtbl->Unacquire(p) +#define IDirectInputDevice_GetDeviceState(p,a,b) (p)->lpVtbl->GetDeviceState(p,a,b) +#define IDirectInputDevice_GetDeviceData(p,a,b,c,d) (p)->lpVtbl->GetDeviceData(p,a,b,c,d) +#define IDirectInputDevice_SetDataFormat(p,a) (p)->lpVtbl->SetDataFormat(p,a) +#define IDirectInputDevice_SetEventNotification(p,a) (p)->lpVtbl->SetEventNotification(p,a) +#define IDirectInputDevice_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b) +#define IDirectInputDevice_GetObjectInfo(p,a,b,c) (p)->lpVtbl->GetObjectInfo(p,a,b,c) +#define IDirectInputDevice_GetDeviceInfo(p,a) (p)->lpVtbl->GetDeviceInfo(p,a) +#define IDirectInputDevice_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b) +#define IDirectInputDevice_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c) +#else +#define IDirectInputDevice_QueryInterface(p,a,b) (p)->QueryInterface(a,b) +#define IDirectInputDevice_AddRef(p) (p)->AddRef() +#define IDirectInputDevice_Release(p) (p)->Release() +#define IDirectInputDevice_GetCapabilities(p,a) (p)->GetCapabilities(a) +#define IDirectInputDevice_EnumObjects(p,a,b,c) (p)->EnumObjects(a,b,c) +#define IDirectInputDevice_GetProperty(p,a,b) (p)->GetProperty(a,b) +#define IDirectInputDevice_SetProperty(p,a,b) (p)->SetProperty(a,b) +#define IDirectInputDevice_Acquire(p) (p)->Acquire() +#define IDirectInputDevice_Unacquire(p) (p)->Unacquire() +#define IDirectInputDevice_GetDeviceState(p,a,b) (p)->GetDeviceState(a,b) +#define IDirectInputDevice_GetDeviceData(p,a,b,c,d) (p)->GetDeviceData(a,b,c,d) +#define IDirectInputDevice_SetDataFormat(p,a) (p)->SetDataFormat(a) +#define IDirectInputDevice_SetEventNotification(p,a) (p)->SetEventNotification(a) +#define IDirectInputDevice_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b) +#define IDirectInputDevice_GetObjectInfo(p,a,b,c) (p)->GetObjectInfo(a,b,c) +#define IDirectInputDevice_GetDeviceInfo(p,a) (p)->GetDeviceInfo(a) +#define IDirectInputDevice_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b) +#define IDirectInputDevice_Initialize(p,a,b,c) (p)->Initialize(a,b,c) +#endif + +#endif /* DIJ_RINGZERO */ + + +#if(DIRECTINPUT_VERSION >= 0x0500) + +#define DISFFC_RESET 0x00000001 +#define DISFFC_STOPALL 0x00000002 +#define DISFFC_PAUSE 0x00000004 +#define DISFFC_CONTINUE 0x00000008 +#define DISFFC_SETACTUATORSON 0x00000010 +#define DISFFC_SETACTUATORSOFF 0x00000020 + +#define DIGFFS_EMPTY 0x00000001 +#define DIGFFS_STOPPED 0x00000002 +#define DIGFFS_PAUSED 0x00000004 +#define DIGFFS_ACTUATORSON 0x00000010 +#define DIGFFS_ACTUATORSOFF 0x00000020 +#define DIGFFS_POWERON 0x00000040 +#define DIGFFS_POWEROFF 0x00000080 +#define DIGFFS_SAFETYSWITCHON 0x00000100 +#define DIGFFS_SAFETYSWITCHOFF 0x00000200 +#define DIGFFS_USERFFSWITCHON 0x00000400 +#define DIGFFS_USERFFSWITCHOFF 0x00000800 +#define DIGFFS_DEVICELOST 0x80000000 + +#ifndef DIJ_RINGZERO + +typedef struct DIEFFECTINFOA { + DWORD dwSize; + GUID guid; + DWORD dwEffType; + DWORD dwStaticParams; + DWORD dwDynamicParams; + CHAR tszName[MAX_PATH]; +} DIEFFECTINFOA, *LPDIEFFECTINFOA; +typedef struct DIEFFECTINFOW { + DWORD dwSize; + GUID guid; + DWORD dwEffType; + DWORD dwStaticParams; + DWORD dwDynamicParams; + WCHAR tszName[MAX_PATH]; +} DIEFFECTINFOW, *LPDIEFFECTINFOW; +#ifdef UNICODE +typedef DIEFFECTINFOW DIEFFECTINFO; +typedef LPDIEFFECTINFOW LPDIEFFECTINFO; +#else +typedef DIEFFECTINFOA DIEFFECTINFO; +typedef LPDIEFFECTINFOA LPDIEFFECTINFO; +#endif // UNICODE +typedef const DIEFFECTINFOA *LPCDIEFFECTINFOA; +typedef const DIEFFECTINFOW *LPCDIEFFECTINFOW; +typedef const DIEFFECTINFO *LPCDIEFFECTINFO; + +#define DISDD_CONTINUE 0x00000001 + +typedef BOOL (FAR PASCAL * LPDIENUMEFFECTSCALLBACKA)(LPCDIEFFECTINFOA, LPVOID); +typedef BOOL (FAR PASCAL * LPDIENUMEFFECTSCALLBACKW)(LPCDIEFFECTINFOW, LPVOID); +#ifdef UNICODE +#define LPDIENUMEFFECTSCALLBACK LPDIENUMEFFECTSCALLBACKW +#else +#define LPDIENUMEFFECTSCALLBACK LPDIENUMEFFECTSCALLBACKA +#endif // !UNICODE +typedef BOOL (FAR PASCAL * LPDIENUMCREATEDEFFECTOBJECTSCALLBACK)(LPDIRECTINPUTEFFECT, LPVOID); + +#undef INTERFACE +#define INTERFACE IDirectInputDevice2W + +DECLARE_INTERFACE_(IDirectInputDevice2W, IDirectInputDeviceW) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + + /*** IDirectInputDeviceW methods ***/ + STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS) PURE; + STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKW,LPVOID,DWORD) PURE; + STDMETHOD(GetProperty)(THIS_ REFGUID,LPDIPROPHEADER) PURE; + STDMETHOD(SetProperty)(THIS_ REFGUID,LPCDIPROPHEADER) PURE; + STDMETHOD(Acquire)(THIS) PURE; + STDMETHOD(Unacquire)(THIS) PURE; + STDMETHOD(GetDeviceState)(THIS_ DWORD,LPVOID) PURE; + STDMETHOD(GetDeviceData)(THIS_ DWORD,LPDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE; + STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT) PURE; + STDMETHOD(SetEventNotification)(THIS_ HANDLE) PURE; + STDMETHOD(SetCooperativeLevel)(THIS_ HWND,DWORD) PURE; + STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEW,DWORD,DWORD) PURE; + STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEW) PURE; + STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE; + STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD,REFGUID) PURE; + + /*** IDirectInputDevice2W methods ***/ + STDMETHOD(CreateEffect)(THIS_ REFGUID,LPCDIEFFECT,LPDIRECTINPUTEFFECT *,LPUNKNOWN) PURE; + STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKW,LPVOID,DWORD) PURE; + STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOW,REFGUID) PURE; + STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD) PURE; + STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD) PURE; + STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK,LPVOID,DWORD) PURE; + STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE) PURE; + STDMETHOD(Poll)(THIS) PURE; + STDMETHOD(SendDeviceData)(THIS_ DWORD,LPCDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE; +}; + +typedef struct IDirectInputDevice2W *LPDIRECTINPUTDEVICE2W; + +#undef INTERFACE +#define INTERFACE IDirectInputDevice2A + +DECLARE_INTERFACE_(IDirectInputDevice2A, IDirectInputDeviceA) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + + /*** IDirectInputDeviceA methods ***/ + STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS) PURE; + STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKA,LPVOID,DWORD) PURE; + STDMETHOD(GetProperty)(THIS_ REFGUID,LPDIPROPHEADER) PURE; + STDMETHOD(SetProperty)(THIS_ REFGUID,LPCDIPROPHEADER) PURE; + STDMETHOD(Acquire)(THIS) PURE; + STDMETHOD(Unacquire)(THIS) PURE; + STDMETHOD(GetDeviceState)(THIS_ DWORD,LPVOID) PURE; + STDMETHOD(GetDeviceData)(THIS_ DWORD,LPDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE; + STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT) PURE; + STDMETHOD(SetEventNotification)(THIS_ HANDLE) PURE; + STDMETHOD(SetCooperativeLevel)(THIS_ HWND,DWORD) PURE; + STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEA,DWORD,DWORD) PURE; + STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEA) PURE; + STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE; + STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD,REFGUID) PURE; + + /*** IDirectInputDevice2A methods ***/ + STDMETHOD(CreateEffect)(THIS_ REFGUID,LPCDIEFFECT,LPDIRECTINPUTEFFECT *,LPUNKNOWN) PURE; + STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKA,LPVOID,DWORD) PURE; + STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOA,REFGUID) PURE; + STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD) PURE; + STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD) PURE; + STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK,LPVOID,DWORD) PURE; + STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE) PURE; + STDMETHOD(Poll)(THIS) PURE; + STDMETHOD(SendDeviceData)(THIS_ DWORD,LPCDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE; +}; + +typedef struct IDirectInputDevice2A *LPDIRECTINPUTDEVICE2A; + +#ifdef UNICODE +#define IID_IDirectInputDevice2 IID_IDirectInputDevice2W +#define IDirectInputDevice2 IDirectInputDevice2W +#define IDirectInputDevice2Vtbl IDirectInputDevice2WVtbl +#else +#define IID_IDirectInputDevice2 IID_IDirectInputDevice2A +#define IDirectInputDevice2 IDirectInputDevice2A +#define IDirectInputDevice2Vtbl IDirectInputDevice2AVtbl +#endif +typedef struct IDirectInputDevice2 *LPDIRECTINPUTDEVICE2; + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectInputDevice2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDirectInputDevice2_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectInputDevice2_Release(p) (p)->lpVtbl->Release(p) +#define IDirectInputDevice2_GetCapabilities(p,a) (p)->lpVtbl->GetCapabilities(p,a) +#define IDirectInputDevice2_EnumObjects(p,a,b,c) (p)->lpVtbl->EnumObjects(p,a,b,c) +#define IDirectInputDevice2_GetProperty(p,a,b) (p)->lpVtbl->GetProperty(p,a,b) +#define IDirectInputDevice2_SetProperty(p,a,b) (p)->lpVtbl->SetProperty(p,a,b) +#define IDirectInputDevice2_Acquire(p) (p)->lpVtbl->Acquire(p) +#define IDirectInputDevice2_Unacquire(p) (p)->lpVtbl->Unacquire(p) +#define IDirectInputDevice2_GetDeviceState(p,a,b) (p)->lpVtbl->GetDeviceState(p,a,b) +#define IDirectInputDevice2_GetDeviceData(p,a,b,c,d) (p)->lpVtbl->GetDeviceData(p,a,b,c,d) +#define IDirectInputDevice2_SetDataFormat(p,a) (p)->lpVtbl->SetDataFormat(p,a) +#define IDirectInputDevice2_SetEventNotification(p,a) (p)->lpVtbl->SetEventNotification(p,a) +#define IDirectInputDevice2_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b) +#define IDirectInputDevice2_GetObjectInfo(p,a,b,c) (p)->lpVtbl->GetObjectInfo(p,a,b,c) +#define IDirectInputDevice2_GetDeviceInfo(p,a) (p)->lpVtbl->GetDeviceInfo(p,a) +#define IDirectInputDevice2_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b) +#define IDirectInputDevice2_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c) +#define IDirectInputDevice2_CreateEffect(p,a,b,c,d) (p)->lpVtbl->CreateEffect(p,a,b,c,d) +#define IDirectInputDevice2_EnumEffects(p,a,b,c) (p)->lpVtbl->EnumEffects(p,a,b,c) +#define IDirectInputDevice2_GetEffectInfo(p,a,b) (p)->lpVtbl->GetEffectInfo(p,a,b) +#define IDirectInputDevice2_GetForceFeedbackState(p,a) (p)->lpVtbl->GetForceFeedbackState(p,a) +#define IDirectInputDevice2_SendForceFeedbackCommand(p,a) (p)->lpVtbl->SendForceFeedbackCommand(p,a) +#define IDirectInputDevice2_EnumCreatedEffectObjects(p,a,b,c) (p)->lpVtbl->EnumCreatedEffectObjects(p,a,b,c) +#define IDirectInputDevice2_Escape(p,a) (p)->lpVtbl->Escape(p,a) +#define IDirectInputDevice2_Poll(p) (p)->lpVtbl->Poll(p) +#define IDirectInputDevice2_SendDeviceData(p,a,b,c,d) (p)->lpVtbl->SendDeviceData(p,a,b,c,d) +#else +#define IDirectInputDevice2_QueryInterface(p,a,b) (p)->QueryInterface(a,b) +#define IDirectInputDevice2_AddRef(p) (p)->AddRef() +#define IDirectInputDevice2_Release(p) (p)->Release() +#define IDirectInputDevice2_GetCapabilities(p,a) (p)->GetCapabilities(a) +#define IDirectInputDevice2_EnumObjects(p,a,b,c) (p)->EnumObjects(a,b,c) +#define IDirectInputDevice2_GetProperty(p,a,b) (p)->GetProperty(a,b) +#define IDirectInputDevice2_SetProperty(p,a,b) (p)->SetProperty(a,b) +#define IDirectInputDevice2_Acquire(p) (p)->Acquire() +#define IDirectInputDevice2_Unacquire(p) (p)->Unacquire() +#define IDirectInputDevice2_GetDeviceState(p,a,b) (p)->GetDeviceState(a,b) +#define IDirectInputDevice2_GetDeviceData(p,a,b,c,d) (p)->GetDeviceData(a,b,c,d) +#define IDirectInputDevice2_SetDataFormat(p,a) (p)->SetDataFormat(a) +#define IDirectInputDevice2_SetEventNotification(p,a) (p)->SetEventNotification(a) +#define IDirectInputDevice2_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b) +#define IDirectInputDevice2_GetObjectInfo(p,a,b,c) (p)->GetObjectInfo(a,b,c) +#define IDirectInputDevice2_GetDeviceInfo(p,a) (p)->GetDeviceInfo(a) +#define IDirectInputDevice2_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b) +#define IDirectInputDevice2_Initialize(p,a,b,c) (p)->Initialize(a,b,c) +#define IDirectInputDevice2_CreateEffect(p,a,b,c,d) (p)->CreateEffect(a,b,c,d) +#define IDirectInputDevice2_EnumEffects(p,a,b,c) (p)->EnumEffects(a,b,c) +#define IDirectInputDevice2_GetEffectInfo(p,a,b) (p)->GetEffectInfo(a,b) +#define IDirectInputDevice2_GetForceFeedbackState(p,a) (p)->GetForceFeedbackState(a) +#define IDirectInputDevice2_SendForceFeedbackCommand(p,a) (p)->SendForceFeedbackCommand(a) +#define IDirectInputDevice2_EnumCreatedEffectObjects(p,a,b,c) (p)->EnumCreatedEffectObjects(a,b,c) +#define IDirectInputDevice2_Escape(p,a) (p)->Escape(a) +#define IDirectInputDevice2_Poll(p) (p)->Poll() +#define IDirectInputDevice2_SendDeviceData(p,a,b,c,d) (p)->SendDeviceData(a,b,c,d) +#endif + +#endif /* DIJ_RINGZERO */ + +#endif /* DIRECTINPUT_VERSION >= 0x0500 */ + +#if(DIRECTINPUT_VERSION >= 0x0700) +#define DIFEF_DEFAULT 0x00000000 +#define DIFEF_INCLUDENONSTANDARD 0x00000001 +#define DIFEF_MODIFYIFNEEDED 0x00000010 + +#ifndef DIJ_RINGZERO + +#undef INTERFACE +#define INTERFACE IDirectInputDevice7W + +DECLARE_INTERFACE_(IDirectInputDevice7W, IDirectInputDevice2W) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + + /*** IDirectInputDevice2W methods ***/ + STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS) PURE; + STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKW,LPVOID,DWORD) PURE; + STDMETHOD(GetProperty)(THIS_ REFGUID,LPDIPROPHEADER) PURE; + STDMETHOD(SetProperty)(THIS_ REFGUID,LPCDIPROPHEADER) PURE; + STDMETHOD(Acquire)(THIS) PURE; + STDMETHOD(Unacquire)(THIS) PURE; + STDMETHOD(GetDeviceState)(THIS_ DWORD,LPVOID) PURE; + STDMETHOD(GetDeviceData)(THIS_ DWORD,LPDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE; + STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT) PURE; + STDMETHOD(SetEventNotification)(THIS_ HANDLE) PURE; + STDMETHOD(SetCooperativeLevel)(THIS_ HWND,DWORD) PURE; + STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEW,DWORD,DWORD) PURE; + STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEW) PURE; + STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE; + STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD,REFGUID) PURE; + STDMETHOD(CreateEffect)(THIS_ REFGUID,LPCDIEFFECT,LPDIRECTINPUTEFFECT *,LPUNKNOWN) PURE; + STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKW,LPVOID,DWORD) PURE; + STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOW,REFGUID) PURE; + STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD) PURE; + STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD) PURE; + STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK,LPVOID,DWORD) PURE; + STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE) PURE; + STDMETHOD(Poll)(THIS) PURE; + STDMETHOD(SendDeviceData)(THIS_ DWORD,LPCDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE; + + /*** IDirectInputDevice7W methods ***/ + STDMETHOD(EnumEffectsInFile)(THIS_ LPCWSTR,LPDIENUMEFFECTSINFILECALLBACK,LPVOID,DWORD) PURE; + STDMETHOD(WriteEffectToFile)(THIS_ LPCWSTR,DWORD,LPDIFILEEFFECT,DWORD) PURE; +}; + +typedef struct IDirectInputDevice7W *LPDIRECTINPUTDEVICE7W; + +#undef INTERFACE +#define INTERFACE IDirectInputDevice7A + +DECLARE_INTERFACE_(IDirectInputDevice7A, IDirectInputDevice2A) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + + /*** IDirectInputDevice2A methods ***/ + STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS) PURE; + STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKA,LPVOID,DWORD) PURE; + STDMETHOD(GetProperty)(THIS_ REFGUID,LPDIPROPHEADER) PURE; + STDMETHOD(SetProperty)(THIS_ REFGUID,LPCDIPROPHEADER) PURE; + STDMETHOD(Acquire)(THIS) PURE; + STDMETHOD(Unacquire)(THIS) PURE; + STDMETHOD(GetDeviceState)(THIS_ DWORD,LPVOID) PURE; + STDMETHOD(GetDeviceData)(THIS_ DWORD,LPDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE; + STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT) PURE; + STDMETHOD(SetEventNotification)(THIS_ HANDLE) PURE; + STDMETHOD(SetCooperativeLevel)(THIS_ HWND,DWORD) PURE; + STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEA,DWORD,DWORD) PURE; + STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEA) PURE; + STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE; + STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD,REFGUID) PURE; + STDMETHOD(CreateEffect)(THIS_ REFGUID,LPCDIEFFECT,LPDIRECTINPUTEFFECT *,LPUNKNOWN) PURE; + STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKA,LPVOID,DWORD) PURE; + STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOA,REFGUID) PURE; + STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD) PURE; + STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD) PURE; + STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK,LPVOID,DWORD) PURE; + STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE) PURE; + STDMETHOD(Poll)(THIS) PURE; + STDMETHOD(SendDeviceData)(THIS_ DWORD,LPCDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE; + + /*** IDirectInputDevice7A methods ***/ + STDMETHOD(EnumEffectsInFile)(THIS_ LPCSTR,LPDIENUMEFFECTSINFILECALLBACK,LPVOID,DWORD) PURE; + STDMETHOD(WriteEffectToFile)(THIS_ LPCSTR,DWORD,LPDIFILEEFFECT,DWORD) PURE; +}; + +typedef struct IDirectInputDevice7A *LPDIRECTINPUTDEVICE7A; + +#ifdef UNICODE +#define IID_IDirectInputDevice7 IID_IDirectInputDevice7W +#define IDirectInputDevice7 IDirectInputDevice7W +#define IDirectInputDevice7Vtbl IDirectInputDevice7WVtbl +#else +#define IID_IDirectInputDevice7 IID_IDirectInputDevice7A +#define IDirectInputDevice7 IDirectInputDevice7A +#define IDirectInputDevice7Vtbl IDirectInputDevice7AVtbl +#endif +typedef struct IDirectInputDevice7 *LPDIRECTINPUTDEVICE7; + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectInputDevice7_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDirectInputDevice7_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectInputDevice7_Release(p) (p)->lpVtbl->Release(p) +#define IDirectInputDevice7_GetCapabilities(p,a) (p)->lpVtbl->GetCapabilities(p,a) +#define IDirectInputDevice7_EnumObjects(p,a,b,c) (p)->lpVtbl->EnumObjects(p,a,b,c) +#define IDirectInputDevice7_GetProperty(p,a,b) (p)->lpVtbl->GetProperty(p,a,b) +#define IDirectInputDevice7_SetProperty(p,a,b) (p)->lpVtbl->SetProperty(p,a,b) +#define IDirectInputDevice7_Acquire(p) (p)->lpVtbl->Acquire(p) +#define IDirectInputDevice7_Unacquire(p) (p)->lpVtbl->Unacquire(p) +#define IDirectInputDevice7_GetDeviceState(p,a,b) (p)->lpVtbl->GetDeviceState(p,a,b) +#define IDirectInputDevice7_GetDeviceData(p,a,b,c,d) (p)->lpVtbl->GetDeviceData(p,a,b,c,d) +#define IDirectInputDevice7_SetDataFormat(p,a) (p)->lpVtbl->SetDataFormat(p,a) +#define IDirectInputDevice7_SetEventNotification(p,a) (p)->lpVtbl->SetEventNotification(p,a) +#define IDirectInputDevice7_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b) +#define IDirectInputDevice7_GetObjectInfo(p,a,b,c) (p)->lpVtbl->GetObjectInfo(p,a,b,c) +#define IDirectInputDevice7_GetDeviceInfo(p,a) (p)->lpVtbl->GetDeviceInfo(p,a) +#define IDirectInputDevice7_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b) +#define IDirectInputDevice7_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c) +#define IDirectInputDevice7_CreateEffect(p,a,b,c,d) (p)->lpVtbl->CreateEffect(p,a,b,c,d) +#define IDirectInputDevice7_EnumEffects(p,a,b,c) (p)->lpVtbl->EnumEffects(p,a,b,c) +#define IDirectInputDevice7_GetEffectInfo(p,a,b) (p)->lpVtbl->GetEffectInfo(p,a,b) +#define IDirectInputDevice7_GetForceFeedbackState(p,a) (p)->lpVtbl->GetForceFeedbackState(p,a) +#define IDirectInputDevice7_SendForceFeedbackCommand(p,a) (p)->lpVtbl->SendForceFeedbackCommand(p,a) +#define IDirectInputDevice7_EnumCreatedEffectObjects(p,a,b,c) (p)->lpVtbl->EnumCreatedEffectObjects(p,a,b,c) +#define IDirectInputDevice7_Escape(p,a) (p)->lpVtbl->Escape(p,a) +#define IDirectInputDevice7_Poll(p) (p)->lpVtbl->Poll(p) +#define IDirectInputDevice7_SendDeviceData(p,a,b,c,d) (p)->lpVtbl->SendDeviceData(p,a,b,c,d) +#define IDirectInputDevice7_EnumEffectsInFile(p,a,b,c,d) (p)->lpVtbl->EnumEffectsInFile(p,a,b,c,d) +#define IDirectInputDevice7_WriteEffectToFile(p,a,b,c,d) (p)->lpVtbl->WriteEffectToFile(p,a,b,c,d) +#else +#define IDirectInputDevice7_QueryInterface(p,a,b) (p)->QueryInterface(a,b) +#define IDirectInputDevice7_AddRef(p) (p)->AddRef() +#define IDirectInputDevice7_Release(p) (p)->Release() +#define IDirectInputDevice7_GetCapabilities(p,a) (p)->GetCapabilities(a) +#define IDirectInputDevice7_EnumObjects(p,a,b,c) (p)->EnumObjects(a,b,c) +#define IDirectInputDevice7_GetProperty(p,a,b) (p)->GetProperty(a,b) +#define IDirectInputDevice7_SetProperty(p,a,b) (p)->SetProperty(a,b) +#define IDirectInputDevice7_Acquire(p) (p)->Acquire() +#define IDirectInputDevice7_Unacquire(p) (p)->Unacquire() +#define IDirectInputDevice7_GetDeviceState(p,a,b) (p)->GetDeviceState(a,b) +#define IDirectInputDevice7_GetDeviceData(p,a,b,c,d) (p)->GetDeviceData(a,b,c,d) +#define IDirectInputDevice7_SetDataFormat(p,a) (p)->SetDataFormat(a) +#define IDirectInputDevice7_SetEventNotification(p,a) (p)->SetEventNotification(a) +#define IDirectInputDevice7_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b) +#define IDirectInputDevice7_GetObjectInfo(p,a,b,c) (p)->GetObjectInfo(a,b,c) +#define IDirectInputDevice7_GetDeviceInfo(p,a) (p)->GetDeviceInfo(a) +#define IDirectInputDevice7_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b) +#define IDirectInputDevice7_Initialize(p,a,b,c) (p)->Initialize(a,b,c) +#define IDirectInputDevice7_CreateEffect(p,a,b,c,d) (p)->CreateEffect(a,b,c,d) +#define IDirectInputDevice7_EnumEffects(p,a,b,c) (p)->EnumEffects(a,b,c) +#define IDirectInputDevice7_GetEffectInfo(p,a,b) (p)->GetEffectInfo(a,b) +#define IDirectInputDevice7_GetForceFeedbackState(p,a) (p)->GetForceFeedbackState(a) +#define IDirectInputDevice7_SendForceFeedbackCommand(p,a) (p)->SendForceFeedbackCommand(a) +#define IDirectInputDevice7_EnumCreatedEffectObjects(p,a,b,c) (p)->EnumCreatedEffectObjects(a,b,c) +#define IDirectInputDevice7_Escape(p,a) (p)->Escape(a) +#define IDirectInputDevice7_Poll(p) (p)->Poll() +#define IDirectInputDevice7_SendDeviceData(p,a,b,c,d) (p)->SendDeviceData(a,b,c,d) +#define IDirectInputDevice7_EnumEffectsInFile(p,a,b,c,d) (p)->EnumEffectsInFile(a,b,c,d) +#define IDirectInputDevice7_WriteEffectToFile(p,a,b,c,d) (p)->WriteEffectToFile(a,b,c,d) +#endif + +#endif /* DIJ_RINGZERO */ + +#endif /* DIRECTINPUT_VERSION >= 0x0700 */ + +#if(DIRECTINPUT_VERSION >= 0x0800) + +#ifndef DIJ_RINGZERO + +#undef INTERFACE +#define INTERFACE IDirectInputDevice8W + +DECLARE_INTERFACE_(IDirectInputDevice8W, IUnknown) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + + /*** IDirectInputDevice8W methods ***/ + STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS) PURE; + STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKW,LPVOID,DWORD) PURE; + STDMETHOD(GetProperty)(THIS_ REFGUID,LPDIPROPHEADER) PURE; + STDMETHOD(SetProperty)(THIS_ REFGUID,LPCDIPROPHEADER) PURE; + STDMETHOD(Acquire)(THIS) PURE; + STDMETHOD(Unacquire)(THIS) PURE; + STDMETHOD(GetDeviceState)(THIS_ DWORD,LPVOID) PURE; + STDMETHOD(GetDeviceData)(THIS_ DWORD,LPDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE; + STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT) PURE; + STDMETHOD(SetEventNotification)(THIS_ HANDLE) PURE; + STDMETHOD(SetCooperativeLevel)(THIS_ HWND,DWORD) PURE; + STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEW,DWORD,DWORD) PURE; + STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEW) PURE; + STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE; + STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD,REFGUID) PURE; + STDMETHOD(CreateEffect)(THIS_ REFGUID,LPCDIEFFECT,LPDIRECTINPUTEFFECT *,LPUNKNOWN) PURE; + STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKW,LPVOID,DWORD) PURE; + STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOW,REFGUID) PURE; + STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD) PURE; + STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD) PURE; + STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK,LPVOID,DWORD) PURE; + STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE) PURE; + STDMETHOD(Poll)(THIS) PURE; + STDMETHOD(SendDeviceData)(THIS_ DWORD,LPCDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE; + STDMETHOD(EnumEffectsInFile)(THIS_ LPCWSTR,LPDIENUMEFFECTSINFILECALLBACK,LPVOID,DWORD) PURE; + STDMETHOD(WriteEffectToFile)(THIS_ LPCWSTR,DWORD,LPDIFILEEFFECT,DWORD) PURE; + STDMETHOD(BuildActionMap)(THIS_ LPDIACTIONFORMATW,LPCWSTR,DWORD) PURE; + STDMETHOD(SetActionMap)(THIS_ LPDIACTIONFORMATW,LPCWSTR,DWORD) PURE; + STDMETHOD(GetImageInfo)(THIS_ LPDIDEVICEIMAGEINFOHEADERW) PURE; +}; + +typedef struct IDirectInputDevice8W *LPDIRECTINPUTDEVICE8W; + +#undef INTERFACE +#define INTERFACE IDirectInputDevice8A + +DECLARE_INTERFACE_(IDirectInputDevice8A, IUnknown) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + + /*** IDirectInputDevice8A methods ***/ + STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS) PURE; + STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKA,LPVOID,DWORD) PURE; + STDMETHOD(GetProperty)(THIS_ REFGUID,LPDIPROPHEADER) PURE; + STDMETHOD(SetProperty)(THIS_ REFGUID,LPCDIPROPHEADER) PURE; + STDMETHOD(Acquire)(THIS) PURE; + STDMETHOD(Unacquire)(THIS) PURE; + STDMETHOD(GetDeviceState)(THIS_ DWORD,LPVOID) PURE; + STDMETHOD(GetDeviceData)(THIS_ DWORD,LPDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE; + STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT) PURE; + STDMETHOD(SetEventNotification)(THIS_ HANDLE) PURE; + STDMETHOD(SetCooperativeLevel)(THIS_ HWND,DWORD) PURE; + STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEA,DWORD,DWORD) PURE; + STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEA) PURE; + STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE; + STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD,REFGUID) PURE; + STDMETHOD(CreateEffect)(THIS_ REFGUID,LPCDIEFFECT,LPDIRECTINPUTEFFECT *,LPUNKNOWN) PURE; + STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKA,LPVOID,DWORD) PURE; + STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOA,REFGUID) PURE; + STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD) PURE; + STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD) PURE; + STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK,LPVOID,DWORD) PURE; + STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE) PURE; + STDMETHOD(Poll)(THIS) PURE; + STDMETHOD(SendDeviceData)(THIS_ DWORD,LPCDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE; + STDMETHOD(EnumEffectsInFile)(THIS_ LPCSTR,LPDIENUMEFFECTSINFILECALLBACK,LPVOID,DWORD) PURE; + STDMETHOD(WriteEffectToFile)(THIS_ LPCSTR,DWORD,LPDIFILEEFFECT,DWORD) PURE; + STDMETHOD(BuildActionMap)(THIS_ LPDIACTIONFORMATA,LPCSTR,DWORD) PURE; + STDMETHOD(SetActionMap)(THIS_ LPDIACTIONFORMATA,LPCSTR,DWORD) PURE; + STDMETHOD(GetImageInfo)(THIS_ LPDIDEVICEIMAGEINFOHEADERA) PURE; +}; + +typedef struct IDirectInputDevice8A *LPDIRECTINPUTDEVICE8A; + +#ifdef UNICODE +#define IID_IDirectInputDevice8 IID_IDirectInputDevice8W +#define IDirectInputDevice8 IDirectInputDevice8W +#define IDirectInputDevice8Vtbl IDirectInputDevice8WVtbl +#else +#define IID_IDirectInputDevice8 IID_IDirectInputDevice8A +#define IDirectInputDevice8 IDirectInputDevice8A +#define IDirectInputDevice8Vtbl IDirectInputDevice8AVtbl +#endif +typedef struct IDirectInputDevice8 *LPDIRECTINPUTDEVICE8; + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectInputDevice8_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDirectInputDevice8_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectInputDevice8_Release(p) (p)->lpVtbl->Release(p) +#define IDirectInputDevice8_GetCapabilities(p,a) (p)->lpVtbl->GetCapabilities(p,a) +#define IDirectInputDevice8_EnumObjects(p,a,b,c) (p)->lpVtbl->EnumObjects(p,a,b,c) +#define IDirectInputDevice8_GetProperty(p,a,b) (p)->lpVtbl->GetProperty(p,a,b) +#define IDirectInputDevice8_SetProperty(p,a,b) (p)->lpVtbl->SetProperty(p,a,b) +#define IDirectInputDevice8_Acquire(p) (p)->lpVtbl->Acquire(p) +#define IDirectInputDevice8_Unacquire(p) (p)->lpVtbl->Unacquire(p) +#define IDirectInputDevice8_GetDeviceState(p,a,b) (p)->lpVtbl->GetDeviceState(p,a,b) +#define IDirectInputDevice8_GetDeviceData(p,a,b,c,d) (p)->lpVtbl->GetDeviceData(p,a,b,c,d) +#define IDirectInputDevice8_SetDataFormat(p,a) (p)->lpVtbl->SetDataFormat(p,a) +#define IDirectInputDevice8_SetEventNotification(p,a) (p)->lpVtbl->SetEventNotification(p,a) +#define IDirectInputDevice8_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b) +#define IDirectInputDevice8_GetObjectInfo(p,a,b,c) (p)->lpVtbl->GetObjectInfo(p,a,b,c) +#define IDirectInputDevice8_GetDeviceInfo(p,a) (p)->lpVtbl->GetDeviceInfo(p,a) +#define IDirectInputDevice8_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b) +#define IDirectInputDevice8_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c) +#define IDirectInputDevice8_CreateEffect(p,a,b,c,d) (p)->lpVtbl->CreateEffect(p,a,b,c,d) +#define IDirectInputDevice8_EnumEffects(p,a,b,c) (p)->lpVtbl->EnumEffects(p,a,b,c) +#define IDirectInputDevice8_GetEffectInfo(p,a,b) (p)->lpVtbl->GetEffectInfo(p,a,b) +#define IDirectInputDevice8_GetForceFeedbackState(p,a) (p)->lpVtbl->GetForceFeedbackState(p,a) +#define IDirectInputDevice8_SendForceFeedbackCommand(p,a) (p)->lpVtbl->SendForceFeedbackCommand(p,a) +#define IDirectInputDevice8_EnumCreatedEffectObjects(p,a,b,c) (p)->lpVtbl->EnumCreatedEffectObjects(p,a,b,c) +#define IDirectInputDevice8_Escape(p,a) (p)->lpVtbl->Escape(p,a) +#define IDirectInputDevice8_Poll(p) (p)->lpVtbl->Poll(p) +#define IDirectInputDevice8_SendDeviceData(p,a,b,c,d) (p)->lpVtbl->SendDeviceData(p,a,b,c,d) +#define IDirectInputDevice8_EnumEffectsInFile(p,a,b,c,d) (p)->lpVtbl->EnumEffectsInFile(p,a,b,c,d) +#define IDirectInputDevice8_WriteEffectToFile(p,a,b,c,d) (p)->lpVtbl->WriteEffectToFile(p,a,b,c,d) +#define IDirectInputDevice8_BuildActionMap(p,a,b,c) (p)->lpVtbl->BuildActionMap(p,a,b,c) +#define IDirectInputDevice8_SetActionMap(p,a,b,c) (p)->lpVtbl->SetActionMap(p,a,b,c) +#define IDirectInputDevice8_GetImageInfo(p,a) (p)->lpVtbl->GetImageInfo(p,a) +#else +#define IDirectInputDevice8_QueryInterface(p,a,b) (p)->QueryInterface(a,b) +#define IDirectInputDevice8_AddRef(p) (p)->AddRef() +#define IDirectInputDevice8_Release(p) (p)->Release() +#define IDirectInputDevice8_GetCapabilities(p,a) (p)->GetCapabilities(a) +#define IDirectInputDevice8_EnumObjects(p,a,b,c) (p)->EnumObjects(a,b,c) +#define IDirectInputDevice8_GetProperty(p,a,b) (p)->GetProperty(a,b) +#define IDirectInputDevice8_SetProperty(p,a,b) (p)->SetProperty(a,b) +#define IDirectInputDevice8_Acquire(p) (p)->Acquire() +#define IDirectInputDevice8_Unacquire(p) (p)->Unacquire() +#define IDirectInputDevice8_GetDeviceState(p,a,b) (p)->GetDeviceState(a,b) +#define IDirectInputDevice8_GetDeviceData(p,a,b,c,d) (p)->GetDeviceData(a,b,c,d) +#define IDirectInputDevice8_SetDataFormat(p,a) (p)->SetDataFormat(a) +#define IDirectInputDevice8_SetEventNotification(p,a) (p)->SetEventNotification(a) +#define IDirectInputDevice8_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b) +#define IDirectInputDevice8_GetObjectInfo(p,a,b,c) (p)->GetObjectInfo(a,b,c) +#define IDirectInputDevice8_GetDeviceInfo(p,a) (p)->GetDeviceInfo(a) +#define IDirectInputDevice8_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b) +#define IDirectInputDevice8_Initialize(p,a,b,c) (p)->Initialize(a,b,c) +#define IDirectInputDevice8_CreateEffect(p,a,b,c,d) (p)->CreateEffect(a,b,c,d) +#define IDirectInputDevice8_EnumEffects(p,a,b,c) (p)->EnumEffects(a,b,c) +#define IDirectInputDevice8_GetEffectInfo(p,a,b) (p)->GetEffectInfo(a,b) +#define IDirectInputDevice8_GetForceFeedbackState(p,a) (p)->GetForceFeedbackState(a) +#define IDirectInputDevice8_SendForceFeedbackCommand(p,a) (p)->SendForceFeedbackCommand(a) +#define IDirectInputDevice8_EnumCreatedEffectObjects(p,a,b,c) (p)->EnumCreatedEffectObjects(a,b,c) +#define IDirectInputDevice8_Escape(p,a) (p)->Escape(a) +#define IDirectInputDevice8_Poll(p) (p)->Poll() +#define IDirectInputDevice8_SendDeviceData(p,a,b,c,d) (p)->SendDeviceData(a,b,c,d) +#define IDirectInputDevice8_EnumEffectsInFile(p,a,b,c,d) (p)->EnumEffectsInFile(a,b,c,d) +#define IDirectInputDevice8_WriteEffectToFile(p,a,b,c,d) (p)->WriteEffectToFile(a,b,c,d) +#define IDirectInputDevice8_BuildActionMap(p,a,b,c) (p)->BuildActionMap(a,b,c) +#define IDirectInputDevice8_SetActionMap(p,a,b,c) (p)->SetActionMap(a,b,c) +#define IDirectInputDevice8_GetImageInfo(p,a) (p)->GetImageInfo(a) +#endif + +#endif /* DIJ_RINGZERO */ + +#endif /* DIRECTINPUT_VERSION >= 0x0800 */ + +/**************************************************************************** + * + * Mouse + * + ****************************************************************************/ + +#ifndef DIJ_RINGZERO + +typedef struct _DIMOUSESTATE { + LONG lX; + LONG lY; + LONG lZ; + BYTE rgbButtons[4]; +} DIMOUSESTATE, *LPDIMOUSESTATE; + +#if DIRECTINPUT_VERSION >= 0x0700 +typedef struct _DIMOUSESTATE2 { + LONG lX; + LONG lY; + LONG lZ; + BYTE rgbButtons[8]; +} DIMOUSESTATE2, *LPDIMOUSESTATE2; +#endif + + +#define DIMOFS_X FIELD_OFFSET(DIMOUSESTATE, lX) +#define DIMOFS_Y FIELD_OFFSET(DIMOUSESTATE, lY) +#define DIMOFS_Z FIELD_OFFSET(DIMOUSESTATE, lZ) +#define DIMOFS_BUTTON0 (FIELD_OFFSET(DIMOUSESTATE, rgbButtons) + 0) +#define DIMOFS_BUTTON1 (FIELD_OFFSET(DIMOUSESTATE, rgbButtons) + 1) +#define DIMOFS_BUTTON2 (FIELD_OFFSET(DIMOUSESTATE, rgbButtons) + 2) +#define DIMOFS_BUTTON3 (FIELD_OFFSET(DIMOUSESTATE, rgbButtons) + 3) +#if (DIRECTINPUT_VERSION >= 0x0700) +#define DIMOFS_BUTTON4 (FIELD_OFFSET(DIMOUSESTATE2, rgbButtons) + 4) +#define DIMOFS_BUTTON5 (FIELD_OFFSET(DIMOUSESTATE2, rgbButtons) + 5) +#define DIMOFS_BUTTON6 (FIELD_OFFSET(DIMOUSESTATE2, rgbButtons) + 6) +#define DIMOFS_BUTTON7 (FIELD_OFFSET(DIMOUSESTATE2, rgbButtons) + 7) +#endif +#endif /* DIJ_RINGZERO */ + +/**************************************************************************** + * + * Keyboard + * + ****************************************************************************/ + +#ifndef DIJ_RINGZERO + +/**************************************************************************** + * + * DirectInput keyboard scan codes + * + ****************************************************************************/ +#define DIK_ESCAPE 0x01 +#define DIK_1 0x02 +#define DIK_2 0x03 +#define DIK_3 0x04 +#define DIK_4 0x05 +#define DIK_5 0x06 +#define DIK_6 0x07 +#define DIK_7 0x08 +#define DIK_8 0x09 +#define DIK_9 0x0A +#define DIK_0 0x0B +#define DIK_MINUS 0x0C /* - on main keyboard */ +#define DIK_EQUALS 0x0D +#define DIK_BACK 0x0E /* backspace */ +#define DIK_TAB 0x0F +#define DIK_Q 0x10 +#define DIK_W 0x11 +#define DIK_E 0x12 +#define DIK_R 0x13 +#define DIK_T 0x14 +#define DIK_Y 0x15 +#define DIK_U 0x16 +#define DIK_I 0x17 +#define DIK_O 0x18 +#define DIK_P 0x19 +#define DIK_LBRACKET 0x1A +#define DIK_RBRACKET 0x1B +#define DIK_RETURN 0x1C /* Enter on main keyboard */ +#define DIK_LCONTROL 0x1D +#define DIK_A 0x1E +#define DIK_S 0x1F +#define DIK_D 0x20 +#define DIK_F 0x21 +#define DIK_G 0x22 +#define DIK_H 0x23 +#define DIK_J 0x24 +#define DIK_K 0x25 +#define DIK_L 0x26 +#define DIK_SEMICOLON 0x27 +#define DIK_APOSTROPHE 0x28 +#define DIK_GRAVE 0x29 /* accent grave */ +#define DIK_LSHIFT 0x2A +#define DIK_BACKSLASH 0x2B +#define DIK_Z 0x2C +#define DIK_X 0x2D +#define DIK_C 0x2E +#define DIK_V 0x2F +#define DIK_B 0x30 +#define DIK_N 0x31 +#define DIK_M 0x32 +#define DIK_COMMA 0x33 +#define DIK_PERIOD 0x34 /* . on main keyboard */ +#define DIK_SLASH 0x35 /* / on main keyboard */ +#define DIK_RSHIFT 0x36 +#define DIK_MULTIPLY 0x37 /* * on numeric keypad */ +#define DIK_LMENU 0x38 /* left Alt */ +#define DIK_SPACE 0x39 +#define DIK_CAPITAL 0x3A +#define DIK_F1 0x3B +#define DIK_F2 0x3C +#define DIK_F3 0x3D +#define DIK_F4 0x3E +#define DIK_F5 0x3F +#define DIK_F6 0x40 +#define DIK_F7 0x41 +#define DIK_F8 0x42 +#define DIK_F9 0x43 +#define DIK_F10 0x44 +#define DIK_NUMLOCK 0x45 +#define DIK_SCROLL 0x46 /* Scroll Lock */ +#define DIK_NUMPAD7 0x47 +#define DIK_NUMPAD8 0x48 +#define DIK_NUMPAD9 0x49 +#define DIK_SUBTRACT 0x4A /* - on numeric keypad */ +#define DIK_NUMPAD4 0x4B +#define DIK_NUMPAD5 0x4C +#define DIK_NUMPAD6 0x4D +#define DIK_ADD 0x4E /* + on numeric keypad */ +#define DIK_NUMPAD1 0x4F +#define DIK_NUMPAD2 0x50 +#define DIK_NUMPAD3 0x51 +#define DIK_NUMPAD0 0x52 +#define DIK_DECIMAL 0x53 /* . on numeric keypad */ +#define DIK_OEM_102 0x56 /* <> or \| on RT 102-key keyboard (Non-U.S.) */ +#define DIK_F11 0x57 +#define DIK_F12 0x58 +#define DIK_F13 0x64 /* (NEC PC98) */ +#define DIK_F14 0x65 /* (NEC PC98) */ +#define DIK_F15 0x66 /* (NEC PC98) */ +#define DIK_KANA 0x70 /* (Japanese keyboard) */ +#define DIK_ABNT_C1 0x73 /* /? on Brazilian keyboard */ +#define DIK_CONVERT 0x79 /* (Japanese keyboard) */ +#define DIK_NOCONVERT 0x7B /* (Japanese keyboard) */ +#define DIK_YEN 0x7D /* (Japanese keyboard) */ +#define DIK_ABNT_C2 0x7E /* Numpad . on Brazilian keyboard */ +#define DIK_NUMPADEQUALS 0x8D /* = on numeric keypad (NEC PC98) */ +#define DIK_PREVTRACK 0x90 /* Previous Track (DIK_CIRCUMFLEX on Japanese keyboard) */ +#define DIK_AT 0x91 /* (NEC PC98) */ +#define DIK_COLON 0x92 /* (NEC PC98) */ +#define DIK_UNDERLINE 0x93 /* (NEC PC98) */ +#define DIK_KANJI 0x94 /* (Japanese keyboard) */ +#define DIK_STOP 0x95 /* (NEC PC98) */ +#define DIK_AX 0x96 /* (Japan AX) */ +#define DIK_UNLABELED 0x97 /* (J3100) */ +#define DIK_NEXTTRACK 0x99 /* Next Track */ +#define DIK_NUMPADENTER 0x9C /* Enter on numeric keypad */ +#define DIK_RCONTROL 0x9D +#define DIK_MUTE 0xA0 /* Mute */ +#define DIK_CALCULATOR 0xA1 /* Calculator */ +#define DIK_PLAYPAUSE 0xA2 /* Play / Pause */ +#define DIK_MEDIASTOP 0xA4 /* Media Stop */ +#define DIK_VOLUMEDOWN 0xAE /* Volume - */ +#define DIK_VOLUMEUP 0xB0 /* Volume + */ +#define DIK_WEBHOME 0xB2 /* Web home */ +#define DIK_NUMPADCOMMA 0xB3 /* , on numeric keypad (NEC PC98) */ +#define DIK_DIVIDE 0xB5 /* / on numeric keypad */ +#define DIK_SYSRQ 0xB7 +#define DIK_RMENU 0xB8 /* right Alt */ +#define DIK_PAUSE 0xC5 /* Pause */ +#define DIK_HOME 0xC7 /* Home on arrow keypad */ +#define DIK_UP 0xC8 /* UpArrow on arrow keypad */ +#define DIK_PRIOR 0xC9 /* PgUp on arrow keypad */ +#define DIK_LEFT 0xCB /* LeftArrow on arrow keypad */ +#define DIK_RIGHT 0xCD /* RightArrow on arrow keypad */ +#define DIK_END 0xCF /* End on arrow keypad */ +#define DIK_DOWN 0xD0 /* DownArrow on arrow keypad */ +#define DIK_NEXT 0xD1 /* PgDn on arrow keypad */ +#define DIK_INSERT 0xD2 /* Insert on arrow keypad */ +#define DIK_DELETE 0xD3 /* Delete on arrow keypad */ +#define DIK_LWIN 0xDB /* Left Windows key */ +#define DIK_RWIN 0xDC /* Right Windows key */ +#define DIK_APPS 0xDD /* AppMenu key */ +#define DIK_POWER 0xDE /* System Power */ +#define DIK_SLEEP 0xDF /* System Sleep */ +#define DIK_WAKE 0xE3 /* System Wake */ +#define DIK_WEBSEARCH 0xE5 /* Web Search */ +#define DIK_WEBFAVORITES 0xE6 /* Web Favorites */ +#define DIK_WEBREFRESH 0xE7 /* Web Refresh */ +#define DIK_WEBSTOP 0xE8 /* Web Stop */ +#define DIK_WEBFORWARD 0xE9 /* Web Forward */ +#define DIK_WEBBACK 0xEA /* Web Back */ +#define DIK_MYCOMPUTER 0xEB /* My Computer */ +#define DIK_MAIL 0xEC /* Mail */ +#define DIK_MEDIASELECT 0xED /* Media Select */ + +/* + * Alternate names for keys, to facilitate transition from DOS. + */ +#define DIK_BACKSPACE DIK_BACK /* backspace */ +#define DIK_NUMPADSTAR DIK_MULTIPLY /* * on numeric keypad */ +#define DIK_LALT DIK_LMENU /* left Alt */ +#define DIK_CAPSLOCK DIK_CAPITAL /* CapsLock */ +#define DIK_NUMPADMINUS DIK_SUBTRACT /* - on numeric keypad */ +#define DIK_NUMPADPLUS DIK_ADD /* + on numeric keypad */ +#define DIK_NUMPADPERIOD DIK_DECIMAL /* . on numeric keypad */ +#define DIK_NUMPADSLASH DIK_DIVIDE /* / on numeric keypad */ +#define DIK_RALT DIK_RMENU /* right Alt */ +#define DIK_UPARROW DIK_UP /* UpArrow on arrow keypad */ +#define DIK_PGUP DIK_PRIOR /* PgUp on arrow keypad */ +#define DIK_LEFTARROW DIK_LEFT /* LeftArrow on arrow keypad */ +#define DIK_RIGHTARROW DIK_RIGHT /* RightArrow on arrow keypad */ +#define DIK_DOWNARROW DIK_DOWN /* DownArrow on arrow keypad */ +#define DIK_PGDN DIK_NEXT /* PgDn on arrow keypad */ + +/* + * Alternate names for keys originally not used on US keyboards. + */ +#define DIK_CIRCUMFLEX DIK_PREVTRACK /* Japanese keyboard */ + +#endif /* DIJ_RINGZERO */ + +/**************************************************************************** + * + * Joystick + * + ****************************************************************************/ + +#ifndef DIJ_RINGZERO + +typedef struct DIJOYSTATE { + LONG lX; /* x-axis position */ + LONG lY; /* y-axis position */ + LONG lZ; /* z-axis position */ + LONG lRx; /* x-axis rotation */ + LONG lRy; /* y-axis rotation */ + LONG lRz; /* z-axis rotation */ + LONG rglSlider[2]; /* extra axes positions */ + DWORD rgdwPOV[4]; /* POV directions */ + BYTE rgbButtons[32]; /* 32 buttons */ +} DIJOYSTATE, *LPDIJOYSTATE; + +typedef struct DIJOYSTATE2 { + LONG lX; /* x-axis position */ + LONG lY; /* y-axis position */ + LONG lZ; /* z-axis position */ + LONG lRx; /* x-axis rotation */ + LONG lRy; /* y-axis rotation */ + LONG lRz; /* z-axis rotation */ + LONG rglSlider[2]; /* extra axes positions */ + DWORD rgdwPOV[4]; /* POV directions */ + BYTE rgbButtons[128]; /* 128 buttons */ + LONG lVX; /* x-axis velocity */ + LONG lVY; /* y-axis velocity */ + LONG lVZ; /* z-axis velocity */ + LONG lVRx; /* x-axis angular velocity */ + LONG lVRy; /* y-axis angular velocity */ + LONG lVRz; /* z-axis angular velocity */ + LONG rglVSlider[2]; /* extra axes velocities */ + LONG lAX; /* x-axis acceleration */ + LONG lAY; /* y-axis acceleration */ + LONG lAZ; /* z-axis acceleration */ + LONG lARx; /* x-axis angular acceleration */ + LONG lARy; /* y-axis angular acceleration */ + LONG lARz; /* z-axis angular acceleration */ + LONG rglASlider[2]; /* extra axes accelerations */ + LONG lFX; /* x-axis force */ + LONG lFY; /* y-axis force */ + LONG lFZ; /* z-axis force */ + LONG lFRx; /* x-axis torque */ + LONG lFRy; /* y-axis torque */ + LONG lFRz; /* z-axis torque */ + LONG rglFSlider[2]; /* extra axes forces */ +} DIJOYSTATE2, *LPDIJOYSTATE2; + +#define DIJOFS_X FIELD_OFFSET(DIJOYSTATE, lX) +#define DIJOFS_Y FIELD_OFFSET(DIJOYSTATE, lY) +#define DIJOFS_Z FIELD_OFFSET(DIJOYSTATE, lZ) +#define DIJOFS_RX FIELD_OFFSET(DIJOYSTATE, lRx) +#define DIJOFS_RY FIELD_OFFSET(DIJOYSTATE, lRy) +#define DIJOFS_RZ FIELD_OFFSET(DIJOYSTATE, lRz) +#define DIJOFS_SLIDER(n) (FIELD_OFFSET(DIJOYSTATE, rglSlider) + \ + (n) * sizeof(LONG)) +#define DIJOFS_POV(n) (FIELD_OFFSET(DIJOYSTATE, rgdwPOV) + \ + (n) * sizeof(DWORD)) +#define DIJOFS_BUTTON(n) (FIELD_OFFSET(DIJOYSTATE, rgbButtons) + (n)) +#define DIJOFS_BUTTON0 DIJOFS_BUTTON(0) +#define DIJOFS_BUTTON1 DIJOFS_BUTTON(1) +#define DIJOFS_BUTTON2 DIJOFS_BUTTON(2) +#define DIJOFS_BUTTON3 DIJOFS_BUTTON(3) +#define DIJOFS_BUTTON4 DIJOFS_BUTTON(4) +#define DIJOFS_BUTTON5 DIJOFS_BUTTON(5) +#define DIJOFS_BUTTON6 DIJOFS_BUTTON(6) +#define DIJOFS_BUTTON7 DIJOFS_BUTTON(7) +#define DIJOFS_BUTTON8 DIJOFS_BUTTON(8) +#define DIJOFS_BUTTON9 DIJOFS_BUTTON(9) +#define DIJOFS_BUTTON10 DIJOFS_BUTTON(10) +#define DIJOFS_BUTTON11 DIJOFS_BUTTON(11) +#define DIJOFS_BUTTON12 DIJOFS_BUTTON(12) +#define DIJOFS_BUTTON13 DIJOFS_BUTTON(13) +#define DIJOFS_BUTTON14 DIJOFS_BUTTON(14) +#define DIJOFS_BUTTON15 DIJOFS_BUTTON(15) +#define DIJOFS_BUTTON16 DIJOFS_BUTTON(16) +#define DIJOFS_BUTTON17 DIJOFS_BUTTON(17) +#define DIJOFS_BUTTON18 DIJOFS_BUTTON(18) +#define DIJOFS_BUTTON19 DIJOFS_BUTTON(19) +#define DIJOFS_BUTTON20 DIJOFS_BUTTON(20) +#define DIJOFS_BUTTON21 DIJOFS_BUTTON(21) +#define DIJOFS_BUTTON22 DIJOFS_BUTTON(22) +#define DIJOFS_BUTTON23 DIJOFS_BUTTON(23) +#define DIJOFS_BUTTON24 DIJOFS_BUTTON(24) +#define DIJOFS_BUTTON25 DIJOFS_BUTTON(25) +#define DIJOFS_BUTTON26 DIJOFS_BUTTON(26) +#define DIJOFS_BUTTON27 DIJOFS_BUTTON(27) +#define DIJOFS_BUTTON28 DIJOFS_BUTTON(28) +#define DIJOFS_BUTTON29 DIJOFS_BUTTON(29) +#define DIJOFS_BUTTON30 DIJOFS_BUTTON(30) +#define DIJOFS_BUTTON31 DIJOFS_BUTTON(31) + + +#endif /* DIJ_RINGZERO */ + +/**************************************************************************** + * + * IDirectInput + * + ****************************************************************************/ + +#ifndef DIJ_RINGZERO + +#define DIENUM_STOP 0 +#define DIENUM_CONTINUE 1 + +typedef BOOL (FAR PASCAL * LPDIENUMDEVICESCALLBACKA)(LPCDIDEVICEINSTANCEA, LPVOID); +typedef BOOL (FAR PASCAL * LPDIENUMDEVICESCALLBACKW)(LPCDIDEVICEINSTANCEW, LPVOID); +#ifdef UNICODE +#define LPDIENUMDEVICESCALLBACK LPDIENUMDEVICESCALLBACKW +#else +#define LPDIENUMDEVICESCALLBACK LPDIENUMDEVICESCALLBACKA +#endif // !UNICODE +typedef BOOL (FAR PASCAL * LPDICONFIGUREDEVICESCALLBACK)(IUnknown FAR *, LPVOID); + +#define DIEDFL_ALLDEVICES 0x00000000 +#define DIEDFL_ATTACHEDONLY 0x00000001 +#if(DIRECTINPUT_VERSION >= 0x0500) +#define DIEDFL_FORCEFEEDBACK 0x00000100 +#endif /* DIRECTINPUT_VERSION >= 0x0500 */ +#if(DIRECTINPUT_VERSION >= 0x050a) +#define DIEDFL_INCLUDEALIASES 0x00010000 +#define DIEDFL_INCLUDEPHANTOMS 0x00020000 +#endif /* DIRECTINPUT_VERSION >= 0x050a */ +#if(DIRECTINPUT_VERSION >= 0x0800) +#define DIEDFL_INCLUDEHIDDEN 0x00040000 +#endif /* DIRECTINPUT_VERSION >= 0x0800 */ + + +#if(DIRECTINPUT_VERSION >= 0x0800) +typedef BOOL (FAR PASCAL * LPDIENUMDEVICESBYSEMANTICSCBA)(LPCDIDEVICEINSTANCEA, LPDIRECTINPUTDEVICE8A, DWORD, DWORD, LPVOID); +typedef BOOL (FAR PASCAL * LPDIENUMDEVICESBYSEMANTICSCBW)(LPCDIDEVICEINSTANCEW, LPDIRECTINPUTDEVICE8W, DWORD, DWORD, LPVOID); +#ifdef UNICODE +#define LPDIENUMDEVICESBYSEMANTICSCB LPDIENUMDEVICESBYSEMANTICSCBW +#else +#define LPDIENUMDEVICESBYSEMANTICSCB LPDIENUMDEVICESBYSEMANTICSCBA +#endif // !UNICODE +#endif /* DIRECTINPUT_VERSION >= 0x0800 */ + +#if(DIRECTINPUT_VERSION >= 0x0800) +#define DIEDBS_MAPPEDPRI1 0x00000001 +#define DIEDBS_MAPPEDPRI2 0x00000002 +#define DIEDBS_RECENTDEVICE 0x00000010 +#define DIEDBS_NEWDEVICE 0x00000020 +#endif /* DIRECTINPUT_VERSION >= 0x0800 */ + +#if(DIRECTINPUT_VERSION >= 0x0800) +#define DIEDBSFL_ATTACHEDONLY 0x00000000 +#define DIEDBSFL_THISUSER 0x00000010 +#define DIEDBSFL_FORCEFEEDBACK DIEDFL_FORCEFEEDBACK +#define DIEDBSFL_AVAILABLEDEVICES 0x00001000 +#define DIEDBSFL_MULTIMICEKEYBOARDS 0x00002000 +#define DIEDBSFL_NONGAMINGDEVICES 0x00004000 +#define DIEDBSFL_VALID 0x00007110 +#endif /* DIRECTINPUT_VERSION >= 0x0800 */ + +#undef INTERFACE +#define INTERFACE IDirectInputW + +DECLARE_INTERFACE_(IDirectInputW, IUnknown) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + + /*** IDirectInputW methods ***/ + STDMETHOD(CreateDevice)(THIS_ REFGUID,LPDIRECTINPUTDEVICEW *,LPUNKNOWN) PURE; + STDMETHOD(EnumDevices)(THIS_ DWORD,LPDIENUMDEVICESCALLBACKW,LPVOID,DWORD) PURE; + STDMETHOD(GetDeviceStatus)(THIS_ REFGUID) PURE; + STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE; + STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD) PURE; +}; + +typedef struct IDirectInputW *LPDIRECTINPUTW; + +#undef INTERFACE +#define INTERFACE IDirectInputA + +DECLARE_INTERFACE_(IDirectInputA, IUnknown) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + + /*** IDirectInputA methods ***/ + STDMETHOD(CreateDevice)(THIS_ REFGUID,LPDIRECTINPUTDEVICEA *,LPUNKNOWN) PURE; + STDMETHOD(EnumDevices)(THIS_ DWORD,LPDIENUMDEVICESCALLBACKA,LPVOID,DWORD) PURE; + STDMETHOD(GetDeviceStatus)(THIS_ REFGUID) PURE; + STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE; + STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD) PURE; +}; + +typedef struct IDirectInputA *LPDIRECTINPUTA; + +#ifdef UNICODE +#define IID_IDirectInput IID_IDirectInputW +#define IDirectInput IDirectInputW +#define IDirectInputVtbl IDirectInputWVtbl +#else +#define IID_IDirectInput IID_IDirectInputA +#define IDirectInput IDirectInputA +#define IDirectInputVtbl IDirectInputAVtbl +#endif +typedef struct IDirectInput *LPDIRECTINPUT; + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectInput_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDirectInput_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectInput_Release(p) (p)->lpVtbl->Release(p) +#define IDirectInput_CreateDevice(p,a,b,c) (p)->lpVtbl->CreateDevice(p,a,b,c) +#define IDirectInput_EnumDevices(p,a,b,c,d) (p)->lpVtbl->EnumDevices(p,a,b,c,d) +#define IDirectInput_GetDeviceStatus(p,a) (p)->lpVtbl->GetDeviceStatus(p,a) +#define IDirectInput_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b) +#define IDirectInput_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b) +#else +#define IDirectInput_QueryInterface(p,a,b) (p)->QueryInterface(a,b) +#define IDirectInput_AddRef(p) (p)->AddRef() +#define IDirectInput_Release(p) (p)->Release() +#define IDirectInput_CreateDevice(p,a,b,c) (p)->CreateDevice(a,b,c) +#define IDirectInput_EnumDevices(p,a,b,c,d) (p)->EnumDevices(a,b,c,d) +#define IDirectInput_GetDeviceStatus(p,a) (p)->GetDeviceStatus(a) +#define IDirectInput_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b) +#define IDirectInput_Initialize(p,a,b) (p)->Initialize(a,b) +#endif + +#undef INTERFACE +#define INTERFACE IDirectInput2W + +DECLARE_INTERFACE_(IDirectInput2W, IDirectInputW) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + + /*** IDirectInputW methods ***/ + STDMETHOD(CreateDevice)(THIS_ REFGUID,LPDIRECTINPUTDEVICEW *,LPUNKNOWN) PURE; + STDMETHOD(EnumDevices)(THIS_ DWORD,LPDIENUMDEVICESCALLBACKW,LPVOID,DWORD) PURE; + STDMETHOD(GetDeviceStatus)(THIS_ REFGUID) PURE; + STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE; + STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD) PURE; + + /*** IDirectInput2W methods ***/ + STDMETHOD(FindDevice)(THIS_ REFGUID,LPCWSTR,LPGUID) PURE; +}; + +typedef struct IDirectInput2W *LPDIRECTINPUT2W; + +#undef INTERFACE +#define INTERFACE IDirectInput2A + +DECLARE_INTERFACE_(IDirectInput2A, IDirectInputA) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + + /*** IDirectInputA methods ***/ + STDMETHOD(CreateDevice)(THIS_ REFGUID,LPDIRECTINPUTDEVICEA *,LPUNKNOWN) PURE; + STDMETHOD(EnumDevices)(THIS_ DWORD,LPDIENUMDEVICESCALLBACKA,LPVOID,DWORD) PURE; + STDMETHOD(GetDeviceStatus)(THIS_ REFGUID) PURE; + STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE; + STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD) PURE; + + /*** IDirectInput2A methods ***/ + STDMETHOD(FindDevice)(THIS_ REFGUID,LPCSTR,LPGUID) PURE; +}; + +typedef struct IDirectInput2A *LPDIRECTINPUT2A; + +#ifdef UNICODE +#define IID_IDirectInput2 IID_IDirectInput2W +#define IDirectInput2 IDirectInput2W +#define IDirectInput2Vtbl IDirectInput2WVtbl +#else +#define IID_IDirectInput2 IID_IDirectInput2A +#define IDirectInput2 IDirectInput2A +#define IDirectInput2Vtbl IDirectInput2AVtbl +#endif +typedef struct IDirectInput2 *LPDIRECTINPUT2; + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectInput2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDirectInput2_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectInput2_Release(p) (p)->lpVtbl->Release(p) +#define IDirectInput2_CreateDevice(p,a,b,c) (p)->lpVtbl->CreateDevice(p,a,b,c) +#define IDirectInput2_EnumDevices(p,a,b,c,d) (p)->lpVtbl->EnumDevices(p,a,b,c,d) +#define IDirectInput2_GetDeviceStatus(p,a) (p)->lpVtbl->GetDeviceStatus(p,a) +#define IDirectInput2_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b) +#define IDirectInput2_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b) +#define IDirectInput2_FindDevice(p,a,b,c) (p)->lpVtbl->FindDevice(p,a,b,c) +#else +#define IDirectInput2_QueryInterface(p,a,b) (p)->QueryInterface(a,b) +#define IDirectInput2_AddRef(p) (p)->AddRef() +#define IDirectInput2_Release(p) (p)->Release() +#define IDirectInput2_CreateDevice(p,a,b,c) (p)->CreateDevice(a,b,c) +#define IDirectInput2_EnumDevices(p,a,b,c,d) (p)->EnumDevices(a,b,c,d) +#define IDirectInput2_GetDeviceStatus(p,a) (p)->GetDeviceStatus(a) +#define IDirectInput2_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b) +#define IDirectInput2_Initialize(p,a,b) (p)->Initialize(a,b) +#define IDirectInput2_FindDevice(p,a,b,c) (p)->FindDevice(a,b,c) +#endif + + +#undef INTERFACE +#define INTERFACE IDirectInput7W + +DECLARE_INTERFACE_(IDirectInput7W, IDirectInput2W) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + + /*** IDirectInput2W methods ***/ + STDMETHOD(CreateDevice)(THIS_ REFGUID,LPDIRECTINPUTDEVICEW *,LPUNKNOWN) PURE; + STDMETHOD(EnumDevices)(THIS_ DWORD,LPDIENUMDEVICESCALLBACKW,LPVOID,DWORD) PURE; + STDMETHOD(GetDeviceStatus)(THIS_ REFGUID) PURE; + STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE; + STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD) PURE; + STDMETHOD(FindDevice)(THIS_ REFGUID,LPCWSTR,LPGUID) PURE; + + /*** IDirectInput7W methods ***/ + STDMETHOD(CreateDeviceEx)(THIS_ REFGUID,REFIID,LPVOID *,LPUNKNOWN) PURE; +}; + +typedef struct IDirectInput7W *LPDIRECTINPUT7W; + +#undef INTERFACE +#define INTERFACE IDirectInput7A + +DECLARE_INTERFACE_(IDirectInput7A, IDirectInput2A) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + + /*** IDirectInput2A methods ***/ + STDMETHOD(CreateDevice)(THIS_ REFGUID,LPDIRECTINPUTDEVICEA *,LPUNKNOWN) PURE; + STDMETHOD(EnumDevices)(THIS_ DWORD,LPDIENUMDEVICESCALLBACKA,LPVOID,DWORD) PURE; + STDMETHOD(GetDeviceStatus)(THIS_ REFGUID) PURE; + STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE; + STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD) PURE; + STDMETHOD(FindDevice)(THIS_ REFGUID,LPCSTR,LPGUID) PURE; + + /*** IDirectInput7A methods ***/ + STDMETHOD(CreateDeviceEx)(THIS_ REFGUID,REFIID,LPVOID *,LPUNKNOWN) PURE; +}; + +typedef struct IDirectInput7A *LPDIRECTINPUT7A; + +#ifdef UNICODE +#define IID_IDirectInput7 IID_IDirectInput7W +#define IDirectInput7 IDirectInput7W +#define IDirectInput7Vtbl IDirectInput7WVtbl +#else +#define IID_IDirectInput7 IID_IDirectInput7A +#define IDirectInput7 IDirectInput7A +#define IDirectInput7Vtbl IDirectInput7AVtbl +#endif +typedef struct IDirectInput7 *LPDIRECTINPUT7; + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectInput7_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDirectInput7_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectInput7_Release(p) (p)->lpVtbl->Release(p) +#define IDirectInput7_CreateDevice(p,a,b,c) (p)->lpVtbl->CreateDevice(p,a,b,c) +#define IDirectInput7_EnumDevices(p,a,b,c,d) (p)->lpVtbl->EnumDevices(p,a,b,c,d) +#define IDirectInput7_GetDeviceStatus(p,a) (p)->lpVtbl->GetDeviceStatus(p,a) +#define IDirectInput7_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b) +#define IDirectInput7_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b) +#define IDirectInput7_FindDevice(p,a,b,c) (p)->lpVtbl->FindDevice(p,a,b,c) +#define IDirectInput7_CreateDeviceEx(p,a,b,c,d) (p)->lpVtbl->CreateDeviceEx(p,a,b,c,d) +#else +#define IDirectInput7_QueryInterface(p,a,b) (p)->QueryInterface(a,b) +#define IDirectInput7_AddRef(p) (p)->AddRef() +#define IDirectInput7_Release(p) (p)->Release() +#define IDirectInput7_CreateDevice(p,a,b,c) (p)->CreateDevice(a,b,c) +#define IDirectInput7_EnumDevices(p,a,b,c,d) (p)->EnumDevices(a,b,c,d) +#define IDirectInput7_GetDeviceStatus(p,a) (p)->GetDeviceStatus(a) +#define IDirectInput7_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b) +#define IDirectInput7_Initialize(p,a,b) (p)->Initialize(a,b) +#define IDirectInput7_FindDevice(p,a,b,c) (p)->FindDevice(a,b,c) +#define IDirectInput7_CreateDeviceEx(p,a,b,c,d) (p)->CreateDeviceEx(a,b,c,d) +#endif + +#if(DIRECTINPUT_VERSION >= 0x0800) +#undef INTERFACE +#define INTERFACE IDirectInput8W + +DECLARE_INTERFACE_(IDirectInput8W, IUnknown) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + + /*** IDirectInput8W methods ***/ + STDMETHOD(CreateDevice)(THIS_ REFGUID,LPDIRECTINPUTDEVICE8W *,LPUNKNOWN) PURE; + STDMETHOD(EnumDevices)(THIS_ DWORD,LPDIENUMDEVICESCALLBACKW,LPVOID,DWORD) PURE; + STDMETHOD(GetDeviceStatus)(THIS_ REFGUID) PURE; + STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE; + STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD) PURE; + STDMETHOD(FindDevice)(THIS_ REFGUID,LPCWSTR,LPGUID) PURE; + STDMETHOD(EnumDevicesBySemantics)(THIS_ LPCWSTR,LPDIACTIONFORMATW,LPDIENUMDEVICESBYSEMANTICSCBW,LPVOID,DWORD) PURE; + STDMETHOD(ConfigureDevices)(THIS_ LPDICONFIGUREDEVICESCALLBACK,LPDICONFIGUREDEVICESPARAMSW,DWORD,LPVOID) PURE; +}; + +typedef struct IDirectInput8W *LPDIRECTINPUT8W; + +#undef INTERFACE +#define INTERFACE IDirectInput8A + +DECLARE_INTERFACE_(IDirectInput8A, IUnknown) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + + /*** IDirectInput8A methods ***/ + STDMETHOD(CreateDevice)(THIS_ REFGUID,LPDIRECTINPUTDEVICE8A *,LPUNKNOWN) PURE; + STDMETHOD(EnumDevices)(THIS_ DWORD,LPDIENUMDEVICESCALLBACKA,LPVOID,DWORD) PURE; + STDMETHOD(GetDeviceStatus)(THIS_ REFGUID) PURE; + STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE; + STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD) PURE; + STDMETHOD(FindDevice)(THIS_ REFGUID,LPCSTR,LPGUID) PURE; + STDMETHOD(EnumDevicesBySemantics)(THIS_ LPCSTR,LPDIACTIONFORMATA,LPDIENUMDEVICESBYSEMANTICSCBA,LPVOID,DWORD) PURE; + STDMETHOD(ConfigureDevices)(THIS_ LPDICONFIGUREDEVICESCALLBACK,LPDICONFIGUREDEVICESPARAMSA,DWORD,LPVOID) PURE; +}; + +typedef struct IDirectInput8A *LPDIRECTINPUT8A; + +#ifdef UNICODE +#define IID_IDirectInput8 IID_IDirectInput8W +#define IDirectInput8 IDirectInput8W +#define IDirectInput8Vtbl IDirectInput8WVtbl +#else +#define IID_IDirectInput8 IID_IDirectInput8A +#define IDirectInput8 IDirectInput8A +#define IDirectInput8Vtbl IDirectInput8AVtbl +#endif +typedef struct IDirectInput8 *LPDIRECTINPUT8; + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectInput8_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDirectInput8_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectInput8_Release(p) (p)->lpVtbl->Release(p) +#define IDirectInput8_CreateDevice(p,a,b,c) (p)->lpVtbl->CreateDevice(p,a,b,c) +#define IDirectInput8_EnumDevices(p,a,b,c,d) (p)->lpVtbl->EnumDevices(p,a,b,c,d) +#define IDirectInput8_GetDeviceStatus(p,a) (p)->lpVtbl->GetDeviceStatus(p,a) +#define IDirectInput8_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b) +#define IDirectInput8_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b) +#define IDirectInput8_FindDevice(p,a,b,c) (p)->lpVtbl->FindDevice(p,a,b,c) +#define IDirectInput8_EnumDevicesBySemantics(p,a,b,c,d,e) (p)->lpVtbl->EnumDevicesBySemantics(p,a,b,c,d,e) +#define IDirectInput8_ConfigureDevices(p,a,b,c,d) (p)->lpVtbl->ConfigureDevices(p,a,b,c,d) +#else +#define IDirectInput8_QueryInterface(p,a,b) (p)->QueryInterface(a,b) +#define IDirectInput8_AddRef(p) (p)->AddRef() +#define IDirectInput8_Release(p) (p)->Release() +#define IDirectInput8_CreateDevice(p,a,b,c) (p)->CreateDevice(a,b,c) +#define IDirectInput8_EnumDevices(p,a,b,c,d) (p)->EnumDevices(a,b,c,d) +#define IDirectInput8_GetDeviceStatus(p,a) (p)->GetDeviceStatus(a) +#define IDirectInput8_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b) +#define IDirectInput8_Initialize(p,a,b) (p)->Initialize(a,b) +#define IDirectInput8_FindDevice(p,a,b,c) (p)->FindDevice(a,b,c) +#define IDirectInput8_EnumDevicesBySemantics(p,a,b,c,d,e) (p)->EnumDevicesBySemantics(a,b,c,d,e) +#define IDirectInput8_ConfigureDevices(p,a,b,c,d) (p)->ConfigureDevices(a,b,c,d) +#endif +#endif /* DIRECTINPUT_VERSION >= 0x0800 */ + +#if DIRECTINPUT_VERSION > 0x0700 + +extern HRESULT WINAPI DirectInput8Create(HINSTANCE hinst, DWORD dwVersion, REFIID riidltf, LPVOID *ppvOut, LPUNKNOWN punkOuter); + +#else +extern HRESULT WINAPI DirectInputCreateA(HINSTANCE hinst, DWORD dwVersion, LPDIRECTINPUTA *ppDI, LPUNKNOWN punkOuter); +extern HRESULT WINAPI DirectInputCreateW(HINSTANCE hinst, DWORD dwVersion, LPDIRECTINPUTW *ppDI, LPUNKNOWN punkOuter); +#ifdef UNICODE +#define DirectInputCreate DirectInputCreateW +#else +#define DirectInputCreate DirectInputCreateA +#endif // !UNICODE + +extern HRESULT WINAPI DirectInputCreateEx(HINSTANCE hinst, DWORD dwVersion, REFIID riidltf, LPVOID *ppvOut, LPUNKNOWN punkOuter); + +#endif /* DIRECTINPUT_VERSION > 0x700 */ + +#endif /* DIJ_RINGZERO */ + + +/**************************************************************************** + * + * Return Codes + * + ****************************************************************************/ + +/* + * The operation completed successfully. + */ +#define DI_OK S_OK + +/* + * The device exists but is not currently attached. + */ +#define DI_NOTATTACHED S_FALSE + +/* + * The device buffer overflowed. Some input was lost. + */ +#define DI_BUFFEROVERFLOW S_FALSE + +/* + * The change in device properties had no effect. + */ +#define DI_PROPNOEFFECT S_FALSE + +/* + * The operation had no effect. + */ +#define DI_NOEFFECT S_FALSE + +/* + * The device is a polled device. As a result, device buffering + * will not collect any data and event notifications will not be + * signalled until GetDeviceState is called. + */ +#define DI_POLLEDDEVICE ((HRESULT)0x00000002L) + +/* + * The parameters of the effect were successfully updated by + * IDirectInputEffect::SetParameters, but the effect was not + * downloaded because the device is not exclusively acquired + * or because the DIEP_NODOWNLOAD flag was passed. + */ +#define DI_DOWNLOADSKIPPED ((HRESULT)0x00000003L) + +/* + * The parameters of the effect were successfully updated by + * IDirectInputEffect::SetParameters, but in order to change + * the parameters, the effect needed to be restarted. + */ +#define DI_EFFECTRESTARTED ((HRESULT)0x00000004L) + +/* + * The parameters of the effect were successfully updated by + * IDirectInputEffect::SetParameters, but some of them were + * beyond the capabilities of the device and were truncated. + */ +#define DI_TRUNCATED ((HRESULT)0x00000008L) + +/* + * The settings have been successfully applied but could not be + * persisted. + */ +#define DI_SETTINGSNOTSAVED ((HRESULT)0x0000000BL) + +/* + * Equal to DI_EFFECTRESTARTED | DI_TRUNCATED. + */ +#define DI_TRUNCATEDANDRESTARTED ((HRESULT)0x0000000CL) + +/* + * A SUCCESS code indicating that settings cannot be modified. + */ +#define DI_WRITEPROTECT ((HRESULT)0x00000013L) + +/* + * The application requires a newer version of DirectInput. + */ +#define DIERR_OLDDIRECTINPUTVERSION \ + MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_OLD_WIN_VERSION) + +/* + * The application was written for an unsupported prerelease version + * of DirectInput. + */ +#define DIERR_BETADIRECTINPUTVERSION \ + MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_RMODE_APP) + +/* + * The object could not be created due to an incompatible driver version + * or mismatched or incomplete driver components. + */ +#define DIERR_BADDRIVERVER \ + MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_BAD_DRIVER_LEVEL) + +/* + * The device or device instance or effect is not registered with DirectInput. + */ +#define DIERR_DEVICENOTREG REGDB_E_CLASSNOTREG + +/* + * The requested object does not exist. + */ +#define DIERR_NOTFOUND \ + MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_FILE_NOT_FOUND) + +/* + * The requested object does not exist. + */ +#define DIERR_OBJECTNOTFOUND \ + MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_FILE_NOT_FOUND) + +/* + * An invalid parameter was passed to the returning function, + * or the object was not in a state that admitted the function + * to be called. + */ +#define DIERR_INVALIDPARAM E_INVALIDARG + +/* + * The specified interface is not supported by the object + */ +#define DIERR_NOINTERFACE E_NOINTERFACE + +/* + * An undetermined error occured inside the DInput subsystem + */ +#define DIERR_GENERIC E_FAIL + +/* + * The DInput subsystem couldn't allocate sufficient memory to complete the + * caller's request. + */ +#define DIERR_OUTOFMEMORY E_OUTOFMEMORY + +/* + * The function called is not supported at this time + */ +#define DIERR_UNSUPPORTED E_NOTIMPL + +/* + * This object has not been initialized + */ +#define DIERR_NOTINITIALIZED \ + MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_NOT_READY) + +/* + * This object is already initialized + */ +#define DIERR_ALREADYINITIALIZED \ + MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_ALREADY_INITIALIZED) + +/* + * This object does not support aggregation + */ +#define DIERR_NOAGGREGATION CLASS_E_NOAGGREGATION + +/* + * Another app has a higher priority level, preventing this call from + * succeeding. + */ +#define DIERR_OTHERAPPHASPRIO E_ACCESSDENIED + +/* + * Access to the device has been lost. It must be re-acquired. + */ +#define DIERR_INPUTLOST \ + MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_READ_FAULT) + +/* + * The operation cannot be performed while the device is acquired. + */ +#define DIERR_ACQUIRED \ + MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_BUSY) + +/* + * The operation cannot be performed unless the device is acquired. + */ +#define DIERR_NOTACQUIRED \ + MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_INVALID_ACCESS) + +/* + * The specified property cannot be changed. + */ +#define DIERR_READONLY E_ACCESSDENIED + +/* + * The device already has an event notification associated with it. + */ +#define DIERR_HANDLEEXISTS E_ACCESSDENIED + +/* + * Data is not yet available. + */ +#ifndef E_PENDING +#define E_PENDING 0x8000000AL +#endif + +/* + * Unable to IDirectInputJoyConfig_Acquire because the user + * does not have sufficient privileges to change the joystick + * configuration. + */ +#define DIERR_INSUFFICIENTPRIVS 0x80040200L + +/* + * The device is full. + */ +#define DIERR_DEVICEFULL 0x80040201L + +/* + * Not all the requested information fit into the buffer. + */ +#define DIERR_MOREDATA 0x80040202L + +/* + * The effect is not downloaded. + */ +#define DIERR_NOTDOWNLOADED 0x80040203L + +/* + * The device cannot be reinitialized because there are still effects + * attached to it. + */ +#define DIERR_HASEFFECTS 0x80040204L + +/* + * The operation cannot be performed unless the device is acquired + * in DISCL_EXCLUSIVE mode. + */ +#define DIERR_NOTEXCLUSIVEACQUIRED 0x80040205L + +/* + * The effect could not be downloaded because essential information + * is missing. For example, no axes have been associated with the + * effect, or no type-specific information has been created. + */ +#define DIERR_INCOMPLETEEFFECT 0x80040206L + +/* + * Attempted to read buffered device data from a device that is + * not buffered. + */ +#define DIERR_NOTBUFFERED 0x80040207L + +/* + * An attempt was made to modify parameters of an effect while it is + * playing. Not all hardware devices support altering the parameters + * of an effect while it is playing. + */ +#define DIERR_EFFECTPLAYING 0x80040208L + +/* + * The operation could not be completed because the device is not + * plugged in. + */ +#define DIERR_UNPLUGGED 0x80040209L + +/* + * SendDeviceData failed because more information was requested + * to be sent than can be sent to the device. Some devices have + * restrictions on how much data can be sent to them. (For example, + * there might be a limit on the number of buttons that can be + * pressed at once.) + */ +#define DIERR_REPORTFULL 0x8004020AL + + +/* + * A mapper file function failed because reading or writing the user or IHV + * settings file failed. + */ +#define DIERR_MAPFILEFAIL 0x8004020BL + + +/*--- DINPUT Mapper Definitions: New for Dx8 ---*/ + + +/*--- Keyboard + Physical Keyboard Device ---*/ + +#define DIKEYBOARD_ESCAPE 0x81000401 +#define DIKEYBOARD_1 0x81000402 +#define DIKEYBOARD_2 0x81000403 +#define DIKEYBOARD_3 0x81000404 +#define DIKEYBOARD_4 0x81000405 +#define DIKEYBOARD_5 0x81000406 +#define DIKEYBOARD_6 0x81000407 +#define DIKEYBOARD_7 0x81000408 +#define DIKEYBOARD_8 0x81000409 +#define DIKEYBOARD_9 0x8100040A +#define DIKEYBOARD_0 0x8100040B +#define DIKEYBOARD_MINUS 0x8100040C /* - on main keyboard */ +#define DIKEYBOARD_EQUALS 0x8100040D +#define DIKEYBOARD_BACK 0x8100040E /* backspace */ +#define DIKEYBOARD_TAB 0x8100040F +#define DIKEYBOARD_Q 0x81000410 +#define DIKEYBOARD_W 0x81000411 +#define DIKEYBOARD_E 0x81000412 +#define DIKEYBOARD_R 0x81000413 +#define DIKEYBOARD_T 0x81000414 +#define DIKEYBOARD_Y 0x81000415 +#define DIKEYBOARD_U 0x81000416 +#define DIKEYBOARD_I 0x81000417 +#define DIKEYBOARD_O 0x81000418 +#define DIKEYBOARD_P 0x81000419 +#define DIKEYBOARD_LBRACKET 0x8100041A +#define DIKEYBOARD_RBRACKET 0x8100041B +#define DIKEYBOARD_RETURN 0x8100041C /* Enter on main keyboard */ +#define DIKEYBOARD_LCONTROL 0x8100041D +#define DIKEYBOARD_A 0x8100041E +#define DIKEYBOARD_S 0x8100041F +#define DIKEYBOARD_D 0x81000420 +#define DIKEYBOARD_F 0x81000421 +#define DIKEYBOARD_G 0x81000422 +#define DIKEYBOARD_H 0x81000423 +#define DIKEYBOARD_J 0x81000424 +#define DIKEYBOARD_K 0x81000425 +#define DIKEYBOARD_L 0x81000426 +#define DIKEYBOARD_SEMICOLON 0x81000427 +#define DIKEYBOARD_APOSTROPHE 0x81000428 +#define DIKEYBOARD_GRAVE 0x81000429 /* accent grave */ +#define DIKEYBOARD_LSHIFT 0x8100042A +#define DIKEYBOARD_BACKSLASH 0x8100042B +#define DIKEYBOARD_Z 0x8100042C +#define DIKEYBOARD_X 0x8100042D +#define DIKEYBOARD_C 0x8100042E +#define DIKEYBOARD_V 0x8100042F +#define DIKEYBOARD_B 0x81000430 +#define DIKEYBOARD_N 0x81000431 +#define DIKEYBOARD_M 0x81000432 +#define DIKEYBOARD_COMMA 0x81000433 +#define DIKEYBOARD_PERIOD 0x81000434 /* . on main keyboard */ +#define DIKEYBOARD_SLASH 0x81000435 /* / on main keyboard */ +#define DIKEYBOARD_RSHIFT 0x81000436 +#define DIKEYBOARD_MULTIPLY 0x81000437 /* * on numeric keypad */ +#define DIKEYBOARD_LMENU 0x81000438 /* left Alt */ +#define DIKEYBOARD_SPACE 0x81000439 +#define DIKEYBOARD_CAPITAL 0x8100043A +#define DIKEYBOARD_F1 0x8100043B +#define DIKEYBOARD_F2 0x8100043C +#define DIKEYBOARD_F3 0x8100043D +#define DIKEYBOARD_F4 0x8100043E +#define DIKEYBOARD_F5 0x8100043F +#define DIKEYBOARD_F6 0x81000440 +#define DIKEYBOARD_F7 0x81000441 +#define DIKEYBOARD_F8 0x81000442 +#define DIKEYBOARD_F9 0x81000443 +#define DIKEYBOARD_F10 0x81000444 +#define DIKEYBOARD_NUMLOCK 0x81000445 +#define DIKEYBOARD_SCROLL 0x81000446 /* Scroll Lock */ +#define DIKEYBOARD_NUMPAD7 0x81000447 +#define DIKEYBOARD_NUMPAD8 0x81000448 +#define DIKEYBOARD_NUMPAD9 0x81000449 +#define DIKEYBOARD_SUBTRACT 0x8100044A /* - on numeric keypad */ +#define DIKEYBOARD_NUMPAD4 0x8100044B +#define DIKEYBOARD_NUMPAD5 0x8100044C +#define DIKEYBOARD_NUMPAD6 0x8100044D +#define DIKEYBOARD_ADD 0x8100044E /* + on numeric keypad */ +#define DIKEYBOARD_NUMPAD1 0x8100044F +#define DIKEYBOARD_NUMPAD2 0x81000450 +#define DIKEYBOARD_NUMPAD3 0x81000451 +#define DIKEYBOARD_NUMPAD0 0x81000452 +#define DIKEYBOARD_DECIMAL 0x81000453 /* . on numeric keypad */ +#define DIKEYBOARD_OEM_102 0x81000456 /* <> or \| on RT 102-key keyboard (Non-U.S.) */ +#define DIKEYBOARD_F11 0x81000457 +#define DIKEYBOARD_F12 0x81000458 +#define DIKEYBOARD_F13 0x81000464 /* (NEC PC98) */ +#define DIKEYBOARD_F14 0x81000465 /* (NEC PC98) */ +#define DIKEYBOARD_F15 0x81000466 /* (NEC PC98) */ +#define DIKEYBOARD_KANA 0x81000470 /* (Japanese keyboard) */ +#define DIKEYBOARD_ABNT_C1 0x81000473 /* /? on Brazilian keyboard */ +#define DIKEYBOARD_CONVERT 0x81000479 /* (Japanese keyboard) */ +#define DIKEYBOARD_NOCONVERT 0x8100047B /* (Japanese keyboard) */ +#define DIKEYBOARD_YEN 0x8100047D /* (Japanese keyboard) */ +#define DIKEYBOARD_ABNT_C2 0x8100047E /* Numpad . on Brazilian keyboard */ +#define DIKEYBOARD_NUMPADEQUALS 0x8100048D /* = on numeric keypad (NEC PC98) */ +#define DIKEYBOARD_PREVTRACK 0x81000490 /* Previous Track (DIK_CIRCUMFLEX on Japanese keyboard) */ +#define DIKEYBOARD_AT 0x81000491 /* (NEC PC98) */ +#define DIKEYBOARD_COLON 0x81000492 /* (NEC PC98) */ +#define DIKEYBOARD_UNDERLINE 0x81000493 /* (NEC PC98) */ +#define DIKEYBOARD_KANJI 0x81000494 /* (Japanese keyboard) */ +#define DIKEYBOARD_STOP 0x81000495 /* (NEC PC98) */ +#define DIKEYBOARD_AX 0x81000496 /* (Japan AX) */ +#define DIKEYBOARD_UNLABELED 0x81000497 /* (J3100) */ +#define DIKEYBOARD_NEXTTRACK 0x81000499 /* Next Track */ +#define DIKEYBOARD_NUMPADENTER 0x8100049C /* Enter on numeric keypad */ +#define DIKEYBOARD_RCONTROL 0x8100049D +#define DIKEYBOARD_MUTE 0x810004A0 /* Mute */ +#define DIKEYBOARD_CALCULATOR 0x810004A1 /* Calculator */ +#define DIKEYBOARD_PLAYPAUSE 0x810004A2 /* Play / Pause */ +#define DIKEYBOARD_MEDIASTOP 0x810004A4 /* Media Stop */ +#define DIKEYBOARD_VOLUMEDOWN 0x810004AE /* Volume - */ +#define DIKEYBOARD_VOLUMEUP 0x810004B0 /* Volume + */ +#define DIKEYBOARD_WEBHOME 0x810004B2 /* Web home */ +#define DIKEYBOARD_NUMPADCOMMA 0x810004B3 /* , on numeric keypad (NEC PC98) */ +#define DIKEYBOARD_DIVIDE 0x810004B5 /* / on numeric keypad */ +#define DIKEYBOARD_SYSRQ 0x810004B7 +#define DIKEYBOARD_RMENU 0x810004B8 /* right Alt */ +#define DIKEYBOARD_PAUSE 0x810004C5 /* Pause */ +#define DIKEYBOARD_HOME 0x810004C7 /* Home on arrow keypad */ +#define DIKEYBOARD_UP 0x810004C8 /* UpArrow on arrow keypad */ +#define DIKEYBOARD_PRIOR 0x810004C9 /* PgUp on arrow keypad */ +#define DIKEYBOARD_LEFT 0x810004CB /* LeftArrow on arrow keypad */ +#define DIKEYBOARD_RIGHT 0x810004CD /* RightArrow on arrow keypad */ +#define DIKEYBOARD_END 0x810004CF /* End on arrow keypad */ +#define DIKEYBOARD_DOWN 0x810004D0 /* DownArrow on arrow keypad */ +#define DIKEYBOARD_NEXT 0x810004D1 /* PgDn on arrow keypad */ +#define DIKEYBOARD_INSERT 0x810004D2 /* Insert on arrow keypad */ +#define DIKEYBOARD_DELETE 0x810004D3 /* Delete on arrow keypad */ +#define DIKEYBOARD_LWIN 0x810004DB /* Left Windows key */ +#define DIKEYBOARD_RWIN 0x810004DC /* Right Windows key */ +#define DIKEYBOARD_APPS 0x810004DD /* AppMenu key */ +#define DIKEYBOARD_POWER 0x810004DE /* System Power */ +#define DIKEYBOARD_SLEEP 0x810004DF /* System Sleep */ +#define DIKEYBOARD_WAKE 0x810004E3 /* System Wake */ +#define DIKEYBOARD_WEBSEARCH 0x810004E5 /* Web Search */ +#define DIKEYBOARD_WEBFAVORITES 0x810004E6 /* Web Favorites */ +#define DIKEYBOARD_WEBREFRESH 0x810004E7 /* Web Refresh */ +#define DIKEYBOARD_WEBSTOP 0x810004E8 /* Web Stop */ +#define DIKEYBOARD_WEBFORWARD 0x810004E9 /* Web Forward */ +#define DIKEYBOARD_WEBBACK 0x810004EA /* Web Back */ +#define DIKEYBOARD_MYCOMPUTER 0x810004EB /* My Computer */ +#define DIKEYBOARD_MAIL 0x810004EC /* Mail */ +#define DIKEYBOARD_MEDIASELECT 0x810004ED /* Media Select */ + + +/*--- MOUSE + Physical Mouse Device ---*/ + +#define DIMOUSE_XAXISAB (0x82000200 |DIMOFS_X ) /* X Axis-absolute: Some mice natively report absolute coordinates */ +#define DIMOUSE_YAXISAB (0x82000200 |DIMOFS_Y ) /* Y Axis-absolute: Some mice natively report absolute coordinates */ +#define DIMOUSE_XAXIS (0x82000300 |DIMOFS_X ) /* X Axis */ +#define DIMOUSE_YAXIS (0x82000300 |DIMOFS_Y ) /* Y Axis */ +#define DIMOUSE_WHEEL (0x82000300 |DIMOFS_Z ) /* Z Axis */ +#define DIMOUSE_BUTTON0 (0x82000400 |DIMOFS_BUTTON0) /* Button 0 */ +#define DIMOUSE_BUTTON1 (0x82000400 |DIMOFS_BUTTON1) /* Button 1 */ +#define DIMOUSE_BUTTON2 (0x82000400 |DIMOFS_BUTTON2) /* Button 2 */ +#define DIMOUSE_BUTTON3 (0x82000400 |DIMOFS_BUTTON3) /* Button 3 */ +#define DIMOUSE_BUTTON4 (0x82000400 |DIMOFS_BUTTON4) /* Button 4 */ +#define DIMOUSE_BUTTON5 (0x82000400 |DIMOFS_BUTTON5) /* Button 5 */ +#define DIMOUSE_BUTTON6 (0x82000400 |DIMOFS_BUTTON6) /* Button 6 */ +#define DIMOUSE_BUTTON7 (0x82000400 |DIMOFS_BUTTON7) /* Button 7 */ + + +/*--- VOICE + Physical Dplay Voice Device ---*/ + +#define DIVOICE_CHANNEL1 0x83000401 +#define DIVOICE_CHANNEL2 0x83000402 +#define DIVOICE_CHANNEL3 0x83000403 +#define DIVOICE_CHANNEL4 0x83000404 +#define DIVOICE_CHANNEL5 0x83000405 +#define DIVOICE_CHANNEL6 0x83000406 +#define DIVOICE_CHANNEL7 0x83000407 +#define DIVOICE_CHANNEL8 0x83000408 +#define DIVOICE_TEAM 0x83000409 +#define DIVOICE_ALL 0x8300040A +#define DIVOICE_RECORDMUTE 0x8300040B +#define DIVOICE_PLAYBACKMUTE 0x8300040C +#define DIVOICE_TRANSMIT 0x8300040D + +#define DIVOICE_VOICECOMMAND 0x83000410 + + +/*--- Driving Simulator - Racing + Vehicle control is primary objective ---*/ +#define DIVIRTUAL_DRIVING_RACE 0x01000000 +#define DIAXIS_DRIVINGR_STEER 0x01008A01 /* Steering */ +#define DIAXIS_DRIVINGR_ACCELERATE 0x01039202 /* Accelerate */ +#define DIAXIS_DRIVINGR_BRAKE 0x01041203 /* Brake-Axis */ +#define DIBUTTON_DRIVINGR_SHIFTUP 0x01000C01 /* Shift to next higher gear */ +#define DIBUTTON_DRIVINGR_SHIFTDOWN 0x01000C02 /* Shift to next lower gear */ +#define DIBUTTON_DRIVINGR_VIEW 0x01001C03 /* Cycle through view options */ +#define DIBUTTON_DRIVINGR_MENU 0x010004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIAXIS_DRIVINGR_ACCEL_AND_BRAKE 0x01014A04 /* Some devices combine accelerate and brake in a single axis */ +#define DIHATSWITCH_DRIVINGR_GLANCE 0x01004601 /* Look around */ +#define DIBUTTON_DRIVINGR_BRAKE 0x01004C04 /* Brake-button */ +#define DIBUTTON_DRIVINGR_DASHBOARD 0x01004405 /* Select next dashboard option */ +#define DIBUTTON_DRIVINGR_AIDS 0x01004406 /* Driver correction aids */ +#define DIBUTTON_DRIVINGR_MAP 0x01004407 /* Display Driving Map */ +#define DIBUTTON_DRIVINGR_BOOST 0x01004408 /* Turbo Boost */ +#define DIBUTTON_DRIVINGR_PIT 0x01004409 /* Pit stop notification */ +#define DIBUTTON_DRIVINGR_ACCELERATE_LINK 0x0103D4E0 /* Fallback Accelerate button */ +#define DIBUTTON_DRIVINGR_STEER_LEFT_LINK 0x0100CCE4 /* Fallback Steer Left button */ +#define DIBUTTON_DRIVINGR_STEER_RIGHT_LINK 0x0100CCEC /* Fallback Steer Right button */ +#define DIBUTTON_DRIVINGR_GLANCE_LEFT_LINK 0x0107C4E4 /* Fallback Glance Left button */ +#define DIBUTTON_DRIVINGR_GLANCE_RIGHT_LINK 0x0107C4EC /* Fallback Glance Right button */ +#define DIBUTTON_DRIVINGR_DEVICE 0x010044FE /* Show input device and controls */ +#define DIBUTTON_DRIVINGR_PAUSE 0x010044FC /* Start / Pause / Restart game */ + +/*--- Driving Simulator - Combat + Combat from within a vehicle is primary objective ---*/ +#define DIVIRTUAL_DRIVING_COMBAT 0x02000000 +#define DIAXIS_DRIVINGC_STEER 0x02008A01 /* Steering */ +#define DIAXIS_DRIVINGC_ACCELERATE 0x02039202 /* Accelerate */ +#define DIAXIS_DRIVINGC_BRAKE 0x02041203 /* Brake-axis */ +#define DIBUTTON_DRIVINGC_FIRE 0x02000C01 /* Fire */ +#define DIBUTTON_DRIVINGC_WEAPONS 0x02000C02 /* Select next weapon */ +#define DIBUTTON_DRIVINGC_TARGET 0x02000C03 /* Select next available target */ +#define DIBUTTON_DRIVINGC_MENU 0x020004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIAXIS_DRIVINGC_ACCEL_AND_BRAKE 0x02014A04 /* Some devices combine accelerate and brake in a single axis */ +#define DIHATSWITCH_DRIVINGC_GLANCE 0x02004601 /* Look around */ +#define DIBUTTON_DRIVINGC_SHIFTUP 0x02004C04 /* Shift to next higher gear */ +#define DIBUTTON_DRIVINGC_SHIFTDOWN 0x02004C05 /* Shift to next lower gear */ +#define DIBUTTON_DRIVINGC_DASHBOARD 0x02004406 /* Select next dashboard option */ +#define DIBUTTON_DRIVINGC_AIDS 0x02004407 /* Driver correction aids */ +#define DIBUTTON_DRIVINGC_BRAKE 0x02004C08 /* Brake-button */ +#define DIBUTTON_DRIVINGC_FIRESECONDARY 0x02004C09 /* Alternative fire button */ +#define DIBUTTON_DRIVINGC_ACCELERATE_LINK 0x0203D4E0 /* Fallback Accelerate button */ +#define DIBUTTON_DRIVINGC_STEER_LEFT_LINK 0x0200CCE4 /* Fallback Steer Left button */ +#define DIBUTTON_DRIVINGC_STEER_RIGHT_LINK 0x0200CCEC /* Fallback Steer Right button */ +#define DIBUTTON_DRIVINGC_GLANCE_LEFT_LINK 0x0207C4E4 /* Fallback Glance Left button */ +#define DIBUTTON_DRIVINGC_GLANCE_RIGHT_LINK 0x0207C4EC /* Fallback Glance Right button */ +#define DIBUTTON_DRIVINGC_DEVICE 0x020044FE /* Show input device and controls */ +#define DIBUTTON_DRIVINGC_PAUSE 0x020044FC /* Start / Pause / Restart game */ + +/*--- Driving Simulator - Tank + Combat from withing a tank is primary objective ---*/ +#define DIVIRTUAL_DRIVING_TANK 0x03000000 +#define DIAXIS_DRIVINGT_STEER 0x03008A01 /* Turn tank left / right */ +#define DIAXIS_DRIVINGT_BARREL 0x03010202 /* Raise / lower barrel */ +#define DIAXIS_DRIVINGT_ACCELERATE 0x03039203 /* Accelerate */ +#define DIAXIS_DRIVINGT_ROTATE 0x03020204 /* Turn barrel left / right */ +#define DIBUTTON_DRIVINGT_FIRE 0x03000C01 /* Fire */ +#define DIBUTTON_DRIVINGT_WEAPONS 0x03000C02 /* Select next weapon */ +#define DIBUTTON_DRIVINGT_TARGET 0x03000C03 /* Selects next available target */ +#define DIBUTTON_DRIVINGT_MENU 0x030004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIHATSWITCH_DRIVINGT_GLANCE 0x03004601 /* Look around */ +#define DIAXIS_DRIVINGT_BRAKE 0x03045205 /* Brake-axis */ +#define DIAXIS_DRIVINGT_ACCEL_AND_BRAKE 0x03014A06 /* Some devices combine accelerate and brake in a single axis */ +#define DIBUTTON_DRIVINGT_VIEW 0x03005C04 /* Cycle through view options */ +#define DIBUTTON_DRIVINGT_DASHBOARD 0x03005C05 /* Select next dashboard option */ +#define DIBUTTON_DRIVINGT_BRAKE 0x03004C06 /* Brake-button */ +#define DIBUTTON_DRIVINGT_FIRESECONDARY 0x03004C07 /* Alternative fire button */ +#define DIBUTTON_DRIVINGT_ACCELERATE_LINK 0x0303D4E0 /* Fallback Accelerate button */ +#define DIBUTTON_DRIVINGT_STEER_LEFT_LINK 0x0300CCE4 /* Fallback Steer Left button */ +#define DIBUTTON_DRIVINGT_STEER_RIGHT_LINK 0x0300CCEC /* Fallback Steer Right button */ +#define DIBUTTON_DRIVINGT_BARREL_UP_LINK 0x030144E0 /* Fallback Barrel up button */ +#define DIBUTTON_DRIVINGT_BARREL_DOWN_LINK 0x030144E8 /* Fallback Barrel down button */ +#define DIBUTTON_DRIVINGT_ROTATE_LEFT_LINK 0x030244E4 /* Fallback Rotate left button */ +#define DIBUTTON_DRIVINGT_ROTATE_RIGHT_LINK 0x030244EC /* Fallback Rotate right button */ +#define DIBUTTON_DRIVINGT_GLANCE_LEFT_LINK 0x0307C4E4 /* Fallback Glance Left button */ +#define DIBUTTON_DRIVINGT_GLANCE_RIGHT_LINK 0x0307C4EC /* Fallback Glance Right button */ +#define DIBUTTON_DRIVINGT_DEVICE 0x030044FE /* Show input device and controls */ +#define DIBUTTON_DRIVINGT_PAUSE 0x030044FC /* Start / Pause / Restart game */ + +/*--- Flight Simulator - Civilian + Plane control is the primary objective ---*/ +#define DIVIRTUAL_FLYING_CIVILIAN 0x04000000 +#define DIAXIS_FLYINGC_BANK 0x04008A01 /* Roll ship left / right */ +#define DIAXIS_FLYINGC_PITCH 0x04010A02 /* Nose up / down */ +#define DIAXIS_FLYINGC_THROTTLE 0x04039203 /* Throttle */ +#define DIBUTTON_FLYINGC_VIEW 0x04002401 /* Cycle through view options */ +#define DIBUTTON_FLYINGC_DISPLAY 0x04002402 /* Select next dashboard / heads up display option */ +#define DIBUTTON_FLYINGC_GEAR 0x04002C03 /* Gear up / down */ +#define DIBUTTON_FLYINGC_MENU 0x040004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIHATSWITCH_FLYINGC_GLANCE 0x04004601 /* Look around */ +#define DIAXIS_FLYINGC_BRAKE 0x04046A04 /* Apply Brake */ +#define DIAXIS_FLYINGC_RUDDER 0x04025205 /* Yaw ship left/right */ +#define DIAXIS_FLYINGC_FLAPS 0x04055A06 /* Flaps */ +#define DIBUTTON_FLYINGC_FLAPSUP 0x04006404 /* Increment stepping up until fully retracted */ +#define DIBUTTON_FLYINGC_FLAPSDOWN 0x04006405 /* Decrement stepping down until fully extended */ +#define DIBUTTON_FLYINGC_BRAKE_LINK 0x04046CE0 /* Fallback brake button */ +#define DIBUTTON_FLYINGC_FASTER_LINK 0x0403D4E0 /* Fallback throttle up button */ +#define DIBUTTON_FLYINGC_SLOWER_LINK 0x0403D4E8 /* Fallback throttle down button */ +#define DIBUTTON_FLYINGC_GLANCE_LEFT_LINK 0x0407C4E4 /* Fallback Glance Left button */ +#define DIBUTTON_FLYINGC_GLANCE_RIGHT_LINK 0x0407C4EC /* Fallback Glance Right button */ +#define DIBUTTON_FLYINGC_GLANCE_UP_LINK 0x0407C4E0 /* Fallback Glance Up button */ +#define DIBUTTON_FLYINGC_GLANCE_DOWN_LINK 0x0407C4E8 /* Fallback Glance Down button */ +#define DIBUTTON_FLYINGC_DEVICE 0x040044FE /* Show input device and controls */ +#define DIBUTTON_FLYINGC_PAUSE 0x040044FC /* Start / Pause / Restart game */ + +/*--- Flight Simulator - Military + Aerial combat is the primary objective ---*/ +#define DIVIRTUAL_FLYING_MILITARY 0x05000000 +#define DIAXIS_FLYINGM_BANK 0x05008A01 /* Bank - Roll ship left / right */ +#define DIAXIS_FLYINGM_PITCH 0x05010A02 /* Pitch - Nose up / down */ +#define DIAXIS_FLYINGM_THROTTLE 0x05039203 /* Throttle - faster / slower */ +#define DIBUTTON_FLYINGM_FIRE 0x05000C01 /* Fire */ +#define DIBUTTON_FLYINGM_WEAPONS 0x05000C02 /* Select next weapon */ +#define DIBUTTON_FLYINGM_TARGET 0x05000C03 /* Selects next available target */ +#define DIBUTTON_FLYINGM_MENU 0x050004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIHATSWITCH_FLYINGM_GLANCE 0x05004601 /* Look around */ +#define DIBUTTON_FLYINGM_COUNTER 0x05005C04 /* Activate counter measures */ +#define DIAXIS_FLYINGM_RUDDER 0x05024A04 /* Rudder - Yaw ship left/right */ +#define DIAXIS_FLYINGM_BRAKE 0x05046205 /* Brake-axis */ +#define DIBUTTON_FLYINGM_VIEW 0x05006405 /* Cycle through view options */ +#define DIBUTTON_FLYINGM_DISPLAY 0x05006406 /* Select next dashboard option */ +#define DIAXIS_FLYINGM_FLAPS 0x05055206 /* Flaps */ +#define DIBUTTON_FLYINGM_FLAPSUP 0x05005407 /* Increment stepping up until fully retracted */ +#define DIBUTTON_FLYINGM_FLAPSDOWN 0x05005408 /* Decrement stepping down until fully extended */ +#define DIBUTTON_FLYINGM_FIRESECONDARY 0x05004C09 /* Alternative fire button */ +#define DIBUTTON_FLYINGM_GEAR 0x0500640A /* Gear up / down */ +#define DIBUTTON_FLYINGM_BRAKE_LINK 0x050464E0 /* Fallback brake button */ +#define DIBUTTON_FLYINGM_FASTER_LINK 0x0503D4E0 /* Fallback throttle up button */ +#define DIBUTTON_FLYINGM_SLOWER_LINK 0x0503D4E8 /* Fallback throttle down button */ +#define DIBUTTON_FLYINGM_GLANCE_LEFT_LINK 0x0507C4E4 /* Fallback Glance Left button */ +#define DIBUTTON_FLYINGM_GLANCE_RIGHT_LINK 0x0507C4EC /* Fallback Glance Right button */ +#define DIBUTTON_FLYINGM_GLANCE_UP_LINK 0x0507C4E0 /* Fallback Glance Up button */ +#define DIBUTTON_FLYINGM_GLANCE_DOWN_LINK 0x0507C4E8 /* Fallback Glance Down button */ +#define DIBUTTON_FLYINGM_DEVICE 0x050044FE /* Show input device and controls */ +#define DIBUTTON_FLYINGM_PAUSE 0x050044FC /* Start / Pause / Restart game */ + +/*--- Flight Simulator - Combat Helicopter + Combat from helicopter is primary objective ---*/ +#define DIVIRTUAL_FLYING_HELICOPTER 0x06000000 +#define DIAXIS_FLYINGH_BANK 0x06008A01 /* Bank - Roll ship left / right */ +#define DIAXIS_FLYINGH_PITCH 0x06010A02 /* Pitch - Nose up / down */ +#define DIAXIS_FLYINGH_COLLECTIVE 0x06018A03 /* Collective - Blade pitch/power */ +#define DIBUTTON_FLYINGH_FIRE 0x06001401 /* Fire */ +#define DIBUTTON_FLYINGH_WEAPONS 0x06001402 /* Select next weapon */ +#define DIBUTTON_FLYINGH_TARGET 0x06001403 /* Selects next available target */ +#define DIBUTTON_FLYINGH_MENU 0x060004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIHATSWITCH_FLYINGH_GLANCE 0x06004601 /* Look around */ +#define DIAXIS_FLYINGH_TORQUE 0x06025A04 /* Torque - Rotate ship around left / right axis */ +#define DIAXIS_FLYINGH_THROTTLE 0x0603DA05 /* Throttle */ +#define DIBUTTON_FLYINGH_COUNTER 0x06005404 /* Activate counter measures */ +#define DIBUTTON_FLYINGH_VIEW 0x06006405 /* Cycle through view options */ +#define DIBUTTON_FLYINGH_GEAR 0x06006406 /* Gear up / down */ +#define DIBUTTON_FLYINGH_FIRESECONDARY 0x06004C07 /* Alternative fire button */ +#define DIBUTTON_FLYINGH_FASTER_LINK 0x0603DCE0 /* Fallback throttle up button */ +#define DIBUTTON_FLYINGH_SLOWER_LINK 0x0603DCE8 /* Fallback throttle down button */ +#define DIBUTTON_FLYINGH_GLANCE_LEFT_LINK 0x0607C4E4 /* Fallback Glance Left button */ +#define DIBUTTON_FLYINGH_GLANCE_RIGHT_LINK 0x0607C4EC /* Fallback Glance Right button */ +#define DIBUTTON_FLYINGH_GLANCE_UP_LINK 0x0607C4E0 /* Fallback Glance Up button */ +#define DIBUTTON_FLYINGH_GLANCE_DOWN_LINK 0x0607C4E8 /* Fallback Glance Down button */ +#define DIBUTTON_FLYINGH_DEVICE 0x060044FE /* Show input device and controls */ +#define DIBUTTON_FLYINGH_PAUSE 0x060044FC /* Start / Pause / Restart game */ + +/*--- Space Simulator - Combat + Space Simulator with weapons ---*/ +#define DIVIRTUAL_SPACESIM 0x07000000 +#define DIAXIS_SPACESIM_LATERAL 0x07008201 /* Move ship left / right */ +#define DIAXIS_SPACESIM_MOVE 0x07010202 /* Move ship forward/backward */ +#define DIAXIS_SPACESIM_THROTTLE 0x07038203 /* Throttle - Engine speed */ +#define DIBUTTON_SPACESIM_FIRE 0x07000401 /* Fire */ +#define DIBUTTON_SPACESIM_WEAPONS 0x07000402 /* Select next weapon */ +#define DIBUTTON_SPACESIM_TARGET 0x07000403 /* Selects next available target */ +#define DIBUTTON_SPACESIM_MENU 0x070004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIHATSWITCH_SPACESIM_GLANCE 0x07004601 /* Look around */ +#define DIAXIS_SPACESIM_CLIMB 0x0701C204 /* Climb - Pitch ship up/down */ +#define DIAXIS_SPACESIM_ROTATE 0x07024205 /* Rotate - Turn ship left/right */ +#define DIBUTTON_SPACESIM_VIEW 0x07004404 /* Cycle through view options */ +#define DIBUTTON_SPACESIM_DISPLAY 0x07004405 /* Select next dashboard / heads up display option */ +#define DIBUTTON_SPACESIM_RAISE 0x07004406 /* Raise ship while maintaining current pitch */ +#define DIBUTTON_SPACESIM_LOWER 0x07004407 /* Lower ship while maintaining current pitch */ +#define DIBUTTON_SPACESIM_GEAR 0x07004408 /* Gear up / down */ +#define DIBUTTON_SPACESIM_FIRESECONDARY 0x07004409 /* Alternative fire button */ +#define DIBUTTON_SPACESIM_LEFT_LINK 0x0700C4E4 /* Fallback move left button */ +#define DIBUTTON_SPACESIM_RIGHT_LINK 0x0700C4EC /* Fallback move right button */ +#define DIBUTTON_SPACESIM_FORWARD_LINK 0x070144E0 /* Fallback move forward button */ +#define DIBUTTON_SPACESIM_BACKWARD_LINK 0x070144E8 /* Fallback move backwards button */ +#define DIBUTTON_SPACESIM_FASTER_LINK 0x0703C4E0 /* Fallback throttle up button */ +#define DIBUTTON_SPACESIM_SLOWER_LINK 0x0703C4E8 /* Fallback throttle down button */ +#define DIBUTTON_SPACESIM_TURN_LEFT_LINK 0x070244E4 /* Fallback turn left button */ +#define DIBUTTON_SPACESIM_TURN_RIGHT_LINK 0x070244EC /* Fallback turn right button */ +#define DIBUTTON_SPACESIM_GLANCE_LEFT_LINK 0x0707C4E4 /* Fallback Glance Left button */ +#define DIBUTTON_SPACESIM_GLANCE_RIGHT_LINK 0x0707C4EC /* Fallback Glance Right button */ +#define DIBUTTON_SPACESIM_GLANCE_UP_LINK 0x0707C4E0 /* Fallback Glance Up button */ +#define DIBUTTON_SPACESIM_GLANCE_DOWN_LINK 0x0707C4E8 /* Fallback Glance Down button */ +#define DIBUTTON_SPACESIM_DEVICE 0x070044FE /* Show input device and controls */ +#define DIBUTTON_SPACESIM_PAUSE 0x070044FC /* Start / Pause / Restart game */ + +/*--- Fighting - First Person + Hand to Hand combat is primary objective ---*/ +#define DIVIRTUAL_FIGHTING_HAND2HAND 0x08000000 +#define DIAXIS_FIGHTINGH_LATERAL 0x08008201 /* Sidestep left/right */ +#define DIAXIS_FIGHTINGH_MOVE 0x08010202 /* Move forward/backward */ +#define DIBUTTON_FIGHTINGH_PUNCH 0x08000401 /* Punch */ +#define DIBUTTON_FIGHTINGH_KICK 0x08000402 /* Kick */ +#define DIBUTTON_FIGHTINGH_BLOCK 0x08000403 /* Block */ +#define DIBUTTON_FIGHTINGH_CROUCH 0x08000404 /* Crouch */ +#define DIBUTTON_FIGHTINGH_JUMP 0x08000405 /* Jump */ +#define DIBUTTON_FIGHTINGH_SPECIAL1 0x08000406 /* Apply first special move */ +#define DIBUTTON_FIGHTINGH_SPECIAL2 0x08000407 /* Apply second special move */ +#define DIBUTTON_FIGHTINGH_MENU 0x080004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIBUTTON_FIGHTINGH_SELECT 0x08004408 /* Select special move */ +#define DIHATSWITCH_FIGHTINGH_SLIDE 0x08004601 /* Look around */ +#define DIBUTTON_FIGHTINGH_DISPLAY 0x08004409 /* Shows next on-screen display option */ +#define DIAXIS_FIGHTINGH_ROTATE 0x08024203 /* Rotate - Turn body left/right */ +#define DIBUTTON_FIGHTINGH_DODGE 0x0800440A /* Dodge */ +#define DIBUTTON_FIGHTINGH_LEFT_LINK 0x0800C4E4 /* Fallback left sidestep button */ +#define DIBUTTON_FIGHTINGH_RIGHT_LINK 0x0800C4EC /* Fallback right sidestep button */ +#define DIBUTTON_FIGHTINGH_FORWARD_LINK 0x080144E0 /* Fallback forward button */ +#define DIBUTTON_FIGHTINGH_BACKWARD_LINK 0x080144E8 /* Fallback backward button */ +#define DIBUTTON_FIGHTINGH_DEVICE 0x080044FE /* Show input device and controls */ +#define DIBUTTON_FIGHTINGH_PAUSE 0x080044FC /* Start / Pause / Restart game */ + +/*--- Fighting - First Person Shooting + Navigation and combat are primary objectives ---*/ +#define DIVIRTUAL_FIGHTING_FPS 0x09000000 +#define DIAXIS_FPS_ROTATE 0x09008201 /* Rotate character left/right */ +#define DIAXIS_FPS_MOVE 0x09010202 /* Move forward/backward */ +#define DIBUTTON_FPS_FIRE 0x09000401 /* Fire */ +#define DIBUTTON_FPS_WEAPONS 0x09000402 /* Select next weapon */ +#define DIBUTTON_FPS_APPLY 0x09000403 /* Use item */ +#define DIBUTTON_FPS_SELECT 0x09000404 /* Select next inventory item */ +#define DIBUTTON_FPS_CROUCH 0x09000405 /* Crouch/ climb down/ swim down */ +#define DIBUTTON_FPS_JUMP 0x09000406 /* Jump/ climb up/ swim up */ +#define DIAXIS_FPS_LOOKUPDOWN 0x09018203 /* Look up / down */ +#define DIBUTTON_FPS_STRAFE 0x09000407 /* Enable strafing while active */ +#define DIBUTTON_FPS_MENU 0x090004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIHATSWITCH_FPS_GLANCE 0x09004601 /* Look around */ +#define DIBUTTON_FPS_DISPLAY 0x09004408 /* Shows next on-screen display option/ map */ +#define DIAXIS_FPS_SIDESTEP 0x09024204 /* Sidestep */ +#define DIBUTTON_FPS_DODGE 0x09004409 /* Dodge */ +#define DIBUTTON_FPS_GLANCEL 0x0900440A /* Glance Left */ +#define DIBUTTON_FPS_GLANCER 0x0900440B /* Glance Right */ +#define DIBUTTON_FPS_FIRESECONDARY 0x0900440C /* Alternative fire button */ +#define DIBUTTON_FPS_ROTATE_LEFT_LINK 0x0900C4E4 /* Fallback rotate left button */ +#define DIBUTTON_FPS_ROTATE_RIGHT_LINK 0x0900C4EC /* Fallback rotate right button */ +#define DIBUTTON_FPS_FORWARD_LINK 0x090144E0 /* Fallback forward button */ +#define DIBUTTON_FPS_BACKWARD_LINK 0x090144E8 /* Fallback backward button */ +#define DIBUTTON_FPS_GLANCE_UP_LINK 0x0901C4E0 /* Fallback look up button */ +#define DIBUTTON_FPS_GLANCE_DOWN_LINK 0x0901C4E8 /* Fallback look down button */ +#define DIBUTTON_FPS_STEP_LEFT_LINK 0x090244E4 /* Fallback step left button */ +#define DIBUTTON_FPS_STEP_RIGHT_LINK 0x090244EC /* Fallback step right button */ +#define DIBUTTON_FPS_DEVICE 0x090044FE /* Show input device and controls */ +#define DIBUTTON_FPS_PAUSE 0x090044FC /* Start / Pause / Restart game */ + +/*--- Fighting - Third Person action + Perspective of camera is behind the main character ---*/ +#define DIVIRTUAL_FIGHTING_THIRDPERSON 0x0A000000 +#define DIAXIS_TPS_TURN 0x0A020201 /* Turn left/right */ +#define DIAXIS_TPS_MOVE 0x0A010202 /* Move forward/backward */ +#define DIBUTTON_TPS_RUN 0x0A000401 /* Run or walk toggle switch */ +#define DIBUTTON_TPS_ACTION 0x0A000402 /* Action Button */ +#define DIBUTTON_TPS_SELECT 0x0A000403 /* Select next weapon */ +#define DIBUTTON_TPS_USE 0x0A000404 /* Use inventory item currently selected */ +#define DIBUTTON_TPS_JUMP 0x0A000405 /* Character Jumps */ +#define DIBUTTON_TPS_MENU 0x0A0004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIHATSWITCH_TPS_GLANCE 0x0A004601 /* Look around */ +#define DIBUTTON_TPS_VIEW 0x0A004406 /* Select camera view */ +#define DIBUTTON_TPS_STEPLEFT 0x0A004407 /* Character takes a left step */ +#define DIBUTTON_TPS_STEPRIGHT 0x0A004408 /* Character takes a right step */ +#define DIAXIS_TPS_STEP 0x0A00C203 /* Character steps left/right */ +#define DIBUTTON_TPS_DODGE 0x0A004409 /* Character dodges or ducks */ +#define DIBUTTON_TPS_INVENTORY 0x0A00440A /* Cycle through inventory */ +#define DIBUTTON_TPS_TURN_LEFT_LINK 0x0A0244E4 /* Fallback turn left button */ +#define DIBUTTON_TPS_TURN_RIGHT_LINK 0x0A0244EC /* Fallback turn right button */ +#define DIBUTTON_TPS_FORWARD_LINK 0x0A0144E0 /* Fallback forward button */ +#define DIBUTTON_TPS_BACKWARD_LINK 0x0A0144E8 /* Fallback backward button */ +#define DIBUTTON_TPS_GLANCE_UP_LINK 0x0A07C4E0 /* Fallback look up button */ +#define DIBUTTON_TPS_GLANCE_DOWN_LINK 0x0A07C4E8 /* Fallback look down button */ +#define DIBUTTON_TPS_GLANCE_LEFT_LINK 0x0A07C4E4 /* Fallback glance up button */ +#define DIBUTTON_TPS_GLANCE_RIGHT_LINK 0x0A07C4EC /* Fallback glance right button */ +#define DIBUTTON_TPS_DEVICE 0x0A0044FE /* Show input device and controls */ +#define DIBUTTON_TPS_PAUSE 0x0A0044FC /* Start / Pause / Restart game */ + +/*--- Strategy - Role Playing + Navigation and problem solving are primary actions ---*/ +#define DIVIRTUAL_STRATEGY_ROLEPLAYING 0x0B000000 +#define DIAXIS_STRATEGYR_LATERAL 0x0B008201 /* sidestep - left/right */ +#define DIAXIS_STRATEGYR_MOVE 0x0B010202 /* move forward/backward */ +#define DIBUTTON_STRATEGYR_GET 0x0B000401 /* Acquire item */ +#define DIBUTTON_STRATEGYR_APPLY 0x0B000402 /* Use selected item */ +#define DIBUTTON_STRATEGYR_SELECT 0x0B000403 /* Select nextitem */ +#define DIBUTTON_STRATEGYR_ATTACK 0x0B000404 /* Attack */ +#define DIBUTTON_STRATEGYR_CAST 0x0B000405 /* Cast Spell */ +#define DIBUTTON_STRATEGYR_CROUCH 0x0B000406 /* Crouch */ +#define DIBUTTON_STRATEGYR_JUMP 0x0B000407 /* Jump */ +#define DIBUTTON_STRATEGYR_MENU 0x0B0004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIHATSWITCH_STRATEGYR_GLANCE 0x0B004601 /* Look around */ +#define DIBUTTON_STRATEGYR_MAP 0x0B004408 /* Cycle through map options */ +#define DIBUTTON_STRATEGYR_DISPLAY 0x0B004409 /* Shows next on-screen display option */ +#define DIAXIS_STRATEGYR_ROTATE 0x0B024203 /* Turn body left/right */ +#define DIBUTTON_STRATEGYR_LEFT_LINK 0x0B00C4E4 /* Fallback sidestep left button */ +#define DIBUTTON_STRATEGYR_RIGHT_LINK 0x0B00C4EC /* Fallback sidestep right button */ +#define DIBUTTON_STRATEGYR_FORWARD_LINK 0x0B0144E0 /* Fallback move forward button */ +#define DIBUTTON_STRATEGYR_BACK_LINK 0x0B0144E8 /* Fallback move backward button */ +#define DIBUTTON_STRATEGYR_ROTATE_LEFT_LINK 0x0B0244E4 /* Fallback turn body left button */ +#define DIBUTTON_STRATEGYR_ROTATE_RIGHT_LINK 0x0B0244EC /* Fallback turn body right button */ +#define DIBUTTON_STRATEGYR_DEVICE 0x0B0044FE /* Show input device and controls */ +#define DIBUTTON_STRATEGYR_PAUSE 0x0B0044FC /* Start / Pause / Restart game */ + +/*--- Strategy - Turn based + Navigation and problem solving are primary actions ---*/ +#define DIVIRTUAL_STRATEGY_TURN 0x0C000000 +#define DIAXIS_STRATEGYT_LATERAL 0x0C008201 /* Sidestep left/right */ +#define DIAXIS_STRATEGYT_MOVE 0x0C010202 /* Move forward/backwards */ +#define DIBUTTON_STRATEGYT_SELECT 0x0C000401 /* Select unit or object */ +#define DIBUTTON_STRATEGYT_INSTRUCT 0x0C000402 /* Cycle through instructions */ +#define DIBUTTON_STRATEGYT_APPLY 0x0C000403 /* Apply selected instruction */ +#define DIBUTTON_STRATEGYT_TEAM 0x0C000404 /* Select next team / cycle through all */ +#define DIBUTTON_STRATEGYT_TURN 0x0C000405 /* Indicate turn over */ +#define DIBUTTON_STRATEGYT_MENU 0x0C0004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIBUTTON_STRATEGYT_ZOOM 0x0C004406 /* Zoom - in / out */ +#define DIBUTTON_STRATEGYT_MAP 0x0C004407 /* cycle through map options */ +#define DIBUTTON_STRATEGYT_DISPLAY 0x0C004408 /* shows next on-screen display options */ +#define DIBUTTON_STRATEGYT_LEFT_LINK 0x0C00C4E4 /* Fallback sidestep left button */ +#define DIBUTTON_STRATEGYT_RIGHT_LINK 0x0C00C4EC /* Fallback sidestep right button */ +#define DIBUTTON_STRATEGYT_FORWARD_LINK 0x0C0144E0 /* Fallback move forward button */ +#define DIBUTTON_STRATEGYT_BACK_LINK 0x0C0144E8 /* Fallback move back button */ +#define DIBUTTON_STRATEGYT_DEVICE 0x0C0044FE /* Show input device and controls */ +#define DIBUTTON_STRATEGYT_PAUSE 0x0C0044FC /* Start / Pause / Restart game */ + +/*--- Sports - Hunting + Hunting ---*/ +#define DIVIRTUAL_SPORTS_HUNTING 0x0D000000 +#define DIAXIS_HUNTING_LATERAL 0x0D008201 /* sidestep left/right */ +#define DIAXIS_HUNTING_MOVE 0x0D010202 /* move forward/backwards */ +#define DIBUTTON_HUNTING_FIRE 0x0D000401 /* Fire selected weapon */ +#define DIBUTTON_HUNTING_AIM 0x0D000402 /* Select aim/move */ +#define DIBUTTON_HUNTING_WEAPON 0x0D000403 /* Select next weapon */ +#define DIBUTTON_HUNTING_BINOCULAR 0x0D000404 /* Look through Binoculars */ +#define DIBUTTON_HUNTING_CALL 0x0D000405 /* Make animal call */ +#define DIBUTTON_HUNTING_MAP 0x0D000406 /* View Map */ +#define DIBUTTON_HUNTING_SPECIAL 0x0D000407 /* Special game operation */ +#define DIBUTTON_HUNTING_MENU 0x0D0004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIHATSWITCH_HUNTING_GLANCE 0x0D004601 /* Look around */ +#define DIBUTTON_HUNTING_DISPLAY 0x0D004408 /* show next on-screen display option */ +#define DIAXIS_HUNTING_ROTATE 0x0D024203 /* Turn body left/right */ +#define DIBUTTON_HUNTING_CROUCH 0x0D004409 /* Crouch/ Climb / Swim down */ +#define DIBUTTON_HUNTING_JUMP 0x0D00440A /* Jump/ Climb up / Swim up */ +#define DIBUTTON_HUNTING_FIRESECONDARY 0x0D00440B /* Alternative fire button */ +#define DIBUTTON_HUNTING_LEFT_LINK 0x0D00C4E4 /* Fallback sidestep left button */ +#define DIBUTTON_HUNTING_RIGHT_LINK 0x0D00C4EC /* Fallback sidestep right button */ +#define DIBUTTON_HUNTING_FORWARD_LINK 0x0D0144E0 /* Fallback move forward button */ +#define DIBUTTON_HUNTING_BACK_LINK 0x0D0144E8 /* Fallback move back button */ +#define DIBUTTON_HUNTING_ROTATE_LEFT_LINK 0x0D0244E4 /* Fallback turn body left button */ +#define DIBUTTON_HUNTING_ROTATE_RIGHT_LINK 0x0D0244EC /* Fallback turn body right button */ +#define DIBUTTON_HUNTING_DEVICE 0x0D0044FE /* Show input device and controls */ +#define DIBUTTON_HUNTING_PAUSE 0x0D0044FC /* Start / Pause / Restart game */ + +/*--- Sports - Fishing + Catching Fish is primary objective ---*/ +#define DIVIRTUAL_SPORTS_FISHING 0x0E000000 +#define DIAXIS_FISHING_LATERAL 0x0E008201 /* sidestep left/right */ +#define DIAXIS_FISHING_MOVE 0x0E010202 /* move forward/backwards */ +#define DIBUTTON_FISHING_CAST 0x0E000401 /* Cast line */ +#define DIBUTTON_FISHING_TYPE 0x0E000402 /* Select cast type */ +#define DIBUTTON_FISHING_BINOCULAR 0x0E000403 /* Look through Binocular */ +#define DIBUTTON_FISHING_BAIT 0x0E000404 /* Select type of Bait */ +#define DIBUTTON_FISHING_MAP 0x0E000405 /* View Map */ +#define DIBUTTON_FISHING_MENU 0x0E0004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIHATSWITCH_FISHING_GLANCE 0x0E004601 /* Look around */ +#define DIBUTTON_FISHING_DISPLAY 0x0E004406 /* Show next on-screen display option */ +#define DIAXIS_FISHING_ROTATE 0x0E024203 /* Turn character left / right */ +#define DIBUTTON_FISHING_CROUCH 0x0E004407 /* Crouch/ Climb / Swim down */ +#define DIBUTTON_FISHING_JUMP 0x0E004408 /* Jump/ Climb up / Swim up */ +#define DIBUTTON_FISHING_LEFT_LINK 0x0E00C4E4 /* Fallback sidestep left button */ +#define DIBUTTON_FISHING_RIGHT_LINK 0x0E00C4EC /* Fallback sidestep right button */ +#define DIBUTTON_FISHING_FORWARD_LINK 0x0E0144E0 /* Fallback move forward button */ +#define DIBUTTON_FISHING_BACK_LINK 0x0E0144E8 /* Fallback move back button */ +#define DIBUTTON_FISHING_ROTATE_LEFT_LINK 0x0E0244E4 /* Fallback turn body left button */ +#define DIBUTTON_FISHING_ROTATE_RIGHT_LINK 0x0E0244EC /* Fallback turn body right button */ +#define DIBUTTON_FISHING_DEVICE 0x0E0044FE /* Show input device and controls */ +#define DIBUTTON_FISHING_PAUSE 0x0E0044FC /* Start / Pause / Restart game */ + +/*--- Sports - Baseball - Batting + Batter control is primary objective ---*/ +#define DIVIRTUAL_SPORTS_BASEBALL_BAT 0x0F000000 +#define DIAXIS_BASEBALLB_LATERAL 0x0F008201 /* Aim left / right */ +#define DIAXIS_BASEBALLB_MOVE 0x0F010202 /* Aim up / down */ +#define DIBUTTON_BASEBALLB_SELECT 0x0F000401 /* cycle through swing options */ +#define DIBUTTON_BASEBALLB_NORMAL 0x0F000402 /* normal swing */ +#define DIBUTTON_BASEBALLB_POWER 0x0F000403 /* swing for the fence */ +#define DIBUTTON_BASEBALLB_BUNT 0x0F000404 /* bunt */ +#define DIBUTTON_BASEBALLB_STEAL 0x0F000405 /* Base runner attempts to steal a base */ +#define DIBUTTON_BASEBALLB_BURST 0x0F000406 /* Base runner invokes burst of speed */ +#define DIBUTTON_BASEBALLB_SLIDE 0x0F000407 /* Base runner slides into base */ +#define DIBUTTON_BASEBALLB_CONTACT 0x0F000408 /* Contact swing */ +#define DIBUTTON_BASEBALLB_MENU 0x0F0004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIBUTTON_BASEBALLB_NOSTEAL 0x0F004409 /* Base runner goes back to a base */ +#define DIBUTTON_BASEBALLB_BOX 0x0F00440A /* Enter or exit batting box */ +#define DIBUTTON_BASEBALLB_LEFT_LINK 0x0F00C4E4 /* Fallback sidestep left button */ +#define DIBUTTON_BASEBALLB_RIGHT_LINK 0x0F00C4EC /* Fallback sidestep right button */ +#define DIBUTTON_BASEBALLB_FORWARD_LINK 0x0F0144E0 /* Fallback move forward button */ +#define DIBUTTON_BASEBALLB_BACK_LINK 0x0F0144E8 /* Fallback move back button */ +#define DIBUTTON_BASEBALLB_DEVICE 0x0F0044FE /* Show input device and controls */ +#define DIBUTTON_BASEBALLB_PAUSE 0x0F0044FC /* Start / Pause / Restart game */ + +/*--- Sports - Baseball - Pitching + Pitcher control is primary objective ---*/ +#define DIVIRTUAL_SPORTS_BASEBALL_PITCH 0x10000000 +#define DIAXIS_BASEBALLP_LATERAL 0x10008201 /* Aim left / right */ +#define DIAXIS_BASEBALLP_MOVE 0x10010202 /* Aim up / down */ +#define DIBUTTON_BASEBALLP_SELECT 0x10000401 /* cycle through pitch selections */ +#define DIBUTTON_BASEBALLP_PITCH 0x10000402 /* throw pitch */ +#define DIBUTTON_BASEBALLP_BASE 0x10000403 /* select base to throw to */ +#define DIBUTTON_BASEBALLP_THROW 0x10000404 /* throw to base */ +#define DIBUTTON_BASEBALLP_FAKE 0x10000405 /* Fake a throw to a base */ +#define DIBUTTON_BASEBALLP_MENU 0x100004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIBUTTON_BASEBALLP_WALK 0x10004406 /* Throw intentional walk / pitch out */ +#define DIBUTTON_BASEBALLP_LOOK 0x10004407 /* Look at runners on bases */ +#define DIBUTTON_BASEBALLP_LEFT_LINK 0x1000C4E4 /* Fallback sidestep left button */ +#define DIBUTTON_BASEBALLP_RIGHT_LINK 0x1000C4EC /* Fallback sidestep right button */ +#define DIBUTTON_BASEBALLP_FORWARD_LINK 0x100144E0 /* Fallback move forward button */ +#define DIBUTTON_BASEBALLP_BACK_LINK 0x100144E8 /* Fallback move back button */ +#define DIBUTTON_BASEBALLP_DEVICE 0x100044FE /* Show input device and controls */ +#define DIBUTTON_BASEBALLP_PAUSE 0x100044FC /* Start / Pause / Restart game */ + +/*--- Sports - Baseball - Fielding + Fielder control is primary objective ---*/ +#define DIVIRTUAL_SPORTS_BASEBALL_FIELD 0x11000000 +#define DIAXIS_BASEBALLF_LATERAL 0x11008201 /* Aim left / right */ +#define DIAXIS_BASEBALLF_MOVE 0x11010202 /* Aim up / down */ +#define DIBUTTON_BASEBALLF_NEAREST 0x11000401 /* Switch to fielder nearest to the ball */ +#define DIBUTTON_BASEBALLF_THROW1 0x11000402 /* Make conservative throw */ +#define DIBUTTON_BASEBALLF_THROW2 0x11000403 /* Make aggressive throw */ +#define DIBUTTON_BASEBALLF_BURST 0x11000404 /* Invoke burst of speed */ +#define DIBUTTON_BASEBALLF_JUMP 0x11000405 /* Jump to catch ball */ +#define DIBUTTON_BASEBALLF_DIVE 0x11000406 /* Dive to catch ball */ +#define DIBUTTON_BASEBALLF_MENU 0x110004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIBUTTON_BASEBALLF_SHIFTIN 0x11004407 /* Shift the infield positioning */ +#define DIBUTTON_BASEBALLF_SHIFTOUT 0x11004408 /* Shift the outfield positioning */ +#define DIBUTTON_BASEBALLF_AIM_LEFT_LINK 0x1100C4E4 /* Fallback aim left button */ +#define DIBUTTON_BASEBALLF_AIM_RIGHT_LINK 0x1100C4EC /* Fallback aim right button */ +#define DIBUTTON_BASEBALLF_FORWARD_LINK 0x110144E0 /* Fallback move forward button */ +#define DIBUTTON_BASEBALLF_BACK_LINK 0x110144E8 /* Fallback move back button */ +#define DIBUTTON_BASEBALLF_DEVICE 0x110044FE /* Show input device and controls */ +#define DIBUTTON_BASEBALLF_PAUSE 0x110044FC /* Start / Pause / Restart game */ + +/*--- Sports - Basketball - Offense + Offense ---*/ +#define DIVIRTUAL_SPORTS_BASKETBALL_OFFENSE 0x12000000 +#define DIAXIS_BBALLO_LATERAL 0x12008201 /* left / right */ +#define DIAXIS_BBALLO_MOVE 0x12010202 /* up / down */ +#define DIBUTTON_BBALLO_SHOOT 0x12000401 /* shoot basket */ +#define DIBUTTON_BBALLO_DUNK 0x12000402 /* dunk basket */ +#define DIBUTTON_BBALLO_PASS 0x12000403 /* throw pass */ +#define DIBUTTON_BBALLO_FAKE 0x12000404 /* fake shot or pass */ +#define DIBUTTON_BBALLO_SPECIAL 0x12000405 /* apply special move */ +#define DIBUTTON_BBALLO_PLAYER 0x12000406 /* select next player */ +#define DIBUTTON_BBALLO_BURST 0x12000407 /* invoke burst */ +#define DIBUTTON_BBALLO_CALL 0x12000408 /* call for ball / pass to me */ +#define DIBUTTON_BBALLO_MENU 0x120004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIHATSWITCH_BBALLO_GLANCE 0x12004601 /* scroll view */ +#define DIBUTTON_BBALLO_SCREEN 0x12004409 /* Call for screen */ +#define DIBUTTON_BBALLO_PLAY 0x1200440A /* Call for specific offensive play */ +#define DIBUTTON_BBALLO_JAB 0x1200440B /* Initiate fake drive to basket */ +#define DIBUTTON_BBALLO_POST 0x1200440C /* Perform post move */ +#define DIBUTTON_BBALLO_TIMEOUT 0x1200440D /* Time Out */ +#define DIBUTTON_BBALLO_SUBSTITUTE 0x1200440E /* substitute one player for another */ +#define DIBUTTON_BBALLO_LEFT_LINK 0x1200C4E4 /* Fallback sidestep left button */ +#define DIBUTTON_BBALLO_RIGHT_LINK 0x1200C4EC /* Fallback sidestep right button */ +#define DIBUTTON_BBALLO_FORWARD_LINK 0x120144E0 /* Fallback move forward button */ +#define DIBUTTON_BBALLO_BACK_LINK 0x120144E8 /* Fallback move back button */ +#define DIBUTTON_BBALLO_DEVICE 0x120044FE /* Show input device and controls */ +#define DIBUTTON_BBALLO_PAUSE 0x120044FC /* Start / Pause / Restart game */ + +/*--- Sports - Basketball - Defense + Defense ---*/ +#define DIVIRTUAL_SPORTS_BASKETBALL_DEFENSE 0x13000000 +#define DIAXIS_BBALLD_LATERAL 0x13008201 /* left / right */ +#define DIAXIS_BBALLD_MOVE 0x13010202 /* up / down */ +#define DIBUTTON_BBALLD_JUMP 0x13000401 /* jump to block shot */ +#define DIBUTTON_BBALLD_STEAL 0x13000402 /* attempt to steal ball */ +#define DIBUTTON_BBALLD_FAKE 0x13000403 /* fake block or steal */ +#define DIBUTTON_BBALLD_SPECIAL 0x13000404 /* apply special move */ +#define DIBUTTON_BBALLD_PLAYER 0x13000405 /* select next player */ +#define DIBUTTON_BBALLD_BURST 0x13000406 /* invoke burst */ +#define DIBUTTON_BBALLD_PLAY 0x13000407 /* call for specific defensive play */ +#define DIBUTTON_BBALLD_MENU 0x130004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIHATSWITCH_BBALLD_GLANCE 0x13004601 /* scroll view */ +#define DIBUTTON_BBALLD_TIMEOUT 0x13004408 /* Time Out */ +#define DIBUTTON_BBALLD_SUBSTITUTE 0x13004409 /* substitute one player for another */ +#define DIBUTTON_BBALLD_LEFT_LINK 0x1300C4E4 /* Fallback sidestep left button */ +#define DIBUTTON_BBALLD_RIGHT_LINK 0x1300C4EC /* Fallback sidestep right button */ +#define DIBUTTON_BBALLD_FORWARD_LINK 0x130144E0 /* Fallback move forward button */ +#define DIBUTTON_BBALLD_BACK_LINK 0x130144E8 /* Fallback move back button */ +#define DIBUTTON_BBALLD_DEVICE 0x130044FE /* Show input device and controls */ +#define DIBUTTON_BBALLD_PAUSE 0x130044FC /* Start / Pause / Restart game */ + +/*--- Sports - Football - Play + Play selection ---*/ +#define DIVIRTUAL_SPORTS_FOOTBALL_FIELD 0x14000000 +#define DIBUTTON_FOOTBALLP_PLAY 0x14000401 /* cycle through available plays */ +#define DIBUTTON_FOOTBALLP_SELECT 0x14000402 /* select play */ +#define DIBUTTON_FOOTBALLP_HELP 0x14000403 /* Bring up pop-up help */ +#define DIBUTTON_FOOTBALLP_MENU 0x140004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIBUTTON_FOOTBALLP_DEVICE 0x140044FE /* Show input device and controls */ +#define DIBUTTON_FOOTBALLP_PAUSE 0x140044FC /* Start / Pause / Restart game */ + +/*--- Sports - Football - QB + Offense: Quarterback / Kicker ---*/ +#define DIVIRTUAL_SPORTS_FOOTBALL_QBCK 0x15000000 +#define DIAXIS_FOOTBALLQ_LATERAL 0x15008201 /* Move / Aim: left / right */ +#define DIAXIS_FOOTBALLQ_MOVE 0x15010202 /* Move / Aim: up / down */ +#define DIBUTTON_FOOTBALLQ_SELECT 0x15000401 /* Select */ +#define DIBUTTON_FOOTBALLQ_SNAP 0x15000402 /* snap ball - start play */ +#define DIBUTTON_FOOTBALLQ_JUMP 0x15000403 /* jump over defender */ +#define DIBUTTON_FOOTBALLQ_SLIDE 0x15000404 /* Dive/Slide */ +#define DIBUTTON_FOOTBALLQ_PASS 0x15000405 /* throws pass to receiver */ +#define DIBUTTON_FOOTBALLQ_FAKE 0x15000406 /* pump fake pass or fake kick */ +#define DIBUTTON_FOOTBALLQ_MENU 0x150004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIBUTTON_FOOTBALLQ_FAKESNAP 0x15004407 /* Fake snap */ +#define DIBUTTON_FOOTBALLQ_MOTION 0x15004408 /* Send receivers in motion */ +#define DIBUTTON_FOOTBALLQ_AUDIBLE 0x15004409 /* Change offensive play at line of scrimmage */ +#define DIBUTTON_FOOTBALLQ_LEFT_LINK 0x1500C4E4 /* Fallback sidestep left button */ +#define DIBUTTON_FOOTBALLQ_RIGHT_LINK 0x1500C4EC /* Fallback sidestep right button */ +#define DIBUTTON_FOOTBALLQ_FORWARD_LINK 0x150144E0 /* Fallback move forward button */ +#define DIBUTTON_FOOTBALLQ_BACK_LINK 0x150144E8 /* Fallback move back button */ +#define DIBUTTON_FOOTBALLQ_DEVICE 0x150044FE /* Show input device and controls */ +#define DIBUTTON_FOOTBALLQ_PAUSE 0x150044FC /* Start / Pause / Restart game */ + +/*--- Sports - Football - Offense + Offense - Runner ---*/ +#define DIVIRTUAL_SPORTS_FOOTBALL_OFFENSE 0x16000000 +#define DIAXIS_FOOTBALLO_LATERAL 0x16008201 /* Move / Aim: left / right */ +#define DIAXIS_FOOTBALLO_MOVE 0x16010202 /* Move / Aim: up / down */ +#define DIBUTTON_FOOTBALLO_JUMP 0x16000401 /* jump or hurdle over defender */ +#define DIBUTTON_FOOTBALLO_LEFTARM 0x16000402 /* holds out left arm */ +#define DIBUTTON_FOOTBALLO_RIGHTARM 0x16000403 /* holds out right arm */ +#define DIBUTTON_FOOTBALLO_THROW 0x16000404 /* throw pass or lateral ball to another runner */ +#define DIBUTTON_FOOTBALLO_SPIN 0x16000405 /* Spin to avoid defenders */ +#define DIBUTTON_FOOTBALLO_MENU 0x160004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIBUTTON_FOOTBALLO_JUKE 0x16004406 /* Use special move to avoid defenders */ +#define DIBUTTON_FOOTBALLO_SHOULDER 0x16004407 /* Lower shoulder to run over defenders */ +#define DIBUTTON_FOOTBALLO_TURBO 0x16004408 /* Speed burst past defenders */ +#define DIBUTTON_FOOTBALLO_DIVE 0x16004409 /* Dive over defenders */ +#define DIBUTTON_FOOTBALLO_ZOOM 0x1600440A /* Zoom view in / out */ +#define DIBUTTON_FOOTBALLO_SUBSTITUTE 0x1600440B /* substitute one player for another */ +#define DIBUTTON_FOOTBALLO_LEFT_LINK 0x1600C4E4 /* Fallback sidestep left button */ +#define DIBUTTON_FOOTBALLO_RIGHT_LINK 0x1600C4EC /* Fallback sidestep right button */ +#define DIBUTTON_FOOTBALLO_FORWARD_LINK 0x160144E0 /* Fallback move forward button */ +#define DIBUTTON_FOOTBALLO_BACK_LINK 0x160144E8 /* Fallback move back button */ +#define DIBUTTON_FOOTBALLO_DEVICE 0x160044FE /* Show input device and controls */ +#define DIBUTTON_FOOTBALLO_PAUSE 0x160044FC /* Start / Pause / Restart game */ + +/*--- Sports - Football - Defense + Defense ---*/ +#define DIVIRTUAL_SPORTS_FOOTBALL_DEFENSE 0x17000000 +#define DIAXIS_FOOTBALLD_LATERAL 0x17008201 /* Move / Aim: left / right */ +#define DIAXIS_FOOTBALLD_MOVE 0x17010202 /* Move / Aim: up / down */ +#define DIBUTTON_FOOTBALLD_PLAY 0x17000401 /* cycle through available plays */ +#define DIBUTTON_FOOTBALLD_SELECT 0x17000402 /* select player closest to the ball */ +#define DIBUTTON_FOOTBALLD_JUMP 0x17000403 /* jump to intercept or block */ +#define DIBUTTON_FOOTBALLD_TACKLE 0x17000404 /* tackler runner */ +#define DIBUTTON_FOOTBALLD_FAKE 0x17000405 /* hold down to fake tackle or intercept */ +#define DIBUTTON_FOOTBALLD_SUPERTACKLE 0x17000406 /* Initiate special tackle */ +#define DIBUTTON_FOOTBALLD_MENU 0x170004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIBUTTON_FOOTBALLD_SPIN 0x17004407 /* Spin to beat offensive line */ +#define DIBUTTON_FOOTBALLD_SWIM 0x17004408 /* Swim to beat the offensive line */ +#define DIBUTTON_FOOTBALLD_BULLRUSH 0x17004409 /* Bull rush the offensive line */ +#define DIBUTTON_FOOTBALLD_RIP 0x1700440A /* Rip the offensive line */ +#define DIBUTTON_FOOTBALLD_AUDIBLE 0x1700440B /* Change defensive play at the line of scrimmage */ +#define DIBUTTON_FOOTBALLD_ZOOM 0x1700440C /* Zoom view in / out */ +#define DIBUTTON_FOOTBALLD_SUBSTITUTE 0x1700440D /* substitute one player for another */ +#define DIBUTTON_FOOTBALLD_LEFT_LINK 0x1700C4E4 /* Fallback sidestep left button */ +#define DIBUTTON_FOOTBALLD_RIGHT_LINK 0x1700C4EC /* Fallback sidestep right button */ +#define DIBUTTON_FOOTBALLD_FORWARD_LINK 0x170144E0 /* Fallback move forward button */ +#define DIBUTTON_FOOTBALLD_BACK_LINK 0x170144E8 /* Fallback move back button */ +#define DIBUTTON_FOOTBALLD_DEVICE 0x170044FE /* Show input device and controls */ +#define DIBUTTON_FOOTBALLD_PAUSE 0x170044FC /* Start / Pause / Restart game */ + +/*--- Sports - Golf + ---*/ +#define DIVIRTUAL_SPORTS_GOLF 0x18000000 +#define DIAXIS_GOLF_LATERAL 0x18008201 /* Move / Aim: left / right */ +#define DIAXIS_GOLF_MOVE 0x18010202 /* Move / Aim: up / down */ +#define DIBUTTON_GOLF_SWING 0x18000401 /* swing club */ +#define DIBUTTON_GOLF_SELECT 0x18000402 /* cycle between: club / swing strength / ball arc / ball spin */ +#define DIBUTTON_GOLF_UP 0x18000403 /* increase selection */ +#define DIBUTTON_GOLF_DOWN 0x18000404 /* decrease selection */ +#define DIBUTTON_GOLF_TERRAIN 0x18000405 /* shows terrain detail */ +#define DIBUTTON_GOLF_FLYBY 0x18000406 /* view the hole via a flyby */ +#define DIBUTTON_GOLF_MENU 0x180004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIHATSWITCH_GOLF_SCROLL 0x18004601 /* scroll view */ +#define DIBUTTON_GOLF_ZOOM 0x18004407 /* Zoom view in / out */ +#define DIBUTTON_GOLF_TIMEOUT 0x18004408 /* Call for time out */ +#define DIBUTTON_GOLF_SUBSTITUTE 0x18004409 /* substitute one player for another */ +#define DIBUTTON_GOLF_LEFT_LINK 0x1800C4E4 /* Fallback sidestep left button */ +#define DIBUTTON_GOLF_RIGHT_LINK 0x1800C4EC /* Fallback sidestep right button */ +#define DIBUTTON_GOLF_FORWARD_LINK 0x180144E0 /* Fallback move forward button */ +#define DIBUTTON_GOLF_BACK_LINK 0x180144E8 /* Fallback move back button */ +#define DIBUTTON_GOLF_DEVICE 0x180044FE /* Show input device and controls */ +#define DIBUTTON_GOLF_PAUSE 0x180044FC /* Start / Pause / Restart game */ + +/*--- Sports - Hockey - Offense + Offense ---*/ +#define DIVIRTUAL_SPORTS_HOCKEY_OFFENSE 0x19000000 +#define DIAXIS_HOCKEYO_LATERAL 0x19008201 /* Move / Aim: left / right */ +#define DIAXIS_HOCKEYO_MOVE 0x19010202 /* Move / Aim: up / down */ +#define DIBUTTON_HOCKEYO_SHOOT 0x19000401 /* Shoot */ +#define DIBUTTON_HOCKEYO_PASS 0x19000402 /* pass the puck */ +#define DIBUTTON_HOCKEYO_BURST 0x19000403 /* invoke speed burst */ +#define DIBUTTON_HOCKEYO_SPECIAL 0x19000404 /* invoke special move */ +#define DIBUTTON_HOCKEYO_FAKE 0x19000405 /* hold down to fake pass or kick */ +#define DIBUTTON_HOCKEYO_MENU 0x190004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIHATSWITCH_HOCKEYO_SCROLL 0x19004601 /* scroll view */ +#define DIBUTTON_HOCKEYO_ZOOM 0x19004406 /* Zoom view in / out */ +#define DIBUTTON_HOCKEYO_STRATEGY 0x19004407 /* Invoke coaching menu for strategy help */ +#define DIBUTTON_HOCKEYO_TIMEOUT 0x19004408 /* Call for time out */ +#define DIBUTTON_HOCKEYO_SUBSTITUTE 0x19004409 /* substitute one player for another */ +#define DIBUTTON_HOCKEYO_LEFT_LINK 0x1900C4E4 /* Fallback sidestep left button */ +#define DIBUTTON_HOCKEYO_RIGHT_LINK 0x1900C4EC /* Fallback sidestep right button */ +#define DIBUTTON_HOCKEYO_FORWARD_LINK 0x190144E0 /* Fallback move forward button */ +#define DIBUTTON_HOCKEYO_BACK_LINK 0x190144E8 /* Fallback move back button */ +#define DIBUTTON_HOCKEYO_DEVICE 0x190044FE /* Show input device and controls */ +#define DIBUTTON_HOCKEYO_PAUSE 0x190044FC /* Start / Pause / Restart game */ + +/*--- Sports - Hockey - Defense + Defense ---*/ +#define DIVIRTUAL_SPORTS_HOCKEY_DEFENSE 0x1A000000 +#define DIAXIS_HOCKEYD_LATERAL 0x1A008201 /* Move / Aim: left / right */ +#define DIAXIS_HOCKEYD_MOVE 0x1A010202 /* Move / Aim: up / down */ +#define DIBUTTON_HOCKEYD_PLAYER 0x1A000401 /* control player closest to the puck */ +#define DIBUTTON_HOCKEYD_STEAL 0x1A000402 /* attempt steal */ +#define DIBUTTON_HOCKEYD_BURST 0x1A000403 /* speed burst or body check */ +#define DIBUTTON_HOCKEYD_BLOCK 0x1A000404 /* block puck */ +#define DIBUTTON_HOCKEYD_FAKE 0x1A000405 /* hold down to fake tackle or intercept */ +#define DIBUTTON_HOCKEYD_MENU 0x1A0004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIHATSWITCH_HOCKEYD_SCROLL 0x1A004601 /* scroll view */ +#define DIBUTTON_HOCKEYD_ZOOM 0x1A004406 /* Zoom view in / out */ +#define DIBUTTON_HOCKEYD_STRATEGY 0x1A004407 /* Invoke coaching menu for strategy help */ +#define DIBUTTON_HOCKEYD_TIMEOUT 0x1A004408 /* Call for time out */ +#define DIBUTTON_HOCKEYD_SUBSTITUTE 0x1A004409 /* substitute one player for another */ +#define DIBUTTON_HOCKEYD_LEFT_LINK 0x1A00C4E4 /* Fallback sidestep left button */ +#define DIBUTTON_HOCKEYD_RIGHT_LINK 0x1A00C4EC /* Fallback sidestep right button */ +#define DIBUTTON_HOCKEYD_FORWARD_LINK 0x1A0144E0 /* Fallback move forward button */ +#define DIBUTTON_HOCKEYD_BACK_LINK 0x1A0144E8 /* Fallback move back button */ +#define DIBUTTON_HOCKEYD_DEVICE 0x1A0044FE /* Show input device and controls */ +#define DIBUTTON_HOCKEYD_PAUSE 0x1A0044FC /* Start / Pause / Restart game */ + +/*--- Sports - Hockey - Goalie + Goal tending ---*/ +#define DIVIRTUAL_SPORTS_HOCKEY_GOALIE 0x1B000000 +#define DIAXIS_HOCKEYG_LATERAL 0x1B008201 /* Move / Aim: left / right */ +#define DIAXIS_HOCKEYG_MOVE 0x1B010202 /* Move / Aim: up / down */ +#define DIBUTTON_HOCKEYG_PASS 0x1B000401 /* pass puck */ +#define DIBUTTON_HOCKEYG_POKE 0x1B000402 /* poke / check / hack */ +#define DIBUTTON_HOCKEYG_STEAL 0x1B000403 /* attempt steal */ +#define DIBUTTON_HOCKEYG_BLOCK 0x1B000404 /* block puck */ +#define DIBUTTON_HOCKEYG_MENU 0x1B0004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIHATSWITCH_HOCKEYG_SCROLL 0x1B004601 /* scroll view */ +#define DIBUTTON_HOCKEYG_ZOOM 0x1B004405 /* Zoom view in / out */ +#define DIBUTTON_HOCKEYG_STRATEGY 0x1B004406 /* Invoke coaching menu for strategy help */ +#define DIBUTTON_HOCKEYG_TIMEOUT 0x1B004407 /* Call for time out */ +#define DIBUTTON_HOCKEYG_SUBSTITUTE 0x1B004408 /* substitute one player for another */ +#define DIBUTTON_HOCKEYG_LEFT_LINK 0x1B00C4E4 /* Fallback sidestep left button */ +#define DIBUTTON_HOCKEYG_RIGHT_LINK 0x1B00C4EC /* Fallback sidestep right button */ +#define DIBUTTON_HOCKEYG_FORWARD_LINK 0x1B0144E0 /* Fallback move forward button */ +#define DIBUTTON_HOCKEYG_BACK_LINK 0x1B0144E8 /* Fallback move back button */ +#define DIBUTTON_HOCKEYG_DEVICE 0x1B0044FE /* Show input device and controls */ +#define DIBUTTON_HOCKEYG_PAUSE 0x1B0044FC /* Start / Pause / Restart game */ + +/*--- Sports - Mountain Biking + ---*/ +#define DIVIRTUAL_SPORTS_BIKING_MOUNTAIN 0x1C000000 +#define DIAXIS_BIKINGM_TURN 0x1C008201 /* left / right */ +#define DIAXIS_BIKINGM_PEDAL 0x1C010202 /* Pedal faster / slower / brake */ +#define DIBUTTON_BIKINGM_JUMP 0x1C000401 /* jump over obstacle */ +#define DIBUTTON_BIKINGM_CAMERA 0x1C000402 /* switch camera view */ +#define DIBUTTON_BIKINGM_SPECIAL1 0x1C000403 /* perform first special move */ +#define DIBUTTON_BIKINGM_SELECT 0x1C000404 /* Select */ +#define DIBUTTON_BIKINGM_SPECIAL2 0x1C000405 /* perform second special move */ +#define DIBUTTON_BIKINGM_MENU 0x1C0004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIHATSWITCH_BIKINGM_SCROLL 0x1C004601 /* scroll view */ +#define DIBUTTON_BIKINGM_ZOOM 0x1C004406 /* Zoom view in / out */ +#define DIAXIS_BIKINGM_BRAKE 0x1C044203 /* Brake axis */ +#define DIBUTTON_BIKINGM_LEFT_LINK 0x1C00C4E4 /* Fallback turn left button */ +#define DIBUTTON_BIKINGM_RIGHT_LINK 0x1C00C4EC /* Fallback turn right button */ +#define DIBUTTON_BIKINGM_FASTER_LINK 0x1C0144E0 /* Fallback pedal faster button */ +#define DIBUTTON_BIKINGM_SLOWER_LINK 0x1C0144E8 /* Fallback pedal slower button */ +#define DIBUTTON_BIKINGM_BRAKE_BUTTON_LINK 0x1C0444E8 /* Fallback brake button */ +#define DIBUTTON_BIKINGM_DEVICE 0x1C0044FE /* Show input device and controls */ +#define DIBUTTON_BIKINGM_PAUSE 0x1C0044FC /* Start / Pause / Restart game */ + +/*--- Sports: Skiing / Snowboarding / Skateboarding + ---*/ +#define DIVIRTUAL_SPORTS_SKIING 0x1D000000 +#define DIAXIS_SKIING_TURN 0x1D008201 /* left / right */ +#define DIAXIS_SKIING_SPEED 0x1D010202 /* faster / slower */ +#define DIBUTTON_SKIING_JUMP 0x1D000401 /* Jump */ +#define DIBUTTON_SKIING_CROUCH 0x1D000402 /* crouch down */ +#define DIBUTTON_SKIING_CAMERA 0x1D000403 /* switch camera view */ +#define DIBUTTON_SKIING_SPECIAL1 0x1D000404 /* perform first special move */ +#define DIBUTTON_SKIING_SELECT 0x1D000405 /* Select */ +#define DIBUTTON_SKIING_SPECIAL2 0x1D000406 /* perform second special move */ +#define DIBUTTON_SKIING_MENU 0x1D0004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIHATSWITCH_SKIING_GLANCE 0x1D004601 /* scroll view */ +#define DIBUTTON_SKIING_ZOOM 0x1D004407 /* Zoom view in / out */ +#define DIBUTTON_SKIING_LEFT_LINK 0x1D00C4E4 /* Fallback turn left button */ +#define DIBUTTON_SKIING_RIGHT_LINK 0x1D00C4EC /* Fallback turn right button */ +#define DIBUTTON_SKIING_FASTER_LINK 0x1D0144E0 /* Fallback increase speed button */ +#define DIBUTTON_SKIING_SLOWER_LINK 0x1D0144E8 /* Fallback decrease speed button */ +#define DIBUTTON_SKIING_DEVICE 0x1D0044FE /* Show input device and controls */ +#define DIBUTTON_SKIING_PAUSE 0x1D0044FC /* Start / Pause / Restart game */ + +/*--- Sports - Soccer - Offense + Offense ---*/ +#define DIVIRTUAL_SPORTS_SOCCER_OFFENSE 0x1E000000 +#define DIAXIS_SOCCERO_LATERAL 0x1E008201 /* Move / Aim: left / right */ +#define DIAXIS_SOCCERO_MOVE 0x1E010202 /* Move / Aim: up / down */ +#define DIAXIS_SOCCERO_BEND 0x1E018203 /* Bend to soccer shot/pass */ +#define DIBUTTON_SOCCERO_SHOOT 0x1E000401 /* Shoot the ball */ +#define DIBUTTON_SOCCERO_PASS 0x1E000402 /* Pass */ +#define DIBUTTON_SOCCERO_FAKE 0x1E000403 /* Fake */ +#define DIBUTTON_SOCCERO_PLAYER 0x1E000404 /* Select next player */ +#define DIBUTTON_SOCCERO_SPECIAL1 0x1E000405 /* Apply special move */ +#define DIBUTTON_SOCCERO_SELECT 0x1E000406 /* Select special move */ +#define DIBUTTON_SOCCERO_MENU 0x1E0004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIHATSWITCH_SOCCERO_GLANCE 0x1E004601 /* scroll view */ +#define DIBUTTON_SOCCERO_SUBSTITUTE 0x1E004407 /* Substitute one player for another */ +#define DIBUTTON_SOCCERO_SHOOTLOW 0x1E004408 /* Shoot the ball low */ +#define DIBUTTON_SOCCERO_SHOOTHIGH 0x1E004409 /* Shoot the ball high */ +#define DIBUTTON_SOCCERO_PASSTHRU 0x1E00440A /* Make a thru pass */ +#define DIBUTTON_SOCCERO_SPRINT 0x1E00440B /* Sprint / turbo boost */ +#define DIBUTTON_SOCCERO_CONTROL 0x1E00440C /* Obtain control of the ball */ +#define DIBUTTON_SOCCERO_HEAD 0x1E00440D /* Attempt to head the ball */ +#define DIBUTTON_SOCCERO_LEFT_LINK 0x1E00C4E4 /* Fallback sidestep left button */ +#define DIBUTTON_SOCCERO_RIGHT_LINK 0x1E00C4EC /* Fallback sidestep right button */ +#define DIBUTTON_SOCCERO_FORWARD_LINK 0x1E0144E0 /* Fallback move forward button */ +#define DIBUTTON_SOCCERO_BACK_LINK 0x1E0144E8 /* Fallback move back button */ +#define DIBUTTON_SOCCERO_DEVICE 0x1E0044FE /* Show input device and controls */ +#define DIBUTTON_SOCCERO_PAUSE 0x1E0044FC /* Start / Pause / Restart game */ + +/*--- Sports - Soccer - Defense + Defense ---*/ +#define DIVIRTUAL_SPORTS_SOCCER_DEFENSE 0x1F000000 +#define DIAXIS_SOCCERD_LATERAL 0x1F008201 /* Move / Aim: left / right */ +#define DIAXIS_SOCCERD_MOVE 0x1F010202 /* Move / Aim: up / down */ +#define DIBUTTON_SOCCERD_BLOCK 0x1F000401 /* Attempt to block shot */ +#define DIBUTTON_SOCCERD_STEAL 0x1F000402 /* Attempt to steal ball */ +#define DIBUTTON_SOCCERD_FAKE 0x1F000403 /* Fake a block or a steal */ +#define DIBUTTON_SOCCERD_PLAYER 0x1F000404 /* Select next player */ +#define DIBUTTON_SOCCERD_SPECIAL 0x1F000405 /* Apply special move */ +#define DIBUTTON_SOCCERD_SELECT 0x1F000406 /* Select special move */ +#define DIBUTTON_SOCCERD_SLIDE 0x1F000407 /* Attempt a slide tackle */ +#define DIBUTTON_SOCCERD_MENU 0x1F0004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIHATSWITCH_SOCCERD_GLANCE 0x1F004601 /* scroll view */ +#define DIBUTTON_SOCCERD_FOUL 0x1F004408 /* Initiate a foul / hard-foul */ +#define DIBUTTON_SOCCERD_HEAD 0x1F004409 /* Attempt a Header */ +#define DIBUTTON_SOCCERD_CLEAR 0x1F00440A /* Attempt to clear the ball down the field */ +#define DIBUTTON_SOCCERD_GOALIECHARGE 0x1F00440B /* Make the goalie charge out of the box */ +#define DIBUTTON_SOCCERD_SUBSTITUTE 0x1F00440C /* Substitute one player for another */ +#define DIBUTTON_SOCCERD_LEFT_LINK 0x1F00C4E4 /* Fallback sidestep left button */ +#define DIBUTTON_SOCCERD_RIGHT_LINK 0x1F00C4EC /* Fallback sidestep right button */ +#define DIBUTTON_SOCCERD_FORWARD_LINK 0x1F0144E0 /* Fallback move forward button */ +#define DIBUTTON_SOCCERD_BACK_LINK 0x1F0144E8 /* Fallback move back button */ +#define DIBUTTON_SOCCERD_DEVICE 0x1F0044FE /* Show input device and controls */ +#define DIBUTTON_SOCCERD_PAUSE 0x1F0044FC /* Start / Pause / Restart game */ + +/*--- Sports - Racquet + Tennis - Table-Tennis - Squash ---*/ +#define DIVIRTUAL_SPORTS_RACQUET 0x20000000 +#define DIAXIS_RACQUET_LATERAL 0x20008201 /* Move / Aim: left / right */ +#define DIAXIS_RACQUET_MOVE 0x20010202 /* Move / Aim: up / down */ +#define DIBUTTON_RACQUET_SWING 0x20000401 /* Swing racquet */ +#define DIBUTTON_RACQUET_BACKSWING 0x20000402 /* Swing backhand */ +#define DIBUTTON_RACQUET_SMASH 0x20000403 /* Smash shot */ +#define DIBUTTON_RACQUET_SPECIAL 0x20000404 /* Special shot */ +#define DIBUTTON_RACQUET_SELECT 0x20000405 /* Select special shot */ +#define DIBUTTON_RACQUET_MENU 0x200004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIHATSWITCH_RACQUET_GLANCE 0x20004601 /* scroll view */ +#define DIBUTTON_RACQUET_TIMEOUT 0x20004406 /* Call for time out */ +#define DIBUTTON_RACQUET_SUBSTITUTE 0x20004407 /* Substitute one player for another */ +#define DIBUTTON_RACQUET_LEFT_LINK 0x2000C4E4 /* Fallback sidestep left button */ +#define DIBUTTON_RACQUET_RIGHT_LINK 0x2000C4EC /* Fallback sidestep right button */ +#define DIBUTTON_RACQUET_FORWARD_LINK 0x200144E0 /* Fallback move forward button */ +#define DIBUTTON_RACQUET_BACK_LINK 0x200144E8 /* Fallback move back button */ +#define DIBUTTON_RACQUET_DEVICE 0x200044FE /* Show input device and controls */ +#define DIBUTTON_RACQUET_PAUSE 0x200044FC /* Start / Pause / Restart game */ + +/*--- Arcade- 2D + Side to Side movement ---*/ +#define DIVIRTUAL_ARCADE_SIDE2SIDE 0x21000000 +#define DIAXIS_ARCADES_LATERAL 0x21008201 /* left / right */ +#define DIAXIS_ARCADES_MOVE 0x21010202 /* up / down */ +#define DIBUTTON_ARCADES_THROW 0x21000401 /* throw object */ +#define DIBUTTON_ARCADES_CARRY 0x21000402 /* carry object */ +#define DIBUTTON_ARCADES_ATTACK 0x21000403 /* attack */ +#define DIBUTTON_ARCADES_SPECIAL 0x21000404 /* apply special move */ +#define DIBUTTON_ARCADES_SELECT 0x21000405 /* select special move */ +#define DIBUTTON_ARCADES_MENU 0x210004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIHATSWITCH_ARCADES_VIEW 0x21004601 /* scroll view left / right / up / down */ +#define DIBUTTON_ARCADES_LEFT_LINK 0x2100C4E4 /* Fallback sidestep left button */ +#define DIBUTTON_ARCADES_RIGHT_LINK 0x2100C4EC /* Fallback sidestep right button */ +#define DIBUTTON_ARCADES_FORWARD_LINK 0x210144E0 /* Fallback move forward button */ +#define DIBUTTON_ARCADES_BACK_LINK 0x210144E8 /* Fallback move back button */ +#define DIBUTTON_ARCADES_VIEW_UP_LINK 0x2107C4E0 /* Fallback scroll view up button */ +#define DIBUTTON_ARCADES_VIEW_DOWN_LINK 0x2107C4E8 /* Fallback scroll view down button */ +#define DIBUTTON_ARCADES_VIEW_LEFT_LINK 0x2107C4E4 /* Fallback scroll view left button */ +#define DIBUTTON_ARCADES_VIEW_RIGHT_LINK 0x2107C4EC /* Fallback scroll view right button */ +#define DIBUTTON_ARCADES_DEVICE 0x210044FE /* Show input device and controls */ +#define DIBUTTON_ARCADES_PAUSE 0x210044FC /* Start / Pause / Restart game */ + +/*--- Arcade - Platform Game + Character moves around on screen ---*/ +#define DIVIRTUAL_ARCADE_PLATFORM 0x22000000 +#define DIAXIS_ARCADEP_LATERAL 0x22008201 /* Left / right */ +#define DIAXIS_ARCADEP_MOVE 0x22010202 /* Up / down */ +#define DIBUTTON_ARCADEP_JUMP 0x22000401 /* Jump */ +#define DIBUTTON_ARCADEP_FIRE 0x22000402 /* Fire */ +#define DIBUTTON_ARCADEP_CROUCH 0x22000403 /* Crouch */ +#define DIBUTTON_ARCADEP_SPECIAL 0x22000404 /* Apply special move */ +#define DIBUTTON_ARCADEP_SELECT 0x22000405 /* Select special move */ +#define DIBUTTON_ARCADEP_MENU 0x220004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIHATSWITCH_ARCADEP_VIEW 0x22004601 /* Scroll view */ +#define DIBUTTON_ARCADEP_FIRESECONDARY 0x22004406 /* Alternative fire button */ +#define DIBUTTON_ARCADEP_LEFT_LINK 0x2200C4E4 /* Fallback sidestep left button */ +#define DIBUTTON_ARCADEP_RIGHT_LINK 0x2200C4EC /* Fallback sidestep right button */ +#define DIBUTTON_ARCADEP_FORWARD_LINK 0x220144E0 /* Fallback move forward button */ +#define DIBUTTON_ARCADEP_BACK_LINK 0x220144E8 /* Fallback move back button */ +#define DIBUTTON_ARCADEP_VIEW_UP_LINK 0x2207C4E0 /* Fallback scroll view up button */ +#define DIBUTTON_ARCADEP_VIEW_DOWN_LINK 0x2207C4E8 /* Fallback scroll view down button */ +#define DIBUTTON_ARCADEP_VIEW_LEFT_LINK 0x2207C4E4 /* Fallback scroll view left button */ +#define DIBUTTON_ARCADEP_VIEW_RIGHT_LINK 0x2207C4EC /* Fallback scroll view right button */ +#define DIBUTTON_ARCADEP_DEVICE 0x220044FE /* Show input device and controls */ +#define DIBUTTON_ARCADEP_PAUSE 0x220044FC /* Start / Pause / Restart game */ + +/*--- CAD - 2D Object Control + Controls to select and move objects in 2D ---*/ +#define DIVIRTUAL_CAD_2DCONTROL 0x23000000 +#define DIAXIS_2DCONTROL_LATERAL 0x23008201 /* Move view left / right */ +#define DIAXIS_2DCONTROL_MOVE 0x23010202 /* Move view up / down */ +#define DIAXIS_2DCONTROL_INOUT 0x23018203 /* Zoom - in / out */ +#define DIBUTTON_2DCONTROL_SELECT 0x23000401 /* Select Object */ +#define DIBUTTON_2DCONTROL_SPECIAL1 0x23000402 /* Do first special operation */ +#define DIBUTTON_2DCONTROL_SPECIAL 0x23000403 /* Select special operation */ +#define DIBUTTON_2DCONTROL_SPECIAL2 0x23000404 /* Do second special operation */ +#define DIBUTTON_2DCONTROL_MENU 0x230004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIHATSWITCH_2DCONTROL_HATSWITCH 0x23004601 /* Hat switch */ +#define DIAXIS_2DCONTROL_ROTATEZ 0x23024204 /* Rotate view clockwise / counterclockwise */ +#define DIBUTTON_2DCONTROL_DISPLAY 0x23004405 /* Shows next on-screen display options */ +#define DIBUTTON_2DCONTROL_DEVICE 0x230044FE /* Show input device and controls */ +#define DIBUTTON_2DCONTROL_PAUSE 0x230044FC /* Start / Pause / Restart game */ + +/*--- CAD - 3D object control + Controls to select and move objects within a 3D environment ---*/ +#define DIVIRTUAL_CAD_3DCONTROL 0x24000000 +#define DIAXIS_3DCONTROL_LATERAL 0x24008201 /* Move view left / right */ +#define DIAXIS_3DCONTROL_MOVE 0x24010202 /* Move view up / down */ +#define DIAXIS_3DCONTROL_INOUT 0x24018203 /* Zoom - in / out */ +#define DIBUTTON_3DCONTROL_SELECT 0x24000401 /* Select Object */ +#define DIBUTTON_3DCONTROL_SPECIAL1 0x24000402 /* Do first special operation */ +#define DIBUTTON_3DCONTROL_SPECIAL 0x24000403 /* Select special operation */ +#define DIBUTTON_3DCONTROL_SPECIAL2 0x24000404 /* Do second special operation */ +#define DIBUTTON_3DCONTROL_MENU 0x240004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIHATSWITCH_3DCONTROL_HATSWITCH 0x24004601 /* Hat switch */ +#define DIAXIS_3DCONTROL_ROTATEX 0x24034204 /* Rotate view forward or up / backward or down */ +#define DIAXIS_3DCONTROL_ROTATEY 0x2402C205 /* Rotate view clockwise / counterclockwise */ +#define DIAXIS_3DCONTROL_ROTATEZ 0x24024206 /* Rotate view left / right */ +#define DIBUTTON_3DCONTROL_DISPLAY 0x24004405 /* Show next on-screen display options */ +#define DIBUTTON_3DCONTROL_DEVICE 0x240044FE /* Show input device and controls */ +#define DIBUTTON_3DCONTROL_PAUSE 0x240044FC /* Start / Pause / Restart game */ + +/*--- CAD - 3D Navigation - Fly through + Controls for 3D modeling ---*/ +#define DIVIRTUAL_CAD_FLYBY 0x25000000 +#define DIAXIS_CADF_LATERAL 0x25008201 /* move view left / right */ +#define DIAXIS_CADF_MOVE 0x25010202 /* move view up / down */ +#define DIAXIS_CADF_INOUT 0x25018203 /* in / out */ +#define DIBUTTON_CADF_SELECT 0x25000401 /* Select Object */ +#define DIBUTTON_CADF_SPECIAL1 0x25000402 /* do first special operation */ +#define DIBUTTON_CADF_SPECIAL 0x25000403 /* Select special operation */ +#define DIBUTTON_CADF_SPECIAL2 0x25000404 /* do second special operation */ +#define DIBUTTON_CADF_MENU 0x250004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIHATSWITCH_CADF_HATSWITCH 0x25004601 /* Hat switch */ +#define DIAXIS_CADF_ROTATEX 0x25034204 /* Rotate view forward or up / backward or down */ +#define DIAXIS_CADF_ROTATEY 0x2502C205 /* Rotate view clockwise / counterclockwise */ +#define DIAXIS_CADF_ROTATEZ 0x25024206 /* Rotate view left / right */ +#define DIBUTTON_CADF_DISPLAY 0x25004405 /* shows next on-screen display options */ +#define DIBUTTON_CADF_DEVICE 0x250044FE /* Show input device and controls */ +#define DIBUTTON_CADF_PAUSE 0x250044FC /* Start / Pause / Restart game */ + +/*--- CAD - 3D Model Control + Controls for 3D modeling ---*/ +#define DIVIRTUAL_CAD_MODEL 0x26000000 +#define DIAXIS_CADM_LATERAL 0x26008201 /* move view left / right */ +#define DIAXIS_CADM_MOVE 0x26010202 /* move view up / down */ +#define DIAXIS_CADM_INOUT 0x26018203 /* in / out */ +#define DIBUTTON_CADM_SELECT 0x26000401 /* Select Object */ +#define DIBUTTON_CADM_SPECIAL1 0x26000402 /* do first special operation */ +#define DIBUTTON_CADM_SPECIAL 0x26000403 /* Select special operation */ +#define DIBUTTON_CADM_SPECIAL2 0x26000404 /* do second special operation */ +#define DIBUTTON_CADM_MENU 0x260004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIHATSWITCH_CADM_HATSWITCH 0x26004601 /* Hat switch */ +#define DIAXIS_CADM_ROTATEX 0x26034204 /* Rotate view forward or up / backward or down */ +#define DIAXIS_CADM_ROTATEY 0x2602C205 /* Rotate view clockwise / counterclockwise */ +#define DIAXIS_CADM_ROTATEZ 0x26024206 /* Rotate view left / right */ +#define DIBUTTON_CADM_DISPLAY 0x26004405 /* shows next on-screen display options */ +#define DIBUTTON_CADM_DEVICE 0x260044FE /* Show input device and controls */ +#define DIBUTTON_CADM_PAUSE 0x260044FC /* Start / Pause / Restart game */ + +/*--- Control - Media Equipment + Remote ---*/ +#define DIVIRTUAL_REMOTE_CONTROL 0x27000000 +#define DIAXIS_REMOTE_SLIDER 0x27050201 /* Slider for adjustment: volume / color / bass / etc */ +#define DIBUTTON_REMOTE_MUTE 0x27000401 /* Set volume on current device to zero */ +#define DIBUTTON_REMOTE_SELECT 0x27000402 /* Next/previous: channel/ track / chapter / picture / station */ +#define DIBUTTON_REMOTE_PLAY 0x27002403 /* Start or pause entertainment on current device */ +#define DIBUTTON_REMOTE_CUE 0x27002404 /* Move through current media */ +#define DIBUTTON_REMOTE_REVIEW 0x27002405 /* Move through current media */ +#define DIBUTTON_REMOTE_CHANGE 0x27002406 /* Select next device */ +#define DIBUTTON_REMOTE_RECORD 0x27002407 /* Start recording the current media */ +#define DIBUTTON_REMOTE_MENU 0x270004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIAXIS_REMOTE_SLIDER2 0x27054202 /* Slider for adjustment: volume */ +#define DIBUTTON_REMOTE_TV 0x27005C08 /* Select TV */ +#define DIBUTTON_REMOTE_CABLE 0x27005C09 /* Select cable box */ +#define DIBUTTON_REMOTE_CD 0x27005C0A /* Select CD player */ +#define DIBUTTON_REMOTE_VCR 0x27005C0B /* Select VCR */ +#define DIBUTTON_REMOTE_TUNER 0x27005C0C /* Select tuner */ +#define DIBUTTON_REMOTE_DVD 0x27005C0D /* Select DVD player */ +#define DIBUTTON_REMOTE_ADJUST 0x27005C0E /* Enter device adjustment menu */ +#define DIBUTTON_REMOTE_DIGIT0 0x2700540F /* Digit 0 */ +#define DIBUTTON_REMOTE_DIGIT1 0x27005410 /* Digit 1 */ +#define DIBUTTON_REMOTE_DIGIT2 0x27005411 /* Digit 2 */ +#define DIBUTTON_REMOTE_DIGIT3 0x27005412 /* Digit 3 */ +#define DIBUTTON_REMOTE_DIGIT4 0x27005413 /* Digit 4 */ +#define DIBUTTON_REMOTE_DIGIT5 0x27005414 /* Digit 5 */ +#define DIBUTTON_REMOTE_DIGIT6 0x27005415 /* Digit 6 */ +#define DIBUTTON_REMOTE_DIGIT7 0x27005416 /* Digit 7 */ +#define DIBUTTON_REMOTE_DIGIT8 0x27005417 /* Digit 8 */ +#define DIBUTTON_REMOTE_DIGIT9 0x27005418 /* Digit 9 */ +#define DIBUTTON_REMOTE_DEVICE 0x270044FE /* Show input device and controls */ +#define DIBUTTON_REMOTE_PAUSE 0x270044FC /* Start / Pause / Restart game */ + +/*--- Control- Web + Help or Browser ---*/ +#define DIVIRTUAL_BROWSER_CONTROL 0x28000000 +#define DIAXIS_BROWSER_LATERAL 0x28008201 /* Move on screen pointer */ +#define DIAXIS_BROWSER_MOVE 0x28010202 /* Move on screen pointer */ +#define DIBUTTON_BROWSER_SELECT 0x28000401 /* Select current item */ +#define DIAXIS_BROWSER_VIEW 0x28018203 /* Move view up/down */ +#define DIBUTTON_BROWSER_REFRESH 0x28000402 /* Refresh */ +#define DIBUTTON_BROWSER_MENU 0x280004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIBUTTON_BROWSER_SEARCH 0x28004403 /* Use search tool */ +#define DIBUTTON_BROWSER_STOP 0x28004404 /* Cease current update */ +#define DIBUTTON_BROWSER_HOME 0x28004405 /* Go directly to "home" location */ +#define DIBUTTON_BROWSER_FAVORITES 0x28004406 /* Mark current site as favorite */ +#define DIBUTTON_BROWSER_NEXT 0x28004407 /* Select Next page */ +#define DIBUTTON_BROWSER_PREVIOUS 0x28004408 /* Select Previous page */ +#define DIBUTTON_BROWSER_HISTORY 0x28004409 /* Show/Hide History */ +#define DIBUTTON_BROWSER_PRINT 0x2800440A /* Print current page */ +#define DIBUTTON_BROWSER_DEVICE 0x280044FE /* Show input device and controls */ +#define DIBUTTON_BROWSER_PAUSE 0x280044FC /* Start / Pause / Restart game */ + +/*--- Driving Simulator - Giant Walking Robot + Walking tank with weapons ---*/ +#define DIVIRTUAL_DRIVING_MECHA 0x29000000 +#define DIAXIS_MECHA_STEER 0x29008201 /* Turns mecha left/right */ +#define DIAXIS_MECHA_TORSO 0x29010202 /* Tilts torso forward/backward */ +#define DIAXIS_MECHA_ROTATE 0x29020203 /* Turns torso left/right */ +#define DIAXIS_MECHA_THROTTLE 0x29038204 /* Engine Speed */ +#define DIBUTTON_MECHA_FIRE 0x29000401 /* Fire */ +#define DIBUTTON_MECHA_WEAPONS 0x29000402 /* Select next weapon group */ +#define DIBUTTON_MECHA_TARGET 0x29000403 /* Select closest enemy available target */ +#define DIBUTTON_MECHA_REVERSE 0x29000404 /* Toggles throttle in/out of reverse */ +#define DIBUTTON_MECHA_ZOOM 0x29000405 /* Zoom in/out targeting reticule */ +#define DIBUTTON_MECHA_JUMP 0x29000406 /* Fires jump jets */ +#define DIBUTTON_MECHA_MENU 0x290004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIBUTTON_MECHA_CENTER 0x29004407 /* Center torso to legs */ +#define DIHATSWITCH_MECHA_GLANCE 0x29004601 /* Look around */ +#define DIBUTTON_MECHA_VIEW 0x29004408 /* Cycle through view options */ +#define DIBUTTON_MECHA_FIRESECONDARY 0x29004409 /* Alternative fire button */ +#define DIBUTTON_MECHA_LEFT_LINK 0x2900C4E4 /* Fallback steer left button */ +#define DIBUTTON_MECHA_RIGHT_LINK 0x2900C4EC /* Fallback steer right button */ +#define DIBUTTON_MECHA_FORWARD_LINK 0x290144E0 /* Fallback tilt torso forward button */ +#define DIBUTTON_MECHA_BACK_LINK 0x290144E8 /* Fallback tilt toroso backward button */ +#define DIBUTTON_MECHA_ROTATE_LEFT_LINK 0x290244E4 /* Fallback rotate toroso right button */ +#define DIBUTTON_MECHA_ROTATE_RIGHT_LINK 0x290244EC /* Fallback rotate torso left button */ +#define DIBUTTON_MECHA_FASTER_LINK 0x2903C4E0 /* Fallback increase engine speed */ +#define DIBUTTON_MECHA_SLOWER_LINK 0x2903C4E8 /* Fallback decrease engine speed */ +#define DIBUTTON_MECHA_DEVICE 0x290044FE /* Show input device and controls */ +#define DIBUTTON_MECHA_PAUSE 0x290044FC /* Start / Pause / Restart game */ + +/* + * "ANY" semantics can be used as a last resort to get mappings for actions + * that match nothing in the chosen virtual genre. These semantics will be + * mapped at a lower priority that virtual genre semantics. Also, hardware + * vendors will not be able to provide sensible mappings for these unless + * they provide application specific mappings. + */ +#define DIAXIS_ANY_X_1 0xFF00C201 +#define DIAXIS_ANY_X_2 0xFF00C202 +#define DIAXIS_ANY_Y_1 0xFF014201 +#define DIAXIS_ANY_Y_2 0xFF014202 +#define DIAXIS_ANY_Z_1 0xFF01C201 +#define DIAXIS_ANY_Z_2 0xFF01C202 +#define DIAXIS_ANY_R_1 0xFF024201 +#define DIAXIS_ANY_R_2 0xFF024202 +#define DIAXIS_ANY_U_1 0xFF02C201 +#define DIAXIS_ANY_U_2 0xFF02C202 +#define DIAXIS_ANY_V_1 0xFF034201 +#define DIAXIS_ANY_V_2 0xFF034202 +#define DIAXIS_ANY_A_1 0xFF03C201 +#define DIAXIS_ANY_A_2 0xFF03C202 +#define DIAXIS_ANY_B_1 0xFF044201 +#define DIAXIS_ANY_B_2 0xFF044202 +#define DIAXIS_ANY_C_1 0xFF04C201 +#define DIAXIS_ANY_C_2 0xFF04C202 +#define DIAXIS_ANY_S_1 0xFF054201 +#define DIAXIS_ANY_S_2 0xFF054202 + +#define DIAXIS_ANY_1 0xFF004201 +#define DIAXIS_ANY_2 0xFF004202 +#define DIAXIS_ANY_3 0xFF004203 +#define DIAXIS_ANY_4 0xFF004204 + +#define DIPOV_ANY_1 0xFF004601 +#define DIPOV_ANY_2 0xFF004602 +#define DIPOV_ANY_3 0xFF004603 +#define DIPOV_ANY_4 0xFF004604 + +#define DIBUTTON_ANY(instance) ( 0xFF004400 | instance ) + + +#ifdef __cplusplus +}; +#endif + +#endif /* __DINPUT_INCLUDED__ */ + +/**************************************************************************** + * + * Definitions for non-IDirectInput (VJoyD) features defined more recently + * than the current sdk files + * + ****************************************************************************/ + +#ifdef _INC_MMSYSTEM +#ifndef MMNOJOY + +#ifndef __VJOYDX_INCLUDED__ +#define __VJOYDX_INCLUDED__ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Flag to indicate that the dwReserved2 field of the JOYINFOEX structure + * contains mini-driver specific data to be passed by VJoyD to the mini- + * driver instead of doing a poll. + */ +#define JOY_PASSDRIVERDATA 0x10000000l + +/* + * Informs the joystick driver that the configuration has been changed + * and should be reloaded from the registery. + * dwFlags is reserved and should be set to zero + */ +WINMMAPI MMRESULT WINAPI joyConfigChanged( DWORD dwFlags ); + +#ifndef DIJ_RINGZERO +/* + * Invoke the joystick control panel directly, using the passed window handle + * as the parent of the dialog. This API is only supported for compatibility + * purposes; new applications should use the RunControlPanel method of a + * device interface for a game controller. + * The API is called by using the function pointer returned by + * GetProcAddress( hCPL, TEXT("ShowJoyCPL") ) where hCPL is a HMODULE returned + * by LoadLibrary( TEXT("joy.cpl") ). The typedef is provided to allow + * declaration and casting of an appropriately typed variable. + */ +void WINAPI ShowJoyCPL( HWND hWnd ); +typedef void (WINAPI* LPFNSHOWJOYCPL)( HWND hWnd ); +#endif /* DIJ_RINGZERO */ + + +/* + * Hardware Setting indicating that the device is a headtracker + */ +#define JOY_HWS_ISHEADTRACKER 0x02000000l + +/* + * Hardware Setting indicating that the VxD is used to replace + * the standard analog polling + */ +#define JOY_HWS_ISGAMEPORTDRIVER 0x04000000l + +/* + * Hardware Setting indicating that the driver needs a standard + * gameport in order to communicate with the device. + */ +#define JOY_HWS_ISANALOGPORTDRIVER 0x08000000l + +/* + * Hardware Setting indicating that VJoyD should not load this + * driver, it will be loaded externally and will register with + * VJoyD of it's own accord. + */ +#define JOY_HWS_AUTOLOAD 0x10000000l + +/* + * Hardware Setting indicating that the driver acquires any + * resources needed without needing a devnode through VJoyD. + */ +#define JOY_HWS_NODEVNODE 0x20000000l + + +/* + * Hardware Setting indicating that the device is a gameport bus + */ +#define JOY_HWS_ISGAMEPORTBUS 0x80000000l +#define JOY_HWS_GAMEPORTBUSBUSY 0x00000001l + +/* + * Usage Setting indicating that the settings are volatile and + * should be removed if still present on a reboot. + */ +#define JOY_US_VOLATILE 0x00000008L + +#ifdef __cplusplus +}; +#endif + +#endif /* __VJOYDX_INCLUDED__ */ + +#endif /* not MMNOJOY */ +#endif /* _INC_MMSYSTEM */ + +/**************************************************************************** + * + * Definitions for non-IDirectInput (VJoyD) features defined more recently + * than the current ddk files + * + ****************************************************************************/ + +#ifndef DIJ_RINGZERO + +#ifdef _INC_MMDDK +#ifndef MMNOJOYDEV + +#ifndef __VJOYDXD_INCLUDED__ +#define __VJOYDXD_INCLUDED__ +/* + * Poll type in which the do_other field of the JOYOEMPOLLDATA + * structure contains mini-driver specific data passed from an app. + */ +#define JOY_OEMPOLL_PASSDRIVERDATA 7 + +#endif /* __VJOYDXD_INCLUDED__ */ + +#endif /* not MMNOJOYDEV */ +#endif /* _INC_MMDDK */ + +#endif /* DIJ_RINGZERO */ + diff --git a/videoInputSrcAndDemos/libs/DShow/Include/dinputd.h b/videoInputSrcAndDemos/libs/DShow/Include/dinputd.h index d27039a..f534353 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/dinputd.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/dinputd.h @@ -1,755 +1,755 @@ -/**************************************************************************** - * - * Copyright (C) 1995-2000 Microsoft Corporation. All Rights Reserved. - * - * File: dinputd.h - * Content: DirectInput include file for device driver implementors - * - ****************************************************************************/ -#ifndef __DINPUTD_INCLUDED__ -#define __DINPUTD_INCLUDED__ - -#ifndef DIRECTINPUT_VERSION -#define DIRECTINPUT_VERSION 0x0800 -#pragma message(__FILE__ ": DIRECTINPUT_VERSION undefined. Defaulting to version 0x0800") -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -/**************************************************************************** - * - * Interfaces - * - ****************************************************************************/ - -#ifndef DIJ_RINGZERO - -DEFINE_GUID(IID_IDirectInputEffectDriver, 0x02538130,0x898F,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); -DEFINE_GUID(IID_IDirectInputJoyConfig, 0x1DE12AB1,0xC9F5,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); -DEFINE_GUID(IID_IDirectInputPIDDriver, 0xEEC6993A,0xB3FD,0x11D2,0xA9,0x16,0x00,0xC0,0x4F,0xB9,0x86,0x38); - -DEFINE_GUID(IID_IDirectInputJoyConfig8, 0xeb0d7dfa,0x1990,0x4f27,0xb4,0xd6,0xed,0xf2,0xee,0xc4,0xa4,0x4c); - -#endif /* DIJ_RINGZERO */ - - -/**************************************************************************** - * - * IDirectInputEffectDriver - * - ****************************************************************************/ - -typedef struct DIOBJECTATTRIBUTES { - DWORD dwFlags; - WORD wUsagePage; - WORD wUsage; -} DIOBJECTATTRIBUTES, *LPDIOBJECTATTRIBUTES; -typedef const DIOBJECTATTRIBUTES *LPCDIOBJECTATTRIBUTES; - -typedef struct DIFFOBJECTATTRIBUTES { - DWORD dwFFMaxForce; - DWORD dwFFForceResolution; -} DIFFOBJECTATTRIBUTES, *LPDIFFOBJECTATTRIBUTES; -typedef const DIFFOBJECTATTRIBUTES *LPCDIFFOBJECTATTRIBUTES; - -typedef struct DIOBJECTCALIBRATION { - LONG lMin; - LONG lCenter; - LONG lMax; -} DIOBJECTCALIBRATION, *LPDIOBJECTCALIBRATION; -typedef const DIOBJECTCALIBRATION *LPCDIOBJECTCALIBRATION; - -typedef struct DIPOVCALIBRATION { - LONG lMin[5]; - LONG lMax[5]; -} DIPOVCALIBRATION, *LPDIPOVCALIBRATION; -typedef const DIPOVCALIBRATION *LPCDIPOVCALIBRATION; - -typedef struct DIEFFECTATTRIBUTES { - DWORD dwEffectId; - DWORD dwEffType; - DWORD dwStaticParams; - DWORD dwDynamicParams; - DWORD dwCoords; -} DIEFFECTATTRIBUTES, *LPDIEFFECTATTRIBUTES; -typedef const DIEFFECTATTRIBUTES *LPCDIEFFECTATTRIBUTES; - -typedef struct DIFFDEVICEATTRIBUTES { - DWORD dwFlags; - DWORD dwFFSamplePeriod; - DWORD dwFFMinTimeResolution; -} DIFFDEVICEATTRIBUTES, *LPDIFFDEVICEATTRIBUTES; -typedef const DIFFDEVICEATTRIBUTES *LPCDIFFDEVICEATTRIBUTES; - -typedef struct DIDRIVERVERSIONS { - DWORD dwSize; - DWORD dwFirmwareRevision; - DWORD dwHardwareRevision; - DWORD dwFFDriverVersion; -} DIDRIVERVERSIONS, *LPDIDRIVERVERSIONS; -typedef const DIDRIVERVERSIONS *LPCDIDRIVERVERSIONS; - -typedef struct DIDEVICESTATE { - DWORD dwSize; - DWORD dwState; - DWORD dwLoad; -} DIDEVICESTATE, *LPDIDEVICESTATE; - -#define DEV_STS_EFFECT_RUNNING DIEGES_PLAYING - -#ifndef DIJ_RINGZERO - -typedef struct DIHIDFFINITINFO { - DWORD dwSize; - LPWSTR pwszDeviceInterface; - GUID GuidInstance; -} DIHIDFFINITINFO, *LPDIHIDFFINITINFO; - -#undef INTERFACE -#define INTERFACE IDirectInputEffectDriver - -DECLARE_INTERFACE_(IDirectInputEffectDriver, IUnknown) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - - /*** IDirectInputEffectDriver methods ***/ - STDMETHOD(DeviceID)(THIS_ DWORD,DWORD,DWORD,DWORD,LPVOID) PURE; - STDMETHOD(GetVersions)(THIS_ LPDIDRIVERVERSIONS) PURE; - STDMETHOD(Escape)(THIS_ DWORD,DWORD,LPDIEFFESCAPE) PURE; - STDMETHOD(SetGain)(THIS_ DWORD,DWORD) PURE; - STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD,DWORD) PURE; - STDMETHOD(GetForceFeedbackState)(THIS_ DWORD,LPDIDEVICESTATE) PURE; - STDMETHOD(DownloadEffect)(THIS_ DWORD,DWORD,LPDWORD,LPCDIEFFECT,DWORD) PURE; - STDMETHOD(DestroyEffect)(THIS_ DWORD,DWORD) PURE; - STDMETHOD(StartEffect)(THIS_ DWORD,DWORD,DWORD,DWORD) PURE; - STDMETHOD(StopEffect)(THIS_ DWORD,DWORD) PURE; - STDMETHOD(GetEffectStatus)(THIS_ DWORD,DWORD,LPDWORD) PURE; -}; - -typedef struct IDirectInputEffectDriver *LPDIRECTINPUTEFFECTDRIVER; - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectInputEffectDriver_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IDirectInputEffectDriver_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDirectInputEffectDriver_Release(p) (p)->lpVtbl->Release(p) -#define IDirectInputEffectDriver_DeviceID(p,a,b,c,d,e) (p)->lpVtbl->DeviceID(p,a,b,c,d,e) -#define IDirectInputEffectDriver_GetVersions(p,a) (p)->lpVtbl->GetVersions(p,a) -#define IDirectInputEffectDriver_Escape(p,a,b,c) (p)->lpVtbl->Escape(p,a,b,c) -#define IDirectInputEffectDriver_SetGain(p,a,b) (p)->lpVtbl->SetGain(p,a,b) -#define IDirectInputEffectDriver_SendForceFeedbackCommand(p,a,b) (p)->lpVtbl->SendForceFeedbackCommand(p,a,b) -#define IDirectInputEffectDriver_GetForceFeedbackState(p,a,b) (p)->lpVtbl->GetForceFeedbackState(p,a,b) -#define IDirectInputEffectDriver_DownloadEffect(p,a,b,c,d,e) (p)->lpVtbl->DownloadEffect(p,a,b,c,d,e) -#define IDirectInputEffectDriver_DestroyEffect(p,a,b) (p)->lpVtbl->DestroyEffect(p,a,b) -#define IDirectInputEffectDriver_StartEffect(p,a,b,c,d) (p)->lpVtbl->StartEffect(p,a,b,c,d) -#define IDirectInputEffectDriver_StopEffect(p,a,b) (p)->lpVtbl->StopEffect(p,a,b) -#define IDirectInputEffectDriver_GetEffectStatus(p,a,b,c) (p)->lpVtbl->GetEffectStatus(p,a,b,c) -#else -#define IDirectInputEffectDriver_QueryInterface(p,a,b) (p)->QueryInterface(a,b) -#define IDirectInputEffectDriver_AddRef(p) (p)->AddRef() -#define IDirectInputEffectDriver_Release(p) (p)->Release() -#define IDirectInputEffectDriver_DeviceID(p,a,b,c,d,e) (p)->DeviceID(a,b,c,d,e) -#define IDirectInputEffectDriver_GetVersions(p,a) (p)->GetVersions(a) -#define IDirectInputEffectDriver_Escape(p,a,b,c) (p)->Escape(a,b,c) -#define IDirectInputEffectDriver_SetGain(p,a,b) (p)->SetGain(a,b) -#define IDirectInputEffectDriver_SendForceFeedbackCommand(p,a,b) (p)->SendForceFeedbackCommand(a,b) -#define IDirectInputEffectDriver_GetForceFeedbackState(p,a,b) (p)->GetForceFeedbackState(a,b) -#define IDirectInputEffectDriver_DownloadEffect(p,a,b,c,d,e) (p)->DownloadEffect(a,b,c,d,e) -#define IDirectInputEffectDriver_DestroyEffect(p,a,b) (p)->DestroyEffect(a,b) -#define IDirectInputEffectDriver_StartEffect(p,a,b,c,d) (p)->StartEffect(a,b,c,d) -#define IDirectInputEffectDriver_StopEffect(p,a,b) (p)->StopEffect(a,b) -#define IDirectInputEffectDriver_GetEffectStatus(p,a,b,c) (p)->GetEffectStatus(a,b,c) -#endif - - -#endif /* DIJ_RINGZERO */ - - -/**************************************************************************** - * - * IDirectInputJoyConfig - * - ****************************************************************************/ - -/**************************************************************************** - * - * Definitions copied from the DDK - * - ****************************************************************************/ - -#ifndef JOY_HW_NONE - -/* pre-defined joystick types */ -#define JOY_HW_NONE 0 -#define JOY_HW_CUSTOM 1 -#define JOY_HW_2A_2B_GENERIC 2 -#define JOY_HW_2A_4B_GENERIC 3 -#define JOY_HW_2B_GAMEPAD 4 -#define JOY_HW_2B_FLIGHTYOKE 5 -#define JOY_HW_2B_FLIGHTYOKETHROTTLE 6 -#define JOY_HW_3A_2B_GENERIC 7 -#define JOY_HW_3A_4B_GENERIC 8 -#define JOY_HW_4B_GAMEPAD 9 -#define JOY_HW_4B_FLIGHTYOKE 10 -#define JOY_HW_4B_FLIGHTYOKETHROTTLE 11 -#define JOY_HW_TWO_2A_2B_WITH_Y 12 -#define JOY_HW_LASTENTRY 13 - - -/* calibration flags */ -#define JOY_ISCAL_XY 0x00000001l /* XY are calibrated */ -#define JOY_ISCAL_Z 0x00000002l /* Z is calibrated */ -#define JOY_ISCAL_R 0x00000004l /* R is calibrated */ -#define JOY_ISCAL_U 0x00000008l /* U is calibrated */ -#define JOY_ISCAL_V 0x00000010l /* V is calibrated */ -#define JOY_ISCAL_POV 0x00000020l /* POV is calibrated */ - -/* point of view constants */ -#define JOY_POV_NUMDIRS 4 -#define JOY_POVVAL_FORWARD 0 -#define JOY_POVVAL_BACKWARD 1 -#define JOY_POVVAL_LEFT 2 -#define JOY_POVVAL_RIGHT 3 - -/* Specific settings for joystick hardware */ -#define JOY_HWS_HASZ 0x00000001l /* has Z info? */ -#define JOY_HWS_HASPOV 0x00000002l /* point of view hat present */ -#define JOY_HWS_POVISBUTTONCOMBOS 0x00000004l /* pov done through combo of buttons */ -#define JOY_HWS_POVISPOLL 0x00000008l /* pov done through polling */ -#define JOY_HWS_ISYOKE 0x00000010l /* joystick is a flight yoke */ -#define JOY_HWS_ISGAMEPAD 0x00000020l /* joystick is a game pad */ -#define JOY_HWS_ISCARCTRL 0x00000040l /* joystick is a car controller */ -/* X defaults to J1 X axis */ -#define JOY_HWS_XISJ1Y 0x00000080l /* X is on J1 Y axis */ -#define JOY_HWS_XISJ2X 0x00000100l /* X is on J2 X axis */ -#define JOY_HWS_XISJ2Y 0x00000200l /* X is on J2 Y axis */ -/* Y defaults to J1 Y axis */ -#define JOY_HWS_YISJ1X 0x00000400l /* Y is on J1 X axis */ -#define JOY_HWS_YISJ2X 0x00000800l /* Y is on J2 X axis */ -#define JOY_HWS_YISJ2Y 0x00001000l /* Y is on J2 Y axis */ -/* Z defaults to J2 Y axis */ -#define JOY_HWS_ZISJ1X 0x00002000l /* Z is on J1 X axis */ -#define JOY_HWS_ZISJ1Y 0x00004000l /* Z is on J1 Y axis */ -#define JOY_HWS_ZISJ2X 0x00008000l /* Z is on J2 X axis */ -/* POV defaults to J2 Y axis, if it is not button based */ -#define JOY_HWS_POVISJ1X 0x00010000l /* pov done through J1 X axis */ -#define JOY_HWS_POVISJ1Y 0x00020000l /* pov done through J1 Y axis */ -#define JOY_HWS_POVISJ2X 0x00040000l /* pov done through J2 X axis */ -/* R defaults to J2 X axis */ -#define JOY_HWS_HASR 0x00080000l /* has R (4th axis) info */ -#define JOY_HWS_RISJ1X 0x00100000l /* R done through J1 X axis */ -#define JOY_HWS_RISJ1Y 0x00200000l /* R done through J1 Y axis */ -#define JOY_HWS_RISJ2Y 0x00400000l /* R done through J2 X axis */ -/* U & V for future hardware */ -#define JOY_HWS_HASU 0x00800000l /* has U (5th axis) info */ -#define JOY_HWS_HASV 0x01000000l /* has V (6th axis) info */ - -/* Usage settings */ -#define JOY_US_HASRUDDER 0x00000001l /* joystick configured with rudder */ -#define JOY_US_PRESENT 0x00000002l /* is joystick actually present? */ -#define JOY_US_ISOEM 0x00000004l /* joystick is an OEM defined type */ - -/* reserved for future use -> as link to next possible dword */ -#define JOY_US_RESERVED 0x80000000l /* reserved */ - - -/* Settings for TypeInfo Flags1 */ -#define JOYTYPE_ZEROGAMEENUMOEMDATA 0x00000001l /* Zero GameEnum's OEM data field */ -#define JOYTYPE_NOAUTODETECTGAMEPORT 0x00000002l /* Device does not support Autodetect gameport*/ -#define JOYTYPE_NOHIDDIRECT 0x00000004l /* Do not use HID directly for this device */ -#define JOYTYPE_ANALOGCOMPAT 0x00000008l /* Expose the analog compatible ID */ -#define JOYTYPE_DEFAULTPROPSHEET 0x80000000l /* CPL overrides custom property sheet */ - -/* Settings for TypeInfo Flags2 */ -#define JOYTYPE_DEVICEHIDE 0x00010000l /* Hide unclassified devices */ -#define JOYTYPE_MOUSEHIDE 0x00020000l /* Hide mice */ -#define JOYTYPE_KEYBHIDE 0x00040000l /* Hide keyboards */ -#define JOYTYPE_GAMEHIDE 0x00080000l /* Hide game controllers */ -#define JOYTYPE_HIDEACTIVE 0x00100000l /* Hide flags are active */ -#define JOYTYPE_INFOMASK 0x00E00000l /* Mask for type specific info */ -#define JOYTYPE_INFODEFAULT 0x00000000l /* Use default axis mappings */ -#define JOYTYPE_INFOYYPEDALS 0x00200000l /* Use Y as a combined pedals axis */ -#define JOYTYPE_INFOZYPEDALS 0x00400000l /* Use Z for accelerate, Y for brake */ -#define JOYTYPE_INFOYRPEDALS 0x00600000l /* Use Y for accelerate, R for brake */ -#define JOYTYPE_INFOZRPEDALS 0x00800000l /* Use Z for accelerate, R for brake */ -#define JOYTYPE_INFOZISSLIDER 0x00200000l /* Use Z as a slider */ -#define JOYTYPE_INFOZISZ 0x00400000l /* Use Z as Z axis */ -#define JOYTYPE_ENABLEINPUTREPORT 0x01000000l /* Enable initial input reports */ - -/* struct for storing x,y, z, and rudder values */ -typedef struct joypos_tag { - DWORD dwX; - DWORD dwY; - DWORD dwZ; - DWORD dwR; - DWORD dwU; - DWORD dwV; -} JOYPOS, FAR *LPJOYPOS; - -/* struct for storing ranges */ -typedef struct joyrange_tag { - JOYPOS jpMin; - JOYPOS jpMax; - JOYPOS jpCenter; -} JOYRANGE,FAR *LPJOYRANGE; - -/* - * dwTimeout - value at which to timeout joystick polling - * jrvRanges - range of values app wants returned for axes - * jpDeadZone - area around center to be considered - * as "dead". specified as a percentage - * (0-100). Only X & Y handled by system driver - */ -typedef struct joyreguservalues_tag { - DWORD dwTimeOut; - JOYRANGE jrvRanges; - JOYPOS jpDeadZone; -} JOYREGUSERVALUES, FAR *LPJOYREGUSERVALUES; - -typedef struct joyreghwsettings_tag { - DWORD dwFlags; - DWORD dwNumButtons; -} JOYREGHWSETTINGS, FAR *LPJOYHWSETTINGS; - -/* range of values returned by the hardware (filled in by calibration) */ -/* - * jrvHardware - values returned by hardware - * dwPOVValues - POV values returned by hardware - * dwCalFlags - what has been calibrated - */ -typedef struct joyreghwvalues_tag { - JOYRANGE jrvHardware; - DWORD dwPOVValues[JOY_POV_NUMDIRS]; - DWORD dwCalFlags; -} JOYREGHWVALUES, FAR *LPJOYREGHWVALUES; - -/* hardware configuration */ -/* - * hws - hardware settings - * dwUsageSettings - usage settings - * hwv - values returned by hardware - * dwType - type of joystick - * dwReserved - reserved for OEM drivers - */ -typedef struct joyreghwconfig_tag { - JOYREGHWSETTINGS hws; - DWORD dwUsageSettings; - JOYREGHWVALUES hwv; - DWORD dwType; - DWORD dwReserved; -} JOYREGHWCONFIG, FAR *LPJOYREGHWCONFIG; - -/* joystick calibration info structure */ -typedef struct joycalibrate_tag { - UINT wXbase; - UINT wXdelta; - UINT wYbase; - UINT wYdelta; - UINT wZbase; - UINT wZdelta; -} JOYCALIBRATE; -typedef JOYCALIBRATE FAR *LPJOYCALIBRATE; - -#endif - -#ifndef DIJ_RINGZERO - -#define MAX_JOYSTRING 256 -typedef BOOL (FAR PASCAL * LPDIJOYTYPECALLBACK)(LPCWSTR, LPVOID); - -#ifndef MAX_JOYSTICKOEMVXDNAME -#define MAX_JOYSTICKOEMVXDNAME 260 -#endif - -#define DITC_REGHWSETTINGS 0x00000001 -#define DITC_CLSIDCONFIG 0x00000002 -#define DITC_DISPLAYNAME 0x00000004 -#define DITC_CALLOUT 0x00000008 -#define DITC_HARDWAREID 0x00000010 -#define DITC_FLAGS1 0x00000020 -#define DITC_FLAGS2 0x00000040 -#define DITC_MAPFILE 0x00000080 - - - -/* This structure is defined for DirectX 5.0 compatibility */ - -typedef struct DIJOYTYPEINFO_DX5 { - DWORD dwSize; - JOYREGHWSETTINGS hws; - CLSID clsidConfig; - WCHAR wszDisplayName[MAX_JOYSTRING]; - WCHAR wszCallout[MAX_JOYSTICKOEMVXDNAME]; -} DIJOYTYPEINFO_DX5, *LPDIJOYTYPEINFO_DX5; -typedef const DIJOYTYPEINFO_DX5 *LPCDIJOYTYPEINFO_DX5; - -/* This structure is defined for DirectX 6.1 compatibility */ -typedef struct DIJOYTYPEINFO_DX6 { - DWORD dwSize; - JOYREGHWSETTINGS hws; - CLSID clsidConfig; - WCHAR wszDisplayName[MAX_JOYSTRING]; - WCHAR wszCallout[MAX_JOYSTICKOEMVXDNAME]; - WCHAR wszHardwareId[MAX_JOYSTRING]; - DWORD dwFlags1; -} DIJOYTYPEINFO_DX6, *LPDIJOYTYPEINFO_DX6; -typedef const DIJOYTYPEINFO_DX6 *LPCDIJOYTYPEINFO_DX6; - -typedef struct DIJOYTYPEINFO { - DWORD dwSize; - JOYREGHWSETTINGS hws; - CLSID clsidConfig; - WCHAR wszDisplayName[MAX_JOYSTRING]; - WCHAR wszCallout[MAX_JOYSTICKOEMVXDNAME]; -#if(DIRECTINPUT_VERSION >= 0x05b2) - WCHAR wszHardwareId[MAX_JOYSTRING]; - DWORD dwFlags1; -#if(DIRECTINPUT_VERSION >= 0x0800) - DWORD dwFlags2; - WCHAR wszMapFile[MAX_JOYSTRING]; -#endif /* DIRECTINPUT_VERSION >= 0x0800 */ -#endif /* DIRECTINPUT_VERSION >= 0x05b2 */ -} DIJOYTYPEINFO, *LPDIJOYTYPEINFO; -typedef const DIJOYTYPEINFO *LPCDIJOYTYPEINFO; -#define DIJC_GUIDINSTANCE 0x00000001 -#define DIJC_REGHWCONFIGTYPE 0x00000002 -#define DIJC_GAIN 0x00000004 -#define DIJC_CALLOUT 0x00000008 -#define DIJC_WDMGAMEPORT 0x00000010 - -/* This structure is defined for DirectX 5.0 compatibility */ - -typedef struct DIJOYCONFIG_DX5 { - DWORD dwSize; - GUID guidInstance; - JOYREGHWCONFIG hwc; - DWORD dwGain; - WCHAR wszType[MAX_JOYSTRING]; - WCHAR wszCallout[MAX_JOYSTRING]; -} DIJOYCONFIG_DX5, *LPDIJOYCONFIG_DX5; -typedef const DIJOYCONFIG_DX5 *LPCDIJOYCONFIG_DX5; - -typedef struct DIJOYCONFIG { - DWORD dwSize; - GUID guidInstance; - JOYREGHWCONFIG hwc; - DWORD dwGain; - WCHAR wszType[MAX_JOYSTRING]; - WCHAR wszCallout[MAX_JOYSTRING]; -#if(DIRECTINPUT_VERSION >= 0x05b2) - GUID guidGameport; -#endif /* DIRECTINPUT_VERSION >= 0x05b2 */ - } DIJOYCONFIG, *LPDIJOYCONFIG; -typedef const DIJOYCONFIG *LPCDIJOYCONFIG; - - -#define DIJU_USERVALUES 0x00000001 -#define DIJU_GLOBALDRIVER 0x00000002 -#define DIJU_GAMEPORTEMULATOR 0x00000004 - -typedef struct DIJOYUSERVALUES { - DWORD dwSize; - JOYREGUSERVALUES ruv; - WCHAR wszGlobalDriver[MAX_JOYSTRING]; - WCHAR wszGameportEmulator[MAX_JOYSTRING]; -} DIJOYUSERVALUES, *LPDIJOYUSERVALUES; -typedef const DIJOYUSERVALUES *LPCDIJOYUSERVALUES; - -DEFINE_GUID(GUID_KeyboardClass, 0x4D36E96B,0xE325,0x11CE,0xBF,0xC1,0x08,0x00,0x2B,0xE1,0x03,0x18); -DEFINE_GUID(GUID_MediaClass, 0x4D36E96C,0xE325,0x11CE,0xBF,0xC1,0x08,0x00,0x2B,0xE1,0x03,0x18); -DEFINE_GUID(GUID_MouseClass, 0x4D36E96F,0xE325,0x11CE,0xBF,0xC1,0x08,0x00,0x2B,0xE1,0x03,0x18); -DEFINE_GUID(GUID_HIDClass, 0x745A17A0,0x74D3,0x11D0,0xB6,0xFE,0x00,0xA0,0xC9,0x0F,0x57,0xDA); - -#undef INTERFACE -#define INTERFACE IDirectInputJoyConfig - -DECLARE_INTERFACE_(IDirectInputJoyConfig, IUnknown) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - - /*** IDirectInputJoyConfig methods ***/ - STDMETHOD(Acquire)(THIS) PURE; - STDMETHOD(Unacquire)(THIS) PURE; - STDMETHOD(SetCooperativeLevel)(THIS_ HWND,DWORD) PURE; - STDMETHOD(SendNotify)(THIS) PURE; - STDMETHOD(EnumTypes)(THIS_ LPDIJOYTYPECALLBACK,LPVOID) PURE; - STDMETHOD(GetTypeInfo)(THIS_ LPCWSTR,LPDIJOYTYPEINFO,DWORD) PURE; - STDMETHOD(SetTypeInfo)(THIS_ LPCWSTR,LPCDIJOYTYPEINFO,DWORD) PURE; - STDMETHOD(DeleteType)(THIS_ LPCWSTR) PURE; - STDMETHOD(GetConfig)(THIS_ UINT,LPDIJOYCONFIG,DWORD) PURE; - STDMETHOD(SetConfig)(THIS_ UINT,LPCDIJOYCONFIG,DWORD) PURE; - STDMETHOD(DeleteConfig)(THIS_ UINT) PURE; - STDMETHOD(GetUserValues)(THIS_ LPDIJOYUSERVALUES,DWORD) PURE; - STDMETHOD(SetUserValues)(THIS_ LPCDIJOYUSERVALUES,DWORD) PURE; - STDMETHOD(AddNewHardware)(THIS_ HWND,REFGUID) PURE; - STDMETHOD(OpenTypeKey)(THIS_ LPCWSTR,DWORD,PHKEY) PURE; - STDMETHOD(OpenConfigKey)(THIS_ UINT,DWORD,PHKEY) PURE; -}; - -typedef struct IDirectInputJoyConfig *LPDIRECTINPUTJOYCONFIG; - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectInputJoyConfig_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IDirectInputJoyConfig_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDirectInputJoyConfig_Release(p) (p)->lpVtbl->Release(p) -#define IDirectInputJoyConfig_Acquire(p) (p)->lpVtbl->Acquire(p) -#define IDirectInputJoyConfig_Unacquire(p) (p)->lpVtbl->Unacquire(p) -#define IDirectInputJoyConfig_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b) -#define IDirectInputJoyConfig_SendNotify(p) (p)->lpVtbl->SendNotify(p) -#define IDirectInputJoyConfig_EnumTypes(p,a,b) (p)->lpVtbl->EnumTypes(p,a,b) -#define IDirectInputJoyConfig_GetTypeInfo(p,a,b,c) (p)->lpVtbl->GetTypeInfo(p,a,b,c) -#define IDirectInputJoyConfig_SetTypeInfo(p,a,b,c) (p)->lpVtbl->SetTypeInfo(p,a,b,c) -#define IDirectInputJoyConfig_DeleteType(p,a) (p)->lpVtbl->DeleteType(p,a) -#define IDirectInputJoyConfig_GetConfig(p,a,b,c) (p)->lpVtbl->GetConfig(p,a,b,c) -#define IDirectInputJoyConfig_SetConfig(p,a,b,c) (p)->lpVtbl->SetConfig(p,a,b,c) -#define IDirectInputJoyConfig_DeleteConfig(p,a) (p)->lpVtbl->DeleteConfig(p,a) -#define IDirectInputJoyConfig_GetUserValues(p,a,b) (p)->lpVtbl->GetUserValues(p,a,b) -#define IDirectInputJoyConfig_SetUserValues(p,a,b) (p)->lpVtbl->SetUserValues(p,a,b) -#define IDirectInputJoyConfig_AddNewHardware(p,a,b) (p)->lpVtbl->AddNewHardware(p,a,b) -#define IDirectInputJoyConfig_OpenTypeKey(p,a,b,c) (p)->lpVtbl->OpenTypeKey(p,a,b,c) -#define IDirectInputJoyConfig_OpenConfigKey(p,a,b,c) (p)->lpVtbl->OpenConfigKey(p,a,b,c) -#else -#define IDirectInputJoyConfig_QueryInterface(p,a,b) (p)->QueryInterface(a,b) -#define IDirectInputJoyConfig_AddRef(p) (p)->AddRef() -#define IDirectInputJoyConfig_Release(p) (p)->Release() -#define IDirectInputJoyConfig_Acquire(p) (p)->Acquire() -#define IDirectInputJoyConfig_Unacquire(p) (p)->Unacquire() -#define IDirectInputJoyConfig_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b) -#define IDirectInputJoyConfig_SendNotify(p) (p)->SendNotify() -#define IDirectInputJoyConfig_EnumTypes(p,a,b) (p)->EnumTypes(a,b) -#define IDirectInputJoyConfig_GetTypeInfo(p,a,b,c) (p)->GetTypeInfo(a,b,c) -#define IDirectInputJoyConfig_SetTypeInfo(p,a,b,c) (p)->SetTypeInfo(a,b,c) -#define IDirectInputJoyConfig_DeleteType(p,a) (p)->DeleteType(a) -#define IDirectInputJoyConfig_GetConfig(p,a,b,c) (p)->GetConfig(a,b,c) -#define IDirectInputJoyConfig_SetConfig(p,a,b,c) (p)->SetConfig(a,b,c) -#define IDirectInputJoyConfig_DeleteConfig(p,a) (p)->DeleteConfig(a) -#define IDirectInputJoyConfig_GetUserValues(p,a,b) (p)->GetUserValues(a,b) -#define IDirectInputJoyConfig_SetUserValues(p,a,b) (p)->SetUserValues(a,b) -#define IDirectInputJoyConfig_AddNewHardware(p,a,b) (p)->AddNewHardware(a,b) -#define IDirectInputJoyConfig_OpenTypeKey(p,a,b,c) (p)->OpenTypeKey(a,b,c) -#define IDirectInputJoyConfig_OpenConfigKey(p,a,b,c) (p)->OpenConfigKey(a,b,c) -#endif - -#endif /* DIJ_RINGZERO */ - -#if(DIRECTINPUT_VERSION >= 0x0800) - -#ifndef DIJ_RINGZERO - -#undef INTERFACE -#define INTERFACE IDirectInputJoyConfig8 - -DECLARE_INTERFACE_(IDirectInputJoyConfig8, IUnknown) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - - /*** IDirectInputJoyConfig8 methods ***/ - STDMETHOD(Acquire)(THIS) PURE; - STDMETHOD(Unacquire)(THIS) PURE; - STDMETHOD(SetCooperativeLevel)(THIS_ HWND,DWORD) PURE; - STDMETHOD(SendNotify)(THIS) PURE; - STDMETHOD(EnumTypes)(THIS_ LPDIJOYTYPECALLBACK,LPVOID) PURE; - STDMETHOD(GetTypeInfo)(THIS_ LPCWSTR,LPDIJOYTYPEINFO,DWORD) PURE; - STDMETHOD(SetTypeInfo)(THIS_ LPCWSTR,LPCDIJOYTYPEINFO,DWORD,LPWSTR) PURE; - STDMETHOD(DeleteType)(THIS_ LPCWSTR) PURE; - STDMETHOD(GetConfig)(THIS_ UINT,LPDIJOYCONFIG,DWORD) PURE; - STDMETHOD(SetConfig)(THIS_ UINT,LPCDIJOYCONFIG,DWORD) PURE; - STDMETHOD(DeleteConfig)(THIS_ UINT) PURE; - STDMETHOD(GetUserValues)(THIS_ LPDIJOYUSERVALUES,DWORD) PURE; - STDMETHOD(SetUserValues)(THIS_ LPCDIJOYUSERVALUES,DWORD) PURE; - STDMETHOD(AddNewHardware)(THIS_ HWND,REFGUID) PURE; - STDMETHOD(OpenTypeKey)(THIS_ LPCWSTR,DWORD,PHKEY) PURE; - STDMETHOD(OpenAppStatusKey)(THIS_ PHKEY) PURE; -}; - -typedef struct IDirectInputJoyConfig8 *LPDIRECTINPUTJOYCONFIG8; - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectInputJoyConfig8_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IDirectInputJoyConfig8_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDirectInputJoyConfig8_Release(p) (p)->lpVtbl->Release(p) -#define IDirectInputJoyConfig8_Acquire(p) (p)->lpVtbl->Acquire(p) -#define IDirectInputJoyConfig8_Unacquire(p) (p)->lpVtbl->Unacquire(p) -#define IDirectInputJoyConfig8_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b) -#define IDirectInputJoyConfig8_SendNotify(p) (p)->lpVtbl->SendNotify(p) -#define IDirectInputJoyConfig8_EnumTypes(p,a,b) (p)->lpVtbl->EnumTypes(p,a,b) -#define IDirectInputJoyConfig8_GetTypeInfo(p,a,b,c) (p)->lpVtbl->GetTypeInfo(p,a,b,c) -#define IDirectInputJoyConfig8_SetTypeInfo(p,a,b,c,d) (p)->lpVtbl->SetTypeInfo(p,a,b,c,d) -#define IDirectInputJoyConfig8_DeleteType(p,a) (p)->lpVtbl->DeleteType(p,a) -#define IDirectInputJoyConfig8_GetConfig(p,a,b,c) (p)->lpVtbl->GetConfig(p,a,b,c) -#define IDirectInputJoyConfig8_SetConfig(p,a,b,c) (p)->lpVtbl->SetConfig(p,a,b,c) -#define IDirectInputJoyConfig8_DeleteConfig(p,a) (p)->lpVtbl->DeleteConfig(p,a) -#define IDirectInputJoyConfig8_GetUserValues(p,a,b) (p)->lpVtbl->GetUserValues(p,a,b) -#define IDirectInputJoyConfig8_SetUserValues(p,a,b) (p)->lpVtbl->SetUserValues(p,a,b) -#define IDirectInputJoyConfig8_AddNewHardware(p,a,b) (p)->lpVtbl->AddNewHardware(p,a,b) -#define IDirectInputJoyConfig8_OpenTypeKey(p,a,b,c) (p)->lpVtbl->OpenTypeKey(p,a,b,c) -#define IDirectInputJoyConfig8_OpenAppStatusKey(p,a) (p)->lpVtbl->OpenAppStatusKey(p,a) -#else -#define IDirectInputJoyConfig8_QueryInterface(p,a,b) (p)->QueryInterface(a,b) -#define IDirectInputJoyConfig8_AddRef(p) (p)->AddRef() -#define IDirectInputJoyConfig8_Release(p) (p)->Release() -#define IDirectInputJoyConfig8_Acquire(p) (p)->Acquire() -#define IDirectInputJoyConfig8_Unacquire(p) (p)->Unacquire() -#define IDirectInputJoyConfig8_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b) -#define IDirectInputJoyConfig8_SendNotify(p) (p)->SendNotify() -#define IDirectInputJoyConfig8_EnumTypes(p,a,b) (p)->EnumTypes(a,b) -#define IDirectInputJoyConfig8_GetTypeInfo(p,a,b,c) (p)->GetTypeInfo(a,b,c) -#define IDirectInputJoyConfig8_SetTypeInfo(p,a,b,c,d) (p)->SetTypeInfo(a,b,c,d) -#define IDirectInputJoyConfig8_DeleteType(p,a) (p)->DeleteType(a) -#define IDirectInputJoyConfig8_GetConfig(p,a,b,c) (p)->GetConfig(a,b,c) -#define IDirectInputJoyConfig8_SetConfig(p,a,b,c) (p)->SetConfig(a,b,c) -#define IDirectInputJoyConfig8_DeleteConfig(p,a) (p)->DeleteConfig(a) -#define IDirectInputJoyConfig8_GetUserValues(p,a,b) (p)->GetUserValues(a,b) -#define IDirectInputJoyConfig8_SetUserValues(p,a,b) (p)->SetUserValues(a,b) -#define IDirectInputJoyConfig8_AddNewHardware(p,a,b) (p)->AddNewHardware(a,b) -#define IDirectInputJoyConfig8_OpenTypeKey(p,a,b,c) (p)->OpenTypeKey(a,b,c) -#define IDirectInputJoyConfig8_OpenAppStatusKey(p,a) (p)->OpenAppStatusKey(a) -#endif - -#endif /* DIJ_RINGZERO */ - -/**************************************************************************** - * - * Notification Messages - * - ****************************************************************************/ - -/* RegisterWindowMessage with this to get DirectInput notification messages */ -#define DIRECTINPUT_NOTIFICATION_MSGSTRINGA "DIRECTINPUT_NOTIFICATION_MSGSTRING" -#define DIRECTINPUT_NOTIFICATION_MSGSTRINGW L"DIRECTINPUT_NOTIFICATION_MSGSTRING" - -#ifdef UNICODE -#define DIRECTINPUT_NOTIFICATION_MSGSTRING DIRECTINPUT_NOTIFICATION_MSGSTRINGW -#else -#define DIRECTINPUT_NOTIFICATION_MSGSTRING DIRECTINPUT_NOTIFICATION_MSGSTRINGA -#endif - -#define DIMSGWP_NEWAPPSTART 0x00000001 -#define DIMSGWP_DX8APPSTART 0x00000002 -#define DIMSGWP_DX8MAPPERAPPSTART 0x00000003 - -#endif /* DIRECTINPUT_VERSION >= 0x0800 */ - -#define DIAPPIDFLAG_NOTIME 0x00000001 -#define DIAPPIDFLAG_NOSIZE 0x00000002 - -#define DIRECTINPUT_REGSTR_VAL_APPIDFLAGA "AppIdFlag" -#define DIRECTINPUT_REGSTR_KEY_LASTAPPA "MostRecentApplication" -#define DIRECTINPUT_REGSTR_KEY_LASTMAPAPPA "MostRecentMapperApplication" -#define DIRECTINPUT_REGSTR_VAL_VERSIONA "Version" -#define DIRECTINPUT_REGSTR_VAL_NAMEA "Name" -#define DIRECTINPUT_REGSTR_VAL_IDA "Id" -#define DIRECTINPUT_REGSTR_VAL_MAPPERA "UsesMapper" -#define DIRECTINPUT_REGSTR_VAL_LASTSTARTA "MostRecentStart" - -#define DIRECTINPUT_REGSTR_VAL_APPIDFLAGW L"AppIdFlag" -#define DIRECTINPUT_REGSTR_KEY_LASTAPPW L"MostRecentApplication" -#define DIRECTINPUT_REGSTR_KEY_LASTMAPAPPW L"MostRecentMapperApplication" -#define DIRECTINPUT_REGSTR_VAL_VERSIONW L"Version" -#define DIRECTINPUT_REGSTR_VAL_NAMEW L"Name" -#define DIRECTINPUT_REGSTR_VAL_IDW L"Id" -#define DIRECTINPUT_REGSTR_VAL_MAPPERW L"UsesMapper" -#define DIRECTINPUT_REGSTR_VAL_LASTSTARTW L"MostRecentStart" - -#ifdef UNICODE -#define DIRECTINPUT_REGSTR_VAL_APPIDFLAG DIRECTINPUT_REGSTR_VAL_APPIDFLAGW -#define DIRECTINPUT_REGSTR_KEY_LASTAPP DIRECTINPUT_REGSTR_KEY_LASTAPPW -#define DIRECTINPUT_REGSTR_KEY_LASTMAPAPP DIRECTINPUT_REGSTR_KEY_LASTMAPAPPW -#define DIRECTINPUT_REGSTR_VAL_VERSION DIRECTINPUT_REGSTR_VAL_VERSIONW -#define DIRECTINPUT_REGSTR_VAL_NAME DIRECTINPUT_REGSTR_VAL_NAMEW -#define DIRECTINPUT_REGSTR_VAL_ID DIRECTINPUT_REGSTR_VAL_IDW -#define DIRECTINPUT_REGSTR_VAL_MAPPER DIRECTINPUT_REGSTR_VAL_MAPPERW -#define DIRECTINPUT_REGSTR_VAL_LASTSTART DIRECTINPUT_REGSTR_VAL_LASTSTARTW -#else -#define DIRECTINPUT_REGSTR_VAL_APPIDFLAG DIRECTINPUT_REGSTR_VAL_APPIDFLAGA -#define DIRECTINPUT_REGSTR_KEY_LASTAPP DIRECTINPUT_REGSTR_KEY_LASTAPPA -#define DIRECTINPUT_REGSTR_KEY_LASTMAPAPP DIRECTINPUT_REGSTR_KEY_LASTMAPAPPA -#define DIRECTINPUT_REGSTR_VAL_VERSION DIRECTINPUT_REGSTR_VAL_VERSIONA -#define DIRECTINPUT_REGSTR_VAL_NAME DIRECTINPUT_REGSTR_VAL_NAMEA -#define DIRECTINPUT_REGSTR_VAL_ID DIRECTINPUT_REGSTR_VAL_IDA -#define DIRECTINPUT_REGSTR_VAL_MAPPER DIRECTINPUT_REGSTR_VAL_MAPPERA -#define DIRECTINPUT_REGSTR_VAL_LASTSTART DIRECTINPUT_REGSTR_VAL_LASTSTARTA -#endif - - -/**************************************************************************** - * - * Return Codes - * - ****************************************************************************/ - -#define DIERR_NOMOREITEMS \ - MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_NO_MORE_ITEMS) - -/* - * Device driver-specific codes. - */ - -#define DIERR_DRIVERFIRST 0x80040300L -#define DIERR_DRIVERLAST 0x800403FFL - -/* - * Unless the specific driver has been precisely identified, no meaning - * should be attributed to these values other than that the driver - * originated the error. However, to illustrate the types of error that - * may be causing the failure, the PID force feedback driver distributed - * with DirectX 7 could return the following errors: - * - * DIERR_DRIVERFIRST + 1 - * The requested usage was not found. - * DIERR_DRIVERFIRST + 2 - * The parameter block couldn't be downloaded to the device. - * DIERR_DRIVERFIRST + 3 - * PID initialization failed. - * DIERR_DRIVERFIRST + 4 - * The provided values couldn't be scaled. - */ - - -/* - * Device installer errors. - */ - -/* - * Registry entry or DLL for class installer invalid - * or class installer not found. - */ -#define DIERR_INVALIDCLASSINSTALLER 0x80040400L - -/* - * The user cancelled the install operation. - */ -#define DIERR_CANCELLED 0x80040401L - -/* - * The INF file for the selected device could not be - * found or is invalid or is damaged. - */ -#define DIERR_BADINF 0x80040402L - -/**************************************************************************** - * - * Map files - * - ****************************************************************************/ - -/* - * Delete particular data from default map file. - */ -#define DIDIFT_DELETE 0x01000000 - -#ifdef __cplusplus -}; -#endif - -#endif /* __DINPUTD_INCLUDED__ */ +/**************************************************************************** + * + * Copyright (C) 1995-2000 Microsoft Corporation. All Rights Reserved. + * + * File: dinputd.h + * Content: DirectInput include file for device driver implementors + * + ****************************************************************************/ +#ifndef __DINPUTD_INCLUDED__ +#define __DINPUTD_INCLUDED__ + +#ifndef DIRECTINPUT_VERSION +#define DIRECTINPUT_VERSION 0x0800 +#pragma message(__FILE__ ": DIRECTINPUT_VERSION undefined. Defaulting to version 0x0800") +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/**************************************************************************** + * + * Interfaces + * + ****************************************************************************/ + +#ifndef DIJ_RINGZERO + +DEFINE_GUID(IID_IDirectInputEffectDriver, 0x02538130,0x898F,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); +DEFINE_GUID(IID_IDirectInputJoyConfig, 0x1DE12AB1,0xC9F5,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); +DEFINE_GUID(IID_IDirectInputPIDDriver, 0xEEC6993A,0xB3FD,0x11D2,0xA9,0x16,0x00,0xC0,0x4F,0xB9,0x86,0x38); + +DEFINE_GUID(IID_IDirectInputJoyConfig8, 0xeb0d7dfa,0x1990,0x4f27,0xb4,0xd6,0xed,0xf2,0xee,0xc4,0xa4,0x4c); + +#endif /* DIJ_RINGZERO */ + + +/**************************************************************************** + * + * IDirectInputEffectDriver + * + ****************************************************************************/ + +typedef struct DIOBJECTATTRIBUTES { + DWORD dwFlags; + WORD wUsagePage; + WORD wUsage; +} DIOBJECTATTRIBUTES, *LPDIOBJECTATTRIBUTES; +typedef const DIOBJECTATTRIBUTES *LPCDIOBJECTATTRIBUTES; + +typedef struct DIFFOBJECTATTRIBUTES { + DWORD dwFFMaxForce; + DWORD dwFFForceResolution; +} DIFFOBJECTATTRIBUTES, *LPDIFFOBJECTATTRIBUTES; +typedef const DIFFOBJECTATTRIBUTES *LPCDIFFOBJECTATTRIBUTES; + +typedef struct DIOBJECTCALIBRATION { + LONG lMin; + LONG lCenter; + LONG lMax; +} DIOBJECTCALIBRATION, *LPDIOBJECTCALIBRATION; +typedef const DIOBJECTCALIBRATION *LPCDIOBJECTCALIBRATION; + +typedef struct DIPOVCALIBRATION { + LONG lMin[5]; + LONG lMax[5]; +} DIPOVCALIBRATION, *LPDIPOVCALIBRATION; +typedef const DIPOVCALIBRATION *LPCDIPOVCALIBRATION; + +typedef struct DIEFFECTATTRIBUTES { + DWORD dwEffectId; + DWORD dwEffType; + DWORD dwStaticParams; + DWORD dwDynamicParams; + DWORD dwCoords; +} DIEFFECTATTRIBUTES, *LPDIEFFECTATTRIBUTES; +typedef const DIEFFECTATTRIBUTES *LPCDIEFFECTATTRIBUTES; + +typedef struct DIFFDEVICEATTRIBUTES { + DWORD dwFlags; + DWORD dwFFSamplePeriod; + DWORD dwFFMinTimeResolution; +} DIFFDEVICEATTRIBUTES, *LPDIFFDEVICEATTRIBUTES; +typedef const DIFFDEVICEATTRIBUTES *LPCDIFFDEVICEATTRIBUTES; + +typedef struct DIDRIVERVERSIONS { + DWORD dwSize; + DWORD dwFirmwareRevision; + DWORD dwHardwareRevision; + DWORD dwFFDriverVersion; +} DIDRIVERVERSIONS, *LPDIDRIVERVERSIONS; +typedef const DIDRIVERVERSIONS *LPCDIDRIVERVERSIONS; + +typedef struct DIDEVICESTATE { + DWORD dwSize; + DWORD dwState; + DWORD dwLoad; +} DIDEVICESTATE, *LPDIDEVICESTATE; + +#define DEV_STS_EFFECT_RUNNING DIEGES_PLAYING + +#ifndef DIJ_RINGZERO + +typedef struct DIHIDFFINITINFO { + DWORD dwSize; + LPWSTR pwszDeviceInterface; + GUID GuidInstance; +} DIHIDFFINITINFO, *LPDIHIDFFINITINFO; + +#undef INTERFACE +#define INTERFACE IDirectInputEffectDriver + +DECLARE_INTERFACE_(IDirectInputEffectDriver, IUnknown) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + + /*** IDirectInputEffectDriver methods ***/ + STDMETHOD(DeviceID)(THIS_ DWORD,DWORD,DWORD,DWORD,LPVOID) PURE; + STDMETHOD(GetVersions)(THIS_ LPDIDRIVERVERSIONS) PURE; + STDMETHOD(Escape)(THIS_ DWORD,DWORD,LPDIEFFESCAPE) PURE; + STDMETHOD(SetGain)(THIS_ DWORD,DWORD) PURE; + STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD,DWORD) PURE; + STDMETHOD(GetForceFeedbackState)(THIS_ DWORD,LPDIDEVICESTATE) PURE; + STDMETHOD(DownloadEffect)(THIS_ DWORD,DWORD,LPDWORD,LPCDIEFFECT,DWORD) PURE; + STDMETHOD(DestroyEffect)(THIS_ DWORD,DWORD) PURE; + STDMETHOD(StartEffect)(THIS_ DWORD,DWORD,DWORD,DWORD) PURE; + STDMETHOD(StopEffect)(THIS_ DWORD,DWORD) PURE; + STDMETHOD(GetEffectStatus)(THIS_ DWORD,DWORD,LPDWORD) PURE; +}; + +typedef struct IDirectInputEffectDriver *LPDIRECTINPUTEFFECTDRIVER; + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectInputEffectDriver_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDirectInputEffectDriver_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectInputEffectDriver_Release(p) (p)->lpVtbl->Release(p) +#define IDirectInputEffectDriver_DeviceID(p,a,b,c,d,e) (p)->lpVtbl->DeviceID(p,a,b,c,d,e) +#define IDirectInputEffectDriver_GetVersions(p,a) (p)->lpVtbl->GetVersions(p,a) +#define IDirectInputEffectDriver_Escape(p,a,b,c) (p)->lpVtbl->Escape(p,a,b,c) +#define IDirectInputEffectDriver_SetGain(p,a,b) (p)->lpVtbl->SetGain(p,a,b) +#define IDirectInputEffectDriver_SendForceFeedbackCommand(p,a,b) (p)->lpVtbl->SendForceFeedbackCommand(p,a,b) +#define IDirectInputEffectDriver_GetForceFeedbackState(p,a,b) (p)->lpVtbl->GetForceFeedbackState(p,a,b) +#define IDirectInputEffectDriver_DownloadEffect(p,a,b,c,d,e) (p)->lpVtbl->DownloadEffect(p,a,b,c,d,e) +#define IDirectInputEffectDriver_DestroyEffect(p,a,b) (p)->lpVtbl->DestroyEffect(p,a,b) +#define IDirectInputEffectDriver_StartEffect(p,a,b,c,d) (p)->lpVtbl->StartEffect(p,a,b,c,d) +#define IDirectInputEffectDriver_StopEffect(p,a,b) (p)->lpVtbl->StopEffect(p,a,b) +#define IDirectInputEffectDriver_GetEffectStatus(p,a,b,c) (p)->lpVtbl->GetEffectStatus(p,a,b,c) +#else +#define IDirectInputEffectDriver_QueryInterface(p,a,b) (p)->QueryInterface(a,b) +#define IDirectInputEffectDriver_AddRef(p) (p)->AddRef() +#define IDirectInputEffectDriver_Release(p) (p)->Release() +#define IDirectInputEffectDriver_DeviceID(p,a,b,c,d,e) (p)->DeviceID(a,b,c,d,e) +#define IDirectInputEffectDriver_GetVersions(p,a) (p)->GetVersions(a) +#define IDirectInputEffectDriver_Escape(p,a,b,c) (p)->Escape(a,b,c) +#define IDirectInputEffectDriver_SetGain(p,a,b) (p)->SetGain(a,b) +#define IDirectInputEffectDriver_SendForceFeedbackCommand(p,a,b) (p)->SendForceFeedbackCommand(a,b) +#define IDirectInputEffectDriver_GetForceFeedbackState(p,a,b) (p)->GetForceFeedbackState(a,b) +#define IDirectInputEffectDriver_DownloadEffect(p,a,b,c,d,e) (p)->DownloadEffect(a,b,c,d,e) +#define IDirectInputEffectDriver_DestroyEffect(p,a,b) (p)->DestroyEffect(a,b) +#define IDirectInputEffectDriver_StartEffect(p,a,b,c,d) (p)->StartEffect(a,b,c,d) +#define IDirectInputEffectDriver_StopEffect(p,a,b) (p)->StopEffect(a,b) +#define IDirectInputEffectDriver_GetEffectStatus(p,a,b,c) (p)->GetEffectStatus(a,b,c) +#endif + + +#endif /* DIJ_RINGZERO */ + + +/**************************************************************************** + * + * IDirectInputJoyConfig + * + ****************************************************************************/ + +/**************************************************************************** + * + * Definitions copied from the DDK + * + ****************************************************************************/ + +#ifndef JOY_HW_NONE + +/* pre-defined joystick types */ +#define JOY_HW_NONE 0 +#define JOY_HW_CUSTOM 1 +#define JOY_HW_2A_2B_GENERIC 2 +#define JOY_HW_2A_4B_GENERIC 3 +#define JOY_HW_2B_GAMEPAD 4 +#define JOY_HW_2B_FLIGHTYOKE 5 +#define JOY_HW_2B_FLIGHTYOKETHROTTLE 6 +#define JOY_HW_3A_2B_GENERIC 7 +#define JOY_HW_3A_4B_GENERIC 8 +#define JOY_HW_4B_GAMEPAD 9 +#define JOY_HW_4B_FLIGHTYOKE 10 +#define JOY_HW_4B_FLIGHTYOKETHROTTLE 11 +#define JOY_HW_TWO_2A_2B_WITH_Y 12 +#define JOY_HW_LASTENTRY 13 + + +/* calibration flags */ +#define JOY_ISCAL_XY 0x00000001l /* XY are calibrated */ +#define JOY_ISCAL_Z 0x00000002l /* Z is calibrated */ +#define JOY_ISCAL_R 0x00000004l /* R is calibrated */ +#define JOY_ISCAL_U 0x00000008l /* U is calibrated */ +#define JOY_ISCAL_V 0x00000010l /* V is calibrated */ +#define JOY_ISCAL_POV 0x00000020l /* POV is calibrated */ + +/* point of view constants */ +#define JOY_POV_NUMDIRS 4 +#define JOY_POVVAL_FORWARD 0 +#define JOY_POVVAL_BACKWARD 1 +#define JOY_POVVAL_LEFT 2 +#define JOY_POVVAL_RIGHT 3 + +/* Specific settings for joystick hardware */ +#define JOY_HWS_HASZ 0x00000001l /* has Z info? */ +#define JOY_HWS_HASPOV 0x00000002l /* point of view hat present */ +#define JOY_HWS_POVISBUTTONCOMBOS 0x00000004l /* pov done through combo of buttons */ +#define JOY_HWS_POVISPOLL 0x00000008l /* pov done through polling */ +#define JOY_HWS_ISYOKE 0x00000010l /* joystick is a flight yoke */ +#define JOY_HWS_ISGAMEPAD 0x00000020l /* joystick is a game pad */ +#define JOY_HWS_ISCARCTRL 0x00000040l /* joystick is a car controller */ +/* X defaults to J1 X axis */ +#define JOY_HWS_XISJ1Y 0x00000080l /* X is on J1 Y axis */ +#define JOY_HWS_XISJ2X 0x00000100l /* X is on J2 X axis */ +#define JOY_HWS_XISJ2Y 0x00000200l /* X is on J2 Y axis */ +/* Y defaults to J1 Y axis */ +#define JOY_HWS_YISJ1X 0x00000400l /* Y is on J1 X axis */ +#define JOY_HWS_YISJ2X 0x00000800l /* Y is on J2 X axis */ +#define JOY_HWS_YISJ2Y 0x00001000l /* Y is on J2 Y axis */ +/* Z defaults to J2 Y axis */ +#define JOY_HWS_ZISJ1X 0x00002000l /* Z is on J1 X axis */ +#define JOY_HWS_ZISJ1Y 0x00004000l /* Z is on J1 Y axis */ +#define JOY_HWS_ZISJ2X 0x00008000l /* Z is on J2 X axis */ +/* POV defaults to J2 Y axis, if it is not button based */ +#define JOY_HWS_POVISJ1X 0x00010000l /* pov done through J1 X axis */ +#define JOY_HWS_POVISJ1Y 0x00020000l /* pov done through J1 Y axis */ +#define JOY_HWS_POVISJ2X 0x00040000l /* pov done through J2 X axis */ +/* R defaults to J2 X axis */ +#define JOY_HWS_HASR 0x00080000l /* has R (4th axis) info */ +#define JOY_HWS_RISJ1X 0x00100000l /* R done through J1 X axis */ +#define JOY_HWS_RISJ1Y 0x00200000l /* R done through J1 Y axis */ +#define JOY_HWS_RISJ2Y 0x00400000l /* R done through J2 X axis */ +/* U & V for future hardware */ +#define JOY_HWS_HASU 0x00800000l /* has U (5th axis) info */ +#define JOY_HWS_HASV 0x01000000l /* has V (6th axis) info */ + +/* Usage settings */ +#define JOY_US_HASRUDDER 0x00000001l /* joystick configured with rudder */ +#define JOY_US_PRESENT 0x00000002l /* is joystick actually present? */ +#define JOY_US_ISOEM 0x00000004l /* joystick is an OEM defined type */ + +/* reserved for future use -> as link to next possible dword */ +#define JOY_US_RESERVED 0x80000000l /* reserved */ + + +/* Settings for TypeInfo Flags1 */ +#define JOYTYPE_ZEROGAMEENUMOEMDATA 0x00000001l /* Zero GameEnum's OEM data field */ +#define JOYTYPE_NOAUTODETECTGAMEPORT 0x00000002l /* Device does not support Autodetect gameport*/ +#define JOYTYPE_NOHIDDIRECT 0x00000004l /* Do not use HID directly for this device */ +#define JOYTYPE_ANALOGCOMPAT 0x00000008l /* Expose the analog compatible ID */ +#define JOYTYPE_DEFAULTPROPSHEET 0x80000000l /* CPL overrides custom property sheet */ + +/* Settings for TypeInfo Flags2 */ +#define JOYTYPE_DEVICEHIDE 0x00010000l /* Hide unclassified devices */ +#define JOYTYPE_MOUSEHIDE 0x00020000l /* Hide mice */ +#define JOYTYPE_KEYBHIDE 0x00040000l /* Hide keyboards */ +#define JOYTYPE_GAMEHIDE 0x00080000l /* Hide game controllers */ +#define JOYTYPE_HIDEACTIVE 0x00100000l /* Hide flags are active */ +#define JOYTYPE_INFOMASK 0x00E00000l /* Mask for type specific info */ +#define JOYTYPE_INFODEFAULT 0x00000000l /* Use default axis mappings */ +#define JOYTYPE_INFOYYPEDALS 0x00200000l /* Use Y as a combined pedals axis */ +#define JOYTYPE_INFOZYPEDALS 0x00400000l /* Use Z for accelerate, Y for brake */ +#define JOYTYPE_INFOYRPEDALS 0x00600000l /* Use Y for accelerate, R for brake */ +#define JOYTYPE_INFOZRPEDALS 0x00800000l /* Use Z for accelerate, R for brake */ +#define JOYTYPE_INFOZISSLIDER 0x00200000l /* Use Z as a slider */ +#define JOYTYPE_INFOZISZ 0x00400000l /* Use Z as Z axis */ +#define JOYTYPE_ENABLEINPUTREPORT 0x01000000l /* Enable initial input reports */ + +/* struct for storing x,y, z, and rudder values */ +typedef struct joypos_tag { + DWORD dwX; + DWORD dwY; + DWORD dwZ; + DWORD dwR; + DWORD dwU; + DWORD dwV; +} JOYPOS, FAR *LPJOYPOS; + +/* struct for storing ranges */ +typedef struct joyrange_tag { + JOYPOS jpMin; + JOYPOS jpMax; + JOYPOS jpCenter; +} JOYRANGE,FAR *LPJOYRANGE; + +/* + * dwTimeout - value at which to timeout joystick polling + * jrvRanges - range of values app wants returned for axes + * jpDeadZone - area around center to be considered + * as "dead". specified as a percentage + * (0-100). Only X & Y handled by system driver + */ +typedef struct joyreguservalues_tag { + DWORD dwTimeOut; + JOYRANGE jrvRanges; + JOYPOS jpDeadZone; +} JOYREGUSERVALUES, FAR *LPJOYREGUSERVALUES; + +typedef struct joyreghwsettings_tag { + DWORD dwFlags; + DWORD dwNumButtons; +} JOYREGHWSETTINGS, FAR *LPJOYHWSETTINGS; + +/* range of values returned by the hardware (filled in by calibration) */ +/* + * jrvHardware - values returned by hardware + * dwPOVValues - POV values returned by hardware + * dwCalFlags - what has been calibrated + */ +typedef struct joyreghwvalues_tag { + JOYRANGE jrvHardware; + DWORD dwPOVValues[JOY_POV_NUMDIRS]; + DWORD dwCalFlags; +} JOYREGHWVALUES, FAR *LPJOYREGHWVALUES; + +/* hardware configuration */ +/* + * hws - hardware settings + * dwUsageSettings - usage settings + * hwv - values returned by hardware + * dwType - type of joystick + * dwReserved - reserved for OEM drivers + */ +typedef struct joyreghwconfig_tag { + JOYREGHWSETTINGS hws; + DWORD dwUsageSettings; + JOYREGHWVALUES hwv; + DWORD dwType; + DWORD dwReserved; +} JOYREGHWCONFIG, FAR *LPJOYREGHWCONFIG; + +/* joystick calibration info structure */ +typedef struct joycalibrate_tag { + UINT wXbase; + UINT wXdelta; + UINT wYbase; + UINT wYdelta; + UINT wZbase; + UINT wZdelta; +} JOYCALIBRATE; +typedef JOYCALIBRATE FAR *LPJOYCALIBRATE; + +#endif + +#ifndef DIJ_RINGZERO + +#define MAX_JOYSTRING 256 +typedef BOOL (FAR PASCAL * LPDIJOYTYPECALLBACK)(LPCWSTR, LPVOID); + +#ifndef MAX_JOYSTICKOEMVXDNAME +#define MAX_JOYSTICKOEMVXDNAME 260 +#endif + +#define DITC_REGHWSETTINGS 0x00000001 +#define DITC_CLSIDCONFIG 0x00000002 +#define DITC_DISPLAYNAME 0x00000004 +#define DITC_CALLOUT 0x00000008 +#define DITC_HARDWAREID 0x00000010 +#define DITC_FLAGS1 0x00000020 +#define DITC_FLAGS2 0x00000040 +#define DITC_MAPFILE 0x00000080 + + + +/* This structure is defined for DirectX 5.0 compatibility */ + +typedef struct DIJOYTYPEINFO_DX5 { + DWORD dwSize; + JOYREGHWSETTINGS hws; + CLSID clsidConfig; + WCHAR wszDisplayName[MAX_JOYSTRING]; + WCHAR wszCallout[MAX_JOYSTICKOEMVXDNAME]; +} DIJOYTYPEINFO_DX5, *LPDIJOYTYPEINFO_DX5; +typedef const DIJOYTYPEINFO_DX5 *LPCDIJOYTYPEINFO_DX5; + +/* This structure is defined for DirectX 6.1 compatibility */ +typedef struct DIJOYTYPEINFO_DX6 { + DWORD dwSize; + JOYREGHWSETTINGS hws; + CLSID clsidConfig; + WCHAR wszDisplayName[MAX_JOYSTRING]; + WCHAR wszCallout[MAX_JOYSTICKOEMVXDNAME]; + WCHAR wszHardwareId[MAX_JOYSTRING]; + DWORD dwFlags1; +} DIJOYTYPEINFO_DX6, *LPDIJOYTYPEINFO_DX6; +typedef const DIJOYTYPEINFO_DX6 *LPCDIJOYTYPEINFO_DX6; + +typedef struct DIJOYTYPEINFO { + DWORD dwSize; + JOYREGHWSETTINGS hws; + CLSID clsidConfig; + WCHAR wszDisplayName[MAX_JOYSTRING]; + WCHAR wszCallout[MAX_JOYSTICKOEMVXDNAME]; +#if(DIRECTINPUT_VERSION >= 0x05b2) + WCHAR wszHardwareId[MAX_JOYSTRING]; + DWORD dwFlags1; +#if(DIRECTINPUT_VERSION >= 0x0800) + DWORD dwFlags2; + WCHAR wszMapFile[MAX_JOYSTRING]; +#endif /* DIRECTINPUT_VERSION >= 0x0800 */ +#endif /* DIRECTINPUT_VERSION >= 0x05b2 */ +} DIJOYTYPEINFO, *LPDIJOYTYPEINFO; +typedef const DIJOYTYPEINFO *LPCDIJOYTYPEINFO; +#define DIJC_GUIDINSTANCE 0x00000001 +#define DIJC_REGHWCONFIGTYPE 0x00000002 +#define DIJC_GAIN 0x00000004 +#define DIJC_CALLOUT 0x00000008 +#define DIJC_WDMGAMEPORT 0x00000010 + +/* This structure is defined for DirectX 5.0 compatibility */ + +typedef struct DIJOYCONFIG_DX5 { + DWORD dwSize; + GUID guidInstance; + JOYREGHWCONFIG hwc; + DWORD dwGain; + WCHAR wszType[MAX_JOYSTRING]; + WCHAR wszCallout[MAX_JOYSTRING]; +} DIJOYCONFIG_DX5, *LPDIJOYCONFIG_DX5; +typedef const DIJOYCONFIG_DX5 *LPCDIJOYCONFIG_DX5; + +typedef struct DIJOYCONFIG { + DWORD dwSize; + GUID guidInstance; + JOYREGHWCONFIG hwc; + DWORD dwGain; + WCHAR wszType[MAX_JOYSTRING]; + WCHAR wszCallout[MAX_JOYSTRING]; +#if(DIRECTINPUT_VERSION >= 0x05b2) + GUID guidGameport; +#endif /* DIRECTINPUT_VERSION >= 0x05b2 */ + } DIJOYCONFIG, *LPDIJOYCONFIG; +typedef const DIJOYCONFIG *LPCDIJOYCONFIG; + + +#define DIJU_USERVALUES 0x00000001 +#define DIJU_GLOBALDRIVER 0x00000002 +#define DIJU_GAMEPORTEMULATOR 0x00000004 + +typedef struct DIJOYUSERVALUES { + DWORD dwSize; + JOYREGUSERVALUES ruv; + WCHAR wszGlobalDriver[MAX_JOYSTRING]; + WCHAR wszGameportEmulator[MAX_JOYSTRING]; +} DIJOYUSERVALUES, *LPDIJOYUSERVALUES; +typedef const DIJOYUSERVALUES *LPCDIJOYUSERVALUES; + +DEFINE_GUID(GUID_KeyboardClass, 0x4D36E96B,0xE325,0x11CE,0xBF,0xC1,0x08,0x00,0x2B,0xE1,0x03,0x18); +DEFINE_GUID(GUID_MediaClass, 0x4D36E96C,0xE325,0x11CE,0xBF,0xC1,0x08,0x00,0x2B,0xE1,0x03,0x18); +DEFINE_GUID(GUID_MouseClass, 0x4D36E96F,0xE325,0x11CE,0xBF,0xC1,0x08,0x00,0x2B,0xE1,0x03,0x18); +DEFINE_GUID(GUID_HIDClass, 0x745A17A0,0x74D3,0x11D0,0xB6,0xFE,0x00,0xA0,0xC9,0x0F,0x57,0xDA); + +#undef INTERFACE +#define INTERFACE IDirectInputJoyConfig + +DECLARE_INTERFACE_(IDirectInputJoyConfig, IUnknown) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + + /*** IDirectInputJoyConfig methods ***/ + STDMETHOD(Acquire)(THIS) PURE; + STDMETHOD(Unacquire)(THIS) PURE; + STDMETHOD(SetCooperativeLevel)(THIS_ HWND,DWORD) PURE; + STDMETHOD(SendNotify)(THIS) PURE; + STDMETHOD(EnumTypes)(THIS_ LPDIJOYTYPECALLBACK,LPVOID) PURE; + STDMETHOD(GetTypeInfo)(THIS_ LPCWSTR,LPDIJOYTYPEINFO,DWORD) PURE; + STDMETHOD(SetTypeInfo)(THIS_ LPCWSTR,LPCDIJOYTYPEINFO,DWORD) PURE; + STDMETHOD(DeleteType)(THIS_ LPCWSTR) PURE; + STDMETHOD(GetConfig)(THIS_ UINT,LPDIJOYCONFIG,DWORD) PURE; + STDMETHOD(SetConfig)(THIS_ UINT,LPCDIJOYCONFIG,DWORD) PURE; + STDMETHOD(DeleteConfig)(THIS_ UINT) PURE; + STDMETHOD(GetUserValues)(THIS_ LPDIJOYUSERVALUES,DWORD) PURE; + STDMETHOD(SetUserValues)(THIS_ LPCDIJOYUSERVALUES,DWORD) PURE; + STDMETHOD(AddNewHardware)(THIS_ HWND,REFGUID) PURE; + STDMETHOD(OpenTypeKey)(THIS_ LPCWSTR,DWORD,PHKEY) PURE; + STDMETHOD(OpenConfigKey)(THIS_ UINT,DWORD,PHKEY) PURE; +}; + +typedef struct IDirectInputJoyConfig *LPDIRECTINPUTJOYCONFIG; + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectInputJoyConfig_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDirectInputJoyConfig_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectInputJoyConfig_Release(p) (p)->lpVtbl->Release(p) +#define IDirectInputJoyConfig_Acquire(p) (p)->lpVtbl->Acquire(p) +#define IDirectInputJoyConfig_Unacquire(p) (p)->lpVtbl->Unacquire(p) +#define IDirectInputJoyConfig_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b) +#define IDirectInputJoyConfig_SendNotify(p) (p)->lpVtbl->SendNotify(p) +#define IDirectInputJoyConfig_EnumTypes(p,a,b) (p)->lpVtbl->EnumTypes(p,a,b) +#define IDirectInputJoyConfig_GetTypeInfo(p,a,b,c) (p)->lpVtbl->GetTypeInfo(p,a,b,c) +#define IDirectInputJoyConfig_SetTypeInfo(p,a,b,c) (p)->lpVtbl->SetTypeInfo(p,a,b,c) +#define IDirectInputJoyConfig_DeleteType(p,a) (p)->lpVtbl->DeleteType(p,a) +#define IDirectInputJoyConfig_GetConfig(p,a,b,c) (p)->lpVtbl->GetConfig(p,a,b,c) +#define IDirectInputJoyConfig_SetConfig(p,a,b,c) (p)->lpVtbl->SetConfig(p,a,b,c) +#define IDirectInputJoyConfig_DeleteConfig(p,a) (p)->lpVtbl->DeleteConfig(p,a) +#define IDirectInputJoyConfig_GetUserValues(p,a,b) (p)->lpVtbl->GetUserValues(p,a,b) +#define IDirectInputJoyConfig_SetUserValues(p,a,b) (p)->lpVtbl->SetUserValues(p,a,b) +#define IDirectInputJoyConfig_AddNewHardware(p,a,b) (p)->lpVtbl->AddNewHardware(p,a,b) +#define IDirectInputJoyConfig_OpenTypeKey(p,a,b,c) (p)->lpVtbl->OpenTypeKey(p,a,b,c) +#define IDirectInputJoyConfig_OpenConfigKey(p,a,b,c) (p)->lpVtbl->OpenConfigKey(p,a,b,c) +#else +#define IDirectInputJoyConfig_QueryInterface(p,a,b) (p)->QueryInterface(a,b) +#define IDirectInputJoyConfig_AddRef(p) (p)->AddRef() +#define IDirectInputJoyConfig_Release(p) (p)->Release() +#define IDirectInputJoyConfig_Acquire(p) (p)->Acquire() +#define IDirectInputJoyConfig_Unacquire(p) (p)->Unacquire() +#define IDirectInputJoyConfig_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b) +#define IDirectInputJoyConfig_SendNotify(p) (p)->SendNotify() +#define IDirectInputJoyConfig_EnumTypes(p,a,b) (p)->EnumTypes(a,b) +#define IDirectInputJoyConfig_GetTypeInfo(p,a,b,c) (p)->GetTypeInfo(a,b,c) +#define IDirectInputJoyConfig_SetTypeInfo(p,a,b,c) (p)->SetTypeInfo(a,b,c) +#define IDirectInputJoyConfig_DeleteType(p,a) (p)->DeleteType(a) +#define IDirectInputJoyConfig_GetConfig(p,a,b,c) (p)->GetConfig(a,b,c) +#define IDirectInputJoyConfig_SetConfig(p,a,b,c) (p)->SetConfig(a,b,c) +#define IDirectInputJoyConfig_DeleteConfig(p,a) (p)->DeleteConfig(a) +#define IDirectInputJoyConfig_GetUserValues(p,a,b) (p)->GetUserValues(a,b) +#define IDirectInputJoyConfig_SetUserValues(p,a,b) (p)->SetUserValues(a,b) +#define IDirectInputJoyConfig_AddNewHardware(p,a,b) (p)->AddNewHardware(a,b) +#define IDirectInputJoyConfig_OpenTypeKey(p,a,b,c) (p)->OpenTypeKey(a,b,c) +#define IDirectInputJoyConfig_OpenConfigKey(p,a,b,c) (p)->OpenConfigKey(a,b,c) +#endif + +#endif /* DIJ_RINGZERO */ + +#if(DIRECTINPUT_VERSION >= 0x0800) + +#ifndef DIJ_RINGZERO + +#undef INTERFACE +#define INTERFACE IDirectInputJoyConfig8 + +DECLARE_INTERFACE_(IDirectInputJoyConfig8, IUnknown) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + + /*** IDirectInputJoyConfig8 methods ***/ + STDMETHOD(Acquire)(THIS) PURE; + STDMETHOD(Unacquire)(THIS) PURE; + STDMETHOD(SetCooperativeLevel)(THIS_ HWND,DWORD) PURE; + STDMETHOD(SendNotify)(THIS) PURE; + STDMETHOD(EnumTypes)(THIS_ LPDIJOYTYPECALLBACK,LPVOID) PURE; + STDMETHOD(GetTypeInfo)(THIS_ LPCWSTR,LPDIJOYTYPEINFO,DWORD) PURE; + STDMETHOD(SetTypeInfo)(THIS_ LPCWSTR,LPCDIJOYTYPEINFO,DWORD,LPWSTR) PURE; + STDMETHOD(DeleteType)(THIS_ LPCWSTR) PURE; + STDMETHOD(GetConfig)(THIS_ UINT,LPDIJOYCONFIG,DWORD) PURE; + STDMETHOD(SetConfig)(THIS_ UINT,LPCDIJOYCONFIG,DWORD) PURE; + STDMETHOD(DeleteConfig)(THIS_ UINT) PURE; + STDMETHOD(GetUserValues)(THIS_ LPDIJOYUSERVALUES,DWORD) PURE; + STDMETHOD(SetUserValues)(THIS_ LPCDIJOYUSERVALUES,DWORD) PURE; + STDMETHOD(AddNewHardware)(THIS_ HWND,REFGUID) PURE; + STDMETHOD(OpenTypeKey)(THIS_ LPCWSTR,DWORD,PHKEY) PURE; + STDMETHOD(OpenAppStatusKey)(THIS_ PHKEY) PURE; +}; + +typedef struct IDirectInputJoyConfig8 *LPDIRECTINPUTJOYCONFIG8; + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectInputJoyConfig8_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDirectInputJoyConfig8_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectInputJoyConfig8_Release(p) (p)->lpVtbl->Release(p) +#define IDirectInputJoyConfig8_Acquire(p) (p)->lpVtbl->Acquire(p) +#define IDirectInputJoyConfig8_Unacquire(p) (p)->lpVtbl->Unacquire(p) +#define IDirectInputJoyConfig8_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b) +#define IDirectInputJoyConfig8_SendNotify(p) (p)->lpVtbl->SendNotify(p) +#define IDirectInputJoyConfig8_EnumTypes(p,a,b) (p)->lpVtbl->EnumTypes(p,a,b) +#define IDirectInputJoyConfig8_GetTypeInfo(p,a,b,c) (p)->lpVtbl->GetTypeInfo(p,a,b,c) +#define IDirectInputJoyConfig8_SetTypeInfo(p,a,b,c,d) (p)->lpVtbl->SetTypeInfo(p,a,b,c,d) +#define IDirectInputJoyConfig8_DeleteType(p,a) (p)->lpVtbl->DeleteType(p,a) +#define IDirectInputJoyConfig8_GetConfig(p,a,b,c) (p)->lpVtbl->GetConfig(p,a,b,c) +#define IDirectInputJoyConfig8_SetConfig(p,a,b,c) (p)->lpVtbl->SetConfig(p,a,b,c) +#define IDirectInputJoyConfig8_DeleteConfig(p,a) (p)->lpVtbl->DeleteConfig(p,a) +#define IDirectInputJoyConfig8_GetUserValues(p,a,b) (p)->lpVtbl->GetUserValues(p,a,b) +#define IDirectInputJoyConfig8_SetUserValues(p,a,b) (p)->lpVtbl->SetUserValues(p,a,b) +#define IDirectInputJoyConfig8_AddNewHardware(p,a,b) (p)->lpVtbl->AddNewHardware(p,a,b) +#define IDirectInputJoyConfig8_OpenTypeKey(p,a,b,c) (p)->lpVtbl->OpenTypeKey(p,a,b,c) +#define IDirectInputJoyConfig8_OpenAppStatusKey(p,a) (p)->lpVtbl->OpenAppStatusKey(p,a) +#else +#define IDirectInputJoyConfig8_QueryInterface(p,a,b) (p)->QueryInterface(a,b) +#define IDirectInputJoyConfig8_AddRef(p) (p)->AddRef() +#define IDirectInputJoyConfig8_Release(p) (p)->Release() +#define IDirectInputJoyConfig8_Acquire(p) (p)->Acquire() +#define IDirectInputJoyConfig8_Unacquire(p) (p)->Unacquire() +#define IDirectInputJoyConfig8_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b) +#define IDirectInputJoyConfig8_SendNotify(p) (p)->SendNotify() +#define IDirectInputJoyConfig8_EnumTypes(p,a,b) (p)->EnumTypes(a,b) +#define IDirectInputJoyConfig8_GetTypeInfo(p,a,b,c) (p)->GetTypeInfo(a,b,c) +#define IDirectInputJoyConfig8_SetTypeInfo(p,a,b,c,d) (p)->SetTypeInfo(a,b,c,d) +#define IDirectInputJoyConfig8_DeleteType(p,a) (p)->DeleteType(a) +#define IDirectInputJoyConfig8_GetConfig(p,a,b,c) (p)->GetConfig(a,b,c) +#define IDirectInputJoyConfig8_SetConfig(p,a,b,c) (p)->SetConfig(a,b,c) +#define IDirectInputJoyConfig8_DeleteConfig(p,a) (p)->DeleteConfig(a) +#define IDirectInputJoyConfig8_GetUserValues(p,a,b) (p)->GetUserValues(a,b) +#define IDirectInputJoyConfig8_SetUserValues(p,a,b) (p)->SetUserValues(a,b) +#define IDirectInputJoyConfig8_AddNewHardware(p,a,b) (p)->AddNewHardware(a,b) +#define IDirectInputJoyConfig8_OpenTypeKey(p,a,b,c) (p)->OpenTypeKey(a,b,c) +#define IDirectInputJoyConfig8_OpenAppStatusKey(p,a) (p)->OpenAppStatusKey(a) +#endif + +#endif /* DIJ_RINGZERO */ + +/**************************************************************************** + * + * Notification Messages + * + ****************************************************************************/ + +/* RegisterWindowMessage with this to get DirectInput notification messages */ +#define DIRECTINPUT_NOTIFICATION_MSGSTRINGA "DIRECTINPUT_NOTIFICATION_MSGSTRING" +#define DIRECTINPUT_NOTIFICATION_MSGSTRINGW L"DIRECTINPUT_NOTIFICATION_MSGSTRING" + +#ifdef UNICODE +#define DIRECTINPUT_NOTIFICATION_MSGSTRING DIRECTINPUT_NOTIFICATION_MSGSTRINGW +#else +#define DIRECTINPUT_NOTIFICATION_MSGSTRING DIRECTINPUT_NOTIFICATION_MSGSTRINGA +#endif + +#define DIMSGWP_NEWAPPSTART 0x00000001 +#define DIMSGWP_DX8APPSTART 0x00000002 +#define DIMSGWP_DX8MAPPERAPPSTART 0x00000003 + +#endif /* DIRECTINPUT_VERSION >= 0x0800 */ + +#define DIAPPIDFLAG_NOTIME 0x00000001 +#define DIAPPIDFLAG_NOSIZE 0x00000002 + +#define DIRECTINPUT_REGSTR_VAL_APPIDFLAGA "AppIdFlag" +#define DIRECTINPUT_REGSTR_KEY_LASTAPPA "MostRecentApplication" +#define DIRECTINPUT_REGSTR_KEY_LASTMAPAPPA "MostRecentMapperApplication" +#define DIRECTINPUT_REGSTR_VAL_VERSIONA "Version" +#define DIRECTINPUT_REGSTR_VAL_NAMEA "Name" +#define DIRECTINPUT_REGSTR_VAL_IDA "Id" +#define DIRECTINPUT_REGSTR_VAL_MAPPERA "UsesMapper" +#define DIRECTINPUT_REGSTR_VAL_LASTSTARTA "MostRecentStart" + +#define DIRECTINPUT_REGSTR_VAL_APPIDFLAGW L"AppIdFlag" +#define DIRECTINPUT_REGSTR_KEY_LASTAPPW L"MostRecentApplication" +#define DIRECTINPUT_REGSTR_KEY_LASTMAPAPPW L"MostRecentMapperApplication" +#define DIRECTINPUT_REGSTR_VAL_VERSIONW L"Version" +#define DIRECTINPUT_REGSTR_VAL_NAMEW L"Name" +#define DIRECTINPUT_REGSTR_VAL_IDW L"Id" +#define DIRECTINPUT_REGSTR_VAL_MAPPERW L"UsesMapper" +#define DIRECTINPUT_REGSTR_VAL_LASTSTARTW L"MostRecentStart" + +#ifdef UNICODE +#define DIRECTINPUT_REGSTR_VAL_APPIDFLAG DIRECTINPUT_REGSTR_VAL_APPIDFLAGW +#define DIRECTINPUT_REGSTR_KEY_LASTAPP DIRECTINPUT_REGSTR_KEY_LASTAPPW +#define DIRECTINPUT_REGSTR_KEY_LASTMAPAPP DIRECTINPUT_REGSTR_KEY_LASTMAPAPPW +#define DIRECTINPUT_REGSTR_VAL_VERSION DIRECTINPUT_REGSTR_VAL_VERSIONW +#define DIRECTINPUT_REGSTR_VAL_NAME DIRECTINPUT_REGSTR_VAL_NAMEW +#define DIRECTINPUT_REGSTR_VAL_ID DIRECTINPUT_REGSTR_VAL_IDW +#define DIRECTINPUT_REGSTR_VAL_MAPPER DIRECTINPUT_REGSTR_VAL_MAPPERW +#define DIRECTINPUT_REGSTR_VAL_LASTSTART DIRECTINPUT_REGSTR_VAL_LASTSTARTW +#else +#define DIRECTINPUT_REGSTR_VAL_APPIDFLAG DIRECTINPUT_REGSTR_VAL_APPIDFLAGA +#define DIRECTINPUT_REGSTR_KEY_LASTAPP DIRECTINPUT_REGSTR_KEY_LASTAPPA +#define DIRECTINPUT_REGSTR_KEY_LASTMAPAPP DIRECTINPUT_REGSTR_KEY_LASTMAPAPPA +#define DIRECTINPUT_REGSTR_VAL_VERSION DIRECTINPUT_REGSTR_VAL_VERSIONA +#define DIRECTINPUT_REGSTR_VAL_NAME DIRECTINPUT_REGSTR_VAL_NAMEA +#define DIRECTINPUT_REGSTR_VAL_ID DIRECTINPUT_REGSTR_VAL_IDA +#define DIRECTINPUT_REGSTR_VAL_MAPPER DIRECTINPUT_REGSTR_VAL_MAPPERA +#define DIRECTINPUT_REGSTR_VAL_LASTSTART DIRECTINPUT_REGSTR_VAL_LASTSTARTA +#endif + + +/**************************************************************************** + * + * Return Codes + * + ****************************************************************************/ + +#define DIERR_NOMOREITEMS \ + MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_NO_MORE_ITEMS) + +/* + * Device driver-specific codes. + */ + +#define DIERR_DRIVERFIRST 0x80040300L +#define DIERR_DRIVERLAST 0x800403FFL + +/* + * Unless the specific driver has been precisely identified, no meaning + * should be attributed to these values other than that the driver + * originated the error. However, to illustrate the types of error that + * may be causing the failure, the PID force feedback driver distributed + * with DirectX 7 could return the following errors: + * + * DIERR_DRIVERFIRST + 1 + * The requested usage was not found. + * DIERR_DRIVERFIRST + 2 + * The parameter block couldn't be downloaded to the device. + * DIERR_DRIVERFIRST + 3 + * PID initialization failed. + * DIERR_DRIVERFIRST + 4 + * The provided values couldn't be scaled. + */ + + +/* + * Device installer errors. + */ + +/* + * Registry entry or DLL for class installer invalid + * or class installer not found. + */ +#define DIERR_INVALIDCLASSINSTALLER 0x80040400L + +/* + * The user cancelled the install operation. + */ +#define DIERR_CANCELLED 0x80040401L + +/* + * The INF file for the selected device could not be + * found or is invalid or is damaged. + */ +#define DIERR_BADINF 0x80040402L + +/**************************************************************************** + * + * Map files + * + ****************************************************************************/ + +/* + * Delete particular data from default map file. + */ +#define DIDIFT_DELETE 0x01000000 + +#ifdef __cplusplus +}; +#endif + +#endif /* __DINPUTD_INCLUDED__ */ diff --git a/videoInputSrcAndDemos/libs/DShow/Include/dllsetup.h b/videoInputSrcAndDemos/libs/DShow/Include/dllsetup.h index a43d2fd..4c5ac6d 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/dllsetup.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/dllsetup.h @@ -1,46 +1,46 @@ -//------------------------------------------------------------------------------ -// File: DllSetup.h -// -// Desc: DirectShow base classes. -// -// Copyright (c) Microsoft Corporation. All rights reserved. -//------------------------------------------------------------------------------ - - -// To be self registering, OLE servers must -// export functions named DllRegisterServer -// and DllUnregisterServer. To allow use of -// custom and default implementations the -// defaults are named AMovieDllRegisterServer -// and AMovieDllUnregisterServer. -// -// To the use the default implementation you -// must provide stub functions. -// -// i.e. STDAPI DllRegisterServer() -// { -// return AMovieDllRegisterServer(); -// } -// -// STDAPI DllUnregisterServer() -// { -// return AMovieDllUnregisterServer(); -// } -// -// -// AMovieDllRegisterServer calls IAMovieSetup.Register(), and -// AMovieDllUnregisterServer calls IAMovieSetup.Unregister(). - -STDAPI AMovieDllRegisterServer2( BOOL ); -STDAPI AMovieDllRegisterServer(); -STDAPI AMovieDllUnregisterServer(); - -// helper functions -STDAPI EliminateSubKey( HKEY, LPTSTR ); - - -STDAPI -AMovieSetupRegisterFilter2( const AMOVIESETUP_FILTER * const psetupdata - , IFilterMapper2 * pIFM2 - , BOOL bRegister ); - +//------------------------------------------------------------------------------ +// File: DllSetup.h +// +// Desc: DirectShow base classes. +// +// Copyright (c) Microsoft Corporation. All rights reserved. +//------------------------------------------------------------------------------ + + +// To be self registering, OLE servers must +// export functions named DllRegisterServer +// and DllUnregisterServer. To allow use of +// custom and default implementations the +// defaults are named AMovieDllRegisterServer +// and AMovieDllUnregisterServer. +// +// To the use the default implementation you +// must provide stub functions. +// +// i.e. STDAPI DllRegisterServer() +// { +// return AMovieDllRegisterServer(); +// } +// +// STDAPI DllUnregisterServer() +// { +// return AMovieDllUnregisterServer(); +// } +// +// +// AMovieDllRegisterServer calls IAMovieSetup.Register(), and +// AMovieDllUnregisterServer calls IAMovieSetup.Unregister(). + +STDAPI AMovieDllRegisterServer2( BOOL ); +STDAPI AMovieDllRegisterServer(); +STDAPI AMovieDllUnregisterServer(); + +// helper functions +STDAPI EliminateSubKey( HKEY, LPTSTR ); + + +STDAPI +AMovieSetupRegisterFilter2( const AMOVIESETUP_FILTER * const psetupdata + , IFilterMapper2 * pIFM2 + , BOOL bRegister ); + diff --git a/videoInputSrcAndDemos/libs/DShow/Include/dls1.h b/videoInputSrcAndDemos/libs/DShow/Include/dls1.h index b33425d..fc88a31 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/dls1.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/dls1.h @@ -1,267 +1,267 @@ -/*==========================================================================; -// -// dls1.h -// -// -// Description: -// -// Interface defines and structures for the Instrument Collection Form -// RIFF DLS. -// -// -// Written by Sonic Foundry 1996. Released for public use. -// -//=========================================================================*/ - -#ifndef _INC_DLS1 -#define _INC_DLS1 - -/*////////////////////////////////////////////////////////////////////////// -// -// -// Layout of an instrument collection: -// -// -// RIFF [] 'DLS ' [dlid,colh,INSTLIST,WAVEPOOL,INFOLIST] -// -// INSTLIST -// LIST [] 'lins' -// LIST [] 'ins ' [dlid,insh,RGNLIST,ARTLIST,INFOLIST] -// LIST [] 'ins ' [dlid,insh,RGNLIST,ARTLIST,INFOLIST] -// LIST [] 'ins ' [dlid,insh,RGNLIST,ARTLIST,INFOLIST] -// -// RGNLIST -// LIST [] 'lrgn' -// LIST [] 'rgn ' [rgnh,wsmp,wlnk,ARTLIST] -// LIST [] 'rgn ' [rgnh,wsmp,wlnk,ARTLIST] -// LIST [] 'rgn ' [rgnh,wsmp,wlnk,ARTLIST] -// -// ARTLIST -// LIST [] 'lart' -// 'art1' level 1 Articulation connection graph -// 'art2' level 2 Articulation connection graph -// '3rd1' Possible 3rd party articulation structure 1 -// '3rd2' Possible 3rd party articulation structure 2 .... and so on -// -// WAVEPOOL -// ptbl [] [pool table] -// LIST [] 'wvpl' -// [path], -// [path], -// LIST [] 'wave' [dlid,RIFFWAVE] -// LIST [] 'wave' [dlid,RIFFWAVE] -// LIST [] 'wave' [dlid,RIFFWAVE] -// LIST [] 'wave' [dlid,RIFFWAVE] -// LIST [] 'wave' [dlid,RIFFWAVE] -// -// INFOLIST -// LIST [] 'INFO' -// 'icmt' 'One of those crazy comments.' -// 'icop' 'Copyright (C) 1996 Sonic Foundry' -// -/////////////////////////////////////////////////////////////////////////*/ - - -/*///////////////////////////////////////////////////////////////////////// -// FOURCC's used in the DLS file -/////////////////////////////////////////////////////////////////////////*/ - -#define FOURCC_DLS mmioFOURCC('D','L','S',' ') -#define FOURCC_DLID mmioFOURCC('d','l','i','d') -#define FOURCC_COLH mmioFOURCC('c','o','l','h') -#define FOURCC_WVPL mmioFOURCC('w','v','p','l') -#define FOURCC_PTBL mmioFOURCC('p','t','b','l') -#define FOURCC_PATH mmioFOURCC('p','a','t','h') -#define FOURCC_wave mmioFOURCC('w','a','v','e') -#define FOURCC_LINS mmioFOURCC('l','i','n','s') -#define FOURCC_INS mmioFOURCC('i','n','s',' ') -#define FOURCC_INSH mmioFOURCC('i','n','s','h') -#define FOURCC_LRGN mmioFOURCC('l','r','g','n') -#define FOURCC_RGN mmioFOURCC('r','g','n',' ') -#define FOURCC_RGNH mmioFOURCC('r','g','n','h') -#define FOURCC_LART mmioFOURCC('l','a','r','t') -#define FOURCC_ART1 mmioFOURCC('a','r','t','1') -#define FOURCC_WLNK mmioFOURCC('w','l','n','k') -#define FOURCC_WSMP mmioFOURCC('w','s','m','p') -#define FOURCC_VERS mmioFOURCC('v','e','r','s') - -/*///////////////////////////////////////////////////////////////////////// -// Articulation connection graph definitions -/////////////////////////////////////////////////////////////////////////*/ - -/* Generic Sources */ -#define CONN_SRC_NONE 0x0000 -#define CONN_SRC_LFO 0x0001 -#define CONN_SRC_KEYONVELOCITY 0x0002 -#define CONN_SRC_KEYNUMBER 0x0003 -#define CONN_SRC_EG1 0x0004 -#define CONN_SRC_EG2 0x0005 -#define CONN_SRC_PITCHWHEEL 0x0006 - -/* Midi Controllers 0-127 */ -#define CONN_SRC_CC1 0x0081 -#define CONN_SRC_CC7 0x0087 -#define CONN_SRC_CC10 0x008a -#define CONN_SRC_CC11 0x008b - -/* Generic Destinations */ -#define CONN_DST_NONE 0x0000 -#define CONN_DST_ATTENUATION 0x0001 -#define CONN_DST_PITCH 0x0003 -#define CONN_DST_PAN 0x0004 - -/* LFO Destinations */ -#define CONN_DST_LFO_FREQUENCY 0x0104 -#define CONN_DST_LFO_STARTDELAY 0x0105 - -/* EG1 Destinations */ -#define CONN_DST_EG1_ATTACKTIME 0x0206 -#define CONN_DST_EG1_DECAYTIME 0x0207 -#define CONN_DST_EG1_RELEASETIME 0x0209 -#define CONN_DST_EG1_SUSTAINLEVEL 0x020a - -/* EG2 Destinations */ -#define CONN_DST_EG2_ATTACKTIME 0x030a -#define CONN_DST_EG2_DECAYTIME 0x030b -#define CONN_DST_EG2_RELEASETIME 0x030d -#define CONN_DST_EG2_SUSTAINLEVEL 0x030e - -#define CONN_TRN_NONE 0x0000 -#define CONN_TRN_CONCAVE 0x0001 - -typedef struct _DLSID { - ULONG ulData1; - USHORT usData2; - USHORT usData3; - BYTE abData4[8]; -} DLSID, FAR *LPDLSID; - -typedef struct _DLSVERSION { - DWORD dwVersionMS; - DWORD dwVersionLS; -}DLSVERSION, FAR *LPDLSVERSION; - - -typedef struct _CONNECTION { - USHORT usSource; - USHORT usControl; - USHORT usDestination; - USHORT usTransform; - LONG lScale; - }CONNECTION, FAR *LPCONNECTION; - - -/* Level 1 Articulation Data */ - -typedef struct _CONNECTIONLIST { - ULONG cbSize; /* size of the connection list structure */ - ULONG cConnections; /* count of connections in the list */ - } CONNECTIONLIST, FAR *LPCONNECTIONLIST; - - - -/*///////////////////////////////////////////////////////////////////////// -// Generic type defines for regions and instruments -/////////////////////////////////////////////////////////////////////////*/ - -typedef struct _RGNRANGE { - USHORT usLow; - USHORT usHigh; -}RGNRANGE, FAR * LPRGNRANGE; - -#define F_INSTRUMENT_DRUMS 0x80000000 - -typedef struct _MIDILOCALE { - ULONG ulBank; - ULONG ulInstrument; -}MIDILOCALE, FAR *LPMIDILOCALE; - -/*///////////////////////////////////////////////////////////////////////// -// Header structures found in an DLS file for collection, instruments, and -// regions. -/////////////////////////////////////////////////////////////////////////*/ - -#define F_RGN_OPTION_SELFNONEXCLUSIVE 0x0001 - -typedef struct _RGNHEADER { - RGNRANGE RangeKey; /* Key range */ - RGNRANGE RangeVelocity; /* Velocity Range */ - USHORT fusOptions; /* Synthesis options for this range */ - USHORT usKeyGroup; /* Key grouping for non simultaneous play */ - /* 0 = no group, 1 up is group */ - /* for Level 1 only groups 1-15 are allowed */ -}RGNHEADER, FAR *LPRGNHEADER; - -typedef struct _INSTHEADER { - ULONG cRegions; /* Count of regions in this instrument */ - MIDILOCALE Locale; /* Intended MIDI locale of this instrument */ -}INSTHEADER, FAR *LPINSTHEADER; - -typedef struct _DLSHEADER { - ULONG cInstruments; /* Count of instruments in the collection */ -}DLSHEADER, FAR *LPDLSHEADER; - -/*//////////////////////////////////////////////////////////////////////////// -// definitions for the Wave link structure -////////////////////////////////////////////////////////////////////////////*/ - -/* **** For level 1 only WAVELINK_CHANNEL_MONO is valid **** */ -/* ulChannel allows for up to 32 channels of audio with each bit position */ -/* specifiying a channel of playback */ - -#define WAVELINK_CHANNEL_LEFT 0x0001l -#define WAVELINK_CHANNEL_RIGHT 0x0002l - -#define F_WAVELINK_PHASE_MASTER 0x0001 - -typedef struct _WAVELINK { /* any paths or links are stored right after struct */ - USHORT fusOptions; /* options flags for this wave */ - USHORT usPhaseGroup; /* Phase grouping for locking channels */ - ULONG ulChannel; /* channel placement */ - ULONG ulTableIndex; /* index into the wave pool table, 0 based */ -}WAVELINK, FAR *LPWAVELINK; - -#define POOL_CUE_NULL 0xffffffffl - -typedef struct _POOLCUE { - ULONG ulOffset; /* Offset to the entry in the list */ -}POOLCUE, FAR *LPPOOLCUE; - -typedef struct _POOLTABLE { - ULONG cbSize; /* size of the pool table structure */ - ULONG cCues; /* count of cues in the list */ - } POOLTABLE, FAR *LPPOOLTABLE; - -/*//////////////////////////////////////////////////////////////////////////// -// Structures for the "wsmp" chunk -////////////////////////////////////////////////////////////////////////////*/ - -#define F_WSMP_NO_TRUNCATION 0x0001l -#define F_WSMP_NO_COMPRESSION 0x0002l - - -typedef struct _rwsmp { - ULONG cbSize; - USHORT usUnityNote; /* MIDI Unity Playback Note */ - SHORT sFineTune; /* Fine Tune in log tuning */ - LONG lAttenuation; /* Overall Attenuation to be applied to data */ - ULONG fulOptions; /* Flag options */ - ULONG cSampleLoops; /* Count of Sample loops, 0 loops is one shot */ - } WSMPL, FAR *LPWSMPL; - - -/* This loop type is a normal forward playing loop which is continually */ -/* played until the envelope reaches an off threshold in the release */ -/* portion of the volume envelope */ - -#define WLOOP_TYPE_FORWARD 0 - -typedef struct _rloop { - ULONG cbSize; - ULONG ulType; /* Loop Type */ - ULONG ulStart; /* Start of loop in samples */ - ULONG ulLength; /* Length of loop in samples */ -} WLOOP, FAR *LPWLOOP; - -#endif /*_INC_DLS1 */ - +/*==========================================================================; +// +// dls1.h +// +// +// Description: +// +// Interface defines and structures for the Instrument Collection Form +// RIFF DLS. +// +// +// Written by Sonic Foundry 1996. Released for public use. +// +//=========================================================================*/ + +#ifndef _INC_DLS1 +#define _INC_DLS1 + +/*////////////////////////////////////////////////////////////////////////// +// +// +// Layout of an instrument collection: +// +// +// RIFF [] 'DLS ' [dlid,colh,INSTLIST,WAVEPOOL,INFOLIST] +// +// INSTLIST +// LIST [] 'lins' +// LIST [] 'ins ' [dlid,insh,RGNLIST,ARTLIST,INFOLIST] +// LIST [] 'ins ' [dlid,insh,RGNLIST,ARTLIST,INFOLIST] +// LIST [] 'ins ' [dlid,insh,RGNLIST,ARTLIST,INFOLIST] +// +// RGNLIST +// LIST [] 'lrgn' +// LIST [] 'rgn ' [rgnh,wsmp,wlnk,ARTLIST] +// LIST [] 'rgn ' [rgnh,wsmp,wlnk,ARTLIST] +// LIST [] 'rgn ' [rgnh,wsmp,wlnk,ARTLIST] +// +// ARTLIST +// LIST [] 'lart' +// 'art1' level 1 Articulation connection graph +// 'art2' level 2 Articulation connection graph +// '3rd1' Possible 3rd party articulation structure 1 +// '3rd2' Possible 3rd party articulation structure 2 .... and so on +// +// WAVEPOOL +// ptbl [] [pool table] +// LIST [] 'wvpl' +// [path], +// [path], +// LIST [] 'wave' [dlid,RIFFWAVE] +// LIST [] 'wave' [dlid,RIFFWAVE] +// LIST [] 'wave' [dlid,RIFFWAVE] +// LIST [] 'wave' [dlid,RIFFWAVE] +// LIST [] 'wave' [dlid,RIFFWAVE] +// +// INFOLIST +// LIST [] 'INFO' +// 'icmt' 'One of those crazy comments.' +// 'icop' 'Copyright (C) 1996 Sonic Foundry' +// +/////////////////////////////////////////////////////////////////////////*/ + + +/*///////////////////////////////////////////////////////////////////////// +// FOURCC's used in the DLS file +/////////////////////////////////////////////////////////////////////////*/ + +#define FOURCC_DLS mmioFOURCC('D','L','S',' ') +#define FOURCC_DLID mmioFOURCC('d','l','i','d') +#define FOURCC_COLH mmioFOURCC('c','o','l','h') +#define FOURCC_WVPL mmioFOURCC('w','v','p','l') +#define FOURCC_PTBL mmioFOURCC('p','t','b','l') +#define FOURCC_PATH mmioFOURCC('p','a','t','h') +#define FOURCC_wave mmioFOURCC('w','a','v','e') +#define FOURCC_LINS mmioFOURCC('l','i','n','s') +#define FOURCC_INS mmioFOURCC('i','n','s',' ') +#define FOURCC_INSH mmioFOURCC('i','n','s','h') +#define FOURCC_LRGN mmioFOURCC('l','r','g','n') +#define FOURCC_RGN mmioFOURCC('r','g','n',' ') +#define FOURCC_RGNH mmioFOURCC('r','g','n','h') +#define FOURCC_LART mmioFOURCC('l','a','r','t') +#define FOURCC_ART1 mmioFOURCC('a','r','t','1') +#define FOURCC_WLNK mmioFOURCC('w','l','n','k') +#define FOURCC_WSMP mmioFOURCC('w','s','m','p') +#define FOURCC_VERS mmioFOURCC('v','e','r','s') + +/*///////////////////////////////////////////////////////////////////////// +// Articulation connection graph definitions +/////////////////////////////////////////////////////////////////////////*/ + +/* Generic Sources */ +#define CONN_SRC_NONE 0x0000 +#define CONN_SRC_LFO 0x0001 +#define CONN_SRC_KEYONVELOCITY 0x0002 +#define CONN_SRC_KEYNUMBER 0x0003 +#define CONN_SRC_EG1 0x0004 +#define CONN_SRC_EG2 0x0005 +#define CONN_SRC_PITCHWHEEL 0x0006 + +/* Midi Controllers 0-127 */ +#define CONN_SRC_CC1 0x0081 +#define CONN_SRC_CC7 0x0087 +#define CONN_SRC_CC10 0x008a +#define CONN_SRC_CC11 0x008b + +/* Generic Destinations */ +#define CONN_DST_NONE 0x0000 +#define CONN_DST_ATTENUATION 0x0001 +#define CONN_DST_PITCH 0x0003 +#define CONN_DST_PAN 0x0004 + +/* LFO Destinations */ +#define CONN_DST_LFO_FREQUENCY 0x0104 +#define CONN_DST_LFO_STARTDELAY 0x0105 + +/* EG1 Destinations */ +#define CONN_DST_EG1_ATTACKTIME 0x0206 +#define CONN_DST_EG1_DECAYTIME 0x0207 +#define CONN_DST_EG1_RELEASETIME 0x0209 +#define CONN_DST_EG1_SUSTAINLEVEL 0x020a + +/* EG2 Destinations */ +#define CONN_DST_EG2_ATTACKTIME 0x030a +#define CONN_DST_EG2_DECAYTIME 0x030b +#define CONN_DST_EG2_RELEASETIME 0x030d +#define CONN_DST_EG2_SUSTAINLEVEL 0x030e + +#define CONN_TRN_NONE 0x0000 +#define CONN_TRN_CONCAVE 0x0001 + +typedef struct _DLSID { + ULONG ulData1; + USHORT usData2; + USHORT usData3; + BYTE abData4[8]; +} DLSID, FAR *LPDLSID; + +typedef struct _DLSVERSION { + DWORD dwVersionMS; + DWORD dwVersionLS; +}DLSVERSION, FAR *LPDLSVERSION; + + +typedef struct _CONNECTION { + USHORT usSource; + USHORT usControl; + USHORT usDestination; + USHORT usTransform; + LONG lScale; + }CONNECTION, FAR *LPCONNECTION; + + +/* Level 1 Articulation Data */ + +typedef struct _CONNECTIONLIST { + ULONG cbSize; /* size of the connection list structure */ + ULONG cConnections; /* count of connections in the list */ + } CONNECTIONLIST, FAR *LPCONNECTIONLIST; + + + +/*///////////////////////////////////////////////////////////////////////// +// Generic type defines for regions and instruments +/////////////////////////////////////////////////////////////////////////*/ + +typedef struct _RGNRANGE { + USHORT usLow; + USHORT usHigh; +}RGNRANGE, FAR * LPRGNRANGE; + +#define F_INSTRUMENT_DRUMS 0x80000000 + +typedef struct _MIDILOCALE { + ULONG ulBank; + ULONG ulInstrument; +}MIDILOCALE, FAR *LPMIDILOCALE; + +/*///////////////////////////////////////////////////////////////////////// +// Header structures found in an DLS file for collection, instruments, and +// regions. +/////////////////////////////////////////////////////////////////////////*/ + +#define F_RGN_OPTION_SELFNONEXCLUSIVE 0x0001 + +typedef struct _RGNHEADER { + RGNRANGE RangeKey; /* Key range */ + RGNRANGE RangeVelocity; /* Velocity Range */ + USHORT fusOptions; /* Synthesis options for this range */ + USHORT usKeyGroup; /* Key grouping for non simultaneous play */ + /* 0 = no group, 1 up is group */ + /* for Level 1 only groups 1-15 are allowed */ +}RGNHEADER, FAR *LPRGNHEADER; + +typedef struct _INSTHEADER { + ULONG cRegions; /* Count of regions in this instrument */ + MIDILOCALE Locale; /* Intended MIDI locale of this instrument */ +}INSTHEADER, FAR *LPINSTHEADER; + +typedef struct _DLSHEADER { + ULONG cInstruments; /* Count of instruments in the collection */ +}DLSHEADER, FAR *LPDLSHEADER; + +/*//////////////////////////////////////////////////////////////////////////// +// definitions for the Wave link structure +////////////////////////////////////////////////////////////////////////////*/ + +/* **** For level 1 only WAVELINK_CHANNEL_MONO is valid **** */ +/* ulChannel allows for up to 32 channels of audio with each bit position */ +/* specifiying a channel of playback */ + +#define WAVELINK_CHANNEL_LEFT 0x0001l +#define WAVELINK_CHANNEL_RIGHT 0x0002l + +#define F_WAVELINK_PHASE_MASTER 0x0001 + +typedef struct _WAVELINK { /* any paths or links are stored right after struct */ + USHORT fusOptions; /* options flags for this wave */ + USHORT usPhaseGroup; /* Phase grouping for locking channels */ + ULONG ulChannel; /* channel placement */ + ULONG ulTableIndex; /* index into the wave pool table, 0 based */ +}WAVELINK, FAR *LPWAVELINK; + +#define POOL_CUE_NULL 0xffffffffl + +typedef struct _POOLCUE { + ULONG ulOffset; /* Offset to the entry in the list */ +}POOLCUE, FAR *LPPOOLCUE; + +typedef struct _POOLTABLE { + ULONG cbSize; /* size of the pool table structure */ + ULONG cCues; /* count of cues in the list */ + } POOLTABLE, FAR *LPPOOLTABLE; + +/*//////////////////////////////////////////////////////////////////////////// +// Structures for the "wsmp" chunk +////////////////////////////////////////////////////////////////////////////*/ + +#define F_WSMP_NO_TRUNCATION 0x0001l +#define F_WSMP_NO_COMPRESSION 0x0002l + + +typedef struct _rwsmp { + ULONG cbSize; + USHORT usUnityNote; /* MIDI Unity Playback Note */ + SHORT sFineTune; /* Fine Tune in log tuning */ + LONG lAttenuation; /* Overall Attenuation to be applied to data */ + ULONG fulOptions; /* Flag options */ + ULONG cSampleLoops; /* Count of Sample loops, 0 loops is one shot */ + } WSMPL, FAR *LPWSMPL; + + +/* This loop type is a normal forward playing loop which is continually */ +/* played until the envelope reaches an off threshold in the release */ +/* portion of the volume envelope */ + +#define WLOOP_TYPE_FORWARD 0 + +typedef struct _rloop { + ULONG cbSize; + ULONG ulType; /* Loop Type */ + ULONG ulStart; /* Start of loop in samples */ + ULONG ulLength; /* Length of loop in samples */ +} WLOOP, FAR *LPWLOOP; + +#endif /*_INC_DLS1 */ + diff --git a/videoInputSrcAndDemos/libs/DShow/Include/dls2.h b/videoInputSrcAndDemos/libs/DShow/Include/dls2.h index b372f35..30cec23 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/dls2.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/dls2.h @@ -1,130 +1,130 @@ -/* - - dls2.h - - Description: - - Interface defines and structures for the DLS2 extensions of DLS. - - - Written by Microsoft 1998. Released for public use. - -*/ - -#ifndef _INC_DLS2 -#define _INC_DLS2 - -/* - FOURCC's used in the DLS2 file, in addition to DLS1 chunks -*/ - -#define FOURCC_RGN2 mmioFOURCC('r','g','n','2') -#define FOURCC_LAR2 mmioFOURCC('l','a','r','2') -#define FOURCC_ART2 mmioFOURCC('a','r','t','2') -#define FOURCC_CDL mmioFOURCC('c','d','l',' ') -#define FOURCC_DLID mmioFOURCC('d','l','i','d') - -/* - Articulation connection graph definitions. These are in addition to - the definitions in the DLS1 header. -*/ - -/* Generic Sources (in addition to DLS1 sources. */ -#define CONN_SRC_POLYPRESSURE 0x0007 /* Polyphonic Pressure */ -#define CONN_SRC_CHANNELPRESSURE 0x0008 /* Channel Pressure */ -#define CONN_SRC_VIBRATO 0x0009 /* Vibrato LFO */ -#define CONN_SRC_MONOPRESSURE 0x000a /* MIDI Mono pressure */ - - -/* Midi Controllers */ -#define CONN_SRC_CC91 0x00db /* Reverb Send */ -#define CONN_SRC_CC93 0x00dd /* Chorus Send */ - - -/* Generic Destinations */ -#define CONN_DST_GAIN 0x0001 /* Same as CONN_DST_ ATTENUATION, but more appropriate terminology. */ -#define CONN_DST_KEYNUMBER 0x0005 /* Key Number Generator */ - -/* Audio Channel Output Destinations */ -#define CONN_DST_LEFT 0x0010 /* Left Channel Send */ -#define CONN_DST_RIGHT 0x0011 /* Right Channel Send */ -#define CONN_DST_CENTER 0x0012 /* Center Channel Send */ -#define CONN_DST_LEFTREAR 0x0013 /* Left Rear Channel Send */ -#define CONN_DST_RIGHTREAR 0x0014 /* Right Rear Channel Send */ -#define CONN_DST_LFE_CHANNEL 0x0015 /* LFE Channel Send */ -#define CONN_DST_CHORUS 0x0080 /* Chorus Send */ -#define CONN_DST_REVERB 0x0081 /* Reverb Send */ - -/* Vibrato LFO Destinations */ -#define CONN_DST_VIB_FREQUENCY 0x0114 /* Vibrato Frequency */ -#define CONN_DST_VIB_STARTDELAY 0x0115 /* Vibrato Start Delay */ - -/* EG1 Destinations */ -#define CONN_DST_EG1_DELAYTIME 0x020B /* EG1 Delay Time */ -#define CONN_DST_EG1_HOLDTIME 0x020C /* EG1 Hold Time */ -#define CONN_DST_EG1_SHUTDOWNTIME 0x020D /* EG1 Shutdown Time */ - - -/* EG2 Destinations */ -#define CONN_DST_EG2_DELAYTIME 0x030F /* EG2 Delay Time */ -#define CONN_DST_EG2_HOLDTIME 0x0310 /* EG2 Hold Time */ - - -/* Filter Destinations */ -#define CONN_DST_FILTER_CUTOFF 0x0500 /* Filter Cutoff Frequency */ -#define CONN_DST_FILTER_Q 0x0501 /* Filter Resonance */ - - -/* Transforms */ -#define CONN_TRN_CONVEX 0x0002 /* Convex Transform */ -#define CONN_TRN_SWITCH 0x0003 /* Switch Transform */ - - -/* Conditional chunk operators */ - #define DLS_CDL_AND 0x0001 /* X = X & Y */ - #define DLS_CDL_OR 0x0002 /* X = X | Y */ - #define DLS_CDL_XOR 0x0003 /* X = X ^ Y */ - #define DLS_CDL_ADD 0x0004 /* X = X + Y */ - #define DLS_CDL_SUBTRACT 0x0005 /* X = X - Y */ - #define DLS_CDL_MULTIPLY 0x0006 /* X = X * Y */ - #define DLS_CDL_DIVIDE 0x0007 /* X = X / Y */ - #define DLS_CDL_LOGICAL_AND 0x0008 /* X = X && Y */ - #define DLS_CDL_LOGICAL_OR 0x0009 /* X = X || Y */ - #define DLS_CDL_LT 0x000A /* X = (X < Y) */ - #define DLS_CDL_LE 0x000B /* X = (X <= Y) */ - #define DLS_CDL_GT 0x000C /* X = (X > Y) */ - #define DLS_CDL_GE 0x000D /* X = (X >= Y) */ - #define DLS_CDL_EQ 0x000E /* X = (X == Y) */ - #define DLS_CDL_NOT 0x000F /* X = !X */ - #define DLS_CDL_CONST 0x0010 /* 32-bit constant */ - #define DLS_CDL_QUERY 0x0011 /* 32-bit value returned from query */ - #define DLS_CDL_QUERYSUPPORTED 0x0012 /* Test to see if query is supported by synth */ - -/* - Loop and release -*/ - -#define WLOOP_TYPE_RELEASE 1 - -/* - WaveLink chunk -*/ - -#define F_WAVELINK_MULTICHANNEL 0x0002 - - -/* - DLSID queries for -*/ - -DEFINE_GUID(DLSID_GMInHardware, 0x178f2f24, 0xc364, 0x11d1, 0xa7, 0x60, 0x00, 0x00, 0xf8, 0x75, 0xac, 0x12); -DEFINE_GUID(DLSID_GSInHardware, 0x178f2f25, 0xc364, 0x11d1, 0xa7, 0x60, 0x00, 0x00, 0xf8, 0x75, 0xac, 0x12); -DEFINE_GUID(DLSID_XGInHardware, 0x178f2f26, 0xc364, 0x11d1, 0xa7, 0x60, 0x00, 0x00, 0xf8, 0x75, 0xac, 0x12); -DEFINE_GUID(DLSID_SupportsDLS1, 0x178f2f27, 0xc364, 0x11d1, 0xa7, 0x60, 0x00, 0x00, 0xf8, 0x75, 0xac, 0x12); -DEFINE_GUID(DLSID_SupportsDLS2, 0xf14599e5, 0x4689, 0x11d2, 0xaf, 0xa6, 0x0, 0xaa, 0x0, 0x24, 0xd8, 0xb6); -DEFINE_GUID(DLSID_SampleMemorySize, 0x178f2f28, 0xc364, 0x11d1, 0xa7, 0x60, 0x00, 0x00, 0xf8, 0x75, 0xac, 0x12); -DEFINE_GUID(DLSID_ManufacturersID, 0xb03e1181, 0x8095, 0x11d2, 0xa1, 0xef, 0x0, 0x60, 0x8, 0x33, 0xdb, 0xd8); -DEFINE_GUID(DLSID_ProductID, 0xb03e1182, 0x8095, 0x11d2, 0xa1, 0xef, 0x0, 0x60, 0x8, 0x33, 0xdb, 0xd8); -DEFINE_GUID(DLSID_SamplePlaybackRate, 0x2a91f713, 0xa4bf, 0x11d2, 0xbb, 0xdf, 0x0, 0x60, 0x8, 0x33, 0xdb, 0xd8); - -#endif /* _INC_DLS2 */ +/* + + dls2.h + + Description: + + Interface defines and structures for the DLS2 extensions of DLS. + + + Written by Microsoft 1998. Released for public use. + +*/ + +#ifndef _INC_DLS2 +#define _INC_DLS2 + +/* + FOURCC's used in the DLS2 file, in addition to DLS1 chunks +*/ + +#define FOURCC_RGN2 mmioFOURCC('r','g','n','2') +#define FOURCC_LAR2 mmioFOURCC('l','a','r','2') +#define FOURCC_ART2 mmioFOURCC('a','r','t','2') +#define FOURCC_CDL mmioFOURCC('c','d','l',' ') +#define FOURCC_DLID mmioFOURCC('d','l','i','d') + +/* + Articulation connection graph definitions. These are in addition to + the definitions in the DLS1 header. +*/ + +/* Generic Sources (in addition to DLS1 sources. */ +#define CONN_SRC_POLYPRESSURE 0x0007 /* Polyphonic Pressure */ +#define CONN_SRC_CHANNELPRESSURE 0x0008 /* Channel Pressure */ +#define CONN_SRC_VIBRATO 0x0009 /* Vibrato LFO */ +#define CONN_SRC_MONOPRESSURE 0x000a /* MIDI Mono pressure */ + + +/* Midi Controllers */ +#define CONN_SRC_CC91 0x00db /* Reverb Send */ +#define CONN_SRC_CC93 0x00dd /* Chorus Send */ + + +/* Generic Destinations */ +#define CONN_DST_GAIN 0x0001 /* Same as CONN_DST_ ATTENUATION, but more appropriate terminology. */ +#define CONN_DST_KEYNUMBER 0x0005 /* Key Number Generator */ + +/* Audio Channel Output Destinations */ +#define CONN_DST_LEFT 0x0010 /* Left Channel Send */ +#define CONN_DST_RIGHT 0x0011 /* Right Channel Send */ +#define CONN_DST_CENTER 0x0012 /* Center Channel Send */ +#define CONN_DST_LEFTREAR 0x0013 /* Left Rear Channel Send */ +#define CONN_DST_RIGHTREAR 0x0014 /* Right Rear Channel Send */ +#define CONN_DST_LFE_CHANNEL 0x0015 /* LFE Channel Send */ +#define CONN_DST_CHORUS 0x0080 /* Chorus Send */ +#define CONN_DST_REVERB 0x0081 /* Reverb Send */ + +/* Vibrato LFO Destinations */ +#define CONN_DST_VIB_FREQUENCY 0x0114 /* Vibrato Frequency */ +#define CONN_DST_VIB_STARTDELAY 0x0115 /* Vibrato Start Delay */ + +/* EG1 Destinations */ +#define CONN_DST_EG1_DELAYTIME 0x020B /* EG1 Delay Time */ +#define CONN_DST_EG1_HOLDTIME 0x020C /* EG1 Hold Time */ +#define CONN_DST_EG1_SHUTDOWNTIME 0x020D /* EG1 Shutdown Time */ + + +/* EG2 Destinations */ +#define CONN_DST_EG2_DELAYTIME 0x030F /* EG2 Delay Time */ +#define CONN_DST_EG2_HOLDTIME 0x0310 /* EG2 Hold Time */ + + +/* Filter Destinations */ +#define CONN_DST_FILTER_CUTOFF 0x0500 /* Filter Cutoff Frequency */ +#define CONN_DST_FILTER_Q 0x0501 /* Filter Resonance */ + + +/* Transforms */ +#define CONN_TRN_CONVEX 0x0002 /* Convex Transform */ +#define CONN_TRN_SWITCH 0x0003 /* Switch Transform */ + + +/* Conditional chunk operators */ + #define DLS_CDL_AND 0x0001 /* X = X & Y */ + #define DLS_CDL_OR 0x0002 /* X = X | Y */ + #define DLS_CDL_XOR 0x0003 /* X = X ^ Y */ + #define DLS_CDL_ADD 0x0004 /* X = X + Y */ + #define DLS_CDL_SUBTRACT 0x0005 /* X = X - Y */ + #define DLS_CDL_MULTIPLY 0x0006 /* X = X * Y */ + #define DLS_CDL_DIVIDE 0x0007 /* X = X / Y */ + #define DLS_CDL_LOGICAL_AND 0x0008 /* X = X && Y */ + #define DLS_CDL_LOGICAL_OR 0x0009 /* X = X || Y */ + #define DLS_CDL_LT 0x000A /* X = (X < Y) */ + #define DLS_CDL_LE 0x000B /* X = (X <= Y) */ + #define DLS_CDL_GT 0x000C /* X = (X > Y) */ + #define DLS_CDL_GE 0x000D /* X = (X >= Y) */ + #define DLS_CDL_EQ 0x000E /* X = (X == Y) */ + #define DLS_CDL_NOT 0x000F /* X = !X */ + #define DLS_CDL_CONST 0x0010 /* 32-bit constant */ + #define DLS_CDL_QUERY 0x0011 /* 32-bit value returned from query */ + #define DLS_CDL_QUERYSUPPORTED 0x0012 /* Test to see if query is supported by synth */ + +/* + Loop and release +*/ + +#define WLOOP_TYPE_RELEASE 1 + +/* + WaveLink chunk +*/ + +#define F_WAVELINK_MULTICHANNEL 0x0002 + + +/* + DLSID queries for +*/ + +DEFINE_GUID(DLSID_GMInHardware, 0x178f2f24, 0xc364, 0x11d1, 0xa7, 0x60, 0x00, 0x00, 0xf8, 0x75, 0xac, 0x12); +DEFINE_GUID(DLSID_GSInHardware, 0x178f2f25, 0xc364, 0x11d1, 0xa7, 0x60, 0x00, 0x00, 0xf8, 0x75, 0xac, 0x12); +DEFINE_GUID(DLSID_XGInHardware, 0x178f2f26, 0xc364, 0x11d1, 0xa7, 0x60, 0x00, 0x00, 0xf8, 0x75, 0xac, 0x12); +DEFINE_GUID(DLSID_SupportsDLS1, 0x178f2f27, 0xc364, 0x11d1, 0xa7, 0x60, 0x00, 0x00, 0xf8, 0x75, 0xac, 0x12); +DEFINE_GUID(DLSID_SupportsDLS2, 0xf14599e5, 0x4689, 0x11d2, 0xaf, 0xa6, 0x0, 0xaa, 0x0, 0x24, 0xd8, 0xb6); +DEFINE_GUID(DLSID_SampleMemorySize, 0x178f2f28, 0xc364, 0x11d1, 0xa7, 0x60, 0x00, 0x00, 0xf8, 0x75, 0xac, 0x12); +DEFINE_GUID(DLSID_ManufacturersID, 0xb03e1181, 0x8095, 0x11d2, 0xa1, 0xef, 0x0, 0x60, 0x8, 0x33, 0xdb, 0xd8); +DEFINE_GUID(DLSID_ProductID, 0xb03e1182, 0x8095, 0x11d2, 0xa1, 0xef, 0x0, 0x60, 0x8, 0x33, 0xdb, 0xd8); +DEFINE_GUID(DLSID_SamplePlaybackRate, 0x2a91f713, 0xa4bf, 0x11d2, 0xbb, 0xdf, 0x0, 0x60, 0x8, 0x33, 0xdb, 0xd8); + +#endif /* _INC_DLS2 */ diff --git a/videoInputSrcAndDemos/libs/DShow/Include/dmdls.h b/videoInputSrcAndDemos/libs/DShow/Include/dmdls.h index 8d06778..c507268 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/dmdls.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/dmdls.h @@ -1,199 +1,199 @@ -/************************************************************************ -* * -* dmdls.h -- DLS download definitions for DirectMusic API's * -* * -* Copyright (c) Microsoft Corporation. All rights reserved. * -* * -************************************************************************/ - -#ifndef _DMDLS_ -#define _DMDLS_ - -#include "dls1.h" - -typedef long PCENT; /* Pitch cents */ -typedef long GCENT; /* Gain cents */ -typedef long TCENT; /* Time cents */ -typedef long PERCENT; /* Per.. cent! */ - -typedef LONGLONG REFERENCE_TIME; -typedef REFERENCE_TIME *LPREFERENCE_TIME; - -#ifndef MAKE_FOURCC -#define MAKEFOURCC(ch0, ch1, ch2, ch3) \ - ((DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8) | \ - ((DWORD)(BYTE)(ch2) << 16) | ((DWORD)(BYTE)(ch3) << 24 )) - - -typedef DWORD FOURCC; /* a four character code */ -#endif - -typedef struct _DMUS_DOWNLOADINFO -{ - DWORD dwDLType; /* Instrument or Wave */ - DWORD dwDLId; /* Unique identifier to tag this download. */ - DWORD dwNumOffsetTableEntries; /* Number of index in the offset address table. */ - DWORD cbSize; /* Total size of this memory chunk. */ -} DMUS_DOWNLOADINFO; - -#define DMUS_DOWNLOADINFO_INSTRUMENT 1 -#define DMUS_DOWNLOADINFO_WAVE 2 -#define DMUS_DOWNLOADINFO_INSTRUMENT2 3 /* New version for better DLS2 support. */ - -/* Support for oneshot and streaming wave data - */ -#define DMUS_DOWNLOADINFO_WAVEARTICULATION 4 /* Wave articulation data */ -#define DMUS_DOWNLOADINFO_STREAMINGWAVE 5 /* One chunk of a streaming */ -#define DMUS_DOWNLOADINFO_ONESHOTWAVE 6 - -#define DMUS_DEFAULT_SIZE_OFFSETTABLE 1 - -/* Flags for DMUS_INSTRUMENT's ulFlags member */ - -#define DMUS_INSTRUMENT_GM_INSTRUMENT (1 << 0) - -typedef struct _DMUS_OFFSETTABLE -{ - ULONG ulOffsetTable[DMUS_DEFAULT_SIZE_OFFSETTABLE]; -} DMUS_OFFSETTABLE; - -typedef struct _DMUS_INSTRUMENT -{ - ULONG ulPatch; - ULONG ulFirstRegionIdx; - ULONG ulGlobalArtIdx; /* If zero the instrument does not have an articulation */ - ULONG ulFirstExtCkIdx; /* If zero no 3rd party entenstion chunks associated with the instrument */ - ULONG ulCopyrightIdx; /* If zero no Copyright information associated with the instrument */ - ULONG ulFlags; -} DMUS_INSTRUMENT; - -typedef struct _DMUS_REGION -{ - RGNRANGE RangeKey; - RGNRANGE RangeVelocity; - USHORT fusOptions; - USHORT usKeyGroup; - ULONG ulRegionArtIdx; /* If zero the region does not have an articulation */ - ULONG ulNextRegionIdx; /* If zero no more regions */ - ULONG ulFirstExtCkIdx; /* If zero no 3rd party entenstion chunks associated with the region */ - WAVELINK WaveLink; - WSMPL WSMP; /* If WSMP.cSampleLoops > 1 then a WLOOP is included */ - WLOOP WLOOP[1]; -} DMUS_REGION; - -typedef struct _DMUS_LFOPARAMS -{ - PCENT pcFrequency; - TCENT tcDelay; - GCENT gcVolumeScale; - PCENT pcPitchScale; - GCENT gcMWToVolume; - PCENT pcMWToPitch; -} DMUS_LFOPARAMS; - -typedef struct _DMUS_VEGPARAMS -{ - TCENT tcAttack; - TCENT tcDecay; - PERCENT ptSustain; - TCENT tcRelease; - TCENT tcVel2Attack; - TCENT tcKey2Decay; -} DMUS_VEGPARAMS; - -typedef struct _DMUS_PEGPARAMS -{ - TCENT tcAttack; - TCENT tcDecay; - PERCENT ptSustain; - TCENT tcRelease; - TCENT tcVel2Attack; - TCENT tcKey2Decay; - PCENT pcRange; -} DMUS_PEGPARAMS; - -typedef struct _DMUS_MSCPARAMS -{ - PERCENT ptDefaultPan; -} DMUS_MSCPARAMS; - -typedef struct _DMUS_ARTICPARAMS -{ - DMUS_LFOPARAMS LFO; - DMUS_VEGPARAMS VolEG; - DMUS_PEGPARAMS PitchEG; - DMUS_MSCPARAMS Misc; -} DMUS_ARTICPARAMS; - -typedef struct _DMUS_ARTICULATION /* Articulation chunk for DMUS_DOWNLOADINFO_INSTRUMENT format. */ -{ - ULONG ulArt1Idx; /* DLS Level 1 articulation chunk */ - ULONG ulFirstExtCkIdx; /* 3rd party extenstion chunks associated with the articulation */ -} DMUS_ARTICULATION; - -typedef struct _DMUS_ARTICULATION2 /* Articulation chunk for DMUS_DOWNLOADINFO_INSTRUMENT2 format. */ -{ - ULONG ulArtIdx; /* DLS Level 1/2 articulation chunk */ - ULONG ulFirstExtCkIdx; /* 3rd party extenstion chunks associated with the articulation */ - ULONG ulNextArtIdx; /* Additional articulation chunks */ -} DMUS_ARTICULATION2; - -#define DMUS_MIN_DATA_SIZE 4 -/* The actual number is determined by cbSize of struct _DMUS_EXTENSIONCHUNK */ - -typedef struct _DMUS_EXTENSIONCHUNK -{ - ULONG cbSize; /* Size of extension chunk */ - ULONG ulNextExtCkIdx; /* If zero no more 3rd party entenstion chunks */ - FOURCC ExtCkID; - BYTE byExtCk[DMUS_MIN_DATA_SIZE]; /* The actual number that follows is determined by cbSize */ -} DMUS_EXTENSIONCHUNK; - -/* The actual number is determined by cbSize of struct _DMUS_COPYRIGHT */ - -typedef struct _DMUS_COPYRIGHT -{ - ULONG cbSize; /* Size of copyright information */ - BYTE byCopyright[DMUS_MIN_DATA_SIZE]; /* The actual number that follows is determined by cbSize */ -} DMUS_COPYRIGHT; - -typedef struct _DMUS_WAVEDATA -{ - ULONG cbSize; - BYTE byData[DMUS_MIN_DATA_SIZE]; -} DMUS_WAVEDATA; - -typedef struct _DMUS_WAVE -{ - ULONG ulFirstExtCkIdx; /* If zero no 3rd party entenstion chunks associated with the wave */ - ULONG ulCopyrightIdx; /* If zero no Copyright information associated with the wave */ - ULONG ulWaveDataIdx; /* Location of actual wave data. */ - WAVEFORMATEX WaveformatEx; -} DMUS_WAVE; - -typedef struct _DMUS_NOTERANGE *LPDMUS_NOTERANGE; -typedef struct _DMUS_NOTERANGE -{ - DWORD dwLowNote; /* Sets the low note for the range of MIDI note events to which the instrument responds.*/ - DWORD dwHighNote; /* Sets the high note for the range of MIDI note events to which the instrument responds.*/ -} DMUS_NOTERANGE; - -typedef struct _DMUS_WAVEARTDL -{ - ULONG ulDownloadIdIdx; /* Download ID's of each buffer */ - ULONG ulBus; /* Playback bus */ - ULONG ulBuffers; /* Buffers */ - ULONG ulMasterDLId; /* Download ID of master voice of slave group */ - USHORT usOptions; /* Same as DLS2 region options */ -} DMUS_WAVEARTDL, - *LPDMUS_WAVEARTDL; - -typedef struct _DMUS_WAVEDL -{ - ULONG cbWaveData; /* Bytes of wave data */ -} DMUS_WAVEDL, - *LPDMUS_WAVEDL; - -#endif - - +/************************************************************************ +* * +* dmdls.h -- DLS download definitions for DirectMusic API's * +* * +* Copyright (c) Microsoft Corporation. All rights reserved. * +* * +************************************************************************/ + +#ifndef _DMDLS_ +#define _DMDLS_ + +#include "dls1.h" + +typedef long PCENT; /* Pitch cents */ +typedef long GCENT; /* Gain cents */ +typedef long TCENT; /* Time cents */ +typedef long PERCENT; /* Per.. cent! */ + +typedef LONGLONG REFERENCE_TIME; +typedef REFERENCE_TIME *LPREFERENCE_TIME; + +#ifndef MAKE_FOURCC +#define MAKEFOURCC(ch0, ch1, ch2, ch3) \ + ((DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8) | \ + ((DWORD)(BYTE)(ch2) << 16) | ((DWORD)(BYTE)(ch3) << 24 )) + + +typedef DWORD FOURCC; /* a four character code */ +#endif + +typedef struct _DMUS_DOWNLOADINFO +{ + DWORD dwDLType; /* Instrument or Wave */ + DWORD dwDLId; /* Unique identifier to tag this download. */ + DWORD dwNumOffsetTableEntries; /* Number of index in the offset address table. */ + DWORD cbSize; /* Total size of this memory chunk. */ +} DMUS_DOWNLOADINFO; + +#define DMUS_DOWNLOADINFO_INSTRUMENT 1 +#define DMUS_DOWNLOADINFO_WAVE 2 +#define DMUS_DOWNLOADINFO_INSTRUMENT2 3 /* New version for better DLS2 support. */ + +/* Support for oneshot and streaming wave data + */ +#define DMUS_DOWNLOADINFO_WAVEARTICULATION 4 /* Wave articulation data */ +#define DMUS_DOWNLOADINFO_STREAMINGWAVE 5 /* One chunk of a streaming */ +#define DMUS_DOWNLOADINFO_ONESHOTWAVE 6 + +#define DMUS_DEFAULT_SIZE_OFFSETTABLE 1 + +/* Flags for DMUS_INSTRUMENT's ulFlags member */ + +#define DMUS_INSTRUMENT_GM_INSTRUMENT (1 << 0) + +typedef struct _DMUS_OFFSETTABLE +{ + ULONG ulOffsetTable[DMUS_DEFAULT_SIZE_OFFSETTABLE]; +} DMUS_OFFSETTABLE; + +typedef struct _DMUS_INSTRUMENT +{ + ULONG ulPatch; + ULONG ulFirstRegionIdx; + ULONG ulGlobalArtIdx; /* If zero the instrument does not have an articulation */ + ULONG ulFirstExtCkIdx; /* If zero no 3rd party entenstion chunks associated with the instrument */ + ULONG ulCopyrightIdx; /* If zero no Copyright information associated with the instrument */ + ULONG ulFlags; +} DMUS_INSTRUMENT; + +typedef struct _DMUS_REGION +{ + RGNRANGE RangeKey; + RGNRANGE RangeVelocity; + USHORT fusOptions; + USHORT usKeyGroup; + ULONG ulRegionArtIdx; /* If zero the region does not have an articulation */ + ULONG ulNextRegionIdx; /* If zero no more regions */ + ULONG ulFirstExtCkIdx; /* If zero no 3rd party entenstion chunks associated with the region */ + WAVELINK WaveLink; + WSMPL WSMP; /* If WSMP.cSampleLoops > 1 then a WLOOP is included */ + WLOOP WLOOP[1]; +} DMUS_REGION; + +typedef struct _DMUS_LFOPARAMS +{ + PCENT pcFrequency; + TCENT tcDelay; + GCENT gcVolumeScale; + PCENT pcPitchScale; + GCENT gcMWToVolume; + PCENT pcMWToPitch; +} DMUS_LFOPARAMS; + +typedef struct _DMUS_VEGPARAMS +{ + TCENT tcAttack; + TCENT tcDecay; + PERCENT ptSustain; + TCENT tcRelease; + TCENT tcVel2Attack; + TCENT tcKey2Decay; +} DMUS_VEGPARAMS; + +typedef struct _DMUS_PEGPARAMS +{ + TCENT tcAttack; + TCENT tcDecay; + PERCENT ptSustain; + TCENT tcRelease; + TCENT tcVel2Attack; + TCENT tcKey2Decay; + PCENT pcRange; +} DMUS_PEGPARAMS; + +typedef struct _DMUS_MSCPARAMS +{ + PERCENT ptDefaultPan; +} DMUS_MSCPARAMS; + +typedef struct _DMUS_ARTICPARAMS +{ + DMUS_LFOPARAMS LFO; + DMUS_VEGPARAMS VolEG; + DMUS_PEGPARAMS PitchEG; + DMUS_MSCPARAMS Misc; +} DMUS_ARTICPARAMS; + +typedef struct _DMUS_ARTICULATION /* Articulation chunk for DMUS_DOWNLOADINFO_INSTRUMENT format. */ +{ + ULONG ulArt1Idx; /* DLS Level 1 articulation chunk */ + ULONG ulFirstExtCkIdx; /* 3rd party extenstion chunks associated with the articulation */ +} DMUS_ARTICULATION; + +typedef struct _DMUS_ARTICULATION2 /* Articulation chunk for DMUS_DOWNLOADINFO_INSTRUMENT2 format. */ +{ + ULONG ulArtIdx; /* DLS Level 1/2 articulation chunk */ + ULONG ulFirstExtCkIdx; /* 3rd party extenstion chunks associated with the articulation */ + ULONG ulNextArtIdx; /* Additional articulation chunks */ +} DMUS_ARTICULATION2; + +#define DMUS_MIN_DATA_SIZE 4 +/* The actual number is determined by cbSize of struct _DMUS_EXTENSIONCHUNK */ + +typedef struct _DMUS_EXTENSIONCHUNK +{ + ULONG cbSize; /* Size of extension chunk */ + ULONG ulNextExtCkIdx; /* If zero no more 3rd party entenstion chunks */ + FOURCC ExtCkID; + BYTE byExtCk[DMUS_MIN_DATA_SIZE]; /* The actual number that follows is determined by cbSize */ +} DMUS_EXTENSIONCHUNK; + +/* The actual number is determined by cbSize of struct _DMUS_COPYRIGHT */ + +typedef struct _DMUS_COPYRIGHT +{ + ULONG cbSize; /* Size of copyright information */ + BYTE byCopyright[DMUS_MIN_DATA_SIZE]; /* The actual number that follows is determined by cbSize */ +} DMUS_COPYRIGHT; + +typedef struct _DMUS_WAVEDATA +{ + ULONG cbSize; + BYTE byData[DMUS_MIN_DATA_SIZE]; +} DMUS_WAVEDATA; + +typedef struct _DMUS_WAVE +{ + ULONG ulFirstExtCkIdx; /* If zero no 3rd party entenstion chunks associated with the wave */ + ULONG ulCopyrightIdx; /* If zero no Copyright information associated with the wave */ + ULONG ulWaveDataIdx; /* Location of actual wave data. */ + WAVEFORMATEX WaveformatEx; +} DMUS_WAVE; + +typedef struct _DMUS_NOTERANGE *LPDMUS_NOTERANGE; +typedef struct _DMUS_NOTERANGE +{ + DWORD dwLowNote; /* Sets the low note for the range of MIDI note events to which the instrument responds.*/ + DWORD dwHighNote; /* Sets the high note for the range of MIDI note events to which the instrument responds.*/ +} DMUS_NOTERANGE; + +typedef struct _DMUS_WAVEARTDL +{ + ULONG ulDownloadIdIdx; /* Download ID's of each buffer */ + ULONG ulBus; /* Playback bus */ + ULONG ulBuffers; /* Buffers */ + ULONG ulMasterDLId; /* Download ID of master voice of slave group */ + USHORT usOptions; /* Same as DLS2 region options */ +} DMUS_WAVEARTDL, + *LPDMUS_WAVEARTDL; + +typedef struct _DMUS_WAVEDL +{ + ULONG cbWaveData; /* Bytes of wave data */ +} DMUS_WAVEDL, + *LPDMUS_WAVEDL; + +#endif + + diff --git a/videoInputSrcAndDemos/libs/DShow/Include/dmerror.h b/videoInputSrcAndDemos/libs/DShow/Include/dmerror.h index 9279f73..a0a61ff 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/dmerror.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/dmerror.h @@ -1,843 +1,843 @@ -/************************************************************************ -* * -* dmerror.h -- Error codes returned by DirectMusic API's * -* * -* Copyright (c) Microsoft Corporation. All rights reserved. * -* * -************************************************************************/ - -#ifndef _DMERROR_ -#define _DMERROR_ - -#define FACILITY_DIRECTMUSIC 0x878 /* Shared with DirectSound */ -#define DMUS_ERRBASE 0x1000 /* Make error codes human readable in hex */ - -#ifndef MAKE_HRESULT -#define MAKE_HRESULT(sev,fac,code) \ - ((HRESULT) (((unsigned long)(sev)<<31) | ((unsigned long)(fac)<<16) | ((unsigned long)(code))) ) -#endif - -#define MAKE_DMHRESULTSUCCESS(code) MAKE_HRESULT(0, FACILITY_DIRECTMUSIC, (DMUS_ERRBASE + (code))) -#define MAKE_DMHRESULTERROR(code) MAKE_HRESULT(1, FACILITY_DIRECTMUSIC, (DMUS_ERRBASE + (code))) - -/* DMUS_S_PARTIALLOAD - * - * The object could only load partially. This can happen if some components are - * not registered properly, such as embedded tracks and tools. This can also happen - * if some content is missing. For example, if a segment uses a DLS collection that - * is not in the loader's current search directory. - */ -#define DMUS_S_PARTIALLOAD MAKE_DMHRESULTSUCCESS(0x091) - -/* DMUS_S_PARTIALDOWNLOAD - * - * Return value from IDirectMusicBand::Download() which indicates that - * some of the instruments safely downloaded, but others failed. This usually - * occurs when some instruments are on PChannels not supported by the performance - * or port. - */ -#define DMUS_S_PARTIALDOWNLOAD MAKE_DMHRESULTSUCCESS(0x092) - -/* DMUS_S_REQUEUE - * - * Return value from IDirectMusicTool::ProcessPMsg() which indicates to the - * performance that it should cue the PMsg again automatically. - */ -#define DMUS_S_REQUEUE MAKE_DMHRESULTSUCCESS(0x200) - -/* DMUS_S_FREE - * - * Return value from IDirectMusicTool::ProcessPMsg() which indicates to the - * performance that it should free the PMsg automatically. - */ -#define DMUS_S_FREE MAKE_DMHRESULTSUCCESS(0x201) - -/* DMUS_S_END - * - * Return value from IDirectMusicTrack::Play() which indicates to the - * segment that the track has no more data after mtEnd. - */ -#define DMUS_S_END MAKE_DMHRESULTSUCCESS(0x202) - -/* DMUS_S_STRING_TRUNCATED - * - * Returned string has been truncated to fit the buffer size. - */ -#define DMUS_S_STRING_TRUNCATED MAKE_DMHRESULTSUCCESS(0x210) - -/* DMUS_S_LAST_TOOL - * - * Returned from IDirectMusicGraph::StampPMsg(), this indicates that the PMsg - * is already stamped with the last tool in the graph. The returned PMsg's - * tool pointer is now NULL. - */ -#define DMUS_S_LAST_TOOL MAKE_DMHRESULTSUCCESS(0x211) - -/* DMUS_S_OVER_CHORD - * - * Returned from IDirectMusicPerformance::MusicToMIDI(), this indicates - * that no note has been calculated because the music value has the note - * at a position higher than the top note of the chord. This applies only - * to DMUS_PLAYMODE_NORMALCHORD play mode. This success code indicates - * that the caller should not do anything with the note. It is not meant - * to be played against this chord. - */ -#define DMUS_S_OVER_CHORD MAKE_DMHRESULTSUCCESS(0x212) - -/* DMUS_S_UP_OCTAVE - * - * Returned from IDirectMusicPerformance::MIDIToMusic(), and - * IDirectMusicPerformance::MusicToMIDI(), this indicates - * that the note conversion generated a note value that is below 0, - * so it has been bumped up one or more octaves to be in the proper - * MIDI range of 0 through 127. - * Note that this is valid for MIDIToMusic() when using play modes - * DMUS_PLAYMODE_FIXEDTOCHORD and DMUS_PLAYMODE_FIXEDTOKEY, both of - * which store MIDI values in wMusicValue. With MusicToMIDI(), it is - * valid for all play modes. - * Ofcourse, DMUS_PLAYMODE_FIXED will never return this success code. - */ -#define DMUS_S_UP_OCTAVE MAKE_DMHRESULTSUCCESS(0x213) - -/* DMUS_S_DOWN_OCTAVE - * - * Returned from IDirectMusicPerformance::MIDIToMusic(), and - * IDirectMusicPerformance::MusicToMIDI(), this indicates - * that the note conversion generated a note value that is above 127, - * so it has been bumped down one or more octaves to be in the proper - * MIDI range of 0 through 127. - * Note that this is valid for MIDIToMusic() when using play modes - * DMUS_PLAYMODE_FIXEDTOCHORD and DMUS_PLAYMODE_FIXEDTOKEY, both of - * which store MIDI values in wMusicValue. With MusicToMIDI(), it is - * valid for all play modes. - * Ofcourse, DMUS_PLAYMODE_FIXED will never return this success code. - */ -#define DMUS_S_DOWN_OCTAVE MAKE_DMHRESULTSUCCESS(0x214) - -/* DMUS_S_NOBUFFERCONTROL - * - * Although the audio output from the port will be routed to the - * same device as the given DirectSound buffer, buffer controls - * such as pan and volume will not affect the output. - * - */ -#define DMUS_S_NOBUFFERCONTROL MAKE_DMHRESULTSUCCESS(0x215) - -/* DMUS_S_GARBAGE_COLLECTED - * - * The requested operation was not performed because during CollectGarbage - * the loader determined that the object had been released. - */ -#define DMUS_S_GARBAGE_COLLECTED MAKE_DMHRESULTSUCCESS(0x216) - -/* DMUS_E_DRIVER_FAILED - * - * An unexpected error was returned from a device driver, indicating - * possible failure of the driver or hardware. - */ -#define DMUS_E_DRIVER_FAILED MAKE_DMHRESULTERROR(0x0101) - -/* DMUS_E_PORTS_OPEN - * - * The requested operation cannot be performed while there are - * instantiated ports in any process in the system. - */ -#define DMUS_E_PORTS_OPEN MAKE_DMHRESULTERROR(0x0102) - -/* DMUS_E_DEVICE_IN_USE - * - * The requested device is already in use (possibly by a non-DirectMusic - * client) and cannot be opened again. - */ -#define DMUS_E_DEVICE_IN_USE MAKE_DMHRESULTERROR(0x0103) - -/* DMUS_E_INSUFFICIENTBUFFER - * - * Buffer is not large enough for requested operation. - */ -#define DMUS_E_INSUFFICIENTBUFFER MAKE_DMHRESULTERROR(0x0104) - -/* DMUS_E_BUFFERNOTSET - * - * No buffer was prepared for the download data. - */ -#define DMUS_E_BUFFERNOTSET MAKE_DMHRESULTERROR(0x0105) - -/* DMUS_E_BUFFERNOTAVAILABLE - * - * Download failed due to inability to access or create download buffer. - */ -#define DMUS_E_BUFFERNOTAVAILABLE MAKE_DMHRESULTERROR(0x0106) - -/* DMUS_E_NOTADLSCOL - * - * Error parsing DLS collection. File is corrupt. - */ -#define DMUS_E_NOTADLSCOL MAKE_DMHRESULTERROR(0x0108) - -/* DMUS_E_INVALIDOFFSET - * - * Wave chunks in DLS collection file are at incorrect offsets. - */ -#define DMUS_E_INVALIDOFFSET MAKE_DMHRESULTERROR(0x0109) - -/* DMUS_E_ALREADY_LOADED - * - * Second attempt to load a DLS collection that is currently open. - */ -#define DMUS_E_ALREADY_LOADED MAKE_DMHRESULTERROR(0x0111) - -/* DMUS_E_INVALIDPOS - * - * Error reading wave data from DLS collection. Indicates bad file. - */ -#define DMUS_E_INVALIDPOS MAKE_DMHRESULTERROR(0x0113) - -/* DMUS_E_INVALIDPATCH - * - * There is no instrument in the collection that matches patch number. - */ -#define DMUS_E_INVALIDPATCH MAKE_DMHRESULTERROR(0x0114) - -/* DMUS_E_CANNOTSEEK - * - * The IStream* doesn't support Seek(). - */ -#define DMUS_E_CANNOTSEEK MAKE_DMHRESULTERROR(0x0115) - -/* DMUS_E_CANNOTWRITE - * - * The IStream* doesn't support Write(). - */ -#define DMUS_E_CANNOTWRITE MAKE_DMHRESULTERROR(0x0116) - -/* DMUS_E_CHUNKNOTFOUND - * - * The RIFF parser doesn't contain a required chunk while parsing file. - */ -#define DMUS_E_CHUNKNOTFOUND MAKE_DMHRESULTERROR(0x0117) - -/* DMUS_E_INVALID_DOWNLOADID - * - * Invalid download id was used in the process of creating a download buffer. - */ -#define DMUS_E_INVALID_DOWNLOADID MAKE_DMHRESULTERROR(0x0119) - -/* DMUS_E_NOT_DOWNLOADED_TO_PORT - * - * Tried to unload an object that was not downloaded or previously unloaded. - */ -#define DMUS_E_NOT_DOWNLOADED_TO_PORT MAKE_DMHRESULTERROR(0x0120) - -/* DMUS_E_ALREADY_DOWNLOADED - * - * Buffer was already downloaded to synth. - */ -#define DMUS_E_ALREADY_DOWNLOADED MAKE_DMHRESULTERROR(0x0121) - -/* DMUS_E_UNKNOWN_PROPERTY - * - * The specified property item was not recognized by the target object. - */ -#define DMUS_E_UNKNOWN_PROPERTY MAKE_DMHRESULTERROR(0x0122) - -/* DMUS_E_SET_UNSUPPORTED - * - * The specified property item may not be set on the target object. - */ -#define DMUS_E_SET_UNSUPPORTED MAKE_DMHRESULTERROR(0x0123) - -/* DMUS_E_GET_UNSUPPORTED - * - * The specified property item may not be retrieved from the target object. - */ -#define DMUS_E_GET_UNSUPPORTED MAKE_DMHRESULTERROR(0x0124) - -/* DMUS_E_NOTMONO - * - * Wave chunk has more than one interleaved channel. DLS format requires MONO. - */ -#define DMUS_E_NOTMONO MAKE_DMHRESULTERROR(0x0125) - -/* DMUS_E_BADARTICULATION - * - * Invalid articulation chunk in DLS collection. - */ -#define DMUS_E_BADARTICULATION MAKE_DMHRESULTERROR(0x0126) - -/* DMUS_E_BADINSTRUMENT - * - * Invalid instrument chunk in DLS collection. - */ -#define DMUS_E_BADINSTRUMENT MAKE_DMHRESULTERROR(0x0127) - -/* DMUS_E_BADWAVELINK - * - * Wavelink chunk in DLS collection points to invalid wave. - */ -#define DMUS_E_BADWAVELINK MAKE_DMHRESULTERROR(0x0128) - -/* DMUS_E_NOARTICULATION - * - * Articulation missing from instrument in DLS collection. - */ -#define DMUS_E_NOARTICULATION MAKE_DMHRESULTERROR(0x0129) - -/* DMUS_E_NOTPCM - * - * Downoaded DLS wave is not in PCM format. -*/ -#define DMUS_E_NOTPCM MAKE_DMHRESULTERROR(0x012A) - -/* DMUS_E_BADWAVE - * - * Bad wave chunk in DLS collection - */ -#define DMUS_E_BADWAVE MAKE_DMHRESULTERROR(0x012B) - -/* DMUS_E_BADOFFSETTABLE - * - * Offset Table for download buffer has errors. - */ -#define DMUS_E_BADOFFSETTABLE MAKE_DMHRESULTERROR(0x012C) - -/* DMUS_E_UNKNOWNDOWNLOAD - * - * Attempted to download unknown data type. - */ -#define DMUS_E_UNKNOWNDOWNLOAD MAKE_DMHRESULTERROR(0x012D) - -/* DMUS_E_NOSYNTHSINK - * - * The operation could not be completed because no sink was connected to - * the synthesizer. - */ -#define DMUS_E_NOSYNTHSINK MAKE_DMHRESULTERROR(0x012E) - -/* DMUS_E_ALREADYOPEN - * - * An attempt was made to open the software synthesizer while it was already - * open. - * ASSERT? - */ -#define DMUS_E_ALREADYOPEN MAKE_DMHRESULTERROR(0x012F) - -/* DMUS_E_ALREADYCLOSE - * - * An attempt was made to close the software synthesizer while it was already - * open. - * ASSERT? - */ -#define DMUS_E_ALREADYCLOSED MAKE_DMHRESULTERROR(0x0130) - -/* DMUS_E_SYNTHNOTCONFIGURED - * - * The operation could not be completed because the software synth has not - * yet been fully configured. - * ASSERT? - */ -#define DMUS_E_SYNTHNOTCONFIGURED MAKE_DMHRESULTERROR(0x0131) - -/* DMUS_E_SYNTHACTIVE - * - * The operation cannot be carried out while the synthesizer is active. - */ -#define DMUS_E_SYNTHACTIVE MAKE_DMHRESULTERROR(0x0132) - -/* DMUS_E_CANNOTREAD - * - * An error occurred while attempting to read from the IStream* object. - */ -#define DMUS_E_CANNOTREAD MAKE_DMHRESULTERROR(0x0133) - -/* DMUS_E_DMUSIC_RELEASED - * - * The operation cannot be performed because the final instance of the - * DirectMusic object was released. Ports cannot be used after final - * release of the DirectMusic object. - */ -#define DMUS_E_DMUSIC_RELEASED MAKE_DMHRESULTERROR(0x0134) - -/* DMUS_E_BUFFER_EMPTY - * - * There was no data in the referenced buffer. - */ -#define DMUS_E_BUFFER_EMPTY MAKE_DMHRESULTERROR(0x0135) - -/* DMUS_E_BUFFER_FULL - * - * There is insufficient space to insert the given event into the buffer. - */ -#define DMUS_E_BUFFER_FULL MAKE_DMHRESULTERROR(0x0136) - -/* DMUS_E_PORT_NOT_CAPTURE - * - * The given operation could not be carried out because the port is a - * capture port. - */ -#define DMUS_E_PORT_NOT_CAPTURE MAKE_DMHRESULTERROR(0x0137) - -/* DMUS_E_PORT_NOT_RENDER - * - * The given operation could not be carried out because the port is a - * render port. - */ -#define DMUS_E_PORT_NOT_RENDER MAKE_DMHRESULTERROR(0x0138) - -/* DMUS_E_DSOUND_NOT_SET - * - * The port could not be created because no DirectSound has been specified. - * Specify a DirectSound interface via the IDirectMusic::SetDirectSound - * method; pass NULL to have DirectMusic manage usage of DirectSound. - */ -#define DMUS_E_DSOUND_NOT_SET MAKE_DMHRESULTERROR(0x0139) - -/* DMUS_E_ALREADY_ACTIVATED - * - * The operation cannot be carried out while the port is active. - */ -#define DMUS_E_ALREADY_ACTIVATED MAKE_DMHRESULTERROR(0x013A) - -/* DMUS_E_INVALIDBUFFER - * - * Invalid DirectSound buffer was handed to port. - */ -#define DMUS_E_INVALIDBUFFER MAKE_DMHRESULTERROR(0x013B) - -/* DMUS_E_WAVEFORMATNOTSUPPORTED - * - * Invalid buffer format was handed to the synth sink. - */ -#define DMUS_E_WAVEFORMATNOTSUPPORTED MAKE_DMHRESULTERROR(0x013C) - -/* DMUS_E_SYNTHINACTIVE - * - * The operation cannot be carried out while the synthesizer is inactive. - */ -#define DMUS_E_SYNTHINACTIVE MAKE_DMHRESULTERROR(0x013D) - -/* DMUS_E_DSOUND_ALREADY_SET - * - * IDirectMusic::SetDirectSound has already been called. It may not be - * changed while in use. - */ -#define DMUS_E_DSOUND_ALREADY_SET MAKE_DMHRESULTERROR(0x013E) - -/* DMUS_E_INVALID_EVENT - * - * The given event is invalid (either it is not a valid MIDI message - * or it makes use of running status). The event cannot be packed - * into the buffer. - */ -#define DMUS_E_INVALID_EVENT MAKE_DMHRESULTERROR(0x013F) - -/* DMUS_E_UNSUPPORTED_STREAM - * - * The IStream* object does not contain data supported by the loading object. - */ -#define DMUS_E_UNSUPPORTED_STREAM MAKE_DMHRESULTERROR(0x0150) - -/* DMUS_E_ALREADY_INITED - * - * The object has already been initialized. - */ -#define DMUS_E_ALREADY_INITED MAKE_DMHRESULTERROR(0x0151) - -/* DMUS_E_INVALID_BAND - * - * The file does not contain a valid band. - */ -#define DMUS_E_INVALID_BAND MAKE_DMHRESULTERROR(0x0152) - -/* DMUS_E_TRACK_HDR_NOT_FIRST_CK - * - * The IStream* object's data does not have a track header as the first chunk, - * and therefore can not be read by the segment object. - */ -#define DMUS_E_TRACK_HDR_NOT_FIRST_CK MAKE_DMHRESULTERROR(0x0155) - -/* DMUS_E_TOOL_HDR_NOT_FIRST_CK - * - * The IStream* object's data does not have a tool header as the first chunk, - * and therefore can not be read by the graph object. - */ -#define DMUS_E_TOOL_HDR_NOT_FIRST_CK MAKE_DMHRESULTERROR(0x0156) - -/* DMUS_E_INVALID_TRACK_HDR - * - * The IStream* object's data contains an invalid track header (ckid is 0 and - * fccType is NULL,) and therefore can not be read by the segment object. - */ -#define DMUS_E_INVALID_TRACK_HDR MAKE_DMHRESULTERROR(0x0157) - -/* DMUS_E_INVALID_TOOL_HDR - * - * The IStream* object's data contains an invalid tool header (ckid is 0 and - * fccType is NULL,) and therefore can not be read by the graph object. - */ -#define DMUS_E_INVALID_TOOL_HDR MAKE_DMHRESULTERROR(0x0158) - -/* DMUS_E_ALL_TOOLS_FAILED - * - * The graph object was unable to load all tools from the IStream* object data. - * This may be due to errors in the stream, or the tools being incorrectly - * registered on the client. - */ -#define DMUS_E_ALL_TOOLS_FAILED MAKE_DMHRESULTERROR(0x0159) - -/* DMUS_E_ALL_TRACKS_FAILED - * - * The segment object was unable to load all tracks from the IStream* object data. - * This may be due to errors in the stream, or the tracks being incorrectly - * registered on the client. - */ -#define DMUS_E_ALL_TRACKS_FAILED MAKE_DMHRESULTERROR(0x0160) - -/* DMUS_E_NOT_FOUND - * - * The requested item was not contained by the object. - */ -#define DMUS_E_NOT_FOUND MAKE_DMHRESULTERROR(0x0161) - -/* DMUS_E_NOT_INIT - * - * A required object is not initialized or failed to initialize. - */ -#define DMUS_E_NOT_INIT MAKE_DMHRESULTERROR(0x0162) - -/* DMUS_E_TYPE_DISABLED - * - * The requested parameter type is currently disabled. Parameter types may - * be enabled and disabled by certain calls to SetParam(). - */ -#define DMUS_E_TYPE_DISABLED MAKE_DMHRESULTERROR(0x0163) - -/* DMUS_E_TYPE_UNSUPPORTED - * - * The requested parameter type is not supported on the object. - */ -#define DMUS_E_TYPE_UNSUPPORTED MAKE_DMHRESULTERROR(0x0164) - -/* DMUS_E_TIME_PAST - * - * The time is in the past, and the operation can not succeed. - */ -#define DMUS_E_TIME_PAST MAKE_DMHRESULTERROR(0x0165) - -/* DMUS_E_TRACK_NOT_FOUND - * - * The requested track is not contained by the segment. - */ -#define DMUS_E_TRACK_NOT_FOUND MAKE_DMHRESULTERROR(0x0166) - -/* DMUS_E_TRACK_NO_CLOCKTIME_SUPPORT - * - * The track does not support clock time playback or getparam. - */ -#define DMUS_E_TRACK_NO_CLOCKTIME_SUPPORT MAKE_DMHRESULTERROR(0x0167) - -/* DMUS_E_NO_MASTER_CLOCK - * - * There is no master clock in the performance. Be sure to call - * IDirectMusicPerformance::Init(). - */ -#define DMUS_E_NO_MASTER_CLOCK MAKE_DMHRESULTERROR(0x0170) - -/* DMUS_E_LOADER_NOCLASSID - * - * The class id field is required and missing in the DMUS_OBJECTDESC. - */ -#define DMUS_E_LOADER_NOCLASSID MAKE_DMHRESULTERROR(0x0180) - -/* DMUS_E_LOADER_BADPATH - * - * The requested file path is invalid. - */ -#define DMUS_E_LOADER_BADPATH MAKE_DMHRESULTERROR(0x0181) - -/* DMUS_E_LOADER_FAILEDOPEN - * - * File open failed - either file doesn't exist or is locked. - */ -#define DMUS_E_LOADER_FAILEDOPEN MAKE_DMHRESULTERROR(0x0182) - -/* DMUS_E_LOADER_FORMATNOTSUPPORTED - * - * Search data type is not supported. - */ -#define DMUS_E_LOADER_FORMATNOTSUPPORTED MAKE_DMHRESULTERROR(0x0183) - -/* DMUS_E_LOADER_FAILEDCREATE - * - * Unable to find or create object. - */ -#define DMUS_E_LOADER_FAILEDCREATE MAKE_DMHRESULTERROR(0x0184) - -/* DMUS_E_LOADER_OBJECTNOTFOUND - * - * Object was not found. - */ -#define DMUS_E_LOADER_OBJECTNOTFOUND MAKE_DMHRESULTERROR(0x0185) - -/* DMUS_E_LOADER_NOFILENAME - * - * The file name is missing from the DMUS_OBJECTDESC. - */ -#define DMUS_E_LOADER_NOFILENAME MAKE_DMHRESULTERROR(0x0186) - -/* DMUS_E_INVALIDFILE - * - * The file requested is not a valid file. - */ -#define DMUS_E_INVALIDFILE MAKE_DMHRESULTERROR(0x0200) - -/* DMUS_E_ALREADY_EXISTS - * - * The tool is already contained in the graph. Create a new instance. - */ -#define DMUS_E_ALREADY_EXISTS MAKE_DMHRESULTERROR(0x0201) - -/* DMUS_E_OUT_OF_RANGE - * - * Value is out of range, for instance the requested length is longer than - * the segment. - */ -#define DMUS_E_OUT_OF_RANGE MAKE_DMHRESULTERROR(0x0202) - -/* DMUS_E_SEGMENT_INIT_FAILED - * - * Segment initialization failed, most likely due to a critical memory situation. - */ -#define DMUS_E_SEGMENT_INIT_FAILED MAKE_DMHRESULTERROR(0x0203) - -/* DMUS_E_ALREADY_SENT - * - * The DMUS_PMSG has already been sent to the performance object via - * IDirectMusicPerformance::SendPMsg(). - */ -#define DMUS_E_ALREADY_SENT MAKE_DMHRESULTERROR(0x0204) - -/* DMUS_E_CANNOT_FREE - * - * The DMUS_PMSG was either not allocated by the performance via - * IDirectMusicPerformance::AllocPMsg(), or it was already freed via - * IDirectMusicPerformance::FreePMsg(). - */ -#define DMUS_E_CANNOT_FREE MAKE_DMHRESULTERROR(0x0205) - -/* DMUS_E_CANNOT_OPEN_PORT - * - * The default system port could not be opened. - */ -#define DMUS_E_CANNOT_OPEN_PORT MAKE_DMHRESULTERROR(0x0206) - -/* DMUS_E_CANNOT_CONVERT - * - * A call to MIDIToMusic() or MusicToMIDI() resulted in an error because - * the requested conversion could not happen. This usually occurs when the - * provided DMUS_CHORD_KEY structure has an invalid chord or scale pattern. - */ -#define DMUS_E_CANNOT_CONVERT MAKE_DMHRESULTERROR(0x0207) -/* misspelling in previous versions of DirectX preserved for backward compatibility */ -#define DMUS_E_CONNOT_CONVERT DMUS_E_CANNOT_CONVERT - -/* DMUS_E_DESCEND_CHUNK_FAIL - * - * DMUS_E_DESCEND_CHUNK_FAIL is returned when the end of the file - * was reached before the desired chunk was found. - */ -#define DMUS_E_DESCEND_CHUNK_FAIL MAKE_DMHRESULTERROR(0x0210) - -/* DMUS_E_NOT_LOADED - * - * An attempt to use this object failed because it first needs to - * be loaded. - */ -#define DMUS_E_NOT_LOADED MAKE_DMHRESULTERROR(0x0211) - -/* DMUS_E_SCRIPT_LANGUAGE_INCOMPATIBLE - * - * The activeX scripting engine for the script's language is not compatible with - * DirectMusic. - * - */ -#define DMUS_E_SCRIPT_LANGUAGE_INCOMPATIBLE MAKE_DMHRESULTERROR(0x0213) - -/* DMUS_E_SCRIPT_UNSUPPORTED_VARTYPE - * - * A varient was used that had a type that is not supported by DirectMusic. - * - */ -#define DMUS_E_SCRIPT_UNSUPPORTED_VARTYPE MAKE_DMHRESULTERROR(0x0214) - -/* DMUS_E_SCRIPT_ERROR_IN_SCRIPT - * - * An error was encountered while parsing or executing the script. - * The pErrorInfo parameter (if supplied) was filled with information about the error. - */ -#define DMUS_E_SCRIPT_ERROR_IN_SCRIPT MAKE_DMHRESULTERROR(0x0215) - -/* DMUS_E_SCRIPT_CANTLOAD_OLEAUT32 - * - * Loading of oleaut32.dll failed. VBScript and other activeX scripting languages - * require use of oleaut32.dll. On platforms where oleaut32.dll is not present, only - * the DirectMusicScript language, which doesn't require oleaut32.dll can be used. - */ -#define DMUS_E_SCRIPT_CANTLOAD_OLEAUT32 MAKE_DMHRESULTERROR(0x0216) - -/* DMUS_E_SCRIPT_LOADSCRIPT_ERROR - * - * An error occured while parsing a script loaded using LoadScript. The script that - * was loaded contains an error. - */ -#define DMUS_E_SCRIPT_LOADSCRIPT_ERROR MAKE_DMHRESULTERROR(0x0217) - -/* DMUS_E_SCRIPT_INVALID_FILE - * - * The script file is invalid. - */ -#define DMUS_E_SCRIPT_INVALID_FILE MAKE_DMHRESULTERROR(0x0218) - -/* DMUS_E_INVALID_SCRIPTTRACK - * - * The file contains an invalid script track. - */ -#define DMUS_E_INVALID_SCRIPTTRACK MAKE_DMHRESULTERROR(0x0219) - -/* DMUS_E_SCRIPT_VARIABLE_NOT_FOUND - * - * The script does not contain a variable with the specified name. - */ -#define DMUS_E_SCRIPT_VARIABLE_NOT_FOUND MAKE_DMHRESULTERROR(0x021A) - -/* DMUS_E_SCRIPT_ROUTINE_NOT_FOUND - * - * The script does not contain a routine with the specified name. - */ -#define DMUS_E_SCRIPT_ROUTINE_NOT_FOUND MAKE_DMHRESULTERROR(0x021B) - -/* DMUS_E_SCRIPT_CONTENT_READONLY - * - * Scripts variables for content referenced or embedded in a script cannot be set. - */ -#define DMUS_E_SCRIPT_CONTENT_READONLY MAKE_DMHRESULTERROR(0x021C) - -/* DMUS_E_SCRIPT_NOT_A_REFERENCE - * - * Attempt was made to set a script's variable by reference to a value that was - * not an object type. - */ -#define DMUS_E_SCRIPT_NOT_A_REFERENCE MAKE_DMHRESULTERROR(0x021D) - -/* DMUS_E_SCRIPT_VALUE_NOT_SUPPORTED - * - * Attempt was made to set a script's variable by value to an object that does - * not support a default value property. - */ -#define DMUS_E_SCRIPT_VALUE_NOT_SUPPORTED MAKE_DMHRESULTERROR(0x021E) - -/* DMUS_E_INVALID_SEGMENTTRIGGERTRACK - * - * The file contains an invalid segment trigger track. - */ -#define DMUS_E_INVALID_SEGMENTTRIGGERTRACK MAKE_DMHRESULTERROR(0x0220) - -/* DMUS_E_INVALID_LYRICSTRACK - * - * The file contains an invalid lyrics track. - */ -#define DMUS_E_INVALID_LYRICSTRACK MAKE_DMHRESULTERROR(0x0221) - -/* DMUS_E_INVALID_PARAMCONTROLTRACK - * - * The file contains an invalid parameter control track. - */ -#define DMUS_E_INVALID_PARAMCONTROLTRACK MAKE_DMHRESULTERROR(0x0222) - -/* DMUS_E_AUDIOVBSCRIPT_SYNTAXERROR - * - * A script written in AudioVBScript could not be read because it contained a statement that - * is not allowed by the AudioVBScript language. - */ -#define DMUS_E_AUDIOVBSCRIPT_SYNTAXERROR MAKE_DMHRESULTERROR(0x0223) - -/* DMUS_E_AUDIOVBSCRIPT_RUNTIMEERROR - * - * A script routine written in AudioVBScript failed because an invalid operation occurred. For example, - * adding the number 3 to a segment object would produce this error. So would attempting to call a routine - * that doesn't exist. - */ -#define DMUS_E_AUDIOVBSCRIPT_RUNTIMEERROR MAKE_DMHRESULTERROR(0x0224) - -/* DMUS_E_AUDIOVBSCRIPT_OPERATIONFAILURE - * - * A script routine written in AudioVBScript failed because a function outside of a script failed to complete. - * For example, a call to PlaySegment that fails to play because of low memory would return this error. - */ -#define DMUS_E_AUDIOVBSCRIPT_OPERATIONFAILURE MAKE_DMHRESULTERROR(0x0225) - -/* DMUS_E_AUDIOPATHS_NOT_VALID - * - * The Performance has set up some PChannels using the AssignPChannel command, which - * makes it not capable of supporting audio paths. - */ -#define DMUS_E_AUDIOPATHS_NOT_VALID MAKE_DMHRESULTERROR(0x0226) - -/* DMUS_E_AUDIOPATHS_IN_USE - * - * This is the inverse of the previous error. - * The Performance has set up some audio paths, which makes is incompatible - * with the calls to allocate pchannels, etc. - */ -#define DMUS_E_AUDIOPATHS_IN_USE MAKE_DMHRESULTERROR(0x0227) - -/* DMUS_E_NO_AUDIOPATH_CONFIG - * - * A segment was asked for its embedded audio path configuration, - * but there isn't any. - */ -#define DMUS_E_NO_AUDIOPATH_CONFIG MAKE_DMHRESULTERROR(0x0228) - -/* DMUS_E_AUDIOPATH_INACTIVE - * - * An audiopath is inactive, perhaps because closedown was called. - */ -#define DMUS_E_AUDIOPATH_INACTIVE MAKE_DMHRESULTERROR(0x0229) - -/* DMUS_E_AUDIOPATH_NOBUFFER - * - * An audiopath failed to create because a requested buffer could not be created. - */ -#define DMUS_E_AUDIOPATH_NOBUFFER MAKE_DMHRESULTERROR(0x022A) - -/* DMUS_E_AUDIOPATH_NOPORT - * - * An audiopath could not be used for playback because it lacked port assignments. - */ -#define DMUS_E_AUDIOPATH_NOPORT MAKE_DMHRESULTERROR(0x022B) - -/* DMUS_E_NO_AUDIOPATH - * - * Attempt was made to play segment in audiopath mode and there was no audiopath. - */ -#define DMUS_E_NO_AUDIOPATH MAKE_DMHRESULTERROR(0x022C) - -/* DMUS_E_INVALIDCHUNK - * - * Invalid data was found in a RIFF file chunk. - */ -#define DMUS_E_INVALIDCHUNK MAKE_DMHRESULTERROR(0x022D) - -/* DMUS_E_AUDIOPATH_NOGLOBALFXBUFFER - * - * Attempt was made to create an audiopath that sends to a global effects buffer which did not exist. - */ -#define DMUS_E_AUDIOPATH_NOGLOBALFXBUFFER MAKE_DMHRESULTERROR(0x022E) - -/* DMUS_E_INVALID_CONTAINER_OBJECT - * - * The file does not contain a valid container object. - */ -#define DMUS_E_INVALID_CONTAINER_OBJECT MAKE_DMHRESULTERROR(0x022F) - -#endif +/************************************************************************ +* * +* dmerror.h -- Error codes returned by DirectMusic API's * +* * +* Copyright (c) Microsoft Corporation. All rights reserved. * +* * +************************************************************************/ + +#ifndef _DMERROR_ +#define _DMERROR_ + +#define FACILITY_DIRECTMUSIC 0x878 /* Shared with DirectSound */ +#define DMUS_ERRBASE 0x1000 /* Make error codes human readable in hex */ + +#ifndef MAKE_HRESULT +#define MAKE_HRESULT(sev,fac,code) \ + ((HRESULT) (((unsigned long)(sev)<<31) | ((unsigned long)(fac)<<16) | ((unsigned long)(code))) ) +#endif + +#define MAKE_DMHRESULTSUCCESS(code) MAKE_HRESULT(0, FACILITY_DIRECTMUSIC, (DMUS_ERRBASE + (code))) +#define MAKE_DMHRESULTERROR(code) MAKE_HRESULT(1, FACILITY_DIRECTMUSIC, (DMUS_ERRBASE + (code))) + +/* DMUS_S_PARTIALLOAD + * + * The object could only load partially. This can happen if some components are + * not registered properly, such as embedded tracks and tools. This can also happen + * if some content is missing. For example, if a segment uses a DLS collection that + * is not in the loader's current search directory. + */ +#define DMUS_S_PARTIALLOAD MAKE_DMHRESULTSUCCESS(0x091) + +/* DMUS_S_PARTIALDOWNLOAD + * + * Return value from IDirectMusicBand::Download() which indicates that + * some of the instruments safely downloaded, but others failed. This usually + * occurs when some instruments are on PChannels not supported by the performance + * or port. + */ +#define DMUS_S_PARTIALDOWNLOAD MAKE_DMHRESULTSUCCESS(0x092) + +/* DMUS_S_REQUEUE + * + * Return value from IDirectMusicTool::ProcessPMsg() which indicates to the + * performance that it should cue the PMsg again automatically. + */ +#define DMUS_S_REQUEUE MAKE_DMHRESULTSUCCESS(0x200) + +/* DMUS_S_FREE + * + * Return value from IDirectMusicTool::ProcessPMsg() which indicates to the + * performance that it should free the PMsg automatically. + */ +#define DMUS_S_FREE MAKE_DMHRESULTSUCCESS(0x201) + +/* DMUS_S_END + * + * Return value from IDirectMusicTrack::Play() which indicates to the + * segment that the track has no more data after mtEnd. + */ +#define DMUS_S_END MAKE_DMHRESULTSUCCESS(0x202) + +/* DMUS_S_STRING_TRUNCATED + * + * Returned string has been truncated to fit the buffer size. + */ +#define DMUS_S_STRING_TRUNCATED MAKE_DMHRESULTSUCCESS(0x210) + +/* DMUS_S_LAST_TOOL + * + * Returned from IDirectMusicGraph::StampPMsg(), this indicates that the PMsg + * is already stamped with the last tool in the graph. The returned PMsg's + * tool pointer is now NULL. + */ +#define DMUS_S_LAST_TOOL MAKE_DMHRESULTSUCCESS(0x211) + +/* DMUS_S_OVER_CHORD + * + * Returned from IDirectMusicPerformance::MusicToMIDI(), this indicates + * that no note has been calculated because the music value has the note + * at a position higher than the top note of the chord. This applies only + * to DMUS_PLAYMODE_NORMALCHORD play mode. This success code indicates + * that the caller should not do anything with the note. It is not meant + * to be played against this chord. + */ +#define DMUS_S_OVER_CHORD MAKE_DMHRESULTSUCCESS(0x212) + +/* DMUS_S_UP_OCTAVE + * + * Returned from IDirectMusicPerformance::MIDIToMusic(), and + * IDirectMusicPerformance::MusicToMIDI(), this indicates + * that the note conversion generated a note value that is below 0, + * so it has been bumped up one or more octaves to be in the proper + * MIDI range of 0 through 127. + * Note that this is valid for MIDIToMusic() when using play modes + * DMUS_PLAYMODE_FIXEDTOCHORD and DMUS_PLAYMODE_FIXEDTOKEY, both of + * which store MIDI values in wMusicValue. With MusicToMIDI(), it is + * valid for all play modes. + * Ofcourse, DMUS_PLAYMODE_FIXED will never return this success code. + */ +#define DMUS_S_UP_OCTAVE MAKE_DMHRESULTSUCCESS(0x213) + +/* DMUS_S_DOWN_OCTAVE + * + * Returned from IDirectMusicPerformance::MIDIToMusic(), and + * IDirectMusicPerformance::MusicToMIDI(), this indicates + * that the note conversion generated a note value that is above 127, + * so it has been bumped down one or more octaves to be in the proper + * MIDI range of 0 through 127. + * Note that this is valid for MIDIToMusic() when using play modes + * DMUS_PLAYMODE_FIXEDTOCHORD and DMUS_PLAYMODE_FIXEDTOKEY, both of + * which store MIDI values in wMusicValue. With MusicToMIDI(), it is + * valid for all play modes. + * Ofcourse, DMUS_PLAYMODE_FIXED will never return this success code. + */ +#define DMUS_S_DOWN_OCTAVE MAKE_DMHRESULTSUCCESS(0x214) + +/* DMUS_S_NOBUFFERCONTROL + * + * Although the audio output from the port will be routed to the + * same device as the given DirectSound buffer, buffer controls + * such as pan and volume will not affect the output. + * + */ +#define DMUS_S_NOBUFFERCONTROL MAKE_DMHRESULTSUCCESS(0x215) + +/* DMUS_S_GARBAGE_COLLECTED + * + * The requested operation was not performed because during CollectGarbage + * the loader determined that the object had been released. + */ +#define DMUS_S_GARBAGE_COLLECTED MAKE_DMHRESULTSUCCESS(0x216) + +/* DMUS_E_DRIVER_FAILED + * + * An unexpected error was returned from a device driver, indicating + * possible failure of the driver or hardware. + */ +#define DMUS_E_DRIVER_FAILED MAKE_DMHRESULTERROR(0x0101) + +/* DMUS_E_PORTS_OPEN + * + * The requested operation cannot be performed while there are + * instantiated ports in any process in the system. + */ +#define DMUS_E_PORTS_OPEN MAKE_DMHRESULTERROR(0x0102) + +/* DMUS_E_DEVICE_IN_USE + * + * The requested device is already in use (possibly by a non-DirectMusic + * client) and cannot be opened again. + */ +#define DMUS_E_DEVICE_IN_USE MAKE_DMHRESULTERROR(0x0103) + +/* DMUS_E_INSUFFICIENTBUFFER + * + * Buffer is not large enough for requested operation. + */ +#define DMUS_E_INSUFFICIENTBUFFER MAKE_DMHRESULTERROR(0x0104) + +/* DMUS_E_BUFFERNOTSET + * + * No buffer was prepared for the download data. + */ +#define DMUS_E_BUFFERNOTSET MAKE_DMHRESULTERROR(0x0105) + +/* DMUS_E_BUFFERNOTAVAILABLE + * + * Download failed due to inability to access or create download buffer. + */ +#define DMUS_E_BUFFERNOTAVAILABLE MAKE_DMHRESULTERROR(0x0106) + +/* DMUS_E_NOTADLSCOL + * + * Error parsing DLS collection. File is corrupt. + */ +#define DMUS_E_NOTADLSCOL MAKE_DMHRESULTERROR(0x0108) + +/* DMUS_E_INVALIDOFFSET + * + * Wave chunks in DLS collection file are at incorrect offsets. + */ +#define DMUS_E_INVALIDOFFSET MAKE_DMHRESULTERROR(0x0109) + +/* DMUS_E_ALREADY_LOADED + * + * Second attempt to load a DLS collection that is currently open. + */ +#define DMUS_E_ALREADY_LOADED MAKE_DMHRESULTERROR(0x0111) + +/* DMUS_E_INVALIDPOS + * + * Error reading wave data from DLS collection. Indicates bad file. + */ +#define DMUS_E_INVALIDPOS MAKE_DMHRESULTERROR(0x0113) + +/* DMUS_E_INVALIDPATCH + * + * There is no instrument in the collection that matches patch number. + */ +#define DMUS_E_INVALIDPATCH MAKE_DMHRESULTERROR(0x0114) + +/* DMUS_E_CANNOTSEEK + * + * The IStream* doesn't support Seek(). + */ +#define DMUS_E_CANNOTSEEK MAKE_DMHRESULTERROR(0x0115) + +/* DMUS_E_CANNOTWRITE + * + * The IStream* doesn't support Write(). + */ +#define DMUS_E_CANNOTWRITE MAKE_DMHRESULTERROR(0x0116) + +/* DMUS_E_CHUNKNOTFOUND + * + * The RIFF parser doesn't contain a required chunk while parsing file. + */ +#define DMUS_E_CHUNKNOTFOUND MAKE_DMHRESULTERROR(0x0117) + +/* DMUS_E_INVALID_DOWNLOADID + * + * Invalid download id was used in the process of creating a download buffer. + */ +#define DMUS_E_INVALID_DOWNLOADID MAKE_DMHRESULTERROR(0x0119) + +/* DMUS_E_NOT_DOWNLOADED_TO_PORT + * + * Tried to unload an object that was not downloaded or previously unloaded. + */ +#define DMUS_E_NOT_DOWNLOADED_TO_PORT MAKE_DMHRESULTERROR(0x0120) + +/* DMUS_E_ALREADY_DOWNLOADED + * + * Buffer was already downloaded to synth. + */ +#define DMUS_E_ALREADY_DOWNLOADED MAKE_DMHRESULTERROR(0x0121) + +/* DMUS_E_UNKNOWN_PROPERTY + * + * The specified property item was not recognized by the target object. + */ +#define DMUS_E_UNKNOWN_PROPERTY MAKE_DMHRESULTERROR(0x0122) + +/* DMUS_E_SET_UNSUPPORTED + * + * The specified property item may not be set on the target object. + */ +#define DMUS_E_SET_UNSUPPORTED MAKE_DMHRESULTERROR(0x0123) + +/* DMUS_E_GET_UNSUPPORTED + * + * The specified property item may not be retrieved from the target object. + */ +#define DMUS_E_GET_UNSUPPORTED MAKE_DMHRESULTERROR(0x0124) + +/* DMUS_E_NOTMONO + * + * Wave chunk has more than one interleaved channel. DLS format requires MONO. + */ +#define DMUS_E_NOTMONO MAKE_DMHRESULTERROR(0x0125) + +/* DMUS_E_BADARTICULATION + * + * Invalid articulation chunk in DLS collection. + */ +#define DMUS_E_BADARTICULATION MAKE_DMHRESULTERROR(0x0126) + +/* DMUS_E_BADINSTRUMENT + * + * Invalid instrument chunk in DLS collection. + */ +#define DMUS_E_BADINSTRUMENT MAKE_DMHRESULTERROR(0x0127) + +/* DMUS_E_BADWAVELINK + * + * Wavelink chunk in DLS collection points to invalid wave. + */ +#define DMUS_E_BADWAVELINK MAKE_DMHRESULTERROR(0x0128) + +/* DMUS_E_NOARTICULATION + * + * Articulation missing from instrument in DLS collection. + */ +#define DMUS_E_NOARTICULATION MAKE_DMHRESULTERROR(0x0129) + +/* DMUS_E_NOTPCM + * + * Downoaded DLS wave is not in PCM format. +*/ +#define DMUS_E_NOTPCM MAKE_DMHRESULTERROR(0x012A) + +/* DMUS_E_BADWAVE + * + * Bad wave chunk in DLS collection + */ +#define DMUS_E_BADWAVE MAKE_DMHRESULTERROR(0x012B) + +/* DMUS_E_BADOFFSETTABLE + * + * Offset Table for download buffer has errors. + */ +#define DMUS_E_BADOFFSETTABLE MAKE_DMHRESULTERROR(0x012C) + +/* DMUS_E_UNKNOWNDOWNLOAD + * + * Attempted to download unknown data type. + */ +#define DMUS_E_UNKNOWNDOWNLOAD MAKE_DMHRESULTERROR(0x012D) + +/* DMUS_E_NOSYNTHSINK + * + * The operation could not be completed because no sink was connected to + * the synthesizer. + */ +#define DMUS_E_NOSYNTHSINK MAKE_DMHRESULTERROR(0x012E) + +/* DMUS_E_ALREADYOPEN + * + * An attempt was made to open the software synthesizer while it was already + * open. + * ASSERT? + */ +#define DMUS_E_ALREADYOPEN MAKE_DMHRESULTERROR(0x012F) + +/* DMUS_E_ALREADYCLOSE + * + * An attempt was made to close the software synthesizer while it was already + * open. + * ASSERT? + */ +#define DMUS_E_ALREADYCLOSED MAKE_DMHRESULTERROR(0x0130) + +/* DMUS_E_SYNTHNOTCONFIGURED + * + * The operation could not be completed because the software synth has not + * yet been fully configured. + * ASSERT? + */ +#define DMUS_E_SYNTHNOTCONFIGURED MAKE_DMHRESULTERROR(0x0131) + +/* DMUS_E_SYNTHACTIVE + * + * The operation cannot be carried out while the synthesizer is active. + */ +#define DMUS_E_SYNTHACTIVE MAKE_DMHRESULTERROR(0x0132) + +/* DMUS_E_CANNOTREAD + * + * An error occurred while attempting to read from the IStream* object. + */ +#define DMUS_E_CANNOTREAD MAKE_DMHRESULTERROR(0x0133) + +/* DMUS_E_DMUSIC_RELEASED + * + * The operation cannot be performed because the final instance of the + * DirectMusic object was released. Ports cannot be used after final + * release of the DirectMusic object. + */ +#define DMUS_E_DMUSIC_RELEASED MAKE_DMHRESULTERROR(0x0134) + +/* DMUS_E_BUFFER_EMPTY + * + * There was no data in the referenced buffer. + */ +#define DMUS_E_BUFFER_EMPTY MAKE_DMHRESULTERROR(0x0135) + +/* DMUS_E_BUFFER_FULL + * + * There is insufficient space to insert the given event into the buffer. + */ +#define DMUS_E_BUFFER_FULL MAKE_DMHRESULTERROR(0x0136) + +/* DMUS_E_PORT_NOT_CAPTURE + * + * The given operation could not be carried out because the port is a + * capture port. + */ +#define DMUS_E_PORT_NOT_CAPTURE MAKE_DMHRESULTERROR(0x0137) + +/* DMUS_E_PORT_NOT_RENDER + * + * The given operation could not be carried out because the port is a + * render port. + */ +#define DMUS_E_PORT_NOT_RENDER MAKE_DMHRESULTERROR(0x0138) + +/* DMUS_E_DSOUND_NOT_SET + * + * The port could not be created because no DirectSound has been specified. + * Specify a DirectSound interface via the IDirectMusic::SetDirectSound + * method; pass NULL to have DirectMusic manage usage of DirectSound. + */ +#define DMUS_E_DSOUND_NOT_SET MAKE_DMHRESULTERROR(0x0139) + +/* DMUS_E_ALREADY_ACTIVATED + * + * The operation cannot be carried out while the port is active. + */ +#define DMUS_E_ALREADY_ACTIVATED MAKE_DMHRESULTERROR(0x013A) + +/* DMUS_E_INVALIDBUFFER + * + * Invalid DirectSound buffer was handed to port. + */ +#define DMUS_E_INVALIDBUFFER MAKE_DMHRESULTERROR(0x013B) + +/* DMUS_E_WAVEFORMATNOTSUPPORTED + * + * Invalid buffer format was handed to the synth sink. + */ +#define DMUS_E_WAVEFORMATNOTSUPPORTED MAKE_DMHRESULTERROR(0x013C) + +/* DMUS_E_SYNTHINACTIVE + * + * The operation cannot be carried out while the synthesizer is inactive. + */ +#define DMUS_E_SYNTHINACTIVE MAKE_DMHRESULTERROR(0x013D) + +/* DMUS_E_DSOUND_ALREADY_SET + * + * IDirectMusic::SetDirectSound has already been called. It may not be + * changed while in use. + */ +#define DMUS_E_DSOUND_ALREADY_SET MAKE_DMHRESULTERROR(0x013E) + +/* DMUS_E_INVALID_EVENT + * + * The given event is invalid (either it is not a valid MIDI message + * or it makes use of running status). The event cannot be packed + * into the buffer. + */ +#define DMUS_E_INVALID_EVENT MAKE_DMHRESULTERROR(0x013F) + +/* DMUS_E_UNSUPPORTED_STREAM + * + * The IStream* object does not contain data supported by the loading object. + */ +#define DMUS_E_UNSUPPORTED_STREAM MAKE_DMHRESULTERROR(0x0150) + +/* DMUS_E_ALREADY_INITED + * + * The object has already been initialized. + */ +#define DMUS_E_ALREADY_INITED MAKE_DMHRESULTERROR(0x0151) + +/* DMUS_E_INVALID_BAND + * + * The file does not contain a valid band. + */ +#define DMUS_E_INVALID_BAND MAKE_DMHRESULTERROR(0x0152) + +/* DMUS_E_TRACK_HDR_NOT_FIRST_CK + * + * The IStream* object's data does not have a track header as the first chunk, + * and therefore can not be read by the segment object. + */ +#define DMUS_E_TRACK_HDR_NOT_FIRST_CK MAKE_DMHRESULTERROR(0x0155) + +/* DMUS_E_TOOL_HDR_NOT_FIRST_CK + * + * The IStream* object's data does not have a tool header as the first chunk, + * and therefore can not be read by the graph object. + */ +#define DMUS_E_TOOL_HDR_NOT_FIRST_CK MAKE_DMHRESULTERROR(0x0156) + +/* DMUS_E_INVALID_TRACK_HDR + * + * The IStream* object's data contains an invalid track header (ckid is 0 and + * fccType is NULL,) and therefore can not be read by the segment object. + */ +#define DMUS_E_INVALID_TRACK_HDR MAKE_DMHRESULTERROR(0x0157) + +/* DMUS_E_INVALID_TOOL_HDR + * + * The IStream* object's data contains an invalid tool header (ckid is 0 and + * fccType is NULL,) and therefore can not be read by the graph object. + */ +#define DMUS_E_INVALID_TOOL_HDR MAKE_DMHRESULTERROR(0x0158) + +/* DMUS_E_ALL_TOOLS_FAILED + * + * The graph object was unable to load all tools from the IStream* object data. + * This may be due to errors in the stream, or the tools being incorrectly + * registered on the client. + */ +#define DMUS_E_ALL_TOOLS_FAILED MAKE_DMHRESULTERROR(0x0159) + +/* DMUS_E_ALL_TRACKS_FAILED + * + * The segment object was unable to load all tracks from the IStream* object data. + * This may be due to errors in the stream, or the tracks being incorrectly + * registered on the client. + */ +#define DMUS_E_ALL_TRACKS_FAILED MAKE_DMHRESULTERROR(0x0160) + +/* DMUS_E_NOT_FOUND + * + * The requested item was not contained by the object. + */ +#define DMUS_E_NOT_FOUND MAKE_DMHRESULTERROR(0x0161) + +/* DMUS_E_NOT_INIT + * + * A required object is not initialized or failed to initialize. + */ +#define DMUS_E_NOT_INIT MAKE_DMHRESULTERROR(0x0162) + +/* DMUS_E_TYPE_DISABLED + * + * The requested parameter type is currently disabled. Parameter types may + * be enabled and disabled by certain calls to SetParam(). + */ +#define DMUS_E_TYPE_DISABLED MAKE_DMHRESULTERROR(0x0163) + +/* DMUS_E_TYPE_UNSUPPORTED + * + * The requested parameter type is not supported on the object. + */ +#define DMUS_E_TYPE_UNSUPPORTED MAKE_DMHRESULTERROR(0x0164) + +/* DMUS_E_TIME_PAST + * + * The time is in the past, and the operation can not succeed. + */ +#define DMUS_E_TIME_PAST MAKE_DMHRESULTERROR(0x0165) + +/* DMUS_E_TRACK_NOT_FOUND + * + * The requested track is not contained by the segment. + */ +#define DMUS_E_TRACK_NOT_FOUND MAKE_DMHRESULTERROR(0x0166) + +/* DMUS_E_TRACK_NO_CLOCKTIME_SUPPORT + * + * The track does not support clock time playback or getparam. + */ +#define DMUS_E_TRACK_NO_CLOCKTIME_SUPPORT MAKE_DMHRESULTERROR(0x0167) + +/* DMUS_E_NO_MASTER_CLOCK + * + * There is no master clock in the performance. Be sure to call + * IDirectMusicPerformance::Init(). + */ +#define DMUS_E_NO_MASTER_CLOCK MAKE_DMHRESULTERROR(0x0170) + +/* DMUS_E_LOADER_NOCLASSID + * + * The class id field is required and missing in the DMUS_OBJECTDESC. + */ +#define DMUS_E_LOADER_NOCLASSID MAKE_DMHRESULTERROR(0x0180) + +/* DMUS_E_LOADER_BADPATH + * + * The requested file path is invalid. + */ +#define DMUS_E_LOADER_BADPATH MAKE_DMHRESULTERROR(0x0181) + +/* DMUS_E_LOADER_FAILEDOPEN + * + * File open failed - either file doesn't exist or is locked. + */ +#define DMUS_E_LOADER_FAILEDOPEN MAKE_DMHRESULTERROR(0x0182) + +/* DMUS_E_LOADER_FORMATNOTSUPPORTED + * + * Search data type is not supported. + */ +#define DMUS_E_LOADER_FORMATNOTSUPPORTED MAKE_DMHRESULTERROR(0x0183) + +/* DMUS_E_LOADER_FAILEDCREATE + * + * Unable to find or create object. + */ +#define DMUS_E_LOADER_FAILEDCREATE MAKE_DMHRESULTERROR(0x0184) + +/* DMUS_E_LOADER_OBJECTNOTFOUND + * + * Object was not found. + */ +#define DMUS_E_LOADER_OBJECTNOTFOUND MAKE_DMHRESULTERROR(0x0185) + +/* DMUS_E_LOADER_NOFILENAME + * + * The file name is missing from the DMUS_OBJECTDESC. + */ +#define DMUS_E_LOADER_NOFILENAME MAKE_DMHRESULTERROR(0x0186) + +/* DMUS_E_INVALIDFILE + * + * The file requested is not a valid file. + */ +#define DMUS_E_INVALIDFILE MAKE_DMHRESULTERROR(0x0200) + +/* DMUS_E_ALREADY_EXISTS + * + * The tool is already contained in the graph. Create a new instance. + */ +#define DMUS_E_ALREADY_EXISTS MAKE_DMHRESULTERROR(0x0201) + +/* DMUS_E_OUT_OF_RANGE + * + * Value is out of range, for instance the requested length is longer than + * the segment. + */ +#define DMUS_E_OUT_OF_RANGE MAKE_DMHRESULTERROR(0x0202) + +/* DMUS_E_SEGMENT_INIT_FAILED + * + * Segment initialization failed, most likely due to a critical memory situation. + */ +#define DMUS_E_SEGMENT_INIT_FAILED MAKE_DMHRESULTERROR(0x0203) + +/* DMUS_E_ALREADY_SENT + * + * The DMUS_PMSG has already been sent to the performance object via + * IDirectMusicPerformance::SendPMsg(). + */ +#define DMUS_E_ALREADY_SENT MAKE_DMHRESULTERROR(0x0204) + +/* DMUS_E_CANNOT_FREE + * + * The DMUS_PMSG was either not allocated by the performance via + * IDirectMusicPerformance::AllocPMsg(), or it was already freed via + * IDirectMusicPerformance::FreePMsg(). + */ +#define DMUS_E_CANNOT_FREE MAKE_DMHRESULTERROR(0x0205) + +/* DMUS_E_CANNOT_OPEN_PORT + * + * The default system port could not be opened. + */ +#define DMUS_E_CANNOT_OPEN_PORT MAKE_DMHRESULTERROR(0x0206) + +/* DMUS_E_CANNOT_CONVERT + * + * A call to MIDIToMusic() or MusicToMIDI() resulted in an error because + * the requested conversion could not happen. This usually occurs when the + * provided DMUS_CHORD_KEY structure has an invalid chord or scale pattern. + */ +#define DMUS_E_CANNOT_CONVERT MAKE_DMHRESULTERROR(0x0207) +/* misspelling in previous versions of DirectX preserved for backward compatibility */ +#define DMUS_E_CONNOT_CONVERT DMUS_E_CANNOT_CONVERT + +/* DMUS_E_DESCEND_CHUNK_FAIL + * + * DMUS_E_DESCEND_CHUNK_FAIL is returned when the end of the file + * was reached before the desired chunk was found. + */ +#define DMUS_E_DESCEND_CHUNK_FAIL MAKE_DMHRESULTERROR(0x0210) + +/* DMUS_E_NOT_LOADED + * + * An attempt to use this object failed because it first needs to + * be loaded. + */ +#define DMUS_E_NOT_LOADED MAKE_DMHRESULTERROR(0x0211) + +/* DMUS_E_SCRIPT_LANGUAGE_INCOMPATIBLE + * + * The activeX scripting engine for the script's language is not compatible with + * DirectMusic. + * + */ +#define DMUS_E_SCRIPT_LANGUAGE_INCOMPATIBLE MAKE_DMHRESULTERROR(0x0213) + +/* DMUS_E_SCRIPT_UNSUPPORTED_VARTYPE + * + * A varient was used that had a type that is not supported by DirectMusic. + * + */ +#define DMUS_E_SCRIPT_UNSUPPORTED_VARTYPE MAKE_DMHRESULTERROR(0x0214) + +/* DMUS_E_SCRIPT_ERROR_IN_SCRIPT + * + * An error was encountered while parsing or executing the script. + * The pErrorInfo parameter (if supplied) was filled with information about the error. + */ +#define DMUS_E_SCRIPT_ERROR_IN_SCRIPT MAKE_DMHRESULTERROR(0x0215) + +/* DMUS_E_SCRIPT_CANTLOAD_OLEAUT32 + * + * Loading of oleaut32.dll failed. VBScript and other activeX scripting languages + * require use of oleaut32.dll. On platforms where oleaut32.dll is not present, only + * the DirectMusicScript language, which doesn't require oleaut32.dll can be used. + */ +#define DMUS_E_SCRIPT_CANTLOAD_OLEAUT32 MAKE_DMHRESULTERROR(0x0216) + +/* DMUS_E_SCRIPT_LOADSCRIPT_ERROR + * + * An error occured while parsing a script loaded using LoadScript. The script that + * was loaded contains an error. + */ +#define DMUS_E_SCRIPT_LOADSCRIPT_ERROR MAKE_DMHRESULTERROR(0x0217) + +/* DMUS_E_SCRIPT_INVALID_FILE + * + * The script file is invalid. + */ +#define DMUS_E_SCRIPT_INVALID_FILE MAKE_DMHRESULTERROR(0x0218) + +/* DMUS_E_INVALID_SCRIPTTRACK + * + * The file contains an invalid script track. + */ +#define DMUS_E_INVALID_SCRIPTTRACK MAKE_DMHRESULTERROR(0x0219) + +/* DMUS_E_SCRIPT_VARIABLE_NOT_FOUND + * + * The script does not contain a variable with the specified name. + */ +#define DMUS_E_SCRIPT_VARIABLE_NOT_FOUND MAKE_DMHRESULTERROR(0x021A) + +/* DMUS_E_SCRIPT_ROUTINE_NOT_FOUND + * + * The script does not contain a routine with the specified name. + */ +#define DMUS_E_SCRIPT_ROUTINE_NOT_FOUND MAKE_DMHRESULTERROR(0x021B) + +/* DMUS_E_SCRIPT_CONTENT_READONLY + * + * Scripts variables for content referenced or embedded in a script cannot be set. + */ +#define DMUS_E_SCRIPT_CONTENT_READONLY MAKE_DMHRESULTERROR(0x021C) + +/* DMUS_E_SCRIPT_NOT_A_REFERENCE + * + * Attempt was made to set a script's variable by reference to a value that was + * not an object type. + */ +#define DMUS_E_SCRIPT_NOT_A_REFERENCE MAKE_DMHRESULTERROR(0x021D) + +/* DMUS_E_SCRIPT_VALUE_NOT_SUPPORTED + * + * Attempt was made to set a script's variable by value to an object that does + * not support a default value property. + */ +#define DMUS_E_SCRIPT_VALUE_NOT_SUPPORTED MAKE_DMHRESULTERROR(0x021E) + +/* DMUS_E_INVALID_SEGMENTTRIGGERTRACK + * + * The file contains an invalid segment trigger track. + */ +#define DMUS_E_INVALID_SEGMENTTRIGGERTRACK MAKE_DMHRESULTERROR(0x0220) + +/* DMUS_E_INVALID_LYRICSTRACK + * + * The file contains an invalid lyrics track. + */ +#define DMUS_E_INVALID_LYRICSTRACK MAKE_DMHRESULTERROR(0x0221) + +/* DMUS_E_INVALID_PARAMCONTROLTRACK + * + * The file contains an invalid parameter control track. + */ +#define DMUS_E_INVALID_PARAMCONTROLTRACK MAKE_DMHRESULTERROR(0x0222) + +/* DMUS_E_AUDIOVBSCRIPT_SYNTAXERROR + * + * A script written in AudioVBScript could not be read because it contained a statement that + * is not allowed by the AudioVBScript language. + */ +#define DMUS_E_AUDIOVBSCRIPT_SYNTAXERROR MAKE_DMHRESULTERROR(0x0223) + +/* DMUS_E_AUDIOVBSCRIPT_RUNTIMEERROR + * + * A script routine written in AudioVBScript failed because an invalid operation occurred. For example, + * adding the number 3 to a segment object would produce this error. So would attempting to call a routine + * that doesn't exist. + */ +#define DMUS_E_AUDIOVBSCRIPT_RUNTIMEERROR MAKE_DMHRESULTERROR(0x0224) + +/* DMUS_E_AUDIOVBSCRIPT_OPERATIONFAILURE + * + * A script routine written in AudioVBScript failed because a function outside of a script failed to complete. + * For example, a call to PlaySegment that fails to play because of low memory would return this error. + */ +#define DMUS_E_AUDIOVBSCRIPT_OPERATIONFAILURE MAKE_DMHRESULTERROR(0x0225) + +/* DMUS_E_AUDIOPATHS_NOT_VALID + * + * The Performance has set up some PChannels using the AssignPChannel command, which + * makes it not capable of supporting audio paths. + */ +#define DMUS_E_AUDIOPATHS_NOT_VALID MAKE_DMHRESULTERROR(0x0226) + +/* DMUS_E_AUDIOPATHS_IN_USE + * + * This is the inverse of the previous error. + * The Performance has set up some audio paths, which makes is incompatible + * with the calls to allocate pchannels, etc. + */ +#define DMUS_E_AUDIOPATHS_IN_USE MAKE_DMHRESULTERROR(0x0227) + +/* DMUS_E_NO_AUDIOPATH_CONFIG + * + * A segment was asked for its embedded audio path configuration, + * but there isn't any. + */ +#define DMUS_E_NO_AUDIOPATH_CONFIG MAKE_DMHRESULTERROR(0x0228) + +/* DMUS_E_AUDIOPATH_INACTIVE + * + * An audiopath is inactive, perhaps because closedown was called. + */ +#define DMUS_E_AUDIOPATH_INACTIVE MAKE_DMHRESULTERROR(0x0229) + +/* DMUS_E_AUDIOPATH_NOBUFFER + * + * An audiopath failed to create because a requested buffer could not be created. + */ +#define DMUS_E_AUDIOPATH_NOBUFFER MAKE_DMHRESULTERROR(0x022A) + +/* DMUS_E_AUDIOPATH_NOPORT + * + * An audiopath could not be used for playback because it lacked port assignments. + */ +#define DMUS_E_AUDIOPATH_NOPORT MAKE_DMHRESULTERROR(0x022B) + +/* DMUS_E_NO_AUDIOPATH + * + * Attempt was made to play segment in audiopath mode and there was no audiopath. + */ +#define DMUS_E_NO_AUDIOPATH MAKE_DMHRESULTERROR(0x022C) + +/* DMUS_E_INVALIDCHUNK + * + * Invalid data was found in a RIFF file chunk. + */ +#define DMUS_E_INVALIDCHUNK MAKE_DMHRESULTERROR(0x022D) + +/* DMUS_E_AUDIOPATH_NOGLOBALFXBUFFER + * + * Attempt was made to create an audiopath that sends to a global effects buffer which did not exist. + */ +#define DMUS_E_AUDIOPATH_NOGLOBALFXBUFFER MAKE_DMHRESULTERROR(0x022E) + +/* DMUS_E_INVALID_CONTAINER_OBJECT + * + * The file does not contain a valid container object. + */ +#define DMUS_E_INVALID_CONTAINER_OBJECT MAKE_DMHRESULTERROR(0x022F) + +#endif diff --git a/videoInputSrcAndDemos/libs/DShow/Include/dmksctrl.h b/videoInputSrcAndDemos/libs/DShow/Include/dmksctrl.h index 2f81bac..f53e714 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/dmksctrl.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/dmksctrl.h @@ -1,166 +1,166 @@ -/************************************************************************ -* * -* dmksctrl.h -- Definition of IKsControl * -* * -* Copyright (c) Microsoft Corporation. All rights reserved. * -* * -* This header file contains the definition of IKsControl, which * -* duplicates definitions from ks.h and ksproxy.h. Your code should * -* include ks.h and ksproxy.h directly if you have them (they are * -* provided in the Windows 98 DDK and will be in the Windows NT 5 * -* SDK). * -* * -************************************************************************/ - -#ifndef _DMKSCTRL_ -#define _DMKSCTRL_ - -#if _MSC_VER >= 1200 -#pragma warning(push) -#endif -#pragma warning(disable:4201) /* Disable warnings on anonymous unions */ - -#include - -#include - -#if !defined(_NTRTL_) - #ifndef DEFINE_GUIDEX - #define DEFINE_GUIDEX(name) EXTERN_C const CDECL GUID name - #endif /* !defined(DEFINE_GUIDEX) */ - - #ifndef STATICGUIDOF - #define STATICGUIDOF(guid) STATIC_##guid - #endif /* !defined(STATICGUIDOF) */ -#endif /* !defined(_NTRTL_) */ - -#ifndef STATIC_IID_IKsControl -#define STATIC_IID_IKsControl\ - 0x28F54685L, 0x06FD, 0x11D2, 0xB2, 0x7A, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 -#endif /* STATIC_IID_IKsControl */ - -/* - * Warning: This will prevent the rest of ks.h from being pulled in if ks.h is - * included after dmksctrl.h. Make sure you do not include both headers in - * the same source file. - */ -#ifndef _KS_ -#define _KS_ - -#if (defined(_MSC_EXTENSIONS) || defined(__cplusplus)) && !defined(CINTERFACE) -typedef struct { - union { - struct { - GUID Set; - ULONG Id; - ULONG Flags; - }; - LONGLONG Alignment; - }; -} KSIDENTIFIER, *PKSIDENTIFIER; -#else -typedef struct { - union { - struct { - GUID Set; - ULONG Id; - ULONG Flags; - } Data; - LONGLONG Alignment; - }; -} KSIDENTIFIER, *PKSIDENTIFIER; -#endif - -typedef KSIDENTIFIER KSPROPERTY, *PKSPROPERTY, KSMETHOD, *PKSMETHOD, KSEVENT, *PKSEVENT; - -#define KSMETHOD_TYPE_NONE 0x00000000 -#define KSMETHOD_TYPE_READ 0x00000001 -#define KSMETHOD_TYPE_WRITE 0x00000002 -#define KSMETHOD_TYPE_MODIFY 0x00000003 -#define KSMETHOD_TYPE_SOURCE 0x00000004 - -#define KSMETHOD_TYPE_SEND 0x00000001 -#define KSMETHOD_TYPE_SETSUPPORT 0x00000100 -#define KSMETHOD_TYPE_BASICSUPPORT 0x00000200 - -#define KSPROPERTY_TYPE_GET 0x00000001 -#define KSPROPERTY_TYPE_SET 0x00000002 -#define KSPROPERTY_TYPE_SETSUPPORT 0x00000100 -#define KSPROPERTY_TYPE_BASICSUPPORT 0x00000200 -#define KSPROPERTY_TYPE_RELATIONS 0x00000400 -#define KSPROPERTY_TYPE_SERIALIZESET 0x00000800 -#define KSPROPERTY_TYPE_UNSERIALIZESET 0x00001000 -#define KSPROPERTY_TYPE_SERIALIZERAW 0x00002000 -#define KSPROPERTY_TYPE_UNSERIALIZERAW 0x00004000 -#define KSPROPERTY_TYPE_SERIALIZESIZE 0x00008000 -#define KSPROPERTY_TYPE_DEFAULTVALUES 0x00010000 - -#define KSPROPERTY_TYPE_TOPOLOGY 0x10000000 -#endif /* _KS_ */ - -#ifndef _IKsControl_ -#define _IKsControl_ - -#ifdef DECLARE_INTERFACE_ - - -#undef INTERFACE -#define INTERFACE IKsControl -DECLARE_INTERFACE_(IKsControl, IUnknown) -{ - /* IUnknown */ - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - /*IKsControl*/ - STDMETHOD(KsProperty)( - THIS_ - IN PKSPROPERTY Property, - IN ULONG PropertyLength, - IN OUT LPVOID PropertyData, - IN ULONG DataLength, - OUT ULONG* BytesReturned - ) PURE; - STDMETHOD(KsMethod)( - THIS_ - IN PKSMETHOD Method, - IN ULONG MethodLength, - IN OUT LPVOID MethodData, - IN ULONG DataLength, - OUT ULONG* BytesReturned - ) PURE; - STDMETHOD(KsEvent)( - THIS_ - IN PKSEVENT Event OPTIONAL, - IN ULONG EventLength, - IN OUT LPVOID EventData, - IN ULONG DataLength, - OUT ULONG* BytesReturned - ) PURE; -}; - -#endif /* DECLARE_INTERFACE_ */ -#endif /* _IKsControl_ */ - -#include - -DEFINE_GUID(IID_IKsControl, 0x28F54685, 0x06FD, 0x11D2, 0xB2, 0x7A, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96); - -/* These formats are in ksmedia.h - */ -#ifndef _KSMEDIA_ - -DEFINE_GUID(KSDATAFORMAT_SUBTYPE_MIDI, 0x1D262760L, 0xE957, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00); -DEFINE_GUID(KSDATAFORMAT_SUBTYPE_DIRECTMUSIC, 0x1a82f8bc, 0x3f8b, 0x11d2, 0xb7, 0x74, 0x00, 0x60, 0x08, 0x33, 0x16, 0xc1); - -#endif - -#if _MSC_VER >= 1200 -#pragma warning(pop) -#endif - -#endif /* _DMKSCTRL */ - - - +/************************************************************************ +* * +* dmksctrl.h -- Definition of IKsControl * +* * +* Copyright (c) Microsoft Corporation. All rights reserved. * +* * +* This header file contains the definition of IKsControl, which * +* duplicates definitions from ks.h and ksproxy.h. Your code should * +* include ks.h and ksproxy.h directly if you have them (they are * +* provided in the Windows 98 DDK and will be in the Windows NT 5 * +* SDK). * +* * +************************************************************************/ + +#ifndef _DMKSCTRL_ +#define _DMKSCTRL_ + +#if _MSC_VER >= 1200 +#pragma warning(push) +#endif +#pragma warning(disable:4201) /* Disable warnings on anonymous unions */ + +#include + +#include + +#if !defined(_NTRTL_) + #ifndef DEFINE_GUIDEX + #define DEFINE_GUIDEX(name) EXTERN_C const CDECL GUID name + #endif /* !defined(DEFINE_GUIDEX) */ + + #ifndef STATICGUIDOF + #define STATICGUIDOF(guid) STATIC_##guid + #endif /* !defined(STATICGUIDOF) */ +#endif /* !defined(_NTRTL_) */ + +#ifndef STATIC_IID_IKsControl +#define STATIC_IID_IKsControl\ + 0x28F54685L, 0x06FD, 0x11D2, 0xB2, 0x7A, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 +#endif /* STATIC_IID_IKsControl */ + +/* + * Warning: This will prevent the rest of ks.h from being pulled in if ks.h is + * included after dmksctrl.h. Make sure you do not include both headers in + * the same source file. + */ +#ifndef _KS_ +#define _KS_ + +#if (defined(_MSC_EXTENSIONS) || defined(__cplusplus)) && !defined(CINTERFACE) +typedef struct { + union { + struct { + GUID Set; + ULONG Id; + ULONG Flags; + }; + LONGLONG Alignment; + }; +} KSIDENTIFIER, *PKSIDENTIFIER; +#else +typedef struct { + union { + struct { + GUID Set; + ULONG Id; + ULONG Flags; + } Data; + LONGLONG Alignment; + }; +} KSIDENTIFIER, *PKSIDENTIFIER; +#endif + +typedef KSIDENTIFIER KSPROPERTY, *PKSPROPERTY, KSMETHOD, *PKSMETHOD, KSEVENT, *PKSEVENT; + +#define KSMETHOD_TYPE_NONE 0x00000000 +#define KSMETHOD_TYPE_READ 0x00000001 +#define KSMETHOD_TYPE_WRITE 0x00000002 +#define KSMETHOD_TYPE_MODIFY 0x00000003 +#define KSMETHOD_TYPE_SOURCE 0x00000004 + +#define KSMETHOD_TYPE_SEND 0x00000001 +#define KSMETHOD_TYPE_SETSUPPORT 0x00000100 +#define KSMETHOD_TYPE_BASICSUPPORT 0x00000200 + +#define KSPROPERTY_TYPE_GET 0x00000001 +#define KSPROPERTY_TYPE_SET 0x00000002 +#define KSPROPERTY_TYPE_SETSUPPORT 0x00000100 +#define KSPROPERTY_TYPE_BASICSUPPORT 0x00000200 +#define KSPROPERTY_TYPE_RELATIONS 0x00000400 +#define KSPROPERTY_TYPE_SERIALIZESET 0x00000800 +#define KSPROPERTY_TYPE_UNSERIALIZESET 0x00001000 +#define KSPROPERTY_TYPE_SERIALIZERAW 0x00002000 +#define KSPROPERTY_TYPE_UNSERIALIZERAW 0x00004000 +#define KSPROPERTY_TYPE_SERIALIZESIZE 0x00008000 +#define KSPROPERTY_TYPE_DEFAULTVALUES 0x00010000 + +#define KSPROPERTY_TYPE_TOPOLOGY 0x10000000 +#endif /* _KS_ */ + +#ifndef _IKsControl_ +#define _IKsControl_ + +#ifdef DECLARE_INTERFACE_ + + +#undef INTERFACE +#define INTERFACE IKsControl +DECLARE_INTERFACE_(IKsControl, IUnknown) +{ + /* IUnknown */ + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + /*IKsControl*/ + STDMETHOD(KsProperty)( + THIS_ + IN PKSPROPERTY Property, + IN ULONG PropertyLength, + IN OUT LPVOID PropertyData, + IN ULONG DataLength, + OUT ULONG* BytesReturned + ) PURE; + STDMETHOD(KsMethod)( + THIS_ + IN PKSMETHOD Method, + IN ULONG MethodLength, + IN OUT LPVOID MethodData, + IN ULONG DataLength, + OUT ULONG* BytesReturned + ) PURE; + STDMETHOD(KsEvent)( + THIS_ + IN PKSEVENT Event OPTIONAL, + IN ULONG EventLength, + IN OUT LPVOID EventData, + IN ULONG DataLength, + OUT ULONG* BytesReturned + ) PURE; +}; + +#endif /* DECLARE_INTERFACE_ */ +#endif /* _IKsControl_ */ + +#include + +DEFINE_GUID(IID_IKsControl, 0x28F54685, 0x06FD, 0x11D2, 0xB2, 0x7A, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96); + +/* These formats are in ksmedia.h + */ +#ifndef _KSMEDIA_ + +DEFINE_GUID(KSDATAFORMAT_SUBTYPE_MIDI, 0x1D262760L, 0xE957, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00); +DEFINE_GUID(KSDATAFORMAT_SUBTYPE_DIRECTMUSIC, 0x1a82f8bc, 0x3f8b, 0x11d2, 0xb7, 0x74, 0x00, 0x60, 0x08, 0x33, 0x16, 0xc1); + +#endif + +#if _MSC_VER >= 1200 +#pragma warning(pop) +#endif + +#endif /* _DMKSCTRL */ + + + diff --git a/videoInputSrcAndDemos/libs/DShow/Include/dmo.h b/videoInputSrcAndDemos/libs/DShow/Include/dmo.h index ede52d4..30cc2e9 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/dmo.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/dmo.h @@ -1,29 +1,29 @@ -//------------------------------------------------------------------------------ -// File: DMO.h -// -// Desc: Headers needed by almost all DMOs. -// -// Copyright (c) 1999 - 2001, Microsoft Corporation. All rights reserved. -//------------------------------------------------------------------------------ - - -#ifndef __DMO_H__ -#define __DMO_H__ - - -#include "mediaerr.h" - -// When using ATL we get collisions on Lock, so in this case rename -// IMediaObject::Lock to IMediaObject::DMOLock - -#ifdef FIX_LOCK_NAME -#define Lock DMOLock -#endif -#include "mediaobj.h" -#ifdef FIX_LOCK_NAME -#undef Lock -#endif -#include "dmoreg.h" -#include "dmort.h" - -#endif //__DMO_H__ +//------------------------------------------------------------------------------ +// File: DMO.h +// +// Desc: Headers needed by almost all DMOs. +// +// Copyright (c) 1999 - 2001, Microsoft Corporation. All rights reserved. +//------------------------------------------------------------------------------ + + +#ifndef __DMO_H__ +#define __DMO_H__ + + +#include "mediaerr.h" + +// When using ATL we get collisions on Lock, so in this case rename +// IMediaObject::Lock to IMediaObject::DMOLock + +#ifdef FIX_LOCK_NAME +#define Lock DMOLock +#endif +#include "mediaobj.h" +#ifdef FIX_LOCK_NAME +#undef Lock +#endif +#include "dmoreg.h" +#include "dmort.h" + +#endif //__DMO_H__ diff --git a/videoInputSrcAndDemos/libs/DShow/Include/dmodshow.h b/videoInputSrcAndDemos/libs/DShow/Include/dmodshow.h index c2154ed..48b323d 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/dmodshow.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/dmodshow.h @@ -1,176 +1,176 @@ - -#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 dmodshow.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 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 -#endif // __RPCNDR_H_VERSION__ - -#ifndef COM_NO_WINDOWS_H -#include "windows.h" -#include "ole2.h" -#endif /*COM_NO_WINDOWS_H*/ - -#ifndef __dmodshow_h__ -#define __dmodshow_h__ - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -#pragma once -#endif - -/* Forward Declarations */ - -#ifndef __IDMOWrapperFilter_FWD_DEFINED__ -#define __IDMOWrapperFilter_FWD_DEFINED__ -typedef interface IDMOWrapperFilter IDMOWrapperFilter; -#endif /* __IDMOWrapperFilter_FWD_DEFINED__ */ - - -/* header files for imported files */ -#include "unknwn.h" -#include "objidl.h" -#include "mediaobj.h" - -#ifdef __cplusplus -extern "C"{ -#endif - -void * __RPC_USER MIDL_user_allocate(size_t); -void __RPC_USER MIDL_user_free( void * ); - -/* interface __MIDL_itf_dmodshow_0000 */ -/* [local] */ - -DEFINE_GUID(CLSID_DMOWrapperFilter, 0x94297043,0xbd82,0x4dfd,0xb0,0xde,0x81,0x77,0x73,0x9c,0x6d,0x20); -DEFINE_GUID(CLSID_DMOFilterCategory,0xbcd5796c,0xbd52,0x4d30,0xab,0x76,0x70,0xf9,0x75,0xb8,0x91,0x99); - - -extern RPC_IF_HANDLE __MIDL_itf_dmodshow_0000_v0_0_c_ifspec; -extern RPC_IF_HANDLE __MIDL_itf_dmodshow_0000_v0_0_s_ifspec; - -#ifndef __IDMOWrapperFilter_INTERFACE_DEFINED__ -#define __IDMOWrapperFilter_INTERFACE_DEFINED__ - -/* interface IDMOWrapperFilter */ -/* [uuid][object] */ - - -EXTERN_C const IID IID_IDMOWrapperFilter; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("52d6f586-9f0f-4824-8fc8-e32ca04930c2") - IDMOWrapperFilter : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE Init( - REFCLSID clsidDMO, - REFCLSID catDMO) = 0; - - }; - -#else /* C style interface */ - - typedef struct IDMOWrapperFilterVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IDMOWrapperFilter * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IDMOWrapperFilter * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IDMOWrapperFilter * This); - - HRESULT ( STDMETHODCALLTYPE *Init )( - IDMOWrapperFilter * This, - REFCLSID clsidDMO, - REFCLSID catDMO); - - END_INTERFACE - } IDMOWrapperFilterVtbl; - - interface IDMOWrapperFilter - { - CONST_VTBL struct IDMOWrapperFilterVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IDMOWrapperFilter_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IDMOWrapperFilter_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IDMOWrapperFilter_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IDMOWrapperFilter_Init(This,clsidDMO,catDMO) \ - (This)->lpVtbl -> Init(This,clsidDMO,catDMO) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IDMOWrapperFilter_Init_Proxy( - IDMOWrapperFilter * This, - REFCLSID clsidDMO, - REFCLSID catDMO); - - -void __RPC_STUB IDMOWrapperFilter_Init_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IDMOWrapperFilter_INTERFACE_DEFINED__ */ - - -/* Additional Prototypes for ALL interfaces */ - -/* end of Additional Prototypes */ - -#ifdef __cplusplus -} -#endif - -#endif - - + +#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 dmodshow.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 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 +#endif // __RPCNDR_H_VERSION__ + +#ifndef COM_NO_WINDOWS_H +#include "windows.h" +#include "ole2.h" +#endif /*COM_NO_WINDOWS_H*/ + +#ifndef __dmodshow_h__ +#define __dmodshow_h__ + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#pragma once +#endif + +/* Forward Declarations */ + +#ifndef __IDMOWrapperFilter_FWD_DEFINED__ +#define __IDMOWrapperFilter_FWD_DEFINED__ +typedef interface IDMOWrapperFilter IDMOWrapperFilter; +#endif /* __IDMOWrapperFilter_FWD_DEFINED__ */ + + +/* header files for imported files */ +#include "unknwn.h" +#include "objidl.h" +#include "mediaobj.h" + +#ifdef __cplusplus +extern "C"{ +#endif + +void * __RPC_USER MIDL_user_allocate(size_t); +void __RPC_USER MIDL_user_free( void * ); + +/* interface __MIDL_itf_dmodshow_0000 */ +/* [local] */ + +DEFINE_GUID(CLSID_DMOWrapperFilter, 0x94297043,0xbd82,0x4dfd,0xb0,0xde,0x81,0x77,0x73,0x9c,0x6d,0x20); +DEFINE_GUID(CLSID_DMOFilterCategory,0xbcd5796c,0xbd52,0x4d30,0xab,0x76,0x70,0xf9,0x75,0xb8,0x91,0x99); + + +extern RPC_IF_HANDLE __MIDL_itf_dmodshow_0000_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_dmodshow_0000_v0_0_s_ifspec; + +#ifndef __IDMOWrapperFilter_INTERFACE_DEFINED__ +#define __IDMOWrapperFilter_INTERFACE_DEFINED__ + +/* interface IDMOWrapperFilter */ +/* [uuid][object] */ + + +EXTERN_C const IID IID_IDMOWrapperFilter; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("52d6f586-9f0f-4824-8fc8-e32ca04930c2") + IDMOWrapperFilter : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE Init( + REFCLSID clsidDMO, + REFCLSID catDMO) = 0; + + }; + +#else /* C style interface */ + + typedef struct IDMOWrapperFilterVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDMOWrapperFilter * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDMOWrapperFilter * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDMOWrapperFilter * This); + + HRESULT ( STDMETHODCALLTYPE *Init )( + IDMOWrapperFilter * This, + REFCLSID clsidDMO, + REFCLSID catDMO); + + END_INTERFACE + } IDMOWrapperFilterVtbl; + + interface IDMOWrapperFilter + { + CONST_VTBL struct IDMOWrapperFilterVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDMOWrapperFilter_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IDMOWrapperFilter_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IDMOWrapperFilter_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IDMOWrapperFilter_Init(This,clsidDMO,catDMO) \ + (This)->lpVtbl -> Init(This,clsidDMO,catDMO) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IDMOWrapperFilter_Init_Proxy( + IDMOWrapperFilter * This, + REFCLSID clsidDMO, + REFCLSID catDMO); + + +void __RPC_STUB IDMOWrapperFilter_Init_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IDMOWrapperFilter_INTERFACE_DEFINED__ */ + + +/* Additional Prototypes for ALL interfaces */ + +/* end of Additional Prototypes */ + +#ifdef __cplusplus +} +#endif + +#endif + + diff --git a/videoInputSrcAndDemos/libs/DShow/Include/dmoimpl.h b/videoInputSrcAndDemos/libs/DShow/Include/dmoimpl.h index bf41382..8ba6e3a 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/dmoimpl.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/dmoimpl.h @@ -1,645 +1,645 @@ -//------------------------------------------------------------------------------ -// File: DMOImpl.h -// -// Desc: Classes to implement a DMO. -// -// Copyright (c) 2000-2001, Microsoft Corporation. All rights reserved. -//------------------------------------------------------------------------------ - - -#ifndef _dmoimpl_h_ -#define _dmoimpl_h_ - -#ifdef _DEBUG -#include -#endif - -// Class to implement a DMO -// -// -// Assumes the number of input and output streams is fixed -// (these are template parameters) -// -// Provides following services: -// -// Basic parameter checking and locking -// Fully implements : -// GetStreamCount -// SetInputType -// SetOutputType -// GetCurrentInputType -// GetCurrentOutputType -// -// Checks if all types are set before streaming -// Automatically calls AllocateStreamingResources before streaming -// if it's not been called already -// Prevents streaming until the types on all non-optional streams -// have been set -// -// -// Derived class implements the following methods : -// -/* - HRESULT InternalGetInputStreamInfo(DWORD dwInputStreamIndex, DWORD *pdwFlags); - HRESULT InternalGetOutputStreamInfo(DWORD dwOutputStreamIndex, DWORD *pdwFlags); - HRESULT InternalCheckInputType(DWORD dwInputStreamIndex, const DMO_MEDIA_TYPE *pmt); - HRESULT InternalCheckOutputType(DWORD dwOutputStreamIndex, const DMO_MEDIA_TYPE *pmt); - HRESULT InternalGetInputType(DWORD dwInputStreamIndex, DWORD dwTypeIndex, - DMO_MEDIA_TYPE *pmt); - HRESULT InternalGetOutputType(DWORD dwOutputStreamIndex, DWORD dwTypeIndex, - DMO_MEDIA_TYPE *pmt); - HRESULT InternalGetInputSizeInfo(DWORD dwInputStreamIndex, DWORD *pcbSize, - DWORD *pcbMaxLookahead, DWORD *pcbAlignment); - HRESULT InternalGetOutputSizeInfo(DWORD dwOutputStreamIndex, DWORD *pcbSize, - DWORD *pcbAlignment); - HRESULT InternalGetInputMaxLatency(DWORD dwInputStreamIndex, REFERENCE_TIME *prtMaxLatency); - HRESULT InternalSetInputMaxLatency(DWORD dwInputStreamIndex, REFERENCE_TIME rtMaxLatency); - HRESULT InternalFlush(); - HRESULT InternalDiscontinuity(DWORD dwInputStreamIndex); - HRESULT InternalAllocateStreamingResources(); - HRESULT InternalFreeStreamingResources(); - HRESULT InternalProcessInput(DWORD dwInputStreamIndex, IMediaBuffer *pBuffer, - DWORD dwFlags, REFERENCE_TIME rtTimestamp, - REFERENCE_TIME rtTimelength); - HRESULT InternalProcessOutput(DWORD dwFlags, DWORD cOutputBufferCount, - DMO_OUTPUT_DATA_BUFFER *pOutputBuffers, - DWORD *pdwStatus); - HRESULT InternalAcceptingInput(DWORD dwInputStreamIndex); - void Lock(); - void Unlock(); - - Notes: - The derived class is meant to do most work to initialize streaming - in AllocateStreamingResources rather than when types are set. - - This centralizes the work to one - clear place based on the types set for all streams. - - The derived class implements locking. - - The derived class implements the IUnknown methods - - Usage example (1 input and 1 output) : - class CMyDMO : public IMediaObjectImpl, - ... -*/ - - -#define INTERNAL_CALL(_T_, _X_) \ - static_cast<_T_ *>(this)->Internal##_X_ - -template -class IMediaObjectImpl : public IMediaObject -{ -private: - // Member variables - struct { - DWORD fTypeSet:1; - DWORD fIncomplete:1; - DMO_MEDIA_TYPE CurrentMediaType; - } m_InputInfo[NUMBEROFINPUTS], m_OutputInfo[NUMBEROFOUTPUTS]; - - bool m_fTypesSet; - bool m_fFlushed; - bool m_fResourcesAllocated; - -protected: - - // Helpers - bool InputTypeSet(DWORD ulInputStreamIndex) const - { - _ASSERTE(ulInputStreamIndex < NUMBEROFINPUTS); - return 0 != m_InputInfo[ulInputStreamIndex].fTypeSet; - } - - bool OutputTypeSet(DWORD ulOutputStreamIndex) const - { - _ASSERTE(ulOutputStreamIndex < NUMBEROFOUTPUTS); - return 0 != m_OutputInfo[ulOutputStreamIndex].fTypeSet; - } - const DMO_MEDIA_TYPE *InputType(DWORD ulInputStreamIndex) - { - if (!InputTypeSet(ulInputStreamIndex)) { - return NULL; - } - return &m_InputInfo[ulInputStreamIndex].CurrentMediaType; - } - const DMO_MEDIA_TYPE *OutputType(DWORD ulOutputStreamIndex) - { - if (!OutputTypeSet(ulOutputStreamIndex)) { - return NULL; - } - return &m_OutputInfo[ulOutputStreamIndex].CurrentMediaType; - } - - - class LockIt - { - public: - LockIt(_DERIVED_ *p) : m_p(p) - { - static_cast<_DERIVED_ *>(m_p)->Lock(); - } - ~LockIt() - { - static_cast<_DERIVED_ *>(m_p)->Unlock(); - } - _DERIVED_ *const m_p; - }; - - bool CheckTypesSet() - { - m_fTypesSet = false; - DWORD dw; - for (dw = 0; dw < NUMBEROFINPUTS; dw++) { - if (!InputTypeSet(dw)) { - return false; - } - } - for (dw = 0; dw < NUMBEROFOUTPUTS; dw++) { - if (!OutputTypeSet(dw)) { - // Check if it's optional - DWORD dwFlags; -#ifdef _DEBUG - dwFlags = 0xFFFFFFFF; -#endif - INTERNAL_CALL(_DERIVED_, GetOutputStreamInfo)(dw, &dwFlags); - _ASSERTE(0 == (dwFlags & ~(DMO_OUTPUT_STREAMF_WHOLE_SAMPLES | - DMO_OUTPUT_STREAMF_SINGLE_SAMPLE_PER_BUFFER | - DMO_OUTPUT_STREAMF_FIXED_SAMPLE_SIZE | - DMO_OUTPUT_STREAMF_DISCARDABLE | - DMO_OUTPUT_STREAMF_OPTIONAL))); - if (!(dwFlags & DMO_OUTPUT_STREAMF_OPTIONAL)) { - return false; - } - } - } - m_fTypesSet = true; - return true; - } - - - IMediaObjectImpl() : - m_fTypesSet(false), - m_fFlushed(true), - m_fResourcesAllocated(false) - { - ZeroMemory(&m_InputInfo, sizeof(m_InputInfo)); - ZeroMemory(&m_OutputInfo, sizeof(m_OutputInfo)); - } - - virtual ~IMediaObjectImpl() { - DWORD dwCurrentType; - - for (dwCurrentType = 0; dwCurrentType < NUMBEROFINPUTS; dwCurrentType++) { - if(InputTypeSet(dwCurrentType)) { - MoFreeMediaType(&m_InputInfo[dwCurrentType].CurrentMediaType); - } - } - - for (dwCurrentType = 0; dwCurrentType < NUMBEROFOUTPUTS; dwCurrentType++) { - if(OutputTypeSet(dwCurrentType)) { - MoFreeMediaType(&m_OutputInfo[dwCurrentType].CurrentMediaType); - } - } - } - - - // IMediaObject methods - - - // - // IMediaObject methods - // - STDMETHODIMP GetStreamCount(unsigned long *pulNumberOfInputStreams, unsigned long *pulNumberOfOutputStreams) - { - LockIt lck(static_cast<_DERIVED_ *>(this)); - if (pulNumberOfInputStreams == NULL || - pulNumberOfOutputStreams == NULL) { - return E_POINTER; - } - *pulNumberOfInputStreams = NUMBEROFINPUTS; - *pulNumberOfOutputStreams = NUMBEROFOUTPUTS; - return S_OK; - } - - STDMETHODIMP GetInputStreamInfo(ULONG ulStreamIndex, DWORD *pdwFlags) - { - LockIt lck(static_cast<_DERIVED_ *>(this)); - if (ulStreamIndex >= NUMBEROFINPUTS) { - return DMO_E_INVALIDSTREAMINDEX; - } - if (pdwFlags == NULL) { - return E_POINTER; - } - HRESULT hr = INTERNAL_CALL(_DERIVED_, GetInputStreamInfo)(ulStreamIndex, pdwFlags); - _ASSERTE(0 == (*pdwFlags & ~(DMO_INPUT_STREAMF_WHOLE_SAMPLES | - DMO_INPUT_STREAMF_SINGLE_SAMPLE_PER_BUFFER | - DMO_INPUT_STREAMF_FIXED_SAMPLE_SIZE | - DMO_INPUT_STREAMF_HOLDS_BUFFERS))); - return hr; - } - - STDMETHODIMP GetOutputStreamInfo(ULONG ulStreamIndex, DWORD *pdwFlags) - { - LockIt lck(static_cast<_DERIVED_ *>(this)); - if (ulStreamIndex >= NUMBEROFOUTPUTS) { - return DMO_E_INVALIDSTREAMINDEX; - } - if (pdwFlags == NULL) { - return E_POINTER; - } - HRESULT hr = INTERNAL_CALL(_DERIVED_, GetOutputStreamInfo)(ulStreamIndex, pdwFlags); - _ASSERTE(0 == (*pdwFlags & ~(DMO_OUTPUT_STREAMF_WHOLE_SAMPLES | - DMO_OUTPUT_STREAMF_SINGLE_SAMPLE_PER_BUFFER | - DMO_OUTPUT_STREAMF_FIXED_SAMPLE_SIZE | - DMO_OUTPUT_STREAMF_DISCARDABLE | - DMO_OUTPUT_STREAMF_OPTIONAL))); - return hr; - } - - STDMETHODIMP GetInputType(ULONG ulStreamIndex, ULONG ulTypeIndex, DMO_MEDIA_TYPE *pmt) { - if (ulStreamIndex >= NUMBEROFINPUTS) { - return DMO_E_INVALIDSTREAMINDEX; - } - LockIt lck(static_cast<_DERIVED_ *>(this)); - return INTERNAL_CALL(_DERIVED_, GetInputType)(ulStreamIndex, ulTypeIndex, pmt); - } - - STDMETHODIMP GetOutputType(ULONG ulStreamIndex, ULONG ulTypeIndex, DMO_MEDIA_TYPE *pmt) { - if (ulStreamIndex >= NUMBEROFOUTPUTS) { - return DMO_E_INVALIDSTREAMINDEX; - } - LockIt lck(static_cast<_DERIVED_ *>(this)); - return INTERNAL_CALL(_DERIVED_, GetOutputType)(ulStreamIndex, ulTypeIndex, pmt); - } - - STDMETHODIMP GetInputCurrentType(ULONG ulStreamIndex, DMO_MEDIA_TYPE *pmt) { - if (ulStreamIndex >= NUMBEROFINPUTS) { - return DMO_E_INVALIDSTREAMINDEX; - } - if (NULL == pmt) { - return E_POINTER; - } - LockIt lck(static_cast<_DERIVED_ *>(this)); - if (InputTypeSet(ulStreamIndex)) - return MoCopyMediaType(pmt, - &m_InputInfo[ulStreamIndex].CurrentMediaType); - else - return DMO_E_TYPE_NOT_SET; - } - - STDMETHODIMP GetOutputCurrentType(ULONG ulStreamIndex, DMO_MEDIA_TYPE *pmt) { - if (ulStreamIndex >= NUMBEROFOUTPUTS) { - return DMO_E_INVALIDSTREAMINDEX; - } - if (NULL == pmt) { - return E_POINTER; - } - LockIt lck(static_cast<_DERIVED_ *>(this)); - if (OutputTypeSet(ulStreamIndex)) - return MoCopyMediaType(pmt, - &m_OutputInfo[ulStreamIndex].CurrentMediaType); - else - return DMO_E_TYPE_NOT_SET; - } - - STDMETHODIMP GetInputSizeInfo(ULONG ulStreamIndex, ULONG *pulSize, ULONG *pcbMaxLookahead, ULONG *pulAlignment) { - if (ulStreamIndex >= NUMBEROFINPUTS) { - return DMO_E_INVALIDSTREAMINDEX; - } - if (NULL == pulSize || NULL == pulAlignment || - NULL == pcbMaxLookahead) { - return E_POINTER; - } - LockIt lck(static_cast<_DERIVED_ *>(this)); - if (!InputTypeSet(ulStreamIndex)) { - return DMO_E_TYPE_NOT_SET; - } - return INTERNAL_CALL(_DERIVED_, GetInputSizeInfo)(ulStreamIndex, pulSize, pcbMaxLookahead, pulAlignment); - } - - STDMETHODIMP GetOutputSizeInfo(ULONG ulStreamIndex, ULONG *pulSize, ULONG *pulAlignment) { - if (ulStreamIndex >= NUMBEROFOUTPUTS) { - return DMO_E_INVALIDSTREAMINDEX; - } - if (NULL == pulSize || NULL == pulAlignment) { - return E_POINTER; - } - LockIt lck(static_cast<_DERIVED_ *>(this)); - if (!m_fTypesSet || !OutputTypeSet(ulStreamIndex)) { - return DMO_E_TYPE_NOT_SET; - } - return INTERNAL_CALL(_DERIVED_, GetOutputSizeInfo)(ulStreamIndex, pulSize, pulAlignment); - } - - STDMETHODIMP SetInputType(ULONG ulStreamIndex, const DMO_MEDIA_TYPE *pmt, DWORD dwFlags) { - if (ulStreamIndex >= NUMBEROFINPUTS) { - return DMO_E_INVALIDSTREAMINDEX; - } - if (dwFlags & ~ (DMO_SET_TYPEF_CLEAR | DMO_SET_TYPEF_TEST_ONLY)) { - return E_INVALIDARG; - } - - LockIt lck(static_cast<_DERIVED_ *>(this)); - - if (dwFlags & DMO_SET_TYPEF_CLEAR) { - MoFreeMediaType(&m_InputInfo[ulStreamIndex].CurrentMediaType); - m_InputInfo[ulStreamIndex].fTypeSet = FALSE; - if (!CheckTypesSet()) { - Flush(); - FreeStreamingResources(); - } - return NOERROR; - } - if (NULL == pmt) { - return E_POINTER; - } - HRESULT hr = INTERNAL_CALL(_DERIVED_, CheckInputType)(ulStreamIndex, pmt); - if (FAILED(hr)) - return hr; - - if (dwFlags & DMO_SET_TYPEF_TEST_ONLY) { - return NOERROR; - } - - - // actually set the type - DMO_MEDIA_TYPE mtTemp; - if (S_OK == MoCopyMediaType(&mtTemp, pmt)) { - // Free any previous mediatype - if (InputTypeSet(ulStreamIndex)) { - MoFreeMediaType(&m_InputInfo[ulStreamIndex].CurrentMediaType); - } - m_InputInfo[ulStreamIndex].CurrentMediaType = mtTemp; - m_InputInfo[ulStreamIndex].fTypeSet = TRUE; - CheckTypesSet(); - } else { - return E_OUTOFMEMORY; - } - - return NOERROR; - } - - STDMETHODIMP SetOutputType(ULONG ulStreamIndex, const DMO_MEDIA_TYPE *pmt, DWORD dwFlags) { - if (ulStreamIndex >= NUMBEROFOUTPUTS) { - return DMO_E_INVALIDSTREAMINDEX; - } - if (dwFlags & ~ (DMO_SET_TYPEF_CLEAR | DMO_SET_TYPEF_TEST_ONLY)) { - return E_INVALIDARG; - } - - LockIt lck(static_cast<_DERIVED_ *>(this)); - - if (dwFlags & DMO_SET_TYPEF_CLEAR) { - MoFreeMediaType(&m_OutputInfo[ulStreamIndex].CurrentMediaType); - m_OutputInfo[ulStreamIndex].fTypeSet = FALSE; - if (!CheckTypesSet()) { - Flush(); - FreeStreamingResources(); - } - return NOERROR; - } - if (NULL == pmt) { - return E_POINTER; - } - HRESULT hr = INTERNAL_CALL(_DERIVED_, CheckOutputType)(ulStreamIndex, pmt); - if (FAILED(hr)) { - return hr; - } - - if (dwFlags & DMO_SET_TYPEF_TEST_ONLY) { - return NOERROR; - } - - - // actually set the type - DMO_MEDIA_TYPE mtTemp; - if (S_OK == MoCopyMediaType(&mtTemp, pmt)) { - // Free any previous mediatype - if (OutputTypeSet(ulStreamIndex)) { - MoFreeMediaType(&m_OutputInfo[ulStreamIndex].CurrentMediaType); - } - m_OutputInfo[ulStreamIndex].CurrentMediaType = mtTemp; - m_OutputInfo[ulStreamIndex].fTypeSet = TRUE; - CheckTypesSet(); - } else { - return E_OUTOFMEMORY; - } - - return NOERROR; - } - - STDMETHODIMP GetInputStatus( - ULONG ulStreamIndex, - DWORD *pdwStatus - ) { - if (ulStreamIndex >= NUMBEROFINPUTS) { - return DMO_E_INVALIDSTREAMINDEX; - } - if (NULL == pdwStatus) { - return E_POINTER; - } - *pdwStatus = 0; - - LockIt lck(static_cast<_DERIVED_ *>(this)); - - if (!m_fTypesSet) { - return DMO_E_TYPE_NOT_SET; - } - - if (INTERNAL_CALL(_DERIVED_, AcceptingInput)(ulStreamIndex) == S_OK) { - *pdwStatus |= DMO_INPUT_STATUSF_ACCEPT_DATA; - } - return NOERROR; - } - - STDMETHODIMP GetInputMaxLatency(unsigned long ulStreamIndex, REFERENCE_TIME *prtLatency) { - - if (prtLatency == NULL) { - return E_POINTER; - } - if (ulStreamIndex >= NUMBEROFINPUTS) { - return DMO_E_INVALIDSTREAMINDEX; - } - - LockIt lck(static_cast<_DERIVED_ *>(this)); - - return INTERNAL_CALL(_DERIVED_, GetInputMaxLatency)(ulStreamIndex, prtLatency); - } - - STDMETHODIMP SetInputMaxLatency(unsigned long ulStreamIndex, REFERENCE_TIME rtLatency) { - if (ulStreamIndex >= NUMBEROFINPUTS) { - return DMO_E_INVALIDSTREAMINDEX; - } - - LockIt lck(static_cast<_DERIVED_ *>(this)); - - return INTERNAL_CALL(_DERIVED_, SetInputMaxLatency)(ulStreamIndex, rtLatency); - } - - STDMETHODIMP Discontinuity(ULONG ulStreamIndex) { - if (ulStreamIndex >= NUMBEROFINPUTS) { - return DMO_E_INVALIDSTREAMINDEX; - } - - LockIt lck(static_cast<_DERIVED_ *>(this)); - - if (!m_fTypesSet) { - return DMO_E_TYPE_NOT_SET; - } - - if (S_OK != INTERNAL_CALL(_DERIVED_, AcceptingInput)(ulStreamIndex)) { - return DMO_E_NOTACCEPTING; - } - - return INTERNAL_CALL(_DERIVED_, Discontinuity)(ulStreamIndex); - } - - STDMETHODIMP Flush() - { - LockIt lck(static_cast<_DERIVED_ *>(this)); - - if (!m_fTypesSet) { - return S_OK; - } - if (m_fFlushed) { - return S_OK; - } - HRESULT hr = INTERNAL_CALL(_DERIVED_, Flush)(); - m_fFlushed = true; - return hr; - } - - STDMETHODIMP AllocateStreamingResources() { - LockIt lck(static_cast<_DERIVED_ *>(this)); - if (!m_fTypesSet) { - return DMO_E_TYPE_NOT_SET; - } - if (m_fResourcesAllocated) { - return S_OK; - } - HRESULT hr = INTERNAL_CALL(_DERIVED_, AllocateStreamingResources)(); - if (SUCCEEDED(hr)) { - m_fResourcesAllocated = true; - } - return hr; - } - - STDMETHODIMP FreeStreamingResources() - { - LockIt lck(static_cast<_DERIVED_ *>(this)); - if (m_fResourcesAllocated) { - m_fResourcesAllocated = false; - INTERNAL_CALL(_DERIVED_, Flush)(); - return INTERNAL_CALL(_DERIVED_, FreeStreamingResources)(); - } - return S_OK; - } - - // - // Processing methods - public entry points - // - STDMETHODIMP ProcessInput( - DWORD ulStreamIndex, - IMediaBuffer *pBuffer, // [in], must not be NULL - DWORD dwFlags, // [in] - discontinuity, timestamp, etc. - REFERENCE_TIME rtTimestamp, // [in], valid if flag set - REFERENCE_TIME rtTimelength // [in], valid if flag set - ) { - if (!pBuffer) { - return E_POINTER; - } - if (ulStreamIndex >= NUMBEROFINPUTS) { - return DMO_E_INVALIDSTREAMINDEX; - } - if (dwFlags & ~(DMO_INPUT_DATA_BUFFERF_SYNCPOINT | - DMO_INPUT_DATA_BUFFERF_TIME | - DMO_INPUT_DATA_BUFFERF_TIMELENGTH)) { - return E_INVALIDARG; - } - - LockIt lck(static_cast<_DERIVED_ *>(this)); - - // Make sure all streams have media types set and resources are allocated - HRESULT hr = AllocateStreamingResources(); - if (FAILED(hr)) { - return hr; - } - if (INTERNAL_CALL(_DERIVED_, AcceptingInput)(ulStreamIndex) != S_OK) { - return DMO_E_NOTACCEPTING; - } - - m_fFlushed = false; - - return INTERNAL_CALL(_DERIVED_, ProcessInput)( - ulStreamIndex, - pBuffer, - dwFlags, - rtTimestamp, - rtTimelength); - } - - STDMETHODIMP ProcessOutput( - DWORD dwFlags, - DWORD ulOutputBufferCount, - DMO_OUTPUT_DATA_BUFFER *pOutputBuffers, - DWORD *pdwStatus) - { - if (pdwStatus == NULL) { - return E_POINTER; - } - - - if (ulOutputBufferCount != NUMBEROFOUTPUTS || (dwFlags & ~DMO_PROCESS_OUTPUT_DISCARD_WHEN_NO_BUFFER)) { - return E_INVALIDARG; - } - - if (NUMBEROFOUTPUTS != 0 && pOutputBuffers == NULL) { - return E_POINTER; - } - - *pdwStatus = 0; - - LockIt lck(static_cast<_DERIVED_ *>(this)); - - HRESULT hr = AllocateStreamingResources(); - if (FAILED(hr)) { - return hr; - } - - for (DWORD dw = 0; dw < NUMBEROFOUTPUTS; dw++) { - pOutputBuffers[dw].dwStatus = 0; - } - - hr = INTERNAL_CALL(_DERIVED_, ProcessOutput)( - dwFlags, - ulOutputBufferCount, - pOutputBuffers, - pdwStatus); - - // remember the DMO's incomplete status - for (dw = 0; dw < NUMBEROFOUTPUTS; dw++) { - if (pOutputBuffers[dw].dwStatus & DMO_OUTPUT_DATA_BUFFERF_INCOMPLETE) { - m_OutputInfo[dw].fIncomplete = TRUE; - } else { - m_OutputInfo[dw].fIncomplete = FALSE; - } - } - - return hr; - } - - STDMETHODIMP DMOLock(LONG lLock) - { - if (lLock) { - static_cast<_DERIVED_ *>(this)->Lock(); - } else { - static_cast<_DERIVED_ *>(this)->Unlock(); - } - return S_OK; - } -}; - -#endif // _dmoimpl_h_ - +//------------------------------------------------------------------------------ +// File: DMOImpl.h +// +// Desc: Classes to implement a DMO. +// +// Copyright (c) 2000-2001, Microsoft Corporation. All rights reserved. +//------------------------------------------------------------------------------ + + +#ifndef _dmoimpl_h_ +#define _dmoimpl_h_ + +#ifdef _DEBUG +#include +#endif + +// Class to implement a DMO +// +// +// Assumes the number of input and output streams is fixed +// (these are template parameters) +// +// Provides following services: +// +// Basic parameter checking and locking +// Fully implements : +// GetStreamCount +// SetInputType +// SetOutputType +// GetCurrentInputType +// GetCurrentOutputType +// +// Checks if all types are set before streaming +// Automatically calls AllocateStreamingResources before streaming +// if it's not been called already +// Prevents streaming until the types on all non-optional streams +// have been set +// +// +// Derived class implements the following methods : +// +/* + HRESULT InternalGetInputStreamInfo(DWORD dwInputStreamIndex, DWORD *pdwFlags); + HRESULT InternalGetOutputStreamInfo(DWORD dwOutputStreamIndex, DWORD *pdwFlags); + HRESULT InternalCheckInputType(DWORD dwInputStreamIndex, const DMO_MEDIA_TYPE *pmt); + HRESULT InternalCheckOutputType(DWORD dwOutputStreamIndex, const DMO_MEDIA_TYPE *pmt); + HRESULT InternalGetInputType(DWORD dwInputStreamIndex, DWORD dwTypeIndex, + DMO_MEDIA_TYPE *pmt); + HRESULT InternalGetOutputType(DWORD dwOutputStreamIndex, DWORD dwTypeIndex, + DMO_MEDIA_TYPE *pmt); + HRESULT InternalGetInputSizeInfo(DWORD dwInputStreamIndex, DWORD *pcbSize, + DWORD *pcbMaxLookahead, DWORD *pcbAlignment); + HRESULT InternalGetOutputSizeInfo(DWORD dwOutputStreamIndex, DWORD *pcbSize, + DWORD *pcbAlignment); + HRESULT InternalGetInputMaxLatency(DWORD dwInputStreamIndex, REFERENCE_TIME *prtMaxLatency); + HRESULT InternalSetInputMaxLatency(DWORD dwInputStreamIndex, REFERENCE_TIME rtMaxLatency); + HRESULT InternalFlush(); + HRESULT InternalDiscontinuity(DWORD dwInputStreamIndex); + HRESULT InternalAllocateStreamingResources(); + HRESULT InternalFreeStreamingResources(); + HRESULT InternalProcessInput(DWORD dwInputStreamIndex, IMediaBuffer *pBuffer, + DWORD dwFlags, REFERENCE_TIME rtTimestamp, + REFERENCE_TIME rtTimelength); + HRESULT InternalProcessOutput(DWORD dwFlags, DWORD cOutputBufferCount, + DMO_OUTPUT_DATA_BUFFER *pOutputBuffers, + DWORD *pdwStatus); + HRESULT InternalAcceptingInput(DWORD dwInputStreamIndex); + void Lock(); + void Unlock(); + + Notes: + The derived class is meant to do most work to initialize streaming + in AllocateStreamingResources rather than when types are set. + + This centralizes the work to one + clear place based on the types set for all streams. + + The derived class implements locking. + + The derived class implements the IUnknown methods + + Usage example (1 input and 1 output) : + class CMyDMO : public IMediaObjectImpl, + ... +*/ + + +#define INTERNAL_CALL(_T_, _X_) \ + static_cast<_T_ *>(this)->Internal##_X_ + +template +class IMediaObjectImpl : public IMediaObject +{ +private: + // Member variables + struct { + DWORD fTypeSet:1; + DWORD fIncomplete:1; + DMO_MEDIA_TYPE CurrentMediaType; + } m_InputInfo[NUMBEROFINPUTS], m_OutputInfo[NUMBEROFOUTPUTS]; + + bool m_fTypesSet; + bool m_fFlushed; + bool m_fResourcesAllocated; + +protected: + + // Helpers + bool InputTypeSet(DWORD ulInputStreamIndex) const + { + _ASSERTE(ulInputStreamIndex < NUMBEROFINPUTS); + return 0 != m_InputInfo[ulInputStreamIndex].fTypeSet; + } + + bool OutputTypeSet(DWORD ulOutputStreamIndex) const + { + _ASSERTE(ulOutputStreamIndex < NUMBEROFOUTPUTS); + return 0 != m_OutputInfo[ulOutputStreamIndex].fTypeSet; + } + const DMO_MEDIA_TYPE *InputType(DWORD ulInputStreamIndex) + { + if (!InputTypeSet(ulInputStreamIndex)) { + return NULL; + } + return &m_InputInfo[ulInputStreamIndex].CurrentMediaType; + } + const DMO_MEDIA_TYPE *OutputType(DWORD ulOutputStreamIndex) + { + if (!OutputTypeSet(ulOutputStreamIndex)) { + return NULL; + } + return &m_OutputInfo[ulOutputStreamIndex].CurrentMediaType; + } + + + class LockIt + { + public: + LockIt(_DERIVED_ *p) : m_p(p) + { + static_cast<_DERIVED_ *>(m_p)->Lock(); + } + ~LockIt() + { + static_cast<_DERIVED_ *>(m_p)->Unlock(); + } + _DERIVED_ *const m_p; + }; + + bool CheckTypesSet() + { + m_fTypesSet = false; + DWORD dw; + for (dw = 0; dw < NUMBEROFINPUTS; dw++) { + if (!InputTypeSet(dw)) { + return false; + } + } + for (dw = 0; dw < NUMBEROFOUTPUTS; dw++) { + if (!OutputTypeSet(dw)) { + // Check if it's optional + DWORD dwFlags; +#ifdef _DEBUG + dwFlags = 0xFFFFFFFF; +#endif + INTERNAL_CALL(_DERIVED_, GetOutputStreamInfo)(dw, &dwFlags); + _ASSERTE(0 == (dwFlags & ~(DMO_OUTPUT_STREAMF_WHOLE_SAMPLES | + DMO_OUTPUT_STREAMF_SINGLE_SAMPLE_PER_BUFFER | + DMO_OUTPUT_STREAMF_FIXED_SAMPLE_SIZE | + DMO_OUTPUT_STREAMF_DISCARDABLE | + DMO_OUTPUT_STREAMF_OPTIONAL))); + if (!(dwFlags & DMO_OUTPUT_STREAMF_OPTIONAL)) { + return false; + } + } + } + m_fTypesSet = true; + return true; + } + + + IMediaObjectImpl() : + m_fTypesSet(false), + m_fFlushed(true), + m_fResourcesAllocated(false) + { + ZeroMemory(&m_InputInfo, sizeof(m_InputInfo)); + ZeroMemory(&m_OutputInfo, sizeof(m_OutputInfo)); + } + + virtual ~IMediaObjectImpl() { + DWORD dwCurrentType; + + for (dwCurrentType = 0; dwCurrentType < NUMBEROFINPUTS; dwCurrentType++) { + if(InputTypeSet(dwCurrentType)) { + MoFreeMediaType(&m_InputInfo[dwCurrentType].CurrentMediaType); + } + } + + for (dwCurrentType = 0; dwCurrentType < NUMBEROFOUTPUTS; dwCurrentType++) { + if(OutputTypeSet(dwCurrentType)) { + MoFreeMediaType(&m_OutputInfo[dwCurrentType].CurrentMediaType); + } + } + } + + + // IMediaObject methods + + + // + // IMediaObject methods + // + STDMETHODIMP GetStreamCount(unsigned long *pulNumberOfInputStreams, unsigned long *pulNumberOfOutputStreams) + { + LockIt lck(static_cast<_DERIVED_ *>(this)); + if (pulNumberOfInputStreams == NULL || + pulNumberOfOutputStreams == NULL) { + return E_POINTER; + } + *pulNumberOfInputStreams = NUMBEROFINPUTS; + *pulNumberOfOutputStreams = NUMBEROFOUTPUTS; + return S_OK; + } + + STDMETHODIMP GetInputStreamInfo(ULONG ulStreamIndex, DWORD *pdwFlags) + { + LockIt lck(static_cast<_DERIVED_ *>(this)); + if (ulStreamIndex >= NUMBEROFINPUTS) { + return DMO_E_INVALIDSTREAMINDEX; + } + if (pdwFlags == NULL) { + return E_POINTER; + } + HRESULT hr = INTERNAL_CALL(_DERIVED_, GetInputStreamInfo)(ulStreamIndex, pdwFlags); + _ASSERTE(0 == (*pdwFlags & ~(DMO_INPUT_STREAMF_WHOLE_SAMPLES | + DMO_INPUT_STREAMF_SINGLE_SAMPLE_PER_BUFFER | + DMO_INPUT_STREAMF_FIXED_SAMPLE_SIZE | + DMO_INPUT_STREAMF_HOLDS_BUFFERS))); + return hr; + } + + STDMETHODIMP GetOutputStreamInfo(ULONG ulStreamIndex, DWORD *pdwFlags) + { + LockIt lck(static_cast<_DERIVED_ *>(this)); + if (ulStreamIndex >= NUMBEROFOUTPUTS) { + return DMO_E_INVALIDSTREAMINDEX; + } + if (pdwFlags == NULL) { + return E_POINTER; + } + HRESULT hr = INTERNAL_CALL(_DERIVED_, GetOutputStreamInfo)(ulStreamIndex, pdwFlags); + _ASSERTE(0 == (*pdwFlags & ~(DMO_OUTPUT_STREAMF_WHOLE_SAMPLES | + DMO_OUTPUT_STREAMF_SINGLE_SAMPLE_PER_BUFFER | + DMO_OUTPUT_STREAMF_FIXED_SAMPLE_SIZE | + DMO_OUTPUT_STREAMF_DISCARDABLE | + DMO_OUTPUT_STREAMF_OPTIONAL))); + return hr; + } + + STDMETHODIMP GetInputType(ULONG ulStreamIndex, ULONG ulTypeIndex, DMO_MEDIA_TYPE *pmt) { + if (ulStreamIndex >= NUMBEROFINPUTS) { + return DMO_E_INVALIDSTREAMINDEX; + } + LockIt lck(static_cast<_DERIVED_ *>(this)); + return INTERNAL_CALL(_DERIVED_, GetInputType)(ulStreamIndex, ulTypeIndex, pmt); + } + + STDMETHODIMP GetOutputType(ULONG ulStreamIndex, ULONG ulTypeIndex, DMO_MEDIA_TYPE *pmt) { + if (ulStreamIndex >= NUMBEROFOUTPUTS) { + return DMO_E_INVALIDSTREAMINDEX; + } + LockIt lck(static_cast<_DERIVED_ *>(this)); + return INTERNAL_CALL(_DERIVED_, GetOutputType)(ulStreamIndex, ulTypeIndex, pmt); + } + + STDMETHODIMP GetInputCurrentType(ULONG ulStreamIndex, DMO_MEDIA_TYPE *pmt) { + if (ulStreamIndex >= NUMBEROFINPUTS) { + return DMO_E_INVALIDSTREAMINDEX; + } + if (NULL == pmt) { + return E_POINTER; + } + LockIt lck(static_cast<_DERIVED_ *>(this)); + if (InputTypeSet(ulStreamIndex)) + return MoCopyMediaType(pmt, + &m_InputInfo[ulStreamIndex].CurrentMediaType); + else + return DMO_E_TYPE_NOT_SET; + } + + STDMETHODIMP GetOutputCurrentType(ULONG ulStreamIndex, DMO_MEDIA_TYPE *pmt) { + if (ulStreamIndex >= NUMBEROFOUTPUTS) { + return DMO_E_INVALIDSTREAMINDEX; + } + if (NULL == pmt) { + return E_POINTER; + } + LockIt lck(static_cast<_DERIVED_ *>(this)); + if (OutputTypeSet(ulStreamIndex)) + return MoCopyMediaType(pmt, + &m_OutputInfo[ulStreamIndex].CurrentMediaType); + else + return DMO_E_TYPE_NOT_SET; + } + + STDMETHODIMP GetInputSizeInfo(ULONG ulStreamIndex, ULONG *pulSize, ULONG *pcbMaxLookahead, ULONG *pulAlignment) { + if (ulStreamIndex >= NUMBEROFINPUTS) { + return DMO_E_INVALIDSTREAMINDEX; + } + if (NULL == pulSize || NULL == pulAlignment || + NULL == pcbMaxLookahead) { + return E_POINTER; + } + LockIt lck(static_cast<_DERIVED_ *>(this)); + if (!InputTypeSet(ulStreamIndex)) { + return DMO_E_TYPE_NOT_SET; + } + return INTERNAL_CALL(_DERIVED_, GetInputSizeInfo)(ulStreamIndex, pulSize, pcbMaxLookahead, pulAlignment); + } + + STDMETHODIMP GetOutputSizeInfo(ULONG ulStreamIndex, ULONG *pulSize, ULONG *pulAlignment) { + if (ulStreamIndex >= NUMBEROFOUTPUTS) { + return DMO_E_INVALIDSTREAMINDEX; + } + if (NULL == pulSize || NULL == pulAlignment) { + return E_POINTER; + } + LockIt lck(static_cast<_DERIVED_ *>(this)); + if (!m_fTypesSet || !OutputTypeSet(ulStreamIndex)) { + return DMO_E_TYPE_NOT_SET; + } + return INTERNAL_CALL(_DERIVED_, GetOutputSizeInfo)(ulStreamIndex, pulSize, pulAlignment); + } + + STDMETHODIMP SetInputType(ULONG ulStreamIndex, const DMO_MEDIA_TYPE *pmt, DWORD dwFlags) { + if (ulStreamIndex >= NUMBEROFINPUTS) { + return DMO_E_INVALIDSTREAMINDEX; + } + if (dwFlags & ~ (DMO_SET_TYPEF_CLEAR | DMO_SET_TYPEF_TEST_ONLY)) { + return E_INVALIDARG; + } + + LockIt lck(static_cast<_DERIVED_ *>(this)); + + if (dwFlags & DMO_SET_TYPEF_CLEAR) { + MoFreeMediaType(&m_InputInfo[ulStreamIndex].CurrentMediaType); + m_InputInfo[ulStreamIndex].fTypeSet = FALSE; + if (!CheckTypesSet()) { + Flush(); + FreeStreamingResources(); + } + return NOERROR; + } + if (NULL == pmt) { + return E_POINTER; + } + HRESULT hr = INTERNAL_CALL(_DERIVED_, CheckInputType)(ulStreamIndex, pmt); + if (FAILED(hr)) + return hr; + + if (dwFlags & DMO_SET_TYPEF_TEST_ONLY) { + return NOERROR; + } + + + // actually set the type + DMO_MEDIA_TYPE mtTemp; + if (S_OK == MoCopyMediaType(&mtTemp, pmt)) { + // Free any previous mediatype + if (InputTypeSet(ulStreamIndex)) { + MoFreeMediaType(&m_InputInfo[ulStreamIndex].CurrentMediaType); + } + m_InputInfo[ulStreamIndex].CurrentMediaType = mtTemp; + m_InputInfo[ulStreamIndex].fTypeSet = TRUE; + CheckTypesSet(); + } else { + return E_OUTOFMEMORY; + } + + return NOERROR; + } + + STDMETHODIMP SetOutputType(ULONG ulStreamIndex, const DMO_MEDIA_TYPE *pmt, DWORD dwFlags) { + if (ulStreamIndex >= NUMBEROFOUTPUTS) { + return DMO_E_INVALIDSTREAMINDEX; + } + if (dwFlags & ~ (DMO_SET_TYPEF_CLEAR | DMO_SET_TYPEF_TEST_ONLY)) { + return E_INVALIDARG; + } + + LockIt lck(static_cast<_DERIVED_ *>(this)); + + if (dwFlags & DMO_SET_TYPEF_CLEAR) { + MoFreeMediaType(&m_OutputInfo[ulStreamIndex].CurrentMediaType); + m_OutputInfo[ulStreamIndex].fTypeSet = FALSE; + if (!CheckTypesSet()) { + Flush(); + FreeStreamingResources(); + } + return NOERROR; + } + if (NULL == pmt) { + return E_POINTER; + } + HRESULT hr = INTERNAL_CALL(_DERIVED_, CheckOutputType)(ulStreamIndex, pmt); + if (FAILED(hr)) { + return hr; + } + + if (dwFlags & DMO_SET_TYPEF_TEST_ONLY) { + return NOERROR; + } + + + // actually set the type + DMO_MEDIA_TYPE mtTemp; + if (S_OK == MoCopyMediaType(&mtTemp, pmt)) { + // Free any previous mediatype + if (OutputTypeSet(ulStreamIndex)) { + MoFreeMediaType(&m_OutputInfo[ulStreamIndex].CurrentMediaType); + } + m_OutputInfo[ulStreamIndex].CurrentMediaType = mtTemp; + m_OutputInfo[ulStreamIndex].fTypeSet = TRUE; + CheckTypesSet(); + } else { + return E_OUTOFMEMORY; + } + + return NOERROR; + } + + STDMETHODIMP GetInputStatus( + ULONG ulStreamIndex, + DWORD *pdwStatus + ) { + if (ulStreamIndex >= NUMBEROFINPUTS) { + return DMO_E_INVALIDSTREAMINDEX; + } + if (NULL == pdwStatus) { + return E_POINTER; + } + *pdwStatus = 0; + + LockIt lck(static_cast<_DERIVED_ *>(this)); + + if (!m_fTypesSet) { + return DMO_E_TYPE_NOT_SET; + } + + if (INTERNAL_CALL(_DERIVED_, AcceptingInput)(ulStreamIndex) == S_OK) { + *pdwStatus |= DMO_INPUT_STATUSF_ACCEPT_DATA; + } + return NOERROR; + } + + STDMETHODIMP GetInputMaxLatency(unsigned long ulStreamIndex, REFERENCE_TIME *prtLatency) { + + if (prtLatency == NULL) { + return E_POINTER; + } + if (ulStreamIndex >= NUMBEROFINPUTS) { + return DMO_E_INVALIDSTREAMINDEX; + } + + LockIt lck(static_cast<_DERIVED_ *>(this)); + + return INTERNAL_CALL(_DERIVED_, GetInputMaxLatency)(ulStreamIndex, prtLatency); + } + + STDMETHODIMP SetInputMaxLatency(unsigned long ulStreamIndex, REFERENCE_TIME rtLatency) { + if (ulStreamIndex >= NUMBEROFINPUTS) { + return DMO_E_INVALIDSTREAMINDEX; + } + + LockIt lck(static_cast<_DERIVED_ *>(this)); + + return INTERNAL_CALL(_DERIVED_, SetInputMaxLatency)(ulStreamIndex, rtLatency); + } + + STDMETHODIMP Discontinuity(ULONG ulStreamIndex) { + if (ulStreamIndex >= NUMBEROFINPUTS) { + return DMO_E_INVALIDSTREAMINDEX; + } + + LockIt lck(static_cast<_DERIVED_ *>(this)); + + if (!m_fTypesSet) { + return DMO_E_TYPE_NOT_SET; + } + + if (S_OK != INTERNAL_CALL(_DERIVED_, AcceptingInput)(ulStreamIndex)) { + return DMO_E_NOTACCEPTING; + } + + return INTERNAL_CALL(_DERIVED_, Discontinuity)(ulStreamIndex); + } + + STDMETHODIMP Flush() + { + LockIt lck(static_cast<_DERIVED_ *>(this)); + + if (!m_fTypesSet) { + return S_OK; + } + if (m_fFlushed) { + return S_OK; + } + HRESULT hr = INTERNAL_CALL(_DERIVED_, Flush)(); + m_fFlushed = true; + return hr; + } + + STDMETHODIMP AllocateStreamingResources() { + LockIt lck(static_cast<_DERIVED_ *>(this)); + if (!m_fTypesSet) { + return DMO_E_TYPE_NOT_SET; + } + if (m_fResourcesAllocated) { + return S_OK; + } + HRESULT hr = INTERNAL_CALL(_DERIVED_, AllocateStreamingResources)(); + if (SUCCEEDED(hr)) { + m_fResourcesAllocated = true; + } + return hr; + } + + STDMETHODIMP FreeStreamingResources() + { + LockIt lck(static_cast<_DERIVED_ *>(this)); + if (m_fResourcesAllocated) { + m_fResourcesAllocated = false; + INTERNAL_CALL(_DERIVED_, Flush)(); + return INTERNAL_CALL(_DERIVED_, FreeStreamingResources)(); + } + return S_OK; + } + + // + // Processing methods - public entry points + // + STDMETHODIMP ProcessInput( + DWORD ulStreamIndex, + IMediaBuffer *pBuffer, // [in], must not be NULL + DWORD dwFlags, // [in] - discontinuity, timestamp, etc. + REFERENCE_TIME rtTimestamp, // [in], valid if flag set + REFERENCE_TIME rtTimelength // [in], valid if flag set + ) { + if (!pBuffer) { + return E_POINTER; + } + if (ulStreamIndex >= NUMBEROFINPUTS) { + return DMO_E_INVALIDSTREAMINDEX; + } + if (dwFlags & ~(DMO_INPUT_DATA_BUFFERF_SYNCPOINT | + DMO_INPUT_DATA_BUFFERF_TIME | + DMO_INPUT_DATA_BUFFERF_TIMELENGTH)) { + return E_INVALIDARG; + } + + LockIt lck(static_cast<_DERIVED_ *>(this)); + + // Make sure all streams have media types set and resources are allocated + HRESULT hr = AllocateStreamingResources(); + if (FAILED(hr)) { + return hr; + } + if (INTERNAL_CALL(_DERIVED_, AcceptingInput)(ulStreamIndex) != S_OK) { + return DMO_E_NOTACCEPTING; + } + + m_fFlushed = false; + + return INTERNAL_CALL(_DERIVED_, ProcessInput)( + ulStreamIndex, + pBuffer, + dwFlags, + rtTimestamp, + rtTimelength); + } + + STDMETHODIMP ProcessOutput( + DWORD dwFlags, + DWORD ulOutputBufferCount, + DMO_OUTPUT_DATA_BUFFER *pOutputBuffers, + DWORD *pdwStatus) + { + if (pdwStatus == NULL) { + return E_POINTER; + } + + + if (ulOutputBufferCount != NUMBEROFOUTPUTS || (dwFlags & ~DMO_PROCESS_OUTPUT_DISCARD_WHEN_NO_BUFFER)) { + return E_INVALIDARG; + } + + if (NUMBEROFOUTPUTS != 0 && pOutputBuffers == NULL) { + return E_POINTER; + } + + *pdwStatus = 0; + + LockIt lck(static_cast<_DERIVED_ *>(this)); + + HRESULT hr = AllocateStreamingResources(); + if (FAILED(hr)) { + return hr; + } + + for (DWORD dw = 0; dw < NUMBEROFOUTPUTS; dw++) { + pOutputBuffers[dw].dwStatus = 0; + } + + hr = INTERNAL_CALL(_DERIVED_, ProcessOutput)( + dwFlags, + ulOutputBufferCount, + pOutputBuffers, + pdwStatus); + + // remember the DMO's incomplete status + for (dw = 0; dw < NUMBEROFOUTPUTS; dw++) { + if (pOutputBuffers[dw].dwStatus & DMO_OUTPUT_DATA_BUFFERF_INCOMPLETE) { + m_OutputInfo[dw].fIncomplete = TRUE; + } else { + m_OutputInfo[dw].fIncomplete = FALSE; + } + } + + return hr; + } + + STDMETHODIMP DMOLock(LONG lLock) + { + if (lLock) { + static_cast<_DERIVED_ *>(this)->Lock(); + } else { + static_cast<_DERIVED_ *>(this)->Unlock(); + } + return S_OK; + } +}; + +#endif // _dmoimpl_h_ + diff --git a/videoInputSrcAndDemos/libs/DShow/Include/dmoreg.h b/videoInputSrcAndDemos/libs/DShow/Include/dmoreg.h index 4189aa5..6c6c22f 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/dmoreg.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/dmoreg.h @@ -1,110 +1,110 @@ -//------------------------------------------------------------------------------ -// File: DMOReg.h -// -// Desc: -// -// Copyright (c) 1999 - 2001, Microsoft Corporation. All rights reserved. -//------------------------------------------------------------------------------ - - -#ifndef __DMOREG_H__ -#define __DMOREG_H__ - -#include "mediaobj.h" - - -// 57f2db8b-e6bb-4513-9d43-dcd2a6593125 -DEFINE_GUID(DMOCATEGORY_AUDIO_DECODER, 0x57f2db8b,0xe6bb,0x4513,0x9d,0x43,0xdc,0xd2,0xa6,0x59,0x31,0x25); -// 33D9A761-90C8-11d0-BD43-00A0C911CE86 -DEFINE_GUID(DMOCATEGORY_AUDIO_ENCODER, 0x33D9A761,0x90C8,0x11d0,0xBD,0x43,0x00,0xA0,0xC9,0x11,0xCE,0x86); -// 4a69b442-28be-4991-969c-b500adf5d8a8 -DEFINE_GUID(DMOCATEGORY_VIDEO_DECODER, 0x4a69b442,0x28be,0x4991,0x96,0x9c,0xb5,0x00,0xad,0xf5,0xd8,0xa8); -// 33D9A760-90C8-11d0-BD43-00A0C911CE86 -DEFINE_GUID(DMOCATEGORY_VIDEO_ENCODER, 0x33D9A760,0x90C8,0x11d0,0xBD,0x43,0x00,0xA0,0xC9,0x11,0xCE,0x86); -// f3602b3f-0592-48df-a4cd-674721e7ebeb -DEFINE_GUID(DMOCATEGORY_AUDIO_EFFECT, 0xf3602b3f,0x0592,0x48df,0xa4,0xcd,0x67,0x47,0x21,0xe7,0xeb,0xeb); -// d990ee14-776c-4723-be46-3da2f56f10b9 -DEFINE_GUID(DMOCATEGORY_VIDEO_EFFECT, 0xd990ee14,0x776c,0x4723,0xbe,0x46,0x3d,0xa2,0xf5,0x6f,0x10,0xb9); -// f665aaba-3e09-4920-aa5f-219811148f09 -DEFINE_GUID(DMOCATEGORY_AUDIO_CAPTURE_EFFECT, 0xf665aaba,0x3e09,0x4920,0xaa,0x5f,0x21,0x98,0x11,0x14,0x8f,0x09); - -// Acoustic Echo Canceller {BF963D80-C559-11D0-8A2B-00A0C9255AC1} -// Matches KSNODETYPE_ACOUSTIC_ECHO_CANCEL in ksmedia.h -DEFINE_GUID(DMOCATEGORY_ACOUSTIC_ECHO_CANCEL, 0xBF963D80L, 0xC559, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1); - -// Noise Supression {E07F903F-62FD-4e60-8CDD-DEA7236665B5} -// Matches KSNODETYPE_AUDIO_NOISE_SUPPRESS in post Windows ME DDK's ksmedia.h -DEFINE_GUID(DMOCATEGORY_AUDIO_NOISE_SUPPRESS, 0xe07f903f, 0x62fd, 0x4e60, 0x8c, 0xdd, 0xde, 0xa7, 0x23, 0x66, 0x65, 0xb5); - -// Automatic Gain Control {E88C9BA0-C557-11D0-8A2B-00A0C9255AC1} -// Matches KSNODETYPE_AGC in ksmedia.h -DEFINE_GUID(DMOCATEGORY_AGC, 0xE88C9BA0L, 0xC557, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1); - -typedef struct _DMO_PARTIAL_MEDIATYPE { - GUID type; - GUID subtype; -} DMO_PARTIAL_MEDIATYPE, *PDMO_PARTIAL_MEDIATYPE; - -enum DMO_REGISTER_FLAGS { - DMO_REGISTERF_IS_KEYED = 0x00000001 -}; - -enum DMO_ENUM_FLAGS { - DMO_ENUMF_INCLUDE_KEYED = 0x00000001 -}; - -STDAPI DMORegister( - LPCWSTR szName, - REFCLSID clsidDMO, - REFGUID guidCategory, - DWORD dwFlags, // DMO_REGISTERF_XXX - // - // Register all mediatypes supported by the object. This carries no - // information about which combinations of input/output types would - // actually work. - // - DWORD cInTypes, - const DMO_PARTIAL_MEDIATYPE *pInTypes, - DWORD cOutTypes, - const DMO_PARTIAL_MEDIATYPE *pOutTypes -); - -STDAPI DMOUnregister( - REFCLSID clsidDMO, - REFGUID guidCategory // optional - GUID_NULL means unregister from all -); - -STDAPI DMOEnum( - REFGUID guidCategory, // GUID_NULL for "all" - DWORD dwFlags, // DMO_ENUMF_XXX - // - // Enumerate only objects that support at least one of the specified input types - // and at least one of the specified output types. If no input types are specified, - // enumerate objects regardless of what input types they support. Same for - // output types. - // - DWORD cInTypes, - const DMO_PARTIAL_MEDIATYPE *pInTypes, // can be NULL only of ulInTypes = 0 - DWORD cOutTypes, - const DMO_PARTIAL_MEDIATYPE *pOutTypes, // can be NULL only of ulOutTypes = 0 - // - // Output parameter - this receives a pointer to the DMO CLSID enumerator - // - IEnumDMO **ppEnum -); - -STDAPI DMOGetTypes( - REFCLSID clsidDMO, - unsigned long ulInputTypesRequested, - unsigned long *pulInputTypesSupplied, - DMO_PARTIAL_MEDIATYPE *pInputTypes, - unsigned long ulOutputTypesRequested, - unsigned long *pulOutputTypesSupplied, - DMO_PARTIAL_MEDIATYPE *pOutputTypes -); - -STDAPI DMOGetName( - REFCLSID clsidDMO, - WCHAR szName[80] -); -#endif //__DMOREG_H__ +//------------------------------------------------------------------------------ +// File: DMOReg.h +// +// Desc: +// +// Copyright (c) 1999 - 2001, Microsoft Corporation. All rights reserved. +//------------------------------------------------------------------------------ + + +#ifndef __DMOREG_H__ +#define __DMOREG_H__ + +#include "mediaobj.h" + + +// 57f2db8b-e6bb-4513-9d43-dcd2a6593125 +DEFINE_GUID(DMOCATEGORY_AUDIO_DECODER, 0x57f2db8b,0xe6bb,0x4513,0x9d,0x43,0xdc,0xd2,0xa6,0x59,0x31,0x25); +// 33D9A761-90C8-11d0-BD43-00A0C911CE86 +DEFINE_GUID(DMOCATEGORY_AUDIO_ENCODER, 0x33D9A761,0x90C8,0x11d0,0xBD,0x43,0x00,0xA0,0xC9,0x11,0xCE,0x86); +// 4a69b442-28be-4991-969c-b500adf5d8a8 +DEFINE_GUID(DMOCATEGORY_VIDEO_DECODER, 0x4a69b442,0x28be,0x4991,0x96,0x9c,0xb5,0x00,0xad,0xf5,0xd8,0xa8); +// 33D9A760-90C8-11d0-BD43-00A0C911CE86 +DEFINE_GUID(DMOCATEGORY_VIDEO_ENCODER, 0x33D9A760,0x90C8,0x11d0,0xBD,0x43,0x00,0xA0,0xC9,0x11,0xCE,0x86); +// f3602b3f-0592-48df-a4cd-674721e7ebeb +DEFINE_GUID(DMOCATEGORY_AUDIO_EFFECT, 0xf3602b3f,0x0592,0x48df,0xa4,0xcd,0x67,0x47,0x21,0xe7,0xeb,0xeb); +// d990ee14-776c-4723-be46-3da2f56f10b9 +DEFINE_GUID(DMOCATEGORY_VIDEO_EFFECT, 0xd990ee14,0x776c,0x4723,0xbe,0x46,0x3d,0xa2,0xf5,0x6f,0x10,0xb9); +// f665aaba-3e09-4920-aa5f-219811148f09 +DEFINE_GUID(DMOCATEGORY_AUDIO_CAPTURE_EFFECT, 0xf665aaba,0x3e09,0x4920,0xaa,0x5f,0x21,0x98,0x11,0x14,0x8f,0x09); + +// Acoustic Echo Canceller {BF963D80-C559-11D0-8A2B-00A0C9255AC1} +// Matches KSNODETYPE_ACOUSTIC_ECHO_CANCEL in ksmedia.h +DEFINE_GUID(DMOCATEGORY_ACOUSTIC_ECHO_CANCEL, 0xBF963D80L, 0xC559, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1); + +// Noise Supression {E07F903F-62FD-4e60-8CDD-DEA7236665B5} +// Matches KSNODETYPE_AUDIO_NOISE_SUPPRESS in post Windows ME DDK's ksmedia.h +DEFINE_GUID(DMOCATEGORY_AUDIO_NOISE_SUPPRESS, 0xe07f903f, 0x62fd, 0x4e60, 0x8c, 0xdd, 0xde, 0xa7, 0x23, 0x66, 0x65, 0xb5); + +// Automatic Gain Control {E88C9BA0-C557-11D0-8A2B-00A0C9255AC1} +// Matches KSNODETYPE_AGC in ksmedia.h +DEFINE_GUID(DMOCATEGORY_AGC, 0xE88C9BA0L, 0xC557, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1); + +typedef struct _DMO_PARTIAL_MEDIATYPE { + GUID type; + GUID subtype; +} DMO_PARTIAL_MEDIATYPE, *PDMO_PARTIAL_MEDIATYPE; + +enum DMO_REGISTER_FLAGS { + DMO_REGISTERF_IS_KEYED = 0x00000001 +}; + +enum DMO_ENUM_FLAGS { + DMO_ENUMF_INCLUDE_KEYED = 0x00000001 +}; + +STDAPI DMORegister( + LPCWSTR szName, + REFCLSID clsidDMO, + REFGUID guidCategory, + DWORD dwFlags, // DMO_REGISTERF_XXX + // + // Register all mediatypes supported by the object. This carries no + // information about which combinations of input/output types would + // actually work. + // + DWORD cInTypes, + const DMO_PARTIAL_MEDIATYPE *pInTypes, + DWORD cOutTypes, + const DMO_PARTIAL_MEDIATYPE *pOutTypes +); + +STDAPI DMOUnregister( + REFCLSID clsidDMO, + REFGUID guidCategory // optional - GUID_NULL means unregister from all +); + +STDAPI DMOEnum( + REFGUID guidCategory, // GUID_NULL for "all" + DWORD dwFlags, // DMO_ENUMF_XXX + // + // Enumerate only objects that support at least one of the specified input types + // and at least one of the specified output types. If no input types are specified, + // enumerate objects regardless of what input types they support. Same for + // output types. + // + DWORD cInTypes, + const DMO_PARTIAL_MEDIATYPE *pInTypes, // can be NULL only of ulInTypes = 0 + DWORD cOutTypes, + const DMO_PARTIAL_MEDIATYPE *pOutTypes, // can be NULL only of ulOutTypes = 0 + // + // Output parameter - this receives a pointer to the DMO CLSID enumerator + // + IEnumDMO **ppEnum +); + +STDAPI DMOGetTypes( + REFCLSID clsidDMO, + unsigned long ulInputTypesRequested, + unsigned long *pulInputTypesSupplied, + DMO_PARTIAL_MEDIATYPE *pInputTypes, + unsigned long ulOutputTypesRequested, + unsigned long *pulOutputTypesSupplied, + DMO_PARTIAL_MEDIATYPE *pOutputTypes +); + +STDAPI DMOGetName( + REFCLSID clsidDMO, + WCHAR szName[80] +); +#endif //__DMOREG_H__ diff --git a/videoInputSrcAndDemos/libs/DShow/Include/dmort.h b/videoInputSrcAndDemos/libs/DShow/Include/dmort.h index c3f843c..cfe25a4 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/dmort.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/dmort.h @@ -1,75 +1,75 @@ -//------------------------------------------------------------------------------ -// File: DMORt.h -// -// Desc: Miscellaneous runtime support for DirectShow Media Objects -// -// Copyright (c) 1999 - 2001, Microsoft Corporation. All rights reserved. -//------------------------------------------------------------------------------ - - -#ifndef __DMORT_H__ -#define __DMORT_H__ - -// -// Mediatype helpers. MoInitMediaType() goes with MoFreeMediaType(), and -// MoCreateMediaType() goes with MoDeleteMediaType(). Don't mix them! -// - - - -// -// Takes a pointer to an already allocated DMO_MEDIA_TYPE structure, allocates -// a format block of cbFormat bytes, and sets appropriate members of -// DMO_MEDIA_TYPE to point to the newly allocated format block. Also -// initializes the IUnknown pointer inside DMO_MEDIA_TYPE to NULL. -// -// The format block allocated by MoInitMediaType must be freed by calling -// MoFreeMediaType(). -// -STDAPI MoInitMediaType(DMO_MEDIA_TYPE *pmt, DWORD cbFormat); - -// -// Frees the format block and releases any IUnknown, but does not free the -// DMO_MEDIA_TYPE structure itself. Input parameter must point to an -// DMO_MEDIA_TYPE structure previously initialized by MoInitMediaType(). -// -STDAPI MoFreeMediaType(DMO_MEDIA_TYPE *pmt); - -// -// Copies the DMO_MEDIA_TYPE members. Also duplicates the format block and -// the IUnknown pointer. Both parameters must point to valid DMO_MEDIA_TYPE -// structures. Target structure must be later freed using MoFreeMediaType(). -// -STDAPI MoCopyMediaType(DMO_MEDIA_TYPE *pmtDest, const DMO_MEDIA_TYPE *pmtSrc); - - - -// -// Allocates a new DMO_MEDIA_TYPE structure and initializes it just like -// MoInitMediaType. I.e., this function allocates both the format block -// and the DMO_MEDIA_TYPE structure itself. Pointer to DMO_MEDIA_TYPE is -// returned as *ppmt. -// -// DMO_MEDIA_TYPE structures allocated by MoCreateMediaType() must be freed -// by calling MoDeleteMediaType(). -// -STDAPI MoCreateMediaType(DMO_MEDIA_TYPE **ppmt, DWORD cbFormat); - -// -// Frees any format block, releases any IUnknown, and deletes the -// DMO_MEDIA_TYPE structure itself. The input parameter must point to an -// DMO_MEDIA_TYPE structure previously allocated by MoCreateMediaType(). -// -STDAPI MoDeleteMediaType(DMO_MEDIA_TYPE *pmt); - -// -// Allocates a new DMO_MEDIA_TYPE structure and copies pmtSrc into it like -// MoCopyMediaType. I.e., this function allocates a new DMO_MEDIA_TYPE struct -// as well as a new format block for the target mediatype. Trager mediatype -// must later be freed using MoDeleteMediaType(). -// -STDAPI MoDuplicateMediaType(DMO_MEDIA_TYPE **ppmtDest, const DMO_MEDIA_TYPE *pmtSrc); - - - -#endif //__DMORT_H__ +//------------------------------------------------------------------------------ +// File: DMORt.h +// +// Desc: Miscellaneous runtime support for DirectShow Media Objects +// +// Copyright (c) 1999 - 2001, Microsoft Corporation. All rights reserved. +//------------------------------------------------------------------------------ + + +#ifndef __DMORT_H__ +#define __DMORT_H__ + +// +// Mediatype helpers. MoInitMediaType() goes with MoFreeMediaType(), and +// MoCreateMediaType() goes with MoDeleteMediaType(). Don't mix them! +// + + + +// +// Takes a pointer to an already allocated DMO_MEDIA_TYPE structure, allocates +// a format block of cbFormat bytes, and sets appropriate members of +// DMO_MEDIA_TYPE to point to the newly allocated format block. Also +// initializes the IUnknown pointer inside DMO_MEDIA_TYPE to NULL. +// +// The format block allocated by MoInitMediaType must be freed by calling +// MoFreeMediaType(). +// +STDAPI MoInitMediaType(DMO_MEDIA_TYPE *pmt, DWORD cbFormat); + +// +// Frees the format block and releases any IUnknown, but does not free the +// DMO_MEDIA_TYPE structure itself. Input parameter must point to an +// DMO_MEDIA_TYPE structure previously initialized by MoInitMediaType(). +// +STDAPI MoFreeMediaType(DMO_MEDIA_TYPE *pmt); + +// +// Copies the DMO_MEDIA_TYPE members. Also duplicates the format block and +// the IUnknown pointer. Both parameters must point to valid DMO_MEDIA_TYPE +// structures. Target structure must be later freed using MoFreeMediaType(). +// +STDAPI MoCopyMediaType(DMO_MEDIA_TYPE *pmtDest, const DMO_MEDIA_TYPE *pmtSrc); + + + +// +// Allocates a new DMO_MEDIA_TYPE structure and initializes it just like +// MoInitMediaType. I.e., this function allocates both the format block +// and the DMO_MEDIA_TYPE structure itself. Pointer to DMO_MEDIA_TYPE is +// returned as *ppmt. +// +// DMO_MEDIA_TYPE structures allocated by MoCreateMediaType() must be freed +// by calling MoDeleteMediaType(). +// +STDAPI MoCreateMediaType(DMO_MEDIA_TYPE **ppmt, DWORD cbFormat); + +// +// Frees any format block, releases any IUnknown, and deletes the +// DMO_MEDIA_TYPE structure itself. The input parameter must point to an +// DMO_MEDIA_TYPE structure previously allocated by MoCreateMediaType(). +// +STDAPI MoDeleteMediaType(DMO_MEDIA_TYPE *pmt); + +// +// Allocates a new DMO_MEDIA_TYPE structure and copies pmtSrc into it like +// MoCopyMediaType. I.e., this function allocates a new DMO_MEDIA_TYPE struct +// as well as a new format block for the target mediatype. Trager mediatype +// must later be freed using MoDeleteMediaType(). +// +STDAPI MoDuplicateMediaType(DMO_MEDIA_TYPE **ppmtDest, const DMO_MEDIA_TYPE *pmtSrc); + + + +#endif //__DMORT_H__ diff --git a/videoInputSrcAndDemos/libs/DShow/Include/dmplugin.h b/videoInputSrcAndDemos/libs/DShow/Include/dmplugin.h index 7c7d311..3f3e141 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/dmplugin.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/dmplugin.h @@ -1,280 +1,280 @@ -/************************************************************************ -* * -* dmplugin.h -- This module contains the API for plugins for the * -* DirectMusic performance layer * -* * -* Copyright (c) Microsoft Corporation. All rights reserved. * -* * -************************************************************************/ - -#ifndef _DMPLUGIN_ -#define _DMPLUGIN_ - -#include - -#define COM_NO_WINDOWS_H -#include - -#include -#include - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -interface IDirectMusicTrack; -interface IDirectMusicTool; -interface IDirectMusicTool8; -interface IDirectMusicTrack8; -interface IDirectMusicPerformance; -interface IDirectMusicPerformance8; -interface IDirectMusicSegment; -interface IDirectMusicSegment8; -interface IDirectMusicSegmentState; -interface IDirectMusicSegmentState8; -interface IDirectMusicGraph; -#ifndef __cplusplus -typedef interface IDirectMusicTrack IDirectMusicTrack; -typedef interface IDirectMusicTool IDirectMusicTool; -typedef interface IDirectMusicTool8 IDirectMusicTool8; -typedef interface IDirectMusicTrack8 IDirectMusicTrack8; -typedef interface IDirectMusicPerformance IDirectMusicPerformance; -typedef interface IDirectMusicPerformance8 IDirectMusicPerformance8; -typedef interface IDirectMusicSegment IDirectMusicSegment; -typedef interface IDirectMusicSegment8 IDirectMusicSegment8; -typedef interface IDirectMusicSegmentState IDirectMusicSegmentState; -typedef interface IDirectMusicSegmentState8 IDirectMusicSegmentState8; -typedef interface IDirectMusicGraph IDirectMusicGraph; -#endif - -typedef struct _DMUS_PMSG DMUS_PMSG; -typedef long MUSIC_TIME; - -/* Registry location for tools */ -#define DMUS_REGSTR_PATH_TOOLS "Software\\Microsoft\\DirectMusic\\Tools" - -/*//////////////////////////////////////////////////////////////////// -// IDirectMusicTool */ -#undef INTERFACE -#define INTERFACE IDirectMusicTool -DECLARE_INTERFACE_(IDirectMusicTool, IUnknown) -{ - /* IUnknown */ - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - /* IDirectMusicTool */ - STDMETHOD(Init) (THIS_ IDirectMusicGraph* pGraph) PURE; - STDMETHOD(GetMsgDeliveryType) (THIS_ DWORD* pdwDeliveryType ) PURE; - STDMETHOD(GetMediaTypeArraySize)(THIS_ DWORD* pdwNumElements ) PURE; - STDMETHOD(GetMediaTypes) (THIS_ DWORD** padwMediaTypes, - DWORD dwNumElements) PURE; - STDMETHOD(ProcessPMsg) (THIS_ IDirectMusicPerformance* pPerf, - DMUS_PMSG* pPMSG) PURE; - STDMETHOD(Flush) (THIS_ IDirectMusicPerformance* pPerf, - DMUS_PMSG* pPMSG, - REFERENCE_TIME rtTime) PURE; -}; - -/*//////////////////////////////////////////////////////////////////// -// IDirectMusicTool8 */ -#undef INTERFACE -#define INTERFACE IDirectMusicTool8 -DECLARE_INTERFACE_(IDirectMusicTool8, IDirectMusicTool) -{ - /* IUnknown */ - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - /* IDirectMusicTool */ - STDMETHOD(Init) (THIS_ IDirectMusicGraph* pGraph) PURE; - STDMETHOD(GetMsgDeliveryType) (THIS_ DWORD* pdwDeliveryType ) PURE; - STDMETHOD(GetMediaTypeArraySize)(THIS_ DWORD* pdwNumElements ) PURE; - STDMETHOD(GetMediaTypes) (THIS_ DWORD** padwMediaTypes, - DWORD dwNumElements) PURE; - STDMETHOD(ProcessPMsg) (THIS_ IDirectMusicPerformance* pPerf, - DMUS_PMSG* pPMSG) PURE; - STDMETHOD(Flush) (THIS_ IDirectMusicPerformance* pPerf, - DMUS_PMSG* pPMSG, - REFERENCE_TIME rtTime) PURE; - /* IDirectMusicTool8 */ - STDMETHOD(Clone) (THIS_ IDirectMusicTool ** ppTool) PURE; -}; - - -/* The following flags are sent in the IDirectMusicTrack::Play() method */ -/* inside the dwFlags parameter */ -typedef enum enumDMUS_TRACKF_FLAGS -{ - DMUS_TRACKF_SEEK = 1, /* set on a seek */ - DMUS_TRACKF_LOOP = 2, /* set on a loop (repeat) */ - DMUS_TRACKF_START = 4, /* set on first call to Play */ - DMUS_TRACKF_FLUSH = 8, /* set when this call is in response to a flush on the perfomance */ - DMUS_TRACKF_DIRTY = 0x10, /* set when the track should consider any cached values from a previous call to GetParam to be invalidated */ - /* The following flags are DX8 only. */ - DMUS_TRACKF_NOTIFY_OFF = 0x20, /* tells track not to send notifications. */ - DMUS_TRACKF_PLAY_OFF = 0x40, /* tells track not to play anything (but can still send notifications.) */ - DMUS_TRACKF_LOOPEND = 0x80, /* set when the end of range is also a loop end. */ - DMUS_TRACKF_STOP = 0x100, /* set when the end of range is also end of playing this segment. */ - DMUS_TRACKF_RECOMPOSE = 0x200, /* set to indicate the track should compose. */ - DMUS_TRACKF_CLOCK = 0x400, /* set when time parameters are in reference (clock) time. Only valid for PlayEx(). */ -} DMUS_TRACKF_FLAGS; - -/* The following flags are sent in the IDirectMusicTrack8::GetParamEx() and SetParamEx() methods */ -/* inside the dwFlags parameter */ -#define DMUS_TRACK_PARAMF_CLOCK 0x01 /* set when the time is measured is in reference (clock) time */ - -/*//////////////////////////////////////////////////////////////////// -// IDirectMusicTrack */ -#undef INTERFACE -#define INTERFACE IDirectMusicTrack -DECLARE_INTERFACE_(IDirectMusicTrack, IUnknown) -{ - /* IUnknown */ - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - /* IDirectMusicTrack */ - STDMETHOD(Init) (THIS_ IDirectMusicSegment* pSegment) PURE; - STDMETHOD(InitPlay) (THIS_ IDirectMusicSegmentState* pSegmentState, - IDirectMusicPerformance* pPerformance, - void** ppStateData, - DWORD dwVirtualTrackID, - DWORD dwFlags) PURE; - STDMETHOD(EndPlay) (THIS_ void* pStateData) PURE; - STDMETHOD(Play) (THIS_ void* pStateData, - MUSIC_TIME mtStart, - MUSIC_TIME mtEnd, - MUSIC_TIME mtOffset, - DWORD dwFlags, - IDirectMusicPerformance* pPerf, - IDirectMusicSegmentState* pSegSt, - DWORD dwVirtualID) PURE; - STDMETHOD(GetParam) (THIS_ REFGUID rguidType, - MUSIC_TIME mtTime, - MUSIC_TIME* pmtNext, - void* pParam) PURE; - STDMETHOD(SetParam) (THIS_ REFGUID rguidType, - MUSIC_TIME mtTime, - void* pParam) PURE; - STDMETHOD(IsParamSupported) (THIS_ REFGUID rguidType) PURE; - STDMETHOD(AddNotificationType) (THIS_ REFGUID rguidNotificationType) PURE; - STDMETHOD(RemoveNotificationType) (THIS_ REFGUID rguidNotificationType) PURE; - STDMETHOD(Clone) (THIS_ MUSIC_TIME mtStart, - MUSIC_TIME mtEnd, - IDirectMusicTrack** ppTrack) PURE; -}; - -/*//////////////////////////////////////////////////////////////////// -// IDirectMusicTrack8 */ -#undef INTERFACE -#define INTERFACE IDirectMusicTrack8 -DECLARE_INTERFACE_(IDirectMusicTrack8, IDirectMusicTrack) -{ - /* IUnknown */ - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - /* IDirectMusicTrack */ - STDMETHOD(Init) (THIS_ IDirectMusicSegment* pSegment) PURE; - STDMETHOD(InitPlay) (THIS_ IDirectMusicSegmentState* pSegmentState, - IDirectMusicPerformance* pPerformance, - void** ppStateData, - DWORD dwVirtualTrackID, - DWORD dwFlags) PURE; - STDMETHOD(EndPlay) (THIS_ void* pStateData) PURE; - STDMETHOD(Play) (THIS_ void* pStateData, - MUSIC_TIME mtStart, - MUSIC_TIME mtEnd, - MUSIC_TIME mtOffset, - DWORD dwFlags, - IDirectMusicPerformance* pPerf, - IDirectMusicSegmentState* pSegSt, - DWORD dwVirtualID) PURE; - STDMETHOD(GetParam) (THIS_ REFGUID rguidType, - MUSIC_TIME mtTime, - MUSIC_TIME* pmtNext, - void* pParam) PURE; - STDMETHOD(SetParam) (THIS_ REFGUID rguidType, - MUSIC_TIME mtTime, - void* pParam) PURE; - STDMETHOD(IsParamSupported) (THIS_ REFGUID rguidType) PURE; - STDMETHOD(AddNotificationType) (THIS_ REFGUID rguidNotificationType) PURE; - STDMETHOD(RemoveNotificationType) (THIS_ REFGUID rguidNotificationType) PURE; - STDMETHOD(Clone) (THIS_ MUSIC_TIME mtStart, - MUSIC_TIME mtEnd, - IDirectMusicTrack** ppTrack) PURE; - /* IDirectMusicTrack8 */ - STDMETHOD(PlayEx) (THIS_ void* pStateData, - REFERENCE_TIME rtStart, - REFERENCE_TIME rtEnd, - REFERENCE_TIME rtOffset, - DWORD dwFlags, - IDirectMusicPerformance* pPerf, - IDirectMusicSegmentState* pSegSt, - DWORD dwVirtualID) PURE; - STDMETHOD(GetParamEx) (THIS_ REFGUID rguidType, /* Command type. */ - REFERENCE_TIME rtTime, /* Time, in ref time if dwFlags == DMUS_TRACK_PARAMF_CLOCK. Otherwise, music time. */ - REFERENCE_TIME* prtNext, /* Time of next parameter, relative to rtTime, in music or clock time units. */ - void* pParam, /* Pointer to the parameter data. */ - void * pStateData, /* State data for track instance. */ - DWORD dwFlags) PURE; /* Control flags. */ - STDMETHOD(SetParamEx) (THIS_ REFGUID rguidType, - REFERENCE_TIME rtTime, - void* pParam, /* Pointer to the parameter data. */ - void * pStateData, /* State data for track instance. */ - DWORD dwFlags) PURE; /* Control flags. */ - STDMETHOD(Compose) (THIS_ IUnknown* pContext, /* Context for composition */ - DWORD dwTrackGroup, - IDirectMusicTrack** ppResultTrack) PURE; - STDMETHOD(Join) (THIS_ IDirectMusicTrack* pNewTrack, - MUSIC_TIME mtJoin, - IUnknown* pContext, /* Context for joining */ - DWORD dwTrackGroup, - IDirectMusicTrack** ppResultTrack) PURE; -}; - -/* CLSID's */ -DEFINE_GUID(CLSID_DirectMusicTempoTrack,0xd2ac2885, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); -DEFINE_GUID(CLSID_DirectMusicSeqTrack,0xd2ac2886, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); -DEFINE_GUID(CLSID_DirectMusicSysExTrack,0xd2ac2887, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); -DEFINE_GUID(CLSID_DirectMusicTimeSigTrack,0xd2ac2888, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); -DEFINE_GUID(CLSID_DirectMusicChordTrack,0xd2ac288b, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); -DEFINE_GUID(CLSID_DirectMusicCommandTrack,0xd2ac288c, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); -DEFINE_GUID(CLSID_DirectMusicStyleTrack,0xd2ac288d, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); -DEFINE_GUID(CLSID_DirectMusicMotifTrack,0xd2ac288e, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); -DEFINE_GUID(CLSID_DirectMusicSignPostTrack,0xf17e8672, 0xc3b4, 0x11d1, 0x87, 0xb, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); -DEFINE_GUID(CLSID_DirectMusicBandTrack,0xd2ac2894, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); -DEFINE_GUID(CLSID_DirectMusicChordMapTrack,0xd2ac2896, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); -DEFINE_GUID(CLSID_DirectMusicMuteTrack,0xd2ac2898, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); - -/* New CLSID's for DX8 */ -DEFINE_GUID(CLSID_DirectMusicScriptTrack,0x4108fa85, 0x3586, 0x11d3, 0x8b, 0xd7, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xb6); /* {4108FA85-3586-11d3-8BD7-00600893B1B6} */ -DEFINE_GUID(CLSID_DirectMusicMarkerTrack,0x55a8fd00, 0x4288, 0x11d3, 0x9b, 0xd1, 0x8a, 0xd, 0x61, 0xc8, 0x88, 0x35); -DEFINE_GUID(CLSID_DirectMusicSegmentTriggerTrack, 0xbae4d665, 0x4ea1, 0x11d3, 0x8b, 0xda, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xb6); /* {BAE4D665-4EA1-11d3-8BDA-00600893B1B6} */ -DEFINE_GUID(CLSID_DirectMusicLyricsTrack, 0x995c1cf5, 0x54ff, 0x11d3, 0x8b, 0xda, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xb6); /* {995C1CF5-54FF-11d3-8BDA-00600893B1B6} */ -DEFINE_GUID(CLSID_DirectMusicParamControlTrack, 0x4be0537b, 0x5c19, 0x11d3, 0x8b, 0xdc, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xb6); /* {4BE0537B-5C19-11d3-8BDC-00600893B1B6} */ -DEFINE_GUID(CLSID_DirectMusicWaveTrack,0xeed36461, 0x9ea5, 0x11d3, 0x9b, 0xd1, 0x0, 0x80, 0xc7, 0x15, 0xa, 0x74); - -/* IID's */ -DEFINE_GUID(IID_IDirectMusicTrack, 0xf96029a1, 0x4282, 0x11d2, 0x87, 0x17, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); -DEFINE_GUID(IID_IDirectMusicTool,0xd2ac28ba, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); - -/* Interface IDs for DX8 */ -/* changed interfaces (GUID only) */ -DEFINE_GUID(IID_IDirectMusicTool8, 0xe674303, 0x3b05, 0x11d3, 0x9b, 0xd1, 0xf9, 0xe7, 0xf0, 0xa0, 0x15, 0x36); -DEFINE_GUID(IID_IDirectMusicTrack8, 0xe674304, 0x3b05, 0x11d3, 0x9b, 0xd1, 0xf9, 0xe7, 0xf0, 0xa0, 0x15, 0x36); - -#ifdef __cplusplus -}; /* extern "C" */ -#endif - -#include - -#endif /* #ifndef _DMPLUGIN_ */ +/************************************************************************ +* * +* dmplugin.h -- This module contains the API for plugins for the * +* DirectMusic performance layer * +* * +* Copyright (c) Microsoft Corporation. All rights reserved. * +* * +************************************************************************/ + +#ifndef _DMPLUGIN_ +#define _DMPLUGIN_ + +#include + +#define COM_NO_WINDOWS_H +#include + +#include +#include + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +interface IDirectMusicTrack; +interface IDirectMusicTool; +interface IDirectMusicTool8; +interface IDirectMusicTrack8; +interface IDirectMusicPerformance; +interface IDirectMusicPerformance8; +interface IDirectMusicSegment; +interface IDirectMusicSegment8; +interface IDirectMusicSegmentState; +interface IDirectMusicSegmentState8; +interface IDirectMusicGraph; +#ifndef __cplusplus +typedef interface IDirectMusicTrack IDirectMusicTrack; +typedef interface IDirectMusicTool IDirectMusicTool; +typedef interface IDirectMusicTool8 IDirectMusicTool8; +typedef interface IDirectMusicTrack8 IDirectMusicTrack8; +typedef interface IDirectMusicPerformance IDirectMusicPerformance; +typedef interface IDirectMusicPerformance8 IDirectMusicPerformance8; +typedef interface IDirectMusicSegment IDirectMusicSegment; +typedef interface IDirectMusicSegment8 IDirectMusicSegment8; +typedef interface IDirectMusicSegmentState IDirectMusicSegmentState; +typedef interface IDirectMusicSegmentState8 IDirectMusicSegmentState8; +typedef interface IDirectMusicGraph IDirectMusicGraph; +#endif + +typedef struct _DMUS_PMSG DMUS_PMSG; +typedef long MUSIC_TIME; + +/* Registry location for tools */ +#define DMUS_REGSTR_PATH_TOOLS "Software\\Microsoft\\DirectMusic\\Tools" + +/*//////////////////////////////////////////////////////////////////// +// IDirectMusicTool */ +#undef INTERFACE +#define INTERFACE IDirectMusicTool +DECLARE_INTERFACE_(IDirectMusicTool, IUnknown) +{ + /* IUnknown */ + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + /* IDirectMusicTool */ + STDMETHOD(Init) (THIS_ IDirectMusicGraph* pGraph) PURE; + STDMETHOD(GetMsgDeliveryType) (THIS_ DWORD* pdwDeliveryType ) PURE; + STDMETHOD(GetMediaTypeArraySize)(THIS_ DWORD* pdwNumElements ) PURE; + STDMETHOD(GetMediaTypes) (THIS_ DWORD** padwMediaTypes, + DWORD dwNumElements) PURE; + STDMETHOD(ProcessPMsg) (THIS_ IDirectMusicPerformance* pPerf, + DMUS_PMSG* pPMSG) PURE; + STDMETHOD(Flush) (THIS_ IDirectMusicPerformance* pPerf, + DMUS_PMSG* pPMSG, + REFERENCE_TIME rtTime) PURE; +}; + +/*//////////////////////////////////////////////////////////////////// +// IDirectMusicTool8 */ +#undef INTERFACE +#define INTERFACE IDirectMusicTool8 +DECLARE_INTERFACE_(IDirectMusicTool8, IDirectMusicTool) +{ + /* IUnknown */ + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + /* IDirectMusicTool */ + STDMETHOD(Init) (THIS_ IDirectMusicGraph* pGraph) PURE; + STDMETHOD(GetMsgDeliveryType) (THIS_ DWORD* pdwDeliveryType ) PURE; + STDMETHOD(GetMediaTypeArraySize)(THIS_ DWORD* pdwNumElements ) PURE; + STDMETHOD(GetMediaTypes) (THIS_ DWORD** padwMediaTypes, + DWORD dwNumElements) PURE; + STDMETHOD(ProcessPMsg) (THIS_ IDirectMusicPerformance* pPerf, + DMUS_PMSG* pPMSG) PURE; + STDMETHOD(Flush) (THIS_ IDirectMusicPerformance* pPerf, + DMUS_PMSG* pPMSG, + REFERENCE_TIME rtTime) PURE; + /* IDirectMusicTool8 */ + STDMETHOD(Clone) (THIS_ IDirectMusicTool ** ppTool) PURE; +}; + + +/* The following flags are sent in the IDirectMusicTrack::Play() method */ +/* inside the dwFlags parameter */ +typedef enum enumDMUS_TRACKF_FLAGS +{ + DMUS_TRACKF_SEEK = 1, /* set on a seek */ + DMUS_TRACKF_LOOP = 2, /* set on a loop (repeat) */ + DMUS_TRACKF_START = 4, /* set on first call to Play */ + DMUS_TRACKF_FLUSH = 8, /* set when this call is in response to a flush on the perfomance */ + DMUS_TRACKF_DIRTY = 0x10, /* set when the track should consider any cached values from a previous call to GetParam to be invalidated */ + /* The following flags are DX8 only. */ + DMUS_TRACKF_NOTIFY_OFF = 0x20, /* tells track not to send notifications. */ + DMUS_TRACKF_PLAY_OFF = 0x40, /* tells track not to play anything (but can still send notifications.) */ + DMUS_TRACKF_LOOPEND = 0x80, /* set when the end of range is also a loop end. */ + DMUS_TRACKF_STOP = 0x100, /* set when the end of range is also end of playing this segment. */ + DMUS_TRACKF_RECOMPOSE = 0x200, /* set to indicate the track should compose. */ + DMUS_TRACKF_CLOCK = 0x400, /* set when time parameters are in reference (clock) time. Only valid for PlayEx(). */ +} DMUS_TRACKF_FLAGS; + +/* The following flags are sent in the IDirectMusicTrack8::GetParamEx() and SetParamEx() methods */ +/* inside the dwFlags parameter */ +#define DMUS_TRACK_PARAMF_CLOCK 0x01 /* set when the time is measured is in reference (clock) time */ + +/*//////////////////////////////////////////////////////////////////// +// IDirectMusicTrack */ +#undef INTERFACE +#define INTERFACE IDirectMusicTrack +DECLARE_INTERFACE_(IDirectMusicTrack, IUnknown) +{ + /* IUnknown */ + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + /* IDirectMusicTrack */ + STDMETHOD(Init) (THIS_ IDirectMusicSegment* pSegment) PURE; + STDMETHOD(InitPlay) (THIS_ IDirectMusicSegmentState* pSegmentState, + IDirectMusicPerformance* pPerformance, + void** ppStateData, + DWORD dwVirtualTrackID, + DWORD dwFlags) PURE; + STDMETHOD(EndPlay) (THIS_ void* pStateData) PURE; + STDMETHOD(Play) (THIS_ void* pStateData, + MUSIC_TIME mtStart, + MUSIC_TIME mtEnd, + MUSIC_TIME mtOffset, + DWORD dwFlags, + IDirectMusicPerformance* pPerf, + IDirectMusicSegmentState* pSegSt, + DWORD dwVirtualID) PURE; + STDMETHOD(GetParam) (THIS_ REFGUID rguidType, + MUSIC_TIME mtTime, + MUSIC_TIME* pmtNext, + void* pParam) PURE; + STDMETHOD(SetParam) (THIS_ REFGUID rguidType, + MUSIC_TIME mtTime, + void* pParam) PURE; + STDMETHOD(IsParamSupported) (THIS_ REFGUID rguidType) PURE; + STDMETHOD(AddNotificationType) (THIS_ REFGUID rguidNotificationType) PURE; + STDMETHOD(RemoveNotificationType) (THIS_ REFGUID rguidNotificationType) PURE; + STDMETHOD(Clone) (THIS_ MUSIC_TIME mtStart, + MUSIC_TIME mtEnd, + IDirectMusicTrack** ppTrack) PURE; +}; + +/*//////////////////////////////////////////////////////////////////// +// IDirectMusicTrack8 */ +#undef INTERFACE +#define INTERFACE IDirectMusicTrack8 +DECLARE_INTERFACE_(IDirectMusicTrack8, IDirectMusicTrack) +{ + /* IUnknown */ + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + /* IDirectMusicTrack */ + STDMETHOD(Init) (THIS_ IDirectMusicSegment* pSegment) PURE; + STDMETHOD(InitPlay) (THIS_ IDirectMusicSegmentState* pSegmentState, + IDirectMusicPerformance* pPerformance, + void** ppStateData, + DWORD dwVirtualTrackID, + DWORD dwFlags) PURE; + STDMETHOD(EndPlay) (THIS_ void* pStateData) PURE; + STDMETHOD(Play) (THIS_ void* pStateData, + MUSIC_TIME mtStart, + MUSIC_TIME mtEnd, + MUSIC_TIME mtOffset, + DWORD dwFlags, + IDirectMusicPerformance* pPerf, + IDirectMusicSegmentState* pSegSt, + DWORD dwVirtualID) PURE; + STDMETHOD(GetParam) (THIS_ REFGUID rguidType, + MUSIC_TIME mtTime, + MUSIC_TIME* pmtNext, + void* pParam) PURE; + STDMETHOD(SetParam) (THIS_ REFGUID rguidType, + MUSIC_TIME mtTime, + void* pParam) PURE; + STDMETHOD(IsParamSupported) (THIS_ REFGUID rguidType) PURE; + STDMETHOD(AddNotificationType) (THIS_ REFGUID rguidNotificationType) PURE; + STDMETHOD(RemoveNotificationType) (THIS_ REFGUID rguidNotificationType) PURE; + STDMETHOD(Clone) (THIS_ MUSIC_TIME mtStart, + MUSIC_TIME mtEnd, + IDirectMusicTrack** ppTrack) PURE; + /* IDirectMusicTrack8 */ + STDMETHOD(PlayEx) (THIS_ void* pStateData, + REFERENCE_TIME rtStart, + REFERENCE_TIME rtEnd, + REFERENCE_TIME rtOffset, + DWORD dwFlags, + IDirectMusicPerformance* pPerf, + IDirectMusicSegmentState* pSegSt, + DWORD dwVirtualID) PURE; + STDMETHOD(GetParamEx) (THIS_ REFGUID rguidType, /* Command type. */ + REFERENCE_TIME rtTime, /* Time, in ref time if dwFlags == DMUS_TRACK_PARAMF_CLOCK. Otherwise, music time. */ + REFERENCE_TIME* prtNext, /* Time of next parameter, relative to rtTime, in music or clock time units. */ + void* pParam, /* Pointer to the parameter data. */ + void * pStateData, /* State data for track instance. */ + DWORD dwFlags) PURE; /* Control flags. */ + STDMETHOD(SetParamEx) (THIS_ REFGUID rguidType, + REFERENCE_TIME rtTime, + void* pParam, /* Pointer to the parameter data. */ + void * pStateData, /* State data for track instance. */ + DWORD dwFlags) PURE; /* Control flags. */ + STDMETHOD(Compose) (THIS_ IUnknown* pContext, /* Context for composition */ + DWORD dwTrackGroup, + IDirectMusicTrack** ppResultTrack) PURE; + STDMETHOD(Join) (THIS_ IDirectMusicTrack* pNewTrack, + MUSIC_TIME mtJoin, + IUnknown* pContext, /* Context for joining */ + DWORD dwTrackGroup, + IDirectMusicTrack** ppResultTrack) PURE; +}; + +/* CLSID's */ +DEFINE_GUID(CLSID_DirectMusicTempoTrack,0xd2ac2885, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); +DEFINE_GUID(CLSID_DirectMusicSeqTrack,0xd2ac2886, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); +DEFINE_GUID(CLSID_DirectMusicSysExTrack,0xd2ac2887, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); +DEFINE_GUID(CLSID_DirectMusicTimeSigTrack,0xd2ac2888, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); +DEFINE_GUID(CLSID_DirectMusicChordTrack,0xd2ac288b, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); +DEFINE_GUID(CLSID_DirectMusicCommandTrack,0xd2ac288c, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); +DEFINE_GUID(CLSID_DirectMusicStyleTrack,0xd2ac288d, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); +DEFINE_GUID(CLSID_DirectMusicMotifTrack,0xd2ac288e, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); +DEFINE_GUID(CLSID_DirectMusicSignPostTrack,0xf17e8672, 0xc3b4, 0x11d1, 0x87, 0xb, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); +DEFINE_GUID(CLSID_DirectMusicBandTrack,0xd2ac2894, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); +DEFINE_GUID(CLSID_DirectMusicChordMapTrack,0xd2ac2896, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); +DEFINE_GUID(CLSID_DirectMusicMuteTrack,0xd2ac2898, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); + +/* New CLSID's for DX8 */ +DEFINE_GUID(CLSID_DirectMusicScriptTrack,0x4108fa85, 0x3586, 0x11d3, 0x8b, 0xd7, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xb6); /* {4108FA85-3586-11d3-8BD7-00600893B1B6} */ +DEFINE_GUID(CLSID_DirectMusicMarkerTrack,0x55a8fd00, 0x4288, 0x11d3, 0x9b, 0xd1, 0x8a, 0xd, 0x61, 0xc8, 0x88, 0x35); +DEFINE_GUID(CLSID_DirectMusicSegmentTriggerTrack, 0xbae4d665, 0x4ea1, 0x11d3, 0x8b, 0xda, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xb6); /* {BAE4D665-4EA1-11d3-8BDA-00600893B1B6} */ +DEFINE_GUID(CLSID_DirectMusicLyricsTrack, 0x995c1cf5, 0x54ff, 0x11d3, 0x8b, 0xda, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xb6); /* {995C1CF5-54FF-11d3-8BDA-00600893B1B6} */ +DEFINE_GUID(CLSID_DirectMusicParamControlTrack, 0x4be0537b, 0x5c19, 0x11d3, 0x8b, 0xdc, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xb6); /* {4BE0537B-5C19-11d3-8BDC-00600893B1B6} */ +DEFINE_GUID(CLSID_DirectMusicWaveTrack,0xeed36461, 0x9ea5, 0x11d3, 0x9b, 0xd1, 0x0, 0x80, 0xc7, 0x15, 0xa, 0x74); + +/* IID's */ +DEFINE_GUID(IID_IDirectMusicTrack, 0xf96029a1, 0x4282, 0x11d2, 0x87, 0x17, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); +DEFINE_GUID(IID_IDirectMusicTool,0xd2ac28ba, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); + +/* Interface IDs for DX8 */ +/* changed interfaces (GUID only) */ +DEFINE_GUID(IID_IDirectMusicTool8, 0xe674303, 0x3b05, 0x11d3, 0x9b, 0xd1, 0xf9, 0xe7, 0xf0, 0xa0, 0x15, 0x36); +DEFINE_GUID(IID_IDirectMusicTrack8, 0xe674304, 0x3b05, 0x11d3, 0x9b, 0xd1, 0xf9, 0xe7, 0xf0, 0xa0, 0x15, 0x36); + +#ifdef __cplusplus +}; /* extern "C" */ +#endif + +#include + +#endif /* #ifndef _DMPLUGIN_ */ diff --git a/videoInputSrcAndDemos/libs/DShow/Include/dmusbuff.h b/videoInputSrcAndDemos/libs/DShow/Include/dmusbuff.h index 6841401..5488453 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/dmusbuff.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/dmusbuff.h @@ -1,41 +1,41 @@ -/*************************************************************************** -* * -* DMusBuff.h -- This module defines the buffer format for DirectMusic * -* Shared file between user mode and kernel mode components * -* * -* Copyright (c) 1998, Microsoft Corp. All rights reserved. * -* * -***************************************************************************/ - -#ifndef _DMusBuff_ -#define _DMusBuff_ - -/* Format of DirectMusic events in a buffer - * - * A buffer contains 1 or more events, each with the following header. - * Immediately following the header is the event data. The header+data - * size is rounded to the nearest quadword (8 bytes). - */ - -#include /* Do not pad at end - that's where the data is */ -typedef struct _DMUS_EVENTHEADER *LPDMUS_EVENTHEADER; -typedef struct _DMUS_EVENTHEADER -{ - DWORD cbEvent; /* Unrounded bytes in event */ - DWORD dwChannelGroup; /* Channel group of event */ - REFERENCE_TIME rtDelta; /* Delta from start time of entire buffer */ - DWORD dwFlags; /* Flags DMUS_EVENT_xxx */ -} DMUS_EVENTHEADER; -#include - -#define DMUS_EVENT_STRUCTURED 0x00000001 /* Unstructured data (SysEx, etc.) */ - -/* The number of bytes to allocate for an event with 'cb' data bytes. - */ -#define QWORD_ALIGN(x) (((x) + 7) & ~7) -#define DMUS_EVENT_SIZE(cb) QWORD_ALIGN(sizeof(DMUS_EVENTHEADER) + cb) - - -#endif /* _DMusBuff_ */ - - +/*************************************************************************** +* * +* DMusBuff.h -- This module defines the buffer format for DirectMusic * +* Shared file between user mode and kernel mode components * +* * +* Copyright (c) 1998, Microsoft Corp. All rights reserved. * +* * +***************************************************************************/ + +#ifndef _DMusBuff_ +#define _DMusBuff_ + +/* Format of DirectMusic events in a buffer + * + * A buffer contains 1 or more events, each with the following header. + * Immediately following the header is the event data. The header+data + * size is rounded to the nearest quadword (8 bytes). + */ + +#include /* Do not pad at end - that's where the data is */ +typedef struct _DMUS_EVENTHEADER *LPDMUS_EVENTHEADER; +typedef struct _DMUS_EVENTHEADER +{ + DWORD cbEvent; /* Unrounded bytes in event */ + DWORD dwChannelGroup; /* Channel group of event */ + REFERENCE_TIME rtDelta; /* Delta from start time of entire buffer */ + DWORD dwFlags; /* Flags DMUS_EVENT_xxx */ +} DMUS_EVENTHEADER; +#include + +#define DMUS_EVENT_STRUCTURED 0x00000001 /* Unstructured data (SysEx, etc.) */ + +/* The number of bytes to allocate for an event with 'cb' data bytes. + */ +#define QWORD_ALIGN(x) (((x) + 7) & ~7) +#define DMUS_EVENT_SIZE(cb) QWORD_ALIGN(sizeof(DMUS_EVENTHEADER) + cb) + + +#endif /* _DMusBuff_ */ + + diff --git a/videoInputSrcAndDemos/libs/DShow/Include/dmusicc.h b/videoInputSrcAndDemos/libs/DShow/Include/dmusicc.h index 6e57796..3084d11 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/dmusicc.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/dmusicc.h @@ -1,784 +1,784 @@ -/************************************************************************ -* * -* dmusicc.h -- This module defines the DirectMusic core API's * -* * -* Copyright (c) Microsoft Corporation. All rights reserved. * -* * -************************************************************************/ - -#ifndef _DMUSICC_ -#define _DMUSICC_ - -#include - -#define COM_NO_WINDOWS_H -#include - -#include - -#include "dls1.h" -#include "dmerror.h" -#include "dmdls.h" -#include "dsound.h" -#include "dmusbuff.h" - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef ULONGLONG SAMPLE_TIME; -typedef ULONGLONG SAMPLE_POSITION; -typedef SAMPLE_TIME *LPSAMPLE_TIME; - -#define DMUS_MAX_DESCRIPTION 128 -#define DMUS_MAX_DRIVER 128 - -typedef struct _DMUS_BUFFERDESC *LPDMUS_BUFFERDESC; -typedef struct _DMUS_BUFFERDESC -{ - DWORD dwSize; - DWORD dwFlags; - GUID guidBufferFormat; - DWORD cbBuffer; -} DMUS_BUFFERDESC; - -/* DMUS_EFFECT_ flags are used in the dwEffectFlags fields of both DMUS_PORTCAPS - * and DMUS_PORTPARAMS. - */ -#define DMUS_EFFECT_NONE 0x00000000 -#define DMUS_EFFECT_REVERB 0x00000001 -#define DMUS_EFFECT_CHORUS 0x00000002 -#define DMUS_EFFECT_DELAY 0x00000004 - -/* For DMUS_PORTCAPS dwClass - */ -#define DMUS_PC_INPUTCLASS (0) -#define DMUS_PC_OUTPUTCLASS (1) - -/* For DMUS_PORTCAPS dwFlags - */ -#define DMUS_PC_DLS (0x00000001) // Supports DLS downloading and DLS level 1. -#define DMUS_PC_EXTERNAL (0x00000002) // External MIDI module. -#define DMUS_PC_SOFTWARESYNTH (0x00000004) // Software synthesizer. -#define DMUS_PC_MEMORYSIZEFIXED (0x00000008) // Memory size is fixed. -#define DMUS_PC_GMINHARDWARE (0x00000010) // GM sound set is built in, no need to download. -#define DMUS_PC_GSINHARDWARE (0x00000020) // GS sound set is built in. -#define DMUS_PC_XGINHARDWARE (0x00000040) // XG sound set is built in. -#define DMUS_PC_DIRECTSOUND (0x00000080) // Connects to DirectSound via a DSound buffer. -#define DMUS_PC_SHAREABLE (0x00000100) // Synth can be actively shared by multiple apps at once. -#define DMUS_PC_DLS2 (0x00000200) // Supports DLS2 instruments. -#define DMUS_PC_AUDIOPATH (0x00000400) // Multiple outputs can be connected to DirectSound for audiopaths. -#define DMUS_PC_WAVE (0x00000800) // Supports streaming and one shot waves. - -#define DMUS_PC_SYSTEMMEMORY (0x7FFFFFFF) // Sample memory is system memory. - - -typedef struct _DMUS_PORTCAPS -{ - DWORD dwSize; - DWORD dwFlags; - GUID guidPort; - DWORD dwClass; - DWORD dwType; - DWORD dwMemorySize; - DWORD dwMaxChannelGroups; - DWORD dwMaxVoices; - DWORD dwMaxAudioChannels; - DWORD dwEffectFlags; - WCHAR wszDescription[DMUS_MAX_DESCRIPTION]; -} DMUS_PORTCAPS; - -typedef DMUS_PORTCAPS *LPDMUS_PORTCAPS; - -/* Values for DMUS_PORTCAPS dwType. This field indicates the underlying - * driver type of the port. - */ -#define DMUS_PORT_WINMM_DRIVER (0) -#define DMUS_PORT_USER_MODE_SYNTH (1) -#define DMUS_PORT_KERNEL_MODE (2) - -/* These flags (set in dwValidParams) indicate which other members of the */ -/* DMUS_PORTPARAMS are valid. */ -/* */ -#define DMUS_PORTPARAMS_VOICES 0x00000001 -#define DMUS_PORTPARAMS_CHANNELGROUPS 0x00000002 -#define DMUS_PORTPARAMS_AUDIOCHANNELS 0x00000004 -#define DMUS_PORTPARAMS_SAMPLERATE 0x00000008 -#define DMUS_PORTPARAMS_EFFECTS 0x00000020 -#define DMUS_PORTPARAMS_SHARE 0x00000040 -#define DMUS_PORTPARAMS_FEATURES 0x00000080 /* DirectX 8.0 and above */ - -typedef struct _DMUS_PORTPARAMS -{ - DWORD dwSize; - DWORD dwValidParams; - DWORD dwVoices; - DWORD dwChannelGroups; - DWORD dwAudioChannels; - DWORD dwSampleRate; - DWORD dwEffectFlags; - BOOL fShare; -} DMUS_PORTPARAMS7; - -typedef struct _DMUS_PORTPARAMS8 -{ - DWORD dwSize; - DWORD dwValidParams; - DWORD dwVoices; - DWORD dwChannelGroups; - DWORD dwAudioChannels; - DWORD dwSampleRate; - DWORD dwEffectFlags; - BOOL fShare; - DWORD dwFeatures; -} DMUS_PORTPARAMS8; - -#define DMUS_PORT_FEATURE_AUDIOPATH 0x00000001 /* Supports audiopath connection to DSound buffers. */ -#define DMUS_PORT_FEATURE_STREAMING 0x00000002 /* Supports streaming waves through the synth. */ - - -typedef DMUS_PORTPARAMS8 DMUS_PORTPARAMS; -typedef DMUS_PORTPARAMS *LPDMUS_PORTPARAMS; - -typedef struct _DMUS_SYNTHSTATS *LPDMUS_SYNTHSTATS; -typedef struct _DMUS_SYNTHSTATS8 *LPDMUS_SYNTHSTATS8; -typedef struct _DMUS_SYNTHSTATS -{ - DWORD dwSize; /* Size in bytes of the structure */ - DWORD dwValidStats; /* Flags indicating which fields below are valid. */ - DWORD dwVoices; /* Average number of voices playing. */ - DWORD dwTotalCPU; /* Total CPU usage as percent * 100. */ - DWORD dwCPUPerVoice; /* CPU per voice as percent * 100. */ - DWORD dwLostNotes; /* Number of notes lost in 1 second. */ - DWORD dwFreeMemory; /* Free memory in bytes */ - long lPeakVolume; /* Decibel level * 100. */ -} DMUS_SYNTHSTATS; - -typedef struct _DMUS_SYNTHSTATS8 -{ - DWORD dwSize; /* Size in bytes of the structure */ - DWORD dwValidStats; /* Flags indicating which fields below are valid. */ - DWORD dwVoices; /* Average number of voices playing. */ - DWORD dwTotalCPU; /* Total CPU usage as percent * 100. */ - DWORD dwCPUPerVoice; /* CPU per voice as percent * 100. */ - DWORD dwLostNotes; /* Number of notes lost in 1 second. */ - DWORD dwFreeMemory; /* Free memory in bytes */ - long lPeakVolume; /* Decibel level * 100. */ - DWORD dwSynthMemUse; /* Memory used by synth wave data */ -} DMUS_SYNTHSTATS8; - -#define DMUS_SYNTHSTATS_VOICES (1 << 0) -#define DMUS_SYNTHSTATS_TOTAL_CPU (1 << 1) -#define DMUS_SYNTHSTATS_CPU_PER_VOICE (1 << 2) -#define DMUS_SYNTHSTATS_LOST_NOTES (1 << 3) -#define DMUS_SYNTHSTATS_PEAK_VOLUME (1 << 4) -#define DMUS_SYNTHSTATS_FREE_MEMORY (1 << 5) - -#define DMUS_SYNTHSTATS_SYSTEMMEMORY DMUS_PC_SYSTEMMEMORY - -typedef struct _DMUS_WAVES_REVERB_PARAMS -{ - float fInGain; /* Input gain in dB (to avoid output overflows) */ - float fReverbMix; /* Reverb mix in dB. 0dB means 100% wet reverb (no direct signal) - Negative values gives less wet signal. - The coeficients are calculated so that the overall output level stays - (approximately) constant regardless of the ammount of reverb mix. */ - float fReverbTime; /* The reverb decay time, in milliseconds. */ - float fHighFreqRTRatio; /* The ratio of the high frequencies to the global reverb time. - Unless very 'splashy-bright' reverbs are wanted, this should be set to - a value < 1.0. - For example if dRevTime==1000ms and dHighFreqRTRatio=0.1 than the - decay time for high frequencies will be 100ms.*/ - -} DMUS_WAVES_REVERB_PARAMS; - -/* Note: Default values for Reverb are: - fInGain = 0.0dB (no change in level) - fReverbMix = -10.0dB (a reasonable reverb mix) - fReverbTime = 1000.0ms (one second global reverb time) - fHighFreqRTRatio = 0.001 (the ratio of the high frequencies to the global reverb time) -*/ - -typedef enum -{ - DMUS_CLOCK_SYSTEM = 0, - DMUS_CLOCK_WAVE = 1 -} DMUS_CLOCKTYPE; - -#define DMUS_CLOCKF_GLOBAL 0x00000001 - -typedef struct _DMUS_CLOCKINFO7 *LPDMUS_CLOCKINFO7; -typedef struct _DMUS_CLOCKINFO7 -{ - DWORD dwSize; - DMUS_CLOCKTYPE ctType; - GUID guidClock; /* Identifies this time source */ - WCHAR wszDescription[DMUS_MAX_DESCRIPTION]; -} DMUS_CLOCKINFO7; - -typedef struct _DMUS_CLOCKINFO8 *LPDMUS_CLOCKINFO8; -typedef struct _DMUS_CLOCKINFO8 -{ - DWORD dwSize; - DMUS_CLOCKTYPE ctType; - GUID guidClock; /* Identifies this time source */ - WCHAR wszDescription[DMUS_MAX_DESCRIPTION]; - DWORD dwFlags; -} DMUS_CLOCKINFO8; - -typedef DMUS_CLOCKINFO8 DMUS_CLOCKINFO; -typedef DMUS_CLOCKINFO *LPDMUS_CLOCKINFO; - -/* Default bus identifiers - * - * The first 17 are direct mappings to the destinations defined in both - * the MMA DLS Level 2 specification and the Microsoft Multi-Channel audio - * specification. - */ -#define DSBUSID_FIRST_SPKR_LOC 0 -#define DSBUSID_FRONT_LEFT 0 -#define DSBUSID_LEFT 0 /* Front left is also just left */ -#define DSBUSID_FRONT_RIGHT 1 -#define DSBUSID_RIGHT 1 /* Ditto front right */ -#define DSBUSID_FRONT_CENTER 2 -#define DSBUSID_LOW_FREQUENCY 3 -#define DSBUSID_BACK_LEFT 4 -#define DSBUSID_BACK_RIGHT 5 -#define DSBUSID_FRONT_LEFT_OF_CENTER 6 -#define DSBUSID_FRONT_RIGHT_OF_CENTER 7 -#define DSBUSID_BACK_CENTER 8 -#define DSBUSID_SIDE_LEFT 9 -#define DSBUSID_SIDE_RIGHT 10 -#define DSBUSID_TOP_CENTER 11 -#define DSBUSID_TOP_FRONT_LEFT 12 -#define DSBUSID_TOP_FRONT_CENTER 13 -#define DSBUSID_TOP_FRONT_RIGHT 14 -#define DSBUSID_TOP_BACK_LEFT 15 -#define DSBUSID_TOP_BACK_CENTER 16 -#define DSBUSID_TOP_BACK_RIGHT 17 -#define DSBUSID_LAST_SPKR_LOC 17 - -#define DSBUSID_IS_SPKR_LOC(id) ( ((id) >= DSBUSID_FIRST_SPKR_LOC) && ((id) <= DSBUSID_LAST_SPKR_LOC) ) - -/* These bus identifiers are for the standard DLS effect sends - */ -#define DSBUSID_REVERB_SEND 64 -#define DSBUSID_CHORUS_SEND 65 - -/* Dynamic bus identifiers start here. See the documentation for how - * synthesizers map the output of voices to static and dynamic - * bus identifiers. - */ -#define DSBUSID_DYNAMIC_0 512 - -/* Null bus, used to identify busses that have no function mapping. -*/ -#define DSBUSID_NULL 0xFFFFFFFF - -interface IDirectMusic; -interface IDirectMusic8; -interface IDirectMusicBuffer; -interface IDirectMusicPort; -interface IDirectMusicThru; -interface IReferenceClock; - -#ifndef __cplusplus - -typedef interface IDirectMusic IDirectMusic; -typedef interface IDirectMusic8 IDirectMusic8; -typedef interface IDirectMusicPort IDirectMusicPort; -typedef interface IDirectMusicBuffer IDirectMusicBuffer; -typedef interface IDirectMusicThru IDirectMusicThru; -typedef interface IReferenceClock IReferenceClock; - -#endif /* C++ */ - -typedef IDirectMusic *LPDIRECTMUSIC; -typedef IDirectMusic8 *LPDIRECTMUSIC8; -typedef IDirectMusicPort *LPDIRECTMUSICPORT; -typedef IDirectMusicBuffer *LPDIRECTMUSICBUFFER; - -#undef INTERFACE -#define INTERFACE IDirectMusic -DECLARE_INTERFACE_(IDirectMusic, IUnknown) -{ - /* IUnknown */ - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - /* IDirectMusic */ - STDMETHOD(EnumPort) (THIS_ DWORD dwIndex, - LPDMUS_PORTCAPS pPortCaps) PURE; - STDMETHOD(CreateMusicBuffer) (THIS_ LPDMUS_BUFFERDESC pBufferDesc, - LPDIRECTMUSICBUFFER *ppBuffer, - LPUNKNOWN pUnkOuter) PURE; - STDMETHOD(CreatePort) (THIS_ REFCLSID rclsidPort, - LPDMUS_PORTPARAMS pPortParams, - LPDIRECTMUSICPORT *ppPort, - LPUNKNOWN pUnkOuter) PURE; - STDMETHOD(EnumMasterClock) (THIS_ DWORD dwIndex, - LPDMUS_CLOCKINFO lpClockInfo) PURE; - STDMETHOD(GetMasterClock) (THIS_ LPGUID pguidClock, - IReferenceClock **ppReferenceClock) PURE; - STDMETHOD(SetMasterClock) (THIS_ REFGUID rguidClock) PURE; - STDMETHOD(Activate) (THIS_ BOOL fEnable) PURE; - STDMETHOD(GetDefaultPort) (THIS_ LPGUID pguidPort) PURE; - STDMETHOD(SetDirectSound) (THIS_ LPDIRECTSOUND pDirectSound, - HWND hWnd) PURE; -}; - -#undef INTERFACE -#define INTERFACE IDirectMusic8 -DECLARE_INTERFACE_(IDirectMusic8, IDirectMusic) -{ - /* IUnknown */ - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - /* IDirectMusic */ - STDMETHOD(EnumPort) (THIS_ DWORD dwIndex, - LPDMUS_PORTCAPS pPortCaps) PURE; - STDMETHOD(CreateMusicBuffer) (THIS_ LPDMUS_BUFFERDESC pBufferDesc, - LPDIRECTMUSICBUFFER *ppBuffer, - LPUNKNOWN pUnkOuter) PURE; - STDMETHOD(CreatePort) (THIS_ REFCLSID rclsidPort, - LPDMUS_PORTPARAMS pPortParams, - LPDIRECTMUSICPORT *ppPort, - LPUNKNOWN pUnkOuter) PURE; - STDMETHOD(EnumMasterClock) (THIS_ DWORD dwIndex, - LPDMUS_CLOCKINFO lpClockInfo) PURE; - STDMETHOD(GetMasterClock) (THIS_ LPGUID pguidClock, - IReferenceClock **ppReferenceClock) PURE; - STDMETHOD(SetMasterClock) (THIS_ REFGUID rguidClock) PURE; - STDMETHOD(Activate) (THIS_ BOOL fEnable) PURE; - STDMETHOD(GetDefaultPort) (THIS_ LPGUID pguidPort) PURE; - STDMETHOD(SetDirectSound) (THIS_ LPDIRECTSOUND pDirectSound, - HWND hWnd) PURE; - /* IDirectMusic8 */ - STDMETHOD(SetExternalMasterClock) - (THIS_ IReferenceClock *pClock) PURE; -}; - -#undef INTERFACE -#define INTERFACE IDirectMusicBuffer -DECLARE_INTERFACE_(IDirectMusicBuffer, IUnknown) -{ - /* IUnknown */ - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - /* IDirectMusicBuffer */ - STDMETHOD(Flush) (THIS) PURE; - STDMETHOD(TotalTime) (THIS_ LPREFERENCE_TIME prtTime) PURE; - - STDMETHOD(PackStructured) (THIS_ REFERENCE_TIME rt, - DWORD dwChannelGroup, - DWORD dwChannelMessage) PURE; - - STDMETHOD(PackUnstructured) (THIS_ REFERENCE_TIME rt, - DWORD dwChannelGroup, - DWORD cb, - LPBYTE lpb) PURE; - - STDMETHOD(ResetReadPtr) (THIS) PURE; - STDMETHOD(GetNextEvent) (THIS_ LPREFERENCE_TIME prt, - LPDWORD pdwChannelGroup, - LPDWORD pdwLength, - LPBYTE *ppData) PURE; - - STDMETHOD(GetRawBufferPtr) (THIS_ LPBYTE *ppData) PURE; - STDMETHOD(GetStartTime) (THIS_ LPREFERENCE_TIME prt) PURE; - STDMETHOD(GetUsedBytes) (THIS_ LPDWORD pcb) PURE; - STDMETHOD(GetMaxBytes) (THIS_ LPDWORD pcb) PURE; - STDMETHOD(GetBufferFormat) (THIS_ LPGUID pGuidFormat) PURE; - - STDMETHOD(SetStartTime) (THIS_ REFERENCE_TIME rt) PURE; - STDMETHOD(SetUsedBytes) (THIS_ DWORD cb) PURE; -}; - -typedef IDirectMusicBuffer IDirectMusicBuffer8; -typedef IDirectMusicBuffer8 *LPDIRECTMUSICBUFFER8; - -#undef INTERFACE -#define INTERFACE IDirectMusicInstrument -DECLARE_INTERFACE_(IDirectMusicInstrument, IUnknown) -{ - /* IUnknown */ - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - /* IDirectMusicInstrument */ - STDMETHOD(GetPatch) (THIS_ DWORD* pdwPatch) PURE; - STDMETHOD(SetPatch) (THIS_ DWORD dwPatch) PURE; -}; - -typedef IDirectMusicInstrument IDirectMusicInstrument8; -typedef IDirectMusicInstrument8 *LPDIRECTMUSICINSTRUMENT8; - -#undef INTERFACE -#define INTERFACE IDirectMusicDownloadedInstrument -DECLARE_INTERFACE_(IDirectMusicDownloadedInstrument, IUnknown) -{ - /* IUnknown */ - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - /* IDirectMusicDownloadedInstrument */ - /* None at this time */ -}; - -typedef IDirectMusicDownloadedInstrument IDirectMusicDownloadedInstrument8; -typedef IDirectMusicDownloadedInstrument8 *LPDIRECTMUSICDOWNLOADEDINSTRUMENT8; - -#undef INTERFACE -#define INTERFACE IDirectMusicCollection -DECLARE_INTERFACE_(IDirectMusicCollection, IUnknown) -{ - /* IUnknown */ - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - /* IDirectMusicCollection */ - STDMETHOD(GetInstrument) (THIS_ DWORD dwPatch, - IDirectMusicInstrument** ppInstrument) PURE; - STDMETHOD(EnumInstrument) (THIS_ DWORD dwIndex, - DWORD* pdwPatch, - LPWSTR pwszName, - DWORD dwNameLen) PURE; -}; - -typedef IDirectMusicCollection IDirectMusicCollection8; -typedef IDirectMusicCollection8 *LPDIRECTMUSICCOLLECTION8; - -#undef INTERFACE -#define INTERFACE IDirectMusicDownload -DECLARE_INTERFACE_(IDirectMusicDownload , IUnknown) -{ - /* IUnknown */ - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - /* IDirectMusicDownload */ - STDMETHOD(GetBuffer) (THIS_ void** ppvBuffer, - DWORD* pdwSize) PURE; -}; - -typedef IDirectMusicDownload IDirectMusicDownload8; -typedef IDirectMusicDownload8 *LPDIRECTMUSICDOWNLOAD8; - -#undef INTERFACE -#define INTERFACE IDirectMusicPortDownload -DECLARE_INTERFACE_(IDirectMusicPortDownload, IUnknown) -{ - /* IUnknown */ - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - /* IDirectMusicPortDownload */ - STDMETHOD(GetBuffer) (THIS_ DWORD dwDLId, - IDirectMusicDownload** ppIDMDownload) PURE; - STDMETHOD(AllocateBuffer) (THIS_ DWORD dwSize, - IDirectMusicDownload** ppIDMDownload) PURE; - STDMETHOD(GetDLId) (THIS_ DWORD* pdwStartDLId, - DWORD dwCount) PURE; - STDMETHOD(GetAppend) (THIS_ DWORD* pdwAppend) PURE; - STDMETHOD(Download) (THIS_ IDirectMusicDownload* pIDMDownload) PURE; - STDMETHOD(Unload) (THIS_ IDirectMusicDownload* pIDMDownload) PURE; -}; - -typedef IDirectMusicPortDownload IDirectMusicPortDownload8; -typedef IDirectMusicPortDownload8 *LPDIRECTMUSICPORTDOWNLOAD8; - -/* Standard values for voice priorities. Numerically higher priorities are higher in priority. - * These priorities are used to set the voice priority for all voices on a channel. They are - * used in the dwPriority parameter of IDirectMusicPort::GetPriority and returned in the - * lpwPriority parameter of pdwPriority. - * - * These priorities are shared with DirectSound. - */ - -#ifndef _DIRECTAUDIO_PRIORITIES_DEFINED_ -#define _DIRECTAUDIO_PRIORITIES_DEFINED_ - -#define DAUD_CRITICAL_VOICE_PRIORITY (0xF0000000) -#define DAUD_HIGH_VOICE_PRIORITY (0xC0000000) -#define DAUD_STANDARD_VOICE_PRIORITY (0x80000000) -#define DAUD_LOW_VOICE_PRIORITY (0x40000000) -#define DAUD_PERSIST_VOICE_PRIORITY (0x10000000) - -/* These are the default priorities assigned if not overridden. By default priorities are - * equal across channel groups (e.g. channel 5 on channel group 1 has the same priority as - * channel 5 on channel group 2). - * - * In accordance with DLS level 1, channel 10 has the highest priority, followed by 1 through 16 - * except for 10. - */ -#define DAUD_CHAN1_VOICE_PRIORITY_OFFSET (0x0000000E) -#define DAUD_CHAN2_VOICE_PRIORITY_OFFSET (0x0000000D) -#define DAUD_CHAN3_VOICE_PRIORITY_OFFSET (0x0000000C) -#define DAUD_CHAN4_VOICE_PRIORITY_OFFSET (0x0000000B) -#define DAUD_CHAN5_VOICE_PRIORITY_OFFSET (0x0000000A) -#define DAUD_CHAN6_VOICE_PRIORITY_OFFSET (0x00000009) -#define DAUD_CHAN7_VOICE_PRIORITY_OFFSET (0x00000008) -#define DAUD_CHAN8_VOICE_PRIORITY_OFFSET (0x00000007) -#define DAUD_CHAN9_VOICE_PRIORITY_OFFSET (0x00000006) -#define DAUD_CHAN10_VOICE_PRIORITY_OFFSET (0x0000000F) -#define DAUD_CHAN11_VOICE_PRIORITY_OFFSET (0x00000005) -#define DAUD_CHAN12_VOICE_PRIORITY_OFFSET (0x00000004) -#define DAUD_CHAN13_VOICE_PRIORITY_OFFSET (0x00000003) -#define DAUD_CHAN14_VOICE_PRIORITY_OFFSET (0x00000002) -#define DAUD_CHAN15_VOICE_PRIORITY_OFFSET (0x00000001) -#define DAUD_CHAN16_VOICE_PRIORITY_OFFSET (0x00000000) - - -#define DAUD_CHAN1_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN1_VOICE_PRIORITY_OFFSET) -#define DAUD_CHAN2_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN2_VOICE_PRIORITY_OFFSET) -#define DAUD_CHAN3_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN3_VOICE_PRIORITY_OFFSET) -#define DAUD_CHAN4_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN4_VOICE_PRIORITY_OFFSET) -#define DAUD_CHAN5_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN5_VOICE_PRIORITY_OFFSET) -#define DAUD_CHAN6_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN6_VOICE_PRIORITY_OFFSET) -#define DAUD_CHAN7_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN7_VOICE_PRIORITY_OFFSET) -#define DAUD_CHAN8_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN8_VOICE_PRIORITY_OFFSET) -#define DAUD_CHAN9_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN9_VOICE_PRIORITY_OFFSET) -#define DAUD_CHAN10_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN10_VOICE_PRIORITY_OFFSET) -#define DAUD_CHAN11_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN11_VOICE_PRIORITY_OFFSET) -#define DAUD_CHAN12_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN12_VOICE_PRIORITY_OFFSET) -#define DAUD_CHAN13_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN13_VOICE_PRIORITY_OFFSET) -#define DAUD_CHAN14_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN14_VOICE_PRIORITY_OFFSET) -#define DAUD_CHAN15_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN15_VOICE_PRIORITY_OFFSET) -#define DAUD_CHAN16_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN16_VOICE_PRIORITY_OFFSET) - -#endif /* _DIRECTAUDIO_PRIORITIES_DEFINED_ */ - - -#undef INTERFACE -#define INTERFACE IDirectMusicPort -DECLARE_INTERFACE_(IDirectMusicPort, IUnknown) -{ - /* IUnknown */ - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - /* IDirectMusicPort */ - /* */ - STDMETHOD(PlayBuffer) (THIS_ LPDIRECTMUSICBUFFER pBuffer) PURE; - STDMETHOD(SetReadNotificationHandle) (THIS_ HANDLE hEvent) PURE; - STDMETHOD(Read) (THIS_ LPDIRECTMUSICBUFFER pBuffer) PURE; - STDMETHOD(DownloadInstrument) (THIS_ IDirectMusicInstrument *pInstrument, - IDirectMusicDownloadedInstrument **ppDownloadedInstrument, - DMUS_NOTERANGE *pNoteRanges, - DWORD dwNumNoteRanges) PURE; - STDMETHOD(UnloadInstrument) (THIS_ IDirectMusicDownloadedInstrument *pDownloadedInstrument) PURE; - STDMETHOD(GetLatencyClock) (THIS_ IReferenceClock **ppClock) PURE; - STDMETHOD(GetRunningStats) (THIS_ LPDMUS_SYNTHSTATS pStats) PURE; - STDMETHOD(Compact) (THIS) PURE; - STDMETHOD(GetCaps) (THIS_ LPDMUS_PORTCAPS pPortCaps) PURE; - STDMETHOD(DeviceIoControl) (THIS_ DWORD dwIoControlCode, - LPVOID lpInBuffer, - DWORD nInBufferSize, - LPVOID lpOutBuffer, - DWORD nOutBufferSize, - LPDWORD lpBytesReturned, - LPOVERLAPPED lpOverlapped) PURE; - STDMETHOD(SetNumChannelGroups) (THIS_ DWORD dwChannelGroups) PURE; - STDMETHOD(GetNumChannelGroups) (THIS_ LPDWORD pdwChannelGroups) PURE; - STDMETHOD(Activate) (THIS_ BOOL fActive) PURE; - STDMETHOD(SetChannelPriority) (THIS_ DWORD dwChannelGroup, DWORD dwChannel, DWORD dwPriority) PURE; - STDMETHOD(GetChannelPriority) (THIS_ DWORD dwChannelGroup, DWORD dwChannel, LPDWORD pdwPriority) PURE; - STDMETHOD(SetDirectSound) (THIS_ LPDIRECTSOUND pDirectSound, LPDIRECTSOUNDBUFFER pDirectSoundBuffer) PURE; - STDMETHOD(GetFormat) (THIS_ LPWAVEFORMATEX pWaveFormatEx, LPDWORD pdwWaveFormatExSize, LPDWORD pdwBufferSize) PURE; -}; - -typedef IDirectMusicPort IDirectMusicPort8; -typedef IDirectMusicPort8 *LPDIRECTMUSICPORT8; - -#undef INTERFACE -#define INTERFACE IDirectMusicThru -DECLARE_INTERFACE_(IDirectMusicThru, IUnknown) -{ - /* IUnknown */ - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - /* IDirectMusicThru - */ - STDMETHOD(ThruChannel) (THIS_ DWORD dwSourceChannelGroup, - DWORD dwSourceChannel, - DWORD dwDestinationChannelGroup, - DWORD dwDestinationChannel, - LPDIRECTMUSICPORT pDestinationPort) PURE; -}; - -typedef IDirectMusicThru IDirectMusicThru8; -typedef IDirectMusicThru8 *LPDIRECTMUSICTHRU8; - -#ifndef __IReferenceClock_INTERFACE_DEFINED__ -#define __IReferenceClock_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IReferenceClock,0x56a86897,0x0ad4,0x11ce,0xb0,0x3a,0x00,0x20,0xaf,0x0b,0xa7,0x70); - -#undef INTERFACE -#define INTERFACE IReferenceClock -DECLARE_INTERFACE_(IReferenceClock, IUnknown) -{ - /* IUnknown */ - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - /* IReferenceClock */ - /* */ - - /* get the time now */ - STDMETHOD(GetTime) (THIS_ REFERENCE_TIME *pTime) PURE; - - /* ask for an async notification that a time has elapsed */ - STDMETHOD(AdviseTime) (THIS_ REFERENCE_TIME baseTime, /* base time */ - REFERENCE_TIME streamTime, /* stream offset time */ - HANDLE hEvent, /* advise via this event */ - DWORD * pdwAdviseCookie) PURE; /* where your cookie goes */ - - /* ask for an async periodic notification that a time has elapsed */ - STDMETHOD(AdvisePeriodic) (THIS_ REFERENCE_TIME startTime, /* starting at this time */ - REFERENCE_TIME periodTime, /* time between notifications */ - HANDLE hSemaphore, /* advise via a semaphore */ - DWORD * pdwAdviseCookie) PURE; /* where your cookie goes */ - - /* cancel a request for notification */ - STDMETHOD(Unadvise) (THIS_ DWORD dwAdviseCookie) PURE; -}; - -#endif /* __IReferenceClock_INTERFACE_DEFINED__ */ - -DEFINE_GUID(CLSID_DirectMusic,0x636b9f10,0x0c7d,0x11d1,0x95,0xb2,0x00,0x20,0xaf,0xdc,0x74,0x21); -DEFINE_GUID(CLSID_DirectMusicCollection,0x480ff4b0, 0x28b2, 0x11d1, 0xbe, 0xf7, 0x0, 0xc0, 0x4f, 0xbf, 0x8f, 0xef); -DEFINE_GUID(CLSID_DirectMusicSynth,0x58C2B4D0,0x46E7,0x11D1,0x89,0xAC,0x00,0xA0,0xC9,0x05,0x41,0x29); - -DEFINE_GUID(IID_IDirectMusic,0x6536115a,0x7b2d,0x11d2,0xba,0x18,0x00,0x00,0xf8,0x75,0xac,0x12); -DEFINE_GUID(IID_IDirectMusicBuffer,0xd2ac2878, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); -DEFINE_GUID(IID_IDirectMusicPort, 0x08f2d8c9,0x37c2,0x11d2,0xb9,0xf9,0x00,0x00,0xf8,0x75,0xac,0x12); -DEFINE_GUID(IID_IDirectMusicThru, 0xced153e7, 0x3606, 0x11d2, 0xb9, 0xf9, 0x00, 0x00, 0xf8, 0x75, 0xac, 0x12); -DEFINE_GUID(IID_IDirectMusicPortDownload,0xd2ac287a, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); -DEFINE_GUID(IID_IDirectMusicDownload,0xd2ac287b, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); -DEFINE_GUID(IID_IDirectMusicCollection,0xd2ac287c, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); -DEFINE_GUID(IID_IDirectMusicInstrument,0xd2ac287d, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); -DEFINE_GUID(IID_IDirectMusicDownloadedInstrument,0xd2ac287e, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); - - -/* Alternate interface ID for IID_IDirectMusic, available in DX7 release and after. */ -DEFINE_GUID(IID_IDirectMusic2,0x6fc2cae1, 0xbc78, 0x11d2, 0xaf, 0xa6, 0x0, 0xaa, 0x0, 0x24, 0xd8, 0xb6); - -DEFINE_GUID(IID_IDirectMusic8,0x2d3629f7,0x813d,0x4939,0x85,0x08,0xf0,0x5c,0x6b,0x75,0xfd,0x97); - -#define IID_IDirectMusicThru8 IID_IDirectMusicThru -#define IID_IDirectMusicPortDownload8 IID_IDirectMusicPortDownload -#define IID_IDirectMusicDownload8 IID_IDirectMusicDownload -#define IID_IDirectMusicCollection8 IID_IDirectMusicCollection -#define IID_IDirectMusicInstrument8 IID_IDirectMusicInstrument -#define IID_IDirectMusicDownloadedInstrument8 IID_IDirectMusicDownloadedInstrument -#define IID_IDirectMusicPort8 IID_IDirectMusicPort - - -/* Property Query GUID_DMUS_PROP_GM_Hardware - Local GM set, no need to download - * Property Query GUID_DMUS_PROP_GS_Hardware - Local GS set, no need to download - * Property Query GUID_DMUS_PROP_XG_Hardware - Local XG set, no need to download - * Property Query GUID_DMUS_PROP_DLS1 - Support DLS level 1 - * Property Query GUID_DMUS_PROP_INSTRUMENT2 - Support new INSTRUMENT2 download format - * Property Query GUID_DMUS_PROP_XG_Capable - Support minimum requirements of XG - * Property Query GUID_DMUS_PROP_GS_Capable - Support minimum requirements of GS - * Property Query GUID_DMUS_PROP_SynthSink_DSOUND - Synthsink talks to DSound - * Property Query GUID_DMUS_PROP_SynthSink_WAVE - Synthsink talks to Wave device - * - * Item 0: Supported - * Returns a DWORD which is non-zero if the feature is supported - */ -DEFINE_GUID(GUID_DMUS_PROP_GM_Hardware, 0x178f2f24, 0xc364, 0x11d1, 0xa7, 0x60, 0x00, 0x00, 0xf8, 0x75, 0xac, 0x12); -DEFINE_GUID(GUID_DMUS_PROP_GS_Hardware, 0x178f2f25, 0xc364, 0x11d1, 0xa7, 0x60, 0x00, 0x00, 0xf8, 0x75, 0xac, 0x12); -DEFINE_GUID(GUID_DMUS_PROP_XG_Hardware, 0x178f2f26, 0xc364, 0x11d1, 0xa7, 0x60, 0x00, 0x00, 0xf8, 0x75, 0xac, 0x12); -DEFINE_GUID(GUID_DMUS_PROP_XG_Capable, 0x6496aba1, 0x61b0, 0x11d2, 0xaf, 0xa6, 0x0, 0xaa, 0x0, 0x24, 0xd8, 0xb6); -DEFINE_GUID(GUID_DMUS_PROP_GS_Capable, 0x6496aba2, 0x61b0, 0x11d2, 0xaf, 0xa6, 0x0, 0xaa, 0x0, 0x24, 0xd8, 0xb6); -DEFINE_GUID(GUID_DMUS_PROP_DLS1, 0x178f2f27, 0xc364, 0x11d1, 0xa7, 0x60, 0x00, 0x00, 0xf8, 0x75, 0xac, 0x12); -DEFINE_GUID(GUID_DMUS_PROP_DLS2, 0xf14599e5, 0x4689, 0x11d2, 0xaf, 0xa6, 0x0, 0xaa, 0x0, 0x24, 0xd8, 0xb6); -DEFINE_GUID(GUID_DMUS_PROP_INSTRUMENT2, 0x865fd372, 0x9f67, 0x11d2, 0x87, 0x2a, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); -DEFINE_GUID(GUID_DMUS_PROP_SynthSink_DSOUND,0xaa97844, 0xc877, 0x11d1, 0x87, 0xc, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); -DEFINE_GUID(GUID_DMUS_PROP_SynthSink_WAVE,0xaa97845, 0xc877, 0x11d1, 0x87, 0xc, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); -DEFINE_GUID(GUID_DMUS_PROP_SampleMemorySize, 0x178f2f28, 0xc364, 0x11d1, 0xa7, 0x60, 0x00, 0x00, 0xf8, 0x75, 0xac, 0x12); -DEFINE_GUID(GUID_DMUS_PROP_SamplePlaybackRate, 0x2a91f713, 0xa4bf, 0x11d2, 0xbb, 0xdf, 0x0, 0x60, 0x8, 0x33, 0xdb, 0xd8); - -/* Property Get/Set GUID_DMUS_PROP_WriteLatency - * - * Item 0: Synth buffer write latency, in milliseconds - * Get/Set SynthSink latency, the average time after the play head that the next buffer gets written. - */ -DEFINE_GUID(GUID_DMUS_PROP_WriteLatency,0x268a0fa0, 0x60f2, 0x11d2, 0xaf, 0xa6, 0x0, 0xaa, 0x0, 0x24, 0xd8, 0xb6); - -/* Property Get/Set GUID_DMUS_PROP_WritePeriod - * - * Item 0: Synth buffer write period, in milliseconds - * Get/Set SynthSink buffer write period, time span between successive writes. - */ -DEFINE_GUID(GUID_DMUS_PROP_WritePeriod,0x268a0fa1, 0x60f2, 0x11d2, 0xaf, 0xa6, 0x0, 0xaa, 0x0, 0x24, 0xd8, 0xb6); - -/* Property Get GUID_DMUS_PROP_MemorySize - * - * Item 0: Memory size - * Returns a DWORD containing the total number of bytes of sample RAM - */ -DEFINE_GUID(GUID_DMUS_PROP_MemorySize, 0x178f2f28, 0xc364, 0x11d1, 0xa7, 0x60, 0x00, 0x00, 0xf8, 0x75, 0xac, 0x12); - -/* Property Set GUID_DMUS_PROP_WavesReverb - * - * Item 0: DMUS_WAVES_REVERB structure - * Sets reverb parameters - */ -DEFINE_GUID(GUID_DMUS_PROP_WavesReverb,0x4cb5622, 0x32e5, 0x11d2, 0xaf, 0xa6, 0x0, 0xaa, 0x0, 0x24, 0xd8, 0xb6); - -/* Property Set GUID_DMUS_PROP_Effects - * - * Item 0: DWORD with effects flags. - * Get/Set effects bits, same as dwEffectFlags in DMUS_PORTPARAMS and DMUS_PORTCAPS: - * DMUS_EFFECT_NONE - * DMUS_EFFECT_REVERB - * DMUS_EFFECT_CHORUS - */ -DEFINE_GUID(GUID_DMUS_PROP_Effects, 0xcda8d611, 0x684a, 0x11d2, 0x87, 0x1e, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); - -/* Property Set GUID_DMUS_PROP_LegacyCaps - * - * Item 0: The MIDINCAPS or MIDIOUTCAPS which describes the port's underlying WinMM device. This property is only supported - * by ports which wrap WinMM devices. - */ - -DEFINE_GUID(GUID_DMUS_PROP_LegacyCaps,0xcfa7cdc2, 0x00a1, 0x11d2, 0xaa, 0xd5, 0x00, 0x00, 0xf8, 0x75, 0xac, 0x12); - -/* Property Set GUID_DMUS_PROP_Volume - * - * Item 0: A long which contains an offset, in 1/100 dB, to be added to the final volume - * - */ -DEFINE_GUID(GUID_DMUS_PROP_Volume, 0xfedfae25L, 0xe46e, 0x11d1, 0xaa, 0xce, 0x00, 0x00, 0xf8, 0x75, 0xac, 0x12); - -/* Min and Max values for setting volume with GUID_DMUS_PROP_Volume */ - -#define DMUS_VOLUME_MAX 2000 /* +20 dB */ -#define DMUS_VOLUME_MIN -20000 /* -200 dB */ - -#ifdef __cplusplus -}; /* extern "C" */ -#endif - -#include - -#endif /* #ifndef _DMUSICC_ */ +/************************************************************************ +* * +* dmusicc.h -- This module defines the DirectMusic core API's * +* * +* Copyright (c) Microsoft Corporation. All rights reserved. * +* * +************************************************************************/ + +#ifndef _DMUSICC_ +#define _DMUSICC_ + +#include + +#define COM_NO_WINDOWS_H +#include + +#include + +#include "dls1.h" +#include "dmerror.h" +#include "dmdls.h" +#include "dsound.h" +#include "dmusbuff.h" + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef ULONGLONG SAMPLE_TIME; +typedef ULONGLONG SAMPLE_POSITION; +typedef SAMPLE_TIME *LPSAMPLE_TIME; + +#define DMUS_MAX_DESCRIPTION 128 +#define DMUS_MAX_DRIVER 128 + +typedef struct _DMUS_BUFFERDESC *LPDMUS_BUFFERDESC; +typedef struct _DMUS_BUFFERDESC +{ + DWORD dwSize; + DWORD dwFlags; + GUID guidBufferFormat; + DWORD cbBuffer; +} DMUS_BUFFERDESC; + +/* DMUS_EFFECT_ flags are used in the dwEffectFlags fields of both DMUS_PORTCAPS + * and DMUS_PORTPARAMS. + */ +#define DMUS_EFFECT_NONE 0x00000000 +#define DMUS_EFFECT_REVERB 0x00000001 +#define DMUS_EFFECT_CHORUS 0x00000002 +#define DMUS_EFFECT_DELAY 0x00000004 + +/* For DMUS_PORTCAPS dwClass + */ +#define DMUS_PC_INPUTCLASS (0) +#define DMUS_PC_OUTPUTCLASS (1) + +/* For DMUS_PORTCAPS dwFlags + */ +#define DMUS_PC_DLS (0x00000001) // Supports DLS downloading and DLS level 1. +#define DMUS_PC_EXTERNAL (0x00000002) // External MIDI module. +#define DMUS_PC_SOFTWARESYNTH (0x00000004) // Software synthesizer. +#define DMUS_PC_MEMORYSIZEFIXED (0x00000008) // Memory size is fixed. +#define DMUS_PC_GMINHARDWARE (0x00000010) // GM sound set is built in, no need to download. +#define DMUS_PC_GSINHARDWARE (0x00000020) // GS sound set is built in. +#define DMUS_PC_XGINHARDWARE (0x00000040) // XG sound set is built in. +#define DMUS_PC_DIRECTSOUND (0x00000080) // Connects to DirectSound via a DSound buffer. +#define DMUS_PC_SHAREABLE (0x00000100) // Synth can be actively shared by multiple apps at once. +#define DMUS_PC_DLS2 (0x00000200) // Supports DLS2 instruments. +#define DMUS_PC_AUDIOPATH (0x00000400) // Multiple outputs can be connected to DirectSound for audiopaths. +#define DMUS_PC_WAVE (0x00000800) // Supports streaming and one shot waves. + +#define DMUS_PC_SYSTEMMEMORY (0x7FFFFFFF) // Sample memory is system memory. + + +typedef struct _DMUS_PORTCAPS +{ + DWORD dwSize; + DWORD dwFlags; + GUID guidPort; + DWORD dwClass; + DWORD dwType; + DWORD dwMemorySize; + DWORD dwMaxChannelGroups; + DWORD dwMaxVoices; + DWORD dwMaxAudioChannels; + DWORD dwEffectFlags; + WCHAR wszDescription[DMUS_MAX_DESCRIPTION]; +} DMUS_PORTCAPS; + +typedef DMUS_PORTCAPS *LPDMUS_PORTCAPS; + +/* Values for DMUS_PORTCAPS dwType. This field indicates the underlying + * driver type of the port. + */ +#define DMUS_PORT_WINMM_DRIVER (0) +#define DMUS_PORT_USER_MODE_SYNTH (1) +#define DMUS_PORT_KERNEL_MODE (2) + +/* These flags (set in dwValidParams) indicate which other members of the */ +/* DMUS_PORTPARAMS are valid. */ +/* */ +#define DMUS_PORTPARAMS_VOICES 0x00000001 +#define DMUS_PORTPARAMS_CHANNELGROUPS 0x00000002 +#define DMUS_PORTPARAMS_AUDIOCHANNELS 0x00000004 +#define DMUS_PORTPARAMS_SAMPLERATE 0x00000008 +#define DMUS_PORTPARAMS_EFFECTS 0x00000020 +#define DMUS_PORTPARAMS_SHARE 0x00000040 +#define DMUS_PORTPARAMS_FEATURES 0x00000080 /* DirectX 8.0 and above */ + +typedef struct _DMUS_PORTPARAMS +{ + DWORD dwSize; + DWORD dwValidParams; + DWORD dwVoices; + DWORD dwChannelGroups; + DWORD dwAudioChannels; + DWORD dwSampleRate; + DWORD dwEffectFlags; + BOOL fShare; +} DMUS_PORTPARAMS7; + +typedef struct _DMUS_PORTPARAMS8 +{ + DWORD dwSize; + DWORD dwValidParams; + DWORD dwVoices; + DWORD dwChannelGroups; + DWORD dwAudioChannels; + DWORD dwSampleRate; + DWORD dwEffectFlags; + BOOL fShare; + DWORD dwFeatures; +} DMUS_PORTPARAMS8; + +#define DMUS_PORT_FEATURE_AUDIOPATH 0x00000001 /* Supports audiopath connection to DSound buffers. */ +#define DMUS_PORT_FEATURE_STREAMING 0x00000002 /* Supports streaming waves through the synth. */ + + +typedef DMUS_PORTPARAMS8 DMUS_PORTPARAMS; +typedef DMUS_PORTPARAMS *LPDMUS_PORTPARAMS; + +typedef struct _DMUS_SYNTHSTATS *LPDMUS_SYNTHSTATS; +typedef struct _DMUS_SYNTHSTATS8 *LPDMUS_SYNTHSTATS8; +typedef struct _DMUS_SYNTHSTATS +{ + DWORD dwSize; /* Size in bytes of the structure */ + DWORD dwValidStats; /* Flags indicating which fields below are valid. */ + DWORD dwVoices; /* Average number of voices playing. */ + DWORD dwTotalCPU; /* Total CPU usage as percent * 100. */ + DWORD dwCPUPerVoice; /* CPU per voice as percent * 100. */ + DWORD dwLostNotes; /* Number of notes lost in 1 second. */ + DWORD dwFreeMemory; /* Free memory in bytes */ + long lPeakVolume; /* Decibel level * 100. */ +} DMUS_SYNTHSTATS; + +typedef struct _DMUS_SYNTHSTATS8 +{ + DWORD dwSize; /* Size in bytes of the structure */ + DWORD dwValidStats; /* Flags indicating which fields below are valid. */ + DWORD dwVoices; /* Average number of voices playing. */ + DWORD dwTotalCPU; /* Total CPU usage as percent * 100. */ + DWORD dwCPUPerVoice; /* CPU per voice as percent * 100. */ + DWORD dwLostNotes; /* Number of notes lost in 1 second. */ + DWORD dwFreeMemory; /* Free memory in bytes */ + long lPeakVolume; /* Decibel level * 100. */ + DWORD dwSynthMemUse; /* Memory used by synth wave data */ +} DMUS_SYNTHSTATS8; + +#define DMUS_SYNTHSTATS_VOICES (1 << 0) +#define DMUS_SYNTHSTATS_TOTAL_CPU (1 << 1) +#define DMUS_SYNTHSTATS_CPU_PER_VOICE (1 << 2) +#define DMUS_SYNTHSTATS_LOST_NOTES (1 << 3) +#define DMUS_SYNTHSTATS_PEAK_VOLUME (1 << 4) +#define DMUS_SYNTHSTATS_FREE_MEMORY (1 << 5) + +#define DMUS_SYNTHSTATS_SYSTEMMEMORY DMUS_PC_SYSTEMMEMORY + +typedef struct _DMUS_WAVES_REVERB_PARAMS +{ + float fInGain; /* Input gain in dB (to avoid output overflows) */ + float fReverbMix; /* Reverb mix in dB. 0dB means 100% wet reverb (no direct signal) + Negative values gives less wet signal. + The coeficients are calculated so that the overall output level stays + (approximately) constant regardless of the ammount of reverb mix. */ + float fReverbTime; /* The reverb decay time, in milliseconds. */ + float fHighFreqRTRatio; /* The ratio of the high frequencies to the global reverb time. + Unless very 'splashy-bright' reverbs are wanted, this should be set to + a value < 1.0. + For example if dRevTime==1000ms and dHighFreqRTRatio=0.1 than the + decay time for high frequencies will be 100ms.*/ + +} DMUS_WAVES_REVERB_PARAMS; + +/* Note: Default values for Reverb are: + fInGain = 0.0dB (no change in level) + fReverbMix = -10.0dB (a reasonable reverb mix) + fReverbTime = 1000.0ms (one second global reverb time) + fHighFreqRTRatio = 0.001 (the ratio of the high frequencies to the global reverb time) +*/ + +typedef enum +{ + DMUS_CLOCK_SYSTEM = 0, + DMUS_CLOCK_WAVE = 1 +} DMUS_CLOCKTYPE; + +#define DMUS_CLOCKF_GLOBAL 0x00000001 + +typedef struct _DMUS_CLOCKINFO7 *LPDMUS_CLOCKINFO7; +typedef struct _DMUS_CLOCKINFO7 +{ + DWORD dwSize; + DMUS_CLOCKTYPE ctType; + GUID guidClock; /* Identifies this time source */ + WCHAR wszDescription[DMUS_MAX_DESCRIPTION]; +} DMUS_CLOCKINFO7; + +typedef struct _DMUS_CLOCKINFO8 *LPDMUS_CLOCKINFO8; +typedef struct _DMUS_CLOCKINFO8 +{ + DWORD dwSize; + DMUS_CLOCKTYPE ctType; + GUID guidClock; /* Identifies this time source */ + WCHAR wszDescription[DMUS_MAX_DESCRIPTION]; + DWORD dwFlags; +} DMUS_CLOCKINFO8; + +typedef DMUS_CLOCKINFO8 DMUS_CLOCKINFO; +typedef DMUS_CLOCKINFO *LPDMUS_CLOCKINFO; + +/* Default bus identifiers + * + * The first 17 are direct mappings to the destinations defined in both + * the MMA DLS Level 2 specification and the Microsoft Multi-Channel audio + * specification. + */ +#define DSBUSID_FIRST_SPKR_LOC 0 +#define DSBUSID_FRONT_LEFT 0 +#define DSBUSID_LEFT 0 /* Front left is also just left */ +#define DSBUSID_FRONT_RIGHT 1 +#define DSBUSID_RIGHT 1 /* Ditto front right */ +#define DSBUSID_FRONT_CENTER 2 +#define DSBUSID_LOW_FREQUENCY 3 +#define DSBUSID_BACK_LEFT 4 +#define DSBUSID_BACK_RIGHT 5 +#define DSBUSID_FRONT_LEFT_OF_CENTER 6 +#define DSBUSID_FRONT_RIGHT_OF_CENTER 7 +#define DSBUSID_BACK_CENTER 8 +#define DSBUSID_SIDE_LEFT 9 +#define DSBUSID_SIDE_RIGHT 10 +#define DSBUSID_TOP_CENTER 11 +#define DSBUSID_TOP_FRONT_LEFT 12 +#define DSBUSID_TOP_FRONT_CENTER 13 +#define DSBUSID_TOP_FRONT_RIGHT 14 +#define DSBUSID_TOP_BACK_LEFT 15 +#define DSBUSID_TOP_BACK_CENTER 16 +#define DSBUSID_TOP_BACK_RIGHT 17 +#define DSBUSID_LAST_SPKR_LOC 17 + +#define DSBUSID_IS_SPKR_LOC(id) ( ((id) >= DSBUSID_FIRST_SPKR_LOC) && ((id) <= DSBUSID_LAST_SPKR_LOC) ) + +/* These bus identifiers are for the standard DLS effect sends + */ +#define DSBUSID_REVERB_SEND 64 +#define DSBUSID_CHORUS_SEND 65 + +/* Dynamic bus identifiers start here. See the documentation for how + * synthesizers map the output of voices to static and dynamic + * bus identifiers. + */ +#define DSBUSID_DYNAMIC_0 512 + +/* Null bus, used to identify busses that have no function mapping. +*/ +#define DSBUSID_NULL 0xFFFFFFFF + +interface IDirectMusic; +interface IDirectMusic8; +interface IDirectMusicBuffer; +interface IDirectMusicPort; +interface IDirectMusicThru; +interface IReferenceClock; + +#ifndef __cplusplus + +typedef interface IDirectMusic IDirectMusic; +typedef interface IDirectMusic8 IDirectMusic8; +typedef interface IDirectMusicPort IDirectMusicPort; +typedef interface IDirectMusicBuffer IDirectMusicBuffer; +typedef interface IDirectMusicThru IDirectMusicThru; +typedef interface IReferenceClock IReferenceClock; + +#endif /* C++ */ + +typedef IDirectMusic *LPDIRECTMUSIC; +typedef IDirectMusic8 *LPDIRECTMUSIC8; +typedef IDirectMusicPort *LPDIRECTMUSICPORT; +typedef IDirectMusicBuffer *LPDIRECTMUSICBUFFER; + +#undef INTERFACE +#define INTERFACE IDirectMusic +DECLARE_INTERFACE_(IDirectMusic, IUnknown) +{ + /* IUnknown */ + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + /* IDirectMusic */ + STDMETHOD(EnumPort) (THIS_ DWORD dwIndex, + LPDMUS_PORTCAPS pPortCaps) PURE; + STDMETHOD(CreateMusicBuffer) (THIS_ LPDMUS_BUFFERDESC pBufferDesc, + LPDIRECTMUSICBUFFER *ppBuffer, + LPUNKNOWN pUnkOuter) PURE; + STDMETHOD(CreatePort) (THIS_ REFCLSID rclsidPort, + LPDMUS_PORTPARAMS pPortParams, + LPDIRECTMUSICPORT *ppPort, + LPUNKNOWN pUnkOuter) PURE; + STDMETHOD(EnumMasterClock) (THIS_ DWORD dwIndex, + LPDMUS_CLOCKINFO lpClockInfo) PURE; + STDMETHOD(GetMasterClock) (THIS_ LPGUID pguidClock, + IReferenceClock **ppReferenceClock) PURE; + STDMETHOD(SetMasterClock) (THIS_ REFGUID rguidClock) PURE; + STDMETHOD(Activate) (THIS_ BOOL fEnable) PURE; + STDMETHOD(GetDefaultPort) (THIS_ LPGUID pguidPort) PURE; + STDMETHOD(SetDirectSound) (THIS_ LPDIRECTSOUND pDirectSound, + HWND hWnd) PURE; +}; + +#undef INTERFACE +#define INTERFACE IDirectMusic8 +DECLARE_INTERFACE_(IDirectMusic8, IDirectMusic) +{ + /* IUnknown */ + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + /* IDirectMusic */ + STDMETHOD(EnumPort) (THIS_ DWORD dwIndex, + LPDMUS_PORTCAPS pPortCaps) PURE; + STDMETHOD(CreateMusicBuffer) (THIS_ LPDMUS_BUFFERDESC pBufferDesc, + LPDIRECTMUSICBUFFER *ppBuffer, + LPUNKNOWN pUnkOuter) PURE; + STDMETHOD(CreatePort) (THIS_ REFCLSID rclsidPort, + LPDMUS_PORTPARAMS pPortParams, + LPDIRECTMUSICPORT *ppPort, + LPUNKNOWN pUnkOuter) PURE; + STDMETHOD(EnumMasterClock) (THIS_ DWORD dwIndex, + LPDMUS_CLOCKINFO lpClockInfo) PURE; + STDMETHOD(GetMasterClock) (THIS_ LPGUID pguidClock, + IReferenceClock **ppReferenceClock) PURE; + STDMETHOD(SetMasterClock) (THIS_ REFGUID rguidClock) PURE; + STDMETHOD(Activate) (THIS_ BOOL fEnable) PURE; + STDMETHOD(GetDefaultPort) (THIS_ LPGUID pguidPort) PURE; + STDMETHOD(SetDirectSound) (THIS_ LPDIRECTSOUND pDirectSound, + HWND hWnd) PURE; + /* IDirectMusic8 */ + STDMETHOD(SetExternalMasterClock) + (THIS_ IReferenceClock *pClock) PURE; +}; + +#undef INTERFACE +#define INTERFACE IDirectMusicBuffer +DECLARE_INTERFACE_(IDirectMusicBuffer, IUnknown) +{ + /* IUnknown */ + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + /* IDirectMusicBuffer */ + STDMETHOD(Flush) (THIS) PURE; + STDMETHOD(TotalTime) (THIS_ LPREFERENCE_TIME prtTime) PURE; + + STDMETHOD(PackStructured) (THIS_ REFERENCE_TIME rt, + DWORD dwChannelGroup, + DWORD dwChannelMessage) PURE; + + STDMETHOD(PackUnstructured) (THIS_ REFERENCE_TIME rt, + DWORD dwChannelGroup, + DWORD cb, + LPBYTE lpb) PURE; + + STDMETHOD(ResetReadPtr) (THIS) PURE; + STDMETHOD(GetNextEvent) (THIS_ LPREFERENCE_TIME prt, + LPDWORD pdwChannelGroup, + LPDWORD pdwLength, + LPBYTE *ppData) PURE; + + STDMETHOD(GetRawBufferPtr) (THIS_ LPBYTE *ppData) PURE; + STDMETHOD(GetStartTime) (THIS_ LPREFERENCE_TIME prt) PURE; + STDMETHOD(GetUsedBytes) (THIS_ LPDWORD pcb) PURE; + STDMETHOD(GetMaxBytes) (THIS_ LPDWORD pcb) PURE; + STDMETHOD(GetBufferFormat) (THIS_ LPGUID pGuidFormat) PURE; + + STDMETHOD(SetStartTime) (THIS_ REFERENCE_TIME rt) PURE; + STDMETHOD(SetUsedBytes) (THIS_ DWORD cb) PURE; +}; + +typedef IDirectMusicBuffer IDirectMusicBuffer8; +typedef IDirectMusicBuffer8 *LPDIRECTMUSICBUFFER8; + +#undef INTERFACE +#define INTERFACE IDirectMusicInstrument +DECLARE_INTERFACE_(IDirectMusicInstrument, IUnknown) +{ + /* IUnknown */ + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + /* IDirectMusicInstrument */ + STDMETHOD(GetPatch) (THIS_ DWORD* pdwPatch) PURE; + STDMETHOD(SetPatch) (THIS_ DWORD dwPatch) PURE; +}; + +typedef IDirectMusicInstrument IDirectMusicInstrument8; +typedef IDirectMusicInstrument8 *LPDIRECTMUSICINSTRUMENT8; + +#undef INTERFACE +#define INTERFACE IDirectMusicDownloadedInstrument +DECLARE_INTERFACE_(IDirectMusicDownloadedInstrument, IUnknown) +{ + /* IUnknown */ + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + /* IDirectMusicDownloadedInstrument */ + /* None at this time */ +}; + +typedef IDirectMusicDownloadedInstrument IDirectMusicDownloadedInstrument8; +typedef IDirectMusicDownloadedInstrument8 *LPDIRECTMUSICDOWNLOADEDINSTRUMENT8; + +#undef INTERFACE +#define INTERFACE IDirectMusicCollection +DECLARE_INTERFACE_(IDirectMusicCollection, IUnknown) +{ + /* IUnknown */ + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + /* IDirectMusicCollection */ + STDMETHOD(GetInstrument) (THIS_ DWORD dwPatch, + IDirectMusicInstrument** ppInstrument) PURE; + STDMETHOD(EnumInstrument) (THIS_ DWORD dwIndex, + DWORD* pdwPatch, + LPWSTR pwszName, + DWORD dwNameLen) PURE; +}; + +typedef IDirectMusicCollection IDirectMusicCollection8; +typedef IDirectMusicCollection8 *LPDIRECTMUSICCOLLECTION8; + +#undef INTERFACE +#define INTERFACE IDirectMusicDownload +DECLARE_INTERFACE_(IDirectMusicDownload , IUnknown) +{ + /* IUnknown */ + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + /* IDirectMusicDownload */ + STDMETHOD(GetBuffer) (THIS_ void** ppvBuffer, + DWORD* pdwSize) PURE; +}; + +typedef IDirectMusicDownload IDirectMusicDownload8; +typedef IDirectMusicDownload8 *LPDIRECTMUSICDOWNLOAD8; + +#undef INTERFACE +#define INTERFACE IDirectMusicPortDownload +DECLARE_INTERFACE_(IDirectMusicPortDownload, IUnknown) +{ + /* IUnknown */ + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + /* IDirectMusicPortDownload */ + STDMETHOD(GetBuffer) (THIS_ DWORD dwDLId, + IDirectMusicDownload** ppIDMDownload) PURE; + STDMETHOD(AllocateBuffer) (THIS_ DWORD dwSize, + IDirectMusicDownload** ppIDMDownload) PURE; + STDMETHOD(GetDLId) (THIS_ DWORD* pdwStartDLId, + DWORD dwCount) PURE; + STDMETHOD(GetAppend) (THIS_ DWORD* pdwAppend) PURE; + STDMETHOD(Download) (THIS_ IDirectMusicDownload* pIDMDownload) PURE; + STDMETHOD(Unload) (THIS_ IDirectMusicDownload* pIDMDownload) PURE; +}; + +typedef IDirectMusicPortDownload IDirectMusicPortDownload8; +typedef IDirectMusicPortDownload8 *LPDIRECTMUSICPORTDOWNLOAD8; + +/* Standard values for voice priorities. Numerically higher priorities are higher in priority. + * These priorities are used to set the voice priority for all voices on a channel. They are + * used in the dwPriority parameter of IDirectMusicPort::GetPriority and returned in the + * lpwPriority parameter of pdwPriority. + * + * These priorities are shared with DirectSound. + */ + +#ifndef _DIRECTAUDIO_PRIORITIES_DEFINED_ +#define _DIRECTAUDIO_PRIORITIES_DEFINED_ + +#define DAUD_CRITICAL_VOICE_PRIORITY (0xF0000000) +#define DAUD_HIGH_VOICE_PRIORITY (0xC0000000) +#define DAUD_STANDARD_VOICE_PRIORITY (0x80000000) +#define DAUD_LOW_VOICE_PRIORITY (0x40000000) +#define DAUD_PERSIST_VOICE_PRIORITY (0x10000000) + +/* These are the default priorities assigned if not overridden. By default priorities are + * equal across channel groups (e.g. channel 5 on channel group 1 has the same priority as + * channel 5 on channel group 2). + * + * In accordance with DLS level 1, channel 10 has the highest priority, followed by 1 through 16 + * except for 10. + */ +#define DAUD_CHAN1_VOICE_PRIORITY_OFFSET (0x0000000E) +#define DAUD_CHAN2_VOICE_PRIORITY_OFFSET (0x0000000D) +#define DAUD_CHAN3_VOICE_PRIORITY_OFFSET (0x0000000C) +#define DAUD_CHAN4_VOICE_PRIORITY_OFFSET (0x0000000B) +#define DAUD_CHAN5_VOICE_PRIORITY_OFFSET (0x0000000A) +#define DAUD_CHAN6_VOICE_PRIORITY_OFFSET (0x00000009) +#define DAUD_CHAN7_VOICE_PRIORITY_OFFSET (0x00000008) +#define DAUD_CHAN8_VOICE_PRIORITY_OFFSET (0x00000007) +#define DAUD_CHAN9_VOICE_PRIORITY_OFFSET (0x00000006) +#define DAUD_CHAN10_VOICE_PRIORITY_OFFSET (0x0000000F) +#define DAUD_CHAN11_VOICE_PRIORITY_OFFSET (0x00000005) +#define DAUD_CHAN12_VOICE_PRIORITY_OFFSET (0x00000004) +#define DAUD_CHAN13_VOICE_PRIORITY_OFFSET (0x00000003) +#define DAUD_CHAN14_VOICE_PRIORITY_OFFSET (0x00000002) +#define DAUD_CHAN15_VOICE_PRIORITY_OFFSET (0x00000001) +#define DAUD_CHAN16_VOICE_PRIORITY_OFFSET (0x00000000) + + +#define DAUD_CHAN1_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN1_VOICE_PRIORITY_OFFSET) +#define DAUD_CHAN2_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN2_VOICE_PRIORITY_OFFSET) +#define DAUD_CHAN3_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN3_VOICE_PRIORITY_OFFSET) +#define DAUD_CHAN4_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN4_VOICE_PRIORITY_OFFSET) +#define DAUD_CHAN5_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN5_VOICE_PRIORITY_OFFSET) +#define DAUD_CHAN6_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN6_VOICE_PRIORITY_OFFSET) +#define DAUD_CHAN7_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN7_VOICE_PRIORITY_OFFSET) +#define DAUD_CHAN8_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN8_VOICE_PRIORITY_OFFSET) +#define DAUD_CHAN9_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN9_VOICE_PRIORITY_OFFSET) +#define DAUD_CHAN10_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN10_VOICE_PRIORITY_OFFSET) +#define DAUD_CHAN11_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN11_VOICE_PRIORITY_OFFSET) +#define DAUD_CHAN12_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN12_VOICE_PRIORITY_OFFSET) +#define DAUD_CHAN13_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN13_VOICE_PRIORITY_OFFSET) +#define DAUD_CHAN14_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN14_VOICE_PRIORITY_OFFSET) +#define DAUD_CHAN15_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN15_VOICE_PRIORITY_OFFSET) +#define DAUD_CHAN16_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN16_VOICE_PRIORITY_OFFSET) + +#endif /* _DIRECTAUDIO_PRIORITIES_DEFINED_ */ + + +#undef INTERFACE +#define INTERFACE IDirectMusicPort +DECLARE_INTERFACE_(IDirectMusicPort, IUnknown) +{ + /* IUnknown */ + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + /* IDirectMusicPort */ + /* */ + STDMETHOD(PlayBuffer) (THIS_ LPDIRECTMUSICBUFFER pBuffer) PURE; + STDMETHOD(SetReadNotificationHandle) (THIS_ HANDLE hEvent) PURE; + STDMETHOD(Read) (THIS_ LPDIRECTMUSICBUFFER pBuffer) PURE; + STDMETHOD(DownloadInstrument) (THIS_ IDirectMusicInstrument *pInstrument, + IDirectMusicDownloadedInstrument **ppDownloadedInstrument, + DMUS_NOTERANGE *pNoteRanges, + DWORD dwNumNoteRanges) PURE; + STDMETHOD(UnloadInstrument) (THIS_ IDirectMusicDownloadedInstrument *pDownloadedInstrument) PURE; + STDMETHOD(GetLatencyClock) (THIS_ IReferenceClock **ppClock) PURE; + STDMETHOD(GetRunningStats) (THIS_ LPDMUS_SYNTHSTATS pStats) PURE; + STDMETHOD(Compact) (THIS) PURE; + STDMETHOD(GetCaps) (THIS_ LPDMUS_PORTCAPS pPortCaps) PURE; + STDMETHOD(DeviceIoControl) (THIS_ DWORD dwIoControlCode, + LPVOID lpInBuffer, + DWORD nInBufferSize, + LPVOID lpOutBuffer, + DWORD nOutBufferSize, + LPDWORD lpBytesReturned, + LPOVERLAPPED lpOverlapped) PURE; + STDMETHOD(SetNumChannelGroups) (THIS_ DWORD dwChannelGroups) PURE; + STDMETHOD(GetNumChannelGroups) (THIS_ LPDWORD pdwChannelGroups) PURE; + STDMETHOD(Activate) (THIS_ BOOL fActive) PURE; + STDMETHOD(SetChannelPriority) (THIS_ DWORD dwChannelGroup, DWORD dwChannel, DWORD dwPriority) PURE; + STDMETHOD(GetChannelPriority) (THIS_ DWORD dwChannelGroup, DWORD dwChannel, LPDWORD pdwPriority) PURE; + STDMETHOD(SetDirectSound) (THIS_ LPDIRECTSOUND pDirectSound, LPDIRECTSOUNDBUFFER pDirectSoundBuffer) PURE; + STDMETHOD(GetFormat) (THIS_ LPWAVEFORMATEX pWaveFormatEx, LPDWORD pdwWaveFormatExSize, LPDWORD pdwBufferSize) PURE; +}; + +typedef IDirectMusicPort IDirectMusicPort8; +typedef IDirectMusicPort8 *LPDIRECTMUSICPORT8; + +#undef INTERFACE +#define INTERFACE IDirectMusicThru +DECLARE_INTERFACE_(IDirectMusicThru, IUnknown) +{ + /* IUnknown */ + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + /* IDirectMusicThru + */ + STDMETHOD(ThruChannel) (THIS_ DWORD dwSourceChannelGroup, + DWORD dwSourceChannel, + DWORD dwDestinationChannelGroup, + DWORD dwDestinationChannel, + LPDIRECTMUSICPORT pDestinationPort) PURE; +}; + +typedef IDirectMusicThru IDirectMusicThru8; +typedef IDirectMusicThru8 *LPDIRECTMUSICTHRU8; + +#ifndef __IReferenceClock_INTERFACE_DEFINED__ +#define __IReferenceClock_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IReferenceClock,0x56a86897,0x0ad4,0x11ce,0xb0,0x3a,0x00,0x20,0xaf,0x0b,0xa7,0x70); + +#undef INTERFACE +#define INTERFACE IReferenceClock +DECLARE_INTERFACE_(IReferenceClock, IUnknown) +{ + /* IUnknown */ + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + /* IReferenceClock */ + /* */ + + /* get the time now */ + STDMETHOD(GetTime) (THIS_ REFERENCE_TIME *pTime) PURE; + + /* ask for an async notification that a time has elapsed */ + STDMETHOD(AdviseTime) (THIS_ REFERENCE_TIME baseTime, /* base time */ + REFERENCE_TIME streamTime, /* stream offset time */ + HANDLE hEvent, /* advise via this event */ + DWORD * pdwAdviseCookie) PURE; /* where your cookie goes */ + + /* ask for an async periodic notification that a time has elapsed */ + STDMETHOD(AdvisePeriodic) (THIS_ REFERENCE_TIME startTime, /* starting at this time */ + REFERENCE_TIME periodTime, /* time between notifications */ + HANDLE hSemaphore, /* advise via a semaphore */ + DWORD * pdwAdviseCookie) PURE; /* where your cookie goes */ + + /* cancel a request for notification */ + STDMETHOD(Unadvise) (THIS_ DWORD dwAdviseCookie) PURE; +}; + +#endif /* __IReferenceClock_INTERFACE_DEFINED__ */ + +DEFINE_GUID(CLSID_DirectMusic,0x636b9f10,0x0c7d,0x11d1,0x95,0xb2,0x00,0x20,0xaf,0xdc,0x74,0x21); +DEFINE_GUID(CLSID_DirectMusicCollection,0x480ff4b0, 0x28b2, 0x11d1, 0xbe, 0xf7, 0x0, 0xc0, 0x4f, 0xbf, 0x8f, 0xef); +DEFINE_GUID(CLSID_DirectMusicSynth,0x58C2B4D0,0x46E7,0x11D1,0x89,0xAC,0x00,0xA0,0xC9,0x05,0x41,0x29); + +DEFINE_GUID(IID_IDirectMusic,0x6536115a,0x7b2d,0x11d2,0xba,0x18,0x00,0x00,0xf8,0x75,0xac,0x12); +DEFINE_GUID(IID_IDirectMusicBuffer,0xd2ac2878, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); +DEFINE_GUID(IID_IDirectMusicPort, 0x08f2d8c9,0x37c2,0x11d2,0xb9,0xf9,0x00,0x00,0xf8,0x75,0xac,0x12); +DEFINE_GUID(IID_IDirectMusicThru, 0xced153e7, 0x3606, 0x11d2, 0xb9, 0xf9, 0x00, 0x00, 0xf8, 0x75, 0xac, 0x12); +DEFINE_GUID(IID_IDirectMusicPortDownload,0xd2ac287a, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); +DEFINE_GUID(IID_IDirectMusicDownload,0xd2ac287b, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); +DEFINE_GUID(IID_IDirectMusicCollection,0xd2ac287c, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); +DEFINE_GUID(IID_IDirectMusicInstrument,0xd2ac287d, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); +DEFINE_GUID(IID_IDirectMusicDownloadedInstrument,0xd2ac287e, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); + + +/* Alternate interface ID for IID_IDirectMusic, available in DX7 release and after. */ +DEFINE_GUID(IID_IDirectMusic2,0x6fc2cae1, 0xbc78, 0x11d2, 0xaf, 0xa6, 0x0, 0xaa, 0x0, 0x24, 0xd8, 0xb6); + +DEFINE_GUID(IID_IDirectMusic8,0x2d3629f7,0x813d,0x4939,0x85,0x08,0xf0,0x5c,0x6b,0x75,0xfd,0x97); + +#define IID_IDirectMusicThru8 IID_IDirectMusicThru +#define IID_IDirectMusicPortDownload8 IID_IDirectMusicPortDownload +#define IID_IDirectMusicDownload8 IID_IDirectMusicDownload +#define IID_IDirectMusicCollection8 IID_IDirectMusicCollection +#define IID_IDirectMusicInstrument8 IID_IDirectMusicInstrument +#define IID_IDirectMusicDownloadedInstrument8 IID_IDirectMusicDownloadedInstrument +#define IID_IDirectMusicPort8 IID_IDirectMusicPort + + +/* Property Query GUID_DMUS_PROP_GM_Hardware - Local GM set, no need to download + * Property Query GUID_DMUS_PROP_GS_Hardware - Local GS set, no need to download + * Property Query GUID_DMUS_PROP_XG_Hardware - Local XG set, no need to download + * Property Query GUID_DMUS_PROP_DLS1 - Support DLS level 1 + * Property Query GUID_DMUS_PROP_INSTRUMENT2 - Support new INSTRUMENT2 download format + * Property Query GUID_DMUS_PROP_XG_Capable - Support minimum requirements of XG + * Property Query GUID_DMUS_PROP_GS_Capable - Support minimum requirements of GS + * Property Query GUID_DMUS_PROP_SynthSink_DSOUND - Synthsink talks to DSound + * Property Query GUID_DMUS_PROP_SynthSink_WAVE - Synthsink talks to Wave device + * + * Item 0: Supported + * Returns a DWORD which is non-zero if the feature is supported + */ +DEFINE_GUID(GUID_DMUS_PROP_GM_Hardware, 0x178f2f24, 0xc364, 0x11d1, 0xa7, 0x60, 0x00, 0x00, 0xf8, 0x75, 0xac, 0x12); +DEFINE_GUID(GUID_DMUS_PROP_GS_Hardware, 0x178f2f25, 0xc364, 0x11d1, 0xa7, 0x60, 0x00, 0x00, 0xf8, 0x75, 0xac, 0x12); +DEFINE_GUID(GUID_DMUS_PROP_XG_Hardware, 0x178f2f26, 0xc364, 0x11d1, 0xa7, 0x60, 0x00, 0x00, 0xf8, 0x75, 0xac, 0x12); +DEFINE_GUID(GUID_DMUS_PROP_XG_Capable, 0x6496aba1, 0x61b0, 0x11d2, 0xaf, 0xa6, 0x0, 0xaa, 0x0, 0x24, 0xd8, 0xb6); +DEFINE_GUID(GUID_DMUS_PROP_GS_Capable, 0x6496aba2, 0x61b0, 0x11d2, 0xaf, 0xa6, 0x0, 0xaa, 0x0, 0x24, 0xd8, 0xb6); +DEFINE_GUID(GUID_DMUS_PROP_DLS1, 0x178f2f27, 0xc364, 0x11d1, 0xa7, 0x60, 0x00, 0x00, 0xf8, 0x75, 0xac, 0x12); +DEFINE_GUID(GUID_DMUS_PROP_DLS2, 0xf14599e5, 0x4689, 0x11d2, 0xaf, 0xa6, 0x0, 0xaa, 0x0, 0x24, 0xd8, 0xb6); +DEFINE_GUID(GUID_DMUS_PROP_INSTRUMENT2, 0x865fd372, 0x9f67, 0x11d2, 0x87, 0x2a, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); +DEFINE_GUID(GUID_DMUS_PROP_SynthSink_DSOUND,0xaa97844, 0xc877, 0x11d1, 0x87, 0xc, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); +DEFINE_GUID(GUID_DMUS_PROP_SynthSink_WAVE,0xaa97845, 0xc877, 0x11d1, 0x87, 0xc, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); +DEFINE_GUID(GUID_DMUS_PROP_SampleMemorySize, 0x178f2f28, 0xc364, 0x11d1, 0xa7, 0x60, 0x00, 0x00, 0xf8, 0x75, 0xac, 0x12); +DEFINE_GUID(GUID_DMUS_PROP_SamplePlaybackRate, 0x2a91f713, 0xa4bf, 0x11d2, 0xbb, 0xdf, 0x0, 0x60, 0x8, 0x33, 0xdb, 0xd8); + +/* Property Get/Set GUID_DMUS_PROP_WriteLatency + * + * Item 0: Synth buffer write latency, in milliseconds + * Get/Set SynthSink latency, the average time after the play head that the next buffer gets written. + */ +DEFINE_GUID(GUID_DMUS_PROP_WriteLatency,0x268a0fa0, 0x60f2, 0x11d2, 0xaf, 0xa6, 0x0, 0xaa, 0x0, 0x24, 0xd8, 0xb6); + +/* Property Get/Set GUID_DMUS_PROP_WritePeriod + * + * Item 0: Synth buffer write period, in milliseconds + * Get/Set SynthSink buffer write period, time span between successive writes. + */ +DEFINE_GUID(GUID_DMUS_PROP_WritePeriod,0x268a0fa1, 0x60f2, 0x11d2, 0xaf, 0xa6, 0x0, 0xaa, 0x0, 0x24, 0xd8, 0xb6); + +/* Property Get GUID_DMUS_PROP_MemorySize + * + * Item 0: Memory size + * Returns a DWORD containing the total number of bytes of sample RAM + */ +DEFINE_GUID(GUID_DMUS_PROP_MemorySize, 0x178f2f28, 0xc364, 0x11d1, 0xa7, 0x60, 0x00, 0x00, 0xf8, 0x75, 0xac, 0x12); + +/* Property Set GUID_DMUS_PROP_WavesReverb + * + * Item 0: DMUS_WAVES_REVERB structure + * Sets reverb parameters + */ +DEFINE_GUID(GUID_DMUS_PROP_WavesReverb,0x4cb5622, 0x32e5, 0x11d2, 0xaf, 0xa6, 0x0, 0xaa, 0x0, 0x24, 0xd8, 0xb6); + +/* Property Set GUID_DMUS_PROP_Effects + * + * Item 0: DWORD with effects flags. + * Get/Set effects bits, same as dwEffectFlags in DMUS_PORTPARAMS and DMUS_PORTCAPS: + * DMUS_EFFECT_NONE + * DMUS_EFFECT_REVERB + * DMUS_EFFECT_CHORUS + */ +DEFINE_GUID(GUID_DMUS_PROP_Effects, 0xcda8d611, 0x684a, 0x11d2, 0x87, 0x1e, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); + +/* Property Set GUID_DMUS_PROP_LegacyCaps + * + * Item 0: The MIDINCAPS or MIDIOUTCAPS which describes the port's underlying WinMM device. This property is only supported + * by ports which wrap WinMM devices. + */ + +DEFINE_GUID(GUID_DMUS_PROP_LegacyCaps,0xcfa7cdc2, 0x00a1, 0x11d2, 0xaa, 0xd5, 0x00, 0x00, 0xf8, 0x75, 0xac, 0x12); + +/* Property Set GUID_DMUS_PROP_Volume + * + * Item 0: A long which contains an offset, in 1/100 dB, to be added to the final volume + * + */ +DEFINE_GUID(GUID_DMUS_PROP_Volume, 0xfedfae25L, 0xe46e, 0x11d1, 0xaa, 0xce, 0x00, 0x00, 0xf8, 0x75, 0xac, 0x12); + +/* Min and Max values for setting volume with GUID_DMUS_PROP_Volume */ + +#define DMUS_VOLUME_MAX 2000 /* +20 dB */ +#define DMUS_VOLUME_MIN -20000 /* -200 dB */ + +#ifdef __cplusplus +}; /* extern "C" */ +#endif + +#include + +#endif /* #ifndef _DMUSICC_ */ diff --git a/videoInputSrcAndDemos/libs/DShow/Include/dmusicf.h b/videoInputSrcAndDemos/libs/DShow/Include/dmusicf.h index 3114269..195edd7 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/dmusicf.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/dmusicf.h @@ -1,2199 +1,2199 @@ -/************************************************************************ -* * -* dmusicf.h -- This module defines the DirectMusic file formats * -* * -* Copyright (c) Microsoft Corporation. All rights reserved. * -* * -************************************************************************/ - -#ifndef _DMUSICF_ -#define _DMUSICF_ - - -#include - -#define COM_NO_WINDOWS_H -#include - -#include - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -interface IDirectMusicCollection; -#ifndef __cplusplus -typedef interface IDirectMusicCollection IDirectMusicCollection; -#endif - -/* Common chunks */ - -#define DMUS_FOURCC_GUID_CHUNK mmioFOURCC('g','u','i','d') -#define DMUS_FOURCC_INFO_LIST mmioFOURCC('I','N','F','O') -#define DMUS_FOURCC_UNFO_LIST mmioFOURCC('U','N','F','O') -#define DMUS_FOURCC_UNAM_CHUNK mmioFOURCC('U','N','A','M') -#define DMUS_FOURCC_UART_CHUNK mmioFOURCC('U','A','R','T') -#define DMUS_FOURCC_UCOP_CHUNK mmioFOURCC('U','C','O','P') -#define DMUS_FOURCC_USBJ_CHUNK mmioFOURCC('U','S','B','J') -#define DMUS_FOURCC_UCMT_CHUNK mmioFOURCC('U','C','M','T') -#define DMUS_FOURCC_CATEGORY_CHUNK mmioFOURCC('c','a','t','g') -#define DMUS_FOURCC_VERSION_CHUNK mmioFOURCC('v','e','r','s') - -/* The following structures are used by the Tracks, and are the packed structures */ -/* that are passed to the Tracks inside the IStream. */ - - -typedef struct _DMUS_IO_SEQ_ITEM -{ - MUSIC_TIME mtTime; - MUSIC_TIME mtDuration; - DWORD dwPChannel; - short nOffset; - BYTE bStatus; - BYTE bByte1; - BYTE bByte2; -} DMUS_IO_SEQ_ITEM; - - -typedef struct _DMUS_IO_CURVE_ITEM -{ - MUSIC_TIME mtStart; - MUSIC_TIME mtDuration; - MUSIC_TIME mtResetDuration; - DWORD dwPChannel; - short nOffset; - short nStartValue; - short nEndValue; - short nResetValue; - BYTE bType; - BYTE bCurveShape; - BYTE bCCData; - BYTE bFlags; - /* Following was added for DX8. */ - WORD wParamType; /* RPN or NRPN parameter number. */ - WORD wMergeIndex; /* Allows multiple parameters to be merged (pitchbend, volume, and expression.) */ -} DMUS_IO_CURVE_ITEM; - - -typedef struct _DMUS_IO_TEMPO_ITEM -{ - MUSIC_TIME lTime; - double dblTempo; -} DMUS_IO_TEMPO_ITEM; - - -typedef struct _DMUS_IO_SYSEX_ITEM -{ - MUSIC_TIME mtTime; - DWORD dwPChannel; - DWORD dwSysExLength; -} DMUS_IO_SYSEX_ITEM; - -typedef DMUS_CHORD_KEY DMUS_CHORD_PARAM; /* DMUS_CHORD_KEY defined in dmusici.h */ - -typedef struct _DMUS_RHYTHM_PARAM -{ - DMUS_TIMESIGNATURE TimeSig; - DWORD dwRhythmPattern; -} DMUS_RHYTHM_PARAM; - -typedef struct _DMUS_TEMPO_PARAM -{ - MUSIC_TIME mtTime; - double dblTempo; -} DMUS_TEMPO_PARAM; - - -typedef struct _DMUS_MUTE_PARAM -{ - DWORD dwPChannel; - DWORD dwPChannelMap; - BOOL fMute; -} DMUS_MUTE_PARAM; - -/* Style chunks */ - -#define DMUS_FOURCC_STYLE_FORM mmioFOURCC('D','M','S','T') -#define DMUS_FOURCC_STYLE_CHUNK mmioFOURCC('s','t','y','h') -#define DMUS_FOURCC_PART_LIST mmioFOURCC('p','a','r','t') -#define DMUS_FOURCC_PART_CHUNK mmioFOURCC('p','r','t','h') -#define DMUS_FOURCC_NOTE_CHUNK mmioFOURCC('n','o','t','e') -#define DMUS_FOURCC_CURVE_CHUNK mmioFOURCC('c','r','v','e') -#define DMUS_FOURCC_MARKER_CHUNK mmioFOURCC('m','r','k','r') -#define DMUS_FOURCC_RESOLUTION_CHUNK mmioFOURCC('r','s','l','n') -#define DMUS_FOURCC_ANTICIPATION_CHUNK mmioFOURCC('a','n','p','n') -#define DMUS_FOURCC_PATTERN_LIST mmioFOURCC('p','t','t','n') -#define DMUS_FOURCC_PATTERN_CHUNK mmioFOURCC('p','t','n','h') -#define DMUS_FOURCC_RHYTHM_CHUNK mmioFOURCC('r','h','t','m') -#define DMUS_FOURCC_PARTREF_LIST mmioFOURCC('p','r','e','f') -#define DMUS_FOURCC_PARTREF_CHUNK mmioFOURCC('p','r','f','c') -#define DMUS_FOURCC_STYLE_PERS_REF_LIST mmioFOURCC('p','r','r','f') -#define DMUS_FOURCC_MOTIFSETTINGS_CHUNK mmioFOURCC('m','t','f','s') - -/* Flags used by variations: these make up the DWORDs in dwVariationChoices. */ - -/* These flags determine the types of chords supported by a given variation in DirectMusic */ -/* mode. The first seven flags (bits 1-7) are set if the variation supports major chords */ -/* rooted in scale positions, so, e.g., if bits 1, 2, and 4 are set, the variation */ -/* supports major chords rooted in the tonic, second, and fourth scale positions. The */ -/* next seven flags serve the same purpose, but for minor chords, and the following seven */ -/* flags serve the same purpose for chords that are not major or minor (e.g., SUS 4 */ -/* chords). Bits 22, 23, and 24 are set if the variation supports chords rooted in the */ -/* scale, chords rooted sharp of scale tones, and chords rooted flat of scale tones, */ -/* respectively. For example, to support a C# minor chord in the scale of C Major, */ -/* bits 8 (for tonic minor) and 24 (for sharp) need to be set. Bits 25, 26, an 27 handle */ -/* chords that are triads, 6th or 7th chords, and chords with extensions, respectively. */ -/* bits 28 and 29 handle chords that are followed by tonic and dominant chords, */ -/* respectively. */ -#define DMUS_VARIATIONF_MAJOR 0x0000007F /* Seven positions in the scale - major chords. */ -#define DMUS_VARIATIONF_MINOR 0x00003F80 /* Seven positions in the scale - minor chords. */ -#define DMUS_VARIATIONF_OTHER 0x001FC000 /* Seven positions in the scale - other chords. */ -#define DMUS_VARIATIONF_ROOT_SCALE 0x00200000 /* Handles chord roots in the scale. */ -#define DMUS_VARIATIONF_ROOT_FLAT 0x00400000 /* Handles flat chord roots (based on scale notes). */ -#define DMUS_VARIATIONF_ROOT_SHARP 0x00800000 /* Handles sharp chord roots (based on scale notes). */ -#define DMUS_VARIATIONF_TYPE_TRIAD 0x01000000 /* Handles simple chords - triads. */ -#define DMUS_VARIATIONF_TYPE_6AND7 0x02000000 /* Handles simple chords - 6 and 7. */ -#define DMUS_VARIATIONF_TYPE_COMPLEX 0x04000000 /* Handles complex chords. */ -#define DMUS_VARIATIONF_DEST_TO1 0x08000000 /* Handles transitions to 1 chord. */ -#define DMUS_VARIATIONF_DEST_TO5 0x10000000 /* Handles transitions to 5 chord. */ -#define DMUS_VARIATIONF_DEST_OTHER 0x40000000 /* Handles transitions to chords other than 1 . */ - -/* legacy mask for variation modes */ -#define DMUS_VARIATIONF_MODES 0xE0000000 -/* Bits 29 and 31 of the variation flags are the Mode bits. If both are 0, it's IMA. */ -/* If bit 29 is 1, it's Direct Music. */ -#define DMUS_VARIATIONF_MODES_EX (0x20000000 | 0x80000000) -#define DMUS_VARIATIONF_IMA25_MODE 0x00000000 -#define DMUS_VARIATIONF_DMUS_MODE 0x20000000 - -/* Set this if the part uses marker events */ -#define DMUS_PARTF_USE_MARKERS 0x1 -/* Set this if the part is allowed to switch only on chord-aligned markers */ -#define DMUS_PARTF_ALIGN_CHORDS 0x2 - -/* These specify if the marker event signals whether to stop a variation or start a -pattern/variation (or both), and whether new variations must align with a chord */ -#define DMUS_MARKERF_START 0x1 -#define DMUS_MARKERF_STOP 0x2 -#define DMUS_MARKERF_CHORD_ALIGN 0x4 - -/* if this flag is set, variation settings in a playing pattern-based track's state data will -persist in the track after it stops playing */ -#define DMUS_PATTERNF_PERSIST_CONTROL 0x1 - -/* These specify possible values for DMUS_IO_PARTREF.bRandomVariation - all but DMUS_VARIATIONT_SEQUENTIAL and DMUS_VARIATIONT_RANDOM are dx8. */ -typedef enum enumDMUS_VARIATIONT_TYPES -{ - DMUS_VARIATIONT_SEQUENTIAL = 0, /* Play sequential starting with variation 1. */ - DMUS_VARIATIONT_RANDOM = 1, /* Play randomly. */ - DMUS_VARIATIONT_RANDOM_START = 2, /* Play sequential starting with a random variation. */ - DMUS_VARIATIONT_NO_REPEAT = 3, /* Play randomly, but don't play the same variation twice. */ - DMUS_VARIATIONT_RANDOM_ROW = 4 /* Play randomly as a row: don't repeat any variation until all have played. */ -} DMUS_VARIATIONT_TYPES; - -/* These specify possible values for DMUS_IO_PATTERN.wEmbellishment (dx8) */ -typedef enum enumDMUS_EMBELLISHT_TYPES -{ - DMUS_EMBELLISHT_NORMAL = 0, - DMUS_EMBELLISHT_FILL = 1, - DMUS_EMBELLISHT_BREAK = 2, - DMUS_EMBELLISHT_INTRO = 4, - DMUS_EMBELLISHT_END = 8, - DMUS_EMBELLISHT_MOTIF = 16, - DMUS_EMBELLISHT_ALL = 0xFFFF -} DMUS_EMBELLISHT_TYPES; - -#pragma pack(2) - -typedef struct _DMUS_IO_TIMESIG -{ - /* Time signatures define how many beats per measure, which note receives */ - /* the beat, and the grid resolution. */ - BYTE bBeatsPerMeasure; /* beats per measure (top of time sig) */ - BYTE bBeat; /* what note receives the beat (bottom of time sig.) */ - /* we can assume that 0 means 256th note */ - WORD wGridsPerBeat; /* grids per beat */ -} DMUS_IO_TIMESIG; - -typedef struct _DMUS_IO_STYLE -{ - DMUS_IO_TIMESIG timeSig; /* Styles have a default Time Signature */ - double dblTempo; -} DMUS_IO_STYLE; - -typedef struct _DMUS_IO_VERSION -{ - DWORD dwVersionMS; /* Version # high-order 32 bits */ - DWORD dwVersionLS; /* Version # low-order 32 bits */ -} DMUS_IO_VERSION; - -typedef struct _DMUS_IO_PATTERN -{ - DMUS_IO_TIMESIG timeSig; /* Patterns can override the Style's Time sig. */ - BYTE bGrooveBottom; /* bottom of groove range */ - BYTE bGrooveTop; /* top of groove range */ - WORD wEmbellishment; /* Fill, Break, Intro, End, Normal, Motif */ - WORD wNbrMeasures; /* length in measures */ - BYTE bDestGrooveBottom; /* bottom of groove range for next pattern */ - BYTE bDestGrooveTop; /* top of groove range for next pattern */ - DWORD dwFlags; /* various flags */ -} DMUS_IO_PATTERN; - -typedef struct _DMUS_IO_STYLEPART -{ - DMUS_IO_TIMESIG timeSig; /* can override pattern's */ - DWORD dwVariationChoices[32]; /* MOAW choice bitfield */ - GUID guidPartID; /* identifies the part */ - WORD wNbrMeasures; /* length of the Part */ - BYTE bPlayModeFlags; /* see PLAYMODE flags */ - BYTE bInvertUpper; /* inversion upper limit */ - BYTE bInvertLower; /* inversion lower limit */ - BYTE bPad[3]; /* for DWORD alignment */ - DWORD dwFlags; /* various flags */ -} DMUS_IO_STYLEPART; - -typedef struct _DMUS_IO_PARTREF -{ - GUID guidPartID; /* unique ID for matching up with parts */ - WORD wLogicalPartID; /* corresponds to port/device/midi channel OBSOLETE */ - BYTE bVariationLockID; /* parts with the same ID lock variations. */ - /* high bit is used to identify master Part */ - BYTE bSubChordLevel; /* tells which sub chord level this part wants */ - BYTE bPriority; /* 256 priority levels. Parts with lower priority */ - /* aren't played first when a device runs out of */ - /* notes */ - BYTE bRandomVariation; /* when set, matching variations play in random order */ - /* when clear, matching variations play sequentially */ - WORD wPad; /* not used */ - DWORD dwPChannel; /* replaces wLogicalPartID */ -} DMUS_IO_PARTREF; - -typedef struct _DMUS_IO_STYLENOTE -{ - MUSIC_TIME mtGridStart; /* when this note occurs */ - DWORD dwVariation; /* variation bits */ - MUSIC_TIME mtDuration; /* how long this note lasts */ - short nTimeOffset; /* offset from mtGridStart */ - WORD wMusicValue; /* Position in scale. */ - BYTE bVelocity; /* Note velocity. */ - BYTE bTimeRange; /* Range to randomize start time. */ - BYTE bDurRange; /* Range to randomize duration. */ - BYTE bVelRange; /* Range to randomize velocity. */ - BYTE bInversionID; /* Identifies inversion group to which this note belongs */ - BYTE bPlayModeFlags; /* Can override part */ - /* Following exists only under DX8 and on */ - BYTE bNoteFlags; /* values from DMUS_NOTEF_FLAGS */ -} DMUS_IO_STYLENOTE; - -typedef struct _DMUS_IO_STYLECURVE -{ - MUSIC_TIME mtGridStart; /* when this curve occurs */ - DWORD dwVariation; /* variation bits */ - MUSIC_TIME mtDuration; /* how long this curve lasts */ - MUSIC_TIME mtResetDuration;/* how long after the end of the curve to reset the curve */ - short nTimeOffset; /* offset from mtGridStart */ - short nStartValue; /* curve's start value */ - short nEndValue; /* curve's end value */ - short nResetValue; /* the value to which to reset the curve */ - BYTE bEventType; /* type of curve */ - BYTE bCurveShape; /* shape of curve */ - BYTE bCCData; /* CC# */ - BYTE bFlags; /* Bit 1=TRUE means to send nResetValue. Otherwise, don't. - Other bits are reserved. */ - /* Following was added for DX8. */ - WORD wParamType; /* RPN or NRPN parameter number. */ - WORD wMergeIndex; /* Allows multiple parameters to be merged (pitchbend, volume, and expression.) */ -} DMUS_IO_STYLECURVE; - -typedef struct _DMUS_IO_STYLEMARKER -{ - MUSIC_TIME mtGridStart; /* when this marker occurs */ - DWORD dwVariation; /* variation bits */ - WORD wMarkerFlags; /* how the marker is used */ -} DMUS_IO_STYLEMARKER; - -typedef struct _DMUS_IO_STYLERESOLUTION -{ - DWORD dwVariation; /* variation bits */ - WORD wMusicValue; /* Position in scale. */ - BYTE bInversionID; /* Identifies inversion group to which this note belongs */ - BYTE bPlayModeFlags; /* Can override part */ -} DMUS_IO_STYLERESOLUTION; - -typedef struct _DMUS_IO_STYLE_ANTICIPATION -{ - MUSIC_TIME mtGridStart; /* when this anticipation occurs */ - DWORD dwVariation; /* variation bits */ - short nTimeOffset; /* offset from mtGridStart */ - BYTE bTimeRange; /* Range to randomize start time. */ -} DMUS_IO_STYLE_ANTICIPATION; - -typedef struct _DMUS_IO_MOTIFSETTINGS -{ - DWORD dwRepeats; /* Number of repeats. By default, 0. */ - MUSIC_TIME mtPlayStart; /* Start of playback. By default, 0. */ - MUSIC_TIME mtLoopStart; /* Start of looping portion. By default, 0. */ - MUSIC_TIME mtLoopEnd; /* End of loop. Must be greater than mtLoopStart. Or, 0, indicating loop full motif. */ - DWORD dwResolution; /* Default resolution. */ -} DMUS_IO_MOTIFSETTINGS; - -#pragma pack() - - -/* -RIFF -( - 'DMST' // Style - // Style header chunk - // Every Style has a GUID - [] // Name, author, copyright info., comments - [] // version chunk - ... // Array of parts in the Style, used by patterns - ... // Array of patterns in the Style - ... // Array of bands in the Style - []...// Optional array of chord map references in the Style -) - - // - styh - ( - - ) - - // - guid - ( - - ) - - // - vers - ( - - ) - - // - LIST - ( - 'part' - // Part header chunk - [] // Name, author, copyright info., comments - [] // Optional chunk containing an array of notes in Part - [] // Optional chunk containing an array of curves in Part - [] // Optional chunk containing an array of markers in Part - [] // Optional chunk containing an array of variation resolutions in Part - [] // Optional chunk containing an array of resolution anticipations in Part - ) - - // - prth - ( - - ) - - // - 'note' - ( - // sizeof DMUS_IO_STYLENOTE:DWORD - ... - ) - - // - 'crve' - ( - // sizeof DMUS_IO_STYLECURVE:DWORD - ... - ) - - // - 'mrkr' - ( - // sizeof DMUS_IO_STYLEMARKER:DWORD - ... - ) - - // - 'rsln' - ( - // sizeof DMUS_IO_STYLERESOLUTION:DWORD - ... - ) - - // - 'anpn' - ( - // sizeof DMUS_IO_STYLE_ANTICIPATION:DWORD - ... - ) - - // - LIST - ( - 'pttn' - // Pattern header chunk - // Chunk containing an array of rhythms for chord matching - [] // Name, author, copyright info., comments - [] // Motif settings chunk - [] // Optional band to be associated with the pattern (for motifs) - ... // Array of part reference id's - ) - - // - ptnh - ( - - ) - - // - 'rhtm' - ( - // DWORD's representing rhythms for chord matching based on number - // of measures in the pattern - ) - - - // pref-list - LIST - ( - 'pref' - // part ref chunk - ) - - // - prfc - ( - - ) - - // - mtfs - ( - - ) - - // - LIST - ( - 'prrf' - ... // Array of Chordmap references - ) -*/ - -/* Pattern chunk, for use in Pattern tracks */ - -#define DMUS_FOURCC_PATTERN_FORM mmioFOURCC('D','M','P','T') - -/* -RIFF -( - 'DMPT' // Pattern - // Style header chunk - // The pattern, in single pattern format (includes DMUS_FOURCC_PART_LIST chunks) -) -*/ - - -/* Chord and command file formats */ - -/* These specify possible values for DMUS_IO_COMMAND.bRepeatMode (dx8) */ -typedef enum enumDMUS_PATTERNT_TYPES -{ - DMUS_PATTERNT_RANDOM = 0, /* Play randomly. (dx7 behavior) */ - DMUS_PATTERNT_REPEAT = 1, /* Repeat last pattern. */ - DMUS_PATTERNT_SEQUENTIAL = 2, /* Play sequential starting with first matching pattern. */ - DMUS_PATTERNT_RANDOM_START = 3, /* Play sequential starting with a random pattern. */ - DMUS_PATTERNT_NO_REPEAT = 4, /* Play randomly, but don't play the same pattern twice. */ - DMUS_PATTERNT_RANDOM_ROW = 5 /* Play randomly as a row: don't repeat any pattern until all have played. */ -} DMUS_PATTERNT_TYPES; - - -#define DMUS_FOURCC_CHORDTRACK_LIST mmioFOURCC('c','o','r','d') -#define DMUS_FOURCC_CHORDTRACKHEADER_CHUNK mmioFOURCC('c','r','d','h') -#define DMUS_FOURCC_CHORDTRACKBODY_CHUNK mmioFOURCC('c','r','d','b') - -#define DMUS_FOURCC_COMMANDTRACK_CHUNK mmioFOURCC('c','m','n','d') - -typedef struct _DMUS_IO_CHORD -{ - WCHAR wszName[16]; /* Name of the chord */ - MUSIC_TIME mtTime; /* Time of this chord */ - WORD wMeasure; /* Measure this falls on */ - BYTE bBeat; /* Beat this falls on */ - BYTE bFlags; /* Various flags */ -} DMUS_IO_CHORD; - -typedef struct _DMUS_IO_SUBCHORD -{ - DWORD dwChordPattern; /* Notes in the subchord */ - DWORD dwScalePattern; /* Notes in the scale */ - DWORD dwInversionPoints; /* Where inversions can occur */ - DWORD dwLevels; /* Which levels are supported by this subchord */ - BYTE bChordRoot; /* Root of the subchord */ - BYTE bScaleRoot; /* Root of the scale */ -} DMUS_IO_SUBCHORD; - -typedef struct _DMUS_IO_COMMAND -{ - MUSIC_TIME mtTime; /* Time of this command */ - WORD wMeasure; /* Measure this falls on */ - BYTE bBeat; /* Beat this falls on */ - BYTE bCommand; /* Command type (see #defines below) */ - BYTE bGrooveLevel; /* Groove level (0 if command is not a groove) */ - BYTE bGrooveRange; /* Groove range */ - BYTE bRepeatMode; /* Used to control selection of patterns with same groove level */ -} DMUS_IO_COMMAND; - - -/* - - // - LIST - ( - 'cord' - - ... // Chord body chunks - ) - - // - crdh - ( - // Scale: dword (upper 8 bits for root, lower 24 for scale) - ) - - // - crdb - ( - // sizeof DMUS_IO_CHORD:dword - - // # of DMUS_IO_SUBCHORDS:dword - // sizeof DMUS_IO_SUBCHORDS:dword - // a number of - ) - - - // - 'cmnd' - ( - //sizeof DMUS_IO_COMMAND: DWORD - ... - ) - -*/ - -/* File io for DirectMusic Tool and ToolGraph objects -*/ - -/* RIFF ids: */ - -#define DMUS_FOURCC_TOOLGRAPH_FORM mmioFOURCC('D','M','T','G') -#define DMUS_FOURCC_TOOL_LIST mmioFOURCC('t','o','l','l') -#define DMUS_FOURCC_TOOL_FORM mmioFOURCC('D','M','T','L') -#define DMUS_FOURCC_TOOL_CHUNK mmioFOURCC('t','o','l','h') - -/* io structures: */ - -typedef struct _DMUS_IO_TOOL_HEADER -{ - GUID guidClassID; /* Class id of tool. */ - long lIndex; /* Position in graph. */ - DWORD cPChannels; /* Number of items in channels array. */ - FOURCC ckid; /* chunk ID of tool's data chunk if 0 fccType valid. */ - FOURCC fccType; /* list type if NULL ckid valid. */ - DWORD dwPChannels[1]; /* Array of PChannels, size determined by cPChannels. */ -} DMUS_IO_TOOL_HEADER; - -/* -RIFF -( - 'DMTG' // DirectMusic ToolGraph chunk - [] // GUID for ToolGraph - [] // Optional version info - [] // Name, author, copyright info., comments - // List of Tools -) - - // - 'guid' - ( - - ) - - // - vers - ( - - ) - - // - LIST - ( - 'toll' // Array of tools - ... // Each tool is encapsulated in a RIFF chunk - ) - -// Tools are embedded in a graph. Theoretically, they can be saved as individual files too. -RIFF -( - 'DMTL' - - [] // Tool data. Must be a RIFF readable chunk. -) - - // // Tool header chunk - ( - 'tolh' - // Tool header - ) -*/ - -/* The AudioPath file carries everything for describing a specific audio path, - including Tool Graph and Buffer Descriptor. - This can even be used for configuring a complete performance. -*/ - -#define DMUS_FOURCC_AUDIOPATH_FORM mmioFOURCC('D','M','A','P') - -/* -RIFF -( - 'DMAP' // DirectMusic AudioPath chunk - [] // GUID for this Audio Path configuration - [] // Optional version info - [] // Name, author, copyright info., comments - [] // Optional ToolGraph - [] // Optional list of port configurations - []...// Optional array of Dsound buffer descriptors -) -*/ - -#define DMUS_FOURCC_PORTCONFIGS_LIST mmioFOURCC('p','c','s','l') -#define DMUS_FOURCC_PORTCONFIG_LIST mmioFOURCC('p','c','f','l') -#define DMUS_FOURCC_PORTCONFIG_ITEM mmioFOURCC('p','c','f','h') -#define DMUS_FOURCC_PORTPARAMS_ITEM mmioFOURCC('p','p','r','h') -#define DMUS_FOURCC_DSBUFFER_LIST mmioFOURCC('d','b','f','l') -#define DMUS_FOURCC_DSBUFFATTR_ITEM mmioFOURCC('d','d','a','h') -#define DMUS_FOURCC_PCHANNELS_LIST mmioFOURCC('p','c','h','l') -#define DMUS_FOURCC_PCHANNELS_ITEM mmioFOURCC('p','c','h','h') - -typedef struct _DMUS_IO_PORTCONFIG_HEADER -{ - GUID guidPort; /* GUID of requested port. */ - DWORD dwPChannelBase; /* PChannel that this should start on. */ - DWORD dwPChannelCount; /* How many channels. */ - DWORD dwFlags; /* Various flags. */ -} DMUS_IO_PORTCONFIG_HEADER; - -#define DMUS_PORTCONFIGF_DRUMSON10 1 /* This port configured for drums on channel 10. */ -#define DMUS_PORTCONFIGF_USEDEFAULT 2 /* Use the default port. */ - -/* Each portconfig has one or more pchannel to buffer mappings. Each buffer - is identified by a guid. Each pchannel can map to one or more buffers. - This is defined with one or more DMUS_IO_PCHANNELTOBUFFER_HEADER - structures. Each defines a range of PChannels and the set of buffers - that they connect to. -*/ - -typedef struct _DMUS_IO_PCHANNELTOBUFFER_HEADER -{ - DWORD dwPChannelBase; /* PChannel that this should start on. */ - DWORD dwPChannelCount; /* How many PChannels. */ - DWORD dwBufferCount; /* How many buffers do these connect to. */ - DWORD dwFlags; /* Various flags. Currently reserved for future use. Must be 0. */ -} DMUS_IO_PCHANNELTOBUFFER_HEADER; - -/* Each buffer is represented by an DSBC form. This is wrapped by the - DMUS_IO_BUFFER_ATTRIBUTES_HEADER which identifies how to use the - buffer. In particular, it indicates whether this gets dynamically duplicated - or all references to this should share the same instance. - To resolve references, the unique GUID of the buffer is also stored - in this structure. -*/ - -typedef struct _DMUS_IO_BUFFER_ATTRIBUTES_HEADER -{ - GUID guidBufferID; /* Each buffer config has a unique ID. */ - DWORD dwFlags; /* Various flags. */ -} DMUS_IO_BUFFER_ATTRIBUTES_HEADER; - -/* DMUS_IO_BUFFER_ATTRIBUTES_HEADER.dwFlags: */ -#define DMUS_BUFFERF_SHARED 1 /* Share this with other audio paths, instead of creating unique copies. */ -#define DMUS_BUFFERF_DEFINED 2 /* Use one of the standard predefined buffers (see GUID_Buffer... in dmusici.h.) */ -#define DMUS_BUFFERF_MIXIN 8 /* This is a mixin buffer. */ - -/* - -LIST -( - 'pcsl' // Array of port configurations - ... // One or more port configurations, each in a list chunk -) - -LIST -( - 'pcfl' // List container for one port configuration. - // Portconfig header chunk. - // Port params, to be used to create the port. - []...// Optional array of Dsound buffer descriptors - [] // Optional list of pchannel to buffer assignments - -) - - // // Port config header chunk - ( - 'pcfh' - // Port config header - ) - - // // Port params header chunk - ( - 'pprh' - // Port params header - ) - -LIST -( - 'pchl' // List container for one or more pchannel to buffer assignments. - ... // One or more pchannel to buffer assignment headers and data. - - // - ( - 'pchh' - // Description of PChannels - ... // Array of GUIDs defining the buffers they all connect to. - ) -) - -LIST -( - 'dbfl' // List container for one buffer and buffer attributes header. - // Buffer attributes header. - [] // Buffer configuration. Not required when header uses a predefined buffer type. - - // - ( - 'ddah' - // Buffer attributes. - ) -) -*/ - -/* File io for DirectMusic Band Track object */ - - -/* RIFF ids: */ -#define DMUS_FOURCC_BANDTRACK_FORM mmioFOURCC('D','M','B','T') -#define DMUS_FOURCC_BANDTRACK_CHUNK mmioFOURCC('b','d','t','h') -#define DMUS_FOURCC_BANDS_LIST mmioFOURCC('l','b','d','l') -#define DMUS_FOURCC_BAND_LIST mmioFOURCC('l','b','n','d') -#define DMUS_FOURCC_BANDITEM_CHUNK mmioFOURCC('b','d','i','h') -#define DMUS_FOURCC_BANDITEM_CHUNK2 mmioFOURCC('b','d','2','h') - -/* io structures */ -typedef struct _DMUS_IO_BAND_TRACK_HEADER -{ - BOOL bAutoDownload; /* Determines if Auto-Download is enabled. */ -} DMUS_IO_BAND_TRACK_HEADER; - -typedef struct _DMUS_IO_BAND_ITEM_HEADER -{ - MUSIC_TIME lBandTime; /* Position in track list. */ -} DMUS_IO_BAND_ITEM_HEADER; - -typedef struct _DMUS_IO_BAND_ITEM_HEADER2 -{ - MUSIC_TIME lBandTimeLogical; /* Position in track list. Time in the music with which band change is associated. */ - MUSIC_TIME lBandTimePhysical; /* Precise time band change will take effect. Should be close to logical time. */ -} DMUS_IO_BAND_ITEM_HEADER2; - -/* -RIFF -( - 'DMBT' // DirectMusic Band Track form-type - [] // Band track header - [] // GUID for band track - [] // Optional version info - [] // Name, author, copyright info., comments - // List of Band items -) - - // - 'bdth' - ( - - ) - - // - 'guid' - ( - - ) - - // - vers - ( - - ) - - // - LIST - ( - 'lbdl' - ... // Array of bands, each encapsulated in a list chunk - ) - - // - LIST - ( - 'lbnd' - or // bdih is a legacy format. bd2h is preferred for new content. - // Band - ) - - // or // band item header - ( - or // Band item header - ) -*/ - - -/* File io for DirectMusic Band object -*/ - -/* RIFF ids: */ - -#define DMUS_FOURCC_BAND_FORM mmioFOURCC('D','M','B','D') -#define DMUS_FOURCC_INSTRUMENTS_LIST mmioFOURCC('l','b','i','l') -#define DMUS_FOURCC_INSTRUMENT_LIST mmioFOURCC('l','b','i','n') -#define DMUS_FOURCC_INSTRUMENT_CHUNK mmioFOURCC('b','i','n','s') - -/* Flags for DMUS_IO_INSTRUMENT - */ -#define DMUS_IO_INST_PATCH (1 << 0) /* dwPatch is valid. */ -#define DMUS_IO_INST_BANKSELECT (1 << 1) /* dwPatch contains a valid Bank Select MSB and LSB part */ -#define DMUS_IO_INST_ASSIGN_PATCH (1 << 3) /* dwAssignPatch is valid */ -#define DMUS_IO_INST_NOTERANGES (1 << 4) /* dwNoteRanges is valid */ -#define DMUS_IO_INST_PAN (1 << 5) /* bPan is valid */ -#define DMUS_IO_INST_VOLUME (1 << 6 ) /* bVolume is valid */ -#define DMUS_IO_INST_TRANSPOSE (1 << 7) /* nTranspose is valid */ -#define DMUS_IO_INST_GM (1 << 8) /* Instrument is from GM collection */ -#define DMUS_IO_INST_GS (1 << 9) /* Instrument is from GS collection */ -#define DMUS_IO_INST_XG (1 << 10) /* Instrument is from XG collection */ -#define DMUS_IO_INST_CHANNEL_PRIORITY (1 << 11) /* dwChannelPriority is valid */ -#define DMUS_IO_INST_USE_DEFAULT_GM_SET (1 << 12) /* Always use the default GM set for this patch, */ - /* don't rely on the synth caps stating GM or GS in hardware. */ -#define DMUS_IO_INST_PITCHBENDRANGE (1 << 13) /* nPitchBendRange is valid */ - -/* io structures */ -typedef struct _DMUS_IO_INSTRUMENT -{ - DWORD dwPatch; /* MSB, LSB and Program change to define instrument */ - DWORD dwAssignPatch; /* MSB, LSB and Program change to assign to instrument when downloading */ - DWORD dwNoteRanges[4]; /* 128 bits; one for each MIDI note instrument needs to able to play */ - DWORD dwPChannel; /* PChannel instrument plays on */ - DWORD dwFlags; /* DMUS_IO_INST_ flags */ - BYTE bPan; /* Pan for instrument */ - BYTE bVolume; /* Volume for instrument */ - short nTranspose; /* Number of semitones to transpose notes */ - DWORD dwChannelPriority; /* Channel priority */ - short nPitchBendRange; /* Number of semitones shifted by pitch bend */ -} DMUS_IO_INSTRUMENT; - -/* -// bands can be embedded in other forms -RIFF -( - 'DMBD' // DirectMusic Band chunk - [] // GUID for band - [] // Optional version info - [] // Name, author, copyright info., comments - // List of Instruments -) - - // - 'guid' - ( - - ) - - // - vers - ( - - ) - - // - LIST - ( - 'lbil' // Array of instruments - ... // Each instrument is encapsulated in a list - ) - - // - LIST - ( - 'lbin' - - [] // Optional reference to DLS Collection file. - ) - - // // Instrument chunk - ( - 'bins' - // Instrument header - ) -*/ - -/* This RIFF id and io struct have been added to allow wave files (and the wave object) to - differentiate between streaming and one-shot waves, and to give a prefetch for streaming - waves */ - -#define DMUS_FOURCC_WAVEHEADER_CHUNK mmioFOURCC('w','a','v','h') - -typedef struct _DMUS_IO_WAVE_HEADER -{ - REFERENCE_TIME rtReadAhead; /* How far ahead in the stream wave data will be read (in REFERENCE_TIME). Ignored for one-shot waves. */ - DWORD dwFlags; /* Various flags, including whether this is a streaming wave and whether it can be invalidated. */ -} DMUS_IO_WAVE_HEADER; - - -/* File io for Wave track */ - -/* RIFF ids: */ - -#define DMUS_FOURCC_WAVETRACK_LIST mmioFOURCC('w','a','v','t') -#define DMUS_FOURCC_WAVETRACK_CHUNK mmioFOURCC('w','a','t','h') -#define DMUS_FOURCC_WAVEPART_LIST mmioFOURCC('w','a','v','p') -#define DMUS_FOURCC_WAVEPART_CHUNK mmioFOURCC('w','a','p','h') -#define DMUS_FOURCC_WAVEITEM_LIST mmioFOURCC('w','a','v','i') -#define DMUS_FOURCC_WAVE_LIST mmioFOURCC('w','a','v','e') -#define DMUS_FOURCC_WAVEITEM_CHUNK mmioFOURCC('w','a','i','h') - -/* This flag is included in DMUS_IO_WAVE_TRACK_HEADER.dwFlags. If set, the track will get its - variations from a pattern track, via GetParam(GUID_Variations). */ -#define DMUS_WAVETRACKF_SYNC_VAR 0x1 -/* This is also included in DMUS_IO_WAVE_TRACK_HEADER.dwFlags. If set, variation control - information will persist from one playback instance to the next.*/ -#define DMUS_WAVETRACKF_PERSIST_CONTROL 0x2 - -typedef struct _DMUS_IO_WAVE_TRACK_HEADER -{ - long lVolume; /* Gain, in 1/100th of dB, to be applied to all waves. Note: All gain values should be negative. */ - DWORD dwFlags; /* Flags, including whether this track syncs to a pattern track for its variations. */ -} DMUS_IO_WAVE_TRACK_HEADER; - -typedef struct _DMUS_IO_WAVE_PART_HEADER -{ - long lVolume; /* Gain, in 1/100th of dB, to be applied to all waves in wave part. Note: All gain values should be negative. */ - DWORD dwVariations; /* Variation mask for which of 32 variations */ - DWORD dwPChannel; /* PChannel */ - DWORD dwLockToPart; /* Part ID to lock to. */ - DWORD dwFlags; /* Flags, including stuff for managing how variations are chosen (in low-order nibble) */ - DWORD dwIndex; /* Index for distinguishing multiple parts on the same PChannel*/ -} DMUS_IO_WAVE_PART_HEADER; - -typedef struct _DMUS_IO_WAVE_ITEM_HEADER -{ - long lVolume; /* Gain, in 1/100th of dB. Note: All gain values should be negative. */ - long lPitch; /* Pitch offset in 1/100th of a semitone. */ - DWORD dwVariations; /* Variation flags for which of 32 variations this wave belongs to. */ - REFERENCE_TIME rtTime; /* Start time, in REFERENCE_TIME, if clock time track, or MUSIC_TIME for music time track. */ - REFERENCE_TIME rtStartOffset; /* Distance into wave to start playback, in reference time units. */ - REFERENCE_TIME rtReserved; /* Reserved field. */ - REFERENCE_TIME rtDuration; /* Duration, in REFERENCE_TIME or MUSIC_TIME, depending on track timing format. */ - MUSIC_TIME mtLogicalTime; /* If in music track format, this indicates the musical boundary where this belongs. Otherwise, ignored. */ - DWORD dwLoopStart; /* Start point for a looping wave. */ - DWORD dwLoopEnd; /* End point for a looping wave. */ - DWORD dwFlags; /* Various flags, including whether this is a streaming wave and whether it can be invalidated. */ - WORD wVolumeRange; /* Random range for volume. */ - WORD wPitchRange; /* Random range for pitch. */ -} DMUS_IO_WAVE_ITEM_HEADER; - -/* -LIST -{ - 'wavt' // Wave track chunk - // Wave track header - ... // Array of Wave Parts -} - // - 'wath' - { - - } - - // - LIST - { - 'wavp' - // Wave Part Header - // List of wave items - } - - // - 'waph' - { - - } - - // - LIST - { - 'wavi' - ... // Array of waves; each wave is encapsulated in a list - } - - // - LIST - { - 'wave' - // Wave item header - // Reference to wave object - } - - // - 'waih' - { - - } - -*/ - -/* File io for DirectMusic Container file. This embeds a set of related files. And, - in turn, it can be embedded within a segment or script file. -*/ - -#define DMUS_FOURCC_CONTAINER_FORM mmioFOURCC('D','M','C','N') -#define DMUS_FOURCC_CONTAINER_CHUNK mmioFOURCC('c','o','n','h') -#define DMUS_FOURCC_CONTAINED_ALIAS_CHUNK mmioFOURCC('c','o','b','a') -#define DMUS_FOURCC_CONTAINED_OBJECT_CHUNK mmioFOURCC('c','o','b','h') -#define DMUS_FOURCC_CONTAINED_OBJECTS_LIST mmioFOURCC('c','o','s','l') -#define DMUS_FOURCC_CONTAINED_OBJECT_LIST mmioFOURCC('c','o','b','l') - -typedef struct _DMUS_IO_CONTAINER_HEADER -{ - DWORD dwFlags; /* Flags. */ -} DMUS_IO_CONTAINER_HEADER; - -#define DMUS_CONTAINER_NOLOADS (1 << 1) /* Contained items are not loaded when the container is loaded. - Entries will be created in the loader (via SetObject) but - the actual objects will not be created until they are - specifically loaded at a later time. */ - -typedef struct _DMUS_IO_CONTAINED_OBJECT_HEADER -{ - GUID guidClassID; /* Class id of object. */ - DWORD dwFlags; /* Flags, for example DMUS_CONTAINED_OBJF_KEEP. */ - FOURCC ckid; /* chunk ID of track's data chunk if 0 fccType valid. */ - FOURCC fccType; /* list type if NULL ckid valid */ - /* Note that LIST:DMRF may be used for ckid and fccType in order to reference an - object instead of embedding it within the container. */ -} DMUS_IO_CONTAINED_OBJECT_HEADER; - -#define DMUS_CONTAINED_OBJF_KEEP 1 /* Keep the object cached in the loader after the container is released. */ - -/* -RIFF -( - 'DMCN' // DirectMusic Container chunk - // Container header chunk - [] // GUID for container - [] // Optional version info - [] // Name, author, copyright info., comments - // List of objects. -) - - // - 'conh' - ( - - ) - - // - 'guid' - ( - - ) - - // - vers - ( - - ) - - LIST - ( - 'cosl' // Array of embedded objects. - ... // Each object is encapsulated in a LIST chunk - ) - - // // Encapsulates one object - LIST - ( - 'cobl' - [] // Alias. An alternative name by which this object is known - // within the container. - // Required header, includes CLASS ID for object. - [] or // Object data of the type specified in . - // If DMRF, it is a reference of where to find the object. - // Otherwise, it could be any RIFF readable chunk in the - // exact same format as a file. The object will load - // itself from this data. - ) - - // - 'coba' - ( - // Alias, stored as NULL terminated string of WCHARs - ) - - // - 'cobh' - ( - - ) -*/ - -/* File io for DirectMusic Segment object */ - -/* RIFF ids: */ - -#define DMUS_FOURCC_SEGMENT_FORM mmioFOURCC('D','M','S','G') -#define DMUS_FOURCC_SEGMENT_CHUNK mmioFOURCC('s','e','g','h') -#define DMUS_FOURCC_TRACK_LIST mmioFOURCC('t','r','k','l') -#define DMUS_FOURCC_TRACK_FORM mmioFOURCC('D','M','T','K') -#define DMUS_FOURCC_TRACK_CHUNK mmioFOURCC('t','r','k','h') -#define DMUS_FOURCC_TRACK_EXTRAS_CHUNK mmioFOURCC('t','r','k','x') - -/* io structures:*/ - -typedef struct _DMUS_IO_SEGMENT_HEADER -{ - DWORD dwRepeats; /* Number of repeats. By default, 0. */ - MUSIC_TIME mtLength; /* Length, in music time. */ - MUSIC_TIME mtPlayStart; /* Start of playback. By default, 0. */ - MUSIC_TIME mtLoopStart; /* Start of looping portion. By default, 0. */ - MUSIC_TIME mtLoopEnd; /* End of loop. Must be greater than dwPlayStart. Or, 0, indicating loop full segment. */ - DWORD dwResolution; /* Default resolution. */ - /* Following added for DX8: */ - REFERENCE_TIME rtLength; /* Length, in reference time (overrides music time length.) */ - DWORD dwFlags; - DWORD dwReserved; /* Reserved. */ - /* Added for DX9. */ - REFERENCE_TIME rtLoopStart; /* Clock time loop start. */ - REFERENCE_TIME rtLoopEnd; /* Clock time loop end. */ - REFERENCE_TIME rtPlayStart; /* Start of playback in clock time. */ -} DMUS_IO_SEGMENT_HEADER; - -#define DMUS_SEGIOF_REFLENGTH 1 /* Use the time in rtLength for the segment length. */ -#define DMUS_SEGIOF_CLOCKTIME 2 /* This is a clock time segment. */ - -typedef struct _DMUS_IO_TRACK_HEADER -{ - GUID guidClassID; /* Class id of track. */ - DWORD dwPosition; /* Position in track list. */ - DWORD dwGroup; /* Group bits for track. */ - FOURCC ckid; /* chunk ID of track's data chunk. */ - FOURCC fccType; /* list type if ckid is RIFF or LIST */ -} DMUS_IO_TRACK_HEADER; - -/* Additional parameters for the track header chunk, introduced in DX8 and - on, are stored in a separate chunk. */ - -typedef struct _DMUS_IO_TRACK_EXTRAS_HEADER -{ - DWORD dwFlags; /* DX8 Added flags for control tracks. */ - DWORD dwPriority; /* Priority for composition. */ -} DMUS_IO_TRACK_EXTRAS_HEADER; - -/* -RIFF -( - 'DMSG' // DirectMusic Segment chunk - // Segment header chunk - [] // GUID for segment - [] // Optional version info - [] // Name, author, copyright info., comments - [] // Optional container of objects embedded in file. Must precede tracklist. - // List of Tracks - [] // Optional ToolGraph - [] // Optional Audio Path -) - - // - 'segh' - ( - - ) - - // - 'guid' - ( - - ) - - // - vers - ( - - ) - - // - LIST - ( - 'trkl' // Array of tracks - ... // Each track is encapsulated in a RIFF chunk - ) - - // // Tracks can be embedded in a segment or stored as separate files. - RIFF - ( - 'DMTK' - - [] // Optional track flags. - [] // Optional GUID for track object instance (not to be confused with Class id in track header) - [] // Optional version info - [] // Optional name, author, copyright info., comments - [] // Track data. Must be a RIFF readable chunk. - ) - - // // Track header chunk - ( - 'trkh' - // Track header - ) - - // // Track flags chunk - ( - 'trkx' - // DX8 Track flags header - ) -*/ - -/* File io for DirectMusic reference chunk. - This is used to embed a reference to an object. -*/ - -/* RIFF ids: */ - -#define DMUS_FOURCC_REF_LIST mmioFOURCC('D','M','R','F') -#define DMUS_FOURCC_REF_CHUNK mmioFOURCC('r','e','f','h') -#define DMUS_FOURCC_DATE_CHUNK mmioFOURCC('d','a','t','e') -#define DMUS_FOURCC_NAME_CHUNK mmioFOURCC('n','a','m','e') -#define DMUS_FOURCC_FILE_CHUNK mmioFOURCC('f','i','l','e') - -typedef struct _DMUS_IO_REFERENCE -{ - GUID guidClassID; /* Class id is always required. */ - DWORD dwValidData; /* Flags. */ -} DMUS_IO_REFERENCE; - -/* -LIST -( - 'DMRF' // DirectMusic Reference chunk - // Reference header chunk - [] // Optional object GUID. - [] // Optional file date. - [] // Optional name. - [] // Optional file name. - [] // Optional category name. - [] // Optional version info. -) - - // - 'refh' - ( - - ) - - // - 'guid' - ( - - ) - - // - date - ( - - ) - - // - name - ( - // Name, stored as NULL terminated string of WCHARs - ) - - // - file - ( - // File name, stored as NULL terminated string of WCHARs - ) - - // - catg - ( - // Category name, stored as NULL terminated string of WCHARs - ) - - // - vers - ( - - ) -*/ - -/* Chord Maps */ - -/* runtime chunks */ -#define DMUS_FOURCC_CHORDMAP_FORM mmioFOURCC('D','M','P','R') -#define DMUS_FOURCC_IOCHORDMAP_CHUNK mmioFOURCC('p','e','r','h') -#define DMUS_FOURCC_SUBCHORD_CHUNK mmioFOURCC('c','h','d','t') -#define DMUS_FOURCC_CHORDENTRY_CHUNK mmioFOURCC('c','h','e','h') -#define DMUS_FOURCC_SUBCHORDID_CHUNK mmioFOURCC('s','b','c','n') -#define DMUS_FOURCC_IONEXTCHORD_CHUNK mmioFOURCC('n','c','r','d') -#define DMUS_FOURCC_NEXTCHORDSEQ_CHUNK mmioFOURCC('n','c','s','q') -#define DMUS_FOURCC_IOSIGNPOST_CHUNK mmioFOURCC('s','p','s','h') -#define DMUS_FOURCC_CHORDNAME_CHUNK mmioFOURCC('I','N','A','M') - -/* runtime list chunks */ -#define DMUS_FOURCC_CHORDENTRY_LIST mmioFOURCC('c','h','o','e') -#define DMUS_FOURCC_CHORDMAP_LIST mmioFOURCC('c','m','a','p') -#define DMUS_FOURCC_CHORD_LIST mmioFOURCC('c','h','r','d') -#define DMUS_FOURCC_CHORDPALETTE_LIST mmioFOURCC('c','h','p','l') -#define DMUS_FOURCC_CADENCE_LIST mmioFOURCC('c','a','d','e') -#define DMUS_FOURCC_SIGNPOSTITEM_LIST mmioFOURCC('s','p','s','t') - -#define DMUS_FOURCC_SIGNPOST_LIST mmioFOURCC('s','p','s','q') - -/* values for dwChord field of DMUS_IO_PERS_SIGNPOST */ -/* DMUS_SIGNPOSTF_ flags are also used in templates (DMUS_IO_SIGNPOST) */ -#define DMUS_SIGNPOSTF_A 1 -#define DMUS_SIGNPOSTF_B 2 -#define DMUS_SIGNPOSTF_C 4 -#define DMUS_SIGNPOSTF_D 8 -#define DMUS_SIGNPOSTF_E 0x10 -#define DMUS_SIGNPOSTF_F 0x20 -#define DMUS_SIGNPOSTF_LETTER (DMUS_SIGNPOSTF_A | DMUS_SIGNPOSTF_B | DMUS_SIGNPOSTF_C | DMUS_SIGNPOSTF_D | DMUS_SIGNPOSTF_E | DMUS_SIGNPOSTF_F) -#define DMUS_SIGNPOSTF_1 0x100 -#define DMUS_SIGNPOSTF_2 0x200 -#define DMUS_SIGNPOSTF_3 0x400 -#define DMUS_SIGNPOSTF_4 0x800 -#define DMUS_SIGNPOSTF_5 0x1000 -#define DMUS_SIGNPOSTF_6 0x2000 -#define DMUS_SIGNPOSTF_7 0x4000 -#define DMUS_SIGNPOSTF_ROOT (DMUS_SIGNPOSTF_1 | DMUS_SIGNPOSTF_2 | DMUS_SIGNPOSTF_3 | DMUS_SIGNPOSTF_4 | DMUS_SIGNPOSTF_5 | DMUS_SIGNPOSTF_6 | DMUS_SIGNPOSTF_7) -#define DMUS_SIGNPOSTF_CADENCE 0x8000 - -/* values for dwFlags field of DMUS_IO_CHORDMAP */ -#define DMUS_CHORDMAPF_VERSION8 1 /* Chordmap is version 8 or above. */ - -/* values for dwChord field of DMUS_IO_PERS_SIGNPOST */ -#define DMUS_SPOSTCADENCEF_1 2 /* Use the first cadence chord. */ -#define DMUS_SPOSTCADENCEF_2 4 /* Use the second cadence chord. */ - -/* run time data structs */ -typedef struct _DMUS_IO_CHORDMAP -{ - WCHAR wszLoadName[20]; - DWORD dwScalePattern; - DWORD dwFlags; /* Various flags. Only lower 16 bits are significant. */ -} DMUS_IO_CHORDMAP; - -typedef struct _DMUS_IO_CHORDMAP_SUBCHORD -{ - DWORD dwChordPattern; - DWORD dwScalePattern; - DWORD dwInvertPattern; - BYTE bChordRoot; - BYTE bScaleRoot; - WORD wCFlags; - DWORD dwLevels; /* parts or which subchord levels this chord supports */ -} DMUS_IO_CHORDMAP_SUBCHORD; - -/* Legacy name... */ -typedef DMUS_IO_CHORDMAP_SUBCHORD DMUS_IO_PERS_SUBCHORD; - -typedef struct _DMUS_IO_CHORDENTRY -{ - DWORD dwFlags; - WORD wConnectionID; /* replaces runtime "pointer to this" */ -} DMUS_IO_CHORDENTRY; - -typedef struct _DMUS_IO_NEXTCHORD -{ - DWORD dwFlags; - WORD nWeight; - WORD wMinBeats; - WORD wMaxBeats; - WORD wConnectionID; /* points to an ioChordEntry */ -} DMUS_IO_NEXTCHORD; - -typedef struct _DMUS_IO_CHORDMAP_SIGNPOST -{ - DWORD dwChords; /* 1bit per group */ - DWORD dwFlags; -} DMUS_IO_CHORDMAP_SIGNPOST; - -/* Legacy name... */ -typedef DMUS_IO_CHORDMAP_SIGNPOST DMUS_IO_PERS_SIGNPOST; - -/* -RIFF -( - 'DMPR' - // Chord map header chunk - [] // guid chunk - [] // version chunk (two DWORDS) - [] // Unfo chunk - // subchord database - // chord palette - // chord map - // signpost list - ) - - ::= LIST('cmap' ) - - ::= LIST('choe' - // chord entry data - // chord definition - // connecting(next) chords - ) - - ::= LIST('chrd' - // name of chord in wide char format - // list of subchords composing chord - ) - - ::= LIST('chpl' - ... // chord definition - ) - - ::== LIST('spsq' ... ) - - ::= LIST('spst' - - - [] - ) - - ::= LIST('cade' ...) - - ::= perh() - - ::= chdt( - ... ) - - ::= cheh() - - ::= sbcn( ...) - - ::= ncsq( - ...) - - ::= spsh() - -*/ - -/* File io for DirectMusic Script object */ - -/* RIFF ids: */ - -#define DMUS_FOURCC_SCRIPT_FORM mmioFOURCC('D','M','S','C') -#define DMUS_FOURCC_SCRIPT_CHUNK mmioFOURCC('s','c','h','d') -#define DMUS_FOURCC_SCRIPTVERSION_CHUNK mmioFOURCC('s','c','v','e') -#define DMUS_FOURCC_SCRIPTLANGUAGE_CHUNK mmioFOURCC('s','c','l','a') -#define DMUS_FOURCC_SCRIPTSOURCE_CHUNK mmioFOURCC('s','c','s','r') - -/* io structures:*/ - -typedef struct _DMUS_IO_SCRIPT_HEADER -{ - DWORD dwFlags; /* DMUS_SCRIPTIOF_ flags */ -} DMUS_IO_SCRIPT_HEADER; - -#define DMUS_SCRIPTIOF_LOAD_ALL_CONTENT (1 << 0) - /* If set, when the script loads it will also load all the content in its container. */ -#define DMUS_SCRIPTIOF_DOWNLOAD_ALL_SEGMENTS (1 << 1) - /* If set and LOAD_ALL_CONTENT is also set, when the script initializes it will also download all the segments in its container. - If set and LOAD_ALL_CONTENT is not set, when the script calls segment.Load on a segment then the segment will also be downloaded. - If not set, the script must manually download and unload by calling segment.DownloadSoundData and segment.UnloadSoundData. */ - -/* -RIFF -( - 'DMSC' // DirectMusic Script chunk - // Script header chunk - [] // GUID for script - [] // Optional version info - [] // Name, author, copyright info., comments - // Version of DirectMusic this script was authored to run against - // Container of content referenced by the script. - // ActiveX scripting language in which the script is written - or // The script's source code. - // If scsr-ck, the source is embedding in the chunk. - // If DMRF, it is a reference of where to find a text file with the source. - // Class id (guidClassID in DMUS_IO_REFERENCE) must be GUID_NULL because - // this text file is not a DirectMusic object in its own right. -) - - // - 'schd' - ( - - ) - - // - 'guid' - ( - - ) - - // - vers - ( - - ) - - // - scve - ( - - ) - - 'scla' - ( - // Language name, stored as NULL terminated string of WCHARs - ) - - 'scsr' - ( - // Source code, stored as NULL terminated string of WCHARs - ) -*/ - -/* Signpost tracks */ - -#define DMUS_FOURCC_SIGNPOST_TRACK_CHUNK mmioFOURCC( 's', 'g', 'n', 'p' ) - - -typedef struct _DMUS_IO_SIGNPOST -{ - MUSIC_TIME mtTime; - DWORD dwChords; - WORD wMeasure; -} DMUS_IO_SIGNPOST; - -/* - - // - 'sgnp' - ( - //sizeof DMUS_IO_SIGNPOST: DWORD - ... - ) - -*/ - -#define DMUS_FOURCC_MUTE_CHUNK mmioFOURCC('m','u','t','e') - -typedef struct _DMUS_IO_MUTE -{ - MUSIC_TIME mtTime; - DWORD dwPChannel; - DWORD dwPChannelMap; -} DMUS_IO_MUTE; - -/* - - // - 'mute' - ( - //sizeof DMUS_IO_MUTE:DWORD - ... - ) - - -*/ - -/* Used for both style and chord map tracks */ - -#define DMUS_FOURCC_TIME_STAMP_CHUNK mmioFOURCC('s', 't', 'm', 'p') - -/* Style tracks */ - -#define DMUS_FOURCC_STYLE_TRACK_LIST mmioFOURCC('s', 't', 't', 'r') -#define DMUS_FOURCC_STYLE_REF_LIST mmioFOURCC('s', 't', 'r', 'f') - -/* - - // - LIST('sttr' - ( - ... // Array of Style references - ) - - // - LIST('strf' - ( - - - ) - - // - 'stmp' - ( - // time:DWORD - ) - -*/ - -/* Chord map tracks */ - -#define DMUS_FOURCC_PERS_TRACK_LIST mmioFOURCC('p', 'f', 't', 'r') -#define DMUS_FOURCC_PERS_REF_LIST mmioFOURCC('p', 'f', 'r', 'f') - -/* - - // - LIST('pftr' - ( - ... // Array of Chord map references - ) - - // - LIST('pfrf' - ( - - - ) - - // - 'stmp' - ( - // time:DWORD - ) - -*/ - -#define DMUS_FOURCC_TEMPO_TRACK mmioFOURCC('t','e','t','r') - -/* - // tempo array - 'tetr' - ( - // sizeof DMUS_IO_TEMPO_ITEM: DWORD - ... - ) - */ - -#define DMUS_FOURCC_SEQ_TRACK mmioFOURCC('s','e','q','t') -#define DMUS_FOURCC_SEQ_LIST mmioFOURCC('e','v','t','l') -#define DMUS_FOURCC_CURVE_LIST mmioFOURCC('c','u','r','l') - -/* - // sequence track - 'seqt' - ( - // sequence array - 'evtl' - ( - // sizeof DMUS_IO_SEQ_ITEM: DWORD - ... - ) - // curve array - 'curl' - ( - // sizeof DMUS_IO_CURVE_ITEM: DWORD - ... - ) - ) -*/ - -#define DMUS_FOURCC_SYSEX_TRACK mmioFOURCC('s','y','e','x') - -/* - // sysex track - 'syex' - ( - { - - ... // Array of bytes, length defined in the DMUS_IO_SYSEXITEM structure - }... - ) -*/ - -#define DMUS_FOURCC_TIMESIGNATURE_TRACK mmioFOURCC('t','i','m','s') - -typedef struct _DMUS_IO_TIMESIGNATURE_ITEM -{ - MUSIC_TIME lTime; - BYTE bBeatsPerMeasure; /* beats per measure (top of time sig) */ - BYTE bBeat; /* what note receives the beat (bottom of time sig.) */ - /* we can assume that 0 means 256th note */ - WORD wGridsPerBeat; /* grids per beat */ -} DMUS_IO_TIMESIGNATURE_ITEM; - -/* DX6 time signature track - - 'tims' - ( - // size of DMUS_IO_TIMESIGNATURE_ITEM : DWORD - ... - ) -*/ - -/* DX8 Time signature track. The track has been updated from DX7 to support a list of - RIFF chunks. This will allow the time signature track to expand in the future. -*/ - -#define DMUS_FOURCC_TIMESIGTRACK_LIST mmioFOURCC('T','I','M','S') -#define DMUS_FOURCC_TIMESIG_CHUNK DMUS_FOURCC_TIMESIGNATURE_TRACK - -/* -LIST -( - 'TIMS' // Time Signature Track list-type - // Chunk containing an array of time signatures -) - - 'tims' - ( - // size of DMUS_IO_TIMESIGNATURE_ITEM : DWORD - ... - ) - -*/ - -/* DX8 Marker track. This is used to store valid start points and other - flow control parameters that may come later. For example, if we want - to implement more sophisticated looping and branching constructs, they - would live in this track. -*/ - -#define DMUS_FOURCC_MARKERTRACK_LIST mmioFOURCC('M','A','R','K') -#define DMUS_FOURCC_VALIDSTART_CHUNK mmioFOURCC('v','a','l','s') -#define DMUS_FOURCC_PLAYMARKER_CHUNK mmioFOURCC('p','l','a','y') - -/* io structures */ -typedef struct _DMUS_IO_VALID_START -{ - MUSIC_TIME mtTime; /* Time of a legal start. */ -} DMUS_IO_VALID_START; - -typedef struct _DMUS_IO_PLAY_MARKER -{ - MUSIC_TIME mtTime; /* Time of a next legal play point marker. */ -} DMUS_IO_PLAY_MARKER; - -/* -LIST -( - 'MARK' // Marker Track list-type - [] // Chunk containing an array of start points - [] // Chunk containing an array of play start markers -) - - 'vals' - ( - // size of DMUS_IO_VALID_START : DWORD - ... - ) - - 'play' - ( - // size of DMUS_IO_PLAY_MARKER : DWORD - ... - ) - -*/ - -/* segment trigger tracks */ - -/* RIFF ids: */ -#define DMUS_FOURCC_SEGTRACK_LIST mmioFOURCC('s','e','g','t') -#define DMUS_FOURCC_SEGTRACK_CHUNK mmioFOURCC('s','g','t','h') -#define DMUS_FOURCC_SEGMENTS_LIST mmioFOURCC('l','s','g','l') -#define DMUS_FOURCC_SEGMENT_LIST mmioFOURCC('l','s','e','g') -#define DMUS_FOURCC_SEGMENTITEM_CHUNK mmioFOURCC('s','g','i','h') -#define DMUS_FOURCC_SEGMENTITEMNAME_CHUNK mmioFOURCC('s','n','a','m') - -/* io structures */ -typedef struct _DMUS_IO_SEGMENT_TRACK_HEADER -{ - DWORD dwFlags; /* Reserved leave as 0. */ -} DMUS_IO_SEGMENT_TRACK_HEADER; - -typedef struct _DMUS_IO_SEGMENT_ITEM_HEADER -{ - MUSIC_TIME lTimeLogical; /* Position in track list. Time in the music with which the event is associated. */ - MUSIC_TIME lTimePhysical; /* Precise time event will be triggered. Should be close to logical time. */ - DWORD dwPlayFlags; /* Flags for PlaySegment(). */ - DWORD dwFlags; /* Flags. */ -} DMUS_IO_SEGMENT_ITEM_HEADER; - -/* values for dwflags field of DMUS_IO_SEGMENT_ITEM_HEADER */ -#define DMUS_SEGMENTTRACKF_MOTIF 1 /* interpret DMRF as link to style, and use snam as the name of a motif within the style */ - -/* -LIST -( - 'segt' // DirectMusic Segment Trigger Track form-type - [] // Segment track header - // List of Segment Lists -) - - // - 'sgth' - ( - - ) - - // - LIST - ( - 'lsgl' // Array of segments - ... // Each segment is encapsulated in a list (that way it can still be riff parsed.) - ) - - // - LIST - ( - 'lseg' - - // Link to a segment or style file. - [] // Name field. Used with DMUS_SEGMENTTRACKF_MOTIF flag. - ) - - // // segment item header - ( - // Segment item header - ) - - // - ( - // Name, stored as NULL terminated string of WCHARs - ) -*/ - -/* Script track. */ - -/* RIFF ids: */ -#define DMUS_FOURCC_SCRIPTTRACK_LIST mmioFOURCC('s','c','r','t') -#define DMUS_FOURCC_SCRIPTTRACKEVENTS_LIST mmioFOURCC('s','c','r','l') -#define DMUS_FOURCC_SCRIPTTRACKEVENT_LIST mmioFOURCC('s','c','r','e') -#define DMUS_FOURCC_SCRIPTTRACKEVENTHEADER_CHUNK mmioFOURCC('s','c','r','h') -#define DMUS_FOURCC_SCRIPTTRACKEVENTNAME_CHUNK mmioFOURCC('s','c','r','n') - -/* Flags for DMUS_IO_SCRIPTTRACK_TIMING - */ -#define DMUS_IO_SCRIPTTRACKF_PREPARE (1 << 0) /* Fire event in advance of time stamp, at Prepare time. This is the default because it leaves the script time to change the music happening at the target time. */ -#define DMUS_IO_SCRIPTTRACKF_QUEUE (1 << 1) /* Fire event just before time stamp, at Queue time. */ -#define DMUS_IO_SCRIPTTRACKF_ATTIME (1 << 2) /* Fire event right at the time stamp. */ - -typedef struct _DMUS_IO_SCRIPTTRACK_EVENTHEADER -{ - DWORD dwFlags; /* various bits (see DMUS_IO_SCRIPTTRACKF_*) */ - MUSIC_TIME lTimeLogical; /* Position in track list. Time in the music with which the event is associated. */ - MUSIC_TIME lTimePhysical; /* Precise time event will be triggered. Should be close to logical time. */ -} DMUS_IO_SCRIPTTRACK_EVENTHEADER; - -/* - // Script Track - - // - LIST - ( - // List of script events - ) - - // - LIST - ( - ... // Array of event descriptions - ) - - // - LIST - ( - // Event header chunk - - // Routine name - ) - - 'scrh' - ( - - ) - - 'scrn' - ( - // Name, stored as NULL terminated string of WCHARs - ) -*/ - -/* Lyrics/Notification track. */ - -/* RIFF ids: */ -#define DMUS_FOURCC_LYRICSTRACK_LIST mmioFOURCC('l','y','r','t') -#define DMUS_FOURCC_LYRICSTRACKEVENTS_LIST mmioFOURCC('l','y','r','l') -#define DMUS_FOURCC_LYRICSTRACKEVENT_LIST mmioFOURCC('l','y','r','e') -#define DMUS_FOURCC_LYRICSTRACKEVENTHEADER_CHUNK mmioFOURCC('l','y','r','h') -#define DMUS_FOURCC_LYRICSTRACKEVENTTEXT_CHUNK mmioFOURCC('l','y','r','n') - -typedef struct _DMUS_IO_LYRICSTRACK_EVENTHEADER -{ - DWORD dwFlags; /* Reserved leave as 0. */ - DWORD dwTimingFlags; /* Combination DMUS_PMSGF_TOOL_* flags. Determines the precise timing of when the notification happens. Invalid with the flag DMUS_PMSGF_REFTIME, DMUS_PMSGF_MUSICTIME, DMUS_PMSGF_TOOL_FLUSH, or DMUS_PMSGF_LOCKTOREFTIME. */ - MUSIC_TIME lTimeLogical; /* Position in track list. Time in the music with which the event is associated. */ - MUSIC_TIME lTimePhysical; /* Precise time event will be triggered. Should be close to logical time. */ -} DMUS_IO_LYRICSTRACK_EVENTHEADER; - -/* - // Lyrics/Notification Track - - // - LIST - ( - // List of notification events - ) - - // - LIST - ( - ... // Array of event descriptions - ) - - // - LIST - ( - // Event header chunk - // Notification text - ) - - 'lyrh' - ( - - ) - - 'lyrn' - ( - // Name, stored as NULL terminated string of WCHARs - ) -*/ - -/* Parameter control track */ - -/* RIFF ids: */ -#define DMUS_FOURCC_PARAMCONTROLTRACK_TRACK_LIST mmioFOURCC('p','r','m','t') -#define DMUS_FOURCC_PARAMCONTROLTRACK_OBJECT_LIST mmioFOURCC('p','r','o','l') -#define DMUS_FOURCC_PARAMCONTROLTRACK_OBJECT_CHUNK mmioFOURCC('p','r','o','h') -#define DMUS_FOURCC_PARAMCONTROLTRACK_PARAM_LIST mmioFOURCC('p','r','p','l') -#define DMUS_FOURCC_PARAMCONTROLTRACK_PARAM_CHUNK mmioFOURCC('p','r','p','h') -#define DMUS_FOURCC_PARAMCONTROLTRACK_CURVES_CHUNK mmioFOURCC('p','r','c','c') - -typedef struct _DMUS_IO_PARAMCONTROLTRACK_OBJECTHEADER -{ - DWORD dwFlags; /* Reserved. Must be zero. */ - GUID guidTimeFormat; /* Time format to set the object to. Must be GUID_TIME_REFERNCE or GUID_TIME_MUSIC from medparam.h. */ - /* Path for finding the object. These fields correspond to the first five parameters of IDirectMusicSegmentState::GetObjectInPath. */ - DWORD dwPChannel; - DWORD dwStage; - DWORD dwBuffer; - GUID guidObject; - DWORD dwIndex; -} DMUS_IO_PARAMCONTROLTRACK_OBJECTHEADER; - -typedef struct _DMUS_IO_PARAMCONTROLTRACK_PARAMHEADER -{ - DWORD dwFlags; /* Reserved. Must be zero. */ - DWORD dwIndex; /* Index number of the parameter on the object */ -} DMUS_IO_PARAMCONTROLTRACK_PARAMHEADER; - -typedef struct _DMUS_IO_PARAMCONTROLTRACK_CURVEINFO -{ - MUSIC_TIME mtStartTime; - MUSIC_TIME mtEndTime; - float fltStartValue; - float fltEndValue; - DWORD dwCurveType; /* One of the items from the MP_CURVE_TYPE enum in medparam.h */ - DWORD dwFlags; /* A combination of the MPF_ENVLP_* constants in medparam.h */ -} DMUS_IO_PARAMCONTROLTRACK_CURVEINFO; - -/* - // - LIST - ( - ... // one for each object - ) - - // - LIST - ( - // object header chunk - ... // one for each parameter - ) - - // - proh - ( - - ) - - // - LIST - ( - // parameter header chunk - // chunk containing an array of curves - ) - - // - prph - ( - - ) - - // - prcc - ( - // sizeof DMUS_IO_PARAMCONTROLTRACK_CURVEINFO:DWORD - ... // curves, sorted in order of mtTime - ) -*/ - -#if (DIRECTSOUND_VERSION >= 0x0800) - -/* DirectSoundBufferConfig FX Map */ - -/* RIFF ids: */ - -#define DMUS_FOURCC_DSBC_FORM mmioFOURCC('D','S','B','C') -#define DMUS_FOURCC_DSBD_CHUNK mmioFOURCC('d','s','b','d') -#define DMUS_FOURCC_BSID_CHUNK mmioFOURCC('b','s','i','d') -#define DMUS_FOURCC_DS3D_CHUNK mmioFOURCC('d','s','3','d') -#define DMUS_FOURCC_DSBC_LIST mmioFOURCC('f','x','l','s') -#define DMUS_FOURCC_DSFX_FORM mmioFOURCC('D','S','F','X') -#define DMUS_FOURCC_DSFX_CHUNK mmioFOURCC('f','x','h','r') -#define DMUS_FOURCC_DSFX_DATA mmioFOURCC('d','a','t','a') - -/* io structures */ - -typedef struct _DSOUND_IO_DSBUFFERDESC -{ - DWORD dwFlags; /* DirectSound buffer creation flags */ - WORD nChannels; /* No. of channels (rest of buffer format is determined by owning sink) */ - LONG lVolume; /* Initial pan; only used if CTRLVOLUME is specified */ - LONG lPan; /* Initial pan; only used if CTRLPAN is specified */ - DWORD dwReserved; /* Reserved - must be 0 */ -} DSOUND_IO_DSBUFFERDESC; - -typedef struct _DSOUND_IO_DSBUSID -{ - DWORD busid[1]; /* Array size determined from chunk size */ -} DSOUND_IO_DSBUSID; - -typedef struct _DSOUND_IO_3D -{ - GUID guid3DAlgorithm; /* GUID identifying the 3D algorithm to use (defined in dsound.h) */ - DS3DBUFFER ds3d; /* Initial 3D parameters */ -} DSOUND_IO_3D; - -typedef struct _DSOUND_IO_DXDMO_HEADER -{ - DWORD dwEffectFlags; /* Effect creation flags - equivalent to DSEFFECTDESC::dwFlags */ - GUID guidDSFXClass; /* GUID identifying the effect to use - corresponds to a COM CLSID */ - GUID guidReserved; /* Reserved - must be the null GUID */ - GUID guidSendBuffer; /* GUID identifying the buffer to send to if this is a send effect */ - DWORD dwReserved; /* Reserved - must be 0 */ -} DSOUND_IO_DXDMO_HEADER; - -typedef struct _DSOUND_IO_DXDMO_DATA -{ - DWORD data[1]; /* Array size determined by the DMO involved */ -} DSOUND_IO_DXDMO_DATA; - -/* -RIFF -( - 'DSBC' // DirectSoundBufferConfig chunk - [] // GUID identifier for this DirectSoundBufferConfig - [] // Optional version info - [] // Name, author, copyright info., comments - // DirectSound Buffer descriptor chunk - [] // Optional bus id array - [] // Optional 3d Parameters - [] // Optional list of FX descriptors -) - - // - 'guid' - ( - - ) - - // - 'vers' - ( - - ) - - // - 'dsbd' - ( - // Creation parameters and initial settings for the buffer - ) - - // - 'bsid' - ( - // The size of DSOUND_IO_DSBUSID is determined by the chunk size - ) - - // - 'ds3d' - ( - // Initial 3D buffer parameters: position, etc. - ) - - // - LIST - ( - 'fxls' // Array of DMO creation parameter blocks - ... // Each DMO is encapsulated in a RIFF chunk - ) - -// // DMOs can be embedded in a buffer configuration or stored as separate files -RIFF -( - 'DSFX' - // FX header chunk - [] // FX initial settings chunk -) - - // - 'fxhr' - ( - - ) - - // - 'data' - ( - // Opaque data block used by the DMO to load itself. - // For our standard included DMOs, this is simply the structure accepted by - // the DMO's SetAllParameters() method - e.g. struct DSFXChorus for Chorus. - ) -*/ - -#endif - -#ifdef __cplusplus -}; /* extern "C" */ -#endif - -#include - -#endif /* #ifndef _DMUSICF_ */ +/************************************************************************ +* * +* dmusicf.h -- This module defines the DirectMusic file formats * +* * +* Copyright (c) Microsoft Corporation. All rights reserved. * +* * +************************************************************************/ + +#ifndef _DMUSICF_ +#define _DMUSICF_ + + +#include + +#define COM_NO_WINDOWS_H +#include + +#include + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +interface IDirectMusicCollection; +#ifndef __cplusplus +typedef interface IDirectMusicCollection IDirectMusicCollection; +#endif + +/* Common chunks */ + +#define DMUS_FOURCC_GUID_CHUNK mmioFOURCC('g','u','i','d') +#define DMUS_FOURCC_INFO_LIST mmioFOURCC('I','N','F','O') +#define DMUS_FOURCC_UNFO_LIST mmioFOURCC('U','N','F','O') +#define DMUS_FOURCC_UNAM_CHUNK mmioFOURCC('U','N','A','M') +#define DMUS_FOURCC_UART_CHUNK mmioFOURCC('U','A','R','T') +#define DMUS_FOURCC_UCOP_CHUNK mmioFOURCC('U','C','O','P') +#define DMUS_FOURCC_USBJ_CHUNK mmioFOURCC('U','S','B','J') +#define DMUS_FOURCC_UCMT_CHUNK mmioFOURCC('U','C','M','T') +#define DMUS_FOURCC_CATEGORY_CHUNK mmioFOURCC('c','a','t','g') +#define DMUS_FOURCC_VERSION_CHUNK mmioFOURCC('v','e','r','s') + +/* The following structures are used by the Tracks, and are the packed structures */ +/* that are passed to the Tracks inside the IStream. */ + + +typedef struct _DMUS_IO_SEQ_ITEM +{ + MUSIC_TIME mtTime; + MUSIC_TIME mtDuration; + DWORD dwPChannel; + short nOffset; + BYTE bStatus; + BYTE bByte1; + BYTE bByte2; +} DMUS_IO_SEQ_ITEM; + + +typedef struct _DMUS_IO_CURVE_ITEM +{ + MUSIC_TIME mtStart; + MUSIC_TIME mtDuration; + MUSIC_TIME mtResetDuration; + DWORD dwPChannel; + short nOffset; + short nStartValue; + short nEndValue; + short nResetValue; + BYTE bType; + BYTE bCurveShape; + BYTE bCCData; + BYTE bFlags; + /* Following was added for DX8. */ + WORD wParamType; /* RPN or NRPN parameter number. */ + WORD wMergeIndex; /* Allows multiple parameters to be merged (pitchbend, volume, and expression.) */ +} DMUS_IO_CURVE_ITEM; + + +typedef struct _DMUS_IO_TEMPO_ITEM +{ + MUSIC_TIME lTime; + double dblTempo; +} DMUS_IO_TEMPO_ITEM; + + +typedef struct _DMUS_IO_SYSEX_ITEM +{ + MUSIC_TIME mtTime; + DWORD dwPChannel; + DWORD dwSysExLength; +} DMUS_IO_SYSEX_ITEM; + +typedef DMUS_CHORD_KEY DMUS_CHORD_PARAM; /* DMUS_CHORD_KEY defined in dmusici.h */ + +typedef struct _DMUS_RHYTHM_PARAM +{ + DMUS_TIMESIGNATURE TimeSig; + DWORD dwRhythmPattern; +} DMUS_RHYTHM_PARAM; + +typedef struct _DMUS_TEMPO_PARAM +{ + MUSIC_TIME mtTime; + double dblTempo; +} DMUS_TEMPO_PARAM; + + +typedef struct _DMUS_MUTE_PARAM +{ + DWORD dwPChannel; + DWORD dwPChannelMap; + BOOL fMute; +} DMUS_MUTE_PARAM; + +/* Style chunks */ + +#define DMUS_FOURCC_STYLE_FORM mmioFOURCC('D','M','S','T') +#define DMUS_FOURCC_STYLE_CHUNK mmioFOURCC('s','t','y','h') +#define DMUS_FOURCC_PART_LIST mmioFOURCC('p','a','r','t') +#define DMUS_FOURCC_PART_CHUNK mmioFOURCC('p','r','t','h') +#define DMUS_FOURCC_NOTE_CHUNK mmioFOURCC('n','o','t','e') +#define DMUS_FOURCC_CURVE_CHUNK mmioFOURCC('c','r','v','e') +#define DMUS_FOURCC_MARKER_CHUNK mmioFOURCC('m','r','k','r') +#define DMUS_FOURCC_RESOLUTION_CHUNK mmioFOURCC('r','s','l','n') +#define DMUS_FOURCC_ANTICIPATION_CHUNK mmioFOURCC('a','n','p','n') +#define DMUS_FOURCC_PATTERN_LIST mmioFOURCC('p','t','t','n') +#define DMUS_FOURCC_PATTERN_CHUNK mmioFOURCC('p','t','n','h') +#define DMUS_FOURCC_RHYTHM_CHUNK mmioFOURCC('r','h','t','m') +#define DMUS_FOURCC_PARTREF_LIST mmioFOURCC('p','r','e','f') +#define DMUS_FOURCC_PARTREF_CHUNK mmioFOURCC('p','r','f','c') +#define DMUS_FOURCC_STYLE_PERS_REF_LIST mmioFOURCC('p','r','r','f') +#define DMUS_FOURCC_MOTIFSETTINGS_CHUNK mmioFOURCC('m','t','f','s') + +/* Flags used by variations: these make up the DWORDs in dwVariationChoices. */ + +/* These flags determine the types of chords supported by a given variation in DirectMusic */ +/* mode. The first seven flags (bits 1-7) are set if the variation supports major chords */ +/* rooted in scale positions, so, e.g., if bits 1, 2, and 4 are set, the variation */ +/* supports major chords rooted in the tonic, second, and fourth scale positions. The */ +/* next seven flags serve the same purpose, but for minor chords, and the following seven */ +/* flags serve the same purpose for chords that are not major or minor (e.g., SUS 4 */ +/* chords). Bits 22, 23, and 24 are set if the variation supports chords rooted in the */ +/* scale, chords rooted sharp of scale tones, and chords rooted flat of scale tones, */ +/* respectively. For example, to support a C# minor chord in the scale of C Major, */ +/* bits 8 (for tonic minor) and 24 (for sharp) need to be set. Bits 25, 26, an 27 handle */ +/* chords that are triads, 6th or 7th chords, and chords with extensions, respectively. */ +/* bits 28 and 29 handle chords that are followed by tonic and dominant chords, */ +/* respectively. */ +#define DMUS_VARIATIONF_MAJOR 0x0000007F /* Seven positions in the scale - major chords. */ +#define DMUS_VARIATIONF_MINOR 0x00003F80 /* Seven positions in the scale - minor chords. */ +#define DMUS_VARIATIONF_OTHER 0x001FC000 /* Seven positions in the scale - other chords. */ +#define DMUS_VARIATIONF_ROOT_SCALE 0x00200000 /* Handles chord roots in the scale. */ +#define DMUS_VARIATIONF_ROOT_FLAT 0x00400000 /* Handles flat chord roots (based on scale notes). */ +#define DMUS_VARIATIONF_ROOT_SHARP 0x00800000 /* Handles sharp chord roots (based on scale notes). */ +#define DMUS_VARIATIONF_TYPE_TRIAD 0x01000000 /* Handles simple chords - triads. */ +#define DMUS_VARIATIONF_TYPE_6AND7 0x02000000 /* Handles simple chords - 6 and 7. */ +#define DMUS_VARIATIONF_TYPE_COMPLEX 0x04000000 /* Handles complex chords. */ +#define DMUS_VARIATIONF_DEST_TO1 0x08000000 /* Handles transitions to 1 chord. */ +#define DMUS_VARIATIONF_DEST_TO5 0x10000000 /* Handles transitions to 5 chord. */ +#define DMUS_VARIATIONF_DEST_OTHER 0x40000000 /* Handles transitions to chords other than 1 . */ + +/* legacy mask for variation modes */ +#define DMUS_VARIATIONF_MODES 0xE0000000 +/* Bits 29 and 31 of the variation flags are the Mode bits. If both are 0, it's IMA. */ +/* If bit 29 is 1, it's Direct Music. */ +#define DMUS_VARIATIONF_MODES_EX (0x20000000 | 0x80000000) +#define DMUS_VARIATIONF_IMA25_MODE 0x00000000 +#define DMUS_VARIATIONF_DMUS_MODE 0x20000000 + +/* Set this if the part uses marker events */ +#define DMUS_PARTF_USE_MARKERS 0x1 +/* Set this if the part is allowed to switch only on chord-aligned markers */ +#define DMUS_PARTF_ALIGN_CHORDS 0x2 + +/* These specify if the marker event signals whether to stop a variation or start a +pattern/variation (or both), and whether new variations must align with a chord */ +#define DMUS_MARKERF_START 0x1 +#define DMUS_MARKERF_STOP 0x2 +#define DMUS_MARKERF_CHORD_ALIGN 0x4 + +/* if this flag is set, variation settings in a playing pattern-based track's state data will +persist in the track after it stops playing */ +#define DMUS_PATTERNF_PERSIST_CONTROL 0x1 + +/* These specify possible values for DMUS_IO_PARTREF.bRandomVariation + all but DMUS_VARIATIONT_SEQUENTIAL and DMUS_VARIATIONT_RANDOM are dx8. */ +typedef enum enumDMUS_VARIATIONT_TYPES +{ + DMUS_VARIATIONT_SEQUENTIAL = 0, /* Play sequential starting with variation 1. */ + DMUS_VARIATIONT_RANDOM = 1, /* Play randomly. */ + DMUS_VARIATIONT_RANDOM_START = 2, /* Play sequential starting with a random variation. */ + DMUS_VARIATIONT_NO_REPEAT = 3, /* Play randomly, but don't play the same variation twice. */ + DMUS_VARIATIONT_RANDOM_ROW = 4 /* Play randomly as a row: don't repeat any variation until all have played. */ +} DMUS_VARIATIONT_TYPES; + +/* These specify possible values for DMUS_IO_PATTERN.wEmbellishment (dx8) */ +typedef enum enumDMUS_EMBELLISHT_TYPES +{ + DMUS_EMBELLISHT_NORMAL = 0, + DMUS_EMBELLISHT_FILL = 1, + DMUS_EMBELLISHT_BREAK = 2, + DMUS_EMBELLISHT_INTRO = 4, + DMUS_EMBELLISHT_END = 8, + DMUS_EMBELLISHT_MOTIF = 16, + DMUS_EMBELLISHT_ALL = 0xFFFF +} DMUS_EMBELLISHT_TYPES; + +#pragma pack(2) + +typedef struct _DMUS_IO_TIMESIG +{ + /* Time signatures define how many beats per measure, which note receives */ + /* the beat, and the grid resolution. */ + BYTE bBeatsPerMeasure; /* beats per measure (top of time sig) */ + BYTE bBeat; /* what note receives the beat (bottom of time sig.) */ + /* we can assume that 0 means 256th note */ + WORD wGridsPerBeat; /* grids per beat */ +} DMUS_IO_TIMESIG; + +typedef struct _DMUS_IO_STYLE +{ + DMUS_IO_TIMESIG timeSig; /* Styles have a default Time Signature */ + double dblTempo; +} DMUS_IO_STYLE; + +typedef struct _DMUS_IO_VERSION +{ + DWORD dwVersionMS; /* Version # high-order 32 bits */ + DWORD dwVersionLS; /* Version # low-order 32 bits */ +} DMUS_IO_VERSION; + +typedef struct _DMUS_IO_PATTERN +{ + DMUS_IO_TIMESIG timeSig; /* Patterns can override the Style's Time sig. */ + BYTE bGrooveBottom; /* bottom of groove range */ + BYTE bGrooveTop; /* top of groove range */ + WORD wEmbellishment; /* Fill, Break, Intro, End, Normal, Motif */ + WORD wNbrMeasures; /* length in measures */ + BYTE bDestGrooveBottom; /* bottom of groove range for next pattern */ + BYTE bDestGrooveTop; /* top of groove range for next pattern */ + DWORD dwFlags; /* various flags */ +} DMUS_IO_PATTERN; + +typedef struct _DMUS_IO_STYLEPART +{ + DMUS_IO_TIMESIG timeSig; /* can override pattern's */ + DWORD dwVariationChoices[32]; /* MOAW choice bitfield */ + GUID guidPartID; /* identifies the part */ + WORD wNbrMeasures; /* length of the Part */ + BYTE bPlayModeFlags; /* see PLAYMODE flags */ + BYTE bInvertUpper; /* inversion upper limit */ + BYTE bInvertLower; /* inversion lower limit */ + BYTE bPad[3]; /* for DWORD alignment */ + DWORD dwFlags; /* various flags */ +} DMUS_IO_STYLEPART; + +typedef struct _DMUS_IO_PARTREF +{ + GUID guidPartID; /* unique ID for matching up with parts */ + WORD wLogicalPartID; /* corresponds to port/device/midi channel OBSOLETE */ + BYTE bVariationLockID; /* parts with the same ID lock variations. */ + /* high bit is used to identify master Part */ + BYTE bSubChordLevel; /* tells which sub chord level this part wants */ + BYTE bPriority; /* 256 priority levels. Parts with lower priority */ + /* aren't played first when a device runs out of */ + /* notes */ + BYTE bRandomVariation; /* when set, matching variations play in random order */ + /* when clear, matching variations play sequentially */ + WORD wPad; /* not used */ + DWORD dwPChannel; /* replaces wLogicalPartID */ +} DMUS_IO_PARTREF; + +typedef struct _DMUS_IO_STYLENOTE +{ + MUSIC_TIME mtGridStart; /* when this note occurs */ + DWORD dwVariation; /* variation bits */ + MUSIC_TIME mtDuration; /* how long this note lasts */ + short nTimeOffset; /* offset from mtGridStart */ + WORD wMusicValue; /* Position in scale. */ + BYTE bVelocity; /* Note velocity. */ + BYTE bTimeRange; /* Range to randomize start time. */ + BYTE bDurRange; /* Range to randomize duration. */ + BYTE bVelRange; /* Range to randomize velocity. */ + BYTE bInversionID; /* Identifies inversion group to which this note belongs */ + BYTE bPlayModeFlags; /* Can override part */ + /* Following exists only under DX8 and on */ + BYTE bNoteFlags; /* values from DMUS_NOTEF_FLAGS */ +} DMUS_IO_STYLENOTE; + +typedef struct _DMUS_IO_STYLECURVE +{ + MUSIC_TIME mtGridStart; /* when this curve occurs */ + DWORD dwVariation; /* variation bits */ + MUSIC_TIME mtDuration; /* how long this curve lasts */ + MUSIC_TIME mtResetDuration;/* how long after the end of the curve to reset the curve */ + short nTimeOffset; /* offset from mtGridStart */ + short nStartValue; /* curve's start value */ + short nEndValue; /* curve's end value */ + short nResetValue; /* the value to which to reset the curve */ + BYTE bEventType; /* type of curve */ + BYTE bCurveShape; /* shape of curve */ + BYTE bCCData; /* CC# */ + BYTE bFlags; /* Bit 1=TRUE means to send nResetValue. Otherwise, don't. + Other bits are reserved. */ + /* Following was added for DX8. */ + WORD wParamType; /* RPN or NRPN parameter number. */ + WORD wMergeIndex; /* Allows multiple parameters to be merged (pitchbend, volume, and expression.) */ +} DMUS_IO_STYLECURVE; + +typedef struct _DMUS_IO_STYLEMARKER +{ + MUSIC_TIME mtGridStart; /* when this marker occurs */ + DWORD dwVariation; /* variation bits */ + WORD wMarkerFlags; /* how the marker is used */ +} DMUS_IO_STYLEMARKER; + +typedef struct _DMUS_IO_STYLERESOLUTION +{ + DWORD dwVariation; /* variation bits */ + WORD wMusicValue; /* Position in scale. */ + BYTE bInversionID; /* Identifies inversion group to which this note belongs */ + BYTE bPlayModeFlags; /* Can override part */ +} DMUS_IO_STYLERESOLUTION; + +typedef struct _DMUS_IO_STYLE_ANTICIPATION +{ + MUSIC_TIME mtGridStart; /* when this anticipation occurs */ + DWORD dwVariation; /* variation bits */ + short nTimeOffset; /* offset from mtGridStart */ + BYTE bTimeRange; /* Range to randomize start time. */ +} DMUS_IO_STYLE_ANTICIPATION; + +typedef struct _DMUS_IO_MOTIFSETTINGS +{ + DWORD dwRepeats; /* Number of repeats. By default, 0. */ + MUSIC_TIME mtPlayStart; /* Start of playback. By default, 0. */ + MUSIC_TIME mtLoopStart; /* Start of looping portion. By default, 0. */ + MUSIC_TIME mtLoopEnd; /* End of loop. Must be greater than mtLoopStart. Or, 0, indicating loop full motif. */ + DWORD dwResolution; /* Default resolution. */ +} DMUS_IO_MOTIFSETTINGS; + +#pragma pack() + + +/* +RIFF +( + 'DMST' // Style + // Style header chunk + // Every Style has a GUID + [] // Name, author, copyright info., comments + [] // version chunk + ... // Array of parts in the Style, used by patterns + ... // Array of patterns in the Style + ... // Array of bands in the Style + []...// Optional array of chord map references in the Style +) + + // + styh + ( + + ) + + // + guid + ( + + ) + + // + vers + ( + + ) + + // + LIST + ( + 'part' + // Part header chunk + [] // Name, author, copyright info., comments + [] // Optional chunk containing an array of notes in Part + [] // Optional chunk containing an array of curves in Part + [] // Optional chunk containing an array of markers in Part + [] // Optional chunk containing an array of variation resolutions in Part + [] // Optional chunk containing an array of resolution anticipations in Part + ) + + // + prth + ( + + ) + + // + 'note' + ( + // sizeof DMUS_IO_STYLENOTE:DWORD + ... + ) + + // + 'crve' + ( + // sizeof DMUS_IO_STYLECURVE:DWORD + ... + ) + + // + 'mrkr' + ( + // sizeof DMUS_IO_STYLEMARKER:DWORD + ... + ) + + // + 'rsln' + ( + // sizeof DMUS_IO_STYLERESOLUTION:DWORD + ... + ) + + // + 'anpn' + ( + // sizeof DMUS_IO_STYLE_ANTICIPATION:DWORD + ... + ) + + // + LIST + ( + 'pttn' + // Pattern header chunk + // Chunk containing an array of rhythms for chord matching + [] // Name, author, copyright info., comments + [] // Motif settings chunk + [] // Optional band to be associated with the pattern (for motifs) + ... // Array of part reference id's + ) + + // + ptnh + ( + + ) + + // + 'rhtm' + ( + // DWORD's representing rhythms for chord matching based on number + // of measures in the pattern + ) + + + // pref-list + LIST + ( + 'pref' + // part ref chunk + ) + + // + prfc + ( + + ) + + // + mtfs + ( + + ) + + // + LIST + ( + 'prrf' + ... // Array of Chordmap references + ) +*/ + +/* Pattern chunk, for use in Pattern tracks */ + +#define DMUS_FOURCC_PATTERN_FORM mmioFOURCC('D','M','P','T') + +/* +RIFF +( + 'DMPT' // Pattern + // Style header chunk + // The pattern, in single pattern format (includes DMUS_FOURCC_PART_LIST chunks) +) +*/ + + +/* Chord and command file formats */ + +/* These specify possible values for DMUS_IO_COMMAND.bRepeatMode (dx8) */ +typedef enum enumDMUS_PATTERNT_TYPES +{ + DMUS_PATTERNT_RANDOM = 0, /* Play randomly. (dx7 behavior) */ + DMUS_PATTERNT_REPEAT = 1, /* Repeat last pattern. */ + DMUS_PATTERNT_SEQUENTIAL = 2, /* Play sequential starting with first matching pattern. */ + DMUS_PATTERNT_RANDOM_START = 3, /* Play sequential starting with a random pattern. */ + DMUS_PATTERNT_NO_REPEAT = 4, /* Play randomly, but don't play the same pattern twice. */ + DMUS_PATTERNT_RANDOM_ROW = 5 /* Play randomly as a row: don't repeat any pattern until all have played. */ +} DMUS_PATTERNT_TYPES; + + +#define DMUS_FOURCC_CHORDTRACK_LIST mmioFOURCC('c','o','r','d') +#define DMUS_FOURCC_CHORDTRACKHEADER_CHUNK mmioFOURCC('c','r','d','h') +#define DMUS_FOURCC_CHORDTRACKBODY_CHUNK mmioFOURCC('c','r','d','b') + +#define DMUS_FOURCC_COMMANDTRACK_CHUNK mmioFOURCC('c','m','n','d') + +typedef struct _DMUS_IO_CHORD +{ + WCHAR wszName[16]; /* Name of the chord */ + MUSIC_TIME mtTime; /* Time of this chord */ + WORD wMeasure; /* Measure this falls on */ + BYTE bBeat; /* Beat this falls on */ + BYTE bFlags; /* Various flags */ +} DMUS_IO_CHORD; + +typedef struct _DMUS_IO_SUBCHORD +{ + DWORD dwChordPattern; /* Notes in the subchord */ + DWORD dwScalePattern; /* Notes in the scale */ + DWORD dwInversionPoints; /* Where inversions can occur */ + DWORD dwLevels; /* Which levels are supported by this subchord */ + BYTE bChordRoot; /* Root of the subchord */ + BYTE bScaleRoot; /* Root of the scale */ +} DMUS_IO_SUBCHORD; + +typedef struct _DMUS_IO_COMMAND +{ + MUSIC_TIME mtTime; /* Time of this command */ + WORD wMeasure; /* Measure this falls on */ + BYTE bBeat; /* Beat this falls on */ + BYTE bCommand; /* Command type (see #defines below) */ + BYTE bGrooveLevel; /* Groove level (0 if command is not a groove) */ + BYTE bGrooveRange; /* Groove range */ + BYTE bRepeatMode; /* Used to control selection of patterns with same groove level */ +} DMUS_IO_COMMAND; + + +/* + + // + LIST + ( + 'cord' + + ... // Chord body chunks + ) + + // + crdh + ( + // Scale: dword (upper 8 bits for root, lower 24 for scale) + ) + + // + crdb + ( + // sizeof DMUS_IO_CHORD:dword + + // # of DMUS_IO_SUBCHORDS:dword + // sizeof DMUS_IO_SUBCHORDS:dword + // a number of + ) + + + // + 'cmnd' + ( + //sizeof DMUS_IO_COMMAND: DWORD + ... + ) + +*/ + +/* File io for DirectMusic Tool and ToolGraph objects +*/ + +/* RIFF ids: */ + +#define DMUS_FOURCC_TOOLGRAPH_FORM mmioFOURCC('D','M','T','G') +#define DMUS_FOURCC_TOOL_LIST mmioFOURCC('t','o','l','l') +#define DMUS_FOURCC_TOOL_FORM mmioFOURCC('D','M','T','L') +#define DMUS_FOURCC_TOOL_CHUNK mmioFOURCC('t','o','l','h') + +/* io structures: */ + +typedef struct _DMUS_IO_TOOL_HEADER +{ + GUID guidClassID; /* Class id of tool. */ + long lIndex; /* Position in graph. */ + DWORD cPChannels; /* Number of items in channels array. */ + FOURCC ckid; /* chunk ID of tool's data chunk if 0 fccType valid. */ + FOURCC fccType; /* list type if NULL ckid valid. */ + DWORD dwPChannels[1]; /* Array of PChannels, size determined by cPChannels. */ +} DMUS_IO_TOOL_HEADER; + +/* +RIFF +( + 'DMTG' // DirectMusic ToolGraph chunk + [] // GUID for ToolGraph + [] // Optional version info + [] // Name, author, copyright info., comments + // List of Tools +) + + // + 'guid' + ( + + ) + + // + vers + ( + + ) + + // + LIST + ( + 'toll' // Array of tools + ... // Each tool is encapsulated in a RIFF chunk + ) + +// Tools are embedded in a graph. Theoretically, they can be saved as individual files too. +RIFF +( + 'DMTL' + + [] // Tool data. Must be a RIFF readable chunk. +) + + // // Tool header chunk + ( + 'tolh' + // Tool header + ) +*/ + +/* The AudioPath file carries everything for describing a specific audio path, + including Tool Graph and Buffer Descriptor. + This can even be used for configuring a complete performance. +*/ + +#define DMUS_FOURCC_AUDIOPATH_FORM mmioFOURCC('D','M','A','P') + +/* +RIFF +( + 'DMAP' // DirectMusic AudioPath chunk + [] // GUID for this Audio Path configuration + [] // Optional version info + [] // Name, author, copyright info., comments + [] // Optional ToolGraph + [] // Optional list of port configurations + []...// Optional array of Dsound buffer descriptors +) +*/ + +#define DMUS_FOURCC_PORTCONFIGS_LIST mmioFOURCC('p','c','s','l') +#define DMUS_FOURCC_PORTCONFIG_LIST mmioFOURCC('p','c','f','l') +#define DMUS_FOURCC_PORTCONFIG_ITEM mmioFOURCC('p','c','f','h') +#define DMUS_FOURCC_PORTPARAMS_ITEM mmioFOURCC('p','p','r','h') +#define DMUS_FOURCC_DSBUFFER_LIST mmioFOURCC('d','b','f','l') +#define DMUS_FOURCC_DSBUFFATTR_ITEM mmioFOURCC('d','d','a','h') +#define DMUS_FOURCC_PCHANNELS_LIST mmioFOURCC('p','c','h','l') +#define DMUS_FOURCC_PCHANNELS_ITEM mmioFOURCC('p','c','h','h') + +typedef struct _DMUS_IO_PORTCONFIG_HEADER +{ + GUID guidPort; /* GUID of requested port. */ + DWORD dwPChannelBase; /* PChannel that this should start on. */ + DWORD dwPChannelCount; /* How many channels. */ + DWORD dwFlags; /* Various flags. */ +} DMUS_IO_PORTCONFIG_HEADER; + +#define DMUS_PORTCONFIGF_DRUMSON10 1 /* This port configured for drums on channel 10. */ +#define DMUS_PORTCONFIGF_USEDEFAULT 2 /* Use the default port. */ + +/* Each portconfig has one or more pchannel to buffer mappings. Each buffer + is identified by a guid. Each pchannel can map to one or more buffers. + This is defined with one or more DMUS_IO_PCHANNELTOBUFFER_HEADER + structures. Each defines a range of PChannels and the set of buffers + that they connect to. +*/ + +typedef struct _DMUS_IO_PCHANNELTOBUFFER_HEADER +{ + DWORD dwPChannelBase; /* PChannel that this should start on. */ + DWORD dwPChannelCount; /* How many PChannels. */ + DWORD dwBufferCount; /* How many buffers do these connect to. */ + DWORD dwFlags; /* Various flags. Currently reserved for future use. Must be 0. */ +} DMUS_IO_PCHANNELTOBUFFER_HEADER; + +/* Each buffer is represented by an DSBC form. This is wrapped by the + DMUS_IO_BUFFER_ATTRIBUTES_HEADER which identifies how to use the + buffer. In particular, it indicates whether this gets dynamically duplicated + or all references to this should share the same instance. + To resolve references, the unique GUID of the buffer is also stored + in this structure. +*/ + +typedef struct _DMUS_IO_BUFFER_ATTRIBUTES_HEADER +{ + GUID guidBufferID; /* Each buffer config has a unique ID. */ + DWORD dwFlags; /* Various flags. */ +} DMUS_IO_BUFFER_ATTRIBUTES_HEADER; + +/* DMUS_IO_BUFFER_ATTRIBUTES_HEADER.dwFlags: */ +#define DMUS_BUFFERF_SHARED 1 /* Share this with other audio paths, instead of creating unique copies. */ +#define DMUS_BUFFERF_DEFINED 2 /* Use one of the standard predefined buffers (see GUID_Buffer... in dmusici.h.) */ +#define DMUS_BUFFERF_MIXIN 8 /* This is a mixin buffer. */ + +/* + +LIST +( + 'pcsl' // Array of port configurations + ... // One or more port configurations, each in a list chunk +) + +LIST +( + 'pcfl' // List container for one port configuration. + // Portconfig header chunk. + // Port params, to be used to create the port. + []...// Optional array of Dsound buffer descriptors + [] // Optional list of pchannel to buffer assignments + +) + + // // Port config header chunk + ( + 'pcfh' + // Port config header + ) + + // // Port params header chunk + ( + 'pprh' + // Port params header + ) + +LIST +( + 'pchl' // List container for one or more pchannel to buffer assignments. + ... // One or more pchannel to buffer assignment headers and data. + + // + ( + 'pchh' + // Description of PChannels + ... // Array of GUIDs defining the buffers they all connect to. + ) +) + +LIST +( + 'dbfl' // List container for one buffer and buffer attributes header. + // Buffer attributes header. + [] // Buffer configuration. Not required when header uses a predefined buffer type. + + // + ( + 'ddah' + // Buffer attributes. + ) +) +*/ + +/* File io for DirectMusic Band Track object */ + + +/* RIFF ids: */ +#define DMUS_FOURCC_BANDTRACK_FORM mmioFOURCC('D','M','B','T') +#define DMUS_FOURCC_BANDTRACK_CHUNK mmioFOURCC('b','d','t','h') +#define DMUS_FOURCC_BANDS_LIST mmioFOURCC('l','b','d','l') +#define DMUS_FOURCC_BAND_LIST mmioFOURCC('l','b','n','d') +#define DMUS_FOURCC_BANDITEM_CHUNK mmioFOURCC('b','d','i','h') +#define DMUS_FOURCC_BANDITEM_CHUNK2 mmioFOURCC('b','d','2','h') + +/* io structures */ +typedef struct _DMUS_IO_BAND_TRACK_HEADER +{ + BOOL bAutoDownload; /* Determines if Auto-Download is enabled. */ +} DMUS_IO_BAND_TRACK_HEADER; + +typedef struct _DMUS_IO_BAND_ITEM_HEADER +{ + MUSIC_TIME lBandTime; /* Position in track list. */ +} DMUS_IO_BAND_ITEM_HEADER; + +typedef struct _DMUS_IO_BAND_ITEM_HEADER2 +{ + MUSIC_TIME lBandTimeLogical; /* Position in track list. Time in the music with which band change is associated. */ + MUSIC_TIME lBandTimePhysical; /* Precise time band change will take effect. Should be close to logical time. */ +} DMUS_IO_BAND_ITEM_HEADER2; + +/* +RIFF +( + 'DMBT' // DirectMusic Band Track form-type + [] // Band track header + [] // GUID for band track + [] // Optional version info + [] // Name, author, copyright info., comments + // List of Band items +) + + // + 'bdth' + ( + + ) + + // + 'guid' + ( + + ) + + // + vers + ( + + ) + + // + LIST + ( + 'lbdl' + ... // Array of bands, each encapsulated in a list chunk + ) + + // + LIST + ( + 'lbnd' + or // bdih is a legacy format. bd2h is preferred for new content. + // Band + ) + + // or // band item header + ( + or // Band item header + ) +*/ + + +/* File io for DirectMusic Band object +*/ + +/* RIFF ids: */ + +#define DMUS_FOURCC_BAND_FORM mmioFOURCC('D','M','B','D') +#define DMUS_FOURCC_INSTRUMENTS_LIST mmioFOURCC('l','b','i','l') +#define DMUS_FOURCC_INSTRUMENT_LIST mmioFOURCC('l','b','i','n') +#define DMUS_FOURCC_INSTRUMENT_CHUNK mmioFOURCC('b','i','n','s') + +/* Flags for DMUS_IO_INSTRUMENT + */ +#define DMUS_IO_INST_PATCH (1 << 0) /* dwPatch is valid. */ +#define DMUS_IO_INST_BANKSELECT (1 << 1) /* dwPatch contains a valid Bank Select MSB and LSB part */ +#define DMUS_IO_INST_ASSIGN_PATCH (1 << 3) /* dwAssignPatch is valid */ +#define DMUS_IO_INST_NOTERANGES (1 << 4) /* dwNoteRanges is valid */ +#define DMUS_IO_INST_PAN (1 << 5) /* bPan is valid */ +#define DMUS_IO_INST_VOLUME (1 << 6 ) /* bVolume is valid */ +#define DMUS_IO_INST_TRANSPOSE (1 << 7) /* nTranspose is valid */ +#define DMUS_IO_INST_GM (1 << 8) /* Instrument is from GM collection */ +#define DMUS_IO_INST_GS (1 << 9) /* Instrument is from GS collection */ +#define DMUS_IO_INST_XG (1 << 10) /* Instrument is from XG collection */ +#define DMUS_IO_INST_CHANNEL_PRIORITY (1 << 11) /* dwChannelPriority is valid */ +#define DMUS_IO_INST_USE_DEFAULT_GM_SET (1 << 12) /* Always use the default GM set for this patch, */ + /* don't rely on the synth caps stating GM or GS in hardware. */ +#define DMUS_IO_INST_PITCHBENDRANGE (1 << 13) /* nPitchBendRange is valid */ + +/* io structures */ +typedef struct _DMUS_IO_INSTRUMENT +{ + DWORD dwPatch; /* MSB, LSB and Program change to define instrument */ + DWORD dwAssignPatch; /* MSB, LSB and Program change to assign to instrument when downloading */ + DWORD dwNoteRanges[4]; /* 128 bits; one for each MIDI note instrument needs to able to play */ + DWORD dwPChannel; /* PChannel instrument plays on */ + DWORD dwFlags; /* DMUS_IO_INST_ flags */ + BYTE bPan; /* Pan for instrument */ + BYTE bVolume; /* Volume for instrument */ + short nTranspose; /* Number of semitones to transpose notes */ + DWORD dwChannelPriority; /* Channel priority */ + short nPitchBendRange; /* Number of semitones shifted by pitch bend */ +} DMUS_IO_INSTRUMENT; + +/* +// bands can be embedded in other forms +RIFF +( + 'DMBD' // DirectMusic Band chunk + [] // GUID for band + [] // Optional version info + [] // Name, author, copyright info., comments + // List of Instruments +) + + // + 'guid' + ( + + ) + + // + vers + ( + + ) + + // + LIST + ( + 'lbil' // Array of instruments + ... // Each instrument is encapsulated in a list + ) + + // + LIST + ( + 'lbin' + + [] // Optional reference to DLS Collection file. + ) + + // // Instrument chunk + ( + 'bins' + // Instrument header + ) +*/ + +/* This RIFF id and io struct have been added to allow wave files (and the wave object) to + differentiate between streaming and one-shot waves, and to give a prefetch for streaming + waves */ + +#define DMUS_FOURCC_WAVEHEADER_CHUNK mmioFOURCC('w','a','v','h') + +typedef struct _DMUS_IO_WAVE_HEADER +{ + REFERENCE_TIME rtReadAhead; /* How far ahead in the stream wave data will be read (in REFERENCE_TIME). Ignored for one-shot waves. */ + DWORD dwFlags; /* Various flags, including whether this is a streaming wave and whether it can be invalidated. */ +} DMUS_IO_WAVE_HEADER; + + +/* File io for Wave track */ + +/* RIFF ids: */ + +#define DMUS_FOURCC_WAVETRACK_LIST mmioFOURCC('w','a','v','t') +#define DMUS_FOURCC_WAVETRACK_CHUNK mmioFOURCC('w','a','t','h') +#define DMUS_FOURCC_WAVEPART_LIST mmioFOURCC('w','a','v','p') +#define DMUS_FOURCC_WAVEPART_CHUNK mmioFOURCC('w','a','p','h') +#define DMUS_FOURCC_WAVEITEM_LIST mmioFOURCC('w','a','v','i') +#define DMUS_FOURCC_WAVE_LIST mmioFOURCC('w','a','v','e') +#define DMUS_FOURCC_WAVEITEM_CHUNK mmioFOURCC('w','a','i','h') + +/* This flag is included in DMUS_IO_WAVE_TRACK_HEADER.dwFlags. If set, the track will get its + variations from a pattern track, via GetParam(GUID_Variations). */ +#define DMUS_WAVETRACKF_SYNC_VAR 0x1 +/* This is also included in DMUS_IO_WAVE_TRACK_HEADER.dwFlags. If set, variation control + information will persist from one playback instance to the next.*/ +#define DMUS_WAVETRACKF_PERSIST_CONTROL 0x2 + +typedef struct _DMUS_IO_WAVE_TRACK_HEADER +{ + long lVolume; /* Gain, in 1/100th of dB, to be applied to all waves. Note: All gain values should be negative. */ + DWORD dwFlags; /* Flags, including whether this track syncs to a pattern track for its variations. */ +} DMUS_IO_WAVE_TRACK_HEADER; + +typedef struct _DMUS_IO_WAVE_PART_HEADER +{ + long lVolume; /* Gain, in 1/100th of dB, to be applied to all waves in wave part. Note: All gain values should be negative. */ + DWORD dwVariations; /* Variation mask for which of 32 variations */ + DWORD dwPChannel; /* PChannel */ + DWORD dwLockToPart; /* Part ID to lock to. */ + DWORD dwFlags; /* Flags, including stuff for managing how variations are chosen (in low-order nibble) */ + DWORD dwIndex; /* Index for distinguishing multiple parts on the same PChannel*/ +} DMUS_IO_WAVE_PART_HEADER; + +typedef struct _DMUS_IO_WAVE_ITEM_HEADER +{ + long lVolume; /* Gain, in 1/100th of dB. Note: All gain values should be negative. */ + long lPitch; /* Pitch offset in 1/100th of a semitone. */ + DWORD dwVariations; /* Variation flags for which of 32 variations this wave belongs to. */ + REFERENCE_TIME rtTime; /* Start time, in REFERENCE_TIME, if clock time track, or MUSIC_TIME for music time track. */ + REFERENCE_TIME rtStartOffset; /* Distance into wave to start playback, in reference time units. */ + REFERENCE_TIME rtReserved; /* Reserved field. */ + REFERENCE_TIME rtDuration; /* Duration, in REFERENCE_TIME or MUSIC_TIME, depending on track timing format. */ + MUSIC_TIME mtLogicalTime; /* If in music track format, this indicates the musical boundary where this belongs. Otherwise, ignored. */ + DWORD dwLoopStart; /* Start point for a looping wave. */ + DWORD dwLoopEnd; /* End point for a looping wave. */ + DWORD dwFlags; /* Various flags, including whether this is a streaming wave and whether it can be invalidated. */ + WORD wVolumeRange; /* Random range for volume. */ + WORD wPitchRange; /* Random range for pitch. */ +} DMUS_IO_WAVE_ITEM_HEADER; + +/* +LIST +{ + 'wavt' // Wave track chunk + // Wave track header + ... // Array of Wave Parts +} + // + 'wath' + { + + } + + // + LIST + { + 'wavp' + // Wave Part Header + // List of wave items + } + + // + 'waph' + { + + } + + // + LIST + { + 'wavi' + ... // Array of waves; each wave is encapsulated in a list + } + + // + LIST + { + 'wave' + // Wave item header + // Reference to wave object + } + + // + 'waih' + { + + } + +*/ + +/* File io for DirectMusic Container file. This embeds a set of related files. And, + in turn, it can be embedded within a segment or script file. +*/ + +#define DMUS_FOURCC_CONTAINER_FORM mmioFOURCC('D','M','C','N') +#define DMUS_FOURCC_CONTAINER_CHUNK mmioFOURCC('c','o','n','h') +#define DMUS_FOURCC_CONTAINED_ALIAS_CHUNK mmioFOURCC('c','o','b','a') +#define DMUS_FOURCC_CONTAINED_OBJECT_CHUNK mmioFOURCC('c','o','b','h') +#define DMUS_FOURCC_CONTAINED_OBJECTS_LIST mmioFOURCC('c','o','s','l') +#define DMUS_FOURCC_CONTAINED_OBJECT_LIST mmioFOURCC('c','o','b','l') + +typedef struct _DMUS_IO_CONTAINER_HEADER +{ + DWORD dwFlags; /* Flags. */ +} DMUS_IO_CONTAINER_HEADER; + +#define DMUS_CONTAINER_NOLOADS (1 << 1) /* Contained items are not loaded when the container is loaded. + Entries will be created in the loader (via SetObject) but + the actual objects will not be created until they are + specifically loaded at a later time. */ + +typedef struct _DMUS_IO_CONTAINED_OBJECT_HEADER +{ + GUID guidClassID; /* Class id of object. */ + DWORD dwFlags; /* Flags, for example DMUS_CONTAINED_OBJF_KEEP. */ + FOURCC ckid; /* chunk ID of track's data chunk if 0 fccType valid. */ + FOURCC fccType; /* list type if NULL ckid valid */ + /* Note that LIST:DMRF may be used for ckid and fccType in order to reference an + object instead of embedding it within the container. */ +} DMUS_IO_CONTAINED_OBJECT_HEADER; + +#define DMUS_CONTAINED_OBJF_KEEP 1 /* Keep the object cached in the loader after the container is released. */ + +/* +RIFF +( + 'DMCN' // DirectMusic Container chunk + // Container header chunk + [] // GUID for container + [] // Optional version info + [] // Name, author, copyright info., comments + // List of objects. +) + + // + 'conh' + ( + + ) + + // + 'guid' + ( + + ) + + // + vers + ( + + ) + + LIST + ( + 'cosl' // Array of embedded objects. + ... // Each object is encapsulated in a LIST chunk + ) + + // // Encapsulates one object + LIST + ( + 'cobl' + [] // Alias. An alternative name by which this object is known + // within the container. + // Required header, includes CLASS ID for object. + [] or // Object data of the type specified in . + // If DMRF, it is a reference of where to find the object. + // Otherwise, it could be any RIFF readable chunk in the + // exact same format as a file. The object will load + // itself from this data. + ) + + // + 'coba' + ( + // Alias, stored as NULL terminated string of WCHARs + ) + + // + 'cobh' + ( + + ) +*/ + +/* File io for DirectMusic Segment object */ + +/* RIFF ids: */ + +#define DMUS_FOURCC_SEGMENT_FORM mmioFOURCC('D','M','S','G') +#define DMUS_FOURCC_SEGMENT_CHUNK mmioFOURCC('s','e','g','h') +#define DMUS_FOURCC_TRACK_LIST mmioFOURCC('t','r','k','l') +#define DMUS_FOURCC_TRACK_FORM mmioFOURCC('D','M','T','K') +#define DMUS_FOURCC_TRACK_CHUNK mmioFOURCC('t','r','k','h') +#define DMUS_FOURCC_TRACK_EXTRAS_CHUNK mmioFOURCC('t','r','k','x') + +/* io structures:*/ + +typedef struct _DMUS_IO_SEGMENT_HEADER +{ + DWORD dwRepeats; /* Number of repeats. By default, 0. */ + MUSIC_TIME mtLength; /* Length, in music time. */ + MUSIC_TIME mtPlayStart; /* Start of playback. By default, 0. */ + MUSIC_TIME mtLoopStart; /* Start of looping portion. By default, 0. */ + MUSIC_TIME mtLoopEnd; /* End of loop. Must be greater than dwPlayStart. Or, 0, indicating loop full segment. */ + DWORD dwResolution; /* Default resolution. */ + /* Following added for DX8: */ + REFERENCE_TIME rtLength; /* Length, in reference time (overrides music time length.) */ + DWORD dwFlags; + DWORD dwReserved; /* Reserved. */ + /* Added for DX9. */ + REFERENCE_TIME rtLoopStart; /* Clock time loop start. */ + REFERENCE_TIME rtLoopEnd; /* Clock time loop end. */ + REFERENCE_TIME rtPlayStart; /* Start of playback in clock time. */ +} DMUS_IO_SEGMENT_HEADER; + +#define DMUS_SEGIOF_REFLENGTH 1 /* Use the time in rtLength for the segment length. */ +#define DMUS_SEGIOF_CLOCKTIME 2 /* This is a clock time segment. */ + +typedef struct _DMUS_IO_TRACK_HEADER +{ + GUID guidClassID; /* Class id of track. */ + DWORD dwPosition; /* Position in track list. */ + DWORD dwGroup; /* Group bits for track. */ + FOURCC ckid; /* chunk ID of track's data chunk. */ + FOURCC fccType; /* list type if ckid is RIFF or LIST */ +} DMUS_IO_TRACK_HEADER; + +/* Additional parameters for the track header chunk, introduced in DX8 and + on, are stored in a separate chunk. */ + +typedef struct _DMUS_IO_TRACK_EXTRAS_HEADER +{ + DWORD dwFlags; /* DX8 Added flags for control tracks. */ + DWORD dwPriority; /* Priority for composition. */ +} DMUS_IO_TRACK_EXTRAS_HEADER; + +/* +RIFF +( + 'DMSG' // DirectMusic Segment chunk + // Segment header chunk + [] // GUID for segment + [] // Optional version info + [] // Name, author, copyright info., comments + [] // Optional container of objects embedded in file. Must precede tracklist. + // List of Tracks + [] // Optional ToolGraph + [] // Optional Audio Path +) + + // + 'segh' + ( + + ) + + // + 'guid' + ( + + ) + + // + vers + ( + + ) + + // + LIST + ( + 'trkl' // Array of tracks + ... // Each track is encapsulated in a RIFF chunk + ) + + // // Tracks can be embedded in a segment or stored as separate files. + RIFF + ( + 'DMTK' + + [] // Optional track flags. + [] // Optional GUID for track object instance (not to be confused with Class id in track header) + [] // Optional version info + [] // Optional name, author, copyright info., comments + [] // Track data. Must be a RIFF readable chunk. + ) + + // // Track header chunk + ( + 'trkh' + // Track header + ) + + // // Track flags chunk + ( + 'trkx' + // DX8 Track flags header + ) +*/ + +/* File io for DirectMusic reference chunk. + This is used to embed a reference to an object. +*/ + +/* RIFF ids: */ + +#define DMUS_FOURCC_REF_LIST mmioFOURCC('D','M','R','F') +#define DMUS_FOURCC_REF_CHUNK mmioFOURCC('r','e','f','h') +#define DMUS_FOURCC_DATE_CHUNK mmioFOURCC('d','a','t','e') +#define DMUS_FOURCC_NAME_CHUNK mmioFOURCC('n','a','m','e') +#define DMUS_FOURCC_FILE_CHUNK mmioFOURCC('f','i','l','e') + +typedef struct _DMUS_IO_REFERENCE +{ + GUID guidClassID; /* Class id is always required. */ + DWORD dwValidData; /* Flags. */ +} DMUS_IO_REFERENCE; + +/* +LIST +( + 'DMRF' // DirectMusic Reference chunk + // Reference header chunk + [] // Optional object GUID. + [] // Optional file date. + [] // Optional name. + [] // Optional file name. + [] // Optional category name. + [] // Optional version info. +) + + // + 'refh' + ( + + ) + + // + 'guid' + ( + + ) + + // + date + ( + + ) + + // + name + ( + // Name, stored as NULL terminated string of WCHARs + ) + + // + file + ( + // File name, stored as NULL terminated string of WCHARs + ) + + // + catg + ( + // Category name, stored as NULL terminated string of WCHARs + ) + + // + vers + ( + + ) +*/ + +/* Chord Maps */ + +/* runtime chunks */ +#define DMUS_FOURCC_CHORDMAP_FORM mmioFOURCC('D','M','P','R') +#define DMUS_FOURCC_IOCHORDMAP_CHUNK mmioFOURCC('p','e','r','h') +#define DMUS_FOURCC_SUBCHORD_CHUNK mmioFOURCC('c','h','d','t') +#define DMUS_FOURCC_CHORDENTRY_CHUNK mmioFOURCC('c','h','e','h') +#define DMUS_FOURCC_SUBCHORDID_CHUNK mmioFOURCC('s','b','c','n') +#define DMUS_FOURCC_IONEXTCHORD_CHUNK mmioFOURCC('n','c','r','d') +#define DMUS_FOURCC_NEXTCHORDSEQ_CHUNK mmioFOURCC('n','c','s','q') +#define DMUS_FOURCC_IOSIGNPOST_CHUNK mmioFOURCC('s','p','s','h') +#define DMUS_FOURCC_CHORDNAME_CHUNK mmioFOURCC('I','N','A','M') + +/* runtime list chunks */ +#define DMUS_FOURCC_CHORDENTRY_LIST mmioFOURCC('c','h','o','e') +#define DMUS_FOURCC_CHORDMAP_LIST mmioFOURCC('c','m','a','p') +#define DMUS_FOURCC_CHORD_LIST mmioFOURCC('c','h','r','d') +#define DMUS_FOURCC_CHORDPALETTE_LIST mmioFOURCC('c','h','p','l') +#define DMUS_FOURCC_CADENCE_LIST mmioFOURCC('c','a','d','e') +#define DMUS_FOURCC_SIGNPOSTITEM_LIST mmioFOURCC('s','p','s','t') + +#define DMUS_FOURCC_SIGNPOST_LIST mmioFOURCC('s','p','s','q') + +/* values for dwChord field of DMUS_IO_PERS_SIGNPOST */ +/* DMUS_SIGNPOSTF_ flags are also used in templates (DMUS_IO_SIGNPOST) */ +#define DMUS_SIGNPOSTF_A 1 +#define DMUS_SIGNPOSTF_B 2 +#define DMUS_SIGNPOSTF_C 4 +#define DMUS_SIGNPOSTF_D 8 +#define DMUS_SIGNPOSTF_E 0x10 +#define DMUS_SIGNPOSTF_F 0x20 +#define DMUS_SIGNPOSTF_LETTER (DMUS_SIGNPOSTF_A | DMUS_SIGNPOSTF_B | DMUS_SIGNPOSTF_C | DMUS_SIGNPOSTF_D | DMUS_SIGNPOSTF_E | DMUS_SIGNPOSTF_F) +#define DMUS_SIGNPOSTF_1 0x100 +#define DMUS_SIGNPOSTF_2 0x200 +#define DMUS_SIGNPOSTF_3 0x400 +#define DMUS_SIGNPOSTF_4 0x800 +#define DMUS_SIGNPOSTF_5 0x1000 +#define DMUS_SIGNPOSTF_6 0x2000 +#define DMUS_SIGNPOSTF_7 0x4000 +#define DMUS_SIGNPOSTF_ROOT (DMUS_SIGNPOSTF_1 | DMUS_SIGNPOSTF_2 | DMUS_SIGNPOSTF_3 | DMUS_SIGNPOSTF_4 | DMUS_SIGNPOSTF_5 | DMUS_SIGNPOSTF_6 | DMUS_SIGNPOSTF_7) +#define DMUS_SIGNPOSTF_CADENCE 0x8000 + +/* values for dwFlags field of DMUS_IO_CHORDMAP */ +#define DMUS_CHORDMAPF_VERSION8 1 /* Chordmap is version 8 or above. */ + +/* values for dwChord field of DMUS_IO_PERS_SIGNPOST */ +#define DMUS_SPOSTCADENCEF_1 2 /* Use the first cadence chord. */ +#define DMUS_SPOSTCADENCEF_2 4 /* Use the second cadence chord. */ + +/* run time data structs */ +typedef struct _DMUS_IO_CHORDMAP +{ + WCHAR wszLoadName[20]; + DWORD dwScalePattern; + DWORD dwFlags; /* Various flags. Only lower 16 bits are significant. */ +} DMUS_IO_CHORDMAP; + +typedef struct _DMUS_IO_CHORDMAP_SUBCHORD +{ + DWORD dwChordPattern; + DWORD dwScalePattern; + DWORD dwInvertPattern; + BYTE bChordRoot; + BYTE bScaleRoot; + WORD wCFlags; + DWORD dwLevels; /* parts or which subchord levels this chord supports */ +} DMUS_IO_CHORDMAP_SUBCHORD; + +/* Legacy name... */ +typedef DMUS_IO_CHORDMAP_SUBCHORD DMUS_IO_PERS_SUBCHORD; + +typedef struct _DMUS_IO_CHORDENTRY +{ + DWORD dwFlags; + WORD wConnectionID; /* replaces runtime "pointer to this" */ +} DMUS_IO_CHORDENTRY; + +typedef struct _DMUS_IO_NEXTCHORD +{ + DWORD dwFlags; + WORD nWeight; + WORD wMinBeats; + WORD wMaxBeats; + WORD wConnectionID; /* points to an ioChordEntry */ +} DMUS_IO_NEXTCHORD; + +typedef struct _DMUS_IO_CHORDMAP_SIGNPOST +{ + DWORD dwChords; /* 1bit per group */ + DWORD dwFlags; +} DMUS_IO_CHORDMAP_SIGNPOST; + +/* Legacy name... */ +typedef DMUS_IO_CHORDMAP_SIGNPOST DMUS_IO_PERS_SIGNPOST; + +/* +RIFF +( + 'DMPR' + // Chord map header chunk + [] // guid chunk + [] // version chunk (two DWORDS) + [] // Unfo chunk + // subchord database + // chord palette + // chord map + // signpost list + ) + + ::= LIST('cmap' ) + + ::= LIST('choe' + // chord entry data + // chord definition + // connecting(next) chords + ) + + ::= LIST('chrd' + // name of chord in wide char format + // list of subchords composing chord + ) + + ::= LIST('chpl' + ... // chord definition + ) + + ::== LIST('spsq' ... ) + + ::= LIST('spst' + + + [] + ) + + ::= LIST('cade' ...) + + ::= perh() + + ::= chdt( + ... ) + + ::= cheh() + + ::= sbcn( ...) + + ::= ncsq( + ...) + + ::= spsh() + +*/ + +/* File io for DirectMusic Script object */ + +/* RIFF ids: */ + +#define DMUS_FOURCC_SCRIPT_FORM mmioFOURCC('D','M','S','C') +#define DMUS_FOURCC_SCRIPT_CHUNK mmioFOURCC('s','c','h','d') +#define DMUS_FOURCC_SCRIPTVERSION_CHUNK mmioFOURCC('s','c','v','e') +#define DMUS_FOURCC_SCRIPTLANGUAGE_CHUNK mmioFOURCC('s','c','l','a') +#define DMUS_FOURCC_SCRIPTSOURCE_CHUNK mmioFOURCC('s','c','s','r') + +/* io structures:*/ + +typedef struct _DMUS_IO_SCRIPT_HEADER +{ + DWORD dwFlags; /* DMUS_SCRIPTIOF_ flags */ +} DMUS_IO_SCRIPT_HEADER; + +#define DMUS_SCRIPTIOF_LOAD_ALL_CONTENT (1 << 0) + /* If set, when the script loads it will also load all the content in its container. */ +#define DMUS_SCRIPTIOF_DOWNLOAD_ALL_SEGMENTS (1 << 1) + /* If set and LOAD_ALL_CONTENT is also set, when the script initializes it will also download all the segments in its container. + If set and LOAD_ALL_CONTENT is not set, when the script calls segment.Load on a segment then the segment will also be downloaded. + If not set, the script must manually download and unload by calling segment.DownloadSoundData and segment.UnloadSoundData. */ + +/* +RIFF +( + 'DMSC' // DirectMusic Script chunk + // Script header chunk + [] // GUID for script + [] // Optional version info + [] // Name, author, copyright info., comments + // Version of DirectMusic this script was authored to run against + // Container of content referenced by the script. + // ActiveX scripting language in which the script is written + or // The script's source code. + // If scsr-ck, the source is embedding in the chunk. + // If DMRF, it is a reference of where to find a text file with the source. + // Class id (guidClassID in DMUS_IO_REFERENCE) must be GUID_NULL because + // this text file is not a DirectMusic object in its own right. +) + + // + 'schd' + ( + + ) + + // + 'guid' + ( + + ) + + // + vers + ( + + ) + + // + scve + ( + + ) + + 'scla' + ( + // Language name, stored as NULL terminated string of WCHARs + ) + + 'scsr' + ( + // Source code, stored as NULL terminated string of WCHARs + ) +*/ + +/* Signpost tracks */ + +#define DMUS_FOURCC_SIGNPOST_TRACK_CHUNK mmioFOURCC( 's', 'g', 'n', 'p' ) + + +typedef struct _DMUS_IO_SIGNPOST +{ + MUSIC_TIME mtTime; + DWORD dwChords; + WORD wMeasure; +} DMUS_IO_SIGNPOST; + +/* + + // + 'sgnp' + ( + //sizeof DMUS_IO_SIGNPOST: DWORD + ... + ) + +*/ + +#define DMUS_FOURCC_MUTE_CHUNK mmioFOURCC('m','u','t','e') + +typedef struct _DMUS_IO_MUTE +{ + MUSIC_TIME mtTime; + DWORD dwPChannel; + DWORD dwPChannelMap; +} DMUS_IO_MUTE; + +/* + + // + 'mute' + ( + //sizeof DMUS_IO_MUTE:DWORD + ... + ) + + +*/ + +/* Used for both style and chord map tracks */ + +#define DMUS_FOURCC_TIME_STAMP_CHUNK mmioFOURCC('s', 't', 'm', 'p') + +/* Style tracks */ + +#define DMUS_FOURCC_STYLE_TRACK_LIST mmioFOURCC('s', 't', 't', 'r') +#define DMUS_FOURCC_STYLE_REF_LIST mmioFOURCC('s', 't', 'r', 'f') + +/* + + // + LIST('sttr' + ( + ... // Array of Style references + ) + + // + LIST('strf' + ( + + + ) + + // + 'stmp' + ( + // time:DWORD + ) + +*/ + +/* Chord map tracks */ + +#define DMUS_FOURCC_PERS_TRACK_LIST mmioFOURCC('p', 'f', 't', 'r') +#define DMUS_FOURCC_PERS_REF_LIST mmioFOURCC('p', 'f', 'r', 'f') + +/* + + // + LIST('pftr' + ( + ... // Array of Chord map references + ) + + // + LIST('pfrf' + ( + + + ) + + // + 'stmp' + ( + // time:DWORD + ) + +*/ + +#define DMUS_FOURCC_TEMPO_TRACK mmioFOURCC('t','e','t','r') + +/* + // tempo array + 'tetr' + ( + // sizeof DMUS_IO_TEMPO_ITEM: DWORD + ... + ) + */ + +#define DMUS_FOURCC_SEQ_TRACK mmioFOURCC('s','e','q','t') +#define DMUS_FOURCC_SEQ_LIST mmioFOURCC('e','v','t','l') +#define DMUS_FOURCC_CURVE_LIST mmioFOURCC('c','u','r','l') + +/* + // sequence track + 'seqt' + ( + // sequence array + 'evtl' + ( + // sizeof DMUS_IO_SEQ_ITEM: DWORD + ... + ) + // curve array + 'curl' + ( + // sizeof DMUS_IO_CURVE_ITEM: DWORD + ... + ) + ) +*/ + +#define DMUS_FOURCC_SYSEX_TRACK mmioFOURCC('s','y','e','x') + +/* + // sysex track + 'syex' + ( + { + + ... // Array of bytes, length defined in the DMUS_IO_SYSEXITEM structure + }... + ) +*/ + +#define DMUS_FOURCC_TIMESIGNATURE_TRACK mmioFOURCC('t','i','m','s') + +typedef struct _DMUS_IO_TIMESIGNATURE_ITEM +{ + MUSIC_TIME lTime; + BYTE bBeatsPerMeasure; /* beats per measure (top of time sig) */ + BYTE bBeat; /* what note receives the beat (bottom of time sig.) */ + /* we can assume that 0 means 256th note */ + WORD wGridsPerBeat; /* grids per beat */ +} DMUS_IO_TIMESIGNATURE_ITEM; + +/* DX6 time signature track + + 'tims' + ( + // size of DMUS_IO_TIMESIGNATURE_ITEM : DWORD + ... + ) +*/ + +/* DX8 Time signature track. The track has been updated from DX7 to support a list of + RIFF chunks. This will allow the time signature track to expand in the future. +*/ + +#define DMUS_FOURCC_TIMESIGTRACK_LIST mmioFOURCC('T','I','M','S') +#define DMUS_FOURCC_TIMESIG_CHUNK DMUS_FOURCC_TIMESIGNATURE_TRACK + +/* +LIST +( + 'TIMS' // Time Signature Track list-type + // Chunk containing an array of time signatures +) + + 'tims' + ( + // size of DMUS_IO_TIMESIGNATURE_ITEM : DWORD + ... + ) + +*/ + +/* DX8 Marker track. This is used to store valid start points and other + flow control parameters that may come later. For example, if we want + to implement more sophisticated looping and branching constructs, they + would live in this track. +*/ + +#define DMUS_FOURCC_MARKERTRACK_LIST mmioFOURCC('M','A','R','K') +#define DMUS_FOURCC_VALIDSTART_CHUNK mmioFOURCC('v','a','l','s') +#define DMUS_FOURCC_PLAYMARKER_CHUNK mmioFOURCC('p','l','a','y') + +/* io structures */ +typedef struct _DMUS_IO_VALID_START +{ + MUSIC_TIME mtTime; /* Time of a legal start. */ +} DMUS_IO_VALID_START; + +typedef struct _DMUS_IO_PLAY_MARKER +{ + MUSIC_TIME mtTime; /* Time of a next legal play point marker. */ +} DMUS_IO_PLAY_MARKER; + +/* +LIST +( + 'MARK' // Marker Track list-type + [] // Chunk containing an array of start points + [] // Chunk containing an array of play start markers +) + + 'vals' + ( + // size of DMUS_IO_VALID_START : DWORD + ... + ) + + 'play' + ( + // size of DMUS_IO_PLAY_MARKER : DWORD + ... + ) + +*/ + +/* segment trigger tracks */ + +/* RIFF ids: */ +#define DMUS_FOURCC_SEGTRACK_LIST mmioFOURCC('s','e','g','t') +#define DMUS_FOURCC_SEGTRACK_CHUNK mmioFOURCC('s','g','t','h') +#define DMUS_FOURCC_SEGMENTS_LIST mmioFOURCC('l','s','g','l') +#define DMUS_FOURCC_SEGMENT_LIST mmioFOURCC('l','s','e','g') +#define DMUS_FOURCC_SEGMENTITEM_CHUNK mmioFOURCC('s','g','i','h') +#define DMUS_FOURCC_SEGMENTITEMNAME_CHUNK mmioFOURCC('s','n','a','m') + +/* io structures */ +typedef struct _DMUS_IO_SEGMENT_TRACK_HEADER +{ + DWORD dwFlags; /* Reserved leave as 0. */ +} DMUS_IO_SEGMENT_TRACK_HEADER; + +typedef struct _DMUS_IO_SEGMENT_ITEM_HEADER +{ + MUSIC_TIME lTimeLogical; /* Position in track list. Time in the music with which the event is associated. */ + MUSIC_TIME lTimePhysical; /* Precise time event will be triggered. Should be close to logical time. */ + DWORD dwPlayFlags; /* Flags for PlaySegment(). */ + DWORD dwFlags; /* Flags. */ +} DMUS_IO_SEGMENT_ITEM_HEADER; + +/* values for dwflags field of DMUS_IO_SEGMENT_ITEM_HEADER */ +#define DMUS_SEGMENTTRACKF_MOTIF 1 /* interpret DMRF as link to style, and use snam as the name of a motif within the style */ + +/* +LIST +( + 'segt' // DirectMusic Segment Trigger Track form-type + [] // Segment track header + // List of Segment Lists +) + + // + 'sgth' + ( + + ) + + // + LIST + ( + 'lsgl' // Array of segments + ... // Each segment is encapsulated in a list (that way it can still be riff parsed.) + ) + + // + LIST + ( + 'lseg' + + // Link to a segment or style file. + [] // Name field. Used with DMUS_SEGMENTTRACKF_MOTIF flag. + ) + + // // segment item header + ( + // Segment item header + ) + + // + ( + // Name, stored as NULL terminated string of WCHARs + ) +*/ + +/* Script track. */ + +/* RIFF ids: */ +#define DMUS_FOURCC_SCRIPTTRACK_LIST mmioFOURCC('s','c','r','t') +#define DMUS_FOURCC_SCRIPTTRACKEVENTS_LIST mmioFOURCC('s','c','r','l') +#define DMUS_FOURCC_SCRIPTTRACKEVENT_LIST mmioFOURCC('s','c','r','e') +#define DMUS_FOURCC_SCRIPTTRACKEVENTHEADER_CHUNK mmioFOURCC('s','c','r','h') +#define DMUS_FOURCC_SCRIPTTRACKEVENTNAME_CHUNK mmioFOURCC('s','c','r','n') + +/* Flags for DMUS_IO_SCRIPTTRACK_TIMING + */ +#define DMUS_IO_SCRIPTTRACKF_PREPARE (1 << 0) /* Fire event in advance of time stamp, at Prepare time. This is the default because it leaves the script time to change the music happening at the target time. */ +#define DMUS_IO_SCRIPTTRACKF_QUEUE (1 << 1) /* Fire event just before time stamp, at Queue time. */ +#define DMUS_IO_SCRIPTTRACKF_ATTIME (1 << 2) /* Fire event right at the time stamp. */ + +typedef struct _DMUS_IO_SCRIPTTRACK_EVENTHEADER +{ + DWORD dwFlags; /* various bits (see DMUS_IO_SCRIPTTRACKF_*) */ + MUSIC_TIME lTimeLogical; /* Position in track list. Time in the music with which the event is associated. */ + MUSIC_TIME lTimePhysical; /* Precise time event will be triggered. Should be close to logical time. */ +} DMUS_IO_SCRIPTTRACK_EVENTHEADER; + +/* + // Script Track + + // + LIST + ( + // List of script events + ) + + // + LIST + ( + ... // Array of event descriptions + ) + + // + LIST + ( + // Event header chunk + + // Routine name + ) + + 'scrh' + ( + + ) + + 'scrn' + ( + // Name, stored as NULL terminated string of WCHARs + ) +*/ + +/* Lyrics/Notification track. */ + +/* RIFF ids: */ +#define DMUS_FOURCC_LYRICSTRACK_LIST mmioFOURCC('l','y','r','t') +#define DMUS_FOURCC_LYRICSTRACKEVENTS_LIST mmioFOURCC('l','y','r','l') +#define DMUS_FOURCC_LYRICSTRACKEVENT_LIST mmioFOURCC('l','y','r','e') +#define DMUS_FOURCC_LYRICSTRACKEVENTHEADER_CHUNK mmioFOURCC('l','y','r','h') +#define DMUS_FOURCC_LYRICSTRACKEVENTTEXT_CHUNK mmioFOURCC('l','y','r','n') + +typedef struct _DMUS_IO_LYRICSTRACK_EVENTHEADER +{ + DWORD dwFlags; /* Reserved leave as 0. */ + DWORD dwTimingFlags; /* Combination DMUS_PMSGF_TOOL_* flags. Determines the precise timing of when the notification happens. Invalid with the flag DMUS_PMSGF_REFTIME, DMUS_PMSGF_MUSICTIME, DMUS_PMSGF_TOOL_FLUSH, or DMUS_PMSGF_LOCKTOREFTIME. */ + MUSIC_TIME lTimeLogical; /* Position in track list. Time in the music with which the event is associated. */ + MUSIC_TIME lTimePhysical; /* Precise time event will be triggered. Should be close to logical time. */ +} DMUS_IO_LYRICSTRACK_EVENTHEADER; + +/* + // Lyrics/Notification Track + + // + LIST + ( + // List of notification events + ) + + // + LIST + ( + ... // Array of event descriptions + ) + + // + LIST + ( + // Event header chunk + // Notification text + ) + + 'lyrh' + ( + + ) + + 'lyrn' + ( + // Name, stored as NULL terminated string of WCHARs + ) +*/ + +/* Parameter control track */ + +/* RIFF ids: */ +#define DMUS_FOURCC_PARAMCONTROLTRACK_TRACK_LIST mmioFOURCC('p','r','m','t') +#define DMUS_FOURCC_PARAMCONTROLTRACK_OBJECT_LIST mmioFOURCC('p','r','o','l') +#define DMUS_FOURCC_PARAMCONTROLTRACK_OBJECT_CHUNK mmioFOURCC('p','r','o','h') +#define DMUS_FOURCC_PARAMCONTROLTRACK_PARAM_LIST mmioFOURCC('p','r','p','l') +#define DMUS_FOURCC_PARAMCONTROLTRACK_PARAM_CHUNK mmioFOURCC('p','r','p','h') +#define DMUS_FOURCC_PARAMCONTROLTRACK_CURVES_CHUNK mmioFOURCC('p','r','c','c') + +typedef struct _DMUS_IO_PARAMCONTROLTRACK_OBJECTHEADER +{ + DWORD dwFlags; /* Reserved. Must be zero. */ + GUID guidTimeFormat; /* Time format to set the object to. Must be GUID_TIME_REFERNCE or GUID_TIME_MUSIC from medparam.h. */ + /* Path for finding the object. These fields correspond to the first five parameters of IDirectMusicSegmentState::GetObjectInPath. */ + DWORD dwPChannel; + DWORD dwStage; + DWORD dwBuffer; + GUID guidObject; + DWORD dwIndex; +} DMUS_IO_PARAMCONTROLTRACK_OBJECTHEADER; + +typedef struct _DMUS_IO_PARAMCONTROLTRACK_PARAMHEADER +{ + DWORD dwFlags; /* Reserved. Must be zero. */ + DWORD dwIndex; /* Index number of the parameter on the object */ +} DMUS_IO_PARAMCONTROLTRACK_PARAMHEADER; + +typedef struct _DMUS_IO_PARAMCONTROLTRACK_CURVEINFO +{ + MUSIC_TIME mtStartTime; + MUSIC_TIME mtEndTime; + float fltStartValue; + float fltEndValue; + DWORD dwCurveType; /* One of the items from the MP_CURVE_TYPE enum in medparam.h */ + DWORD dwFlags; /* A combination of the MPF_ENVLP_* constants in medparam.h */ +} DMUS_IO_PARAMCONTROLTRACK_CURVEINFO; + +/* + // + LIST + ( + ... // one for each object + ) + + // + LIST + ( + // object header chunk + ... // one for each parameter + ) + + // + proh + ( + + ) + + // + LIST + ( + // parameter header chunk + // chunk containing an array of curves + ) + + // + prph + ( + + ) + + // + prcc + ( + // sizeof DMUS_IO_PARAMCONTROLTRACK_CURVEINFO:DWORD + ... // curves, sorted in order of mtTime + ) +*/ + +#if (DIRECTSOUND_VERSION >= 0x0800) + +/* DirectSoundBufferConfig FX Map */ + +/* RIFF ids: */ + +#define DMUS_FOURCC_DSBC_FORM mmioFOURCC('D','S','B','C') +#define DMUS_FOURCC_DSBD_CHUNK mmioFOURCC('d','s','b','d') +#define DMUS_FOURCC_BSID_CHUNK mmioFOURCC('b','s','i','d') +#define DMUS_FOURCC_DS3D_CHUNK mmioFOURCC('d','s','3','d') +#define DMUS_FOURCC_DSBC_LIST mmioFOURCC('f','x','l','s') +#define DMUS_FOURCC_DSFX_FORM mmioFOURCC('D','S','F','X') +#define DMUS_FOURCC_DSFX_CHUNK mmioFOURCC('f','x','h','r') +#define DMUS_FOURCC_DSFX_DATA mmioFOURCC('d','a','t','a') + +/* io structures */ + +typedef struct _DSOUND_IO_DSBUFFERDESC +{ + DWORD dwFlags; /* DirectSound buffer creation flags */ + WORD nChannels; /* No. of channels (rest of buffer format is determined by owning sink) */ + LONG lVolume; /* Initial pan; only used if CTRLVOLUME is specified */ + LONG lPan; /* Initial pan; only used if CTRLPAN is specified */ + DWORD dwReserved; /* Reserved - must be 0 */ +} DSOUND_IO_DSBUFFERDESC; + +typedef struct _DSOUND_IO_DSBUSID +{ + DWORD busid[1]; /* Array size determined from chunk size */ +} DSOUND_IO_DSBUSID; + +typedef struct _DSOUND_IO_3D +{ + GUID guid3DAlgorithm; /* GUID identifying the 3D algorithm to use (defined in dsound.h) */ + DS3DBUFFER ds3d; /* Initial 3D parameters */ +} DSOUND_IO_3D; + +typedef struct _DSOUND_IO_DXDMO_HEADER +{ + DWORD dwEffectFlags; /* Effect creation flags - equivalent to DSEFFECTDESC::dwFlags */ + GUID guidDSFXClass; /* GUID identifying the effect to use - corresponds to a COM CLSID */ + GUID guidReserved; /* Reserved - must be the null GUID */ + GUID guidSendBuffer; /* GUID identifying the buffer to send to if this is a send effect */ + DWORD dwReserved; /* Reserved - must be 0 */ +} DSOUND_IO_DXDMO_HEADER; + +typedef struct _DSOUND_IO_DXDMO_DATA +{ + DWORD data[1]; /* Array size determined by the DMO involved */ +} DSOUND_IO_DXDMO_DATA; + +/* +RIFF +( + 'DSBC' // DirectSoundBufferConfig chunk + [] // GUID identifier for this DirectSoundBufferConfig + [] // Optional version info + [] // Name, author, copyright info., comments + // DirectSound Buffer descriptor chunk + [] // Optional bus id array + [] // Optional 3d Parameters + [] // Optional list of FX descriptors +) + + // + 'guid' + ( + + ) + + // + 'vers' + ( + + ) + + // + 'dsbd' + ( + // Creation parameters and initial settings for the buffer + ) + + // + 'bsid' + ( + // The size of DSOUND_IO_DSBUSID is determined by the chunk size + ) + + // + 'ds3d' + ( + // Initial 3D buffer parameters: position, etc. + ) + + // + LIST + ( + 'fxls' // Array of DMO creation parameter blocks + ... // Each DMO is encapsulated in a RIFF chunk + ) + +// // DMOs can be embedded in a buffer configuration or stored as separate files +RIFF +( + 'DSFX' + // FX header chunk + [] // FX initial settings chunk +) + + // + 'fxhr' + ( + + ) + + // + 'data' + ( + // Opaque data block used by the DMO to load itself. + // For our standard included DMOs, this is simply the structure accepted by + // the DMO's SetAllParameters() method - e.g. struct DSFXChorus for Chorus. + ) +*/ + +#endif + +#ifdef __cplusplus +}; /* extern "C" */ +#endif + +#include + +#endif /* #ifndef _DMUSICF_ */ diff --git a/videoInputSrcAndDemos/libs/DShow/Include/dmusici.h b/videoInputSrcAndDemos/libs/DShow/Include/dmusici.h index 1e155dd..d985806 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/dmusici.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/dmusici.h @@ -1,1883 +1,1883 @@ -/************************************************************************ -* * -* dmusici.h -- This module contains the API for the * -* DirectMusic performance layer * -* * -* Copyright (c) Microsoft Corporation. All rights reserved. * -* * -************************************************************************/ - -#ifndef _DMUSICI_ -#define _DMUSICI_ - -#include - -#define COM_NO_WINDOWS_H -#include - -#include -#include -/* plugin (track and tool) interfaces. This #include will eventually go away. */ -#include - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef WORD TRANSITION_TYPE; -typedef __int64 REFERENCE_TIME; -typedef long MUSIC_TIME; - -#define MT_MIN 0x80000000 /* Minimum music time value. */ -#define MT_MAX 0x7FFFFFFF /* Maximum music time value. */ - -#define DMUS_PPQ 768 /* parts per quarter note */ - -interface IDirectMusicTrack; -interface IDirectMusicPerformance; -interface IDirectMusicPerformance8; -interface IDirectMusicTool; -interface IDirectMusicSegment; -interface IDirectMusicSegment8; -interface IDirectMusicSegmentState; -interface IDirectMusicSegmentState8; -interface IDirectMusicGraph; -interface IDirectMusicBuffer; -interface IDirectMusicInstrument; -interface IDirectMusicDownloadedInstrument; -interface IDirectMusicBand; -interface IDirectMusicChordMap; -interface IDirectMusicLoader; -interface IDirectMusicLoader8; -interface IDirectMusicScript; -interface IDirectMusicObject; -interface IDirectMusicStyle8; -interface IDirectMusicPatternTrack; -interface IDirectMusicContainer; -interface IDirectMusicTool8; -interface IDirectMusicTrack8; -interface IDirectMusicAudioPath; -#ifndef __cplusplus -typedef interface IDirectMusicTrack IDirectMusicTrack; -typedef interface IDirectMusicPerformance IDirectMusicPerformance; -typedef interface IDirectMusicPerformance8 IDirectMusicPerformance8; -typedef interface IDirectMusicTool IDirectMusicTool; -typedef interface IDirectMusicSegment IDirectMusicSegment; -typedef interface IDirectMusicSegment8 IDirectMusicSegment8; -typedef interface IDirectMusicSegmentState IDirectMusicSegmentState; -typedef interface IDirectMusicSegmentState8 IDirectMusicSegmentState8; -typedef interface IDirectMusicGraph IDirectMusicGraph; -typedef interface IDirectMusicBuffer IDirectMusicBuffer; -typedef interface IDirectMusicInstrument IDirectMusicInstrument; -typedef interface IDirectMusicDownloadedInstrument IDirectMusicDownloadedInstrument; -typedef interface IDirectMusicBand IDirectMusicBand; -typedef interface IDirectMusicChordMap IDirectMusicChordMap; -typedef interface IDirectMusicObject IDirectMusicObject; -typedef interface IDirectMusicLoader IDirectMusicLoader; -typedef interface IDirectMusicLoader8 IDirectMusicLoader8; -typedef interface IDirectMusicScript IDirectMusicScript; -typedef interface IDirectMusicStyle8 IDirectMusicStyle8; -typedef interface IDirectMusicPatternTrack IDirectMusicPatternTrack; -typedef interface IDirectMusicContainer IDirectMusicContainer; -typedef interface IDirectMusicTool8 IDirectMusicTool8; -typedef interface IDirectMusicTrack8 IDirectMusicTrack8; -typedef interface IDirectMusicAudioPath IDirectMusicAudioPath; -#endif - -typedef enum enumDMUS_STYLET_TYPES -{ - DMUS_STYLET_PATTERN = 0, - DMUS_STYLET_MOTIF = 1, -} DMUS_STYLET_TYPES; - - -typedef enum enumDMUS_COMMANDT_TYPES -{ - DMUS_COMMANDT_GROOVE = 0, - DMUS_COMMANDT_FILL = 1, - DMUS_COMMANDT_INTRO = 2, - DMUS_COMMANDT_BREAK = 3, - DMUS_COMMANDT_END = 4, - DMUS_COMMANDT_ENDANDINTRO = 5 -} DMUS_COMMANDT_TYPES; - -typedef enum enumDMUS_SHAPET_TYPES -{ - DMUS_SHAPET_FALLING = 0, - DMUS_SHAPET_LEVEL = 1, - DMUS_SHAPET_LOOPABLE = 2, - DMUS_SHAPET_LOUD = 3, - DMUS_SHAPET_QUIET = 4, - DMUS_SHAPET_PEAKING = 5, - DMUS_SHAPET_RANDOM = 6, - DMUS_SHAPET_RISING = 7, - DMUS_SHAPET_SONG = 8 -} DMUS_SHAPET_TYPES; - -typedef enum enumDMUS_COMPOSEF_FLAGS -{ - DMUS_COMPOSEF_NONE = 0, - DMUS_COMPOSEF_ALIGN = 0x1, - DMUS_COMPOSEF_OVERLAP = 0x2, - DMUS_COMPOSEF_IMMEDIATE = 0x4, - DMUS_COMPOSEF_GRID = 0x8, - DMUS_COMPOSEF_BEAT = 0x10, - DMUS_COMPOSEF_MEASURE = 0x20, - DMUS_COMPOSEF_AFTERPREPARETIME = 0x40, - DMUS_COMPOSEF_VALID_START_BEAT = 0x80, /* In conjunction with DMUS_COMPOSEF_ALIGN, allows the switch to occur on any beat. */ - DMUS_COMPOSEF_VALID_START_GRID = 0x100, /* In conjunction with DMUS_COMPOSEF_ALIGN, allows the switch to occur on any grid. */ - DMUS_COMPOSEF_VALID_START_TICK = 0x200, /* In conjunction with DMUS_COMPOSEF_ALIGN, allows the switch to occur any time. */ - DMUS_COMPOSEF_SEGMENTEND = 0x400, /* Play the transition at the end of the current segment. */ - DMUS_COMPOSEF_MARKER = 0x800, /* Play the transition at the next marker in the current segment. */ - DMUS_COMPOSEF_MODULATE = 0x1000, - DMUS_COMPOSEF_LONG = 0x2000, - DMUS_COMPOSEF_ENTIRE_TRANSITION = 0x4000, /* play the entire transition pattern */ - DMUS_COMPOSEF_1BAR_TRANSITION = 0x8000, /* play one bar of the transition pattern */ - DMUS_COMPOSEF_ENTIRE_ADDITION = 0x10000, /* play the additional pattern in its entirety */ - DMUS_COMPOSEF_1BAR_ADDITION = 0x20000, /* play one bar of the additional pattern */ - DMUS_COMPOSEF_VALID_START_MEASURE = 0x40000, /* In conjunction with DMUS_COMPOSEF_ALIGN, allows the switch to occur on any bar. */ - DMUS_COMPOSEF_DEFAULT = 0x80000, /* Use segment's default boundary */ - DMUS_COMPOSEF_NOINVALIDATE = 0x100000, /* Play without invalidating the currently playing segment(s) */ - DMUS_COMPOSEF_USE_AUDIOPATH = 0x200000, /* Uses the audio paths that are embedded in the segments */ - DMUS_COMPOSEF_INVALIDATE_PRI = 0x400000 /* Invalidate only the current primary seg state */ -} DMUS_COMPOSEF_FLAGS; - -#define DMUS_PMSG_PART \ - DWORD dwSize; \ - REFERENCE_TIME rtTime; /* real time (in 100 nanosecond increments) */ \ - MUSIC_TIME mtTime; /* music time */ \ - DWORD dwFlags; /* various bits (see DMUS_PMSGF_FLAGS enumeration) */ \ - DWORD dwPChannel; /* Performance Channel. The Performance can */ \ - /* use this to determine the port/channel. */ \ - DWORD dwVirtualTrackID; /* virtual track ID */ \ - IDirectMusicTool* pTool; /* tool interface pointer */ \ - IDirectMusicGraph* pGraph; /* tool graph interface pointer */ \ - DWORD dwType; /* PMSG type (see DMUS_PMSGT_TYPES defines) */ \ - DWORD dwVoiceID; /* unique voice id which allows synthesizers to */ \ - /* identify a specific event. For DirectX 6.0, */ \ - /* this field should always be 0. */ \ - DWORD dwGroupID; /* Track group id */ \ - IUnknown* punkUser; /* user com pointer, auto released upon PMSG free */ - -/* every DMUS_PMSG is based off of this structure. The Performance needs - to access these members consistently in every PMSG that goes through it. */ -typedef struct _DMUS_PMSG -{ - /* begin DMUS_PMSG_PART */ - DMUS_PMSG_PART - /* end DMUS_PMSG_PART */ - -} DMUS_PMSG; - -#define DMUS_PCHANNEL_BROADCAST_PERFORMANCE 0xFFFFFFFF /* PMsg is sent on all PChannels of the performance. */ -#define DMUS_PCHANNEL_BROADCAST_AUDIOPATH 0xFFFFFFFE /* PMsg is sent on all PChannels of the audio path. */ -#define DMUS_PCHANNEL_BROADCAST_SEGMENT 0xFFFFFFFD /* PMsg is sent on all PChannels of the segment. */ -#define DMUS_PCHANNEL_BROADCAST_GROUPS 0xFFFFFFFC /* A duplicate PMsg is for each Channels Groups in the performance. */ - -/* The DMUS_PATH constants are used in conjunction with GetObjectInPath to find a requested - interface at a particular stage in the audio path. -*/ -#define DMUS_PATH_SEGMENT 0x1000 /* Get the segment itself (from a segment state.) */ -#define DMUS_PATH_SEGMENT_TRACK 0x1100 /* Look in Track List of Segment. */ -#define DMUS_PATH_SEGMENT_GRAPH 0x1200 /* Get the segment's tool graph. */ -#define DMUS_PATH_SEGMENT_TOOL 0x1300 /* Look in Tool Graph of Segment. */ -#define DMUS_PATH_AUDIOPATH 0x2000 /* Get the audiopath itself (from a segment state.) */ -#define DMUS_PATH_AUDIOPATH_GRAPH 0x2200 /* Get the audiopath's tool graph. */ -#define DMUS_PATH_AUDIOPATH_TOOL 0x2300 /* Look in Tool Graph of Audio Path. */ -#define DMUS_PATH_PERFORMANCE 0x3000 /* Access the performance. */ -#define DMUS_PATH_PERFORMANCE_GRAPH 0x3200 /* Get the performance's tool graph. */ -#define DMUS_PATH_PERFORMANCE_TOOL 0x3300 /* Look in Tool Graph of Performance. */ -#define DMUS_PATH_PORT 0x4000 /* Access the synth. */ -#define DMUS_PATH_BUFFER 0x6000 /* Look in DirectSoundBuffer. */ -#define DMUS_PATH_BUFFER_DMO 0x6100 /* Access a DMO in the buffer. */ -#define DMUS_PATH_MIXIN_BUFFER 0x7000 /* Look in a global mixin buffer. */ -#define DMUS_PATH_MIXIN_BUFFER_DMO 0x7100 /* Access a DMO in a global mixin buffer. */ -#define DMUS_PATH_PRIMARY_BUFFER 0x8000 /* Access the primary buffer. */ - -/* To ignore PChannels when calling GetObjectInPath(), use the DMUS_PCHANNEL_ALL constant. */ -#define DMUS_PCHANNEL_ALL 0xFFFFFFFB - -/* The DMUS_APATH types are used in conjunction with CreateStandardAudioPath to - build default path types. _SHARED_ means the same buffer is shared across multiple - instantiations of the audiopath type. _DYNAMIC_ means a unique buffer is created - every time. -*/ - -#define DMUS_APATH_SHARED_STEREOPLUSREVERB 1 /* A standard music set up with stereo outs and reverb. */ -#define DMUS_APATH_DYNAMIC_3D 6 /* An audio path with one dynamic bus from the synth feeding to a dynamic 3d buffer. Does not send to env reverb. */ -#define DMUS_APATH_DYNAMIC_MONO 7 /* An audio path with one dynamic bus from the synth feeding to a dynamic mono buffer. */ -#define DMUS_APATH_DYNAMIC_STEREO 8 /* An audio path with two dynamic buses from the synth feeding to a dynamic stereo buffer. */ - -typedef struct _DMUS_AUDIOPARAMS -{ - DWORD dwSize; /* Size of this structure. */ - BOOL fInitNow; /* If true, the sink and synth are created immediately and results returned in this structure. */ - DWORD dwValidData; /* Flags indicating which fields below are valid. */ - DWORD dwFeatures; /* Required DMUS_AUDIOF features. */ - DWORD dwVoices; /* Required number of voices. */ - DWORD dwSampleRate; /* Sample rate of synths and sink. */ - CLSID clsidDefaultSynth; /* Class ID of default synthesizer. */ -} DMUS_AUDIOPARAMS; - -/* dwFeatures flags. These indicate which features are required for the audio environment. */ -#define DMUS_AUDIOF_3D 0x1 /* Require 3D buffers. */ -#define DMUS_AUDIOF_ENVIRON 0x2 /* Require environmental modeling. */ -#define DMUS_AUDIOF_EAX 0x4 /* Require use of EAX effects. */ -#define DMUS_AUDIOF_DMOS 0x8 /* Require use of additional DMOs. */ -#define DMUS_AUDIOF_STREAMING 0x10 /* Require support for streaming waves. */ -#define DMUS_AUDIOF_BUFFERS 0x20 /* Require support for multiple buffers (all above cases need this.) */ -#define DMUS_AUDIOF_ALL 0x3F /* Requires everything. */ - -/* dwValidData flags. These indicate which fields in DMUS_AUDIOPARAMS have been filled in. If fInitNow is set, these also return what was allocated. */ -#define DMUS_AUDIOPARAMS_FEATURES 0x00000001 -#define DMUS_AUDIOPARAMS_VOICES 0x00000002 -#define DMUS_AUDIOPARAMS_SAMPLERATE 0x00000004 -#define DMUS_AUDIOPARAMS_DEFAULTSYNTH 0x00000008 - -/* DMUS_PMSGF_FLAGS fill the DMUS_PMSG's dwFlags member */ -typedef enum enumDMUS_PMSGF_FLAGS -{ - DMUS_PMSGF_REFTIME = 1, /* if rtTime is valid */ - DMUS_PMSGF_MUSICTIME = 2, /* if mtTime is valid */ - DMUS_PMSGF_TOOL_IMMEDIATE = 4, /* if PMSG should be processed immediately */ - DMUS_PMSGF_TOOL_QUEUE = 8, /* if PMSG should be processed a little early, at Queue time */ - DMUS_PMSGF_TOOL_ATTIME = 0x10, /* if PMSG should be processed at the time stamp */ - DMUS_PMSGF_TOOL_FLUSH = 0x20, /* if PMSG is being flushed */ - DMUS_PMSGF_LOCKTOREFTIME = 0x40, /* if rtTime can not be overriden by a tempo change. */ - DMUS_PMSGF_DX8 = 0x80 /* if the message has DX8 or later extensions. */ - /* The values of DMUS_TIME_RESOLVE_FLAGS may also be used inside the */ - /* DMUS_PMSG's dwFlags member. */ -} DMUS_PMSGF_FLAGS; - -/* DMUS_PMSGT_TYPES fill the DMUS_PMSG's dwType member */ -typedef enum enumDMUS_PMSGT_TYPES -{ - DMUS_PMSGT_MIDI = 0, /* MIDI short message */ - DMUS_PMSGT_NOTE = 1, /* Interactive Music Note */ - DMUS_PMSGT_SYSEX = 2, /* MIDI long message (system exclusive message) */ - DMUS_PMSGT_NOTIFICATION = 3, /* Notification message */ - DMUS_PMSGT_TEMPO = 4, /* Tempo message */ - DMUS_PMSGT_CURVE = 5, /* Control change / pitch bend, etc. curve */ - DMUS_PMSGT_TIMESIG = 6, /* Time signature */ - DMUS_PMSGT_PATCH = 7, /* Patch changes */ - DMUS_PMSGT_TRANSPOSE = 8, /* Transposition messages */ - DMUS_PMSGT_CHANNEL_PRIORITY = 9, /* Channel priority */ - DMUS_PMSGT_STOP = 10, /* Stop message */ - DMUS_PMSGT_DIRTY = 11, /* Tells Tools that cache GetParam() info to refresh */ - DMUS_PMSGT_WAVE = 12, /* Carries control information for playing a wave. */ - DMUS_PMSGT_LYRIC = 13, /* Lyric message from lyric track. */ - DMUS_PMSGT_SCRIPTLYRIC = 14, /* Lyric message sent by a script with the Trace function. */ - DMUS_PMSGT_USER = 255 /* User message */ -} DMUS_PMSGT_TYPES; - -/* DMUS_SEGF_FLAGS correspond to IDirectMusicPerformance::PlaySegment, and other API */ -typedef enum enumDMUS_SEGF_FLAGS -{ - DMUS_SEGF_REFTIME = 1<<6, /* 0x40 Time parameter is in reference time */ - DMUS_SEGF_SECONDARY = 1<<7, /* 0x80 Secondary segment */ - DMUS_SEGF_QUEUE = 1<<8, /* 0x100 Queue at the end of the primary segment queue (primary only) */ - DMUS_SEGF_CONTROL = 1<<9, /* 0x200 Play as a control track (secondary segments only) */ - DMUS_SEGF_AFTERPREPARETIME = 1<<10, /* 0x400 Play after the prepare time (See IDirectMusicPerformance::GetPrepareTime) */ - DMUS_SEGF_GRID = 1<<11, /* 0x800 Play on grid boundary */ - DMUS_SEGF_BEAT = 1<<12, /* 0x1000 Play on beat boundary */ - DMUS_SEGF_MEASURE = 1<<13, /* 0x2000 Play on measure boundary */ - DMUS_SEGF_DEFAULT = 1<<14, /* 0x4000 Use segment's default boundary */ - DMUS_SEGF_NOINVALIDATE = 1<<15, /* 0x8000 Play without invalidating the currently playing segment(s) */ - DMUS_SEGF_ALIGN = 1<<16, /* 0x10000 Align segment with requested boundary, but switch at first valid point */ - DMUS_SEGF_VALID_START_BEAT = 1<<17, /* 0x20000 In conjunction with DMUS_SEGF_ALIGN, allows the switch to occur on any beat. */ - DMUS_SEGF_VALID_START_GRID = 1<<18, /* 0x40000 In conjunction with DMUS_SEGF_ALIGN, allows the switch to occur on any grid. */ - DMUS_SEGF_VALID_START_TICK = 1<<19, /* 0x80000 In conjunction with DMUS_SEGF_ALIGN, allows the switch to occur any time. */ - DMUS_SEGF_AUTOTRANSITION = 1<<20, /* 0x100000 Compose and play a transition segment, using the transition template. */ - DMUS_SEGF_AFTERQUEUETIME = 1<<21, /* 0x200000 Make sure to play after the queue time. This is default for primary segments */ - DMUS_SEGF_AFTERLATENCYTIME = 1<<22, /* 0x400000 Make sure to play after the latency time. This is true for all segments, so this is a nop */ - DMUS_SEGF_SEGMENTEND = 1<<23, /* 0x800000 Play at the next end of segment. */ - DMUS_SEGF_MARKER = 1<<24, /* 0x1000000 Play at next marker in the primary segment. If there are no markers, default to any other resolution requests. */ - DMUS_SEGF_TIMESIG_ALWAYS = 1<<25, /* 0x2000000 Even if there is no primary segment, align start time with current time signature. */ - DMUS_SEGF_USE_AUDIOPATH = 1<<26, /* 0x4000000 Uses the audio path that is embedded in the segment. */ - DMUS_SEGF_VALID_START_MEASURE = 1<<27, /* 0x8000000 In conjunction with DMUS_SEGF_ALIGN, allows the switch to occur on any bar. */ - DMUS_SEGF_INVALIDATE_PRI = 1<<28 /* 0x10000000 invalidate only the current primary seg state */ -} DMUS_SEGF_FLAGS; - -#define DMUS_SEG_REPEAT_INFINITE 0xFFFFFFFF /* For IDirectMusicSegment::SetRepeat*/ -#define DMUS_SEG_ALLTRACKS 0x80000000 /* For IDirectMusicSegment::SetParam() and SetTrackConfig() - selects all tracks instead on nth index. */ -#define DMUS_SEG_ANYTRACK 0x80000000 /* For IDirectMusicSegment::GetParam() - checks each track until it finds one that returns data (not DMUS_E_NOT_FOUND.) */ - - -/* DMUS_TIME_RESOLVE_FLAGS correspond to IDirectMusicPerformance::GetResolvedTime, and can */ -/* also be used interchangeably with the corresponding DMUS_SEGF_FLAGS, since their values */ -/* are intentionally the same */ -typedef enum enumDMUS_TIME_RESOLVE_FLAGS -{ - DMUS_TIME_RESOLVE_AFTERPREPARETIME = DMUS_SEGF_AFTERPREPARETIME, - DMUS_TIME_RESOLVE_AFTERQUEUETIME = DMUS_SEGF_AFTERQUEUETIME, - DMUS_TIME_RESOLVE_AFTERLATENCYTIME = DMUS_SEGF_AFTERLATENCYTIME, - DMUS_TIME_RESOLVE_GRID = DMUS_SEGF_GRID, - DMUS_TIME_RESOLVE_BEAT = DMUS_SEGF_BEAT, - DMUS_TIME_RESOLVE_MEASURE = DMUS_SEGF_MEASURE, - DMUS_TIME_RESOLVE_MARKER = DMUS_SEGF_MARKER, - DMUS_TIME_RESOLVE_SEGMENTEND = DMUS_SEGF_SEGMENTEND, -} DMUS_TIME_RESOLVE_FLAGS; - -/* The following flags are sent inside the DMUS_CHORD_KEY.dwFlags parameter */ -typedef enum enumDMUS_CHORDKEYF_FLAGS -{ - DMUS_CHORDKEYF_SILENT = 1, /* is the chord silent? */ -} DMUS_CHORDKEYF_FLAGS; - -#define DMUS_MAXSUBCHORD 8 - -typedef struct _DMUS_SUBCHORD -{ - DWORD dwChordPattern; /* Notes in the subchord */ - DWORD dwScalePattern; /* Notes in the scale */ - DWORD dwInversionPoints; /* Where inversions can occur */ - DWORD dwLevels; /* Which levels are supported by this subchord */ - BYTE bChordRoot; /* Root of the subchord */ - BYTE bScaleRoot; /* Root of the scale */ -} DMUS_SUBCHORD; - -typedef struct _DMUS_CHORD_KEY -{ - WCHAR wszName[16]; /* Name of the chord */ - WORD wMeasure; /* Measure this falls on */ - BYTE bBeat; /* Beat this falls on */ - BYTE bSubChordCount; /* Number of chords in the list of subchords */ - DMUS_SUBCHORD SubChordList[DMUS_MAXSUBCHORD]; /* List of sub chords */ - DWORD dwScale; /* Scale underlying the entire chord */ - BYTE bKey; /* Key underlying the entire chord */ - BYTE bFlags; /* Miscelaneous flags */ -} DMUS_CHORD_KEY; - -/* DMUS_NOTE_PMSG */ -typedef struct _DMUS_NOTE_PMSG -{ - /* begin DMUS_PMSG_PART */ - DMUS_PMSG_PART - /* end DMUS_PMSG_PART */ - - MUSIC_TIME mtDuration; /* duration */ - WORD wMusicValue; /* Description of note in chord and key. */ - WORD wMeasure; /* Measure in which this note occurs */ - short nOffset; /* Offset from grid at which this note occurs */ - BYTE bBeat; /* Beat (in measure) at which this note occurs */ - BYTE bGrid; /* Grid offset from beat at which this note occurs */ - BYTE bVelocity; /* Note velocity */ - BYTE bFlags; /* see DMUS_NOTEF_FLAGS */ - BYTE bTimeRange; /* Range to randomize time. */ - BYTE bDurRange; /* Range to randomize duration. */ - BYTE bVelRange; /* Range to randomize velocity. */ - BYTE bPlayModeFlags; /* Play mode */ - BYTE bSubChordLevel; /* Which subchord level this note uses. */ - BYTE bMidiValue; /* The MIDI note value, converted from wMusicValue */ - char cTranspose; /* Transposition to add to midi note value after converted from wMusicValue. */ -} DMUS_NOTE_PMSG; - -typedef enum enumDMUS_NOTEF_FLAGS -{ - DMUS_NOTEF_NOTEON = 1, /* Set if this is a MIDI Note On. Otherwise, it is MIDI Note Off */ - /* DX8 flags: */ - DMUS_NOTEF_NOINVALIDATE = 2, /* Don't invalidate this note off. */ - DMUS_NOTEF_NOINVALIDATE_INSCALE = 4,/* Don't invalidate if still within the scale. */ - DMUS_NOTEF_NOINVALIDATE_INCHORD = 8,/* Don't invalidate if still within the chord. */ - DMUS_NOTEF_REGENERATE = 0x10, /* Regenerate the note on an invalidate. */ -} DMUS_NOTEF_FLAGS; - -/* The DMUS_PLAYMODE_FLAGS are used to determine how to convert wMusicValue - into the appropriate bMidiValue. -*/ - -typedef enum enumDMUS_PLAYMODE_FLAGS -{ - DMUS_PLAYMODE_KEY_ROOT = 1, /* Transpose on top of the key root. */ - DMUS_PLAYMODE_CHORD_ROOT = 2, /* Transpose on top of the chord root. */ - DMUS_PLAYMODE_SCALE_INTERVALS = 4, /* Use scale intervals from scale pattern. */ - DMUS_PLAYMODE_CHORD_INTERVALS = 8, /* Use chord intervals from chord pattern. */ - DMUS_PLAYMODE_NONE = 16, /* No mode. Indicates the parent part's mode should be used. */ -} DMUS_PLAYMODE_FLAGS; - -/* The following are playback modes that can be created by combining the DMUS_PLAYMODE_FLAGS - in various ways: -*/ - -/* Fixed. wMusicValue holds final MIDI note value. This is used for drums, sound effects, and sequenced - notes that should not be transposed by the chord or scale. -*/ -#define DMUS_PLAYMODE_FIXED 0 -/* In fixed to key, the musicvalue is again a fixed MIDI value, but it - is transposed on top of the key root. -*/ -#define DMUS_PLAYMODE_FIXEDTOKEY DMUS_PLAYMODE_KEY_ROOT -/* In fixed to chord, the musicvalue is also a fixed MIDI value, but it - is transposed on top of the chord root. -*/ -#define DMUS_PLAYMODE_FIXEDTOCHORD DMUS_PLAYMODE_CHORD_ROOT -/* In Pedalpoint, the key root is used and the notes only track the intervals in - the scale. The chord root and intervals are completely ignored. This is useful - for melodic lines that play relative to the key root. -*/ -#define DMUS_PLAYMODE_PEDALPOINT (DMUS_PLAYMODE_KEY_ROOT | DMUS_PLAYMODE_SCALE_INTERVALS) -/* In the Melodic mode, the chord root is used but the notes only track the intervals in - the scale. The key root and chord intervals are completely ignored. This is useful - for melodic lines that play relative to the chord root. -*/ -#define DMUS_PLAYMODE_MELODIC (DMUS_PLAYMODE_CHORD_ROOT | DMUS_PLAYMODE_SCALE_INTERVALS) -/* Normal chord mode is the prevalent playback mode. - The notes track the intervals in the chord, which is based on the chord root. - If there is a scale component to the MusicValue, the additional intervals - are pulled from the scale and added. - If the chord does not have an interval to match the chord component of - the MusicValue, the note is silent. -*/ -#define DMUS_PLAYMODE_NORMALCHORD (DMUS_PLAYMODE_CHORD_ROOT | DMUS_PLAYMODE_CHORD_INTERVALS) -/* If it is desirable to play a note that is above the top of the chord, the - always play mode (known as "purpleized" in a former life) finds a position - for the note by using intervals from the scale. Essentially, this mode is - a combination of the Normal and Melodic playback modes, where a failure - in Normal causes a second try in Melodic mode. -*/ -#define DMUS_PLAYMODE_ALWAYSPLAY (DMUS_PLAYMODE_MELODIC | DMUS_PLAYMODE_NORMALCHORD) - -/* These playmodes are new for dx8. */ -/* In PedalpointChord, the key root is used and the notes only track the intervals in - the chord. The chord root and scale intervals are completely ignored. This is useful - for chordal lines that play relative to the key root. -*/ -#define DMUS_PLAYMODE_PEDALPOINTCHORD (DMUS_PLAYMODE_KEY_ROOT | DMUS_PLAYMODE_CHORD_INTERVALS) - -/* For completeness, here's a mode that tries for pedalpointchord, but if it fails - uses scale intervals -*/ -#define DMUS_PLAYMODE_PEDALPOINTALWAYS (DMUS_PLAYMODE_PEDALPOINT | DMUS_PLAYMODE_PEDALPOINTCHORD) - - -/* Legacy names for modes... */ -#define DMUS_PLAYMODE_PURPLEIZED DMUS_PLAYMODE_ALWAYSPLAY -#define DMUS_PLAYMODE_SCALE_ROOT DMUS_PLAYMODE_KEY_ROOT -#define DMUS_PLAYMODE_FIXEDTOSCALE DMUS_PLAYMODE_FIXEDTOKEY - - -/* DMUS_MIDI_PMSG */ -typedef struct _DMUS_MIDI_PMSG -{ - /* begin DMUS_PMSG_PART */ - DMUS_PMSG_PART - /* end DMUS_PMSG_PART */ - - BYTE bStatus; - BYTE bByte1; - BYTE bByte2; - BYTE bPad[1]; -} DMUS_MIDI_PMSG; - -/* DMUS_PATCH_PMSG */ -typedef struct _DMUS_PATCH_PMSG -{ - /* begin DMUS_PMSG_PART */ - DMUS_PMSG_PART - /* end DMUS_PMSG_PART */ - - BYTE byInstrument; - BYTE byMSB; - BYTE byLSB; - BYTE byPad[1]; -} DMUS_PATCH_PMSG; - -/* DMUS_TRANSPOSE_PMSG */ -typedef struct _DMUS_TRANSPOSE_PMSG -{ - /* begin DMUS_PMSG_PART */ - DMUS_PMSG_PART - /* end DMUS_PMSG_PART */ - - short nTranspose; - /* Following exists only under DX8 and on (check dwFlags for DMUS_PMSGF_DX8) */ - WORD wMergeIndex; /* Allows multiple parameters to be merged (pitchbend, volume, and expression.)*/ -} DMUS_TRANSPOSE_PMSG; - -/* DMUS_CHANNEL_PRIORITY_PMSG */ -typedef struct _DMUS_CHANNEL_PRIORITY_PMSG -{ - /* begin DMUS_PMSG_PART */ - DMUS_PMSG_PART - /* end DMUS_PMSG_PART */ - - DWORD dwChannelPriority; -} DMUS_CHANNEL_PRIORITY_PMSG; - -/* DMUS_TEMPO_PMSG */ -typedef struct _DMUS_TEMPO_PMSG -{ - /* begin DMUS_PMSG_PART */ - DMUS_PMSG_PART - /* end DMUS_PMSG_PART */ - - double dblTempo; /* the tempo */ -} DMUS_TEMPO_PMSG; - -#define DMUS_TEMPO_MAX 1000 -#define DMUS_TEMPO_MIN 1 - -#define DMUS_MASTERTEMPO_MAX 100.0f -#define DMUS_MASTERTEMPO_MIN 0.01f - -/* DMUS_SYSEX_PMSG */ -typedef struct _DMUS_SYSEX_PMSG -{ - /* begin DMUS_PMSG_PART */ - DMUS_PMSG_PART - /* end DMUS_PMSG_PART */ - - DWORD dwLen; /* length of the data */ - BYTE abData[1]; /* array of data, length equal to dwLen */ -} DMUS_SYSEX_PMSG; - -/* DMUS_CURVE_PMSG */ -typedef struct _DMUS_CURVE_PMSG -{ - /* begin DMUS_PMSG_PART */ - DMUS_PMSG_PART - /* end DMUS_PMSG_PART */ - - MUSIC_TIME mtDuration; /* how long this curve lasts */ - MUSIC_TIME mtOriginalStart; /* must be set to either zero when this PMSG is created or to the original mtTime of the curve */ - MUSIC_TIME mtResetDuration; /* how long after the curve is finished to allow a flush or - invalidation to reset to the reset value, nResetValue */ - short nStartValue; /* curve's start value */ - short nEndValue; /* curve's end value */ - short nResetValue; /* curve's reset value, set when a flush or invalidation - occurs within mtDuration + mtResetDuration */ - WORD wMeasure; /* Measure in which this curve occurs */ - short nOffset; /* Offset from grid at which this curve occurs */ - BYTE bBeat; /* Beat (in measure) at which this curve occurs */ - BYTE bGrid; /* Grid offset from beat at which this curve occurs */ - BYTE bType; /* type of curve */ - BYTE bCurveShape; /* shape of curve */ - BYTE bCCData; /* CC# if this is a control change type */ - BYTE bFlags; /* Curve reset and start from current value flags. */ - /* Following exists only under DX8 and on (check dwFlags for DMUS_PMSGF_DX8) */ - WORD wParamType; /* RPN or NRPN parameter number. */ - WORD wMergeIndex; /* Allows multiple parameters to be merged (pitchbend, volume, and expression.)*/ -} DMUS_CURVE_PMSG; - -typedef enum enumDMUS_CURVE_FLAGS -{ - DMUS_CURVE_RESET = 1, /* When set, the nResetValue must be sent when the - time is reached or an invalidate occurs because - of a transition. If not set, the curve stays - permanently stuck at the new value. */ - DMUS_CURVE_START_FROM_CURRENT = 2/* Ignore Start, start the curve at the current value. - This only works for volume, expression, and pitchbend. */ -} DMUS_CURVE_FLAGS; - - -#define DMUS_CURVE_RESET 1 - -/* Curve shapes */ -enum -{ - DMUS_CURVES_LINEAR = 0, - DMUS_CURVES_INSTANT = 1, - DMUS_CURVES_EXP = 2, - DMUS_CURVES_LOG = 3, - DMUS_CURVES_SINE = 4 -}; -/* curve types */ -#define DMUS_CURVET_PBCURVE 0x03 /* Pitch bend curve. */ -#define DMUS_CURVET_CCCURVE 0x04 /* Control change curve. */ -#define DMUS_CURVET_MATCURVE 0x05 /* Mono aftertouch curve. */ -#define DMUS_CURVET_PATCURVE 0x06 /* Poly aftertouch curve. */ -#define DMUS_CURVET_RPNCURVE 0x07 /* RPN curve with curve type in wParamType. */ -#define DMUS_CURVET_NRPNCURVE 0x08 /* NRPN curve with curve type in wParamType. */ - -/* DMUS_TIMESIG_PMSG */ -typedef struct _DMUS_TIMESIG_PMSG -{ - /* begin DMUS_PMSG_PART */ - DMUS_PMSG_PART - /* end DMUS_PMSG_PART */ - - /* Time signatures define how many beats per measure, which note receives */ - /* the beat, and the grid resolution. */ - BYTE bBeatsPerMeasure; /* beats per measure (top of time sig) */ - BYTE bBeat; /* what note receives the beat (bottom of time sig.) */ - /* we can assume that 0 means 256th note */ - WORD wGridsPerBeat; /* grids per beat */ -} DMUS_TIMESIG_PMSG; - - - -/* notification type values */ -/* The following correspond to GUID_NOTIFICATION_SEGMENT */ -#define DMUS_NOTIFICATION_SEGSTART 0 -#define DMUS_NOTIFICATION_SEGEND 1 -#define DMUS_NOTIFICATION_SEGALMOSTEND 2 -#define DMUS_NOTIFICATION_SEGLOOP 3 -#define DMUS_NOTIFICATION_SEGABORT 4 -/* The following correspond to GUID_NOTIFICATION_PERFORMANCE */ -#define DMUS_NOTIFICATION_MUSICSTARTED 0 -#define DMUS_NOTIFICATION_MUSICSTOPPED 1 -#define DMUS_NOTIFICATION_MUSICALMOSTEND 2 -/* The following corresponds to GUID_NOTIFICATION_MEASUREANDBEAT */ -#define DMUS_NOTIFICATION_MEASUREBEAT 0 -/* The following corresponds to GUID_NOTIFICATION_CHORD */ -#define DMUS_NOTIFICATION_CHORD 0 -/* The following correspond to GUID_NOTIFICATION_COMMAND */ -#define DMUS_NOTIFICATION_GROOVE 0 -#define DMUS_NOTIFICATION_EMBELLISHMENT 1 -/* The following corresponds to GUID_NOTIFICATION_RECOMPOSE */ -#define DMUS_NOTIFICATION_RECOMPOSE 0 - -/* DMUS_NOTIFICATION_PMSG */ -typedef struct _DMUS_NOTIFICATION_PMSG -{ - /* begin DMUS_PMSG_PART */ - DMUS_PMSG_PART - /* end DMUS_PMSG_PART */ - - GUID guidNotificationType; - DWORD dwNotificationOption; - DWORD dwField1; - DWORD dwField2; -} DMUS_NOTIFICATION_PMSG; - -/* DMUS_WAVE_PMSG */ -typedef struct _DMUS_WAVE_PMSG -{ - /* begin DMUS_PMSG_PART */ - DMUS_PMSG_PART - /* end DMUS_PMSG_PART */ - - REFERENCE_TIME rtStartOffset; /* How far into the wave to start, in reference time units only. */ - REFERENCE_TIME rtDuration; /* Duration of the wave, in either reference time or music time. */ - long lOffset; /* Offset from actual time to logical time, in music or ref time. */ - long lVolume; /* Initial volume, in 100ths of a dB. */ - long lPitch; /* Initial pitch, in 100ths of a semitone. */ - BYTE bFlags; /* Flags, including DMUS_WAVEF_OFF... */ -} DMUS_WAVE_PMSG; - -#define DMUS_WAVEF_OFF 1 /* If wave is playing and this is the off message. */ -#define DMUS_WAVEF_STREAMING 2 /* If wave is streaming. */ -#define DMUS_WAVEF_NOINVALIDATE 4 /* Don't invalidate this wave. */ -#define DMUS_WAVEF_NOPREROLL 8 /* Don't preroll any wave data. */ -#define DMUS_WAVEF_IGNORELOOPS 0x20 /* Ignore segment looping. */ - -/* DMUS_LYRIC_PMSG */ -typedef struct _DMUS_LYRIC_PMSG -{ - /* begin DMUS_PMSG_PART */ - DMUS_PMSG_PART - /* end DMUS_PMSG_PART */ - - WCHAR wszString[1]; /* null-terminated Unicode lyric string (structure is actually larger than size 1) */ -} DMUS_LYRIC_PMSG; - -#define DMUS_MAX_NAME 64 /* Maximum object name length. */ -#define DMUS_MAX_CATEGORY 64 /* Maximum object category name length. */ -#define DMUS_MAX_FILENAME MAX_PATH - -typedef struct _DMUS_VERSION { - DWORD dwVersionMS; - DWORD dwVersionLS; -}DMUS_VERSION, FAR *LPDMUS_VERSION; - -/* Time Signature structure, used by IDirectMusicStyle */ -/* Also used as a parameter for GetParam() and SetParam */ -typedef struct _DMUS_TIMESIGNATURE -{ - MUSIC_TIME mtTime; - BYTE bBeatsPerMeasure; /* beats per measure (top of time sig) */ - BYTE bBeat; /* what note receives the beat (bottom of time sig.) */ - /* we can assume that 0 means 256th note */ - WORD wGridsPerBeat; /* grids per beat */ -} DMUS_TIMESIGNATURE; - -typedef struct _DMUS_VALID_START_PARAM -{ - MUSIC_TIME mtTime; /* Time of the first legal start - point after (or including) the requested time. - This is a returned value. - Time format is the relative offset from requested time. */ -} DMUS_VALID_START_PARAM; - -typedef struct _DMUS_PLAY_MARKER_PARAM -{ - MUSIC_TIME mtTime; /* Time of the first legal segment play - marker before (or including) the requested time. - This is a returned value. - Time format is the relative offset from requested time. */ -} DMUS_PLAY_MARKER_PARAM; - -/* The DMUSOBJECTDESC structure is used to communicate everything you could */ -/* possibly use to describe a DirectMusic object. */ - -typedef struct _DMUS_OBJECTDESC -{ - DWORD dwSize; /* Size of this structure. */ - DWORD dwValidData; /* Flags indicating which fields below are valid. */ - GUID guidObject; /* Unique ID for this object. */ - GUID guidClass; /* GUID for the class of object. */ - FILETIME ftDate; /* Last edited date of object. */ - DMUS_VERSION vVersion; /* Version. */ - WCHAR wszName[DMUS_MAX_NAME]; /* Name of object. */ - WCHAR wszCategory[DMUS_MAX_CATEGORY]; /* Category for object (optional). */ - WCHAR wszFileName[DMUS_MAX_FILENAME]; /* File path. */ - LONGLONG llMemLength; /* Size of Memory data. */ - LPBYTE pbMemData; /* Memory pointer for data. */ - IStream * pStream; /* Stream with data. */ -} DMUS_OBJECTDESC; - -typedef DMUS_OBJECTDESC *LPDMUS_OBJECTDESC; - -/* Flags for dwValidData. When set, a flag indicates that the */ -/* corresponding field in DMUSOBJECTDESC holds valid data. */ - -#define DMUS_OBJ_OBJECT (1 << 0) /* Object GUID is valid. */ -#define DMUS_OBJ_CLASS (1 << 1) /* Class GUID is valid. */ -#define DMUS_OBJ_NAME (1 << 2) /* Name is valid. */ -#define DMUS_OBJ_CATEGORY (1 << 3) /* Category is valid. */ -#define DMUS_OBJ_FILENAME (1 << 4) /* File path is valid. */ -#define DMUS_OBJ_FULLPATH (1 << 5) /* Path is full path. */ -#define DMUS_OBJ_URL (1 << 6) /* Path is URL. */ -#define DMUS_OBJ_VERSION (1 << 7) /* Version is valid. */ -#define DMUS_OBJ_DATE (1 << 8) /* Date is valid. */ -#define DMUS_OBJ_LOADED (1 << 9) /* Object is currently loaded in memory. */ -#define DMUS_OBJ_MEMORY (1 << 10) /* Object is pointed to by pbMemData. */ -#define DMUS_OBJ_STREAM (1 << 11) /* Object is stored in pStream. */ - -/* The DMUS_SCRIPT_ERRORINFO structure describes an error that occurred in a script. - It is returned by methods in IDirectMusicScript. */ -typedef struct _DMUS_SCRIPT_ERRORINFO -{ - DWORD dwSize; /* Size of this structure. */ - HRESULT hr; - ULONG ulLineNumber; - LONG ichCharPosition; - WCHAR wszSourceFile[DMUS_MAX_FILENAME]; - WCHAR wszSourceComponent[DMUS_MAX_FILENAME]; - WCHAR wszDescription[DMUS_MAX_FILENAME]; - WCHAR wszSourceLineText[DMUS_MAX_FILENAME]; -} DMUS_SCRIPT_ERRORINFO; - -/* Track configuration flags, used with IDirectMusicSegment8::SetTrackConfig() */ - -#define DMUS_TRACKCONFIG_OVERRIDE_ALL 1 /* This track should get parameters from this segment before controlling and primary tracks. */ -#define DMUS_TRACKCONFIG_OVERRIDE_PRIMARY 2 /* This track should get parameters from this segment before the primary segment tracks. */ -#define DMUS_TRACKCONFIG_FALLBACK 4 /* This track should get parameters from this segment if the primary and controlling segments don't succeed. */ -#define DMUS_TRACKCONFIG_CONTROL_ENABLED 8 /* GetParam() enabled for this track. */ -#define DMUS_TRACKCONFIG_PLAY_ENABLED 0x10 /* Play() enabled for this track. */ -#define DMUS_TRACKCONFIG_NOTIFICATION_ENABLED 0x20 /* Notifications enabled for this track. */ -#define DMUS_TRACKCONFIG_PLAY_CLOCKTIME 0x40 /* This track plays in clock time, not music time. */ -#define DMUS_TRACKCONFIG_PLAY_COMPOSE 0x80 /* This track should regenerate data each time it starts playing. */ -#define DMUS_TRACKCONFIG_LOOP_COMPOSE 0x100 /* This track should regenerate data each time it repeats. */ -#define DMUS_TRACKCONFIG_COMPOSING 0x200 /* This track is used to compose other tracks. */ -#define DMUS_TRACKCONFIG_CONTROL_PLAY 0x10000 /* This track, when played in a controlling segment, overrides playback of primary segment tracks. */ -#define DMUS_TRACKCONFIG_CONTROL_NOTIFICATION 0x20000 /* This track, when played in a controlling segment, overrides notification of primary segment tracks. */ -/* Additional track config flags for composing transitions */ -#define DMUS_TRACKCONFIG_TRANS1_FROMSEGSTART 0x400 /* Get track info from start of From segment */ -#define DMUS_TRACKCONFIG_TRANS1_FROMSEGCURRENT 0x800 /* Get track info from current place in From segment */ -#define DMUS_TRACKCONFIG_TRANS1_TOSEGSTART 0x1000 /* Get track info from start of To segment */ -#define DMUS_TRACKCONFIG_DEFAULT (DMUS_TRACKCONFIG_CONTROL_ENABLED | DMUS_TRACKCONFIG_PLAY_ENABLED | DMUS_TRACKCONFIG_NOTIFICATION_ENABLED) - -/* Get/SetParam structs for commands */ -/* PARAM structures, used by GetParam() and SetParam() */ -typedef struct _DMUS_COMMAND_PARAM -{ - BYTE bCommand; - BYTE bGrooveLevel; - BYTE bGrooveRange; - BYTE bRepeatMode; -} DMUS_COMMAND_PARAM; - -typedef struct _DMUS_COMMAND_PARAM_2 -{ - MUSIC_TIME mtTime; - BYTE bCommand; - BYTE bGrooveLevel; - BYTE bGrooveRange; - BYTE bRepeatMode; -} DMUS_COMMAND_PARAM_2; - -typedef IDirectMusicObject __RPC_FAR *LPDMUS_OBJECT; -typedef IDirectMusicLoader __RPC_FAR *LPDMUS_LOADER; -typedef IDirectMusicBand __RPC_FAR *LPDMUS_BAND; - -#define DMUSB_LOADED (1 << 0) /* Set when band has been loaded */ -#define DMUSB_DEFAULT (1 << 1) /* Set when band is default band for a style */ - -/*//////////////////////////////////////////////////////////////////// -// IDirectMusicBand */ -#undef INTERFACE -#define INTERFACE IDirectMusicBand -DECLARE_INTERFACE_(IDirectMusicBand, IUnknown) -{ - /* IUnknown */ - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - /* IDirectMusicBand */ - STDMETHOD(CreateSegment) (THIS_ IDirectMusicSegment** ppSegment) PURE; - STDMETHOD(Download) (THIS_ IDirectMusicPerformance* pPerformance) PURE; - STDMETHOD(Unload) (THIS_ IDirectMusicPerformance* pPerformance) PURE; -}; - -typedef IDirectMusicBand IDirectMusicBand8; - -/*//////////////////////////////////////////////////////////////////// -// IDirectMusicObject */ -#undef INTERFACE -#define INTERFACE IDirectMusicObject -DECLARE_INTERFACE_(IDirectMusicObject, IUnknown) -{ - /* IUnknown */ - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - /* IDirectMusicObject */ - STDMETHOD(GetDescriptor) (THIS_ LPDMUS_OBJECTDESC pDesc) PURE; - STDMETHOD(SetDescriptor) (THIS_ LPDMUS_OBJECTDESC pDesc) PURE; - STDMETHOD(ParseDescriptor) (THIS_ LPSTREAM pStream, - LPDMUS_OBJECTDESC pDesc) PURE; -}; - -typedef IDirectMusicObject IDirectMusicObject8; - -/*//////////////////////////////////////////////////////////////////// -// IDirectMusicLoader */ -#undef INTERFACE -#define INTERFACE IDirectMusicLoader -DECLARE_INTERFACE_(IDirectMusicLoader, IUnknown) -{ - /* IUnknown */ - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - /* IDirectMusicLoader */ - STDMETHOD(GetObject) (THIS_ LPDMUS_OBJECTDESC pDesc, - REFIID riid, - LPVOID FAR *ppv) PURE; - STDMETHOD(SetObject) (THIS_ LPDMUS_OBJECTDESC pDesc) PURE; - STDMETHOD(SetSearchDirectory) (THIS_ REFGUID rguidClass, - WCHAR *pwzPath, - BOOL fClear) PURE; - STDMETHOD(ScanDirectory) (THIS_ REFGUID rguidClass, - WCHAR *pwzFileExtension, - WCHAR *pwzScanFileName) PURE; - STDMETHOD(CacheObject) (THIS_ IDirectMusicObject * pObject) PURE; - STDMETHOD(ReleaseObject) (THIS_ IDirectMusicObject * pObject) PURE; - STDMETHOD(ClearCache) (THIS_ REFGUID rguidClass) PURE; - STDMETHOD(EnableCache) (THIS_ REFGUID rguidClass, - BOOL fEnable) PURE; - STDMETHOD(EnumObject) (THIS_ REFGUID rguidClass, - DWORD dwIndex, - LPDMUS_OBJECTDESC pDesc) PURE; -}; - -/*//////////////////////////////////////////////////////////////////// -// IDirectMusicLoader8 */ -#undef INTERFACE -#define INTERFACE IDirectMusicLoader8 -DECLARE_INTERFACE_(IDirectMusicLoader8, IDirectMusicLoader) -{ - /* IUnknown */ - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - /* IDirectMusicLoader */ - STDMETHOD(GetObject) (THIS_ LPDMUS_OBJECTDESC pDesc, - REFIID riid, - LPVOID FAR *ppv) PURE; - STDMETHOD(SetObject) (THIS_ LPDMUS_OBJECTDESC pDesc) PURE; - STDMETHOD(SetSearchDirectory) (THIS_ REFGUID rguidClass, - WCHAR *pwzPath, - BOOL fClear) PURE; - STDMETHOD(ScanDirectory) (THIS_ REFGUID rguidClass, - WCHAR *pwzFileExtension, - WCHAR *pwzScanFileName) PURE; - STDMETHOD(CacheObject) (THIS_ IDirectMusicObject * pObject) PURE; - STDMETHOD(ReleaseObject) (THIS_ IDirectMusicObject * pObject) PURE; - STDMETHOD(ClearCache) (THIS_ REFGUID rguidClass) PURE; - STDMETHOD(EnableCache) (THIS_ REFGUID rguidClass, - BOOL fEnable) PURE; - STDMETHOD(EnumObject) (THIS_ REFGUID rguidClass, - DWORD dwIndex, - LPDMUS_OBJECTDESC pDesc) PURE; - - /* IDirectMusicLoader8 */ - STDMETHOD_(void, CollectGarbage) (THIS) PURE; - STDMETHOD(ReleaseObjectByUnknown) (THIS_ IUnknown *pObject) PURE; - STDMETHOD(LoadObjectFromFile) (THIS_ REFGUID rguidClassID, - REFIID iidInterfaceID, - WCHAR *pwzFilePath, - void ** ppObject) PURE; -}; - -/* Stream object supports IDirectMusicGetLoader interface to access loader while file parsing. */ - -#undef INTERFACE -#define INTERFACE IDirectMusicGetLoader -DECLARE_INTERFACE_(IDirectMusicGetLoader, IUnknown) -{ - /* IUnknown */ - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - /* IDirectMusicGetLoader */ - STDMETHOD(GetLoader) (THIS_ IDirectMusicLoader ** ppLoader) PURE; -}; - -typedef IDirectMusicGetLoader IDirectMusicGetLoader8; - -/*//////////////////////////////////////////////////////////////////// -// IDirectMusicSegment */ -#undef INTERFACE -#define INTERFACE IDirectMusicSegment -DECLARE_INTERFACE_(IDirectMusicSegment, IUnknown) -{ - /* IUnknown */ - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - /* IDirectMusicSegment */ - STDMETHOD(GetLength) (THIS_ MUSIC_TIME* pmtLength) PURE; - STDMETHOD(SetLength) (THIS_ MUSIC_TIME mtLength) PURE; - STDMETHOD(GetRepeats) (THIS_ DWORD* pdwRepeats) PURE; - STDMETHOD(SetRepeats) (THIS_ DWORD dwRepeats) PURE; - STDMETHOD(GetDefaultResolution) (THIS_ DWORD* pdwResolution) PURE; - STDMETHOD(SetDefaultResolution) (THIS_ DWORD dwResolution) PURE; - STDMETHOD(GetTrack) (THIS_ REFGUID rguidType, - DWORD dwGroupBits, - DWORD dwIndex, - IDirectMusicTrack** ppTrack) PURE; - STDMETHOD(GetTrackGroup) (THIS_ IDirectMusicTrack* pTrack, - DWORD* pdwGroupBits) PURE; - STDMETHOD(InsertTrack) (THIS_ IDirectMusicTrack* pTrack, - DWORD dwGroupBits) PURE; - STDMETHOD(RemoveTrack) (THIS_ IDirectMusicTrack* pTrack) PURE; - STDMETHOD(InitPlay) (THIS_ IDirectMusicSegmentState** ppSegState, - IDirectMusicPerformance* pPerformance, - DWORD dwFlags) PURE; - STDMETHOD(GetGraph) (THIS_ IDirectMusicGraph** ppGraph) PURE; - STDMETHOD(SetGraph) (THIS_ IDirectMusicGraph* pGraph) PURE; - STDMETHOD(AddNotificationType) (THIS_ REFGUID rguidNotificationType) PURE; - STDMETHOD(RemoveNotificationType) (THIS_ REFGUID rguidNotificationType) PURE; - STDMETHOD(GetParam) (THIS_ REFGUID rguidType, - DWORD dwGroupBits, - DWORD dwIndex, - MUSIC_TIME mtTime, - MUSIC_TIME* pmtNext, - void* pParam) PURE; - STDMETHOD(SetParam) (THIS_ REFGUID rguidType, - DWORD dwGroupBits, - DWORD dwIndex, - MUSIC_TIME mtTime, - void* pParam) PURE; - STDMETHOD(Clone) (THIS_ MUSIC_TIME mtStart, - MUSIC_TIME mtEnd, - IDirectMusicSegment** ppSegment) PURE; - STDMETHOD(SetStartPoint) (THIS_ MUSIC_TIME mtStart) PURE; - STDMETHOD(GetStartPoint) (THIS_ MUSIC_TIME* pmtStart) PURE; - STDMETHOD(SetLoopPoints) (THIS_ MUSIC_TIME mtStart, - MUSIC_TIME mtEnd) PURE; - STDMETHOD(GetLoopPoints) (THIS_ MUSIC_TIME* pmtStart, - MUSIC_TIME* pmtEnd) PURE; - STDMETHOD(SetPChannelsUsed) (THIS_ DWORD dwNumPChannels, - DWORD* paPChannels) PURE; -}; - -/*//////////////////////////////////////////////////////////////////// -// IDirectMusicSegment8 */ -#undef INTERFACE -#define INTERFACE IDirectMusicSegment8 -DECLARE_INTERFACE_(IDirectMusicSegment8, IDirectMusicSegment) -{ - /* IUnknown */ - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - /* IDirectMusicSegment */ - STDMETHOD(GetLength) (THIS_ MUSIC_TIME* pmtLength) PURE; - STDMETHOD(SetLength) (THIS_ MUSIC_TIME mtLength) PURE; - STDMETHOD(GetRepeats) (THIS_ DWORD* pdwRepeats) PURE; - STDMETHOD(SetRepeats) (THIS_ DWORD dwRepeats) PURE; - STDMETHOD(GetDefaultResolution) (THIS_ DWORD* pdwResolution) PURE; - STDMETHOD(SetDefaultResolution) (THIS_ DWORD dwResolution) PURE; - STDMETHOD(GetTrack) (THIS_ REFGUID rguidType, - DWORD dwGroupBits, - DWORD dwIndex, - IDirectMusicTrack** ppTrack) PURE; - STDMETHOD(GetTrackGroup) (THIS_ IDirectMusicTrack* pTrack, - DWORD* pdwGroupBits) PURE; - STDMETHOD(InsertTrack) (THIS_ IDirectMusicTrack* pTrack, - DWORD dwGroupBits) PURE; - STDMETHOD(RemoveTrack) (THIS_ IDirectMusicTrack* pTrack) PURE; - STDMETHOD(InitPlay) (THIS_ IDirectMusicSegmentState** ppSegState, - IDirectMusicPerformance* pPerformance, - DWORD dwFlags) PURE; - STDMETHOD(GetGraph) (THIS_ IDirectMusicGraph** ppGraph) PURE; - STDMETHOD(SetGraph) (THIS_ IDirectMusicGraph* pGraph) PURE; - STDMETHOD(AddNotificationType) (THIS_ REFGUID rguidNotificationType) PURE; - STDMETHOD(RemoveNotificationType) (THIS_ REFGUID rguidNotificationType) PURE; - STDMETHOD(GetParam) (THIS_ REFGUID rguidType, - DWORD dwGroupBits, - DWORD dwIndex, - MUSIC_TIME mtTime, - MUSIC_TIME* pmtNext, - void* pParam) PURE; - STDMETHOD(SetParam) (THIS_ REFGUID rguidType, - DWORD dwGroupBits, - DWORD dwIndex, - MUSIC_TIME mtTime, - void* pParam) PURE; - STDMETHOD(Clone) (THIS_ MUSIC_TIME mtStart, - MUSIC_TIME mtEnd, - IDirectMusicSegment** ppSegment) PURE; - STDMETHOD(SetStartPoint) (THIS_ MUSIC_TIME mtStart) PURE; - STDMETHOD(GetStartPoint) (THIS_ MUSIC_TIME* pmtStart) PURE; - STDMETHOD(SetLoopPoints) (THIS_ MUSIC_TIME mtStart, - MUSIC_TIME mtEnd) PURE; - STDMETHOD(GetLoopPoints) (THIS_ MUSIC_TIME* pmtStart, - MUSIC_TIME* pmtEnd) PURE; - STDMETHOD(SetPChannelsUsed) (THIS_ DWORD dwNumPChannels, - DWORD* paPChannels) PURE; - /* IDirectMusicSegment8 */ - STDMETHOD(SetTrackConfig) (THIS_ REFGUID rguidTrackClassID, /* Class ID of the type of track on which to set the configuration flags. */ - DWORD dwGroupBits, /* Group bits. */ - DWORD dwIndex, /* Nth track (or DMUS_SEG_ALLTRACKS) that matches class id and group id. */ - DWORD dwFlagsOn, /* DMUS_TRACKCONFIG_ flags to enable. */ - DWORD dwFlagsOff) PURE; /* DMUS_TRACKCONFIG_ flags to disable. */ - STDMETHOD(GetAudioPathConfig) (THIS_ IUnknown ** ppAudioPathConfig) PURE; - STDMETHOD(Compose) (THIS_ MUSIC_TIME mtTime, - IDirectMusicSegment* pFromSegment, - IDirectMusicSegment* pToSegment, - IDirectMusicSegment** ppComposedSegment) PURE; - STDMETHOD(Download) (THIS_ IUnknown *pAudioPath) PURE; - STDMETHOD(Unload) (THIS_ IUnknown *pAudioPath) PURE; -}; - -/*///////////////////////////////////////////////////////////////////// -// IDirectMusicSegmentState */ -#undef INTERFACE -#define INTERFACE IDirectMusicSegmentState -DECLARE_INTERFACE_(IDirectMusicSegmentState, IUnknown) -{ - /* IUnknown */ - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - /* IDirectMusicSegmentState */ - STDMETHOD(GetRepeats) (THIS_ DWORD* pdwRepeats) PURE; - STDMETHOD(GetSegment ) (THIS_ IDirectMusicSegment** ppSegment) PURE; - STDMETHOD(GetStartTime) (THIS_ MUSIC_TIME* pmtStart) PURE; - STDMETHOD(GetSeek) (THIS_ MUSIC_TIME* pmtSeek) PURE; - STDMETHOD(GetStartPoint) (THIS_ MUSIC_TIME* pmtStart) PURE; -}; - -/*///////////////////////////////////////////////////////////////////// -// IDirectMusicSegmentState8 */ -#undef INTERFACE -#define INTERFACE IDirectMusicSegmentState8 -DECLARE_INTERFACE_(IDirectMusicSegmentState8, IDirectMusicSegmentState) -{ - /* IUnknown */ - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - /* IDirectMusicSegmentState */ - STDMETHOD(GetRepeats) (THIS_ DWORD* pdwRepeats) PURE; - STDMETHOD(GetSegment ) (THIS_ IDirectMusicSegment** ppSegment) PURE; - STDMETHOD(GetStartTime) (THIS_ MUSIC_TIME* pmtStart) PURE; - STDMETHOD(GetSeek) (THIS_ MUSIC_TIME* pmtSeek) PURE; - STDMETHOD(GetStartPoint) (THIS_ MUSIC_TIME* pmtStart) PURE; - - /* IDirectMusicSegmentState8 */ - STDMETHOD(SetTrackConfig) (THIS_ REFGUID rguidTrackClassID, /* Class ID of the type of track on which to set the configuration flags. */ - DWORD dwGroupBits, /* Group bits. */ - DWORD dwIndex, /* Nth track (or DMUS_SEG_ALLTRACKS) that matches class id and group id. */ - DWORD dwFlagsOn, /* DMUS_TRACKCONFIG_ flags to enable. */ - DWORD dwFlagsOff) PURE; /* DMUS_TRACKCONFIG_ flags to disable. */ - STDMETHOD(GetObjectInPath) (THIS_ DWORD dwPChannel, /* PChannel to search. */ - DWORD dwStage, /* Which stage in the path. */ - DWORD dwBuffer, /* Which buffer to address, if more than one. */ - REFGUID guidObject, /* ClassID of object. */ - DWORD dwIndex, /* Which object of that class. */ - REFGUID iidInterface,/* Requested COM interface. */ - void ** ppObject) PURE; /* Pointer to interface. */ -}; - -/*//////////////////////////////////////////////////////////////////// -// IDirectMusicAudioPath */ -#undef INTERFACE -#define INTERFACE IDirectMusicAudioPath -DECLARE_INTERFACE_(IDirectMusicAudioPath, IUnknown) -{ - /* IUnknown */ - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - /* IDirectMusicAudioPath */ - STDMETHOD(GetObjectInPath) (THIS_ DWORD dwPChannel, /* PChannel to search. */ - DWORD dwStage, /* Which stage in the path. */ - DWORD dwBuffer, /* Which buffer to address, if more than one. */ - REFGUID guidObject, /* ClassID of object. */ - DWORD dwIndex, /* Which object of that class. */ - REFGUID iidInterface,/* Requested COM interface. */ - void ** ppObject) PURE; /* Pointer to interface. */ - STDMETHOD(Activate) (THIS_ BOOL fActivate) PURE;/* True to activate, False to deactivate. */ - STDMETHOD(SetVolume) (THIS_ long lVolume, /* Gain, in 100ths of a dB. This must be negative (0 represents full volume.) */ - DWORD dwDuration) PURE;/* Duration of volume ramp in milliseconds. Note that 0 is more efficient. */ - STDMETHOD(ConvertPChannel) (THIS_ DWORD dwPChannelIn, /* Pchannel of source. */ - DWORD *pdwPChannelOut) PURE; /* Equivalent pchannel on performance. */ -}; - -typedef IDirectMusicAudioPath IDirectMusicAudioPath8; - -/*//////////////////////////////////////////////////////////////////// -// IDirectMusicPerformance */ -#undef INTERFACE -#define INTERFACE IDirectMusicPerformance -DECLARE_INTERFACE_(IDirectMusicPerformance, IUnknown) -{ - /* IUnknown */ - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - /* IDirectMusicPerformance */ - STDMETHOD(Init) (THIS_ IDirectMusic** ppDirectMusic, - LPDIRECTSOUND pDirectSound, - HWND hWnd) PURE; - STDMETHOD(PlaySegment) (THIS_ IDirectMusicSegment* pSegment, - DWORD dwFlags, - __int64 i64StartTime, - IDirectMusicSegmentState** ppSegmentState) PURE; - STDMETHOD(Stop) (THIS_ IDirectMusicSegment* pSegment, - IDirectMusicSegmentState* pSegmentState, - MUSIC_TIME mtTime, - DWORD dwFlags) PURE; - STDMETHOD(GetSegmentState) (THIS_ IDirectMusicSegmentState** ppSegmentState, - MUSIC_TIME mtTime) PURE; - STDMETHOD(SetPrepareTime) (THIS_ DWORD dwMilliSeconds) PURE; - STDMETHOD(GetPrepareTime) (THIS_ DWORD* pdwMilliSeconds) PURE; - STDMETHOD(SetBumperLength) (THIS_ DWORD dwMilliSeconds) PURE; - STDMETHOD(GetBumperLength) (THIS_ DWORD* pdwMilliSeconds) PURE; - STDMETHOD(SendPMsg) (THIS_ DMUS_PMSG* pPMSG) PURE; - STDMETHOD(MusicToReferenceTime) (THIS_ MUSIC_TIME mtTime, - REFERENCE_TIME* prtTime) PURE; - STDMETHOD(ReferenceToMusicTime) (THIS_ REFERENCE_TIME rtTime, - MUSIC_TIME* pmtTime) PURE; - STDMETHOD(IsPlaying) (THIS_ IDirectMusicSegment* pSegment, - IDirectMusicSegmentState* pSegState) PURE; - STDMETHOD(GetTime) (THIS_ REFERENCE_TIME* prtNow, - MUSIC_TIME* pmtNow) PURE; - STDMETHOD(AllocPMsg) (THIS_ ULONG cb, - DMUS_PMSG** ppPMSG) PURE; - STDMETHOD(FreePMsg) (THIS_ DMUS_PMSG* pPMSG) PURE; - STDMETHOD(GetGraph) (THIS_ IDirectMusicGraph** ppGraph) PURE; - STDMETHOD(SetGraph) (THIS_ IDirectMusicGraph* pGraph) PURE; - STDMETHOD(SetNotificationHandle)(THIS_ HANDLE hNotification, - REFERENCE_TIME rtMinimum) PURE; - STDMETHOD(GetNotificationPMsg) (THIS_ DMUS_NOTIFICATION_PMSG** ppNotificationPMsg) PURE; - STDMETHOD(AddNotificationType) (THIS_ REFGUID rguidNotificationType) PURE; - STDMETHOD(RemoveNotificationType)(THIS_ REFGUID rguidNotificationType) PURE; - STDMETHOD(AddPort) (THIS_ IDirectMusicPort* pPort) PURE; - STDMETHOD(RemovePort) (THIS_ IDirectMusicPort* pPort ) PURE; - STDMETHOD(AssignPChannelBlock) (THIS_ DWORD dwBlockNum, - IDirectMusicPort* pPort, - DWORD dwGroup ) PURE; - STDMETHOD(AssignPChannel) (THIS_ DWORD dwPChannel, - IDirectMusicPort* pPort, - DWORD dwGroup, - DWORD dwMChannel ) PURE; - STDMETHOD(PChannelInfo) (THIS_ DWORD dwPChannel, - IDirectMusicPort** ppPort, - DWORD* pdwGroup, - DWORD* pdwMChannel ) PURE; - STDMETHOD(DownloadInstrument) (THIS_ IDirectMusicInstrument* pInst, - DWORD dwPChannel, - IDirectMusicDownloadedInstrument** ppDownInst, - DMUS_NOTERANGE* pNoteRanges, - DWORD dwNumNoteRanges, - IDirectMusicPort** ppPort, - DWORD* pdwGroup, - DWORD* pdwMChannel ) PURE; - STDMETHOD(Invalidate) (THIS_ MUSIC_TIME mtTime, - DWORD dwFlags) PURE; - STDMETHOD(GetParam) (THIS_ REFGUID rguidType, - DWORD dwGroupBits, - DWORD dwIndex, - MUSIC_TIME mtTime, - MUSIC_TIME* pmtNext, - void* pParam) PURE; - STDMETHOD(SetParam) (THIS_ REFGUID rguidType, - DWORD dwGroupBits, - DWORD dwIndex, - MUSIC_TIME mtTime, - void* pParam) PURE; - STDMETHOD(GetGlobalParam) (THIS_ REFGUID rguidType, - void* pParam, - DWORD dwSize) PURE; - STDMETHOD(SetGlobalParam) (THIS_ REFGUID rguidType, - void* pParam, - DWORD dwSize) PURE; - STDMETHOD(GetLatencyTime) (THIS_ REFERENCE_TIME* prtTime) PURE; - STDMETHOD(GetQueueTime) (THIS_ REFERENCE_TIME* prtTime) PURE; - STDMETHOD(AdjustTime) (THIS_ REFERENCE_TIME rtAmount) PURE; - STDMETHOD(CloseDown) (THIS) PURE; - STDMETHOD(GetResolvedTime) (THIS_ REFERENCE_TIME rtTime, - REFERENCE_TIME* prtResolved, - DWORD dwTimeResolveFlags) PURE; - STDMETHOD(MIDIToMusic) (THIS_ BYTE bMIDIValue, - DMUS_CHORD_KEY* pChord, - BYTE bPlayMode, - BYTE bChordLevel, - WORD *pwMusicValue) PURE; - STDMETHOD(MusicToMIDI) (THIS_ WORD wMusicValue, - DMUS_CHORD_KEY* pChord, - BYTE bPlayMode, - BYTE bChordLevel, - BYTE *pbMIDIValue) PURE; - STDMETHOD(TimeToRhythm) (THIS_ MUSIC_TIME mtTime, - DMUS_TIMESIGNATURE *pTimeSig, - WORD *pwMeasure, - BYTE *pbBeat, - BYTE *pbGrid, - short *pnOffset) PURE; - STDMETHOD(RhythmToTime) (THIS_ WORD wMeasure, - BYTE bBeat, - BYTE bGrid, - short nOffset, - DMUS_TIMESIGNATURE *pTimeSig, - MUSIC_TIME *pmtTime) PURE; -}; - -/*//////////////////////////////////////////////////////////////////// -// IDirectMusicPerformance8 */ -#undef INTERFACE -#define INTERFACE IDirectMusicPerformance8 -DECLARE_INTERFACE_(IDirectMusicPerformance8, IDirectMusicPerformance) -{ - /* IUnknown */ - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - /* IDirectMusicPerformance */ - STDMETHOD(Init) (THIS_ IDirectMusic** ppDirectMusic, - LPDIRECTSOUND pDirectSound, - HWND hWnd) PURE; - STDMETHOD(PlaySegment) (THIS_ IDirectMusicSegment* pSegment, - DWORD dwFlags, - __int64 i64StartTime, - IDirectMusicSegmentState** ppSegmentState) PURE; - STDMETHOD(Stop) (THIS_ IDirectMusicSegment* pSegment, - IDirectMusicSegmentState* pSegmentState, - MUSIC_TIME mtTime, - DWORD dwFlags) PURE; - STDMETHOD(GetSegmentState) (THIS_ IDirectMusicSegmentState** ppSegmentState, - MUSIC_TIME mtTime) PURE; - STDMETHOD(SetPrepareTime) (THIS_ DWORD dwMilliSeconds) PURE; - STDMETHOD(GetPrepareTime) (THIS_ DWORD* pdwMilliSeconds) PURE; - STDMETHOD(SetBumperLength) (THIS_ DWORD dwMilliSeconds) PURE; - STDMETHOD(GetBumperLength) (THIS_ DWORD* pdwMilliSeconds) PURE; - STDMETHOD(SendPMsg) (THIS_ DMUS_PMSG* pPMSG) PURE; - STDMETHOD(MusicToReferenceTime) (THIS_ MUSIC_TIME mtTime, - REFERENCE_TIME* prtTime) PURE; - STDMETHOD(ReferenceToMusicTime) (THIS_ REFERENCE_TIME rtTime, - MUSIC_TIME* pmtTime) PURE; - STDMETHOD(IsPlaying) (THIS_ IDirectMusicSegment* pSegment, - IDirectMusicSegmentState* pSegState) PURE; - STDMETHOD(GetTime) (THIS_ REFERENCE_TIME* prtNow, - MUSIC_TIME* pmtNow) PURE; - STDMETHOD(AllocPMsg) (THIS_ ULONG cb, - DMUS_PMSG** ppPMSG) PURE; - STDMETHOD(FreePMsg) (THIS_ DMUS_PMSG* pPMSG) PURE; - STDMETHOD(GetGraph) (THIS_ IDirectMusicGraph** ppGraph) PURE; - STDMETHOD(SetGraph) (THIS_ IDirectMusicGraph* pGraph) PURE; - STDMETHOD(SetNotificationHandle)(THIS_ HANDLE hNotification, - REFERENCE_TIME rtMinimum) PURE; - STDMETHOD(GetNotificationPMsg) (THIS_ DMUS_NOTIFICATION_PMSG** ppNotificationPMsg) PURE; - STDMETHOD(AddNotificationType) (THIS_ REFGUID rguidNotificationType) PURE; - STDMETHOD(RemoveNotificationType)(THIS_ REFGUID rguidNotificationType) PURE; - STDMETHOD(AddPort) (THIS_ IDirectMusicPort* pPort) PURE; - STDMETHOD(RemovePort) (THIS_ IDirectMusicPort* pPort ) PURE; - STDMETHOD(AssignPChannelBlock) (THIS_ DWORD dwBlockNum, - IDirectMusicPort* pPort, - DWORD dwGroup ) PURE; - STDMETHOD(AssignPChannel) (THIS_ DWORD dwPChannel, - IDirectMusicPort* pPort, - DWORD dwGroup, - DWORD dwMChannel ) PURE; - STDMETHOD(PChannelInfo) (THIS_ DWORD dwPChannel, - IDirectMusicPort** ppPort, - DWORD* pdwGroup, - DWORD* pdwMChannel ) PURE; - STDMETHOD(DownloadInstrument) (THIS_ IDirectMusicInstrument* pInst, - DWORD dwPChannel, - IDirectMusicDownloadedInstrument** ppDownInst, - DMUS_NOTERANGE* pNoteRanges, - DWORD dwNumNoteRanges, - IDirectMusicPort** ppPort, - DWORD* pdwGroup, - DWORD* pdwMChannel ) PURE; - STDMETHOD(Invalidate) (THIS_ MUSIC_TIME mtTime, - DWORD dwFlags) PURE; - STDMETHOD(GetParam) (THIS_ REFGUID rguidType, - DWORD dwGroupBits, - DWORD dwIndex, - MUSIC_TIME mtTime, - MUSIC_TIME* pmtNext, - void* pParam) PURE; - STDMETHOD(SetParam) (THIS_ REFGUID rguidType, - DWORD dwGroupBits, - DWORD dwIndex, - MUSIC_TIME mtTime, - void* pParam) PURE; - STDMETHOD(GetGlobalParam) (THIS_ REFGUID rguidType, - void* pParam, - DWORD dwSize) PURE; - STDMETHOD(SetGlobalParam) (THIS_ REFGUID rguidType, - void* pParam, - DWORD dwSize) PURE; - STDMETHOD(GetLatencyTime) (THIS_ REFERENCE_TIME* prtTime) PURE; - STDMETHOD(GetQueueTime) (THIS_ REFERENCE_TIME* prtTime) PURE; - STDMETHOD(AdjustTime) (THIS_ REFERENCE_TIME rtAmount) PURE; - STDMETHOD(CloseDown) (THIS) PURE; - STDMETHOD(GetResolvedTime) (THIS_ REFERENCE_TIME rtTime, - REFERENCE_TIME* prtResolved, - DWORD dwTimeResolveFlags) PURE; - STDMETHOD(MIDIToMusic) (THIS_ BYTE bMIDIValue, - DMUS_CHORD_KEY* pChord, - BYTE bPlayMode, - BYTE bChordLevel, - WORD *pwMusicValue) PURE; - STDMETHOD(MusicToMIDI) (THIS_ WORD wMusicValue, - DMUS_CHORD_KEY* pChord, - BYTE bPlayMode, - BYTE bChordLevel, - BYTE *pbMIDIValue) PURE; - STDMETHOD(TimeToRhythm) (THIS_ MUSIC_TIME mtTime, - DMUS_TIMESIGNATURE *pTimeSig, - WORD *pwMeasure, - BYTE *pbBeat, - BYTE *pbGrid, - short *pnOffset) PURE; - STDMETHOD(RhythmToTime) (THIS_ WORD wMeasure, - BYTE bBeat, - BYTE bGrid, - short nOffset, - DMUS_TIMESIGNATURE *pTimeSig, - MUSIC_TIME *pmtTime) PURE; - /* IDirectMusicPerformance8 */ - STDMETHOD(InitAudio) (THIS_ IDirectMusic** ppDirectMusic, /* Optional DMusic pointer. */ - IDirectSound** ppDirectSound, /* Optional DSound pointer. */ - HWND hWnd, /* HWND for DSound. */ - DWORD dwDefaultPathType, /* Requested default audio path type, also optional. */ - DWORD dwPChannelCount, /* Number of PChannels, if default audio path to be created. */ - DWORD dwFlags, /* DMUS_AUDIOF flags, if no pParams structure. */ - DMUS_AUDIOPARAMS *pParams) PURE; /* Optional initialization structure, defining required voices, buffers, etc. */ - STDMETHOD(PlaySegmentEx) (THIS_ IUnknown* pSource, /* Segment to play. */ - WCHAR *pwzSegmentName, /* Not supported in DX8. */ - IUnknown* pTransition, /* Optional template segment to compose transition with. */ - DWORD dwFlags, /* DMUS_SEGF_ flags. */ - __int64 i64StartTime, /* Time to start playback. */ - IDirectMusicSegmentState** ppSegmentState, /* Returned Segment State. */ - IUnknown *pFrom, /* Optional segmentstate or audiopath to replace. */ - IUnknown *pAudioPath) PURE; /* Optional audioPath to play on. */ - STDMETHOD(StopEx) (THIS_ IUnknown *pObjectToStop, /* Segstate, AudioPath, or Segment. */ - __int64 i64StopTime, - DWORD dwFlags) PURE; - STDMETHOD(ClonePMsg) (THIS_ DMUS_PMSG* pSourcePMSG, - DMUS_PMSG** ppCopyPMSG) PURE; - STDMETHOD(CreateAudioPath) (THIS_ IUnknown *pSourceConfig, /* Source configuration, from AudioPathConfig file. */ - BOOL fActivate, /* TRUE to activate on creation. */ - IDirectMusicAudioPath **ppNewPath) PURE; /* Returns created audiopath. */ - STDMETHOD(CreateStandardAudioPath)(THIS_ DWORD dwType, /* Type of path to create. */ - DWORD dwPChannelCount, /* How many PChannels to allocate for it. */ - BOOL fActivate, /* TRUE to activate on creation. */ - IDirectMusicAudioPath **ppNewPath) PURE; /* Returns created audiopath. */ - STDMETHOD(SetDefaultAudioPath) (THIS_ IDirectMusicAudioPath *pAudioPath) PURE; - STDMETHOD(GetDefaultAudioPath) (THIS_ IDirectMusicAudioPath **ppAudioPath) PURE; - STDMETHOD(GetParamEx) (THIS_ REFGUID rguidType, /* GetParam command ID. */ - DWORD dwTrackID, /* Virtual track ID of caller. */ - DWORD dwGroupBits, /* Group bits of caller. */ - DWORD dwIndex, /* Index to Nth parameter. */ - MUSIC_TIME mtTime, /* Time of requested parameter. */ - MUSIC_TIME* pmtNext, /* Returned delta to next parameter. */ - void* pParam) PURE; /* Data structure to fill with parameter. */ -}; - - - -/*//////////////////////////////////////////////////////////////////// -// IDirectMusicGraph */ -#undef INTERFACE -#define INTERFACE IDirectMusicGraph -DECLARE_INTERFACE_(IDirectMusicGraph, IUnknown) -{ - /* IUnknown */ - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - /* IDirectMusicGraph */ - STDMETHOD(StampPMsg) (THIS_ DMUS_PMSG* pPMSG) PURE; - STDMETHOD(InsertTool) (THIS_ IDirectMusicTool* pTool, - DWORD* pdwPChannels, - DWORD cPChannels, - LONG lIndex) PURE; - STDMETHOD(GetTool) (THIS_ DWORD dwIndex, - IDirectMusicTool** ppTool) PURE; - STDMETHOD(RemoveTool) (THIS_ IDirectMusicTool* pTool) PURE; -}; - -typedef IDirectMusicGraph IDirectMusicGraph8; - - -/*///////////////////////////////////////////////////////////////////// -// IDirectMusicStyle */ -#undef INTERFACE -#define INTERFACE IDirectMusicStyle -DECLARE_INTERFACE_(IDirectMusicStyle, IUnknown) -{ - /* IUnknown */ - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - /* IDirectMusicStyle */ - STDMETHOD(GetBand) (THIS_ WCHAR* pwszName, - IDirectMusicBand** ppBand) PURE; - STDMETHOD(EnumBand) (THIS_ DWORD dwIndex, - WCHAR *pwszName) PURE; - STDMETHOD(GetDefaultBand) (THIS_ IDirectMusicBand** ppBand) PURE; - STDMETHOD(EnumMotif) (THIS_ DWORD dwIndex, - WCHAR* pwszName) PURE; - STDMETHOD(GetMotif) (THIS_ WCHAR* pwszName, - IDirectMusicSegment** ppSegment) PURE; - STDMETHOD(GetDefaultChordMap) (THIS_ IDirectMusicChordMap** ppChordMap) PURE; - STDMETHOD(EnumChordMap) (THIS_ DWORD dwIndex, - WCHAR *pwszName) PURE; - STDMETHOD(GetChordMap) (THIS_ WCHAR* pwszName, - IDirectMusicChordMap** ppChordMap) PURE; - STDMETHOD(GetTimeSignature) (THIS_ DMUS_TIMESIGNATURE* pTimeSig) PURE; - STDMETHOD(GetEmbellishmentLength) (THIS_ DWORD dwType, - DWORD dwLevel, - DWORD* pdwMin, - DWORD* pdwMax) PURE; - STDMETHOD(GetTempo) (THIS_ double* pTempo) PURE; -}; - -/*///////////////////////////////////////////////////////////////////// -// IDirectMusicStyle8 */ -#undef INTERFACE -#define INTERFACE IDirectMusicStyle8 -DECLARE_INTERFACE_(IDirectMusicStyle8, IDirectMusicStyle) -{ - /* IUnknown */ - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - /* IDirectMusicStyle */ - STDMETHOD(GetBand) (THIS_ WCHAR* pwszName, - IDirectMusicBand** ppBand) PURE; - STDMETHOD(EnumBand) (THIS_ DWORD dwIndex, - WCHAR *pwszName) PURE; - STDMETHOD(GetDefaultBand) (THIS_ IDirectMusicBand** ppBand) PURE; - STDMETHOD(EnumMotif) (THIS_ DWORD dwIndex, - WCHAR* pwszName) PURE; - STDMETHOD(GetMotif) (THIS_ WCHAR* pwszName, - IDirectMusicSegment** ppSegment) PURE; - STDMETHOD(GetDefaultChordMap) (THIS_ IDirectMusicChordMap** ppChordMap) PURE; - STDMETHOD(EnumChordMap) (THIS_ DWORD dwIndex, - WCHAR *pwszName) PURE; - STDMETHOD(GetChordMap) (THIS_ WCHAR* pwszName, - IDirectMusicChordMap** ppChordMap) PURE; - STDMETHOD(GetTimeSignature) (THIS_ DMUS_TIMESIGNATURE* pTimeSig) PURE; - STDMETHOD(GetEmbellishmentLength) (THIS_ DWORD dwType, - DWORD dwLevel, - DWORD* pdwMin, - DWORD* pdwMax) PURE; - STDMETHOD(GetTempo) (THIS_ double* pTempo) PURE; - - /* IDirectMusicStyle8 */ - STDMETHOD(EnumPattern) (THIS_ DWORD dwIndex, - DWORD dwPatternType, - WCHAR* pwszName) PURE; -}; - -/*///////////////////////////////////////////////////////////////////// -// IDirectMusicChordMap */ -#undef INTERFACE -#define INTERFACE IDirectMusicChordMap -DECLARE_INTERFACE_(IDirectMusicChordMap, IUnknown) -{ - /* IUnknown */ - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - /* IDirectMusicChordMap */ - STDMETHOD(GetScale) (THIS_ DWORD* pdwScale) PURE; -}; - -typedef IDirectMusicChordMap IDirectMusicChordMap8; - -/*///////////////////////////////////////////////////////////////////// -// IDirectMusicComposer */ -#undef INTERFACE -#define INTERFACE IDirectMusicComposer -DECLARE_INTERFACE_(IDirectMusicComposer, IUnknown) -{ - /* IUnknown */ - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - /* IDirectMusicComposer */ - STDMETHOD(ComposeSegmentFromTemplate) (THIS_ IDirectMusicStyle* pStyle, - IDirectMusicSegment* pTemplate, - WORD wActivity, - IDirectMusicChordMap* pChordMap, - IDirectMusicSegment** ppSegment) PURE; - STDMETHOD(ComposeSegmentFromShape) (THIS_ IDirectMusicStyle* pStyle, - WORD wNumMeasures, - WORD wShape, - WORD wActivity, - BOOL fIntro, - BOOL fEnd, - IDirectMusicChordMap* pChordMap, - IDirectMusicSegment** ppSegment ) PURE; - STDMETHOD(ComposeTransition) (THIS_ IDirectMusicSegment* pFromSeg, - IDirectMusicSegment* pToSeg, - MUSIC_TIME mtTime, - WORD wCommand, - DWORD dwFlags, - IDirectMusicChordMap* pChordMap, - IDirectMusicSegment** ppTransSeg) PURE; - STDMETHOD(AutoTransition) (THIS_ IDirectMusicPerformance* pPerformance, - IDirectMusicSegment* pToSeg, - WORD wCommand, - DWORD dwFlags, - IDirectMusicChordMap* pChordMap, - IDirectMusicSegment** ppTransSeg, - IDirectMusicSegmentState** ppToSegState, - IDirectMusicSegmentState** ppTransSegState) PURE; - STDMETHOD(ComposeTemplateFromShape) (THIS_ WORD wNumMeasures, - WORD wShape, - BOOL fIntro, - BOOL fEnd, - WORD wEndLength, - IDirectMusicSegment** ppTemplate) PURE; - STDMETHOD(ChangeChordMap) (THIS_ IDirectMusicSegment* pSegment, - BOOL fTrackScale, - IDirectMusicChordMap* pChordMap) PURE; -}; - -typedef IDirectMusicComposer IDirectMusicComposer8; - -/*///////////////////////////////////////////////////////////////////// -// IDirectMusicPatternTrack */ - -#undef INTERFACE -#define INTERFACE IDirectMusicPatternTrack -DECLARE_INTERFACE_(IDirectMusicPatternTrack, IUnknown) -{ - /* IUnknown */ - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - /* IDirectMusicPatternTrack */ - STDMETHOD(CreateSegment) (THIS_ IDirectMusicStyle* pStyle, - IDirectMusicSegment** ppSegment) PURE; - STDMETHOD(SetVariation) (THIS_ IDirectMusicSegmentState* pSegState, - DWORD dwVariationFlags, - DWORD dwPart) PURE; - STDMETHOD(SetPatternByName) (THIS_ IDirectMusicSegmentState* pSegState, - WCHAR* wszName, - IDirectMusicStyle* pStyle, - DWORD dwPatternType, - DWORD* pdwLength) PURE; -}; - -typedef IDirectMusicPatternTrack IDirectMusicPatternTrack8; - -/*///////////////////////////////////////////////////////////////////// -// IDirectMusicScript */ - -#undef INTERFACE -#define INTERFACE IDirectMusicScript -DECLARE_INTERFACE_(IDirectMusicScript, IUnknown) -{ - /* IUnknown */ - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - /* IDirectMusicScript */ - STDMETHOD(Init) (THIS_ IDirectMusicPerformance *pPerformance, - DMUS_SCRIPT_ERRORINFO *pErrorInfo) PURE; - STDMETHOD(CallRoutine) (THIS_ WCHAR *pwszRoutineName, - DMUS_SCRIPT_ERRORINFO *pErrorInfo) PURE; - STDMETHOD(SetVariableVariant) (THIS_ WCHAR *pwszVariableName, - VARIANT varValue, - BOOL fSetRef, - DMUS_SCRIPT_ERRORINFO *pErrorInfo) PURE; - STDMETHOD(GetVariableVariant) (THIS_ WCHAR *pwszVariableName, - VARIANT *pvarValue, - DMUS_SCRIPT_ERRORINFO *pErrorInfo) PURE; - STDMETHOD(SetVariableNumber) (THIS_ WCHAR *pwszVariableName, - LONG lValue, - DMUS_SCRIPT_ERRORINFO *pErrorInfo) PURE; - STDMETHOD(GetVariableNumber) (THIS_ WCHAR *pwszVariableName, - LONG *plValue, - DMUS_SCRIPT_ERRORINFO *pErrorInfo) PURE; - STDMETHOD(SetVariableObject) (THIS_ WCHAR *pwszVariableName, - IUnknown *punkValue, - DMUS_SCRIPT_ERRORINFO *pErrorInfo) PURE; - STDMETHOD(GetVariableObject) (THIS_ WCHAR *pwszVariableName, - REFIID riid, - LPVOID FAR *ppv, - DMUS_SCRIPT_ERRORINFO *pErrorInfo) PURE; - STDMETHOD(EnumRoutine) (THIS_ DWORD dwIndex, - WCHAR *pwszName) PURE; - STDMETHOD(EnumVariable) (THIS_ DWORD dwIndex, - WCHAR *pwszName) PURE; -}; - -typedef IDirectMusicScript IDirectMusicScript8; - -/*///////////////////////////////////////////////////////////////////// -// IDirectMusicContainer */ - -#undef INTERFACE -#define INTERFACE IDirectMusicContainer -DECLARE_INTERFACE_(IDirectMusicContainer, IUnknown) -{ - /* IUnknown */ - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - /* IDirectMusicContainer */ - STDMETHOD(EnumObject) (THIS_ REFGUID rguidClass, - DWORD dwIndex, - LPDMUS_OBJECTDESC pDesc, - WCHAR *pwszAlias) PURE; -}; - -typedef IDirectMusicContainer IDirectMusicContainer8; - -/* CLSID's */ -DEFINE_GUID(CLSID_DirectMusicPerformance,0xd2ac2881, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); -DEFINE_GUID(CLSID_DirectMusicSegment,0xd2ac2882, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); -DEFINE_GUID(CLSID_DirectMusicSegmentState,0xd2ac2883, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); -DEFINE_GUID(CLSID_DirectMusicGraph,0xd2ac2884, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); -DEFINE_GUID(CLSID_DirectMusicStyle,0xd2ac288a, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); -DEFINE_GUID(CLSID_DirectMusicChordMap,0xd2ac288f, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); -DEFINE_GUID(CLSID_DirectMusicComposer,0xd2ac2890, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); -DEFINE_GUID(CLSID_DirectMusicLoader,0xd2ac2892, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); -DEFINE_GUID(CLSID_DirectMusicBand,0x79ba9e00, 0xb6ee, 0x11d1, 0x86, 0xbe, 0x0, 0xc0, 0x4f, 0xbf, 0x8f, 0xef); - -/* New CLSID's for DX8 */ -DEFINE_GUID(CLSID_DirectMusicPatternTrack,0xd2ac2897, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); -DEFINE_GUID(CLSID_DirectMusicScript,0x810b5013, 0xe88d, 0x11d2, 0x8b, 0xc1, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xb6); /* {810B5013-E88D-11d2-8BC1-00600893B1B6} */ -DEFINE_GUID(CLSID_DirectMusicContainer,0x9301e380, 0x1f22, 0x11d3, 0x82, 0x26, 0xd2, 0xfa, 0x76, 0x25, 0x5d, 0x47); -DEFINE_GUID(CLSID_DirectSoundWave,0x8a667154, 0xf9cb, 0x11d2, 0xad, 0x8a, 0x0, 0x60, 0xb0, 0x57, 0x5a, 0xbc); -DEFINE_GUID(CLSID_DirectMusicAudioPathConfig,0xee0b9ca0, 0xa81e, 0x11d3, 0x9b, 0xd1, 0x0, 0x80, 0xc7, 0x15, 0xa, 0x74); - -/* Special GUID for all object types. This is used by the loader. */ -DEFINE_GUID(GUID_DirectMusicAllTypes,0xd2ac2893, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); - -/* Notification guids */ -DEFINE_GUID(GUID_NOTIFICATION_SEGMENT,0xd2ac2899, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); -DEFINE_GUID(GUID_NOTIFICATION_PERFORMANCE,0x81f75bc5, 0x4e5d, 0x11d2, 0xbc, 0xc7, 0x0, 0xa0, 0xc9, 0x22, 0xe6, 0xeb); -DEFINE_GUID(GUID_NOTIFICATION_MEASUREANDBEAT,0xd2ac289a, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); -DEFINE_GUID(GUID_NOTIFICATION_CHORD,0xd2ac289b, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); -DEFINE_GUID(GUID_NOTIFICATION_COMMAND,0xd2ac289c, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); -DEFINE_GUID(GUID_NOTIFICATION_RECOMPOSE, 0xd348372b, 0x945b, 0x45ae, 0xa5, 0x22, 0x45, 0xf, 0x12, 0x5b, 0x84, 0xa5); - -/* Track param type guids */ -/* Use to get/set a DMUS_COMMAND_PARAM param in the Command track */ -DEFINE_GUID(GUID_CommandParam,0xd2ac289d, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); - -/* Use to get a DMUS_COMMAND_PARAM_2 param in the Command track */ -DEFINE_GUID(GUID_CommandParam2, 0x28f97ef7, 0x9538, 0x11d2, 0x97, 0xa9, 0x0, 0xc0, 0x4f, 0xa3, 0x6e, 0x58); - -/* Use to get/set a DMUS_COMMAND_PARAM_2 param to be used as the command following all commands in -the Command track (this information can't be saved) */ -DEFINE_GUID(GUID_CommandParamNext, 0x472afe7a, 0x281b, 0x11d3, 0x81, 0x7d, 0x0, 0xc0, 0x4f, 0xa3, 0x6e, 0x58); - -/* Use to get/set a DMUS_CHORD_PARAM param in the Chord track */ -DEFINE_GUID(GUID_ChordParam,0xd2ac289e, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); - -/* Use to get a DMUS_RHYTHM_PARAM param in the Chord track */ -DEFINE_GUID(GUID_RhythmParam,0xd2ac289f, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); - -/* Use to get/set an IDirectMusicStyle param in the Style track */ -DEFINE_GUID(GUID_IDirectMusicStyle,0xd2ac28a1, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); - -/* Use to get a DMUS_TIMESIGNATURE param in the Style and TimeSig tracks */ -DEFINE_GUID(GUID_TimeSignature,0xd2ac28a4, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); - -/* Use to get/set a DMUS_TEMPO_PARAM param in the Tempo track */ -DEFINE_GUID(GUID_TempoParam,0xd2ac28a5, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); - -/* Use to get the next valid point in a segment at which it may start */ -DEFINE_GUID(GUID_Valid_Start_Time,0x7f6b1760, 0x1fdb, 0x11d3, 0x82, 0x26, 0x44, 0x45, 0x53, 0x54, 0x0, 0x0); - -/* Use to get the next point in the currently playing primary segment at which a new segment may start */ -DEFINE_GUID(GUID_Play_Marker,0xd8761a41, 0x801a, 0x11d3, 0x9b, 0xd1, 0xda, 0xf7, 0xe1, 0xc3, 0xd8, 0x34); - -/* Use to get (GetParam) or add (SetParam) bands in the Band track */ -DEFINE_GUID(GUID_BandParam,0x2bb1938, 0xcb8b, 0x11d2, 0x8b, 0xb9, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xb6); -typedef struct _DMUS_BAND_PARAM -{ - MUSIC_TIME mtTimePhysical; /* Note: If this is a clock-time track, then this field is interpreted in the track's internal time format, which is the number of milliseconds after the beginning of playback. */ - IDirectMusicBand *pBand; -} DMUS_BAND_PARAM; - -/* Obsolete -- doesn't distinguish physical and logical time. Use GUID_BandParam instead. */ -DEFINE_GUID(GUID_IDirectMusicBand,0xd2ac28ac, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); - -/* Use to get/set an IDirectMusicChordMap param in the ChordMap track */ -DEFINE_GUID(GUID_IDirectMusicChordMap,0xd2ac28ad, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); - -/* Use to get/set a DMUS_MUTE_PARAM param in the Mute track */ -DEFINE_GUID(GUID_MuteParam,0xd2ac28af, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); - -/* These guids are used in IDirectMusicSegment::SetParam to tell the band track to perform various actions. - Some of these guids (where noted) also apply to wave tracks. - */ -/* Download bands/waves for the IDirectMusicSegment */ -DEFINE_GUID(GUID_Download,0xd2ac28a7, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); - -/* Unload bands/waves for the IDirectMusicSegment */ -DEFINE_GUID(GUID_Unload,0xd2ac28a8, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); - -/* Connect segment's bands to an IDirectMusicCollection */ -DEFINE_GUID(GUID_ConnectToDLSCollection, 0x1db1ae6b, 0xe92e, 0x11d1, 0xa8, 0xc5, 0x0, 0xc0, 0x4f, 0xa3, 0x72, 0x6e); - -/* Enable/disable autodownloading of bands/waves */ -DEFINE_GUID(GUID_Enable_Auto_Download,0xd2ac28a9, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); -DEFINE_GUID(GUID_Disable_Auto_Download,0xd2ac28aa, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); - -/* Clear all bands */ -DEFINE_GUID(GUID_Clear_All_Bands,0xd2ac28ab, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); - -/* Set segment to manage all program changes, bank selects, etc. for simple playback of a standard MIDI file */ -DEFINE_GUID(GUID_StandardMIDIFile, 0x6621075, 0xe92e, 0x11d1, 0xa8, 0xc5, 0x0, 0xc0, 0x4f, 0xa3, 0x72, 0x6e); -/* For compatibility with beta releases... */ -#define GUID_IgnoreBankSelectForGM GUID_StandardMIDIFile - -/* Disable/enable param guids. Use these in SetParam calls to disable or enable sending - * specific PMsg types. - */ -DEFINE_GUID(GUID_DisableTimeSig, 0x45fc707b, 0x1db4, 0x11d2, 0xbc, 0xac, 0x0, 0xa0, 0xc9, 0x22, 0xe6, 0xeb); -DEFINE_GUID(GUID_EnableTimeSig, 0x45fc707c, 0x1db4, 0x11d2, 0xbc, 0xac, 0x0, 0xa0, 0xc9, 0x22, 0xe6, 0xeb); -DEFINE_GUID(GUID_DisableTempo, 0x45fc707d, 0x1db4, 0x11d2, 0xbc, 0xac, 0x0, 0xa0, 0xc9, 0x22, 0xe6, 0xeb); -DEFINE_GUID(GUID_EnableTempo, 0x45fc707e, 0x1db4, 0x11d2, 0xbc, 0xac, 0x0, 0xa0, 0xc9, 0x22, 0xe6, 0xeb); - -/* Used in SetParam calls for pattern-based tracks. A nonzero value seeds the random number -generator for variation selection; a value of zero reverts to the default behavior of -getting the seed from the system clock. -*/ -DEFINE_GUID(GUID_SeedVariations, 0x65b76fa5, 0xff37, 0x11d2, 0x81, 0x4e, 0x0, 0xc0, 0x4f, 0xa3, 0x6e, 0x58); - -/* Used to get the variations currently in effect across PChannels */ -DEFINE_GUID(GUID_Variations, 0x11f72cce, 0x26e6, 0x4ecd, 0xaf, 0x2e, 0xd6, 0x68, 0xe6, 0x67, 0x7, 0xd8); -typedef struct _DMUS_VARIATIONS_PARAM -{ - DWORD dwPChannelsUsed; /* number of PChannels in use */ - DWORD* padwPChannels; /* array of PChannels in use */ - DWORD* padwVariations; /* array of variations in effect for each PChannel */ -} DMUS_VARIATIONS_PARAM; - -/* Download bands/waves for the IDirectMusicSegment, passed an IDirectMusicAudioPath instead of an IDirectMusicPerformance */ -DEFINE_GUID(GUID_DownloadToAudioPath,0x9f2c0341, 0xc5c4, 0x11d3, 0x9b, 0xd1, 0x44, 0x45, 0x53, 0x54, 0x0, 0x0); - -/* Unload bands/waves for the IDirectMusicSegment, passed an IDirectMusicAudioPath instead of an IDirectMusicPerformance */ -DEFINE_GUID(GUID_UnloadFromAudioPath,0x9f2c0342, 0xc5c4, 0x11d3, 0x9b, 0xd1, 0x44, 0x45, 0x53, 0x54, 0x0, 0x0); - - -/* Global data guids */ -DEFINE_GUID(GUID_PerfMasterTempo,0xd2ac28b0, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); -DEFINE_GUID(GUID_PerfMasterVolume,0xd2ac28b1, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); -DEFINE_GUID(GUID_PerfMasterGrooveLevel,0xd2ac28b2, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); -DEFINE_GUID(GUID_PerfAutoDownload, 0xfb09565b, 0x3631, 0x11d2, 0xbc, 0xb8, 0x0, 0xa0, 0xc9, 0x22, 0xe6, 0xeb); - -/* GUID for default GM/GS dls collection. */ -DEFINE_GUID(GUID_DefaultGMCollection, 0xf17e8673, 0xc3b4, 0x11d1, 0x87, 0xb, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); - -/* GUID to define default synth, placed in AudioPath configuration file. */ -DEFINE_GUID(GUID_Synth_Default,0x26bb9432, 0x45fe, 0x48d3, 0xa3, 0x75, 0x24, 0x72, 0xc5, 0xe3, 0xe7, 0x86); - -/* GUIDs to define default buffer configurations to place in AudioPath configuration file. */ -DEFINE_GUID(GUID_Buffer_Reverb,0x186cc541, 0xdb29, 0x11d3, 0x9b, 0xd1, 0x0, 0x80, 0xc7, 0x15, 0xa, 0x74); -DEFINE_GUID(GUID_Buffer_EnvReverb,0x186cc542, 0xdb29, 0x11d3, 0x9b, 0xd1, 0x0, 0x80, 0xc7, 0x15, 0xa, 0x74); -DEFINE_GUID(GUID_Buffer_Stereo,0x186cc545, 0xdb29, 0x11d3, 0x9b, 0xd1, 0x0, 0x80, 0xc7, 0x15, 0xa, 0x74); -DEFINE_GUID(GUID_Buffer_3D_Dry,0x186cc546, 0xdb29, 0x11d3, 0x9b, 0xd1, 0x0, 0x80, 0xc7, 0x15, 0xa, 0x74); -DEFINE_GUID(GUID_Buffer_Mono,0x186cc547, 0xdb29, 0x11d3, 0x9b, 0xd1, 0x0, 0x80, 0xc7, 0x15, 0xa, 0x74); - -/* IID's */ -DEFINE_GUID(IID_IDirectMusicLoader, 0x2ffaaca2, 0x5dca, 0x11d2, 0xaf, 0xa6, 0x0, 0xaa, 0x0, 0x24, 0xd8, 0xb6); -DEFINE_GUID(IID_IDirectMusicGetLoader,0x68a04844, 0xd13d, 0x11d1, 0xaf, 0xa6, 0x0, 0xaa, 0x0, 0x24, 0xd8, 0xb6); -DEFINE_GUID(IID_IDirectMusicObject,0xd2ac28b5, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); -DEFINE_GUID(IID_IDirectMusicSegment, 0xf96029a2, 0x4282, 0x11d2, 0x87, 0x17, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); -DEFINE_GUID(IID_IDirectMusicSegmentState, 0xa3afdcc7, 0xd3ee, 0x11d1, 0xbc, 0x8d, 0x0, 0xa0, 0xc9, 0x22, 0xe6, 0xeb); -DEFINE_GUID(IID_IDirectMusicPerformance,0x7d43d03, 0x6523, 0x11d2, 0x87, 0x1d, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); -DEFINE_GUID(IID_IDirectMusicGraph,0x2befc277, 0x5497, 0x11d2, 0xbc, 0xcb, 0x0, 0xa0, 0xc9, 0x22, 0xe6, 0xeb); -DEFINE_GUID(IID_IDirectMusicStyle,0xd2ac28bd, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); -DEFINE_GUID(IID_IDirectMusicChordMap,0xd2ac28be, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); -DEFINE_GUID(IID_IDirectMusicComposer,0xd2ac28bf, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); -DEFINE_GUID(IID_IDirectMusicBand,0xd2ac28c0, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); - -/* Alternate interface IDs, available in DX7 release and after. */ -DEFINE_GUID(IID_IDirectMusicPerformance2,0x6fc2cae0, 0xbc78, 0x11d2, 0xaf, 0xa6, 0x0, 0xaa, 0x0, 0x24, 0xd8, 0xb6); -DEFINE_GUID(IID_IDirectMusicSegment2, 0xd38894d1, 0xc052, 0x11d2, 0x87, 0x2f, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); - -/* Interface IDs for DX8 */ -/* changed interfaces (GUID only) */ -DEFINE_GUID(IID_IDirectMusicLoader8, 0x19e7c08c, 0xa44, 0x4e6a, 0xa1, 0x16, 0x59, 0x5a, 0x7c, 0xd5, 0xde, 0x8c); -DEFINE_GUID(IID_IDirectMusicPerformance8, 0x679c4137, 0xc62e, 0x4147, 0xb2, 0xb4, 0x9d, 0x56, 0x9a, 0xcb, 0x25, 0x4c); -DEFINE_GUID(IID_IDirectMusicSegment8,0xc6784488, 0x41a3, 0x418f, 0xaa, 0x15, 0xb3, 0x50, 0x93, 0xba, 0x42, 0xd4); -DEFINE_GUID(IID_IDirectMusicSegmentState8, 0xa50e4730, 0xae4, 0x48a7, 0x98, 0x39, 0xbc, 0x4, 0xbf, 0xe0, 0x77, 0x72); -DEFINE_GUID(IID_IDirectMusicStyle8, 0xfd24ad8a, 0xa260, 0x453d, 0xbf, 0x50, 0x6f, 0x93, 0x84, 0xf7, 0x9, 0x85); -/* new interfaces (GUID + alias) */ -DEFINE_GUID(IID_IDirectMusicPatternTrack, 0x51c22e10, 0xb49f, 0x46fc, 0xbe, 0xc2, 0xe6, 0x28, 0x8f, 0xb9, 0xed, 0xe6); -#define IID_IDirectMusicPatternTrack8 IID_IDirectMusicPatternTrack -DEFINE_GUID(IID_IDirectMusicScript, 0x2252373a, 0x5814, 0x489b, 0x82, 0x9, 0x31, 0xfe, 0xde, 0xba, 0xf1, 0x37); /* {2252373A-5814-489b-8209-31FEDEBAF137} */ -#define IID_IDirectMusicScript8 IID_IDirectMusicScript -DEFINE_GUID(IID_IDirectMusicContainer, 0x9301e386, 0x1f22, 0x11d3, 0x82, 0x26, 0xd2, 0xfa, 0x76, 0x25, 0x5d, 0x47); -#define IID_IDirectMusicContainer8 IID_IDirectMusicContainer -DEFINE_GUID(IID_IDirectMusicAudioPath,0xc87631f5, 0x23be, 0x4986, 0x88, 0x36, 0x5, 0x83, 0x2f, 0xcc, 0x48, 0xf9); -#define IID_IDirectMusicAudioPath8 IID_IDirectMusicAudioPath -/* unchanged interfaces (alias only) */ -#define IID_IDirectMusicGetLoader8 IID_IDirectMusicGetLoader -#define IID_IDirectMusicChordMap8 IID_IDirectMusicChordMap -#define IID_IDirectMusicGraph8 IID_IDirectMusicGraph -#define IID_IDirectMusicBand8 IID_IDirectMusicBand -#define IID_IDirectMusicObject8 IID_IDirectMusicObject -#define IID_IDirectMusicComposer8 IID_IDirectMusicComposer - - -#ifdef __cplusplus -}; /* extern "C" */ -#endif - -#include - -#endif /* #ifndef _DMUSICI_ */ +/************************************************************************ +* * +* dmusici.h -- This module contains the API for the * +* DirectMusic performance layer * +* * +* Copyright (c) Microsoft Corporation. All rights reserved. * +* * +************************************************************************/ + +#ifndef _DMUSICI_ +#define _DMUSICI_ + +#include + +#define COM_NO_WINDOWS_H +#include + +#include +#include +/* plugin (track and tool) interfaces. This #include will eventually go away. */ +#include + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef WORD TRANSITION_TYPE; +typedef __int64 REFERENCE_TIME; +typedef long MUSIC_TIME; + +#define MT_MIN 0x80000000 /* Minimum music time value. */ +#define MT_MAX 0x7FFFFFFF /* Maximum music time value. */ + +#define DMUS_PPQ 768 /* parts per quarter note */ + +interface IDirectMusicTrack; +interface IDirectMusicPerformance; +interface IDirectMusicPerformance8; +interface IDirectMusicTool; +interface IDirectMusicSegment; +interface IDirectMusicSegment8; +interface IDirectMusicSegmentState; +interface IDirectMusicSegmentState8; +interface IDirectMusicGraph; +interface IDirectMusicBuffer; +interface IDirectMusicInstrument; +interface IDirectMusicDownloadedInstrument; +interface IDirectMusicBand; +interface IDirectMusicChordMap; +interface IDirectMusicLoader; +interface IDirectMusicLoader8; +interface IDirectMusicScript; +interface IDirectMusicObject; +interface IDirectMusicStyle8; +interface IDirectMusicPatternTrack; +interface IDirectMusicContainer; +interface IDirectMusicTool8; +interface IDirectMusicTrack8; +interface IDirectMusicAudioPath; +#ifndef __cplusplus +typedef interface IDirectMusicTrack IDirectMusicTrack; +typedef interface IDirectMusicPerformance IDirectMusicPerformance; +typedef interface IDirectMusicPerformance8 IDirectMusicPerformance8; +typedef interface IDirectMusicTool IDirectMusicTool; +typedef interface IDirectMusicSegment IDirectMusicSegment; +typedef interface IDirectMusicSegment8 IDirectMusicSegment8; +typedef interface IDirectMusicSegmentState IDirectMusicSegmentState; +typedef interface IDirectMusicSegmentState8 IDirectMusicSegmentState8; +typedef interface IDirectMusicGraph IDirectMusicGraph; +typedef interface IDirectMusicBuffer IDirectMusicBuffer; +typedef interface IDirectMusicInstrument IDirectMusicInstrument; +typedef interface IDirectMusicDownloadedInstrument IDirectMusicDownloadedInstrument; +typedef interface IDirectMusicBand IDirectMusicBand; +typedef interface IDirectMusicChordMap IDirectMusicChordMap; +typedef interface IDirectMusicObject IDirectMusicObject; +typedef interface IDirectMusicLoader IDirectMusicLoader; +typedef interface IDirectMusicLoader8 IDirectMusicLoader8; +typedef interface IDirectMusicScript IDirectMusicScript; +typedef interface IDirectMusicStyle8 IDirectMusicStyle8; +typedef interface IDirectMusicPatternTrack IDirectMusicPatternTrack; +typedef interface IDirectMusicContainer IDirectMusicContainer; +typedef interface IDirectMusicTool8 IDirectMusicTool8; +typedef interface IDirectMusicTrack8 IDirectMusicTrack8; +typedef interface IDirectMusicAudioPath IDirectMusicAudioPath; +#endif + +typedef enum enumDMUS_STYLET_TYPES +{ + DMUS_STYLET_PATTERN = 0, + DMUS_STYLET_MOTIF = 1, +} DMUS_STYLET_TYPES; + + +typedef enum enumDMUS_COMMANDT_TYPES +{ + DMUS_COMMANDT_GROOVE = 0, + DMUS_COMMANDT_FILL = 1, + DMUS_COMMANDT_INTRO = 2, + DMUS_COMMANDT_BREAK = 3, + DMUS_COMMANDT_END = 4, + DMUS_COMMANDT_ENDANDINTRO = 5 +} DMUS_COMMANDT_TYPES; + +typedef enum enumDMUS_SHAPET_TYPES +{ + DMUS_SHAPET_FALLING = 0, + DMUS_SHAPET_LEVEL = 1, + DMUS_SHAPET_LOOPABLE = 2, + DMUS_SHAPET_LOUD = 3, + DMUS_SHAPET_QUIET = 4, + DMUS_SHAPET_PEAKING = 5, + DMUS_SHAPET_RANDOM = 6, + DMUS_SHAPET_RISING = 7, + DMUS_SHAPET_SONG = 8 +} DMUS_SHAPET_TYPES; + +typedef enum enumDMUS_COMPOSEF_FLAGS +{ + DMUS_COMPOSEF_NONE = 0, + DMUS_COMPOSEF_ALIGN = 0x1, + DMUS_COMPOSEF_OVERLAP = 0x2, + DMUS_COMPOSEF_IMMEDIATE = 0x4, + DMUS_COMPOSEF_GRID = 0x8, + DMUS_COMPOSEF_BEAT = 0x10, + DMUS_COMPOSEF_MEASURE = 0x20, + DMUS_COMPOSEF_AFTERPREPARETIME = 0x40, + DMUS_COMPOSEF_VALID_START_BEAT = 0x80, /* In conjunction with DMUS_COMPOSEF_ALIGN, allows the switch to occur on any beat. */ + DMUS_COMPOSEF_VALID_START_GRID = 0x100, /* In conjunction with DMUS_COMPOSEF_ALIGN, allows the switch to occur on any grid. */ + DMUS_COMPOSEF_VALID_START_TICK = 0x200, /* In conjunction with DMUS_COMPOSEF_ALIGN, allows the switch to occur any time. */ + DMUS_COMPOSEF_SEGMENTEND = 0x400, /* Play the transition at the end of the current segment. */ + DMUS_COMPOSEF_MARKER = 0x800, /* Play the transition at the next marker in the current segment. */ + DMUS_COMPOSEF_MODULATE = 0x1000, + DMUS_COMPOSEF_LONG = 0x2000, + DMUS_COMPOSEF_ENTIRE_TRANSITION = 0x4000, /* play the entire transition pattern */ + DMUS_COMPOSEF_1BAR_TRANSITION = 0x8000, /* play one bar of the transition pattern */ + DMUS_COMPOSEF_ENTIRE_ADDITION = 0x10000, /* play the additional pattern in its entirety */ + DMUS_COMPOSEF_1BAR_ADDITION = 0x20000, /* play one bar of the additional pattern */ + DMUS_COMPOSEF_VALID_START_MEASURE = 0x40000, /* In conjunction with DMUS_COMPOSEF_ALIGN, allows the switch to occur on any bar. */ + DMUS_COMPOSEF_DEFAULT = 0x80000, /* Use segment's default boundary */ + DMUS_COMPOSEF_NOINVALIDATE = 0x100000, /* Play without invalidating the currently playing segment(s) */ + DMUS_COMPOSEF_USE_AUDIOPATH = 0x200000, /* Uses the audio paths that are embedded in the segments */ + DMUS_COMPOSEF_INVALIDATE_PRI = 0x400000 /* Invalidate only the current primary seg state */ +} DMUS_COMPOSEF_FLAGS; + +#define DMUS_PMSG_PART \ + DWORD dwSize; \ + REFERENCE_TIME rtTime; /* real time (in 100 nanosecond increments) */ \ + MUSIC_TIME mtTime; /* music time */ \ + DWORD dwFlags; /* various bits (see DMUS_PMSGF_FLAGS enumeration) */ \ + DWORD dwPChannel; /* Performance Channel. The Performance can */ \ + /* use this to determine the port/channel. */ \ + DWORD dwVirtualTrackID; /* virtual track ID */ \ + IDirectMusicTool* pTool; /* tool interface pointer */ \ + IDirectMusicGraph* pGraph; /* tool graph interface pointer */ \ + DWORD dwType; /* PMSG type (see DMUS_PMSGT_TYPES defines) */ \ + DWORD dwVoiceID; /* unique voice id which allows synthesizers to */ \ + /* identify a specific event. For DirectX 6.0, */ \ + /* this field should always be 0. */ \ + DWORD dwGroupID; /* Track group id */ \ + IUnknown* punkUser; /* user com pointer, auto released upon PMSG free */ + +/* every DMUS_PMSG is based off of this structure. The Performance needs + to access these members consistently in every PMSG that goes through it. */ +typedef struct _DMUS_PMSG +{ + /* begin DMUS_PMSG_PART */ + DMUS_PMSG_PART + /* end DMUS_PMSG_PART */ + +} DMUS_PMSG; + +#define DMUS_PCHANNEL_BROADCAST_PERFORMANCE 0xFFFFFFFF /* PMsg is sent on all PChannels of the performance. */ +#define DMUS_PCHANNEL_BROADCAST_AUDIOPATH 0xFFFFFFFE /* PMsg is sent on all PChannels of the audio path. */ +#define DMUS_PCHANNEL_BROADCAST_SEGMENT 0xFFFFFFFD /* PMsg is sent on all PChannels of the segment. */ +#define DMUS_PCHANNEL_BROADCAST_GROUPS 0xFFFFFFFC /* A duplicate PMsg is for each Channels Groups in the performance. */ + +/* The DMUS_PATH constants are used in conjunction with GetObjectInPath to find a requested + interface at a particular stage in the audio path. +*/ +#define DMUS_PATH_SEGMENT 0x1000 /* Get the segment itself (from a segment state.) */ +#define DMUS_PATH_SEGMENT_TRACK 0x1100 /* Look in Track List of Segment. */ +#define DMUS_PATH_SEGMENT_GRAPH 0x1200 /* Get the segment's tool graph. */ +#define DMUS_PATH_SEGMENT_TOOL 0x1300 /* Look in Tool Graph of Segment. */ +#define DMUS_PATH_AUDIOPATH 0x2000 /* Get the audiopath itself (from a segment state.) */ +#define DMUS_PATH_AUDIOPATH_GRAPH 0x2200 /* Get the audiopath's tool graph. */ +#define DMUS_PATH_AUDIOPATH_TOOL 0x2300 /* Look in Tool Graph of Audio Path. */ +#define DMUS_PATH_PERFORMANCE 0x3000 /* Access the performance. */ +#define DMUS_PATH_PERFORMANCE_GRAPH 0x3200 /* Get the performance's tool graph. */ +#define DMUS_PATH_PERFORMANCE_TOOL 0x3300 /* Look in Tool Graph of Performance. */ +#define DMUS_PATH_PORT 0x4000 /* Access the synth. */ +#define DMUS_PATH_BUFFER 0x6000 /* Look in DirectSoundBuffer. */ +#define DMUS_PATH_BUFFER_DMO 0x6100 /* Access a DMO in the buffer. */ +#define DMUS_PATH_MIXIN_BUFFER 0x7000 /* Look in a global mixin buffer. */ +#define DMUS_PATH_MIXIN_BUFFER_DMO 0x7100 /* Access a DMO in a global mixin buffer. */ +#define DMUS_PATH_PRIMARY_BUFFER 0x8000 /* Access the primary buffer. */ + +/* To ignore PChannels when calling GetObjectInPath(), use the DMUS_PCHANNEL_ALL constant. */ +#define DMUS_PCHANNEL_ALL 0xFFFFFFFB + +/* The DMUS_APATH types are used in conjunction with CreateStandardAudioPath to + build default path types. _SHARED_ means the same buffer is shared across multiple + instantiations of the audiopath type. _DYNAMIC_ means a unique buffer is created + every time. +*/ + +#define DMUS_APATH_SHARED_STEREOPLUSREVERB 1 /* A standard music set up with stereo outs and reverb. */ +#define DMUS_APATH_DYNAMIC_3D 6 /* An audio path with one dynamic bus from the synth feeding to a dynamic 3d buffer. Does not send to env reverb. */ +#define DMUS_APATH_DYNAMIC_MONO 7 /* An audio path with one dynamic bus from the synth feeding to a dynamic mono buffer. */ +#define DMUS_APATH_DYNAMIC_STEREO 8 /* An audio path with two dynamic buses from the synth feeding to a dynamic stereo buffer. */ + +typedef struct _DMUS_AUDIOPARAMS +{ + DWORD dwSize; /* Size of this structure. */ + BOOL fInitNow; /* If true, the sink and synth are created immediately and results returned in this structure. */ + DWORD dwValidData; /* Flags indicating which fields below are valid. */ + DWORD dwFeatures; /* Required DMUS_AUDIOF features. */ + DWORD dwVoices; /* Required number of voices. */ + DWORD dwSampleRate; /* Sample rate of synths and sink. */ + CLSID clsidDefaultSynth; /* Class ID of default synthesizer. */ +} DMUS_AUDIOPARAMS; + +/* dwFeatures flags. These indicate which features are required for the audio environment. */ +#define DMUS_AUDIOF_3D 0x1 /* Require 3D buffers. */ +#define DMUS_AUDIOF_ENVIRON 0x2 /* Require environmental modeling. */ +#define DMUS_AUDIOF_EAX 0x4 /* Require use of EAX effects. */ +#define DMUS_AUDIOF_DMOS 0x8 /* Require use of additional DMOs. */ +#define DMUS_AUDIOF_STREAMING 0x10 /* Require support for streaming waves. */ +#define DMUS_AUDIOF_BUFFERS 0x20 /* Require support for multiple buffers (all above cases need this.) */ +#define DMUS_AUDIOF_ALL 0x3F /* Requires everything. */ + +/* dwValidData flags. These indicate which fields in DMUS_AUDIOPARAMS have been filled in. If fInitNow is set, these also return what was allocated. */ +#define DMUS_AUDIOPARAMS_FEATURES 0x00000001 +#define DMUS_AUDIOPARAMS_VOICES 0x00000002 +#define DMUS_AUDIOPARAMS_SAMPLERATE 0x00000004 +#define DMUS_AUDIOPARAMS_DEFAULTSYNTH 0x00000008 + +/* DMUS_PMSGF_FLAGS fill the DMUS_PMSG's dwFlags member */ +typedef enum enumDMUS_PMSGF_FLAGS +{ + DMUS_PMSGF_REFTIME = 1, /* if rtTime is valid */ + DMUS_PMSGF_MUSICTIME = 2, /* if mtTime is valid */ + DMUS_PMSGF_TOOL_IMMEDIATE = 4, /* if PMSG should be processed immediately */ + DMUS_PMSGF_TOOL_QUEUE = 8, /* if PMSG should be processed a little early, at Queue time */ + DMUS_PMSGF_TOOL_ATTIME = 0x10, /* if PMSG should be processed at the time stamp */ + DMUS_PMSGF_TOOL_FLUSH = 0x20, /* if PMSG is being flushed */ + DMUS_PMSGF_LOCKTOREFTIME = 0x40, /* if rtTime can not be overriden by a tempo change. */ + DMUS_PMSGF_DX8 = 0x80 /* if the message has DX8 or later extensions. */ + /* The values of DMUS_TIME_RESOLVE_FLAGS may also be used inside the */ + /* DMUS_PMSG's dwFlags member. */ +} DMUS_PMSGF_FLAGS; + +/* DMUS_PMSGT_TYPES fill the DMUS_PMSG's dwType member */ +typedef enum enumDMUS_PMSGT_TYPES +{ + DMUS_PMSGT_MIDI = 0, /* MIDI short message */ + DMUS_PMSGT_NOTE = 1, /* Interactive Music Note */ + DMUS_PMSGT_SYSEX = 2, /* MIDI long message (system exclusive message) */ + DMUS_PMSGT_NOTIFICATION = 3, /* Notification message */ + DMUS_PMSGT_TEMPO = 4, /* Tempo message */ + DMUS_PMSGT_CURVE = 5, /* Control change / pitch bend, etc. curve */ + DMUS_PMSGT_TIMESIG = 6, /* Time signature */ + DMUS_PMSGT_PATCH = 7, /* Patch changes */ + DMUS_PMSGT_TRANSPOSE = 8, /* Transposition messages */ + DMUS_PMSGT_CHANNEL_PRIORITY = 9, /* Channel priority */ + DMUS_PMSGT_STOP = 10, /* Stop message */ + DMUS_PMSGT_DIRTY = 11, /* Tells Tools that cache GetParam() info to refresh */ + DMUS_PMSGT_WAVE = 12, /* Carries control information for playing a wave. */ + DMUS_PMSGT_LYRIC = 13, /* Lyric message from lyric track. */ + DMUS_PMSGT_SCRIPTLYRIC = 14, /* Lyric message sent by a script with the Trace function. */ + DMUS_PMSGT_USER = 255 /* User message */ +} DMUS_PMSGT_TYPES; + +/* DMUS_SEGF_FLAGS correspond to IDirectMusicPerformance::PlaySegment, and other API */ +typedef enum enumDMUS_SEGF_FLAGS +{ + DMUS_SEGF_REFTIME = 1<<6, /* 0x40 Time parameter is in reference time */ + DMUS_SEGF_SECONDARY = 1<<7, /* 0x80 Secondary segment */ + DMUS_SEGF_QUEUE = 1<<8, /* 0x100 Queue at the end of the primary segment queue (primary only) */ + DMUS_SEGF_CONTROL = 1<<9, /* 0x200 Play as a control track (secondary segments only) */ + DMUS_SEGF_AFTERPREPARETIME = 1<<10, /* 0x400 Play after the prepare time (See IDirectMusicPerformance::GetPrepareTime) */ + DMUS_SEGF_GRID = 1<<11, /* 0x800 Play on grid boundary */ + DMUS_SEGF_BEAT = 1<<12, /* 0x1000 Play on beat boundary */ + DMUS_SEGF_MEASURE = 1<<13, /* 0x2000 Play on measure boundary */ + DMUS_SEGF_DEFAULT = 1<<14, /* 0x4000 Use segment's default boundary */ + DMUS_SEGF_NOINVALIDATE = 1<<15, /* 0x8000 Play without invalidating the currently playing segment(s) */ + DMUS_SEGF_ALIGN = 1<<16, /* 0x10000 Align segment with requested boundary, but switch at first valid point */ + DMUS_SEGF_VALID_START_BEAT = 1<<17, /* 0x20000 In conjunction with DMUS_SEGF_ALIGN, allows the switch to occur on any beat. */ + DMUS_SEGF_VALID_START_GRID = 1<<18, /* 0x40000 In conjunction with DMUS_SEGF_ALIGN, allows the switch to occur on any grid. */ + DMUS_SEGF_VALID_START_TICK = 1<<19, /* 0x80000 In conjunction with DMUS_SEGF_ALIGN, allows the switch to occur any time. */ + DMUS_SEGF_AUTOTRANSITION = 1<<20, /* 0x100000 Compose and play a transition segment, using the transition template. */ + DMUS_SEGF_AFTERQUEUETIME = 1<<21, /* 0x200000 Make sure to play after the queue time. This is default for primary segments */ + DMUS_SEGF_AFTERLATENCYTIME = 1<<22, /* 0x400000 Make sure to play after the latency time. This is true for all segments, so this is a nop */ + DMUS_SEGF_SEGMENTEND = 1<<23, /* 0x800000 Play at the next end of segment. */ + DMUS_SEGF_MARKER = 1<<24, /* 0x1000000 Play at next marker in the primary segment. If there are no markers, default to any other resolution requests. */ + DMUS_SEGF_TIMESIG_ALWAYS = 1<<25, /* 0x2000000 Even if there is no primary segment, align start time with current time signature. */ + DMUS_SEGF_USE_AUDIOPATH = 1<<26, /* 0x4000000 Uses the audio path that is embedded in the segment. */ + DMUS_SEGF_VALID_START_MEASURE = 1<<27, /* 0x8000000 In conjunction with DMUS_SEGF_ALIGN, allows the switch to occur on any bar. */ + DMUS_SEGF_INVALIDATE_PRI = 1<<28 /* 0x10000000 invalidate only the current primary seg state */ +} DMUS_SEGF_FLAGS; + +#define DMUS_SEG_REPEAT_INFINITE 0xFFFFFFFF /* For IDirectMusicSegment::SetRepeat*/ +#define DMUS_SEG_ALLTRACKS 0x80000000 /* For IDirectMusicSegment::SetParam() and SetTrackConfig() - selects all tracks instead on nth index. */ +#define DMUS_SEG_ANYTRACK 0x80000000 /* For IDirectMusicSegment::GetParam() - checks each track until it finds one that returns data (not DMUS_E_NOT_FOUND.) */ + + +/* DMUS_TIME_RESOLVE_FLAGS correspond to IDirectMusicPerformance::GetResolvedTime, and can */ +/* also be used interchangeably with the corresponding DMUS_SEGF_FLAGS, since their values */ +/* are intentionally the same */ +typedef enum enumDMUS_TIME_RESOLVE_FLAGS +{ + DMUS_TIME_RESOLVE_AFTERPREPARETIME = DMUS_SEGF_AFTERPREPARETIME, + DMUS_TIME_RESOLVE_AFTERQUEUETIME = DMUS_SEGF_AFTERQUEUETIME, + DMUS_TIME_RESOLVE_AFTERLATENCYTIME = DMUS_SEGF_AFTERLATENCYTIME, + DMUS_TIME_RESOLVE_GRID = DMUS_SEGF_GRID, + DMUS_TIME_RESOLVE_BEAT = DMUS_SEGF_BEAT, + DMUS_TIME_RESOLVE_MEASURE = DMUS_SEGF_MEASURE, + DMUS_TIME_RESOLVE_MARKER = DMUS_SEGF_MARKER, + DMUS_TIME_RESOLVE_SEGMENTEND = DMUS_SEGF_SEGMENTEND, +} DMUS_TIME_RESOLVE_FLAGS; + +/* The following flags are sent inside the DMUS_CHORD_KEY.dwFlags parameter */ +typedef enum enumDMUS_CHORDKEYF_FLAGS +{ + DMUS_CHORDKEYF_SILENT = 1, /* is the chord silent? */ +} DMUS_CHORDKEYF_FLAGS; + +#define DMUS_MAXSUBCHORD 8 + +typedef struct _DMUS_SUBCHORD +{ + DWORD dwChordPattern; /* Notes in the subchord */ + DWORD dwScalePattern; /* Notes in the scale */ + DWORD dwInversionPoints; /* Where inversions can occur */ + DWORD dwLevels; /* Which levels are supported by this subchord */ + BYTE bChordRoot; /* Root of the subchord */ + BYTE bScaleRoot; /* Root of the scale */ +} DMUS_SUBCHORD; + +typedef struct _DMUS_CHORD_KEY +{ + WCHAR wszName[16]; /* Name of the chord */ + WORD wMeasure; /* Measure this falls on */ + BYTE bBeat; /* Beat this falls on */ + BYTE bSubChordCount; /* Number of chords in the list of subchords */ + DMUS_SUBCHORD SubChordList[DMUS_MAXSUBCHORD]; /* List of sub chords */ + DWORD dwScale; /* Scale underlying the entire chord */ + BYTE bKey; /* Key underlying the entire chord */ + BYTE bFlags; /* Miscelaneous flags */ +} DMUS_CHORD_KEY; + +/* DMUS_NOTE_PMSG */ +typedef struct _DMUS_NOTE_PMSG +{ + /* begin DMUS_PMSG_PART */ + DMUS_PMSG_PART + /* end DMUS_PMSG_PART */ + + MUSIC_TIME mtDuration; /* duration */ + WORD wMusicValue; /* Description of note in chord and key. */ + WORD wMeasure; /* Measure in which this note occurs */ + short nOffset; /* Offset from grid at which this note occurs */ + BYTE bBeat; /* Beat (in measure) at which this note occurs */ + BYTE bGrid; /* Grid offset from beat at which this note occurs */ + BYTE bVelocity; /* Note velocity */ + BYTE bFlags; /* see DMUS_NOTEF_FLAGS */ + BYTE bTimeRange; /* Range to randomize time. */ + BYTE bDurRange; /* Range to randomize duration. */ + BYTE bVelRange; /* Range to randomize velocity. */ + BYTE bPlayModeFlags; /* Play mode */ + BYTE bSubChordLevel; /* Which subchord level this note uses. */ + BYTE bMidiValue; /* The MIDI note value, converted from wMusicValue */ + char cTranspose; /* Transposition to add to midi note value after converted from wMusicValue. */ +} DMUS_NOTE_PMSG; + +typedef enum enumDMUS_NOTEF_FLAGS +{ + DMUS_NOTEF_NOTEON = 1, /* Set if this is a MIDI Note On. Otherwise, it is MIDI Note Off */ + /* DX8 flags: */ + DMUS_NOTEF_NOINVALIDATE = 2, /* Don't invalidate this note off. */ + DMUS_NOTEF_NOINVALIDATE_INSCALE = 4,/* Don't invalidate if still within the scale. */ + DMUS_NOTEF_NOINVALIDATE_INCHORD = 8,/* Don't invalidate if still within the chord. */ + DMUS_NOTEF_REGENERATE = 0x10, /* Regenerate the note on an invalidate. */ +} DMUS_NOTEF_FLAGS; + +/* The DMUS_PLAYMODE_FLAGS are used to determine how to convert wMusicValue + into the appropriate bMidiValue. +*/ + +typedef enum enumDMUS_PLAYMODE_FLAGS +{ + DMUS_PLAYMODE_KEY_ROOT = 1, /* Transpose on top of the key root. */ + DMUS_PLAYMODE_CHORD_ROOT = 2, /* Transpose on top of the chord root. */ + DMUS_PLAYMODE_SCALE_INTERVALS = 4, /* Use scale intervals from scale pattern. */ + DMUS_PLAYMODE_CHORD_INTERVALS = 8, /* Use chord intervals from chord pattern. */ + DMUS_PLAYMODE_NONE = 16, /* No mode. Indicates the parent part's mode should be used. */ +} DMUS_PLAYMODE_FLAGS; + +/* The following are playback modes that can be created by combining the DMUS_PLAYMODE_FLAGS + in various ways: +*/ + +/* Fixed. wMusicValue holds final MIDI note value. This is used for drums, sound effects, and sequenced + notes that should not be transposed by the chord or scale. +*/ +#define DMUS_PLAYMODE_FIXED 0 +/* In fixed to key, the musicvalue is again a fixed MIDI value, but it + is transposed on top of the key root. +*/ +#define DMUS_PLAYMODE_FIXEDTOKEY DMUS_PLAYMODE_KEY_ROOT +/* In fixed to chord, the musicvalue is also a fixed MIDI value, but it + is transposed on top of the chord root. +*/ +#define DMUS_PLAYMODE_FIXEDTOCHORD DMUS_PLAYMODE_CHORD_ROOT +/* In Pedalpoint, the key root is used and the notes only track the intervals in + the scale. The chord root and intervals are completely ignored. This is useful + for melodic lines that play relative to the key root. +*/ +#define DMUS_PLAYMODE_PEDALPOINT (DMUS_PLAYMODE_KEY_ROOT | DMUS_PLAYMODE_SCALE_INTERVALS) +/* In the Melodic mode, the chord root is used but the notes only track the intervals in + the scale. The key root and chord intervals are completely ignored. This is useful + for melodic lines that play relative to the chord root. +*/ +#define DMUS_PLAYMODE_MELODIC (DMUS_PLAYMODE_CHORD_ROOT | DMUS_PLAYMODE_SCALE_INTERVALS) +/* Normal chord mode is the prevalent playback mode. + The notes track the intervals in the chord, which is based on the chord root. + If there is a scale component to the MusicValue, the additional intervals + are pulled from the scale and added. + If the chord does not have an interval to match the chord component of + the MusicValue, the note is silent. +*/ +#define DMUS_PLAYMODE_NORMALCHORD (DMUS_PLAYMODE_CHORD_ROOT | DMUS_PLAYMODE_CHORD_INTERVALS) +/* If it is desirable to play a note that is above the top of the chord, the + always play mode (known as "purpleized" in a former life) finds a position + for the note by using intervals from the scale. Essentially, this mode is + a combination of the Normal and Melodic playback modes, where a failure + in Normal causes a second try in Melodic mode. +*/ +#define DMUS_PLAYMODE_ALWAYSPLAY (DMUS_PLAYMODE_MELODIC | DMUS_PLAYMODE_NORMALCHORD) + +/* These playmodes are new for dx8. */ +/* In PedalpointChord, the key root is used and the notes only track the intervals in + the chord. The chord root and scale intervals are completely ignored. This is useful + for chordal lines that play relative to the key root. +*/ +#define DMUS_PLAYMODE_PEDALPOINTCHORD (DMUS_PLAYMODE_KEY_ROOT | DMUS_PLAYMODE_CHORD_INTERVALS) + +/* For completeness, here's a mode that tries for pedalpointchord, but if it fails + uses scale intervals +*/ +#define DMUS_PLAYMODE_PEDALPOINTALWAYS (DMUS_PLAYMODE_PEDALPOINT | DMUS_PLAYMODE_PEDALPOINTCHORD) + + +/* Legacy names for modes... */ +#define DMUS_PLAYMODE_PURPLEIZED DMUS_PLAYMODE_ALWAYSPLAY +#define DMUS_PLAYMODE_SCALE_ROOT DMUS_PLAYMODE_KEY_ROOT +#define DMUS_PLAYMODE_FIXEDTOSCALE DMUS_PLAYMODE_FIXEDTOKEY + + +/* DMUS_MIDI_PMSG */ +typedef struct _DMUS_MIDI_PMSG +{ + /* begin DMUS_PMSG_PART */ + DMUS_PMSG_PART + /* end DMUS_PMSG_PART */ + + BYTE bStatus; + BYTE bByte1; + BYTE bByte2; + BYTE bPad[1]; +} DMUS_MIDI_PMSG; + +/* DMUS_PATCH_PMSG */ +typedef struct _DMUS_PATCH_PMSG +{ + /* begin DMUS_PMSG_PART */ + DMUS_PMSG_PART + /* end DMUS_PMSG_PART */ + + BYTE byInstrument; + BYTE byMSB; + BYTE byLSB; + BYTE byPad[1]; +} DMUS_PATCH_PMSG; + +/* DMUS_TRANSPOSE_PMSG */ +typedef struct _DMUS_TRANSPOSE_PMSG +{ + /* begin DMUS_PMSG_PART */ + DMUS_PMSG_PART + /* end DMUS_PMSG_PART */ + + short nTranspose; + /* Following exists only under DX8 and on (check dwFlags for DMUS_PMSGF_DX8) */ + WORD wMergeIndex; /* Allows multiple parameters to be merged (pitchbend, volume, and expression.)*/ +} DMUS_TRANSPOSE_PMSG; + +/* DMUS_CHANNEL_PRIORITY_PMSG */ +typedef struct _DMUS_CHANNEL_PRIORITY_PMSG +{ + /* begin DMUS_PMSG_PART */ + DMUS_PMSG_PART + /* end DMUS_PMSG_PART */ + + DWORD dwChannelPriority; +} DMUS_CHANNEL_PRIORITY_PMSG; + +/* DMUS_TEMPO_PMSG */ +typedef struct _DMUS_TEMPO_PMSG +{ + /* begin DMUS_PMSG_PART */ + DMUS_PMSG_PART + /* end DMUS_PMSG_PART */ + + double dblTempo; /* the tempo */ +} DMUS_TEMPO_PMSG; + +#define DMUS_TEMPO_MAX 1000 +#define DMUS_TEMPO_MIN 1 + +#define DMUS_MASTERTEMPO_MAX 100.0f +#define DMUS_MASTERTEMPO_MIN 0.01f + +/* DMUS_SYSEX_PMSG */ +typedef struct _DMUS_SYSEX_PMSG +{ + /* begin DMUS_PMSG_PART */ + DMUS_PMSG_PART + /* end DMUS_PMSG_PART */ + + DWORD dwLen; /* length of the data */ + BYTE abData[1]; /* array of data, length equal to dwLen */ +} DMUS_SYSEX_PMSG; + +/* DMUS_CURVE_PMSG */ +typedef struct _DMUS_CURVE_PMSG +{ + /* begin DMUS_PMSG_PART */ + DMUS_PMSG_PART + /* end DMUS_PMSG_PART */ + + MUSIC_TIME mtDuration; /* how long this curve lasts */ + MUSIC_TIME mtOriginalStart; /* must be set to either zero when this PMSG is created or to the original mtTime of the curve */ + MUSIC_TIME mtResetDuration; /* how long after the curve is finished to allow a flush or + invalidation to reset to the reset value, nResetValue */ + short nStartValue; /* curve's start value */ + short nEndValue; /* curve's end value */ + short nResetValue; /* curve's reset value, set when a flush or invalidation + occurs within mtDuration + mtResetDuration */ + WORD wMeasure; /* Measure in which this curve occurs */ + short nOffset; /* Offset from grid at which this curve occurs */ + BYTE bBeat; /* Beat (in measure) at which this curve occurs */ + BYTE bGrid; /* Grid offset from beat at which this curve occurs */ + BYTE bType; /* type of curve */ + BYTE bCurveShape; /* shape of curve */ + BYTE bCCData; /* CC# if this is a control change type */ + BYTE bFlags; /* Curve reset and start from current value flags. */ + /* Following exists only under DX8 and on (check dwFlags for DMUS_PMSGF_DX8) */ + WORD wParamType; /* RPN or NRPN parameter number. */ + WORD wMergeIndex; /* Allows multiple parameters to be merged (pitchbend, volume, and expression.)*/ +} DMUS_CURVE_PMSG; + +typedef enum enumDMUS_CURVE_FLAGS +{ + DMUS_CURVE_RESET = 1, /* When set, the nResetValue must be sent when the + time is reached or an invalidate occurs because + of a transition. If not set, the curve stays + permanently stuck at the new value. */ + DMUS_CURVE_START_FROM_CURRENT = 2/* Ignore Start, start the curve at the current value. + This only works for volume, expression, and pitchbend. */ +} DMUS_CURVE_FLAGS; + + +#define DMUS_CURVE_RESET 1 + +/* Curve shapes */ +enum +{ + DMUS_CURVES_LINEAR = 0, + DMUS_CURVES_INSTANT = 1, + DMUS_CURVES_EXP = 2, + DMUS_CURVES_LOG = 3, + DMUS_CURVES_SINE = 4 +}; +/* curve types */ +#define DMUS_CURVET_PBCURVE 0x03 /* Pitch bend curve. */ +#define DMUS_CURVET_CCCURVE 0x04 /* Control change curve. */ +#define DMUS_CURVET_MATCURVE 0x05 /* Mono aftertouch curve. */ +#define DMUS_CURVET_PATCURVE 0x06 /* Poly aftertouch curve. */ +#define DMUS_CURVET_RPNCURVE 0x07 /* RPN curve with curve type in wParamType. */ +#define DMUS_CURVET_NRPNCURVE 0x08 /* NRPN curve with curve type in wParamType. */ + +/* DMUS_TIMESIG_PMSG */ +typedef struct _DMUS_TIMESIG_PMSG +{ + /* begin DMUS_PMSG_PART */ + DMUS_PMSG_PART + /* end DMUS_PMSG_PART */ + + /* Time signatures define how many beats per measure, which note receives */ + /* the beat, and the grid resolution. */ + BYTE bBeatsPerMeasure; /* beats per measure (top of time sig) */ + BYTE bBeat; /* what note receives the beat (bottom of time sig.) */ + /* we can assume that 0 means 256th note */ + WORD wGridsPerBeat; /* grids per beat */ +} DMUS_TIMESIG_PMSG; + + + +/* notification type values */ +/* The following correspond to GUID_NOTIFICATION_SEGMENT */ +#define DMUS_NOTIFICATION_SEGSTART 0 +#define DMUS_NOTIFICATION_SEGEND 1 +#define DMUS_NOTIFICATION_SEGALMOSTEND 2 +#define DMUS_NOTIFICATION_SEGLOOP 3 +#define DMUS_NOTIFICATION_SEGABORT 4 +/* The following correspond to GUID_NOTIFICATION_PERFORMANCE */ +#define DMUS_NOTIFICATION_MUSICSTARTED 0 +#define DMUS_NOTIFICATION_MUSICSTOPPED 1 +#define DMUS_NOTIFICATION_MUSICALMOSTEND 2 +/* The following corresponds to GUID_NOTIFICATION_MEASUREANDBEAT */ +#define DMUS_NOTIFICATION_MEASUREBEAT 0 +/* The following corresponds to GUID_NOTIFICATION_CHORD */ +#define DMUS_NOTIFICATION_CHORD 0 +/* The following correspond to GUID_NOTIFICATION_COMMAND */ +#define DMUS_NOTIFICATION_GROOVE 0 +#define DMUS_NOTIFICATION_EMBELLISHMENT 1 +/* The following corresponds to GUID_NOTIFICATION_RECOMPOSE */ +#define DMUS_NOTIFICATION_RECOMPOSE 0 + +/* DMUS_NOTIFICATION_PMSG */ +typedef struct _DMUS_NOTIFICATION_PMSG +{ + /* begin DMUS_PMSG_PART */ + DMUS_PMSG_PART + /* end DMUS_PMSG_PART */ + + GUID guidNotificationType; + DWORD dwNotificationOption; + DWORD dwField1; + DWORD dwField2; +} DMUS_NOTIFICATION_PMSG; + +/* DMUS_WAVE_PMSG */ +typedef struct _DMUS_WAVE_PMSG +{ + /* begin DMUS_PMSG_PART */ + DMUS_PMSG_PART + /* end DMUS_PMSG_PART */ + + REFERENCE_TIME rtStartOffset; /* How far into the wave to start, in reference time units only. */ + REFERENCE_TIME rtDuration; /* Duration of the wave, in either reference time or music time. */ + long lOffset; /* Offset from actual time to logical time, in music or ref time. */ + long lVolume; /* Initial volume, in 100ths of a dB. */ + long lPitch; /* Initial pitch, in 100ths of a semitone. */ + BYTE bFlags; /* Flags, including DMUS_WAVEF_OFF... */ +} DMUS_WAVE_PMSG; + +#define DMUS_WAVEF_OFF 1 /* If wave is playing and this is the off message. */ +#define DMUS_WAVEF_STREAMING 2 /* If wave is streaming. */ +#define DMUS_WAVEF_NOINVALIDATE 4 /* Don't invalidate this wave. */ +#define DMUS_WAVEF_NOPREROLL 8 /* Don't preroll any wave data. */ +#define DMUS_WAVEF_IGNORELOOPS 0x20 /* Ignore segment looping. */ + +/* DMUS_LYRIC_PMSG */ +typedef struct _DMUS_LYRIC_PMSG +{ + /* begin DMUS_PMSG_PART */ + DMUS_PMSG_PART + /* end DMUS_PMSG_PART */ + + WCHAR wszString[1]; /* null-terminated Unicode lyric string (structure is actually larger than size 1) */ +} DMUS_LYRIC_PMSG; + +#define DMUS_MAX_NAME 64 /* Maximum object name length. */ +#define DMUS_MAX_CATEGORY 64 /* Maximum object category name length. */ +#define DMUS_MAX_FILENAME MAX_PATH + +typedef struct _DMUS_VERSION { + DWORD dwVersionMS; + DWORD dwVersionLS; +}DMUS_VERSION, FAR *LPDMUS_VERSION; + +/* Time Signature structure, used by IDirectMusicStyle */ +/* Also used as a parameter for GetParam() and SetParam */ +typedef struct _DMUS_TIMESIGNATURE +{ + MUSIC_TIME mtTime; + BYTE bBeatsPerMeasure; /* beats per measure (top of time sig) */ + BYTE bBeat; /* what note receives the beat (bottom of time sig.) */ + /* we can assume that 0 means 256th note */ + WORD wGridsPerBeat; /* grids per beat */ +} DMUS_TIMESIGNATURE; + +typedef struct _DMUS_VALID_START_PARAM +{ + MUSIC_TIME mtTime; /* Time of the first legal start + point after (or including) the requested time. + This is a returned value. + Time format is the relative offset from requested time. */ +} DMUS_VALID_START_PARAM; + +typedef struct _DMUS_PLAY_MARKER_PARAM +{ + MUSIC_TIME mtTime; /* Time of the first legal segment play + marker before (or including) the requested time. + This is a returned value. + Time format is the relative offset from requested time. */ +} DMUS_PLAY_MARKER_PARAM; + +/* The DMUSOBJECTDESC structure is used to communicate everything you could */ +/* possibly use to describe a DirectMusic object. */ + +typedef struct _DMUS_OBJECTDESC +{ + DWORD dwSize; /* Size of this structure. */ + DWORD dwValidData; /* Flags indicating which fields below are valid. */ + GUID guidObject; /* Unique ID for this object. */ + GUID guidClass; /* GUID for the class of object. */ + FILETIME ftDate; /* Last edited date of object. */ + DMUS_VERSION vVersion; /* Version. */ + WCHAR wszName[DMUS_MAX_NAME]; /* Name of object. */ + WCHAR wszCategory[DMUS_MAX_CATEGORY]; /* Category for object (optional). */ + WCHAR wszFileName[DMUS_MAX_FILENAME]; /* File path. */ + LONGLONG llMemLength; /* Size of Memory data. */ + LPBYTE pbMemData; /* Memory pointer for data. */ + IStream * pStream; /* Stream with data. */ +} DMUS_OBJECTDESC; + +typedef DMUS_OBJECTDESC *LPDMUS_OBJECTDESC; + +/* Flags for dwValidData. When set, a flag indicates that the */ +/* corresponding field in DMUSOBJECTDESC holds valid data. */ + +#define DMUS_OBJ_OBJECT (1 << 0) /* Object GUID is valid. */ +#define DMUS_OBJ_CLASS (1 << 1) /* Class GUID is valid. */ +#define DMUS_OBJ_NAME (1 << 2) /* Name is valid. */ +#define DMUS_OBJ_CATEGORY (1 << 3) /* Category is valid. */ +#define DMUS_OBJ_FILENAME (1 << 4) /* File path is valid. */ +#define DMUS_OBJ_FULLPATH (1 << 5) /* Path is full path. */ +#define DMUS_OBJ_URL (1 << 6) /* Path is URL. */ +#define DMUS_OBJ_VERSION (1 << 7) /* Version is valid. */ +#define DMUS_OBJ_DATE (1 << 8) /* Date is valid. */ +#define DMUS_OBJ_LOADED (1 << 9) /* Object is currently loaded in memory. */ +#define DMUS_OBJ_MEMORY (1 << 10) /* Object is pointed to by pbMemData. */ +#define DMUS_OBJ_STREAM (1 << 11) /* Object is stored in pStream. */ + +/* The DMUS_SCRIPT_ERRORINFO structure describes an error that occurred in a script. + It is returned by methods in IDirectMusicScript. */ +typedef struct _DMUS_SCRIPT_ERRORINFO +{ + DWORD dwSize; /* Size of this structure. */ + HRESULT hr; + ULONG ulLineNumber; + LONG ichCharPosition; + WCHAR wszSourceFile[DMUS_MAX_FILENAME]; + WCHAR wszSourceComponent[DMUS_MAX_FILENAME]; + WCHAR wszDescription[DMUS_MAX_FILENAME]; + WCHAR wszSourceLineText[DMUS_MAX_FILENAME]; +} DMUS_SCRIPT_ERRORINFO; + +/* Track configuration flags, used with IDirectMusicSegment8::SetTrackConfig() */ + +#define DMUS_TRACKCONFIG_OVERRIDE_ALL 1 /* This track should get parameters from this segment before controlling and primary tracks. */ +#define DMUS_TRACKCONFIG_OVERRIDE_PRIMARY 2 /* This track should get parameters from this segment before the primary segment tracks. */ +#define DMUS_TRACKCONFIG_FALLBACK 4 /* This track should get parameters from this segment if the primary and controlling segments don't succeed. */ +#define DMUS_TRACKCONFIG_CONTROL_ENABLED 8 /* GetParam() enabled for this track. */ +#define DMUS_TRACKCONFIG_PLAY_ENABLED 0x10 /* Play() enabled for this track. */ +#define DMUS_TRACKCONFIG_NOTIFICATION_ENABLED 0x20 /* Notifications enabled for this track. */ +#define DMUS_TRACKCONFIG_PLAY_CLOCKTIME 0x40 /* This track plays in clock time, not music time. */ +#define DMUS_TRACKCONFIG_PLAY_COMPOSE 0x80 /* This track should regenerate data each time it starts playing. */ +#define DMUS_TRACKCONFIG_LOOP_COMPOSE 0x100 /* This track should regenerate data each time it repeats. */ +#define DMUS_TRACKCONFIG_COMPOSING 0x200 /* This track is used to compose other tracks. */ +#define DMUS_TRACKCONFIG_CONTROL_PLAY 0x10000 /* This track, when played in a controlling segment, overrides playback of primary segment tracks. */ +#define DMUS_TRACKCONFIG_CONTROL_NOTIFICATION 0x20000 /* This track, when played in a controlling segment, overrides notification of primary segment tracks. */ +/* Additional track config flags for composing transitions */ +#define DMUS_TRACKCONFIG_TRANS1_FROMSEGSTART 0x400 /* Get track info from start of From segment */ +#define DMUS_TRACKCONFIG_TRANS1_FROMSEGCURRENT 0x800 /* Get track info from current place in From segment */ +#define DMUS_TRACKCONFIG_TRANS1_TOSEGSTART 0x1000 /* Get track info from start of To segment */ +#define DMUS_TRACKCONFIG_DEFAULT (DMUS_TRACKCONFIG_CONTROL_ENABLED | DMUS_TRACKCONFIG_PLAY_ENABLED | DMUS_TRACKCONFIG_NOTIFICATION_ENABLED) + +/* Get/SetParam structs for commands */ +/* PARAM structures, used by GetParam() and SetParam() */ +typedef struct _DMUS_COMMAND_PARAM +{ + BYTE bCommand; + BYTE bGrooveLevel; + BYTE bGrooveRange; + BYTE bRepeatMode; +} DMUS_COMMAND_PARAM; + +typedef struct _DMUS_COMMAND_PARAM_2 +{ + MUSIC_TIME mtTime; + BYTE bCommand; + BYTE bGrooveLevel; + BYTE bGrooveRange; + BYTE bRepeatMode; +} DMUS_COMMAND_PARAM_2; + +typedef IDirectMusicObject __RPC_FAR *LPDMUS_OBJECT; +typedef IDirectMusicLoader __RPC_FAR *LPDMUS_LOADER; +typedef IDirectMusicBand __RPC_FAR *LPDMUS_BAND; + +#define DMUSB_LOADED (1 << 0) /* Set when band has been loaded */ +#define DMUSB_DEFAULT (1 << 1) /* Set when band is default band for a style */ + +/*//////////////////////////////////////////////////////////////////// +// IDirectMusicBand */ +#undef INTERFACE +#define INTERFACE IDirectMusicBand +DECLARE_INTERFACE_(IDirectMusicBand, IUnknown) +{ + /* IUnknown */ + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + /* IDirectMusicBand */ + STDMETHOD(CreateSegment) (THIS_ IDirectMusicSegment** ppSegment) PURE; + STDMETHOD(Download) (THIS_ IDirectMusicPerformance* pPerformance) PURE; + STDMETHOD(Unload) (THIS_ IDirectMusicPerformance* pPerformance) PURE; +}; + +typedef IDirectMusicBand IDirectMusicBand8; + +/*//////////////////////////////////////////////////////////////////// +// IDirectMusicObject */ +#undef INTERFACE +#define INTERFACE IDirectMusicObject +DECLARE_INTERFACE_(IDirectMusicObject, IUnknown) +{ + /* IUnknown */ + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + /* IDirectMusicObject */ + STDMETHOD(GetDescriptor) (THIS_ LPDMUS_OBJECTDESC pDesc) PURE; + STDMETHOD(SetDescriptor) (THIS_ LPDMUS_OBJECTDESC pDesc) PURE; + STDMETHOD(ParseDescriptor) (THIS_ LPSTREAM pStream, + LPDMUS_OBJECTDESC pDesc) PURE; +}; + +typedef IDirectMusicObject IDirectMusicObject8; + +/*//////////////////////////////////////////////////////////////////// +// IDirectMusicLoader */ +#undef INTERFACE +#define INTERFACE IDirectMusicLoader +DECLARE_INTERFACE_(IDirectMusicLoader, IUnknown) +{ + /* IUnknown */ + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + /* IDirectMusicLoader */ + STDMETHOD(GetObject) (THIS_ LPDMUS_OBJECTDESC pDesc, + REFIID riid, + LPVOID FAR *ppv) PURE; + STDMETHOD(SetObject) (THIS_ LPDMUS_OBJECTDESC pDesc) PURE; + STDMETHOD(SetSearchDirectory) (THIS_ REFGUID rguidClass, + WCHAR *pwzPath, + BOOL fClear) PURE; + STDMETHOD(ScanDirectory) (THIS_ REFGUID rguidClass, + WCHAR *pwzFileExtension, + WCHAR *pwzScanFileName) PURE; + STDMETHOD(CacheObject) (THIS_ IDirectMusicObject * pObject) PURE; + STDMETHOD(ReleaseObject) (THIS_ IDirectMusicObject * pObject) PURE; + STDMETHOD(ClearCache) (THIS_ REFGUID rguidClass) PURE; + STDMETHOD(EnableCache) (THIS_ REFGUID rguidClass, + BOOL fEnable) PURE; + STDMETHOD(EnumObject) (THIS_ REFGUID rguidClass, + DWORD dwIndex, + LPDMUS_OBJECTDESC pDesc) PURE; +}; + +/*//////////////////////////////////////////////////////////////////// +// IDirectMusicLoader8 */ +#undef INTERFACE +#define INTERFACE IDirectMusicLoader8 +DECLARE_INTERFACE_(IDirectMusicLoader8, IDirectMusicLoader) +{ + /* IUnknown */ + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + /* IDirectMusicLoader */ + STDMETHOD(GetObject) (THIS_ LPDMUS_OBJECTDESC pDesc, + REFIID riid, + LPVOID FAR *ppv) PURE; + STDMETHOD(SetObject) (THIS_ LPDMUS_OBJECTDESC pDesc) PURE; + STDMETHOD(SetSearchDirectory) (THIS_ REFGUID rguidClass, + WCHAR *pwzPath, + BOOL fClear) PURE; + STDMETHOD(ScanDirectory) (THIS_ REFGUID rguidClass, + WCHAR *pwzFileExtension, + WCHAR *pwzScanFileName) PURE; + STDMETHOD(CacheObject) (THIS_ IDirectMusicObject * pObject) PURE; + STDMETHOD(ReleaseObject) (THIS_ IDirectMusicObject * pObject) PURE; + STDMETHOD(ClearCache) (THIS_ REFGUID rguidClass) PURE; + STDMETHOD(EnableCache) (THIS_ REFGUID rguidClass, + BOOL fEnable) PURE; + STDMETHOD(EnumObject) (THIS_ REFGUID rguidClass, + DWORD dwIndex, + LPDMUS_OBJECTDESC pDesc) PURE; + + /* IDirectMusicLoader8 */ + STDMETHOD_(void, CollectGarbage) (THIS) PURE; + STDMETHOD(ReleaseObjectByUnknown) (THIS_ IUnknown *pObject) PURE; + STDMETHOD(LoadObjectFromFile) (THIS_ REFGUID rguidClassID, + REFIID iidInterfaceID, + WCHAR *pwzFilePath, + void ** ppObject) PURE; +}; + +/* Stream object supports IDirectMusicGetLoader interface to access loader while file parsing. */ + +#undef INTERFACE +#define INTERFACE IDirectMusicGetLoader +DECLARE_INTERFACE_(IDirectMusicGetLoader, IUnknown) +{ + /* IUnknown */ + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + /* IDirectMusicGetLoader */ + STDMETHOD(GetLoader) (THIS_ IDirectMusicLoader ** ppLoader) PURE; +}; + +typedef IDirectMusicGetLoader IDirectMusicGetLoader8; + +/*//////////////////////////////////////////////////////////////////// +// IDirectMusicSegment */ +#undef INTERFACE +#define INTERFACE IDirectMusicSegment +DECLARE_INTERFACE_(IDirectMusicSegment, IUnknown) +{ + /* IUnknown */ + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + /* IDirectMusicSegment */ + STDMETHOD(GetLength) (THIS_ MUSIC_TIME* pmtLength) PURE; + STDMETHOD(SetLength) (THIS_ MUSIC_TIME mtLength) PURE; + STDMETHOD(GetRepeats) (THIS_ DWORD* pdwRepeats) PURE; + STDMETHOD(SetRepeats) (THIS_ DWORD dwRepeats) PURE; + STDMETHOD(GetDefaultResolution) (THIS_ DWORD* pdwResolution) PURE; + STDMETHOD(SetDefaultResolution) (THIS_ DWORD dwResolution) PURE; + STDMETHOD(GetTrack) (THIS_ REFGUID rguidType, + DWORD dwGroupBits, + DWORD dwIndex, + IDirectMusicTrack** ppTrack) PURE; + STDMETHOD(GetTrackGroup) (THIS_ IDirectMusicTrack* pTrack, + DWORD* pdwGroupBits) PURE; + STDMETHOD(InsertTrack) (THIS_ IDirectMusicTrack* pTrack, + DWORD dwGroupBits) PURE; + STDMETHOD(RemoveTrack) (THIS_ IDirectMusicTrack* pTrack) PURE; + STDMETHOD(InitPlay) (THIS_ IDirectMusicSegmentState** ppSegState, + IDirectMusicPerformance* pPerformance, + DWORD dwFlags) PURE; + STDMETHOD(GetGraph) (THIS_ IDirectMusicGraph** ppGraph) PURE; + STDMETHOD(SetGraph) (THIS_ IDirectMusicGraph* pGraph) PURE; + STDMETHOD(AddNotificationType) (THIS_ REFGUID rguidNotificationType) PURE; + STDMETHOD(RemoveNotificationType) (THIS_ REFGUID rguidNotificationType) PURE; + STDMETHOD(GetParam) (THIS_ REFGUID rguidType, + DWORD dwGroupBits, + DWORD dwIndex, + MUSIC_TIME mtTime, + MUSIC_TIME* pmtNext, + void* pParam) PURE; + STDMETHOD(SetParam) (THIS_ REFGUID rguidType, + DWORD dwGroupBits, + DWORD dwIndex, + MUSIC_TIME mtTime, + void* pParam) PURE; + STDMETHOD(Clone) (THIS_ MUSIC_TIME mtStart, + MUSIC_TIME mtEnd, + IDirectMusicSegment** ppSegment) PURE; + STDMETHOD(SetStartPoint) (THIS_ MUSIC_TIME mtStart) PURE; + STDMETHOD(GetStartPoint) (THIS_ MUSIC_TIME* pmtStart) PURE; + STDMETHOD(SetLoopPoints) (THIS_ MUSIC_TIME mtStart, + MUSIC_TIME mtEnd) PURE; + STDMETHOD(GetLoopPoints) (THIS_ MUSIC_TIME* pmtStart, + MUSIC_TIME* pmtEnd) PURE; + STDMETHOD(SetPChannelsUsed) (THIS_ DWORD dwNumPChannels, + DWORD* paPChannels) PURE; +}; + +/*//////////////////////////////////////////////////////////////////// +// IDirectMusicSegment8 */ +#undef INTERFACE +#define INTERFACE IDirectMusicSegment8 +DECLARE_INTERFACE_(IDirectMusicSegment8, IDirectMusicSegment) +{ + /* IUnknown */ + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + /* IDirectMusicSegment */ + STDMETHOD(GetLength) (THIS_ MUSIC_TIME* pmtLength) PURE; + STDMETHOD(SetLength) (THIS_ MUSIC_TIME mtLength) PURE; + STDMETHOD(GetRepeats) (THIS_ DWORD* pdwRepeats) PURE; + STDMETHOD(SetRepeats) (THIS_ DWORD dwRepeats) PURE; + STDMETHOD(GetDefaultResolution) (THIS_ DWORD* pdwResolution) PURE; + STDMETHOD(SetDefaultResolution) (THIS_ DWORD dwResolution) PURE; + STDMETHOD(GetTrack) (THIS_ REFGUID rguidType, + DWORD dwGroupBits, + DWORD dwIndex, + IDirectMusicTrack** ppTrack) PURE; + STDMETHOD(GetTrackGroup) (THIS_ IDirectMusicTrack* pTrack, + DWORD* pdwGroupBits) PURE; + STDMETHOD(InsertTrack) (THIS_ IDirectMusicTrack* pTrack, + DWORD dwGroupBits) PURE; + STDMETHOD(RemoveTrack) (THIS_ IDirectMusicTrack* pTrack) PURE; + STDMETHOD(InitPlay) (THIS_ IDirectMusicSegmentState** ppSegState, + IDirectMusicPerformance* pPerformance, + DWORD dwFlags) PURE; + STDMETHOD(GetGraph) (THIS_ IDirectMusicGraph** ppGraph) PURE; + STDMETHOD(SetGraph) (THIS_ IDirectMusicGraph* pGraph) PURE; + STDMETHOD(AddNotificationType) (THIS_ REFGUID rguidNotificationType) PURE; + STDMETHOD(RemoveNotificationType) (THIS_ REFGUID rguidNotificationType) PURE; + STDMETHOD(GetParam) (THIS_ REFGUID rguidType, + DWORD dwGroupBits, + DWORD dwIndex, + MUSIC_TIME mtTime, + MUSIC_TIME* pmtNext, + void* pParam) PURE; + STDMETHOD(SetParam) (THIS_ REFGUID rguidType, + DWORD dwGroupBits, + DWORD dwIndex, + MUSIC_TIME mtTime, + void* pParam) PURE; + STDMETHOD(Clone) (THIS_ MUSIC_TIME mtStart, + MUSIC_TIME mtEnd, + IDirectMusicSegment** ppSegment) PURE; + STDMETHOD(SetStartPoint) (THIS_ MUSIC_TIME mtStart) PURE; + STDMETHOD(GetStartPoint) (THIS_ MUSIC_TIME* pmtStart) PURE; + STDMETHOD(SetLoopPoints) (THIS_ MUSIC_TIME mtStart, + MUSIC_TIME mtEnd) PURE; + STDMETHOD(GetLoopPoints) (THIS_ MUSIC_TIME* pmtStart, + MUSIC_TIME* pmtEnd) PURE; + STDMETHOD(SetPChannelsUsed) (THIS_ DWORD dwNumPChannels, + DWORD* paPChannels) PURE; + /* IDirectMusicSegment8 */ + STDMETHOD(SetTrackConfig) (THIS_ REFGUID rguidTrackClassID, /* Class ID of the type of track on which to set the configuration flags. */ + DWORD dwGroupBits, /* Group bits. */ + DWORD dwIndex, /* Nth track (or DMUS_SEG_ALLTRACKS) that matches class id and group id. */ + DWORD dwFlagsOn, /* DMUS_TRACKCONFIG_ flags to enable. */ + DWORD dwFlagsOff) PURE; /* DMUS_TRACKCONFIG_ flags to disable. */ + STDMETHOD(GetAudioPathConfig) (THIS_ IUnknown ** ppAudioPathConfig) PURE; + STDMETHOD(Compose) (THIS_ MUSIC_TIME mtTime, + IDirectMusicSegment* pFromSegment, + IDirectMusicSegment* pToSegment, + IDirectMusicSegment** ppComposedSegment) PURE; + STDMETHOD(Download) (THIS_ IUnknown *pAudioPath) PURE; + STDMETHOD(Unload) (THIS_ IUnknown *pAudioPath) PURE; +}; + +/*///////////////////////////////////////////////////////////////////// +// IDirectMusicSegmentState */ +#undef INTERFACE +#define INTERFACE IDirectMusicSegmentState +DECLARE_INTERFACE_(IDirectMusicSegmentState, IUnknown) +{ + /* IUnknown */ + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + /* IDirectMusicSegmentState */ + STDMETHOD(GetRepeats) (THIS_ DWORD* pdwRepeats) PURE; + STDMETHOD(GetSegment ) (THIS_ IDirectMusicSegment** ppSegment) PURE; + STDMETHOD(GetStartTime) (THIS_ MUSIC_TIME* pmtStart) PURE; + STDMETHOD(GetSeek) (THIS_ MUSIC_TIME* pmtSeek) PURE; + STDMETHOD(GetStartPoint) (THIS_ MUSIC_TIME* pmtStart) PURE; +}; + +/*///////////////////////////////////////////////////////////////////// +// IDirectMusicSegmentState8 */ +#undef INTERFACE +#define INTERFACE IDirectMusicSegmentState8 +DECLARE_INTERFACE_(IDirectMusicSegmentState8, IDirectMusicSegmentState) +{ + /* IUnknown */ + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + /* IDirectMusicSegmentState */ + STDMETHOD(GetRepeats) (THIS_ DWORD* pdwRepeats) PURE; + STDMETHOD(GetSegment ) (THIS_ IDirectMusicSegment** ppSegment) PURE; + STDMETHOD(GetStartTime) (THIS_ MUSIC_TIME* pmtStart) PURE; + STDMETHOD(GetSeek) (THIS_ MUSIC_TIME* pmtSeek) PURE; + STDMETHOD(GetStartPoint) (THIS_ MUSIC_TIME* pmtStart) PURE; + + /* IDirectMusicSegmentState8 */ + STDMETHOD(SetTrackConfig) (THIS_ REFGUID rguidTrackClassID, /* Class ID of the type of track on which to set the configuration flags. */ + DWORD dwGroupBits, /* Group bits. */ + DWORD dwIndex, /* Nth track (or DMUS_SEG_ALLTRACKS) that matches class id and group id. */ + DWORD dwFlagsOn, /* DMUS_TRACKCONFIG_ flags to enable. */ + DWORD dwFlagsOff) PURE; /* DMUS_TRACKCONFIG_ flags to disable. */ + STDMETHOD(GetObjectInPath) (THIS_ DWORD dwPChannel, /* PChannel to search. */ + DWORD dwStage, /* Which stage in the path. */ + DWORD dwBuffer, /* Which buffer to address, if more than one. */ + REFGUID guidObject, /* ClassID of object. */ + DWORD dwIndex, /* Which object of that class. */ + REFGUID iidInterface,/* Requested COM interface. */ + void ** ppObject) PURE; /* Pointer to interface. */ +}; + +/*//////////////////////////////////////////////////////////////////// +// IDirectMusicAudioPath */ +#undef INTERFACE +#define INTERFACE IDirectMusicAudioPath +DECLARE_INTERFACE_(IDirectMusicAudioPath, IUnknown) +{ + /* IUnknown */ + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + /* IDirectMusicAudioPath */ + STDMETHOD(GetObjectInPath) (THIS_ DWORD dwPChannel, /* PChannel to search. */ + DWORD dwStage, /* Which stage in the path. */ + DWORD dwBuffer, /* Which buffer to address, if more than one. */ + REFGUID guidObject, /* ClassID of object. */ + DWORD dwIndex, /* Which object of that class. */ + REFGUID iidInterface,/* Requested COM interface. */ + void ** ppObject) PURE; /* Pointer to interface. */ + STDMETHOD(Activate) (THIS_ BOOL fActivate) PURE;/* True to activate, False to deactivate. */ + STDMETHOD(SetVolume) (THIS_ long lVolume, /* Gain, in 100ths of a dB. This must be negative (0 represents full volume.) */ + DWORD dwDuration) PURE;/* Duration of volume ramp in milliseconds. Note that 0 is more efficient. */ + STDMETHOD(ConvertPChannel) (THIS_ DWORD dwPChannelIn, /* Pchannel of source. */ + DWORD *pdwPChannelOut) PURE; /* Equivalent pchannel on performance. */ +}; + +typedef IDirectMusicAudioPath IDirectMusicAudioPath8; + +/*//////////////////////////////////////////////////////////////////// +// IDirectMusicPerformance */ +#undef INTERFACE +#define INTERFACE IDirectMusicPerformance +DECLARE_INTERFACE_(IDirectMusicPerformance, IUnknown) +{ + /* IUnknown */ + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + /* IDirectMusicPerformance */ + STDMETHOD(Init) (THIS_ IDirectMusic** ppDirectMusic, + LPDIRECTSOUND pDirectSound, + HWND hWnd) PURE; + STDMETHOD(PlaySegment) (THIS_ IDirectMusicSegment* pSegment, + DWORD dwFlags, + __int64 i64StartTime, + IDirectMusicSegmentState** ppSegmentState) PURE; + STDMETHOD(Stop) (THIS_ IDirectMusicSegment* pSegment, + IDirectMusicSegmentState* pSegmentState, + MUSIC_TIME mtTime, + DWORD dwFlags) PURE; + STDMETHOD(GetSegmentState) (THIS_ IDirectMusicSegmentState** ppSegmentState, + MUSIC_TIME mtTime) PURE; + STDMETHOD(SetPrepareTime) (THIS_ DWORD dwMilliSeconds) PURE; + STDMETHOD(GetPrepareTime) (THIS_ DWORD* pdwMilliSeconds) PURE; + STDMETHOD(SetBumperLength) (THIS_ DWORD dwMilliSeconds) PURE; + STDMETHOD(GetBumperLength) (THIS_ DWORD* pdwMilliSeconds) PURE; + STDMETHOD(SendPMsg) (THIS_ DMUS_PMSG* pPMSG) PURE; + STDMETHOD(MusicToReferenceTime) (THIS_ MUSIC_TIME mtTime, + REFERENCE_TIME* prtTime) PURE; + STDMETHOD(ReferenceToMusicTime) (THIS_ REFERENCE_TIME rtTime, + MUSIC_TIME* pmtTime) PURE; + STDMETHOD(IsPlaying) (THIS_ IDirectMusicSegment* pSegment, + IDirectMusicSegmentState* pSegState) PURE; + STDMETHOD(GetTime) (THIS_ REFERENCE_TIME* prtNow, + MUSIC_TIME* pmtNow) PURE; + STDMETHOD(AllocPMsg) (THIS_ ULONG cb, + DMUS_PMSG** ppPMSG) PURE; + STDMETHOD(FreePMsg) (THIS_ DMUS_PMSG* pPMSG) PURE; + STDMETHOD(GetGraph) (THIS_ IDirectMusicGraph** ppGraph) PURE; + STDMETHOD(SetGraph) (THIS_ IDirectMusicGraph* pGraph) PURE; + STDMETHOD(SetNotificationHandle)(THIS_ HANDLE hNotification, + REFERENCE_TIME rtMinimum) PURE; + STDMETHOD(GetNotificationPMsg) (THIS_ DMUS_NOTIFICATION_PMSG** ppNotificationPMsg) PURE; + STDMETHOD(AddNotificationType) (THIS_ REFGUID rguidNotificationType) PURE; + STDMETHOD(RemoveNotificationType)(THIS_ REFGUID rguidNotificationType) PURE; + STDMETHOD(AddPort) (THIS_ IDirectMusicPort* pPort) PURE; + STDMETHOD(RemovePort) (THIS_ IDirectMusicPort* pPort ) PURE; + STDMETHOD(AssignPChannelBlock) (THIS_ DWORD dwBlockNum, + IDirectMusicPort* pPort, + DWORD dwGroup ) PURE; + STDMETHOD(AssignPChannel) (THIS_ DWORD dwPChannel, + IDirectMusicPort* pPort, + DWORD dwGroup, + DWORD dwMChannel ) PURE; + STDMETHOD(PChannelInfo) (THIS_ DWORD dwPChannel, + IDirectMusicPort** ppPort, + DWORD* pdwGroup, + DWORD* pdwMChannel ) PURE; + STDMETHOD(DownloadInstrument) (THIS_ IDirectMusicInstrument* pInst, + DWORD dwPChannel, + IDirectMusicDownloadedInstrument** ppDownInst, + DMUS_NOTERANGE* pNoteRanges, + DWORD dwNumNoteRanges, + IDirectMusicPort** ppPort, + DWORD* pdwGroup, + DWORD* pdwMChannel ) PURE; + STDMETHOD(Invalidate) (THIS_ MUSIC_TIME mtTime, + DWORD dwFlags) PURE; + STDMETHOD(GetParam) (THIS_ REFGUID rguidType, + DWORD dwGroupBits, + DWORD dwIndex, + MUSIC_TIME mtTime, + MUSIC_TIME* pmtNext, + void* pParam) PURE; + STDMETHOD(SetParam) (THIS_ REFGUID rguidType, + DWORD dwGroupBits, + DWORD dwIndex, + MUSIC_TIME mtTime, + void* pParam) PURE; + STDMETHOD(GetGlobalParam) (THIS_ REFGUID rguidType, + void* pParam, + DWORD dwSize) PURE; + STDMETHOD(SetGlobalParam) (THIS_ REFGUID rguidType, + void* pParam, + DWORD dwSize) PURE; + STDMETHOD(GetLatencyTime) (THIS_ REFERENCE_TIME* prtTime) PURE; + STDMETHOD(GetQueueTime) (THIS_ REFERENCE_TIME* prtTime) PURE; + STDMETHOD(AdjustTime) (THIS_ REFERENCE_TIME rtAmount) PURE; + STDMETHOD(CloseDown) (THIS) PURE; + STDMETHOD(GetResolvedTime) (THIS_ REFERENCE_TIME rtTime, + REFERENCE_TIME* prtResolved, + DWORD dwTimeResolveFlags) PURE; + STDMETHOD(MIDIToMusic) (THIS_ BYTE bMIDIValue, + DMUS_CHORD_KEY* pChord, + BYTE bPlayMode, + BYTE bChordLevel, + WORD *pwMusicValue) PURE; + STDMETHOD(MusicToMIDI) (THIS_ WORD wMusicValue, + DMUS_CHORD_KEY* pChord, + BYTE bPlayMode, + BYTE bChordLevel, + BYTE *pbMIDIValue) PURE; + STDMETHOD(TimeToRhythm) (THIS_ MUSIC_TIME mtTime, + DMUS_TIMESIGNATURE *pTimeSig, + WORD *pwMeasure, + BYTE *pbBeat, + BYTE *pbGrid, + short *pnOffset) PURE; + STDMETHOD(RhythmToTime) (THIS_ WORD wMeasure, + BYTE bBeat, + BYTE bGrid, + short nOffset, + DMUS_TIMESIGNATURE *pTimeSig, + MUSIC_TIME *pmtTime) PURE; +}; + +/*//////////////////////////////////////////////////////////////////// +// IDirectMusicPerformance8 */ +#undef INTERFACE +#define INTERFACE IDirectMusicPerformance8 +DECLARE_INTERFACE_(IDirectMusicPerformance8, IDirectMusicPerformance) +{ + /* IUnknown */ + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + /* IDirectMusicPerformance */ + STDMETHOD(Init) (THIS_ IDirectMusic** ppDirectMusic, + LPDIRECTSOUND pDirectSound, + HWND hWnd) PURE; + STDMETHOD(PlaySegment) (THIS_ IDirectMusicSegment* pSegment, + DWORD dwFlags, + __int64 i64StartTime, + IDirectMusicSegmentState** ppSegmentState) PURE; + STDMETHOD(Stop) (THIS_ IDirectMusicSegment* pSegment, + IDirectMusicSegmentState* pSegmentState, + MUSIC_TIME mtTime, + DWORD dwFlags) PURE; + STDMETHOD(GetSegmentState) (THIS_ IDirectMusicSegmentState** ppSegmentState, + MUSIC_TIME mtTime) PURE; + STDMETHOD(SetPrepareTime) (THIS_ DWORD dwMilliSeconds) PURE; + STDMETHOD(GetPrepareTime) (THIS_ DWORD* pdwMilliSeconds) PURE; + STDMETHOD(SetBumperLength) (THIS_ DWORD dwMilliSeconds) PURE; + STDMETHOD(GetBumperLength) (THIS_ DWORD* pdwMilliSeconds) PURE; + STDMETHOD(SendPMsg) (THIS_ DMUS_PMSG* pPMSG) PURE; + STDMETHOD(MusicToReferenceTime) (THIS_ MUSIC_TIME mtTime, + REFERENCE_TIME* prtTime) PURE; + STDMETHOD(ReferenceToMusicTime) (THIS_ REFERENCE_TIME rtTime, + MUSIC_TIME* pmtTime) PURE; + STDMETHOD(IsPlaying) (THIS_ IDirectMusicSegment* pSegment, + IDirectMusicSegmentState* pSegState) PURE; + STDMETHOD(GetTime) (THIS_ REFERENCE_TIME* prtNow, + MUSIC_TIME* pmtNow) PURE; + STDMETHOD(AllocPMsg) (THIS_ ULONG cb, + DMUS_PMSG** ppPMSG) PURE; + STDMETHOD(FreePMsg) (THIS_ DMUS_PMSG* pPMSG) PURE; + STDMETHOD(GetGraph) (THIS_ IDirectMusicGraph** ppGraph) PURE; + STDMETHOD(SetGraph) (THIS_ IDirectMusicGraph* pGraph) PURE; + STDMETHOD(SetNotificationHandle)(THIS_ HANDLE hNotification, + REFERENCE_TIME rtMinimum) PURE; + STDMETHOD(GetNotificationPMsg) (THIS_ DMUS_NOTIFICATION_PMSG** ppNotificationPMsg) PURE; + STDMETHOD(AddNotificationType) (THIS_ REFGUID rguidNotificationType) PURE; + STDMETHOD(RemoveNotificationType)(THIS_ REFGUID rguidNotificationType) PURE; + STDMETHOD(AddPort) (THIS_ IDirectMusicPort* pPort) PURE; + STDMETHOD(RemovePort) (THIS_ IDirectMusicPort* pPort ) PURE; + STDMETHOD(AssignPChannelBlock) (THIS_ DWORD dwBlockNum, + IDirectMusicPort* pPort, + DWORD dwGroup ) PURE; + STDMETHOD(AssignPChannel) (THIS_ DWORD dwPChannel, + IDirectMusicPort* pPort, + DWORD dwGroup, + DWORD dwMChannel ) PURE; + STDMETHOD(PChannelInfo) (THIS_ DWORD dwPChannel, + IDirectMusicPort** ppPort, + DWORD* pdwGroup, + DWORD* pdwMChannel ) PURE; + STDMETHOD(DownloadInstrument) (THIS_ IDirectMusicInstrument* pInst, + DWORD dwPChannel, + IDirectMusicDownloadedInstrument** ppDownInst, + DMUS_NOTERANGE* pNoteRanges, + DWORD dwNumNoteRanges, + IDirectMusicPort** ppPort, + DWORD* pdwGroup, + DWORD* pdwMChannel ) PURE; + STDMETHOD(Invalidate) (THIS_ MUSIC_TIME mtTime, + DWORD dwFlags) PURE; + STDMETHOD(GetParam) (THIS_ REFGUID rguidType, + DWORD dwGroupBits, + DWORD dwIndex, + MUSIC_TIME mtTime, + MUSIC_TIME* pmtNext, + void* pParam) PURE; + STDMETHOD(SetParam) (THIS_ REFGUID rguidType, + DWORD dwGroupBits, + DWORD dwIndex, + MUSIC_TIME mtTime, + void* pParam) PURE; + STDMETHOD(GetGlobalParam) (THIS_ REFGUID rguidType, + void* pParam, + DWORD dwSize) PURE; + STDMETHOD(SetGlobalParam) (THIS_ REFGUID rguidType, + void* pParam, + DWORD dwSize) PURE; + STDMETHOD(GetLatencyTime) (THIS_ REFERENCE_TIME* prtTime) PURE; + STDMETHOD(GetQueueTime) (THIS_ REFERENCE_TIME* prtTime) PURE; + STDMETHOD(AdjustTime) (THIS_ REFERENCE_TIME rtAmount) PURE; + STDMETHOD(CloseDown) (THIS) PURE; + STDMETHOD(GetResolvedTime) (THIS_ REFERENCE_TIME rtTime, + REFERENCE_TIME* prtResolved, + DWORD dwTimeResolveFlags) PURE; + STDMETHOD(MIDIToMusic) (THIS_ BYTE bMIDIValue, + DMUS_CHORD_KEY* pChord, + BYTE bPlayMode, + BYTE bChordLevel, + WORD *pwMusicValue) PURE; + STDMETHOD(MusicToMIDI) (THIS_ WORD wMusicValue, + DMUS_CHORD_KEY* pChord, + BYTE bPlayMode, + BYTE bChordLevel, + BYTE *pbMIDIValue) PURE; + STDMETHOD(TimeToRhythm) (THIS_ MUSIC_TIME mtTime, + DMUS_TIMESIGNATURE *pTimeSig, + WORD *pwMeasure, + BYTE *pbBeat, + BYTE *pbGrid, + short *pnOffset) PURE; + STDMETHOD(RhythmToTime) (THIS_ WORD wMeasure, + BYTE bBeat, + BYTE bGrid, + short nOffset, + DMUS_TIMESIGNATURE *pTimeSig, + MUSIC_TIME *pmtTime) PURE; + /* IDirectMusicPerformance8 */ + STDMETHOD(InitAudio) (THIS_ IDirectMusic** ppDirectMusic, /* Optional DMusic pointer. */ + IDirectSound** ppDirectSound, /* Optional DSound pointer. */ + HWND hWnd, /* HWND for DSound. */ + DWORD dwDefaultPathType, /* Requested default audio path type, also optional. */ + DWORD dwPChannelCount, /* Number of PChannels, if default audio path to be created. */ + DWORD dwFlags, /* DMUS_AUDIOF flags, if no pParams structure. */ + DMUS_AUDIOPARAMS *pParams) PURE; /* Optional initialization structure, defining required voices, buffers, etc. */ + STDMETHOD(PlaySegmentEx) (THIS_ IUnknown* pSource, /* Segment to play. */ + WCHAR *pwzSegmentName, /* Not supported in DX8. */ + IUnknown* pTransition, /* Optional template segment to compose transition with. */ + DWORD dwFlags, /* DMUS_SEGF_ flags. */ + __int64 i64StartTime, /* Time to start playback. */ + IDirectMusicSegmentState** ppSegmentState, /* Returned Segment State. */ + IUnknown *pFrom, /* Optional segmentstate or audiopath to replace. */ + IUnknown *pAudioPath) PURE; /* Optional audioPath to play on. */ + STDMETHOD(StopEx) (THIS_ IUnknown *pObjectToStop, /* Segstate, AudioPath, or Segment. */ + __int64 i64StopTime, + DWORD dwFlags) PURE; + STDMETHOD(ClonePMsg) (THIS_ DMUS_PMSG* pSourcePMSG, + DMUS_PMSG** ppCopyPMSG) PURE; + STDMETHOD(CreateAudioPath) (THIS_ IUnknown *pSourceConfig, /* Source configuration, from AudioPathConfig file. */ + BOOL fActivate, /* TRUE to activate on creation. */ + IDirectMusicAudioPath **ppNewPath) PURE; /* Returns created audiopath. */ + STDMETHOD(CreateStandardAudioPath)(THIS_ DWORD dwType, /* Type of path to create. */ + DWORD dwPChannelCount, /* How many PChannels to allocate for it. */ + BOOL fActivate, /* TRUE to activate on creation. */ + IDirectMusicAudioPath **ppNewPath) PURE; /* Returns created audiopath. */ + STDMETHOD(SetDefaultAudioPath) (THIS_ IDirectMusicAudioPath *pAudioPath) PURE; + STDMETHOD(GetDefaultAudioPath) (THIS_ IDirectMusicAudioPath **ppAudioPath) PURE; + STDMETHOD(GetParamEx) (THIS_ REFGUID rguidType, /* GetParam command ID. */ + DWORD dwTrackID, /* Virtual track ID of caller. */ + DWORD dwGroupBits, /* Group bits of caller. */ + DWORD dwIndex, /* Index to Nth parameter. */ + MUSIC_TIME mtTime, /* Time of requested parameter. */ + MUSIC_TIME* pmtNext, /* Returned delta to next parameter. */ + void* pParam) PURE; /* Data structure to fill with parameter. */ +}; + + + +/*//////////////////////////////////////////////////////////////////// +// IDirectMusicGraph */ +#undef INTERFACE +#define INTERFACE IDirectMusicGraph +DECLARE_INTERFACE_(IDirectMusicGraph, IUnknown) +{ + /* IUnknown */ + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + /* IDirectMusicGraph */ + STDMETHOD(StampPMsg) (THIS_ DMUS_PMSG* pPMSG) PURE; + STDMETHOD(InsertTool) (THIS_ IDirectMusicTool* pTool, + DWORD* pdwPChannels, + DWORD cPChannels, + LONG lIndex) PURE; + STDMETHOD(GetTool) (THIS_ DWORD dwIndex, + IDirectMusicTool** ppTool) PURE; + STDMETHOD(RemoveTool) (THIS_ IDirectMusicTool* pTool) PURE; +}; + +typedef IDirectMusicGraph IDirectMusicGraph8; + + +/*///////////////////////////////////////////////////////////////////// +// IDirectMusicStyle */ +#undef INTERFACE +#define INTERFACE IDirectMusicStyle +DECLARE_INTERFACE_(IDirectMusicStyle, IUnknown) +{ + /* IUnknown */ + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + /* IDirectMusicStyle */ + STDMETHOD(GetBand) (THIS_ WCHAR* pwszName, + IDirectMusicBand** ppBand) PURE; + STDMETHOD(EnumBand) (THIS_ DWORD dwIndex, + WCHAR *pwszName) PURE; + STDMETHOD(GetDefaultBand) (THIS_ IDirectMusicBand** ppBand) PURE; + STDMETHOD(EnumMotif) (THIS_ DWORD dwIndex, + WCHAR* pwszName) PURE; + STDMETHOD(GetMotif) (THIS_ WCHAR* pwszName, + IDirectMusicSegment** ppSegment) PURE; + STDMETHOD(GetDefaultChordMap) (THIS_ IDirectMusicChordMap** ppChordMap) PURE; + STDMETHOD(EnumChordMap) (THIS_ DWORD dwIndex, + WCHAR *pwszName) PURE; + STDMETHOD(GetChordMap) (THIS_ WCHAR* pwszName, + IDirectMusicChordMap** ppChordMap) PURE; + STDMETHOD(GetTimeSignature) (THIS_ DMUS_TIMESIGNATURE* pTimeSig) PURE; + STDMETHOD(GetEmbellishmentLength) (THIS_ DWORD dwType, + DWORD dwLevel, + DWORD* pdwMin, + DWORD* pdwMax) PURE; + STDMETHOD(GetTempo) (THIS_ double* pTempo) PURE; +}; + +/*///////////////////////////////////////////////////////////////////// +// IDirectMusicStyle8 */ +#undef INTERFACE +#define INTERFACE IDirectMusicStyle8 +DECLARE_INTERFACE_(IDirectMusicStyle8, IDirectMusicStyle) +{ + /* IUnknown */ + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + /* IDirectMusicStyle */ + STDMETHOD(GetBand) (THIS_ WCHAR* pwszName, + IDirectMusicBand** ppBand) PURE; + STDMETHOD(EnumBand) (THIS_ DWORD dwIndex, + WCHAR *pwszName) PURE; + STDMETHOD(GetDefaultBand) (THIS_ IDirectMusicBand** ppBand) PURE; + STDMETHOD(EnumMotif) (THIS_ DWORD dwIndex, + WCHAR* pwszName) PURE; + STDMETHOD(GetMotif) (THIS_ WCHAR* pwszName, + IDirectMusicSegment** ppSegment) PURE; + STDMETHOD(GetDefaultChordMap) (THIS_ IDirectMusicChordMap** ppChordMap) PURE; + STDMETHOD(EnumChordMap) (THIS_ DWORD dwIndex, + WCHAR *pwszName) PURE; + STDMETHOD(GetChordMap) (THIS_ WCHAR* pwszName, + IDirectMusicChordMap** ppChordMap) PURE; + STDMETHOD(GetTimeSignature) (THIS_ DMUS_TIMESIGNATURE* pTimeSig) PURE; + STDMETHOD(GetEmbellishmentLength) (THIS_ DWORD dwType, + DWORD dwLevel, + DWORD* pdwMin, + DWORD* pdwMax) PURE; + STDMETHOD(GetTempo) (THIS_ double* pTempo) PURE; + + /* IDirectMusicStyle8 */ + STDMETHOD(EnumPattern) (THIS_ DWORD dwIndex, + DWORD dwPatternType, + WCHAR* pwszName) PURE; +}; + +/*///////////////////////////////////////////////////////////////////// +// IDirectMusicChordMap */ +#undef INTERFACE +#define INTERFACE IDirectMusicChordMap +DECLARE_INTERFACE_(IDirectMusicChordMap, IUnknown) +{ + /* IUnknown */ + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + /* IDirectMusicChordMap */ + STDMETHOD(GetScale) (THIS_ DWORD* pdwScale) PURE; +}; + +typedef IDirectMusicChordMap IDirectMusicChordMap8; + +/*///////////////////////////////////////////////////////////////////// +// IDirectMusicComposer */ +#undef INTERFACE +#define INTERFACE IDirectMusicComposer +DECLARE_INTERFACE_(IDirectMusicComposer, IUnknown) +{ + /* IUnknown */ + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + /* IDirectMusicComposer */ + STDMETHOD(ComposeSegmentFromTemplate) (THIS_ IDirectMusicStyle* pStyle, + IDirectMusicSegment* pTemplate, + WORD wActivity, + IDirectMusicChordMap* pChordMap, + IDirectMusicSegment** ppSegment) PURE; + STDMETHOD(ComposeSegmentFromShape) (THIS_ IDirectMusicStyle* pStyle, + WORD wNumMeasures, + WORD wShape, + WORD wActivity, + BOOL fIntro, + BOOL fEnd, + IDirectMusicChordMap* pChordMap, + IDirectMusicSegment** ppSegment ) PURE; + STDMETHOD(ComposeTransition) (THIS_ IDirectMusicSegment* pFromSeg, + IDirectMusicSegment* pToSeg, + MUSIC_TIME mtTime, + WORD wCommand, + DWORD dwFlags, + IDirectMusicChordMap* pChordMap, + IDirectMusicSegment** ppTransSeg) PURE; + STDMETHOD(AutoTransition) (THIS_ IDirectMusicPerformance* pPerformance, + IDirectMusicSegment* pToSeg, + WORD wCommand, + DWORD dwFlags, + IDirectMusicChordMap* pChordMap, + IDirectMusicSegment** ppTransSeg, + IDirectMusicSegmentState** ppToSegState, + IDirectMusicSegmentState** ppTransSegState) PURE; + STDMETHOD(ComposeTemplateFromShape) (THIS_ WORD wNumMeasures, + WORD wShape, + BOOL fIntro, + BOOL fEnd, + WORD wEndLength, + IDirectMusicSegment** ppTemplate) PURE; + STDMETHOD(ChangeChordMap) (THIS_ IDirectMusicSegment* pSegment, + BOOL fTrackScale, + IDirectMusicChordMap* pChordMap) PURE; +}; + +typedef IDirectMusicComposer IDirectMusicComposer8; + +/*///////////////////////////////////////////////////////////////////// +// IDirectMusicPatternTrack */ + +#undef INTERFACE +#define INTERFACE IDirectMusicPatternTrack +DECLARE_INTERFACE_(IDirectMusicPatternTrack, IUnknown) +{ + /* IUnknown */ + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + /* IDirectMusicPatternTrack */ + STDMETHOD(CreateSegment) (THIS_ IDirectMusicStyle* pStyle, + IDirectMusicSegment** ppSegment) PURE; + STDMETHOD(SetVariation) (THIS_ IDirectMusicSegmentState* pSegState, + DWORD dwVariationFlags, + DWORD dwPart) PURE; + STDMETHOD(SetPatternByName) (THIS_ IDirectMusicSegmentState* pSegState, + WCHAR* wszName, + IDirectMusicStyle* pStyle, + DWORD dwPatternType, + DWORD* pdwLength) PURE; +}; + +typedef IDirectMusicPatternTrack IDirectMusicPatternTrack8; + +/*///////////////////////////////////////////////////////////////////// +// IDirectMusicScript */ + +#undef INTERFACE +#define INTERFACE IDirectMusicScript +DECLARE_INTERFACE_(IDirectMusicScript, IUnknown) +{ + /* IUnknown */ + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + /* IDirectMusicScript */ + STDMETHOD(Init) (THIS_ IDirectMusicPerformance *pPerformance, + DMUS_SCRIPT_ERRORINFO *pErrorInfo) PURE; + STDMETHOD(CallRoutine) (THIS_ WCHAR *pwszRoutineName, + DMUS_SCRIPT_ERRORINFO *pErrorInfo) PURE; + STDMETHOD(SetVariableVariant) (THIS_ WCHAR *pwszVariableName, + VARIANT varValue, + BOOL fSetRef, + DMUS_SCRIPT_ERRORINFO *pErrorInfo) PURE; + STDMETHOD(GetVariableVariant) (THIS_ WCHAR *pwszVariableName, + VARIANT *pvarValue, + DMUS_SCRIPT_ERRORINFO *pErrorInfo) PURE; + STDMETHOD(SetVariableNumber) (THIS_ WCHAR *pwszVariableName, + LONG lValue, + DMUS_SCRIPT_ERRORINFO *pErrorInfo) PURE; + STDMETHOD(GetVariableNumber) (THIS_ WCHAR *pwszVariableName, + LONG *plValue, + DMUS_SCRIPT_ERRORINFO *pErrorInfo) PURE; + STDMETHOD(SetVariableObject) (THIS_ WCHAR *pwszVariableName, + IUnknown *punkValue, + DMUS_SCRIPT_ERRORINFO *pErrorInfo) PURE; + STDMETHOD(GetVariableObject) (THIS_ WCHAR *pwszVariableName, + REFIID riid, + LPVOID FAR *ppv, + DMUS_SCRIPT_ERRORINFO *pErrorInfo) PURE; + STDMETHOD(EnumRoutine) (THIS_ DWORD dwIndex, + WCHAR *pwszName) PURE; + STDMETHOD(EnumVariable) (THIS_ DWORD dwIndex, + WCHAR *pwszName) PURE; +}; + +typedef IDirectMusicScript IDirectMusicScript8; + +/*///////////////////////////////////////////////////////////////////// +// IDirectMusicContainer */ + +#undef INTERFACE +#define INTERFACE IDirectMusicContainer +DECLARE_INTERFACE_(IDirectMusicContainer, IUnknown) +{ + /* IUnknown */ + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + /* IDirectMusicContainer */ + STDMETHOD(EnumObject) (THIS_ REFGUID rguidClass, + DWORD dwIndex, + LPDMUS_OBJECTDESC pDesc, + WCHAR *pwszAlias) PURE; +}; + +typedef IDirectMusicContainer IDirectMusicContainer8; + +/* CLSID's */ +DEFINE_GUID(CLSID_DirectMusicPerformance,0xd2ac2881, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); +DEFINE_GUID(CLSID_DirectMusicSegment,0xd2ac2882, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); +DEFINE_GUID(CLSID_DirectMusicSegmentState,0xd2ac2883, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); +DEFINE_GUID(CLSID_DirectMusicGraph,0xd2ac2884, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); +DEFINE_GUID(CLSID_DirectMusicStyle,0xd2ac288a, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); +DEFINE_GUID(CLSID_DirectMusicChordMap,0xd2ac288f, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); +DEFINE_GUID(CLSID_DirectMusicComposer,0xd2ac2890, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); +DEFINE_GUID(CLSID_DirectMusicLoader,0xd2ac2892, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); +DEFINE_GUID(CLSID_DirectMusicBand,0x79ba9e00, 0xb6ee, 0x11d1, 0x86, 0xbe, 0x0, 0xc0, 0x4f, 0xbf, 0x8f, 0xef); + +/* New CLSID's for DX8 */ +DEFINE_GUID(CLSID_DirectMusicPatternTrack,0xd2ac2897, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); +DEFINE_GUID(CLSID_DirectMusicScript,0x810b5013, 0xe88d, 0x11d2, 0x8b, 0xc1, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xb6); /* {810B5013-E88D-11d2-8BC1-00600893B1B6} */ +DEFINE_GUID(CLSID_DirectMusicContainer,0x9301e380, 0x1f22, 0x11d3, 0x82, 0x26, 0xd2, 0xfa, 0x76, 0x25, 0x5d, 0x47); +DEFINE_GUID(CLSID_DirectSoundWave,0x8a667154, 0xf9cb, 0x11d2, 0xad, 0x8a, 0x0, 0x60, 0xb0, 0x57, 0x5a, 0xbc); +DEFINE_GUID(CLSID_DirectMusicAudioPathConfig,0xee0b9ca0, 0xa81e, 0x11d3, 0x9b, 0xd1, 0x0, 0x80, 0xc7, 0x15, 0xa, 0x74); + +/* Special GUID for all object types. This is used by the loader. */ +DEFINE_GUID(GUID_DirectMusicAllTypes,0xd2ac2893, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); + +/* Notification guids */ +DEFINE_GUID(GUID_NOTIFICATION_SEGMENT,0xd2ac2899, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); +DEFINE_GUID(GUID_NOTIFICATION_PERFORMANCE,0x81f75bc5, 0x4e5d, 0x11d2, 0xbc, 0xc7, 0x0, 0xa0, 0xc9, 0x22, 0xe6, 0xeb); +DEFINE_GUID(GUID_NOTIFICATION_MEASUREANDBEAT,0xd2ac289a, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); +DEFINE_GUID(GUID_NOTIFICATION_CHORD,0xd2ac289b, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); +DEFINE_GUID(GUID_NOTIFICATION_COMMAND,0xd2ac289c, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); +DEFINE_GUID(GUID_NOTIFICATION_RECOMPOSE, 0xd348372b, 0x945b, 0x45ae, 0xa5, 0x22, 0x45, 0xf, 0x12, 0x5b, 0x84, 0xa5); + +/* Track param type guids */ +/* Use to get/set a DMUS_COMMAND_PARAM param in the Command track */ +DEFINE_GUID(GUID_CommandParam,0xd2ac289d, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); + +/* Use to get a DMUS_COMMAND_PARAM_2 param in the Command track */ +DEFINE_GUID(GUID_CommandParam2, 0x28f97ef7, 0x9538, 0x11d2, 0x97, 0xa9, 0x0, 0xc0, 0x4f, 0xa3, 0x6e, 0x58); + +/* Use to get/set a DMUS_COMMAND_PARAM_2 param to be used as the command following all commands in +the Command track (this information can't be saved) */ +DEFINE_GUID(GUID_CommandParamNext, 0x472afe7a, 0x281b, 0x11d3, 0x81, 0x7d, 0x0, 0xc0, 0x4f, 0xa3, 0x6e, 0x58); + +/* Use to get/set a DMUS_CHORD_PARAM param in the Chord track */ +DEFINE_GUID(GUID_ChordParam,0xd2ac289e, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); + +/* Use to get a DMUS_RHYTHM_PARAM param in the Chord track */ +DEFINE_GUID(GUID_RhythmParam,0xd2ac289f, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); + +/* Use to get/set an IDirectMusicStyle param in the Style track */ +DEFINE_GUID(GUID_IDirectMusicStyle,0xd2ac28a1, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); + +/* Use to get a DMUS_TIMESIGNATURE param in the Style and TimeSig tracks */ +DEFINE_GUID(GUID_TimeSignature,0xd2ac28a4, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); + +/* Use to get/set a DMUS_TEMPO_PARAM param in the Tempo track */ +DEFINE_GUID(GUID_TempoParam,0xd2ac28a5, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); + +/* Use to get the next valid point in a segment at which it may start */ +DEFINE_GUID(GUID_Valid_Start_Time,0x7f6b1760, 0x1fdb, 0x11d3, 0x82, 0x26, 0x44, 0x45, 0x53, 0x54, 0x0, 0x0); + +/* Use to get the next point in the currently playing primary segment at which a new segment may start */ +DEFINE_GUID(GUID_Play_Marker,0xd8761a41, 0x801a, 0x11d3, 0x9b, 0xd1, 0xda, 0xf7, 0xe1, 0xc3, 0xd8, 0x34); + +/* Use to get (GetParam) or add (SetParam) bands in the Band track */ +DEFINE_GUID(GUID_BandParam,0x2bb1938, 0xcb8b, 0x11d2, 0x8b, 0xb9, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xb6); +typedef struct _DMUS_BAND_PARAM +{ + MUSIC_TIME mtTimePhysical; /* Note: If this is a clock-time track, then this field is interpreted in the track's internal time format, which is the number of milliseconds after the beginning of playback. */ + IDirectMusicBand *pBand; +} DMUS_BAND_PARAM; + +/* Obsolete -- doesn't distinguish physical and logical time. Use GUID_BandParam instead. */ +DEFINE_GUID(GUID_IDirectMusicBand,0xd2ac28ac, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); + +/* Use to get/set an IDirectMusicChordMap param in the ChordMap track */ +DEFINE_GUID(GUID_IDirectMusicChordMap,0xd2ac28ad, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); + +/* Use to get/set a DMUS_MUTE_PARAM param in the Mute track */ +DEFINE_GUID(GUID_MuteParam,0xd2ac28af, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); + +/* These guids are used in IDirectMusicSegment::SetParam to tell the band track to perform various actions. + Some of these guids (where noted) also apply to wave tracks. + */ +/* Download bands/waves for the IDirectMusicSegment */ +DEFINE_GUID(GUID_Download,0xd2ac28a7, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); + +/* Unload bands/waves for the IDirectMusicSegment */ +DEFINE_GUID(GUID_Unload,0xd2ac28a8, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); + +/* Connect segment's bands to an IDirectMusicCollection */ +DEFINE_GUID(GUID_ConnectToDLSCollection, 0x1db1ae6b, 0xe92e, 0x11d1, 0xa8, 0xc5, 0x0, 0xc0, 0x4f, 0xa3, 0x72, 0x6e); + +/* Enable/disable autodownloading of bands/waves */ +DEFINE_GUID(GUID_Enable_Auto_Download,0xd2ac28a9, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); +DEFINE_GUID(GUID_Disable_Auto_Download,0xd2ac28aa, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); + +/* Clear all bands */ +DEFINE_GUID(GUID_Clear_All_Bands,0xd2ac28ab, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); + +/* Set segment to manage all program changes, bank selects, etc. for simple playback of a standard MIDI file */ +DEFINE_GUID(GUID_StandardMIDIFile, 0x6621075, 0xe92e, 0x11d1, 0xa8, 0xc5, 0x0, 0xc0, 0x4f, 0xa3, 0x72, 0x6e); +/* For compatibility with beta releases... */ +#define GUID_IgnoreBankSelectForGM GUID_StandardMIDIFile + +/* Disable/enable param guids. Use these in SetParam calls to disable or enable sending + * specific PMsg types. + */ +DEFINE_GUID(GUID_DisableTimeSig, 0x45fc707b, 0x1db4, 0x11d2, 0xbc, 0xac, 0x0, 0xa0, 0xc9, 0x22, 0xe6, 0xeb); +DEFINE_GUID(GUID_EnableTimeSig, 0x45fc707c, 0x1db4, 0x11d2, 0xbc, 0xac, 0x0, 0xa0, 0xc9, 0x22, 0xe6, 0xeb); +DEFINE_GUID(GUID_DisableTempo, 0x45fc707d, 0x1db4, 0x11d2, 0xbc, 0xac, 0x0, 0xa0, 0xc9, 0x22, 0xe6, 0xeb); +DEFINE_GUID(GUID_EnableTempo, 0x45fc707e, 0x1db4, 0x11d2, 0xbc, 0xac, 0x0, 0xa0, 0xc9, 0x22, 0xe6, 0xeb); + +/* Used in SetParam calls for pattern-based tracks. A nonzero value seeds the random number +generator for variation selection; a value of zero reverts to the default behavior of +getting the seed from the system clock. +*/ +DEFINE_GUID(GUID_SeedVariations, 0x65b76fa5, 0xff37, 0x11d2, 0x81, 0x4e, 0x0, 0xc0, 0x4f, 0xa3, 0x6e, 0x58); + +/* Used to get the variations currently in effect across PChannels */ +DEFINE_GUID(GUID_Variations, 0x11f72cce, 0x26e6, 0x4ecd, 0xaf, 0x2e, 0xd6, 0x68, 0xe6, 0x67, 0x7, 0xd8); +typedef struct _DMUS_VARIATIONS_PARAM +{ + DWORD dwPChannelsUsed; /* number of PChannels in use */ + DWORD* padwPChannels; /* array of PChannels in use */ + DWORD* padwVariations; /* array of variations in effect for each PChannel */ +} DMUS_VARIATIONS_PARAM; + +/* Download bands/waves for the IDirectMusicSegment, passed an IDirectMusicAudioPath instead of an IDirectMusicPerformance */ +DEFINE_GUID(GUID_DownloadToAudioPath,0x9f2c0341, 0xc5c4, 0x11d3, 0x9b, 0xd1, 0x44, 0x45, 0x53, 0x54, 0x0, 0x0); + +/* Unload bands/waves for the IDirectMusicSegment, passed an IDirectMusicAudioPath instead of an IDirectMusicPerformance */ +DEFINE_GUID(GUID_UnloadFromAudioPath,0x9f2c0342, 0xc5c4, 0x11d3, 0x9b, 0xd1, 0x44, 0x45, 0x53, 0x54, 0x0, 0x0); + + +/* Global data guids */ +DEFINE_GUID(GUID_PerfMasterTempo,0xd2ac28b0, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); +DEFINE_GUID(GUID_PerfMasterVolume,0xd2ac28b1, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); +DEFINE_GUID(GUID_PerfMasterGrooveLevel,0xd2ac28b2, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); +DEFINE_GUID(GUID_PerfAutoDownload, 0xfb09565b, 0x3631, 0x11d2, 0xbc, 0xb8, 0x0, 0xa0, 0xc9, 0x22, 0xe6, 0xeb); + +/* GUID for default GM/GS dls collection. */ +DEFINE_GUID(GUID_DefaultGMCollection, 0xf17e8673, 0xc3b4, 0x11d1, 0x87, 0xb, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); + +/* GUID to define default synth, placed in AudioPath configuration file. */ +DEFINE_GUID(GUID_Synth_Default,0x26bb9432, 0x45fe, 0x48d3, 0xa3, 0x75, 0x24, 0x72, 0xc5, 0xe3, 0xe7, 0x86); + +/* GUIDs to define default buffer configurations to place in AudioPath configuration file. */ +DEFINE_GUID(GUID_Buffer_Reverb,0x186cc541, 0xdb29, 0x11d3, 0x9b, 0xd1, 0x0, 0x80, 0xc7, 0x15, 0xa, 0x74); +DEFINE_GUID(GUID_Buffer_EnvReverb,0x186cc542, 0xdb29, 0x11d3, 0x9b, 0xd1, 0x0, 0x80, 0xc7, 0x15, 0xa, 0x74); +DEFINE_GUID(GUID_Buffer_Stereo,0x186cc545, 0xdb29, 0x11d3, 0x9b, 0xd1, 0x0, 0x80, 0xc7, 0x15, 0xa, 0x74); +DEFINE_GUID(GUID_Buffer_3D_Dry,0x186cc546, 0xdb29, 0x11d3, 0x9b, 0xd1, 0x0, 0x80, 0xc7, 0x15, 0xa, 0x74); +DEFINE_GUID(GUID_Buffer_Mono,0x186cc547, 0xdb29, 0x11d3, 0x9b, 0xd1, 0x0, 0x80, 0xc7, 0x15, 0xa, 0x74); + +/* IID's */ +DEFINE_GUID(IID_IDirectMusicLoader, 0x2ffaaca2, 0x5dca, 0x11d2, 0xaf, 0xa6, 0x0, 0xaa, 0x0, 0x24, 0xd8, 0xb6); +DEFINE_GUID(IID_IDirectMusicGetLoader,0x68a04844, 0xd13d, 0x11d1, 0xaf, 0xa6, 0x0, 0xaa, 0x0, 0x24, 0xd8, 0xb6); +DEFINE_GUID(IID_IDirectMusicObject,0xd2ac28b5, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); +DEFINE_GUID(IID_IDirectMusicSegment, 0xf96029a2, 0x4282, 0x11d2, 0x87, 0x17, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); +DEFINE_GUID(IID_IDirectMusicSegmentState, 0xa3afdcc7, 0xd3ee, 0x11d1, 0xbc, 0x8d, 0x0, 0xa0, 0xc9, 0x22, 0xe6, 0xeb); +DEFINE_GUID(IID_IDirectMusicPerformance,0x7d43d03, 0x6523, 0x11d2, 0x87, 0x1d, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); +DEFINE_GUID(IID_IDirectMusicGraph,0x2befc277, 0x5497, 0x11d2, 0xbc, 0xcb, 0x0, 0xa0, 0xc9, 0x22, 0xe6, 0xeb); +DEFINE_GUID(IID_IDirectMusicStyle,0xd2ac28bd, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); +DEFINE_GUID(IID_IDirectMusicChordMap,0xd2ac28be, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); +DEFINE_GUID(IID_IDirectMusicComposer,0xd2ac28bf, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); +DEFINE_GUID(IID_IDirectMusicBand,0xd2ac28c0, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); + +/* Alternate interface IDs, available in DX7 release and after. */ +DEFINE_GUID(IID_IDirectMusicPerformance2,0x6fc2cae0, 0xbc78, 0x11d2, 0xaf, 0xa6, 0x0, 0xaa, 0x0, 0x24, 0xd8, 0xb6); +DEFINE_GUID(IID_IDirectMusicSegment2, 0xd38894d1, 0xc052, 0x11d2, 0x87, 0x2f, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd); + +/* Interface IDs for DX8 */ +/* changed interfaces (GUID only) */ +DEFINE_GUID(IID_IDirectMusicLoader8, 0x19e7c08c, 0xa44, 0x4e6a, 0xa1, 0x16, 0x59, 0x5a, 0x7c, 0xd5, 0xde, 0x8c); +DEFINE_GUID(IID_IDirectMusicPerformance8, 0x679c4137, 0xc62e, 0x4147, 0xb2, 0xb4, 0x9d, 0x56, 0x9a, 0xcb, 0x25, 0x4c); +DEFINE_GUID(IID_IDirectMusicSegment8,0xc6784488, 0x41a3, 0x418f, 0xaa, 0x15, 0xb3, 0x50, 0x93, 0xba, 0x42, 0xd4); +DEFINE_GUID(IID_IDirectMusicSegmentState8, 0xa50e4730, 0xae4, 0x48a7, 0x98, 0x39, 0xbc, 0x4, 0xbf, 0xe0, 0x77, 0x72); +DEFINE_GUID(IID_IDirectMusicStyle8, 0xfd24ad8a, 0xa260, 0x453d, 0xbf, 0x50, 0x6f, 0x93, 0x84, 0xf7, 0x9, 0x85); +/* new interfaces (GUID + alias) */ +DEFINE_GUID(IID_IDirectMusicPatternTrack, 0x51c22e10, 0xb49f, 0x46fc, 0xbe, 0xc2, 0xe6, 0x28, 0x8f, 0xb9, 0xed, 0xe6); +#define IID_IDirectMusicPatternTrack8 IID_IDirectMusicPatternTrack +DEFINE_GUID(IID_IDirectMusicScript, 0x2252373a, 0x5814, 0x489b, 0x82, 0x9, 0x31, 0xfe, 0xde, 0xba, 0xf1, 0x37); /* {2252373A-5814-489b-8209-31FEDEBAF137} */ +#define IID_IDirectMusicScript8 IID_IDirectMusicScript +DEFINE_GUID(IID_IDirectMusicContainer, 0x9301e386, 0x1f22, 0x11d3, 0x82, 0x26, 0xd2, 0xfa, 0x76, 0x25, 0x5d, 0x47); +#define IID_IDirectMusicContainer8 IID_IDirectMusicContainer +DEFINE_GUID(IID_IDirectMusicAudioPath,0xc87631f5, 0x23be, 0x4986, 0x88, 0x36, 0x5, 0x83, 0x2f, 0xcc, 0x48, 0xf9); +#define IID_IDirectMusicAudioPath8 IID_IDirectMusicAudioPath +/* unchanged interfaces (alias only) */ +#define IID_IDirectMusicGetLoader8 IID_IDirectMusicGetLoader +#define IID_IDirectMusicChordMap8 IID_IDirectMusicChordMap +#define IID_IDirectMusicGraph8 IID_IDirectMusicGraph +#define IID_IDirectMusicBand8 IID_IDirectMusicBand +#define IID_IDirectMusicObject8 IID_IDirectMusicObject +#define IID_IDirectMusicComposer8 IID_IDirectMusicComposer + + +#ifdef __cplusplus +}; /* extern "C" */ +#endif + +#include + +#endif /* #ifndef _DMUSICI_ */ diff --git a/videoInputSrcAndDemos/libs/DShow/Include/dmusics.h b/videoInputSrcAndDemos/libs/DShow/Include/dmusics.h index f90d3b8..8f1e45d 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/dmusics.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/dmusics.h @@ -1,193 +1,193 @@ -/************************************************************************ -* * -* dmusics.h -- Definitions for created a DirectMusic software synth * -* * -* Copyright (c) Microsoft Corporation. All rights reserved. * -* * -************************************************************************/ - -#ifndef _DMUSICS_ -#define _DMUSICS_ - -#include "dmusicc.h" - -/* Software synths are enumerated from under this registry key. - */ -#define REGSTR_PATH_SOFTWARESYNTHS "Software\\Microsoft\\DirectMusic\\SoftwareSynths" - -interface IDirectMusicSynth; -interface IDirectMusicSynthSink; - -#ifndef __cplusplus -typedef interface IDirectMusicSynth IDirectMusicSynth; -typedef interface IDirectMusicSynthSink IDirectMusicSynthSink; -#endif - -#ifndef _DMUS_VOICE_STATE_DEFINED -#define _DMUS_VOICE_STATE_DEFINED - -typedef struct _DMUS_VOICE_STATE -{ - BOOL bExists; - SAMPLE_POSITION spPosition; -} DMUS_VOICE_STATE; - -#endif /* _DMUS_VOICE_STATE_DEFINED */ - -/* IDirectMusicSynth::Refresh - * - * This is the last buffer of the stream. It may be a partial block. - */ -#define REFRESH_F_LASTBUFFER 0x00000001 - -#undef INTERFACE -#define INTERFACE IDirectMusicSynth -DECLARE_INTERFACE_(IDirectMusicSynth, IUnknown) -{ - /* IUnknown */ - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - /* IDirectMusicSynth */ - STDMETHOD(Open) (THIS_ LPDMUS_PORTPARAMS pPortParams) PURE; - STDMETHOD(Close) (THIS) PURE; - STDMETHOD(SetNumChannelGroups) (THIS_ DWORD dwGroups) PURE; - STDMETHOD(Download) (THIS_ LPHANDLE phDownload, - LPVOID pvData, - LPBOOL pbFree ) PURE; - STDMETHOD(Unload) (THIS_ HANDLE hDownload, - HRESULT ( CALLBACK *lpFreeHandle)(HANDLE,HANDLE), - HANDLE hUserData ) PURE; - STDMETHOD(PlayBuffer) (THIS_ REFERENCE_TIME rt, - LPBYTE pbBuffer, - DWORD cbBuffer) PURE; - STDMETHOD(GetRunningStats) (THIS_ LPDMUS_SYNTHSTATS pStats) PURE; - STDMETHOD(GetPortCaps) (THIS_ LPDMUS_PORTCAPS pCaps) PURE; - STDMETHOD(SetMasterClock) (THIS_ IReferenceClock *pClock) PURE; - STDMETHOD(GetLatencyClock) (THIS_ IReferenceClock **ppClock) PURE; - STDMETHOD(Activate) (THIS_ BOOL fEnable) PURE; - STDMETHOD(SetSynthSink) (THIS_ IDirectMusicSynthSink *pSynthSink) PURE; - STDMETHOD(Render) (THIS_ short *pBuffer, - DWORD dwLength, - LONGLONG llPosition) PURE; - STDMETHOD(SetChannelPriority) (THIS_ DWORD dwChannelGroup, - DWORD dwChannel, - DWORD dwPriority) PURE; - STDMETHOD(GetChannelPriority) (THIS_ DWORD dwChannelGroup, - DWORD dwChannel, - LPDWORD pdwPriority) PURE; - STDMETHOD(GetFormat) (THIS_ LPWAVEFORMATEX pWaveFormatEx, - LPDWORD pdwWaveFormatExSize) PURE; - STDMETHOD(GetAppend) (THIS_ DWORD* pdwAppend) PURE; -}; - -#undef INTERFACE - -#define INTERFACE IDirectMusicSynth8 -DECLARE_INTERFACE_(IDirectMusicSynth8, IDirectMusicSynth) -{ - /* IUnknown */ - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - /* IDirectMusicSynth */ - STDMETHOD(Open) (THIS_ LPDMUS_PORTPARAMS pPortParams) PURE; - STDMETHOD(Close) (THIS) PURE; - STDMETHOD(SetNumChannelGroups) (THIS_ DWORD dwGroups) PURE; - STDMETHOD(Download) (THIS_ LPHANDLE phDownload, - LPVOID pvData, - LPBOOL pbFree ) PURE; - STDMETHOD(Unload) (THIS_ HANDLE hDownload, - HRESULT ( CALLBACK *lpFreeHandle)(HANDLE,HANDLE), - HANDLE hUserData ) PURE; - STDMETHOD(PlayBuffer) (THIS_ REFERENCE_TIME rt, - LPBYTE pbBuffer, - DWORD cbBuffer) PURE; - STDMETHOD(GetRunningStats) (THIS_ LPDMUS_SYNTHSTATS pStats) PURE; - STDMETHOD(GetPortCaps) (THIS_ LPDMUS_PORTCAPS pCaps) PURE; - STDMETHOD(SetMasterClock) (THIS_ IReferenceClock *pClock) PURE; - STDMETHOD(GetLatencyClock) (THIS_ IReferenceClock **ppClock) PURE; - STDMETHOD(Activate) (THIS_ BOOL fEnable) PURE; - STDMETHOD(SetSynthSink) (THIS_ IDirectMusicSynthSink *pSynthSink) PURE; - STDMETHOD(Render) (THIS_ short *pBuffer, - DWORD dwLength, - LONGLONG llPosition) PURE; - STDMETHOD(SetChannelPriority) (THIS_ DWORD dwChannelGroup, - DWORD dwChannel, - DWORD dwPriority) PURE; - STDMETHOD(GetChannelPriority) (THIS_ DWORD dwChannelGroup, - DWORD dwChannel, - LPDWORD pdwPriority) PURE; - STDMETHOD(GetFormat) (THIS_ LPWAVEFORMATEX pWaveFormatEx, - LPDWORD pdwWaveFormatExSize) PURE; - STDMETHOD(GetAppend) (THIS_ DWORD* pdwAppend) PURE; - - /* IDirectMusicSynth8 */ - STDMETHOD(PlayVoice) (THIS_ REFERENCE_TIME rt, - DWORD dwVoiceId, - DWORD dwChannelGroup, - DWORD dwChannel, - DWORD dwDLId, - long prPitch, /* PREL not defined here */ - long vrVolume, /* VREL not defined here */ - SAMPLE_TIME stVoiceStart, - SAMPLE_TIME stLoopStart, - SAMPLE_TIME stLoopEnd) PURE; - - STDMETHOD(StopVoice) (THIS_ REFERENCE_TIME rt, - DWORD dwVoiceId ) PURE; - - STDMETHOD(GetVoiceState) (THIS_ DWORD dwVoice[], - DWORD cbVoice, - DMUS_VOICE_STATE dwVoiceState[] ) PURE; - STDMETHOD(Refresh) (THIS_ DWORD dwDownloadID, - DWORD dwFlags) PURE; - STDMETHOD(AssignChannelToBuses) (THIS_ DWORD dwChannelGroup, - DWORD dwChannel, - LPDWORD pdwBuses, - DWORD cBuses) PURE; -}; - -#undef INTERFACE -#define INTERFACE IDirectMusicSynthSink -DECLARE_INTERFACE_(IDirectMusicSynthSink, IUnknown) -{ - /* IUnknown */ - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - /* IDirectMusicSynthSink */ - STDMETHOD(Init) (THIS_ IDirectMusicSynth *pSynth) PURE; - STDMETHOD(SetMasterClock) (THIS_ IReferenceClock *pClock) PURE; - STDMETHOD(GetLatencyClock) (THIS_ IReferenceClock **ppClock) PURE; - STDMETHOD(Activate) (THIS_ BOOL fEnable) PURE; - STDMETHOD(SampleToRefTime) (THIS_ LONGLONG llSampleTime, - REFERENCE_TIME *prfTime) PURE; - STDMETHOD(RefTimeToSample) (THIS_ REFERENCE_TIME rfTime, - LONGLONG *pllSampleTime) PURE; - STDMETHOD(SetDirectSound) (THIS_ LPDIRECTSOUND pDirectSound, - LPDIRECTSOUNDBUFFER pDirectSoundBuffer) PURE; - STDMETHOD(GetDesiredBufferSize) (THIS_ LPDWORD pdwBufferSizeInSamples) PURE; -}; - -DEFINE_GUID(IID_IDirectMusicSynth, 0x9823661, 0x5c85, 0x11d2, 0xaf, 0xa6, 0x0, 0xaa, 0x0, 0x24, 0xd8, 0xb6); -DEFINE_GUID(IID_IDirectMusicSynth8,0x53cab625, 0x2711, 0x4c9f, 0x9d, 0xe7, 0x1b, 0x7f, 0x92, 0x5f, 0x6f, 0xc8); -DEFINE_GUID(IID_IDirectMusicSynthSink,0x9823663, 0x5c85, 0x11d2, 0xaf, 0xa6, 0x0, 0xaa, 0x0, 0x24, 0xd8, 0xb6); - -/* Property Set GUID_DMUS_PROP_SetSynthSink - * - * Item 0: An IUnknown on which the port can QueryInterface for a user-mode synth sink. - */ -DEFINE_GUID(GUID_DMUS_PROP_SetSynthSink,0x0a3a5ba5, 0x37b6, 0x11d2, 0xb9, 0xf9, 0x00, 0x00, 0xf8, 0x75, 0xac, 0x12); - -/* Property Set GUID_DMUS_PROP_SinkUsesDSound - * - * Item 0: A DWORD boolean indicating whether or not the sink requires an IDirectSound interface. The - * default is FALSE if this property item is not implemented by the sink. - */ -DEFINE_GUID(GUID_DMUS_PROP_SinkUsesDSound, 0xbe208857, 0x8952, 0x11d2, 0xba, 0x1c, 0x00, 0x00, 0xf8, 0x75, 0xac, 0x12); - -#endif +/************************************************************************ +* * +* dmusics.h -- Definitions for created a DirectMusic software synth * +* * +* Copyright (c) Microsoft Corporation. All rights reserved. * +* * +************************************************************************/ + +#ifndef _DMUSICS_ +#define _DMUSICS_ + +#include "dmusicc.h" + +/* Software synths are enumerated from under this registry key. + */ +#define REGSTR_PATH_SOFTWARESYNTHS "Software\\Microsoft\\DirectMusic\\SoftwareSynths" + +interface IDirectMusicSynth; +interface IDirectMusicSynthSink; + +#ifndef __cplusplus +typedef interface IDirectMusicSynth IDirectMusicSynth; +typedef interface IDirectMusicSynthSink IDirectMusicSynthSink; +#endif + +#ifndef _DMUS_VOICE_STATE_DEFINED +#define _DMUS_VOICE_STATE_DEFINED + +typedef struct _DMUS_VOICE_STATE +{ + BOOL bExists; + SAMPLE_POSITION spPosition; +} DMUS_VOICE_STATE; + +#endif /* _DMUS_VOICE_STATE_DEFINED */ + +/* IDirectMusicSynth::Refresh + * + * This is the last buffer of the stream. It may be a partial block. + */ +#define REFRESH_F_LASTBUFFER 0x00000001 + +#undef INTERFACE +#define INTERFACE IDirectMusicSynth +DECLARE_INTERFACE_(IDirectMusicSynth, IUnknown) +{ + /* IUnknown */ + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + /* IDirectMusicSynth */ + STDMETHOD(Open) (THIS_ LPDMUS_PORTPARAMS pPortParams) PURE; + STDMETHOD(Close) (THIS) PURE; + STDMETHOD(SetNumChannelGroups) (THIS_ DWORD dwGroups) PURE; + STDMETHOD(Download) (THIS_ LPHANDLE phDownload, + LPVOID pvData, + LPBOOL pbFree ) PURE; + STDMETHOD(Unload) (THIS_ HANDLE hDownload, + HRESULT ( CALLBACK *lpFreeHandle)(HANDLE,HANDLE), + HANDLE hUserData ) PURE; + STDMETHOD(PlayBuffer) (THIS_ REFERENCE_TIME rt, + LPBYTE pbBuffer, + DWORD cbBuffer) PURE; + STDMETHOD(GetRunningStats) (THIS_ LPDMUS_SYNTHSTATS pStats) PURE; + STDMETHOD(GetPortCaps) (THIS_ LPDMUS_PORTCAPS pCaps) PURE; + STDMETHOD(SetMasterClock) (THIS_ IReferenceClock *pClock) PURE; + STDMETHOD(GetLatencyClock) (THIS_ IReferenceClock **ppClock) PURE; + STDMETHOD(Activate) (THIS_ BOOL fEnable) PURE; + STDMETHOD(SetSynthSink) (THIS_ IDirectMusicSynthSink *pSynthSink) PURE; + STDMETHOD(Render) (THIS_ short *pBuffer, + DWORD dwLength, + LONGLONG llPosition) PURE; + STDMETHOD(SetChannelPriority) (THIS_ DWORD dwChannelGroup, + DWORD dwChannel, + DWORD dwPriority) PURE; + STDMETHOD(GetChannelPriority) (THIS_ DWORD dwChannelGroup, + DWORD dwChannel, + LPDWORD pdwPriority) PURE; + STDMETHOD(GetFormat) (THIS_ LPWAVEFORMATEX pWaveFormatEx, + LPDWORD pdwWaveFormatExSize) PURE; + STDMETHOD(GetAppend) (THIS_ DWORD* pdwAppend) PURE; +}; + +#undef INTERFACE + +#define INTERFACE IDirectMusicSynth8 +DECLARE_INTERFACE_(IDirectMusicSynth8, IDirectMusicSynth) +{ + /* IUnknown */ + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + /* IDirectMusicSynth */ + STDMETHOD(Open) (THIS_ LPDMUS_PORTPARAMS pPortParams) PURE; + STDMETHOD(Close) (THIS) PURE; + STDMETHOD(SetNumChannelGroups) (THIS_ DWORD dwGroups) PURE; + STDMETHOD(Download) (THIS_ LPHANDLE phDownload, + LPVOID pvData, + LPBOOL pbFree ) PURE; + STDMETHOD(Unload) (THIS_ HANDLE hDownload, + HRESULT ( CALLBACK *lpFreeHandle)(HANDLE,HANDLE), + HANDLE hUserData ) PURE; + STDMETHOD(PlayBuffer) (THIS_ REFERENCE_TIME rt, + LPBYTE pbBuffer, + DWORD cbBuffer) PURE; + STDMETHOD(GetRunningStats) (THIS_ LPDMUS_SYNTHSTATS pStats) PURE; + STDMETHOD(GetPortCaps) (THIS_ LPDMUS_PORTCAPS pCaps) PURE; + STDMETHOD(SetMasterClock) (THIS_ IReferenceClock *pClock) PURE; + STDMETHOD(GetLatencyClock) (THIS_ IReferenceClock **ppClock) PURE; + STDMETHOD(Activate) (THIS_ BOOL fEnable) PURE; + STDMETHOD(SetSynthSink) (THIS_ IDirectMusicSynthSink *pSynthSink) PURE; + STDMETHOD(Render) (THIS_ short *pBuffer, + DWORD dwLength, + LONGLONG llPosition) PURE; + STDMETHOD(SetChannelPriority) (THIS_ DWORD dwChannelGroup, + DWORD dwChannel, + DWORD dwPriority) PURE; + STDMETHOD(GetChannelPriority) (THIS_ DWORD dwChannelGroup, + DWORD dwChannel, + LPDWORD pdwPriority) PURE; + STDMETHOD(GetFormat) (THIS_ LPWAVEFORMATEX pWaveFormatEx, + LPDWORD pdwWaveFormatExSize) PURE; + STDMETHOD(GetAppend) (THIS_ DWORD* pdwAppend) PURE; + + /* IDirectMusicSynth8 */ + STDMETHOD(PlayVoice) (THIS_ REFERENCE_TIME rt, + DWORD dwVoiceId, + DWORD dwChannelGroup, + DWORD dwChannel, + DWORD dwDLId, + long prPitch, /* PREL not defined here */ + long vrVolume, /* VREL not defined here */ + SAMPLE_TIME stVoiceStart, + SAMPLE_TIME stLoopStart, + SAMPLE_TIME stLoopEnd) PURE; + + STDMETHOD(StopVoice) (THIS_ REFERENCE_TIME rt, + DWORD dwVoiceId ) PURE; + + STDMETHOD(GetVoiceState) (THIS_ DWORD dwVoice[], + DWORD cbVoice, + DMUS_VOICE_STATE dwVoiceState[] ) PURE; + STDMETHOD(Refresh) (THIS_ DWORD dwDownloadID, + DWORD dwFlags) PURE; + STDMETHOD(AssignChannelToBuses) (THIS_ DWORD dwChannelGroup, + DWORD dwChannel, + LPDWORD pdwBuses, + DWORD cBuses) PURE; +}; + +#undef INTERFACE +#define INTERFACE IDirectMusicSynthSink +DECLARE_INTERFACE_(IDirectMusicSynthSink, IUnknown) +{ + /* IUnknown */ + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + /* IDirectMusicSynthSink */ + STDMETHOD(Init) (THIS_ IDirectMusicSynth *pSynth) PURE; + STDMETHOD(SetMasterClock) (THIS_ IReferenceClock *pClock) PURE; + STDMETHOD(GetLatencyClock) (THIS_ IReferenceClock **ppClock) PURE; + STDMETHOD(Activate) (THIS_ BOOL fEnable) PURE; + STDMETHOD(SampleToRefTime) (THIS_ LONGLONG llSampleTime, + REFERENCE_TIME *prfTime) PURE; + STDMETHOD(RefTimeToSample) (THIS_ REFERENCE_TIME rfTime, + LONGLONG *pllSampleTime) PURE; + STDMETHOD(SetDirectSound) (THIS_ LPDIRECTSOUND pDirectSound, + LPDIRECTSOUNDBUFFER pDirectSoundBuffer) PURE; + STDMETHOD(GetDesiredBufferSize) (THIS_ LPDWORD pdwBufferSizeInSamples) PURE; +}; + +DEFINE_GUID(IID_IDirectMusicSynth, 0x9823661, 0x5c85, 0x11d2, 0xaf, 0xa6, 0x0, 0xaa, 0x0, 0x24, 0xd8, 0xb6); +DEFINE_GUID(IID_IDirectMusicSynth8,0x53cab625, 0x2711, 0x4c9f, 0x9d, 0xe7, 0x1b, 0x7f, 0x92, 0x5f, 0x6f, 0xc8); +DEFINE_GUID(IID_IDirectMusicSynthSink,0x9823663, 0x5c85, 0x11d2, 0xaf, 0xa6, 0x0, 0xaa, 0x0, 0x24, 0xd8, 0xb6); + +/* Property Set GUID_DMUS_PROP_SetSynthSink + * + * Item 0: An IUnknown on which the port can QueryInterface for a user-mode synth sink. + */ +DEFINE_GUID(GUID_DMUS_PROP_SetSynthSink,0x0a3a5ba5, 0x37b6, 0x11d2, 0xb9, 0xf9, 0x00, 0x00, 0xf8, 0x75, 0xac, 0x12); + +/* Property Set GUID_DMUS_PROP_SinkUsesDSound + * + * Item 0: A DWORD boolean indicating whether or not the sink requires an IDirectSound interface. The + * default is FALSE if this property item is not implemented by the sink. + */ +DEFINE_GUID(GUID_DMUS_PROP_SinkUsesDSound, 0xbe208857, 0x8952, 0x11d2, 0xba, 0x1c, 0x00, 0x00, 0xf8, 0x75, 0xac, 0x12); + +#endif diff --git a/videoInputSrcAndDemos/libs/DShow/Include/dpaddr.h b/videoInputSrcAndDemos/libs/DShow/Include/dpaddr.h index f5097f4..6e3fccf 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/dpaddr.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/dpaddr.h @@ -1,392 +1,392 @@ -/*==========================================================================; - * - * Copyright (C) 2000-2002 Microsoft Corporation. All Rights Reserved. - * - * File: dpaddr.h - * Content: DirectPlayAddress include file - ***************************************************************************/ - -#ifndef __DIRECTPLAYADDRESS__ -#define __DIRECTPLAYADDRESS__ - -#include // for DECLARE_INTERFACE_ and HRESULT - -#ifdef __cplusplus -extern "C" { -#endif - -#include "dplay8.h" - - - -/**************************************************************************** - * - * DirectPlay8Address CLSIDs - * - ****************************************************************************/ - -// {934A9523-A3CA-4bc5-ADA0-D6D95D979421} -DEFINE_GUID(CLSID_DirectPlay8Address, -0x934a9523, 0xa3ca, 0x4bc5, 0xad, 0xa0, 0xd6, 0xd9, 0x5d, 0x97, 0x94, 0x21); - - -/**************************************************************************** - * - * DirectPlay8Address Interface IIDs - * - ****************************************************************************/ - - -typedef REFIID DPNAREFIID; - -// {83783300-4063-4c8a-9DB3-82830A7FEB31} -DEFINE_GUID(IID_IDirectPlay8Address, -0x83783300, 0x4063, 0x4c8a, 0x9d, 0xb3, 0x82, 0x83, 0xa, 0x7f, 0xeb, 0x31); - -// {E5A0E990-2BAD-430b-87DA-A142CF75DE58} -DEFINE_GUID(IID_IDirectPlay8AddressIP, -0xe5a0e990, 0x2bad, 0x430b, 0x87, 0xda, 0xa1, 0x42, 0xcf, 0x75, 0xde, 0x58); - - - -/**************************************************************************** - * - * DirectPlay8Address Interface Pointer definitions - * - ****************************************************************************/ - -typedef struct IDirectPlay8Address *PDIRECTPLAY8ADDRESS, *LPDIRECTPLAY8ADDRESS; -typedef struct IDirectPlay8AddressIP *PDIRECTPLAY8ADDRESSIP, *LPDIRECTPLAY8ADDRESSIP; - - -/**************************************************************************** - * - * DirectPlay8Address Forward Declarations For External Types - * - ****************************************************************************/ - -typedef struct sockaddr SOCKADDR; - -/**************************************************************************** - * - * DirectPlay8Address Constants - * - ****************************************************************************/ -// -// Asynchronous operation flags -// -#define DPNA_DATATYPE_STRING 0x00000001 -#define DPNA_DATATYPE_DWORD 0x00000002 -#define DPNA_DATATYPE_GUID 0x00000003 -#define DPNA_DATATYPE_BINARY 0x00000004 -#define DPNA_DATATYPE_STRING_ANSI 0x00000005 - -#define DPNA_DPNSVR_PORT 6073 - -#define DPNA_INDEX_INVALID 0xFFFFFFFF - -/**************************************************************************** - * - * DirectPlay8Address Address Elements - * - ****************************************************************************/ - -#define DPNA_SEPARATOR_KEYVALUE L'=' -#define DPNA_SEPARATOR_USERDATA L'#' -#define DPNA_SEPARATOR_COMPONENT L';' -#define DPNA_ESCAPECHAR L'%' - -// Header -#define DPNA_HEADER L"x-directplay:/" - -// key names for address components -#define DPNA_KEY_NAT_RESOLVER L"natresolver" -#define DPNA_KEY_NAT_RESOLVER_USER_STRING L"natresolveruserstring" -#define DPNA_KEY_APPLICATION_INSTANCE L"applicationinstance" -#define DPNA_KEY_DEVICE L"device" -#define DPNA_KEY_HOSTNAME L"hostname" -#define DPNA_KEY_PORT L"port" -#define DPNA_KEY_NAMEINFO L"nameinfo" -#define DPNA_KEY_PROCESSOR L"processor" -#define DPNA_KEY_PROGRAM L"program" -#define DPNA_KEY_PROVIDER L"provider" -#define DPNA_KEY_SCOPE L"scope" -#define DPNA_KEY_TRAVERSALMODE L"traversalmode" -#define DPNA_KEY_BAUD L"baud" -#define DPNA_KEY_FLOWCONTROL L"flowcontrol" -#define DPNA_KEY_PARITY L"parity" -#define DPNA_KEY_PHONENUMBER L"phonenumber" -#define DPNA_KEY_STOPBITS L"stopbits" - -// values for baud rate -#define DPNA_BAUD_RATE_9600 9600 -#define DPNA_BAUD_RATE_14400 14400 -#define DPNA_BAUD_RATE_19200 19200 -#define DPNA_BAUD_RATE_38400 38400 -#define DPNA_BAUD_RATE_56000 56000 -#define DPNA_BAUD_RATE_57600 57600 -#define DPNA_BAUD_RATE_115200 115200 - -// values for stop bits -#define DPNA_STOP_BITS_ONE L"1" -#define DPNA_STOP_BITS_ONE_FIVE L"1.5" -#define DPNA_STOP_BITS_TWO L"2" - -// values for parity -#define DPNA_PARITY_NONE L"NONE" -#define DPNA_PARITY_EVEN L"EVEN" -#define DPNA_PARITY_ODD L"ODD" -#define DPNA_PARITY_MARK L"MARK" -#define DPNA_PARITY_SPACE L"SPACE" - -// values for flow control -#define DPNA_FLOW_CONTROL_NONE L"NONE" -#define DPNA_FLOW_CONTROL_XONXOFF L"XONXOFF" -#define DPNA_FLOW_CONTROL_RTS L"RTS" -#define DPNA_FLOW_CONTROL_DTR L"DTR" -#define DPNA_FLOW_CONTROL_RTSDTR L"RTSDTR" -// values for traversal mode -#define DPNA_TRAVERSALMODE_NONE 0 -#define DPNA_TRAVERSALMODE_PORTREQUIRED 1 -#define DPNA_TRAVERSALMODE_PORTRECOMMENDED 2 -// Shortcut values -// -// These can be used instead of the corresponding CLSID_DP8SP_XXXX guids -// -#define DPNA_VALUE_TCPIPPROVIDER L"IP" -#define DPNA_VALUE_IPXPROVIDER L"IPX" -#define DPNA_VALUE_MODEMPROVIDER L"MODEM" -#define DPNA_VALUE_SERIALPROVIDER L"SERIAL" - -//// ANSI DEFINITIONS - -// Header -#define DPNA_HEADER_A "x-directplay:/" -#define DPNA_SEPARATOR_KEYVALUE_A '=' -#define DPNA_SEPARATOR_USERDATA_A '#' -#define DPNA_SEPARATOR_COMPONENT_A ';' -#define DPNA_ESCAPECHAR_A '%' - -// key names for address components -#define DPNA_KEY_NAT_RESOLVER_A "natresolver" -#define DPNA_KEY_NAT_RESOLVER_USER_STRING_A "natresolveruserstring" -#define DPNA_KEY_APPLICATION_INSTANCE_A "applicationinstance" -#define DPNA_KEY_DEVICE_A "device" -#define DPNA_KEY_HOSTNAME_A "hostname" -#define DPNA_KEY_PORT_A "port" -#define DPNA_KEY_NAMEINFO_A "nameinfo" -#define DPNA_KEY_PROCESSOR_A "processor" -#define DPNA_KEY_PROGRAM_A "program" -#define DPNA_KEY_PROVIDER_A "provider" -#define DPNA_KEY_SCOPE_A "scope" -#define DPNA_KEY_TRAVERSALMODE_A "traversalmode" -#define DPNA_KEY_BAUD_A "baud" -#define DPNA_KEY_FLOWCONTROL_A "flowcontrol" -#define DPNA_KEY_PARITY_A "parity" -#define DPNA_KEY_PHONENUMBER_A "phonenumber" -#define DPNA_KEY_STOPBITS_A "stopbits" - -// values for stop bits -#define DPNA_STOP_BITS_ONE_A "1" -#define DPNA_STOP_BITS_ONE_FIVE_A "1.5" -#define DPNA_STOP_BITS_TWO_A "2" - -// values for parity -#define DPNA_PARITY_NONE_A "NONE" -#define DPNA_PARITY_EVEN_A "EVEN" -#define DPNA_PARITY_ODD_A "ODD" -#define DPNA_PARITY_MARK_A "MARK" -#define DPNA_PARITY_SPACE_A "SPACE" - -// values for flow control -#define DPNA_FLOW_CONTROL_NONE_A "NONE" -#define DPNA_FLOW_CONTROL_XONXOFF_A "XONXOFF" -#define DPNA_FLOW_CONTROL_RTS_A "RTS" -#define DPNA_FLOW_CONTROL_DTR_A "DTR" -#define DPNA_FLOW_CONTROL_RTSDTR_A "RTSDTR" -// Shortcut values -// -// These can be used instead of the corresponding CLSID_DP8SP_XXXX guids -// -#define DPNA_VALUE_TCPIPPROVIDER_A "IP" -#define DPNA_VALUE_IPXPROVIDER_A "IPX" -#define DPNA_VALUE_MODEMPROVIDER_A "MODEM" -#define DPNA_VALUE_SERIALPROVIDER_A "SERIAL" - -/**************************************************************************** - * - * DirectPlay8Address Functions - * - ****************************************************************************/ - - -/* - * - * This function is no longer supported. It is recommended that CoCreateInstance be used to create - * DirectPlay8 address objects. - * - * HRESULT WINAPI DirectPlay8AddressCreate( const GUID * pcIID, void **ppvInterface, IUnknown *pUnknown); - * - */ - - -/**************************************************************************** - * - * DirectPlay8Address Application Interfaces - * - ****************************************************************************/ - -// -// COM definition for IDirectPlay8Address Generic Interface -// -#undef INTERFACE // External COM Implementation -#define INTERFACE IDirectPlay8Address -DECLARE_INTERFACE_(IDirectPlay8Address,IUnknown) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface) (THIS_ DPNAREFIID, LPVOID *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - /*** IDirectPlay8Address methods ***/ - STDMETHOD(BuildFromURLW)(THIS_ WCHAR *pwszSourceURL ) PURE; - STDMETHOD(BuildFromURLA)(THIS_ CHAR *pszSourceURL ) PURE; - STDMETHOD(Duplicate)(THIS_ PDIRECTPLAY8ADDRESS *ppdpaNewAddress ) PURE; - STDMETHOD(SetEqual)(THIS_ PDIRECTPLAY8ADDRESS pdpaAddress ) PURE; - STDMETHOD(IsEqual)(THIS_ PDIRECTPLAY8ADDRESS pdpaAddress ) PURE; - STDMETHOD(Clear)(THIS ) PURE; - STDMETHOD(GetURLW)(THIS_ WCHAR *pwszURL, PDWORD pdwNumChars ) PURE; - STDMETHOD(GetURLA)(THIS_ CHAR *pszURL, PDWORD pdwNumChars) PURE; - STDMETHOD(GetSP)(THIS_ GUID *pguidSP ) PURE; - STDMETHOD(GetUserData)(THIS_ void *pvUserData, PDWORD pdwBufferSize) PURE; - STDMETHOD(SetSP)(THIS_ const GUID * const pguidSP ) PURE; - STDMETHOD(SetUserData)(THIS_ const void * const pvUserData, const DWORD dwDataSize) PURE; - STDMETHOD(GetNumComponents)(THIS_ PDWORD pdwNumComponents ) PURE; - STDMETHOD(GetComponentByName)(THIS_ const WCHAR * const pwszName, void *pvBuffer, PDWORD pdwBufferSize, PDWORD pdwDataType ) PURE; - STDMETHOD(GetComponentByIndex)(THIS_ const DWORD dwComponentID, WCHAR * pwszName, PDWORD pdwNameLen, void *pvBuffer, PDWORD pdwBufferSize, PDWORD pdwDataType ) PURE; - STDMETHOD(AddComponent)(THIS_ const WCHAR * const pwszName, const void * const lpvData, const DWORD dwDataSize, const DWORD dwDataType ) PURE; - STDMETHOD(GetDevice)(THIS_ GUID * ) PURE; - STDMETHOD(SetDevice)(THIS_ const GUID * const) PURE; - STDMETHOD(BuildFromDPADDRESS)( THIS_ LPVOID pvAddress, DWORD dwDataSize ) PURE; -}; - -// -// COM definition for IDirectPlay8AddressIP Generic Interface -// -#undef INTERFACE // External COM Implementation -#define INTERFACE IDirectPlay8AddressIP -DECLARE_INTERFACE_(IDirectPlay8AddressIP,IUnknown) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface) (THIS_ DPNAREFIID, PVOID *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - /*** IDirectPlay8AddressIP methods ***/ - - // Constructs a IDirectPlay8 TCP Address from a SOCKADDR structure - STDMETHOD(BuildFromSockAddr)(THIS_ const SOCKADDR * const ) PURE; - - // Constructs a TCP Address from a string (hostname) and port - STDMETHOD(BuildAddress)(THIS_ const WCHAR * const wszAddress, const USHORT usPort ) PURE; - - // Builds a local TCP Address - STDMETHOD(BuildLocalAddress)(THIS_ const GUID * const pguidAdapter, const USHORT usPort ) PURE; - - // Gets the address from the structure in SOCKADR format - STDMETHOD(GetSockAddress)(THIS_ SOCKADDR *, PDWORD ) PURE; - - // Gets the local afddress - STDMETHOD(GetLocalAddress)(THIS_ GUID *pguidAdapter, USHORT *pusPort ) PURE; - - // Gets the remote address - STDMETHOD(GetAddress)(THIS_ WCHAR *wszAddress, PDWORD pdwAddressLength, USHORT *psPort ) PURE; -}; - - -/**************************************************************************** - * - * IDirectPlay8 application interface macros - * - ****************************************************************************/ - -#if !defined(__cplusplus) || defined(CINTERFACE) - -#define IDirectPlay8Address_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IDirectPlay8Address_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDirectPlay8Address_Release(p) (p)->lpVtbl->Release(p) -#define IDirectPlay8Address_BuildFromURLW(p,a) (p)->lpVtbl->BuildFromURLW(p,a) -#define IDirectPlay8Address_BuildFromURLA(p,a) (p)->lpVtbl->BuildFromURLA(p,a) -#define IDirectPlay8Address_Duplicate(p,a) (p)->lpVtbl->Duplicate(p,a) -#define IDirectPlay8Address_SetEqual(p,a) (p)->lpVtbl->SetEqual(p,a) -#define IDirectPlay8Address_IsEqual(p,a) (p)->lpVtbl->IsEqual(p,a) -#define IDirectPlay8Address_Clear(p) (p)->lpVtbl->Clear(p) -#define IDirectPlay8Address_GetURLW(p,a,b) (p)->lpVtbl->GetURLW(p,a,b) -#define IDirectPlay8Address_GetURLA(p,a,b) (p)->lpVtbl->GetURLA(p,a,b) -#define IDirectPlay8Address_GetSP(p,a) (p)->lpVtbl->GetSP(p,a) -#define IDirectPlay8Address_GetUserData(p,a,b) (p)->lpVtbl->GetUserData(p,a,b) -#define IDirectPlay8Address_SetSP(p,a) (p)->lpVtbl->SetSP(p,a) -#define IDirectPlay8Address_SetUserData(p,a,b) (p)->lpVtbl->SetUserData(p,a,b) -#define IDirectPlay8Address_GetNumComponents(p,a) (p)->lpVtbl->GetNumComponents(p,a) -#define IDirectPlay8Address_GetComponentByName(p,a,b,c,d) (p)->lpVtbl->GetComponentByName(p,a,b,c,d) -#define IDirectPlay8Address_GetComponentByIndex(p,a,b,c,d,e,f) (p)->lpVtbl->GetComponentByIndex(p,a,b,c,d,e,f) -#define IDirectPlay8Address_AddComponent(p,a,b,c,d) (p)->lpVtbl->AddComponent(p,a,b,c,d) -#define IDirectPlay8Address_SetDevice(p,a) (p)->lpVtbl->SetDevice(p,a) -#define IDirectPlay8Address_GetDevice(p,a) (p)->lpVtbl->GetDevice(p,a) -#define IDirectPlay8Address_BuildFromDirectPlay4Address(p,a,b) (p)->lpVtbl->BuildFromDirectPlay4Address(p,a,b) - -#define IDirectPlay8AddressIP_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IDirectPlay8AddressIP_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDirectPlay8AddressIP_Release(p) (p)->lpVtbl->Release(p) -#define IDirectPlay8AddressIP_BuildFromSockAddr(p,a) (p)->lpVtbl->BuildFromSockAddr(p,a) -#define IDirectPlay8AddressIP_BuildAddress(p,a,b) (p)->lpVtbl->BuildAddress(p,a,b) -#define IDirectPlay8AddressIP_BuildLocalAddress(p,a,b) (p)->lpVtbl->BuildLocalAddress(p,a,b) -#define IDirectPlay8AddressIP_GetSockAddress(p,a,b) (p)->lpVtbl->GetSockAddress(p,a,b) -#define IDirectPlay8AddressIP_GetLocalAddress(p,a,b) (p)->lpVtbl->GetLocalAddress(p,a,b) -#define IDirectPlay8AddressIP_GetAddress(p,a,b,c) (p)->lpVtbl->GetAddress(p,a,b,c) - -#else /* C++ */ - -#define IDirectPlay8Address_QueryInterface(p,a,b) (p)->QueryInterface(a,b) -#define IDirectPlay8Address_AddRef(p) (p)->AddRef() -#define IDirectPlay8Address_Release(p) (p)->Release() -#define IDirectPlay8Address_BuildFromURLW(p,a) (p)->BuildFromURLW(a) -#define IDirectPlay8Address_BuildFromURLA(p,a) (p)->BuildFromURLA(a) -#define IDirectPlay8Address_Duplicate(p,a) (p)->Duplicate(a) -#define IDirectPlay8Address_SetEqual(p,a) (p)->SetEqual(a) -#define IDirectPlay8Address_IsEqual(p,a) (p)->IsEqual(a) -#define IDirectPlay8Address_Clear(p) (p)->Clear() -#define IDirectPlay8Address_GetURLW(p,a,b) (p)->GetURLW(a,b) -#define IDirectPlay8Address_GetURLA(p,a,b) (p)->GetURLA(a,b) -#define IDirectPlay8Address_GetSP(p,a) (p)->GetSP(a) -#define IDirectPlay8Address_GetUserData(p,a,b) (p)->GetUserData(a,b) -#define IDirectPlay8Address_SetSP(p,a) (p)->SetSP(a) -#define IDirectPlay8Address_SetUserData(p,a,b) (p)->SetUserData(a,b) -#define IDirectPlay8Address_GetNumComponents(p,a) (p)->GetNumComponents(a) -#define IDirectPlay8Address_GetComponentByName(p,a,b,c,d) (p)->GetComponentByName(a,b,c,d) -#define IDirectPlay8Address_GetComponentByIndex(p,a,b,c,d,e,f) (p)->GetComponentByIndex(a,b,c,d,e,f) -#define IDirectPlay8Address_AddComponent(p,a,b,c,d) (p)->AddComponent(a,b,c,d) -#define IDirectPlay8Address_SetDevice(p,a) (p)->SetDevice(a) -#define IDirectPlay8Address_GetDevice(p,a) (p)->GetDevice(a) -#define IDirectPlay8Address_BuildFromDirectPlay4Address(p,a,b) (p)->BuildFromDirectPlay4Address(a,b) - -#define IDirectPlay8AddressIP_QueryInterface(p,a,b) (p)->QueryInterface(a,b) -#define IDirectPlay8AddressIP_AddRef(p) (p)->AddRef() -#define IDirectPlay8AddressIP_Release(p) (p)->Release() -#define IDirectPlay8AddressIP_BuildFromSockAddr(p,a) (p)->BuildFromSockAddr(a) -#define IDirectPlay8AddressIP_BuildAddress(p,a,b) (p)->BuildAddress(a,b) -#define IDirectPlay8AddressIP_BuildLocalAddress(p,a,b) (p)->BuildLocalAddress(a,b) -#define IDirectPlay8AddressIP_GetSockAddress(p,a,b) (p)->GetSockAddress(a,b) -#define IDirectPlay8AddressIP_GetLocalAddress(p,a,b) (p)->GetLocalAddress(a,b) -#define IDirectPlay8AddressIP_GetAddress(p,a,b,c) (p)->GetAddress(a,b,c) - -#endif - - -#ifdef __cplusplus -} -#endif - -#endif - - +/*==========================================================================; + * + * Copyright (C) 2000-2002 Microsoft Corporation. All Rights Reserved. + * + * File: dpaddr.h + * Content: DirectPlayAddress include file + ***************************************************************************/ + +#ifndef __DIRECTPLAYADDRESS__ +#define __DIRECTPLAYADDRESS__ + +#include // for DECLARE_INTERFACE_ and HRESULT + +#ifdef __cplusplus +extern "C" { +#endif + +#include "dplay8.h" + + + +/**************************************************************************** + * + * DirectPlay8Address CLSIDs + * + ****************************************************************************/ + +// {934A9523-A3CA-4bc5-ADA0-D6D95D979421} +DEFINE_GUID(CLSID_DirectPlay8Address, +0x934a9523, 0xa3ca, 0x4bc5, 0xad, 0xa0, 0xd6, 0xd9, 0x5d, 0x97, 0x94, 0x21); + + +/**************************************************************************** + * + * DirectPlay8Address Interface IIDs + * + ****************************************************************************/ + + +typedef REFIID DPNAREFIID; + +// {83783300-4063-4c8a-9DB3-82830A7FEB31} +DEFINE_GUID(IID_IDirectPlay8Address, +0x83783300, 0x4063, 0x4c8a, 0x9d, 0xb3, 0x82, 0x83, 0xa, 0x7f, 0xeb, 0x31); + +// {E5A0E990-2BAD-430b-87DA-A142CF75DE58} +DEFINE_GUID(IID_IDirectPlay8AddressIP, +0xe5a0e990, 0x2bad, 0x430b, 0x87, 0xda, 0xa1, 0x42, 0xcf, 0x75, 0xde, 0x58); + + + +/**************************************************************************** + * + * DirectPlay8Address Interface Pointer definitions + * + ****************************************************************************/ + +typedef struct IDirectPlay8Address *PDIRECTPLAY8ADDRESS, *LPDIRECTPLAY8ADDRESS; +typedef struct IDirectPlay8AddressIP *PDIRECTPLAY8ADDRESSIP, *LPDIRECTPLAY8ADDRESSIP; + + +/**************************************************************************** + * + * DirectPlay8Address Forward Declarations For External Types + * + ****************************************************************************/ + +typedef struct sockaddr SOCKADDR; + +/**************************************************************************** + * + * DirectPlay8Address Constants + * + ****************************************************************************/ +// +// Asynchronous operation flags +// +#define DPNA_DATATYPE_STRING 0x00000001 +#define DPNA_DATATYPE_DWORD 0x00000002 +#define DPNA_DATATYPE_GUID 0x00000003 +#define DPNA_DATATYPE_BINARY 0x00000004 +#define DPNA_DATATYPE_STRING_ANSI 0x00000005 + +#define DPNA_DPNSVR_PORT 6073 + +#define DPNA_INDEX_INVALID 0xFFFFFFFF + +/**************************************************************************** + * + * DirectPlay8Address Address Elements + * + ****************************************************************************/ + +#define DPNA_SEPARATOR_KEYVALUE L'=' +#define DPNA_SEPARATOR_USERDATA L'#' +#define DPNA_SEPARATOR_COMPONENT L';' +#define DPNA_ESCAPECHAR L'%' + +// Header +#define DPNA_HEADER L"x-directplay:/" + +// key names for address components +#define DPNA_KEY_NAT_RESOLVER L"natresolver" +#define DPNA_KEY_NAT_RESOLVER_USER_STRING L"natresolveruserstring" +#define DPNA_KEY_APPLICATION_INSTANCE L"applicationinstance" +#define DPNA_KEY_DEVICE L"device" +#define DPNA_KEY_HOSTNAME L"hostname" +#define DPNA_KEY_PORT L"port" +#define DPNA_KEY_NAMEINFO L"nameinfo" +#define DPNA_KEY_PROCESSOR L"processor" +#define DPNA_KEY_PROGRAM L"program" +#define DPNA_KEY_PROVIDER L"provider" +#define DPNA_KEY_SCOPE L"scope" +#define DPNA_KEY_TRAVERSALMODE L"traversalmode" +#define DPNA_KEY_BAUD L"baud" +#define DPNA_KEY_FLOWCONTROL L"flowcontrol" +#define DPNA_KEY_PARITY L"parity" +#define DPNA_KEY_PHONENUMBER L"phonenumber" +#define DPNA_KEY_STOPBITS L"stopbits" + +// values for baud rate +#define DPNA_BAUD_RATE_9600 9600 +#define DPNA_BAUD_RATE_14400 14400 +#define DPNA_BAUD_RATE_19200 19200 +#define DPNA_BAUD_RATE_38400 38400 +#define DPNA_BAUD_RATE_56000 56000 +#define DPNA_BAUD_RATE_57600 57600 +#define DPNA_BAUD_RATE_115200 115200 + +// values for stop bits +#define DPNA_STOP_BITS_ONE L"1" +#define DPNA_STOP_BITS_ONE_FIVE L"1.5" +#define DPNA_STOP_BITS_TWO L"2" + +// values for parity +#define DPNA_PARITY_NONE L"NONE" +#define DPNA_PARITY_EVEN L"EVEN" +#define DPNA_PARITY_ODD L"ODD" +#define DPNA_PARITY_MARK L"MARK" +#define DPNA_PARITY_SPACE L"SPACE" + +// values for flow control +#define DPNA_FLOW_CONTROL_NONE L"NONE" +#define DPNA_FLOW_CONTROL_XONXOFF L"XONXOFF" +#define DPNA_FLOW_CONTROL_RTS L"RTS" +#define DPNA_FLOW_CONTROL_DTR L"DTR" +#define DPNA_FLOW_CONTROL_RTSDTR L"RTSDTR" +// values for traversal mode +#define DPNA_TRAVERSALMODE_NONE 0 +#define DPNA_TRAVERSALMODE_PORTREQUIRED 1 +#define DPNA_TRAVERSALMODE_PORTRECOMMENDED 2 +// Shortcut values +// +// These can be used instead of the corresponding CLSID_DP8SP_XXXX guids +// +#define DPNA_VALUE_TCPIPPROVIDER L"IP" +#define DPNA_VALUE_IPXPROVIDER L"IPX" +#define DPNA_VALUE_MODEMPROVIDER L"MODEM" +#define DPNA_VALUE_SERIALPROVIDER L"SERIAL" + +//// ANSI DEFINITIONS + +// Header +#define DPNA_HEADER_A "x-directplay:/" +#define DPNA_SEPARATOR_KEYVALUE_A '=' +#define DPNA_SEPARATOR_USERDATA_A '#' +#define DPNA_SEPARATOR_COMPONENT_A ';' +#define DPNA_ESCAPECHAR_A '%' + +// key names for address components +#define DPNA_KEY_NAT_RESOLVER_A "natresolver" +#define DPNA_KEY_NAT_RESOLVER_USER_STRING_A "natresolveruserstring" +#define DPNA_KEY_APPLICATION_INSTANCE_A "applicationinstance" +#define DPNA_KEY_DEVICE_A "device" +#define DPNA_KEY_HOSTNAME_A "hostname" +#define DPNA_KEY_PORT_A "port" +#define DPNA_KEY_NAMEINFO_A "nameinfo" +#define DPNA_KEY_PROCESSOR_A "processor" +#define DPNA_KEY_PROGRAM_A "program" +#define DPNA_KEY_PROVIDER_A "provider" +#define DPNA_KEY_SCOPE_A "scope" +#define DPNA_KEY_TRAVERSALMODE_A "traversalmode" +#define DPNA_KEY_BAUD_A "baud" +#define DPNA_KEY_FLOWCONTROL_A "flowcontrol" +#define DPNA_KEY_PARITY_A "parity" +#define DPNA_KEY_PHONENUMBER_A "phonenumber" +#define DPNA_KEY_STOPBITS_A "stopbits" + +// values for stop bits +#define DPNA_STOP_BITS_ONE_A "1" +#define DPNA_STOP_BITS_ONE_FIVE_A "1.5" +#define DPNA_STOP_BITS_TWO_A "2" + +// values for parity +#define DPNA_PARITY_NONE_A "NONE" +#define DPNA_PARITY_EVEN_A "EVEN" +#define DPNA_PARITY_ODD_A "ODD" +#define DPNA_PARITY_MARK_A "MARK" +#define DPNA_PARITY_SPACE_A "SPACE" + +// values for flow control +#define DPNA_FLOW_CONTROL_NONE_A "NONE" +#define DPNA_FLOW_CONTROL_XONXOFF_A "XONXOFF" +#define DPNA_FLOW_CONTROL_RTS_A "RTS" +#define DPNA_FLOW_CONTROL_DTR_A "DTR" +#define DPNA_FLOW_CONTROL_RTSDTR_A "RTSDTR" +// Shortcut values +// +// These can be used instead of the corresponding CLSID_DP8SP_XXXX guids +// +#define DPNA_VALUE_TCPIPPROVIDER_A "IP" +#define DPNA_VALUE_IPXPROVIDER_A "IPX" +#define DPNA_VALUE_MODEMPROVIDER_A "MODEM" +#define DPNA_VALUE_SERIALPROVIDER_A "SERIAL" + +/**************************************************************************** + * + * DirectPlay8Address Functions + * + ****************************************************************************/ + + +/* + * + * This function is no longer supported. It is recommended that CoCreateInstance be used to create + * DirectPlay8 address objects. + * + * HRESULT WINAPI DirectPlay8AddressCreate( const GUID * pcIID, void **ppvInterface, IUnknown *pUnknown); + * + */ + + +/**************************************************************************** + * + * DirectPlay8Address Application Interfaces + * + ****************************************************************************/ + +// +// COM definition for IDirectPlay8Address Generic Interface +// +#undef INTERFACE // External COM Implementation +#define INTERFACE IDirectPlay8Address +DECLARE_INTERFACE_(IDirectPlay8Address,IUnknown) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface) (THIS_ DPNAREFIID, LPVOID *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + /*** IDirectPlay8Address methods ***/ + STDMETHOD(BuildFromURLW)(THIS_ WCHAR *pwszSourceURL ) PURE; + STDMETHOD(BuildFromURLA)(THIS_ CHAR *pszSourceURL ) PURE; + STDMETHOD(Duplicate)(THIS_ PDIRECTPLAY8ADDRESS *ppdpaNewAddress ) PURE; + STDMETHOD(SetEqual)(THIS_ PDIRECTPLAY8ADDRESS pdpaAddress ) PURE; + STDMETHOD(IsEqual)(THIS_ PDIRECTPLAY8ADDRESS pdpaAddress ) PURE; + STDMETHOD(Clear)(THIS ) PURE; + STDMETHOD(GetURLW)(THIS_ WCHAR *pwszURL, PDWORD pdwNumChars ) PURE; + STDMETHOD(GetURLA)(THIS_ CHAR *pszURL, PDWORD pdwNumChars) PURE; + STDMETHOD(GetSP)(THIS_ GUID *pguidSP ) PURE; + STDMETHOD(GetUserData)(THIS_ void *pvUserData, PDWORD pdwBufferSize) PURE; + STDMETHOD(SetSP)(THIS_ const GUID * const pguidSP ) PURE; + STDMETHOD(SetUserData)(THIS_ const void * const pvUserData, const DWORD dwDataSize) PURE; + STDMETHOD(GetNumComponents)(THIS_ PDWORD pdwNumComponents ) PURE; + STDMETHOD(GetComponentByName)(THIS_ const WCHAR * const pwszName, void *pvBuffer, PDWORD pdwBufferSize, PDWORD pdwDataType ) PURE; + STDMETHOD(GetComponentByIndex)(THIS_ const DWORD dwComponentID, WCHAR * pwszName, PDWORD pdwNameLen, void *pvBuffer, PDWORD pdwBufferSize, PDWORD pdwDataType ) PURE; + STDMETHOD(AddComponent)(THIS_ const WCHAR * const pwszName, const void * const lpvData, const DWORD dwDataSize, const DWORD dwDataType ) PURE; + STDMETHOD(GetDevice)(THIS_ GUID * ) PURE; + STDMETHOD(SetDevice)(THIS_ const GUID * const) PURE; + STDMETHOD(BuildFromDPADDRESS)( THIS_ LPVOID pvAddress, DWORD dwDataSize ) PURE; +}; + +// +// COM definition for IDirectPlay8AddressIP Generic Interface +// +#undef INTERFACE // External COM Implementation +#define INTERFACE IDirectPlay8AddressIP +DECLARE_INTERFACE_(IDirectPlay8AddressIP,IUnknown) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface) (THIS_ DPNAREFIID, PVOID *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + /*** IDirectPlay8AddressIP methods ***/ + + // Constructs a IDirectPlay8 TCP Address from a SOCKADDR structure + STDMETHOD(BuildFromSockAddr)(THIS_ const SOCKADDR * const ) PURE; + + // Constructs a TCP Address from a string (hostname) and port + STDMETHOD(BuildAddress)(THIS_ const WCHAR * const wszAddress, const USHORT usPort ) PURE; + + // Builds a local TCP Address + STDMETHOD(BuildLocalAddress)(THIS_ const GUID * const pguidAdapter, const USHORT usPort ) PURE; + + // Gets the address from the structure in SOCKADR format + STDMETHOD(GetSockAddress)(THIS_ SOCKADDR *, PDWORD ) PURE; + + // Gets the local afddress + STDMETHOD(GetLocalAddress)(THIS_ GUID *pguidAdapter, USHORT *pusPort ) PURE; + + // Gets the remote address + STDMETHOD(GetAddress)(THIS_ WCHAR *wszAddress, PDWORD pdwAddressLength, USHORT *psPort ) PURE; +}; + + +/**************************************************************************** + * + * IDirectPlay8 application interface macros + * + ****************************************************************************/ + +#if !defined(__cplusplus) || defined(CINTERFACE) + +#define IDirectPlay8Address_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDirectPlay8Address_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectPlay8Address_Release(p) (p)->lpVtbl->Release(p) +#define IDirectPlay8Address_BuildFromURLW(p,a) (p)->lpVtbl->BuildFromURLW(p,a) +#define IDirectPlay8Address_BuildFromURLA(p,a) (p)->lpVtbl->BuildFromURLA(p,a) +#define IDirectPlay8Address_Duplicate(p,a) (p)->lpVtbl->Duplicate(p,a) +#define IDirectPlay8Address_SetEqual(p,a) (p)->lpVtbl->SetEqual(p,a) +#define IDirectPlay8Address_IsEqual(p,a) (p)->lpVtbl->IsEqual(p,a) +#define IDirectPlay8Address_Clear(p) (p)->lpVtbl->Clear(p) +#define IDirectPlay8Address_GetURLW(p,a,b) (p)->lpVtbl->GetURLW(p,a,b) +#define IDirectPlay8Address_GetURLA(p,a,b) (p)->lpVtbl->GetURLA(p,a,b) +#define IDirectPlay8Address_GetSP(p,a) (p)->lpVtbl->GetSP(p,a) +#define IDirectPlay8Address_GetUserData(p,a,b) (p)->lpVtbl->GetUserData(p,a,b) +#define IDirectPlay8Address_SetSP(p,a) (p)->lpVtbl->SetSP(p,a) +#define IDirectPlay8Address_SetUserData(p,a,b) (p)->lpVtbl->SetUserData(p,a,b) +#define IDirectPlay8Address_GetNumComponents(p,a) (p)->lpVtbl->GetNumComponents(p,a) +#define IDirectPlay8Address_GetComponentByName(p,a,b,c,d) (p)->lpVtbl->GetComponentByName(p,a,b,c,d) +#define IDirectPlay8Address_GetComponentByIndex(p,a,b,c,d,e,f) (p)->lpVtbl->GetComponentByIndex(p,a,b,c,d,e,f) +#define IDirectPlay8Address_AddComponent(p,a,b,c,d) (p)->lpVtbl->AddComponent(p,a,b,c,d) +#define IDirectPlay8Address_SetDevice(p,a) (p)->lpVtbl->SetDevice(p,a) +#define IDirectPlay8Address_GetDevice(p,a) (p)->lpVtbl->GetDevice(p,a) +#define IDirectPlay8Address_BuildFromDirectPlay4Address(p,a,b) (p)->lpVtbl->BuildFromDirectPlay4Address(p,a,b) + +#define IDirectPlay8AddressIP_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDirectPlay8AddressIP_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectPlay8AddressIP_Release(p) (p)->lpVtbl->Release(p) +#define IDirectPlay8AddressIP_BuildFromSockAddr(p,a) (p)->lpVtbl->BuildFromSockAddr(p,a) +#define IDirectPlay8AddressIP_BuildAddress(p,a,b) (p)->lpVtbl->BuildAddress(p,a,b) +#define IDirectPlay8AddressIP_BuildLocalAddress(p,a,b) (p)->lpVtbl->BuildLocalAddress(p,a,b) +#define IDirectPlay8AddressIP_GetSockAddress(p,a,b) (p)->lpVtbl->GetSockAddress(p,a,b) +#define IDirectPlay8AddressIP_GetLocalAddress(p,a,b) (p)->lpVtbl->GetLocalAddress(p,a,b) +#define IDirectPlay8AddressIP_GetAddress(p,a,b,c) (p)->lpVtbl->GetAddress(p,a,b,c) + +#else /* C++ */ + +#define IDirectPlay8Address_QueryInterface(p,a,b) (p)->QueryInterface(a,b) +#define IDirectPlay8Address_AddRef(p) (p)->AddRef() +#define IDirectPlay8Address_Release(p) (p)->Release() +#define IDirectPlay8Address_BuildFromURLW(p,a) (p)->BuildFromURLW(a) +#define IDirectPlay8Address_BuildFromURLA(p,a) (p)->BuildFromURLA(a) +#define IDirectPlay8Address_Duplicate(p,a) (p)->Duplicate(a) +#define IDirectPlay8Address_SetEqual(p,a) (p)->SetEqual(a) +#define IDirectPlay8Address_IsEqual(p,a) (p)->IsEqual(a) +#define IDirectPlay8Address_Clear(p) (p)->Clear() +#define IDirectPlay8Address_GetURLW(p,a,b) (p)->GetURLW(a,b) +#define IDirectPlay8Address_GetURLA(p,a,b) (p)->GetURLA(a,b) +#define IDirectPlay8Address_GetSP(p,a) (p)->GetSP(a) +#define IDirectPlay8Address_GetUserData(p,a,b) (p)->GetUserData(a,b) +#define IDirectPlay8Address_SetSP(p,a) (p)->SetSP(a) +#define IDirectPlay8Address_SetUserData(p,a,b) (p)->SetUserData(a,b) +#define IDirectPlay8Address_GetNumComponents(p,a) (p)->GetNumComponents(a) +#define IDirectPlay8Address_GetComponentByName(p,a,b,c,d) (p)->GetComponentByName(a,b,c,d) +#define IDirectPlay8Address_GetComponentByIndex(p,a,b,c,d,e,f) (p)->GetComponentByIndex(a,b,c,d,e,f) +#define IDirectPlay8Address_AddComponent(p,a,b,c,d) (p)->AddComponent(a,b,c,d) +#define IDirectPlay8Address_SetDevice(p,a) (p)->SetDevice(a) +#define IDirectPlay8Address_GetDevice(p,a) (p)->GetDevice(a) +#define IDirectPlay8Address_BuildFromDirectPlay4Address(p,a,b) (p)->BuildFromDirectPlay4Address(a,b) + +#define IDirectPlay8AddressIP_QueryInterface(p,a,b) (p)->QueryInterface(a,b) +#define IDirectPlay8AddressIP_AddRef(p) (p)->AddRef() +#define IDirectPlay8AddressIP_Release(p) (p)->Release() +#define IDirectPlay8AddressIP_BuildFromSockAddr(p,a) (p)->BuildFromSockAddr(a) +#define IDirectPlay8AddressIP_BuildAddress(p,a,b) (p)->BuildAddress(a,b) +#define IDirectPlay8AddressIP_BuildLocalAddress(p,a,b) (p)->BuildLocalAddress(a,b) +#define IDirectPlay8AddressIP_GetSockAddress(p,a,b) (p)->GetSockAddress(a,b) +#define IDirectPlay8AddressIP_GetLocalAddress(p,a,b) (p)->GetLocalAddress(a,b) +#define IDirectPlay8AddressIP_GetAddress(p,a,b,c) (p)->GetAddress(a,b,c) + +#endif + + +#ifdef __cplusplus +} +#endif + +#endif + + diff --git a/videoInputSrcAndDemos/libs/DShow/Include/dplay.h b/videoInputSrcAndDemos/libs/DShow/Include/dplay.h index 402b852..d91c0a5 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/dplay.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/dplay.h @@ -1,2154 +1,2154 @@ -/*==========================================================================; - * - * Copyright (C) 1994-1997 Microsoft Corporation. All Rights Reserved. - * - * File: dplay.h - * Content: DirectPlay include file - * - ***************************************************************************/ - -#ifndef __DPLAY_INCLUDED__ -#define __DPLAY_INCLUDED__ - -#include // for DECLARE_INTERFACE and HRESULT - -/* avoid warnings in MSVC at Level4 */ -#if _MSC_VER >= 1200 -#pragma warning(push) -#endif -#pragma warning(disable:4201) - - -/* - * Some types - */ - -#ifndef _WIN64 -#define DWORD_PTR DWORD -#endif - -typedef LPVOID (*LPRGLPVOID)[]; -typedef LPRGLPVOID PRGPVOID, LPRGPVOID, PRGLPVOID, PAPVOID, LPAPVOID, PALPVOID, LPALPVOID; - -#define VOL volatile -typedef VOID *VOL LPVOIDV; - - -#define _FACDP 0x877 -#define MAKE_DPHRESULT( code ) MAKE_HRESULT( 1, _FACDP, code ) - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * GUIDS used by DirectPlay objects - */ -DEFINE_GUID(IID_IDirectPlay2, 0x2b74f7c0, 0x9154, 0x11cf, 0xa9, 0xcd, 0x0, 0xaa, 0x0, 0x68, 0x86, 0xe3); -DEFINE_GUID(IID_IDirectPlay2A,0x9d460580, 0xa822, 0x11cf, 0x96, 0xc, 0x0, 0x80, 0xc7, 0x53, 0x4e, 0x82); - -DEFINE_GUID(IID_IDirectPlay3, 0x133efe40, 0x32dc, 0x11d0, 0x9c, 0xfb, 0x0, 0xa0, 0xc9, 0xa, 0x43, 0xcb); -DEFINE_GUID(IID_IDirectPlay3A,0x133efe41, 0x32dc, 0x11d0, 0x9c, 0xfb, 0x0, 0xa0, 0xc9, 0xa, 0x43, 0xcb); - -DEFINE_GUID(IID_IDirectPlay4, 0xab1c530, 0x4745, 0x11d1, 0xa7, 0xa1, 0x0, 0x0, 0xf8, 0x3, 0xab, 0xfc); -DEFINE_GUID(IID_IDirectPlay4A,0xab1c531, 0x4745, 0x11d1, 0xa7, 0xa1, 0x0, 0x0, 0xf8, 0x3, 0xab, 0xfc); - -// {D1EB6D20-8923-11d0-9D97-00A0C90A43CB} -DEFINE_GUID(CLSID_DirectPlay,0xd1eb6d20, 0x8923, 0x11d0, 0x9d, 0x97, 0x0, 0xa0, 0xc9, 0xa, 0x43, 0xcb); - -/* - * GUIDS used by Service Providers shipped with DirectPlay - * Use these to identify Service Provider returned by EnumConnections - */ - -// GUID for IPX service provider -// {685BC400-9D2C-11cf-A9CD-00AA006886E3} -DEFINE_GUID(DPSPGUID_IPX, -0x685bc400, 0x9d2c, 0x11cf, 0xa9, 0xcd, 0x0, 0xaa, 0x0, 0x68, 0x86, 0xe3); - -// GUID for TCP/IP service provider -// 36E95EE0-8577-11cf-960C-0080C7534E82 -DEFINE_GUID(DPSPGUID_TCPIP, -0x36E95EE0, 0x8577, 0x11cf, 0x96, 0xc, 0x0, 0x80, 0xc7, 0x53, 0x4e, 0x82); - -// GUID for Serial service provider -// {0F1D6860-88D9-11cf-9C4E-00A0C905425E} -DEFINE_GUID(DPSPGUID_SERIAL, -0xf1d6860, 0x88d9, 0x11cf, 0x9c, 0x4e, 0x0, 0xa0, 0xc9, 0x5, 0x42, 0x5e); - -// GUID for Modem service provider -// {44EAA760-CB68-11cf-9C4E-00A0C905425E} -DEFINE_GUID(DPSPGUID_MODEM, -0x44eaa760, 0xcb68, 0x11cf, 0x9c, 0x4e, 0x0, 0xa0, 0xc9, 0x5, 0x42, 0x5e); - -/**************************************************************************** - * - * DirectPlay Structures - * - * Various structures used to invoke DirectPlay. - * - ****************************************************************************/ - -#ifndef IDIRECTPLAY2_OR_GREATER -typedef struct IDirectPlay FAR *LPDIRECTPLAY; -#else -typedef struct IUnknown FAR *LPDIRECTPLAY; -#endif - -typedef struct IDirectPlay2 FAR *LPDIRECTPLAY2; -typedef struct IDirectPlay2 FAR *LPDIRECTPLAY2A; -typedef struct IDirectPlay2 IDirectPlay2A; - -typedef struct IDirectPlay3 FAR *LPDIRECTPLAY3; -typedef struct IDirectPlay3 FAR *LPDIRECTPLAY3A; -typedef struct IDirectPlay3 IDirectPlay3A; - -typedef struct IDirectPlay4 FAR *LPDIRECTPLAY4; -typedef struct IDirectPlay4 FAR *LPDIRECTPLAY4A; -typedef struct IDirectPlay4 IDirectPlay4A; - -/* - * DPID - * DirectPlay player and group ID - */ -typedef DWORD DPID, FAR *LPDPID; - -/* - * DPID that system messages come from - */ -#define DPID_SYSMSG 0 - -/* - * DPID representing all players in the session - */ -#define DPID_ALLPLAYERS 0 - -/* - * DPID representing the server player - */ -#define DPID_SERVERPLAYER 1 - - -/* - * DPID representing the maxiumum ID in the range of DPID's reserved for - * use by DirectPlay. - */ -#define DPID_RESERVEDRANGE 100 - -/* - * The player ID is unknown (used with e.g. DPSESSION_NOMESSAGEID) - */ -#define DPID_UNKNOWN 0xFFFFFFFF - -/* - * DPCAPS - * Used to obtain the capabilities of a DirectPlay object - */ -typedef struct -{ - DWORD dwSize; // Size of structure, in bytes - DWORD dwFlags; // DPCAPS_xxx flags - DWORD dwMaxBufferSize; // Maximum message size, in bytes, for this service provider - DWORD dwMaxQueueSize; // Obsolete. - DWORD dwMaxPlayers; // Maximum players/groups (local + remote) - DWORD dwHundredBaud; // Bandwidth in 100 bits per second units; - // i.e. 24 is 2400, 96 is 9600, etc. - DWORD dwLatency; // Estimated latency; 0 = unknown - DWORD dwMaxLocalPlayers; // Maximum # of locally created players allowed - DWORD dwHeaderLength; // Maximum header length, in bytes, on messages - // added by the service provider - DWORD dwTimeout; // Service provider's suggested timeout value - // This is how long DirectPlay will wait for - // responses to system messages -} DPCAPS, FAR *LPDPCAPS; - -/* - * This DirectPlay object is the session host. If the host exits the - * session, another application will become the host and receive a - * DPSYS_HOST system message. - */ -#define DPCAPS_ISHOST 0x00000002 - -/* - * The service provider bound to this DirectPlay object can optimize - * group messaging. - */ -#define DPCAPS_GROUPOPTIMIZED 0x00000008 - -/* - * The service provider bound to this DirectPlay object can optimize - * keep alives (see DPSESSION_KEEPALIVE) - */ -#define DPCAPS_KEEPALIVEOPTIMIZED 0x00000010 - -/* - * The service provider bound to this DirectPlay object can optimize - * guaranteed message delivery. - */ -#define DPCAPS_GUARANTEEDOPTIMIZED 0x00000020 - -/* - * This DirectPlay object supports guaranteed message delivery. - */ -#define DPCAPS_GUARANTEEDSUPPORTED 0x00000040 - -/* - * This DirectPlay object supports digital signing of messages. - */ -#define DPCAPS_SIGNINGSUPPORTED 0x00000080 - -/* - * This DirectPlay object supports encryption of messages. - */ -#define DPCAPS_ENCRYPTIONSUPPORTED 0x00000100 - -/* - * This DirectPlay player was created on this machine - */ -#define DPPLAYERCAPS_LOCAL 0x00000800 - -/* - * Current Open settings supports all forms of Cancel - */ -#define DPCAPS_ASYNCCANCELSUPPORTED 0x00001000 - -/* - * Current Open settings supports CancelAll, but not Cancel - */ -#define DPCAPS_ASYNCCANCELALLSUPPORTED 0x00002000 - -/* - * Current Open settings supports Send Timeouts for sends - */ -#define DPCAPS_SENDTIMEOUTSUPPORTED 0x00004000 - -/* - * Current Open settings supports send priority - */ -#define DPCAPS_SENDPRIORITYSUPPORTED 0x00008000 - -/* - * Current Open settings supports DPSEND_ASYNC flag - */ -#define DPCAPS_ASYNCSUPPORTED 0x00010000 - - -/* - * DPSESSIONDESC2 - * Used to describe the properties of a DirectPlay - * session instance - */ -typedef struct -{ - DWORD dwSize; // Size of structure - DWORD dwFlags; // DPSESSION_xxx flags - GUID guidInstance; // ID for the session instance - GUID guidApplication; // GUID of the DirectPlay application. - // GUID_NULL for all applications. - DWORD dwMaxPlayers; // Maximum # players allowed in session - DWORD dwCurrentPlayers; // Current # players in session (read only) - union - { // Name of the session - LPWSTR lpszSessionName; // Unicode - LPSTR lpszSessionNameA; // ANSI - }; - union - { // Password of the session (optional) - LPWSTR lpszPassword; // Unicode - LPSTR lpszPasswordA; // ANSI - }; - DWORD_PTR dwReserved1; // Reserved for future MS use. - DWORD_PTR dwReserved2; - DWORD_PTR dwUser1; // For use by the application - DWORD_PTR dwUser2; - DWORD_PTR dwUser3; - DWORD_PTR dwUser4; -} DPSESSIONDESC2, FAR *LPDPSESSIONDESC2; - -typedef DPSESSIONDESC2 * VOL LPDPSESSIONDESC2_V; - -/* - * LPCDPSESSIONDESC2 - * A constant pointer to DPSESSIONDESC2 - */ -typedef const DPSESSIONDESC2 FAR *LPCDPSESSIONDESC2; - -/* - * Applications cannot create new players in this session. - */ -#define DPSESSION_NEWPLAYERSDISABLED 0x00000001 - -/* - * If the DirectPlay object that created the session, the host, - * quits, then the host will attempt to migrate to another - * DirectPlay object so that new players can continue to be created - * and new applications can join the session. - */ -#define DPSESSION_MIGRATEHOST 0x00000004 - -/* - * This flag tells DirectPlay not to set the idPlayerTo and idPlayerFrom - * fields in player messages. This cuts two DWORD's off the message - * overhead. - */ -#define DPSESSION_NOMESSAGEID 0x00000008 - - -/* - * This flag tells DirectPlay to not allow any new applications to - * join the session. Applications already in the session can still - * create new players. - */ -#define DPSESSION_JOINDISABLED 0x00000020 - -/* - * This flag tells DirectPlay to detect when remote players - * exit abnormally (e.g. their computer or modem gets unplugged) - */ -#define DPSESSION_KEEPALIVE 0x00000040 - -/* - * This flag tells DirectPlay not to send a message to all players - * when a players remote data changes - */ -#define DPSESSION_NODATAMESSAGES 0x00000080 - -/* - * This flag indicates that the session belongs to a secure server - * and needs user authentication - */ -#define DPSESSION_SECURESERVER 0x00000100 - -/* - * This flag indicates that the session is private and requirs a password - * for EnumSessions as well as Open. - */ -#define DPSESSION_PRIVATE 0x00000200 - -/* - * This flag indicates that the session requires a password for joining. - */ -#define DPSESSION_PASSWORDREQUIRED 0x00000400 - -/* - * This flag tells DirectPlay to route all messages through the server - */ -#define DPSESSION_MULTICASTSERVER 0x00000800 - -/* - * This flag tells DirectPlay to only download information about the - * DPPLAYER_SERVERPLAYER. - */ -#define DPSESSION_CLIENTSERVER 0x00001000 - -/* - * This flag tells DirectPlay to use the protocol built into dplay - * for reliability and statistics all the time. When this bit is - * set, only other sessions with this bit set can join or be joined. - */ -#define DPSESSION_DIRECTPLAYPROTOCOL 0x00002000 - -/* - * This flag tells DirectPlay that preserving order of received - * packets is not important, when using reliable delivery. This - * will allow messages to be indicated out of order if preceding - * messages have not yet arrived. Otherwise DPLAY will wait for - * earlier messages before delivering later reliable messages. - */ -#define DPSESSION_NOPRESERVEORDER 0x00004000 - - -/* - * This flag tells DirectPlay to optimize communication for latency - */ -#define DPSESSION_OPTIMIZELATENCY 0x00008000 - -/* - * This flag allows lobby launched games that aren't voice enabled - * to get voice capabilities. - */ -#define DPSESSION_ALLOWVOICERETRO 0x00010000 - -/* - * This flag supresses transmission of session desc changes. - * DPSESSION_NODATAMESSAGES was supposed to do that, but SetSessionDesc - * was ignoring the flag and some apps depended on the broken behavior, this - * flag allows applications to get the right behaviour without breaking apps depending - * on old broken behavior. - */ -#define DPSESSION_NOSESSIONDESCMESSAGES 0x00020000 - -/* - * DPNAME - * Used to hold the name of a DirectPlay entity - * like a player or a group - */ -typedef struct -{ - DWORD dwSize; // Size of structure - DWORD dwFlags; // Not used. Must be zero. - union - { // The short or friendly name - LPWSTR lpszShortName; // Unicode - LPSTR lpszShortNameA; // ANSI - }; - union - { // The long or formal name - LPWSTR lpszLongName; // Unicode - LPSTR lpszLongNameA; // ANSI - }; - -} DPNAME, FAR *LPDPNAME; - -/* - * LPCDPNAME - * A constant pointer to DPNAME - */ -typedef const DPNAME FAR *LPCDPNAME; - -/* - * DPCREDENTIALS - * Used to hold the user name and password of a DirectPlay user - */ -typedef struct -{ - DWORD dwSize; // Size of structure - DWORD dwFlags; // Not used. Must be zero. - union - { // User name of the account - LPWSTR lpszUsername; // Unicode - LPSTR lpszUsernameA; // ANSI - }; - union - { // Password of the account - LPWSTR lpszPassword; // Unicode - LPSTR lpszPasswordA; // ANSI - }; - union - { // Domain name of the account - LPWSTR lpszDomain; // Unicode - LPSTR lpszDomainA; // ANSI - }; -} DPCREDENTIALS, FAR *LPDPCREDENTIALS; - -typedef const DPCREDENTIALS FAR *LPCDPCREDENTIALS; - -/* - * DPSECURITYDESC - * Used to describe the security properties of a DirectPlay - * session instance - */ -typedef struct -{ - DWORD dwSize; // Size of structure - DWORD dwFlags; // Not used. Must be zero. - union - { // SSPI provider name - LPWSTR lpszSSPIProvider; // Unicode - LPSTR lpszSSPIProviderA; // ANSI - }; - union - { // CAPI provider name - LPWSTR lpszCAPIProvider; // Unicode - LPSTR lpszCAPIProviderA; // ANSI - }; - DWORD dwCAPIProviderType; // Crypto Service Provider type - DWORD dwEncryptionAlgorithm; // Encryption Algorithm type -} DPSECURITYDESC, FAR *LPDPSECURITYDESC; - -typedef const DPSECURITYDESC FAR *LPCDPSECURITYDESC; - -/* - * DPACCOUNTDESC - * Used to describe a user membership account - */ -typedef struct -{ - DWORD dwSize; // Size of structure - DWORD dwFlags; // Not used. Must be zero. - union - { // Account identifier - LPWSTR lpszAccountID; // Unicode - LPSTR lpszAccountIDA; // ANSI - }; -} DPACCOUNTDESC, FAR *LPDPACCOUNTDESC; - -typedef const DPACCOUNTDESC FAR *LPCDPACCOUNTDESC; - -/* - * LPCGUID - * A constant pointer to a guid - */ -typedef const GUID FAR *LPCGUID; - -/* - * DPLCONNECTION - * Used to hold all in the informaion needed to connect - * an application to a session or create a session - */ -typedef struct -{ - DWORD dwSize; // Size of this structure - DWORD dwFlags; // Flags specific to this structure - LPDPSESSIONDESC2 lpSessionDesc; // Pointer to session desc to use on connect - LPDPNAME lpPlayerName; // Pointer to Player name structure - GUID guidSP; // GUID of the DPlay SP to use - LPVOID lpAddress; // Address for service provider - DWORD dwAddressSize; // Size of address data -} DPLCONNECTION, FAR *LPDPLCONNECTION; - -/* - * LPCDPLCONNECTION - * A constant pointer to DPLCONNECTION - */ -typedef const DPLCONNECTION FAR *LPCDPLCONNECTION; - -/* - * DPCHAT - * Used to hold the a DirectPlay chat message - */ -typedef struct -{ - DWORD dwSize; - DWORD dwFlags; - union - { // Message string - LPWSTR lpszMessage; // Unicode - LPSTR lpszMessageA; // ANSI - }; -} DPCHAT, FAR * LPDPCHAT; - -/* - * SGBUFFER - * Scatter Gather Buffer used for SendEx - */ -typedef struct -{ - UINT len; // length of buffer data - PUCHAR pData; // pointer to buffer data -} SGBUFFER, *PSGBUFFER, FAR *LPSGBUFFER; - - -/**************************************************************************** - * - * Prototypes for DirectPlay callback functions - * - ****************************************************************************/ - -/* - * Callback for IDirectPlay2::EnumSessions - */ -typedef BOOL (FAR PASCAL * LPDPENUMSESSIONSCALLBACK2)( - LPCDPSESSIONDESC2 lpThisSD, - LPDWORD lpdwTimeOut, - DWORD dwFlags, - LPVOID lpContext ); - -/* - * This flag is set on the EnumSessions callback dwFlags parameter when - * the time out has occurred. There will be no session data for this - * callback. If *lpdwTimeOut is set to a non-zero value and the - * EnumSessionsCallback function returns TRUE then EnumSessions will - * continue waiting until the next timeout occurs. Timeouts are in - * milliseconds. - */ -#define DPESC_TIMEDOUT 0x00000001 - - -/* - * Callback for IDirectPlay2::EnumPlayers - * IDirectPlay2::EnumGroups - * IDirectPlay2::EnumGroupPlayers - */ -typedef BOOL (FAR PASCAL *LPDPENUMPLAYERSCALLBACK2)( - DPID dpId, - DWORD dwPlayerType, - LPCDPNAME lpName, - DWORD dwFlags, - LPVOID lpContext ); - - -/* - * Unicode callback for DirectPlayEnumerate - * This callback prototype will be used if compiling - * for Unicode strings - */ -typedef BOOL (FAR PASCAL * LPDPENUMDPCALLBACK)( - LPGUID lpguidSP, - LPWSTR lpSPName, - DWORD dwMajorVersion, - DWORD dwMinorVersion, - LPVOID lpContext); - -/* - * ANSI callback for DirectPlayEnumerate - * This callback prototype will be used if compiling - * for ANSI strings - */ -typedef BOOL (FAR PASCAL * LPDPENUMDPCALLBACKA)( - LPGUID lpguidSP, - LPSTR lpSPName, - DWORD dwMajorVersion, - DWORD dwMinorVersion, - LPVOID lpContext); - -/* - * Callback for IDirectPlay3(A)::EnumConnections - */ -typedef BOOL (FAR PASCAL * LPDPENUMCONNECTIONSCALLBACK)( - LPCGUID lpguidSP, - LPVOID lpConnection, - DWORD dwConnectionSize, - LPCDPNAME lpName, - DWORD dwFlags, - LPVOID lpContext); - - -/* - * API's - */ - -#ifdef UNICODE -#define DirectPlayEnumerate DirectPlayEnumerateW -#else -#define DirectPlayEnumerate DirectPlayEnumerateA -#endif // UNICODE - -extern HRESULT WINAPI DirectPlayEnumerateA( LPDPENUMDPCALLBACKA, LPVOID ); -extern HRESULT WINAPI DirectPlayEnumerateW( LPDPENUMDPCALLBACK, LPVOID ); -extern HRESULT WINAPI DirectPlayCreate( LPGUID lpGUID, LPDIRECTPLAY *lplpDP, IUnknown *pUnk); - -/**************************************************************************** - * - * IDirectPlay2 (and IDirectPlay2A) Interface - * - ****************************************************************************/ - -#undef INTERFACE -#define INTERFACE IDirectPlay2 -DECLARE_INTERFACE_( IDirectPlay2, IUnknown ) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - /*** IDirectPlay2 methods ***/ - STDMETHOD(AddPlayerToGroup) (THIS_ DPID, DPID) PURE; - STDMETHOD(Close) (THIS) PURE; - STDMETHOD(CreateGroup) (THIS_ LPDPID,LPDPNAME,LPVOID,DWORD,DWORD) PURE; - STDMETHOD(CreatePlayer) (THIS_ LPDPID,LPDPNAME,HANDLE,LPVOID,DWORD,DWORD) PURE; - STDMETHOD(DeletePlayerFromGroup)(THIS_ DPID,DPID) PURE; - STDMETHOD(DestroyGroup) (THIS_ DPID) PURE; - STDMETHOD(DestroyPlayer) (THIS_ DPID) PURE; - STDMETHOD(EnumGroupPlayers) (THIS_ DPID,LPGUID,LPDPENUMPLAYERSCALLBACK2,LPVOID,DWORD) PURE; - STDMETHOD(EnumGroups) (THIS_ LPGUID,LPDPENUMPLAYERSCALLBACK2,LPVOID,DWORD) PURE; - STDMETHOD(EnumPlayers) (THIS_ LPGUID,LPDPENUMPLAYERSCALLBACK2,LPVOID,DWORD) PURE; - STDMETHOD(EnumSessions) (THIS_ LPDPSESSIONDESC2,DWORD,LPDPENUMSESSIONSCALLBACK2,LPVOID,DWORD) PURE; - STDMETHOD(GetCaps) (THIS_ LPDPCAPS,DWORD) PURE; - STDMETHOD(GetGroupData) (THIS_ DPID,LPVOID,LPDWORD,DWORD) PURE; - STDMETHOD(GetGroupName) (THIS_ DPID,LPVOID,LPDWORD) PURE; - STDMETHOD(GetMessageCount) (THIS_ DPID, LPDWORD) PURE; - STDMETHOD(GetPlayerAddress) (THIS_ DPID,LPVOID,LPDWORD) PURE; - STDMETHOD(GetPlayerCaps) (THIS_ DPID,LPDPCAPS,DWORD) PURE; - STDMETHOD(GetPlayerData) (THIS_ DPID,LPVOID,LPDWORD,DWORD) PURE; - STDMETHOD(GetPlayerName) (THIS_ DPID,LPVOID,LPDWORD) PURE; - STDMETHOD(GetSessionDesc) (THIS_ LPVOID,LPDWORD) PURE; - STDMETHOD(Initialize) (THIS_ LPGUID) PURE; - STDMETHOD(Open) (THIS_ LPDPSESSIONDESC2,DWORD) PURE; - STDMETHOD(Receive) (THIS_ LPDPID,LPDPID,DWORD,LPVOID,LPDWORD) PURE; - STDMETHOD(Send) (THIS_ DPID, DPID, DWORD, LPVOID, DWORD) PURE; - STDMETHOD(SetGroupData) (THIS_ DPID,LPVOID,DWORD,DWORD) PURE; - STDMETHOD(SetGroupName) (THIS_ DPID,LPDPNAME,DWORD) PURE; - STDMETHOD(SetPlayerData) (THIS_ DPID,LPVOID,DWORD,DWORD) PURE; - STDMETHOD(SetPlayerName) (THIS_ DPID,LPDPNAME,DWORD) PURE; - STDMETHOD(SetSessionDesc) (THIS_ LPDPSESSIONDESC2,DWORD) PURE; -}; - -/**************************************************************************** - * - * IDirectPlay2 interface macros - * - ****************************************************************************/ - -#if !defined(__cplusplus) || defined(CINTERFACE) - -#define IDirectPlay2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IDirectPlay2_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDirectPlay2_Release(p) (p)->lpVtbl->Release(p) -#define IDirectPlay2_AddPlayerToGroup(p,a,b) (p)->lpVtbl->AddPlayerToGroup(p,a,b) -#define IDirectPlay2_Close(p) (p)->lpVtbl->Close(p) -#define IDirectPlay2_CreateGroup(p,a,b,c,d,e) (p)->lpVtbl->CreateGroup(p,a,b,c,d,e) -#define IDirectPlay2_CreatePlayer(p,a,b,c,d,e,f) (p)->lpVtbl->CreatePlayer(p,a,b,c,d,e,f) -#define IDirectPlay2_DeletePlayerFromGroup(p,a,b) (p)->lpVtbl->DeletePlayerFromGroup(p,a,b) -#define IDirectPlay2_DestroyGroup(p,a) (p)->lpVtbl->DestroyGroup(p,a) -#define IDirectPlay2_DestroyPlayer(p,a) (p)->lpVtbl->DestroyPlayer(p,a) -#define IDirectPlay2_EnumGroupPlayers(p,a,b,c,d,e) (p)->lpVtbl->EnumGroupPlayers(p,a,b,c,d,e) -#define IDirectPlay2_EnumGroups(p,a,b,c,d) (p)->lpVtbl->EnumGroups(p,a,b,c,d) -#define IDirectPlay2_EnumPlayers(p,a,b,c,d) (p)->lpVtbl->EnumPlayers(p,a,b,c,d) -#define IDirectPlay2_EnumSessions(p,a,b,c,d,e) (p)->lpVtbl->EnumSessions(p,a,b,c,d,e) -#define IDirectPlay2_GetCaps(p,a,b) (p)->lpVtbl->GetCaps(p,a,b) -#define IDirectPlay2_GetMessageCount(p,a,b) (p)->lpVtbl->GetMessageCount(p,a,b) -#define IDirectPlay2_GetGroupData(p,a,b,c,d) (p)->lpVtbl->GetGroupData(p,a,b,c,d) -#define IDirectPlay2_GetGroupName(p,a,b,c) (p)->lpVtbl->GetGroupName(p,a,b,c) -#define IDirectPlay2_GetPlayerAddress(p,a,b,c) (p)->lpVtbl->GetPlayerAddress(p,a,b,c) -#define IDirectPlay2_GetPlayerCaps(p,a,b,c) (p)->lpVtbl->GetPlayerCaps(p,a,b,c) -#define IDirectPlay2_GetPlayerData(p,a,b,c,d) (p)->lpVtbl->GetPlayerData(p,a,b,c,d) -#define IDirectPlay2_GetPlayerName(p,a,b,c) (p)->lpVtbl->GetPlayerName(p,a,b,c) -#define IDirectPlay2_GetSessionDesc(p,a,b) (p)->lpVtbl->GetSessionDesc(p,a,b) -#define IDirectPlay2_Initialize(p,a) (p)->lpVtbl->Initialize(p,a) -#define IDirectPlay2_Open(p,a,b) (p)->lpVtbl->Open(p,a,b) -#define IDirectPlay2_Receive(p,a,b,c,d,e) (p)->lpVtbl->Receive(p,a,b,c,d,e) -#define IDirectPlay2_Send(p,a,b,c,d,e) (p)->lpVtbl->Send(p,a,b,c,d,e) -#define IDirectPlay2_SetGroupData(p,a,b,c,d) (p)->lpVtbl->SetGroupData(p,a,b,c,d) -#define IDirectPlay2_SetGroupName(p,a,b,c) (p)->lpVtbl->SetGroupName(p,a,b,c) -#define IDirectPlay2_SetPlayerData(p,a,b,c,d) (p)->lpVtbl->SetPlayerData(p,a,b,c,d) -#define IDirectPlay2_SetPlayerName(p,a,b,c) (p)->lpVtbl->SetPlayerName(p,a,b,c) -#define IDirectPlay2_SetSessionDesc(p,a,b) (p)->lpVtbl->SetSessionDesc(p,a,b) - -#else /* C++ */ - -#define IDirectPlay2_QueryInterface(p,a,b) (p)->QueryInterface(a,b) -#define IDirectPlay2_AddRef(p) (p)->AddRef() -#define IDirectPlay2_Release(p) (p)->Release() -#define IDirectPlay2_AddPlayerToGroup(p,a,b) (p)->AddPlayerToGroup(a,b) -#define IDirectPlay2_Close(p) (p)->Close() -#define IDirectPlay2_CreateGroup(p,a,b,c,d,e) (p)->CreateGroup(a,b,c,d,e) -#define IDirectPlay2_CreatePlayer(p,a,b,c,d,e,f) (p)->CreatePlayer(a,b,c,d,e,f) -#define IDirectPlay2_DeletePlayerFromGroup(p,a,b) (p)->DeletePlayerFromGroup(a,b) -#define IDirectPlay2_DestroyGroup(p,a) (p)->DestroyGroup(a) -#define IDirectPlay2_DestroyPlayer(p,a) (p)->DestroyPlayer(a) -#define IDirectPlay2_EnumGroupPlayers(p,a,b,c,d,e) (p)->EnumGroupPlayers(a,b,c,d,e) -#define IDirectPlay2_EnumGroups(p,a,b,c,d) (p)->EnumGroups(a,b,c,d) -#define IDirectPlay2_EnumPlayers(p,a,b,c,d) (p)->EnumPlayers(a,b,c,d) -#define IDirectPlay2_EnumSessions(p,a,b,c,d,e) (p)->EnumSessions(a,b,c,d,e) -#define IDirectPlay2_GetCaps(p,a,b) (p)->GetCaps(a,b) -#define IDirectPlay2_GetMessageCount(p,a,b) (p)->GetMessageCount(a,b) -#define IDirectPlay2_GetGroupData(p,a,b,c,d) (p)->GetGroupData(a,b,c,d) -#define IDirectPlay2_GetGroupName(p,a,b,c) (p)->GetGroupName(a,b,c) -#define IDirectPlay2_GetPlayerAddress(p,a,b,c) (p)->GetPlayerAddress(a,b,c) -#define IDirectPlay2_GetPlayerCaps(p,a,b,c) (p)->GetPlayerCaps(a,b,c) -#define IDirectPlay2_GetPlayerData(p,a,b,c,d) (p)->GetPlayerData(a,b,c,d) -#define IDirectPlay2_GetPlayerName(p,a,b,c) (p)->GetPlayerName(a,b,c) -#define IDirectPlay2_GetSessionDesc(p,a,b) (p)->GetSessionDesc(a,b) -#define IDirectPlay2_Initialize(p,a) (p)->Initialize(a) -#define IDirectPlay2_Open(p,a,b) (p)->Open(a,b) -#define IDirectPlay2_Receive(p,a,b,c,d,e) (p)->Receive(a,b,c,d,e) -#define IDirectPlay2_Send(p,a,b,c,d,e) (p)->Send(a,b,c,d,e) -#define IDirectPlay2_SetGroupData(p,a,b,c,d) (p)->SetGroupData(a,b,c,d) -#define IDirectPlay2_SetGroupName(p,a,b,c) (p)->SetGroupName(a,b,c) -#define IDirectPlay2_SetPlayerData(p,a,b,c,d) (p)->SetPlayerData(a,b,c,d) -#define IDirectPlay2_SetPlayerName(p,a,b,c) (p)->SetPlayerName(a,b,c) -#define IDirectPlay2_SetSessionDesc(p,a,b) (p)->SetSessionDesc(a,b) - -#endif - -/**************************************************************************** - * - * IDirectPlay3 (and IDirectPlay3A) Interface - * - ****************************************************************************/ - -#undef INTERFACE -#define INTERFACE IDirectPlay3 -DECLARE_INTERFACE_( IDirectPlay3, IDirectPlay2 ) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - /*** IDirectPlay2 methods ***/ - STDMETHOD(AddPlayerToGroup) (THIS_ DPID, DPID) PURE; - STDMETHOD(Close) (THIS) PURE; - STDMETHOD(CreateGroup) (THIS_ LPDPID,LPDPNAME,LPVOID,DWORD,DWORD) PURE; - STDMETHOD(CreatePlayer) (THIS_ LPDPID,LPDPNAME,HANDLE,LPVOID,DWORD,DWORD) PURE; - STDMETHOD(DeletePlayerFromGroup)(THIS_ DPID,DPID) PURE; - STDMETHOD(DestroyGroup) (THIS_ DPID) PURE; - STDMETHOD(DestroyPlayer) (THIS_ DPID) PURE; - STDMETHOD(EnumGroupPlayers) (THIS_ DPID,LPGUID,LPDPENUMPLAYERSCALLBACK2,LPVOID,DWORD) PURE; - STDMETHOD(EnumGroups) (THIS_ LPGUID,LPDPENUMPLAYERSCALLBACK2,LPVOID,DWORD) PURE; - STDMETHOD(EnumPlayers) (THIS_ LPGUID,LPDPENUMPLAYERSCALLBACK2,LPVOID,DWORD) PURE; - STDMETHOD(EnumSessions) (THIS_ LPDPSESSIONDESC2,DWORD,LPDPENUMSESSIONSCALLBACK2,LPVOID,DWORD) PURE; - STDMETHOD(GetCaps) (THIS_ LPDPCAPS,DWORD) PURE; - STDMETHOD(GetGroupData) (THIS_ DPID,LPVOID,LPDWORD,DWORD) PURE; - STDMETHOD(GetGroupName) (THIS_ DPID,LPVOID,LPDWORD) PURE; - STDMETHOD(GetMessageCount) (THIS_ DPID, LPDWORD) PURE; - STDMETHOD(GetPlayerAddress) (THIS_ DPID,LPVOID,LPDWORD) PURE; - STDMETHOD(GetPlayerCaps) (THIS_ DPID,LPDPCAPS,DWORD) PURE; - STDMETHOD(GetPlayerData) (THIS_ DPID,LPVOID,LPDWORD,DWORD) PURE; - STDMETHOD(GetPlayerName) (THIS_ DPID,LPVOID,LPDWORD) PURE; - STDMETHOD(GetSessionDesc) (THIS_ LPVOID,LPDWORD) PURE; - STDMETHOD(Initialize) (THIS_ LPGUID) PURE; - STDMETHOD(Open) (THIS_ LPDPSESSIONDESC2,DWORD) PURE; - STDMETHOD(Receive) (THIS_ LPDPID,LPDPID,DWORD,LPVOID,LPDWORD) PURE; - STDMETHOD(Send) (THIS_ DPID, DPID, DWORD, LPVOID, DWORD) PURE; - STDMETHOD(SetGroupData) (THIS_ DPID,LPVOID,DWORD,DWORD) PURE; - STDMETHOD(SetGroupName) (THIS_ DPID,LPDPNAME,DWORD) PURE; - STDMETHOD(SetPlayerData) (THIS_ DPID,LPVOID,DWORD,DWORD) PURE; - STDMETHOD(SetPlayerName) (THIS_ DPID,LPDPNAME,DWORD) PURE; - STDMETHOD(SetSessionDesc) (THIS_ LPDPSESSIONDESC2,DWORD) PURE; - /*** IDirectPlay3 methods ***/ - STDMETHOD(AddGroupToGroup) (THIS_ DPID, DPID) PURE; - STDMETHOD(CreateGroupInGroup) (THIS_ DPID,LPDPID,LPDPNAME,LPVOID,DWORD,DWORD) PURE; - STDMETHOD(DeleteGroupFromGroup) (THIS_ DPID,DPID) PURE; - STDMETHOD(EnumConnections) (THIS_ LPCGUID,LPDPENUMCONNECTIONSCALLBACK,LPVOID,DWORD) PURE; - STDMETHOD(EnumGroupsInGroup) (THIS_ DPID,LPGUID,LPDPENUMPLAYERSCALLBACK2,LPVOID,DWORD) PURE; - STDMETHOD(GetGroupConnectionSettings)(THIS_ DWORD, DPID, LPVOID, LPDWORD) PURE; - STDMETHOD(InitializeConnection) (THIS_ LPVOID,DWORD) PURE; - STDMETHOD(SecureOpen) (THIS_ LPCDPSESSIONDESC2,DWORD,LPCDPSECURITYDESC,LPCDPCREDENTIALS) PURE; - STDMETHOD(SendChatMessage) (THIS_ DPID,DPID,DWORD,LPDPCHAT) PURE; - STDMETHOD(SetGroupConnectionSettings)(THIS_ DWORD,DPID,LPDPLCONNECTION) PURE; - STDMETHOD(StartSession) (THIS_ DWORD,DPID) PURE; - STDMETHOD(GetGroupFlags) (THIS_ DPID,LPDWORD) PURE; - STDMETHOD(GetGroupParent) (THIS_ DPID,LPDPID) PURE; - STDMETHOD(GetPlayerAccount) (THIS_ DPID, DWORD, LPVOID, LPDWORD) PURE; - STDMETHOD(GetPlayerFlags) (THIS_ DPID,LPDWORD) PURE; -}; - -/**************************************************************************** - * - * IDirectPlay3 interface macros - * - ****************************************************************************/ - -#if !defined(__cplusplus) || defined(CINTERFACE) - -#define IDirectPlay3_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IDirectPlay3_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDirectPlay3_Release(p) (p)->lpVtbl->Release(p) -#define IDirectPlay3_AddPlayerToGroup(p,a,b) (p)->lpVtbl->AddPlayerToGroup(p,a,b) -#define IDirectPlay3_Close(p) (p)->lpVtbl->Close(p) -#define IDirectPlay3_CreateGroup(p,a,b,c,d,e) (p)->lpVtbl->CreateGroup(p,a,b,c,d,e) -#define IDirectPlay3_CreatePlayer(p,a,b,c,d,e,f) (p)->lpVtbl->CreatePlayer(p,a,b,c,d,e,f) -#define IDirectPlay3_DeletePlayerFromGroup(p,a,b) (p)->lpVtbl->DeletePlayerFromGroup(p,a,b) -#define IDirectPlay3_DestroyGroup(p,a) (p)->lpVtbl->DestroyGroup(p,a) -#define IDirectPlay3_DestroyPlayer(p,a) (p)->lpVtbl->DestroyPlayer(p,a) -#define IDirectPlay3_EnumGroupPlayers(p,a,b,c,d,e) (p)->lpVtbl->EnumGroupPlayers(p,a,b,c,d,e) -#define IDirectPlay3_EnumGroups(p,a,b,c,d) (p)->lpVtbl->EnumGroups(p,a,b,c,d) -#define IDirectPlay3_EnumPlayers(p,a,b,c,d) (p)->lpVtbl->EnumPlayers(p,a,b,c,d) -#define IDirectPlay3_EnumSessions(p,a,b,c,d,e) (p)->lpVtbl->EnumSessions(p,a,b,c,d,e) -#define IDirectPlay3_GetCaps(p,a,b) (p)->lpVtbl->GetCaps(p,a,b) -#define IDirectPlay3_GetMessageCount(p,a,b) (p)->lpVtbl->GetMessageCount(p,a,b) -#define IDirectPlay3_GetGroupData(p,a,b,c,d) (p)->lpVtbl->GetGroupData(p,a,b,c,d) -#define IDirectPlay3_GetGroupName(p,a,b,c) (p)->lpVtbl->GetGroupName(p,a,b,c) -#define IDirectPlay3_GetPlayerAddress(p,a,b,c) (p)->lpVtbl->GetPlayerAddress(p,a,b,c) -#define IDirectPlay3_GetPlayerCaps(p,a,b,c) (p)->lpVtbl->GetPlayerCaps(p,a,b,c) -#define IDirectPlay3_GetPlayerData(p,a,b,c,d) (p)->lpVtbl->GetPlayerData(p,a,b,c,d) -#define IDirectPlay3_GetPlayerName(p,a,b,c) (p)->lpVtbl->GetPlayerName(p,a,b,c) -#define IDirectPlay3_GetSessionDesc(p,a,b) (p)->lpVtbl->GetSessionDesc(p,a,b) -#define IDirectPlay3_Initialize(p,a) (p)->lpVtbl->Initialize(p,a) -#define IDirectPlay3_Open(p,a,b) (p)->lpVtbl->Open(p,a,b) -#define IDirectPlay3_Receive(p,a,b,c,d,e) (p)->lpVtbl->Receive(p,a,b,c,d,e) -#define IDirectPlay3_Send(p,a,b,c,d,e) (p)->lpVtbl->Send(p,a,b,c,d,e) -#define IDirectPlay3_SetGroupData(p,a,b,c,d) (p)->lpVtbl->SetGroupData(p,a,b,c,d) -#define IDirectPlay3_SetGroupName(p,a,b,c) (p)->lpVtbl->SetGroupName(p,a,b,c) -#define IDirectPlay3_SetPlayerData(p,a,b,c,d) (p)->lpVtbl->SetPlayerData(p,a,b,c,d) -#define IDirectPlay3_SetPlayerName(p,a,b,c) (p)->lpVtbl->SetPlayerName(p,a,b,c) -#define IDirectPlay3_SetSessionDesc(p,a,b) (p)->lpVtbl->SetSessionDesc(p,a,b) -#define IDirectPlay3_AddGroupToGroup(p,a,b) (p)->lpVtbl->AddGroupToGroup(p,a,b) -#define IDirectPlay3_CreateGroupInGroup(p,a,b,c,d,e,f) (p)->lpVtbl->CreateGroupInGroup(p,a,b,c,d,e,f) -#define IDirectPlay3_DeleteGroupFromGroup(p,a,b) (p)->lpVtbl->DeleteGroupFromGroup(p,a,b) -#define IDirectPlay3_EnumConnections(p,a,b,c,d) (p)->lpVtbl->EnumConnections(p,a,b,c,d) -#define IDirectPlay3_EnumGroupsInGroup(p,a,b,c,d,e) (p)->lpVtbl->EnumGroupsInGroup(p,a,b,c,d,e) -#define IDirectPlay3_GetGroupConnectionSettings(p,a,b,c,d) (p)->lpVtbl->GetGroupConnectionSettings(p,a,b,c,d) -#define IDirectPlay3_InitializeConnection(p,a,b) (p)->lpVtbl->InitializeConnection(p,a,b) -#define IDirectPlay3_SecureOpen(p,a,b,c,d) (p)->lpVtbl->SecureOpen(p,a,b,c,d) -#define IDirectPlay3_SendChatMessage(p,a,b,c,d) (p)->lpVtbl->SendChatMessage(p,a,b,c,d) -#define IDirectPlay3_SetGroupConnectionSettings(p,a,b,c) (p)->lpVtbl->SetGroupConnectionSettings(p,a,b,c) -#define IDirectPlay3_StartSession(p,a,b) (p)->lpVtbl->StartSession(p,a,b) -#define IDirectPlay3_GetGroupFlags(p,a,b) (p)->lpVtbl->GetGroupFlags(p,a,b) -#define IDirectPlay3_GetGroupParent(p,a,b) (p)->lpVtbl->GetGroupParent(p,a,b) -#define IDirectPlay3_GetPlayerAccount(p,a,b,c,d) (p)->lpVtbl->GetPlayerAccount(p,a,b,c,d) -#define IDirectPlay3_GetPlayerFlags(p,a,b) (p)->lpVtbl->GetPlayerFlags(p,a,b) - -#else /* C++ */ - -#define IDirectPlay3_QueryInterface(p,a,b) (p)->QueryInterface(a,b) -#define IDirectPlay3_AddRef(p) (p)->AddRef() -#define IDirectPlay3_Release(p) (p)->Release() -#define IDirectPlay3_AddPlayerToGroup(p,a,b) (p)->AddPlayerToGroup(a,b) -#define IDirectPlay3_Close(p) (p)->Close() -#define IDirectPlay3_CreateGroup(p,a,b,c,d,e) (p)->CreateGroup(a,b,c,d,e) -#define IDirectPlay3_CreatePlayer(p,a,b,c,d,e,f) (p)->CreatePlayer(a,b,c,d,e,f) -#define IDirectPlay3_DeletePlayerFromGroup(p,a,b) (p)->DeletePlayerFromGroup(a,b) -#define IDirectPlay3_DestroyGroup(p,a) (p)->DestroyGroup(a) -#define IDirectPlay3_DestroyPlayer(p,a) (p)->DestroyPlayer(a) -#define IDirectPlay3_EnumGroupPlayers(p,a,b,c,d,e) (p)->EnumGroupPlayers(a,b,c,d,e) -#define IDirectPlay3_EnumGroups(p,a,b,c,d) (p)->EnumGroups(a,b,c,d) -#define IDirectPlay3_EnumPlayers(p,a,b,c,d) (p)->EnumPlayers(a,b,c,d) -#define IDirectPlay3_EnumSessions(p,a,b,c,d,e) (p)->EnumSessions(a,b,c,d,e) -#define IDirectPlay3_GetCaps(p,a,b) (p)->GetCaps(a,b) -#define IDirectPlay3_GetMessageCount(p,a,b) (p)->GetMessageCount(a,b) -#define IDirectPlay3_GetGroupData(p,a,b,c,d) (p)->GetGroupData(a,b,c,d) -#define IDirectPlay3_GetGroupName(p,a,b,c) (p)->GetGroupName(a,b,c) -#define IDirectPlay3_GetPlayerAddress(p,a,b,c) (p)->GetPlayerAddress(a,b,c) -#define IDirectPlay3_GetPlayerCaps(p,a,b,c) (p)->GetPlayerCaps(a,b,c) -#define IDirectPlay3_GetPlayerData(p,a,b,c,d) (p)->GetPlayerData(a,b,c,d) -#define IDirectPlay3_GetPlayerName(p,a,b,c) (p)->GetPlayerName(a,b,c) -#define IDirectPlay3_GetSessionDesc(p,a,b) (p)->GetSessionDesc(a,b) -#define IDirectPlay3_Initialize(p,a) (p)->Initialize(a) -#define IDirectPlay3_Open(p,a,b) (p)->Open(a,b) -#define IDirectPlay3_Receive(p,a,b,c,d,e) (p)->Receive(a,b,c,d,e) -#define IDirectPlay3_Send(p,a,b,c,d,e) (p)->Send(a,b,c,d,e) -#define IDirectPlay3_SetGroupData(p,a,b,c,d) (p)->SetGroupData(a,b,c,d) -#define IDirectPlay3_SetGroupName(p,a,b,c) (p)->SetGroupName(a,b,c) -#define IDirectPlay3_SetPlayerData(p,a,b,c,d) (p)->SetPlayerData(a,b,c,d) -#define IDirectPlay3_SetPlayerName(p,a,b,c) (p)->SetPlayerName(a,b,c) -#define IDirectPlay3_SetSessionDesc(p,a,b) (p)->SetSessionDesc(a,b) -#define IDirectPlay3_AddGroupToGroup(p,a,b) (p)->AddGroupToGroup(a,b) -#define IDirectPlay3_CreateGroupInGroup(p,a,b,c,d,e,f) (p)->CreateGroupInGroup(a,b,c,d,e,f) -#define IDirectPlay3_DeleteGroupFromGroup(p,a,b) (p)->DeleteGroupFromGroup(a,b) -#define IDirectPlay3_EnumConnections(p,a,b,c,d) (p)->EnumConnections(a,b,c,d) -#define IDirectPlay3_EnumGroupsInGroup(p,a,b,c,d,e) (p)->EnumGroupsInGroup(a,b,c,d,e) -#define IDirectPlay3_GetGroupConnectionSettings(p,a,b,c,d) (p)->GetGroupConnectionSettings(a,b,c,d) -#define IDirectPlay3_InitializeConnection(p,a,b) (p)->InitializeConnection(a,b) -#define IDirectPlay3_SecureOpen(p,a,b,c,d) (p)->SecureOpen(a,b,c,d) -#define IDirectPlay3_SendChatMessage(p,a,b,c,d) (p)->SendChatMessage(a,b,c,d) -#define IDirectPlay3_SetGroupConnectionSettings(p,a,b,c) (p)->SetGroupConnectionSettings(a,b,c) -#define IDirectPlay3_StartSession(p,a,b) (p)->StartSession(a,b) -#define IDirectPlay3_GetGroupFlags(p,a,b) (p)->GetGroupFlags(a,b) -#define IDirectPlay3_GetGroupParent(p,a,b) (p)->GetGroupParent(a,b) -#define IDirectPlay3_GetPlayerAccount(p,a,b,c,d) (p)->GetPlayerAccount(a,b,c,d) -#define IDirectPlay3_GetPlayerFlags(p,a,b) (p)->GetPlayerFlags(a,b) - -#endif - -/**************************************************************************** - * - * IDirectPlay4 (and IDirectPlay4A) Interface - * - ****************************************************************************/ - -#undef INTERFACE -#define INTERFACE IDirectPlay4 -DECLARE_INTERFACE_( IDirectPlay4, IDirectPlay3 ) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - /*** IDirectPlay2 methods ***/ - STDMETHOD(AddPlayerToGroup) (THIS_ DPID, DPID) PURE; - STDMETHOD(Close) (THIS) PURE; - STDMETHOD(CreateGroup) (THIS_ LPDPID,LPDPNAME,LPVOID,DWORD,DWORD) PURE; - STDMETHOD(CreatePlayer) (THIS_ LPDPID,LPDPNAME,HANDLE,LPVOID,DWORD,DWORD) PURE; - STDMETHOD(DeletePlayerFromGroup)(THIS_ DPID,DPID) PURE; - STDMETHOD(DestroyGroup) (THIS_ DPID) PURE; - STDMETHOD(DestroyPlayer) (THIS_ DPID) PURE; - STDMETHOD(EnumGroupPlayers) (THIS_ DPID,LPGUID,LPDPENUMPLAYERSCALLBACK2,LPVOID,DWORD) PURE; - STDMETHOD(EnumGroups) (THIS_ LPGUID,LPDPENUMPLAYERSCALLBACK2,LPVOID,DWORD) PURE; - STDMETHOD(EnumPlayers) (THIS_ LPGUID,LPDPENUMPLAYERSCALLBACK2,LPVOID,DWORD) PURE; - STDMETHOD(EnumSessions) (THIS_ LPDPSESSIONDESC2,DWORD,LPDPENUMSESSIONSCALLBACK2,LPVOID,DWORD) PURE; - STDMETHOD(GetCaps) (THIS_ LPDPCAPS,DWORD) PURE; - STDMETHOD(GetGroupData) (THIS_ DPID,LPVOID,LPDWORD,DWORD) PURE; - STDMETHOD(GetGroupName) (THIS_ DPID,LPVOID,LPDWORD) PURE; - STDMETHOD(GetMessageCount) (THIS_ DPID, LPDWORD) PURE; - STDMETHOD(GetPlayerAddress) (THIS_ DPID,LPVOID,LPDWORD) PURE; - STDMETHOD(GetPlayerCaps) (THIS_ DPID,LPDPCAPS,DWORD) PURE; - STDMETHOD(GetPlayerData) (THIS_ DPID,LPVOID,LPDWORD,DWORD) PURE; - STDMETHOD(GetPlayerName) (THIS_ DPID,LPVOID,LPDWORD) PURE; - STDMETHOD(GetSessionDesc) (THIS_ LPVOID,LPDWORD) PURE; - STDMETHOD(Initialize) (THIS_ LPGUID) PURE; - STDMETHOD(Open) (THIS_ LPDPSESSIONDESC2,DWORD) PURE; - STDMETHOD(Receive) (THIS_ LPDPID,LPDPID,DWORD,LPVOID,LPDWORD) PURE; - STDMETHOD(Send) (THIS_ DPID, DPID, DWORD, LPVOID, DWORD) PURE; - STDMETHOD(SetGroupData) (THIS_ DPID,LPVOID,DWORD,DWORD) PURE; - STDMETHOD(SetGroupName) (THIS_ DPID,LPDPNAME,DWORD) PURE; - STDMETHOD(SetPlayerData) (THIS_ DPID,LPVOID,DWORD,DWORD) PURE; - STDMETHOD(SetPlayerName) (THIS_ DPID,LPDPNAME,DWORD) PURE; - STDMETHOD(SetSessionDesc) (THIS_ LPDPSESSIONDESC2,DWORD) PURE; - /*** IDirectPlay3 methods ***/ - STDMETHOD(AddGroupToGroup) (THIS_ DPID, DPID) PURE; - STDMETHOD(CreateGroupInGroup) (THIS_ DPID,LPDPID,LPDPNAME,LPVOID,DWORD,DWORD) PURE; - STDMETHOD(DeleteGroupFromGroup) (THIS_ DPID,DPID) PURE; - STDMETHOD(EnumConnections) (THIS_ LPCGUID,LPDPENUMCONNECTIONSCALLBACK,LPVOID,DWORD) PURE; - STDMETHOD(EnumGroupsInGroup) (THIS_ DPID,LPGUID,LPDPENUMPLAYERSCALLBACK2,LPVOID,DWORD) PURE; - STDMETHOD(GetGroupConnectionSettings)(THIS_ DWORD, DPID, LPVOID, LPDWORD) PURE; - STDMETHOD(InitializeConnection) (THIS_ LPVOID,DWORD) PURE; - STDMETHOD(SecureOpen) (THIS_ LPCDPSESSIONDESC2,DWORD,LPCDPSECURITYDESC,LPCDPCREDENTIALS) PURE; - STDMETHOD(SendChatMessage) (THIS_ DPID,DPID,DWORD,LPDPCHAT) PURE; - STDMETHOD(SetGroupConnectionSettings)(THIS_ DWORD,DPID,LPDPLCONNECTION) PURE; - STDMETHOD(StartSession) (THIS_ DWORD,DPID) PURE; - STDMETHOD(GetGroupFlags) (THIS_ DPID,LPDWORD) PURE; - STDMETHOD(GetGroupParent) (THIS_ DPID,LPDPID) PURE; - STDMETHOD(GetPlayerAccount) (THIS_ DPID, DWORD, LPVOID, LPDWORD) PURE; - STDMETHOD(GetPlayerFlags) (THIS_ DPID,LPDWORD) PURE; - /*** IDirectPlay4 methods ***/ - STDMETHOD(GetGroupOwner) (THIS_ DPID, LPDPID) PURE; - STDMETHOD(SetGroupOwner) (THIS_ DPID, DPID) PURE; - STDMETHOD(SendEx) (THIS_ DPID, DPID, DWORD, LPVOID, DWORD, DWORD, DWORD, LPVOID, DWORD_PTR *) PURE; - STDMETHOD(GetMessageQueue) (THIS_ DPID, DPID, DWORD, LPDWORD, LPDWORD) PURE; - STDMETHOD(CancelMessage) (THIS_ DWORD, DWORD) PURE; - STDMETHOD(CancelPriority) (THIS_ DWORD, DWORD, DWORD) PURE; -}; - -/**************************************************************************** - * - * IDirectPlayX interface macros (for IDirectPlay4 and beyond) - * - ****************************************************************************/ - -#if !defined(__cplusplus) || defined(CINTERFACE) - -#define IDirectPlayX_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IDirectPlayX_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDirectPlayX_Release(p) (p)->lpVtbl->Release(p) -#define IDirectPlayX_AddPlayerToGroup(p,a,b) (p)->lpVtbl->AddPlayerToGroup(p,a,b) -#define IDirectPlayX_CancelMessage(p,a,b) (p)->lpVtbl->CancelMessage(p,a,b) -#define IDirectPlayX_CancelPriority(p,a,b,c) (p)->lpVtbl->CancelPriority(p,a,b,c) -#define IDirectPlayX_Close(p) (p)->lpVtbl->Close(p) -#define IDirectPlayX_CreateGroup(p,a,b,c,d,e) (p)->lpVtbl->CreateGroup(p,a,b,c,d,e) -#define IDirectPlayX_CreatePlayer(p,a,b,c,d,e,f) (p)->lpVtbl->CreatePlayer(p,a,b,c,d,e,f) -#define IDirectPlayX_DeletePlayerFromGroup(p,a,b) (p)->lpVtbl->DeletePlayerFromGroup(p,a,b) -#define IDirectPlayX_DestroyGroup(p,a) (p)->lpVtbl->DestroyGroup(p,a) -#define IDirectPlayX_DestroyPlayer(p,a) (p)->lpVtbl->DestroyPlayer(p,a) -#define IDirectPlayX_EnumGroupPlayers(p,a,b,c,d,e) (p)->lpVtbl->EnumGroupPlayers(p,a,b,c,d,e) -#define IDirectPlayX_EnumGroups(p,a,b,c,d) (p)->lpVtbl->EnumGroups(p,a,b,c,d) -#define IDirectPlayX_EnumPlayers(p,a,b,c,d) (p)->lpVtbl->EnumPlayers(p,a,b,c,d) -#define IDirectPlayX_EnumSessions(p,a,b,c,d,e) (p)->lpVtbl->EnumSessions(p,a,b,c,d,e) -#define IDirectPlayX_GetCaps(p,a,b) (p)->lpVtbl->GetCaps(p,a,b) -#define IDirectPlayX_GetMessageCount(p,a,b) (p)->lpVtbl->GetMessageCount(p,a,b) -#define IDirectPlayX_GetMessageQueue(p,a,b,c,d,e) (p)->lpVtbl->GetMessageQueue(p,a,b,c,d,e) -#define IDirectPlayX_GetGroupData(p,a,b,c,d) (p)->lpVtbl->GetGroupData(p,a,b,c,d) -#define IDirectPlayX_GetGroupName(p,a,b,c) (p)->lpVtbl->GetGroupName(p,a,b,c) -#define IDirectPlayX_GetPlayerAddress(p,a,b,c) (p)->lpVtbl->GetPlayerAddress(p,a,b,c) -#define IDirectPlayX_GetPlayerCaps(p,a,b,c) (p)->lpVtbl->GetPlayerCaps(p,a,b,c) -#define IDirectPlayX_GetPlayerData(p,a,b,c,d) (p)->lpVtbl->GetPlayerData(p,a,b,c,d) -#define IDirectPlayX_GetPlayerName(p,a,b,c) (p)->lpVtbl->GetPlayerName(p,a,b,c) -#define IDirectPlayX_GetSessionDesc(p,a,b) (p)->lpVtbl->GetSessionDesc(p,a,b) -#define IDirectPlayX_Initialize(p,a) (p)->lpVtbl->Initialize(p,a) -#define IDirectPlayX_Open(p,a,b) (p)->lpVtbl->Open(p,a,b) -#define IDirectPlayX_Receive(p,a,b,c,d,e) (p)->lpVtbl->Receive(p,a,b,c,d,e) -#define IDirectPlayX_Send(p,a,b,c,d,e) (p)->lpVtbl->Send(p,a,b,c,d,e) -#define IDirectPlayX_SendEx(p,a,b,c,d,e,f,g,h,i) (p)->lpVtbl->SendEx(p,a,b,c,d,e,f,g,h,i) -#define IDirectPlayX_SetGroupData(p,a,b,c,d) (p)->lpVtbl->SetGroupData(p,a,b,c,d) -#define IDirectPlayX_SetGroupName(p,a,b,c) (p)->lpVtbl->SetGroupName(p,a,b,c) -#define IDirectPlayX_SetPlayerData(p,a,b,c,d) (p)->lpVtbl->SetPlayerData(p,a,b,c,d) -#define IDirectPlayX_SetPlayerName(p,a,b,c) (p)->lpVtbl->SetPlayerName(p,a,b,c) -#define IDirectPlayX_SetSessionDesc(p,a,b) (p)->lpVtbl->SetSessionDesc(p,a,b) -#define IDirectPlayX_AddGroupToGroup(p,a,b) (p)->lpVtbl->AddGroupToGroup(p,a,b) -#define IDirectPlayX_CreateGroupInGroup(p,a,b,c,d,e,f) (p)->lpVtbl->CreateGroupInGroup(p,a,b,c,d,e,f) -#define IDirectPlayX_DeleteGroupFromGroup(p,a,b) (p)->lpVtbl->DeleteGroupFromGroup(p,a,b) -#define IDirectPlayX_EnumConnections(p,a,b,c,d) (p)->lpVtbl->EnumConnections(p,a,b,c,d) -#define IDirectPlayX_EnumGroupsInGroup(p,a,b,c,d,e) (p)->lpVtbl->EnumGroupsInGroup(p,a,b,c,d,e) -#define IDirectPlayX_GetGroupConnectionSettings(p,a,b,c,d) (p)->lpVtbl->GetGroupConnectionSettings(p,a,b,c,d) -#define IDirectPlayX_InitializeConnection(p,a,b) (p)->lpVtbl->InitializeConnection(p,a,b) -#define IDirectPlayX_SecureOpen(p,a,b,c,d) (p)->lpVtbl->SecureOpen(p,a,b,c,d) -#define IDirectPlayX_SendChatMessage(p,a,b,c,d) (p)->lpVtbl->SendChatMessage(p,a,b,c,d) -#define IDirectPlayX_SetGroupConnectionSettings(p,a,b,c) (p)->lpVtbl->SetGroupConnectionSettings(p,a,b,c) -#define IDirectPlayX_StartSession(p,a,b) (p)->lpVtbl->StartSession(p,a,b) -#define IDirectPlayX_GetGroupFlags(p,a,b) (p)->lpVtbl->GetGroupFlags(p,a,b) -#define IDirectPlayX_GetGroupParent(p,a,b) (p)->lpVtbl->GetGroupParent(p,a,b) -#define IDirectPlayX_GetPlayerAccount(p,a,b,c,d) (p)->lpVtbl->GetPlayerAccount(p,a,b,c,d) -#define IDirectPlayX_GetPlayerFlags(p,a,b) (p)->lpVtbl->GetPlayerFlags(p,a,b) -#define IDirectPlayX_GetGroupOwner(p,a,b) (p)->lpVtbl->GetGroupOwner(p,a,b) -#define IDirectPlayX_SetGroupOwner(p,a,b) (p)->lpVtbl->SetGroupOwner(p,a,b) - -#else /* C++ */ - -#define IDirectPlayX_QueryInterface(p,a,b) (p)->QueryInterface(a,b) -#define IDirectPlayX_AddRef(p) (p)->AddRef() -#define IDirectPlayX_Release(p) (p)->Release() -#define IDirectPlayX_AddPlayerToGroup(p,a,b) (p)->AddPlayerToGroup(a,b) -#define IDirectPlayX_CancelMessage(p,a,b) (p)->CancelMessage(a,b) -#define IDirectPlayX_CancelPriority(p,a,b,c) (p)->CancelPriority(a,b,c) -#define IDirectPlayX_Close(p) (p)->Close() -#define IDirectPlayX_CreateGroup(p,a,b,c,d,e) (p)->CreateGroup(a,b,c,d,e) -#define IDirectPlayX_CreatePlayer(p,a,b,c,d,e,f) (p)->CreatePlayer(a,b,c,d,e,f) -#define IDirectPlayX_DeletePlayerFromGroup(p,a,b) (p)->DeletePlayerFromGroup(a,b) -#define IDirectPlayX_DestroyGroup(p,a) (p)->DestroyGroup(a) -#define IDirectPlayX_DestroyPlayer(p,a) (p)->DestroyPlayer(a) -#define IDirectPlayX_EnumGroupPlayers(p,a,b,c,d,e) (p)->EnumGroupPlayers(a,b,c,d,e) -#define IDirectPlayX_EnumGroups(p,a,b,c,d) (p)->EnumGroups(a,b,c,d) -#define IDirectPlayX_EnumPlayers(p,a,b,c,d) (p)->EnumPlayers(a,b,c,d) -#define IDirectPlayX_EnumSessions(p,a,b,c,d,e) (p)->EnumSessions(a,b,c,d,e) -#define IDirectPlayX_GetCaps(p,a,b) (p)->GetCaps(a,b) -#define IDirectPlayX_GetMessageCount(p,a,b) (p)->GetMessageCount(a,b) -#define IDirectPlayX_GetMessageQueue(p,a,b,c,d,e) (p)->GetMessageQueue(a,b,c,d,e) -#define IDirectPlayX_GetGroupData(p,a,b,c,d) (p)->GetGroupData(a,b,c,d) -#define IDirectPlayX_GetGroupName(p,a,b,c) (p)->GetGroupName(a,b,c) -#define IDirectPlayX_GetPlayerAddress(p,a,b,c) (p)->GetPlayerAddress(a,b,c) -#define IDirectPlayX_GetPlayerCaps(p,a,b,c) (p)->GetPlayerCaps(a,b,c) -#define IDirectPlayX_GetPlayerData(p,a,b,c,d) (p)->GetPlayerData(a,b,c,d) -#define IDirectPlayX_GetPlayerName(p,a,b,c) (p)->GetPlayerName(a,b,c) -#define IDirectPlayX_GetSessionDesc(p,a,b) (p)->GetSessionDesc(a,b) -#define IDirectPlayX_Initialize(p,a) (p)->Initialize(a) -#define IDirectPlayX_Open(p,a,b) (p)->Open(a,b) -#define IDirectPlayX_Receive(p,a,b,c,d,e) (p)->Receive(a,b,c,d,e) -#define IDirectPlayX_Send(p,a,b,c,d,e) (p)->Send(a,b,c,d,e) -#define IDirectPlayX_SendEx(p,a,b,c,d,e,f,g,h,i) (p)->SendEx(a,b,c,d,e,f,g,h,i) -#define IDirectPlayX_SetGroupData(p,a,b,c,d) (p)->SetGroupData(a,b,c,d) -#define IDirectPlayX_SetGroupName(p,a,b,c) (p)->SetGroupName(a,b,c) -#define IDirectPlayX_SetPlayerData(p,a,b,c,d) (p)->SetPlayerData(a,b,c,d) -#define IDirectPlayX_SetPlayerName(p,a,b,c) (p)->SetPlayerName(a,b,c) -#define IDirectPlayX_SetSessionDesc(p,a,b) (p)->SetSessionDesc(a,b) -#define IDirectPlayX_AddGroupToGroup(p,a,b) (p)->AddGroupToGroup(a,b) -#define IDirectPlayX_CreateGroupInGroup(p,a,b,c,d,e,f) (p)->CreateGroupInGroup(a,b,c,d,e,f) -#define IDirectPlayX_DeleteGroupFromGroup(p,a,b) (p)->DeleteGroupFromGroup(a,b) -#define IDirectPlayX_EnumConnections(p,a,b,c,d) (p)->EnumConnections(a,b,c,d) -#define IDirectPlayX_EnumGroupsInGroup(p,a,b,c,d,e) (p)->EnumGroupsInGroup(a,b,c,d,e) -#define IDirectPlayX_GetGroupConnectionSettings(p,a,b,c,d) (p)->GetGroupConnectionSettings(a,b,c,d) -#define IDirectPlayX_InitializeConnection(p,a,b) (p)->InitializeConnection(a,b) -#define IDirectPlayX_SecureOpen(p,a,b,c,d) (p)->SecureOpen(a,b,c,d) -#define IDirectPlayX_SendChatMessage(p,a,b,c,d) (p)->SendChatMessage(a,b,c,d) -#define IDirectPlayX_SetGroupConnectionSettings(p,a,b,c) (p)->SetGroupConnectionSettings(a,b,c) -#define IDirectPlayX_StartSession(p,a,b) (p)->StartSession(a,b) -#define IDirectPlayX_GetGroupFlags(p,a,b) (p)->GetGroupFlags(a,b) -#define IDirectPlayX_GetGroupParent(p,a,b) (p)->GetGroupParent(a,b) -#define IDirectPlayX_GetPlayerAccount(p,a,b,c,d) (p)->GetPlayerAccount(a,b,c,d) -#define IDirectPlayX_GetPlayerFlags(p,a,b) (p)->GetPlayerFlags(a,b) -#define IDirectPlayX_GetGroupOwner(p,a,b) (p)->GetGroupOwner(a,b) -#define IDirectPlayX_SetGroupOwner(p,a,b) (p)->SetGroupOwner(a,b) - -#endif - -/**************************************************************************** - * - * EnumConnections API flags - * - ****************************************************************************/ - -/* - * Enumerate Service Providers - */ -#define DPCONNECTION_DIRECTPLAY 0x00000001 - -/* - * Enumerate Lobby Providers - */ -#define DPCONNECTION_DIRECTPLAYLOBBY 0x00000002 - - -/**************************************************************************** - * - * EnumPlayers API flags - * - ****************************************************************************/ - -/* - * Enumerate all players in the current session - */ -#define DPENUMPLAYERS_ALL 0x00000000 -#define DPENUMGROUPS_ALL DPENUMPLAYERS_ALL - - -/* - * Enumerate only local (created by this application) players - * or groups - */ -#define DPENUMPLAYERS_LOCAL 0x00000008 -#define DPENUMGROUPS_LOCAL DPENUMPLAYERS_LOCAL - -/* - * Enumerate only remote (non-local) players - * or groups - */ -#define DPENUMPLAYERS_REMOTE 0x00000010 -#define DPENUMGROUPS_REMOTE DPENUMPLAYERS_REMOTE - -/* - * Enumerate groups along with the players - */ -#define DPENUMPLAYERS_GROUP 0x00000020 - -/* - * Enumerate players or groups in another session - * (must supply lpguidInstance) - */ -#define DPENUMPLAYERS_SESSION 0x00000080 -#define DPENUMGROUPS_SESSION DPENUMPLAYERS_SESSION - -/* - * Enumerate server players - */ -#define DPENUMPLAYERS_SERVERPLAYER 0x00000100 - -/* - * Enumerate spectator players - */ -#define DPENUMPLAYERS_SPECTATOR 0x00000200 - -/* - * Enumerate shortcut groups - */ -#define DPENUMGROUPS_SHORTCUT 0x00000400 - -/* - * Enumerate staging area groups - */ -#define DPENUMGROUPS_STAGINGAREA 0x00000800 - -/* - * Enumerate hidden groups - */ -#define DPENUMGROUPS_HIDDEN 0x00001000 - -/* - * Enumerate the group's owner - */ -#define DPENUMPLAYERS_OWNER 0x00002000 - - -/**************************************************************************** - * - * CreatePlayer API flags - * - ****************************************************************************/ - -/* - * This flag indicates that this player should be designated - * the server player. The app should specify this at CreatePlayer. - */ -#define DPPLAYER_SERVERPLAYER DPENUMPLAYERS_SERVERPLAYER - -/* - * This flag indicates that this player should be designated - * a spectator. The app should specify this at CreatePlayer. - */ -#define DPPLAYER_SPECTATOR DPENUMPLAYERS_SPECTATOR - -/* - * This flag indicates that this player was created locally. - * (returned from GetPlayerFlags) - */ -#define DPPLAYER_LOCAL DPENUMPLAYERS_LOCAL - -/* - * This flag indicates that this player is the group's owner - * (Only returned in EnumGroupPlayers) - */ -#define DPPLAYER_OWNER DPENUMPLAYERS_OWNER - -/**************************************************************************** - * - * CreateGroup API flags - * - ****************************************************************************/ - - -/* - * This flag indicates that the StartSession can be called on the group. - * The app should specify this at CreateGroup, or CreateGroupInGroup. - */ -#define DPGROUP_STAGINGAREA DPENUMGROUPS_STAGINGAREA - -/* - * This flag indicates that this group was created locally. - * (returned from GetGroupFlags) - */ -#define DPGROUP_LOCAL DPENUMGROUPS_LOCAL - -/* - * This flag indicates that this group was created hidden. - */ -#define DPGROUP_HIDDEN DPENUMGROUPS_HIDDEN - - -/**************************************************************************** - * - * EnumSessions API flags - * - ****************************************************************************/ - -/* - * Enumerate sessions which can be joined - */ -#define DPENUMSESSIONS_AVAILABLE 0x00000001 - -/* - * Enumerate all sessions even if they can't be joined. - */ -#define DPENUMSESSIONS_ALL 0x00000002 - - -/* - * Start an asynchronous enum sessions - */ - #define DPENUMSESSIONS_ASYNC 0x00000010 - -/* - * Stop an asynchronous enum sessions - */ - #define DPENUMSESSIONS_STOPASYNC 0x00000020 - -/* - * Enumerate sessions even if they require a password - */ - #define DPENUMSESSIONS_PASSWORDREQUIRED 0x00000040 - -/* - * Return status about progress of enumeration instead of - * showing any status dialogs. - */ - #define DPENUMSESSIONS_RETURNSTATUS 0x00000080 - -/**************************************************************************** - * - * GetCaps and GetPlayerCaps API flags - * - ****************************************************************************/ - -/* - * The latency returned should be for guaranteed message sending. - * Default is non-guaranteed messaging. - */ -#define DPGETCAPS_GUARANTEED 0x00000001 - - -/**************************************************************************** - * - * GetGroupData, GetPlayerData API flags - * Remote and local Group/Player data is maintained separately. - * Default is DPGET_REMOTE. - * - ****************************************************************************/ - -/* - * Get the remote data (set by any DirectPlay object in - * the session using DPSET_REMOTE) - */ -#define DPGET_REMOTE 0x00000000 - -/* - * Get the local data (set by this DirectPlay object - * using DPSET_LOCAL) - */ -#define DPGET_LOCAL 0x00000001 - - -/**************************************************************************** - * - * Open API flags - * - ****************************************************************************/ - -/* - * Join the session that is described by the DPSESSIONDESC2 structure - */ -#define DPOPEN_JOIN 0x00000001 - -/* - * Create a new session as described by the DPSESSIONDESC2 structure - */ -#define DPOPEN_CREATE 0x00000002 - -/* - * Return status about progress of open instead of showing - * any status dialogs. - */ - #define DPOPEN_RETURNSTATUS DPENUMSESSIONS_RETURNSTATUS - - -/**************************************************************************** - * - * DPLCONNECTION flags - * - ****************************************************************************/ - -/* - * This application should create a new session as - * described by the DPSESIONDESC structure - */ -#define DPLCONNECTION_CREATESESSION DPOPEN_CREATE - -/* - * This application should join the session described by - * the DPSESIONDESC structure with the lpAddress data - */ -#define DPLCONNECTION_JOINSESSION DPOPEN_JOIN - -/**************************************************************************** - * - * Receive API flags - * Default is DPRECEIVE_ALL - * - ****************************************************************************/ - -/* - * Get the first message in the queue - */ -#define DPRECEIVE_ALL 0x00000001 - -/* - * Get the first message in the queue directed to a specific player - */ -#define DPRECEIVE_TOPLAYER 0x00000002 - -/* - * Get the first message in the queue from a specific player - */ -#define DPRECEIVE_FROMPLAYER 0x00000004 - -/* - * Get the message but don't remove it from the queue - */ -#define DPRECEIVE_PEEK 0x00000008 - - -/**************************************************************************** - * - * Send API flags - * - ****************************************************************************/ - -/* - * Send the message using a guaranteed send method. - * Default is non-guaranteed. - */ -#define DPSEND_GUARANTEED 0x00000001 - - -/* - * This flag is obsolete. It is ignored by DirectPlay - */ -#define DPSEND_HIGHPRIORITY 0x00000002 - -/* - * This flag is obsolete. It is ignored by DirectPlay - */ -#define DPSEND_OPENSTREAM 0x00000008 - -/* - * This flag is obsolete. It is ignored by DirectPlay - */ -#define DPSEND_CLOSESTREAM 0x00000010 - -/* - * Send the message digitally signed to ensure authenticity. - */ -#define DPSEND_SIGNED 0x00000020 - -/* - * Send the message with encryption to ensure privacy. - */ -#define DPSEND_ENCRYPTED 0x00000040 - -/* - * The message is a lobby system message - */ -#define DPSEND_LOBBYSYSTEMMESSAGE 0x00000080 - - -/* - * Send message asynchronously, must check caps - * before using this flag. It is always provided - * if the protocol flag is set. - */ -#define DPSEND_ASYNC 0x00000200 - -/* - * When an message is completed, don't tell me. - * by default the application is notified with a system message. - */ -#define DPSEND_NOSENDCOMPLETEMSG 0x00000400 - - -/* - * Maximum priority for sends available to applications - */ -#define DPSEND_MAX_PRI 0x0000FFFF -#define DPSEND_MAX_PRIORITY DPSEND_MAX_PRI - - -/**************************************************************************** - * - * SetGroupData, SetGroupName, SetPlayerData, SetPlayerName, - * SetSessionDesc API flags. - * Default is DPSET_REMOTE. - * - ****************************************************************************/ - -/* - * Propagate the data to all players in the session - */ -#define DPSET_REMOTE 0x00000000 - -/* - * Do not propagate the data to other players - */ -#define DPSET_LOCAL 0x00000001 - -/* - * Used with DPSET_REMOTE, use guaranteed message send to - * propagate the data - */ -#define DPSET_GUARANTEED 0x00000002 - -/**************************************************************************** - * - * GetMessageQueue API flags. - * Default is DPMESSAGEQUEUE_SEND - * - ****************************************************************************/ - -/* - * Get Send Queue - requires Service Provider Support - */ -#define DPMESSAGEQUEUE_SEND 0x00000001 - -/* - * Get Receive Queue - */ -#define DPMESSAGEQUEUE_RECEIVE 0x00000002 - - -/**************************************************************************** - * - * Connect API flags - * - ****************************************************************************/ - - -/* - * Start an asynchronous connect which returns status codes - */ -#define DPCONNECT_RETURNSTATUS (DPENUMSESSIONS_RETURNSTATUS) - - -/**************************************************************************** - * - * DirectPlay system messages and message data structures - * - * All system message come 'From' player DPID_SYSMSG. To determine what type - * of message it is, cast the lpData from Receive to DPMSG_GENERIC and check - * the dwType member against one of the following DPSYS_xxx constants. Once - * a match is found, cast the lpData to the corresponding of the DPMSG_xxx - * structures to access the data of the message. - * - ****************************************************************************/ - -/* - * A new player or group has been created in the session - * Use DPMSG_CREATEPLAYERORGROUP. Check dwPlayerType to see if it - * is a player or a group. - */ -#define DPSYS_CREATEPLAYERORGROUP 0x0003 - -/* - * A player has been deleted from the session - * Use DPMSG_DESTROYPLAYERORGROUP - */ -#define DPSYS_DESTROYPLAYERORGROUP 0x0005 - -/* - * A player has been added to a group - * Use DPMSG_ADDPLAYERTOGROUP - */ -#define DPSYS_ADDPLAYERTOGROUP 0x0007 - -/* - * A player has been removed from a group - * Use DPMSG_DELETEPLAYERFROMGROUP - */ -#define DPSYS_DELETEPLAYERFROMGROUP 0x0021 - -/* - * This DirectPlay object lost its connection with all the - * other players in the session. - * Use DPMSG_SESSIONLOST. - */ -#define DPSYS_SESSIONLOST 0x0031 - -/* - * The current host has left the session. - * This DirectPlay object is now the host. - * Use DPMSG_HOST. - */ -#define DPSYS_HOST 0x0101 - -/* - * The remote data associated with a player or - * group has changed. Check dwPlayerType to see - * if it is a player or a group - * Use DPMSG_SETPLAYERORGROUPDATA - */ -#define DPSYS_SETPLAYERORGROUPDATA 0x0102 - -/* - * The name of a player or group has changed. - * Check dwPlayerType to see if it is a player - * or a group. - * Use DPMSG_SETPLAYERORGROUPNAME - */ -#define DPSYS_SETPLAYERORGROUPNAME 0x0103 - -/* - * The session description has changed. - * Use DPMSG_SETSESSIONDESC - */ -#define DPSYS_SETSESSIONDESC 0x0104 - -/* - * A group has been added to a group - * Use DPMSG_ADDGROUPTOGROUP - */ -#define DPSYS_ADDGROUPTOGROUP 0x0105 - -/* - * A group has been removed from a group - * Use DPMSG_DELETEGROUPFROMGROUP - */ -#define DPSYS_DELETEGROUPFROMGROUP 0x0106 - -/* - * A secure player-player message has arrived. - * Use DPMSG_SECUREMESSAGE - */ -#define DPSYS_SECUREMESSAGE 0x0107 - -/* - * Start a new session. - * Use DPMSG_STARTSESSION - */ -#define DPSYS_STARTSESSION 0x0108 - -/* - * A chat message has arrived - * Use DPMSG_CHAT - */ -#define DPSYS_CHAT 0x0109 - -/* - * The owner of a group has changed - * Use DPMSG_SETGROUPOWNER - */ -#define DPSYS_SETGROUPOWNER 0x010A - -/* - * An async send has finished, failed or been cancelled - * Use DPMSG_SENDCOMPLETE - */ -#define DPSYS_SENDCOMPLETE 0x010d - - -/* - * Used in the dwPlayerType field to indicate if it applies to a group - * or a player - */ -#define DPPLAYERTYPE_GROUP 0x00000000 -#define DPPLAYERTYPE_PLAYER 0x00000001 - - -/* - * DPMSG_GENERIC - * Generic message structure used to identify the message type. - */ -typedef struct -{ - DWORD dwType; // Message type -} DPMSG_GENERIC, FAR *LPDPMSG_GENERIC; - -/* - * DPMSG_CREATEPLAYERORGROUP - * System message generated when a new player or group - * created in the session with information about it. - */ -typedef struct -{ - DWORD dwType; // Message type - DWORD dwPlayerType; // Is it a player or group - DPID dpId; // ID of the player or group - DWORD dwCurrentPlayers; // current # players & groups in session - LPVOID lpData; // pointer to remote data - DWORD dwDataSize; // size of remote data - DPNAME dpnName; // structure with name info - // the following fields are only available when using - // the IDirectPlay3 interface or greater - DPID dpIdParent; // id of parent group - DWORD dwFlags; // player or group flags -} DPMSG_CREATEPLAYERORGROUP, FAR *LPDPMSG_CREATEPLAYERORGROUP; - -/* - * DPMSG_DESTROYPLAYERORGROUP - * System message generated when a player or group is being - * destroyed in the session with information about it. - */ -typedef struct -{ - DWORD dwType; // Message type - DWORD dwPlayerType; // Is it a player or group - DPID dpId; // player ID being deleted - LPVOID lpLocalData; // copy of players local data - DWORD dwLocalDataSize; // sizeof local data - LPVOID lpRemoteData; // copy of players remote data - DWORD dwRemoteDataSize; // sizeof remote data - // the following fields are only available when using - // the IDirectPlay3 interface or greater - DPNAME dpnName; // structure with name info - DPID dpIdParent; // id of parent group - DWORD dwFlags; // player or group flags -} DPMSG_DESTROYPLAYERORGROUP, FAR *LPDPMSG_DESTROYPLAYERORGROUP; - -/* - * DPMSG_ADDPLAYERTOGROUP - * System message generated when a player is being added - * to a group. - */ -typedef struct -{ - DWORD dwType; // Message type - DPID dpIdGroup; // group ID being added to - DPID dpIdPlayer; // player ID being added -} DPMSG_ADDPLAYERTOGROUP, FAR *LPDPMSG_ADDPLAYERTOGROUP; - -/* - * DPMSG_DELETEPLAYERFROMGROUP - * System message generated when a player is being - * removed from a group - */ -typedef DPMSG_ADDPLAYERTOGROUP DPMSG_DELETEPLAYERFROMGROUP; -typedef DPMSG_DELETEPLAYERFROMGROUP FAR *LPDPMSG_DELETEPLAYERFROMGROUP; - -/* - * DPMSG_ADDGROUPTOGROUP - * System message generated when a group is being added - * to a group. - */ -typedef struct -{ - DWORD dwType; // Message type - DPID dpIdParentGroup; // group ID being added to - DPID dpIdGroup; // group ID being added -} DPMSG_ADDGROUPTOGROUP, FAR *LPDPMSG_ADDGROUPTOGROUP; - -/* - * DPMSG_DELETEGROUPFROMGROUP - * System message generated when a GROUP is being - * removed from a group - */ -typedef DPMSG_ADDGROUPTOGROUP DPMSG_DELETEGROUPFROMGROUP; -typedef DPMSG_DELETEGROUPFROMGROUP FAR *LPDPMSG_DELETEGROUPFROMGROUP; - -/* - * DPMSG_SETPLAYERORGROUPDATA - * System message generated when remote data for a player or - * group has changed. - */ -typedef struct -{ - DWORD dwType; // Message type - DWORD dwPlayerType; // Is it a player or group - DPID dpId; // ID of player or group - LPVOID lpData; // pointer to remote data - DWORD dwDataSize; // size of remote data -} DPMSG_SETPLAYERORGROUPDATA, FAR *LPDPMSG_SETPLAYERORGROUPDATA; - -/* - * DPMSG_SETPLAYERORGROUPNAME - * System message generated when the name of a player or - * group has changed. - */ -typedef struct -{ - DWORD dwType; // Message type - DWORD dwPlayerType; // Is it a player or group - DPID dpId; // ID of player or group - DPNAME dpnName; // structure with new name info -} DPMSG_SETPLAYERORGROUPNAME, FAR *LPDPMSG_SETPLAYERORGROUPNAME; - -/* - * DPMSG_SETSESSIONDESC - * System message generated when session desc has changed - */ -typedef struct -{ - DWORD dwType; // Message type - DPSESSIONDESC2 dpDesc; // Session desc -} DPMSG_SETSESSIONDESC, FAR *LPDPMSG_SETSESSIONDESC; - -/* - * DPMSG_HOST - * System message generated when the host has migrated to this - * DirectPlay object. - * - */ -typedef DPMSG_GENERIC DPMSG_HOST; -typedef DPMSG_HOST FAR *LPDPMSG_HOST; - -/* - * DPMSG_SESSIONLOST - * System message generated when the connection to the session is lost. - * - */ -typedef DPMSG_GENERIC DPMSG_SESSIONLOST; -typedef DPMSG_SESSIONLOST FAR *LPDPMSG_SESSIONLOST; - -/* - * DPMSG_SECUREMESSAGE - * System message generated when a player requests a secure send - */ -typedef struct -{ - DWORD dwType; // Message Type - DWORD dwFlags; // Signed/Encrypted - DPID dpIdFrom; // ID of Sending Player - LPVOID lpData; // Player message - DWORD dwDataSize; // Size of player message -} DPMSG_SECUREMESSAGE, FAR *LPDPMSG_SECUREMESSAGE; - -/* - * DPMSG_STARTSESSION - * System message containing all information required to - * start a new session - */ -typedef struct -{ - DWORD dwType; // Message type - LPDPLCONNECTION lpConn; // DPLCONNECTION structure -} DPMSG_STARTSESSION, FAR *LPDPMSG_STARTSESSION; - -/* - * DPMSG_CHAT - * System message containing a chat message - */ -typedef struct -{ - DWORD dwType; // Message type - DWORD dwFlags; // Message flags - DPID idFromPlayer; // ID of the Sending Player - DPID idToPlayer; // ID of the To Player - DPID idToGroup; // ID of the To Group - LPDPCHAT lpChat; // Pointer to a structure containing the chat message -} DPMSG_CHAT, FAR *LPDPMSG_CHAT; - -/* - * DPMSG_SETGROUPOWNER - * System message generated when the owner of a group has changed - */ -typedef struct -{ - DWORD dwType; // Message type - DPID idGroup; // ID of the group - DPID idNewOwner; // ID of the player that is the new owner - DPID idOldOwner; // ID of the player that used to be the owner -} DPMSG_SETGROUPOWNER, FAR *LPDPMSG_SETGROUPOWNER; - -/* - * DPMSG_SENDCOMPLETE - * System message generated when finished with an Async Send message - * - * NOTE SENDPARMS has an overlay for DPMSG_SENDCOMPLETE, don't - * change this message w/o changing SENDPARMS. - */ -typedef struct -{ - DWORD dwType; - DPID idFrom; - DPID idTo; - DWORD dwFlags; - DWORD dwPriority; - DWORD dwTimeout; - LPVOID lpvContext; - DWORD dwMsgID; - HRESULT hr; - DWORD dwSendTime; -} DPMSG_SENDCOMPLETE, *LPDPMSG_SENDCOMPLETE; - -/**************************************************************************** - * - * DIRECTPLAY ERRORS - * - * Errors are represented by negative values and cannot be combined. - * - ****************************************************************************/ -#define DP_OK S_OK -#define DPERR_ALREADYINITIALIZED MAKE_DPHRESULT( 5 ) -#define DPERR_ACCESSDENIED MAKE_DPHRESULT( 10 ) -#define DPERR_ACTIVEPLAYERS MAKE_DPHRESULT( 20 ) -#define DPERR_BUFFERTOOSMALL MAKE_DPHRESULT( 30 ) -#define DPERR_CANTADDPLAYER MAKE_DPHRESULT( 40 ) -#define DPERR_CANTCREATEGROUP MAKE_DPHRESULT( 50 ) -#define DPERR_CANTCREATEPLAYER MAKE_DPHRESULT( 60 ) -#define DPERR_CANTCREATESESSION MAKE_DPHRESULT( 70 ) -#define DPERR_CAPSNOTAVAILABLEYET MAKE_DPHRESULT( 80 ) -#define DPERR_EXCEPTION MAKE_DPHRESULT( 90 ) -#define DPERR_GENERIC E_FAIL -#define DPERR_INVALIDFLAGS MAKE_DPHRESULT( 120 ) -#define DPERR_INVALIDOBJECT MAKE_DPHRESULT( 130 ) -#define DPERR_INVALIDPARAM E_INVALIDARG -#define DPERR_INVALIDPARAMS DPERR_INVALIDPARAM -#define DPERR_INVALIDPLAYER MAKE_DPHRESULT( 150 ) -#define DPERR_INVALIDGROUP MAKE_DPHRESULT( 155 ) -#define DPERR_NOCAPS MAKE_DPHRESULT( 160 ) -#define DPERR_NOCONNECTION MAKE_DPHRESULT( 170 ) -#define DPERR_NOMEMORY E_OUTOFMEMORY -#define DPERR_OUTOFMEMORY DPERR_NOMEMORY -#define DPERR_NOMESSAGES MAKE_DPHRESULT( 190 ) -#define DPERR_NONAMESERVERFOUND MAKE_DPHRESULT( 200 ) -#define DPERR_NOPLAYERS MAKE_DPHRESULT( 210 ) -#define DPERR_NOSESSIONS MAKE_DPHRESULT( 220 ) -#define DPERR_PENDING E_PENDING -#define DPERR_SENDTOOBIG MAKE_DPHRESULT( 230 ) -#define DPERR_TIMEOUT MAKE_DPHRESULT( 240 ) -#define DPERR_UNAVAILABLE MAKE_DPHRESULT( 250 ) -#define DPERR_UNSUPPORTED E_NOTIMPL -#define DPERR_BUSY MAKE_DPHRESULT( 270 ) -#define DPERR_USERCANCEL MAKE_DPHRESULT( 280 ) -#define DPERR_NOINTERFACE E_NOINTERFACE -#define DPERR_CANNOTCREATESERVER MAKE_DPHRESULT( 290 ) -#define DPERR_PLAYERLOST MAKE_DPHRESULT( 300 ) -#define DPERR_SESSIONLOST MAKE_DPHRESULT( 310 ) -#define DPERR_UNINITIALIZED MAKE_DPHRESULT( 320 ) -#define DPERR_NONEWPLAYERS MAKE_DPHRESULT( 330 ) -#define DPERR_INVALIDPASSWORD MAKE_DPHRESULT( 340 ) -#define DPERR_CONNECTING MAKE_DPHRESULT( 350 ) -#define DPERR_CONNECTIONLOST MAKE_DPHRESULT( 360 ) -#define DPERR_UNKNOWNMESSAGE MAKE_DPHRESULT( 370 ) -#define DPERR_CANCELFAILED MAKE_DPHRESULT( 380 ) -#define DPERR_INVALIDPRIORITY MAKE_DPHRESULT( 390 ) -#define DPERR_NOTHANDLED MAKE_DPHRESULT( 400 ) -#define DPERR_CANCELLED MAKE_DPHRESULT( 410 ) -#define DPERR_ABORTED MAKE_DPHRESULT( 420 ) - - -#define DPERR_BUFFERTOOLARGE MAKE_DPHRESULT( 1000 ) -#define DPERR_CANTCREATEPROCESS MAKE_DPHRESULT( 1010 ) -#define DPERR_APPNOTSTARTED MAKE_DPHRESULT( 1020 ) -#define DPERR_INVALIDINTERFACE MAKE_DPHRESULT( 1030 ) -#define DPERR_NOSERVICEPROVIDER MAKE_DPHRESULT( 1040 ) -#define DPERR_UNKNOWNAPPLICATION MAKE_DPHRESULT( 1050 ) -#define DPERR_NOTLOBBIED MAKE_DPHRESULT( 1070 ) -#define DPERR_SERVICEPROVIDERLOADED MAKE_DPHRESULT( 1080 ) -#define DPERR_ALREADYREGISTERED MAKE_DPHRESULT( 1090 ) -#define DPERR_NOTREGISTERED MAKE_DPHRESULT( 1100 ) - -// -// Security related errors -// -#define DPERR_AUTHENTICATIONFAILED MAKE_DPHRESULT( 2000 ) -#define DPERR_CANTLOADSSPI MAKE_DPHRESULT( 2010 ) -#define DPERR_ENCRYPTIONFAILED MAKE_DPHRESULT( 2020 ) -#define DPERR_SIGNFAILED MAKE_DPHRESULT( 2030 ) -#define DPERR_CANTLOADSECURITYPACKAGE MAKE_DPHRESULT( 2040 ) -#define DPERR_ENCRYPTIONNOTSUPPORTED MAKE_DPHRESULT( 2050 ) -#define DPERR_CANTLOADCAPI MAKE_DPHRESULT( 2060 ) -#define DPERR_NOTLOGGEDIN MAKE_DPHRESULT( 2070 ) -#define DPERR_LOGONDENIED MAKE_DPHRESULT( 2080 ) - - -/**************************************************************************** - * - * dplay 1.0 obsolete structures + interfaces - * Included for compatibility only. New apps should - * use IDirectPlay2 - * - ****************************************************************************/ - -// define this to ignore obsolete interfaces and constants -#ifndef IDIRECTPLAY2_OR_GREATER - -#define DPOPEN_OPENSESSION DPOPEN_JOIN -#define DPOPEN_CREATESESSION DPOPEN_CREATE - -#define DPENUMSESSIONS_PREVIOUS 0x00000004 - -#define DPENUMPLAYERS_PREVIOUS 0x00000004 - -#define DPSEND_GUARANTEE DPSEND_GUARANTEED -#define DPSEND_TRYONCE 0x00000004 - -#define DPCAPS_NAMESERVICE 0x00000001 -#define DPCAPS_NAMESERVER DPCAPS_ISHOST -#define DPCAPS_GUARANTEED 0x00000004 - -#define DPLONGNAMELEN 52 -#define DPSHORTNAMELEN 20 -#define DPSESSIONNAMELEN 32 -#define DPPASSWORDLEN 16 -#define DPUSERRESERVED 16 - -#define DPSYS_ADDPLAYER 0x0003 -#define DPSYS_DELETEPLAYER 0x0005 - -#define DPSYS_DELETEGROUP 0x0020 -#define DPSYS_DELETEPLAYERFROMGRP 0x0021 -#define DPSYS_CONNECT 0x484b - -typedef struct -{ - DWORD dwType; - DWORD dwPlayerType; - DPID dpId; - char szLongName[DPLONGNAMELEN]; - char szShortName[DPSHORTNAMELEN]; - DWORD dwCurrentPlayers; -} DPMSG_ADDPLAYER; - -typedef DPMSG_ADDPLAYER DPMSG_ADDGROUP; - -typedef struct -{ - DWORD dwType; - DPID dpIdGroup; - DPID dpIdPlayer; -} DPMSG_GROUPADD; - -typedef DPMSG_GROUPADD DPMSG_GROUPDELETE; -typedef struct -{ - DWORD dwType; - DPID dpId; -} DPMSG_DELETEPLAYER; - -typedef BOOL (PASCAL *LPDPENUMPLAYERSCALLBACK)( - DPID dpId, - LPSTR lpFriendlyName, - LPSTR lpFormalName, - DWORD dwFlags, - LPVOID lpContext ); - -typedef struct -{ - DWORD dwSize; - GUID guidSession; - DWORD_PTR dwSession; - DWORD dwMaxPlayers; - DWORD dwCurrentPlayers; - DWORD dwFlags; - char szSessionName[DPSESSIONNAMELEN]; - char szUserField[DPUSERRESERVED]; - DWORD_PTR dwReserved1; - char szPassword[DPPASSWORDLEN]; - DWORD_PTR dwReserved2; - DWORD_PTR dwUser1; - DWORD_PTR dwUser2; - DWORD_PTR dwUser3; - DWORD_PTR dwUser4; -} DPSESSIONDESC,*LPDPSESSIONDESC; - -typedef BOOL (PASCAL * LPDPENUMSESSIONSCALLBACK)( - LPDPSESSIONDESC lpDPSessionDesc, - LPVOID lpContext, - LPDWORD lpdwTimeOut, - DWORD dwFlags); - -/* - * IDirectPlay - */ -#undef INTERFACE -#define INTERFACE IDirectPlay -DECLARE_INTERFACE_( IDirectPlay, IUnknown ) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - /*** IDirectPlay methods ***/ - STDMETHOD(AddPlayerToGroup) (THIS_ DPID, DPID) PURE; - STDMETHOD(Close) (THIS) PURE; - STDMETHOD(CreatePlayer) (THIS_ LPDPID,LPSTR,LPSTR,LPHANDLE) PURE; - STDMETHOD(CreateGroup) (THIS_ LPDPID,LPSTR,LPSTR) PURE; - STDMETHOD(DeletePlayerFromGroup)(THIS_ DPID,DPID) PURE; - STDMETHOD(DestroyPlayer) (THIS_ DPID) PURE; - STDMETHOD(DestroyGroup) (THIS_ DPID) PURE; - STDMETHOD(EnableNewPlayers) (THIS_ BOOL) PURE; - STDMETHOD(EnumGroupPlayers) (THIS_ DPID, LPDPENUMPLAYERSCALLBACK,LPVOID,DWORD) PURE; - STDMETHOD(EnumGroups) (THIS_ DWORD_PTR, LPDPENUMPLAYERSCALLBACK,LPVOID,DWORD) PURE; - STDMETHOD(EnumPlayers) (THIS_ DWORD_PTR, LPDPENUMPLAYERSCALLBACK,LPVOID,DWORD) PURE; - STDMETHOD(EnumSessions) (THIS_ LPDPSESSIONDESC,DWORD,LPDPENUMSESSIONSCALLBACK,LPVOID,DWORD) PURE; - STDMETHOD(GetCaps) (THIS_ LPDPCAPS) PURE; - STDMETHOD(GetMessageCount) (THIS_ DPID, LPDWORD) PURE; - STDMETHOD(GetPlayerCaps) (THIS_ DPID, LPDPCAPS) PURE; - STDMETHOD(GetPlayerName) (THIS_ DPID,LPSTR,LPDWORD,LPSTR,LPDWORD) PURE; - STDMETHOD(Initialize) (THIS_ LPGUID) PURE; - STDMETHOD(Open) (THIS_ LPDPSESSIONDESC) PURE; - STDMETHOD(Receive) (THIS_ LPDPID,LPDPID,DWORD,LPVOID,LPDWORD) PURE; - STDMETHOD(SaveSession) (THIS_ LPSTR) PURE; - STDMETHOD(Send) (THIS_ DPID, DPID, DWORD, LPVOID, DWORD) PURE; - STDMETHOD(SetPlayerName) (THIS_ DPID,LPSTR,LPSTR) PURE; -}; - -/**************************************************************************** - * - * IDirectPlay interface macros - * - ****************************************************************************/ - -#if !defined(__cplusplus) || defined(CINTERFACE) - -#define IDirectPlay_AddPlayerToGroup(p,a,b) (p)->lpVtbl->AddPlayerToGroup(p,a,b) -#define IDirectPlay_Close(p) (p)->lpVtbl->Close(p) -#define IDirectPlay_CreateGroup(p,a,b,c) (p)->lpVtbl->CreateGroup(p,a,b,c) -#define IDirectPlay_CreatePlayer(p,a,b,c,d) (p)->lpVtbl->CreatePlayer(p,a,b,c,d) -#define IDirectPlay_DeletePlayerFromGroup(p,a,b) (p)->lpVtbl->DeletePlayerFromGroup(p,a,b) -#define IDirectPlay_DestroyGroup(p,a) (p)->lpVtbl->DestroyGroup(p,a) -#define IDirectPlay_DestroyPlayer(p,a) (p)->lpVtbl->DestroyPlayer(p,a) -#define IDirectPlay_EnableNewPlayers(p,a) (p)->lpVtbl->EnableNewPlayers(p,a) -#define IDirectPlay_EnumGroupPlayers(p,a,b,c,d) (p)->lpVtbl->EnumGroupPlayers(p,a,b,c,d) -#define IDirectPlay_EnumGroups(p,a,b,c,d) (p)->lpVtbl->EnumGroups(p,a,b,c,d) -#define IDirectPlay_EnumPlayers(p,a,b,c,d) (p)->lpVtbl->EnumPlayers(p,a,b,c,d) -#define IDirectPlay_EnumSessions(p,a,b,c,d,e) (p)->lpVtbl->EnumSessions(p,a,b,c,d,e) -#define IDirectPlay_GetCaps(p,a) (p)->lpVtbl->GetCaps(p,a) -#define IDirectPlay_GetMessageCount(p,a,b) (p)->lpVtbl->GetMessageCount(p,a,b) -#define IDirectPlay_GetPlayerCaps(p,a,b) (p)->lpVtbl->GetPlayerCaps(p,a,b) -#define IDirectPlay_GetPlayerName(p,a,b,c,d,e) (p)->lpVtbl->GetPlayerName(p,a,b,c,d,e) -#define IDirectPlay_Initialize(p,a) (p)->lpVtbl->Initialize(p,a) -#define IDirectPlay_Open(p,a) (p)->lpVtbl->Open(p,a) -#define IDirectPlay_Receive(p,a,b,c,d,e) (p)->lpVtbl->Receive(p,a,b,c,d,e) -#define IDirectPlay_SaveSession(p,a) (p)->lpVtbl->SaveSession(p,a) -#define IDirectPlay_Send(p,a,b,c,d,e) (p)->lpVtbl->Send(p,a,b,c,d,e) -#define IDirectPlay_SetPlayerName(p,a,b,c) (p)->lpVtbl->SetPlayerName(p,a,b,c) - -#else /* C++ */ - -#define IDirectPlay_AddPlayerToGroup(p,a,b) (p)->AddPlayerToGroup(a,b) -#define IDirectPlay_Close(p) (p)->Close() -#define IDirectPlay_CreateGroup(p,a,b,c) (p)->CreateGroup(a,b,c) -#define IDirectPlay_CreatePlayer(p,a,b,c,d) (p)->CreatePlayer(a,b,c,d) -#define IDirectPlay_DeletePlayerFromGroup(p,a,b) (p)->DeletePlayerFromGroup(a,b) -#define IDirectPlay_DestroyGroup(p,a) (p)->DestroyGroup(a) -#define IDirectPlay_DestroyPlayer(p,a) (p)->DestroyPlayer(a) -#define IDirectPlay_EnableNewPlayers(p,a) (p)->EnableNewPlayers(a) -#define IDirectPlay_EnumGroupPlayers(p,a,b,c,d) (p)->EnumGroupPlayers(a,b,c,d) -#define IDirectPlay_EnumGroups(p,a,b,c,d) (p)->EnumGroups(a,b,c,d) -#define IDirectPlay_EnumPlayers(p,a,b,c,d) (p)->EnumPlayers(a,b,c,d) -#define IDirectPlay_EnumSessions(p,a,b,c,d,e) (p)->EnumSessions(a,b,c,d,e) -#define IDirectPlay_GetCaps(p,a) (p)->GetCaps(a) -#define IDirectPlay_GetMessageCount(p,a,b) (p)->GetMessageCount(a,b) -#define IDirectPlay_GetPlayerCaps(p,a,b) (p)->GetPlayerCaps(a,b) -#define IDirectPlay_GetPlayerName(p,a,b,c,d,e) (p)->GetPlayerName(a,b,c,d,e) -#define IDirectPlay_Initialize(p,a) (p)->Initialize(a) -#define IDirectPlay_Open(p,a) (p)->Open(a) -#define IDirectPlay_Receive(p,a,b,c,d,e) (p)->Receive(a,b,c,d,e) -#define IDirectPlay_SaveSession(p,a) (p)->SaveSession(a) -#define IDirectPlay_Send(p,a,b,c,d,e) (p)->Send(a,b,c,d,e) -#define IDirectPlay_SetPlayerName(p,a,b,c) (p)->SetPlayerName(a,b,c) - -#endif - -DEFINE_GUID(IID_IDirectPlay, 0x5454e9a0, 0xdb65, 0x11ce, 0x92, 0x1c, 0x00, 0xaa, 0x00, 0x6c, 0x49, 0x72); - -#endif // IDIRECTPLAY2_OR_GREATER - -/**************************************************************************** - * - * IDirectPlay macros (included regardless of IDIRECTPLAY2_OR_GREATER flag) - * - ****************************************************************************/ - -#if !defined(__cplusplus) || defined(CINTERFACE) - -#define IDirectPlay_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IDirectPlay_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDirectPlay_Release(p) (p)->lpVtbl->Release(p) - -#else - -#define IDirectPlay_QueryInterface(p,a,b) (p)->QueryInterface(a,b) -#define IDirectPlay_AddRef(p) (p)->AddRef() -#define IDirectPlay_Release(p) (p)->Release() - -#endif // IDirectPlay interface macros - -#ifdef __cplusplus -}; -#endif - -/* restore warning settings */ -#if _MSC_VER >= 1200 -#pragma warning(pop) -#else -#pragma warning(default:4201) -#endif - -#endif - +/*==========================================================================; + * + * Copyright (C) 1994-1997 Microsoft Corporation. All Rights Reserved. + * + * File: dplay.h + * Content: DirectPlay include file + * + ***************************************************************************/ + +#ifndef __DPLAY_INCLUDED__ +#define __DPLAY_INCLUDED__ + +#include // for DECLARE_INTERFACE and HRESULT + +/* avoid warnings in MSVC at Level4 */ +#if _MSC_VER >= 1200 +#pragma warning(push) +#endif +#pragma warning(disable:4201) + + +/* + * Some types + */ + +#ifndef _WIN64 +#define DWORD_PTR DWORD +#endif + +typedef LPVOID (*LPRGLPVOID)[]; +typedef LPRGLPVOID PRGPVOID, LPRGPVOID, PRGLPVOID, PAPVOID, LPAPVOID, PALPVOID, LPALPVOID; + +#define VOL volatile +typedef VOID *VOL LPVOIDV; + + +#define _FACDP 0x877 +#define MAKE_DPHRESULT( code ) MAKE_HRESULT( 1, _FACDP, code ) + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * GUIDS used by DirectPlay objects + */ +DEFINE_GUID(IID_IDirectPlay2, 0x2b74f7c0, 0x9154, 0x11cf, 0xa9, 0xcd, 0x0, 0xaa, 0x0, 0x68, 0x86, 0xe3); +DEFINE_GUID(IID_IDirectPlay2A,0x9d460580, 0xa822, 0x11cf, 0x96, 0xc, 0x0, 0x80, 0xc7, 0x53, 0x4e, 0x82); + +DEFINE_GUID(IID_IDirectPlay3, 0x133efe40, 0x32dc, 0x11d0, 0x9c, 0xfb, 0x0, 0xa0, 0xc9, 0xa, 0x43, 0xcb); +DEFINE_GUID(IID_IDirectPlay3A,0x133efe41, 0x32dc, 0x11d0, 0x9c, 0xfb, 0x0, 0xa0, 0xc9, 0xa, 0x43, 0xcb); + +DEFINE_GUID(IID_IDirectPlay4, 0xab1c530, 0x4745, 0x11d1, 0xa7, 0xa1, 0x0, 0x0, 0xf8, 0x3, 0xab, 0xfc); +DEFINE_GUID(IID_IDirectPlay4A,0xab1c531, 0x4745, 0x11d1, 0xa7, 0xa1, 0x0, 0x0, 0xf8, 0x3, 0xab, 0xfc); + +// {D1EB6D20-8923-11d0-9D97-00A0C90A43CB} +DEFINE_GUID(CLSID_DirectPlay,0xd1eb6d20, 0x8923, 0x11d0, 0x9d, 0x97, 0x0, 0xa0, 0xc9, 0xa, 0x43, 0xcb); + +/* + * GUIDS used by Service Providers shipped with DirectPlay + * Use these to identify Service Provider returned by EnumConnections + */ + +// GUID for IPX service provider +// {685BC400-9D2C-11cf-A9CD-00AA006886E3} +DEFINE_GUID(DPSPGUID_IPX, +0x685bc400, 0x9d2c, 0x11cf, 0xa9, 0xcd, 0x0, 0xaa, 0x0, 0x68, 0x86, 0xe3); + +// GUID for TCP/IP service provider +// 36E95EE0-8577-11cf-960C-0080C7534E82 +DEFINE_GUID(DPSPGUID_TCPIP, +0x36E95EE0, 0x8577, 0x11cf, 0x96, 0xc, 0x0, 0x80, 0xc7, 0x53, 0x4e, 0x82); + +// GUID for Serial service provider +// {0F1D6860-88D9-11cf-9C4E-00A0C905425E} +DEFINE_GUID(DPSPGUID_SERIAL, +0xf1d6860, 0x88d9, 0x11cf, 0x9c, 0x4e, 0x0, 0xa0, 0xc9, 0x5, 0x42, 0x5e); + +// GUID for Modem service provider +// {44EAA760-CB68-11cf-9C4E-00A0C905425E} +DEFINE_GUID(DPSPGUID_MODEM, +0x44eaa760, 0xcb68, 0x11cf, 0x9c, 0x4e, 0x0, 0xa0, 0xc9, 0x5, 0x42, 0x5e); + +/**************************************************************************** + * + * DirectPlay Structures + * + * Various structures used to invoke DirectPlay. + * + ****************************************************************************/ + +#ifndef IDIRECTPLAY2_OR_GREATER +typedef struct IDirectPlay FAR *LPDIRECTPLAY; +#else +typedef struct IUnknown FAR *LPDIRECTPLAY; +#endif + +typedef struct IDirectPlay2 FAR *LPDIRECTPLAY2; +typedef struct IDirectPlay2 FAR *LPDIRECTPLAY2A; +typedef struct IDirectPlay2 IDirectPlay2A; + +typedef struct IDirectPlay3 FAR *LPDIRECTPLAY3; +typedef struct IDirectPlay3 FAR *LPDIRECTPLAY3A; +typedef struct IDirectPlay3 IDirectPlay3A; + +typedef struct IDirectPlay4 FAR *LPDIRECTPLAY4; +typedef struct IDirectPlay4 FAR *LPDIRECTPLAY4A; +typedef struct IDirectPlay4 IDirectPlay4A; + +/* + * DPID + * DirectPlay player and group ID + */ +typedef DWORD DPID, FAR *LPDPID; + +/* + * DPID that system messages come from + */ +#define DPID_SYSMSG 0 + +/* + * DPID representing all players in the session + */ +#define DPID_ALLPLAYERS 0 + +/* + * DPID representing the server player + */ +#define DPID_SERVERPLAYER 1 + + +/* + * DPID representing the maxiumum ID in the range of DPID's reserved for + * use by DirectPlay. + */ +#define DPID_RESERVEDRANGE 100 + +/* + * The player ID is unknown (used with e.g. DPSESSION_NOMESSAGEID) + */ +#define DPID_UNKNOWN 0xFFFFFFFF + +/* + * DPCAPS + * Used to obtain the capabilities of a DirectPlay object + */ +typedef struct +{ + DWORD dwSize; // Size of structure, in bytes + DWORD dwFlags; // DPCAPS_xxx flags + DWORD dwMaxBufferSize; // Maximum message size, in bytes, for this service provider + DWORD dwMaxQueueSize; // Obsolete. + DWORD dwMaxPlayers; // Maximum players/groups (local + remote) + DWORD dwHundredBaud; // Bandwidth in 100 bits per second units; + // i.e. 24 is 2400, 96 is 9600, etc. + DWORD dwLatency; // Estimated latency; 0 = unknown + DWORD dwMaxLocalPlayers; // Maximum # of locally created players allowed + DWORD dwHeaderLength; // Maximum header length, in bytes, on messages + // added by the service provider + DWORD dwTimeout; // Service provider's suggested timeout value + // This is how long DirectPlay will wait for + // responses to system messages +} DPCAPS, FAR *LPDPCAPS; + +/* + * This DirectPlay object is the session host. If the host exits the + * session, another application will become the host and receive a + * DPSYS_HOST system message. + */ +#define DPCAPS_ISHOST 0x00000002 + +/* + * The service provider bound to this DirectPlay object can optimize + * group messaging. + */ +#define DPCAPS_GROUPOPTIMIZED 0x00000008 + +/* + * The service provider bound to this DirectPlay object can optimize + * keep alives (see DPSESSION_KEEPALIVE) + */ +#define DPCAPS_KEEPALIVEOPTIMIZED 0x00000010 + +/* + * The service provider bound to this DirectPlay object can optimize + * guaranteed message delivery. + */ +#define DPCAPS_GUARANTEEDOPTIMIZED 0x00000020 + +/* + * This DirectPlay object supports guaranteed message delivery. + */ +#define DPCAPS_GUARANTEEDSUPPORTED 0x00000040 + +/* + * This DirectPlay object supports digital signing of messages. + */ +#define DPCAPS_SIGNINGSUPPORTED 0x00000080 + +/* + * This DirectPlay object supports encryption of messages. + */ +#define DPCAPS_ENCRYPTIONSUPPORTED 0x00000100 + +/* + * This DirectPlay player was created on this machine + */ +#define DPPLAYERCAPS_LOCAL 0x00000800 + +/* + * Current Open settings supports all forms of Cancel + */ +#define DPCAPS_ASYNCCANCELSUPPORTED 0x00001000 + +/* + * Current Open settings supports CancelAll, but not Cancel + */ +#define DPCAPS_ASYNCCANCELALLSUPPORTED 0x00002000 + +/* + * Current Open settings supports Send Timeouts for sends + */ +#define DPCAPS_SENDTIMEOUTSUPPORTED 0x00004000 + +/* + * Current Open settings supports send priority + */ +#define DPCAPS_SENDPRIORITYSUPPORTED 0x00008000 + +/* + * Current Open settings supports DPSEND_ASYNC flag + */ +#define DPCAPS_ASYNCSUPPORTED 0x00010000 + + +/* + * DPSESSIONDESC2 + * Used to describe the properties of a DirectPlay + * session instance + */ +typedef struct +{ + DWORD dwSize; // Size of structure + DWORD dwFlags; // DPSESSION_xxx flags + GUID guidInstance; // ID for the session instance + GUID guidApplication; // GUID of the DirectPlay application. + // GUID_NULL for all applications. + DWORD dwMaxPlayers; // Maximum # players allowed in session + DWORD dwCurrentPlayers; // Current # players in session (read only) + union + { // Name of the session + LPWSTR lpszSessionName; // Unicode + LPSTR lpszSessionNameA; // ANSI + }; + union + { // Password of the session (optional) + LPWSTR lpszPassword; // Unicode + LPSTR lpszPasswordA; // ANSI + }; + DWORD_PTR dwReserved1; // Reserved for future MS use. + DWORD_PTR dwReserved2; + DWORD_PTR dwUser1; // For use by the application + DWORD_PTR dwUser2; + DWORD_PTR dwUser3; + DWORD_PTR dwUser4; +} DPSESSIONDESC2, FAR *LPDPSESSIONDESC2; + +typedef DPSESSIONDESC2 * VOL LPDPSESSIONDESC2_V; + +/* + * LPCDPSESSIONDESC2 + * A constant pointer to DPSESSIONDESC2 + */ +typedef const DPSESSIONDESC2 FAR *LPCDPSESSIONDESC2; + +/* + * Applications cannot create new players in this session. + */ +#define DPSESSION_NEWPLAYERSDISABLED 0x00000001 + +/* + * If the DirectPlay object that created the session, the host, + * quits, then the host will attempt to migrate to another + * DirectPlay object so that new players can continue to be created + * and new applications can join the session. + */ +#define DPSESSION_MIGRATEHOST 0x00000004 + +/* + * This flag tells DirectPlay not to set the idPlayerTo and idPlayerFrom + * fields in player messages. This cuts two DWORD's off the message + * overhead. + */ +#define DPSESSION_NOMESSAGEID 0x00000008 + + +/* + * This flag tells DirectPlay to not allow any new applications to + * join the session. Applications already in the session can still + * create new players. + */ +#define DPSESSION_JOINDISABLED 0x00000020 + +/* + * This flag tells DirectPlay to detect when remote players + * exit abnormally (e.g. their computer or modem gets unplugged) + */ +#define DPSESSION_KEEPALIVE 0x00000040 + +/* + * This flag tells DirectPlay not to send a message to all players + * when a players remote data changes + */ +#define DPSESSION_NODATAMESSAGES 0x00000080 + +/* + * This flag indicates that the session belongs to a secure server + * and needs user authentication + */ +#define DPSESSION_SECURESERVER 0x00000100 + +/* + * This flag indicates that the session is private and requirs a password + * for EnumSessions as well as Open. + */ +#define DPSESSION_PRIVATE 0x00000200 + +/* + * This flag indicates that the session requires a password for joining. + */ +#define DPSESSION_PASSWORDREQUIRED 0x00000400 + +/* + * This flag tells DirectPlay to route all messages through the server + */ +#define DPSESSION_MULTICASTSERVER 0x00000800 + +/* + * This flag tells DirectPlay to only download information about the + * DPPLAYER_SERVERPLAYER. + */ +#define DPSESSION_CLIENTSERVER 0x00001000 + +/* + * This flag tells DirectPlay to use the protocol built into dplay + * for reliability and statistics all the time. When this bit is + * set, only other sessions with this bit set can join or be joined. + */ +#define DPSESSION_DIRECTPLAYPROTOCOL 0x00002000 + +/* + * This flag tells DirectPlay that preserving order of received + * packets is not important, when using reliable delivery. This + * will allow messages to be indicated out of order if preceding + * messages have not yet arrived. Otherwise DPLAY will wait for + * earlier messages before delivering later reliable messages. + */ +#define DPSESSION_NOPRESERVEORDER 0x00004000 + + +/* + * This flag tells DirectPlay to optimize communication for latency + */ +#define DPSESSION_OPTIMIZELATENCY 0x00008000 + +/* + * This flag allows lobby launched games that aren't voice enabled + * to get voice capabilities. + */ +#define DPSESSION_ALLOWVOICERETRO 0x00010000 + +/* + * This flag supresses transmission of session desc changes. + * DPSESSION_NODATAMESSAGES was supposed to do that, but SetSessionDesc + * was ignoring the flag and some apps depended on the broken behavior, this + * flag allows applications to get the right behaviour without breaking apps depending + * on old broken behavior. + */ +#define DPSESSION_NOSESSIONDESCMESSAGES 0x00020000 + +/* + * DPNAME + * Used to hold the name of a DirectPlay entity + * like a player or a group + */ +typedef struct +{ + DWORD dwSize; // Size of structure + DWORD dwFlags; // Not used. Must be zero. + union + { // The short or friendly name + LPWSTR lpszShortName; // Unicode + LPSTR lpszShortNameA; // ANSI + }; + union + { // The long or formal name + LPWSTR lpszLongName; // Unicode + LPSTR lpszLongNameA; // ANSI + }; + +} DPNAME, FAR *LPDPNAME; + +/* + * LPCDPNAME + * A constant pointer to DPNAME + */ +typedef const DPNAME FAR *LPCDPNAME; + +/* + * DPCREDENTIALS + * Used to hold the user name and password of a DirectPlay user + */ +typedef struct +{ + DWORD dwSize; // Size of structure + DWORD dwFlags; // Not used. Must be zero. + union + { // User name of the account + LPWSTR lpszUsername; // Unicode + LPSTR lpszUsernameA; // ANSI + }; + union + { // Password of the account + LPWSTR lpszPassword; // Unicode + LPSTR lpszPasswordA; // ANSI + }; + union + { // Domain name of the account + LPWSTR lpszDomain; // Unicode + LPSTR lpszDomainA; // ANSI + }; +} DPCREDENTIALS, FAR *LPDPCREDENTIALS; + +typedef const DPCREDENTIALS FAR *LPCDPCREDENTIALS; + +/* + * DPSECURITYDESC + * Used to describe the security properties of a DirectPlay + * session instance + */ +typedef struct +{ + DWORD dwSize; // Size of structure + DWORD dwFlags; // Not used. Must be zero. + union + { // SSPI provider name + LPWSTR lpszSSPIProvider; // Unicode + LPSTR lpszSSPIProviderA; // ANSI + }; + union + { // CAPI provider name + LPWSTR lpszCAPIProvider; // Unicode + LPSTR lpszCAPIProviderA; // ANSI + }; + DWORD dwCAPIProviderType; // Crypto Service Provider type + DWORD dwEncryptionAlgorithm; // Encryption Algorithm type +} DPSECURITYDESC, FAR *LPDPSECURITYDESC; + +typedef const DPSECURITYDESC FAR *LPCDPSECURITYDESC; + +/* + * DPACCOUNTDESC + * Used to describe a user membership account + */ +typedef struct +{ + DWORD dwSize; // Size of structure + DWORD dwFlags; // Not used. Must be zero. + union + { // Account identifier + LPWSTR lpszAccountID; // Unicode + LPSTR lpszAccountIDA; // ANSI + }; +} DPACCOUNTDESC, FAR *LPDPACCOUNTDESC; + +typedef const DPACCOUNTDESC FAR *LPCDPACCOUNTDESC; + +/* + * LPCGUID + * A constant pointer to a guid + */ +typedef const GUID FAR *LPCGUID; + +/* + * DPLCONNECTION + * Used to hold all in the informaion needed to connect + * an application to a session or create a session + */ +typedef struct +{ + DWORD dwSize; // Size of this structure + DWORD dwFlags; // Flags specific to this structure + LPDPSESSIONDESC2 lpSessionDesc; // Pointer to session desc to use on connect + LPDPNAME lpPlayerName; // Pointer to Player name structure + GUID guidSP; // GUID of the DPlay SP to use + LPVOID lpAddress; // Address for service provider + DWORD dwAddressSize; // Size of address data +} DPLCONNECTION, FAR *LPDPLCONNECTION; + +/* + * LPCDPLCONNECTION + * A constant pointer to DPLCONNECTION + */ +typedef const DPLCONNECTION FAR *LPCDPLCONNECTION; + +/* + * DPCHAT + * Used to hold the a DirectPlay chat message + */ +typedef struct +{ + DWORD dwSize; + DWORD dwFlags; + union + { // Message string + LPWSTR lpszMessage; // Unicode + LPSTR lpszMessageA; // ANSI + }; +} DPCHAT, FAR * LPDPCHAT; + +/* + * SGBUFFER + * Scatter Gather Buffer used for SendEx + */ +typedef struct +{ + UINT len; // length of buffer data + PUCHAR pData; // pointer to buffer data +} SGBUFFER, *PSGBUFFER, FAR *LPSGBUFFER; + + +/**************************************************************************** + * + * Prototypes for DirectPlay callback functions + * + ****************************************************************************/ + +/* + * Callback for IDirectPlay2::EnumSessions + */ +typedef BOOL (FAR PASCAL * LPDPENUMSESSIONSCALLBACK2)( + LPCDPSESSIONDESC2 lpThisSD, + LPDWORD lpdwTimeOut, + DWORD dwFlags, + LPVOID lpContext ); + +/* + * This flag is set on the EnumSessions callback dwFlags parameter when + * the time out has occurred. There will be no session data for this + * callback. If *lpdwTimeOut is set to a non-zero value and the + * EnumSessionsCallback function returns TRUE then EnumSessions will + * continue waiting until the next timeout occurs. Timeouts are in + * milliseconds. + */ +#define DPESC_TIMEDOUT 0x00000001 + + +/* + * Callback for IDirectPlay2::EnumPlayers + * IDirectPlay2::EnumGroups + * IDirectPlay2::EnumGroupPlayers + */ +typedef BOOL (FAR PASCAL *LPDPENUMPLAYERSCALLBACK2)( + DPID dpId, + DWORD dwPlayerType, + LPCDPNAME lpName, + DWORD dwFlags, + LPVOID lpContext ); + + +/* + * Unicode callback for DirectPlayEnumerate + * This callback prototype will be used if compiling + * for Unicode strings + */ +typedef BOOL (FAR PASCAL * LPDPENUMDPCALLBACK)( + LPGUID lpguidSP, + LPWSTR lpSPName, + DWORD dwMajorVersion, + DWORD dwMinorVersion, + LPVOID lpContext); + +/* + * ANSI callback for DirectPlayEnumerate + * This callback prototype will be used if compiling + * for ANSI strings + */ +typedef BOOL (FAR PASCAL * LPDPENUMDPCALLBACKA)( + LPGUID lpguidSP, + LPSTR lpSPName, + DWORD dwMajorVersion, + DWORD dwMinorVersion, + LPVOID lpContext); + +/* + * Callback for IDirectPlay3(A)::EnumConnections + */ +typedef BOOL (FAR PASCAL * LPDPENUMCONNECTIONSCALLBACK)( + LPCGUID lpguidSP, + LPVOID lpConnection, + DWORD dwConnectionSize, + LPCDPNAME lpName, + DWORD dwFlags, + LPVOID lpContext); + + +/* + * API's + */ + +#ifdef UNICODE +#define DirectPlayEnumerate DirectPlayEnumerateW +#else +#define DirectPlayEnumerate DirectPlayEnumerateA +#endif // UNICODE + +extern HRESULT WINAPI DirectPlayEnumerateA( LPDPENUMDPCALLBACKA, LPVOID ); +extern HRESULT WINAPI DirectPlayEnumerateW( LPDPENUMDPCALLBACK, LPVOID ); +extern HRESULT WINAPI DirectPlayCreate( LPGUID lpGUID, LPDIRECTPLAY *lplpDP, IUnknown *pUnk); + +/**************************************************************************** + * + * IDirectPlay2 (and IDirectPlay2A) Interface + * + ****************************************************************************/ + +#undef INTERFACE +#define INTERFACE IDirectPlay2 +DECLARE_INTERFACE_( IDirectPlay2, IUnknown ) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + /*** IDirectPlay2 methods ***/ + STDMETHOD(AddPlayerToGroup) (THIS_ DPID, DPID) PURE; + STDMETHOD(Close) (THIS) PURE; + STDMETHOD(CreateGroup) (THIS_ LPDPID,LPDPNAME,LPVOID,DWORD,DWORD) PURE; + STDMETHOD(CreatePlayer) (THIS_ LPDPID,LPDPNAME,HANDLE,LPVOID,DWORD,DWORD) PURE; + STDMETHOD(DeletePlayerFromGroup)(THIS_ DPID,DPID) PURE; + STDMETHOD(DestroyGroup) (THIS_ DPID) PURE; + STDMETHOD(DestroyPlayer) (THIS_ DPID) PURE; + STDMETHOD(EnumGroupPlayers) (THIS_ DPID,LPGUID,LPDPENUMPLAYERSCALLBACK2,LPVOID,DWORD) PURE; + STDMETHOD(EnumGroups) (THIS_ LPGUID,LPDPENUMPLAYERSCALLBACK2,LPVOID,DWORD) PURE; + STDMETHOD(EnumPlayers) (THIS_ LPGUID,LPDPENUMPLAYERSCALLBACK2,LPVOID,DWORD) PURE; + STDMETHOD(EnumSessions) (THIS_ LPDPSESSIONDESC2,DWORD,LPDPENUMSESSIONSCALLBACK2,LPVOID,DWORD) PURE; + STDMETHOD(GetCaps) (THIS_ LPDPCAPS,DWORD) PURE; + STDMETHOD(GetGroupData) (THIS_ DPID,LPVOID,LPDWORD,DWORD) PURE; + STDMETHOD(GetGroupName) (THIS_ DPID,LPVOID,LPDWORD) PURE; + STDMETHOD(GetMessageCount) (THIS_ DPID, LPDWORD) PURE; + STDMETHOD(GetPlayerAddress) (THIS_ DPID,LPVOID,LPDWORD) PURE; + STDMETHOD(GetPlayerCaps) (THIS_ DPID,LPDPCAPS,DWORD) PURE; + STDMETHOD(GetPlayerData) (THIS_ DPID,LPVOID,LPDWORD,DWORD) PURE; + STDMETHOD(GetPlayerName) (THIS_ DPID,LPVOID,LPDWORD) PURE; + STDMETHOD(GetSessionDesc) (THIS_ LPVOID,LPDWORD) PURE; + STDMETHOD(Initialize) (THIS_ LPGUID) PURE; + STDMETHOD(Open) (THIS_ LPDPSESSIONDESC2,DWORD) PURE; + STDMETHOD(Receive) (THIS_ LPDPID,LPDPID,DWORD,LPVOID,LPDWORD) PURE; + STDMETHOD(Send) (THIS_ DPID, DPID, DWORD, LPVOID, DWORD) PURE; + STDMETHOD(SetGroupData) (THIS_ DPID,LPVOID,DWORD,DWORD) PURE; + STDMETHOD(SetGroupName) (THIS_ DPID,LPDPNAME,DWORD) PURE; + STDMETHOD(SetPlayerData) (THIS_ DPID,LPVOID,DWORD,DWORD) PURE; + STDMETHOD(SetPlayerName) (THIS_ DPID,LPDPNAME,DWORD) PURE; + STDMETHOD(SetSessionDesc) (THIS_ LPDPSESSIONDESC2,DWORD) PURE; +}; + +/**************************************************************************** + * + * IDirectPlay2 interface macros + * + ****************************************************************************/ + +#if !defined(__cplusplus) || defined(CINTERFACE) + +#define IDirectPlay2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDirectPlay2_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectPlay2_Release(p) (p)->lpVtbl->Release(p) +#define IDirectPlay2_AddPlayerToGroup(p,a,b) (p)->lpVtbl->AddPlayerToGroup(p,a,b) +#define IDirectPlay2_Close(p) (p)->lpVtbl->Close(p) +#define IDirectPlay2_CreateGroup(p,a,b,c,d,e) (p)->lpVtbl->CreateGroup(p,a,b,c,d,e) +#define IDirectPlay2_CreatePlayer(p,a,b,c,d,e,f) (p)->lpVtbl->CreatePlayer(p,a,b,c,d,e,f) +#define IDirectPlay2_DeletePlayerFromGroup(p,a,b) (p)->lpVtbl->DeletePlayerFromGroup(p,a,b) +#define IDirectPlay2_DestroyGroup(p,a) (p)->lpVtbl->DestroyGroup(p,a) +#define IDirectPlay2_DestroyPlayer(p,a) (p)->lpVtbl->DestroyPlayer(p,a) +#define IDirectPlay2_EnumGroupPlayers(p,a,b,c,d,e) (p)->lpVtbl->EnumGroupPlayers(p,a,b,c,d,e) +#define IDirectPlay2_EnumGroups(p,a,b,c,d) (p)->lpVtbl->EnumGroups(p,a,b,c,d) +#define IDirectPlay2_EnumPlayers(p,a,b,c,d) (p)->lpVtbl->EnumPlayers(p,a,b,c,d) +#define IDirectPlay2_EnumSessions(p,a,b,c,d,e) (p)->lpVtbl->EnumSessions(p,a,b,c,d,e) +#define IDirectPlay2_GetCaps(p,a,b) (p)->lpVtbl->GetCaps(p,a,b) +#define IDirectPlay2_GetMessageCount(p,a,b) (p)->lpVtbl->GetMessageCount(p,a,b) +#define IDirectPlay2_GetGroupData(p,a,b,c,d) (p)->lpVtbl->GetGroupData(p,a,b,c,d) +#define IDirectPlay2_GetGroupName(p,a,b,c) (p)->lpVtbl->GetGroupName(p,a,b,c) +#define IDirectPlay2_GetPlayerAddress(p,a,b,c) (p)->lpVtbl->GetPlayerAddress(p,a,b,c) +#define IDirectPlay2_GetPlayerCaps(p,a,b,c) (p)->lpVtbl->GetPlayerCaps(p,a,b,c) +#define IDirectPlay2_GetPlayerData(p,a,b,c,d) (p)->lpVtbl->GetPlayerData(p,a,b,c,d) +#define IDirectPlay2_GetPlayerName(p,a,b,c) (p)->lpVtbl->GetPlayerName(p,a,b,c) +#define IDirectPlay2_GetSessionDesc(p,a,b) (p)->lpVtbl->GetSessionDesc(p,a,b) +#define IDirectPlay2_Initialize(p,a) (p)->lpVtbl->Initialize(p,a) +#define IDirectPlay2_Open(p,a,b) (p)->lpVtbl->Open(p,a,b) +#define IDirectPlay2_Receive(p,a,b,c,d,e) (p)->lpVtbl->Receive(p,a,b,c,d,e) +#define IDirectPlay2_Send(p,a,b,c,d,e) (p)->lpVtbl->Send(p,a,b,c,d,e) +#define IDirectPlay2_SetGroupData(p,a,b,c,d) (p)->lpVtbl->SetGroupData(p,a,b,c,d) +#define IDirectPlay2_SetGroupName(p,a,b,c) (p)->lpVtbl->SetGroupName(p,a,b,c) +#define IDirectPlay2_SetPlayerData(p,a,b,c,d) (p)->lpVtbl->SetPlayerData(p,a,b,c,d) +#define IDirectPlay2_SetPlayerName(p,a,b,c) (p)->lpVtbl->SetPlayerName(p,a,b,c) +#define IDirectPlay2_SetSessionDesc(p,a,b) (p)->lpVtbl->SetSessionDesc(p,a,b) + +#else /* C++ */ + +#define IDirectPlay2_QueryInterface(p,a,b) (p)->QueryInterface(a,b) +#define IDirectPlay2_AddRef(p) (p)->AddRef() +#define IDirectPlay2_Release(p) (p)->Release() +#define IDirectPlay2_AddPlayerToGroup(p,a,b) (p)->AddPlayerToGroup(a,b) +#define IDirectPlay2_Close(p) (p)->Close() +#define IDirectPlay2_CreateGroup(p,a,b,c,d,e) (p)->CreateGroup(a,b,c,d,e) +#define IDirectPlay2_CreatePlayer(p,a,b,c,d,e,f) (p)->CreatePlayer(a,b,c,d,e,f) +#define IDirectPlay2_DeletePlayerFromGroup(p,a,b) (p)->DeletePlayerFromGroup(a,b) +#define IDirectPlay2_DestroyGroup(p,a) (p)->DestroyGroup(a) +#define IDirectPlay2_DestroyPlayer(p,a) (p)->DestroyPlayer(a) +#define IDirectPlay2_EnumGroupPlayers(p,a,b,c,d,e) (p)->EnumGroupPlayers(a,b,c,d,e) +#define IDirectPlay2_EnumGroups(p,a,b,c,d) (p)->EnumGroups(a,b,c,d) +#define IDirectPlay2_EnumPlayers(p,a,b,c,d) (p)->EnumPlayers(a,b,c,d) +#define IDirectPlay2_EnumSessions(p,a,b,c,d,e) (p)->EnumSessions(a,b,c,d,e) +#define IDirectPlay2_GetCaps(p,a,b) (p)->GetCaps(a,b) +#define IDirectPlay2_GetMessageCount(p,a,b) (p)->GetMessageCount(a,b) +#define IDirectPlay2_GetGroupData(p,a,b,c,d) (p)->GetGroupData(a,b,c,d) +#define IDirectPlay2_GetGroupName(p,a,b,c) (p)->GetGroupName(a,b,c) +#define IDirectPlay2_GetPlayerAddress(p,a,b,c) (p)->GetPlayerAddress(a,b,c) +#define IDirectPlay2_GetPlayerCaps(p,a,b,c) (p)->GetPlayerCaps(a,b,c) +#define IDirectPlay2_GetPlayerData(p,a,b,c,d) (p)->GetPlayerData(a,b,c,d) +#define IDirectPlay2_GetPlayerName(p,a,b,c) (p)->GetPlayerName(a,b,c) +#define IDirectPlay2_GetSessionDesc(p,a,b) (p)->GetSessionDesc(a,b) +#define IDirectPlay2_Initialize(p,a) (p)->Initialize(a) +#define IDirectPlay2_Open(p,a,b) (p)->Open(a,b) +#define IDirectPlay2_Receive(p,a,b,c,d,e) (p)->Receive(a,b,c,d,e) +#define IDirectPlay2_Send(p,a,b,c,d,e) (p)->Send(a,b,c,d,e) +#define IDirectPlay2_SetGroupData(p,a,b,c,d) (p)->SetGroupData(a,b,c,d) +#define IDirectPlay2_SetGroupName(p,a,b,c) (p)->SetGroupName(a,b,c) +#define IDirectPlay2_SetPlayerData(p,a,b,c,d) (p)->SetPlayerData(a,b,c,d) +#define IDirectPlay2_SetPlayerName(p,a,b,c) (p)->SetPlayerName(a,b,c) +#define IDirectPlay2_SetSessionDesc(p,a,b) (p)->SetSessionDesc(a,b) + +#endif + +/**************************************************************************** + * + * IDirectPlay3 (and IDirectPlay3A) Interface + * + ****************************************************************************/ + +#undef INTERFACE +#define INTERFACE IDirectPlay3 +DECLARE_INTERFACE_( IDirectPlay3, IDirectPlay2 ) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + /*** IDirectPlay2 methods ***/ + STDMETHOD(AddPlayerToGroup) (THIS_ DPID, DPID) PURE; + STDMETHOD(Close) (THIS) PURE; + STDMETHOD(CreateGroup) (THIS_ LPDPID,LPDPNAME,LPVOID,DWORD,DWORD) PURE; + STDMETHOD(CreatePlayer) (THIS_ LPDPID,LPDPNAME,HANDLE,LPVOID,DWORD,DWORD) PURE; + STDMETHOD(DeletePlayerFromGroup)(THIS_ DPID,DPID) PURE; + STDMETHOD(DestroyGroup) (THIS_ DPID) PURE; + STDMETHOD(DestroyPlayer) (THIS_ DPID) PURE; + STDMETHOD(EnumGroupPlayers) (THIS_ DPID,LPGUID,LPDPENUMPLAYERSCALLBACK2,LPVOID,DWORD) PURE; + STDMETHOD(EnumGroups) (THIS_ LPGUID,LPDPENUMPLAYERSCALLBACK2,LPVOID,DWORD) PURE; + STDMETHOD(EnumPlayers) (THIS_ LPGUID,LPDPENUMPLAYERSCALLBACK2,LPVOID,DWORD) PURE; + STDMETHOD(EnumSessions) (THIS_ LPDPSESSIONDESC2,DWORD,LPDPENUMSESSIONSCALLBACK2,LPVOID,DWORD) PURE; + STDMETHOD(GetCaps) (THIS_ LPDPCAPS,DWORD) PURE; + STDMETHOD(GetGroupData) (THIS_ DPID,LPVOID,LPDWORD,DWORD) PURE; + STDMETHOD(GetGroupName) (THIS_ DPID,LPVOID,LPDWORD) PURE; + STDMETHOD(GetMessageCount) (THIS_ DPID, LPDWORD) PURE; + STDMETHOD(GetPlayerAddress) (THIS_ DPID,LPVOID,LPDWORD) PURE; + STDMETHOD(GetPlayerCaps) (THIS_ DPID,LPDPCAPS,DWORD) PURE; + STDMETHOD(GetPlayerData) (THIS_ DPID,LPVOID,LPDWORD,DWORD) PURE; + STDMETHOD(GetPlayerName) (THIS_ DPID,LPVOID,LPDWORD) PURE; + STDMETHOD(GetSessionDesc) (THIS_ LPVOID,LPDWORD) PURE; + STDMETHOD(Initialize) (THIS_ LPGUID) PURE; + STDMETHOD(Open) (THIS_ LPDPSESSIONDESC2,DWORD) PURE; + STDMETHOD(Receive) (THIS_ LPDPID,LPDPID,DWORD,LPVOID,LPDWORD) PURE; + STDMETHOD(Send) (THIS_ DPID, DPID, DWORD, LPVOID, DWORD) PURE; + STDMETHOD(SetGroupData) (THIS_ DPID,LPVOID,DWORD,DWORD) PURE; + STDMETHOD(SetGroupName) (THIS_ DPID,LPDPNAME,DWORD) PURE; + STDMETHOD(SetPlayerData) (THIS_ DPID,LPVOID,DWORD,DWORD) PURE; + STDMETHOD(SetPlayerName) (THIS_ DPID,LPDPNAME,DWORD) PURE; + STDMETHOD(SetSessionDesc) (THIS_ LPDPSESSIONDESC2,DWORD) PURE; + /*** IDirectPlay3 methods ***/ + STDMETHOD(AddGroupToGroup) (THIS_ DPID, DPID) PURE; + STDMETHOD(CreateGroupInGroup) (THIS_ DPID,LPDPID,LPDPNAME,LPVOID,DWORD,DWORD) PURE; + STDMETHOD(DeleteGroupFromGroup) (THIS_ DPID,DPID) PURE; + STDMETHOD(EnumConnections) (THIS_ LPCGUID,LPDPENUMCONNECTIONSCALLBACK,LPVOID,DWORD) PURE; + STDMETHOD(EnumGroupsInGroup) (THIS_ DPID,LPGUID,LPDPENUMPLAYERSCALLBACK2,LPVOID,DWORD) PURE; + STDMETHOD(GetGroupConnectionSettings)(THIS_ DWORD, DPID, LPVOID, LPDWORD) PURE; + STDMETHOD(InitializeConnection) (THIS_ LPVOID,DWORD) PURE; + STDMETHOD(SecureOpen) (THIS_ LPCDPSESSIONDESC2,DWORD,LPCDPSECURITYDESC,LPCDPCREDENTIALS) PURE; + STDMETHOD(SendChatMessage) (THIS_ DPID,DPID,DWORD,LPDPCHAT) PURE; + STDMETHOD(SetGroupConnectionSettings)(THIS_ DWORD,DPID,LPDPLCONNECTION) PURE; + STDMETHOD(StartSession) (THIS_ DWORD,DPID) PURE; + STDMETHOD(GetGroupFlags) (THIS_ DPID,LPDWORD) PURE; + STDMETHOD(GetGroupParent) (THIS_ DPID,LPDPID) PURE; + STDMETHOD(GetPlayerAccount) (THIS_ DPID, DWORD, LPVOID, LPDWORD) PURE; + STDMETHOD(GetPlayerFlags) (THIS_ DPID,LPDWORD) PURE; +}; + +/**************************************************************************** + * + * IDirectPlay3 interface macros + * + ****************************************************************************/ + +#if !defined(__cplusplus) || defined(CINTERFACE) + +#define IDirectPlay3_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDirectPlay3_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectPlay3_Release(p) (p)->lpVtbl->Release(p) +#define IDirectPlay3_AddPlayerToGroup(p,a,b) (p)->lpVtbl->AddPlayerToGroup(p,a,b) +#define IDirectPlay3_Close(p) (p)->lpVtbl->Close(p) +#define IDirectPlay3_CreateGroup(p,a,b,c,d,e) (p)->lpVtbl->CreateGroup(p,a,b,c,d,e) +#define IDirectPlay3_CreatePlayer(p,a,b,c,d,e,f) (p)->lpVtbl->CreatePlayer(p,a,b,c,d,e,f) +#define IDirectPlay3_DeletePlayerFromGroup(p,a,b) (p)->lpVtbl->DeletePlayerFromGroup(p,a,b) +#define IDirectPlay3_DestroyGroup(p,a) (p)->lpVtbl->DestroyGroup(p,a) +#define IDirectPlay3_DestroyPlayer(p,a) (p)->lpVtbl->DestroyPlayer(p,a) +#define IDirectPlay3_EnumGroupPlayers(p,a,b,c,d,e) (p)->lpVtbl->EnumGroupPlayers(p,a,b,c,d,e) +#define IDirectPlay3_EnumGroups(p,a,b,c,d) (p)->lpVtbl->EnumGroups(p,a,b,c,d) +#define IDirectPlay3_EnumPlayers(p,a,b,c,d) (p)->lpVtbl->EnumPlayers(p,a,b,c,d) +#define IDirectPlay3_EnumSessions(p,a,b,c,d,e) (p)->lpVtbl->EnumSessions(p,a,b,c,d,e) +#define IDirectPlay3_GetCaps(p,a,b) (p)->lpVtbl->GetCaps(p,a,b) +#define IDirectPlay3_GetMessageCount(p,a,b) (p)->lpVtbl->GetMessageCount(p,a,b) +#define IDirectPlay3_GetGroupData(p,a,b,c,d) (p)->lpVtbl->GetGroupData(p,a,b,c,d) +#define IDirectPlay3_GetGroupName(p,a,b,c) (p)->lpVtbl->GetGroupName(p,a,b,c) +#define IDirectPlay3_GetPlayerAddress(p,a,b,c) (p)->lpVtbl->GetPlayerAddress(p,a,b,c) +#define IDirectPlay3_GetPlayerCaps(p,a,b,c) (p)->lpVtbl->GetPlayerCaps(p,a,b,c) +#define IDirectPlay3_GetPlayerData(p,a,b,c,d) (p)->lpVtbl->GetPlayerData(p,a,b,c,d) +#define IDirectPlay3_GetPlayerName(p,a,b,c) (p)->lpVtbl->GetPlayerName(p,a,b,c) +#define IDirectPlay3_GetSessionDesc(p,a,b) (p)->lpVtbl->GetSessionDesc(p,a,b) +#define IDirectPlay3_Initialize(p,a) (p)->lpVtbl->Initialize(p,a) +#define IDirectPlay3_Open(p,a,b) (p)->lpVtbl->Open(p,a,b) +#define IDirectPlay3_Receive(p,a,b,c,d,e) (p)->lpVtbl->Receive(p,a,b,c,d,e) +#define IDirectPlay3_Send(p,a,b,c,d,e) (p)->lpVtbl->Send(p,a,b,c,d,e) +#define IDirectPlay3_SetGroupData(p,a,b,c,d) (p)->lpVtbl->SetGroupData(p,a,b,c,d) +#define IDirectPlay3_SetGroupName(p,a,b,c) (p)->lpVtbl->SetGroupName(p,a,b,c) +#define IDirectPlay3_SetPlayerData(p,a,b,c,d) (p)->lpVtbl->SetPlayerData(p,a,b,c,d) +#define IDirectPlay3_SetPlayerName(p,a,b,c) (p)->lpVtbl->SetPlayerName(p,a,b,c) +#define IDirectPlay3_SetSessionDesc(p,a,b) (p)->lpVtbl->SetSessionDesc(p,a,b) +#define IDirectPlay3_AddGroupToGroup(p,a,b) (p)->lpVtbl->AddGroupToGroup(p,a,b) +#define IDirectPlay3_CreateGroupInGroup(p,a,b,c,d,e,f) (p)->lpVtbl->CreateGroupInGroup(p,a,b,c,d,e,f) +#define IDirectPlay3_DeleteGroupFromGroup(p,a,b) (p)->lpVtbl->DeleteGroupFromGroup(p,a,b) +#define IDirectPlay3_EnumConnections(p,a,b,c,d) (p)->lpVtbl->EnumConnections(p,a,b,c,d) +#define IDirectPlay3_EnumGroupsInGroup(p,a,b,c,d,e) (p)->lpVtbl->EnumGroupsInGroup(p,a,b,c,d,e) +#define IDirectPlay3_GetGroupConnectionSettings(p,a,b,c,d) (p)->lpVtbl->GetGroupConnectionSettings(p,a,b,c,d) +#define IDirectPlay3_InitializeConnection(p,a,b) (p)->lpVtbl->InitializeConnection(p,a,b) +#define IDirectPlay3_SecureOpen(p,a,b,c,d) (p)->lpVtbl->SecureOpen(p,a,b,c,d) +#define IDirectPlay3_SendChatMessage(p,a,b,c,d) (p)->lpVtbl->SendChatMessage(p,a,b,c,d) +#define IDirectPlay3_SetGroupConnectionSettings(p,a,b,c) (p)->lpVtbl->SetGroupConnectionSettings(p,a,b,c) +#define IDirectPlay3_StartSession(p,a,b) (p)->lpVtbl->StartSession(p,a,b) +#define IDirectPlay3_GetGroupFlags(p,a,b) (p)->lpVtbl->GetGroupFlags(p,a,b) +#define IDirectPlay3_GetGroupParent(p,a,b) (p)->lpVtbl->GetGroupParent(p,a,b) +#define IDirectPlay3_GetPlayerAccount(p,a,b,c,d) (p)->lpVtbl->GetPlayerAccount(p,a,b,c,d) +#define IDirectPlay3_GetPlayerFlags(p,a,b) (p)->lpVtbl->GetPlayerFlags(p,a,b) + +#else /* C++ */ + +#define IDirectPlay3_QueryInterface(p,a,b) (p)->QueryInterface(a,b) +#define IDirectPlay3_AddRef(p) (p)->AddRef() +#define IDirectPlay3_Release(p) (p)->Release() +#define IDirectPlay3_AddPlayerToGroup(p,a,b) (p)->AddPlayerToGroup(a,b) +#define IDirectPlay3_Close(p) (p)->Close() +#define IDirectPlay3_CreateGroup(p,a,b,c,d,e) (p)->CreateGroup(a,b,c,d,e) +#define IDirectPlay3_CreatePlayer(p,a,b,c,d,e,f) (p)->CreatePlayer(a,b,c,d,e,f) +#define IDirectPlay3_DeletePlayerFromGroup(p,a,b) (p)->DeletePlayerFromGroup(a,b) +#define IDirectPlay3_DestroyGroup(p,a) (p)->DestroyGroup(a) +#define IDirectPlay3_DestroyPlayer(p,a) (p)->DestroyPlayer(a) +#define IDirectPlay3_EnumGroupPlayers(p,a,b,c,d,e) (p)->EnumGroupPlayers(a,b,c,d,e) +#define IDirectPlay3_EnumGroups(p,a,b,c,d) (p)->EnumGroups(a,b,c,d) +#define IDirectPlay3_EnumPlayers(p,a,b,c,d) (p)->EnumPlayers(a,b,c,d) +#define IDirectPlay3_EnumSessions(p,a,b,c,d,e) (p)->EnumSessions(a,b,c,d,e) +#define IDirectPlay3_GetCaps(p,a,b) (p)->GetCaps(a,b) +#define IDirectPlay3_GetMessageCount(p,a,b) (p)->GetMessageCount(a,b) +#define IDirectPlay3_GetGroupData(p,a,b,c,d) (p)->GetGroupData(a,b,c,d) +#define IDirectPlay3_GetGroupName(p,a,b,c) (p)->GetGroupName(a,b,c) +#define IDirectPlay3_GetPlayerAddress(p,a,b,c) (p)->GetPlayerAddress(a,b,c) +#define IDirectPlay3_GetPlayerCaps(p,a,b,c) (p)->GetPlayerCaps(a,b,c) +#define IDirectPlay3_GetPlayerData(p,a,b,c,d) (p)->GetPlayerData(a,b,c,d) +#define IDirectPlay3_GetPlayerName(p,a,b,c) (p)->GetPlayerName(a,b,c) +#define IDirectPlay3_GetSessionDesc(p,a,b) (p)->GetSessionDesc(a,b) +#define IDirectPlay3_Initialize(p,a) (p)->Initialize(a) +#define IDirectPlay3_Open(p,a,b) (p)->Open(a,b) +#define IDirectPlay3_Receive(p,a,b,c,d,e) (p)->Receive(a,b,c,d,e) +#define IDirectPlay3_Send(p,a,b,c,d,e) (p)->Send(a,b,c,d,e) +#define IDirectPlay3_SetGroupData(p,a,b,c,d) (p)->SetGroupData(a,b,c,d) +#define IDirectPlay3_SetGroupName(p,a,b,c) (p)->SetGroupName(a,b,c) +#define IDirectPlay3_SetPlayerData(p,a,b,c,d) (p)->SetPlayerData(a,b,c,d) +#define IDirectPlay3_SetPlayerName(p,a,b,c) (p)->SetPlayerName(a,b,c) +#define IDirectPlay3_SetSessionDesc(p,a,b) (p)->SetSessionDesc(a,b) +#define IDirectPlay3_AddGroupToGroup(p,a,b) (p)->AddGroupToGroup(a,b) +#define IDirectPlay3_CreateGroupInGroup(p,a,b,c,d,e,f) (p)->CreateGroupInGroup(a,b,c,d,e,f) +#define IDirectPlay3_DeleteGroupFromGroup(p,a,b) (p)->DeleteGroupFromGroup(a,b) +#define IDirectPlay3_EnumConnections(p,a,b,c,d) (p)->EnumConnections(a,b,c,d) +#define IDirectPlay3_EnumGroupsInGroup(p,a,b,c,d,e) (p)->EnumGroupsInGroup(a,b,c,d,e) +#define IDirectPlay3_GetGroupConnectionSettings(p,a,b,c,d) (p)->GetGroupConnectionSettings(a,b,c,d) +#define IDirectPlay3_InitializeConnection(p,a,b) (p)->InitializeConnection(a,b) +#define IDirectPlay3_SecureOpen(p,a,b,c,d) (p)->SecureOpen(a,b,c,d) +#define IDirectPlay3_SendChatMessage(p,a,b,c,d) (p)->SendChatMessage(a,b,c,d) +#define IDirectPlay3_SetGroupConnectionSettings(p,a,b,c) (p)->SetGroupConnectionSettings(a,b,c) +#define IDirectPlay3_StartSession(p,a,b) (p)->StartSession(a,b) +#define IDirectPlay3_GetGroupFlags(p,a,b) (p)->GetGroupFlags(a,b) +#define IDirectPlay3_GetGroupParent(p,a,b) (p)->GetGroupParent(a,b) +#define IDirectPlay3_GetPlayerAccount(p,a,b,c,d) (p)->GetPlayerAccount(a,b,c,d) +#define IDirectPlay3_GetPlayerFlags(p,a,b) (p)->GetPlayerFlags(a,b) + +#endif + +/**************************************************************************** + * + * IDirectPlay4 (and IDirectPlay4A) Interface + * + ****************************************************************************/ + +#undef INTERFACE +#define INTERFACE IDirectPlay4 +DECLARE_INTERFACE_( IDirectPlay4, IDirectPlay3 ) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + /*** IDirectPlay2 methods ***/ + STDMETHOD(AddPlayerToGroup) (THIS_ DPID, DPID) PURE; + STDMETHOD(Close) (THIS) PURE; + STDMETHOD(CreateGroup) (THIS_ LPDPID,LPDPNAME,LPVOID,DWORD,DWORD) PURE; + STDMETHOD(CreatePlayer) (THIS_ LPDPID,LPDPNAME,HANDLE,LPVOID,DWORD,DWORD) PURE; + STDMETHOD(DeletePlayerFromGroup)(THIS_ DPID,DPID) PURE; + STDMETHOD(DestroyGroup) (THIS_ DPID) PURE; + STDMETHOD(DestroyPlayer) (THIS_ DPID) PURE; + STDMETHOD(EnumGroupPlayers) (THIS_ DPID,LPGUID,LPDPENUMPLAYERSCALLBACK2,LPVOID,DWORD) PURE; + STDMETHOD(EnumGroups) (THIS_ LPGUID,LPDPENUMPLAYERSCALLBACK2,LPVOID,DWORD) PURE; + STDMETHOD(EnumPlayers) (THIS_ LPGUID,LPDPENUMPLAYERSCALLBACK2,LPVOID,DWORD) PURE; + STDMETHOD(EnumSessions) (THIS_ LPDPSESSIONDESC2,DWORD,LPDPENUMSESSIONSCALLBACK2,LPVOID,DWORD) PURE; + STDMETHOD(GetCaps) (THIS_ LPDPCAPS,DWORD) PURE; + STDMETHOD(GetGroupData) (THIS_ DPID,LPVOID,LPDWORD,DWORD) PURE; + STDMETHOD(GetGroupName) (THIS_ DPID,LPVOID,LPDWORD) PURE; + STDMETHOD(GetMessageCount) (THIS_ DPID, LPDWORD) PURE; + STDMETHOD(GetPlayerAddress) (THIS_ DPID,LPVOID,LPDWORD) PURE; + STDMETHOD(GetPlayerCaps) (THIS_ DPID,LPDPCAPS,DWORD) PURE; + STDMETHOD(GetPlayerData) (THIS_ DPID,LPVOID,LPDWORD,DWORD) PURE; + STDMETHOD(GetPlayerName) (THIS_ DPID,LPVOID,LPDWORD) PURE; + STDMETHOD(GetSessionDesc) (THIS_ LPVOID,LPDWORD) PURE; + STDMETHOD(Initialize) (THIS_ LPGUID) PURE; + STDMETHOD(Open) (THIS_ LPDPSESSIONDESC2,DWORD) PURE; + STDMETHOD(Receive) (THIS_ LPDPID,LPDPID,DWORD,LPVOID,LPDWORD) PURE; + STDMETHOD(Send) (THIS_ DPID, DPID, DWORD, LPVOID, DWORD) PURE; + STDMETHOD(SetGroupData) (THIS_ DPID,LPVOID,DWORD,DWORD) PURE; + STDMETHOD(SetGroupName) (THIS_ DPID,LPDPNAME,DWORD) PURE; + STDMETHOD(SetPlayerData) (THIS_ DPID,LPVOID,DWORD,DWORD) PURE; + STDMETHOD(SetPlayerName) (THIS_ DPID,LPDPNAME,DWORD) PURE; + STDMETHOD(SetSessionDesc) (THIS_ LPDPSESSIONDESC2,DWORD) PURE; + /*** IDirectPlay3 methods ***/ + STDMETHOD(AddGroupToGroup) (THIS_ DPID, DPID) PURE; + STDMETHOD(CreateGroupInGroup) (THIS_ DPID,LPDPID,LPDPNAME,LPVOID,DWORD,DWORD) PURE; + STDMETHOD(DeleteGroupFromGroup) (THIS_ DPID,DPID) PURE; + STDMETHOD(EnumConnections) (THIS_ LPCGUID,LPDPENUMCONNECTIONSCALLBACK,LPVOID,DWORD) PURE; + STDMETHOD(EnumGroupsInGroup) (THIS_ DPID,LPGUID,LPDPENUMPLAYERSCALLBACK2,LPVOID,DWORD) PURE; + STDMETHOD(GetGroupConnectionSettings)(THIS_ DWORD, DPID, LPVOID, LPDWORD) PURE; + STDMETHOD(InitializeConnection) (THIS_ LPVOID,DWORD) PURE; + STDMETHOD(SecureOpen) (THIS_ LPCDPSESSIONDESC2,DWORD,LPCDPSECURITYDESC,LPCDPCREDENTIALS) PURE; + STDMETHOD(SendChatMessage) (THIS_ DPID,DPID,DWORD,LPDPCHAT) PURE; + STDMETHOD(SetGroupConnectionSettings)(THIS_ DWORD,DPID,LPDPLCONNECTION) PURE; + STDMETHOD(StartSession) (THIS_ DWORD,DPID) PURE; + STDMETHOD(GetGroupFlags) (THIS_ DPID,LPDWORD) PURE; + STDMETHOD(GetGroupParent) (THIS_ DPID,LPDPID) PURE; + STDMETHOD(GetPlayerAccount) (THIS_ DPID, DWORD, LPVOID, LPDWORD) PURE; + STDMETHOD(GetPlayerFlags) (THIS_ DPID,LPDWORD) PURE; + /*** IDirectPlay4 methods ***/ + STDMETHOD(GetGroupOwner) (THIS_ DPID, LPDPID) PURE; + STDMETHOD(SetGroupOwner) (THIS_ DPID, DPID) PURE; + STDMETHOD(SendEx) (THIS_ DPID, DPID, DWORD, LPVOID, DWORD, DWORD, DWORD, LPVOID, DWORD_PTR *) PURE; + STDMETHOD(GetMessageQueue) (THIS_ DPID, DPID, DWORD, LPDWORD, LPDWORD) PURE; + STDMETHOD(CancelMessage) (THIS_ DWORD, DWORD) PURE; + STDMETHOD(CancelPriority) (THIS_ DWORD, DWORD, DWORD) PURE; +}; + +/**************************************************************************** + * + * IDirectPlayX interface macros (for IDirectPlay4 and beyond) + * + ****************************************************************************/ + +#if !defined(__cplusplus) || defined(CINTERFACE) + +#define IDirectPlayX_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDirectPlayX_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectPlayX_Release(p) (p)->lpVtbl->Release(p) +#define IDirectPlayX_AddPlayerToGroup(p,a,b) (p)->lpVtbl->AddPlayerToGroup(p,a,b) +#define IDirectPlayX_CancelMessage(p,a,b) (p)->lpVtbl->CancelMessage(p,a,b) +#define IDirectPlayX_CancelPriority(p,a,b,c) (p)->lpVtbl->CancelPriority(p,a,b,c) +#define IDirectPlayX_Close(p) (p)->lpVtbl->Close(p) +#define IDirectPlayX_CreateGroup(p,a,b,c,d,e) (p)->lpVtbl->CreateGroup(p,a,b,c,d,e) +#define IDirectPlayX_CreatePlayer(p,a,b,c,d,e,f) (p)->lpVtbl->CreatePlayer(p,a,b,c,d,e,f) +#define IDirectPlayX_DeletePlayerFromGroup(p,a,b) (p)->lpVtbl->DeletePlayerFromGroup(p,a,b) +#define IDirectPlayX_DestroyGroup(p,a) (p)->lpVtbl->DestroyGroup(p,a) +#define IDirectPlayX_DestroyPlayer(p,a) (p)->lpVtbl->DestroyPlayer(p,a) +#define IDirectPlayX_EnumGroupPlayers(p,a,b,c,d,e) (p)->lpVtbl->EnumGroupPlayers(p,a,b,c,d,e) +#define IDirectPlayX_EnumGroups(p,a,b,c,d) (p)->lpVtbl->EnumGroups(p,a,b,c,d) +#define IDirectPlayX_EnumPlayers(p,a,b,c,d) (p)->lpVtbl->EnumPlayers(p,a,b,c,d) +#define IDirectPlayX_EnumSessions(p,a,b,c,d,e) (p)->lpVtbl->EnumSessions(p,a,b,c,d,e) +#define IDirectPlayX_GetCaps(p,a,b) (p)->lpVtbl->GetCaps(p,a,b) +#define IDirectPlayX_GetMessageCount(p,a,b) (p)->lpVtbl->GetMessageCount(p,a,b) +#define IDirectPlayX_GetMessageQueue(p,a,b,c,d,e) (p)->lpVtbl->GetMessageQueue(p,a,b,c,d,e) +#define IDirectPlayX_GetGroupData(p,a,b,c,d) (p)->lpVtbl->GetGroupData(p,a,b,c,d) +#define IDirectPlayX_GetGroupName(p,a,b,c) (p)->lpVtbl->GetGroupName(p,a,b,c) +#define IDirectPlayX_GetPlayerAddress(p,a,b,c) (p)->lpVtbl->GetPlayerAddress(p,a,b,c) +#define IDirectPlayX_GetPlayerCaps(p,a,b,c) (p)->lpVtbl->GetPlayerCaps(p,a,b,c) +#define IDirectPlayX_GetPlayerData(p,a,b,c,d) (p)->lpVtbl->GetPlayerData(p,a,b,c,d) +#define IDirectPlayX_GetPlayerName(p,a,b,c) (p)->lpVtbl->GetPlayerName(p,a,b,c) +#define IDirectPlayX_GetSessionDesc(p,a,b) (p)->lpVtbl->GetSessionDesc(p,a,b) +#define IDirectPlayX_Initialize(p,a) (p)->lpVtbl->Initialize(p,a) +#define IDirectPlayX_Open(p,a,b) (p)->lpVtbl->Open(p,a,b) +#define IDirectPlayX_Receive(p,a,b,c,d,e) (p)->lpVtbl->Receive(p,a,b,c,d,e) +#define IDirectPlayX_Send(p,a,b,c,d,e) (p)->lpVtbl->Send(p,a,b,c,d,e) +#define IDirectPlayX_SendEx(p,a,b,c,d,e,f,g,h,i) (p)->lpVtbl->SendEx(p,a,b,c,d,e,f,g,h,i) +#define IDirectPlayX_SetGroupData(p,a,b,c,d) (p)->lpVtbl->SetGroupData(p,a,b,c,d) +#define IDirectPlayX_SetGroupName(p,a,b,c) (p)->lpVtbl->SetGroupName(p,a,b,c) +#define IDirectPlayX_SetPlayerData(p,a,b,c,d) (p)->lpVtbl->SetPlayerData(p,a,b,c,d) +#define IDirectPlayX_SetPlayerName(p,a,b,c) (p)->lpVtbl->SetPlayerName(p,a,b,c) +#define IDirectPlayX_SetSessionDesc(p,a,b) (p)->lpVtbl->SetSessionDesc(p,a,b) +#define IDirectPlayX_AddGroupToGroup(p,a,b) (p)->lpVtbl->AddGroupToGroup(p,a,b) +#define IDirectPlayX_CreateGroupInGroup(p,a,b,c,d,e,f) (p)->lpVtbl->CreateGroupInGroup(p,a,b,c,d,e,f) +#define IDirectPlayX_DeleteGroupFromGroup(p,a,b) (p)->lpVtbl->DeleteGroupFromGroup(p,a,b) +#define IDirectPlayX_EnumConnections(p,a,b,c,d) (p)->lpVtbl->EnumConnections(p,a,b,c,d) +#define IDirectPlayX_EnumGroupsInGroup(p,a,b,c,d,e) (p)->lpVtbl->EnumGroupsInGroup(p,a,b,c,d,e) +#define IDirectPlayX_GetGroupConnectionSettings(p,a,b,c,d) (p)->lpVtbl->GetGroupConnectionSettings(p,a,b,c,d) +#define IDirectPlayX_InitializeConnection(p,a,b) (p)->lpVtbl->InitializeConnection(p,a,b) +#define IDirectPlayX_SecureOpen(p,a,b,c,d) (p)->lpVtbl->SecureOpen(p,a,b,c,d) +#define IDirectPlayX_SendChatMessage(p,a,b,c,d) (p)->lpVtbl->SendChatMessage(p,a,b,c,d) +#define IDirectPlayX_SetGroupConnectionSettings(p,a,b,c) (p)->lpVtbl->SetGroupConnectionSettings(p,a,b,c) +#define IDirectPlayX_StartSession(p,a,b) (p)->lpVtbl->StartSession(p,a,b) +#define IDirectPlayX_GetGroupFlags(p,a,b) (p)->lpVtbl->GetGroupFlags(p,a,b) +#define IDirectPlayX_GetGroupParent(p,a,b) (p)->lpVtbl->GetGroupParent(p,a,b) +#define IDirectPlayX_GetPlayerAccount(p,a,b,c,d) (p)->lpVtbl->GetPlayerAccount(p,a,b,c,d) +#define IDirectPlayX_GetPlayerFlags(p,a,b) (p)->lpVtbl->GetPlayerFlags(p,a,b) +#define IDirectPlayX_GetGroupOwner(p,a,b) (p)->lpVtbl->GetGroupOwner(p,a,b) +#define IDirectPlayX_SetGroupOwner(p,a,b) (p)->lpVtbl->SetGroupOwner(p,a,b) + +#else /* C++ */ + +#define IDirectPlayX_QueryInterface(p,a,b) (p)->QueryInterface(a,b) +#define IDirectPlayX_AddRef(p) (p)->AddRef() +#define IDirectPlayX_Release(p) (p)->Release() +#define IDirectPlayX_AddPlayerToGroup(p,a,b) (p)->AddPlayerToGroup(a,b) +#define IDirectPlayX_CancelMessage(p,a,b) (p)->CancelMessage(a,b) +#define IDirectPlayX_CancelPriority(p,a,b,c) (p)->CancelPriority(a,b,c) +#define IDirectPlayX_Close(p) (p)->Close() +#define IDirectPlayX_CreateGroup(p,a,b,c,d,e) (p)->CreateGroup(a,b,c,d,e) +#define IDirectPlayX_CreatePlayer(p,a,b,c,d,e,f) (p)->CreatePlayer(a,b,c,d,e,f) +#define IDirectPlayX_DeletePlayerFromGroup(p,a,b) (p)->DeletePlayerFromGroup(a,b) +#define IDirectPlayX_DestroyGroup(p,a) (p)->DestroyGroup(a) +#define IDirectPlayX_DestroyPlayer(p,a) (p)->DestroyPlayer(a) +#define IDirectPlayX_EnumGroupPlayers(p,a,b,c,d,e) (p)->EnumGroupPlayers(a,b,c,d,e) +#define IDirectPlayX_EnumGroups(p,a,b,c,d) (p)->EnumGroups(a,b,c,d) +#define IDirectPlayX_EnumPlayers(p,a,b,c,d) (p)->EnumPlayers(a,b,c,d) +#define IDirectPlayX_EnumSessions(p,a,b,c,d,e) (p)->EnumSessions(a,b,c,d,e) +#define IDirectPlayX_GetCaps(p,a,b) (p)->GetCaps(a,b) +#define IDirectPlayX_GetMessageCount(p,a,b) (p)->GetMessageCount(a,b) +#define IDirectPlayX_GetMessageQueue(p,a,b,c,d,e) (p)->GetMessageQueue(a,b,c,d,e) +#define IDirectPlayX_GetGroupData(p,a,b,c,d) (p)->GetGroupData(a,b,c,d) +#define IDirectPlayX_GetGroupName(p,a,b,c) (p)->GetGroupName(a,b,c) +#define IDirectPlayX_GetPlayerAddress(p,a,b,c) (p)->GetPlayerAddress(a,b,c) +#define IDirectPlayX_GetPlayerCaps(p,a,b,c) (p)->GetPlayerCaps(a,b,c) +#define IDirectPlayX_GetPlayerData(p,a,b,c,d) (p)->GetPlayerData(a,b,c,d) +#define IDirectPlayX_GetPlayerName(p,a,b,c) (p)->GetPlayerName(a,b,c) +#define IDirectPlayX_GetSessionDesc(p,a,b) (p)->GetSessionDesc(a,b) +#define IDirectPlayX_Initialize(p,a) (p)->Initialize(a) +#define IDirectPlayX_Open(p,a,b) (p)->Open(a,b) +#define IDirectPlayX_Receive(p,a,b,c,d,e) (p)->Receive(a,b,c,d,e) +#define IDirectPlayX_Send(p,a,b,c,d,e) (p)->Send(a,b,c,d,e) +#define IDirectPlayX_SendEx(p,a,b,c,d,e,f,g,h,i) (p)->SendEx(a,b,c,d,e,f,g,h,i) +#define IDirectPlayX_SetGroupData(p,a,b,c,d) (p)->SetGroupData(a,b,c,d) +#define IDirectPlayX_SetGroupName(p,a,b,c) (p)->SetGroupName(a,b,c) +#define IDirectPlayX_SetPlayerData(p,a,b,c,d) (p)->SetPlayerData(a,b,c,d) +#define IDirectPlayX_SetPlayerName(p,a,b,c) (p)->SetPlayerName(a,b,c) +#define IDirectPlayX_SetSessionDesc(p,a,b) (p)->SetSessionDesc(a,b) +#define IDirectPlayX_AddGroupToGroup(p,a,b) (p)->AddGroupToGroup(a,b) +#define IDirectPlayX_CreateGroupInGroup(p,a,b,c,d,e,f) (p)->CreateGroupInGroup(a,b,c,d,e,f) +#define IDirectPlayX_DeleteGroupFromGroup(p,a,b) (p)->DeleteGroupFromGroup(a,b) +#define IDirectPlayX_EnumConnections(p,a,b,c,d) (p)->EnumConnections(a,b,c,d) +#define IDirectPlayX_EnumGroupsInGroup(p,a,b,c,d,e) (p)->EnumGroupsInGroup(a,b,c,d,e) +#define IDirectPlayX_GetGroupConnectionSettings(p,a,b,c,d) (p)->GetGroupConnectionSettings(a,b,c,d) +#define IDirectPlayX_InitializeConnection(p,a,b) (p)->InitializeConnection(a,b) +#define IDirectPlayX_SecureOpen(p,a,b,c,d) (p)->SecureOpen(a,b,c,d) +#define IDirectPlayX_SendChatMessage(p,a,b,c,d) (p)->SendChatMessage(a,b,c,d) +#define IDirectPlayX_SetGroupConnectionSettings(p,a,b,c) (p)->SetGroupConnectionSettings(a,b,c) +#define IDirectPlayX_StartSession(p,a,b) (p)->StartSession(a,b) +#define IDirectPlayX_GetGroupFlags(p,a,b) (p)->GetGroupFlags(a,b) +#define IDirectPlayX_GetGroupParent(p,a,b) (p)->GetGroupParent(a,b) +#define IDirectPlayX_GetPlayerAccount(p,a,b,c,d) (p)->GetPlayerAccount(a,b,c,d) +#define IDirectPlayX_GetPlayerFlags(p,a,b) (p)->GetPlayerFlags(a,b) +#define IDirectPlayX_GetGroupOwner(p,a,b) (p)->GetGroupOwner(a,b) +#define IDirectPlayX_SetGroupOwner(p,a,b) (p)->SetGroupOwner(a,b) + +#endif + +/**************************************************************************** + * + * EnumConnections API flags + * + ****************************************************************************/ + +/* + * Enumerate Service Providers + */ +#define DPCONNECTION_DIRECTPLAY 0x00000001 + +/* + * Enumerate Lobby Providers + */ +#define DPCONNECTION_DIRECTPLAYLOBBY 0x00000002 + + +/**************************************************************************** + * + * EnumPlayers API flags + * + ****************************************************************************/ + +/* + * Enumerate all players in the current session + */ +#define DPENUMPLAYERS_ALL 0x00000000 +#define DPENUMGROUPS_ALL DPENUMPLAYERS_ALL + + +/* + * Enumerate only local (created by this application) players + * or groups + */ +#define DPENUMPLAYERS_LOCAL 0x00000008 +#define DPENUMGROUPS_LOCAL DPENUMPLAYERS_LOCAL + +/* + * Enumerate only remote (non-local) players + * or groups + */ +#define DPENUMPLAYERS_REMOTE 0x00000010 +#define DPENUMGROUPS_REMOTE DPENUMPLAYERS_REMOTE + +/* + * Enumerate groups along with the players + */ +#define DPENUMPLAYERS_GROUP 0x00000020 + +/* + * Enumerate players or groups in another session + * (must supply lpguidInstance) + */ +#define DPENUMPLAYERS_SESSION 0x00000080 +#define DPENUMGROUPS_SESSION DPENUMPLAYERS_SESSION + +/* + * Enumerate server players + */ +#define DPENUMPLAYERS_SERVERPLAYER 0x00000100 + +/* + * Enumerate spectator players + */ +#define DPENUMPLAYERS_SPECTATOR 0x00000200 + +/* + * Enumerate shortcut groups + */ +#define DPENUMGROUPS_SHORTCUT 0x00000400 + +/* + * Enumerate staging area groups + */ +#define DPENUMGROUPS_STAGINGAREA 0x00000800 + +/* + * Enumerate hidden groups + */ +#define DPENUMGROUPS_HIDDEN 0x00001000 + +/* + * Enumerate the group's owner + */ +#define DPENUMPLAYERS_OWNER 0x00002000 + + +/**************************************************************************** + * + * CreatePlayer API flags + * + ****************************************************************************/ + +/* + * This flag indicates that this player should be designated + * the server player. The app should specify this at CreatePlayer. + */ +#define DPPLAYER_SERVERPLAYER DPENUMPLAYERS_SERVERPLAYER + +/* + * This flag indicates that this player should be designated + * a spectator. The app should specify this at CreatePlayer. + */ +#define DPPLAYER_SPECTATOR DPENUMPLAYERS_SPECTATOR + +/* + * This flag indicates that this player was created locally. + * (returned from GetPlayerFlags) + */ +#define DPPLAYER_LOCAL DPENUMPLAYERS_LOCAL + +/* + * This flag indicates that this player is the group's owner + * (Only returned in EnumGroupPlayers) + */ +#define DPPLAYER_OWNER DPENUMPLAYERS_OWNER + +/**************************************************************************** + * + * CreateGroup API flags + * + ****************************************************************************/ + + +/* + * This flag indicates that the StartSession can be called on the group. + * The app should specify this at CreateGroup, or CreateGroupInGroup. + */ +#define DPGROUP_STAGINGAREA DPENUMGROUPS_STAGINGAREA + +/* + * This flag indicates that this group was created locally. + * (returned from GetGroupFlags) + */ +#define DPGROUP_LOCAL DPENUMGROUPS_LOCAL + +/* + * This flag indicates that this group was created hidden. + */ +#define DPGROUP_HIDDEN DPENUMGROUPS_HIDDEN + + +/**************************************************************************** + * + * EnumSessions API flags + * + ****************************************************************************/ + +/* + * Enumerate sessions which can be joined + */ +#define DPENUMSESSIONS_AVAILABLE 0x00000001 + +/* + * Enumerate all sessions even if they can't be joined. + */ +#define DPENUMSESSIONS_ALL 0x00000002 + + +/* + * Start an asynchronous enum sessions + */ + #define DPENUMSESSIONS_ASYNC 0x00000010 + +/* + * Stop an asynchronous enum sessions + */ + #define DPENUMSESSIONS_STOPASYNC 0x00000020 + +/* + * Enumerate sessions even if they require a password + */ + #define DPENUMSESSIONS_PASSWORDREQUIRED 0x00000040 + +/* + * Return status about progress of enumeration instead of + * showing any status dialogs. + */ + #define DPENUMSESSIONS_RETURNSTATUS 0x00000080 + +/**************************************************************************** + * + * GetCaps and GetPlayerCaps API flags + * + ****************************************************************************/ + +/* + * The latency returned should be for guaranteed message sending. + * Default is non-guaranteed messaging. + */ +#define DPGETCAPS_GUARANTEED 0x00000001 + + +/**************************************************************************** + * + * GetGroupData, GetPlayerData API flags + * Remote and local Group/Player data is maintained separately. + * Default is DPGET_REMOTE. + * + ****************************************************************************/ + +/* + * Get the remote data (set by any DirectPlay object in + * the session using DPSET_REMOTE) + */ +#define DPGET_REMOTE 0x00000000 + +/* + * Get the local data (set by this DirectPlay object + * using DPSET_LOCAL) + */ +#define DPGET_LOCAL 0x00000001 + + +/**************************************************************************** + * + * Open API flags + * + ****************************************************************************/ + +/* + * Join the session that is described by the DPSESSIONDESC2 structure + */ +#define DPOPEN_JOIN 0x00000001 + +/* + * Create a new session as described by the DPSESSIONDESC2 structure + */ +#define DPOPEN_CREATE 0x00000002 + +/* + * Return status about progress of open instead of showing + * any status dialogs. + */ + #define DPOPEN_RETURNSTATUS DPENUMSESSIONS_RETURNSTATUS + + +/**************************************************************************** + * + * DPLCONNECTION flags + * + ****************************************************************************/ + +/* + * This application should create a new session as + * described by the DPSESIONDESC structure + */ +#define DPLCONNECTION_CREATESESSION DPOPEN_CREATE + +/* + * This application should join the session described by + * the DPSESIONDESC structure with the lpAddress data + */ +#define DPLCONNECTION_JOINSESSION DPOPEN_JOIN + +/**************************************************************************** + * + * Receive API flags + * Default is DPRECEIVE_ALL + * + ****************************************************************************/ + +/* + * Get the first message in the queue + */ +#define DPRECEIVE_ALL 0x00000001 + +/* + * Get the first message in the queue directed to a specific player + */ +#define DPRECEIVE_TOPLAYER 0x00000002 + +/* + * Get the first message in the queue from a specific player + */ +#define DPRECEIVE_FROMPLAYER 0x00000004 + +/* + * Get the message but don't remove it from the queue + */ +#define DPRECEIVE_PEEK 0x00000008 + + +/**************************************************************************** + * + * Send API flags + * + ****************************************************************************/ + +/* + * Send the message using a guaranteed send method. + * Default is non-guaranteed. + */ +#define DPSEND_GUARANTEED 0x00000001 + + +/* + * This flag is obsolete. It is ignored by DirectPlay + */ +#define DPSEND_HIGHPRIORITY 0x00000002 + +/* + * This flag is obsolete. It is ignored by DirectPlay + */ +#define DPSEND_OPENSTREAM 0x00000008 + +/* + * This flag is obsolete. It is ignored by DirectPlay + */ +#define DPSEND_CLOSESTREAM 0x00000010 + +/* + * Send the message digitally signed to ensure authenticity. + */ +#define DPSEND_SIGNED 0x00000020 + +/* + * Send the message with encryption to ensure privacy. + */ +#define DPSEND_ENCRYPTED 0x00000040 + +/* + * The message is a lobby system message + */ +#define DPSEND_LOBBYSYSTEMMESSAGE 0x00000080 + + +/* + * Send message asynchronously, must check caps + * before using this flag. It is always provided + * if the protocol flag is set. + */ +#define DPSEND_ASYNC 0x00000200 + +/* + * When an message is completed, don't tell me. + * by default the application is notified with a system message. + */ +#define DPSEND_NOSENDCOMPLETEMSG 0x00000400 + + +/* + * Maximum priority for sends available to applications + */ +#define DPSEND_MAX_PRI 0x0000FFFF +#define DPSEND_MAX_PRIORITY DPSEND_MAX_PRI + + +/**************************************************************************** + * + * SetGroupData, SetGroupName, SetPlayerData, SetPlayerName, + * SetSessionDesc API flags. + * Default is DPSET_REMOTE. + * + ****************************************************************************/ + +/* + * Propagate the data to all players in the session + */ +#define DPSET_REMOTE 0x00000000 + +/* + * Do not propagate the data to other players + */ +#define DPSET_LOCAL 0x00000001 + +/* + * Used with DPSET_REMOTE, use guaranteed message send to + * propagate the data + */ +#define DPSET_GUARANTEED 0x00000002 + +/**************************************************************************** + * + * GetMessageQueue API flags. + * Default is DPMESSAGEQUEUE_SEND + * + ****************************************************************************/ + +/* + * Get Send Queue - requires Service Provider Support + */ +#define DPMESSAGEQUEUE_SEND 0x00000001 + +/* + * Get Receive Queue + */ +#define DPMESSAGEQUEUE_RECEIVE 0x00000002 + + +/**************************************************************************** + * + * Connect API flags + * + ****************************************************************************/ + + +/* + * Start an asynchronous connect which returns status codes + */ +#define DPCONNECT_RETURNSTATUS (DPENUMSESSIONS_RETURNSTATUS) + + +/**************************************************************************** + * + * DirectPlay system messages and message data structures + * + * All system message come 'From' player DPID_SYSMSG. To determine what type + * of message it is, cast the lpData from Receive to DPMSG_GENERIC and check + * the dwType member against one of the following DPSYS_xxx constants. Once + * a match is found, cast the lpData to the corresponding of the DPMSG_xxx + * structures to access the data of the message. + * + ****************************************************************************/ + +/* + * A new player or group has been created in the session + * Use DPMSG_CREATEPLAYERORGROUP. Check dwPlayerType to see if it + * is a player or a group. + */ +#define DPSYS_CREATEPLAYERORGROUP 0x0003 + +/* + * A player has been deleted from the session + * Use DPMSG_DESTROYPLAYERORGROUP + */ +#define DPSYS_DESTROYPLAYERORGROUP 0x0005 + +/* + * A player has been added to a group + * Use DPMSG_ADDPLAYERTOGROUP + */ +#define DPSYS_ADDPLAYERTOGROUP 0x0007 + +/* + * A player has been removed from a group + * Use DPMSG_DELETEPLAYERFROMGROUP + */ +#define DPSYS_DELETEPLAYERFROMGROUP 0x0021 + +/* + * This DirectPlay object lost its connection with all the + * other players in the session. + * Use DPMSG_SESSIONLOST. + */ +#define DPSYS_SESSIONLOST 0x0031 + +/* + * The current host has left the session. + * This DirectPlay object is now the host. + * Use DPMSG_HOST. + */ +#define DPSYS_HOST 0x0101 + +/* + * The remote data associated with a player or + * group has changed. Check dwPlayerType to see + * if it is a player or a group + * Use DPMSG_SETPLAYERORGROUPDATA + */ +#define DPSYS_SETPLAYERORGROUPDATA 0x0102 + +/* + * The name of a player or group has changed. + * Check dwPlayerType to see if it is a player + * or a group. + * Use DPMSG_SETPLAYERORGROUPNAME + */ +#define DPSYS_SETPLAYERORGROUPNAME 0x0103 + +/* + * The session description has changed. + * Use DPMSG_SETSESSIONDESC + */ +#define DPSYS_SETSESSIONDESC 0x0104 + +/* + * A group has been added to a group + * Use DPMSG_ADDGROUPTOGROUP + */ +#define DPSYS_ADDGROUPTOGROUP 0x0105 + +/* + * A group has been removed from a group + * Use DPMSG_DELETEGROUPFROMGROUP + */ +#define DPSYS_DELETEGROUPFROMGROUP 0x0106 + +/* + * A secure player-player message has arrived. + * Use DPMSG_SECUREMESSAGE + */ +#define DPSYS_SECUREMESSAGE 0x0107 + +/* + * Start a new session. + * Use DPMSG_STARTSESSION + */ +#define DPSYS_STARTSESSION 0x0108 + +/* + * A chat message has arrived + * Use DPMSG_CHAT + */ +#define DPSYS_CHAT 0x0109 + +/* + * The owner of a group has changed + * Use DPMSG_SETGROUPOWNER + */ +#define DPSYS_SETGROUPOWNER 0x010A + +/* + * An async send has finished, failed or been cancelled + * Use DPMSG_SENDCOMPLETE + */ +#define DPSYS_SENDCOMPLETE 0x010d + + +/* + * Used in the dwPlayerType field to indicate if it applies to a group + * or a player + */ +#define DPPLAYERTYPE_GROUP 0x00000000 +#define DPPLAYERTYPE_PLAYER 0x00000001 + + +/* + * DPMSG_GENERIC + * Generic message structure used to identify the message type. + */ +typedef struct +{ + DWORD dwType; // Message type +} DPMSG_GENERIC, FAR *LPDPMSG_GENERIC; + +/* + * DPMSG_CREATEPLAYERORGROUP + * System message generated when a new player or group + * created in the session with information about it. + */ +typedef struct +{ + DWORD dwType; // Message type + DWORD dwPlayerType; // Is it a player or group + DPID dpId; // ID of the player or group + DWORD dwCurrentPlayers; // current # players & groups in session + LPVOID lpData; // pointer to remote data + DWORD dwDataSize; // size of remote data + DPNAME dpnName; // structure with name info + // the following fields are only available when using + // the IDirectPlay3 interface or greater + DPID dpIdParent; // id of parent group + DWORD dwFlags; // player or group flags +} DPMSG_CREATEPLAYERORGROUP, FAR *LPDPMSG_CREATEPLAYERORGROUP; + +/* + * DPMSG_DESTROYPLAYERORGROUP + * System message generated when a player or group is being + * destroyed in the session with information about it. + */ +typedef struct +{ + DWORD dwType; // Message type + DWORD dwPlayerType; // Is it a player or group + DPID dpId; // player ID being deleted + LPVOID lpLocalData; // copy of players local data + DWORD dwLocalDataSize; // sizeof local data + LPVOID lpRemoteData; // copy of players remote data + DWORD dwRemoteDataSize; // sizeof remote data + // the following fields are only available when using + // the IDirectPlay3 interface or greater + DPNAME dpnName; // structure with name info + DPID dpIdParent; // id of parent group + DWORD dwFlags; // player or group flags +} DPMSG_DESTROYPLAYERORGROUP, FAR *LPDPMSG_DESTROYPLAYERORGROUP; + +/* + * DPMSG_ADDPLAYERTOGROUP + * System message generated when a player is being added + * to a group. + */ +typedef struct +{ + DWORD dwType; // Message type + DPID dpIdGroup; // group ID being added to + DPID dpIdPlayer; // player ID being added +} DPMSG_ADDPLAYERTOGROUP, FAR *LPDPMSG_ADDPLAYERTOGROUP; + +/* + * DPMSG_DELETEPLAYERFROMGROUP + * System message generated when a player is being + * removed from a group + */ +typedef DPMSG_ADDPLAYERTOGROUP DPMSG_DELETEPLAYERFROMGROUP; +typedef DPMSG_DELETEPLAYERFROMGROUP FAR *LPDPMSG_DELETEPLAYERFROMGROUP; + +/* + * DPMSG_ADDGROUPTOGROUP + * System message generated when a group is being added + * to a group. + */ +typedef struct +{ + DWORD dwType; // Message type + DPID dpIdParentGroup; // group ID being added to + DPID dpIdGroup; // group ID being added +} DPMSG_ADDGROUPTOGROUP, FAR *LPDPMSG_ADDGROUPTOGROUP; + +/* + * DPMSG_DELETEGROUPFROMGROUP + * System message generated when a GROUP is being + * removed from a group + */ +typedef DPMSG_ADDGROUPTOGROUP DPMSG_DELETEGROUPFROMGROUP; +typedef DPMSG_DELETEGROUPFROMGROUP FAR *LPDPMSG_DELETEGROUPFROMGROUP; + +/* + * DPMSG_SETPLAYERORGROUPDATA + * System message generated when remote data for a player or + * group has changed. + */ +typedef struct +{ + DWORD dwType; // Message type + DWORD dwPlayerType; // Is it a player or group + DPID dpId; // ID of player or group + LPVOID lpData; // pointer to remote data + DWORD dwDataSize; // size of remote data +} DPMSG_SETPLAYERORGROUPDATA, FAR *LPDPMSG_SETPLAYERORGROUPDATA; + +/* + * DPMSG_SETPLAYERORGROUPNAME + * System message generated when the name of a player or + * group has changed. + */ +typedef struct +{ + DWORD dwType; // Message type + DWORD dwPlayerType; // Is it a player or group + DPID dpId; // ID of player or group + DPNAME dpnName; // structure with new name info +} DPMSG_SETPLAYERORGROUPNAME, FAR *LPDPMSG_SETPLAYERORGROUPNAME; + +/* + * DPMSG_SETSESSIONDESC + * System message generated when session desc has changed + */ +typedef struct +{ + DWORD dwType; // Message type + DPSESSIONDESC2 dpDesc; // Session desc +} DPMSG_SETSESSIONDESC, FAR *LPDPMSG_SETSESSIONDESC; + +/* + * DPMSG_HOST + * System message generated when the host has migrated to this + * DirectPlay object. + * + */ +typedef DPMSG_GENERIC DPMSG_HOST; +typedef DPMSG_HOST FAR *LPDPMSG_HOST; + +/* + * DPMSG_SESSIONLOST + * System message generated when the connection to the session is lost. + * + */ +typedef DPMSG_GENERIC DPMSG_SESSIONLOST; +typedef DPMSG_SESSIONLOST FAR *LPDPMSG_SESSIONLOST; + +/* + * DPMSG_SECUREMESSAGE + * System message generated when a player requests a secure send + */ +typedef struct +{ + DWORD dwType; // Message Type + DWORD dwFlags; // Signed/Encrypted + DPID dpIdFrom; // ID of Sending Player + LPVOID lpData; // Player message + DWORD dwDataSize; // Size of player message +} DPMSG_SECUREMESSAGE, FAR *LPDPMSG_SECUREMESSAGE; + +/* + * DPMSG_STARTSESSION + * System message containing all information required to + * start a new session + */ +typedef struct +{ + DWORD dwType; // Message type + LPDPLCONNECTION lpConn; // DPLCONNECTION structure +} DPMSG_STARTSESSION, FAR *LPDPMSG_STARTSESSION; + +/* + * DPMSG_CHAT + * System message containing a chat message + */ +typedef struct +{ + DWORD dwType; // Message type + DWORD dwFlags; // Message flags + DPID idFromPlayer; // ID of the Sending Player + DPID idToPlayer; // ID of the To Player + DPID idToGroup; // ID of the To Group + LPDPCHAT lpChat; // Pointer to a structure containing the chat message +} DPMSG_CHAT, FAR *LPDPMSG_CHAT; + +/* + * DPMSG_SETGROUPOWNER + * System message generated when the owner of a group has changed + */ +typedef struct +{ + DWORD dwType; // Message type + DPID idGroup; // ID of the group + DPID idNewOwner; // ID of the player that is the new owner + DPID idOldOwner; // ID of the player that used to be the owner +} DPMSG_SETGROUPOWNER, FAR *LPDPMSG_SETGROUPOWNER; + +/* + * DPMSG_SENDCOMPLETE + * System message generated when finished with an Async Send message + * + * NOTE SENDPARMS has an overlay for DPMSG_SENDCOMPLETE, don't + * change this message w/o changing SENDPARMS. + */ +typedef struct +{ + DWORD dwType; + DPID idFrom; + DPID idTo; + DWORD dwFlags; + DWORD dwPriority; + DWORD dwTimeout; + LPVOID lpvContext; + DWORD dwMsgID; + HRESULT hr; + DWORD dwSendTime; +} DPMSG_SENDCOMPLETE, *LPDPMSG_SENDCOMPLETE; + +/**************************************************************************** + * + * DIRECTPLAY ERRORS + * + * Errors are represented by negative values and cannot be combined. + * + ****************************************************************************/ +#define DP_OK S_OK +#define DPERR_ALREADYINITIALIZED MAKE_DPHRESULT( 5 ) +#define DPERR_ACCESSDENIED MAKE_DPHRESULT( 10 ) +#define DPERR_ACTIVEPLAYERS MAKE_DPHRESULT( 20 ) +#define DPERR_BUFFERTOOSMALL MAKE_DPHRESULT( 30 ) +#define DPERR_CANTADDPLAYER MAKE_DPHRESULT( 40 ) +#define DPERR_CANTCREATEGROUP MAKE_DPHRESULT( 50 ) +#define DPERR_CANTCREATEPLAYER MAKE_DPHRESULT( 60 ) +#define DPERR_CANTCREATESESSION MAKE_DPHRESULT( 70 ) +#define DPERR_CAPSNOTAVAILABLEYET MAKE_DPHRESULT( 80 ) +#define DPERR_EXCEPTION MAKE_DPHRESULT( 90 ) +#define DPERR_GENERIC E_FAIL +#define DPERR_INVALIDFLAGS MAKE_DPHRESULT( 120 ) +#define DPERR_INVALIDOBJECT MAKE_DPHRESULT( 130 ) +#define DPERR_INVALIDPARAM E_INVALIDARG +#define DPERR_INVALIDPARAMS DPERR_INVALIDPARAM +#define DPERR_INVALIDPLAYER MAKE_DPHRESULT( 150 ) +#define DPERR_INVALIDGROUP MAKE_DPHRESULT( 155 ) +#define DPERR_NOCAPS MAKE_DPHRESULT( 160 ) +#define DPERR_NOCONNECTION MAKE_DPHRESULT( 170 ) +#define DPERR_NOMEMORY E_OUTOFMEMORY +#define DPERR_OUTOFMEMORY DPERR_NOMEMORY +#define DPERR_NOMESSAGES MAKE_DPHRESULT( 190 ) +#define DPERR_NONAMESERVERFOUND MAKE_DPHRESULT( 200 ) +#define DPERR_NOPLAYERS MAKE_DPHRESULT( 210 ) +#define DPERR_NOSESSIONS MAKE_DPHRESULT( 220 ) +#define DPERR_PENDING E_PENDING +#define DPERR_SENDTOOBIG MAKE_DPHRESULT( 230 ) +#define DPERR_TIMEOUT MAKE_DPHRESULT( 240 ) +#define DPERR_UNAVAILABLE MAKE_DPHRESULT( 250 ) +#define DPERR_UNSUPPORTED E_NOTIMPL +#define DPERR_BUSY MAKE_DPHRESULT( 270 ) +#define DPERR_USERCANCEL MAKE_DPHRESULT( 280 ) +#define DPERR_NOINTERFACE E_NOINTERFACE +#define DPERR_CANNOTCREATESERVER MAKE_DPHRESULT( 290 ) +#define DPERR_PLAYERLOST MAKE_DPHRESULT( 300 ) +#define DPERR_SESSIONLOST MAKE_DPHRESULT( 310 ) +#define DPERR_UNINITIALIZED MAKE_DPHRESULT( 320 ) +#define DPERR_NONEWPLAYERS MAKE_DPHRESULT( 330 ) +#define DPERR_INVALIDPASSWORD MAKE_DPHRESULT( 340 ) +#define DPERR_CONNECTING MAKE_DPHRESULT( 350 ) +#define DPERR_CONNECTIONLOST MAKE_DPHRESULT( 360 ) +#define DPERR_UNKNOWNMESSAGE MAKE_DPHRESULT( 370 ) +#define DPERR_CANCELFAILED MAKE_DPHRESULT( 380 ) +#define DPERR_INVALIDPRIORITY MAKE_DPHRESULT( 390 ) +#define DPERR_NOTHANDLED MAKE_DPHRESULT( 400 ) +#define DPERR_CANCELLED MAKE_DPHRESULT( 410 ) +#define DPERR_ABORTED MAKE_DPHRESULT( 420 ) + + +#define DPERR_BUFFERTOOLARGE MAKE_DPHRESULT( 1000 ) +#define DPERR_CANTCREATEPROCESS MAKE_DPHRESULT( 1010 ) +#define DPERR_APPNOTSTARTED MAKE_DPHRESULT( 1020 ) +#define DPERR_INVALIDINTERFACE MAKE_DPHRESULT( 1030 ) +#define DPERR_NOSERVICEPROVIDER MAKE_DPHRESULT( 1040 ) +#define DPERR_UNKNOWNAPPLICATION MAKE_DPHRESULT( 1050 ) +#define DPERR_NOTLOBBIED MAKE_DPHRESULT( 1070 ) +#define DPERR_SERVICEPROVIDERLOADED MAKE_DPHRESULT( 1080 ) +#define DPERR_ALREADYREGISTERED MAKE_DPHRESULT( 1090 ) +#define DPERR_NOTREGISTERED MAKE_DPHRESULT( 1100 ) + +// +// Security related errors +// +#define DPERR_AUTHENTICATIONFAILED MAKE_DPHRESULT( 2000 ) +#define DPERR_CANTLOADSSPI MAKE_DPHRESULT( 2010 ) +#define DPERR_ENCRYPTIONFAILED MAKE_DPHRESULT( 2020 ) +#define DPERR_SIGNFAILED MAKE_DPHRESULT( 2030 ) +#define DPERR_CANTLOADSECURITYPACKAGE MAKE_DPHRESULT( 2040 ) +#define DPERR_ENCRYPTIONNOTSUPPORTED MAKE_DPHRESULT( 2050 ) +#define DPERR_CANTLOADCAPI MAKE_DPHRESULT( 2060 ) +#define DPERR_NOTLOGGEDIN MAKE_DPHRESULT( 2070 ) +#define DPERR_LOGONDENIED MAKE_DPHRESULT( 2080 ) + + +/**************************************************************************** + * + * dplay 1.0 obsolete structures + interfaces + * Included for compatibility only. New apps should + * use IDirectPlay2 + * + ****************************************************************************/ + +// define this to ignore obsolete interfaces and constants +#ifndef IDIRECTPLAY2_OR_GREATER + +#define DPOPEN_OPENSESSION DPOPEN_JOIN +#define DPOPEN_CREATESESSION DPOPEN_CREATE + +#define DPENUMSESSIONS_PREVIOUS 0x00000004 + +#define DPENUMPLAYERS_PREVIOUS 0x00000004 + +#define DPSEND_GUARANTEE DPSEND_GUARANTEED +#define DPSEND_TRYONCE 0x00000004 + +#define DPCAPS_NAMESERVICE 0x00000001 +#define DPCAPS_NAMESERVER DPCAPS_ISHOST +#define DPCAPS_GUARANTEED 0x00000004 + +#define DPLONGNAMELEN 52 +#define DPSHORTNAMELEN 20 +#define DPSESSIONNAMELEN 32 +#define DPPASSWORDLEN 16 +#define DPUSERRESERVED 16 + +#define DPSYS_ADDPLAYER 0x0003 +#define DPSYS_DELETEPLAYER 0x0005 + +#define DPSYS_DELETEGROUP 0x0020 +#define DPSYS_DELETEPLAYERFROMGRP 0x0021 +#define DPSYS_CONNECT 0x484b + +typedef struct +{ + DWORD dwType; + DWORD dwPlayerType; + DPID dpId; + char szLongName[DPLONGNAMELEN]; + char szShortName[DPSHORTNAMELEN]; + DWORD dwCurrentPlayers; +} DPMSG_ADDPLAYER; + +typedef DPMSG_ADDPLAYER DPMSG_ADDGROUP; + +typedef struct +{ + DWORD dwType; + DPID dpIdGroup; + DPID dpIdPlayer; +} DPMSG_GROUPADD; + +typedef DPMSG_GROUPADD DPMSG_GROUPDELETE; +typedef struct +{ + DWORD dwType; + DPID dpId; +} DPMSG_DELETEPLAYER; + +typedef BOOL (PASCAL *LPDPENUMPLAYERSCALLBACK)( + DPID dpId, + LPSTR lpFriendlyName, + LPSTR lpFormalName, + DWORD dwFlags, + LPVOID lpContext ); + +typedef struct +{ + DWORD dwSize; + GUID guidSession; + DWORD_PTR dwSession; + DWORD dwMaxPlayers; + DWORD dwCurrentPlayers; + DWORD dwFlags; + char szSessionName[DPSESSIONNAMELEN]; + char szUserField[DPUSERRESERVED]; + DWORD_PTR dwReserved1; + char szPassword[DPPASSWORDLEN]; + DWORD_PTR dwReserved2; + DWORD_PTR dwUser1; + DWORD_PTR dwUser2; + DWORD_PTR dwUser3; + DWORD_PTR dwUser4; +} DPSESSIONDESC,*LPDPSESSIONDESC; + +typedef BOOL (PASCAL * LPDPENUMSESSIONSCALLBACK)( + LPDPSESSIONDESC lpDPSessionDesc, + LPVOID lpContext, + LPDWORD lpdwTimeOut, + DWORD dwFlags); + +/* + * IDirectPlay + */ +#undef INTERFACE +#define INTERFACE IDirectPlay +DECLARE_INTERFACE_( IDirectPlay, IUnknown ) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + /*** IDirectPlay methods ***/ + STDMETHOD(AddPlayerToGroup) (THIS_ DPID, DPID) PURE; + STDMETHOD(Close) (THIS) PURE; + STDMETHOD(CreatePlayer) (THIS_ LPDPID,LPSTR,LPSTR,LPHANDLE) PURE; + STDMETHOD(CreateGroup) (THIS_ LPDPID,LPSTR,LPSTR) PURE; + STDMETHOD(DeletePlayerFromGroup)(THIS_ DPID,DPID) PURE; + STDMETHOD(DestroyPlayer) (THIS_ DPID) PURE; + STDMETHOD(DestroyGroup) (THIS_ DPID) PURE; + STDMETHOD(EnableNewPlayers) (THIS_ BOOL) PURE; + STDMETHOD(EnumGroupPlayers) (THIS_ DPID, LPDPENUMPLAYERSCALLBACK,LPVOID,DWORD) PURE; + STDMETHOD(EnumGroups) (THIS_ DWORD_PTR, LPDPENUMPLAYERSCALLBACK,LPVOID,DWORD) PURE; + STDMETHOD(EnumPlayers) (THIS_ DWORD_PTR, LPDPENUMPLAYERSCALLBACK,LPVOID,DWORD) PURE; + STDMETHOD(EnumSessions) (THIS_ LPDPSESSIONDESC,DWORD,LPDPENUMSESSIONSCALLBACK,LPVOID,DWORD) PURE; + STDMETHOD(GetCaps) (THIS_ LPDPCAPS) PURE; + STDMETHOD(GetMessageCount) (THIS_ DPID, LPDWORD) PURE; + STDMETHOD(GetPlayerCaps) (THIS_ DPID, LPDPCAPS) PURE; + STDMETHOD(GetPlayerName) (THIS_ DPID,LPSTR,LPDWORD,LPSTR,LPDWORD) PURE; + STDMETHOD(Initialize) (THIS_ LPGUID) PURE; + STDMETHOD(Open) (THIS_ LPDPSESSIONDESC) PURE; + STDMETHOD(Receive) (THIS_ LPDPID,LPDPID,DWORD,LPVOID,LPDWORD) PURE; + STDMETHOD(SaveSession) (THIS_ LPSTR) PURE; + STDMETHOD(Send) (THIS_ DPID, DPID, DWORD, LPVOID, DWORD) PURE; + STDMETHOD(SetPlayerName) (THIS_ DPID,LPSTR,LPSTR) PURE; +}; + +/**************************************************************************** + * + * IDirectPlay interface macros + * + ****************************************************************************/ + +#if !defined(__cplusplus) || defined(CINTERFACE) + +#define IDirectPlay_AddPlayerToGroup(p,a,b) (p)->lpVtbl->AddPlayerToGroup(p,a,b) +#define IDirectPlay_Close(p) (p)->lpVtbl->Close(p) +#define IDirectPlay_CreateGroup(p,a,b,c) (p)->lpVtbl->CreateGroup(p,a,b,c) +#define IDirectPlay_CreatePlayer(p,a,b,c,d) (p)->lpVtbl->CreatePlayer(p,a,b,c,d) +#define IDirectPlay_DeletePlayerFromGroup(p,a,b) (p)->lpVtbl->DeletePlayerFromGroup(p,a,b) +#define IDirectPlay_DestroyGroup(p,a) (p)->lpVtbl->DestroyGroup(p,a) +#define IDirectPlay_DestroyPlayer(p,a) (p)->lpVtbl->DestroyPlayer(p,a) +#define IDirectPlay_EnableNewPlayers(p,a) (p)->lpVtbl->EnableNewPlayers(p,a) +#define IDirectPlay_EnumGroupPlayers(p,a,b,c,d) (p)->lpVtbl->EnumGroupPlayers(p,a,b,c,d) +#define IDirectPlay_EnumGroups(p,a,b,c,d) (p)->lpVtbl->EnumGroups(p,a,b,c,d) +#define IDirectPlay_EnumPlayers(p,a,b,c,d) (p)->lpVtbl->EnumPlayers(p,a,b,c,d) +#define IDirectPlay_EnumSessions(p,a,b,c,d,e) (p)->lpVtbl->EnumSessions(p,a,b,c,d,e) +#define IDirectPlay_GetCaps(p,a) (p)->lpVtbl->GetCaps(p,a) +#define IDirectPlay_GetMessageCount(p,a,b) (p)->lpVtbl->GetMessageCount(p,a,b) +#define IDirectPlay_GetPlayerCaps(p,a,b) (p)->lpVtbl->GetPlayerCaps(p,a,b) +#define IDirectPlay_GetPlayerName(p,a,b,c,d,e) (p)->lpVtbl->GetPlayerName(p,a,b,c,d,e) +#define IDirectPlay_Initialize(p,a) (p)->lpVtbl->Initialize(p,a) +#define IDirectPlay_Open(p,a) (p)->lpVtbl->Open(p,a) +#define IDirectPlay_Receive(p,a,b,c,d,e) (p)->lpVtbl->Receive(p,a,b,c,d,e) +#define IDirectPlay_SaveSession(p,a) (p)->lpVtbl->SaveSession(p,a) +#define IDirectPlay_Send(p,a,b,c,d,e) (p)->lpVtbl->Send(p,a,b,c,d,e) +#define IDirectPlay_SetPlayerName(p,a,b,c) (p)->lpVtbl->SetPlayerName(p,a,b,c) + +#else /* C++ */ + +#define IDirectPlay_AddPlayerToGroup(p,a,b) (p)->AddPlayerToGroup(a,b) +#define IDirectPlay_Close(p) (p)->Close() +#define IDirectPlay_CreateGroup(p,a,b,c) (p)->CreateGroup(a,b,c) +#define IDirectPlay_CreatePlayer(p,a,b,c,d) (p)->CreatePlayer(a,b,c,d) +#define IDirectPlay_DeletePlayerFromGroup(p,a,b) (p)->DeletePlayerFromGroup(a,b) +#define IDirectPlay_DestroyGroup(p,a) (p)->DestroyGroup(a) +#define IDirectPlay_DestroyPlayer(p,a) (p)->DestroyPlayer(a) +#define IDirectPlay_EnableNewPlayers(p,a) (p)->EnableNewPlayers(a) +#define IDirectPlay_EnumGroupPlayers(p,a,b,c,d) (p)->EnumGroupPlayers(a,b,c,d) +#define IDirectPlay_EnumGroups(p,a,b,c,d) (p)->EnumGroups(a,b,c,d) +#define IDirectPlay_EnumPlayers(p,a,b,c,d) (p)->EnumPlayers(a,b,c,d) +#define IDirectPlay_EnumSessions(p,a,b,c,d,e) (p)->EnumSessions(a,b,c,d,e) +#define IDirectPlay_GetCaps(p,a) (p)->GetCaps(a) +#define IDirectPlay_GetMessageCount(p,a,b) (p)->GetMessageCount(a,b) +#define IDirectPlay_GetPlayerCaps(p,a,b) (p)->GetPlayerCaps(a,b) +#define IDirectPlay_GetPlayerName(p,a,b,c,d,e) (p)->GetPlayerName(a,b,c,d,e) +#define IDirectPlay_Initialize(p,a) (p)->Initialize(a) +#define IDirectPlay_Open(p,a) (p)->Open(a) +#define IDirectPlay_Receive(p,a,b,c,d,e) (p)->Receive(a,b,c,d,e) +#define IDirectPlay_SaveSession(p,a) (p)->SaveSession(a) +#define IDirectPlay_Send(p,a,b,c,d,e) (p)->Send(a,b,c,d,e) +#define IDirectPlay_SetPlayerName(p,a,b,c) (p)->SetPlayerName(a,b,c) + +#endif + +DEFINE_GUID(IID_IDirectPlay, 0x5454e9a0, 0xdb65, 0x11ce, 0x92, 0x1c, 0x00, 0xaa, 0x00, 0x6c, 0x49, 0x72); + +#endif // IDIRECTPLAY2_OR_GREATER + +/**************************************************************************** + * + * IDirectPlay macros (included regardless of IDIRECTPLAY2_OR_GREATER flag) + * + ****************************************************************************/ + +#if !defined(__cplusplus) || defined(CINTERFACE) + +#define IDirectPlay_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDirectPlay_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectPlay_Release(p) (p)->lpVtbl->Release(p) + +#else + +#define IDirectPlay_QueryInterface(p,a,b) (p)->QueryInterface(a,b) +#define IDirectPlay_AddRef(p) (p)->AddRef() +#define IDirectPlay_Release(p) (p)->Release() + +#endif // IDirectPlay interface macros + +#ifdef __cplusplus +}; +#endif + +/* restore warning settings */ +#if _MSC_VER >= 1200 +#pragma warning(pop) +#else +#pragma warning(default:4201) +#endif + +#endif + diff --git a/videoInputSrcAndDemos/libs/DShow/Include/dplay8.h b/videoInputSrcAndDemos/libs/DShow/Include/dplay8.h index bc63d5b..c6799a9 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/dplay8.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/dplay8.h @@ -1,1456 +1,1456 @@ -/*========================================================================== - * - * Copyright (C) 1998-2002 Microsoft Corporation. All Rights Reserved. - * - * File: DPlay8.h - * Content: DirectPlay8 include file - * - ***************************************************************************/ - -#ifndef __DIRECTPLAY8_H__ -#define __DIRECTPLAY8_H__ - -#include // for DECLARE_INTERFACE_ and HRESULT - -#include "dpaddr.h" - - -#ifdef __cplusplus -extern "C" { -#endif - - - -/**************************************************************************** - * - * DirectPlay8 CLSIDs - * - ****************************************************************************/ - -// {743F1DC6-5ABA-429f-8BDF-C54D03253DC2} -DEFINE_GUID(CLSID_DirectPlay8Client, -0x743f1dc6, 0x5aba, 0x429f, 0x8b, 0xdf, 0xc5, 0x4d, 0x3, 0x25, 0x3d, 0xc2); - -// {DA825E1B-6830-43d7-835D-0B5AD82956A2} -DEFINE_GUID(CLSID_DirectPlay8Server, -0xda825e1b, 0x6830, 0x43d7, 0x83, 0x5d, 0xb, 0x5a, 0xd8, 0x29, 0x56, 0xa2); - -// {286F484D-375E-4458-A272-B138E2F80A6A} -DEFINE_GUID(CLSID_DirectPlay8Peer, -0x286f484d, 0x375e, 0x4458, 0xa2, 0x72, 0xb1, 0x38, 0xe2, 0xf8, 0xa, 0x6a); - - -// CLSIDs added for DirectX 9 - -// {FC47060E-6153-4b34-B975-8E4121EB7F3C} -DEFINE_GUID(CLSID_DirectPlay8ThreadPool, -0xfc47060e, 0x6153, 0x4b34, 0xb9, 0x75, 0x8e, 0x41, 0x21, 0xeb, 0x7f, 0x3c); - -// {E4C1D9A2-CBF7-48bd-9A69-34A55E0D8941} -DEFINE_GUID(CLSID_DirectPlay8NATResolver, -0xe4c1d9a2, 0xcbf7, 0x48bd, 0x9a, 0x69, 0x34, 0xa5, 0x5e, 0xd, 0x89, 0x41); - -/**************************************************************************** - * - * DirectPlay8 Interface IIDs - * - ****************************************************************************/ - -typedef REFIID DP8REFIID; - - -// {5102DACD-241B-11d3-AEA7-006097B01411} -DEFINE_GUID(IID_IDirectPlay8Client, -0x5102dacd, 0x241b, 0x11d3, 0xae, 0xa7, 0x0, 0x60, 0x97, 0xb0, 0x14, 0x11); - -// {5102DACE-241B-11d3-AEA7-006097B01411} -DEFINE_GUID(IID_IDirectPlay8Server, -0x5102dace, 0x241b, 0x11d3, 0xae, 0xa7, 0x0, 0x60, 0x97, 0xb0, 0x14, 0x11); - -// {5102DACF-241B-11d3-AEA7-006097B01411} -DEFINE_GUID(IID_IDirectPlay8Peer, -0x5102dacf, 0x241b, 0x11d3, 0xae, 0xa7, 0x0, 0x60, 0x97, 0xb0, 0x14, 0x11); - - -// IIDs added for DirectX 9 - -// {0D22EE73-4A46-4a0d-89B2-045B4D666425} -DEFINE_GUID(IID_IDirectPlay8ThreadPool, -0xd22ee73, 0x4a46, 0x4a0d, 0x89, 0xb2, 0x4, 0x5b, 0x4d, 0x66, 0x64, 0x25); - -// {A9E213F2-9A60-486f-BF3B-53408B6D1CBB} -DEFINE_GUID(IID_IDirectPlay8NATResolver, -0xa9e213f2, 0x9a60, 0x486f, 0xbf, 0x3b, 0x53, 0x40, 0x8b, 0x6d, 0x1c, 0xbb); - -/**************************************************************************** - * - * DirectPlay8 Service Provider GUIDs - * - ****************************************************************************/ - - -// {53934290-628D-11D2-AE0F-006097B01411} -DEFINE_GUID(CLSID_DP8SP_IPX, -0x53934290, 0x628d, 0x11d2, 0xae, 0xf, 0x0, 0x60, 0x97, 0xb0, 0x14, 0x11); - - -// {6D4A3650-628D-11D2-AE0F-006097B01411} -DEFINE_GUID(CLSID_DP8SP_MODEM, -0x6d4a3650, 0x628d, 0x11d2, 0xae, 0xf, 0x0, 0x60, 0x97, 0xb0, 0x14, 0x11); - - -// {743B5D60-628D-11D2-AE0F-006097B01411} -DEFINE_GUID(CLSID_DP8SP_SERIAL, -0x743b5d60, 0x628d, 0x11d2, 0xae, 0xf, 0x0, 0x60, 0x97, 0xb0, 0x14, 0x11); - - -// {EBFE7BA0-628D-11D2-AE0F-006097B01411} -DEFINE_GUID(CLSID_DP8SP_TCPIP, -0xebfe7ba0, 0x628d, 0x11d2, 0xae, 0xf, 0x0, 0x60, 0x97, 0xb0, 0x14, 0x11); - - -// Service providers added for DirectX 9 - - -// {995513AF-3027-4b9a-956E-C772B3F78006} -DEFINE_GUID(CLSID_DP8SP_BLUETOOTH, -0x995513af, 0x3027, 0x4b9a, 0x95, 0x6e, 0xc7, 0x72, 0xb3, 0xf7, 0x80, 0x6); - - -/**************************************************************************** - * - * DirectPlay8 Interface Pointer definitions - * - ****************************************************************************/ - -typedef struct IDirectPlay8Client *PDIRECTPLAY8CLIENT; - -typedef struct IDirectPlay8Server *PDIRECTPLAY8SERVER; - -typedef struct IDirectPlay8Peer *PDIRECTPLAY8PEER; - - -// Interface pointers added for DirectX 9 - -typedef struct IDirectPlay8ThreadPool *PDIRECTPLAY8THREADPOOL; - -typedef struct IDirectPlay8NATResolver *PDIRECTPLAY8NATRESOLVER; - -/**************************************************************************** - * - * DirectPlay8 Forward Declarations For External Types - * - ****************************************************************************/ - -typedef struct IDirectPlay8LobbiedApplication *PDNLOBBIEDAPPLICATION; -typedef struct IDirectPlay8Address IDirectPlay8Address; - -/**************************************************************************** - * - * DirectPlay8 Callback Functions - * - ****************************************************************************/ - -// -// Callback Function Type Definition -// -typedef HRESULT (WINAPI *PFNDPNMESSAGEHANDLER)(PVOID,DWORD,PVOID); - -/**************************************************************************** - * - * DirectPlay8 Datatypes (Non-Structure / Non-Message) - * - ****************************************************************************/ - -// -// Player IDs. Used to uniquely identify a player in a session -// -typedef DWORD DPNID, *PDPNID; - -// -// Used as identifiers for operations -// -typedef DWORD DPNHANDLE, *PDPNHANDLE; - - - - -/**************************************************************************** - * - * DirectPlay8 Message Identifiers - * - ****************************************************************************/ - -#define DPN_MSGID_OFFSET 0xFFFF0000 -#define DPN_MSGID_ADD_PLAYER_TO_GROUP ( DPN_MSGID_OFFSET | 0x0001 ) -#define DPN_MSGID_APPLICATION_DESC ( DPN_MSGID_OFFSET | 0x0002 ) -#define DPN_MSGID_ASYNC_OP_COMPLETE ( DPN_MSGID_OFFSET | 0x0003 ) -#define DPN_MSGID_CLIENT_INFO ( DPN_MSGID_OFFSET | 0x0004 ) -#define DPN_MSGID_CONNECT_COMPLETE ( DPN_MSGID_OFFSET | 0x0005 ) -#define DPN_MSGID_CREATE_GROUP ( DPN_MSGID_OFFSET | 0x0006 ) -#define DPN_MSGID_CREATE_PLAYER ( DPN_MSGID_OFFSET | 0x0007 ) -#define DPN_MSGID_DESTROY_GROUP ( DPN_MSGID_OFFSET | 0x0008 ) -#define DPN_MSGID_DESTROY_PLAYER ( DPN_MSGID_OFFSET | 0x0009 ) -#define DPN_MSGID_ENUM_HOSTS_QUERY ( DPN_MSGID_OFFSET | 0x000a ) -#define DPN_MSGID_ENUM_HOSTS_RESPONSE ( DPN_MSGID_OFFSET | 0x000b ) -#define DPN_MSGID_GROUP_INFO ( DPN_MSGID_OFFSET | 0x000c ) -#define DPN_MSGID_HOST_MIGRATE ( DPN_MSGID_OFFSET | 0x000d ) -#define DPN_MSGID_INDICATE_CONNECT ( DPN_MSGID_OFFSET | 0x000e ) -#define DPN_MSGID_INDICATED_CONNECT_ABORTED ( DPN_MSGID_OFFSET | 0x000f ) -#define DPN_MSGID_PEER_INFO ( DPN_MSGID_OFFSET | 0x0010 ) -#define DPN_MSGID_RECEIVE ( DPN_MSGID_OFFSET | 0x0011 ) -#define DPN_MSGID_REMOVE_PLAYER_FROM_GROUP ( DPN_MSGID_OFFSET | 0x0012 ) -#define DPN_MSGID_RETURN_BUFFER ( DPN_MSGID_OFFSET | 0x0013 ) -#define DPN_MSGID_SEND_COMPLETE ( DPN_MSGID_OFFSET | 0x0014 ) -#define DPN_MSGID_SERVER_INFO ( DPN_MSGID_OFFSET | 0x0015 ) -#define DPN_MSGID_TERMINATE_SESSION ( DPN_MSGID_OFFSET | 0x0016 ) - -// Messages added for DirectX 9 -#define DPN_MSGID_CREATE_THREAD ( DPN_MSGID_OFFSET | 0x0017 ) -#define DPN_MSGID_DESTROY_THREAD ( DPN_MSGID_OFFSET | 0x0018 ) -#define DPN_MSGID_NAT_RESOLVER_QUERY ( DPN_MSGID_OFFSET | 0x0101 ) - -/**************************************************************************** - * - * DirectPlay8 Constants - * - ****************************************************************************/ - -#define DPNID_ALL_PLAYERS_GROUP 0 - -// -// DESTROY_GROUP reasons -// -#define DPNDESTROYGROUPREASON_NORMAL 0x0001 -#define DPNDESTROYGROUPREASON_AUTODESTRUCTED 0x0002 -#define DPNDESTROYGROUPREASON_SESSIONTERMINATED 0x0003 - -// -// DESTROY_PLAYER reasons -// -#define DPNDESTROYPLAYERREASON_NORMAL 0x0001 -#define DPNDESTROYPLAYERREASON_CONNECTIONLOST 0x0002 -#define DPNDESTROYPLAYERREASON_SESSIONTERMINATED 0x0003 -#define DPNDESTROYPLAYERREASON_HOSTDESTROYEDPLAYER 0x0004 - -#define DPN_MAX_APPDESC_RESERVEDDATA_SIZE 64 - - - -/**************************************************************************** - * - * DirectPlay8 Flags - * - ****************************************************************************/ - -// -// Asynchronous operation flags (for Async Ops) -// -#define DPNOP_SYNC 0x80000000 - -// -// Add player to group flags (for AddPlayerToGroup) -// -#define DPNADDPLAYERTOGROUP_SYNC DPNOP_SYNC - -// -// Cancel flags -// -#define DPNCANCEL_CONNECT 0x00000001 -#define DPNCANCEL_ENUM 0x00000002 -#define DPNCANCEL_SEND 0x00000004 -#define DPNCANCEL_ALL_OPERATIONS 0x00008000 -// Flags added for DirectX 9 -#define DPNCANCEL_PLAYER_SENDS 0x80000000 -#define DPNCANCEL_PLAYER_SENDS_PRIORITY_HIGH (DPNCANCEL_PLAYER_SENDS | 0x00010000) -#define DPNCANCEL_PLAYER_SENDS_PRIORITY_NORMAL (DPNCANCEL_PLAYER_SENDS | 0x00020000) -#define DPNCANCEL_PLAYER_SENDS_PRIORITY_LOW (DPNCANCEL_PLAYER_SENDS | 0x00040000) - -// -// Close flags (for Close, added for DirectX 9) -// -#define DPNCLOSE_IMMEDIATE 0x00000001 - -// -// Connect flags (for Connect) -// -#define DPNCONNECT_SYNC DPNOP_SYNC -#define DPNCONNECT_OKTOQUERYFORADDRESSING 0x0001 - -// -// Create group flags (for CreateGroup) -// -#define DPNCREATEGROUP_SYNC DPNOP_SYNC - -// -// Destroy group flags (for DestroyGroup) -// -#define DPNDESTROYGROUP_SYNC DPNOP_SYNC - -// -// Enumerate clients and groups flags (for EnumPlayersAndGroups) -// -#define DPNENUM_PLAYERS 0x0001 -#define DPNENUM_GROUPS 0x0010 - -// -// Enum hosts flags (for EnumHosts) -// -#define DPNENUMHOSTS_SYNC DPNOP_SYNC -#define DPNENUMHOSTS_OKTOQUERYFORADDRESSING 0x0001 -#define DPNENUMHOSTS_NOBROADCASTFALLBACK 0x0002 - -// -// Enum service provider flags (for EnumSP) -// -#define DPNENUMSERVICEPROVIDERS_ALL 0x0001 - -// -// GetLocalHostAddresses flags (added for DirectX 9) -// -#define DPNGETLOCALHOSTADDRESSES_COMBINED 0x0001 - -// -// Get send queue info flags (for GetSendQueueInfo) -// -#define DPNGETSENDQUEUEINFO_PRIORITY_NORMAL 0x0001 -#define DPNGETSENDQUEUEINFO_PRIORITY_HIGH 0x0002 -#define DPNGETSENDQUEUEINFO_PRIORITY_LOW 0x0004 - -// -// Group information flags (for Group Info) -// -#define DPNGROUP_AUTODESTRUCT 0x0001 - -// -// Host flags (for Host) -// -#define DPNHOST_OKTOQUERYFORADDRESSING 0x0001 - -// -// Set info -// -#define DPNINFO_NAME 0x0001 -#define DPNINFO_DATA 0x0002 - -// -// Initialize flags (for Initialize) -// -#define DPNINITIALIZE_DISABLEPARAMVAL 0x0001 -// Flags added for DirectX 9 -#define DPNINITIALIZE_HINT_LANSESSION 0x0002 -#define DPNINITIALIZE_DISABLELINKTUNING 0x0004 - - -// -// Register Lobby flags -// -#define DPNLOBBY_REGISTER 0x0001 -#define DPNLOBBY_UNREGISTER 0x0002 - -// -// Player information flags (for Player Info / Player Messages) -// -#define DPNPLAYER_LOCAL 0x0002 -#define DPNPLAYER_HOST 0x0004 - -// -// Receive indication flags (added for DirectX 9) -// -#define DPNRECEIVE_GUARANTEED 0x0001 -#define DPNRECEIVE_COALESCED 0x0002 - -// -// Remove player from group flags (for RemovePlayerFromGroup) -// -#define DPNREMOVEPLAYERFROMGROUP_SYNC DPNOP_SYNC - -// -// Send flags (for Send/SendTo) -// -#define DPNSEND_SYNC DPNOP_SYNC -#define DPNSEND_NOCOPY 0x0001 -#define DPNSEND_NOCOMPLETE 0x0002 -#define DPNSEND_COMPLETEONPROCESS 0x0004 -#define DPNSEND_GUARANTEED 0x0008 -#define DPNSEND_NONSEQUENTIAL 0x0010 -#define DPNSEND_NOLOOPBACK 0x0020 -#define DPNSEND_PRIORITY_LOW 0x0040 -#define DPNSEND_PRIORITY_HIGH 0x0080 -// Flag added for DirectX 9 -#define DPNSEND_COALESCE 0x0100 - -// -// Send complete indication flags (added for DirectX 9) -// -#define DPNSENDCOMPLETE_GUARANTEED 0x0001 -#define DPNSENDCOMPLETE_COALESCED 0x0002 - -// -// Session Flags (for DPN_APPLICATION_DESC) -// -#define DPNSESSION_CLIENT_SERVER 0x0001 -#define DPNSESSION_MIGRATE_HOST 0x0004 -#define DPNSESSION_NODPNSVR 0x0040 -#define DPNSESSION_REQUIREPASSWORD 0x0080 -// Flag added for DirectX 9 -#define DPNSESSION_NOENUMS 0x0100 -#define DPNSESSION_FAST_SIGNED 0x0200 -#define DPNSESSION_FULL_SIGNED 0x0400 - -// -// Set client info flags (for SetClientInfo) -// -#define DPNSETCLIENTINFO_SYNC DPNOP_SYNC - -// -// Set group info flags (for SetGroupInfo) -// -#define DPNSETGROUPINFO_SYNC DPNOP_SYNC - -// -// Set peer info flags (for SetPeerInfo) -// -#define DPNSETPEERINFO_SYNC DPNOP_SYNC - -// -// Set server info flags (for SetServerInfo) -// -#define DPNSETSERVERINFO_SYNC DPNOP_SYNC - -// -// SP capabilities flags -// -#define DPNSPCAPS_SUPPORTSDPNSVR 0x0001 -#define DPNSPCAPS_SUPPORTSDPNSRV DPNSPCAPS_SUPPORTSDPNSVR -#define DPNSPCAPS_SUPPORTSBROADCAST 0x0002 -#define DPNSPCAPS_SUPPORTSALLADAPTERS 0x0004 -// Flags added for DirectX 9 -#define DPNSPCAPS_SUPPORTSTHREADPOOL 0x0008 -#define DPNSPCAPS_NETWORKSIMULATOR 0x0010 - -// -// SP information flags (added for DirectX 9) -// -#define DPNSPINFO_NETWORKSIMULATORDEVICE 0x0001 - -/**************************************************************************** - * - * DirectPlay8 Structures (Non-Message) - * - ****************************************************************************/ - -// -// Application description -// -typedef struct _DPN_APPLICATION_DESC -{ - DWORD dwSize; // Size of this structure - DWORD dwFlags; // Flags (DPNSESSION_...) - GUID guidInstance; // Instance GUID - GUID guidApplication; // Application GUID - DWORD dwMaxPlayers; // Maximum # of players allowed (0=no limit) - DWORD dwCurrentPlayers; // Current # of players allowed - WCHAR *pwszSessionName; // Name of the session - WCHAR *pwszPassword; // Password for the session - PVOID pvReservedData; - DWORD dwReservedDataSize; - PVOID pvApplicationReservedData; - DWORD dwApplicationReservedDataSize; -} DPN_APPLICATION_DESC, *PDPN_APPLICATION_DESC; - -// -// Generic Buffer Description -// -typedef struct _BUFFERDESC -{ - DWORD dwBufferSize; - BYTE * pBufferData; -} BUFFERDESC, DPN_BUFFER_DESC, *PDPN_BUFFER_DESC; - -typedef BUFFERDESC FAR * PBUFFERDESC; - -// -// DirectPlay8 capabilities -// -typedef struct _DPN_CAPS -{ - DWORD dwSize; // Size of this structure - DWORD dwFlags; // Flags - DWORD dwConnectTimeout; // ms before a connect request times out - DWORD dwConnectRetries; // # of times to attempt the connection - DWORD dwTimeoutUntilKeepAlive; // ms of inactivity before a keep alive is sent -} DPN_CAPS, *PDPN_CAPS; - -// -// Extended capabilities structures (added for DirectX 9) -// -typedef struct _DPN_CAPS_EX -{ - DWORD dwSize; // Size of this structure - DWORD dwFlags; // Flags - DWORD dwConnectTimeout; // ms before a connect request times out - DWORD dwConnectRetries; // # of times to attempt the connection - DWORD dwTimeoutUntilKeepAlive; // ms of inactivity before a keep alive is sent - DWORD dwMaxRecvMsgSize; // maximum size in bytes of message that can be received - DWORD dwNumSendRetries; // maximum number of send retries before link is considered dead - DWORD dwMaxSendRetryInterval; // maximum period in msec between send retries - DWORD dwDropThresholdRate; // percentage of dropped packets before throttling - DWORD dwThrottleRate; // percentage amount to reduce send window when throttling - DWORD dwNumHardDisconnectSends; // number of hard disconnect frames to send when close immediate flag is specified - DWORD dwMaxHardDisconnectPeriod; // maximum period between hard disconnect sends -} DPN_CAPS_EX, *PDPN_CAPS_EX; - -// -// Connection Statistics information -// -typedef struct _DPN_CONNECTION_INFO -{ - DWORD dwSize; - DWORD dwRoundTripLatencyMS; - DWORD dwThroughputBPS; - DWORD dwPeakThroughputBPS; - - DWORD dwBytesSentGuaranteed; - DWORD dwPacketsSentGuaranteed; - DWORD dwBytesSentNonGuaranteed; - DWORD dwPacketsSentNonGuaranteed; - - DWORD dwBytesRetried; // Guaranteed only - DWORD dwPacketsRetried; // Guaranteed only - DWORD dwBytesDropped; // Non Guaranteed only - DWORD dwPacketsDropped; // Non Guaranteed only - - DWORD dwMessagesTransmittedHighPriority; - DWORD dwMessagesTimedOutHighPriority; - DWORD dwMessagesTransmittedNormalPriority; - DWORD dwMessagesTimedOutNormalPriority; - DWORD dwMessagesTransmittedLowPriority; - DWORD dwMessagesTimedOutLowPriority; - - DWORD dwBytesReceivedGuaranteed; - DWORD dwPacketsReceivedGuaranteed; - DWORD dwBytesReceivedNonGuaranteed; - DWORD dwPacketsReceivedNonGuaranteed; - DWORD dwMessagesReceived; - -} DPN_CONNECTION_INFO, *PDPN_CONNECTION_INFO; - - -// -// Group information structure -// -typedef struct _DPN_GROUP_INFO -{ - DWORD dwSize; // size of this structure - DWORD dwInfoFlags; // information contained - PWSTR pwszName; // Unicode Name - PVOID pvData; // data block - DWORD dwDataSize; // size in BYTES of data block - DWORD dwGroupFlags; // group flags (DPNGROUP_...) -} DPN_GROUP_INFO, *PDPN_GROUP_INFO; - -// -// Player information structure -// -typedef struct _DPN_PLAYER_INFO -{ - DWORD dwSize; // size of this structure - DWORD dwInfoFlags; // information contained - PWSTR pwszName; // Unicode Name - PVOID pvData; // data block - DWORD dwDataSize; // size in BYTES of data block - DWORD dwPlayerFlags; // player flags (DPNPLAYER_...) -} DPN_PLAYER_INFO, *PDPN_PLAYER_INFO; - -typedef struct _DPN_SECURITY_CREDENTIALS DPN_SECURITY_CREDENTIALS, *PDPN_SECURITY_CREDENTIALS; -typedef struct _DPN_SECURITY_DESC DPN_SECURITY_DESC, *PDPN_SECURITY_DESC; - -// -// Service provider & adapter enumeration structure -// -typedef struct _DPN_SERVICE_PROVIDER_INFO -{ - DWORD dwFlags; - GUID guid; // SP Guid - WCHAR *pwszName; // Friendly Name - PVOID pvReserved; - DWORD dwReserved; -} DPN_SERVICE_PROVIDER_INFO, *PDPN_SERVICE_PROVIDER_INFO; - -// -// Service provider caps structure -// -typedef struct _DPN_SP_CAPS -{ - DWORD dwSize; // Size of this structure - DWORD dwFlags; // Flags (DPNSPCAPS_...) - DWORD dwNumThreads; // # of worker threads to use - DWORD dwDefaultEnumCount; // default # of enum requests - DWORD dwDefaultEnumRetryInterval; // default ms between enum requests - DWORD dwDefaultEnumTimeout; // default enum timeout - DWORD dwMaxEnumPayloadSize; // maximum size in bytes for enum payload data - DWORD dwBuffersPerThread; // number of receive buffers per thread - DWORD dwSystemBufferSize; // amount of buffering to do in addition to posted receive buffers -} DPN_SP_CAPS, *PDPN_SP_CAPS; - - -/**************************************************************************** - * - * IDirectPlay8 message handler call back structures - * - ****************************************************************************/ - -// -// Add player to group structure for message handler -// (DPN_MSGID_ADD_PLAYER_TO_GROUP) -// -typedef struct _DPNMSG_ADD_PLAYER_TO_GROUP -{ - DWORD dwSize; // Size of this structure - DPNID dpnidGroup; // DPNID of group - PVOID pvGroupContext; // Group context value - DPNID dpnidPlayer; // DPNID of added player - PVOID pvPlayerContext; // Player context value -} DPNMSG_ADD_PLAYER_TO_GROUP, *PDPNMSG_ADD_PLAYER_TO_GROUP; - -// -// Async operation completion structure for message handler -// (DPN_MSGID_ASYNC_OP_COMPLETE) -// -typedef struct _DPNMSG_ASYNC_OP_COMPLETE -{ - DWORD dwSize; // Size of this structure - DPNHANDLE hAsyncOp; // DirectPlay8 async operation handle - PVOID pvUserContext; // User context supplied - HRESULT hResultCode; // HRESULT of operation -} DPNMSG_ASYNC_OP_COMPLETE, *PDPNMSG_ASYNC_OP_COMPLETE; - -// -// Client info structure for message handler -// (DPN_MSGID_CLIENT_INFO) -// -typedef struct _DPNMSG_CLIENT_INFO -{ - DWORD dwSize; // Size of this structure - DPNID dpnidClient; // DPNID of client - PVOID pvPlayerContext; // Player context value -} DPNMSG_CLIENT_INFO, *PDPNMSG_CLIENT_INFO; - -// -// Connect complete structure for message handler -// (DPN_MSGID_CONNECT_COMPLETE) -// -typedef struct _DPNMSG_CONNECT_COMPLETE -{ - DWORD dwSize; // Size of this structure - DPNHANDLE hAsyncOp; // DirectPlay8 Async operation handle - PVOID pvUserContext; // User context supplied at Connect - HRESULT hResultCode; // HRESULT of connection attempt - PVOID pvApplicationReplyData; // Connection reply data from Host/Server - DWORD dwApplicationReplyDataSize; // Size (in bytes) of pvApplicationReplyData - - // Fields added for DirectX 9 - DPNID dpnidLocal; // DPNID of local player -} DPNMSG_CONNECT_COMPLETE, *PDPNMSG_CONNECT_COMPLETE; - -// -// Create group structure for message handler -// (DPN_MSGID_CREATE_GROUP) -// -typedef struct _DPNMSG_CREATE_GROUP -{ - DWORD dwSize; // Size of this structure - DPNID dpnidGroup; // DPNID of new group - DPNID dpnidOwner; // Owner of newgroup - PVOID pvGroupContext; // Group context value - - // Fields added for DirectX 9 - PVOID pvOwnerContext; // Owner context value -} DPNMSG_CREATE_GROUP, *PDPNMSG_CREATE_GROUP; - -// -// Create player structure for message handler -// (DPN_MSGID_CREATE_PLAYER) -// -typedef struct _DPNMSG_CREATE_PLAYER -{ - DWORD dwSize; // Size of this structure - DPNID dpnidPlayer; // DPNID of new player - PVOID pvPlayerContext; // Player context value -} DPNMSG_CREATE_PLAYER, *PDPNMSG_CREATE_PLAYER; - -// -// Destroy group structure for message handler -// (DPN_MSGID_DESTROY_GROUP) -// -typedef struct _DPNMSG_DESTROY_GROUP -{ - DWORD dwSize; // Size of this structure - DPNID dpnidGroup; // DPNID of destroyed group - PVOID pvGroupContext; // Group context value - DWORD dwReason; // Information only -} DPNMSG_DESTROY_GROUP, *PDPNMSG_DESTROY_GROUP; - -// -// Destroy player structure for message handler -// (DPN_MSGID_DESTROY_PLAYER) -// -typedef struct _DPNMSG_DESTROY_PLAYER -{ - DWORD dwSize; // Size of this structure - DPNID dpnidPlayer; // DPNID of leaving player - PVOID pvPlayerContext; // Player context value - DWORD dwReason; // Information only -} DPNMSG_DESTROY_PLAYER, *PDPNMSG_DESTROY_PLAYER; - -// -// Enumeration request received structure for message handler -// (DPN_MSGID_ENUM_HOSTS_QUERY) -// -typedef struct _DPNMSG_ENUM_HOSTS_QUERY -{ - DWORD dwSize; // Size of this structure. - IDirectPlay8Address *pAddressSender; // Address of client who sent the request - IDirectPlay8Address *pAddressDevice; // Address of device request was received on - PVOID pvReceivedData; // Request data (set on client) - DWORD dwReceivedDataSize; // Request data size (set on client) - DWORD dwMaxResponseDataSize; // Max allowable size of enum response - PVOID pvResponseData; // Optional query repsonse (user set) - DWORD dwResponseDataSize; // Optional query response size (user set) - PVOID pvResponseContext; // Optional query response context (user set) -} DPNMSG_ENUM_HOSTS_QUERY, *PDPNMSG_ENUM_HOSTS_QUERY; - -// -// Enumeration response received structure for message handler -// (DPN_MSGID_ENUM_HOSTS_RESPONSE) -// -typedef struct _DPNMSG_ENUM_HOSTS_RESPONSE -{ - DWORD dwSize; // Size of this structure - IDirectPlay8Address *pAddressSender; // Address of host who responded - IDirectPlay8Address *pAddressDevice; // Device response was received on - const DPN_APPLICATION_DESC *pApplicationDescription; // Application description for the session - PVOID pvResponseData; // Optional response data (set on host) - DWORD dwResponseDataSize; // Optional response data size (set on host) - PVOID pvUserContext; // Context value supplied for enumeration - DWORD dwRoundTripLatencyMS; // Round trip latency in MS -} DPNMSG_ENUM_HOSTS_RESPONSE, *PDPNMSG_ENUM_HOSTS_RESPONSE; - -// -// Group info structure for message handler -// (DPN_MSGID_GROUP_INFO) -// -typedef struct _DPNMSG_GROUP_INFO -{ - DWORD dwSize; // Size of this structure - DPNID dpnidGroup; // DPNID of group - PVOID pvGroupContext; // Group context value -} DPNMSG_GROUP_INFO, *PDPNMSG_GROUP_INFO; - -// -// Migrate host structure for message handler -// (DPN_MSGID_HOST_MIGRATE) -// -typedef struct _DPNMSG_HOST_MIGRATE -{ - DWORD dwSize; // Size of this structure - DPNID dpnidNewHost; // DPNID of new Host player - PVOID pvPlayerContext; // Player context value -} DPNMSG_HOST_MIGRATE, *PDPNMSG_HOST_MIGRATE; - -// -// Indicate connect structure for message handler -// (DPN_MSGID_INDICATE_CONNECT) -// -typedef struct _DPNMSG_INDICATE_CONNECT -{ - DWORD dwSize; // Size of this structure - PVOID pvUserConnectData; // Connecting player data - DWORD dwUserConnectDataSize; // Size (in bytes) of pvUserConnectData - PVOID pvReplyData; // Connection reply data - DWORD dwReplyDataSize; // Size (in bytes) of pvReplyData - PVOID pvReplyContext; // Buffer context for pvReplyData - PVOID pvPlayerContext; // Player context preset - IDirectPlay8Address *pAddressPlayer; // Address of connecting player - IDirectPlay8Address *pAddressDevice; // Address of device receiving connect attempt -} DPNMSG_INDICATE_CONNECT, *PDPNMSG_INDICATE_CONNECT; - -// -// Indicated connect aborted structure for message handler -// (DPN_MSGID_INDICATED_CONNECT_ABORTED) -// -typedef struct _DPNMSG_INDICATED_CONNECT_ABORTED -{ - DWORD dwSize; // Size of this structure - PVOID pvPlayerContext; // Player context preset from DPNMSG_INDICATE_CONNECT -} DPNMSG_INDICATED_CONNECT_ABORTED, *PDPNMSG_INDICATED_CONNECT_ABORTED; - -// -// Peer info structure for message handler -// (DPN_MSGID_PEER_INFO) -// -typedef struct _DPNMSG_PEER_INFO -{ - DWORD dwSize; // Size of this structure - DPNID dpnidPeer; // DPNID of peer - PVOID pvPlayerContext; // Player context value -} DPNMSG_PEER_INFO, *PDPNMSG_PEER_INFO; - -// -// Receive structure for message handler -// (DPN_MSGID_RECEIVE) -// -typedef struct _DPNMSG_RECEIVE -{ - DWORD dwSize; // Size of this structure - DPNID dpnidSender; // DPNID of sending player - PVOID pvPlayerContext; // Player context value of sending player - PBYTE pReceiveData; // Received data - DWORD dwReceiveDataSize; // Size (in bytes) of pReceiveData - DPNHANDLE hBufferHandle; // Buffer handle for pReceiveData - - // Fields added for DirectX 9 - DWORD dwReceiveFlags; // Flags describing how message was received -} DPNMSG_RECEIVE, *PDPNMSG_RECEIVE; - -// -// Remove player from group structure for message handler -// (DPN_MSGID_REMOVE_PLAYER_FROM_GROUP) -// -typedef struct _DPNMSG_REMOVE_PLAYER_FROM_GROUP -{ - DWORD dwSize; // Size of this structure - DPNID dpnidGroup; // DPNID of group - PVOID pvGroupContext; // Group context value - DPNID dpnidPlayer; // DPNID of deleted player - PVOID pvPlayerContext; // Player context value -} DPNMSG_REMOVE_PLAYER_FROM_GROUP, *PDPNMSG_REMOVE_PLAYER_FROM_GROUP; - -// -// Returned buffer structure for message handler -// (DPN_MSGID_RETURN_BUFFER) -// -typedef struct _DPNMSG_RETURN_BUFFER -{ - DWORD dwSize; // Size of this structure - HRESULT hResultCode; // Return value of operation - PVOID pvBuffer; // Buffer being returned - PVOID pvUserContext; // Context associated with buffer -} DPNMSG_RETURN_BUFFER, *PDPNMSG_RETURN_BUFFER; - -// -// Send complete structure for message handler -// (DPN_MSGID_SEND_COMPLETE) -// -typedef struct _DPNMSG_SEND_COMPLETE -{ - DWORD dwSize; // Size of this structure - DPNHANDLE hAsyncOp; // DirectPlay8 Async operation handle - PVOID pvUserContext; // User context supplied at Send/SendTo - HRESULT hResultCode; // HRESULT of send - DWORD dwSendTime; // Send time in ms - - // Fields added for DirectX 9 - DWORD dwFirstFrameRTT; // RTT of the first frame in the message - DWORD dwFirstFrameRetryCount; // Retry count of the first frame - DWORD dwSendCompleteFlags; // Flags describing how message was sent - DPN_BUFFER_DESC *pBuffers; // Pointer to array of buffers sent, if DirectPlay did not make a copy - DWORD dwNumBuffers; // Number of buffers in previous array -} DPNMSG_SEND_COMPLETE, *PDPNMSG_SEND_COMPLETE; - -// -// Server info structure for message handler -// (DPN_MSGID_SERVER_INFO) -// -typedef struct _DPNMSG_SERVER_INFO -{ - DWORD dwSize; // Size of this structure - DPNID dpnidServer; // DPNID of server - PVOID pvPlayerContext; // Player context value -} DPNMSG_SERVER_INFO, *PDPNMSG_SERVER_INFO; - -// -// Terminated session structure for message handler -// (DPN_MSGID_TERMINATE_SESSION) -// -typedef struct _DPNMSG_TERMINATE_SESSION -{ - DWORD dwSize; // Size of this structure - HRESULT hResultCode; // Reason - PVOID pvTerminateData; // Data passed from Host/Server - DWORD dwTerminateDataSize;// Size (in bytes) of pvTerminateData -} DPNMSG_TERMINATE_SESSION, *PDPNMSG_TERMINATE_SESSION; - - -// -// Message structures added for DirectX 9 -// - -// -// Create thread info structure for message handler -// (DPN_MSGID_CREATE_THREAD) -// -typedef struct _DPNMSG_CREATE_THREAD -{ - DWORD dwSize; // Size of this structure - DWORD dwFlags; // Flags describing this thread - DWORD dwProcessorNum; // Index of processor to which thread is bound - PVOID pvUserContext; // Thread context value -} DPNMSG_CREATE_THREAD, *PDPNMSG_CREATE_THREAD; - -// -// Destroy thread info structure for message handler -// (DPN_MSGID_DESTROY_THREAD) -// -typedef struct _DPNMSG_DESTROY_THREAD -{ - DWORD dwSize; // Size of this structure - DWORD dwProcessorNum; // Index of processor to which thread was bound - PVOID pvUserContext; // Thread context value -} DPNMSG_DESTROY_THREAD, *PDPNMSG_DESTROY_THREAD; - - -// -// Query-to-resolve-NAT-address structure for message handler -// (DPN_MSGID_NAT_RESOLVER_QUERY) -// -typedef struct _DPNMSG_NAT_RESOLVER_QUERY -{ - DWORD dwSize; // Size of this structure. - IDirectPlay8Address *pAddressSender; // Address of client that sent the query - IDirectPlay8Address *pAddressDevice; // Address of device on which query was received - WCHAR *pwszUserString; // User specified string, or NULL if none -} DPNMSG_NAT_RESOLVER_QUERY, *PDPNMSG_NAT_RESOLVER_QUERY; - -/**************************************************************************** - * - * DirectPlay8 Functions - * - ****************************************************************************/ - - - -/* - * This function is no longer supported. It is recommended that CoCreateInstance be used to create - * DirectPlay8 objects. - * - * extern HRESULT WINAPI DirectPlay8Create( const CLSID * pcIID, void **ppvInterface, IUnknown *pUnknown ); - * - */ - - -/**************************************************************************** - * - * DirectPlay8 Application Interfaces - * - ****************************************************************************/ - -// -// COM definition for DirectPlay8 Client interface -// -#undef INTERFACE // External COM Implementation -#define INTERFACE IDirectPlay8Client -DECLARE_INTERFACE_(IDirectPlay8Client,IUnknown) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface) (THIS_ DP8REFIID riid, LPVOID *ppvObj) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - /*** IDirectPlay8Client methods ***/ - STDMETHOD(Initialize) (THIS_ PVOID const pvUserContext, const PFNDPNMESSAGEHANDLER pfn, const DWORD dwFlags) PURE; - STDMETHOD(EnumServiceProviders) (THIS_ const GUID *const pguidServiceProvider, const GUID *const pguidApplication, DPN_SERVICE_PROVIDER_INFO *const pSPInfoBuffer, PDWORD const pcbEnumData, PDWORD const pcReturned, const DWORD dwFlags) PURE; - STDMETHOD(EnumHosts) (THIS_ PDPN_APPLICATION_DESC const pApplicationDesc,IDirectPlay8Address *const pAddrHost,IDirectPlay8Address *const pDeviceInfo,PVOID const pUserEnumData,const DWORD dwUserEnumDataSize,const DWORD dwEnumCount,const DWORD dwRetryInterval,const DWORD dwTimeOut,PVOID const pvUserContext,DPNHANDLE *const pAsyncHandle,const DWORD dwFlags) PURE; - STDMETHOD(CancelAsyncOperation) (THIS_ const DPNHANDLE hAsyncHandle, const DWORD dwFlags) PURE; - STDMETHOD(Connect) (THIS_ const DPN_APPLICATION_DESC *const pdnAppDesc,IDirectPlay8Address *const pHostAddr,IDirectPlay8Address *const pDeviceInfo,const DPN_SECURITY_DESC *const pdnSecurity,const DPN_SECURITY_CREDENTIALS *const pdnCredentials,const void *const pvUserConnectData,const DWORD dwUserConnectDataSize,void *const pvAsyncContext,DPNHANDLE *const phAsyncHandle,const DWORD dwFlags) PURE; - STDMETHOD(Send) (THIS_ const DPN_BUFFER_DESC *const prgBufferDesc,const DWORD cBufferDesc,const DWORD dwTimeOut,void *const pvAsyncContext,DPNHANDLE *const phAsyncHandle,const DWORD dwFlags) PURE; - STDMETHOD(GetSendQueueInfo) (THIS_ DWORD *const pdwNumMsgs, DWORD *const pdwNumBytes, const DWORD dwFlags) PURE; - STDMETHOD(GetApplicationDesc) (THIS_ DPN_APPLICATION_DESC *const pAppDescBuffer, DWORD *const pcbDataSize, const DWORD dwFlags) PURE; - STDMETHOD(SetClientInfo) (THIS_ const DPN_PLAYER_INFO *const pdpnPlayerInfo,PVOID const pvAsyncContext,DPNHANDLE *const phAsyncHandle, const DWORD dwFlags) PURE; - STDMETHOD(GetServerInfo) (THIS_ DPN_PLAYER_INFO *const pdpnPlayerInfo,DWORD *const pdwSize,const DWORD dwFlags) PURE; - STDMETHOD(GetServerAddress) (THIS_ IDirectPlay8Address **const pAddress,const DWORD dwFlags) PURE; - STDMETHOD(Close) (THIS_ const DWORD dwFlags) PURE; - STDMETHOD(ReturnBuffer) (THIS_ const DPNHANDLE hBufferHandle,const DWORD dwFlags) PURE; - STDMETHOD(GetCaps) (THIS_ DPN_CAPS *const pdpCaps,const DWORD dwFlags) PURE; - STDMETHOD(SetCaps) (THIS_ const DPN_CAPS *const pdpCaps, const DWORD dwFlags) PURE; - STDMETHOD(SetSPCaps) (THIS_ const GUID * const pguidSP, const DPN_SP_CAPS *const pdpspCaps, const DWORD dwFlags ) PURE; - STDMETHOD(GetSPCaps) (THIS_ const GUID * const pguidSP,DPN_SP_CAPS *const pdpspCaps,const DWORD dwFlags) PURE; - STDMETHOD(GetConnectionInfo) (THIS_ DPN_CONNECTION_INFO *const pdpConnectionInfo,const DWORD dwFlags) PURE; - STDMETHOD(RegisterLobby) (THIS_ const DPNHANDLE dpnHandle, struct IDirectPlay8LobbiedApplication *const pIDP8LobbiedApplication,const DWORD dwFlags) PURE; -}; - -// -// COM definition for DirectPlay8 Server interface -// -#undef INTERFACE // External COM Implementation -#define INTERFACE IDirectPlay8Server -DECLARE_INTERFACE_(IDirectPlay8Server,IUnknown) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface) (THIS_ DP8REFIID riid, LPVOID *ppvObj) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - /*** IDirectPlay8Server methods ***/ - STDMETHOD(Initialize) (THIS_ PVOID const pvUserContext, const PFNDPNMESSAGEHANDLER pfn, const DWORD dwFlags) PURE; - STDMETHOD(EnumServiceProviders) (THIS_ const GUID *const pguidServiceProvider,const GUID *const pguidApplication,DPN_SERVICE_PROVIDER_INFO *const pSPInfoBuffer,PDWORD const pcbEnumData,PDWORD const pcReturned,const DWORD dwFlags) PURE; - STDMETHOD(CancelAsyncOperation) (THIS_ const DPNHANDLE hAsyncHandle,const DWORD dwFlags) PURE; - STDMETHOD(GetSendQueueInfo) (THIS_ const DPNID dpnid,DWORD *const pdwNumMsgs, DWORD *const pdwNumBytes, const DWORD dwFlags) PURE; - STDMETHOD(GetApplicationDesc) (THIS_ DPN_APPLICATION_DESC *const pAppDescBuffer, DWORD *const pcbDataSize, const DWORD dwFlags) PURE; - STDMETHOD(SetServerInfo) (THIS_ const DPN_PLAYER_INFO *const pdpnPlayerInfo,PVOID const pvAsyncContext, DPNHANDLE *const phAsyncHandle, const DWORD dwFlags) PURE; - STDMETHOD(GetClientInfo) (THIS_ const DPNID dpnid,DPN_PLAYER_INFO *const pdpnPlayerInfo,DWORD *const pdwSize,const DWORD dwFlags) PURE; - STDMETHOD(GetClientAddress) (THIS_ const DPNID dpnid,IDirectPlay8Address **const pAddress,const DWORD dwFlags) PURE; - STDMETHOD(GetLocalHostAddresses) (THIS_ IDirectPlay8Address **const prgpAddress,DWORD *const pcAddress,const DWORD dwFlags) PURE; - STDMETHOD(SetApplicationDesc) (THIS_ const DPN_APPLICATION_DESC *const pad, const DWORD dwFlags) PURE; - STDMETHOD(Host) (THIS_ const DPN_APPLICATION_DESC *const pdnAppDesc,IDirectPlay8Address **const prgpDeviceInfo,const DWORD cDeviceInfo,const DPN_SECURITY_DESC *const pdnSecurity,const DPN_SECURITY_CREDENTIALS *const pdnCredentials,void *const pvPlayerContext,const DWORD dwFlags) PURE; - STDMETHOD(SendTo) (THIS_ const DPNID dpnid,const DPN_BUFFER_DESC *const prgBufferDesc,const DWORD cBufferDesc,const DWORD dwTimeOut,void *const pvAsyncContext,DPNHANDLE *const phAsyncHandle,const DWORD dwFlags) PURE; - STDMETHOD(CreateGroup) (THIS_ const DPN_GROUP_INFO *const pdpnGroupInfo,void *const pvGroupContext,void *const pvAsyncContext,DPNHANDLE *const phAsyncHandle,const DWORD dwFlags) PURE; - STDMETHOD(DestroyGroup) (THIS_ const DPNID idGroup, PVOID const pvAsyncContext, DPNHANDLE *const phAsyncHandle, const DWORD dwFlags) PURE; - STDMETHOD(AddPlayerToGroup) (THIS_ const DPNID idGroup, const DPNID idClient, PVOID const pvAsyncContext, DPNHANDLE *const phAsyncHandle, const DWORD dwFlags) PURE; - STDMETHOD(RemovePlayerFromGroup) (THIS_ const DPNID idGroup, const DPNID idClient, PVOID const pvAsyncContext, DPNHANDLE *const phAsyncHandle, const DWORD dwFlags) PURE; - STDMETHOD(SetGroupInfo) (THIS_ const DPNID dpnid,DPN_GROUP_INFO *const pdpnGroupInfo,PVOID const pvAsyncContext,DPNHANDLE *const phAsyncHandle, const DWORD dwFlags) PURE; - STDMETHOD(GetGroupInfo) (THIS_ const DPNID dpnid,DPN_GROUP_INFO *const pdpnGroupInfo,DWORD *const pdwSize,const DWORD dwFlags) PURE; - STDMETHOD(EnumPlayersAndGroups) (THIS_ DPNID *const prgdpnid, DWORD *const pcdpnid, const DWORD dwFlags) PURE; - STDMETHOD(EnumGroupMembers) (THIS_ const DPNID dpnid, DPNID *const prgdpnid, DWORD *const pcdpnid, const DWORD dwFlags) PURE; - STDMETHOD(Close) (THIS_ const DWORD dwFlags) PURE; - STDMETHOD(DestroyClient) (THIS_ const DPNID dpnidClient, const void *const pvDestroyData, const DWORD dwDestroyDataSize, const DWORD dwFlags) PURE; - STDMETHOD(ReturnBuffer) (THIS_ const DPNHANDLE hBufferHandle,const DWORD dwFlags) PURE; - STDMETHOD(GetPlayerContext) (THIS_ const DPNID dpnid,PVOID *const ppvPlayerContext,const DWORD dwFlags) PURE; - STDMETHOD(GetGroupContext) (THIS_ const DPNID dpnid,PVOID *const ppvGroupContext,const DWORD dwFlags) PURE; - STDMETHOD(GetCaps) (THIS_ DPN_CAPS *const pdpCaps,const DWORD dwFlags) PURE; - STDMETHOD(SetCaps) (THIS_ const DPN_CAPS *const pdpCaps, const DWORD dwFlags) PURE; - STDMETHOD(SetSPCaps) (THIS_ const GUID * const pguidSP, const DPN_SP_CAPS *const pdpspCaps, const DWORD dwFlags ) PURE; - STDMETHOD(GetSPCaps) (THIS_ const GUID * const pguidSP, DPN_SP_CAPS *const pdpspCaps,const DWORD dwFlags) PURE; - STDMETHOD(GetConnectionInfo) (THIS_ const DPNID dpnid, DPN_CONNECTION_INFO *const pdpConnectionInfo,const DWORD dwFlags) PURE; - STDMETHOD(RegisterLobby) (THIS_ const DPNHANDLE dpnHandle, struct IDirectPlay8LobbiedApplication *const pIDP8LobbiedApplication,const DWORD dwFlags) PURE; -}; - -// -// COM definition for DirectPlay8 Peer interface -// -#undef INTERFACE // External COM Implementation -#define INTERFACE IDirectPlay8Peer -DECLARE_INTERFACE_(IDirectPlay8Peer,IUnknown) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface) (THIS_ DP8REFIID riid, LPVOID *ppvObj) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - /*** IDirectPlay8Peer methods ***/ - STDMETHOD(Initialize) (THIS_ PVOID const pvUserContext, const PFNDPNMESSAGEHANDLER pfn, const DWORD dwFlags) PURE; - STDMETHOD(EnumServiceProviders) (THIS_ const GUID *const pguidServiceProvider, const GUID *const pguidApplication, DPN_SERVICE_PROVIDER_INFO *const pSPInfoBuffer, DWORD *const pcbEnumData, DWORD *const pcReturned, const DWORD dwFlags) PURE; - STDMETHOD(CancelAsyncOperation) (THIS_ const DPNHANDLE hAsyncHandle, const DWORD dwFlags) PURE; - STDMETHOD(Connect) (THIS_ const DPN_APPLICATION_DESC *const pdnAppDesc,IDirectPlay8Address *const pHostAddr,IDirectPlay8Address *const pDeviceInfo,const DPN_SECURITY_DESC *const pdnSecurity,const DPN_SECURITY_CREDENTIALS *const pdnCredentials,const void *const pvUserConnectData,const DWORD dwUserConnectDataSize,void *const pvPlayerContext,void *const pvAsyncContext,DPNHANDLE *const phAsyncHandle,const DWORD dwFlags) PURE; - STDMETHOD(SendTo) (THIS_ const DPNID dpnid,const DPN_BUFFER_DESC *const prgBufferDesc,const DWORD cBufferDesc,const DWORD dwTimeOut,void *const pvAsyncContext,DPNHANDLE *const phAsyncHandle,const DWORD dwFlags) PURE; - STDMETHOD(GetSendQueueInfo) (THIS_ const DPNID dpnid, DWORD *const pdwNumMsgs, DWORD *const pdwNumBytes, const DWORD dwFlags) PURE; - STDMETHOD(Host) (THIS_ const DPN_APPLICATION_DESC *const pdnAppDesc,IDirectPlay8Address **const prgpDeviceInfo,const DWORD cDeviceInfo,const DPN_SECURITY_DESC *const pdnSecurity,const DPN_SECURITY_CREDENTIALS *const pdnCredentials,void *const pvPlayerContext,const DWORD dwFlags) PURE; - STDMETHOD(GetApplicationDesc) (THIS_ DPN_APPLICATION_DESC *const pAppDescBuffer, DWORD *const pcbDataSize, const DWORD dwFlags) PURE; - STDMETHOD(SetApplicationDesc) (THIS_ const DPN_APPLICATION_DESC *const pad, const DWORD dwFlags) PURE; - STDMETHOD(CreateGroup) (THIS_ const DPN_GROUP_INFO *const pdpnGroupInfo,void *const pvGroupContext,void *const pvAsyncContext,DPNHANDLE *const phAsyncHandle,const DWORD dwFlags) PURE; - STDMETHOD(DestroyGroup) (THIS_ const DPNID idGroup, PVOID const pvAsyncContext, DPNHANDLE *const phAsyncHandle, const DWORD dwFlags) PURE; - STDMETHOD(AddPlayerToGroup) (THIS_ const DPNID idGroup, const DPNID idClient, PVOID const pvAsyncContext, DPNHANDLE *const phAsyncHandle, const DWORD dwFlags) PURE; - STDMETHOD(RemovePlayerFromGroup) (THIS_ const DPNID idGroup, const DPNID idClient, PVOID const pvAsyncContext, DPNHANDLE *const phAsyncHandle, const DWORD dwFlags) PURE; - STDMETHOD(SetGroupInfo) (THIS_ const DPNID dpnid,DPN_GROUP_INFO *const pdpnGroupInfo,PVOID const pvAsyncContext,DPNHANDLE *const phAsyncHandle, const DWORD dwFlags) PURE; - STDMETHOD(GetGroupInfo) (THIS_ const DPNID dpnid,DPN_GROUP_INFO *const pdpnGroupInfo,DWORD *const pdwSize,const DWORD dwFlags) PURE; - STDMETHOD(EnumPlayersAndGroups) (THIS_ DPNID *const prgdpnid, DWORD *const pcdpnid, const DWORD dwFlags) PURE; - STDMETHOD(EnumGroupMembers) (THIS_ const DPNID dpnid, DPNID *const prgdpnid, DWORD *const pcdpnid, const DWORD dwFlags) PURE; - STDMETHOD(SetPeerInfo) (THIS_ const DPN_PLAYER_INFO *const pdpnPlayerInfo,PVOID const pvAsyncContext,DPNHANDLE *const phAsyncHandle, const DWORD dwFlags) PURE; - STDMETHOD(GetPeerInfo) (THIS_ const DPNID dpnid,DPN_PLAYER_INFO *const pdpnPlayerInfo,DWORD *const pdwSize,const DWORD dwFlags) PURE; - STDMETHOD(GetPeerAddress) (THIS_ const DPNID dpnid,IDirectPlay8Address **const ppAddress,const DWORD dwFlags) PURE; - STDMETHOD(GetLocalHostAddresses) (THIS_ IDirectPlay8Address **const prgpAddress,DWORD *const pcAddress,const DWORD dwFlags) PURE; - STDMETHOD(Close) (THIS_ const DWORD dwFlags) PURE; - STDMETHOD(EnumHosts) (THIS_ PDPN_APPLICATION_DESC const pApplicationDesc,IDirectPlay8Address *const pAddrHost,IDirectPlay8Address *const pDeviceInfo,PVOID const pUserEnumData,const DWORD dwUserEnumDataSize,const DWORD dwEnumCount,const DWORD dwRetryInterval,const DWORD dwTimeOut,PVOID const pvUserContext,DPNHANDLE *const pAsyncHandle,const DWORD dwFlags) PURE; - STDMETHOD(DestroyPeer) (THIS_ const DPNID dpnidClient, const void *const pvDestroyData, const DWORD dwDestroyDataSize, const DWORD dwFlags) PURE; - STDMETHOD(ReturnBuffer) (THIS_ const DPNHANDLE hBufferHandle,const DWORD dwFlags) PURE; - STDMETHOD(GetPlayerContext) (THIS_ const DPNID dpnid,PVOID *const ppvPlayerContext,const DWORD dwFlags) PURE; - STDMETHOD(GetGroupContext) (THIS_ const DPNID dpnid,PVOID *const ppvGroupContext,const DWORD dwFlags) PURE; - STDMETHOD(GetCaps) (THIS_ DPN_CAPS *const pdpCaps,const DWORD dwFlags) PURE; - STDMETHOD(SetCaps) (THIS_ const DPN_CAPS *const pdpCaps, const DWORD dwFlags) PURE; - STDMETHOD(SetSPCaps) (THIS_ const GUID * const pguidSP, const DPN_SP_CAPS *const pdpspCaps, const DWORD dwFlags ) PURE; - STDMETHOD(GetSPCaps) (THIS_ const GUID * const pguidSP, DPN_SP_CAPS *const pdpspCaps,const DWORD dwFlags) PURE; - STDMETHOD(GetConnectionInfo) (THIS_ const DPNID dpnid, DPN_CONNECTION_INFO *const pdpConnectionInfo,const DWORD dwFlags) PURE; - STDMETHOD(RegisterLobby) (THIS_ const DPNHANDLE dpnHandle, struct IDirectPlay8LobbiedApplication *const pIDP8LobbiedApplication,const DWORD dwFlags) PURE; - STDMETHOD(TerminateSession) (THIS_ void *const pvTerminateData,const DWORD dwTerminateDataSize,const DWORD dwFlags) PURE; -}; - - - -// -// COM definition for DirectPlay8 Thread Pool interface -// -#undef INTERFACE // External COM Implementation -#define INTERFACE IDirectPlay8ThreadPool -DECLARE_INTERFACE_(IDirectPlay8ThreadPool,IUnknown) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface) (THIS_ DP8REFIID riid, LPVOID *ppvObj) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - /*** IDirectPlay8ThreadPool methods ***/ - STDMETHOD(Initialize) (THIS_ PVOID const pvUserContext, const PFNDPNMESSAGEHANDLER pfn, const DWORD dwFlags) PURE; - STDMETHOD(Close) (THIS_ const DWORD dwFlags) PURE; - STDMETHOD(GetThreadCount) (THIS_ const DWORD dwProcessorNum, DWORD *const pdwNumThreads, const DWORD dwFlags) PURE; - STDMETHOD(SetThreadCount) (THIS_ const DWORD dwProcessorNum, const DWORD dwNumThreads, const DWORD dwFlags) PURE; - STDMETHOD(DoWork) (THIS_ const DWORD dwAllowedTimeSlice, const DWORD dwFlags) PURE; -}; - - -// -// COM definition for DirectPlay8 NAT Resolver interface -// -#undef INTERFACE // External COM Implementation -#define INTERFACE IDirectPlay8NATResolver -DECLARE_INTERFACE_(IDirectPlay8NATResolver,IUnknown) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface) (THIS_ DP8REFIID riid, LPVOID *ppvObj) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - /*** IDirectPlay8NATResolver methods ***/ - STDMETHOD(Initialize) (THIS_ PVOID const pvUserContext, const PFNDPNMESSAGEHANDLER pfn, const DWORD dwFlags) PURE; - STDMETHOD(Start) (THIS_ IDirectPlay8Address **const ppDevices, const DWORD dwNumDevices, const DWORD dwFlags) PURE; - STDMETHOD(Close) (THIS_ const DWORD dwFlags) PURE; - STDMETHOD(EnumDevices) (THIS_ DPN_SERVICE_PROVIDER_INFO *const pSPInfoBuffer, PDWORD const pdwBufferSize, PDWORD const pdwNumDevices, const DWORD dwFlags) PURE; - STDMETHOD(GetAddresses) (THIS_ IDirectPlay8Address **const ppAddresses, DWORD *const pdwNumAddresses, const DWORD dwFlags) PURE; -}; - - -/**************************************************************************** - * - * IDirectPlay8 application interface macros - * - ****************************************************************************/ - -#if !defined(__cplusplus) || defined(CINTERFACE) - -#define IDirectPlay8Client_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IDirectPlay8Client_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDirectPlay8Client_Release(p) (p)->lpVtbl->Release(p) -#define IDirectPlay8Client_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c) -#define IDirectPlay8Client_EnumServiceProviders(p,a,b,c,d,e,f) (p)->lpVtbl->EnumServiceProviders(p,a,b,c,d,e,f) -#define IDirectPlay8Client_EnumHosts(p,a,b,c,d,e,f,g,h,i,j,k) (p)->lpVtbl->EnumHosts(p,a,b,c,d,e,f,g,h,i,j,k) -#define IDirectPlay8Client_CancelAsyncOperation(p,a,b) (p)->lpVtbl->CancelAsyncOperation(p,a,b) -#define IDirectPlay8Client_Connect(p,a,b,c,d,e,f,g,h,i,j) (p)->lpVtbl->Connect(p,a,b,c,d,e,f,g,h,i,j) -#define IDirectPlay8Client_Send(p,a,b,c,d,e,f) (p)->lpVtbl->Send(p,a,b,c,d,e,f) -#define IDirectPlay8Client_GetSendQueueInfo(p,a,b,c) (p)->lpVtbl->GetSendQueueInfo(p,a,b,c) -#define IDirectPlay8Client_GetApplicationDesc(p,a,b,c) (p)->lpVtbl->GetApplicationDesc(p,a,b,c) -#define IDirectPlay8Client_SetClientInfo(p,a,b,c,d) (p)->lpVtbl->SetClientInfo(p,a,b,c,d) -#define IDirectPlay8Client_GetServerInfo(p,a,b,c) (p)->lpVtbl->GetServerInfo(p,a,b,c) -#define IDirectPlay8Client_GetServerAddress(p,a,b) (p)->lpVtbl->GetServerAddress(p,a,b) -#define IDirectPlay8Client_Close(p,a) (p)->lpVtbl->Close(p,a) -#define IDirectPlay8Client_ReturnBuffer(p,a,b) (p)->lpVtbl->ReturnBuffer(p,a,b) -#define IDirectPlay8Client_GetCaps(p,a,b) (p)->lpVtbl->GetCaps(p,a,b) -#define IDirectPlay8Client_SetCaps(p,a,b) (p)->lpVtbl->SetCaps(p,a,b) -#define IDirectPlay8Client_SetSPCaps(p,a,b,c) (p)->lpVtbl->SetSPCaps(p,a,b,c) -#define IDirectPlay8Client_GetSPCaps(p,a,b,c) (p)->lpVtbl->GetSPCaps(p,a,b,c) -#define IDirectPlay8Client_GetConnectionInfo(p,a,b) (p)->lpVtbl->GetConnectionInfo(p,a,b) -#define IDirectPlay8Client_RegisterLobby(p,a,b,c) (p)->lpVtbl->RegisterLobby(p,a,b,c) - -#define IDirectPlay8Server_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IDirectPlay8Server_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDirectPlay8Server_Release(p) (p)->lpVtbl->Release(p) -#define IDirectPlay8Server_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c) -#define IDirectPlay8Server_EnumServiceProviders(p,a,b,c,d,e,f) (p)->lpVtbl->EnumServiceProviders(p,a,b,c,d,e,f) -#define IDirectPlay8Server_CancelAsyncOperation(p,a,b) (p)->lpVtbl->CancelAsyncOperation(p,a,b) -#define IDirectPlay8Server_GetSendQueueInfo(p,a,b,c,d) (p)->lpVtbl->GetSendQueueInfo(p,a,b,c,d) -#define IDirectPlay8Server_GetApplicationDesc(p,a,b,c) (p)->lpVtbl->GetApplicationDesc(p,a,b,c) -#define IDirectPlay8Server_SetServerInfo(p,a,b,c,d) (p)->lpVtbl->SetServerInfo(p,a,b,c,d) -#define IDirectPlay8Server_GetClientInfo(p,a,b,c,d) (p)->lpVtbl->GetClientInfo(p,a,b,c,d) -#define IDirectPlay8Server_GetClientAddress(p,a,b,c) (p)->lpVtbl->GetClientAddress(p,a,b,c) -#define IDirectPlay8Server_GetLocalHostAddresses(p,a,b,c) (p)->lpVtbl->GetLocalHostAddresses(p,a,b,c) -#define IDirectPlay8Server_SetApplicationDesc(p,a,b) (p)->lpVtbl->SetApplicationDesc(p,a,b) -#define IDirectPlay8Server_Host(p,a,b,c,d,e,f,g) (p)->lpVtbl->Host(p,a,b,c,d,e,f,g) -#define IDirectPlay8Server_SendTo(p,a,b,c,d,e,f,g) (p)->lpVtbl->SendTo(p,a,b,c,d,e,f,g) -#define IDirectPlay8Server_CreateGroup(p,a,b,c,d,e) (p)->lpVtbl->CreateGroup(p,a,b,c,d,e) -#define IDirectPlay8Server_DestroyGroup(p,a,b,c,d) (p)->lpVtbl->DestroyGroup(p,a,b,c,d) -#define IDirectPlay8Server_AddPlayerToGroup(p,a,b,c,d,e) (p)->lpVtbl->AddPlayerToGroup(p,a,b,c,d,e) -#define IDirectPlay8Server_RemovePlayerFromGroup(p,a,b,c,d,e) (p)->lpVtbl->RemovePlayerFromGroup(p,a,b,c,d,e) -#define IDirectPlay8Server_SetGroupInfo(p,a,b,c,d,e) (p)->lpVtbl->SetGroupInfo(p,a,b,c,d,e) -#define IDirectPlay8Server_GetGroupInfo(p,a,b,c,d) (p)->lpVtbl->GetGroupInfo(p,a,b,c,d) -#define IDirectPlay8Server_EnumPlayersAndGroups(p,a,b,c) (p)->lpVtbl->EnumPlayersAndGroups(p,a,b,c) -#define IDirectPlay8Server_EnumGroupMembers(p,a,b,c,d) (p)->lpVtbl->EnumGroupMembers(p,a,b,c,d) -#define IDirectPlay8Server_Close(p,a) (p)->lpVtbl->Close(p,a) -#define IDirectPlay8Server_DestroyClient(p,a,b,c,d) (p)->lpVtbl->DestroyClient(p,a,b,c,d) -#define IDirectPlay8Server_ReturnBuffer(p,a,b) (p)->lpVtbl->ReturnBuffer(p,a,b) -#define IDirectPlay8Server_GetPlayerContext(p,a,b,c) (p)->lpVtbl->GetPlayerContext(p,a,b,c) -#define IDirectPlay8Server_GetGroupContext(p,a,b,c) (p)->lpVtbl->GetGroupContext(p,a,b,c) -#define IDirectPlay8Server_GetCaps(p,a,b) (p)->lpVtbl->GetCaps(p,a,b) -#define IDirectPlay8Server_SetCaps(p,a,b) (p)->lpVtbl->SetCaps(p,a,b) -#define IDirectPlay8Server_SetSPCaps(p,a,b,c) (p)->lpVtbl->SetSPCaps(p,a,b,c) -#define IDirectPlay8Server_GetSPCaps(p,a,b,c) (p)->lpVtbl->GetSPCaps(p,a,b,c) -#define IDirectPlay8Server_GetConnectionInfo(p,a,b,c) (p)->lpVtbl->GetConnectionInfo(p,a,b,c) -#define IDirectPlay8Server_RegisterLobby(p,a,b,c) (p)->lpVtbl->RegisterLobby(p,a,b,c) - -#define IDirectPlay8Peer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IDirectPlay8Peer_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDirectPlay8Peer_Release(p) (p)->lpVtbl->Release(p) -#define IDirectPlay8Peer_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c) -#define IDirectPlay8Peer_EnumServiceProviders(p,a,b,c,d,e,f) (p)->lpVtbl->EnumServiceProviders(p,a,b,c,d,e,f) -#define IDirectPlay8Peer_CancelAsyncOperation(p,a,b) (p)->lpVtbl->CancelAsyncOperation(p,a,b) -#define IDirectPlay8Peer_Connect(p,a,b,c,d,e,f,g,h,i,j,k) (p)->lpVtbl->Connect(p,a,b,c,d,e,f,g,h,i,j,k) -#define IDirectPlay8Peer_SendTo(p,a,b,c,d,e,f,g) (p)->lpVtbl->SendTo(p,a,b,c,d,e,f,g) -#define IDirectPlay8Peer_GetSendQueueInfo(p,a,b,c,d) (p)->lpVtbl->GetSendQueueInfo(p,a,b,c,d) -#define IDirectPlay8Peer_Host(p,a,b,c,d,e,f,g) (p)->lpVtbl->Host(p,a,b,c,d,e,f,g) -#define IDirectPlay8Peer_GetApplicationDesc(p,a,b,c) (p)->lpVtbl->GetApplicationDesc(p,a,b,c) -#define IDirectPlay8Peer_SetApplicationDesc(p,a,b) (p)->lpVtbl->SetApplicationDesc(p,a,b) -#define IDirectPlay8Peer_CreateGroup(p,a,b,c,d,e) (p)->lpVtbl->CreateGroup(p,a,b,c,d,e) -#define IDirectPlay8Peer_DestroyGroup(p,a,b,c,d) (p)->lpVtbl->DestroyGroup(p,a,b,c,d) -#define IDirectPlay8Peer_AddPlayerToGroup(p,a,b,c,d,e) (p)->lpVtbl->AddPlayerToGroup(p,a,b,c,d,e) -#define IDirectPlay8Peer_RemovePlayerFromGroup(p,a,b,c,d,e) (p)->lpVtbl->RemovePlayerFromGroup(p,a,b,c,d,e) -#define IDirectPlay8Peer_SetGroupInfo(p,a,b,c,d,e) (p)->lpVtbl->SetGroupInfo(p,a,b,c,d,e) -#define IDirectPlay8Peer_GetGroupInfo(p,a,b,c,d) (p)->lpVtbl->GetGroupInfo(p,a,b,c,d) -#define IDirectPlay8Peer_EnumPlayersAndGroups(p,a,b,c) (p)->lpVtbl->EnumPlayersAndGroups(p,a,b,c) -#define IDirectPlay8Peer_EnumGroupMembers(p,a,b,c,d) (p)->lpVtbl->EnumGroupMembers(p,a,b,c,d) -#define IDirectPlay8Peer_SetPeerInfo(p,a,b,c,d) (p)->lpVtbl->SetPeerInfo(p,a,b,c,d) -#define IDirectPlay8Peer_GetPeerInfo(p,a,b,c,d) (p)->lpVtbl->GetPeerInfo(p,a,b,c,d) -#define IDirectPlay8Peer_GetPeerAddress(p,a,b,c) (p)->lpVtbl->GetPeerAddress(p,a,b,c) -#define IDirectPlay8Peer_GetLocalHostAddresses(p,a,b,c) (p)->lpVtbl->GetLocalHostAddresses(p,a,b,c) -#define IDirectPlay8Peer_Close(p,a) (p)->lpVtbl->Close(p,a) -#define IDirectPlay8Peer_EnumHosts(p,a,b,c,d,e,f,g,h,i,j,k) (p)->lpVtbl->EnumHosts(p,a,b,c,d,e,f,g,h,i,j,k) -#define IDirectPlay8Peer_DestroyPeer(p,a,b,c,d) (p)->lpVtbl->DestroyPeer(p,a,b,c,d) -#define IDirectPlay8Peer_ReturnBuffer(p,a,b) (p)->lpVtbl->ReturnBuffer(p,a,b) -#define IDirectPlay8Peer_GetPlayerContext(p,a,b,c) (p)->lpVtbl->GetPlayerContext(p,a,b,c) -#define IDirectPlay8Peer_GetGroupContext(p,a,b,c) (p)->lpVtbl->GetGroupContext(p,a,b,c) -#define IDirectPlay8Peer_GetCaps(p,a,b) (p)->lpVtbl->GetCaps(p,a,b) -#define IDirectPlay8Peer_SetCaps(p,a,b) (p)->lpVtbl->SetCaps(p,a,b) -#define IDirectPlay8Peer_SetSPCaps(p,a,b,c) (p)->lpVtbl->SetSPCaps(p,a,b,c) -#define IDirectPlay8Peer_GetSPCaps(p,a,b,c) (p)->lpVtbl->GetSPCaps(p,a,b,c) -#define IDirectPlay8Peer_GetConnectionInfo(p,a,b,c) (p)->lpVtbl->GetConnectionInfo(p,a,b,c) -#define IDirectPlay8Peer_RegisterLobby(p,a,b,c) (p)->lpVtbl->RegisterLobby(p,a,b,c) -#define IDirectPlay8Peer_TerminateSession(p,a,b,c) (p)->lpVtbl->TerminateSession(p,a,b,c) - -#define IDirectPlay8ThreadPool_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IDirectPlay8ThreadPool_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDirectPlay8ThreadPool_Release(p) (p)->lpVtbl->Release(p) -#define IDirectPlay8ThreadPool_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c) -#define IDirectPlay8ThreadPool_Close(p,a) (p)->lpVtbl->Close(p,a) -#define IDirectPlay8ThreadPool_GetThreadCount(p,a,b,c) (p)->lpVtbl->GetThreadCount(p,a,b,c) -#define IDirectPlay8ThreadPool_SetThreadCount(p,a,b,c) (p)->lpVtbl->SetThreadCount(p,a,b,c) -#define IDirectPlay8ThreadPool_DoWork(p,a,b) (p)->lpVtbl->DoWork(p,a,b) - -#define IDirectPlay8NATResolver_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IDirectPlay8NATResolver_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDirectPlay8NATResolver_Release(p) (p)->lpVtbl->Release(p) -#define IDirectPlay8NATResolver_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c) -#define IDirectPlay8NATResolver_Start(p,a,b,c) (p)->lpVtbl->Start(p,a,b,c) -#define IDirectPlay8NATResolver_Close(p,a) (p)->lpVtbl->Close(p,a) -#define IDirectPlay8NATResolver_EnumDevices(p,a,b,c,d) (p)->lpVtbl->EnumDevices(p,a,b,c,d) -#define IDirectPlay8NATResolver_GetAddresses(p,a,b,c) (p)->lpVtbl->GetAddresses(p,a,b,c) - -#else /* C++ */ - -#define IDirectPlay8Client_QueryInterface(p,a,b) (p)->QueryInterface(a,b) -#define IDirectPlay8Client_AddRef(p) (p)->AddRef() -#define IDirectPlay8Client_Release(p) (p)->Release() -#define IDirectPlay8Client_Initialize(p,a,b,c) (p)->Initialize(a,b,c) -#define IDirectPlay8Client_EnumServiceProviders(p,a,b,c,d,e,f) (p)->EnumServiceProviders(a,b,c,d,e,f) -#define IDirectPlay8Client_EnumHosts(p,a,b,c,d,e,f,g,h,i,j,k) (p)->EnumHosts(a,b,c,d,e,f,g,h,i,j,k) -#define IDirectPlay8Client_CancelAsyncOperation(p,a,b) (p)->CancelAsyncOperation(a,b) -#define IDirectPlay8Client_Connect(p,a,b,c,d,e,f,g,h,i,j) (p)->Connect(a,b,c,d,e,f,g,h,i,j) -#define IDirectPlay8Client_Send(p,a,b,c,d,e,f) (p)->Send(a,b,c,d,e,f) -#define IDirectPlay8Client_GetSendQueueInfo(p,a,b,c) (p)->GetSendQueueInfo(a,b,c) -#define IDirectPlay8Client_GetApplicationDesc(p,a,b,c) (p)->GetApplicationDesc(a,b,c) -#define IDirectPlay8Client_SetClientInfo(p,a,b,c,d) (p)->SetClientInfo(a,b,c,d) -#define IDirectPlay8Client_GetServerInfo(p,a,b,c) (p)->GetServerInfo(a,b,c) -#define IDirectPlay8Client_GetServerAddress(p,a,b) (p)->GetServerAddress(a,b) -#define IDirectPlay8Client_Close(p,a) (p)->Close(a) -#define IDirectPlay8Client_ReturnBuffer(p,a,b) (p)->ReturnBuffer(a,b) -#define IDirectPlay8Client_GetCaps(p,a,b) (p)->GetCaps(a,b) -#define IDirectPlay8Client_SetCaps(p,a,b) (p)->SetCaps(a,b) -#define IDirectPlay8Client_SetSPCaps(p,a,b,c) (p)->SetSPCaps(a,b,c) -#define IDirectPlay8Client_GetSPCaps(p,a,b,c) (p)->GetSPCaps(a,b,c) -#define IDirectPlay8Client_GetConnectionInfo(p,a,b) (p)->GetConnectionInfo(a,b) -#define IDirectPlay8Client_RegisterLobby(p,a,b,c) (p)->RegisterLobby(a,b,c) - -#define IDirectPlay8Server_QueryInterface(p,a,b) (p)->QueryInterface(a,b) -#define IDirectPlay8Server_AddRef(p) (p)->AddRef() -#define IDirectPlay8Server_Release(p) (p)->Release() -#define IDirectPlay8Server_Initialize(p,a,b,c) (p)->Initialize(a,b,c) -#define IDirectPlay8Server_EnumServiceProviders(p,a,b,c,d,e,f) (p)->EnumServiceProviders(a,b,c,d,e,f) -#define IDirectPlay8Server_CancelAsyncOperation(p,a,b) (p)->CancelAsyncOperation(a,b) -#define IDirectPlay8Server_GetSendQueueInfo(p,a,b,c,d) (p)->GetSendQueueInfo(a,b,c,d) -#define IDirectPlay8Server_GetApplicationDesc(p,a,b,c) (p)->GetApplicationDesc(a,b,c) -#define IDirectPlay8Server_SetServerInfo(p,a,b,c,d) (p)->SetServerInfo(a,b,c,d) -#define IDirectPlay8Server_GetClientInfo(p,a,b,c,d) (p)->GetClientInfo(a,b,c,d) -#define IDirectPlay8Server_GetClientAddress(p,a,b,c) (p)->GetClientAddress(a,b,c) -#define IDirectPlay8Server_GetLocalHostAddresses(p,a,b,c) (p)->GetLocalHostAddresses(a,b,c) -#define IDirectPlay8Server_SetApplicationDesc(p,a,b) (p)->SetApplicationDesc(a,b) -#define IDirectPlay8Server_Host(p,a,b,c,d,e,f,g) (p)->Host(a,b,c,d,e,f,g) -#define IDirectPlay8Server_SendTo(p,a,b,c,d,e,f,g) (p)->SendTo(a,b,c,d,e,f,g) -#define IDirectPlay8Server_CreateGroup(p,a,b,c,d,e) (p)->CreateGroup(a,b,c,d,e) -#define IDirectPlay8Server_DestroyGroup(p,a,b,c,d) (p)->DestroyGroup(a,b,c,d) -#define IDirectPlay8Server_AddPlayerToGroup(p,a,b,c,d,e) (p)->AddPlayerToGroup(a,b,c,d,e) -#define IDirectPlay8Server_RemovePlayerFromGroup(p,a,b,c,d,e) (p)->RemovePlayerFromGroup(a,b,c,d,e) -#define IDirectPlay8Server_SetGroupInfo(p,a,b,c,d,e) (p)->SetGroupInfo(a,b,c,d,e) -#define IDirectPlay8Server_GetGroupInfo(p,a,b,c,d) (p)->GetGroupInfo(a,b,c,d) -#define IDirectPlay8Server_EnumPlayersAndGroups(p,a,b,c) (p)->EnumPlayersAndGroups(a,b,c) -#define IDirectPlay8Server_EnumGroupMembers(p,a,b,c,d) (p)->EnumGroupMembers(a,b,c,d) -#define IDirectPlay8Server_Close(p,a) (p)->Close(a) -#define IDirectPlay8Server_DestroyClient(p,a,b,c,d) (p)->DestroyClient(a,b,c,d) -#define IDirectPlay8Server_ReturnBuffer(p,a,b) (p)->ReturnBuffer(a,b) -#define IDirectPlay8Server_GetPlayerContext(p,a,b,c) (p)->GetPlayerContext(a,b,c) -#define IDirectPlay8Server_GetGroupContext(p,a,b,c) (p)->GetGroupContext(a,b,c) -#define IDirectPlay8Server_GetCaps(p,a,b) (p)->GetCaps(a,b) -#define IDirectPlay8Server_SetCaps(p,a,b) (p)->SetCaps(a,b) -#define IDirectPlay8Server_SetSPCaps(p,a,b,c) (p)->SetSPCaps(a,b,c) -#define IDirectPlay8Server_GetSPCaps(p,a,b,c) (p)->GetSPCaps(a,b,c) -#define IDirectPlay8Server_GetConnectionInfo(p,a,b,c) (p)->GetConnectionInfo(a,b,c) -#define IDirectPlay8Server_RegisterLobby(p,a,b,c) (p)->RegisterLobby(a,b,c) - -#define IDirectPlay8Peer_QueryInterface(p,a,b) (p)->QueryInterface(a,b) -#define IDirectPlay8Peer_AddRef(p) (p)->AddRef() -#define IDirectPlay8Peer_Release(p) (p)->Release() -#define IDirectPlay8Peer_Initialize(p,a,b,c) (p)->Initialize(a,b,c) -#define IDirectPlay8Peer_EnumServiceProviders(p,a,b,c,d,e,f) (p)->EnumServiceProviders(a,b,c,d,e,f) -#define IDirectPlay8Peer_CancelAsyncOperation(p,a,b) (p)->CancelAsyncOperation(a,b) -#define IDirectPlay8Peer_Connect(p,a,b,c,d,e,f,g,h,i,j,k) (p)->Connect(a,b,c,d,e,f,g,h,i,j,k) -#define IDirectPlay8Peer_SendTo(p,a,b,c,d,e,f,g) (p)->SendTo(a,b,c,d,e,f,g) -#define IDirectPlay8Peer_GetSendQueueInfo(p,a,b,c,d) (p)->GetSendQueueInfo(a,b,c,d) -#define IDirectPlay8Peer_Host(p,a,b,c,d,e,f,g) (p)->Host(a,b,c,d,e,f,g) -#define IDirectPlay8Peer_GetApplicationDesc(p,a,b,c) (p)->GetApplicationDesc(a,b,c) -#define IDirectPlay8Peer_SetApplicationDesc(p,a,b) (p)->SetApplicationDesc(a,b) -#define IDirectPlay8Peer_CreateGroup(p,a,b,c,d,e) (p)->CreateGroup(a,b,c,d,e) -#define IDirectPlay8Peer_DestroyGroup(p,a,b,c,d) (p)->DestroyGroup(a,b,c,d) -#define IDirectPlay8Peer_AddPlayerToGroup(p,a,b,c,d,e) (p)->AddPlayerToGroup(a,b,c,d,e) -#define IDirectPlay8Peer_RemovePlayerFromGroup(p,a,b,c,d,e) (p)->RemovePlayerFromGroup(a,b,c,d,e) -#define IDirectPlay8Peer_SetGroupInfo(p,a,b,c,d,e) (p)->SetGroupInfo(a,b,c,d,e) -#define IDirectPlay8Peer_GetGroupInfo(p,a,b,c,d) (p)->GetGroupInfo(a,b,c,d) -#define IDirectPlay8Peer_EnumPlayersAndGroups(p,a,b,c) (p)->EnumPlayersAndGroups(a,b,c) -#define IDirectPlay8Peer_EnumGroupMembers(p,a,b,c,d) (p)->EnumGroupMembers(a,b,c,d) -#define IDirectPlay8Peer_SetPeerInfo(p,a,b,c,d) (p)->SetPeerInfo(a,b,c,d) -#define IDirectPlay8Peer_GetPeerInfo(p,a,b,c,d) (p)->GetPeerInfo(a,b,c,d) -#define IDirectPlay8Peer_GetPeerAddress(p,a,b,c) (p)->GetPeerAddress(a,b,c) -#define IDirectPlay8Peer_GetLocalHostAddresses(p,a,b,c) (p)->GetLocalHostAddresses(a,b,c) -#define IDirectPlay8Peer_Close(p,a) (p)->Close(a) -#define IDirectPlay8Peer_EnumHosts(p,a,b,c,d,e,f,g,h,i,j,k) (p)->EnumHosts(a,b,c,d,e,f,g,h,i,j,k) -#define IDirectPlay8Peer_DestroyPeer(p,a,b,c,d) (p)->DestroyPeer(a,b,c,d) -#define IDirectPlay8Peer_ReturnBuffer(p,a,b) (p)->ReturnBuffer(a,b) -#define IDirectPlay8Peer_GetPlayerContext(p,a,b,c) (p)->GetPlayerContext(a,b,c) -#define IDirectPlay8Peer_GetGroupContext(p,a,b,c) (p)->GetGroupContext(a,b,c) -#define IDirectPlay8Peer_GetCaps(p,a,b) (p)->GetCaps(a,b) -#define IDirectPlay8Peer_SetCaps(p,a,b) (p)->SetCaps(a,b) -#define IDirectPlay8Peer_SetSPCaps(p,a,b,c) (p)->SetSPCaps(a,b,c) -#define IDirectPlay8Peer_GetSPCaps(p,a,b,c) (p)->GetSPCaps(a,b,c) -#define IDirectPlay8Peer_GetConnectionInfo(p,a,b,c) (p)->GetConnectionInfo(a,b,c) -#define IDirectPlay8Peer_RegisterLobby(p,a,b,c) (p)->RegisterLobby(a,b,c) -#define IDirectPlay8Peer_TerminateSession(p,a,b,c) (p)->TerminateSession(a,b,c) - -#define IDirectPlay8ThreadPool_QueryInterface(p,a,b) (p)->QueryInterface(a,b) -#define IDirectPlay8ThreadPool_AddRef(p) (p)->AddRef() -#define IDirectPlay8ThreadPool_Release(p) (p)->Release() -#define IDirectPlay8ThreadPool_Initialize(p,a,b,c) (p)->Initialize(a,b,c) -#define IDirectPlay8ThreadPool_Close(p,a) (p)->Close(a) -#define IDirectPlay8ThreadPool_GetThreadCount(p,a,b,c) (p)->GetThreadCount(a,b,c) -#define IDirectPlay8ThreadPool_SetThreadCount(p,a,b,c) (p)->SetThreadCount(a,b,c) -#define IDirectPlay8ThreadPool_DoWork(p,a,b) (p)->DoWork(a,b) - -#define IDirectPlay8NATResolver_QueryInterface(p,a,b) (p)->QueryInterface(a,b) -#define IDirectPlay8NATResolver_AddRef(p) (p)->AddRef() -#define IDirectPlay8NATResolver_Release(p) (p)->Release() -#define IDirectPlay8NATResolver_Initialize(p,a,b,c) (p)->Initialize(a,b,c) -#define IDirectPlay8NATResolver_Start(p,a,b,c) (p)->Start(a,b,c) -#define IDirectPlay8NATResolver_Close(p,a) (p)->Close(a) -#define IDirectPlay8NATResolver_EnumDevices(p,a,b,c,d) (p)->EnumDevices(a,b,c,d) -#define IDirectPlay8NATResolver_GetAddresses(p,a,b,c) (p)->GetAddresses(a,b,c) - -#endif - - - -/**************************************************************************** - * - * DIRECTPLAY8 ERRORS - * - * Errors are represented by negative values and cannot be combined. - * - ****************************************************************************/ - -#define _DPN_FACILITY_CODE 0x015 -#define _DPNHRESULT_BASE 0x8000 -#define MAKE_DPNHRESULT( code ) MAKE_HRESULT( 1, _DPN_FACILITY_CODE, ( code + _DPNHRESULT_BASE ) ) - -#define DPN_OK S_OK - -#define DPNSUCCESS_EQUAL MAKE_HRESULT( 0, _DPN_FACILITY_CODE, ( 0x5 + _DPNHRESULT_BASE ) ) -#define DPNSUCCESS_NOPLAYERSINGROUP MAKE_HRESULT( 0, _DPN_FACILITY_CODE, ( 0x8 + _DPNHRESULT_BASE ) ) // added for DirectX 9 -#define DPNSUCCESS_NOTEQUAL MAKE_HRESULT( 0, _DPN_FACILITY_CODE, (0x0A + _DPNHRESULT_BASE ) ) -#define DPNSUCCESS_PENDING MAKE_HRESULT( 0, _DPN_FACILITY_CODE, (0x0e + _DPNHRESULT_BASE ) ) - -#define DPNERR_ABORTED MAKE_DPNHRESULT( 0x30 ) -#define DPNERR_ADDRESSING MAKE_DPNHRESULT( 0x40 ) -#define DPNERR_ALREADYCLOSING MAKE_DPNHRESULT( 0x50 ) -#define DPNERR_ALREADYCONNECTED MAKE_DPNHRESULT( 0x60 ) -#define DPNERR_ALREADYDISCONNECTING MAKE_DPNHRESULT( 0x70 ) -#define DPNERR_ALREADYINITIALIZED MAKE_DPNHRESULT( 0x80 ) -#define DPNERR_ALREADYREGISTERED MAKE_DPNHRESULT( 0x90 ) -#define DPNERR_BUFFERTOOSMALL MAKE_DPNHRESULT( 0x100 ) -#define DPNERR_CANNOTCANCEL MAKE_DPNHRESULT( 0x110 ) -#define DPNERR_CANTCREATEGROUP MAKE_DPNHRESULT( 0x120 ) -#define DPNERR_CANTCREATEPLAYER MAKE_DPNHRESULT( 0x130 ) -#define DPNERR_CANTLAUNCHAPPLICATION MAKE_DPNHRESULT( 0x140 ) -#define DPNERR_CONNECTING MAKE_DPNHRESULT( 0x150 ) -#define DPNERR_CONNECTIONLOST MAKE_DPNHRESULT( 0x160 ) -#define DPNERR_CONVERSION MAKE_DPNHRESULT( 0x170 ) -#define DPNERR_DATATOOLARGE MAKE_DPNHRESULT( 0x175 ) -#define DPNERR_DOESNOTEXIST MAKE_DPNHRESULT( 0x180 ) -#define DPNERR_DPNSVRNOTAVAILABLE MAKE_DPNHRESULT( 0x185 ) -#define DPNERR_DUPLICATECOMMAND MAKE_DPNHRESULT( 0x190 ) -#define DPNERR_ENDPOINTNOTRECEIVING MAKE_DPNHRESULT( 0x200 ) -#define DPNERR_ENUMQUERYTOOLARGE MAKE_DPNHRESULT( 0x210 ) -#define DPNERR_ENUMRESPONSETOOLARGE MAKE_DPNHRESULT( 0x220 ) -#define DPNERR_EXCEPTION MAKE_DPNHRESULT( 0x230 ) -#define DPNERR_GENERIC E_FAIL -#define DPNERR_GROUPNOTEMPTY MAKE_DPNHRESULT( 0x240 ) -#define DPNERR_HOSTING MAKE_DPNHRESULT( 0x250 ) -#define DPNERR_HOSTREJECTEDCONNECTION MAKE_DPNHRESULT( 0x260 ) -#define DPNERR_HOSTTERMINATEDSESSION MAKE_DPNHRESULT( 0x270 ) -#define DPNERR_INCOMPLETEADDRESS MAKE_DPNHRESULT( 0x280 ) -#define DPNERR_INVALIDADDRESSFORMAT MAKE_DPNHRESULT( 0x290 ) -#define DPNERR_INVALIDAPPLICATION MAKE_DPNHRESULT( 0x300 ) -#define DPNERR_INVALIDCOMMAND MAKE_DPNHRESULT( 0x310 ) -#define DPNERR_INVALIDDEVICEADDRESS MAKE_DPNHRESULT( 0x320 ) -#define DPNERR_INVALIDENDPOINT MAKE_DPNHRESULT( 0x330 ) -#define DPNERR_INVALIDFLAGS MAKE_DPNHRESULT( 0x340 ) -#define DPNERR_INVALIDGROUP MAKE_DPNHRESULT( 0x350 ) -#define DPNERR_INVALIDHANDLE MAKE_DPNHRESULT( 0x360 ) -#define DPNERR_INVALIDHOSTADDRESS MAKE_DPNHRESULT( 0x370 ) -#define DPNERR_INVALIDINSTANCE MAKE_DPNHRESULT( 0x380 ) -#define DPNERR_INVALIDINTERFACE MAKE_DPNHRESULT( 0x390 ) -#define DPNERR_INVALIDOBJECT MAKE_DPNHRESULT( 0x400 ) -#define DPNERR_INVALIDPARAM E_INVALIDARG -#define DPNERR_INVALIDPASSWORD MAKE_DPNHRESULT( 0x410 ) -#define DPNERR_INVALIDPLAYER MAKE_DPNHRESULT( 0x420 ) -#define DPNERR_INVALIDPOINTER E_POINTER -#define DPNERR_INVALIDPRIORITY MAKE_DPNHRESULT( 0x430 ) -#define DPNERR_INVALIDSTRING MAKE_DPNHRESULT( 0x440 ) -#define DPNERR_INVALIDURL MAKE_DPNHRESULT( 0x450 ) -#define DPNERR_INVALIDVERSION MAKE_DPNHRESULT( 0x460 ) -#define DPNERR_NOCAPS MAKE_DPNHRESULT( 0x470 ) -#define DPNERR_NOCONNECTION MAKE_DPNHRESULT( 0x480 ) -#define DPNERR_NOHOSTPLAYER MAKE_DPNHRESULT( 0x490 ) -#define DPNERR_NOINTERFACE E_NOINTERFACE -#define DPNERR_NOMOREADDRESSCOMPONENTS MAKE_DPNHRESULT( 0x500 ) -#define DPNERR_NORESPONSE MAKE_DPNHRESULT( 0x510 ) -#define DPNERR_NOTALLOWED MAKE_DPNHRESULT( 0x520 ) -#define DPNERR_NOTHOST MAKE_DPNHRESULT( 0x530 ) -#define DPNERR_NOTREADY MAKE_DPNHRESULT( 0x540 ) -#define DPNERR_NOTREGISTERED MAKE_DPNHRESULT( 0x550 ) -#define DPNERR_OUTOFMEMORY E_OUTOFMEMORY -#define DPNERR_PENDING DPNSUCCESS_PENDING -#define DPNERR_PLAYERALREADYINGROUP MAKE_DPNHRESULT( 0x560 ) -#define DPNERR_PLAYERLOST MAKE_DPNHRESULT( 0x570 ) -#define DPNERR_PLAYERNOTINGROUP MAKE_DPNHRESULT( 0x580 ) -#define DPNERR_PLAYERNOTREACHABLE MAKE_DPNHRESULT( 0x590 ) -#define DPNERR_SENDTOOLARGE MAKE_DPNHRESULT( 0x600 ) -#define DPNERR_SESSIONFULL MAKE_DPNHRESULT( 0x610 ) -#define DPNERR_TABLEFULL MAKE_DPNHRESULT( 0x620 ) -#define DPNERR_TIMEDOUT MAKE_DPNHRESULT( 0x630 ) -#define DPNERR_UNINITIALIZED MAKE_DPNHRESULT( 0x640 ) -#define DPNERR_UNSUPPORTED E_NOTIMPL -#define DPNERR_USERCANCEL MAKE_DPNHRESULT( 0x650 ) - -#ifdef __cplusplus -} -#endif - -#endif - +/*========================================================================== + * + * Copyright (C) 1998-2002 Microsoft Corporation. All Rights Reserved. + * + * File: DPlay8.h + * Content: DirectPlay8 include file + * + ***************************************************************************/ + +#ifndef __DIRECTPLAY8_H__ +#define __DIRECTPLAY8_H__ + +#include // for DECLARE_INTERFACE_ and HRESULT + +#include "dpaddr.h" + + +#ifdef __cplusplus +extern "C" { +#endif + + + +/**************************************************************************** + * + * DirectPlay8 CLSIDs + * + ****************************************************************************/ + +// {743F1DC6-5ABA-429f-8BDF-C54D03253DC2} +DEFINE_GUID(CLSID_DirectPlay8Client, +0x743f1dc6, 0x5aba, 0x429f, 0x8b, 0xdf, 0xc5, 0x4d, 0x3, 0x25, 0x3d, 0xc2); + +// {DA825E1B-6830-43d7-835D-0B5AD82956A2} +DEFINE_GUID(CLSID_DirectPlay8Server, +0xda825e1b, 0x6830, 0x43d7, 0x83, 0x5d, 0xb, 0x5a, 0xd8, 0x29, 0x56, 0xa2); + +// {286F484D-375E-4458-A272-B138E2F80A6A} +DEFINE_GUID(CLSID_DirectPlay8Peer, +0x286f484d, 0x375e, 0x4458, 0xa2, 0x72, 0xb1, 0x38, 0xe2, 0xf8, 0xa, 0x6a); + + +// CLSIDs added for DirectX 9 + +// {FC47060E-6153-4b34-B975-8E4121EB7F3C} +DEFINE_GUID(CLSID_DirectPlay8ThreadPool, +0xfc47060e, 0x6153, 0x4b34, 0xb9, 0x75, 0x8e, 0x41, 0x21, 0xeb, 0x7f, 0x3c); + +// {E4C1D9A2-CBF7-48bd-9A69-34A55E0D8941} +DEFINE_GUID(CLSID_DirectPlay8NATResolver, +0xe4c1d9a2, 0xcbf7, 0x48bd, 0x9a, 0x69, 0x34, 0xa5, 0x5e, 0xd, 0x89, 0x41); + +/**************************************************************************** + * + * DirectPlay8 Interface IIDs + * + ****************************************************************************/ + +typedef REFIID DP8REFIID; + + +// {5102DACD-241B-11d3-AEA7-006097B01411} +DEFINE_GUID(IID_IDirectPlay8Client, +0x5102dacd, 0x241b, 0x11d3, 0xae, 0xa7, 0x0, 0x60, 0x97, 0xb0, 0x14, 0x11); + +// {5102DACE-241B-11d3-AEA7-006097B01411} +DEFINE_GUID(IID_IDirectPlay8Server, +0x5102dace, 0x241b, 0x11d3, 0xae, 0xa7, 0x0, 0x60, 0x97, 0xb0, 0x14, 0x11); + +// {5102DACF-241B-11d3-AEA7-006097B01411} +DEFINE_GUID(IID_IDirectPlay8Peer, +0x5102dacf, 0x241b, 0x11d3, 0xae, 0xa7, 0x0, 0x60, 0x97, 0xb0, 0x14, 0x11); + + +// IIDs added for DirectX 9 + +// {0D22EE73-4A46-4a0d-89B2-045B4D666425} +DEFINE_GUID(IID_IDirectPlay8ThreadPool, +0xd22ee73, 0x4a46, 0x4a0d, 0x89, 0xb2, 0x4, 0x5b, 0x4d, 0x66, 0x64, 0x25); + +// {A9E213F2-9A60-486f-BF3B-53408B6D1CBB} +DEFINE_GUID(IID_IDirectPlay8NATResolver, +0xa9e213f2, 0x9a60, 0x486f, 0xbf, 0x3b, 0x53, 0x40, 0x8b, 0x6d, 0x1c, 0xbb); + +/**************************************************************************** + * + * DirectPlay8 Service Provider GUIDs + * + ****************************************************************************/ + + +// {53934290-628D-11D2-AE0F-006097B01411} +DEFINE_GUID(CLSID_DP8SP_IPX, +0x53934290, 0x628d, 0x11d2, 0xae, 0xf, 0x0, 0x60, 0x97, 0xb0, 0x14, 0x11); + + +// {6D4A3650-628D-11D2-AE0F-006097B01411} +DEFINE_GUID(CLSID_DP8SP_MODEM, +0x6d4a3650, 0x628d, 0x11d2, 0xae, 0xf, 0x0, 0x60, 0x97, 0xb0, 0x14, 0x11); + + +// {743B5D60-628D-11D2-AE0F-006097B01411} +DEFINE_GUID(CLSID_DP8SP_SERIAL, +0x743b5d60, 0x628d, 0x11d2, 0xae, 0xf, 0x0, 0x60, 0x97, 0xb0, 0x14, 0x11); + + +// {EBFE7BA0-628D-11D2-AE0F-006097B01411} +DEFINE_GUID(CLSID_DP8SP_TCPIP, +0xebfe7ba0, 0x628d, 0x11d2, 0xae, 0xf, 0x0, 0x60, 0x97, 0xb0, 0x14, 0x11); + + +// Service providers added for DirectX 9 + + +// {995513AF-3027-4b9a-956E-C772B3F78006} +DEFINE_GUID(CLSID_DP8SP_BLUETOOTH, +0x995513af, 0x3027, 0x4b9a, 0x95, 0x6e, 0xc7, 0x72, 0xb3, 0xf7, 0x80, 0x6); + + +/**************************************************************************** + * + * DirectPlay8 Interface Pointer definitions + * + ****************************************************************************/ + +typedef struct IDirectPlay8Client *PDIRECTPLAY8CLIENT; + +typedef struct IDirectPlay8Server *PDIRECTPLAY8SERVER; + +typedef struct IDirectPlay8Peer *PDIRECTPLAY8PEER; + + +// Interface pointers added for DirectX 9 + +typedef struct IDirectPlay8ThreadPool *PDIRECTPLAY8THREADPOOL; + +typedef struct IDirectPlay8NATResolver *PDIRECTPLAY8NATRESOLVER; + +/**************************************************************************** + * + * DirectPlay8 Forward Declarations For External Types + * + ****************************************************************************/ + +typedef struct IDirectPlay8LobbiedApplication *PDNLOBBIEDAPPLICATION; +typedef struct IDirectPlay8Address IDirectPlay8Address; + +/**************************************************************************** + * + * DirectPlay8 Callback Functions + * + ****************************************************************************/ + +// +// Callback Function Type Definition +// +typedef HRESULT (WINAPI *PFNDPNMESSAGEHANDLER)(PVOID,DWORD,PVOID); + +/**************************************************************************** + * + * DirectPlay8 Datatypes (Non-Structure / Non-Message) + * + ****************************************************************************/ + +// +// Player IDs. Used to uniquely identify a player in a session +// +typedef DWORD DPNID, *PDPNID; + +// +// Used as identifiers for operations +// +typedef DWORD DPNHANDLE, *PDPNHANDLE; + + + + +/**************************************************************************** + * + * DirectPlay8 Message Identifiers + * + ****************************************************************************/ + +#define DPN_MSGID_OFFSET 0xFFFF0000 +#define DPN_MSGID_ADD_PLAYER_TO_GROUP ( DPN_MSGID_OFFSET | 0x0001 ) +#define DPN_MSGID_APPLICATION_DESC ( DPN_MSGID_OFFSET | 0x0002 ) +#define DPN_MSGID_ASYNC_OP_COMPLETE ( DPN_MSGID_OFFSET | 0x0003 ) +#define DPN_MSGID_CLIENT_INFO ( DPN_MSGID_OFFSET | 0x0004 ) +#define DPN_MSGID_CONNECT_COMPLETE ( DPN_MSGID_OFFSET | 0x0005 ) +#define DPN_MSGID_CREATE_GROUP ( DPN_MSGID_OFFSET | 0x0006 ) +#define DPN_MSGID_CREATE_PLAYER ( DPN_MSGID_OFFSET | 0x0007 ) +#define DPN_MSGID_DESTROY_GROUP ( DPN_MSGID_OFFSET | 0x0008 ) +#define DPN_MSGID_DESTROY_PLAYER ( DPN_MSGID_OFFSET | 0x0009 ) +#define DPN_MSGID_ENUM_HOSTS_QUERY ( DPN_MSGID_OFFSET | 0x000a ) +#define DPN_MSGID_ENUM_HOSTS_RESPONSE ( DPN_MSGID_OFFSET | 0x000b ) +#define DPN_MSGID_GROUP_INFO ( DPN_MSGID_OFFSET | 0x000c ) +#define DPN_MSGID_HOST_MIGRATE ( DPN_MSGID_OFFSET | 0x000d ) +#define DPN_MSGID_INDICATE_CONNECT ( DPN_MSGID_OFFSET | 0x000e ) +#define DPN_MSGID_INDICATED_CONNECT_ABORTED ( DPN_MSGID_OFFSET | 0x000f ) +#define DPN_MSGID_PEER_INFO ( DPN_MSGID_OFFSET | 0x0010 ) +#define DPN_MSGID_RECEIVE ( DPN_MSGID_OFFSET | 0x0011 ) +#define DPN_MSGID_REMOVE_PLAYER_FROM_GROUP ( DPN_MSGID_OFFSET | 0x0012 ) +#define DPN_MSGID_RETURN_BUFFER ( DPN_MSGID_OFFSET | 0x0013 ) +#define DPN_MSGID_SEND_COMPLETE ( DPN_MSGID_OFFSET | 0x0014 ) +#define DPN_MSGID_SERVER_INFO ( DPN_MSGID_OFFSET | 0x0015 ) +#define DPN_MSGID_TERMINATE_SESSION ( DPN_MSGID_OFFSET | 0x0016 ) + +// Messages added for DirectX 9 +#define DPN_MSGID_CREATE_THREAD ( DPN_MSGID_OFFSET | 0x0017 ) +#define DPN_MSGID_DESTROY_THREAD ( DPN_MSGID_OFFSET | 0x0018 ) +#define DPN_MSGID_NAT_RESOLVER_QUERY ( DPN_MSGID_OFFSET | 0x0101 ) + +/**************************************************************************** + * + * DirectPlay8 Constants + * + ****************************************************************************/ + +#define DPNID_ALL_PLAYERS_GROUP 0 + +// +// DESTROY_GROUP reasons +// +#define DPNDESTROYGROUPREASON_NORMAL 0x0001 +#define DPNDESTROYGROUPREASON_AUTODESTRUCTED 0x0002 +#define DPNDESTROYGROUPREASON_SESSIONTERMINATED 0x0003 + +// +// DESTROY_PLAYER reasons +// +#define DPNDESTROYPLAYERREASON_NORMAL 0x0001 +#define DPNDESTROYPLAYERREASON_CONNECTIONLOST 0x0002 +#define DPNDESTROYPLAYERREASON_SESSIONTERMINATED 0x0003 +#define DPNDESTROYPLAYERREASON_HOSTDESTROYEDPLAYER 0x0004 + +#define DPN_MAX_APPDESC_RESERVEDDATA_SIZE 64 + + + +/**************************************************************************** + * + * DirectPlay8 Flags + * + ****************************************************************************/ + +// +// Asynchronous operation flags (for Async Ops) +// +#define DPNOP_SYNC 0x80000000 + +// +// Add player to group flags (for AddPlayerToGroup) +// +#define DPNADDPLAYERTOGROUP_SYNC DPNOP_SYNC + +// +// Cancel flags +// +#define DPNCANCEL_CONNECT 0x00000001 +#define DPNCANCEL_ENUM 0x00000002 +#define DPNCANCEL_SEND 0x00000004 +#define DPNCANCEL_ALL_OPERATIONS 0x00008000 +// Flags added for DirectX 9 +#define DPNCANCEL_PLAYER_SENDS 0x80000000 +#define DPNCANCEL_PLAYER_SENDS_PRIORITY_HIGH (DPNCANCEL_PLAYER_SENDS | 0x00010000) +#define DPNCANCEL_PLAYER_SENDS_PRIORITY_NORMAL (DPNCANCEL_PLAYER_SENDS | 0x00020000) +#define DPNCANCEL_PLAYER_SENDS_PRIORITY_LOW (DPNCANCEL_PLAYER_SENDS | 0x00040000) + +// +// Close flags (for Close, added for DirectX 9) +// +#define DPNCLOSE_IMMEDIATE 0x00000001 + +// +// Connect flags (for Connect) +// +#define DPNCONNECT_SYNC DPNOP_SYNC +#define DPNCONNECT_OKTOQUERYFORADDRESSING 0x0001 + +// +// Create group flags (for CreateGroup) +// +#define DPNCREATEGROUP_SYNC DPNOP_SYNC + +// +// Destroy group flags (for DestroyGroup) +// +#define DPNDESTROYGROUP_SYNC DPNOP_SYNC + +// +// Enumerate clients and groups flags (for EnumPlayersAndGroups) +// +#define DPNENUM_PLAYERS 0x0001 +#define DPNENUM_GROUPS 0x0010 + +// +// Enum hosts flags (for EnumHosts) +// +#define DPNENUMHOSTS_SYNC DPNOP_SYNC +#define DPNENUMHOSTS_OKTOQUERYFORADDRESSING 0x0001 +#define DPNENUMHOSTS_NOBROADCASTFALLBACK 0x0002 + +// +// Enum service provider flags (for EnumSP) +// +#define DPNENUMSERVICEPROVIDERS_ALL 0x0001 + +// +// GetLocalHostAddresses flags (added for DirectX 9) +// +#define DPNGETLOCALHOSTADDRESSES_COMBINED 0x0001 + +// +// Get send queue info flags (for GetSendQueueInfo) +// +#define DPNGETSENDQUEUEINFO_PRIORITY_NORMAL 0x0001 +#define DPNGETSENDQUEUEINFO_PRIORITY_HIGH 0x0002 +#define DPNGETSENDQUEUEINFO_PRIORITY_LOW 0x0004 + +// +// Group information flags (for Group Info) +// +#define DPNGROUP_AUTODESTRUCT 0x0001 + +// +// Host flags (for Host) +// +#define DPNHOST_OKTOQUERYFORADDRESSING 0x0001 + +// +// Set info +// +#define DPNINFO_NAME 0x0001 +#define DPNINFO_DATA 0x0002 + +// +// Initialize flags (for Initialize) +// +#define DPNINITIALIZE_DISABLEPARAMVAL 0x0001 +// Flags added for DirectX 9 +#define DPNINITIALIZE_HINT_LANSESSION 0x0002 +#define DPNINITIALIZE_DISABLELINKTUNING 0x0004 + + +// +// Register Lobby flags +// +#define DPNLOBBY_REGISTER 0x0001 +#define DPNLOBBY_UNREGISTER 0x0002 + +// +// Player information flags (for Player Info / Player Messages) +// +#define DPNPLAYER_LOCAL 0x0002 +#define DPNPLAYER_HOST 0x0004 + +// +// Receive indication flags (added for DirectX 9) +// +#define DPNRECEIVE_GUARANTEED 0x0001 +#define DPNRECEIVE_COALESCED 0x0002 + +// +// Remove player from group flags (for RemovePlayerFromGroup) +// +#define DPNREMOVEPLAYERFROMGROUP_SYNC DPNOP_SYNC + +// +// Send flags (for Send/SendTo) +// +#define DPNSEND_SYNC DPNOP_SYNC +#define DPNSEND_NOCOPY 0x0001 +#define DPNSEND_NOCOMPLETE 0x0002 +#define DPNSEND_COMPLETEONPROCESS 0x0004 +#define DPNSEND_GUARANTEED 0x0008 +#define DPNSEND_NONSEQUENTIAL 0x0010 +#define DPNSEND_NOLOOPBACK 0x0020 +#define DPNSEND_PRIORITY_LOW 0x0040 +#define DPNSEND_PRIORITY_HIGH 0x0080 +// Flag added for DirectX 9 +#define DPNSEND_COALESCE 0x0100 + +// +// Send complete indication flags (added for DirectX 9) +// +#define DPNSENDCOMPLETE_GUARANTEED 0x0001 +#define DPNSENDCOMPLETE_COALESCED 0x0002 + +// +// Session Flags (for DPN_APPLICATION_DESC) +// +#define DPNSESSION_CLIENT_SERVER 0x0001 +#define DPNSESSION_MIGRATE_HOST 0x0004 +#define DPNSESSION_NODPNSVR 0x0040 +#define DPNSESSION_REQUIREPASSWORD 0x0080 +// Flag added for DirectX 9 +#define DPNSESSION_NOENUMS 0x0100 +#define DPNSESSION_FAST_SIGNED 0x0200 +#define DPNSESSION_FULL_SIGNED 0x0400 + +// +// Set client info flags (for SetClientInfo) +// +#define DPNSETCLIENTINFO_SYNC DPNOP_SYNC + +// +// Set group info flags (for SetGroupInfo) +// +#define DPNSETGROUPINFO_SYNC DPNOP_SYNC + +// +// Set peer info flags (for SetPeerInfo) +// +#define DPNSETPEERINFO_SYNC DPNOP_SYNC + +// +// Set server info flags (for SetServerInfo) +// +#define DPNSETSERVERINFO_SYNC DPNOP_SYNC + +// +// SP capabilities flags +// +#define DPNSPCAPS_SUPPORTSDPNSVR 0x0001 +#define DPNSPCAPS_SUPPORTSDPNSRV DPNSPCAPS_SUPPORTSDPNSVR +#define DPNSPCAPS_SUPPORTSBROADCAST 0x0002 +#define DPNSPCAPS_SUPPORTSALLADAPTERS 0x0004 +// Flags added for DirectX 9 +#define DPNSPCAPS_SUPPORTSTHREADPOOL 0x0008 +#define DPNSPCAPS_NETWORKSIMULATOR 0x0010 + +// +// SP information flags (added for DirectX 9) +// +#define DPNSPINFO_NETWORKSIMULATORDEVICE 0x0001 + +/**************************************************************************** + * + * DirectPlay8 Structures (Non-Message) + * + ****************************************************************************/ + +// +// Application description +// +typedef struct _DPN_APPLICATION_DESC +{ + DWORD dwSize; // Size of this structure + DWORD dwFlags; // Flags (DPNSESSION_...) + GUID guidInstance; // Instance GUID + GUID guidApplication; // Application GUID + DWORD dwMaxPlayers; // Maximum # of players allowed (0=no limit) + DWORD dwCurrentPlayers; // Current # of players allowed + WCHAR *pwszSessionName; // Name of the session + WCHAR *pwszPassword; // Password for the session + PVOID pvReservedData; + DWORD dwReservedDataSize; + PVOID pvApplicationReservedData; + DWORD dwApplicationReservedDataSize; +} DPN_APPLICATION_DESC, *PDPN_APPLICATION_DESC; + +// +// Generic Buffer Description +// +typedef struct _BUFFERDESC +{ + DWORD dwBufferSize; + BYTE * pBufferData; +} BUFFERDESC, DPN_BUFFER_DESC, *PDPN_BUFFER_DESC; + +typedef BUFFERDESC FAR * PBUFFERDESC; + +// +// DirectPlay8 capabilities +// +typedef struct _DPN_CAPS +{ + DWORD dwSize; // Size of this structure + DWORD dwFlags; // Flags + DWORD dwConnectTimeout; // ms before a connect request times out + DWORD dwConnectRetries; // # of times to attempt the connection + DWORD dwTimeoutUntilKeepAlive; // ms of inactivity before a keep alive is sent +} DPN_CAPS, *PDPN_CAPS; + +// +// Extended capabilities structures (added for DirectX 9) +// +typedef struct _DPN_CAPS_EX +{ + DWORD dwSize; // Size of this structure + DWORD dwFlags; // Flags + DWORD dwConnectTimeout; // ms before a connect request times out + DWORD dwConnectRetries; // # of times to attempt the connection + DWORD dwTimeoutUntilKeepAlive; // ms of inactivity before a keep alive is sent + DWORD dwMaxRecvMsgSize; // maximum size in bytes of message that can be received + DWORD dwNumSendRetries; // maximum number of send retries before link is considered dead + DWORD dwMaxSendRetryInterval; // maximum period in msec between send retries + DWORD dwDropThresholdRate; // percentage of dropped packets before throttling + DWORD dwThrottleRate; // percentage amount to reduce send window when throttling + DWORD dwNumHardDisconnectSends; // number of hard disconnect frames to send when close immediate flag is specified + DWORD dwMaxHardDisconnectPeriod; // maximum period between hard disconnect sends +} DPN_CAPS_EX, *PDPN_CAPS_EX; + +// +// Connection Statistics information +// +typedef struct _DPN_CONNECTION_INFO +{ + DWORD dwSize; + DWORD dwRoundTripLatencyMS; + DWORD dwThroughputBPS; + DWORD dwPeakThroughputBPS; + + DWORD dwBytesSentGuaranteed; + DWORD dwPacketsSentGuaranteed; + DWORD dwBytesSentNonGuaranteed; + DWORD dwPacketsSentNonGuaranteed; + + DWORD dwBytesRetried; // Guaranteed only + DWORD dwPacketsRetried; // Guaranteed only + DWORD dwBytesDropped; // Non Guaranteed only + DWORD dwPacketsDropped; // Non Guaranteed only + + DWORD dwMessagesTransmittedHighPriority; + DWORD dwMessagesTimedOutHighPriority; + DWORD dwMessagesTransmittedNormalPriority; + DWORD dwMessagesTimedOutNormalPriority; + DWORD dwMessagesTransmittedLowPriority; + DWORD dwMessagesTimedOutLowPriority; + + DWORD dwBytesReceivedGuaranteed; + DWORD dwPacketsReceivedGuaranteed; + DWORD dwBytesReceivedNonGuaranteed; + DWORD dwPacketsReceivedNonGuaranteed; + DWORD dwMessagesReceived; + +} DPN_CONNECTION_INFO, *PDPN_CONNECTION_INFO; + + +// +// Group information structure +// +typedef struct _DPN_GROUP_INFO +{ + DWORD dwSize; // size of this structure + DWORD dwInfoFlags; // information contained + PWSTR pwszName; // Unicode Name + PVOID pvData; // data block + DWORD dwDataSize; // size in BYTES of data block + DWORD dwGroupFlags; // group flags (DPNGROUP_...) +} DPN_GROUP_INFO, *PDPN_GROUP_INFO; + +// +// Player information structure +// +typedef struct _DPN_PLAYER_INFO +{ + DWORD dwSize; // size of this structure + DWORD dwInfoFlags; // information contained + PWSTR pwszName; // Unicode Name + PVOID pvData; // data block + DWORD dwDataSize; // size in BYTES of data block + DWORD dwPlayerFlags; // player flags (DPNPLAYER_...) +} DPN_PLAYER_INFO, *PDPN_PLAYER_INFO; + +typedef struct _DPN_SECURITY_CREDENTIALS DPN_SECURITY_CREDENTIALS, *PDPN_SECURITY_CREDENTIALS; +typedef struct _DPN_SECURITY_DESC DPN_SECURITY_DESC, *PDPN_SECURITY_DESC; + +// +// Service provider & adapter enumeration structure +// +typedef struct _DPN_SERVICE_PROVIDER_INFO +{ + DWORD dwFlags; + GUID guid; // SP Guid + WCHAR *pwszName; // Friendly Name + PVOID pvReserved; + DWORD dwReserved; +} DPN_SERVICE_PROVIDER_INFO, *PDPN_SERVICE_PROVIDER_INFO; + +// +// Service provider caps structure +// +typedef struct _DPN_SP_CAPS +{ + DWORD dwSize; // Size of this structure + DWORD dwFlags; // Flags (DPNSPCAPS_...) + DWORD dwNumThreads; // # of worker threads to use + DWORD dwDefaultEnumCount; // default # of enum requests + DWORD dwDefaultEnumRetryInterval; // default ms between enum requests + DWORD dwDefaultEnumTimeout; // default enum timeout + DWORD dwMaxEnumPayloadSize; // maximum size in bytes for enum payload data + DWORD dwBuffersPerThread; // number of receive buffers per thread + DWORD dwSystemBufferSize; // amount of buffering to do in addition to posted receive buffers +} DPN_SP_CAPS, *PDPN_SP_CAPS; + + +/**************************************************************************** + * + * IDirectPlay8 message handler call back structures + * + ****************************************************************************/ + +// +// Add player to group structure for message handler +// (DPN_MSGID_ADD_PLAYER_TO_GROUP) +// +typedef struct _DPNMSG_ADD_PLAYER_TO_GROUP +{ + DWORD dwSize; // Size of this structure + DPNID dpnidGroup; // DPNID of group + PVOID pvGroupContext; // Group context value + DPNID dpnidPlayer; // DPNID of added player + PVOID pvPlayerContext; // Player context value +} DPNMSG_ADD_PLAYER_TO_GROUP, *PDPNMSG_ADD_PLAYER_TO_GROUP; + +// +// Async operation completion structure for message handler +// (DPN_MSGID_ASYNC_OP_COMPLETE) +// +typedef struct _DPNMSG_ASYNC_OP_COMPLETE +{ + DWORD dwSize; // Size of this structure + DPNHANDLE hAsyncOp; // DirectPlay8 async operation handle + PVOID pvUserContext; // User context supplied + HRESULT hResultCode; // HRESULT of operation +} DPNMSG_ASYNC_OP_COMPLETE, *PDPNMSG_ASYNC_OP_COMPLETE; + +// +// Client info structure for message handler +// (DPN_MSGID_CLIENT_INFO) +// +typedef struct _DPNMSG_CLIENT_INFO +{ + DWORD dwSize; // Size of this structure + DPNID dpnidClient; // DPNID of client + PVOID pvPlayerContext; // Player context value +} DPNMSG_CLIENT_INFO, *PDPNMSG_CLIENT_INFO; + +// +// Connect complete structure for message handler +// (DPN_MSGID_CONNECT_COMPLETE) +// +typedef struct _DPNMSG_CONNECT_COMPLETE +{ + DWORD dwSize; // Size of this structure + DPNHANDLE hAsyncOp; // DirectPlay8 Async operation handle + PVOID pvUserContext; // User context supplied at Connect + HRESULT hResultCode; // HRESULT of connection attempt + PVOID pvApplicationReplyData; // Connection reply data from Host/Server + DWORD dwApplicationReplyDataSize; // Size (in bytes) of pvApplicationReplyData + + // Fields added for DirectX 9 + DPNID dpnidLocal; // DPNID of local player +} DPNMSG_CONNECT_COMPLETE, *PDPNMSG_CONNECT_COMPLETE; + +// +// Create group structure for message handler +// (DPN_MSGID_CREATE_GROUP) +// +typedef struct _DPNMSG_CREATE_GROUP +{ + DWORD dwSize; // Size of this structure + DPNID dpnidGroup; // DPNID of new group + DPNID dpnidOwner; // Owner of newgroup + PVOID pvGroupContext; // Group context value + + // Fields added for DirectX 9 + PVOID pvOwnerContext; // Owner context value +} DPNMSG_CREATE_GROUP, *PDPNMSG_CREATE_GROUP; + +// +// Create player structure for message handler +// (DPN_MSGID_CREATE_PLAYER) +// +typedef struct _DPNMSG_CREATE_PLAYER +{ + DWORD dwSize; // Size of this structure + DPNID dpnidPlayer; // DPNID of new player + PVOID pvPlayerContext; // Player context value +} DPNMSG_CREATE_PLAYER, *PDPNMSG_CREATE_PLAYER; + +// +// Destroy group structure for message handler +// (DPN_MSGID_DESTROY_GROUP) +// +typedef struct _DPNMSG_DESTROY_GROUP +{ + DWORD dwSize; // Size of this structure + DPNID dpnidGroup; // DPNID of destroyed group + PVOID pvGroupContext; // Group context value + DWORD dwReason; // Information only +} DPNMSG_DESTROY_GROUP, *PDPNMSG_DESTROY_GROUP; + +// +// Destroy player structure for message handler +// (DPN_MSGID_DESTROY_PLAYER) +// +typedef struct _DPNMSG_DESTROY_PLAYER +{ + DWORD dwSize; // Size of this structure + DPNID dpnidPlayer; // DPNID of leaving player + PVOID pvPlayerContext; // Player context value + DWORD dwReason; // Information only +} DPNMSG_DESTROY_PLAYER, *PDPNMSG_DESTROY_PLAYER; + +// +// Enumeration request received structure for message handler +// (DPN_MSGID_ENUM_HOSTS_QUERY) +// +typedef struct _DPNMSG_ENUM_HOSTS_QUERY +{ + DWORD dwSize; // Size of this structure. + IDirectPlay8Address *pAddressSender; // Address of client who sent the request + IDirectPlay8Address *pAddressDevice; // Address of device request was received on + PVOID pvReceivedData; // Request data (set on client) + DWORD dwReceivedDataSize; // Request data size (set on client) + DWORD dwMaxResponseDataSize; // Max allowable size of enum response + PVOID pvResponseData; // Optional query repsonse (user set) + DWORD dwResponseDataSize; // Optional query response size (user set) + PVOID pvResponseContext; // Optional query response context (user set) +} DPNMSG_ENUM_HOSTS_QUERY, *PDPNMSG_ENUM_HOSTS_QUERY; + +// +// Enumeration response received structure for message handler +// (DPN_MSGID_ENUM_HOSTS_RESPONSE) +// +typedef struct _DPNMSG_ENUM_HOSTS_RESPONSE +{ + DWORD dwSize; // Size of this structure + IDirectPlay8Address *pAddressSender; // Address of host who responded + IDirectPlay8Address *pAddressDevice; // Device response was received on + const DPN_APPLICATION_DESC *pApplicationDescription; // Application description for the session + PVOID pvResponseData; // Optional response data (set on host) + DWORD dwResponseDataSize; // Optional response data size (set on host) + PVOID pvUserContext; // Context value supplied for enumeration + DWORD dwRoundTripLatencyMS; // Round trip latency in MS +} DPNMSG_ENUM_HOSTS_RESPONSE, *PDPNMSG_ENUM_HOSTS_RESPONSE; + +// +// Group info structure for message handler +// (DPN_MSGID_GROUP_INFO) +// +typedef struct _DPNMSG_GROUP_INFO +{ + DWORD dwSize; // Size of this structure + DPNID dpnidGroup; // DPNID of group + PVOID pvGroupContext; // Group context value +} DPNMSG_GROUP_INFO, *PDPNMSG_GROUP_INFO; + +// +// Migrate host structure for message handler +// (DPN_MSGID_HOST_MIGRATE) +// +typedef struct _DPNMSG_HOST_MIGRATE +{ + DWORD dwSize; // Size of this structure + DPNID dpnidNewHost; // DPNID of new Host player + PVOID pvPlayerContext; // Player context value +} DPNMSG_HOST_MIGRATE, *PDPNMSG_HOST_MIGRATE; + +// +// Indicate connect structure for message handler +// (DPN_MSGID_INDICATE_CONNECT) +// +typedef struct _DPNMSG_INDICATE_CONNECT +{ + DWORD dwSize; // Size of this structure + PVOID pvUserConnectData; // Connecting player data + DWORD dwUserConnectDataSize; // Size (in bytes) of pvUserConnectData + PVOID pvReplyData; // Connection reply data + DWORD dwReplyDataSize; // Size (in bytes) of pvReplyData + PVOID pvReplyContext; // Buffer context for pvReplyData + PVOID pvPlayerContext; // Player context preset + IDirectPlay8Address *pAddressPlayer; // Address of connecting player + IDirectPlay8Address *pAddressDevice; // Address of device receiving connect attempt +} DPNMSG_INDICATE_CONNECT, *PDPNMSG_INDICATE_CONNECT; + +// +// Indicated connect aborted structure for message handler +// (DPN_MSGID_INDICATED_CONNECT_ABORTED) +// +typedef struct _DPNMSG_INDICATED_CONNECT_ABORTED +{ + DWORD dwSize; // Size of this structure + PVOID pvPlayerContext; // Player context preset from DPNMSG_INDICATE_CONNECT +} DPNMSG_INDICATED_CONNECT_ABORTED, *PDPNMSG_INDICATED_CONNECT_ABORTED; + +// +// Peer info structure for message handler +// (DPN_MSGID_PEER_INFO) +// +typedef struct _DPNMSG_PEER_INFO +{ + DWORD dwSize; // Size of this structure + DPNID dpnidPeer; // DPNID of peer + PVOID pvPlayerContext; // Player context value +} DPNMSG_PEER_INFO, *PDPNMSG_PEER_INFO; + +// +// Receive structure for message handler +// (DPN_MSGID_RECEIVE) +// +typedef struct _DPNMSG_RECEIVE +{ + DWORD dwSize; // Size of this structure + DPNID dpnidSender; // DPNID of sending player + PVOID pvPlayerContext; // Player context value of sending player + PBYTE pReceiveData; // Received data + DWORD dwReceiveDataSize; // Size (in bytes) of pReceiveData + DPNHANDLE hBufferHandle; // Buffer handle for pReceiveData + + // Fields added for DirectX 9 + DWORD dwReceiveFlags; // Flags describing how message was received +} DPNMSG_RECEIVE, *PDPNMSG_RECEIVE; + +// +// Remove player from group structure for message handler +// (DPN_MSGID_REMOVE_PLAYER_FROM_GROUP) +// +typedef struct _DPNMSG_REMOVE_PLAYER_FROM_GROUP +{ + DWORD dwSize; // Size of this structure + DPNID dpnidGroup; // DPNID of group + PVOID pvGroupContext; // Group context value + DPNID dpnidPlayer; // DPNID of deleted player + PVOID pvPlayerContext; // Player context value +} DPNMSG_REMOVE_PLAYER_FROM_GROUP, *PDPNMSG_REMOVE_PLAYER_FROM_GROUP; + +// +// Returned buffer structure for message handler +// (DPN_MSGID_RETURN_BUFFER) +// +typedef struct _DPNMSG_RETURN_BUFFER +{ + DWORD dwSize; // Size of this structure + HRESULT hResultCode; // Return value of operation + PVOID pvBuffer; // Buffer being returned + PVOID pvUserContext; // Context associated with buffer +} DPNMSG_RETURN_BUFFER, *PDPNMSG_RETURN_BUFFER; + +// +// Send complete structure for message handler +// (DPN_MSGID_SEND_COMPLETE) +// +typedef struct _DPNMSG_SEND_COMPLETE +{ + DWORD dwSize; // Size of this structure + DPNHANDLE hAsyncOp; // DirectPlay8 Async operation handle + PVOID pvUserContext; // User context supplied at Send/SendTo + HRESULT hResultCode; // HRESULT of send + DWORD dwSendTime; // Send time in ms + + // Fields added for DirectX 9 + DWORD dwFirstFrameRTT; // RTT of the first frame in the message + DWORD dwFirstFrameRetryCount; // Retry count of the first frame + DWORD dwSendCompleteFlags; // Flags describing how message was sent + DPN_BUFFER_DESC *pBuffers; // Pointer to array of buffers sent, if DirectPlay did not make a copy + DWORD dwNumBuffers; // Number of buffers in previous array +} DPNMSG_SEND_COMPLETE, *PDPNMSG_SEND_COMPLETE; + +// +// Server info structure for message handler +// (DPN_MSGID_SERVER_INFO) +// +typedef struct _DPNMSG_SERVER_INFO +{ + DWORD dwSize; // Size of this structure + DPNID dpnidServer; // DPNID of server + PVOID pvPlayerContext; // Player context value +} DPNMSG_SERVER_INFO, *PDPNMSG_SERVER_INFO; + +// +// Terminated session structure for message handler +// (DPN_MSGID_TERMINATE_SESSION) +// +typedef struct _DPNMSG_TERMINATE_SESSION +{ + DWORD dwSize; // Size of this structure + HRESULT hResultCode; // Reason + PVOID pvTerminateData; // Data passed from Host/Server + DWORD dwTerminateDataSize;// Size (in bytes) of pvTerminateData +} DPNMSG_TERMINATE_SESSION, *PDPNMSG_TERMINATE_SESSION; + + +// +// Message structures added for DirectX 9 +// + +// +// Create thread info structure for message handler +// (DPN_MSGID_CREATE_THREAD) +// +typedef struct _DPNMSG_CREATE_THREAD +{ + DWORD dwSize; // Size of this structure + DWORD dwFlags; // Flags describing this thread + DWORD dwProcessorNum; // Index of processor to which thread is bound + PVOID pvUserContext; // Thread context value +} DPNMSG_CREATE_THREAD, *PDPNMSG_CREATE_THREAD; + +// +// Destroy thread info structure for message handler +// (DPN_MSGID_DESTROY_THREAD) +// +typedef struct _DPNMSG_DESTROY_THREAD +{ + DWORD dwSize; // Size of this structure + DWORD dwProcessorNum; // Index of processor to which thread was bound + PVOID pvUserContext; // Thread context value +} DPNMSG_DESTROY_THREAD, *PDPNMSG_DESTROY_THREAD; + + +// +// Query-to-resolve-NAT-address structure for message handler +// (DPN_MSGID_NAT_RESOLVER_QUERY) +// +typedef struct _DPNMSG_NAT_RESOLVER_QUERY +{ + DWORD dwSize; // Size of this structure. + IDirectPlay8Address *pAddressSender; // Address of client that sent the query + IDirectPlay8Address *pAddressDevice; // Address of device on which query was received + WCHAR *pwszUserString; // User specified string, or NULL if none +} DPNMSG_NAT_RESOLVER_QUERY, *PDPNMSG_NAT_RESOLVER_QUERY; + +/**************************************************************************** + * + * DirectPlay8 Functions + * + ****************************************************************************/ + + + +/* + * This function is no longer supported. It is recommended that CoCreateInstance be used to create + * DirectPlay8 objects. + * + * extern HRESULT WINAPI DirectPlay8Create( const CLSID * pcIID, void **ppvInterface, IUnknown *pUnknown ); + * + */ + + +/**************************************************************************** + * + * DirectPlay8 Application Interfaces + * + ****************************************************************************/ + +// +// COM definition for DirectPlay8 Client interface +// +#undef INTERFACE // External COM Implementation +#define INTERFACE IDirectPlay8Client +DECLARE_INTERFACE_(IDirectPlay8Client,IUnknown) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface) (THIS_ DP8REFIID riid, LPVOID *ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + /*** IDirectPlay8Client methods ***/ + STDMETHOD(Initialize) (THIS_ PVOID const pvUserContext, const PFNDPNMESSAGEHANDLER pfn, const DWORD dwFlags) PURE; + STDMETHOD(EnumServiceProviders) (THIS_ const GUID *const pguidServiceProvider, const GUID *const pguidApplication, DPN_SERVICE_PROVIDER_INFO *const pSPInfoBuffer, PDWORD const pcbEnumData, PDWORD const pcReturned, const DWORD dwFlags) PURE; + STDMETHOD(EnumHosts) (THIS_ PDPN_APPLICATION_DESC const pApplicationDesc,IDirectPlay8Address *const pAddrHost,IDirectPlay8Address *const pDeviceInfo,PVOID const pUserEnumData,const DWORD dwUserEnumDataSize,const DWORD dwEnumCount,const DWORD dwRetryInterval,const DWORD dwTimeOut,PVOID const pvUserContext,DPNHANDLE *const pAsyncHandle,const DWORD dwFlags) PURE; + STDMETHOD(CancelAsyncOperation) (THIS_ const DPNHANDLE hAsyncHandle, const DWORD dwFlags) PURE; + STDMETHOD(Connect) (THIS_ const DPN_APPLICATION_DESC *const pdnAppDesc,IDirectPlay8Address *const pHostAddr,IDirectPlay8Address *const pDeviceInfo,const DPN_SECURITY_DESC *const pdnSecurity,const DPN_SECURITY_CREDENTIALS *const pdnCredentials,const void *const pvUserConnectData,const DWORD dwUserConnectDataSize,void *const pvAsyncContext,DPNHANDLE *const phAsyncHandle,const DWORD dwFlags) PURE; + STDMETHOD(Send) (THIS_ const DPN_BUFFER_DESC *const prgBufferDesc,const DWORD cBufferDesc,const DWORD dwTimeOut,void *const pvAsyncContext,DPNHANDLE *const phAsyncHandle,const DWORD dwFlags) PURE; + STDMETHOD(GetSendQueueInfo) (THIS_ DWORD *const pdwNumMsgs, DWORD *const pdwNumBytes, const DWORD dwFlags) PURE; + STDMETHOD(GetApplicationDesc) (THIS_ DPN_APPLICATION_DESC *const pAppDescBuffer, DWORD *const pcbDataSize, const DWORD dwFlags) PURE; + STDMETHOD(SetClientInfo) (THIS_ const DPN_PLAYER_INFO *const pdpnPlayerInfo,PVOID const pvAsyncContext,DPNHANDLE *const phAsyncHandle, const DWORD dwFlags) PURE; + STDMETHOD(GetServerInfo) (THIS_ DPN_PLAYER_INFO *const pdpnPlayerInfo,DWORD *const pdwSize,const DWORD dwFlags) PURE; + STDMETHOD(GetServerAddress) (THIS_ IDirectPlay8Address **const pAddress,const DWORD dwFlags) PURE; + STDMETHOD(Close) (THIS_ const DWORD dwFlags) PURE; + STDMETHOD(ReturnBuffer) (THIS_ const DPNHANDLE hBufferHandle,const DWORD dwFlags) PURE; + STDMETHOD(GetCaps) (THIS_ DPN_CAPS *const pdpCaps,const DWORD dwFlags) PURE; + STDMETHOD(SetCaps) (THIS_ const DPN_CAPS *const pdpCaps, const DWORD dwFlags) PURE; + STDMETHOD(SetSPCaps) (THIS_ const GUID * const pguidSP, const DPN_SP_CAPS *const pdpspCaps, const DWORD dwFlags ) PURE; + STDMETHOD(GetSPCaps) (THIS_ const GUID * const pguidSP,DPN_SP_CAPS *const pdpspCaps,const DWORD dwFlags) PURE; + STDMETHOD(GetConnectionInfo) (THIS_ DPN_CONNECTION_INFO *const pdpConnectionInfo,const DWORD dwFlags) PURE; + STDMETHOD(RegisterLobby) (THIS_ const DPNHANDLE dpnHandle, struct IDirectPlay8LobbiedApplication *const pIDP8LobbiedApplication,const DWORD dwFlags) PURE; +}; + +// +// COM definition for DirectPlay8 Server interface +// +#undef INTERFACE // External COM Implementation +#define INTERFACE IDirectPlay8Server +DECLARE_INTERFACE_(IDirectPlay8Server,IUnknown) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface) (THIS_ DP8REFIID riid, LPVOID *ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + /*** IDirectPlay8Server methods ***/ + STDMETHOD(Initialize) (THIS_ PVOID const pvUserContext, const PFNDPNMESSAGEHANDLER pfn, const DWORD dwFlags) PURE; + STDMETHOD(EnumServiceProviders) (THIS_ const GUID *const pguidServiceProvider,const GUID *const pguidApplication,DPN_SERVICE_PROVIDER_INFO *const pSPInfoBuffer,PDWORD const pcbEnumData,PDWORD const pcReturned,const DWORD dwFlags) PURE; + STDMETHOD(CancelAsyncOperation) (THIS_ const DPNHANDLE hAsyncHandle,const DWORD dwFlags) PURE; + STDMETHOD(GetSendQueueInfo) (THIS_ const DPNID dpnid,DWORD *const pdwNumMsgs, DWORD *const pdwNumBytes, const DWORD dwFlags) PURE; + STDMETHOD(GetApplicationDesc) (THIS_ DPN_APPLICATION_DESC *const pAppDescBuffer, DWORD *const pcbDataSize, const DWORD dwFlags) PURE; + STDMETHOD(SetServerInfo) (THIS_ const DPN_PLAYER_INFO *const pdpnPlayerInfo,PVOID const pvAsyncContext, DPNHANDLE *const phAsyncHandle, const DWORD dwFlags) PURE; + STDMETHOD(GetClientInfo) (THIS_ const DPNID dpnid,DPN_PLAYER_INFO *const pdpnPlayerInfo,DWORD *const pdwSize,const DWORD dwFlags) PURE; + STDMETHOD(GetClientAddress) (THIS_ const DPNID dpnid,IDirectPlay8Address **const pAddress,const DWORD dwFlags) PURE; + STDMETHOD(GetLocalHostAddresses) (THIS_ IDirectPlay8Address **const prgpAddress,DWORD *const pcAddress,const DWORD dwFlags) PURE; + STDMETHOD(SetApplicationDesc) (THIS_ const DPN_APPLICATION_DESC *const pad, const DWORD dwFlags) PURE; + STDMETHOD(Host) (THIS_ const DPN_APPLICATION_DESC *const pdnAppDesc,IDirectPlay8Address **const prgpDeviceInfo,const DWORD cDeviceInfo,const DPN_SECURITY_DESC *const pdnSecurity,const DPN_SECURITY_CREDENTIALS *const pdnCredentials,void *const pvPlayerContext,const DWORD dwFlags) PURE; + STDMETHOD(SendTo) (THIS_ const DPNID dpnid,const DPN_BUFFER_DESC *const prgBufferDesc,const DWORD cBufferDesc,const DWORD dwTimeOut,void *const pvAsyncContext,DPNHANDLE *const phAsyncHandle,const DWORD dwFlags) PURE; + STDMETHOD(CreateGroup) (THIS_ const DPN_GROUP_INFO *const pdpnGroupInfo,void *const pvGroupContext,void *const pvAsyncContext,DPNHANDLE *const phAsyncHandle,const DWORD dwFlags) PURE; + STDMETHOD(DestroyGroup) (THIS_ const DPNID idGroup, PVOID const pvAsyncContext, DPNHANDLE *const phAsyncHandle, const DWORD dwFlags) PURE; + STDMETHOD(AddPlayerToGroup) (THIS_ const DPNID idGroup, const DPNID idClient, PVOID const pvAsyncContext, DPNHANDLE *const phAsyncHandle, const DWORD dwFlags) PURE; + STDMETHOD(RemovePlayerFromGroup) (THIS_ const DPNID idGroup, const DPNID idClient, PVOID const pvAsyncContext, DPNHANDLE *const phAsyncHandle, const DWORD dwFlags) PURE; + STDMETHOD(SetGroupInfo) (THIS_ const DPNID dpnid,DPN_GROUP_INFO *const pdpnGroupInfo,PVOID const pvAsyncContext,DPNHANDLE *const phAsyncHandle, const DWORD dwFlags) PURE; + STDMETHOD(GetGroupInfo) (THIS_ const DPNID dpnid,DPN_GROUP_INFO *const pdpnGroupInfo,DWORD *const pdwSize,const DWORD dwFlags) PURE; + STDMETHOD(EnumPlayersAndGroups) (THIS_ DPNID *const prgdpnid, DWORD *const pcdpnid, const DWORD dwFlags) PURE; + STDMETHOD(EnumGroupMembers) (THIS_ const DPNID dpnid, DPNID *const prgdpnid, DWORD *const pcdpnid, const DWORD dwFlags) PURE; + STDMETHOD(Close) (THIS_ const DWORD dwFlags) PURE; + STDMETHOD(DestroyClient) (THIS_ const DPNID dpnidClient, const void *const pvDestroyData, const DWORD dwDestroyDataSize, const DWORD dwFlags) PURE; + STDMETHOD(ReturnBuffer) (THIS_ const DPNHANDLE hBufferHandle,const DWORD dwFlags) PURE; + STDMETHOD(GetPlayerContext) (THIS_ const DPNID dpnid,PVOID *const ppvPlayerContext,const DWORD dwFlags) PURE; + STDMETHOD(GetGroupContext) (THIS_ const DPNID dpnid,PVOID *const ppvGroupContext,const DWORD dwFlags) PURE; + STDMETHOD(GetCaps) (THIS_ DPN_CAPS *const pdpCaps,const DWORD dwFlags) PURE; + STDMETHOD(SetCaps) (THIS_ const DPN_CAPS *const pdpCaps, const DWORD dwFlags) PURE; + STDMETHOD(SetSPCaps) (THIS_ const GUID * const pguidSP, const DPN_SP_CAPS *const pdpspCaps, const DWORD dwFlags ) PURE; + STDMETHOD(GetSPCaps) (THIS_ const GUID * const pguidSP, DPN_SP_CAPS *const pdpspCaps,const DWORD dwFlags) PURE; + STDMETHOD(GetConnectionInfo) (THIS_ const DPNID dpnid, DPN_CONNECTION_INFO *const pdpConnectionInfo,const DWORD dwFlags) PURE; + STDMETHOD(RegisterLobby) (THIS_ const DPNHANDLE dpnHandle, struct IDirectPlay8LobbiedApplication *const pIDP8LobbiedApplication,const DWORD dwFlags) PURE; +}; + +// +// COM definition for DirectPlay8 Peer interface +// +#undef INTERFACE // External COM Implementation +#define INTERFACE IDirectPlay8Peer +DECLARE_INTERFACE_(IDirectPlay8Peer,IUnknown) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface) (THIS_ DP8REFIID riid, LPVOID *ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + /*** IDirectPlay8Peer methods ***/ + STDMETHOD(Initialize) (THIS_ PVOID const pvUserContext, const PFNDPNMESSAGEHANDLER pfn, const DWORD dwFlags) PURE; + STDMETHOD(EnumServiceProviders) (THIS_ const GUID *const pguidServiceProvider, const GUID *const pguidApplication, DPN_SERVICE_PROVIDER_INFO *const pSPInfoBuffer, DWORD *const pcbEnumData, DWORD *const pcReturned, const DWORD dwFlags) PURE; + STDMETHOD(CancelAsyncOperation) (THIS_ const DPNHANDLE hAsyncHandle, const DWORD dwFlags) PURE; + STDMETHOD(Connect) (THIS_ const DPN_APPLICATION_DESC *const pdnAppDesc,IDirectPlay8Address *const pHostAddr,IDirectPlay8Address *const pDeviceInfo,const DPN_SECURITY_DESC *const pdnSecurity,const DPN_SECURITY_CREDENTIALS *const pdnCredentials,const void *const pvUserConnectData,const DWORD dwUserConnectDataSize,void *const pvPlayerContext,void *const pvAsyncContext,DPNHANDLE *const phAsyncHandle,const DWORD dwFlags) PURE; + STDMETHOD(SendTo) (THIS_ const DPNID dpnid,const DPN_BUFFER_DESC *const prgBufferDesc,const DWORD cBufferDesc,const DWORD dwTimeOut,void *const pvAsyncContext,DPNHANDLE *const phAsyncHandle,const DWORD dwFlags) PURE; + STDMETHOD(GetSendQueueInfo) (THIS_ const DPNID dpnid, DWORD *const pdwNumMsgs, DWORD *const pdwNumBytes, const DWORD dwFlags) PURE; + STDMETHOD(Host) (THIS_ const DPN_APPLICATION_DESC *const pdnAppDesc,IDirectPlay8Address **const prgpDeviceInfo,const DWORD cDeviceInfo,const DPN_SECURITY_DESC *const pdnSecurity,const DPN_SECURITY_CREDENTIALS *const pdnCredentials,void *const pvPlayerContext,const DWORD dwFlags) PURE; + STDMETHOD(GetApplicationDesc) (THIS_ DPN_APPLICATION_DESC *const pAppDescBuffer, DWORD *const pcbDataSize, const DWORD dwFlags) PURE; + STDMETHOD(SetApplicationDesc) (THIS_ const DPN_APPLICATION_DESC *const pad, const DWORD dwFlags) PURE; + STDMETHOD(CreateGroup) (THIS_ const DPN_GROUP_INFO *const pdpnGroupInfo,void *const pvGroupContext,void *const pvAsyncContext,DPNHANDLE *const phAsyncHandle,const DWORD dwFlags) PURE; + STDMETHOD(DestroyGroup) (THIS_ const DPNID idGroup, PVOID const pvAsyncContext, DPNHANDLE *const phAsyncHandle, const DWORD dwFlags) PURE; + STDMETHOD(AddPlayerToGroup) (THIS_ const DPNID idGroup, const DPNID idClient, PVOID const pvAsyncContext, DPNHANDLE *const phAsyncHandle, const DWORD dwFlags) PURE; + STDMETHOD(RemovePlayerFromGroup) (THIS_ const DPNID idGroup, const DPNID idClient, PVOID const pvAsyncContext, DPNHANDLE *const phAsyncHandle, const DWORD dwFlags) PURE; + STDMETHOD(SetGroupInfo) (THIS_ const DPNID dpnid,DPN_GROUP_INFO *const pdpnGroupInfo,PVOID const pvAsyncContext,DPNHANDLE *const phAsyncHandle, const DWORD dwFlags) PURE; + STDMETHOD(GetGroupInfo) (THIS_ const DPNID dpnid,DPN_GROUP_INFO *const pdpnGroupInfo,DWORD *const pdwSize,const DWORD dwFlags) PURE; + STDMETHOD(EnumPlayersAndGroups) (THIS_ DPNID *const prgdpnid, DWORD *const pcdpnid, const DWORD dwFlags) PURE; + STDMETHOD(EnumGroupMembers) (THIS_ const DPNID dpnid, DPNID *const prgdpnid, DWORD *const pcdpnid, const DWORD dwFlags) PURE; + STDMETHOD(SetPeerInfo) (THIS_ const DPN_PLAYER_INFO *const pdpnPlayerInfo,PVOID const pvAsyncContext,DPNHANDLE *const phAsyncHandle, const DWORD dwFlags) PURE; + STDMETHOD(GetPeerInfo) (THIS_ const DPNID dpnid,DPN_PLAYER_INFO *const pdpnPlayerInfo,DWORD *const pdwSize,const DWORD dwFlags) PURE; + STDMETHOD(GetPeerAddress) (THIS_ const DPNID dpnid,IDirectPlay8Address **const ppAddress,const DWORD dwFlags) PURE; + STDMETHOD(GetLocalHostAddresses) (THIS_ IDirectPlay8Address **const prgpAddress,DWORD *const pcAddress,const DWORD dwFlags) PURE; + STDMETHOD(Close) (THIS_ const DWORD dwFlags) PURE; + STDMETHOD(EnumHosts) (THIS_ PDPN_APPLICATION_DESC const pApplicationDesc,IDirectPlay8Address *const pAddrHost,IDirectPlay8Address *const pDeviceInfo,PVOID const pUserEnumData,const DWORD dwUserEnumDataSize,const DWORD dwEnumCount,const DWORD dwRetryInterval,const DWORD dwTimeOut,PVOID const pvUserContext,DPNHANDLE *const pAsyncHandle,const DWORD dwFlags) PURE; + STDMETHOD(DestroyPeer) (THIS_ const DPNID dpnidClient, const void *const pvDestroyData, const DWORD dwDestroyDataSize, const DWORD dwFlags) PURE; + STDMETHOD(ReturnBuffer) (THIS_ const DPNHANDLE hBufferHandle,const DWORD dwFlags) PURE; + STDMETHOD(GetPlayerContext) (THIS_ const DPNID dpnid,PVOID *const ppvPlayerContext,const DWORD dwFlags) PURE; + STDMETHOD(GetGroupContext) (THIS_ const DPNID dpnid,PVOID *const ppvGroupContext,const DWORD dwFlags) PURE; + STDMETHOD(GetCaps) (THIS_ DPN_CAPS *const pdpCaps,const DWORD dwFlags) PURE; + STDMETHOD(SetCaps) (THIS_ const DPN_CAPS *const pdpCaps, const DWORD dwFlags) PURE; + STDMETHOD(SetSPCaps) (THIS_ const GUID * const pguidSP, const DPN_SP_CAPS *const pdpspCaps, const DWORD dwFlags ) PURE; + STDMETHOD(GetSPCaps) (THIS_ const GUID * const pguidSP, DPN_SP_CAPS *const pdpspCaps,const DWORD dwFlags) PURE; + STDMETHOD(GetConnectionInfo) (THIS_ const DPNID dpnid, DPN_CONNECTION_INFO *const pdpConnectionInfo,const DWORD dwFlags) PURE; + STDMETHOD(RegisterLobby) (THIS_ const DPNHANDLE dpnHandle, struct IDirectPlay8LobbiedApplication *const pIDP8LobbiedApplication,const DWORD dwFlags) PURE; + STDMETHOD(TerminateSession) (THIS_ void *const pvTerminateData,const DWORD dwTerminateDataSize,const DWORD dwFlags) PURE; +}; + + + +// +// COM definition for DirectPlay8 Thread Pool interface +// +#undef INTERFACE // External COM Implementation +#define INTERFACE IDirectPlay8ThreadPool +DECLARE_INTERFACE_(IDirectPlay8ThreadPool,IUnknown) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface) (THIS_ DP8REFIID riid, LPVOID *ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + /*** IDirectPlay8ThreadPool methods ***/ + STDMETHOD(Initialize) (THIS_ PVOID const pvUserContext, const PFNDPNMESSAGEHANDLER pfn, const DWORD dwFlags) PURE; + STDMETHOD(Close) (THIS_ const DWORD dwFlags) PURE; + STDMETHOD(GetThreadCount) (THIS_ const DWORD dwProcessorNum, DWORD *const pdwNumThreads, const DWORD dwFlags) PURE; + STDMETHOD(SetThreadCount) (THIS_ const DWORD dwProcessorNum, const DWORD dwNumThreads, const DWORD dwFlags) PURE; + STDMETHOD(DoWork) (THIS_ const DWORD dwAllowedTimeSlice, const DWORD dwFlags) PURE; +}; + + +// +// COM definition for DirectPlay8 NAT Resolver interface +// +#undef INTERFACE // External COM Implementation +#define INTERFACE IDirectPlay8NATResolver +DECLARE_INTERFACE_(IDirectPlay8NATResolver,IUnknown) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface) (THIS_ DP8REFIID riid, LPVOID *ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + /*** IDirectPlay8NATResolver methods ***/ + STDMETHOD(Initialize) (THIS_ PVOID const pvUserContext, const PFNDPNMESSAGEHANDLER pfn, const DWORD dwFlags) PURE; + STDMETHOD(Start) (THIS_ IDirectPlay8Address **const ppDevices, const DWORD dwNumDevices, const DWORD dwFlags) PURE; + STDMETHOD(Close) (THIS_ const DWORD dwFlags) PURE; + STDMETHOD(EnumDevices) (THIS_ DPN_SERVICE_PROVIDER_INFO *const pSPInfoBuffer, PDWORD const pdwBufferSize, PDWORD const pdwNumDevices, const DWORD dwFlags) PURE; + STDMETHOD(GetAddresses) (THIS_ IDirectPlay8Address **const ppAddresses, DWORD *const pdwNumAddresses, const DWORD dwFlags) PURE; +}; + + +/**************************************************************************** + * + * IDirectPlay8 application interface macros + * + ****************************************************************************/ + +#if !defined(__cplusplus) || defined(CINTERFACE) + +#define IDirectPlay8Client_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDirectPlay8Client_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectPlay8Client_Release(p) (p)->lpVtbl->Release(p) +#define IDirectPlay8Client_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c) +#define IDirectPlay8Client_EnumServiceProviders(p,a,b,c,d,e,f) (p)->lpVtbl->EnumServiceProviders(p,a,b,c,d,e,f) +#define IDirectPlay8Client_EnumHosts(p,a,b,c,d,e,f,g,h,i,j,k) (p)->lpVtbl->EnumHosts(p,a,b,c,d,e,f,g,h,i,j,k) +#define IDirectPlay8Client_CancelAsyncOperation(p,a,b) (p)->lpVtbl->CancelAsyncOperation(p,a,b) +#define IDirectPlay8Client_Connect(p,a,b,c,d,e,f,g,h,i,j) (p)->lpVtbl->Connect(p,a,b,c,d,e,f,g,h,i,j) +#define IDirectPlay8Client_Send(p,a,b,c,d,e,f) (p)->lpVtbl->Send(p,a,b,c,d,e,f) +#define IDirectPlay8Client_GetSendQueueInfo(p,a,b,c) (p)->lpVtbl->GetSendQueueInfo(p,a,b,c) +#define IDirectPlay8Client_GetApplicationDesc(p,a,b,c) (p)->lpVtbl->GetApplicationDesc(p,a,b,c) +#define IDirectPlay8Client_SetClientInfo(p,a,b,c,d) (p)->lpVtbl->SetClientInfo(p,a,b,c,d) +#define IDirectPlay8Client_GetServerInfo(p,a,b,c) (p)->lpVtbl->GetServerInfo(p,a,b,c) +#define IDirectPlay8Client_GetServerAddress(p,a,b) (p)->lpVtbl->GetServerAddress(p,a,b) +#define IDirectPlay8Client_Close(p,a) (p)->lpVtbl->Close(p,a) +#define IDirectPlay8Client_ReturnBuffer(p,a,b) (p)->lpVtbl->ReturnBuffer(p,a,b) +#define IDirectPlay8Client_GetCaps(p,a,b) (p)->lpVtbl->GetCaps(p,a,b) +#define IDirectPlay8Client_SetCaps(p,a,b) (p)->lpVtbl->SetCaps(p,a,b) +#define IDirectPlay8Client_SetSPCaps(p,a,b,c) (p)->lpVtbl->SetSPCaps(p,a,b,c) +#define IDirectPlay8Client_GetSPCaps(p,a,b,c) (p)->lpVtbl->GetSPCaps(p,a,b,c) +#define IDirectPlay8Client_GetConnectionInfo(p,a,b) (p)->lpVtbl->GetConnectionInfo(p,a,b) +#define IDirectPlay8Client_RegisterLobby(p,a,b,c) (p)->lpVtbl->RegisterLobby(p,a,b,c) + +#define IDirectPlay8Server_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDirectPlay8Server_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectPlay8Server_Release(p) (p)->lpVtbl->Release(p) +#define IDirectPlay8Server_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c) +#define IDirectPlay8Server_EnumServiceProviders(p,a,b,c,d,e,f) (p)->lpVtbl->EnumServiceProviders(p,a,b,c,d,e,f) +#define IDirectPlay8Server_CancelAsyncOperation(p,a,b) (p)->lpVtbl->CancelAsyncOperation(p,a,b) +#define IDirectPlay8Server_GetSendQueueInfo(p,a,b,c,d) (p)->lpVtbl->GetSendQueueInfo(p,a,b,c,d) +#define IDirectPlay8Server_GetApplicationDesc(p,a,b,c) (p)->lpVtbl->GetApplicationDesc(p,a,b,c) +#define IDirectPlay8Server_SetServerInfo(p,a,b,c,d) (p)->lpVtbl->SetServerInfo(p,a,b,c,d) +#define IDirectPlay8Server_GetClientInfo(p,a,b,c,d) (p)->lpVtbl->GetClientInfo(p,a,b,c,d) +#define IDirectPlay8Server_GetClientAddress(p,a,b,c) (p)->lpVtbl->GetClientAddress(p,a,b,c) +#define IDirectPlay8Server_GetLocalHostAddresses(p,a,b,c) (p)->lpVtbl->GetLocalHostAddresses(p,a,b,c) +#define IDirectPlay8Server_SetApplicationDesc(p,a,b) (p)->lpVtbl->SetApplicationDesc(p,a,b) +#define IDirectPlay8Server_Host(p,a,b,c,d,e,f,g) (p)->lpVtbl->Host(p,a,b,c,d,e,f,g) +#define IDirectPlay8Server_SendTo(p,a,b,c,d,e,f,g) (p)->lpVtbl->SendTo(p,a,b,c,d,e,f,g) +#define IDirectPlay8Server_CreateGroup(p,a,b,c,d,e) (p)->lpVtbl->CreateGroup(p,a,b,c,d,e) +#define IDirectPlay8Server_DestroyGroup(p,a,b,c,d) (p)->lpVtbl->DestroyGroup(p,a,b,c,d) +#define IDirectPlay8Server_AddPlayerToGroup(p,a,b,c,d,e) (p)->lpVtbl->AddPlayerToGroup(p,a,b,c,d,e) +#define IDirectPlay8Server_RemovePlayerFromGroup(p,a,b,c,d,e) (p)->lpVtbl->RemovePlayerFromGroup(p,a,b,c,d,e) +#define IDirectPlay8Server_SetGroupInfo(p,a,b,c,d,e) (p)->lpVtbl->SetGroupInfo(p,a,b,c,d,e) +#define IDirectPlay8Server_GetGroupInfo(p,a,b,c,d) (p)->lpVtbl->GetGroupInfo(p,a,b,c,d) +#define IDirectPlay8Server_EnumPlayersAndGroups(p,a,b,c) (p)->lpVtbl->EnumPlayersAndGroups(p,a,b,c) +#define IDirectPlay8Server_EnumGroupMembers(p,a,b,c,d) (p)->lpVtbl->EnumGroupMembers(p,a,b,c,d) +#define IDirectPlay8Server_Close(p,a) (p)->lpVtbl->Close(p,a) +#define IDirectPlay8Server_DestroyClient(p,a,b,c,d) (p)->lpVtbl->DestroyClient(p,a,b,c,d) +#define IDirectPlay8Server_ReturnBuffer(p,a,b) (p)->lpVtbl->ReturnBuffer(p,a,b) +#define IDirectPlay8Server_GetPlayerContext(p,a,b,c) (p)->lpVtbl->GetPlayerContext(p,a,b,c) +#define IDirectPlay8Server_GetGroupContext(p,a,b,c) (p)->lpVtbl->GetGroupContext(p,a,b,c) +#define IDirectPlay8Server_GetCaps(p,a,b) (p)->lpVtbl->GetCaps(p,a,b) +#define IDirectPlay8Server_SetCaps(p,a,b) (p)->lpVtbl->SetCaps(p,a,b) +#define IDirectPlay8Server_SetSPCaps(p,a,b,c) (p)->lpVtbl->SetSPCaps(p,a,b,c) +#define IDirectPlay8Server_GetSPCaps(p,a,b,c) (p)->lpVtbl->GetSPCaps(p,a,b,c) +#define IDirectPlay8Server_GetConnectionInfo(p,a,b,c) (p)->lpVtbl->GetConnectionInfo(p,a,b,c) +#define IDirectPlay8Server_RegisterLobby(p,a,b,c) (p)->lpVtbl->RegisterLobby(p,a,b,c) + +#define IDirectPlay8Peer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDirectPlay8Peer_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectPlay8Peer_Release(p) (p)->lpVtbl->Release(p) +#define IDirectPlay8Peer_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c) +#define IDirectPlay8Peer_EnumServiceProviders(p,a,b,c,d,e,f) (p)->lpVtbl->EnumServiceProviders(p,a,b,c,d,e,f) +#define IDirectPlay8Peer_CancelAsyncOperation(p,a,b) (p)->lpVtbl->CancelAsyncOperation(p,a,b) +#define IDirectPlay8Peer_Connect(p,a,b,c,d,e,f,g,h,i,j,k) (p)->lpVtbl->Connect(p,a,b,c,d,e,f,g,h,i,j,k) +#define IDirectPlay8Peer_SendTo(p,a,b,c,d,e,f,g) (p)->lpVtbl->SendTo(p,a,b,c,d,e,f,g) +#define IDirectPlay8Peer_GetSendQueueInfo(p,a,b,c,d) (p)->lpVtbl->GetSendQueueInfo(p,a,b,c,d) +#define IDirectPlay8Peer_Host(p,a,b,c,d,e,f,g) (p)->lpVtbl->Host(p,a,b,c,d,e,f,g) +#define IDirectPlay8Peer_GetApplicationDesc(p,a,b,c) (p)->lpVtbl->GetApplicationDesc(p,a,b,c) +#define IDirectPlay8Peer_SetApplicationDesc(p,a,b) (p)->lpVtbl->SetApplicationDesc(p,a,b) +#define IDirectPlay8Peer_CreateGroup(p,a,b,c,d,e) (p)->lpVtbl->CreateGroup(p,a,b,c,d,e) +#define IDirectPlay8Peer_DestroyGroup(p,a,b,c,d) (p)->lpVtbl->DestroyGroup(p,a,b,c,d) +#define IDirectPlay8Peer_AddPlayerToGroup(p,a,b,c,d,e) (p)->lpVtbl->AddPlayerToGroup(p,a,b,c,d,e) +#define IDirectPlay8Peer_RemovePlayerFromGroup(p,a,b,c,d,e) (p)->lpVtbl->RemovePlayerFromGroup(p,a,b,c,d,e) +#define IDirectPlay8Peer_SetGroupInfo(p,a,b,c,d,e) (p)->lpVtbl->SetGroupInfo(p,a,b,c,d,e) +#define IDirectPlay8Peer_GetGroupInfo(p,a,b,c,d) (p)->lpVtbl->GetGroupInfo(p,a,b,c,d) +#define IDirectPlay8Peer_EnumPlayersAndGroups(p,a,b,c) (p)->lpVtbl->EnumPlayersAndGroups(p,a,b,c) +#define IDirectPlay8Peer_EnumGroupMembers(p,a,b,c,d) (p)->lpVtbl->EnumGroupMembers(p,a,b,c,d) +#define IDirectPlay8Peer_SetPeerInfo(p,a,b,c,d) (p)->lpVtbl->SetPeerInfo(p,a,b,c,d) +#define IDirectPlay8Peer_GetPeerInfo(p,a,b,c,d) (p)->lpVtbl->GetPeerInfo(p,a,b,c,d) +#define IDirectPlay8Peer_GetPeerAddress(p,a,b,c) (p)->lpVtbl->GetPeerAddress(p,a,b,c) +#define IDirectPlay8Peer_GetLocalHostAddresses(p,a,b,c) (p)->lpVtbl->GetLocalHostAddresses(p,a,b,c) +#define IDirectPlay8Peer_Close(p,a) (p)->lpVtbl->Close(p,a) +#define IDirectPlay8Peer_EnumHosts(p,a,b,c,d,e,f,g,h,i,j,k) (p)->lpVtbl->EnumHosts(p,a,b,c,d,e,f,g,h,i,j,k) +#define IDirectPlay8Peer_DestroyPeer(p,a,b,c,d) (p)->lpVtbl->DestroyPeer(p,a,b,c,d) +#define IDirectPlay8Peer_ReturnBuffer(p,a,b) (p)->lpVtbl->ReturnBuffer(p,a,b) +#define IDirectPlay8Peer_GetPlayerContext(p,a,b,c) (p)->lpVtbl->GetPlayerContext(p,a,b,c) +#define IDirectPlay8Peer_GetGroupContext(p,a,b,c) (p)->lpVtbl->GetGroupContext(p,a,b,c) +#define IDirectPlay8Peer_GetCaps(p,a,b) (p)->lpVtbl->GetCaps(p,a,b) +#define IDirectPlay8Peer_SetCaps(p,a,b) (p)->lpVtbl->SetCaps(p,a,b) +#define IDirectPlay8Peer_SetSPCaps(p,a,b,c) (p)->lpVtbl->SetSPCaps(p,a,b,c) +#define IDirectPlay8Peer_GetSPCaps(p,a,b,c) (p)->lpVtbl->GetSPCaps(p,a,b,c) +#define IDirectPlay8Peer_GetConnectionInfo(p,a,b,c) (p)->lpVtbl->GetConnectionInfo(p,a,b,c) +#define IDirectPlay8Peer_RegisterLobby(p,a,b,c) (p)->lpVtbl->RegisterLobby(p,a,b,c) +#define IDirectPlay8Peer_TerminateSession(p,a,b,c) (p)->lpVtbl->TerminateSession(p,a,b,c) + +#define IDirectPlay8ThreadPool_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDirectPlay8ThreadPool_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectPlay8ThreadPool_Release(p) (p)->lpVtbl->Release(p) +#define IDirectPlay8ThreadPool_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c) +#define IDirectPlay8ThreadPool_Close(p,a) (p)->lpVtbl->Close(p,a) +#define IDirectPlay8ThreadPool_GetThreadCount(p,a,b,c) (p)->lpVtbl->GetThreadCount(p,a,b,c) +#define IDirectPlay8ThreadPool_SetThreadCount(p,a,b,c) (p)->lpVtbl->SetThreadCount(p,a,b,c) +#define IDirectPlay8ThreadPool_DoWork(p,a,b) (p)->lpVtbl->DoWork(p,a,b) + +#define IDirectPlay8NATResolver_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDirectPlay8NATResolver_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectPlay8NATResolver_Release(p) (p)->lpVtbl->Release(p) +#define IDirectPlay8NATResolver_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c) +#define IDirectPlay8NATResolver_Start(p,a,b,c) (p)->lpVtbl->Start(p,a,b,c) +#define IDirectPlay8NATResolver_Close(p,a) (p)->lpVtbl->Close(p,a) +#define IDirectPlay8NATResolver_EnumDevices(p,a,b,c,d) (p)->lpVtbl->EnumDevices(p,a,b,c,d) +#define IDirectPlay8NATResolver_GetAddresses(p,a,b,c) (p)->lpVtbl->GetAddresses(p,a,b,c) + +#else /* C++ */ + +#define IDirectPlay8Client_QueryInterface(p,a,b) (p)->QueryInterface(a,b) +#define IDirectPlay8Client_AddRef(p) (p)->AddRef() +#define IDirectPlay8Client_Release(p) (p)->Release() +#define IDirectPlay8Client_Initialize(p,a,b,c) (p)->Initialize(a,b,c) +#define IDirectPlay8Client_EnumServiceProviders(p,a,b,c,d,e,f) (p)->EnumServiceProviders(a,b,c,d,e,f) +#define IDirectPlay8Client_EnumHosts(p,a,b,c,d,e,f,g,h,i,j,k) (p)->EnumHosts(a,b,c,d,e,f,g,h,i,j,k) +#define IDirectPlay8Client_CancelAsyncOperation(p,a,b) (p)->CancelAsyncOperation(a,b) +#define IDirectPlay8Client_Connect(p,a,b,c,d,e,f,g,h,i,j) (p)->Connect(a,b,c,d,e,f,g,h,i,j) +#define IDirectPlay8Client_Send(p,a,b,c,d,e,f) (p)->Send(a,b,c,d,e,f) +#define IDirectPlay8Client_GetSendQueueInfo(p,a,b,c) (p)->GetSendQueueInfo(a,b,c) +#define IDirectPlay8Client_GetApplicationDesc(p,a,b,c) (p)->GetApplicationDesc(a,b,c) +#define IDirectPlay8Client_SetClientInfo(p,a,b,c,d) (p)->SetClientInfo(a,b,c,d) +#define IDirectPlay8Client_GetServerInfo(p,a,b,c) (p)->GetServerInfo(a,b,c) +#define IDirectPlay8Client_GetServerAddress(p,a,b) (p)->GetServerAddress(a,b) +#define IDirectPlay8Client_Close(p,a) (p)->Close(a) +#define IDirectPlay8Client_ReturnBuffer(p,a,b) (p)->ReturnBuffer(a,b) +#define IDirectPlay8Client_GetCaps(p,a,b) (p)->GetCaps(a,b) +#define IDirectPlay8Client_SetCaps(p,a,b) (p)->SetCaps(a,b) +#define IDirectPlay8Client_SetSPCaps(p,a,b,c) (p)->SetSPCaps(a,b,c) +#define IDirectPlay8Client_GetSPCaps(p,a,b,c) (p)->GetSPCaps(a,b,c) +#define IDirectPlay8Client_GetConnectionInfo(p,a,b) (p)->GetConnectionInfo(a,b) +#define IDirectPlay8Client_RegisterLobby(p,a,b,c) (p)->RegisterLobby(a,b,c) + +#define IDirectPlay8Server_QueryInterface(p,a,b) (p)->QueryInterface(a,b) +#define IDirectPlay8Server_AddRef(p) (p)->AddRef() +#define IDirectPlay8Server_Release(p) (p)->Release() +#define IDirectPlay8Server_Initialize(p,a,b,c) (p)->Initialize(a,b,c) +#define IDirectPlay8Server_EnumServiceProviders(p,a,b,c,d,e,f) (p)->EnumServiceProviders(a,b,c,d,e,f) +#define IDirectPlay8Server_CancelAsyncOperation(p,a,b) (p)->CancelAsyncOperation(a,b) +#define IDirectPlay8Server_GetSendQueueInfo(p,a,b,c,d) (p)->GetSendQueueInfo(a,b,c,d) +#define IDirectPlay8Server_GetApplicationDesc(p,a,b,c) (p)->GetApplicationDesc(a,b,c) +#define IDirectPlay8Server_SetServerInfo(p,a,b,c,d) (p)->SetServerInfo(a,b,c,d) +#define IDirectPlay8Server_GetClientInfo(p,a,b,c,d) (p)->GetClientInfo(a,b,c,d) +#define IDirectPlay8Server_GetClientAddress(p,a,b,c) (p)->GetClientAddress(a,b,c) +#define IDirectPlay8Server_GetLocalHostAddresses(p,a,b,c) (p)->GetLocalHostAddresses(a,b,c) +#define IDirectPlay8Server_SetApplicationDesc(p,a,b) (p)->SetApplicationDesc(a,b) +#define IDirectPlay8Server_Host(p,a,b,c,d,e,f,g) (p)->Host(a,b,c,d,e,f,g) +#define IDirectPlay8Server_SendTo(p,a,b,c,d,e,f,g) (p)->SendTo(a,b,c,d,e,f,g) +#define IDirectPlay8Server_CreateGroup(p,a,b,c,d,e) (p)->CreateGroup(a,b,c,d,e) +#define IDirectPlay8Server_DestroyGroup(p,a,b,c,d) (p)->DestroyGroup(a,b,c,d) +#define IDirectPlay8Server_AddPlayerToGroup(p,a,b,c,d,e) (p)->AddPlayerToGroup(a,b,c,d,e) +#define IDirectPlay8Server_RemovePlayerFromGroup(p,a,b,c,d,e) (p)->RemovePlayerFromGroup(a,b,c,d,e) +#define IDirectPlay8Server_SetGroupInfo(p,a,b,c,d,e) (p)->SetGroupInfo(a,b,c,d,e) +#define IDirectPlay8Server_GetGroupInfo(p,a,b,c,d) (p)->GetGroupInfo(a,b,c,d) +#define IDirectPlay8Server_EnumPlayersAndGroups(p,a,b,c) (p)->EnumPlayersAndGroups(a,b,c) +#define IDirectPlay8Server_EnumGroupMembers(p,a,b,c,d) (p)->EnumGroupMembers(a,b,c,d) +#define IDirectPlay8Server_Close(p,a) (p)->Close(a) +#define IDirectPlay8Server_DestroyClient(p,a,b,c,d) (p)->DestroyClient(a,b,c,d) +#define IDirectPlay8Server_ReturnBuffer(p,a,b) (p)->ReturnBuffer(a,b) +#define IDirectPlay8Server_GetPlayerContext(p,a,b,c) (p)->GetPlayerContext(a,b,c) +#define IDirectPlay8Server_GetGroupContext(p,a,b,c) (p)->GetGroupContext(a,b,c) +#define IDirectPlay8Server_GetCaps(p,a,b) (p)->GetCaps(a,b) +#define IDirectPlay8Server_SetCaps(p,a,b) (p)->SetCaps(a,b) +#define IDirectPlay8Server_SetSPCaps(p,a,b,c) (p)->SetSPCaps(a,b,c) +#define IDirectPlay8Server_GetSPCaps(p,a,b,c) (p)->GetSPCaps(a,b,c) +#define IDirectPlay8Server_GetConnectionInfo(p,a,b,c) (p)->GetConnectionInfo(a,b,c) +#define IDirectPlay8Server_RegisterLobby(p,a,b,c) (p)->RegisterLobby(a,b,c) + +#define IDirectPlay8Peer_QueryInterface(p,a,b) (p)->QueryInterface(a,b) +#define IDirectPlay8Peer_AddRef(p) (p)->AddRef() +#define IDirectPlay8Peer_Release(p) (p)->Release() +#define IDirectPlay8Peer_Initialize(p,a,b,c) (p)->Initialize(a,b,c) +#define IDirectPlay8Peer_EnumServiceProviders(p,a,b,c,d,e,f) (p)->EnumServiceProviders(a,b,c,d,e,f) +#define IDirectPlay8Peer_CancelAsyncOperation(p,a,b) (p)->CancelAsyncOperation(a,b) +#define IDirectPlay8Peer_Connect(p,a,b,c,d,e,f,g,h,i,j,k) (p)->Connect(a,b,c,d,e,f,g,h,i,j,k) +#define IDirectPlay8Peer_SendTo(p,a,b,c,d,e,f,g) (p)->SendTo(a,b,c,d,e,f,g) +#define IDirectPlay8Peer_GetSendQueueInfo(p,a,b,c,d) (p)->GetSendQueueInfo(a,b,c,d) +#define IDirectPlay8Peer_Host(p,a,b,c,d,e,f,g) (p)->Host(a,b,c,d,e,f,g) +#define IDirectPlay8Peer_GetApplicationDesc(p,a,b,c) (p)->GetApplicationDesc(a,b,c) +#define IDirectPlay8Peer_SetApplicationDesc(p,a,b) (p)->SetApplicationDesc(a,b) +#define IDirectPlay8Peer_CreateGroup(p,a,b,c,d,e) (p)->CreateGroup(a,b,c,d,e) +#define IDirectPlay8Peer_DestroyGroup(p,a,b,c,d) (p)->DestroyGroup(a,b,c,d) +#define IDirectPlay8Peer_AddPlayerToGroup(p,a,b,c,d,e) (p)->AddPlayerToGroup(a,b,c,d,e) +#define IDirectPlay8Peer_RemovePlayerFromGroup(p,a,b,c,d,e) (p)->RemovePlayerFromGroup(a,b,c,d,e) +#define IDirectPlay8Peer_SetGroupInfo(p,a,b,c,d,e) (p)->SetGroupInfo(a,b,c,d,e) +#define IDirectPlay8Peer_GetGroupInfo(p,a,b,c,d) (p)->GetGroupInfo(a,b,c,d) +#define IDirectPlay8Peer_EnumPlayersAndGroups(p,a,b,c) (p)->EnumPlayersAndGroups(a,b,c) +#define IDirectPlay8Peer_EnumGroupMembers(p,a,b,c,d) (p)->EnumGroupMembers(a,b,c,d) +#define IDirectPlay8Peer_SetPeerInfo(p,a,b,c,d) (p)->SetPeerInfo(a,b,c,d) +#define IDirectPlay8Peer_GetPeerInfo(p,a,b,c,d) (p)->GetPeerInfo(a,b,c,d) +#define IDirectPlay8Peer_GetPeerAddress(p,a,b,c) (p)->GetPeerAddress(a,b,c) +#define IDirectPlay8Peer_GetLocalHostAddresses(p,a,b,c) (p)->GetLocalHostAddresses(a,b,c) +#define IDirectPlay8Peer_Close(p,a) (p)->Close(a) +#define IDirectPlay8Peer_EnumHosts(p,a,b,c,d,e,f,g,h,i,j,k) (p)->EnumHosts(a,b,c,d,e,f,g,h,i,j,k) +#define IDirectPlay8Peer_DestroyPeer(p,a,b,c,d) (p)->DestroyPeer(a,b,c,d) +#define IDirectPlay8Peer_ReturnBuffer(p,a,b) (p)->ReturnBuffer(a,b) +#define IDirectPlay8Peer_GetPlayerContext(p,a,b,c) (p)->GetPlayerContext(a,b,c) +#define IDirectPlay8Peer_GetGroupContext(p,a,b,c) (p)->GetGroupContext(a,b,c) +#define IDirectPlay8Peer_GetCaps(p,a,b) (p)->GetCaps(a,b) +#define IDirectPlay8Peer_SetCaps(p,a,b) (p)->SetCaps(a,b) +#define IDirectPlay8Peer_SetSPCaps(p,a,b,c) (p)->SetSPCaps(a,b,c) +#define IDirectPlay8Peer_GetSPCaps(p,a,b,c) (p)->GetSPCaps(a,b,c) +#define IDirectPlay8Peer_GetConnectionInfo(p,a,b,c) (p)->GetConnectionInfo(a,b,c) +#define IDirectPlay8Peer_RegisterLobby(p,a,b,c) (p)->RegisterLobby(a,b,c) +#define IDirectPlay8Peer_TerminateSession(p,a,b,c) (p)->TerminateSession(a,b,c) + +#define IDirectPlay8ThreadPool_QueryInterface(p,a,b) (p)->QueryInterface(a,b) +#define IDirectPlay8ThreadPool_AddRef(p) (p)->AddRef() +#define IDirectPlay8ThreadPool_Release(p) (p)->Release() +#define IDirectPlay8ThreadPool_Initialize(p,a,b,c) (p)->Initialize(a,b,c) +#define IDirectPlay8ThreadPool_Close(p,a) (p)->Close(a) +#define IDirectPlay8ThreadPool_GetThreadCount(p,a,b,c) (p)->GetThreadCount(a,b,c) +#define IDirectPlay8ThreadPool_SetThreadCount(p,a,b,c) (p)->SetThreadCount(a,b,c) +#define IDirectPlay8ThreadPool_DoWork(p,a,b) (p)->DoWork(a,b) + +#define IDirectPlay8NATResolver_QueryInterface(p,a,b) (p)->QueryInterface(a,b) +#define IDirectPlay8NATResolver_AddRef(p) (p)->AddRef() +#define IDirectPlay8NATResolver_Release(p) (p)->Release() +#define IDirectPlay8NATResolver_Initialize(p,a,b,c) (p)->Initialize(a,b,c) +#define IDirectPlay8NATResolver_Start(p,a,b,c) (p)->Start(a,b,c) +#define IDirectPlay8NATResolver_Close(p,a) (p)->Close(a) +#define IDirectPlay8NATResolver_EnumDevices(p,a,b,c,d) (p)->EnumDevices(a,b,c,d) +#define IDirectPlay8NATResolver_GetAddresses(p,a,b,c) (p)->GetAddresses(a,b,c) + +#endif + + + +/**************************************************************************** + * + * DIRECTPLAY8 ERRORS + * + * Errors are represented by negative values and cannot be combined. + * + ****************************************************************************/ + +#define _DPN_FACILITY_CODE 0x015 +#define _DPNHRESULT_BASE 0x8000 +#define MAKE_DPNHRESULT( code ) MAKE_HRESULT( 1, _DPN_FACILITY_CODE, ( code + _DPNHRESULT_BASE ) ) + +#define DPN_OK S_OK + +#define DPNSUCCESS_EQUAL MAKE_HRESULT( 0, _DPN_FACILITY_CODE, ( 0x5 + _DPNHRESULT_BASE ) ) +#define DPNSUCCESS_NOPLAYERSINGROUP MAKE_HRESULT( 0, _DPN_FACILITY_CODE, ( 0x8 + _DPNHRESULT_BASE ) ) // added for DirectX 9 +#define DPNSUCCESS_NOTEQUAL MAKE_HRESULT( 0, _DPN_FACILITY_CODE, (0x0A + _DPNHRESULT_BASE ) ) +#define DPNSUCCESS_PENDING MAKE_HRESULT( 0, _DPN_FACILITY_CODE, (0x0e + _DPNHRESULT_BASE ) ) + +#define DPNERR_ABORTED MAKE_DPNHRESULT( 0x30 ) +#define DPNERR_ADDRESSING MAKE_DPNHRESULT( 0x40 ) +#define DPNERR_ALREADYCLOSING MAKE_DPNHRESULT( 0x50 ) +#define DPNERR_ALREADYCONNECTED MAKE_DPNHRESULT( 0x60 ) +#define DPNERR_ALREADYDISCONNECTING MAKE_DPNHRESULT( 0x70 ) +#define DPNERR_ALREADYINITIALIZED MAKE_DPNHRESULT( 0x80 ) +#define DPNERR_ALREADYREGISTERED MAKE_DPNHRESULT( 0x90 ) +#define DPNERR_BUFFERTOOSMALL MAKE_DPNHRESULT( 0x100 ) +#define DPNERR_CANNOTCANCEL MAKE_DPNHRESULT( 0x110 ) +#define DPNERR_CANTCREATEGROUP MAKE_DPNHRESULT( 0x120 ) +#define DPNERR_CANTCREATEPLAYER MAKE_DPNHRESULT( 0x130 ) +#define DPNERR_CANTLAUNCHAPPLICATION MAKE_DPNHRESULT( 0x140 ) +#define DPNERR_CONNECTING MAKE_DPNHRESULT( 0x150 ) +#define DPNERR_CONNECTIONLOST MAKE_DPNHRESULT( 0x160 ) +#define DPNERR_CONVERSION MAKE_DPNHRESULT( 0x170 ) +#define DPNERR_DATATOOLARGE MAKE_DPNHRESULT( 0x175 ) +#define DPNERR_DOESNOTEXIST MAKE_DPNHRESULT( 0x180 ) +#define DPNERR_DPNSVRNOTAVAILABLE MAKE_DPNHRESULT( 0x185 ) +#define DPNERR_DUPLICATECOMMAND MAKE_DPNHRESULT( 0x190 ) +#define DPNERR_ENDPOINTNOTRECEIVING MAKE_DPNHRESULT( 0x200 ) +#define DPNERR_ENUMQUERYTOOLARGE MAKE_DPNHRESULT( 0x210 ) +#define DPNERR_ENUMRESPONSETOOLARGE MAKE_DPNHRESULT( 0x220 ) +#define DPNERR_EXCEPTION MAKE_DPNHRESULT( 0x230 ) +#define DPNERR_GENERIC E_FAIL +#define DPNERR_GROUPNOTEMPTY MAKE_DPNHRESULT( 0x240 ) +#define DPNERR_HOSTING MAKE_DPNHRESULT( 0x250 ) +#define DPNERR_HOSTREJECTEDCONNECTION MAKE_DPNHRESULT( 0x260 ) +#define DPNERR_HOSTTERMINATEDSESSION MAKE_DPNHRESULT( 0x270 ) +#define DPNERR_INCOMPLETEADDRESS MAKE_DPNHRESULT( 0x280 ) +#define DPNERR_INVALIDADDRESSFORMAT MAKE_DPNHRESULT( 0x290 ) +#define DPNERR_INVALIDAPPLICATION MAKE_DPNHRESULT( 0x300 ) +#define DPNERR_INVALIDCOMMAND MAKE_DPNHRESULT( 0x310 ) +#define DPNERR_INVALIDDEVICEADDRESS MAKE_DPNHRESULT( 0x320 ) +#define DPNERR_INVALIDENDPOINT MAKE_DPNHRESULT( 0x330 ) +#define DPNERR_INVALIDFLAGS MAKE_DPNHRESULT( 0x340 ) +#define DPNERR_INVALIDGROUP MAKE_DPNHRESULT( 0x350 ) +#define DPNERR_INVALIDHANDLE MAKE_DPNHRESULT( 0x360 ) +#define DPNERR_INVALIDHOSTADDRESS MAKE_DPNHRESULT( 0x370 ) +#define DPNERR_INVALIDINSTANCE MAKE_DPNHRESULT( 0x380 ) +#define DPNERR_INVALIDINTERFACE MAKE_DPNHRESULT( 0x390 ) +#define DPNERR_INVALIDOBJECT MAKE_DPNHRESULT( 0x400 ) +#define DPNERR_INVALIDPARAM E_INVALIDARG +#define DPNERR_INVALIDPASSWORD MAKE_DPNHRESULT( 0x410 ) +#define DPNERR_INVALIDPLAYER MAKE_DPNHRESULT( 0x420 ) +#define DPNERR_INVALIDPOINTER E_POINTER +#define DPNERR_INVALIDPRIORITY MAKE_DPNHRESULT( 0x430 ) +#define DPNERR_INVALIDSTRING MAKE_DPNHRESULT( 0x440 ) +#define DPNERR_INVALIDURL MAKE_DPNHRESULT( 0x450 ) +#define DPNERR_INVALIDVERSION MAKE_DPNHRESULT( 0x460 ) +#define DPNERR_NOCAPS MAKE_DPNHRESULT( 0x470 ) +#define DPNERR_NOCONNECTION MAKE_DPNHRESULT( 0x480 ) +#define DPNERR_NOHOSTPLAYER MAKE_DPNHRESULT( 0x490 ) +#define DPNERR_NOINTERFACE E_NOINTERFACE +#define DPNERR_NOMOREADDRESSCOMPONENTS MAKE_DPNHRESULT( 0x500 ) +#define DPNERR_NORESPONSE MAKE_DPNHRESULT( 0x510 ) +#define DPNERR_NOTALLOWED MAKE_DPNHRESULT( 0x520 ) +#define DPNERR_NOTHOST MAKE_DPNHRESULT( 0x530 ) +#define DPNERR_NOTREADY MAKE_DPNHRESULT( 0x540 ) +#define DPNERR_NOTREGISTERED MAKE_DPNHRESULT( 0x550 ) +#define DPNERR_OUTOFMEMORY E_OUTOFMEMORY +#define DPNERR_PENDING DPNSUCCESS_PENDING +#define DPNERR_PLAYERALREADYINGROUP MAKE_DPNHRESULT( 0x560 ) +#define DPNERR_PLAYERLOST MAKE_DPNHRESULT( 0x570 ) +#define DPNERR_PLAYERNOTINGROUP MAKE_DPNHRESULT( 0x580 ) +#define DPNERR_PLAYERNOTREACHABLE MAKE_DPNHRESULT( 0x590 ) +#define DPNERR_SENDTOOLARGE MAKE_DPNHRESULT( 0x600 ) +#define DPNERR_SESSIONFULL MAKE_DPNHRESULT( 0x610 ) +#define DPNERR_TABLEFULL MAKE_DPNHRESULT( 0x620 ) +#define DPNERR_TIMEDOUT MAKE_DPNHRESULT( 0x630 ) +#define DPNERR_UNINITIALIZED MAKE_DPNHRESULT( 0x640 ) +#define DPNERR_UNSUPPORTED E_NOTIMPL +#define DPNERR_USERCANCEL MAKE_DPNHRESULT( 0x650 ) + +#ifdef __cplusplus +} +#endif + +#endif + diff --git a/videoInputSrcAndDemos/libs/DShow/Include/dplobby.h b/videoInputSrcAndDemos/libs/DShow/Include/dplobby.h index 32339ee..c91d323 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/dplobby.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/dplobby.h @@ -1,853 +1,853 @@ -/*==========================================================================; - * - * Copyright (C) 1996-1997 Microsoft Corporation. All Rights Reserved. - * - * File: dplobby.h - * Content: DirectPlayLobby include file - ***************************************************************************/ -#ifndef __DPLOBBY_INCLUDED__ -#define __DPLOBBY_INCLUDED__ - -#include "dplay.h" - -/* avoid warnings at Level 4 */ -#pragma warning(disable:4201) - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -/* - * GUIDS used by DirectPlay objects - */ - -/* {AF465C71-9588-11cf-A020-00AA006157AC} */ -DEFINE_GUID(IID_IDirectPlayLobby, 0xaf465c71, 0x9588, 0x11cf, 0xa0, 0x20, 0x0, 0xaa, 0x0, 0x61, 0x57, 0xac); -/* {26C66A70-B367-11cf-A024-00AA006157AC} */ -DEFINE_GUID(IID_IDirectPlayLobbyA, 0x26c66a70, 0xb367, 0x11cf, 0xa0, 0x24, 0x0, 0xaa, 0x0, 0x61, 0x57, 0xac); -/* {0194C220-A303-11d0-9C4F-00A0C905425E} */ -DEFINE_GUID(IID_IDirectPlayLobby2, 0x194c220, 0xa303, 0x11d0, 0x9c, 0x4f, 0x0, 0xa0, 0xc9, 0x5, 0x42, 0x5e); -/* {1BB4AF80-A303-11d0-9C4F-00A0C905425E} */ -DEFINE_GUID(IID_IDirectPlayLobby2A, 0x1bb4af80, 0xa303, 0x11d0, 0x9c, 0x4f, 0x0, 0xa0, 0xc9, 0x5, 0x42, 0x5e); -/* {2DB72490-652C-11d1-A7A8-0000F803ABFC} */ -DEFINE_GUID(IID_IDirectPlayLobby3, 0x2db72490, 0x652c, 0x11d1, 0xa7, 0xa8, 0x0, 0x0, 0xf8, 0x3, 0xab, 0xfc); -/* {2DB72491-652C-11d1-A7A8-0000F803ABFC} */ -DEFINE_GUID(IID_IDirectPlayLobby3A, 0x2db72491, 0x652c, 0x11d1, 0xa7, 0xa8, 0x0, 0x0, 0xf8, 0x3, 0xab, 0xfc); -/* {2FE8F810-B2A5-11d0-A787-0000F803ABFC} */ -DEFINE_GUID(CLSID_DirectPlayLobby, 0x2fe8f810, 0xb2a5, 0x11d0, 0xa7, 0x87, 0x0, 0x0, 0xf8, 0x3, 0xab, 0xfc); - - -/**************************************************************************** - * - * IDirectPlayLobby Structures - * - * Various structures used to invoke DirectPlayLobby. - * - ****************************************************************************/ - -typedef struct IDirectPlayLobby FAR *LPDIRECTPLAYLOBBY; -typedef struct IDirectPlayLobby FAR *LPDIRECTPLAYLOBBYA; -typedef struct IDirectPlayLobby IDirectPlayLobbyA; - -typedef struct IDirectPlayLobby2 FAR *LPDIRECTPLAYLOBBY2; -typedef struct IDirectPlayLobby2 FAR *LPDIRECTPLAYLOBBY2A; -typedef struct IDirectPlayLobby2 IDirectPlayLobby2A; - -typedef struct IDirectPlayLobby3 FAR *LPDIRECTPLAYLOBBY3; -typedef struct IDirectPlayLobby3 FAR *LPDIRECTPLAYLOBBY3A; -typedef struct IDirectPlayLobby3 IDirectPlayLobby3A; - - -/* - * DPLAPPINFO - * Used to hold information about a registered DirectPlay - * application - */ -typedef struct DPLAPPINFO -{ - DWORD dwSize; // Size of this structure - GUID guidApplication; // GUID of the Application - union - { - LPSTR lpszAppNameA; // Pointer to the Application Name - LPWSTR lpszAppName; - }; - -} DPLAPPINFO, FAR *LPDPLAPPINFO; - -/* - * LPCDPLAPPINFO - * A constant pointer to DPLAPPINFO - */ -typedef const DPLAPPINFO FAR *LPCDPLAPPINFO; - -/* - * DPCOMPOUNDADDRESSELEMENT - * - * An array of these is passed to CreateCompoundAddresses() - */ -typedef struct DPCOMPOUNDADDRESSELEMENT -{ - GUID guidDataType; - DWORD dwDataSize; - LPVOID lpData; -} DPCOMPOUNDADDRESSELEMENT, FAR *LPDPCOMPOUNDADDRESSELEMENT; - -/* - * LPCDPCOMPOUNDADDRESSELEMENT - * A constant pointer to DPCOMPOUNDADDRESSELEMENT - */ -typedef const DPCOMPOUNDADDRESSELEMENT FAR *LPCDPCOMPOUNDADDRESSELEMENT; - -/* - * LPDPAPPLICATIONDESC - * Used to register a DirectPlay application - */ -typedef struct DPAPPLICATIONDESC -{ - DWORD dwSize; - DWORD dwFlags; - union - { - LPSTR lpszApplicationNameA; - LPWSTR lpszApplicationName; - }; - GUID guidApplication; - union - { - LPSTR lpszFilenameA; - LPWSTR lpszFilename; - }; - union - { - LPSTR lpszCommandLineA; - LPWSTR lpszCommandLine; - }; - union - { - LPSTR lpszPathA; - LPWSTR lpszPath; - }; - union - { - LPSTR lpszCurrentDirectoryA; - LPWSTR lpszCurrentDirectory; - }; - LPSTR lpszDescriptionA; - LPWSTR lpszDescriptionW; -} DPAPPLICATIONDESC, *LPDPAPPLICATIONDESC; - -/* - * LPDPAPPLICATIONDESC2 - * Used to register a DirectPlay application - */ -typedef struct DPAPPLICATIONDESC2 -{ - DWORD dwSize; - DWORD dwFlags; - union - { - LPSTR lpszApplicationNameA; - LPWSTR lpszApplicationName; - }; - GUID guidApplication; - union - { - LPSTR lpszFilenameA; - LPWSTR lpszFilename; - }; - union - { - LPSTR lpszCommandLineA; - LPWSTR lpszCommandLine; - }; - union - { - LPSTR lpszPathA; - LPWSTR lpszPath; - }; - union - { - LPSTR lpszCurrentDirectoryA; - LPWSTR lpszCurrentDirectory; - }; - LPSTR lpszDescriptionA; - LPWSTR lpszDescriptionW; - union - { - LPSTR lpszAppLauncherNameA; - LPWSTR lpszAppLauncherName; - }; -} DPAPPLICATIONDESC2, *LPDPAPPLICATIONDESC2; - - -/**************************************************************************** - * - * Enumeration Method Callback Prototypes - * - ****************************************************************************/ - -/* - * Callback for EnumAddress() - */ -typedef BOOL (FAR PASCAL *LPDPENUMADDRESSCALLBACK)( - REFGUID guidDataType, - DWORD dwDataSize, - LPCVOID lpData, - LPVOID lpContext); - -/* - * Callback for EnumAddressTypes() - */ -typedef BOOL (FAR PASCAL *LPDPLENUMADDRESSTYPESCALLBACK)( - REFGUID guidDataType, - LPVOID lpContext, - DWORD dwFlags); - -/* - * Callback for EnumLocalApplications() - */ -typedef BOOL (FAR PASCAL * LPDPLENUMLOCALAPPLICATIONSCALLBACK)( - LPCDPLAPPINFO lpAppInfo, - LPVOID lpContext, - DWORD dwFlags); - - -/**************************************************************************** - * - * DirectPlayLobby API Prototypes - * - ****************************************************************************/ -#ifdef UNICODE -#define DirectPlayLobbyCreate DirectPlayLobbyCreateW -#else -#define DirectPlayLobbyCreate DirectPlayLobbyCreateA -#endif /* UNICODE */ - -extern HRESULT WINAPI DirectPlayLobbyCreateW(LPGUID, LPDIRECTPLAYLOBBY *, IUnknown *, LPVOID, DWORD ); -extern HRESULT WINAPI DirectPlayLobbyCreateA(LPGUID, LPDIRECTPLAYLOBBYA *, IUnknown *, LPVOID, DWORD ); - - -/**************************************************************************** - * - * IDirectPlayLobby (and IDirectPlayLobbyA) Interface - * - ****************************************************************************/ -#undef INTERFACE -#define INTERFACE IDirectPlayLobby -DECLARE_INTERFACE_( IDirectPlayLobby, IUnknown ) -{ - /* IUnknown Methods */ - STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - /* IDirectPlayLobby Methods */ - STDMETHOD(Connect) (THIS_ DWORD, LPDIRECTPLAY2 *, IUnknown FAR *) PURE; - STDMETHOD(CreateAddress) (THIS_ REFGUID, REFGUID, LPCVOID, DWORD, LPVOID, LPDWORD) PURE; - STDMETHOD(EnumAddress) (THIS_ LPDPENUMADDRESSCALLBACK, LPCVOID, DWORD, LPVOID) PURE; - STDMETHOD(EnumAddressTypes) (THIS_ LPDPLENUMADDRESSTYPESCALLBACK, REFGUID, LPVOID, DWORD) PURE; - STDMETHOD(EnumLocalApplications)(THIS_ LPDPLENUMLOCALAPPLICATIONSCALLBACK, LPVOID, DWORD) PURE; - STDMETHOD(GetConnectionSettings)(THIS_ DWORD, LPVOID, LPDWORD) PURE; - STDMETHOD(ReceiveLobbyMessage) (THIS_ DWORD, DWORD, LPDWORD, LPVOID, LPDWORD) PURE; - STDMETHOD(RunApplication) (THIS_ DWORD, LPDWORD, LPDPLCONNECTION, HANDLE) PURE; - STDMETHOD(SendLobbyMessage) (THIS_ DWORD, DWORD, LPVOID, DWORD) PURE; - STDMETHOD(SetConnectionSettings)(THIS_ DWORD, DWORD, LPDPLCONNECTION) PURE; - STDMETHOD(SetLobbyMessageEvent) (THIS_ DWORD, DWORD, HANDLE) PURE; - -}; - -/**************************************************************************** - * - * IDirectPlayLobby2 (and IDirectPlayLobby2A) Interface - * - ****************************************************************************/ -#undef INTERFACE -#define INTERFACE IDirectPlayLobby2 -DECLARE_INTERFACE_( IDirectPlayLobby2, IDirectPlayLobby ) -{ - /* IUnknown Methods */ - STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - /* IDirectPlayLobby Methods */ - STDMETHOD(Connect) (THIS_ DWORD, LPDIRECTPLAY2 *, IUnknown FAR *) PURE; - STDMETHOD(CreateAddress) (THIS_ REFGUID, REFGUID, LPCVOID, DWORD, LPVOID, LPDWORD) PURE; - STDMETHOD(EnumAddress) (THIS_ LPDPENUMADDRESSCALLBACK, LPCVOID, DWORD, LPVOID) PURE; - STDMETHOD(EnumAddressTypes) (THIS_ LPDPLENUMADDRESSTYPESCALLBACK, REFGUID, LPVOID, DWORD) PURE; - STDMETHOD(EnumLocalApplications)(THIS_ LPDPLENUMLOCALAPPLICATIONSCALLBACK, LPVOID, DWORD) PURE; - STDMETHOD(GetConnectionSettings)(THIS_ DWORD, LPVOID, LPDWORD) PURE; - STDMETHOD(ReceiveLobbyMessage) (THIS_ DWORD, DWORD, LPDWORD, LPVOID, LPDWORD) PURE; - STDMETHOD(RunApplication) (THIS_ DWORD, LPDWORD, LPDPLCONNECTION, HANDLE) PURE; - STDMETHOD(SendLobbyMessage) (THIS_ DWORD, DWORD, LPVOID, DWORD) PURE; - STDMETHOD(SetConnectionSettings)(THIS_ DWORD, DWORD, LPDPLCONNECTION) PURE; - STDMETHOD(SetLobbyMessageEvent) (THIS_ DWORD, DWORD, HANDLE) PURE; - - /* IDirectPlayLobby2 Methods */ - STDMETHOD(CreateCompoundAddress)(THIS_ LPCDPCOMPOUNDADDRESSELEMENT,DWORD,LPVOID,LPDWORD) PURE; -}; - -/**************************************************************************** - * - * IDirectPlayLobby3 (and IDirectPlayLobby3A) Interface - * - ****************************************************************************/ -#undef INTERFACE -#define INTERFACE IDirectPlayLobby3 -DECLARE_INTERFACE_( IDirectPlayLobby3, IDirectPlayLobby ) -{ - /* IUnknown Methods */ - STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - /* IDirectPlayLobby Methods */ - STDMETHOD(Connect) (THIS_ DWORD, LPDIRECTPLAY2 *, IUnknown FAR *) PURE; - STDMETHOD(CreateAddress) (THIS_ REFGUID, REFGUID, LPCVOID, DWORD, LPVOID, LPDWORD) PURE; - STDMETHOD(EnumAddress) (THIS_ LPDPENUMADDRESSCALLBACK, LPCVOID, DWORD, LPVOID) PURE; - STDMETHOD(EnumAddressTypes) (THIS_ LPDPLENUMADDRESSTYPESCALLBACK, REFGUID, LPVOID, DWORD) PURE; - STDMETHOD(EnumLocalApplications)(THIS_ LPDPLENUMLOCALAPPLICATIONSCALLBACK, LPVOID, DWORD) PURE; - STDMETHOD(GetConnectionSettings)(THIS_ DWORD, LPVOID, LPDWORD) PURE; - STDMETHOD(ReceiveLobbyMessage) (THIS_ DWORD, DWORD, LPDWORD, LPVOID, LPDWORD) PURE; - STDMETHOD(RunApplication) (THIS_ DWORD, LPDWORD, LPDPLCONNECTION, HANDLE) PURE; - STDMETHOD(SendLobbyMessage) (THIS_ DWORD, DWORD, LPVOID, DWORD) PURE; - STDMETHOD(SetConnectionSettings)(THIS_ DWORD, DWORD, LPDPLCONNECTION) PURE; - STDMETHOD(SetLobbyMessageEvent) (THIS_ DWORD, DWORD, HANDLE) PURE; - - /* IDirectPlayLobby2 Methods */ - STDMETHOD(CreateCompoundAddress)(THIS_ LPCDPCOMPOUNDADDRESSELEMENT,DWORD,LPVOID,LPDWORD) PURE; - - /* IDirectPlayLobby3 Methods */ - STDMETHOD(ConnectEx) (THIS_ DWORD, REFIID, LPVOID *, IUnknown FAR *) PURE; - STDMETHOD(RegisterApplication) (THIS_ DWORD, LPVOID) PURE; - STDMETHOD(UnregisterApplication)(THIS_ DWORD, REFGUID) PURE; - STDMETHOD(WaitForConnectionSettings)(THIS_ DWORD) PURE; -}; - -/**************************************************************************** - * - * IDirectPlayLobby interface macros - * - ****************************************************************************/ - -#if !defined(__cplusplus) || defined(CINTERFACE) - -#define IDirectPlayLobby_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IDirectPlayLobby_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDirectPlayLobby_Release(p) (p)->lpVtbl->Release(p) -#define IDirectPlayLobby_Connect(p,a,b,c) (p)->lpVtbl->Connect(p,a,b,c) -#define IDirectPlayLobby_ConnectEx(p,a,b,c,d) (p)->lpVtbl->ConnectEx(p,a,b,c,d) -#define IDirectPlayLobby_CreateAddress(p,a,b,c,d,e,f) (p)->lpVtbl->CreateAddress(p,a,b,c,d,e,f) -#define IDirectPlayLobby_CreateCompoundAddress(p,a,b,c,d) (p)->lpVtbl->CreateCompoundAddress(p,a,b,c,d) -#define IDirectPlayLobby_EnumAddress(p,a,b,c,d) (p)->lpVtbl->EnumAddress(p,a,b,c,d) -#define IDirectPlayLobby_EnumAddressTypes(p,a,b,c,d) (p)->lpVtbl->EnumAddressTypes(p,a,b,c,d) -#define IDirectPlayLobby_EnumLocalApplications(p,a,b,c) (p)->lpVtbl->EnumLocalApplications(p,a,b,c) -#define IDirectPlayLobby_GetConnectionSettings(p,a,b,c) (p)->lpVtbl->GetConnectionSettings(p,a,b,c) -#define IDirectPlayLobby_ReceiveLobbyMessage(p,a,b,c,d,e) (p)->lpVtbl->ReceiveLobbyMessage(p,a,b,c,d,e) -#define IDirectPlayLobby_RegisterApplication(p,a,b) (p)->lpVtbl->RegisterApplication(p,a,b) -#define IDirectPlayLobby_RunApplication(p,a,b,c,d) (p)->lpVtbl->RunApplication(p,a,b,c,d) -#define IDirectPlayLobby_SendLobbyMessage(p,a,b,c,d) (p)->lpVtbl->SendLobbyMessage(p,a,b,c,d) -#define IDirectPlayLobby_SetConnectionSettings(p,a,b,c) (p)->lpVtbl->SetConnectionSettings(p,a,b,c) -#define IDirectPlayLobby_SetLobbyMessageEvent(p,a,b,c) (p)->lpVtbl->SetLobbyMessageEvent(p,a,b,c) -#define IDirectPlayLobby_UnregisterApplication(p,a,b) (p)->lpVtbl->UnregisterApplication(p,a,b) -#define IDirectPlayLobby_WaitForConnectionSettings(p,a) (p)->lpVtbl->WaitForConnectionSettings(p,a) - -#else /* C++ */ - -#define IDirectPlayLobby_QueryInterface(p,a,b) (p)->QueryInterface(a,b) -#define IDirectPlayLobby_AddRef(p) (p)->AddRef() -#define IDirectPlayLobby_Release(p) (p)->Release() -#define IDirectPlayLobby_Connect(p,a,b,c) (p)->Connect(a,b,c) -#define IDirectPlayLobby_ConnectEx(p,a,b,c,d) (p)->ConnectEx(a,b,c,d) -#define IDirectPlayLobby_CreateAddress(p,a,b,c,d,e,f) (p)->CreateAddress(a,b,c,d,e,f) -#define IDirectPlayLobby_CreateCompoundAddress(p,a,b,c,d) (p)->CreateCompoundAddress(a,b,c,d) -#define IDirectPlayLobby_EnumAddress(p,a,b,c,d) (p)->EnumAddress(a,b,c,d) -#define IDirectPlayLobby_EnumAddressTypes(p,a,b,c,d) (p)->EnumAddressTypes(a,b,c,d) -#define IDirectPlayLobby_EnumLocalApplications(p,a,b,c) (p)->EnumLocalApplications(a,b,c) -#define IDirectPlayLobby_GetConnectionSettings(p,a,b,c) (p)->GetConnectionSettings(a,b,c) -#define IDirectPlayLobby_ReceiveLobbyMessage(p,a,b,c,d,e) (p)->ReceiveLobbyMessage(a,b,c,d,e) -#define IDirectPlayLobby_RegisterApplication(p,a,b) (p)->RegisterApplication(a,b) -#define IDirectPlayLobby_RunApplication(p,a,b,c,d) (p)->RunApplication(a,b,c,d) -#define IDirectPlayLobby_SendLobbyMessage(p,a,b,c,d) (p)->SendLobbyMessage(a,b,c,d) -#define IDirectPlayLobby_SetConnectionSettings(p,a,b,c) (p)->SetConnectionSettings(a,b,c) -#define IDirectPlayLobby_SetLobbyMessageEvent(p,a,b,c) (p)->SetLobbyMessageEvent(a,b,c) -#define IDirectPlayLobby_UnregisterApplication(p,a,b) (p)->UnregisterApplication(a,b) -#define IDirectPlayLobby_WaitForConnectionSettings(p,a) (p)->WaitForConnectionSettings(a) - -#endif - -/**************************************************************************** - * - * DirectPlayLobby Flags - * - ****************************************************************************/ - -/* - * This flag is used by IDirectPlayLobby->WaitForConnectionSettings to - * cancel a current wait that is in progress. - */ -#define DPLWAIT_CANCEL 0x00000001 - - -/* - * This is a message flag used by ReceiveLobbyMessage. It can be - * returned in the dwMessageFlags parameter to indicate a message from - * the system. - */ -#define DPLMSG_SYSTEM 0x00000001 - -/* - * This is a message flag used by ReceiveLobbyMessage and SendLobbyMessage. - * It is used to indicate that the message is a standard lobby message. - * DPLMSG_SETPROPERTY, DPLMSG_SETPROPERTYRESPONSE, DPLMSG_GETPROPERTY, - * DPLMSG_GETPROPERTYRESPONSE - */ -#define DPLMSG_STANDARD 0x00000002 - -/* - * Lobbyable Application registration flags - */ - -/* - * Applications registered with this flag will not show up when - * applications are enumerated in the lobby. This application - * will only be able to be launched by a lobby client that already - * knows about the application. - */ -#define DPLAPP_NOENUM 0x80000000 - -/* - * Applications registered with this flag want voice to automatically - * be enabled for their application. All players will be launched into - * an 'n'-way voice conference when the application is started. The - * user will be able to enable this flag for existing non-voice - * directplay applications. - */ -#define DPLAPP_AUTOVOICE 0x00000001 - -/* - * Applications that do their own voice conferencing should register with - * this flag to avoid allowing the user to enable other voice chat - * capabilites during the same session. This is to avoid users forcing - * the DPLAPP_AUTOVOICE flag for the application. - */ -#define DPLAPP_SELFVOICE 0x00000002 - -/**************************************************************************** - * - * DirectPlayLobby messages and message data structures - * - * All system messages have a dwMessageFlags value of DPLMSG_SYSTEM returned - * from a call to ReceiveLobbyMessage. - * - * All standard messages have a dwMessageFlags value of DPLMSG_STANDARD returned - * from a call to ReceiveLobbyMessage. - * - ****************************************************************************/ - -/* - * DPLMSG_GENERIC - * Generic message structure used to identify the message type. - */ -typedef struct _DPLMSG_GENERIC -{ - DWORD dwType; // Message type -} DPLMSG_GENERIC, FAR *LPDPLMSG_GENERIC; - -/* - * DPLMSG_SYSTEMMESSAGE - * Generic message format for all system messages -- - * DPLSYS_CONNECTIONSETTINGSREAD, DPLSYS_DPLYCONNECTSUCCEEDED, - * DPLSYS_DPLAYCONNECTFAILED, DPLSYS_APPTERMINATED, DPLSYS_NEWCONNECTIONSETTINGS - */ -typedef struct _DPLMSG_SYSTEMMESSAGE -{ - DWORD dwType; // Message type - GUID guidInstance; // Instance GUID of the dplay session the message corresponds to -} DPLMSG_SYSTEMMESSAGE, FAR *LPDPLMSG_SYSTEMMESSAGE; - -/* - * DPLMSG_SETPROPERTY - * Standard message sent by an application to a lobby to set a - * property - */ -typedef struct _DPLMSG_SETPROPERTY -{ - DWORD dwType; // Message type - DWORD dwRequestID; // Request ID (DPL_NOCONFIRMATION if no confirmation desired) - GUID guidPlayer; // Player GUID - GUID guidPropertyTag; // Property GUID - DWORD dwDataSize; // Size of data - DWORD dwPropertyData[1]; // Buffer containing data -} DPLMSG_SETPROPERTY, FAR *LPDPLMSG_SETPROPERTY; - -#define DPL_NOCONFIRMATION 0 - -/* - * DPLMSG_SETPROPERTYRESPONSE - * Standard message returned by a lobby to confirm a - * DPLMSG_SETPROPERTY message. - */ -typedef struct _DPLMSG_SETPROPERTYRESPONSE -{ - DWORD dwType; // Message type - DWORD dwRequestID; // Request ID - GUID guidPlayer; // Player GUID - GUID guidPropertyTag; // Property GUID - HRESULT hr; // Return Code -} DPLMSG_SETPROPERTYRESPONSE, FAR *LPDPLMSG_SETPROPERTYRESPONSE; - -/* - * DPLMSG_GETPROPERTY - * Standard message sent by an application to a lobby to request - * the current value of a property - */ -typedef struct _DPLMSG_GETPROPERTY -{ - DWORD dwType; // Message type - DWORD dwRequestID; // Request ID - GUID guidPlayer; // Player GUID - GUID guidPropertyTag; // Property GUID -} DPLMSG_GETPROPERTY, FAR *LPDPLMSG_GETPROPERTY; - -/* - * DPLMSG_GETPROPERTYRESPONSE - * Standard message returned by a lobby in response to a - * DPLMSG_GETPROPERTY message. - */ -typedef struct _DPLMSG_GETPROPERTYRESPONSE -{ - DWORD dwType; // Message type - DWORD dwRequestID; // Request ID - GUID guidPlayer; // Player GUID - GUID guidPropertyTag; // Property GUID - HRESULT hr; // Return Code - DWORD dwDataSize; // Size of data - DWORD dwPropertyData[1]; // Buffer containing data -} DPLMSG_GETPROPERTYRESPONSE, FAR *LPDPLMSG_GETPROPERTYRESPONSE; - -/* - * DPLMSG_NEWSESSIONHOST - * Standard message returned by a lobby in response to a - * the session host migrating to a new client - */ -typedef struct _DPLMSG_NEWSESSIONHOST -{ - DWORD dwType; // Message type - GUID guidInstance; // GUID Instance of the session -} DPLMSG_NEWSESSIONHOST, FAR *LPDPLMSG_NEWSESSIONHOST; - - -/****************************************** - * - * DirectPlay Lobby message dwType values - * - *****************************************/ - -/* - * The application has read the connection settings. - * It is now O.K. for the lobby client to release - * its IDirectPlayLobby interface. - */ -#define DPLSYS_CONNECTIONSETTINGSREAD 0x00000001 - -/* - * The application's call to DirectPlayConnect failed - */ -#define DPLSYS_DPLAYCONNECTFAILED 0x00000002 - -/* - * The application has created a DirectPlay session. - */ -#define DPLSYS_DPLAYCONNECTSUCCEEDED 0x00000003 - -/* - * The application has terminated. - */ -#define DPLSYS_APPTERMINATED 0x00000004 - -/* - * The message is a DPLMSG_SETPROPERTY message. - */ -#define DPLSYS_SETPROPERTY 0x00000005 - -/* - * The message is a DPLMSG_SETPROPERTYRESPONSE message. - */ -#define DPLSYS_SETPROPERTYRESPONSE 0x00000006 - -/* - * The message is a DPLMSG_GETPROPERTY message. - */ -#define DPLSYS_GETPROPERTY 0x00000007 - -/* - * The message is a DPLMSG_GETPROPERTYRESPONSE message. - */ -#define DPLSYS_GETPROPERTYRESPONSE 0x00000008 - -/* - * The message is a DPLMSG_NEWSESSIONHOST message. - */ -#define DPLSYS_NEWSESSIONHOST 0x00000009 - -/* - * New connection settings are available. - */ -#define DPLSYS_NEWCONNECTIONSETTINGS 0x0000000A - -/* - * The Lobby Client has released the DirectPlayLobby Interface - */ -#define DPLSYS_LOBBYCLIENTRELEASE 0x0000000B - -/**************************************************************************** - * - * DirectPlay defined property GUIDs and associated data structures - * - ****************************************************************************/ - -/* - * DPLPROPERTY_MessagesSupported - * - * Request whether the lobby supports standard. Lobby with respond with either - * TRUE or FALSE or may not respond at all. - * - * Property data is a single BOOL with TRUE or FALSE - */ -// {762CCDA1-D916-11d0-BA39-00C04FD7ED67} -DEFINE_GUID(DPLPROPERTY_MessagesSupported, -0x762ccda1, 0xd916, 0x11d0, 0xba, 0x39, 0x0, 0xc0, 0x4f, 0xd7, 0xed, 0x67); - -/* - * DPLPROPERTY_LobbyGuid - * - * Request the GUID that identifies the lobby software that the application - * is communicating with. - * - * Property data is a single GUID. - */ -// {F56920A0-D218-11d0-BA39-00C04FD7ED67} -DEFINE_GUID(DPLPROPERTY_LobbyGuid, -0xf56920a0, 0xd218, 0x11d0, 0xba, 0x39, 0x0, 0xc0, 0x4f, 0xd7, 0xed, 0x67); - -/* - * DPLPROPERTY_PlayerGuid - * - * Request the GUID that identifies the player on this machine for sending - * property data back to the lobby. - * - * Property data is the DPLDATA_PLAYERDATA structure - */ -// {B4319322-D20D-11d0-BA39-00C04FD7ED67} -DEFINE_GUID(DPLPROPERTY_PlayerGuid, -0xb4319322, 0xd20d, 0x11d0, 0xba, 0x39, 0x0, 0xc0, 0x4f, 0xd7, 0xed, 0x67); - -/* - * DPLDATA_PLAYERGUID - * - * Data structure to hold the GUID of the player and player creation flags - * from the lobby. - */ -typedef struct _DPLDATA_PLAYERGUID -{ - GUID guidPlayer; - DWORD dwPlayerFlags; -} DPLDATA_PLAYERGUID, FAR *LPDPLDATA_PLAYERGUID; - -/* - * DPLPROPERTY_PlayerScore - * - * Used to send an array of long integers to the lobby indicating the - * score of a player. - * - * Property data is the DPLDATA_PLAYERSCORE structure. - */ -// {48784000-D219-11d0-BA39-00C04FD7ED67} -DEFINE_GUID(DPLPROPERTY_PlayerScore, -0x48784000, 0xd219, 0x11d0, 0xba, 0x39, 0x0, 0xc0, 0x4f, 0xd7, 0xed, 0x67); - -/* - * DPLDATA_PLAYERSCORE - * - * Data structure to hold an array of long integers representing a player score. - * Application must allocate enough memory to hold all the scores. - */ -typedef struct _DPLDATA_PLAYERSCORE -{ - DWORD dwScoreCount; - LONG Score[1]; -} DPLDATA_PLAYERSCORE, FAR *LPDPLDATA_PLAYERSCORE; - -/**************************************************************************** - * - * DirectPlay Address ID's - * - ****************************************************************************/ - -/* DirectPlay Address - * - * A DirectPlay address consists of multiple chunks of data, each tagged - * with a GUID signifying the type of data in the chunk. The chunk also - * has a length so that unknown chunk types can be skipped. - * - * The EnumAddress() function is used to parse these address data chunks. - */ - -/* - * DPADDRESS - * - * Header for block of address data elements - */ -typedef struct _DPADDRESS -{ - GUID guidDataType; - DWORD dwDataSize; -} DPADDRESS; - -typedef DPADDRESS FAR *LPDPADDRESS; - -/* - * DPAID_TotalSize - * - * Chunk is a DWORD containing size of entire DPADDRESS structure - */ - -// {1318F560-912C-11d0-9DAA-00A0C90A43CB} -DEFINE_GUID(DPAID_TotalSize, -0x1318f560, 0x912c, 0x11d0, 0x9d, 0xaa, 0x0, 0xa0, 0xc9, 0xa, 0x43, 0xcb); - -/* - * DPAID_ServiceProvider - * - * Chunk is a GUID describing the service provider that created the chunk. - * All addresses must contain this chunk. - */ - -// {07D916C0-E0AF-11cf-9C4E-00A0C905425E} -DEFINE_GUID(DPAID_ServiceProvider, -0x7d916c0, 0xe0af, 0x11cf, 0x9c, 0x4e, 0x0, 0xa0, 0xc9, 0x5, 0x42, 0x5e); - -/* - * DPAID_LobbyProvider - * - * Chunk is a GUID describing the lobby provider that created the chunk. - * All addresses must contain this chunk. - */ - -// {59B95640-9667-11d0-A77D-0000F803ABFC} -DEFINE_GUID(DPAID_LobbyProvider, -0x59b95640, 0x9667, 0x11d0, 0xa7, 0x7d, 0x0, 0x0, 0xf8, 0x3, 0xab, 0xfc); - -/* - * DPAID_Phone and DPAID_PhoneW - * - * Chunk is a string containing a phone number (i.e. "1-800-555-1212") - * in ANSI or UNICODE format - */ - -// {78EC89A0-E0AF-11cf-9C4E-00A0C905425E} -DEFINE_GUID(DPAID_Phone, -0x78ec89a0, 0xe0af, 0x11cf, 0x9c, 0x4e, 0x0, 0xa0, 0xc9, 0x5, 0x42, 0x5e); - -// {BA5A7A70-9DBF-11d0-9CC1-00A0C905425E} -DEFINE_GUID(DPAID_PhoneW, -0xba5a7a70, 0x9dbf, 0x11d0, 0x9c, 0xc1, 0x0, 0xa0, 0xc9, 0x5, 0x42, 0x5e); - -/* - * DPAID_Modem and DPAID_ModemW - * - * Chunk is a string containing a modem name registered with TAPI - * in ANSI or UNICODE format - */ - -// {F6DCC200-A2FE-11d0-9C4F-00A0C905425E} -DEFINE_GUID(DPAID_Modem, -0xf6dcc200, 0xa2fe, 0x11d0, 0x9c, 0x4f, 0x0, 0xa0, 0xc9, 0x5, 0x42, 0x5e); - -// {01FD92E0-A2FF-11d0-9C4F-00A0C905425E} -DEFINE_GUID(DPAID_ModemW, -0x1fd92e0, 0xa2ff, 0x11d0, 0x9c, 0x4f, 0x0, 0xa0, 0xc9, 0x5, 0x42, 0x5e); - -/* - * DPAID_Inet and DPAID_InetW - * - * Chunk is a string containing a TCP/IP host name or an IP address - * (i.e. "dplay.microsoft.com" or "137.55.100.173") in ANSI or UNICODE format - */ - -// {C4A54DA0-E0AF-11cf-9C4E-00A0C905425E} -DEFINE_GUID(DPAID_INet, -0xc4a54da0, 0xe0af, 0x11cf, 0x9c, 0x4e, 0x0, 0xa0, 0xc9, 0x5, 0x42, 0x5e); - -// {E63232A0-9DBF-11d0-9CC1-00A0C905425E} -DEFINE_GUID(DPAID_INetW, -0xe63232a0, 0x9dbf, 0x11d0, 0x9c, 0xc1, 0x0, 0xa0, 0xc9, 0x5, 0x42, 0x5e); - -/* - * DPAID_InetPort - * - * Chunk is the port number used for creating the apps TCP and UDP sockets. - * WORD value (i.e. 47624). - */ - -// {E4524541-8EA5-11d1-8A96-006097B01411} -DEFINE_GUID(DPAID_INetPort, -0xe4524541, 0x8ea5, 0x11d1, 0x8a, 0x96, 0x0, 0x60, 0x97, 0xb0, 0x14, 0x11); - -#ifdef BIGMESSAGEDEFENSE -#endif - -/* - * DPCOMPORTADDRESS - * - * Used to specify com port settings. The constants that define baud rate, - * stop bits and parity are defined in WINBASE.H. The constants for flow - * control are given below. - */ - -#define DPCPA_NOFLOW 0 // no flow control -#define DPCPA_XONXOFFFLOW 1 // software flow control -#define DPCPA_RTSFLOW 2 // hardware flow control with RTS -#define DPCPA_DTRFLOW 3 // hardware flow control with DTR -#define DPCPA_RTSDTRFLOW 4 // hardware flow control with RTS and DTR - -typedef struct _DPCOMPORTADDRESS -{ - DWORD dwComPort; // COM port to use (1-4) - DWORD dwBaudRate; // baud rate (100-256k) - DWORD dwStopBits; // no. stop bits (1-2) - DWORD dwParity; // parity (none, odd, even, mark) - DWORD dwFlowControl; // flow control (none, xon/xoff, rts, dtr) -} DPCOMPORTADDRESS; - -typedef DPCOMPORTADDRESS FAR *LPDPCOMPORTADDRESS; - -/* - * DPAID_ComPort - * - * Chunk contains a DPCOMPORTADDRESS structure defining the serial port. - */ - -// {F2F0CE00-E0AF-11cf-9C4E-00A0C905425E} -DEFINE_GUID(DPAID_ComPort, -0xf2f0ce00, 0xe0af, 0x11cf, 0x9c, 0x4e, 0x0, 0xa0, 0xc9, 0x5, 0x42, 0x5e); - -/**************************************************************************** - * - * dplobby 1.0 obsolete definitions - * Included for compatibility only. - * - ****************************************************************************/ -#define DPLAD_SYSTEM DPLMSG_SYSTEM - - -#ifdef __cplusplus -}; -#endif /* __cplusplus */ - -#pragma warning(default:4201) - -#endif /* __DPLOBBY_INCLUDED__ */ - +/*==========================================================================; + * + * Copyright (C) 1996-1997 Microsoft Corporation. All Rights Reserved. + * + * File: dplobby.h + * Content: DirectPlayLobby include file + ***************************************************************************/ +#ifndef __DPLOBBY_INCLUDED__ +#define __DPLOBBY_INCLUDED__ + +#include "dplay.h" + +/* avoid warnings at Level 4 */ +#pragma warning(disable:4201) + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/* + * GUIDS used by DirectPlay objects + */ + +/* {AF465C71-9588-11cf-A020-00AA006157AC} */ +DEFINE_GUID(IID_IDirectPlayLobby, 0xaf465c71, 0x9588, 0x11cf, 0xa0, 0x20, 0x0, 0xaa, 0x0, 0x61, 0x57, 0xac); +/* {26C66A70-B367-11cf-A024-00AA006157AC} */ +DEFINE_GUID(IID_IDirectPlayLobbyA, 0x26c66a70, 0xb367, 0x11cf, 0xa0, 0x24, 0x0, 0xaa, 0x0, 0x61, 0x57, 0xac); +/* {0194C220-A303-11d0-9C4F-00A0C905425E} */ +DEFINE_GUID(IID_IDirectPlayLobby2, 0x194c220, 0xa303, 0x11d0, 0x9c, 0x4f, 0x0, 0xa0, 0xc9, 0x5, 0x42, 0x5e); +/* {1BB4AF80-A303-11d0-9C4F-00A0C905425E} */ +DEFINE_GUID(IID_IDirectPlayLobby2A, 0x1bb4af80, 0xa303, 0x11d0, 0x9c, 0x4f, 0x0, 0xa0, 0xc9, 0x5, 0x42, 0x5e); +/* {2DB72490-652C-11d1-A7A8-0000F803ABFC} */ +DEFINE_GUID(IID_IDirectPlayLobby3, 0x2db72490, 0x652c, 0x11d1, 0xa7, 0xa8, 0x0, 0x0, 0xf8, 0x3, 0xab, 0xfc); +/* {2DB72491-652C-11d1-A7A8-0000F803ABFC} */ +DEFINE_GUID(IID_IDirectPlayLobby3A, 0x2db72491, 0x652c, 0x11d1, 0xa7, 0xa8, 0x0, 0x0, 0xf8, 0x3, 0xab, 0xfc); +/* {2FE8F810-B2A5-11d0-A787-0000F803ABFC} */ +DEFINE_GUID(CLSID_DirectPlayLobby, 0x2fe8f810, 0xb2a5, 0x11d0, 0xa7, 0x87, 0x0, 0x0, 0xf8, 0x3, 0xab, 0xfc); + + +/**************************************************************************** + * + * IDirectPlayLobby Structures + * + * Various structures used to invoke DirectPlayLobby. + * + ****************************************************************************/ + +typedef struct IDirectPlayLobby FAR *LPDIRECTPLAYLOBBY; +typedef struct IDirectPlayLobby FAR *LPDIRECTPLAYLOBBYA; +typedef struct IDirectPlayLobby IDirectPlayLobbyA; + +typedef struct IDirectPlayLobby2 FAR *LPDIRECTPLAYLOBBY2; +typedef struct IDirectPlayLobby2 FAR *LPDIRECTPLAYLOBBY2A; +typedef struct IDirectPlayLobby2 IDirectPlayLobby2A; + +typedef struct IDirectPlayLobby3 FAR *LPDIRECTPLAYLOBBY3; +typedef struct IDirectPlayLobby3 FAR *LPDIRECTPLAYLOBBY3A; +typedef struct IDirectPlayLobby3 IDirectPlayLobby3A; + + +/* + * DPLAPPINFO + * Used to hold information about a registered DirectPlay + * application + */ +typedef struct DPLAPPINFO +{ + DWORD dwSize; // Size of this structure + GUID guidApplication; // GUID of the Application + union + { + LPSTR lpszAppNameA; // Pointer to the Application Name + LPWSTR lpszAppName; + }; + +} DPLAPPINFO, FAR *LPDPLAPPINFO; + +/* + * LPCDPLAPPINFO + * A constant pointer to DPLAPPINFO + */ +typedef const DPLAPPINFO FAR *LPCDPLAPPINFO; + +/* + * DPCOMPOUNDADDRESSELEMENT + * + * An array of these is passed to CreateCompoundAddresses() + */ +typedef struct DPCOMPOUNDADDRESSELEMENT +{ + GUID guidDataType; + DWORD dwDataSize; + LPVOID lpData; +} DPCOMPOUNDADDRESSELEMENT, FAR *LPDPCOMPOUNDADDRESSELEMENT; + +/* + * LPCDPCOMPOUNDADDRESSELEMENT + * A constant pointer to DPCOMPOUNDADDRESSELEMENT + */ +typedef const DPCOMPOUNDADDRESSELEMENT FAR *LPCDPCOMPOUNDADDRESSELEMENT; + +/* + * LPDPAPPLICATIONDESC + * Used to register a DirectPlay application + */ +typedef struct DPAPPLICATIONDESC +{ + DWORD dwSize; + DWORD dwFlags; + union + { + LPSTR lpszApplicationNameA; + LPWSTR lpszApplicationName; + }; + GUID guidApplication; + union + { + LPSTR lpszFilenameA; + LPWSTR lpszFilename; + }; + union + { + LPSTR lpszCommandLineA; + LPWSTR lpszCommandLine; + }; + union + { + LPSTR lpszPathA; + LPWSTR lpszPath; + }; + union + { + LPSTR lpszCurrentDirectoryA; + LPWSTR lpszCurrentDirectory; + }; + LPSTR lpszDescriptionA; + LPWSTR lpszDescriptionW; +} DPAPPLICATIONDESC, *LPDPAPPLICATIONDESC; + +/* + * LPDPAPPLICATIONDESC2 + * Used to register a DirectPlay application + */ +typedef struct DPAPPLICATIONDESC2 +{ + DWORD dwSize; + DWORD dwFlags; + union + { + LPSTR lpszApplicationNameA; + LPWSTR lpszApplicationName; + }; + GUID guidApplication; + union + { + LPSTR lpszFilenameA; + LPWSTR lpszFilename; + }; + union + { + LPSTR lpszCommandLineA; + LPWSTR lpszCommandLine; + }; + union + { + LPSTR lpszPathA; + LPWSTR lpszPath; + }; + union + { + LPSTR lpszCurrentDirectoryA; + LPWSTR lpszCurrentDirectory; + }; + LPSTR lpszDescriptionA; + LPWSTR lpszDescriptionW; + union + { + LPSTR lpszAppLauncherNameA; + LPWSTR lpszAppLauncherName; + }; +} DPAPPLICATIONDESC2, *LPDPAPPLICATIONDESC2; + + +/**************************************************************************** + * + * Enumeration Method Callback Prototypes + * + ****************************************************************************/ + +/* + * Callback for EnumAddress() + */ +typedef BOOL (FAR PASCAL *LPDPENUMADDRESSCALLBACK)( + REFGUID guidDataType, + DWORD dwDataSize, + LPCVOID lpData, + LPVOID lpContext); + +/* + * Callback for EnumAddressTypes() + */ +typedef BOOL (FAR PASCAL *LPDPLENUMADDRESSTYPESCALLBACK)( + REFGUID guidDataType, + LPVOID lpContext, + DWORD dwFlags); + +/* + * Callback for EnumLocalApplications() + */ +typedef BOOL (FAR PASCAL * LPDPLENUMLOCALAPPLICATIONSCALLBACK)( + LPCDPLAPPINFO lpAppInfo, + LPVOID lpContext, + DWORD dwFlags); + + +/**************************************************************************** + * + * DirectPlayLobby API Prototypes + * + ****************************************************************************/ +#ifdef UNICODE +#define DirectPlayLobbyCreate DirectPlayLobbyCreateW +#else +#define DirectPlayLobbyCreate DirectPlayLobbyCreateA +#endif /* UNICODE */ + +extern HRESULT WINAPI DirectPlayLobbyCreateW(LPGUID, LPDIRECTPLAYLOBBY *, IUnknown *, LPVOID, DWORD ); +extern HRESULT WINAPI DirectPlayLobbyCreateA(LPGUID, LPDIRECTPLAYLOBBYA *, IUnknown *, LPVOID, DWORD ); + + +/**************************************************************************** + * + * IDirectPlayLobby (and IDirectPlayLobbyA) Interface + * + ****************************************************************************/ +#undef INTERFACE +#define INTERFACE IDirectPlayLobby +DECLARE_INTERFACE_( IDirectPlayLobby, IUnknown ) +{ + /* IUnknown Methods */ + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + /* IDirectPlayLobby Methods */ + STDMETHOD(Connect) (THIS_ DWORD, LPDIRECTPLAY2 *, IUnknown FAR *) PURE; + STDMETHOD(CreateAddress) (THIS_ REFGUID, REFGUID, LPCVOID, DWORD, LPVOID, LPDWORD) PURE; + STDMETHOD(EnumAddress) (THIS_ LPDPENUMADDRESSCALLBACK, LPCVOID, DWORD, LPVOID) PURE; + STDMETHOD(EnumAddressTypes) (THIS_ LPDPLENUMADDRESSTYPESCALLBACK, REFGUID, LPVOID, DWORD) PURE; + STDMETHOD(EnumLocalApplications)(THIS_ LPDPLENUMLOCALAPPLICATIONSCALLBACK, LPVOID, DWORD) PURE; + STDMETHOD(GetConnectionSettings)(THIS_ DWORD, LPVOID, LPDWORD) PURE; + STDMETHOD(ReceiveLobbyMessage) (THIS_ DWORD, DWORD, LPDWORD, LPVOID, LPDWORD) PURE; + STDMETHOD(RunApplication) (THIS_ DWORD, LPDWORD, LPDPLCONNECTION, HANDLE) PURE; + STDMETHOD(SendLobbyMessage) (THIS_ DWORD, DWORD, LPVOID, DWORD) PURE; + STDMETHOD(SetConnectionSettings)(THIS_ DWORD, DWORD, LPDPLCONNECTION) PURE; + STDMETHOD(SetLobbyMessageEvent) (THIS_ DWORD, DWORD, HANDLE) PURE; + +}; + +/**************************************************************************** + * + * IDirectPlayLobby2 (and IDirectPlayLobby2A) Interface + * + ****************************************************************************/ +#undef INTERFACE +#define INTERFACE IDirectPlayLobby2 +DECLARE_INTERFACE_( IDirectPlayLobby2, IDirectPlayLobby ) +{ + /* IUnknown Methods */ + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + /* IDirectPlayLobby Methods */ + STDMETHOD(Connect) (THIS_ DWORD, LPDIRECTPLAY2 *, IUnknown FAR *) PURE; + STDMETHOD(CreateAddress) (THIS_ REFGUID, REFGUID, LPCVOID, DWORD, LPVOID, LPDWORD) PURE; + STDMETHOD(EnumAddress) (THIS_ LPDPENUMADDRESSCALLBACK, LPCVOID, DWORD, LPVOID) PURE; + STDMETHOD(EnumAddressTypes) (THIS_ LPDPLENUMADDRESSTYPESCALLBACK, REFGUID, LPVOID, DWORD) PURE; + STDMETHOD(EnumLocalApplications)(THIS_ LPDPLENUMLOCALAPPLICATIONSCALLBACK, LPVOID, DWORD) PURE; + STDMETHOD(GetConnectionSettings)(THIS_ DWORD, LPVOID, LPDWORD) PURE; + STDMETHOD(ReceiveLobbyMessage) (THIS_ DWORD, DWORD, LPDWORD, LPVOID, LPDWORD) PURE; + STDMETHOD(RunApplication) (THIS_ DWORD, LPDWORD, LPDPLCONNECTION, HANDLE) PURE; + STDMETHOD(SendLobbyMessage) (THIS_ DWORD, DWORD, LPVOID, DWORD) PURE; + STDMETHOD(SetConnectionSettings)(THIS_ DWORD, DWORD, LPDPLCONNECTION) PURE; + STDMETHOD(SetLobbyMessageEvent) (THIS_ DWORD, DWORD, HANDLE) PURE; + + /* IDirectPlayLobby2 Methods */ + STDMETHOD(CreateCompoundAddress)(THIS_ LPCDPCOMPOUNDADDRESSELEMENT,DWORD,LPVOID,LPDWORD) PURE; +}; + +/**************************************************************************** + * + * IDirectPlayLobby3 (and IDirectPlayLobby3A) Interface + * + ****************************************************************************/ +#undef INTERFACE +#define INTERFACE IDirectPlayLobby3 +DECLARE_INTERFACE_( IDirectPlayLobby3, IDirectPlayLobby ) +{ + /* IUnknown Methods */ + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + /* IDirectPlayLobby Methods */ + STDMETHOD(Connect) (THIS_ DWORD, LPDIRECTPLAY2 *, IUnknown FAR *) PURE; + STDMETHOD(CreateAddress) (THIS_ REFGUID, REFGUID, LPCVOID, DWORD, LPVOID, LPDWORD) PURE; + STDMETHOD(EnumAddress) (THIS_ LPDPENUMADDRESSCALLBACK, LPCVOID, DWORD, LPVOID) PURE; + STDMETHOD(EnumAddressTypes) (THIS_ LPDPLENUMADDRESSTYPESCALLBACK, REFGUID, LPVOID, DWORD) PURE; + STDMETHOD(EnumLocalApplications)(THIS_ LPDPLENUMLOCALAPPLICATIONSCALLBACK, LPVOID, DWORD) PURE; + STDMETHOD(GetConnectionSettings)(THIS_ DWORD, LPVOID, LPDWORD) PURE; + STDMETHOD(ReceiveLobbyMessage) (THIS_ DWORD, DWORD, LPDWORD, LPVOID, LPDWORD) PURE; + STDMETHOD(RunApplication) (THIS_ DWORD, LPDWORD, LPDPLCONNECTION, HANDLE) PURE; + STDMETHOD(SendLobbyMessage) (THIS_ DWORD, DWORD, LPVOID, DWORD) PURE; + STDMETHOD(SetConnectionSettings)(THIS_ DWORD, DWORD, LPDPLCONNECTION) PURE; + STDMETHOD(SetLobbyMessageEvent) (THIS_ DWORD, DWORD, HANDLE) PURE; + + /* IDirectPlayLobby2 Methods */ + STDMETHOD(CreateCompoundAddress)(THIS_ LPCDPCOMPOUNDADDRESSELEMENT,DWORD,LPVOID,LPDWORD) PURE; + + /* IDirectPlayLobby3 Methods */ + STDMETHOD(ConnectEx) (THIS_ DWORD, REFIID, LPVOID *, IUnknown FAR *) PURE; + STDMETHOD(RegisterApplication) (THIS_ DWORD, LPVOID) PURE; + STDMETHOD(UnregisterApplication)(THIS_ DWORD, REFGUID) PURE; + STDMETHOD(WaitForConnectionSettings)(THIS_ DWORD) PURE; +}; + +/**************************************************************************** + * + * IDirectPlayLobby interface macros + * + ****************************************************************************/ + +#if !defined(__cplusplus) || defined(CINTERFACE) + +#define IDirectPlayLobby_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDirectPlayLobby_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectPlayLobby_Release(p) (p)->lpVtbl->Release(p) +#define IDirectPlayLobby_Connect(p,a,b,c) (p)->lpVtbl->Connect(p,a,b,c) +#define IDirectPlayLobby_ConnectEx(p,a,b,c,d) (p)->lpVtbl->ConnectEx(p,a,b,c,d) +#define IDirectPlayLobby_CreateAddress(p,a,b,c,d,e,f) (p)->lpVtbl->CreateAddress(p,a,b,c,d,e,f) +#define IDirectPlayLobby_CreateCompoundAddress(p,a,b,c,d) (p)->lpVtbl->CreateCompoundAddress(p,a,b,c,d) +#define IDirectPlayLobby_EnumAddress(p,a,b,c,d) (p)->lpVtbl->EnumAddress(p,a,b,c,d) +#define IDirectPlayLobby_EnumAddressTypes(p,a,b,c,d) (p)->lpVtbl->EnumAddressTypes(p,a,b,c,d) +#define IDirectPlayLobby_EnumLocalApplications(p,a,b,c) (p)->lpVtbl->EnumLocalApplications(p,a,b,c) +#define IDirectPlayLobby_GetConnectionSettings(p,a,b,c) (p)->lpVtbl->GetConnectionSettings(p,a,b,c) +#define IDirectPlayLobby_ReceiveLobbyMessage(p,a,b,c,d,e) (p)->lpVtbl->ReceiveLobbyMessage(p,a,b,c,d,e) +#define IDirectPlayLobby_RegisterApplication(p,a,b) (p)->lpVtbl->RegisterApplication(p,a,b) +#define IDirectPlayLobby_RunApplication(p,a,b,c,d) (p)->lpVtbl->RunApplication(p,a,b,c,d) +#define IDirectPlayLobby_SendLobbyMessage(p,a,b,c,d) (p)->lpVtbl->SendLobbyMessage(p,a,b,c,d) +#define IDirectPlayLobby_SetConnectionSettings(p,a,b,c) (p)->lpVtbl->SetConnectionSettings(p,a,b,c) +#define IDirectPlayLobby_SetLobbyMessageEvent(p,a,b,c) (p)->lpVtbl->SetLobbyMessageEvent(p,a,b,c) +#define IDirectPlayLobby_UnregisterApplication(p,a,b) (p)->lpVtbl->UnregisterApplication(p,a,b) +#define IDirectPlayLobby_WaitForConnectionSettings(p,a) (p)->lpVtbl->WaitForConnectionSettings(p,a) + +#else /* C++ */ + +#define IDirectPlayLobby_QueryInterface(p,a,b) (p)->QueryInterface(a,b) +#define IDirectPlayLobby_AddRef(p) (p)->AddRef() +#define IDirectPlayLobby_Release(p) (p)->Release() +#define IDirectPlayLobby_Connect(p,a,b,c) (p)->Connect(a,b,c) +#define IDirectPlayLobby_ConnectEx(p,a,b,c,d) (p)->ConnectEx(a,b,c,d) +#define IDirectPlayLobby_CreateAddress(p,a,b,c,d,e,f) (p)->CreateAddress(a,b,c,d,e,f) +#define IDirectPlayLobby_CreateCompoundAddress(p,a,b,c,d) (p)->CreateCompoundAddress(a,b,c,d) +#define IDirectPlayLobby_EnumAddress(p,a,b,c,d) (p)->EnumAddress(a,b,c,d) +#define IDirectPlayLobby_EnumAddressTypes(p,a,b,c,d) (p)->EnumAddressTypes(a,b,c,d) +#define IDirectPlayLobby_EnumLocalApplications(p,a,b,c) (p)->EnumLocalApplications(a,b,c) +#define IDirectPlayLobby_GetConnectionSettings(p,a,b,c) (p)->GetConnectionSettings(a,b,c) +#define IDirectPlayLobby_ReceiveLobbyMessage(p,a,b,c,d,e) (p)->ReceiveLobbyMessage(a,b,c,d,e) +#define IDirectPlayLobby_RegisterApplication(p,a,b) (p)->RegisterApplication(a,b) +#define IDirectPlayLobby_RunApplication(p,a,b,c,d) (p)->RunApplication(a,b,c,d) +#define IDirectPlayLobby_SendLobbyMessage(p,a,b,c,d) (p)->SendLobbyMessage(a,b,c,d) +#define IDirectPlayLobby_SetConnectionSettings(p,a,b,c) (p)->SetConnectionSettings(a,b,c) +#define IDirectPlayLobby_SetLobbyMessageEvent(p,a,b,c) (p)->SetLobbyMessageEvent(a,b,c) +#define IDirectPlayLobby_UnregisterApplication(p,a,b) (p)->UnregisterApplication(a,b) +#define IDirectPlayLobby_WaitForConnectionSettings(p,a) (p)->WaitForConnectionSettings(a) + +#endif + +/**************************************************************************** + * + * DirectPlayLobby Flags + * + ****************************************************************************/ + +/* + * This flag is used by IDirectPlayLobby->WaitForConnectionSettings to + * cancel a current wait that is in progress. + */ +#define DPLWAIT_CANCEL 0x00000001 + + +/* + * This is a message flag used by ReceiveLobbyMessage. It can be + * returned in the dwMessageFlags parameter to indicate a message from + * the system. + */ +#define DPLMSG_SYSTEM 0x00000001 + +/* + * This is a message flag used by ReceiveLobbyMessage and SendLobbyMessage. + * It is used to indicate that the message is a standard lobby message. + * DPLMSG_SETPROPERTY, DPLMSG_SETPROPERTYRESPONSE, DPLMSG_GETPROPERTY, + * DPLMSG_GETPROPERTYRESPONSE + */ +#define DPLMSG_STANDARD 0x00000002 + +/* + * Lobbyable Application registration flags + */ + +/* + * Applications registered with this flag will not show up when + * applications are enumerated in the lobby. This application + * will only be able to be launched by a lobby client that already + * knows about the application. + */ +#define DPLAPP_NOENUM 0x80000000 + +/* + * Applications registered with this flag want voice to automatically + * be enabled for their application. All players will be launched into + * an 'n'-way voice conference when the application is started. The + * user will be able to enable this flag for existing non-voice + * directplay applications. + */ +#define DPLAPP_AUTOVOICE 0x00000001 + +/* + * Applications that do their own voice conferencing should register with + * this flag to avoid allowing the user to enable other voice chat + * capabilites during the same session. This is to avoid users forcing + * the DPLAPP_AUTOVOICE flag for the application. + */ +#define DPLAPP_SELFVOICE 0x00000002 + +/**************************************************************************** + * + * DirectPlayLobby messages and message data structures + * + * All system messages have a dwMessageFlags value of DPLMSG_SYSTEM returned + * from a call to ReceiveLobbyMessage. + * + * All standard messages have a dwMessageFlags value of DPLMSG_STANDARD returned + * from a call to ReceiveLobbyMessage. + * + ****************************************************************************/ + +/* + * DPLMSG_GENERIC + * Generic message structure used to identify the message type. + */ +typedef struct _DPLMSG_GENERIC +{ + DWORD dwType; // Message type +} DPLMSG_GENERIC, FAR *LPDPLMSG_GENERIC; + +/* + * DPLMSG_SYSTEMMESSAGE + * Generic message format for all system messages -- + * DPLSYS_CONNECTIONSETTINGSREAD, DPLSYS_DPLYCONNECTSUCCEEDED, + * DPLSYS_DPLAYCONNECTFAILED, DPLSYS_APPTERMINATED, DPLSYS_NEWCONNECTIONSETTINGS + */ +typedef struct _DPLMSG_SYSTEMMESSAGE +{ + DWORD dwType; // Message type + GUID guidInstance; // Instance GUID of the dplay session the message corresponds to +} DPLMSG_SYSTEMMESSAGE, FAR *LPDPLMSG_SYSTEMMESSAGE; + +/* + * DPLMSG_SETPROPERTY + * Standard message sent by an application to a lobby to set a + * property + */ +typedef struct _DPLMSG_SETPROPERTY +{ + DWORD dwType; // Message type + DWORD dwRequestID; // Request ID (DPL_NOCONFIRMATION if no confirmation desired) + GUID guidPlayer; // Player GUID + GUID guidPropertyTag; // Property GUID + DWORD dwDataSize; // Size of data + DWORD dwPropertyData[1]; // Buffer containing data +} DPLMSG_SETPROPERTY, FAR *LPDPLMSG_SETPROPERTY; + +#define DPL_NOCONFIRMATION 0 + +/* + * DPLMSG_SETPROPERTYRESPONSE + * Standard message returned by a lobby to confirm a + * DPLMSG_SETPROPERTY message. + */ +typedef struct _DPLMSG_SETPROPERTYRESPONSE +{ + DWORD dwType; // Message type + DWORD dwRequestID; // Request ID + GUID guidPlayer; // Player GUID + GUID guidPropertyTag; // Property GUID + HRESULT hr; // Return Code +} DPLMSG_SETPROPERTYRESPONSE, FAR *LPDPLMSG_SETPROPERTYRESPONSE; + +/* + * DPLMSG_GETPROPERTY + * Standard message sent by an application to a lobby to request + * the current value of a property + */ +typedef struct _DPLMSG_GETPROPERTY +{ + DWORD dwType; // Message type + DWORD dwRequestID; // Request ID + GUID guidPlayer; // Player GUID + GUID guidPropertyTag; // Property GUID +} DPLMSG_GETPROPERTY, FAR *LPDPLMSG_GETPROPERTY; + +/* + * DPLMSG_GETPROPERTYRESPONSE + * Standard message returned by a lobby in response to a + * DPLMSG_GETPROPERTY message. + */ +typedef struct _DPLMSG_GETPROPERTYRESPONSE +{ + DWORD dwType; // Message type + DWORD dwRequestID; // Request ID + GUID guidPlayer; // Player GUID + GUID guidPropertyTag; // Property GUID + HRESULT hr; // Return Code + DWORD dwDataSize; // Size of data + DWORD dwPropertyData[1]; // Buffer containing data +} DPLMSG_GETPROPERTYRESPONSE, FAR *LPDPLMSG_GETPROPERTYRESPONSE; + +/* + * DPLMSG_NEWSESSIONHOST + * Standard message returned by a lobby in response to a + * the session host migrating to a new client + */ +typedef struct _DPLMSG_NEWSESSIONHOST +{ + DWORD dwType; // Message type + GUID guidInstance; // GUID Instance of the session +} DPLMSG_NEWSESSIONHOST, FAR *LPDPLMSG_NEWSESSIONHOST; + + +/****************************************** + * + * DirectPlay Lobby message dwType values + * + *****************************************/ + +/* + * The application has read the connection settings. + * It is now O.K. for the lobby client to release + * its IDirectPlayLobby interface. + */ +#define DPLSYS_CONNECTIONSETTINGSREAD 0x00000001 + +/* + * The application's call to DirectPlayConnect failed + */ +#define DPLSYS_DPLAYCONNECTFAILED 0x00000002 + +/* + * The application has created a DirectPlay session. + */ +#define DPLSYS_DPLAYCONNECTSUCCEEDED 0x00000003 + +/* + * The application has terminated. + */ +#define DPLSYS_APPTERMINATED 0x00000004 + +/* + * The message is a DPLMSG_SETPROPERTY message. + */ +#define DPLSYS_SETPROPERTY 0x00000005 + +/* + * The message is a DPLMSG_SETPROPERTYRESPONSE message. + */ +#define DPLSYS_SETPROPERTYRESPONSE 0x00000006 + +/* + * The message is a DPLMSG_GETPROPERTY message. + */ +#define DPLSYS_GETPROPERTY 0x00000007 + +/* + * The message is a DPLMSG_GETPROPERTYRESPONSE message. + */ +#define DPLSYS_GETPROPERTYRESPONSE 0x00000008 + +/* + * The message is a DPLMSG_NEWSESSIONHOST message. + */ +#define DPLSYS_NEWSESSIONHOST 0x00000009 + +/* + * New connection settings are available. + */ +#define DPLSYS_NEWCONNECTIONSETTINGS 0x0000000A + +/* + * The Lobby Client has released the DirectPlayLobby Interface + */ +#define DPLSYS_LOBBYCLIENTRELEASE 0x0000000B + +/**************************************************************************** + * + * DirectPlay defined property GUIDs and associated data structures + * + ****************************************************************************/ + +/* + * DPLPROPERTY_MessagesSupported + * + * Request whether the lobby supports standard. Lobby with respond with either + * TRUE or FALSE or may not respond at all. + * + * Property data is a single BOOL with TRUE or FALSE + */ +// {762CCDA1-D916-11d0-BA39-00C04FD7ED67} +DEFINE_GUID(DPLPROPERTY_MessagesSupported, +0x762ccda1, 0xd916, 0x11d0, 0xba, 0x39, 0x0, 0xc0, 0x4f, 0xd7, 0xed, 0x67); + +/* + * DPLPROPERTY_LobbyGuid + * + * Request the GUID that identifies the lobby software that the application + * is communicating with. + * + * Property data is a single GUID. + */ +// {F56920A0-D218-11d0-BA39-00C04FD7ED67} +DEFINE_GUID(DPLPROPERTY_LobbyGuid, +0xf56920a0, 0xd218, 0x11d0, 0xba, 0x39, 0x0, 0xc0, 0x4f, 0xd7, 0xed, 0x67); + +/* + * DPLPROPERTY_PlayerGuid + * + * Request the GUID that identifies the player on this machine for sending + * property data back to the lobby. + * + * Property data is the DPLDATA_PLAYERDATA structure + */ +// {B4319322-D20D-11d0-BA39-00C04FD7ED67} +DEFINE_GUID(DPLPROPERTY_PlayerGuid, +0xb4319322, 0xd20d, 0x11d0, 0xba, 0x39, 0x0, 0xc0, 0x4f, 0xd7, 0xed, 0x67); + +/* + * DPLDATA_PLAYERGUID + * + * Data structure to hold the GUID of the player and player creation flags + * from the lobby. + */ +typedef struct _DPLDATA_PLAYERGUID +{ + GUID guidPlayer; + DWORD dwPlayerFlags; +} DPLDATA_PLAYERGUID, FAR *LPDPLDATA_PLAYERGUID; + +/* + * DPLPROPERTY_PlayerScore + * + * Used to send an array of long integers to the lobby indicating the + * score of a player. + * + * Property data is the DPLDATA_PLAYERSCORE structure. + */ +// {48784000-D219-11d0-BA39-00C04FD7ED67} +DEFINE_GUID(DPLPROPERTY_PlayerScore, +0x48784000, 0xd219, 0x11d0, 0xba, 0x39, 0x0, 0xc0, 0x4f, 0xd7, 0xed, 0x67); + +/* + * DPLDATA_PLAYERSCORE + * + * Data structure to hold an array of long integers representing a player score. + * Application must allocate enough memory to hold all the scores. + */ +typedef struct _DPLDATA_PLAYERSCORE +{ + DWORD dwScoreCount; + LONG Score[1]; +} DPLDATA_PLAYERSCORE, FAR *LPDPLDATA_PLAYERSCORE; + +/**************************************************************************** + * + * DirectPlay Address ID's + * + ****************************************************************************/ + +/* DirectPlay Address + * + * A DirectPlay address consists of multiple chunks of data, each tagged + * with a GUID signifying the type of data in the chunk. The chunk also + * has a length so that unknown chunk types can be skipped. + * + * The EnumAddress() function is used to parse these address data chunks. + */ + +/* + * DPADDRESS + * + * Header for block of address data elements + */ +typedef struct _DPADDRESS +{ + GUID guidDataType; + DWORD dwDataSize; +} DPADDRESS; + +typedef DPADDRESS FAR *LPDPADDRESS; + +/* + * DPAID_TotalSize + * + * Chunk is a DWORD containing size of entire DPADDRESS structure + */ + +// {1318F560-912C-11d0-9DAA-00A0C90A43CB} +DEFINE_GUID(DPAID_TotalSize, +0x1318f560, 0x912c, 0x11d0, 0x9d, 0xaa, 0x0, 0xa0, 0xc9, 0xa, 0x43, 0xcb); + +/* + * DPAID_ServiceProvider + * + * Chunk is a GUID describing the service provider that created the chunk. + * All addresses must contain this chunk. + */ + +// {07D916C0-E0AF-11cf-9C4E-00A0C905425E} +DEFINE_GUID(DPAID_ServiceProvider, +0x7d916c0, 0xe0af, 0x11cf, 0x9c, 0x4e, 0x0, 0xa0, 0xc9, 0x5, 0x42, 0x5e); + +/* + * DPAID_LobbyProvider + * + * Chunk is a GUID describing the lobby provider that created the chunk. + * All addresses must contain this chunk. + */ + +// {59B95640-9667-11d0-A77D-0000F803ABFC} +DEFINE_GUID(DPAID_LobbyProvider, +0x59b95640, 0x9667, 0x11d0, 0xa7, 0x7d, 0x0, 0x0, 0xf8, 0x3, 0xab, 0xfc); + +/* + * DPAID_Phone and DPAID_PhoneW + * + * Chunk is a string containing a phone number (i.e. "1-800-555-1212") + * in ANSI or UNICODE format + */ + +// {78EC89A0-E0AF-11cf-9C4E-00A0C905425E} +DEFINE_GUID(DPAID_Phone, +0x78ec89a0, 0xe0af, 0x11cf, 0x9c, 0x4e, 0x0, 0xa0, 0xc9, 0x5, 0x42, 0x5e); + +// {BA5A7A70-9DBF-11d0-9CC1-00A0C905425E} +DEFINE_GUID(DPAID_PhoneW, +0xba5a7a70, 0x9dbf, 0x11d0, 0x9c, 0xc1, 0x0, 0xa0, 0xc9, 0x5, 0x42, 0x5e); + +/* + * DPAID_Modem and DPAID_ModemW + * + * Chunk is a string containing a modem name registered with TAPI + * in ANSI or UNICODE format + */ + +// {F6DCC200-A2FE-11d0-9C4F-00A0C905425E} +DEFINE_GUID(DPAID_Modem, +0xf6dcc200, 0xa2fe, 0x11d0, 0x9c, 0x4f, 0x0, 0xa0, 0xc9, 0x5, 0x42, 0x5e); + +// {01FD92E0-A2FF-11d0-9C4F-00A0C905425E} +DEFINE_GUID(DPAID_ModemW, +0x1fd92e0, 0xa2ff, 0x11d0, 0x9c, 0x4f, 0x0, 0xa0, 0xc9, 0x5, 0x42, 0x5e); + +/* + * DPAID_Inet and DPAID_InetW + * + * Chunk is a string containing a TCP/IP host name or an IP address + * (i.e. "dplay.microsoft.com" or "137.55.100.173") in ANSI or UNICODE format + */ + +// {C4A54DA0-E0AF-11cf-9C4E-00A0C905425E} +DEFINE_GUID(DPAID_INet, +0xc4a54da0, 0xe0af, 0x11cf, 0x9c, 0x4e, 0x0, 0xa0, 0xc9, 0x5, 0x42, 0x5e); + +// {E63232A0-9DBF-11d0-9CC1-00A0C905425E} +DEFINE_GUID(DPAID_INetW, +0xe63232a0, 0x9dbf, 0x11d0, 0x9c, 0xc1, 0x0, 0xa0, 0xc9, 0x5, 0x42, 0x5e); + +/* + * DPAID_InetPort + * + * Chunk is the port number used for creating the apps TCP and UDP sockets. + * WORD value (i.e. 47624). + */ + +// {E4524541-8EA5-11d1-8A96-006097B01411} +DEFINE_GUID(DPAID_INetPort, +0xe4524541, 0x8ea5, 0x11d1, 0x8a, 0x96, 0x0, 0x60, 0x97, 0xb0, 0x14, 0x11); + +#ifdef BIGMESSAGEDEFENSE +#endif + +/* + * DPCOMPORTADDRESS + * + * Used to specify com port settings. The constants that define baud rate, + * stop bits and parity are defined in WINBASE.H. The constants for flow + * control are given below. + */ + +#define DPCPA_NOFLOW 0 // no flow control +#define DPCPA_XONXOFFFLOW 1 // software flow control +#define DPCPA_RTSFLOW 2 // hardware flow control with RTS +#define DPCPA_DTRFLOW 3 // hardware flow control with DTR +#define DPCPA_RTSDTRFLOW 4 // hardware flow control with RTS and DTR + +typedef struct _DPCOMPORTADDRESS +{ + DWORD dwComPort; // COM port to use (1-4) + DWORD dwBaudRate; // baud rate (100-256k) + DWORD dwStopBits; // no. stop bits (1-2) + DWORD dwParity; // parity (none, odd, even, mark) + DWORD dwFlowControl; // flow control (none, xon/xoff, rts, dtr) +} DPCOMPORTADDRESS; + +typedef DPCOMPORTADDRESS FAR *LPDPCOMPORTADDRESS; + +/* + * DPAID_ComPort + * + * Chunk contains a DPCOMPORTADDRESS structure defining the serial port. + */ + +// {F2F0CE00-E0AF-11cf-9C4E-00A0C905425E} +DEFINE_GUID(DPAID_ComPort, +0xf2f0ce00, 0xe0af, 0x11cf, 0x9c, 0x4e, 0x0, 0xa0, 0xc9, 0x5, 0x42, 0x5e); + +/**************************************************************************** + * + * dplobby 1.0 obsolete definitions + * Included for compatibility only. + * + ****************************************************************************/ +#define DPLAD_SYSTEM DPLMSG_SYSTEM + + +#ifdef __cplusplus +}; +#endif /* __cplusplus */ + +#pragma warning(default:4201) + +#endif /* __DPLOBBY_INCLUDED__ */ + diff --git a/videoInputSrcAndDemos/libs/DShow/Include/dplobby8.h b/videoInputSrcAndDemos/libs/DShow/Include/dplobby8.h index 31f7bf8..e63a5aa 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/dplobby8.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/dplobby8.h @@ -1,407 +1,407 @@ -/*========================================================================== - * - * Copyright (C) 2000 Microsoft Corporation. All Rights Reserved. - * - * File: DPLobby.h - * Content: DirectPlay8 Lobby Include File - * - ***************************************************************************/ - -#ifndef __DPLOBBY_H__ -#define __DPLOBBY_H__ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/**************************************************************************** - * - * DirectPlay8Lobby CLSIDs - * - ****************************************************************************/ - -// {667955AD-6B3B-43ca-B949-BC69B5BAFF7F} -DEFINE_GUID(CLSID_DirectPlay8LobbiedApplication, -0x667955ad, 0x6b3b, 0x43ca, 0xb9, 0x49, 0xbc, 0x69, 0xb5, 0xba, 0xff, 0x7f); - -// {3B2B6775-70B6-45af-8DEA-A209C69559F3} -DEFINE_GUID(CLSID_DirectPlay8LobbyClient, -0x3b2b6775, 0x70b6, 0x45af, 0x8d, 0xea, 0xa2, 0x9, 0xc6, 0x95, 0x59, 0xf3); - -/**************************************************************************** - * - * DirectPlay8Lobby Interface IIDs - * - ****************************************************************************/ - -// {819074A3-016C-11d3-AE14-006097B01411} -DEFINE_GUID(IID_IDirectPlay8LobbiedApplication, -0x819074a3, 0x16c, 0x11d3, 0xae, 0x14, 0x0, 0x60, 0x97, 0xb0, 0x14, 0x11); - -// {819074A2-016C-11d3-AE14-006097B01411} -DEFINE_GUID(IID_IDirectPlay8LobbyClient, -0x819074a2, 0x16c, 0x11d3, 0xae, 0x14, 0x0, 0x60, 0x97, 0xb0, 0x14, 0x11); - -/**************************************************************************** - * - * DirectPlay8Lobby Interface Pointer - * - ****************************************************************************/ - -typedef struct IDirectPlay8LobbiedApplication *PDIRECTPLAY8LOBBIEDAPPLICATION; -typedef struct IDirectPlay8LobbyClient *PDIRECTPLAY8LOBBYCLIENT; - -/**************************************************************************** - * - * DirectPlay8 Lobby Message IDs - * - ****************************************************************************/ - -#define DPL_MSGID_LOBBY 0x8000 -#define DPL_MSGID_RECEIVE (0x0001 | DPL_MSGID_LOBBY) -#define DPL_MSGID_CONNECT (0x0002 | DPL_MSGID_LOBBY) -#define DPL_MSGID_DISCONNECT (0x0003 | DPL_MSGID_LOBBY) -#define DPL_MSGID_SESSION_STATUS (0x0004 | DPL_MSGID_LOBBY) -#define DPL_MSGID_CONNECTION_SETTINGS (0x0005 | DPL_MSGID_LOBBY) - -/**************************************************************************** - * - * DirectPlay8Lobby Constants - * - ****************************************************************************/ - -// -// Specifies that operation should be performed on all open connections -// -#define DPLHANDLE_ALLCONNECTIONS 0xFFFFFFFF - -// -// The associated game session has suceeded in connecting / hosting -// -#define DPLSESSION_CONNECTED 0x0001 - -// The associated game session failed connecting / hosting -// -#define DPLSESSION_COULDNOTCONNECT 0x0002 - -// -// The associated game session has disconnected -// -#define DPLSESSION_DISCONNECTED 0x0003 - -// -// The associated game session has terminated -// -#define DPLSESSION_TERMINATED 0x0004 - -// -// The associated game session's host has migrated -// -#define DPLSESSION_HOSTMIGRATED 0x0005 - -// -// The associated game session's host has migrated to the local client -// -#define DPLSESSION_HOSTMIGRATEDHERE 0x0006 - - -/**************************************************************************** - * - * DirectPlay8 Lobby Flags - * - ****************************************************************************/ - -// -// Do not automatically make the lobby app unavailable when a connection is established -// -#define DPLAVAILABLE_ALLOWMULTIPLECONNECT 0x0001 - -// -// Launch a new instance of the application to connect to -// -#define DPLCONNECT_LAUNCHNEW 0x0001 - -// -// Launch a new instance of the application if one is not waiting -// -#define DPLCONNECT_LAUNCHNOTFOUND 0x0002 - -// -// When starting the associated game session, start it as a host -// -#define DPLCONNECTSETTINGS_HOST 0x0001 - -// -// Disable parameter validation -// -#define DPLINITIALIZE_DISABLEPARAMVAL 0x0001 - -/**************************************************************************** - * - * DirectPlay8Lobby Structures (Non-Message) - * - ****************************************************************************/ - -// -// Information on a registered game -// -typedef struct _DPL_APPLICATION_INFO { - GUID guidApplication; // GUID of the application - PWSTR pwszApplicationName; // Name of the application - DWORD dwNumRunning; // # of instances of this application running - DWORD dwNumWaiting; // # of instances of this application waiting - DWORD dwFlags; // Flags -} DPL_APPLICATION_INFO, *PDPL_APPLICATION_INFO; - -// -// Settings to be used for connecting / hosting a game session -// -typedef struct _DPL_CONNECTION_SETTINGS { - DWORD dwSize; // Size of this structure - DWORD dwFlags; // Connection settings flags (DPLCONNECTSETTINGS_...) - DPN_APPLICATION_DESC dpnAppDesc; // Application desc for the associated DirectPlay session - IDirectPlay8Address *pdp8HostAddress; // Address of host to connect to - IDirectPlay8Address **ppdp8DeviceAddresses; // Address of device to connect from / host on - DWORD cNumDeviceAddresses; // # of addresses specified in ppdp8DeviceAddresses - PWSTR pwszPlayerName; // Name to give the player -} DPL_CONNECTION_SETTINGS, *PDPL_CONNECTION_SETTINGS; - -// -// Information for performing a lobby connect -// (ConnectApplication) -// -typedef struct _DPL_CONNECT_INFO { - DWORD dwSize; // Size of this structure - DWORD dwFlags; // Flags (DPLCONNECT_...) - GUID guidApplication; // GUID of application to launch - PDPL_CONNECTION_SETTINGS pdplConnectionSettings; - // Settings application should use - PVOID pvLobbyConnectData; // User defined data block - DWORD dwLobbyConnectDataSize; - // Size of user defined data block -} DPL_CONNECT_INFO, *PDPL_CONNECT_INFO; - -// -// Information for registering an application -// (RegisterApplication) -// -typedef struct _DPL_PROGRAM_DESC { - DWORD dwSize; - DWORD dwFlags; - GUID guidApplication; // Application GUID - PWSTR pwszApplicationName; // Unicode application name - PWSTR pwszCommandLine; // Unicode command line arguments - PWSTR pwszCurrentDirectory; // Unicode current directory - PWSTR pwszDescription; // Unicode application description - PWSTR pwszExecutableFilename; // Unicode filename of application executable - PWSTR pwszExecutablePath; // Unicode path of application executable - PWSTR pwszLauncherFilename; // Unicode filename of launcher executable - PWSTR pwszLauncherPath; // Unicode path of launcher executable -} DPL_PROGRAM_DESC, *PDPL_PROGRAM_DESC; - -/**************************************************************************** - * - * DirectPlay8 Lobby Message Structures - * - ****************************************************************************/ - -// -// A connection was established -// (DPL_MSGID_CONNECT) -// -typedef struct _DPL_MESSAGE_CONNECT -{ - DWORD dwSize; // Size of this structure - DPNHANDLE hConnectId; // Handle of new connection - PDPL_CONNECTION_SETTINGS pdplConnectionSettings; // Connection settings for this connection - PVOID pvLobbyConnectData; // User defined lobby data block - DWORD dwLobbyConnectDataSize; // Size of user defined lobby data block - PVOID pvConnectionContext; // Context value for this connection (user set) -} DPL_MESSAGE_CONNECT, *PDPL_MESSAGE_CONNECT; - -// -// Connection settings have been updated -// (DPL_MSGID_CONNECTION_SETTINGS) -// -typedef struct _DPL_MESSAGE_CONNECTION_SETTINGS -{ - DWORD dwSize; // Size of this structure - DPNHANDLE hSender; // Handle of the connection for these settings - PDPL_CONNECTION_SETTINGS pdplConnectionSettings; // Connection settings - PVOID pvConnectionContext; // Context value for this connection -} DPL_MESSAGE_CONNECTION_SETTINGS, *PDPL_MESSAGE_CONNECTION_SETTINGS; - -// -// A connection has been disconnected -// (DPL_MSGID_DISCONNECT) -// -typedef struct _DPL_MESSAGE_DISCONNECT -{ - DWORD dwSize; // Size of this structure - DPNHANDLE hDisconnectId; // Handle of the connection that was terminated - HRESULT hrReason; // Reason the connection was broken - PVOID pvConnectionContext; // Context value for this connection -} DPL_MESSAGE_DISCONNECT, *PDPL_MESSAGE_DISCONNECT; - -// -// Data was received through a connection -// (DPL_MSGID_RECEIVE) -// -typedef struct _DPL_MESSAGE_RECEIVE -{ - DWORD dwSize; // Size of this structure - DPNHANDLE hSender; // Handle of the connection that is from - BYTE *pBuffer; // Contents of the message - DWORD dwBufferSize; // Size of the message context - PVOID pvConnectionContext; // Context value for this connection -} DPL_MESSAGE_RECEIVE, *PDPL_MESSAGE_RECEIVE; - -// -// Current status of the associated connection -// (DPL_MSGID_SESSION_STATUS) -// -typedef struct _DPL_MESSAGE_SESSION_STATUS -{ - DWORD dwSize; // Size of this structure - DPNHANDLE hSender; // Handle of the connection that this is from - DWORD dwStatus; // Status (DPLSESSION_...) - PVOID pvConnectionContext; // Context value for this connection -} DPL_MESSAGE_SESSION_STATUS, *PDPL_MESSAGE_SESSION_STATUS; - -/**************************************************************************** - * - * DirectPlay8Lobby Create - * - ****************************************************************************/ - -/* - * This function is no longer supported. It is recommended that CoCreateInstance be used to create - * DirectPlay8 lobby objects. - * - * extern HRESULT WINAPI DirectPlay8LobbyCreate( const GUID * pcIID, void **ppvInterface, IUnknown *pUnknown); - * - */ - -/**************************************************************************** - * - * DirectPlay8 Functions - * - ****************************************************************************/ - -// -// COM definition for DirectPlayLobbyClient -// -#undef INTERFACE // External COM Implementation -#define INTERFACE IDirectPlay8LobbyClient -DECLARE_INTERFACE_(IDirectPlay8LobbyClient,IUnknown) -{ - // IUnknown methods - STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID *ppvObj) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - // IDirectPlayLobbyClient methods - STDMETHOD(Initialize) (THIS_ const PVOID pvUserContext,const PFNDPNMESSAGEHANDLER pfn,const DWORD dwFlags) PURE; - STDMETHOD(EnumLocalPrograms) (THIS_ GUID *const pGuidApplication,BYTE *const pEnumData,DWORD *const pdwEnumData,DWORD *const pdwItems, const DWORD dwFlags) PURE; - STDMETHOD(ConnectApplication) (THIS_ DPL_CONNECT_INFO *const pdplConnectionInfo,const PVOID pvConnectionContext,DPNHANDLE *const hApplication,const DWORD dwTimeOut,const DWORD dwFlags) PURE; - STDMETHOD(Send) (THIS_ const DPNHANDLE hConnection,BYTE *const pBuffer,const DWORD pBufferSize,const DWORD dwFlags) PURE; - STDMETHOD(ReleaseApplication) (THIS_ const DPNHANDLE hConnection, const DWORD dwFlags ) PURE; - STDMETHOD(Close) (THIS_ const DWORD dwFlags ) PURE; - STDMETHOD(GetConnectionSettings) (THIS_ const DPNHANDLE hConnection, DPL_CONNECTION_SETTINGS * const pdplSessionInfo, DWORD *pdwInfoSize, const DWORD dwFlags ) PURE; - STDMETHOD(SetConnectionSettings) (THIS_ const DPNHANDLE hConnection, const DPL_CONNECTION_SETTINGS * const pdplSessionInfo, const DWORD dwFlags ) PURE; -}; - - -// -// COM definition for DirectPlayLobbiedApplication -// -#undef INTERFACE // External COM Implementation -#define INTERFACE IDirectPlay8LobbiedApplication -DECLARE_INTERFACE_(IDirectPlay8LobbiedApplication,IUnknown) -{ - // IUnknown methods - STDMETHOD(QueryInterface) (THIS_ REFIID riid,LPVOID *ppvObj) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - // IDirectPlayLobbiedApplication methods - STDMETHOD(Initialize) (THIS_ const PVOID pvUserContext,const PFNDPNMESSAGEHANDLER pfn,DPNHANDLE * const pdpnhConnection, const DWORD dwFlags) PURE; - STDMETHOD(RegisterProgram) (THIS_ PDPL_PROGRAM_DESC pdplProgramDesc,const DWORD dwFlags) PURE; - STDMETHOD(UnRegisterProgram) (THIS_ GUID *pguidApplication,const DWORD dwFlags) PURE; - STDMETHOD(Send) (THIS_ const DPNHANDLE hConnection,BYTE *const pBuffer,const DWORD pBufferSize,const DWORD dwFlags) PURE; - STDMETHOD(SetAppAvailable) (THIS_ const BOOL fAvailable, const DWORD dwFlags ) PURE; - STDMETHOD(UpdateStatus) (THIS_ const DPNHANDLE hConnection, const DWORD dwStatus, const DWORD dwFlags ) PURE; - STDMETHOD(Close) (THIS_ const DWORD dwFlags ) PURE; - STDMETHOD(GetConnectionSettings) (THIS_ const DPNHANDLE hConnection, DPL_CONNECTION_SETTINGS * const pdplSessionInfo, DWORD *pdwInfoSize, const DWORD dwFlags ) PURE; - STDMETHOD(SetConnectionSettings) (THIS_ const DPNHANDLE hConnection, const DPL_CONNECTION_SETTINGS * const pdplSessionInfo, const DWORD dwFlags ) PURE; -}; - - -/**************************************************************************** - * - * DirectPlayLobby Interface Macros - * - ****************************************************************************/ - -#if !defined(__cplusplus) || defined(CINTERFACE) - -#define IDirectPlay8LobbyClient_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IDirectPlay8LobbyClient_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDirectPlay8LobbyClient_Release(p) (p)->lpVtbl->Release(p) -#define IDirectPlay8LobbyClient_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c) -#define IDirectPlay8LobbyClient_EnumLocalPrograms(p,a,b,c,d,e) (p)->lpVtbl->EnumLocalPrograms(p,a,b,c,d,e) -#define IDirectPlay8LobbyClient_ConnectApplication(p,a,b,c,d,e) (p)->lpVtbl->ConnectApplication(p,a,b,c,d,e) -#define IDirectPlay8LobbyClient_Send(p,a,b,c,d) (p)->lpVtbl->Send(p,a,b,c,d) -#define IDirectPlay8LobbyClient_ReleaseApplication(p,a,b) (p)->lpVtbl->ReleaseApplication(p,a,b) -#define IDirectPlay8LobbyClient_Close(p,a) (p)->lpVtbl->Close(p,a) -#define IDirectPlay8LobbyClient_GetConnectionSettings(p,a,b,c,d) (p)->lpVtbl->GetConnectionSettings(p,a,b,c,d) -#define IDirectPlay8LobbyClient_SetConnectionSettings(p,a,b,c) (p)->lpVtbl->SetConnectionSettings(p,a,b,c) - -#define IDirectPlay8LobbiedApplication_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IDirectPlay8LobbiedApplication_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDirectPlay8LobbiedApplication_Release(p) (p)->lpVtbl->Release(p) -#define IDirectPlay8LobbiedApplication_Initialize(p,a,b,c,d) (p)->lpVtbl->Initialize(p,a,b,c,d) -#define IDirectPlay8LobbiedApplication_RegisterProgram(p,a,b) (p)->lpVtbl->RegisterProgram(p,a,b) -#define IDirectPlay8LobbiedApplication_UnRegisterProgram(p,a,b) (p)->lpVtbl->UnRegisterProgram(p,a,b) -#define IDirectPlay8LobbiedApplication_Send(p,a,b,c,d) (p)->lpVtbl->Send(p,a,b,c,d) -#define IDirectPlay8LobbiedApplication_SetAppAvailable(p,a,b) (p)->lpVtbl->SetAppAvailable(p,a,b) -#define IDirectPlay8LobbiedApplication_UpdateStatus(p,a,b,c) (p)->lpVtbl->UpdateStatus(p,a,b,c) -#define IDirectPlay8LobbiedApplication_Close(p,a) (p)->lpVtbl->Close(p,a) -#define IDirectPlay8LobbiedApplication_GetConnectionSettings(p,a,b,c,d) (p)->lpVtbl->GetConnectionSettings(p,a,b,c,d) -#define IDirectPlay8LobbiedApplication_SetConnectionSettings(p,a,b,c) (p)->lpVtbl->SetConnectionSettings(p,a,b,c) - -#else /* C++ */ - -#define IDirectPlay8LobbyClient_QueryInterface(p,a,b) (p)->QueryInterface(a,b) -#define IDirectPlay8LobbyClient_AddRef(p) (p)->AddRef() -#define IDirectPlay8LobbyClient_Release(p) (p)->Release() -#define IDirectPlay8LobbyClient_Initialize(p,a,b,c) (p)->Initialize(a,b,c) -#define IDirectPlay8LobbyClient_EnumLocalPrograms(p,a,b,c,d,e) (p)->EnumLocalPrograms(a,b,c,d,e) -#define IDirectPlay8LobbyClient_ConnectApplication(p,a,b,c,d,e) (p)->ConnectApplication(a,b,c,d,e) -#define IDirectPlay8LobbyClient_Send(p,a,b,c,d) (p)->Send(a,b,c,d) -#define IDirectPlay8LobbyClient_ReleaseApplication(p,a,b) (p)->ReleaseApplication(a,b) -#define IDirectPlay8LobbyClient_Close(p,a) (p)->Close(a) -#define IDirectPlay8LobbyClient_GetConnectionSettings(p,a,b,c,d) (p)->GetConnectionSettings(a,b,c,d) -#define IDirectPlay8LobbyClient_SetConnectionSettings(p,a,b,c) (p)->SetConnectionSettings(a,b,c) - -#define IDirectPlay8LobbiedApplication_QueryInterface(p,a,b) (p)->QueryInterface(a,b) -#define IDirectPlay8LobbiedApplication_AddRef(p) (p)->AddRef() -#define IDirectPlay8LobbiedApplication_Release(p) (p)->Release() -#define IDirectPlay8LobbiedApplication_Initialize(p,a,b,c,d) (p)->Initialize(a,b,c,d) -#define IDirectPlay8LobbiedApplication_RegisterProgram(p,a,b) (p)->RegisterProgram(a,b) -#define IDirectPlay8LobbiedApplication_UnRegisterProgram(p,a,b) (p)->UnRegisterProgram(a,b) -#define IDirectPlay8LobbiedApplication_Send(p,a,b,c,d) (p)->Send(a,b,c,d) -#define IDirectPlay8LobbiedApplication_SetAppAvailable(p,a,b) (p)->SetAppAvailable(a,b) -#define IDirectPlay8LobbiedApplication_UpdateStatus(p,a,b,c) (p)->UpdateStatus(a,b,c) -#define IDirectPlay8LobbiedApplication_Close(p,a) (p)->Close(a) -#define IDirectPlay8LobbiedApplication_GetConnectionSettings(p,a,b,c,d) (p)->GetConnectionSettings(a,b,c,d) -#define IDirectPlay8LobbiedApplication_SetConnectionSettings(p,a,b,c) (p)->SetConnectionSettings(a,b,c) - -#endif - -#ifdef __cplusplus -} -#endif - -#endif // __DPLOBBY_H__ - +/*========================================================================== + * + * Copyright (C) 2000 Microsoft Corporation. All Rights Reserved. + * + * File: DPLobby.h + * Content: DirectPlay8 Lobby Include File + * + ***************************************************************************/ + +#ifndef __DPLOBBY_H__ +#define __DPLOBBY_H__ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/**************************************************************************** + * + * DirectPlay8Lobby CLSIDs + * + ****************************************************************************/ + +// {667955AD-6B3B-43ca-B949-BC69B5BAFF7F} +DEFINE_GUID(CLSID_DirectPlay8LobbiedApplication, +0x667955ad, 0x6b3b, 0x43ca, 0xb9, 0x49, 0xbc, 0x69, 0xb5, 0xba, 0xff, 0x7f); + +// {3B2B6775-70B6-45af-8DEA-A209C69559F3} +DEFINE_GUID(CLSID_DirectPlay8LobbyClient, +0x3b2b6775, 0x70b6, 0x45af, 0x8d, 0xea, 0xa2, 0x9, 0xc6, 0x95, 0x59, 0xf3); + +/**************************************************************************** + * + * DirectPlay8Lobby Interface IIDs + * + ****************************************************************************/ + +// {819074A3-016C-11d3-AE14-006097B01411} +DEFINE_GUID(IID_IDirectPlay8LobbiedApplication, +0x819074a3, 0x16c, 0x11d3, 0xae, 0x14, 0x0, 0x60, 0x97, 0xb0, 0x14, 0x11); + +// {819074A2-016C-11d3-AE14-006097B01411} +DEFINE_GUID(IID_IDirectPlay8LobbyClient, +0x819074a2, 0x16c, 0x11d3, 0xae, 0x14, 0x0, 0x60, 0x97, 0xb0, 0x14, 0x11); + +/**************************************************************************** + * + * DirectPlay8Lobby Interface Pointer + * + ****************************************************************************/ + +typedef struct IDirectPlay8LobbiedApplication *PDIRECTPLAY8LOBBIEDAPPLICATION; +typedef struct IDirectPlay8LobbyClient *PDIRECTPLAY8LOBBYCLIENT; + +/**************************************************************************** + * + * DirectPlay8 Lobby Message IDs + * + ****************************************************************************/ + +#define DPL_MSGID_LOBBY 0x8000 +#define DPL_MSGID_RECEIVE (0x0001 | DPL_MSGID_LOBBY) +#define DPL_MSGID_CONNECT (0x0002 | DPL_MSGID_LOBBY) +#define DPL_MSGID_DISCONNECT (0x0003 | DPL_MSGID_LOBBY) +#define DPL_MSGID_SESSION_STATUS (0x0004 | DPL_MSGID_LOBBY) +#define DPL_MSGID_CONNECTION_SETTINGS (0x0005 | DPL_MSGID_LOBBY) + +/**************************************************************************** + * + * DirectPlay8Lobby Constants + * + ****************************************************************************/ + +// +// Specifies that operation should be performed on all open connections +// +#define DPLHANDLE_ALLCONNECTIONS 0xFFFFFFFF + +// +// The associated game session has suceeded in connecting / hosting +// +#define DPLSESSION_CONNECTED 0x0001 + +// The associated game session failed connecting / hosting +// +#define DPLSESSION_COULDNOTCONNECT 0x0002 + +// +// The associated game session has disconnected +// +#define DPLSESSION_DISCONNECTED 0x0003 + +// +// The associated game session has terminated +// +#define DPLSESSION_TERMINATED 0x0004 + +// +// The associated game session's host has migrated +// +#define DPLSESSION_HOSTMIGRATED 0x0005 + +// +// The associated game session's host has migrated to the local client +// +#define DPLSESSION_HOSTMIGRATEDHERE 0x0006 + + +/**************************************************************************** + * + * DirectPlay8 Lobby Flags + * + ****************************************************************************/ + +// +// Do not automatically make the lobby app unavailable when a connection is established +// +#define DPLAVAILABLE_ALLOWMULTIPLECONNECT 0x0001 + +// +// Launch a new instance of the application to connect to +// +#define DPLCONNECT_LAUNCHNEW 0x0001 + +// +// Launch a new instance of the application if one is not waiting +// +#define DPLCONNECT_LAUNCHNOTFOUND 0x0002 + +// +// When starting the associated game session, start it as a host +// +#define DPLCONNECTSETTINGS_HOST 0x0001 + +// +// Disable parameter validation +// +#define DPLINITIALIZE_DISABLEPARAMVAL 0x0001 + +/**************************************************************************** + * + * DirectPlay8Lobby Structures (Non-Message) + * + ****************************************************************************/ + +// +// Information on a registered game +// +typedef struct _DPL_APPLICATION_INFO { + GUID guidApplication; // GUID of the application + PWSTR pwszApplicationName; // Name of the application + DWORD dwNumRunning; // # of instances of this application running + DWORD dwNumWaiting; // # of instances of this application waiting + DWORD dwFlags; // Flags +} DPL_APPLICATION_INFO, *PDPL_APPLICATION_INFO; + +// +// Settings to be used for connecting / hosting a game session +// +typedef struct _DPL_CONNECTION_SETTINGS { + DWORD dwSize; // Size of this structure + DWORD dwFlags; // Connection settings flags (DPLCONNECTSETTINGS_...) + DPN_APPLICATION_DESC dpnAppDesc; // Application desc for the associated DirectPlay session + IDirectPlay8Address *pdp8HostAddress; // Address of host to connect to + IDirectPlay8Address **ppdp8DeviceAddresses; // Address of device to connect from / host on + DWORD cNumDeviceAddresses; // # of addresses specified in ppdp8DeviceAddresses + PWSTR pwszPlayerName; // Name to give the player +} DPL_CONNECTION_SETTINGS, *PDPL_CONNECTION_SETTINGS; + +// +// Information for performing a lobby connect +// (ConnectApplication) +// +typedef struct _DPL_CONNECT_INFO { + DWORD dwSize; // Size of this structure + DWORD dwFlags; // Flags (DPLCONNECT_...) + GUID guidApplication; // GUID of application to launch + PDPL_CONNECTION_SETTINGS pdplConnectionSettings; + // Settings application should use + PVOID pvLobbyConnectData; // User defined data block + DWORD dwLobbyConnectDataSize; + // Size of user defined data block +} DPL_CONNECT_INFO, *PDPL_CONNECT_INFO; + +// +// Information for registering an application +// (RegisterApplication) +// +typedef struct _DPL_PROGRAM_DESC { + DWORD dwSize; + DWORD dwFlags; + GUID guidApplication; // Application GUID + PWSTR pwszApplicationName; // Unicode application name + PWSTR pwszCommandLine; // Unicode command line arguments + PWSTR pwszCurrentDirectory; // Unicode current directory + PWSTR pwszDescription; // Unicode application description + PWSTR pwszExecutableFilename; // Unicode filename of application executable + PWSTR pwszExecutablePath; // Unicode path of application executable + PWSTR pwszLauncherFilename; // Unicode filename of launcher executable + PWSTR pwszLauncherPath; // Unicode path of launcher executable +} DPL_PROGRAM_DESC, *PDPL_PROGRAM_DESC; + +/**************************************************************************** + * + * DirectPlay8 Lobby Message Structures + * + ****************************************************************************/ + +// +// A connection was established +// (DPL_MSGID_CONNECT) +// +typedef struct _DPL_MESSAGE_CONNECT +{ + DWORD dwSize; // Size of this structure + DPNHANDLE hConnectId; // Handle of new connection + PDPL_CONNECTION_SETTINGS pdplConnectionSettings; // Connection settings for this connection + PVOID pvLobbyConnectData; // User defined lobby data block + DWORD dwLobbyConnectDataSize; // Size of user defined lobby data block + PVOID pvConnectionContext; // Context value for this connection (user set) +} DPL_MESSAGE_CONNECT, *PDPL_MESSAGE_CONNECT; + +// +// Connection settings have been updated +// (DPL_MSGID_CONNECTION_SETTINGS) +// +typedef struct _DPL_MESSAGE_CONNECTION_SETTINGS +{ + DWORD dwSize; // Size of this structure + DPNHANDLE hSender; // Handle of the connection for these settings + PDPL_CONNECTION_SETTINGS pdplConnectionSettings; // Connection settings + PVOID pvConnectionContext; // Context value for this connection +} DPL_MESSAGE_CONNECTION_SETTINGS, *PDPL_MESSAGE_CONNECTION_SETTINGS; + +// +// A connection has been disconnected +// (DPL_MSGID_DISCONNECT) +// +typedef struct _DPL_MESSAGE_DISCONNECT +{ + DWORD dwSize; // Size of this structure + DPNHANDLE hDisconnectId; // Handle of the connection that was terminated + HRESULT hrReason; // Reason the connection was broken + PVOID pvConnectionContext; // Context value for this connection +} DPL_MESSAGE_DISCONNECT, *PDPL_MESSAGE_DISCONNECT; + +// +// Data was received through a connection +// (DPL_MSGID_RECEIVE) +// +typedef struct _DPL_MESSAGE_RECEIVE +{ + DWORD dwSize; // Size of this structure + DPNHANDLE hSender; // Handle of the connection that is from + BYTE *pBuffer; // Contents of the message + DWORD dwBufferSize; // Size of the message context + PVOID pvConnectionContext; // Context value for this connection +} DPL_MESSAGE_RECEIVE, *PDPL_MESSAGE_RECEIVE; + +// +// Current status of the associated connection +// (DPL_MSGID_SESSION_STATUS) +// +typedef struct _DPL_MESSAGE_SESSION_STATUS +{ + DWORD dwSize; // Size of this structure + DPNHANDLE hSender; // Handle of the connection that this is from + DWORD dwStatus; // Status (DPLSESSION_...) + PVOID pvConnectionContext; // Context value for this connection +} DPL_MESSAGE_SESSION_STATUS, *PDPL_MESSAGE_SESSION_STATUS; + +/**************************************************************************** + * + * DirectPlay8Lobby Create + * + ****************************************************************************/ + +/* + * This function is no longer supported. It is recommended that CoCreateInstance be used to create + * DirectPlay8 lobby objects. + * + * extern HRESULT WINAPI DirectPlay8LobbyCreate( const GUID * pcIID, void **ppvInterface, IUnknown *pUnknown); + * + */ + +/**************************************************************************** + * + * DirectPlay8 Functions + * + ****************************************************************************/ + +// +// COM definition for DirectPlayLobbyClient +// +#undef INTERFACE // External COM Implementation +#define INTERFACE IDirectPlay8LobbyClient +DECLARE_INTERFACE_(IDirectPlay8LobbyClient,IUnknown) +{ + // IUnknown methods + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID *ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + // IDirectPlayLobbyClient methods + STDMETHOD(Initialize) (THIS_ const PVOID pvUserContext,const PFNDPNMESSAGEHANDLER pfn,const DWORD dwFlags) PURE; + STDMETHOD(EnumLocalPrograms) (THIS_ GUID *const pGuidApplication,BYTE *const pEnumData,DWORD *const pdwEnumData,DWORD *const pdwItems, const DWORD dwFlags) PURE; + STDMETHOD(ConnectApplication) (THIS_ DPL_CONNECT_INFO *const pdplConnectionInfo,const PVOID pvConnectionContext,DPNHANDLE *const hApplication,const DWORD dwTimeOut,const DWORD dwFlags) PURE; + STDMETHOD(Send) (THIS_ const DPNHANDLE hConnection,BYTE *const pBuffer,const DWORD pBufferSize,const DWORD dwFlags) PURE; + STDMETHOD(ReleaseApplication) (THIS_ const DPNHANDLE hConnection, const DWORD dwFlags ) PURE; + STDMETHOD(Close) (THIS_ const DWORD dwFlags ) PURE; + STDMETHOD(GetConnectionSettings) (THIS_ const DPNHANDLE hConnection, DPL_CONNECTION_SETTINGS * const pdplSessionInfo, DWORD *pdwInfoSize, const DWORD dwFlags ) PURE; + STDMETHOD(SetConnectionSettings) (THIS_ const DPNHANDLE hConnection, const DPL_CONNECTION_SETTINGS * const pdplSessionInfo, const DWORD dwFlags ) PURE; +}; + + +// +// COM definition for DirectPlayLobbiedApplication +// +#undef INTERFACE // External COM Implementation +#define INTERFACE IDirectPlay8LobbiedApplication +DECLARE_INTERFACE_(IDirectPlay8LobbiedApplication,IUnknown) +{ + // IUnknown methods + STDMETHOD(QueryInterface) (THIS_ REFIID riid,LPVOID *ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + // IDirectPlayLobbiedApplication methods + STDMETHOD(Initialize) (THIS_ const PVOID pvUserContext,const PFNDPNMESSAGEHANDLER pfn,DPNHANDLE * const pdpnhConnection, const DWORD dwFlags) PURE; + STDMETHOD(RegisterProgram) (THIS_ PDPL_PROGRAM_DESC pdplProgramDesc,const DWORD dwFlags) PURE; + STDMETHOD(UnRegisterProgram) (THIS_ GUID *pguidApplication,const DWORD dwFlags) PURE; + STDMETHOD(Send) (THIS_ const DPNHANDLE hConnection,BYTE *const pBuffer,const DWORD pBufferSize,const DWORD dwFlags) PURE; + STDMETHOD(SetAppAvailable) (THIS_ const BOOL fAvailable, const DWORD dwFlags ) PURE; + STDMETHOD(UpdateStatus) (THIS_ const DPNHANDLE hConnection, const DWORD dwStatus, const DWORD dwFlags ) PURE; + STDMETHOD(Close) (THIS_ const DWORD dwFlags ) PURE; + STDMETHOD(GetConnectionSettings) (THIS_ const DPNHANDLE hConnection, DPL_CONNECTION_SETTINGS * const pdplSessionInfo, DWORD *pdwInfoSize, const DWORD dwFlags ) PURE; + STDMETHOD(SetConnectionSettings) (THIS_ const DPNHANDLE hConnection, const DPL_CONNECTION_SETTINGS * const pdplSessionInfo, const DWORD dwFlags ) PURE; +}; + + +/**************************************************************************** + * + * DirectPlayLobby Interface Macros + * + ****************************************************************************/ + +#if !defined(__cplusplus) || defined(CINTERFACE) + +#define IDirectPlay8LobbyClient_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDirectPlay8LobbyClient_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectPlay8LobbyClient_Release(p) (p)->lpVtbl->Release(p) +#define IDirectPlay8LobbyClient_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c) +#define IDirectPlay8LobbyClient_EnumLocalPrograms(p,a,b,c,d,e) (p)->lpVtbl->EnumLocalPrograms(p,a,b,c,d,e) +#define IDirectPlay8LobbyClient_ConnectApplication(p,a,b,c,d,e) (p)->lpVtbl->ConnectApplication(p,a,b,c,d,e) +#define IDirectPlay8LobbyClient_Send(p,a,b,c,d) (p)->lpVtbl->Send(p,a,b,c,d) +#define IDirectPlay8LobbyClient_ReleaseApplication(p,a,b) (p)->lpVtbl->ReleaseApplication(p,a,b) +#define IDirectPlay8LobbyClient_Close(p,a) (p)->lpVtbl->Close(p,a) +#define IDirectPlay8LobbyClient_GetConnectionSettings(p,a,b,c,d) (p)->lpVtbl->GetConnectionSettings(p,a,b,c,d) +#define IDirectPlay8LobbyClient_SetConnectionSettings(p,a,b,c) (p)->lpVtbl->SetConnectionSettings(p,a,b,c) + +#define IDirectPlay8LobbiedApplication_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDirectPlay8LobbiedApplication_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectPlay8LobbiedApplication_Release(p) (p)->lpVtbl->Release(p) +#define IDirectPlay8LobbiedApplication_Initialize(p,a,b,c,d) (p)->lpVtbl->Initialize(p,a,b,c,d) +#define IDirectPlay8LobbiedApplication_RegisterProgram(p,a,b) (p)->lpVtbl->RegisterProgram(p,a,b) +#define IDirectPlay8LobbiedApplication_UnRegisterProgram(p,a,b) (p)->lpVtbl->UnRegisterProgram(p,a,b) +#define IDirectPlay8LobbiedApplication_Send(p,a,b,c,d) (p)->lpVtbl->Send(p,a,b,c,d) +#define IDirectPlay8LobbiedApplication_SetAppAvailable(p,a,b) (p)->lpVtbl->SetAppAvailable(p,a,b) +#define IDirectPlay8LobbiedApplication_UpdateStatus(p,a,b,c) (p)->lpVtbl->UpdateStatus(p,a,b,c) +#define IDirectPlay8LobbiedApplication_Close(p,a) (p)->lpVtbl->Close(p,a) +#define IDirectPlay8LobbiedApplication_GetConnectionSettings(p,a,b,c,d) (p)->lpVtbl->GetConnectionSettings(p,a,b,c,d) +#define IDirectPlay8LobbiedApplication_SetConnectionSettings(p,a,b,c) (p)->lpVtbl->SetConnectionSettings(p,a,b,c) + +#else /* C++ */ + +#define IDirectPlay8LobbyClient_QueryInterface(p,a,b) (p)->QueryInterface(a,b) +#define IDirectPlay8LobbyClient_AddRef(p) (p)->AddRef() +#define IDirectPlay8LobbyClient_Release(p) (p)->Release() +#define IDirectPlay8LobbyClient_Initialize(p,a,b,c) (p)->Initialize(a,b,c) +#define IDirectPlay8LobbyClient_EnumLocalPrograms(p,a,b,c,d,e) (p)->EnumLocalPrograms(a,b,c,d,e) +#define IDirectPlay8LobbyClient_ConnectApplication(p,a,b,c,d,e) (p)->ConnectApplication(a,b,c,d,e) +#define IDirectPlay8LobbyClient_Send(p,a,b,c,d) (p)->Send(a,b,c,d) +#define IDirectPlay8LobbyClient_ReleaseApplication(p,a,b) (p)->ReleaseApplication(a,b) +#define IDirectPlay8LobbyClient_Close(p,a) (p)->Close(a) +#define IDirectPlay8LobbyClient_GetConnectionSettings(p,a,b,c,d) (p)->GetConnectionSettings(a,b,c,d) +#define IDirectPlay8LobbyClient_SetConnectionSettings(p,a,b,c) (p)->SetConnectionSettings(a,b,c) + +#define IDirectPlay8LobbiedApplication_QueryInterface(p,a,b) (p)->QueryInterface(a,b) +#define IDirectPlay8LobbiedApplication_AddRef(p) (p)->AddRef() +#define IDirectPlay8LobbiedApplication_Release(p) (p)->Release() +#define IDirectPlay8LobbiedApplication_Initialize(p,a,b,c,d) (p)->Initialize(a,b,c,d) +#define IDirectPlay8LobbiedApplication_RegisterProgram(p,a,b) (p)->RegisterProgram(a,b) +#define IDirectPlay8LobbiedApplication_UnRegisterProgram(p,a,b) (p)->UnRegisterProgram(a,b) +#define IDirectPlay8LobbiedApplication_Send(p,a,b,c,d) (p)->Send(a,b,c,d) +#define IDirectPlay8LobbiedApplication_SetAppAvailable(p,a,b) (p)->SetAppAvailable(a,b) +#define IDirectPlay8LobbiedApplication_UpdateStatus(p,a,b,c) (p)->UpdateStatus(a,b,c) +#define IDirectPlay8LobbiedApplication_Close(p,a) (p)->Close(a) +#define IDirectPlay8LobbiedApplication_GetConnectionSettings(p,a,b,c,d) (p)->GetConnectionSettings(a,b,c,d) +#define IDirectPlay8LobbiedApplication_SetConnectionSettings(p,a,b,c) (p)->SetConnectionSettings(a,b,c) + +#endif + +#ifdef __cplusplus +} +#endif + +#endif // __DPLOBBY_H__ + diff --git a/videoInputSrcAndDemos/libs/DShow/Include/dpnathlp.h b/videoInputSrcAndDemos/libs/DShow/Include/dpnathlp.h index b90e2f1..720e43a 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/dpnathlp.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/dpnathlp.h @@ -1,318 +1,318 @@ -/*************************************************************************** - * - * Copyright (C) 2001-2002 Microsoft Corporation. All Rights Reserved. - * - * File: dpnathlp.h - * - * Content: Header for using DirectPlayNATHelp interface. - * - * - * NOTE: This interface is deprecated and should no longer be used. - * - * - ***************************************************************************/ - - - -#ifndef __DPNATHLP_H__ -#define __DPNATHLP_H__ - - - -#include // for DECLARE_INTERFACE and HRESULT - - - -#ifndef DPNATHLP_EXPORTS -#define DPNATHLPAPI DECLSPEC_IMPORT -#else -#define DPNATHLPAPI -#endif - - - -#ifdef __cplusplus -extern "C" { -#endif - - - - - -/**************************************************************************** - * - * DirectPlay NAT Helper object class IDs - * - ****************************************************************************/ - -// {B9C2E9C4-68C1-4d42-A7A1-E76A26982AD6} -DEFINE_GUID(CLSID_DirectPlayNATHelpUPnP, -0xb9c2e9c4, 0x68c1, 0x4d42, 0xa7, 0xa1, 0xe7, 0x6a, 0x26, 0x98, 0x2a, 0xd6); - -// {963AB779-16A1-477c-A36D-CB5E711938F7} -DEFINE_GUID(CLSID_DirectPlayNATHelpPAST, -0x963ab779, 0x16a1, 0x477c, 0xa3, 0x6d, 0xcb, 0x5e, 0x71, 0x19, 0x38, 0xf7); - - -/**************************************************************************** - * - * DirectPlay NAT Helper interface ID - * - ****************************************************************************/ - -// {154940B6-2278-4a2f-9101-9BA9F431F603} -DEFINE_GUID(IID_IDirectPlayNATHelp, -0x154940b6, 0x2278, 0x4a2f, 0x91, 0x1, 0x9b, 0xa9, 0xf4, 0x31, 0xf6, 0x3); - -/**************************************************************************** - * - * DirectPlay NAT Helper interface pointer definitions - * - ****************************************************************************/ - -typedef struct IDirectPlayNATHelp *PDIRECTPLAYNATHELP; - - - - -/**************************************************************************** - * - * DirectPlay NAT Helper data types - * - ****************************************************************************/ - -// -// Handles used to identify specific port binding groups. If multiple ports -// are registered at the same time, the DPNHHANDLE refers to all ports. -// -typedef DWORD_PTR DPNHHANDLE, * PDPNHHANDLE; - - - - -/**************************************************************************** - * - * DirectPlay NAT Helper constants - * - ****************************************************************************/ - -#define DPNH_MAX_SIMULTANEOUS_PORTS 16 // up to 16 ports may be specified in a single RegisterPorts call - - - - -/**************************************************************************** - * - * DirectPlay NAT Helper API flags - * - ****************************************************************************/ - -// -// Flags that can be passed to Initialize -// -#define DPNHINITIALIZE_DISABLEGATEWAYSUPPORT 0x01 // disables Internet gateway traversal support (cannot be specified with DPNHINITIALIZE_DISABLELOCALFIREWALLSUPPORT) -#define DPNHINITIALIZE_DISABLELOCALFIREWALLSUPPORT 0x02 // disables local firewall traversal support (cannot be specified with DPNHINITIALIZE_DISABLEGATEWAYSUPPORT) - -// -// Flags that can be passed to GetCaps. -// -#define DPNHGETCAPS_UPDATESERVERSTATUS 0x01 // automatically extend expiring leases and detect changes in server status - -// -// Flags that can be passed to RegisterPorts. -// -#define DPNHREGISTERPORTS_TCP 0x01 // request TCP ports instead of UDP -#define DPNHREGISTERPORTS_FIXEDPORTS 0x02 // asks the server to use the same port numbers on the public interface -#define DPNHREGISTERPORTS_SHAREDPORTS 0x04 // requests that the server allow the UDP fixed ports to be shared with other clients (must be specified with DPNHREGISTERPORTS_FIXEDPORTS and cannot be specified with DPNHREGISTERPORTS_TCP) - -// -// Flags that can be passed to GetRegisteredAddresses. -// -#define DPNHGETREGISTEREDADDRESSES_LOCALFIREWALLREMAPONLY 0x01 // retrieve the public address for the local firewall only, even if mapped on remote Internet gateway - -// -// Flags that can be passed to QueryAddress. -// -#define DPNHQUERYADDRESS_TCP 0x01 // request a TCP port instead of UDP -#define DPNHQUERYADDRESS_CACHEFOUND 0x02 // cache the discovered address if found -#define DPNHQUERYADDRESS_CACHENOTFOUND 0x04 // cache the fact that no address was found, if that is the case -#define DPNHQUERYADDRESS_CHECKFORPRIVATEBUTUNMAPPED 0x08 // determine if the address is behind the same Internet gateway, but not mapped on that Internet gateway - -/**************************************************************************** - * - * DirectPlay NAT Helper structure flags - * - ****************************************************************************/ - -// -// DPNHCAPS flags -// -#define DPNHCAPSFLAG_LOCALFIREWALLPRESENT 0x01 // at least one network connection has a local firewall present -#define DPNHCAPSFLAG_GATEWAYPRESENT 0x02 // at least one network connection has an Internet gateway present -#define DPNHCAPSFLAG_GATEWAYISLOCAL 0x04 // a detected Internet gateway is local (i.e. the public address is another network interface on the same machine) -#define DPNHCAPSFLAG_PUBLICADDRESSAVAILABLE 0x08 // at least one server has a valid public address for registered mappings -#define DPNHCAPSFLAG_NOTALLSUPPORTACTIVENOTIFY 0x10 // at least one available server does not support an active-notification mechanisms and must be polled - - - -/**************************************************************************** - * - * DirectPlay NAT Helper structures - * - ****************************************************************************/ - -typedef struct _DPNHCAPS -{ - DWORD dwSize; // size of this structure, must be filled in prior to calling GetCaps - DWORD dwFlags; // flags indicating capabilities of Internet gateway server(s) - DWORD dwNumRegisteredPorts; // number of ports currently registered, including multiple ports registered at the same time (so this may not be equal to the number of DPNHHANDLEs given out) - DWORD dwMinLeaseTimeRemaining; // approximate time remaining, in milliseconds, for the lease that will expire soonest - DWORD dwRecommendedGetCapsInterval; // recommended time, in milliseconds, after which GetCaps should be called again (with DPNHGETCAPS_UPDATESERVERSTATUS flag) -} DPNHCAPS, * PDPNHCAPS; - - - -/**************************************************************************** - * - * Address type flags (returned by GetRegisteredAddresses) - * - ****************************************************************************/ - -#define DPNHADDRESSTYPE_TCP 0x01 // the mappings are for TCP ports instead of UDP -#define DPNHADDRESSTYPE_FIXEDPORTS 0x02 // the mappings are for ports which are the same on the Internet gateway -#define DPNHADDRESSTYPE_SHAREDPORTS 0x04 // the mappings are for shared UDP fixed ports -#define DPNHADDRESSTYPE_LOCALFIREWALL 0x08 // the addresses are opened on a local firewall -#define DPNHADDRESSTYPE_GATEWAY 0x10 // the addresses are registered with an Internet gateway -#define DPNHADDRESSTYPE_GATEWAYISLOCAL 0x20 // the Internet gateway is local (i.e. the public address is another network interface on the same machine) - - - - -/**************************************************************************** - * - * DirectPlay NAT Helper DLL exported functions - * - ****************************************************************************/ - -typedef HRESULT (WINAPI * PFN_DIRECTPLAYNATHELPCREATE)(const GUID * pIID, void ** ppvInterface); - - - - - -/**************************************************************************** - * - * DirectPlay NAT Helper application interfaces - * - ****************************************************************************/ - -#undef INTERFACE -#define INTERFACE IDirectPlayNATHelp -DECLARE_INTERFACE_(IDirectPlayNATHelp, IUnknown) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - /*** IDirectPlayNATHelp methods ***/ - STDMETHOD(Initialize) (THIS_ const DWORD dwFlags) PURE; - STDMETHOD(Close) (THIS_ const DWORD dwFlags) PURE; - STDMETHOD(GetCaps) (THIS_ DPNHCAPS * const dpnhcaps, const DWORD dwFlags) PURE; - STDMETHOD(RegisterPorts) (THIS_ const SOCKADDR * const aLocalAddresses, const DWORD dwAddressesSize, const DWORD dwNumAddresses, const DWORD dwLeaseTime, DPNHHANDLE * const phRegisteredPorts, const DWORD dwFlags) PURE; - STDMETHOD(GetRegisteredAddresses) (THIS_ const DPNHHANDLE hRegisteredPorts, SOCKADDR * const paPublicAddresses, DWORD * const pdwPublicAddressesSize, DWORD * const pdwAddressTypeFlags, DWORD * const pdwLeaseTimeRemaining, const DWORD dwFlags) PURE; - STDMETHOD(DeregisterPorts) (THIS_ const DPNHHANDLE hRegisteredPorts, const DWORD dwFlags) PURE; - STDMETHOD(QueryAddress) (THIS_ const SOCKADDR * const pSourceAddress, const SOCKADDR * const pQueryAddress, SOCKADDR * const pResponseAddress, const int iAddressesSize, const DWORD dwFlags) PURE; - STDMETHOD(SetAlertEvent) (THIS_ const HANDLE hEvent, const DWORD dwFlags) PURE; - STDMETHOD(SetAlertIOCompletionPort) (THIS_ const HANDLE hIOCompletionPort, const DWORD dwCompletionKey, const DWORD dwNumConcurrentThreads, const DWORD dwFlags) PURE; - STDMETHOD(ExtendRegisteredPortsLease) (THIS_ const DPNHHANDLE hRegisteredPorts, const DWORD dwLeaseTime, const DWORD dwFlags) PURE; -}; - - -/**************************************************************************** - * - * DirectPlay NAT Helper application interface macros - * - ****************************************************************************/ - -#if (! defined(__cplusplus) || defined(CINTERFACE)) - -#define IDirectPlayNATHelp_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IDirectPlayNATHelp_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDirectPlayNATHelp_Release(p) (p)->lpVtbl->Release(p) -#define IDirectPlayNATHelp_Initialize(p,a) (p)->lpVtbl->Initialize(p,a) -#define IDirectPlayNATHelp_Close(p,a) (p)->lpVtbl->Close(p,a) -#define IDirectPlayNATHelp_GetCaps(p,a,b) (p)->lpVtbl->GetCaps(p,a,b) -#define IDirectPlayNATHelp_RegisterPorts(p,a,b,c,d,e,f) (p)->lpVtbl->RegisterPorts(p,a,b,c,d,e,f) -#define IDirectPlayNATHelp_GetRegisteredAddresses(p,a,b,c,d,e,f) (p)->lpVtbl->GetRegisteredAddresses(p,a,b,c,d,e,f) -#define IDirectPlayNATHelp_DeregisterPorts(p,a,b) (p)->lpVtbl->DeregisterPorts(p,a,b) -#define IDirectPlayNATHelp_QueryAddress(p,a,b,c,d,e) (p)->lpVtbl->QueryAddress(p,a,b,c,d,e) -#define IDirectPlayNATHelp_SetAlertEvent(p,a,b) (p)->lpVtbl->SetAlertEvent(p,a,b) -#define IDirectPlayNATHelp_SetAlertIOCompletionPort(p,a,b,c,d) (p)->lpVtbl->SetAlertIOCompletionPort(p,a,b,c,d) -#define IDirectPlayNATHelp_ExtendRegisteredPortsLease(p,a,b,c) (p)->lpVtbl->ExtendRegisteredPortsLease(p,a,b,c) - - -#else // C++ - -#define IDirectPlayNATHelp_QueryInterface(p,a,b) (p)->QueryInterface(a,b) -#define IDirectPlayNATHelp_AddRef(p) (p)->AddRef() -#define IDirectPlayNATHelp_Release(p) (p)->Release() -#define IDirectPlayNATHelp_Initialize(p,a) (p)->Initialize(a) -#define IDirectPlayNATHelp_Close(p,a) (p)->Close(a) -#define IDirectPlayNATHelp_GetCaps(p,a,b) (p)->GetCaps(a,b) -#define IDirectPlayNATHelp_RegisterPorts(p,a,b,c,d,e,f) (p)->RegisterPorts(a,b,c,d,e,f) -#define IDirectPlayNATHelp_GetRegisteredAddresses(p,a,b,c,d,e,f) (p)->GetRegisteredAddresses(a,b,c,d,e,f) -#define IDirectPlayNATHelp_DeregisterPorts(p,a,b) (p)->DeregisterPorts(a,b) -#define IDirectPlayNATHelp_QueryAddress(p,a,b,c,d,e) (p)->QueryAddress(a,b,c,d,e) -#define IDirectPlayNATHelp_SetAlertEvent(p,a,b) (p)->SetAlertEvent(a,b) -#define IDirectPlayNATHelp_SetAlertIOCompletionPort(p,a,b,c,d) (p)->SetAlertIOCompletionPort(a,b,c,d) -#define IDirectPlayNATHelp_ExtendRegisteredPortsLease(p,a,b,c) (p)->ExtendRegisteredPortsLease(a,b,c) - - -#endif - - - -/**************************************************************************** - * - * DirectPlay NAT Helper return codes - * - * Errors are represented by negative values and cannot be combined. - * - ****************************************************************************/ - -#define _DPNH_FACILITY_CODE 0x015 -#define _DPNH_HRESULT_BASE 0xF000 - -#define MAKE_DPNHSUCCESS(code) MAKE_HRESULT(0, _DPNH_FACILITY_CODE, (code + _DPNH_HRESULT_BASE)) -#define MAKE_DPNHFAILURE(code) MAKE_HRESULT(1, _DPNH_FACILITY_CODE, (code + _DPNH_HRESULT_BASE)) - - - -#define DPNH_OK S_OK - -#define DPNHSUCCESS_ADDRESSESCHANGED MAKE_DPNHSUCCESS(0x10) - -#define DPNHERR_ALREADYINITIALIZED MAKE_DPNHFAILURE(0x10) -#define DPNHERR_BUFFERTOOSMALL MAKE_DPNHFAILURE(0x20) -#define DPNHERR_GENERIC E_FAIL -#define DPNHERR_INVALIDFLAGS MAKE_DPNHFAILURE(0x30) -#define DPNHERR_INVALIDOBJECT MAKE_DPNHFAILURE(0x40) -#define DPNHERR_INVALIDPARAM E_INVALIDARG -#define DPNHERR_INVALIDPOINTER E_POINTER -#define DPNHERR_NOMAPPING MAKE_DPNHFAILURE(0x50) -#define DPNHERR_NOMAPPINGBUTPRIVATE MAKE_DPNHFAILURE(0x60) -#define DPNHERR_NOTINITIALIZED MAKE_DPNHFAILURE(0x70) -#define DPNHERR_OUTOFMEMORY E_OUTOFMEMORY -#define DPNHERR_PORTALREADYREGISTERED MAKE_DPNHFAILURE(0x80) -#define DPNHERR_PORTUNAVAILABLE MAKE_DPNHFAILURE(0x90) -#define DPNHERR_REENTRANT MAKE_DPNHFAILURE(0x95) -#define DPNHERR_SERVERNOTAVAILABLE MAKE_DPNHFAILURE(0xA0) -#define DPNHERR_UPDATESERVERSTATUS MAKE_DPNHFAILURE(0xC0) - -#ifdef __cplusplus -} -#endif - -#endif // __DPNATHLP_H__ - +/*************************************************************************** + * + * Copyright (C) 2001-2002 Microsoft Corporation. All Rights Reserved. + * + * File: dpnathlp.h + * + * Content: Header for using DirectPlayNATHelp interface. + * + * + * NOTE: This interface is deprecated and should no longer be used. + * + * + ***************************************************************************/ + + + +#ifndef __DPNATHLP_H__ +#define __DPNATHLP_H__ + + + +#include // for DECLARE_INTERFACE and HRESULT + + + +#ifndef DPNATHLP_EXPORTS +#define DPNATHLPAPI DECLSPEC_IMPORT +#else +#define DPNATHLPAPI +#endif + + + +#ifdef __cplusplus +extern "C" { +#endif + + + + + +/**************************************************************************** + * + * DirectPlay NAT Helper object class IDs + * + ****************************************************************************/ + +// {B9C2E9C4-68C1-4d42-A7A1-E76A26982AD6} +DEFINE_GUID(CLSID_DirectPlayNATHelpUPnP, +0xb9c2e9c4, 0x68c1, 0x4d42, 0xa7, 0xa1, 0xe7, 0x6a, 0x26, 0x98, 0x2a, 0xd6); + +// {963AB779-16A1-477c-A36D-CB5E711938F7} +DEFINE_GUID(CLSID_DirectPlayNATHelpPAST, +0x963ab779, 0x16a1, 0x477c, 0xa3, 0x6d, 0xcb, 0x5e, 0x71, 0x19, 0x38, 0xf7); + + +/**************************************************************************** + * + * DirectPlay NAT Helper interface ID + * + ****************************************************************************/ + +// {154940B6-2278-4a2f-9101-9BA9F431F603} +DEFINE_GUID(IID_IDirectPlayNATHelp, +0x154940b6, 0x2278, 0x4a2f, 0x91, 0x1, 0x9b, 0xa9, 0xf4, 0x31, 0xf6, 0x3); + +/**************************************************************************** + * + * DirectPlay NAT Helper interface pointer definitions + * + ****************************************************************************/ + +typedef struct IDirectPlayNATHelp *PDIRECTPLAYNATHELP; + + + + +/**************************************************************************** + * + * DirectPlay NAT Helper data types + * + ****************************************************************************/ + +// +// Handles used to identify specific port binding groups. If multiple ports +// are registered at the same time, the DPNHHANDLE refers to all ports. +// +typedef DWORD_PTR DPNHHANDLE, * PDPNHHANDLE; + + + + +/**************************************************************************** + * + * DirectPlay NAT Helper constants + * + ****************************************************************************/ + +#define DPNH_MAX_SIMULTANEOUS_PORTS 16 // up to 16 ports may be specified in a single RegisterPorts call + + + + +/**************************************************************************** + * + * DirectPlay NAT Helper API flags + * + ****************************************************************************/ + +// +// Flags that can be passed to Initialize +// +#define DPNHINITIALIZE_DISABLEGATEWAYSUPPORT 0x01 // disables Internet gateway traversal support (cannot be specified with DPNHINITIALIZE_DISABLELOCALFIREWALLSUPPORT) +#define DPNHINITIALIZE_DISABLELOCALFIREWALLSUPPORT 0x02 // disables local firewall traversal support (cannot be specified with DPNHINITIALIZE_DISABLEGATEWAYSUPPORT) + +// +// Flags that can be passed to GetCaps. +// +#define DPNHGETCAPS_UPDATESERVERSTATUS 0x01 // automatically extend expiring leases and detect changes in server status + +// +// Flags that can be passed to RegisterPorts. +// +#define DPNHREGISTERPORTS_TCP 0x01 // request TCP ports instead of UDP +#define DPNHREGISTERPORTS_FIXEDPORTS 0x02 // asks the server to use the same port numbers on the public interface +#define DPNHREGISTERPORTS_SHAREDPORTS 0x04 // requests that the server allow the UDP fixed ports to be shared with other clients (must be specified with DPNHREGISTERPORTS_FIXEDPORTS and cannot be specified with DPNHREGISTERPORTS_TCP) + +// +// Flags that can be passed to GetRegisteredAddresses. +// +#define DPNHGETREGISTEREDADDRESSES_LOCALFIREWALLREMAPONLY 0x01 // retrieve the public address for the local firewall only, even if mapped on remote Internet gateway + +// +// Flags that can be passed to QueryAddress. +// +#define DPNHQUERYADDRESS_TCP 0x01 // request a TCP port instead of UDP +#define DPNHQUERYADDRESS_CACHEFOUND 0x02 // cache the discovered address if found +#define DPNHQUERYADDRESS_CACHENOTFOUND 0x04 // cache the fact that no address was found, if that is the case +#define DPNHQUERYADDRESS_CHECKFORPRIVATEBUTUNMAPPED 0x08 // determine if the address is behind the same Internet gateway, but not mapped on that Internet gateway + +/**************************************************************************** + * + * DirectPlay NAT Helper structure flags + * + ****************************************************************************/ + +// +// DPNHCAPS flags +// +#define DPNHCAPSFLAG_LOCALFIREWALLPRESENT 0x01 // at least one network connection has a local firewall present +#define DPNHCAPSFLAG_GATEWAYPRESENT 0x02 // at least one network connection has an Internet gateway present +#define DPNHCAPSFLAG_GATEWAYISLOCAL 0x04 // a detected Internet gateway is local (i.e. the public address is another network interface on the same machine) +#define DPNHCAPSFLAG_PUBLICADDRESSAVAILABLE 0x08 // at least one server has a valid public address for registered mappings +#define DPNHCAPSFLAG_NOTALLSUPPORTACTIVENOTIFY 0x10 // at least one available server does not support an active-notification mechanisms and must be polled + + + +/**************************************************************************** + * + * DirectPlay NAT Helper structures + * + ****************************************************************************/ + +typedef struct _DPNHCAPS +{ + DWORD dwSize; // size of this structure, must be filled in prior to calling GetCaps + DWORD dwFlags; // flags indicating capabilities of Internet gateway server(s) + DWORD dwNumRegisteredPorts; // number of ports currently registered, including multiple ports registered at the same time (so this may not be equal to the number of DPNHHANDLEs given out) + DWORD dwMinLeaseTimeRemaining; // approximate time remaining, in milliseconds, for the lease that will expire soonest + DWORD dwRecommendedGetCapsInterval; // recommended time, in milliseconds, after which GetCaps should be called again (with DPNHGETCAPS_UPDATESERVERSTATUS flag) +} DPNHCAPS, * PDPNHCAPS; + + + +/**************************************************************************** + * + * Address type flags (returned by GetRegisteredAddresses) + * + ****************************************************************************/ + +#define DPNHADDRESSTYPE_TCP 0x01 // the mappings are for TCP ports instead of UDP +#define DPNHADDRESSTYPE_FIXEDPORTS 0x02 // the mappings are for ports which are the same on the Internet gateway +#define DPNHADDRESSTYPE_SHAREDPORTS 0x04 // the mappings are for shared UDP fixed ports +#define DPNHADDRESSTYPE_LOCALFIREWALL 0x08 // the addresses are opened on a local firewall +#define DPNHADDRESSTYPE_GATEWAY 0x10 // the addresses are registered with an Internet gateway +#define DPNHADDRESSTYPE_GATEWAYISLOCAL 0x20 // the Internet gateway is local (i.e. the public address is another network interface on the same machine) + + + + +/**************************************************************************** + * + * DirectPlay NAT Helper DLL exported functions + * + ****************************************************************************/ + +typedef HRESULT (WINAPI * PFN_DIRECTPLAYNATHELPCREATE)(const GUID * pIID, void ** ppvInterface); + + + + + +/**************************************************************************** + * + * DirectPlay NAT Helper application interfaces + * + ****************************************************************************/ + +#undef INTERFACE +#define INTERFACE IDirectPlayNATHelp +DECLARE_INTERFACE_(IDirectPlayNATHelp, IUnknown) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + /*** IDirectPlayNATHelp methods ***/ + STDMETHOD(Initialize) (THIS_ const DWORD dwFlags) PURE; + STDMETHOD(Close) (THIS_ const DWORD dwFlags) PURE; + STDMETHOD(GetCaps) (THIS_ DPNHCAPS * const dpnhcaps, const DWORD dwFlags) PURE; + STDMETHOD(RegisterPorts) (THIS_ const SOCKADDR * const aLocalAddresses, const DWORD dwAddressesSize, const DWORD dwNumAddresses, const DWORD dwLeaseTime, DPNHHANDLE * const phRegisteredPorts, const DWORD dwFlags) PURE; + STDMETHOD(GetRegisteredAddresses) (THIS_ const DPNHHANDLE hRegisteredPorts, SOCKADDR * const paPublicAddresses, DWORD * const pdwPublicAddressesSize, DWORD * const pdwAddressTypeFlags, DWORD * const pdwLeaseTimeRemaining, const DWORD dwFlags) PURE; + STDMETHOD(DeregisterPorts) (THIS_ const DPNHHANDLE hRegisteredPorts, const DWORD dwFlags) PURE; + STDMETHOD(QueryAddress) (THIS_ const SOCKADDR * const pSourceAddress, const SOCKADDR * const pQueryAddress, SOCKADDR * const pResponseAddress, const int iAddressesSize, const DWORD dwFlags) PURE; + STDMETHOD(SetAlertEvent) (THIS_ const HANDLE hEvent, const DWORD dwFlags) PURE; + STDMETHOD(SetAlertIOCompletionPort) (THIS_ const HANDLE hIOCompletionPort, const DWORD dwCompletionKey, const DWORD dwNumConcurrentThreads, const DWORD dwFlags) PURE; + STDMETHOD(ExtendRegisteredPortsLease) (THIS_ const DPNHHANDLE hRegisteredPorts, const DWORD dwLeaseTime, const DWORD dwFlags) PURE; +}; + + +/**************************************************************************** + * + * DirectPlay NAT Helper application interface macros + * + ****************************************************************************/ + +#if (! defined(__cplusplus) || defined(CINTERFACE)) + +#define IDirectPlayNATHelp_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDirectPlayNATHelp_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectPlayNATHelp_Release(p) (p)->lpVtbl->Release(p) +#define IDirectPlayNATHelp_Initialize(p,a) (p)->lpVtbl->Initialize(p,a) +#define IDirectPlayNATHelp_Close(p,a) (p)->lpVtbl->Close(p,a) +#define IDirectPlayNATHelp_GetCaps(p,a,b) (p)->lpVtbl->GetCaps(p,a,b) +#define IDirectPlayNATHelp_RegisterPorts(p,a,b,c,d,e,f) (p)->lpVtbl->RegisterPorts(p,a,b,c,d,e,f) +#define IDirectPlayNATHelp_GetRegisteredAddresses(p,a,b,c,d,e,f) (p)->lpVtbl->GetRegisteredAddresses(p,a,b,c,d,e,f) +#define IDirectPlayNATHelp_DeregisterPorts(p,a,b) (p)->lpVtbl->DeregisterPorts(p,a,b) +#define IDirectPlayNATHelp_QueryAddress(p,a,b,c,d,e) (p)->lpVtbl->QueryAddress(p,a,b,c,d,e) +#define IDirectPlayNATHelp_SetAlertEvent(p,a,b) (p)->lpVtbl->SetAlertEvent(p,a,b) +#define IDirectPlayNATHelp_SetAlertIOCompletionPort(p,a,b,c,d) (p)->lpVtbl->SetAlertIOCompletionPort(p,a,b,c,d) +#define IDirectPlayNATHelp_ExtendRegisteredPortsLease(p,a,b,c) (p)->lpVtbl->ExtendRegisteredPortsLease(p,a,b,c) + + +#else // C++ + +#define IDirectPlayNATHelp_QueryInterface(p,a,b) (p)->QueryInterface(a,b) +#define IDirectPlayNATHelp_AddRef(p) (p)->AddRef() +#define IDirectPlayNATHelp_Release(p) (p)->Release() +#define IDirectPlayNATHelp_Initialize(p,a) (p)->Initialize(a) +#define IDirectPlayNATHelp_Close(p,a) (p)->Close(a) +#define IDirectPlayNATHelp_GetCaps(p,a,b) (p)->GetCaps(a,b) +#define IDirectPlayNATHelp_RegisterPorts(p,a,b,c,d,e,f) (p)->RegisterPorts(a,b,c,d,e,f) +#define IDirectPlayNATHelp_GetRegisteredAddresses(p,a,b,c,d,e,f) (p)->GetRegisteredAddresses(a,b,c,d,e,f) +#define IDirectPlayNATHelp_DeregisterPorts(p,a,b) (p)->DeregisterPorts(a,b) +#define IDirectPlayNATHelp_QueryAddress(p,a,b,c,d,e) (p)->QueryAddress(a,b,c,d,e) +#define IDirectPlayNATHelp_SetAlertEvent(p,a,b) (p)->SetAlertEvent(a,b) +#define IDirectPlayNATHelp_SetAlertIOCompletionPort(p,a,b,c,d) (p)->SetAlertIOCompletionPort(a,b,c,d) +#define IDirectPlayNATHelp_ExtendRegisteredPortsLease(p,a,b,c) (p)->ExtendRegisteredPortsLease(a,b,c) + + +#endif + + + +/**************************************************************************** + * + * DirectPlay NAT Helper return codes + * + * Errors are represented by negative values and cannot be combined. + * + ****************************************************************************/ + +#define _DPNH_FACILITY_CODE 0x015 +#define _DPNH_HRESULT_BASE 0xF000 + +#define MAKE_DPNHSUCCESS(code) MAKE_HRESULT(0, _DPNH_FACILITY_CODE, (code + _DPNH_HRESULT_BASE)) +#define MAKE_DPNHFAILURE(code) MAKE_HRESULT(1, _DPNH_FACILITY_CODE, (code + _DPNH_HRESULT_BASE)) + + + +#define DPNH_OK S_OK + +#define DPNHSUCCESS_ADDRESSESCHANGED MAKE_DPNHSUCCESS(0x10) + +#define DPNHERR_ALREADYINITIALIZED MAKE_DPNHFAILURE(0x10) +#define DPNHERR_BUFFERTOOSMALL MAKE_DPNHFAILURE(0x20) +#define DPNHERR_GENERIC E_FAIL +#define DPNHERR_INVALIDFLAGS MAKE_DPNHFAILURE(0x30) +#define DPNHERR_INVALIDOBJECT MAKE_DPNHFAILURE(0x40) +#define DPNHERR_INVALIDPARAM E_INVALIDARG +#define DPNHERR_INVALIDPOINTER E_POINTER +#define DPNHERR_NOMAPPING MAKE_DPNHFAILURE(0x50) +#define DPNHERR_NOMAPPINGBUTPRIVATE MAKE_DPNHFAILURE(0x60) +#define DPNHERR_NOTINITIALIZED MAKE_DPNHFAILURE(0x70) +#define DPNHERR_OUTOFMEMORY E_OUTOFMEMORY +#define DPNHERR_PORTALREADYREGISTERED MAKE_DPNHFAILURE(0x80) +#define DPNHERR_PORTUNAVAILABLE MAKE_DPNHFAILURE(0x90) +#define DPNHERR_REENTRANT MAKE_DPNHFAILURE(0x95) +#define DPNHERR_SERVERNOTAVAILABLE MAKE_DPNHFAILURE(0xA0) +#define DPNHERR_UPDATESERVERSTATUS MAKE_DPNHFAILURE(0xC0) + +#ifdef __cplusplus +} +#endif + +#endif // __DPNATHLP_H__ + diff --git a/videoInputSrcAndDemos/libs/DShow/Include/dsconf.h b/videoInputSrcAndDemos/libs/DShow/Include/dsconf.h index 64d724c..018f65a 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/dsconf.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/dsconf.h @@ -1,195 +1,195 @@ -/*==========================================================================; - * - * Copyright (c) Microsoft Corporation. All rights reserved. - * - * File: dsconf.h - * Content: DirectSound configuration interface include file - * - **************************************************************************/ - -#ifndef __DSCONF_INCLUDED__ -#define __DSCONF_INCLUDED__ - -#ifndef __DSOUND_INCLUDED__ -#error dsound.h not included -#endif // __DSOUND_INCLUDED__ - -#ifdef __cplusplus -extern "C" { -#endif // __cplusplus - - -// DirectSound Private Component GUID {11AB3EC0-25EC-11d1-A4D8-00C04FC28ACA} -DEFINE_GUID(CLSID_DirectSoundPrivate, 0x11ab3ec0, 0x25ec, 0x11d1, 0xa4, 0xd8, 0x0, 0xc0, 0x4f, 0xc2, 0x8a, 0xca); - - -// -// DirectSound Device Properties {84624F82-25EC-11d1-A4D8-00C04FC28ACA} -// - -DEFINE_GUID(DSPROPSETID_DirectSoundDevice, 0x84624f82, 0x25ec, 0x11d1, 0xa4, 0xd8, 0x0, 0xc0, 0x4f, 0xc2, 0x8a, 0xca); - -typedef enum -{ - DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_A = 1, - DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_1 = 2, - DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_1 = 3, - DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_W = 4, - DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_A = 5, - DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_W = 6, - DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_A = 7, - DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_W = 8, -} DSPROPERTY_DIRECTSOUNDDEVICE; - -#if DIRECTSOUND_VERSION >= 0x0700 -#ifdef UNICODE -#define DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_W -#define DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_W -#define DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_W -#else // UNICODE -#define DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_A -#define DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_A -#define DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_A -#endif // UNICODE -#else // DIRECTSOUND_VERSION >= 0x0700 -#define DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_A -#define DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_1 -#define DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_1 -#endif // DIRECTSOUND_VERSION >= 0x0700 - -typedef enum -{ - DIRECTSOUNDDEVICE_TYPE_EMULATED, - DIRECTSOUNDDEVICE_TYPE_VXD, - DIRECTSOUNDDEVICE_TYPE_WDM -} DIRECTSOUNDDEVICE_TYPE; - -typedef enum -{ - DIRECTSOUNDDEVICE_DATAFLOW_RENDER, - DIRECTSOUNDDEVICE_DATAFLOW_CAPTURE -} DIRECTSOUNDDEVICE_DATAFLOW; - - -typedef struct _DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_A_DATA -{ - LPSTR DeviceName; // waveIn/waveOut device name - DIRECTSOUNDDEVICE_DATAFLOW DataFlow; // Data flow (i.e. waveIn or waveOut) - GUID DeviceId; // DirectSound device id -} DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_A_DATA, *PDSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_A_DATA; - -typedef struct _DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_W_DATA -{ - LPWSTR DeviceName; // waveIn/waveOut device name - DIRECTSOUNDDEVICE_DATAFLOW DataFlow; // Data flow (i.e. waveIn or waveOut) - GUID DeviceId; // DirectSound device id -} DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_W_DATA, *PDSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_W_DATA; - -#ifdef UNICODE -#define DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_DATA DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_W_DATA -#define PDSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_DATA PDSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_W_DATA -#else // UNICODE -#define DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_DATA DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_A_DATA -#define PDSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_DATA PDSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_A_DATA -#endif // UNICODE - -typedef struct _DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_1_DATA -{ - GUID DeviceId; // DirectSound device id - CHAR DescriptionA[0x100]; // Device description (ANSI) - WCHAR DescriptionW[0x100]; // Device description (Unicode) - CHAR ModuleA[MAX_PATH]; // Device driver module (ANSI) - WCHAR ModuleW[MAX_PATH]; // Device driver module (Unicode) - DIRECTSOUNDDEVICE_TYPE Type; // Device type - DIRECTSOUNDDEVICE_DATAFLOW DataFlow; // Device dataflow - ULONG WaveDeviceId; // Wave device id - ULONG Devnode; // Devnode (or DevInst) -} DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_1_DATA, *PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_1_DATA; - -typedef struct _DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_A_DATA -{ - DIRECTSOUNDDEVICE_TYPE Type; // Device type - DIRECTSOUNDDEVICE_DATAFLOW DataFlow; // Device dataflow - GUID DeviceId; // DirectSound device id - LPSTR Description; // Device description - LPSTR Module; // Device driver module - LPSTR Interface; // Device interface - ULONG WaveDeviceId; // Wave device id -} DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_A_DATA, *PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_A_DATA; - -typedef struct _DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_W_DATA -{ - DIRECTSOUNDDEVICE_TYPE Type; // Device type - DIRECTSOUNDDEVICE_DATAFLOW DataFlow; // Device dataflow - GUID DeviceId; // DirectSound device id - LPWSTR Description; // Device description - LPWSTR Module; // Device driver module - LPWSTR Interface; // Device interface - ULONG WaveDeviceId; // Wave device id -} DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_W_DATA, *PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_W_DATA; - -#if DIRECTSOUND_VERSION >= 0x0700 -#ifdef UNICODE -#define DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_DATA DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_W_DATA -#define PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_DATA PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_W_DATA -#else // UNICODE -#define DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_DATA DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_A_DATA -#define PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_DATA PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_A_DATA -#endif // UNICODE -#else // DIRECTSOUND_VERSION >= 0x0700 -#define DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_DATA DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_1_DATA -#define PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_DATA PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_1_DATA -#endif // DIRECTSOUND_VERSION >= 0x0700 - -typedef BOOL (CALLBACK *LPFNDIRECTSOUNDDEVICEENUMERATECALLBACK1)(PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_1_DATA, LPVOID); -typedef BOOL (CALLBACK *LPFNDIRECTSOUNDDEVICEENUMERATECALLBACKA)(PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_A_DATA, LPVOID); -typedef BOOL (CALLBACK *LPFNDIRECTSOUNDDEVICEENUMERATECALLBACKW)(PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_W_DATA, LPVOID); - -#if DIRECTSOUND_VERSION >= 0x0700 -#ifdef UNICODE -#define LPFNDIRECTSOUNDDEVICEENUMERATECALLBACK LPFNDIRECTSOUNDDEVICEENUMERATECALLBACKW -#else // UNICODE -#define LPFNDIRECTSOUNDDEVICEENUMERATECALLBACK LPFNDIRECTSOUNDDEVICEENUMERATECALLBACKA -#endif // UNICODE -#else // DIRECTSOUND_VERSION >= 0x0700 -#define LPFNDIRECTSOUNDDEVICEENUMERATECALLBACK LPFNDIRECTSOUNDDEVICEENUMERATECALLBACK1 -#endif // DIRECTSOUND_VERSION >= 0x0700 - -typedef struct _DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_1_DATA -{ - LPFNDIRECTSOUNDDEVICEENUMERATECALLBACK1 Callback; // Callback function pointer - LPVOID Context; // Callback function context argument -} DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_1_DATA, *PDSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_1_DATA; - -typedef struct _DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_A_DATA -{ - LPFNDIRECTSOUNDDEVICEENUMERATECALLBACKA Callback; // Callback function pointer - LPVOID Context; // Callback function context argument -} DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_A_DATA, *PDSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_A_DATA; - -typedef struct _DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_W_DATA -{ - LPFNDIRECTSOUNDDEVICEENUMERATECALLBACKW Callback; // Callback function pointer - LPVOID Context; // Callback function context argument -} DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_W_DATA, *PDSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_W_DATA; - -#if DIRECTSOUND_VERSION >= 0x0700 -#ifdef UNICODE -#define DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_DATA DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_W_DATA -#define PDSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_DATA PDSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_W_DATA -#else // UNICODE -#define DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_DATA DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_A_DATA -#define PDSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_DATA PDSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_A_DATA -#endif // UNICODE -#else // DIRECTSOUND_VERSION >= 0x0700 -#define DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_DATA DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_1_DATA -#define PDSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_DATA PDSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_1_DATA -#endif // DIRECTSOUND_VERSION >= 0x0700 - - -#ifdef __cplusplus -} -#endif // __cplusplus - -#endif // __DSCONF_INCLUDED__ - +/*==========================================================================; + * + * Copyright (c) Microsoft Corporation. All rights reserved. + * + * File: dsconf.h + * Content: DirectSound configuration interface include file + * + **************************************************************************/ + +#ifndef __DSCONF_INCLUDED__ +#define __DSCONF_INCLUDED__ + +#ifndef __DSOUND_INCLUDED__ +#error dsound.h not included +#endif // __DSOUND_INCLUDED__ + +#ifdef __cplusplus +extern "C" { +#endif // __cplusplus + + +// DirectSound Private Component GUID {11AB3EC0-25EC-11d1-A4D8-00C04FC28ACA} +DEFINE_GUID(CLSID_DirectSoundPrivate, 0x11ab3ec0, 0x25ec, 0x11d1, 0xa4, 0xd8, 0x0, 0xc0, 0x4f, 0xc2, 0x8a, 0xca); + + +// +// DirectSound Device Properties {84624F82-25EC-11d1-A4D8-00C04FC28ACA} +// + +DEFINE_GUID(DSPROPSETID_DirectSoundDevice, 0x84624f82, 0x25ec, 0x11d1, 0xa4, 0xd8, 0x0, 0xc0, 0x4f, 0xc2, 0x8a, 0xca); + +typedef enum +{ + DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_A = 1, + DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_1 = 2, + DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_1 = 3, + DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_W = 4, + DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_A = 5, + DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_W = 6, + DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_A = 7, + DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_W = 8, +} DSPROPERTY_DIRECTSOUNDDEVICE; + +#if DIRECTSOUND_VERSION >= 0x0700 +#ifdef UNICODE +#define DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_W +#define DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_W +#define DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_W +#else // UNICODE +#define DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_A +#define DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_A +#define DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_A +#endif // UNICODE +#else // DIRECTSOUND_VERSION >= 0x0700 +#define DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_A +#define DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_1 +#define DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_1 +#endif // DIRECTSOUND_VERSION >= 0x0700 + +typedef enum +{ + DIRECTSOUNDDEVICE_TYPE_EMULATED, + DIRECTSOUNDDEVICE_TYPE_VXD, + DIRECTSOUNDDEVICE_TYPE_WDM +} DIRECTSOUNDDEVICE_TYPE; + +typedef enum +{ + DIRECTSOUNDDEVICE_DATAFLOW_RENDER, + DIRECTSOUNDDEVICE_DATAFLOW_CAPTURE +} DIRECTSOUNDDEVICE_DATAFLOW; + + +typedef struct _DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_A_DATA +{ + LPSTR DeviceName; // waveIn/waveOut device name + DIRECTSOUNDDEVICE_DATAFLOW DataFlow; // Data flow (i.e. waveIn or waveOut) + GUID DeviceId; // DirectSound device id +} DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_A_DATA, *PDSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_A_DATA; + +typedef struct _DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_W_DATA +{ + LPWSTR DeviceName; // waveIn/waveOut device name + DIRECTSOUNDDEVICE_DATAFLOW DataFlow; // Data flow (i.e. waveIn or waveOut) + GUID DeviceId; // DirectSound device id +} DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_W_DATA, *PDSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_W_DATA; + +#ifdef UNICODE +#define DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_DATA DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_W_DATA +#define PDSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_DATA PDSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_W_DATA +#else // UNICODE +#define DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_DATA DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_A_DATA +#define PDSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_DATA PDSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_A_DATA +#endif // UNICODE + +typedef struct _DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_1_DATA +{ + GUID DeviceId; // DirectSound device id + CHAR DescriptionA[0x100]; // Device description (ANSI) + WCHAR DescriptionW[0x100]; // Device description (Unicode) + CHAR ModuleA[MAX_PATH]; // Device driver module (ANSI) + WCHAR ModuleW[MAX_PATH]; // Device driver module (Unicode) + DIRECTSOUNDDEVICE_TYPE Type; // Device type + DIRECTSOUNDDEVICE_DATAFLOW DataFlow; // Device dataflow + ULONG WaveDeviceId; // Wave device id + ULONG Devnode; // Devnode (or DevInst) +} DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_1_DATA, *PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_1_DATA; + +typedef struct _DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_A_DATA +{ + DIRECTSOUNDDEVICE_TYPE Type; // Device type + DIRECTSOUNDDEVICE_DATAFLOW DataFlow; // Device dataflow + GUID DeviceId; // DirectSound device id + LPSTR Description; // Device description + LPSTR Module; // Device driver module + LPSTR Interface; // Device interface + ULONG WaveDeviceId; // Wave device id +} DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_A_DATA, *PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_A_DATA; + +typedef struct _DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_W_DATA +{ + DIRECTSOUNDDEVICE_TYPE Type; // Device type + DIRECTSOUNDDEVICE_DATAFLOW DataFlow; // Device dataflow + GUID DeviceId; // DirectSound device id + LPWSTR Description; // Device description + LPWSTR Module; // Device driver module + LPWSTR Interface; // Device interface + ULONG WaveDeviceId; // Wave device id +} DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_W_DATA, *PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_W_DATA; + +#if DIRECTSOUND_VERSION >= 0x0700 +#ifdef UNICODE +#define DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_DATA DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_W_DATA +#define PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_DATA PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_W_DATA +#else // UNICODE +#define DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_DATA DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_A_DATA +#define PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_DATA PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_A_DATA +#endif // UNICODE +#else // DIRECTSOUND_VERSION >= 0x0700 +#define DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_DATA DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_1_DATA +#define PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_DATA PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_1_DATA +#endif // DIRECTSOUND_VERSION >= 0x0700 + +typedef BOOL (CALLBACK *LPFNDIRECTSOUNDDEVICEENUMERATECALLBACK1)(PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_1_DATA, LPVOID); +typedef BOOL (CALLBACK *LPFNDIRECTSOUNDDEVICEENUMERATECALLBACKA)(PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_A_DATA, LPVOID); +typedef BOOL (CALLBACK *LPFNDIRECTSOUNDDEVICEENUMERATECALLBACKW)(PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_W_DATA, LPVOID); + +#if DIRECTSOUND_VERSION >= 0x0700 +#ifdef UNICODE +#define LPFNDIRECTSOUNDDEVICEENUMERATECALLBACK LPFNDIRECTSOUNDDEVICEENUMERATECALLBACKW +#else // UNICODE +#define LPFNDIRECTSOUNDDEVICEENUMERATECALLBACK LPFNDIRECTSOUNDDEVICEENUMERATECALLBACKA +#endif // UNICODE +#else // DIRECTSOUND_VERSION >= 0x0700 +#define LPFNDIRECTSOUNDDEVICEENUMERATECALLBACK LPFNDIRECTSOUNDDEVICEENUMERATECALLBACK1 +#endif // DIRECTSOUND_VERSION >= 0x0700 + +typedef struct _DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_1_DATA +{ + LPFNDIRECTSOUNDDEVICEENUMERATECALLBACK1 Callback; // Callback function pointer + LPVOID Context; // Callback function context argument +} DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_1_DATA, *PDSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_1_DATA; + +typedef struct _DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_A_DATA +{ + LPFNDIRECTSOUNDDEVICEENUMERATECALLBACKA Callback; // Callback function pointer + LPVOID Context; // Callback function context argument +} DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_A_DATA, *PDSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_A_DATA; + +typedef struct _DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_W_DATA +{ + LPFNDIRECTSOUNDDEVICEENUMERATECALLBACKW Callback; // Callback function pointer + LPVOID Context; // Callback function context argument +} DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_W_DATA, *PDSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_W_DATA; + +#if DIRECTSOUND_VERSION >= 0x0700 +#ifdef UNICODE +#define DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_DATA DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_W_DATA +#define PDSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_DATA PDSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_W_DATA +#else // UNICODE +#define DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_DATA DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_A_DATA +#define PDSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_DATA PDSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_A_DATA +#endif // UNICODE +#else // DIRECTSOUND_VERSION >= 0x0700 +#define DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_DATA DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_1_DATA +#define PDSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_DATA PDSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_1_DATA +#endif // DIRECTSOUND_VERSION >= 0x0700 + + +#ifdef __cplusplus +} +#endif // __cplusplus + +#endif // __DSCONF_INCLUDED__ + diff --git a/videoInputSrcAndDemos/libs/DShow/Include/dsetup.h b/videoInputSrcAndDemos/libs/DShow/Include/dsetup.h index 97db505..0f4e3b0 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/dsetup.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/dsetup.h @@ -1,287 +1,287 @@ -/*========================================================================== - * - * Copyright (C) 1995-1997 Microsoft Corporation. All Rights Reserved. - * - * File: dsetup.h - * Content: DirectXSetup, error codes and flags - ***************************************************************************/ - -#ifndef __DSETUP_H__ -#define __DSETUP_H__ - -#include // windows stuff - -#ifdef _WIN32 -#define COM_NO_WINDOWS_H -#include -#else -#endif - - -#ifdef __cplusplus -extern "C" { -#endif - -#define FOURCC_VERS mmioFOURCC('v','e','r','s') - -// DSETUP Error Codes, must remain compatible with previous setup. -#define DSETUPERR_SUCCESS_RESTART 1 -#define DSETUPERR_SUCCESS 0 -#define DSETUPERR_BADWINDOWSVERSION -1 -#define DSETUPERR_SOURCEFILENOTFOUND -2 -#define DSETUPERR_NOCOPY -5 -#define DSETUPERR_OUTOFDISKSPACE -6 -#define DSETUPERR_CANTFINDINF -7 -#define DSETUPERR_CANTFINDDIR -8 -#define DSETUPERR_INTERNAL -9 -#define DSETUPERR_UNKNOWNOS -11 -#define DSETUPERR_NEWERVERSION -14 -#define DSETUPERR_NOTADMIN -15 -#define DSETUPERR_UNSUPPORTEDPROCESSOR -16 -#define DSETUPERR_MISSINGCAB_MANAGEDDX -17 -#define DSETUPERR_NODOTNETFRAMEWORKINSTALLED -18 -#define DSETUPERR_CABDOWNLOADFAIL -19 - -// DSETUP flags. DirectX 5.0 apps should use these flags only. -#define DSETUP_DDRAWDRV 0x00000008 /* install DirectDraw Drivers */ -#define DSETUP_DSOUNDDRV 0x00000010 /* install DirectSound Drivers */ -#define DSETUP_DXCORE 0x00010000 /* install DirectX runtime */ -#define DSETUP_DIRECTX (DSETUP_DXCORE|DSETUP_DDRAWDRV|DSETUP_DSOUNDDRV) -#define DSETUP_MANAGEDDX 0x00004000 /* install managed DirectX */ -#define DSETUP_TESTINSTALL 0x00020000 /* just test install, don't do anything */ - -// These OBSOLETE flags are here for compatibility with pre-DX5 apps only. -// They are present to allow DX3 apps to be recompiled with DX5 and still work. -// DO NOT USE THEM for DX5. They will go away in future DX releases. -#define DSETUP_DDRAW 0x00000001 /* OBSOLETE. install DirectDraw */ -#define DSETUP_DSOUND 0x00000002 /* OBSOLETE. install DirectSound */ -#define DSETUP_DPLAY 0x00000004 /* OBSOLETE. install DirectPlay */ -#define DSETUP_DPLAYSP 0x00000020 /* OBSOLETE. install DirectPlay Providers */ -#define DSETUP_DVIDEO 0x00000040 /* OBSOLETE. install DirectVideo */ -#define DSETUP_D3D 0x00000200 /* OBSOLETE. install Direct3D */ -#define DSETUP_DINPUT 0x00000800 /* OBSOLETE. install DirectInput */ -#define DSETUP_DIRECTXSETUP 0x00001000 /* OBSOLETE. install DirectXSetup DLL's */ -#define DSETUP_NOUI 0x00002000 /* OBSOLETE. install DirectX with NO UI */ -#define DSETUP_PROMPTFORDRIVERS 0x10000000 /* OBSOLETE. prompt when replacing display/audio drivers */ -#define DSETUP_RESTOREDRIVERS 0x20000000 /* OBSOLETE. restore display/audio drivers */ - - - -//****************************************************************** -// DirectX Setup Callback mechanism -//****************************************************************** - -// DSETUP Message Info Codes, passed to callback as Reason parameter. -#define DSETUP_CB_MSG_NOMESSAGE 0 -#define DSETUP_CB_MSG_INTERNAL_ERROR 10 -#define DSETUP_CB_MSG_BEGIN_INSTALL 13 -#define DSETUP_CB_MSG_BEGIN_INSTALL_RUNTIME 14 -#define DSETUP_CB_MSG_PROGRESS 18 -#define DSETUP_CB_MSG_WARNING_DISABLED_COMPONENT 19 - - - - - -typedef struct _DSETUP_CB_PROGRESS -{ - DWORD dwPhase; - DWORD dwInPhaseMaximum; - DWORD dwInPhaseProgress; - DWORD dwOverallMaximum; - DWORD dwOverallProgress; -} DSETUP_CB_PROGRESS; - - -enum _DSETUP_CB_PROGRESS_PHASE -{ - DSETUP_INITIALIZING, - DSETUP_EXTRACTING, - DSETUP_COPYING, - DSETUP_FINALIZING -}; - - -#ifdef _WIN32 -// -// Data Structures -// -#ifndef UNICODE_ONLY - -typedef struct _DIRECTXREGISTERAPPA { - DWORD dwSize; - DWORD dwFlags; - LPSTR lpszApplicationName; - LPGUID lpGUID; - LPSTR lpszFilename; - LPSTR lpszCommandLine; - LPSTR lpszPath; - LPSTR lpszCurrentDirectory; -} DIRECTXREGISTERAPPA, *PDIRECTXREGISTERAPPA, *LPDIRECTXREGISTERAPPA; - -typedef struct _DIRECTXREGISTERAPP2A { - DWORD dwSize; - DWORD dwFlags; - LPSTR lpszApplicationName; - LPGUID lpGUID; - LPSTR lpszFilename; - LPSTR lpszCommandLine; - LPSTR lpszPath; - LPSTR lpszCurrentDirectory; - LPSTR lpszLauncherName; -} DIRECTXREGISTERAPP2A, *PDIRECTXREGISTERAPP2A, *LPDIRECTXREGISTERAPP2A; - -#endif //!UNICODE_ONLY -#ifndef ANSI_ONLY - -typedef struct _DIRECTXREGISTERAPPW { - DWORD dwSize; - DWORD dwFlags; - LPWSTR lpszApplicationName; - LPGUID lpGUID; - LPWSTR lpszFilename; - LPWSTR lpszCommandLine; - LPWSTR lpszPath; - LPWSTR lpszCurrentDirectory; -} DIRECTXREGISTERAPPW, *PDIRECTXREGISTERAPPW, *LPDIRECTXREGISTERAPPW; - -typedef struct _DIRECTXREGISTERAPP2W { - DWORD dwSize; - DWORD dwFlags; - LPWSTR lpszApplicationName; - LPGUID lpGUID; - LPWSTR lpszFilename; - LPWSTR lpszCommandLine; - LPWSTR lpszPath; - LPWSTR lpszCurrentDirectory; - LPWSTR lpszLauncherName; -} DIRECTXREGISTERAPP2W, *PDIRECTXREGISTERAPP2W, *LPDIRECTXREGISTERAPP2W; -#endif //!ANSI_ONLY -#ifdef UNICODE -typedef DIRECTXREGISTERAPPW DIRECTXREGISTERAPP; -typedef PDIRECTXREGISTERAPPW PDIRECTXREGISTERAPP; -typedef LPDIRECTXREGISTERAPPW LPDIRECTXREGISTERAPP; -typedef DIRECTXREGISTERAPP2W DIRECTXREGISTERAPP2; -typedef PDIRECTXREGISTERAPP2W PDIRECTXREGISTERAPP2; -typedef LPDIRECTXREGISTERAPP2W LPDIRECTXREGISTERAPP2; -#else -typedef DIRECTXREGISTERAPPA DIRECTXREGISTERAPP; -typedef PDIRECTXREGISTERAPPA PDIRECTXREGISTERAPP; -typedef LPDIRECTXREGISTERAPPA LPDIRECTXREGISTERAPP; -typedef DIRECTXREGISTERAPP2A DIRECTXREGISTERAPP2; -typedef PDIRECTXREGISTERAPP2A PDIRECTXREGISTERAPP2; -typedef LPDIRECTXREGISTERAPP2A LPDIRECTXREGISTERAPP2; -#endif // UNICODE - - -// -// API -// - -#ifndef UNICODE_ONLY -INT -WINAPI -DirectXSetupA( - HWND hWnd, - LPSTR lpszRootPath, - DWORD dwFlags - ); -#endif //!UNICODE_ONLY -#ifndef ANSI_ONLY -INT -WINAPI -DirectXSetupW( - HWND hWnd, - LPWSTR lpszRootPath, - DWORD dwFlags - ); -#endif //!ANSI_ONLY -#ifdef UNICODE -#define DirectXSetup DirectXSetupW -#else -#define DirectXSetup DirectXSetupA -#endif // !UNICODE - -#ifndef UNICODE_ONLY -INT -WINAPI -DirectXRegisterApplicationA( - HWND hWnd, - LPVOID lpDXRegApp - ); -#endif //!UNICODE_ONLY -#ifndef ANSI_ONLY -INT -WINAPI -DirectXRegisterApplicationW( - HWND hWnd, - LPVOID lpDXRegApp - ); -#endif //!ANSI_ONLY -#ifdef UNICODE -#define DirectXRegisterApplication DirectXRegisterApplicationW -#else -#define DirectXRegisterApplication DirectXRegisterApplicationA -#endif // !UNICODE - -INT -WINAPI -DirectXUnRegisterApplication( - HWND hWnd, - LPGUID lpGUID - ); - -// -// Function Pointers -// -#ifdef UNICODE -typedef INT (WINAPI * LPDIRECTXSETUP)(HWND, LPWSTR, DWORD); -typedef INT (WINAPI * LPDIRECTXREGISTERAPPLICATION)(HWND, LPVOID); -#else -typedef INT (WINAPI * LPDIRECTXSETUP)(HWND, LPSTR, DWORD); -typedef INT (WINAPI * LPDIRECTXREGISTERAPPLICATION)(HWND, LPVOID); -#endif // UNICODE - -typedef DWORD (FAR PASCAL * DSETUP_CALLBACK)(DWORD Reason, - DWORD MsgType, /* Same as flags to MessageBox */ - LPSTR szMessage, - LPSTR szName, - void *pInfo); - -INT WINAPI DirectXSetupSetCallback(DSETUP_CALLBACK Callback); -INT WINAPI DirectXSetupGetVersion(DWORD *lpdwVersion, DWORD *lpdwMinorVersion); -INT WINAPI DirectXSetupShowEULA(HWND hWndParent); -#ifndef UNICODE_ONLY -UINT -WINAPI -DirectXSetupGetEULAA( - LPSTR lpszEULA, - UINT cchEULA, - WORD LangID - ); -#endif //!UNICODE_ONLY -#ifndef ANSI_ONLY -UINT -WINAPI -DirectXSetupGetEULAW( - LPWSTR lpszEULA, - UINT cchEULA, - WORD LangID - ); -#endif //!ANSI_ONLY -#ifdef UNICODE -#define DirectXSetupGetEULA DirectXSetupGetEULAW -typedef UINT (WINAPI * LPDIRECTXSETUPGETEULA)(LPWSTR, UINT, WORD); -#else -#define DirectXSetupGetEULA DirectXSetupGetEULAA -typedef UINT (WINAPI * LPDIRECTXSETUPGETEULA)(LPSTR, UINT, WORD); -#endif // !UNICODE - -#endif // WIN32 - - -#ifdef __cplusplus -}; -#endif - -#endif +/*========================================================================== + * + * Copyright (C) 1995-1997 Microsoft Corporation. All Rights Reserved. + * + * File: dsetup.h + * Content: DirectXSetup, error codes and flags + ***************************************************************************/ + +#ifndef __DSETUP_H__ +#define __DSETUP_H__ + +#include // windows stuff + +#ifdef _WIN32 +#define COM_NO_WINDOWS_H +#include +#else +#endif + + +#ifdef __cplusplus +extern "C" { +#endif + +#define FOURCC_VERS mmioFOURCC('v','e','r','s') + +// DSETUP Error Codes, must remain compatible with previous setup. +#define DSETUPERR_SUCCESS_RESTART 1 +#define DSETUPERR_SUCCESS 0 +#define DSETUPERR_BADWINDOWSVERSION -1 +#define DSETUPERR_SOURCEFILENOTFOUND -2 +#define DSETUPERR_NOCOPY -5 +#define DSETUPERR_OUTOFDISKSPACE -6 +#define DSETUPERR_CANTFINDINF -7 +#define DSETUPERR_CANTFINDDIR -8 +#define DSETUPERR_INTERNAL -9 +#define DSETUPERR_UNKNOWNOS -11 +#define DSETUPERR_NEWERVERSION -14 +#define DSETUPERR_NOTADMIN -15 +#define DSETUPERR_UNSUPPORTEDPROCESSOR -16 +#define DSETUPERR_MISSINGCAB_MANAGEDDX -17 +#define DSETUPERR_NODOTNETFRAMEWORKINSTALLED -18 +#define DSETUPERR_CABDOWNLOADFAIL -19 + +// DSETUP flags. DirectX 5.0 apps should use these flags only. +#define DSETUP_DDRAWDRV 0x00000008 /* install DirectDraw Drivers */ +#define DSETUP_DSOUNDDRV 0x00000010 /* install DirectSound Drivers */ +#define DSETUP_DXCORE 0x00010000 /* install DirectX runtime */ +#define DSETUP_DIRECTX (DSETUP_DXCORE|DSETUP_DDRAWDRV|DSETUP_DSOUNDDRV) +#define DSETUP_MANAGEDDX 0x00004000 /* install managed DirectX */ +#define DSETUP_TESTINSTALL 0x00020000 /* just test install, don't do anything */ + +// These OBSOLETE flags are here for compatibility with pre-DX5 apps only. +// They are present to allow DX3 apps to be recompiled with DX5 and still work. +// DO NOT USE THEM for DX5. They will go away in future DX releases. +#define DSETUP_DDRAW 0x00000001 /* OBSOLETE. install DirectDraw */ +#define DSETUP_DSOUND 0x00000002 /* OBSOLETE. install DirectSound */ +#define DSETUP_DPLAY 0x00000004 /* OBSOLETE. install DirectPlay */ +#define DSETUP_DPLAYSP 0x00000020 /* OBSOLETE. install DirectPlay Providers */ +#define DSETUP_DVIDEO 0x00000040 /* OBSOLETE. install DirectVideo */ +#define DSETUP_D3D 0x00000200 /* OBSOLETE. install Direct3D */ +#define DSETUP_DINPUT 0x00000800 /* OBSOLETE. install DirectInput */ +#define DSETUP_DIRECTXSETUP 0x00001000 /* OBSOLETE. install DirectXSetup DLL's */ +#define DSETUP_NOUI 0x00002000 /* OBSOLETE. install DirectX with NO UI */ +#define DSETUP_PROMPTFORDRIVERS 0x10000000 /* OBSOLETE. prompt when replacing display/audio drivers */ +#define DSETUP_RESTOREDRIVERS 0x20000000 /* OBSOLETE. restore display/audio drivers */ + + + +//****************************************************************** +// DirectX Setup Callback mechanism +//****************************************************************** + +// DSETUP Message Info Codes, passed to callback as Reason parameter. +#define DSETUP_CB_MSG_NOMESSAGE 0 +#define DSETUP_CB_MSG_INTERNAL_ERROR 10 +#define DSETUP_CB_MSG_BEGIN_INSTALL 13 +#define DSETUP_CB_MSG_BEGIN_INSTALL_RUNTIME 14 +#define DSETUP_CB_MSG_PROGRESS 18 +#define DSETUP_CB_MSG_WARNING_DISABLED_COMPONENT 19 + + + + + +typedef struct _DSETUP_CB_PROGRESS +{ + DWORD dwPhase; + DWORD dwInPhaseMaximum; + DWORD dwInPhaseProgress; + DWORD dwOverallMaximum; + DWORD dwOverallProgress; +} DSETUP_CB_PROGRESS; + + +enum _DSETUP_CB_PROGRESS_PHASE +{ + DSETUP_INITIALIZING, + DSETUP_EXTRACTING, + DSETUP_COPYING, + DSETUP_FINALIZING +}; + + +#ifdef _WIN32 +// +// Data Structures +// +#ifndef UNICODE_ONLY + +typedef struct _DIRECTXREGISTERAPPA { + DWORD dwSize; + DWORD dwFlags; + LPSTR lpszApplicationName; + LPGUID lpGUID; + LPSTR lpszFilename; + LPSTR lpszCommandLine; + LPSTR lpszPath; + LPSTR lpszCurrentDirectory; +} DIRECTXREGISTERAPPA, *PDIRECTXREGISTERAPPA, *LPDIRECTXREGISTERAPPA; + +typedef struct _DIRECTXREGISTERAPP2A { + DWORD dwSize; + DWORD dwFlags; + LPSTR lpszApplicationName; + LPGUID lpGUID; + LPSTR lpszFilename; + LPSTR lpszCommandLine; + LPSTR lpszPath; + LPSTR lpszCurrentDirectory; + LPSTR lpszLauncherName; +} DIRECTXREGISTERAPP2A, *PDIRECTXREGISTERAPP2A, *LPDIRECTXREGISTERAPP2A; + +#endif //!UNICODE_ONLY +#ifndef ANSI_ONLY + +typedef struct _DIRECTXREGISTERAPPW { + DWORD dwSize; + DWORD dwFlags; + LPWSTR lpszApplicationName; + LPGUID lpGUID; + LPWSTR lpszFilename; + LPWSTR lpszCommandLine; + LPWSTR lpszPath; + LPWSTR lpszCurrentDirectory; +} DIRECTXREGISTERAPPW, *PDIRECTXREGISTERAPPW, *LPDIRECTXREGISTERAPPW; + +typedef struct _DIRECTXREGISTERAPP2W { + DWORD dwSize; + DWORD dwFlags; + LPWSTR lpszApplicationName; + LPGUID lpGUID; + LPWSTR lpszFilename; + LPWSTR lpszCommandLine; + LPWSTR lpszPath; + LPWSTR lpszCurrentDirectory; + LPWSTR lpszLauncherName; +} DIRECTXREGISTERAPP2W, *PDIRECTXREGISTERAPP2W, *LPDIRECTXREGISTERAPP2W; +#endif //!ANSI_ONLY +#ifdef UNICODE +typedef DIRECTXREGISTERAPPW DIRECTXREGISTERAPP; +typedef PDIRECTXREGISTERAPPW PDIRECTXREGISTERAPP; +typedef LPDIRECTXREGISTERAPPW LPDIRECTXREGISTERAPP; +typedef DIRECTXREGISTERAPP2W DIRECTXREGISTERAPP2; +typedef PDIRECTXREGISTERAPP2W PDIRECTXREGISTERAPP2; +typedef LPDIRECTXREGISTERAPP2W LPDIRECTXREGISTERAPP2; +#else +typedef DIRECTXREGISTERAPPA DIRECTXREGISTERAPP; +typedef PDIRECTXREGISTERAPPA PDIRECTXREGISTERAPP; +typedef LPDIRECTXREGISTERAPPA LPDIRECTXREGISTERAPP; +typedef DIRECTXREGISTERAPP2A DIRECTXREGISTERAPP2; +typedef PDIRECTXREGISTERAPP2A PDIRECTXREGISTERAPP2; +typedef LPDIRECTXREGISTERAPP2A LPDIRECTXREGISTERAPP2; +#endif // UNICODE + + +// +// API +// + +#ifndef UNICODE_ONLY +INT +WINAPI +DirectXSetupA( + HWND hWnd, + LPSTR lpszRootPath, + DWORD dwFlags + ); +#endif //!UNICODE_ONLY +#ifndef ANSI_ONLY +INT +WINAPI +DirectXSetupW( + HWND hWnd, + LPWSTR lpszRootPath, + DWORD dwFlags + ); +#endif //!ANSI_ONLY +#ifdef UNICODE +#define DirectXSetup DirectXSetupW +#else +#define DirectXSetup DirectXSetupA +#endif // !UNICODE + +#ifndef UNICODE_ONLY +INT +WINAPI +DirectXRegisterApplicationA( + HWND hWnd, + LPVOID lpDXRegApp + ); +#endif //!UNICODE_ONLY +#ifndef ANSI_ONLY +INT +WINAPI +DirectXRegisterApplicationW( + HWND hWnd, + LPVOID lpDXRegApp + ); +#endif //!ANSI_ONLY +#ifdef UNICODE +#define DirectXRegisterApplication DirectXRegisterApplicationW +#else +#define DirectXRegisterApplication DirectXRegisterApplicationA +#endif // !UNICODE + +INT +WINAPI +DirectXUnRegisterApplication( + HWND hWnd, + LPGUID lpGUID + ); + +// +// Function Pointers +// +#ifdef UNICODE +typedef INT (WINAPI * LPDIRECTXSETUP)(HWND, LPWSTR, DWORD); +typedef INT (WINAPI * LPDIRECTXREGISTERAPPLICATION)(HWND, LPVOID); +#else +typedef INT (WINAPI * LPDIRECTXSETUP)(HWND, LPSTR, DWORD); +typedef INT (WINAPI * LPDIRECTXREGISTERAPPLICATION)(HWND, LPVOID); +#endif // UNICODE + +typedef DWORD (FAR PASCAL * DSETUP_CALLBACK)(DWORD Reason, + DWORD MsgType, /* Same as flags to MessageBox */ + LPSTR szMessage, + LPSTR szName, + void *pInfo); + +INT WINAPI DirectXSetupSetCallback(DSETUP_CALLBACK Callback); +INT WINAPI DirectXSetupGetVersion(DWORD *lpdwVersion, DWORD *lpdwMinorVersion); +INT WINAPI DirectXSetupShowEULA(HWND hWndParent); +#ifndef UNICODE_ONLY +UINT +WINAPI +DirectXSetupGetEULAA( + LPSTR lpszEULA, + UINT cchEULA, + WORD LangID + ); +#endif //!UNICODE_ONLY +#ifndef ANSI_ONLY +UINT +WINAPI +DirectXSetupGetEULAW( + LPWSTR lpszEULA, + UINT cchEULA, + WORD LangID + ); +#endif //!ANSI_ONLY +#ifdef UNICODE +#define DirectXSetupGetEULA DirectXSetupGetEULAW +typedef UINT (WINAPI * LPDIRECTXSETUPGETEULA)(LPWSTR, UINT, WORD); +#else +#define DirectXSetupGetEULA DirectXSetupGetEULAA +typedef UINT (WINAPI * LPDIRECTXSETUPGETEULA)(LPSTR, UINT, WORD); +#endif // !UNICODE + +#endif // WIN32 + + +#ifdef __cplusplus +}; +#endif + +#endif diff --git a/videoInputSrcAndDemos/libs/DShow/Include/dshowasf.h b/videoInputSrcAndDemos/libs/DShow/Include/dshowasf.h index 79cce05..14d1948 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/dshowasf.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/dshowasf.h @@ -1,329 +1,329 @@ - -#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.0338 */ -/* Compiler settings for dshowasf.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 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 -#endif // __RPCNDR_H_VERSION__ - -#ifndef COM_NO_WINDOWS_H -#include "windows.h" -#include "ole2.h" -#endif /*COM_NO_WINDOWS_H*/ - -#ifndef __dshowasf_h__ -#define __dshowasf_h__ - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -#pragma once -#endif - -/* Forward Declarations */ - -#ifndef __IConfigAsfWriter_FWD_DEFINED__ -#define __IConfigAsfWriter_FWD_DEFINED__ -typedef interface IConfigAsfWriter IConfigAsfWriter; -#endif /* __IConfigAsfWriter_FWD_DEFINED__ */ - - -/* header files for imported files */ -#include "unknwn.h" -#include "objidl.h" -#include "strmif.h" -#include "wmsdkidl.h" - -#ifdef __cplusplus -extern "C"{ -#endif - -void * __RPC_USER MIDL_user_allocate(size_t); -void __RPC_USER MIDL_user_free( void * ); - -/* interface __MIDL_itf_dshowasf_0000 */ -/* [local] */ - -EXTERN_GUID( IID_IConfigAsfWriter,0x45086030,0xF7E4,0x486a,0xB5,0x04,0x82,0x6B,0xB5,0x79,0x2A,0x3B ); - - - - -extern RPC_IF_HANDLE __MIDL_itf_dshowasf_0000_v0_0_c_ifspec; -extern RPC_IF_HANDLE __MIDL_itf_dshowasf_0000_v0_0_s_ifspec; - -#ifndef __IConfigAsfWriter_INTERFACE_DEFINED__ -#define __IConfigAsfWriter_INTERFACE_DEFINED__ - -/* interface IConfigAsfWriter */ -/* [unique][uuid][object] */ - - -EXTERN_C const IID IID_IConfigAsfWriter; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("45086030-F7E4-486a-B504-826BB5792A3B") - IConfigAsfWriter : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE ConfigureFilterUsingProfileId( - /* [in] */ DWORD dwProfileId) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetCurrentProfileId( - /* [out] */ DWORD *pdwProfileId) = 0; - - virtual HRESULT STDMETHODCALLTYPE ConfigureFilterUsingProfileGuid( - /* [in] */ REFGUID guidProfile) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetCurrentProfileGuid( - /* [out] */ GUID *pProfileGuid) = 0; - - virtual HRESULT STDMETHODCALLTYPE ConfigureFilterUsingProfile( - /* [in] */ IWMProfile *pProfile) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetCurrentProfile( - /* [out] */ IWMProfile **ppProfile) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetIndexMode( - /* [in] */ BOOL bIndexFile) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetIndexMode( - /* [out] */ BOOL *pbIndexFile) = 0; - - }; - -#else /* C style interface */ - - typedef struct IConfigAsfWriterVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IConfigAsfWriter * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IConfigAsfWriter * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IConfigAsfWriter * This); - - HRESULT ( STDMETHODCALLTYPE *ConfigureFilterUsingProfileId )( - IConfigAsfWriter * This, - /* [in] */ DWORD dwProfileId); - - HRESULT ( STDMETHODCALLTYPE *GetCurrentProfileId )( - IConfigAsfWriter * This, - /* [out] */ DWORD *pdwProfileId); - - HRESULT ( STDMETHODCALLTYPE *ConfigureFilterUsingProfileGuid )( - IConfigAsfWriter * This, - /* [in] */ REFGUID guidProfile); - - HRESULT ( STDMETHODCALLTYPE *GetCurrentProfileGuid )( - IConfigAsfWriter * This, - /* [out] */ GUID *pProfileGuid); - - HRESULT ( STDMETHODCALLTYPE *ConfigureFilterUsingProfile )( - IConfigAsfWriter * This, - /* [in] */ IWMProfile *pProfile); - - HRESULT ( STDMETHODCALLTYPE *GetCurrentProfile )( - IConfigAsfWriter * This, - /* [out] */ IWMProfile **ppProfile); - - HRESULT ( STDMETHODCALLTYPE *SetIndexMode )( - IConfigAsfWriter * This, - /* [in] */ BOOL bIndexFile); - - HRESULT ( STDMETHODCALLTYPE *GetIndexMode )( - IConfigAsfWriter * This, - /* [out] */ BOOL *pbIndexFile); - - END_INTERFACE - } IConfigAsfWriterVtbl; - - interface IConfigAsfWriter - { - CONST_VTBL struct IConfigAsfWriterVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IConfigAsfWriter_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IConfigAsfWriter_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IConfigAsfWriter_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IConfigAsfWriter_ConfigureFilterUsingProfileId(This,dwProfileId) \ - (This)->lpVtbl -> ConfigureFilterUsingProfileId(This,dwProfileId) - -#define IConfigAsfWriter_GetCurrentProfileId(This,pdwProfileId) \ - (This)->lpVtbl -> GetCurrentProfileId(This,pdwProfileId) - -#define IConfigAsfWriter_ConfigureFilterUsingProfileGuid(This,guidProfile) \ - (This)->lpVtbl -> ConfigureFilterUsingProfileGuid(This,guidProfile) - -#define IConfigAsfWriter_GetCurrentProfileGuid(This,pProfileGuid) \ - (This)->lpVtbl -> GetCurrentProfileGuid(This,pProfileGuid) - -#define IConfigAsfWriter_ConfigureFilterUsingProfile(This,pProfile) \ - (This)->lpVtbl -> ConfigureFilterUsingProfile(This,pProfile) - -#define IConfigAsfWriter_GetCurrentProfile(This,ppProfile) \ - (This)->lpVtbl -> GetCurrentProfile(This,ppProfile) - -#define IConfigAsfWriter_SetIndexMode(This,bIndexFile) \ - (This)->lpVtbl -> SetIndexMode(This,bIndexFile) - -#define IConfigAsfWriter_GetIndexMode(This,pbIndexFile) \ - (This)->lpVtbl -> GetIndexMode(This,pbIndexFile) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IConfigAsfWriter_ConfigureFilterUsingProfileId_Proxy( - IConfigAsfWriter * This, - /* [in] */ DWORD dwProfileId); - - -void __RPC_STUB IConfigAsfWriter_ConfigureFilterUsingProfileId_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IConfigAsfWriter_GetCurrentProfileId_Proxy( - IConfigAsfWriter * This, - /* [out] */ DWORD *pdwProfileId); - - -void __RPC_STUB IConfigAsfWriter_GetCurrentProfileId_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IConfigAsfWriter_ConfigureFilterUsingProfileGuid_Proxy( - IConfigAsfWriter * This, - /* [in] */ REFGUID guidProfile); - - -void __RPC_STUB IConfigAsfWriter_ConfigureFilterUsingProfileGuid_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IConfigAsfWriter_GetCurrentProfileGuid_Proxy( - IConfigAsfWriter * This, - /* [out] */ GUID *pProfileGuid); - - -void __RPC_STUB IConfigAsfWriter_GetCurrentProfileGuid_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IConfigAsfWriter_ConfigureFilterUsingProfile_Proxy( - IConfigAsfWriter * This, - /* [in] */ IWMProfile *pProfile); - - -void __RPC_STUB IConfigAsfWriter_ConfigureFilterUsingProfile_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IConfigAsfWriter_GetCurrentProfile_Proxy( - IConfigAsfWriter * This, - /* [out] */ IWMProfile **ppProfile); - - -void __RPC_STUB IConfigAsfWriter_GetCurrentProfile_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IConfigAsfWriter_SetIndexMode_Proxy( - IConfigAsfWriter * This, - /* [in] */ BOOL bIndexFile); - - -void __RPC_STUB IConfigAsfWriter_SetIndexMode_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IConfigAsfWriter_GetIndexMode_Proxy( - IConfigAsfWriter * This, - /* [out] */ BOOL *pbIndexFile); - - -void __RPC_STUB IConfigAsfWriter_GetIndexMode_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IConfigAsfWriter_INTERFACE_DEFINED__ */ - - -/* Additional Prototypes for ALL interfaces */ - -/* end of Additional Prototypes */ - -#ifdef __cplusplus -} -#endif - -#endif - - + +#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.0338 */ +/* Compiler settings for dshowasf.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 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 +#endif // __RPCNDR_H_VERSION__ + +#ifndef COM_NO_WINDOWS_H +#include "windows.h" +#include "ole2.h" +#endif /*COM_NO_WINDOWS_H*/ + +#ifndef __dshowasf_h__ +#define __dshowasf_h__ + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#pragma once +#endif + +/* Forward Declarations */ + +#ifndef __IConfigAsfWriter_FWD_DEFINED__ +#define __IConfigAsfWriter_FWD_DEFINED__ +typedef interface IConfigAsfWriter IConfigAsfWriter; +#endif /* __IConfigAsfWriter_FWD_DEFINED__ */ + + +/* header files for imported files */ +#include "unknwn.h" +#include "objidl.h" +#include "strmif.h" +#include "wmsdkidl.h" + +#ifdef __cplusplus +extern "C"{ +#endif + +void * __RPC_USER MIDL_user_allocate(size_t); +void __RPC_USER MIDL_user_free( void * ); + +/* interface __MIDL_itf_dshowasf_0000 */ +/* [local] */ + +EXTERN_GUID( IID_IConfigAsfWriter,0x45086030,0xF7E4,0x486a,0xB5,0x04,0x82,0x6B,0xB5,0x79,0x2A,0x3B ); + + + + +extern RPC_IF_HANDLE __MIDL_itf_dshowasf_0000_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_dshowasf_0000_v0_0_s_ifspec; + +#ifndef __IConfigAsfWriter_INTERFACE_DEFINED__ +#define __IConfigAsfWriter_INTERFACE_DEFINED__ + +/* interface IConfigAsfWriter */ +/* [unique][uuid][object] */ + + +EXTERN_C const IID IID_IConfigAsfWriter; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("45086030-F7E4-486a-B504-826BB5792A3B") + IConfigAsfWriter : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE ConfigureFilterUsingProfileId( + /* [in] */ DWORD dwProfileId) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetCurrentProfileId( + /* [out] */ DWORD *pdwProfileId) = 0; + + virtual HRESULT STDMETHODCALLTYPE ConfigureFilterUsingProfileGuid( + /* [in] */ REFGUID guidProfile) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetCurrentProfileGuid( + /* [out] */ GUID *pProfileGuid) = 0; + + virtual HRESULT STDMETHODCALLTYPE ConfigureFilterUsingProfile( + /* [in] */ IWMProfile *pProfile) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetCurrentProfile( + /* [out] */ IWMProfile **ppProfile) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetIndexMode( + /* [in] */ BOOL bIndexFile) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetIndexMode( + /* [out] */ BOOL *pbIndexFile) = 0; + + }; + +#else /* C style interface */ + + typedef struct IConfigAsfWriterVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IConfigAsfWriter * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IConfigAsfWriter * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IConfigAsfWriter * This); + + HRESULT ( STDMETHODCALLTYPE *ConfigureFilterUsingProfileId )( + IConfigAsfWriter * This, + /* [in] */ DWORD dwProfileId); + + HRESULT ( STDMETHODCALLTYPE *GetCurrentProfileId )( + IConfigAsfWriter * This, + /* [out] */ DWORD *pdwProfileId); + + HRESULT ( STDMETHODCALLTYPE *ConfigureFilterUsingProfileGuid )( + IConfigAsfWriter * This, + /* [in] */ REFGUID guidProfile); + + HRESULT ( STDMETHODCALLTYPE *GetCurrentProfileGuid )( + IConfigAsfWriter * This, + /* [out] */ GUID *pProfileGuid); + + HRESULT ( STDMETHODCALLTYPE *ConfigureFilterUsingProfile )( + IConfigAsfWriter * This, + /* [in] */ IWMProfile *pProfile); + + HRESULT ( STDMETHODCALLTYPE *GetCurrentProfile )( + IConfigAsfWriter * This, + /* [out] */ IWMProfile **ppProfile); + + HRESULT ( STDMETHODCALLTYPE *SetIndexMode )( + IConfigAsfWriter * This, + /* [in] */ BOOL bIndexFile); + + HRESULT ( STDMETHODCALLTYPE *GetIndexMode )( + IConfigAsfWriter * This, + /* [out] */ BOOL *pbIndexFile); + + END_INTERFACE + } IConfigAsfWriterVtbl; + + interface IConfigAsfWriter + { + CONST_VTBL struct IConfigAsfWriterVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IConfigAsfWriter_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IConfigAsfWriter_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IConfigAsfWriter_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IConfigAsfWriter_ConfigureFilterUsingProfileId(This,dwProfileId) \ + (This)->lpVtbl -> ConfigureFilterUsingProfileId(This,dwProfileId) + +#define IConfigAsfWriter_GetCurrentProfileId(This,pdwProfileId) \ + (This)->lpVtbl -> GetCurrentProfileId(This,pdwProfileId) + +#define IConfigAsfWriter_ConfigureFilterUsingProfileGuid(This,guidProfile) \ + (This)->lpVtbl -> ConfigureFilterUsingProfileGuid(This,guidProfile) + +#define IConfigAsfWriter_GetCurrentProfileGuid(This,pProfileGuid) \ + (This)->lpVtbl -> GetCurrentProfileGuid(This,pProfileGuid) + +#define IConfigAsfWriter_ConfigureFilterUsingProfile(This,pProfile) \ + (This)->lpVtbl -> ConfigureFilterUsingProfile(This,pProfile) + +#define IConfigAsfWriter_GetCurrentProfile(This,ppProfile) \ + (This)->lpVtbl -> GetCurrentProfile(This,ppProfile) + +#define IConfigAsfWriter_SetIndexMode(This,bIndexFile) \ + (This)->lpVtbl -> SetIndexMode(This,bIndexFile) + +#define IConfigAsfWriter_GetIndexMode(This,pbIndexFile) \ + (This)->lpVtbl -> GetIndexMode(This,pbIndexFile) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IConfigAsfWriter_ConfigureFilterUsingProfileId_Proxy( + IConfigAsfWriter * This, + /* [in] */ DWORD dwProfileId); + + +void __RPC_STUB IConfigAsfWriter_ConfigureFilterUsingProfileId_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IConfigAsfWriter_GetCurrentProfileId_Proxy( + IConfigAsfWriter * This, + /* [out] */ DWORD *pdwProfileId); + + +void __RPC_STUB IConfigAsfWriter_GetCurrentProfileId_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IConfigAsfWriter_ConfigureFilterUsingProfileGuid_Proxy( + IConfigAsfWriter * This, + /* [in] */ REFGUID guidProfile); + + +void __RPC_STUB IConfigAsfWriter_ConfigureFilterUsingProfileGuid_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IConfigAsfWriter_GetCurrentProfileGuid_Proxy( + IConfigAsfWriter * This, + /* [out] */ GUID *pProfileGuid); + + +void __RPC_STUB IConfigAsfWriter_GetCurrentProfileGuid_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IConfigAsfWriter_ConfigureFilterUsingProfile_Proxy( + IConfigAsfWriter * This, + /* [in] */ IWMProfile *pProfile); + + +void __RPC_STUB IConfigAsfWriter_ConfigureFilterUsingProfile_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IConfigAsfWriter_GetCurrentProfile_Proxy( + IConfigAsfWriter * This, + /* [out] */ IWMProfile **ppProfile); + + +void __RPC_STUB IConfigAsfWriter_GetCurrentProfile_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IConfigAsfWriter_SetIndexMode_Proxy( + IConfigAsfWriter * This, + /* [in] */ BOOL bIndexFile); + + +void __RPC_STUB IConfigAsfWriter_SetIndexMode_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IConfigAsfWriter_GetIndexMode_Proxy( + IConfigAsfWriter * This, + /* [out] */ BOOL *pbIndexFile); + + +void __RPC_STUB IConfigAsfWriter_GetIndexMode_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IConfigAsfWriter_INTERFACE_DEFINED__ */ + + +/* Additional Prototypes for ALL interfaces */ + +/* end of Additional Prototypes */ + +#ifdef __cplusplus +} +#endif + +#endif + + diff --git a/videoInputSrcAndDemos/libs/DShow/Include/dsound.h b/videoInputSrcAndDemos/libs/DShow/Include/dsound.h index c088b63..8020a66 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/dsound.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/dsound.h @@ -1,2358 +1,2358 @@ -/*==========================================================================; - * - * Copyright (c) Microsoft Corporation. All rights reserved. - * - * File: dsound.h - * Content: DirectSound include file - * - **************************************************************************/ - -#define COM_NO_WINDOWS_H -#include -#include - -#ifndef DIRECTSOUND_VERSION -#define DIRECTSOUND_VERSION 0x0900 /* Version 9.0 */ -#endif - -#ifdef __cplusplus -extern "C" { -#endif // __cplusplus - -#ifndef __DSOUND_INCLUDED__ -#define __DSOUND_INCLUDED__ - -/* Type definitions shared with Direct3D */ - -#ifndef DX_SHARED_DEFINES - -typedef float D3DVALUE, *LPD3DVALUE; - -#ifndef D3DCOLOR_DEFINED -typedef DWORD D3DCOLOR; -#define D3DCOLOR_DEFINED -#endif - -#ifndef LPD3DCOLOR_DEFINED -typedef DWORD *LPD3DCOLOR; -#define LPD3DCOLOR_DEFINED -#endif - -#ifndef D3DVECTOR_DEFINED -typedef struct _D3DVECTOR { - float x; - float y; - float z; -} D3DVECTOR; -#define D3DVECTOR_DEFINED -#endif - -#ifndef LPD3DVECTOR_DEFINED -typedef D3DVECTOR *LPD3DVECTOR; -#define LPD3DVECTOR_DEFINED -#endif - -#define DX_SHARED_DEFINES -#endif // DX_SHARED_DEFINES - -#define _FACDS 0x878 /* DirectSound's facility code */ -#define MAKE_DSHRESULT(code) MAKE_HRESULT(1, _FACDS, code) - -// DirectSound Component GUID {47D4D946-62E8-11CF-93BC-444553540000} -DEFINE_GUID(CLSID_DirectSound, 0x47d4d946, 0x62e8, 0x11cf, 0x93, 0xbc, 0x44, 0x45, 0x53, 0x54, 0x0, 0x0); - -// DirectSound 8.0 Component GUID {3901CC3F-84B5-4FA4-BA35-AA8172B8A09B} -DEFINE_GUID(CLSID_DirectSound8, 0x3901cc3f, 0x84b5, 0x4fa4, 0xba, 0x35, 0xaa, 0x81, 0x72, 0xb8, 0xa0, 0x9b); - -// DirectSound Capture Component GUID {B0210780-89CD-11D0-AF08-00A0C925CD16} -DEFINE_GUID(CLSID_DirectSoundCapture, 0xb0210780, 0x89cd, 0x11d0, 0xaf, 0x8, 0x0, 0xa0, 0xc9, 0x25, 0xcd, 0x16); - -// DirectSound 8.0 Capture Component GUID {E4BCAC13-7F99-4908-9A8E-74E3BF24B6E1} -DEFINE_GUID(CLSID_DirectSoundCapture8, 0xe4bcac13, 0x7f99, 0x4908, 0x9a, 0x8e, 0x74, 0xe3, 0xbf, 0x24, 0xb6, 0xe1); - -// DirectSound Full Duplex Component GUID {FEA4300C-7959-4147-B26A-2377B9E7A91D} -DEFINE_GUID(CLSID_DirectSoundFullDuplex, 0xfea4300c, 0x7959, 0x4147, 0xb2, 0x6a, 0x23, 0x77, 0xb9, 0xe7, 0xa9, 0x1d); - - -// DirectSound default playback device GUID {DEF00000-9C6D-47ED-AAF1-4DDA8F2B5C03} -DEFINE_GUID(DSDEVID_DefaultPlayback, 0xdef00000, 0x9c6d, 0x47ed, 0xaa, 0xf1, 0x4d, 0xda, 0x8f, 0x2b, 0x5c, 0x03); - -// DirectSound default capture device GUID {DEF00001-9C6D-47ED-AAF1-4DDA8F2B5C03} -DEFINE_GUID(DSDEVID_DefaultCapture, 0xdef00001, 0x9c6d, 0x47ed, 0xaa, 0xf1, 0x4d, 0xda, 0x8f, 0x2b, 0x5c, 0x03); - -// DirectSound default device for voice playback {DEF00002-9C6D-47ED-AAF1-4DDA8F2B5C03} -DEFINE_GUID(DSDEVID_DefaultVoicePlayback, 0xdef00002, 0x9c6d, 0x47ed, 0xaa, 0xf1, 0x4d, 0xda, 0x8f, 0x2b, 0x5c, 0x03); - -// DirectSound default device for voice capture {DEF00003-9C6D-47ED-AAF1-4DDA8F2B5C03} -DEFINE_GUID(DSDEVID_DefaultVoiceCapture, 0xdef00003, 0x9c6d, 0x47ed, 0xaa, 0xf1, 0x4d, 0xda, 0x8f, 0x2b, 0x5c, 0x03); - - -// -// Forward declarations for interfaces. -// 'struct' not 'class' per the way DECLARE_INTERFACE_ is defined -// - -#ifdef __cplusplus -struct IDirectSound; -struct IDirectSoundBuffer; -struct IDirectSound3DListener; -struct IDirectSound3DBuffer; -struct IDirectSoundCapture; -struct IDirectSoundCaptureBuffer; -struct IDirectSoundNotify; -#endif // __cplusplus - - -// -// DirectSound 8.0 interfaces. -// - -#if DIRECTSOUND_VERSION >= 0x0800 - -#ifdef __cplusplus -struct IDirectSound8; -struct IDirectSoundBuffer8; -struct IDirectSoundCaptureBuffer8; -struct IDirectSoundFXGargle; -struct IDirectSoundFXChorus; -struct IDirectSoundFXFlanger; -struct IDirectSoundFXEcho; -struct IDirectSoundFXDistortion; -struct IDirectSoundFXCompressor; -struct IDirectSoundFXParamEq; -struct IDirectSoundFXWavesReverb; -struct IDirectSoundFXI3DL2Reverb; -struct IDirectSoundCaptureFXAec; -struct IDirectSoundCaptureFXNoiseSuppress; -struct IDirectSoundFullDuplex; -#endif // __cplusplus - -// IDirectSound8, IDirectSoundBuffer8 and IDirectSoundCaptureBuffer8 are the -// only DirectSound 7.0 interfaces with changed functionality in version 8.0. -// The other level 8 interfaces as equivalent to their level 7 counterparts: - -#define IDirectSoundCapture8 IDirectSoundCapture -#define IDirectSound3DListener8 IDirectSound3DListener -#define IDirectSound3DBuffer8 IDirectSound3DBuffer -#define IDirectSoundNotify8 IDirectSoundNotify -#define IDirectSoundFXGargle8 IDirectSoundFXGargle -#define IDirectSoundFXChorus8 IDirectSoundFXChorus -#define IDirectSoundFXFlanger8 IDirectSoundFXFlanger -#define IDirectSoundFXEcho8 IDirectSoundFXEcho -#define IDirectSoundFXDistortion8 IDirectSoundFXDistortion -#define IDirectSoundFXCompressor8 IDirectSoundFXCompressor -#define IDirectSoundFXParamEq8 IDirectSoundFXParamEq -#define IDirectSoundFXWavesReverb8 IDirectSoundFXWavesReverb -#define IDirectSoundFXI3DL2Reverb8 IDirectSoundFXI3DL2Reverb -#define IDirectSoundCaptureFXAec8 IDirectSoundCaptureFXAec -#define IDirectSoundCaptureFXNoiseSuppress8 IDirectSoundCaptureFXNoiseSuppress -#define IDirectSoundFullDuplex8 IDirectSoundFullDuplex - -#endif // DIRECTSOUND_VERSION >= 0x0800 - -typedef struct IDirectSound *LPDIRECTSOUND; -typedef struct IDirectSoundBuffer *LPDIRECTSOUNDBUFFER; -typedef struct IDirectSound3DListener *LPDIRECTSOUND3DLISTENER; -typedef struct IDirectSound3DBuffer *LPDIRECTSOUND3DBUFFER; -typedef struct IDirectSoundCapture *LPDIRECTSOUNDCAPTURE; -typedef struct IDirectSoundCaptureBuffer *LPDIRECTSOUNDCAPTUREBUFFER; -typedef struct IDirectSoundNotify *LPDIRECTSOUNDNOTIFY; - - -#if DIRECTSOUND_VERSION >= 0x0800 - -typedef struct IDirectSoundFXGargle *LPDIRECTSOUNDFXGARGLE; -typedef struct IDirectSoundFXChorus *LPDIRECTSOUNDFXCHORUS; -typedef struct IDirectSoundFXFlanger *LPDIRECTSOUNDFXFLANGER; -typedef struct IDirectSoundFXEcho *LPDIRECTSOUNDFXECHO; -typedef struct IDirectSoundFXDistortion *LPDIRECTSOUNDFXDISTORTION; -typedef struct IDirectSoundFXCompressor *LPDIRECTSOUNDFXCOMPRESSOR; -typedef struct IDirectSoundFXParamEq *LPDIRECTSOUNDFXPARAMEQ; -typedef struct IDirectSoundFXWavesReverb *LPDIRECTSOUNDFXWAVESREVERB; -typedef struct IDirectSoundFXI3DL2Reverb *LPDIRECTSOUNDFXI3DL2REVERB; -typedef struct IDirectSoundCaptureFXAec *LPDIRECTSOUNDCAPTUREFXAEC; -typedef struct IDirectSoundCaptureFXNoiseSuppress *LPDIRECTSOUNDCAPTUREFXNOISESUPPRESS; -typedef struct IDirectSoundFullDuplex *LPDIRECTSOUNDFULLDUPLEX; - -typedef struct IDirectSound8 *LPDIRECTSOUND8; -typedef struct IDirectSoundBuffer8 *LPDIRECTSOUNDBUFFER8; -typedef struct IDirectSound3DListener8 *LPDIRECTSOUND3DLISTENER8; -typedef struct IDirectSound3DBuffer8 *LPDIRECTSOUND3DBUFFER8; -typedef struct IDirectSoundCapture8 *LPDIRECTSOUNDCAPTURE8; -typedef struct IDirectSoundCaptureBuffer8 *LPDIRECTSOUNDCAPTUREBUFFER8; -typedef struct IDirectSoundNotify8 *LPDIRECTSOUNDNOTIFY8; -typedef struct IDirectSoundFXGargle8 *LPDIRECTSOUNDFXGARGLE8; -typedef struct IDirectSoundFXChorus8 *LPDIRECTSOUNDFXCHORUS8; -typedef struct IDirectSoundFXFlanger8 *LPDIRECTSOUNDFXFLANGER8; -typedef struct IDirectSoundFXEcho8 *LPDIRECTSOUNDFXECHO8; -typedef struct IDirectSoundFXDistortion8 *LPDIRECTSOUNDFXDISTORTION8; -typedef struct IDirectSoundFXCompressor8 *LPDIRECTSOUNDFXCOMPRESSOR8; -typedef struct IDirectSoundFXParamEq8 *LPDIRECTSOUNDFXPARAMEQ8; -typedef struct IDirectSoundFXWavesReverb8 *LPDIRECTSOUNDFXWAVESREVERB8; -typedef struct IDirectSoundFXI3DL2Reverb8 *LPDIRECTSOUNDFXI3DL2REVERB8; -typedef struct IDirectSoundCaptureFXAec8 *LPDIRECTSOUNDCAPTUREFXAEC8; -typedef struct IDirectSoundCaptureFXNoiseSuppress8 *LPDIRECTSOUNDCAPTUREFXNOISESUPPRESS8; -typedef struct IDirectSoundFullDuplex8 *LPDIRECTSOUNDFULLDUPLEX8; - -#endif // DIRECTSOUND_VERSION >= 0x0800 - -// -// IID definitions for the unchanged DirectSound 8.0 interfaces -// - -#if DIRECTSOUND_VERSION >= 0x0800 - -#define IID_IDirectSoundCapture8 IID_IDirectSoundCapture -#define IID_IDirectSound3DListener8 IID_IDirectSound3DListener -#define IID_IDirectSound3DBuffer8 IID_IDirectSound3DBuffer -#define IID_IDirectSoundNotify8 IID_IDirectSoundNotify -#define IID_IDirectSoundFXGargle8 IID_IDirectSoundFXGargle -#define IID_IDirectSoundFXChorus8 IID_IDirectSoundFXChorus -#define IID_IDirectSoundFXFlanger8 IID_IDirectSoundFXFlanger -#define IID_IDirectSoundFXEcho8 IID_IDirectSoundFXEcho -#define IID_IDirectSoundFXDistortion8 IID_IDirectSoundFXDistortion -#define IID_IDirectSoundFXCompressor8 IID_IDirectSoundFXCompressor -#define IID_IDirectSoundFXParamEq8 IID_IDirectSoundFXParamEq -#define IID_IDirectSoundFXWavesReverb8 IID_IDirectSoundFXWavesReverb -#define IID_IDirectSoundFXI3DL2Reverb8 IID_IDirectSoundFXI3DL2Reverb -#define IID_IDirectSoundCaptureFXAec8 IID_IDirectSoundCaptureFXAec -#define IID_IDirectSoundCaptureFXNoiseSuppress8 IID_IDirectSoundCaptureFXNoiseSuppress -#define IID_IDirectSoundFullDuplex8 IID_IDirectSoundFullDuplex - -#endif // DIRECTSOUND_VERSION >= 0x0800 - -// -// Compatibility typedefs -// - -#ifndef _LPCWAVEFORMATEX_DEFINED -#define _LPCWAVEFORMATEX_DEFINED -typedef const WAVEFORMATEX *LPCWAVEFORMATEX; -#endif // _LPCWAVEFORMATEX_DEFINED - -#ifndef __LPCGUID_DEFINED__ -#define __LPCGUID_DEFINED__ -typedef const GUID *LPCGUID; -#endif // __LPCGUID_DEFINED__ - -typedef LPDIRECTSOUND *LPLPDIRECTSOUND; -typedef LPDIRECTSOUNDBUFFER *LPLPDIRECTSOUNDBUFFER; -typedef LPDIRECTSOUND3DLISTENER *LPLPDIRECTSOUND3DLISTENER; -typedef LPDIRECTSOUND3DBUFFER *LPLPDIRECTSOUND3DBUFFER; -typedef LPDIRECTSOUNDCAPTURE *LPLPDIRECTSOUNDCAPTURE; -typedef LPDIRECTSOUNDCAPTUREBUFFER *LPLPDIRECTSOUNDCAPTUREBUFFER; -typedef LPDIRECTSOUNDNOTIFY *LPLPDIRECTSOUNDNOTIFY; - -#if DIRECTSOUND_VERSION >= 0x0800 -typedef LPDIRECTSOUND8 *LPLPDIRECTSOUND8; -typedef LPDIRECTSOUNDBUFFER8 *LPLPDIRECTSOUNDBUFFER8; -typedef LPDIRECTSOUNDCAPTURE8 *LPLPDIRECTSOUNDCAPTURE8; -typedef LPDIRECTSOUNDCAPTUREBUFFER8 *LPLPDIRECTSOUNDCAPTUREBUFFER8; -#endif // DIRECTSOUND_VERSION >= 0x0800 - -// -// Structures -// - -typedef struct _DSCAPS -{ - DWORD dwSize; - DWORD dwFlags; - DWORD dwMinSecondarySampleRate; - DWORD dwMaxSecondarySampleRate; - DWORD dwPrimaryBuffers; - DWORD dwMaxHwMixingAllBuffers; - DWORD dwMaxHwMixingStaticBuffers; - DWORD dwMaxHwMixingStreamingBuffers; - DWORD dwFreeHwMixingAllBuffers; - DWORD dwFreeHwMixingStaticBuffers; - DWORD dwFreeHwMixingStreamingBuffers; - DWORD dwMaxHw3DAllBuffers; - DWORD dwMaxHw3DStaticBuffers; - DWORD dwMaxHw3DStreamingBuffers; - DWORD dwFreeHw3DAllBuffers; - DWORD dwFreeHw3DStaticBuffers; - DWORD dwFreeHw3DStreamingBuffers; - DWORD dwTotalHwMemBytes; - DWORD dwFreeHwMemBytes; - DWORD dwMaxContigFreeHwMemBytes; - DWORD dwUnlockTransferRateHwBuffers; - DWORD dwPlayCpuOverheadSwBuffers; - DWORD dwReserved1; - DWORD dwReserved2; -} DSCAPS, *LPDSCAPS; - -typedef const DSCAPS *LPCDSCAPS; - -typedef struct _DSBCAPS -{ - DWORD dwSize; - DWORD dwFlags; - DWORD dwBufferBytes; - DWORD dwUnlockTransferRate; - DWORD dwPlayCpuOverhead; -} DSBCAPS, *LPDSBCAPS; - -typedef const DSBCAPS *LPCDSBCAPS; - -#if DIRECTSOUND_VERSION >= 0x0800 - - typedef struct _DSEFFECTDESC - { - DWORD dwSize; - DWORD dwFlags; - GUID guidDSFXClass; - DWORD_PTR dwReserved1; - DWORD_PTR dwReserved2; - } DSEFFECTDESC, *LPDSEFFECTDESC; - typedef const DSEFFECTDESC *LPCDSEFFECTDESC; - - #define DSFX_LOCHARDWARE 0x00000001 - #define DSFX_LOCSOFTWARE 0x00000002 - - enum - { - DSFXR_PRESENT, // 0 - DSFXR_LOCHARDWARE, // 1 - DSFXR_LOCSOFTWARE, // 2 - DSFXR_UNALLOCATED, // 3 - DSFXR_FAILED, // 4 - DSFXR_UNKNOWN, // 5 - DSFXR_SENDLOOP // 6 - }; - - typedef struct _DSCEFFECTDESC - { - DWORD dwSize; - DWORD dwFlags; - GUID guidDSCFXClass; - GUID guidDSCFXInstance; - DWORD dwReserved1; - DWORD dwReserved2; - } DSCEFFECTDESC, *LPDSCEFFECTDESC; - typedef const DSCEFFECTDESC *LPCDSCEFFECTDESC; - - #define DSCFX_LOCHARDWARE 0x00000001 - #define DSCFX_LOCSOFTWARE 0x00000002 - - #define DSCFXR_LOCHARDWARE 0x00000010 - #define DSCFXR_LOCSOFTWARE 0x00000020 - -#endif // DIRECTSOUND_VERSION >= 0x0800 - -typedef struct _DSBUFFERDESC -{ - DWORD dwSize; - DWORD dwFlags; - DWORD dwBufferBytes; - DWORD dwReserved; - LPWAVEFORMATEX lpwfxFormat; -#if DIRECTSOUND_VERSION >= 0x0700 - GUID guid3DAlgorithm; -#endif -} DSBUFFERDESC, *LPDSBUFFERDESC; - -typedef const DSBUFFERDESC *LPCDSBUFFERDESC; - -// Older version of this structure: - -typedef struct _DSBUFFERDESC1 -{ - DWORD dwSize; - DWORD dwFlags; - DWORD dwBufferBytes; - DWORD dwReserved; - LPWAVEFORMATEX lpwfxFormat; -} DSBUFFERDESC1, *LPDSBUFFERDESC1; - -typedef const DSBUFFERDESC1 *LPCDSBUFFERDESC1; - -typedef struct _DS3DBUFFER -{ - DWORD dwSize; - D3DVECTOR vPosition; - D3DVECTOR vVelocity; - DWORD dwInsideConeAngle; - DWORD dwOutsideConeAngle; - D3DVECTOR vConeOrientation; - LONG lConeOutsideVolume; - D3DVALUE flMinDistance; - D3DVALUE flMaxDistance; - DWORD dwMode; -} DS3DBUFFER, *LPDS3DBUFFER; - -typedef const DS3DBUFFER *LPCDS3DBUFFER; - -typedef struct _DS3DLISTENER -{ - DWORD dwSize; - D3DVECTOR vPosition; - D3DVECTOR vVelocity; - D3DVECTOR vOrientFront; - D3DVECTOR vOrientTop; - D3DVALUE flDistanceFactor; - D3DVALUE flRolloffFactor; - D3DVALUE flDopplerFactor; -} DS3DLISTENER, *LPDS3DLISTENER; - -typedef const DS3DLISTENER *LPCDS3DLISTENER; - -typedef struct _DSCCAPS -{ - DWORD dwSize; - DWORD dwFlags; - DWORD dwFormats; - DWORD dwChannels; -} DSCCAPS, *LPDSCCAPS; - -typedef const DSCCAPS *LPCDSCCAPS; - -typedef struct _DSCBUFFERDESC1 -{ - DWORD dwSize; - DWORD dwFlags; - DWORD dwBufferBytes; - DWORD dwReserved; - LPWAVEFORMATEX lpwfxFormat; -} DSCBUFFERDESC1, *LPDSCBUFFERDESC1; - -typedef struct _DSCBUFFERDESC -{ - DWORD dwSize; - DWORD dwFlags; - DWORD dwBufferBytes; - DWORD dwReserved; - LPWAVEFORMATEX lpwfxFormat; -#if DIRECTSOUND_VERSION >= 0x0800 - DWORD dwFXCount; - LPDSCEFFECTDESC lpDSCFXDesc; -#endif -} DSCBUFFERDESC, *LPDSCBUFFERDESC; - -typedef const DSCBUFFERDESC *LPCDSCBUFFERDESC; - -typedef struct _DSCBCAPS -{ - DWORD dwSize; - DWORD dwFlags; - DWORD dwBufferBytes; - DWORD dwReserved; -} DSCBCAPS, *LPDSCBCAPS; - -typedef const DSCBCAPS *LPCDSCBCAPS; - -typedef struct _DSBPOSITIONNOTIFY -{ - DWORD dwOffset; - HANDLE hEventNotify; -} DSBPOSITIONNOTIFY, *LPDSBPOSITIONNOTIFY; - -typedef const DSBPOSITIONNOTIFY *LPCDSBPOSITIONNOTIFY; - -// -// DirectSound API -// - -typedef BOOL (CALLBACK *LPDSENUMCALLBACKA)(LPGUID, LPCSTR, LPCSTR, LPVOID); -typedef BOOL (CALLBACK *LPDSENUMCALLBACKW)(LPGUID, LPCWSTR, LPCWSTR, LPVOID); - -extern HRESULT WINAPI DirectSoundCreate(LPCGUID pcGuidDevice, LPDIRECTSOUND *ppDS, LPUNKNOWN pUnkOuter); -extern HRESULT WINAPI DirectSoundEnumerateA(LPDSENUMCALLBACKA pDSEnumCallback, LPVOID pContext); -extern HRESULT WINAPI DirectSoundEnumerateW(LPDSENUMCALLBACKW pDSEnumCallback, LPVOID pContext); - -extern HRESULT WINAPI DirectSoundCaptureCreate(LPCGUID pcGuidDevice, LPDIRECTSOUNDCAPTURE *ppDSC, LPUNKNOWN pUnkOuter); -extern HRESULT WINAPI DirectSoundCaptureEnumerateA(LPDSENUMCALLBACKA pDSEnumCallback, LPVOID pContext); -extern HRESULT WINAPI DirectSoundCaptureEnumerateW(LPDSENUMCALLBACKW pDSEnumCallback, LPVOID pContext); - -#if DIRECTSOUND_VERSION >= 0x0800 -extern HRESULT WINAPI DirectSoundCreate8(LPCGUID pcGuidDevice, LPDIRECTSOUND8 *ppDS8, LPUNKNOWN pUnkOuter); -extern HRESULT WINAPI DirectSoundCaptureCreate8(LPCGUID pcGuidDevice, LPDIRECTSOUNDCAPTURE8 *ppDSC8, LPUNKNOWN pUnkOuter); -extern HRESULT WINAPI DirectSoundFullDuplexCreate(LPCGUID pcGuidCaptureDevice, LPCGUID pcGuidRenderDevice, - LPCDSCBUFFERDESC pcDSCBufferDesc, LPCDSBUFFERDESC pcDSBufferDesc, HWND hWnd, - DWORD dwLevel, LPDIRECTSOUNDFULLDUPLEX* ppDSFD, LPDIRECTSOUNDCAPTUREBUFFER8 *ppDSCBuffer8, - LPDIRECTSOUNDBUFFER8 *ppDSBuffer8, LPUNKNOWN pUnkOuter); -#define DirectSoundFullDuplexCreate8 DirectSoundFullDuplexCreate - -extern HRESULT WINAPI GetDeviceID(LPCGUID pGuidSrc, LPGUID pGuidDest); -#endif // DIRECTSOUND_VERSION >= 0x0800 - -#ifdef UNICODE -#define LPDSENUMCALLBACK LPDSENUMCALLBACKW -#define DirectSoundEnumerate DirectSoundEnumerateW -#define DirectSoundCaptureEnumerate DirectSoundCaptureEnumerateW -#else // UNICODE -#define LPDSENUMCALLBACK LPDSENUMCALLBACKA -#define DirectSoundEnumerate DirectSoundEnumerateA -#define DirectSoundCaptureEnumerate DirectSoundCaptureEnumerateA -#endif // UNICODE - -// -// IUnknown -// - -#if !defined(__cplusplus) || defined(CINTERFACE) -#ifndef IUnknown_QueryInterface -#define IUnknown_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#endif // IUnknown_QueryInterface -#ifndef IUnknown_AddRef -#define IUnknown_AddRef(p) (p)->lpVtbl->AddRef(p) -#endif // IUnknown_AddRef -#ifndef IUnknown_Release -#define IUnknown_Release(p) (p)->lpVtbl->Release(p) -#endif // IUnknown_Release -#else // !defined(__cplusplus) || defined(CINTERFACE) -#ifndef IUnknown_QueryInterface -#define IUnknown_QueryInterface(p,a,b) (p)->QueryInterface(a,b) -#endif // IUnknown_QueryInterface -#ifndef IUnknown_AddRef -#define IUnknown_AddRef(p) (p)->AddRef() -#endif // IUnknown_AddRef -#ifndef IUnknown_Release -#define IUnknown_Release(p) (p)->Release() -#endif // IUnknown_Release -#endif // !defined(__cplusplus) || defined(CINTERFACE) - -#ifndef __IReferenceClock_INTERFACE_DEFINED__ -#define __IReferenceClock_INTERFACE_DEFINED__ - -typedef LONGLONG REFERENCE_TIME; -typedef REFERENCE_TIME *LPREFERENCE_TIME; - -DEFINE_GUID(IID_IReferenceClock, 0x56a86897, 0x0ad4, 0x11ce, 0xb0, 0x3a, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70); - -#undef INTERFACE -#define INTERFACE IReferenceClock - -DECLARE_INTERFACE_(IReferenceClock, IUnknown) -{ - // IUnknown methods - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - // IReferenceClock methods - STDMETHOD(GetTime) (THIS_ REFERENCE_TIME *pTime) PURE; - STDMETHOD(AdviseTime) (THIS_ REFERENCE_TIME rtBaseTime, REFERENCE_TIME rtStreamTime, - HANDLE hEvent, LPDWORD pdwAdviseCookie) PURE; - STDMETHOD(AdvisePeriodic) (THIS_ REFERENCE_TIME rtStartTime, REFERENCE_TIME rtPeriodTime, - HANDLE hSemaphore, LPDWORD pdwAdviseCookie) PURE; - STDMETHOD(Unadvise) (THIS_ DWORD dwAdviseCookie) PURE; -}; - -#endif // __IReferenceClock_INTERFACE_DEFINED__ - -#ifndef IReferenceClock_QueryInterface - -#define IReferenceClock_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) -#define IReferenceClock_AddRef(p) IUnknown_AddRef(p) -#define IReferenceClock_Release(p) IUnknown_Release(p) - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IReferenceClock_GetTime(p,a) (p)->lpVtbl->GetTime(p,a) -#define IReferenceClock_AdviseTime(p,a,b,c,d) (p)->lpVtbl->AdviseTime(p,a,b,c,d) -#define IReferenceClock_AdvisePeriodic(p,a,b,c,d) (p)->lpVtbl->AdvisePeriodic(p,a,b,c,d) -#define IReferenceClock_Unadvise(p,a) (p)->lpVtbl->Unadvise(p,a) -#else // !defined(__cplusplus) || defined(CINTERFACE) -#define IReferenceClock_GetTime(p,a) (p)->GetTime(a) -#define IReferenceClock_AdviseTime(p,a,b,c,d) (p)->AdviseTime(a,b,c,d) -#define IReferenceClock_AdvisePeriodic(p,a,b,c,d) (p)->AdvisePeriodic(a,b,c,d) -#define IReferenceClock_Unadvise(p,a) (p)->Unadvise(a) -#endif // !defined(__cplusplus) || defined(CINTERFACE) - -#endif // IReferenceClock_QueryInterface - -// -// IDirectSound -// - -DEFINE_GUID(IID_IDirectSound, 0x279AFA83, 0x4981, 0x11CE, 0xA5, 0x21, 0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60); - -#undef INTERFACE -#define INTERFACE IDirectSound - -DECLARE_INTERFACE_(IDirectSound, IUnknown) -{ - // IUnknown methods - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - // IDirectSound methods - STDMETHOD(CreateSoundBuffer) (THIS_ LPCDSBUFFERDESC pcDSBufferDesc, LPDIRECTSOUNDBUFFER *ppDSBuffer, LPUNKNOWN pUnkOuter) PURE; - STDMETHOD(GetCaps) (THIS_ LPDSCAPS pDSCaps) PURE; - STDMETHOD(DuplicateSoundBuffer) (THIS_ LPDIRECTSOUNDBUFFER pDSBufferOriginal, LPDIRECTSOUNDBUFFER *ppDSBufferDuplicate) PURE; - STDMETHOD(SetCooperativeLevel) (THIS_ HWND hwnd, DWORD dwLevel) PURE; - STDMETHOD(Compact) (THIS) PURE; - STDMETHOD(GetSpeakerConfig) (THIS_ LPDWORD pdwSpeakerConfig) PURE; - STDMETHOD(SetSpeakerConfig) (THIS_ DWORD dwSpeakerConfig) PURE; - STDMETHOD(Initialize) (THIS_ LPCGUID pcGuidDevice) PURE; -}; - -#define IDirectSound_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) -#define IDirectSound_AddRef(p) IUnknown_AddRef(p) -#define IDirectSound_Release(p) IUnknown_Release(p) - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSound_CreateSoundBuffer(p,a,b,c) (p)->lpVtbl->CreateSoundBuffer(p,a,b,c) -#define IDirectSound_GetCaps(p,a) (p)->lpVtbl->GetCaps(p,a) -#define IDirectSound_DuplicateSoundBuffer(p,a,b) (p)->lpVtbl->DuplicateSoundBuffer(p,a,b) -#define IDirectSound_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b) -#define IDirectSound_Compact(p) (p)->lpVtbl->Compact(p) -#define IDirectSound_GetSpeakerConfig(p,a) (p)->lpVtbl->GetSpeakerConfig(p,a) -#define IDirectSound_SetSpeakerConfig(p,b) (p)->lpVtbl->SetSpeakerConfig(p,b) -#define IDirectSound_Initialize(p,a) (p)->lpVtbl->Initialize(p,a) -#else // !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSound_CreateSoundBuffer(p,a,b,c) (p)->CreateSoundBuffer(a,b,c) -#define IDirectSound_GetCaps(p,a) (p)->GetCaps(a) -#define IDirectSound_DuplicateSoundBuffer(p,a,b) (p)->DuplicateSoundBuffer(a,b) -#define IDirectSound_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b) -#define IDirectSound_Compact(p) (p)->Compact() -#define IDirectSound_GetSpeakerConfig(p,a) (p)->GetSpeakerConfig(a) -#define IDirectSound_SetSpeakerConfig(p,b) (p)->SetSpeakerConfig(b) -#define IDirectSound_Initialize(p,a) (p)->Initialize(a) -#endif // !defined(__cplusplus) || defined(CINTERFACE) - -#if DIRECTSOUND_VERSION >= 0x0800 - -// -// IDirectSound8 -// - -DEFINE_GUID(IID_IDirectSound8, 0xC50A7E93, 0xF395, 0x4834, 0x9E, 0xF6, 0x7F, 0xA9, 0x9D, 0xE5, 0x09, 0x66); - -#undef INTERFACE -#define INTERFACE IDirectSound8 - -DECLARE_INTERFACE_(IDirectSound8, IDirectSound) -{ - // IUnknown methods - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - // IDirectSound methods - STDMETHOD(CreateSoundBuffer) (THIS_ LPCDSBUFFERDESC pcDSBufferDesc, LPDIRECTSOUNDBUFFER *ppDSBuffer, LPUNKNOWN pUnkOuter) PURE; - STDMETHOD(GetCaps) (THIS_ LPDSCAPS pDSCaps) PURE; - STDMETHOD(DuplicateSoundBuffer) (THIS_ LPDIRECTSOUNDBUFFER pDSBufferOriginal, LPDIRECTSOUNDBUFFER *ppDSBufferDuplicate) PURE; - STDMETHOD(SetCooperativeLevel) (THIS_ HWND hwnd, DWORD dwLevel) PURE; - STDMETHOD(Compact) (THIS) PURE; - STDMETHOD(GetSpeakerConfig) (THIS_ LPDWORD pdwSpeakerConfig) PURE; - STDMETHOD(SetSpeakerConfig) (THIS_ DWORD dwSpeakerConfig) PURE; - STDMETHOD(Initialize) (THIS_ LPCGUID pcGuidDevice) PURE; - - // IDirectSound8 methods - STDMETHOD(VerifyCertification) (THIS_ LPDWORD pdwCertified) PURE; -}; - -#define IDirectSound8_QueryInterface(p,a,b) IDirectSound_QueryInterface(p,a,b) -#define IDirectSound8_AddRef(p) IDirectSound_AddRef(p) -#define IDirectSound8_Release(p) IDirectSound_Release(p) -#define IDirectSound8_CreateSoundBuffer(p,a,b,c) IDirectSound_CreateSoundBuffer(p,a,b,c) -#define IDirectSound8_GetCaps(p,a) IDirectSound_GetCaps(p,a) -#define IDirectSound8_DuplicateSoundBuffer(p,a,b) IDirectSound_DuplicateSoundBuffer(p,a,b) -#define IDirectSound8_SetCooperativeLevel(p,a,b) IDirectSound_SetCooperativeLevel(p,a,b) -#define IDirectSound8_Compact(p) IDirectSound_Compact(p) -#define IDirectSound8_GetSpeakerConfig(p,a) IDirectSound_GetSpeakerConfig(p,a) -#define IDirectSound8_SetSpeakerConfig(p,a) IDirectSound_SetSpeakerConfig(p,a) -#define IDirectSound8_Initialize(p,a) IDirectSound_Initialize(p,a) - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSound8_VerifyCertification(p,a) (p)->lpVtbl->VerifyCertification(p,a) -#else // !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSound8_VerifyCertification(p,a) (p)->VerifyCertification(a) -#endif // !defined(__cplusplus) || defined(CINTERFACE) - -#endif // DIRECTSOUND_VERSION >= 0x0800 - -// -// IDirectSoundBuffer -// - -DEFINE_GUID(IID_IDirectSoundBuffer, 0x279AFA85, 0x4981, 0x11CE, 0xA5, 0x21, 0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60); - -#undef INTERFACE -#define INTERFACE IDirectSoundBuffer - -DECLARE_INTERFACE_(IDirectSoundBuffer, IUnknown) -{ - // IUnknown methods - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - // IDirectSoundBuffer methods - STDMETHOD(GetCaps) (THIS_ LPDSBCAPS pDSBufferCaps) PURE; - STDMETHOD(GetCurrentPosition) (THIS_ LPDWORD pdwCurrentPlayCursor, LPDWORD pdwCurrentWriteCursor) PURE; - STDMETHOD(GetFormat) (THIS_ LPWAVEFORMATEX pwfxFormat, DWORD dwSizeAllocated, LPDWORD pdwSizeWritten) PURE; - STDMETHOD(GetVolume) (THIS_ LPLONG plVolume) PURE; - STDMETHOD(GetPan) (THIS_ LPLONG plPan) PURE; - STDMETHOD(GetFrequency) (THIS_ LPDWORD pdwFrequency) PURE; - STDMETHOD(GetStatus) (THIS_ LPDWORD pdwStatus) PURE; - STDMETHOD(Initialize) (THIS_ LPDIRECTSOUND pDirectSound, LPCDSBUFFERDESC pcDSBufferDesc) PURE; - STDMETHOD(Lock) (THIS_ DWORD dwOffset, DWORD dwBytes, LPVOID *ppvAudioPtr1, LPDWORD pdwAudioBytes1, - LPVOID *ppvAudioPtr2, LPDWORD pdwAudioBytes2, DWORD dwFlags) PURE; - STDMETHOD(Play) (THIS_ DWORD dwReserved1, DWORD dwPriority, DWORD dwFlags) PURE; - STDMETHOD(SetCurrentPosition) (THIS_ DWORD dwNewPosition) PURE; - STDMETHOD(SetFormat) (THIS_ LPCWAVEFORMATEX pcfxFormat) PURE; - STDMETHOD(SetVolume) (THIS_ LONG lVolume) PURE; - STDMETHOD(SetPan) (THIS_ LONG lPan) PURE; - STDMETHOD(SetFrequency) (THIS_ DWORD dwFrequency) PURE; - STDMETHOD(Stop) (THIS) PURE; - STDMETHOD(Unlock) (THIS_ LPVOID pvAudioPtr1, DWORD dwAudioBytes1, LPVOID pvAudioPtr2, DWORD dwAudioBytes2) PURE; - STDMETHOD(Restore) (THIS) PURE; -}; - -#define IDirectSoundBuffer_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) -#define IDirectSoundBuffer_AddRef(p) IUnknown_AddRef(p) -#define IDirectSoundBuffer_Release(p) IUnknown_Release(p) - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSoundBuffer_GetCaps(p,a) (p)->lpVtbl->GetCaps(p,a) -#define IDirectSoundBuffer_GetCurrentPosition(p,a,b) (p)->lpVtbl->GetCurrentPosition(p,a,b) -#define IDirectSoundBuffer_GetFormat(p,a,b,c) (p)->lpVtbl->GetFormat(p,a,b,c) -#define IDirectSoundBuffer_GetVolume(p,a) (p)->lpVtbl->GetVolume(p,a) -#define IDirectSoundBuffer_GetPan(p,a) (p)->lpVtbl->GetPan(p,a) -#define IDirectSoundBuffer_GetFrequency(p,a) (p)->lpVtbl->GetFrequency(p,a) -#define IDirectSoundBuffer_GetStatus(p,a) (p)->lpVtbl->GetStatus(p,a) -#define IDirectSoundBuffer_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b) -#define IDirectSoundBuffer_Lock(p,a,b,c,d,e,f,g) (p)->lpVtbl->Lock(p,a,b,c,d,e,f,g) -#define IDirectSoundBuffer_Play(p,a,b,c) (p)->lpVtbl->Play(p,a,b,c) -#define IDirectSoundBuffer_SetCurrentPosition(p,a) (p)->lpVtbl->SetCurrentPosition(p,a) -#define IDirectSoundBuffer_SetFormat(p,a) (p)->lpVtbl->SetFormat(p,a) -#define IDirectSoundBuffer_SetVolume(p,a) (p)->lpVtbl->SetVolume(p,a) -#define IDirectSoundBuffer_SetPan(p,a) (p)->lpVtbl->SetPan(p,a) -#define IDirectSoundBuffer_SetFrequency(p,a) (p)->lpVtbl->SetFrequency(p,a) -#define IDirectSoundBuffer_Stop(p) (p)->lpVtbl->Stop(p) -#define IDirectSoundBuffer_Unlock(p,a,b,c,d) (p)->lpVtbl->Unlock(p,a,b,c,d) -#define IDirectSoundBuffer_Restore(p) (p)->lpVtbl->Restore(p) -#else // !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSoundBuffer_GetCaps(p,a) (p)->GetCaps(a) -#define IDirectSoundBuffer_GetCurrentPosition(p,a,b) (p)->GetCurrentPosition(a,b) -#define IDirectSoundBuffer_GetFormat(p,a,b,c) (p)->GetFormat(a,b,c) -#define IDirectSoundBuffer_GetVolume(p,a) (p)->GetVolume(a) -#define IDirectSoundBuffer_GetPan(p,a) (p)->GetPan(a) -#define IDirectSoundBuffer_GetFrequency(p,a) (p)->GetFrequency(a) -#define IDirectSoundBuffer_GetStatus(p,a) (p)->GetStatus(a) -#define IDirectSoundBuffer_Initialize(p,a,b) (p)->Initialize(a,b) -#define IDirectSoundBuffer_Lock(p,a,b,c,d,e,f,g) (p)->Lock(a,b,c,d,e,f,g) -#define IDirectSoundBuffer_Play(p,a,b,c) (p)->Play(a,b,c) -#define IDirectSoundBuffer_SetCurrentPosition(p,a) (p)->SetCurrentPosition(a) -#define IDirectSoundBuffer_SetFormat(p,a) (p)->SetFormat(a) -#define IDirectSoundBuffer_SetVolume(p,a) (p)->SetVolume(a) -#define IDirectSoundBuffer_SetPan(p,a) (p)->SetPan(a) -#define IDirectSoundBuffer_SetFrequency(p,a) (p)->SetFrequency(a) -#define IDirectSoundBuffer_Stop(p) (p)->Stop() -#define IDirectSoundBuffer_Unlock(p,a,b,c,d) (p)->Unlock(a,b,c,d) -#define IDirectSoundBuffer_Restore(p) (p)->Restore() -#endif // !defined(__cplusplus) || defined(CINTERFACE) - -#if DIRECTSOUND_VERSION >= 0x0800 - -// -// IDirectSoundBuffer8 -// - -DEFINE_GUID(IID_IDirectSoundBuffer8, 0x6825a449, 0x7524, 0x4d82, 0x92, 0x0f, 0x50, 0xe3, 0x6a, 0xb3, 0xab, 0x1e); - -#undef INTERFACE -#define INTERFACE IDirectSoundBuffer8 - -DECLARE_INTERFACE_(IDirectSoundBuffer8, IDirectSoundBuffer) -{ - // IUnknown methods - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - // IDirectSoundBuffer methods - STDMETHOD(GetCaps) (THIS_ LPDSBCAPS pDSBufferCaps) PURE; - STDMETHOD(GetCurrentPosition) (THIS_ LPDWORD pdwCurrentPlayCursor, LPDWORD pdwCurrentWriteCursor) PURE; - STDMETHOD(GetFormat) (THIS_ LPWAVEFORMATEX pwfxFormat, DWORD dwSizeAllocated, LPDWORD pdwSizeWritten) PURE; - STDMETHOD(GetVolume) (THIS_ LPLONG plVolume) PURE; - STDMETHOD(GetPan) (THIS_ LPLONG plPan) PURE; - STDMETHOD(GetFrequency) (THIS_ LPDWORD pdwFrequency) PURE; - STDMETHOD(GetStatus) (THIS_ LPDWORD pdwStatus) PURE; - STDMETHOD(Initialize) (THIS_ LPDIRECTSOUND pDirectSound, LPCDSBUFFERDESC pcDSBufferDesc) PURE; - STDMETHOD(Lock) (THIS_ DWORD dwOffset, DWORD dwBytes, LPVOID *ppvAudioPtr1, LPDWORD pdwAudioBytes1, - LPVOID *ppvAudioPtr2, LPDWORD pdwAudioBytes2, DWORD dwFlags) PURE; - STDMETHOD(Play) (THIS_ DWORD dwReserved1, DWORD dwPriority, DWORD dwFlags) PURE; - STDMETHOD(SetCurrentPosition) (THIS_ DWORD dwNewPosition) PURE; - STDMETHOD(SetFormat) (THIS_ LPCWAVEFORMATEX pcfxFormat) PURE; - STDMETHOD(SetVolume) (THIS_ LONG lVolume) PURE; - STDMETHOD(SetPan) (THIS_ LONG lPan) PURE; - STDMETHOD(SetFrequency) (THIS_ DWORD dwFrequency) PURE; - STDMETHOD(Stop) (THIS) PURE; - STDMETHOD(Unlock) (THIS_ LPVOID pvAudioPtr1, DWORD dwAudioBytes1, LPVOID pvAudioPtr2, DWORD dwAudioBytes2) PURE; - STDMETHOD(Restore) (THIS) PURE; - - // IDirectSoundBuffer8 methods - STDMETHOD(SetFX) (THIS_ DWORD dwEffectsCount, LPDSEFFECTDESC pDSFXDesc, LPDWORD pdwResultCodes) PURE; - STDMETHOD(AcquireResources) (THIS_ DWORD dwFlags, DWORD dwEffectsCount, LPDWORD pdwResultCodes) PURE; - STDMETHOD(GetObjectInPath) (THIS_ REFGUID rguidObject, DWORD dwIndex, REFGUID rguidInterface, LPVOID *ppObject) PURE; -}; - -// Special GUID meaning "select all objects" for use in GetObjectInPath() -DEFINE_GUID(GUID_All_Objects, 0xaa114de5, 0xc262, 0x4169, 0xa1, 0xc8, 0x23, 0xd6, 0x98, 0xcc, 0x73, 0xb5); - -#define IDirectSoundBuffer8_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) -#define IDirectSoundBuffer8_AddRef(p) IUnknown_AddRef(p) -#define IDirectSoundBuffer8_Release(p) IUnknown_Release(p) - -#define IDirectSoundBuffer8_GetCaps(p,a) IDirectSoundBuffer_GetCaps(p,a) -#define IDirectSoundBuffer8_GetCurrentPosition(p,a,b) IDirectSoundBuffer_GetCurrentPosition(p,a,b) -#define IDirectSoundBuffer8_GetFormat(p,a,b,c) IDirectSoundBuffer_GetFormat(p,a,b,c) -#define IDirectSoundBuffer8_GetVolume(p,a) IDirectSoundBuffer_GetVolume(p,a) -#define IDirectSoundBuffer8_GetPan(p,a) IDirectSoundBuffer_GetPan(p,a) -#define IDirectSoundBuffer8_GetFrequency(p,a) IDirectSoundBuffer_GetFrequency(p,a) -#define IDirectSoundBuffer8_GetStatus(p,a) IDirectSoundBuffer_GetStatus(p,a) -#define IDirectSoundBuffer8_Initialize(p,a,b) IDirectSoundBuffer_Initialize(p,a,b) -#define IDirectSoundBuffer8_Lock(p,a,b,c,d,e,f,g) IDirectSoundBuffer_Lock(p,a,b,c,d,e,f,g) -#define IDirectSoundBuffer8_Play(p,a,b,c) IDirectSoundBuffer_Play(p,a,b,c) -#define IDirectSoundBuffer8_SetCurrentPosition(p,a) IDirectSoundBuffer_SetCurrentPosition(p,a) -#define IDirectSoundBuffer8_SetFormat(p,a) IDirectSoundBuffer_SetFormat(p,a) -#define IDirectSoundBuffer8_SetVolume(p,a) IDirectSoundBuffer_SetVolume(p,a) -#define IDirectSoundBuffer8_SetPan(p,a) IDirectSoundBuffer_SetPan(p,a) -#define IDirectSoundBuffer8_SetFrequency(p,a) IDirectSoundBuffer_SetFrequency(p,a) -#define IDirectSoundBuffer8_Stop(p) IDirectSoundBuffer_Stop(p) -#define IDirectSoundBuffer8_Unlock(p,a,b,c,d) IDirectSoundBuffer_Unlock(p,a,b,c,d) -#define IDirectSoundBuffer8_Restore(p) IDirectSoundBuffer_Restore(p) - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSoundBuffer8_SetFX(p,a,b,c) (p)->lpVtbl->SetFX(p,a,b,c) -#define IDirectSoundBuffer8_AcquireResources(p,a,b,c) (p)->lpVtbl->AcquireResources(p,a,b,c) -#define IDirectSoundBuffer8_GetObjectInPath(p,a,b,c,d) (p)->lpVtbl->GetObjectInPath(p,a,b,c,d) -#else // !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSoundBuffer8_SetFX(p,a,b,c) (p)->SetFX(a,b,c) -#define IDirectSoundBuffer8_AcquireResources(p,a,b,c) (p)->AcquireResources(a,b,c) -#define IDirectSoundBuffer8_GetObjectInPath(p,a,b,c,d) (p)->GetObjectInPath(a,b,c,d) -#endif // !defined(__cplusplus) || defined(CINTERFACE) - -#endif // DIRECTSOUND_VERSION >= 0x0800 - -// -// IDirectSound3DListener -// - -DEFINE_GUID(IID_IDirectSound3DListener, 0x279AFA84, 0x4981, 0x11CE, 0xA5, 0x21, 0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60); - -#undef INTERFACE -#define INTERFACE IDirectSound3DListener - -DECLARE_INTERFACE_(IDirectSound3DListener, IUnknown) -{ - // IUnknown methods - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - // IDirectSound3DListener methods - STDMETHOD(GetAllParameters) (THIS_ LPDS3DLISTENER pListener) PURE; - STDMETHOD(GetDistanceFactor) (THIS_ D3DVALUE* pflDistanceFactor) PURE; - STDMETHOD(GetDopplerFactor) (THIS_ D3DVALUE* pflDopplerFactor) PURE; - STDMETHOD(GetOrientation) (THIS_ D3DVECTOR* pvOrientFront, D3DVECTOR* pvOrientTop) PURE; - STDMETHOD(GetPosition) (THIS_ D3DVECTOR* pvPosition) PURE; - STDMETHOD(GetRolloffFactor) (THIS_ D3DVALUE* pflRolloffFactor) PURE; - STDMETHOD(GetVelocity) (THIS_ D3DVECTOR* pvVelocity) PURE; - STDMETHOD(SetAllParameters) (THIS_ LPCDS3DLISTENER pcListener, DWORD dwApply) PURE; - STDMETHOD(SetDistanceFactor) (THIS_ D3DVALUE flDistanceFactor, DWORD dwApply) PURE; - STDMETHOD(SetDopplerFactor) (THIS_ D3DVALUE flDopplerFactor, DWORD dwApply) PURE; - STDMETHOD(SetOrientation) (THIS_ D3DVALUE xFront, D3DVALUE yFront, D3DVALUE zFront, - D3DVALUE xTop, D3DVALUE yTop, D3DVALUE zTop, DWORD dwApply) PURE; - STDMETHOD(SetPosition) (THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z, DWORD dwApply) PURE; - STDMETHOD(SetRolloffFactor) (THIS_ D3DVALUE flRolloffFactor, DWORD dwApply) PURE; - STDMETHOD(SetVelocity) (THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z, DWORD dwApply) PURE; - STDMETHOD(CommitDeferredSettings) (THIS) PURE; -}; - -#define IDirectSound3DListener_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) -#define IDirectSound3DListener_AddRef(p) IUnknown_AddRef(p) -#define IDirectSound3DListener_Release(p) IUnknown_Release(p) - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSound3DListener_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a) -#define IDirectSound3DListener_GetDistanceFactor(p,a) (p)->lpVtbl->GetDistanceFactor(p,a) -#define IDirectSound3DListener_GetDopplerFactor(p,a) (p)->lpVtbl->GetDopplerFactor(p,a) -#define IDirectSound3DListener_GetOrientation(p,a,b) (p)->lpVtbl->GetOrientation(p,a,b) -#define IDirectSound3DListener_GetPosition(p,a) (p)->lpVtbl->GetPosition(p,a) -#define IDirectSound3DListener_GetRolloffFactor(p,a) (p)->lpVtbl->GetRolloffFactor(p,a) -#define IDirectSound3DListener_GetVelocity(p,a) (p)->lpVtbl->GetVelocity(p,a) -#define IDirectSound3DListener_SetAllParameters(p,a,b) (p)->lpVtbl->SetAllParameters(p,a,b) -#define IDirectSound3DListener_SetDistanceFactor(p,a,b) (p)->lpVtbl->SetDistanceFactor(p,a,b) -#define IDirectSound3DListener_SetDopplerFactor(p,a,b) (p)->lpVtbl->SetDopplerFactor(p,a,b) -#define IDirectSound3DListener_SetOrientation(p,a,b,c,d,e,f,g) (p)->lpVtbl->SetOrientation(p,a,b,c,d,e,f,g) -#define IDirectSound3DListener_SetPosition(p,a,b,c,d) (p)->lpVtbl->SetPosition(p,a,b,c,d) -#define IDirectSound3DListener_SetRolloffFactor(p,a,b) (p)->lpVtbl->SetRolloffFactor(p,a,b) -#define IDirectSound3DListener_SetVelocity(p,a,b,c,d) (p)->lpVtbl->SetVelocity(p,a,b,c,d) -#define IDirectSound3DListener_CommitDeferredSettings(p) (p)->lpVtbl->CommitDeferredSettings(p) -#else // !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSound3DListener_GetAllParameters(p,a) (p)->GetAllParameters(a) -#define IDirectSound3DListener_GetDistanceFactor(p,a) (p)->GetDistanceFactor(a) -#define IDirectSound3DListener_GetDopplerFactor(p,a) (p)->GetDopplerFactor(a) -#define IDirectSound3DListener_GetOrientation(p,a,b) (p)->GetOrientation(a,b) -#define IDirectSound3DListener_GetPosition(p,a) (p)->GetPosition(a) -#define IDirectSound3DListener_GetRolloffFactor(p,a) (p)->GetRolloffFactor(a) -#define IDirectSound3DListener_GetVelocity(p,a) (p)->GetVelocity(a) -#define IDirectSound3DListener_SetAllParameters(p,a,b) (p)->SetAllParameters(a,b) -#define IDirectSound3DListener_SetDistanceFactor(p,a,b) (p)->SetDistanceFactor(a,b) -#define IDirectSound3DListener_SetDopplerFactor(p,a,b) (p)->SetDopplerFactor(a,b) -#define IDirectSound3DListener_SetOrientation(p,a,b,c,d,e,f,g) (p)->SetOrientation(a,b,c,d,e,f,g) -#define IDirectSound3DListener_SetPosition(p,a,b,c,d) (p)->SetPosition(a,b,c,d) -#define IDirectSound3DListener_SetRolloffFactor(p,a,b) (p)->SetRolloffFactor(a,b) -#define IDirectSound3DListener_SetVelocity(p,a,b,c,d) (p)->SetVelocity(a,b,c,d) -#define IDirectSound3DListener_CommitDeferredSettings(p) (p)->CommitDeferredSettings() -#endif // !defined(__cplusplus) || defined(CINTERFACE) - -// -// IDirectSound3DBuffer -// - -DEFINE_GUID(IID_IDirectSound3DBuffer, 0x279AFA86, 0x4981, 0x11CE, 0xA5, 0x21, 0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60); - -#undef INTERFACE -#define INTERFACE IDirectSound3DBuffer - -DECLARE_INTERFACE_(IDirectSound3DBuffer, IUnknown) -{ - // IUnknown methods - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - // IDirectSound3DBuffer methods - STDMETHOD(GetAllParameters) (THIS_ LPDS3DBUFFER pDs3dBuffer) PURE; - STDMETHOD(GetConeAngles) (THIS_ LPDWORD pdwInsideConeAngle, LPDWORD pdwOutsideConeAngle) PURE; - STDMETHOD(GetConeOrientation) (THIS_ D3DVECTOR* pvOrientation) PURE; - STDMETHOD(GetConeOutsideVolume) (THIS_ LPLONG plConeOutsideVolume) PURE; - STDMETHOD(GetMaxDistance) (THIS_ D3DVALUE* pflMaxDistance) PURE; - STDMETHOD(GetMinDistance) (THIS_ D3DVALUE* pflMinDistance) PURE; - STDMETHOD(GetMode) (THIS_ LPDWORD pdwMode) PURE; - STDMETHOD(GetPosition) (THIS_ D3DVECTOR* pvPosition) PURE; - STDMETHOD(GetVelocity) (THIS_ D3DVECTOR* pvVelocity) PURE; - STDMETHOD(SetAllParameters) (THIS_ LPCDS3DBUFFER pcDs3dBuffer, DWORD dwApply) PURE; - STDMETHOD(SetConeAngles) (THIS_ DWORD dwInsideConeAngle, DWORD dwOutsideConeAngle, DWORD dwApply) PURE; - STDMETHOD(SetConeOrientation) (THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z, DWORD dwApply) PURE; - STDMETHOD(SetConeOutsideVolume) (THIS_ LONG lConeOutsideVolume, DWORD dwApply) PURE; - STDMETHOD(SetMaxDistance) (THIS_ D3DVALUE flMaxDistance, DWORD dwApply) PURE; - STDMETHOD(SetMinDistance) (THIS_ D3DVALUE flMinDistance, DWORD dwApply) PURE; - STDMETHOD(SetMode) (THIS_ DWORD dwMode, DWORD dwApply) PURE; - STDMETHOD(SetPosition) (THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z, DWORD dwApply) PURE; - STDMETHOD(SetVelocity) (THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z, DWORD dwApply) PURE; -}; - -#define IDirectSound3DBuffer_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) -#define IDirectSound3DBuffer_AddRef(p) IUnknown_AddRef(p) -#define IDirectSound3DBuffer_Release(p) IUnknown_Release(p) - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSound3DBuffer_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a) -#define IDirectSound3DBuffer_GetConeAngles(p,a,b) (p)->lpVtbl->GetConeAngles(p,a,b) -#define IDirectSound3DBuffer_GetConeOrientation(p,a) (p)->lpVtbl->GetConeOrientation(p,a) -#define IDirectSound3DBuffer_GetConeOutsideVolume(p,a) (p)->lpVtbl->GetConeOutsideVolume(p,a) -#define IDirectSound3DBuffer_GetPosition(p,a) (p)->lpVtbl->GetPosition(p,a) -#define IDirectSound3DBuffer_GetMinDistance(p,a) (p)->lpVtbl->GetMinDistance(p,a) -#define IDirectSound3DBuffer_GetMaxDistance(p,a) (p)->lpVtbl->GetMaxDistance(p,a) -#define IDirectSound3DBuffer_GetMode(p,a) (p)->lpVtbl->GetMode(p,a) -#define IDirectSound3DBuffer_GetVelocity(p,a) (p)->lpVtbl->GetVelocity(p,a) -#define IDirectSound3DBuffer_SetAllParameters(p,a,b) (p)->lpVtbl->SetAllParameters(p,a,b) -#define IDirectSound3DBuffer_SetConeAngles(p,a,b,c) (p)->lpVtbl->SetConeAngles(p,a,b,c) -#define IDirectSound3DBuffer_SetConeOrientation(p,a,b,c,d) (p)->lpVtbl->SetConeOrientation(p,a,b,c,d) -#define IDirectSound3DBuffer_SetConeOutsideVolume(p,a,b) (p)->lpVtbl->SetConeOutsideVolume(p,a,b) -#define IDirectSound3DBuffer_SetPosition(p,a,b,c,d) (p)->lpVtbl->SetPosition(p,a,b,c,d) -#define IDirectSound3DBuffer_SetMinDistance(p,a,b) (p)->lpVtbl->SetMinDistance(p,a,b) -#define IDirectSound3DBuffer_SetMaxDistance(p,a,b) (p)->lpVtbl->SetMaxDistance(p,a,b) -#define IDirectSound3DBuffer_SetMode(p,a,b) (p)->lpVtbl->SetMode(p,a,b) -#define IDirectSound3DBuffer_SetVelocity(p,a,b,c,d) (p)->lpVtbl->SetVelocity(p,a,b,c,d) -#else // !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSound3DBuffer_GetAllParameters(p,a) (p)->GetAllParameters(a) -#define IDirectSound3DBuffer_GetConeAngles(p,a,b) (p)->GetConeAngles(a,b) -#define IDirectSound3DBuffer_GetConeOrientation(p,a) (p)->GetConeOrientation(a) -#define IDirectSound3DBuffer_GetConeOutsideVolume(p,a) (p)->GetConeOutsideVolume(a) -#define IDirectSound3DBuffer_GetPosition(p,a) (p)->GetPosition(a) -#define IDirectSound3DBuffer_GetMinDistance(p,a) (p)->GetMinDistance(a) -#define IDirectSound3DBuffer_GetMaxDistance(p,a) (p)->GetMaxDistance(a) -#define IDirectSound3DBuffer_GetMode(p,a) (p)->GetMode(a) -#define IDirectSound3DBuffer_GetVelocity(p,a) (p)->GetVelocity(a) -#define IDirectSound3DBuffer_SetAllParameters(p,a,b) (p)->SetAllParameters(a,b) -#define IDirectSound3DBuffer_SetConeAngles(p,a,b,c) (p)->SetConeAngles(a,b,c) -#define IDirectSound3DBuffer_SetConeOrientation(p,a,b,c,d) (p)->SetConeOrientation(a,b,c,d) -#define IDirectSound3DBuffer_SetConeOutsideVolume(p,a,b) (p)->SetConeOutsideVolume(a,b) -#define IDirectSound3DBuffer_SetPosition(p,a,b,c,d) (p)->SetPosition(a,b,c,d) -#define IDirectSound3DBuffer_SetMinDistance(p,a,b) (p)->SetMinDistance(a,b) -#define IDirectSound3DBuffer_SetMaxDistance(p,a,b) (p)->SetMaxDistance(a,b) -#define IDirectSound3DBuffer_SetMode(p,a,b) (p)->SetMode(a,b) -#define IDirectSound3DBuffer_SetVelocity(p,a,b,c,d) (p)->SetVelocity(a,b,c,d) -#endif // !defined(__cplusplus) || defined(CINTERFACE) - -// -// IDirectSoundCapture -// - -DEFINE_GUID(IID_IDirectSoundCapture, 0xb0210781, 0x89cd, 0x11d0, 0xaf, 0x8, 0x0, 0xa0, 0xc9, 0x25, 0xcd, 0x16); - -#undef INTERFACE -#define INTERFACE IDirectSoundCapture - -DECLARE_INTERFACE_(IDirectSoundCapture, IUnknown) -{ - // IUnknown methods - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - // IDirectSoundCapture methods - STDMETHOD(CreateCaptureBuffer) (THIS_ LPCDSCBUFFERDESC pcDSCBufferDesc, LPDIRECTSOUNDCAPTUREBUFFER *ppDSCBuffer, LPUNKNOWN pUnkOuter) PURE; - STDMETHOD(GetCaps) (THIS_ LPDSCCAPS pDSCCaps) PURE; - STDMETHOD(Initialize) (THIS_ LPCGUID pcGuidDevice) PURE; -}; - -#define IDirectSoundCapture_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) -#define IDirectSoundCapture_AddRef(p) IUnknown_AddRef(p) -#define IDirectSoundCapture_Release(p) IUnknown_Release(p) - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSoundCapture_CreateCaptureBuffer(p,a,b,c) (p)->lpVtbl->CreateCaptureBuffer(p,a,b,c) -#define IDirectSoundCapture_GetCaps(p,a) (p)->lpVtbl->GetCaps(p,a) -#define IDirectSoundCapture_Initialize(p,a) (p)->lpVtbl->Initialize(p,a) -#else // !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSoundCapture_CreateCaptureBuffer(p,a,b,c) (p)->CreateCaptureBuffer(a,b,c) -#define IDirectSoundCapture_GetCaps(p,a) (p)->GetCaps(a) -#define IDirectSoundCapture_Initialize(p,a) (p)->Initialize(a) -#endif // !defined(__cplusplus) || defined(CINTERFACE) - -// -// IDirectSoundCaptureBuffer -// - -DEFINE_GUID(IID_IDirectSoundCaptureBuffer, 0xb0210782, 0x89cd, 0x11d0, 0xaf, 0x8, 0x0, 0xa0, 0xc9, 0x25, 0xcd, 0x16); - -#undef INTERFACE -#define INTERFACE IDirectSoundCaptureBuffer - -DECLARE_INTERFACE_(IDirectSoundCaptureBuffer, IUnknown) -{ - // IUnknown methods - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - // IDirectSoundCaptureBuffer methods - STDMETHOD(GetCaps) (THIS_ LPDSCBCAPS pDSCBCaps) PURE; - STDMETHOD(GetCurrentPosition) (THIS_ LPDWORD pdwCapturePosition, LPDWORD pdwReadPosition) PURE; - STDMETHOD(GetFormat) (THIS_ LPWAVEFORMATEX pwfxFormat, DWORD dwSizeAllocated, LPDWORD pdwSizeWritten) PURE; - STDMETHOD(GetStatus) (THIS_ LPDWORD pdwStatus) PURE; - STDMETHOD(Initialize) (THIS_ LPDIRECTSOUNDCAPTURE pDirectSoundCapture, LPCDSCBUFFERDESC pcDSCBufferDesc) PURE; - STDMETHOD(Lock) (THIS_ DWORD dwOffset, DWORD dwBytes, LPVOID *ppvAudioPtr1, LPDWORD pdwAudioBytes1, - LPVOID *ppvAudioPtr2, LPDWORD pdwAudioBytes2, DWORD dwFlags) PURE; - STDMETHOD(Start) (THIS_ DWORD dwFlags) PURE; - STDMETHOD(Stop) (THIS) PURE; - STDMETHOD(Unlock) (THIS_ LPVOID pvAudioPtr1, DWORD dwAudioBytes1, LPVOID pvAudioPtr2, DWORD dwAudioBytes2) PURE; -}; - -#define IDirectSoundCaptureBuffer_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) -#define IDirectSoundCaptureBuffer_AddRef(p) IUnknown_AddRef(p) -#define IDirectSoundCaptureBuffer_Release(p) IUnknown_Release(p) - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSoundCaptureBuffer_GetCaps(p,a) (p)->lpVtbl->GetCaps(p,a) -#define IDirectSoundCaptureBuffer_GetCurrentPosition(p,a,b) (p)->lpVtbl->GetCurrentPosition(p,a,b) -#define IDirectSoundCaptureBuffer_GetFormat(p,a,b,c) (p)->lpVtbl->GetFormat(p,a,b,c) -#define IDirectSoundCaptureBuffer_GetStatus(p,a) (p)->lpVtbl->GetStatus(p,a) -#define IDirectSoundCaptureBuffer_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b) -#define IDirectSoundCaptureBuffer_Lock(p,a,b,c,d,e,f,g) (p)->lpVtbl->Lock(p,a,b,c,d,e,f,g) -#define IDirectSoundCaptureBuffer_Start(p,a) (p)->lpVtbl->Start(p,a) -#define IDirectSoundCaptureBuffer_Stop(p) (p)->lpVtbl->Stop(p) -#define IDirectSoundCaptureBuffer_Unlock(p,a,b,c,d) (p)->lpVtbl->Unlock(p,a,b,c,d) -#else // !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSoundCaptureBuffer_GetCaps(p,a) (p)->GetCaps(a) -#define IDirectSoundCaptureBuffer_GetCurrentPosition(p,a,b) (p)->GetCurrentPosition(a,b) -#define IDirectSoundCaptureBuffer_GetFormat(p,a,b,c) (p)->GetFormat(a,b,c) -#define IDirectSoundCaptureBuffer_GetStatus(p,a) (p)->GetStatus(a) -#define IDirectSoundCaptureBuffer_Initialize(p,a,b) (p)->Initialize(a,b) -#define IDirectSoundCaptureBuffer_Lock(p,a,b,c,d,e,f,g) (p)->Lock(a,b,c,d,e,f,g) -#define IDirectSoundCaptureBuffer_Start(p,a) (p)->Start(a) -#define IDirectSoundCaptureBuffer_Stop(p) (p)->Stop() -#define IDirectSoundCaptureBuffer_Unlock(p,a,b,c,d) (p)->Unlock(a,b,c,d) -#endif // !defined(__cplusplus) || defined(CINTERFACE) - - -#if DIRECTSOUND_VERSION >= 0x0800 - -// -// IDirectSoundCaptureBuffer8 -// - -DEFINE_GUID(IID_IDirectSoundCaptureBuffer8, 0x990df4, 0xdbb, 0x4872, 0x83, 0x3e, 0x6d, 0x30, 0x3e, 0x80, 0xae, 0xb6); - -#undef INTERFACE -#define INTERFACE IDirectSoundCaptureBuffer8 - -DECLARE_INTERFACE_(IDirectSoundCaptureBuffer8, IDirectSoundCaptureBuffer) -{ - // IUnknown methods - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - // IDirectSoundCaptureBuffer methods - STDMETHOD(GetCaps) (THIS_ LPDSCBCAPS pDSCBCaps) PURE; - STDMETHOD(GetCurrentPosition) (THIS_ LPDWORD pdwCapturePosition, LPDWORD pdwReadPosition) PURE; - STDMETHOD(GetFormat) (THIS_ LPWAVEFORMATEX pwfxFormat, DWORD dwSizeAllocated, LPDWORD pdwSizeWritten) PURE; - STDMETHOD(GetStatus) (THIS_ LPDWORD pdwStatus) PURE; - STDMETHOD(Initialize) (THIS_ LPDIRECTSOUNDCAPTURE pDirectSoundCapture, LPCDSCBUFFERDESC pcDSCBufferDesc) PURE; - STDMETHOD(Lock) (THIS_ DWORD dwOffset, DWORD dwBytes, LPVOID *ppvAudioPtr1, LPDWORD pdwAudioBytes1, - LPVOID *ppvAudioPtr2, LPDWORD pdwAudioBytes2, DWORD dwFlags) PURE; - STDMETHOD(Start) (THIS_ DWORD dwFlags) PURE; - STDMETHOD(Stop) (THIS) PURE; - STDMETHOD(Unlock) (THIS_ LPVOID pvAudioPtr1, DWORD dwAudioBytes1, LPVOID pvAudioPtr2, DWORD dwAudioBytes2) PURE; - - // IDirectSoundCaptureBuffer8 methods - STDMETHOD(GetObjectInPath) (THIS_ REFGUID rguidObject, DWORD dwIndex, REFGUID rguidInterface, LPVOID *ppObject) PURE; - STDMETHOD(GetFXStatus) (DWORD dwFXCount, LPDWORD pdwFXStatus) PURE; -}; - -#define IDirectSoundCaptureBuffer8_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) -#define IDirectSoundCaptureBuffer8_AddRef(p) IUnknown_AddRef(p) -#define IDirectSoundCaptureBuffer8_Release(p) IUnknown_Release(p) - -#define IDirectSoundCaptureBuffer8_GetCaps(p,a) IDirectSoundCaptureBuffer_GetCaps(p,a) -#define IDirectSoundCaptureBuffer8_GetCurrentPosition(p,a,b) IDirectSoundCaptureBuffer_GetCurrentPosition(p,a,b) -#define IDirectSoundCaptureBuffer8_GetFormat(p,a,b,c) IDirectSoundCaptureBuffer_GetFormat(p,a,b,c) -#define IDirectSoundCaptureBuffer8_GetStatus(p,a) IDirectSoundCaptureBuffer_GetStatus(p,a) -#define IDirectSoundCaptureBuffer8_Initialize(p,a,b) IDirectSoundCaptureBuffer_Initialize(p,a,b) -#define IDirectSoundCaptureBuffer8_Lock(p,a,b,c,d,e,f,g) IDirectSoundCaptureBuffer_Lock(p,a,b,c,d,e,f,g) -#define IDirectSoundCaptureBuffer8_Start(p,a) IDirectSoundCaptureBuffer_Start(p,a) -#define IDirectSoundCaptureBuffer8_Stop(p) IDirectSoundCaptureBuffer_Stop(p)) -#define IDirectSoundCaptureBuffer8_Unlock(p,a,b,c,d) IDirectSoundCaptureBuffer_Unlock(p,a,b,c,d) - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSoundCaptureBuffer8_GetObjectInPath(p,a,b,c,d) (p)->lpVtbl->GetObjectInPath(p,a,b,c,d) -#define IDirectSoundCaptureBuffer8_GetFXStatus(p,a,b) (p)->lpVtbl->GetFXStatus(p,a,b) -#else // !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSoundCaptureBuffer8_GetObjectInPath(p,a,b,c,d) (p)->GetObjectInPath(a,b,c,d) -#define IDirectSoundCaptureBuffer8_GetFXStatus(p,a,b) (p)->GetFXStatus(a,b) -#endif // !defined(__cplusplus) || defined(CINTERFACE) - -#endif // DIRECTSOUND_VERSION >= 0x0800 - -// -// IDirectSoundNotify -// - -DEFINE_GUID(IID_IDirectSoundNotify, 0xb0210783, 0x89cd, 0x11d0, 0xaf, 0x8, 0x0, 0xa0, 0xc9, 0x25, 0xcd, 0x16); - -#undef INTERFACE -#define INTERFACE IDirectSoundNotify - -DECLARE_INTERFACE_(IDirectSoundNotify, IUnknown) -{ - // IUnknown methods - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - // IDirectSoundNotify methods - STDMETHOD(SetNotificationPositions) (THIS_ DWORD dwPositionNotifies, LPCDSBPOSITIONNOTIFY pcPositionNotifies) PURE; -}; - -#define IDirectSoundNotify_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) -#define IDirectSoundNotify_AddRef(p) IUnknown_AddRef(p) -#define IDirectSoundNotify_Release(p) IUnknown_Release(p) - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSoundNotify_SetNotificationPositions(p,a,b) (p)->lpVtbl->SetNotificationPositions(p,a,b) -#else // !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSoundNotify_SetNotificationPositions(p,a,b) (p)->SetNotificationPositions(a,b) -#endif // !defined(__cplusplus) || defined(CINTERFACE) - -// -// IKsPropertySet -// - -#ifndef _IKsPropertySet_ -#define _IKsPropertySet_ - -#ifdef __cplusplus -// 'struct' not 'class' per the way DECLARE_INTERFACE_ is defined -struct IKsPropertySet; -#endif // __cplusplus - -typedef struct IKsPropertySet *LPKSPROPERTYSET; - -#define KSPROPERTY_SUPPORT_GET 0x00000001 -#define KSPROPERTY_SUPPORT_SET 0x00000002 - -DEFINE_GUID(IID_IKsPropertySet, 0x31efac30, 0x515c, 0x11d0, 0xa9, 0xaa, 0x00, 0xaa, 0x00, 0x61, 0xbe, 0x93); - -#undef INTERFACE -#define INTERFACE IKsPropertySet - -DECLARE_INTERFACE_(IKsPropertySet, IUnknown) -{ - // IUnknown methods - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - // IKsPropertySet methods - STDMETHOD(Get) (THIS_ REFGUID rguidPropSet, ULONG ulId, LPVOID pInstanceData, ULONG ulInstanceLength, - LPVOID pPropertyData, ULONG ulDataLength, PULONG pulBytesReturned) PURE; - STDMETHOD(Set) (THIS_ REFGUID rguidPropSet, ULONG ulId, LPVOID pInstanceData, ULONG ulInstanceLength, - LPVOID pPropertyData, ULONG ulDataLength) PURE; - STDMETHOD(QuerySupport) (THIS_ REFGUID rguidPropSet, ULONG ulId, PULONG pulTypeSupport) PURE; -}; - -#define IKsPropertySet_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) -#define IKsPropertySet_AddRef(p) IUnknown_AddRef(p) -#define IKsPropertySet_Release(p) IUnknown_Release(p) - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IKsPropertySet_Get(p,a,b,c,d,e,f,g) (p)->lpVtbl->Get(p,a,b,c,d,e,f,g) -#define IKsPropertySet_Set(p,a,b,c,d,e,f) (p)->lpVtbl->Set(p,a,b,c,d,e,f) -#define IKsPropertySet_QuerySupport(p,a,b,c) (p)->lpVtbl->QuerySupport(p,a,b,c) -#else // !defined(__cplusplus) || defined(CINTERFACE) -#define IKsPropertySet_Get(p,a,b,c,d,e,f,g) (p)->Get(a,b,c,d,e,f,g) -#define IKsPropertySet_Set(p,a,b,c,d,e,f) (p)->Set(a,b,c,d,e,f) -#define IKsPropertySet_QuerySupport(p,a,b,c) (p)->QuerySupport(a,b,c) -#endif // !defined(__cplusplus) || defined(CINTERFACE) - -#endif // _IKsPropertySet_ - -#if DIRECTSOUND_VERSION >= 0x0800 - -// -// IDirectSoundFXGargle -// - -DEFINE_GUID(IID_IDirectSoundFXGargle, 0xd616f352, 0xd622, 0x11ce, 0xaa, 0xc5, 0x00, 0x20, 0xaf, 0x0b, 0x99, 0xa3); - -typedef struct _DSFXGargle -{ - DWORD dwRateHz; // Rate of modulation in hz - DWORD dwWaveShape; // DSFXGARGLE_WAVE_xxx -} DSFXGargle, *LPDSFXGargle; - -#define DSFXGARGLE_WAVE_TRIANGLE 0 -#define DSFXGARGLE_WAVE_SQUARE 1 - -typedef const DSFXGargle *LPCDSFXGargle; - -#define DSFXGARGLE_RATEHZ_MIN 1 -#define DSFXGARGLE_RATEHZ_MAX 1000 - -#undef INTERFACE -#define INTERFACE IDirectSoundFXGargle - -DECLARE_INTERFACE_(IDirectSoundFXGargle, IUnknown) -{ - // IUnknown methods - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - // IDirectSoundFXGargle methods - STDMETHOD(SetAllParameters) (THIS_ LPCDSFXGargle pcDsFxGargle) PURE; - STDMETHOD(GetAllParameters) (THIS_ LPDSFXGargle pDsFxGargle) PURE; -}; - -#define IDirectSoundFXGargle_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) -#define IDirectSoundFXGargle_AddRef(p) IUnknown_AddRef(p) -#define IDirectSoundFXGargle_Release(p) IUnknown_Release(p) - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSoundFXGargle_SetAllParameters(p,a) (p)->lpVtbl->SetAllParameters(p,a) -#define IDirectSoundFXGargle_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a) -#else // !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSoundFXGargle_SetAllParameters(p,a) (p)->SetAllParameters(a) -#define IDirectSoundFXGargle_GetAllParameters(p,a) (p)->GetAllParameters(a) -#endif // !defined(__cplusplus) || defined(CINTERFACE) - -// -// IDirectSoundFXChorus -// - -DEFINE_GUID(IID_IDirectSoundFXChorus, 0x880842e3, 0x145f, 0x43e6, 0xa9, 0x34, 0xa7, 0x18, 0x06, 0xe5, 0x05, 0x47); - -typedef struct _DSFXChorus -{ - FLOAT fWetDryMix; - FLOAT fDepth; - FLOAT fFeedback; - FLOAT fFrequency; - LONG lWaveform; // LFO shape; DSFXCHORUS_WAVE_xxx - FLOAT fDelay; - LONG lPhase; -} DSFXChorus, *LPDSFXChorus; - -typedef const DSFXChorus *LPCDSFXChorus; - -#define DSFXCHORUS_WAVE_TRIANGLE 0 -#define DSFXCHORUS_WAVE_SIN 1 - -#define DSFXCHORUS_WETDRYMIX_MIN 0.0f -#define DSFXCHORUS_WETDRYMIX_MAX 100.0f -#define DSFXCHORUS_DEPTH_MIN 0.0f -#define DSFXCHORUS_DEPTH_MAX 100.0f -#define DSFXCHORUS_FEEDBACK_MIN -99.0f -#define DSFXCHORUS_FEEDBACK_MAX 99.0f -#define DSFXCHORUS_FREQUENCY_MIN 0.0f -#define DSFXCHORUS_FREQUENCY_MAX 10.0f -#define DSFXCHORUS_DELAY_MIN 0.0f -#define DSFXCHORUS_DELAY_MAX 20.0f -#define DSFXCHORUS_PHASE_MIN 0 -#define DSFXCHORUS_PHASE_MAX 4 - -#define DSFXCHORUS_PHASE_NEG_180 0 -#define DSFXCHORUS_PHASE_NEG_90 1 -#define DSFXCHORUS_PHASE_ZERO 2 -#define DSFXCHORUS_PHASE_90 3 -#define DSFXCHORUS_PHASE_180 4 - -#undef INTERFACE -#define INTERFACE IDirectSoundFXChorus - -DECLARE_INTERFACE_(IDirectSoundFXChorus, IUnknown) -{ - // IUnknown methods - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - // IDirectSoundFXChorus methods - STDMETHOD(SetAllParameters) (THIS_ LPCDSFXChorus pcDsFxChorus) PURE; - STDMETHOD(GetAllParameters) (THIS_ LPDSFXChorus pDsFxChorus) PURE; -}; - -#define IDirectSoundFXChorus_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) -#define IDirectSoundFXChorus_AddRef(p) IUnknown_AddRef(p) -#define IDirectSoundFXChorus_Release(p) IUnknown_Release(p) - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSoundFXChorus_SetAllParameters(p,a) (p)->lpVtbl->SetAllParameters(p,a) -#define IDirectSoundFXChorus_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a) -#else // !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSoundFXChorus_SetAllParameters(p,a) (p)->SetAllParameters(a) -#define IDirectSoundFXChorus_GetAllParameters(p,a) (p)->GetAllParameters(a) -#endif // !defined(__cplusplus) || defined(CINTERFACE) - -// -// IDirectSoundFXFlanger -// - -DEFINE_GUID(IID_IDirectSoundFXFlanger, 0x903e9878, 0x2c92, 0x4072, 0x9b, 0x2c, 0xea, 0x68, 0xf5, 0x39, 0x67, 0x83); - -typedef struct _DSFXFlanger -{ - FLOAT fWetDryMix; - FLOAT fDepth; - FLOAT fFeedback; - FLOAT fFrequency; - LONG lWaveform; - FLOAT fDelay; - LONG lPhase; -} DSFXFlanger, *LPDSFXFlanger; - -typedef const DSFXFlanger *LPCDSFXFlanger; - -#define DSFXFLANGER_WAVE_TRIANGLE 0 -#define DSFXFLANGER_WAVE_SIN 1 - -#define DSFXFLANGER_WETDRYMIX_MIN 0.0f -#define DSFXFLANGER_WETDRYMIX_MAX 100.0f -#define DSFXFLANGER_FREQUENCY_MIN 0.0f -#define DSFXFLANGER_FREQUENCY_MAX 10.0f -#define DSFXFLANGER_DEPTH_MIN 0.0f -#define DSFXFLANGER_DEPTH_MAX 100.0f -#define DSFXFLANGER_PHASE_MIN 0 -#define DSFXFLANGER_PHASE_MAX 4 -#define DSFXFLANGER_FEEDBACK_MIN -99.0f -#define DSFXFLANGER_FEEDBACK_MAX 99.0f -#define DSFXFLANGER_DELAY_MIN 0.0f -#define DSFXFLANGER_DELAY_MAX 4.0f - -#define DSFXFLANGER_PHASE_NEG_180 0 -#define DSFXFLANGER_PHASE_NEG_90 1 -#define DSFXFLANGER_PHASE_ZERO 2 -#define DSFXFLANGER_PHASE_90 3 -#define DSFXFLANGER_PHASE_180 4 - -#undef INTERFACE -#define INTERFACE IDirectSoundFXFlanger - -DECLARE_INTERFACE_(IDirectSoundFXFlanger, IUnknown) -{ - // IUnknown methods - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - // IDirectSoundFXFlanger methods - STDMETHOD(SetAllParameters) (THIS_ LPCDSFXFlanger pcDsFxFlanger) PURE; - STDMETHOD(GetAllParameters) (THIS_ LPDSFXFlanger pDsFxFlanger) PURE; -}; - -#define IDirectSoundFXFlanger_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) -#define IDirectSoundFXFlanger_AddRef(p) IUnknown_AddRef(p) -#define IDirectSoundFXFlanger_Release(p) IUnknown_Release(p) - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSoundFXFlanger_SetAllParameters(p,a) (p)->lpVtbl->SetAllParameters(p,a) -#define IDirectSoundFXFlanger_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a) -#else // !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSoundFXFlanger_SetAllParameters(p,a) (p)->SetAllParameters(a) -#define IDirectSoundFXFlanger_GetAllParameters(p,a) (p)->GetAllParameters(a) -#endif // !defined(__cplusplus) || defined(CINTERFACE) - -// -// IDirectSoundFXEcho -// - -DEFINE_GUID(IID_IDirectSoundFXEcho, 0x8bd28edf, 0x50db, 0x4e92, 0xa2, 0xbd, 0x44, 0x54, 0x88, 0xd1, 0xed, 0x42); - -typedef struct _DSFXEcho -{ - FLOAT fWetDryMix; - FLOAT fFeedback; - FLOAT fLeftDelay; - FLOAT fRightDelay; - LONG lPanDelay; -} DSFXEcho, *LPDSFXEcho; - -typedef const DSFXEcho *LPCDSFXEcho; - -#define DSFXECHO_WETDRYMIX_MIN 0.0f -#define DSFXECHO_WETDRYMIX_MAX 100.0f -#define DSFXECHO_FEEDBACK_MIN 0.0f -#define DSFXECHO_FEEDBACK_MAX 100.0f -#define DSFXECHO_LEFTDELAY_MIN 1.0f -#define DSFXECHO_LEFTDELAY_MAX 2000.0f -#define DSFXECHO_RIGHTDELAY_MIN 1.0f -#define DSFXECHO_RIGHTDELAY_MAX 2000.0f -#define DSFXECHO_PANDELAY_MIN 0 -#define DSFXECHO_PANDELAY_MAX 1 - -#undef INTERFACE -#define INTERFACE IDirectSoundFXEcho - -DECLARE_INTERFACE_(IDirectSoundFXEcho, IUnknown) -{ - // IUnknown methods - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - // IDirectSoundFXEcho methods - STDMETHOD(SetAllParameters) (THIS_ LPCDSFXEcho pcDsFxEcho) PURE; - STDMETHOD(GetAllParameters) (THIS_ LPDSFXEcho pDsFxEcho) PURE; -}; - -#define IDirectSoundFXEcho_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) -#define IDirectSoundFXEcho_AddRef(p) IUnknown_AddRef(p) -#define IDirectSoundFXEcho_Release(p) IUnknown_Release(p) - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSoundFXEcho_SetAllParameters(p,a) (p)->lpVtbl->SetAllParameters(p,a) -#define IDirectSoundFXEcho_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a) -#else // !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSoundFXEcho_SetAllParameters(p,a) (p)->SetAllParameters(a) -#define IDirectSoundFXEcho_GetAllParameters(p,a) (p)->GetAllParameters(a) -#endif // !defined(__cplusplus) || defined(CINTERFACE) - -// -// IDirectSoundFXDistortion -// - -DEFINE_GUID(IID_IDirectSoundFXDistortion, 0x8ecf4326, 0x455f, 0x4d8b, 0xbd, 0xa9, 0x8d, 0x5d, 0x3e, 0x9e, 0x3e, 0x0b); - -typedef struct _DSFXDistortion -{ - FLOAT fGain; - FLOAT fEdge; - FLOAT fPostEQCenterFrequency; - FLOAT fPostEQBandwidth; - FLOAT fPreLowpassCutoff; -} DSFXDistortion, *LPDSFXDistortion; - -typedef const DSFXDistortion *LPCDSFXDistortion; - -#define DSFXDISTORTION_GAIN_MIN -60.0f -#define DSFXDISTORTION_GAIN_MAX 0.0f -#define DSFXDISTORTION_EDGE_MIN 0.0f -#define DSFXDISTORTION_EDGE_MAX 100.0f -#define DSFXDISTORTION_POSTEQCENTERFREQUENCY_MIN 100.0f -#define DSFXDISTORTION_POSTEQCENTERFREQUENCY_MAX 8000.0f -#define DSFXDISTORTION_POSTEQBANDWIDTH_MIN 100.0f -#define DSFXDISTORTION_POSTEQBANDWIDTH_MAX 8000.0f -#define DSFXDISTORTION_PRELOWPASSCUTOFF_MIN 100.0f -#define DSFXDISTORTION_PRELOWPASSCUTOFF_MAX 8000.0f - -#undef INTERFACE -#define INTERFACE IDirectSoundFXDistortion - -DECLARE_INTERFACE_(IDirectSoundFXDistortion, IUnknown) -{ - // IUnknown methods - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - // IDirectSoundFXDistortion methods - STDMETHOD(SetAllParameters) (THIS_ LPCDSFXDistortion pcDsFxDistortion) PURE; - STDMETHOD(GetAllParameters) (THIS_ LPDSFXDistortion pDsFxDistortion) PURE; -}; - -#define IDirectSoundFXDistortion_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) -#define IDirectSoundFXDistortion_AddRef(p) IUnknown_AddRef(p) -#define IDirectSoundFXDistortion_Release(p) IUnknown_Release(p) - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSoundFXDistortion_SetAllParameters(p,a) (p)->lpVtbl->SetAllParameters(p,a) -#define IDirectSoundFXDistortion_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a) -#else // !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSoundFXDistortion_SetAllParameters(p,a) (p)->SetAllParameters(a) -#define IDirectSoundFXDistortion_GetAllParameters(p,a) (p)->GetAllParameters(a) -#endif // !defined(__cplusplus) || defined(CINTERFACE) - -// -// IDirectSoundFXCompressor -// - -DEFINE_GUID(IID_IDirectSoundFXCompressor, 0x4bbd1154, 0x62f6, 0x4e2c, 0xa1, 0x5c, 0xd3, 0xb6, 0xc4, 0x17, 0xf7, 0xa0); - -typedef struct _DSFXCompressor -{ - FLOAT fGain; - FLOAT fAttack; - FLOAT fRelease; - FLOAT fThreshold; - FLOAT fRatio; - FLOAT fPredelay; -} DSFXCompressor, *LPDSFXCompressor; - -typedef const DSFXCompressor *LPCDSFXCompressor; - -#define DSFXCOMPRESSOR_GAIN_MIN -60.0f -#define DSFXCOMPRESSOR_GAIN_MAX 60.0f -#define DSFXCOMPRESSOR_ATTACK_MIN 0.01f -#define DSFXCOMPRESSOR_ATTACK_MAX 500.0f -#define DSFXCOMPRESSOR_RELEASE_MIN 50.0f -#define DSFXCOMPRESSOR_RELEASE_MAX 3000.0f -#define DSFXCOMPRESSOR_THRESHOLD_MIN -60.0f -#define DSFXCOMPRESSOR_THRESHOLD_MAX 0.0f -#define DSFXCOMPRESSOR_RATIO_MIN 1.0f -#define DSFXCOMPRESSOR_RATIO_MAX 100.0f -#define DSFXCOMPRESSOR_PREDELAY_MIN 0.0f -#define DSFXCOMPRESSOR_PREDELAY_MAX 4.0f - -#undef INTERFACE -#define INTERFACE IDirectSoundFXCompressor - -DECLARE_INTERFACE_(IDirectSoundFXCompressor, IUnknown) -{ - // IUnknown methods - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - // IDirectSoundFXCompressor methods - STDMETHOD(SetAllParameters) (THIS_ LPCDSFXCompressor pcDsFxCompressor) PURE; - STDMETHOD(GetAllParameters) (THIS_ LPDSFXCompressor pDsFxCompressor) PURE; -}; - -#define IDirectSoundFXCompressor_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) -#define IDirectSoundFXCompressor_AddRef(p) IUnknown_AddRef(p) -#define IDirectSoundFXCompressor_Release(p) IUnknown_Release(p) - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSoundFXCompressor_SetAllParameters(p,a) (p)->lpVtbl->SetAllParameters(p,a) -#define IDirectSoundFXCompressor_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a) -#else // !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSoundFXCompressor_SetAllParameters(p,a) (p)->SetAllParameters(a) -#define IDirectSoundFXCompressor_GetAllParameters(p,a) (p)->GetAllParameters(a) -#endif // !defined(__cplusplus) || defined(CINTERFACE) - -// -// IDirectSoundFXParamEq -// - -DEFINE_GUID(IID_IDirectSoundFXParamEq, 0xc03ca9fe, 0xfe90, 0x4204, 0x80, 0x78, 0x82, 0x33, 0x4c, 0xd1, 0x77, 0xda); - -typedef struct _DSFXParamEq -{ - FLOAT fCenter; - FLOAT fBandwidth; - FLOAT fGain; -} DSFXParamEq, *LPDSFXParamEq; - -typedef const DSFXParamEq *LPCDSFXParamEq; - -#define DSFXPARAMEQ_CENTER_MIN 80.0f -#define DSFXPARAMEQ_CENTER_MAX 16000.0f -#define DSFXPARAMEQ_BANDWIDTH_MIN 1.0f -#define DSFXPARAMEQ_BANDWIDTH_MAX 36.0f -#define DSFXPARAMEQ_GAIN_MIN -15.0f -#define DSFXPARAMEQ_GAIN_MAX 15.0f - -#undef INTERFACE -#define INTERFACE IDirectSoundFXParamEq - -DECLARE_INTERFACE_(IDirectSoundFXParamEq, IUnknown) -{ - // IUnknown methods - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - // IDirectSoundFXParamEq methods - STDMETHOD(SetAllParameters) (THIS_ LPCDSFXParamEq pcDsFxParamEq) PURE; - STDMETHOD(GetAllParameters) (THIS_ LPDSFXParamEq pDsFxParamEq) PURE; -}; - -#define IDirectSoundFXParamEq_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) -#define IDirectSoundFXParamEq_AddRef(p) IUnknown_AddRef(p) -#define IDirectSoundFXParamEq_Release(p) IUnknown_Release(p) - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSoundFXParamEq_SetAllParameters(p,a) (p)->lpVtbl->SetAllParameters(p,a) -#define IDirectSoundFXParamEq_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a) -#else // !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSoundFXParamEq_SetAllParameters(p,a) (p)->SetAllParameters(a) -#define IDirectSoundFXParamEq_GetAllParameters(p,a) (p)->GetAllParameters(a) -#endif // !defined(__cplusplus) || defined(CINTERFACE) - -// -// IDirectSoundFXI3DL2Reverb -// - -DEFINE_GUID(IID_IDirectSoundFXI3DL2Reverb, 0x4b166a6a, 0x0d66, 0x43f3, 0x80, 0xe3, 0xee, 0x62, 0x80, 0xde, 0xe1, 0xa4); - -typedef struct _DSFXI3DL2Reverb -{ - LONG lRoom; // [-10000, 0] default: -1000 mB - LONG lRoomHF; // [-10000, 0] default: 0 mB - FLOAT flRoomRolloffFactor; // [0.0, 10.0] default: 0.0 - FLOAT flDecayTime; // [0.1, 20.0] default: 1.49s - FLOAT flDecayHFRatio; // [0.1, 2.0] default: 0.83 - LONG lReflections; // [-10000, 1000] default: -2602 mB - FLOAT flReflectionsDelay; // [0.0, 0.3] default: 0.007 s - LONG lReverb; // [-10000, 2000] default: 200 mB - FLOAT flReverbDelay; // [0.0, 0.1] default: 0.011 s - FLOAT flDiffusion; // [0.0, 100.0] default: 100.0 % - FLOAT flDensity; // [0.0, 100.0] default: 100.0 % - FLOAT flHFReference; // [20.0, 20000.0] default: 5000.0 Hz -} DSFXI3DL2Reverb, *LPDSFXI3DL2Reverb; - -typedef const DSFXI3DL2Reverb *LPCDSFXI3DL2Reverb; - -#define DSFX_I3DL2REVERB_ROOM_MIN (-10000) -#define DSFX_I3DL2REVERB_ROOM_MAX 0 -#define DSFX_I3DL2REVERB_ROOM_DEFAULT (-1000) - -#define DSFX_I3DL2REVERB_ROOMHF_MIN (-10000) -#define DSFX_I3DL2REVERB_ROOMHF_MAX 0 -#define DSFX_I3DL2REVERB_ROOMHF_DEFAULT (-100) - -#define DSFX_I3DL2REVERB_ROOMROLLOFFFACTOR_MIN 0.0f -#define DSFX_I3DL2REVERB_ROOMROLLOFFFACTOR_MAX 10.0f -#define DSFX_I3DL2REVERB_ROOMROLLOFFFACTOR_DEFAULT 0.0f - -#define DSFX_I3DL2REVERB_DECAYTIME_MIN 0.1f -#define DSFX_I3DL2REVERB_DECAYTIME_MAX 20.0f -#define DSFX_I3DL2REVERB_DECAYTIME_DEFAULT 1.49f - -#define DSFX_I3DL2REVERB_DECAYHFRATIO_MIN 0.1f -#define DSFX_I3DL2REVERB_DECAYHFRATIO_MAX 2.0f -#define DSFX_I3DL2REVERB_DECAYHFRATIO_DEFAULT 0.83f - -#define DSFX_I3DL2REVERB_REFLECTIONS_MIN (-10000) -#define DSFX_I3DL2REVERB_REFLECTIONS_MAX 1000 -#define DSFX_I3DL2REVERB_REFLECTIONS_DEFAULT (-2602) - -#define DSFX_I3DL2REVERB_REFLECTIONSDELAY_MIN 0.0f -#define DSFX_I3DL2REVERB_REFLECTIONSDELAY_MAX 0.3f -#define DSFX_I3DL2REVERB_REFLECTIONSDELAY_DEFAULT 0.007f - -#define DSFX_I3DL2REVERB_REVERB_MIN (-10000) -#define DSFX_I3DL2REVERB_REVERB_MAX 2000 -#define DSFX_I3DL2REVERB_REVERB_DEFAULT (200) - -#define DSFX_I3DL2REVERB_REVERBDELAY_MIN 0.0f -#define DSFX_I3DL2REVERB_REVERBDELAY_MAX 0.1f -#define DSFX_I3DL2REVERB_REVERBDELAY_DEFAULT 0.011f - -#define DSFX_I3DL2REVERB_DIFFUSION_MIN 0.0f -#define DSFX_I3DL2REVERB_DIFFUSION_MAX 100.0f -#define DSFX_I3DL2REVERB_DIFFUSION_DEFAULT 100.0f - -#define DSFX_I3DL2REVERB_DENSITY_MIN 0.0f -#define DSFX_I3DL2REVERB_DENSITY_MAX 100.0f -#define DSFX_I3DL2REVERB_DENSITY_DEFAULT 100.0f - -#define DSFX_I3DL2REVERB_HFREFERENCE_MIN 20.0f -#define DSFX_I3DL2REVERB_HFREFERENCE_MAX 20000.0f -#define DSFX_I3DL2REVERB_HFREFERENCE_DEFAULT 5000.0f - -#define DSFX_I3DL2REVERB_QUALITY_MIN 0 -#define DSFX_I3DL2REVERB_QUALITY_MAX 3 -#define DSFX_I3DL2REVERB_QUALITY_DEFAULT 2 - -#undef INTERFACE -#define INTERFACE IDirectSoundFXI3DL2Reverb - -DECLARE_INTERFACE_(IDirectSoundFXI3DL2Reverb, IUnknown) -{ - // IUnknown methods - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - // IDirectSoundFXI3DL2Reverb methods - STDMETHOD(SetAllParameters) (THIS_ LPCDSFXI3DL2Reverb pcDsFxI3DL2Reverb) PURE; - STDMETHOD(GetAllParameters) (THIS_ LPDSFXI3DL2Reverb pDsFxI3DL2Reverb) PURE; - STDMETHOD(SetPreset) (THIS_ DWORD dwPreset) PURE; - STDMETHOD(GetPreset) (THIS_ LPDWORD pdwPreset) PURE; - STDMETHOD(SetQuality) (THIS_ LONG lQuality) PURE; - STDMETHOD(GetQuality) (THIS_ LONG *plQuality) PURE; -}; - -#define IDirectSoundFXI3DL2Reverb_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) -#define IDirectSoundFXI3DL2Reverb_AddRef(p) IUnknown_AddRef(p) -#define IDirectSoundFXI3DL2Reverb_Release(p) IUnknown_Release(p) - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSoundFXI3DL2Reverb_SetAllParameters(p,a) (p)->lpVtbl->SetAllParameters(p,a) -#define IDirectSoundFXI3DL2Reverb_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a) -#define IDirectSoundFXI3DL2Reverb_SetPreset(p,a) (p)->lpVtbl->SetPreset(p,a) -#define IDirectSoundFXI3DL2Reverb_GetPreset(p,a) (p)->lpVtbl->GetPreset(p,a) -#else // !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSoundFXI3DL2Reverb_SetAllParameters(p,a) (p)->SetAllParameters(a) -#define IDirectSoundFXI3DL2Reverb_GetAllParameters(p,a) (p)->GetAllParameters(a) -#define IDirectSoundFXI3DL2Reverb_SetPreset(p,a) (p)->SetPreset(a) -#define IDirectSoundFXI3DL2Reverb_GetPreset(p,a) (p)->GetPreset(a) -#endif // !defined(__cplusplus) || defined(CINTERFACE) - -// -// IDirectSoundFXWavesReverb -// - -DEFINE_GUID(IID_IDirectSoundFXWavesReverb,0x46858c3a,0x0dc6,0x45e3,0xb7,0x60,0xd4,0xee,0xf1,0x6c,0xb3,0x25); - -typedef struct _DSFXWavesReverb -{ - FLOAT fInGain; // [-96.0,0.0] default: 0.0 dB - FLOAT fReverbMix; // [-96.0,0.0] default: 0.0 db - FLOAT fReverbTime; // [0.001,3000.0] default: 1000.0 ms - FLOAT fHighFreqRTRatio; // [0.001,0.999] default: 0.001 -} DSFXWavesReverb, *LPDSFXWavesReverb; - -typedef const DSFXWavesReverb *LPCDSFXWavesReverb; - -#define DSFX_WAVESREVERB_INGAIN_MIN -96.0f -#define DSFX_WAVESREVERB_INGAIN_MAX 0.0f -#define DSFX_WAVESREVERB_INGAIN_DEFAULT 0.0f -#define DSFX_WAVESREVERB_REVERBMIX_MIN -96.0f -#define DSFX_WAVESREVERB_REVERBMIX_MAX 0.0f -#define DSFX_WAVESREVERB_REVERBMIX_DEFAULT 0.0f -#define DSFX_WAVESREVERB_REVERBTIME_MIN 0.001f -#define DSFX_WAVESREVERB_REVERBTIME_MAX 3000.0f -#define DSFX_WAVESREVERB_REVERBTIME_DEFAULT 1000.0f -#define DSFX_WAVESREVERB_HIGHFREQRTRATIO_MIN 0.001f -#define DSFX_WAVESREVERB_HIGHFREQRTRATIO_MAX 0.999f -#define DSFX_WAVESREVERB_HIGHFREQRTRATIO_DEFAULT 0.001f - -#undef INTERFACE -#define INTERFACE IDirectSoundFXWavesReverb - -DECLARE_INTERFACE_(IDirectSoundFXWavesReverb, IUnknown) -{ - // IUnknown methods - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - // IDirectSoundFXWavesReverb methods - STDMETHOD(SetAllParameters) (THIS_ LPCDSFXWavesReverb pcDsFxWavesReverb) PURE; - STDMETHOD(GetAllParameters) (THIS_ LPDSFXWavesReverb pDsFxWavesReverb) PURE; -}; - -#define IDirectSoundFXWavesReverb_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) -#define IDirectSoundFXWavesReverb_AddRef(p) IUnknown_AddRef(p) -#define IDirectSoundFXWavesReverb_Release(p) IUnknown_Release(p) - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSoundFXWavesReverb_SetAllParameters(p,a) (p)->lpVtbl->SetAllParameters(p,a) -#define IDirectSoundFXWavesReverb_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a) -#else // !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSoundFXWavesReverb_SetAllParameters(p,a) (p)->SetAllParameters(a) -#define IDirectSoundFXWavesReverb_GetAllParameters(p,a) (p)->GetAllParameters(a) -#endif // !defined(__cplusplus) || defined(CINTERFACE) - -// -// IDirectSoundCaptureFXAec -// - -DEFINE_GUID(IID_IDirectSoundCaptureFXAec, 0xad74143d, 0x903d, 0x4ab7, 0x80, 0x66, 0x28, 0xd3, 0x63, 0x03, 0x6d, 0x65); - -typedef struct _DSCFXAec -{ - BOOL fEnable; - BOOL fNoiseFill; - DWORD dwMode; -} DSCFXAec, *LPDSCFXAec; - -typedef const DSCFXAec *LPCDSCFXAec; - -// These match the AEC_MODE_* constants in the DDK's ksmedia.h file -#define DSCFX_AEC_MODE_PASS_THROUGH 0x0 -#define DSCFX_AEC_MODE_HALF_DUPLEX 0x1 -#define DSCFX_AEC_MODE_FULL_DUPLEX 0x2 - -// These match the AEC_STATUS_* constants in ksmedia.h -#define DSCFX_AEC_STATUS_HISTORY_UNINITIALIZED 0x0 -#define DSCFX_AEC_STATUS_HISTORY_CONTINUOUSLY_CONVERGED 0x1 -#define DSCFX_AEC_STATUS_HISTORY_PREVIOUSLY_DIVERGED 0x2 -#define DSCFX_AEC_STATUS_CURRENTLY_CONVERGED 0x8 - -#undef INTERFACE -#define INTERFACE IDirectSoundCaptureFXAec - -DECLARE_INTERFACE_(IDirectSoundCaptureFXAec, IUnknown) -{ - // IUnknown methods - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - // IDirectSoundCaptureFXAec methods - STDMETHOD(SetAllParameters) (THIS_ LPCDSCFXAec pDscFxAec) PURE; - STDMETHOD(GetAllParameters) (THIS_ LPDSCFXAec pDscFxAec) PURE; - STDMETHOD(GetStatus) (THIS_ PDWORD pdwStatus) PURE; - STDMETHOD(Reset) (THIS) PURE; -}; - -#define IDirectSoundCaptureFXAec_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) -#define IDirectSoundCaptureFXAec_AddRef(p) IUnknown_AddRef(p) -#define IDirectSoundCaptureFXAec_Release(p) IUnknown_Release(p) - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSoundCaptureFXAec_SetAllParameters(p,a) (p)->lpVtbl->SetAllParameters(p,a) -#define IDirectSoundCaptureFXAec_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a) -#else // !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSoundCaptureFXAec_SetAllParameters(p,a) (p)->SetAllParameters(a) -#define IDirectSoundCaptureFXAec_GetAllParameters(p,a) (p)->GetAllParameters(a) -#endif // !defined(__cplusplus) || defined(CINTERFACE) - - -// -// IDirectSoundCaptureFXNoiseSuppress -// - -DEFINE_GUID(IID_IDirectSoundCaptureFXNoiseSuppress, 0xed311e41, 0xfbae, 0x4175, 0x96, 0x25, 0xcd, 0x8, 0x54, 0xf6, 0x93, 0xca); - -typedef struct _DSCFXNoiseSuppress -{ - BOOL fEnable; -} DSCFXNoiseSuppress, *LPDSCFXNoiseSuppress; - -typedef const DSCFXNoiseSuppress *LPCDSCFXNoiseSuppress; - -#undef INTERFACE -#define INTERFACE IDirectSoundCaptureFXNoiseSuppress - -DECLARE_INTERFACE_(IDirectSoundCaptureFXNoiseSuppress, IUnknown) -{ - // IUnknown methods - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - // IDirectSoundCaptureFXNoiseSuppress methods - STDMETHOD(SetAllParameters) (THIS_ LPCDSCFXNoiseSuppress pcDscFxNoiseSuppress) PURE; - STDMETHOD(GetAllParameters) (THIS_ LPDSCFXNoiseSuppress pDscFxNoiseSuppress) PURE; - STDMETHOD(Reset) (THIS) PURE; -}; - -#define IDirectSoundCaptureFXNoiseSuppress_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) -#define IDirectSoundCaptureFXNoiseSuppress_AddRef(p) IUnknown_AddRef(p) -#define IDirectSoundCaptureFXNoiseSuppress_Release(p) IUnknown_Release(p) - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSoundCaptureFXNoiseSuppress_SetAllParameters(p,a) (p)->lpVtbl->SetAllParameters(p,a) -#define IDirectSoundCaptureFXNoiseSuppress_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a) -#else // !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSoundCaptureFXNoiseSuppress_SetAllParameters(p,a) (p)->SetAllParameters(a) -#define IDirectSoundCaptureFXNoiseSuppress_GetAllParameters(p,a) (p)->GetAllParameters(a) -#endif // !defined(__cplusplus) || defined(CINTERFACE) - - -// -// IDirectSoundFullDuplex -// - -#ifndef _IDirectSoundFullDuplex_ -#define _IDirectSoundFullDuplex_ - -#ifdef __cplusplus -// 'struct' not 'class' per the way DECLARE_INTERFACE_ is defined -struct IDirectSoundFullDuplex; -#endif // __cplusplus - -typedef struct IDirectSoundFullDuplex *LPDIRECTSOUNDFULLDUPLEX; - -DEFINE_GUID(IID_IDirectSoundFullDuplex, 0xedcb4c7a, 0xdaab, 0x4216, 0xa4, 0x2e, 0x6c, 0x50, 0x59, 0x6d, 0xdc, 0x1d); - -#undef INTERFACE -#define INTERFACE IDirectSoundFullDuplex - -DECLARE_INTERFACE_(IDirectSoundFullDuplex, IUnknown) -{ - // IUnknown methods - STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - // IDirectSoundFullDuplex methods - STDMETHOD(Initialize) (THIS_ LPCGUID pCaptureGuid, LPCGUID pRenderGuid, LPCDSCBUFFERDESC lpDscBufferDesc, LPCDSBUFFERDESC lpDsBufferDesc, HWND hWnd, DWORD dwLevel, LPLPDIRECTSOUNDCAPTUREBUFFER8 lplpDirectSoundCaptureBuffer8, LPLPDIRECTSOUNDBUFFER8 lplpDirectSoundBuffer8) PURE; -}; - -#define IDirectSoundFullDuplex_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) -#define IDirectSoundFullDuplex_AddRef(p) IUnknown_AddRef(p) -#define IDirectSoundFullDuplex_Release(p) IUnknown_Release(p) - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSoundFullDuplex_Initialize(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->Initialize(p,a,b,c,d,e,f,g,h) -#else // !defined(__cplusplus) || defined(CINTERFACE) -#define IDirectSoundFullDuplex_Initialize(p,a,b,c,d,e,f,g,h) (p)->Initialize(a,b,c,d,e,f,g,h) -#endif // !defined(__cplusplus) || defined(CINTERFACE) - -#endif // _IDirectSoundFullDuplex_ - -#endif // DIRECTSOUND_VERSION >= 0x0800 - -// -// Return Codes -// - -// The function completed successfully -#define DS_OK S_OK - -// The call succeeded, but we had to substitute the 3D algorithm -#define DS_NO_VIRTUALIZATION MAKE_HRESULT(0, _FACDS, 10) - -// The call failed because resources (such as a priority level) -// were already being used by another caller -#define DSERR_ALLOCATED MAKE_DSHRESULT(10) - -// The control (vol, pan, etc.) requested by the caller is not available -#define DSERR_CONTROLUNAVAIL MAKE_DSHRESULT(30) - -// An invalid parameter was passed to the returning function -#define DSERR_INVALIDPARAM E_INVALIDARG - -// This call is not valid for the current state of this object -#define DSERR_INVALIDCALL MAKE_DSHRESULT(50) - -// An undetermined error occurred inside the DirectSound subsystem -#define DSERR_GENERIC E_FAIL - -// The caller does not have the priority level required for the function to -// succeed -#define DSERR_PRIOLEVELNEEDED MAKE_DSHRESULT(70) - -// Not enough free memory is available to complete the operation -#define DSERR_OUTOFMEMORY E_OUTOFMEMORY - -// The specified WAVE format is not supported -#define DSERR_BADFORMAT MAKE_DSHRESULT(100) - -// The function called is not supported at this time -#define DSERR_UNSUPPORTED E_NOTIMPL - -// No sound driver is available for use -#define DSERR_NODRIVER MAKE_DSHRESULT(120) - -// This object is already initialized -#define DSERR_ALREADYINITIALIZED MAKE_DSHRESULT(130) - -// This object does not support aggregation -#define DSERR_NOAGGREGATION CLASS_E_NOAGGREGATION - -// The buffer memory has been lost, and must be restored -#define DSERR_BUFFERLOST MAKE_DSHRESULT(150) - -// Another app has a higher priority level, preventing this call from -// succeeding -#define DSERR_OTHERAPPHASPRIO MAKE_DSHRESULT(160) - -// This object has not been initialized -#define DSERR_UNINITIALIZED MAKE_DSHRESULT(170) - -// The requested COM interface is not available -#define DSERR_NOINTERFACE E_NOINTERFACE - -// Access is denied -#define DSERR_ACCESSDENIED E_ACCESSDENIED - -// Tried to create a DSBCAPS_CTRLFX buffer shorter than DSBSIZE_FX_MIN milliseconds -#define DSERR_BUFFERTOOSMALL MAKE_DSHRESULT(180) - -// Attempt to use DirectSound 8 functionality on an older DirectSound object -#define DSERR_DS8_REQUIRED MAKE_DSHRESULT(190) - -// A circular loop of send effects was detected -#define DSERR_SENDLOOP MAKE_DSHRESULT(200) - -// The GUID specified in an audiopath file does not match a valid MIXIN buffer -#define DSERR_BADSENDBUFFERGUID MAKE_DSHRESULT(210) - -// The object requested was not found (numerically equal to DMUS_E_NOT_FOUND) -#define DSERR_OBJECTNOTFOUND MAKE_DSHRESULT(4449) - -// The effects requested could not be found on the system, or they were found -// but in the wrong order, or in the wrong hardware/software locations. -#define DSERR_FXUNAVAILABLE MAKE_DSHRESULT(220) - -// -// Flags -// - -#define DSCAPS_PRIMARYMONO 0x00000001 -#define DSCAPS_PRIMARYSTEREO 0x00000002 -#define DSCAPS_PRIMARY8BIT 0x00000004 -#define DSCAPS_PRIMARY16BIT 0x00000008 -#define DSCAPS_CONTINUOUSRATE 0x00000010 -#define DSCAPS_EMULDRIVER 0x00000020 -#define DSCAPS_CERTIFIED 0x00000040 -#define DSCAPS_SECONDARYMONO 0x00000100 -#define DSCAPS_SECONDARYSTEREO 0x00000200 -#define DSCAPS_SECONDARY8BIT 0x00000400 -#define DSCAPS_SECONDARY16BIT 0x00000800 - -#define DSSCL_NORMAL 0x00000001 -#define DSSCL_PRIORITY 0x00000002 -#define DSSCL_EXCLUSIVE 0x00000003 -#define DSSCL_WRITEPRIMARY 0x00000004 - -#define DSSPEAKER_DIRECTOUT 0x00000000 -#define DSSPEAKER_HEADPHONE 0x00000001 -#define DSSPEAKER_MONO 0x00000002 -#define DSSPEAKER_QUAD 0x00000003 -#define DSSPEAKER_STEREO 0x00000004 -#define DSSPEAKER_SURROUND 0x00000005 -#define DSSPEAKER_5POINT1 0x00000006 -#define DSSPEAKER_7POINT1 0x00000007 - -#define DSSPEAKER_GEOMETRY_MIN 0x00000005 // 5 degrees -#define DSSPEAKER_GEOMETRY_NARROW 0x0000000A // 10 degrees -#define DSSPEAKER_GEOMETRY_WIDE 0x00000014 // 20 degrees -#define DSSPEAKER_GEOMETRY_MAX 0x000000B4 // 180 degrees - -#define DSSPEAKER_COMBINED(c, g) ((DWORD)(((BYTE)(c)) | ((DWORD)((BYTE)(g))) << 16)) -#define DSSPEAKER_CONFIG(a) ((BYTE)(a)) -#define DSSPEAKER_GEOMETRY(a) ((BYTE)(((DWORD)(a) >> 16) & 0x00FF)) - -#define DSBCAPS_PRIMARYBUFFER 0x00000001 -#define DSBCAPS_STATIC 0x00000002 -#define DSBCAPS_LOCHARDWARE 0x00000004 -#define DSBCAPS_LOCSOFTWARE 0x00000008 -#define DSBCAPS_CTRL3D 0x00000010 -#define DSBCAPS_CTRLFREQUENCY 0x00000020 -#define DSBCAPS_CTRLPAN 0x00000040 -#define DSBCAPS_CTRLVOLUME 0x00000080 -#define DSBCAPS_CTRLPOSITIONNOTIFY 0x00000100 -#define DSBCAPS_CTRLFX 0x00000200 -#define DSBCAPS_STICKYFOCUS 0x00004000 -#define DSBCAPS_GLOBALFOCUS 0x00008000 -#define DSBCAPS_GETCURRENTPOSITION2 0x00010000 -#define DSBCAPS_MUTE3DATMAXDISTANCE 0x00020000 -#define DSBCAPS_LOCDEFER 0x00040000 - -#define DSBPLAY_LOOPING 0x00000001 -#define DSBPLAY_LOCHARDWARE 0x00000002 -#define DSBPLAY_LOCSOFTWARE 0x00000004 -#define DSBPLAY_TERMINATEBY_TIME 0x00000008 -#define DSBPLAY_TERMINATEBY_DISTANCE 0x000000010 -#define DSBPLAY_TERMINATEBY_PRIORITY 0x000000020 - -#define DSBSTATUS_PLAYING 0x00000001 -#define DSBSTATUS_BUFFERLOST 0x00000002 -#define DSBSTATUS_LOOPING 0x00000004 -#define DSBSTATUS_LOCHARDWARE 0x00000008 -#define DSBSTATUS_LOCSOFTWARE 0x00000010 -#define DSBSTATUS_TERMINATED 0x00000020 - -#define DSBLOCK_FROMWRITECURSOR 0x00000001 -#define DSBLOCK_ENTIREBUFFER 0x00000002 - -#define DSBFREQUENCY_ORIGINAL 0 -#define DSBFREQUENCY_MIN 100 -#if DIRECTSOUND_VERSION >= 0x0900 -#define DSBFREQUENCY_MAX 200000 -#else -#define DSBFREQUENCY_MAX 100000 -#endif - -#define DSBPAN_LEFT -10000 -#define DSBPAN_CENTER 0 -#define DSBPAN_RIGHT 10000 - -#define DSBVOLUME_MIN -10000 -#define DSBVOLUME_MAX 0 - -#define DSBSIZE_MIN 4 -#define DSBSIZE_MAX 0x0FFFFFFF -#define DSBSIZE_FX_MIN 150 // NOTE: Milliseconds, not bytes - -#define DS3DMODE_NORMAL 0x00000000 -#define DS3DMODE_HEADRELATIVE 0x00000001 -#define DS3DMODE_DISABLE 0x00000002 - -#define DS3D_IMMEDIATE 0x00000000 -#define DS3D_DEFERRED 0x00000001 - -#define DS3D_MINDISTANCEFACTOR FLT_MIN -#define DS3D_MAXDISTANCEFACTOR FLT_MAX -#define DS3D_DEFAULTDISTANCEFACTOR 1.0f - -#define DS3D_MINROLLOFFFACTOR 0.0f -#define DS3D_MAXROLLOFFFACTOR 10.0f -#define DS3D_DEFAULTROLLOFFFACTOR 1.0f - -#define DS3D_MINDOPPLERFACTOR 0.0f -#define DS3D_MAXDOPPLERFACTOR 10.0f -#define DS3D_DEFAULTDOPPLERFACTOR 1.0f - -#define DS3D_DEFAULTMINDISTANCE 1.0f -#define DS3D_DEFAULTMAXDISTANCE 1000000000.0f - -#define DS3D_MINCONEANGLE 0 -#define DS3D_MAXCONEANGLE 360 -#define DS3D_DEFAULTCONEANGLE 360 - -#define DS3D_DEFAULTCONEOUTSIDEVOLUME DSBVOLUME_MAX - -// IDirectSoundCapture attributes - -#define DSCCAPS_EMULDRIVER DSCAPS_EMULDRIVER -#define DSCCAPS_CERTIFIED DSCAPS_CERTIFIED -#define DSCCAPS_MULTIPLECAPTURE 0x00000001 - -// IDirectSoundCaptureBuffer attributes - -#define DSCBCAPS_WAVEMAPPED 0x80000000 - -#if DIRECTSOUND_VERSION >= 0x0800 -#define DSCBCAPS_CTRLFX 0x00000200 -#endif - - -#define DSCBLOCK_ENTIREBUFFER 0x00000001 - -#define DSCBSTATUS_CAPTURING 0x00000001 -#define DSCBSTATUS_LOOPING 0x00000002 - -#define DSCBSTART_LOOPING 0x00000001 - -#define DSBPN_OFFSETSTOP 0xFFFFFFFF - -#define DS_CERTIFIED 0x00000000 -#define DS_UNCERTIFIED 0x00000001 - - -// -// Flags for the I3DL2 effects -// - -// -// I3DL2 Material Presets -// - -enum -{ - DSFX_I3DL2_MATERIAL_PRESET_SINGLEWINDOW, - DSFX_I3DL2_MATERIAL_PRESET_DOUBLEWINDOW, - DSFX_I3DL2_MATERIAL_PRESET_THINDOOR, - DSFX_I3DL2_MATERIAL_PRESET_THICKDOOR, - DSFX_I3DL2_MATERIAL_PRESET_WOODWALL, - DSFX_I3DL2_MATERIAL_PRESET_BRICKWALL, - DSFX_I3DL2_MATERIAL_PRESET_STONEWALL, - DSFX_I3DL2_MATERIAL_PRESET_CURTAIN -}; - -#define I3DL2_MATERIAL_PRESET_SINGLEWINDOW -2800,0.71f -#define I3DL2_MATERIAL_PRESET_DOUBLEWINDOW -5000,0.40f -#define I3DL2_MATERIAL_PRESET_THINDOOR -1800,0.66f -#define I3DL2_MATERIAL_PRESET_THICKDOOR -4400,0.64f -#define I3DL2_MATERIAL_PRESET_WOODWALL -4000,0.50f -#define I3DL2_MATERIAL_PRESET_BRICKWALL -5000,0.60f -#define I3DL2_MATERIAL_PRESET_STONEWALL -6000,0.68f -#define I3DL2_MATERIAL_PRESET_CURTAIN -1200,0.15f - -enum -{ - DSFX_I3DL2_ENVIRONMENT_PRESET_DEFAULT, - DSFX_I3DL2_ENVIRONMENT_PRESET_GENERIC, - DSFX_I3DL2_ENVIRONMENT_PRESET_PADDEDCELL, - DSFX_I3DL2_ENVIRONMENT_PRESET_ROOM, - DSFX_I3DL2_ENVIRONMENT_PRESET_BATHROOM, - DSFX_I3DL2_ENVIRONMENT_PRESET_LIVINGROOM, - DSFX_I3DL2_ENVIRONMENT_PRESET_STONEROOM, - DSFX_I3DL2_ENVIRONMENT_PRESET_AUDITORIUM, - DSFX_I3DL2_ENVIRONMENT_PRESET_CONCERTHALL, - DSFX_I3DL2_ENVIRONMENT_PRESET_CAVE, - DSFX_I3DL2_ENVIRONMENT_PRESET_ARENA, - DSFX_I3DL2_ENVIRONMENT_PRESET_HANGAR, - DSFX_I3DL2_ENVIRONMENT_PRESET_CARPETEDHALLWAY, - DSFX_I3DL2_ENVIRONMENT_PRESET_HALLWAY, - DSFX_I3DL2_ENVIRONMENT_PRESET_STONECORRIDOR, - DSFX_I3DL2_ENVIRONMENT_PRESET_ALLEY, - DSFX_I3DL2_ENVIRONMENT_PRESET_FOREST, - DSFX_I3DL2_ENVIRONMENT_PRESET_CITY, - DSFX_I3DL2_ENVIRONMENT_PRESET_MOUNTAINS, - DSFX_I3DL2_ENVIRONMENT_PRESET_QUARRY, - DSFX_I3DL2_ENVIRONMENT_PRESET_PLAIN, - DSFX_I3DL2_ENVIRONMENT_PRESET_PARKINGLOT, - DSFX_I3DL2_ENVIRONMENT_PRESET_SEWERPIPE, - DSFX_I3DL2_ENVIRONMENT_PRESET_UNDERWATER, - DSFX_I3DL2_ENVIRONMENT_PRESET_SMALLROOM, - DSFX_I3DL2_ENVIRONMENT_PRESET_MEDIUMROOM, - DSFX_I3DL2_ENVIRONMENT_PRESET_LARGEROOM, - DSFX_I3DL2_ENVIRONMENT_PRESET_MEDIUMHALL, - DSFX_I3DL2_ENVIRONMENT_PRESET_LARGEHALL, - DSFX_I3DL2_ENVIRONMENT_PRESET_PLATE -}; - -// -// I3DL2 Reverberation Presets Values -// - -#define I3DL2_ENVIRONMENT_PRESET_DEFAULT -1000, -100, 0.0f, 1.49f, 0.83f, -2602, 0.007f, 200, 0.011f, 100.0f, 100.0f, 5000.0f -#define I3DL2_ENVIRONMENT_PRESET_GENERIC -1000, -100, 0.0f, 1.49f, 0.83f, -2602, 0.007f, 200, 0.011f, 100.0f, 100.0f, 5000.0f -#define I3DL2_ENVIRONMENT_PRESET_PADDEDCELL -1000,-6000, 0.0f, 0.17f, 0.10f, -1204, 0.001f, 207, 0.002f, 100.0f, 100.0f, 5000.0f -#define I3DL2_ENVIRONMENT_PRESET_ROOM -1000, -454, 0.0f, 0.40f, 0.83f, -1646, 0.002f, 53, 0.003f, 100.0f, 100.0f, 5000.0f -#define I3DL2_ENVIRONMENT_PRESET_BATHROOM -1000,-1200, 0.0f, 1.49f, 0.54f, -370, 0.007f, 1030, 0.011f, 100.0f, 60.0f, 5000.0f -#define I3DL2_ENVIRONMENT_PRESET_LIVINGROOM -1000,-6000, 0.0f, 0.50f, 0.10f, -1376, 0.003f, -1104, 0.004f, 100.0f, 100.0f, 5000.0f -#define I3DL2_ENVIRONMENT_PRESET_STONEROOM -1000, -300, 0.0f, 2.31f, 0.64f, -711, 0.012f, 83, 0.017f, 100.0f, 100.0f, 5000.0f -#define I3DL2_ENVIRONMENT_PRESET_AUDITORIUM -1000, -476, 0.0f, 4.32f, 0.59f, -789, 0.020f, -289, 0.030f, 100.0f, 100.0f, 5000.0f -#define I3DL2_ENVIRONMENT_PRESET_CONCERTHALL -1000, -500, 0.0f, 3.92f, 0.70f, -1230, 0.020f, -2, 0.029f, 100.0f, 100.0f, 5000.0f -#define I3DL2_ENVIRONMENT_PRESET_CAVE -1000, 0, 0.0f, 2.91f, 1.30f, -602, 0.015f, -302, 0.022f, 100.0f, 100.0f, 5000.0f -#define I3DL2_ENVIRONMENT_PRESET_ARENA -1000, -698, 0.0f, 7.24f, 0.33f, -1166, 0.020f, 16, 0.030f, 100.0f, 100.0f, 5000.0f -#define I3DL2_ENVIRONMENT_PRESET_HANGAR -1000,-1000, 0.0f,10.05f, 0.23f, -602, 0.020f, 198, 0.030f, 100.0f, 100.0f, 5000.0f -#define I3DL2_ENVIRONMENT_PRESET_CARPETEDHALLWAY -1000,-4000, 0.0f, 0.30f, 0.10f, -1831, 0.002f, -1630, 0.030f, 100.0f, 100.0f, 5000.0f -#define I3DL2_ENVIRONMENT_PRESET_HALLWAY -1000, -300, 0.0f, 1.49f, 0.59f, -1219, 0.007f, 441, 0.011f, 100.0f, 100.0f, 5000.0f -#define I3DL2_ENVIRONMENT_PRESET_STONECORRIDOR -1000, -237, 0.0f, 2.70f, 0.79f, -1214, 0.013f, 395, 0.020f, 100.0f, 100.0f, 5000.0f -#define I3DL2_ENVIRONMENT_PRESET_ALLEY -1000, -270, 0.0f, 1.49f, 0.86f, -1204, 0.007f, -4, 0.011f, 100.0f, 100.0f, 5000.0f -#define I3DL2_ENVIRONMENT_PRESET_FOREST -1000,-3300, 0.0f, 1.49f, 0.54f, -2560, 0.162f, -613, 0.088f, 79.0f, 100.0f, 5000.0f -#define I3DL2_ENVIRONMENT_PRESET_CITY -1000, -800, 0.0f, 1.49f, 0.67f, -2273, 0.007f, -2217, 0.011f, 50.0f, 100.0f, 5000.0f -#define I3DL2_ENVIRONMENT_PRESET_MOUNTAINS -1000,-2500, 0.0f, 1.49f, 0.21f, -2780, 0.300f, -2014, 0.100f, 27.0f, 100.0f, 5000.0f -#define I3DL2_ENVIRONMENT_PRESET_QUARRY -1000,-1000, 0.0f, 1.49f, 0.83f,-10000, 0.061f, 500, 0.025f, 100.0f, 100.0f, 5000.0f -#define I3DL2_ENVIRONMENT_PRESET_PLAIN -1000,-2000, 0.0f, 1.49f, 0.50f, -2466, 0.179f, -2514, 0.100f, 21.0f, 100.0f, 5000.0f -#define I3DL2_ENVIRONMENT_PRESET_PARKINGLOT -1000, 0, 0.0f, 1.65f, 1.50f, -1363, 0.008f, -1153, 0.012f, 100.0f, 100.0f, 5000.0f -#define I3DL2_ENVIRONMENT_PRESET_SEWERPIPE -1000,-1000, 0.0f, 2.81f, 0.14f, 429, 0.014f, 648, 0.021f, 80.0f, 60.0f, 5000.0f -#define I3DL2_ENVIRONMENT_PRESET_UNDERWATER -1000,-4000, 0.0f, 1.49f, 0.10f, -449, 0.007f, 1700, 0.011f, 100.0f, 100.0f, 5000.0f - -// -// Examples simulating 'musical' reverb presets -// -// Name Decay time Description -// Small Room 1.1s A small size room with a length of 5m or so. -// Medium Room 1.3s A medium size room with a length of 10m or so. -// Large Room 1.5s A large size room suitable for live performances. -// Medium Hall 1.8s A medium size concert hall. -// Large Hall 1.8s A large size concert hall suitable for a full orchestra. -// Plate 1.3s A plate reverb simulation. -// - -#define I3DL2_ENVIRONMENT_PRESET_SMALLROOM -1000, -600, 0.0f, 1.10f, 0.83f, -400, 0.005f, 500, 0.010f, 100.0f, 100.0f, 5000.0f -#define I3DL2_ENVIRONMENT_PRESET_MEDIUMROOM -1000, -600, 0.0f, 1.30f, 0.83f, -1000, 0.010f, -200, 0.020f, 100.0f, 100.0f, 5000.0f -#define I3DL2_ENVIRONMENT_PRESET_LARGEROOM -1000, -600, 0.0f, 1.50f, 0.83f, -1600, 0.020f, -1000, 0.040f, 100.0f, 100.0f, 5000.0f -#define I3DL2_ENVIRONMENT_PRESET_MEDIUMHALL -1000, -600, 0.0f, 1.80f, 0.70f, -1300, 0.015f, -800, 0.030f, 100.0f, 100.0f, 5000.0f -#define I3DL2_ENVIRONMENT_PRESET_LARGEHALL -1000, -600, 0.0f, 1.80f, 0.70f, -2000, 0.030f, -1400, 0.060f, 100.0f, 100.0f, 5000.0f -#define I3DL2_ENVIRONMENT_PRESET_PLATE -1000, -200, 0.0f, 1.30f, 0.90f, 0, 0.002f, 0, 0.010f, 100.0f, 75.0f, 5000.0f - -// -// DirectSound3D Algorithms -// - -// Default DirectSound3D algorithm {00000000-0000-0000-0000-000000000000} -#define DS3DALG_DEFAULT GUID_NULL - -// No virtualization (Pan3D) {C241333F-1C1B-11d2-94F5-00C04FC28ACA} -DEFINE_GUID(DS3DALG_NO_VIRTUALIZATION, 0xc241333f, 0x1c1b, 0x11d2, 0x94, 0xf5, 0x0, 0xc0, 0x4f, 0xc2, 0x8a, 0xca); - -// High-quality HRTF algorithm {C2413340-1C1B-11d2-94F5-00C04FC28ACA} -DEFINE_GUID(DS3DALG_HRTF_FULL, 0xc2413340, 0x1c1b, 0x11d2, 0x94, 0xf5, 0x0, 0xc0, 0x4f, 0xc2, 0x8a, 0xca); - -// Lower-quality HRTF algorithm {C2413342-1C1B-11d2-94F5-00C04FC28ACA} -DEFINE_GUID(DS3DALG_HRTF_LIGHT, 0xc2413342, 0x1c1b, 0x11d2, 0x94, 0xf5, 0x0, 0xc0, 0x4f, 0xc2, 0x8a, 0xca); - - -#if DIRECTSOUND_VERSION >= 0x0800 - -// -// DirectSound Internal Effect Algorithms -// - - -// Gargle {DAFD8210-5711-4B91-9FE3-F75B7AE279BF} -DEFINE_GUID(GUID_DSFX_STANDARD_GARGLE, 0xdafd8210, 0x5711, 0x4b91, 0x9f, 0xe3, 0xf7, 0x5b, 0x7a, 0xe2, 0x79, 0xbf); - -// Chorus {EFE6629C-81F7-4281-BD91-C9D604A95AF6} -DEFINE_GUID(GUID_DSFX_STANDARD_CHORUS, 0xefe6629c, 0x81f7, 0x4281, 0xbd, 0x91, 0xc9, 0xd6, 0x04, 0xa9, 0x5a, 0xf6); - -// Flanger {EFCA3D92-DFD8-4672-A603-7420894BAD98} -DEFINE_GUID(GUID_DSFX_STANDARD_FLANGER, 0xefca3d92, 0xdfd8, 0x4672, 0xa6, 0x03, 0x74, 0x20, 0x89, 0x4b, 0xad, 0x98); - -// Echo/Delay {EF3E932C-D40B-4F51-8CCF-3F98F1B29D5D} -DEFINE_GUID(GUID_DSFX_STANDARD_ECHO, 0xef3e932c, 0xd40b, 0x4f51, 0x8c, 0xcf, 0x3f, 0x98, 0xf1, 0xb2, 0x9d, 0x5d); - -// Distortion {EF114C90-CD1D-484E-96E5-09CFAF912A21} -DEFINE_GUID(GUID_DSFX_STANDARD_DISTORTION, 0xef114c90, 0xcd1d, 0x484e, 0x96, 0xe5, 0x09, 0xcf, 0xaf, 0x91, 0x2a, 0x21); - -// Compressor/Limiter {EF011F79-4000-406D-87AF-BFFB3FC39D57} -DEFINE_GUID(GUID_DSFX_STANDARD_COMPRESSOR, 0xef011f79, 0x4000, 0x406d, 0x87, 0xaf, 0xbf, 0xfb, 0x3f, 0xc3, 0x9d, 0x57); - -// Parametric Equalization {120CED89-3BF4-4173-A132-3CB406CF3231} -DEFINE_GUID(GUID_DSFX_STANDARD_PARAMEQ, 0x120ced89, 0x3bf4, 0x4173, 0xa1, 0x32, 0x3c, 0xb4, 0x06, 0xcf, 0x32, 0x31); - -// I3DL2 Environmental Reverberation: Reverb (Listener) Effect {EF985E71-D5C7-42D4-BA4D-2D073E2E96F4} -DEFINE_GUID(GUID_DSFX_STANDARD_I3DL2REVERB, 0xef985e71, 0xd5c7, 0x42d4, 0xba, 0x4d, 0x2d, 0x07, 0x3e, 0x2e, 0x96, 0xf4); - -// Waves Reverberation {87FC0268-9A55-4360-95AA-004A1D9DE26C} -DEFINE_GUID(GUID_DSFX_WAVES_REVERB, 0x87fc0268, 0x9a55, 0x4360, 0x95, 0xaa, 0x00, 0x4a, 0x1d, 0x9d, 0xe2, 0x6c); - -// -// DirectSound Capture Effect Algorithms -// - - -// Acoustic Echo Canceller {BF963D80-C559-11D0-8A2B-00A0C9255AC1} -// Matches KSNODETYPE_ACOUSTIC_ECHO_CANCEL in ksmedia.h -DEFINE_GUID(GUID_DSCFX_CLASS_AEC, 0xBF963D80L, 0xC559, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1); - -// Microsoft AEC {CDEBB919-379A-488a-8765-F53CFD36DE40} -DEFINE_GUID(GUID_DSCFX_MS_AEC, 0xcdebb919, 0x379a, 0x488a, 0x87, 0x65, 0xf5, 0x3c, 0xfd, 0x36, 0xde, 0x40); - -// System AEC {1C22C56D-9879-4f5b-A389-27996DDC2810} -DEFINE_GUID(GUID_DSCFX_SYSTEM_AEC, 0x1c22c56d, 0x9879, 0x4f5b, 0xa3, 0x89, 0x27, 0x99, 0x6d, 0xdc, 0x28, 0x10); - -// Noise Supression {E07F903F-62FD-4e60-8CDD-DEA7236665B5} -// Matches KSNODETYPE_NOISE_SUPPRESS in post Windows ME DDK's ksmedia.h -DEFINE_GUID(GUID_DSCFX_CLASS_NS, 0xe07f903f, 0x62fd, 0x4e60, 0x8c, 0xdd, 0xde, 0xa7, 0x23, 0x66, 0x65, 0xb5); - -// Microsoft Noise Suppresion {11C5C73B-66E9-4ba1-A0BA-E814C6EED92D} -DEFINE_GUID(GUID_DSCFX_MS_NS, 0x11c5c73b, 0x66e9, 0x4ba1, 0xa0, 0xba, 0xe8, 0x14, 0xc6, 0xee, 0xd9, 0x2d); - -// System Noise Suppresion {5AB0882E-7274-4516-877D-4EEE99BA4FD0} -DEFINE_GUID(GUID_DSCFX_SYSTEM_NS, 0x5ab0882e, 0x7274, 0x4516, 0x87, 0x7d, 0x4e, 0xee, 0x99, 0xba, 0x4f, 0xd0); - -#endif // DIRECTSOUND_VERSION >= 0x0800 - -#endif // __DSOUND_INCLUDED__ - - - -#ifdef __cplusplus -}; -#endif // __cplusplus - - +/*==========================================================================; + * + * Copyright (c) Microsoft Corporation. All rights reserved. + * + * File: dsound.h + * Content: DirectSound include file + * + **************************************************************************/ + +#define COM_NO_WINDOWS_H +#include +#include + +#ifndef DIRECTSOUND_VERSION +#define DIRECTSOUND_VERSION 0x0900 /* Version 9.0 */ +#endif + +#ifdef __cplusplus +extern "C" { +#endif // __cplusplus + +#ifndef __DSOUND_INCLUDED__ +#define __DSOUND_INCLUDED__ + +/* Type definitions shared with Direct3D */ + +#ifndef DX_SHARED_DEFINES + +typedef float D3DVALUE, *LPD3DVALUE; + +#ifndef D3DCOLOR_DEFINED +typedef DWORD D3DCOLOR; +#define D3DCOLOR_DEFINED +#endif + +#ifndef LPD3DCOLOR_DEFINED +typedef DWORD *LPD3DCOLOR; +#define LPD3DCOLOR_DEFINED +#endif + +#ifndef D3DVECTOR_DEFINED +typedef struct _D3DVECTOR { + float x; + float y; + float z; +} D3DVECTOR; +#define D3DVECTOR_DEFINED +#endif + +#ifndef LPD3DVECTOR_DEFINED +typedef D3DVECTOR *LPD3DVECTOR; +#define LPD3DVECTOR_DEFINED +#endif + +#define DX_SHARED_DEFINES +#endif // DX_SHARED_DEFINES + +#define _FACDS 0x878 /* DirectSound's facility code */ +#define MAKE_DSHRESULT(code) MAKE_HRESULT(1, _FACDS, code) + +// DirectSound Component GUID {47D4D946-62E8-11CF-93BC-444553540000} +DEFINE_GUID(CLSID_DirectSound, 0x47d4d946, 0x62e8, 0x11cf, 0x93, 0xbc, 0x44, 0x45, 0x53, 0x54, 0x0, 0x0); + +// DirectSound 8.0 Component GUID {3901CC3F-84B5-4FA4-BA35-AA8172B8A09B} +DEFINE_GUID(CLSID_DirectSound8, 0x3901cc3f, 0x84b5, 0x4fa4, 0xba, 0x35, 0xaa, 0x81, 0x72, 0xb8, 0xa0, 0x9b); + +// DirectSound Capture Component GUID {B0210780-89CD-11D0-AF08-00A0C925CD16} +DEFINE_GUID(CLSID_DirectSoundCapture, 0xb0210780, 0x89cd, 0x11d0, 0xaf, 0x8, 0x0, 0xa0, 0xc9, 0x25, 0xcd, 0x16); + +// DirectSound 8.0 Capture Component GUID {E4BCAC13-7F99-4908-9A8E-74E3BF24B6E1} +DEFINE_GUID(CLSID_DirectSoundCapture8, 0xe4bcac13, 0x7f99, 0x4908, 0x9a, 0x8e, 0x74, 0xe3, 0xbf, 0x24, 0xb6, 0xe1); + +// DirectSound Full Duplex Component GUID {FEA4300C-7959-4147-B26A-2377B9E7A91D} +DEFINE_GUID(CLSID_DirectSoundFullDuplex, 0xfea4300c, 0x7959, 0x4147, 0xb2, 0x6a, 0x23, 0x77, 0xb9, 0xe7, 0xa9, 0x1d); + + +// DirectSound default playback device GUID {DEF00000-9C6D-47ED-AAF1-4DDA8F2B5C03} +DEFINE_GUID(DSDEVID_DefaultPlayback, 0xdef00000, 0x9c6d, 0x47ed, 0xaa, 0xf1, 0x4d, 0xda, 0x8f, 0x2b, 0x5c, 0x03); + +// DirectSound default capture device GUID {DEF00001-9C6D-47ED-AAF1-4DDA8F2B5C03} +DEFINE_GUID(DSDEVID_DefaultCapture, 0xdef00001, 0x9c6d, 0x47ed, 0xaa, 0xf1, 0x4d, 0xda, 0x8f, 0x2b, 0x5c, 0x03); + +// DirectSound default device for voice playback {DEF00002-9C6D-47ED-AAF1-4DDA8F2B5C03} +DEFINE_GUID(DSDEVID_DefaultVoicePlayback, 0xdef00002, 0x9c6d, 0x47ed, 0xaa, 0xf1, 0x4d, 0xda, 0x8f, 0x2b, 0x5c, 0x03); + +// DirectSound default device for voice capture {DEF00003-9C6D-47ED-AAF1-4DDA8F2B5C03} +DEFINE_GUID(DSDEVID_DefaultVoiceCapture, 0xdef00003, 0x9c6d, 0x47ed, 0xaa, 0xf1, 0x4d, 0xda, 0x8f, 0x2b, 0x5c, 0x03); + + +// +// Forward declarations for interfaces. +// 'struct' not 'class' per the way DECLARE_INTERFACE_ is defined +// + +#ifdef __cplusplus +struct IDirectSound; +struct IDirectSoundBuffer; +struct IDirectSound3DListener; +struct IDirectSound3DBuffer; +struct IDirectSoundCapture; +struct IDirectSoundCaptureBuffer; +struct IDirectSoundNotify; +#endif // __cplusplus + + +// +// DirectSound 8.0 interfaces. +// + +#if DIRECTSOUND_VERSION >= 0x0800 + +#ifdef __cplusplus +struct IDirectSound8; +struct IDirectSoundBuffer8; +struct IDirectSoundCaptureBuffer8; +struct IDirectSoundFXGargle; +struct IDirectSoundFXChorus; +struct IDirectSoundFXFlanger; +struct IDirectSoundFXEcho; +struct IDirectSoundFXDistortion; +struct IDirectSoundFXCompressor; +struct IDirectSoundFXParamEq; +struct IDirectSoundFXWavesReverb; +struct IDirectSoundFXI3DL2Reverb; +struct IDirectSoundCaptureFXAec; +struct IDirectSoundCaptureFXNoiseSuppress; +struct IDirectSoundFullDuplex; +#endif // __cplusplus + +// IDirectSound8, IDirectSoundBuffer8 and IDirectSoundCaptureBuffer8 are the +// only DirectSound 7.0 interfaces with changed functionality in version 8.0. +// The other level 8 interfaces as equivalent to their level 7 counterparts: + +#define IDirectSoundCapture8 IDirectSoundCapture +#define IDirectSound3DListener8 IDirectSound3DListener +#define IDirectSound3DBuffer8 IDirectSound3DBuffer +#define IDirectSoundNotify8 IDirectSoundNotify +#define IDirectSoundFXGargle8 IDirectSoundFXGargle +#define IDirectSoundFXChorus8 IDirectSoundFXChorus +#define IDirectSoundFXFlanger8 IDirectSoundFXFlanger +#define IDirectSoundFXEcho8 IDirectSoundFXEcho +#define IDirectSoundFXDistortion8 IDirectSoundFXDistortion +#define IDirectSoundFXCompressor8 IDirectSoundFXCompressor +#define IDirectSoundFXParamEq8 IDirectSoundFXParamEq +#define IDirectSoundFXWavesReverb8 IDirectSoundFXWavesReverb +#define IDirectSoundFXI3DL2Reverb8 IDirectSoundFXI3DL2Reverb +#define IDirectSoundCaptureFXAec8 IDirectSoundCaptureFXAec +#define IDirectSoundCaptureFXNoiseSuppress8 IDirectSoundCaptureFXNoiseSuppress +#define IDirectSoundFullDuplex8 IDirectSoundFullDuplex + +#endif // DIRECTSOUND_VERSION >= 0x0800 + +typedef struct IDirectSound *LPDIRECTSOUND; +typedef struct IDirectSoundBuffer *LPDIRECTSOUNDBUFFER; +typedef struct IDirectSound3DListener *LPDIRECTSOUND3DLISTENER; +typedef struct IDirectSound3DBuffer *LPDIRECTSOUND3DBUFFER; +typedef struct IDirectSoundCapture *LPDIRECTSOUNDCAPTURE; +typedef struct IDirectSoundCaptureBuffer *LPDIRECTSOUNDCAPTUREBUFFER; +typedef struct IDirectSoundNotify *LPDIRECTSOUNDNOTIFY; + + +#if DIRECTSOUND_VERSION >= 0x0800 + +typedef struct IDirectSoundFXGargle *LPDIRECTSOUNDFXGARGLE; +typedef struct IDirectSoundFXChorus *LPDIRECTSOUNDFXCHORUS; +typedef struct IDirectSoundFXFlanger *LPDIRECTSOUNDFXFLANGER; +typedef struct IDirectSoundFXEcho *LPDIRECTSOUNDFXECHO; +typedef struct IDirectSoundFXDistortion *LPDIRECTSOUNDFXDISTORTION; +typedef struct IDirectSoundFXCompressor *LPDIRECTSOUNDFXCOMPRESSOR; +typedef struct IDirectSoundFXParamEq *LPDIRECTSOUNDFXPARAMEQ; +typedef struct IDirectSoundFXWavesReverb *LPDIRECTSOUNDFXWAVESREVERB; +typedef struct IDirectSoundFXI3DL2Reverb *LPDIRECTSOUNDFXI3DL2REVERB; +typedef struct IDirectSoundCaptureFXAec *LPDIRECTSOUNDCAPTUREFXAEC; +typedef struct IDirectSoundCaptureFXNoiseSuppress *LPDIRECTSOUNDCAPTUREFXNOISESUPPRESS; +typedef struct IDirectSoundFullDuplex *LPDIRECTSOUNDFULLDUPLEX; + +typedef struct IDirectSound8 *LPDIRECTSOUND8; +typedef struct IDirectSoundBuffer8 *LPDIRECTSOUNDBUFFER8; +typedef struct IDirectSound3DListener8 *LPDIRECTSOUND3DLISTENER8; +typedef struct IDirectSound3DBuffer8 *LPDIRECTSOUND3DBUFFER8; +typedef struct IDirectSoundCapture8 *LPDIRECTSOUNDCAPTURE8; +typedef struct IDirectSoundCaptureBuffer8 *LPDIRECTSOUNDCAPTUREBUFFER8; +typedef struct IDirectSoundNotify8 *LPDIRECTSOUNDNOTIFY8; +typedef struct IDirectSoundFXGargle8 *LPDIRECTSOUNDFXGARGLE8; +typedef struct IDirectSoundFXChorus8 *LPDIRECTSOUNDFXCHORUS8; +typedef struct IDirectSoundFXFlanger8 *LPDIRECTSOUNDFXFLANGER8; +typedef struct IDirectSoundFXEcho8 *LPDIRECTSOUNDFXECHO8; +typedef struct IDirectSoundFXDistortion8 *LPDIRECTSOUNDFXDISTORTION8; +typedef struct IDirectSoundFXCompressor8 *LPDIRECTSOUNDFXCOMPRESSOR8; +typedef struct IDirectSoundFXParamEq8 *LPDIRECTSOUNDFXPARAMEQ8; +typedef struct IDirectSoundFXWavesReverb8 *LPDIRECTSOUNDFXWAVESREVERB8; +typedef struct IDirectSoundFXI3DL2Reverb8 *LPDIRECTSOUNDFXI3DL2REVERB8; +typedef struct IDirectSoundCaptureFXAec8 *LPDIRECTSOUNDCAPTUREFXAEC8; +typedef struct IDirectSoundCaptureFXNoiseSuppress8 *LPDIRECTSOUNDCAPTUREFXNOISESUPPRESS8; +typedef struct IDirectSoundFullDuplex8 *LPDIRECTSOUNDFULLDUPLEX8; + +#endif // DIRECTSOUND_VERSION >= 0x0800 + +// +// IID definitions for the unchanged DirectSound 8.0 interfaces +// + +#if DIRECTSOUND_VERSION >= 0x0800 + +#define IID_IDirectSoundCapture8 IID_IDirectSoundCapture +#define IID_IDirectSound3DListener8 IID_IDirectSound3DListener +#define IID_IDirectSound3DBuffer8 IID_IDirectSound3DBuffer +#define IID_IDirectSoundNotify8 IID_IDirectSoundNotify +#define IID_IDirectSoundFXGargle8 IID_IDirectSoundFXGargle +#define IID_IDirectSoundFXChorus8 IID_IDirectSoundFXChorus +#define IID_IDirectSoundFXFlanger8 IID_IDirectSoundFXFlanger +#define IID_IDirectSoundFXEcho8 IID_IDirectSoundFXEcho +#define IID_IDirectSoundFXDistortion8 IID_IDirectSoundFXDistortion +#define IID_IDirectSoundFXCompressor8 IID_IDirectSoundFXCompressor +#define IID_IDirectSoundFXParamEq8 IID_IDirectSoundFXParamEq +#define IID_IDirectSoundFXWavesReverb8 IID_IDirectSoundFXWavesReverb +#define IID_IDirectSoundFXI3DL2Reverb8 IID_IDirectSoundFXI3DL2Reverb +#define IID_IDirectSoundCaptureFXAec8 IID_IDirectSoundCaptureFXAec +#define IID_IDirectSoundCaptureFXNoiseSuppress8 IID_IDirectSoundCaptureFXNoiseSuppress +#define IID_IDirectSoundFullDuplex8 IID_IDirectSoundFullDuplex + +#endif // DIRECTSOUND_VERSION >= 0x0800 + +// +// Compatibility typedefs +// + +#ifndef _LPCWAVEFORMATEX_DEFINED +#define _LPCWAVEFORMATEX_DEFINED +typedef const WAVEFORMATEX *LPCWAVEFORMATEX; +#endif // _LPCWAVEFORMATEX_DEFINED + +#ifndef __LPCGUID_DEFINED__ +#define __LPCGUID_DEFINED__ +typedef const GUID *LPCGUID; +#endif // __LPCGUID_DEFINED__ + +typedef LPDIRECTSOUND *LPLPDIRECTSOUND; +typedef LPDIRECTSOUNDBUFFER *LPLPDIRECTSOUNDBUFFER; +typedef LPDIRECTSOUND3DLISTENER *LPLPDIRECTSOUND3DLISTENER; +typedef LPDIRECTSOUND3DBUFFER *LPLPDIRECTSOUND3DBUFFER; +typedef LPDIRECTSOUNDCAPTURE *LPLPDIRECTSOUNDCAPTURE; +typedef LPDIRECTSOUNDCAPTUREBUFFER *LPLPDIRECTSOUNDCAPTUREBUFFER; +typedef LPDIRECTSOUNDNOTIFY *LPLPDIRECTSOUNDNOTIFY; + +#if DIRECTSOUND_VERSION >= 0x0800 +typedef LPDIRECTSOUND8 *LPLPDIRECTSOUND8; +typedef LPDIRECTSOUNDBUFFER8 *LPLPDIRECTSOUNDBUFFER8; +typedef LPDIRECTSOUNDCAPTURE8 *LPLPDIRECTSOUNDCAPTURE8; +typedef LPDIRECTSOUNDCAPTUREBUFFER8 *LPLPDIRECTSOUNDCAPTUREBUFFER8; +#endif // DIRECTSOUND_VERSION >= 0x0800 + +// +// Structures +// + +typedef struct _DSCAPS +{ + DWORD dwSize; + DWORD dwFlags; + DWORD dwMinSecondarySampleRate; + DWORD dwMaxSecondarySampleRate; + DWORD dwPrimaryBuffers; + DWORD dwMaxHwMixingAllBuffers; + DWORD dwMaxHwMixingStaticBuffers; + DWORD dwMaxHwMixingStreamingBuffers; + DWORD dwFreeHwMixingAllBuffers; + DWORD dwFreeHwMixingStaticBuffers; + DWORD dwFreeHwMixingStreamingBuffers; + DWORD dwMaxHw3DAllBuffers; + DWORD dwMaxHw3DStaticBuffers; + DWORD dwMaxHw3DStreamingBuffers; + DWORD dwFreeHw3DAllBuffers; + DWORD dwFreeHw3DStaticBuffers; + DWORD dwFreeHw3DStreamingBuffers; + DWORD dwTotalHwMemBytes; + DWORD dwFreeHwMemBytes; + DWORD dwMaxContigFreeHwMemBytes; + DWORD dwUnlockTransferRateHwBuffers; + DWORD dwPlayCpuOverheadSwBuffers; + DWORD dwReserved1; + DWORD dwReserved2; +} DSCAPS, *LPDSCAPS; + +typedef const DSCAPS *LPCDSCAPS; + +typedef struct _DSBCAPS +{ + DWORD dwSize; + DWORD dwFlags; + DWORD dwBufferBytes; + DWORD dwUnlockTransferRate; + DWORD dwPlayCpuOverhead; +} DSBCAPS, *LPDSBCAPS; + +typedef const DSBCAPS *LPCDSBCAPS; + +#if DIRECTSOUND_VERSION >= 0x0800 + + typedef struct _DSEFFECTDESC + { + DWORD dwSize; + DWORD dwFlags; + GUID guidDSFXClass; + DWORD_PTR dwReserved1; + DWORD_PTR dwReserved2; + } DSEFFECTDESC, *LPDSEFFECTDESC; + typedef const DSEFFECTDESC *LPCDSEFFECTDESC; + + #define DSFX_LOCHARDWARE 0x00000001 + #define DSFX_LOCSOFTWARE 0x00000002 + + enum + { + DSFXR_PRESENT, // 0 + DSFXR_LOCHARDWARE, // 1 + DSFXR_LOCSOFTWARE, // 2 + DSFXR_UNALLOCATED, // 3 + DSFXR_FAILED, // 4 + DSFXR_UNKNOWN, // 5 + DSFXR_SENDLOOP // 6 + }; + + typedef struct _DSCEFFECTDESC + { + DWORD dwSize; + DWORD dwFlags; + GUID guidDSCFXClass; + GUID guidDSCFXInstance; + DWORD dwReserved1; + DWORD dwReserved2; + } DSCEFFECTDESC, *LPDSCEFFECTDESC; + typedef const DSCEFFECTDESC *LPCDSCEFFECTDESC; + + #define DSCFX_LOCHARDWARE 0x00000001 + #define DSCFX_LOCSOFTWARE 0x00000002 + + #define DSCFXR_LOCHARDWARE 0x00000010 + #define DSCFXR_LOCSOFTWARE 0x00000020 + +#endif // DIRECTSOUND_VERSION >= 0x0800 + +typedef struct _DSBUFFERDESC +{ + DWORD dwSize; + DWORD dwFlags; + DWORD dwBufferBytes; + DWORD dwReserved; + LPWAVEFORMATEX lpwfxFormat; +#if DIRECTSOUND_VERSION >= 0x0700 + GUID guid3DAlgorithm; +#endif +} DSBUFFERDESC, *LPDSBUFFERDESC; + +typedef const DSBUFFERDESC *LPCDSBUFFERDESC; + +// Older version of this structure: + +typedef struct _DSBUFFERDESC1 +{ + DWORD dwSize; + DWORD dwFlags; + DWORD dwBufferBytes; + DWORD dwReserved; + LPWAVEFORMATEX lpwfxFormat; +} DSBUFFERDESC1, *LPDSBUFFERDESC1; + +typedef const DSBUFFERDESC1 *LPCDSBUFFERDESC1; + +typedef struct _DS3DBUFFER +{ + DWORD dwSize; + D3DVECTOR vPosition; + D3DVECTOR vVelocity; + DWORD dwInsideConeAngle; + DWORD dwOutsideConeAngle; + D3DVECTOR vConeOrientation; + LONG lConeOutsideVolume; + D3DVALUE flMinDistance; + D3DVALUE flMaxDistance; + DWORD dwMode; +} DS3DBUFFER, *LPDS3DBUFFER; + +typedef const DS3DBUFFER *LPCDS3DBUFFER; + +typedef struct _DS3DLISTENER +{ + DWORD dwSize; + D3DVECTOR vPosition; + D3DVECTOR vVelocity; + D3DVECTOR vOrientFront; + D3DVECTOR vOrientTop; + D3DVALUE flDistanceFactor; + D3DVALUE flRolloffFactor; + D3DVALUE flDopplerFactor; +} DS3DLISTENER, *LPDS3DLISTENER; + +typedef const DS3DLISTENER *LPCDS3DLISTENER; + +typedef struct _DSCCAPS +{ + DWORD dwSize; + DWORD dwFlags; + DWORD dwFormats; + DWORD dwChannels; +} DSCCAPS, *LPDSCCAPS; + +typedef const DSCCAPS *LPCDSCCAPS; + +typedef struct _DSCBUFFERDESC1 +{ + DWORD dwSize; + DWORD dwFlags; + DWORD dwBufferBytes; + DWORD dwReserved; + LPWAVEFORMATEX lpwfxFormat; +} DSCBUFFERDESC1, *LPDSCBUFFERDESC1; + +typedef struct _DSCBUFFERDESC +{ + DWORD dwSize; + DWORD dwFlags; + DWORD dwBufferBytes; + DWORD dwReserved; + LPWAVEFORMATEX lpwfxFormat; +#if DIRECTSOUND_VERSION >= 0x0800 + DWORD dwFXCount; + LPDSCEFFECTDESC lpDSCFXDesc; +#endif +} DSCBUFFERDESC, *LPDSCBUFFERDESC; + +typedef const DSCBUFFERDESC *LPCDSCBUFFERDESC; + +typedef struct _DSCBCAPS +{ + DWORD dwSize; + DWORD dwFlags; + DWORD dwBufferBytes; + DWORD dwReserved; +} DSCBCAPS, *LPDSCBCAPS; + +typedef const DSCBCAPS *LPCDSCBCAPS; + +typedef struct _DSBPOSITIONNOTIFY +{ + DWORD dwOffset; + HANDLE hEventNotify; +} DSBPOSITIONNOTIFY, *LPDSBPOSITIONNOTIFY; + +typedef const DSBPOSITIONNOTIFY *LPCDSBPOSITIONNOTIFY; + +// +// DirectSound API +// + +typedef BOOL (CALLBACK *LPDSENUMCALLBACKA)(LPGUID, LPCSTR, LPCSTR, LPVOID); +typedef BOOL (CALLBACK *LPDSENUMCALLBACKW)(LPGUID, LPCWSTR, LPCWSTR, LPVOID); + +extern HRESULT WINAPI DirectSoundCreate(LPCGUID pcGuidDevice, LPDIRECTSOUND *ppDS, LPUNKNOWN pUnkOuter); +extern HRESULT WINAPI DirectSoundEnumerateA(LPDSENUMCALLBACKA pDSEnumCallback, LPVOID pContext); +extern HRESULT WINAPI DirectSoundEnumerateW(LPDSENUMCALLBACKW pDSEnumCallback, LPVOID pContext); + +extern HRESULT WINAPI DirectSoundCaptureCreate(LPCGUID pcGuidDevice, LPDIRECTSOUNDCAPTURE *ppDSC, LPUNKNOWN pUnkOuter); +extern HRESULT WINAPI DirectSoundCaptureEnumerateA(LPDSENUMCALLBACKA pDSEnumCallback, LPVOID pContext); +extern HRESULT WINAPI DirectSoundCaptureEnumerateW(LPDSENUMCALLBACKW pDSEnumCallback, LPVOID pContext); + +#if DIRECTSOUND_VERSION >= 0x0800 +extern HRESULT WINAPI DirectSoundCreate8(LPCGUID pcGuidDevice, LPDIRECTSOUND8 *ppDS8, LPUNKNOWN pUnkOuter); +extern HRESULT WINAPI DirectSoundCaptureCreate8(LPCGUID pcGuidDevice, LPDIRECTSOUNDCAPTURE8 *ppDSC8, LPUNKNOWN pUnkOuter); +extern HRESULT WINAPI DirectSoundFullDuplexCreate(LPCGUID pcGuidCaptureDevice, LPCGUID pcGuidRenderDevice, + LPCDSCBUFFERDESC pcDSCBufferDesc, LPCDSBUFFERDESC pcDSBufferDesc, HWND hWnd, + DWORD dwLevel, LPDIRECTSOUNDFULLDUPLEX* ppDSFD, LPDIRECTSOUNDCAPTUREBUFFER8 *ppDSCBuffer8, + LPDIRECTSOUNDBUFFER8 *ppDSBuffer8, LPUNKNOWN pUnkOuter); +#define DirectSoundFullDuplexCreate8 DirectSoundFullDuplexCreate + +extern HRESULT WINAPI GetDeviceID(LPCGUID pGuidSrc, LPGUID pGuidDest); +#endif // DIRECTSOUND_VERSION >= 0x0800 + +#ifdef UNICODE +#define LPDSENUMCALLBACK LPDSENUMCALLBACKW +#define DirectSoundEnumerate DirectSoundEnumerateW +#define DirectSoundCaptureEnumerate DirectSoundCaptureEnumerateW +#else // UNICODE +#define LPDSENUMCALLBACK LPDSENUMCALLBACKA +#define DirectSoundEnumerate DirectSoundEnumerateA +#define DirectSoundCaptureEnumerate DirectSoundCaptureEnumerateA +#endif // UNICODE + +// +// IUnknown +// + +#if !defined(__cplusplus) || defined(CINTERFACE) +#ifndef IUnknown_QueryInterface +#define IUnknown_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#endif // IUnknown_QueryInterface +#ifndef IUnknown_AddRef +#define IUnknown_AddRef(p) (p)->lpVtbl->AddRef(p) +#endif // IUnknown_AddRef +#ifndef IUnknown_Release +#define IUnknown_Release(p) (p)->lpVtbl->Release(p) +#endif // IUnknown_Release +#else // !defined(__cplusplus) || defined(CINTERFACE) +#ifndef IUnknown_QueryInterface +#define IUnknown_QueryInterface(p,a,b) (p)->QueryInterface(a,b) +#endif // IUnknown_QueryInterface +#ifndef IUnknown_AddRef +#define IUnknown_AddRef(p) (p)->AddRef() +#endif // IUnknown_AddRef +#ifndef IUnknown_Release +#define IUnknown_Release(p) (p)->Release() +#endif // IUnknown_Release +#endif // !defined(__cplusplus) || defined(CINTERFACE) + +#ifndef __IReferenceClock_INTERFACE_DEFINED__ +#define __IReferenceClock_INTERFACE_DEFINED__ + +typedef LONGLONG REFERENCE_TIME; +typedef REFERENCE_TIME *LPREFERENCE_TIME; + +DEFINE_GUID(IID_IReferenceClock, 0x56a86897, 0x0ad4, 0x11ce, 0xb0, 0x3a, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70); + +#undef INTERFACE +#define INTERFACE IReferenceClock + +DECLARE_INTERFACE_(IReferenceClock, IUnknown) +{ + // IUnknown methods + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // IReferenceClock methods + STDMETHOD(GetTime) (THIS_ REFERENCE_TIME *pTime) PURE; + STDMETHOD(AdviseTime) (THIS_ REFERENCE_TIME rtBaseTime, REFERENCE_TIME rtStreamTime, + HANDLE hEvent, LPDWORD pdwAdviseCookie) PURE; + STDMETHOD(AdvisePeriodic) (THIS_ REFERENCE_TIME rtStartTime, REFERENCE_TIME rtPeriodTime, + HANDLE hSemaphore, LPDWORD pdwAdviseCookie) PURE; + STDMETHOD(Unadvise) (THIS_ DWORD dwAdviseCookie) PURE; +}; + +#endif // __IReferenceClock_INTERFACE_DEFINED__ + +#ifndef IReferenceClock_QueryInterface + +#define IReferenceClock_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) +#define IReferenceClock_AddRef(p) IUnknown_AddRef(p) +#define IReferenceClock_Release(p) IUnknown_Release(p) + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IReferenceClock_GetTime(p,a) (p)->lpVtbl->GetTime(p,a) +#define IReferenceClock_AdviseTime(p,a,b,c,d) (p)->lpVtbl->AdviseTime(p,a,b,c,d) +#define IReferenceClock_AdvisePeriodic(p,a,b,c,d) (p)->lpVtbl->AdvisePeriodic(p,a,b,c,d) +#define IReferenceClock_Unadvise(p,a) (p)->lpVtbl->Unadvise(p,a) +#else // !defined(__cplusplus) || defined(CINTERFACE) +#define IReferenceClock_GetTime(p,a) (p)->GetTime(a) +#define IReferenceClock_AdviseTime(p,a,b,c,d) (p)->AdviseTime(a,b,c,d) +#define IReferenceClock_AdvisePeriodic(p,a,b,c,d) (p)->AdvisePeriodic(a,b,c,d) +#define IReferenceClock_Unadvise(p,a) (p)->Unadvise(a) +#endif // !defined(__cplusplus) || defined(CINTERFACE) + +#endif // IReferenceClock_QueryInterface + +// +// IDirectSound +// + +DEFINE_GUID(IID_IDirectSound, 0x279AFA83, 0x4981, 0x11CE, 0xA5, 0x21, 0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60); + +#undef INTERFACE +#define INTERFACE IDirectSound + +DECLARE_INTERFACE_(IDirectSound, IUnknown) +{ + // IUnknown methods + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // IDirectSound methods + STDMETHOD(CreateSoundBuffer) (THIS_ LPCDSBUFFERDESC pcDSBufferDesc, LPDIRECTSOUNDBUFFER *ppDSBuffer, LPUNKNOWN pUnkOuter) PURE; + STDMETHOD(GetCaps) (THIS_ LPDSCAPS pDSCaps) PURE; + STDMETHOD(DuplicateSoundBuffer) (THIS_ LPDIRECTSOUNDBUFFER pDSBufferOriginal, LPDIRECTSOUNDBUFFER *ppDSBufferDuplicate) PURE; + STDMETHOD(SetCooperativeLevel) (THIS_ HWND hwnd, DWORD dwLevel) PURE; + STDMETHOD(Compact) (THIS) PURE; + STDMETHOD(GetSpeakerConfig) (THIS_ LPDWORD pdwSpeakerConfig) PURE; + STDMETHOD(SetSpeakerConfig) (THIS_ DWORD dwSpeakerConfig) PURE; + STDMETHOD(Initialize) (THIS_ LPCGUID pcGuidDevice) PURE; +}; + +#define IDirectSound_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) +#define IDirectSound_AddRef(p) IUnknown_AddRef(p) +#define IDirectSound_Release(p) IUnknown_Release(p) + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSound_CreateSoundBuffer(p,a,b,c) (p)->lpVtbl->CreateSoundBuffer(p,a,b,c) +#define IDirectSound_GetCaps(p,a) (p)->lpVtbl->GetCaps(p,a) +#define IDirectSound_DuplicateSoundBuffer(p,a,b) (p)->lpVtbl->DuplicateSoundBuffer(p,a,b) +#define IDirectSound_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b) +#define IDirectSound_Compact(p) (p)->lpVtbl->Compact(p) +#define IDirectSound_GetSpeakerConfig(p,a) (p)->lpVtbl->GetSpeakerConfig(p,a) +#define IDirectSound_SetSpeakerConfig(p,b) (p)->lpVtbl->SetSpeakerConfig(p,b) +#define IDirectSound_Initialize(p,a) (p)->lpVtbl->Initialize(p,a) +#else // !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSound_CreateSoundBuffer(p,a,b,c) (p)->CreateSoundBuffer(a,b,c) +#define IDirectSound_GetCaps(p,a) (p)->GetCaps(a) +#define IDirectSound_DuplicateSoundBuffer(p,a,b) (p)->DuplicateSoundBuffer(a,b) +#define IDirectSound_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b) +#define IDirectSound_Compact(p) (p)->Compact() +#define IDirectSound_GetSpeakerConfig(p,a) (p)->GetSpeakerConfig(a) +#define IDirectSound_SetSpeakerConfig(p,b) (p)->SetSpeakerConfig(b) +#define IDirectSound_Initialize(p,a) (p)->Initialize(a) +#endif // !defined(__cplusplus) || defined(CINTERFACE) + +#if DIRECTSOUND_VERSION >= 0x0800 + +// +// IDirectSound8 +// + +DEFINE_GUID(IID_IDirectSound8, 0xC50A7E93, 0xF395, 0x4834, 0x9E, 0xF6, 0x7F, 0xA9, 0x9D, 0xE5, 0x09, 0x66); + +#undef INTERFACE +#define INTERFACE IDirectSound8 + +DECLARE_INTERFACE_(IDirectSound8, IDirectSound) +{ + // IUnknown methods + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // IDirectSound methods + STDMETHOD(CreateSoundBuffer) (THIS_ LPCDSBUFFERDESC pcDSBufferDesc, LPDIRECTSOUNDBUFFER *ppDSBuffer, LPUNKNOWN pUnkOuter) PURE; + STDMETHOD(GetCaps) (THIS_ LPDSCAPS pDSCaps) PURE; + STDMETHOD(DuplicateSoundBuffer) (THIS_ LPDIRECTSOUNDBUFFER pDSBufferOriginal, LPDIRECTSOUNDBUFFER *ppDSBufferDuplicate) PURE; + STDMETHOD(SetCooperativeLevel) (THIS_ HWND hwnd, DWORD dwLevel) PURE; + STDMETHOD(Compact) (THIS) PURE; + STDMETHOD(GetSpeakerConfig) (THIS_ LPDWORD pdwSpeakerConfig) PURE; + STDMETHOD(SetSpeakerConfig) (THIS_ DWORD dwSpeakerConfig) PURE; + STDMETHOD(Initialize) (THIS_ LPCGUID pcGuidDevice) PURE; + + // IDirectSound8 methods + STDMETHOD(VerifyCertification) (THIS_ LPDWORD pdwCertified) PURE; +}; + +#define IDirectSound8_QueryInterface(p,a,b) IDirectSound_QueryInterface(p,a,b) +#define IDirectSound8_AddRef(p) IDirectSound_AddRef(p) +#define IDirectSound8_Release(p) IDirectSound_Release(p) +#define IDirectSound8_CreateSoundBuffer(p,a,b,c) IDirectSound_CreateSoundBuffer(p,a,b,c) +#define IDirectSound8_GetCaps(p,a) IDirectSound_GetCaps(p,a) +#define IDirectSound8_DuplicateSoundBuffer(p,a,b) IDirectSound_DuplicateSoundBuffer(p,a,b) +#define IDirectSound8_SetCooperativeLevel(p,a,b) IDirectSound_SetCooperativeLevel(p,a,b) +#define IDirectSound8_Compact(p) IDirectSound_Compact(p) +#define IDirectSound8_GetSpeakerConfig(p,a) IDirectSound_GetSpeakerConfig(p,a) +#define IDirectSound8_SetSpeakerConfig(p,a) IDirectSound_SetSpeakerConfig(p,a) +#define IDirectSound8_Initialize(p,a) IDirectSound_Initialize(p,a) + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSound8_VerifyCertification(p,a) (p)->lpVtbl->VerifyCertification(p,a) +#else // !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSound8_VerifyCertification(p,a) (p)->VerifyCertification(a) +#endif // !defined(__cplusplus) || defined(CINTERFACE) + +#endif // DIRECTSOUND_VERSION >= 0x0800 + +// +// IDirectSoundBuffer +// + +DEFINE_GUID(IID_IDirectSoundBuffer, 0x279AFA85, 0x4981, 0x11CE, 0xA5, 0x21, 0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60); + +#undef INTERFACE +#define INTERFACE IDirectSoundBuffer + +DECLARE_INTERFACE_(IDirectSoundBuffer, IUnknown) +{ + // IUnknown methods + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // IDirectSoundBuffer methods + STDMETHOD(GetCaps) (THIS_ LPDSBCAPS pDSBufferCaps) PURE; + STDMETHOD(GetCurrentPosition) (THIS_ LPDWORD pdwCurrentPlayCursor, LPDWORD pdwCurrentWriteCursor) PURE; + STDMETHOD(GetFormat) (THIS_ LPWAVEFORMATEX pwfxFormat, DWORD dwSizeAllocated, LPDWORD pdwSizeWritten) PURE; + STDMETHOD(GetVolume) (THIS_ LPLONG plVolume) PURE; + STDMETHOD(GetPan) (THIS_ LPLONG plPan) PURE; + STDMETHOD(GetFrequency) (THIS_ LPDWORD pdwFrequency) PURE; + STDMETHOD(GetStatus) (THIS_ LPDWORD pdwStatus) PURE; + STDMETHOD(Initialize) (THIS_ LPDIRECTSOUND pDirectSound, LPCDSBUFFERDESC pcDSBufferDesc) PURE; + STDMETHOD(Lock) (THIS_ DWORD dwOffset, DWORD dwBytes, LPVOID *ppvAudioPtr1, LPDWORD pdwAudioBytes1, + LPVOID *ppvAudioPtr2, LPDWORD pdwAudioBytes2, DWORD dwFlags) PURE; + STDMETHOD(Play) (THIS_ DWORD dwReserved1, DWORD dwPriority, DWORD dwFlags) PURE; + STDMETHOD(SetCurrentPosition) (THIS_ DWORD dwNewPosition) PURE; + STDMETHOD(SetFormat) (THIS_ LPCWAVEFORMATEX pcfxFormat) PURE; + STDMETHOD(SetVolume) (THIS_ LONG lVolume) PURE; + STDMETHOD(SetPan) (THIS_ LONG lPan) PURE; + STDMETHOD(SetFrequency) (THIS_ DWORD dwFrequency) PURE; + STDMETHOD(Stop) (THIS) PURE; + STDMETHOD(Unlock) (THIS_ LPVOID pvAudioPtr1, DWORD dwAudioBytes1, LPVOID pvAudioPtr2, DWORD dwAudioBytes2) PURE; + STDMETHOD(Restore) (THIS) PURE; +}; + +#define IDirectSoundBuffer_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) +#define IDirectSoundBuffer_AddRef(p) IUnknown_AddRef(p) +#define IDirectSoundBuffer_Release(p) IUnknown_Release(p) + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSoundBuffer_GetCaps(p,a) (p)->lpVtbl->GetCaps(p,a) +#define IDirectSoundBuffer_GetCurrentPosition(p,a,b) (p)->lpVtbl->GetCurrentPosition(p,a,b) +#define IDirectSoundBuffer_GetFormat(p,a,b,c) (p)->lpVtbl->GetFormat(p,a,b,c) +#define IDirectSoundBuffer_GetVolume(p,a) (p)->lpVtbl->GetVolume(p,a) +#define IDirectSoundBuffer_GetPan(p,a) (p)->lpVtbl->GetPan(p,a) +#define IDirectSoundBuffer_GetFrequency(p,a) (p)->lpVtbl->GetFrequency(p,a) +#define IDirectSoundBuffer_GetStatus(p,a) (p)->lpVtbl->GetStatus(p,a) +#define IDirectSoundBuffer_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b) +#define IDirectSoundBuffer_Lock(p,a,b,c,d,e,f,g) (p)->lpVtbl->Lock(p,a,b,c,d,e,f,g) +#define IDirectSoundBuffer_Play(p,a,b,c) (p)->lpVtbl->Play(p,a,b,c) +#define IDirectSoundBuffer_SetCurrentPosition(p,a) (p)->lpVtbl->SetCurrentPosition(p,a) +#define IDirectSoundBuffer_SetFormat(p,a) (p)->lpVtbl->SetFormat(p,a) +#define IDirectSoundBuffer_SetVolume(p,a) (p)->lpVtbl->SetVolume(p,a) +#define IDirectSoundBuffer_SetPan(p,a) (p)->lpVtbl->SetPan(p,a) +#define IDirectSoundBuffer_SetFrequency(p,a) (p)->lpVtbl->SetFrequency(p,a) +#define IDirectSoundBuffer_Stop(p) (p)->lpVtbl->Stop(p) +#define IDirectSoundBuffer_Unlock(p,a,b,c,d) (p)->lpVtbl->Unlock(p,a,b,c,d) +#define IDirectSoundBuffer_Restore(p) (p)->lpVtbl->Restore(p) +#else // !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSoundBuffer_GetCaps(p,a) (p)->GetCaps(a) +#define IDirectSoundBuffer_GetCurrentPosition(p,a,b) (p)->GetCurrentPosition(a,b) +#define IDirectSoundBuffer_GetFormat(p,a,b,c) (p)->GetFormat(a,b,c) +#define IDirectSoundBuffer_GetVolume(p,a) (p)->GetVolume(a) +#define IDirectSoundBuffer_GetPan(p,a) (p)->GetPan(a) +#define IDirectSoundBuffer_GetFrequency(p,a) (p)->GetFrequency(a) +#define IDirectSoundBuffer_GetStatus(p,a) (p)->GetStatus(a) +#define IDirectSoundBuffer_Initialize(p,a,b) (p)->Initialize(a,b) +#define IDirectSoundBuffer_Lock(p,a,b,c,d,e,f,g) (p)->Lock(a,b,c,d,e,f,g) +#define IDirectSoundBuffer_Play(p,a,b,c) (p)->Play(a,b,c) +#define IDirectSoundBuffer_SetCurrentPosition(p,a) (p)->SetCurrentPosition(a) +#define IDirectSoundBuffer_SetFormat(p,a) (p)->SetFormat(a) +#define IDirectSoundBuffer_SetVolume(p,a) (p)->SetVolume(a) +#define IDirectSoundBuffer_SetPan(p,a) (p)->SetPan(a) +#define IDirectSoundBuffer_SetFrequency(p,a) (p)->SetFrequency(a) +#define IDirectSoundBuffer_Stop(p) (p)->Stop() +#define IDirectSoundBuffer_Unlock(p,a,b,c,d) (p)->Unlock(a,b,c,d) +#define IDirectSoundBuffer_Restore(p) (p)->Restore() +#endif // !defined(__cplusplus) || defined(CINTERFACE) + +#if DIRECTSOUND_VERSION >= 0x0800 + +// +// IDirectSoundBuffer8 +// + +DEFINE_GUID(IID_IDirectSoundBuffer8, 0x6825a449, 0x7524, 0x4d82, 0x92, 0x0f, 0x50, 0xe3, 0x6a, 0xb3, 0xab, 0x1e); + +#undef INTERFACE +#define INTERFACE IDirectSoundBuffer8 + +DECLARE_INTERFACE_(IDirectSoundBuffer8, IDirectSoundBuffer) +{ + // IUnknown methods + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // IDirectSoundBuffer methods + STDMETHOD(GetCaps) (THIS_ LPDSBCAPS pDSBufferCaps) PURE; + STDMETHOD(GetCurrentPosition) (THIS_ LPDWORD pdwCurrentPlayCursor, LPDWORD pdwCurrentWriteCursor) PURE; + STDMETHOD(GetFormat) (THIS_ LPWAVEFORMATEX pwfxFormat, DWORD dwSizeAllocated, LPDWORD pdwSizeWritten) PURE; + STDMETHOD(GetVolume) (THIS_ LPLONG plVolume) PURE; + STDMETHOD(GetPan) (THIS_ LPLONG plPan) PURE; + STDMETHOD(GetFrequency) (THIS_ LPDWORD pdwFrequency) PURE; + STDMETHOD(GetStatus) (THIS_ LPDWORD pdwStatus) PURE; + STDMETHOD(Initialize) (THIS_ LPDIRECTSOUND pDirectSound, LPCDSBUFFERDESC pcDSBufferDesc) PURE; + STDMETHOD(Lock) (THIS_ DWORD dwOffset, DWORD dwBytes, LPVOID *ppvAudioPtr1, LPDWORD pdwAudioBytes1, + LPVOID *ppvAudioPtr2, LPDWORD pdwAudioBytes2, DWORD dwFlags) PURE; + STDMETHOD(Play) (THIS_ DWORD dwReserved1, DWORD dwPriority, DWORD dwFlags) PURE; + STDMETHOD(SetCurrentPosition) (THIS_ DWORD dwNewPosition) PURE; + STDMETHOD(SetFormat) (THIS_ LPCWAVEFORMATEX pcfxFormat) PURE; + STDMETHOD(SetVolume) (THIS_ LONG lVolume) PURE; + STDMETHOD(SetPan) (THIS_ LONG lPan) PURE; + STDMETHOD(SetFrequency) (THIS_ DWORD dwFrequency) PURE; + STDMETHOD(Stop) (THIS) PURE; + STDMETHOD(Unlock) (THIS_ LPVOID pvAudioPtr1, DWORD dwAudioBytes1, LPVOID pvAudioPtr2, DWORD dwAudioBytes2) PURE; + STDMETHOD(Restore) (THIS) PURE; + + // IDirectSoundBuffer8 methods + STDMETHOD(SetFX) (THIS_ DWORD dwEffectsCount, LPDSEFFECTDESC pDSFXDesc, LPDWORD pdwResultCodes) PURE; + STDMETHOD(AcquireResources) (THIS_ DWORD dwFlags, DWORD dwEffectsCount, LPDWORD pdwResultCodes) PURE; + STDMETHOD(GetObjectInPath) (THIS_ REFGUID rguidObject, DWORD dwIndex, REFGUID rguidInterface, LPVOID *ppObject) PURE; +}; + +// Special GUID meaning "select all objects" for use in GetObjectInPath() +DEFINE_GUID(GUID_All_Objects, 0xaa114de5, 0xc262, 0x4169, 0xa1, 0xc8, 0x23, 0xd6, 0x98, 0xcc, 0x73, 0xb5); + +#define IDirectSoundBuffer8_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) +#define IDirectSoundBuffer8_AddRef(p) IUnknown_AddRef(p) +#define IDirectSoundBuffer8_Release(p) IUnknown_Release(p) + +#define IDirectSoundBuffer8_GetCaps(p,a) IDirectSoundBuffer_GetCaps(p,a) +#define IDirectSoundBuffer8_GetCurrentPosition(p,a,b) IDirectSoundBuffer_GetCurrentPosition(p,a,b) +#define IDirectSoundBuffer8_GetFormat(p,a,b,c) IDirectSoundBuffer_GetFormat(p,a,b,c) +#define IDirectSoundBuffer8_GetVolume(p,a) IDirectSoundBuffer_GetVolume(p,a) +#define IDirectSoundBuffer8_GetPan(p,a) IDirectSoundBuffer_GetPan(p,a) +#define IDirectSoundBuffer8_GetFrequency(p,a) IDirectSoundBuffer_GetFrequency(p,a) +#define IDirectSoundBuffer8_GetStatus(p,a) IDirectSoundBuffer_GetStatus(p,a) +#define IDirectSoundBuffer8_Initialize(p,a,b) IDirectSoundBuffer_Initialize(p,a,b) +#define IDirectSoundBuffer8_Lock(p,a,b,c,d,e,f,g) IDirectSoundBuffer_Lock(p,a,b,c,d,e,f,g) +#define IDirectSoundBuffer8_Play(p,a,b,c) IDirectSoundBuffer_Play(p,a,b,c) +#define IDirectSoundBuffer8_SetCurrentPosition(p,a) IDirectSoundBuffer_SetCurrentPosition(p,a) +#define IDirectSoundBuffer8_SetFormat(p,a) IDirectSoundBuffer_SetFormat(p,a) +#define IDirectSoundBuffer8_SetVolume(p,a) IDirectSoundBuffer_SetVolume(p,a) +#define IDirectSoundBuffer8_SetPan(p,a) IDirectSoundBuffer_SetPan(p,a) +#define IDirectSoundBuffer8_SetFrequency(p,a) IDirectSoundBuffer_SetFrequency(p,a) +#define IDirectSoundBuffer8_Stop(p) IDirectSoundBuffer_Stop(p) +#define IDirectSoundBuffer8_Unlock(p,a,b,c,d) IDirectSoundBuffer_Unlock(p,a,b,c,d) +#define IDirectSoundBuffer8_Restore(p) IDirectSoundBuffer_Restore(p) + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSoundBuffer8_SetFX(p,a,b,c) (p)->lpVtbl->SetFX(p,a,b,c) +#define IDirectSoundBuffer8_AcquireResources(p,a,b,c) (p)->lpVtbl->AcquireResources(p,a,b,c) +#define IDirectSoundBuffer8_GetObjectInPath(p,a,b,c,d) (p)->lpVtbl->GetObjectInPath(p,a,b,c,d) +#else // !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSoundBuffer8_SetFX(p,a,b,c) (p)->SetFX(a,b,c) +#define IDirectSoundBuffer8_AcquireResources(p,a,b,c) (p)->AcquireResources(a,b,c) +#define IDirectSoundBuffer8_GetObjectInPath(p,a,b,c,d) (p)->GetObjectInPath(a,b,c,d) +#endif // !defined(__cplusplus) || defined(CINTERFACE) + +#endif // DIRECTSOUND_VERSION >= 0x0800 + +// +// IDirectSound3DListener +// + +DEFINE_GUID(IID_IDirectSound3DListener, 0x279AFA84, 0x4981, 0x11CE, 0xA5, 0x21, 0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60); + +#undef INTERFACE +#define INTERFACE IDirectSound3DListener + +DECLARE_INTERFACE_(IDirectSound3DListener, IUnknown) +{ + // IUnknown methods + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // IDirectSound3DListener methods + STDMETHOD(GetAllParameters) (THIS_ LPDS3DLISTENER pListener) PURE; + STDMETHOD(GetDistanceFactor) (THIS_ D3DVALUE* pflDistanceFactor) PURE; + STDMETHOD(GetDopplerFactor) (THIS_ D3DVALUE* pflDopplerFactor) PURE; + STDMETHOD(GetOrientation) (THIS_ D3DVECTOR* pvOrientFront, D3DVECTOR* pvOrientTop) PURE; + STDMETHOD(GetPosition) (THIS_ D3DVECTOR* pvPosition) PURE; + STDMETHOD(GetRolloffFactor) (THIS_ D3DVALUE* pflRolloffFactor) PURE; + STDMETHOD(GetVelocity) (THIS_ D3DVECTOR* pvVelocity) PURE; + STDMETHOD(SetAllParameters) (THIS_ LPCDS3DLISTENER pcListener, DWORD dwApply) PURE; + STDMETHOD(SetDistanceFactor) (THIS_ D3DVALUE flDistanceFactor, DWORD dwApply) PURE; + STDMETHOD(SetDopplerFactor) (THIS_ D3DVALUE flDopplerFactor, DWORD dwApply) PURE; + STDMETHOD(SetOrientation) (THIS_ D3DVALUE xFront, D3DVALUE yFront, D3DVALUE zFront, + D3DVALUE xTop, D3DVALUE yTop, D3DVALUE zTop, DWORD dwApply) PURE; + STDMETHOD(SetPosition) (THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z, DWORD dwApply) PURE; + STDMETHOD(SetRolloffFactor) (THIS_ D3DVALUE flRolloffFactor, DWORD dwApply) PURE; + STDMETHOD(SetVelocity) (THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z, DWORD dwApply) PURE; + STDMETHOD(CommitDeferredSettings) (THIS) PURE; +}; + +#define IDirectSound3DListener_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) +#define IDirectSound3DListener_AddRef(p) IUnknown_AddRef(p) +#define IDirectSound3DListener_Release(p) IUnknown_Release(p) + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSound3DListener_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a) +#define IDirectSound3DListener_GetDistanceFactor(p,a) (p)->lpVtbl->GetDistanceFactor(p,a) +#define IDirectSound3DListener_GetDopplerFactor(p,a) (p)->lpVtbl->GetDopplerFactor(p,a) +#define IDirectSound3DListener_GetOrientation(p,a,b) (p)->lpVtbl->GetOrientation(p,a,b) +#define IDirectSound3DListener_GetPosition(p,a) (p)->lpVtbl->GetPosition(p,a) +#define IDirectSound3DListener_GetRolloffFactor(p,a) (p)->lpVtbl->GetRolloffFactor(p,a) +#define IDirectSound3DListener_GetVelocity(p,a) (p)->lpVtbl->GetVelocity(p,a) +#define IDirectSound3DListener_SetAllParameters(p,a,b) (p)->lpVtbl->SetAllParameters(p,a,b) +#define IDirectSound3DListener_SetDistanceFactor(p,a,b) (p)->lpVtbl->SetDistanceFactor(p,a,b) +#define IDirectSound3DListener_SetDopplerFactor(p,a,b) (p)->lpVtbl->SetDopplerFactor(p,a,b) +#define IDirectSound3DListener_SetOrientation(p,a,b,c,d,e,f,g) (p)->lpVtbl->SetOrientation(p,a,b,c,d,e,f,g) +#define IDirectSound3DListener_SetPosition(p,a,b,c,d) (p)->lpVtbl->SetPosition(p,a,b,c,d) +#define IDirectSound3DListener_SetRolloffFactor(p,a,b) (p)->lpVtbl->SetRolloffFactor(p,a,b) +#define IDirectSound3DListener_SetVelocity(p,a,b,c,d) (p)->lpVtbl->SetVelocity(p,a,b,c,d) +#define IDirectSound3DListener_CommitDeferredSettings(p) (p)->lpVtbl->CommitDeferredSettings(p) +#else // !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSound3DListener_GetAllParameters(p,a) (p)->GetAllParameters(a) +#define IDirectSound3DListener_GetDistanceFactor(p,a) (p)->GetDistanceFactor(a) +#define IDirectSound3DListener_GetDopplerFactor(p,a) (p)->GetDopplerFactor(a) +#define IDirectSound3DListener_GetOrientation(p,a,b) (p)->GetOrientation(a,b) +#define IDirectSound3DListener_GetPosition(p,a) (p)->GetPosition(a) +#define IDirectSound3DListener_GetRolloffFactor(p,a) (p)->GetRolloffFactor(a) +#define IDirectSound3DListener_GetVelocity(p,a) (p)->GetVelocity(a) +#define IDirectSound3DListener_SetAllParameters(p,a,b) (p)->SetAllParameters(a,b) +#define IDirectSound3DListener_SetDistanceFactor(p,a,b) (p)->SetDistanceFactor(a,b) +#define IDirectSound3DListener_SetDopplerFactor(p,a,b) (p)->SetDopplerFactor(a,b) +#define IDirectSound3DListener_SetOrientation(p,a,b,c,d,e,f,g) (p)->SetOrientation(a,b,c,d,e,f,g) +#define IDirectSound3DListener_SetPosition(p,a,b,c,d) (p)->SetPosition(a,b,c,d) +#define IDirectSound3DListener_SetRolloffFactor(p,a,b) (p)->SetRolloffFactor(a,b) +#define IDirectSound3DListener_SetVelocity(p,a,b,c,d) (p)->SetVelocity(a,b,c,d) +#define IDirectSound3DListener_CommitDeferredSettings(p) (p)->CommitDeferredSettings() +#endif // !defined(__cplusplus) || defined(CINTERFACE) + +// +// IDirectSound3DBuffer +// + +DEFINE_GUID(IID_IDirectSound3DBuffer, 0x279AFA86, 0x4981, 0x11CE, 0xA5, 0x21, 0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60); + +#undef INTERFACE +#define INTERFACE IDirectSound3DBuffer + +DECLARE_INTERFACE_(IDirectSound3DBuffer, IUnknown) +{ + // IUnknown methods + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // IDirectSound3DBuffer methods + STDMETHOD(GetAllParameters) (THIS_ LPDS3DBUFFER pDs3dBuffer) PURE; + STDMETHOD(GetConeAngles) (THIS_ LPDWORD pdwInsideConeAngle, LPDWORD pdwOutsideConeAngle) PURE; + STDMETHOD(GetConeOrientation) (THIS_ D3DVECTOR* pvOrientation) PURE; + STDMETHOD(GetConeOutsideVolume) (THIS_ LPLONG plConeOutsideVolume) PURE; + STDMETHOD(GetMaxDistance) (THIS_ D3DVALUE* pflMaxDistance) PURE; + STDMETHOD(GetMinDistance) (THIS_ D3DVALUE* pflMinDistance) PURE; + STDMETHOD(GetMode) (THIS_ LPDWORD pdwMode) PURE; + STDMETHOD(GetPosition) (THIS_ D3DVECTOR* pvPosition) PURE; + STDMETHOD(GetVelocity) (THIS_ D3DVECTOR* pvVelocity) PURE; + STDMETHOD(SetAllParameters) (THIS_ LPCDS3DBUFFER pcDs3dBuffer, DWORD dwApply) PURE; + STDMETHOD(SetConeAngles) (THIS_ DWORD dwInsideConeAngle, DWORD dwOutsideConeAngle, DWORD dwApply) PURE; + STDMETHOD(SetConeOrientation) (THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z, DWORD dwApply) PURE; + STDMETHOD(SetConeOutsideVolume) (THIS_ LONG lConeOutsideVolume, DWORD dwApply) PURE; + STDMETHOD(SetMaxDistance) (THIS_ D3DVALUE flMaxDistance, DWORD dwApply) PURE; + STDMETHOD(SetMinDistance) (THIS_ D3DVALUE flMinDistance, DWORD dwApply) PURE; + STDMETHOD(SetMode) (THIS_ DWORD dwMode, DWORD dwApply) PURE; + STDMETHOD(SetPosition) (THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z, DWORD dwApply) PURE; + STDMETHOD(SetVelocity) (THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z, DWORD dwApply) PURE; +}; + +#define IDirectSound3DBuffer_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) +#define IDirectSound3DBuffer_AddRef(p) IUnknown_AddRef(p) +#define IDirectSound3DBuffer_Release(p) IUnknown_Release(p) + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSound3DBuffer_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a) +#define IDirectSound3DBuffer_GetConeAngles(p,a,b) (p)->lpVtbl->GetConeAngles(p,a,b) +#define IDirectSound3DBuffer_GetConeOrientation(p,a) (p)->lpVtbl->GetConeOrientation(p,a) +#define IDirectSound3DBuffer_GetConeOutsideVolume(p,a) (p)->lpVtbl->GetConeOutsideVolume(p,a) +#define IDirectSound3DBuffer_GetPosition(p,a) (p)->lpVtbl->GetPosition(p,a) +#define IDirectSound3DBuffer_GetMinDistance(p,a) (p)->lpVtbl->GetMinDistance(p,a) +#define IDirectSound3DBuffer_GetMaxDistance(p,a) (p)->lpVtbl->GetMaxDistance(p,a) +#define IDirectSound3DBuffer_GetMode(p,a) (p)->lpVtbl->GetMode(p,a) +#define IDirectSound3DBuffer_GetVelocity(p,a) (p)->lpVtbl->GetVelocity(p,a) +#define IDirectSound3DBuffer_SetAllParameters(p,a,b) (p)->lpVtbl->SetAllParameters(p,a,b) +#define IDirectSound3DBuffer_SetConeAngles(p,a,b,c) (p)->lpVtbl->SetConeAngles(p,a,b,c) +#define IDirectSound3DBuffer_SetConeOrientation(p,a,b,c,d) (p)->lpVtbl->SetConeOrientation(p,a,b,c,d) +#define IDirectSound3DBuffer_SetConeOutsideVolume(p,a,b) (p)->lpVtbl->SetConeOutsideVolume(p,a,b) +#define IDirectSound3DBuffer_SetPosition(p,a,b,c,d) (p)->lpVtbl->SetPosition(p,a,b,c,d) +#define IDirectSound3DBuffer_SetMinDistance(p,a,b) (p)->lpVtbl->SetMinDistance(p,a,b) +#define IDirectSound3DBuffer_SetMaxDistance(p,a,b) (p)->lpVtbl->SetMaxDistance(p,a,b) +#define IDirectSound3DBuffer_SetMode(p,a,b) (p)->lpVtbl->SetMode(p,a,b) +#define IDirectSound3DBuffer_SetVelocity(p,a,b,c,d) (p)->lpVtbl->SetVelocity(p,a,b,c,d) +#else // !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSound3DBuffer_GetAllParameters(p,a) (p)->GetAllParameters(a) +#define IDirectSound3DBuffer_GetConeAngles(p,a,b) (p)->GetConeAngles(a,b) +#define IDirectSound3DBuffer_GetConeOrientation(p,a) (p)->GetConeOrientation(a) +#define IDirectSound3DBuffer_GetConeOutsideVolume(p,a) (p)->GetConeOutsideVolume(a) +#define IDirectSound3DBuffer_GetPosition(p,a) (p)->GetPosition(a) +#define IDirectSound3DBuffer_GetMinDistance(p,a) (p)->GetMinDistance(a) +#define IDirectSound3DBuffer_GetMaxDistance(p,a) (p)->GetMaxDistance(a) +#define IDirectSound3DBuffer_GetMode(p,a) (p)->GetMode(a) +#define IDirectSound3DBuffer_GetVelocity(p,a) (p)->GetVelocity(a) +#define IDirectSound3DBuffer_SetAllParameters(p,a,b) (p)->SetAllParameters(a,b) +#define IDirectSound3DBuffer_SetConeAngles(p,a,b,c) (p)->SetConeAngles(a,b,c) +#define IDirectSound3DBuffer_SetConeOrientation(p,a,b,c,d) (p)->SetConeOrientation(a,b,c,d) +#define IDirectSound3DBuffer_SetConeOutsideVolume(p,a,b) (p)->SetConeOutsideVolume(a,b) +#define IDirectSound3DBuffer_SetPosition(p,a,b,c,d) (p)->SetPosition(a,b,c,d) +#define IDirectSound3DBuffer_SetMinDistance(p,a,b) (p)->SetMinDistance(a,b) +#define IDirectSound3DBuffer_SetMaxDistance(p,a,b) (p)->SetMaxDistance(a,b) +#define IDirectSound3DBuffer_SetMode(p,a,b) (p)->SetMode(a,b) +#define IDirectSound3DBuffer_SetVelocity(p,a,b,c,d) (p)->SetVelocity(a,b,c,d) +#endif // !defined(__cplusplus) || defined(CINTERFACE) + +// +// IDirectSoundCapture +// + +DEFINE_GUID(IID_IDirectSoundCapture, 0xb0210781, 0x89cd, 0x11d0, 0xaf, 0x8, 0x0, 0xa0, 0xc9, 0x25, 0xcd, 0x16); + +#undef INTERFACE +#define INTERFACE IDirectSoundCapture + +DECLARE_INTERFACE_(IDirectSoundCapture, IUnknown) +{ + // IUnknown methods + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // IDirectSoundCapture methods + STDMETHOD(CreateCaptureBuffer) (THIS_ LPCDSCBUFFERDESC pcDSCBufferDesc, LPDIRECTSOUNDCAPTUREBUFFER *ppDSCBuffer, LPUNKNOWN pUnkOuter) PURE; + STDMETHOD(GetCaps) (THIS_ LPDSCCAPS pDSCCaps) PURE; + STDMETHOD(Initialize) (THIS_ LPCGUID pcGuidDevice) PURE; +}; + +#define IDirectSoundCapture_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) +#define IDirectSoundCapture_AddRef(p) IUnknown_AddRef(p) +#define IDirectSoundCapture_Release(p) IUnknown_Release(p) + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSoundCapture_CreateCaptureBuffer(p,a,b,c) (p)->lpVtbl->CreateCaptureBuffer(p,a,b,c) +#define IDirectSoundCapture_GetCaps(p,a) (p)->lpVtbl->GetCaps(p,a) +#define IDirectSoundCapture_Initialize(p,a) (p)->lpVtbl->Initialize(p,a) +#else // !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSoundCapture_CreateCaptureBuffer(p,a,b,c) (p)->CreateCaptureBuffer(a,b,c) +#define IDirectSoundCapture_GetCaps(p,a) (p)->GetCaps(a) +#define IDirectSoundCapture_Initialize(p,a) (p)->Initialize(a) +#endif // !defined(__cplusplus) || defined(CINTERFACE) + +// +// IDirectSoundCaptureBuffer +// + +DEFINE_GUID(IID_IDirectSoundCaptureBuffer, 0xb0210782, 0x89cd, 0x11d0, 0xaf, 0x8, 0x0, 0xa0, 0xc9, 0x25, 0xcd, 0x16); + +#undef INTERFACE +#define INTERFACE IDirectSoundCaptureBuffer + +DECLARE_INTERFACE_(IDirectSoundCaptureBuffer, IUnknown) +{ + // IUnknown methods + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // IDirectSoundCaptureBuffer methods + STDMETHOD(GetCaps) (THIS_ LPDSCBCAPS pDSCBCaps) PURE; + STDMETHOD(GetCurrentPosition) (THIS_ LPDWORD pdwCapturePosition, LPDWORD pdwReadPosition) PURE; + STDMETHOD(GetFormat) (THIS_ LPWAVEFORMATEX pwfxFormat, DWORD dwSizeAllocated, LPDWORD pdwSizeWritten) PURE; + STDMETHOD(GetStatus) (THIS_ LPDWORD pdwStatus) PURE; + STDMETHOD(Initialize) (THIS_ LPDIRECTSOUNDCAPTURE pDirectSoundCapture, LPCDSCBUFFERDESC pcDSCBufferDesc) PURE; + STDMETHOD(Lock) (THIS_ DWORD dwOffset, DWORD dwBytes, LPVOID *ppvAudioPtr1, LPDWORD pdwAudioBytes1, + LPVOID *ppvAudioPtr2, LPDWORD pdwAudioBytes2, DWORD dwFlags) PURE; + STDMETHOD(Start) (THIS_ DWORD dwFlags) PURE; + STDMETHOD(Stop) (THIS) PURE; + STDMETHOD(Unlock) (THIS_ LPVOID pvAudioPtr1, DWORD dwAudioBytes1, LPVOID pvAudioPtr2, DWORD dwAudioBytes2) PURE; +}; + +#define IDirectSoundCaptureBuffer_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) +#define IDirectSoundCaptureBuffer_AddRef(p) IUnknown_AddRef(p) +#define IDirectSoundCaptureBuffer_Release(p) IUnknown_Release(p) + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSoundCaptureBuffer_GetCaps(p,a) (p)->lpVtbl->GetCaps(p,a) +#define IDirectSoundCaptureBuffer_GetCurrentPosition(p,a,b) (p)->lpVtbl->GetCurrentPosition(p,a,b) +#define IDirectSoundCaptureBuffer_GetFormat(p,a,b,c) (p)->lpVtbl->GetFormat(p,a,b,c) +#define IDirectSoundCaptureBuffer_GetStatus(p,a) (p)->lpVtbl->GetStatus(p,a) +#define IDirectSoundCaptureBuffer_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b) +#define IDirectSoundCaptureBuffer_Lock(p,a,b,c,d,e,f,g) (p)->lpVtbl->Lock(p,a,b,c,d,e,f,g) +#define IDirectSoundCaptureBuffer_Start(p,a) (p)->lpVtbl->Start(p,a) +#define IDirectSoundCaptureBuffer_Stop(p) (p)->lpVtbl->Stop(p) +#define IDirectSoundCaptureBuffer_Unlock(p,a,b,c,d) (p)->lpVtbl->Unlock(p,a,b,c,d) +#else // !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSoundCaptureBuffer_GetCaps(p,a) (p)->GetCaps(a) +#define IDirectSoundCaptureBuffer_GetCurrentPosition(p,a,b) (p)->GetCurrentPosition(a,b) +#define IDirectSoundCaptureBuffer_GetFormat(p,a,b,c) (p)->GetFormat(a,b,c) +#define IDirectSoundCaptureBuffer_GetStatus(p,a) (p)->GetStatus(a) +#define IDirectSoundCaptureBuffer_Initialize(p,a,b) (p)->Initialize(a,b) +#define IDirectSoundCaptureBuffer_Lock(p,a,b,c,d,e,f,g) (p)->Lock(a,b,c,d,e,f,g) +#define IDirectSoundCaptureBuffer_Start(p,a) (p)->Start(a) +#define IDirectSoundCaptureBuffer_Stop(p) (p)->Stop() +#define IDirectSoundCaptureBuffer_Unlock(p,a,b,c,d) (p)->Unlock(a,b,c,d) +#endif // !defined(__cplusplus) || defined(CINTERFACE) + + +#if DIRECTSOUND_VERSION >= 0x0800 + +// +// IDirectSoundCaptureBuffer8 +// + +DEFINE_GUID(IID_IDirectSoundCaptureBuffer8, 0x990df4, 0xdbb, 0x4872, 0x83, 0x3e, 0x6d, 0x30, 0x3e, 0x80, 0xae, 0xb6); + +#undef INTERFACE +#define INTERFACE IDirectSoundCaptureBuffer8 + +DECLARE_INTERFACE_(IDirectSoundCaptureBuffer8, IDirectSoundCaptureBuffer) +{ + // IUnknown methods + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // IDirectSoundCaptureBuffer methods + STDMETHOD(GetCaps) (THIS_ LPDSCBCAPS pDSCBCaps) PURE; + STDMETHOD(GetCurrentPosition) (THIS_ LPDWORD pdwCapturePosition, LPDWORD pdwReadPosition) PURE; + STDMETHOD(GetFormat) (THIS_ LPWAVEFORMATEX pwfxFormat, DWORD dwSizeAllocated, LPDWORD pdwSizeWritten) PURE; + STDMETHOD(GetStatus) (THIS_ LPDWORD pdwStatus) PURE; + STDMETHOD(Initialize) (THIS_ LPDIRECTSOUNDCAPTURE pDirectSoundCapture, LPCDSCBUFFERDESC pcDSCBufferDesc) PURE; + STDMETHOD(Lock) (THIS_ DWORD dwOffset, DWORD dwBytes, LPVOID *ppvAudioPtr1, LPDWORD pdwAudioBytes1, + LPVOID *ppvAudioPtr2, LPDWORD pdwAudioBytes2, DWORD dwFlags) PURE; + STDMETHOD(Start) (THIS_ DWORD dwFlags) PURE; + STDMETHOD(Stop) (THIS) PURE; + STDMETHOD(Unlock) (THIS_ LPVOID pvAudioPtr1, DWORD dwAudioBytes1, LPVOID pvAudioPtr2, DWORD dwAudioBytes2) PURE; + + // IDirectSoundCaptureBuffer8 methods + STDMETHOD(GetObjectInPath) (THIS_ REFGUID rguidObject, DWORD dwIndex, REFGUID rguidInterface, LPVOID *ppObject) PURE; + STDMETHOD(GetFXStatus) (DWORD dwFXCount, LPDWORD pdwFXStatus) PURE; +}; + +#define IDirectSoundCaptureBuffer8_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) +#define IDirectSoundCaptureBuffer8_AddRef(p) IUnknown_AddRef(p) +#define IDirectSoundCaptureBuffer8_Release(p) IUnknown_Release(p) + +#define IDirectSoundCaptureBuffer8_GetCaps(p,a) IDirectSoundCaptureBuffer_GetCaps(p,a) +#define IDirectSoundCaptureBuffer8_GetCurrentPosition(p,a,b) IDirectSoundCaptureBuffer_GetCurrentPosition(p,a,b) +#define IDirectSoundCaptureBuffer8_GetFormat(p,a,b,c) IDirectSoundCaptureBuffer_GetFormat(p,a,b,c) +#define IDirectSoundCaptureBuffer8_GetStatus(p,a) IDirectSoundCaptureBuffer_GetStatus(p,a) +#define IDirectSoundCaptureBuffer8_Initialize(p,a,b) IDirectSoundCaptureBuffer_Initialize(p,a,b) +#define IDirectSoundCaptureBuffer8_Lock(p,a,b,c,d,e,f,g) IDirectSoundCaptureBuffer_Lock(p,a,b,c,d,e,f,g) +#define IDirectSoundCaptureBuffer8_Start(p,a) IDirectSoundCaptureBuffer_Start(p,a) +#define IDirectSoundCaptureBuffer8_Stop(p) IDirectSoundCaptureBuffer_Stop(p)) +#define IDirectSoundCaptureBuffer8_Unlock(p,a,b,c,d) IDirectSoundCaptureBuffer_Unlock(p,a,b,c,d) + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSoundCaptureBuffer8_GetObjectInPath(p,a,b,c,d) (p)->lpVtbl->GetObjectInPath(p,a,b,c,d) +#define IDirectSoundCaptureBuffer8_GetFXStatus(p,a,b) (p)->lpVtbl->GetFXStatus(p,a,b) +#else // !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSoundCaptureBuffer8_GetObjectInPath(p,a,b,c,d) (p)->GetObjectInPath(a,b,c,d) +#define IDirectSoundCaptureBuffer8_GetFXStatus(p,a,b) (p)->GetFXStatus(a,b) +#endif // !defined(__cplusplus) || defined(CINTERFACE) + +#endif // DIRECTSOUND_VERSION >= 0x0800 + +// +// IDirectSoundNotify +// + +DEFINE_GUID(IID_IDirectSoundNotify, 0xb0210783, 0x89cd, 0x11d0, 0xaf, 0x8, 0x0, 0xa0, 0xc9, 0x25, 0xcd, 0x16); + +#undef INTERFACE +#define INTERFACE IDirectSoundNotify + +DECLARE_INTERFACE_(IDirectSoundNotify, IUnknown) +{ + // IUnknown methods + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // IDirectSoundNotify methods + STDMETHOD(SetNotificationPositions) (THIS_ DWORD dwPositionNotifies, LPCDSBPOSITIONNOTIFY pcPositionNotifies) PURE; +}; + +#define IDirectSoundNotify_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) +#define IDirectSoundNotify_AddRef(p) IUnknown_AddRef(p) +#define IDirectSoundNotify_Release(p) IUnknown_Release(p) + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSoundNotify_SetNotificationPositions(p,a,b) (p)->lpVtbl->SetNotificationPositions(p,a,b) +#else // !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSoundNotify_SetNotificationPositions(p,a,b) (p)->SetNotificationPositions(a,b) +#endif // !defined(__cplusplus) || defined(CINTERFACE) + +// +// IKsPropertySet +// + +#ifndef _IKsPropertySet_ +#define _IKsPropertySet_ + +#ifdef __cplusplus +// 'struct' not 'class' per the way DECLARE_INTERFACE_ is defined +struct IKsPropertySet; +#endif // __cplusplus + +typedef struct IKsPropertySet *LPKSPROPERTYSET; + +#define KSPROPERTY_SUPPORT_GET 0x00000001 +#define KSPROPERTY_SUPPORT_SET 0x00000002 + +DEFINE_GUID(IID_IKsPropertySet, 0x31efac30, 0x515c, 0x11d0, 0xa9, 0xaa, 0x00, 0xaa, 0x00, 0x61, 0xbe, 0x93); + +#undef INTERFACE +#define INTERFACE IKsPropertySet + +DECLARE_INTERFACE_(IKsPropertySet, IUnknown) +{ + // IUnknown methods + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // IKsPropertySet methods + STDMETHOD(Get) (THIS_ REFGUID rguidPropSet, ULONG ulId, LPVOID pInstanceData, ULONG ulInstanceLength, + LPVOID pPropertyData, ULONG ulDataLength, PULONG pulBytesReturned) PURE; + STDMETHOD(Set) (THIS_ REFGUID rguidPropSet, ULONG ulId, LPVOID pInstanceData, ULONG ulInstanceLength, + LPVOID pPropertyData, ULONG ulDataLength) PURE; + STDMETHOD(QuerySupport) (THIS_ REFGUID rguidPropSet, ULONG ulId, PULONG pulTypeSupport) PURE; +}; + +#define IKsPropertySet_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) +#define IKsPropertySet_AddRef(p) IUnknown_AddRef(p) +#define IKsPropertySet_Release(p) IUnknown_Release(p) + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IKsPropertySet_Get(p,a,b,c,d,e,f,g) (p)->lpVtbl->Get(p,a,b,c,d,e,f,g) +#define IKsPropertySet_Set(p,a,b,c,d,e,f) (p)->lpVtbl->Set(p,a,b,c,d,e,f) +#define IKsPropertySet_QuerySupport(p,a,b,c) (p)->lpVtbl->QuerySupport(p,a,b,c) +#else // !defined(__cplusplus) || defined(CINTERFACE) +#define IKsPropertySet_Get(p,a,b,c,d,e,f,g) (p)->Get(a,b,c,d,e,f,g) +#define IKsPropertySet_Set(p,a,b,c,d,e,f) (p)->Set(a,b,c,d,e,f) +#define IKsPropertySet_QuerySupport(p,a,b,c) (p)->QuerySupport(a,b,c) +#endif // !defined(__cplusplus) || defined(CINTERFACE) + +#endif // _IKsPropertySet_ + +#if DIRECTSOUND_VERSION >= 0x0800 + +// +// IDirectSoundFXGargle +// + +DEFINE_GUID(IID_IDirectSoundFXGargle, 0xd616f352, 0xd622, 0x11ce, 0xaa, 0xc5, 0x00, 0x20, 0xaf, 0x0b, 0x99, 0xa3); + +typedef struct _DSFXGargle +{ + DWORD dwRateHz; // Rate of modulation in hz + DWORD dwWaveShape; // DSFXGARGLE_WAVE_xxx +} DSFXGargle, *LPDSFXGargle; + +#define DSFXGARGLE_WAVE_TRIANGLE 0 +#define DSFXGARGLE_WAVE_SQUARE 1 + +typedef const DSFXGargle *LPCDSFXGargle; + +#define DSFXGARGLE_RATEHZ_MIN 1 +#define DSFXGARGLE_RATEHZ_MAX 1000 + +#undef INTERFACE +#define INTERFACE IDirectSoundFXGargle + +DECLARE_INTERFACE_(IDirectSoundFXGargle, IUnknown) +{ + // IUnknown methods + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // IDirectSoundFXGargle methods + STDMETHOD(SetAllParameters) (THIS_ LPCDSFXGargle pcDsFxGargle) PURE; + STDMETHOD(GetAllParameters) (THIS_ LPDSFXGargle pDsFxGargle) PURE; +}; + +#define IDirectSoundFXGargle_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) +#define IDirectSoundFXGargle_AddRef(p) IUnknown_AddRef(p) +#define IDirectSoundFXGargle_Release(p) IUnknown_Release(p) + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSoundFXGargle_SetAllParameters(p,a) (p)->lpVtbl->SetAllParameters(p,a) +#define IDirectSoundFXGargle_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a) +#else // !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSoundFXGargle_SetAllParameters(p,a) (p)->SetAllParameters(a) +#define IDirectSoundFXGargle_GetAllParameters(p,a) (p)->GetAllParameters(a) +#endif // !defined(__cplusplus) || defined(CINTERFACE) + +// +// IDirectSoundFXChorus +// + +DEFINE_GUID(IID_IDirectSoundFXChorus, 0x880842e3, 0x145f, 0x43e6, 0xa9, 0x34, 0xa7, 0x18, 0x06, 0xe5, 0x05, 0x47); + +typedef struct _DSFXChorus +{ + FLOAT fWetDryMix; + FLOAT fDepth; + FLOAT fFeedback; + FLOAT fFrequency; + LONG lWaveform; // LFO shape; DSFXCHORUS_WAVE_xxx + FLOAT fDelay; + LONG lPhase; +} DSFXChorus, *LPDSFXChorus; + +typedef const DSFXChorus *LPCDSFXChorus; + +#define DSFXCHORUS_WAVE_TRIANGLE 0 +#define DSFXCHORUS_WAVE_SIN 1 + +#define DSFXCHORUS_WETDRYMIX_MIN 0.0f +#define DSFXCHORUS_WETDRYMIX_MAX 100.0f +#define DSFXCHORUS_DEPTH_MIN 0.0f +#define DSFXCHORUS_DEPTH_MAX 100.0f +#define DSFXCHORUS_FEEDBACK_MIN -99.0f +#define DSFXCHORUS_FEEDBACK_MAX 99.0f +#define DSFXCHORUS_FREQUENCY_MIN 0.0f +#define DSFXCHORUS_FREQUENCY_MAX 10.0f +#define DSFXCHORUS_DELAY_MIN 0.0f +#define DSFXCHORUS_DELAY_MAX 20.0f +#define DSFXCHORUS_PHASE_MIN 0 +#define DSFXCHORUS_PHASE_MAX 4 + +#define DSFXCHORUS_PHASE_NEG_180 0 +#define DSFXCHORUS_PHASE_NEG_90 1 +#define DSFXCHORUS_PHASE_ZERO 2 +#define DSFXCHORUS_PHASE_90 3 +#define DSFXCHORUS_PHASE_180 4 + +#undef INTERFACE +#define INTERFACE IDirectSoundFXChorus + +DECLARE_INTERFACE_(IDirectSoundFXChorus, IUnknown) +{ + // IUnknown methods + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // IDirectSoundFXChorus methods + STDMETHOD(SetAllParameters) (THIS_ LPCDSFXChorus pcDsFxChorus) PURE; + STDMETHOD(GetAllParameters) (THIS_ LPDSFXChorus pDsFxChorus) PURE; +}; + +#define IDirectSoundFXChorus_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) +#define IDirectSoundFXChorus_AddRef(p) IUnknown_AddRef(p) +#define IDirectSoundFXChorus_Release(p) IUnknown_Release(p) + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSoundFXChorus_SetAllParameters(p,a) (p)->lpVtbl->SetAllParameters(p,a) +#define IDirectSoundFXChorus_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a) +#else // !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSoundFXChorus_SetAllParameters(p,a) (p)->SetAllParameters(a) +#define IDirectSoundFXChorus_GetAllParameters(p,a) (p)->GetAllParameters(a) +#endif // !defined(__cplusplus) || defined(CINTERFACE) + +// +// IDirectSoundFXFlanger +// + +DEFINE_GUID(IID_IDirectSoundFXFlanger, 0x903e9878, 0x2c92, 0x4072, 0x9b, 0x2c, 0xea, 0x68, 0xf5, 0x39, 0x67, 0x83); + +typedef struct _DSFXFlanger +{ + FLOAT fWetDryMix; + FLOAT fDepth; + FLOAT fFeedback; + FLOAT fFrequency; + LONG lWaveform; + FLOAT fDelay; + LONG lPhase; +} DSFXFlanger, *LPDSFXFlanger; + +typedef const DSFXFlanger *LPCDSFXFlanger; + +#define DSFXFLANGER_WAVE_TRIANGLE 0 +#define DSFXFLANGER_WAVE_SIN 1 + +#define DSFXFLANGER_WETDRYMIX_MIN 0.0f +#define DSFXFLANGER_WETDRYMIX_MAX 100.0f +#define DSFXFLANGER_FREQUENCY_MIN 0.0f +#define DSFXFLANGER_FREQUENCY_MAX 10.0f +#define DSFXFLANGER_DEPTH_MIN 0.0f +#define DSFXFLANGER_DEPTH_MAX 100.0f +#define DSFXFLANGER_PHASE_MIN 0 +#define DSFXFLANGER_PHASE_MAX 4 +#define DSFXFLANGER_FEEDBACK_MIN -99.0f +#define DSFXFLANGER_FEEDBACK_MAX 99.0f +#define DSFXFLANGER_DELAY_MIN 0.0f +#define DSFXFLANGER_DELAY_MAX 4.0f + +#define DSFXFLANGER_PHASE_NEG_180 0 +#define DSFXFLANGER_PHASE_NEG_90 1 +#define DSFXFLANGER_PHASE_ZERO 2 +#define DSFXFLANGER_PHASE_90 3 +#define DSFXFLANGER_PHASE_180 4 + +#undef INTERFACE +#define INTERFACE IDirectSoundFXFlanger + +DECLARE_INTERFACE_(IDirectSoundFXFlanger, IUnknown) +{ + // IUnknown methods + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // IDirectSoundFXFlanger methods + STDMETHOD(SetAllParameters) (THIS_ LPCDSFXFlanger pcDsFxFlanger) PURE; + STDMETHOD(GetAllParameters) (THIS_ LPDSFXFlanger pDsFxFlanger) PURE; +}; + +#define IDirectSoundFXFlanger_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) +#define IDirectSoundFXFlanger_AddRef(p) IUnknown_AddRef(p) +#define IDirectSoundFXFlanger_Release(p) IUnknown_Release(p) + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSoundFXFlanger_SetAllParameters(p,a) (p)->lpVtbl->SetAllParameters(p,a) +#define IDirectSoundFXFlanger_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a) +#else // !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSoundFXFlanger_SetAllParameters(p,a) (p)->SetAllParameters(a) +#define IDirectSoundFXFlanger_GetAllParameters(p,a) (p)->GetAllParameters(a) +#endif // !defined(__cplusplus) || defined(CINTERFACE) + +// +// IDirectSoundFXEcho +// + +DEFINE_GUID(IID_IDirectSoundFXEcho, 0x8bd28edf, 0x50db, 0x4e92, 0xa2, 0xbd, 0x44, 0x54, 0x88, 0xd1, 0xed, 0x42); + +typedef struct _DSFXEcho +{ + FLOAT fWetDryMix; + FLOAT fFeedback; + FLOAT fLeftDelay; + FLOAT fRightDelay; + LONG lPanDelay; +} DSFXEcho, *LPDSFXEcho; + +typedef const DSFXEcho *LPCDSFXEcho; + +#define DSFXECHO_WETDRYMIX_MIN 0.0f +#define DSFXECHO_WETDRYMIX_MAX 100.0f +#define DSFXECHO_FEEDBACK_MIN 0.0f +#define DSFXECHO_FEEDBACK_MAX 100.0f +#define DSFXECHO_LEFTDELAY_MIN 1.0f +#define DSFXECHO_LEFTDELAY_MAX 2000.0f +#define DSFXECHO_RIGHTDELAY_MIN 1.0f +#define DSFXECHO_RIGHTDELAY_MAX 2000.0f +#define DSFXECHO_PANDELAY_MIN 0 +#define DSFXECHO_PANDELAY_MAX 1 + +#undef INTERFACE +#define INTERFACE IDirectSoundFXEcho + +DECLARE_INTERFACE_(IDirectSoundFXEcho, IUnknown) +{ + // IUnknown methods + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // IDirectSoundFXEcho methods + STDMETHOD(SetAllParameters) (THIS_ LPCDSFXEcho pcDsFxEcho) PURE; + STDMETHOD(GetAllParameters) (THIS_ LPDSFXEcho pDsFxEcho) PURE; +}; + +#define IDirectSoundFXEcho_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) +#define IDirectSoundFXEcho_AddRef(p) IUnknown_AddRef(p) +#define IDirectSoundFXEcho_Release(p) IUnknown_Release(p) + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSoundFXEcho_SetAllParameters(p,a) (p)->lpVtbl->SetAllParameters(p,a) +#define IDirectSoundFXEcho_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a) +#else // !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSoundFXEcho_SetAllParameters(p,a) (p)->SetAllParameters(a) +#define IDirectSoundFXEcho_GetAllParameters(p,a) (p)->GetAllParameters(a) +#endif // !defined(__cplusplus) || defined(CINTERFACE) + +// +// IDirectSoundFXDistortion +// + +DEFINE_GUID(IID_IDirectSoundFXDistortion, 0x8ecf4326, 0x455f, 0x4d8b, 0xbd, 0xa9, 0x8d, 0x5d, 0x3e, 0x9e, 0x3e, 0x0b); + +typedef struct _DSFXDistortion +{ + FLOAT fGain; + FLOAT fEdge; + FLOAT fPostEQCenterFrequency; + FLOAT fPostEQBandwidth; + FLOAT fPreLowpassCutoff; +} DSFXDistortion, *LPDSFXDistortion; + +typedef const DSFXDistortion *LPCDSFXDistortion; + +#define DSFXDISTORTION_GAIN_MIN -60.0f +#define DSFXDISTORTION_GAIN_MAX 0.0f +#define DSFXDISTORTION_EDGE_MIN 0.0f +#define DSFXDISTORTION_EDGE_MAX 100.0f +#define DSFXDISTORTION_POSTEQCENTERFREQUENCY_MIN 100.0f +#define DSFXDISTORTION_POSTEQCENTERFREQUENCY_MAX 8000.0f +#define DSFXDISTORTION_POSTEQBANDWIDTH_MIN 100.0f +#define DSFXDISTORTION_POSTEQBANDWIDTH_MAX 8000.0f +#define DSFXDISTORTION_PRELOWPASSCUTOFF_MIN 100.0f +#define DSFXDISTORTION_PRELOWPASSCUTOFF_MAX 8000.0f + +#undef INTERFACE +#define INTERFACE IDirectSoundFXDistortion + +DECLARE_INTERFACE_(IDirectSoundFXDistortion, IUnknown) +{ + // IUnknown methods + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // IDirectSoundFXDistortion methods + STDMETHOD(SetAllParameters) (THIS_ LPCDSFXDistortion pcDsFxDistortion) PURE; + STDMETHOD(GetAllParameters) (THIS_ LPDSFXDistortion pDsFxDistortion) PURE; +}; + +#define IDirectSoundFXDistortion_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) +#define IDirectSoundFXDistortion_AddRef(p) IUnknown_AddRef(p) +#define IDirectSoundFXDistortion_Release(p) IUnknown_Release(p) + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSoundFXDistortion_SetAllParameters(p,a) (p)->lpVtbl->SetAllParameters(p,a) +#define IDirectSoundFXDistortion_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a) +#else // !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSoundFXDistortion_SetAllParameters(p,a) (p)->SetAllParameters(a) +#define IDirectSoundFXDistortion_GetAllParameters(p,a) (p)->GetAllParameters(a) +#endif // !defined(__cplusplus) || defined(CINTERFACE) + +// +// IDirectSoundFXCompressor +// + +DEFINE_GUID(IID_IDirectSoundFXCompressor, 0x4bbd1154, 0x62f6, 0x4e2c, 0xa1, 0x5c, 0xd3, 0xb6, 0xc4, 0x17, 0xf7, 0xa0); + +typedef struct _DSFXCompressor +{ + FLOAT fGain; + FLOAT fAttack; + FLOAT fRelease; + FLOAT fThreshold; + FLOAT fRatio; + FLOAT fPredelay; +} DSFXCompressor, *LPDSFXCompressor; + +typedef const DSFXCompressor *LPCDSFXCompressor; + +#define DSFXCOMPRESSOR_GAIN_MIN -60.0f +#define DSFXCOMPRESSOR_GAIN_MAX 60.0f +#define DSFXCOMPRESSOR_ATTACK_MIN 0.01f +#define DSFXCOMPRESSOR_ATTACK_MAX 500.0f +#define DSFXCOMPRESSOR_RELEASE_MIN 50.0f +#define DSFXCOMPRESSOR_RELEASE_MAX 3000.0f +#define DSFXCOMPRESSOR_THRESHOLD_MIN -60.0f +#define DSFXCOMPRESSOR_THRESHOLD_MAX 0.0f +#define DSFXCOMPRESSOR_RATIO_MIN 1.0f +#define DSFXCOMPRESSOR_RATIO_MAX 100.0f +#define DSFXCOMPRESSOR_PREDELAY_MIN 0.0f +#define DSFXCOMPRESSOR_PREDELAY_MAX 4.0f + +#undef INTERFACE +#define INTERFACE IDirectSoundFXCompressor + +DECLARE_INTERFACE_(IDirectSoundFXCompressor, IUnknown) +{ + // IUnknown methods + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // IDirectSoundFXCompressor methods + STDMETHOD(SetAllParameters) (THIS_ LPCDSFXCompressor pcDsFxCompressor) PURE; + STDMETHOD(GetAllParameters) (THIS_ LPDSFXCompressor pDsFxCompressor) PURE; +}; + +#define IDirectSoundFXCompressor_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) +#define IDirectSoundFXCompressor_AddRef(p) IUnknown_AddRef(p) +#define IDirectSoundFXCompressor_Release(p) IUnknown_Release(p) + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSoundFXCompressor_SetAllParameters(p,a) (p)->lpVtbl->SetAllParameters(p,a) +#define IDirectSoundFXCompressor_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a) +#else // !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSoundFXCompressor_SetAllParameters(p,a) (p)->SetAllParameters(a) +#define IDirectSoundFXCompressor_GetAllParameters(p,a) (p)->GetAllParameters(a) +#endif // !defined(__cplusplus) || defined(CINTERFACE) + +// +// IDirectSoundFXParamEq +// + +DEFINE_GUID(IID_IDirectSoundFXParamEq, 0xc03ca9fe, 0xfe90, 0x4204, 0x80, 0x78, 0x82, 0x33, 0x4c, 0xd1, 0x77, 0xda); + +typedef struct _DSFXParamEq +{ + FLOAT fCenter; + FLOAT fBandwidth; + FLOAT fGain; +} DSFXParamEq, *LPDSFXParamEq; + +typedef const DSFXParamEq *LPCDSFXParamEq; + +#define DSFXPARAMEQ_CENTER_MIN 80.0f +#define DSFXPARAMEQ_CENTER_MAX 16000.0f +#define DSFXPARAMEQ_BANDWIDTH_MIN 1.0f +#define DSFXPARAMEQ_BANDWIDTH_MAX 36.0f +#define DSFXPARAMEQ_GAIN_MIN -15.0f +#define DSFXPARAMEQ_GAIN_MAX 15.0f + +#undef INTERFACE +#define INTERFACE IDirectSoundFXParamEq + +DECLARE_INTERFACE_(IDirectSoundFXParamEq, IUnknown) +{ + // IUnknown methods + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // IDirectSoundFXParamEq methods + STDMETHOD(SetAllParameters) (THIS_ LPCDSFXParamEq pcDsFxParamEq) PURE; + STDMETHOD(GetAllParameters) (THIS_ LPDSFXParamEq pDsFxParamEq) PURE; +}; + +#define IDirectSoundFXParamEq_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) +#define IDirectSoundFXParamEq_AddRef(p) IUnknown_AddRef(p) +#define IDirectSoundFXParamEq_Release(p) IUnknown_Release(p) + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSoundFXParamEq_SetAllParameters(p,a) (p)->lpVtbl->SetAllParameters(p,a) +#define IDirectSoundFXParamEq_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a) +#else // !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSoundFXParamEq_SetAllParameters(p,a) (p)->SetAllParameters(a) +#define IDirectSoundFXParamEq_GetAllParameters(p,a) (p)->GetAllParameters(a) +#endif // !defined(__cplusplus) || defined(CINTERFACE) + +// +// IDirectSoundFXI3DL2Reverb +// + +DEFINE_GUID(IID_IDirectSoundFXI3DL2Reverb, 0x4b166a6a, 0x0d66, 0x43f3, 0x80, 0xe3, 0xee, 0x62, 0x80, 0xde, 0xe1, 0xa4); + +typedef struct _DSFXI3DL2Reverb +{ + LONG lRoom; // [-10000, 0] default: -1000 mB + LONG lRoomHF; // [-10000, 0] default: 0 mB + FLOAT flRoomRolloffFactor; // [0.0, 10.0] default: 0.0 + FLOAT flDecayTime; // [0.1, 20.0] default: 1.49s + FLOAT flDecayHFRatio; // [0.1, 2.0] default: 0.83 + LONG lReflections; // [-10000, 1000] default: -2602 mB + FLOAT flReflectionsDelay; // [0.0, 0.3] default: 0.007 s + LONG lReverb; // [-10000, 2000] default: 200 mB + FLOAT flReverbDelay; // [0.0, 0.1] default: 0.011 s + FLOAT flDiffusion; // [0.0, 100.0] default: 100.0 % + FLOAT flDensity; // [0.0, 100.0] default: 100.0 % + FLOAT flHFReference; // [20.0, 20000.0] default: 5000.0 Hz +} DSFXI3DL2Reverb, *LPDSFXI3DL2Reverb; + +typedef const DSFXI3DL2Reverb *LPCDSFXI3DL2Reverb; + +#define DSFX_I3DL2REVERB_ROOM_MIN (-10000) +#define DSFX_I3DL2REVERB_ROOM_MAX 0 +#define DSFX_I3DL2REVERB_ROOM_DEFAULT (-1000) + +#define DSFX_I3DL2REVERB_ROOMHF_MIN (-10000) +#define DSFX_I3DL2REVERB_ROOMHF_MAX 0 +#define DSFX_I3DL2REVERB_ROOMHF_DEFAULT (-100) + +#define DSFX_I3DL2REVERB_ROOMROLLOFFFACTOR_MIN 0.0f +#define DSFX_I3DL2REVERB_ROOMROLLOFFFACTOR_MAX 10.0f +#define DSFX_I3DL2REVERB_ROOMROLLOFFFACTOR_DEFAULT 0.0f + +#define DSFX_I3DL2REVERB_DECAYTIME_MIN 0.1f +#define DSFX_I3DL2REVERB_DECAYTIME_MAX 20.0f +#define DSFX_I3DL2REVERB_DECAYTIME_DEFAULT 1.49f + +#define DSFX_I3DL2REVERB_DECAYHFRATIO_MIN 0.1f +#define DSFX_I3DL2REVERB_DECAYHFRATIO_MAX 2.0f +#define DSFX_I3DL2REVERB_DECAYHFRATIO_DEFAULT 0.83f + +#define DSFX_I3DL2REVERB_REFLECTIONS_MIN (-10000) +#define DSFX_I3DL2REVERB_REFLECTIONS_MAX 1000 +#define DSFX_I3DL2REVERB_REFLECTIONS_DEFAULT (-2602) + +#define DSFX_I3DL2REVERB_REFLECTIONSDELAY_MIN 0.0f +#define DSFX_I3DL2REVERB_REFLECTIONSDELAY_MAX 0.3f +#define DSFX_I3DL2REVERB_REFLECTIONSDELAY_DEFAULT 0.007f + +#define DSFX_I3DL2REVERB_REVERB_MIN (-10000) +#define DSFX_I3DL2REVERB_REVERB_MAX 2000 +#define DSFX_I3DL2REVERB_REVERB_DEFAULT (200) + +#define DSFX_I3DL2REVERB_REVERBDELAY_MIN 0.0f +#define DSFX_I3DL2REVERB_REVERBDELAY_MAX 0.1f +#define DSFX_I3DL2REVERB_REVERBDELAY_DEFAULT 0.011f + +#define DSFX_I3DL2REVERB_DIFFUSION_MIN 0.0f +#define DSFX_I3DL2REVERB_DIFFUSION_MAX 100.0f +#define DSFX_I3DL2REVERB_DIFFUSION_DEFAULT 100.0f + +#define DSFX_I3DL2REVERB_DENSITY_MIN 0.0f +#define DSFX_I3DL2REVERB_DENSITY_MAX 100.0f +#define DSFX_I3DL2REVERB_DENSITY_DEFAULT 100.0f + +#define DSFX_I3DL2REVERB_HFREFERENCE_MIN 20.0f +#define DSFX_I3DL2REVERB_HFREFERENCE_MAX 20000.0f +#define DSFX_I3DL2REVERB_HFREFERENCE_DEFAULT 5000.0f + +#define DSFX_I3DL2REVERB_QUALITY_MIN 0 +#define DSFX_I3DL2REVERB_QUALITY_MAX 3 +#define DSFX_I3DL2REVERB_QUALITY_DEFAULT 2 + +#undef INTERFACE +#define INTERFACE IDirectSoundFXI3DL2Reverb + +DECLARE_INTERFACE_(IDirectSoundFXI3DL2Reverb, IUnknown) +{ + // IUnknown methods + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // IDirectSoundFXI3DL2Reverb methods + STDMETHOD(SetAllParameters) (THIS_ LPCDSFXI3DL2Reverb pcDsFxI3DL2Reverb) PURE; + STDMETHOD(GetAllParameters) (THIS_ LPDSFXI3DL2Reverb pDsFxI3DL2Reverb) PURE; + STDMETHOD(SetPreset) (THIS_ DWORD dwPreset) PURE; + STDMETHOD(GetPreset) (THIS_ LPDWORD pdwPreset) PURE; + STDMETHOD(SetQuality) (THIS_ LONG lQuality) PURE; + STDMETHOD(GetQuality) (THIS_ LONG *plQuality) PURE; +}; + +#define IDirectSoundFXI3DL2Reverb_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) +#define IDirectSoundFXI3DL2Reverb_AddRef(p) IUnknown_AddRef(p) +#define IDirectSoundFXI3DL2Reverb_Release(p) IUnknown_Release(p) + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSoundFXI3DL2Reverb_SetAllParameters(p,a) (p)->lpVtbl->SetAllParameters(p,a) +#define IDirectSoundFXI3DL2Reverb_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a) +#define IDirectSoundFXI3DL2Reverb_SetPreset(p,a) (p)->lpVtbl->SetPreset(p,a) +#define IDirectSoundFXI3DL2Reverb_GetPreset(p,a) (p)->lpVtbl->GetPreset(p,a) +#else // !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSoundFXI3DL2Reverb_SetAllParameters(p,a) (p)->SetAllParameters(a) +#define IDirectSoundFXI3DL2Reverb_GetAllParameters(p,a) (p)->GetAllParameters(a) +#define IDirectSoundFXI3DL2Reverb_SetPreset(p,a) (p)->SetPreset(a) +#define IDirectSoundFXI3DL2Reverb_GetPreset(p,a) (p)->GetPreset(a) +#endif // !defined(__cplusplus) || defined(CINTERFACE) + +// +// IDirectSoundFXWavesReverb +// + +DEFINE_GUID(IID_IDirectSoundFXWavesReverb,0x46858c3a,0x0dc6,0x45e3,0xb7,0x60,0xd4,0xee,0xf1,0x6c,0xb3,0x25); + +typedef struct _DSFXWavesReverb +{ + FLOAT fInGain; // [-96.0,0.0] default: 0.0 dB + FLOAT fReverbMix; // [-96.0,0.0] default: 0.0 db + FLOAT fReverbTime; // [0.001,3000.0] default: 1000.0 ms + FLOAT fHighFreqRTRatio; // [0.001,0.999] default: 0.001 +} DSFXWavesReverb, *LPDSFXWavesReverb; + +typedef const DSFXWavesReverb *LPCDSFXWavesReverb; + +#define DSFX_WAVESREVERB_INGAIN_MIN -96.0f +#define DSFX_WAVESREVERB_INGAIN_MAX 0.0f +#define DSFX_WAVESREVERB_INGAIN_DEFAULT 0.0f +#define DSFX_WAVESREVERB_REVERBMIX_MIN -96.0f +#define DSFX_WAVESREVERB_REVERBMIX_MAX 0.0f +#define DSFX_WAVESREVERB_REVERBMIX_DEFAULT 0.0f +#define DSFX_WAVESREVERB_REVERBTIME_MIN 0.001f +#define DSFX_WAVESREVERB_REVERBTIME_MAX 3000.0f +#define DSFX_WAVESREVERB_REVERBTIME_DEFAULT 1000.0f +#define DSFX_WAVESREVERB_HIGHFREQRTRATIO_MIN 0.001f +#define DSFX_WAVESREVERB_HIGHFREQRTRATIO_MAX 0.999f +#define DSFX_WAVESREVERB_HIGHFREQRTRATIO_DEFAULT 0.001f + +#undef INTERFACE +#define INTERFACE IDirectSoundFXWavesReverb + +DECLARE_INTERFACE_(IDirectSoundFXWavesReverb, IUnknown) +{ + // IUnknown methods + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // IDirectSoundFXWavesReverb methods + STDMETHOD(SetAllParameters) (THIS_ LPCDSFXWavesReverb pcDsFxWavesReverb) PURE; + STDMETHOD(GetAllParameters) (THIS_ LPDSFXWavesReverb pDsFxWavesReverb) PURE; +}; + +#define IDirectSoundFXWavesReverb_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) +#define IDirectSoundFXWavesReverb_AddRef(p) IUnknown_AddRef(p) +#define IDirectSoundFXWavesReverb_Release(p) IUnknown_Release(p) + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSoundFXWavesReverb_SetAllParameters(p,a) (p)->lpVtbl->SetAllParameters(p,a) +#define IDirectSoundFXWavesReverb_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a) +#else // !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSoundFXWavesReverb_SetAllParameters(p,a) (p)->SetAllParameters(a) +#define IDirectSoundFXWavesReverb_GetAllParameters(p,a) (p)->GetAllParameters(a) +#endif // !defined(__cplusplus) || defined(CINTERFACE) + +// +// IDirectSoundCaptureFXAec +// + +DEFINE_GUID(IID_IDirectSoundCaptureFXAec, 0xad74143d, 0x903d, 0x4ab7, 0x80, 0x66, 0x28, 0xd3, 0x63, 0x03, 0x6d, 0x65); + +typedef struct _DSCFXAec +{ + BOOL fEnable; + BOOL fNoiseFill; + DWORD dwMode; +} DSCFXAec, *LPDSCFXAec; + +typedef const DSCFXAec *LPCDSCFXAec; + +// These match the AEC_MODE_* constants in the DDK's ksmedia.h file +#define DSCFX_AEC_MODE_PASS_THROUGH 0x0 +#define DSCFX_AEC_MODE_HALF_DUPLEX 0x1 +#define DSCFX_AEC_MODE_FULL_DUPLEX 0x2 + +// These match the AEC_STATUS_* constants in ksmedia.h +#define DSCFX_AEC_STATUS_HISTORY_UNINITIALIZED 0x0 +#define DSCFX_AEC_STATUS_HISTORY_CONTINUOUSLY_CONVERGED 0x1 +#define DSCFX_AEC_STATUS_HISTORY_PREVIOUSLY_DIVERGED 0x2 +#define DSCFX_AEC_STATUS_CURRENTLY_CONVERGED 0x8 + +#undef INTERFACE +#define INTERFACE IDirectSoundCaptureFXAec + +DECLARE_INTERFACE_(IDirectSoundCaptureFXAec, IUnknown) +{ + // IUnknown methods + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // IDirectSoundCaptureFXAec methods + STDMETHOD(SetAllParameters) (THIS_ LPCDSCFXAec pDscFxAec) PURE; + STDMETHOD(GetAllParameters) (THIS_ LPDSCFXAec pDscFxAec) PURE; + STDMETHOD(GetStatus) (THIS_ PDWORD pdwStatus) PURE; + STDMETHOD(Reset) (THIS) PURE; +}; + +#define IDirectSoundCaptureFXAec_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) +#define IDirectSoundCaptureFXAec_AddRef(p) IUnknown_AddRef(p) +#define IDirectSoundCaptureFXAec_Release(p) IUnknown_Release(p) + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSoundCaptureFXAec_SetAllParameters(p,a) (p)->lpVtbl->SetAllParameters(p,a) +#define IDirectSoundCaptureFXAec_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a) +#else // !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSoundCaptureFXAec_SetAllParameters(p,a) (p)->SetAllParameters(a) +#define IDirectSoundCaptureFXAec_GetAllParameters(p,a) (p)->GetAllParameters(a) +#endif // !defined(__cplusplus) || defined(CINTERFACE) + + +// +// IDirectSoundCaptureFXNoiseSuppress +// + +DEFINE_GUID(IID_IDirectSoundCaptureFXNoiseSuppress, 0xed311e41, 0xfbae, 0x4175, 0x96, 0x25, 0xcd, 0x8, 0x54, 0xf6, 0x93, 0xca); + +typedef struct _DSCFXNoiseSuppress +{ + BOOL fEnable; +} DSCFXNoiseSuppress, *LPDSCFXNoiseSuppress; + +typedef const DSCFXNoiseSuppress *LPCDSCFXNoiseSuppress; + +#undef INTERFACE +#define INTERFACE IDirectSoundCaptureFXNoiseSuppress + +DECLARE_INTERFACE_(IDirectSoundCaptureFXNoiseSuppress, IUnknown) +{ + // IUnknown methods + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // IDirectSoundCaptureFXNoiseSuppress methods + STDMETHOD(SetAllParameters) (THIS_ LPCDSCFXNoiseSuppress pcDscFxNoiseSuppress) PURE; + STDMETHOD(GetAllParameters) (THIS_ LPDSCFXNoiseSuppress pDscFxNoiseSuppress) PURE; + STDMETHOD(Reset) (THIS) PURE; +}; + +#define IDirectSoundCaptureFXNoiseSuppress_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) +#define IDirectSoundCaptureFXNoiseSuppress_AddRef(p) IUnknown_AddRef(p) +#define IDirectSoundCaptureFXNoiseSuppress_Release(p) IUnknown_Release(p) + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSoundCaptureFXNoiseSuppress_SetAllParameters(p,a) (p)->lpVtbl->SetAllParameters(p,a) +#define IDirectSoundCaptureFXNoiseSuppress_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a) +#else // !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSoundCaptureFXNoiseSuppress_SetAllParameters(p,a) (p)->SetAllParameters(a) +#define IDirectSoundCaptureFXNoiseSuppress_GetAllParameters(p,a) (p)->GetAllParameters(a) +#endif // !defined(__cplusplus) || defined(CINTERFACE) + + +// +// IDirectSoundFullDuplex +// + +#ifndef _IDirectSoundFullDuplex_ +#define _IDirectSoundFullDuplex_ + +#ifdef __cplusplus +// 'struct' not 'class' per the way DECLARE_INTERFACE_ is defined +struct IDirectSoundFullDuplex; +#endif // __cplusplus + +typedef struct IDirectSoundFullDuplex *LPDIRECTSOUNDFULLDUPLEX; + +DEFINE_GUID(IID_IDirectSoundFullDuplex, 0xedcb4c7a, 0xdaab, 0x4216, 0xa4, 0x2e, 0x6c, 0x50, 0x59, 0x6d, 0xdc, 0x1d); + +#undef INTERFACE +#define INTERFACE IDirectSoundFullDuplex + +DECLARE_INTERFACE_(IDirectSoundFullDuplex, IUnknown) +{ + // IUnknown methods + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // IDirectSoundFullDuplex methods + STDMETHOD(Initialize) (THIS_ LPCGUID pCaptureGuid, LPCGUID pRenderGuid, LPCDSCBUFFERDESC lpDscBufferDesc, LPCDSBUFFERDESC lpDsBufferDesc, HWND hWnd, DWORD dwLevel, LPLPDIRECTSOUNDCAPTUREBUFFER8 lplpDirectSoundCaptureBuffer8, LPLPDIRECTSOUNDBUFFER8 lplpDirectSoundBuffer8) PURE; +}; + +#define IDirectSoundFullDuplex_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) +#define IDirectSoundFullDuplex_AddRef(p) IUnknown_AddRef(p) +#define IDirectSoundFullDuplex_Release(p) IUnknown_Release(p) + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSoundFullDuplex_Initialize(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->Initialize(p,a,b,c,d,e,f,g,h) +#else // !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSoundFullDuplex_Initialize(p,a,b,c,d,e,f,g,h) (p)->Initialize(a,b,c,d,e,f,g,h) +#endif // !defined(__cplusplus) || defined(CINTERFACE) + +#endif // _IDirectSoundFullDuplex_ + +#endif // DIRECTSOUND_VERSION >= 0x0800 + +// +// Return Codes +// + +// The function completed successfully +#define DS_OK S_OK + +// The call succeeded, but we had to substitute the 3D algorithm +#define DS_NO_VIRTUALIZATION MAKE_HRESULT(0, _FACDS, 10) + +// The call failed because resources (such as a priority level) +// were already being used by another caller +#define DSERR_ALLOCATED MAKE_DSHRESULT(10) + +// The control (vol, pan, etc.) requested by the caller is not available +#define DSERR_CONTROLUNAVAIL MAKE_DSHRESULT(30) + +// An invalid parameter was passed to the returning function +#define DSERR_INVALIDPARAM E_INVALIDARG + +// This call is not valid for the current state of this object +#define DSERR_INVALIDCALL MAKE_DSHRESULT(50) + +// An undetermined error occurred inside the DirectSound subsystem +#define DSERR_GENERIC E_FAIL + +// The caller does not have the priority level required for the function to +// succeed +#define DSERR_PRIOLEVELNEEDED MAKE_DSHRESULT(70) + +// Not enough free memory is available to complete the operation +#define DSERR_OUTOFMEMORY E_OUTOFMEMORY + +// The specified WAVE format is not supported +#define DSERR_BADFORMAT MAKE_DSHRESULT(100) + +// The function called is not supported at this time +#define DSERR_UNSUPPORTED E_NOTIMPL + +// No sound driver is available for use +#define DSERR_NODRIVER MAKE_DSHRESULT(120) + +// This object is already initialized +#define DSERR_ALREADYINITIALIZED MAKE_DSHRESULT(130) + +// This object does not support aggregation +#define DSERR_NOAGGREGATION CLASS_E_NOAGGREGATION + +// The buffer memory has been lost, and must be restored +#define DSERR_BUFFERLOST MAKE_DSHRESULT(150) + +// Another app has a higher priority level, preventing this call from +// succeeding +#define DSERR_OTHERAPPHASPRIO MAKE_DSHRESULT(160) + +// This object has not been initialized +#define DSERR_UNINITIALIZED MAKE_DSHRESULT(170) + +// The requested COM interface is not available +#define DSERR_NOINTERFACE E_NOINTERFACE + +// Access is denied +#define DSERR_ACCESSDENIED E_ACCESSDENIED + +// Tried to create a DSBCAPS_CTRLFX buffer shorter than DSBSIZE_FX_MIN milliseconds +#define DSERR_BUFFERTOOSMALL MAKE_DSHRESULT(180) + +// Attempt to use DirectSound 8 functionality on an older DirectSound object +#define DSERR_DS8_REQUIRED MAKE_DSHRESULT(190) + +// A circular loop of send effects was detected +#define DSERR_SENDLOOP MAKE_DSHRESULT(200) + +// The GUID specified in an audiopath file does not match a valid MIXIN buffer +#define DSERR_BADSENDBUFFERGUID MAKE_DSHRESULT(210) + +// The object requested was not found (numerically equal to DMUS_E_NOT_FOUND) +#define DSERR_OBJECTNOTFOUND MAKE_DSHRESULT(4449) + +// The effects requested could not be found on the system, or they were found +// but in the wrong order, or in the wrong hardware/software locations. +#define DSERR_FXUNAVAILABLE MAKE_DSHRESULT(220) + +// +// Flags +// + +#define DSCAPS_PRIMARYMONO 0x00000001 +#define DSCAPS_PRIMARYSTEREO 0x00000002 +#define DSCAPS_PRIMARY8BIT 0x00000004 +#define DSCAPS_PRIMARY16BIT 0x00000008 +#define DSCAPS_CONTINUOUSRATE 0x00000010 +#define DSCAPS_EMULDRIVER 0x00000020 +#define DSCAPS_CERTIFIED 0x00000040 +#define DSCAPS_SECONDARYMONO 0x00000100 +#define DSCAPS_SECONDARYSTEREO 0x00000200 +#define DSCAPS_SECONDARY8BIT 0x00000400 +#define DSCAPS_SECONDARY16BIT 0x00000800 + +#define DSSCL_NORMAL 0x00000001 +#define DSSCL_PRIORITY 0x00000002 +#define DSSCL_EXCLUSIVE 0x00000003 +#define DSSCL_WRITEPRIMARY 0x00000004 + +#define DSSPEAKER_DIRECTOUT 0x00000000 +#define DSSPEAKER_HEADPHONE 0x00000001 +#define DSSPEAKER_MONO 0x00000002 +#define DSSPEAKER_QUAD 0x00000003 +#define DSSPEAKER_STEREO 0x00000004 +#define DSSPEAKER_SURROUND 0x00000005 +#define DSSPEAKER_5POINT1 0x00000006 +#define DSSPEAKER_7POINT1 0x00000007 + +#define DSSPEAKER_GEOMETRY_MIN 0x00000005 // 5 degrees +#define DSSPEAKER_GEOMETRY_NARROW 0x0000000A // 10 degrees +#define DSSPEAKER_GEOMETRY_WIDE 0x00000014 // 20 degrees +#define DSSPEAKER_GEOMETRY_MAX 0x000000B4 // 180 degrees + +#define DSSPEAKER_COMBINED(c, g) ((DWORD)(((BYTE)(c)) | ((DWORD)((BYTE)(g))) << 16)) +#define DSSPEAKER_CONFIG(a) ((BYTE)(a)) +#define DSSPEAKER_GEOMETRY(a) ((BYTE)(((DWORD)(a) >> 16) & 0x00FF)) + +#define DSBCAPS_PRIMARYBUFFER 0x00000001 +#define DSBCAPS_STATIC 0x00000002 +#define DSBCAPS_LOCHARDWARE 0x00000004 +#define DSBCAPS_LOCSOFTWARE 0x00000008 +#define DSBCAPS_CTRL3D 0x00000010 +#define DSBCAPS_CTRLFREQUENCY 0x00000020 +#define DSBCAPS_CTRLPAN 0x00000040 +#define DSBCAPS_CTRLVOLUME 0x00000080 +#define DSBCAPS_CTRLPOSITIONNOTIFY 0x00000100 +#define DSBCAPS_CTRLFX 0x00000200 +#define DSBCAPS_STICKYFOCUS 0x00004000 +#define DSBCAPS_GLOBALFOCUS 0x00008000 +#define DSBCAPS_GETCURRENTPOSITION2 0x00010000 +#define DSBCAPS_MUTE3DATMAXDISTANCE 0x00020000 +#define DSBCAPS_LOCDEFER 0x00040000 + +#define DSBPLAY_LOOPING 0x00000001 +#define DSBPLAY_LOCHARDWARE 0x00000002 +#define DSBPLAY_LOCSOFTWARE 0x00000004 +#define DSBPLAY_TERMINATEBY_TIME 0x00000008 +#define DSBPLAY_TERMINATEBY_DISTANCE 0x000000010 +#define DSBPLAY_TERMINATEBY_PRIORITY 0x000000020 + +#define DSBSTATUS_PLAYING 0x00000001 +#define DSBSTATUS_BUFFERLOST 0x00000002 +#define DSBSTATUS_LOOPING 0x00000004 +#define DSBSTATUS_LOCHARDWARE 0x00000008 +#define DSBSTATUS_LOCSOFTWARE 0x00000010 +#define DSBSTATUS_TERMINATED 0x00000020 + +#define DSBLOCK_FROMWRITECURSOR 0x00000001 +#define DSBLOCK_ENTIREBUFFER 0x00000002 + +#define DSBFREQUENCY_ORIGINAL 0 +#define DSBFREQUENCY_MIN 100 +#if DIRECTSOUND_VERSION >= 0x0900 +#define DSBFREQUENCY_MAX 200000 +#else +#define DSBFREQUENCY_MAX 100000 +#endif + +#define DSBPAN_LEFT -10000 +#define DSBPAN_CENTER 0 +#define DSBPAN_RIGHT 10000 + +#define DSBVOLUME_MIN -10000 +#define DSBVOLUME_MAX 0 + +#define DSBSIZE_MIN 4 +#define DSBSIZE_MAX 0x0FFFFFFF +#define DSBSIZE_FX_MIN 150 // NOTE: Milliseconds, not bytes + +#define DS3DMODE_NORMAL 0x00000000 +#define DS3DMODE_HEADRELATIVE 0x00000001 +#define DS3DMODE_DISABLE 0x00000002 + +#define DS3D_IMMEDIATE 0x00000000 +#define DS3D_DEFERRED 0x00000001 + +#define DS3D_MINDISTANCEFACTOR FLT_MIN +#define DS3D_MAXDISTANCEFACTOR FLT_MAX +#define DS3D_DEFAULTDISTANCEFACTOR 1.0f + +#define DS3D_MINROLLOFFFACTOR 0.0f +#define DS3D_MAXROLLOFFFACTOR 10.0f +#define DS3D_DEFAULTROLLOFFFACTOR 1.0f + +#define DS3D_MINDOPPLERFACTOR 0.0f +#define DS3D_MAXDOPPLERFACTOR 10.0f +#define DS3D_DEFAULTDOPPLERFACTOR 1.0f + +#define DS3D_DEFAULTMINDISTANCE 1.0f +#define DS3D_DEFAULTMAXDISTANCE 1000000000.0f + +#define DS3D_MINCONEANGLE 0 +#define DS3D_MAXCONEANGLE 360 +#define DS3D_DEFAULTCONEANGLE 360 + +#define DS3D_DEFAULTCONEOUTSIDEVOLUME DSBVOLUME_MAX + +// IDirectSoundCapture attributes + +#define DSCCAPS_EMULDRIVER DSCAPS_EMULDRIVER +#define DSCCAPS_CERTIFIED DSCAPS_CERTIFIED +#define DSCCAPS_MULTIPLECAPTURE 0x00000001 + +// IDirectSoundCaptureBuffer attributes + +#define DSCBCAPS_WAVEMAPPED 0x80000000 + +#if DIRECTSOUND_VERSION >= 0x0800 +#define DSCBCAPS_CTRLFX 0x00000200 +#endif + + +#define DSCBLOCK_ENTIREBUFFER 0x00000001 + +#define DSCBSTATUS_CAPTURING 0x00000001 +#define DSCBSTATUS_LOOPING 0x00000002 + +#define DSCBSTART_LOOPING 0x00000001 + +#define DSBPN_OFFSETSTOP 0xFFFFFFFF + +#define DS_CERTIFIED 0x00000000 +#define DS_UNCERTIFIED 0x00000001 + + +// +// Flags for the I3DL2 effects +// + +// +// I3DL2 Material Presets +// + +enum +{ + DSFX_I3DL2_MATERIAL_PRESET_SINGLEWINDOW, + DSFX_I3DL2_MATERIAL_PRESET_DOUBLEWINDOW, + DSFX_I3DL2_MATERIAL_PRESET_THINDOOR, + DSFX_I3DL2_MATERIAL_PRESET_THICKDOOR, + DSFX_I3DL2_MATERIAL_PRESET_WOODWALL, + DSFX_I3DL2_MATERIAL_PRESET_BRICKWALL, + DSFX_I3DL2_MATERIAL_PRESET_STONEWALL, + DSFX_I3DL2_MATERIAL_PRESET_CURTAIN +}; + +#define I3DL2_MATERIAL_PRESET_SINGLEWINDOW -2800,0.71f +#define I3DL2_MATERIAL_PRESET_DOUBLEWINDOW -5000,0.40f +#define I3DL2_MATERIAL_PRESET_THINDOOR -1800,0.66f +#define I3DL2_MATERIAL_PRESET_THICKDOOR -4400,0.64f +#define I3DL2_MATERIAL_PRESET_WOODWALL -4000,0.50f +#define I3DL2_MATERIAL_PRESET_BRICKWALL -5000,0.60f +#define I3DL2_MATERIAL_PRESET_STONEWALL -6000,0.68f +#define I3DL2_MATERIAL_PRESET_CURTAIN -1200,0.15f + +enum +{ + DSFX_I3DL2_ENVIRONMENT_PRESET_DEFAULT, + DSFX_I3DL2_ENVIRONMENT_PRESET_GENERIC, + DSFX_I3DL2_ENVIRONMENT_PRESET_PADDEDCELL, + DSFX_I3DL2_ENVIRONMENT_PRESET_ROOM, + DSFX_I3DL2_ENVIRONMENT_PRESET_BATHROOM, + DSFX_I3DL2_ENVIRONMENT_PRESET_LIVINGROOM, + DSFX_I3DL2_ENVIRONMENT_PRESET_STONEROOM, + DSFX_I3DL2_ENVIRONMENT_PRESET_AUDITORIUM, + DSFX_I3DL2_ENVIRONMENT_PRESET_CONCERTHALL, + DSFX_I3DL2_ENVIRONMENT_PRESET_CAVE, + DSFX_I3DL2_ENVIRONMENT_PRESET_ARENA, + DSFX_I3DL2_ENVIRONMENT_PRESET_HANGAR, + DSFX_I3DL2_ENVIRONMENT_PRESET_CARPETEDHALLWAY, + DSFX_I3DL2_ENVIRONMENT_PRESET_HALLWAY, + DSFX_I3DL2_ENVIRONMENT_PRESET_STONECORRIDOR, + DSFX_I3DL2_ENVIRONMENT_PRESET_ALLEY, + DSFX_I3DL2_ENVIRONMENT_PRESET_FOREST, + DSFX_I3DL2_ENVIRONMENT_PRESET_CITY, + DSFX_I3DL2_ENVIRONMENT_PRESET_MOUNTAINS, + DSFX_I3DL2_ENVIRONMENT_PRESET_QUARRY, + DSFX_I3DL2_ENVIRONMENT_PRESET_PLAIN, + DSFX_I3DL2_ENVIRONMENT_PRESET_PARKINGLOT, + DSFX_I3DL2_ENVIRONMENT_PRESET_SEWERPIPE, + DSFX_I3DL2_ENVIRONMENT_PRESET_UNDERWATER, + DSFX_I3DL2_ENVIRONMENT_PRESET_SMALLROOM, + DSFX_I3DL2_ENVIRONMENT_PRESET_MEDIUMROOM, + DSFX_I3DL2_ENVIRONMENT_PRESET_LARGEROOM, + DSFX_I3DL2_ENVIRONMENT_PRESET_MEDIUMHALL, + DSFX_I3DL2_ENVIRONMENT_PRESET_LARGEHALL, + DSFX_I3DL2_ENVIRONMENT_PRESET_PLATE +}; + +// +// I3DL2 Reverberation Presets Values +// + +#define I3DL2_ENVIRONMENT_PRESET_DEFAULT -1000, -100, 0.0f, 1.49f, 0.83f, -2602, 0.007f, 200, 0.011f, 100.0f, 100.0f, 5000.0f +#define I3DL2_ENVIRONMENT_PRESET_GENERIC -1000, -100, 0.0f, 1.49f, 0.83f, -2602, 0.007f, 200, 0.011f, 100.0f, 100.0f, 5000.0f +#define I3DL2_ENVIRONMENT_PRESET_PADDEDCELL -1000,-6000, 0.0f, 0.17f, 0.10f, -1204, 0.001f, 207, 0.002f, 100.0f, 100.0f, 5000.0f +#define I3DL2_ENVIRONMENT_PRESET_ROOM -1000, -454, 0.0f, 0.40f, 0.83f, -1646, 0.002f, 53, 0.003f, 100.0f, 100.0f, 5000.0f +#define I3DL2_ENVIRONMENT_PRESET_BATHROOM -1000,-1200, 0.0f, 1.49f, 0.54f, -370, 0.007f, 1030, 0.011f, 100.0f, 60.0f, 5000.0f +#define I3DL2_ENVIRONMENT_PRESET_LIVINGROOM -1000,-6000, 0.0f, 0.50f, 0.10f, -1376, 0.003f, -1104, 0.004f, 100.0f, 100.0f, 5000.0f +#define I3DL2_ENVIRONMENT_PRESET_STONEROOM -1000, -300, 0.0f, 2.31f, 0.64f, -711, 0.012f, 83, 0.017f, 100.0f, 100.0f, 5000.0f +#define I3DL2_ENVIRONMENT_PRESET_AUDITORIUM -1000, -476, 0.0f, 4.32f, 0.59f, -789, 0.020f, -289, 0.030f, 100.0f, 100.0f, 5000.0f +#define I3DL2_ENVIRONMENT_PRESET_CONCERTHALL -1000, -500, 0.0f, 3.92f, 0.70f, -1230, 0.020f, -2, 0.029f, 100.0f, 100.0f, 5000.0f +#define I3DL2_ENVIRONMENT_PRESET_CAVE -1000, 0, 0.0f, 2.91f, 1.30f, -602, 0.015f, -302, 0.022f, 100.0f, 100.0f, 5000.0f +#define I3DL2_ENVIRONMENT_PRESET_ARENA -1000, -698, 0.0f, 7.24f, 0.33f, -1166, 0.020f, 16, 0.030f, 100.0f, 100.0f, 5000.0f +#define I3DL2_ENVIRONMENT_PRESET_HANGAR -1000,-1000, 0.0f,10.05f, 0.23f, -602, 0.020f, 198, 0.030f, 100.0f, 100.0f, 5000.0f +#define I3DL2_ENVIRONMENT_PRESET_CARPETEDHALLWAY -1000,-4000, 0.0f, 0.30f, 0.10f, -1831, 0.002f, -1630, 0.030f, 100.0f, 100.0f, 5000.0f +#define I3DL2_ENVIRONMENT_PRESET_HALLWAY -1000, -300, 0.0f, 1.49f, 0.59f, -1219, 0.007f, 441, 0.011f, 100.0f, 100.0f, 5000.0f +#define I3DL2_ENVIRONMENT_PRESET_STONECORRIDOR -1000, -237, 0.0f, 2.70f, 0.79f, -1214, 0.013f, 395, 0.020f, 100.0f, 100.0f, 5000.0f +#define I3DL2_ENVIRONMENT_PRESET_ALLEY -1000, -270, 0.0f, 1.49f, 0.86f, -1204, 0.007f, -4, 0.011f, 100.0f, 100.0f, 5000.0f +#define I3DL2_ENVIRONMENT_PRESET_FOREST -1000,-3300, 0.0f, 1.49f, 0.54f, -2560, 0.162f, -613, 0.088f, 79.0f, 100.0f, 5000.0f +#define I3DL2_ENVIRONMENT_PRESET_CITY -1000, -800, 0.0f, 1.49f, 0.67f, -2273, 0.007f, -2217, 0.011f, 50.0f, 100.0f, 5000.0f +#define I3DL2_ENVIRONMENT_PRESET_MOUNTAINS -1000,-2500, 0.0f, 1.49f, 0.21f, -2780, 0.300f, -2014, 0.100f, 27.0f, 100.0f, 5000.0f +#define I3DL2_ENVIRONMENT_PRESET_QUARRY -1000,-1000, 0.0f, 1.49f, 0.83f,-10000, 0.061f, 500, 0.025f, 100.0f, 100.0f, 5000.0f +#define I3DL2_ENVIRONMENT_PRESET_PLAIN -1000,-2000, 0.0f, 1.49f, 0.50f, -2466, 0.179f, -2514, 0.100f, 21.0f, 100.0f, 5000.0f +#define I3DL2_ENVIRONMENT_PRESET_PARKINGLOT -1000, 0, 0.0f, 1.65f, 1.50f, -1363, 0.008f, -1153, 0.012f, 100.0f, 100.0f, 5000.0f +#define I3DL2_ENVIRONMENT_PRESET_SEWERPIPE -1000,-1000, 0.0f, 2.81f, 0.14f, 429, 0.014f, 648, 0.021f, 80.0f, 60.0f, 5000.0f +#define I3DL2_ENVIRONMENT_PRESET_UNDERWATER -1000,-4000, 0.0f, 1.49f, 0.10f, -449, 0.007f, 1700, 0.011f, 100.0f, 100.0f, 5000.0f + +// +// Examples simulating 'musical' reverb presets +// +// Name Decay time Description +// Small Room 1.1s A small size room with a length of 5m or so. +// Medium Room 1.3s A medium size room with a length of 10m or so. +// Large Room 1.5s A large size room suitable for live performances. +// Medium Hall 1.8s A medium size concert hall. +// Large Hall 1.8s A large size concert hall suitable for a full orchestra. +// Plate 1.3s A plate reverb simulation. +// + +#define I3DL2_ENVIRONMENT_PRESET_SMALLROOM -1000, -600, 0.0f, 1.10f, 0.83f, -400, 0.005f, 500, 0.010f, 100.0f, 100.0f, 5000.0f +#define I3DL2_ENVIRONMENT_PRESET_MEDIUMROOM -1000, -600, 0.0f, 1.30f, 0.83f, -1000, 0.010f, -200, 0.020f, 100.0f, 100.0f, 5000.0f +#define I3DL2_ENVIRONMENT_PRESET_LARGEROOM -1000, -600, 0.0f, 1.50f, 0.83f, -1600, 0.020f, -1000, 0.040f, 100.0f, 100.0f, 5000.0f +#define I3DL2_ENVIRONMENT_PRESET_MEDIUMHALL -1000, -600, 0.0f, 1.80f, 0.70f, -1300, 0.015f, -800, 0.030f, 100.0f, 100.0f, 5000.0f +#define I3DL2_ENVIRONMENT_PRESET_LARGEHALL -1000, -600, 0.0f, 1.80f, 0.70f, -2000, 0.030f, -1400, 0.060f, 100.0f, 100.0f, 5000.0f +#define I3DL2_ENVIRONMENT_PRESET_PLATE -1000, -200, 0.0f, 1.30f, 0.90f, 0, 0.002f, 0, 0.010f, 100.0f, 75.0f, 5000.0f + +// +// DirectSound3D Algorithms +// + +// Default DirectSound3D algorithm {00000000-0000-0000-0000-000000000000} +#define DS3DALG_DEFAULT GUID_NULL + +// No virtualization (Pan3D) {C241333F-1C1B-11d2-94F5-00C04FC28ACA} +DEFINE_GUID(DS3DALG_NO_VIRTUALIZATION, 0xc241333f, 0x1c1b, 0x11d2, 0x94, 0xf5, 0x0, 0xc0, 0x4f, 0xc2, 0x8a, 0xca); + +// High-quality HRTF algorithm {C2413340-1C1B-11d2-94F5-00C04FC28ACA} +DEFINE_GUID(DS3DALG_HRTF_FULL, 0xc2413340, 0x1c1b, 0x11d2, 0x94, 0xf5, 0x0, 0xc0, 0x4f, 0xc2, 0x8a, 0xca); + +// Lower-quality HRTF algorithm {C2413342-1C1B-11d2-94F5-00C04FC28ACA} +DEFINE_GUID(DS3DALG_HRTF_LIGHT, 0xc2413342, 0x1c1b, 0x11d2, 0x94, 0xf5, 0x0, 0xc0, 0x4f, 0xc2, 0x8a, 0xca); + + +#if DIRECTSOUND_VERSION >= 0x0800 + +// +// DirectSound Internal Effect Algorithms +// + + +// Gargle {DAFD8210-5711-4B91-9FE3-F75B7AE279BF} +DEFINE_GUID(GUID_DSFX_STANDARD_GARGLE, 0xdafd8210, 0x5711, 0x4b91, 0x9f, 0xe3, 0xf7, 0x5b, 0x7a, 0xe2, 0x79, 0xbf); + +// Chorus {EFE6629C-81F7-4281-BD91-C9D604A95AF6} +DEFINE_GUID(GUID_DSFX_STANDARD_CHORUS, 0xefe6629c, 0x81f7, 0x4281, 0xbd, 0x91, 0xc9, 0xd6, 0x04, 0xa9, 0x5a, 0xf6); + +// Flanger {EFCA3D92-DFD8-4672-A603-7420894BAD98} +DEFINE_GUID(GUID_DSFX_STANDARD_FLANGER, 0xefca3d92, 0xdfd8, 0x4672, 0xa6, 0x03, 0x74, 0x20, 0x89, 0x4b, 0xad, 0x98); + +// Echo/Delay {EF3E932C-D40B-4F51-8CCF-3F98F1B29D5D} +DEFINE_GUID(GUID_DSFX_STANDARD_ECHO, 0xef3e932c, 0xd40b, 0x4f51, 0x8c, 0xcf, 0x3f, 0x98, 0xf1, 0xb2, 0x9d, 0x5d); + +// Distortion {EF114C90-CD1D-484E-96E5-09CFAF912A21} +DEFINE_GUID(GUID_DSFX_STANDARD_DISTORTION, 0xef114c90, 0xcd1d, 0x484e, 0x96, 0xe5, 0x09, 0xcf, 0xaf, 0x91, 0x2a, 0x21); + +// Compressor/Limiter {EF011F79-4000-406D-87AF-BFFB3FC39D57} +DEFINE_GUID(GUID_DSFX_STANDARD_COMPRESSOR, 0xef011f79, 0x4000, 0x406d, 0x87, 0xaf, 0xbf, 0xfb, 0x3f, 0xc3, 0x9d, 0x57); + +// Parametric Equalization {120CED89-3BF4-4173-A132-3CB406CF3231} +DEFINE_GUID(GUID_DSFX_STANDARD_PARAMEQ, 0x120ced89, 0x3bf4, 0x4173, 0xa1, 0x32, 0x3c, 0xb4, 0x06, 0xcf, 0x32, 0x31); + +// I3DL2 Environmental Reverberation: Reverb (Listener) Effect {EF985E71-D5C7-42D4-BA4D-2D073E2E96F4} +DEFINE_GUID(GUID_DSFX_STANDARD_I3DL2REVERB, 0xef985e71, 0xd5c7, 0x42d4, 0xba, 0x4d, 0x2d, 0x07, 0x3e, 0x2e, 0x96, 0xf4); + +// Waves Reverberation {87FC0268-9A55-4360-95AA-004A1D9DE26C} +DEFINE_GUID(GUID_DSFX_WAVES_REVERB, 0x87fc0268, 0x9a55, 0x4360, 0x95, 0xaa, 0x00, 0x4a, 0x1d, 0x9d, 0xe2, 0x6c); + +// +// DirectSound Capture Effect Algorithms +// + + +// Acoustic Echo Canceller {BF963D80-C559-11D0-8A2B-00A0C9255AC1} +// Matches KSNODETYPE_ACOUSTIC_ECHO_CANCEL in ksmedia.h +DEFINE_GUID(GUID_DSCFX_CLASS_AEC, 0xBF963D80L, 0xC559, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1); + +// Microsoft AEC {CDEBB919-379A-488a-8765-F53CFD36DE40} +DEFINE_GUID(GUID_DSCFX_MS_AEC, 0xcdebb919, 0x379a, 0x488a, 0x87, 0x65, 0xf5, 0x3c, 0xfd, 0x36, 0xde, 0x40); + +// System AEC {1C22C56D-9879-4f5b-A389-27996DDC2810} +DEFINE_GUID(GUID_DSCFX_SYSTEM_AEC, 0x1c22c56d, 0x9879, 0x4f5b, 0xa3, 0x89, 0x27, 0x99, 0x6d, 0xdc, 0x28, 0x10); + +// Noise Supression {E07F903F-62FD-4e60-8CDD-DEA7236665B5} +// Matches KSNODETYPE_NOISE_SUPPRESS in post Windows ME DDK's ksmedia.h +DEFINE_GUID(GUID_DSCFX_CLASS_NS, 0xe07f903f, 0x62fd, 0x4e60, 0x8c, 0xdd, 0xde, 0xa7, 0x23, 0x66, 0x65, 0xb5); + +// Microsoft Noise Suppresion {11C5C73B-66E9-4ba1-A0BA-E814C6EED92D} +DEFINE_GUID(GUID_DSCFX_MS_NS, 0x11c5c73b, 0x66e9, 0x4ba1, 0xa0, 0xba, 0xe8, 0x14, 0xc6, 0xee, 0xd9, 0x2d); + +// System Noise Suppresion {5AB0882E-7274-4516-877D-4EEE99BA4FD0} +DEFINE_GUID(GUID_DSCFX_SYSTEM_NS, 0x5ab0882e, 0x7274, 0x4516, 0x87, 0x7d, 0x4e, 0xee, 0x99, 0xba, 0x4f, 0xd0); + +#endif // DIRECTSOUND_VERSION >= 0x0800 + +#endif // __DSOUND_INCLUDED__ + + + +#ifdef __cplusplus +}; +#endif // __cplusplus + + diff --git a/videoInputSrcAndDemos/libs/DShow/Include/dsschedule.h b/videoInputSrcAndDemos/libs/DShow/Include/dsschedule.h index cc21b1c..a81c576 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/dsschedule.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/dsschedule.h @@ -1,128 +1,128 @@ -//------------------------------------------------------------------------------ -// File: DSSchedule.h (replaces DirectX 8's schedule.h) -// -// Desc: DirectShow base classes. -// -// Copyright (c) Microsoft Corporation. All rights reserved. -//------------------------------------------------------------------------------ - - -#ifndef __CAMSchedule__ -#define __CAMSchedule__ - -class CAMSchedule : private CBaseObject -{ -public: - virtual ~CAMSchedule(); - // ev is the event we should fire if the advise time needs re-evaluating - CAMSchedule( HANDLE ev ); - - DWORD GetAdviseCount(); - REFERENCE_TIME GetNextAdviseTime(); - - // We need a method for derived classes to add advise packets, we return the cookie - DWORD_PTR AddAdvisePacket( const REFERENCE_TIME & time1, const REFERENCE_TIME & time2, HANDLE h, BOOL periodic ); - // And a way to cancel - HRESULT Unadvise(DWORD_PTR dwAdviseCookie); - - // Tell us the time please, and we'll dispatch the expired events. We return the time of the next event. - // NB: The time returned will be "useless" if you start adding extra Advises. But that's the problem of - // whoever is using this helper class (typically a clock). - REFERENCE_TIME Advise( const REFERENCE_TIME & rtTime ); - - // Get the event handle which will be set if advise time requires re-evaluation. - HANDLE GetEvent() const { return m_ev; } - -private: - // We define the nodes that will be used in our singly linked list - // of advise packets. The list is ordered by time, with the - // elements that will expire first at the front. - class CAdvisePacket - { - public: - CAdvisePacket() - {} - - CAdvisePacket * m_next; - DWORD_PTR m_dwAdviseCookie; - REFERENCE_TIME m_rtEventTime; // Time at which event should be set - REFERENCE_TIME m_rtPeriod; // Periodic time - HANDLE m_hNotify; // Handle to event or semephore - BOOL m_bPeriodic; // TRUE => Periodic event - - CAdvisePacket( CAdvisePacket * next, LONGLONG time ) : m_next(next), m_rtEventTime(time) - {} - - void InsertAfter( CAdvisePacket * p ) - { - p->m_next = m_next; - m_next = p; - } - - int IsZ() const // That is, is it the node that represents the end of the list - { return m_next == 0; } - - CAdvisePacket * RemoveNext() - { - CAdvisePacket *const next = m_next; - CAdvisePacket *const new_next = next->m_next; - m_next = new_next; - return next; - } - - void DeleteNext() - { - delete RemoveNext(); - } - - CAdvisePacket * Next() const - { - CAdvisePacket * result = m_next; - if (result->IsZ()) result = 0; - return result; - } - - DWORD_PTR Cookie() const - { return m_dwAdviseCookie; } - }; - - // Structure is: - // head -> elmt1 -> elmt2 -> z -> null - // So an empty list is: head -> z -> null - // Having head & z as links makes insertaion, - // deletion and shunting much easier. - CAdvisePacket head, z; // z is both a tail and a sentry - - volatile DWORD_PTR m_dwNextCookie; // Strictly increasing - volatile DWORD m_dwAdviseCount; // Number of elements on list - - CCritSec m_Serialize; - - // AddAdvisePacket: adds the packet, returns the cookie (0 if failed) - DWORD_PTR AddAdvisePacket( CAdvisePacket * pPacket ); - // Event that we should set if the packed added above will be the next to fire. - const HANDLE m_ev; - - // A Shunt is where we have changed the first element in the - // list and want it re-evaluating (i.e. repositioned) in - // the list. - void ShuntHead(); - - // Rather than delete advise packets, we cache them for future use - CAdvisePacket * m_pAdviseCache; - DWORD m_dwCacheCount; - enum { dwCacheMax = 5 }; // Don't bother caching more than five - - void Delete( CAdvisePacket * pLink );// This "Delete" will cache the Link - -// Attributes and methods for debugging -public: -#ifdef DEBUG - void DumpLinkedList(); -#else - void DumpLinkedList() {} -#endif - -}; - -#endif // __CAMSchedule__ +//------------------------------------------------------------------------------ +// File: DSSchedule.h (replaces DirectX 8's schedule.h) +// +// Desc: DirectShow base classes. +// +// Copyright (c) Microsoft Corporation. All rights reserved. +//------------------------------------------------------------------------------ + + +#ifndef __CAMSchedule__ +#define __CAMSchedule__ + +class CAMSchedule : private CBaseObject +{ +public: + virtual ~CAMSchedule(); + // ev is the event we should fire if the advise time needs re-evaluating + CAMSchedule( HANDLE ev ); + + DWORD GetAdviseCount(); + REFERENCE_TIME GetNextAdviseTime(); + + // We need a method for derived classes to add advise packets, we return the cookie + DWORD_PTR AddAdvisePacket( const REFERENCE_TIME & time1, const REFERENCE_TIME & time2, HANDLE h, BOOL periodic ); + // And a way to cancel + HRESULT Unadvise(DWORD_PTR dwAdviseCookie); + + // Tell us the time please, and we'll dispatch the expired events. We return the time of the next event. + // NB: The time returned will be "useless" if you start adding extra Advises. But that's the problem of + // whoever is using this helper class (typically a clock). + REFERENCE_TIME Advise( const REFERENCE_TIME & rtTime ); + + // Get the event handle which will be set if advise time requires re-evaluation. + HANDLE GetEvent() const { return m_ev; } + +private: + // We define the nodes that will be used in our singly linked list + // of advise packets. The list is ordered by time, with the + // elements that will expire first at the front. + class CAdvisePacket + { + public: + CAdvisePacket() + {} + + CAdvisePacket * m_next; + DWORD_PTR m_dwAdviseCookie; + REFERENCE_TIME m_rtEventTime; // Time at which event should be set + REFERENCE_TIME m_rtPeriod; // Periodic time + HANDLE m_hNotify; // Handle to event or semephore + BOOL m_bPeriodic; // TRUE => Periodic event + + CAdvisePacket( CAdvisePacket * next, LONGLONG time ) : m_next(next), m_rtEventTime(time) + {} + + void InsertAfter( CAdvisePacket * p ) + { + p->m_next = m_next; + m_next = p; + } + + int IsZ() const // That is, is it the node that represents the end of the list + { return m_next == 0; } + + CAdvisePacket * RemoveNext() + { + CAdvisePacket *const next = m_next; + CAdvisePacket *const new_next = next->m_next; + m_next = new_next; + return next; + } + + void DeleteNext() + { + delete RemoveNext(); + } + + CAdvisePacket * Next() const + { + CAdvisePacket * result = m_next; + if (result->IsZ()) result = 0; + return result; + } + + DWORD_PTR Cookie() const + { return m_dwAdviseCookie; } + }; + + // Structure is: + // head -> elmt1 -> elmt2 -> z -> null + // So an empty list is: head -> z -> null + // Having head & z as links makes insertaion, + // deletion and shunting much easier. + CAdvisePacket head, z; // z is both a tail and a sentry + + volatile DWORD_PTR m_dwNextCookie; // Strictly increasing + volatile DWORD m_dwAdviseCount; // Number of elements on list + + CCritSec m_Serialize; + + // AddAdvisePacket: adds the packet, returns the cookie (0 if failed) + DWORD_PTR AddAdvisePacket( CAdvisePacket * pPacket ); + // Event that we should set if the packed added above will be the next to fire. + const HANDLE m_ev; + + // A Shunt is where we have changed the first element in the + // list and want it re-evaluating (i.e. repositioned) in + // the list. + void ShuntHead(); + + // Rather than delete advise packets, we cache them for future use + CAdvisePacket * m_pAdviseCache; + DWORD m_dwCacheCount; + enum { dwCacheMax = 5 }; // Don't bother caching more than five + + void Delete( CAdvisePacket * pLink );// This "Delete" will cache the Link + +// Attributes and methods for debugging +public: +#ifdef DEBUG + void DumpLinkedList(); +#else + void DumpLinkedList() {} +#endif + +}; + +#endif // __CAMSchedule__ diff --git a/videoInputSrcAndDemos/libs/DShow/Include/dv.h b/videoInputSrcAndDemos/libs/DShow/Include/dv.h index 7885cc5..d0fe048 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/dv.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/dv.h @@ -1,62 +1,62 @@ -//------------------------------------------------------------------------------ -// File: DV.h -// -// Desc: DV typedefs and defines -// -// Copyright (c) 1997-2001, Microsoft Corporation. All rights reserved. -//------------------------------------------------------------------------------ - - -#ifndef _DV_H_ -#define _DV_H_ - -#define DV_DVSD_NTSC_FRAMESIZE 120000L -#define DV_DVSD_PAL_FRAMESIZE 144000L - -#define DV_SMCHN 0x0000e000 -#define DV_AUDIOMODE 0x00000f00 -#define DV_AUDIOSMP 0x38000000 - -#define DV_AUDIOQU 0x07000000 -#define DV_NTSCPAL 0x00200000 -#define DV_STYPE 0x001f0000 - - -//There are NTSC or PAL DV camcorders -#define DV_NTSC 0 -#define DV_PAL 1 - -//DV camcorder can output sd/hd/sl -#define DV_SD 0x00 -#define DV_HD 0x01 -#define DV_SL 0x02 - -//user can choice 12 bits or 16 bits audio from DV camcorder -#define DV_CAP_AUD16Bits 0x00 -#define DV_CAP_AUD12Bits 0x01 - -#define SIZE_DVINFO 0x20 - -typedef struct Tag_DVAudInfo -{ - BYTE bAudStyle[2]; - - //LSB 6 bits for starting DIF sequence number - //MSB 2 bits: 0 for mon. 1: stereo in one 5/6 DIF sequences, 2: stereo audio in both 5/6 DIF sequences - //example: 0x00: mon, audio in first 5/6 DIF sequence - // 0x05: mon, audio in 2nd 5 DIF sequence - // 0x15: stereo, audio only in 2nd 5 DIF sequence - // 0x10: stereo, audio only in 1st 5/6 DIF sequence - // 0x20: stereo, left ch in 1st 5/6 DIF sequence, right ch in 2nd 5/6 DIF sequence - // 0x26: stereo, rightch in 1st 6 DIF sequence, left ch in 2nd 6 DIF sequence - BYTE bAudQu[2]; //qbits, only support 12, 16, - - BYTE bNumAudPin; //how many pins - WORD wAvgSamplesPerPinPerFrm[2]; //sample size for one audio pin in one frame(which has 10 or 12 DIF sequence) - WORD wBlkMode; //45 for NTSC, 54 for PAL - WORD wDIFMode; //5 for NTSC, 6 for PAL - WORD wBlkDiv; //15 for NTSC, 18 for PAL - -} DVAudInfo; - -#endif // _DV_H_ +//------------------------------------------------------------------------------ +// File: DV.h +// +// Desc: DV typedefs and defines +// +// Copyright (c) 1997-2001, Microsoft Corporation. All rights reserved. +//------------------------------------------------------------------------------ + + +#ifndef _DV_H_ +#define _DV_H_ + +#define DV_DVSD_NTSC_FRAMESIZE 120000L +#define DV_DVSD_PAL_FRAMESIZE 144000L + +#define DV_SMCHN 0x0000e000 +#define DV_AUDIOMODE 0x00000f00 +#define DV_AUDIOSMP 0x38000000 + +#define DV_AUDIOQU 0x07000000 +#define DV_NTSCPAL 0x00200000 +#define DV_STYPE 0x001f0000 + + +//There are NTSC or PAL DV camcorders +#define DV_NTSC 0 +#define DV_PAL 1 + +//DV camcorder can output sd/hd/sl +#define DV_SD 0x00 +#define DV_HD 0x01 +#define DV_SL 0x02 + +//user can choice 12 bits or 16 bits audio from DV camcorder +#define DV_CAP_AUD16Bits 0x00 +#define DV_CAP_AUD12Bits 0x01 + +#define SIZE_DVINFO 0x20 + +typedef struct Tag_DVAudInfo +{ + BYTE bAudStyle[2]; + + //LSB 6 bits for starting DIF sequence number + //MSB 2 bits: 0 for mon. 1: stereo in one 5/6 DIF sequences, 2: stereo audio in both 5/6 DIF sequences + //example: 0x00: mon, audio in first 5/6 DIF sequence + // 0x05: mon, audio in 2nd 5 DIF sequence + // 0x15: stereo, audio only in 2nd 5 DIF sequence + // 0x10: stereo, audio only in 1st 5/6 DIF sequence + // 0x20: stereo, left ch in 1st 5/6 DIF sequence, right ch in 2nd 5/6 DIF sequence + // 0x26: stereo, rightch in 1st 6 DIF sequence, left ch in 2nd 6 DIF sequence + BYTE bAudQu[2]; //qbits, only support 12, 16, + + BYTE bNumAudPin; //how many pins + WORD wAvgSamplesPerPinPerFrm[2]; //sample size for one audio pin in one frame(which has 10 or 12 DIF sequence) + WORD wBlkMode; //45 for NTSC, 54 for PAL + WORD wDIFMode; //5 for NTSC, 6 for PAL + WORD wBlkDiv; //15 for NTSC, 18 for PAL + +} DVAudInfo; + +#endif // _DV_H_ diff --git a/videoInputSrcAndDemos/libs/DShow/Include/dvdevcod.h b/videoInputSrcAndDemos/libs/DShow/Include/dvdevcod.h index 82f43d0..15b4793 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/dvdevcod.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/dvdevcod.h @@ -1,363 +1,363 @@ -//------------------------------------------------------------------------------ -// File: DVDevCod.h -// -// Desc: List of standard DVD-Video event codes and the expected params. -// -// Copyright (c) 1992 - 2001, Microsoft Corporation. All rights reserved. -//------------------------------------------------------------------------------ - -#ifndef __DVDEVCOD__ -#define __DVDEVCOD__ - - -#define EC_DVDBASE 0x0100 - -#ifndef EXCLUDE_DVDEVCODE_ENUMS - -typedef enum _tagDVD_ERROR { - DVD_ERROR_Unexpected=1, // Something unexpected happened, perhaps content - // is incorrectly authored. Playback is stopped. - DVD_ERROR_CopyProtectFail=2, // Key exchange for DVD copy protection failed. - // Playback is stopped. - DVD_ERROR_InvalidDVD1_0Disc=3, // DVD-Video disc is incorrectly authored for v1.0 - // of spec. Playback is stopped. - DVD_ERROR_InvalidDiscRegion=4, // The Disc cannot be played because the disc is not - // authored to play in system region. - // The region mismatch may be fixable by - // changing the system region with dvdrgn.exe - DVD_ERROR_LowParentalLevel=5, // Player parental level is lower than the lowest parental - // level available in the DVD content. Playback is stopped. - DVD_ERROR_MacrovisionFail=6, // Macrovision Distribution Failed. - // Playback is stopped. - DVD_ERROR_IncompatibleSystemAndDecoderRegions=7, - // No discs can be played because the system region - // does not match the decoder region. - DVD_ERROR_IncompatibleDiscAndDecoderRegions=8 - // The disc cannot be played because the disc is - // not authored to be played in the decoder's region -} DVD_ERROR; - -typedef enum _tagDVD_WARNING { - DVD_WARNING_InvalidDVD1_0Disc=1,// DVD-Video disc is incorrectly authored. Playback - // can continue, but unexpected behavior may occur. - DVD_WARNING_FormatNotSupported=2,// A decoder would not support the current format. Playback - // of a stream (audio, video of SP) may not function. - // lParam2 contains the stream type (see AM_DVD_STREAM_FLAGS) - DVD_WARNING_IllegalNavCommand=3,// The internal DVD navigation command processor attempted to - // process an illegal command. - DVD_WARNING_Open = 4, // File Open Failed - DVD_WARNING_Seek = 5, // File Seek Failed - DVD_WARNING_Read = 6 // File Read Failed -} DVD_WARNING; - -typedef enum _tagDVD_PB_STOPPED { - DVD_PB_STOPPED_Other=0, // The navigator stopped the playback (no reason available). - DVD_PB_STOPPED_NoBranch=1, // The nav completed the current pgc and there was no more video and - // did not find any other branching instruction for subsequent playback. - DVD_PB_STOPPED_NoFirstPlayDomain =2, // The disc does not contain an initial startup program. - DVD_PB_STOPPED_StopCommand = 3, // The app issued a stop() command or a stop command was authored on the disc. - DVD_PB_STOPPED_Reset=4, // The navigator was reset to the start of the disc (using ResetOnStop). - DVD_PB_STOPPED_DiscEjected=5, // The disc was ejected. - DVD_PB_STOPPED_IllegalNavCommand = 6, // An illegal nav command prevented playback from continuing. - DVD_PB_STOPPED_PlayPeriodAutoStop = 7, // PlayPeriod completed - DVD_PB_STOPPED_PlayChapterAutoStop = 8, // PlayChapter completed - DVD_PB_STOPPED_ParentalFailure = 9, // A parental level failure prevented playback - DVD_PB_STOPPED_RegionFailure = 10, // A region failure prevented playback - DVD_PB_STOPPED_MacrovisionFailure = 11, // A Macrovision failure prevented playback. - DVD_PB_STOPPED_DiscReadError = 12, // A read error prevented playback. - DVD_PB_STOPPED_CopyProtectFailure = 13 // Copy protection failure. -} DVD_PB_STOPPED; - - -#endif - -// DVD-Video event codes -// ====================== -// -// All DVD-Video event are always passed on to the application, and are -// never processed by the filter graph - - -#define EC_DVD_DOMAIN_CHANGE (EC_DVDBASE + 0x01) -// Parameters: ( DWORD, void ) -// lParam1 is enum DVD_DOMAIN, and indicates the player's new domain -// -// Raised from following domains: all -// -// Signaled when ever the DVD player changes domains. - - -#define EC_DVD_TITLE_CHANGE (EC_DVDBASE + 0x02) -// Parameters: ( DWORD, void ) -// lParam1 is the new title number. -// -// Raised from following domains: DVD_DOMAIN_Title -// -// Indicates when the current title number changes. Title numbers -// range 1 to 99. This indicates the TTN, which is the title number -// with respect to the whole disc, not the VTS_TTN which is the title -// number with respect to just a current VTS. - - -#define EC_DVD_CHAPTER_START (EC_DVDBASE + 0x03) -// Parameters: ( DWORD, void ) -// lParam1 is the new chapter number (which is the program number for -// One_Sequential_PGC_Titles). -// -// Raised from following domains: DVD_DOMAIN_Title -// -// Signales that DVD player started playback of a new program in the Title -// domain. This is only signaled for One_Sequential_PGC_Titles. - - -#define EC_DVD_AUDIO_STREAM_CHANGE (EC_DVDBASE + 0x04) -// Parameters: ( DWORD, void ) -// lParam1 is the new user audio stream number. -// -// Raised from following domains: all -// -// Signaled when ever the current user audio stream number changes for the main -// title. This can be changed automatically with a navigation command on disc -// as well as through IDVDAnnexJ. -// Audio stream numbers range from 0 to 7. Stream 0xffffffff -// indicates that no stream is selected. - -#define EC_DVD_SUBPICTURE_STREAM_CHANGE (EC_DVDBASE + 0x05) -// Parameters: ( DWORD, BOOL ) -// lParam1 is the new user subpicture stream number. -// lParam2 is the subpicture's on/off state (TRUE if on) -// -// Raised from following domains: all -// -// Signaled when ever the current user subpicture stream number changes for the main -// title. This can be changed automatically with a navigation command on disc -// as well as through IDVDAnnexJ. -// Subpicture stream numbers range from 0 to 31. Stream 0xffffffff -// indicates that no stream is selected. - -#define EC_DVD_ANGLE_CHANGE (EC_DVDBASE + 0x06) -// Parameters: ( DWORD, DWORD ) -// lParam1 is the number of available angles. -// lParam2 is the current user angle number. -// -// Raised from following domains: all -// -// Signaled when ever either -// a) the number of available angles changes, or -// b) the current user angle number changes. -// Current angle number can be changed automatically with navigation command -// on disc as well as through IDVDAnnexJ. -// When the number of available angles is 1, the current video is not multiangle. -// Angle numbers range from 1 to 9. - - -#define EC_DVD_BUTTON_CHANGE (EC_DVDBASE + 0x07) -// Parameters: ( DWORD, DWORD ) -// lParam1 is the number of available buttons. -// lParam2 is the current selected button number. -// -// Raised from following domains: all -// -// Signaled when ever either -// a) the number of available buttons changes, or -// b) the current selected button number changes. -// The current selected button can be changed automatically with navigation -// commands on disc as well as through IDVDAnnexJ. -// Button numbers range from 1 to 36. Selected button number 0 implies that -// no button is selected. Note that these button numbers enumerate all -// available button numbers, and do not always correspond to button numbers -// used for IDVDAnnexJ::ButtonSelectAndActivate since only a subset of buttons -// may be activated with ButtonSelectAndActivate. - - -#define EC_DVD_VALID_UOPS_CHANGE (EC_DVDBASE + 0x08) -// Parameters: ( DWORD, void ) -// lParam1 is a VALID_UOP_SOMTHING_OR_OTHER bit-field stuct which indicates -// which IDVDAnnexJ commands are explicitly disable by the DVD disc. -// -// Raised from following domains: all -// -// Signaled when ever the available set of IDVDAnnexJ methods changes. This -// only indicates which operations are explicited disabled by the content on -// the DVD disc, and does not guarentee that it is valid to call methods -// which are not disabled. For example, if no buttons are currently present, -// IDVDAnnexJ::ButtonActivate() won't work, even though the buttons are not -// explicitly disabled. - - -#define EC_DVD_STILL_ON (EC_DVDBASE + 0x09) -// Parameters: ( BOOL, DWORD ) -// lParam1 == 0 --> buttons are available, so StillOff won't work -// lParam1 == 1 --> no buttons available, so StillOff will work -// lParam2 indicates the number of seconds the still will last, with 0xffffffff -// indicating an infinite still (wait till button or StillOff selected). -// -// Raised from following domains: all -// -// Signaled at the beginning of any still: PGC still, Cell Still, or VOBU Still. -// Note that all combinations of buttons and still are possible (buttons on with -// still on, buttons on with still off, button off with still on, button off -// with still off). - -#define EC_DVD_STILL_OFF (EC_DVDBASE + 0x0a) -// Parameters: ( void, void ) -// -// Indicating that any still that is currently active -// has been released. -// -// Raised from following domains: all -// -// Signaled at the end of any still: PGC still, Cell Still, or VOBU Still. -// - -#define EC_DVD_CURRENT_TIME (EC_DVDBASE + 0x0b) -// Parameters: ( DWORD, BOOL ) -// lParam1 is a DVD_TIMECODE which indicates the current -// playback time code in a BCD HH:MM:SS:FF format. -// lParam2 == 0 --> time code is 25 frames/sec -// lParam2 == 1 --> time code is 30 frames/sec (non-drop). -// lParam2 == 2 --> time code is invalid (current playback time -// cannot be determined for current title) -// -// Raised from following domains: DVD_DOMAIN_Title -// -// Signaled at the beginning of every VOBU, which occurs every .4 to 1.0 sec. -// This is only signaled for One_Sequential_PGC_Titles. - - -#define EC_DVD_ERROR (EC_DVDBASE + 0x0c) -// Parameters: ( DWORD, void) -// lParam1 is an enum DVD_ERROR which notifies the app of some error condition. -// -// Raised from following domains: all -// - -#define EC_DVD_WARNING (EC_DVDBASE + 0x0d) -// Parameters: ( DWORD, DWORD) -// lParam1 is an enum DVD_WARNING which notifies the app of some warning condition. -// lParam2 contains more specific information about the warning (warning dependent) -// -// Raised from following domains: all -// - -#define EC_DVD_CHAPTER_AUTOSTOP (EC_DVDBASE + 0x0e) -// Parameters: (BOOL, void) -// lParam1 is a BOOL which indicates the reason for the cancellation of ChapterPlayAutoStop -// lParam1 == 0 indicates successful completion of ChapterPlayAutoStop -// lParam1 == 1 indicates that ChapterPlayAutoStop is being cancelled as a result of another -// IDVDControl call or the end of content has been reached & no more chapters -// can be played. -// Indicating that playback is stopped as a result of a call -// to IDVDControl::ChapterPlayAutoStop() -// -// Raised from following domains : DVD_DOMAIN_TITLE -// - -#define EC_DVD_NO_FP_PGC (EC_DVDBASE + 0x0f) -// Parameters : (void, void) -// -// Raised from the following domains : FP_DOM -// -// Indicates that the DVD disc does not have a FP_PGC (First Play Program Chain) -// and the DVD Navigator will not automatically load any PGC and start playback. -// - -#define EC_DVD_PLAYBACK_RATE_CHANGE (EC_DVDBASE + 0x10) -// Parameters : (LONG, void) -// lParam1 is a LONG indicating the new playback rate. -// lParam1 < 0 indicates reverse playback mode. -// lParam1 > 0 indicates forward playback mode -// Value of lParam1 is the actual playback rate multiplied by 10000. -// i.e. lParam1 = rate * 10000 -// -// Raised from the following domains : TT_DOM -// -// Indicates that a rate change in playback has been initiated and the parameter -// lParam1 indicates the new playback rate that is being used. -// - -#define EC_DVD_PARENTAL_LEVEL_CHANGE (EC_DVDBASE + 0x11) -// Parameters : (LONG, void) -// lParam1 is a LONG indicating the new parental level. -// -// Raised from the following domains : VMGM_DOM -// -// Indicates that an authored Nav command has changed the parental level -// setting in the player. -// - -#define EC_DVD_PLAYBACK_STOPPED (EC_DVDBASE + 0x12) -// Parameters : (DWORD, void) -// -// Raised from the following domains : All Domains -// -// Indicates that playback has been stopped as the Navigator has completed -// playback of the pgc and did not find any other branching instruction for -// subsequent playback. -// -// The DWORD returns the reason for the completion of the playback. See -// The DVD_PB_STOPPED enumeration for details. -// - -#define EC_DVD_ANGLES_AVAILABLE (EC_DVDBASE + 0x13) -// Parameters : (BOOL, void) -// lParam1 == 0 indicates that playback is not in an angle block and angles are -// not available -// lParam1 == 1 indicates that an angle block is being played back and angle changes -// can be performed. -// -// Indicates whether an angle block is being played and if angle changes can be -// performed. However, angle changes are not restricted to angle blocks and the -// manifestation of the angle change can be seen only in an angle block. - -#define EC_DVD_PLAYPERIOD_AUTOSTOP (EC_DVDBASE + 0x14) -// Parameters: (void, void) -// Sent when the PlayPeriodInTitle completes or is cancelled -// -// Raised from following domains : DVD_DOMAIN_TITLE -// - -#define EC_DVD_BUTTON_AUTO_ACTIVATED (EC_DVDBASE + 0x15) -// Parameters: (DWORD button, void) -// Sent when a button is automatically activated -// -// Raised from following domains : DVD_DOMAIN_MENU -// - -#define EC_DVD_CMD_START (EC_DVDBASE + 0x16) -// Parameters: (CmdID, HRESULT) -// Sent when a command begins -// - -#define EC_DVD_CMD_END (EC_DVDBASE + 0x17) -// Parameters: (CmdID, HRESULT) -// Sent when a command completes -// - -#define EC_DVD_DISC_EJECTED (EC_DVDBASE + 0x18) -// Parameters: none -// Sent when the nav detects that a disc was ejected and stops the playback -// The app does not need to take any action to stop the playback. -// - -#define EC_DVD_DISC_INSERTED (EC_DVDBASE + 0x19) -// Parameters: none -// Sent when the nav detects that a disc was inserted and the nav begins playback -// The app does not need to take any action to start the playback. -// - -#define EC_DVD_CURRENT_HMSF_TIME (EC_DVDBASE + 0x1a) -// Parameters: ( ULONG, ULONG ) -// lParam2 contains a union of the DVD_TIMECODE_FLAGS -// lParam1 contains a DVD_HMSF_TIMECODE. Assign lParam1 to a ULONG then cast the -// ULONG as a DVD_HMSF_TIMECODE to use its values. -// -// Raised from following domains: DVD_DOMAIN_Title -// -// Signaled at the beginning of every VOBU, which occurs every .4 to 1.0 sec. - -#define EC_DVD_KARAOKE_MODE (EC_DVDBASE + 0x1b) -// Parameters: ( BOOL, reserved ) -// lParam1 is either TRUE (a karaoke track is being played) or FALSE (no karaoke data is being played). -// -#endif // __DVDEVCOD__ +//------------------------------------------------------------------------------ +// File: DVDevCod.h +// +// Desc: List of standard DVD-Video event codes and the expected params. +// +// Copyright (c) 1992 - 2001, Microsoft Corporation. All rights reserved. +//------------------------------------------------------------------------------ + +#ifndef __DVDEVCOD__ +#define __DVDEVCOD__ + + +#define EC_DVDBASE 0x0100 + +#ifndef EXCLUDE_DVDEVCODE_ENUMS + +typedef enum _tagDVD_ERROR { + DVD_ERROR_Unexpected=1, // Something unexpected happened, perhaps content + // is incorrectly authored. Playback is stopped. + DVD_ERROR_CopyProtectFail=2, // Key exchange for DVD copy protection failed. + // Playback is stopped. + DVD_ERROR_InvalidDVD1_0Disc=3, // DVD-Video disc is incorrectly authored for v1.0 + // of spec. Playback is stopped. + DVD_ERROR_InvalidDiscRegion=4, // The Disc cannot be played because the disc is not + // authored to play in system region. + // The region mismatch may be fixable by + // changing the system region with dvdrgn.exe + DVD_ERROR_LowParentalLevel=5, // Player parental level is lower than the lowest parental + // level available in the DVD content. Playback is stopped. + DVD_ERROR_MacrovisionFail=6, // Macrovision Distribution Failed. + // Playback is stopped. + DVD_ERROR_IncompatibleSystemAndDecoderRegions=7, + // No discs can be played because the system region + // does not match the decoder region. + DVD_ERROR_IncompatibleDiscAndDecoderRegions=8 + // The disc cannot be played because the disc is + // not authored to be played in the decoder's region +} DVD_ERROR; + +typedef enum _tagDVD_WARNING { + DVD_WARNING_InvalidDVD1_0Disc=1,// DVD-Video disc is incorrectly authored. Playback + // can continue, but unexpected behavior may occur. + DVD_WARNING_FormatNotSupported=2,// A decoder would not support the current format. Playback + // of a stream (audio, video of SP) may not function. + // lParam2 contains the stream type (see AM_DVD_STREAM_FLAGS) + DVD_WARNING_IllegalNavCommand=3,// The internal DVD navigation command processor attempted to + // process an illegal command. + DVD_WARNING_Open = 4, // File Open Failed + DVD_WARNING_Seek = 5, // File Seek Failed + DVD_WARNING_Read = 6 // File Read Failed +} DVD_WARNING; + +typedef enum _tagDVD_PB_STOPPED { + DVD_PB_STOPPED_Other=0, // The navigator stopped the playback (no reason available). + DVD_PB_STOPPED_NoBranch=1, // The nav completed the current pgc and there was no more video and + // did not find any other branching instruction for subsequent playback. + DVD_PB_STOPPED_NoFirstPlayDomain =2, // The disc does not contain an initial startup program. + DVD_PB_STOPPED_StopCommand = 3, // The app issued a stop() command or a stop command was authored on the disc. + DVD_PB_STOPPED_Reset=4, // The navigator was reset to the start of the disc (using ResetOnStop). + DVD_PB_STOPPED_DiscEjected=5, // The disc was ejected. + DVD_PB_STOPPED_IllegalNavCommand = 6, // An illegal nav command prevented playback from continuing. + DVD_PB_STOPPED_PlayPeriodAutoStop = 7, // PlayPeriod completed + DVD_PB_STOPPED_PlayChapterAutoStop = 8, // PlayChapter completed + DVD_PB_STOPPED_ParentalFailure = 9, // A parental level failure prevented playback + DVD_PB_STOPPED_RegionFailure = 10, // A region failure prevented playback + DVD_PB_STOPPED_MacrovisionFailure = 11, // A Macrovision failure prevented playback. + DVD_PB_STOPPED_DiscReadError = 12, // A read error prevented playback. + DVD_PB_STOPPED_CopyProtectFailure = 13 // Copy protection failure. +} DVD_PB_STOPPED; + + +#endif + +// DVD-Video event codes +// ====================== +// +// All DVD-Video event are always passed on to the application, and are +// never processed by the filter graph + + +#define EC_DVD_DOMAIN_CHANGE (EC_DVDBASE + 0x01) +// Parameters: ( DWORD, void ) +// lParam1 is enum DVD_DOMAIN, and indicates the player's new domain +// +// Raised from following domains: all +// +// Signaled when ever the DVD player changes domains. + + +#define EC_DVD_TITLE_CHANGE (EC_DVDBASE + 0x02) +// Parameters: ( DWORD, void ) +// lParam1 is the new title number. +// +// Raised from following domains: DVD_DOMAIN_Title +// +// Indicates when the current title number changes. Title numbers +// range 1 to 99. This indicates the TTN, which is the title number +// with respect to the whole disc, not the VTS_TTN which is the title +// number with respect to just a current VTS. + + +#define EC_DVD_CHAPTER_START (EC_DVDBASE + 0x03) +// Parameters: ( DWORD, void ) +// lParam1 is the new chapter number (which is the program number for +// One_Sequential_PGC_Titles). +// +// Raised from following domains: DVD_DOMAIN_Title +// +// Signales that DVD player started playback of a new program in the Title +// domain. This is only signaled for One_Sequential_PGC_Titles. + + +#define EC_DVD_AUDIO_STREAM_CHANGE (EC_DVDBASE + 0x04) +// Parameters: ( DWORD, void ) +// lParam1 is the new user audio stream number. +// +// Raised from following domains: all +// +// Signaled when ever the current user audio stream number changes for the main +// title. This can be changed automatically with a navigation command on disc +// as well as through IDVDAnnexJ. +// Audio stream numbers range from 0 to 7. Stream 0xffffffff +// indicates that no stream is selected. + +#define EC_DVD_SUBPICTURE_STREAM_CHANGE (EC_DVDBASE + 0x05) +// Parameters: ( DWORD, BOOL ) +// lParam1 is the new user subpicture stream number. +// lParam2 is the subpicture's on/off state (TRUE if on) +// +// Raised from following domains: all +// +// Signaled when ever the current user subpicture stream number changes for the main +// title. This can be changed automatically with a navigation command on disc +// as well as through IDVDAnnexJ. +// Subpicture stream numbers range from 0 to 31. Stream 0xffffffff +// indicates that no stream is selected. + +#define EC_DVD_ANGLE_CHANGE (EC_DVDBASE + 0x06) +// Parameters: ( DWORD, DWORD ) +// lParam1 is the number of available angles. +// lParam2 is the current user angle number. +// +// Raised from following domains: all +// +// Signaled when ever either +// a) the number of available angles changes, or +// b) the current user angle number changes. +// Current angle number can be changed automatically with navigation command +// on disc as well as through IDVDAnnexJ. +// When the number of available angles is 1, the current video is not multiangle. +// Angle numbers range from 1 to 9. + + +#define EC_DVD_BUTTON_CHANGE (EC_DVDBASE + 0x07) +// Parameters: ( DWORD, DWORD ) +// lParam1 is the number of available buttons. +// lParam2 is the current selected button number. +// +// Raised from following domains: all +// +// Signaled when ever either +// a) the number of available buttons changes, or +// b) the current selected button number changes. +// The current selected button can be changed automatically with navigation +// commands on disc as well as through IDVDAnnexJ. +// Button numbers range from 1 to 36. Selected button number 0 implies that +// no button is selected. Note that these button numbers enumerate all +// available button numbers, and do not always correspond to button numbers +// used for IDVDAnnexJ::ButtonSelectAndActivate since only a subset of buttons +// may be activated with ButtonSelectAndActivate. + + +#define EC_DVD_VALID_UOPS_CHANGE (EC_DVDBASE + 0x08) +// Parameters: ( DWORD, void ) +// lParam1 is a VALID_UOP_SOMTHING_OR_OTHER bit-field stuct which indicates +// which IDVDAnnexJ commands are explicitly disable by the DVD disc. +// +// Raised from following domains: all +// +// Signaled when ever the available set of IDVDAnnexJ methods changes. This +// only indicates which operations are explicited disabled by the content on +// the DVD disc, and does not guarentee that it is valid to call methods +// which are not disabled. For example, if no buttons are currently present, +// IDVDAnnexJ::ButtonActivate() won't work, even though the buttons are not +// explicitly disabled. + + +#define EC_DVD_STILL_ON (EC_DVDBASE + 0x09) +// Parameters: ( BOOL, DWORD ) +// lParam1 == 0 --> buttons are available, so StillOff won't work +// lParam1 == 1 --> no buttons available, so StillOff will work +// lParam2 indicates the number of seconds the still will last, with 0xffffffff +// indicating an infinite still (wait till button or StillOff selected). +// +// Raised from following domains: all +// +// Signaled at the beginning of any still: PGC still, Cell Still, or VOBU Still. +// Note that all combinations of buttons and still are possible (buttons on with +// still on, buttons on with still off, button off with still on, button off +// with still off). + +#define EC_DVD_STILL_OFF (EC_DVDBASE + 0x0a) +// Parameters: ( void, void ) +// +// Indicating that any still that is currently active +// has been released. +// +// Raised from following domains: all +// +// Signaled at the end of any still: PGC still, Cell Still, or VOBU Still. +// + +#define EC_DVD_CURRENT_TIME (EC_DVDBASE + 0x0b) +// Parameters: ( DWORD, BOOL ) +// lParam1 is a DVD_TIMECODE which indicates the current +// playback time code in a BCD HH:MM:SS:FF format. +// lParam2 == 0 --> time code is 25 frames/sec +// lParam2 == 1 --> time code is 30 frames/sec (non-drop). +// lParam2 == 2 --> time code is invalid (current playback time +// cannot be determined for current title) +// +// Raised from following domains: DVD_DOMAIN_Title +// +// Signaled at the beginning of every VOBU, which occurs every .4 to 1.0 sec. +// This is only signaled for One_Sequential_PGC_Titles. + + +#define EC_DVD_ERROR (EC_DVDBASE + 0x0c) +// Parameters: ( DWORD, void) +// lParam1 is an enum DVD_ERROR which notifies the app of some error condition. +// +// Raised from following domains: all +// + +#define EC_DVD_WARNING (EC_DVDBASE + 0x0d) +// Parameters: ( DWORD, DWORD) +// lParam1 is an enum DVD_WARNING which notifies the app of some warning condition. +// lParam2 contains more specific information about the warning (warning dependent) +// +// Raised from following domains: all +// + +#define EC_DVD_CHAPTER_AUTOSTOP (EC_DVDBASE + 0x0e) +// Parameters: (BOOL, void) +// lParam1 is a BOOL which indicates the reason for the cancellation of ChapterPlayAutoStop +// lParam1 == 0 indicates successful completion of ChapterPlayAutoStop +// lParam1 == 1 indicates that ChapterPlayAutoStop is being cancelled as a result of another +// IDVDControl call or the end of content has been reached & no more chapters +// can be played. +// Indicating that playback is stopped as a result of a call +// to IDVDControl::ChapterPlayAutoStop() +// +// Raised from following domains : DVD_DOMAIN_TITLE +// + +#define EC_DVD_NO_FP_PGC (EC_DVDBASE + 0x0f) +// Parameters : (void, void) +// +// Raised from the following domains : FP_DOM +// +// Indicates that the DVD disc does not have a FP_PGC (First Play Program Chain) +// and the DVD Navigator will not automatically load any PGC and start playback. +// + +#define EC_DVD_PLAYBACK_RATE_CHANGE (EC_DVDBASE + 0x10) +// Parameters : (LONG, void) +// lParam1 is a LONG indicating the new playback rate. +// lParam1 < 0 indicates reverse playback mode. +// lParam1 > 0 indicates forward playback mode +// Value of lParam1 is the actual playback rate multiplied by 10000. +// i.e. lParam1 = rate * 10000 +// +// Raised from the following domains : TT_DOM +// +// Indicates that a rate change in playback has been initiated and the parameter +// lParam1 indicates the new playback rate that is being used. +// + +#define EC_DVD_PARENTAL_LEVEL_CHANGE (EC_DVDBASE + 0x11) +// Parameters : (LONG, void) +// lParam1 is a LONG indicating the new parental level. +// +// Raised from the following domains : VMGM_DOM +// +// Indicates that an authored Nav command has changed the parental level +// setting in the player. +// + +#define EC_DVD_PLAYBACK_STOPPED (EC_DVDBASE + 0x12) +// Parameters : (DWORD, void) +// +// Raised from the following domains : All Domains +// +// Indicates that playback has been stopped as the Navigator has completed +// playback of the pgc and did not find any other branching instruction for +// subsequent playback. +// +// The DWORD returns the reason for the completion of the playback. See +// The DVD_PB_STOPPED enumeration for details. +// + +#define EC_DVD_ANGLES_AVAILABLE (EC_DVDBASE + 0x13) +// Parameters : (BOOL, void) +// lParam1 == 0 indicates that playback is not in an angle block and angles are +// not available +// lParam1 == 1 indicates that an angle block is being played back and angle changes +// can be performed. +// +// Indicates whether an angle block is being played and if angle changes can be +// performed. However, angle changes are not restricted to angle blocks and the +// manifestation of the angle change can be seen only in an angle block. + +#define EC_DVD_PLAYPERIOD_AUTOSTOP (EC_DVDBASE + 0x14) +// Parameters: (void, void) +// Sent when the PlayPeriodInTitle completes or is cancelled +// +// Raised from following domains : DVD_DOMAIN_TITLE +// + +#define EC_DVD_BUTTON_AUTO_ACTIVATED (EC_DVDBASE + 0x15) +// Parameters: (DWORD button, void) +// Sent when a button is automatically activated +// +// Raised from following domains : DVD_DOMAIN_MENU +// + +#define EC_DVD_CMD_START (EC_DVDBASE + 0x16) +// Parameters: (CmdID, HRESULT) +// Sent when a command begins +// + +#define EC_DVD_CMD_END (EC_DVDBASE + 0x17) +// Parameters: (CmdID, HRESULT) +// Sent when a command completes +// + +#define EC_DVD_DISC_EJECTED (EC_DVDBASE + 0x18) +// Parameters: none +// Sent when the nav detects that a disc was ejected and stops the playback +// The app does not need to take any action to stop the playback. +// + +#define EC_DVD_DISC_INSERTED (EC_DVDBASE + 0x19) +// Parameters: none +// Sent when the nav detects that a disc was inserted and the nav begins playback +// The app does not need to take any action to start the playback. +// + +#define EC_DVD_CURRENT_HMSF_TIME (EC_DVDBASE + 0x1a) +// Parameters: ( ULONG, ULONG ) +// lParam2 contains a union of the DVD_TIMECODE_FLAGS +// lParam1 contains a DVD_HMSF_TIMECODE. Assign lParam1 to a ULONG then cast the +// ULONG as a DVD_HMSF_TIMECODE to use its values. +// +// Raised from following domains: DVD_DOMAIN_Title +// +// Signaled at the beginning of every VOBU, which occurs every .4 to 1.0 sec. + +#define EC_DVD_KARAOKE_MODE (EC_DVDBASE + 0x1b) +// Parameters: ( BOOL, reserved ) +// lParam1 is either TRUE (a karaoke track is being played) or FALSE (no karaoke data is being played). +// +#endif // __DVDEVCOD__ diff --git a/videoInputSrcAndDemos/libs/DShow/Include/dvdmedia.h b/videoInputSrcAndDemos/libs/DShow/Include/dvdmedia.h index 6be8de0..132c5ba 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/dvdmedia.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/dvdmedia.h @@ -1,427 +1,427 @@ -//------------------------------------------------------------------------------ -// File: DVDMedia.h -// -// Desc: Contains typedefs and defines necessary for user mode (ring 3) DVD -// filters and applications. -// -// This should be included in the DirectShow SDK for user mode filters. -// The types defined here should be kept in synch with ksmedia.h WDM -// DDK for kernel mode filters. -// -// Copyright (c) 1997 - 2001, Microsoft Corporation. All rights reserved. -//------------------------------------------------------------------------------ - - -#ifndef __DVDMEDIA_H__ -#define __DVDMEDIA_H__ - -#ifdef __cplusplus -extern "C" { -#endif // __cplusplus - -// ----------------------------------------------------------------------- -// AC-3 definition for the AM_KSPROPSETID_AC3 property set -// ----------------------------------------------------------------------- - -typedef enum { - AM_PROPERTY_AC3_ERROR_CONCEALMENT = 1, - AM_PROPERTY_AC3_ALTERNATE_AUDIO = 2, - AM_PROPERTY_AC3_DOWNMIX = 3, - AM_PROPERTY_AC3_BIT_STREAM_MODE = 4, - AM_PROPERTY_AC3_DIALOGUE_LEVEL = 5, - AM_PROPERTY_AC3_LANGUAGE_CODE = 6, - AM_PROPERTY_AC3_ROOM_TYPE = 7 -} AM_PROPERTY_AC3; - -typedef struct { - BOOL fRepeatPreviousBlock; - BOOL fErrorInCurrentBlock; -} AM_AC3_ERROR_CONCEALMENT, *PAM_AC3_ERROR_CONCEALMENT; - -typedef struct { - BOOL fStereo; - ULONG DualMode; -} AM_AC3_ALTERNATE_AUDIO, *PAM_AC3_ALTERNATE_AUDIO; - -#define AM_AC3_ALTERNATE_AUDIO_1 1 -#define AM_AC3_ALTERNATE_AUDIO_2 2 -#define AM_AC3_ALTERNATE_AUDIO_BOTH 3 - -typedef struct { - BOOL fDownMix; - BOOL fDolbySurround; -} AM_AC3_DOWNMIX, *PAM_AC3_DOWNMIX; - -typedef struct { - LONG BitStreamMode; -} AM_AC3_BIT_STREAM_MODE, *PAM_AC3_BIT_STREAM_MODE; - -#define AM_AC3_SERVICE_MAIN_AUDIO 0 -#define AM_AC3_SERVICE_NO_DIALOG 1 -#define AM_AC3_SERVICE_VISUALLY_IMPAIRED 2 -#define AM_AC3_SERVICE_HEARING_IMPAIRED 3 -#define AM_AC3_SERVICE_DIALOG_ONLY 4 -#define AM_AC3_SERVICE_COMMENTARY 5 -#define AM_AC3_SERVICE_EMERGENCY_FLASH 6 -#define AM_AC3_SERVICE_VOICE_OVER 7 - -typedef struct { - ULONG DialogueLevel; -} AM_AC3_DIALOGUE_LEVEL, *PAM_AC3_DIALOGUE_LEVEL; - -typedef struct { - BOOL fLargeRoom; -} AM_AC3_ROOM_TYPE, *PAM_AC3_ROOM_TYPE; - - -// ----------------------------------------------------------------------- -// subpicture definition for the AM_KSPROPSETID_DvdSubPic property set -// ----------------------------------------------------------------------- - -typedef enum { - AM_PROPERTY_DVDSUBPIC_PALETTE = 0, - AM_PROPERTY_DVDSUBPIC_HLI = 1, - AM_PROPERTY_DVDSUBPIC_COMPOSIT_ON = 2 // TRUE for subpicture is displayed -} AM_PROPERTY_DVDSUBPIC; - -typedef struct _AM_DVD_YUV { - UCHAR Reserved; - UCHAR Y; - UCHAR U; - UCHAR V; -} AM_DVD_YUV, *PAM_DVD_YUV; - -typedef struct _AM_PROPERTY_SPPAL { - AM_DVD_YUV sppal[16]; -} AM_PROPERTY_SPPAL, *PAM_PROPERTY_SPPAL; - -typedef struct _AM_COLCON { - UCHAR emph1col:4; - UCHAR emph2col:4; - UCHAR backcol:4; - UCHAR patcol:4; - UCHAR emph1con:4; - UCHAR emph2con:4; - UCHAR backcon:4; - UCHAR patcon:4; - -} AM_COLCON, *PAM_COLCON; - -typedef struct _AM_PROPERTY_SPHLI { - USHORT HLISS; // - USHORT Reserved; - ULONG StartPTM; // start presentation time in x/90000 - ULONG EndPTM; // end PTM in x/90000 - USHORT StartX; - USHORT StartY; - USHORT StopX; - USHORT StopY; - AM_COLCON ColCon; // color contrast description (4 bytes as given in HLI) -} AM_PROPERTY_SPHLI, *PAM_PROPERTY_SPHLI; - -typedef BOOL AM_PROPERTY_COMPOSIT_ON, *PAM_PROPERTY_COMPOSIT_ON; - - - -// ----------------------------------------------------------------------- -// copy protection definitions -// ----------------------------------------------------------------------- - -// AM_UseNewCSSKey for the dwTypeSpecificFlags in IMediaSample2 to indicate -// the exact point in a stream after which to start applying a new CSS key. -// This is typically sent on an empty media sample just before attempting -// to renegotiate a CSS key. -#define AM_UseNewCSSKey 0x1 - -// -// AM_KSPROPSETID_CopyProt property set definitions -// -typedef enum { - AM_PROPERTY_DVDCOPY_CHLG_KEY = 0x01, - AM_PROPERTY_DVDCOPY_DVD_KEY1 = 0x02, - AM_PROPERTY_DVDCOPY_DEC_KEY2 = 0x03, - AM_PROPERTY_DVDCOPY_TITLE_KEY = 0x04, - AM_PROPERTY_COPY_MACROVISION = 0x05, - AM_PROPERTY_DVDCOPY_REGION = 0x06, - AM_PROPERTY_DVDCOPY_SET_COPY_STATE = 0x07, - AM_PROPERTY_DVDCOPY_DISC_KEY = 0x80 -} AM_PROPERTY_DVDCOPYPROT; - -typedef struct _AM_DVDCOPY_CHLGKEY { - BYTE ChlgKey[10]; - BYTE Reserved[2]; -} AM_DVDCOPY_CHLGKEY, *PAM_DVDCOPY_CHLGKEY; - -typedef struct _AM_DVDCOPY_BUSKEY { - BYTE BusKey[5]; - BYTE Reserved[1]; -} AM_DVDCOPY_BUSKEY, *PAM_DVDCOPY_BUSKEY; - -typedef struct _AM_DVDCOPY_DISCKEY { - BYTE DiscKey[2048]; -} AM_DVDCOPY_DISCKEY, *PAM_DVDCOPY_DISCKEY; - -typedef struct AM_DVDCOPY_TITLEKEY { - ULONG KeyFlags; - ULONG Reserved1[2]; - UCHAR TitleKey[6]; - UCHAR Reserved2[2]; -} AM_DVDCOPY_TITLEKEY, *PAM_DVDCOPY_TITLEKEY; - -typedef struct _AM_COPY_MACROVISION { - ULONG MACROVISIONLevel; -} AM_COPY_MACROVISION, *PAM_COPY_MACROVISION; - -typedef struct AM_DVDCOPY_SET_COPY_STATE { - ULONG DVDCopyState; -} AM_DVDCOPY_SET_COPY_STATE, *PAM_DVDCOPY_SET_COPY_STATE; - -typedef enum { - AM_DVDCOPYSTATE_INITIALIZE = 0, - AM_DVDCOPYSTATE_INITIALIZE_TITLE = 1, // indicates we are starting a title - // key copy protection sequence - AM_DVDCOPYSTATE_AUTHENTICATION_NOT_REQUIRED = 2, - AM_DVDCOPYSTATE_AUTHENTICATION_REQUIRED = 3, - AM_DVDCOPYSTATE_DONE = 4 -} AM_DVDCOPYSTATE; - -typedef enum { - AM_MACROVISION_DISABLED = 0, - AM_MACROVISION_LEVEL1 = 1, - AM_MACROVISION_LEVEL2 = 2, - AM_MACROVISION_LEVEL3 = 3 -} AM_COPY_MACROVISION_LEVEL, *PAM_COPY_MACROVISION_LEVEL; - - -// CSS region stucture -typedef struct _DVD_REGION { - UCHAR CopySystem; - UCHAR RegionData; - UCHAR SystemRegion; - UCHAR Reserved; -} DVD_REGION, *PDVD_REGION; - -// -// CGMS Copy Protection Flags -// - -#define AM_DVD_CGMS_RESERVED_MASK 0x00000078 - -#define AM_DVD_CGMS_COPY_PROTECT_MASK 0x00000018 -#define AM_DVD_CGMS_COPY_PERMITTED 0x00000000 -#define AM_DVD_CGMS_COPY_ONCE 0x00000010 -#define AM_DVD_CGMS_NO_COPY 0x00000018 - -#define AM_DVD_COPYRIGHT_MASK 0x00000040 -#define AM_DVD_NOT_COPYRIGHTED 0x00000000 -#define AM_DVD_COPYRIGHTED 0x00000040 - -#define AM_DVD_SECTOR_PROTECT_MASK 0x00000020 -#define AM_DVD_SECTOR_NOT_PROTECTED 0x00000000 -#define AM_DVD_SECTOR_PROTECTED 0x00000020 - - -// ----------------------------------------------------------------------- -// video format blocks -// ----------------------------------------------------------------------- - -enum AM_MPEG2Level { - AM_MPEG2Level_Low = 1, - AM_MPEG2Level_Main = 2, - AM_MPEG2Level_High1440 = 3, - AM_MPEG2Level_High = 4 -}; - -enum AM_MPEG2Profile { - AM_MPEG2Profile_Simple = 1, - AM_MPEG2Profile_Main = 2, - AM_MPEG2Profile_SNRScalable = 3, - AM_MPEG2Profile_SpatiallyScalable = 4, - AM_MPEG2Profile_High = 5 -}; - -#define AMINTERLACE_IsInterlaced 0x00000001 // if 0, other interlace bits are irrelevent -#define AMINTERLACE_1FieldPerSample 0x00000002 // else 2 fields per media sample -#define AMINTERLACE_Field1First 0x00000004 // else Field 2 is first; top field in PAL is field 1, top field in NTSC is field 2? -#define AMINTERLACE_UNUSED 0x00000008 // -#define AMINTERLACE_FieldPatternMask 0x00000030 // use this mask with AMINTERLACE_FieldPat* -#define AMINTERLACE_FieldPatField1Only 0x00000000 // stream never contains a Field2 -#define AMINTERLACE_FieldPatField2Only 0x00000010 // stream never contains a Field1 -#define AMINTERLACE_FieldPatBothRegular 0x00000020 // There will be a Field2 for every Field1 (required for Weave?) -#define AMINTERLACE_FieldPatBothIrregular 0x00000030 // Random pattern of Field1s and Field2s -#define AMINTERLACE_DisplayModeMask 0x000000c0 -#define AMINTERLACE_DisplayModeBobOnly 0x00000000 -#define AMINTERLACE_DisplayModeWeaveOnly 0x00000040 -#define AMINTERLACE_DisplayModeBobOrWeave 0x00000080 - -#define AMCOPYPROTECT_RestrictDuplication 0x00000001 // duplication of this stream should be restricted - -#define AMMPEG2_DoPanScan 0x00000001 //if set, the MPEG-2 video decoder should crop output image - // based on pan-scan vectors in picture_display_extension - // and change the picture aspect ratio accordingly. -#define AMMPEG2_DVDLine21Field1 0x00000002 //if set, the MPEG-2 decoder must be able to produce an output - // pin for DVD style closed caption data found in GOP layer of field 1 -#define AMMPEG2_DVDLine21Field2 0x00000004 //if set, the MPEG-2 decoder must be able to produce an output - // pin for DVD style closed caption data found in GOP layer of field 2 -#define AMMPEG2_SourceIsLetterboxed 0x00000008 //if set, indicates that black bars have been encoded in the top - // and bottom of the video. -#define AMMPEG2_FilmCameraMode 0x00000010 //if set, indicates "film mode" used for 625/50 content. If cleared, - // indicates that "camera mode" was used. -#define AMMPEG2_LetterboxAnalogOut 0x00000020 //if set and this stream is sent to an analog output, it should - // be letterboxed. Streams sent to VGA should be letterboxed only by renderers. -#define AMMPEG2_DSS_UserData 0x00000040 //if set, the MPEG-2 decoder must process DSS style user data -#define AMMPEG2_DVB_UserData 0x00000080 //if set, the MPEG-2 decoder must process DVB style user data -#define AMMPEG2_27MhzTimebase 0x00000100 //if set, the PTS,DTS timestamps advance at 27MHz rather than 90KHz - -#define AMMPEG2_WidescreenAnalogOut 0x00000200 //if set and this stream is sent to an analog output, it should - // be in widescreen format (4x3 content should be centered on a 16x9 output). - // Streams sent to VGA should be widescreened only by renderers. - -// PRESENT in dwReserved1 field in VIDEOINFOHEADER2 -#define AMCONTROL_USED 0x00000001 // Used to test if these flags are supported. Set and test for AcceptMediaType. - // If rejected, then you cannot use the AMCONTROL flags (send 0 for dwReserved1) -#define AMCONTROL_PAD_TO_4x3 0x00000002 // if set means display the image in a 4x3 area -#define AMCONTROL_PAD_TO_16x9 0x00000004 // if set means display the image in a 16x9 area - -typedef struct tagVIDEOINFOHEADER2 { - RECT rcSource; - RECT rcTarget; - DWORD dwBitRate; - DWORD dwBitErrorRate; - REFERENCE_TIME AvgTimePerFrame; - DWORD dwInterlaceFlags; // use AMINTERLACE_* defines. Reject connection if undefined bits are not 0 - DWORD dwCopyProtectFlags; // use AMCOPYPROTECT_* defines. Reject connection if undefined bits are not 0 - DWORD dwPictAspectRatioX; // X dimension of picture aspect ratio, e.g. 16 for 16x9 display - DWORD dwPictAspectRatioY; // Y dimension of picture aspect ratio, e.g. 9 for 16x9 display - union { - DWORD dwControlFlags; // use AMCONTROL_* defines, use this from now on - DWORD dwReserved1; // for backward compatiblity (was "must be 0"; connection rejected otherwise) - }; - DWORD dwReserved2; // must be 0; reject connection otherwise - BITMAPINFOHEADER bmiHeader; -} VIDEOINFOHEADER2; - -typedef struct tagMPEG2VIDEOINFO { - VIDEOINFOHEADER2 hdr; - DWORD dwStartTimeCode; // ?? not used for DVD ?? - DWORD cbSequenceHeader; // is 0 for DVD (no sequence header) - DWORD dwProfile; // use enum MPEG2Profile - DWORD dwLevel; // use enum MPEG2Level - DWORD dwFlags; // use AMMPEG2_* defines. Reject connection if undefined bits are not 0 - DWORD dwSequenceHeader[1]; // DWORD instead of Byte for alignment purposes - // For MPEG-2, if a sequence_header is included, the sequence_extension - // should also be included -} MPEG2VIDEOINFO; - -#define SIZE_MPEG2VIDEOINFO(pv) (FIELD_OFFSET(MPEG2VIDEOINFO, dwSequenceHeader[0]) + (pv)->cbSequenceHeader) - -// do not use -#define MPEG1_SEQUENCE_INFO(pv) ((const BYTE *)(pv)->bSequenceHeader) - -// use this macro instead, the previous only works for MPEG1VIDEOINFO structures -#define MPEG2_SEQUENCE_INFO(pv) ((const BYTE *)(pv)->dwSequenceHeader) - - -//=================================================================================== -// flags for dwTypeSpecificFlags in AM_SAMPLE2_PROPERTIES which define type specific -// data in IMediaSample2 -//=================================================================================== - -#define AM_VIDEO_FLAG_FIELD_MASK 0x0003L // use this mask to check whether the sample is field1 or field2 or frame -#define AM_VIDEO_FLAG_INTERLEAVED_FRAME 0x0000L // the sample is a frame (remember to use AM_VIDEO_FLAG_FIELD_MASK when using this) -#define AM_VIDEO_FLAG_FIELD1 0x0001L // the sample is field1 (remember to use AM_VIDEO_FLAG_FIELD_MASK when using this) -#define AM_VIDEO_FLAG_FIELD2 0x0002L // the sample is the field2 (remember to use AM_VIDEO_FLAG_FIELD_MASK when using this) -#define AM_VIDEO_FLAG_FIELD1FIRST 0x0004L // if set means display field1 first, else display field2 first. - // this bit is irrelavant for 1FieldPerSample mode -#define AM_VIDEO_FLAG_WEAVE 0x0008L // if set use bob display mode else weave -#define AM_VIDEO_FLAG_IPB_MASK 0x0030L // use this mask to check whether the sample is I, P or B -#define AM_VIDEO_FLAG_I_SAMPLE 0x0000L // I Sample (remember to use AM_VIDEO_FLAG_IPB_MASK when using this) -#define AM_VIDEO_FLAG_P_SAMPLE 0x0010L // P Sample (remember to use AM_VIDEO_FLAG_IPB_MASK when using this) -#define AM_VIDEO_FLAG_B_SAMPLE 0x0020L // B Sample (remember to use AM_VIDEO_FLAG_IPB_MASK when using this) -#define AM_VIDEO_FLAG_REPEAT_FIELD 0x0040L // if set means display the field which has been displayed first again after displaying - // both fields first. This bit is irrelavant for 1FieldPerSample mode - -// ----------------------------------------------------------------------- -// AM_KSPROPSETID_DvdKaraoke property set definitions -// ----------------------------------------------------------------------- - -typedef struct tagAM_DvdKaraokeData -{ - DWORD dwDownmix; // bitwise OR of AM_DvdKaraoke_Downmix flags - DWORD dwSpeakerAssignment; // AM_DvdKaraoke_SpeakerAssignment -} AM_DvdKaraokeData; - -typedef enum { - AM_PROPERTY_DVDKARAOKE_ENABLE = 0, // BOOL - AM_PROPERTY_DVDKARAOKE_DATA = 1, -} AM_PROPERTY_DVDKARAOKE; - -// ----------------------------------------------------------------------- -// AM_KSPROPSETID_TSRateChange property set definitions for time stamp -// rate changes. -// ----------------------------------------------------------------------- - -typedef enum { - AM_RATE_SimpleRateChange = 1, // rw, use AM_SimpleRateChange - AM_RATE_ExactRateChange = 2, // rw, use AM_ExactRateChange - AM_RATE_MaxFullDataRate = 3, // r, use AM_MaxFullDataRate - AM_RATE_Step = 4, // w, use AM_Step - AM_RATE_UseRateVersion = 5, // w, use WORD - AM_RATE_QueryFullFrameRate =6, // r, use AM_QueryRate - AM_RATE_QueryLastRateSegPTS =7, // r, use REFERENCE_TIME - AM_RATE_CorrectTS = 8 // w, use LONG -} AM_PROPERTY_TS_RATE_CHANGE; - -// ------------------------------------------------------------------- -// AM_KSPROPSETID_DVD_RateChange property set definitions for new DVD -// rate change scheme. -// ------------------------------------------------------------------- - -typedef enum { - AM_RATE_ChangeRate = 1, // w, use AM_DVD_ChangeRate - AM_RATE_FullDataRateMax = 2, // r, use AM_MaxFullDataRate - AM_RATE_ReverseDecode = 3, // r, use LONG - AM_RATE_DecoderPosition = 4, // r, use AM_DVD_DecoderPosition - AM_RATE_DecoderVersion = 5 // r, use LONG -} AM_PROPERTY_DVD_RATE_CHANGE; - -typedef struct { - // this is the simplest mechanism to set a time stamp rate change on - // a filter (simplest for the person setting the rate change, harder - // for the filter doing the rate change). - REFERENCE_TIME StartTime; //stream time at which to start this rate - LONG Rate; //new rate * 10000 (decimal) -} AM_SimpleRateChange; - -typedef struct { - LONG lMaxForwardFullFrame ; // rate * 10000 - LONG lMaxReverseFullFrame ; // rate * 10000 -} AM_QueryRate ; - -typedef struct { - REFERENCE_TIME OutputZeroTime; //input TS that maps to zero output TS - LONG Rate; //new rate * 10000 (decimal) -} AM_ExactRateChange; - -typedef LONG AM_MaxFullDataRate; //rate * 10000 (decimal) - -typedef DWORD AM_Step; // number of frame to step - -// New rate change property set, structs. enums etc. -typedef struct { - REFERENCE_TIME StartInTime; // stream time (input) at which to start decoding at this rate - REFERENCE_TIME StartOutTime; // reference time (output) at which to start showing at this rate - LONG Rate; // new rate * 10000 (decimal) -} AM_DVD_ChangeRate ; - -typedef LONGLONG AM_DVD_DecoderPosition ; - -typedef enum { - DVD_DIR_FORWARD = 0, - DVD_DIR_BACKWARD = 1 -} DVD_PLAY_DIRECTION ; - -#ifdef __cplusplus -} -#endif // __cplusplus -#endif // __DVDMEDIA_H__ +//------------------------------------------------------------------------------ +// File: DVDMedia.h +// +// Desc: Contains typedefs and defines necessary for user mode (ring 3) DVD +// filters and applications. +// +// This should be included in the DirectShow SDK for user mode filters. +// The types defined here should be kept in synch with ksmedia.h WDM +// DDK for kernel mode filters. +// +// Copyright (c) 1997 - 2001, Microsoft Corporation. All rights reserved. +//------------------------------------------------------------------------------ + + +#ifndef __DVDMEDIA_H__ +#define __DVDMEDIA_H__ + +#ifdef __cplusplus +extern "C" { +#endif // __cplusplus + +// ----------------------------------------------------------------------- +// AC-3 definition for the AM_KSPROPSETID_AC3 property set +// ----------------------------------------------------------------------- + +typedef enum { + AM_PROPERTY_AC3_ERROR_CONCEALMENT = 1, + AM_PROPERTY_AC3_ALTERNATE_AUDIO = 2, + AM_PROPERTY_AC3_DOWNMIX = 3, + AM_PROPERTY_AC3_BIT_STREAM_MODE = 4, + AM_PROPERTY_AC3_DIALOGUE_LEVEL = 5, + AM_PROPERTY_AC3_LANGUAGE_CODE = 6, + AM_PROPERTY_AC3_ROOM_TYPE = 7 +} AM_PROPERTY_AC3; + +typedef struct { + BOOL fRepeatPreviousBlock; + BOOL fErrorInCurrentBlock; +} AM_AC3_ERROR_CONCEALMENT, *PAM_AC3_ERROR_CONCEALMENT; + +typedef struct { + BOOL fStereo; + ULONG DualMode; +} AM_AC3_ALTERNATE_AUDIO, *PAM_AC3_ALTERNATE_AUDIO; + +#define AM_AC3_ALTERNATE_AUDIO_1 1 +#define AM_AC3_ALTERNATE_AUDIO_2 2 +#define AM_AC3_ALTERNATE_AUDIO_BOTH 3 + +typedef struct { + BOOL fDownMix; + BOOL fDolbySurround; +} AM_AC3_DOWNMIX, *PAM_AC3_DOWNMIX; + +typedef struct { + LONG BitStreamMode; +} AM_AC3_BIT_STREAM_MODE, *PAM_AC3_BIT_STREAM_MODE; + +#define AM_AC3_SERVICE_MAIN_AUDIO 0 +#define AM_AC3_SERVICE_NO_DIALOG 1 +#define AM_AC3_SERVICE_VISUALLY_IMPAIRED 2 +#define AM_AC3_SERVICE_HEARING_IMPAIRED 3 +#define AM_AC3_SERVICE_DIALOG_ONLY 4 +#define AM_AC3_SERVICE_COMMENTARY 5 +#define AM_AC3_SERVICE_EMERGENCY_FLASH 6 +#define AM_AC3_SERVICE_VOICE_OVER 7 + +typedef struct { + ULONG DialogueLevel; +} AM_AC3_DIALOGUE_LEVEL, *PAM_AC3_DIALOGUE_LEVEL; + +typedef struct { + BOOL fLargeRoom; +} AM_AC3_ROOM_TYPE, *PAM_AC3_ROOM_TYPE; + + +// ----------------------------------------------------------------------- +// subpicture definition for the AM_KSPROPSETID_DvdSubPic property set +// ----------------------------------------------------------------------- + +typedef enum { + AM_PROPERTY_DVDSUBPIC_PALETTE = 0, + AM_PROPERTY_DVDSUBPIC_HLI = 1, + AM_PROPERTY_DVDSUBPIC_COMPOSIT_ON = 2 // TRUE for subpicture is displayed +} AM_PROPERTY_DVDSUBPIC; + +typedef struct _AM_DVD_YUV { + UCHAR Reserved; + UCHAR Y; + UCHAR U; + UCHAR V; +} AM_DVD_YUV, *PAM_DVD_YUV; + +typedef struct _AM_PROPERTY_SPPAL { + AM_DVD_YUV sppal[16]; +} AM_PROPERTY_SPPAL, *PAM_PROPERTY_SPPAL; + +typedef struct _AM_COLCON { + UCHAR emph1col:4; + UCHAR emph2col:4; + UCHAR backcol:4; + UCHAR patcol:4; + UCHAR emph1con:4; + UCHAR emph2con:4; + UCHAR backcon:4; + UCHAR patcon:4; + +} AM_COLCON, *PAM_COLCON; + +typedef struct _AM_PROPERTY_SPHLI { + USHORT HLISS; // + USHORT Reserved; + ULONG StartPTM; // start presentation time in x/90000 + ULONG EndPTM; // end PTM in x/90000 + USHORT StartX; + USHORT StartY; + USHORT StopX; + USHORT StopY; + AM_COLCON ColCon; // color contrast description (4 bytes as given in HLI) +} AM_PROPERTY_SPHLI, *PAM_PROPERTY_SPHLI; + +typedef BOOL AM_PROPERTY_COMPOSIT_ON, *PAM_PROPERTY_COMPOSIT_ON; + + + +// ----------------------------------------------------------------------- +// copy protection definitions +// ----------------------------------------------------------------------- + +// AM_UseNewCSSKey for the dwTypeSpecificFlags in IMediaSample2 to indicate +// the exact point in a stream after which to start applying a new CSS key. +// This is typically sent on an empty media sample just before attempting +// to renegotiate a CSS key. +#define AM_UseNewCSSKey 0x1 + +// +// AM_KSPROPSETID_CopyProt property set definitions +// +typedef enum { + AM_PROPERTY_DVDCOPY_CHLG_KEY = 0x01, + AM_PROPERTY_DVDCOPY_DVD_KEY1 = 0x02, + AM_PROPERTY_DVDCOPY_DEC_KEY2 = 0x03, + AM_PROPERTY_DVDCOPY_TITLE_KEY = 0x04, + AM_PROPERTY_COPY_MACROVISION = 0x05, + AM_PROPERTY_DVDCOPY_REGION = 0x06, + AM_PROPERTY_DVDCOPY_SET_COPY_STATE = 0x07, + AM_PROPERTY_DVDCOPY_DISC_KEY = 0x80 +} AM_PROPERTY_DVDCOPYPROT; + +typedef struct _AM_DVDCOPY_CHLGKEY { + BYTE ChlgKey[10]; + BYTE Reserved[2]; +} AM_DVDCOPY_CHLGKEY, *PAM_DVDCOPY_CHLGKEY; + +typedef struct _AM_DVDCOPY_BUSKEY { + BYTE BusKey[5]; + BYTE Reserved[1]; +} AM_DVDCOPY_BUSKEY, *PAM_DVDCOPY_BUSKEY; + +typedef struct _AM_DVDCOPY_DISCKEY { + BYTE DiscKey[2048]; +} AM_DVDCOPY_DISCKEY, *PAM_DVDCOPY_DISCKEY; + +typedef struct AM_DVDCOPY_TITLEKEY { + ULONG KeyFlags; + ULONG Reserved1[2]; + UCHAR TitleKey[6]; + UCHAR Reserved2[2]; +} AM_DVDCOPY_TITLEKEY, *PAM_DVDCOPY_TITLEKEY; + +typedef struct _AM_COPY_MACROVISION { + ULONG MACROVISIONLevel; +} AM_COPY_MACROVISION, *PAM_COPY_MACROVISION; + +typedef struct AM_DVDCOPY_SET_COPY_STATE { + ULONG DVDCopyState; +} AM_DVDCOPY_SET_COPY_STATE, *PAM_DVDCOPY_SET_COPY_STATE; + +typedef enum { + AM_DVDCOPYSTATE_INITIALIZE = 0, + AM_DVDCOPYSTATE_INITIALIZE_TITLE = 1, // indicates we are starting a title + // key copy protection sequence + AM_DVDCOPYSTATE_AUTHENTICATION_NOT_REQUIRED = 2, + AM_DVDCOPYSTATE_AUTHENTICATION_REQUIRED = 3, + AM_DVDCOPYSTATE_DONE = 4 +} AM_DVDCOPYSTATE; + +typedef enum { + AM_MACROVISION_DISABLED = 0, + AM_MACROVISION_LEVEL1 = 1, + AM_MACROVISION_LEVEL2 = 2, + AM_MACROVISION_LEVEL3 = 3 +} AM_COPY_MACROVISION_LEVEL, *PAM_COPY_MACROVISION_LEVEL; + + +// CSS region stucture +typedef struct _DVD_REGION { + UCHAR CopySystem; + UCHAR RegionData; + UCHAR SystemRegion; + UCHAR Reserved; +} DVD_REGION, *PDVD_REGION; + +// +// CGMS Copy Protection Flags +// + +#define AM_DVD_CGMS_RESERVED_MASK 0x00000078 + +#define AM_DVD_CGMS_COPY_PROTECT_MASK 0x00000018 +#define AM_DVD_CGMS_COPY_PERMITTED 0x00000000 +#define AM_DVD_CGMS_COPY_ONCE 0x00000010 +#define AM_DVD_CGMS_NO_COPY 0x00000018 + +#define AM_DVD_COPYRIGHT_MASK 0x00000040 +#define AM_DVD_NOT_COPYRIGHTED 0x00000000 +#define AM_DVD_COPYRIGHTED 0x00000040 + +#define AM_DVD_SECTOR_PROTECT_MASK 0x00000020 +#define AM_DVD_SECTOR_NOT_PROTECTED 0x00000000 +#define AM_DVD_SECTOR_PROTECTED 0x00000020 + + +// ----------------------------------------------------------------------- +// video format blocks +// ----------------------------------------------------------------------- + +enum AM_MPEG2Level { + AM_MPEG2Level_Low = 1, + AM_MPEG2Level_Main = 2, + AM_MPEG2Level_High1440 = 3, + AM_MPEG2Level_High = 4 +}; + +enum AM_MPEG2Profile { + AM_MPEG2Profile_Simple = 1, + AM_MPEG2Profile_Main = 2, + AM_MPEG2Profile_SNRScalable = 3, + AM_MPEG2Profile_SpatiallyScalable = 4, + AM_MPEG2Profile_High = 5 +}; + +#define AMINTERLACE_IsInterlaced 0x00000001 // if 0, other interlace bits are irrelevent +#define AMINTERLACE_1FieldPerSample 0x00000002 // else 2 fields per media sample +#define AMINTERLACE_Field1First 0x00000004 // else Field 2 is first; top field in PAL is field 1, top field in NTSC is field 2? +#define AMINTERLACE_UNUSED 0x00000008 // +#define AMINTERLACE_FieldPatternMask 0x00000030 // use this mask with AMINTERLACE_FieldPat* +#define AMINTERLACE_FieldPatField1Only 0x00000000 // stream never contains a Field2 +#define AMINTERLACE_FieldPatField2Only 0x00000010 // stream never contains a Field1 +#define AMINTERLACE_FieldPatBothRegular 0x00000020 // There will be a Field2 for every Field1 (required for Weave?) +#define AMINTERLACE_FieldPatBothIrregular 0x00000030 // Random pattern of Field1s and Field2s +#define AMINTERLACE_DisplayModeMask 0x000000c0 +#define AMINTERLACE_DisplayModeBobOnly 0x00000000 +#define AMINTERLACE_DisplayModeWeaveOnly 0x00000040 +#define AMINTERLACE_DisplayModeBobOrWeave 0x00000080 + +#define AMCOPYPROTECT_RestrictDuplication 0x00000001 // duplication of this stream should be restricted + +#define AMMPEG2_DoPanScan 0x00000001 //if set, the MPEG-2 video decoder should crop output image + // based on pan-scan vectors in picture_display_extension + // and change the picture aspect ratio accordingly. +#define AMMPEG2_DVDLine21Field1 0x00000002 //if set, the MPEG-2 decoder must be able to produce an output + // pin for DVD style closed caption data found in GOP layer of field 1 +#define AMMPEG2_DVDLine21Field2 0x00000004 //if set, the MPEG-2 decoder must be able to produce an output + // pin for DVD style closed caption data found in GOP layer of field 2 +#define AMMPEG2_SourceIsLetterboxed 0x00000008 //if set, indicates that black bars have been encoded in the top + // and bottom of the video. +#define AMMPEG2_FilmCameraMode 0x00000010 //if set, indicates "film mode" used for 625/50 content. If cleared, + // indicates that "camera mode" was used. +#define AMMPEG2_LetterboxAnalogOut 0x00000020 //if set and this stream is sent to an analog output, it should + // be letterboxed. Streams sent to VGA should be letterboxed only by renderers. +#define AMMPEG2_DSS_UserData 0x00000040 //if set, the MPEG-2 decoder must process DSS style user data +#define AMMPEG2_DVB_UserData 0x00000080 //if set, the MPEG-2 decoder must process DVB style user data +#define AMMPEG2_27MhzTimebase 0x00000100 //if set, the PTS,DTS timestamps advance at 27MHz rather than 90KHz + +#define AMMPEG2_WidescreenAnalogOut 0x00000200 //if set and this stream is sent to an analog output, it should + // be in widescreen format (4x3 content should be centered on a 16x9 output). + // Streams sent to VGA should be widescreened only by renderers. + +// PRESENT in dwReserved1 field in VIDEOINFOHEADER2 +#define AMCONTROL_USED 0x00000001 // Used to test if these flags are supported. Set and test for AcceptMediaType. + // If rejected, then you cannot use the AMCONTROL flags (send 0 for dwReserved1) +#define AMCONTROL_PAD_TO_4x3 0x00000002 // if set means display the image in a 4x3 area +#define AMCONTROL_PAD_TO_16x9 0x00000004 // if set means display the image in a 16x9 area + +typedef struct tagVIDEOINFOHEADER2 { + RECT rcSource; + RECT rcTarget; + DWORD dwBitRate; + DWORD dwBitErrorRate; + REFERENCE_TIME AvgTimePerFrame; + DWORD dwInterlaceFlags; // use AMINTERLACE_* defines. Reject connection if undefined bits are not 0 + DWORD dwCopyProtectFlags; // use AMCOPYPROTECT_* defines. Reject connection if undefined bits are not 0 + DWORD dwPictAspectRatioX; // X dimension of picture aspect ratio, e.g. 16 for 16x9 display + DWORD dwPictAspectRatioY; // Y dimension of picture aspect ratio, e.g. 9 for 16x9 display + union { + DWORD dwControlFlags; // use AMCONTROL_* defines, use this from now on + DWORD dwReserved1; // for backward compatiblity (was "must be 0"; connection rejected otherwise) + }; + DWORD dwReserved2; // must be 0; reject connection otherwise + BITMAPINFOHEADER bmiHeader; +} VIDEOINFOHEADER2; + +typedef struct tagMPEG2VIDEOINFO { + VIDEOINFOHEADER2 hdr; + DWORD dwStartTimeCode; // ?? not used for DVD ?? + DWORD cbSequenceHeader; // is 0 for DVD (no sequence header) + DWORD dwProfile; // use enum MPEG2Profile + DWORD dwLevel; // use enum MPEG2Level + DWORD dwFlags; // use AMMPEG2_* defines. Reject connection if undefined bits are not 0 + DWORD dwSequenceHeader[1]; // DWORD instead of Byte for alignment purposes + // For MPEG-2, if a sequence_header is included, the sequence_extension + // should also be included +} MPEG2VIDEOINFO; + +#define SIZE_MPEG2VIDEOINFO(pv) (FIELD_OFFSET(MPEG2VIDEOINFO, dwSequenceHeader[0]) + (pv)->cbSequenceHeader) + +// do not use +#define MPEG1_SEQUENCE_INFO(pv) ((const BYTE *)(pv)->bSequenceHeader) + +// use this macro instead, the previous only works for MPEG1VIDEOINFO structures +#define MPEG2_SEQUENCE_INFO(pv) ((const BYTE *)(pv)->dwSequenceHeader) + + +//=================================================================================== +// flags for dwTypeSpecificFlags in AM_SAMPLE2_PROPERTIES which define type specific +// data in IMediaSample2 +//=================================================================================== + +#define AM_VIDEO_FLAG_FIELD_MASK 0x0003L // use this mask to check whether the sample is field1 or field2 or frame +#define AM_VIDEO_FLAG_INTERLEAVED_FRAME 0x0000L // the sample is a frame (remember to use AM_VIDEO_FLAG_FIELD_MASK when using this) +#define AM_VIDEO_FLAG_FIELD1 0x0001L // the sample is field1 (remember to use AM_VIDEO_FLAG_FIELD_MASK when using this) +#define AM_VIDEO_FLAG_FIELD2 0x0002L // the sample is the field2 (remember to use AM_VIDEO_FLAG_FIELD_MASK when using this) +#define AM_VIDEO_FLAG_FIELD1FIRST 0x0004L // if set means display field1 first, else display field2 first. + // this bit is irrelavant for 1FieldPerSample mode +#define AM_VIDEO_FLAG_WEAVE 0x0008L // if set use bob display mode else weave +#define AM_VIDEO_FLAG_IPB_MASK 0x0030L // use this mask to check whether the sample is I, P or B +#define AM_VIDEO_FLAG_I_SAMPLE 0x0000L // I Sample (remember to use AM_VIDEO_FLAG_IPB_MASK when using this) +#define AM_VIDEO_FLAG_P_SAMPLE 0x0010L // P Sample (remember to use AM_VIDEO_FLAG_IPB_MASK when using this) +#define AM_VIDEO_FLAG_B_SAMPLE 0x0020L // B Sample (remember to use AM_VIDEO_FLAG_IPB_MASK when using this) +#define AM_VIDEO_FLAG_REPEAT_FIELD 0x0040L // if set means display the field which has been displayed first again after displaying + // both fields first. This bit is irrelavant for 1FieldPerSample mode + +// ----------------------------------------------------------------------- +// AM_KSPROPSETID_DvdKaraoke property set definitions +// ----------------------------------------------------------------------- + +typedef struct tagAM_DvdKaraokeData +{ + DWORD dwDownmix; // bitwise OR of AM_DvdKaraoke_Downmix flags + DWORD dwSpeakerAssignment; // AM_DvdKaraoke_SpeakerAssignment +} AM_DvdKaraokeData; + +typedef enum { + AM_PROPERTY_DVDKARAOKE_ENABLE = 0, // BOOL + AM_PROPERTY_DVDKARAOKE_DATA = 1, +} AM_PROPERTY_DVDKARAOKE; + +// ----------------------------------------------------------------------- +// AM_KSPROPSETID_TSRateChange property set definitions for time stamp +// rate changes. +// ----------------------------------------------------------------------- + +typedef enum { + AM_RATE_SimpleRateChange = 1, // rw, use AM_SimpleRateChange + AM_RATE_ExactRateChange = 2, // rw, use AM_ExactRateChange + AM_RATE_MaxFullDataRate = 3, // r, use AM_MaxFullDataRate + AM_RATE_Step = 4, // w, use AM_Step + AM_RATE_UseRateVersion = 5, // w, use WORD + AM_RATE_QueryFullFrameRate =6, // r, use AM_QueryRate + AM_RATE_QueryLastRateSegPTS =7, // r, use REFERENCE_TIME + AM_RATE_CorrectTS = 8 // w, use LONG +} AM_PROPERTY_TS_RATE_CHANGE; + +// ------------------------------------------------------------------- +// AM_KSPROPSETID_DVD_RateChange property set definitions for new DVD +// rate change scheme. +// ------------------------------------------------------------------- + +typedef enum { + AM_RATE_ChangeRate = 1, // w, use AM_DVD_ChangeRate + AM_RATE_FullDataRateMax = 2, // r, use AM_MaxFullDataRate + AM_RATE_ReverseDecode = 3, // r, use LONG + AM_RATE_DecoderPosition = 4, // r, use AM_DVD_DecoderPosition + AM_RATE_DecoderVersion = 5 // r, use LONG +} AM_PROPERTY_DVD_RATE_CHANGE; + +typedef struct { + // this is the simplest mechanism to set a time stamp rate change on + // a filter (simplest for the person setting the rate change, harder + // for the filter doing the rate change). + REFERENCE_TIME StartTime; //stream time at which to start this rate + LONG Rate; //new rate * 10000 (decimal) +} AM_SimpleRateChange; + +typedef struct { + LONG lMaxForwardFullFrame ; // rate * 10000 + LONG lMaxReverseFullFrame ; // rate * 10000 +} AM_QueryRate ; + +typedef struct { + REFERENCE_TIME OutputZeroTime; //input TS that maps to zero output TS + LONG Rate; //new rate * 10000 (decimal) +} AM_ExactRateChange; + +typedef LONG AM_MaxFullDataRate; //rate * 10000 (decimal) + +typedef DWORD AM_Step; // number of frame to step + +// New rate change property set, structs. enums etc. +typedef struct { + REFERENCE_TIME StartInTime; // stream time (input) at which to start decoding at this rate + REFERENCE_TIME StartOutTime; // reference time (output) at which to start showing at this rate + LONG Rate; // new rate * 10000 (decimal) +} AM_DVD_ChangeRate ; + +typedef LONGLONG AM_DVD_DecoderPosition ; + +typedef enum { + DVD_DIR_FORWARD = 0, + DVD_DIR_BACKWARD = 1 +} DVD_PLAY_DIRECTION ; + +#ifdef __cplusplus +} +#endif // __cplusplus +#endif // __DVDMEDIA_H__ diff --git a/videoInputSrcAndDemos/libs/DShow/Include/dvoice.h b/videoInputSrcAndDemos/libs/DShow/Include/dvoice.h index 7b4fd18..000ac51 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/dvoice.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/dvoice.h @@ -1,857 +1,857 @@ -/*==========================================================================; - * - * Copyright (C) 1999 Microsoft Corporation. All Rights Reserved. - * - * File: dpvoice.h - * Content: DirectPlayVoice include file - ***************************************************************************/ - -#ifndef __DVOICE__ -#define __DVOICE__ - -#include // for DECLARE_INTERFACE and HRESULT -#include -#include -#include -#include "dsound.h" - -#ifdef __cplusplus -extern "C" { -#endif - - -/**************************************************************************** - * - * DirectPlayVoice CLSIDs - * - ****************************************************************************/ - - -// {B9F3EB85-B781-4ac1-8D90-93A05EE37D7D} -DEFINE_GUID(CLSID_DirectPlayVoiceClient, -0xb9f3eb85, 0xb781, 0x4ac1, 0x8d, 0x90, 0x93, 0xa0, 0x5e, 0xe3, 0x7d, 0x7d); - -// {D3F5B8E6-9B78-4a4c-94EA-CA2397B663D3} -DEFINE_GUID(CLSID_DirectPlayVoiceServer, -0xd3f5b8e6, 0x9b78, 0x4a4c, 0x94, 0xea, 0xca, 0x23, 0x97, 0xb6, 0x63, 0xd3); - -// {0F0F094B-B01C-4091-A14D-DD0CD807711A} -DEFINE_GUID(CLSID_DirectPlayVoiceTest, -0xf0f094b, 0xb01c, 0x4091, 0xa1, 0x4d, 0xdd, 0xc, 0xd8, 0x7, 0x71, 0x1a); - -/**************************************************************************** - * - * DirectPlayVoice Interface IIDs - * - ****************************************************************************/ - - -// {1DFDC8EA-BCF7-41d6-B295-AB64B3B23306} -DEFINE_GUID(IID_IDirectPlayVoiceClient, -0x1dfdc8ea, 0xbcf7, 0x41d6, 0xb2, 0x95, 0xab, 0x64, 0xb3, 0xb2, 0x33, 0x6); - -// {FAA1C173-0468-43b6-8A2A-EA8A4F2076C9} -DEFINE_GUID(IID_IDirectPlayVoiceServer, -0xfaa1c173, 0x468, 0x43b6, 0x8a, 0x2a, 0xea, 0x8a, 0x4f, 0x20, 0x76, 0xc9); - -// {D26AF734-208B-41da-8224-E0CE79810BE1} -DEFINE_GUID(IID_IDirectPlayVoiceTest, -0xd26af734, 0x208b, 0x41da, 0x82, 0x24, 0xe0, 0xce, 0x79, 0x81, 0xb, 0xe1); - -/**************************************************************************** - * - * DirectPlayVoice Compression Type GUIDs - * - ****************************************************************************/ - -// MS-ADPCM 32.8 kbit/s -// -// {699B52C1-A885-46a8-A308-97172419ADC7} -DEFINE_GUID(DPVCTGUID_ADPCM, -0x699b52c1, 0xa885, 0x46a8, 0xa3, 0x8, 0x97, 0x17, 0x24, 0x19, 0xad, 0xc7); - -// Microsoft GSM 6.10 13 kbit/s -// -// {24768C60-5A0D-11d3-9BE4-525400D985E7} -DEFINE_GUID(DPVCTGUID_GSM, -0x24768c60, 0x5a0d, 0x11d3, 0x9b, 0xe4, 0x52, 0x54, 0x0, 0xd9, 0x85, 0xe7); - -// MS-PCM 64 kbit/s -// -// {8DE12FD4-7CB3-48ce-A7E8-9C47A22E8AC5} -DEFINE_GUID(DPVCTGUID_NONE, -0x8de12fd4, 0x7cb3, 0x48ce, 0xa7, 0xe8, 0x9c, 0x47, 0xa2, 0x2e, 0x8a, 0xc5); - -// Voxware SC03 3.2kbit/s -// -// {7D82A29B-2242-4f82-8F39-5D1153DF3E41} -DEFINE_GUID(DPVCTGUID_SC03, -0x7d82a29b, 0x2242, 0x4f82, 0x8f, 0x39, 0x5d, 0x11, 0x53, 0xdf, 0x3e, 0x41); - -// Voxware SC06 6.4kbit/s -// -// {53DEF900-7168-4633-B47F-D143916A13C7} -DEFINE_GUID(DPVCTGUID_SC06, -0x53def900, 0x7168, 0x4633, 0xb4, 0x7f, 0xd1, 0x43, 0x91, 0x6a, 0x13, 0xc7); - -// TrueSpeech(TM) 8.6 kbit/s -// -// {D7954361-5A0B-11d3-9BE4-525400D985E7} -DEFINE_GUID(DPVCTGUID_TRUESPEECH, -0xd7954361, 0x5a0b, 0x11d3, 0x9b, 0xe4, 0x52, 0x54, 0x0, 0xd9, 0x85, 0xe7); - -// Voxware VR12 1.4kbit/s -// -// {FE44A9FE-8ED4-48bf-9D66-1B1ADFF9FF6D} -DEFINE_GUID(DPVCTGUID_VR12, -0xfe44a9fe, 0x8ed4, 0x48bf, 0x9d, 0x66, 0x1b, 0x1a, 0xdf, 0xf9, 0xff, 0x6d); - -// Define the default compression type -#define DPVCTGUID_DEFAULT DPVCTGUID_SC03 - -/**************************************************************************** - * - * DirectPlayVoice Interface Pointer definitions - * - ****************************************************************************/ - -typedef struct IDirectPlayVoiceClient FAR *LPDIRECTPLAYVOICECLIENT, *PDIRECTPLAYVOICECLIENT; -typedef struct IDirectPlayVoiceServer FAR *LPDIRECTPLAYVOICESERVER, *PDIRECTPLAYVOICESERVER; -typedef struct IDirectPlayVoiceTest FAR *LPDIRECTPLAYVOICETEST, *PDIRECTPLAYVOICETEST; - -/**************************************************************************** - * - * DirectPlayVoice Callback Functions - * - ****************************************************************************/ -typedef HRESULT (FAR PASCAL *PDVMESSAGEHANDLER)( - PVOID pvUserContext, - DWORD dwMessageType, - LPVOID lpMessage -); - -typedef PDVMESSAGEHANDLER LPDVMESSAGEHANDLER; - -/**************************************************************************** - * - * DirectPlayVoice Datatypes (Non-Structure / Non-Message) - * - ****************************************************************************/ - -typedef DWORD DVID, *LPDVID, *PDVID; - -/**************************************************************************** - * - * DirectPlayVoice Message Types - * - ****************************************************************************/ - -#define DVMSGID_BASE 0x0000 - -#define DVMSGID_MINBASE (DVMSGID_CREATEVOICEPLAYER) -#define DVMSGID_CREATEVOICEPLAYER (DVMSGID_BASE+0x0001) -#define DVMSGID_DELETEVOICEPLAYER (DVMSGID_BASE+0x0002) -#define DVMSGID_SESSIONLOST (DVMSGID_BASE+0x0003) -#define DVMSGID_PLAYERVOICESTART (DVMSGID_BASE+0x0004) -#define DVMSGID_PLAYERVOICESTOP (DVMSGID_BASE+0x0005) -#define DVMSGID_RECORDSTART (DVMSGID_BASE+0x0006) -#define DVMSGID_RECORDSTOP (DVMSGID_BASE+0x0007) -#define DVMSGID_CONNECTRESULT (DVMSGID_BASE+0x0008) -#define DVMSGID_DISCONNECTRESULT (DVMSGID_BASE+0x0009) -#define DVMSGID_INPUTLEVEL (DVMSGID_BASE+0x000A) -#define DVMSGID_OUTPUTLEVEL (DVMSGID_BASE+0x000B) -#define DVMSGID_HOSTMIGRATED (DVMSGID_BASE+0x000C) -#define DVMSGID_SETTARGETS (DVMSGID_BASE+0x000D) -#define DVMSGID_PLAYEROUTPUTLEVEL (DVMSGID_BASE+0x000E) -#define DVMSGID_LOSTFOCUS (DVMSGID_BASE+0x0010) -#define DVMSGID_GAINFOCUS (DVMSGID_BASE+0x0011) -#define DVMSGID_LOCALHOSTSETUP (DVMSGID_BASE+0x0012) -#define DVMSGID_MAXBASE (DVMSGID_LOCALHOSTSETUP) - -/**************************************************************************** - * - * DirectPlayVoice Constants - * - ****************************************************************************/ - -// -// Buffer Aggresiveness Value Ranges -// -#define DVBUFFERAGGRESSIVENESS_MIN 0x00000001 -#define DVBUFFERAGGRESSIVENESS_MAX 0x00000064 -#define DVBUFFERAGGRESSIVENESS_DEFAULT 0x00000000 - -// -// Buffer Quality Value Ranges -// -#define DVBUFFERQUALITY_MIN 0x00000001 -#define DVBUFFERQUALITY_MAX 0x00000064 -#define DVBUFFERQUALITY_DEFAULT 0x00000000 - -#define DVID_SYS 0 - -// -// Used to identify the session host in client/server -// -#define DVID_SERVERPLAYER 1 - -// -// Used to target all players -// -#define DVID_ALLPLAYERS 0 - -// -// Used to identify the main buffer -// -#define DVID_REMAINING 0xFFFFFFFF - -// -// Input level range -// -#define DVINPUTLEVEL_MIN 0x00000000 -#define DVINPUTLEVEL_MAX 0x00000063 // 99 decimal - -#define DVNOTIFYPERIOD_MINPERIOD 20 - - -#define DVPLAYBACKVOLUME_DEFAULT DSBVOLUME_MAX - -#define DVRECORDVOLUME_LAST 0x00000001 - - -// -// Use the default value -// -#define DVTHRESHOLD_DEFAULT 0xFFFFFFFF - -// -// Threshold Ranges -// -#define DVTHRESHOLD_MIN 0x00000000 -#define DVTHRESHOLD_MAX 0x00000063 // 99 decimal - -// -// Threshold field is not used -// -#define DVTHRESHOLD_UNUSED 0xFFFFFFFE - -// -// Session Types -// -#define DVSESSIONTYPE_PEER 0x00000001 -#define DVSESSIONTYPE_MIXING 0x00000002 -#define DVSESSIONTYPE_FORWARDING 0x00000003 -#define DVSESSIONTYPE_ECHO 0x00000004 - -/**************************************************************************** - * - * DirectPlayVoice Flags - * - ****************************************************************************/ - - -// -// Enable automatic adjustment of the recording volume -// -#define DVCLIENTCONFIG_AUTORECORDVOLUME 0x00000008 - -// -// Enable automatic voice activation -// -#define DVCLIENTCONFIG_AUTOVOICEACTIVATED 0x00000020 - -// -// Enable echo suppression -// -#define DVCLIENTCONFIG_ECHOSUPPRESSION 0x08000000 - -// -// Voice Activation manual mode -// -#define DVCLIENTCONFIG_MANUALVOICEACTIVATED 0x00000004 - -// -// Only playback voices that have buffers created for them -// -#define DVCLIENTCONFIG_MUTEGLOBAL 0x00000010 - -// -// Mute the playback -// -#define DVCLIENTCONFIG_PLAYBACKMUTE 0x00000002 - -// -// Mute the recording -// -#define DVCLIENTCONFIG_RECORDMUTE 0x00000001 - -// -// Complete the operation before returning -// -#define DVFLAGS_SYNC 0x00000001 - -// -// Just check to see if wizard has been run, and if so what it's results were -// -#define DVFLAGS_QUERYONLY 0x00000002 - -// -// Shutdown the voice session without migrating the host -// -#define DVFLAGS_NOHOSTMIGRATE 0x00000008 - -// -// Allow the back button to be enabled in the wizard -// -#define DVFLAGS_ALLOWBACK 0x00000010 - -// -// Disable host migration in the voice session -// -#define DVSESSION_NOHOSTMIGRATION 0x00000001 - -// -// Server controlled targetting -// -#define DVSESSION_SERVERCONTROLTARGET 0x00000002 - -// -// Use DirectSound Normal Mode instead of priority -// -#define DVSOUNDCONFIG_NORMALMODE 0x00000001 - -// -// Automatically select the microphone -// -#define DVSOUNDCONFIG_AUTOSELECT 0x00000002 - -// -// Run in half duplex mode -// -#define DVSOUNDCONFIG_HALFDUPLEX 0x00000004 - -// -// No volume controls are available for the recording device -// -#define DVSOUNDCONFIG_NORECVOLAVAILABLE 0x00000010 - -// -// Disable capture sharing -// -#define DVSOUNDCONFIG_NOFOCUS 0x20000000 - -// -// Set system conversion quality to high -// -#define DVSOUNDCONFIG_SETCONVERSIONQUALITY 0x00000008 - -// -// Enable strict focus mode -// -#define DVSOUNDCONFIG_STRICTFOCUS 0x40000000 - -// -// Player is in half duplex mode -// -#define DVPLAYERCAPS_HALFDUPLEX 0x00000001 - -// -// Specifies that player is the local player -// -#define DVPLAYERCAPS_LOCAL 0x00000002 - -/**************************************************************************** - * - * DirectPlayVoice Structures (Non-Message) - * - ****************************************************************************/ - - -// -// DirectPlayVoice Caps -// (GetCaps / SetCaps) -// -typedef struct -{ - DWORD dwSize; // Size of this structure - DWORD dwFlags; // Caps flags -} DVCAPS, *LPDVCAPS, *PDVCAPS; - -// -// DirectPlayVoice Client Configuration -// (Connect / GetClientConfig) -// -typedef struct -{ - DWORD dwSize; // Size of this structure - DWORD dwFlags; // Flags for client config (DVCLIENTCONFIG_...) - LONG lRecordVolume; // Recording volume - LONG lPlaybackVolume; // Playback volume - DWORD dwThreshold; // Voice Activation Threshold - DWORD dwBufferQuality; // Buffer quality - DWORD dwBufferAggressiveness; // Buffer aggressiveness - DWORD dwNotifyPeriod; // Period of notification messages (ms) -} DVCLIENTCONFIG, *LPDVCLIENTCONFIG, *PDVCLIENTCONFIG; - -// -// DirectPlayVoice Compression Type Information -// (GetCompressionTypes) -// -typedef struct -{ - DWORD dwSize; // Size of this structure - GUID guidType; // GUID that identifies this compression type - LPWSTR lpszName; // String name of this compression type - LPWSTR lpszDescription; // Description for this compression type - DWORD dwFlags; // Flags for this compression type - DWORD dwMaxBitsPerSecond; // Maximum # of bit/s this compression type uses -} DVCOMPRESSIONINFO, *LPDVCOMPRESSIONINFO, *PDVCOMPRESSIONINFO; - -// -// DirectPlayVoice Session Description -// (Host / GetSessionDesc) -// -typedef struct -{ - DWORD dwSize; // Size of this structure - DWORD dwFlags; // Session flags (DVSESSION_...) - DWORD dwSessionType; // Session type (DVSESSIONTYPE_...) - GUID guidCT; // Compression Type to use - DWORD dwBufferQuality; // Buffer quality - DWORD dwBufferAggressiveness; // Buffer aggresiveness -} DVSESSIONDESC, *LPDVSESSIONDESC, *PDVSESSIONDESC; - -// -// DirectPlayVoice Client Sound Device Configuration -// (Connect / GetSoundDeviceConfig) -// -typedef struct -{ - DWORD dwSize; // Size of this structure - DWORD dwFlags; // Flags for sound config (DVSOUNDCONFIG_...) - GUID guidPlaybackDevice; // GUID of the playback device to use - LPDIRECTSOUND lpdsPlaybackDevice; // DirectSound Object to use (optional) - GUID guidCaptureDevice; // GUID of the capture device to use - LPDIRECTSOUNDCAPTURE lpdsCaptureDevice; // DirectSoundCapture Object to use (optional) - HWND hwndAppWindow; // HWND of your application's top-level window - LPDIRECTSOUNDBUFFER lpdsMainBuffer; // DirectSoundBuffer to use for playback (optional) - DWORD dwMainBufferFlags; // Flags to pass to Play() on the main buffer - DWORD dwMainBufferPriority; // Priority to set when calling Play() on the main buffer -} DVSOUNDDEVICECONFIG, *LPDVSOUNDDEVICECONFIG, *PDVSOUNDDEVICECONFIG; - -/**************************************************************************** - * - * DirectPlayVoice message handler call back structures - * - ****************************************************************************/ - -// -// Result of the Connect() call. (If it wasn't called Async) -// (DVMSGID_CONNECTRESULT) -// -typedef struct -{ - DWORD dwSize; // Size of this structure - HRESULT hrResult; // Result of the Connect() call -} DVMSG_CONNECTRESULT, *LPDVMSG_CONNECTRESULT, *PDVMSG_CONNECTRESULT; - -// -// A new player has entered the voice session -// (DVMSGID_CREATEVOICEPLAYER) -// -typedef struct -{ - DWORD dwSize; // Size of this structure - DVID dvidPlayer; // DVID of the player who joined - DWORD dwFlags; // Player flags (DVPLAYERCAPS_...) - PVOID pvPlayerContext; // Context value for this player (user set) -} DVMSG_CREATEVOICEPLAYER, *LPDVMSG_CREATEVOICEPLAYER, *PDVMSG_CREATEVOICEPLAYER; - -// -// A player has left the voice session -// (DVMSGID_DELETEVOICEPLAYER) -// -typedef struct -{ - DWORD dwSize; // Size of this structure - DVID dvidPlayer; // DVID of the player who left - PVOID pvPlayerContext; // Context value for the player -} DVMSG_DELETEVOICEPLAYER, *LPDVMSG_DELETEVOICEPLAYER, *PDVMSG_DELETEVOICEPLAYER; - -// -// Result of the Disconnect() call. (If it wasn't called Async) -// (DVMSGID_DISCONNECTRESULT) -// -typedef struct -{ - DWORD dwSize; // Size of this structure - HRESULT hrResult; // Result of the Disconnect() call -} DVMSG_DISCONNECTRESULT, *LPDVMSG_DISCONNECTRESULT, *PDVMSG_DISCONNECTRESULT; - -// -// The voice session host has migrated. -// (DVMSGID_HOSTMIGRATED) -// -typedef struct -{ - DWORD dwSize; // Size of this structure - DVID dvidNewHostID; // DVID of the player who is now the host - LPDIRECTPLAYVOICESERVER pdvServerInterface; - // Pointer to the new host object (if local player is now host) -} DVMSG_HOSTMIGRATED, *LPDVMSG_HOSTMIGRATED, *PDVMSG_HOSTMIGRATED; - -// -// The current input level / recording volume on the local machine -// (DVMSGID_INPUTLEVEL) -// -typedef struct -{ - DWORD dwSize; // Size of this structure - DWORD dwPeakLevel; // Current peak level of the audio - LONG lRecordVolume; // Current recording volume - PVOID pvLocalPlayerContext; // Context value for the local player -} DVMSG_INPUTLEVEL, *LPDVMSG_INPUTLEVEL, *PDVMSG_INPUTLEVEL; - -// -// The local client is about to become the new host -// (DVMSGID_LOCALHOSTSETUP) -// -typedef struct -{ - DWORD dwSize; // Size of this structure - PVOID pvContext; // Context value to be passed to Initialize() of new host object - PDVMESSAGEHANDLER pMessageHandler; // Message handler to be used by new host object -} DVMSG_LOCALHOSTSETUP, *LPDVMSG_LOCALHOSTSETUP, *PDVMSG_LOCALHOSTSETUP; - -// -// The current output level for the combined output of all incoming streams. -// (DVMSGID_OUTPUTLEVEL) -// -typedef struct -{ - DWORD dwSize; // Size of this structure - DWORD dwPeakLevel; // Current peak level of the output - LONG lOutputVolume; // Current playback volume - PVOID pvLocalPlayerContext; // Context value for the local player -} DVMSG_OUTPUTLEVEL, *LPDVMSG_OUTPUTLEVEL, *PDVMSG_OUTPUTLEVEL; - -// -// The current peak level of an individual player's incoming audio stream as it is -// being played back. -// (DVMSGID_PLAYEROUTPUTLEVEL) -// -typedef struct -{ - DWORD dwSize; // Size of this structure - DVID dvidSourcePlayerID; // DVID of the player - DWORD dwPeakLevel; // Peak level of the player's stream - PVOID pvPlayerContext; // Context value for the player -} DVMSG_PLAYEROUTPUTLEVEL, *LPDVMSG_PLAYEROUTPUTLEVEL, *PDVMSG_PLAYEROUTPUTLEVEL; - -// -// An audio stream from the specified player has started playing back on the local client. -// (DVMSGID_PLAYERVOICESTART). -// -typedef struct -{ - DWORD dwSize; // Size of this structure - DVID dvidSourcePlayerID; // DVID of the Player - PVOID pvPlayerContext; // Context value for this player -} DVMSG_PLAYERVOICESTART, *LPDVMSG_PLAYERVOICESTART, *PDVMSG_PLAYERVOICESTART; - -// -// The audio stream from the specified player has stopped playing back on the local client. -// (DVMSGID_PLAYERVOICESTOP) -// -typedef struct -{ - DWORD dwSize; // Size of this structure - DVID dvidSourcePlayerID; // DVID of the player - PVOID pvPlayerContext; // Context value for this player -} DVMSG_PLAYERVOICESTOP, *LPDVMSG_PLAYERVOICESTOP, *PDVMSG_PLAYERVOICESTOP; - -// -// Transmission has started on the local machine -// (DVMSGID_RECORDSTART) -// -typedef struct -{ - DWORD dwSize; // Size of this structure - DWORD dwPeakLevel; // Peak level that caused transmission to start - PVOID pvLocalPlayerContext; // Context value for the local player -} DVMSG_RECORDSTART, *LPDVMSG_RECORDSTART, *PDVMSG_RECORDSTART; - -// -// Transmission has stopped on the local machine -// (DVMSGID_RECORDSTOP) -// -typedef struct -{ - DWORD dwSize; // Size of this structure - DWORD dwPeakLevel; // Peak level that caused transmission to stop - PVOID pvLocalPlayerContext; // Context value for the local player -} DVMSG_RECORDSTOP, *LPDVMSG_RECORDSTOP, *PDVMSG_RECORDSTOP; - -// -// The voice session has been lost -// (DVMSGID_SESSIONLOST) -// -typedef struct -{ - DWORD dwSize; // Size of this structure - HRESULT hrResult; // Reason the session was disconnected -} DVMSG_SESSIONLOST, *LPDVMSG_SESSIONLOST, *PDVMSG_SESSIONLOST; - -// -// The target list has been updated for the local client -// (DVMSGID_SETTARGETS) -// -typedef struct -{ - DWORD dwSize; // Size of this structure - DWORD dwNumTargets; // # of targets - PDVID pdvidTargets; // An array of DVIDs specifying the current targets -} DVMSG_SETTARGETS, *LPDVMSG_SETTARGETS, *PDVMSG_SETTARGETS; - - -/**************************************************************************** - * - * DirectPlayVoice Functions - * - ****************************************************************************/ - -/* - * - * This function is no longer supported. It is recommended that CoCreateInstance be used to create - * DirectPlay voice objects. - * - * extern HRESULT WINAPI DirectPlayVoiceCreate( const GUID * pcIID, void **ppvInterface, IUnknown *pUnknown); - * - */ - -/**************************************************************************** - * - * DirectPlay8 Application Interfaces - * - ****************************************************************************/ - -#undef INTERFACE -#define INTERFACE IDirectPlayVoiceClient -DECLARE_INTERFACE_( IDirectPlayVoiceClient, IUnknown ) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface)(THIS_ REFIID riid, PVOID *ppvObj) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - /*** IDirectPlayVoiceClient methods ***/ - STDMETHOD_(HRESULT, Initialize) (THIS_ LPUNKNOWN, PDVMESSAGEHANDLER, PVOID, PDWORD, DWORD ) PURE; - STDMETHOD_(HRESULT, Connect) (THIS_ PDVSOUNDDEVICECONFIG, PDVCLIENTCONFIG, DWORD ) PURE; - STDMETHOD_(HRESULT, Disconnect) (THIS_ DWORD ) PURE; - STDMETHOD_(HRESULT, GetSessionDesc)(THIS_ PDVSESSIONDESC ) PURE; - STDMETHOD_(HRESULT, GetClientConfig)(THIS_ PDVCLIENTCONFIG ) PURE; - STDMETHOD_(HRESULT, SetClientConfig)(THIS_ PDVCLIENTCONFIG ) PURE; - STDMETHOD_(HRESULT, GetCaps) (THIS_ PDVCAPS ) PURE; - STDMETHOD_(HRESULT, GetCompressionTypes)( THIS_ PVOID, PDWORD, PDWORD, DWORD ) PURE; - STDMETHOD_(HRESULT, SetTransmitTargets)( THIS_ PDVID, DWORD, DWORD ) PURE; - STDMETHOD_(HRESULT, GetTransmitTargets)( THIS_ PDVID, PDWORD, DWORD ) PURE; - STDMETHOD_(HRESULT, Create3DSoundBuffer)( THIS_ DVID, LPDIRECTSOUNDBUFFER, DWORD, DWORD, LPDIRECTSOUND3DBUFFER * ) PURE; - STDMETHOD_(HRESULT, Delete3DSoundBuffer)( THIS_ DVID, LPDIRECTSOUND3DBUFFER * ) PURE; - STDMETHOD_(HRESULT, SetNotifyMask)( THIS_ PDWORD, DWORD ) PURE; - STDMETHOD_(HRESULT, GetSoundDeviceConfig)( THIS_ PDVSOUNDDEVICECONFIG, PDWORD ) PURE; -}; - - -#undef INTERFACE -#define INTERFACE IDirectPlayVoiceServer -DECLARE_INTERFACE_( IDirectPlayVoiceServer, IUnknown ) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - /*** IDirectPlayVoiceServer methods ***/ - STDMETHOD_(HRESULT, Initialize) (THIS_ LPUNKNOWN, PDVMESSAGEHANDLER, PVOID, LPDWORD, DWORD ) PURE; - STDMETHOD_(HRESULT, StartSession) (THIS_ PDVSESSIONDESC, DWORD ) PURE; - STDMETHOD_(HRESULT, StopSession) (THIS_ DWORD ) PURE; - STDMETHOD_(HRESULT, GetSessionDesc)(THIS_ PDVSESSIONDESC ) PURE; - STDMETHOD_(HRESULT, SetSessionDesc)(THIS_ PDVSESSIONDESC ) PURE; - STDMETHOD_(HRESULT, GetCaps) (THIS_ PDVCAPS ) PURE; - STDMETHOD_(HRESULT, GetCompressionTypes)( THIS_ PVOID, PDWORD, PDWORD, DWORD ) PURE; - STDMETHOD_(HRESULT, SetTransmitTargets)( THIS_ DVID, PDVID, DWORD, DWORD ) PURE; - STDMETHOD_(HRESULT, GetTransmitTargets)( THIS_ DVID, PDVID, PDWORD, DWORD ) PURE; - STDMETHOD_(HRESULT, SetNotifyMask)( THIS_ PDWORD, DWORD ) PURE; -}; - -#undef INTERFACE -#define INTERFACE IDirectPlayVoiceTest -DECLARE_INTERFACE_( IDirectPlayVoiceTest, IUnknown ) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface) (THIS_ REFIID riid, PVOID * ppvObj) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - /*** IDirectPlayVoiceTest methods ***/ - STDMETHOD_(HRESULT, CheckAudioSetup) (THIS_ const GUID *, const GUID * , HWND, DWORD ) PURE; -}; - -#if !defined(__cplusplus) || defined(CINTERFACE) - -#define IDirectPlayVoiceClient_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IDirectPlayVoiceClient_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDirectPlayVoiceClient_Release(p) (p)->lpVtbl->Release(p) - -#define IDirectPlayVoiceClient_Initialize(p,a,b,c,d,e) (p)->lpVtbl->Initialize(p,a,b,c,d,e) -#define IDirectPlayVoiceClient_Connect(p,a,b,c) (p)->lpVtbl->Connect(p,a,b,c) -#define IDirectPlayVoiceClient_Disconnect(p,a) (p)->lpVtbl->Disconnect(p,a) -#define IDirectPlayVoiceClient_GetSessionDesc(p,a) (p)->lpVtbl->GetSessionDesc(p,a) -#define IDirectPlayVoiceClient_GetClientConfig(p,a) (p)->lpVtbl->GetClientConfig(p,a) -#define IDirectPlayVoiceClient_SetClientConfig(p,a) (p)->lpVtbl->SetClientConfig(p,a) -#define IDirectPlayVoiceClient_GetCaps(p,a) (p)->lpVtbl->GetCaps(p,a) -#define IDirectPlayVoiceClient_GetCompressionTypes(p,a,b,c,d) (p)->lpVtbl->GetCompressionTypes(p,a,b,c,d) -#define IDirectPlayVoiceClient_SetTransmitTargets(p,a,b,c) (p)->lpVtbl->SetTransmitTargets(p,a,b,c) -#define IDirectPlayVoiceClient_GetTransmitTargets(p,a,b,c) (p)->lpVtbl->GetTransmitTargets(p,a,b,c) -#define IDirectPlayVoiceClient_Create3DSoundBuffer(p,a,b,c,d,e) (p)->lpVtbl->Create3DSoundBuffer(p,a,b,c,d,e) -#define IDirectPlayVoiceClient_Delete3DSoundBuffer(p,a,b) (p)->lpVtbl->Delete3DSoundBuffer(p,a,b) -#define IDirectPlayVoiceClient_SetNotifyMask(p,a,b) (p)->lpVtbl->SetNotifyMask(p,a,b) -#define IDirectPlayVoiceClient_GetSoundDeviceConfig(p,a,b) (p)->lpVtbl->GetSoundDeviceConfig(p,a,b) - -#define IDirectPlayVoiceServer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IDirectPlayVoiceServer_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDirectPlayVoiceServer_Release(p) (p)->lpVtbl->Release(p) - -#define IDirectPlayVoiceServer_Initialize(p,a,b,c,d,e) (p)->lpVtbl->Initialize(p,a,b,c,d,e) -#define IDirectPlayVoiceServer_StartSession(p,a,b) (p)->lpVtbl->StartSession(p,a,b) -#define IDirectPlayVoiceServer_StopSession(p,a) (p)->lpVtbl->StopSession(p,a) -#define IDirectPlayVoiceServer_GetSessionDesc(p,a) (p)->lpVtbl->GetSessionDesc(p,a) -#define IDirectPlayVoiceServer_SetSessionDesc(p,a) (p)->lpVtbl->SetSessionDesc(p,a) -#define IDirectPlayVoiceServer_GetCaps(p,a) (p)->lpVtbl->GetCaps(p,a) -#define IDirectPlayVoiceServer_GetCompressionTypes(p,a,b,c,d) (p)->lpVtbl->GetCompressionTypes(p,a,b,c,d) -#define IDirectPlayVoiceServer_SetTransmitTargets(p,a,b,c,d) (p)->lpVtbl->SetTransmitTargets(p,a,b,c,d) -#define IDirectPlayVoiceServer_GetTransmitTargets(p,a,b,c,d) (p)->lpVtbl->GetTransmitTargets(p,a,b,c,d) -#define IDirectPlayVoiceServer_SetNotifyMask(p,a,b) (p)->lpVtbl->SetNotifyMask(p,a,b) -#define IDirectPlayVoiceTest_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IDirectPlayVoiceTest_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDirectPlayVoiceTest_Release(p) (p)->lpVtbl->Release(p) -#define IDirectPlayVoiceTest_CheckAudioSetup(p,a,b,c,d) (p)->lpVtbl->CheckAudioSetup(p,a,b,c,d) - - -#else /* C++ */ - -#define IDirectPlayVoiceClient_QueryInterface(p,a,b) (p)->QueryInterface(a,b) -#define IDirectPlayVoiceClient_AddRef(p) (p)->AddRef() -#define IDirectPlayVoiceClient_Release(p) (p)->Release() - -#define IDirectPlayVoiceClient_Initialize(p,a,b,c,d,e) (p)->Initialize(a,b,c,d,e) -#define IDirectPlayVoiceClient_Connect(p,a,b,c) (p)->Connect(a,b,c) -#define IDirectPlayVoiceClient_Disconnect(p,a) (p)->Disconnect(a) -#define IDirectPlayVoiceClient_GetSessionDesc(p,a) (p)->GetSessionDesc(a) -#define IDirectPlayVoiceClient_GetClientConfig(p,a) (p)->GetClientConfig(a) -#define IDirectPlayVoiceClient_SetClientConfig(p,a) (p)->SetClientConfig(a) -#define IDirectPlayVoiceClient_GetCaps(p,a) (p)->GetCaps(a) -#define IDirectPlayVoiceClient_GetCompressionTypes(p,a,b,c,d) (p)->GetCompressionTypes(a,b,c,d) -#define IDirectPlayVoiceClient_SetTransmitTargets(p,a,b,c) (p)->SetTransmitTargets(a,b,c) -#define IDirectPlayVoiceClient_GetTransmitTargets(p,a,b,c) (p)->GetTransmitTargets(a,b,c) -#define IDirectPlayVoiceClient_Create3DSoundBuffer(p,a,b,c,d,e) (p)->Create3DSoundBuffer(a,b,c,d,e) -#define IDirectPlayVoiceClient_Delete3DSoundBuffer(p,a,b) (p)->Delete3DSoundBuffer(a,b) -#define IDirectPlayVoiceClient_SetNotifyMask(p,a,b) (p)->SetNotifyMask(a,b) -#define IDirectPlayVoiceClient_GetSoundDeviceConfig(p,a,b) (p)->GetSoundDeviceConfig(a,b) - -#define IDirectPlayVoiceServer_QueryInterface(p,a,b) (p)->QueryInterface(a,b) -#define IDirectPlayVoiceServer_AddRef(p) (p)->AddRef() -#define IDirectPlayVoiceServer_Release(p) (p)->Release() - -#define IDirectPlayVoiceServer_Initialize(p,a,b,c,d,e) (p)->Initialize(a,b,c,d,e) -#define IDirectPlayVoiceServer_StartSession(p,a,b) (p)->StartSession(a,b) -#define IDirectPlayVoiceServer_StopSession(p,a) (p)->StopSession(a) -#define IDirectPlayVoiceServer_GetSessionDesc(p,a) (p)->GetSessionDesc(a) -#define IDirectPlayVoiceServer_SetSessionDesc(p,a) (p)->SetSessionDesc(a) -#define IDirectPlayVoiceServer_GetCaps(p,a) (p)->GetCaps(a) -#define IDirectPlayVoiceServer_GetCompressionTypes(p,a,b,c,d) (p)->GetCompressionTypes(a,b,c,d) -#define IDirectPlayVoiceServer_SetTransmitTargets(p,a,b,c,d) (p)->SetTransmitTargets(a,b,c,d) -#define IDirectPlayVoiceServer_GetTransmitTargets(p,a,b,c,d) (p)->GetTransmitTargets(a,b,c,d) -#define IDirectPlayVoiceServer_SetNotifyMask(p,a,b) (p)->SetNotifyMask(a,b) - -#define IDirectPlayVoiceTest_QueryInterface(p,a,b) (p)->QueryInterface(a,b) -#define IDirectPlayVoiceTest_AddRef(p) (p)->AddRef() -#define IDirectPlayVoiceTest_Release(p) (p)->Release() -#define IDirectPlayVoiceTest_CheckAudioSetup(p,a,b,c,d) (p)->CheckAudioSetup(a,b,c,d) - - -#endif - - -/**************************************************************************** - * - * DIRECTPLAYVOICE ERRORS - * - * Errors are represented by negative values and cannot be combined. - * - ****************************************************************************/ - -#define _FACDPV 0x15 -#define MAKE_DVHRESULT( code ) MAKE_HRESULT( 1, _FACDPV, code ) - -#define DV_OK S_OK -#define DV_FULLDUPLEX MAKE_HRESULT( 0, _FACDPV, 0x0005 ) -#define DV_HALFDUPLEX MAKE_HRESULT( 0, _FACDPV, 0x000A ) -#define DV_PENDING MAKE_HRESULT( 0, _FACDPV, 0x0010 ) - -#define DVERR_BUFFERTOOSMALL MAKE_DVHRESULT( 0x001E ) -#define DVERR_EXCEPTION MAKE_DVHRESULT( 0x004A ) -#define DVERR_GENERIC E_FAIL -#define DVERR_INVALIDFLAGS MAKE_DVHRESULT( 0x0078 ) -#define DVERR_INVALIDOBJECT MAKE_DVHRESULT( 0x0082 ) -#define DVERR_INVALIDPARAM E_INVALIDARG -#define DVERR_INVALIDPLAYER MAKE_DVHRESULT( 0x0087 ) -#define DVERR_INVALIDGROUP MAKE_DVHRESULT( 0x0091 ) -#define DVERR_INVALIDHANDLE MAKE_DVHRESULT( 0x0096 ) -#define DVERR_OUTOFMEMORY E_OUTOFMEMORY -#define DVERR_PENDING DV_PENDING -#define DVERR_NOTSUPPORTED E_NOTIMPL -#define DVERR_NOINTERFACE E_NOINTERFACE -#define DVERR_SESSIONLOST MAKE_DVHRESULT( 0x012C ) -#define DVERR_NOVOICESESSION MAKE_DVHRESULT( 0x012E ) -#define DVERR_CONNECTIONLOST MAKE_DVHRESULT( 0x0168 ) -#define DVERR_NOTINITIALIZED MAKE_DVHRESULT( 0x0169 ) -#define DVERR_CONNECTED MAKE_DVHRESULT( 0x016A ) -#define DVERR_NOTCONNECTED MAKE_DVHRESULT( 0x016B ) -#define DVERR_CONNECTABORTING MAKE_DVHRESULT( 0x016E ) -#define DVERR_NOTALLOWED MAKE_DVHRESULT( 0x016F ) -#define DVERR_INVALIDTARGET MAKE_DVHRESULT( 0x0170 ) -#define DVERR_TRANSPORTNOTHOST MAKE_DVHRESULT( 0x0171 ) -#define DVERR_COMPRESSIONNOTSUPPORTED MAKE_DVHRESULT( 0x0172 ) -#define DVERR_ALREADYPENDING MAKE_DVHRESULT( 0x0173 ) -#define DVERR_SOUNDINITFAILURE MAKE_DVHRESULT( 0x0174 ) -#define DVERR_TIMEOUT MAKE_DVHRESULT( 0x0175 ) -#define DVERR_CONNECTABORTED MAKE_DVHRESULT( 0x0176 ) -#define DVERR_NO3DSOUND MAKE_DVHRESULT( 0x0177 ) -#define DVERR_ALREADYBUFFERED MAKE_DVHRESULT( 0x0178 ) -#define DVERR_NOTBUFFERED MAKE_DVHRESULT( 0x0179 ) -#define DVERR_HOSTING MAKE_DVHRESULT( 0x017A ) -#define DVERR_NOTHOSTING MAKE_DVHRESULT( 0x017B ) -#define DVERR_INVALIDDEVICE MAKE_DVHRESULT( 0x017C ) -#define DVERR_RECORDSYSTEMERROR MAKE_DVHRESULT( 0x017D ) -#define DVERR_PLAYBACKSYSTEMERROR MAKE_DVHRESULT( 0x017E ) -#define DVERR_SENDERROR MAKE_DVHRESULT( 0x017F ) -#define DVERR_USERCANCEL MAKE_DVHRESULT( 0x0180 ) -#define DVERR_RUNSETUP MAKE_DVHRESULT( 0x0183 ) -#define DVERR_INCOMPATIBLEVERSION MAKE_DVHRESULT( 0x0184 ) -#define DVERR_INITIALIZED MAKE_DVHRESULT( 0x0187 ) -#define DVERR_INVALIDPOINTER E_POINTER -#define DVERR_NOTRANSPORT MAKE_DVHRESULT( 0x0188 ) -#define DVERR_NOCALLBACK MAKE_DVHRESULT( 0x0189 ) -#define DVERR_TRANSPORTNOTINIT MAKE_DVHRESULT( 0x018A ) -#define DVERR_TRANSPORTNOSESSION MAKE_DVHRESULT( 0x018B ) -#define DVERR_TRANSPORTNOPLAYER MAKE_DVHRESULT( 0x018C ) -#define DVERR_USERBACK MAKE_DVHRESULT( 0x018D ) -#define DVERR_NORECVOLAVAILABLE MAKE_DVHRESULT( 0x018E ) -#define DVERR_INVALIDBUFFER MAKE_DVHRESULT( 0x018F ) -#define DVERR_LOCKEDBUFFER MAKE_DVHRESULT( 0x0190 ) - -#ifdef __cplusplus -} -#endif - -#endif - - +/*==========================================================================; + * + * Copyright (C) 1999 Microsoft Corporation. All Rights Reserved. + * + * File: dpvoice.h + * Content: DirectPlayVoice include file + ***************************************************************************/ + +#ifndef __DVOICE__ +#define __DVOICE__ + +#include // for DECLARE_INTERFACE and HRESULT +#include +#include +#include +#include "dsound.h" + +#ifdef __cplusplus +extern "C" { +#endif + + +/**************************************************************************** + * + * DirectPlayVoice CLSIDs + * + ****************************************************************************/ + + +// {B9F3EB85-B781-4ac1-8D90-93A05EE37D7D} +DEFINE_GUID(CLSID_DirectPlayVoiceClient, +0xb9f3eb85, 0xb781, 0x4ac1, 0x8d, 0x90, 0x93, 0xa0, 0x5e, 0xe3, 0x7d, 0x7d); + +// {D3F5B8E6-9B78-4a4c-94EA-CA2397B663D3} +DEFINE_GUID(CLSID_DirectPlayVoiceServer, +0xd3f5b8e6, 0x9b78, 0x4a4c, 0x94, 0xea, 0xca, 0x23, 0x97, 0xb6, 0x63, 0xd3); + +// {0F0F094B-B01C-4091-A14D-DD0CD807711A} +DEFINE_GUID(CLSID_DirectPlayVoiceTest, +0xf0f094b, 0xb01c, 0x4091, 0xa1, 0x4d, 0xdd, 0xc, 0xd8, 0x7, 0x71, 0x1a); + +/**************************************************************************** + * + * DirectPlayVoice Interface IIDs + * + ****************************************************************************/ + + +// {1DFDC8EA-BCF7-41d6-B295-AB64B3B23306} +DEFINE_GUID(IID_IDirectPlayVoiceClient, +0x1dfdc8ea, 0xbcf7, 0x41d6, 0xb2, 0x95, 0xab, 0x64, 0xb3, 0xb2, 0x33, 0x6); + +// {FAA1C173-0468-43b6-8A2A-EA8A4F2076C9} +DEFINE_GUID(IID_IDirectPlayVoiceServer, +0xfaa1c173, 0x468, 0x43b6, 0x8a, 0x2a, 0xea, 0x8a, 0x4f, 0x20, 0x76, 0xc9); + +// {D26AF734-208B-41da-8224-E0CE79810BE1} +DEFINE_GUID(IID_IDirectPlayVoiceTest, +0xd26af734, 0x208b, 0x41da, 0x82, 0x24, 0xe0, 0xce, 0x79, 0x81, 0xb, 0xe1); + +/**************************************************************************** + * + * DirectPlayVoice Compression Type GUIDs + * + ****************************************************************************/ + +// MS-ADPCM 32.8 kbit/s +// +// {699B52C1-A885-46a8-A308-97172419ADC7} +DEFINE_GUID(DPVCTGUID_ADPCM, +0x699b52c1, 0xa885, 0x46a8, 0xa3, 0x8, 0x97, 0x17, 0x24, 0x19, 0xad, 0xc7); + +// Microsoft GSM 6.10 13 kbit/s +// +// {24768C60-5A0D-11d3-9BE4-525400D985E7} +DEFINE_GUID(DPVCTGUID_GSM, +0x24768c60, 0x5a0d, 0x11d3, 0x9b, 0xe4, 0x52, 0x54, 0x0, 0xd9, 0x85, 0xe7); + +// MS-PCM 64 kbit/s +// +// {8DE12FD4-7CB3-48ce-A7E8-9C47A22E8AC5} +DEFINE_GUID(DPVCTGUID_NONE, +0x8de12fd4, 0x7cb3, 0x48ce, 0xa7, 0xe8, 0x9c, 0x47, 0xa2, 0x2e, 0x8a, 0xc5); + +// Voxware SC03 3.2kbit/s +// +// {7D82A29B-2242-4f82-8F39-5D1153DF3E41} +DEFINE_GUID(DPVCTGUID_SC03, +0x7d82a29b, 0x2242, 0x4f82, 0x8f, 0x39, 0x5d, 0x11, 0x53, 0xdf, 0x3e, 0x41); + +// Voxware SC06 6.4kbit/s +// +// {53DEF900-7168-4633-B47F-D143916A13C7} +DEFINE_GUID(DPVCTGUID_SC06, +0x53def900, 0x7168, 0x4633, 0xb4, 0x7f, 0xd1, 0x43, 0x91, 0x6a, 0x13, 0xc7); + +// TrueSpeech(TM) 8.6 kbit/s +// +// {D7954361-5A0B-11d3-9BE4-525400D985E7} +DEFINE_GUID(DPVCTGUID_TRUESPEECH, +0xd7954361, 0x5a0b, 0x11d3, 0x9b, 0xe4, 0x52, 0x54, 0x0, 0xd9, 0x85, 0xe7); + +// Voxware VR12 1.4kbit/s +// +// {FE44A9FE-8ED4-48bf-9D66-1B1ADFF9FF6D} +DEFINE_GUID(DPVCTGUID_VR12, +0xfe44a9fe, 0x8ed4, 0x48bf, 0x9d, 0x66, 0x1b, 0x1a, 0xdf, 0xf9, 0xff, 0x6d); + +// Define the default compression type +#define DPVCTGUID_DEFAULT DPVCTGUID_SC03 + +/**************************************************************************** + * + * DirectPlayVoice Interface Pointer definitions + * + ****************************************************************************/ + +typedef struct IDirectPlayVoiceClient FAR *LPDIRECTPLAYVOICECLIENT, *PDIRECTPLAYVOICECLIENT; +typedef struct IDirectPlayVoiceServer FAR *LPDIRECTPLAYVOICESERVER, *PDIRECTPLAYVOICESERVER; +typedef struct IDirectPlayVoiceTest FAR *LPDIRECTPLAYVOICETEST, *PDIRECTPLAYVOICETEST; + +/**************************************************************************** + * + * DirectPlayVoice Callback Functions + * + ****************************************************************************/ +typedef HRESULT (FAR PASCAL *PDVMESSAGEHANDLER)( + PVOID pvUserContext, + DWORD dwMessageType, + LPVOID lpMessage +); + +typedef PDVMESSAGEHANDLER LPDVMESSAGEHANDLER; + +/**************************************************************************** + * + * DirectPlayVoice Datatypes (Non-Structure / Non-Message) + * + ****************************************************************************/ + +typedef DWORD DVID, *LPDVID, *PDVID; + +/**************************************************************************** + * + * DirectPlayVoice Message Types + * + ****************************************************************************/ + +#define DVMSGID_BASE 0x0000 + +#define DVMSGID_MINBASE (DVMSGID_CREATEVOICEPLAYER) +#define DVMSGID_CREATEVOICEPLAYER (DVMSGID_BASE+0x0001) +#define DVMSGID_DELETEVOICEPLAYER (DVMSGID_BASE+0x0002) +#define DVMSGID_SESSIONLOST (DVMSGID_BASE+0x0003) +#define DVMSGID_PLAYERVOICESTART (DVMSGID_BASE+0x0004) +#define DVMSGID_PLAYERVOICESTOP (DVMSGID_BASE+0x0005) +#define DVMSGID_RECORDSTART (DVMSGID_BASE+0x0006) +#define DVMSGID_RECORDSTOP (DVMSGID_BASE+0x0007) +#define DVMSGID_CONNECTRESULT (DVMSGID_BASE+0x0008) +#define DVMSGID_DISCONNECTRESULT (DVMSGID_BASE+0x0009) +#define DVMSGID_INPUTLEVEL (DVMSGID_BASE+0x000A) +#define DVMSGID_OUTPUTLEVEL (DVMSGID_BASE+0x000B) +#define DVMSGID_HOSTMIGRATED (DVMSGID_BASE+0x000C) +#define DVMSGID_SETTARGETS (DVMSGID_BASE+0x000D) +#define DVMSGID_PLAYEROUTPUTLEVEL (DVMSGID_BASE+0x000E) +#define DVMSGID_LOSTFOCUS (DVMSGID_BASE+0x0010) +#define DVMSGID_GAINFOCUS (DVMSGID_BASE+0x0011) +#define DVMSGID_LOCALHOSTSETUP (DVMSGID_BASE+0x0012) +#define DVMSGID_MAXBASE (DVMSGID_LOCALHOSTSETUP) + +/**************************************************************************** + * + * DirectPlayVoice Constants + * + ****************************************************************************/ + +// +// Buffer Aggresiveness Value Ranges +// +#define DVBUFFERAGGRESSIVENESS_MIN 0x00000001 +#define DVBUFFERAGGRESSIVENESS_MAX 0x00000064 +#define DVBUFFERAGGRESSIVENESS_DEFAULT 0x00000000 + +// +// Buffer Quality Value Ranges +// +#define DVBUFFERQUALITY_MIN 0x00000001 +#define DVBUFFERQUALITY_MAX 0x00000064 +#define DVBUFFERQUALITY_DEFAULT 0x00000000 + +#define DVID_SYS 0 + +// +// Used to identify the session host in client/server +// +#define DVID_SERVERPLAYER 1 + +// +// Used to target all players +// +#define DVID_ALLPLAYERS 0 + +// +// Used to identify the main buffer +// +#define DVID_REMAINING 0xFFFFFFFF + +// +// Input level range +// +#define DVINPUTLEVEL_MIN 0x00000000 +#define DVINPUTLEVEL_MAX 0x00000063 // 99 decimal + +#define DVNOTIFYPERIOD_MINPERIOD 20 + + +#define DVPLAYBACKVOLUME_DEFAULT DSBVOLUME_MAX + +#define DVRECORDVOLUME_LAST 0x00000001 + + +// +// Use the default value +// +#define DVTHRESHOLD_DEFAULT 0xFFFFFFFF + +// +// Threshold Ranges +// +#define DVTHRESHOLD_MIN 0x00000000 +#define DVTHRESHOLD_MAX 0x00000063 // 99 decimal + +// +// Threshold field is not used +// +#define DVTHRESHOLD_UNUSED 0xFFFFFFFE + +// +// Session Types +// +#define DVSESSIONTYPE_PEER 0x00000001 +#define DVSESSIONTYPE_MIXING 0x00000002 +#define DVSESSIONTYPE_FORWARDING 0x00000003 +#define DVSESSIONTYPE_ECHO 0x00000004 + +/**************************************************************************** + * + * DirectPlayVoice Flags + * + ****************************************************************************/ + + +// +// Enable automatic adjustment of the recording volume +// +#define DVCLIENTCONFIG_AUTORECORDVOLUME 0x00000008 + +// +// Enable automatic voice activation +// +#define DVCLIENTCONFIG_AUTOVOICEACTIVATED 0x00000020 + +// +// Enable echo suppression +// +#define DVCLIENTCONFIG_ECHOSUPPRESSION 0x08000000 + +// +// Voice Activation manual mode +// +#define DVCLIENTCONFIG_MANUALVOICEACTIVATED 0x00000004 + +// +// Only playback voices that have buffers created for them +// +#define DVCLIENTCONFIG_MUTEGLOBAL 0x00000010 + +// +// Mute the playback +// +#define DVCLIENTCONFIG_PLAYBACKMUTE 0x00000002 + +// +// Mute the recording +// +#define DVCLIENTCONFIG_RECORDMUTE 0x00000001 + +// +// Complete the operation before returning +// +#define DVFLAGS_SYNC 0x00000001 + +// +// Just check to see if wizard has been run, and if so what it's results were +// +#define DVFLAGS_QUERYONLY 0x00000002 + +// +// Shutdown the voice session without migrating the host +// +#define DVFLAGS_NOHOSTMIGRATE 0x00000008 + +// +// Allow the back button to be enabled in the wizard +// +#define DVFLAGS_ALLOWBACK 0x00000010 + +// +// Disable host migration in the voice session +// +#define DVSESSION_NOHOSTMIGRATION 0x00000001 + +// +// Server controlled targetting +// +#define DVSESSION_SERVERCONTROLTARGET 0x00000002 + +// +// Use DirectSound Normal Mode instead of priority +// +#define DVSOUNDCONFIG_NORMALMODE 0x00000001 + +// +// Automatically select the microphone +// +#define DVSOUNDCONFIG_AUTOSELECT 0x00000002 + +// +// Run in half duplex mode +// +#define DVSOUNDCONFIG_HALFDUPLEX 0x00000004 + +// +// No volume controls are available for the recording device +// +#define DVSOUNDCONFIG_NORECVOLAVAILABLE 0x00000010 + +// +// Disable capture sharing +// +#define DVSOUNDCONFIG_NOFOCUS 0x20000000 + +// +// Set system conversion quality to high +// +#define DVSOUNDCONFIG_SETCONVERSIONQUALITY 0x00000008 + +// +// Enable strict focus mode +// +#define DVSOUNDCONFIG_STRICTFOCUS 0x40000000 + +// +// Player is in half duplex mode +// +#define DVPLAYERCAPS_HALFDUPLEX 0x00000001 + +// +// Specifies that player is the local player +// +#define DVPLAYERCAPS_LOCAL 0x00000002 + +/**************************************************************************** + * + * DirectPlayVoice Structures (Non-Message) + * + ****************************************************************************/ + + +// +// DirectPlayVoice Caps +// (GetCaps / SetCaps) +// +typedef struct +{ + DWORD dwSize; // Size of this structure + DWORD dwFlags; // Caps flags +} DVCAPS, *LPDVCAPS, *PDVCAPS; + +// +// DirectPlayVoice Client Configuration +// (Connect / GetClientConfig) +// +typedef struct +{ + DWORD dwSize; // Size of this structure + DWORD dwFlags; // Flags for client config (DVCLIENTCONFIG_...) + LONG lRecordVolume; // Recording volume + LONG lPlaybackVolume; // Playback volume + DWORD dwThreshold; // Voice Activation Threshold + DWORD dwBufferQuality; // Buffer quality + DWORD dwBufferAggressiveness; // Buffer aggressiveness + DWORD dwNotifyPeriod; // Period of notification messages (ms) +} DVCLIENTCONFIG, *LPDVCLIENTCONFIG, *PDVCLIENTCONFIG; + +// +// DirectPlayVoice Compression Type Information +// (GetCompressionTypes) +// +typedef struct +{ + DWORD dwSize; // Size of this structure + GUID guidType; // GUID that identifies this compression type + LPWSTR lpszName; // String name of this compression type + LPWSTR lpszDescription; // Description for this compression type + DWORD dwFlags; // Flags for this compression type + DWORD dwMaxBitsPerSecond; // Maximum # of bit/s this compression type uses +} DVCOMPRESSIONINFO, *LPDVCOMPRESSIONINFO, *PDVCOMPRESSIONINFO; + +// +// DirectPlayVoice Session Description +// (Host / GetSessionDesc) +// +typedef struct +{ + DWORD dwSize; // Size of this structure + DWORD dwFlags; // Session flags (DVSESSION_...) + DWORD dwSessionType; // Session type (DVSESSIONTYPE_...) + GUID guidCT; // Compression Type to use + DWORD dwBufferQuality; // Buffer quality + DWORD dwBufferAggressiveness; // Buffer aggresiveness +} DVSESSIONDESC, *LPDVSESSIONDESC, *PDVSESSIONDESC; + +// +// DirectPlayVoice Client Sound Device Configuration +// (Connect / GetSoundDeviceConfig) +// +typedef struct +{ + DWORD dwSize; // Size of this structure + DWORD dwFlags; // Flags for sound config (DVSOUNDCONFIG_...) + GUID guidPlaybackDevice; // GUID of the playback device to use + LPDIRECTSOUND lpdsPlaybackDevice; // DirectSound Object to use (optional) + GUID guidCaptureDevice; // GUID of the capture device to use + LPDIRECTSOUNDCAPTURE lpdsCaptureDevice; // DirectSoundCapture Object to use (optional) + HWND hwndAppWindow; // HWND of your application's top-level window + LPDIRECTSOUNDBUFFER lpdsMainBuffer; // DirectSoundBuffer to use for playback (optional) + DWORD dwMainBufferFlags; // Flags to pass to Play() on the main buffer + DWORD dwMainBufferPriority; // Priority to set when calling Play() on the main buffer +} DVSOUNDDEVICECONFIG, *LPDVSOUNDDEVICECONFIG, *PDVSOUNDDEVICECONFIG; + +/**************************************************************************** + * + * DirectPlayVoice message handler call back structures + * + ****************************************************************************/ + +// +// Result of the Connect() call. (If it wasn't called Async) +// (DVMSGID_CONNECTRESULT) +// +typedef struct +{ + DWORD dwSize; // Size of this structure + HRESULT hrResult; // Result of the Connect() call +} DVMSG_CONNECTRESULT, *LPDVMSG_CONNECTRESULT, *PDVMSG_CONNECTRESULT; + +// +// A new player has entered the voice session +// (DVMSGID_CREATEVOICEPLAYER) +// +typedef struct +{ + DWORD dwSize; // Size of this structure + DVID dvidPlayer; // DVID of the player who joined + DWORD dwFlags; // Player flags (DVPLAYERCAPS_...) + PVOID pvPlayerContext; // Context value for this player (user set) +} DVMSG_CREATEVOICEPLAYER, *LPDVMSG_CREATEVOICEPLAYER, *PDVMSG_CREATEVOICEPLAYER; + +// +// A player has left the voice session +// (DVMSGID_DELETEVOICEPLAYER) +// +typedef struct +{ + DWORD dwSize; // Size of this structure + DVID dvidPlayer; // DVID of the player who left + PVOID pvPlayerContext; // Context value for the player +} DVMSG_DELETEVOICEPLAYER, *LPDVMSG_DELETEVOICEPLAYER, *PDVMSG_DELETEVOICEPLAYER; + +// +// Result of the Disconnect() call. (If it wasn't called Async) +// (DVMSGID_DISCONNECTRESULT) +// +typedef struct +{ + DWORD dwSize; // Size of this structure + HRESULT hrResult; // Result of the Disconnect() call +} DVMSG_DISCONNECTRESULT, *LPDVMSG_DISCONNECTRESULT, *PDVMSG_DISCONNECTRESULT; + +// +// The voice session host has migrated. +// (DVMSGID_HOSTMIGRATED) +// +typedef struct +{ + DWORD dwSize; // Size of this structure + DVID dvidNewHostID; // DVID of the player who is now the host + LPDIRECTPLAYVOICESERVER pdvServerInterface; + // Pointer to the new host object (if local player is now host) +} DVMSG_HOSTMIGRATED, *LPDVMSG_HOSTMIGRATED, *PDVMSG_HOSTMIGRATED; + +// +// The current input level / recording volume on the local machine +// (DVMSGID_INPUTLEVEL) +// +typedef struct +{ + DWORD dwSize; // Size of this structure + DWORD dwPeakLevel; // Current peak level of the audio + LONG lRecordVolume; // Current recording volume + PVOID pvLocalPlayerContext; // Context value for the local player +} DVMSG_INPUTLEVEL, *LPDVMSG_INPUTLEVEL, *PDVMSG_INPUTLEVEL; + +// +// The local client is about to become the new host +// (DVMSGID_LOCALHOSTSETUP) +// +typedef struct +{ + DWORD dwSize; // Size of this structure + PVOID pvContext; // Context value to be passed to Initialize() of new host object + PDVMESSAGEHANDLER pMessageHandler; // Message handler to be used by new host object +} DVMSG_LOCALHOSTSETUP, *LPDVMSG_LOCALHOSTSETUP, *PDVMSG_LOCALHOSTSETUP; + +// +// The current output level for the combined output of all incoming streams. +// (DVMSGID_OUTPUTLEVEL) +// +typedef struct +{ + DWORD dwSize; // Size of this structure + DWORD dwPeakLevel; // Current peak level of the output + LONG lOutputVolume; // Current playback volume + PVOID pvLocalPlayerContext; // Context value for the local player +} DVMSG_OUTPUTLEVEL, *LPDVMSG_OUTPUTLEVEL, *PDVMSG_OUTPUTLEVEL; + +// +// The current peak level of an individual player's incoming audio stream as it is +// being played back. +// (DVMSGID_PLAYEROUTPUTLEVEL) +// +typedef struct +{ + DWORD dwSize; // Size of this structure + DVID dvidSourcePlayerID; // DVID of the player + DWORD dwPeakLevel; // Peak level of the player's stream + PVOID pvPlayerContext; // Context value for the player +} DVMSG_PLAYEROUTPUTLEVEL, *LPDVMSG_PLAYEROUTPUTLEVEL, *PDVMSG_PLAYEROUTPUTLEVEL; + +// +// An audio stream from the specified player has started playing back on the local client. +// (DVMSGID_PLAYERVOICESTART). +// +typedef struct +{ + DWORD dwSize; // Size of this structure + DVID dvidSourcePlayerID; // DVID of the Player + PVOID pvPlayerContext; // Context value for this player +} DVMSG_PLAYERVOICESTART, *LPDVMSG_PLAYERVOICESTART, *PDVMSG_PLAYERVOICESTART; + +// +// The audio stream from the specified player has stopped playing back on the local client. +// (DVMSGID_PLAYERVOICESTOP) +// +typedef struct +{ + DWORD dwSize; // Size of this structure + DVID dvidSourcePlayerID; // DVID of the player + PVOID pvPlayerContext; // Context value for this player +} DVMSG_PLAYERVOICESTOP, *LPDVMSG_PLAYERVOICESTOP, *PDVMSG_PLAYERVOICESTOP; + +// +// Transmission has started on the local machine +// (DVMSGID_RECORDSTART) +// +typedef struct +{ + DWORD dwSize; // Size of this structure + DWORD dwPeakLevel; // Peak level that caused transmission to start + PVOID pvLocalPlayerContext; // Context value for the local player +} DVMSG_RECORDSTART, *LPDVMSG_RECORDSTART, *PDVMSG_RECORDSTART; + +// +// Transmission has stopped on the local machine +// (DVMSGID_RECORDSTOP) +// +typedef struct +{ + DWORD dwSize; // Size of this structure + DWORD dwPeakLevel; // Peak level that caused transmission to stop + PVOID pvLocalPlayerContext; // Context value for the local player +} DVMSG_RECORDSTOP, *LPDVMSG_RECORDSTOP, *PDVMSG_RECORDSTOP; + +// +// The voice session has been lost +// (DVMSGID_SESSIONLOST) +// +typedef struct +{ + DWORD dwSize; // Size of this structure + HRESULT hrResult; // Reason the session was disconnected +} DVMSG_SESSIONLOST, *LPDVMSG_SESSIONLOST, *PDVMSG_SESSIONLOST; + +// +// The target list has been updated for the local client +// (DVMSGID_SETTARGETS) +// +typedef struct +{ + DWORD dwSize; // Size of this structure + DWORD dwNumTargets; // # of targets + PDVID pdvidTargets; // An array of DVIDs specifying the current targets +} DVMSG_SETTARGETS, *LPDVMSG_SETTARGETS, *PDVMSG_SETTARGETS; + + +/**************************************************************************** + * + * DirectPlayVoice Functions + * + ****************************************************************************/ + +/* + * + * This function is no longer supported. It is recommended that CoCreateInstance be used to create + * DirectPlay voice objects. + * + * extern HRESULT WINAPI DirectPlayVoiceCreate( const GUID * pcIID, void **ppvInterface, IUnknown *pUnknown); + * + */ + +/**************************************************************************** + * + * DirectPlay8 Application Interfaces + * + ****************************************************************************/ + +#undef INTERFACE +#define INTERFACE IDirectPlayVoiceClient +DECLARE_INTERFACE_( IDirectPlayVoiceClient, IUnknown ) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface)(THIS_ REFIID riid, PVOID *ppvObj) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + /*** IDirectPlayVoiceClient methods ***/ + STDMETHOD_(HRESULT, Initialize) (THIS_ LPUNKNOWN, PDVMESSAGEHANDLER, PVOID, PDWORD, DWORD ) PURE; + STDMETHOD_(HRESULT, Connect) (THIS_ PDVSOUNDDEVICECONFIG, PDVCLIENTCONFIG, DWORD ) PURE; + STDMETHOD_(HRESULT, Disconnect) (THIS_ DWORD ) PURE; + STDMETHOD_(HRESULT, GetSessionDesc)(THIS_ PDVSESSIONDESC ) PURE; + STDMETHOD_(HRESULT, GetClientConfig)(THIS_ PDVCLIENTCONFIG ) PURE; + STDMETHOD_(HRESULT, SetClientConfig)(THIS_ PDVCLIENTCONFIG ) PURE; + STDMETHOD_(HRESULT, GetCaps) (THIS_ PDVCAPS ) PURE; + STDMETHOD_(HRESULT, GetCompressionTypes)( THIS_ PVOID, PDWORD, PDWORD, DWORD ) PURE; + STDMETHOD_(HRESULT, SetTransmitTargets)( THIS_ PDVID, DWORD, DWORD ) PURE; + STDMETHOD_(HRESULT, GetTransmitTargets)( THIS_ PDVID, PDWORD, DWORD ) PURE; + STDMETHOD_(HRESULT, Create3DSoundBuffer)( THIS_ DVID, LPDIRECTSOUNDBUFFER, DWORD, DWORD, LPDIRECTSOUND3DBUFFER * ) PURE; + STDMETHOD_(HRESULT, Delete3DSoundBuffer)( THIS_ DVID, LPDIRECTSOUND3DBUFFER * ) PURE; + STDMETHOD_(HRESULT, SetNotifyMask)( THIS_ PDWORD, DWORD ) PURE; + STDMETHOD_(HRESULT, GetSoundDeviceConfig)( THIS_ PDVSOUNDDEVICECONFIG, PDWORD ) PURE; +}; + + +#undef INTERFACE +#define INTERFACE IDirectPlayVoiceServer +DECLARE_INTERFACE_( IDirectPlayVoiceServer, IUnknown ) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + /*** IDirectPlayVoiceServer methods ***/ + STDMETHOD_(HRESULT, Initialize) (THIS_ LPUNKNOWN, PDVMESSAGEHANDLER, PVOID, LPDWORD, DWORD ) PURE; + STDMETHOD_(HRESULT, StartSession) (THIS_ PDVSESSIONDESC, DWORD ) PURE; + STDMETHOD_(HRESULT, StopSession) (THIS_ DWORD ) PURE; + STDMETHOD_(HRESULT, GetSessionDesc)(THIS_ PDVSESSIONDESC ) PURE; + STDMETHOD_(HRESULT, SetSessionDesc)(THIS_ PDVSESSIONDESC ) PURE; + STDMETHOD_(HRESULT, GetCaps) (THIS_ PDVCAPS ) PURE; + STDMETHOD_(HRESULT, GetCompressionTypes)( THIS_ PVOID, PDWORD, PDWORD, DWORD ) PURE; + STDMETHOD_(HRESULT, SetTransmitTargets)( THIS_ DVID, PDVID, DWORD, DWORD ) PURE; + STDMETHOD_(HRESULT, GetTransmitTargets)( THIS_ DVID, PDVID, PDWORD, DWORD ) PURE; + STDMETHOD_(HRESULT, SetNotifyMask)( THIS_ PDWORD, DWORD ) PURE; +}; + +#undef INTERFACE +#define INTERFACE IDirectPlayVoiceTest +DECLARE_INTERFACE_( IDirectPlayVoiceTest, IUnknown ) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface) (THIS_ REFIID riid, PVOID * ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + /*** IDirectPlayVoiceTest methods ***/ + STDMETHOD_(HRESULT, CheckAudioSetup) (THIS_ const GUID *, const GUID * , HWND, DWORD ) PURE; +}; + +#if !defined(__cplusplus) || defined(CINTERFACE) + +#define IDirectPlayVoiceClient_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDirectPlayVoiceClient_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectPlayVoiceClient_Release(p) (p)->lpVtbl->Release(p) + +#define IDirectPlayVoiceClient_Initialize(p,a,b,c,d,e) (p)->lpVtbl->Initialize(p,a,b,c,d,e) +#define IDirectPlayVoiceClient_Connect(p,a,b,c) (p)->lpVtbl->Connect(p,a,b,c) +#define IDirectPlayVoiceClient_Disconnect(p,a) (p)->lpVtbl->Disconnect(p,a) +#define IDirectPlayVoiceClient_GetSessionDesc(p,a) (p)->lpVtbl->GetSessionDesc(p,a) +#define IDirectPlayVoiceClient_GetClientConfig(p,a) (p)->lpVtbl->GetClientConfig(p,a) +#define IDirectPlayVoiceClient_SetClientConfig(p,a) (p)->lpVtbl->SetClientConfig(p,a) +#define IDirectPlayVoiceClient_GetCaps(p,a) (p)->lpVtbl->GetCaps(p,a) +#define IDirectPlayVoiceClient_GetCompressionTypes(p,a,b,c,d) (p)->lpVtbl->GetCompressionTypes(p,a,b,c,d) +#define IDirectPlayVoiceClient_SetTransmitTargets(p,a,b,c) (p)->lpVtbl->SetTransmitTargets(p,a,b,c) +#define IDirectPlayVoiceClient_GetTransmitTargets(p,a,b,c) (p)->lpVtbl->GetTransmitTargets(p,a,b,c) +#define IDirectPlayVoiceClient_Create3DSoundBuffer(p,a,b,c,d,e) (p)->lpVtbl->Create3DSoundBuffer(p,a,b,c,d,e) +#define IDirectPlayVoiceClient_Delete3DSoundBuffer(p,a,b) (p)->lpVtbl->Delete3DSoundBuffer(p,a,b) +#define IDirectPlayVoiceClient_SetNotifyMask(p,a,b) (p)->lpVtbl->SetNotifyMask(p,a,b) +#define IDirectPlayVoiceClient_GetSoundDeviceConfig(p,a,b) (p)->lpVtbl->GetSoundDeviceConfig(p,a,b) + +#define IDirectPlayVoiceServer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDirectPlayVoiceServer_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectPlayVoiceServer_Release(p) (p)->lpVtbl->Release(p) + +#define IDirectPlayVoiceServer_Initialize(p,a,b,c,d,e) (p)->lpVtbl->Initialize(p,a,b,c,d,e) +#define IDirectPlayVoiceServer_StartSession(p,a,b) (p)->lpVtbl->StartSession(p,a,b) +#define IDirectPlayVoiceServer_StopSession(p,a) (p)->lpVtbl->StopSession(p,a) +#define IDirectPlayVoiceServer_GetSessionDesc(p,a) (p)->lpVtbl->GetSessionDesc(p,a) +#define IDirectPlayVoiceServer_SetSessionDesc(p,a) (p)->lpVtbl->SetSessionDesc(p,a) +#define IDirectPlayVoiceServer_GetCaps(p,a) (p)->lpVtbl->GetCaps(p,a) +#define IDirectPlayVoiceServer_GetCompressionTypes(p,a,b,c,d) (p)->lpVtbl->GetCompressionTypes(p,a,b,c,d) +#define IDirectPlayVoiceServer_SetTransmitTargets(p,a,b,c,d) (p)->lpVtbl->SetTransmitTargets(p,a,b,c,d) +#define IDirectPlayVoiceServer_GetTransmitTargets(p,a,b,c,d) (p)->lpVtbl->GetTransmitTargets(p,a,b,c,d) +#define IDirectPlayVoiceServer_SetNotifyMask(p,a,b) (p)->lpVtbl->SetNotifyMask(p,a,b) +#define IDirectPlayVoiceTest_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDirectPlayVoiceTest_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectPlayVoiceTest_Release(p) (p)->lpVtbl->Release(p) +#define IDirectPlayVoiceTest_CheckAudioSetup(p,a,b,c,d) (p)->lpVtbl->CheckAudioSetup(p,a,b,c,d) + + +#else /* C++ */ + +#define IDirectPlayVoiceClient_QueryInterface(p,a,b) (p)->QueryInterface(a,b) +#define IDirectPlayVoiceClient_AddRef(p) (p)->AddRef() +#define IDirectPlayVoiceClient_Release(p) (p)->Release() + +#define IDirectPlayVoiceClient_Initialize(p,a,b,c,d,e) (p)->Initialize(a,b,c,d,e) +#define IDirectPlayVoiceClient_Connect(p,a,b,c) (p)->Connect(a,b,c) +#define IDirectPlayVoiceClient_Disconnect(p,a) (p)->Disconnect(a) +#define IDirectPlayVoiceClient_GetSessionDesc(p,a) (p)->GetSessionDesc(a) +#define IDirectPlayVoiceClient_GetClientConfig(p,a) (p)->GetClientConfig(a) +#define IDirectPlayVoiceClient_SetClientConfig(p,a) (p)->SetClientConfig(a) +#define IDirectPlayVoiceClient_GetCaps(p,a) (p)->GetCaps(a) +#define IDirectPlayVoiceClient_GetCompressionTypes(p,a,b,c,d) (p)->GetCompressionTypes(a,b,c,d) +#define IDirectPlayVoiceClient_SetTransmitTargets(p,a,b,c) (p)->SetTransmitTargets(a,b,c) +#define IDirectPlayVoiceClient_GetTransmitTargets(p,a,b,c) (p)->GetTransmitTargets(a,b,c) +#define IDirectPlayVoiceClient_Create3DSoundBuffer(p,a,b,c,d,e) (p)->Create3DSoundBuffer(a,b,c,d,e) +#define IDirectPlayVoiceClient_Delete3DSoundBuffer(p,a,b) (p)->Delete3DSoundBuffer(a,b) +#define IDirectPlayVoiceClient_SetNotifyMask(p,a,b) (p)->SetNotifyMask(a,b) +#define IDirectPlayVoiceClient_GetSoundDeviceConfig(p,a,b) (p)->GetSoundDeviceConfig(a,b) + +#define IDirectPlayVoiceServer_QueryInterface(p,a,b) (p)->QueryInterface(a,b) +#define IDirectPlayVoiceServer_AddRef(p) (p)->AddRef() +#define IDirectPlayVoiceServer_Release(p) (p)->Release() + +#define IDirectPlayVoiceServer_Initialize(p,a,b,c,d,e) (p)->Initialize(a,b,c,d,e) +#define IDirectPlayVoiceServer_StartSession(p,a,b) (p)->StartSession(a,b) +#define IDirectPlayVoiceServer_StopSession(p,a) (p)->StopSession(a) +#define IDirectPlayVoiceServer_GetSessionDesc(p,a) (p)->GetSessionDesc(a) +#define IDirectPlayVoiceServer_SetSessionDesc(p,a) (p)->SetSessionDesc(a) +#define IDirectPlayVoiceServer_GetCaps(p,a) (p)->GetCaps(a) +#define IDirectPlayVoiceServer_GetCompressionTypes(p,a,b,c,d) (p)->GetCompressionTypes(a,b,c,d) +#define IDirectPlayVoiceServer_SetTransmitTargets(p,a,b,c,d) (p)->SetTransmitTargets(a,b,c,d) +#define IDirectPlayVoiceServer_GetTransmitTargets(p,a,b,c,d) (p)->GetTransmitTargets(a,b,c,d) +#define IDirectPlayVoiceServer_SetNotifyMask(p,a,b) (p)->SetNotifyMask(a,b) + +#define IDirectPlayVoiceTest_QueryInterface(p,a,b) (p)->QueryInterface(a,b) +#define IDirectPlayVoiceTest_AddRef(p) (p)->AddRef() +#define IDirectPlayVoiceTest_Release(p) (p)->Release() +#define IDirectPlayVoiceTest_CheckAudioSetup(p,a,b,c,d) (p)->CheckAudioSetup(a,b,c,d) + + +#endif + + +/**************************************************************************** + * + * DIRECTPLAYVOICE ERRORS + * + * Errors are represented by negative values and cannot be combined. + * + ****************************************************************************/ + +#define _FACDPV 0x15 +#define MAKE_DVHRESULT( code ) MAKE_HRESULT( 1, _FACDPV, code ) + +#define DV_OK S_OK +#define DV_FULLDUPLEX MAKE_HRESULT( 0, _FACDPV, 0x0005 ) +#define DV_HALFDUPLEX MAKE_HRESULT( 0, _FACDPV, 0x000A ) +#define DV_PENDING MAKE_HRESULT( 0, _FACDPV, 0x0010 ) + +#define DVERR_BUFFERTOOSMALL MAKE_DVHRESULT( 0x001E ) +#define DVERR_EXCEPTION MAKE_DVHRESULT( 0x004A ) +#define DVERR_GENERIC E_FAIL +#define DVERR_INVALIDFLAGS MAKE_DVHRESULT( 0x0078 ) +#define DVERR_INVALIDOBJECT MAKE_DVHRESULT( 0x0082 ) +#define DVERR_INVALIDPARAM E_INVALIDARG +#define DVERR_INVALIDPLAYER MAKE_DVHRESULT( 0x0087 ) +#define DVERR_INVALIDGROUP MAKE_DVHRESULT( 0x0091 ) +#define DVERR_INVALIDHANDLE MAKE_DVHRESULT( 0x0096 ) +#define DVERR_OUTOFMEMORY E_OUTOFMEMORY +#define DVERR_PENDING DV_PENDING +#define DVERR_NOTSUPPORTED E_NOTIMPL +#define DVERR_NOINTERFACE E_NOINTERFACE +#define DVERR_SESSIONLOST MAKE_DVHRESULT( 0x012C ) +#define DVERR_NOVOICESESSION MAKE_DVHRESULT( 0x012E ) +#define DVERR_CONNECTIONLOST MAKE_DVHRESULT( 0x0168 ) +#define DVERR_NOTINITIALIZED MAKE_DVHRESULT( 0x0169 ) +#define DVERR_CONNECTED MAKE_DVHRESULT( 0x016A ) +#define DVERR_NOTCONNECTED MAKE_DVHRESULT( 0x016B ) +#define DVERR_CONNECTABORTING MAKE_DVHRESULT( 0x016E ) +#define DVERR_NOTALLOWED MAKE_DVHRESULT( 0x016F ) +#define DVERR_INVALIDTARGET MAKE_DVHRESULT( 0x0170 ) +#define DVERR_TRANSPORTNOTHOST MAKE_DVHRESULT( 0x0171 ) +#define DVERR_COMPRESSIONNOTSUPPORTED MAKE_DVHRESULT( 0x0172 ) +#define DVERR_ALREADYPENDING MAKE_DVHRESULT( 0x0173 ) +#define DVERR_SOUNDINITFAILURE MAKE_DVHRESULT( 0x0174 ) +#define DVERR_TIMEOUT MAKE_DVHRESULT( 0x0175 ) +#define DVERR_CONNECTABORTED MAKE_DVHRESULT( 0x0176 ) +#define DVERR_NO3DSOUND MAKE_DVHRESULT( 0x0177 ) +#define DVERR_ALREADYBUFFERED MAKE_DVHRESULT( 0x0178 ) +#define DVERR_NOTBUFFERED MAKE_DVHRESULT( 0x0179 ) +#define DVERR_HOSTING MAKE_DVHRESULT( 0x017A ) +#define DVERR_NOTHOSTING MAKE_DVHRESULT( 0x017B ) +#define DVERR_INVALIDDEVICE MAKE_DVHRESULT( 0x017C ) +#define DVERR_RECORDSYSTEMERROR MAKE_DVHRESULT( 0x017D ) +#define DVERR_PLAYBACKSYSTEMERROR MAKE_DVHRESULT( 0x017E ) +#define DVERR_SENDERROR MAKE_DVHRESULT( 0x017F ) +#define DVERR_USERCANCEL MAKE_DVHRESULT( 0x0180 ) +#define DVERR_RUNSETUP MAKE_DVHRESULT( 0x0183 ) +#define DVERR_INCOMPATIBLEVERSION MAKE_DVHRESULT( 0x0184 ) +#define DVERR_INITIALIZED MAKE_DVHRESULT( 0x0187 ) +#define DVERR_INVALIDPOINTER E_POINTER +#define DVERR_NOTRANSPORT MAKE_DVHRESULT( 0x0188 ) +#define DVERR_NOCALLBACK MAKE_DVHRESULT( 0x0189 ) +#define DVERR_TRANSPORTNOTINIT MAKE_DVHRESULT( 0x018A ) +#define DVERR_TRANSPORTNOSESSION MAKE_DVHRESULT( 0x018B ) +#define DVERR_TRANSPORTNOPLAYER MAKE_DVHRESULT( 0x018C ) +#define DVERR_USERBACK MAKE_DVHRESULT( 0x018D ) +#define DVERR_NORECVOLAVAILABLE MAKE_DVHRESULT( 0x018E ) +#define DVERR_INVALIDBUFFER MAKE_DVHRESULT( 0x018F ) +#define DVERR_LOCKEDBUFFER MAKE_DVHRESULT( 0x0190 ) + +#ifdef __cplusplus +} +#endif + +#endif + + diff --git a/videoInputSrcAndDemos/libs/DShow/Include/dvp.h b/videoInputSrcAndDemos/libs/DShow/Include/dvp.h index 126f5f5..c40dc79 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/dvp.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/dvp.h @@ -1,966 +1,966 @@ -/*==========================================================================; - * - * Copyright (C) Microsoft Corporation. All Rights Reserved. - * - * File: dvp.h - * Content: DirectDrawVideoPort include file - * - ***************************************************************************/ - -#ifndef __DVP_INCLUDED__ -#define __DVP_INCLUDED__ - -/* - * GUIDS used by DirectDrawVideoPort objects - */ -#if defined( _WIN32 ) && (!defined( _NO_COM ) || defined( DEFINE_GUID )) -DEFINE_GUID( IID_IDDVideoPortContainer, 0x6C142760,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60 ); -DEFINE_GUID( IID_IDirectDrawVideoPort, 0xB36D93E0,0x2B43,0x11CF,0xA2,0xDE,0x00,0xAA,0x00,0xB9,0x33,0x56 ); -DEFINE_GUID( IID_IDirectDrawVideoPortNotify, 0xA655FB94,0x0589,0x4E57,0xB3,0x33,0x56,0x7A,0x89,0x46,0x8C,0x88); - - - -DEFINE_GUID( DDVPTYPE_E_HREFH_VREFH, 0x54F39980L,0xDA60,0x11CF,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8); -DEFINE_GUID( DDVPTYPE_E_HREFH_VREFL, 0x92783220L,0xDA60,0x11CF,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8); -DEFINE_GUID( DDVPTYPE_E_HREFL_VREFH, 0xA07A02E0L,0xDA60,0x11CF,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8); -DEFINE_GUID( DDVPTYPE_E_HREFL_VREFL, 0xE09C77E0L,0xDA60,0x11CF,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8); -DEFINE_GUID( DDVPTYPE_CCIR656, 0xFCA326A0L,0xDA60,0x11CF,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8); -DEFINE_GUID( DDVPTYPE_BROOKTREE, 0x1352A560L,0xDA61,0x11CF,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8); -DEFINE_GUID( DDVPTYPE_PHILIPS, 0x332CF160L,0xDA61,0x11CF,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8); -#endif - -#ifndef GUID_DEFS_ONLY - -#if defined( _WIN32 ) && !defined( _NO_COM ) -#define COM_NO_WINDOWS_H -#include -#else -#define IUnknown void -#endif - -/* - * These definitions are required to allow polymorphic structure members (i.e. those - * that are referred to both as DWORDs and as pointers) to resolve into a type - * of correct size to hold the largest of those two types (i.e. pointer) on 64 bit - * systems. For 32 bit environments, ULONG_PTR resolves to a DWORD. - */ -#ifndef MAXULONG_PTR -#define ULONG_PTR DWORD -#endif //MAXULONG_PTR - -#ifdef __cplusplus -extern "C" { -#endif - -/*============================================================================ - * - * DirectDraw Structures - * - * Various structures used to invoke DirectDraw. - * - *==========================================================================*/ - -struct IDirectDraw; -struct IDirectDrawSurface; -struct IDirectDrawPalette; -struct IDirectDrawClipper; - -typedef struct IDDVideoPortContainer FAR *LPDDVIDEOPORTCONTAINER; -typedef struct IDirectDrawVideoPort FAR *LPDIRECTDRAWVIDEOPORT; -typedef struct IDirectDrawVideoPortNotify FAR *LPDIRECTDRAWVIDEOPORTNOTIFY; - -typedef struct _DDVIDEOPORTCONNECT FAR *LPDDVIDEOPORTCONNECT; -typedef struct _DDVIDEOPORTCAPS FAR *LPDDVIDEOPORTCAPS; -typedef struct _DDVIDEOPORTDESC FAR *LPDDVIDEOPORTDESC; -typedef struct _DDVIDEOPORTINFO FAR *LPDDVIDEOPORTINFO; -typedef struct _DDVIDEOPORTBANDWIDTH FAR *LPDDVIDEOPORTBANDWIDTH; -typedef struct _DDVIDEOPORTSTATUS FAR *LPDDVIDEOPORTSTATUS; -typedef struct _DDVIDEOPORTNOTIFY FAR *LPDDVIDEOPORTNOTIFY; - -typedef struct IDDVideoPortContainerVtbl DDVIDEOPORTCONTAINERCALLBACKS; -typedef struct IDirectDrawVideoPortVtbl DIRECTDRAWVIDEOPORTCALLBACKS; -typedef struct IDirectDrawVideoPortNotifyVtbl DIRECTDRAWVIDEOPORTNOTIFYCALLBACKS; - - -/* - * API's - */ -typedef HRESULT (FAR PASCAL * LPDDENUMVIDEOCALLBACK)(LPDDVIDEOPORTCAPS, LPVOID); - - -/* - * INTERACES FOLLOW: - * IDirectDrawVideoPort - * IVideoPort - */ - -/* - * IDirectDrawVideoPortContainer - */ -#if defined( _WIN32 ) && !defined( _NO_COM ) -#undef INTERFACE -#define INTERFACE IDDVideoPortContainer -DECLARE_INTERFACE_( IDDVideoPortContainer, IUnknown ) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - /*** IDirectDrawVideoPort methods ***/ - STDMETHOD(CreateVideoPort)(THIS_ DWORD, LPDDVIDEOPORTDESC, LPDIRECTDRAWVIDEOPORT FAR *, IUnknown FAR *) PURE; - STDMETHOD(EnumVideoPorts)(THIS_ DWORD, LPDDVIDEOPORTCAPS, LPVOID,LPDDENUMVIDEOCALLBACK ) PURE; - STDMETHOD(GetVideoPortConnectInfo)(THIS_ DWORD, LPDWORD, LPDDVIDEOPORTCONNECT ) PURE; - STDMETHOD(QueryVideoPortStatus)(THIS_ DWORD, LPDDVIDEOPORTSTATUS ) PURE; -}; - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IVideoPortContainer_QueryInterface(p, a, b) (p)->lpVtbl->QueryInterface(p, a, b) -#define IVideoPortContainer_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IVideoPortContainer_Release(p) (p)->lpVtbl->Release(p) -#define IVideoPortContainer_CreateVideoPort(p, a, b, c, d) (p)->lpVtbl->CreateVideoPort(p, a, b, c, d) -#define IVideoPortContainer_EnumVideoPorts(p, a, b, c, d) (p)->lpVtbl->EnumVideoPorts(p, a, b, c, d) -#define IVideoPortContainer_GetVideoPortConnectInfo(p, a, b, c) (p)->lpVtbl->GetVideoPortConnectInfo(p, a, b, c) -#define IVideoPortContainer_QueryVideoPortStatus(p, a, b) (p)->lpVtbl->QueryVideoPortStatus(p, a, b) -#else -#define IVideoPortContainer_QueryInterface(p, a, b) (p)->QueryInterface(a, b) -#define IVideoPortContainer_AddRef(p) (p)->AddRef() -#define IVideoPortContainer_Release(p) (p)->Release() -#define IVideoPortContainer_CreateVideoPort(p, a, b, c, d) (p)->CreateVideoPort(a, b, c, d) -#define IVideoPortContainer_EnumVideoPorts(p, a, b, c, d) (p)->EnumVideoPorts(a, b, c, d) -#define IVideoPortContainer_GetVideoPortConnectInfo(p, a, b, c) (p)->GetVideoPortConnectInfo(a, b, c) -#define IVideoPortContainer_QueryVideoPortStatus(p, a, b) (p)->QueryVideoPortStatus(a, b) -#endif - -#endif - - -/* - * IDirectDrawVideoPort - */ -#if defined( _WIN32 ) && !defined( _NO_COM ) -#undef INTERFACE -#define INTERFACE IDirectDrawVideoPort -DECLARE_INTERFACE_( IDirectDrawVideoPort, IUnknown ) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - /*** IVideoPort methods ***/ - STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE, DWORD) PURE; - STDMETHOD(GetBandwidthInfo)(THIS_ LPDDPIXELFORMAT, DWORD, DWORD, DWORD, LPDDVIDEOPORTBANDWIDTH) PURE; - STDMETHOD(GetColorControls)(THIS_ LPDDCOLORCONTROL) PURE; - STDMETHOD(GetInputFormats)(THIS_ LPDWORD, LPDDPIXELFORMAT, DWORD) PURE; - STDMETHOD(GetOutputFormats)(THIS_ LPDDPIXELFORMAT, LPDWORD, LPDDPIXELFORMAT, DWORD) PURE; - STDMETHOD(GetFieldPolarity)(THIS_ LPBOOL) PURE; - STDMETHOD(GetVideoLine)(THIS_ LPDWORD) PURE; - STDMETHOD(GetVideoSignalStatus)(THIS_ LPDWORD) PURE; - STDMETHOD(SetColorControls)(THIS_ LPDDCOLORCONTROL) PURE; - STDMETHOD(SetTargetSurface)(THIS_ LPDIRECTDRAWSURFACE, DWORD) PURE; - STDMETHOD(StartVideo)(THIS_ LPDDVIDEOPORTINFO) PURE; - STDMETHOD(StopVideo)(THIS) PURE; - STDMETHOD(UpdateVideo)(THIS_ LPDDVIDEOPORTINFO) PURE; - STDMETHOD(WaitForSync)(THIS_ DWORD, DWORD, DWORD) PURE; -}; - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IVideoPort_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IVideoPort_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IVideoPort_Release(p) (p)->lpVtbl->Release(p) -#define IVideoPort_SetTargetSurface(p,a,b) (p)->lpVtbl->SetTargetSurface(p,a,b) -#define IVideoPort_Flip(p,a,b) (p)->lpVtbl->Flip(p,a,b) -#define IVideoPort_GetBandwidthInfo(p,a,b,c,d,e) (p)->lpVtbl->GetBandwidthInfo(p,a,b,c,d,e) -#define IVideoPort_GetColorControls(p,a) (p)->lpVtbl->GetColorControls(p,a) -#define IVideoPort_GetInputFormats(p,a,b,c) (p)->lpVtbl->GetInputFormats(p,a,b,c) -#define IVideoPort_GetOutputFormats(p,a,b,c,d) (p)->lpVtbl->GetOutputFormats(p,a,b,c,d) -#define IVideoPort_GetFieldPolarity(p,a) (p)->lpVtbl->GetFieldPolarity(p,a) -#define IVideoPort_GetVideoLine(p,a) (p)->lpVtbl->GetVideoLine(p,a) -#define IVideoPort_GetVideoSignalStatus(p,a) (p)->lpVtbl->GetVideoSignalStatus(p,a) -#define IVideoPort_SetColorControls(p,a) (p)->lpVtbl->SetColorControls(p,a) -#define IVideoPort_StartVideo(p,a) (p)->lpVtbl->StartVideo(p,a) -#define IVideoPort_StopVideo(p) (p)->lpVtbl->StopVideo(p) -#define IVideoPort_UpdateVideo(p,a) (p)->lpVtbl->UpdateVideo(p,a) -#define IVideoPort_WaitForSync(p,a,b,c) (p)->lpVtbl->WaitForSync(p,a,b,c) -#else -#define IVideoPort_QueryInterface(p,a,b) (p)->QueryInterface(a,b) -#define IVideoPort_AddRef(p) (p)->AddRef() -#define IVideoPort_Release(p) (p)->Release() -#define IVideoPort_SetTargetSurface(p,a,b) (p)->SetTargetSurface(a,b) -#define IVideoPort_Flip(p,a,b) (p)->Flip(a,b) -#define IVideoPort_GetBandwidthInfo(p,a,b,c,d,e) (p)->GetBandwidthInfo(a,b,c,d,e) -#define IVideoPort_GetColorControls(p,a) (p)->GetColorControls(a) -#define IVideoPort_GetInputFormats(p,a,b,c) (p)->GetInputFormats(a,b,c) -#define IVideoPort_GetOutputFormats(p,a,b,c,d) (p)->GetOutputFormats(a,b,c,d) -#define IVideoPort_GetFieldPolarity(p,a) (p)->GetFieldPolarity(a) -#define IVideoPort_GetVideoLine(p,a) (p)->GetVideoLine(a) -#define IVideoPort_GetVideoSignalStatus(p,a) (p)->GetVideoSignalStatus(a) -#define IVideoPort_SetColorControls(p,a) (p)->SetColorControls(a) -#define IVideoPort_StartVideo(p,a) (p)->StartVideo(a) -#define IVideoPort_StopVideo(p) (p)->StopVideo() -#define IVideoPort_UpdateVideo(p,a) (p)->UpdateVideo(a) -#define IVideoPort_WaitForSync(p,a,b,c) (p)->WaitForSync(a,b,c) -#endif - -#endif - -/* - * IDirectDrawVideoPort - */ -#if defined( _WIN32 ) && !defined( _NO_COM ) -#undef INTERFACE -#define INTERFACE IDirectDrawVideoPortNotify -DECLARE_INTERFACE_( IDirectDrawVideoPortNotify, IUnknown ) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - /*** IVideoPort methods ***/ - STDMETHOD(AcquireNotification)(THIS_ HANDLE *, LPDDVIDEOPORTNOTIFY) PURE; - STDMETHOD(ReleaseNotification)(THIS_ HANDLE) PURE; -}; - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IVideoPortNotify_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IVideoPortNotify_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IVideoPortNotify_Release(p) (p)->lpVtbl->Release(p) -#define IVideoPortNotify_AcquireNotification(p,a,b) (p)->lpVtbl->AcquireNotification(p,a,b) -#define IVideoPortNotify_ReleaseNotification(p,a) (p)->lpVtbl->ReleaseNotification(p,a) -#else -#define IVideoPortNotify_QueryInterface(p,a,b) (p)->QueryInterface(a,b) -#define IVideoPortNotify_AddRef(p) (p)->AddRef() -#define IVideoPortNotify_Release(p) (p)->Release() -#define IVideoPortNotify_AcquireNotification(p,a,b) (p)->lpVtbl->AcquireNotification(a,b) -#define IVideoPortNotify_ReleaseNotification(p,a) (p)->lpVtbl->ReleaseNotification(a) -#endif - -#endif - -/* - * DDVIDEOPORTCONNECT - */ -typedef struct _DDVIDEOPORTCONNECT -{ - DWORD dwSize; // size of the DDVIDEOPORTCONNECT structure - DWORD dwPortWidth; // Width of the video port - GUID guidTypeID; // Description of video port connection - DWORD dwFlags; // Connection flags - ULONG_PTR dwReserved1; // Reserved, set to zero. -} DDVIDEOPORTCONNECT; - - -/* - * DDVIDEOPORTCAPS - */ -typedef struct _DDVIDEOPORTCAPS -{ - DWORD dwSize; // size of the DDVIDEOPORTCAPS structure - DWORD dwFlags; // indicates which fields contain data - DWORD dwMaxWidth; // max width of the video port field - DWORD dwMaxVBIWidth; // max width of the VBI data - DWORD dwMaxHeight; // max height of the video port field - DWORD dwVideoPortID; // Video port ID (0 - (dwMaxVideoPorts -1)) - DWORD dwCaps; // Video port capabilities - DWORD dwFX; // More video port capabilities - DWORD dwNumAutoFlipSurfaces; // Max number of autoflippable surfaces allowed - DWORD dwAlignVideoPortBoundary; // Byte restriction of placement within the surface - DWORD dwAlignVideoPortPrescaleWidth;// Byte restriction of width after prescaling - DWORD dwAlignVideoPortCropBoundary; // Byte restriction of left cropping - DWORD dwAlignVideoPortCropWidth; // Byte restriction of cropping width - DWORD dwPreshrinkXStep; // Width can be shrunk in steps of 1/x - DWORD dwPreshrinkYStep; // Height can be shrunk in steps of 1/x - DWORD dwNumVBIAutoFlipSurfaces; // Max number of VBI autoflippable surfaces allowed - DWORD dwNumPreferredAutoflip; // Optimal number of autoflippable surfaces for hardware - WORD wNumFilterTapsX; // Number of taps the prescaler uses in the X direction (0 - no prescale, 1 - replication, etc.) - WORD wNumFilterTapsY; // Number of taps the prescaler uses in the Y direction (0 - no prescale, 1 - replication, etc.) -} DDVIDEOPORTCAPS; - -/* - * The dwMaxWidth and dwMaxVBIWidth members are valid - */ -#define DDVPD_WIDTH 0x00000001l - -/* - * The dwMaxHeight member is valid - */ -#define DDVPD_HEIGHT 0x00000002l - -/* - * The dwVideoPortID member is valid - */ -#define DDVPD_ID 0x00000004l - -/* - * The dwCaps member is valid - */ -#define DDVPD_CAPS 0x00000008l - -/* - * The dwFX member is valid - */ -#define DDVPD_FX 0x00000010l - -/* - * The dwNumAutoFlipSurfaces member is valid - */ -#define DDVPD_AUTOFLIP 0x00000020l - -/* - * All of the alignment members are valid - */ -#define DDVPD_ALIGN 0x00000040l - -/* - * The dwNumPreferredAutoflip member is valid - */ -#define DDVPD_PREFERREDAUTOFLIP 0x00000080l - -/* - * The wNumFilterTapsX and wNumFilterTapsY fields are valid - */ -#define DDVPD_FILTERQUALITY 0x00000100l - -/* - * DDVIDEOPORTDESC - */ -typedef struct _DDVIDEOPORTDESC -{ - DWORD dwSize; // size of the DDVIDEOPORTDESC structure - DWORD dwFieldWidth; // width of the video port field - DWORD dwVBIWidth; // width of the VBI data - DWORD dwFieldHeight; // height of the video port field - DWORD dwMicrosecondsPerField; // Microseconds per video field - DWORD dwMaxPixelsPerSecond; // Maximum pixel rate per second - DWORD dwVideoPortID; // Video port ID (0 - (dwMaxVideoPorts -1)) - DWORD dwReserved1; // Reserved for future use - set to zero (struct padding) - DDVIDEOPORTCONNECT VideoPortType; // Description of video port connection - ULONG_PTR dwReserved2; // Reserved for future use - set to zero - ULONG_PTR dwReserved3; // Reserved for future use - set to zero -} DDVIDEOPORTDESC; - - -/* - * DDVIDEOPORTINFO - */ -typedef struct _DDVIDEOPORTINFO -{ - DWORD dwSize; // Size of the structure - DWORD dwOriginX; // Placement of the video data within the surface. - DWORD dwOriginY; // Placement of the video data within the surface. - DWORD dwVPFlags; // Video port options - RECT rCrop; // Cropping rectangle (optional). - DWORD dwPrescaleWidth; // Determines pre-scaling/zooming in the X direction (optional). - DWORD dwPrescaleHeight; // Determines pre-scaling/zooming in the Y direction (optional). - LPDDPIXELFORMAT lpddpfInputFormat; // Video format written to the video port - LPDDPIXELFORMAT lpddpfVBIInputFormat; // Input format of the VBI data - LPDDPIXELFORMAT lpddpfVBIOutputFormat;// Output format of the data - DWORD dwVBIHeight; // Specifies the number of lines of data within the vertical blanking interval. - ULONG_PTR dwReserved1; // Reserved for future use - set to zero - ULONG_PTR dwReserved2; // Reserved for future use - set to zero -} DDVIDEOPORTINFO; - - -/* - * DDVIDEOPORTBANDWIDTH - */ -typedef struct _DDVIDEOPORTBANDWIDTH -{ - DWORD dwSize; // Size of the structure - DWORD dwCaps; - DWORD dwOverlay; // Zoom factor at which overlay is supported - DWORD dwColorkey; // Zoom factor at which overlay w/ colorkey is supported - DWORD dwYInterpolate; // Zoom factor at which overlay w/ Y interpolation is supported - DWORD dwYInterpAndColorkey; // Zoom factor at which ovelray w/ Y interpolation and colorkeying is supported - ULONG_PTR dwReserved1; // Reserved for future use - set to zero - ULONG_PTR dwReserved2; // Reserved for future use - set to zero -} DDVIDEOPORTBANDWIDTH; - - -/* - * DDVIDEOPORTSTATUS - */ -typedef struct _DDVIDEOPORTSTATUS -{ - DWORD dwSize; // Size of the structure - BOOL bInUse; // TRUE if video port is currently being used - DWORD dwFlags; // Currently not used - DWORD dwReserved1; // Reserved for future use - DDVIDEOPORTCONNECT VideoPortType; // Information about the connection - ULONG_PTR dwReserved2; // Reserved for future use - ULONG_PTR dwReserved3; // Reserved for future use -} DDVIDEOPORTSTATUS; - -/* - * DDVIDEOPORTNOTIFY - */ -typedef struct _DDVIDEOPORTNOTIFY -{ - LARGE_INTEGER ApproximateTimeStamp; // Timestamp in the event notification - LONG lField; // 0 if even, 1 if odd, -1 if unknown - UINT dwSurfaceIndex; // Index in the surface chain of the surface that received the sample - LONG lDone; // Call InterlockedIncrement on this when done with sample -} DDVIDEOPORTNOTIFY; - - -/*============================================================================ - * - * Video Port Flags - * - * All flags are bit flags. - * - *==========================================================================*/ - -/**************************************************************************** - * - * VIDEOPORT DDVIDEOPORTCONNECT FLAGS - * - ****************************************************************************/ - -/* - * When this is set by the driver and passed to the client, this - * indicates that the video port is capable of double clocking the data. - * When this is set by the client, this indicates that the video port - * should enable double clocking. This flag is only valid with external - * syncs. - */ -#define DDVPCONNECT_DOUBLECLOCK 0x00000001l - -/* - * When this is set by the driver and passed to the client, this - * indicates that the video port is capable of using an external VACT - * signal. When this is set by the client, this indicates that the - * video port should use the external VACT signal. - */ -#define DDVPCONNECT_VACT 0x00000002l - -/* - * When this is set by the driver and passed to the client, this - * indicates that the video port is capable of treating even fields - * like odd fields and visa versa. When this is set by the client, - * this indicates that the video port should treat even fields like odd - * fields. - */ -#define DDVPCONNECT_INVERTPOLARITY 0x00000004l - -/* - * Indicates that any data written to the video port during the VREF - * period will not be written into the frame buffer. This flag is read only. - */ -#define DDVPCONNECT_DISCARDSVREFDATA 0x00000008l - -/* - * When this is set be the driver and passed to the client, this - * indicates that the device will write half lines into the frame buffer - * if half lines are provided by the decoder. If this is set by the client, - * this indicates that the decoder will be supplying half lines. - */ -#define DDVPCONNECT_HALFLINE 0x00000010l - -/* - * Indicates that the signal is interlaced. This flag is only - * set by the client. - */ -#define DDVPCONNECT_INTERLACED 0x00000020l - -/* - * Indicates that video port is shareable and that this video port - * will use the even fields. This flag is only set by the client. - */ -#define DDVPCONNECT_SHAREEVEN 0x00000040l - -/* - * Indicates that video port is shareable and that this video port - * will use the odd fields. This flag is only set by the client. - */ -#define DDVPCONNECT_SHAREODD 0x00000080l - -/**************************************************************************** - * - * VIDEOPORT DDVIDEOPORTDESC CAPS - * - ****************************************************************************/ - -/* - * Flip can be performed automatically to avoid tearing. - */ -#define DDVPCAPS_AUTOFLIP 0x00000001l - -/* - * Supports interlaced video - */ -#define DDVPCAPS_INTERLACED 0x00000002l - -/* - * Supports non-interlaced video - */ -#define DDVPCAPS_NONINTERLACED 0x00000004l - -/* - * Indicates that the device can return whether the current field - * of an interlaced signal is even or odd. - */ -#define DDVPCAPS_READBACKFIELD 0x00000008l - -/* - * Indicates that the device can return the current line of video - * being written into the frame buffer. - */ -#define DDVPCAPS_READBACKLINE 0x00000010l - -/* - * Allows two gen-locked video streams to share a single video port, - * where one stream uses the even fields and the other uses the odd - * fields. Separate parameters (including address, scaling, - * cropping, etc.) are maintained for both fields.) - */ -#define DDVPCAPS_SHAREABLE 0x00000020l - -/* - * Even fields of video can be automatically discarded. - */ -#define DDVPCAPS_SKIPEVENFIELDS 0x00000040l - -/* - * Odd fields of video can be automatically discarded. - */ -#define DDVPCAPS_SKIPODDFIELDS 0x00000080l - -/* - * Indicates that the device is capable of driving the graphics - * VSYNC with the video port VSYNC. - */ -#define DDVPCAPS_SYNCMASTER 0x00000100l - -/* - * Indicates that data within the vertical blanking interval can - * be written to a different surface. - */ -#define DDVPCAPS_VBISURFACE 0x00000200l - -/* - * Indicates that the video port can perform color operations - * on the incoming data before it is written to the frame buffer. - */ -#define DDVPCAPS_COLORCONTROL 0x00000400l - -/* - * Indicates that the video port can accept VBI data in a different - * width or format than the regular video data. - */ -#define DDVPCAPS_OVERSAMPLEDVBI 0x00000800l - -/* - * Indicates that the video port can write data directly to system memory - */ -#define DDVPCAPS_SYSTEMMEMORY 0x00001000l - -/* - * Indicates that the VBI and video portions of the video stream can - * be controlled by an independent processes. - */ -#define DDVPCAPS_VBIANDVIDEOINDEPENDENT 0x00002000l - -/* - * Indicates that the video port contains high quality hardware - * de-interlacing hardware that should be used instead of the - * bob/weave algorithms. - */ -#define DDVPCAPS_HARDWAREDEINTERLACE 0x00004000l - - -/**************************************************************************** - * - * VIDEOPORT DDVIDEOPORTDESC FX - * - ****************************************************************************/ - -/* - * Limited cropping is available to crop out the vertical interval data. - */ -#define DDVPFX_CROPTOPDATA 0x00000001l - -/* - * Incoming data can be cropped in the X direction before it is written - * to the surface. - */ -#define DDVPFX_CROPX 0x00000002l - -/* - * Incoming data can be cropped in the Y direction before it is written - * to the surface. - */ -#define DDVPFX_CROPY 0x00000004l - -/* - * Supports interleaving interlaced fields in memory. - */ -#define DDVPFX_INTERLEAVE 0x00000008l - -/* - * Supports mirroring left to right as the video data is written - * into the frame buffer. - */ -#define DDVPFX_MIRRORLEFTRIGHT 0x00000010l - -/* - * Supports mirroring top to bottom as the video data is written - * into the frame buffer. - */ -#define DDVPFX_MIRRORUPDOWN 0x00000020l - -/* - * Data can be arbitrarily shrunk in the X direction before it - * is written to the surface. - */ -#define DDVPFX_PRESHRINKX 0x00000040l - -/* - * Data can be arbitrarily shrunk in the Y direction before it - * is written to the surface. - */ -#define DDVPFX_PRESHRINKY 0x00000080l - -/* - * Data can be binary shrunk (1/2, 1/4, 1/8, etc.) in the X - * direction before it is written to the surface. - */ -#define DDVPFX_PRESHRINKXB 0x00000100l - -/* - * Data can be binary shrunk (1/2, 1/4, 1/8, etc.) in the Y - * direction before it is written to the surface. - */ -#define DDVPFX_PRESHRINKYB 0x00000200l - -/* - * Data can be shrunk in increments of 1/x in the X direction - * (where X is specified in the DDVIDEOPORTCAPS.dwPreshrinkXStep) - * before it is written to the surface. - */ -#define DDVPFX_PRESHRINKXS 0x00000400l - -/* - * Data can be shrunk in increments of 1/x in the Y direction - * (where X is specified in the DDVIDEOPORTCAPS.dwPreshrinkYStep) - * before it is written to the surface. - */ -#define DDVPFX_PRESHRINKYS 0x00000800l - -/* - * Data can be arbitrarily stretched in the X direction before - * it is written to the surface. - */ -#define DDVPFX_PRESTRETCHX 0x00001000l - -/* - * Data can be arbitrarily stretched in the Y direction before - * it is written to the surface. - */ -#define DDVPFX_PRESTRETCHY 0x00002000l - -/* - * Data can be integer stretched in the X direction before it is - * written to the surface. - */ -#define DDVPFX_PRESTRETCHXN 0x00004000l - -/* - * Data can be integer stretched in the Y direction before it is - * written to the surface. - */ -#define DDVPFX_PRESTRETCHYN 0x00008000l - -/* - * Indicates that data within the vertical blanking interval can - * be converted independently of the remaining video data. - */ -#define DDVPFX_VBICONVERT 0x00010000l - -/* - * Indicates that scaling can be disabled for data within the - * vertical blanking interval. - */ -#define DDVPFX_VBINOSCALE 0x00020000l - -/* - * Indicates that the video data can ignore the left and right - * cropping coordinates when cropping oversampled VBI data. - */ -#define DDVPFX_IGNOREVBIXCROP 0x00040000l - -/* - * Indicates that interleaving can be disabled for data within the - * vertical blanking interval. - */ -#define DDVPFX_VBINOINTERLEAVE 0x00080000l - - -/**************************************************************************** - * - * VIDEOPORT DDVIDEOPORTINFO FLAGS - * - ****************************************************************************/ - -/* - * Perform automatic flipping. Auto-flipping is performed between - * the overlay surface that was attached to the video port using - * IDirectDrawVideoPort::AttachSurface and the overlay surfaces that - * are attached to the surface via the IDirectDrawSurface::AttachSurface - * method. The flip order is the order in which the overlay surfaces - * were. attached. - */ -#define DDVP_AUTOFLIP 0x00000001l - -/* - * Perform conversion using the ddpfOutputFormat information. - */ -#define DDVP_CONVERT 0x00000002l - -/* - * Perform cropping using the specified rectangle. - */ -#define DDVP_CROP 0x00000004l - -/* - * Indicates that interlaced fields should be interleaved in memory. - */ -#define DDVP_INTERLEAVE 0x00000008l - -/* - * Indicates that the data should be mirrored left to right as it's - * written into the frame buffer. - */ -#define DDVP_MIRRORLEFTRIGHT 0x00000010l - -/* - * Indicates that the data should be mirrored top to bottom as it's - * written into the frame buffer. - */ -#define DDVP_MIRRORUPDOWN 0x00000020l - -/* - * Perform pre-scaling/zooming based on the pre-scale parameters. - */ -#define DDVP_PRESCALE 0x00000040l - -/* - * Ignore input of even fields. - */ -#define DDVP_SKIPEVENFIELDS 0x00000080l - -/* - * Ignore input of odd fields. - */ -#define DDVP_SKIPODDFIELDS 0x00000100l - -/* - * Drive the graphics VSYNCs using the video port VYSNCs. - */ -#define DDVP_SYNCMASTER 0x00000200l - -/* - * The ddpfVBIOutputFormatFormat member contains data that should be used - * to convert the data within the vertical blanking interval. - */ -#define DDVP_VBICONVERT 0x00000400l - -/* - * Indicates that data within the vertical blanking interval - * should not be scaled. - */ -#define DDVP_VBINOSCALE 0x00000800l - -/* - * Indicates that these bob/weave decisions should not be - * overriden by other interfaces. - */ -#define DDVP_OVERRIDEBOBWEAVE 0x00001000l - -/* - * Indicates that the video data should ignore the left and right - * cropping coordinates when cropping the VBI data. - */ -#define DDVP_IGNOREVBIXCROP 0x00002000l - -/* - * Indicates that interleaving can be disabled for data within the - * vertical blanking interval. - */ -#define DDVP_VBINOINTERLEAVE 0x00004000l - -/* - * Indicates that the video port should use the hardware - * de-interlacing hardware. - */ -#define DDVP_HARDWAREDEINTERLACE 0x00008000l - -/**************************************************************************** - * - * DIRIRECTDRAWVIDEOPORT GETINPUTFORMAT/GETOUTPUTFORMAT FLAGS - * - ****************************************************************************/ - -/* - * Return formats for the video data - */ -#define DDVPFORMAT_VIDEO 0x00000001l - -/* - * Return formats for the VBI data - */ -#define DDVPFORMAT_VBI 0x00000002l - -/**************************************************************************** - * - * DIRIRECTDRAWVIDEOPORT SETTARGETSURFACE FLAGS - * - ****************************************************************************/ - -/* - * Surface should receive video data (and VBI data if a surface - * is not explicitly attached for that purpose) - */ -#define DDVPTARGET_VIDEO 0x00000001l - -/* - * Surface should receive VBI data - */ -#define DDVPTARGET_VBI 0x00000002l - - -/**************************************************************************** - * - * DIRIRECTDRAWVIDEOPORT WAITFORSYNC FLAGS - * - ****************************************************************************/ - -/* - * Waits until the beginning of the next VSYNC - */ -#define DDVPWAIT_BEGIN 0x00000001l - -/* - * Waits until the end of the next/current VSYNC - */ -#define DDVPWAIT_END 0x00000002l - -/* - * Waits until the beginning of the specified line - */ -#define DDVPWAIT_LINE 0x00000003l - -/**************************************************************************** - * - * DIRECTDRAWVIDEOPORT FLIP FLAGS - * - ****************************************************************************/ - -/* - * Flips the normal video surface - */ -#define DDVPFLIP_VIDEO 0x00000001l - -/* - * Flips the VBI surface - */ -#define DDVPFLIP_VBI 0x00000002l - -/**************************************************************************** - * - * DIRIRECTDRAWVIDEOPORT GETVIDEOSIGNALSTATUS VALUES - * - ****************************************************************************/ - -/* - * No video signal is present at the video port - */ -#define DDVPSQ_NOSIGNAL 0x00000001l - -/* - * A valid video signal is present at the video port - */ -#define DDVPSQ_SIGNALOK 0x00000002l - -/**************************************************************************** - * - * VIDEOPORTBANDWIDTH Flags - * - ****************************************************************************/ - -/* - * The specified height/width refer to the size of the video port data - * written into memory, after prescaling has occured. - */ -#define DDVPB_VIDEOPORT 0x00000001l - -/* - * The specified height/width refer to the source size of the overlay. - */ -#define DDVPB_OVERLAY 0x00000002l - -/* - * This is a query for the device to return which caps this device requires. - */ -#define DDVPB_TYPE 0x00000004l - -/**************************************************************************** - * - * VIDEOPORTBANDWIDTH Caps - * - ****************************************************************************/ - -/* - * The bandwidth for this device is dependant on the overlay source size. - */ -#define DDVPBCAPS_SOURCE 0x00000001l - -/* - * The bandwidth for this device is dependant on the overlay destination - * size. - */ -#define DDVPBCAPS_DESTINATION 0x00000002l - -/**************************************************************************** - * - * DDVIDEOPORTCONTAINER CreateVideoPort flags - * - ****************************************************************************/ - -/* - * The process only wants to control the VBI portion of the video stream. - */ -#define DDVPCREATE_VBIONLY 0x00000001l - -/* - * The process only wants to control the non-VBI (video) portion of - * the video stream. - */ -#define DDVPCREATE_VIDEOONLY 0x00000002l - -/**************************************************************************** - * - * DDVIDEOPORTSTATUS flags - * - ****************************************************************************/ - -/* - * The video port interface is only controlling the VBI portion of the - * video stream - */ -#define DDVPSTATUS_VBIONLY 0x00000001l - -/* - * The video port interface is only controlling the video portion of the - * video stream - */ -#define DDVPSTATUS_VIDEOONLY 0x00000002l - - -#ifdef __cplusplus -}; -#endif - -#endif // GUID_DEFS_ONLY - -#endif - +/*==========================================================================; + * + * Copyright (C) Microsoft Corporation. All Rights Reserved. + * + * File: dvp.h + * Content: DirectDrawVideoPort include file + * + ***************************************************************************/ + +#ifndef __DVP_INCLUDED__ +#define __DVP_INCLUDED__ + +/* + * GUIDS used by DirectDrawVideoPort objects + */ +#if defined( _WIN32 ) && (!defined( _NO_COM ) || defined( DEFINE_GUID )) +DEFINE_GUID( IID_IDDVideoPortContainer, 0x6C142760,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60 ); +DEFINE_GUID( IID_IDirectDrawVideoPort, 0xB36D93E0,0x2B43,0x11CF,0xA2,0xDE,0x00,0xAA,0x00,0xB9,0x33,0x56 ); +DEFINE_GUID( IID_IDirectDrawVideoPortNotify, 0xA655FB94,0x0589,0x4E57,0xB3,0x33,0x56,0x7A,0x89,0x46,0x8C,0x88); + + + +DEFINE_GUID( DDVPTYPE_E_HREFH_VREFH, 0x54F39980L,0xDA60,0x11CF,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8); +DEFINE_GUID( DDVPTYPE_E_HREFH_VREFL, 0x92783220L,0xDA60,0x11CF,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8); +DEFINE_GUID( DDVPTYPE_E_HREFL_VREFH, 0xA07A02E0L,0xDA60,0x11CF,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8); +DEFINE_GUID( DDVPTYPE_E_HREFL_VREFL, 0xE09C77E0L,0xDA60,0x11CF,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8); +DEFINE_GUID( DDVPTYPE_CCIR656, 0xFCA326A0L,0xDA60,0x11CF,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8); +DEFINE_GUID( DDVPTYPE_BROOKTREE, 0x1352A560L,0xDA61,0x11CF,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8); +DEFINE_GUID( DDVPTYPE_PHILIPS, 0x332CF160L,0xDA61,0x11CF,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8); +#endif + +#ifndef GUID_DEFS_ONLY + +#if defined( _WIN32 ) && !defined( _NO_COM ) +#define COM_NO_WINDOWS_H +#include +#else +#define IUnknown void +#endif + +/* + * These definitions are required to allow polymorphic structure members (i.e. those + * that are referred to both as DWORDs and as pointers) to resolve into a type + * of correct size to hold the largest of those two types (i.e. pointer) on 64 bit + * systems. For 32 bit environments, ULONG_PTR resolves to a DWORD. + */ +#ifndef MAXULONG_PTR +#define ULONG_PTR DWORD +#endif //MAXULONG_PTR + +#ifdef __cplusplus +extern "C" { +#endif + +/*============================================================================ + * + * DirectDraw Structures + * + * Various structures used to invoke DirectDraw. + * + *==========================================================================*/ + +struct IDirectDraw; +struct IDirectDrawSurface; +struct IDirectDrawPalette; +struct IDirectDrawClipper; + +typedef struct IDDVideoPortContainer FAR *LPDDVIDEOPORTCONTAINER; +typedef struct IDirectDrawVideoPort FAR *LPDIRECTDRAWVIDEOPORT; +typedef struct IDirectDrawVideoPortNotify FAR *LPDIRECTDRAWVIDEOPORTNOTIFY; + +typedef struct _DDVIDEOPORTCONNECT FAR *LPDDVIDEOPORTCONNECT; +typedef struct _DDVIDEOPORTCAPS FAR *LPDDVIDEOPORTCAPS; +typedef struct _DDVIDEOPORTDESC FAR *LPDDVIDEOPORTDESC; +typedef struct _DDVIDEOPORTINFO FAR *LPDDVIDEOPORTINFO; +typedef struct _DDVIDEOPORTBANDWIDTH FAR *LPDDVIDEOPORTBANDWIDTH; +typedef struct _DDVIDEOPORTSTATUS FAR *LPDDVIDEOPORTSTATUS; +typedef struct _DDVIDEOPORTNOTIFY FAR *LPDDVIDEOPORTNOTIFY; + +typedef struct IDDVideoPortContainerVtbl DDVIDEOPORTCONTAINERCALLBACKS; +typedef struct IDirectDrawVideoPortVtbl DIRECTDRAWVIDEOPORTCALLBACKS; +typedef struct IDirectDrawVideoPortNotifyVtbl DIRECTDRAWVIDEOPORTNOTIFYCALLBACKS; + + +/* + * API's + */ +typedef HRESULT (FAR PASCAL * LPDDENUMVIDEOCALLBACK)(LPDDVIDEOPORTCAPS, LPVOID); + + +/* + * INTERACES FOLLOW: + * IDirectDrawVideoPort + * IVideoPort + */ + +/* + * IDirectDrawVideoPortContainer + */ +#if defined( _WIN32 ) && !defined( _NO_COM ) +#undef INTERFACE +#define INTERFACE IDDVideoPortContainer +DECLARE_INTERFACE_( IDDVideoPortContainer, IUnknown ) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + /*** IDirectDrawVideoPort methods ***/ + STDMETHOD(CreateVideoPort)(THIS_ DWORD, LPDDVIDEOPORTDESC, LPDIRECTDRAWVIDEOPORT FAR *, IUnknown FAR *) PURE; + STDMETHOD(EnumVideoPorts)(THIS_ DWORD, LPDDVIDEOPORTCAPS, LPVOID,LPDDENUMVIDEOCALLBACK ) PURE; + STDMETHOD(GetVideoPortConnectInfo)(THIS_ DWORD, LPDWORD, LPDDVIDEOPORTCONNECT ) PURE; + STDMETHOD(QueryVideoPortStatus)(THIS_ DWORD, LPDDVIDEOPORTSTATUS ) PURE; +}; + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IVideoPortContainer_QueryInterface(p, a, b) (p)->lpVtbl->QueryInterface(p, a, b) +#define IVideoPortContainer_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IVideoPortContainer_Release(p) (p)->lpVtbl->Release(p) +#define IVideoPortContainer_CreateVideoPort(p, a, b, c, d) (p)->lpVtbl->CreateVideoPort(p, a, b, c, d) +#define IVideoPortContainer_EnumVideoPorts(p, a, b, c, d) (p)->lpVtbl->EnumVideoPorts(p, a, b, c, d) +#define IVideoPortContainer_GetVideoPortConnectInfo(p, a, b, c) (p)->lpVtbl->GetVideoPortConnectInfo(p, a, b, c) +#define IVideoPortContainer_QueryVideoPortStatus(p, a, b) (p)->lpVtbl->QueryVideoPortStatus(p, a, b) +#else +#define IVideoPortContainer_QueryInterface(p, a, b) (p)->QueryInterface(a, b) +#define IVideoPortContainer_AddRef(p) (p)->AddRef() +#define IVideoPortContainer_Release(p) (p)->Release() +#define IVideoPortContainer_CreateVideoPort(p, a, b, c, d) (p)->CreateVideoPort(a, b, c, d) +#define IVideoPortContainer_EnumVideoPorts(p, a, b, c, d) (p)->EnumVideoPorts(a, b, c, d) +#define IVideoPortContainer_GetVideoPortConnectInfo(p, a, b, c) (p)->GetVideoPortConnectInfo(a, b, c) +#define IVideoPortContainer_QueryVideoPortStatus(p, a, b) (p)->QueryVideoPortStatus(a, b) +#endif + +#endif + + +/* + * IDirectDrawVideoPort + */ +#if defined( _WIN32 ) && !defined( _NO_COM ) +#undef INTERFACE +#define INTERFACE IDirectDrawVideoPort +DECLARE_INTERFACE_( IDirectDrawVideoPort, IUnknown ) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + /*** IVideoPort methods ***/ + STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE, DWORD) PURE; + STDMETHOD(GetBandwidthInfo)(THIS_ LPDDPIXELFORMAT, DWORD, DWORD, DWORD, LPDDVIDEOPORTBANDWIDTH) PURE; + STDMETHOD(GetColorControls)(THIS_ LPDDCOLORCONTROL) PURE; + STDMETHOD(GetInputFormats)(THIS_ LPDWORD, LPDDPIXELFORMAT, DWORD) PURE; + STDMETHOD(GetOutputFormats)(THIS_ LPDDPIXELFORMAT, LPDWORD, LPDDPIXELFORMAT, DWORD) PURE; + STDMETHOD(GetFieldPolarity)(THIS_ LPBOOL) PURE; + STDMETHOD(GetVideoLine)(THIS_ LPDWORD) PURE; + STDMETHOD(GetVideoSignalStatus)(THIS_ LPDWORD) PURE; + STDMETHOD(SetColorControls)(THIS_ LPDDCOLORCONTROL) PURE; + STDMETHOD(SetTargetSurface)(THIS_ LPDIRECTDRAWSURFACE, DWORD) PURE; + STDMETHOD(StartVideo)(THIS_ LPDDVIDEOPORTINFO) PURE; + STDMETHOD(StopVideo)(THIS) PURE; + STDMETHOD(UpdateVideo)(THIS_ LPDDVIDEOPORTINFO) PURE; + STDMETHOD(WaitForSync)(THIS_ DWORD, DWORD, DWORD) PURE; +}; + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IVideoPort_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IVideoPort_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IVideoPort_Release(p) (p)->lpVtbl->Release(p) +#define IVideoPort_SetTargetSurface(p,a,b) (p)->lpVtbl->SetTargetSurface(p,a,b) +#define IVideoPort_Flip(p,a,b) (p)->lpVtbl->Flip(p,a,b) +#define IVideoPort_GetBandwidthInfo(p,a,b,c,d,e) (p)->lpVtbl->GetBandwidthInfo(p,a,b,c,d,e) +#define IVideoPort_GetColorControls(p,a) (p)->lpVtbl->GetColorControls(p,a) +#define IVideoPort_GetInputFormats(p,a,b,c) (p)->lpVtbl->GetInputFormats(p,a,b,c) +#define IVideoPort_GetOutputFormats(p,a,b,c,d) (p)->lpVtbl->GetOutputFormats(p,a,b,c,d) +#define IVideoPort_GetFieldPolarity(p,a) (p)->lpVtbl->GetFieldPolarity(p,a) +#define IVideoPort_GetVideoLine(p,a) (p)->lpVtbl->GetVideoLine(p,a) +#define IVideoPort_GetVideoSignalStatus(p,a) (p)->lpVtbl->GetVideoSignalStatus(p,a) +#define IVideoPort_SetColorControls(p,a) (p)->lpVtbl->SetColorControls(p,a) +#define IVideoPort_StartVideo(p,a) (p)->lpVtbl->StartVideo(p,a) +#define IVideoPort_StopVideo(p) (p)->lpVtbl->StopVideo(p) +#define IVideoPort_UpdateVideo(p,a) (p)->lpVtbl->UpdateVideo(p,a) +#define IVideoPort_WaitForSync(p,a,b,c) (p)->lpVtbl->WaitForSync(p,a,b,c) +#else +#define IVideoPort_QueryInterface(p,a,b) (p)->QueryInterface(a,b) +#define IVideoPort_AddRef(p) (p)->AddRef() +#define IVideoPort_Release(p) (p)->Release() +#define IVideoPort_SetTargetSurface(p,a,b) (p)->SetTargetSurface(a,b) +#define IVideoPort_Flip(p,a,b) (p)->Flip(a,b) +#define IVideoPort_GetBandwidthInfo(p,a,b,c,d,e) (p)->GetBandwidthInfo(a,b,c,d,e) +#define IVideoPort_GetColorControls(p,a) (p)->GetColorControls(a) +#define IVideoPort_GetInputFormats(p,a,b,c) (p)->GetInputFormats(a,b,c) +#define IVideoPort_GetOutputFormats(p,a,b,c,d) (p)->GetOutputFormats(a,b,c,d) +#define IVideoPort_GetFieldPolarity(p,a) (p)->GetFieldPolarity(a) +#define IVideoPort_GetVideoLine(p,a) (p)->GetVideoLine(a) +#define IVideoPort_GetVideoSignalStatus(p,a) (p)->GetVideoSignalStatus(a) +#define IVideoPort_SetColorControls(p,a) (p)->SetColorControls(a) +#define IVideoPort_StartVideo(p,a) (p)->StartVideo(a) +#define IVideoPort_StopVideo(p) (p)->StopVideo() +#define IVideoPort_UpdateVideo(p,a) (p)->UpdateVideo(a) +#define IVideoPort_WaitForSync(p,a,b,c) (p)->WaitForSync(a,b,c) +#endif + +#endif + +/* + * IDirectDrawVideoPort + */ +#if defined( _WIN32 ) && !defined( _NO_COM ) +#undef INTERFACE +#define INTERFACE IDirectDrawVideoPortNotify +DECLARE_INTERFACE_( IDirectDrawVideoPortNotify, IUnknown ) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + /*** IVideoPort methods ***/ + STDMETHOD(AcquireNotification)(THIS_ HANDLE *, LPDDVIDEOPORTNOTIFY) PURE; + STDMETHOD(ReleaseNotification)(THIS_ HANDLE) PURE; +}; + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IVideoPortNotify_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IVideoPortNotify_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IVideoPortNotify_Release(p) (p)->lpVtbl->Release(p) +#define IVideoPortNotify_AcquireNotification(p,a,b) (p)->lpVtbl->AcquireNotification(p,a,b) +#define IVideoPortNotify_ReleaseNotification(p,a) (p)->lpVtbl->ReleaseNotification(p,a) +#else +#define IVideoPortNotify_QueryInterface(p,a,b) (p)->QueryInterface(a,b) +#define IVideoPortNotify_AddRef(p) (p)->AddRef() +#define IVideoPortNotify_Release(p) (p)->Release() +#define IVideoPortNotify_AcquireNotification(p,a,b) (p)->lpVtbl->AcquireNotification(a,b) +#define IVideoPortNotify_ReleaseNotification(p,a) (p)->lpVtbl->ReleaseNotification(a) +#endif + +#endif + +/* + * DDVIDEOPORTCONNECT + */ +typedef struct _DDVIDEOPORTCONNECT +{ + DWORD dwSize; // size of the DDVIDEOPORTCONNECT structure + DWORD dwPortWidth; // Width of the video port + GUID guidTypeID; // Description of video port connection + DWORD dwFlags; // Connection flags + ULONG_PTR dwReserved1; // Reserved, set to zero. +} DDVIDEOPORTCONNECT; + + +/* + * DDVIDEOPORTCAPS + */ +typedef struct _DDVIDEOPORTCAPS +{ + DWORD dwSize; // size of the DDVIDEOPORTCAPS structure + DWORD dwFlags; // indicates which fields contain data + DWORD dwMaxWidth; // max width of the video port field + DWORD dwMaxVBIWidth; // max width of the VBI data + DWORD dwMaxHeight; // max height of the video port field + DWORD dwVideoPortID; // Video port ID (0 - (dwMaxVideoPorts -1)) + DWORD dwCaps; // Video port capabilities + DWORD dwFX; // More video port capabilities + DWORD dwNumAutoFlipSurfaces; // Max number of autoflippable surfaces allowed + DWORD dwAlignVideoPortBoundary; // Byte restriction of placement within the surface + DWORD dwAlignVideoPortPrescaleWidth;// Byte restriction of width after prescaling + DWORD dwAlignVideoPortCropBoundary; // Byte restriction of left cropping + DWORD dwAlignVideoPortCropWidth; // Byte restriction of cropping width + DWORD dwPreshrinkXStep; // Width can be shrunk in steps of 1/x + DWORD dwPreshrinkYStep; // Height can be shrunk in steps of 1/x + DWORD dwNumVBIAutoFlipSurfaces; // Max number of VBI autoflippable surfaces allowed + DWORD dwNumPreferredAutoflip; // Optimal number of autoflippable surfaces for hardware + WORD wNumFilterTapsX; // Number of taps the prescaler uses in the X direction (0 - no prescale, 1 - replication, etc.) + WORD wNumFilterTapsY; // Number of taps the prescaler uses in the Y direction (0 - no prescale, 1 - replication, etc.) +} DDVIDEOPORTCAPS; + +/* + * The dwMaxWidth and dwMaxVBIWidth members are valid + */ +#define DDVPD_WIDTH 0x00000001l + +/* + * The dwMaxHeight member is valid + */ +#define DDVPD_HEIGHT 0x00000002l + +/* + * The dwVideoPortID member is valid + */ +#define DDVPD_ID 0x00000004l + +/* + * The dwCaps member is valid + */ +#define DDVPD_CAPS 0x00000008l + +/* + * The dwFX member is valid + */ +#define DDVPD_FX 0x00000010l + +/* + * The dwNumAutoFlipSurfaces member is valid + */ +#define DDVPD_AUTOFLIP 0x00000020l + +/* + * All of the alignment members are valid + */ +#define DDVPD_ALIGN 0x00000040l + +/* + * The dwNumPreferredAutoflip member is valid + */ +#define DDVPD_PREFERREDAUTOFLIP 0x00000080l + +/* + * The wNumFilterTapsX and wNumFilterTapsY fields are valid + */ +#define DDVPD_FILTERQUALITY 0x00000100l + +/* + * DDVIDEOPORTDESC + */ +typedef struct _DDVIDEOPORTDESC +{ + DWORD dwSize; // size of the DDVIDEOPORTDESC structure + DWORD dwFieldWidth; // width of the video port field + DWORD dwVBIWidth; // width of the VBI data + DWORD dwFieldHeight; // height of the video port field + DWORD dwMicrosecondsPerField; // Microseconds per video field + DWORD dwMaxPixelsPerSecond; // Maximum pixel rate per second + DWORD dwVideoPortID; // Video port ID (0 - (dwMaxVideoPorts -1)) + DWORD dwReserved1; // Reserved for future use - set to zero (struct padding) + DDVIDEOPORTCONNECT VideoPortType; // Description of video port connection + ULONG_PTR dwReserved2; // Reserved for future use - set to zero + ULONG_PTR dwReserved3; // Reserved for future use - set to zero +} DDVIDEOPORTDESC; + + +/* + * DDVIDEOPORTINFO + */ +typedef struct _DDVIDEOPORTINFO +{ + DWORD dwSize; // Size of the structure + DWORD dwOriginX; // Placement of the video data within the surface. + DWORD dwOriginY; // Placement of the video data within the surface. + DWORD dwVPFlags; // Video port options + RECT rCrop; // Cropping rectangle (optional). + DWORD dwPrescaleWidth; // Determines pre-scaling/zooming in the X direction (optional). + DWORD dwPrescaleHeight; // Determines pre-scaling/zooming in the Y direction (optional). + LPDDPIXELFORMAT lpddpfInputFormat; // Video format written to the video port + LPDDPIXELFORMAT lpddpfVBIInputFormat; // Input format of the VBI data + LPDDPIXELFORMAT lpddpfVBIOutputFormat;// Output format of the data + DWORD dwVBIHeight; // Specifies the number of lines of data within the vertical blanking interval. + ULONG_PTR dwReserved1; // Reserved for future use - set to zero + ULONG_PTR dwReserved2; // Reserved for future use - set to zero +} DDVIDEOPORTINFO; + + +/* + * DDVIDEOPORTBANDWIDTH + */ +typedef struct _DDVIDEOPORTBANDWIDTH +{ + DWORD dwSize; // Size of the structure + DWORD dwCaps; + DWORD dwOverlay; // Zoom factor at which overlay is supported + DWORD dwColorkey; // Zoom factor at which overlay w/ colorkey is supported + DWORD dwYInterpolate; // Zoom factor at which overlay w/ Y interpolation is supported + DWORD dwYInterpAndColorkey; // Zoom factor at which ovelray w/ Y interpolation and colorkeying is supported + ULONG_PTR dwReserved1; // Reserved for future use - set to zero + ULONG_PTR dwReserved2; // Reserved for future use - set to zero +} DDVIDEOPORTBANDWIDTH; + + +/* + * DDVIDEOPORTSTATUS + */ +typedef struct _DDVIDEOPORTSTATUS +{ + DWORD dwSize; // Size of the structure + BOOL bInUse; // TRUE if video port is currently being used + DWORD dwFlags; // Currently not used + DWORD dwReserved1; // Reserved for future use + DDVIDEOPORTCONNECT VideoPortType; // Information about the connection + ULONG_PTR dwReserved2; // Reserved for future use + ULONG_PTR dwReserved3; // Reserved for future use +} DDVIDEOPORTSTATUS; + +/* + * DDVIDEOPORTNOTIFY + */ +typedef struct _DDVIDEOPORTNOTIFY +{ + LARGE_INTEGER ApproximateTimeStamp; // Timestamp in the event notification + LONG lField; // 0 if even, 1 if odd, -1 if unknown + UINT dwSurfaceIndex; // Index in the surface chain of the surface that received the sample + LONG lDone; // Call InterlockedIncrement on this when done with sample +} DDVIDEOPORTNOTIFY; + + +/*============================================================================ + * + * Video Port Flags + * + * All flags are bit flags. + * + *==========================================================================*/ + +/**************************************************************************** + * + * VIDEOPORT DDVIDEOPORTCONNECT FLAGS + * + ****************************************************************************/ + +/* + * When this is set by the driver and passed to the client, this + * indicates that the video port is capable of double clocking the data. + * When this is set by the client, this indicates that the video port + * should enable double clocking. This flag is only valid with external + * syncs. + */ +#define DDVPCONNECT_DOUBLECLOCK 0x00000001l + +/* + * When this is set by the driver and passed to the client, this + * indicates that the video port is capable of using an external VACT + * signal. When this is set by the client, this indicates that the + * video port should use the external VACT signal. + */ +#define DDVPCONNECT_VACT 0x00000002l + +/* + * When this is set by the driver and passed to the client, this + * indicates that the video port is capable of treating even fields + * like odd fields and visa versa. When this is set by the client, + * this indicates that the video port should treat even fields like odd + * fields. + */ +#define DDVPCONNECT_INVERTPOLARITY 0x00000004l + +/* + * Indicates that any data written to the video port during the VREF + * period will not be written into the frame buffer. This flag is read only. + */ +#define DDVPCONNECT_DISCARDSVREFDATA 0x00000008l + +/* + * When this is set be the driver and passed to the client, this + * indicates that the device will write half lines into the frame buffer + * if half lines are provided by the decoder. If this is set by the client, + * this indicates that the decoder will be supplying half lines. + */ +#define DDVPCONNECT_HALFLINE 0x00000010l + +/* + * Indicates that the signal is interlaced. This flag is only + * set by the client. + */ +#define DDVPCONNECT_INTERLACED 0x00000020l + +/* + * Indicates that video port is shareable and that this video port + * will use the even fields. This flag is only set by the client. + */ +#define DDVPCONNECT_SHAREEVEN 0x00000040l + +/* + * Indicates that video port is shareable and that this video port + * will use the odd fields. This flag is only set by the client. + */ +#define DDVPCONNECT_SHAREODD 0x00000080l + +/**************************************************************************** + * + * VIDEOPORT DDVIDEOPORTDESC CAPS + * + ****************************************************************************/ + +/* + * Flip can be performed automatically to avoid tearing. + */ +#define DDVPCAPS_AUTOFLIP 0x00000001l + +/* + * Supports interlaced video + */ +#define DDVPCAPS_INTERLACED 0x00000002l + +/* + * Supports non-interlaced video + */ +#define DDVPCAPS_NONINTERLACED 0x00000004l + +/* + * Indicates that the device can return whether the current field + * of an interlaced signal is even or odd. + */ +#define DDVPCAPS_READBACKFIELD 0x00000008l + +/* + * Indicates that the device can return the current line of video + * being written into the frame buffer. + */ +#define DDVPCAPS_READBACKLINE 0x00000010l + +/* + * Allows two gen-locked video streams to share a single video port, + * where one stream uses the even fields and the other uses the odd + * fields. Separate parameters (including address, scaling, + * cropping, etc.) are maintained for both fields.) + */ +#define DDVPCAPS_SHAREABLE 0x00000020l + +/* + * Even fields of video can be automatically discarded. + */ +#define DDVPCAPS_SKIPEVENFIELDS 0x00000040l + +/* + * Odd fields of video can be automatically discarded. + */ +#define DDVPCAPS_SKIPODDFIELDS 0x00000080l + +/* + * Indicates that the device is capable of driving the graphics + * VSYNC with the video port VSYNC. + */ +#define DDVPCAPS_SYNCMASTER 0x00000100l + +/* + * Indicates that data within the vertical blanking interval can + * be written to a different surface. + */ +#define DDVPCAPS_VBISURFACE 0x00000200l + +/* + * Indicates that the video port can perform color operations + * on the incoming data before it is written to the frame buffer. + */ +#define DDVPCAPS_COLORCONTROL 0x00000400l + +/* + * Indicates that the video port can accept VBI data in a different + * width or format than the regular video data. + */ +#define DDVPCAPS_OVERSAMPLEDVBI 0x00000800l + +/* + * Indicates that the video port can write data directly to system memory + */ +#define DDVPCAPS_SYSTEMMEMORY 0x00001000l + +/* + * Indicates that the VBI and video portions of the video stream can + * be controlled by an independent processes. + */ +#define DDVPCAPS_VBIANDVIDEOINDEPENDENT 0x00002000l + +/* + * Indicates that the video port contains high quality hardware + * de-interlacing hardware that should be used instead of the + * bob/weave algorithms. + */ +#define DDVPCAPS_HARDWAREDEINTERLACE 0x00004000l + + +/**************************************************************************** + * + * VIDEOPORT DDVIDEOPORTDESC FX + * + ****************************************************************************/ + +/* + * Limited cropping is available to crop out the vertical interval data. + */ +#define DDVPFX_CROPTOPDATA 0x00000001l + +/* + * Incoming data can be cropped in the X direction before it is written + * to the surface. + */ +#define DDVPFX_CROPX 0x00000002l + +/* + * Incoming data can be cropped in the Y direction before it is written + * to the surface. + */ +#define DDVPFX_CROPY 0x00000004l + +/* + * Supports interleaving interlaced fields in memory. + */ +#define DDVPFX_INTERLEAVE 0x00000008l + +/* + * Supports mirroring left to right as the video data is written + * into the frame buffer. + */ +#define DDVPFX_MIRRORLEFTRIGHT 0x00000010l + +/* + * Supports mirroring top to bottom as the video data is written + * into the frame buffer. + */ +#define DDVPFX_MIRRORUPDOWN 0x00000020l + +/* + * Data can be arbitrarily shrunk in the X direction before it + * is written to the surface. + */ +#define DDVPFX_PRESHRINKX 0x00000040l + +/* + * Data can be arbitrarily shrunk in the Y direction before it + * is written to the surface. + */ +#define DDVPFX_PRESHRINKY 0x00000080l + +/* + * Data can be binary shrunk (1/2, 1/4, 1/8, etc.) in the X + * direction before it is written to the surface. + */ +#define DDVPFX_PRESHRINKXB 0x00000100l + +/* + * Data can be binary shrunk (1/2, 1/4, 1/8, etc.) in the Y + * direction before it is written to the surface. + */ +#define DDVPFX_PRESHRINKYB 0x00000200l + +/* + * Data can be shrunk in increments of 1/x in the X direction + * (where X is specified in the DDVIDEOPORTCAPS.dwPreshrinkXStep) + * before it is written to the surface. + */ +#define DDVPFX_PRESHRINKXS 0x00000400l + +/* + * Data can be shrunk in increments of 1/x in the Y direction + * (where X is specified in the DDVIDEOPORTCAPS.dwPreshrinkYStep) + * before it is written to the surface. + */ +#define DDVPFX_PRESHRINKYS 0x00000800l + +/* + * Data can be arbitrarily stretched in the X direction before + * it is written to the surface. + */ +#define DDVPFX_PRESTRETCHX 0x00001000l + +/* + * Data can be arbitrarily stretched in the Y direction before + * it is written to the surface. + */ +#define DDVPFX_PRESTRETCHY 0x00002000l + +/* + * Data can be integer stretched in the X direction before it is + * written to the surface. + */ +#define DDVPFX_PRESTRETCHXN 0x00004000l + +/* + * Data can be integer stretched in the Y direction before it is + * written to the surface. + */ +#define DDVPFX_PRESTRETCHYN 0x00008000l + +/* + * Indicates that data within the vertical blanking interval can + * be converted independently of the remaining video data. + */ +#define DDVPFX_VBICONVERT 0x00010000l + +/* + * Indicates that scaling can be disabled for data within the + * vertical blanking interval. + */ +#define DDVPFX_VBINOSCALE 0x00020000l + +/* + * Indicates that the video data can ignore the left and right + * cropping coordinates when cropping oversampled VBI data. + */ +#define DDVPFX_IGNOREVBIXCROP 0x00040000l + +/* + * Indicates that interleaving can be disabled for data within the + * vertical blanking interval. + */ +#define DDVPFX_VBINOINTERLEAVE 0x00080000l + + +/**************************************************************************** + * + * VIDEOPORT DDVIDEOPORTINFO FLAGS + * + ****************************************************************************/ + +/* + * Perform automatic flipping. Auto-flipping is performed between + * the overlay surface that was attached to the video port using + * IDirectDrawVideoPort::AttachSurface and the overlay surfaces that + * are attached to the surface via the IDirectDrawSurface::AttachSurface + * method. The flip order is the order in which the overlay surfaces + * were. attached. + */ +#define DDVP_AUTOFLIP 0x00000001l + +/* + * Perform conversion using the ddpfOutputFormat information. + */ +#define DDVP_CONVERT 0x00000002l + +/* + * Perform cropping using the specified rectangle. + */ +#define DDVP_CROP 0x00000004l + +/* + * Indicates that interlaced fields should be interleaved in memory. + */ +#define DDVP_INTERLEAVE 0x00000008l + +/* + * Indicates that the data should be mirrored left to right as it's + * written into the frame buffer. + */ +#define DDVP_MIRRORLEFTRIGHT 0x00000010l + +/* + * Indicates that the data should be mirrored top to bottom as it's + * written into the frame buffer. + */ +#define DDVP_MIRRORUPDOWN 0x00000020l + +/* + * Perform pre-scaling/zooming based on the pre-scale parameters. + */ +#define DDVP_PRESCALE 0x00000040l + +/* + * Ignore input of even fields. + */ +#define DDVP_SKIPEVENFIELDS 0x00000080l + +/* + * Ignore input of odd fields. + */ +#define DDVP_SKIPODDFIELDS 0x00000100l + +/* + * Drive the graphics VSYNCs using the video port VYSNCs. + */ +#define DDVP_SYNCMASTER 0x00000200l + +/* + * The ddpfVBIOutputFormatFormat member contains data that should be used + * to convert the data within the vertical blanking interval. + */ +#define DDVP_VBICONVERT 0x00000400l + +/* + * Indicates that data within the vertical blanking interval + * should not be scaled. + */ +#define DDVP_VBINOSCALE 0x00000800l + +/* + * Indicates that these bob/weave decisions should not be + * overriden by other interfaces. + */ +#define DDVP_OVERRIDEBOBWEAVE 0x00001000l + +/* + * Indicates that the video data should ignore the left and right + * cropping coordinates when cropping the VBI data. + */ +#define DDVP_IGNOREVBIXCROP 0x00002000l + +/* + * Indicates that interleaving can be disabled for data within the + * vertical blanking interval. + */ +#define DDVP_VBINOINTERLEAVE 0x00004000l + +/* + * Indicates that the video port should use the hardware + * de-interlacing hardware. + */ +#define DDVP_HARDWAREDEINTERLACE 0x00008000l + +/**************************************************************************** + * + * DIRIRECTDRAWVIDEOPORT GETINPUTFORMAT/GETOUTPUTFORMAT FLAGS + * + ****************************************************************************/ + +/* + * Return formats for the video data + */ +#define DDVPFORMAT_VIDEO 0x00000001l + +/* + * Return formats for the VBI data + */ +#define DDVPFORMAT_VBI 0x00000002l + +/**************************************************************************** + * + * DIRIRECTDRAWVIDEOPORT SETTARGETSURFACE FLAGS + * + ****************************************************************************/ + +/* + * Surface should receive video data (and VBI data if a surface + * is not explicitly attached for that purpose) + */ +#define DDVPTARGET_VIDEO 0x00000001l + +/* + * Surface should receive VBI data + */ +#define DDVPTARGET_VBI 0x00000002l + + +/**************************************************************************** + * + * DIRIRECTDRAWVIDEOPORT WAITFORSYNC FLAGS + * + ****************************************************************************/ + +/* + * Waits until the beginning of the next VSYNC + */ +#define DDVPWAIT_BEGIN 0x00000001l + +/* + * Waits until the end of the next/current VSYNC + */ +#define DDVPWAIT_END 0x00000002l + +/* + * Waits until the beginning of the specified line + */ +#define DDVPWAIT_LINE 0x00000003l + +/**************************************************************************** + * + * DIRECTDRAWVIDEOPORT FLIP FLAGS + * + ****************************************************************************/ + +/* + * Flips the normal video surface + */ +#define DDVPFLIP_VIDEO 0x00000001l + +/* + * Flips the VBI surface + */ +#define DDVPFLIP_VBI 0x00000002l + +/**************************************************************************** + * + * DIRIRECTDRAWVIDEOPORT GETVIDEOSIGNALSTATUS VALUES + * + ****************************************************************************/ + +/* + * No video signal is present at the video port + */ +#define DDVPSQ_NOSIGNAL 0x00000001l + +/* + * A valid video signal is present at the video port + */ +#define DDVPSQ_SIGNALOK 0x00000002l + +/**************************************************************************** + * + * VIDEOPORTBANDWIDTH Flags + * + ****************************************************************************/ + +/* + * The specified height/width refer to the size of the video port data + * written into memory, after prescaling has occured. + */ +#define DDVPB_VIDEOPORT 0x00000001l + +/* + * The specified height/width refer to the source size of the overlay. + */ +#define DDVPB_OVERLAY 0x00000002l + +/* + * This is a query for the device to return which caps this device requires. + */ +#define DDVPB_TYPE 0x00000004l + +/**************************************************************************** + * + * VIDEOPORTBANDWIDTH Caps + * + ****************************************************************************/ + +/* + * The bandwidth for this device is dependant on the overlay source size. + */ +#define DDVPBCAPS_SOURCE 0x00000001l + +/* + * The bandwidth for this device is dependant on the overlay destination + * size. + */ +#define DDVPBCAPS_DESTINATION 0x00000002l + +/**************************************************************************** + * + * DDVIDEOPORTCONTAINER CreateVideoPort flags + * + ****************************************************************************/ + +/* + * The process only wants to control the VBI portion of the video stream. + */ +#define DDVPCREATE_VBIONLY 0x00000001l + +/* + * The process only wants to control the non-VBI (video) portion of + * the video stream. + */ +#define DDVPCREATE_VIDEOONLY 0x00000002l + +/**************************************************************************** + * + * DDVIDEOPORTSTATUS flags + * + ****************************************************************************/ + +/* + * The video port interface is only controlling the VBI portion of the + * video stream + */ +#define DDVPSTATUS_VBIONLY 0x00000001l + +/* + * The video port interface is only controlling the video portion of the + * video stream + */ +#define DDVPSTATUS_VIDEOONLY 0x00000002l + + +#ifdef __cplusplus +}; +#endif + +#endif // GUID_DEFS_ONLY + +#endif + diff --git a/videoInputSrcAndDemos/libs/DShow/Include/dx7todx8.h b/videoInputSrcAndDemos/libs/DShow/Include/dx7todx8.h index caaef28..a513d69 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/dx7todx8.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/dx7todx8.h @@ -1,98 +1,98 @@ -/*==========================================================================; - * - * Copyright (C) Microsoft Corporation. All Rights Reserved. - * - * File: dx7todx8.h - * Content: DX7 to DX8 Direct3D aliases to aid porting DX7 apps to DX8 - * - ***************************************************************************/ - -#ifndef _DX7TODX8_H_ - -/////////////////////////////////////////////////////////////////////////////// -// -// d3d8types.h -// -/////////////////////////////////////////////////////////////////////////////// - -#define D3DTRANSFORMSTATE_WORLD D3DTS_WORLD -#define D3DTRANSFORMSTATE_VIEW D3DTS_VIEW -#define D3DTRANSFORMSTATE_PROJECTION D3DTS_PROJECTION -#define D3DTRANSFORMSTATE_WORLD1 D3DTS_WORLD1 -#define D3DTRANSFORMSTATE_WORLD2 D3DTS_WORLD2 -#define D3DTRANSFORMSTATE_WORLD3 D3DTS_WORLD3 -#define D3DTRANSFORMSTATE_TEXTURE0 D3DTS_TEXTURE0 -#define D3DTRANSFORMSTATE_TEXTURE1 D3DTS_TEXTURE1 -#define D3DTRANSFORMSTATE_TEXTURE2 D3DTS_TEXTURE2 -#define D3DTRANSFORMSTATE_TEXTURE3 D3DTS_TEXTURE3 -#define D3DTRANSFORMSTATE_TEXTURE4 D3DTS_TEXTURE4 -#define D3DTRANSFORMSTATE_TEXTURE5 D3DTS_TEXTURE5 -#define D3DTRANSFORMSTATE_TEXTURE6 D3DTS_TEXTURE6 -#define D3DTRANSFORMSTATE_TEXTURE7 D3DTS_TEXTURE7 -#define D3DTRANSFORMSTATE_FORCE_DWORD D3DTS_FORCE_DWORD - -#define D3DRENDERSTATE_ZENABLE D3DRS_ZENABLE -#define D3DRENDERSTATE_FILLMODE D3DRS_FILLMODE -#define D3DRENDERSTATE_SHADEMODE D3DRS_SHADEMODE -#define D3DRENDERSTATE_LINEPATTERN D3DRS_LINEPATTERN -#define D3DRENDERSTATE_ZWRITEENABLE D3DRS_ZWRITEENABLE -#define D3DRENDERSTATE_ALPHATESTENABLE D3DRS_ALPHATESTENABLE -#define D3DRENDERSTATE_LASTPIXEL D3DRS_LASTPIXEL -#define D3DRENDERSTATE_SRCBLEND D3DRS_SRCBLEND -#define D3DRENDERSTATE_DESTBLEND D3DRS_DESTBLEND -#define D3DRENDERSTATE_CULLMODE D3DRS_CULLMODE -#define D3DRENDERSTATE_ZFUNC D3DRS_ZFUNC -#define D3DRENDERSTATE_ALPHAREF D3DRS_ALPHAREF -#define D3DRENDERSTATE_ALPHAFUNC D3DRS_ALPHAFUNC -#define D3DRENDERSTATE_DITHERENABLE D3DRS_DITHERENABLE -#define D3DRENDERSTATE_ALPHABLENDENABLE D3DRS_ALPHABLENDENABLE -#define D3DRENDERSTATE_FOGENABLE D3DRS_FOGENABLE -#define D3DRENDERSTATE_SPECULARENABLE D3DRS_SPECULARENABLE -#define D3DRENDERSTATE_ZVISIBLE D3DRS_ZVISIBLE -#define D3DRENDERSTATE_FOGCOLOR D3DRS_FOGCOLOR -#define D3DRENDERSTATE_FOGTABLEMODE D3DRS_FOGTABLEMODE -#define D3DRENDERSTATE_FOGSTART D3DRS_FOGSTART -#define D3DRENDERSTATE_FOGEND D3DRS_FOGEND -#define D3DRENDERSTATE_FOGDENSITY D3DRS_FOGDENSITY -#define D3DRENDERSTATE_EDGEANTIALIAS D3DRS_EDGEANTIALIAS -#define D3DRENDERSTATE_ZBIAS D3DRS_ZBIAS -#define D3DRENDERSTATE_RANGEFOGENABLE D3DRS_RANGEFOGENABLE -#define D3DRENDERSTATE_STENCILENABLE D3DRS_STENCILENABLE -#define D3DRENDERSTATE_STENCILFAIL D3DRS_STENCILFAIL -#define D3DRENDERSTATE_STENCILZFAIL D3DRS_STENCILZFAIL -#define D3DRENDERSTATE_STENCILPASS D3DRS_STENCILPASS -#define D3DRENDERSTATE_STENCILFUNC D3DRS_STENCILFUNC -#define D3DRENDERSTATE_STENCILREF D3DRS_STENCILREF -#define D3DRENDERSTATE_STENCILMASK D3DRS_STENCILMASK -#define D3DRENDERSTATE_STENCILWRITEMASK D3DRS_STENCILWRITEMASK -#define D3DRENDERSTATE_TEXTUREFACTOR D3DRS_TEXTUREFACTOR -#define D3DRENDERSTATE_WRAP0 D3DRS_WRAP0 -#define D3DRENDERSTATE_WRAP1 D3DRS_WRAP1 -#define D3DRENDERSTATE_WRAP2 D3DRS_WRAP2 -#define D3DRENDERSTATE_WRAP3 D3DRS_WRAP3 -#define D3DRENDERSTATE_WRAP4 D3DRS_WRAP4 -#define D3DRENDERSTATE_WRAP5 D3DRS_WRAP5 -#define D3DRENDERSTATE_WRAP6 D3DRS_WRAP6 -#define D3DRENDERSTATE_WRAP7 D3DRS_WRAP7 -#define D3DRENDERSTATE_CLIPPING D3DRS_CLIPPING -#define D3DRENDERSTATE_LIGHTING D3DRS_LIGHTING -#define D3DRENDERSTATE_EXTENTS D3DRS_EXTENTS -#define D3DRENDERSTATE_AMBIENT D3DRS_AMBIENT -#define D3DRENDERSTATE_FOGVERTEXMODE D3DRS_FOGVERTEXMODE -#define D3DRENDERSTATE_COLORVERTEX D3DRS_COLORVERTEX -#define D3DRENDERSTATE_LOCALVIEWER D3DRS_LOCALVIEWER -#define D3DRENDERSTATE_NORMALIZENORMALS D3DRS_NORMALIZENORMALS -#define D3DRENDERSTATE_DIFFUSEMATERIALSOURCE D3DRS_DIFFUSEMATERIALSOURCE -#define D3DRENDERSTATE_SPECULARMATERIALSOURCE D3DRS_SPECULARMATERIALSOURCE -#define D3DRENDERSTATE_AMBIENTMATERIALSOURCE D3DRS_AMBIENTMATERIALSOURCE -#define D3DRENDERSTATE_EMISSIVEMATERIALSOURCE D3DRS_EMISSIVEMATERIALSOURCE -#define D3DRENDERSTATE_VERTEXBLEND D3DRS_VERTEXBLEND -#define D3DRENDERSTATE_CLIPPLANEENABLE D3DRS_CLIPPLANEENABLE - -#define RGBA_MAKE D3DCOLOR_RGBA -#define RGB_MAKE D3DCOLOR_XRGB -#define D3DRGBA D3DCOLOR_COLORVALUE -#define D3DRGB(_r,_g,_b) D3DCOLOR_COLORVALUE(_r,_g,_b,1.f) - -#define _DX7TODX8_H_ -#endif //_DX7TODX8_H_ +/*==========================================================================; + * + * Copyright (C) Microsoft Corporation. All Rights Reserved. + * + * File: dx7todx8.h + * Content: DX7 to DX8 Direct3D aliases to aid porting DX7 apps to DX8 + * + ***************************************************************************/ + +#ifndef _DX7TODX8_H_ + +/////////////////////////////////////////////////////////////////////////////// +// +// d3d8types.h +// +/////////////////////////////////////////////////////////////////////////////// + +#define D3DTRANSFORMSTATE_WORLD D3DTS_WORLD +#define D3DTRANSFORMSTATE_VIEW D3DTS_VIEW +#define D3DTRANSFORMSTATE_PROJECTION D3DTS_PROJECTION +#define D3DTRANSFORMSTATE_WORLD1 D3DTS_WORLD1 +#define D3DTRANSFORMSTATE_WORLD2 D3DTS_WORLD2 +#define D3DTRANSFORMSTATE_WORLD3 D3DTS_WORLD3 +#define D3DTRANSFORMSTATE_TEXTURE0 D3DTS_TEXTURE0 +#define D3DTRANSFORMSTATE_TEXTURE1 D3DTS_TEXTURE1 +#define D3DTRANSFORMSTATE_TEXTURE2 D3DTS_TEXTURE2 +#define D3DTRANSFORMSTATE_TEXTURE3 D3DTS_TEXTURE3 +#define D3DTRANSFORMSTATE_TEXTURE4 D3DTS_TEXTURE4 +#define D3DTRANSFORMSTATE_TEXTURE5 D3DTS_TEXTURE5 +#define D3DTRANSFORMSTATE_TEXTURE6 D3DTS_TEXTURE6 +#define D3DTRANSFORMSTATE_TEXTURE7 D3DTS_TEXTURE7 +#define D3DTRANSFORMSTATE_FORCE_DWORD D3DTS_FORCE_DWORD + +#define D3DRENDERSTATE_ZENABLE D3DRS_ZENABLE +#define D3DRENDERSTATE_FILLMODE D3DRS_FILLMODE +#define D3DRENDERSTATE_SHADEMODE D3DRS_SHADEMODE +#define D3DRENDERSTATE_LINEPATTERN D3DRS_LINEPATTERN +#define D3DRENDERSTATE_ZWRITEENABLE D3DRS_ZWRITEENABLE +#define D3DRENDERSTATE_ALPHATESTENABLE D3DRS_ALPHATESTENABLE +#define D3DRENDERSTATE_LASTPIXEL D3DRS_LASTPIXEL +#define D3DRENDERSTATE_SRCBLEND D3DRS_SRCBLEND +#define D3DRENDERSTATE_DESTBLEND D3DRS_DESTBLEND +#define D3DRENDERSTATE_CULLMODE D3DRS_CULLMODE +#define D3DRENDERSTATE_ZFUNC D3DRS_ZFUNC +#define D3DRENDERSTATE_ALPHAREF D3DRS_ALPHAREF +#define D3DRENDERSTATE_ALPHAFUNC D3DRS_ALPHAFUNC +#define D3DRENDERSTATE_DITHERENABLE D3DRS_DITHERENABLE +#define D3DRENDERSTATE_ALPHABLENDENABLE D3DRS_ALPHABLENDENABLE +#define D3DRENDERSTATE_FOGENABLE D3DRS_FOGENABLE +#define D3DRENDERSTATE_SPECULARENABLE D3DRS_SPECULARENABLE +#define D3DRENDERSTATE_ZVISIBLE D3DRS_ZVISIBLE +#define D3DRENDERSTATE_FOGCOLOR D3DRS_FOGCOLOR +#define D3DRENDERSTATE_FOGTABLEMODE D3DRS_FOGTABLEMODE +#define D3DRENDERSTATE_FOGSTART D3DRS_FOGSTART +#define D3DRENDERSTATE_FOGEND D3DRS_FOGEND +#define D3DRENDERSTATE_FOGDENSITY D3DRS_FOGDENSITY +#define D3DRENDERSTATE_EDGEANTIALIAS D3DRS_EDGEANTIALIAS +#define D3DRENDERSTATE_ZBIAS D3DRS_ZBIAS +#define D3DRENDERSTATE_RANGEFOGENABLE D3DRS_RANGEFOGENABLE +#define D3DRENDERSTATE_STENCILENABLE D3DRS_STENCILENABLE +#define D3DRENDERSTATE_STENCILFAIL D3DRS_STENCILFAIL +#define D3DRENDERSTATE_STENCILZFAIL D3DRS_STENCILZFAIL +#define D3DRENDERSTATE_STENCILPASS D3DRS_STENCILPASS +#define D3DRENDERSTATE_STENCILFUNC D3DRS_STENCILFUNC +#define D3DRENDERSTATE_STENCILREF D3DRS_STENCILREF +#define D3DRENDERSTATE_STENCILMASK D3DRS_STENCILMASK +#define D3DRENDERSTATE_STENCILWRITEMASK D3DRS_STENCILWRITEMASK +#define D3DRENDERSTATE_TEXTUREFACTOR D3DRS_TEXTUREFACTOR +#define D3DRENDERSTATE_WRAP0 D3DRS_WRAP0 +#define D3DRENDERSTATE_WRAP1 D3DRS_WRAP1 +#define D3DRENDERSTATE_WRAP2 D3DRS_WRAP2 +#define D3DRENDERSTATE_WRAP3 D3DRS_WRAP3 +#define D3DRENDERSTATE_WRAP4 D3DRS_WRAP4 +#define D3DRENDERSTATE_WRAP5 D3DRS_WRAP5 +#define D3DRENDERSTATE_WRAP6 D3DRS_WRAP6 +#define D3DRENDERSTATE_WRAP7 D3DRS_WRAP7 +#define D3DRENDERSTATE_CLIPPING D3DRS_CLIPPING +#define D3DRENDERSTATE_LIGHTING D3DRS_LIGHTING +#define D3DRENDERSTATE_EXTENTS D3DRS_EXTENTS +#define D3DRENDERSTATE_AMBIENT D3DRS_AMBIENT +#define D3DRENDERSTATE_FOGVERTEXMODE D3DRS_FOGVERTEXMODE +#define D3DRENDERSTATE_COLORVERTEX D3DRS_COLORVERTEX +#define D3DRENDERSTATE_LOCALVIEWER D3DRS_LOCALVIEWER +#define D3DRENDERSTATE_NORMALIZENORMALS D3DRS_NORMALIZENORMALS +#define D3DRENDERSTATE_DIFFUSEMATERIALSOURCE D3DRS_DIFFUSEMATERIALSOURCE +#define D3DRENDERSTATE_SPECULARMATERIALSOURCE D3DRS_SPECULARMATERIALSOURCE +#define D3DRENDERSTATE_AMBIENTMATERIALSOURCE D3DRS_AMBIENTMATERIALSOURCE +#define D3DRENDERSTATE_EMISSIVEMATERIALSOURCE D3DRS_EMISSIVEMATERIALSOURCE +#define D3DRENDERSTATE_VERTEXBLEND D3DRS_VERTEXBLEND +#define D3DRENDERSTATE_CLIPPLANEENABLE D3DRS_CLIPPLANEENABLE + +#define RGBA_MAKE D3DCOLOR_RGBA +#define RGB_MAKE D3DCOLOR_XRGB +#define D3DRGBA D3DCOLOR_COLORVALUE +#define D3DRGB(_r,_g,_b) D3DCOLOR_COLORVALUE(_r,_g,_b,1.f) + +#define _DX7TODX8_H_ +#endif //_DX7TODX8_H_ diff --git a/videoInputSrcAndDemos/libs/DShow/Include/dxerr8.h b/videoInputSrcAndDemos/libs/DShow/Include/dxerr8.h index aaafcdc..8b7813d 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/dxerr8.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/dxerr8.h @@ -1,100 +1,100 @@ -/*==========================================================================; - * - * - * File: dxerr8.h - * Content: DirectX Error Library Include File - * - ****************************************************************************/ - -#ifndef _DXERR8_H_ -#define _DXERR8_H_ - -#ifdef __cplusplus -extern "C" { -#endif //__cplusplus - -// -// DXGetErrorString8 -// -// Desc: Converts a DirectX HRESULT to a string -// -// Args: HRESULT hr Can be any error code from -// D3D8 D3DX8 DDRAW DPLAY8 DMUSIC DSOUND DINPUT DSHOW -// -// Return: Converted string -// -const char* WINAPI DXGetErrorString8A(HRESULT hr); -const WCHAR* WINAPI DXGetErrorString8W(HRESULT hr); - -#ifdef UNICODE -#define DXGetErrorString8 DXGetErrorString8W -#else -#define DXGetErrorString8 DXGetErrorString8A -#endif - - -// -// DXGetErrorDescription8 -// -// Desc: Returns a string description of a DirectX HRESULT -// -// Args: HRESULT hr Can be any error code from -// D3D8 D3DX8 DDRAW DPLAY8 DMUSIC DSOUND DINPUT DSHOW -// -// Return: String description -// -const char* WINAPI DXGetErrorDescription8A(HRESULT hr); -const WCHAR* WINAPI DXGetErrorDescription8W(HRESULT hr); - -#ifdef UNICODE - #define DXGetErrorDescription8 DXGetErrorDescription8W -#else - #define DXGetErrorDescription8 DXGetErrorDescription8A -#endif - - -// -// DXTrace -// -// Desc: Outputs a formatted error message to the debug stream -// -// Args: CHAR* strFile The current file, typically passed in using the -// __FILE__ macro. -// DWORD dwLine The current line number, typically passed in using the -// __LINE__ macro. -// HRESULT hr An HRESULT that will be traced to the debug stream. -// CHAR* strMsg A string that will be traced to the debug stream (may be NULL) -// BOOL bPopMsgBox If TRUE, then a message box will popup also containing the passed info. -// -// Return: The hr that was passed in. -// -HRESULT WINAPI DXTraceA( const char* strFile, DWORD dwLine, HRESULT hr, const char* strMsg, BOOL bPopMsgBox ); -HRESULT WINAPI DXTraceW( const char* strFile, DWORD dwLine, HRESULT hr, const WCHAR* strMsg, BOOL bPopMsgBox ); - -#ifdef UNICODE -#define DXTrace DXTraceW -#else -#define DXTrace DXTraceA -#endif - - -// -// Helper macros -// -#if defined(DEBUG) | defined(_DEBUG) -#define DXTRACE_MSG(str) DXTrace( __FILE__, (DWORD)__LINE__, 0, str, FALSE ) -#define DXTRACE_ERR(str,hr) DXTrace( __FILE__, (DWORD)__LINE__, hr, str, TRUE ) -#define DXTRACE_ERR_NOMSGBOX(str,hr) DXTrace( __FILE__, (DWORD)__LINE__, hr, str, FALSE ) -#else -#define DXTRACE_MSG(str) (0L) -#define DXTRACE_ERR(str,hr) (hr) -#define DXTRACE_ERR_NOMSGBOX(str,hr) (hr) -#endif - - -#ifdef __cplusplus -} -#endif //__cplusplus - -#endif // _DXERR8_H_ - +/*==========================================================================; + * + * + * File: dxerr8.h + * Content: DirectX Error Library Include File + * + ****************************************************************************/ + +#ifndef _DXERR8_H_ +#define _DXERR8_H_ + +#ifdef __cplusplus +extern "C" { +#endif //__cplusplus + +// +// DXGetErrorString8 +// +// Desc: Converts a DirectX HRESULT to a string +// +// Args: HRESULT hr Can be any error code from +// D3D8 D3DX8 DDRAW DPLAY8 DMUSIC DSOUND DINPUT DSHOW +// +// Return: Converted string +// +const char* WINAPI DXGetErrorString8A(HRESULT hr); +const WCHAR* WINAPI DXGetErrorString8W(HRESULT hr); + +#ifdef UNICODE +#define DXGetErrorString8 DXGetErrorString8W +#else +#define DXGetErrorString8 DXGetErrorString8A +#endif + + +// +// DXGetErrorDescription8 +// +// Desc: Returns a string description of a DirectX HRESULT +// +// Args: HRESULT hr Can be any error code from +// D3D8 D3DX8 DDRAW DPLAY8 DMUSIC DSOUND DINPUT DSHOW +// +// Return: String description +// +const char* WINAPI DXGetErrorDescription8A(HRESULT hr); +const WCHAR* WINAPI DXGetErrorDescription8W(HRESULT hr); + +#ifdef UNICODE + #define DXGetErrorDescription8 DXGetErrorDescription8W +#else + #define DXGetErrorDescription8 DXGetErrorDescription8A +#endif + + +// +// DXTrace +// +// Desc: Outputs a formatted error message to the debug stream +// +// Args: CHAR* strFile The current file, typically passed in using the +// __FILE__ macro. +// DWORD dwLine The current line number, typically passed in using the +// __LINE__ macro. +// HRESULT hr An HRESULT that will be traced to the debug stream. +// CHAR* strMsg A string that will be traced to the debug stream (may be NULL) +// BOOL bPopMsgBox If TRUE, then a message box will popup also containing the passed info. +// +// Return: The hr that was passed in. +// +HRESULT WINAPI DXTraceA( const char* strFile, DWORD dwLine, HRESULT hr, const char* strMsg, BOOL bPopMsgBox ); +HRESULT WINAPI DXTraceW( const char* strFile, DWORD dwLine, HRESULT hr, const WCHAR* strMsg, BOOL bPopMsgBox ); + +#ifdef UNICODE +#define DXTrace DXTraceW +#else +#define DXTrace DXTraceA +#endif + + +// +// Helper macros +// +#if defined(DEBUG) | defined(_DEBUG) +#define DXTRACE_MSG(str) DXTrace( __FILE__, (DWORD)__LINE__, 0, str, FALSE ) +#define DXTRACE_ERR(str,hr) DXTrace( __FILE__, (DWORD)__LINE__, hr, str, TRUE ) +#define DXTRACE_ERR_NOMSGBOX(str,hr) DXTrace( __FILE__, (DWORD)__LINE__, hr, str, FALSE ) +#else +#define DXTRACE_MSG(str) (0L) +#define DXTRACE_ERR(str,hr) (hr) +#define DXTRACE_ERR_NOMSGBOX(str,hr) (hr) +#endif + + +#ifdef __cplusplus +} +#endif //__cplusplus + +#endif // _DXERR8_H_ + diff --git a/videoInputSrcAndDemos/libs/DShow/Include/dxerr9.h b/videoInputSrcAndDemos/libs/DShow/Include/dxerr9.h index 9c2bde9..3fc6fba 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/dxerr9.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/dxerr9.h @@ -1,100 +1,100 @@ -/*==========================================================================; - * - * - * File: dxerr9.h - * Content: DirectX Error Library Include File - * - ****************************************************************************/ - -#ifndef _DXERR9_H_ -#define _DXERR9_H_ - -#ifdef __cplusplus -extern "C" { -#endif //__cplusplus - -// -// DXGetErrorString9 -// -// Desc: Converts a DirectX 9 or earlier HRESULT to a string -// -// Args: HRESULT hr Can be any error code from -// D3D9 D3DX9 D3D8 D3DX8 DDRAW DPLAY8 DMUSIC DSOUND DINPUT DSHOW -// -// Return: Converted string -// -const char* WINAPI DXGetErrorString9A(HRESULT hr); -const WCHAR* WINAPI DXGetErrorString9W(HRESULT hr); - -#ifdef UNICODE -#define DXGetErrorString9 DXGetErrorString9W -#else -#define DXGetErrorString9 DXGetErrorString9A -#endif - - -// -// DXGetErrorDescription9 -// -// Desc: Returns a string description of a DirectX 9 or earlier HRESULT -// -// Args: HRESULT hr Can be any error code from -// D3D9 D3DX9 D3D8 D3DX8 DDRAW DPLAY8 DMUSIC DSOUND DINPUT DSHOW -// -// Return: String description -// -const char* WINAPI DXGetErrorDescription9A(HRESULT hr); -const WCHAR* WINAPI DXGetErrorDescription9W(HRESULT hr); - -#ifdef UNICODE - #define DXGetErrorDescription9 DXGetErrorDescription9W -#else - #define DXGetErrorDescription9 DXGetErrorDescription9A -#endif - - -// -// DXTrace -// -// Desc: Outputs a formatted error message to the debug stream -// -// Args: CHAR* strFile The current file, typically passed in using the -// __FILE__ macro. -// DWORD dwLine The current line number, typically passed in using the -// __LINE__ macro. -// HRESULT hr An HRESULT that will be traced to the debug stream. -// CHAR* strMsg A string that will be traced to the debug stream (may be NULL) -// BOOL bPopMsgBox If TRUE, then a message box will popup also containing the passed info. -// -// Return: The hr that was passed in. -// -HRESULT WINAPI DXTraceA( const char* strFile, DWORD dwLine, HRESULT hr, const char* strMsg, BOOL bPopMsgBox ); -HRESULT WINAPI DXTraceW( const char* strFile, DWORD dwLine, HRESULT hr, const WCHAR* strMsg, BOOL bPopMsgBox ); - -#ifdef UNICODE -#define DXTrace DXTraceW -#else -#define DXTrace DXTraceA -#endif - - -// -// Helper macros -// -#if defined(DEBUG) | defined(_DEBUG) -#define DXTRACE_MSG(str) DXTrace( __FILE__, (DWORD)__LINE__, 0, str, FALSE ) -#define DXTRACE_ERR(str,hr) DXTrace( __FILE__, (DWORD)__LINE__, hr, str, FALSE ) -#define DXTRACE_ERR_MSGBOX(str,hr) DXTrace( __FILE__, (DWORD)__LINE__, hr, str, TRUE ) -#else -#define DXTRACE_MSG(str) (0L) -#define DXTRACE_ERR(str,hr) (hr) -#define DXTRACE_ERR_MSGBOX(str,hr) (hr) -#endif - - -#ifdef __cplusplus -} -#endif //__cplusplus - -#endif // _DXERR9_H_ - +/*==========================================================================; + * + * + * File: dxerr9.h + * Content: DirectX Error Library Include File + * + ****************************************************************************/ + +#ifndef _DXERR9_H_ +#define _DXERR9_H_ + +#ifdef __cplusplus +extern "C" { +#endif //__cplusplus + +// +// DXGetErrorString9 +// +// Desc: Converts a DirectX 9 or earlier HRESULT to a string +// +// Args: HRESULT hr Can be any error code from +// D3D9 D3DX9 D3D8 D3DX8 DDRAW DPLAY8 DMUSIC DSOUND DINPUT DSHOW +// +// Return: Converted string +// +const char* WINAPI DXGetErrorString9A(HRESULT hr); +const WCHAR* WINAPI DXGetErrorString9W(HRESULT hr); + +#ifdef UNICODE +#define DXGetErrorString9 DXGetErrorString9W +#else +#define DXGetErrorString9 DXGetErrorString9A +#endif + + +// +// DXGetErrorDescription9 +// +// Desc: Returns a string description of a DirectX 9 or earlier HRESULT +// +// Args: HRESULT hr Can be any error code from +// D3D9 D3DX9 D3D8 D3DX8 DDRAW DPLAY8 DMUSIC DSOUND DINPUT DSHOW +// +// Return: String description +// +const char* WINAPI DXGetErrorDescription9A(HRESULT hr); +const WCHAR* WINAPI DXGetErrorDescription9W(HRESULT hr); + +#ifdef UNICODE + #define DXGetErrorDescription9 DXGetErrorDescription9W +#else + #define DXGetErrorDescription9 DXGetErrorDescription9A +#endif + + +// +// DXTrace +// +// Desc: Outputs a formatted error message to the debug stream +// +// Args: CHAR* strFile The current file, typically passed in using the +// __FILE__ macro. +// DWORD dwLine The current line number, typically passed in using the +// __LINE__ macro. +// HRESULT hr An HRESULT that will be traced to the debug stream. +// CHAR* strMsg A string that will be traced to the debug stream (may be NULL) +// BOOL bPopMsgBox If TRUE, then a message box will popup also containing the passed info. +// +// Return: The hr that was passed in. +// +HRESULT WINAPI DXTraceA( const char* strFile, DWORD dwLine, HRESULT hr, const char* strMsg, BOOL bPopMsgBox ); +HRESULT WINAPI DXTraceW( const char* strFile, DWORD dwLine, HRESULT hr, const WCHAR* strMsg, BOOL bPopMsgBox ); + +#ifdef UNICODE +#define DXTrace DXTraceW +#else +#define DXTrace DXTraceA +#endif + + +// +// Helper macros +// +#if defined(DEBUG) | defined(_DEBUG) +#define DXTRACE_MSG(str) DXTrace( __FILE__, (DWORD)__LINE__, 0, str, FALSE ) +#define DXTRACE_ERR(str,hr) DXTrace( __FILE__, (DWORD)__LINE__, hr, str, FALSE ) +#define DXTRACE_ERR_MSGBOX(str,hr) DXTrace( __FILE__, (DWORD)__LINE__, hr, str, TRUE ) +#else +#define DXTRACE_MSG(str) (0L) +#define DXTRACE_ERR(str,hr) (hr) +#define DXTRACE_ERR_MSGBOX(str,hr) (hr) +#endif + + +#ifdef __cplusplus +} +#endif //__cplusplus + +#endif // _DXERR9_H_ + diff --git a/videoInputSrcAndDemos/libs/DShow/Include/dxfile.h b/videoInputSrcAndDemos/libs/DShow/Include/dxfile.h index 5a981ce..8b5995a 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/dxfile.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/dxfile.h @@ -1,240 +1,240 @@ -/*************************************************************************** - * - * Copyright (C) 1998-1999 Microsoft Corporation. All Rights Reserved. - * - * File: dxfile.h - * - * Content: DirectX File public header file - * - ***************************************************************************/ - -#ifndef __DXFILE_H__ -#define __DXFILE_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -typedef DWORD DXFILEFORMAT; - -#define DXFILEFORMAT_BINARY 0 -#define DXFILEFORMAT_TEXT 1 -#define DXFILEFORMAT_COMPRESSED 2 - -typedef DWORD DXFILELOADOPTIONS; - -#define DXFILELOAD_FROMFILE 0x00L -#define DXFILELOAD_FROMRESOURCE 0x01L -#define DXFILELOAD_FROMMEMORY 0x02L -#define DXFILELOAD_FROMSTREAM 0x04L -#define DXFILELOAD_FROMURL 0x08L - -typedef struct _DXFILELOADRESOURCE { - HMODULE hModule; - LPCTSTR lpName; - LPCTSTR lpType; -}DXFILELOADRESOURCE, *LPDXFILELOADRESOURCE; - -typedef struct _DXFILELOADMEMORY { - LPVOID lpMemory; - DWORD dSize; -}DXFILELOADMEMORY, *LPDXFILELOADMEMORY; - -/* - * DirectX File object types. - */ - -#ifndef WIN_TYPES -#define WIN_TYPES(itype, ptype) typedef interface itype *LP##ptype, **LPLP##ptype -#endif - -WIN_TYPES(IDirectXFile, DIRECTXFILE); -WIN_TYPES(IDirectXFileEnumObject, DIRECTXFILEENUMOBJECT); -WIN_TYPES(IDirectXFileSaveObject, DIRECTXFILESAVEOBJECT); -WIN_TYPES(IDirectXFileObject, DIRECTXFILEOBJECT); -WIN_TYPES(IDirectXFileData, DIRECTXFILEDATA); -WIN_TYPES(IDirectXFileDataReference, DIRECTXFILEDATAREFERENCE); -WIN_TYPES(IDirectXFileBinary, DIRECTXFILEBINARY); - -/* - * API for creating IDirectXFile interface. - */ - -STDAPI DirectXFileCreate(LPDIRECTXFILE *lplpDirectXFile); - -/* - * The methods for IUnknown - */ - -#define IUNKNOWN_METHODS(kind) \ - STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID *ppvObj) kind; \ - STDMETHOD_(ULONG, AddRef) (THIS) kind; \ - STDMETHOD_(ULONG, Release) (THIS) kind - -/* - * The methods for IDirectXFileObject - */ - -#define IDIRECTXFILEOBJECT_METHODS(kind) \ - STDMETHOD(GetName) (THIS_ LPSTR, LPDWORD) kind; \ - STDMETHOD(GetId) (THIS_ LPGUID) kind - -/* - * DirectX File interfaces. - */ - -#undef INTERFACE -#define INTERFACE IDirectXFile - -DECLARE_INTERFACE_(IDirectXFile, IUnknown) -{ - IUNKNOWN_METHODS(PURE); - STDMETHOD(CreateEnumObject) (THIS_ LPVOID, DXFILELOADOPTIONS, - LPDIRECTXFILEENUMOBJECT *) PURE; - STDMETHOD(CreateSaveObject) (THIS_ LPCSTR, DXFILEFORMAT, - LPDIRECTXFILESAVEOBJECT *) PURE; - STDMETHOD(RegisterTemplates) (THIS_ LPVOID, DWORD) PURE; -}; - -#undef INTERFACE -#define INTERFACE IDirectXFileEnumObject - -DECLARE_INTERFACE_(IDirectXFileEnumObject, IUnknown) -{ - IUNKNOWN_METHODS(PURE); - STDMETHOD(GetNextDataObject) (THIS_ LPDIRECTXFILEDATA *) PURE; - STDMETHOD(GetDataObjectById) (THIS_ REFGUID, LPDIRECTXFILEDATA *) PURE; - STDMETHOD(GetDataObjectByName) (THIS_ LPCSTR, LPDIRECTXFILEDATA *) PURE; -}; - -#undef INTERFACE -#define INTERFACE IDirectXFileSaveObject - -DECLARE_INTERFACE_(IDirectXFileSaveObject, IUnknown) -{ - IUNKNOWN_METHODS(PURE); - STDMETHOD(SaveTemplates) (THIS_ DWORD, const GUID **) PURE; - STDMETHOD(CreateDataObject) (THIS_ REFGUID, LPCSTR, const GUID *, - DWORD, LPVOID, LPDIRECTXFILEDATA *) PURE; - STDMETHOD(SaveData) (THIS_ LPDIRECTXFILEDATA) PURE; -}; - - -#undef INTERFACE -#define INTERFACE IDirectXFileObject - -DECLARE_INTERFACE_(IDirectXFileObject, IUnknown) -{ - IUNKNOWN_METHODS(PURE); - IDIRECTXFILEOBJECT_METHODS(PURE); -}; - -#undef INTERFACE -#define INTERFACE IDirectXFileData - -DECLARE_INTERFACE_(IDirectXFileData, IDirectXFileObject) -{ - IUNKNOWN_METHODS(PURE); - IDIRECTXFILEOBJECT_METHODS(PURE); - - STDMETHOD(GetData) (THIS_ LPCSTR, DWORD *, void **) PURE; - STDMETHOD(GetType) (THIS_ const GUID **) PURE; - STDMETHOD(GetNextObject) (THIS_ LPDIRECTXFILEOBJECT *) PURE; - STDMETHOD(AddDataObject) (THIS_ LPDIRECTXFILEDATA) PURE; - STDMETHOD(AddDataReference) (THIS_ LPCSTR, const GUID *) PURE; - STDMETHOD(AddBinaryObject) (THIS_ LPCSTR, const GUID *, LPCSTR, LPVOID, DWORD) PURE; -}; - -#undef INTERFACE -#define INTERFACE IDirectXFileDataReference - -DECLARE_INTERFACE_(IDirectXFileDataReference, IDirectXFileObject) -{ - IUNKNOWN_METHODS(PURE); - IDIRECTXFILEOBJECT_METHODS(PURE); - - STDMETHOD(Resolve) (THIS_ LPDIRECTXFILEDATA *) PURE; -}; - -#undef INTERFACE -#define INTERFACE IDirectXFileBinary - -DECLARE_INTERFACE_(IDirectXFileBinary, IDirectXFileObject) -{ - IUNKNOWN_METHODS(PURE); - IDIRECTXFILEOBJECT_METHODS(PURE); - - STDMETHOD(GetSize) (THIS_ DWORD *) PURE; - STDMETHOD(GetMimeType) (THIS_ LPCSTR *) PURE; - STDMETHOD(Read) (THIS_ LPVOID, DWORD, LPDWORD) PURE; -}; - -/* - * DirectXFile Object Class Id (for CoCreateInstance()) - */ - -DEFINE_GUID(CLSID_CDirectXFile, 0x4516ec43, 0x8f20, 0x11d0, 0x9b, 0x6d, 0x00, 0x00, 0xc0, 0x78, 0x1b, 0xc3); - -/* - * DirectX File Interface GUIDs. - */ - -DEFINE_GUID(IID_IDirectXFile, 0x3d82ab40, 0x62da, 0x11cf, 0xab, 0x39, 0x0, 0x20, 0xaf, 0x71, 0xe4, 0x33); -DEFINE_GUID(IID_IDirectXFileEnumObject, 0x3d82ab41, 0x62da, 0x11cf, 0xab, 0x39, 0x0, 0x20, 0xaf, 0x71, 0xe4, 0x33); -DEFINE_GUID(IID_IDirectXFileSaveObject, 0x3d82ab42, 0x62da, 0x11cf, 0xab, 0x39, 0x0, 0x20, 0xaf, 0x71, 0xe4, 0x33); -DEFINE_GUID(IID_IDirectXFileObject, 0x3d82ab43, 0x62da, 0x11cf, 0xab, 0x39, 0x0, 0x20, 0xaf, 0x71, 0xe4, 0x33); -DEFINE_GUID(IID_IDirectXFileData, 0x3d82ab44, 0x62da, 0x11cf, 0xab, 0x39, 0x0, 0x20, 0xaf, 0x71, 0xe4, 0x33); -DEFINE_GUID(IID_IDirectXFileDataReference, 0x3d82ab45, 0x62da, 0x11cf, 0xab, 0x39, 0x0, 0x20, 0xaf, 0x71, 0xe4, 0x33); -DEFINE_GUID(IID_IDirectXFileBinary, 0x3d82ab46, 0x62da, 0x11cf, 0xab, 0x39, 0x0, 0x20, 0xaf, 0x71, 0xe4, 0x33); - -/* - * DirectX File Header template's GUID. - */ - -DEFINE_GUID(TID_DXFILEHeader, 0x3d82ab43, 0x62da, 0x11cf, 0xab, 0x39, 0x0, 0x20, 0xaf, 0x71, 0xe4, 0x33); - - -/* - * DirectX File errors. - */ - -#define _FACDD 0x876 -#define MAKE_DDHRESULT( code ) MAKE_HRESULT( 1, _FACDD, code ) - -#define DXFILE_OK 0 - -#define DXFILEERR_BADOBJECT MAKE_DDHRESULT(850) -#define DXFILEERR_BADVALUE MAKE_DDHRESULT(851) -#define DXFILEERR_BADTYPE MAKE_DDHRESULT(852) -#define DXFILEERR_BADSTREAMHANDLE MAKE_DDHRESULT(853) -#define DXFILEERR_BADALLOC MAKE_DDHRESULT(854) -#define DXFILEERR_NOTFOUND MAKE_DDHRESULT(855) -#define DXFILEERR_NOTDONEYET MAKE_DDHRESULT(856) -#define DXFILEERR_FILENOTFOUND MAKE_DDHRESULT(857) -#define DXFILEERR_RESOURCENOTFOUND MAKE_DDHRESULT(858) -#define DXFILEERR_URLNOTFOUND MAKE_DDHRESULT(859) -#define DXFILEERR_BADRESOURCE MAKE_DDHRESULT(860) -#define DXFILEERR_BADFILETYPE MAKE_DDHRESULT(861) -#define DXFILEERR_BADFILEVERSION MAKE_DDHRESULT(862) -#define DXFILEERR_BADFILEFLOATSIZE MAKE_DDHRESULT(863) -#define DXFILEERR_BADFILECOMPRESSIONTYPE MAKE_DDHRESULT(864) -#define DXFILEERR_BADFILE MAKE_DDHRESULT(865) -#define DXFILEERR_PARSEERROR MAKE_DDHRESULT(866) -#define DXFILEERR_NOTEMPLATE MAKE_DDHRESULT(867) -#define DXFILEERR_BADARRAYSIZE MAKE_DDHRESULT(868) -#define DXFILEERR_BADDATAREFERENCE MAKE_DDHRESULT(869) -#define DXFILEERR_INTERNALERROR MAKE_DDHRESULT(870) -#define DXFILEERR_NOMOREOBJECTS MAKE_DDHRESULT(871) -#define DXFILEERR_BADINTRINSICS MAKE_DDHRESULT(872) -#define DXFILEERR_NOMORESTREAMHANDLES MAKE_DDHRESULT(873) -#define DXFILEERR_NOMOREDATA MAKE_DDHRESULT(874) -#define DXFILEERR_BADCACHEFILE MAKE_DDHRESULT(875) -#define DXFILEERR_NOINTERNET MAKE_DDHRESULT(876) - - -#ifdef __cplusplus -}; -#endif - -#endif /* _DXFILE_H_ */ +/*************************************************************************** + * + * Copyright (C) 1998-1999 Microsoft Corporation. All Rights Reserved. + * + * File: dxfile.h + * + * Content: DirectX File public header file + * + ***************************************************************************/ + +#ifndef __DXFILE_H__ +#define __DXFILE_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +typedef DWORD DXFILEFORMAT; + +#define DXFILEFORMAT_BINARY 0 +#define DXFILEFORMAT_TEXT 1 +#define DXFILEFORMAT_COMPRESSED 2 + +typedef DWORD DXFILELOADOPTIONS; + +#define DXFILELOAD_FROMFILE 0x00L +#define DXFILELOAD_FROMRESOURCE 0x01L +#define DXFILELOAD_FROMMEMORY 0x02L +#define DXFILELOAD_FROMSTREAM 0x04L +#define DXFILELOAD_FROMURL 0x08L + +typedef struct _DXFILELOADRESOURCE { + HMODULE hModule; + LPCTSTR lpName; + LPCTSTR lpType; +}DXFILELOADRESOURCE, *LPDXFILELOADRESOURCE; + +typedef struct _DXFILELOADMEMORY { + LPVOID lpMemory; + DWORD dSize; +}DXFILELOADMEMORY, *LPDXFILELOADMEMORY; + +/* + * DirectX File object types. + */ + +#ifndef WIN_TYPES +#define WIN_TYPES(itype, ptype) typedef interface itype *LP##ptype, **LPLP##ptype +#endif + +WIN_TYPES(IDirectXFile, DIRECTXFILE); +WIN_TYPES(IDirectXFileEnumObject, DIRECTXFILEENUMOBJECT); +WIN_TYPES(IDirectXFileSaveObject, DIRECTXFILESAVEOBJECT); +WIN_TYPES(IDirectXFileObject, DIRECTXFILEOBJECT); +WIN_TYPES(IDirectXFileData, DIRECTXFILEDATA); +WIN_TYPES(IDirectXFileDataReference, DIRECTXFILEDATAREFERENCE); +WIN_TYPES(IDirectXFileBinary, DIRECTXFILEBINARY); + +/* + * API for creating IDirectXFile interface. + */ + +STDAPI DirectXFileCreate(LPDIRECTXFILE *lplpDirectXFile); + +/* + * The methods for IUnknown + */ + +#define IUNKNOWN_METHODS(kind) \ + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID *ppvObj) kind; \ + STDMETHOD_(ULONG, AddRef) (THIS) kind; \ + STDMETHOD_(ULONG, Release) (THIS) kind + +/* + * The methods for IDirectXFileObject + */ + +#define IDIRECTXFILEOBJECT_METHODS(kind) \ + STDMETHOD(GetName) (THIS_ LPSTR, LPDWORD) kind; \ + STDMETHOD(GetId) (THIS_ LPGUID) kind + +/* + * DirectX File interfaces. + */ + +#undef INTERFACE +#define INTERFACE IDirectXFile + +DECLARE_INTERFACE_(IDirectXFile, IUnknown) +{ + IUNKNOWN_METHODS(PURE); + STDMETHOD(CreateEnumObject) (THIS_ LPVOID, DXFILELOADOPTIONS, + LPDIRECTXFILEENUMOBJECT *) PURE; + STDMETHOD(CreateSaveObject) (THIS_ LPCSTR, DXFILEFORMAT, + LPDIRECTXFILESAVEOBJECT *) PURE; + STDMETHOD(RegisterTemplates) (THIS_ LPVOID, DWORD) PURE; +}; + +#undef INTERFACE +#define INTERFACE IDirectXFileEnumObject + +DECLARE_INTERFACE_(IDirectXFileEnumObject, IUnknown) +{ + IUNKNOWN_METHODS(PURE); + STDMETHOD(GetNextDataObject) (THIS_ LPDIRECTXFILEDATA *) PURE; + STDMETHOD(GetDataObjectById) (THIS_ REFGUID, LPDIRECTXFILEDATA *) PURE; + STDMETHOD(GetDataObjectByName) (THIS_ LPCSTR, LPDIRECTXFILEDATA *) PURE; +}; + +#undef INTERFACE +#define INTERFACE IDirectXFileSaveObject + +DECLARE_INTERFACE_(IDirectXFileSaveObject, IUnknown) +{ + IUNKNOWN_METHODS(PURE); + STDMETHOD(SaveTemplates) (THIS_ DWORD, const GUID **) PURE; + STDMETHOD(CreateDataObject) (THIS_ REFGUID, LPCSTR, const GUID *, + DWORD, LPVOID, LPDIRECTXFILEDATA *) PURE; + STDMETHOD(SaveData) (THIS_ LPDIRECTXFILEDATA) PURE; +}; + + +#undef INTERFACE +#define INTERFACE IDirectXFileObject + +DECLARE_INTERFACE_(IDirectXFileObject, IUnknown) +{ + IUNKNOWN_METHODS(PURE); + IDIRECTXFILEOBJECT_METHODS(PURE); +}; + +#undef INTERFACE +#define INTERFACE IDirectXFileData + +DECLARE_INTERFACE_(IDirectXFileData, IDirectXFileObject) +{ + IUNKNOWN_METHODS(PURE); + IDIRECTXFILEOBJECT_METHODS(PURE); + + STDMETHOD(GetData) (THIS_ LPCSTR, DWORD *, void **) PURE; + STDMETHOD(GetType) (THIS_ const GUID **) PURE; + STDMETHOD(GetNextObject) (THIS_ LPDIRECTXFILEOBJECT *) PURE; + STDMETHOD(AddDataObject) (THIS_ LPDIRECTXFILEDATA) PURE; + STDMETHOD(AddDataReference) (THIS_ LPCSTR, const GUID *) PURE; + STDMETHOD(AddBinaryObject) (THIS_ LPCSTR, const GUID *, LPCSTR, LPVOID, DWORD) PURE; +}; + +#undef INTERFACE +#define INTERFACE IDirectXFileDataReference + +DECLARE_INTERFACE_(IDirectXFileDataReference, IDirectXFileObject) +{ + IUNKNOWN_METHODS(PURE); + IDIRECTXFILEOBJECT_METHODS(PURE); + + STDMETHOD(Resolve) (THIS_ LPDIRECTXFILEDATA *) PURE; +}; + +#undef INTERFACE +#define INTERFACE IDirectXFileBinary + +DECLARE_INTERFACE_(IDirectXFileBinary, IDirectXFileObject) +{ + IUNKNOWN_METHODS(PURE); + IDIRECTXFILEOBJECT_METHODS(PURE); + + STDMETHOD(GetSize) (THIS_ DWORD *) PURE; + STDMETHOD(GetMimeType) (THIS_ LPCSTR *) PURE; + STDMETHOD(Read) (THIS_ LPVOID, DWORD, LPDWORD) PURE; +}; + +/* + * DirectXFile Object Class Id (for CoCreateInstance()) + */ + +DEFINE_GUID(CLSID_CDirectXFile, 0x4516ec43, 0x8f20, 0x11d0, 0x9b, 0x6d, 0x00, 0x00, 0xc0, 0x78, 0x1b, 0xc3); + +/* + * DirectX File Interface GUIDs. + */ + +DEFINE_GUID(IID_IDirectXFile, 0x3d82ab40, 0x62da, 0x11cf, 0xab, 0x39, 0x0, 0x20, 0xaf, 0x71, 0xe4, 0x33); +DEFINE_GUID(IID_IDirectXFileEnumObject, 0x3d82ab41, 0x62da, 0x11cf, 0xab, 0x39, 0x0, 0x20, 0xaf, 0x71, 0xe4, 0x33); +DEFINE_GUID(IID_IDirectXFileSaveObject, 0x3d82ab42, 0x62da, 0x11cf, 0xab, 0x39, 0x0, 0x20, 0xaf, 0x71, 0xe4, 0x33); +DEFINE_GUID(IID_IDirectXFileObject, 0x3d82ab43, 0x62da, 0x11cf, 0xab, 0x39, 0x0, 0x20, 0xaf, 0x71, 0xe4, 0x33); +DEFINE_GUID(IID_IDirectXFileData, 0x3d82ab44, 0x62da, 0x11cf, 0xab, 0x39, 0x0, 0x20, 0xaf, 0x71, 0xe4, 0x33); +DEFINE_GUID(IID_IDirectXFileDataReference, 0x3d82ab45, 0x62da, 0x11cf, 0xab, 0x39, 0x0, 0x20, 0xaf, 0x71, 0xe4, 0x33); +DEFINE_GUID(IID_IDirectXFileBinary, 0x3d82ab46, 0x62da, 0x11cf, 0xab, 0x39, 0x0, 0x20, 0xaf, 0x71, 0xe4, 0x33); + +/* + * DirectX File Header template's GUID. + */ + +DEFINE_GUID(TID_DXFILEHeader, 0x3d82ab43, 0x62da, 0x11cf, 0xab, 0x39, 0x0, 0x20, 0xaf, 0x71, 0xe4, 0x33); + + +/* + * DirectX File errors. + */ + +#define _FACDD 0x876 +#define MAKE_DDHRESULT( code ) MAKE_HRESULT( 1, _FACDD, code ) + +#define DXFILE_OK 0 + +#define DXFILEERR_BADOBJECT MAKE_DDHRESULT(850) +#define DXFILEERR_BADVALUE MAKE_DDHRESULT(851) +#define DXFILEERR_BADTYPE MAKE_DDHRESULT(852) +#define DXFILEERR_BADSTREAMHANDLE MAKE_DDHRESULT(853) +#define DXFILEERR_BADALLOC MAKE_DDHRESULT(854) +#define DXFILEERR_NOTFOUND MAKE_DDHRESULT(855) +#define DXFILEERR_NOTDONEYET MAKE_DDHRESULT(856) +#define DXFILEERR_FILENOTFOUND MAKE_DDHRESULT(857) +#define DXFILEERR_RESOURCENOTFOUND MAKE_DDHRESULT(858) +#define DXFILEERR_URLNOTFOUND MAKE_DDHRESULT(859) +#define DXFILEERR_BADRESOURCE MAKE_DDHRESULT(860) +#define DXFILEERR_BADFILETYPE MAKE_DDHRESULT(861) +#define DXFILEERR_BADFILEVERSION MAKE_DDHRESULT(862) +#define DXFILEERR_BADFILEFLOATSIZE MAKE_DDHRESULT(863) +#define DXFILEERR_BADFILECOMPRESSIONTYPE MAKE_DDHRESULT(864) +#define DXFILEERR_BADFILE MAKE_DDHRESULT(865) +#define DXFILEERR_PARSEERROR MAKE_DDHRESULT(866) +#define DXFILEERR_NOTEMPLATE MAKE_DDHRESULT(867) +#define DXFILEERR_BADARRAYSIZE MAKE_DDHRESULT(868) +#define DXFILEERR_BADDATAREFERENCE MAKE_DDHRESULT(869) +#define DXFILEERR_INTERNALERROR MAKE_DDHRESULT(870) +#define DXFILEERR_NOMOREOBJECTS MAKE_DDHRESULT(871) +#define DXFILEERR_BADINTRINSICS MAKE_DDHRESULT(872) +#define DXFILEERR_NOMORESTREAMHANDLES MAKE_DDHRESULT(873) +#define DXFILEERR_NOMOREDATA MAKE_DDHRESULT(874) +#define DXFILEERR_BADCACHEFILE MAKE_DDHRESULT(875) +#define DXFILEERR_NOINTERNET MAKE_DDHRESULT(876) + + +#ifdef __cplusplus +}; +#endif + +#endif /* _DXFILE_H_ */  \ No newline at end of file diff --git a/videoInputSrcAndDemos/libs/DShow/Include/dxtrans.h b/videoInputSrcAndDemos/libs/DShow/Include/dxtrans.h index 504877a..352c4c9 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/dxtrans.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/dxtrans.h @@ -1,5362 +1,5364 @@ - -#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 dxtrans.idl: - Oicf, W1, Zp8, env=Win32 (32b run) - protocol : dce , ms_ext, c_ext - 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 version is high enough to compile this file*/ -#ifndef __REQUIRED_RPCNDR_H_VERSION__ -#define __REQUIRED_RPCNDR_H_VERSION__ 440 -#endif - -#include "rpc.h" -#include "rpcndr.h" - -#ifndef __RPCNDR_H_VERSION__ -#error this stub requires an updated version of -#endif // __RPCNDR_H_VERSION__ - -#ifndef COM_NO_WINDOWS_H -#include "windows.h" -#include "ole2.h" -#endif /*COM_NO_WINDOWS_H*/ - -#ifndef __dxtrans_h__ -#define __dxtrans_h__ - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -#pragma once -#endif - -/* Forward Declarations */ - -#ifndef __IDXBaseObject_FWD_DEFINED__ -#define __IDXBaseObject_FWD_DEFINED__ -typedef interface IDXBaseObject IDXBaseObject; -#endif /* __IDXBaseObject_FWD_DEFINED__ */ - - -#ifndef __IDXTransformFactory_FWD_DEFINED__ -#define __IDXTransformFactory_FWD_DEFINED__ -typedef interface IDXTransformFactory IDXTransformFactory; -#endif /* __IDXTransformFactory_FWD_DEFINED__ */ - - -#ifndef __IDXTransform_FWD_DEFINED__ -#define __IDXTransform_FWD_DEFINED__ -typedef interface IDXTransform IDXTransform; -#endif /* __IDXTransform_FWD_DEFINED__ */ - - -#ifndef __IDXSurfacePick_FWD_DEFINED__ -#define __IDXSurfacePick_FWD_DEFINED__ -typedef interface IDXSurfacePick IDXSurfacePick; -#endif /* __IDXSurfacePick_FWD_DEFINED__ */ - - -#ifndef __IDXTBindHost_FWD_DEFINED__ -#define __IDXTBindHost_FWD_DEFINED__ -typedef interface IDXTBindHost IDXTBindHost; -#endif /* __IDXTBindHost_FWD_DEFINED__ */ - - -#ifndef __IDXTaskManager_FWD_DEFINED__ -#define __IDXTaskManager_FWD_DEFINED__ -typedef interface IDXTaskManager IDXTaskManager; -#endif /* __IDXTaskManager_FWD_DEFINED__ */ - - -#ifndef __IDXSurfaceFactory_FWD_DEFINED__ -#define __IDXSurfaceFactory_FWD_DEFINED__ -typedef interface IDXSurfaceFactory IDXSurfaceFactory; -#endif /* __IDXSurfaceFactory_FWD_DEFINED__ */ - - -#ifndef __IDXSurfaceModifier_FWD_DEFINED__ -#define __IDXSurfaceModifier_FWD_DEFINED__ -typedef interface IDXSurfaceModifier IDXSurfaceModifier; -#endif /* __IDXSurfaceModifier_FWD_DEFINED__ */ - - -#ifndef __IDXSurface_FWD_DEFINED__ -#define __IDXSurface_FWD_DEFINED__ -typedef interface IDXSurface IDXSurface; -#endif /* __IDXSurface_FWD_DEFINED__ */ - - -#ifndef __IDXSurfaceInit_FWD_DEFINED__ -#define __IDXSurfaceInit_FWD_DEFINED__ -typedef interface IDXSurfaceInit IDXSurfaceInit; -#endif /* __IDXSurfaceInit_FWD_DEFINED__ */ - - -#ifndef __IDXARGBSurfaceInit_FWD_DEFINED__ -#define __IDXARGBSurfaceInit_FWD_DEFINED__ -typedef interface IDXARGBSurfaceInit IDXARGBSurfaceInit; -#endif /* __IDXARGBSurfaceInit_FWD_DEFINED__ */ - - -#ifndef __IDXARGBReadPtr_FWD_DEFINED__ -#define __IDXARGBReadPtr_FWD_DEFINED__ -typedef interface IDXARGBReadPtr IDXARGBReadPtr; -#endif /* __IDXARGBReadPtr_FWD_DEFINED__ */ - - -#ifndef __IDXARGBReadWritePtr_FWD_DEFINED__ -#define __IDXARGBReadWritePtr_FWD_DEFINED__ -typedef interface IDXARGBReadWritePtr IDXARGBReadWritePtr; -#endif /* __IDXARGBReadWritePtr_FWD_DEFINED__ */ - - -#ifndef __IDXDCLock_FWD_DEFINED__ -#define __IDXDCLock_FWD_DEFINED__ -typedef interface IDXDCLock IDXDCLock; -#endif /* __IDXDCLock_FWD_DEFINED__ */ - - -#ifndef __IDXTScaleOutput_FWD_DEFINED__ -#define __IDXTScaleOutput_FWD_DEFINED__ -typedef interface IDXTScaleOutput IDXTScaleOutput; -#endif /* __IDXTScaleOutput_FWD_DEFINED__ */ - - -#ifndef __IDXGradient_FWD_DEFINED__ -#define __IDXGradient_FWD_DEFINED__ -typedef interface IDXGradient IDXGradient; -#endif /* __IDXGradient_FWD_DEFINED__ */ - - -#ifndef __IDXTScale_FWD_DEFINED__ -#define __IDXTScale_FWD_DEFINED__ -typedef interface IDXTScale IDXTScale; -#endif /* __IDXTScale_FWD_DEFINED__ */ - - -#ifndef __IDXEffect_FWD_DEFINED__ -#define __IDXEffect_FWD_DEFINED__ -typedef interface IDXEffect IDXEffect; -#endif /* __IDXEffect_FWD_DEFINED__ */ - - -#ifndef __IDXLookupTable_FWD_DEFINED__ -#define __IDXLookupTable_FWD_DEFINED__ -typedef interface IDXLookupTable IDXLookupTable; -#endif /* __IDXLookupTable_FWD_DEFINED__ */ - - -#ifndef __IDXRawSurface_FWD_DEFINED__ -#define __IDXRawSurface_FWD_DEFINED__ -typedef interface IDXRawSurface IDXRawSurface; -#endif /* __IDXRawSurface_FWD_DEFINED__ */ - - -#ifndef __IHTMLDXTransform_FWD_DEFINED__ -#define __IHTMLDXTransform_FWD_DEFINED__ -typedef interface IHTMLDXTransform IHTMLDXTransform; -#endif /* __IHTMLDXTransform_FWD_DEFINED__ */ - - -#ifndef __ICSSFilterDispatch_FWD_DEFINED__ -#define __ICSSFilterDispatch_FWD_DEFINED__ -typedef interface ICSSFilterDispatch ICSSFilterDispatch; -#endif /* __ICSSFilterDispatch_FWD_DEFINED__ */ - - -#ifndef __DXTransformFactory_FWD_DEFINED__ -#define __DXTransformFactory_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class DXTransformFactory DXTransformFactory; -#else -typedef struct DXTransformFactory DXTransformFactory; -#endif /* __cplusplus */ - -#endif /* __DXTransformFactory_FWD_DEFINED__ */ - - -#ifndef __DXTaskManager_FWD_DEFINED__ -#define __DXTaskManager_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class DXTaskManager DXTaskManager; -#else -typedef struct DXTaskManager DXTaskManager; -#endif /* __cplusplus */ - -#endif /* __DXTaskManager_FWD_DEFINED__ */ - - -#ifndef __DXTScale_FWD_DEFINED__ -#define __DXTScale_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class DXTScale DXTScale; -#else -typedef struct DXTScale DXTScale; -#endif /* __cplusplus */ - -#endif /* __DXTScale_FWD_DEFINED__ */ - - -#ifndef __DXSurface_FWD_DEFINED__ -#define __DXSurface_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class DXSurface DXSurface; -#else -typedef struct DXSurface DXSurface; -#endif /* __cplusplus */ - -#endif /* __DXSurface_FWD_DEFINED__ */ - - -#ifndef __DXSurfaceModifier_FWD_DEFINED__ -#define __DXSurfaceModifier_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class DXSurfaceModifier DXSurfaceModifier; -#else -typedef struct DXSurfaceModifier DXSurfaceModifier; -#endif /* __cplusplus */ - -#endif /* __DXSurfaceModifier_FWD_DEFINED__ */ - - -#ifndef __DXGradient_FWD_DEFINED__ -#define __DXGradient_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class DXGradient DXGradient; -#else -typedef struct DXGradient DXGradient; -#endif /* __cplusplus */ - -#endif /* __DXGradient_FWD_DEFINED__ */ - - -#ifndef __DXTFilter_FWD_DEFINED__ -#define __DXTFilter_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class DXTFilter DXTFilter; -#else -typedef struct DXTFilter DXTFilter; -#endif /* __cplusplus */ - -#endif /* __DXTFilter_FWD_DEFINED__ */ - - -/* header files for imported files */ -#include "oaidl.h" -#include "ocidl.h" -#include "comcat.h" - -#ifdef __cplusplus -extern "C"{ -#endif - -void * __RPC_USER MIDL_user_allocate(size_t); -void __RPC_USER MIDL_user_free( void * ); - -/* interface __MIDL_itf_dxtrans_0000 */ -/* [local] */ - -#include -#include -#include -#include -#include -#if 0 -// Bogus definition used to make MIDL compiler happy -typedef void DDSURFACEDESC; - -typedef void D3DRMBOX; - -typedef void D3DVECTOR; - -typedef void D3DRMMATRIX4D; - -typedef void *LPSECURITY_ATTRIBUTES; - -#endif -#ifdef _DXTRANSIMPL - #define _DXTRANS_IMPL_EXT _declspec(dllexport) -#else - #define _DXTRANS_IMPL_EXT _declspec(dllimport) -#endif - - - - - - - - - - - - - - - - -// -// All GUIDs for DXTransform are declared in DXTGUID.C in the SDK include directory -// -EXTERN_C const GUID DDPF_RGB1; -EXTERN_C const GUID DDPF_RGB2; -EXTERN_C const GUID DDPF_RGB4; -EXTERN_C const GUID DDPF_RGB8; -EXTERN_C const GUID DDPF_RGB332; -EXTERN_C const GUID DDPF_ARGB4444; -EXTERN_C const GUID DDPF_RGB565; -EXTERN_C const GUID DDPF_BGR565; -EXTERN_C const GUID DDPF_RGB555; -EXTERN_C const GUID DDPF_ARGB1555; -EXTERN_C const GUID DDPF_RGB24; -EXTERN_C const GUID DDPF_BGR24; -EXTERN_C const GUID DDPF_RGB32; -EXTERN_C const GUID DDPF_BGR32; -EXTERN_C const GUID DDPF_ABGR32; -EXTERN_C const GUID DDPF_ARGB32; -EXTERN_C const GUID DDPF_PMARGB32; -EXTERN_C const GUID DDPF_A1; -EXTERN_C const GUID DDPF_A2; -EXTERN_C const GUID DDPF_A4; -EXTERN_C const GUID DDPF_A8; -EXTERN_C const GUID DDPF_Z8; -EXTERN_C const GUID DDPF_Z16; -EXTERN_C const GUID DDPF_Z24; -EXTERN_C const GUID DDPF_Z32; -// -// Component categories -// -EXTERN_C const GUID CATID_DXImageTransform; -EXTERN_C const GUID CATID_DX3DTransform; -EXTERN_C const GUID CATID_DXAuthoringTransform; -EXTERN_C const GUID CATID_DXSurface; -// -// Service IDs -// -EXTERN_C const GUID SID_SDirectDraw; -EXTERN_C const GUID SID_SDirect3DRM; -#define SID_SDXTaskManager CLSID_DXTaskManager -#define SID_SDXSurfaceFactory IID_IDXSurfaceFactory -#define SID_SDXTransformFactory IID_IDXTransformFactory -// -// DXTransforms Core Type Library Version Info -// -#define DXTRANS_TLB_MAJOR_VER 1 -#define DXTRANS_TLB_MINOR_VER 1 - - -extern RPC_IF_HANDLE __MIDL_itf_dxtrans_0000_v0_0_c_ifspec; -extern RPC_IF_HANDLE __MIDL_itf_dxtrans_0000_v0_0_s_ifspec; - -#ifndef __IDXBaseObject_INTERFACE_DEFINED__ -#define __IDXBaseObject_INTERFACE_DEFINED__ - -/* interface IDXBaseObject */ -/* [local][unique][helpstring][uuid][object] */ - - -EXTERN_C const IID IID_IDXBaseObject; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("17B59B2B-9CC8-11d1-9053-00C04FD9189D") - IDXBaseObject : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE GetGenerationId( - /* [out] */ ULONG *pID) = 0; - - virtual HRESULT STDMETHODCALLTYPE IncrementGenerationId( - /* [in] */ BOOL bRefresh) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetObjectSize( - /* [out] */ ULONG *pcbSize) = 0; - - }; - -#else /* C style interface */ - - typedef struct IDXBaseObjectVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IDXBaseObject * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IDXBaseObject * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IDXBaseObject * This); - - HRESULT ( STDMETHODCALLTYPE *GetGenerationId )( - IDXBaseObject * This, - /* [out] */ ULONG *pID); - - HRESULT ( STDMETHODCALLTYPE *IncrementGenerationId )( - IDXBaseObject * This, - /* [in] */ BOOL bRefresh); - - HRESULT ( STDMETHODCALLTYPE *GetObjectSize )( - IDXBaseObject * This, - /* [out] */ ULONG *pcbSize); - - END_INTERFACE - } IDXBaseObjectVtbl; - - interface IDXBaseObject - { - CONST_VTBL struct IDXBaseObjectVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IDXBaseObject_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IDXBaseObject_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IDXBaseObject_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IDXBaseObject_GetGenerationId(This,pID) \ - (This)->lpVtbl -> GetGenerationId(This,pID) - -#define IDXBaseObject_IncrementGenerationId(This,bRefresh) \ - (This)->lpVtbl -> IncrementGenerationId(This,bRefresh) - -#define IDXBaseObject_GetObjectSize(This,pcbSize) \ - (This)->lpVtbl -> GetObjectSize(This,pcbSize) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IDXBaseObject_GetGenerationId_Proxy( - IDXBaseObject * This, - /* [out] */ ULONG *pID); - - -void __RPC_STUB IDXBaseObject_GetGenerationId_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IDXBaseObject_IncrementGenerationId_Proxy( - IDXBaseObject * This, - /* [in] */ BOOL bRefresh); - - -void __RPC_STUB IDXBaseObject_IncrementGenerationId_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IDXBaseObject_GetObjectSize_Proxy( - IDXBaseObject * This, - /* [out] */ ULONG *pcbSize); - - -void __RPC_STUB IDXBaseObject_GetObjectSize_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IDXBaseObject_INTERFACE_DEFINED__ */ - - -/* interface __MIDL_itf_dxtrans_0260 */ -/* [local] */ - -typedef -enum DXBNDID - { DXB_X = 0, - DXB_Y = 1, - DXB_Z = 2, - DXB_T = 3 - } DXBNDID; - -typedef -enum DXBNDTYPE - { DXBT_DISCRETE = 0, - DXBT_DISCRETE64 = DXBT_DISCRETE + 1, - DXBT_CONTINUOUS = DXBT_DISCRETE64 + 1, - DXBT_CONTINUOUS64 = DXBT_CONTINUOUS + 1 - } DXBNDTYPE; - -typedef struct DXDBND - { - long Min; - long Max; - } DXDBND; - -typedef DXDBND DXDBNDS[ 4 ]; - -typedef struct DXDBND64 - { - LONGLONG Min; - LONGLONG Max; - } DXDBND64; - -typedef DXDBND64 DXDBNDS64[ 4 ]; - -typedef struct DXCBND - { - float Min; - float Max; - } DXCBND; - -typedef DXCBND DXCBNDS[ 4 ]; - -typedef struct DXCBND64 - { - double Min; - double Max; - } DXCBND64; - -typedef DXCBND64 DXCBNDS64[ 4 ]; - -typedef struct DXBNDS - { - DXBNDTYPE eType; - /* [switch_is] */ /* [switch_type] */ union __MIDL___MIDL_itf_dxtrans_0260_0001 - { - /* [case()] */ DXDBND D[ 4 ]; - /* [case()] */ DXDBND64 LD[ 4 ]; - /* [case()] */ DXCBND C[ 4 ]; - /* [case()] */ DXCBND64 LC[ 4 ]; - } u; - } DXBNDS; - -typedef long DXDVEC[ 4 ]; - -typedef LONGLONG DXDVEC64[ 4 ]; - -typedef float DXCVEC[ 4 ]; - -typedef double DXCVEC64[ 4 ]; - -typedef struct DXVEC - { - DXBNDTYPE eType; - /* [switch_is] */ /* [switch_type] */ union __MIDL___MIDL_itf_dxtrans_0260_0002 - { - /* [case()] */ long D[ 4 ]; - /* [case()] */ LONGLONG LD[ 4 ]; - /* [case()] */ float C[ 4 ]; - /* [case()] */ double LC[ 4 ]; - } u; - } DXVEC; - - - -extern RPC_IF_HANDLE __MIDL_itf_dxtrans_0260_v0_0_c_ifspec; -extern RPC_IF_HANDLE __MIDL_itf_dxtrans_0260_v0_0_s_ifspec; - -#ifndef __IDXTransformFactory_INTERFACE_DEFINED__ -#define __IDXTransformFactory_INTERFACE_DEFINED__ - -/* interface IDXTransformFactory */ -/* [local][unique][helpstring][uuid][object] */ - - -EXTERN_C const IID IID_IDXTransformFactory; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("6A950B2B-A971-11d1-81C8-0000F87557DB") - IDXTransformFactory : public IServiceProvider - { - public: - virtual HRESULT STDMETHODCALLTYPE SetService( - /* [in] */ REFGUID guidService, - /* [in] */ IUnknown *pUnkService, - /* [in] */ BOOL bWeakReference) = 0; - - virtual HRESULT STDMETHODCALLTYPE CreateTransform( - /* [size_is][in] */ IUnknown **punkInputs, - /* [in] */ ULONG ulNumInputs, - /* [size_is][in] */ IUnknown **punkOutputs, - /* [in] */ ULONG ulNumOutputs, - /* [in] */ IPropertyBag *pInitProps, - /* [in] */ IErrorLog *pErrLog, - /* [in] */ REFCLSID TransCLSID, - /* [in] */ REFIID TransIID, - /* [iid_is][out] */ void **ppTransform) = 0; - - virtual HRESULT STDMETHODCALLTYPE InitializeTransform( - /* [in] */ IDXTransform *pTransform, - /* [size_is][in] */ IUnknown **punkInputs, - /* [in] */ ULONG ulNumInputs, - /* [size_is][in] */ IUnknown **punkOutputs, - /* [in] */ ULONG ulNumOutputs, - /* [in] */ IPropertyBag *pInitProps, - /* [in] */ IErrorLog *pErrLog) = 0; - - }; - -#else /* C style interface */ - - typedef struct IDXTransformFactoryVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IDXTransformFactory * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IDXTransformFactory * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IDXTransformFactory * This); - - /* [local] */ HRESULT ( STDMETHODCALLTYPE *QueryService )( - IDXTransformFactory * This, - /* [in] */ REFGUID guidService, - /* [in] */ REFIID riid, - /* [out] */ void **ppvObject); - - HRESULT ( STDMETHODCALLTYPE *SetService )( - IDXTransformFactory * This, - /* [in] */ REFGUID guidService, - /* [in] */ IUnknown *pUnkService, - /* [in] */ BOOL bWeakReference); - - HRESULT ( STDMETHODCALLTYPE *CreateTransform )( - IDXTransformFactory * This, - /* [size_is][in] */ IUnknown **punkInputs, - /* [in] */ ULONG ulNumInputs, - /* [size_is][in] */ IUnknown **punkOutputs, - /* [in] */ ULONG ulNumOutputs, - /* [in] */ IPropertyBag *pInitProps, - /* [in] */ IErrorLog *pErrLog, - /* [in] */ REFCLSID TransCLSID, - /* [in] */ REFIID TransIID, - /* [iid_is][out] */ void **ppTransform); - - HRESULT ( STDMETHODCALLTYPE *InitializeTransform )( - IDXTransformFactory * This, - /* [in] */ IDXTransform *pTransform, - /* [size_is][in] */ IUnknown **punkInputs, - /* [in] */ ULONG ulNumInputs, - /* [size_is][in] */ IUnknown **punkOutputs, - /* [in] */ ULONG ulNumOutputs, - /* [in] */ IPropertyBag *pInitProps, - /* [in] */ IErrorLog *pErrLog); - - END_INTERFACE - } IDXTransformFactoryVtbl; - - interface IDXTransformFactory - { - CONST_VTBL struct IDXTransformFactoryVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IDXTransformFactory_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IDXTransformFactory_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IDXTransformFactory_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IDXTransformFactory_QueryService(This,guidService,riid,ppvObject) \ - (This)->lpVtbl -> QueryService(This,guidService,riid,ppvObject) - - -#define IDXTransformFactory_SetService(This,guidService,pUnkService,bWeakReference) \ - (This)->lpVtbl -> SetService(This,guidService,pUnkService,bWeakReference) - -#define IDXTransformFactory_CreateTransform(This,punkInputs,ulNumInputs,punkOutputs,ulNumOutputs,pInitProps,pErrLog,TransCLSID,TransIID,ppTransform) \ - (This)->lpVtbl -> CreateTransform(This,punkInputs,ulNumInputs,punkOutputs,ulNumOutputs,pInitProps,pErrLog,TransCLSID,TransIID,ppTransform) - -#define IDXTransformFactory_InitializeTransform(This,pTransform,punkInputs,ulNumInputs,punkOutputs,ulNumOutputs,pInitProps,pErrLog) \ - (This)->lpVtbl -> InitializeTransform(This,pTransform,punkInputs,ulNumInputs,punkOutputs,ulNumOutputs,pInitProps,pErrLog) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IDXTransformFactory_SetService_Proxy( - IDXTransformFactory * This, - /* [in] */ REFGUID guidService, - /* [in] */ IUnknown *pUnkService, - /* [in] */ BOOL bWeakReference); - - -void __RPC_STUB IDXTransformFactory_SetService_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IDXTransformFactory_CreateTransform_Proxy( - IDXTransformFactory * This, - /* [size_is][in] */ IUnknown **punkInputs, - /* [in] */ ULONG ulNumInputs, - /* [size_is][in] */ IUnknown **punkOutputs, - /* [in] */ ULONG ulNumOutputs, - /* [in] */ IPropertyBag *pInitProps, - /* [in] */ IErrorLog *pErrLog, - /* [in] */ REFCLSID TransCLSID, - /* [in] */ REFIID TransIID, - /* [iid_is][out] */ void **ppTransform); - - -void __RPC_STUB IDXTransformFactory_CreateTransform_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IDXTransformFactory_InitializeTransform_Proxy( - IDXTransformFactory * This, - /* [in] */ IDXTransform *pTransform, - /* [size_is][in] */ IUnknown **punkInputs, - /* [in] */ ULONG ulNumInputs, - /* [size_is][in] */ IUnknown **punkOutputs, - /* [in] */ ULONG ulNumOutputs, - /* [in] */ IPropertyBag *pInitProps, - /* [in] */ IErrorLog *pErrLog); - - -void __RPC_STUB IDXTransformFactory_InitializeTransform_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IDXTransformFactory_INTERFACE_DEFINED__ */ - - -/* interface __MIDL_itf_dxtrans_0261 */ -/* [local] */ - -typedef -enum DXTMISCFLAGS - { DXTMF_BLEND_WITH_OUTPUT = 1L << 0, - DXTMF_DITHER_OUTPUT = 1L << 1, - DXTMF_OPTION_MASK = 0xffff, - DXTMF_VALID_OPTIONS = DXTMF_BLEND_WITH_OUTPUT | DXTMF_DITHER_OUTPUT, - DXTMF_BLEND_SUPPORTED = 1L << 16, - DXTMF_DITHER_SUPPORTED = 1L << 17, - DXTMF_INPLACE_OPERATION = 1L << 24, - DXTMF_BOUNDS_SUPPORTED = 1L << 25, - DXTMF_PLACEMENT_SUPPORTED = 1L << 26, - DXTMF_QUALITY_SUPPORTED = 1L << 27, - DXTMF_OPAQUE_RESULT = 1L << 28 - } DXTMISCFLAGS; - -typedef -enum DXINOUTINFOFLAGS - { DXINOUTF_OPTIONAL = 1L << 0 - } DXINOUTINFOFLAGS; - - - -extern RPC_IF_HANDLE __MIDL_itf_dxtrans_0261_v0_0_c_ifspec; -extern RPC_IF_HANDLE __MIDL_itf_dxtrans_0261_v0_0_s_ifspec; - -#ifndef __IDXTransform_INTERFACE_DEFINED__ -#define __IDXTransform_INTERFACE_DEFINED__ - -/* interface IDXTransform */ -/* [local][unique][helpstring][uuid][object] */ - - -EXTERN_C const IID IID_IDXTransform; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("30A5FB78-E11F-11d1-9064-00C04FD9189D") - IDXTransform : public IDXBaseObject - { - public: - virtual HRESULT STDMETHODCALLTYPE Setup( - /* [size_is][in] */ IUnknown *const *punkInputs, - /* [in] */ ULONG ulNumInputs, - /* [size_is][in] */ IUnknown *const *punkOutputs, - /* [in] */ ULONG ulNumOutputs, - /* [in] */ DWORD dwFlags) = 0; - - virtual HRESULT STDMETHODCALLTYPE Execute( - /* [in] */ const GUID *pRequestID, - /* [in] */ const DXBNDS *pClipBnds, - /* [in] */ const DXVEC *pPlacement) = 0; - - virtual HRESULT STDMETHODCALLTYPE MapBoundsIn2Out( - /* [in] */ const DXBNDS *pInBounds, - /* [in] */ ULONG ulNumInBnds, - /* [in] */ ULONG ulOutIndex, - /* [out] */ DXBNDS *pOutBounds) = 0; - - virtual HRESULT STDMETHODCALLTYPE MapBoundsOut2In( - /* [in] */ ULONG ulOutIndex, - /* [in] */ const DXBNDS *pOutBounds, - /* [in] */ ULONG ulInIndex, - /* [out] */ DXBNDS *pInBounds) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetMiscFlags( - /* [in] */ DWORD dwMiscFlags) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetMiscFlags( - /* [out] */ DWORD *pdwMiscFlags) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetInOutInfo( - /* [in] */ BOOL bIsOutput, - /* [in] */ ULONG ulIndex, - /* [out] */ DWORD *pdwFlags, - /* [size_is][out] */ GUID *pIDs, - /* [out][in] */ ULONG *pcIDs, - /* [out] */ IUnknown **ppUnkCurrentObject) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetQuality( - /* [in] */ float fQuality) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetQuality( - /* [out] */ float *fQuality) = 0; - - }; - -#else /* C style interface */ - - typedef struct IDXTransformVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IDXTransform * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IDXTransform * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IDXTransform * This); - - HRESULT ( STDMETHODCALLTYPE *GetGenerationId )( - IDXTransform * This, - /* [out] */ ULONG *pID); - - HRESULT ( STDMETHODCALLTYPE *IncrementGenerationId )( - IDXTransform * This, - /* [in] */ BOOL bRefresh); - - HRESULT ( STDMETHODCALLTYPE *GetObjectSize )( - IDXTransform * This, - /* [out] */ ULONG *pcbSize); - - HRESULT ( STDMETHODCALLTYPE *Setup )( - IDXTransform * This, - /* [size_is][in] */ IUnknown *const *punkInputs, - /* [in] */ ULONG ulNumInputs, - /* [size_is][in] */ IUnknown *const *punkOutputs, - /* [in] */ ULONG ulNumOutputs, - /* [in] */ DWORD dwFlags); - - HRESULT ( STDMETHODCALLTYPE *Execute )( - IDXTransform * This, - /* [in] */ const GUID *pRequestID, - /* [in] */ const DXBNDS *pClipBnds, - /* [in] */ const DXVEC *pPlacement); - - HRESULT ( STDMETHODCALLTYPE *MapBoundsIn2Out )( - IDXTransform * This, - /* [in] */ const DXBNDS *pInBounds, - /* [in] */ ULONG ulNumInBnds, - /* [in] */ ULONG ulOutIndex, - /* [out] */ DXBNDS *pOutBounds); - - HRESULT ( STDMETHODCALLTYPE *MapBoundsOut2In )( - IDXTransform * This, - /* [in] */ ULONG ulOutIndex, - /* [in] */ const DXBNDS *pOutBounds, - /* [in] */ ULONG ulInIndex, - /* [out] */ DXBNDS *pInBounds); - - HRESULT ( STDMETHODCALLTYPE *SetMiscFlags )( - IDXTransform * This, - /* [in] */ DWORD dwMiscFlags); - - HRESULT ( STDMETHODCALLTYPE *GetMiscFlags )( - IDXTransform * This, - /* [out] */ DWORD *pdwMiscFlags); - - HRESULT ( STDMETHODCALLTYPE *GetInOutInfo )( - IDXTransform * This, - /* [in] */ BOOL bIsOutput, - /* [in] */ ULONG ulIndex, - /* [out] */ DWORD *pdwFlags, - /* [size_is][out] */ GUID *pIDs, - /* [out][in] */ ULONG *pcIDs, - /* [out] */ IUnknown **ppUnkCurrentObject); - - HRESULT ( STDMETHODCALLTYPE *SetQuality )( - IDXTransform * This, - /* [in] */ float fQuality); - - HRESULT ( STDMETHODCALLTYPE *GetQuality )( - IDXTransform * This, - /* [out] */ float *fQuality); - - END_INTERFACE - } IDXTransformVtbl; - - interface IDXTransform - { - CONST_VTBL struct IDXTransformVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IDXTransform_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IDXTransform_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IDXTransform_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IDXTransform_GetGenerationId(This,pID) \ - (This)->lpVtbl -> GetGenerationId(This,pID) - -#define IDXTransform_IncrementGenerationId(This,bRefresh) \ - (This)->lpVtbl -> IncrementGenerationId(This,bRefresh) - -#define IDXTransform_GetObjectSize(This,pcbSize) \ - (This)->lpVtbl -> GetObjectSize(This,pcbSize) - - -#define IDXTransform_Setup(This,punkInputs,ulNumInputs,punkOutputs,ulNumOutputs,dwFlags) \ - (This)->lpVtbl -> Setup(This,punkInputs,ulNumInputs,punkOutputs,ulNumOutputs,dwFlags) - -#define IDXTransform_Execute(This,pRequestID,pClipBnds,pPlacement) \ - (This)->lpVtbl -> Execute(This,pRequestID,pClipBnds,pPlacement) - -#define IDXTransform_MapBoundsIn2Out(This,pInBounds,ulNumInBnds,ulOutIndex,pOutBounds) \ - (This)->lpVtbl -> MapBoundsIn2Out(This,pInBounds,ulNumInBnds,ulOutIndex,pOutBounds) - -#define IDXTransform_MapBoundsOut2In(This,ulOutIndex,pOutBounds,ulInIndex,pInBounds) \ - (This)->lpVtbl -> MapBoundsOut2In(This,ulOutIndex,pOutBounds,ulInIndex,pInBounds) - -#define IDXTransform_SetMiscFlags(This,dwMiscFlags) \ - (This)->lpVtbl -> SetMiscFlags(This,dwMiscFlags) - -#define IDXTransform_GetMiscFlags(This,pdwMiscFlags) \ - (This)->lpVtbl -> GetMiscFlags(This,pdwMiscFlags) - -#define IDXTransform_GetInOutInfo(This,bIsOutput,ulIndex,pdwFlags,pIDs,pcIDs,ppUnkCurrentObject) \ - (This)->lpVtbl -> GetInOutInfo(This,bIsOutput,ulIndex,pdwFlags,pIDs,pcIDs,ppUnkCurrentObject) - -#define IDXTransform_SetQuality(This,fQuality) \ - (This)->lpVtbl -> SetQuality(This,fQuality) - -#define IDXTransform_GetQuality(This,fQuality) \ - (This)->lpVtbl -> GetQuality(This,fQuality) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IDXTransform_Setup_Proxy( - IDXTransform * This, - /* [size_is][in] */ IUnknown *const *punkInputs, - /* [in] */ ULONG ulNumInputs, - /* [size_is][in] */ IUnknown *const *punkOutputs, - /* [in] */ ULONG ulNumOutputs, - /* [in] */ DWORD dwFlags); - - -void __RPC_STUB IDXTransform_Setup_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IDXTransform_Execute_Proxy( - IDXTransform * This, - /* [in] */ const GUID *pRequestID, - /* [in] */ const DXBNDS *pClipBnds, - /* [in] */ const DXVEC *pPlacement); - - -void __RPC_STUB IDXTransform_Execute_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IDXTransform_MapBoundsIn2Out_Proxy( - IDXTransform * This, - /* [in] */ const DXBNDS *pInBounds, - /* [in] */ ULONG ulNumInBnds, - /* [in] */ ULONG ulOutIndex, - /* [out] */ DXBNDS *pOutBounds); - - -void __RPC_STUB IDXTransform_MapBoundsIn2Out_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IDXTransform_MapBoundsOut2In_Proxy( - IDXTransform * This, - /* [in] */ ULONG ulOutIndex, - /* [in] */ const DXBNDS *pOutBounds, - /* [in] */ ULONG ulInIndex, - /* [out] */ DXBNDS *pInBounds); - - -void __RPC_STUB IDXTransform_MapBoundsOut2In_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IDXTransform_SetMiscFlags_Proxy( - IDXTransform * This, - /* [in] */ DWORD dwMiscFlags); - - -void __RPC_STUB IDXTransform_SetMiscFlags_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IDXTransform_GetMiscFlags_Proxy( - IDXTransform * This, - /* [out] */ DWORD *pdwMiscFlags); - - -void __RPC_STUB IDXTransform_GetMiscFlags_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IDXTransform_GetInOutInfo_Proxy( - IDXTransform * This, - /* [in] */ BOOL bIsOutput, - /* [in] */ ULONG ulIndex, - /* [out] */ DWORD *pdwFlags, - /* [size_is][out] */ GUID *pIDs, - /* [out][in] */ ULONG *pcIDs, - /* [out] */ IUnknown **ppUnkCurrentObject); - - -void __RPC_STUB IDXTransform_GetInOutInfo_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IDXTransform_SetQuality_Proxy( - IDXTransform * This, - /* [in] */ float fQuality); - - -void __RPC_STUB IDXTransform_SetQuality_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IDXTransform_GetQuality_Proxy( - IDXTransform * This, - /* [out] */ float *fQuality); - - -void __RPC_STUB IDXTransform_GetQuality_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IDXTransform_INTERFACE_DEFINED__ */ - - -#ifndef __IDXSurfacePick_INTERFACE_DEFINED__ -#define __IDXSurfacePick_INTERFACE_DEFINED__ - -/* interface IDXSurfacePick */ -/* [local][unique][helpstring][uuid][object] */ - - -EXTERN_C const IID IID_IDXSurfacePick; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("30A5FB79-E11F-11d1-9064-00C04FD9189D") - IDXSurfacePick : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE PointPick( - /* [in] */ const DXVEC *pPoint, - /* [out] */ ULONG *pulInputSurfaceIndex, - /* [out] */ DXVEC *pInputPoint) = 0; - - }; - -#else /* C style interface */ - - typedef struct IDXSurfacePickVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IDXSurfacePick * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IDXSurfacePick * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IDXSurfacePick * This); - - HRESULT ( STDMETHODCALLTYPE *PointPick )( - IDXSurfacePick * This, - /* [in] */ const DXVEC *pPoint, - /* [out] */ ULONG *pulInputSurfaceIndex, - /* [out] */ DXVEC *pInputPoint); - - END_INTERFACE - } IDXSurfacePickVtbl; - - interface IDXSurfacePick - { - CONST_VTBL struct IDXSurfacePickVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IDXSurfacePick_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IDXSurfacePick_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IDXSurfacePick_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IDXSurfacePick_PointPick(This,pPoint,pulInputSurfaceIndex,pInputPoint) \ - (This)->lpVtbl -> PointPick(This,pPoint,pulInputSurfaceIndex,pInputPoint) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IDXSurfacePick_PointPick_Proxy( - IDXSurfacePick * This, - /* [in] */ const DXVEC *pPoint, - /* [out] */ ULONG *pulInputSurfaceIndex, - /* [out] */ DXVEC *pInputPoint); - - -void __RPC_STUB IDXSurfacePick_PointPick_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IDXSurfacePick_INTERFACE_DEFINED__ */ - - -#ifndef __IDXTBindHost_INTERFACE_DEFINED__ -#define __IDXTBindHost_INTERFACE_DEFINED__ - -/* interface IDXTBindHost */ -/* [local][unique][helpstring][uuid][object] */ - - -EXTERN_C const IID IID_IDXTBindHost; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("D26BCE55-E9DC-11d1-9066-00C04FD9189D") - IDXTBindHost : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE SetBindHost( - /* [in] */ IBindHost *pBindHost) = 0; - - }; - -#else /* C style interface */ - - typedef struct IDXTBindHostVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IDXTBindHost * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IDXTBindHost * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IDXTBindHost * This); - - HRESULT ( STDMETHODCALLTYPE *SetBindHost )( - IDXTBindHost * This, - /* [in] */ IBindHost *pBindHost); - - END_INTERFACE - } IDXTBindHostVtbl; - - interface IDXTBindHost - { - CONST_VTBL struct IDXTBindHostVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IDXTBindHost_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IDXTBindHost_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IDXTBindHost_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IDXTBindHost_SetBindHost(This,pBindHost) \ - (This)->lpVtbl -> SetBindHost(This,pBindHost) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IDXTBindHost_SetBindHost_Proxy( - IDXTBindHost * This, - /* [in] */ IBindHost *pBindHost); - - -void __RPC_STUB IDXTBindHost_SetBindHost_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IDXTBindHost_INTERFACE_DEFINED__ */ - - -/* interface __MIDL_itf_dxtrans_0264 */ -/* [local] */ - -typedef void __stdcall __stdcall DXTASKPROC( - void *pTaskData, - BOOL *pbContinueProcessing); - -typedef DXTASKPROC *PFNDXTASKPROC; - -typedef void __stdcall __stdcall DXAPCPROC( - DWORD dwData); - -typedef DXAPCPROC *PFNDXAPCPROC; - -#ifdef __cplusplus -typedef struct DXTMTASKINFO -{ - PFNDXTASKPROC pfnTaskProc; // Pointer to function to execute - PVOID pTaskData; // Pointer to argument data - PFNDXAPCPROC pfnCompletionAPC; // Pointer to completion APC proc - DWORD dwCompletionData; // Pointer to APC proc data - const GUID* pRequestID; // Used to identify groups of tasks -} DXTMTASKINFO; -#else -typedef struct DXTMTASKINFO - { - PVOID pfnTaskProc; - PVOID pTaskData; - PVOID pfnCompletionAPC; - DWORD dwCompletionData; - const GUID *pRequestID; - } DXTMTASKINFO; - -#endif - - -extern RPC_IF_HANDLE __MIDL_itf_dxtrans_0264_v0_0_c_ifspec; -extern RPC_IF_HANDLE __MIDL_itf_dxtrans_0264_v0_0_s_ifspec; - -#ifndef __IDXTaskManager_INTERFACE_DEFINED__ -#define __IDXTaskManager_INTERFACE_DEFINED__ - -/* interface IDXTaskManager */ -/* [local][unique][helpstring][uuid][object] */ - - -EXTERN_C const IID IID_IDXTaskManager; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("254DBBC1-F922-11d0-883A-3C8B00C10000") - IDXTaskManager : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE QueryNumProcessors( - /* [out] */ ULONG *pulNumProc) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetThreadPoolSize( - /* [in] */ ULONG ulNumThreads) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetThreadPoolSize( - /* [out] */ ULONG *pulNumThreads) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetConcurrencyLimit( - /* [in] */ ULONG ulNumThreads) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetConcurrencyLimit( - /* [out] */ ULONG *pulNumThreads) = 0; - - virtual HRESULT STDMETHODCALLTYPE ScheduleTasks( - /* [in] */ DXTMTASKINFO TaskInfo[ ], - /* [in] */ HANDLE Events[ ], - /* [out] */ DWORD TaskIDs[ ], - /* [in] */ ULONG ulNumTasks, - /* [in] */ ULONG ulWaitPeriod) = 0; - - virtual HRESULT STDMETHODCALLTYPE TerminateTasks( - /* [in] */ DWORD TaskIDs[ ], - /* [in] */ ULONG ulCount, - /* [in] */ ULONG ulTimeOut) = 0; - - virtual HRESULT STDMETHODCALLTYPE TerminateRequest( - /* [in] */ REFIID RequestID, - /* [in] */ ULONG ulTimeOut) = 0; - - }; - -#else /* C style interface */ - - typedef struct IDXTaskManagerVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IDXTaskManager * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IDXTaskManager * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IDXTaskManager * This); - - HRESULT ( STDMETHODCALLTYPE *QueryNumProcessors )( - IDXTaskManager * This, - /* [out] */ ULONG *pulNumProc); - - HRESULT ( STDMETHODCALLTYPE *SetThreadPoolSize )( - IDXTaskManager * This, - /* [in] */ ULONG ulNumThreads); - - HRESULT ( STDMETHODCALLTYPE *GetThreadPoolSize )( - IDXTaskManager * This, - /* [out] */ ULONG *pulNumThreads); - - HRESULT ( STDMETHODCALLTYPE *SetConcurrencyLimit )( - IDXTaskManager * This, - /* [in] */ ULONG ulNumThreads); - - HRESULT ( STDMETHODCALLTYPE *GetConcurrencyLimit )( - IDXTaskManager * This, - /* [out] */ ULONG *pulNumThreads); - - HRESULT ( STDMETHODCALLTYPE *ScheduleTasks )( - IDXTaskManager * This, - /* [in] */ DXTMTASKINFO TaskInfo[ ], - /* [in] */ HANDLE Events[ ], - /* [out] */ DWORD TaskIDs[ ], - /* [in] */ ULONG ulNumTasks, - /* [in] */ ULONG ulWaitPeriod); - - HRESULT ( STDMETHODCALLTYPE *TerminateTasks )( - IDXTaskManager * This, - /* [in] */ DWORD TaskIDs[ ], - /* [in] */ ULONG ulCount, - /* [in] */ ULONG ulTimeOut); - - HRESULT ( STDMETHODCALLTYPE *TerminateRequest )( - IDXTaskManager * This, - /* [in] */ REFIID RequestID, - /* [in] */ ULONG ulTimeOut); - - END_INTERFACE - } IDXTaskManagerVtbl; - - interface IDXTaskManager - { - CONST_VTBL struct IDXTaskManagerVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IDXTaskManager_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IDXTaskManager_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IDXTaskManager_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IDXTaskManager_QueryNumProcessors(This,pulNumProc) \ - (This)->lpVtbl -> QueryNumProcessors(This,pulNumProc) - -#define IDXTaskManager_SetThreadPoolSize(This,ulNumThreads) \ - (This)->lpVtbl -> SetThreadPoolSize(This,ulNumThreads) - -#define IDXTaskManager_GetThreadPoolSize(This,pulNumThreads) \ - (This)->lpVtbl -> GetThreadPoolSize(This,pulNumThreads) - -#define IDXTaskManager_SetConcurrencyLimit(This,ulNumThreads) \ - (This)->lpVtbl -> SetConcurrencyLimit(This,ulNumThreads) - -#define IDXTaskManager_GetConcurrencyLimit(This,pulNumThreads) \ - (This)->lpVtbl -> GetConcurrencyLimit(This,pulNumThreads) - -#define IDXTaskManager_ScheduleTasks(This,TaskInfo,Events,TaskIDs,ulNumTasks,ulWaitPeriod) \ - (This)->lpVtbl -> ScheduleTasks(This,TaskInfo,Events,TaskIDs,ulNumTasks,ulWaitPeriod) - -#define IDXTaskManager_TerminateTasks(This,TaskIDs,ulCount,ulTimeOut) \ - (This)->lpVtbl -> TerminateTasks(This,TaskIDs,ulCount,ulTimeOut) - -#define IDXTaskManager_TerminateRequest(This,RequestID,ulTimeOut) \ - (This)->lpVtbl -> TerminateRequest(This,RequestID,ulTimeOut) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IDXTaskManager_QueryNumProcessors_Proxy( - IDXTaskManager * This, - /* [out] */ ULONG *pulNumProc); - - -void __RPC_STUB IDXTaskManager_QueryNumProcessors_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IDXTaskManager_SetThreadPoolSize_Proxy( - IDXTaskManager * This, - /* [in] */ ULONG ulNumThreads); - - -void __RPC_STUB IDXTaskManager_SetThreadPoolSize_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IDXTaskManager_GetThreadPoolSize_Proxy( - IDXTaskManager * This, - /* [out] */ ULONG *pulNumThreads); - - -void __RPC_STUB IDXTaskManager_GetThreadPoolSize_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IDXTaskManager_SetConcurrencyLimit_Proxy( - IDXTaskManager * This, - /* [in] */ ULONG ulNumThreads); - - -void __RPC_STUB IDXTaskManager_SetConcurrencyLimit_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IDXTaskManager_GetConcurrencyLimit_Proxy( - IDXTaskManager * This, - /* [out] */ ULONG *pulNumThreads); - - -void __RPC_STUB IDXTaskManager_GetConcurrencyLimit_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IDXTaskManager_ScheduleTasks_Proxy( - IDXTaskManager * This, - /* [in] */ DXTMTASKINFO TaskInfo[ ], - /* [in] */ HANDLE Events[ ], - /* [out] */ DWORD TaskIDs[ ], - /* [in] */ ULONG ulNumTasks, - /* [in] */ ULONG ulWaitPeriod); - - -void __RPC_STUB IDXTaskManager_ScheduleTasks_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IDXTaskManager_TerminateTasks_Proxy( - IDXTaskManager * This, - /* [in] */ DWORD TaskIDs[ ], - /* [in] */ ULONG ulCount, - /* [in] */ ULONG ulTimeOut); - - -void __RPC_STUB IDXTaskManager_TerminateTasks_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IDXTaskManager_TerminateRequest_Proxy( - IDXTaskManager * This, - /* [in] */ REFIID RequestID, - /* [in] */ ULONG ulTimeOut); - - -void __RPC_STUB IDXTaskManager_TerminateRequest_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IDXTaskManager_INTERFACE_DEFINED__ */ - - -/* interface __MIDL_itf_dxtrans_0265 */ -/* [local] */ - -#ifdef __cplusplus -///////////////////////////////////////////////////// - -class DXBASESAMPLE; -class DXSAMPLE; -class DXPMSAMPLE; - -///////////////////////////////////////////////////// - -class DXBASESAMPLE -{ -public: - BYTE Blue; - BYTE Green; - BYTE Red; - BYTE Alpha; - DXBASESAMPLE() {} - DXBASESAMPLE(const BYTE alpha, const BYTE red, const BYTE green, const BYTE blue) : - Alpha(alpha), - Red(red), - Green(green), - Blue(blue) {} - DXBASESAMPLE(const DWORD val) { *this = (*(DXBASESAMPLE *)&val); } - operator DWORD () const {return *((DWORD *)this); } - DWORD operator=(const DWORD val) { return *this = *((DXBASESAMPLE *)&val); } -}; // DXBASESAMPLE - -///////////////////////////////////////////////////// - -class DXSAMPLE : public DXBASESAMPLE -{ -public: - DXSAMPLE() {} - DXSAMPLE(const BYTE alpha, const BYTE red, const BYTE green, const BYTE blue) : - DXBASESAMPLE(alpha, red, green, blue) {} - DXSAMPLE(const DWORD val) { *this = (*(DXSAMPLE *)&val); } - operator DWORD () const {return *((DWORD *)this); } - DWORD operator=(const DWORD val) { return *this = *((DXSAMPLE *)&val); } - operator DXPMSAMPLE() const; -}; // DXSAMPLE - -///////////////////////////////////////////////////// - -class DXPMSAMPLE : public DXBASESAMPLE -{ -public: - DXPMSAMPLE() {} - DXPMSAMPLE(const BYTE alpha, const BYTE red, const BYTE green, const BYTE blue) : - DXBASESAMPLE(alpha, red, green, blue) {} - DXPMSAMPLE(const DWORD val) { *this = (*(DXPMSAMPLE *)&val); } - operator DWORD () const {return *((DWORD *)this); } - DWORD operator=(const DWORD val) { return *this = *((DXPMSAMPLE *)&val); } - operator DXSAMPLE() const; -}; // DXPMSAMPLE - -// -// The following cast operators are to prevent a direct assignment of a DXSAMPLE to a DXPMSAMPLE -// -inline DXSAMPLE::operator DXPMSAMPLE() const { return *((DXPMSAMPLE *)this); } -inline DXPMSAMPLE::operator DXSAMPLE() const { return *((DXSAMPLE *)this); } -#else // !__cplusplus -typedef struct DXBASESAMPLE - { - BYTE Blue; - BYTE Green; - BYTE Red; - BYTE Alpha; - } DXBASESAMPLE; - -typedef struct DXSAMPLE - { - BYTE Blue; - BYTE Green; - BYTE Red; - BYTE Alpha; - } DXSAMPLE; - -typedef struct DXPMSAMPLE - { - BYTE Blue; - BYTE Green; - BYTE Red; - BYTE Alpha; - } DXPMSAMPLE; - -#endif // !__cplusplus -typedef -enum DXRUNTYPE - { DXRUNTYPE_CLEAR = 0, - DXRUNTYPE_OPAQUE = 1, - DXRUNTYPE_TRANS = 2, - DXRUNTYPE_UNKNOWN = 3 - } DXRUNTYPE; - -#define DX_MAX_RUN_INFO_COUNT ( 128 ) - -// Ignore the definition used by MIDL for TLB generation -#if 0 -typedef struct DXRUNINFO - { - ULONG Bitfields; - } DXRUNINFO; - -#endif // 0 -typedef struct DXRUNINFO -{ - ULONG Type : 2; // Type - ULONG Count : 30; // Number of samples in run -} DXRUNINFO; -typedef -enum DXSFCREATE - { DXSF_FORMAT_IS_CLSID = 1L << 0, - DXSF_NO_LAZY_DDRAW_LOCK = 1L << 1 - } DXSFCREATE; - -typedef -enum DXBLTOPTIONS - { DXBOF_DO_OVER = 1L << 0, - DXBOF_DITHER = 1L << 1 - } DXBLTOPTIONS; - - - -extern RPC_IF_HANDLE __MIDL_itf_dxtrans_0265_v0_0_c_ifspec; -extern RPC_IF_HANDLE __MIDL_itf_dxtrans_0265_v0_0_s_ifspec; - -#ifndef __IDXSurfaceFactory_INTERFACE_DEFINED__ -#define __IDXSurfaceFactory_INTERFACE_DEFINED__ - -/* interface IDXSurfaceFactory */ -/* [local][unique][helpstring][uuid][object] */ - - -EXTERN_C const IID IID_IDXSurfaceFactory; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("144946F5-C4D4-11d1-81D1-0000F87557DB") - IDXSurfaceFactory : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE CreateSurface( - /* [in] */ IUnknown *pDirectDraw, - /* [in] */ const DDSURFACEDESC *pDDSurfaceDesc, - /* [in] */ const GUID *pFormatID, - /* [in] */ const DXBNDS *pBounds, - /* [in] */ DWORD dwFlags, - /* [in] */ IUnknown *punkOuter, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppDXSurface) = 0; - - virtual HRESULT STDMETHODCALLTYPE CreateFromDDSurface( - /* [in] */ IUnknown *pDDrawSurface, - /* [in] */ const GUID *pFormatID, - /* [in] */ DWORD dwFlags, - /* [in] */ IUnknown *punkOuter, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppDXSurface) = 0; - - virtual HRESULT STDMETHODCALLTYPE LoadImage( - /* [in] */ const LPWSTR pszFileName, - /* [in] */ IUnknown *pDirectDraw, - /* [in] */ const DDSURFACEDESC *pDDSurfaceDesc, - /* [in] */ const GUID *pFormatID, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppDXSurface) = 0; - - virtual HRESULT STDMETHODCALLTYPE LoadImageFromStream( - /* [in] */ IStream *pStream, - /* [in] */ IUnknown *pDirectDraw, - /* [in] */ const DDSURFACEDESC *pDDSurfaceDesc, - /* [in] */ const GUID *pFormatID, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppDXSurface) = 0; - - virtual HRESULT STDMETHODCALLTYPE CopySurfaceToNewFormat( - /* [in] */ IDXSurface *pSrc, - /* [in] */ IUnknown *pDirectDraw, - /* [in] */ const DDSURFACEDESC *pDDSurfaceDesc, - /* [in] */ const GUID *pDestFormatID, - /* [out] */ IDXSurface **ppNewSurface) = 0; - - virtual HRESULT STDMETHODCALLTYPE CreateD3DRMTexture( - /* [in] */ IDXSurface *pSrc, - /* [in] */ IUnknown *pDirectDraw, - /* [in] */ IUnknown *pD3DRM3, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppTexture3) = 0; - - virtual HRESULT STDMETHODCALLTYPE BitBlt( - /* [in] */ IDXSurface *pDest, - /* [in] */ const DXVEC *pPlacement, - /* [in] */ IDXSurface *pSrc, - /* [in] */ const DXBNDS *pClipBounds, - /* [in] */ DWORD dwFlags) = 0; - - }; - -#else /* C style interface */ - - typedef struct IDXSurfaceFactoryVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IDXSurfaceFactory * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IDXSurfaceFactory * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IDXSurfaceFactory * This); - - HRESULT ( STDMETHODCALLTYPE *CreateSurface )( - IDXSurfaceFactory * This, - /* [in] */ IUnknown *pDirectDraw, - /* [in] */ const DDSURFACEDESC *pDDSurfaceDesc, - /* [in] */ const GUID *pFormatID, - /* [in] */ const DXBNDS *pBounds, - /* [in] */ DWORD dwFlags, - /* [in] */ IUnknown *punkOuter, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppDXSurface); - - HRESULT ( STDMETHODCALLTYPE *CreateFromDDSurface )( - IDXSurfaceFactory * This, - /* [in] */ IUnknown *pDDrawSurface, - /* [in] */ const GUID *pFormatID, - /* [in] */ DWORD dwFlags, - /* [in] */ IUnknown *punkOuter, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppDXSurface); - - HRESULT ( STDMETHODCALLTYPE *LoadImage )( - IDXSurfaceFactory * This, - /* [in] */ const LPWSTR pszFileName, - /* [in] */ IUnknown *pDirectDraw, - /* [in] */ const DDSURFACEDESC *pDDSurfaceDesc, - /* [in] */ const GUID *pFormatID, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppDXSurface); - - HRESULT ( STDMETHODCALLTYPE *LoadImageFromStream )( - IDXSurfaceFactory * This, - /* [in] */ IStream *pStream, - /* [in] */ IUnknown *pDirectDraw, - /* [in] */ const DDSURFACEDESC *pDDSurfaceDesc, - /* [in] */ const GUID *pFormatID, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppDXSurface); - - HRESULT ( STDMETHODCALLTYPE *CopySurfaceToNewFormat )( - IDXSurfaceFactory * This, - /* [in] */ IDXSurface *pSrc, - /* [in] */ IUnknown *pDirectDraw, - /* [in] */ const DDSURFACEDESC *pDDSurfaceDesc, - /* [in] */ const GUID *pDestFormatID, - /* [out] */ IDXSurface **ppNewSurface); - - HRESULT ( STDMETHODCALLTYPE *CreateD3DRMTexture )( - IDXSurfaceFactory * This, - /* [in] */ IDXSurface *pSrc, - /* [in] */ IUnknown *pDirectDraw, - /* [in] */ IUnknown *pD3DRM3, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppTexture3); - - HRESULT ( STDMETHODCALLTYPE *BitBlt )( - IDXSurfaceFactory * This, - /* [in] */ IDXSurface *pDest, - /* [in] */ const DXVEC *pPlacement, - /* [in] */ IDXSurface *pSrc, - /* [in] */ const DXBNDS *pClipBounds, - /* [in] */ DWORD dwFlags); - - END_INTERFACE - } IDXSurfaceFactoryVtbl; - - interface IDXSurfaceFactory - { - CONST_VTBL struct IDXSurfaceFactoryVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IDXSurfaceFactory_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IDXSurfaceFactory_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IDXSurfaceFactory_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IDXSurfaceFactory_CreateSurface(This,pDirectDraw,pDDSurfaceDesc,pFormatID,pBounds,dwFlags,punkOuter,riid,ppDXSurface) \ - (This)->lpVtbl -> CreateSurface(This,pDirectDraw,pDDSurfaceDesc,pFormatID,pBounds,dwFlags,punkOuter,riid,ppDXSurface) - -#define IDXSurfaceFactory_CreateFromDDSurface(This,pDDrawSurface,pFormatID,dwFlags,punkOuter,riid,ppDXSurface) \ - (This)->lpVtbl -> CreateFromDDSurface(This,pDDrawSurface,pFormatID,dwFlags,punkOuter,riid,ppDXSurface) - -#define IDXSurfaceFactory_LoadImage(This,pszFileName,pDirectDraw,pDDSurfaceDesc,pFormatID,riid,ppDXSurface) \ - (This)->lpVtbl -> LoadImage(This,pszFileName,pDirectDraw,pDDSurfaceDesc,pFormatID,riid,ppDXSurface) - -#define IDXSurfaceFactory_LoadImageFromStream(This,pStream,pDirectDraw,pDDSurfaceDesc,pFormatID,riid,ppDXSurface) \ - (This)->lpVtbl -> LoadImageFromStream(This,pStream,pDirectDraw,pDDSurfaceDesc,pFormatID,riid,ppDXSurface) - -#define IDXSurfaceFactory_CopySurfaceToNewFormat(This,pSrc,pDirectDraw,pDDSurfaceDesc,pDestFormatID,ppNewSurface) \ - (This)->lpVtbl -> CopySurfaceToNewFormat(This,pSrc,pDirectDraw,pDDSurfaceDesc,pDestFormatID,ppNewSurface) - -#define IDXSurfaceFactory_CreateD3DRMTexture(This,pSrc,pDirectDraw,pD3DRM3,riid,ppTexture3) \ - (This)->lpVtbl -> CreateD3DRMTexture(This,pSrc,pDirectDraw,pD3DRM3,riid,ppTexture3) - -#define IDXSurfaceFactory_BitBlt(This,pDest,pPlacement,pSrc,pClipBounds,dwFlags) \ - (This)->lpVtbl -> BitBlt(This,pDest,pPlacement,pSrc,pClipBounds,dwFlags) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IDXSurfaceFactory_CreateSurface_Proxy( - IDXSurfaceFactory * This, - /* [in] */ IUnknown *pDirectDraw, - /* [in] */ const DDSURFACEDESC *pDDSurfaceDesc, - /* [in] */ const GUID *pFormatID, - /* [in] */ const DXBNDS *pBounds, - /* [in] */ DWORD dwFlags, - /* [in] */ IUnknown *punkOuter, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppDXSurface); - - -void __RPC_STUB IDXSurfaceFactory_CreateSurface_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IDXSurfaceFactory_CreateFromDDSurface_Proxy( - IDXSurfaceFactory * This, - /* [in] */ IUnknown *pDDrawSurface, - /* [in] */ const GUID *pFormatID, - /* [in] */ DWORD dwFlags, - /* [in] */ IUnknown *punkOuter, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppDXSurface); - - -void __RPC_STUB IDXSurfaceFactory_CreateFromDDSurface_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IDXSurfaceFactory_LoadImage_Proxy( - IDXSurfaceFactory * This, - /* [in] */ const LPWSTR pszFileName, - /* [in] */ IUnknown *pDirectDraw, - /* [in] */ const DDSURFACEDESC *pDDSurfaceDesc, - /* [in] */ const GUID *pFormatID, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppDXSurface); - - -void __RPC_STUB IDXSurfaceFactory_LoadImage_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IDXSurfaceFactory_LoadImageFromStream_Proxy( - IDXSurfaceFactory * This, - /* [in] */ IStream *pStream, - /* [in] */ IUnknown *pDirectDraw, - /* [in] */ const DDSURFACEDESC *pDDSurfaceDesc, - /* [in] */ const GUID *pFormatID, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppDXSurface); - - -void __RPC_STUB IDXSurfaceFactory_LoadImageFromStream_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IDXSurfaceFactory_CopySurfaceToNewFormat_Proxy( - IDXSurfaceFactory * This, - /* [in] */ IDXSurface *pSrc, - /* [in] */ IUnknown *pDirectDraw, - /* [in] */ const DDSURFACEDESC *pDDSurfaceDesc, - /* [in] */ const GUID *pDestFormatID, - /* [out] */ IDXSurface **ppNewSurface); - - -void __RPC_STUB IDXSurfaceFactory_CopySurfaceToNewFormat_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IDXSurfaceFactory_CreateD3DRMTexture_Proxy( - IDXSurfaceFactory * This, - /* [in] */ IDXSurface *pSrc, - /* [in] */ IUnknown *pDirectDraw, - /* [in] */ IUnknown *pD3DRM3, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppTexture3); - - -void __RPC_STUB IDXSurfaceFactory_CreateD3DRMTexture_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IDXSurfaceFactory_BitBlt_Proxy( - IDXSurfaceFactory * This, - /* [in] */ IDXSurface *pDest, - /* [in] */ const DXVEC *pPlacement, - /* [in] */ IDXSurface *pSrc, - /* [in] */ const DXBNDS *pClipBounds, - /* [in] */ DWORD dwFlags); - - -void __RPC_STUB IDXSurfaceFactory_BitBlt_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IDXSurfaceFactory_INTERFACE_DEFINED__ */ - - -/* interface __MIDL_itf_dxtrans_0266 */ -/* [local] */ - -typedef -enum DXSURFMODCOMPOP - { DXSURFMOD_COMP_OVER = 0, - DXSURFMOD_COMP_ALPHA_MASK = 1, - DXSURFMOD_COMP_MAX_VALID = 1 - } DXSURFMODCOMPOP; - - - -extern RPC_IF_HANDLE __MIDL_itf_dxtrans_0266_v0_0_c_ifspec; -extern RPC_IF_HANDLE __MIDL_itf_dxtrans_0266_v0_0_s_ifspec; - -#ifndef __IDXSurfaceModifier_INTERFACE_DEFINED__ -#define __IDXSurfaceModifier_INTERFACE_DEFINED__ - -/* interface IDXSurfaceModifier */ -/* [local][unique][helpstring][uuid][object] */ - - -EXTERN_C const IID IID_IDXSurfaceModifier; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("9EA3B637-C37D-11d1-905E-00C04FD9189D") - IDXSurfaceModifier : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE SetFillColor( - /* [in] */ DXSAMPLE Color) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetFillColor( - /* [out] */ DXSAMPLE *pColor) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetBounds( - /* [in] */ const DXBNDS *pBounds) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetBackground( - /* [in] */ IDXSurface *pSurface) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetBackground( - /* [out] */ IDXSurface **ppSurface) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetCompositeOperation( - /* [in] */ DXSURFMODCOMPOP CompOp) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetCompositeOperation( - /* [out] */ DXSURFMODCOMPOP *pCompOp) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetForeground( - /* [in] */ IDXSurface *pSurface, - /* [in] */ BOOL bTile, - /* [in] */ const POINT *pOrigin) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetForeground( - /* [out] */ IDXSurface **ppSurface, - /* [out] */ BOOL *pbTile, - /* [out] */ POINT *pOrigin) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetOpacity( - /* [in] */ float Opacity) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetOpacity( - /* [out] */ float *pOpacity) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetLookup( - /* [in] */ IDXLookupTable *pLookupTable) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetLookup( - /* [out] */ IDXLookupTable **ppLookupTable) = 0; - - }; - -#else /* C style interface */ - - typedef struct IDXSurfaceModifierVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IDXSurfaceModifier * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IDXSurfaceModifier * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IDXSurfaceModifier * This); - - HRESULT ( STDMETHODCALLTYPE *SetFillColor )( - IDXSurfaceModifier * This, - /* [in] */ DXSAMPLE Color); - - HRESULT ( STDMETHODCALLTYPE *GetFillColor )( - IDXSurfaceModifier * This, - /* [out] */ DXSAMPLE *pColor); - - HRESULT ( STDMETHODCALLTYPE *SetBounds )( - IDXSurfaceModifier * This, - /* [in] */ const DXBNDS *pBounds); - - HRESULT ( STDMETHODCALLTYPE *SetBackground )( - IDXSurfaceModifier * This, - /* [in] */ IDXSurface *pSurface); - - HRESULT ( STDMETHODCALLTYPE *GetBackground )( - IDXSurfaceModifier * This, - /* [out] */ IDXSurface **ppSurface); - - HRESULT ( STDMETHODCALLTYPE *SetCompositeOperation )( - IDXSurfaceModifier * This, - /* [in] */ DXSURFMODCOMPOP CompOp); - - HRESULT ( STDMETHODCALLTYPE *GetCompositeOperation )( - IDXSurfaceModifier * This, - /* [out] */ DXSURFMODCOMPOP *pCompOp); - - HRESULT ( STDMETHODCALLTYPE *SetForeground )( - IDXSurfaceModifier * This, - /* [in] */ IDXSurface *pSurface, - /* [in] */ BOOL bTile, - /* [in] */ const POINT *pOrigin); - - HRESULT ( STDMETHODCALLTYPE *GetForeground )( - IDXSurfaceModifier * This, - /* [out] */ IDXSurface **ppSurface, - /* [out] */ BOOL *pbTile, - /* [out] */ POINT *pOrigin); - - HRESULT ( STDMETHODCALLTYPE *SetOpacity )( - IDXSurfaceModifier * This, - /* [in] */ float Opacity); - - HRESULT ( STDMETHODCALLTYPE *GetOpacity )( - IDXSurfaceModifier * This, - /* [out] */ float *pOpacity); - - HRESULT ( STDMETHODCALLTYPE *SetLookup )( - IDXSurfaceModifier * This, - /* [in] */ IDXLookupTable *pLookupTable); - - HRESULT ( STDMETHODCALLTYPE *GetLookup )( - IDXSurfaceModifier * This, - /* [out] */ IDXLookupTable **ppLookupTable); - - END_INTERFACE - } IDXSurfaceModifierVtbl; - - interface IDXSurfaceModifier - { - CONST_VTBL struct IDXSurfaceModifierVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IDXSurfaceModifier_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IDXSurfaceModifier_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IDXSurfaceModifier_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IDXSurfaceModifier_SetFillColor(This,Color) \ - (This)->lpVtbl -> SetFillColor(This,Color) - -#define IDXSurfaceModifier_GetFillColor(This,pColor) \ - (This)->lpVtbl -> GetFillColor(This,pColor) - -#define IDXSurfaceModifier_SetBounds(This,pBounds) \ - (This)->lpVtbl -> SetBounds(This,pBounds) - -#define IDXSurfaceModifier_SetBackground(This,pSurface) \ - (This)->lpVtbl -> SetBackground(This,pSurface) - -#define IDXSurfaceModifier_GetBackground(This,ppSurface) \ - (This)->lpVtbl -> GetBackground(This,ppSurface) - -#define IDXSurfaceModifier_SetCompositeOperation(This,CompOp) \ - (This)->lpVtbl -> SetCompositeOperation(This,CompOp) - -#define IDXSurfaceModifier_GetCompositeOperation(This,pCompOp) \ - (This)->lpVtbl -> GetCompositeOperation(This,pCompOp) - -#define IDXSurfaceModifier_SetForeground(This,pSurface,bTile,pOrigin) \ - (This)->lpVtbl -> SetForeground(This,pSurface,bTile,pOrigin) - -#define IDXSurfaceModifier_GetForeground(This,ppSurface,pbTile,pOrigin) \ - (This)->lpVtbl -> GetForeground(This,ppSurface,pbTile,pOrigin) - -#define IDXSurfaceModifier_SetOpacity(This,Opacity) \ - (This)->lpVtbl -> SetOpacity(This,Opacity) - -#define IDXSurfaceModifier_GetOpacity(This,pOpacity) \ - (This)->lpVtbl -> GetOpacity(This,pOpacity) - -#define IDXSurfaceModifier_SetLookup(This,pLookupTable) \ - (This)->lpVtbl -> SetLookup(This,pLookupTable) - -#define IDXSurfaceModifier_GetLookup(This,ppLookupTable) \ - (This)->lpVtbl -> GetLookup(This,ppLookupTable) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IDXSurfaceModifier_SetFillColor_Proxy( - IDXSurfaceModifier * This, - /* [in] */ DXSAMPLE Color); - - -void __RPC_STUB IDXSurfaceModifier_SetFillColor_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IDXSurfaceModifier_GetFillColor_Proxy( - IDXSurfaceModifier * This, - /* [out] */ DXSAMPLE *pColor); - - -void __RPC_STUB IDXSurfaceModifier_GetFillColor_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IDXSurfaceModifier_SetBounds_Proxy( - IDXSurfaceModifier * This, - /* [in] */ const DXBNDS *pBounds); - - -void __RPC_STUB IDXSurfaceModifier_SetBounds_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IDXSurfaceModifier_SetBackground_Proxy( - IDXSurfaceModifier * This, - /* [in] */ IDXSurface *pSurface); - - -void __RPC_STUB IDXSurfaceModifier_SetBackground_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IDXSurfaceModifier_GetBackground_Proxy( - IDXSurfaceModifier * This, - /* [out] */ IDXSurface **ppSurface); - - -void __RPC_STUB IDXSurfaceModifier_GetBackground_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IDXSurfaceModifier_SetCompositeOperation_Proxy( - IDXSurfaceModifier * This, - /* [in] */ DXSURFMODCOMPOP CompOp); - - -void __RPC_STUB IDXSurfaceModifier_SetCompositeOperation_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IDXSurfaceModifier_GetCompositeOperation_Proxy( - IDXSurfaceModifier * This, - /* [out] */ DXSURFMODCOMPOP *pCompOp); - - -void __RPC_STUB IDXSurfaceModifier_GetCompositeOperation_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IDXSurfaceModifier_SetForeground_Proxy( - IDXSurfaceModifier * This, - /* [in] */ IDXSurface *pSurface, - /* [in] */ BOOL bTile, - /* [in] */ const POINT *pOrigin); - - -void __RPC_STUB IDXSurfaceModifier_SetForeground_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IDXSurfaceModifier_GetForeground_Proxy( - IDXSurfaceModifier * This, - /* [out] */ IDXSurface **ppSurface, - /* [out] */ BOOL *pbTile, - /* [out] */ POINT *pOrigin); - - -void __RPC_STUB IDXSurfaceModifier_GetForeground_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IDXSurfaceModifier_SetOpacity_Proxy( - IDXSurfaceModifier * This, - /* [in] */ float Opacity); - - -void __RPC_STUB IDXSurfaceModifier_SetOpacity_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IDXSurfaceModifier_GetOpacity_Proxy( - IDXSurfaceModifier * This, - /* [out] */ float *pOpacity); - - -void __RPC_STUB IDXSurfaceModifier_GetOpacity_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IDXSurfaceModifier_SetLookup_Proxy( - IDXSurfaceModifier * This, - /* [in] */ IDXLookupTable *pLookupTable); - - -void __RPC_STUB IDXSurfaceModifier_SetLookup_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IDXSurfaceModifier_GetLookup_Proxy( - IDXSurfaceModifier * This, - /* [out] */ IDXLookupTable **ppLookupTable); - - -void __RPC_STUB IDXSurfaceModifier_GetLookup_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IDXSurfaceModifier_INTERFACE_DEFINED__ */ - - -/* interface __MIDL_itf_dxtrans_0267 */ -/* [local] */ - -typedef -enum DXSAMPLEFORMATENUM - { DXPF_FLAGSMASK = 0xffff0000, - DXPF_NONPREMULT = 0x10000, - DXPF_TRANSPARENCY = 0x20000, - DXPF_TRANSLUCENCY = 0x40000, - DXPF_2BITERROR = 0x200000, - DXPF_3BITERROR = 0x300000, - DXPF_4BITERROR = 0x400000, - DXPF_5BITERROR = 0x500000, - DXPF_ERRORMASK = 0x700000, - DXPF_NONSTANDARD = 0, - DXPF_PMARGB32 = 1 | DXPF_TRANSPARENCY | DXPF_TRANSLUCENCY, - DXPF_ARGB32 = 2 | DXPF_NONPREMULT | DXPF_TRANSPARENCY | DXPF_TRANSLUCENCY, - DXPF_ARGB4444 = 3 | DXPF_NONPREMULT | DXPF_TRANSPARENCY | DXPF_TRANSLUCENCY | DXPF_4BITERROR, - DXPF_A8 = 4 | DXPF_TRANSPARENCY | DXPF_TRANSLUCENCY, - DXPF_RGB32 = 5, - DXPF_RGB24 = 6, - DXPF_RGB565 = 7 | DXPF_3BITERROR, - DXPF_RGB555 = 8 | DXPF_3BITERROR, - DXPF_RGB8 = 9 | DXPF_5BITERROR, - DXPF_ARGB1555 = 10 | DXPF_TRANSPARENCY | DXPF_3BITERROR, - DXPF_RGB32_CK = DXPF_RGB32 | DXPF_TRANSPARENCY, - DXPF_RGB24_CK = DXPF_RGB24 | DXPF_TRANSPARENCY, - DXPF_RGB555_CK = DXPF_RGB555 | DXPF_TRANSPARENCY, - DXPF_RGB565_CK = DXPF_RGB565 | DXPF_TRANSPARENCY, - DXPF_RGB8_CK = DXPF_RGB8 | DXPF_TRANSPARENCY - } DXSAMPLEFORMATENUM; - -typedef -enum DXLOCKSURF - { DXLOCKF_READ = 0, - DXLOCKF_READWRITE = 1 << 0, - DXLOCKF_EXISTINGINFOONLY = 1 << 1, - DXLOCKF_WANTRUNINFO = 1 << 2, - DXLOCKF_NONPREMULT = 1 << 16, - DXLOCKF_VALIDFLAGS = DXLOCKF_READWRITE | DXLOCKF_EXISTINGINFOONLY | DXLOCKF_WANTRUNINFO | DXLOCKF_NONPREMULT - } DXLOCKSURF; - -typedef -enum DXSURFSTATUS - { DXSURF_TRANSIENT = 1 << 0, - DXSURF_READONLY = 1 << 1, - DXSURF_VALIDFLAGS = DXSURF_TRANSIENT | DXSURF_READONLY - } DXSURFSTATUS; - - - -extern RPC_IF_HANDLE __MIDL_itf_dxtrans_0267_v0_0_c_ifspec; -extern RPC_IF_HANDLE __MIDL_itf_dxtrans_0267_v0_0_s_ifspec; - -#ifndef __IDXSurface_INTERFACE_DEFINED__ -#define __IDXSurface_INTERFACE_DEFINED__ - -/* interface IDXSurface */ -/* [local][unique][helpstring][uuid][object] */ - - -EXTERN_C const IID IID_IDXSurface; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("B39FD73F-E139-11d1-9065-00C04FD9189D") - IDXSurface : public IDXBaseObject - { - public: - virtual HRESULT STDMETHODCALLTYPE GetPixelFormat( - /* [out] */ GUID *pFormatID, - /* [out] */ DXSAMPLEFORMATENUM *pSampleFormatEnum) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetBounds( - /* [out] */ DXBNDS *pBounds) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetStatusFlags( - /* [out] */ DWORD *pdwStatusFlags) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetStatusFlags( - /* [in] */ DWORD dwStatusFlags) = 0; - - virtual HRESULT STDMETHODCALLTYPE LockSurface( - /* [in] */ const DXBNDS *pBounds, - /* [in] */ ULONG ulTimeOut, - /* [in] */ DWORD dwFlags, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppPointer, - /* [out] */ ULONG *pulGenerationId) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetDirectDrawSurface( - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppSurface) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetColorKey( - DXSAMPLE *pColorKey) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetColorKey( - DXSAMPLE ColorKey) = 0; - - virtual HRESULT STDMETHODCALLTYPE LockSurfaceDC( - /* [in] */ const DXBNDS *pBounds, - /* [in] */ ULONG ulTimeOut, - /* [in] */ DWORD dwFlags, - /* [out] */ IDXDCLock **ppDCLock) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetAppData( - DWORD_PTR dwAppData) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetAppData( - DWORD_PTR *pdwAppData) = 0; - - }; - -#else /* C style interface */ - - typedef struct IDXSurfaceVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IDXSurface * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IDXSurface * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IDXSurface * This); - - HRESULT ( STDMETHODCALLTYPE *GetGenerationId )( - IDXSurface * This, - /* [out] */ ULONG *pID); - - HRESULT ( STDMETHODCALLTYPE *IncrementGenerationId )( - IDXSurface * This, - /* [in] */ BOOL bRefresh); - - HRESULT ( STDMETHODCALLTYPE *GetObjectSize )( - IDXSurface * This, - /* [out] */ ULONG *pcbSize); - - HRESULT ( STDMETHODCALLTYPE *GetPixelFormat )( - IDXSurface * This, - /* [out] */ GUID *pFormatID, - /* [out] */ DXSAMPLEFORMATENUM *pSampleFormatEnum); - - HRESULT ( STDMETHODCALLTYPE *GetBounds )( - IDXSurface * This, - /* [out] */ DXBNDS *pBounds); - - HRESULT ( STDMETHODCALLTYPE *GetStatusFlags )( - IDXSurface * This, - /* [out] */ DWORD *pdwStatusFlags); - - HRESULT ( STDMETHODCALLTYPE *SetStatusFlags )( - IDXSurface * This, - /* [in] */ DWORD dwStatusFlags); - - HRESULT ( STDMETHODCALLTYPE *LockSurface )( - IDXSurface * This, - /* [in] */ const DXBNDS *pBounds, - /* [in] */ ULONG ulTimeOut, - /* [in] */ DWORD dwFlags, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppPointer, - /* [out] */ ULONG *pulGenerationId); - - HRESULT ( STDMETHODCALLTYPE *GetDirectDrawSurface )( - IDXSurface * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppSurface); - - HRESULT ( STDMETHODCALLTYPE *GetColorKey )( - IDXSurface * This, - DXSAMPLE *pColorKey); - - HRESULT ( STDMETHODCALLTYPE *SetColorKey )( - IDXSurface * This, - DXSAMPLE ColorKey); - - HRESULT ( STDMETHODCALLTYPE *LockSurfaceDC )( - IDXSurface * This, - /* [in] */ const DXBNDS *pBounds, - /* [in] */ ULONG ulTimeOut, - /* [in] */ DWORD dwFlags, - /* [out] */ IDXDCLock **ppDCLock); - - HRESULT ( STDMETHODCALLTYPE *SetAppData )( - IDXSurface * This, - DWORD_PTR dwAppData); - - HRESULT ( STDMETHODCALLTYPE *GetAppData )( - IDXSurface * This, - DWORD_PTR *pdwAppData); - - END_INTERFACE - } IDXSurfaceVtbl; - - interface IDXSurface - { - CONST_VTBL struct IDXSurfaceVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IDXSurface_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IDXSurface_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IDXSurface_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IDXSurface_GetGenerationId(This,pID) \ - (This)->lpVtbl -> GetGenerationId(This,pID) - -#define IDXSurface_IncrementGenerationId(This,bRefresh) \ - (This)->lpVtbl -> IncrementGenerationId(This,bRefresh) - -#define IDXSurface_GetObjectSize(This,pcbSize) \ - (This)->lpVtbl -> GetObjectSize(This,pcbSize) - - -#define IDXSurface_GetPixelFormat(This,pFormatID,pSampleFormatEnum) \ - (This)->lpVtbl -> GetPixelFormat(This,pFormatID,pSampleFormatEnum) - -#define IDXSurface_GetBounds(This,pBounds) \ - (This)->lpVtbl -> GetBounds(This,pBounds) - -#define IDXSurface_GetStatusFlags(This,pdwStatusFlags) \ - (This)->lpVtbl -> GetStatusFlags(This,pdwStatusFlags) - -#define IDXSurface_SetStatusFlags(This,dwStatusFlags) \ - (This)->lpVtbl -> SetStatusFlags(This,dwStatusFlags) - -#define IDXSurface_LockSurface(This,pBounds,ulTimeOut,dwFlags,riid,ppPointer,pulGenerationId) \ - (This)->lpVtbl -> LockSurface(This,pBounds,ulTimeOut,dwFlags,riid,ppPointer,pulGenerationId) - -#define IDXSurface_GetDirectDrawSurface(This,riid,ppSurface) \ - (This)->lpVtbl -> GetDirectDrawSurface(This,riid,ppSurface) - -#define IDXSurface_GetColorKey(This,pColorKey) \ - (This)->lpVtbl -> GetColorKey(This,pColorKey) - -#define IDXSurface_SetColorKey(This,ColorKey) \ - (This)->lpVtbl -> SetColorKey(This,ColorKey) - -#define IDXSurface_LockSurfaceDC(This,pBounds,ulTimeOut,dwFlags,ppDCLock) \ - (This)->lpVtbl -> LockSurfaceDC(This,pBounds,ulTimeOut,dwFlags,ppDCLock) - -#define IDXSurface_SetAppData(This,dwAppData) \ - (This)->lpVtbl -> SetAppData(This,dwAppData) - -#define IDXSurface_GetAppData(This,pdwAppData) \ - (This)->lpVtbl -> GetAppData(This,pdwAppData) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IDXSurface_GetPixelFormat_Proxy( - IDXSurface * This, - /* [out] */ GUID *pFormatID, - /* [out] */ DXSAMPLEFORMATENUM *pSampleFormatEnum); - - -void __RPC_STUB IDXSurface_GetPixelFormat_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IDXSurface_GetBounds_Proxy( - IDXSurface * This, - /* [out] */ DXBNDS *pBounds); - - -void __RPC_STUB IDXSurface_GetBounds_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IDXSurface_GetStatusFlags_Proxy( - IDXSurface * This, - /* [out] */ DWORD *pdwStatusFlags); - - -void __RPC_STUB IDXSurface_GetStatusFlags_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IDXSurface_SetStatusFlags_Proxy( - IDXSurface * This, - /* [in] */ DWORD dwStatusFlags); - - -void __RPC_STUB IDXSurface_SetStatusFlags_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IDXSurface_LockSurface_Proxy( - IDXSurface * This, - /* [in] */ const DXBNDS *pBounds, - /* [in] */ ULONG ulTimeOut, - /* [in] */ DWORD dwFlags, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppPointer, - /* [out] */ ULONG *pulGenerationId); - - -void __RPC_STUB IDXSurface_LockSurface_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IDXSurface_GetDirectDrawSurface_Proxy( - IDXSurface * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppSurface); - - -void __RPC_STUB IDXSurface_GetDirectDrawSurface_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IDXSurface_GetColorKey_Proxy( - IDXSurface * This, - DXSAMPLE *pColorKey); - - -void __RPC_STUB IDXSurface_GetColorKey_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IDXSurface_SetColorKey_Proxy( - IDXSurface * This, - DXSAMPLE ColorKey); - - -void __RPC_STUB IDXSurface_SetColorKey_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IDXSurface_LockSurfaceDC_Proxy( - IDXSurface * This, - /* [in] */ const DXBNDS *pBounds, - /* [in] */ ULONG ulTimeOut, - /* [in] */ DWORD dwFlags, - /* [out] */ IDXDCLock **ppDCLock); - - -void __RPC_STUB IDXSurface_LockSurfaceDC_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IDXSurface_SetAppData_Proxy( - IDXSurface * This, - DWORD_PTR dwAppData); - - -void __RPC_STUB IDXSurface_SetAppData_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IDXSurface_GetAppData_Proxy( - IDXSurface * This, - DWORD_PTR *pdwAppData); - - -void __RPC_STUB IDXSurface_GetAppData_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IDXSurface_INTERFACE_DEFINED__ */ - - -#ifndef __IDXSurfaceInit_INTERFACE_DEFINED__ -#define __IDXSurfaceInit_INTERFACE_DEFINED__ - -/* interface IDXSurfaceInit */ -/* [local][unique][helpstring][uuid][object] */ - - -EXTERN_C const IID IID_IDXSurfaceInit; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("9EA3B639-C37D-11d1-905E-00C04FD9189D") - IDXSurfaceInit : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE InitSurface( - /* [in] */ IUnknown *pDirectDraw, - /* [in] */ const DDSURFACEDESC *pDDSurfaceDesc, - /* [in] */ const GUID *pFormatID, - /* [in] */ const DXBNDS *pBounds, - /* [in] */ DWORD dwFlags) = 0; - - }; - -#else /* C style interface */ - - typedef struct IDXSurfaceInitVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IDXSurfaceInit * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IDXSurfaceInit * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IDXSurfaceInit * This); - - HRESULT ( STDMETHODCALLTYPE *InitSurface )( - IDXSurfaceInit * This, - /* [in] */ IUnknown *pDirectDraw, - /* [in] */ const DDSURFACEDESC *pDDSurfaceDesc, - /* [in] */ const GUID *pFormatID, - /* [in] */ const DXBNDS *pBounds, - /* [in] */ DWORD dwFlags); - - END_INTERFACE - } IDXSurfaceInitVtbl; - - interface IDXSurfaceInit - { - CONST_VTBL struct IDXSurfaceInitVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IDXSurfaceInit_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IDXSurfaceInit_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IDXSurfaceInit_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IDXSurfaceInit_InitSurface(This,pDirectDraw,pDDSurfaceDesc,pFormatID,pBounds,dwFlags) \ - (This)->lpVtbl -> InitSurface(This,pDirectDraw,pDDSurfaceDesc,pFormatID,pBounds,dwFlags) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IDXSurfaceInit_InitSurface_Proxy( - IDXSurfaceInit * This, - /* [in] */ IUnknown *pDirectDraw, - /* [in] */ const DDSURFACEDESC *pDDSurfaceDesc, - /* [in] */ const GUID *pFormatID, - /* [in] */ const DXBNDS *pBounds, - /* [in] */ DWORD dwFlags); - - -void __RPC_STUB IDXSurfaceInit_InitSurface_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IDXSurfaceInit_INTERFACE_DEFINED__ */ - - -#ifndef __IDXARGBSurfaceInit_INTERFACE_DEFINED__ -#define __IDXARGBSurfaceInit_INTERFACE_DEFINED__ - -/* interface IDXARGBSurfaceInit */ -/* [local][unique][helpstring][uuid][object] */ - - -EXTERN_C const IID IID_IDXARGBSurfaceInit; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("9EA3B63A-C37D-11d1-905E-00C04FD9189D") - IDXARGBSurfaceInit : public IDXSurfaceInit - { - public: - virtual HRESULT STDMETHODCALLTYPE InitFromDDSurface( - /* [in] */ IUnknown *pDDrawSurface, - /* [in] */ const GUID *pFormatID, - /* [in] */ DWORD dwFlags) = 0; - - virtual HRESULT STDMETHODCALLTYPE InitFromRawSurface( - /* [in] */ IDXRawSurface *pRawSurface) = 0; - - }; - -#else /* C style interface */ - - typedef struct IDXARGBSurfaceInitVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IDXARGBSurfaceInit * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IDXARGBSurfaceInit * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IDXARGBSurfaceInit * This); - - HRESULT ( STDMETHODCALLTYPE *InitSurface )( - IDXARGBSurfaceInit * This, - /* [in] */ IUnknown *pDirectDraw, - /* [in] */ const DDSURFACEDESC *pDDSurfaceDesc, - /* [in] */ const GUID *pFormatID, - /* [in] */ const DXBNDS *pBounds, - /* [in] */ DWORD dwFlags); - - HRESULT ( STDMETHODCALLTYPE *InitFromDDSurface )( - IDXARGBSurfaceInit * This, - /* [in] */ IUnknown *pDDrawSurface, - /* [in] */ const GUID *pFormatID, - /* [in] */ DWORD dwFlags); - - HRESULT ( STDMETHODCALLTYPE *InitFromRawSurface )( - IDXARGBSurfaceInit * This, - /* [in] */ IDXRawSurface *pRawSurface); - - END_INTERFACE - } IDXARGBSurfaceInitVtbl; - - interface IDXARGBSurfaceInit - { - CONST_VTBL struct IDXARGBSurfaceInitVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IDXARGBSurfaceInit_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IDXARGBSurfaceInit_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IDXARGBSurfaceInit_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IDXARGBSurfaceInit_InitSurface(This,pDirectDraw,pDDSurfaceDesc,pFormatID,pBounds,dwFlags) \ - (This)->lpVtbl -> InitSurface(This,pDirectDraw,pDDSurfaceDesc,pFormatID,pBounds,dwFlags) - - -#define IDXARGBSurfaceInit_InitFromDDSurface(This,pDDrawSurface,pFormatID,dwFlags) \ - (This)->lpVtbl -> InitFromDDSurface(This,pDDrawSurface,pFormatID,dwFlags) - -#define IDXARGBSurfaceInit_InitFromRawSurface(This,pRawSurface) \ - (This)->lpVtbl -> InitFromRawSurface(This,pRawSurface) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IDXARGBSurfaceInit_InitFromDDSurface_Proxy( - IDXARGBSurfaceInit * This, - /* [in] */ IUnknown *pDDrawSurface, - /* [in] */ const GUID *pFormatID, - /* [in] */ DWORD dwFlags); - - -void __RPC_STUB IDXARGBSurfaceInit_InitFromDDSurface_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IDXARGBSurfaceInit_InitFromRawSurface_Proxy( - IDXARGBSurfaceInit * This, - /* [in] */ IDXRawSurface *pRawSurface); - - -void __RPC_STUB IDXARGBSurfaceInit_InitFromRawSurface_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IDXARGBSurfaceInit_INTERFACE_DEFINED__ */ - - -/* interface __MIDL_itf_dxtrans_0270 */ -/* [local] */ - -typedef struct tagDXNATIVETYPEINFO - { - BYTE *pCurrentData; - BYTE *pFirstByte; - long lPitch; - DWORD dwColorKey; - } DXNATIVETYPEINFO; - -typedef struct tagDXPACKEDRECTDESC - { - DXBASESAMPLE *pSamples; - BOOL bPremult; - RECT rect; - long lRowPadding; - } DXPACKEDRECTDESC; - -typedef struct tagDXOVERSAMPLEDESC - { - POINT p; - DXPMSAMPLE Color; - } DXOVERSAMPLEDESC; - - - -extern RPC_IF_HANDLE __MIDL_itf_dxtrans_0270_v0_0_c_ifspec; -extern RPC_IF_HANDLE __MIDL_itf_dxtrans_0270_v0_0_s_ifspec; - -#ifndef __IDXARGBReadPtr_INTERFACE_DEFINED__ -#define __IDXARGBReadPtr_INTERFACE_DEFINED__ - -/* interface IDXARGBReadPtr */ -/* [local][unique][helpstring][uuid][object] */ - - -EXTERN_C const IID IID_IDXARGBReadPtr; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("EAAAC2D6-C290-11d1-905D-00C04FD9189D") - IDXARGBReadPtr : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE GetSurface( - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppSurface) = 0; - - virtual DXSAMPLEFORMATENUM STDMETHODCALLTYPE GetNativeType( - /* [out] */ DXNATIVETYPEINFO *pInfo) = 0; - - virtual void STDMETHODCALLTYPE Move( - /* [in] */ long cSamples) = 0; - - virtual void STDMETHODCALLTYPE MoveToRow( - /* [in] */ ULONG y) = 0; - - virtual void STDMETHODCALLTYPE MoveToXY( - /* [in] */ ULONG x, - /* [in] */ ULONG y) = 0; - - virtual ULONG STDMETHODCALLTYPE MoveAndGetRunInfo( - /* [in] */ ULONG Row, - /* [out] */ const DXRUNINFO **ppInfo) = 0; - - virtual DXSAMPLE *STDMETHODCALLTYPE Unpack( - /* [in] */ DXSAMPLE *pSamples, - /* [in] */ ULONG cSamples, - /* [in] */ BOOL bMove) = 0; - - virtual DXPMSAMPLE *STDMETHODCALLTYPE UnpackPremult( - /* [in] */ DXPMSAMPLE *pSamples, - /* [in] */ ULONG cSamples, - /* [in] */ BOOL bMove) = 0; - - virtual void STDMETHODCALLTYPE UnpackRect( - /* [in] */ const DXPACKEDRECTDESC *pRectDesc) = 0; - - }; - -#else /* C style interface */ - - typedef struct IDXARGBReadPtrVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IDXARGBReadPtr * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IDXARGBReadPtr * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IDXARGBReadPtr * This); - - HRESULT ( STDMETHODCALLTYPE *GetSurface )( - IDXARGBReadPtr * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppSurface); - - DXSAMPLEFORMATENUM ( STDMETHODCALLTYPE *GetNativeType )( - IDXARGBReadPtr * This, - /* [out] */ DXNATIVETYPEINFO *pInfo); - - void ( STDMETHODCALLTYPE *Move )( - IDXARGBReadPtr * This, - /* [in] */ long cSamples); - - void ( STDMETHODCALLTYPE *MoveToRow )( - IDXARGBReadPtr * This, - /* [in] */ ULONG y); - - void ( STDMETHODCALLTYPE *MoveToXY )( - IDXARGBReadPtr * This, - /* [in] */ ULONG x, - /* [in] */ ULONG y); - - ULONG ( STDMETHODCALLTYPE *MoveAndGetRunInfo )( - IDXARGBReadPtr * This, - /* [in] */ ULONG Row, - /* [out] */ const DXRUNINFO **ppInfo); - - DXSAMPLE *( STDMETHODCALLTYPE *Unpack )( - IDXARGBReadPtr * This, - /* [in] */ DXSAMPLE *pSamples, - /* [in] */ ULONG cSamples, - /* [in] */ BOOL bMove); - - DXPMSAMPLE *( STDMETHODCALLTYPE *UnpackPremult )( - IDXARGBReadPtr * This, - /* [in] */ DXPMSAMPLE *pSamples, - /* [in] */ ULONG cSamples, - /* [in] */ BOOL bMove); - - void ( STDMETHODCALLTYPE *UnpackRect )( - IDXARGBReadPtr * This, - /* [in] */ const DXPACKEDRECTDESC *pRectDesc); - - END_INTERFACE - } IDXARGBReadPtrVtbl; - - interface IDXARGBReadPtr - { - CONST_VTBL struct IDXARGBReadPtrVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IDXARGBReadPtr_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IDXARGBReadPtr_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IDXARGBReadPtr_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IDXARGBReadPtr_GetSurface(This,riid,ppSurface) \ - (This)->lpVtbl -> GetSurface(This,riid,ppSurface) - -#define IDXARGBReadPtr_GetNativeType(This,pInfo) \ - (This)->lpVtbl -> GetNativeType(This,pInfo) - -#define IDXARGBReadPtr_Move(This,cSamples) \ - (This)->lpVtbl -> Move(This,cSamples) - -#define IDXARGBReadPtr_MoveToRow(This,y) \ - (This)->lpVtbl -> MoveToRow(This,y) - -#define IDXARGBReadPtr_MoveToXY(This,x,y) \ - (This)->lpVtbl -> MoveToXY(This,x,y) - -#define IDXARGBReadPtr_MoveAndGetRunInfo(This,Row,ppInfo) \ - (This)->lpVtbl -> MoveAndGetRunInfo(This,Row,ppInfo) - -#define IDXARGBReadPtr_Unpack(This,pSamples,cSamples,bMove) \ - (This)->lpVtbl -> Unpack(This,pSamples,cSamples,bMove) - -#define IDXARGBReadPtr_UnpackPremult(This,pSamples,cSamples,bMove) \ - (This)->lpVtbl -> UnpackPremult(This,pSamples,cSamples,bMove) - -#define IDXARGBReadPtr_UnpackRect(This,pRectDesc) \ - (This)->lpVtbl -> UnpackRect(This,pRectDesc) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IDXARGBReadPtr_GetSurface_Proxy( - IDXARGBReadPtr * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppSurface); - - -void __RPC_STUB IDXARGBReadPtr_GetSurface_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -DXSAMPLEFORMATENUM STDMETHODCALLTYPE IDXARGBReadPtr_GetNativeType_Proxy( - IDXARGBReadPtr * This, - /* [out] */ DXNATIVETYPEINFO *pInfo); - - -void __RPC_STUB IDXARGBReadPtr_GetNativeType_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -void STDMETHODCALLTYPE IDXARGBReadPtr_Move_Proxy( - IDXARGBReadPtr * This, - /* [in] */ long cSamples); - - -void __RPC_STUB IDXARGBReadPtr_Move_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -void STDMETHODCALLTYPE IDXARGBReadPtr_MoveToRow_Proxy( - IDXARGBReadPtr * This, - /* [in] */ ULONG y); - - -void __RPC_STUB IDXARGBReadPtr_MoveToRow_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -void STDMETHODCALLTYPE IDXARGBReadPtr_MoveToXY_Proxy( - IDXARGBReadPtr * This, - /* [in] */ ULONG x, - /* [in] */ ULONG y); - - -void __RPC_STUB IDXARGBReadPtr_MoveToXY_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -ULONG STDMETHODCALLTYPE IDXARGBReadPtr_MoveAndGetRunInfo_Proxy( - IDXARGBReadPtr * This, - /* [in] */ ULONG Row, - /* [out] */ const DXRUNINFO **ppInfo); - - -void __RPC_STUB IDXARGBReadPtr_MoveAndGetRunInfo_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -DXSAMPLE *STDMETHODCALLTYPE IDXARGBReadPtr_Unpack_Proxy( - IDXARGBReadPtr * This, - /* [in] */ DXSAMPLE *pSamples, - /* [in] */ ULONG cSamples, - /* [in] */ BOOL bMove); - - -void __RPC_STUB IDXARGBReadPtr_Unpack_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -DXPMSAMPLE *STDMETHODCALLTYPE IDXARGBReadPtr_UnpackPremult_Proxy( - IDXARGBReadPtr * This, - /* [in] */ DXPMSAMPLE *pSamples, - /* [in] */ ULONG cSamples, - /* [in] */ BOOL bMove); - - -void __RPC_STUB IDXARGBReadPtr_UnpackPremult_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -void STDMETHODCALLTYPE IDXARGBReadPtr_UnpackRect_Proxy( - IDXARGBReadPtr * This, - /* [in] */ const DXPACKEDRECTDESC *pRectDesc); - - -void __RPC_STUB IDXARGBReadPtr_UnpackRect_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IDXARGBReadPtr_INTERFACE_DEFINED__ */ - - -#ifndef __IDXARGBReadWritePtr_INTERFACE_DEFINED__ -#define __IDXARGBReadWritePtr_INTERFACE_DEFINED__ - -/* interface IDXARGBReadWritePtr */ -/* [local][unique][helpstring][uuid][object] */ - - -EXTERN_C const IID IID_IDXARGBReadWritePtr; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("EAAAC2D7-C290-11d1-905D-00C04FD9189D") - IDXARGBReadWritePtr : public IDXARGBReadPtr - { - public: - virtual void STDMETHODCALLTYPE PackAndMove( - /* [in] */ const DXSAMPLE *pSamples, - /* [in] */ ULONG cSamples) = 0; - - virtual void STDMETHODCALLTYPE PackPremultAndMove( - /* [in] */ const DXPMSAMPLE *pSamples, - /* [in] */ ULONG cSamples) = 0; - - virtual void STDMETHODCALLTYPE PackRect( - /* [in] */ const DXPACKEDRECTDESC *pRectDesc) = 0; - - virtual void STDMETHODCALLTYPE CopyAndMoveBoth( - /* [in] */ DXBASESAMPLE *pScratchBuffer, - /* [in] */ IDXARGBReadPtr *pSrc, - /* [in] */ ULONG cSamples, - /* [in] */ BOOL bIsOpaque) = 0; - - virtual void STDMETHODCALLTYPE CopyRect( - /* [in] */ DXBASESAMPLE *pScratchBuffer, - /* [in] */ const RECT *pDestRect, - /* [in] */ IDXARGBReadPtr *pSrc, - /* [in] */ const POINT *pSrcOrigin, - /* [in] */ BOOL bIsOpaque) = 0; - - virtual void STDMETHODCALLTYPE FillAndMove( - /* [in] */ DXBASESAMPLE *pScratchBuffer, - /* [in] */ DXPMSAMPLE SampVal, - /* [in] */ ULONG cSamples, - /* [in] */ BOOL bDoOver) = 0; - - virtual void STDMETHODCALLTYPE FillRect( - /* [in] */ const RECT *pRect, - /* [in] */ DXPMSAMPLE SampVal, - /* [in] */ BOOL bDoOver) = 0; - - virtual void STDMETHODCALLTYPE OverSample( - /* [in] */ const DXOVERSAMPLEDESC *pOverDesc) = 0; - - virtual void STDMETHODCALLTYPE OverArrayAndMove( - /* [in] */ DXBASESAMPLE *pScratchBuffer, - /* [in] */ const DXPMSAMPLE *pSrc, - /* [in] */ ULONG cSamples) = 0; - - }; - -#else /* C style interface */ - - typedef struct IDXARGBReadWritePtrVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IDXARGBReadWritePtr * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IDXARGBReadWritePtr * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IDXARGBReadWritePtr * This); - - HRESULT ( STDMETHODCALLTYPE *GetSurface )( - IDXARGBReadWritePtr * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppSurface); - - DXSAMPLEFORMATENUM ( STDMETHODCALLTYPE *GetNativeType )( - IDXARGBReadWritePtr * This, - /* [out] */ DXNATIVETYPEINFO *pInfo); - - void ( STDMETHODCALLTYPE *Move )( - IDXARGBReadWritePtr * This, - /* [in] */ long cSamples); - - void ( STDMETHODCALLTYPE *MoveToRow )( - IDXARGBReadWritePtr * This, - /* [in] */ ULONG y); - - void ( STDMETHODCALLTYPE *MoveToXY )( - IDXARGBReadWritePtr * This, - /* [in] */ ULONG x, - /* [in] */ ULONG y); - - ULONG ( STDMETHODCALLTYPE *MoveAndGetRunInfo )( - IDXARGBReadWritePtr * This, - /* [in] */ ULONG Row, - /* [out] */ const DXRUNINFO **ppInfo); - - DXSAMPLE *( STDMETHODCALLTYPE *Unpack )( - IDXARGBReadWritePtr * This, - /* [in] */ DXSAMPLE *pSamples, - /* [in] */ ULONG cSamples, - /* [in] */ BOOL bMove); - - DXPMSAMPLE *( STDMETHODCALLTYPE *UnpackPremult )( - IDXARGBReadWritePtr * This, - /* [in] */ DXPMSAMPLE *pSamples, - /* [in] */ ULONG cSamples, - /* [in] */ BOOL bMove); - - void ( STDMETHODCALLTYPE *UnpackRect )( - IDXARGBReadWritePtr * This, - /* [in] */ const DXPACKEDRECTDESC *pRectDesc); - - void ( STDMETHODCALLTYPE *PackAndMove )( - IDXARGBReadWritePtr * This, - /* [in] */ const DXSAMPLE *pSamples, - /* [in] */ ULONG cSamples); - - void ( STDMETHODCALLTYPE *PackPremultAndMove )( - IDXARGBReadWritePtr * This, - /* [in] */ const DXPMSAMPLE *pSamples, - /* [in] */ ULONG cSamples); - - void ( STDMETHODCALLTYPE *PackRect )( - IDXARGBReadWritePtr * This, - /* [in] */ const DXPACKEDRECTDESC *pRectDesc); - - void ( STDMETHODCALLTYPE *CopyAndMoveBoth )( - IDXARGBReadWritePtr * This, - /* [in] */ DXBASESAMPLE *pScratchBuffer, - /* [in] */ IDXARGBReadPtr *pSrc, - /* [in] */ ULONG cSamples, - /* [in] */ BOOL bIsOpaque); - - void ( STDMETHODCALLTYPE *CopyRect )( - IDXARGBReadWritePtr * This, - /* [in] */ DXBASESAMPLE *pScratchBuffer, - /* [in] */ const RECT *pDestRect, - /* [in] */ IDXARGBReadPtr *pSrc, - /* [in] */ const POINT *pSrcOrigin, - /* [in] */ BOOL bIsOpaque); - - void ( STDMETHODCALLTYPE *FillAndMove )( - IDXARGBReadWritePtr * This, - /* [in] */ DXBASESAMPLE *pScratchBuffer, - /* [in] */ DXPMSAMPLE SampVal, - /* [in] */ ULONG cSamples, - /* [in] */ BOOL bDoOver); - - void ( STDMETHODCALLTYPE *FillRect )( - IDXARGBReadWritePtr * This, - /* [in] */ const RECT *pRect, - /* [in] */ DXPMSAMPLE SampVal, - /* [in] */ BOOL bDoOver); - - void ( STDMETHODCALLTYPE *OverSample )( - IDXARGBReadWritePtr * This, - /* [in] */ const DXOVERSAMPLEDESC *pOverDesc); - - void ( STDMETHODCALLTYPE *OverArrayAndMove )( - IDXARGBReadWritePtr * This, - /* [in] */ DXBASESAMPLE *pScratchBuffer, - /* [in] */ const DXPMSAMPLE *pSrc, - /* [in] */ ULONG cSamples); - - END_INTERFACE - } IDXARGBReadWritePtrVtbl; - - interface IDXARGBReadWritePtr - { - CONST_VTBL struct IDXARGBReadWritePtrVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IDXARGBReadWritePtr_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IDXARGBReadWritePtr_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IDXARGBReadWritePtr_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IDXARGBReadWritePtr_GetSurface(This,riid,ppSurface) \ - (This)->lpVtbl -> GetSurface(This,riid,ppSurface) - -#define IDXARGBReadWritePtr_GetNativeType(This,pInfo) \ - (This)->lpVtbl -> GetNativeType(This,pInfo) - -#define IDXARGBReadWritePtr_Move(This,cSamples) \ - (This)->lpVtbl -> Move(This,cSamples) - -#define IDXARGBReadWritePtr_MoveToRow(This,y) \ - (This)->lpVtbl -> MoveToRow(This,y) - -#define IDXARGBReadWritePtr_MoveToXY(This,x,y) \ - (This)->lpVtbl -> MoveToXY(This,x,y) - -#define IDXARGBReadWritePtr_MoveAndGetRunInfo(This,Row,ppInfo) \ - (This)->lpVtbl -> MoveAndGetRunInfo(This,Row,ppInfo) - -#define IDXARGBReadWritePtr_Unpack(This,pSamples,cSamples,bMove) \ - (This)->lpVtbl -> Unpack(This,pSamples,cSamples,bMove) - -#define IDXARGBReadWritePtr_UnpackPremult(This,pSamples,cSamples,bMove) \ - (This)->lpVtbl -> UnpackPremult(This,pSamples,cSamples,bMove) - -#define IDXARGBReadWritePtr_UnpackRect(This,pRectDesc) \ - (This)->lpVtbl -> UnpackRect(This,pRectDesc) - - -#define IDXARGBReadWritePtr_PackAndMove(This,pSamples,cSamples) \ - (This)->lpVtbl -> PackAndMove(This,pSamples,cSamples) - -#define IDXARGBReadWritePtr_PackPremultAndMove(This,pSamples,cSamples) \ - (This)->lpVtbl -> PackPremultAndMove(This,pSamples,cSamples) - -#define IDXARGBReadWritePtr_PackRect(This,pRectDesc) \ - (This)->lpVtbl -> PackRect(This,pRectDesc) - -#define IDXARGBReadWritePtr_CopyAndMoveBoth(This,pScratchBuffer,pSrc,cSamples,bIsOpaque) \ - (This)->lpVtbl -> CopyAndMoveBoth(This,pScratchBuffer,pSrc,cSamples,bIsOpaque) - -#define IDXARGBReadWritePtr_CopyRect(This,pScratchBuffer,pDestRect,pSrc,pSrcOrigin,bIsOpaque) \ - (This)->lpVtbl -> CopyRect(This,pScratchBuffer,pDestRect,pSrc,pSrcOrigin,bIsOpaque) - -#define IDXARGBReadWritePtr_FillAndMove(This,pScratchBuffer,SampVal,cSamples,bDoOver) \ - (This)->lpVtbl -> FillAndMove(This,pScratchBuffer,SampVal,cSamples,bDoOver) - -#define IDXARGBReadWritePtr_FillRect(This,pRect,SampVal,bDoOver) \ - (This)->lpVtbl -> FillRect(This,pRect,SampVal,bDoOver) - -#define IDXARGBReadWritePtr_OverSample(This,pOverDesc) \ - (This)->lpVtbl -> OverSample(This,pOverDesc) - -#define IDXARGBReadWritePtr_OverArrayAndMove(This,pScratchBuffer,pSrc,cSamples) \ - (This)->lpVtbl -> OverArrayAndMove(This,pScratchBuffer,pSrc,cSamples) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -void STDMETHODCALLTYPE IDXARGBReadWritePtr_PackAndMove_Proxy( - IDXARGBReadWritePtr * This, - /* [in] */ const DXSAMPLE *pSamples, - /* [in] */ ULONG cSamples); - - -void __RPC_STUB IDXARGBReadWritePtr_PackAndMove_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -void STDMETHODCALLTYPE IDXARGBReadWritePtr_PackPremultAndMove_Proxy( - IDXARGBReadWritePtr * This, - /* [in] */ const DXPMSAMPLE *pSamples, - /* [in] */ ULONG cSamples); - - -void __RPC_STUB IDXARGBReadWritePtr_PackPremultAndMove_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -void STDMETHODCALLTYPE IDXARGBReadWritePtr_PackRect_Proxy( - IDXARGBReadWritePtr * This, - /* [in] */ const DXPACKEDRECTDESC *pRectDesc); - - -void __RPC_STUB IDXARGBReadWritePtr_PackRect_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -void STDMETHODCALLTYPE IDXARGBReadWritePtr_CopyAndMoveBoth_Proxy( - IDXARGBReadWritePtr * This, - /* [in] */ DXBASESAMPLE *pScratchBuffer, - /* [in] */ IDXARGBReadPtr *pSrc, - /* [in] */ ULONG cSamples, - /* [in] */ BOOL bIsOpaque); - - -void __RPC_STUB IDXARGBReadWritePtr_CopyAndMoveBoth_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -void STDMETHODCALLTYPE IDXARGBReadWritePtr_CopyRect_Proxy( - IDXARGBReadWritePtr * This, - /* [in] */ DXBASESAMPLE *pScratchBuffer, - /* [in] */ const RECT *pDestRect, - /* [in] */ IDXARGBReadPtr *pSrc, - /* [in] */ const POINT *pSrcOrigin, - /* [in] */ BOOL bIsOpaque); - - -void __RPC_STUB IDXARGBReadWritePtr_CopyRect_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -void STDMETHODCALLTYPE IDXARGBReadWritePtr_FillAndMove_Proxy( - IDXARGBReadWritePtr * This, - /* [in] */ DXBASESAMPLE *pScratchBuffer, - /* [in] */ DXPMSAMPLE SampVal, - /* [in] */ ULONG cSamples, - /* [in] */ BOOL bDoOver); - - -void __RPC_STUB IDXARGBReadWritePtr_FillAndMove_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -void STDMETHODCALLTYPE IDXARGBReadWritePtr_FillRect_Proxy( - IDXARGBReadWritePtr * This, - /* [in] */ const RECT *pRect, - /* [in] */ DXPMSAMPLE SampVal, - /* [in] */ BOOL bDoOver); - - -void __RPC_STUB IDXARGBReadWritePtr_FillRect_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -void STDMETHODCALLTYPE IDXARGBReadWritePtr_OverSample_Proxy( - IDXARGBReadWritePtr * This, - /* [in] */ const DXOVERSAMPLEDESC *pOverDesc); - - -void __RPC_STUB IDXARGBReadWritePtr_OverSample_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -void STDMETHODCALLTYPE IDXARGBReadWritePtr_OverArrayAndMove_Proxy( - IDXARGBReadWritePtr * This, - /* [in] */ DXBASESAMPLE *pScratchBuffer, - /* [in] */ const DXPMSAMPLE *pSrc, - /* [in] */ ULONG cSamples); - - -void __RPC_STUB IDXARGBReadWritePtr_OverArrayAndMove_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IDXARGBReadWritePtr_INTERFACE_DEFINED__ */ - - -#ifndef __IDXDCLock_INTERFACE_DEFINED__ -#define __IDXDCLock_INTERFACE_DEFINED__ - -/* interface IDXDCLock */ -/* [local][unique][helpstring][uuid][object] */ - - -EXTERN_C const IID IID_IDXDCLock; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("0F619456-CF39-11d1-905E-00C04FD9189D") - IDXDCLock : public IUnknown - { - public: - virtual HDC STDMETHODCALLTYPE GetDC( void) = 0; - - }; - -#else /* C style interface */ - - typedef struct IDXDCLockVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IDXDCLock * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IDXDCLock * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IDXDCLock * This); - - HDC ( STDMETHODCALLTYPE *GetDC )( - IDXDCLock * This); - - END_INTERFACE - } IDXDCLockVtbl; - - interface IDXDCLock - { - CONST_VTBL struct IDXDCLockVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IDXDCLock_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IDXDCLock_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IDXDCLock_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IDXDCLock_GetDC(This) \ - (This)->lpVtbl -> GetDC(This) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HDC STDMETHODCALLTYPE IDXDCLock_GetDC_Proxy( - IDXDCLock * This); - - -void __RPC_STUB IDXDCLock_GetDC_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IDXDCLock_INTERFACE_DEFINED__ */ - - -#ifndef __IDXTScaleOutput_INTERFACE_DEFINED__ -#define __IDXTScaleOutput_INTERFACE_DEFINED__ - -/* interface IDXTScaleOutput */ -/* [local][unique][helpstring][uuid][object] */ - - -EXTERN_C const IID IID_IDXTScaleOutput; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("B2024B50-EE77-11d1-9066-00C04FD9189D") - IDXTScaleOutput : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE SetOutputSize( - /* [in] */ const SIZE OutSize, - /* [in] */ BOOL bMaintainAspect) = 0; - - }; - -#else /* C style interface */ - - typedef struct IDXTScaleOutputVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IDXTScaleOutput * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IDXTScaleOutput * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IDXTScaleOutput * This); - - HRESULT ( STDMETHODCALLTYPE *SetOutputSize )( - IDXTScaleOutput * This, - /* [in] */ const SIZE OutSize, - /* [in] */ BOOL bMaintainAspect); - - END_INTERFACE - } IDXTScaleOutputVtbl; - - interface IDXTScaleOutput - { - CONST_VTBL struct IDXTScaleOutputVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IDXTScaleOutput_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IDXTScaleOutput_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IDXTScaleOutput_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IDXTScaleOutput_SetOutputSize(This,OutSize,bMaintainAspect) \ - (This)->lpVtbl -> SetOutputSize(This,OutSize,bMaintainAspect) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IDXTScaleOutput_SetOutputSize_Proxy( - IDXTScaleOutput * This, - /* [in] */ const SIZE OutSize, - /* [in] */ BOOL bMaintainAspect); - - -void __RPC_STUB IDXTScaleOutput_SetOutputSize_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IDXTScaleOutput_INTERFACE_DEFINED__ */ - - -#ifndef __IDXGradient_INTERFACE_DEFINED__ -#define __IDXGradient_INTERFACE_DEFINED__ - -/* interface IDXGradient */ -/* [local][unique][helpstring][uuid][object] */ - - -EXTERN_C const IID IID_IDXGradient; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("B2024B51-EE77-11d1-9066-00C04FD9189D") - IDXGradient : public IDXTScaleOutput - { - public: - virtual HRESULT STDMETHODCALLTYPE SetGradient( - DXSAMPLE StartColor, - DXSAMPLE EndColor, - BOOL bHorizontal) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetOutputSize( - /* [out] */ SIZE *pOutSize) = 0; - - }; - -#else /* C style interface */ - - typedef struct IDXGradientVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IDXGradient * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IDXGradient * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IDXGradient * This); - - HRESULT ( STDMETHODCALLTYPE *SetOutputSize )( - IDXGradient * This, - /* [in] */ const SIZE OutSize, - /* [in] */ BOOL bMaintainAspect); - - HRESULT ( STDMETHODCALLTYPE *SetGradient )( - IDXGradient * This, - DXSAMPLE StartColor, - DXSAMPLE EndColor, - BOOL bHorizontal); - - HRESULT ( STDMETHODCALLTYPE *GetOutputSize )( - IDXGradient * This, - /* [out] */ SIZE *pOutSize); - - END_INTERFACE - } IDXGradientVtbl; - - interface IDXGradient - { - CONST_VTBL struct IDXGradientVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IDXGradient_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IDXGradient_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IDXGradient_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IDXGradient_SetOutputSize(This,OutSize,bMaintainAspect) \ - (This)->lpVtbl -> SetOutputSize(This,OutSize,bMaintainAspect) - - -#define IDXGradient_SetGradient(This,StartColor,EndColor,bHorizontal) \ - (This)->lpVtbl -> SetGradient(This,StartColor,EndColor,bHorizontal) - -#define IDXGradient_GetOutputSize(This,pOutSize) \ - (This)->lpVtbl -> GetOutputSize(This,pOutSize) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IDXGradient_SetGradient_Proxy( - IDXGradient * This, - DXSAMPLE StartColor, - DXSAMPLE EndColor, - BOOL bHorizontal); - - -void __RPC_STUB IDXGradient_SetGradient_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IDXGradient_GetOutputSize_Proxy( - IDXGradient * This, - /* [out] */ SIZE *pOutSize); - - -void __RPC_STUB IDXGradient_GetOutputSize_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IDXGradient_INTERFACE_DEFINED__ */ - - -#ifndef __IDXTScale_INTERFACE_DEFINED__ -#define __IDXTScale_INTERFACE_DEFINED__ - -/* interface IDXTScale */ -/* [local][unique][helpstring][uuid][object] */ - - -EXTERN_C const IID IID_IDXTScale; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("B39FD742-E139-11d1-9065-00C04FD9189D") - IDXTScale : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE SetScales( - /* [in] */ float Scales[ 2 ]) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetScales( - /* [out] */ float Scales[ 2 ]) = 0; - - virtual HRESULT STDMETHODCALLTYPE ScaleFitToSize( - /* [out][in] */ DXBNDS *pClipBounds, - /* [in] */ SIZE FitToSize, - /* [in] */ BOOL bMaintainAspect) = 0; - - }; - -#else /* C style interface */ - - typedef struct IDXTScaleVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IDXTScale * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IDXTScale * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IDXTScale * This); - - HRESULT ( STDMETHODCALLTYPE *SetScales )( - IDXTScale * This, - /* [in] */ float Scales[ 2 ]); - - HRESULT ( STDMETHODCALLTYPE *GetScales )( - IDXTScale * This, - /* [out] */ float Scales[ 2 ]); - - HRESULT ( STDMETHODCALLTYPE *ScaleFitToSize )( - IDXTScale * This, - /* [out][in] */ DXBNDS *pClipBounds, - /* [in] */ SIZE FitToSize, - /* [in] */ BOOL bMaintainAspect); - - END_INTERFACE - } IDXTScaleVtbl; - - interface IDXTScale - { - CONST_VTBL struct IDXTScaleVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IDXTScale_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IDXTScale_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IDXTScale_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IDXTScale_SetScales(This,Scales) \ - (This)->lpVtbl -> SetScales(This,Scales) - -#define IDXTScale_GetScales(This,Scales) \ - (This)->lpVtbl -> GetScales(This,Scales) - -#define IDXTScale_ScaleFitToSize(This,pClipBounds,FitToSize,bMaintainAspect) \ - (This)->lpVtbl -> ScaleFitToSize(This,pClipBounds,FitToSize,bMaintainAspect) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IDXTScale_SetScales_Proxy( - IDXTScale * This, - /* [in] */ float Scales[ 2 ]); - - -void __RPC_STUB IDXTScale_SetScales_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IDXTScale_GetScales_Proxy( - IDXTScale * This, - /* [out] */ float Scales[ 2 ]); - - -void __RPC_STUB IDXTScale_GetScales_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IDXTScale_ScaleFitToSize_Proxy( - IDXTScale * This, - /* [out][in] */ DXBNDS *pClipBounds, - /* [in] */ SIZE FitToSize, - /* [in] */ BOOL bMaintainAspect); - - -void __RPC_STUB IDXTScale_ScaleFitToSize_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IDXTScale_INTERFACE_DEFINED__ */ - - -/* interface __MIDL_itf_dxtrans_0276 */ -/* [local] */ - -typedef -enum DISPIDDXEFFECT - { DISPID_DXECAPABILITIES = 10000, - DISPID_DXEPROGRESS = DISPID_DXECAPABILITIES + 1, - DISPID_DXESTEP = DISPID_DXEPROGRESS + 1, - DISPID_DXEDURATION = DISPID_DXESTEP + 1, - DISPID_DXE_NEXT_ID = DISPID_DXEDURATION + 1 - } DISPIDDXBOUNDEDEFFECT; - -typedef -enum DXEFFECTTYPE - { DXTET_PERIODIC = 1 << 0, - DXTET_MORPH = 1 << 1 - } DXEFFECTTYPE; - - - -extern RPC_IF_HANDLE __MIDL_itf_dxtrans_0276_v0_0_c_ifspec; -extern RPC_IF_HANDLE __MIDL_itf_dxtrans_0276_v0_0_s_ifspec; - -#ifndef __IDXEffect_INTERFACE_DEFINED__ -#define __IDXEffect_INTERFACE_DEFINED__ - -/* interface IDXEffect */ -/* [dual][unique][helpstring][uuid][object] */ - - -EXTERN_C const IID IID_IDXEffect; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("E31FB81B-1335-11d1-8189-0000F87557DB") - IDXEffect : public IDispatch - { - public: - virtual /* [id][propget] */ HRESULT STDMETHODCALLTYPE get_Capabilities( - /* [retval][out] */ long *pVal) = 0; - - virtual /* [id][propget] */ HRESULT STDMETHODCALLTYPE get_Progress( - /* [retval][out] */ float *pVal) = 0; - - virtual /* [id][propput] */ HRESULT STDMETHODCALLTYPE put_Progress( - /* [in] */ float newVal) = 0; - - virtual /* [id][propget] */ HRESULT STDMETHODCALLTYPE get_StepResolution( - /* [retval][out] */ float *pVal) = 0; - - virtual /* [id][propget] */ HRESULT STDMETHODCALLTYPE get_Duration( - /* [retval][out] */ float *pVal) = 0; - - virtual /* [id][propput] */ HRESULT STDMETHODCALLTYPE put_Duration( - /* [in] */ float newVal) = 0; - - }; - -#else /* C style interface */ - - typedef struct IDXEffectVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IDXEffect * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IDXEffect * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IDXEffect * This); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( - IDXEffect * This, - /* [out] */ UINT *pctinfo); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( - IDXEffect * This, - /* [in] */ UINT iTInfo, - /* [in] */ LCID lcid, - /* [out] */ ITypeInfo **ppTInfo); - - HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( - IDXEffect * This, - /* [in] */ REFIID riid, - /* [size_is][in] */ LPOLESTR *rgszNames, - /* [in] */ UINT cNames, - /* [in] */ LCID lcid, - /* [size_is][out] */ DISPID *rgDispId); - - /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( - IDXEffect * This, - /* [in] */ DISPID dispIdMember, - /* [in] */ REFIID riid, - /* [in] */ LCID lcid, - /* [in] */ WORD wFlags, - /* [out][in] */ DISPPARAMS *pDispParams, - /* [out] */ VARIANT *pVarResult, - /* [out] */ EXCEPINFO *pExcepInfo, - /* [out] */ UINT *puArgErr); - - /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Capabilities )( - IDXEffect * This, - /* [retval][out] */ long *pVal); - - /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Progress )( - IDXEffect * This, - /* [retval][out] */ float *pVal); - - /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Progress )( - IDXEffect * This, - /* [in] */ float newVal); - - /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_StepResolution )( - IDXEffect * This, - /* [retval][out] */ float *pVal); - - /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Duration )( - IDXEffect * This, - /* [retval][out] */ float *pVal); - - /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Duration )( - IDXEffect * This, - /* [in] */ float newVal); - - END_INTERFACE - } IDXEffectVtbl; - - interface IDXEffect - { - CONST_VTBL struct IDXEffectVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IDXEffect_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IDXEffect_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IDXEffect_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IDXEffect_GetTypeInfoCount(This,pctinfo) \ - (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) - -#define IDXEffect_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ - (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) - -#define IDXEffect_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ - (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) - -#define IDXEffect_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ - (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) - - -#define IDXEffect_get_Capabilities(This,pVal) \ - (This)->lpVtbl -> get_Capabilities(This,pVal) - -#define IDXEffect_get_Progress(This,pVal) \ - (This)->lpVtbl -> get_Progress(This,pVal) - -#define IDXEffect_put_Progress(This,newVal) \ - (This)->lpVtbl -> put_Progress(This,newVal) - -#define IDXEffect_get_StepResolution(This,pVal) \ - (This)->lpVtbl -> get_StepResolution(This,pVal) - -#define IDXEffect_get_Duration(This,pVal) \ - (This)->lpVtbl -> get_Duration(This,pVal) - -#define IDXEffect_put_Duration(This,newVal) \ - (This)->lpVtbl -> put_Duration(This,newVal) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -/* [id][propget] */ HRESULT STDMETHODCALLTYPE IDXEffect_get_Capabilities_Proxy( - IDXEffect * This, - /* [retval][out] */ long *pVal); - - -void __RPC_STUB IDXEffect_get_Capabilities_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [id][propget] */ HRESULT STDMETHODCALLTYPE IDXEffect_get_Progress_Proxy( - IDXEffect * This, - /* [retval][out] */ float *pVal); - - -void __RPC_STUB IDXEffect_get_Progress_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [id][propput] */ HRESULT STDMETHODCALLTYPE IDXEffect_put_Progress_Proxy( - IDXEffect * This, - /* [in] */ float newVal); - - -void __RPC_STUB IDXEffect_put_Progress_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [id][propget] */ HRESULT STDMETHODCALLTYPE IDXEffect_get_StepResolution_Proxy( - IDXEffect * This, - /* [retval][out] */ float *pVal); - - -void __RPC_STUB IDXEffect_get_StepResolution_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [id][propget] */ HRESULT STDMETHODCALLTYPE IDXEffect_get_Duration_Proxy( - IDXEffect * This, - /* [retval][out] */ float *pVal); - - -void __RPC_STUB IDXEffect_get_Duration_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [id][propput] */ HRESULT STDMETHODCALLTYPE IDXEffect_put_Duration_Proxy( - IDXEffect * This, - /* [in] */ float newVal); - - -void __RPC_STUB IDXEffect_put_Duration_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IDXEffect_INTERFACE_DEFINED__ */ - - -#ifndef __IDXLookupTable_INTERFACE_DEFINED__ -#define __IDXLookupTable_INTERFACE_DEFINED__ - -/* interface IDXLookupTable */ -/* [local][unique][helpstring][uuid][object] */ - - -EXTERN_C const IID IID_IDXLookupTable; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("01BAFC7F-9E63-11d1-9053-00C04FD9189D") - IDXLookupTable : public IDXBaseObject - { - public: - virtual HRESULT STDMETHODCALLTYPE GetTables( - /* [out] */ BYTE RedLUT[ 256 ], - /* [out] */ BYTE GreenLUT[ 256 ], - /* [out] */ BYTE BlueLUT[ 256 ], - /* [out] */ BYTE AlphaLUT[ 256 ]) = 0; - - virtual HRESULT STDMETHODCALLTYPE IsChannelIdentity( - /* [out] */ DXBASESAMPLE *pSampleBools) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetIndexValues( - /* [in] */ ULONG Index, - /* [out] */ DXBASESAMPLE *pSample) = 0; - - virtual HRESULT STDMETHODCALLTYPE ApplyTables( - /* [out][in] */ DXSAMPLE *pSamples, - /* [in] */ ULONG cSamples) = 0; - - }; - -#else /* C style interface */ - - typedef struct IDXLookupTableVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IDXLookupTable * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IDXLookupTable * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IDXLookupTable * This); - - HRESULT ( STDMETHODCALLTYPE *GetGenerationId )( - IDXLookupTable * This, - /* [out] */ ULONG *pID); - - HRESULT ( STDMETHODCALLTYPE *IncrementGenerationId )( - IDXLookupTable * This, - /* [in] */ BOOL bRefresh); - - HRESULT ( STDMETHODCALLTYPE *GetObjectSize )( - IDXLookupTable * This, - /* [out] */ ULONG *pcbSize); - - HRESULT ( STDMETHODCALLTYPE *GetTables )( - IDXLookupTable * This, - /* [out] */ BYTE RedLUT[ 256 ], - /* [out] */ BYTE GreenLUT[ 256 ], - /* [out] */ BYTE BlueLUT[ 256 ], - /* [out] */ BYTE AlphaLUT[ 256 ]); - - HRESULT ( STDMETHODCALLTYPE *IsChannelIdentity )( - IDXLookupTable * This, - /* [out] */ DXBASESAMPLE *pSampleBools); - - HRESULT ( STDMETHODCALLTYPE *GetIndexValues )( - IDXLookupTable * This, - /* [in] */ ULONG Index, - /* [out] */ DXBASESAMPLE *pSample); - - HRESULT ( STDMETHODCALLTYPE *ApplyTables )( - IDXLookupTable * This, - /* [out][in] */ DXSAMPLE *pSamples, - /* [in] */ ULONG cSamples); - - END_INTERFACE - } IDXLookupTableVtbl; - - interface IDXLookupTable - { - CONST_VTBL struct IDXLookupTableVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IDXLookupTable_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IDXLookupTable_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IDXLookupTable_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IDXLookupTable_GetGenerationId(This,pID) \ - (This)->lpVtbl -> GetGenerationId(This,pID) - -#define IDXLookupTable_IncrementGenerationId(This,bRefresh) \ - (This)->lpVtbl -> IncrementGenerationId(This,bRefresh) - -#define IDXLookupTable_GetObjectSize(This,pcbSize) \ - (This)->lpVtbl -> GetObjectSize(This,pcbSize) - - -#define IDXLookupTable_GetTables(This,RedLUT,GreenLUT,BlueLUT,AlphaLUT) \ - (This)->lpVtbl -> GetTables(This,RedLUT,GreenLUT,BlueLUT,AlphaLUT) - -#define IDXLookupTable_IsChannelIdentity(This,pSampleBools) \ - (This)->lpVtbl -> IsChannelIdentity(This,pSampleBools) - -#define IDXLookupTable_GetIndexValues(This,Index,pSample) \ - (This)->lpVtbl -> GetIndexValues(This,Index,pSample) - -#define IDXLookupTable_ApplyTables(This,pSamples,cSamples) \ - (This)->lpVtbl -> ApplyTables(This,pSamples,cSamples) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IDXLookupTable_GetTables_Proxy( - IDXLookupTable * This, - /* [out] */ BYTE RedLUT[ 256 ], - /* [out] */ BYTE GreenLUT[ 256 ], - /* [out] */ BYTE BlueLUT[ 256 ], - /* [out] */ BYTE AlphaLUT[ 256 ]); - - -void __RPC_STUB IDXLookupTable_GetTables_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IDXLookupTable_IsChannelIdentity_Proxy( - IDXLookupTable * This, - /* [out] */ DXBASESAMPLE *pSampleBools); - - -void __RPC_STUB IDXLookupTable_IsChannelIdentity_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IDXLookupTable_GetIndexValues_Proxy( - IDXLookupTable * This, - /* [in] */ ULONG Index, - /* [out] */ DXBASESAMPLE *pSample); - - -void __RPC_STUB IDXLookupTable_GetIndexValues_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IDXLookupTable_ApplyTables_Proxy( - IDXLookupTable * This, - /* [out][in] */ DXSAMPLE *pSamples, - /* [in] */ ULONG cSamples); - - -void __RPC_STUB IDXLookupTable_ApplyTables_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IDXLookupTable_INTERFACE_DEFINED__ */ - - -/* interface __MIDL_itf_dxtrans_0278 */ -/* [local] */ - -typedef struct DXRAWSURFACEINFO - { - BYTE *pFirstByte; - long lPitch; - ULONG Width; - ULONG Height; - const GUID *pPixelFormat; - HDC hdc; - DWORD dwColorKey; - DXBASESAMPLE *pPalette; - } DXRAWSURFACEINFO; - - - -extern RPC_IF_HANDLE __MIDL_itf_dxtrans_0278_v0_0_c_ifspec; -extern RPC_IF_HANDLE __MIDL_itf_dxtrans_0278_v0_0_s_ifspec; - -#ifndef __IDXRawSurface_INTERFACE_DEFINED__ -#define __IDXRawSurface_INTERFACE_DEFINED__ - -/* interface IDXRawSurface */ -/* [local][unique][helpstring][uuid][object] */ - - -EXTERN_C const IID IID_IDXRawSurface; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("09756C8A-D96A-11d1-9062-00C04FD9189D") - IDXRawSurface : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE GetSurfaceInfo( - DXRAWSURFACEINFO *pSurfaceInfo) = 0; - - }; - -#else /* C style interface */ - - typedef struct IDXRawSurfaceVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IDXRawSurface * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IDXRawSurface * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IDXRawSurface * This); - - HRESULT ( STDMETHODCALLTYPE *GetSurfaceInfo )( - IDXRawSurface * This, - DXRAWSURFACEINFO *pSurfaceInfo); - - END_INTERFACE - } IDXRawSurfaceVtbl; - - interface IDXRawSurface - { - CONST_VTBL struct IDXRawSurfaceVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IDXRawSurface_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IDXRawSurface_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IDXRawSurface_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IDXRawSurface_GetSurfaceInfo(This,pSurfaceInfo) \ - (This)->lpVtbl -> GetSurfaceInfo(This,pSurfaceInfo) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IDXRawSurface_GetSurfaceInfo_Proxy( - IDXRawSurface * This, - DXRAWSURFACEINFO *pSurfaceInfo); - - -void __RPC_STUB IDXRawSurface_GetSurfaceInfo_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IDXRawSurface_INTERFACE_DEFINED__ */ - - -#ifndef __IHTMLDXTransform_INTERFACE_DEFINED__ -#define __IHTMLDXTransform_INTERFACE_DEFINED__ - -/* interface IHTMLDXTransform */ -/* [local][unique][helpstring][uuid][object] */ - - -EXTERN_C const IID IID_IHTMLDXTransform; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("30E2AB7D-4FDD-4159-B7EA-DC722BF4ADE5") - IHTMLDXTransform : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE SetHostUrl( - BSTR bstrHostUrl) = 0; - - }; - -#else /* C style interface */ - - typedef struct IHTMLDXTransformVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IHTMLDXTransform * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IHTMLDXTransform * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IHTMLDXTransform * This); - - HRESULT ( STDMETHODCALLTYPE *SetHostUrl )( - IHTMLDXTransform * This, - BSTR bstrHostUrl); - - END_INTERFACE - } IHTMLDXTransformVtbl; - - interface IHTMLDXTransform - { - CONST_VTBL struct IHTMLDXTransformVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IHTMLDXTransform_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IHTMLDXTransform_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IHTMLDXTransform_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IHTMLDXTransform_SetHostUrl(This,bstrHostUrl) \ - (This)->lpVtbl -> SetHostUrl(This,bstrHostUrl) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IHTMLDXTransform_SetHostUrl_Proxy( - IHTMLDXTransform * This, - BSTR bstrHostUrl); - - -void __RPC_STUB IHTMLDXTransform_SetHostUrl_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IHTMLDXTransform_INTERFACE_DEFINED__ */ - - -/* interface __MIDL_itf_dxtrans_0280 */ -/* [local] */ - -typedef -enum DXTFILTER_STATUS - { DXTFILTER_STATUS_Stopped = 0, - DXTFILTER_STATUS_Applied = DXTFILTER_STATUS_Stopped + 1, - DXTFILTER_STATUS_Playing = DXTFILTER_STATUS_Applied + 1, - DXTFILTER_STATUS_MAX = DXTFILTER_STATUS_Playing + 1 - } DXTFILTER_STATUS; - -typedef -enum DXTFILTER_DISPID - { DISPID_DXTFilter_Percent = 1, - DISPID_DXTFilter_Duration = DISPID_DXTFilter_Percent + 1, - DISPID_DXTFilter_Enabled = DISPID_DXTFilter_Duration + 1, - DISPID_DXTFilter_Status = DISPID_DXTFilter_Enabled + 1, - DISPID_DXTFilter_Apply = DISPID_DXTFilter_Status + 1, - DISPID_DXTFilter_Play = DISPID_DXTFilter_Apply + 1, - DISPID_DXTFilter_Stop = DISPID_DXTFilter_Play + 1, - DISPID_DXTFilter_MAX = DISPID_DXTFilter_Stop + 1 - } DXTFILTER_DISPID; - - - -extern RPC_IF_HANDLE __MIDL_itf_dxtrans_0280_v0_0_c_ifspec; -extern RPC_IF_HANDLE __MIDL_itf_dxtrans_0280_v0_0_s_ifspec; - -#ifndef __ICSSFilterDispatch_INTERFACE_DEFINED__ -#define __ICSSFilterDispatch_INTERFACE_DEFINED__ - -/* interface ICSSFilterDispatch */ -/* [dual][unique][helpstring][uuid][object] */ - - -EXTERN_C const IID IID_ICSSFilterDispatch; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("9519152B-9484-4A6C-B6A7-4F25E92D6C6B") - ICSSFilterDispatch : public IDispatch - { - public: - virtual /* [id][propget] */ HRESULT STDMETHODCALLTYPE get_Percent( - /* [retval][out] */ float *pVal) = 0; - - virtual /* [id][propput] */ HRESULT STDMETHODCALLTYPE put_Percent( - /* [in] */ float newVal) = 0; - - virtual /* [id][propget] */ HRESULT STDMETHODCALLTYPE get_Duration( - /* [retval][out] */ float *pVal) = 0; - - virtual /* [id][propput] */ HRESULT STDMETHODCALLTYPE put_Duration( - /* [in] */ float newVal) = 0; - - virtual /* [id][propget] */ HRESULT STDMETHODCALLTYPE get_Enabled( - /* [retval][out] */ VARIANT_BOOL *pfVal) = 0; - - virtual /* [id][propput] */ HRESULT STDMETHODCALLTYPE put_Enabled( - /* [in] */ VARIANT_BOOL fVal) = 0; - - virtual /* [id][propget] */ HRESULT STDMETHODCALLTYPE get_Status( - /* [retval][out] */ DXTFILTER_STATUS *peVal) = 0; - - virtual /* [id] */ HRESULT STDMETHODCALLTYPE Apply( void) = 0; - - virtual /* [id] */ HRESULT STDMETHODCALLTYPE Play( - /* [optional][in] */ VARIANT varDuration) = 0; - - virtual /* [id] */ HRESULT STDMETHODCALLTYPE Stop( void) = 0; - - }; - -#else /* C style interface */ - - typedef struct ICSSFilterDispatchVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - ICSSFilterDispatch * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - ICSSFilterDispatch * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - ICSSFilterDispatch * This); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( - ICSSFilterDispatch * This, - /* [out] */ UINT *pctinfo); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( - ICSSFilterDispatch * This, - /* [in] */ UINT iTInfo, - /* [in] */ LCID lcid, - /* [out] */ ITypeInfo **ppTInfo); - - HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( - ICSSFilterDispatch * This, - /* [in] */ REFIID riid, - /* [size_is][in] */ LPOLESTR *rgszNames, - /* [in] */ UINT cNames, - /* [in] */ LCID lcid, - /* [size_is][out] */ DISPID *rgDispId); - - /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( - ICSSFilterDispatch * This, - /* [in] */ DISPID dispIdMember, - /* [in] */ REFIID riid, - /* [in] */ LCID lcid, - /* [in] */ WORD wFlags, - /* [out][in] */ DISPPARAMS *pDispParams, - /* [out] */ VARIANT *pVarResult, - /* [out] */ EXCEPINFO *pExcepInfo, - /* [out] */ UINT *puArgErr); - - /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Percent )( - ICSSFilterDispatch * This, - /* [retval][out] */ float *pVal); - - /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Percent )( - ICSSFilterDispatch * This, - /* [in] */ float newVal); - - /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Duration )( - ICSSFilterDispatch * This, - /* [retval][out] */ float *pVal); - - /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Duration )( - ICSSFilterDispatch * This, - /* [in] */ float newVal); - - /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Enabled )( - ICSSFilterDispatch * This, - /* [retval][out] */ VARIANT_BOOL *pfVal); - - /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Enabled )( - ICSSFilterDispatch * This, - /* [in] */ VARIANT_BOOL fVal); - - /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Status )( - ICSSFilterDispatch * This, - /* [retval][out] */ DXTFILTER_STATUS *peVal); - - /* [id] */ HRESULT ( STDMETHODCALLTYPE *Apply )( - ICSSFilterDispatch * This); - - /* [id] */ HRESULT ( STDMETHODCALLTYPE *Play )( - ICSSFilterDispatch * This, - /* [optional][in] */ VARIANT varDuration); - - /* [id] */ HRESULT ( STDMETHODCALLTYPE *Stop )( - ICSSFilterDispatch * This); - - END_INTERFACE - } ICSSFilterDispatchVtbl; - - interface ICSSFilterDispatch - { - CONST_VTBL struct ICSSFilterDispatchVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define ICSSFilterDispatch_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define ICSSFilterDispatch_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define ICSSFilterDispatch_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define ICSSFilterDispatch_GetTypeInfoCount(This,pctinfo) \ - (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) - -#define ICSSFilterDispatch_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ - (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) - -#define ICSSFilterDispatch_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ - (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) - -#define ICSSFilterDispatch_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ - (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) - - -#define ICSSFilterDispatch_get_Percent(This,pVal) \ - (This)->lpVtbl -> get_Percent(This,pVal) - -#define ICSSFilterDispatch_put_Percent(This,newVal) \ - (This)->lpVtbl -> put_Percent(This,newVal) - -#define ICSSFilterDispatch_get_Duration(This,pVal) \ - (This)->lpVtbl -> get_Duration(This,pVal) - -#define ICSSFilterDispatch_put_Duration(This,newVal) \ - (This)->lpVtbl -> put_Duration(This,newVal) - -#define ICSSFilterDispatch_get_Enabled(This,pfVal) \ - (This)->lpVtbl -> get_Enabled(This,pfVal) - -#define ICSSFilterDispatch_put_Enabled(This,fVal) \ - (This)->lpVtbl -> put_Enabled(This,fVal) - -#define ICSSFilterDispatch_get_Status(This,peVal) \ - (This)->lpVtbl -> get_Status(This,peVal) - -#define ICSSFilterDispatch_Apply(This) \ - (This)->lpVtbl -> Apply(This) - -#define ICSSFilterDispatch_Play(This,varDuration) \ - (This)->lpVtbl -> Play(This,varDuration) - -#define ICSSFilterDispatch_Stop(This) \ - (This)->lpVtbl -> Stop(This) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -/* [id][propget] */ HRESULT STDMETHODCALLTYPE ICSSFilterDispatch_get_Percent_Proxy( - ICSSFilterDispatch * This, - /* [retval][out] */ float *pVal); - - -void __RPC_STUB ICSSFilterDispatch_get_Percent_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [id][propput] */ HRESULT STDMETHODCALLTYPE ICSSFilterDispatch_put_Percent_Proxy( - ICSSFilterDispatch * This, - /* [in] */ float newVal); - - -void __RPC_STUB ICSSFilterDispatch_put_Percent_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [id][propget] */ HRESULT STDMETHODCALLTYPE ICSSFilterDispatch_get_Duration_Proxy( - ICSSFilterDispatch * This, - /* [retval][out] */ float *pVal); - - -void __RPC_STUB ICSSFilterDispatch_get_Duration_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [id][propput] */ HRESULT STDMETHODCALLTYPE ICSSFilterDispatch_put_Duration_Proxy( - ICSSFilterDispatch * This, - /* [in] */ float newVal); - - -void __RPC_STUB ICSSFilterDispatch_put_Duration_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [id][propget] */ HRESULT STDMETHODCALLTYPE ICSSFilterDispatch_get_Enabled_Proxy( - ICSSFilterDispatch * This, - /* [retval][out] */ VARIANT_BOOL *pfVal); - - -void __RPC_STUB ICSSFilterDispatch_get_Enabled_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [id][propput] */ HRESULT STDMETHODCALLTYPE ICSSFilterDispatch_put_Enabled_Proxy( - ICSSFilterDispatch * This, - /* [in] */ VARIANT_BOOL fVal); - - -void __RPC_STUB ICSSFilterDispatch_put_Enabled_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [id][propget] */ HRESULT STDMETHODCALLTYPE ICSSFilterDispatch_get_Status_Proxy( - ICSSFilterDispatch * This, - /* [retval][out] */ DXTFILTER_STATUS *peVal); - - -void __RPC_STUB ICSSFilterDispatch_get_Status_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [id] */ HRESULT STDMETHODCALLTYPE ICSSFilterDispatch_Apply_Proxy( - ICSSFilterDispatch * This); - - -void __RPC_STUB ICSSFilterDispatch_Apply_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [id] */ HRESULT STDMETHODCALLTYPE ICSSFilterDispatch_Play_Proxy( - ICSSFilterDispatch * This, - /* [optional][in] */ VARIANT varDuration); - - -void __RPC_STUB ICSSFilterDispatch_Play_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [id] */ HRESULT STDMETHODCALLTYPE ICSSFilterDispatch_Stop_Proxy( - ICSSFilterDispatch * This); - - -void __RPC_STUB ICSSFilterDispatch_Stop_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __ICSSFilterDispatch_INTERFACE_DEFINED__ */ - - - -#ifndef __DXTRANSLib_LIBRARY_DEFINED__ -#define __DXTRANSLib_LIBRARY_DEFINED__ - -/* library DXTRANSLib */ -/* [helpstring][version][uuid] */ - - -EXTERN_C const IID LIBID_DXTRANSLib; - -EXTERN_C const CLSID CLSID_DXTransformFactory; - -#ifdef __cplusplus - -class DECLSPEC_UUID("D1FE6762-FC48-11D0-883A-3C8B00C10000") -DXTransformFactory; -#endif - -EXTERN_C const CLSID CLSID_DXTaskManager; - -#ifdef __cplusplus - -class DECLSPEC_UUID("4CB26C03-FF93-11d0-817E-0000F87557DB") -DXTaskManager; -#endif - -EXTERN_C const CLSID CLSID_DXTScale; - -#ifdef __cplusplus - -class DECLSPEC_UUID("555278E2-05DB-11D1-883A-3C8B00C10000") -DXTScale; -#endif - -EXTERN_C const CLSID CLSID_DXSurface; - -#ifdef __cplusplus - -class DECLSPEC_UUID("0E890F83-5F79-11D1-9043-00C04FD9189D") -DXSurface; -#endif - -EXTERN_C const CLSID CLSID_DXSurfaceModifier; - -#ifdef __cplusplus - -class DECLSPEC_UUID("3E669F1D-9C23-11d1-9053-00C04FD9189D") -DXSurfaceModifier; -#endif - -EXTERN_C const CLSID CLSID_DXGradient; - -#ifdef __cplusplus - -class DECLSPEC_UUID("C6365470-F667-11d1-9067-00C04FD9189D") -DXGradient; -#endif - -EXTERN_C const CLSID CLSID_DXTFilter; - -#ifdef __cplusplus - -class DECLSPEC_UUID("385A91BC-1E8A-4e4a-A7A6-F4FC1E6CA1BD") -DXTFilter; -#endif -#endif /* __DXTRANSLib_LIBRARY_DEFINED__ */ - -/* Additional Prototypes for ALL interfaces */ - -unsigned long __RPC_USER VARIANT_UserSize( unsigned long *, unsigned long , VARIANT * ); -unsigned char * __RPC_USER VARIANT_UserMarshal( unsigned long *, unsigned char *, VARIANT * ); -unsigned char * __RPC_USER VARIANT_UserUnmarshal(unsigned long *, unsigned char *, VARIANT * ); -void __RPC_USER VARIANT_UserFree( unsigned long *, VARIANT * ); - -/* end of Additional Prototypes */ - -#ifdef __cplusplus -} -#endif - -#endif - - + +#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 dxtrans.idl: + Oicf, W1, Zp8, env=Win32 (32b run) + protocol : dce , ms_ext, c_ext + 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 version is high enough to compile this file*/ +#ifndef __REQUIRED_RPCNDR_H_VERSION__ +#define __REQUIRED_RPCNDR_H_VERSION__ 440 +#endif + +#include "rpc.h" +#include "rpcndr.h" + +#ifndef __RPCNDR_H_VERSION__ +#error this stub requires an updated version of +#endif // __RPCNDR_H_VERSION__ + +#ifndef COM_NO_WINDOWS_H +#include "windows.h" +#include "ole2.h" +#endif /*COM_NO_WINDOWS_H*/ + +#ifndef __dxtrans_h__ +#define __dxtrans_h__ + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#pragma once +#endif + +/* Forward Declarations */ + +#ifndef __IDXBaseObject_FWD_DEFINED__ +#define __IDXBaseObject_FWD_DEFINED__ +typedef interface IDXBaseObject IDXBaseObject; +#endif /* __IDXBaseObject_FWD_DEFINED__ */ + + +#ifndef __IDXTransformFactory_FWD_DEFINED__ +#define __IDXTransformFactory_FWD_DEFINED__ +typedef interface IDXTransformFactory IDXTransformFactory; +#endif /* __IDXTransformFactory_FWD_DEFINED__ */ + + +#ifndef __IDXTransform_FWD_DEFINED__ +#define __IDXTransform_FWD_DEFINED__ +typedef interface IDXTransform IDXTransform; +#endif /* __IDXTransform_FWD_DEFINED__ */ + + +#ifndef __IDXSurfacePick_FWD_DEFINED__ +#define __IDXSurfacePick_FWD_DEFINED__ +typedef interface IDXSurfacePick IDXSurfacePick; +#endif /* __IDXSurfacePick_FWD_DEFINED__ */ + + +#ifndef __IDXTBindHost_FWD_DEFINED__ +#define __IDXTBindHost_FWD_DEFINED__ +typedef interface IDXTBindHost IDXTBindHost; +#endif /* __IDXTBindHost_FWD_DEFINED__ */ + + +#ifndef __IDXTaskManager_FWD_DEFINED__ +#define __IDXTaskManager_FWD_DEFINED__ +typedef interface IDXTaskManager IDXTaskManager; +#endif /* __IDXTaskManager_FWD_DEFINED__ */ + + +#ifndef __IDXSurfaceFactory_FWD_DEFINED__ +#define __IDXSurfaceFactory_FWD_DEFINED__ +typedef interface IDXSurfaceFactory IDXSurfaceFactory; +#endif /* __IDXSurfaceFactory_FWD_DEFINED__ */ + + +#ifndef __IDXSurfaceModifier_FWD_DEFINED__ +#define __IDXSurfaceModifier_FWD_DEFINED__ +typedef interface IDXSurfaceModifier IDXSurfaceModifier; +#endif /* __IDXSurfaceModifier_FWD_DEFINED__ */ + + +#ifndef __IDXSurface_FWD_DEFINED__ +#define __IDXSurface_FWD_DEFINED__ +typedef interface IDXSurface IDXSurface; +#endif /* __IDXSurface_FWD_DEFINED__ */ + + +#ifndef __IDXSurfaceInit_FWD_DEFINED__ +#define __IDXSurfaceInit_FWD_DEFINED__ +typedef interface IDXSurfaceInit IDXSurfaceInit; +#endif /* __IDXSurfaceInit_FWD_DEFINED__ */ + + +#ifndef __IDXARGBSurfaceInit_FWD_DEFINED__ +#define __IDXARGBSurfaceInit_FWD_DEFINED__ +typedef interface IDXARGBSurfaceInit IDXARGBSurfaceInit; +#endif /* __IDXARGBSurfaceInit_FWD_DEFINED__ */ + + +#ifndef __IDXARGBReadPtr_FWD_DEFINED__ +#define __IDXARGBReadPtr_FWD_DEFINED__ +typedef interface IDXARGBReadPtr IDXARGBReadPtr; +#endif /* __IDXARGBReadPtr_FWD_DEFINED__ */ + + +#ifndef __IDXARGBReadWritePtr_FWD_DEFINED__ +#define __IDXARGBReadWritePtr_FWD_DEFINED__ +typedef interface IDXARGBReadWritePtr IDXARGBReadWritePtr; +#endif /* __IDXARGBReadWritePtr_FWD_DEFINED__ */ + + +#ifndef __IDXDCLock_FWD_DEFINED__ +#define __IDXDCLock_FWD_DEFINED__ +typedef interface IDXDCLock IDXDCLock; +#endif /* __IDXDCLock_FWD_DEFINED__ */ + + +#ifndef __IDXTScaleOutput_FWD_DEFINED__ +#define __IDXTScaleOutput_FWD_DEFINED__ +typedef interface IDXTScaleOutput IDXTScaleOutput; +#endif /* __IDXTScaleOutput_FWD_DEFINED__ */ + + +#ifndef __IDXGradient_FWD_DEFINED__ +#define __IDXGradient_FWD_DEFINED__ +typedef interface IDXGradient IDXGradient; +#endif /* __IDXGradient_FWD_DEFINED__ */ + + +#ifndef __IDXTScale_FWD_DEFINED__ +#define __IDXTScale_FWD_DEFINED__ +typedef interface IDXTScale IDXTScale; +#endif /* __IDXTScale_FWD_DEFINED__ */ + + +#ifndef __IDXEffect_FWD_DEFINED__ +#define __IDXEffect_FWD_DEFINED__ +typedef interface IDXEffect IDXEffect; +#endif /* __IDXEffect_FWD_DEFINED__ */ + + +#ifndef __IDXLookupTable_FWD_DEFINED__ +#define __IDXLookupTable_FWD_DEFINED__ +typedef interface IDXLookupTable IDXLookupTable; +#endif /* __IDXLookupTable_FWD_DEFINED__ */ + + +#ifndef __IDXRawSurface_FWD_DEFINED__ +#define __IDXRawSurface_FWD_DEFINED__ +typedef interface IDXRawSurface IDXRawSurface; +#endif /* __IDXRawSurface_FWD_DEFINED__ */ + + +#ifndef __IHTMLDXTransform_FWD_DEFINED__ +#define __IHTMLDXTransform_FWD_DEFINED__ +typedef interface IHTMLDXTransform IHTMLDXTransform; +#endif /* __IHTMLDXTransform_FWD_DEFINED__ */ + + +#ifndef __ICSSFilterDispatch_FWD_DEFINED__ +#define __ICSSFilterDispatch_FWD_DEFINED__ +typedef interface ICSSFilterDispatch ICSSFilterDispatch; +#endif /* __ICSSFilterDispatch_FWD_DEFINED__ */ + + +#ifndef __DXTransformFactory_FWD_DEFINED__ +#define __DXTransformFactory_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class DXTransformFactory DXTransformFactory; +#else +typedef struct DXTransformFactory DXTransformFactory; +#endif /* __cplusplus */ + +#endif /* __DXTransformFactory_FWD_DEFINED__ */ + + +#ifndef __DXTaskManager_FWD_DEFINED__ +#define __DXTaskManager_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class DXTaskManager DXTaskManager; +#else +typedef struct DXTaskManager DXTaskManager; +#endif /* __cplusplus */ + +#endif /* __DXTaskManager_FWD_DEFINED__ */ + + +#ifndef __DXTScale_FWD_DEFINED__ +#define __DXTScale_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class DXTScale DXTScale; +#else +typedef struct DXTScale DXTScale; +#endif /* __cplusplus */ + +#endif /* __DXTScale_FWD_DEFINED__ */ + + +#ifndef __DXSurface_FWD_DEFINED__ +#define __DXSurface_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class DXSurface DXSurface; +#else +typedef struct DXSurface DXSurface; +#endif /* __cplusplus */ + +#endif /* __DXSurface_FWD_DEFINED__ */ + + +#ifndef __DXSurfaceModifier_FWD_DEFINED__ +#define __DXSurfaceModifier_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class DXSurfaceModifier DXSurfaceModifier; +#else +typedef struct DXSurfaceModifier DXSurfaceModifier; +#endif /* __cplusplus */ + +#endif /* __DXSurfaceModifier_FWD_DEFINED__ */ + + +#ifndef __DXGradient_FWD_DEFINED__ +#define __DXGradient_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class DXGradient DXGradient; +#else +typedef struct DXGradient DXGradient; +#endif /* __cplusplus */ + +#endif /* __DXGradient_FWD_DEFINED__ */ + + +#ifndef __DXTFilter_FWD_DEFINED__ +#define __DXTFilter_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class DXTFilter DXTFilter; +#else +typedef struct DXTFilter DXTFilter; +#endif /* __cplusplus */ + +#endif /* __DXTFilter_FWD_DEFINED__ */ + + +/* header files for imported files */ +#include "oaidl.h" +#include "ocidl.h" +#include "comcat.h" + +#ifdef __cplusplus +extern "C"{ +#endif + +void * __RPC_USER MIDL_user_allocate(size_t); +void __RPC_USER MIDL_user_free( void * ); + +/* interface __MIDL_itf_dxtrans_0000 */ +/* [local] */ + +#include +#include +#include +#include +#ifndef __MINGW32_MAJOR_VERSION +#include +#endif +#if 0 +// Bogus definition used to make MIDL compiler happy +typedef void DDSURFACEDESC; + +typedef void D3DRMBOX; + +typedef void D3DVECTOR; + +typedef void D3DRMMATRIX4D; + +typedef void *LPSECURITY_ATTRIBUTES; + +#endif +#ifdef _DXTRANSIMPL + #define _DXTRANS_IMPL_EXT _declspec(dllexport) +#else + #define _DXTRANS_IMPL_EXT _declspec(dllimport) +#endif + + + + + + + + + + + + + + + + +// +// All GUIDs for DXTransform are declared in DXTGUID.C in the SDK include directory +// +EXTERN_C const GUID DDPF_RGB1; +EXTERN_C const GUID DDPF_RGB2; +EXTERN_C const GUID DDPF_RGB4; +EXTERN_C const GUID DDPF_RGB8; +EXTERN_C const GUID DDPF_RGB332; +EXTERN_C const GUID DDPF_ARGB4444; +EXTERN_C const GUID DDPF_RGB565; +EXTERN_C const GUID DDPF_BGR565; +EXTERN_C const GUID DDPF_RGB555; +EXTERN_C const GUID DDPF_ARGB1555; +EXTERN_C const GUID DDPF_RGB24; +EXTERN_C const GUID DDPF_BGR24; +EXTERN_C const GUID DDPF_RGB32; +EXTERN_C const GUID DDPF_BGR32; +EXTERN_C const GUID DDPF_ABGR32; +EXTERN_C const GUID DDPF_ARGB32; +EXTERN_C const GUID DDPF_PMARGB32; +EXTERN_C const GUID DDPF_A1; +EXTERN_C const GUID DDPF_A2; +EXTERN_C const GUID DDPF_A4; +EXTERN_C const GUID DDPF_A8; +EXTERN_C const GUID DDPF_Z8; +EXTERN_C const GUID DDPF_Z16; +EXTERN_C const GUID DDPF_Z24; +EXTERN_C const GUID DDPF_Z32; +// +// Component categories +// +EXTERN_C const GUID CATID_DXImageTransform; +EXTERN_C const GUID CATID_DX3DTransform; +EXTERN_C const GUID CATID_DXAuthoringTransform; +EXTERN_C const GUID CATID_DXSurface; +// +// Service IDs +// +EXTERN_C const GUID SID_SDirectDraw; +EXTERN_C const GUID SID_SDirect3DRM; +#define SID_SDXTaskManager CLSID_DXTaskManager +#define SID_SDXSurfaceFactory IID_IDXSurfaceFactory +#define SID_SDXTransformFactory IID_IDXTransformFactory +// +// DXTransforms Core Type Library Version Info +// +#define DXTRANS_TLB_MAJOR_VER 1 +#define DXTRANS_TLB_MINOR_VER 1 + + +extern RPC_IF_HANDLE __MIDL_itf_dxtrans_0000_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_dxtrans_0000_v0_0_s_ifspec; + +#ifndef __IDXBaseObject_INTERFACE_DEFINED__ +#define __IDXBaseObject_INTERFACE_DEFINED__ + +/* interface IDXBaseObject */ +/* [local][unique][helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IDXBaseObject; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("17B59B2B-9CC8-11d1-9053-00C04FD9189D") + IDXBaseObject : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE GetGenerationId( + /* [out] */ ULONG *pID) = 0; + + virtual HRESULT STDMETHODCALLTYPE IncrementGenerationId( + /* [in] */ BOOL bRefresh) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetObjectSize( + /* [out] */ ULONG *pcbSize) = 0; + + }; + +#else /* C style interface */ + + typedef struct IDXBaseObjectVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDXBaseObject * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDXBaseObject * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDXBaseObject * This); + + HRESULT ( STDMETHODCALLTYPE *GetGenerationId )( + IDXBaseObject * This, + /* [out] */ ULONG *pID); + + HRESULT ( STDMETHODCALLTYPE *IncrementGenerationId )( + IDXBaseObject * This, + /* [in] */ BOOL bRefresh); + + HRESULT ( STDMETHODCALLTYPE *GetObjectSize )( + IDXBaseObject * This, + /* [out] */ ULONG *pcbSize); + + END_INTERFACE + } IDXBaseObjectVtbl; + + interface IDXBaseObject + { + CONST_VTBL struct IDXBaseObjectVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDXBaseObject_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IDXBaseObject_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IDXBaseObject_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IDXBaseObject_GetGenerationId(This,pID) \ + (This)->lpVtbl -> GetGenerationId(This,pID) + +#define IDXBaseObject_IncrementGenerationId(This,bRefresh) \ + (This)->lpVtbl -> IncrementGenerationId(This,bRefresh) + +#define IDXBaseObject_GetObjectSize(This,pcbSize) \ + (This)->lpVtbl -> GetObjectSize(This,pcbSize) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IDXBaseObject_GetGenerationId_Proxy( + IDXBaseObject * This, + /* [out] */ ULONG *pID); + + +void __RPC_STUB IDXBaseObject_GetGenerationId_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDXBaseObject_IncrementGenerationId_Proxy( + IDXBaseObject * This, + /* [in] */ BOOL bRefresh); + + +void __RPC_STUB IDXBaseObject_IncrementGenerationId_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDXBaseObject_GetObjectSize_Proxy( + IDXBaseObject * This, + /* [out] */ ULONG *pcbSize); + + +void __RPC_STUB IDXBaseObject_GetObjectSize_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IDXBaseObject_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_dxtrans_0260 */ +/* [local] */ + +typedef +enum DXBNDID + { DXB_X = 0, + DXB_Y = 1, + DXB_Z = 2, + DXB_T = 3 + } DXBNDID; + +typedef +enum DXBNDTYPE + { DXBT_DISCRETE = 0, + DXBT_DISCRETE64 = DXBT_DISCRETE + 1, + DXBT_CONTINUOUS = DXBT_DISCRETE64 + 1, + DXBT_CONTINUOUS64 = DXBT_CONTINUOUS + 1 + } DXBNDTYPE; + +typedef struct DXDBND + { + long Min; + long Max; + } DXDBND; + +typedef DXDBND DXDBNDS[ 4 ]; + +typedef struct DXDBND64 + { + LONGLONG Min; + LONGLONG Max; + } DXDBND64; + +typedef DXDBND64 DXDBNDS64[ 4 ]; + +typedef struct DXCBND + { + float Min; + float Max; + } DXCBND; + +typedef DXCBND DXCBNDS[ 4 ]; + +typedef struct DXCBND64 + { + double Min; + double Max; + } DXCBND64; + +typedef DXCBND64 DXCBNDS64[ 4 ]; + +typedef struct DXBNDS + { + DXBNDTYPE eType; + /* [switch_is] */ /* [switch_type] */ union __MIDL___MIDL_itf_dxtrans_0260_0001 + { + /* [case()] */ DXDBND D[ 4 ]; + /* [case()] */ DXDBND64 LD[ 4 ]; + /* [case()] */ DXCBND C[ 4 ]; + /* [case()] */ DXCBND64 LC[ 4 ]; + } u; + } DXBNDS; + +typedef long DXDVEC[ 4 ]; + +typedef LONGLONG DXDVEC64[ 4 ]; + +typedef float DXCVEC[ 4 ]; + +typedef double DXCVEC64[ 4 ]; + +typedef struct DXVEC + { + DXBNDTYPE eType; + /* [switch_is] */ /* [switch_type] */ union __MIDL___MIDL_itf_dxtrans_0260_0002 + { + /* [case()] */ long D[ 4 ]; + /* [case()] */ LONGLONG LD[ 4 ]; + /* [case()] */ float C[ 4 ]; + /* [case()] */ double LC[ 4 ]; + } u; + } DXVEC; + + + +extern RPC_IF_HANDLE __MIDL_itf_dxtrans_0260_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_dxtrans_0260_v0_0_s_ifspec; + +#ifndef __IDXTransformFactory_INTERFACE_DEFINED__ +#define __IDXTransformFactory_INTERFACE_DEFINED__ + +/* interface IDXTransformFactory */ +/* [local][unique][helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IDXTransformFactory; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("6A950B2B-A971-11d1-81C8-0000F87557DB") + IDXTransformFactory : public IServiceProvider + { + public: + virtual HRESULT STDMETHODCALLTYPE SetService( + /* [in] */ REFGUID guidService, + /* [in] */ IUnknown *pUnkService, + /* [in] */ BOOL bWeakReference) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreateTransform( + /* [size_is][in] */ IUnknown **punkInputs, + /* [in] */ ULONG ulNumInputs, + /* [size_is][in] */ IUnknown **punkOutputs, + /* [in] */ ULONG ulNumOutputs, + /* [in] */ IPropertyBag *pInitProps, + /* [in] */ IErrorLog *pErrLog, + /* [in] */ REFCLSID TransCLSID, + /* [in] */ REFIID TransIID, + /* [iid_is][out] */ void **ppTransform) = 0; + + virtual HRESULT STDMETHODCALLTYPE InitializeTransform( + /* [in] */ IDXTransform *pTransform, + /* [size_is][in] */ IUnknown **punkInputs, + /* [in] */ ULONG ulNumInputs, + /* [size_is][in] */ IUnknown **punkOutputs, + /* [in] */ ULONG ulNumOutputs, + /* [in] */ IPropertyBag *pInitProps, + /* [in] */ IErrorLog *pErrLog) = 0; + + }; + +#else /* C style interface */ + + typedef struct IDXTransformFactoryVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDXTransformFactory * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDXTransformFactory * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDXTransformFactory * This); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *QueryService )( + IDXTransformFactory * This, + /* [in] */ REFGUID guidService, + /* [in] */ REFIID riid, + /* [out] */ void **ppvObject); + + HRESULT ( STDMETHODCALLTYPE *SetService )( + IDXTransformFactory * This, + /* [in] */ REFGUID guidService, + /* [in] */ IUnknown *pUnkService, + /* [in] */ BOOL bWeakReference); + + HRESULT ( STDMETHODCALLTYPE *CreateTransform )( + IDXTransformFactory * This, + /* [size_is][in] */ IUnknown **punkInputs, + /* [in] */ ULONG ulNumInputs, + /* [size_is][in] */ IUnknown **punkOutputs, + /* [in] */ ULONG ulNumOutputs, + /* [in] */ IPropertyBag *pInitProps, + /* [in] */ IErrorLog *pErrLog, + /* [in] */ REFCLSID TransCLSID, + /* [in] */ REFIID TransIID, + /* [iid_is][out] */ void **ppTransform); + + HRESULT ( STDMETHODCALLTYPE *InitializeTransform )( + IDXTransformFactory * This, + /* [in] */ IDXTransform *pTransform, + /* [size_is][in] */ IUnknown **punkInputs, + /* [in] */ ULONG ulNumInputs, + /* [size_is][in] */ IUnknown **punkOutputs, + /* [in] */ ULONG ulNumOutputs, + /* [in] */ IPropertyBag *pInitProps, + /* [in] */ IErrorLog *pErrLog); + + END_INTERFACE + } IDXTransformFactoryVtbl; + + interface IDXTransformFactory + { + CONST_VTBL struct IDXTransformFactoryVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDXTransformFactory_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IDXTransformFactory_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IDXTransformFactory_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IDXTransformFactory_QueryService(This,guidService,riid,ppvObject) \ + (This)->lpVtbl -> QueryService(This,guidService,riid,ppvObject) + + +#define IDXTransformFactory_SetService(This,guidService,pUnkService,bWeakReference) \ + (This)->lpVtbl -> SetService(This,guidService,pUnkService,bWeakReference) + +#define IDXTransformFactory_CreateTransform(This,punkInputs,ulNumInputs,punkOutputs,ulNumOutputs,pInitProps,pErrLog,TransCLSID,TransIID,ppTransform) \ + (This)->lpVtbl -> CreateTransform(This,punkInputs,ulNumInputs,punkOutputs,ulNumOutputs,pInitProps,pErrLog,TransCLSID,TransIID,ppTransform) + +#define IDXTransformFactory_InitializeTransform(This,pTransform,punkInputs,ulNumInputs,punkOutputs,ulNumOutputs,pInitProps,pErrLog) \ + (This)->lpVtbl -> InitializeTransform(This,pTransform,punkInputs,ulNumInputs,punkOutputs,ulNumOutputs,pInitProps,pErrLog) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IDXTransformFactory_SetService_Proxy( + IDXTransformFactory * This, + /* [in] */ REFGUID guidService, + /* [in] */ IUnknown *pUnkService, + /* [in] */ BOOL bWeakReference); + + +void __RPC_STUB IDXTransformFactory_SetService_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDXTransformFactory_CreateTransform_Proxy( + IDXTransformFactory * This, + /* [size_is][in] */ IUnknown **punkInputs, + /* [in] */ ULONG ulNumInputs, + /* [size_is][in] */ IUnknown **punkOutputs, + /* [in] */ ULONG ulNumOutputs, + /* [in] */ IPropertyBag *pInitProps, + /* [in] */ IErrorLog *pErrLog, + /* [in] */ REFCLSID TransCLSID, + /* [in] */ REFIID TransIID, + /* [iid_is][out] */ void **ppTransform); + + +void __RPC_STUB IDXTransformFactory_CreateTransform_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDXTransformFactory_InitializeTransform_Proxy( + IDXTransformFactory * This, + /* [in] */ IDXTransform *pTransform, + /* [size_is][in] */ IUnknown **punkInputs, + /* [in] */ ULONG ulNumInputs, + /* [size_is][in] */ IUnknown **punkOutputs, + /* [in] */ ULONG ulNumOutputs, + /* [in] */ IPropertyBag *pInitProps, + /* [in] */ IErrorLog *pErrLog); + + +void __RPC_STUB IDXTransformFactory_InitializeTransform_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IDXTransformFactory_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_dxtrans_0261 */ +/* [local] */ + +typedef +enum DXTMISCFLAGS + { DXTMF_BLEND_WITH_OUTPUT = 1L << 0, + DXTMF_DITHER_OUTPUT = 1L << 1, + DXTMF_OPTION_MASK = 0xffff, + DXTMF_VALID_OPTIONS = DXTMF_BLEND_WITH_OUTPUT | DXTMF_DITHER_OUTPUT, + DXTMF_BLEND_SUPPORTED = 1L << 16, + DXTMF_DITHER_SUPPORTED = 1L << 17, + DXTMF_INPLACE_OPERATION = 1L << 24, + DXTMF_BOUNDS_SUPPORTED = 1L << 25, + DXTMF_PLACEMENT_SUPPORTED = 1L << 26, + DXTMF_QUALITY_SUPPORTED = 1L << 27, + DXTMF_OPAQUE_RESULT = 1L << 28 + } DXTMISCFLAGS; + +typedef +enum DXINOUTINFOFLAGS + { DXINOUTF_OPTIONAL = 1L << 0 + } DXINOUTINFOFLAGS; + + + +extern RPC_IF_HANDLE __MIDL_itf_dxtrans_0261_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_dxtrans_0261_v0_0_s_ifspec; + +#ifndef __IDXTransform_INTERFACE_DEFINED__ +#define __IDXTransform_INTERFACE_DEFINED__ + +/* interface IDXTransform */ +/* [local][unique][helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IDXTransform; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("30A5FB78-E11F-11d1-9064-00C04FD9189D") + IDXTransform : public IDXBaseObject + { + public: + virtual HRESULT STDMETHODCALLTYPE Setup( + /* [size_is][in] */ IUnknown *const *punkInputs, + /* [in] */ ULONG ulNumInputs, + /* [size_is][in] */ IUnknown *const *punkOutputs, + /* [in] */ ULONG ulNumOutputs, + /* [in] */ DWORD dwFlags) = 0; + + virtual HRESULT STDMETHODCALLTYPE Execute( + /* [in] */ const GUID *pRequestID, + /* [in] */ const DXBNDS *pClipBnds, + /* [in] */ const DXVEC *pPlacement) = 0; + + virtual HRESULT STDMETHODCALLTYPE MapBoundsIn2Out( + /* [in] */ const DXBNDS *pInBounds, + /* [in] */ ULONG ulNumInBnds, + /* [in] */ ULONG ulOutIndex, + /* [out] */ DXBNDS *pOutBounds) = 0; + + virtual HRESULT STDMETHODCALLTYPE MapBoundsOut2In( + /* [in] */ ULONG ulOutIndex, + /* [in] */ const DXBNDS *pOutBounds, + /* [in] */ ULONG ulInIndex, + /* [out] */ DXBNDS *pInBounds) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetMiscFlags( + /* [in] */ DWORD dwMiscFlags) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetMiscFlags( + /* [out] */ DWORD *pdwMiscFlags) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetInOutInfo( + /* [in] */ BOOL bIsOutput, + /* [in] */ ULONG ulIndex, + /* [out] */ DWORD *pdwFlags, + /* [size_is][out] */ GUID *pIDs, + /* [out][in] */ ULONG *pcIDs, + /* [out] */ IUnknown **ppUnkCurrentObject) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetQuality( + /* [in] */ float fQuality) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetQuality( + /* [out] */ float *fQuality) = 0; + + }; + +#else /* C style interface */ + + typedef struct IDXTransformVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDXTransform * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDXTransform * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDXTransform * This); + + HRESULT ( STDMETHODCALLTYPE *GetGenerationId )( + IDXTransform * This, + /* [out] */ ULONG *pID); + + HRESULT ( STDMETHODCALLTYPE *IncrementGenerationId )( + IDXTransform * This, + /* [in] */ BOOL bRefresh); + + HRESULT ( STDMETHODCALLTYPE *GetObjectSize )( + IDXTransform * This, + /* [out] */ ULONG *pcbSize); + + HRESULT ( STDMETHODCALLTYPE *Setup )( + IDXTransform * This, + /* [size_is][in] */ IUnknown *const *punkInputs, + /* [in] */ ULONG ulNumInputs, + /* [size_is][in] */ IUnknown *const *punkOutputs, + /* [in] */ ULONG ulNumOutputs, + /* [in] */ DWORD dwFlags); + + HRESULT ( STDMETHODCALLTYPE *Execute )( + IDXTransform * This, + /* [in] */ const GUID *pRequestID, + /* [in] */ const DXBNDS *pClipBnds, + /* [in] */ const DXVEC *pPlacement); + + HRESULT ( STDMETHODCALLTYPE *MapBoundsIn2Out )( + IDXTransform * This, + /* [in] */ const DXBNDS *pInBounds, + /* [in] */ ULONG ulNumInBnds, + /* [in] */ ULONG ulOutIndex, + /* [out] */ DXBNDS *pOutBounds); + + HRESULT ( STDMETHODCALLTYPE *MapBoundsOut2In )( + IDXTransform * This, + /* [in] */ ULONG ulOutIndex, + /* [in] */ const DXBNDS *pOutBounds, + /* [in] */ ULONG ulInIndex, + /* [out] */ DXBNDS *pInBounds); + + HRESULT ( STDMETHODCALLTYPE *SetMiscFlags )( + IDXTransform * This, + /* [in] */ DWORD dwMiscFlags); + + HRESULT ( STDMETHODCALLTYPE *GetMiscFlags )( + IDXTransform * This, + /* [out] */ DWORD *pdwMiscFlags); + + HRESULT ( STDMETHODCALLTYPE *GetInOutInfo )( + IDXTransform * This, + /* [in] */ BOOL bIsOutput, + /* [in] */ ULONG ulIndex, + /* [out] */ DWORD *pdwFlags, + /* [size_is][out] */ GUID *pIDs, + /* [out][in] */ ULONG *pcIDs, + /* [out] */ IUnknown **ppUnkCurrentObject); + + HRESULT ( STDMETHODCALLTYPE *SetQuality )( + IDXTransform * This, + /* [in] */ float fQuality); + + HRESULT ( STDMETHODCALLTYPE *GetQuality )( + IDXTransform * This, + /* [out] */ float *fQuality); + + END_INTERFACE + } IDXTransformVtbl; + + interface IDXTransform + { + CONST_VTBL struct IDXTransformVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDXTransform_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IDXTransform_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IDXTransform_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IDXTransform_GetGenerationId(This,pID) \ + (This)->lpVtbl -> GetGenerationId(This,pID) + +#define IDXTransform_IncrementGenerationId(This,bRefresh) \ + (This)->lpVtbl -> IncrementGenerationId(This,bRefresh) + +#define IDXTransform_GetObjectSize(This,pcbSize) \ + (This)->lpVtbl -> GetObjectSize(This,pcbSize) + + +#define IDXTransform_Setup(This,punkInputs,ulNumInputs,punkOutputs,ulNumOutputs,dwFlags) \ + (This)->lpVtbl -> Setup(This,punkInputs,ulNumInputs,punkOutputs,ulNumOutputs,dwFlags) + +#define IDXTransform_Execute(This,pRequestID,pClipBnds,pPlacement) \ + (This)->lpVtbl -> Execute(This,pRequestID,pClipBnds,pPlacement) + +#define IDXTransform_MapBoundsIn2Out(This,pInBounds,ulNumInBnds,ulOutIndex,pOutBounds) \ + (This)->lpVtbl -> MapBoundsIn2Out(This,pInBounds,ulNumInBnds,ulOutIndex,pOutBounds) + +#define IDXTransform_MapBoundsOut2In(This,ulOutIndex,pOutBounds,ulInIndex,pInBounds) \ + (This)->lpVtbl -> MapBoundsOut2In(This,ulOutIndex,pOutBounds,ulInIndex,pInBounds) + +#define IDXTransform_SetMiscFlags(This,dwMiscFlags) \ + (This)->lpVtbl -> SetMiscFlags(This,dwMiscFlags) + +#define IDXTransform_GetMiscFlags(This,pdwMiscFlags) \ + (This)->lpVtbl -> GetMiscFlags(This,pdwMiscFlags) + +#define IDXTransform_GetInOutInfo(This,bIsOutput,ulIndex,pdwFlags,pIDs,pcIDs,ppUnkCurrentObject) \ + (This)->lpVtbl -> GetInOutInfo(This,bIsOutput,ulIndex,pdwFlags,pIDs,pcIDs,ppUnkCurrentObject) + +#define IDXTransform_SetQuality(This,fQuality) \ + (This)->lpVtbl -> SetQuality(This,fQuality) + +#define IDXTransform_GetQuality(This,fQuality) \ + (This)->lpVtbl -> GetQuality(This,fQuality) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IDXTransform_Setup_Proxy( + IDXTransform * This, + /* [size_is][in] */ IUnknown *const *punkInputs, + /* [in] */ ULONG ulNumInputs, + /* [size_is][in] */ IUnknown *const *punkOutputs, + /* [in] */ ULONG ulNumOutputs, + /* [in] */ DWORD dwFlags); + + +void __RPC_STUB IDXTransform_Setup_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDXTransform_Execute_Proxy( + IDXTransform * This, + /* [in] */ const GUID *pRequestID, + /* [in] */ const DXBNDS *pClipBnds, + /* [in] */ const DXVEC *pPlacement); + + +void __RPC_STUB IDXTransform_Execute_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDXTransform_MapBoundsIn2Out_Proxy( + IDXTransform * This, + /* [in] */ const DXBNDS *pInBounds, + /* [in] */ ULONG ulNumInBnds, + /* [in] */ ULONG ulOutIndex, + /* [out] */ DXBNDS *pOutBounds); + + +void __RPC_STUB IDXTransform_MapBoundsIn2Out_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDXTransform_MapBoundsOut2In_Proxy( + IDXTransform * This, + /* [in] */ ULONG ulOutIndex, + /* [in] */ const DXBNDS *pOutBounds, + /* [in] */ ULONG ulInIndex, + /* [out] */ DXBNDS *pInBounds); + + +void __RPC_STUB IDXTransform_MapBoundsOut2In_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDXTransform_SetMiscFlags_Proxy( + IDXTransform * This, + /* [in] */ DWORD dwMiscFlags); + + +void __RPC_STUB IDXTransform_SetMiscFlags_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDXTransform_GetMiscFlags_Proxy( + IDXTransform * This, + /* [out] */ DWORD *pdwMiscFlags); + + +void __RPC_STUB IDXTransform_GetMiscFlags_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDXTransform_GetInOutInfo_Proxy( + IDXTransform * This, + /* [in] */ BOOL bIsOutput, + /* [in] */ ULONG ulIndex, + /* [out] */ DWORD *pdwFlags, + /* [size_is][out] */ GUID *pIDs, + /* [out][in] */ ULONG *pcIDs, + /* [out] */ IUnknown **ppUnkCurrentObject); + + +void __RPC_STUB IDXTransform_GetInOutInfo_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDXTransform_SetQuality_Proxy( + IDXTransform * This, + /* [in] */ float fQuality); + + +void __RPC_STUB IDXTransform_SetQuality_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDXTransform_GetQuality_Proxy( + IDXTransform * This, + /* [out] */ float *fQuality); + + +void __RPC_STUB IDXTransform_GetQuality_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IDXTransform_INTERFACE_DEFINED__ */ + + +#ifndef __IDXSurfacePick_INTERFACE_DEFINED__ +#define __IDXSurfacePick_INTERFACE_DEFINED__ + +/* interface IDXSurfacePick */ +/* [local][unique][helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IDXSurfacePick; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("30A5FB79-E11F-11d1-9064-00C04FD9189D") + IDXSurfacePick : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE PointPick( + /* [in] */ const DXVEC *pPoint, + /* [out] */ ULONG *pulInputSurfaceIndex, + /* [out] */ DXVEC *pInputPoint) = 0; + + }; + +#else /* C style interface */ + + typedef struct IDXSurfacePickVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDXSurfacePick * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDXSurfacePick * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDXSurfacePick * This); + + HRESULT ( STDMETHODCALLTYPE *PointPick )( + IDXSurfacePick * This, + /* [in] */ const DXVEC *pPoint, + /* [out] */ ULONG *pulInputSurfaceIndex, + /* [out] */ DXVEC *pInputPoint); + + END_INTERFACE + } IDXSurfacePickVtbl; + + interface IDXSurfacePick + { + CONST_VTBL struct IDXSurfacePickVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDXSurfacePick_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IDXSurfacePick_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IDXSurfacePick_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IDXSurfacePick_PointPick(This,pPoint,pulInputSurfaceIndex,pInputPoint) \ + (This)->lpVtbl -> PointPick(This,pPoint,pulInputSurfaceIndex,pInputPoint) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IDXSurfacePick_PointPick_Proxy( + IDXSurfacePick * This, + /* [in] */ const DXVEC *pPoint, + /* [out] */ ULONG *pulInputSurfaceIndex, + /* [out] */ DXVEC *pInputPoint); + + +void __RPC_STUB IDXSurfacePick_PointPick_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IDXSurfacePick_INTERFACE_DEFINED__ */ + + +#ifndef __IDXTBindHost_INTERFACE_DEFINED__ +#define __IDXTBindHost_INTERFACE_DEFINED__ + +/* interface IDXTBindHost */ +/* [local][unique][helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IDXTBindHost; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("D26BCE55-E9DC-11d1-9066-00C04FD9189D") + IDXTBindHost : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE SetBindHost( + /* [in] */ IBindHost *pBindHost) = 0; + + }; + +#else /* C style interface */ + + typedef struct IDXTBindHostVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDXTBindHost * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDXTBindHost * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDXTBindHost * This); + + HRESULT ( STDMETHODCALLTYPE *SetBindHost )( + IDXTBindHost * This, + /* [in] */ IBindHost *pBindHost); + + END_INTERFACE + } IDXTBindHostVtbl; + + interface IDXTBindHost + { + CONST_VTBL struct IDXTBindHostVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDXTBindHost_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IDXTBindHost_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IDXTBindHost_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IDXTBindHost_SetBindHost(This,pBindHost) \ + (This)->lpVtbl -> SetBindHost(This,pBindHost) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IDXTBindHost_SetBindHost_Proxy( + IDXTBindHost * This, + /* [in] */ IBindHost *pBindHost); + + +void __RPC_STUB IDXTBindHost_SetBindHost_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IDXTBindHost_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_dxtrans_0264 */ +/* [local] */ + +typedef void __stdcall __stdcall DXTASKPROC( + void *pTaskData, + BOOL *pbContinueProcessing); + +typedef DXTASKPROC *PFNDXTASKPROC; + +typedef void __stdcall __stdcall DXAPCPROC( + DWORD dwData); + +typedef DXAPCPROC *PFNDXAPCPROC; + +#ifdef __cplusplus +typedef struct DXTMTASKINFO +{ + PFNDXTASKPROC pfnTaskProc; // Pointer to function to execute + PVOID pTaskData; // Pointer to argument data + PFNDXAPCPROC pfnCompletionAPC; // Pointer to completion APC proc + DWORD dwCompletionData; // Pointer to APC proc data + const GUID* pRequestID; // Used to identify groups of tasks +} DXTMTASKINFO; +#else +typedef struct DXTMTASKINFO + { + PVOID pfnTaskProc; + PVOID pTaskData; + PVOID pfnCompletionAPC; + DWORD dwCompletionData; + const GUID *pRequestID; + } DXTMTASKINFO; + +#endif + + +extern RPC_IF_HANDLE __MIDL_itf_dxtrans_0264_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_dxtrans_0264_v0_0_s_ifspec; + +#ifndef __IDXTaskManager_INTERFACE_DEFINED__ +#define __IDXTaskManager_INTERFACE_DEFINED__ + +/* interface IDXTaskManager */ +/* [local][unique][helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IDXTaskManager; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("254DBBC1-F922-11d0-883A-3C8B00C10000") + IDXTaskManager : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE QueryNumProcessors( + /* [out] */ ULONG *pulNumProc) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetThreadPoolSize( + /* [in] */ ULONG ulNumThreads) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetThreadPoolSize( + /* [out] */ ULONG *pulNumThreads) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetConcurrencyLimit( + /* [in] */ ULONG ulNumThreads) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetConcurrencyLimit( + /* [out] */ ULONG *pulNumThreads) = 0; + + virtual HRESULT STDMETHODCALLTYPE ScheduleTasks( + /* [in] */ DXTMTASKINFO TaskInfo[ ], + /* [in] */ HANDLE Events[ ], + /* [out] */ DWORD TaskIDs[ ], + /* [in] */ ULONG ulNumTasks, + /* [in] */ ULONG ulWaitPeriod) = 0; + + virtual HRESULT STDMETHODCALLTYPE TerminateTasks( + /* [in] */ DWORD TaskIDs[ ], + /* [in] */ ULONG ulCount, + /* [in] */ ULONG ulTimeOut) = 0; + + virtual HRESULT STDMETHODCALLTYPE TerminateRequest( + /* [in] */ REFIID RequestID, + /* [in] */ ULONG ulTimeOut) = 0; + + }; + +#else /* C style interface */ + + typedef struct IDXTaskManagerVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDXTaskManager * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDXTaskManager * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDXTaskManager * This); + + HRESULT ( STDMETHODCALLTYPE *QueryNumProcessors )( + IDXTaskManager * This, + /* [out] */ ULONG *pulNumProc); + + HRESULT ( STDMETHODCALLTYPE *SetThreadPoolSize )( + IDXTaskManager * This, + /* [in] */ ULONG ulNumThreads); + + HRESULT ( STDMETHODCALLTYPE *GetThreadPoolSize )( + IDXTaskManager * This, + /* [out] */ ULONG *pulNumThreads); + + HRESULT ( STDMETHODCALLTYPE *SetConcurrencyLimit )( + IDXTaskManager * This, + /* [in] */ ULONG ulNumThreads); + + HRESULT ( STDMETHODCALLTYPE *GetConcurrencyLimit )( + IDXTaskManager * This, + /* [out] */ ULONG *pulNumThreads); + + HRESULT ( STDMETHODCALLTYPE *ScheduleTasks )( + IDXTaskManager * This, + /* [in] */ DXTMTASKINFO TaskInfo[ ], + /* [in] */ HANDLE Events[ ], + /* [out] */ DWORD TaskIDs[ ], + /* [in] */ ULONG ulNumTasks, + /* [in] */ ULONG ulWaitPeriod); + + HRESULT ( STDMETHODCALLTYPE *TerminateTasks )( + IDXTaskManager * This, + /* [in] */ DWORD TaskIDs[ ], + /* [in] */ ULONG ulCount, + /* [in] */ ULONG ulTimeOut); + + HRESULT ( STDMETHODCALLTYPE *TerminateRequest )( + IDXTaskManager * This, + /* [in] */ REFIID RequestID, + /* [in] */ ULONG ulTimeOut); + + END_INTERFACE + } IDXTaskManagerVtbl; + + interface IDXTaskManager + { + CONST_VTBL struct IDXTaskManagerVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDXTaskManager_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IDXTaskManager_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IDXTaskManager_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IDXTaskManager_QueryNumProcessors(This,pulNumProc) \ + (This)->lpVtbl -> QueryNumProcessors(This,pulNumProc) + +#define IDXTaskManager_SetThreadPoolSize(This,ulNumThreads) \ + (This)->lpVtbl -> SetThreadPoolSize(This,ulNumThreads) + +#define IDXTaskManager_GetThreadPoolSize(This,pulNumThreads) \ + (This)->lpVtbl -> GetThreadPoolSize(This,pulNumThreads) + +#define IDXTaskManager_SetConcurrencyLimit(This,ulNumThreads) \ + (This)->lpVtbl -> SetConcurrencyLimit(This,ulNumThreads) + +#define IDXTaskManager_GetConcurrencyLimit(This,pulNumThreads) \ + (This)->lpVtbl -> GetConcurrencyLimit(This,pulNumThreads) + +#define IDXTaskManager_ScheduleTasks(This,TaskInfo,Events,TaskIDs,ulNumTasks,ulWaitPeriod) \ + (This)->lpVtbl -> ScheduleTasks(This,TaskInfo,Events,TaskIDs,ulNumTasks,ulWaitPeriod) + +#define IDXTaskManager_TerminateTasks(This,TaskIDs,ulCount,ulTimeOut) \ + (This)->lpVtbl -> TerminateTasks(This,TaskIDs,ulCount,ulTimeOut) + +#define IDXTaskManager_TerminateRequest(This,RequestID,ulTimeOut) \ + (This)->lpVtbl -> TerminateRequest(This,RequestID,ulTimeOut) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IDXTaskManager_QueryNumProcessors_Proxy( + IDXTaskManager * This, + /* [out] */ ULONG *pulNumProc); + + +void __RPC_STUB IDXTaskManager_QueryNumProcessors_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDXTaskManager_SetThreadPoolSize_Proxy( + IDXTaskManager * This, + /* [in] */ ULONG ulNumThreads); + + +void __RPC_STUB IDXTaskManager_SetThreadPoolSize_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDXTaskManager_GetThreadPoolSize_Proxy( + IDXTaskManager * This, + /* [out] */ ULONG *pulNumThreads); + + +void __RPC_STUB IDXTaskManager_GetThreadPoolSize_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDXTaskManager_SetConcurrencyLimit_Proxy( + IDXTaskManager * This, + /* [in] */ ULONG ulNumThreads); + + +void __RPC_STUB IDXTaskManager_SetConcurrencyLimit_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDXTaskManager_GetConcurrencyLimit_Proxy( + IDXTaskManager * This, + /* [out] */ ULONG *pulNumThreads); + + +void __RPC_STUB IDXTaskManager_GetConcurrencyLimit_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDXTaskManager_ScheduleTasks_Proxy( + IDXTaskManager * This, + /* [in] */ DXTMTASKINFO TaskInfo[ ], + /* [in] */ HANDLE Events[ ], + /* [out] */ DWORD TaskIDs[ ], + /* [in] */ ULONG ulNumTasks, + /* [in] */ ULONG ulWaitPeriod); + + +void __RPC_STUB IDXTaskManager_ScheduleTasks_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDXTaskManager_TerminateTasks_Proxy( + IDXTaskManager * This, + /* [in] */ DWORD TaskIDs[ ], + /* [in] */ ULONG ulCount, + /* [in] */ ULONG ulTimeOut); + + +void __RPC_STUB IDXTaskManager_TerminateTasks_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDXTaskManager_TerminateRequest_Proxy( + IDXTaskManager * This, + /* [in] */ REFIID RequestID, + /* [in] */ ULONG ulTimeOut); + + +void __RPC_STUB IDXTaskManager_TerminateRequest_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IDXTaskManager_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_dxtrans_0265 */ +/* [local] */ + +#ifdef __cplusplus +///////////////////////////////////////////////////// + +class DXBASESAMPLE; +class DXSAMPLE; +class DXPMSAMPLE; + +///////////////////////////////////////////////////// + +class DXBASESAMPLE +{ +public: + BYTE Blue; + BYTE Green; + BYTE Red; + BYTE Alpha; + DXBASESAMPLE() {} + DXBASESAMPLE(const BYTE alpha, const BYTE red, const BYTE green, const BYTE blue) : + Alpha(alpha), + Red(red), + Green(green), + Blue(blue) {} + DXBASESAMPLE(const DWORD val) { *this = (*(DXBASESAMPLE *)&val); } + operator DWORD () const {return *((DWORD *)this); } + DWORD operator=(const DWORD val) { return *this = *((DXBASESAMPLE *)&val); } +}; // DXBASESAMPLE + +///////////////////////////////////////////////////// + +class DXSAMPLE : public DXBASESAMPLE +{ +public: + DXSAMPLE() {} + DXSAMPLE(const BYTE alpha, const BYTE red, const BYTE green, const BYTE blue) : + DXBASESAMPLE(alpha, red, green, blue) {} + DXSAMPLE(const DWORD val) { *this = (*(DXSAMPLE *)&val); } + operator DWORD () const {return *((DWORD *)this); } + DWORD operator=(const DWORD val) { return *this = *((DXSAMPLE *)&val); } + operator DXPMSAMPLE() const; +}; // DXSAMPLE + +///////////////////////////////////////////////////// + +class DXPMSAMPLE : public DXBASESAMPLE +{ +public: + DXPMSAMPLE() {} + DXPMSAMPLE(const BYTE alpha, const BYTE red, const BYTE green, const BYTE blue) : + DXBASESAMPLE(alpha, red, green, blue) {} + DXPMSAMPLE(const DWORD val) { *this = (*(DXPMSAMPLE *)&val); } + operator DWORD () const {return *((DWORD *)this); } + DWORD operator=(const DWORD val) { return *this = *((DXPMSAMPLE *)&val); } + operator DXSAMPLE() const; +}; // DXPMSAMPLE + +// +// The following cast operators are to prevent a direct assignment of a DXSAMPLE to a DXPMSAMPLE +// +inline DXSAMPLE::operator DXPMSAMPLE() const { return *((DXPMSAMPLE *)this); } +inline DXPMSAMPLE::operator DXSAMPLE() const { return *((DXSAMPLE *)this); } +#else // !__cplusplus +typedef struct DXBASESAMPLE + { + BYTE Blue; + BYTE Green; + BYTE Red; + BYTE Alpha; + } DXBASESAMPLE; + +typedef struct DXSAMPLE + { + BYTE Blue; + BYTE Green; + BYTE Red; + BYTE Alpha; + } DXSAMPLE; + +typedef struct DXPMSAMPLE + { + BYTE Blue; + BYTE Green; + BYTE Red; + BYTE Alpha; + } DXPMSAMPLE; + +#endif // !__cplusplus +typedef +enum DXRUNTYPE + { DXRUNTYPE_CLEAR = 0, + DXRUNTYPE_OPAQUE = 1, + DXRUNTYPE_TRANS = 2, + DXRUNTYPE_UNKNOWN = 3 + } DXRUNTYPE; + +#define DX_MAX_RUN_INFO_COUNT ( 128 ) + +// Ignore the definition used by MIDL for TLB generation +#if 0 +typedef struct DXRUNINFO + { + ULONG Bitfields; + } DXRUNINFO; + +#endif // 0 +typedef struct DXRUNINFO +{ + ULONG Type : 2; // Type + ULONG Count : 30; // Number of samples in run +} DXRUNINFO; +typedef +enum DXSFCREATE + { DXSF_FORMAT_IS_CLSID = 1L << 0, + DXSF_NO_LAZY_DDRAW_LOCK = 1L << 1 + } DXSFCREATE; + +typedef +enum DXBLTOPTIONS + { DXBOF_DO_OVER = 1L << 0, + DXBOF_DITHER = 1L << 1 + } DXBLTOPTIONS; + + + +extern RPC_IF_HANDLE __MIDL_itf_dxtrans_0265_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_dxtrans_0265_v0_0_s_ifspec; + +#ifndef __IDXSurfaceFactory_INTERFACE_DEFINED__ +#define __IDXSurfaceFactory_INTERFACE_DEFINED__ + +/* interface IDXSurfaceFactory */ +/* [local][unique][helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IDXSurfaceFactory; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("144946F5-C4D4-11d1-81D1-0000F87557DB") + IDXSurfaceFactory : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE CreateSurface( + /* [in] */ IUnknown *pDirectDraw, + /* [in] */ const DDSURFACEDESC *pDDSurfaceDesc, + /* [in] */ const GUID *pFormatID, + /* [in] */ const DXBNDS *pBounds, + /* [in] */ DWORD dwFlags, + /* [in] */ IUnknown *punkOuter, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppDXSurface) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreateFromDDSurface( + /* [in] */ IUnknown *pDDrawSurface, + /* [in] */ const GUID *pFormatID, + /* [in] */ DWORD dwFlags, + /* [in] */ IUnknown *punkOuter, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppDXSurface) = 0; + + virtual HRESULT STDMETHODCALLTYPE LoadImage( + /* [in] */ const LPWSTR pszFileName, + /* [in] */ IUnknown *pDirectDraw, + /* [in] */ const DDSURFACEDESC *pDDSurfaceDesc, + /* [in] */ const GUID *pFormatID, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppDXSurface) = 0; + + virtual HRESULT STDMETHODCALLTYPE LoadImageFromStream( + /* [in] */ IStream *pStream, + /* [in] */ IUnknown *pDirectDraw, + /* [in] */ const DDSURFACEDESC *pDDSurfaceDesc, + /* [in] */ const GUID *pFormatID, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppDXSurface) = 0; + + virtual HRESULT STDMETHODCALLTYPE CopySurfaceToNewFormat( + /* [in] */ IDXSurface *pSrc, + /* [in] */ IUnknown *pDirectDraw, + /* [in] */ const DDSURFACEDESC *pDDSurfaceDesc, + /* [in] */ const GUID *pDestFormatID, + /* [out] */ IDXSurface **ppNewSurface) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreateD3DRMTexture( + /* [in] */ IDXSurface *pSrc, + /* [in] */ IUnknown *pDirectDraw, + /* [in] */ IUnknown *pD3DRM3, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppTexture3) = 0; + + virtual HRESULT STDMETHODCALLTYPE BitBlt( + /* [in] */ IDXSurface *pDest, + /* [in] */ const DXVEC *pPlacement, + /* [in] */ IDXSurface *pSrc, + /* [in] */ const DXBNDS *pClipBounds, + /* [in] */ DWORD dwFlags) = 0; + + }; + +#else /* C style interface */ + + typedef struct IDXSurfaceFactoryVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDXSurfaceFactory * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDXSurfaceFactory * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDXSurfaceFactory * This); + + HRESULT ( STDMETHODCALLTYPE *CreateSurface )( + IDXSurfaceFactory * This, + /* [in] */ IUnknown *pDirectDraw, + /* [in] */ const DDSURFACEDESC *pDDSurfaceDesc, + /* [in] */ const GUID *pFormatID, + /* [in] */ const DXBNDS *pBounds, + /* [in] */ DWORD dwFlags, + /* [in] */ IUnknown *punkOuter, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppDXSurface); + + HRESULT ( STDMETHODCALLTYPE *CreateFromDDSurface )( + IDXSurfaceFactory * This, + /* [in] */ IUnknown *pDDrawSurface, + /* [in] */ const GUID *pFormatID, + /* [in] */ DWORD dwFlags, + /* [in] */ IUnknown *punkOuter, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppDXSurface); + + HRESULT ( STDMETHODCALLTYPE *LoadImage )( + IDXSurfaceFactory * This, + /* [in] */ const LPWSTR pszFileName, + /* [in] */ IUnknown *pDirectDraw, + /* [in] */ const DDSURFACEDESC *pDDSurfaceDesc, + /* [in] */ const GUID *pFormatID, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppDXSurface); + + HRESULT ( STDMETHODCALLTYPE *LoadImageFromStream )( + IDXSurfaceFactory * This, + /* [in] */ IStream *pStream, + /* [in] */ IUnknown *pDirectDraw, + /* [in] */ const DDSURFACEDESC *pDDSurfaceDesc, + /* [in] */ const GUID *pFormatID, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppDXSurface); + + HRESULT ( STDMETHODCALLTYPE *CopySurfaceToNewFormat )( + IDXSurfaceFactory * This, + /* [in] */ IDXSurface *pSrc, + /* [in] */ IUnknown *pDirectDraw, + /* [in] */ const DDSURFACEDESC *pDDSurfaceDesc, + /* [in] */ const GUID *pDestFormatID, + /* [out] */ IDXSurface **ppNewSurface); + + HRESULT ( STDMETHODCALLTYPE *CreateD3DRMTexture )( + IDXSurfaceFactory * This, + /* [in] */ IDXSurface *pSrc, + /* [in] */ IUnknown *pDirectDraw, + /* [in] */ IUnknown *pD3DRM3, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppTexture3); + + HRESULT ( STDMETHODCALLTYPE *BitBlt )( + IDXSurfaceFactory * This, + /* [in] */ IDXSurface *pDest, + /* [in] */ const DXVEC *pPlacement, + /* [in] */ IDXSurface *pSrc, + /* [in] */ const DXBNDS *pClipBounds, + /* [in] */ DWORD dwFlags); + + END_INTERFACE + } IDXSurfaceFactoryVtbl; + + interface IDXSurfaceFactory + { + CONST_VTBL struct IDXSurfaceFactoryVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDXSurfaceFactory_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IDXSurfaceFactory_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IDXSurfaceFactory_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IDXSurfaceFactory_CreateSurface(This,pDirectDraw,pDDSurfaceDesc,pFormatID,pBounds,dwFlags,punkOuter,riid,ppDXSurface) \ + (This)->lpVtbl -> CreateSurface(This,pDirectDraw,pDDSurfaceDesc,pFormatID,pBounds,dwFlags,punkOuter,riid,ppDXSurface) + +#define IDXSurfaceFactory_CreateFromDDSurface(This,pDDrawSurface,pFormatID,dwFlags,punkOuter,riid,ppDXSurface) \ + (This)->lpVtbl -> CreateFromDDSurface(This,pDDrawSurface,pFormatID,dwFlags,punkOuter,riid,ppDXSurface) + +#define IDXSurfaceFactory_LoadImage(This,pszFileName,pDirectDraw,pDDSurfaceDesc,pFormatID,riid,ppDXSurface) \ + (This)->lpVtbl -> LoadImage(This,pszFileName,pDirectDraw,pDDSurfaceDesc,pFormatID,riid,ppDXSurface) + +#define IDXSurfaceFactory_LoadImageFromStream(This,pStream,pDirectDraw,pDDSurfaceDesc,pFormatID,riid,ppDXSurface) \ + (This)->lpVtbl -> LoadImageFromStream(This,pStream,pDirectDraw,pDDSurfaceDesc,pFormatID,riid,ppDXSurface) + +#define IDXSurfaceFactory_CopySurfaceToNewFormat(This,pSrc,pDirectDraw,pDDSurfaceDesc,pDestFormatID,ppNewSurface) \ + (This)->lpVtbl -> CopySurfaceToNewFormat(This,pSrc,pDirectDraw,pDDSurfaceDesc,pDestFormatID,ppNewSurface) + +#define IDXSurfaceFactory_CreateD3DRMTexture(This,pSrc,pDirectDraw,pD3DRM3,riid,ppTexture3) \ + (This)->lpVtbl -> CreateD3DRMTexture(This,pSrc,pDirectDraw,pD3DRM3,riid,ppTexture3) + +#define IDXSurfaceFactory_BitBlt(This,pDest,pPlacement,pSrc,pClipBounds,dwFlags) \ + (This)->lpVtbl -> BitBlt(This,pDest,pPlacement,pSrc,pClipBounds,dwFlags) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IDXSurfaceFactory_CreateSurface_Proxy( + IDXSurfaceFactory * This, + /* [in] */ IUnknown *pDirectDraw, + /* [in] */ const DDSURFACEDESC *pDDSurfaceDesc, + /* [in] */ const GUID *pFormatID, + /* [in] */ const DXBNDS *pBounds, + /* [in] */ DWORD dwFlags, + /* [in] */ IUnknown *punkOuter, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppDXSurface); + + +void __RPC_STUB IDXSurfaceFactory_CreateSurface_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDXSurfaceFactory_CreateFromDDSurface_Proxy( + IDXSurfaceFactory * This, + /* [in] */ IUnknown *pDDrawSurface, + /* [in] */ const GUID *pFormatID, + /* [in] */ DWORD dwFlags, + /* [in] */ IUnknown *punkOuter, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppDXSurface); + + +void __RPC_STUB IDXSurfaceFactory_CreateFromDDSurface_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDXSurfaceFactory_LoadImage_Proxy( + IDXSurfaceFactory * This, + /* [in] */ const LPWSTR pszFileName, + /* [in] */ IUnknown *pDirectDraw, + /* [in] */ const DDSURFACEDESC *pDDSurfaceDesc, + /* [in] */ const GUID *pFormatID, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppDXSurface); + + +void __RPC_STUB IDXSurfaceFactory_LoadImage_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDXSurfaceFactory_LoadImageFromStream_Proxy( + IDXSurfaceFactory * This, + /* [in] */ IStream *pStream, + /* [in] */ IUnknown *pDirectDraw, + /* [in] */ const DDSURFACEDESC *pDDSurfaceDesc, + /* [in] */ const GUID *pFormatID, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppDXSurface); + + +void __RPC_STUB IDXSurfaceFactory_LoadImageFromStream_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDXSurfaceFactory_CopySurfaceToNewFormat_Proxy( + IDXSurfaceFactory * This, + /* [in] */ IDXSurface *pSrc, + /* [in] */ IUnknown *pDirectDraw, + /* [in] */ const DDSURFACEDESC *pDDSurfaceDesc, + /* [in] */ const GUID *pDestFormatID, + /* [out] */ IDXSurface **ppNewSurface); + + +void __RPC_STUB IDXSurfaceFactory_CopySurfaceToNewFormat_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDXSurfaceFactory_CreateD3DRMTexture_Proxy( + IDXSurfaceFactory * This, + /* [in] */ IDXSurface *pSrc, + /* [in] */ IUnknown *pDirectDraw, + /* [in] */ IUnknown *pD3DRM3, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppTexture3); + + +void __RPC_STUB IDXSurfaceFactory_CreateD3DRMTexture_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDXSurfaceFactory_BitBlt_Proxy( + IDXSurfaceFactory * This, + /* [in] */ IDXSurface *pDest, + /* [in] */ const DXVEC *pPlacement, + /* [in] */ IDXSurface *pSrc, + /* [in] */ const DXBNDS *pClipBounds, + /* [in] */ DWORD dwFlags); + + +void __RPC_STUB IDXSurfaceFactory_BitBlt_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IDXSurfaceFactory_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_dxtrans_0266 */ +/* [local] */ + +typedef +enum DXSURFMODCOMPOP + { DXSURFMOD_COMP_OVER = 0, + DXSURFMOD_COMP_ALPHA_MASK = 1, + DXSURFMOD_COMP_MAX_VALID = 1 + } DXSURFMODCOMPOP; + + + +extern RPC_IF_HANDLE __MIDL_itf_dxtrans_0266_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_dxtrans_0266_v0_0_s_ifspec; + +#ifndef __IDXSurfaceModifier_INTERFACE_DEFINED__ +#define __IDXSurfaceModifier_INTERFACE_DEFINED__ + +/* interface IDXSurfaceModifier */ +/* [local][unique][helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IDXSurfaceModifier; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("9EA3B637-C37D-11d1-905E-00C04FD9189D") + IDXSurfaceModifier : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE SetFillColor( + /* [in] */ DXSAMPLE Color) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetFillColor( + /* [out] */ DXSAMPLE *pColor) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetBounds( + /* [in] */ const DXBNDS *pBounds) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetBackground( + /* [in] */ IDXSurface *pSurface) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetBackground( + /* [out] */ IDXSurface **ppSurface) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetCompositeOperation( + /* [in] */ DXSURFMODCOMPOP CompOp) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetCompositeOperation( + /* [out] */ DXSURFMODCOMPOP *pCompOp) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetForeground( + /* [in] */ IDXSurface *pSurface, + /* [in] */ BOOL bTile, + /* [in] */ const POINT *pOrigin) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetForeground( + /* [out] */ IDXSurface **ppSurface, + /* [out] */ BOOL *pbTile, + /* [out] */ POINT *pOrigin) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetOpacity( + /* [in] */ float Opacity) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetOpacity( + /* [out] */ float *pOpacity) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetLookup( + /* [in] */ IDXLookupTable *pLookupTable) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetLookup( + /* [out] */ IDXLookupTable **ppLookupTable) = 0; + + }; + +#else /* C style interface */ + + typedef struct IDXSurfaceModifierVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDXSurfaceModifier * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDXSurfaceModifier * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDXSurfaceModifier * This); + + HRESULT ( STDMETHODCALLTYPE *SetFillColor )( + IDXSurfaceModifier * This, + /* [in] */ DXSAMPLE Color); + + HRESULT ( STDMETHODCALLTYPE *GetFillColor )( + IDXSurfaceModifier * This, + /* [out] */ DXSAMPLE *pColor); + + HRESULT ( STDMETHODCALLTYPE *SetBounds )( + IDXSurfaceModifier * This, + /* [in] */ const DXBNDS *pBounds); + + HRESULT ( STDMETHODCALLTYPE *SetBackground )( + IDXSurfaceModifier * This, + /* [in] */ IDXSurface *pSurface); + + HRESULT ( STDMETHODCALLTYPE *GetBackground )( + IDXSurfaceModifier * This, + /* [out] */ IDXSurface **ppSurface); + + HRESULT ( STDMETHODCALLTYPE *SetCompositeOperation )( + IDXSurfaceModifier * This, + /* [in] */ DXSURFMODCOMPOP CompOp); + + HRESULT ( STDMETHODCALLTYPE *GetCompositeOperation )( + IDXSurfaceModifier * This, + /* [out] */ DXSURFMODCOMPOP *pCompOp); + + HRESULT ( STDMETHODCALLTYPE *SetForeground )( + IDXSurfaceModifier * This, + /* [in] */ IDXSurface *pSurface, + /* [in] */ BOOL bTile, + /* [in] */ const POINT *pOrigin); + + HRESULT ( STDMETHODCALLTYPE *GetForeground )( + IDXSurfaceModifier * This, + /* [out] */ IDXSurface **ppSurface, + /* [out] */ BOOL *pbTile, + /* [out] */ POINT *pOrigin); + + HRESULT ( STDMETHODCALLTYPE *SetOpacity )( + IDXSurfaceModifier * This, + /* [in] */ float Opacity); + + HRESULT ( STDMETHODCALLTYPE *GetOpacity )( + IDXSurfaceModifier * This, + /* [out] */ float *pOpacity); + + HRESULT ( STDMETHODCALLTYPE *SetLookup )( + IDXSurfaceModifier * This, + /* [in] */ IDXLookupTable *pLookupTable); + + HRESULT ( STDMETHODCALLTYPE *GetLookup )( + IDXSurfaceModifier * This, + /* [out] */ IDXLookupTable **ppLookupTable); + + END_INTERFACE + } IDXSurfaceModifierVtbl; + + interface IDXSurfaceModifier + { + CONST_VTBL struct IDXSurfaceModifierVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDXSurfaceModifier_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IDXSurfaceModifier_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IDXSurfaceModifier_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IDXSurfaceModifier_SetFillColor(This,Color) \ + (This)->lpVtbl -> SetFillColor(This,Color) + +#define IDXSurfaceModifier_GetFillColor(This,pColor) \ + (This)->lpVtbl -> GetFillColor(This,pColor) + +#define IDXSurfaceModifier_SetBounds(This,pBounds) \ + (This)->lpVtbl -> SetBounds(This,pBounds) + +#define IDXSurfaceModifier_SetBackground(This,pSurface) \ + (This)->lpVtbl -> SetBackground(This,pSurface) + +#define IDXSurfaceModifier_GetBackground(This,ppSurface) \ + (This)->lpVtbl -> GetBackground(This,ppSurface) + +#define IDXSurfaceModifier_SetCompositeOperation(This,CompOp) \ + (This)->lpVtbl -> SetCompositeOperation(This,CompOp) + +#define IDXSurfaceModifier_GetCompositeOperation(This,pCompOp) \ + (This)->lpVtbl -> GetCompositeOperation(This,pCompOp) + +#define IDXSurfaceModifier_SetForeground(This,pSurface,bTile,pOrigin) \ + (This)->lpVtbl -> SetForeground(This,pSurface,bTile,pOrigin) + +#define IDXSurfaceModifier_GetForeground(This,ppSurface,pbTile,pOrigin) \ + (This)->lpVtbl -> GetForeground(This,ppSurface,pbTile,pOrigin) + +#define IDXSurfaceModifier_SetOpacity(This,Opacity) \ + (This)->lpVtbl -> SetOpacity(This,Opacity) + +#define IDXSurfaceModifier_GetOpacity(This,pOpacity) \ + (This)->lpVtbl -> GetOpacity(This,pOpacity) + +#define IDXSurfaceModifier_SetLookup(This,pLookupTable) \ + (This)->lpVtbl -> SetLookup(This,pLookupTable) + +#define IDXSurfaceModifier_GetLookup(This,ppLookupTable) \ + (This)->lpVtbl -> GetLookup(This,ppLookupTable) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IDXSurfaceModifier_SetFillColor_Proxy( + IDXSurfaceModifier * This, + /* [in] */ DXSAMPLE Color); + + +void __RPC_STUB IDXSurfaceModifier_SetFillColor_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDXSurfaceModifier_GetFillColor_Proxy( + IDXSurfaceModifier * This, + /* [out] */ DXSAMPLE *pColor); + + +void __RPC_STUB IDXSurfaceModifier_GetFillColor_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDXSurfaceModifier_SetBounds_Proxy( + IDXSurfaceModifier * This, + /* [in] */ const DXBNDS *pBounds); + + +void __RPC_STUB IDXSurfaceModifier_SetBounds_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDXSurfaceModifier_SetBackground_Proxy( + IDXSurfaceModifier * This, + /* [in] */ IDXSurface *pSurface); + + +void __RPC_STUB IDXSurfaceModifier_SetBackground_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDXSurfaceModifier_GetBackground_Proxy( + IDXSurfaceModifier * This, + /* [out] */ IDXSurface **ppSurface); + + +void __RPC_STUB IDXSurfaceModifier_GetBackground_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDXSurfaceModifier_SetCompositeOperation_Proxy( + IDXSurfaceModifier * This, + /* [in] */ DXSURFMODCOMPOP CompOp); + + +void __RPC_STUB IDXSurfaceModifier_SetCompositeOperation_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDXSurfaceModifier_GetCompositeOperation_Proxy( + IDXSurfaceModifier * This, + /* [out] */ DXSURFMODCOMPOP *pCompOp); + + +void __RPC_STUB IDXSurfaceModifier_GetCompositeOperation_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDXSurfaceModifier_SetForeground_Proxy( + IDXSurfaceModifier * This, + /* [in] */ IDXSurface *pSurface, + /* [in] */ BOOL bTile, + /* [in] */ const POINT *pOrigin); + + +void __RPC_STUB IDXSurfaceModifier_SetForeground_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDXSurfaceModifier_GetForeground_Proxy( + IDXSurfaceModifier * This, + /* [out] */ IDXSurface **ppSurface, + /* [out] */ BOOL *pbTile, + /* [out] */ POINT *pOrigin); + + +void __RPC_STUB IDXSurfaceModifier_GetForeground_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDXSurfaceModifier_SetOpacity_Proxy( + IDXSurfaceModifier * This, + /* [in] */ float Opacity); + + +void __RPC_STUB IDXSurfaceModifier_SetOpacity_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDXSurfaceModifier_GetOpacity_Proxy( + IDXSurfaceModifier * This, + /* [out] */ float *pOpacity); + + +void __RPC_STUB IDXSurfaceModifier_GetOpacity_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDXSurfaceModifier_SetLookup_Proxy( + IDXSurfaceModifier * This, + /* [in] */ IDXLookupTable *pLookupTable); + + +void __RPC_STUB IDXSurfaceModifier_SetLookup_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDXSurfaceModifier_GetLookup_Proxy( + IDXSurfaceModifier * This, + /* [out] */ IDXLookupTable **ppLookupTable); + + +void __RPC_STUB IDXSurfaceModifier_GetLookup_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IDXSurfaceModifier_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_dxtrans_0267 */ +/* [local] */ + +typedef +enum DXSAMPLEFORMATENUM + { DXPF_FLAGSMASK = 0xffff0000, + DXPF_NONPREMULT = 0x10000, + DXPF_TRANSPARENCY = 0x20000, + DXPF_TRANSLUCENCY = 0x40000, + DXPF_2BITERROR = 0x200000, + DXPF_3BITERROR = 0x300000, + DXPF_4BITERROR = 0x400000, + DXPF_5BITERROR = 0x500000, + DXPF_ERRORMASK = 0x700000, + DXPF_NONSTANDARD = 0, + DXPF_PMARGB32 = 1 | DXPF_TRANSPARENCY | DXPF_TRANSLUCENCY, + DXPF_ARGB32 = 2 | DXPF_NONPREMULT | DXPF_TRANSPARENCY | DXPF_TRANSLUCENCY, + DXPF_ARGB4444 = 3 | DXPF_NONPREMULT | DXPF_TRANSPARENCY | DXPF_TRANSLUCENCY | DXPF_4BITERROR, + DXPF_A8 = 4 | DXPF_TRANSPARENCY | DXPF_TRANSLUCENCY, + DXPF_RGB32 = 5, + DXPF_RGB24 = 6, + DXPF_RGB565 = 7 | DXPF_3BITERROR, + DXPF_RGB555 = 8 | DXPF_3BITERROR, + DXPF_RGB8 = 9 | DXPF_5BITERROR, + DXPF_ARGB1555 = 10 | DXPF_TRANSPARENCY | DXPF_3BITERROR, + DXPF_RGB32_CK = DXPF_RGB32 | DXPF_TRANSPARENCY, + DXPF_RGB24_CK = DXPF_RGB24 | DXPF_TRANSPARENCY, + DXPF_RGB555_CK = DXPF_RGB555 | DXPF_TRANSPARENCY, + DXPF_RGB565_CK = DXPF_RGB565 | DXPF_TRANSPARENCY, + DXPF_RGB8_CK = DXPF_RGB8 | DXPF_TRANSPARENCY + } DXSAMPLEFORMATENUM; + +typedef +enum DXLOCKSURF + { DXLOCKF_READ = 0, + DXLOCKF_READWRITE = 1 << 0, + DXLOCKF_EXISTINGINFOONLY = 1 << 1, + DXLOCKF_WANTRUNINFO = 1 << 2, + DXLOCKF_NONPREMULT = 1 << 16, + DXLOCKF_VALIDFLAGS = DXLOCKF_READWRITE | DXLOCKF_EXISTINGINFOONLY | DXLOCKF_WANTRUNINFO | DXLOCKF_NONPREMULT + } DXLOCKSURF; + +typedef +enum DXSURFSTATUS + { DXSURF_TRANSIENT = 1 << 0, + DXSURF_READONLY = 1 << 1, + DXSURF_VALIDFLAGS = DXSURF_TRANSIENT | DXSURF_READONLY + } DXSURFSTATUS; + + + +extern RPC_IF_HANDLE __MIDL_itf_dxtrans_0267_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_dxtrans_0267_v0_0_s_ifspec; + +#ifndef __IDXSurface_INTERFACE_DEFINED__ +#define __IDXSurface_INTERFACE_DEFINED__ + +/* interface IDXSurface */ +/* [local][unique][helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IDXSurface; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("B39FD73F-E139-11d1-9065-00C04FD9189D") + IDXSurface : public IDXBaseObject + { + public: + virtual HRESULT STDMETHODCALLTYPE GetPixelFormat( + /* [out] */ GUID *pFormatID, + /* [out] */ DXSAMPLEFORMATENUM *pSampleFormatEnum) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetBounds( + /* [out] */ DXBNDS *pBounds) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetStatusFlags( + /* [out] */ DWORD *pdwStatusFlags) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetStatusFlags( + /* [in] */ DWORD dwStatusFlags) = 0; + + virtual HRESULT STDMETHODCALLTYPE LockSurface( + /* [in] */ const DXBNDS *pBounds, + /* [in] */ ULONG ulTimeOut, + /* [in] */ DWORD dwFlags, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppPointer, + /* [out] */ ULONG *pulGenerationId) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetDirectDrawSurface( + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppSurface) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetColorKey( + DXSAMPLE *pColorKey) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetColorKey( + DXSAMPLE ColorKey) = 0; + + virtual HRESULT STDMETHODCALLTYPE LockSurfaceDC( + /* [in] */ const DXBNDS *pBounds, + /* [in] */ ULONG ulTimeOut, + /* [in] */ DWORD dwFlags, + /* [out] */ IDXDCLock **ppDCLock) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetAppData( + DWORD_PTR dwAppData) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetAppData( + DWORD_PTR *pdwAppData) = 0; + + }; + +#else /* C style interface */ + + typedef struct IDXSurfaceVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDXSurface * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDXSurface * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDXSurface * This); + + HRESULT ( STDMETHODCALLTYPE *GetGenerationId )( + IDXSurface * This, + /* [out] */ ULONG *pID); + + HRESULT ( STDMETHODCALLTYPE *IncrementGenerationId )( + IDXSurface * This, + /* [in] */ BOOL bRefresh); + + HRESULT ( STDMETHODCALLTYPE *GetObjectSize )( + IDXSurface * This, + /* [out] */ ULONG *pcbSize); + + HRESULT ( STDMETHODCALLTYPE *GetPixelFormat )( + IDXSurface * This, + /* [out] */ GUID *pFormatID, + /* [out] */ DXSAMPLEFORMATENUM *pSampleFormatEnum); + + HRESULT ( STDMETHODCALLTYPE *GetBounds )( + IDXSurface * This, + /* [out] */ DXBNDS *pBounds); + + HRESULT ( STDMETHODCALLTYPE *GetStatusFlags )( + IDXSurface * This, + /* [out] */ DWORD *pdwStatusFlags); + + HRESULT ( STDMETHODCALLTYPE *SetStatusFlags )( + IDXSurface * This, + /* [in] */ DWORD dwStatusFlags); + + HRESULT ( STDMETHODCALLTYPE *LockSurface )( + IDXSurface * This, + /* [in] */ const DXBNDS *pBounds, + /* [in] */ ULONG ulTimeOut, + /* [in] */ DWORD dwFlags, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppPointer, + /* [out] */ ULONG *pulGenerationId); + + HRESULT ( STDMETHODCALLTYPE *GetDirectDrawSurface )( + IDXSurface * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppSurface); + + HRESULT ( STDMETHODCALLTYPE *GetColorKey )( + IDXSurface * This, + DXSAMPLE *pColorKey); + + HRESULT ( STDMETHODCALLTYPE *SetColorKey )( + IDXSurface * This, + DXSAMPLE ColorKey); + + HRESULT ( STDMETHODCALLTYPE *LockSurfaceDC )( + IDXSurface * This, + /* [in] */ const DXBNDS *pBounds, + /* [in] */ ULONG ulTimeOut, + /* [in] */ DWORD dwFlags, + /* [out] */ IDXDCLock **ppDCLock); + + HRESULT ( STDMETHODCALLTYPE *SetAppData )( + IDXSurface * This, + DWORD_PTR dwAppData); + + HRESULT ( STDMETHODCALLTYPE *GetAppData )( + IDXSurface * This, + DWORD_PTR *pdwAppData); + + END_INTERFACE + } IDXSurfaceVtbl; + + interface IDXSurface + { + CONST_VTBL struct IDXSurfaceVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDXSurface_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IDXSurface_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IDXSurface_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IDXSurface_GetGenerationId(This,pID) \ + (This)->lpVtbl -> GetGenerationId(This,pID) + +#define IDXSurface_IncrementGenerationId(This,bRefresh) \ + (This)->lpVtbl -> IncrementGenerationId(This,bRefresh) + +#define IDXSurface_GetObjectSize(This,pcbSize) \ + (This)->lpVtbl -> GetObjectSize(This,pcbSize) + + +#define IDXSurface_GetPixelFormat(This,pFormatID,pSampleFormatEnum) \ + (This)->lpVtbl -> GetPixelFormat(This,pFormatID,pSampleFormatEnum) + +#define IDXSurface_GetBounds(This,pBounds) \ + (This)->lpVtbl -> GetBounds(This,pBounds) + +#define IDXSurface_GetStatusFlags(This,pdwStatusFlags) \ + (This)->lpVtbl -> GetStatusFlags(This,pdwStatusFlags) + +#define IDXSurface_SetStatusFlags(This,dwStatusFlags) \ + (This)->lpVtbl -> SetStatusFlags(This,dwStatusFlags) + +#define IDXSurface_LockSurface(This,pBounds,ulTimeOut,dwFlags,riid,ppPointer,pulGenerationId) \ + (This)->lpVtbl -> LockSurface(This,pBounds,ulTimeOut,dwFlags,riid,ppPointer,pulGenerationId) + +#define IDXSurface_GetDirectDrawSurface(This,riid,ppSurface) \ + (This)->lpVtbl -> GetDirectDrawSurface(This,riid,ppSurface) + +#define IDXSurface_GetColorKey(This,pColorKey) \ + (This)->lpVtbl -> GetColorKey(This,pColorKey) + +#define IDXSurface_SetColorKey(This,ColorKey) \ + (This)->lpVtbl -> SetColorKey(This,ColorKey) + +#define IDXSurface_LockSurfaceDC(This,pBounds,ulTimeOut,dwFlags,ppDCLock) \ + (This)->lpVtbl -> LockSurfaceDC(This,pBounds,ulTimeOut,dwFlags,ppDCLock) + +#define IDXSurface_SetAppData(This,dwAppData) \ + (This)->lpVtbl -> SetAppData(This,dwAppData) + +#define IDXSurface_GetAppData(This,pdwAppData) \ + (This)->lpVtbl -> GetAppData(This,pdwAppData) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IDXSurface_GetPixelFormat_Proxy( + IDXSurface * This, + /* [out] */ GUID *pFormatID, + /* [out] */ DXSAMPLEFORMATENUM *pSampleFormatEnum); + + +void __RPC_STUB IDXSurface_GetPixelFormat_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDXSurface_GetBounds_Proxy( + IDXSurface * This, + /* [out] */ DXBNDS *pBounds); + + +void __RPC_STUB IDXSurface_GetBounds_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDXSurface_GetStatusFlags_Proxy( + IDXSurface * This, + /* [out] */ DWORD *pdwStatusFlags); + + +void __RPC_STUB IDXSurface_GetStatusFlags_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDXSurface_SetStatusFlags_Proxy( + IDXSurface * This, + /* [in] */ DWORD dwStatusFlags); + + +void __RPC_STUB IDXSurface_SetStatusFlags_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDXSurface_LockSurface_Proxy( + IDXSurface * This, + /* [in] */ const DXBNDS *pBounds, + /* [in] */ ULONG ulTimeOut, + /* [in] */ DWORD dwFlags, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppPointer, + /* [out] */ ULONG *pulGenerationId); + + +void __RPC_STUB IDXSurface_LockSurface_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDXSurface_GetDirectDrawSurface_Proxy( + IDXSurface * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppSurface); + + +void __RPC_STUB IDXSurface_GetDirectDrawSurface_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDXSurface_GetColorKey_Proxy( + IDXSurface * This, + DXSAMPLE *pColorKey); + + +void __RPC_STUB IDXSurface_GetColorKey_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDXSurface_SetColorKey_Proxy( + IDXSurface * This, + DXSAMPLE ColorKey); + + +void __RPC_STUB IDXSurface_SetColorKey_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDXSurface_LockSurfaceDC_Proxy( + IDXSurface * This, + /* [in] */ const DXBNDS *pBounds, + /* [in] */ ULONG ulTimeOut, + /* [in] */ DWORD dwFlags, + /* [out] */ IDXDCLock **ppDCLock); + + +void __RPC_STUB IDXSurface_LockSurfaceDC_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDXSurface_SetAppData_Proxy( + IDXSurface * This, + DWORD_PTR dwAppData); + + +void __RPC_STUB IDXSurface_SetAppData_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDXSurface_GetAppData_Proxy( + IDXSurface * This, + DWORD_PTR *pdwAppData); + + +void __RPC_STUB IDXSurface_GetAppData_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IDXSurface_INTERFACE_DEFINED__ */ + + +#ifndef __IDXSurfaceInit_INTERFACE_DEFINED__ +#define __IDXSurfaceInit_INTERFACE_DEFINED__ + +/* interface IDXSurfaceInit */ +/* [local][unique][helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IDXSurfaceInit; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("9EA3B639-C37D-11d1-905E-00C04FD9189D") + IDXSurfaceInit : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE InitSurface( + /* [in] */ IUnknown *pDirectDraw, + /* [in] */ const DDSURFACEDESC *pDDSurfaceDesc, + /* [in] */ const GUID *pFormatID, + /* [in] */ const DXBNDS *pBounds, + /* [in] */ DWORD dwFlags) = 0; + + }; + +#else /* C style interface */ + + typedef struct IDXSurfaceInitVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDXSurfaceInit * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDXSurfaceInit * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDXSurfaceInit * This); + + HRESULT ( STDMETHODCALLTYPE *InitSurface )( + IDXSurfaceInit * This, + /* [in] */ IUnknown *pDirectDraw, + /* [in] */ const DDSURFACEDESC *pDDSurfaceDesc, + /* [in] */ const GUID *pFormatID, + /* [in] */ const DXBNDS *pBounds, + /* [in] */ DWORD dwFlags); + + END_INTERFACE + } IDXSurfaceInitVtbl; + + interface IDXSurfaceInit + { + CONST_VTBL struct IDXSurfaceInitVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDXSurfaceInit_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IDXSurfaceInit_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IDXSurfaceInit_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IDXSurfaceInit_InitSurface(This,pDirectDraw,pDDSurfaceDesc,pFormatID,pBounds,dwFlags) \ + (This)->lpVtbl -> InitSurface(This,pDirectDraw,pDDSurfaceDesc,pFormatID,pBounds,dwFlags) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IDXSurfaceInit_InitSurface_Proxy( + IDXSurfaceInit * This, + /* [in] */ IUnknown *pDirectDraw, + /* [in] */ const DDSURFACEDESC *pDDSurfaceDesc, + /* [in] */ const GUID *pFormatID, + /* [in] */ const DXBNDS *pBounds, + /* [in] */ DWORD dwFlags); + + +void __RPC_STUB IDXSurfaceInit_InitSurface_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IDXSurfaceInit_INTERFACE_DEFINED__ */ + + +#ifndef __IDXARGBSurfaceInit_INTERFACE_DEFINED__ +#define __IDXARGBSurfaceInit_INTERFACE_DEFINED__ + +/* interface IDXARGBSurfaceInit */ +/* [local][unique][helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IDXARGBSurfaceInit; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("9EA3B63A-C37D-11d1-905E-00C04FD9189D") + IDXARGBSurfaceInit : public IDXSurfaceInit + { + public: + virtual HRESULT STDMETHODCALLTYPE InitFromDDSurface( + /* [in] */ IUnknown *pDDrawSurface, + /* [in] */ const GUID *pFormatID, + /* [in] */ DWORD dwFlags) = 0; + + virtual HRESULT STDMETHODCALLTYPE InitFromRawSurface( + /* [in] */ IDXRawSurface *pRawSurface) = 0; + + }; + +#else /* C style interface */ + + typedef struct IDXARGBSurfaceInitVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDXARGBSurfaceInit * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDXARGBSurfaceInit * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDXARGBSurfaceInit * This); + + HRESULT ( STDMETHODCALLTYPE *InitSurface )( + IDXARGBSurfaceInit * This, + /* [in] */ IUnknown *pDirectDraw, + /* [in] */ const DDSURFACEDESC *pDDSurfaceDesc, + /* [in] */ const GUID *pFormatID, + /* [in] */ const DXBNDS *pBounds, + /* [in] */ DWORD dwFlags); + + HRESULT ( STDMETHODCALLTYPE *InitFromDDSurface )( + IDXARGBSurfaceInit * This, + /* [in] */ IUnknown *pDDrawSurface, + /* [in] */ const GUID *pFormatID, + /* [in] */ DWORD dwFlags); + + HRESULT ( STDMETHODCALLTYPE *InitFromRawSurface )( + IDXARGBSurfaceInit * This, + /* [in] */ IDXRawSurface *pRawSurface); + + END_INTERFACE + } IDXARGBSurfaceInitVtbl; + + interface IDXARGBSurfaceInit + { + CONST_VTBL struct IDXARGBSurfaceInitVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDXARGBSurfaceInit_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IDXARGBSurfaceInit_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IDXARGBSurfaceInit_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IDXARGBSurfaceInit_InitSurface(This,pDirectDraw,pDDSurfaceDesc,pFormatID,pBounds,dwFlags) \ + (This)->lpVtbl -> InitSurface(This,pDirectDraw,pDDSurfaceDesc,pFormatID,pBounds,dwFlags) + + +#define IDXARGBSurfaceInit_InitFromDDSurface(This,pDDrawSurface,pFormatID,dwFlags) \ + (This)->lpVtbl -> InitFromDDSurface(This,pDDrawSurface,pFormatID,dwFlags) + +#define IDXARGBSurfaceInit_InitFromRawSurface(This,pRawSurface) \ + (This)->lpVtbl -> InitFromRawSurface(This,pRawSurface) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IDXARGBSurfaceInit_InitFromDDSurface_Proxy( + IDXARGBSurfaceInit * This, + /* [in] */ IUnknown *pDDrawSurface, + /* [in] */ const GUID *pFormatID, + /* [in] */ DWORD dwFlags); + + +void __RPC_STUB IDXARGBSurfaceInit_InitFromDDSurface_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDXARGBSurfaceInit_InitFromRawSurface_Proxy( + IDXARGBSurfaceInit * This, + /* [in] */ IDXRawSurface *pRawSurface); + + +void __RPC_STUB IDXARGBSurfaceInit_InitFromRawSurface_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IDXARGBSurfaceInit_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_dxtrans_0270 */ +/* [local] */ + +typedef struct tagDXNATIVETYPEINFO + { + BYTE *pCurrentData; + BYTE *pFirstByte; + long lPitch; + DWORD dwColorKey; + } DXNATIVETYPEINFO; + +typedef struct tagDXPACKEDRECTDESC + { + DXBASESAMPLE *pSamples; + BOOL bPremult; + RECT rect; + long lRowPadding; + } DXPACKEDRECTDESC; + +typedef struct tagDXOVERSAMPLEDESC + { + POINT p; + DXPMSAMPLE Color; + } DXOVERSAMPLEDESC; + + + +extern RPC_IF_HANDLE __MIDL_itf_dxtrans_0270_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_dxtrans_0270_v0_0_s_ifspec; + +#ifndef __IDXARGBReadPtr_INTERFACE_DEFINED__ +#define __IDXARGBReadPtr_INTERFACE_DEFINED__ + +/* interface IDXARGBReadPtr */ +/* [local][unique][helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IDXARGBReadPtr; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("EAAAC2D6-C290-11d1-905D-00C04FD9189D") + IDXARGBReadPtr : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE GetSurface( + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppSurface) = 0; + + virtual DXSAMPLEFORMATENUM STDMETHODCALLTYPE GetNativeType( + /* [out] */ DXNATIVETYPEINFO *pInfo) = 0; + + virtual void STDMETHODCALLTYPE Move( + /* [in] */ long cSamples) = 0; + + virtual void STDMETHODCALLTYPE MoveToRow( + /* [in] */ ULONG y) = 0; + + virtual void STDMETHODCALLTYPE MoveToXY( + /* [in] */ ULONG x, + /* [in] */ ULONG y) = 0; + + virtual ULONG STDMETHODCALLTYPE MoveAndGetRunInfo( + /* [in] */ ULONG Row, + /* [out] */ const DXRUNINFO **ppInfo) = 0; + + virtual DXSAMPLE *STDMETHODCALLTYPE Unpack( + /* [in] */ DXSAMPLE *pSamples, + /* [in] */ ULONG cSamples, + /* [in] */ BOOL bMove) = 0; + + virtual DXPMSAMPLE *STDMETHODCALLTYPE UnpackPremult( + /* [in] */ DXPMSAMPLE *pSamples, + /* [in] */ ULONG cSamples, + /* [in] */ BOOL bMove) = 0; + + virtual void STDMETHODCALLTYPE UnpackRect( + /* [in] */ const DXPACKEDRECTDESC *pRectDesc) = 0; + + }; + +#else /* C style interface */ + + typedef struct IDXARGBReadPtrVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDXARGBReadPtr * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDXARGBReadPtr * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDXARGBReadPtr * This); + + HRESULT ( STDMETHODCALLTYPE *GetSurface )( + IDXARGBReadPtr * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppSurface); + + DXSAMPLEFORMATENUM ( STDMETHODCALLTYPE *GetNativeType )( + IDXARGBReadPtr * This, + /* [out] */ DXNATIVETYPEINFO *pInfo); + + void ( STDMETHODCALLTYPE *Move )( + IDXARGBReadPtr * This, + /* [in] */ long cSamples); + + void ( STDMETHODCALLTYPE *MoveToRow )( + IDXARGBReadPtr * This, + /* [in] */ ULONG y); + + void ( STDMETHODCALLTYPE *MoveToXY )( + IDXARGBReadPtr * This, + /* [in] */ ULONG x, + /* [in] */ ULONG y); + + ULONG ( STDMETHODCALLTYPE *MoveAndGetRunInfo )( + IDXARGBReadPtr * This, + /* [in] */ ULONG Row, + /* [out] */ const DXRUNINFO **ppInfo); + + DXSAMPLE *( STDMETHODCALLTYPE *Unpack )( + IDXARGBReadPtr * This, + /* [in] */ DXSAMPLE *pSamples, + /* [in] */ ULONG cSamples, + /* [in] */ BOOL bMove); + + DXPMSAMPLE *( STDMETHODCALLTYPE *UnpackPremult )( + IDXARGBReadPtr * This, + /* [in] */ DXPMSAMPLE *pSamples, + /* [in] */ ULONG cSamples, + /* [in] */ BOOL bMove); + + void ( STDMETHODCALLTYPE *UnpackRect )( + IDXARGBReadPtr * This, + /* [in] */ const DXPACKEDRECTDESC *pRectDesc); + + END_INTERFACE + } IDXARGBReadPtrVtbl; + + interface IDXARGBReadPtr + { + CONST_VTBL struct IDXARGBReadPtrVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDXARGBReadPtr_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IDXARGBReadPtr_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IDXARGBReadPtr_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IDXARGBReadPtr_GetSurface(This,riid,ppSurface) \ + (This)->lpVtbl -> GetSurface(This,riid,ppSurface) + +#define IDXARGBReadPtr_GetNativeType(This,pInfo) \ + (This)->lpVtbl -> GetNativeType(This,pInfo) + +#define IDXARGBReadPtr_Move(This,cSamples) \ + (This)->lpVtbl -> Move(This,cSamples) + +#define IDXARGBReadPtr_MoveToRow(This,y) \ + (This)->lpVtbl -> MoveToRow(This,y) + +#define IDXARGBReadPtr_MoveToXY(This,x,y) \ + (This)->lpVtbl -> MoveToXY(This,x,y) + +#define IDXARGBReadPtr_MoveAndGetRunInfo(This,Row,ppInfo) \ + (This)->lpVtbl -> MoveAndGetRunInfo(This,Row,ppInfo) + +#define IDXARGBReadPtr_Unpack(This,pSamples,cSamples,bMove) \ + (This)->lpVtbl -> Unpack(This,pSamples,cSamples,bMove) + +#define IDXARGBReadPtr_UnpackPremult(This,pSamples,cSamples,bMove) \ + (This)->lpVtbl -> UnpackPremult(This,pSamples,cSamples,bMove) + +#define IDXARGBReadPtr_UnpackRect(This,pRectDesc) \ + (This)->lpVtbl -> UnpackRect(This,pRectDesc) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IDXARGBReadPtr_GetSurface_Proxy( + IDXARGBReadPtr * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppSurface); + + +void __RPC_STUB IDXARGBReadPtr_GetSurface_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +DXSAMPLEFORMATENUM STDMETHODCALLTYPE IDXARGBReadPtr_GetNativeType_Proxy( + IDXARGBReadPtr * This, + /* [out] */ DXNATIVETYPEINFO *pInfo); + + +void __RPC_STUB IDXARGBReadPtr_GetNativeType_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +void STDMETHODCALLTYPE IDXARGBReadPtr_Move_Proxy( + IDXARGBReadPtr * This, + /* [in] */ long cSamples); + + +void __RPC_STUB IDXARGBReadPtr_Move_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +void STDMETHODCALLTYPE IDXARGBReadPtr_MoveToRow_Proxy( + IDXARGBReadPtr * This, + /* [in] */ ULONG y); + + +void __RPC_STUB IDXARGBReadPtr_MoveToRow_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +void STDMETHODCALLTYPE IDXARGBReadPtr_MoveToXY_Proxy( + IDXARGBReadPtr * This, + /* [in] */ ULONG x, + /* [in] */ ULONG y); + + +void __RPC_STUB IDXARGBReadPtr_MoveToXY_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +ULONG STDMETHODCALLTYPE IDXARGBReadPtr_MoveAndGetRunInfo_Proxy( + IDXARGBReadPtr * This, + /* [in] */ ULONG Row, + /* [out] */ const DXRUNINFO **ppInfo); + + +void __RPC_STUB IDXARGBReadPtr_MoveAndGetRunInfo_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +DXSAMPLE *STDMETHODCALLTYPE IDXARGBReadPtr_Unpack_Proxy( + IDXARGBReadPtr * This, + /* [in] */ DXSAMPLE *pSamples, + /* [in] */ ULONG cSamples, + /* [in] */ BOOL bMove); + + +void __RPC_STUB IDXARGBReadPtr_Unpack_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +DXPMSAMPLE *STDMETHODCALLTYPE IDXARGBReadPtr_UnpackPremult_Proxy( + IDXARGBReadPtr * This, + /* [in] */ DXPMSAMPLE *pSamples, + /* [in] */ ULONG cSamples, + /* [in] */ BOOL bMove); + + +void __RPC_STUB IDXARGBReadPtr_UnpackPremult_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +void STDMETHODCALLTYPE IDXARGBReadPtr_UnpackRect_Proxy( + IDXARGBReadPtr * This, + /* [in] */ const DXPACKEDRECTDESC *pRectDesc); + + +void __RPC_STUB IDXARGBReadPtr_UnpackRect_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IDXARGBReadPtr_INTERFACE_DEFINED__ */ + + +#ifndef __IDXARGBReadWritePtr_INTERFACE_DEFINED__ +#define __IDXARGBReadWritePtr_INTERFACE_DEFINED__ + +/* interface IDXARGBReadWritePtr */ +/* [local][unique][helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IDXARGBReadWritePtr; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("EAAAC2D7-C290-11d1-905D-00C04FD9189D") + IDXARGBReadWritePtr : public IDXARGBReadPtr + { + public: + virtual void STDMETHODCALLTYPE PackAndMove( + /* [in] */ const DXSAMPLE *pSamples, + /* [in] */ ULONG cSamples) = 0; + + virtual void STDMETHODCALLTYPE PackPremultAndMove( + /* [in] */ const DXPMSAMPLE *pSamples, + /* [in] */ ULONG cSamples) = 0; + + virtual void STDMETHODCALLTYPE PackRect( + /* [in] */ const DXPACKEDRECTDESC *pRectDesc) = 0; + + virtual void STDMETHODCALLTYPE CopyAndMoveBoth( + /* [in] */ DXBASESAMPLE *pScratchBuffer, + /* [in] */ IDXARGBReadPtr *pSrc, + /* [in] */ ULONG cSamples, + /* [in] */ BOOL bIsOpaque) = 0; + + virtual void STDMETHODCALLTYPE CopyRect( + /* [in] */ DXBASESAMPLE *pScratchBuffer, + /* [in] */ const RECT *pDestRect, + /* [in] */ IDXARGBReadPtr *pSrc, + /* [in] */ const POINT *pSrcOrigin, + /* [in] */ BOOL bIsOpaque) = 0; + + virtual void STDMETHODCALLTYPE FillAndMove( + /* [in] */ DXBASESAMPLE *pScratchBuffer, + /* [in] */ DXPMSAMPLE SampVal, + /* [in] */ ULONG cSamples, + /* [in] */ BOOL bDoOver) = 0; + + virtual void STDMETHODCALLTYPE FillRect( + /* [in] */ const RECT *pRect, + /* [in] */ DXPMSAMPLE SampVal, + /* [in] */ BOOL bDoOver) = 0; + + virtual void STDMETHODCALLTYPE OverSample( + /* [in] */ const DXOVERSAMPLEDESC *pOverDesc) = 0; + + virtual void STDMETHODCALLTYPE OverArrayAndMove( + /* [in] */ DXBASESAMPLE *pScratchBuffer, + /* [in] */ const DXPMSAMPLE *pSrc, + /* [in] */ ULONG cSamples) = 0; + + }; + +#else /* C style interface */ + + typedef struct IDXARGBReadWritePtrVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDXARGBReadWritePtr * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDXARGBReadWritePtr * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDXARGBReadWritePtr * This); + + HRESULT ( STDMETHODCALLTYPE *GetSurface )( + IDXARGBReadWritePtr * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppSurface); + + DXSAMPLEFORMATENUM ( STDMETHODCALLTYPE *GetNativeType )( + IDXARGBReadWritePtr * This, + /* [out] */ DXNATIVETYPEINFO *pInfo); + + void ( STDMETHODCALLTYPE *Move )( + IDXARGBReadWritePtr * This, + /* [in] */ long cSamples); + + void ( STDMETHODCALLTYPE *MoveToRow )( + IDXARGBReadWritePtr * This, + /* [in] */ ULONG y); + + void ( STDMETHODCALLTYPE *MoveToXY )( + IDXARGBReadWritePtr * This, + /* [in] */ ULONG x, + /* [in] */ ULONG y); + + ULONG ( STDMETHODCALLTYPE *MoveAndGetRunInfo )( + IDXARGBReadWritePtr * This, + /* [in] */ ULONG Row, + /* [out] */ const DXRUNINFO **ppInfo); + + DXSAMPLE *( STDMETHODCALLTYPE *Unpack )( + IDXARGBReadWritePtr * This, + /* [in] */ DXSAMPLE *pSamples, + /* [in] */ ULONG cSamples, + /* [in] */ BOOL bMove); + + DXPMSAMPLE *( STDMETHODCALLTYPE *UnpackPremult )( + IDXARGBReadWritePtr * This, + /* [in] */ DXPMSAMPLE *pSamples, + /* [in] */ ULONG cSamples, + /* [in] */ BOOL bMove); + + void ( STDMETHODCALLTYPE *UnpackRect )( + IDXARGBReadWritePtr * This, + /* [in] */ const DXPACKEDRECTDESC *pRectDesc); + + void ( STDMETHODCALLTYPE *PackAndMove )( + IDXARGBReadWritePtr * This, + /* [in] */ const DXSAMPLE *pSamples, + /* [in] */ ULONG cSamples); + + void ( STDMETHODCALLTYPE *PackPremultAndMove )( + IDXARGBReadWritePtr * This, + /* [in] */ const DXPMSAMPLE *pSamples, + /* [in] */ ULONG cSamples); + + void ( STDMETHODCALLTYPE *PackRect )( + IDXARGBReadWritePtr * This, + /* [in] */ const DXPACKEDRECTDESC *pRectDesc); + + void ( STDMETHODCALLTYPE *CopyAndMoveBoth )( + IDXARGBReadWritePtr * This, + /* [in] */ DXBASESAMPLE *pScratchBuffer, + /* [in] */ IDXARGBReadPtr *pSrc, + /* [in] */ ULONG cSamples, + /* [in] */ BOOL bIsOpaque); + + void ( STDMETHODCALLTYPE *CopyRect )( + IDXARGBReadWritePtr * This, + /* [in] */ DXBASESAMPLE *pScratchBuffer, + /* [in] */ const RECT *pDestRect, + /* [in] */ IDXARGBReadPtr *pSrc, + /* [in] */ const POINT *pSrcOrigin, + /* [in] */ BOOL bIsOpaque); + + void ( STDMETHODCALLTYPE *FillAndMove )( + IDXARGBReadWritePtr * This, + /* [in] */ DXBASESAMPLE *pScratchBuffer, + /* [in] */ DXPMSAMPLE SampVal, + /* [in] */ ULONG cSamples, + /* [in] */ BOOL bDoOver); + + void ( STDMETHODCALLTYPE *FillRect )( + IDXARGBReadWritePtr * This, + /* [in] */ const RECT *pRect, + /* [in] */ DXPMSAMPLE SampVal, + /* [in] */ BOOL bDoOver); + + void ( STDMETHODCALLTYPE *OverSample )( + IDXARGBReadWritePtr * This, + /* [in] */ const DXOVERSAMPLEDESC *pOverDesc); + + void ( STDMETHODCALLTYPE *OverArrayAndMove )( + IDXARGBReadWritePtr * This, + /* [in] */ DXBASESAMPLE *pScratchBuffer, + /* [in] */ const DXPMSAMPLE *pSrc, + /* [in] */ ULONG cSamples); + + END_INTERFACE + } IDXARGBReadWritePtrVtbl; + + interface IDXARGBReadWritePtr + { + CONST_VTBL struct IDXARGBReadWritePtrVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDXARGBReadWritePtr_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IDXARGBReadWritePtr_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IDXARGBReadWritePtr_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IDXARGBReadWritePtr_GetSurface(This,riid,ppSurface) \ + (This)->lpVtbl -> GetSurface(This,riid,ppSurface) + +#define IDXARGBReadWritePtr_GetNativeType(This,pInfo) \ + (This)->lpVtbl -> GetNativeType(This,pInfo) + +#define IDXARGBReadWritePtr_Move(This,cSamples) \ + (This)->lpVtbl -> Move(This,cSamples) + +#define IDXARGBReadWritePtr_MoveToRow(This,y) \ + (This)->lpVtbl -> MoveToRow(This,y) + +#define IDXARGBReadWritePtr_MoveToXY(This,x,y) \ + (This)->lpVtbl -> MoveToXY(This,x,y) + +#define IDXARGBReadWritePtr_MoveAndGetRunInfo(This,Row,ppInfo) \ + (This)->lpVtbl -> MoveAndGetRunInfo(This,Row,ppInfo) + +#define IDXARGBReadWritePtr_Unpack(This,pSamples,cSamples,bMove) \ + (This)->lpVtbl -> Unpack(This,pSamples,cSamples,bMove) + +#define IDXARGBReadWritePtr_UnpackPremult(This,pSamples,cSamples,bMove) \ + (This)->lpVtbl -> UnpackPremult(This,pSamples,cSamples,bMove) + +#define IDXARGBReadWritePtr_UnpackRect(This,pRectDesc) \ + (This)->lpVtbl -> UnpackRect(This,pRectDesc) + + +#define IDXARGBReadWritePtr_PackAndMove(This,pSamples,cSamples) \ + (This)->lpVtbl -> PackAndMove(This,pSamples,cSamples) + +#define IDXARGBReadWritePtr_PackPremultAndMove(This,pSamples,cSamples) \ + (This)->lpVtbl -> PackPremultAndMove(This,pSamples,cSamples) + +#define IDXARGBReadWritePtr_PackRect(This,pRectDesc) \ + (This)->lpVtbl -> PackRect(This,pRectDesc) + +#define IDXARGBReadWritePtr_CopyAndMoveBoth(This,pScratchBuffer,pSrc,cSamples,bIsOpaque) \ + (This)->lpVtbl -> CopyAndMoveBoth(This,pScratchBuffer,pSrc,cSamples,bIsOpaque) + +#define IDXARGBReadWritePtr_CopyRect(This,pScratchBuffer,pDestRect,pSrc,pSrcOrigin,bIsOpaque) \ + (This)->lpVtbl -> CopyRect(This,pScratchBuffer,pDestRect,pSrc,pSrcOrigin,bIsOpaque) + +#define IDXARGBReadWritePtr_FillAndMove(This,pScratchBuffer,SampVal,cSamples,bDoOver) \ + (This)->lpVtbl -> FillAndMove(This,pScratchBuffer,SampVal,cSamples,bDoOver) + +#define IDXARGBReadWritePtr_FillRect(This,pRect,SampVal,bDoOver) \ + (This)->lpVtbl -> FillRect(This,pRect,SampVal,bDoOver) + +#define IDXARGBReadWritePtr_OverSample(This,pOverDesc) \ + (This)->lpVtbl -> OverSample(This,pOverDesc) + +#define IDXARGBReadWritePtr_OverArrayAndMove(This,pScratchBuffer,pSrc,cSamples) \ + (This)->lpVtbl -> OverArrayAndMove(This,pScratchBuffer,pSrc,cSamples) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +void STDMETHODCALLTYPE IDXARGBReadWritePtr_PackAndMove_Proxy( + IDXARGBReadWritePtr * This, + /* [in] */ const DXSAMPLE *pSamples, + /* [in] */ ULONG cSamples); + + +void __RPC_STUB IDXARGBReadWritePtr_PackAndMove_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +void STDMETHODCALLTYPE IDXARGBReadWritePtr_PackPremultAndMove_Proxy( + IDXARGBReadWritePtr * This, + /* [in] */ const DXPMSAMPLE *pSamples, + /* [in] */ ULONG cSamples); + + +void __RPC_STUB IDXARGBReadWritePtr_PackPremultAndMove_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +void STDMETHODCALLTYPE IDXARGBReadWritePtr_PackRect_Proxy( + IDXARGBReadWritePtr * This, + /* [in] */ const DXPACKEDRECTDESC *pRectDesc); + + +void __RPC_STUB IDXARGBReadWritePtr_PackRect_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +void STDMETHODCALLTYPE IDXARGBReadWritePtr_CopyAndMoveBoth_Proxy( + IDXARGBReadWritePtr * This, + /* [in] */ DXBASESAMPLE *pScratchBuffer, + /* [in] */ IDXARGBReadPtr *pSrc, + /* [in] */ ULONG cSamples, + /* [in] */ BOOL bIsOpaque); + + +void __RPC_STUB IDXARGBReadWritePtr_CopyAndMoveBoth_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +void STDMETHODCALLTYPE IDXARGBReadWritePtr_CopyRect_Proxy( + IDXARGBReadWritePtr * This, + /* [in] */ DXBASESAMPLE *pScratchBuffer, + /* [in] */ const RECT *pDestRect, + /* [in] */ IDXARGBReadPtr *pSrc, + /* [in] */ const POINT *pSrcOrigin, + /* [in] */ BOOL bIsOpaque); + + +void __RPC_STUB IDXARGBReadWritePtr_CopyRect_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +void STDMETHODCALLTYPE IDXARGBReadWritePtr_FillAndMove_Proxy( + IDXARGBReadWritePtr * This, + /* [in] */ DXBASESAMPLE *pScratchBuffer, + /* [in] */ DXPMSAMPLE SampVal, + /* [in] */ ULONG cSamples, + /* [in] */ BOOL bDoOver); + + +void __RPC_STUB IDXARGBReadWritePtr_FillAndMove_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +void STDMETHODCALLTYPE IDXARGBReadWritePtr_FillRect_Proxy( + IDXARGBReadWritePtr * This, + /* [in] */ const RECT *pRect, + /* [in] */ DXPMSAMPLE SampVal, + /* [in] */ BOOL bDoOver); + + +void __RPC_STUB IDXARGBReadWritePtr_FillRect_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +void STDMETHODCALLTYPE IDXARGBReadWritePtr_OverSample_Proxy( + IDXARGBReadWritePtr * This, + /* [in] */ const DXOVERSAMPLEDESC *pOverDesc); + + +void __RPC_STUB IDXARGBReadWritePtr_OverSample_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +void STDMETHODCALLTYPE IDXARGBReadWritePtr_OverArrayAndMove_Proxy( + IDXARGBReadWritePtr * This, + /* [in] */ DXBASESAMPLE *pScratchBuffer, + /* [in] */ const DXPMSAMPLE *pSrc, + /* [in] */ ULONG cSamples); + + +void __RPC_STUB IDXARGBReadWritePtr_OverArrayAndMove_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IDXARGBReadWritePtr_INTERFACE_DEFINED__ */ + + +#ifndef __IDXDCLock_INTERFACE_DEFINED__ +#define __IDXDCLock_INTERFACE_DEFINED__ + +/* interface IDXDCLock */ +/* [local][unique][helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IDXDCLock; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("0F619456-CF39-11d1-905E-00C04FD9189D") + IDXDCLock : public IUnknown + { + public: + virtual HDC STDMETHODCALLTYPE GetDC( void) = 0; + + }; + +#else /* C style interface */ + + typedef struct IDXDCLockVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDXDCLock * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDXDCLock * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDXDCLock * This); + + HDC ( STDMETHODCALLTYPE *GetDC )( + IDXDCLock * This); + + END_INTERFACE + } IDXDCLockVtbl; + + interface IDXDCLock + { + CONST_VTBL struct IDXDCLockVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDXDCLock_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IDXDCLock_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IDXDCLock_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IDXDCLock_GetDC(This) \ + (This)->lpVtbl -> GetDC(This) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HDC STDMETHODCALLTYPE IDXDCLock_GetDC_Proxy( + IDXDCLock * This); + + +void __RPC_STUB IDXDCLock_GetDC_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IDXDCLock_INTERFACE_DEFINED__ */ + + +#ifndef __IDXTScaleOutput_INTERFACE_DEFINED__ +#define __IDXTScaleOutput_INTERFACE_DEFINED__ + +/* interface IDXTScaleOutput */ +/* [local][unique][helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IDXTScaleOutput; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("B2024B50-EE77-11d1-9066-00C04FD9189D") + IDXTScaleOutput : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE SetOutputSize( + /* [in] */ const SIZE OutSize, + /* [in] */ BOOL bMaintainAspect) = 0; + + }; + +#else /* C style interface */ + + typedef struct IDXTScaleOutputVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDXTScaleOutput * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDXTScaleOutput * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDXTScaleOutput * This); + + HRESULT ( STDMETHODCALLTYPE *SetOutputSize )( + IDXTScaleOutput * This, + /* [in] */ const SIZE OutSize, + /* [in] */ BOOL bMaintainAspect); + + END_INTERFACE + } IDXTScaleOutputVtbl; + + interface IDXTScaleOutput + { + CONST_VTBL struct IDXTScaleOutputVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDXTScaleOutput_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IDXTScaleOutput_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IDXTScaleOutput_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IDXTScaleOutput_SetOutputSize(This,OutSize,bMaintainAspect) \ + (This)->lpVtbl -> SetOutputSize(This,OutSize,bMaintainAspect) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IDXTScaleOutput_SetOutputSize_Proxy( + IDXTScaleOutput * This, + /* [in] */ const SIZE OutSize, + /* [in] */ BOOL bMaintainAspect); + + +void __RPC_STUB IDXTScaleOutput_SetOutputSize_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IDXTScaleOutput_INTERFACE_DEFINED__ */ + + +#ifndef __IDXGradient_INTERFACE_DEFINED__ +#define __IDXGradient_INTERFACE_DEFINED__ + +/* interface IDXGradient */ +/* [local][unique][helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IDXGradient; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("B2024B51-EE77-11d1-9066-00C04FD9189D") + IDXGradient : public IDXTScaleOutput + { + public: + virtual HRESULT STDMETHODCALLTYPE SetGradient( + DXSAMPLE StartColor, + DXSAMPLE EndColor, + BOOL bHorizontal) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetOutputSize( + /* [out] */ SIZE *pOutSize) = 0; + + }; + +#else /* C style interface */ + + typedef struct IDXGradientVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDXGradient * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDXGradient * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDXGradient * This); + + HRESULT ( STDMETHODCALLTYPE *SetOutputSize )( + IDXGradient * This, + /* [in] */ const SIZE OutSize, + /* [in] */ BOOL bMaintainAspect); + + HRESULT ( STDMETHODCALLTYPE *SetGradient )( + IDXGradient * This, + DXSAMPLE StartColor, + DXSAMPLE EndColor, + BOOL bHorizontal); + + HRESULT ( STDMETHODCALLTYPE *GetOutputSize )( + IDXGradient * This, + /* [out] */ SIZE *pOutSize); + + END_INTERFACE + } IDXGradientVtbl; + + interface IDXGradient + { + CONST_VTBL struct IDXGradientVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDXGradient_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IDXGradient_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IDXGradient_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IDXGradient_SetOutputSize(This,OutSize,bMaintainAspect) \ + (This)->lpVtbl -> SetOutputSize(This,OutSize,bMaintainAspect) + + +#define IDXGradient_SetGradient(This,StartColor,EndColor,bHorizontal) \ + (This)->lpVtbl -> SetGradient(This,StartColor,EndColor,bHorizontal) + +#define IDXGradient_GetOutputSize(This,pOutSize) \ + (This)->lpVtbl -> GetOutputSize(This,pOutSize) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IDXGradient_SetGradient_Proxy( + IDXGradient * This, + DXSAMPLE StartColor, + DXSAMPLE EndColor, + BOOL bHorizontal); + + +void __RPC_STUB IDXGradient_SetGradient_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDXGradient_GetOutputSize_Proxy( + IDXGradient * This, + /* [out] */ SIZE *pOutSize); + + +void __RPC_STUB IDXGradient_GetOutputSize_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IDXGradient_INTERFACE_DEFINED__ */ + + +#ifndef __IDXTScale_INTERFACE_DEFINED__ +#define __IDXTScale_INTERFACE_DEFINED__ + +/* interface IDXTScale */ +/* [local][unique][helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IDXTScale; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("B39FD742-E139-11d1-9065-00C04FD9189D") + IDXTScale : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE SetScales( + /* [in] */ float Scales[ 2 ]) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetScales( + /* [out] */ float Scales[ 2 ]) = 0; + + virtual HRESULT STDMETHODCALLTYPE ScaleFitToSize( + /* [out][in] */ DXBNDS *pClipBounds, + /* [in] */ SIZE FitToSize, + /* [in] */ BOOL bMaintainAspect) = 0; + + }; + +#else /* C style interface */ + + typedef struct IDXTScaleVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDXTScale * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDXTScale * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDXTScale * This); + + HRESULT ( STDMETHODCALLTYPE *SetScales )( + IDXTScale * This, + /* [in] */ float Scales[ 2 ]); + + HRESULT ( STDMETHODCALLTYPE *GetScales )( + IDXTScale * This, + /* [out] */ float Scales[ 2 ]); + + HRESULT ( STDMETHODCALLTYPE *ScaleFitToSize )( + IDXTScale * This, + /* [out][in] */ DXBNDS *pClipBounds, + /* [in] */ SIZE FitToSize, + /* [in] */ BOOL bMaintainAspect); + + END_INTERFACE + } IDXTScaleVtbl; + + interface IDXTScale + { + CONST_VTBL struct IDXTScaleVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDXTScale_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IDXTScale_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IDXTScale_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IDXTScale_SetScales(This,Scales) \ + (This)->lpVtbl -> SetScales(This,Scales) + +#define IDXTScale_GetScales(This,Scales) \ + (This)->lpVtbl -> GetScales(This,Scales) + +#define IDXTScale_ScaleFitToSize(This,pClipBounds,FitToSize,bMaintainAspect) \ + (This)->lpVtbl -> ScaleFitToSize(This,pClipBounds,FitToSize,bMaintainAspect) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IDXTScale_SetScales_Proxy( + IDXTScale * This, + /* [in] */ float Scales[ 2 ]); + + +void __RPC_STUB IDXTScale_SetScales_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDXTScale_GetScales_Proxy( + IDXTScale * This, + /* [out] */ float Scales[ 2 ]); + + +void __RPC_STUB IDXTScale_GetScales_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDXTScale_ScaleFitToSize_Proxy( + IDXTScale * This, + /* [out][in] */ DXBNDS *pClipBounds, + /* [in] */ SIZE FitToSize, + /* [in] */ BOOL bMaintainAspect); + + +void __RPC_STUB IDXTScale_ScaleFitToSize_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IDXTScale_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_dxtrans_0276 */ +/* [local] */ + +typedef +enum DISPIDDXEFFECT + { DISPID_DXECAPABILITIES = 10000, + DISPID_DXEPROGRESS = DISPID_DXECAPABILITIES + 1, + DISPID_DXESTEP = DISPID_DXEPROGRESS + 1, + DISPID_DXEDURATION = DISPID_DXESTEP + 1, + DISPID_DXE_NEXT_ID = DISPID_DXEDURATION + 1 + } DISPIDDXBOUNDEDEFFECT; + +typedef +enum DXEFFECTTYPE + { DXTET_PERIODIC = 1 << 0, + DXTET_MORPH = 1 << 1 + } DXEFFECTTYPE; + + + +extern RPC_IF_HANDLE __MIDL_itf_dxtrans_0276_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_dxtrans_0276_v0_0_s_ifspec; + +#ifndef __IDXEffect_INTERFACE_DEFINED__ +#define __IDXEffect_INTERFACE_DEFINED__ + +/* interface IDXEffect */ +/* [dual][unique][helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IDXEffect; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("E31FB81B-1335-11d1-8189-0000F87557DB") + IDXEffect : public IDispatch + { + public: + virtual /* [id][propget] */ HRESULT STDMETHODCALLTYPE get_Capabilities( + /* [retval][out] */ long *pVal) = 0; + + virtual /* [id][propget] */ HRESULT STDMETHODCALLTYPE get_Progress( + /* [retval][out] */ float *pVal) = 0; + + virtual /* [id][propput] */ HRESULT STDMETHODCALLTYPE put_Progress( + /* [in] */ float newVal) = 0; + + virtual /* [id][propget] */ HRESULT STDMETHODCALLTYPE get_StepResolution( + /* [retval][out] */ float *pVal) = 0; + + virtual /* [id][propget] */ HRESULT STDMETHODCALLTYPE get_Duration( + /* [retval][out] */ float *pVal) = 0; + + virtual /* [id][propput] */ HRESULT STDMETHODCALLTYPE put_Duration( + /* [in] */ float newVal) = 0; + + }; + +#else /* C style interface */ + + typedef struct IDXEffectVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDXEffect * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDXEffect * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDXEffect * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IDXEffect * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IDXEffect * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IDXEffect * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IDXEffect * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Capabilities )( + IDXEffect * This, + /* [retval][out] */ long *pVal); + + /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Progress )( + IDXEffect * This, + /* [retval][out] */ float *pVal); + + /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Progress )( + IDXEffect * This, + /* [in] */ float newVal); + + /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_StepResolution )( + IDXEffect * This, + /* [retval][out] */ float *pVal); + + /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Duration )( + IDXEffect * This, + /* [retval][out] */ float *pVal); + + /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Duration )( + IDXEffect * This, + /* [in] */ float newVal); + + END_INTERFACE + } IDXEffectVtbl; + + interface IDXEffect + { + CONST_VTBL struct IDXEffectVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDXEffect_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IDXEffect_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IDXEffect_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IDXEffect_GetTypeInfoCount(This,pctinfo) \ + (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) + +#define IDXEffect_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) + +#define IDXEffect_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) + +#define IDXEffect_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) + + +#define IDXEffect_get_Capabilities(This,pVal) \ + (This)->lpVtbl -> get_Capabilities(This,pVal) + +#define IDXEffect_get_Progress(This,pVal) \ + (This)->lpVtbl -> get_Progress(This,pVal) + +#define IDXEffect_put_Progress(This,newVal) \ + (This)->lpVtbl -> put_Progress(This,newVal) + +#define IDXEffect_get_StepResolution(This,pVal) \ + (This)->lpVtbl -> get_StepResolution(This,pVal) + +#define IDXEffect_get_Duration(This,pVal) \ + (This)->lpVtbl -> get_Duration(This,pVal) + +#define IDXEffect_put_Duration(This,newVal) \ + (This)->lpVtbl -> put_Duration(This,newVal) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [id][propget] */ HRESULT STDMETHODCALLTYPE IDXEffect_get_Capabilities_Proxy( + IDXEffect * This, + /* [retval][out] */ long *pVal); + + +void __RPC_STUB IDXEffect_get_Capabilities_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][propget] */ HRESULT STDMETHODCALLTYPE IDXEffect_get_Progress_Proxy( + IDXEffect * This, + /* [retval][out] */ float *pVal); + + +void __RPC_STUB IDXEffect_get_Progress_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][propput] */ HRESULT STDMETHODCALLTYPE IDXEffect_put_Progress_Proxy( + IDXEffect * This, + /* [in] */ float newVal); + + +void __RPC_STUB IDXEffect_put_Progress_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][propget] */ HRESULT STDMETHODCALLTYPE IDXEffect_get_StepResolution_Proxy( + IDXEffect * This, + /* [retval][out] */ float *pVal); + + +void __RPC_STUB IDXEffect_get_StepResolution_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][propget] */ HRESULT STDMETHODCALLTYPE IDXEffect_get_Duration_Proxy( + IDXEffect * This, + /* [retval][out] */ float *pVal); + + +void __RPC_STUB IDXEffect_get_Duration_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][propput] */ HRESULT STDMETHODCALLTYPE IDXEffect_put_Duration_Proxy( + IDXEffect * This, + /* [in] */ float newVal); + + +void __RPC_STUB IDXEffect_put_Duration_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IDXEffect_INTERFACE_DEFINED__ */ + + +#ifndef __IDXLookupTable_INTERFACE_DEFINED__ +#define __IDXLookupTable_INTERFACE_DEFINED__ + +/* interface IDXLookupTable */ +/* [local][unique][helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IDXLookupTable; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("01BAFC7F-9E63-11d1-9053-00C04FD9189D") + IDXLookupTable : public IDXBaseObject + { + public: + virtual HRESULT STDMETHODCALLTYPE GetTables( + /* [out] */ BYTE RedLUT[ 256 ], + /* [out] */ BYTE GreenLUT[ 256 ], + /* [out] */ BYTE BlueLUT[ 256 ], + /* [out] */ BYTE AlphaLUT[ 256 ]) = 0; + + virtual HRESULT STDMETHODCALLTYPE IsChannelIdentity( + /* [out] */ DXBASESAMPLE *pSampleBools) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetIndexValues( + /* [in] */ ULONG Index, + /* [out] */ DXBASESAMPLE *pSample) = 0; + + virtual HRESULT STDMETHODCALLTYPE ApplyTables( + /* [out][in] */ DXSAMPLE *pSamples, + /* [in] */ ULONG cSamples) = 0; + + }; + +#else /* C style interface */ + + typedef struct IDXLookupTableVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDXLookupTable * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDXLookupTable * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDXLookupTable * This); + + HRESULT ( STDMETHODCALLTYPE *GetGenerationId )( + IDXLookupTable * This, + /* [out] */ ULONG *pID); + + HRESULT ( STDMETHODCALLTYPE *IncrementGenerationId )( + IDXLookupTable * This, + /* [in] */ BOOL bRefresh); + + HRESULT ( STDMETHODCALLTYPE *GetObjectSize )( + IDXLookupTable * This, + /* [out] */ ULONG *pcbSize); + + HRESULT ( STDMETHODCALLTYPE *GetTables )( + IDXLookupTable * This, + /* [out] */ BYTE RedLUT[ 256 ], + /* [out] */ BYTE GreenLUT[ 256 ], + /* [out] */ BYTE BlueLUT[ 256 ], + /* [out] */ BYTE AlphaLUT[ 256 ]); + + HRESULT ( STDMETHODCALLTYPE *IsChannelIdentity )( + IDXLookupTable * This, + /* [out] */ DXBASESAMPLE *pSampleBools); + + HRESULT ( STDMETHODCALLTYPE *GetIndexValues )( + IDXLookupTable * This, + /* [in] */ ULONG Index, + /* [out] */ DXBASESAMPLE *pSample); + + HRESULT ( STDMETHODCALLTYPE *ApplyTables )( + IDXLookupTable * This, + /* [out][in] */ DXSAMPLE *pSamples, + /* [in] */ ULONG cSamples); + + END_INTERFACE + } IDXLookupTableVtbl; + + interface IDXLookupTable + { + CONST_VTBL struct IDXLookupTableVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDXLookupTable_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IDXLookupTable_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IDXLookupTable_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IDXLookupTable_GetGenerationId(This,pID) \ + (This)->lpVtbl -> GetGenerationId(This,pID) + +#define IDXLookupTable_IncrementGenerationId(This,bRefresh) \ + (This)->lpVtbl -> IncrementGenerationId(This,bRefresh) + +#define IDXLookupTable_GetObjectSize(This,pcbSize) \ + (This)->lpVtbl -> GetObjectSize(This,pcbSize) + + +#define IDXLookupTable_GetTables(This,RedLUT,GreenLUT,BlueLUT,AlphaLUT) \ + (This)->lpVtbl -> GetTables(This,RedLUT,GreenLUT,BlueLUT,AlphaLUT) + +#define IDXLookupTable_IsChannelIdentity(This,pSampleBools) \ + (This)->lpVtbl -> IsChannelIdentity(This,pSampleBools) + +#define IDXLookupTable_GetIndexValues(This,Index,pSample) \ + (This)->lpVtbl -> GetIndexValues(This,Index,pSample) + +#define IDXLookupTable_ApplyTables(This,pSamples,cSamples) \ + (This)->lpVtbl -> ApplyTables(This,pSamples,cSamples) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IDXLookupTable_GetTables_Proxy( + IDXLookupTable * This, + /* [out] */ BYTE RedLUT[ 256 ], + /* [out] */ BYTE GreenLUT[ 256 ], + /* [out] */ BYTE BlueLUT[ 256 ], + /* [out] */ BYTE AlphaLUT[ 256 ]); + + +void __RPC_STUB IDXLookupTable_GetTables_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDXLookupTable_IsChannelIdentity_Proxy( + IDXLookupTable * This, + /* [out] */ DXBASESAMPLE *pSampleBools); + + +void __RPC_STUB IDXLookupTable_IsChannelIdentity_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDXLookupTable_GetIndexValues_Proxy( + IDXLookupTable * This, + /* [in] */ ULONG Index, + /* [out] */ DXBASESAMPLE *pSample); + + +void __RPC_STUB IDXLookupTable_GetIndexValues_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDXLookupTable_ApplyTables_Proxy( + IDXLookupTable * This, + /* [out][in] */ DXSAMPLE *pSamples, + /* [in] */ ULONG cSamples); + + +void __RPC_STUB IDXLookupTable_ApplyTables_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IDXLookupTable_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_dxtrans_0278 */ +/* [local] */ + +typedef struct DXRAWSURFACEINFO + { + BYTE *pFirstByte; + long lPitch; + ULONG Width; + ULONG Height; + const GUID *pPixelFormat; + HDC hdc; + DWORD dwColorKey; + DXBASESAMPLE *pPalette; + } DXRAWSURFACEINFO; + + + +extern RPC_IF_HANDLE __MIDL_itf_dxtrans_0278_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_dxtrans_0278_v0_0_s_ifspec; + +#ifndef __IDXRawSurface_INTERFACE_DEFINED__ +#define __IDXRawSurface_INTERFACE_DEFINED__ + +/* interface IDXRawSurface */ +/* [local][unique][helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IDXRawSurface; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("09756C8A-D96A-11d1-9062-00C04FD9189D") + IDXRawSurface : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE GetSurfaceInfo( + DXRAWSURFACEINFO *pSurfaceInfo) = 0; + + }; + +#else /* C style interface */ + + typedef struct IDXRawSurfaceVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDXRawSurface * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDXRawSurface * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDXRawSurface * This); + + HRESULT ( STDMETHODCALLTYPE *GetSurfaceInfo )( + IDXRawSurface * This, + DXRAWSURFACEINFO *pSurfaceInfo); + + END_INTERFACE + } IDXRawSurfaceVtbl; + + interface IDXRawSurface + { + CONST_VTBL struct IDXRawSurfaceVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDXRawSurface_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IDXRawSurface_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IDXRawSurface_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IDXRawSurface_GetSurfaceInfo(This,pSurfaceInfo) \ + (This)->lpVtbl -> GetSurfaceInfo(This,pSurfaceInfo) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IDXRawSurface_GetSurfaceInfo_Proxy( + IDXRawSurface * This, + DXRAWSURFACEINFO *pSurfaceInfo); + + +void __RPC_STUB IDXRawSurface_GetSurfaceInfo_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IDXRawSurface_INTERFACE_DEFINED__ */ + + +#ifndef __IHTMLDXTransform_INTERFACE_DEFINED__ +#define __IHTMLDXTransform_INTERFACE_DEFINED__ + +/* interface IHTMLDXTransform */ +/* [local][unique][helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IHTMLDXTransform; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("30E2AB7D-4FDD-4159-B7EA-DC722BF4ADE5") + IHTMLDXTransform : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE SetHostUrl( + BSTR bstrHostUrl) = 0; + + }; + +#else /* C style interface */ + + typedef struct IHTMLDXTransformVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IHTMLDXTransform * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IHTMLDXTransform * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IHTMLDXTransform * This); + + HRESULT ( STDMETHODCALLTYPE *SetHostUrl )( + IHTMLDXTransform * This, + BSTR bstrHostUrl); + + END_INTERFACE + } IHTMLDXTransformVtbl; + + interface IHTMLDXTransform + { + CONST_VTBL struct IHTMLDXTransformVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IHTMLDXTransform_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IHTMLDXTransform_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IHTMLDXTransform_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IHTMLDXTransform_SetHostUrl(This,bstrHostUrl) \ + (This)->lpVtbl -> SetHostUrl(This,bstrHostUrl) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IHTMLDXTransform_SetHostUrl_Proxy( + IHTMLDXTransform * This, + BSTR bstrHostUrl); + + +void __RPC_STUB IHTMLDXTransform_SetHostUrl_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IHTMLDXTransform_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_dxtrans_0280 */ +/* [local] */ + +typedef +enum DXTFILTER_STATUS + { DXTFILTER_STATUS_Stopped = 0, + DXTFILTER_STATUS_Applied = DXTFILTER_STATUS_Stopped + 1, + DXTFILTER_STATUS_Playing = DXTFILTER_STATUS_Applied + 1, + DXTFILTER_STATUS_MAX = DXTFILTER_STATUS_Playing + 1 + } DXTFILTER_STATUS; + +typedef +enum DXTFILTER_DISPID + { DISPID_DXTFilter_Percent = 1, + DISPID_DXTFilter_Duration = DISPID_DXTFilter_Percent + 1, + DISPID_DXTFilter_Enabled = DISPID_DXTFilter_Duration + 1, + DISPID_DXTFilter_Status = DISPID_DXTFilter_Enabled + 1, + DISPID_DXTFilter_Apply = DISPID_DXTFilter_Status + 1, + DISPID_DXTFilter_Play = DISPID_DXTFilter_Apply + 1, + DISPID_DXTFilter_Stop = DISPID_DXTFilter_Play + 1, + DISPID_DXTFilter_MAX = DISPID_DXTFilter_Stop + 1 + } DXTFILTER_DISPID; + + + +extern RPC_IF_HANDLE __MIDL_itf_dxtrans_0280_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_dxtrans_0280_v0_0_s_ifspec; + +#ifndef __ICSSFilterDispatch_INTERFACE_DEFINED__ +#define __ICSSFilterDispatch_INTERFACE_DEFINED__ + +/* interface ICSSFilterDispatch */ +/* [dual][unique][helpstring][uuid][object] */ + + +EXTERN_C const IID IID_ICSSFilterDispatch; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("9519152B-9484-4A6C-B6A7-4F25E92D6C6B") + ICSSFilterDispatch : public IDispatch + { + public: + virtual /* [id][propget] */ HRESULT STDMETHODCALLTYPE get_Percent( + /* [retval][out] */ float *pVal) = 0; + + virtual /* [id][propput] */ HRESULT STDMETHODCALLTYPE put_Percent( + /* [in] */ float newVal) = 0; + + virtual /* [id][propget] */ HRESULT STDMETHODCALLTYPE get_Duration( + /* [retval][out] */ float *pVal) = 0; + + virtual /* [id][propput] */ HRESULT STDMETHODCALLTYPE put_Duration( + /* [in] */ float newVal) = 0; + + virtual /* [id][propget] */ HRESULT STDMETHODCALLTYPE get_Enabled( + /* [retval][out] */ VARIANT_BOOL *pfVal) = 0; + + virtual /* [id][propput] */ HRESULT STDMETHODCALLTYPE put_Enabled( + /* [in] */ VARIANT_BOOL fVal) = 0; + + virtual /* [id][propget] */ HRESULT STDMETHODCALLTYPE get_Status( + /* [retval][out] */ DXTFILTER_STATUS *peVal) = 0; + + virtual /* [id] */ HRESULT STDMETHODCALLTYPE Apply( void) = 0; + + virtual /* [id] */ HRESULT STDMETHODCALLTYPE Play( + /* [optional][in] */ VARIANT varDuration) = 0; + + virtual /* [id] */ HRESULT STDMETHODCALLTYPE Stop( void) = 0; + + }; + +#else /* C style interface */ + + typedef struct ICSSFilterDispatchVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ICSSFilterDispatch * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ICSSFilterDispatch * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ICSSFilterDispatch * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + ICSSFilterDispatch * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + ICSSFilterDispatch * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + ICSSFilterDispatch * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + ICSSFilterDispatch * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Percent )( + ICSSFilterDispatch * This, + /* [retval][out] */ float *pVal); + + /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Percent )( + ICSSFilterDispatch * This, + /* [in] */ float newVal); + + /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Duration )( + ICSSFilterDispatch * This, + /* [retval][out] */ float *pVal); + + /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Duration )( + ICSSFilterDispatch * This, + /* [in] */ float newVal); + + /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Enabled )( + ICSSFilterDispatch * This, + /* [retval][out] */ VARIANT_BOOL *pfVal); + + /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Enabled )( + ICSSFilterDispatch * This, + /* [in] */ VARIANT_BOOL fVal); + + /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Status )( + ICSSFilterDispatch * This, + /* [retval][out] */ DXTFILTER_STATUS *peVal); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *Apply )( + ICSSFilterDispatch * This); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *Play )( + ICSSFilterDispatch * This, + /* [optional][in] */ VARIANT varDuration); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *Stop )( + ICSSFilterDispatch * This); + + END_INTERFACE + } ICSSFilterDispatchVtbl; + + interface ICSSFilterDispatch + { + CONST_VTBL struct ICSSFilterDispatchVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ICSSFilterDispatch_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define ICSSFilterDispatch_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define ICSSFilterDispatch_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define ICSSFilterDispatch_GetTypeInfoCount(This,pctinfo) \ + (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) + +#define ICSSFilterDispatch_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) + +#define ICSSFilterDispatch_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) + +#define ICSSFilterDispatch_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) + + +#define ICSSFilterDispatch_get_Percent(This,pVal) \ + (This)->lpVtbl -> get_Percent(This,pVal) + +#define ICSSFilterDispatch_put_Percent(This,newVal) \ + (This)->lpVtbl -> put_Percent(This,newVal) + +#define ICSSFilterDispatch_get_Duration(This,pVal) \ + (This)->lpVtbl -> get_Duration(This,pVal) + +#define ICSSFilterDispatch_put_Duration(This,newVal) \ + (This)->lpVtbl -> put_Duration(This,newVal) + +#define ICSSFilterDispatch_get_Enabled(This,pfVal) \ + (This)->lpVtbl -> get_Enabled(This,pfVal) + +#define ICSSFilterDispatch_put_Enabled(This,fVal) \ + (This)->lpVtbl -> put_Enabled(This,fVal) + +#define ICSSFilterDispatch_get_Status(This,peVal) \ + (This)->lpVtbl -> get_Status(This,peVal) + +#define ICSSFilterDispatch_Apply(This) \ + (This)->lpVtbl -> Apply(This) + +#define ICSSFilterDispatch_Play(This,varDuration) \ + (This)->lpVtbl -> Play(This,varDuration) + +#define ICSSFilterDispatch_Stop(This) \ + (This)->lpVtbl -> Stop(This) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [id][propget] */ HRESULT STDMETHODCALLTYPE ICSSFilterDispatch_get_Percent_Proxy( + ICSSFilterDispatch * This, + /* [retval][out] */ float *pVal); + + +void __RPC_STUB ICSSFilterDispatch_get_Percent_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][propput] */ HRESULT STDMETHODCALLTYPE ICSSFilterDispatch_put_Percent_Proxy( + ICSSFilterDispatch * This, + /* [in] */ float newVal); + + +void __RPC_STUB ICSSFilterDispatch_put_Percent_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][propget] */ HRESULT STDMETHODCALLTYPE ICSSFilterDispatch_get_Duration_Proxy( + ICSSFilterDispatch * This, + /* [retval][out] */ float *pVal); + + +void __RPC_STUB ICSSFilterDispatch_get_Duration_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][propput] */ HRESULT STDMETHODCALLTYPE ICSSFilterDispatch_put_Duration_Proxy( + ICSSFilterDispatch * This, + /* [in] */ float newVal); + + +void __RPC_STUB ICSSFilterDispatch_put_Duration_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][propget] */ HRESULT STDMETHODCALLTYPE ICSSFilterDispatch_get_Enabled_Proxy( + ICSSFilterDispatch * This, + /* [retval][out] */ VARIANT_BOOL *pfVal); + + +void __RPC_STUB ICSSFilterDispatch_get_Enabled_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][propput] */ HRESULT STDMETHODCALLTYPE ICSSFilterDispatch_put_Enabled_Proxy( + ICSSFilterDispatch * This, + /* [in] */ VARIANT_BOOL fVal); + + +void __RPC_STUB ICSSFilterDispatch_put_Enabled_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][propget] */ HRESULT STDMETHODCALLTYPE ICSSFilterDispatch_get_Status_Proxy( + ICSSFilterDispatch * This, + /* [retval][out] */ DXTFILTER_STATUS *peVal); + + +void __RPC_STUB ICSSFilterDispatch_get_Status_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id] */ HRESULT STDMETHODCALLTYPE ICSSFilterDispatch_Apply_Proxy( + ICSSFilterDispatch * This); + + +void __RPC_STUB ICSSFilterDispatch_Apply_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id] */ HRESULT STDMETHODCALLTYPE ICSSFilterDispatch_Play_Proxy( + ICSSFilterDispatch * This, + /* [optional][in] */ VARIANT varDuration); + + +void __RPC_STUB ICSSFilterDispatch_Play_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id] */ HRESULT STDMETHODCALLTYPE ICSSFilterDispatch_Stop_Proxy( + ICSSFilterDispatch * This); + + +void __RPC_STUB ICSSFilterDispatch_Stop_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __ICSSFilterDispatch_INTERFACE_DEFINED__ */ + + + +#ifndef __DXTRANSLib_LIBRARY_DEFINED__ +#define __DXTRANSLib_LIBRARY_DEFINED__ + +/* library DXTRANSLib */ +/* [helpstring][version][uuid] */ + + +EXTERN_C const IID LIBID_DXTRANSLib; + +EXTERN_C const CLSID CLSID_DXTransformFactory; + +#ifdef __cplusplus + +class DECLSPEC_UUID("D1FE6762-FC48-11D0-883A-3C8B00C10000") +DXTransformFactory; +#endif + +EXTERN_C const CLSID CLSID_DXTaskManager; + +#ifdef __cplusplus + +class DECLSPEC_UUID("4CB26C03-FF93-11d0-817E-0000F87557DB") +DXTaskManager; +#endif + +EXTERN_C const CLSID CLSID_DXTScale; + +#ifdef __cplusplus + +class DECLSPEC_UUID("555278E2-05DB-11D1-883A-3C8B00C10000") +DXTScale; +#endif + +EXTERN_C const CLSID CLSID_DXSurface; + +#ifdef __cplusplus + +class DECLSPEC_UUID("0E890F83-5F79-11D1-9043-00C04FD9189D") +DXSurface; +#endif + +EXTERN_C const CLSID CLSID_DXSurfaceModifier; + +#ifdef __cplusplus + +class DECLSPEC_UUID("3E669F1D-9C23-11d1-9053-00C04FD9189D") +DXSurfaceModifier; +#endif + +EXTERN_C const CLSID CLSID_DXGradient; + +#ifdef __cplusplus + +class DECLSPEC_UUID("C6365470-F667-11d1-9067-00C04FD9189D") +DXGradient; +#endif + +EXTERN_C const CLSID CLSID_DXTFilter; + +#ifdef __cplusplus + +class DECLSPEC_UUID("385A91BC-1E8A-4e4a-A7A6-F4FC1E6CA1BD") +DXTFilter; +#endif +#endif /* __DXTRANSLib_LIBRARY_DEFINED__ */ + +/* Additional Prototypes for ALL interfaces */ + +unsigned long __RPC_USER VARIANT_UserSize( unsigned long *, unsigned long , VARIANT * ); +unsigned char * __RPC_USER VARIANT_UserMarshal( unsigned long *, unsigned char *, VARIANT * ); +unsigned char * __RPC_USER VARIANT_UserUnmarshal(unsigned long *, unsigned char *, VARIANT * ); +void __RPC_USER VARIANT_UserFree( unsigned long *, VARIANT * ); + +/* end of Additional Prototypes */ + +#ifdef __cplusplus +} +#endif + +#endif + + diff --git a/videoInputSrcAndDemos/libs/DShow/Include/dxutil.h b/videoInputSrcAndDemos/libs/DShow/Include/dxutil.h index 385c76d..7008a4c 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/dxutil.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/dxutil.h @@ -1,181 +1,181 @@ -//----------------------------------------------------------------------------- -// File: DXUtil.h -// -// Desc: Helper functions and typing shortcuts for DirectX programming. -// -// Copyright (c) Microsoft Corporation. All rights reserved -//----------------------------------------------------------------------------- -#ifndef DXUTIL_H -#define DXUTIL_H - - -//----------------------------------------------------------------------------- -// Miscellaneous helper functions -//----------------------------------------------------------------------------- -#define SAFE_DELETE(p) { if(p) { delete (p); (p)=NULL; } } -#define SAFE_DELETE_ARRAY(p) { if(p) { delete[] (p); (p)=NULL; } } -#define SAFE_RELEASE(p) { if(p) { (p)->Release(); (p)=NULL; } } - - -#ifndef UNDER_CE -//----------------------------------------------------------------------------- -// Name: DXUtil_GetDXSDKMediaPath() and DXUtil_FindMediaFile() -// Desc: Returns the DirectX SDK path, as stored in the system registry -// during the SDK install. -//----------------------------------------------------------------------------- -HRESULT DXUtil_GetDXSDKMediaPathCch( TCHAR* strDest, int cchDest ); -HRESULT DXUtil_GetDXSDKMediaPathCb( TCHAR* szDest, int cbDest ); -HRESULT DXUtil_FindMediaFileCch( TCHAR* strDestPath, int cchDest, LPCTSTR strFilename ); -HRESULT DXUtil_FindMediaFileCb( TCHAR* szDestPath, int cbDest, LPCTSTR strFilename ); -#endif // !UNDER_CE - - -//----------------------------------------------------------------------------- -// Name: DXUtil_Read*RegKey() and DXUtil_Write*RegKey() -// Desc: Helper functions to read/write a string registry key -//----------------------------------------------------------------------------- -HRESULT DXUtil_WriteStringRegKey( HKEY hKey, LPCTSTR strRegName, LPCTSTR strValue ); -HRESULT DXUtil_WriteFloatRegKey( HKEY hKey, LPCTSTR strRegName, FLOAT fValue ); -HRESULT DXUtil_WriteIntRegKey( HKEY hKey, LPCTSTR strRegName, DWORD dwValue ); -HRESULT DXUtil_WriteGuidRegKey( HKEY hKey, LPCTSTR strRegName, GUID guidValue ); -HRESULT DXUtil_WriteBoolRegKey( HKEY hKey, LPCTSTR strRegName, BOOL bValue ); - -HRESULT DXUtil_ReadStringRegKeyCch( HKEY hKey, LPCTSTR strRegName, TCHAR* strDest, DWORD cchDest, LPCTSTR strDefault ); -HRESULT DXUtil_ReadStringRegKeyCb( HKEY hKey, LPCTSTR strRegName, TCHAR* strDest, DWORD cbDest, LPCTSTR strDefault ); -HRESULT DXUtil_ReadFloatRegKey( HKEY hKey, LPCTSTR strRegName, FLOAT* fDest, FLOAT fDefault ); -HRESULT DXUtil_ReadIntRegKey( HKEY hKey, LPCTSTR strRegName, DWORD* pdwValue, DWORD dwDefault ); -HRESULT DXUtil_ReadGuidRegKey( HKEY hKey, LPCTSTR strRegName, GUID* pGuidValue, GUID& guidDefault ); -HRESULT DXUtil_ReadBoolRegKey( HKEY hKey, LPCTSTR strRegName, BOOL* pbValue, BOOL bDefault ); - - -//----------------------------------------------------------------------------- -// Name: DXUtil_Timer() -// Desc: Performs timer opertations. Use the following commands: -// TIMER_RESET - to reset the timer -// TIMER_START - to start the timer -// TIMER_STOP - to stop (or pause) the timer -// TIMER_ADVANCE - to advance the timer by 0.1 seconds -// TIMER_GETABSOLUTETIME - to get the absolute system time -// TIMER_GETAPPTIME - to get the current time -// TIMER_GETELAPSEDTIME - to get the time that elapsed between -// TIMER_GETELAPSEDTIME calls -//----------------------------------------------------------------------------- -enum TIMER_COMMAND { TIMER_RESET, TIMER_START, TIMER_STOP, TIMER_ADVANCE, - TIMER_GETABSOLUTETIME, TIMER_GETAPPTIME, TIMER_GETELAPSEDTIME }; -FLOAT __stdcall DXUtil_Timer( TIMER_COMMAND command ); - - -//----------------------------------------------------------------------------- -// UNICODE support for converting between CHAR, TCHAR, and WCHAR strings -//----------------------------------------------------------------------------- -HRESULT DXUtil_ConvertAnsiStringToWideCch( WCHAR* wstrDestination, const CHAR* strSource, int cchDestChar ); -HRESULT DXUtil_ConvertWideStringToAnsiCch( CHAR* strDestination, const WCHAR* wstrSource, int cchDestChar ); -HRESULT DXUtil_ConvertGenericStringToAnsiCch( CHAR* strDestination, const TCHAR* tstrSource, int cchDestChar ); -HRESULT DXUtil_ConvertGenericStringToWideCch( WCHAR* wstrDestination, const TCHAR* tstrSource, int cchDestChar ); -HRESULT DXUtil_ConvertAnsiStringToGenericCch( TCHAR* tstrDestination, const CHAR* strSource, int cchDestChar ); -HRESULT DXUtil_ConvertWideStringToGenericCch( TCHAR* tstrDestination, const WCHAR* wstrSource, int cchDestChar ); -HRESULT DXUtil_ConvertAnsiStringToWideCb( WCHAR* wstrDestination, const CHAR* strSource, int cbDestChar ); -HRESULT DXUtil_ConvertWideStringToAnsiCb( CHAR* strDestination, const WCHAR* wstrSource, int cbDestChar ); -HRESULT DXUtil_ConvertGenericStringToAnsiCb( CHAR* strDestination, const TCHAR* tstrSource, int cbDestChar ); -HRESULT DXUtil_ConvertGenericStringToWideCb( WCHAR* wstrDestination, const TCHAR* tstrSource, int cbDestChar ); -HRESULT DXUtil_ConvertAnsiStringToGenericCb( TCHAR* tstrDestination, const CHAR* strSource, int cbDestChar ); -HRESULT DXUtil_ConvertWideStringToGenericCb( TCHAR* tstrDestination, const WCHAR* wstrSource, int cbDestChar ); - - -//----------------------------------------------------------------------------- -// Readme functions -//----------------------------------------------------------------------------- -VOID DXUtil_LaunchReadme( HWND hWnd, LPCTSTR strLoc = NULL ); - -//----------------------------------------------------------------------------- -// GUID to String converting -//----------------------------------------------------------------------------- -HRESULT DXUtil_ConvertGUIDToStringCch( const GUID* pGuidSrc, TCHAR* strDest, int cchDestChar ); -HRESULT DXUtil_ConvertGUIDToStringCb( const GUID* pGuidSrc, TCHAR* strDest, int cbDestChar ); -HRESULT DXUtil_ConvertStringToGUID( const TCHAR* strIn, GUID* pGuidOut ); - - -//----------------------------------------------------------------------------- -// Debug printing support -// See dxerr9.h for more debug printing support -//----------------------------------------------------------------------------- -VOID DXUtil_Trace( LPCTSTR strMsg, ... ); - -#if defined(DEBUG) | defined(_DEBUG) - #define DXTRACE DXUtil_Trace -#else - #define DXTRACE sizeof -#endif - - -//----------------------------------------------------------------------------- -// Name: ArrayListType -// Desc: Indicates how data should be stored in a CArrayList -//----------------------------------------------------------------------------- -enum ArrayListType -{ - AL_VALUE, // entry data is copied into the list - AL_REFERENCE, // entry pointers are copied into the list -}; - - -//----------------------------------------------------------------------------- -// Name: CArrayList -// Desc: A growable array -//----------------------------------------------------------------------------- -class CArrayList -{ -protected: - ArrayListType m_ArrayListType; - void* m_pData; - UINT m_BytesPerEntry; - UINT m_NumEntries; - UINT m_NumEntriesAllocated; - -public: - CArrayList( ArrayListType Type, UINT BytesPerEntry = 0 ); - ~CArrayList( void ); - HRESULT Add( void* pEntry ); - void Remove( UINT Entry ); - void* GetPtr( UINT Entry ); - UINT Count( void ) { return m_NumEntries; } - bool Contains( void* pEntryData ); - void Clear( void ) { m_NumEntries = 0; } -}; - -//----------------------------------------------------------------------------- -// WinCE build support -//----------------------------------------------------------------------------- - -#ifdef UNDER_CE - -#define CheckDlgButton(hdialog, id, state) ::SendMessage(::GetDlgItem(hdialog, id), BM_SETCHECK, state, 0) -#define IsDlgButtonChecked(hdialog, id) ::SendMessage(::GetDlgItem(hdialog, id), BM_GETCHECK, 0L, 0L) -#define GETTIMESTAMP GetTickCount -#define _TWINCE(x) _T(x) - -__inline int GetScrollPos(HWND hWnd, int nBar) -{ - SCROLLINFO si; - memset(&si, 0, sizeof(si)); - si.cbSize = sizeof(si); - si.fMask = SIF_POS; - if (!GetScrollInfo(hWnd, nBar, &si)) - { - return 0; - } - else - { - return si.nPos; - } -} - -#else // !UNDER_CE - -#define GETTIMESTAMP timeGetTime -#define _TWINCE(x) x - -#endif // UNDER_CE - - -#endif // DXUTIL_H +//----------------------------------------------------------------------------- +// File: DXUtil.h +// +// Desc: Helper functions and typing shortcuts for DirectX programming. +// +// Copyright (c) Microsoft Corporation. All rights reserved +//----------------------------------------------------------------------------- +#ifndef DXUTIL_H +#define DXUTIL_H + + +//----------------------------------------------------------------------------- +// Miscellaneous helper functions +//----------------------------------------------------------------------------- +#define SAFE_DELETE(p) { if(p) { delete (p); (p)=NULL; } } +#define SAFE_DELETE_ARRAY(p) { if(p) { delete[] (p); (p)=NULL; } } +#define SAFE_RELEASE(p) { if(p) { (p)->Release(); (p)=NULL; } } + + +#ifndef UNDER_CE +//----------------------------------------------------------------------------- +// Name: DXUtil_GetDXSDKMediaPath() and DXUtil_FindMediaFile() +// Desc: Returns the DirectX SDK path, as stored in the system registry +// during the SDK install. +//----------------------------------------------------------------------------- +HRESULT DXUtil_GetDXSDKMediaPathCch( TCHAR* strDest, int cchDest ); +HRESULT DXUtil_GetDXSDKMediaPathCb( TCHAR* szDest, int cbDest ); +HRESULT DXUtil_FindMediaFileCch( TCHAR* strDestPath, int cchDest, LPCTSTR strFilename ); +HRESULT DXUtil_FindMediaFileCb( TCHAR* szDestPath, int cbDest, LPCTSTR strFilename ); +#endif // !UNDER_CE + + +//----------------------------------------------------------------------------- +// Name: DXUtil_Read*RegKey() and DXUtil_Write*RegKey() +// Desc: Helper functions to read/write a string registry key +//----------------------------------------------------------------------------- +HRESULT DXUtil_WriteStringRegKey( HKEY hKey, LPCTSTR strRegName, LPCTSTR strValue ); +HRESULT DXUtil_WriteFloatRegKey( HKEY hKey, LPCTSTR strRegName, FLOAT fValue ); +HRESULT DXUtil_WriteIntRegKey( HKEY hKey, LPCTSTR strRegName, DWORD dwValue ); +HRESULT DXUtil_WriteGuidRegKey( HKEY hKey, LPCTSTR strRegName, GUID guidValue ); +HRESULT DXUtil_WriteBoolRegKey( HKEY hKey, LPCTSTR strRegName, BOOL bValue ); + +HRESULT DXUtil_ReadStringRegKeyCch( HKEY hKey, LPCTSTR strRegName, TCHAR* strDest, DWORD cchDest, LPCTSTR strDefault ); +HRESULT DXUtil_ReadStringRegKeyCb( HKEY hKey, LPCTSTR strRegName, TCHAR* strDest, DWORD cbDest, LPCTSTR strDefault ); +HRESULT DXUtil_ReadFloatRegKey( HKEY hKey, LPCTSTR strRegName, FLOAT* fDest, FLOAT fDefault ); +HRESULT DXUtil_ReadIntRegKey( HKEY hKey, LPCTSTR strRegName, DWORD* pdwValue, DWORD dwDefault ); +HRESULT DXUtil_ReadGuidRegKey( HKEY hKey, LPCTSTR strRegName, GUID* pGuidValue, GUID& guidDefault ); +HRESULT DXUtil_ReadBoolRegKey( HKEY hKey, LPCTSTR strRegName, BOOL* pbValue, BOOL bDefault ); + + +//----------------------------------------------------------------------------- +// Name: DXUtil_Timer() +// Desc: Performs timer opertations. Use the following commands: +// TIMER_RESET - to reset the timer +// TIMER_START - to start the timer +// TIMER_STOP - to stop (or pause) the timer +// TIMER_ADVANCE - to advance the timer by 0.1 seconds +// TIMER_GETABSOLUTETIME - to get the absolute system time +// TIMER_GETAPPTIME - to get the current time +// TIMER_GETELAPSEDTIME - to get the time that elapsed between +// TIMER_GETELAPSEDTIME calls +//----------------------------------------------------------------------------- +enum TIMER_COMMAND { TIMER_RESET, TIMER_START, TIMER_STOP, TIMER_ADVANCE, + TIMER_GETABSOLUTETIME, TIMER_GETAPPTIME, TIMER_GETELAPSEDTIME }; +FLOAT __stdcall DXUtil_Timer( TIMER_COMMAND command ); + + +//----------------------------------------------------------------------------- +// UNICODE support for converting between CHAR, TCHAR, and WCHAR strings +//----------------------------------------------------------------------------- +HRESULT DXUtil_ConvertAnsiStringToWideCch( WCHAR* wstrDestination, const CHAR* strSource, int cchDestChar ); +HRESULT DXUtil_ConvertWideStringToAnsiCch( CHAR* strDestination, const WCHAR* wstrSource, int cchDestChar ); +HRESULT DXUtil_ConvertGenericStringToAnsiCch( CHAR* strDestination, const TCHAR* tstrSource, int cchDestChar ); +HRESULT DXUtil_ConvertGenericStringToWideCch( WCHAR* wstrDestination, const TCHAR* tstrSource, int cchDestChar ); +HRESULT DXUtil_ConvertAnsiStringToGenericCch( TCHAR* tstrDestination, const CHAR* strSource, int cchDestChar ); +HRESULT DXUtil_ConvertWideStringToGenericCch( TCHAR* tstrDestination, const WCHAR* wstrSource, int cchDestChar ); +HRESULT DXUtil_ConvertAnsiStringToWideCb( WCHAR* wstrDestination, const CHAR* strSource, int cbDestChar ); +HRESULT DXUtil_ConvertWideStringToAnsiCb( CHAR* strDestination, const WCHAR* wstrSource, int cbDestChar ); +HRESULT DXUtil_ConvertGenericStringToAnsiCb( CHAR* strDestination, const TCHAR* tstrSource, int cbDestChar ); +HRESULT DXUtil_ConvertGenericStringToWideCb( WCHAR* wstrDestination, const TCHAR* tstrSource, int cbDestChar ); +HRESULT DXUtil_ConvertAnsiStringToGenericCb( TCHAR* tstrDestination, const CHAR* strSource, int cbDestChar ); +HRESULT DXUtil_ConvertWideStringToGenericCb( TCHAR* tstrDestination, const WCHAR* wstrSource, int cbDestChar ); + + +//----------------------------------------------------------------------------- +// Readme functions +//----------------------------------------------------------------------------- +VOID DXUtil_LaunchReadme( HWND hWnd, LPCTSTR strLoc = NULL ); + +//----------------------------------------------------------------------------- +// GUID to String converting +//----------------------------------------------------------------------------- +HRESULT DXUtil_ConvertGUIDToStringCch( const GUID* pGuidSrc, TCHAR* strDest, int cchDestChar ); +HRESULT DXUtil_ConvertGUIDToStringCb( const GUID* pGuidSrc, TCHAR* strDest, int cbDestChar ); +HRESULT DXUtil_ConvertStringToGUID( const TCHAR* strIn, GUID* pGuidOut ); + + +//----------------------------------------------------------------------------- +// Debug printing support +// See dxerr9.h for more debug printing support +//----------------------------------------------------------------------------- +VOID DXUtil_Trace( LPCTSTR strMsg, ... ); + +#if defined(DEBUG) | defined(_DEBUG) + #define DXTRACE DXUtil_Trace +#else + #define DXTRACE sizeof +#endif + + +//----------------------------------------------------------------------------- +// Name: ArrayListType +// Desc: Indicates how data should be stored in a CArrayList +//----------------------------------------------------------------------------- +enum ArrayListType +{ + AL_VALUE, // entry data is copied into the list + AL_REFERENCE, // entry pointers are copied into the list +}; + + +//----------------------------------------------------------------------------- +// Name: CArrayList +// Desc: A growable array +//----------------------------------------------------------------------------- +class CArrayList +{ +protected: + ArrayListType m_ArrayListType; + void* m_pData; + UINT m_BytesPerEntry; + UINT m_NumEntries; + UINT m_NumEntriesAllocated; + +public: + CArrayList( ArrayListType Type, UINT BytesPerEntry = 0 ); + ~CArrayList( void ); + HRESULT Add( void* pEntry ); + void Remove( UINT Entry ); + void* GetPtr( UINT Entry ); + UINT Count( void ) { return m_NumEntries; } + bool Contains( void* pEntryData ); + void Clear( void ) { m_NumEntries = 0; } +}; + +//----------------------------------------------------------------------------- +// WinCE build support +//----------------------------------------------------------------------------- + +#ifdef UNDER_CE + +#define CheckDlgButton(hdialog, id, state) ::SendMessage(::GetDlgItem(hdialog, id), BM_SETCHECK, state, 0) +#define IsDlgButtonChecked(hdialog, id) ::SendMessage(::GetDlgItem(hdialog, id), BM_GETCHECK, 0L, 0L) +#define GETTIMESTAMP GetTickCount +#define _TWINCE(x) _T(x) + +__inline int GetScrollPos(HWND hWnd, int nBar) +{ + SCROLLINFO si; + memset(&si, 0, sizeof(si)); + si.cbSize = sizeof(si); + si.fMask = SIF_POS; + if (!GetScrollInfo(hWnd, nBar, &si)) + { + return 0; + } + else + { + return si.nPos; + } +} + +#else // !UNDER_CE + +#define GETTIMESTAMP timeGetTime +#define _TWINCE(x) x + +#endif // UNDER_CE + + +#endif // DXUTIL_H diff --git a/videoInputSrcAndDemos/libs/DShow/Include/dxva.h b/videoInputSrcAndDemos/libs/DShow/Include/dxva.h index 104b4d7..05d4668 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/dxva.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/dxva.h @@ -1,1359 +1,1359 @@ -//------------------------------------------------------------------------------ -// File: DXVA.h -// -// Desc: DirectX Video Acceleration header file. -// -// Copyright (c) 1999 - 2002, Microsoft Corporation. All rights reserved. -//------------------------------------------------------------------------------ - - -#ifndef __DIRECTX_VA__ -#define __DIRECTX_VA__ - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef __DIRECTX_VA_COPP_ONLY -#define __DIRECTX_VA_DECODER__ -#define __DIRECTX_VA_PROCAMPCONTROL__ -#define __DIRECTX_VA_DEINTERLACE__ -#endif - - -// ------------------------------------------------------------------------- -// -// The definitions that follow describe the DirectX Video Acceleration -// decoding interface. -// This interface is accessable via the IAMVideoAccelerator interface. -// -// ------------------------------------------------------------------------- -// -#ifndef __DIRECTX_VA_DECODER__ -#define __DIRECTX_VA_DECODER__ - -DEFINE_GUID(DXVA_ModeNone, 0x1b81be00, 0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); -DEFINE_GUID(DXVA_ModeH261_A, 0x1b81be01, 0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); -DEFINE_GUID(DXVA_ModeH261_B, 0x1b81be02, 0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); - -DEFINE_GUID(DXVA_ModeH263_A, 0x1b81be03, 0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); -DEFINE_GUID(DXVA_ModeH263_B, 0x1b81be04, 0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); -DEFINE_GUID(DXVA_ModeH263_C, 0x1b81be05, 0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); -DEFINE_GUID(DXVA_ModeH263_D, 0x1b81be06, 0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); -DEFINE_GUID(DXVA_ModeH263_E, 0x1b81be07, 0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); -DEFINE_GUID(DXVA_ModeH263_F, 0x1b81be08, 0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); - -DEFINE_GUID(DXVA_ModeMPEG1_A, 0x1b81be09, 0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); - -DEFINE_GUID(DXVA_ModeMPEG2_A, 0x1b81be0A, 0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); -DEFINE_GUID(DXVA_ModeMPEG2_B, 0x1b81be0B, 0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); -DEFINE_GUID(DXVA_ModeMPEG2_C, 0x1b81be0C, 0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); -DEFINE_GUID(DXVA_ModeMPEG2_D, 0x1b81be0D, 0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); - -DEFINE_GUID(DXVA_ModeWMV8_A, 0x1b81be80, 0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); -DEFINE_GUID(DXVA_ModeWMV8_B, 0x1b81be81, 0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); - -DEFINE_GUID(DXVA_ModeWMV9_A, 0x1b81be90, 0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); -DEFINE_GUID(DXVA_ModeWMV9_B, 0x1b81be91, 0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); -DEFINE_GUID(DXVA_ModeWMV9_Ai, 0x1b81be92, 0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); -DEFINE_GUID(DXVA_ModeWMV9_Bi, 0x1b81be93, 0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); - - -DEFINE_GUID(DXVA_NoEncrypt, 0x1b81beD0, 0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); - -#define DXVA_RESTRICTED_MODE_UNRESTRICTED 0xFFFF -#define DXVA_RESTRICTED_MODE_H261_A 1 -#define DXVA_RESTRICTED_MODE_H261_B 2 - -#define DXVA_RESTRICTED_MODE_H263_A 3 -#define DXVA_RESTRICTED_MODE_H263_B 4 -#define DXVA_RESTRICTED_MODE_H263_C 5 -#define DXVA_RESTRICTED_MODE_H263_D 6 -#define DXVA_RESTRICTED_MODE_H263_E 7 -#define DXVA_RESTRICTED_MODE_H263_F 8 - -#define DXVA_RESTRICTED_MODE_MPEG1_A 9 - -#define DXVA_RESTRICTED_MODE_MPEG2_A 0xA -#define DXVA_RESTRICTED_MODE_MPEG2_B 0xB -#define DXVA_RESTRICTED_MODE_MPEG2_C 0xC -#define DXVA_RESTRICTED_MODE_MPEG2_D 0xD - -#define DXVA_RESTRICTED_MODE_WMV8_A 0x80 -#define DXVA_RESTRICTED_MODE_WMV8_B 0x81 - -#define DXVA_RESTRICTED_MODE_WMV9_A 0x90 -#define DXVA_RESTRICTED_MODE_WMV9_B 0x91 -#define DXVA_RESTRICTED_MODE_WMV9_Ai 0x92 -#define DXVA_RESTRICTED_MODE_WMV9_Bi 0x93 - - -#define DXVA_COMPBUFFER_TYPE_THAT_IS_NOT_USED 0 -#define DXVA_PICTURE_DECODE_BUFFER 1 -#define DXVA_MACROBLOCK_CONTROL_BUFFER 2 -#define DXVA_RESIDUAL_DIFFERENCE_BUFFER 3 -#define DXVA_DEBLOCKING_CONTROL_BUFFER 4 -#define DXVA_INVERSE_QUANTIZATION_MATRIX_BUFFER 5 -#define DXVA_SLICE_CONTROL_BUFFER 6 -#define DXVA_BITSTREAM_DATA_BUFFER 7 -#define DXVA_AYUV_BUFFER 8 -#define DXVA_IA44_SURFACE_BUFFER 9 -#define DXVA_DPXD_SURFACE_BUFFER 10 -#define DXVA_HIGHLIGHT_BUFFER 11 -#define DXVA_DCCMD_SURFACE_BUFFER 12 -#define DXVA_ALPHA_BLEND_COMBINATION_BUFFER 13 -#define DXVA_PICTURE_RESAMPLE_BUFFER 14 -#define DXVA_READ_BACK_BUFFER 15 - -#define DXVA_NUM_TYPES_COMP_BUFFERS 16 - -/* values for bDXVA_Func */ -#define DXVA_PICTURE_DECODING_FUNCTION 1 -#define DXVA_ALPHA_BLEND_DATA_LOAD_FUNCTION 2 -#define DXVA_ALPHA_BLEND_COMBINATION_FUNCTION 3 -#define DXVA_PICTURE_RESAMPLE_FUNCTION 4 - -/* values returned from Execute command in absence of read-back */ -#define DXVA_EXECUTE_RETURN_OK 0 -#define DXVA_EXECUTE_RETURN_DATA_ERROR_MINOR 1 -#define DXVA_EXECUTE_RETURN_DATA_ERROR_SIGNIF 2 -#define DXVA_EXECUTE_RETURN_DATA_ERROR_SEVERE 3 -#define DXVA_EXECUTE_RETURN_OTHER_ERROR_SEVERE 4 - - -#pragma pack(push, BeforeDXVApacking, 1) - - -typedef struct _DXVA_ConnectMode { - GUID guidMode; - WORD wRestrictedMode; -} DXVA_ConnectMode, *LPDXVA_ConnectMode; - - -typedef DWORD DXVA_ConfigQueryOrReplyFunc, *LPDXVA_ConfigQueryOrReplyFunc; - -#define DXVA_QUERYORREPLYFUNCFLAG_DECODER_PROBE_QUERY 0xFFFFF1 -#define DXVA_QUERYORREPLYFUNCFLAG_DECODER_LOCK_QUERY 0xFFFFF5 -#define DXVA_QUERYORREPLYFUNCFLAG_ACCEL_PROBE_OK_COPY 0xFFFFF8 -#define DXVA_QUERYORREPLYFUNCFLAG_ACCEL_PROBE_OK_PLUS 0xFFFFF9 -#define DXVA_QUERYORREPLYFUNCFLAG_ACCEL_LOCK_OK_COPY 0xFFFFFC -#define DXVA_QUERYORREPLYFUNCFLAG_ACCEL_PROBE_FALSE_PLUS 0xFFFFFB -#define DXVA_QUERYORREPLYFUNCFLAG_ACCEL_LOCK_FALSE_PLUS 0xFFFFFF - -#define readDXVA_QueryOrReplyFuncFlag(ptr) ((*(ptr)) >> 8) - -#define readDXVA_QueryOrReplyFuncFlag_ACCEL(ptr) (((*(ptr)) >> 11) & 1) -#define readDXVA_QueryOrReplyFuncFlag_LOCK(ptr) (((*(ptr)) >> 10) & 1) -#define readDXVA_QueryOrReplyFuncFlag_BAD(ptr) (((*(ptr)) >> 9) & 1) -#define readDXVA_QueryOrReplyFuncFlag_PLUS(ptr) (((*(ptr)) >> 8) & 1) - -#define readDXVA_QueryOrReplyFuncFunc(ptr) ((*(ptr)) & 0xFF) - -#define writeDXVA_QueryOrReplyFunc(ptr, flg, fnc) ((*(ptr)) = ((flg) << 8) | (fnc)) - -#define setDXVA_QueryOrReplyFuncFlag(ptr, flg) ((*(ptr)) |= ((flg) << 8)) -#define setDXVA_QueryOrReplyFuncFunc(ptr, fnc) ((*(ptr)) |= (fnc)); - -typedef DWORD DXVA_EncryptProtocolFunc, *LPDXVA_EncryptProtocolFunc; - -#define DXVA_ENCRYPTPROTOCOLFUNCFLAG_HOST 0xFFFF00 -#define DXVA_ENCRYPTPROTOCOLFUNCFLAG_ACCEL 0xFFFF08 - -#define readDXVA_EncryptProtocolFuncFlag(ptr) ((*(ptr)) >> 8) -#define readDXVA_EncryptProtocolFuncFlag_ACCEL(ptr) (((*(ptr)) >> 11) & 1) - -#define readDXVA_EncryptProtocolFuncFunc(ptr) ((*(ptr)) & 0xFF) - -#define writeDXVA_EncryptProtocolFunc(ptr, flg, fnc) ((*(ptr)) = ((flg) << 8) | (fnc)) - -#define setDXVA_EncryptProtocolFuncFlag(ptr, flg) ((*(ptr)) |= ((flg) << 8)) -#define setDXVA_EncryptProtocolFuncFunc(ptr, fnc) ((*(ptr)) |= (fnc)); - -typedef struct _DXVA_EncryptProtocolHeader { - DXVA_EncryptProtocolFunc dwFunction; - DWORD ReservedBits[3]; - GUID guidEncryptProtocol; -} DXVA_EncryptProtocolHeader, *LPDXVA_EncryptProtocolHeader; - -typedef struct _DXVA_ConfigPictureDecode { - - // Operation Indicated - DXVA_ConfigQueryOrReplyFunc dwFunction; - - // Alignment - DWORD dwReservedBits[3]; - - // Encryption GUIDs - GUID guidConfigBitstreamEncryption; - GUID guidConfigMBcontrolEncryption; - GUID guidConfigResidDiffEncryption; - - // Bitstream Processing Indicator - BYTE bConfigBitstreamRaw; - - // Macroblock Control Config - BYTE bConfigMBcontrolRasterOrder; - - // Host Resid Diff Config - BYTE bConfigResidDiffHost; - BYTE bConfigSpatialResid8; - BYTE bConfigResid8Subtraction; - BYTE bConfigSpatialHost8or9Clipping; - BYTE bConfigSpatialResidInterleaved; - BYTE bConfigIntraResidUnsigned; - - // Accelerator Resid Diff Config - BYTE bConfigResidDiffAccelerator; - BYTE bConfigHostInverseScan; - BYTE bConfigSpecificIDCT; - BYTE bConfig4GroupedCoefs; -} DXVA_ConfigPictureDecode, *LPDXVA_ConfigPictureDecode; - - -/* Picture Decoding Parameters */ - -typedef struct _DXVA_PictureParameters { - - WORD wDecodedPictureIndex; - WORD wDeblockedPictureIndex; - - WORD wForwardRefPictureIndex; - WORD wBackwardRefPictureIndex; - - WORD wPicWidthInMBminus1; - WORD wPicHeightInMBminus1; - - BYTE bMacroblockWidthMinus1; - BYTE bMacroblockHeightMinus1; - - BYTE bBlockWidthMinus1; - BYTE bBlockHeightMinus1; - - BYTE bBPPminus1; - - BYTE bPicStructure; - BYTE bSecondField; - BYTE bPicIntra; - BYTE bPicBackwardPrediction; - - BYTE bBidirectionalAveragingMode; - BYTE bMVprecisionAndChromaRelation; - BYTE bChromaFormat; - - BYTE bPicScanFixed; - BYTE bPicScanMethod; - BYTE bPicReadbackRequests; - - BYTE bRcontrol; - BYTE bPicSpatialResid8; - BYTE bPicOverflowBlocks; - BYTE bPicExtrapolation; - - BYTE bPicDeblocked; - BYTE bPicDeblockConfined; - BYTE bPic4MVallowed; - BYTE bPicOBMC; - BYTE bPicBinPB; - BYTE bMV_RPS; - - BYTE bReservedBits; - - WORD wBitstreamFcodes; - WORD wBitstreamPCEelements; - BYTE bBitstreamConcealmentNeed; - BYTE bBitstreamConcealmentMethod; - -} DXVA_PictureParameters, *LPDXVA_PictureParameters; - - - -/* Picture Resampling */ - -typedef struct _DXVA_PicResample { - - WORD wPicResampleSourcePicIndex; - WORD wPicResampleDestPicIndex; - - WORD wPicResampleRcontrol; - BYTE bPicResampleExtrapWidth; - BYTE bPicResampleExtrapHeight; - - DWORD dwPicResampleSourceWidth; - DWORD dwPicResampleSourceHeight; - - DWORD dwPicResampleDestWidth; - DWORD dwPicResampleDestHeight; - - DWORD dwPicResampleFullDestWidth; - DWORD dwPicResampleFullDestHeight; - -} DXVA_PicResample, *LPDXVA_PicResample; - - -#define DXVA_CHROMA_FORMAT_420 1 -#define DXVA_CHROMA_FORMAT_422 2 -#define DXVA_CHROMA_FORMAT_444 3 - -#define DXVA_PICTURE_STRUCTURE_TOP_FIELD 1 -#define DXVA_PICTURE_STRUCTURE_BOTTOM_FIELD 2 -#define DXVA_PICTURE_STRUCTURE_FRAME 3 - -#define DXVA_BIDIRECTIONAL_AVERAGING_MPEG2_ROUND 0 -#define DXVA_BIDIRECTIONAL_AVERAGING_H263_TRUNC 1 - -#define DXVA_MV_PRECISION_AND_CHROMA_RELATION_MPEG2 0 -#define DXVA_MV_PRECISION_AND_CHROMA_RELATION_H263 1 -#define DXVA_MV_PRECISION_AND_CHROMA_RELATION_H261 2 - -#define DXVA_SCAN_METHOD_ZIG_ZAG 0 -#define DXVA_SCAN_METHOD_ALTERNATE_VERTICAL 1 -#define DXVA_SCAN_METHOD_ALTERNATE_HORIZONTAL 2 -#define DXVA_SCAN_METHOD_ARBITRARY 3 - -#define DXVA_BITSTREAM_CONCEALMENT_NEED_UNLIKELY 0 -#define DXVA_BITSTREAM_CONCEALMENT_NEED_MILD 1 -#define DXVA_BITSTREAM_CONCEALMENT_NEED_LIKELY 2 -#define DXVA_BITSTREAM_CONCEALMENT_NEED_SEVERE 3 - -#define DXVA_BITSTREAM_CONCEALMENT_METHOD_UNSPECIFIED 0 -#define DXVA_BITSTREAM_CONCEALMENT_METHOD_INTRA 1 -#define DXVA_BITSTREAM_CONCEALMENT_METHOD_FORWARD 2 -#define DXVA_BITSTREAM_CONCEALMENT_METHOD_BACKWARD 3 - - -/* Buffer Description Data */ - -typedef struct _DXVA_BufferDescription { - DWORD dwTypeIndex; - DWORD dwBufferIndex; - DWORD dwDataOffset; - DWORD dwDataSize; - DWORD dwFirstMBaddress; - DWORD dwNumMBsInBuffer; - DWORD dwWidth; - DWORD dwHeight; - DWORD dwStride; - DWORD dwReservedBits; -} DXVA_BufferDescription, *LPDXVA_BufferDescription; - - -/* Off-Host IDCT Coefficient Data Structures */ - -typedef struct _DXVA_TCoef4Group { - BYTE TCoefIDX[4]; - SHORT TCoefValue[4]; -} DXVA_TCoef4Group, *LPDXVA_TCoef4Group; - -typedef struct _DXVA_TCoefSingle { - WORD wIndexWithEOB; - SHORT TCoefValue; -} DXVA_TCoefSingle, *LPDXVA_TCoefSingle; - -/* Macros for Reading EOB and Index Values */ - -#define readDXVA_TCoefSingleIDX(ptr) ((ptr)->wIndexWithEOB >> 1) -#define readDXVA_TCoefSingleEOB(ptr) ((ptr)->wIndexWithEOB & 1) - -/* Macro for Writing EOB and Index Values */ - -#define writeDXVA_TCoefSingleIndexWithEOB(ptr, idx, eob) ((ptr)->wIndexWithEOB = ((idx) << 1) | (eob)) -#define setDXVA_TCoefSingleIDX(ptr, idx) ((ptr)->wIndexWithEOB |= ((idx) << 1)) -#define setDXVA_TCoefSingleEOB(ptr) ((ptr)->wIndexWithEOB |= 1) - -/* Spatial-Domain Residual Difference Blocks */ - -#define DXVA_USUAL_BLOCK_WIDTH 8 -#define DXVA_USUAL_BLOCK_HEIGHT 8 -#define DXVA_USUAL_BLOCK_SIZE (DXVA_USUAL_BLOCK_WIDTH * DXVA_USUAL_BLOCK_HEIGHT) - -typedef SHORT DXVA_Sample16[DXVA_USUAL_BLOCK_SIZE]; -typedef signed char DXVA_Sample8 [DXVA_USUAL_BLOCK_SIZE]; - -/* Deblocking Filter Control Structure */ - -typedef BYTE DXVA_DeblockingEdgeControl; - -typedef DXVA_DeblockingEdgeControl * LPDXVA_DeblockingEdgeControl; - -/* Macros for Reading STRENGTH and FilterOn */ - -#define readDXVA_EdgeFilterStrength(ptr) ((*(ptr)) >> 1) -#define readDXVA_EdgeFilterOn(ptr) ((*(ptr)) & 1) - -/* Macro for Writing STRENGTH and FilterOn */ - -#define writeDXVA_DeblockingEdgeControl(ptr, str, fon) ((*(ptr)) = ((str) << 1) | (fon)) -#define setDXVA_EdgeFilterStrength(ptr, str) ((*(ptr)) |= ((str) << 1)) -#define setDXVA_EdgeFilterOn(ptr) ((*(ptr)) |= 1) - - -/* Macroblock Control Command Data Structures */ - -typedef struct _DXVA_MVvalue { - SHORT horz, vert; -} DXVA_MVvalue, *LPDXVA_MVvalue; - - -/* Inverse Quantization Matrices */ - -typedef struct _DXVA_QmatrixData { - BYTE bNewQmatrix[4]; /* intra Y, inter Y, intra chroma, inter chroma */ - WORD Qmatrix[4][DXVA_USUAL_BLOCK_WIDTH * DXVA_USUAL_BLOCK_HEIGHT]; -} DXVA_QmatrixData, *LPDXVA_QmatrixData; - - -/* Slice Control Buffer Data */ - -typedef struct _DXVA_SliceInfo { - WORD wHorizontalPosition; - WORD wVerticalPosition; - DWORD dwSliceBitsInBuffer; - DWORD dwSliceDataLocation; - BYTE bStartCodeBitOffset; - BYTE bReservedBits; - WORD wMBbitOffset; - WORD wNumberMBsInSlice; - WORD wQuantizerScaleCode; - WORD wBadSliceChopping; -} DXVA_SliceInfo, *LPDXVA_SliceInfo; - - -#define DXVA_NumMV_OBMC_off_BinPBwith4MV_off 4 -#define DXVA_NumMV_OBMC_off_BinPBwith4MV_on (4+1) -#define DXVA_NumMV_OBMC_on__BinPB_off (10) -#define DXVA_NumMV_OBMC_on__BinPB_on (11) /* not current standards */ - -#define DXVA_NumBlocksPerMB_420 (4+2+0) -#define DXVA_NumBlocksPerMB_422 (4+2+2) -#define DXVA_NumBlocksPerMB_444 (4+4+4) - -/* Basic form for I pictures */ -/* Host Residual Differences */ -typedef struct _DXVA_MBctrl_I_HostResidDiff_1 { - WORD wMBaddress; - WORD wMBtype; - DWORD dwMB_SNL; - WORD wPatternCode; - WORD wPC_Overflow; /* zero if not overflow format */ - DWORD dwReservedBits2; -} DXVA_MBctrl_I_HostResidDiff_1; - -/* Basic form for I pictures */ -/* Off-Host IDCT, 4:2:0 sampling */ -typedef struct _DXVA_MBctrl_I_OffHostIDCT_1 { - WORD wMBaddress; - WORD wMBtype; - DWORD dwMB_SNL; - WORD wPatternCode; - BYTE bNumCoef[DXVA_NumBlocksPerMB_420]; -} DXVA_MBctrl_I_OffHostIDCT_1; - -/* Basic form for P and B pictures */ -/* Should also be used for concealment MVs in MPEG-2 I pictures */ -/* Without OBMC, without BinPB and 4MV together, without MV RPS */ -/* Host Residual Differences */ -typedef struct _DXVA_MBctrl_P_HostResidDiff_1 { - WORD wMBaddress; - WORD wMBtype; - DWORD dwMB_SNL; - WORD wPatternCode; - WORD wPC_Overflow; /* zero if not overflow format */ - DWORD dwReservedBits2; - DXVA_MVvalue MVector[DXVA_NumMV_OBMC_off_BinPBwith4MV_off]; -} DXVA_MBctrl_P_HostResidDiff_1; - -/* Basic form for P and B pictures */ -/* Without OBMC, without BinPB and 4MV together, without MV RPS */ -/* Off-Host IDCT, 4:2:0 sampling */ -typedef struct _DXVA_MBctrl_P_OffHostIDCT_1 { - WORD wMBaddress; - WORD wMBtype; - DWORD dwMB_SNL; - WORD wPatternCode; - BYTE bNumCoef[DXVA_NumBlocksPerMB_420]; - DXVA_MVvalue MVector[DXVA_NumMV_OBMC_off_BinPBwith4MV_off]; -} DXVA_MBctrl_P_OffHostIDCT_1; - -/* How to load alpha blending graphic data */ -typedef struct _DXVA_ConfigAlphaLoad { - - // Operation Indicated - DXVA_ConfigQueryOrReplyFunc dwFunction; - - // Alignment - DWORD dwReservedBits[3]; - - BYTE bConfigDataType; -} DXVA_ConfigAlphaLoad, *LPDXVA_ConfigAlphaLoad; - -#define DXVA_CONFIG_DATA_TYPE_IA44 0 -#define DXVA_CONFIG_DATA_TYPE_AI44 1 -#define DXVA_CONFIG_DATA_TYPE_DPXD 2 -#define DXVA_CONFIG_DATA_TYPE_AYUV 3 - - -/* How to combine alpha blending graphic data */ -typedef struct _DXVA_ConfigAlphaCombine { - - // Operation Indicated - DXVA_ConfigQueryOrReplyFunc dwFunction; - - // Alignment - DWORD dwReservedBits[3]; - - BYTE bConfigBlendType; - BYTE bConfigPictureResizing; - BYTE bConfigOnlyUsePicDestRectArea; - BYTE bConfigGraphicResizing; - BYTE bConfigWholePlaneAlpha; - -} DXVA_ConfigAlphaCombine, *LPDXVA_ConfigAlphaCombine; - -#define DXVA_CONFIG_BLEND_TYPE_FRONT_BUFFER 0 -#define DXVA_CONFIG_BLEND_TYPE_BACK_HARDWARE 1 - - -/* AYUV sample for 16-entry YUV palette or graphic surface */ - -typedef struct _DXVA_AYUVsample2 { - BYTE bCrValue; - BYTE bCbValue; - BYTE bY_Value; - BYTE bSampleAlpha8; -} DXVA_AYUVsample2, *LPDXVA_AYUVsample2; - -/* Macros for IA44 alpha blending surface samples */ - -typedef BYTE DXVA_IA44sample, *LPDXVA_IA44sample; - -#define readDXVA_IA44index(ptr) (((*(ptr)) & 0xF0) >> 4) -#define readDXVA_IA44alpha(ptr) ((*(ptr)) & 0x0F) - -#define writeDXVA_IA44(ptr, idx, alpha) ((*(ptr)) = (((idx) << 4) | (alpha))) - -#define setDXVA_IA44index(ptr, idx) ((*(ptr)) |= ((idx) << 4)) -#define setDXVA_IA44alpha(ptr, alpha) ((*(ptr)) |= (alpha)) - -/* Macros for AI44 alpha blending surface samples */ - -typedef BYTE DXVA_AI44sample, *LPDXVA_AI44sample; - -#define readDXVA_AI44index(ptr) ((*(ptr)) & 0x0F) -#define readDXVA_AI44alpha(ptr) (((*(ptr)) & 0xF0) >> 4) - -#define writeDXVA_AI44(ptr, idx, alpha) ((*(ptr)) = (((alpha) << 4) | (idx))) - -#define setDXVA_AI44index(ptr, idx) ((*(ptr)) |= (idx)) -#define setDXVA_AI44alpha(ptr, alpha) ((*(ptr)) |= ((alpha) << 4)) - - -/* Highlight data structure */ - -typedef struct _DXVA_Highlight { - WORD wHighlightActive; - WORD wHighlightIndices; - WORD wHighlightAlphas; - RECT HighlightRect; -} DXVA_Highlight, *LPDXVA_Highlight; - -typedef BYTE DXVA_DPXD, *LPDXVA_DPXD; -typedef WORD DXVA_DCCMD, *LPDXVA_DCCMD; - -/* Alpha blend combination */ - -typedef struct _DXVA_BlendCombination { - WORD wPictureSourceIndex; - WORD wBlendedDestinationIndex; - RECT PictureSourceRect16thPel; - RECT PictureDestinationRect; - RECT GraphicSourceRect; - RECT GraphicDestinationRect; - WORD wBlendDelay; - BYTE bBlendOn; - BYTE bWholePlaneAlpha; - DXVA_AYUVsample2 OutsideYUVcolor; -} DXVA_BlendCombination, *LPDXVA_BlendCombination; - - -#pragma pack(push, 16) - - -typedef DXVA_MBctrl_I_HostResidDiff_1 * - LPDXVA_MBctrl_I_HostResidDiff_1; - -typedef DXVA_MBctrl_I_OffHostIDCT_1 * - LPDXVA_MBctrl_I_OffHostIDCT_1; - -typedef DXVA_MBctrl_P_HostResidDiff_1 * - LPDXVA_MBctrl_P_HostResidDiff_1; - -typedef DXVA_MBctrl_P_OffHostIDCT_1 * - LPDXVA_MBctrl_P_OffHostIDCT_1; - - -#pragma pack(pop) - -/* - * Other forms of pictures are constructed in the obvious way - * from the above by adjusting the number of residual difference - * blocks, the number of motion vectors per macroblock, etc. - */ - -#define readDXVA_MBskipsFollowing(ptr) (((ptr)->dwMB_SNL & 0xFF000000) >> 24) -#define readDXVA_MBdataLocation(ptr) (((ptr)->dwMB_SNL & 0x00FFFFFF)) - -#define writeDXVA_MB_SNL(ptr, skips, dloc) ((ptr)->dwMB_SNL = (((skips) << 24) | (dloc))) -#define setDXVA_MBskipsFollowing(ptr, skips) ((ptr)->dwMB_SNL |= ((skips) << 24)) -#define setDXVA_MBdataLocation(ptr, dloc) ((ptr)->dwMB_SNL |= (dloc)) - -#define readDXVA_MvertFieldSel_3(ptr) (((ptr)->wMBtype & 0x8000) >> 15) -#define readDXVA_MvertFieldSel_2(ptr) (((ptr)->wMBtype & 0x4000) >> 14) -#define readDXVA_MvertFieldSel_1(ptr) (((ptr)->wMBtype & 0x2000) >> 13) -#define readDXVA_MvertFieldSel_0(ptr) (((ptr)->wMBtype & 0x1000) >> 12) -#define readDXVA_ReservedBits(ptr) (((ptr)->wMBtype & 0x0800) >> 11) -#define readDXVA_HostResidDiff(ptr) (((ptr)->wMBtype & 0x0400) >> 10) -#define readDXVA_MotionType(ptr) (((ptr)->wMBtype & 0x0300) >> 8) -#define readDXVA_MBscanMethod(ptr) (((ptr)->wMBtype & 0x00C0) >> 6) -#define readDXVA_FieldResidual(ptr) (((ptr)->wMBtype & 0x0020) >> 5) -#define readDXVA_H261LoopFilter(ptr) (((ptr)->wMBtype & 0x0010) >> 4) -#define readDXVA_Motion4MV(ptr) (((ptr)->wMBtype & 0x0008) >> 3) -#define readDXVA_MotionBackward(ptr) (((ptr)->wMBtype & 0x0004) >> 2) -#define readDXVA_MotionForward(ptr) (((ptr)->wMBtype & 0x0002) >> 1) -#define readDXVA_IntraMacroblock(ptr) (((ptr)->wMBtype & 0x0001)) - -#define setDXVA_MvertFieldSel_3(ptr) ((ptr)->wMBtype |= 0x8000) -#define setDXVA_MvertFieldSel_2(ptr) ((ptr)->wMBtype |= 0x4000) -#define setDXVA_MvertFieldSel_1(ptr) ((ptr)->wMBtype |= 0x2000) -#define setDXVA_MvertFieldSel_0(ptr) ((ptr)->wMBtype |= 0x1000) -#define setDXVA_ReservedBits(ptr) ((ptr)->wMBtype |= 0x0800) -#define setDXVA_HostResidDiff(ptr) ((ptr)->wMBtype |= 0x0400) -#define setDXVA_MotionType(ptr, value) ((ptr)->wMBtype |= ((value) << 8)) -#define setDXVA_MBscanMethod(ptr, value) ((ptr)->wMBtype |= ((value) << 6)) -#define setDXVA_FieldResidual(ptr) ((ptr)->wMBtype |= 0x0020) -#define setDXVA_H261LoopFilter(ptr) ((ptr)->wMBtype |= 0x0010) -#define setDXVA_Motion4MV(ptr) ((ptr)->wMBtype |= 0x0008) -#define setDXVA_MotionBackward(ptr) ((ptr)->wMBtype |= 0x0004) -#define setDXVA_MotionForward(ptr) ((ptr)->wMBtype |= 0x0002) -#define setDXVA_IntraMacroblock(ptr) ((ptr)->wMBtype |= 0x0001) - -#define readDXVA_Y___0coded(ptr) (((ptr)->wPatternCode & 0x0800) >> 11) -#define readDXVA_Y___1coded(ptr) (((ptr)->wPatternCode & 0x0400) >> 10) -#define readDXVA_Y___2coded(ptr) (((ptr)->wPatternCode & 0x0200) >> 9) -#define readDXVA_Y___3coded(ptr) (((ptr)->wPatternCode & 0x0100) >> 8) -#define readDXVA_Cb__4coded(ptr) (((ptr)->wPatternCode & 0x0080) >> 7) -#define readDXVA_Cr__5coded(ptr) (((ptr)->wPatternCode & 0x0040) >> 6) -#define readDXVA_Cb__6coded(ptr) (((ptr)->wPatternCode & 0x0020) >> 5) -#define readDXVA_Cr__7coded(ptr) (((ptr)->wPatternCode & 0x0010) >> 4) -#define readDXVA_Cb__8coded(ptr) (((ptr)->wPatternCode & 0x0008) >> 3) -#define readDXVA_Cb__9coded(ptr) (((ptr)->wPatternCode & 0x0004) >> 2) -#define readDXVA_Cr_10coded(ptr) (((ptr)->wPatternCode & 0x0002) >> 1) -#define readDXVA_Cr_11coded(ptr) (((ptr)->wPatternCode & 0x0001)) - -#define readDXVA_Y___0oflow(ptr) (((ptr)->wPC_Overflow & 0x0800) >> 11) -#define readDXVA_Y___1oflow(ptr) (((ptr)->wPC_Overflow & 0x0400) >> 10) -#define readDXVA_Y___2oflow(ptr) (((ptr)->wPC_Overflow & 0x0200) >> 9) -#define readDXVA_Y___3oflow(ptr) (((ptr)->wPC_Overflow & 0x0100) >> 8) -#define readDXVA_Cb__4oflow(ptr) (((ptr)->wPC_Overflow & 0x0080) >> 7) -#define readDXVA_Cr__5oflow(ptr) (((ptr)->wPC_Overflow & 0x0040) >> 6) -#define readDXVA_Cb__6oflow(ptr) (((ptr)->wPC_Overflow & 0x0020) >> 5) -#define readDXVA_Cr__7oflow(ptr) (((ptr)->wPC_Overflow & 0x0010) >> 4) -#define readDXVA_Cb__8oflow(ptr) (((ptr)->wPC_Overflow & 0x0008) >> 3) -#define readDXVA_Cb__9oflow(ptr) (((ptr)->wPC_Overflow & 0x0004) >> 2) -#define readDXVA_Cr_10oflow(ptr) (((ptr)->wPC_Overflow & 0x0002) >> 1) -#define readDXVA_Cr_11oflow(ptr) (((ptr)->wPC_Overflow & 0x0001)) - -#pragma pack(pop, BeforeDXVApacking) -#endif /* __DIRECTX_VA_DECODER__ */ - - -// ------------------------------------------------------------------------- -// -// D3DFORMAT describes a pixel memory layout, DXVA sample format contains -// additional information that describes how the pixels should be interpreted. -// -// ------------------------------------------------------------------------- -#ifndef __DIRECTX_VA_SAMPLEFORMAT__ -#define __DIRECTX_VA_SAMPLEFORMAT__ - -#ifndef DXVABit -#define DXVABit(__x) (1 << __x) -#endif - -typedef enum _DXVA_SampleFormat { - DXVA_SampleFormatMask = 0xFF, // 8 bits used for DXVA Sample format - DXVA_SampleUnknown = 0, - DXVA_SamplePreviousFrame = 1, - DXVA_SampleProgressiveFrame = 2, - DXVA_SampleFieldInterleavedEvenFirst = 3, - DXVA_SampleFieldInterleavedOddFirst = 4, - DXVA_SampleFieldSingleEven = 5, - DXVA_SampleFieldSingleOdd = 6, - DXVA_SampleSubStream = 7 -} DXVA_SampleFormat; - -#define DXVA_ExtractSampleFormat(_sf) ((_sf) & (DXVA_SampleFormatMask)) - -// ------------------------------------------------------------------------- -// -// DXVA Extended color data - occupies the HIWORD of the SampleFormat DWORD -// use the DXVA_ExtractExtColorData macro to extract the individual color -// data fields. -// -// The packed form is: -// VideoTransferFunction (bits 15..12) -// VideoPrimaries (bits 11..8) -// VideoLighting (bits 7..5) -// VideoTransferMatrix (Y'Cb'Cr') OR VideoNominalRange (RGB images) (bits 4..2) -// VideoChromaSubsampling (bits 1..0) -// -// ------------------------------------------------------------------------- - -#define DXVA_ExtractExtColorData(_sf, _Mask, _Shift) \ - (((_sf) >> (_Shift)) & (_Mask)) - -#define DXVA_ExtColorData_ShiftBase 16 - -typedef enum _DXVA_VideoTransferFunction -{ - DXVA_VideoTransFuncMask = DXVABit(15)|DXVABit(14)|DXVABit(13)|DXVABit(12), - DXVA_VideoTransFuncShift = (DXVA_ExtColorData_ShiftBase + 12), - - DXVA_VideoTransFunc_Unknown = 0, - DXVA_VideoTransFunc_10 = 1, - DXVA_VideoTransFunc_18 = 2, - DXVA_VideoTransFunc_20 = 3, - DXVA_VideoTransFunc_22 = 4, - DXVA_VideoTransFunc_22_8bit = 5, - DXVA_VideoTransFunc_22_8bit_240M = 6, - DXVA_VideoTransFunc_24_8bit_sRGB = 7, - DXVA_VideoTransFunc_28 = 8 -} DXVA_VideoTransferFunction; - - -typedef enum _DXVA_VideoPrimaries -{ - DXVA_VideoPrimariesMask = DXVABit(11)|DXVABit(10)|DXVABit(9)|DXVABit(8), - DXVA_VideoPrimariesShift = (DXVA_ExtColorData_ShiftBase + 8), - - DXVA_VideoPrimaries_Unknown = 0, - DXVA_VideoPrimaries_BT601 = 1, - DXVA_VideoPrimaries_BT709 = 2, - DXVA_VideoPrimaries_BT470_2_SysM = 3, - DXVA_VideoPrimaries_BT470_2_SysBG = 4, - DXVA_VideoPrimaries_SMPTE170M = 5, - DXVA_VideoPrimaries_SMPTE240M = 6, - DXVA_VideoPrimaries_EBU3213 = 7, - DXVA_VideoPrimaries_SMPTE_C = 8 -} DXVA_VideoPrimaries; - - -typedef enum _DXVA_VideoLighting -{ - DXVA_VideoLightingMask = DXVABit(7)|DXVABit(6)|DXVABit(5), - DXVA_VideoLightingShift = (DXVA_ExtColorData_ShiftBase + 5), - - DXVA_VideoLighting_Unknown = 0, - DXVA_VideoLighting_bright = 1, - DXVA_VideoLighting_office = 2, - DXVA_VideoLighting_dim = 3, - DXVA_VideoLighting_dark = 4 -} DXVA_VideoLighting; - - -// ------------------------------------------------------------------------- -// Note: -// -// DXVA_NominalRange and DXVA_VideoTransferMatrix are unioned together. -// -// ------------------------------------------------------------------------- -// - -typedef enum _DXVA_VideoTransferMatrix -{ - DXVA_VideoTransferMatrixMask = DXVABit(4)|DXVABit(3)|DXVABit(2), - DXVA_VideoTransferMatrixShift = (DXVA_ExtColorData_ShiftBase + 2), - - DXVA_VideoTransferMatrix_Unknown = 0, - DXVA_VideoTransferMatrix_BT709 = 1, - DXVA_VideoTransferMatrix_BT601 = 2, - DXVA_VideoTransferMatrix_SMPTE240M = 3 -} DXVA_VideoTransferMatrix; - - -typedef enum _DXVA_NominalRange -{ - DXVA_NominalRangeMask = DXVABit(4)|DXVABit(3)|DXVABit(2), - DXVA_NominalRangeShift = (DXVA_ExtColorData_ShiftBase + 2), - - DXVA_NominalRange_Normal = 0, - DXVA_NominalRange_Wide = 1 -} DXVA_NominalRange; - - -typedef enum _DXVA_VideoChromaSubsampling -{ - DXVA_VideoChromaSubsamplingMask = DXVABit(1)|DXVABit(0), - DXVA_VideoChromaSubsamplingShift = (DXVA_ExtColorData_ShiftBase + 0), - - DXVA_VideoChromaSubsampling_Unknown = 0, - DXVA_VideoChromaSubsampling_non_cosited = 1, - DXVA_VideoChromaSubsampling_cosited = 2 -} DXVA_VideoChromaSubsampling; - -#endif - - - -// ------------------------------------------------------------------------- -// -// The definitions that follow describe the video de-interlace interface -// between the VMR and the graphics device driver. This interface is not -// accessable via the IAMVideoAccelerator interface. -// -// ------------------------------------------------------------------------- -// -#ifndef __DIRECTX_VA_DEINTERLACE__ -#define __DIRECTX_VA_DEINTERLACE__ - -typedef LONGLONG REFERENCE_TIME; - -DEFINE_GUID(DXVA_DeinterlaceBobDevice, - 0x335aa36e,0x7884,0x43a4,0x9c,0x91,0x7f,0x87,0xfa,0xf3,0xe3,0x7e); - -DEFINE_GUID(DXVA_DeinterlaceContainerDevice, - 0x0e85cb93,0x3046,0x4ff0,0xae,0xcc,0xd5,0x8c,0xb5,0xf0,0x35,0xfd); - - -#if (DIRECT3D_VERSION < 0x0800) || !defined(DIRECT3D_VERSION) -typedef DWORD D3DFORMAT; -enum { - D3DPOOL_DEFAULT = 0, - D3DPOOL_MANAGED = 1, - D3DPOOL_SYSTEMMEM = 2, - D3DPOOL_SCRATCH = 3, - D3DPOOL_LOCALVIDMEM = 4, - D3DPOOL_NONLOCALVIDMEM = 5, - D3DPOOL_FORCE_DWORD = 0x7fffffff -}; -#endif - - -// ------------------------------------------------------------------------- -// data structures shared by User mode and Kernel mode. -// ------------------------------------------------------------------------- -// - -typedef struct _DXVA_Frequency { - DWORD Numerator; - DWORD Denominator; -} DXVA_Frequency; - -typedef struct _DXVA_VideoDesc { - DWORD Size; - DWORD SampleWidth; - DWORD SampleHeight; - DWORD SampleFormat; // also contains extend color data - D3DFORMAT d3dFormat; - DXVA_Frequency InputSampleFreq; - DXVA_Frequency OutputFrameFreq; -} DXVA_VideoDesc, *LPDXVA_VideoDesc; - -typedef enum _DXVA_VideoProcessCaps { - DXVA_VideoProcess_None = 0x0000, - DXVA_VideoProcess_YUV2RGB = 0x0001, - DXVA_VideoProcess_StretchX = 0x0002, - DXVA_VideoProcess_StretchY = 0x0004, - DXVA_VideoProcess_AlphaBlend = 0x0008, - DXVA_VideoProcess_SubRects = 0x0010, - DXVA_VideoProcess_SubStreams = 0x0020, - DXVA_VideoProcess_SubStreamsExtended = 0x0040, - DXVA_VideoProcess_YUV2RGBExtended = 0x0080, - DXVA_VideoProcess_AlphaBlendExtended = 0x0100 -} DXVA_VideoProcessCaps; - -typedef enum _DXVA_DeinterlaceTech { - - // the algorithm is unknown or proprietary - DXVA_DeinterlaceTech_Unknown = 0x0000, - - // the algorithm creates the missing lines by repeating - // the line either above or below it - this method will look very jaggy and - // isn't recommended - DXVA_DeinterlaceTech_BOBLineReplicate = 0x0001, - - // The algorithm creates the missing lines by vertically stretching each - // video field by a factor of two by averaging two lines - DXVA_DeinterlaceTech_BOBVerticalStretch = 0x0002, - - // or using a [-1, 9, 9, -1]/16 filter across four lines. - DXVA_DeinterlaceTech_BOBVerticalStretch4Tap = 0x0100, - - // the pixels in the missing line are recreated by a median filtering operation - DXVA_DeinterlaceTech_MedianFiltering = 0x0004, - - // the pixels in the missing line are recreated by an edge filter. - // In this process, spatial directional filters are applied to determine - // the orientation of edges in the picture content, and missing - // pixels are created by filtering along (rather than across) the - // detected edges. - DXVA_DeinterlaceTech_EdgeFiltering = 0x0010, - - // the pixels in the missing line are recreated by switching on a field by - // field basis between using either spatial or temporal interpolation - // depending on the amount of motion. - DXVA_DeinterlaceTech_FieldAdaptive = 0x0020, - - // the pixels in the missing line are recreated by switching on a pixel by pixel - // basis between using either spatial or temporal interpolation depending on - // the amount of motion.. - DXVA_DeinterlaceTech_PixelAdaptive = 0x0040, - - // Motion Vector Steering identifies objects within a sequence of video - // fields. The missing pixels are recreated after first aligning the - // movement axes of the individual objects in the scene to make them - // parallel with the time axis. - DXVA_DeinterlaceTech_MotionVectorSteered = 0x0080 - -} DXVA_DeinterlaceTech; - - -typedef struct _DXVA_VideoSample { - REFERENCE_TIME rtStart; - REFERENCE_TIME rtEnd; - DXVA_SampleFormat SampleFormat; // only lower 8 bits used - VOID* lpDDSSrcSurface; -} DXVA_VideoSample, *LPDXVA_VideoSample; - - - -// ------------------------------------------------------------------------- -// DeinterlaceBltEx declarations -// ------------------------------------------------------------------------- -// - -typedef enum _DXVA_SampleFlags { - DXVA_SampleFlagsMask = DXVABit(3)|DXVABit(2)|DXVABit(1)|DXVABit(0), - - DXVA_SampleFlag_Palette_Changed = 0x0001, - DXVA_SampleFlag_SrcRect_Changed = 0x0002, - DXVA_SampleFlag_DstRect_Changed = 0x0004, - DXVA_SampleFlag_ColorData_Changed = 0x0008, -} DXVA_SampleFlags; - -typedef enum _DXVA_DestinationFlags { - DXVA_DestinationFlagMask = DXVABit(3)|DXVABit(2)|DXVABit(1)|DXVABit(0), - - DXVA_DestinationFlag_Background_Changed = 0x0001, - DXVA_DestinationFlag_TargetRect_Changed = 0x0002, - DXVA_DestinationFlag_ColorData_Changed = 0x0004, - DXVA_DestinationFlag_Alpha_Changed = 0x0008 -} DXVA_DestinationFlags; - - -typedef struct _DXVA_VideoSample2 { - REFERENCE_TIME rtStart; - REFERENCE_TIME rtEnd; - DWORD SampleFormat; - DWORD SampleFlags; - VOID* lpDDSSrcSurface; - RECT rcSrc; - RECT rcDst; - DXVA_AYUVsample2 Palette[16]; -} DXVA_VideoSample2, *LPDXVA_VideoSample2; - -typedef struct _DXVA_DeinterlaceCaps { - DWORD Size; - DWORD NumPreviousOutputFrames; - DWORD InputPool; - DWORD NumForwardRefSamples; - DWORD NumBackwardRefSamples; - D3DFORMAT d3dOutputFormat; - DXVA_VideoProcessCaps VideoProcessingCaps; - DXVA_DeinterlaceTech DeinterlaceTechnology; -} DXVA_DeinterlaceCaps, *LPDXVA_DeinterlaceCaps; - - - - -// ------------------------------------------------------------------------- -// Data types used with RenderMoComp in kernel mode -// ------------------------------------------------------------------------- -// - -// Function codes for RenderMoComp - -#define MAX_DEINTERLACE_SURFACES 32 - -typedef struct _DXVA_DeinterlaceBlt { - DWORD Size; - DWORD Reserved; - REFERENCE_TIME rtTarget; - RECT DstRect; - RECT SrcRect; - DWORD NumSourceSurfaces; - FLOAT Alpha; - DXVA_VideoSample Source[MAX_DEINTERLACE_SURFACES]; -} DXVA_DeinterlaceBlt; - -#define DXVA_DeinterlaceBltFnCode 0x01 -// lpInput => DXVA_DeinterlaceBlt* -// lpOuput => NULL /* not currently used */ - - -typedef struct _DXVA_DeinterlaceBltEx { - DWORD Size; - DXVA_AYUVsample2 BackgroundColor; - RECT rcTarget; - REFERENCE_TIME rtTarget; - DWORD NumSourceSurfaces; - FLOAT Alpha; - DXVA_VideoSample2 Source[MAX_DEINTERLACE_SURFACES]; - DWORD DestinationFormat; - DWORD DestinationFlags; -} DXVA_DeinterlaceBltEx; - -#define DXVA_DeinterlaceBltExFnCode 0x02 -// lpInput => DXVA_DeinterlaceBltEx* -// lpOuput => NULL /* not currently used */ - - -#define MAX_DEINTERLACE_DEVICE_GUIDS 32 -typedef struct _DXVA_DeinterlaceQueryAvailableModes { - DWORD Size; - DWORD NumGuids; - GUID Guids[MAX_DEINTERLACE_DEVICE_GUIDS]; -} DXVA_DeinterlaceQueryAvailableModes; - -#define DXVA_DeinterlaceQueryAvailableModesFnCode 0x01 -// lpInput => DXVA_VideoDesc* -// lpOuput => DXVA_DeinterlaceQueryAvailableModes* - - -typedef struct _DXVA_DeinterlaceQueryModeCaps { - DWORD Size; - GUID Guid; - DXVA_VideoDesc VideoDesc; -} DXVA_DeinterlaceQueryModeCaps; - -#define DXVA_DeinterlaceQueryModeCapsFnCode 0x02 -// lpInput => DXVA_DeinterlaceQueryModeCaps* -// lpOuput => DXVA_DeinterlaceCaps* - -#endif /* __DIRECTX_VA_DEINTERLACE__ */ - - -// ------------------------------------------------------------------------- -// -// The definitions that follow describe the video ProcAmp interface -// between the VMR and the graphics device driver. This interface is not -// accessable via the IAMVideoAccelerator interface. -// -// ------------------------------------------------------------------------- -// -#ifndef __DIRECTX_VA_PROCAMPCONTROL__ -#define __DIRECTX_VA_PROCAMPCONTROL__ - -DEFINE_GUID(DXVA_ProcAmpControlDevice, - 0x9f200913,0x2ffd,0x4056,0x9f,0x1e,0xe1,0xb5,0x08,0xf2,0x2d,0xcf); - -typedef enum _DXVA_ProcAmpControlProp { - DXVA_ProcAmp_None = 0x0000, - DXVA_ProcAmp_Brightness = 0x0001, - DXVA_ProcAmp_Contrast = 0x0002, - DXVA_ProcAmp_Hue = 0x0004, - DXVA_ProcAmp_Saturation = 0x0008 -} DXVA_ProcAmpControlProp; - - -typedef struct _DXVA_ProcAmpControlCaps { - DWORD Size; - DWORD InputPool; - D3DFORMAT d3dOutputFormat; - DWORD ProcAmpControlProps;// see DXVA_ProcAmpControlProp - DWORD VideoProcessingCaps;// see DXVA_VideoProcessCaps -} DXVA_ProcAmpControlCaps, *LPDXVA_ProcAmpControlCaps; - -#define DXVA_ProcAmpControlQueryCapsFnCode 0x03 -// lpInput => DXVA_VideoDesc* -// lpOuput => DXVA_ProcAmpControlCaps* - - -typedef struct _DXVA_ProcAmpControlQueryRange { - DWORD Size; - DXVA_ProcAmpControlProp ProcAmpControlProp; - DXVA_VideoDesc VideoDesc; -} DXVA_ProcAmpControlQueryRange, *LPDXVA_ProcAmpControlQueryRange; - -typedef struct _DXVA_VideoPropertyRange { - FLOAT MinValue; - FLOAT MaxValue; - FLOAT DefaultValue; - FLOAT StepSize; -} DXVA_VideoPropertyRange, *LPDXVA_VideoPropertyRange; - -#define DXVA_ProcAmpControlQueryRangeFnCode 0x04 -// lpInput => DXVA_ProcAmpControlQueryRange* -// lpOuput => DXVA_VideoPropertyRange* - - -typedef struct _DXVA_ProcAmpControlBlt { - DWORD Size; - RECT DstRect; - RECT SrcRect; - FLOAT Alpha; - FLOAT Brightness; - FLOAT Contrast; - FLOAT Hue; - FLOAT Saturation; -} DXVA_ProcAmpControlBlt; - -#define DXVA_ProcAmpControlBltFnCode 0x01 -// lpInput => DXVA_ProcAmpControlBlt* -// lpOuput => NULL /* not currently used */ - -#endif /* __DIRECTX_VA_PROCAMPCONTROL__ */ - - -// ------------------------------------------------------------------------- -// -// The definitions that follow describe the Certified Output Protection -// Protocol between the VMR and the graphics device driver. This interface -// is not accessable via the IAMVideoAccelerator interface. -// -// ------------------------------------------------------------------------- -// - -#ifndef __DIRECTX_VA_CERTOUTPUTPROTECT__ -#define __DIRECTX_VA_CERTOUTPUTPROTECT__ - - -DEFINE_GUID(DXVA_COPPDevice, - 0xd2457add,0x8999,0x45ed,0x8a,0x8a,0xd1,0xaa,0x04,0x7b,0xa4,0xd5); - - -// ------------------------------------------------------------------------- -// COPPGetCertificateLength -// ------------------------------------------------------------------------- -#define DXVA_COPPGetCertificateLengthFnCode 0x01 -// lpInput => NULL -// lpOuput => DWORD* - - -// ------------------------------------------------------------------------- -// COPPKeyExchange -// ------------------------------------------------------------------------- -#define DXVA_COPPKeyExchangeFnCode 0x02 -// lpInputData => NULL -// lpOuputData => GUID* - - -// ------------------------------------------------------------------------- -// COPPSequenceStart -// ------------------------------------------------------------------------- -typedef struct _DXVA_COPPSignature { - UCHAR Signature[256]; -} DXVA_COPPSignature, *LPDXVA_COPPSignature; - -#define DXVA_COPPSequenceStartFnCode 0x03 -// lpInputData => DXVA_COPPSignature* -// lpOuputData => NULL - - - -// ------------------------------------------------------------------------- -// COPPCommand -// ------------------------------------------------------------------------- -typedef struct _DXVA_COPPCommand { - GUID macKDI; // 16 bytes - GUID guidCommandID; // 16 bytes - ULONG dwSequence; // 4 bytes - ULONG cbSizeData; // 4 bytes - UCHAR CommandData[4056]; // 4056 bytes (4056+4+4+16+16 = 4096) -} DXVA_COPPCommand, *LPDXVA_COPPCommand; - -#define DXVA_COPPCommandFnCode 0x04 -// lpInputData => DXVA_COPPCommand* -// lpOuputData => NULL - - -DEFINE_GUID(DXVA_COPPSetProtectionLevel, - 0x9bb9327c,0x4eb5,0x4727,0x9f,0x00,0xb4,0x2b,0x09,0x19,0xc0,0xda); - -typedef struct _DXVA_COPPSetProtectionLevelCmdData { - ULONG ProtType; - ULONG ProtLevel; - ULONG TypeSpecificMask; - ULONG TypeSpecificInfo; -} DXVA_COPPSetProtectionLevelCmdData; - - -// Set the HDCP protection level - (0 - 1 DWORD, 4 bytes) - -typedef enum _COPP_HDCP_Protection_Level { - COPP_HDCP_Level0 = 0, - COPP_HDCP_LevelMin = COPP_HDCP_Level0, - COPP_HDCP_Level1 = 1, - COPP_HDCP_LevelMax = COPP_HDCP_Level1, - COPP_HDCP_ForceDWORD = 0x7fffffff -} COPP_HDCP_Protection_Level; - -typedef enum _COPP_CGMSA_Protection_Level { - COPP_CGMSA_CopyFreely = 0, - COPP_CGMSA_LevelMin = COPP_CGMSA_CopyFreely, - COPP_CGMSA_CopyOneGeneration = 2, - COPP_CGMSA_CopyNever = 3, - COPP_CGMSA_RedistributionControlRequired = 0x04, - COPP_CGMSA_LevelMax = (COPP_CGMSA_RedistributionControlRequired + COPP_CGMSA_CopyNever), - COPP_CGMSA_ForceDWORD = 0x7fffffff -} COPP_CGMSA_Protection_Level; - -#define COPP_WSS_FLAG 0x01 // used with DXVA_COPPSetProtectionLevelCmdData::TypeSpecificInfo - -typedef enum _COPP_ACP_Protection_Level { - COPP_ACP_Level0 = 0, - COPP_ACP_LevelMin = COPP_ACP_Level0, - COPP_ACP_Level1 = 1, - COPP_ACP_Level2 = 2, - COPP_ACP_Level3 = 3, - COPP_ACP_LevelMax = COPP_ACP_Level3, - COPP_ACP_ForceDWORD = 0x7fffffff -} COPP_ACP_Protection_Level; - -#define COPP_NoProtectionLevelAvailable -1 -#define COPP_DefaultProtectionLevel 0 - - -// -// Bit flags of possible protection types. Note that it is possible to apply -// different protection settings to a single connector. -// -enum { - COPP_ProtectionType_Unknown = 0x80000000, - COPP_ProtectionType_None = 0x00000000, - COPP_ProtectionType_HDCP = 0x00000001, - COPP_ProtectionType_ACP = 0x00000002, - COPP_ProtectionType_CGMSA = 0x00000004, - COPP_ProtectionType_Mask = 0x80000007, - COPP_ProtectionType_Reserved = 0x7FFFFFF8 -}; - -// ------------------------------------------------------------------------- -// COPPQueryStatus -// ------------------------------------------------------------------------- -typedef struct _DXVA_COPPStatusInput { - GUID rApp; // 16 bytes - GUID guidStatusRequestID;// 16 bytes - ULONG dwSequence; // 4 bytes - ULONG cbSizeData; // 4 bytes - UCHAR StatusData[4056]; // 4056 bytes (4056+4+4+16+16 = 4096) -} DXVA_COPPStatusInput, *LPDXVA_COPPStatusInput; - -typedef struct _DXVA_COPPStatusOutput { - GUID macKDI; // 16 bytes - ULONG cbSizeData; // 4 bytes - UCHAR COPPStatus[4076]; // 4076 bytes (4076+16+4 = 4096) -} DXVA_COPPStatusOutput, *LPDXVA_COPPStatusOutput; - -typedef enum _COPP_StatusFlags { - COPP_StatusNormal = 0x00, - COPP_LinkLost = 0x01, - COPP_RenegotiationRequired = 0x02, - COPP_StatusFlagsReserved = 0xFFFFFFFC -} COPP_StatusFlags; - -typedef struct _DXVA_COPPStatusData { - GUID rApp; - ULONG dwFlags; // See COPP_StatusFlags above - ULONG dwData; - ULONG TypeSpecificMask; - ULONG TypeSpecificInfo; -} DXVA_COPPStatusData; - -typedef struct _DXVA_COPPStatusDisplayData { - GUID rApp; - ULONG dwFlags; // See COPP_StatusFlags above - ULONG DisplayWidth; - ULONG Displayheight; - ULONG Format; // also contains extended color data - ULONG d3dFormat; - ULONG FreqNumerator; - ULONG FreqDenominator; -} DXVA_COPPStatusDisplayData; - -typedef enum _COPP_StatusHDCPFlags { - COPP_HDCPReceiver = 0x00, - COPP_HDCPRepeater = 0x01 -} COPP_StatusHDCPFlags; - -typedef struct _DXVA_COPPStatusHDCPKeyData { - GUID rApp; - ULONG dwFlags; // See COPP_StatusFlags above - ULONG dwHDCPFlags; // See COPP_StatusHDCPFlags above - GUID BKey; // Lower 40 bits - GUID reserved1; - GUID reserved2; -} DXVA_COPPStatusHDCPKeyData; - - -#define DXVA_COPPQueryStatusFnCode 0x05 -// lpInputData => DXVA_COPPStatusInput* -// lpOuputData => DXVA_COPPStatusOutput* - - -// -// Status GUID and enumerations -// -DEFINE_GUID(DXVA_COPPQueryConnectorType, - 0x81d0bfd5,0x6afe,0x48c2,0x99,0xc0,0x95,0xa0,0x8f,0x97,0xc5,0xda); - -typedef enum _COPP_ConnectorType { - COPP_ConnectorType_Unknown = -1, - COPP_ConnectorType_VGA = 0, - COPP_ConnectorType_SVideo = 1, - COPP_ConnectorType_CompositeVideo = 2, - COPP_ConnectorType_ComponentVideo = 3, - COPP_ConnectorType_DVI = 4, - COPP_ConnectorType_HDMI = 5, - COPP_ConnectorType_LVDS = 6, - COPP_ConnectorType_TMDS = 7, - COPP_ConnectorType_D_JPN = 8, - COPP_ConnectorType_Internal = 0x80000000, // can be combined with the other connector types - COPP_ConnectorType_ForceDWORD = 0x7fffffff /* force 32-bit size enum */ -} COPP_ConnectorType; - -DEFINE_GUID(DXVA_COPPQueryProtectionType, - 0x38f2a801,0x9a6c,0x48bb,0x91,0x07,0xb6,0x69,0x6e,0x6f,0x17,0x97); - -DEFINE_GUID(DXVA_COPPQueryLocalProtectionLevel, - 0xb2075857,0x3eda,0x4d5d,0x88,0xdb,0x74,0x8f,0x8c,0x1a,0x05,0x49); - -DEFINE_GUID(DXVA_COPPQueryGlobalProtectionLevel, - 0x1957210a,0x7766,0x452a,0xb9,0x9a,0xd2,0x7a,0xed,0x54,0xf0,0x3a); - -DEFINE_GUID(DXVA_COPPQueryDisplayData, - 0xd7bf1ba3,0xad13,0x4f8e,0xaf,0x98,0x0d,0xcb,0x3c,0xa2,0x04,0xcc); - -DEFINE_GUID(DXVA_COPPQueryHDCPKeyData, - 0xdb59d74, 0xa992, 0x492e, 0xa0, 0xbd, 0xc2, 0x3f, 0xda, 0x56, 0x4e, 0x0); - -DEFINE_GUID(DXVA_COPPQueryBusData, - 0xc6f4d673, 0x6174, 0x4184, 0x8e, 0x35, 0xf6, 0xdb, 0x52, 0x0, 0xbc, 0xba); - -typedef enum _COPP_BusType { - COPP_BusType_Unknown = 0, - COPP_BusType_PCI = 1, - COPP_BusType_PCIX = 2, - COPP_BusType_PCIExpress = 3, - COPP_BusType_AGP = 4, - COPP_BusType_Integrated = 0x80000000, // can be combined with the other bus types - COPP_BusType_ForceDWORD = 0x7fffffff /* force 32-bit size enum */ -} COPP_BusType; - - -#endif /* __DIRECTX_VA_CERTOUTPUTPROTECT__ */ - -#ifdef __cplusplus -} -#endif - -#endif /* __DIRECTX_VA__ */ +//------------------------------------------------------------------------------ +// File: DXVA.h +// +// Desc: DirectX Video Acceleration header file. +// +// Copyright (c) 1999 - 2002, Microsoft Corporation. All rights reserved. +//------------------------------------------------------------------------------ + + +#ifndef __DIRECTX_VA__ +#define __DIRECTX_VA__ + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef __DIRECTX_VA_COPP_ONLY +#define __DIRECTX_VA_DECODER__ +#define __DIRECTX_VA_PROCAMPCONTROL__ +#define __DIRECTX_VA_DEINTERLACE__ +#endif + + +// ------------------------------------------------------------------------- +// +// The definitions that follow describe the DirectX Video Acceleration +// decoding interface. +// This interface is accessable via the IAMVideoAccelerator interface. +// +// ------------------------------------------------------------------------- +// +#ifndef __DIRECTX_VA_DECODER__ +#define __DIRECTX_VA_DECODER__ + +DEFINE_GUID(DXVA_ModeNone, 0x1b81be00, 0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); +DEFINE_GUID(DXVA_ModeH261_A, 0x1b81be01, 0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); +DEFINE_GUID(DXVA_ModeH261_B, 0x1b81be02, 0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); + +DEFINE_GUID(DXVA_ModeH263_A, 0x1b81be03, 0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); +DEFINE_GUID(DXVA_ModeH263_B, 0x1b81be04, 0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); +DEFINE_GUID(DXVA_ModeH263_C, 0x1b81be05, 0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); +DEFINE_GUID(DXVA_ModeH263_D, 0x1b81be06, 0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); +DEFINE_GUID(DXVA_ModeH263_E, 0x1b81be07, 0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); +DEFINE_GUID(DXVA_ModeH263_F, 0x1b81be08, 0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); + +DEFINE_GUID(DXVA_ModeMPEG1_A, 0x1b81be09, 0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); + +DEFINE_GUID(DXVA_ModeMPEG2_A, 0x1b81be0A, 0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); +DEFINE_GUID(DXVA_ModeMPEG2_B, 0x1b81be0B, 0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); +DEFINE_GUID(DXVA_ModeMPEG2_C, 0x1b81be0C, 0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); +DEFINE_GUID(DXVA_ModeMPEG2_D, 0x1b81be0D, 0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); + +DEFINE_GUID(DXVA_ModeWMV8_A, 0x1b81be80, 0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); +DEFINE_GUID(DXVA_ModeWMV8_B, 0x1b81be81, 0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); + +DEFINE_GUID(DXVA_ModeWMV9_A, 0x1b81be90, 0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); +DEFINE_GUID(DXVA_ModeWMV9_B, 0x1b81be91, 0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); +DEFINE_GUID(DXVA_ModeWMV9_Ai, 0x1b81be92, 0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); +DEFINE_GUID(DXVA_ModeWMV9_Bi, 0x1b81be93, 0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); + + +DEFINE_GUID(DXVA_NoEncrypt, 0x1b81beD0, 0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); + +#define DXVA_RESTRICTED_MODE_UNRESTRICTED 0xFFFF +#define DXVA_RESTRICTED_MODE_H261_A 1 +#define DXVA_RESTRICTED_MODE_H261_B 2 + +#define DXVA_RESTRICTED_MODE_H263_A 3 +#define DXVA_RESTRICTED_MODE_H263_B 4 +#define DXVA_RESTRICTED_MODE_H263_C 5 +#define DXVA_RESTRICTED_MODE_H263_D 6 +#define DXVA_RESTRICTED_MODE_H263_E 7 +#define DXVA_RESTRICTED_MODE_H263_F 8 + +#define DXVA_RESTRICTED_MODE_MPEG1_A 9 + +#define DXVA_RESTRICTED_MODE_MPEG2_A 0xA +#define DXVA_RESTRICTED_MODE_MPEG2_B 0xB +#define DXVA_RESTRICTED_MODE_MPEG2_C 0xC +#define DXVA_RESTRICTED_MODE_MPEG2_D 0xD + +#define DXVA_RESTRICTED_MODE_WMV8_A 0x80 +#define DXVA_RESTRICTED_MODE_WMV8_B 0x81 + +#define DXVA_RESTRICTED_MODE_WMV9_A 0x90 +#define DXVA_RESTRICTED_MODE_WMV9_B 0x91 +#define DXVA_RESTRICTED_MODE_WMV9_Ai 0x92 +#define DXVA_RESTRICTED_MODE_WMV9_Bi 0x93 + + +#define DXVA_COMPBUFFER_TYPE_THAT_IS_NOT_USED 0 +#define DXVA_PICTURE_DECODE_BUFFER 1 +#define DXVA_MACROBLOCK_CONTROL_BUFFER 2 +#define DXVA_RESIDUAL_DIFFERENCE_BUFFER 3 +#define DXVA_DEBLOCKING_CONTROL_BUFFER 4 +#define DXVA_INVERSE_QUANTIZATION_MATRIX_BUFFER 5 +#define DXVA_SLICE_CONTROL_BUFFER 6 +#define DXVA_BITSTREAM_DATA_BUFFER 7 +#define DXVA_AYUV_BUFFER 8 +#define DXVA_IA44_SURFACE_BUFFER 9 +#define DXVA_DPXD_SURFACE_BUFFER 10 +#define DXVA_HIGHLIGHT_BUFFER 11 +#define DXVA_DCCMD_SURFACE_BUFFER 12 +#define DXVA_ALPHA_BLEND_COMBINATION_BUFFER 13 +#define DXVA_PICTURE_RESAMPLE_BUFFER 14 +#define DXVA_READ_BACK_BUFFER 15 + +#define DXVA_NUM_TYPES_COMP_BUFFERS 16 + +/* values for bDXVA_Func */ +#define DXVA_PICTURE_DECODING_FUNCTION 1 +#define DXVA_ALPHA_BLEND_DATA_LOAD_FUNCTION 2 +#define DXVA_ALPHA_BLEND_COMBINATION_FUNCTION 3 +#define DXVA_PICTURE_RESAMPLE_FUNCTION 4 + +/* values returned from Execute command in absence of read-back */ +#define DXVA_EXECUTE_RETURN_OK 0 +#define DXVA_EXECUTE_RETURN_DATA_ERROR_MINOR 1 +#define DXVA_EXECUTE_RETURN_DATA_ERROR_SIGNIF 2 +#define DXVA_EXECUTE_RETURN_DATA_ERROR_SEVERE 3 +#define DXVA_EXECUTE_RETURN_OTHER_ERROR_SEVERE 4 + + +#pragma pack(push, BeforeDXVApacking, 1) + + +typedef struct _DXVA_ConnectMode { + GUID guidMode; + WORD wRestrictedMode; +} DXVA_ConnectMode, *LPDXVA_ConnectMode; + + +typedef DWORD DXVA_ConfigQueryOrReplyFunc, *LPDXVA_ConfigQueryOrReplyFunc; + +#define DXVA_QUERYORREPLYFUNCFLAG_DECODER_PROBE_QUERY 0xFFFFF1 +#define DXVA_QUERYORREPLYFUNCFLAG_DECODER_LOCK_QUERY 0xFFFFF5 +#define DXVA_QUERYORREPLYFUNCFLAG_ACCEL_PROBE_OK_COPY 0xFFFFF8 +#define DXVA_QUERYORREPLYFUNCFLAG_ACCEL_PROBE_OK_PLUS 0xFFFFF9 +#define DXVA_QUERYORREPLYFUNCFLAG_ACCEL_LOCK_OK_COPY 0xFFFFFC +#define DXVA_QUERYORREPLYFUNCFLAG_ACCEL_PROBE_FALSE_PLUS 0xFFFFFB +#define DXVA_QUERYORREPLYFUNCFLAG_ACCEL_LOCK_FALSE_PLUS 0xFFFFFF + +#define readDXVA_QueryOrReplyFuncFlag(ptr) ((*(ptr)) >> 8) + +#define readDXVA_QueryOrReplyFuncFlag_ACCEL(ptr) (((*(ptr)) >> 11) & 1) +#define readDXVA_QueryOrReplyFuncFlag_LOCK(ptr) (((*(ptr)) >> 10) & 1) +#define readDXVA_QueryOrReplyFuncFlag_BAD(ptr) (((*(ptr)) >> 9) & 1) +#define readDXVA_QueryOrReplyFuncFlag_PLUS(ptr) (((*(ptr)) >> 8) & 1) + +#define readDXVA_QueryOrReplyFuncFunc(ptr) ((*(ptr)) & 0xFF) + +#define writeDXVA_QueryOrReplyFunc(ptr, flg, fnc) ((*(ptr)) = ((flg) << 8) | (fnc)) + +#define setDXVA_QueryOrReplyFuncFlag(ptr, flg) ((*(ptr)) |= ((flg) << 8)) +#define setDXVA_QueryOrReplyFuncFunc(ptr, fnc) ((*(ptr)) |= (fnc)); + +typedef DWORD DXVA_EncryptProtocolFunc, *LPDXVA_EncryptProtocolFunc; + +#define DXVA_ENCRYPTPROTOCOLFUNCFLAG_HOST 0xFFFF00 +#define DXVA_ENCRYPTPROTOCOLFUNCFLAG_ACCEL 0xFFFF08 + +#define readDXVA_EncryptProtocolFuncFlag(ptr) ((*(ptr)) >> 8) +#define readDXVA_EncryptProtocolFuncFlag_ACCEL(ptr) (((*(ptr)) >> 11) & 1) + +#define readDXVA_EncryptProtocolFuncFunc(ptr) ((*(ptr)) & 0xFF) + +#define writeDXVA_EncryptProtocolFunc(ptr, flg, fnc) ((*(ptr)) = ((flg) << 8) | (fnc)) + +#define setDXVA_EncryptProtocolFuncFlag(ptr, flg) ((*(ptr)) |= ((flg) << 8)) +#define setDXVA_EncryptProtocolFuncFunc(ptr, fnc) ((*(ptr)) |= (fnc)); + +typedef struct _DXVA_EncryptProtocolHeader { + DXVA_EncryptProtocolFunc dwFunction; + DWORD ReservedBits[3]; + GUID guidEncryptProtocol; +} DXVA_EncryptProtocolHeader, *LPDXVA_EncryptProtocolHeader; + +typedef struct _DXVA_ConfigPictureDecode { + + // Operation Indicated + DXVA_ConfigQueryOrReplyFunc dwFunction; + + // Alignment + DWORD dwReservedBits[3]; + + // Encryption GUIDs + GUID guidConfigBitstreamEncryption; + GUID guidConfigMBcontrolEncryption; + GUID guidConfigResidDiffEncryption; + + // Bitstream Processing Indicator + BYTE bConfigBitstreamRaw; + + // Macroblock Control Config + BYTE bConfigMBcontrolRasterOrder; + + // Host Resid Diff Config + BYTE bConfigResidDiffHost; + BYTE bConfigSpatialResid8; + BYTE bConfigResid8Subtraction; + BYTE bConfigSpatialHost8or9Clipping; + BYTE bConfigSpatialResidInterleaved; + BYTE bConfigIntraResidUnsigned; + + // Accelerator Resid Diff Config + BYTE bConfigResidDiffAccelerator; + BYTE bConfigHostInverseScan; + BYTE bConfigSpecificIDCT; + BYTE bConfig4GroupedCoefs; +} DXVA_ConfigPictureDecode, *LPDXVA_ConfigPictureDecode; + + +/* Picture Decoding Parameters */ + +typedef struct _DXVA_PictureParameters { + + WORD wDecodedPictureIndex; + WORD wDeblockedPictureIndex; + + WORD wForwardRefPictureIndex; + WORD wBackwardRefPictureIndex; + + WORD wPicWidthInMBminus1; + WORD wPicHeightInMBminus1; + + BYTE bMacroblockWidthMinus1; + BYTE bMacroblockHeightMinus1; + + BYTE bBlockWidthMinus1; + BYTE bBlockHeightMinus1; + + BYTE bBPPminus1; + + BYTE bPicStructure; + BYTE bSecondField; + BYTE bPicIntra; + BYTE bPicBackwardPrediction; + + BYTE bBidirectionalAveragingMode; + BYTE bMVprecisionAndChromaRelation; + BYTE bChromaFormat; + + BYTE bPicScanFixed; + BYTE bPicScanMethod; + BYTE bPicReadbackRequests; + + BYTE bRcontrol; + BYTE bPicSpatialResid8; + BYTE bPicOverflowBlocks; + BYTE bPicExtrapolation; + + BYTE bPicDeblocked; + BYTE bPicDeblockConfined; + BYTE bPic4MVallowed; + BYTE bPicOBMC; + BYTE bPicBinPB; + BYTE bMV_RPS; + + BYTE bReservedBits; + + WORD wBitstreamFcodes; + WORD wBitstreamPCEelements; + BYTE bBitstreamConcealmentNeed; + BYTE bBitstreamConcealmentMethod; + +} DXVA_PictureParameters, *LPDXVA_PictureParameters; + + + +/* Picture Resampling */ + +typedef struct _DXVA_PicResample { + + WORD wPicResampleSourcePicIndex; + WORD wPicResampleDestPicIndex; + + WORD wPicResampleRcontrol; + BYTE bPicResampleExtrapWidth; + BYTE bPicResampleExtrapHeight; + + DWORD dwPicResampleSourceWidth; + DWORD dwPicResampleSourceHeight; + + DWORD dwPicResampleDestWidth; + DWORD dwPicResampleDestHeight; + + DWORD dwPicResampleFullDestWidth; + DWORD dwPicResampleFullDestHeight; + +} DXVA_PicResample, *LPDXVA_PicResample; + + +#define DXVA_CHROMA_FORMAT_420 1 +#define DXVA_CHROMA_FORMAT_422 2 +#define DXVA_CHROMA_FORMAT_444 3 + +#define DXVA_PICTURE_STRUCTURE_TOP_FIELD 1 +#define DXVA_PICTURE_STRUCTURE_BOTTOM_FIELD 2 +#define DXVA_PICTURE_STRUCTURE_FRAME 3 + +#define DXVA_BIDIRECTIONAL_AVERAGING_MPEG2_ROUND 0 +#define DXVA_BIDIRECTIONAL_AVERAGING_H263_TRUNC 1 + +#define DXVA_MV_PRECISION_AND_CHROMA_RELATION_MPEG2 0 +#define DXVA_MV_PRECISION_AND_CHROMA_RELATION_H263 1 +#define DXVA_MV_PRECISION_AND_CHROMA_RELATION_H261 2 + +#define DXVA_SCAN_METHOD_ZIG_ZAG 0 +#define DXVA_SCAN_METHOD_ALTERNATE_VERTICAL 1 +#define DXVA_SCAN_METHOD_ALTERNATE_HORIZONTAL 2 +#define DXVA_SCAN_METHOD_ARBITRARY 3 + +#define DXVA_BITSTREAM_CONCEALMENT_NEED_UNLIKELY 0 +#define DXVA_BITSTREAM_CONCEALMENT_NEED_MILD 1 +#define DXVA_BITSTREAM_CONCEALMENT_NEED_LIKELY 2 +#define DXVA_BITSTREAM_CONCEALMENT_NEED_SEVERE 3 + +#define DXVA_BITSTREAM_CONCEALMENT_METHOD_UNSPECIFIED 0 +#define DXVA_BITSTREAM_CONCEALMENT_METHOD_INTRA 1 +#define DXVA_BITSTREAM_CONCEALMENT_METHOD_FORWARD 2 +#define DXVA_BITSTREAM_CONCEALMENT_METHOD_BACKWARD 3 + + +/* Buffer Description Data */ + +typedef struct _DXVA_BufferDescription { + DWORD dwTypeIndex; + DWORD dwBufferIndex; + DWORD dwDataOffset; + DWORD dwDataSize; + DWORD dwFirstMBaddress; + DWORD dwNumMBsInBuffer; + DWORD dwWidth; + DWORD dwHeight; + DWORD dwStride; + DWORD dwReservedBits; +} DXVA_BufferDescription, *LPDXVA_BufferDescription; + + +/* Off-Host IDCT Coefficient Data Structures */ + +typedef struct _DXVA_TCoef4Group { + BYTE TCoefIDX[4]; + SHORT TCoefValue[4]; +} DXVA_TCoef4Group, *LPDXVA_TCoef4Group; + +typedef struct _DXVA_TCoefSingle { + WORD wIndexWithEOB; + SHORT TCoefValue; +} DXVA_TCoefSingle, *LPDXVA_TCoefSingle; + +/* Macros for Reading EOB and Index Values */ + +#define readDXVA_TCoefSingleIDX(ptr) ((ptr)->wIndexWithEOB >> 1) +#define readDXVA_TCoefSingleEOB(ptr) ((ptr)->wIndexWithEOB & 1) + +/* Macro for Writing EOB and Index Values */ + +#define writeDXVA_TCoefSingleIndexWithEOB(ptr, idx, eob) ((ptr)->wIndexWithEOB = ((idx) << 1) | (eob)) +#define setDXVA_TCoefSingleIDX(ptr, idx) ((ptr)->wIndexWithEOB |= ((idx) << 1)) +#define setDXVA_TCoefSingleEOB(ptr) ((ptr)->wIndexWithEOB |= 1) + +/* Spatial-Domain Residual Difference Blocks */ + +#define DXVA_USUAL_BLOCK_WIDTH 8 +#define DXVA_USUAL_BLOCK_HEIGHT 8 +#define DXVA_USUAL_BLOCK_SIZE (DXVA_USUAL_BLOCK_WIDTH * DXVA_USUAL_BLOCK_HEIGHT) + +typedef SHORT DXVA_Sample16[DXVA_USUAL_BLOCK_SIZE]; +typedef signed char DXVA_Sample8 [DXVA_USUAL_BLOCK_SIZE]; + +/* Deblocking Filter Control Structure */ + +typedef BYTE DXVA_DeblockingEdgeControl; + +typedef DXVA_DeblockingEdgeControl * LPDXVA_DeblockingEdgeControl; + +/* Macros for Reading STRENGTH and FilterOn */ + +#define readDXVA_EdgeFilterStrength(ptr) ((*(ptr)) >> 1) +#define readDXVA_EdgeFilterOn(ptr) ((*(ptr)) & 1) + +/* Macro for Writing STRENGTH and FilterOn */ + +#define writeDXVA_DeblockingEdgeControl(ptr, str, fon) ((*(ptr)) = ((str) << 1) | (fon)) +#define setDXVA_EdgeFilterStrength(ptr, str) ((*(ptr)) |= ((str) << 1)) +#define setDXVA_EdgeFilterOn(ptr) ((*(ptr)) |= 1) + + +/* Macroblock Control Command Data Structures */ + +typedef struct _DXVA_MVvalue { + SHORT horz, vert; +} DXVA_MVvalue, *LPDXVA_MVvalue; + + +/* Inverse Quantization Matrices */ + +typedef struct _DXVA_QmatrixData { + BYTE bNewQmatrix[4]; /* intra Y, inter Y, intra chroma, inter chroma */ + WORD Qmatrix[4][DXVA_USUAL_BLOCK_WIDTH * DXVA_USUAL_BLOCK_HEIGHT]; +} DXVA_QmatrixData, *LPDXVA_QmatrixData; + + +/* Slice Control Buffer Data */ + +typedef struct _DXVA_SliceInfo { + WORD wHorizontalPosition; + WORD wVerticalPosition; + DWORD dwSliceBitsInBuffer; + DWORD dwSliceDataLocation; + BYTE bStartCodeBitOffset; + BYTE bReservedBits; + WORD wMBbitOffset; + WORD wNumberMBsInSlice; + WORD wQuantizerScaleCode; + WORD wBadSliceChopping; +} DXVA_SliceInfo, *LPDXVA_SliceInfo; + + +#define DXVA_NumMV_OBMC_off_BinPBwith4MV_off 4 +#define DXVA_NumMV_OBMC_off_BinPBwith4MV_on (4+1) +#define DXVA_NumMV_OBMC_on__BinPB_off (10) +#define DXVA_NumMV_OBMC_on__BinPB_on (11) /* not current standards */ + +#define DXVA_NumBlocksPerMB_420 (4+2+0) +#define DXVA_NumBlocksPerMB_422 (4+2+2) +#define DXVA_NumBlocksPerMB_444 (4+4+4) + +/* Basic form for I pictures */ +/* Host Residual Differences */ +typedef struct _DXVA_MBctrl_I_HostResidDiff_1 { + WORD wMBaddress; + WORD wMBtype; + DWORD dwMB_SNL; + WORD wPatternCode; + WORD wPC_Overflow; /* zero if not overflow format */ + DWORD dwReservedBits2; +} DXVA_MBctrl_I_HostResidDiff_1; + +/* Basic form for I pictures */ +/* Off-Host IDCT, 4:2:0 sampling */ +typedef struct _DXVA_MBctrl_I_OffHostIDCT_1 { + WORD wMBaddress; + WORD wMBtype; + DWORD dwMB_SNL; + WORD wPatternCode; + BYTE bNumCoef[DXVA_NumBlocksPerMB_420]; +} DXVA_MBctrl_I_OffHostIDCT_1; + +/* Basic form for P and B pictures */ +/* Should also be used for concealment MVs in MPEG-2 I pictures */ +/* Without OBMC, without BinPB and 4MV together, without MV RPS */ +/* Host Residual Differences */ +typedef struct _DXVA_MBctrl_P_HostResidDiff_1 { + WORD wMBaddress; + WORD wMBtype; + DWORD dwMB_SNL; + WORD wPatternCode; + WORD wPC_Overflow; /* zero if not overflow format */ + DWORD dwReservedBits2; + DXVA_MVvalue MVector[DXVA_NumMV_OBMC_off_BinPBwith4MV_off]; +} DXVA_MBctrl_P_HostResidDiff_1; + +/* Basic form for P and B pictures */ +/* Without OBMC, without BinPB and 4MV together, without MV RPS */ +/* Off-Host IDCT, 4:2:0 sampling */ +typedef struct _DXVA_MBctrl_P_OffHostIDCT_1 { + WORD wMBaddress; + WORD wMBtype; + DWORD dwMB_SNL; + WORD wPatternCode; + BYTE bNumCoef[DXVA_NumBlocksPerMB_420]; + DXVA_MVvalue MVector[DXVA_NumMV_OBMC_off_BinPBwith4MV_off]; +} DXVA_MBctrl_P_OffHostIDCT_1; + +/* How to load alpha blending graphic data */ +typedef struct _DXVA_ConfigAlphaLoad { + + // Operation Indicated + DXVA_ConfigQueryOrReplyFunc dwFunction; + + // Alignment + DWORD dwReservedBits[3]; + + BYTE bConfigDataType; +} DXVA_ConfigAlphaLoad, *LPDXVA_ConfigAlphaLoad; + +#define DXVA_CONFIG_DATA_TYPE_IA44 0 +#define DXVA_CONFIG_DATA_TYPE_AI44 1 +#define DXVA_CONFIG_DATA_TYPE_DPXD 2 +#define DXVA_CONFIG_DATA_TYPE_AYUV 3 + + +/* How to combine alpha blending graphic data */ +typedef struct _DXVA_ConfigAlphaCombine { + + // Operation Indicated + DXVA_ConfigQueryOrReplyFunc dwFunction; + + // Alignment + DWORD dwReservedBits[3]; + + BYTE bConfigBlendType; + BYTE bConfigPictureResizing; + BYTE bConfigOnlyUsePicDestRectArea; + BYTE bConfigGraphicResizing; + BYTE bConfigWholePlaneAlpha; + +} DXVA_ConfigAlphaCombine, *LPDXVA_ConfigAlphaCombine; + +#define DXVA_CONFIG_BLEND_TYPE_FRONT_BUFFER 0 +#define DXVA_CONFIG_BLEND_TYPE_BACK_HARDWARE 1 + + +/* AYUV sample for 16-entry YUV palette or graphic surface */ + +typedef struct _DXVA_AYUVsample2 { + BYTE bCrValue; + BYTE bCbValue; + BYTE bY_Value; + BYTE bSampleAlpha8; +} DXVA_AYUVsample2, *LPDXVA_AYUVsample2; + +/* Macros for IA44 alpha blending surface samples */ + +typedef BYTE DXVA_IA44sample, *LPDXVA_IA44sample; + +#define readDXVA_IA44index(ptr) (((*(ptr)) & 0xF0) >> 4) +#define readDXVA_IA44alpha(ptr) ((*(ptr)) & 0x0F) + +#define writeDXVA_IA44(ptr, idx, alpha) ((*(ptr)) = (((idx) << 4) | (alpha))) + +#define setDXVA_IA44index(ptr, idx) ((*(ptr)) |= ((idx) << 4)) +#define setDXVA_IA44alpha(ptr, alpha) ((*(ptr)) |= (alpha)) + +/* Macros for AI44 alpha blending surface samples */ + +typedef BYTE DXVA_AI44sample, *LPDXVA_AI44sample; + +#define readDXVA_AI44index(ptr) ((*(ptr)) & 0x0F) +#define readDXVA_AI44alpha(ptr) (((*(ptr)) & 0xF0) >> 4) + +#define writeDXVA_AI44(ptr, idx, alpha) ((*(ptr)) = (((alpha) << 4) | (idx))) + +#define setDXVA_AI44index(ptr, idx) ((*(ptr)) |= (idx)) +#define setDXVA_AI44alpha(ptr, alpha) ((*(ptr)) |= ((alpha) << 4)) + + +/* Highlight data structure */ + +typedef struct _DXVA_Highlight { + WORD wHighlightActive; + WORD wHighlightIndices; + WORD wHighlightAlphas; + RECT HighlightRect; +} DXVA_Highlight, *LPDXVA_Highlight; + +typedef BYTE DXVA_DPXD, *LPDXVA_DPXD; +typedef WORD DXVA_DCCMD, *LPDXVA_DCCMD; + +/* Alpha blend combination */ + +typedef struct _DXVA_BlendCombination { + WORD wPictureSourceIndex; + WORD wBlendedDestinationIndex; + RECT PictureSourceRect16thPel; + RECT PictureDestinationRect; + RECT GraphicSourceRect; + RECT GraphicDestinationRect; + WORD wBlendDelay; + BYTE bBlendOn; + BYTE bWholePlaneAlpha; + DXVA_AYUVsample2 OutsideYUVcolor; +} DXVA_BlendCombination, *LPDXVA_BlendCombination; + + +#pragma pack(push, 16) + + +typedef DXVA_MBctrl_I_HostResidDiff_1 * + LPDXVA_MBctrl_I_HostResidDiff_1; + +typedef DXVA_MBctrl_I_OffHostIDCT_1 * + LPDXVA_MBctrl_I_OffHostIDCT_1; + +typedef DXVA_MBctrl_P_HostResidDiff_1 * + LPDXVA_MBctrl_P_HostResidDiff_1; + +typedef DXVA_MBctrl_P_OffHostIDCT_1 * + LPDXVA_MBctrl_P_OffHostIDCT_1; + + +#pragma pack(pop) + +/* + * Other forms of pictures are constructed in the obvious way + * from the above by adjusting the number of residual difference + * blocks, the number of motion vectors per macroblock, etc. + */ + +#define readDXVA_MBskipsFollowing(ptr) (((ptr)->dwMB_SNL & 0xFF000000) >> 24) +#define readDXVA_MBdataLocation(ptr) (((ptr)->dwMB_SNL & 0x00FFFFFF)) + +#define writeDXVA_MB_SNL(ptr, skips, dloc) ((ptr)->dwMB_SNL = (((skips) << 24) | (dloc))) +#define setDXVA_MBskipsFollowing(ptr, skips) ((ptr)->dwMB_SNL |= ((skips) << 24)) +#define setDXVA_MBdataLocation(ptr, dloc) ((ptr)->dwMB_SNL |= (dloc)) + +#define readDXVA_MvertFieldSel_3(ptr) (((ptr)->wMBtype & 0x8000) >> 15) +#define readDXVA_MvertFieldSel_2(ptr) (((ptr)->wMBtype & 0x4000) >> 14) +#define readDXVA_MvertFieldSel_1(ptr) (((ptr)->wMBtype & 0x2000) >> 13) +#define readDXVA_MvertFieldSel_0(ptr) (((ptr)->wMBtype & 0x1000) >> 12) +#define readDXVA_ReservedBits(ptr) (((ptr)->wMBtype & 0x0800) >> 11) +#define readDXVA_HostResidDiff(ptr) (((ptr)->wMBtype & 0x0400) >> 10) +#define readDXVA_MotionType(ptr) (((ptr)->wMBtype & 0x0300) >> 8) +#define readDXVA_MBscanMethod(ptr) (((ptr)->wMBtype & 0x00C0) >> 6) +#define readDXVA_FieldResidual(ptr) (((ptr)->wMBtype & 0x0020) >> 5) +#define readDXVA_H261LoopFilter(ptr) (((ptr)->wMBtype & 0x0010) >> 4) +#define readDXVA_Motion4MV(ptr) (((ptr)->wMBtype & 0x0008) >> 3) +#define readDXVA_MotionBackward(ptr) (((ptr)->wMBtype & 0x0004) >> 2) +#define readDXVA_MotionForward(ptr) (((ptr)->wMBtype & 0x0002) >> 1) +#define readDXVA_IntraMacroblock(ptr) (((ptr)->wMBtype & 0x0001)) + +#define setDXVA_MvertFieldSel_3(ptr) ((ptr)->wMBtype |= 0x8000) +#define setDXVA_MvertFieldSel_2(ptr) ((ptr)->wMBtype |= 0x4000) +#define setDXVA_MvertFieldSel_1(ptr) ((ptr)->wMBtype |= 0x2000) +#define setDXVA_MvertFieldSel_0(ptr) ((ptr)->wMBtype |= 0x1000) +#define setDXVA_ReservedBits(ptr) ((ptr)->wMBtype |= 0x0800) +#define setDXVA_HostResidDiff(ptr) ((ptr)->wMBtype |= 0x0400) +#define setDXVA_MotionType(ptr, value) ((ptr)->wMBtype |= ((value) << 8)) +#define setDXVA_MBscanMethod(ptr, value) ((ptr)->wMBtype |= ((value) << 6)) +#define setDXVA_FieldResidual(ptr) ((ptr)->wMBtype |= 0x0020) +#define setDXVA_H261LoopFilter(ptr) ((ptr)->wMBtype |= 0x0010) +#define setDXVA_Motion4MV(ptr) ((ptr)->wMBtype |= 0x0008) +#define setDXVA_MotionBackward(ptr) ((ptr)->wMBtype |= 0x0004) +#define setDXVA_MotionForward(ptr) ((ptr)->wMBtype |= 0x0002) +#define setDXVA_IntraMacroblock(ptr) ((ptr)->wMBtype |= 0x0001) + +#define readDXVA_Y___0coded(ptr) (((ptr)->wPatternCode & 0x0800) >> 11) +#define readDXVA_Y___1coded(ptr) (((ptr)->wPatternCode & 0x0400) >> 10) +#define readDXVA_Y___2coded(ptr) (((ptr)->wPatternCode & 0x0200) >> 9) +#define readDXVA_Y___3coded(ptr) (((ptr)->wPatternCode & 0x0100) >> 8) +#define readDXVA_Cb__4coded(ptr) (((ptr)->wPatternCode & 0x0080) >> 7) +#define readDXVA_Cr__5coded(ptr) (((ptr)->wPatternCode & 0x0040) >> 6) +#define readDXVA_Cb__6coded(ptr) (((ptr)->wPatternCode & 0x0020) >> 5) +#define readDXVA_Cr__7coded(ptr) (((ptr)->wPatternCode & 0x0010) >> 4) +#define readDXVA_Cb__8coded(ptr) (((ptr)->wPatternCode & 0x0008) >> 3) +#define readDXVA_Cb__9coded(ptr) (((ptr)->wPatternCode & 0x0004) >> 2) +#define readDXVA_Cr_10coded(ptr) (((ptr)->wPatternCode & 0x0002) >> 1) +#define readDXVA_Cr_11coded(ptr) (((ptr)->wPatternCode & 0x0001)) + +#define readDXVA_Y___0oflow(ptr) (((ptr)->wPC_Overflow & 0x0800) >> 11) +#define readDXVA_Y___1oflow(ptr) (((ptr)->wPC_Overflow & 0x0400) >> 10) +#define readDXVA_Y___2oflow(ptr) (((ptr)->wPC_Overflow & 0x0200) >> 9) +#define readDXVA_Y___3oflow(ptr) (((ptr)->wPC_Overflow & 0x0100) >> 8) +#define readDXVA_Cb__4oflow(ptr) (((ptr)->wPC_Overflow & 0x0080) >> 7) +#define readDXVA_Cr__5oflow(ptr) (((ptr)->wPC_Overflow & 0x0040) >> 6) +#define readDXVA_Cb__6oflow(ptr) (((ptr)->wPC_Overflow & 0x0020) >> 5) +#define readDXVA_Cr__7oflow(ptr) (((ptr)->wPC_Overflow & 0x0010) >> 4) +#define readDXVA_Cb__8oflow(ptr) (((ptr)->wPC_Overflow & 0x0008) >> 3) +#define readDXVA_Cb__9oflow(ptr) (((ptr)->wPC_Overflow & 0x0004) >> 2) +#define readDXVA_Cr_10oflow(ptr) (((ptr)->wPC_Overflow & 0x0002) >> 1) +#define readDXVA_Cr_11oflow(ptr) (((ptr)->wPC_Overflow & 0x0001)) + +#pragma pack(pop, BeforeDXVApacking) +#endif /* __DIRECTX_VA_DECODER__ */ + + +// ------------------------------------------------------------------------- +// +// D3DFORMAT describes a pixel memory layout, DXVA sample format contains +// additional information that describes how the pixels should be interpreted. +// +// ------------------------------------------------------------------------- +#ifndef __DIRECTX_VA_SAMPLEFORMAT__ +#define __DIRECTX_VA_SAMPLEFORMAT__ + +#ifndef DXVABit +#define DXVABit(__x) (1 << __x) +#endif + +typedef enum _DXVA_SampleFormat { + DXVA_SampleFormatMask = 0xFF, // 8 bits used for DXVA Sample format + DXVA_SampleUnknown = 0, + DXVA_SamplePreviousFrame = 1, + DXVA_SampleProgressiveFrame = 2, + DXVA_SampleFieldInterleavedEvenFirst = 3, + DXVA_SampleFieldInterleavedOddFirst = 4, + DXVA_SampleFieldSingleEven = 5, + DXVA_SampleFieldSingleOdd = 6, + DXVA_SampleSubStream = 7 +} DXVA_SampleFormat; + +#define DXVA_ExtractSampleFormat(_sf) ((_sf) & (DXVA_SampleFormatMask)) + +// ------------------------------------------------------------------------- +// +// DXVA Extended color data - occupies the HIWORD of the SampleFormat DWORD +// use the DXVA_ExtractExtColorData macro to extract the individual color +// data fields. +// +// The packed form is: +// VideoTransferFunction (bits 15..12) +// VideoPrimaries (bits 11..8) +// VideoLighting (bits 7..5) +// VideoTransferMatrix (Y'Cb'Cr') OR VideoNominalRange (RGB images) (bits 4..2) +// VideoChromaSubsampling (bits 1..0) +// +// ------------------------------------------------------------------------- + +#define DXVA_ExtractExtColorData(_sf, _Mask, _Shift) \ + (((_sf) >> (_Shift)) & (_Mask)) + +#define DXVA_ExtColorData_ShiftBase 16 + +typedef enum _DXVA_VideoTransferFunction +{ + DXVA_VideoTransFuncMask = DXVABit(15)|DXVABit(14)|DXVABit(13)|DXVABit(12), + DXVA_VideoTransFuncShift = (DXVA_ExtColorData_ShiftBase + 12), + + DXVA_VideoTransFunc_Unknown = 0, + DXVA_VideoTransFunc_10 = 1, + DXVA_VideoTransFunc_18 = 2, + DXVA_VideoTransFunc_20 = 3, + DXVA_VideoTransFunc_22 = 4, + DXVA_VideoTransFunc_22_8bit = 5, + DXVA_VideoTransFunc_22_8bit_240M = 6, + DXVA_VideoTransFunc_24_8bit_sRGB = 7, + DXVA_VideoTransFunc_28 = 8 +} DXVA_VideoTransferFunction; + + +typedef enum _DXVA_VideoPrimaries +{ + DXVA_VideoPrimariesMask = DXVABit(11)|DXVABit(10)|DXVABit(9)|DXVABit(8), + DXVA_VideoPrimariesShift = (DXVA_ExtColorData_ShiftBase + 8), + + DXVA_VideoPrimaries_Unknown = 0, + DXVA_VideoPrimaries_BT601 = 1, + DXVA_VideoPrimaries_BT709 = 2, + DXVA_VideoPrimaries_BT470_2_SysM = 3, + DXVA_VideoPrimaries_BT470_2_SysBG = 4, + DXVA_VideoPrimaries_SMPTE170M = 5, + DXVA_VideoPrimaries_SMPTE240M = 6, + DXVA_VideoPrimaries_EBU3213 = 7, + DXVA_VideoPrimaries_SMPTE_C = 8 +} DXVA_VideoPrimaries; + + +typedef enum _DXVA_VideoLighting +{ + DXVA_VideoLightingMask = DXVABit(7)|DXVABit(6)|DXVABit(5), + DXVA_VideoLightingShift = (DXVA_ExtColorData_ShiftBase + 5), + + DXVA_VideoLighting_Unknown = 0, + DXVA_VideoLighting_bright = 1, + DXVA_VideoLighting_office = 2, + DXVA_VideoLighting_dim = 3, + DXVA_VideoLighting_dark = 4 +} DXVA_VideoLighting; + + +// ------------------------------------------------------------------------- +// Note: +// +// DXVA_NominalRange and DXVA_VideoTransferMatrix are unioned together. +// +// ------------------------------------------------------------------------- +// + +typedef enum _DXVA_VideoTransferMatrix +{ + DXVA_VideoTransferMatrixMask = DXVABit(4)|DXVABit(3)|DXVABit(2), + DXVA_VideoTransferMatrixShift = (DXVA_ExtColorData_ShiftBase + 2), + + DXVA_VideoTransferMatrix_Unknown = 0, + DXVA_VideoTransferMatrix_BT709 = 1, + DXVA_VideoTransferMatrix_BT601 = 2, + DXVA_VideoTransferMatrix_SMPTE240M = 3 +} DXVA_VideoTransferMatrix; + + +typedef enum _DXVA_NominalRange +{ + DXVA_NominalRangeMask = DXVABit(4)|DXVABit(3)|DXVABit(2), + DXVA_NominalRangeShift = (DXVA_ExtColorData_ShiftBase + 2), + + DXVA_NominalRange_Normal = 0, + DXVA_NominalRange_Wide = 1 +} DXVA_NominalRange; + + +typedef enum _DXVA_VideoChromaSubsampling +{ + DXVA_VideoChromaSubsamplingMask = DXVABit(1)|DXVABit(0), + DXVA_VideoChromaSubsamplingShift = (DXVA_ExtColorData_ShiftBase + 0), + + DXVA_VideoChromaSubsampling_Unknown = 0, + DXVA_VideoChromaSubsampling_non_cosited = 1, + DXVA_VideoChromaSubsampling_cosited = 2 +} DXVA_VideoChromaSubsampling; + +#endif + + + +// ------------------------------------------------------------------------- +// +// The definitions that follow describe the video de-interlace interface +// between the VMR and the graphics device driver. This interface is not +// accessable via the IAMVideoAccelerator interface. +// +// ------------------------------------------------------------------------- +// +#ifndef __DIRECTX_VA_DEINTERLACE__ +#define __DIRECTX_VA_DEINTERLACE__ + +typedef LONGLONG REFERENCE_TIME; + +DEFINE_GUID(DXVA_DeinterlaceBobDevice, + 0x335aa36e,0x7884,0x43a4,0x9c,0x91,0x7f,0x87,0xfa,0xf3,0xe3,0x7e); + +DEFINE_GUID(DXVA_DeinterlaceContainerDevice, + 0x0e85cb93,0x3046,0x4ff0,0xae,0xcc,0xd5,0x8c,0xb5,0xf0,0x35,0xfd); + + +#if (DIRECT3D_VERSION < 0x0800) || !defined(DIRECT3D_VERSION) +typedef DWORD D3DFORMAT; +enum { + D3DPOOL_DEFAULT = 0, + D3DPOOL_MANAGED = 1, + D3DPOOL_SYSTEMMEM = 2, + D3DPOOL_SCRATCH = 3, + D3DPOOL_LOCALVIDMEM = 4, + D3DPOOL_NONLOCALVIDMEM = 5, + D3DPOOL_FORCE_DWORD = 0x7fffffff +}; +#endif + + +// ------------------------------------------------------------------------- +// data structures shared by User mode and Kernel mode. +// ------------------------------------------------------------------------- +// + +typedef struct _DXVA_Frequency { + DWORD Numerator; + DWORD Denominator; +} DXVA_Frequency; + +typedef struct _DXVA_VideoDesc { + DWORD Size; + DWORD SampleWidth; + DWORD SampleHeight; + DWORD SampleFormat; // also contains extend color data + D3DFORMAT d3dFormat; + DXVA_Frequency InputSampleFreq; + DXVA_Frequency OutputFrameFreq; +} DXVA_VideoDesc, *LPDXVA_VideoDesc; + +typedef enum _DXVA_VideoProcessCaps { + DXVA_VideoProcess_None = 0x0000, + DXVA_VideoProcess_YUV2RGB = 0x0001, + DXVA_VideoProcess_StretchX = 0x0002, + DXVA_VideoProcess_StretchY = 0x0004, + DXVA_VideoProcess_AlphaBlend = 0x0008, + DXVA_VideoProcess_SubRects = 0x0010, + DXVA_VideoProcess_SubStreams = 0x0020, + DXVA_VideoProcess_SubStreamsExtended = 0x0040, + DXVA_VideoProcess_YUV2RGBExtended = 0x0080, + DXVA_VideoProcess_AlphaBlendExtended = 0x0100 +} DXVA_VideoProcessCaps; + +typedef enum _DXVA_DeinterlaceTech { + + // the algorithm is unknown or proprietary + DXVA_DeinterlaceTech_Unknown = 0x0000, + + // the algorithm creates the missing lines by repeating + // the line either above or below it - this method will look very jaggy and + // isn't recommended + DXVA_DeinterlaceTech_BOBLineReplicate = 0x0001, + + // The algorithm creates the missing lines by vertically stretching each + // video field by a factor of two by averaging two lines + DXVA_DeinterlaceTech_BOBVerticalStretch = 0x0002, + + // or using a [-1, 9, 9, -1]/16 filter across four lines. + DXVA_DeinterlaceTech_BOBVerticalStretch4Tap = 0x0100, + + // the pixels in the missing line are recreated by a median filtering operation + DXVA_DeinterlaceTech_MedianFiltering = 0x0004, + + // the pixels in the missing line are recreated by an edge filter. + // In this process, spatial directional filters are applied to determine + // the orientation of edges in the picture content, and missing + // pixels are created by filtering along (rather than across) the + // detected edges. + DXVA_DeinterlaceTech_EdgeFiltering = 0x0010, + + // the pixels in the missing line are recreated by switching on a field by + // field basis between using either spatial or temporal interpolation + // depending on the amount of motion. + DXVA_DeinterlaceTech_FieldAdaptive = 0x0020, + + // the pixels in the missing line are recreated by switching on a pixel by pixel + // basis between using either spatial or temporal interpolation depending on + // the amount of motion.. + DXVA_DeinterlaceTech_PixelAdaptive = 0x0040, + + // Motion Vector Steering identifies objects within a sequence of video + // fields. The missing pixels are recreated after first aligning the + // movement axes of the individual objects in the scene to make them + // parallel with the time axis. + DXVA_DeinterlaceTech_MotionVectorSteered = 0x0080 + +} DXVA_DeinterlaceTech; + + +typedef struct _DXVA_VideoSample { + REFERENCE_TIME rtStart; + REFERENCE_TIME rtEnd; + DXVA_SampleFormat SampleFormat; // only lower 8 bits used + VOID* lpDDSSrcSurface; +} DXVA_VideoSample, *LPDXVA_VideoSample; + + + +// ------------------------------------------------------------------------- +// DeinterlaceBltEx declarations +// ------------------------------------------------------------------------- +// + +typedef enum _DXVA_SampleFlags { + DXVA_SampleFlagsMask = DXVABit(3)|DXVABit(2)|DXVABit(1)|DXVABit(0), + + DXVA_SampleFlag_Palette_Changed = 0x0001, + DXVA_SampleFlag_SrcRect_Changed = 0x0002, + DXVA_SampleFlag_DstRect_Changed = 0x0004, + DXVA_SampleFlag_ColorData_Changed = 0x0008, +} DXVA_SampleFlags; + +typedef enum _DXVA_DestinationFlags { + DXVA_DestinationFlagMask = DXVABit(3)|DXVABit(2)|DXVABit(1)|DXVABit(0), + + DXVA_DestinationFlag_Background_Changed = 0x0001, + DXVA_DestinationFlag_TargetRect_Changed = 0x0002, + DXVA_DestinationFlag_ColorData_Changed = 0x0004, + DXVA_DestinationFlag_Alpha_Changed = 0x0008 +} DXVA_DestinationFlags; + + +typedef struct _DXVA_VideoSample2 { + REFERENCE_TIME rtStart; + REFERENCE_TIME rtEnd; + DWORD SampleFormat; + DWORD SampleFlags; + VOID* lpDDSSrcSurface; + RECT rcSrc; + RECT rcDst; + DXVA_AYUVsample2 Palette[16]; +} DXVA_VideoSample2, *LPDXVA_VideoSample2; + +typedef struct _DXVA_DeinterlaceCaps { + DWORD Size; + DWORD NumPreviousOutputFrames; + DWORD InputPool; + DWORD NumForwardRefSamples; + DWORD NumBackwardRefSamples; + D3DFORMAT d3dOutputFormat; + DXVA_VideoProcessCaps VideoProcessingCaps; + DXVA_DeinterlaceTech DeinterlaceTechnology; +} DXVA_DeinterlaceCaps, *LPDXVA_DeinterlaceCaps; + + + + +// ------------------------------------------------------------------------- +// Data types used with RenderMoComp in kernel mode +// ------------------------------------------------------------------------- +// + +// Function codes for RenderMoComp + +#define MAX_DEINTERLACE_SURFACES 32 + +typedef struct _DXVA_DeinterlaceBlt { + DWORD Size; + DWORD Reserved; + REFERENCE_TIME rtTarget; + RECT DstRect; + RECT SrcRect; + DWORD NumSourceSurfaces; + FLOAT Alpha; + DXVA_VideoSample Source[MAX_DEINTERLACE_SURFACES]; +} DXVA_DeinterlaceBlt; + +#define DXVA_DeinterlaceBltFnCode 0x01 +// lpInput => DXVA_DeinterlaceBlt* +// lpOuput => NULL /* not currently used */ + + +typedef struct _DXVA_DeinterlaceBltEx { + DWORD Size; + DXVA_AYUVsample2 BackgroundColor; + RECT rcTarget; + REFERENCE_TIME rtTarget; + DWORD NumSourceSurfaces; + FLOAT Alpha; + DXVA_VideoSample2 Source[MAX_DEINTERLACE_SURFACES]; + DWORD DestinationFormat; + DWORD DestinationFlags; +} DXVA_DeinterlaceBltEx; + +#define DXVA_DeinterlaceBltExFnCode 0x02 +// lpInput => DXVA_DeinterlaceBltEx* +// lpOuput => NULL /* not currently used */ + + +#define MAX_DEINTERLACE_DEVICE_GUIDS 32 +typedef struct _DXVA_DeinterlaceQueryAvailableModes { + DWORD Size; + DWORD NumGuids; + GUID Guids[MAX_DEINTERLACE_DEVICE_GUIDS]; +} DXVA_DeinterlaceQueryAvailableModes; + +#define DXVA_DeinterlaceQueryAvailableModesFnCode 0x01 +// lpInput => DXVA_VideoDesc* +// lpOuput => DXVA_DeinterlaceQueryAvailableModes* + + +typedef struct _DXVA_DeinterlaceQueryModeCaps { + DWORD Size; + GUID Guid; + DXVA_VideoDesc VideoDesc; +} DXVA_DeinterlaceQueryModeCaps; + +#define DXVA_DeinterlaceQueryModeCapsFnCode 0x02 +// lpInput => DXVA_DeinterlaceQueryModeCaps* +// lpOuput => DXVA_DeinterlaceCaps* + +#endif /* __DIRECTX_VA_DEINTERLACE__ */ + + +// ------------------------------------------------------------------------- +// +// The definitions that follow describe the video ProcAmp interface +// between the VMR and the graphics device driver. This interface is not +// accessable via the IAMVideoAccelerator interface. +// +// ------------------------------------------------------------------------- +// +#ifndef __DIRECTX_VA_PROCAMPCONTROL__ +#define __DIRECTX_VA_PROCAMPCONTROL__ + +DEFINE_GUID(DXVA_ProcAmpControlDevice, + 0x9f200913,0x2ffd,0x4056,0x9f,0x1e,0xe1,0xb5,0x08,0xf2,0x2d,0xcf); + +typedef enum _DXVA_ProcAmpControlProp { + DXVA_ProcAmp_None = 0x0000, + DXVA_ProcAmp_Brightness = 0x0001, + DXVA_ProcAmp_Contrast = 0x0002, + DXVA_ProcAmp_Hue = 0x0004, + DXVA_ProcAmp_Saturation = 0x0008 +} DXVA_ProcAmpControlProp; + + +typedef struct _DXVA_ProcAmpControlCaps { + DWORD Size; + DWORD InputPool; + D3DFORMAT d3dOutputFormat; + DWORD ProcAmpControlProps;// see DXVA_ProcAmpControlProp + DWORD VideoProcessingCaps;// see DXVA_VideoProcessCaps +} DXVA_ProcAmpControlCaps, *LPDXVA_ProcAmpControlCaps; + +#define DXVA_ProcAmpControlQueryCapsFnCode 0x03 +// lpInput => DXVA_VideoDesc* +// lpOuput => DXVA_ProcAmpControlCaps* + + +typedef struct _DXVA_ProcAmpControlQueryRange { + DWORD Size; + DXVA_ProcAmpControlProp ProcAmpControlProp; + DXVA_VideoDesc VideoDesc; +} DXVA_ProcAmpControlQueryRange, *LPDXVA_ProcAmpControlQueryRange; + +typedef struct _DXVA_VideoPropertyRange { + FLOAT MinValue; + FLOAT MaxValue; + FLOAT DefaultValue; + FLOAT StepSize; +} DXVA_VideoPropertyRange, *LPDXVA_VideoPropertyRange; + +#define DXVA_ProcAmpControlQueryRangeFnCode 0x04 +// lpInput => DXVA_ProcAmpControlQueryRange* +// lpOuput => DXVA_VideoPropertyRange* + + +typedef struct _DXVA_ProcAmpControlBlt { + DWORD Size; + RECT DstRect; + RECT SrcRect; + FLOAT Alpha; + FLOAT Brightness; + FLOAT Contrast; + FLOAT Hue; + FLOAT Saturation; +} DXVA_ProcAmpControlBlt; + +#define DXVA_ProcAmpControlBltFnCode 0x01 +// lpInput => DXVA_ProcAmpControlBlt* +// lpOuput => NULL /* not currently used */ + +#endif /* __DIRECTX_VA_PROCAMPCONTROL__ */ + + +// ------------------------------------------------------------------------- +// +// The definitions that follow describe the Certified Output Protection +// Protocol between the VMR and the graphics device driver. This interface +// is not accessable via the IAMVideoAccelerator interface. +// +// ------------------------------------------------------------------------- +// + +#ifndef __DIRECTX_VA_CERTOUTPUTPROTECT__ +#define __DIRECTX_VA_CERTOUTPUTPROTECT__ + + +DEFINE_GUID(DXVA_COPPDevice, + 0xd2457add,0x8999,0x45ed,0x8a,0x8a,0xd1,0xaa,0x04,0x7b,0xa4,0xd5); + + +// ------------------------------------------------------------------------- +// COPPGetCertificateLength +// ------------------------------------------------------------------------- +#define DXVA_COPPGetCertificateLengthFnCode 0x01 +// lpInput => NULL +// lpOuput => DWORD* + + +// ------------------------------------------------------------------------- +// COPPKeyExchange +// ------------------------------------------------------------------------- +#define DXVA_COPPKeyExchangeFnCode 0x02 +// lpInputData => NULL +// lpOuputData => GUID* + + +// ------------------------------------------------------------------------- +// COPPSequenceStart +// ------------------------------------------------------------------------- +typedef struct _DXVA_COPPSignature { + UCHAR Signature[256]; +} DXVA_COPPSignature, *LPDXVA_COPPSignature; + +#define DXVA_COPPSequenceStartFnCode 0x03 +// lpInputData => DXVA_COPPSignature* +// lpOuputData => NULL + + + +// ------------------------------------------------------------------------- +// COPPCommand +// ------------------------------------------------------------------------- +typedef struct _DXVA_COPPCommand { + GUID macKDI; // 16 bytes + GUID guidCommandID; // 16 bytes + ULONG dwSequence; // 4 bytes + ULONG cbSizeData; // 4 bytes + UCHAR CommandData[4056]; // 4056 bytes (4056+4+4+16+16 = 4096) +} DXVA_COPPCommand, *LPDXVA_COPPCommand; + +#define DXVA_COPPCommandFnCode 0x04 +// lpInputData => DXVA_COPPCommand* +// lpOuputData => NULL + + +DEFINE_GUID(DXVA_COPPSetProtectionLevel, + 0x9bb9327c,0x4eb5,0x4727,0x9f,0x00,0xb4,0x2b,0x09,0x19,0xc0,0xda); + +typedef struct _DXVA_COPPSetProtectionLevelCmdData { + ULONG ProtType; + ULONG ProtLevel; + ULONG TypeSpecificMask; + ULONG TypeSpecificInfo; +} DXVA_COPPSetProtectionLevelCmdData; + + +// Set the HDCP protection level - (0 - 1 DWORD, 4 bytes) + +typedef enum _COPP_HDCP_Protection_Level { + COPP_HDCP_Level0 = 0, + COPP_HDCP_LevelMin = COPP_HDCP_Level0, + COPP_HDCP_Level1 = 1, + COPP_HDCP_LevelMax = COPP_HDCP_Level1, + COPP_HDCP_ForceDWORD = 0x7fffffff +} COPP_HDCP_Protection_Level; + +typedef enum _COPP_CGMSA_Protection_Level { + COPP_CGMSA_CopyFreely = 0, + COPP_CGMSA_LevelMin = COPP_CGMSA_CopyFreely, + COPP_CGMSA_CopyOneGeneration = 2, + COPP_CGMSA_CopyNever = 3, + COPP_CGMSA_RedistributionControlRequired = 0x04, + COPP_CGMSA_LevelMax = (COPP_CGMSA_RedistributionControlRequired + COPP_CGMSA_CopyNever), + COPP_CGMSA_ForceDWORD = 0x7fffffff +} COPP_CGMSA_Protection_Level; + +#define COPP_WSS_FLAG 0x01 // used with DXVA_COPPSetProtectionLevelCmdData::TypeSpecificInfo + +typedef enum _COPP_ACP_Protection_Level { + COPP_ACP_Level0 = 0, + COPP_ACP_LevelMin = COPP_ACP_Level0, + COPP_ACP_Level1 = 1, + COPP_ACP_Level2 = 2, + COPP_ACP_Level3 = 3, + COPP_ACP_LevelMax = COPP_ACP_Level3, + COPP_ACP_ForceDWORD = 0x7fffffff +} COPP_ACP_Protection_Level; + +#define COPP_NoProtectionLevelAvailable -1 +#define COPP_DefaultProtectionLevel 0 + + +// +// Bit flags of possible protection types. Note that it is possible to apply +// different protection settings to a single connector. +// +enum { + COPP_ProtectionType_Unknown = 0x80000000, + COPP_ProtectionType_None = 0x00000000, + COPP_ProtectionType_HDCP = 0x00000001, + COPP_ProtectionType_ACP = 0x00000002, + COPP_ProtectionType_CGMSA = 0x00000004, + COPP_ProtectionType_Mask = 0x80000007, + COPP_ProtectionType_Reserved = 0x7FFFFFF8 +}; + +// ------------------------------------------------------------------------- +// COPPQueryStatus +// ------------------------------------------------------------------------- +typedef struct _DXVA_COPPStatusInput { + GUID rApp; // 16 bytes + GUID guidStatusRequestID;// 16 bytes + ULONG dwSequence; // 4 bytes + ULONG cbSizeData; // 4 bytes + UCHAR StatusData[4056]; // 4056 bytes (4056+4+4+16+16 = 4096) +} DXVA_COPPStatusInput, *LPDXVA_COPPStatusInput; + +typedef struct _DXVA_COPPStatusOutput { + GUID macKDI; // 16 bytes + ULONG cbSizeData; // 4 bytes + UCHAR COPPStatus[4076]; // 4076 bytes (4076+16+4 = 4096) +} DXVA_COPPStatusOutput, *LPDXVA_COPPStatusOutput; + +typedef enum _COPP_StatusFlags { + COPP_StatusNormal = 0x00, + COPP_LinkLost = 0x01, + COPP_RenegotiationRequired = 0x02, + COPP_StatusFlagsReserved = 0xFFFFFFFC +} COPP_StatusFlags; + +typedef struct _DXVA_COPPStatusData { + GUID rApp; + ULONG dwFlags; // See COPP_StatusFlags above + ULONG dwData; + ULONG TypeSpecificMask; + ULONG TypeSpecificInfo; +} DXVA_COPPStatusData; + +typedef struct _DXVA_COPPStatusDisplayData { + GUID rApp; + ULONG dwFlags; // See COPP_StatusFlags above + ULONG DisplayWidth; + ULONG Displayheight; + ULONG Format; // also contains extended color data + ULONG d3dFormat; + ULONG FreqNumerator; + ULONG FreqDenominator; +} DXVA_COPPStatusDisplayData; + +typedef enum _COPP_StatusHDCPFlags { + COPP_HDCPReceiver = 0x00, + COPP_HDCPRepeater = 0x01 +} COPP_StatusHDCPFlags; + +typedef struct _DXVA_COPPStatusHDCPKeyData { + GUID rApp; + ULONG dwFlags; // See COPP_StatusFlags above + ULONG dwHDCPFlags; // See COPP_StatusHDCPFlags above + GUID BKey; // Lower 40 bits + GUID reserved1; + GUID reserved2; +} DXVA_COPPStatusHDCPKeyData; + + +#define DXVA_COPPQueryStatusFnCode 0x05 +// lpInputData => DXVA_COPPStatusInput* +// lpOuputData => DXVA_COPPStatusOutput* + + +// +// Status GUID and enumerations +// +DEFINE_GUID(DXVA_COPPQueryConnectorType, + 0x81d0bfd5,0x6afe,0x48c2,0x99,0xc0,0x95,0xa0,0x8f,0x97,0xc5,0xda); + +typedef enum _COPP_ConnectorType { + COPP_ConnectorType_Unknown = -1, + COPP_ConnectorType_VGA = 0, + COPP_ConnectorType_SVideo = 1, + COPP_ConnectorType_CompositeVideo = 2, + COPP_ConnectorType_ComponentVideo = 3, + COPP_ConnectorType_DVI = 4, + COPP_ConnectorType_HDMI = 5, + COPP_ConnectorType_LVDS = 6, + COPP_ConnectorType_TMDS = 7, + COPP_ConnectorType_D_JPN = 8, + COPP_ConnectorType_Internal = 0x80000000, // can be combined with the other connector types + COPP_ConnectorType_ForceDWORD = 0x7fffffff /* force 32-bit size enum */ +} COPP_ConnectorType; + +DEFINE_GUID(DXVA_COPPQueryProtectionType, + 0x38f2a801,0x9a6c,0x48bb,0x91,0x07,0xb6,0x69,0x6e,0x6f,0x17,0x97); + +DEFINE_GUID(DXVA_COPPQueryLocalProtectionLevel, + 0xb2075857,0x3eda,0x4d5d,0x88,0xdb,0x74,0x8f,0x8c,0x1a,0x05,0x49); + +DEFINE_GUID(DXVA_COPPQueryGlobalProtectionLevel, + 0x1957210a,0x7766,0x452a,0xb9,0x9a,0xd2,0x7a,0xed,0x54,0xf0,0x3a); + +DEFINE_GUID(DXVA_COPPQueryDisplayData, + 0xd7bf1ba3,0xad13,0x4f8e,0xaf,0x98,0x0d,0xcb,0x3c,0xa2,0x04,0xcc); + +DEFINE_GUID(DXVA_COPPQueryHDCPKeyData, + 0xdb59d74, 0xa992, 0x492e, 0xa0, 0xbd, 0xc2, 0x3f, 0xda, 0x56, 0x4e, 0x0); + +DEFINE_GUID(DXVA_COPPQueryBusData, + 0xc6f4d673, 0x6174, 0x4184, 0x8e, 0x35, 0xf6, 0xdb, 0x52, 0x0, 0xbc, 0xba); + +typedef enum _COPP_BusType { + COPP_BusType_Unknown = 0, + COPP_BusType_PCI = 1, + COPP_BusType_PCIX = 2, + COPP_BusType_PCIExpress = 3, + COPP_BusType_AGP = 4, + COPP_BusType_Integrated = 0x80000000, // can be combined with the other bus types + COPP_BusType_ForceDWORD = 0x7fffffff /* force 32-bit size enum */ +} COPP_BusType; + + +#endif /* __DIRECTX_VA_CERTOUTPUTPROTECT__ */ + +#ifdef __cplusplus +} +#endif + +#endif /* __DIRECTX_VA__ */ diff --git a/videoInputSrcAndDemos/libs/DShow/Include/edevctrl.h b/videoInputSrcAndDemos/libs/DShow/Include/edevctrl.h index f08769a..0751044 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/edevctrl.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/edevctrl.h @@ -1,346 +1,346 @@ -/*++ - -Copyright (C) Microsoft Corporation, 1998 - 1999 - -Module Name: - - EDevCtrl.h - -Abstract: - - This header contain structures and peroperty sets for - interfacing to an external device, like a DV. - The code is modeled after DirectShow's Vcrctrl Sample - (VCR Control Filter). It contain IAMExtDevice, - IAMExtTransport, and IAMTimecodeReader interfaces, and - a new interface IAMAdvancedAVControl() is added - for additional advanced device controls. - - Note: (From DShow DDK) - The VCR control sample filter, Vcrctrl, is a simple - implementation of the external device control interfaces - that DirectShow provides. Vcrctrl provides basic transport - control and SMPTE timecode-reading capabilities for certain - Betacam and SVHS videocassette recorders with RS-422 or RS-232 - serial interfaces (see source code for specific machine types - supported). - - Note: some methods in IAM* interfaces may not be - used and will return not implemented. - -Created: - - September 23, 1998 - - Yee J. Wu - - -Revision: - - 0.6 - ---*/ - -#ifndef __EDevCtrl__ -#define __EDevCtrl__ - -#ifndef TIMECODE_DEFINED -#define TIMECODE_DEFINED -typedef union _timecode { - struct { - WORD wFrameRate; - WORD wFrameFract; - DWORD dwFrames; - }; - DWORDLONG qw; - } TIMECODE; - - - -typedef TIMECODE *PTIMECODE; - -typedef struct tagTIMECODE_SAMPLE - { - LONGLONG qwTick; - TIMECODE timecode; - DWORD dwUser; - DWORD dwFlags; - } TIMECODE_SAMPLE; - -typedef TIMECODE_SAMPLE *PTIMECODE_SAMPLE; - -#endif /* TIMECODE_DEFINED */ - -// Device Capabilities -typedef struct tagDEVCAPS{ - long CanRecord; - long CanRecordStrobe; - long HasAudio; - long HasVideo; - long UsesFiles; - long CanSave; - long DeviceType; - long TCRead; - long TCWrite; - long CTLRead; - long IndexRead; - long Preroll; - long Postroll; - long SyncAcc; - long NormRate; - long CanPreview; - long CanMonitorSrc; - long CanTest; - long VideoIn; - long AudioIn; - long Calibrate; - long SeekType; - long SimulatedHardware; // private -} DEVCAPS, *PDEVCAPS; - -// transport status -typedef struct tagTRANSPORTSTATUS{ - long Mode; - long LastError; - long RecordInhibit; - long ServoLock; - long MediaPresent; - long MediaLength; - long MediaSize; - long MediaTrackCount; - long MediaTrackLength; - long MediaTrackSide; - long MediaType; - long LinkMode; - long NotifyOn; -} TRANSPORTSTATUS, *PTRANSPORTSTATUS; - -// transport basic parameters -typedef struct tagTRANSPORTBASICPARMS{ - long TimeFormat; - long TimeReference; - long Superimpose; - long EndStopAction; - long RecordFormat; - long StepFrames; - long SetpField; - long Preroll; - long RecPreroll; - long Postroll; - long EditDelay; - long PlayTCDelay; - long RecTCDelay; - long EditField; - long FrameServo; - long ColorFrameServo; - long ServoRef; - long WarnGenlock; - long SetTracking; - TCHAR VolumeName[40]; - long Ballistic[20]; - long Speed; - long CounterFormat; - long TunerChannel; - long TunerNumber; - long TimerEvent; - long TimerStartDay; - long TimerStartTime; - long TimerStopDay; - long TimerStopTime; -} TRANSPORTBASICPARMS, *PTRANSPORTBASICPARMS; - -// transport video parameters -typedef struct tagTRANSPORTVIDEOPARMS{ - long OutputMode; - long Input; -} TRANSPORTVIDEOPARMS, *PTRANSPORTVIDEOPARMS; - -// transport audio parameters -typedef struct tagTRANSPORTAUDIOPARMS{ - long EnableOutput; - long EnableRecord; - long EnableSelsync; - long Input; - long MonitorSource; -} TRANSPORTAUDIOPARMS, *PTRANSPORTAUDIOPARMS; - - -// low level machine status structure filled in after -// REQUEST_STATUS command from above. This structure would -// grow in a full implementation -typedef struct tagVCRSTATUS{ - BOOL bCassetteOut; // OATRUE means no cassette - BOOL bLocal; // OATRUE means front panel switch in local -} VCRSTATUS; - -typedef VCRSTATUS far *PVCRSTATUS; - - - -//--------------------------------------------------------- -// STATIC_PROPSETID_VIDCAP_EXT_DEVICE -//--------------------------------------------------------- -// This guid and interface is defined in strmif.h -#define STATIC_PROPSETID_EXT_DEVICE\ - 0xB5730A90L, 0x1A2C, 0x11cf, 0x8c, 0x23, 0x00, 0xAA, 0x00, 0x6B, 0x68, 0x14 -DEFINE_GUIDSTRUCT("B5730A90-1A2C-11cf-8C23-00AA006B6814", PROPSETID_EXT_DEVICE); -#define PROPSETID_EXT_DEVICE DEFINE_GUIDNAMED(PROPSETID_EXT_DEVICE) - - -// KS properties and structure for this interface -typedef enum { - KSPROPERTY_EXTDEVICE_ID, // ID (such as Symbolic Lin) that can uniquely idenfy this device - KSPROPERTY_EXTDEVICE_VERSION, // Device model number and version (such AV/C VCR Subunit Spec. 2.01) - KSPROPERTY_EXTDEVICE_POWER_STATE, // Return current device power state. - KSPROPERTY_EXTDEVICE_PORT, // Can use this to return DEV_PORT_1394 - KSPROPERTY_EXTDEVICE_CAPABILITIES, // Device specific capabilities - -} KSPROPERTY_EXTDEVICE; - - -typedef struct { - KSPROPERTY Property; - - union { - // Client is responsible for allocating this. - DEVCAPS Capabilities; // May need to expand on the existing structure - ULONG DevPort; // - ULONG PowerState; // On, off standby - WCHAR pawchString[MAX_PATH]; // ID and version - DWORD NodeUniqueID[2]; // Unique NodeID - } u; - -} KSPROPERTY_EXTDEVICE_S, *PKSPROPERTY_EXTDEVICE_S; - - -//--------------------------------------------------------- -// STATIC_PROPSETID_VIDCAP_EXT_TRANSPORT -//--------------------------------------------------------- -// This guid and interface is defined in strmif.h -#define STATIC_PROPSETID_EXT_TRANSPORT\ - 0xA03CD5F0L, 0x3045, 0x11cf, 0x8c, 0x44, 0x00, 0xAA, 0x00, 0x6B, 0x68, 0x14 -DEFINE_GUIDSTRUCT("A03CD5F0-3045-11cf-8C44-00AA006B6814", PROPSETID_EXT_TRANSPORT); -#define PROPSETID_EXT_TRANSPORT DEFINE_GUIDNAMED(PROPSETID_EXT_TRANSPORT) - - - -// KS properties and structure for this interface -typedef enum { - KSPROPERTY_EXTXPORT_CAPABILITIES, // Transport specific capability - KSPROPERTY_EXTXPORT_INPUT_SIGNAL_MODE, // MPEG, D-VHS, Analog VHS etc. - KSPROPERTY_EXTXPORT_OUTPUT_SIGNAL_MODE, // MPEG, D-VHS, Analog VHS etc. - KSPROPERTY_EXTXPORT_LOAD_MEDIUM, // Eject, open tray, close tray - KSPROPERTY_EXTXPORT_MEDIUM_INFO, // cassettte_type and tape_grade_and_write_protect - KSPROPERTY_EXTXPORT_STATE, // Get/Set transport mode and state - KSPROPERTY_EXTXPORT_STATE_NOTIFY, // NOTIFY: Mode + State (Table 4-8) - KSPROPERTY_EXTXPORT_TIMECODE_SEARCH, // Request VCR subunit to search for a specific timecode on the medium - KSPROPERTY_EXTXPORT_ATN_SEARCH, // Request VCR subunit to search for a specific ATN on the medium - KSPROPERTY_EXTXPORT_RTC_SEARCH, // Request VCR subunit to search for a specific RelativeTimeCounter on the medium - - // - // Implemented for testing purpose - // Will remove this later... - // - KSPROPERTY_RAW_AVC_CMD, // Send/Rcv raw AVC commnad with a FCP packet. - -} KSPROPERTY_EXTXPORT; - -typedef struct { - BOOL MediaPresent; // TRUE/FALSE - ULONG MediaType; // DVCR standard, small, medium; VHS; VHS-C; unknown - BOOL RecordInhibit; // TRUE/FALSE -} MEDIUM_INFO, *PMEDIUM_INFO; - - -typedef struct { - ULONG Mode; // LOAD MEDIUM, RECORD, PLAY or WIND - ULONG State; // Vary depend on mode (Table 4-8) -} TRANSPORT_STATE, *PTRANSPORT_STATE; - -typedef struct { - KSPROPERTY Property; - - union { - ULONG Capabilities; // May need to expand on the existing structure - ULONG SignalMode; // MPEG, D-VHS, Analog VHS etc. - ULONG LoadMedium; // Eject, open tray, close tray - MEDIUM_INFO MediumInfo; - TRANSPORT_STATE XPrtState; - - struct { - BYTE frame; - BYTE second; - BYTE minute; - BYTE hour; - } Timecode; - DWORD dwTimecode; // hour:minute:second:frame - DWORD dwAbsTrackNumber; // absolute track number - - - // - // Implemented for testing purpose - // Will remove this later or will keep this for - // packet specific command. - // - struct { - ULONG PayloadSize; - BYTE Payload[512]; // This is only for testing sending AVC command from User mode. - } RawAVC; - - } u; - -} KSPROPERTY_EXTXPORT_S, *PKSPROPERTY_EXTXPORT_S; - - - -//--------------------------------------------------------- -// PROPSETID_TIMECODE -//--------------------------------------------------------- -// This guid and interface is defined in strmif.h -#define STATIC_PROPSETID_TIMECODE_READER\ - 0x9B496CE1L, 0x811B, 0x11cf, 0x8C, 0x77, 0x00, 0xAA, 0x00, 0x6B, 0x68, 0x14 -DEFINE_GUIDSTRUCT("9B496CE1-811B-11cf-8C77-00AA006B6814", PROPSETID_TIMECODE_READER); -#define PROPSETID_TIMECODE_READER DEFINE_GUIDNAMED(PROPSETID_TIMECODE_READER) - - -// KS properties and structure for this interface -typedef enum { - KSPROPERTY_TIMECODE_READER, // Timecode for the current medium position - KSPROPERTY_ATN_READER, // Absolute track number the current medium position - KSPROPERTY_RTC_READER, // Relative time counter for the current medium position - -} KSPROPERTY_TIMECODE; - - -typedef struct { - KSPROPERTY Property; - - TIMECODE_SAMPLE TimecodeSamp; - -} KSPROPERTY_TIMECODE_S, *PKSPROPERTY_TIMECODE_S; - - - -//--------------------------------------------------------- -// External Device Command event notification -//--------------------------------------------------------- - -#define STATIC_KSEVENTSETID_EXTDEV_Command\ - 0x109c7988L, 0xb3cb, 0x11d2, 0xb4, 0x8e, 0x00, 0x60, 0x97, 0xb3, 0x39, 0x1b -DEFINE_GUIDSTRUCT("109c7988-b3cb-11d2-b48e-006097b3391b", KSEVENTSETID_EXTDEV_Command); -#define KSEVENTSETID_EXTDEV_Command DEFINE_GUIDNAMED(KSEVENTSETID_EXTDEV_Command) - -typedef enum { - KSEVENT_EXTDEV_COMMAND_NOTIFY_INTERIM_READY, - KSEVENT_EXTDEV_COMMAND_CONTROL_INTERIM_READY, - KSEVENT_EXTDEV_COMMAND_BUSRESET, - KSEVENT_EXTDEV_TIMECODE_UPDATE, - KSEVENT_EXTDEV_OPERATION_MODE_UPDATE, // Notify mode of operation change (VCR,OFF,Camera) - KSEVENT_EXTDEV_TRANSPORT_STATE_UPDATE, // XPrt state change - KSEVENT_EXTDEV_NOTIFY_REMOVAL, // Notify device removal - KSEVENT_EXTDEV_NOTIFY_MEDIUM_CHANGE, // Notify medium (tape) is removed or added - -} KSEVENT_DEVCMD; - - -#endif // __EDevCTrl__ +/*++ + +Copyright (C) Microsoft Corporation, 1998 - 1999 + +Module Name: + + EDevCtrl.h + +Abstract: + + This header contain structures and peroperty sets for + interfacing to an external device, like a DV. + The code is modeled after DirectShow's Vcrctrl Sample + (VCR Control Filter). It contain IAMExtDevice, + IAMExtTransport, and IAMTimecodeReader interfaces, and + a new interface IAMAdvancedAVControl() is added + for additional advanced device controls. + + Note: (From DShow DDK) + The VCR control sample filter, Vcrctrl, is a simple + implementation of the external device control interfaces + that DirectShow provides. Vcrctrl provides basic transport + control and SMPTE timecode-reading capabilities for certain + Betacam and SVHS videocassette recorders with RS-422 or RS-232 + serial interfaces (see source code for specific machine types + supported). + + Note: some methods in IAM* interfaces may not be + used and will return not implemented. + +Created: + + September 23, 1998 + + Yee J. Wu + + +Revision: + + 0.6 + +--*/ + +#ifndef __EDevCtrl__ +#define __EDevCtrl__ + +#ifndef TIMECODE_DEFINED +#define TIMECODE_DEFINED +typedef union _timecode { + struct { + WORD wFrameRate; + WORD wFrameFract; + DWORD dwFrames; + }; + DWORDLONG qw; + } TIMECODE; + + + +typedef TIMECODE *PTIMECODE; + +typedef struct tagTIMECODE_SAMPLE + { + LONGLONG qwTick; + TIMECODE timecode; + DWORD dwUser; + DWORD dwFlags; + } TIMECODE_SAMPLE; + +typedef TIMECODE_SAMPLE *PTIMECODE_SAMPLE; + +#endif /* TIMECODE_DEFINED */ + +// Device Capabilities +typedef struct tagDEVCAPS{ + long CanRecord; + long CanRecordStrobe; + long HasAudio; + long HasVideo; + long UsesFiles; + long CanSave; + long DeviceType; + long TCRead; + long TCWrite; + long CTLRead; + long IndexRead; + long Preroll; + long Postroll; + long SyncAcc; + long NormRate; + long CanPreview; + long CanMonitorSrc; + long CanTest; + long VideoIn; + long AudioIn; + long Calibrate; + long SeekType; + long SimulatedHardware; // private +} DEVCAPS, *PDEVCAPS; + +// transport status +typedef struct tagTRANSPORTSTATUS{ + long Mode; + long LastError; + long RecordInhibit; + long ServoLock; + long MediaPresent; + long MediaLength; + long MediaSize; + long MediaTrackCount; + long MediaTrackLength; + long MediaTrackSide; + long MediaType; + long LinkMode; + long NotifyOn; +} TRANSPORTSTATUS, *PTRANSPORTSTATUS; + +// transport basic parameters +typedef struct tagTRANSPORTBASICPARMS{ + long TimeFormat; + long TimeReference; + long Superimpose; + long EndStopAction; + long RecordFormat; + long StepFrames; + long SetpField; + long Preroll; + long RecPreroll; + long Postroll; + long EditDelay; + long PlayTCDelay; + long RecTCDelay; + long EditField; + long FrameServo; + long ColorFrameServo; + long ServoRef; + long WarnGenlock; + long SetTracking; + TCHAR VolumeName[40]; + long Ballistic[20]; + long Speed; + long CounterFormat; + long TunerChannel; + long TunerNumber; + long TimerEvent; + long TimerStartDay; + long TimerStartTime; + long TimerStopDay; + long TimerStopTime; +} TRANSPORTBASICPARMS, *PTRANSPORTBASICPARMS; + +// transport video parameters +typedef struct tagTRANSPORTVIDEOPARMS{ + long OutputMode; + long Input; +} TRANSPORTVIDEOPARMS, *PTRANSPORTVIDEOPARMS; + +// transport audio parameters +typedef struct tagTRANSPORTAUDIOPARMS{ + long EnableOutput; + long EnableRecord; + long EnableSelsync; + long Input; + long MonitorSource; +} TRANSPORTAUDIOPARMS, *PTRANSPORTAUDIOPARMS; + + +// low level machine status structure filled in after +// REQUEST_STATUS command from above. This structure would +// grow in a full implementation +typedef struct tagVCRSTATUS{ + BOOL bCassetteOut; // OATRUE means no cassette + BOOL bLocal; // OATRUE means front panel switch in local +} VCRSTATUS; + +typedef VCRSTATUS far *PVCRSTATUS; + + + +//--------------------------------------------------------- +// STATIC_PROPSETID_VIDCAP_EXT_DEVICE +//--------------------------------------------------------- +// This guid and interface is defined in strmif.h +#define STATIC_PROPSETID_EXT_DEVICE\ + 0xB5730A90L, 0x1A2C, 0x11cf, 0x8c, 0x23, 0x00, 0xAA, 0x00, 0x6B, 0x68, 0x14 +DEFINE_GUIDSTRUCT("B5730A90-1A2C-11cf-8C23-00AA006B6814", PROPSETID_EXT_DEVICE); +#define PROPSETID_EXT_DEVICE DEFINE_GUIDNAMED(PROPSETID_EXT_DEVICE) + + +// KS properties and structure for this interface +typedef enum { + KSPROPERTY_EXTDEVICE_ID, // ID (such as Symbolic Lin) that can uniquely idenfy this device + KSPROPERTY_EXTDEVICE_VERSION, // Device model number and version (such AV/C VCR Subunit Spec. 2.01) + KSPROPERTY_EXTDEVICE_POWER_STATE, // Return current device power state. + KSPROPERTY_EXTDEVICE_PORT, // Can use this to return DEV_PORT_1394 + KSPROPERTY_EXTDEVICE_CAPABILITIES, // Device specific capabilities + +} KSPROPERTY_EXTDEVICE; + + +typedef struct { + KSPROPERTY Property; + + union { + // Client is responsible for allocating this. + DEVCAPS Capabilities; // May need to expand on the existing structure + ULONG DevPort; // + ULONG PowerState; // On, off standby + WCHAR pawchString[MAX_PATH]; // ID and version + DWORD NodeUniqueID[2]; // Unique NodeID + } u; + +} KSPROPERTY_EXTDEVICE_S, *PKSPROPERTY_EXTDEVICE_S; + + +//--------------------------------------------------------- +// STATIC_PROPSETID_VIDCAP_EXT_TRANSPORT +//--------------------------------------------------------- +// This guid and interface is defined in strmif.h +#define STATIC_PROPSETID_EXT_TRANSPORT\ + 0xA03CD5F0L, 0x3045, 0x11cf, 0x8c, 0x44, 0x00, 0xAA, 0x00, 0x6B, 0x68, 0x14 +DEFINE_GUIDSTRUCT("A03CD5F0-3045-11cf-8C44-00AA006B6814", PROPSETID_EXT_TRANSPORT); +#define PROPSETID_EXT_TRANSPORT DEFINE_GUIDNAMED(PROPSETID_EXT_TRANSPORT) + + + +// KS properties and structure for this interface +typedef enum { + KSPROPERTY_EXTXPORT_CAPABILITIES, // Transport specific capability + KSPROPERTY_EXTXPORT_INPUT_SIGNAL_MODE, // MPEG, D-VHS, Analog VHS etc. + KSPROPERTY_EXTXPORT_OUTPUT_SIGNAL_MODE, // MPEG, D-VHS, Analog VHS etc. + KSPROPERTY_EXTXPORT_LOAD_MEDIUM, // Eject, open tray, close tray + KSPROPERTY_EXTXPORT_MEDIUM_INFO, // cassettte_type and tape_grade_and_write_protect + KSPROPERTY_EXTXPORT_STATE, // Get/Set transport mode and state + KSPROPERTY_EXTXPORT_STATE_NOTIFY, // NOTIFY: Mode + State (Table 4-8) + KSPROPERTY_EXTXPORT_TIMECODE_SEARCH, // Request VCR subunit to search for a specific timecode on the medium + KSPROPERTY_EXTXPORT_ATN_SEARCH, // Request VCR subunit to search for a specific ATN on the medium + KSPROPERTY_EXTXPORT_RTC_SEARCH, // Request VCR subunit to search for a specific RelativeTimeCounter on the medium + + // + // Implemented for testing purpose + // Will remove this later... + // + KSPROPERTY_RAW_AVC_CMD, // Send/Rcv raw AVC commnad with a FCP packet. + +} KSPROPERTY_EXTXPORT; + +typedef struct { + BOOL MediaPresent; // TRUE/FALSE + ULONG MediaType; // DVCR standard, small, medium; VHS; VHS-C; unknown + BOOL RecordInhibit; // TRUE/FALSE +} MEDIUM_INFO, *PMEDIUM_INFO; + + +typedef struct { + ULONG Mode; // LOAD MEDIUM, RECORD, PLAY or WIND + ULONG State; // Vary depend on mode (Table 4-8) +} TRANSPORT_STATE, *PTRANSPORT_STATE; + +typedef struct { + KSPROPERTY Property; + + union { + ULONG Capabilities; // May need to expand on the existing structure + ULONG SignalMode; // MPEG, D-VHS, Analog VHS etc. + ULONG LoadMedium; // Eject, open tray, close tray + MEDIUM_INFO MediumInfo; + TRANSPORT_STATE XPrtState; + + struct { + BYTE frame; + BYTE second; + BYTE minute; + BYTE hour; + } Timecode; + DWORD dwTimecode; // hour:minute:second:frame + DWORD dwAbsTrackNumber; // absolute track number + + + // + // Implemented for testing purpose + // Will remove this later or will keep this for + // packet specific command. + // + struct { + ULONG PayloadSize; + BYTE Payload[512]; // This is only for testing sending AVC command from User mode. + } RawAVC; + + } u; + +} KSPROPERTY_EXTXPORT_S, *PKSPROPERTY_EXTXPORT_S; + + + +//--------------------------------------------------------- +// PROPSETID_TIMECODE +//--------------------------------------------------------- +// This guid and interface is defined in strmif.h +#define STATIC_PROPSETID_TIMECODE_READER\ + 0x9B496CE1L, 0x811B, 0x11cf, 0x8C, 0x77, 0x00, 0xAA, 0x00, 0x6B, 0x68, 0x14 +DEFINE_GUIDSTRUCT("9B496CE1-811B-11cf-8C77-00AA006B6814", PROPSETID_TIMECODE_READER); +#define PROPSETID_TIMECODE_READER DEFINE_GUIDNAMED(PROPSETID_TIMECODE_READER) + + +// KS properties and structure for this interface +typedef enum { + KSPROPERTY_TIMECODE_READER, // Timecode for the current medium position + KSPROPERTY_ATN_READER, // Absolute track number the current medium position + KSPROPERTY_RTC_READER, // Relative time counter for the current medium position + +} KSPROPERTY_TIMECODE; + + +typedef struct { + KSPROPERTY Property; + + TIMECODE_SAMPLE TimecodeSamp; + +} KSPROPERTY_TIMECODE_S, *PKSPROPERTY_TIMECODE_S; + + + +//--------------------------------------------------------- +// External Device Command event notification +//--------------------------------------------------------- + +#define STATIC_KSEVENTSETID_EXTDEV_Command\ + 0x109c7988L, 0xb3cb, 0x11d2, 0xb4, 0x8e, 0x00, 0x60, 0x97, 0xb3, 0x39, 0x1b +DEFINE_GUIDSTRUCT("109c7988-b3cb-11d2-b48e-006097b3391b", KSEVENTSETID_EXTDEV_Command); +#define KSEVENTSETID_EXTDEV_Command DEFINE_GUIDNAMED(KSEVENTSETID_EXTDEV_Command) + +typedef enum { + KSEVENT_EXTDEV_COMMAND_NOTIFY_INTERIM_READY, + KSEVENT_EXTDEV_COMMAND_CONTROL_INTERIM_READY, + KSEVENT_EXTDEV_COMMAND_BUSRESET, + KSEVENT_EXTDEV_TIMECODE_UPDATE, + KSEVENT_EXTDEV_OPERATION_MODE_UPDATE, // Notify mode of operation change (VCR,OFF,Camera) + KSEVENT_EXTDEV_TRANSPORT_STATE_UPDATE, // XPrt state change + KSEVENT_EXTDEV_NOTIFY_REMOVAL, // Notify device removal + KSEVENT_EXTDEV_NOTIFY_MEDIUM_CHANGE, // Notify medium (tape) is removed or added + +} KSEVENT_DEVCMD; + + +#endif // __EDevCTrl__ diff --git a/videoInputSrcAndDemos/libs/DShow/Include/edevdefs.h b/videoInputSrcAndDemos/libs/DShow/Include/edevdefs.h index e066bbf..16af462 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/edevdefs.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/edevdefs.h @@ -1,531 +1,531 @@ -//------------------------------------------------------------------------------ -// File: EDevDefs.h -// -// Desc: External Device (such as a VCR) control interface parameter and -// value definitions. -// -// Note: new constants added: ED_BASE+800L -> ED_BASE+811L -// -// Copyright (c) 1992-2001, Microsoft Corporation. All rights reserved. -//------------------------------------------------------------------------------ - - -#ifndef __EDEVDEFS__ -#define __EDEVDEFS__ - - -#define ED_BASE 0x1000L - -// this is used to tell the device communications object which -// physical communications port to use. -#define DEV_PORT_SIM 1 -#define DEV_PORT_COM1 2 // standard serial ports -#define DEV_PORT_COM2 3 -#define DEV_PORT_COM3 4 -#define DEV_PORT_COM4 5 -#define DEV_PORT_DIAQ 6 // Diaquest driver -#define DEV_PORT_ARTI 7 // ARTI driver -#define DEV_PORT_1394 8 // IEEE 1394 Bus -#define DEV_PORT_USB 9 // Universal Serial Bus -#define DEV_PORT_MIN DEV_PORT_SIM -#define DEV_PORT_MAX DEV_PORT_USB - - -// IAMExtDevice Capability Items: unless otherwise specified, these items return -// OATRUE or OAFALSE. All return values are in pdwValue unless otherwise specified: - -#define ED_DEVCAP_CAN_RECORD ED_BASE+1L -#define ED_DEVCAP_CAN_RECORD_STROBE ED_BASE+2L // for multitrack devices: - // switches currently recording tracks off - // and selected non-recording tracks into record -#define ED_DEVCAP_HAS_AUDIO ED_BASE+3L -#define ED_DEVCAP_HAS_VIDEO ED_BASE+4L -#define ED_DEVCAP_USES_FILES ED_BASE+5L -#define ED_DEVCAP_CAN_SAVE ED_BASE+6L - -#define ED_DEVCAP_DEVICE_TYPE ED_BASE+7L // returns one of the following: -#define ED_DEVTYPE_VCR ED_BASE+8L -#define ED_DEVTYPE_LASERDISK ED_BASE+9L -#define ED_DEVTYPE_ATR ED_BASE+10L -#define ED_DEVTYPE_DDR ED_BASE+11L -#define ED_DEVTYPE_ROUTER ED_BASE+12L -#define ED_DEVTYPE_KEYER ED_BASE+13L -#define ED_DEVTYPE_MIXER_VIDEO ED_BASE+14L -#define ED_DEVTYPE_DVE ED_BASE+15L -#define ED_DEVTYPE_WIPEGEN ED_BASE+16L -#define ED_DEVTYPE_MIXER_AUDIO ED_BASE+17L -#define ED_DEVTYPE_CG ED_BASE+18L -#define ED_DEVTYPE_TBC ED_BASE+19L -#define ED_DEVTYPE_TCG ED_BASE+20L -#define ED_DEVTYPE_GPI ED_BASE+21L -#define ED_DEVTYPE_JOYSTICK ED_BASE+22L -#define ED_DEVTYPE_KEYBOARD ED_BASE+23L - -// returns mfr-specific ID from external device. -#define ED_DEVCAP_EXTERNAL_DEVICE_ID ED_BASE+24L - -#define ED_DEVCAP_TIMECODE_READ ED_BASE+25L -#define ED_DEVCAP_TIMECODE_WRITE ED_BASE+26L -// used for seekable non-timecode enabled devices -#define ED_DEVCAP_CTLTRK_READ ED_BASE+27L -// used for seekable non-timecode enabled devices -#define ED_DEVCAP_INDEX_READ ED_BASE+28L - -// returns device preroll time in current time format -#define ED_DEVCAP_PREROLL ED_BASE+29L -// returns device postroll time in current time format -#define ED_DEVCAP_POSTROLL ED_BASE+30L - -// returns indication of device’s synchronization accuracy. -#define ED_DEVCAP_SYNC_ACCURACY ED_BASE+31L // returns one of the following: -#define ED_SYNCACC_PRECISE ED_BASE+32L -#define ED_SYNCACC_FRAME ED_BASE+33L -#define ED_SYNCACC_ROUGH ED_BASE+34L - -// returns device’s normal framerate. -#define ED_DEVCAP_NORMAL_RATE ED_BASE+35L // returns one of the following: -#define ED_RATE_24 ED_BASE+36L -#define ED_RATE_25 ED_BASE+37L -#define ED_RATE_2997 ED_BASE+38L -#define ED_RATE_30 ED_BASE+39L - -#define ED_DEVCAP_CAN_PREVIEW ED_BASE+40L -#define ED_DEVCAP_CAN_MONITOR_SOURCES ED_BASE+41L - -// indicates implementation allows testing of methods/parameters by -// setting the hi bit of a parm that makes sense - see individual methods -// for details. -#define ED_DEVCAP_CAN_TEST ED_BASE+42L - -// indicates device accepts video as an input. -#define ED_DEVCAP_VIDEO_INPUTS ED_BASE+43L - -// indicates device accepts audio as an input. -#define ED_DEVCAP_AUDIO_INPUTS ED_BASE+44L - -#define ED_DEVCAP_NEEDS_CALIBRATING ED_BASE+45L - -#define ED_DEVCAP_SEEK_TYPE ED_BASE+46L // returns one of the following: -#define ED_SEEK_PERFECT ED_BASE+47L // indicates device can execute seek - // within 1 video frames without signal - // break (like a DDR) -#define ED_SEEK_FAST ED_BASE+48L // indicates device can move pretty quick - // with short break in signal -#define ED_SEEK_SLOW ED_BASE+49L // seeks like a tape transport - -#define ED_POWER_ON ED_BASE+50L -#define ED_POWER_OFF ED_BASE+51L -#define ED_POWER_STANDBY ED_BASE+52L - -#define ED_ACTIVE ED_BASE+53L -#define ED_INACTIVE ED_BASE+54L -#define ED_ALL ED_BASE+55L -#define ED_TEST ED_BASE+56L - -// IAMExtTransport Capability Items: unless otherwise specified, these items return -// OATRUE or OAFALSE. All return values are in pdwValue unless otherwise specified: - -#define ED_TRANSCAP_CAN_EJECT ED_BASE+100L -#define ED_TRANSCAP_CAN_BUMP_PLAY ED_BASE+101L // variable speed for synchronizing -#define ED_TRANSCAP_CAN_PLAY_BACKWARDS ED_BASE+102L // servo locked for use during an edit -#define ED_TRANSCAP_CAN_SET_EE ED_BASE+103L // show device’s input on its output -#define ED_TRANSCAP_CAN_SET_PB ED_BASE+104L // show media playback on device’s output -#define ED_TRANSCAP_CAN_DELAY_VIDEO_IN ED_BASE+105L // transport can do delayed-in video edits -#define ED_TRANSCAP_CAN_DELAY_VIDEO_OUT ED_BASE+106L // transport can do delayed-out video edits -#define ED_TRANSCAP_CAN_DELAY_AUDIO_IN ED_BASE+107L // transport can do delayed-in audio edits -#define ED_TRANSCAP_CAN_DELAY_AUDIO_OUT ED_BASE+108L // transport can do delayed-out audio edits -#define ED_TRANSCAP_FWD_VARIABLE_MAX ED_BASE+109L // max forward speed (multiple of play speed) - // in pdblValue -#define ED_TRANSCAP_FWD_VARIABLE_MIN ED_BASE+800L // min forward speed (multiple of play speed) - // in pdblValue -#define ED_TRANSCAP_REV_VARIABLE_MAX ED_BASE+110L // max reverse speed (multiple of play speed) in - // pdblValue -#define ED_TRANSCAP_REV_VARIABLE_MIN ED_BASE+801L // min reverse speed (multiple of play speed) - // in pdblValue -#define ED_TRANSCAP_FWD_SHUTTLE_MAX ED_BASE+802L // max forward speed in Shuttle mode (multiple - // of play speed) in pdblValue -#define ED_TRANSCAP_FWD_SHUTTLE_MIN ED_BASE+803L // min forward speed in Shuttle mode (multiple - // of play speed) in pdblValue -#define ED_TRANSCAP_REV_SHUTTLE_MAX ED_BASE+804L // max reverse speed in Shuttle mode (multiple - // of play speed) in pdblValue -#define ED_TRANSCAP_REV_SHUTTLE_MIN ED_BASE+805L // min reverse speed in Shuttle mode (multiple - // of play speed) in pdblValue -#define ED_TRANSCAP_NUM_AUDIO_TRACKS ED_BASE+111L // returns number of audio tracks -#define ED_TRANSCAP_LTC_TRACK ED_BASE+112L // returns track number of LTC timecode track. - // ED_ALL means no dedicated timecode track -#define ED_TRANSCAP_NEEDS_TBC ED_BASE+113L // device’s output not stable -#define ED_TRANSCAP_NEEDS_CUEING ED_BASE+114L // device must be cued prior to performing edit -#define ED_TRANSCAP_CAN_INSERT ED_BASE+115L -#define ED_TRANSCAP_CAN_ASSEMBLE ED_BASE+116L -#define ED_TRANSCAP_FIELD_STEP ED_BASE+117L // device responds to Frame Advance command by - // advancing one field -#define ED_TRANSCAP_CLOCK_INC_RATE ED_BASE+118L // VISCA command - keep for compatibility -#define ED_TRANSCAP_CAN_DETECT_LENGTH ED_BASE+119L -#define ED_TRANSCAP_CAN_FREEZE ED_BASE+120L -#define ED_TRANSCAP_HAS_TUNER ED_BASE+121L -#define ED_TRANSCAP_HAS_TIMER ED_BASE+122L -#define ED_TRANSCAP_HAS_CLOCK ED_BASE+123L -#define ED_TRANSCAP_MULTIPLE_EDITS ED_BASE+806L // OATRUE means device/filter can support - // multiple edit events -#define ED_TRANSCAP_IS_MASTER ED_BASE+807L // OATRUE means device is the master clock - // for synchronizing (this sets timecode-to- - // reference clock offset for editing) -#define ED_TRANSCAP_HAS_DT ED_BASE+814L // OATRUE means device has Dynamic Tracking - -// IAMExtTransport Media States -#define ED_MEDIA_SPIN_UP ED_BASE+130L -#define ED_MEDIA_SPIN_DOWN ED_BASE+131L -#define ED_MEDIA_UNLOAD ED_BASE+132L - -// IAMExtTransport Modes -#define ED_MODE_PLAY ED_BASE+200L -#define ED_MODE_STOP ED_BASE+201L -#define ED_MODE_FREEZE ED_BASE+202L // really "pause" -#define ED_MODE_THAW ED_BASE+203L -#define ED_MODE_FF ED_BASE+204L -#define ED_MODE_REW ED_BASE+205L -#define ED_MODE_RECORD ED_BASE+206L -#define ED_MODE_RECORD_STROBE ED_BASE+207L -#define ED_MODE_RECORD_FREEZE ED_BASE+808L // never "put", only "get" -#define ED_MODE_STEP ED_BASE+208L // same as "jog" -#define ED_MODE_STEP_FWD ED_BASE+208L // same as ED_MODE_STEP -#define ED_MODE_STEP_REV ED_BASE+809L -#define ED_MODE_SHUTTLE ED_BASE+209L -#define ED_MODE_EDIT_CUE ED_BASE+210L -#define ED_MODE_VAR_SPEED ED_BASE+211L -#define ED_MODE_PERFORM ED_BASE+212L // returned status only -#define ED_MODE_LINK_ON ED_BASE+280L -#define ED_MODE_LINK_OFF ED_BASE+281L -#define ED_MODE_NOTIFY_ENABLE ED_BASE+810L -#define ED_MODE_NOTIFY_DISABLE ED_BASE+811L -#define ED_MODE_SHOT_SEARCH ED_BASE+812L - -// IAMTimecodeReader/Generator/Display defines -// -// Timecode Generator Mode params and values: -// -#define ED_TCG_TIMECODE_TYPE ED_BASE+400L // can be one of the following: -#define ED_TCG_SMPTE_LTC ED_BASE+401L -#define ED_TCG_SMPTE_VITC ED_BASE+402L -#define ED_TCG_MIDI_QF ED_BASE+403L -#define ED_TCG_MIDI_FULL ED_BASE+404L - -#define ED_TCG_FRAMERATE ED_BASE+405L // can be one of the following: -#define ED_FORMAT_SMPTE_30 ED_BASE+406L -#define ED_FORMAT_SMPTE_30DROP ED_BASE+407L -#define ED_FORMAT_SMPTE_25 ED_BASE+408L -#define ED_FORMAT_SMPTE_24 ED_BASE+409L - -#define ED_TCG_SYNC_SOURCE ED_BASE+410L // can be one of the following: -#define ED_TCG_VIDEO ED_BASE+411L -#define ED_TCG_READER ED_BASE+412L -#define ED_TCG_FREE ED_BASE+413L - -#define ED_TCG_REFERENCE_SOURCE ED_BASE+414L // can have one these values: - // ED_TCG_FREE || ED_TCG_READER - // (for regen/jamsync) - -// TimeCodeReader Mode params and values: -#define ED_TCR_SOURCE ED_BASE+416L // can be one of the following: -// ED_TCG (already defined) -#define ED_TCR_LTC ED_BASE+417L -#define ED_TCR_VITC ED_BASE+418L -#define ED_TCR_CT ED_BASE+419L // Control Track -#define ED_TCR_FTC ED_BASE+420L // File TimeCode - for file-based devices - // that wish they were transports -// ED_MODE_NOTIFY_ENABLE can be OATRUE or OAFALSE (defined in transport mode -// section of this file). -#define ED_TCR_LAST_VALUE ED_BASE+421L // for notification mode - - // successive calls to GetTimecode - // return the last read value -// TimeCode Display Mode params and values: -// -#define ED_TCD_SOURCE ED_BASE+422L // can be one of the following: -#define ED_TCR ED_BASE+423L -#define ED_TCG ED_BASE+424L - -#define ED_TCD_SIZE ED_BASE+425L // can be one of the following: -#define ED_SMALL ED_BASE+426L -#define ED_MED ED_BASE+427L -#define ED_LARGE ED_BASE+428L - -#define ED_TCD_POSITION ED_BASE+429L // can be one of the following: -#define ED_TOP 0x0001 -#define ED_MIDDLE 0x0002 -#define ED_BOTTOM 0x0004 // OR'd with -#define ED_LEFT 0x0100 -#define ED_CENTER 0x0200 -#define ED_RIGHT 0x0400 - -#define ED_TCD_INTENSITY ED_BASE+436L // can be one of the following: -#define ED_HIGH ED_BASE+437L -#define ED_LOW ED_BASE+438L - -#define ED_TCD_TRANSPARENCY ED_BASE+439L // 0-4, 0 is opaque - -#define ED_TCD_INVERT ED_BASE+440L // OATRUE=black on white - // OAFALSE=white on black -// IAMExtTransport defines -// -// Transport status, params and values -// - -// IAMExtTransport Status items and and values: -#define ED_MODE ED_BASE+500L // see ED_MODE_xxx values above -#define ED_ERROR ED_BASE+501L -#define ED_LOCAL ED_BASE+502L -#define ED_RECORD_INHIBIT ED_BASE+503L -#define ED_SERVO_LOCK ED_BASE+504L -#define ED_MEDIA_PRESENT ED_BASE+505L -#define ED_MEDIA_LENGTH ED_BASE+506L -#define ED_MEDIA_SIZE ED_BASE+507L -#define ED_MEDIA_TRACK_COUNT ED_BASE+508L -#define ED_MEDIA_TRACK_LENGTH ED_BASE+509L -#define ED_MEDIA_SIDE ED_BASE+510L - -#define ED_MEDIA_TYPE ED_BASE+511L // can be one of the following: -#define ED_MEDIA_VHS ED_BASE+512L -#define ED_MEDIA_SVHS ED_BASE+513L -#define ED_MEDIA_HI8 ED_BASE+514L -#define ED_MEDIA_UMATIC ED_BASE+515L -#define ED_MEDIA_DVC ED_BASE+516L -#define ED_MEDIA_1_INCH ED_BASE+517L -#define ED_MEDIA_D1 ED_BASE+518L -#define ED_MEDIA_D2 ED_BASE+519L -#define ED_MEDIA_D3 ED_BASE+520L -#define ED_MEDIA_D5 ED_BASE+521L -#define ED_MEDIA_DBETA ED_BASE+522L -#define ED_MEDIA_BETA ED_BASE+523L -#define ED_MEDIA_8MM ED_BASE+524L -#define ED_MEDIA_DDR ED_BASE+525L -#define ED_MEDIA_SX ED_BASE+813L -#define ED_MEDIA_OTHER ED_BASE+526L -#define ED_MEDIA_CLV ED_BASE+527L -#define ED_MEDIA_CAV ED_BASE+528L -#define ED_MEDIA_POSITION ED_BASE+529L - -#define ED_LINK_MODE ED_BASE+530L // OATRUE if transport controls - // are linked to graph's RUN, - // STOP, and PAUSE methods - -// IAMExtTransport Basic Parms -#define ED_TRANSBASIC_TIME_FORMAT ED_BASE+540L // can be one of the following: -#define ED_FORMAT_MILLISECONDS ED_BASE+541L -#define ED_FORMAT_FRAMES ED_BASE+542L -#define ED_FORMAT_REFERENCE_TIME ED_BASE+543L - -#define ED_FORMAT_HMSF ED_BASE+547L -#define ED_FORMAT_TMSF ED_BASE+548L - -#define ED_TRANSBASIC_TIME_REFERENCE ED_BASE+549L // can be one of the following: -#define ED_TIMEREF_TIMECODE ED_BASE+550L -#define ED_TIMEREF_CONTROL_TRACK ED_BASE+551L -#define ED_TIMEREF_INDEX ED_BASE+552L - -#define ED_TRANSBASIC_SUPERIMPOSE ED_BASE+553L // enable/disable onscreen display -#define ED_TRANSBASIC_END_STOP_ACTION ED_BASE+554L // can be one of: ED_MODE_STOP | - // ED_MODE_REWIND | ED_MODE_FREEZE -#define ED_TRANSBASIC_RECORD_FORMAT ED_BASE+555L // can be one of the following: -#define ED_RECORD_FORMAT_SP ED_BASE+556L -#define ED_RECORD_FORMAT_LP ED_BASE+557L -#define ED_RECORD_FORMAT_EP ED_BASE+558L - -#define ED_TRANSBASIC_STEP_COUNT ED_BASE+559L -#define ED_TRANSBASIC_STEP_UNIT ED_BASE+560L // can be one of the following: -#define ED_STEP_FIELD ED_BASE+561L -#define ED_STEP_FRAME ED_BASE+562L -#define ED_STEP_3_2 ED_BASE+563L - -#define ED_TRANSBASIC_PREROLL ED_BASE+564L -#define ED_TRANSBASIC_RECPREROLL ED_BASE+565L -#define ED_TRANSBASIC_POSTROLL ED_BASE+566L -#define ED_TRANSBASIC_EDIT_DELAY ED_BASE+567L -#define ED_TRANSBASIC_PLAYTC_DELAY ED_BASE+568L -#define ED_TRANSBASIC_RECTC_DELAY ED_BASE+569L -#define ED_TRANSBASIC_EDIT_FIELD ED_BASE+570L -#define ED_TRANSBASIC_FRAME_SERVO ED_BASE+571L -#define ED_TRANSBASIC_CF_SERVO ED_BASE+572L -#define ED_TRANSBASIC_SERVO_REF ED_BASE+573L // can be one of the following: -#define ED_REF_EXTERNAL ED_BASE+574L -#define ED_REF_INPUT ED_BASE+575L -#define ED_REF_INTERNAL ED_BASE+576L -#define ED_REF_AUTO ED_BASE+577L - -#define ED_TRANSBASIC_WARN_GL ED_BASE+578L -#define ED_TRANSBASIC_SET_TRACKING ED_BASE+579L // can be one of the following: -#define ED_TRACKING_PLUS ED_BASE+580L -#define ED_TRACKING_MINUS ED_BASE+581L -#define ED_TRACKING_RESET ED_BASE+582L - -#define ED_TRANSBASIC_SET_FREEZE_TIMEOUT ED_BASE+583L -#define ED_TRANSBASIC_VOLUME_NAME ED_BASE+584L -#define ED_TRANSBASIC_BALLISTIC_1 ED_BASE+585L // space for proprietary data -#define ED_TRANSBASIC_BALLISTIC_2 ED_BASE+586L -#define ED_TRANSBASIC_BALLISTIC_3 ED_BASE+587L -#define ED_TRANSBASIC_BALLISTIC_4 ED_BASE+588L -#define ED_TRANSBASIC_BALLISTIC_5 ED_BASE+589L -#define ED_TRANSBASIC_BALLISTIC_6 ED_BASE+590L -#define ED_TRANSBASIC_BALLISTIC_7 ED_BASE+591L -#define ED_TRANSBASIC_BALLISTIC_8 ED_BASE+592L -#define ED_TRANSBASIC_BALLISTIC_9 ED_BASE+593L -#define ED_TRANSBASIC_BALLISTIC_10 ED_BASE+594L -#define ED_TRANSBASIC_BALLISTIC_11 ED_BASE+595L -#define ED_TRANSBASIC_BALLISTIC_12 ED_BASE+596L -#define ED_TRANSBASIC_BALLISTIC_13 ED_BASE+597L -#define ED_TRANSBASIC_BALLISTIC_14 ED_BASE+598L -#define ED_TRANSBASIC_BALLISTIC_15 ED_BASE+599L -#define ED_TRANSBASIC_BALLISTIC_16 ED_BASE+600L -#define ED_TRANSBASIC_BALLISTIC_17 ED_BASE+601L -#define ED_TRANSBASIC_BALLISTIC_18 ED_BASE+602L -#define ED_TRANSBASIC_BALLISTIC_19 ED_BASE+603L -#define ED_TRANSBASIC_BALLISTIC_20 ED_BASE+604L - -// consumer VCR items -#define ED_TRANSBASIC_SETCLOCK ED_BASE+605L -#define ED_TRANSBASIC_SET_COUNTER_FORMAT ED_BASE+606L // uses time format flags -#define ED_TRANSBASIC_SET_COUNTER_VALUE ED_BASE+607L - -#define ED_TRANSBASIC_SETTUNER_CH_UP ED_BASE+608L -#define ED_TRANSBASIC_SETTUNER_CH_DN ED_BASE+609L -#define ED_TRANSBASIC_SETTUNER_SK_UP ED_BASE+610L -#define ED_TRANSBASIC_SETTUNER_SK_DN ED_BASE+611L -#define ED_TRANSBASIC_SETTUNER_CH ED_BASE+612L -#define ED_TRANSBASIC_SETTUNER_NUM ED_BASE+613L - -#define ED_TRANSBASIC_SETTIMER_EVENT ED_BASE+614L -#define ED_TRANSBASIC_SETTIMER_STARTDAY ED_BASE+615L -#define ED_TRANSBASIC_SETTIMER_STARTTIME ED_BASE+616L -#define ED_TRANSBASIC_SETTIMER_STOPDAY ED_BASE+617L -#define ED_TRANSBASIC_SETTIMER_STOPTIME ED_BASE+618L - -// IAMExtTransport video parameters -#define ED_TRANSVIDEO_SET_OUTPUT ED_BASE+630L // can be one of the following: -#define ED_E2E ED_BASE+631L -#define ED_PLAYBACK ED_BASE+632L -#define ED_OFF ED_BASE+633L - -#define ED_TRANSVIDEO_SET_SOURCE ED_BASE+634L - -// IAMExtTransport audio parameters -#define ED_TRANSAUDIO_ENABLE_OUTPUT ED_BASE+640L // can be the following: -#define ED_AUDIO_ALL 0x10000000 // or any of the following OR'd together -#define ED_AUDIO_1 0x0000001L -#define ED_AUDIO_2 0x0000002L -#define ED_AUDIO_3 0x0000004L -#define ED_AUDIO_4 0x0000008L -#define ED_AUDIO_5 0x0000010L -#define ED_AUDIO_6 0x0000020L -#define ED_AUDIO_7 0x0000040L -#define ED_AUDIO_8 0x0000080L -#define ED_AUDIO_9 0x0000100L -#define ED_AUDIO_10 0x0000200L -#define ED_AUDIO_11 0x0000400L -#define ED_AUDIO_12 0x0000800L -#define ED_AUDIO_13 0x0001000L -#define ED_AUDIO_14 0x0002000L -#define ED_AUDIO_15 0x0004000L -#define ED_AUDIO_16 0x0008000L -#define ED_AUDIO_17 0x0010000L -#define ED_AUDIO_18 0x0020000L -#define ED_AUDIO_19 0x0040000L -#define ED_AUDIO_20 0x0080000L -#define ED_AUDIO_21 0x0100000L -#define ED_AUDIO_22 0x0200000L -#define ED_AUDIO_23 0x0400000L -#define ED_AUDIO_24 0x0800000L -#define ED_VIDEO 0x2000000L // for Edit props below - -#define ED_TRANSAUDIO_ENABLE_RECORD ED_BASE+642L -#define ED_TRANSAUDIO_ENABLE_SELSYNC ED_BASE+643L -#define ED_TRANSAUDIO_SET_SOURCE ED_BASE+644L -#define ED_TRANSAUDIO_SET_MONITOR ED_BASE+645L - - -// Edit Property Set-related defs - -// The following values reflect (and control) the state of an -// edit property set -#define ED_INVALID ED_BASE+652L -#define ED_EXECUTING ED_BASE+653L -#define ED_REGISTER ED_BASE+654L -#define ED_DELETE ED_BASE+655L - -// Edit property set parameters and values -#define ED_EDIT_HEVENT ED_BASE+656L // event handle to signal event - // completion -#define ED_EDIT_TEST ED_BASE+657L // returns OAFALSE if filter thinks - // edit can be done, OATRUE if not -#define ED_EDIT_IMMEDIATE ED_BASE+658L // OATRUE means start put the - // device into edit mode (editing - // "on the fly") immediately upon - // execution of Mode(ED_MODE_EDIT_CUE) -#define ED_EDIT_MODE ED_BASE+659L -// can be one of the following values: -#define ED_EDIT_MODE_ASSEMBLE ED_BASE+660L -#define ED_EDIT_MODE_INSERT ED_BASE+661L -#define ED_EDIT_MODE_CRASH_RECORD ED_BASE+662L -#define ED_EDIT_MODE_BOOKMARK_TIME ED_BASE+663L // these two are for -#define ED_EDIT_MODE_BOOKMARK_CHAPTER ED_BASE+664L // laserdisks - -#define ED_EDIT_MASTER ED_BASE+666L // OATRUE causes device - // not to synchronize - -#define ED_EDIT_TRACK ED_BASE+667L -// can be one of the following possible OR'd values: -// ED_VIDEO, ED_AUDIO_1 thru ED_AUDIO_24 (or ED_AUDIO_ALL) - -#define ED_EDIT_SRC_INPOINT ED_BASE+668L // in current time format -#define ED_EDIT_SRC_OUTPOINT ED_BASE+669L // in current time format -#define ED_EDIT_REC_INPOINT ED_BASE+670L // in current time format -#define ED_EDIT_REC_OUTPOINT ED_BASE+671L // in current time format - -#define ED_EDIT_REHEARSE_MODE ED_BASE+672L -// can be one of the following possible values: -#define ED_EDIT_BVB ED_BASE+673L // means rehearse the edit with - // "black-video-black" -#define ED_EDIT_VBV ED_BASE+674L -#define ED_EDIT_VVV ED_BASE+675L -#define ED_EDIT_PERFORM ED_BASE+676L // means perform the edit with no - // rehearsal. - -// Set this property to OATRUE to kill the edit if in progress -#define ED_EDIT_ABORT ED_BASE+677L -// how long to wait for edit to complete -#define ED_EDIT_TIMEOUT ED_BASE+678L // in current time format - -// This property causes the device to seek to a point specified by -// ED_EDIT_SEEK_MODE (see below). NOTE: Only one event at a time can seek. -#define ED_EDIT_SEEK ED_BASE+679L // OATRUE means do it now. -#define ED_EDIT_SEEK_MODE ED_BASE+680L -//possible values: -#define ED_EDIT_SEEK_EDIT_IN ED_BASE+681L // seek to edit's inpoint -#define ED_EDIT_SEEK_EDIT_OUT ED_BASE+682L // seek to edit's outpoint -#define ED_EDIT_SEEK_PREROLL ED_BASE+683L // seek to edit's - // inpoint-preroll -#define ED_EDIT_SEEK_PREROLL_CT ED_BASE+684L // seek to preroll point - // using control track (used for tapes with - // discontinuoustimecode before edit point: seek - // to inpoint using timecode, then backup to - // preroll point using control track) -#define ED_EDIT_SEEK_BOOKMARK ED_BASE+685L // seek to bookmark (just like - // timecode search) -// This property is used for multiple-VCR systems where each machine must -// cue to a different location relative to the graph's reference clock. The -// basic idea is that an edit event is setup with an ED_EDIT_OFFSET property -// that tells the VCR what offset to maintain between it's timecode (converted -// to reference clock units) and the reference clock. -#define ED_EDIT_OFFSET ED_BASE+686L // in current time format - -#define ED_EDIT_PREREAD ED_BASE+815L // OATRUE means device supports - // pre-read (recorder can also be - // player - -// -// Some error codes: -// -// device could be in local mode -#define ED_ERR_DEVICE_NOT_READY ED_BASE+700L - -#endif // __EDEVDEFS__ - -// eof edevdefs.h +//------------------------------------------------------------------------------ +// File: EDevDefs.h +// +// Desc: External Device (such as a VCR) control interface parameter and +// value definitions. +// +// Note: new constants added: ED_BASE+800L -> ED_BASE+811L +// +// Copyright (c) 1992-2001, Microsoft Corporation. All rights reserved. +//------------------------------------------------------------------------------ + + +#ifndef __EDEVDEFS__ +#define __EDEVDEFS__ + + +#define ED_BASE 0x1000L + +// this is used to tell the device communications object which +// physical communications port to use. +#define DEV_PORT_SIM 1 +#define DEV_PORT_COM1 2 // standard serial ports +#define DEV_PORT_COM2 3 +#define DEV_PORT_COM3 4 +#define DEV_PORT_COM4 5 +#define DEV_PORT_DIAQ 6 // Diaquest driver +#define DEV_PORT_ARTI 7 // ARTI driver +#define DEV_PORT_1394 8 // IEEE 1394 Bus +#define DEV_PORT_USB 9 // Universal Serial Bus +#define DEV_PORT_MIN DEV_PORT_SIM +#define DEV_PORT_MAX DEV_PORT_USB + + +// IAMExtDevice Capability Items: unless otherwise specified, these items return +// OATRUE or OAFALSE. All return values are in pdwValue unless otherwise specified: + +#define ED_DEVCAP_CAN_RECORD ED_BASE+1L +#define ED_DEVCAP_CAN_RECORD_STROBE ED_BASE+2L // for multitrack devices: + // switches currently recording tracks off + // and selected non-recording tracks into record +#define ED_DEVCAP_HAS_AUDIO ED_BASE+3L +#define ED_DEVCAP_HAS_VIDEO ED_BASE+4L +#define ED_DEVCAP_USES_FILES ED_BASE+5L +#define ED_DEVCAP_CAN_SAVE ED_BASE+6L + +#define ED_DEVCAP_DEVICE_TYPE ED_BASE+7L // returns one of the following: +#define ED_DEVTYPE_VCR ED_BASE+8L +#define ED_DEVTYPE_LASERDISK ED_BASE+9L +#define ED_DEVTYPE_ATR ED_BASE+10L +#define ED_DEVTYPE_DDR ED_BASE+11L +#define ED_DEVTYPE_ROUTER ED_BASE+12L +#define ED_DEVTYPE_KEYER ED_BASE+13L +#define ED_DEVTYPE_MIXER_VIDEO ED_BASE+14L +#define ED_DEVTYPE_DVE ED_BASE+15L +#define ED_DEVTYPE_WIPEGEN ED_BASE+16L +#define ED_DEVTYPE_MIXER_AUDIO ED_BASE+17L +#define ED_DEVTYPE_CG ED_BASE+18L +#define ED_DEVTYPE_TBC ED_BASE+19L +#define ED_DEVTYPE_TCG ED_BASE+20L +#define ED_DEVTYPE_GPI ED_BASE+21L +#define ED_DEVTYPE_JOYSTICK ED_BASE+22L +#define ED_DEVTYPE_KEYBOARD ED_BASE+23L + +// returns mfr-specific ID from external device. +#define ED_DEVCAP_EXTERNAL_DEVICE_ID ED_BASE+24L + +#define ED_DEVCAP_TIMECODE_READ ED_BASE+25L +#define ED_DEVCAP_TIMECODE_WRITE ED_BASE+26L +// used for seekable non-timecode enabled devices +#define ED_DEVCAP_CTLTRK_READ ED_BASE+27L +// used for seekable non-timecode enabled devices +#define ED_DEVCAP_INDEX_READ ED_BASE+28L + +// returns device preroll time in current time format +#define ED_DEVCAP_PREROLL ED_BASE+29L +// returns device postroll time in current time format +#define ED_DEVCAP_POSTROLL ED_BASE+30L + +// returns indication of device’s synchronization accuracy. +#define ED_DEVCAP_SYNC_ACCURACY ED_BASE+31L // returns one of the following: +#define ED_SYNCACC_PRECISE ED_BASE+32L +#define ED_SYNCACC_FRAME ED_BASE+33L +#define ED_SYNCACC_ROUGH ED_BASE+34L + +// returns device’s normal framerate. +#define ED_DEVCAP_NORMAL_RATE ED_BASE+35L // returns one of the following: +#define ED_RATE_24 ED_BASE+36L +#define ED_RATE_25 ED_BASE+37L +#define ED_RATE_2997 ED_BASE+38L +#define ED_RATE_30 ED_BASE+39L + +#define ED_DEVCAP_CAN_PREVIEW ED_BASE+40L +#define ED_DEVCAP_CAN_MONITOR_SOURCES ED_BASE+41L + +// indicates implementation allows testing of methods/parameters by +// setting the hi bit of a parm that makes sense - see individual methods +// for details. +#define ED_DEVCAP_CAN_TEST ED_BASE+42L + +// indicates device accepts video as an input. +#define ED_DEVCAP_VIDEO_INPUTS ED_BASE+43L + +// indicates device accepts audio as an input. +#define ED_DEVCAP_AUDIO_INPUTS ED_BASE+44L + +#define ED_DEVCAP_NEEDS_CALIBRATING ED_BASE+45L + +#define ED_DEVCAP_SEEK_TYPE ED_BASE+46L // returns one of the following: +#define ED_SEEK_PERFECT ED_BASE+47L // indicates device can execute seek + // within 1 video frames without signal + // break (like a DDR) +#define ED_SEEK_FAST ED_BASE+48L // indicates device can move pretty quick + // with short break in signal +#define ED_SEEK_SLOW ED_BASE+49L // seeks like a tape transport + +#define ED_POWER_ON ED_BASE+50L +#define ED_POWER_OFF ED_BASE+51L +#define ED_POWER_STANDBY ED_BASE+52L + +#define ED_ACTIVE ED_BASE+53L +#define ED_INACTIVE ED_BASE+54L +#define ED_ALL ED_BASE+55L +#define ED_TEST ED_BASE+56L + +// IAMExtTransport Capability Items: unless otherwise specified, these items return +// OATRUE or OAFALSE. All return values are in pdwValue unless otherwise specified: + +#define ED_TRANSCAP_CAN_EJECT ED_BASE+100L +#define ED_TRANSCAP_CAN_BUMP_PLAY ED_BASE+101L // variable speed for synchronizing +#define ED_TRANSCAP_CAN_PLAY_BACKWARDS ED_BASE+102L // servo locked for use during an edit +#define ED_TRANSCAP_CAN_SET_EE ED_BASE+103L // show device’s input on its output +#define ED_TRANSCAP_CAN_SET_PB ED_BASE+104L // show media playback on device’s output +#define ED_TRANSCAP_CAN_DELAY_VIDEO_IN ED_BASE+105L // transport can do delayed-in video edits +#define ED_TRANSCAP_CAN_DELAY_VIDEO_OUT ED_BASE+106L // transport can do delayed-out video edits +#define ED_TRANSCAP_CAN_DELAY_AUDIO_IN ED_BASE+107L // transport can do delayed-in audio edits +#define ED_TRANSCAP_CAN_DELAY_AUDIO_OUT ED_BASE+108L // transport can do delayed-out audio edits +#define ED_TRANSCAP_FWD_VARIABLE_MAX ED_BASE+109L // max forward speed (multiple of play speed) + // in pdblValue +#define ED_TRANSCAP_FWD_VARIABLE_MIN ED_BASE+800L // min forward speed (multiple of play speed) + // in pdblValue +#define ED_TRANSCAP_REV_VARIABLE_MAX ED_BASE+110L // max reverse speed (multiple of play speed) in + // pdblValue +#define ED_TRANSCAP_REV_VARIABLE_MIN ED_BASE+801L // min reverse speed (multiple of play speed) + // in pdblValue +#define ED_TRANSCAP_FWD_SHUTTLE_MAX ED_BASE+802L // max forward speed in Shuttle mode (multiple + // of play speed) in pdblValue +#define ED_TRANSCAP_FWD_SHUTTLE_MIN ED_BASE+803L // min forward speed in Shuttle mode (multiple + // of play speed) in pdblValue +#define ED_TRANSCAP_REV_SHUTTLE_MAX ED_BASE+804L // max reverse speed in Shuttle mode (multiple + // of play speed) in pdblValue +#define ED_TRANSCAP_REV_SHUTTLE_MIN ED_BASE+805L // min reverse speed in Shuttle mode (multiple + // of play speed) in pdblValue +#define ED_TRANSCAP_NUM_AUDIO_TRACKS ED_BASE+111L // returns number of audio tracks +#define ED_TRANSCAP_LTC_TRACK ED_BASE+112L // returns track number of LTC timecode track. + // ED_ALL means no dedicated timecode track +#define ED_TRANSCAP_NEEDS_TBC ED_BASE+113L // device’s output not stable +#define ED_TRANSCAP_NEEDS_CUEING ED_BASE+114L // device must be cued prior to performing edit +#define ED_TRANSCAP_CAN_INSERT ED_BASE+115L +#define ED_TRANSCAP_CAN_ASSEMBLE ED_BASE+116L +#define ED_TRANSCAP_FIELD_STEP ED_BASE+117L // device responds to Frame Advance command by + // advancing one field +#define ED_TRANSCAP_CLOCK_INC_RATE ED_BASE+118L // VISCA command - keep for compatibility +#define ED_TRANSCAP_CAN_DETECT_LENGTH ED_BASE+119L +#define ED_TRANSCAP_CAN_FREEZE ED_BASE+120L +#define ED_TRANSCAP_HAS_TUNER ED_BASE+121L +#define ED_TRANSCAP_HAS_TIMER ED_BASE+122L +#define ED_TRANSCAP_HAS_CLOCK ED_BASE+123L +#define ED_TRANSCAP_MULTIPLE_EDITS ED_BASE+806L // OATRUE means device/filter can support + // multiple edit events +#define ED_TRANSCAP_IS_MASTER ED_BASE+807L // OATRUE means device is the master clock + // for synchronizing (this sets timecode-to- + // reference clock offset for editing) +#define ED_TRANSCAP_HAS_DT ED_BASE+814L // OATRUE means device has Dynamic Tracking + +// IAMExtTransport Media States +#define ED_MEDIA_SPIN_UP ED_BASE+130L +#define ED_MEDIA_SPIN_DOWN ED_BASE+131L +#define ED_MEDIA_UNLOAD ED_BASE+132L + +// IAMExtTransport Modes +#define ED_MODE_PLAY ED_BASE+200L +#define ED_MODE_STOP ED_BASE+201L +#define ED_MODE_FREEZE ED_BASE+202L // really "pause" +#define ED_MODE_THAW ED_BASE+203L +#define ED_MODE_FF ED_BASE+204L +#define ED_MODE_REW ED_BASE+205L +#define ED_MODE_RECORD ED_BASE+206L +#define ED_MODE_RECORD_STROBE ED_BASE+207L +#define ED_MODE_RECORD_FREEZE ED_BASE+808L // never "put", only "get" +#define ED_MODE_STEP ED_BASE+208L // same as "jog" +#define ED_MODE_STEP_FWD ED_BASE+208L // same as ED_MODE_STEP +#define ED_MODE_STEP_REV ED_BASE+809L +#define ED_MODE_SHUTTLE ED_BASE+209L +#define ED_MODE_EDIT_CUE ED_BASE+210L +#define ED_MODE_VAR_SPEED ED_BASE+211L +#define ED_MODE_PERFORM ED_BASE+212L // returned status only +#define ED_MODE_LINK_ON ED_BASE+280L +#define ED_MODE_LINK_OFF ED_BASE+281L +#define ED_MODE_NOTIFY_ENABLE ED_BASE+810L +#define ED_MODE_NOTIFY_DISABLE ED_BASE+811L +#define ED_MODE_SHOT_SEARCH ED_BASE+812L + +// IAMTimecodeReader/Generator/Display defines +// +// Timecode Generator Mode params and values: +// +#define ED_TCG_TIMECODE_TYPE ED_BASE+400L // can be one of the following: +#define ED_TCG_SMPTE_LTC ED_BASE+401L +#define ED_TCG_SMPTE_VITC ED_BASE+402L +#define ED_TCG_MIDI_QF ED_BASE+403L +#define ED_TCG_MIDI_FULL ED_BASE+404L + +#define ED_TCG_FRAMERATE ED_BASE+405L // can be one of the following: +#define ED_FORMAT_SMPTE_30 ED_BASE+406L +#define ED_FORMAT_SMPTE_30DROP ED_BASE+407L +#define ED_FORMAT_SMPTE_25 ED_BASE+408L +#define ED_FORMAT_SMPTE_24 ED_BASE+409L + +#define ED_TCG_SYNC_SOURCE ED_BASE+410L // can be one of the following: +#define ED_TCG_VIDEO ED_BASE+411L +#define ED_TCG_READER ED_BASE+412L +#define ED_TCG_FREE ED_BASE+413L + +#define ED_TCG_REFERENCE_SOURCE ED_BASE+414L // can have one these values: + // ED_TCG_FREE || ED_TCG_READER + // (for regen/jamsync) + +// TimeCodeReader Mode params and values: +#define ED_TCR_SOURCE ED_BASE+416L // can be one of the following: +// ED_TCG (already defined) +#define ED_TCR_LTC ED_BASE+417L +#define ED_TCR_VITC ED_BASE+418L +#define ED_TCR_CT ED_BASE+419L // Control Track +#define ED_TCR_FTC ED_BASE+420L // File TimeCode - for file-based devices + // that wish they were transports +// ED_MODE_NOTIFY_ENABLE can be OATRUE or OAFALSE (defined in transport mode +// section of this file). +#define ED_TCR_LAST_VALUE ED_BASE+421L // for notification mode - + // successive calls to GetTimecode + // return the last read value +// TimeCode Display Mode params and values: +// +#define ED_TCD_SOURCE ED_BASE+422L // can be one of the following: +#define ED_TCR ED_BASE+423L +#define ED_TCG ED_BASE+424L + +#define ED_TCD_SIZE ED_BASE+425L // can be one of the following: +#define ED_SMALL ED_BASE+426L +#define ED_MED ED_BASE+427L +#define ED_LARGE ED_BASE+428L + +#define ED_TCD_POSITION ED_BASE+429L // can be one of the following: +#define ED_TOP 0x0001 +#define ED_MIDDLE 0x0002 +#define ED_BOTTOM 0x0004 // OR'd with +#define ED_LEFT 0x0100 +#define ED_CENTER 0x0200 +#define ED_RIGHT 0x0400 + +#define ED_TCD_INTENSITY ED_BASE+436L // can be one of the following: +#define ED_HIGH ED_BASE+437L +#define ED_LOW ED_BASE+438L + +#define ED_TCD_TRANSPARENCY ED_BASE+439L // 0-4, 0 is opaque + +#define ED_TCD_INVERT ED_BASE+440L // OATRUE=black on white + // OAFALSE=white on black +// IAMExtTransport defines +// +// Transport status, params and values +// + +// IAMExtTransport Status items and and values: +#define ED_MODE ED_BASE+500L // see ED_MODE_xxx values above +#define ED_ERROR ED_BASE+501L +#define ED_LOCAL ED_BASE+502L +#define ED_RECORD_INHIBIT ED_BASE+503L +#define ED_SERVO_LOCK ED_BASE+504L +#define ED_MEDIA_PRESENT ED_BASE+505L +#define ED_MEDIA_LENGTH ED_BASE+506L +#define ED_MEDIA_SIZE ED_BASE+507L +#define ED_MEDIA_TRACK_COUNT ED_BASE+508L +#define ED_MEDIA_TRACK_LENGTH ED_BASE+509L +#define ED_MEDIA_SIDE ED_BASE+510L + +#define ED_MEDIA_TYPE ED_BASE+511L // can be one of the following: +#define ED_MEDIA_VHS ED_BASE+512L +#define ED_MEDIA_SVHS ED_BASE+513L +#define ED_MEDIA_HI8 ED_BASE+514L +#define ED_MEDIA_UMATIC ED_BASE+515L +#define ED_MEDIA_DVC ED_BASE+516L +#define ED_MEDIA_1_INCH ED_BASE+517L +#define ED_MEDIA_D1 ED_BASE+518L +#define ED_MEDIA_D2 ED_BASE+519L +#define ED_MEDIA_D3 ED_BASE+520L +#define ED_MEDIA_D5 ED_BASE+521L +#define ED_MEDIA_DBETA ED_BASE+522L +#define ED_MEDIA_BETA ED_BASE+523L +#define ED_MEDIA_8MM ED_BASE+524L +#define ED_MEDIA_DDR ED_BASE+525L +#define ED_MEDIA_SX ED_BASE+813L +#define ED_MEDIA_OTHER ED_BASE+526L +#define ED_MEDIA_CLV ED_BASE+527L +#define ED_MEDIA_CAV ED_BASE+528L +#define ED_MEDIA_POSITION ED_BASE+529L + +#define ED_LINK_MODE ED_BASE+530L // OATRUE if transport controls + // are linked to graph's RUN, + // STOP, and PAUSE methods + +// IAMExtTransport Basic Parms +#define ED_TRANSBASIC_TIME_FORMAT ED_BASE+540L // can be one of the following: +#define ED_FORMAT_MILLISECONDS ED_BASE+541L +#define ED_FORMAT_FRAMES ED_BASE+542L +#define ED_FORMAT_REFERENCE_TIME ED_BASE+543L + +#define ED_FORMAT_HMSF ED_BASE+547L +#define ED_FORMAT_TMSF ED_BASE+548L + +#define ED_TRANSBASIC_TIME_REFERENCE ED_BASE+549L // can be one of the following: +#define ED_TIMEREF_TIMECODE ED_BASE+550L +#define ED_TIMEREF_CONTROL_TRACK ED_BASE+551L +#define ED_TIMEREF_INDEX ED_BASE+552L + +#define ED_TRANSBASIC_SUPERIMPOSE ED_BASE+553L // enable/disable onscreen display +#define ED_TRANSBASIC_END_STOP_ACTION ED_BASE+554L // can be one of: ED_MODE_STOP | + // ED_MODE_REWIND | ED_MODE_FREEZE +#define ED_TRANSBASIC_RECORD_FORMAT ED_BASE+555L // can be one of the following: +#define ED_RECORD_FORMAT_SP ED_BASE+556L +#define ED_RECORD_FORMAT_LP ED_BASE+557L +#define ED_RECORD_FORMAT_EP ED_BASE+558L + +#define ED_TRANSBASIC_STEP_COUNT ED_BASE+559L +#define ED_TRANSBASIC_STEP_UNIT ED_BASE+560L // can be one of the following: +#define ED_STEP_FIELD ED_BASE+561L +#define ED_STEP_FRAME ED_BASE+562L +#define ED_STEP_3_2 ED_BASE+563L + +#define ED_TRANSBASIC_PREROLL ED_BASE+564L +#define ED_TRANSBASIC_RECPREROLL ED_BASE+565L +#define ED_TRANSBASIC_POSTROLL ED_BASE+566L +#define ED_TRANSBASIC_EDIT_DELAY ED_BASE+567L +#define ED_TRANSBASIC_PLAYTC_DELAY ED_BASE+568L +#define ED_TRANSBASIC_RECTC_DELAY ED_BASE+569L +#define ED_TRANSBASIC_EDIT_FIELD ED_BASE+570L +#define ED_TRANSBASIC_FRAME_SERVO ED_BASE+571L +#define ED_TRANSBASIC_CF_SERVO ED_BASE+572L +#define ED_TRANSBASIC_SERVO_REF ED_BASE+573L // can be one of the following: +#define ED_REF_EXTERNAL ED_BASE+574L +#define ED_REF_INPUT ED_BASE+575L +#define ED_REF_INTERNAL ED_BASE+576L +#define ED_REF_AUTO ED_BASE+577L + +#define ED_TRANSBASIC_WARN_GL ED_BASE+578L +#define ED_TRANSBASIC_SET_TRACKING ED_BASE+579L // can be one of the following: +#define ED_TRACKING_PLUS ED_BASE+580L +#define ED_TRACKING_MINUS ED_BASE+581L +#define ED_TRACKING_RESET ED_BASE+582L + +#define ED_TRANSBASIC_SET_FREEZE_TIMEOUT ED_BASE+583L +#define ED_TRANSBASIC_VOLUME_NAME ED_BASE+584L +#define ED_TRANSBASIC_BALLISTIC_1 ED_BASE+585L // space for proprietary data +#define ED_TRANSBASIC_BALLISTIC_2 ED_BASE+586L +#define ED_TRANSBASIC_BALLISTIC_3 ED_BASE+587L +#define ED_TRANSBASIC_BALLISTIC_4 ED_BASE+588L +#define ED_TRANSBASIC_BALLISTIC_5 ED_BASE+589L +#define ED_TRANSBASIC_BALLISTIC_6 ED_BASE+590L +#define ED_TRANSBASIC_BALLISTIC_7 ED_BASE+591L +#define ED_TRANSBASIC_BALLISTIC_8 ED_BASE+592L +#define ED_TRANSBASIC_BALLISTIC_9 ED_BASE+593L +#define ED_TRANSBASIC_BALLISTIC_10 ED_BASE+594L +#define ED_TRANSBASIC_BALLISTIC_11 ED_BASE+595L +#define ED_TRANSBASIC_BALLISTIC_12 ED_BASE+596L +#define ED_TRANSBASIC_BALLISTIC_13 ED_BASE+597L +#define ED_TRANSBASIC_BALLISTIC_14 ED_BASE+598L +#define ED_TRANSBASIC_BALLISTIC_15 ED_BASE+599L +#define ED_TRANSBASIC_BALLISTIC_16 ED_BASE+600L +#define ED_TRANSBASIC_BALLISTIC_17 ED_BASE+601L +#define ED_TRANSBASIC_BALLISTIC_18 ED_BASE+602L +#define ED_TRANSBASIC_BALLISTIC_19 ED_BASE+603L +#define ED_TRANSBASIC_BALLISTIC_20 ED_BASE+604L + +// consumer VCR items +#define ED_TRANSBASIC_SETCLOCK ED_BASE+605L +#define ED_TRANSBASIC_SET_COUNTER_FORMAT ED_BASE+606L // uses time format flags +#define ED_TRANSBASIC_SET_COUNTER_VALUE ED_BASE+607L + +#define ED_TRANSBASIC_SETTUNER_CH_UP ED_BASE+608L +#define ED_TRANSBASIC_SETTUNER_CH_DN ED_BASE+609L +#define ED_TRANSBASIC_SETTUNER_SK_UP ED_BASE+610L +#define ED_TRANSBASIC_SETTUNER_SK_DN ED_BASE+611L +#define ED_TRANSBASIC_SETTUNER_CH ED_BASE+612L +#define ED_TRANSBASIC_SETTUNER_NUM ED_BASE+613L + +#define ED_TRANSBASIC_SETTIMER_EVENT ED_BASE+614L +#define ED_TRANSBASIC_SETTIMER_STARTDAY ED_BASE+615L +#define ED_TRANSBASIC_SETTIMER_STARTTIME ED_BASE+616L +#define ED_TRANSBASIC_SETTIMER_STOPDAY ED_BASE+617L +#define ED_TRANSBASIC_SETTIMER_STOPTIME ED_BASE+618L + +// IAMExtTransport video parameters +#define ED_TRANSVIDEO_SET_OUTPUT ED_BASE+630L // can be one of the following: +#define ED_E2E ED_BASE+631L +#define ED_PLAYBACK ED_BASE+632L +#define ED_OFF ED_BASE+633L + +#define ED_TRANSVIDEO_SET_SOURCE ED_BASE+634L + +// IAMExtTransport audio parameters +#define ED_TRANSAUDIO_ENABLE_OUTPUT ED_BASE+640L // can be the following: +#define ED_AUDIO_ALL 0x10000000 // or any of the following OR'd together +#define ED_AUDIO_1 0x0000001L +#define ED_AUDIO_2 0x0000002L +#define ED_AUDIO_3 0x0000004L +#define ED_AUDIO_4 0x0000008L +#define ED_AUDIO_5 0x0000010L +#define ED_AUDIO_6 0x0000020L +#define ED_AUDIO_7 0x0000040L +#define ED_AUDIO_8 0x0000080L +#define ED_AUDIO_9 0x0000100L +#define ED_AUDIO_10 0x0000200L +#define ED_AUDIO_11 0x0000400L +#define ED_AUDIO_12 0x0000800L +#define ED_AUDIO_13 0x0001000L +#define ED_AUDIO_14 0x0002000L +#define ED_AUDIO_15 0x0004000L +#define ED_AUDIO_16 0x0008000L +#define ED_AUDIO_17 0x0010000L +#define ED_AUDIO_18 0x0020000L +#define ED_AUDIO_19 0x0040000L +#define ED_AUDIO_20 0x0080000L +#define ED_AUDIO_21 0x0100000L +#define ED_AUDIO_22 0x0200000L +#define ED_AUDIO_23 0x0400000L +#define ED_AUDIO_24 0x0800000L +#define ED_VIDEO 0x2000000L // for Edit props below + +#define ED_TRANSAUDIO_ENABLE_RECORD ED_BASE+642L +#define ED_TRANSAUDIO_ENABLE_SELSYNC ED_BASE+643L +#define ED_TRANSAUDIO_SET_SOURCE ED_BASE+644L +#define ED_TRANSAUDIO_SET_MONITOR ED_BASE+645L + + +// Edit Property Set-related defs + +// The following values reflect (and control) the state of an +// edit property set +#define ED_INVALID ED_BASE+652L +#define ED_EXECUTING ED_BASE+653L +#define ED_REGISTER ED_BASE+654L +#define ED_DELETE ED_BASE+655L + +// Edit property set parameters and values +#define ED_EDIT_HEVENT ED_BASE+656L // event handle to signal event + // completion +#define ED_EDIT_TEST ED_BASE+657L // returns OAFALSE if filter thinks + // edit can be done, OATRUE if not +#define ED_EDIT_IMMEDIATE ED_BASE+658L // OATRUE means start put the + // device into edit mode (editing + // "on the fly") immediately upon + // execution of Mode(ED_MODE_EDIT_CUE) +#define ED_EDIT_MODE ED_BASE+659L +// can be one of the following values: +#define ED_EDIT_MODE_ASSEMBLE ED_BASE+660L +#define ED_EDIT_MODE_INSERT ED_BASE+661L +#define ED_EDIT_MODE_CRASH_RECORD ED_BASE+662L +#define ED_EDIT_MODE_BOOKMARK_TIME ED_BASE+663L // these two are for +#define ED_EDIT_MODE_BOOKMARK_CHAPTER ED_BASE+664L // laserdisks + +#define ED_EDIT_MASTER ED_BASE+666L // OATRUE causes device + // not to synchronize + +#define ED_EDIT_TRACK ED_BASE+667L +// can be one of the following possible OR'd values: +// ED_VIDEO, ED_AUDIO_1 thru ED_AUDIO_24 (or ED_AUDIO_ALL) + +#define ED_EDIT_SRC_INPOINT ED_BASE+668L // in current time format +#define ED_EDIT_SRC_OUTPOINT ED_BASE+669L // in current time format +#define ED_EDIT_REC_INPOINT ED_BASE+670L // in current time format +#define ED_EDIT_REC_OUTPOINT ED_BASE+671L // in current time format + +#define ED_EDIT_REHEARSE_MODE ED_BASE+672L +// can be one of the following possible values: +#define ED_EDIT_BVB ED_BASE+673L // means rehearse the edit with + // "black-video-black" +#define ED_EDIT_VBV ED_BASE+674L +#define ED_EDIT_VVV ED_BASE+675L +#define ED_EDIT_PERFORM ED_BASE+676L // means perform the edit with no + // rehearsal. + +// Set this property to OATRUE to kill the edit if in progress +#define ED_EDIT_ABORT ED_BASE+677L +// how long to wait for edit to complete +#define ED_EDIT_TIMEOUT ED_BASE+678L // in current time format + +// This property causes the device to seek to a point specified by +// ED_EDIT_SEEK_MODE (see below). NOTE: Only one event at a time can seek. +#define ED_EDIT_SEEK ED_BASE+679L // OATRUE means do it now. +#define ED_EDIT_SEEK_MODE ED_BASE+680L +//possible values: +#define ED_EDIT_SEEK_EDIT_IN ED_BASE+681L // seek to edit's inpoint +#define ED_EDIT_SEEK_EDIT_OUT ED_BASE+682L // seek to edit's outpoint +#define ED_EDIT_SEEK_PREROLL ED_BASE+683L // seek to edit's + // inpoint-preroll +#define ED_EDIT_SEEK_PREROLL_CT ED_BASE+684L // seek to preroll point + // using control track (used for tapes with + // discontinuoustimecode before edit point: seek + // to inpoint using timecode, then backup to + // preroll point using control track) +#define ED_EDIT_SEEK_BOOKMARK ED_BASE+685L // seek to bookmark (just like + // timecode search) +// This property is used for multiple-VCR systems where each machine must +// cue to a different location relative to the graph's reference clock. The +// basic idea is that an edit event is setup with an ED_EDIT_OFFSET property +// that tells the VCR what offset to maintain between it's timecode (converted +// to reference clock units) and the reference clock. +#define ED_EDIT_OFFSET ED_BASE+686L // in current time format + +#define ED_EDIT_PREREAD ED_BASE+815L // OATRUE means device supports + // pre-read (recorder can also be + // player + +// +// Some error codes: +// +// device could be in local mode +#define ED_ERR_DEVICE_NOT_READY ED_BASE+700L + +#endif // __EDEVDEFS__ + +// eof edevdefs.h diff --git a/videoInputSrcAndDemos/libs/DShow/Include/errors.h b/videoInputSrcAndDemos/libs/DShow/Include/errors.h index c343227..d89a0a1 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/errors.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/errors.h @@ -1,47 +1,47 @@ -//------------------------------------------------------------------------------ -// File: Errors.h -// -// Desc: ActiveMovie error defines. -// -// Copyright (c) 1992-2001, Microsoft Corporation. All rights reserved. -//------------------------------------------------------------------------------ - - -#ifndef __ERRORS__ -#define __ERRORS__ - -#ifdef __cplusplus -extern "C" { -#endif // __cplusplus - -#ifndef _AMOVIE_ -#define AMOVIEAPI DECLSPEC_IMPORT -#else -#define AMOVIEAPI -#endif - -// codes 0-01ff are reserved for OLE -#define VFW_FIRST_CODE 0x200 -#define MAX_ERROR_TEXT_LEN 160 - -#include // includes all message definitions - -typedef BOOL (WINAPI* AMGETERRORTEXTPROCA)(HRESULT, char *, DWORD); -typedef BOOL (WINAPI* AMGETERRORTEXTPROCW)(HRESULT, WCHAR *, DWORD); - -AMOVIEAPI DWORD WINAPI AMGetErrorTextA( HRESULT hr , char *pbuffer , DWORD MaxLen); -AMOVIEAPI DWORD WINAPI AMGetErrorTextW( HRESULT hr , WCHAR *pbuffer , DWORD MaxLen); - - -#ifdef UNICODE -#define AMGetErrorText AMGetErrorTextW -typedef AMGETERRORTEXTPROCW AMGETERRORTEXTPROC; -#else -#define AMGetErrorText AMGetErrorTextA -typedef AMGETERRORTEXTPROCA AMGETERRORTEXTPROC; -#endif - -#ifdef __cplusplus -} -#endif // __cplusplus -#endif // __ERRORS__ +//------------------------------------------------------------------------------ +// File: Errors.h +// +// Desc: ActiveMovie error defines. +// +// Copyright (c) 1992-2001, Microsoft Corporation. All rights reserved. +//------------------------------------------------------------------------------ + + +#ifndef __ERRORS__ +#define __ERRORS__ + +#ifdef __cplusplus +extern "C" { +#endif // __cplusplus + +#ifndef _AMOVIE_ +#define AMOVIEAPI DECLSPEC_IMPORT +#else +#define AMOVIEAPI +#endif + +// codes 0-01ff are reserved for OLE +#define VFW_FIRST_CODE 0x200 +#define MAX_ERROR_TEXT_LEN 160 + +#include // includes all message definitions + +typedef BOOL (WINAPI* AMGETERRORTEXTPROCA)(HRESULT, char *, DWORD); +typedef BOOL (WINAPI* AMGETERRORTEXTPROCW)(HRESULT, WCHAR *, DWORD); + +AMOVIEAPI DWORD WINAPI AMGetErrorTextA( HRESULT hr , char *pbuffer , DWORD MaxLen); +AMOVIEAPI DWORD WINAPI AMGetErrorTextW( HRESULT hr , WCHAR *pbuffer , DWORD MaxLen); + + +#ifdef UNICODE +#define AMGetErrorText AMGetErrorTextW +typedef AMGETERRORTEXTPROCW AMGETERRORTEXTPROC; +#else +#define AMGetErrorText AMGetErrorTextA +typedef AMGETERRORTEXTPROCA AMGETERRORTEXTPROC; +#endif + +#ifdef __cplusplus +} +#endif // __cplusplus +#endif // __ERRORS__ diff --git a/videoInputSrcAndDemos/libs/DShow/Include/evcode.h b/videoInputSrcAndDemos/libs/DShow/Include/evcode.h index 62a26b2..32cc195 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/evcode.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/evcode.h @@ -1,428 +1,428 @@ -//------------------------------------------------------------------------------ -// File: EvCode.h -// -// Desc: List of standard Quartz event codes and the expected params. -// -// Copyright (c) 1992 - 2001, Microsoft Corporation. All rights reserved. -//------------------------------------------------------------------------------ - - -// Event codes are broken into two groups -// -- system event codes -// -- extension event codes -// All system event codes are below EC_USER - -#define EC_SYSTEMBASE 0x00 -#define EC_USER 0x8000 - -// System-defined event codes -// ========================== -// -// There are three types of system-defined event codes: -// -// 1. Those which are always passed through to the application -// (To be collected by calls to GetEvent or within WaitForCompletion.) -// (e.g. EC_ERRORABORT, EC_USERABORT.) -// -// 2. Those which are pure internal and will never be passed to -// the application. (e.g. EC_SHUTDOWN) -// -// 3. Those which have default handling. Default handing implies that -// the event is not passed to the application. However, default -// handling may be canceled by calling -// IMediaEvent::CancelDefaultHandling. If the default handling is -// cancelled in this way, then the message will be delivered to the -// application and the application must action it appropriately. -// Default handling can be restored by calling RestoreDefaultHandling. -// -// We will refer to these events as application, internal and defaulted -// events respectively. -// -// System-defined events may have interface pointers, BSTR's, etc passed -// as parameters. It is therefore essential that, for any message -// retrieved using GetEvent, a matching call to FreeEventParams is made -// to ensure that relevant interfaces are released and storage freed. -// Failure to call FreeEventParams will result in memory leaks, if not -// worse. -// -// Filters sending these messages to the filter graph should not AddRef() -// any interfaces that they may pass as parameters. The filter graph -// manager will AddRef them if required. E.g. if the event is to be queued -// for the application or queued to a worker thread. - -// Each event listed below is immediately followed by a parameter list -// detailing the types of the parameters associated with the message, -// and an indication of whether the message is an application, internal -// or defaulted message. This is then followed by a short description. -// The use of "void" in the parameter list implies that the parameter is not -// used. Such parameters should be zero. - -// Other defined EC_ regions: -// DVD event codes 0x0100 - 0x0150 (dvdevcod.h) -// audio device event codes 0x0200 - 0x0250 (audevcod.h) -// WindowsMedia SDK-originated events 0x0251 - 0x0300 (see below) -// MSVIDCTL 0x0301 - 0x0325 (msvidctl.idl) -// stream buffer engine (PVR) 0x0326 - 0x0350 (sbe.idl) - -#define EC_COMPLETE 0x01 -// ( HRESULT, void ) : defaulted (special) -// Signals the completed playback of a stream within the graph. This message -// is sent by renderers when they receive end-of-stream. The default handling -// of this message results in a _SINGLE_ EC_COMPLETE being sent to the -// application when ALL of the individual renderers have signaled EC_COMPLETE -// to the filter graph. If the default handing is canceled, the application -// will see all of the individual EC_COMPLETEs. - - -#define EC_USERABORT 0x02 -// ( void, void ) : application -// In some sense, the user has requested that playback be terminated. -// This message is typically sent by renderers that render into a -// window if the user closes the window into which it was rendering. -// It is up to the application to decide if playback should actually -// be stopped. - - -#define EC_ERRORABORT 0x03 -// ( HRESULT, void ) : application -// Operation aborted because of error - - -#define EC_TIME 0x04 -// ( DWORD, DWORD ) : application -// The requested reference time occurred. (This event is currently not used). -// lParam1 is low dword of ref time, lParam2 is high dword of reftime. - - -#define EC_REPAINT 0x05 -// ( IPin * (could be NULL), void ) : defaulted -// A repaint is required - lParam1 contains the (IPin *) that needs the data -// to be sent again. Default handling is: if the output pin which the IPin is -// attached to supports the IMediaEventSink interface then it will be called -// with the EC_REPAINT first. If that fails then normal repaint processing is -// done by the filter graph. - - -// Stream error notifications -#define EC_STREAM_ERROR_STOPPED 0x06 -#define EC_STREAM_ERROR_STILLPLAYING 0x07 -// ( HRESULT, DWORD ) : application -// lParam 1 is major code, lParam2 is minor code, either may be zero. - - -#define EC_ERROR_STILLPLAYING 0x08 -// ( HRESULT, void ) : application -// The filter graph manager may issue Run's to the graph asynchronously. -// If such a Run fails, EC_ERROR_STILLPLAYING is issued to notify the -// application of the failure. The state of the underlying filters -// at such a time will be indeterminate - they will all have been asked -// to run, but some are almost certainly not. - - -#define EC_PALETTE_CHANGED 0x09 -// ( void, void ) : application -// notify application that the video palette has changed - - -#define EC_VIDEO_SIZE_CHANGED 0x0A -// ( DWORD, void ) : application -// Sent by video renderers. -// Notifies the application that the native video size has changed. -// LOWORD of the DWORD is the new width, HIWORD is the new height. - - -#define EC_QUALITY_CHANGE 0x0B -// ( void, void ) : application -// Notify application that playback degradation has occurred - - -#define EC_SHUTTING_DOWN 0x0C -// ( void, void ) : internal -// This message is sent by the filter graph manager to any plug-in -// distributors which support IMediaEventSink to notify them that -// the filter graph is starting to shutdown. - - -#define EC_CLOCK_CHANGED 0x0D -// ( void, void ) : application -// Notify application that the clock has changed. -// (i.e. SetSyncSource has been called on the filter graph and has been -// distributed successfully to the filters in the graph.) - - -#define EC_PAUSED 0x0E -// ( HRESULT, void ) : application -// Notify application the previous pause request has completed - - -#define EC_OPENING_FILE 0x10 -#define EC_BUFFERING_DATA 0x11 -// ( BOOL, void ) : application -// lParam1 == 1 --> starting to open file or buffer data -// lParam1 == 0 --> not opening or buffering any more -// (This event does not appear to be used by ActiveMovie.) - - -#define EC_FULLSCREEN_LOST 0x12 -// ( void, IBaseFilter * ) : application -// Sent by full screen renderers when switched away from full screen. -// IBaseFilter may be NULL. - - -#define EC_ACTIVATE 0x13 -// ( BOOL, IBaseFilter * ) : internal -// Sent by video renderers when they lose or gain activation. -// lParam1 is set to 1 if gained or 0 if lost -// lParam2 is the IBaseFilter* for the filter that is sending the message -// Used for sound follows focus and full-screen switching - - -#define EC_NEED_RESTART 0x14 -// ( void, void ) : defaulted -// Sent by renderers when they regain a resource (e.g. audio renderer). -// Causes a restart by Pause/put_Current/Run (if running). - - -#define EC_WINDOW_DESTROYED 0x15 -// ( IBaseFilter *, void ) : internal -// Sent by video renderers when the window has been destroyed. Handled -// by the filter graph / distributor telling the resource manager. -// lParam1 is the IBaseFilter* of the filter whose window is being destroyed - - -#define EC_DISPLAY_CHANGED 0x16 -// ( IPin *, void ) : internal -// Sent by renderers when they detect a display change. the filter graph -// will arrange for the graph to be stopped and the pin send in lParam1 -// to be reconnected. by being reconnected it allows a renderer to reset -// and connect with a more appropriate format for the new display mode -// lParam1 contains an (IPin *) that should be reconnected by the graph - - -#define EC_STARVATION 0x17 -// ( void, void ) : defaulted -// Sent by a filter when it detects starvation. Default handling (only when -// running) is for the graph to be paused until all filters enter the -// paused state and then run. Normally this would be sent by a parser or source -// filter when too little data is arriving. - - -#define EC_OLE_EVENT 0x18 -// ( BSTR, BSTR ) : application -// Sent by a filter to pass a text string to the application. -// Conventionally, the first string is a type, and the second a parameter. - - -#define EC_NOTIFY_WINDOW 0x19 -// ( HWND, void ) : internal -// Pass the window handle around during pin connection. - -#define EC_STREAM_CONTROL_STOPPED 0x1A -// ( IPin * pSender, DWORD dwCookie ) -// Notification that an earlier call to IAMStreamControl::StopAt -// has now take effect. Calls to the method can be marked -// with a cookie which is passed back in the second parameter, -// allowing applications to easily tie together request -// and completion notifications. -// -// NB: IPin will point to the pin that actioned the Stop. This -// may not be the pin that the StopAt was sent to. - -#define EC_STREAM_CONTROL_STARTED 0x1B -// ( IPin * pSender, DWORD dwCookie ) -// Notification that an earlier call to IAMStreamControl::StartAt -// has now take effect. Calls to the method can be marked -// with a cookie which is passed back in the second parameter, -// allowing applications to easily tie together request -// and completion notifications. -// -// NB: IPin will point to the pin that actioned the Start. This -// may not be the pin that the StartAt was sent to. - -#define EC_END_OF_SEGMENT 0x1C -// -// ( const REFERENCE_TIME *pStreamTimeAtEndOfSegment, DWORD dwSegmentNumber ) -// -// pStreamTimeAtEndOfSegment -// pointer to the accumulated stream clock -// time since the start of the segment - this is directly computable -// as the sum of the previous and current segment durations (Stop - Start) -// and the rate applied to each segment -// The source add this time to the time within each segment to get -// a total elapsed time -// -// dwSegmentNumber -// Segment number - starts at 0 -// -// Notifies that a segment end has been reached when the -// AM_SEEKING_Segment flags was set for IMediaSeeking::SetPositions -// Passes in an IMediaSeeking interface to allow the next segment -// to be defined by the application - -#define EC_SEGMENT_STARTED 0x1D -// -// ( const REFERENCE_TIME *pStreamTimeAtStartOfSegment, DWORD dwSegmentNumber) -// -// pStreamTimeAtStartOfSegment -// pointer to the accumulated stream clock -// time since the start of the segment - this is directly computable -// as the sum of the previous segment durations (Stop - Start) -// and the rate applied to each segment -// -// dwSegmentNumber -// Segment number - starts at 0 -// -// Notifies that a new segment has been started. -// This is sent synchronously by any entity that will issue -// EC_END_OF_SEGMENT when a new segment is started -// (See IMediaSeeking::SetPositions - AM_SEEKING_Segment flag) -// It is used to compute how many EC_END_OF_SEGMENT notifications -// to expect at the end of a segment and as a consitency check - - -#define EC_LENGTH_CHANGED 0x1E -// (void, void) -// sent to indicate that the length of the "file" has changed - -#define EC_DEVICE_LOST 0x1f -// (IUnknown, 0) -// -// request window notification when the device is available again -// (through WM_DEVICECHANGED messages registered with -// RegisterDeviceNotification; see IAMDeviceRemoval interface) - -#define EC_STEP_COMPLETE 0x24 -// (BOOL bCacelled, void) -// Step request complete -// if bCancelled is TRUE the step was cancelled. This can happen -// if the application issued some control request or because there -// was a mode change etc etc - -// Event code 25 is reserved for future use. - -#define EC_TIMECODE_AVAILABLE 0x30 -// Sent by filter supporting timecode -// Param1 has a pointer to the sending object -// Param2 has the device ID of the sending object - -#define EC_EXTDEVICE_MODE_CHANGE 0x31 -// Sent by filter supporting IAMExtDevice -// Param1 has the new mode -// Param2 has the device ID of the sending object - -#define EC_STATE_CHANGE 0x32 -// ( FILTER_STATE, BOOL bInternal) -// Used to notify the application of any state changes in the filter graph. -// lParam1 is of type enum FILTER_STATE (defined in strmif.h) and indicates -// the state of the filter graph. -// -// lParam2 == 0 indicates that the previous state change request has completed -// & a change in application state. -// lParam2 == 1 reserved for future use to indicate internal state changes. - - -#define EC_GRAPH_CHANGED 0x50 -// Sent by filter to notify interesting graph changes - -#define EC_CLOCK_UNSET 0x51 -// ( void, void ) : application -// Used to notify the filter graph to unset the current graph clock. -// Has the affect of forcing the filter graph to reestablish the graph clock -// on the next Pause/Run (note that this is only used by ksproxy, when the pin -// of a clock providing filter is disconnected) - -#define EC_VMR_RENDERDEVICE_SET 0x53 -// (Render_Device type, void) -// Identifies the type of rendering mechanism the VMR -// is using to display video. Types used include: -#define VMR_RENDER_DEVICE_OVERLAY 0x01 -#define VMR_RENDER_DEVICE_VIDMEM 0x02 -#define VMR_RENDER_DEVICE_SYSMEM 0x04 - - -#define EC_VMR_SURFACE_FLIPPED 0x54 -// (hr - Flip return code, void) -// Identifies the VMR's allocator-presenter has called the DDraw flip api on -// the surface being presented. This allows the VMR to keep its DX-VA table -// of DDraw surfaces in sync with DDraws flipping chain. - -#define EC_VMR_RECONNECTION_FAILED 0x55 -// (hr - ReceiveConnection return code, void) -// Identifies that an upstream decoder tried to perform a dynamic format -// change and the VMR was unable to accept the new format. - - -#define EC_PREPROCESS_COMPLETE 0x56 -// Sent by the WM ASF writer filter (WMSDK V9 version) to signal the completion -// of a pre-process run when running in multipass encode mode. -// Param1 = 0, Param2 = IBaseFilter ptr of sending filter - -#define EC_CODECAPI_EVENT 0x57 -// Sent by the Codec API when an event is encountered. Both the Data -// must be freed by the recipient using CoTaskMemFree -// Param1 = UserDataPointer, Param2 = VOID* Data - -//------------------------------------------ -// -// BDA events: -// -// Event code 0x80 through 0x8f are reserved for BDA -// - - -//------------------------------------------ -// -// WindowsMedia SDK filter-specific events: -// -// -// Note that for EC_WMT_EVENT events the wmsdk-based filters use the following structure for -// passing event parameters to the app: -#ifndef AM_WMT_EVENT_DATA_DEFINED -#define AM_WMT_EVENT_DATA_DEFINED -typedef struct { - HRESULT hrStatus; // status code - void * pData; // event data -} AM_WMT_EVENT_DATA; -#endif -// -#define EC_WMT_EVENT_BASE 0x0251 -// -#define EC_WMT_INDEX_EVENT EC_WMT_EVENT_BASE -// WindowsMedia SDK-originated file indexing status, sent by WMSDK-based filters -// -// lParam1 is one of the enum WMT_STATUS messages listed below, sent by the WindowsMedia SDK -// lParam2 is specific to the lParam event -// -// the following WMT_STATUS messages are sent for this event: -// WMT_STARTED - lParam2 is 0 -// WMT_CLOSED - lParam2 is 0 -// WMT_INDEX_PROGRESS - lParam2 is a DWORD containing the progress percent complete -// -#define EC_WMT_EVENT EC_WMT_EVENT_BASE+1 -// WindowsMedia SDK-originated event, sent by WMSDK-based filters -// -// lParam1 is one of the enum WMT_STATUS messages listed below, sent by the WindowsMedia SDK -// lParam2 is a pointer an AM_WMT_EVENT_DATA structure where, -// hrStatus is the status code sent by the wmsdk -// pData is specific to the lParam1 event -// -// the following WMT_STATUS messages are sent by the WMSDK Reader filter for this event: -// WMT_NO_RIGHTS - pData is a pointer to a WCHAR string containing a challenge URL -// WMT_ACQUIRE_LICENSE - lParam2 is a pointer to a WM_GET_LICENSE_DATA struct -// WMT_NO_RIGHTS_EX - lParam2 is a pointer to a WM_GET_LICENSE_DATA struct -// WMT_NEEDS_INDIVIDUALIZATION - lParam2 is NULL -// WMT_INDIVIDUALIZE - lParam2 is a pointer to a WM_INDIVIDUALIZE_STATUS struct -// the WMSDK (V9) ASF Writer filter will send this event in response to a wmsdk-signaled error during file -// writing, along with the wmsdk WMT_STATUS error as the lParam1 and hrStatus embedded in the -// AM_WMT_EVENT_DATA struct pointed to by the lParam2 pointer. -// -// end WMSDK-originated events -//----------------------------------------- - - -#define EC_BUILT 0x300 -// Sent to notify transition from unbuilt to built state - - -#define EC_UNBUILT 0x301 -// Sent to notify transtion from built to unbuilt state +//------------------------------------------------------------------------------ +// File: EvCode.h +// +// Desc: List of standard Quartz event codes and the expected params. +// +// Copyright (c) 1992 - 2001, Microsoft Corporation. All rights reserved. +//------------------------------------------------------------------------------ + + +// Event codes are broken into two groups +// -- system event codes +// -- extension event codes +// All system event codes are below EC_USER + +#define EC_SYSTEMBASE 0x00 +#define EC_USER 0x8000 + +// System-defined event codes +// ========================== +// +// There are three types of system-defined event codes: +// +// 1. Those which are always passed through to the application +// (To be collected by calls to GetEvent or within WaitForCompletion.) +// (e.g. EC_ERRORABORT, EC_USERABORT.) +// +// 2. Those which are pure internal and will never be passed to +// the application. (e.g. EC_SHUTDOWN) +// +// 3. Those which have default handling. Default handing implies that +// the event is not passed to the application. However, default +// handling may be canceled by calling +// IMediaEvent::CancelDefaultHandling. If the default handling is +// cancelled in this way, then the message will be delivered to the +// application and the application must action it appropriately. +// Default handling can be restored by calling RestoreDefaultHandling. +// +// We will refer to these events as application, internal and defaulted +// events respectively. +// +// System-defined events may have interface pointers, BSTR's, etc passed +// as parameters. It is therefore essential that, for any message +// retrieved using GetEvent, a matching call to FreeEventParams is made +// to ensure that relevant interfaces are released and storage freed. +// Failure to call FreeEventParams will result in memory leaks, if not +// worse. +// +// Filters sending these messages to the filter graph should not AddRef() +// any interfaces that they may pass as parameters. The filter graph +// manager will AddRef them if required. E.g. if the event is to be queued +// for the application or queued to a worker thread. + +// Each event listed below is immediately followed by a parameter list +// detailing the types of the parameters associated with the message, +// and an indication of whether the message is an application, internal +// or defaulted message. This is then followed by a short description. +// The use of "void" in the parameter list implies that the parameter is not +// used. Such parameters should be zero. + +// Other defined EC_ regions: +// DVD event codes 0x0100 - 0x0150 (dvdevcod.h) +// audio device event codes 0x0200 - 0x0250 (audevcod.h) +// WindowsMedia SDK-originated events 0x0251 - 0x0300 (see below) +// MSVIDCTL 0x0301 - 0x0325 (msvidctl.idl) +// stream buffer engine (PVR) 0x0326 - 0x0350 (sbe.idl) + +#define EC_COMPLETE 0x01 +// ( HRESULT, void ) : defaulted (special) +// Signals the completed playback of a stream within the graph. This message +// is sent by renderers when they receive end-of-stream. The default handling +// of this message results in a _SINGLE_ EC_COMPLETE being sent to the +// application when ALL of the individual renderers have signaled EC_COMPLETE +// to the filter graph. If the default handing is canceled, the application +// will see all of the individual EC_COMPLETEs. + + +#define EC_USERABORT 0x02 +// ( void, void ) : application +// In some sense, the user has requested that playback be terminated. +// This message is typically sent by renderers that render into a +// window if the user closes the window into which it was rendering. +// It is up to the application to decide if playback should actually +// be stopped. + + +#define EC_ERRORABORT 0x03 +// ( HRESULT, void ) : application +// Operation aborted because of error + + +#define EC_TIME 0x04 +// ( DWORD, DWORD ) : application +// The requested reference time occurred. (This event is currently not used). +// lParam1 is low dword of ref time, lParam2 is high dword of reftime. + + +#define EC_REPAINT 0x05 +// ( IPin * (could be NULL), void ) : defaulted +// A repaint is required - lParam1 contains the (IPin *) that needs the data +// to be sent again. Default handling is: if the output pin which the IPin is +// attached to supports the IMediaEventSink interface then it will be called +// with the EC_REPAINT first. If that fails then normal repaint processing is +// done by the filter graph. + + +// Stream error notifications +#define EC_STREAM_ERROR_STOPPED 0x06 +#define EC_STREAM_ERROR_STILLPLAYING 0x07 +// ( HRESULT, DWORD ) : application +// lParam 1 is major code, lParam2 is minor code, either may be zero. + + +#define EC_ERROR_STILLPLAYING 0x08 +// ( HRESULT, void ) : application +// The filter graph manager may issue Run's to the graph asynchronously. +// If such a Run fails, EC_ERROR_STILLPLAYING is issued to notify the +// application of the failure. The state of the underlying filters +// at such a time will be indeterminate - they will all have been asked +// to run, but some are almost certainly not. + + +#define EC_PALETTE_CHANGED 0x09 +// ( void, void ) : application +// notify application that the video palette has changed + + +#define EC_VIDEO_SIZE_CHANGED 0x0A +// ( DWORD, void ) : application +// Sent by video renderers. +// Notifies the application that the native video size has changed. +// LOWORD of the DWORD is the new width, HIWORD is the new height. + + +#define EC_QUALITY_CHANGE 0x0B +// ( void, void ) : application +// Notify application that playback degradation has occurred + + +#define EC_SHUTTING_DOWN 0x0C +// ( void, void ) : internal +// This message is sent by the filter graph manager to any plug-in +// distributors which support IMediaEventSink to notify them that +// the filter graph is starting to shutdown. + + +#define EC_CLOCK_CHANGED 0x0D +// ( void, void ) : application +// Notify application that the clock has changed. +// (i.e. SetSyncSource has been called on the filter graph and has been +// distributed successfully to the filters in the graph.) + + +#define EC_PAUSED 0x0E +// ( HRESULT, void ) : application +// Notify application the previous pause request has completed + + +#define EC_OPENING_FILE 0x10 +#define EC_BUFFERING_DATA 0x11 +// ( BOOL, void ) : application +// lParam1 == 1 --> starting to open file or buffer data +// lParam1 == 0 --> not opening or buffering any more +// (This event does not appear to be used by ActiveMovie.) + + +#define EC_FULLSCREEN_LOST 0x12 +// ( void, IBaseFilter * ) : application +// Sent by full screen renderers when switched away from full screen. +// IBaseFilter may be NULL. + + +#define EC_ACTIVATE 0x13 +// ( BOOL, IBaseFilter * ) : internal +// Sent by video renderers when they lose or gain activation. +// lParam1 is set to 1 if gained or 0 if lost +// lParam2 is the IBaseFilter* for the filter that is sending the message +// Used for sound follows focus and full-screen switching + + +#define EC_NEED_RESTART 0x14 +// ( void, void ) : defaulted +// Sent by renderers when they regain a resource (e.g. audio renderer). +// Causes a restart by Pause/put_Current/Run (if running). + + +#define EC_WINDOW_DESTROYED 0x15 +// ( IBaseFilter *, void ) : internal +// Sent by video renderers when the window has been destroyed. Handled +// by the filter graph / distributor telling the resource manager. +// lParam1 is the IBaseFilter* of the filter whose window is being destroyed + + +#define EC_DISPLAY_CHANGED 0x16 +// ( IPin *, void ) : internal +// Sent by renderers when they detect a display change. the filter graph +// will arrange for the graph to be stopped and the pin send in lParam1 +// to be reconnected. by being reconnected it allows a renderer to reset +// and connect with a more appropriate format for the new display mode +// lParam1 contains an (IPin *) that should be reconnected by the graph + + +#define EC_STARVATION 0x17 +// ( void, void ) : defaulted +// Sent by a filter when it detects starvation. Default handling (only when +// running) is for the graph to be paused until all filters enter the +// paused state and then run. Normally this would be sent by a parser or source +// filter when too little data is arriving. + + +#define EC_OLE_EVENT 0x18 +// ( BSTR, BSTR ) : application +// Sent by a filter to pass a text string to the application. +// Conventionally, the first string is a type, and the second a parameter. + + +#define EC_NOTIFY_WINDOW 0x19 +// ( HWND, void ) : internal +// Pass the window handle around during pin connection. + +#define EC_STREAM_CONTROL_STOPPED 0x1A +// ( IPin * pSender, DWORD dwCookie ) +// Notification that an earlier call to IAMStreamControl::StopAt +// has now take effect. Calls to the method can be marked +// with a cookie which is passed back in the second parameter, +// allowing applications to easily tie together request +// and completion notifications. +// +// NB: IPin will point to the pin that actioned the Stop. This +// may not be the pin that the StopAt was sent to. + +#define EC_STREAM_CONTROL_STARTED 0x1B +// ( IPin * pSender, DWORD dwCookie ) +// Notification that an earlier call to IAMStreamControl::StartAt +// has now take effect. Calls to the method can be marked +// with a cookie which is passed back in the second parameter, +// allowing applications to easily tie together request +// and completion notifications. +// +// NB: IPin will point to the pin that actioned the Start. This +// may not be the pin that the StartAt was sent to. + +#define EC_END_OF_SEGMENT 0x1C +// +// ( const REFERENCE_TIME *pStreamTimeAtEndOfSegment, DWORD dwSegmentNumber ) +// +// pStreamTimeAtEndOfSegment +// pointer to the accumulated stream clock +// time since the start of the segment - this is directly computable +// as the sum of the previous and current segment durations (Stop - Start) +// and the rate applied to each segment +// The source add this time to the time within each segment to get +// a total elapsed time +// +// dwSegmentNumber +// Segment number - starts at 0 +// +// Notifies that a segment end has been reached when the +// AM_SEEKING_Segment flags was set for IMediaSeeking::SetPositions +// Passes in an IMediaSeeking interface to allow the next segment +// to be defined by the application + +#define EC_SEGMENT_STARTED 0x1D +// +// ( const REFERENCE_TIME *pStreamTimeAtStartOfSegment, DWORD dwSegmentNumber) +// +// pStreamTimeAtStartOfSegment +// pointer to the accumulated stream clock +// time since the start of the segment - this is directly computable +// as the sum of the previous segment durations (Stop - Start) +// and the rate applied to each segment +// +// dwSegmentNumber +// Segment number - starts at 0 +// +// Notifies that a new segment has been started. +// This is sent synchronously by any entity that will issue +// EC_END_OF_SEGMENT when a new segment is started +// (See IMediaSeeking::SetPositions - AM_SEEKING_Segment flag) +// It is used to compute how many EC_END_OF_SEGMENT notifications +// to expect at the end of a segment and as a consitency check + + +#define EC_LENGTH_CHANGED 0x1E +// (void, void) +// sent to indicate that the length of the "file" has changed + +#define EC_DEVICE_LOST 0x1f +// (IUnknown, 0) +// +// request window notification when the device is available again +// (through WM_DEVICECHANGED messages registered with +// RegisterDeviceNotification; see IAMDeviceRemoval interface) + +#define EC_STEP_COMPLETE 0x24 +// (BOOL bCacelled, void) +// Step request complete +// if bCancelled is TRUE the step was cancelled. This can happen +// if the application issued some control request or because there +// was a mode change etc etc + +// Event code 25 is reserved for future use. + +#define EC_TIMECODE_AVAILABLE 0x30 +// Sent by filter supporting timecode +// Param1 has a pointer to the sending object +// Param2 has the device ID of the sending object + +#define EC_EXTDEVICE_MODE_CHANGE 0x31 +// Sent by filter supporting IAMExtDevice +// Param1 has the new mode +// Param2 has the device ID of the sending object + +#define EC_STATE_CHANGE 0x32 +// ( FILTER_STATE, BOOL bInternal) +// Used to notify the application of any state changes in the filter graph. +// lParam1 is of type enum FILTER_STATE (defined in strmif.h) and indicates +// the state of the filter graph. +// +// lParam2 == 0 indicates that the previous state change request has completed +// & a change in application state. +// lParam2 == 1 reserved for future use to indicate internal state changes. + + +#define EC_GRAPH_CHANGED 0x50 +// Sent by filter to notify interesting graph changes + +#define EC_CLOCK_UNSET 0x51 +// ( void, void ) : application +// Used to notify the filter graph to unset the current graph clock. +// Has the affect of forcing the filter graph to reestablish the graph clock +// on the next Pause/Run (note that this is only used by ksproxy, when the pin +// of a clock providing filter is disconnected) + +#define EC_VMR_RENDERDEVICE_SET 0x53 +// (Render_Device type, void) +// Identifies the type of rendering mechanism the VMR +// is using to display video. Types used include: +#define VMR_RENDER_DEVICE_OVERLAY 0x01 +#define VMR_RENDER_DEVICE_VIDMEM 0x02 +#define VMR_RENDER_DEVICE_SYSMEM 0x04 + + +#define EC_VMR_SURFACE_FLIPPED 0x54 +// (hr - Flip return code, void) +// Identifies the VMR's allocator-presenter has called the DDraw flip api on +// the surface being presented. This allows the VMR to keep its DX-VA table +// of DDraw surfaces in sync with DDraws flipping chain. + +#define EC_VMR_RECONNECTION_FAILED 0x55 +// (hr - ReceiveConnection return code, void) +// Identifies that an upstream decoder tried to perform a dynamic format +// change and the VMR was unable to accept the new format. + + +#define EC_PREPROCESS_COMPLETE 0x56 +// Sent by the WM ASF writer filter (WMSDK V9 version) to signal the completion +// of a pre-process run when running in multipass encode mode. +// Param1 = 0, Param2 = IBaseFilter ptr of sending filter + +#define EC_CODECAPI_EVENT 0x57 +// Sent by the Codec API when an event is encountered. Both the Data +// must be freed by the recipient using CoTaskMemFree +// Param1 = UserDataPointer, Param2 = VOID* Data + +//------------------------------------------ +// +// BDA events: +// +// Event code 0x80 through 0x8f are reserved for BDA +// + + +//------------------------------------------ +// +// WindowsMedia SDK filter-specific events: +// +// +// Note that for EC_WMT_EVENT events the wmsdk-based filters use the following structure for +// passing event parameters to the app: +#ifndef AM_WMT_EVENT_DATA_DEFINED +#define AM_WMT_EVENT_DATA_DEFINED +typedef struct { + HRESULT hrStatus; // status code + void * pData; // event data +} AM_WMT_EVENT_DATA; +#endif +// +#define EC_WMT_EVENT_BASE 0x0251 +// +#define EC_WMT_INDEX_EVENT EC_WMT_EVENT_BASE +// WindowsMedia SDK-originated file indexing status, sent by WMSDK-based filters +// +// lParam1 is one of the enum WMT_STATUS messages listed below, sent by the WindowsMedia SDK +// lParam2 is specific to the lParam event +// +// the following WMT_STATUS messages are sent for this event: +// WMT_STARTED - lParam2 is 0 +// WMT_CLOSED - lParam2 is 0 +// WMT_INDEX_PROGRESS - lParam2 is a DWORD containing the progress percent complete +// +#define EC_WMT_EVENT EC_WMT_EVENT_BASE+1 +// WindowsMedia SDK-originated event, sent by WMSDK-based filters +// +// lParam1 is one of the enum WMT_STATUS messages listed below, sent by the WindowsMedia SDK +// lParam2 is a pointer an AM_WMT_EVENT_DATA structure where, +// hrStatus is the status code sent by the wmsdk +// pData is specific to the lParam1 event +// +// the following WMT_STATUS messages are sent by the WMSDK Reader filter for this event: +// WMT_NO_RIGHTS - pData is a pointer to a WCHAR string containing a challenge URL +// WMT_ACQUIRE_LICENSE - lParam2 is a pointer to a WM_GET_LICENSE_DATA struct +// WMT_NO_RIGHTS_EX - lParam2 is a pointer to a WM_GET_LICENSE_DATA struct +// WMT_NEEDS_INDIVIDUALIZATION - lParam2 is NULL +// WMT_INDIVIDUALIZE - lParam2 is a pointer to a WM_INDIVIDUALIZE_STATUS struct +// the WMSDK (V9) ASF Writer filter will send this event in response to a wmsdk-signaled error during file +// writing, along with the wmsdk WMT_STATUS error as the lParam1 and hrStatus embedded in the +// AM_WMT_EVENT_DATA struct pointed to by the lParam2 pointer. +// +// end WMSDK-originated events +//----------------------------------------- + + +#define EC_BUILT 0x300 +// Sent to notify transition from unbuilt to built state + + +#define EC_UNBUILT 0x301 +// Sent to notify transtion from built to unbuilt state diff --git a/videoInputSrcAndDemos/libs/DShow/Include/fourcc.h b/videoInputSrcAndDemos/libs/DShow/Include/fourcc.h index dea8171..ae20ab3 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/fourcc.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/fourcc.h @@ -1,101 +1,101 @@ -//------------------------------------------------------------------------------ -// File: FourCC.h -// -// Desc: DirectShow base classes. -// -// Copyright (c) Microsoft Corporation. All rights reserved. -//------------------------------------------------------------------------------ - - -// FOURCCMap -// -// provides a mapping between old-style multimedia format DWORDs -// and new-style GUIDs. -// -// A range of 4 billion GUIDs has been allocated to ensure that this -// mapping can be done straightforwardly one-to-one in both directions. -// -// January 95 - - -#ifndef __FOURCC__ -#define __FOURCC__ - - -// Multimedia format types are marked with DWORDs built from four 8-bit -// chars and known as FOURCCs. New multimedia AM_MEDIA_TYPE definitions include -// a subtype GUID. In order to simplify the mapping, GUIDs in the range: -// XXXXXXXX-0000-0010-8000-00AA00389B71 -// are reserved for FOURCCs. - -class FOURCCMap : public GUID -{ - -public: - FOURCCMap(); - FOURCCMap(DWORD Fourcc); - FOURCCMap(const GUID *); - - - DWORD GetFOURCC(void); - void SetFOURCC(DWORD fourcc); - void SetFOURCC(const GUID *); - -private: - void InitGUID(); -}; - -#define GUID_Data2 0 -#define GUID_Data3 0x10 -#define GUID_Data4_1 0xaa000080 -#define GUID_Data4_2 0x719b3800 - -inline void -FOURCCMap::InitGUID() { - Data2 = GUID_Data2; - Data3 = GUID_Data3; - ((DWORD *)Data4)[0] = GUID_Data4_1; - ((DWORD *)Data4)[1] = GUID_Data4_2; -} - -inline -FOURCCMap::FOURCCMap() { - InitGUID(); - SetFOURCC( DWORD(0)); -} - -inline -FOURCCMap::FOURCCMap(DWORD fourcc) -{ - InitGUID(); - SetFOURCC(fourcc); -} - -inline -FOURCCMap::FOURCCMap(const GUID * pGuid) -{ - InitGUID(); - SetFOURCC(pGuid); -} - -inline void -FOURCCMap::SetFOURCC(const GUID * pGuid) -{ - FOURCCMap * p = (FOURCCMap*) pGuid; - SetFOURCC(p->GetFOURCC()); -} - -inline void -FOURCCMap::SetFOURCC(DWORD fourcc) -{ - Data1 = fourcc; -} - -inline DWORD -FOURCCMap::GetFOURCC(void) -{ - return Data1; -} - -#endif /* __FOURCC__ */ - +//------------------------------------------------------------------------------ +// File: FourCC.h +// +// Desc: DirectShow base classes. +// +// Copyright (c) Microsoft Corporation. All rights reserved. +//------------------------------------------------------------------------------ + + +// FOURCCMap +// +// provides a mapping between old-style multimedia format DWORDs +// and new-style GUIDs. +// +// A range of 4 billion GUIDs has been allocated to ensure that this +// mapping can be done straightforwardly one-to-one in both directions. +// +// January 95 + + +#ifndef __FOURCC__ +#define __FOURCC__ + + +// Multimedia format types are marked with DWORDs built from four 8-bit +// chars and known as FOURCCs. New multimedia AM_MEDIA_TYPE definitions include +// a subtype GUID. In order to simplify the mapping, GUIDs in the range: +// XXXXXXXX-0000-0010-8000-00AA00389B71 +// are reserved for FOURCCs. + +class FOURCCMap : public GUID +{ + +public: + FOURCCMap(); + FOURCCMap(DWORD Fourcc); + FOURCCMap(const GUID *); + + + DWORD GetFOURCC(void); + void SetFOURCC(DWORD fourcc); + void SetFOURCC(const GUID *); + +private: + void InitGUID(); +}; + +#define GUID_Data2 0 +#define GUID_Data3 0x10 +#define GUID_Data4_1 0xaa000080 +#define GUID_Data4_2 0x719b3800 + +inline void +FOURCCMap::InitGUID() { + Data2 = GUID_Data2; + Data3 = GUID_Data3; + ((DWORD *)Data4)[0] = GUID_Data4_1; + ((DWORD *)Data4)[1] = GUID_Data4_2; +} + +inline +FOURCCMap::FOURCCMap() { + InitGUID(); + SetFOURCC( DWORD(0)); +} + +inline +FOURCCMap::FOURCCMap(DWORD fourcc) +{ + InitGUID(); + SetFOURCC(fourcc); +} + +inline +FOURCCMap::FOURCCMap(const GUID * pGuid) +{ + InitGUID(); + SetFOURCC(pGuid); +} + +inline void +FOURCCMap::SetFOURCC(const GUID * pGuid) +{ + FOURCCMap * p = (FOURCCMap*) pGuid; + SetFOURCC(p->GetFOURCC()); +} + +inline void +FOURCCMap::SetFOURCC(DWORD fourcc) +{ + Data1 = fourcc; +} + +inline DWORD +FOURCCMap::GetFOURCC(void) +{ + return Data1; +} + +#endif /* __FOURCC__ */ + diff --git a/videoInputSrcAndDemos/libs/DShow/Include/il21dec.h b/videoInputSrcAndDemos/libs/DShow/Include/il21dec.h index c93bf17..a2c7fc6 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/il21dec.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/il21dec.h @@ -1,112 +1,112 @@ -//------------------------------------------------------------------------------ -// File: IL21Dec.h -// -// Desc: Line 21 Decoder related definitions and interfaces for ActiveMovie. -// -// Copyright (c) 1992-2001, Microsoft Corporation. All rights reserved. -//------------------------------------------------------------------------------ - - -#ifndef __IL21DEC__ -#define __IL21DEC__ - - -// -// Some enum data types used as line 21 decoder params by the interface -// -typedef enum _AM_LINE21_CCLEVEL { // should we use TC1, TC2 in stead? - AM_L21_CCLEVEL_TC2 = 0 -} AM_LINE21_CCLEVEL, *PAM_LINE21_CCLEVEL ; - -typedef enum _AM_LINE21_CCSERVICE { - AM_L21_CCSERVICE_None = 0, - AM_L21_CCSERVICE_Caption1, - AM_L21_CCSERVICE_Caption2, - AM_L21_CCSERVICE_Text1, - AM_L21_CCSERVICE_Text2, - AM_L21_CCSERVICE_XDS, - AM_L21_CCSERVICE_DefChannel = 10, - AM_L21_CCSERVICE_Invalid -} AM_LINE21_CCSERVICE, *PAM_LINE21_CCSERVICE ; - -typedef enum _AM_LINE21_CCSTATE { - AM_L21_CCSTATE_Off = 0, - AM_L21_CCSTATE_On -} AM_LINE21_CCSTATE, *PAM_LINE21_CCSTATE ; - -typedef enum _AM_LINE21_CCSTYLE { - AM_L21_CCSTYLE_None = 0, - AM_L21_CCSTYLE_PopOn, - AM_L21_CCSTYLE_PaintOn, - AM_L21_CCSTYLE_RollUp -} AM_LINE21_CCSTYLE, *PAM_LINE21_CCSTYLE ; - -typedef enum _AM_LINE21_DRAWBGMODE { - AM_L21_DRAWBGMODE_Opaque, - AM_L21_DRAWBGMODE_Transparent -} AM_LINE21_DRAWBGMODE, *PAM_LINE21_DRAWBGMODE ; - - -#ifdef __cplusplus -extern "C" { -#endif // __cplusplus - -// -// Line 21 Decoder standard COM interface -// -DECLARE_INTERFACE_(IAMLine21Decoder, IUnknown) -{ - public: - // - // Decoder options to be used by apps - // - - // What is the decoder's level - STDMETHOD(GetDecoderLevel)(THIS_ AM_LINE21_CCLEVEL *lpLevel) PURE ; - // supported level value is AM_L21Level_TC2 only - // skipping the SetDecoderLevel( ) - - // Which of the services is being currently used - STDMETHOD(GetCurrentService)(THIS_ AM_LINE21_CCSERVICE *lpService) PURE ; - STDMETHOD(SetCurrentService)(THIS_ AM_LINE21_CCSERVICE Service) PURE ; - // supported service values are AM_L21Service_Caption1, - // AM_L21Service_Caption2, AM_L21Service_Text1, AM_L21Service_Text2, - // AM_L21Service_XDS, AM_L21Service_None) - - // Query/Set the service state (On/Off) - // supported state values are AM_L21State_On and AM_L21State_Off - STDMETHOD(GetServiceState)(THIS_ AM_LINE21_CCSTATE *lpState) PURE ; - STDMETHOD(SetServiceState)(THIS_ AM_LINE21_CCSTATE 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_LINE21_DRAWBGMODE *lpMode) PURE ; - STDMETHOD(SetDrawBackgroundMode)(THIS_ AM_LINE21_DRAWBGMODE Mode) PURE ; - // supported mode values are AM_L21_DrawBGMode_Opaque and - // AM_L21_DrawBGMode_Transparent - -} ; - -#ifdef __cplusplus -} -#endif // __cplusplus -#endif // __IL21DEC__ +//------------------------------------------------------------------------------ +// File: IL21Dec.h +// +// Desc: Line 21 Decoder related definitions and interfaces for ActiveMovie. +// +// Copyright (c) 1992-2001, Microsoft Corporation. All rights reserved. +//------------------------------------------------------------------------------ + + +#ifndef __IL21DEC__ +#define __IL21DEC__ + + +// +// Some enum data types used as line 21 decoder params by the interface +// +typedef enum _AM_LINE21_CCLEVEL { // should we use TC1, TC2 in stead? + AM_L21_CCLEVEL_TC2 = 0 +} AM_LINE21_CCLEVEL, *PAM_LINE21_CCLEVEL ; + +typedef enum _AM_LINE21_CCSERVICE { + AM_L21_CCSERVICE_None = 0, + AM_L21_CCSERVICE_Caption1, + AM_L21_CCSERVICE_Caption2, + AM_L21_CCSERVICE_Text1, + AM_L21_CCSERVICE_Text2, + AM_L21_CCSERVICE_XDS, + AM_L21_CCSERVICE_DefChannel = 10, + AM_L21_CCSERVICE_Invalid +} AM_LINE21_CCSERVICE, *PAM_LINE21_CCSERVICE ; + +typedef enum _AM_LINE21_CCSTATE { + AM_L21_CCSTATE_Off = 0, + AM_L21_CCSTATE_On +} AM_LINE21_CCSTATE, *PAM_LINE21_CCSTATE ; + +typedef enum _AM_LINE21_CCSTYLE { + AM_L21_CCSTYLE_None = 0, + AM_L21_CCSTYLE_PopOn, + AM_L21_CCSTYLE_PaintOn, + AM_L21_CCSTYLE_RollUp +} AM_LINE21_CCSTYLE, *PAM_LINE21_CCSTYLE ; + +typedef enum _AM_LINE21_DRAWBGMODE { + AM_L21_DRAWBGMODE_Opaque, + AM_L21_DRAWBGMODE_Transparent +} AM_LINE21_DRAWBGMODE, *PAM_LINE21_DRAWBGMODE ; + + +#ifdef __cplusplus +extern "C" { +#endif // __cplusplus + +// +// Line 21 Decoder standard COM interface +// +DECLARE_INTERFACE_(IAMLine21Decoder, IUnknown) +{ + public: + // + // Decoder options to be used by apps + // + + // What is the decoder's level + STDMETHOD(GetDecoderLevel)(THIS_ AM_LINE21_CCLEVEL *lpLevel) PURE ; + // supported level value is AM_L21Level_TC2 only + // skipping the SetDecoderLevel( ) + + // Which of the services is being currently used + STDMETHOD(GetCurrentService)(THIS_ AM_LINE21_CCSERVICE *lpService) PURE ; + STDMETHOD(SetCurrentService)(THIS_ AM_LINE21_CCSERVICE Service) PURE ; + // supported service values are AM_L21Service_Caption1, + // AM_L21Service_Caption2, AM_L21Service_Text1, AM_L21Service_Text2, + // AM_L21Service_XDS, AM_L21Service_None) + + // Query/Set the service state (On/Off) + // supported state values are AM_L21State_On and AM_L21State_Off + STDMETHOD(GetServiceState)(THIS_ AM_LINE21_CCSTATE *lpState) PURE ; + STDMETHOD(SetServiceState)(THIS_ AM_LINE21_CCSTATE 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_LINE21_DRAWBGMODE *lpMode) PURE ; + STDMETHOD(SetDrawBackgroundMode)(THIS_ AM_LINE21_DRAWBGMODE Mode) PURE ; + // supported mode values are AM_L21_DrawBGMode_Opaque and + // AM_L21_DrawBGMode_Transparent + +} ; + +#ifdef __cplusplus +} +#endif // __cplusplus +#endif // __IL21DEC__ diff --git a/videoInputSrcAndDemos/libs/DShow/Include/ks.h b/videoInputSrcAndDemos/libs/DShow/Include/ks.h index c4b7da4..4f766b9 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/ks.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/ks.h @@ -1,5698 +1,5698 @@ -/*++ - -Copyright (c) Microsoft Corporation. All rights reserved. - -Module Name: - - ks.h - -Abstract: - - Windows Driver Model/Connection and Streaming Architecture (WDM-CSA) - core definitions. - ---*/ - -#if !defined(_KS_) -#define _KS_ - -#if defined(__TCS__) -#define _KS_NO_ANONYMOUS_STRUCTURES_ 1 -#endif - -#if !defined(_NTRTL_) - #ifndef DEFINE_GUIDEX - #define DEFINE_GUIDEX(name) EXTERN_C const CDECL GUID name - #endif // !defined(DEFINE_GUIDEX) - - #ifndef STATICGUIDOF - #define STATICGUIDOF(guid) STATIC_##guid - #endif // !defined(STATICGUIDOF) -#endif // !defined(_NTRTL_) - -#ifndef SIZEOF_ARRAY - #define SIZEOF_ARRAY(ar) (sizeof(ar)/sizeof((ar)[0])) -#endif // !defined(SIZEOF_ARRAY) - -#if defined(__cplusplus) && _MSC_VER >= 1100 -#define DEFINE_GUIDSTRUCT(g, n) struct __declspec(uuid(g)) n -#define DEFINE_GUIDNAMED(n) __uuidof(struct n) -#else // !defined(__cplusplus) -#define DEFINE_GUIDSTRUCT(g, n) DEFINE_GUIDEX(n) -#define DEFINE_GUIDNAMED(n) n -#endif // !defined(__cplusplus) - -//=========================================================================== - -#define STATIC_GUID_NULL \ - 0x00000000L, 0x0000, 0x0000, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - -DEFINE_GUIDSTRUCT("00000000-0000-0000-0000-000000000000", GUID_NULL); -#define GUID_NULL DEFINE_GUIDNAMED(GUID_NULL) - -//=========================================================================== - -#define IOCTL_KS_PROPERTY CTL_CODE(FILE_DEVICE_KS, 0x000, METHOD_NEITHER, FILE_ANY_ACCESS) -#define IOCTL_KS_ENABLE_EVENT CTL_CODE(FILE_DEVICE_KS, 0x001, METHOD_NEITHER, FILE_ANY_ACCESS) -#define IOCTL_KS_DISABLE_EVENT CTL_CODE(FILE_DEVICE_KS, 0x002, METHOD_NEITHER, FILE_ANY_ACCESS) -#define IOCTL_KS_METHOD CTL_CODE(FILE_DEVICE_KS, 0x003, METHOD_NEITHER, FILE_ANY_ACCESS) -#define IOCTL_KS_WRITE_STREAM CTL_CODE(FILE_DEVICE_KS, 0x004, METHOD_NEITHER, FILE_WRITE_ACCESS) -#define IOCTL_KS_READ_STREAM CTL_CODE(FILE_DEVICE_KS, 0x005, METHOD_NEITHER, FILE_READ_ACCESS) -#define IOCTL_KS_RESET_STATE CTL_CODE(FILE_DEVICE_KS, 0x006, METHOD_NEITHER, FILE_ANY_ACCESS) - -//=========================================================================== - -typedef enum { - KSRESET_BEGIN, - KSRESET_END -} KSRESET; - -typedef enum { - KSSTATE_STOP, - KSSTATE_ACQUIRE, - KSSTATE_PAUSE, - KSSTATE_RUN -} KSSTATE, *PKSSTATE; - -#define KSPRIORITY_LOW 0x00000001 -#define KSPRIORITY_NORMAL 0x40000000 -#define KSPRIORITY_HIGH 0x80000000 -#define KSPRIORITY_EXCLUSIVE 0xFFFFFFFF - -typedef struct { - ULONG PriorityClass; - ULONG PrioritySubClass; -} KSPRIORITY, *PKSPRIORITY; - -typedef struct { - union { -#if defined( _KS_NO_ANONYMOUS_STRUCTURES_ ) - struct _IDENTIFIER { -#else - struct { -#endif - GUID Set; - ULONG Id; - ULONG Flags; - }; - LONGLONG Alignment; - }; -} KSIDENTIFIER, *PKSIDENTIFIER; - -typedef KSIDENTIFIER KSPROPERTY, *PKSPROPERTY, KSMETHOD, *PKSMETHOD, KSEVENT, *PKSEVENT; - -#define KSMETHOD_TYPE_NONE 0x00000000 -#define KSMETHOD_TYPE_READ 0x00000001 -#define KSMETHOD_TYPE_WRITE 0x00000002 -#define KSMETHOD_TYPE_MODIFY 0x00000003 -#define KSMETHOD_TYPE_SOURCE 0x00000004 - -#define KSMETHOD_TYPE_SEND 0x00000001 -#define KSMETHOD_TYPE_SETSUPPORT 0x00000100 -#define KSMETHOD_TYPE_BASICSUPPORT 0x00000200 - -#define KSMETHOD_TYPE_TOPOLOGY 0x10000000 - -#define KSPROPERTY_TYPE_GET 0x00000001 -#define KSPROPERTY_TYPE_SET 0x00000002 -#define KSPROPERTY_TYPE_SETSUPPORT 0x00000100 -#define KSPROPERTY_TYPE_BASICSUPPORT 0x00000200 -#define KSPROPERTY_TYPE_RELATIONS 0x00000400 -#define KSPROPERTY_TYPE_SERIALIZESET 0x00000800 -#define KSPROPERTY_TYPE_UNSERIALIZESET 0x00001000 -#define KSPROPERTY_TYPE_SERIALIZERAW 0x00002000 -#define KSPROPERTY_TYPE_UNSERIALIZERAW 0x00004000 -#define KSPROPERTY_TYPE_SERIALIZESIZE 0x00008000 -#define KSPROPERTY_TYPE_DEFAULTVALUES 0x00010000 - -#define KSPROPERTY_TYPE_TOPOLOGY 0x10000000 - -typedef struct { - KSPROPERTY Property; - ULONG NodeId; - ULONG Reserved; -} KSP_NODE, *PKSP_NODE; - -typedef struct { - KSMETHOD Method; - ULONG NodeId; - ULONG Reserved; -} KSM_NODE, *PKSM_NODE; - -typedef struct { - KSEVENT Event; - ULONG NodeId; - ULONG Reserved; -} KSE_NODE, *PKSE_NODE; - -#define STATIC_KSPROPTYPESETID_General \ - 0x97E99BA0L, 0xBDEA, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 -DEFINE_GUIDSTRUCT("97E99BA0-BDEA-11CF-A5D6-28DB04C10000", KSPROPTYPESETID_General); -#define KSPROPTYPESETID_General DEFINE_GUIDNAMED(KSPROPTYPESETID_General) - -#if defined(_NTDDK_) && !defined(__wtypes_h__) -enum VARENUM { - VT_EMPTY = 0, - VT_NULL = 1, - VT_I2 = 2, - VT_I4 = 3, - VT_R4 = 4, - VT_R8 = 5, - VT_CY = 6, - VT_DATE = 7, - VT_BSTR = 8, - VT_DISPATCH = 9, - VT_ERROR = 10, - VT_BOOL = 11, - VT_VARIANT = 12, - VT_UNKNOWN = 13, - VT_DECIMAL = 14, - VT_I1 = 16, - VT_UI1 = 17, - VT_UI2 = 18, - VT_UI4 = 19, - VT_I8 = 20, - VT_UI8 = 21, - VT_INT = 22, - VT_UINT = 23, - VT_VOID = 24, - VT_HRESULT = 25, - VT_PTR = 26, - VT_SAFEARRAY = 27, - VT_CARRAY = 28, - VT_USERDEFINED = 29, - VT_LPSTR = 30, - VT_LPWSTR = 31, - VT_FILETIME = 64, - VT_BLOB = 65, - VT_STREAM = 66, - VT_STORAGE = 67, - VT_STREAMED_OBJECT = 68, - VT_STORED_OBJECT = 69, - VT_BLOB_OBJECT = 70, - VT_CF = 71, - VT_CLSID = 72, - VT_VECTOR = 0x1000, - VT_ARRAY = 0x2000, - VT_BYREF = 0x4000, - VT_RESERVED = 0x8000, - VT_ILLEGAL = 0xffff, - VT_ILLEGALMASKED = 0xfff, - VT_TYPEMASK = 0xfff -}; -#endif // _NTDDK_ && !__wtypes_h__ - -typedef struct { - ULONG Size; - ULONG Count; -} KSMULTIPLE_ITEM, *PKSMULTIPLE_ITEM; - -typedef struct { - ULONG AccessFlags; - ULONG DescriptionSize; - KSIDENTIFIER PropTypeSet; - ULONG MembersListCount; - ULONG Reserved; -} KSPROPERTY_DESCRIPTION, *PKSPROPERTY_DESCRIPTION; - -#define KSPROPERTY_MEMBER_RANGES 0x00000001 -#define KSPROPERTY_MEMBER_STEPPEDRANGES 0x00000002 -#define KSPROPERTY_MEMBER_VALUES 0x00000003 - -#define KSPROPERTY_MEMBER_FLAG_DEFAULT 0x00000001 -#define KSPROPERTY_MEMBER_FLAG_BASICSUPPORT_MULTICHANNEL 0x00000002 -#define KSPROPERTY_MEMBER_FLAG_BASICSUPPORT_UNIFORM 0x00000004 - -typedef struct { - ULONG MembersFlags; - ULONG MembersSize; - ULONG MembersCount; - ULONG Flags; -} KSPROPERTY_MEMBERSHEADER, *PKSPROPERTY_MEMBERSHEADER; - -typedef union { -#if defined( _KS_NO_ANONYMOUS_STRUCTURES_ ) - struct _SIGNED { -#else - struct { -#endif - LONG SignedMinimum; - LONG SignedMaximum; - }; -#if defined( _KS_NO_ANONYMOUS_STRUCTURES_ ) - struct _UNSIGNED { -#else - struct { -#endif - ULONG UnsignedMinimum; - ULONG UnsignedMaximum; - }; -} KSPROPERTY_BOUNDS_LONG, *PKSPROPERTY_BOUNDS_LONG; - -typedef union { -#if defined( _KS_NO_ANONYMOUS_STRUCTURES_ ) - struct _SIGNED64 { -#else - struct { -#endif - LONGLONG SignedMinimum; - LONGLONG SignedMaximum; - }; -#if defined( _KS_NO_ANONYMOUS_STRUCTURES_ ) - struct _UNSIGNED64 { -#else - struct { -#endif -#if defined(_NTDDK_) - ULONGLONG UnsignedMinimum; - ULONGLONG UnsignedMaximum; -#else // !_NTDDK_ - DWORDLONG UnsignedMinimum; - DWORDLONG UnsignedMaximum; -#endif // !_NTDDK_ - }; -} KSPROPERTY_BOUNDS_LONGLONG, *PKSPROPERTY_BOUNDS_LONGLONG; - -typedef struct { - ULONG SteppingDelta; - ULONG Reserved; - KSPROPERTY_BOUNDS_LONG Bounds; -} KSPROPERTY_STEPPING_LONG, *PKSPROPERTY_STEPPING_LONG; - -typedef struct { -#if defined(_NTDDK_) - ULONGLONG SteppingDelta; -#else // !_NTDDK_ - DWORDLONG SteppingDelta; -#endif // !_NTDDK_ - KSPROPERTY_BOUNDS_LONGLONG Bounds; -} KSPROPERTY_STEPPING_LONGLONG, *PKSPROPERTY_STEPPING_LONGLONG; - -//=========================================================================== - -#if defined(_NTDDK_) -// -// Structure forward declarations. -// -typedef struct _KSDEVICE_DESCRIPTOR -KSDEVICE_DESCRIPTOR, *PKSDEVICE_DESCRIPTOR; -typedef struct _KSDEVICE_DISPATCH -KSDEVICE_DISPATCH, *PKSDEVICE_DISPATCH; -typedef struct _KSDEVICE -KSDEVICE, *PKSDEVICE; -typedef struct _KSFILTERFACTORY -KSFILTERFACTORY, *PKSFILTERFACTORY; -typedef struct _KSFILTER_DESCRIPTOR -KSFILTER_DESCRIPTOR, *PKSFILTER_DESCRIPTOR; -typedef struct _KSFILTER_DISPATCH -KSFILTER_DISPATCH, *PKSFILTER_DISPATCH; -typedef struct _KSFILTER -KSFILTER, *PKSFILTER; -typedef struct _KSPIN_DESCRIPTOR_EX -KSPIN_DESCRIPTOR_EX, *PKSPIN_DESCRIPTOR_EX; -typedef struct _KSPIN_DISPATCH -KSPIN_DISPATCH, *PKSPIN_DISPATCH; -typedef struct _KSCLOCK_DISPATCH -KSCLOCK_DISPATCH, *PKSCLOCK_DISPATCH; -typedef struct _KSALLOCATOR_DISPATCH -KSALLOCATOR_DISPATCH, *PKSALLOCATOR_DISPATCH; -typedef struct _KSPIN -KSPIN, *PKSPIN; -typedef struct _KSNODE_DESCRIPTOR -KSNODE_DESCRIPTOR, *PKSNODE_DESCRIPTOR; -typedef struct _KSSTREAM_POINTER_OFFSET -KSSTREAM_POINTER_OFFSET, *PKSSTREAM_POINTER_OFFSET; -typedef struct _KSSTREAM_POINTER -KSSTREAM_POINTER, *PKSSTREAM_POINTER; -typedef struct _KSMAPPING -KSMAPPING, *PKSMAPPING; -typedef struct _KSPROCESSPIN -KSPROCESSPIN, *PKSPROCESSPIN; -typedef struct _KSPROCESSPIN_INDEXENTRY -KSPROCESSPIN_INDEXENTRY, *PKSPROCESSPIN_INDEXENTRY; -#endif // _NTDDK_ - -typedef PVOID PKSWORKER; - -typedef struct { - ULONG NotificationType; - union { - struct { - HANDLE Event; - ULONG_PTR Reserved[2]; - } EventHandle; - struct { - HANDLE Semaphore; - ULONG Reserved; - LONG Adjustment; - } SemaphoreHandle; -#if defined(_NTDDK_) - struct { - PVOID Event; - KPRIORITY Increment; - ULONG_PTR Reserved; - } EventObject; - struct { - PVOID Semaphore; - KPRIORITY Increment; - LONG Adjustment; - } SemaphoreObject; - struct { - PKDPC Dpc; - ULONG ReferenceCount; - ULONG_PTR Reserved; - } Dpc; - struct { - PWORK_QUEUE_ITEM WorkQueueItem; - WORK_QUEUE_TYPE WorkQueueType; - ULONG_PTR Reserved; - } WorkItem; - struct { - PWORK_QUEUE_ITEM WorkQueueItem; - PKSWORKER KsWorkerObject; - ULONG_PTR Reserved; - } KsWorkItem; -// @@BEGIN_DDKSPLIT - struct { - PKSFILTER Filter; - ULONG_PTR Reserved[2]; - } KsFilterProcessing; - struct { - PKSPIN Pin; - ULONG_PTR Reserved[2]; - } KsPinProcessing; -// @@END_DDKSPLIT -#endif // defined(_NTDDK_) - struct { - PVOID Unused; - LONG_PTR Alignment[2]; - } Alignment; - }; -} KSEVENTDATA, *PKSEVENTDATA; - -#define KSEVENTF_EVENT_HANDLE 0x00000001 -#define KSEVENTF_SEMAPHORE_HANDLE 0x00000002 -#if defined(_NTDDK_) -#define KSEVENTF_EVENT_OBJECT 0x00000004 -#define KSEVENTF_SEMAPHORE_OBJECT 0x00000008 -#define KSEVENTF_DPC 0x00000010 -#define KSEVENTF_WORKITEM 0x00000020 -#define KSEVENTF_KSWORKITEM 0x00000080 -// @@BEGIN_DDKSPLIT -#define KSEVENTF_KSFILTERPROCESSING 0x00000100 -#define KSEVENTF_KSPINPROCESSING 0x00000200 -// @@END_DDKSPLIT -#endif // defined(_NTDDK_) - -#define KSEVENT_TYPE_ENABLE 0x00000001 -#define KSEVENT_TYPE_ONESHOT 0x00000002 -#define KSEVENT_TYPE_ENABLEBUFFERED 0x00000004 -#define KSEVENT_TYPE_SETSUPPORT 0x00000100 -#define KSEVENT_TYPE_BASICSUPPORT 0x00000200 -#define KSEVENT_TYPE_QUERYBUFFER 0x00000400 - -#define KSEVENT_TYPE_TOPOLOGY 0x10000000 - -typedef struct { - KSEVENT Event; - PKSEVENTDATA EventData; - PVOID Reserved; -} KSQUERYBUFFER, *PKSQUERYBUFFER; - -typedef struct { - ULONG Size; - ULONG Flags; - union { - HANDLE ObjectHandle; - PVOID ObjectPointer; - }; - PVOID Reserved; - KSEVENT Event; - KSEVENTDATA EventData; -} KSRELATIVEEVENT; - -#define KSRELATIVEEVENT_FLAG_HANDLE 0x00000001 -#define KSRELATIVEEVENT_FLAG_POINTER 0x00000002 - -//=========================================================================== - -typedef struct { - KSEVENTDATA EventData; - LONGLONG MarkTime; -} KSEVENT_TIME_MARK, *PKSEVENT_TIME_MARK; - -typedef struct { - KSEVENTDATA EventData; - LONGLONG TimeBase; - LONGLONG Interval; -} KSEVENT_TIME_INTERVAL, *PKSEVENT_TIME_INTERVAL; - -typedef struct { - LONGLONG TimeBase; - LONGLONG Interval; -} KSINTERVAL, *PKSINTERVAL; - -//=========================================================================== - -#define STATIC_KSPROPSETID_General\ - 0x1464EDA5L, 0x6A8F, 0x11D1, 0x9A, 0xA7, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 -DEFINE_GUIDSTRUCT("1464EDA5-6A8F-11D1-9AA7-00A0C9223196", KSPROPSETID_General); -#define KSPROPSETID_General DEFINE_GUIDNAMED(KSPROPSETID_General) - -typedef enum { - KSPROPERTY_GENERAL_COMPONENTID -} KSPROPERTY_GENERAL; - -typedef struct { - GUID Manufacturer; - GUID Product; - GUID Component; - GUID Name; - ULONG Version; - ULONG Revision; -} KSCOMPONENTID, *PKSCOMPONENTID; - -#define DEFINE_KSPROPERTY_ITEM_GENERAL_COMPONENTID(Handler)\ - DEFINE_KSPROPERTY_ITEM(\ - KSPROPERTY_GENERAL_COMPONENTID,\ - (Handler),\ - sizeof(KSPROPERTY),\ - sizeof(KSCOMPONENTID),\ - NULL, NULL, 0, NULL, NULL, 0) - -#define STATIC_KSMETHODSETID_StreamIo\ - 0x65D003CAL, 0x1523, 0x11D2, 0xB2, 0x7A, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 -DEFINE_GUIDSTRUCT("65D003CA-1523-11D2-B27A-00A0C9223196", KSMETHODSETID_StreamIo); -#define KSMETHODSETID_StreamIo DEFINE_GUIDNAMED(KSMETHODSETID_StreamIo) - -typedef enum { - KSMETHOD_STREAMIO_READ, - KSMETHOD_STREAMIO_WRITE -} KSMETHOD_STREAMIO; - -#define DEFINE_KSMETHOD_ITEM_STREAMIO_READ(Handler)\ - DEFINE_KSMETHOD_ITEM(\ - KSMETHOD_STREAMIO_READ,\ - KSMETHOD_TYPE_WRITE,\ - (Handler),\ - sizeof(KSMETHOD),\ - 0,\ - NULL) - -#define DEFINE_KSMETHOD_ITEM_STREAMIO_WRITE(Handler)\ - DEFINE_KSMETHOD_ITEM(\ - KSMETHOD_STREAMIO_WRITE,\ - KSMETHOD_TYPE_READ,\ - (Handler),\ - sizeof(KSMETHOD),\ - 0,\ - NULL) - -#define STATIC_KSPROPSETID_MediaSeeking\ - 0xEE904F0CL, 0xD09B, 0x11D0, 0xAB, 0xE9, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 -DEFINE_GUIDSTRUCT("EE904F0C-D09B-11D0-ABE9-00A0C9223196", KSPROPSETID_MediaSeeking); -#define KSPROPSETID_MediaSeeking DEFINE_GUIDNAMED(KSPROPSETID_MediaSeeking) - -typedef enum { - KSPROPERTY_MEDIASEEKING_CAPABILITIES, - KSPROPERTY_MEDIASEEKING_FORMATS, - KSPROPERTY_MEDIASEEKING_TIMEFORMAT, - KSPROPERTY_MEDIASEEKING_POSITION, - KSPROPERTY_MEDIASEEKING_STOPPOSITION, - KSPROPERTY_MEDIASEEKING_POSITIONS, - KSPROPERTY_MEDIASEEKING_DURATION, - KSPROPERTY_MEDIASEEKING_AVAILABLE, - KSPROPERTY_MEDIASEEKING_PREROLL, - KSPROPERTY_MEDIASEEKING_CONVERTTIMEFORMAT -} KSPROPERTY_MEDIASEEKING; - -typedef enum { - KS_SEEKING_NoPositioning, - KS_SEEKING_AbsolutePositioning, - KS_SEEKING_RelativePositioning, - KS_SEEKING_IncrementalPositioning, - KS_SEEKING_PositioningBitsMask = 0x3, - KS_SEEKING_SeekToKeyFrame, - KS_SEEKING_ReturnTime = 0x8 -} KS_SEEKING_FLAGS; - -typedef enum { - KS_SEEKING_CanSeekAbsolute = 0x1, - KS_SEEKING_CanSeekForwards = 0x2, - KS_SEEKING_CanSeekBackwards = 0x4, - KS_SEEKING_CanGetCurrentPos = 0x8, - KS_SEEKING_CanGetStopPos = 0x10, - KS_SEEKING_CanGetDuration = 0x20, - KS_SEEKING_CanPlayBackwards = 0x40 -} KS_SEEKING_CAPABILITIES; - -typedef struct { - LONGLONG Current; - LONGLONG Stop; - KS_SEEKING_FLAGS CurrentFlags; - KS_SEEKING_FLAGS StopFlags; -} KSPROPERTY_POSITIONS, *PKSPROPERTY_POSITIONS; - -typedef struct { - LONGLONG Earliest; - LONGLONG Latest; -} KSPROPERTY_MEDIAAVAILABLE, *PKSPROPERTY_MEDIAAVAILABLE; - -typedef struct { - KSPROPERTY Property; - GUID SourceFormat; - GUID TargetFormat; - LONGLONG Time; -} KSP_TIMEFORMAT, *PKSP_TIMEFORMAT; - -#define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_CAPABILITIES(Handler)\ - DEFINE_KSPROPERTY_ITEM(\ - KSPROPERTY_MEDIASEEKING_CAPABILITIES,\ - (Handler),\ - sizeof(KSPROPERTY),\ - sizeof(KS_SEEKING_CAPABILITIES),\ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_FORMATS(Handler)\ - DEFINE_KSPROPERTY_ITEM(\ - KSPROPERTY_MEDIASEEKING_FORMATS,\ - (Handler),\ - sizeof(KSPROPERTY),\ - 0,\ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_TIMEFORMAT(GetHandler, SetHandler)\ - DEFINE_KSPROPERTY_ITEM(\ - KSPROPERTY_MEDIASEEKING_TIMEFORMAT,\ - (GetHandler),\ - sizeof(KSPROPERTY),\ - sizeof(GUID),\ - (SetHandler),\ - NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_POSITION(Handler)\ - DEFINE_KSPROPERTY_ITEM(\ - KSPROPERTY_MEDIASEEKING_POSITION,\ - (Handler),\ - sizeof(KSPROPERTY),\ - sizeof(LONGLONG),\ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_STOPPOSITION(Handler)\ - DEFINE_KSPROPERTY_ITEM(\ - KSPROPERTY_MEDIASEEKING_STOPPOSITION,\ - (Handler),\ - sizeof(KSPROPERTY),\ - sizeof(LONGLONG),\ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_POSITIONS(Handler)\ - DEFINE_KSPROPERTY_ITEM(\ - KSPROPERTY_MEDIASEEKING_POSITIONS,\ - NULL,\ - sizeof(KSPROPERTY),\ - sizeof(KSPROPERTY_POSITIONS),\ - (Handler),\ - NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_DURATION(Handler)\ - DEFINE_KSPROPERTY_ITEM(\ - KSPROPERTY_MEDIASEEKING_DURATION,\ - (Handler),\ - sizeof(KSPROPERTY),\ - sizeof(LONGLONG),\ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_AVAILABLE(Handler)\ - DEFINE_KSPROPERTY_ITEM(\ - KSPROPERTY_MEDIASEEKING_AVAILABLE,\ - (Handler),\ - sizeof(KSPROPERTY),\ - sizeof(KSPROPERTY_MEDIAAVAILABLE),\ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_PREROLL(Handler)\ - DEFINE_KSPROPERTY_ITEM(\ - KSPROPERTY_MEDIASEEKING_PREROLL,\ - (Handler),\ - sizeof(KSPROPERTY),\ - sizeof(LONGLONG),\ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_CONVERTTIMEFORMAT(Handler)\ - DEFINE_KSPROPERTY_ITEM(\ - KSPROPERTY_MEDIASEEKING_CONVERTTIMEFORMAT,\ - (Handler),\ - sizeof(KSP_TIMEFORMAT),\ - sizeof(LONGLONG),\ - NULL, NULL, 0, NULL, NULL, 0) - -//=========================================================================== - -#define STATIC_KSPROPSETID_Topology\ - 0x720D4AC0L, 0x7533, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 -DEFINE_GUIDSTRUCT("720D4AC0-7533-11D0-A5D6-28DB04C10000", KSPROPSETID_Topology); -#define KSPROPSETID_Topology DEFINE_GUIDNAMED(KSPROPSETID_Topology) - -typedef enum { - KSPROPERTY_TOPOLOGY_CATEGORIES, - KSPROPERTY_TOPOLOGY_NODES, - KSPROPERTY_TOPOLOGY_CONNECTIONS, - KSPROPERTY_TOPOLOGY_NAME -} KSPROPERTY_TOPOLOGY; - -#define DEFINE_KSPROPERTY_ITEM_TOPOLOGY_CATEGORIES(Handler)\ - DEFINE_KSPROPERTY_ITEM(\ - KSPROPERTY_TOPOLOGY_CATEGORIES,\ - (Handler),\ - sizeof(KSPROPERTY),\ - 0,\ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_TOPOLOGY_NODES(Handler)\ - DEFINE_KSPROPERTY_ITEM(\ - KSPROPERTY_TOPOLOGY_NODES,\ - (Handler),\ - sizeof(KSPROPERTY),\ - 0,\ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_TOPOLOGY_CONNECTIONS(Handler)\ - DEFINE_KSPROPERTY_ITEM(\ - KSPROPERTY_TOPOLOGY_CONNECTIONS,\ - (Handler),\ - sizeof(KSPROPERTY),\ - 0,\ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_TOPOLOGY_NAME(Handler)\ - DEFINE_KSPROPERTY_ITEM(\ - KSPROPERTY_TOPOLOGY_NAME,\ - (Handler),\ - sizeof(KSP_NODE),\ - 0,\ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_TOPOLOGYSET(TopologySet, Handler)\ -DEFINE_KSPROPERTY_TABLE(TopologySet) {\ - DEFINE_KSPROPERTY_ITEM_TOPOLOGY_CATEGORIES(Handler),\ - DEFINE_KSPROPERTY_ITEM_TOPOLOGY_NODES(Handler),\ - DEFINE_KSPROPERTY_ITEM_TOPOLOGY_CONNECTIONS(Handler),\ - DEFINE_KSPROPERTY_ITEM_TOPOLOGY_NAME(Handler)\ -} - -//============================================================================= - -// -// properties used by graph manager to talk to particular filters -// -#if defined(_NTDDK_) - -#define STATIC_KSPROPSETID_GM \ - 0xAF627536L, 0xE719, 0x11D2, 0x8A, 0x1D, 0x00, 0x60, 0x97, 0xD2, 0xDF, 0x5D -DEFINE_GUIDSTRUCT("AF627536-E719-11D2-8A1D-006097D2DF5D", KSPROPSETID_GM); -#define KSPROPSETID_GM DEFINE_GUIDNAMED(KSPROPSETID_GM) - -typedef VOID (*PFNKSGRAPHMANAGER_NOTIFY)(IN PFILE_OBJECT GraphManager, - IN ULONG EventId, - IN PVOID Filter, - IN PVOID Pin, - IN PVOID Frame, - IN ULONG Duration); - -typedef struct KSGRAPHMANAGER_FUNCTIONTABLE { - PFNKSGRAPHMANAGER_NOTIFY NotifyEvent; -} KSGRAPHMANAGER_FUNCTIONTABLE, PKSGRAPHMANAGER_FUNCTIONTABLE; - -typedef struct _KSPROPERTY_GRAPHMANAGER_INTERFACE { - PFILE_OBJECT GraphManager; - KSGRAPHMANAGER_FUNCTIONTABLE FunctionTable; -} KSPROPERTY_GRAPHMANAGER_INTERFACE, *PKSPROPERTY_GRAPHMANAGER_INTERFACE; - - -// -// Commands -// -typedef enum { - KSPROPERTY_GM_GRAPHMANAGER, - KSPROPERTY_GM_TIMESTAMP_CLOCK, - KSPROPERTY_GM_RATEMATCH, - KSPROPERTY_GM_RENDER_CLOCK, -} KSPROPERTY_GM; - -#endif - -//=========================================================================== - - -#define STATIC_KSCATEGORY_BRIDGE \ - 0x085AFF00L, 0x62CE, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 -DEFINE_GUIDSTRUCT("085AFF00-62CE-11CF-A5D6-28DB04C10000", KSCATEGORY_BRIDGE); -#define KSCATEGORY_BRIDGE DEFINE_GUIDNAMED(KSCATEGORY_BRIDGE) - -#define STATIC_KSCATEGORY_CAPTURE \ - 0x65E8773DL, 0x8F56, 0x11D0, 0xA3, 0xB9, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 -DEFINE_GUIDSTRUCT("65E8773D-8F56-11D0-A3B9-00A0C9223196", KSCATEGORY_CAPTURE); -#define KSCATEGORY_CAPTURE DEFINE_GUIDNAMED(KSCATEGORY_CAPTURE) - -#define STATIC_KSCATEGORY_RENDER \ - 0x65E8773EL, 0x8F56, 0x11D0, 0xA3, 0xB9, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 -DEFINE_GUIDSTRUCT("65E8773E-8F56-11D0-A3B9-00A0C9223196", KSCATEGORY_RENDER); -#define KSCATEGORY_RENDER DEFINE_GUIDNAMED(KSCATEGORY_RENDER) - -#define STATIC_KSCATEGORY_MIXER \ - 0xAD809C00L, 0x7B88, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 -DEFINE_GUIDSTRUCT("AD809C00-7B88-11D0-A5D6-28DB04C10000", KSCATEGORY_MIXER); -#define KSCATEGORY_MIXER DEFINE_GUIDNAMED(KSCATEGORY_MIXER) - -#define STATIC_KSCATEGORY_SPLITTER \ - 0x0A4252A0L, 0x7E70, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 -DEFINE_GUIDSTRUCT("0A4252A0-7E70-11D0-A5D6-28DB04C10000", KSCATEGORY_SPLITTER); -#define KSCATEGORY_SPLITTER DEFINE_GUIDNAMED(KSCATEGORY_SPLITTER) - -#define STATIC_KSCATEGORY_DATACOMPRESSOR \ - 0x1E84C900L, 0x7E70, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 -DEFINE_GUIDSTRUCT("1E84C900-7E70-11D0-A5D6-28DB04C10000", KSCATEGORY_DATACOMPRESSOR); -#define KSCATEGORY_DATACOMPRESSOR DEFINE_GUIDNAMED(KSCATEGORY_DATACOMPRESSOR) - -#define STATIC_KSCATEGORY_DATADECOMPRESSOR \ - 0x2721AE20L, 0x7E70, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 -DEFINE_GUIDSTRUCT("2721AE20-7E70-11D0-A5D6-28DB04C10000", KSCATEGORY_DATADECOMPRESSOR); -#define KSCATEGORY_DATADECOMPRESSOR DEFINE_GUIDNAMED(KSCATEGORY_DATADECOMPRESSOR) - -#define STATIC_KSCATEGORY_DATATRANSFORM \ - 0x2EB07EA0L, 0x7E70, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 -DEFINE_GUIDSTRUCT("2EB07EA0-7E70-11D0-A5D6-28DB04C10000", KSCATEGORY_DATATRANSFORM); -#define KSCATEGORY_DATATRANSFORM DEFINE_GUIDNAMED(KSCATEGORY_DATATRANSFORM) - -#define STATIC_KSCATEGORY_COMMUNICATIONSTRANSFORM \ - 0xCF1DDA2CL, 0x9743, 0x11D0, 0xA3, 0xEE, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 -DEFINE_GUIDSTRUCT("CF1DDA2C-9743-11D0-A3EE-00A0C9223196", KSCATEGORY_COMMUNICATIONSTRANSFORM); -#define KSCATEGORY_COMMUNICATIONSTRANSFORM DEFINE_GUIDNAMED(KSCATEGORY_COMMUNICATIONSTRANSFORM) - -#define STATIC_KSCATEGORY_INTERFACETRANSFORM \ - 0xCF1DDA2DL, 0x9743, 0x11D0, 0xA3, 0xEE, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 -DEFINE_GUIDSTRUCT("CF1DDA2D-9743-11D0-A3EE-00A0C9223196", KSCATEGORY_INTERFACETRANSFORM); -#define KSCATEGORY_INTERFACETRANSFORM DEFINE_GUIDNAMED(KSCATEGORY_INTERFACETRANSFORM) - -#define STATIC_KSCATEGORY_MEDIUMTRANSFORM \ - 0xCF1DDA2EL, 0x9743, 0x11D0, 0xA3, 0xEE, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 -DEFINE_GUIDSTRUCT("CF1DDA2E-9743-11D0-A3EE-00A0C9223196", KSCATEGORY_MEDIUMTRANSFORM); -#define KSCATEGORY_MEDIUMTRANSFORM DEFINE_GUIDNAMED(KSCATEGORY_MEDIUMTRANSFORM) - -#define STATIC_KSCATEGORY_FILESYSTEM \ - 0x760FED5EL, 0x9357, 0x11D0, 0xA3, 0xCC, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 -DEFINE_GUIDSTRUCT("760FED5E-9357-11D0-A3CC-00A0C9223196", KSCATEGORY_FILESYSTEM); -#define KSCATEGORY_FILESYSTEM DEFINE_GUIDNAMED(KSCATEGORY_FILESYSTEM) - -// KSNAME_Clock -#define STATIC_KSCATEGORY_CLOCK \ - 0x53172480L, 0x4791, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 -DEFINE_GUIDSTRUCT("53172480-4791-11D0-A5D6-28DB04C10000", KSCATEGORY_CLOCK); -#define KSCATEGORY_CLOCK DEFINE_GUIDNAMED(KSCATEGORY_CLOCK) - -#define STATIC_KSCATEGORY_PROXY \ - 0x97EBAACAL, 0x95BD, 0x11D0, 0xA3, 0xEA, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 -DEFINE_GUIDSTRUCT("97EBAACA-95BD-11D0-A3EA-00A0C9223196", KSCATEGORY_PROXY); -#define KSCATEGORY_PROXY DEFINE_GUIDNAMED(KSCATEGORY_PROXY) - -#define STATIC_KSCATEGORY_QUALITY \ - 0x97EBAACBL, 0x95BD, 0x11D0, 0xA3, 0xEA, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 -DEFINE_GUIDSTRUCT("97EBAACB-95BD-11D0-A3EA-00A0C9223196", KSCATEGORY_QUALITY); -#define KSCATEGORY_QUALITY DEFINE_GUIDNAMED(KSCATEGORY_QUALITY) - -typedef struct { - ULONG FromNode; - ULONG FromNodePin; - ULONG ToNode; - ULONG ToNodePin; -} KSTOPOLOGY_CONNECTION, *PKSTOPOLOGY_CONNECTION; - -typedef struct { - ULONG CategoriesCount; - const GUID* Categories; - ULONG TopologyNodesCount; - const GUID* TopologyNodes; - ULONG TopologyConnectionsCount; - const KSTOPOLOGY_CONNECTION* TopologyConnections; - const GUID* TopologyNodesNames; - ULONG Reserved; -} KSTOPOLOGY, *PKSTOPOLOGY; - -#define KSFILTER_NODE ((ULONG)-1) -#define KSALL_NODES ((ULONG)-1) - -typedef struct { - ULONG CreateFlags; - ULONG Node; -} KSNODE_CREATE, *PKSNODE_CREATE; - -//=========================================================================== - -// TIME_FORMAT_NONE -#define STATIC_KSTIME_FORMAT_NONE STATIC_GUID_NULL -#define KSTIME_FORMAT_NONE GUID_NULL - -// TIME_FORMAT_FRAME -#define STATIC_KSTIME_FORMAT_FRAME\ - 0x7b785570L, 0x8c82, 0x11cf, 0xbc, 0x0c, 0x00, 0xaa, 0x00, 0xac, 0x74, 0xf6 -DEFINE_GUIDSTRUCT("7b785570-8c82-11cf-bc0c-00aa00ac74f6", KSTIME_FORMAT_FRAME); -#define KSTIME_FORMAT_FRAME DEFINE_GUIDNAMED(KSTIME_FORMAT_FRAME) - -// TIME_FORMAT_BYTE -#define STATIC_KSTIME_FORMAT_BYTE\ - 0x7b785571L, 0x8c82, 0x11cf, 0xbc, 0x0c, 0x00, 0xaa, 0x00, 0xac, 0x74, 0xf6 -DEFINE_GUIDSTRUCT("7b785571-8c82-11cf-bc0c-00aa00ac74f6", KSTIME_FORMAT_BYTE); -#define KSTIME_FORMAT_BYTE DEFINE_GUIDNAMED(KSTIME_FORMAT_BYTE) - -// TIME_FORMAT_SAMPLE -#define STATIC_KSTIME_FORMAT_SAMPLE\ - 0x7b785572L, 0x8c82, 0x11cf, 0xbc, 0x0c, 0x00, 0xaa, 0x00, 0xac, 0x74, 0xf6 -DEFINE_GUIDSTRUCT("7b785572-8c82-11cf-bc0c-00aa00ac74f6", KSTIME_FORMAT_SAMPLE); -#define KSTIME_FORMAT_SAMPLE DEFINE_GUIDNAMED(KSTIME_FORMAT_SAMPLE) - -// TIME_FORMAT_FIELD -#define STATIC_KSTIME_FORMAT_FIELD\ - 0x7b785573L, 0x8c82, 0x11cf, 0xbc, 0x0c, 0x00, 0xaa, 0x00, 0xac, 0x74, 0xf6 -DEFINE_GUIDSTRUCT("7b785573-8c82-11cf-bc0c-00aa00ac74f6", KSTIME_FORMAT_FIELD); -#define KSTIME_FORMAT_FIELD DEFINE_GUIDNAMED(KSTIME_FORMAT_FIELD) - -// TIME_FORMAT_MEDIA_TIME -#define STATIC_KSTIME_FORMAT_MEDIA_TIME\ - 0x7b785574L, 0x8c82, 0x11cf, 0xbc, 0x0c, 0x00, 0xaa, 0x00, 0xac, 0x74, 0xf6 -DEFINE_GUIDSTRUCT("7b785574-8c82-11cf-bc0c-00aa00ac74f6", KSTIME_FORMAT_MEDIA_TIME); -#define KSTIME_FORMAT_MEDIA_TIME DEFINE_GUIDNAMED(KSTIME_FORMAT_MEDIA_TIME) - -//=========================================================================== - -typedef KSIDENTIFIER KSPIN_INTERFACE, *PKSPIN_INTERFACE; - -#define STATIC_KSINTERFACESETID_Standard \ - 0x1A8766A0L, 0x62CE, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 -DEFINE_GUIDSTRUCT("1A8766A0-62CE-11CF-A5D6-28DB04C10000", KSINTERFACESETID_Standard); -#define KSINTERFACESETID_Standard DEFINE_GUIDNAMED(KSINTERFACESETID_Standard) - -typedef enum { - KSINTERFACE_STANDARD_STREAMING, - KSINTERFACE_STANDARD_LOOPED_STREAMING, - KSINTERFACE_STANDARD_CONTROL -} KSINTERFACE_STANDARD; - -#define STATIC_KSINTERFACESETID_FileIo \ - 0x8C6F932CL, 0xE771, 0x11D0, 0xB8, 0xFF, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 -DEFINE_GUIDSTRUCT("8C6F932C-E771-11D0-B8FF-00A0C9223196", KSINTERFACESETID_FileIo); -#define KSINTERFACESETID_FileIo DEFINE_GUIDNAMED(KSINTERFACESETID_FileIo) - -typedef enum { - KSINTERFACE_FILEIO_STREAMING -} KSINTERFACE_FILEIO; - -//=========================================================================== - -#define KSMEDIUM_TYPE_ANYINSTANCE 0 - -#define STATIC_KSMEDIUMSETID_Standard \ - 0x4747B320L, 0x62CE, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 -DEFINE_GUIDSTRUCT("4747B320-62CE-11CF-A5D6-28DB04C10000", KSMEDIUMSETID_Standard); -#define KSMEDIUMSETID_Standard DEFINE_GUIDNAMED(KSMEDIUMSETID_Standard) - -//For compatibility only -#define KSMEDIUM_STANDARD_DEVIO KSMEDIUM_TYPE_ANYINSTANCE - -//=========================================================================== - -#define STATIC_KSPROPSETID_Pin\ - 0x8C134960L, 0x51AD, 0x11CF, 0x87, 0x8A, 0x94, 0xF8, 0x01, 0xC1, 0x00, 0x00 -DEFINE_GUIDSTRUCT("8C134960-51AD-11CF-878A-94F801C10000", KSPROPSETID_Pin); -#define KSPROPSETID_Pin DEFINE_GUIDNAMED(KSPROPSETID_Pin) - -typedef enum { - KSPROPERTY_PIN_CINSTANCES, - KSPROPERTY_PIN_CTYPES, - KSPROPERTY_PIN_DATAFLOW, - KSPROPERTY_PIN_DATARANGES, - KSPROPERTY_PIN_DATAINTERSECTION, - KSPROPERTY_PIN_INTERFACES, - KSPROPERTY_PIN_MEDIUMS, - KSPROPERTY_PIN_COMMUNICATION, - KSPROPERTY_PIN_GLOBALCINSTANCES, - KSPROPERTY_PIN_NECESSARYINSTANCES, - KSPROPERTY_PIN_PHYSICALCONNECTION, - KSPROPERTY_PIN_CATEGORY, - KSPROPERTY_PIN_NAME, - KSPROPERTY_PIN_CONSTRAINEDDATARANGES, - KSPROPERTY_PIN_PROPOSEDATAFORMAT -} KSPROPERTY_PIN; - -typedef struct { - KSPROPERTY Property; - ULONG PinId; - ULONG Reserved; -} KSP_PIN, *PKSP_PIN; - -#define KSINSTANCE_INDETERMINATE ((ULONG)-1) - -typedef struct { - ULONG PossibleCount; - ULONG CurrentCount; -} KSPIN_CINSTANCES, *PKSPIN_CINSTANCES; - -typedef enum { - KSPIN_DATAFLOW_IN = 1, - KSPIN_DATAFLOW_OUT -} KSPIN_DATAFLOW, *PKSPIN_DATAFLOW; - -#define KSDATAFORMAT_BIT_TEMPORAL_COMPRESSION 0 -#define KSDATAFORMAT_TEMPORAL_COMPRESSION (1 << KSDATAFORMAT_BIT_TEMPORAL_COMPRESSION) -#define KSDATAFORMAT_BIT_ATTRIBUTES 1 -#define KSDATAFORMAT_ATTRIBUTES (1 << KSDATAFORMAT_BIT_ATTRIBUTES) - -#define KSDATARANGE_BIT_ATTRIBUTES 1 -#define KSDATARANGE_ATTRIBUTES (1 << KSDATARANGE_BIT_ATTRIBUTES) -#define KSDATARANGE_BIT_REQUIRED_ATTRIBUTES 2 -#define KSDATARANGE_REQUIRED_ATTRIBUTES (1 << KSDATARANGE_BIT_REQUIRED_ATTRIBUTES) - -#if !defined( _MSC_VER ) -typedef struct { - ULONG FormatSize; - ULONG Flags; - ULONG SampleSize; - ULONG Reserved; - GUID MajorFormat; - GUID SubFormat; - GUID Specifier; -} KSDATAFORMAT, *PKSDATAFORMAT, KSDATARANGE, *PKSDATARANGE; -#else -typedef union { - struct { - ULONG FormatSize; - ULONG Flags; - ULONG SampleSize; - ULONG Reserved; - GUID MajorFormat; - GUID SubFormat; - GUID Specifier; - }; - LONGLONG Alignment; -} KSDATAFORMAT, *PKSDATAFORMAT, KSDATARANGE, *PKSDATARANGE; -#endif - -#define KSATTRIBUTE_REQUIRED 0x00000001 - -typedef struct { - ULONG Size; - ULONG Flags; - GUID Attribute; -} KSATTRIBUTE, *PKSATTRIBUTE; - -#if defined(_NTDDK_) -typedef struct { - ULONG Count; - PKSATTRIBUTE* Attributes; -} KSATTRIBUTE_LIST, *PKSATTRIBUTE_LIST; -#endif // _NTDDK_ - -typedef enum { - KSPIN_COMMUNICATION_NONE, - KSPIN_COMMUNICATION_SINK, - KSPIN_COMMUNICATION_SOURCE, - KSPIN_COMMUNICATION_BOTH, - KSPIN_COMMUNICATION_BRIDGE -} KSPIN_COMMUNICATION, *PKSPIN_COMMUNICATION; - -typedef KSIDENTIFIER KSPIN_MEDIUM, *PKSPIN_MEDIUM; - -typedef struct { - KSPIN_INTERFACE Interface; - KSPIN_MEDIUM Medium; - ULONG PinId; - HANDLE PinToHandle; - KSPRIORITY Priority; -} KSPIN_CONNECT, *PKSPIN_CONNECT; - -typedef struct { - ULONG Size; - ULONG Pin; - WCHAR SymbolicLinkName[1]; -} KSPIN_PHYSICALCONNECTION, *PKSPIN_PHYSICALCONNECTION; - -#if defined(_NTDDK_) -typedef -NTSTATUS -(*PFNKSINTERSECTHANDLER)( - IN PIRP Irp, - IN PKSP_PIN Pin, - IN PKSDATARANGE DataRange, - OUT PVOID Data OPTIONAL - ); -typedef -NTSTATUS -(*PFNKSINTERSECTHANDLEREX)( - IN PVOID Context, - IN PIRP Irp, - IN PKSP_PIN Pin, - IN PKSDATARANGE DataRange, - IN PKSDATARANGE MatchingDataRange, - IN ULONG DataBufferSize, - OUT PVOID Data OPTIONAL, - OUT PULONG DataSize - ); -#endif // _NTDDK_ - -#define DEFINE_KSPIN_INTERFACE_TABLE(tablename)\ - const KSPIN_INTERFACE tablename[] = - -#define DEFINE_KSPIN_INTERFACE_ITEM(guid, interface)\ - {\ - STATICGUIDOF(guid),\ - (interface),\ - 0\ - } - -#define DEFINE_KSPIN_MEDIUM_TABLE( tablename )\ - const KSPIN_MEDIUM tablename[] = - -#define DEFINE_KSPIN_MEDIUM_ITEM(guid, medium)\ - DEFINE_KSPIN_INTERFACE_ITEM(guid, medium) - -#define DEFINE_KSPROPERTY_ITEM_PIN_CINSTANCES(Handler)\ - DEFINE_KSPROPERTY_ITEM(\ - KSPROPERTY_PIN_CINSTANCES,\ - (Handler),\ - sizeof(KSP_PIN),\ - sizeof(KSPIN_CINSTANCES),\ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_PIN_CTYPES(Handler)\ - DEFINE_KSPROPERTY_ITEM(\ - KSPROPERTY_PIN_CTYPES,\ - (Handler),\ - sizeof(KSPROPERTY),\ - sizeof(ULONG),\ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_PIN_DATAFLOW(Handler)\ - DEFINE_KSPROPERTY_ITEM(\ - KSPROPERTY_PIN_DATAFLOW,\ - (Handler),\ - sizeof(KSP_PIN),\ - sizeof(KSPIN_DATAFLOW),\ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_PIN_DATARANGES(Handler)\ - DEFINE_KSPROPERTY_ITEM(\ - KSPROPERTY_PIN_DATARANGES,\ - (Handler),\ - sizeof(KSP_PIN),\ - 0,\ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_PIN_DATAINTERSECTION(Handler)\ - DEFINE_KSPROPERTY_ITEM(\ - KSPROPERTY_PIN_DATAINTERSECTION,\ - (Handler),\ - sizeof(KSP_PIN) + sizeof(KSMULTIPLE_ITEM),\ - 0,\ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_PIN_INTERFACES(Handler)\ - DEFINE_KSPROPERTY_ITEM(\ - KSPROPERTY_PIN_INTERFACES,\ - (Handler),\ - sizeof(KSP_PIN),\ - 0,\ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_PIN_MEDIUMS(Handler)\ - DEFINE_KSPROPERTY_ITEM(\ - KSPROPERTY_PIN_MEDIUMS,\ - (Handler),\ - sizeof(KSP_PIN),\ - 0,\ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_PIN_COMMUNICATION(Handler)\ - DEFINE_KSPROPERTY_ITEM(\ - KSPROPERTY_PIN_COMMUNICATION,\ - (Handler),\ - sizeof(KSP_PIN),\ - sizeof(KSPIN_COMMUNICATION),\ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_PIN_GLOBALCINSTANCES(Handler)\ - DEFINE_KSPROPERTY_ITEM(\ - KSPROPERTY_PIN_GLOBALCINSTANCES,\ - (Handler),\ - sizeof(KSP_PIN),\ - sizeof(KSPIN_CINSTANCES),\ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_PIN_NECESSARYINSTANCES(Handler)\ - DEFINE_KSPROPERTY_ITEM(\ - KSPROPERTY_PIN_NECESSARYINSTANCES,\ - (Handler),\ - sizeof(KSP_PIN),\ - sizeof(ULONG),\ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_PIN_PHYSICALCONNECTION(Handler)\ - DEFINE_KSPROPERTY_ITEM(\ - KSPROPERTY_PIN_PHYSICALCONNECTION,\ - (Handler),\ - sizeof(KSP_PIN),\ - 0,\ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_PIN_CATEGORY(Handler)\ - DEFINE_KSPROPERTY_ITEM(\ - KSPROPERTY_PIN_CATEGORY,\ - (Handler),\ - sizeof(KSP_PIN),\ - sizeof(GUID),\ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_PIN_NAME(Handler)\ - DEFINE_KSPROPERTY_ITEM(\ - KSPROPERTY_PIN_NAME,\ - (Handler),\ - sizeof(KSP_PIN),\ - 0,\ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_PIN_CONSTRAINEDDATARANGES(Handler)\ - DEFINE_KSPROPERTY_ITEM(\ - KSPROPERTY_PIN_CONSTRAINEDDATARANGES,\ - (Handler),\ - sizeof(KSP_PIN),\ - 0,\ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_PIN_PROPOSEDATAFORMAT(Handler)\ - DEFINE_KSPROPERTY_ITEM(\ - KSPROPERTY_PIN_PROPOSEDATAFORMAT,\ - NULL,\ - sizeof(KSP_PIN),\ - sizeof(KSDATAFORMAT),\ - (Handler), NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_PINSET(PinSet,\ - PropGeneral, PropInstances, PropIntersection)\ -DEFINE_KSPROPERTY_TABLE(PinSet) {\ - DEFINE_KSPROPERTY_ITEM_PIN_CINSTANCES(PropInstances),\ - DEFINE_KSPROPERTY_ITEM_PIN_CTYPES(PropGeneral),\ - DEFINE_KSPROPERTY_ITEM_PIN_DATAFLOW(PropGeneral),\ - DEFINE_KSPROPERTY_ITEM_PIN_DATARANGES(PropGeneral),\ - DEFINE_KSPROPERTY_ITEM_PIN_DATAINTERSECTION(PropIntersection),\ - DEFINE_KSPROPERTY_ITEM_PIN_INTERFACES(PropGeneral),\ - DEFINE_KSPROPERTY_ITEM_PIN_MEDIUMS(PropGeneral),\ - DEFINE_KSPROPERTY_ITEM_PIN_COMMUNICATION(PropGeneral),\ - DEFINE_KSPROPERTY_ITEM_PIN_CATEGORY(PropGeneral),\ - DEFINE_KSPROPERTY_ITEM_PIN_NAME(PropGeneral)\ -} - -#define DEFINE_KSPROPERTY_PINSETCONSTRAINED(PinSet,\ - PropGeneral, PropInstances, PropIntersection)\ -DEFINE_KSPROPERTY_TABLE(PinSet) {\ - DEFINE_KSPROPERTY_ITEM_PIN_CINSTANCES(PropInstances),\ - DEFINE_KSPROPERTY_ITEM_PIN_CTYPES(PropGeneral),\ - DEFINE_KSPROPERTY_ITEM_PIN_DATAFLOW(PropGeneral),\ - DEFINE_KSPROPERTY_ITEM_PIN_DATARANGES(PropGeneral),\ - DEFINE_KSPROPERTY_ITEM_PIN_DATAINTERSECTION(PropIntersection),\ - DEFINE_KSPROPERTY_ITEM_PIN_INTERFACES(PropGeneral),\ - DEFINE_KSPROPERTY_ITEM_PIN_MEDIUMS(PropGeneral),\ - DEFINE_KSPROPERTY_ITEM_PIN_COMMUNICATION(PropGeneral),\ - DEFINE_KSPROPERTY_ITEM_PIN_CATEGORY(PropGeneral),\ - DEFINE_KSPROPERTY_ITEM_PIN_NAME(PropGeneral),\ - DEFINE_KSPROPERTY_ITEM_PIN_CONSTRAINEDDATARANGES(PropGeneral)\ -} - -#define STATIC_KSNAME_Filter\ - 0x9b365890L, 0x165f, 0x11d0, 0xa1, 0x95, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4 -DEFINE_GUIDSTRUCT("9b365890-165f-11d0-a195-0020afd156e4", KSNAME_Filter); -#define KSNAME_Filter DEFINE_GUIDNAMED(KSNAME_Filter) - -#define KSSTRING_Filter L"{9B365890-165F-11D0-A195-0020AFD156E4}" - -#define STATIC_KSNAME_Pin\ - 0x146F1A80L, 0x4791, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 -DEFINE_GUIDSTRUCT("146F1A80-4791-11D0-A5D6-28DB04C10000", KSNAME_Pin); -#define KSNAME_Pin DEFINE_GUIDNAMED(KSNAME_Pin) - -#define KSSTRING_Pin L"{146F1A80-4791-11D0-A5D6-28DB04C10000}" - -#define STATIC_KSNAME_Clock\ - 0x53172480L, 0x4791, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 -DEFINE_GUIDSTRUCT("53172480-4791-11D0-A5D6-28DB04C10000", KSNAME_Clock); -#define KSNAME_Clock DEFINE_GUIDNAMED(KSNAME_Clock) - -#define KSSTRING_Clock L"{53172480-4791-11D0-A5D6-28DB04C10000}" - -#define STATIC_KSNAME_Allocator\ - 0x642F5D00L, 0x4791, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 -DEFINE_GUIDSTRUCT("642F5D00-4791-11D0-A5D6-28DB04C10000", KSNAME_Allocator); -#define KSNAME_Allocator DEFINE_GUIDNAMED(KSNAME_Allocator) - -#define KSSTRING_Allocator L"{642F5D00-4791-11D0-A5D6-28DB04C10000}" - -#define KSSTRING_AllocatorEx L"{091BB63B-603F-11D1-B067-00A0C9062802}" - -#define STATIC_KSNAME_TopologyNode\ - 0x0621061AL, 0xEE75, 0x11D0, 0xB9, 0x15, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 -DEFINE_GUIDSTRUCT("0621061A-EE75-11D0-B915-00A0C9223196", KSNAME_TopologyNode); -#define KSNAME_TopologyNode DEFINE_GUIDNAMED(KSNAME_TopologyNode) - -#define KSSTRING_TopologyNode L"{0621061A-EE75-11D0-B915-00A0C9223196}" - -#if defined(_NTDDK_) - -typedef struct { - ULONG InterfacesCount; - const KSPIN_INTERFACE* Interfaces; - ULONG MediumsCount; - const KSPIN_MEDIUM* Mediums; - ULONG DataRangesCount; - const PKSDATARANGE* DataRanges; - KSPIN_DATAFLOW DataFlow; - KSPIN_COMMUNICATION Communication; - const GUID* Category; - const GUID* Name; - union { - LONGLONG Reserved; - struct { - ULONG ConstrainedDataRangesCount; - PKSDATARANGE* ConstrainedDataRanges; - }; - }; -} KSPIN_DESCRIPTOR, *PKSPIN_DESCRIPTOR; -typedef const KSPIN_DESCRIPTOR *PCKSPIN_DESCRIPTOR; - -#define DEFINE_KSPIN_DESCRIPTOR_TABLE(tablename)\ - const KSPIN_DESCRIPTOR tablename[] = - -#define DEFINE_KSPIN_DESCRIPTOR_ITEM(\ - InterfacesCount, Interfaces,\ - MediumsCount, Mediums,\ - DataRangesCount, DataRanges,\ - DataFlow, Communication)\ -{\ - InterfacesCount, Interfaces, MediumsCount, Mediums,\ - DataRangesCount, DataRanges, DataFlow, Communication,\ - NULL, NULL, 0\ -} -#define DEFINE_KSPIN_DESCRIPTOR_ITEMEX(\ - InterfacesCount, Interfaces,\ - MediumsCount, Mediums,\ - DataRangesCount, DataRanges,\ - DataFlow, Communication,\ - Category, Name)\ -{\ - InterfacesCount, Interfaces, MediumsCount, Mediums,\ - DataRangesCount, DataRanges, DataFlow, Communication,\ - Category, Name, 0\ -} - -#endif // defined(_NTDDK_) - -//=========================================================================== - -// MEDIATYPE_NULL -#define STATIC_KSDATAFORMAT_TYPE_WILDCARD STATIC_GUID_NULL -#define KSDATAFORMAT_TYPE_WILDCARD GUID_NULL - -// MEDIASUBTYPE_NULL -#define STATIC_KSDATAFORMAT_SUBTYPE_WILDCARD STATIC_GUID_NULL -#define KSDATAFORMAT_SUBTYPE_WILDCARD GUID_NULL - -// MEDIATYPE_Stream -#define STATIC_KSDATAFORMAT_TYPE_STREAM\ - 0xE436EB83L, 0x524F, 0x11CE, 0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70 -DEFINE_GUIDSTRUCT("E436EB83-524F-11CE-9F53-0020AF0BA770", KSDATAFORMAT_TYPE_STREAM); -#define KSDATAFORMAT_TYPE_STREAM DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_STREAM) - -// MEDIASUBTYPE_None -#define STATIC_KSDATAFORMAT_SUBTYPE_NONE\ - 0xE436EB8EL, 0x524F, 0x11CE, 0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70 -DEFINE_GUIDSTRUCT("E436EB8E-524F-11CE-9F53-0020AF0BA770", KSDATAFORMAT_SUBTYPE_NONE); -#define KSDATAFORMAT_SUBTYPE_NONE DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_NONE) - -#define STATIC_KSDATAFORMAT_SPECIFIER_WILDCARD STATIC_GUID_NULL -#define KSDATAFORMAT_SPECIFIER_WILDCARD GUID_NULL - -#define STATIC_KSDATAFORMAT_SPECIFIER_FILENAME\ - 0xAA797B40L, 0xE974, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 -DEFINE_GUIDSTRUCT("AA797B40-E974-11CF-A5D6-28DB04C10000", KSDATAFORMAT_SPECIFIER_FILENAME); -#define KSDATAFORMAT_SPECIFIER_FILENAME DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_FILENAME) - -#define STATIC_KSDATAFORMAT_SPECIFIER_FILEHANDLE\ - 0x65E8773CL, 0x8F56, 0x11D0, 0xA3, 0xB9, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 -DEFINE_GUIDSTRUCT("65E8773C-8F56-11D0-A3B9-00A0C9223196", KSDATAFORMAT_SPECIFIER_FILEHANDLE); -#define KSDATAFORMAT_SPECIFIER_FILEHANDLE DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_FILEHANDLE) - -// FORMAT_None -#define STATIC_KSDATAFORMAT_SPECIFIER_NONE\ - 0x0F6417D6L, 0xC318, 0x11D0, 0xA4, 0x3F, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 -DEFINE_GUIDSTRUCT("0F6417D6-C318-11D0-A43F-00A0C9223196", KSDATAFORMAT_SPECIFIER_NONE); -#define KSDATAFORMAT_SPECIFIER_NONE DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_NONE) - -//=========================================================================== - -#define STATIC_KSPROPSETID_Quality \ - 0xD16AD380L, 0xAC1A, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 -DEFINE_GUIDSTRUCT("D16AD380-AC1A-11CF-A5D6-28DB04C10000", KSPROPSETID_Quality); -#define KSPROPSETID_Quality DEFINE_GUIDNAMED(KSPROPSETID_Quality) - -typedef enum { - KSPROPERTY_QUALITY_REPORT, - KSPROPERTY_QUALITY_ERROR -} KSPROPERTY_QUALITY; - -#define DEFINE_KSPROPERTY_ITEM_QUALITY_REPORT(GetHandler, SetHandler)\ - DEFINE_KSPROPERTY_ITEM(\ - KSPROPERTY_QUALITY_REPORT,\ - (GetHandler),\ - sizeof(KSPROPERTY),\ - sizeof(KSQUALITY),\ - (SetHandler),\ - NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_QUALITY_ERROR(GetHandler, SetHandler)\ - DEFINE_KSPROPERTY_ITEM(\ - KSPROPERTY_QUALITY_ERROR,\ - (GetHandler),\ - sizeof(KSPROPERTY),\ - sizeof(KSERROR),\ - (SetHandler),\ - NULL, 0, NULL, NULL, 0) - -//=========================================================================== - -#define STATIC_KSPROPSETID_Connection \ - 0x1D58C920L, 0xAC9B, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 -DEFINE_GUIDSTRUCT("1D58C920-AC9B-11CF-A5D6-28DB04C10000", KSPROPSETID_Connection); -#define KSPROPSETID_Connection DEFINE_GUIDNAMED(KSPROPSETID_Connection) - -typedef enum { - KSPROPERTY_CONNECTION_STATE, - KSPROPERTY_CONNECTION_PRIORITY, - KSPROPERTY_CONNECTION_DATAFORMAT, - KSPROPERTY_CONNECTION_ALLOCATORFRAMING, - KSPROPERTY_CONNECTION_PROPOSEDATAFORMAT, - KSPROPERTY_CONNECTION_ACQUIREORDERING, - KSPROPERTY_CONNECTION_ALLOCATORFRAMING_EX, - KSPROPERTY_CONNECTION_STARTAT -} KSPROPERTY_CONNECTION; - -#define DEFINE_KSPROPERTY_ITEM_CONNECTION_STATE(GetHandler, SetHandler)\ - DEFINE_KSPROPERTY_ITEM(\ - KSPROPERTY_CONNECTION_STATE,\ - (GetHandler),\ - sizeof(KSPROPERTY),\ - sizeof(KSSTATE),\ - (SetHandler),\ - NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_CONNECTION_PRIORITY(GetHandler, SetHandler)\ - DEFINE_KSPROPERTY_ITEM(\ - KSPROPERTY_CONNECTION_PRIORITY,\ - (GetHandler),\ - sizeof(KSPROPERTY),\ - sizeof(KSPRIORITY),\ - (SetHandler),\ - NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_CONNECTION_DATAFORMAT(GetHandler, SetHandler)\ - DEFINE_KSPROPERTY_ITEM(\ - KSPROPERTY_CONNECTION_DATAFORMAT,\ - (GetHandler),\ - sizeof(KSPROPERTY),\ - 0,\ - (SetHandler),\ - NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_CONNECTION_ALLOCATORFRAMING(Handler)\ - DEFINE_KSPROPERTY_ITEM(\ - KSPROPERTY_CONNECTION_ALLOCATORFRAMING,\ - (Handler),\ - sizeof(KSPROPERTY),\ - sizeof(KSALLOCATOR_FRAMING),\ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_CONNECTION_ALLOCATORFRAMING_EX(Handler)\ - DEFINE_KSPROPERTY_ITEM(\ - KSPROPERTY_CONNECTION_ALLOCATORFRAMING_EX,\ - (Handler),\ - sizeof(KSPROPERTY),\ - 0,\ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_CONNECTION_PROPOSEDATAFORMAT(Handler)\ - DEFINE_KSPROPERTY_ITEM(\ - KSPROPERTY_CONNECTION_PROPOSEDATAFORMAT,\ - NULL,\ - sizeof(KSPROPERTY),\ - sizeof(KSDATAFORMAT),\ - (Handler),\ - NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_CONNECTION_ACQUIREORDERING(Handler)\ - DEFINE_KSPROPERTY_ITEM(\ - KSPROPERTY_CONNECTION_ACQUIREORDERING,\ - (Handler),\ - sizeof(KSPROPERTY),\ - sizeof(int),\ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_CONNECTION_STARTAT(Handler)\ - DEFINE_KSPROPERTY_ITEM(\ - KSPROPERTY_CONNECTION_STARTAT,\ - NULL,\ - sizeof(KSPROPERTY),\ - sizeof(KSRELATIVEEVENT),\ - (Handler),\ - NULL, 0, NULL, NULL, 0) - -//=========================================================================== -// -// pins flags -// -#define KSALLOCATOR_REQUIREMENTF_INPLACE_MODIFIER 0x00000001 -#define KSALLOCATOR_REQUIREMENTF_SYSTEM_MEMORY 0x00000002 -#define KSALLOCATOR_REQUIREMENTF_FRAME_INTEGRITY 0x00000004 -#define KSALLOCATOR_REQUIREMENTF_MUST_ALLOCATE 0x00000008 -#define KSALLOCATOR_REQUIREMENTF_PREFERENCES_ONLY 0x80000000 - -#define KSALLOCATOR_OPTIONF_COMPATIBLE 0x00000001 -#define KSALLOCATOR_OPTIONF_SYSTEM_MEMORY 0x00000002 -#define KSALLOCATOR_OPTIONF_VALID 0x00000003 -// -// pins extended framing flags -// -#define KSALLOCATOR_FLAG_PARTIAL_READ_SUPPORT 0x00000010 -#define KSALLOCATOR_FLAG_DEVICE_SPECIFIC 0x00000020 -#define KSALLOCATOR_FLAG_CAN_ALLOCATE 0x00000040 -#define KSALLOCATOR_FLAG_INSIST_ON_FRAMESIZE_RATIO 0x00000080 -// -// allocator pipes flags -// -// there is at least one data modification in a pipe -#define KSALLOCATOR_FLAG_NO_FRAME_INTEGRITY 0x00000100 -#define KSALLOCATOR_FLAG_MULTIPLE_OUTPUT 0x00000200 -#define KSALLOCATOR_FLAG_CYCLE 0x00000400 -#define KSALLOCATOR_FLAG_ALLOCATOR_EXISTS 0x00000800 -// there is no framing dependency between neighbouring pipes. -#define KSALLOCATOR_FLAG_INDEPENDENT_RANGES 0x00001000 -#define KSALLOCATOR_FLAG_ATTENTION_STEPPING 0x00002000 - - -// -// old Framing structure -// -typedef struct { - union { - ULONG OptionsFlags; // allocator options (create) - ULONG RequirementsFlags; // allocation requirements (query) - }; -#if defined(_NTDDK_) - POOL_TYPE PoolType; -#else // !_NTDDK_ - ULONG PoolType; -#endif // !_NTDDK_ - ULONG Frames; // total number of allowable outstanding frames - ULONG FrameSize; // total size of frame - ULONG FileAlignment; - ULONG Reserved; -} KSALLOCATOR_FRAMING, *PKSALLOCATOR_FRAMING; - -#if defined(_NTDDK_) -typedef -PVOID -(*PFNKSDEFAULTALLOCATE)( - IN PVOID Context - ); - -typedef -VOID -(*PFNKSDEFAULTFREE)( - IN PVOID Context, - IN PVOID Buffer - ); - -typedef -NTSTATUS -(*PFNKSINITIALIZEALLOCATOR)( - IN PVOID InitialContext, - IN PKSALLOCATOR_FRAMING AllocatorFraming, - OUT PVOID* Context - ); - -typedef -VOID -(*PFNKSDELETEALLOCATOR)( - IN PVOID Context - ); -#endif // !_NTDDK_ - -// -// new Framing structure, eventually will replace KSALLOCATOR_FRAMING. -// -typedef struct { - ULONG MinFrameSize; - ULONG MaxFrameSize; - ULONG Stepping; -} KS_FRAMING_RANGE, *PKS_FRAMING_RANGE; - - -typedef struct { - KS_FRAMING_RANGE Range; - ULONG InPlaceWeight; - ULONG NotInPlaceWeight; -} KS_FRAMING_RANGE_WEIGHTED, *PKS_FRAMING_RANGE_WEIGHTED; - - -typedef struct { - ULONG RatioNumerator; // compression/expansion ratio - ULONG RatioDenominator; - ULONG RatioConstantMargin; -} KS_COMPRESSION, *PKS_COMPRESSION; - - -// -// Memory Types and Buses are repeated in each entry. -// Easiest to use but takes a little more memory than the varsize layout Pin\Memories\Buses\Ranges. -// -typedef struct { - GUID MemoryType; - GUID BusType; - ULONG MemoryFlags; - ULONG BusFlags; - ULONG Flags; - ULONG Frames; // total number of allowable outstanding frames - ULONG FileAlignment; - ULONG MemoryTypeWeight; // this memory type Weight pin-wide - KS_FRAMING_RANGE PhysicalRange; - KS_FRAMING_RANGE_WEIGHTED FramingRange; -} KS_FRAMING_ITEM, *PKS_FRAMING_ITEM; - - -typedef struct { - ULONG CountItems; // count of FramingItem-s below. - ULONG PinFlags; - KS_COMPRESSION OutputCompression; - ULONG PinWeight; // this pin framing's Weight graph-wide - KS_FRAMING_ITEM FramingItem[1]; -} KSALLOCATOR_FRAMING_EX, *PKSALLOCATOR_FRAMING_EX; - - - -// -// define memory type GUIDs -// -#define KSMEMORY_TYPE_WILDCARD GUID_NULL -#define STATIC_KSMEMORY_TYPE_WILDCARD STATIC_GUID_NULL - -#define KSMEMORY_TYPE_DONT_CARE GUID_NULL -#define STATIC_KSMEMORY_TYPE_DONT_CARE STATIC_GUID_NULL - -#define KS_TYPE_DONT_CARE GUID_NULL -#define STATIC_KS_TYPE_DONT_CARE STATIC_GUID_NULL - -#define STATIC_KSMEMORY_TYPE_SYSTEM \ - 0x091bb638L, 0x603f, 0x11d1, 0xb0, 0x67, 0x00, 0xa0, 0xc9, 0x06, 0x28, 0x02 -DEFINE_GUIDSTRUCT("091bb638-603f-11d1-b067-00a0c9062802", KSMEMORY_TYPE_SYSTEM); -#define KSMEMORY_TYPE_SYSTEM DEFINE_GUIDNAMED(KSMEMORY_TYPE_SYSTEM) - -#define STATIC_KSMEMORY_TYPE_USER \ - 0x8cb0fc28L, 0x7893, 0x11d1, 0xb0, 0x69, 0x00, 0xa0, 0xc9, 0x06, 0x28, 0x02 -DEFINE_GUIDSTRUCT("8cb0fc28-7893-11d1-b069-00a0c9062802", KSMEMORY_TYPE_USER); -#define KSMEMORY_TYPE_USER DEFINE_GUIDNAMED(KSMEMORY_TYPE_USER) - -#define STATIC_KSMEMORY_TYPE_KERNEL_PAGED \ - 0xd833f8f8L, 0x7894, 0x11d1, 0xb0, 0x69, 0x00, 0xa0, 0xc9, 0x06, 0x28, 0x02 -DEFINE_GUIDSTRUCT("d833f8f8-7894-11d1-b069-00a0c9062802", KSMEMORY_TYPE_KERNEL_PAGED); -#define KSMEMORY_TYPE_KERNEL_PAGED DEFINE_GUIDNAMED(KSMEMORY_TYPE_KERNEL_PAGED) - -#define STATIC_KSMEMORY_TYPE_KERNEL_NONPAGED \ - 0x4a6d5fc4L, 0x7895, 0x11d1, 0xb0, 0x69, 0x00, 0xa0, 0xc9, 0x06, 0x28, 0x02 -DEFINE_GUIDSTRUCT("4a6d5fc4-7895-11d1-b069-00a0c9062802", KSMEMORY_TYPE_KERNEL_NONPAGED); -#define KSMEMORY_TYPE_KERNEL_NONPAGED DEFINE_GUIDNAMED(KSMEMORY_TYPE_KERNEL_NONPAGED) - -// old KS clients did not specify the device memory type -#define STATIC_KSMEMORY_TYPE_DEVICE_UNKNOWN \ - 0x091bb639L, 0x603f, 0x11d1, 0xb0, 0x67, 0x00, 0xa0, 0xc9, 0x06, 0x28, 0x02 -DEFINE_GUIDSTRUCT("091bb639-603f-11d1-b067-00a0c9062802", KSMEMORY_TYPE_DEVICE_UNKNOWN); -#define KSMEMORY_TYPE_DEVICE_UNKNOWN DEFINE_GUIDNAMED(KSMEMORY_TYPE_DEVICE_UNKNOWN) - -// -// Helper framing macros. -// -#define DECLARE_SIMPLE_FRAMING_EX(FramingExName, MemoryType, Flags, Frames, Alignment, MinFrameSize, MaxFrameSize) \ - const KSALLOCATOR_FRAMING_EX FramingExName = \ - {\ - 1, \ - 0, \ - {\ - 1, \ - 1, \ - 0 \ - }, \ - 0, \ - {\ - {\ - MemoryType, \ - STATIC_KS_TYPE_DONT_CARE, \ - 0, \ - 0, \ - Flags, \ - Frames, \ - Alignment, \ - 0, \ - {\ - 0, \ - (ULONG)-1, \ - 1 \ - }, \ - {\ - {\ - MinFrameSize, \ - MaxFrameSize, \ - 1 \ - }, \ - 0, \ - 0 \ - }\ - }\ - }\ - } - -#define SetDefaultKsCompression(KsCompressionPointer) \ -{\ - KsCompressionPointer->RatioNumerator = 1;\ - KsCompressionPointer->RatioDenominator = 1;\ - KsCompressionPointer->RatioConstantMargin = 0;\ -} - -#define SetDontCareKsFramingRange(KsFramingRangePointer) \ -{\ - KsFramingRangePointer->MinFrameSize = 0;\ - KsFramingRangePointer->MaxFrameSize = (ULONG) -1;\ - KsFramingRangePointer->Stepping = 1;\ -} - -#define SetKsFramingRange(KsFramingRangePointer, P_MinFrameSize, P_MaxFrameSize) \ -{\ - KsFramingRangePointer->MinFrameSize = P_MinFrameSize;\ - KsFramingRangePointer->MaxFrameSize = P_MaxFrameSize;\ - KsFramingRangePointer->Stepping = 1;\ -} - -#define SetKsFramingRangeWeighted(KsFramingRangeWeightedPointer, P_MinFrameSize, P_MaxFrameSize) \ -{\ - KS_FRAMING_RANGE *KsFramingRange = &KsFramingRangeWeightedPointer->Range;\ - SetKsFramingRange(KsFramingRange, P_MinFrameSize, P_MaxFrameSize);\ - KsFramingRangeWeightedPointer->InPlaceWeight = 0;\ - KsFramingRangeWeightedPointer->NotInPlaceWeight = 0;\ -} - -#define INITIALIZE_SIMPLE_FRAMING_EX(FramingExPointer, P_MemoryType, P_Flags, P_Frames, P_Alignment, P_MinFrameSize, P_MaxFrameSize) \ -{\ - KS_COMPRESSION *KsCompression = &FramingExPointer->OutputCompression;\ - KS_FRAMING_RANGE *KsFramingRange = &FramingExPointer->FramingItem[0].PhysicalRange;\ - KS_FRAMING_RANGE_WEIGHTED *KsFramingRangeWeighted = &FramingExPointer->FramingItem[0].FramingRange;\ - FramingExPointer->CountItems = 1;\ - FramingExPointer->PinFlags = 0;\ - SetDefaultKsCompression(KsCompression);\ - FramingExPointer->PinWeight = 0;\ - FramingExPointer->FramingItem[0].MemoryType = P_MemoryType;\ - FramingExPointer->FramingItem[0].BusType = KS_TYPE_DONT_CARE;\ - FramingExPointer->FramingItem[0].MemoryFlags = 0;\ - FramingExPointer->FramingItem[0].BusFlags = 0;\ - FramingExPointer->FramingItem[0].Flags = P_Flags;\ - FramingExPointer->FramingItem[0].Frames = P_Frames;\ - FramingExPointer->FramingItem[0].FileAlignment = P_Alignment;\ - FramingExPointer->FramingItem[0].MemoryTypeWeight = 0;\ - SetDontCareKsFramingRange(KsFramingRange);\ - SetKsFramingRangeWeighted(KsFramingRangeWeighted, P_MinFrameSize, P_MaxFrameSize);\ -} - - - -// KSEVENTSETID_StreamAllocator: {75D95571-073C-11d0-A161-0020AFD156E4} - -#define STATIC_KSEVENTSETID_StreamAllocator\ - 0x75d95571L, 0x073c, 0x11d0, 0xa1, 0x61, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4 -DEFINE_GUIDSTRUCT("75d95571-073c-11d0-a161-0020afd156e4", KSEVENTSETID_StreamAllocator); -#define KSEVENTSETID_StreamAllocator DEFINE_GUIDNAMED(KSEVENTSETID_StreamAllocator) - -typedef enum { - KSEVENT_STREAMALLOCATOR_INTERNAL_FREEFRAME, - KSEVENT_STREAMALLOCATOR_FREEFRAME -} KSEVENT_STREAMALLOCATOR; - -#define STATIC_KSMETHODSETID_StreamAllocator\ - 0xcf6e4341L, 0xec87, 0x11cf, 0xa1, 0x30, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4 -DEFINE_GUIDSTRUCT("cf6e4341-ec87-11cf-a130-0020afd156e4", KSMETHODSETID_StreamAllocator); -#define KSMETHODSETID_StreamAllocator DEFINE_GUIDNAMED(KSMETHODSETID_StreamAllocator) - -typedef enum { - KSMETHOD_STREAMALLOCATOR_ALLOC, - KSMETHOD_STREAMALLOCATOR_FREE -} KSMETHOD_STREAMALLOCATOR; - -#define DEFINE_KSMETHOD_ITEM_STREAMALLOCATOR_ALLOC(Handler)\ - DEFINE_KSMETHOD_ITEM(\ - KSMETHOD_STREAMALLOCATOR_ALLOC,\ - KSMETHOD_TYPE_WRITE,\ - (Handler),\ - sizeof(KSMETHOD),\ - sizeof(PVOID),\ - NULL) - -#define DEFINE_KSMETHOD_ITEM_STREAMALLOCATOR_FREE(Handler)\ - DEFINE_KSMETHOD_ITEM(\ - KSMETHOD_STREAMALLOCATOR_FREE,\ - KSMETHOD_TYPE_READ,\ - (Handler),\ - sizeof(KSMETHOD),\ - sizeof(PVOID),\ - NULL) - -#define DEFINE_KSMETHOD_ALLOCATORSET(AllocatorSet, MethodAlloc, MethodFree)\ -DEFINE_KSMETHOD_TABLE(AllocatorSet) {\ - DEFINE_KSMETHOD_ITEM_STREAMALLOCATOR_ALLOC(MethodAlloc),\ - DEFINE_KSMETHOD_ITEM_STREAMALLOCATOR_FREE(MethodFree)\ -} - -#define STATIC_KSPROPSETID_StreamAllocator\ - 0xcf6e4342L, 0xec87, 0x11cf, 0xa1, 0x30, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4 -DEFINE_GUIDSTRUCT("cf6e4342-ec87-11cf-a130-0020afd156e4", KSPROPSETID_StreamAllocator); -#define KSPROPSETID_StreamAllocator DEFINE_GUIDNAMED(KSPROPSETID_StreamAllocator) - -#if defined(_NTDDK_) -typedef enum { - KSPROPERTY_STREAMALLOCATOR_FUNCTIONTABLE, - KSPROPERTY_STREAMALLOCATOR_STATUS -} KSPROPERTY_STREAMALLOCATOR; - -#define DEFINE_KSPROPERTY_ITEM_STREAMALLOCATOR_FUNCTIONTABLE(Handler)\ - DEFINE_KSPROPERTY_ITEM(\ - KSPROPERTY_STREAMALLOCATOR_FUNCTIONTABLE,\ - (Handler),\ - sizeof(KSPROPERTY),\ - sizeof(KSSTREAMALLOCATOR_FUNCTIONTABLE),\ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_STREAMALLOCATOR_STATUS(Handler)\ - DEFINE_KSPROPERTY_ITEM(\ - KSPROPERTY_STREAMALLOCATOR_STATUS,\ - (Handler),\ - sizeof(KSPROPERTY),\ - sizeof(KSSTREAMALLOCATOR_STATUS),\ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ALLOCATORSET(AllocatorSet, PropFunctionTable, PropStatus)\ -DEFINE_KSPROPERTY_TABLE(AllocatorSet) {\ - DEFINE_KSPROPERTY_ITEM_STREAMALLOCATOR_STATUS(PropStatus),\ - DEFINE_KSPROPERTY_ITEM_STREAMALLOCATOR_FUNCTIONTABLE(PropFunctionTable)\ -} - -typedef -NTSTATUS -(*PFNALLOCATOR_ALLOCATEFRAME)( - IN PFILE_OBJECT FileObject, - PVOID *Frame - ); - -typedef -VOID -(*PFNALLOCATOR_FREEFRAME)( - IN PFILE_OBJECT FileObject, - IN PVOID Frame - ); - -typedef struct { - PFNALLOCATOR_ALLOCATEFRAME AllocateFrame; - PFNALLOCATOR_FREEFRAME FreeFrame; -} KSSTREAMALLOCATOR_FUNCTIONTABLE, *PKSSTREAMALLOCATOR_FUNCTIONTABLE; -#endif // defined(_NTDDK_) - -typedef struct { - KSALLOCATOR_FRAMING Framing; - ULONG AllocatedFrames; - ULONG Reserved; -} KSSTREAMALLOCATOR_STATUS, *PKSSTREAMALLOCATOR_STATUS; - -typedef struct { - KSALLOCATOR_FRAMING_EX Framing; - ULONG AllocatedFrames; - ULONG Reserved; -} KSSTREAMALLOCATOR_STATUS_EX, *PKSSTREAMALLOCATOR_STATUS_EX; - - -#define KSSTREAM_HEADER_OPTIONSF_SPLICEPOINT 0x00000001 -#define KSSTREAM_HEADER_OPTIONSF_PREROLL 0x00000002 -#define KSSTREAM_HEADER_OPTIONSF_DATADISCONTINUITY 0x00000004 -#define KSSTREAM_HEADER_OPTIONSF_TYPECHANGED 0x00000008 -#define KSSTREAM_HEADER_OPTIONSF_TIMEVALID 0x00000010 -#define KSSTREAM_HEADER_OPTIONSF_TIMEDISCONTINUITY 0x00000040 -#define KSSTREAM_HEADER_OPTIONSF_FLUSHONPAUSE 0x00000080 -#define KSSTREAM_HEADER_OPTIONSF_DURATIONVALID 0x00000100 -#define KSSTREAM_HEADER_OPTIONSF_ENDOFSTREAM 0x00000200 -#define KSSTREAM_HEADER_OPTIONSF_LOOPEDDATA 0x80000000 - -typedef struct { - LONGLONG Time; - ULONG Numerator; - ULONG Denominator; -} KSTIME, *PKSTIME; - -typedef struct { - ULONG Size; - ULONG TypeSpecificFlags; - KSTIME PresentationTime; - LONGLONG Duration; - ULONG FrameExtent; - ULONG DataUsed; - PVOID Data; - ULONG OptionsFlags; -#if _WIN64 - ULONG Reserved; -#endif -} KSSTREAM_HEADER, *PKSSTREAM_HEADER; - -#define STATIC_KSPROPSETID_StreamInterface\ - 0x1fdd8ee1L, 0x9cd3, 0x11d0, 0x82, 0xaa, 0x00, 0x00, 0xf8, 0x22, 0xfe, 0x8a -DEFINE_GUIDSTRUCT("1fdd8ee1-9cd3-11d0-82aa-0000f822fe8a", KSPROPSETID_StreamInterface); -#define KSPROPSETID_StreamInterface DEFINE_GUIDNAMED(KSPROPSETID_StreamInterface) - -typedef enum { - KSPROPERTY_STREAMINTERFACE_HEADERSIZE -} KSPROPERTY_STREAMINTERFACE; - -#define DEFINE_KSPROPERTY_ITEM_STREAMINTERFACE_HEADERSIZE( GetHandler )\ - DEFINE_KSPROPERTY_ITEM(\ - KSPROPERTY_STREAMINTERFACE_HEADERSIZE,\ - (GetHandler),\ - sizeof(KSPROPERTY),\ - sizeof(ULONG),\ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_STREAMINTERFACESET(StreamInterfaceSet,\ - HeaderSizeHandler)\ -DEFINE_KSPROPERTY_TABLE(StreamInterfaceSet) {\ - DEFINE_KSPROPERTY_ITEM_STREAMINTERFACE_HEADERSIZE( HeaderSizeHandler )\ -} - -#define STATIC_KSPROPSETID_Stream\ - 0x65aaba60L, 0x98ae, 0x11cf, 0xa1, 0x0d, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4 -DEFINE_GUIDSTRUCT("65aaba60-98ae-11cf-a10d-0020afd156e4", KSPROPSETID_Stream); -#define KSPROPSETID_Stream DEFINE_GUIDNAMED(KSPROPSETID_Stream) - -typedef enum { - KSPROPERTY_STREAM_ALLOCATOR, - KSPROPERTY_STREAM_QUALITY, - KSPROPERTY_STREAM_DEGRADATION, - KSPROPERTY_STREAM_MASTERCLOCK, - KSPROPERTY_STREAM_TIMEFORMAT, - KSPROPERTY_STREAM_PRESENTATIONTIME, - KSPROPERTY_STREAM_PRESENTATIONEXTENT, - KSPROPERTY_STREAM_FRAMETIME, - KSPROPERTY_STREAM_RATECAPABILITY, - KSPROPERTY_STREAM_RATE, - KSPROPERTY_STREAM_PIPE_ID -} KSPROPERTY_STREAM; - -#define DEFINE_KSPROPERTY_ITEM_STREAM_ALLOCATOR(GetHandler, SetHandler)\ - DEFINE_KSPROPERTY_ITEM(\ - KSPROPERTY_STREAM_ALLOCATOR,\ - (GetHandler),\ - sizeof(KSPROPERTY),\ - sizeof(HANDLE),\ - (SetHandler),\ - NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_STREAM_QUALITY(Handler)\ - DEFINE_KSPROPERTY_ITEM(\ - KSPROPERTY_STREAM_QUALITY,\ - (Handler),\ - sizeof(KSPROPERTY),\ - sizeof(KSQUALITY_MANAGER),\ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_STREAM_DEGRADATION(GetHandler, SetHandler)\ - DEFINE_KSPROPERTY_ITEM(\ - KSPROPERTY_STREAM_DEGRADATION,\ - (GetHandler),\ - sizeof(KSPROPERTY),\ - 0,\ - (SetHandler),\ - NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_STREAM_MASTERCLOCK(GetHandler, SetHandler)\ - DEFINE_KSPROPERTY_ITEM(\ - KSPROPERTY_STREAM_MASTERCLOCK,\ - (GetHandler),\ - sizeof(KSPROPERTY),\ - sizeof(HANDLE),\ - (SetHandler),\ - NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_STREAM_TIMEFORMAT(Handler)\ - DEFINE_KSPROPERTY_ITEM(\ - KSPROPERTY_STREAM_TIMEFORMAT,\ - (Handler),\ - sizeof(KSPROPERTY),\ - sizeof(GUID),\ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_STREAM_PRESENTATIONTIME(GetHandler, SetHandler)\ - DEFINE_KSPROPERTY_ITEM(\ - KSPROPERTY_STREAM_PRESENTATIONTIME,\ - (GetHandler),\ - sizeof(KSPROPERTY),\ - sizeof(KSTIME),\ - (SetHandler),\ - NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_STREAM_PRESENTATIONEXTENT(Handler)\ - DEFINE_KSPROPERTY_ITEM(\ - KSPROPERTY_STREAM_PRESENTATIONEXTENT,\ - (Handler),\ - sizeof(KSPROPERTY),\ - sizeof(LONGLONG),\ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_STREAM_FRAMETIME(Handler)\ - DEFINE_KSPROPERTY_ITEM(\ - KSPROPERTY_STREAM_FRAMETIME,\ - (Handler),\ - sizeof(KSPROPERTY),\ - sizeof(KSFRAMETIME),\ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_STREAM_RATECAPABILITY(Handler)\ - DEFINE_KSPROPERTY_ITEM(\ - KSPROPERTY_STREAM_RATECAPABILITY,\ - (Handler),\ - sizeof(KSRATE_CAPABILITY),\ - sizeof(KSRATE),\ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_STREAM_RATE(GetHandler, SetHandler)\ - DEFINE_KSPROPERTY_ITEM(\ - KSPROPERTY_STREAM_RATE,\ - (GetHandler),\ - sizeof(KSPROPERTY),\ - sizeof(KSRATE),\ - (SetHandler),\ - NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_STREAM_PIPE_ID(GetHandler, SetHandler)\ - DEFINE_KSPROPERTY_ITEM(\ - KSPROPERTY_STREAM_PIPE_ID,\ - (GetHandler),\ - sizeof(KSPROPERTY),\ - sizeof(HANDLE),\ - (SetHandler),\ - NULL, 0, NULL, NULL, 0) - -typedef struct { - HANDLE QualityManager; - PVOID Context; -} KSQUALITY_MANAGER, *PKSQUALITY_MANAGER; - -typedef struct { - LONGLONG Duration; - ULONG FrameFlags; - ULONG Reserved; -} KSFRAMETIME, *PKSFRAMETIME; - -#define KSFRAMETIME_VARIABLESIZE 0x00000001 - -typedef struct { - LONGLONG PresentationStart; - LONGLONG Duration; - KSPIN_INTERFACE Interface; - LONG Rate; - ULONG Flags; -} KSRATE, *PKSRATE; - -#define KSRATE_NOPRESENTATIONSTART 0x00000001 -#define KSRATE_NOPRESENTATIONDURATION 0x00000002 - -typedef struct { - KSPROPERTY Property; - KSRATE Rate; -} KSRATE_CAPABILITY, *PKSRATE_CAPABILITY; - -#define STATIC_KSPROPSETID_Clock \ - 0xDF12A4C0L, 0xAC17, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 -DEFINE_GUIDSTRUCT("DF12A4C0-AC17-11CF-A5D6-28DB04C10000", KSPROPSETID_Clock); -#define KSPROPSETID_Clock DEFINE_GUIDNAMED(KSPROPSETID_Clock) - -// -// Performs a x*y/z operation on 64 bit quantities by splitting the operation. The equation -// is simplified with respect to adding in the remainder for the upper 32 bits. -// -// (xh * 10000000 / Frequency) * 2^32 + ((((xh * 10000000) % Frequency) * 2^32 + (xl * 10000000)) / Frequency) -// -#define NANOSECONDS 10000000 -#define KSCONVERT_PERFORMANCE_TIME(Frequency, PerformanceTime) \ - ((((ULONGLONG)(ULONG)(PerformanceTime).HighPart * NANOSECONDS / (Frequency)) << 32) + \ - ((((((ULONGLONG)(ULONG)(PerformanceTime).HighPart * NANOSECONDS) % (Frequency)) << 32) + \ - ((ULONGLONG)(PerformanceTime).LowPart * NANOSECONDS)) / (Frequency))) - -typedef struct { - ULONG CreateFlags; -} KSCLOCK_CREATE, *PKSCLOCK_CREATE; - -typedef struct { - LONGLONG Time; - LONGLONG SystemTime; -} KSCORRELATED_TIME, *PKSCORRELATED_TIME; - -typedef struct { - LONGLONG Granularity; - LONGLONG Error; -} KSRESOLUTION, *PKSRESOLUTION; - -typedef enum { - KSPROPERTY_CLOCK_TIME, - KSPROPERTY_CLOCK_PHYSICALTIME, - KSPROPERTY_CLOCK_CORRELATEDTIME, - KSPROPERTY_CLOCK_CORRELATEDPHYSICALTIME, - KSPROPERTY_CLOCK_RESOLUTION, - KSPROPERTY_CLOCK_STATE, -#if defined(_NTDDK_) - KSPROPERTY_CLOCK_FUNCTIONTABLE -#endif // defined(_NTDDK_) -} KSPROPERTY_CLOCK; - -#if defined(_NTDDK_) - -typedef -LONGLONG -(FASTCALL *PFNKSCLOCK_GETTIME)( - IN PFILE_OBJECT FileObject - ); -typedef -LONGLONG -(FASTCALL *PFNKSCLOCK_CORRELATEDTIME)( - IN PFILE_OBJECT FileObject, - OUT PLONGLONG SystemTime); - -typedef struct { - PFNKSCLOCK_GETTIME GetTime; - PFNKSCLOCK_GETTIME GetPhysicalTime; - PFNKSCLOCK_CORRELATEDTIME GetCorrelatedTime; - PFNKSCLOCK_CORRELATEDTIME GetCorrelatedPhysicalTime; -} KSCLOCK_FUNCTIONTABLE, *PKSCLOCK_FUNCTIONTABLE; - -typedef -BOOLEAN -(*PFNKSSETTIMER)( - IN PVOID Context, - IN PKTIMER Timer, - IN LARGE_INTEGER DueTime, - IN PKDPC Dpc - ); - -typedef -BOOLEAN -(*PFNKSCANCELTIMER)( - IN PVOID Context, - IN PKTIMER Timer - ); - -typedef -LONGLONG -(FASTCALL *PFNKSCORRELATEDTIME)( - IN PVOID Context, - OUT PLONGLONG SystemTime); - -typedef PVOID PKSDEFAULTCLOCK; - -#define DEFINE_KSPROPERTY_ITEM_CLOCK_TIME(Handler)\ - DEFINE_KSPROPERTY_ITEM(\ - KSPROPERTY_CLOCK_TIME,\ - (Handler),\ - sizeof(KSPROPERTY),\ - sizeof(LONGLONG),\ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_CLOCK_PHYSICALTIME(Handler)\ - DEFINE_KSPROPERTY_ITEM(\ - KSPROPERTY_CLOCK_PHYSICALTIME,\ - (Handler),\ - sizeof(KSPROPERTY),\ - sizeof(LONGLONG),\ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_CLOCK_CORRELATEDTIME(Handler)\ - DEFINE_KSPROPERTY_ITEM(\ - KSPROPERTY_CLOCK_CORRELATEDTIME,\ - (Handler),\ - sizeof(KSPROPERTY),\ - sizeof(KSCORRELATED_TIME),\ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_CLOCK_CORRELATEDPHYSICALTIME(Handler)\ - DEFINE_KSPROPERTY_ITEM(\ - KSPROPERTY_CLOCK_CORRELATEDPHYSICALTIME,\ - (Handler),\ - sizeof(KSPROPERTY),\ - sizeof(KSCORRELATED_TIME),\ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_CLOCK_RESOLUTION(Handler)\ - DEFINE_KSPROPERTY_ITEM(\ - KSPROPERTY_CLOCK_RESOLUTION,\ - (Handler),\ - sizeof(KSPROPERTY),\ - sizeof(KSRESOLUTION),\ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_CLOCK_STATE(Handler)\ - DEFINE_KSPROPERTY_ITEM(\ - KSPROPERTY_CLOCK_STATE,\ - (Handler),\ - sizeof(KSPROPERTY),\ - sizeof(KSSTATE),\ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_CLOCK_FUNCTIONTABLE(Handler)\ - DEFINE_KSPROPERTY_ITEM(\ - KSPROPERTY_CLOCK_FUNCTIONTABLE,\ - (Handler),\ - sizeof(KSPROPERTY),\ - sizeof(KSCLOCK_FUNCTIONTABLE),\ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_CLOCKSET(ClockSet,\ - PropTime, PropPhysicalTime,\ - PropCorrelatedTime, PropCorrelatedPhysicalTime,\ - PropResolution, PropState, PropFunctionTable)\ -DEFINE_KSPROPERTY_TABLE(ClockSet) {\ - DEFINE_KSPROPERTY_ITEM_CLOCK_TIME(PropTime),\ - DEFINE_KSPROPERTY_ITEM_CLOCK_PHYSICALTIME(PropPhysicalTime),\ - DEFINE_KSPROPERTY_ITEM_CLOCK_CORRELATEDTIME(PropCorrelatedTime),\ - DEFINE_KSPROPERTY_ITEM_CLOCK_CORRELATEDPHYSICALTIME(PropCorrelatedPhysicalTime),\ - DEFINE_KSPROPERTY_ITEM_CLOCK_RESOLUTION(PropResolution),\ - DEFINE_KSPROPERTY_ITEM_CLOCK_STATE(PropState),\ - DEFINE_KSPROPERTY_ITEM_CLOCK_FUNCTIONTABLE(PropFunctionTable),\ -} - -#endif // defined(_NTDDK_) - -#define STATIC_KSEVENTSETID_Clock \ - 0x364D8E20L, 0x62C7, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 -DEFINE_GUIDSTRUCT("364D8E20-62C7-11CF-A5D6-28DB04C10000", KSEVENTSETID_Clock); -#define KSEVENTSETID_Clock DEFINE_GUIDNAMED(KSEVENTSETID_Clock) - -typedef enum { - KSEVENT_CLOCK_INTERVAL_MARK, - KSEVENT_CLOCK_POSITION_MARK -} KSEVENT_CLOCK_POSITION; - -#define STATIC_KSEVENTSETID_Connection\ - 0x7f4bcbe0L, 0x9ea5, 0x11cf, 0xa5, 0xd6, 0x28, 0xdb, 0x04, 0xc1, 0x00, 0x00 -DEFINE_GUIDSTRUCT("7f4bcbe0-9ea5-11cf-a5d6-28db04c10000", KSEVENTSETID_Connection); -#define KSEVENTSETID_Connection DEFINE_GUIDNAMED(KSEVENTSETID_Connection) - -typedef enum { - KSEVENT_CONNECTION_POSITIONUPDATE, - KSEVENT_CONNECTION_DATADISCONTINUITY, - KSEVENT_CONNECTION_TIMEDISCONTINUITY, - KSEVENT_CONNECTION_PRIORITY, - KSEVENT_CONNECTION_ENDOFSTREAM -} KSEVENT_CONNECTION; - -typedef struct { - PVOID Context; - ULONG Proportion; - LONGLONG DeltaTime; -} KSQUALITY, *PKSQUALITY; - -typedef struct { - PVOID Context; - ULONG Status; -} KSERROR, *PKSERROR; - -typedef KSIDENTIFIER KSDEGRADE, *PKSDEGRADE; - -#define STATIC_KSDEGRADESETID_Standard\ - 0x9F564180L, 0x704C, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 -DEFINE_GUIDSTRUCT("9F564180-704C-11D0-A5D6-28DB04C10000", KSDEGRADESETID_Standard); -#define KSDEGRADESETID_Standard DEFINE_GUIDNAMED(KSDEGRADESETID_Standard) - -typedef enum { - KSDEGRADE_STANDARD_SAMPLE, - KSDEGRADE_STANDARD_QUALITY, - KSDEGRADE_STANDARD_COMPUTATION, - KSDEGRADE_STANDARD_SKIP -} KSDEGRADE_STANDARD; - -#if defined(_NTDDK_) - -#define KSPROBE_STREAMREAD 0x00000000 -#define KSPROBE_STREAMWRITE 0x00000001 -#define KSPROBE_ALLOCATEMDL 0x00000010 -#define KSPROBE_PROBEANDLOCK 0x00000020 -#define KSPROBE_SYSTEMADDRESS 0x00000040 -#define KSPROBE_MODIFY 0x00000200 -#define KSPROBE_STREAMWRITEMODIFY (KSPROBE_MODIFY | KSPROBE_STREAMWRITE) -#define KSPROBE_ALLOWFORMATCHANGE 0x00000080 - -#define KSSTREAM_READ KSPROBE_STREAMREAD -#define KSSTREAM_WRITE KSPROBE_STREAMWRITE -#define KSSTREAM_PAGED_DATA 0x00000000 -#define KSSTREAM_NONPAGED_DATA 0x00000100 -#define KSSTREAM_SYNCHRONOUS 0x00001000 -#define KSSTREAM_FAILUREEXCEPTION 0x00002000 - -typedef -NTSTATUS -(*PFNKSCONTEXT_DISPATCH)( - IN PVOID Context, - IN PIRP Irp - ); - -typedef -NTSTATUS -(*PFNKSHANDLER)( - IN PIRP Irp, - IN PKSIDENTIFIER Request, - IN OUT PVOID Data - ); - -typedef -BOOLEAN -(*PFNKSFASTHANDLER)( - IN PFILE_OBJECT FileObject, - IN PKSIDENTIFIER Request, - IN ULONG RequestLength, - IN OUT PVOID Data, - IN ULONG DataLength, - OUT PIO_STATUS_BLOCK IoStatus - ); - -typedef -NTSTATUS -(*PFNKSALLOCATOR)( - IN PIRP Irp, - IN ULONG BufferSize, - IN BOOLEAN InputOperation - ); - -typedef struct { - KSPROPERTY_MEMBERSHEADER MembersHeader; - const VOID* Members; -} KSPROPERTY_MEMBERSLIST, *PKSPROPERTY_MEMBERSLIST; - -typedef struct { - KSIDENTIFIER PropTypeSet; - ULONG MembersListCount; - const KSPROPERTY_MEMBERSLIST* MembersList; -} KSPROPERTY_VALUES, *PKSPROPERTY_VALUES; - -#define DEFINE_KSPROPERTY_TABLE(tablename)\ - const KSPROPERTY_ITEM tablename[] = - -#define DEFINE_KSPROPERTY_ITEM(PropertyId, GetHandler,\ - MinProperty,\ - MinData,\ - SetHandler,\ - Values, RelationsCount, Relations, SupportHandler,\ - SerializedSize)\ -{\ - PropertyId, (PFNKSHANDLER)GetHandler, MinProperty, MinData,\ - (PFNKSHANDLER)SetHandler,\ - (PKSPROPERTY_VALUES)Values, RelationsCount, (PKSPROPERTY)Relations,\ - (PFNKSHANDLER)SupportHandler, (ULONG)SerializedSize\ -} - -typedef struct { - ULONG PropertyId; - union { - PFNKSHANDLER GetPropertyHandler; - BOOLEAN GetSupported; - }; - ULONG MinProperty; - ULONG MinData; - union { - PFNKSHANDLER SetPropertyHandler; - BOOLEAN SetSupported; - }; - const KSPROPERTY_VALUES*Values; - ULONG RelationsCount; - const KSPROPERTY* Relations; - PFNKSHANDLER SupportHandler; - ULONG SerializedSize; -} KSPROPERTY_ITEM, *PKSPROPERTY_ITEM; - -#define DEFINE_KSFASTPROPERTY_ITEM(PropertyId, GetHandler, SetHandler)\ -{\ - PropertyId, (PFNKSFASTHANDLER)GetHandler, (PFNKSFASTHANDLER)SetHandler, 0\ -} - -typedef struct { - ULONG PropertyId; - union { - PFNKSFASTHANDLER GetPropertyHandler; - BOOLEAN GetSupported; - }; - union { - PFNKSFASTHANDLER SetPropertyHandler; - BOOLEAN SetSupported; - }; - ULONG Reserved; -} KSFASTPROPERTY_ITEM, *PKSFASTPROPERTY_ITEM; - -#define DEFINE_KSPROPERTY_SET(Set,\ - PropertiesCount,\ - PropertyItem,\ - FastIoCount,\ - FastIoTable)\ -{\ - Set,\ - PropertiesCount,\ - PropertyItem,\ - FastIoCount,\ - FastIoTable\ -} - -#define DEFINE_KSPROPERTY_SET_TABLE(tablename)\ - const KSPROPERTY_SET tablename[] = - -typedef struct { - const GUID* Set; - ULONG PropertiesCount; - const KSPROPERTY_ITEM* PropertyItem; - ULONG FastIoCount; - const KSFASTPROPERTY_ITEM* FastIoTable; -} KSPROPERTY_SET, *PKSPROPERTY_SET; - -#define DEFINE_KSMETHOD_TABLE(tablename)\ - const KSMETHOD_ITEM tablename[] = - -#define DEFINE_KSMETHOD_ITEM(MethodId, Flags,\ - MethodHandler,\ - MinMethod, MinData, SupportHandler)\ -{\ - MethodId, (PFNKSHANDLER)MethodHandler, MinMethod, MinData,\ - SupportHandler, Flags\ -} - -typedef struct { - ULONG MethodId; - union { - PFNKSHANDLER MethodHandler; - BOOLEAN MethodSupported; - }; - ULONG MinMethod; - ULONG MinData; - PFNKSHANDLER SupportHandler; - ULONG Flags; -} KSMETHOD_ITEM, *PKSMETHOD_ITEM; - -#define DEFINE_KSFASTMETHOD_ITEM(MethodId, MethodHandler)\ -{\ - MethodId, (PFNKSFASTHANDLER)MethodHandler\ -} - -typedef struct { - ULONG MethodId; - union { - PFNKSFASTHANDLER MethodHandler; - BOOLEAN MethodSupported; - }; -} KSFASTMETHOD_ITEM, *PKSFASTMETHOD_ITEM; - -#define DEFINE_KSMETHOD_SET(Set,\ - MethodsCount,\ - MethodItem,\ - FastIoCount,\ - FastIoTable)\ -{\ - Set,\ - MethodsCount,\ - MethodItem,\ - FastIoCount,\ - FastIoTable\ -} - -#define DEFINE_KSMETHOD_SET_TABLE(tablename)\ - const KSMETHOD_SET tablename[] = - -typedef struct { - const GUID* Set; - ULONG MethodsCount; - const KSMETHOD_ITEM* MethodItem; - ULONG FastIoCount; - const KSFASTMETHOD_ITEM*FastIoTable; -} KSMETHOD_SET, *PKSMETHOD_SET; - -typedef struct _KSEVENT_ENTRY -KSEVENT_ENTRY, *PKSEVENT_ENTRY; - -typedef -NTSTATUS -(*PFNKSADDEVENT)( - IN PIRP Irp, - IN PKSEVENTDATA EventData, - IN struct _KSEVENT_ENTRY* EventEntry - ); - -typedef -VOID -(*PFNKSREMOVEEVENT)( - IN PFILE_OBJECT FileObject, - IN struct _KSEVENT_ENTRY* EventEntry - ); - -#define DEFINE_KSEVENT_TABLE(tablename)\ - const KSEVENT_ITEM tablename[] = - -#define DEFINE_KSEVENT_ITEM(EventId, DataInput, ExtraEntryData,\ - AddHandler, RemoveHandler, SupportHandler)\ -{\ - EventId,\ - DataInput,\ - ExtraEntryData,\ - AddHandler,\ - RemoveHandler,\ - SupportHandler\ -} - -typedef struct { - ULONG EventId; - ULONG DataInput; - ULONG ExtraEntryData; - PFNKSADDEVENT AddHandler; - PFNKSREMOVEEVENT RemoveHandler; - PFNKSHANDLER SupportHandler; -} KSEVENT_ITEM, *PKSEVENT_ITEM; - -#define DEFINE_KSEVENT_SET(Set,\ - EventsCount,\ - EventItem)\ -{\ - Set, EventsCount, EventItem\ -} - -#define DEFINE_KSEVENT_SET_TABLE(tablename)\ - const KSEVENT_SET tablename[] = - -typedef struct { - const GUID* Set; - ULONG EventsCount; - const KSEVENT_ITEM* EventItem; -} KSEVENT_SET, *PKSEVENT_SET; - -typedef struct { - KDPC Dpc; - ULONG ReferenceCount; - KSPIN_LOCK AccessLock; -} KSDPC_ITEM, *PKSDPC_ITEM; - -typedef struct { - KSDPC_ITEM DpcItem; - LIST_ENTRY BufferList; -} KSBUFFER_ITEM, *PKSBUFFER_ITEM; - -#define KSEVENT_ENTRY_DELETED 1 -#define KSEVENT_ENTRY_ONESHOT 2 -#define KSEVENT_ENTRY_BUFFERED 4 - -struct _KSEVENT_ENTRY { - LIST_ENTRY ListEntry; - PVOID Object; - union { - PKSDPC_ITEM DpcItem; - PKSBUFFER_ITEM BufferItem; - }; - PKSEVENTDATA EventData; - ULONG NotificationType; - const KSEVENT_SET* EventSet; - const KSEVENT_ITEM* EventItem; - PFILE_OBJECT FileObject; - ULONG SemaphoreAdjustment; - ULONG Reserved; - ULONG Flags; -}; - -typedef enum { - KSEVENTS_NONE, - KSEVENTS_SPINLOCK, - KSEVENTS_MUTEX, - KSEVENTS_FMUTEX, - KSEVENTS_FMUTEXUNSAFE, - KSEVENTS_INTERRUPT, - KSEVENTS_ERESOURCE -} KSEVENTS_LOCKTYPE; - -#define KSDISPATCH_FASTIO 0x80000000 - -typedef struct { - PDRIVER_DISPATCH Create; - PVOID Context; - UNICODE_STRING ObjectClass; - PSECURITY_DESCRIPTOR SecurityDescriptor; - ULONG Flags; -} KSOBJECT_CREATE_ITEM, *PKSOBJECT_CREATE_ITEM; - -typedef -VOID -(*PFNKSITEMFREECALLBACK)( - IN PKSOBJECT_CREATE_ITEM CreateItem - ); - -#define KSCREATE_ITEM_SECURITYCHANGED 0x00000001 -#define KSCREATE_ITEM_WILDCARD 0x00000002 -#define KSCREATE_ITEM_NOPARAMETERS 0x00000004 -#define KSCREATE_ITEM_FREEONSTOP 0x00000008 - -#define DEFINE_KSCREATE_DISPATCH_TABLE( tablename )\ - KSOBJECT_CREATE_ITEM tablename[] = - -#define DEFINE_KSCREATE_ITEM(DispatchCreate, TypeName, Context)\ -{\ - (DispatchCreate),\ - (PVOID)(Context),\ - {\ - sizeof(TypeName) - sizeof(UNICODE_NULL),\ - sizeof(TypeName),\ - (PWCHAR)(TypeName)\ - },\ - NULL, 0\ -} - -#define DEFINE_KSCREATE_ITEMEX(DispatchCreate, TypeName, Context, Flags)\ -{\ - (DispatchCreate),\ - (PVOID)(Context),\ - {\ - sizeof(TypeName) - sizeof(UNICODE_NULL),\ - sizeof(TypeName),\ - (PWCHAR)(TypeName)\ - },\ - NULL, (Flags)\ -} - -#define DEFINE_KSCREATE_ITEMNULL( DispatchCreate, Context )\ -{\ - DispatchCreate,\ - Context,\ - {\ - 0,\ - 0,\ - NULL,\ - },\ - NULL, 0\ -} - -typedef struct { - ULONG CreateItemsCount; - PKSOBJECT_CREATE_ITEM CreateItemsList; -} KSOBJECT_CREATE, *PKSOBJECT_CREATE; - -typedef struct { - PDRIVER_DISPATCH DeviceIoControl; - PDRIVER_DISPATCH Read; - PDRIVER_DISPATCH Write; - PDRIVER_DISPATCH Flush; - PDRIVER_DISPATCH Close; - PDRIVER_DISPATCH QuerySecurity; - PDRIVER_DISPATCH SetSecurity; - PFAST_IO_DEVICE_CONTROL FastDeviceIoControl; - PFAST_IO_READ FastRead; - PFAST_IO_WRITE FastWrite; -} KSDISPATCH_TABLE, *PKSDISPATCH_TABLE; - -#define DEFINE_KSDISPATCH_TABLE( tablename, DeviceIoControl, Read, Write,\ - Flush, Close, QuerySecurity, SetSecurity,\ - FastDeviceIoControl, FastRead, FastWrite )\ - const KSDISPATCH_TABLE tablename = \ - {\ - DeviceIoControl, \ - Read, \ - Write, \ - Flush, \ - Close, \ - QuerySecurity, \ - SetSecurity, \ - FastDeviceIoControl, \ - FastRead, \ - FastWrite, \ - } - -#define KSCREATE_ITEM_IRP_STORAGE(Irp) (*(PKSOBJECT_CREATE_ITEM*)&(Irp)->Tail.Overlay.DriverContext[0]) -#define KSEVENT_SET_IRP_STORAGE(Irp) (*(const KSEVENT_SET**)&(Irp)->Tail.Overlay.DriverContext[0]) -#define KSEVENT_ITEM_IRP_STORAGE(Irp) (*(const KSEVENT_ITEM**)&(Irp)->Tail.Overlay.DriverContext[3]) -#define KSEVENT_ENTRY_IRP_STORAGE(Irp) (*(PKSEVENT_ENTRY*)&(Irp)->Tail.Overlay.DriverContext[0]) -#define KSMETHOD_SET_IRP_STORAGE(Irp) (*(const KSMETHOD_SET**)&(Irp)->Tail.Overlay.DriverContext[0]) -#define KSMETHOD_ITEM_IRP_STORAGE(Irp) (*(const KSMETHOD_ITEM**)&(Irp)->Tail.Overlay.DriverContext[3]) -#define KSMETHOD_TYPE_IRP_STORAGE(Irp) (*(ULONG_PTR*)(&(Irp)->Tail.Overlay.DriverContext[2])) -#define KSQUEUE_SPINLOCK_IRP_STORAGE(Irp) (*(PKSPIN_LOCK*)&(Irp)->Tail.Overlay.DriverContext[1]) -#define KSPROPERTY_SET_IRP_STORAGE(Irp) (*(const KSPROPERTY_SET**)&(Irp)->Tail.Overlay.DriverContext[0]) -#define KSPROPERTY_ITEM_IRP_STORAGE(Irp) (*(const KSPROPERTY_ITEM**)&(Irp)->Tail.Overlay.DriverContext[3]) -#define KSPROPERTY_ATTRIBUTES_IRP_STORAGE(Irp) (*(PKSATTRIBUTE_LIST*)&(Irp)->Tail.Overlay.DriverContext[2]) - -typedef PVOID KSDEVICE_HEADER, KSOBJECT_HEADER; - -typedef enum { - KsInvokeOnSuccess = 1, - KsInvokeOnError = 2, - KsInvokeOnCancel = 4 -} KSCOMPLETION_INVOCATION; - -typedef enum { - KsListEntryTail, - KsListEntryHead -} KSLIST_ENTRY_LOCATION; - -typedef enum { - KsAcquireOnly, - KsAcquireAndRemove, - KsAcquireOnlySingleItem, - KsAcquireAndRemoveOnlySingleItem -} KSIRP_REMOVAL_OPERATION; - -typedef enum { - KsStackCopyToNewLocation, - KsStackReuseCurrentLocation, - KsStackUseNewLocation -} KSSTACK_USE; - -typedef enum { - KSTARGET_STATE_DISABLED, - KSTARGET_STATE_ENABLED -} KSTARGET_STATE; - -typedef -NTSTATUS -(*PFNKSIRPLISTCALLBACK)( - IN PIRP Irp, - IN PVOID Context - ); - -typedef -VOID -(*PFNREFERENCEDEVICEOBJECT)( - IN PVOID Context - ); - -typedef -VOID -(*PFNDEREFERENCEDEVICEOBJECT)( - IN PVOID Context - ); - -typedef -NTSTATUS -(*PFNQUERYREFERENCESTRING)( - IN PVOID Context, - IN OUT PWCHAR *String - ); - -#define BUS_INTERFACE_REFERENCE_VERSION 0x100 - -typedef struct { - // - // Standard interface header - // - - INTERFACE Interface; - - // - // Standard bus interfaces - // - - PFNREFERENCEDEVICEOBJECT ReferenceDeviceObject; - PFNDEREFERENCEDEVICEOBJECT DereferenceDeviceObject; - PFNQUERYREFERENCESTRING QueryReferenceString; - -} BUS_INTERFACE_REFERENCE, *PBUS_INTERFACE_REFERENCE; - -#define STATIC_REFERENCE_BUS_INTERFACE STATIC_KSMEDIUMSETID_Standard -#define REFERENCE_BUS_INTERFACE KSMEDIUMSETID_Standard - -typedef -NTSTATUS -(*PFNQUERYMEDIUMSLIST)( - IN PVOID Context, - OUT ULONG* MediumsCount, - OUT PKSPIN_MEDIUM* MediumList - ); - -typedef struct { - // - // Standard interface header - // - - INTERFACE Interface; - - // - // Interface definition - // - - PFNQUERYMEDIUMSLIST QueryMediumsList; - -} BUS_INTERFACE_MEDIUMS, *PBUS_INTERFACE_MEDIUMS; - -#define STATIC_GUID_BUS_INTERFACE_MEDIUMS \ - 0x4EC35C3EL, 0x201B, 0x11D2, 0x87, 0x45, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 -DEFINE_GUIDSTRUCT("4EC35C3E-201B-11D2-8745-00A0C9223196", GUID_BUS_INTERFACE_MEDIUMS); -#define GUID_BUS_INTERFACE_MEDIUMS DEFINE_GUIDNAMED(GUID_BUS_INTERFACE_MEDIUMS) - -#endif // defined(_NTDDK_) - -#if !defined( PACK_PRAGMAS_NOT_SUPPORTED ) -#include -#endif - -typedef struct { - GUID PropertySet; - ULONG Count; -} KSPROPERTY_SERIALHDR, *PKSPROPERTY_SERIALHDR; - -#if !defined( PACK_PRAGMAS_NOT_SUPPORTED ) -#include -#endif - -typedef struct { - KSIDENTIFIER PropTypeSet; - ULONG Id; - ULONG PropertyLength; -} KSPROPERTY_SERIAL, *PKSPROPERTY_SERIAL; - -#if defined(_NTDDK_) - -#define IOCTL_KS_HANDSHAKE CTL_CODE(FILE_DEVICE_KS, 0x007, METHOD_NEITHER, FILE_ANY_ACCESS) - -typedef struct { - GUID ProtocolId; - PVOID Argument1; - PVOID Argument2; -} KSHANDSHAKE, *PKSHANDSHAKE; - -typedef struct _KSGATE -KSGATE, *PKSGATE; - -struct _KSGATE { - LONG Count; - PKSGATE NextGate; -}; - -#ifndef _NTOS_ - -void __inline -KsGateTurnInputOn( - IN PKSGATE Gate OPTIONAL - ) -{ - while (Gate && (InterlockedIncrement(&Gate->Count) == 1)) { - Gate = Gate->NextGate; - } -} - -void __inline -KsGateTurnInputOff( - IN PKSGATE Gate OPTIONAL - ) -{ - while (Gate && (InterlockedDecrement(&Gate->Count) == 0)) { - Gate = Gate->NextGate; - } -} - -BOOLEAN __inline -KsGateGetStateUnsafe( - IN PKSGATE Gate - ) -{ - ASSERT(Gate); - return((BOOLEAN)(Gate->Count > 0)); -} - -BOOLEAN __inline -KsGateCaptureThreshold( - IN PKSGATE Gate - ) -{ - BOOLEAN captured; - - ASSERT(Gate); - - captured = (BOOLEAN)(InterlockedCompareExchange(&Gate->Count,0,1) == 1); - - // - // If we made a transition, it must be propagated. - // - if (captured) { - KsGateTurnInputOff(Gate->NextGate); - } - - // - // We return whatever the state was prior to the compare/exchange. If - // the state was on, the state is now off. - // - return captured; -} - -void __inline -KsGateInitialize( - IN PKSGATE Gate, - IN LONG InitialCount, - IN PKSGATE NextGate OPTIONAL, - IN BOOLEAN StateToPropagate // IN BOOLEAN NextGateIsAnOrGate - ) -{ - ASSERT(Gate); - Gate->Count = InitialCount; - Gate->NextGate = NextGate; - - if (NextGate) { - if (InitialCount > 0) { - if (StateToPropagate) { - KsGateTurnInputOn(NextGate); - } - } else { - if (! StateToPropagate) { - KsGateTurnInputOff(NextGate); - } - } - } -} - -void __inline -KsGateInitializeAnd( - IN PKSGATE AndGate, - IN PKSGATE NextOrGate OPTIONAL - ) -{ - KsGateInitialize(AndGate,1,NextOrGate,TRUE); -} - -void __inline -KsGateInitializeOr( - IN PKSGATE OrGate, - IN PKSGATE NextAndGate OPTIONAL - ) -{ - KsGateInitialize(OrGate,0,NextAndGate,FALSE); -} - -void __inline KsGateAddOnInputToAnd(IN PKSGATE AndGate) { UNREFERENCED_PARAMETER (AndGate); } -void __inline KsGateAddOffInputToAnd(IN PKSGATE AndGate) { KsGateTurnInputOff(AndGate); } -void __inline KsGateRemoveOnInputFromAnd(IN PKSGATE AndGate) { UNREFERENCED_PARAMETER (AndGate); } -void __inline KsGateRemoveOffInputFromAnd(IN PKSGATE AndGate) { KsGateTurnInputOn(AndGate); } - -void __inline KsGateAddOnInputToOr(IN PKSGATE OrGate) { KsGateTurnInputOn(OrGate); } -void __inline KsGateAddOffInputToOr(IN PKSGATE OrGate) { UNREFERENCED_PARAMETER (OrGate); } -void __inline KsGateRemoveOnInputFromOr(IN PKSGATE OrGate) { KsGateTurnInputOff(OrGate); } -void __inline KsGateRemoveOffInputFromOr(IN PKSGATE OrGate) { UNREFERENCED_PARAMETER (OrGate); } - -void __inline -KsGateTerminateAnd( - IN PKSGATE AndGate - ) -{ - ASSERT(AndGate); - if (KsGateGetStateUnsafe(AndGate)) { - KsGateRemoveOnInputFromOr(AndGate->NextGate); - } else { - KsGateRemoveOffInputFromOr(AndGate->NextGate); - } -} - -void __inline -KsGateTerminateOr( - IN PKSGATE OrGate - ) -{ - ASSERT(OrGate); - if (KsGateGetStateUnsafe(OrGate)) { - KsGateRemoveOnInputFromAnd(OrGate->NextGate); - } else { - KsGateRemoveOffInputFromAnd(OrGate->NextGate); - } -} - -#endif // !_NTOS_ - -typedef PVOID KSOBJECT_BAG; - -typedef -BOOLEAN -(*PFNKSGENERATEEVENTCALLBACK)( - IN PVOID Context, - IN PKSEVENT_ENTRY EventEntry - ); - -typedef -NTSTATUS -(*PFNKSDEVICECREATE)( - IN PKSDEVICE Device - ); -typedef -NTSTATUS -(*PFNKSDEVICEPNPSTART)( - IN PKSDEVICE Device, - IN PIRP Irp, - IN PCM_RESOURCE_LIST TranslatedResourceList OPTIONAL, - IN PCM_RESOURCE_LIST UntranslatedResourceList OPTIONAL - ); -typedef -NTSTATUS -(*PFNKSDEVICE)( - IN PKSDEVICE Device - ); -typedef -NTSTATUS -(*PFNKSDEVICEIRP)( - IN PKSDEVICE Device, - IN PIRP Irp - ); -typedef -void -(*PFNKSDEVICEIRPVOID)( - IN PKSDEVICE Device, - IN PIRP Irp - ); -typedef -NTSTATUS -(*PFNKSDEVICEQUERYCAPABILITIES)( - IN PKSDEVICE Device, - IN PIRP Irp, - IN OUT PDEVICE_CAPABILITIES Capabilities - ); -typedef -NTSTATUS -(*PFNKSDEVICEQUERYPOWER)( - IN PKSDEVICE Device, - IN PIRP Irp, - IN DEVICE_POWER_STATE DeviceTo, - IN DEVICE_POWER_STATE DeviceFrom, - IN SYSTEM_POWER_STATE SystemTo, - IN SYSTEM_POWER_STATE SystemFrom, - IN POWER_ACTION Action - ); -typedef -void -(*PFNKSDEVICESETPOWER)( - IN PKSDEVICE Device, - IN PIRP Irp, - IN DEVICE_POWER_STATE To, - IN DEVICE_POWER_STATE From - ); -typedef -NTSTATUS -(*PFNKSFILTERFACTORYVOID)( - IN PKSFILTERFACTORY FilterFactory - ); -typedef -void -(*PFNKSFILTERFACTORYPOWER)( - IN PKSFILTERFACTORY FilterFactory, - IN DEVICE_POWER_STATE State - ); -typedef -NTSTATUS -(*PFNKSFILTERIRP)( - IN PKSFILTER Filter, - IN PIRP Irp - ); -typedef -NTSTATUS -(*PFNKSFILTERPROCESS)( - IN PKSFILTER Filter, - IN PKSPROCESSPIN_INDEXENTRY Index - ); -typedef -NTSTATUS -(*PFNKSFILTERVOID)( - IN PKSFILTER Filter - ); -typedef -void -(*PFNKSFILTERPOWER)( - IN PKSFILTER Filter, - IN DEVICE_POWER_STATE State - ); -typedef -NTSTATUS -(*PFNKSPINIRP)( - IN PKSPIN Pin, - IN PIRP Irp - ); -typedef -NTSTATUS -(*PFNKSPINSETDEVICESTATE)( - IN PKSPIN Pin, - IN KSSTATE ToState, - IN KSSTATE FromState - ); -typedef -NTSTATUS -(*PFNKSPINSETDATAFORMAT)( - IN PKSPIN Pin, - IN PKSDATAFORMAT OldFormat OPTIONAL, - IN PKSMULTIPLE_ITEM OldAttributeList OPTIONAL, - IN const KSDATARANGE* DataRange, - IN const KSATTRIBUTE_LIST* AttributeRange OPTIONAL - ); -typedef -NTSTATUS -(*PFNKSPINHANDSHAKE)( - IN PKSPIN Pin, - IN PKSHANDSHAKE In, - IN PKSHANDSHAKE Out - ); -typedef -NTSTATUS -(*PFNKSPIN)( - IN PKSPIN Pin - ); -typedef -void -(*PFNKSPINVOID)( - IN PKSPIN Pin - ); -typedef -void -(*PFNKSPINPOWER)( - IN PKSPIN Pin, - IN DEVICE_POWER_STATE State - ); -typedef -BOOLEAN -(*PFNKSPINSETTIMER)( - IN PKSPIN Pin, - IN PKTIMER Timer, - IN LARGE_INTEGER DueTime, - IN PKDPC Dpc - ); -typedef -BOOLEAN -(*PFNKSPINCANCELTIMER)( - IN PKSPIN Pin, - IN PKTIMER Timer - ); -typedef -LONGLONG -(FASTCALL *PFNKSPINCORRELATEDTIME)( - IN PKSPIN Pin, - OUT PLONGLONG SystemTime - ); -typedef -void -(*PFNKSPINRESOLUTION)( - IN PKSPIN Pin, - OUT PKSRESOLUTION Resolution - ); -typedef -NTSTATUS -(*PFNKSPININITIALIZEALLOCATOR)( - IN PKSPIN Pin, - IN PKSALLOCATOR_FRAMING AllocatorFraming, - OUT PVOID* Context - ); -typedef -void -(*PFNKSSTREAMPOINTER)( - IN PKSSTREAM_POINTER StreamPointer - ); - -typedef struct KSAUTOMATION_TABLE_ -KSAUTOMATION_TABLE, *PKSAUTOMATION_TABLE; -struct KSAUTOMATION_TABLE_ { - ULONG PropertySetsCount; - ULONG PropertyItemSize; - const KSPROPERTY_SET* PropertySets; - ULONG MethodSetsCount; - ULONG MethodItemSize; - const KSMETHOD_SET* MethodSets; - ULONG EventSetsCount; - ULONG EventItemSize; - const KSEVENT_SET* EventSets; -#if !defined(_WIN64) - PVOID Alignment; -#endif // !defined(_WIN64) -}; - -#define DEFINE_KSAUTOMATION_TABLE(table)\ - const KSAUTOMATION_TABLE table = - -#define DEFINE_KSAUTOMATION_PROPERTIES(table)\ - SIZEOF_ARRAY(table),\ - sizeof(KSPROPERTY_ITEM),\ - table - -#define DEFINE_KSAUTOMATION_METHODS(table)\ - SIZEOF_ARRAY(table),\ - sizeof(KSMETHOD_ITEM),\ - table - -#define DEFINE_KSAUTOMATION_EVENTS(table)\ - SIZEOF_ARRAY(table),\ - sizeof(KSEVENT_ITEM),\ - table - -#define DEFINE_KSAUTOMATION_PROPERTIES_NULL\ - 0,\ - sizeof(KSPROPERTY_ITEM),\ - NULL - -#define DEFINE_KSAUTOMATION_METHODS_NULL\ - 0,\ - sizeof(KSMETHOD_ITEM),\ - NULL - -#define DEFINE_KSAUTOMATION_EVENTS_NULL\ - 0,\ - sizeof(KSEVENT_ITEM),\ - NULL - -#define MIN_DEV_VER_FOR_QI (0x100) - -struct _KSDEVICE_DISPATCH { - PFNKSDEVICECREATE Add; - PFNKSDEVICEPNPSTART Start; - PFNKSDEVICE PostStart; - PFNKSDEVICEIRP QueryStop; - PFNKSDEVICEIRPVOID CancelStop; - PFNKSDEVICEIRPVOID Stop; - PFNKSDEVICEIRP QueryRemove; - PFNKSDEVICEIRPVOID CancelRemove; - PFNKSDEVICEIRPVOID Remove; - PFNKSDEVICEQUERYCAPABILITIES QueryCapabilities; - PFNKSDEVICEIRPVOID SurpriseRemoval; - PFNKSDEVICEQUERYPOWER QueryPower; - PFNKSDEVICESETPOWER SetPower; - PFNKSDEVICEIRP QueryInterface; // added in version 0x100 -}; - -struct _KSFILTER_DISPATCH { - PFNKSFILTERIRP Create; - PFNKSFILTERIRP Close; - PFNKSFILTERPROCESS Process; - PFNKSFILTERVOID Reset; -}; - -struct _KSPIN_DISPATCH { - PFNKSPINIRP Create; - PFNKSPINIRP Close; - PFNKSPIN Process; - PFNKSPINVOID Reset; - PFNKSPINSETDATAFORMAT SetDataFormat; - PFNKSPINSETDEVICESTATE SetDeviceState; - PFNKSPIN Connect; - PFNKSPINVOID Disconnect; - const KSCLOCK_DISPATCH* Clock; - const KSALLOCATOR_DISPATCH* Allocator; -}; - -struct _KSCLOCK_DISPATCH { - PFNKSPINSETTIMER SetTimer; - PFNKSPINCANCELTIMER CancelTimer; - PFNKSPINCORRELATEDTIME CorrelatedTime; - PFNKSPINRESOLUTION Resolution; -}; - -struct _KSALLOCATOR_DISPATCH { - PFNKSPININITIALIZEALLOCATOR InitializeAllocator; - PFNKSDELETEALLOCATOR DeleteAllocator; - PFNKSDEFAULTALLOCATE Allocate; - PFNKSDEFAULTFREE Free; -}; - -#define KSDEVICE_DESCRIPTOR_VERSION (0x100) - -struct _KSDEVICE_DESCRIPTOR { - const KSDEVICE_DISPATCH* Dispatch; - ULONG FilterDescriptorsCount; - const KSFILTER_DESCRIPTOR*const* FilterDescriptors; - ULONG Version; // this is 0 for pre-version 100 driver - //#if !defined(_WIN64) - //PVOID Alignment; - //#endif //!defined(_WIN64) -}; - -struct _KSFILTER_DESCRIPTOR { - const KSFILTER_DISPATCH* Dispatch; - const KSAUTOMATION_TABLE* AutomationTable; - ULONG Version; -#define KSFILTER_DESCRIPTOR_VERSION ((ULONG)-1) - ULONG Flags; -#define KSFILTER_FLAG_DISPATCH_LEVEL_PROCESSING 0x00000001 -#define KSFILTER_FLAG_CRITICAL_PROCESSING 0x00000002 -#define KSFILTER_FLAG_HYPERCRITICAL_PROCESSING 0x00000004 -#define KSFILTER_FLAG_RECEIVE_ZERO_LENGTH_SAMPLES 0x00000008 -#define KSFILTER_FLAG_DENY_USERMODE_ACCESS 0x80000000 - const GUID* ReferenceGuid; - ULONG PinDescriptorsCount; - ULONG PinDescriptorSize; - const KSPIN_DESCRIPTOR_EX* PinDescriptors; - ULONG CategoriesCount; - const GUID* Categories; - ULONG NodeDescriptorsCount; - ULONG NodeDescriptorSize; - const KSNODE_DESCRIPTOR* NodeDescriptors; - ULONG ConnectionsCount; - const KSTOPOLOGY_CONNECTION* Connections; - const KSCOMPONENTID* ComponentId; -}; - -#define DEFINE_KSFILTER_DESCRIPTOR(descriptor)\ - const KSFILTER_DESCRIPTOR descriptor = - -#define DEFINE_KSFILTER_PIN_DESCRIPTORS(table)\ - SIZEOF_ARRAY(table),\ - sizeof(table[0]),\ - table - -#define DEFINE_KSFILTER_CATEGORIES(table)\ - SIZEOF_ARRAY(table),\ - table - -#define DEFINE_KSFILTER_CATEGORY(category)\ - 1,\ - &(category) - -#define DEFINE_KSFILTER_CATEGORIES_NULL\ - 0,\ - NULL - -#define DEFINE_KSFILTER_NODE_DESCRIPTORS(table)\ - SIZEOF_ARRAY(table),\ - sizeof(table[0]),\ - table - -#define DEFINE_KSFILTER_NODE_DESCRIPTORS_NULL\ - 0,\ - sizeof(KSNODE_DESCRIPTOR),\ - NULL - -#define DEFINE_KSFILTER_CONNECTIONS(table)\ - SIZEOF_ARRAY(table),\ - table - -#define DEFINE_KSFILTER_DEFAULT_CONNECTIONS\ - 0,\ - NULL - -#define DEFINE_KSFILTER_DESCRIPTOR_TABLE(table)\ - const KSFILTER_DESCRIPTOR*const table[] = - -struct _KSPIN_DESCRIPTOR_EX { - const KSPIN_DISPATCH* Dispatch; - const KSAUTOMATION_TABLE* AutomationTable; - KSPIN_DESCRIPTOR PinDescriptor; - ULONG Flags; -#define KSPIN_FLAG_DISPATCH_LEVEL_PROCESSING KSFILTER_FLAG_DISPATCH_LEVEL_PROCESSING -#define KSPIN_FLAG_CRITICAL_PROCESSING KSFILTER_FLAG_CRITICAL_PROCESSING -#define KSPIN_FLAG_HYPERCRITICAL_PROCESSING KSFILTER_FLAG_HYPERCRITICAL_PROCESSING -#define KSPIN_FLAG_ASYNCHRONOUS_PROCESSING 0x00000008 -#define KSPIN_FLAG_DO_NOT_INITIATE_PROCESSING 0x00000010 -#define KSPIN_FLAG_INITIATE_PROCESSING_ON_EVERY_ARRIVAL 0x00000020 -#define KSPIN_FLAG_FRAMES_NOT_REQUIRED_FOR_PROCESSING 0x00000040 -#define KSPIN_FLAG_ENFORCE_FIFO 0x00000080 - -#define KSPIN_FLAG_GENERATE_MAPPINGS 0x00000100 -#define KSPIN_FLAG_DISTINCT_TRAILING_EDGE 0x00000200 - -#define KSPIN_FLAG_PROCESS_IN_RUN_STATE_ONLY 0x00010000 -#define KSPIN_FLAG_SPLITTER 0x00020000 -#define KSPIN_FLAG_USE_STANDARD_TRANSPORT 0x00040000 -#define KSPIN_FLAG_DO_NOT_USE_STANDARD_TRANSPORT 0x00080000 -#define KSPIN_FLAG_FIXED_FORMAT 0x00100000 -#define KSPIN_FLAG_GENERATE_EOS_EVENTS 0x00200000 -#define KSPIN_FLAG_RENDERER (KSPIN_FLAG_PROCESS_IN_RUN_STATE_ONLY|KSPIN_FLAG_GENERATE_EOS_EVENTS) -#define KSPIN_FLAG_IMPLEMENT_CLOCK 0x00400000 -#define KSPIN_FLAG_SOME_FRAMES_REQUIRED_FOR_PROCESSING 0x00800000 -#define KSPIN_FLAG_PROCESS_IF_ANY_IN_RUN_STATE 0x01000000 -#define KSPIN_FLAG_DENY_USERMODE_ACCESS 0x80000000 - ULONG InstancesPossible; - ULONG InstancesNecessary; - const KSALLOCATOR_FRAMING_EX* AllocatorFraming; - PFNKSINTERSECTHANDLEREX IntersectHandler; -}; - -#define DEFINE_KSPIN_DEFAULT_INTERFACES\ - 0,\ - NULL - -#define DEFINE_KSPIN_DEFAULT_MEDIUMS\ - 0,\ - NULL - -struct _KSNODE_DESCRIPTOR { - const KSAUTOMATION_TABLE* AutomationTable; - const GUID* Type; - const GUID* Name; -#if !defined(_WIN64) - PVOID Alignment; -#endif // !defined(_WIN64) -}; - -#if !defined(_WIN64) -#define DEFINE_NODE_DESCRIPTOR(automation,type,name) \ - { (automation), (type), (name), NULL } -#else // !defined(_WIN64) -#define DEFINE_NODE_DESCRIPTOR(automation,type,name) \ - { (automation), (type), (name) } -#endif // !defined(_WIN64) - -struct _KSDEVICE { - const KSDEVICE_DESCRIPTOR* Descriptor; - KSOBJECT_BAG Bag; - PVOID Context; - PDEVICE_OBJECT FunctionalDeviceObject; - PDEVICE_OBJECT PhysicalDeviceObject; - PDEVICE_OBJECT NextDeviceObject; - BOOLEAN Started; - SYSTEM_POWER_STATE SystemPowerState; - DEVICE_POWER_STATE DevicePowerState; -}; - -struct _KSFILTERFACTORY { - const KSFILTER_DESCRIPTOR* FilterDescriptor; - KSOBJECT_BAG Bag; - PVOID Context; -}; - -struct _KSFILTER { - const KSFILTER_DESCRIPTOR* Descriptor; - KSOBJECT_BAG Bag; - PVOID Context; -}; - -struct _KSPIN { - const KSPIN_DESCRIPTOR_EX* Descriptor; - KSOBJECT_BAG Bag; - PVOID Context; - ULONG Id; - KSPIN_COMMUNICATION Communication; - BOOLEAN ConnectionIsExternal; - KSPIN_INTERFACE ConnectionInterface; - KSPIN_MEDIUM ConnectionMedium; - KSPRIORITY ConnectionPriority; - PKSDATAFORMAT ConnectionFormat; - PKSMULTIPLE_ITEM AttributeList; - ULONG StreamHeaderSize; - KSPIN_DATAFLOW DataFlow; - KSSTATE DeviceState; - KSRESET ResetState; - KSSTATE ClientState; -}; - -struct _KSMAPPING { - PHYSICAL_ADDRESS PhysicalAddress; - ULONG ByteCount; - ULONG Alignment; -}; - -struct _KSSTREAM_POINTER_OFFSET -{ -#if defined(_NTDDK_) - union { - PUCHAR Data; - PKSMAPPING Mappings; - }; -#else // !defined(_NTDDK_) - PUCHAR Data; -#endif // !defined(_NTDDK_) -#if !defined(_WIN64) - PVOID Alignment; -#endif // !defined(_WIN64) - ULONG Count; - ULONG Remaining; -}; - -struct _KSSTREAM_POINTER -{ - PVOID Context; - PKSPIN Pin; - PKSSTREAM_HEADER StreamHeader; - PKSSTREAM_POINTER_OFFSET Offset; - KSSTREAM_POINTER_OFFSET OffsetIn; - KSSTREAM_POINTER_OFFSET OffsetOut; -}; - -struct _KSPROCESSPIN { - PKSPIN Pin; - PKSSTREAM_POINTER StreamPointer; - PKSPROCESSPIN InPlaceCounterpart; - PKSPROCESSPIN DelegateBranch; - PKSPROCESSPIN CopySource; - PVOID Data; - ULONG BytesAvailable; - ULONG BytesUsed; - ULONG Flags; - BOOLEAN Terminate; -}; - -struct _KSPROCESSPIN_INDEXENTRY { - PKSPROCESSPIN *Pins; - ULONG Count; -}; - -typedef enum { - KsObjectTypeDevice, - KsObjectTypeFilterFactory, - KsObjectTypeFilter, - KsObjectTypePin -} KSOBJECTTYPE; - -typedef -void -(*PFNKSFREE)( - IN PVOID Data - ); - -typedef -void -(*PFNKSPINFRAMERETURN)( - IN PKSPIN Pin, - IN PVOID Data OPTIONAL, - IN ULONG Size OPTIONAL, - IN PMDL Mdl OPTIONAL, - IN PVOID Context OPTIONAL, - IN NTSTATUS Status - ); - -typedef -void -(*PFNKSPINIRPCOMPLETION)( - IN PKSPIN Pin, - IN PIRP Irp - ); - -#if defined(_UNKNOWN_H_) || defined(__IUnknown_INTERFACE_DEFINED__) -#if !defined(_IKsControl_) -#define _IKsControl_ - -typedef interface IKsControl* PIKSCONTROL; - -#if !defined(DEFINE_ABSTRACT_UNKNOWN) - -#define DEFINE_ABSTRACT_UNKNOWN() \ - STDMETHOD_(NTSTATUS, QueryInterface)(THIS_ \ - REFIID InterfaceId, \ - PVOID* Interface \ - ) PURE; \ - STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ - STDMETHOD_(ULONG,Release)(THIS) PURE; - -#endif //!defined(DEFINE_ABSTRACT_UNKNOWN) - -#undef INTERFACE -#define INTERFACE IKsControl -DECLARE_INTERFACE_(IKsControl,IUnknown) -{ - DEFINE_ABSTRACT_UNKNOWN() // For C - - STDMETHOD_(NTSTATUS, KsProperty)(THIS_ - IN PKSPROPERTY Property, - IN ULONG PropertyLength, - IN OUT PVOID PropertyData, - IN ULONG DataLength, - OUT ULONG* BytesReturned - ) PURE; - STDMETHOD_(NTSTATUS, KsMethod)(THIS_ - IN PKSMETHOD Method, - IN ULONG MethodLength, - IN OUT PVOID MethodData, - IN ULONG DataLength, - OUT ULONG* BytesReturned - ) PURE; - STDMETHOD_(NTSTATUS, KsEvent)(THIS_ - IN PKSEVENT Event OPTIONAL, - IN ULONG EventLength, - IN OUT PVOID EventData, - IN ULONG DataLength, - OUT ULONG* BytesReturned - ) PURE; -}; - -typedef interface IKsReferenceClock* PIKSREFERENCECLOCK; - -#undef INTERFACE -#define INTERFACE IKsReferenceClock -DECLARE_INTERFACE_(IKsReferenceClock,IUnknown) -{ - DEFINE_ABSTRACT_UNKNOWN() // For C - - STDMETHOD_(LONGLONG,GetTime)(THIS - ) PURE; - STDMETHOD_(LONGLONG,GetPhysicalTime)(THIS - ) PURE; - STDMETHOD_(LONGLONG,GetCorrelatedTime)(THIS_ - OUT PLONGLONG SystemTime - ) PURE; - STDMETHOD_(LONGLONG,GetCorrelatedPhysicalTime)(THIS_ - OUT PLONGLONG SystemTime - ) PURE; - STDMETHOD_(NTSTATUS, GetResolution)(THIS_ - OUT PKSRESOLUTION Resolution - ) PURE; - STDMETHOD_(NTSTATUS, GetState)(THIS_ - OUT PKSSTATE State - ) PURE; -}; -#undef INTERFACE - -#define STATIC_IID_IKsControl \ -0x28F54685L, 0x06FD, 0x11D2, 0xB2, 0x7A, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 -DEFINE_GUID(IID_IKsControl, -0x28F54685L, 0x06FD, 0x11D2, 0xB2, 0x7A, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96); -#if defined(__cplusplus) && _MSC_VER >= 1100 -struct __declspec(uuid("28F54685-06FD-11D2-B27A-00A0C9223196")) IKsControl; -#endif - -#define STATIC_IID_IKsFastClock \ -0xc9902485, 0xc180, 0x11d2, 0x84, 0x73, 0xd4, 0x23, 0x94, 0x45, 0x9e, 0x5e -DEFINE_GUID(IID_IKsFastClock, -0xc9902485, 0xc180, 0x11d2, 0x84, 0x73, 0xd4, 0x23, 0x94, 0x45, 0x9e, 0x5e); -#if defined(__cplusplus) && _MSC_VER >= 1100 -struct __declspec(uuid("C9902485-C180-11d2-8473-D42394459E5E")) IKsFastClock; -#endif - -#endif // !defined(_IKsControl_) -#endif // defined(_UNKNOWN_H_) || defined(__IUnknown_INTERFACE_DEFINED__) - -#endif // defined(_NTDDK_) - -//=========================================================================== - -#if defined(__cplusplus) -extern "C" { -#endif // defined(__cplusplus) - -// -// exported prototypes -// - -#ifdef _KSDDK_ -#define KSDDKAPI -#else // !_KSDDK_ -#define KSDDKAPI DECLSPEC_IMPORT -#endif // _KSDDK_ - -#if defined(_NTDDK_) - -KSDDKAPI -NTSTATUS -NTAPI -KsEnableEvent( - IN PIRP Irp, - IN ULONG EventSetsCount, - IN const KSEVENT_SET* EventSet, - IN OUT PLIST_ENTRY EventsList OPTIONAL, - IN KSEVENTS_LOCKTYPE EventsFlags OPTIONAL, - IN PVOID EventsLock OPTIONAL - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsEnableEventWithAllocator( - IN PIRP Irp, - IN ULONG EventSetsCount, - IN const KSEVENT_SET* EventSet, - IN OUT PLIST_ENTRY EventsList OPTIONAL, - IN KSEVENTS_LOCKTYPE EventsFlags OPTIONAL, - IN PVOID EventsLock OPTIONAL, - IN PFNKSALLOCATOR Allocator OPTIONAL, - IN ULONG EventItemSize OPTIONAL - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsDisableEvent( - IN PIRP Irp, - IN OUT PLIST_ENTRY EventsList, - IN KSEVENTS_LOCKTYPE EventsFlags, - IN PVOID EventsLock - ); - -KSDDKAPI -VOID -NTAPI -KsDiscardEvent( - IN PKSEVENT_ENTRY EventEntry - ); - -KSDDKAPI -VOID -NTAPI -KsFreeEventList( - IN PFILE_OBJECT FileObject, - IN OUT PLIST_ENTRY EventsList, - IN KSEVENTS_LOCKTYPE EventsFlags, - IN PVOID EventsLock - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsGenerateEvent( - IN PKSEVENT_ENTRY EventEntry - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsGenerateDataEvent( - IN PKSEVENT_ENTRY EventEntry, - IN ULONG DataSize, - IN PVOID Data - ); - -KSDDKAPI -VOID -NTAPI -KsGenerateEventList( - IN GUID* Set OPTIONAL, - IN ULONG EventId, - IN PLIST_ENTRY EventsList, - IN KSEVENTS_LOCKTYPE EventsFlags, - IN PVOID EventsLock - ); - -// property.c: - -KSDDKAPI -NTSTATUS -NTAPI -KsPropertyHandler( - IN PIRP Irp, - IN ULONG PropertySetsCount, - IN const KSPROPERTY_SET* PropertySet - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsPropertyHandlerWithAllocator( - IN PIRP Irp, - IN ULONG PropertySetsCount, - IN const KSPROPERTY_SET* PropertySet, - IN PFNKSALLOCATOR Allocator OPTIONAL, - IN ULONG PropertyItemSize OPTIONAL - ); - -KSDDKAPI -BOOLEAN -NTAPI -KsFastPropertyHandler( - IN PFILE_OBJECT FileObject, - IN PKSPROPERTY Property, - IN ULONG PropertyLength, - IN OUT PVOID Data, - IN ULONG DataLength, - OUT PIO_STATUS_BLOCK IoStatus, - IN ULONG PropertySetsCount, - IN const KSPROPERTY_SET* PropertySet - ); - -// method.c: - -KSDDKAPI -NTSTATUS -NTAPI -KsMethodHandler( - IN PIRP Irp, - IN ULONG MethodSetsCount, - IN const KSMETHOD_SET* MethodSet - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsMethodHandlerWithAllocator( - IN PIRP Irp, - IN ULONG MethodSetsCount, - IN const KSMETHOD_SET* MethodSet, - IN PFNKSALLOCATOR Allocator OPTIONAL, - IN ULONG MethodItemSize OPTIONAL - ); - -KSDDKAPI -BOOLEAN -NTAPI -KsFastMethodHandler( - IN PFILE_OBJECT FileObject, - IN PKSMETHOD Method, - IN ULONG MethodLength, - IN OUT PVOID Data, - IN ULONG DataLength, - OUT PIO_STATUS_BLOCK IoStatus, - IN ULONG MethodSetsCount, - IN const KSMETHOD_SET* MethodSet - ); - -// alloc.c: - -KSDDKAPI -NTSTATUS -NTAPI -KsCreateDefaultAllocator( - IN PIRP Irp - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsCreateDefaultAllocatorEx( - IN PIRP Irp, - IN PVOID InitializeContext OPTIONAL, - IN PFNKSDEFAULTALLOCATE DefaultAllocate OPTIONAL, - IN PFNKSDEFAULTFREE DefaultFree OPTIONAL, - IN PFNKSINITIALIZEALLOCATOR InitializeAllocator OPTIONAL, - IN PFNKSDELETEALLOCATOR DeleteAllocator OPTIONAL - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsCreateAllocator( - IN HANDLE ConnectionHandle, - IN PKSALLOCATOR_FRAMING AllocatorFraming, - OUT PHANDLE AllocatorHandle - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsValidateAllocatorCreateRequest( - IN PIRP Irp, - OUT PKSALLOCATOR_FRAMING* AllocatorFraming - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsValidateAllocatorFramingEx( - IN PKSALLOCATOR_FRAMING_EX Framing, - IN ULONG BufferSize, - IN const KSALLOCATOR_FRAMING_EX *PinFraming - ); - -// clock.c: - -KSDDKAPI -NTSTATUS -NTAPI -KsAllocateDefaultClock( - OUT PKSDEFAULTCLOCK* DefaultClock - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsAllocateDefaultClockEx( - OUT PKSDEFAULTCLOCK* DefaultClock, - IN PVOID Context OPTIONAL, - IN PFNKSSETTIMER SetTimer OPTIONAL, - IN PFNKSCANCELTIMER CancelTimer OPTIONAL, - IN PFNKSCORRELATEDTIME CorrelatedTime OPTIONAL, - IN const KSRESOLUTION* Resolution OPTIONAL, - IN ULONG Flags - ); - -KSDDKAPI -VOID -NTAPI -KsFreeDefaultClock( - IN PKSDEFAULTCLOCK DefaultClock - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsCreateDefaultClock( - IN PIRP Irp, - IN PKSDEFAULTCLOCK DefaultClock - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsCreateClock( - IN HANDLE ConnectionHandle, - IN PKSCLOCK_CREATE ClockCreate, - OUT PHANDLE ClockHandle - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsValidateClockCreateRequest( - IN PIRP Irp, - OUT PKSCLOCK_CREATE* ClockCreate - ); - -KSDDKAPI -KSSTATE -NTAPI -KsGetDefaultClockState( - IN PKSDEFAULTCLOCK DefaultClock - ); - -KSDDKAPI -VOID -NTAPI -KsSetDefaultClockState( - IN PKSDEFAULTCLOCK DefaultClock, - IN KSSTATE State - ); - -KSDDKAPI -LONGLONG -NTAPI -KsGetDefaultClockTime( - IN PKSDEFAULTCLOCK DefaultClock - ); - -KSDDKAPI -VOID -NTAPI -KsSetDefaultClockTime( - IN PKSDEFAULTCLOCK DefaultClock, - IN LONGLONG Time - ); - -// connect.c: - -KSDDKAPI -NTSTATUS -NTAPI -KsCreatePin( - IN HANDLE FilterHandle, - IN PKSPIN_CONNECT Connect, - IN ACCESS_MASK DesiredAccess, - OUT PHANDLE ConnectionHandle - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsValidateConnectRequest( - IN PIRP Irp, - IN ULONG DescriptorsCount, - IN const KSPIN_DESCRIPTOR* Descriptor, - OUT PKSPIN_CONNECT* Connect - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsPinPropertyHandler( - IN PIRP Irp, - IN PKSPROPERTY Property, - IN OUT PVOID Data, - IN ULONG DescriptorsCount, - IN const KSPIN_DESCRIPTOR* Descriptor - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsPinDataIntersection( - IN PIRP Irp, - IN PKSP_PIN Pin, - OUT PVOID Data OPTIONAL, - IN ULONG DescriptorsCount, - IN const KSPIN_DESCRIPTOR* Descriptor, - IN PFNKSINTERSECTHANDLER IntersectHandler - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsPinDataIntersectionEx( - IN PIRP Irp, - IN PKSP_PIN Pin, - OUT PVOID Data, - IN ULONG DescriptorsCount, - IN const KSPIN_DESCRIPTOR* Descriptor, - IN ULONG DescriptorSize, - IN PFNKSINTERSECTHANDLEREX IntersectHandler OPTIONAL, - IN PVOID HandlerContext OPTIONAL - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsHandleSizedListQuery( - IN PIRP Irp, - IN ULONG DataItemsCount, - IN ULONG DataItemSize, - IN const VOID* DataItems - ); - -// image.c: - -#if (!defined( MAKEINTRESOURCE )) -#define MAKEINTRESOURCE( res ) ((ULONG_PTR) (USHORT) res) -#endif - -#if (!defined( RT_STRING )) -#define RT_STRING MAKEINTRESOURCE( 6 ) -#define RT_RCDATA MAKEINTRESOURCE( 10 ) -#endif - -KSDDKAPI -NTSTATUS -NTAPI -KsLoadResource( - IN PVOID ImageBase, - IN POOL_TYPE PoolType, - IN ULONG_PTR ResourceName, - IN ULONG ResourceType, - OUT PVOID *Resource, - OUT PULONG ResourceSize - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsGetImageNameAndResourceId( - IN HANDLE RegKey, - OUT PUNICODE_STRING ImageName, - OUT PULONG_PTR ResourceId, - OUT PULONG ValueType -); - -KSDDKAPI -NTSTATUS -NTAPI -KsMapModuleName( - IN PDEVICE_OBJECT PhysicalDeviceObject, - IN PUNICODE_STRING ModuleName, - OUT PUNICODE_STRING ImageName, - OUT PULONG_PTR ResourceId, - OUT PULONG ValueType - ); - -// irp.c: - -KSDDKAPI -NTSTATUS -NTAPI -KsReferenceBusObject( - IN KSDEVICE_HEADER Header - ); - -KSDDKAPI -VOID -NTAPI -KsDereferenceBusObject( - IN KSDEVICE_HEADER Header - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsDispatchQuerySecurity( - IN PDEVICE_OBJECT DeviceObject, - IN PIRP Irp - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsDispatchSetSecurity( - IN PDEVICE_OBJECT DeviceObject, - IN PIRP Irp - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsDispatchSpecificProperty( - IN PIRP Irp, - IN PFNKSHANDLER Handler - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsDispatchSpecificMethod( - IN PIRP Irp, - IN PFNKSHANDLER Handler - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsReadFile( - IN PFILE_OBJECT FileObject, - IN PKEVENT Event OPTIONAL, - IN PVOID PortContext OPTIONAL, - OUT PIO_STATUS_BLOCK IoStatusBlock, - OUT PVOID Buffer, - IN ULONG Length, - IN ULONG Key OPTIONAL, - IN KPROCESSOR_MODE RequestorMode - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsWriteFile( - IN PFILE_OBJECT FileObject, - IN PKEVENT Event OPTIONAL, - IN PVOID PortContext OPTIONAL, - OUT PIO_STATUS_BLOCK IoStatusBlock, - IN PVOID Buffer, - IN ULONG Length, - IN ULONG Key OPTIONAL, - IN KPROCESSOR_MODE RequestorMode - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsQueryInformationFile( - IN PFILE_OBJECT FileObject, - OUT PVOID FileInformation, - IN ULONG Length, - IN FILE_INFORMATION_CLASS FileInformationClass - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsSetInformationFile( - IN PFILE_OBJECT FileObject, - IN PVOID FileInformation, - IN ULONG Length, - IN FILE_INFORMATION_CLASS FileInformationClass - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsStreamIo( - IN PFILE_OBJECT FileObject, - IN PKEVENT Event OPTIONAL, - IN PVOID PortContext OPTIONAL, - IN PIO_COMPLETION_ROUTINE CompletionRoutine OPTIONAL, - IN PVOID CompletionContext OPTIONAL, - IN KSCOMPLETION_INVOCATION CompletionInvocationFlags OPTIONAL, - OUT PIO_STATUS_BLOCK IoStatusBlock, - IN OUT PVOID StreamHeaders, - IN ULONG Length, - IN ULONG Flags, - IN KPROCESSOR_MODE RequestorMode - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsProbeStreamIrp( - IN OUT PIRP Irp, - IN ULONG ProbeFlags, - IN ULONG HeaderSize OPTIONAL - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsAllocateExtraData( - IN OUT PIRP Irp, - IN ULONG ExtraSize, - OUT PVOID* ExtraBuffer - ); - -KSDDKAPI -VOID -NTAPI -KsNullDriverUnload( - IN PDRIVER_OBJECT DriverObject - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsSetMajorFunctionHandler( - IN PDRIVER_OBJECT DriverObject, - IN ULONG MajorFunction - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsDispatchInvalidDeviceRequest( - IN PDEVICE_OBJECT DeviceObject, - IN PIRP Irp - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsDefaultDeviceIoCompletion( - IN PDEVICE_OBJECT DeviceObject, - IN PIRP Irp - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsDispatchIrp( - IN PDEVICE_OBJECT DeviceObject, - IN PIRP Irp - ); - -KSDDKAPI -BOOLEAN -NTAPI -KsDispatchFastIoDeviceControlFailure( - IN PFILE_OBJECT FileObject, - IN BOOLEAN Wait, - IN PVOID InputBuffer OPTIONAL, - IN ULONG InputBufferLength, - OUT PVOID OutputBuffer OPTIONAL, - IN ULONG OutputBufferLength, - IN ULONG IoControlCode, - OUT PIO_STATUS_BLOCK IoStatus, - IN PDEVICE_OBJECT DeviceObject - ); - -KSDDKAPI -BOOLEAN -NTAPI -KsDispatchFastReadFailure( - IN PFILE_OBJECT FileObject, - IN PLARGE_INTEGER FileOffset, - IN ULONG Length, - IN BOOLEAN Wait, - IN ULONG LockKey, - OUT PVOID Buffer, - OUT PIO_STATUS_BLOCK IoStatus, - IN PDEVICE_OBJECT DeviceObject - ); - -#define KsDispatchFastWriteFailure KsDispatchFastReadFailure - -KSDDKAPI -VOID -NTAPI -KsCancelRoutine( - IN PDEVICE_OBJECT DeviceObject, - IN PIRP Irp - ); - -KSDDKAPI -VOID -NTAPI -KsCancelIo( - IN OUT PLIST_ENTRY QueueHead, - IN PKSPIN_LOCK SpinLock - ); - -KSDDKAPI -VOID -NTAPI -KsReleaseIrpOnCancelableQueue( - IN PIRP Irp, - IN PDRIVER_CANCEL DriverCancel OPTIONAL - ); - -KSDDKAPI -PIRP -NTAPI -KsRemoveIrpFromCancelableQueue( - IN OUT PLIST_ENTRY QueueHead, - IN PKSPIN_LOCK SpinLock, - IN KSLIST_ENTRY_LOCATION ListLocation, - IN KSIRP_REMOVAL_OPERATION RemovalOperation - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsMoveIrpsOnCancelableQueue( - IN OUT PLIST_ENTRY SourceList, - IN PKSPIN_LOCK SourceLock, - IN OUT PLIST_ENTRY DestinationList, - IN PKSPIN_LOCK DestinationLock OPTIONAL, - IN KSLIST_ENTRY_LOCATION ListLocation, - IN PFNKSIRPLISTCALLBACK ListCallback, - IN PVOID Context - ); - -KSDDKAPI -VOID -NTAPI -KsRemoveSpecificIrpFromCancelableQueue( - IN PIRP Irp - ); - -KSDDKAPI -VOID -NTAPI -KsAddIrpToCancelableQueue( - IN OUT PLIST_ENTRY QueueHead, - IN PKSPIN_LOCK SpinLock, - IN PIRP Irp, - IN KSLIST_ENTRY_LOCATION ListLocation, - IN PDRIVER_CANCEL DriverCancel OPTIONAL - ); - -// api.c: - -KSDDKAPI -NTSTATUS -NTAPI -KsAcquireResetValue( - IN PIRP Irp, - OUT KSRESET* ResetValue - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsTopologyPropertyHandler( - IN PIRP Irp, - IN PKSPROPERTY Property, - IN OUT PVOID Data, - IN const KSTOPOLOGY* Topology - ); - -KSDDKAPI -VOID -NTAPI -KsAcquireDeviceSecurityLock( - IN KSDEVICE_HEADER Header, - IN BOOLEAN Exclusive - ); - -KSDDKAPI -VOID -NTAPI -KsReleaseDeviceSecurityLock( - IN KSDEVICE_HEADER Header - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsDefaultDispatchPnp( - IN PDEVICE_OBJECT DeviceObject, - IN PIRP Irp - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsDefaultDispatchPower( - IN PDEVICE_OBJECT DeviceObject, - IN PIRP Irp - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsDefaultForwardIrp( - IN PDEVICE_OBJECT DeviceObject, - IN PIRP Irp - ); - -KSDDKAPI -VOID -NTAPI -KsSetDevicePnpAndBaseObject( - IN KSDEVICE_HEADER Header, - IN PDEVICE_OBJECT PnpDeviceObject, - IN PDEVICE_OBJECT BaseObject - ); - -KSDDKAPI -PDEVICE_OBJECT -NTAPI -KsQueryDevicePnpObject( - IN KSDEVICE_HEADER Header - ); - -KSDDKAPI -ACCESS_MASK -NTAPI -KsQueryObjectAccessMask( - IN KSOBJECT_HEADER Header - ); - -KSDDKAPI -VOID -NTAPI -KsRecalculateStackDepth( - IN KSDEVICE_HEADER Header, - IN BOOLEAN ReuseStackLocation - ); - -KSDDKAPI -VOID -NTAPI -KsSetTargetState( - IN KSOBJECT_HEADER Header, - IN KSTARGET_STATE TargetState - ); - -KSDDKAPI -VOID -NTAPI -KsSetTargetDeviceObject( - IN KSOBJECT_HEADER Header, - IN PDEVICE_OBJECT TargetDevice OPTIONAL - ); - -KSDDKAPI -VOID -NTAPI -KsSetPowerDispatch( - IN KSOBJECT_HEADER Header, - IN PFNKSCONTEXT_DISPATCH PowerDispatch OPTIONAL, - IN PVOID PowerContext OPTIONAL - ); - -KSDDKAPI -PKSOBJECT_CREATE_ITEM -NTAPI -KsQueryObjectCreateItem( - IN KSOBJECT_HEADER Header - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsAllocateDeviceHeader( - OUT KSDEVICE_HEADER* Header, - IN ULONG ItemsCount, - IN PKSOBJECT_CREATE_ITEM ItemsList OPTIONAL - ); - -KSDDKAPI -VOID -NTAPI -KsFreeDeviceHeader( - IN KSDEVICE_HEADER Header - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsAllocateObjectHeader( - OUT KSOBJECT_HEADER* Header, - IN ULONG ItemsCount, - IN PKSOBJECT_CREATE_ITEM ItemsList OPTIONAL, - IN PIRP Irp, - IN const KSDISPATCH_TABLE* Table - ); - -KSDDKAPI -VOID -NTAPI -KsFreeObjectHeader( - IN KSOBJECT_HEADER Header - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsAddObjectCreateItemToDeviceHeader( - IN KSDEVICE_HEADER Header, - IN PDRIVER_DISPATCH Create, - IN PVOID Context, - IN PWCHAR ObjectClass, - IN PSECURITY_DESCRIPTOR SecurityDescriptor OPTIONAL - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsAddObjectCreateItemToObjectHeader( - IN KSOBJECT_HEADER Header, - IN PDRIVER_DISPATCH Create, - IN PVOID Context, - IN PWCHAR ObjectClass, - IN PSECURITY_DESCRIPTOR SecurityDescriptor OPTIONAL - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsAllocateObjectCreateItem( - IN KSDEVICE_HEADER Header, - IN PKSOBJECT_CREATE_ITEM CreateItem, - IN BOOLEAN AllocateEntry, - IN PFNKSITEMFREECALLBACK ItemFreeCallback OPTIONAL - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsFreeObjectCreateItem( - IN KSDEVICE_HEADER Header, - IN PUNICODE_STRING CreateItem - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsFreeObjectCreateItemsByContext( - IN KSDEVICE_HEADER Header, - IN PVOID Context - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsCreateDefaultSecurity( - IN PSECURITY_DESCRIPTOR ParentSecurity OPTIONAL, - OUT PSECURITY_DESCRIPTOR* DefaultSecurity - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsForwardIrp( - IN PIRP Irp, - IN PFILE_OBJECT FileObject, - IN BOOLEAN ReuseStackLocation - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsForwardAndCatchIrp( - IN PDEVICE_OBJECT DeviceObject, - IN PIRP Irp, - IN PFILE_OBJECT FileObject, - IN KSSTACK_USE StackUse - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsSynchronousIoControlDevice( - IN PFILE_OBJECT FileObject, - IN KPROCESSOR_MODE RequestorMode, - IN ULONG IoControl, - IN PVOID InBuffer, - IN ULONG InSize, - OUT PVOID OutBuffer, - IN ULONG OutSize, - OUT PULONG BytesReturned - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsUnserializeObjectPropertiesFromRegistry( - IN PFILE_OBJECT FileObject, - IN HANDLE ParentKey OPTIONAL, - IN PUNICODE_STRING RegistryPath OPTIONAL - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsCacheMedium( - IN PUNICODE_STRING SymbolicLink, - IN PKSPIN_MEDIUM Medium, - IN ULONG PinDirection - ); - -// thread.c: - -KSDDKAPI -NTSTATUS -NTAPI -KsRegisterWorker( - IN WORK_QUEUE_TYPE WorkQueueType, - OUT PKSWORKER* Worker - ); -KSDDKAPI -NTSTATUS -NTAPI -KsRegisterCountedWorker( - IN WORK_QUEUE_TYPE WorkQueueType, - IN PWORK_QUEUE_ITEM CountedWorkItem, - OUT PKSWORKER* Worker - ); -KSDDKAPI -VOID -NTAPI -KsUnregisterWorker( - IN PKSWORKER Worker - ); -KSDDKAPI -NTSTATUS -NTAPI -KsQueueWorkItem( - IN PKSWORKER Worker, - IN PWORK_QUEUE_ITEM WorkItem - ); -KSDDKAPI -ULONG -NTAPI -KsIncrementCountedWorker( - IN PKSWORKER Worker - ); -KSDDKAPI -ULONG -NTAPI -KsDecrementCountedWorker( - IN PKSWORKER Worker - ); - -// topology.c: - -KSDDKAPI -NTSTATUS -NTAPI -KsCreateTopologyNode( - IN HANDLE ParentHandle, - IN PKSNODE_CREATE NodeCreate, - IN ACCESS_MASK DesiredAccess, - OUT PHANDLE NodeHandle - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsValidateTopologyNodeCreateRequest( - IN PIRP Irp, - IN PKSTOPOLOGY Topology, - OUT PKSNODE_CREATE* NodeCreate - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsMergeAutomationTables( - OUT PKSAUTOMATION_TABLE* AutomationTableAB, - IN PKSAUTOMATION_TABLE AutomationTableA OPTIONAL, - IN PKSAUTOMATION_TABLE AutomationTableB OPTIONAL, - IN KSOBJECT_BAG Bag OPTIONAL - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsInitializeDriver( - IN PDRIVER_OBJECT DriverObject, - IN PUNICODE_STRING RegistryPathName, - IN const KSDEVICE_DESCRIPTOR* Descriptor OPTIONAL - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsAddDevice( - IN PDRIVER_OBJECT DriverObject, - IN PDEVICE_OBJECT PhysicalDeviceObject - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsCreateDevice( - IN PDRIVER_OBJECT DriverObject, - IN PDEVICE_OBJECT PhysicalDeviceObject, - IN const KSDEVICE_DESCRIPTOR* Descriptor OPTIONAL, - IN ULONG ExtensionSize OPTIONAL, - OUT PKSDEVICE* Device OPTIONAL - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsInitializeDevice( - IN PDEVICE_OBJECT FunctionalDeviceObject, - IN PDEVICE_OBJECT PhysicalDeviceObject, - IN PDEVICE_OBJECT NextDeviceObject, - IN const KSDEVICE_DESCRIPTOR* Descriptor OPTIONAL - ); - -KSDDKAPI -void -NTAPI -KsTerminateDevice( - IN PDEVICE_OBJECT DeviceObject - ); - -KSDDKAPI -PKSDEVICE -NTAPI -KsGetDeviceForDeviceObject( - IN PDEVICE_OBJECT FunctionalDeviceObject - ); - -KSDDKAPI -void -NTAPI -KsAcquireDevice( - IN PKSDEVICE Device - ); - -KSDDKAPI -void -NTAPI -KsReleaseDevice( - IN PKSDEVICE Device - ); - -KSDDKAPI -void -NTAPI -KsDeviceRegisterAdapterObject( - IN PKSDEVICE Device, - IN PADAPTER_OBJECT AdapterObject, - IN ULONG MaxMappingsByteCount, - IN ULONG MappingTableStride - ); - -KSDDKAPI -ULONG -NTAPI -KsDeviceGetBusData( - IN PKSDEVICE Device, - IN ULONG DataType, - IN PVOID Buffer, - IN ULONG Offset, - IN ULONG Length - ); - -KSDDKAPI -ULONG -NTAPI -KsDeviceSetBusData( - IN PKSDEVICE Device, - IN ULONG DataType, - IN PVOID Buffer, - IN ULONG Offset, - IN ULONG Length - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsCreateFilterFactory( - IN PDEVICE_OBJECT DeviceObject, - IN const KSFILTER_DESCRIPTOR* Descriptor, - IN PWCHAR RefString OPTIONAL, - IN PSECURITY_DESCRIPTOR SecurityDescriptor OPTIONAL, - IN ULONG CreateItemFlags, - IN PFNKSFILTERFACTORYPOWER SleepCallback OPTIONAL, - IN PFNKSFILTERFACTORYPOWER WakeCallback OPTIONAL, - OUT PKSFILTERFACTORY* FilterFactory OPTIONAL - ); - -#define KsDeleteFilterFactory(FilterFactory) \ - KsFreeObjectCreateItemsByContext(\ - *(KSDEVICE_HEADER *)(\ - KsFilterFactoryGetParentDevice(FilterFactory)->FunctionalDeviceObject->\ - DeviceExtension),\ - FilterFactory) - -KSDDKAPI -NTSTATUS -NTAPI -KsFilterFactoryUpdateCacheData( - IN PKSFILTERFACTORY FilterFactory, - IN const KSFILTER_DESCRIPTOR *FilterDescriptor OPTIONAL - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsFilterFactoryAddCreateItem( - IN PKSFILTERFACTORY FilterFactory, - IN PWCHAR RefString, - IN PSECURITY_DESCRIPTOR SecurityDescriptor OPTIONAL, - IN ULONG CreateItemFlags - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsFilterFactorySetDeviceClassesState( - IN PKSFILTERFACTORY FilterFactory, - IN BOOLEAN NewState - ); - -KSDDKAPI -PUNICODE_STRING -NTAPI -KsFilterFactoryGetSymbolicLink( - IN PKSFILTERFACTORY FilterFactory - ); - -KSDDKAPI -void -NTAPI -KsAddEvent( - IN PVOID Object, - IN PKSEVENT_ENTRY EventEntry - ); - -void _inline -KsFilterAddEvent( - IN PKSFILTER Filter, - IN PKSEVENT_ENTRY EventEntry - ) -{ - KsAddEvent(Filter,EventEntry); -} - -void _inline -KsPinAddEvent( - IN PKSPIN Pin, - IN PKSEVENT_ENTRY EventEntry - ) -{ - KsAddEvent(Pin,EventEntry); -} - -KSDDKAPI -NTSTATUS -NTAPI -KsDefaultAddEventHandler( - IN PIRP Irp, - IN PKSEVENTDATA EventData, - IN OUT PKSEVENT_ENTRY EventEntry - ); - -KSDDKAPI -void -NTAPI -KsGenerateEvents( - IN PVOID Object, - IN const GUID* EventSet OPTIONAL, - IN ULONG EventId, - IN ULONG DataSize, - IN PVOID Data OPTIONAL, - IN PFNKSGENERATEEVENTCALLBACK CallBack OPTIONAL, - IN PVOID CallBackContext OPTIONAL - ); - -void _inline -KsFilterGenerateEvents( - IN PKSFILTER Filter, - IN const GUID* EventSet OPTIONAL, - IN ULONG EventId, - IN ULONG DataSize, - IN PVOID Data OPTIONAL, - IN PFNKSGENERATEEVENTCALLBACK CallBack OPTIONAL, - IN PVOID CallBackContext OPTIONAL - ) -{ - KsGenerateEvents( - Filter, - EventSet, - EventId, - DataSize, - Data, - CallBack, - CallBackContext); -} - -void _inline -KsPinGenerateEvents( - IN PKSPIN Pin, - IN const GUID* EventSet OPTIONAL, - IN ULONG EventId, - IN ULONG DataSize, - IN PVOID Data OPTIONAL, - IN PFNKSGENERATEEVENTCALLBACK CallBack OPTIONAL, - IN PVOID CallBackContext OPTIONAL - ) -{ - KsGenerateEvents( - Pin, - EventSet, - EventId, - DataSize, - Data, - CallBack, - CallBackContext); -} - -typedef enum { - KSSTREAM_POINTER_STATE_UNLOCKED = 0, - KSSTREAM_POINTER_STATE_LOCKED -} KSSTREAM_POINTER_STATE; - -KSDDKAPI -NTSTATUS -NTAPI -KsPinGetAvailableByteCount( - IN PKSPIN Pin, - OUT PLONG InputDataBytes OPTIONAL, - OUT PLONG OutputBufferBytes OPTIONAL - ); - -KSDDKAPI -PKSSTREAM_POINTER -NTAPI -KsPinGetLeadingEdgeStreamPointer( - IN PKSPIN Pin, - IN KSSTREAM_POINTER_STATE State - ); - -KSDDKAPI -PKSSTREAM_POINTER -NTAPI -KsPinGetTrailingEdgeStreamPointer( - IN PKSPIN Pin, - IN KSSTREAM_POINTER_STATE State - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsStreamPointerSetStatusCode( - IN PKSSTREAM_POINTER StreamPointer, - IN NTSTATUS Status - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsStreamPointerLock( - IN PKSSTREAM_POINTER StreamPointer - ); - -KSDDKAPI -void -NTAPI -KsStreamPointerUnlock( - IN PKSSTREAM_POINTER StreamPointer, - IN BOOLEAN Eject - ); - -KSDDKAPI -void -NTAPI -KsStreamPointerAdvanceOffsetsAndUnlock( - IN PKSSTREAM_POINTER StreamPointer, - IN ULONG InUsed, - IN ULONG OutUsed, - IN BOOLEAN Eject - ); - -KSDDKAPI -void -NTAPI -KsStreamPointerDelete( - IN PKSSTREAM_POINTER StreamPointer - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsStreamPointerClone( - IN PKSSTREAM_POINTER StreamPointer, - IN PFNKSSTREAMPOINTER CancelCallback OPTIONAL, - IN ULONG ContextSize, - OUT PKSSTREAM_POINTER* CloneStreamPointer - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsStreamPointerAdvanceOffsets( - IN PKSSTREAM_POINTER StreamPointer, - IN ULONG InUsed, - IN ULONG OutUsed, - IN BOOLEAN Eject - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsStreamPointerAdvance( - IN PKSSTREAM_POINTER StreamPointer - ); - -KSDDKAPI -PMDL -NTAPI -KsStreamPointerGetMdl( - IN PKSSTREAM_POINTER StreamPointer - ); - -KSDDKAPI -PIRP -NTAPI -KsStreamPointerGetIrp( - IN PKSSTREAM_POINTER StreamPointer, - OUT PBOOLEAN FirstFrameInIrp OPTIONAL, - OUT PBOOLEAN LastFrameInIrp OPTIONAL - ); - -KSDDKAPI -void -NTAPI -KsStreamPointerScheduleTimeout( - IN PKSSTREAM_POINTER StreamPointer, - IN PFNKSSTREAMPOINTER Callback, - IN ULONGLONG Interval - ); - -KSDDKAPI -void -NTAPI -KsStreamPointerCancelTimeout( - IN PKSSTREAM_POINTER StreamPointer - ); - -KSDDKAPI -PKSSTREAM_POINTER -NTAPI -KsPinGetFirstCloneStreamPointer( - IN PKSPIN Pin - ); - -KSDDKAPI -PKSSTREAM_POINTER -NTAPI -KsStreamPointerGetNextClone( - IN PKSSTREAM_POINTER StreamPointer - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsPinHandshake( - IN PKSPIN Pin, - IN PKSHANDSHAKE In, - OUT PKSHANDSHAKE Out - ); - -KSDDKAPI -void -NTAPI -KsCompletePendingRequest( - IN PIRP Irp - ); - -KSDDKAPI -KSOBJECTTYPE -NTAPI -KsGetObjectTypeFromIrp( - IN PIRP Irp - ); - -KSDDKAPI -PVOID -NTAPI -KsGetObjectFromFileObject( - IN PFILE_OBJECT FileObject - ); - -KSDDKAPI -KSOBJECTTYPE -NTAPI -KsGetObjectTypeFromFileObject( - IN PFILE_OBJECT FileObject - ); - -PKSFILTER __inline -KsGetFilterFromFileObject( - IN PFILE_OBJECT FileObject - ) -{ - return (PKSFILTER) KsGetObjectFromFileObject(FileObject); -} - -PKSPIN __inline -KsGetPinFromFileObject( - IN PFILE_OBJECT FileObject - ) -{ - return (PKSPIN) KsGetObjectFromFileObject(FileObject); -} - -KSDDKAPI -PKSGATE -NTAPI -KsFilterGetAndGate( - IN PKSFILTER Filter - ); - -KSDDKAPI -void -NTAPI -KsFilterAcquireProcessingMutex( - IN PKSFILTER Filter - ); - -KSDDKAPI -void -NTAPI -KsFilterReleaseProcessingMutex( - IN PKSFILTER Filter - ); - -KSDDKAPI -void -NTAPI -KsFilterAttemptProcessing( - IN PKSFILTER Filter, - IN BOOLEAN Asynchronous - ); - -KSDDKAPI -PKSGATE -NTAPI -KsPinGetAndGate( - IN PKSPIN Pin - ); - -KSDDKAPI -void -NTAPI -KsPinAttachAndGate( - IN PKSPIN Pin, - IN PKSGATE AndGate OPTIONAL - ); - -KSDDKAPI -void -NTAPI -KsPinAttachOrGate( - IN PKSPIN Pin, - IN PKSGATE OrGate OPTIONAL - ); - -KSDDKAPI -void -NTAPI -KsPinAcquireProcessingMutex( - IN PKSPIN Pin - ); - -KSDDKAPI -void -NTAPI -KsPinReleaseProcessingMutex( - IN PKSPIN Pin - ); - -KSDDKAPI -BOOLEAN -NTAPI -KsProcessPinUpdate( - IN PKSPROCESSPIN ProcessPin - ); - -KSDDKAPI -void -NTAPI -KsPinGetCopyRelationships( - IN PKSPIN Pin, - OUT PKSPIN* CopySource, - OUT PKSPIN* DelegateBranch - ); - -KSDDKAPI -void -NTAPI -KsPinAttemptProcessing( - IN PKSPIN Pin, - IN BOOLEAN Asynchronous - ); - -KSDDKAPI -PVOID -NTAPI -KsGetParent( - IN PVOID Object - ); - -PKSDEVICE __inline -KsFilterFactoryGetParentDevice( - IN PKSFILTERFACTORY FilterFactory - ) -{ - return (PKSDEVICE) KsGetParent((PVOID) FilterFactory); -} - -PKSFILTERFACTORY __inline -KsFilterGetParentFilterFactory( - IN PKSFILTER Filter - ) -{ - return (PKSFILTERFACTORY) KsGetParent((PVOID) Filter); -} - -KSDDKAPI -PKSFILTER -NTAPI -KsPinGetParentFilter( - IN PKSPIN Pin - ); - -KSDDKAPI -PVOID -NTAPI -KsGetFirstChild( - IN PVOID Object - ); - -PKSFILTERFACTORY __inline -KsDeviceGetFirstChildFilterFactory( - IN PKSDEVICE Device - ) -{ - return (PKSFILTERFACTORY) KsGetFirstChild((PVOID) Device); -} - -PKSFILTER __inline -KsFilterFactoryGetFirstChildFilter( - IN PKSFILTERFACTORY FilterFactory - ) -{ - return (PKSFILTER) KsGetFirstChild((PVOID) FilterFactory); -} - -KSDDKAPI -ULONG -NTAPI -KsFilterGetChildPinCount( - IN PKSFILTER Filter, - IN ULONG PinId - ); - -KSDDKAPI -PKSPIN -NTAPI -KsFilterGetFirstChildPin( - IN PKSFILTER Filter, - IN ULONG PinId - ); - -KSDDKAPI -PVOID -NTAPI -KsGetNextSibling( - IN PVOID Object - ); - -KSDDKAPI -PKSPIN -NTAPI -KsPinGetNextSiblingPin( - IN PKSPIN Pin - ); - -PKSFILTERFACTORY __inline -KsFilterFactoryGetNextSiblingFilterFactory( - IN PKSFILTERFACTORY FilterFactory - ) -{ - return (PKSFILTERFACTORY) KsGetNextSibling((PVOID) FilterFactory); -} - -PKSFILTER __inline -KsFilterGetNextSiblingFilter( - IN PKSFILTER Filter - ) -{ - return (PKSFILTER) KsGetNextSibling((PVOID) Filter); -} - - -KSDDKAPI -PKSDEVICE -NTAPI -KsGetDevice( - IN PVOID Object - ); - -PKSDEVICE __inline -KsFilterFactoryGetDevice( - IN PKSFILTERFACTORY FilterFactory - ) -{ - return KsGetDevice((PVOID) FilterFactory); -} - -PKSDEVICE __inline -KsFilterGetDevice( - IN PKSFILTER Filter - ) -{ - return KsGetDevice((PVOID) Filter); -} - -PKSDEVICE __inline -KsPinGetDevice( - IN PKSPIN Pin - ) -{ - return KsGetDevice((PVOID) Pin); -} - -KSDDKAPI -PKSFILTER -NTAPI -KsGetFilterFromIrp( - IN PIRP Irp - ); - -KSDDKAPI -PKSPIN -NTAPI -KsGetPinFromIrp( - IN PIRP Irp - ); - -KSDDKAPI -ULONG -NTAPI -KsGetNodeIdFromIrp( - IN PIRP Irp - ); - -KSDDKAPI -void -NTAPI -KsAcquireControl( - IN PVOID Object - ); - -KSDDKAPI -void -NTAPI -KsReleaseControl( - IN PVOID Object - ); - -void __inline -KsFilterAcquireControl( - IN PKSFILTER Filter - ) -{ - KsAcquireControl((PVOID) Filter); -} - -void __inline -KsFilterReleaseControl( - IN PKSFILTER Filter - ) -{ - KsReleaseControl((PVOID) Filter); -} - -void __inline -KsPinAcquireControl( - IN PKSPIN Pin - ) -{ - KsAcquireControl((PVOID) Pin); -} - -void __inline -KsPinReleaseControl( - IN PKSPIN Pin - ) -{ - KsReleaseControl((PVOID) Pin); -} - -KSDDKAPI -NTSTATUS -NTAPI -KsAddItemToObjectBag( - IN KSOBJECT_BAG ObjectBag, - IN PVOID Item, - IN PFNKSFREE Free OPTIONAL - ); - -KSDDKAPI -ULONG -NTAPI -KsRemoveItemFromObjectBag( - IN KSOBJECT_BAG ObjectBag, - IN PVOID Item, - IN BOOLEAN Free - ); - -#define KsDiscard(Object,Pointer)\ - KsRemoveItemFromObjectBag(\ - (Object)->Bag,\ - (PVOID)(Pointer),\ - TRUE) - -KSDDKAPI -NTSTATUS -NTAPI -KsAllocateObjectBag( - IN PKSDEVICE Device, - OUT KSOBJECT_BAG* ObjectBag - ); - -KSDDKAPI -void -NTAPI -KsFreeObjectBag( - IN KSOBJECT_BAG ObjectBag - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsCopyObjectBagItems( - IN KSOBJECT_BAG ObjectBagDestination, - IN KSOBJECT_BAG ObjectBagSource - ); - -KSDDKAPI -NTSTATUS -NTAPI -_KsEdit( - IN KSOBJECT_BAG ObjectBag, - IN OUT PVOID* PointerToPointerToItem, - IN ULONG NewSize, - IN ULONG OldSize, - IN ULONG Tag - ); - -#define KsEdit(Object,PointerToPointer,Tag)\ - _KsEdit(\ - (Object)->Bag,\ - (PVOID*)(PointerToPointer),\ - sizeof(**(PointerToPointer)),\ - sizeof(**(PointerToPointer)),\ - (Tag)) -#define KsEditSized(Object,PointerToPointer,NewSize,OldSize,Tag)\ - _KsEdit((Object)->Bag,(PVOID*)(PointerToPointer),(NewSize),(OldSize),(Tag)) - -KSDDKAPI -NTSTATUS -NTAPI -KsRegisterFilterWithNoKSPins( - IN PDEVICE_OBJECT DeviceObject, - IN const GUID * InterfaceClassGUID, - IN ULONG PinCount, - IN BOOL * PinDirection, - IN KSPIN_MEDIUM * MediumList, - IN OPTIONAL GUID * CategoryList -); - -KSDDKAPI -NTSTATUS -NTAPI -KsFilterCreatePinFactory ( - IN PKSFILTER Filter, - IN const KSPIN_DESCRIPTOR_EX *const PinDescriptor, - OUT PULONG PinID - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsFilterCreateNode ( - IN PKSFILTER Filter, - IN const KSNODE_DESCRIPTOR *const NodeDescriptor, - OUT PULONG NodeID - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsFilterAddTopologyConnections ( - IN PKSFILTER Filter, - IN ULONG NewConnectionsCount, - IN const KSTOPOLOGY_CONNECTION *const NewTopologyConnections - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsPinGetConnectedPinInterface( - IN PKSPIN Pin, - IN const GUID* InterfaceId, - OUT PVOID* Interface - ); - -KSDDKAPI -PFILE_OBJECT -NTAPI -KsPinGetConnectedPinFileObject( - IN PKSPIN Pin - ); - -KSDDKAPI -PDEVICE_OBJECT -NTAPI -KsPinGetConnectedPinDeviceObject( - IN PKSPIN Pin - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsPinGetConnectedFilterInterface( - IN PKSPIN Pin, - IN const GUID* InterfaceId, - OUT PVOID* Interface - ); - -#if defined(_UNKNOWN_H_) || defined(__IUnknown_INTERFACE_DEFINED__) - -KSDDKAPI -NTSTATUS -NTAPI -KsPinGetReferenceClockInterface( - IN PKSPIN Pin, - OUT PIKSREFERENCECLOCK* Interface - ); - -#endif //defined(_UNKNOWN_H_) || defined(__IUnknown_INTERFACE_DEFINED__) - -KSDDKAPI -VOID -NTAPI -KsPinSetPinClockTime( - IN PKSPIN Pin, - IN LONGLONG Time - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsPinSubmitFrame( - IN PKSPIN Pin, - IN PVOID Data OPTIONAL, - IN ULONG Size OPTIONAL, - IN PKSSTREAM_HEADER StreamHeader OPTIONAL, - IN PVOID Context OPTIONAL - ); - -KSDDKAPI -NTSTATUS -NTAPI -KsPinSubmitFrameMdl( - IN PKSPIN Pin, - IN PMDL Mdl OPTIONAL, - IN PKSSTREAM_HEADER StreamHeader OPTIONAL, - IN PVOID Context OPTIONAL - ); - -KSDDKAPI -void -NTAPI -KsPinRegisterFrameReturnCallback( - IN PKSPIN Pin, - IN PFNKSPINFRAMERETURN FrameReturn - ); - -KSDDKAPI -void -NTAPI -KsPinRegisterIrpCompletionCallback( - IN PKSPIN Pin, - IN PFNKSPINIRPCOMPLETION IrpCompletion - ); - -KSDDKAPI -void -NTAPI -KsPinRegisterHandshakeCallback( - IN PKSPIN Pin, - IN PFNKSPINHANDSHAKE Handshake - ); - -KSDDKAPI -void -NTAPI -KsFilterRegisterPowerCallbacks( - IN PKSFILTER Filter, - IN PFNKSFILTERPOWER Sleep OPTIONAL, - IN PFNKSFILTERPOWER Wake OPTIONAL - ); - -KSDDKAPI -void -NTAPI -KsPinRegisterPowerCallbacks( - IN PKSPIN Pin, - IN PFNKSPINPOWER Sleep OPTIONAL, - IN PFNKSPINPOWER Wake OPTIONAL - ); - -#if defined(_UNKNOWN_H_) || defined(__IUnknown_INTERFACE_DEFINED__) - -KSDDKAPI -PUNKNOWN -NTAPI -KsRegisterAggregatedClientUnknown( - IN PVOID Object, - IN PUNKNOWN ClientUnknown - ); - -KSDDKAPI -PUNKNOWN -NTAPI -KsGetOuterUnknown( - IN PVOID Object - ); - -PUNKNOWN __inline -KsDeviceRegisterAggregatedClientUnknown( - IN PKSDEVICE Device, - IN PUNKNOWN ClientUnknown - ) -{ - return KsRegisterAggregatedClientUnknown((PVOID) Device,ClientUnknown); -} - -PUNKNOWN __inline -KsDeviceGetOuterUnknown( - IN PKSDEVICE Device - ) -{ - return KsGetOuterUnknown((PVOID) Device); -} - -PUNKNOWN __inline -KsFilterFactoryRegisterAggregatedClientUnknown( - IN PKSFILTERFACTORY FilterFactory, - IN PUNKNOWN ClientUnknown - ) -{ - return KsRegisterAggregatedClientUnknown((PVOID) FilterFactory,ClientUnknown); -} - -PUNKNOWN __inline -KsFilterFactoryGetOuterUnknown( - IN PKSFILTERFACTORY FilterFactory - ) -{ - return KsGetOuterUnknown((PVOID) FilterFactory); -} - -PUNKNOWN __inline -KsFilterRegisterAggregatedClientUnknown( - IN PKSFILTER Filter, - IN PUNKNOWN ClientUnknown - ) -{ - return KsRegisterAggregatedClientUnknown((PVOID) Filter,ClientUnknown); -} - -PUNKNOWN __inline -KsFilterGetOuterUnknown( - IN PKSFILTER Filter - ) -{ - return KsGetOuterUnknown((PVOID) Filter); -} - -PUNKNOWN __inline -KsPinRegisterAggregatedClientUnknown( - IN PKSPIN Pin, - IN PUNKNOWN ClientUnknown - ) -{ - return KsRegisterAggregatedClientUnknown((PVOID) Pin,ClientUnknown); -} - -PUNKNOWN __inline -KsPinGetOuterUnknown( - IN PKSPIN Pin - ) -{ - return KsGetOuterUnknown((PVOID) Pin); -} - -#endif // defined(_UNKNOWN_H_) || defined(__IUnknown_INTERFACE_DEFINED__) - -#else // !defined(_NTDDK_) - -#if !defined( KS_NO_CREATE_FUNCTIONS ) - -KSDDKAPI -DWORD -WINAPI -KsCreateAllocator( - IN HANDLE ConnectionHandle, - IN PKSALLOCATOR_FRAMING AllocatorFraming, - OUT PHANDLE AllocatorHandle - ); - -KSDDKAPI -DWORD -NTAPI -KsCreateClock( - IN HANDLE ConnectionHandle, - IN PKSCLOCK_CREATE ClockCreate, - OUT PHANDLE ClockHandle - ); - -KSDDKAPI -DWORD -WINAPI -KsCreatePin( - IN HANDLE FilterHandle, - IN PKSPIN_CONNECT Connect, - IN ACCESS_MASK DesiredAccess, - OUT PHANDLE ConnectionHandle - ); - -KSDDKAPI -DWORD -WINAPI -KsCreateTopologyNode( - IN HANDLE ParentHandle, - IN PKSNODE_CREATE NodeCreate, - IN ACCESS_MASK DesiredAccess, - OUT PHANDLE NodeHandle - ); - -#endif - -#endif // !defined(_NTDDK_) - -#if defined(__cplusplus) -} -#endif // defined(__cplusplus) - - -#define DENY_USERMODE_ACCESS( pIrp, CompleteRequest ) \ -if ( pIrp->RequestorMode != KernelMode ) { \ - pIrp->IoStatus.Information = 0; \ - pIrp->IoStatus.Status = STATUS_INVALID_DEVICE_REQUEST; \ - if ( CompleteRequest ) IoCompleteRequest ( pIrp, IO_NO_INCREMENT ); \ - return STATUS_INVALID_DEVICE_REQUEST; \ -} - - -#endif // !_KS_ +/*++ + +Copyright (c) Microsoft Corporation. All rights reserved. + +Module Name: + + ks.h + +Abstract: + + Windows Driver Model/Connection and Streaming Architecture (WDM-CSA) + core definitions. + +--*/ + +#if !defined(_KS_) +#define _KS_ + +#if defined(__TCS__) +#define _KS_NO_ANONYMOUS_STRUCTURES_ 1 +#endif + +#if !defined(_NTRTL_) + #ifndef DEFINE_GUIDEX + #define DEFINE_GUIDEX(name) EXTERN_C const CDECL GUID name + #endif // !defined(DEFINE_GUIDEX) + + #ifndef STATICGUIDOF + #define STATICGUIDOF(guid) STATIC_##guid + #endif // !defined(STATICGUIDOF) +#endif // !defined(_NTRTL_) + +#ifndef SIZEOF_ARRAY + #define SIZEOF_ARRAY(ar) (sizeof(ar)/sizeof((ar)[0])) +#endif // !defined(SIZEOF_ARRAY) + +#if defined(__cplusplus) && _MSC_VER >= 1100 +#define DEFINE_GUIDSTRUCT(g, n) struct __declspec(uuid(g)) n +#define DEFINE_GUIDNAMED(n) __uuidof(struct n) +#else // !defined(__cplusplus) +#define DEFINE_GUIDSTRUCT(g, n) DEFINE_GUIDEX(n) +#define DEFINE_GUIDNAMED(n) n +#endif // !defined(__cplusplus) + +//=========================================================================== + +#define STATIC_GUID_NULL \ + 0x00000000L, 0x0000, 0x0000, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + +DEFINE_GUIDSTRUCT("00000000-0000-0000-0000-000000000000", GUID_NULL); +#define GUID_NULL DEFINE_GUIDNAMED(GUID_NULL) + +//=========================================================================== + +#define IOCTL_KS_PROPERTY CTL_CODE(FILE_DEVICE_KS, 0x000, METHOD_NEITHER, FILE_ANY_ACCESS) +#define IOCTL_KS_ENABLE_EVENT CTL_CODE(FILE_DEVICE_KS, 0x001, METHOD_NEITHER, FILE_ANY_ACCESS) +#define IOCTL_KS_DISABLE_EVENT CTL_CODE(FILE_DEVICE_KS, 0x002, METHOD_NEITHER, FILE_ANY_ACCESS) +#define IOCTL_KS_METHOD CTL_CODE(FILE_DEVICE_KS, 0x003, METHOD_NEITHER, FILE_ANY_ACCESS) +#define IOCTL_KS_WRITE_STREAM CTL_CODE(FILE_DEVICE_KS, 0x004, METHOD_NEITHER, FILE_WRITE_ACCESS) +#define IOCTL_KS_READ_STREAM CTL_CODE(FILE_DEVICE_KS, 0x005, METHOD_NEITHER, FILE_READ_ACCESS) +#define IOCTL_KS_RESET_STATE CTL_CODE(FILE_DEVICE_KS, 0x006, METHOD_NEITHER, FILE_ANY_ACCESS) + +//=========================================================================== + +typedef enum { + KSRESET_BEGIN, + KSRESET_END +} KSRESET; + +typedef enum { + KSSTATE_STOP, + KSSTATE_ACQUIRE, + KSSTATE_PAUSE, + KSSTATE_RUN +} KSSTATE, *PKSSTATE; + +#define KSPRIORITY_LOW 0x00000001 +#define KSPRIORITY_NORMAL 0x40000000 +#define KSPRIORITY_HIGH 0x80000000 +#define KSPRIORITY_EXCLUSIVE 0xFFFFFFFF + +typedef struct { + ULONG PriorityClass; + ULONG PrioritySubClass; +} KSPRIORITY, *PKSPRIORITY; + +typedef struct { + union { +#if defined( _KS_NO_ANONYMOUS_STRUCTURES_ ) + struct _IDENTIFIER { +#else + struct { +#endif + GUID Set; + ULONG Id; + ULONG Flags; + }; + LONGLONG Alignment; + }; +} KSIDENTIFIER, *PKSIDENTIFIER; + +typedef KSIDENTIFIER KSPROPERTY, *PKSPROPERTY, KSMETHOD, *PKSMETHOD, KSEVENT, *PKSEVENT; + +#define KSMETHOD_TYPE_NONE 0x00000000 +#define KSMETHOD_TYPE_READ 0x00000001 +#define KSMETHOD_TYPE_WRITE 0x00000002 +#define KSMETHOD_TYPE_MODIFY 0x00000003 +#define KSMETHOD_TYPE_SOURCE 0x00000004 + +#define KSMETHOD_TYPE_SEND 0x00000001 +#define KSMETHOD_TYPE_SETSUPPORT 0x00000100 +#define KSMETHOD_TYPE_BASICSUPPORT 0x00000200 + +#define KSMETHOD_TYPE_TOPOLOGY 0x10000000 + +#define KSPROPERTY_TYPE_GET 0x00000001 +#define KSPROPERTY_TYPE_SET 0x00000002 +#define KSPROPERTY_TYPE_SETSUPPORT 0x00000100 +#define KSPROPERTY_TYPE_BASICSUPPORT 0x00000200 +#define KSPROPERTY_TYPE_RELATIONS 0x00000400 +#define KSPROPERTY_TYPE_SERIALIZESET 0x00000800 +#define KSPROPERTY_TYPE_UNSERIALIZESET 0x00001000 +#define KSPROPERTY_TYPE_SERIALIZERAW 0x00002000 +#define KSPROPERTY_TYPE_UNSERIALIZERAW 0x00004000 +#define KSPROPERTY_TYPE_SERIALIZESIZE 0x00008000 +#define KSPROPERTY_TYPE_DEFAULTVALUES 0x00010000 + +#define KSPROPERTY_TYPE_TOPOLOGY 0x10000000 + +typedef struct { + KSPROPERTY Property; + ULONG NodeId; + ULONG Reserved; +} KSP_NODE, *PKSP_NODE; + +typedef struct { + KSMETHOD Method; + ULONG NodeId; + ULONG Reserved; +} KSM_NODE, *PKSM_NODE; + +typedef struct { + KSEVENT Event; + ULONG NodeId; + ULONG Reserved; +} KSE_NODE, *PKSE_NODE; + +#define STATIC_KSPROPTYPESETID_General \ + 0x97E99BA0L, 0xBDEA, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 +DEFINE_GUIDSTRUCT("97E99BA0-BDEA-11CF-A5D6-28DB04C10000", KSPROPTYPESETID_General); +#define KSPROPTYPESETID_General DEFINE_GUIDNAMED(KSPROPTYPESETID_General) + +#if defined(_NTDDK_) && !defined(__wtypes_h__) +enum VARENUM { + VT_EMPTY = 0, + VT_NULL = 1, + VT_I2 = 2, + VT_I4 = 3, + VT_R4 = 4, + VT_R8 = 5, + VT_CY = 6, + VT_DATE = 7, + VT_BSTR = 8, + VT_DISPATCH = 9, + VT_ERROR = 10, + VT_BOOL = 11, + VT_VARIANT = 12, + VT_UNKNOWN = 13, + VT_DECIMAL = 14, + VT_I1 = 16, + VT_UI1 = 17, + VT_UI2 = 18, + VT_UI4 = 19, + VT_I8 = 20, + VT_UI8 = 21, + VT_INT = 22, + VT_UINT = 23, + VT_VOID = 24, + VT_HRESULT = 25, + VT_PTR = 26, + VT_SAFEARRAY = 27, + VT_CARRAY = 28, + VT_USERDEFINED = 29, + VT_LPSTR = 30, + VT_LPWSTR = 31, + VT_FILETIME = 64, + VT_BLOB = 65, + VT_STREAM = 66, + VT_STORAGE = 67, + VT_STREAMED_OBJECT = 68, + VT_STORED_OBJECT = 69, + VT_BLOB_OBJECT = 70, + VT_CF = 71, + VT_CLSID = 72, + VT_VECTOR = 0x1000, + VT_ARRAY = 0x2000, + VT_BYREF = 0x4000, + VT_RESERVED = 0x8000, + VT_ILLEGAL = 0xffff, + VT_ILLEGALMASKED = 0xfff, + VT_TYPEMASK = 0xfff +}; +#endif // _NTDDK_ && !__wtypes_h__ + +typedef struct { + ULONG Size; + ULONG Count; +} KSMULTIPLE_ITEM, *PKSMULTIPLE_ITEM; + +typedef struct { + ULONG AccessFlags; + ULONG DescriptionSize; + KSIDENTIFIER PropTypeSet; + ULONG MembersListCount; + ULONG Reserved; +} KSPROPERTY_DESCRIPTION, *PKSPROPERTY_DESCRIPTION; + +#define KSPROPERTY_MEMBER_RANGES 0x00000001 +#define KSPROPERTY_MEMBER_STEPPEDRANGES 0x00000002 +#define KSPROPERTY_MEMBER_VALUES 0x00000003 + +#define KSPROPERTY_MEMBER_FLAG_DEFAULT 0x00000001 +#define KSPROPERTY_MEMBER_FLAG_BASICSUPPORT_MULTICHANNEL 0x00000002 +#define KSPROPERTY_MEMBER_FLAG_BASICSUPPORT_UNIFORM 0x00000004 + +typedef struct { + ULONG MembersFlags; + ULONG MembersSize; + ULONG MembersCount; + ULONG Flags; +} KSPROPERTY_MEMBERSHEADER, *PKSPROPERTY_MEMBERSHEADER; + +typedef union { +#if defined( _KS_NO_ANONYMOUS_STRUCTURES_ ) + struct _SIGNED { +#else + struct { +#endif + LONG SignedMinimum; + LONG SignedMaximum; + }; +#if defined( _KS_NO_ANONYMOUS_STRUCTURES_ ) + struct _UNSIGNED { +#else + struct { +#endif + ULONG UnsignedMinimum; + ULONG UnsignedMaximum; + }; +} KSPROPERTY_BOUNDS_LONG, *PKSPROPERTY_BOUNDS_LONG; + +typedef union { +#if defined( _KS_NO_ANONYMOUS_STRUCTURES_ ) + struct _SIGNED64 { +#else + struct { +#endif + LONGLONG SignedMinimum; + LONGLONG SignedMaximum; + }; +#if defined( _KS_NO_ANONYMOUS_STRUCTURES_ ) + struct _UNSIGNED64 { +#else + struct { +#endif +#if defined(_NTDDK_) + ULONGLONG UnsignedMinimum; + ULONGLONG UnsignedMaximum; +#else // !_NTDDK_ + DWORDLONG UnsignedMinimum; + DWORDLONG UnsignedMaximum; +#endif // !_NTDDK_ + }; +} KSPROPERTY_BOUNDS_LONGLONG, *PKSPROPERTY_BOUNDS_LONGLONG; + +typedef struct { + ULONG SteppingDelta; + ULONG Reserved; + KSPROPERTY_BOUNDS_LONG Bounds; +} KSPROPERTY_STEPPING_LONG, *PKSPROPERTY_STEPPING_LONG; + +typedef struct { +#if defined(_NTDDK_) + ULONGLONG SteppingDelta; +#else // !_NTDDK_ + DWORDLONG SteppingDelta; +#endif // !_NTDDK_ + KSPROPERTY_BOUNDS_LONGLONG Bounds; +} KSPROPERTY_STEPPING_LONGLONG, *PKSPROPERTY_STEPPING_LONGLONG; + +//=========================================================================== + +#if defined(_NTDDK_) +// +// Structure forward declarations. +// +typedef struct _KSDEVICE_DESCRIPTOR +KSDEVICE_DESCRIPTOR, *PKSDEVICE_DESCRIPTOR; +typedef struct _KSDEVICE_DISPATCH +KSDEVICE_DISPATCH, *PKSDEVICE_DISPATCH; +typedef struct _KSDEVICE +KSDEVICE, *PKSDEVICE; +typedef struct _KSFILTERFACTORY +KSFILTERFACTORY, *PKSFILTERFACTORY; +typedef struct _KSFILTER_DESCRIPTOR +KSFILTER_DESCRIPTOR, *PKSFILTER_DESCRIPTOR; +typedef struct _KSFILTER_DISPATCH +KSFILTER_DISPATCH, *PKSFILTER_DISPATCH; +typedef struct _KSFILTER +KSFILTER, *PKSFILTER; +typedef struct _KSPIN_DESCRIPTOR_EX +KSPIN_DESCRIPTOR_EX, *PKSPIN_DESCRIPTOR_EX; +typedef struct _KSPIN_DISPATCH +KSPIN_DISPATCH, *PKSPIN_DISPATCH; +typedef struct _KSCLOCK_DISPATCH +KSCLOCK_DISPATCH, *PKSCLOCK_DISPATCH; +typedef struct _KSALLOCATOR_DISPATCH +KSALLOCATOR_DISPATCH, *PKSALLOCATOR_DISPATCH; +typedef struct _KSPIN +KSPIN, *PKSPIN; +typedef struct _KSNODE_DESCRIPTOR +KSNODE_DESCRIPTOR, *PKSNODE_DESCRIPTOR; +typedef struct _KSSTREAM_POINTER_OFFSET +KSSTREAM_POINTER_OFFSET, *PKSSTREAM_POINTER_OFFSET; +typedef struct _KSSTREAM_POINTER +KSSTREAM_POINTER, *PKSSTREAM_POINTER; +typedef struct _KSMAPPING +KSMAPPING, *PKSMAPPING; +typedef struct _KSPROCESSPIN +KSPROCESSPIN, *PKSPROCESSPIN; +typedef struct _KSPROCESSPIN_INDEXENTRY +KSPROCESSPIN_INDEXENTRY, *PKSPROCESSPIN_INDEXENTRY; +#endif // _NTDDK_ + +typedef PVOID PKSWORKER; + +typedef struct { + ULONG NotificationType; + union { + struct { + HANDLE Event; + ULONG_PTR Reserved[2]; + } EventHandle; + struct { + HANDLE Semaphore; + ULONG Reserved; + LONG Adjustment; + } SemaphoreHandle; +#if defined(_NTDDK_) + struct { + PVOID Event; + KPRIORITY Increment; + ULONG_PTR Reserved; + } EventObject; + struct { + PVOID Semaphore; + KPRIORITY Increment; + LONG Adjustment; + } SemaphoreObject; + struct { + PKDPC Dpc; + ULONG ReferenceCount; + ULONG_PTR Reserved; + } Dpc; + struct { + PWORK_QUEUE_ITEM WorkQueueItem; + WORK_QUEUE_TYPE WorkQueueType; + ULONG_PTR Reserved; + } WorkItem; + struct { + PWORK_QUEUE_ITEM WorkQueueItem; + PKSWORKER KsWorkerObject; + ULONG_PTR Reserved; + } KsWorkItem; +// @@BEGIN_DDKSPLIT + struct { + PKSFILTER Filter; + ULONG_PTR Reserved[2]; + } KsFilterProcessing; + struct { + PKSPIN Pin; + ULONG_PTR Reserved[2]; + } KsPinProcessing; +// @@END_DDKSPLIT +#endif // defined(_NTDDK_) + struct { + PVOID Unused; + LONG_PTR Alignment[2]; + } Alignment; + }; +} KSEVENTDATA, *PKSEVENTDATA; + +#define KSEVENTF_EVENT_HANDLE 0x00000001 +#define KSEVENTF_SEMAPHORE_HANDLE 0x00000002 +#if defined(_NTDDK_) +#define KSEVENTF_EVENT_OBJECT 0x00000004 +#define KSEVENTF_SEMAPHORE_OBJECT 0x00000008 +#define KSEVENTF_DPC 0x00000010 +#define KSEVENTF_WORKITEM 0x00000020 +#define KSEVENTF_KSWORKITEM 0x00000080 +// @@BEGIN_DDKSPLIT +#define KSEVENTF_KSFILTERPROCESSING 0x00000100 +#define KSEVENTF_KSPINPROCESSING 0x00000200 +// @@END_DDKSPLIT +#endif // defined(_NTDDK_) + +#define KSEVENT_TYPE_ENABLE 0x00000001 +#define KSEVENT_TYPE_ONESHOT 0x00000002 +#define KSEVENT_TYPE_ENABLEBUFFERED 0x00000004 +#define KSEVENT_TYPE_SETSUPPORT 0x00000100 +#define KSEVENT_TYPE_BASICSUPPORT 0x00000200 +#define KSEVENT_TYPE_QUERYBUFFER 0x00000400 + +#define KSEVENT_TYPE_TOPOLOGY 0x10000000 + +typedef struct { + KSEVENT Event; + PKSEVENTDATA EventData; + PVOID Reserved; +} KSQUERYBUFFER, *PKSQUERYBUFFER; + +typedef struct { + ULONG Size; + ULONG Flags; + union { + HANDLE ObjectHandle; + PVOID ObjectPointer; + }; + PVOID Reserved; + KSEVENT Event; + KSEVENTDATA EventData; +} KSRELATIVEEVENT; + +#define KSRELATIVEEVENT_FLAG_HANDLE 0x00000001 +#define KSRELATIVEEVENT_FLAG_POINTER 0x00000002 + +//=========================================================================== + +typedef struct { + KSEVENTDATA EventData; + LONGLONG MarkTime; +} KSEVENT_TIME_MARK, *PKSEVENT_TIME_MARK; + +typedef struct { + KSEVENTDATA EventData; + LONGLONG TimeBase; + LONGLONG Interval; +} KSEVENT_TIME_INTERVAL, *PKSEVENT_TIME_INTERVAL; + +typedef struct { + LONGLONG TimeBase; + LONGLONG Interval; +} KSINTERVAL, *PKSINTERVAL; + +//=========================================================================== + +#define STATIC_KSPROPSETID_General\ + 0x1464EDA5L, 0x6A8F, 0x11D1, 0x9A, 0xA7, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 +DEFINE_GUIDSTRUCT("1464EDA5-6A8F-11D1-9AA7-00A0C9223196", KSPROPSETID_General); +#define KSPROPSETID_General DEFINE_GUIDNAMED(KSPROPSETID_General) + +typedef enum { + KSPROPERTY_GENERAL_COMPONENTID +} KSPROPERTY_GENERAL; + +typedef struct { + GUID Manufacturer; + GUID Product; + GUID Component; + GUID Name; + ULONG Version; + ULONG Revision; +} KSCOMPONENTID, *PKSCOMPONENTID; + +#define DEFINE_KSPROPERTY_ITEM_GENERAL_COMPONENTID(Handler)\ + DEFINE_KSPROPERTY_ITEM(\ + KSPROPERTY_GENERAL_COMPONENTID,\ + (Handler),\ + sizeof(KSPROPERTY),\ + sizeof(KSCOMPONENTID),\ + NULL, NULL, 0, NULL, NULL, 0) + +#define STATIC_KSMETHODSETID_StreamIo\ + 0x65D003CAL, 0x1523, 0x11D2, 0xB2, 0x7A, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 +DEFINE_GUIDSTRUCT("65D003CA-1523-11D2-B27A-00A0C9223196", KSMETHODSETID_StreamIo); +#define KSMETHODSETID_StreamIo DEFINE_GUIDNAMED(KSMETHODSETID_StreamIo) + +typedef enum { + KSMETHOD_STREAMIO_READ, + KSMETHOD_STREAMIO_WRITE +} KSMETHOD_STREAMIO; + +#define DEFINE_KSMETHOD_ITEM_STREAMIO_READ(Handler)\ + DEFINE_KSMETHOD_ITEM(\ + KSMETHOD_STREAMIO_READ,\ + KSMETHOD_TYPE_WRITE,\ + (Handler),\ + sizeof(KSMETHOD),\ + 0,\ + NULL) + +#define DEFINE_KSMETHOD_ITEM_STREAMIO_WRITE(Handler)\ + DEFINE_KSMETHOD_ITEM(\ + KSMETHOD_STREAMIO_WRITE,\ + KSMETHOD_TYPE_READ,\ + (Handler),\ + sizeof(KSMETHOD),\ + 0,\ + NULL) + +#define STATIC_KSPROPSETID_MediaSeeking\ + 0xEE904F0CL, 0xD09B, 0x11D0, 0xAB, 0xE9, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 +DEFINE_GUIDSTRUCT("EE904F0C-D09B-11D0-ABE9-00A0C9223196", KSPROPSETID_MediaSeeking); +#define KSPROPSETID_MediaSeeking DEFINE_GUIDNAMED(KSPROPSETID_MediaSeeking) + +typedef enum { + KSPROPERTY_MEDIASEEKING_CAPABILITIES, + KSPROPERTY_MEDIASEEKING_FORMATS, + KSPROPERTY_MEDIASEEKING_TIMEFORMAT, + KSPROPERTY_MEDIASEEKING_POSITION, + KSPROPERTY_MEDIASEEKING_STOPPOSITION, + KSPROPERTY_MEDIASEEKING_POSITIONS, + KSPROPERTY_MEDIASEEKING_DURATION, + KSPROPERTY_MEDIASEEKING_AVAILABLE, + KSPROPERTY_MEDIASEEKING_PREROLL, + KSPROPERTY_MEDIASEEKING_CONVERTTIMEFORMAT +} KSPROPERTY_MEDIASEEKING; + +typedef enum { + KS_SEEKING_NoPositioning, + KS_SEEKING_AbsolutePositioning, + KS_SEEKING_RelativePositioning, + KS_SEEKING_IncrementalPositioning, + KS_SEEKING_PositioningBitsMask = 0x3, + KS_SEEKING_SeekToKeyFrame, + KS_SEEKING_ReturnTime = 0x8 +} KS_SEEKING_FLAGS; + +typedef enum { + KS_SEEKING_CanSeekAbsolute = 0x1, + KS_SEEKING_CanSeekForwards = 0x2, + KS_SEEKING_CanSeekBackwards = 0x4, + KS_SEEKING_CanGetCurrentPos = 0x8, + KS_SEEKING_CanGetStopPos = 0x10, + KS_SEEKING_CanGetDuration = 0x20, + KS_SEEKING_CanPlayBackwards = 0x40 +} KS_SEEKING_CAPABILITIES; + +typedef struct { + LONGLONG Current; + LONGLONG Stop; + KS_SEEKING_FLAGS CurrentFlags; + KS_SEEKING_FLAGS StopFlags; +} KSPROPERTY_POSITIONS, *PKSPROPERTY_POSITIONS; + +typedef struct { + LONGLONG Earliest; + LONGLONG Latest; +} KSPROPERTY_MEDIAAVAILABLE, *PKSPROPERTY_MEDIAAVAILABLE; + +typedef struct { + KSPROPERTY Property; + GUID SourceFormat; + GUID TargetFormat; + LONGLONG Time; +} KSP_TIMEFORMAT, *PKSP_TIMEFORMAT; + +#define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_CAPABILITIES(Handler)\ + DEFINE_KSPROPERTY_ITEM(\ + KSPROPERTY_MEDIASEEKING_CAPABILITIES,\ + (Handler),\ + sizeof(KSPROPERTY),\ + sizeof(KS_SEEKING_CAPABILITIES),\ + NULL, NULL, 0, NULL, NULL, 0) + +#define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_FORMATS(Handler)\ + DEFINE_KSPROPERTY_ITEM(\ + KSPROPERTY_MEDIASEEKING_FORMATS,\ + (Handler),\ + sizeof(KSPROPERTY),\ + 0,\ + NULL, NULL, 0, NULL, NULL, 0) + +#define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_TIMEFORMAT(GetHandler, SetHandler)\ + DEFINE_KSPROPERTY_ITEM(\ + KSPROPERTY_MEDIASEEKING_TIMEFORMAT,\ + (GetHandler),\ + sizeof(KSPROPERTY),\ + sizeof(GUID),\ + (SetHandler),\ + NULL, 0, NULL, NULL, 0) + +#define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_POSITION(Handler)\ + DEFINE_KSPROPERTY_ITEM(\ + KSPROPERTY_MEDIASEEKING_POSITION,\ + (Handler),\ + sizeof(KSPROPERTY),\ + sizeof(LONGLONG),\ + NULL, NULL, 0, NULL, NULL, 0) + +#define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_STOPPOSITION(Handler)\ + DEFINE_KSPROPERTY_ITEM(\ + KSPROPERTY_MEDIASEEKING_STOPPOSITION,\ + (Handler),\ + sizeof(KSPROPERTY),\ + sizeof(LONGLONG),\ + NULL, NULL, 0, NULL, NULL, 0) + +#define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_POSITIONS(Handler)\ + DEFINE_KSPROPERTY_ITEM(\ + KSPROPERTY_MEDIASEEKING_POSITIONS,\ + NULL,\ + sizeof(KSPROPERTY),\ + sizeof(KSPROPERTY_POSITIONS),\ + (Handler),\ + NULL, 0, NULL, NULL, 0) + +#define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_DURATION(Handler)\ + DEFINE_KSPROPERTY_ITEM(\ + KSPROPERTY_MEDIASEEKING_DURATION,\ + (Handler),\ + sizeof(KSPROPERTY),\ + sizeof(LONGLONG),\ + NULL, NULL, 0, NULL, NULL, 0) + +#define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_AVAILABLE(Handler)\ + DEFINE_KSPROPERTY_ITEM(\ + KSPROPERTY_MEDIASEEKING_AVAILABLE,\ + (Handler),\ + sizeof(KSPROPERTY),\ + sizeof(KSPROPERTY_MEDIAAVAILABLE),\ + NULL, NULL, 0, NULL, NULL, 0) + +#define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_PREROLL(Handler)\ + DEFINE_KSPROPERTY_ITEM(\ + KSPROPERTY_MEDIASEEKING_PREROLL,\ + (Handler),\ + sizeof(KSPROPERTY),\ + sizeof(LONGLONG),\ + NULL, NULL, 0, NULL, NULL, 0) + +#define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_CONVERTTIMEFORMAT(Handler)\ + DEFINE_KSPROPERTY_ITEM(\ + KSPROPERTY_MEDIASEEKING_CONVERTTIMEFORMAT,\ + (Handler),\ + sizeof(KSP_TIMEFORMAT),\ + sizeof(LONGLONG),\ + NULL, NULL, 0, NULL, NULL, 0) + +//=========================================================================== + +#define STATIC_KSPROPSETID_Topology\ + 0x720D4AC0L, 0x7533, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 +DEFINE_GUIDSTRUCT("720D4AC0-7533-11D0-A5D6-28DB04C10000", KSPROPSETID_Topology); +#define KSPROPSETID_Topology DEFINE_GUIDNAMED(KSPROPSETID_Topology) + +typedef enum { + KSPROPERTY_TOPOLOGY_CATEGORIES, + KSPROPERTY_TOPOLOGY_NODES, + KSPROPERTY_TOPOLOGY_CONNECTIONS, + KSPROPERTY_TOPOLOGY_NAME +} KSPROPERTY_TOPOLOGY; + +#define DEFINE_KSPROPERTY_ITEM_TOPOLOGY_CATEGORIES(Handler)\ + DEFINE_KSPROPERTY_ITEM(\ + KSPROPERTY_TOPOLOGY_CATEGORIES,\ + (Handler),\ + sizeof(KSPROPERTY),\ + 0,\ + NULL, NULL, 0, NULL, NULL, 0) + +#define DEFINE_KSPROPERTY_ITEM_TOPOLOGY_NODES(Handler)\ + DEFINE_KSPROPERTY_ITEM(\ + KSPROPERTY_TOPOLOGY_NODES,\ + (Handler),\ + sizeof(KSPROPERTY),\ + 0,\ + NULL, NULL, 0, NULL, NULL, 0) + +#define DEFINE_KSPROPERTY_ITEM_TOPOLOGY_CONNECTIONS(Handler)\ + DEFINE_KSPROPERTY_ITEM(\ + KSPROPERTY_TOPOLOGY_CONNECTIONS,\ + (Handler),\ + sizeof(KSPROPERTY),\ + 0,\ + NULL, NULL, 0, NULL, NULL, 0) + +#define DEFINE_KSPROPERTY_ITEM_TOPOLOGY_NAME(Handler)\ + DEFINE_KSPROPERTY_ITEM(\ + KSPROPERTY_TOPOLOGY_NAME,\ + (Handler),\ + sizeof(KSP_NODE),\ + 0,\ + NULL, NULL, 0, NULL, NULL, 0) + +#define DEFINE_KSPROPERTY_TOPOLOGYSET(TopologySet, Handler)\ +DEFINE_KSPROPERTY_TABLE(TopologySet) {\ + DEFINE_KSPROPERTY_ITEM_TOPOLOGY_CATEGORIES(Handler),\ + DEFINE_KSPROPERTY_ITEM_TOPOLOGY_NODES(Handler),\ + DEFINE_KSPROPERTY_ITEM_TOPOLOGY_CONNECTIONS(Handler),\ + DEFINE_KSPROPERTY_ITEM_TOPOLOGY_NAME(Handler)\ +} + +//============================================================================= + +// +// properties used by graph manager to talk to particular filters +// +#if defined(_NTDDK_) + +#define STATIC_KSPROPSETID_GM \ + 0xAF627536L, 0xE719, 0x11D2, 0x8A, 0x1D, 0x00, 0x60, 0x97, 0xD2, 0xDF, 0x5D +DEFINE_GUIDSTRUCT("AF627536-E719-11D2-8A1D-006097D2DF5D", KSPROPSETID_GM); +#define KSPROPSETID_GM DEFINE_GUIDNAMED(KSPROPSETID_GM) + +typedef VOID (*PFNKSGRAPHMANAGER_NOTIFY)(IN PFILE_OBJECT GraphManager, + IN ULONG EventId, + IN PVOID Filter, + IN PVOID Pin, + IN PVOID Frame, + IN ULONG Duration); + +typedef struct KSGRAPHMANAGER_FUNCTIONTABLE { + PFNKSGRAPHMANAGER_NOTIFY NotifyEvent; +} KSGRAPHMANAGER_FUNCTIONTABLE, PKSGRAPHMANAGER_FUNCTIONTABLE; + +typedef struct _KSPROPERTY_GRAPHMANAGER_INTERFACE { + PFILE_OBJECT GraphManager; + KSGRAPHMANAGER_FUNCTIONTABLE FunctionTable; +} KSPROPERTY_GRAPHMANAGER_INTERFACE, *PKSPROPERTY_GRAPHMANAGER_INTERFACE; + + +// +// Commands +// +typedef enum { + KSPROPERTY_GM_GRAPHMANAGER, + KSPROPERTY_GM_TIMESTAMP_CLOCK, + KSPROPERTY_GM_RATEMATCH, + KSPROPERTY_GM_RENDER_CLOCK, +} KSPROPERTY_GM; + +#endif + +//=========================================================================== + + +#define STATIC_KSCATEGORY_BRIDGE \ + 0x085AFF00L, 0x62CE, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 +DEFINE_GUIDSTRUCT("085AFF00-62CE-11CF-A5D6-28DB04C10000", KSCATEGORY_BRIDGE); +#define KSCATEGORY_BRIDGE DEFINE_GUIDNAMED(KSCATEGORY_BRIDGE) + +#define STATIC_KSCATEGORY_CAPTURE \ + 0x65E8773DL, 0x8F56, 0x11D0, 0xA3, 0xB9, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 +DEFINE_GUIDSTRUCT("65E8773D-8F56-11D0-A3B9-00A0C9223196", KSCATEGORY_CAPTURE); +#define KSCATEGORY_CAPTURE DEFINE_GUIDNAMED(KSCATEGORY_CAPTURE) + +#define STATIC_KSCATEGORY_RENDER \ + 0x65E8773EL, 0x8F56, 0x11D0, 0xA3, 0xB9, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 +DEFINE_GUIDSTRUCT("65E8773E-8F56-11D0-A3B9-00A0C9223196", KSCATEGORY_RENDER); +#define KSCATEGORY_RENDER DEFINE_GUIDNAMED(KSCATEGORY_RENDER) + +#define STATIC_KSCATEGORY_MIXER \ + 0xAD809C00L, 0x7B88, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 +DEFINE_GUIDSTRUCT("AD809C00-7B88-11D0-A5D6-28DB04C10000", KSCATEGORY_MIXER); +#define KSCATEGORY_MIXER DEFINE_GUIDNAMED(KSCATEGORY_MIXER) + +#define STATIC_KSCATEGORY_SPLITTER \ + 0x0A4252A0L, 0x7E70, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 +DEFINE_GUIDSTRUCT("0A4252A0-7E70-11D0-A5D6-28DB04C10000", KSCATEGORY_SPLITTER); +#define KSCATEGORY_SPLITTER DEFINE_GUIDNAMED(KSCATEGORY_SPLITTER) + +#define STATIC_KSCATEGORY_DATACOMPRESSOR \ + 0x1E84C900L, 0x7E70, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 +DEFINE_GUIDSTRUCT("1E84C900-7E70-11D0-A5D6-28DB04C10000", KSCATEGORY_DATACOMPRESSOR); +#define KSCATEGORY_DATACOMPRESSOR DEFINE_GUIDNAMED(KSCATEGORY_DATACOMPRESSOR) + +#define STATIC_KSCATEGORY_DATADECOMPRESSOR \ + 0x2721AE20L, 0x7E70, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 +DEFINE_GUIDSTRUCT("2721AE20-7E70-11D0-A5D6-28DB04C10000", KSCATEGORY_DATADECOMPRESSOR); +#define KSCATEGORY_DATADECOMPRESSOR DEFINE_GUIDNAMED(KSCATEGORY_DATADECOMPRESSOR) + +#define STATIC_KSCATEGORY_DATATRANSFORM \ + 0x2EB07EA0L, 0x7E70, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 +DEFINE_GUIDSTRUCT("2EB07EA0-7E70-11D0-A5D6-28DB04C10000", KSCATEGORY_DATATRANSFORM); +#define KSCATEGORY_DATATRANSFORM DEFINE_GUIDNAMED(KSCATEGORY_DATATRANSFORM) + +#define STATIC_KSCATEGORY_COMMUNICATIONSTRANSFORM \ + 0xCF1DDA2CL, 0x9743, 0x11D0, 0xA3, 0xEE, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 +DEFINE_GUIDSTRUCT("CF1DDA2C-9743-11D0-A3EE-00A0C9223196", KSCATEGORY_COMMUNICATIONSTRANSFORM); +#define KSCATEGORY_COMMUNICATIONSTRANSFORM DEFINE_GUIDNAMED(KSCATEGORY_COMMUNICATIONSTRANSFORM) + +#define STATIC_KSCATEGORY_INTERFACETRANSFORM \ + 0xCF1DDA2DL, 0x9743, 0x11D0, 0xA3, 0xEE, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 +DEFINE_GUIDSTRUCT("CF1DDA2D-9743-11D0-A3EE-00A0C9223196", KSCATEGORY_INTERFACETRANSFORM); +#define KSCATEGORY_INTERFACETRANSFORM DEFINE_GUIDNAMED(KSCATEGORY_INTERFACETRANSFORM) + +#define STATIC_KSCATEGORY_MEDIUMTRANSFORM \ + 0xCF1DDA2EL, 0x9743, 0x11D0, 0xA3, 0xEE, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 +DEFINE_GUIDSTRUCT("CF1DDA2E-9743-11D0-A3EE-00A0C9223196", KSCATEGORY_MEDIUMTRANSFORM); +#define KSCATEGORY_MEDIUMTRANSFORM DEFINE_GUIDNAMED(KSCATEGORY_MEDIUMTRANSFORM) + +#define STATIC_KSCATEGORY_FILESYSTEM \ + 0x760FED5EL, 0x9357, 0x11D0, 0xA3, 0xCC, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 +DEFINE_GUIDSTRUCT("760FED5E-9357-11D0-A3CC-00A0C9223196", KSCATEGORY_FILESYSTEM); +#define KSCATEGORY_FILESYSTEM DEFINE_GUIDNAMED(KSCATEGORY_FILESYSTEM) + +// KSNAME_Clock +#define STATIC_KSCATEGORY_CLOCK \ + 0x53172480L, 0x4791, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 +DEFINE_GUIDSTRUCT("53172480-4791-11D0-A5D6-28DB04C10000", KSCATEGORY_CLOCK); +#define KSCATEGORY_CLOCK DEFINE_GUIDNAMED(KSCATEGORY_CLOCK) + +#define STATIC_KSCATEGORY_PROXY \ + 0x97EBAACAL, 0x95BD, 0x11D0, 0xA3, 0xEA, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 +DEFINE_GUIDSTRUCT("97EBAACA-95BD-11D0-A3EA-00A0C9223196", KSCATEGORY_PROXY); +#define KSCATEGORY_PROXY DEFINE_GUIDNAMED(KSCATEGORY_PROXY) + +#define STATIC_KSCATEGORY_QUALITY \ + 0x97EBAACBL, 0x95BD, 0x11D0, 0xA3, 0xEA, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 +DEFINE_GUIDSTRUCT("97EBAACB-95BD-11D0-A3EA-00A0C9223196", KSCATEGORY_QUALITY); +#define KSCATEGORY_QUALITY DEFINE_GUIDNAMED(KSCATEGORY_QUALITY) + +typedef struct { + ULONG FromNode; + ULONG FromNodePin; + ULONG ToNode; + ULONG ToNodePin; +} KSTOPOLOGY_CONNECTION, *PKSTOPOLOGY_CONNECTION; + +typedef struct { + ULONG CategoriesCount; + const GUID* Categories; + ULONG TopologyNodesCount; + const GUID* TopologyNodes; + ULONG TopologyConnectionsCount; + const KSTOPOLOGY_CONNECTION* TopologyConnections; + const GUID* TopologyNodesNames; + ULONG Reserved; +} KSTOPOLOGY, *PKSTOPOLOGY; + +#define KSFILTER_NODE ((ULONG)-1) +#define KSALL_NODES ((ULONG)-1) + +typedef struct { + ULONG CreateFlags; + ULONG Node; +} KSNODE_CREATE, *PKSNODE_CREATE; + +//=========================================================================== + +// TIME_FORMAT_NONE +#define STATIC_KSTIME_FORMAT_NONE STATIC_GUID_NULL +#define KSTIME_FORMAT_NONE GUID_NULL + +// TIME_FORMAT_FRAME +#define STATIC_KSTIME_FORMAT_FRAME\ + 0x7b785570L, 0x8c82, 0x11cf, 0xbc, 0x0c, 0x00, 0xaa, 0x00, 0xac, 0x74, 0xf6 +DEFINE_GUIDSTRUCT("7b785570-8c82-11cf-bc0c-00aa00ac74f6", KSTIME_FORMAT_FRAME); +#define KSTIME_FORMAT_FRAME DEFINE_GUIDNAMED(KSTIME_FORMAT_FRAME) + +// TIME_FORMAT_BYTE +#define STATIC_KSTIME_FORMAT_BYTE\ + 0x7b785571L, 0x8c82, 0x11cf, 0xbc, 0x0c, 0x00, 0xaa, 0x00, 0xac, 0x74, 0xf6 +DEFINE_GUIDSTRUCT("7b785571-8c82-11cf-bc0c-00aa00ac74f6", KSTIME_FORMAT_BYTE); +#define KSTIME_FORMAT_BYTE DEFINE_GUIDNAMED(KSTIME_FORMAT_BYTE) + +// TIME_FORMAT_SAMPLE +#define STATIC_KSTIME_FORMAT_SAMPLE\ + 0x7b785572L, 0x8c82, 0x11cf, 0xbc, 0x0c, 0x00, 0xaa, 0x00, 0xac, 0x74, 0xf6 +DEFINE_GUIDSTRUCT("7b785572-8c82-11cf-bc0c-00aa00ac74f6", KSTIME_FORMAT_SAMPLE); +#define KSTIME_FORMAT_SAMPLE DEFINE_GUIDNAMED(KSTIME_FORMAT_SAMPLE) + +// TIME_FORMAT_FIELD +#define STATIC_KSTIME_FORMAT_FIELD\ + 0x7b785573L, 0x8c82, 0x11cf, 0xbc, 0x0c, 0x00, 0xaa, 0x00, 0xac, 0x74, 0xf6 +DEFINE_GUIDSTRUCT("7b785573-8c82-11cf-bc0c-00aa00ac74f6", KSTIME_FORMAT_FIELD); +#define KSTIME_FORMAT_FIELD DEFINE_GUIDNAMED(KSTIME_FORMAT_FIELD) + +// TIME_FORMAT_MEDIA_TIME +#define STATIC_KSTIME_FORMAT_MEDIA_TIME\ + 0x7b785574L, 0x8c82, 0x11cf, 0xbc, 0x0c, 0x00, 0xaa, 0x00, 0xac, 0x74, 0xf6 +DEFINE_GUIDSTRUCT("7b785574-8c82-11cf-bc0c-00aa00ac74f6", KSTIME_FORMAT_MEDIA_TIME); +#define KSTIME_FORMAT_MEDIA_TIME DEFINE_GUIDNAMED(KSTIME_FORMAT_MEDIA_TIME) + +//=========================================================================== + +typedef KSIDENTIFIER KSPIN_INTERFACE, *PKSPIN_INTERFACE; + +#define STATIC_KSINTERFACESETID_Standard \ + 0x1A8766A0L, 0x62CE, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 +DEFINE_GUIDSTRUCT("1A8766A0-62CE-11CF-A5D6-28DB04C10000", KSINTERFACESETID_Standard); +#define KSINTERFACESETID_Standard DEFINE_GUIDNAMED(KSINTERFACESETID_Standard) + +typedef enum { + KSINTERFACE_STANDARD_STREAMING, + KSINTERFACE_STANDARD_LOOPED_STREAMING, + KSINTERFACE_STANDARD_CONTROL +} KSINTERFACE_STANDARD; + +#define STATIC_KSINTERFACESETID_FileIo \ + 0x8C6F932CL, 0xE771, 0x11D0, 0xB8, 0xFF, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 +DEFINE_GUIDSTRUCT("8C6F932C-E771-11D0-B8FF-00A0C9223196", KSINTERFACESETID_FileIo); +#define KSINTERFACESETID_FileIo DEFINE_GUIDNAMED(KSINTERFACESETID_FileIo) + +typedef enum { + KSINTERFACE_FILEIO_STREAMING +} KSINTERFACE_FILEIO; + +//=========================================================================== + +#define KSMEDIUM_TYPE_ANYINSTANCE 0 + +#define STATIC_KSMEDIUMSETID_Standard \ + 0x4747B320L, 0x62CE, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 +DEFINE_GUIDSTRUCT("4747B320-62CE-11CF-A5D6-28DB04C10000", KSMEDIUMSETID_Standard); +#define KSMEDIUMSETID_Standard DEFINE_GUIDNAMED(KSMEDIUMSETID_Standard) + +//For compatibility only +#define KSMEDIUM_STANDARD_DEVIO KSMEDIUM_TYPE_ANYINSTANCE + +//=========================================================================== + +#define STATIC_KSPROPSETID_Pin\ + 0x8C134960L, 0x51AD, 0x11CF, 0x87, 0x8A, 0x94, 0xF8, 0x01, 0xC1, 0x00, 0x00 +DEFINE_GUIDSTRUCT("8C134960-51AD-11CF-878A-94F801C10000", KSPROPSETID_Pin); +#define KSPROPSETID_Pin DEFINE_GUIDNAMED(KSPROPSETID_Pin) + +typedef enum { + KSPROPERTY_PIN_CINSTANCES, + KSPROPERTY_PIN_CTYPES, + KSPROPERTY_PIN_DATAFLOW, + KSPROPERTY_PIN_DATARANGES, + KSPROPERTY_PIN_DATAINTERSECTION, + KSPROPERTY_PIN_INTERFACES, + KSPROPERTY_PIN_MEDIUMS, + KSPROPERTY_PIN_COMMUNICATION, + KSPROPERTY_PIN_GLOBALCINSTANCES, + KSPROPERTY_PIN_NECESSARYINSTANCES, + KSPROPERTY_PIN_PHYSICALCONNECTION, + KSPROPERTY_PIN_CATEGORY, + KSPROPERTY_PIN_NAME, + KSPROPERTY_PIN_CONSTRAINEDDATARANGES, + KSPROPERTY_PIN_PROPOSEDATAFORMAT +} KSPROPERTY_PIN; + +typedef struct { + KSPROPERTY Property; + ULONG PinId; + ULONG Reserved; +} KSP_PIN, *PKSP_PIN; + +#define KSINSTANCE_INDETERMINATE ((ULONG)-1) + +typedef struct { + ULONG PossibleCount; + ULONG CurrentCount; +} KSPIN_CINSTANCES, *PKSPIN_CINSTANCES; + +typedef enum { + KSPIN_DATAFLOW_IN = 1, + KSPIN_DATAFLOW_OUT +} KSPIN_DATAFLOW, *PKSPIN_DATAFLOW; + +#define KSDATAFORMAT_BIT_TEMPORAL_COMPRESSION 0 +#define KSDATAFORMAT_TEMPORAL_COMPRESSION (1 << KSDATAFORMAT_BIT_TEMPORAL_COMPRESSION) +#define KSDATAFORMAT_BIT_ATTRIBUTES 1 +#define KSDATAFORMAT_ATTRIBUTES (1 << KSDATAFORMAT_BIT_ATTRIBUTES) + +#define KSDATARANGE_BIT_ATTRIBUTES 1 +#define KSDATARANGE_ATTRIBUTES (1 << KSDATARANGE_BIT_ATTRIBUTES) +#define KSDATARANGE_BIT_REQUIRED_ATTRIBUTES 2 +#define KSDATARANGE_REQUIRED_ATTRIBUTES (1 << KSDATARANGE_BIT_REQUIRED_ATTRIBUTES) + +#if !defined( _MSC_VER ) +typedef struct { + ULONG FormatSize; + ULONG Flags; + ULONG SampleSize; + ULONG Reserved; + GUID MajorFormat; + GUID SubFormat; + GUID Specifier; +} KSDATAFORMAT, *PKSDATAFORMAT, KSDATARANGE, *PKSDATARANGE; +#else +typedef union { + struct { + ULONG FormatSize; + ULONG Flags; + ULONG SampleSize; + ULONG Reserved; + GUID MajorFormat; + GUID SubFormat; + GUID Specifier; + }; + LONGLONG Alignment; +} KSDATAFORMAT, *PKSDATAFORMAT, KSDATARANGE, *PKSDATARANGE; +#endif + +#define KSATTRIBUTE_REQUIRED 0x00000001 + +typedef struct { + ULONG Size; + ULONG Flags; + GUID Attribute; +} KSATTRIBUTE, *PKSATTRIBUTE; + +#if defined(_NTDDK_) +typedef struct { + ULONG Count; + PKSATTRIBUTE* Attributes; +} KSATTRIBUTE_LIST, *PKSATTRIBUTE_LIST; +#endif // _NTDDK_ + +typedef enum { + KSPIN_COMMUNICATION_NONE, + KSPIN_COMMUNICATION_SINK, + KSPIN_COMMUNICATION_SOURCE, + KSPIN_COMMUNICATION_BOTH, + KSPIN_COMMUNICATION_BRIDGE +} KSPIN_COMMUNICATION, *PKSPIN_COMMUNICATION; + +typedef KSIDENTIFIER KSPIN_MEDIUM, *PKSPIN_MEDIUM; + +typedef struct { + KSPIN_INTERFACE Interface; + KSPIN_MEDIUM Medium; + ULONG PinId; + HANDLE PinToHandle; + KSPRIORITY Priority; +} KSPIN_CONNECT, *PKSPIN_CONNECT; + +typedef struct { + ULONG Size; + ULONG Pin; + WCHAR SymbolicLinkName[1]; +} KSPIN_PHYSICALCONNECTION, *PKSPIN_PHYSICALCONNECTION; + +#if defined(_NTDDK_) +typedef +NTSTATUS +(*PFNKSINTERSECTHANDLER)( + IN PIRP Irp, + IN PKSP_PIN Pin, + IN PKSDATARANGE DataRange, + OUT PVOID Data OPTIONAL + ); +typedef +NTSTATUS +(*PFNKSINTERSECTHANDLEREX)( + IN PVOID Context, + IN PIRP Irp, + IN PKSP_PIN Pin, + IN PKSDATARANGE DataRange, + IN PKSDATARANGE MatchingDataRange, + IN ULONG DataBufferSize, + OUT PVOID Data OPTIONAL, + OUT PULONG DataSize + ); +#endif // _NTDDK_ + +#define DEFINE_KSPIN_INTERFACE_TABLE(tablename)\ + const KSPIN_INTERFACE tablename[] = + +#define DEFINE_KSPIN_INTERFACE_ITEM(guid, interface)\ + {\ + STATICGUIDOF(guid),\ + (interface),\ + 0\ + } + +#define DEFINE_KSPIN_MEDIUM_TABLE( tablename )\ + const KSPIN_MEDIUM tablename[] = + +#define DEFINE_KSPIN_MEDIUM_ITEM(guid, medium)\ + DEFINE_KSPIN_INTERFACE_ITEM(guid, medium) + +#define DEFINE_KSPROPERTY_ITEM_PIN_CINSTANCES(Handler)\ + DEFINE_KSPROPERTY_ITEM(\ + KSPROPERTY_PIN_CINSTANCES,\ + (Handler),\ + sizeof(KSP_PIN),\ + sizeof(KSPIN_CINSTANCES),\ + NULL, NULL, 0, NULL, NULL, 0) + +#define DEFINE_KSPROPERTY_ITEM_PIN_CTYPES(Handler)\ + DEFINE_KSPROPERTY_ITEM(\ + KSPROPERTY_PIN_CTYPES,\ + (Handler),\ + sizeof(KSPROPERTY),\ + sizeof(ULONG),\ + NULL, NULL, 0, NULL, NULL, 0) + +#define DEFINE_KSPROPERTY_ITEM_PIN_DATAFLOW(Handler)\ + DEFINE_KSPROPERTY_ITEM(\ + KSPROPERTY_PIN_DATAFLOW,\ + (Handler),\ + sizeof(KSP_PIN),\ + sizeof(KSPIN_DATAFLOW),\ + NULL, NULL, 0, NULL, NULL, 0) + +#define DEFINE_KSPROPERTY_ITEM_PIN_DATARANGES(Handler)\ + DEFINE_KSPROPERTY_ITEM(\ + KSPROPERTY_PIN_DATARANGES,\ + (Handler),\ + sizeof(KSP_PIN),\ + 0,\ + NULL, NULL, 0, NULL, NULL, 0) + +#define DEFINE_KSPROPERTY_ITEM_PIN_DATAINTERSECTION(Handler)\ + DEFINE_KSPROPERTY_ITEM(\ + KSPROPERTY_PIN_DATAINTERSECTION,\ + (Handler),\ + sizeof(KSP_PIN) + sizeof(KSMULTIPLE_ITEM),\ + 0,\ + NULL, NULL, 0, NULL, NULL, 0) + +#define DEFINE_KSPROPERTY_ITEM_PIN_INTERFACES(Handler)\ + DEFINE_KSPROPERTY_ITEM(\ + KSPROPERTY_PIN_INTERFACES,\ + (Handler),\ + sizeof(KSP_PIN),\ + 0,\ + NULL, NULL, 0, NULL, NULL, 0) + +#define DEFINE_KSPROPERTY_ITEM_PIN_MEDIUMS(Handler)\ + DEFINE_KSPROPERTY_ITEM(\ + KSPROPERTY_PIN_MEDIUMS,\ + (Handler),\ + sizeof(KSP_PIN),\ + 0,\ + NULL, NULL, 0, NULL, NULL, 0) + +#define DEFINE_KSPROPERTY_ITEM_PIN_COMMUNICATION(Handler)\ + DEFINE_KSPROPERTY_ITEM(\ + KSPROPERTY_PIN_COMMUNICATION,\ + (Handler),\ + sizeof(KSP_PIN),\ + sizeof(KSPIN_COMMUNICATION),\ + NULL, NULL, 0, NULL, NULL, 0) + +#define DEFINE_KSPROPERTY_ITEM_PIN_GLOBALCINSTANCES(Handler)\ + DEFINE_KSPROPERTY_ITEM(\ + KSPROPERTY_PIN_GLOBALCINSTANCES,\ + (Handler),\ + sizeof(KSP_PIN),\ + sizeof(KSPIN_CINSTANCES),\ + NULL, NULL, 0, NULL, NULL, 0) + +#define DEFINE_KSPROPERTY_ITEM_PIN_NECESSARYINSTANCES(Handler)\ + DEFINE_KSPROPERTY_ITEM(\ + KSPROPERTY_PIN_NECESSARYINSTANCES,\ + (Handler),\ + sizeof(KSP_PIN),\ + sizeof(ULONG),\ + NULL, NULL, 0, NULL, NULL, 0) + +#define DEFINE_KSPROPERTY_ITEM_PIN_PHYSICALCONNECTION(Handler)\ + DEFINE_KSPROPERTY_ITEM(\ + KSPROPERTY_PIN_PHYSICALCONNECTION,\ + (Handler),\ + sizeof(KSP_PIN),\ + 0,\ + NULL, NULL, 0, NULL, NULL, 0) + +#define DEFINE_KSPROPERTY_ITEM_PIN_CATEGORY(Handler)\ + DEFINE_KSPROPERTY_ITEM(\ + KSPROPERTY_PIN_CATEGORY,\ + (Handler),\ + sizeof(KSP_PIN),\ + sizeof(GUID),\ + NULL, NULL, 0, NULL, NULL, 0) + +#define DEFINE_KSPROPERTY_ITEM_PIN_NAME(Handler)\ + DEFINE_KSPROPERTY_ITEM(\ + KSPROPERTY_PIN_NAME,\ + (Handler),\ + sizeof(KSP_PIN),\ + 0,\ + NULL, NULL, 0, NULL, NULL, 0) + +#define DEFINE_KSPROPERTY_ITEM_PIN_CONSTRAINEDDATARANGES(Handler)\ + DEFINE_KSPROPERTY_ITEM(\ + KSPROPERTY_PIN_CONSTRAINEDDATARANGES,\ + (Handler),\ + sizeof(KSP_PIN),\ + 0,\ + NULL, NULL, 0, NULL, NULL, 0) + +#define DEFINE_KSPROPERTY_ITEM_PIN_PROPOSEDATAFORMAT(Handler)\ + DEFINE_KSPROPERTY_ITEM(\ + KSPROPERTY_PIN_PROPOSEDATAFORMAT,\ + NULL,\ + sizeof(KSP_PIN),\ + sizeof(KSDATAFORMAT),\ + (Handler), NULL, 0, NULL, NULL, 0) + +#define DEFINE_KSPROPERTY_PINSET(PinSet,\ + PropGeneral, PropInstances, PropIntersection)\ +DEFINE_KSPROPERTY_TABLE(PinSet) {\ + DEFINE_KSPROPERTY_ITEM_PIN_CINSTANCES(PropInstances),\ + DEFINE_KSPROPERTY_ITEM_PIN_CTYPES(PropGeneral),\ + DEFINE_KSPROPERTY_ITEM_PIN_DATAFLOW(PropGeneral),\ + DEFINE_KSPROPERTY_ITEM_PIN_DATARANGES(PropGeneral),\ + DEFINE_KSPROPERTY_ITEM_PIN_DATAINTERSECTION(PropIntersection),\ + DEFINE_KSPROPERTY_ITEM_PIN_INTERFACES(PropGeneral),\ + DEFINE_KSPROPERTY_ITEM_PIN_MEDIUMS(PropGeneral),\ + DEFINE_KSPROPERTY_ITEM_PIN_COMMUNICATION(PropGeneral),\ + DEFINE_KSPROPERTY_ITEM_PIN_CATEGORY(PropGeneral),\ + DEFINE_KSPROPERTY_ITEM_PIN_NAME(PropGeneral)\ +} + +#define DEFINE_KSPROPERTY_PINSETCONSTRAINED(PinSet,\ + PropGeneral, PropInstances, PropIntersection)\ +DEFINE_KSPROPERTY_TABLE(PinSet) {\ + DEFINE_KSPROPERTY_ITEM_PIN_CINSTANCES(PropInstances),\ + DEFINE_KSPROPERTY_ITEM_PIN_CTYPES(PropGeneral),\ + DEFINE_KSPROPERTY_ITEM_PIN_DATAFLOW(PropGeneral),\ + DEFINE_KSPROPERTY_ITEM_PIN_DATARANGES(PropGeneral),\ + DEFINE_KSPROPERTY_ITEM_PIN_DATAINTERSECTION(PropIntersection),\ + DEFINE_KSPROPERTY_ITEM_PIN_INTERFACES(PropGeneral),\ + DEFINE_KSPROPERTY_ITEM_PIN_MEDIUMS(PropGeneral),\ + DEFINE_KSPROPERTY_ITEM_PIN_COMMUNICATION(PropGeneral),\ + DEFINE_KSPROPERTY_ITEM_PIN_CATEGORY(PropGeneral),\ + DEFINE_KSPROPERTY_ITEM_PIN_NAME(PropGeneral),\ + DEFINE_KSPROPERTY_ITEM_PIN_CONSTRAINEDDATARANGES(PropGeneral)\ +} + +#define STATIC_KSNAME_Filter\ + 0x9b365890L, 0x165f, 0x11d0, 0xa1, 0x95, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4 +DEFINE_GUIDSTRUCT("9b365890-165f-11d0-a195-0020afd156e4", KSNAME_Filter); +#define KSNAME_Filter DEFINE_GUIDNAMED(KSNAME_Filter) + +#define KSSTRING_Filter L"{9B365890-165F-11D0-A195-0020AFD156E4}" + +#define STATIC_KSNAME_Pin\ + 0x146F1A80L, 0x4791, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 +DEFINE_GUIDSTRUCT("146F1A80-4791-11D0-A5D6-28DB04C10000", KSNAME_Pin); +#define KSNAME_Pin DEFINE_GUIDNAMED(KSNAME_Pin) + +#define KSSTRING_Pin L"{146F1A80-4791-11D0-A5D6-28DB04C10000}" + +#define STATIC_KSNAME_Clock\ + 0x53172480L, 0x4791, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 +DEFINE_GUIDSTRUCT("53172480-4791-11D0-A5D6-28DB04C10000", KSNAME_Clock); +#define KSNAME_Clock DEFINE_GUIDNAMED(KSNAME_Clock) + +#define KSSTRING_Clock L"{53172480-4791-11D0-A5D6-28DB04C10000}" + +#define STATIC_KSNAME_Allocator\ + 0x642F5D00L, 0x4791, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 +DEFINE_GUIDSTRUCT("642F5D00-4791-11D0-A5D6-28DB04C10000", KSNAME_Allocator); +#define KSNAME_Allocator DEFINE_GUIDNAMED(KSNAME_Allocator) + +#define KSSTRING_Allocator L"{642F5D00-4791-11D0-A5D6-28DB04C10000}" + +#define KSSTRING_AllocatorEx L"{091BB63B-603F-11D1-B067-00A0C9062802}" + +#define STATIC_KSNAME_TopologyNode\ + 0x0621061AL, 0xEE75, 0x11D0, 0xB9, 0x15, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 +DEFINE_GUIDSTRUCT("0621061A-EE75-11D0-B915-00A0C9223196", KSNAME_TopologyNode); +#define KSNAME_TopologyNode DEFINE_GUIDNAMED(KSNAME_TopologyNode) + +#define KSSTRING_TopologyNode L"{0621061A-EE75-11D0-B915-00A0C9223196}" + +#if defined(_NTDDK_) + +typedef struct { + ULONG InterfacesCount; + const KSPIN_INTERFACE* Interfaces; + ULONG MediumsCount; + const KSPIN_MEDIUM* Mediums; + ULONG DataRangesCount; + const PKSDATARANGE* DataRanges; + KSPIN_DATAFLOW DataFlow; + KSPIN_COMMUNICATION Communication; + const GUID* Category; + const GUID* Name; + union { + LONGLONG Reserved; + struct { + ULONG ConstrainedDataRangesCount; + PKSDATARANGE* ConstrainedDataRanges; + }; + }; +} KSPIN_DESCRIPTOR, *PKSPIN_DESCRIPTOR; +typedef const KSPIN_DESCRIPTOR *PCKSPIN_DESCRIPTOR; + +#define DEFINE_KSPIN_DESCRIPTOR_TABLE(tablename)\ + const KSPIN_DESCRIPTOR tablename[] = + +#define DEFINE_KSPIN_DESCRIPTOR_ITEM(\ + InterfacesCount, Interfaces,\ + MediumsCount, Mediums,\ + DataRangesCount, DataRanges,\ + DataFlow, Communication)\ +{\ + InterfacesCount, Interfaces, MediumsCount, Mediums,\ + DataRangesCount, DataRanges, DataFlow, Communication,\ + NULL, NULL, 0\ +} +#define DEFINE_KSPIN_DESCRIPTOR_ITEMEX(\ + InterfacesCount, Interfaces,\ + MediumsCount, Mediums,\ + DataRangesCount, DataRanges,\ + DataFlow, Communication,\ + Category, Name)\ +{\ + InterfacesCount, Interfaces, MediumsCount, Mediums,\ + DataRangesCount, DataRanges, DataFlow, Communication,\ + Category, Name, 0\ +} + +#endif // defined(_NTDDK_) + +//=========================================================================== + +// MEDIATYPE_NULL +#define STATIC_KSDATAFORMAT_TYPE_WILDCARD STATIC_GUID_NULL +#define KSDATAFORMAT_TYPE_WILDCARD GUID_NULL + +// MEDIASUBTYPE_NULL +#define STATIC_KSDATAFORMAT_SUBTYPE_WILDCARD STATIC_GUID_NULL +#define KSDATAFORMAT_SUBTYPE_WILDCARD GUID_NULL + +// MEDIATYPE_Stream +#define STATIC_KSDATAFORMAT_TYPE_STREAM\ + 0xE436EB83L, 0x524F, 0x11CE, 0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70 +DEFINE_GUIDSTRUCT("E436EB83-524F-11CE-9F53-0020AF0BA770", KSDATAFORMAT_TYPE_STREAM); +#define KSDATAFORMAT_TYPE_STREAM DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_STREAM) + +// MEDIASUBTYPE_None +#define STATIC_KSDATAFORMAT_SUBTYPE_NONE\ + 0xE436EB8EL, 0x524F, 0x11CE, 0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70 +DEFINE_GUIDSTRUCT("E436EB8E-524F-11CE-9F53-0020AF0BA770", KSDATAFORMAT_SUBTYPE_NONE); +#define KSDATAFORMAT_SUBTYPE_NONE DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_NONE) + +#define STATIC_KSDATAFORMAT_SPECIFIER_WILDCARD STATIC_GUID_NULL +#define KSDATAFORMAT_SPECIFIER_WILDCARD GUID_NULL + +#define STATIC_KSDATAFORMAT_SPECIFIER_FILENAME\ + 0xAA797B40L, 0xE974, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 +DEFINE_GUIDSTRUCT("AA797B40-E974-11CF-A5D6-28DB04C10000", KSDATAFORMAT_SPECIFIER_FILENAME); +#define KSDATAFORMAT_SPECIFIER_FILENAME DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_FILENAME) + +#define STATIC_KSDATAFORMAT_SPECIFIER_FILEHANDLE\ + 0x65E8773CL, 0x8F56, 0x11D0, 0xA3, 0xB9, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 +DEFINE_GUIDSTRUCT("65E8773C-8F56-11D0-A3B9-00A0C9223196", KSDATAFORMAT_SPECIFIER_FILEHANDLE); +#define KSDATAFORMAT_SPECIFIER_FILEHANDLE DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_FILEHANDLE) + +// FORMAT_None +#define STATIC_KSDATAFORMAT_SPECIFIER_NONE\ + 0x0F6417D6L, 0xC318, 0x11D0, 0xA4, 0x3F, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 +DEFINE_GUIDSTRUCT("0F6417D6-C318-11D0-A43F-00A0C9223196", KSDATAFORMAT_SPECIFIER_NONE); +#define KSDATAFORMAT_SPECIFIER_NONE DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_NONE) + +//=========================================================================== + +#define STATIC_KSPROPSETID_Quality \ + 0xD16AD380L, 0xAC1A, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 +DEFINE_GUIDSTRUCT("D16AD380-AC1A-11CF-A5D6-28DB04C10000", KSPROPSETID_Quality); +#define KSPROPSETID_Quality DEFINE_GUIDNAMED(KSPROPSETID_Quality) + +typedef enum { + KSPROPERTY_QUALITY_REPORT, + KSPROPERTY_QUALITY_ERROR +} KSPROPERTY_QUALITY; + +#define DEFINE_KSPROPERTY_ITEM_QUALITY_REPORT(GetHandler, SetHandler)\ + DEFINE_KSPROPERTY_ITEM(\ + KSPROPERTY_QUALITY_REPORT,\ + (GetHandler),\ + sizeof(KSPROPERTY),\ + sizeof(KSQUALITY),\ + (SetHandler),\ + NULL, 0, NULL, NULL, 0) + +#define DEFINE_KSPROPERTY_ITEM_QUALITY_ERROR(GetHandler, SetHandler)\ + DEFINE_KSPROPERTY_ITEM(\ + KSPROPERTY_QUALITY_ERROR,\ + (GetHandler),\ + sizeof(KSPROPERTY),\ + sizeof(KSERROR),\ + (SetHandler),\ + NULL, 0, NULL, NULL, 0) + +//=========================================================================== + +#define STATIC_KSPROPSETID_Connection \ + 0x1D58C920L, 0xAC9B, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 +DEFINE_GUIDSTRUCT("1D58C920-AC9B-11CF-A5D6-28DB04C10000", KSPROPSETID_Connection); +#define KSPROPSETID_Connection DEFINE_GUIDNAMED(KSPROPSETID_Connection) + +typedef enum { + KSPROPERTY_CONNECTION_STATE, + KSPROPERTY_CONNECTION_PRIORITY, + KSPROPERTY_CONNECTION_DATAFORMAT, + KSPROPERTY_CONNECTION_ALLOCATORFRAMING, + KSPROPERTY_CONNECTION_PROPOSEDATAFORMAT, + KSPROPERTY_CONNECTION_ACQUIREORDERING, + KSPROPERTY_CONNECTION_ALLOCATORFRAMING_EX, + KSPROPERTY_CONNECTION_STARTAT +} KSPROPERTY_CONNECTION; + +#define DEFINE_KSPROPERTY_ITEM_CONNECTION_STATE(GetHandler, SetHandler)\ + DEFINE_KSPROPERTY_ITEM(\ + KSPROPERTY_CONNECTION_STATE,\ + (GetHandler),\ + sizeof(KSPROPERTY),\ + sizeof(KSSTATE),\ + (SetHandler),\ + NULL, 0, NULL, NULL, 0) + +#define DEFINE_KSPROPERTY_ITEM_CONNECTION_PRIORITY(GetHandler, SetHandler)\ + DEFINE_KSPROPERTY_ITEM(\ + KSPROPERTY_CONNECTION_PRIORITY,\ + (GetHandler),\ + sizeof(KSPROPERTY),\ + sizeof(KSPRIORITY),\ + (SetHandler),\ + NULL, 0, NULL, NULL, 0) + +#define DEFINE_KSPROPERTY_ITEM_CONNECTION_DATAFORMAT(GetHandler, SetHandler)\ + DEFINE_KSPROPERTY_ITEM(\ + KSPROPERTY_CONNECTION_DATAFORMAT,\ + (GetHandler),\ + sizeof(KSPROPERTY),\ + 0,\ + (SetHandler),\ + NULL, 0, NULL, NULL, 0) + +#define DEFINE_KSPROPERTY_ITEM_CONNECTION_ALLOCATORFRAMING(Handler)\ + DEFINE_KSPROPERTY_ITEM(\ + KSPROPERTY_CONNECTION_ALLOCATORFRAMING,\ + (Handler),\ + sizeof(KSPROPERTY),\ + sizeof(KSALLOCATOR_FRAMING),\ + NULL, NULL, 0, NULL, NULL, 0) + +#define DEFINE_KSPROPERTY_ITEM_CONNECTION_ALLOCATORFRAMING_EX(Handler)\ + DEFINE_KSPROPERTY_ITEM(\ + KSPROPERTY_CONNECTION_ALLOCATORFRAMING_EX,\ + (Handler),\ + sizeof(KSPROPERTY),\ + 0,\ + NULL, NULL, 0, NULL, NULL, 0) + +#define DEFINE_KSPROPERTY_ITEM_CONNECTION_PROPOSEDATAFORMAT(Handler)\ + DEFINE_KSPROPERTY_ITEM(\ + KSPROPERTY_CONNECTION_PROPOSEDATAFORMAT,\ + NULL,\ + sizeof(KSPROPERTY),\ + sizeof(KSDATAFORMAT),\ + (Handler),\ + NULL, 0, NULL, NULL, 0) + +#define DEFINE_KSPROPERTY_ITEM_CONNECTION_ACQUIREORDERING(Handler)\ + DEFINE_KSPROPERTY_ITEM(\ + KSPROPERTY_CONNECTION_ACQUIREORDERING,\ + (Handler),\ + sizeof(KSPROPERTY),\ + sizeof(int),\ + NULL, NULL, 0, NULL, NULL, 0) + +#define DEFINE_KSPROPERTY_ITEM_CONNECTION_STARTAT(Handler)\ + DEFINE_KSPROPERTY_ITEM(\ + KSPROPERTY_CONNECTION_STARTAT,\ + NULL,\ + sizeof(KSPROPERTY),\ + sizeof(KSRELATIVEEVENT),\ + (Handler),\ + NULL, 0, NULL, NULL, 0) + +//=========================================================================== +// +// pins flags +// +#define KSALLOCATOR_REQUIREMENTF_INPLACE_MODIFIER 0x00000001 +#define KSALLOCATOR_REQUIREMENTF_SYSTEM_MEMORY 0x00000002 +#define KSALLOCATOR_REQUIREMENTF_FRAME_INTEGRITY 0x00000004 +#define KSALLOCATOR_REQUIREMENTF_MUST_ALLOCATE 0x00000008 +#define KSALLOCATOR_REQUIREMENTF_PREFERENCES_ONLY 0x80000000 + +#define KSALLOCATOR_OPTIONF_COMPATIBLE 0x00000001 +#define KSALLOCATOR_OPTIONF_SYSTEM_MEMORY 0x00000002 +#define KSALLOCATOR_OPTIONF_VALID 0x00000003 +// +// pins extended framing flags +// +#define KSALLOCATOR_FLAG_PARTIAL_READ_SUPPORT 0x00000010 +#define KSALLOCATOR_FLAG_DEVICE_SPECIFIC 0x00000020 +#define KSALLOCATOR_FLAG_CAN_ALLOCATE 0x00000040 +#define KSALLOCATOR_FLAG_INSIST_ON_FRAMESIZE_RATIO 0x00000080 +// +// allocator pipes flags +// +// there is at least one data modification in a pipe +#define KSALLOCATOR_FLAG_NO_FRAME_INTEGRITY 0x00000100 +#define KSALLOCATOR_FLAG_MULTIPLE_OUTPUT 0x00000200 +#define KSALLOCATOR_FLAG_CYCLE 0x00000400 +#define KSALLOCATOR_FLAG_ALLOCATOR_EXISTS 0x00000800 +// there is no framing dependency between neighbouring pipes. +#define KSALLOCATOR_FLAG_INDEPENDENT_RANGES 0x00001000 +#define KSALLOCATOR_FLAG_ATTENTION_STEPPING 0x00002000 + + +// +// old Framing structure +// +typedef struct { + union { + ULONG OptionsFlags; // allocator options (create) + ULONG RequirementsFlags; // allocation requirements (query) + }; +#if defined(_NTDDK_) + POOL_TYPE PoolType; +#else // !_NTDDK_ + ULONG PoolType; +#endif // !_NTDDK_ + ULONG Frames; // total number of allowable outstanding frames + ULONG FrameSize; // total size of frame + ULONG FileAlignment; + ULONG Reserved; +} KSALLOCATOR_FRAMING, *PKSALLOCATOR_FRAMING; + +#if defined(_NTDDK_) +typedef +PVOID +(*PFNKSDEFAULTALLOCATE)( + IN PVOID Context + ); + +typedef +VOID +(*PFNKSDEFAULTFREE)( + IN PVOID Context, + IN PVOID Buffer + ); + +typedef +NTSTATUS +(*PFNKSINITIALIZEALLOCATOR)( + IN PVOID InitialContext, + IN PKSALLOCATOR_FRAMING AllocatorFraming, + OUT PVOID* Context + ); + +typedef +VOID +(*PFNKSDELETEALLOCATOR)( + IN PVOID Context + ); +#endif // !_NTDDK_ + +// +// new Framing structure, eventually will replace KSALLOCATOR_FRAMING. +// +typedef struct { + ULONG MinFrameSize; + ULONG MaxFrameSize; + ULONG Stepping; +} KS_FRAMING_RANGE, *PKS_FRAMING_RANGE; + + +typedef struct { + KS_FRAMING_RANGE Range; + ULONG InPlaceWeight; + ULONG NotInPlaceWeight; +} KS_FRAMING_RANGE_WEIGHTED, *PKS_FRAMING_RANGE_WEIGHTED; + + +typedef struct { + ULONG RatioNumerator; // compression/expansion ratio + ULONG RatioDenominator; + ULONG RatioConstantMargin; +} KS_COMPRESSION, *PKS_COMPRESSION; + + +// +// Memory Types and Buses are repeated in each entry. +// Easiest to use but takes a little more memory than the varsize layout Pin\Memories\Buses\Ranges. +// +typedef struct { + GUID MemoryType; + GUID BusType; + ULONG MemoryFlags; + ULONG BusFlags; + ULONG Flags; + ULONG Frames; // total number of allowable outstanding frames + ULONG FileAlignment; + ULONG MemoryTypeWeight; // this memory type Weight pin-wide + KS_FRAMING_RANGE PhysicalRange; + KS_FRAMING_RANGE_WEIGHTED FramingRange; +} KS_FRAMING_ITEM, *PKS_FRAMING_ITEM; + + +typedef struct { + ULONG CountItems; // count of FramingItem-s below. + ULONG PinFlags; + KS_COMPRESSION OutputCompression; + ULONG PinWeight; // this pin framing's Weight graph-wide + KS_FRAMING_ITEM FramingItem[1]; +} KSALLOCATOR_FRAMING_EX, *PKSALLOCATOR_FRAMING_EX; + + + +// +// define memory type GUIDs +// +#define KSMEMORY_TYPE_WILDCARD GUID_NULL +#define STATIC_KSMEMORY_TYPE_WILDCARD STATIC_GUID_NULL + +#define KSMEMORY_TYPE_DONT_CARE GUID_NULL +#define STATIC_KSMEMORY_TYPE_DONT_CARE STATIC_GUID_NULL + +#define KS_TYPE_DONT_CARE GUID_NULL +#define STATIC_KS_TYPE_DONT_CARE STATIC_GUID_NULL + +#define STATIC_KSMEMORY_TYPE_SYSTEM \ + 0x091bb638L, 0x603f, 0x11d1, 0xb0, 0x67, 0x00, 0xa0, 0xc9, 0x06, 0x28, 0x02 +DEFINE_GUIDSTRUCT("091bb638-603f-11d1-b067-00a0c9062802", KSMEMORY_TYPE_SYSTEM); +#define KSMEMORY_TYPE_SYSTEM DEFINE_GUIDNAMED(KSMEMORY_TYPE_SYSTEM) + +#define STATIC_KSMEMORY_TYPE_USER \ + 0x8cb0fc28L, 0x7893, 0x11d1, 0xb0, 0x69, 0x00, 0xa0, 0xc9, 0x06, 0x28, 0x02 +DEFINE_GUIDSTRUCT("8cb0fc28-7893-11d1-b069-00a0c9062802", KSMEMORY_TYPE_USER); +#define KSMEMORY_TYPE_USER DEFINE_GUIDNAMED(KSMEMORY_TYPE_USER) + +#define STATIC_KSMEMORY_TYPE_KERNEL_PAGED \ + 0xd833f8f8L, 0x7894, 0x11d1, 0xb0, 0x69, 0x00, 0xa0, 0xc9, 0x06, 0x28, 0x02 +DEFINE_GUIDSTRUCT("d833f8f8-7894-11d1-b069-00a0c9062802", KSMEMORY_TYPE_KERNEL_PAGED); +#define KSMEMORY_TYPE_KERNEL_PAGED DEFINE_GUIDNAMED(KSMEMORY_TYPE_KERNEL_PAGED) + +#define STATIC_KSMEMORY_TYPE_KERNEL_NONPAGED \ + 0x4a6d5fc4L, 0x7895, 0x11d1, 0xb0, 0x69, 0x00, 0xa0, 0xc9, 0x06, 0x28, 0x02 +DEFINE_GUIDSTRUCT("4a6d5fc4-7895-11d1-b069-00a0c9062802", KSMEMORY_TYPE_KERNEL_NONPAGED); +#define KSMEMORY_TYPE_KERNEL_NONPAGED DEFINE_GUIDNAMED(KSMEMORY_TYPE_KERNEL_NONPAGED) + +// old KS clients did not specify the device memory type +#define STATIC_KSMEMORY_TYPE_DEVICE_UNKNOWN \ + 0x091bb639L, 0x603f, 0x11d1, 0xb0, 0x67, 0x00, 0xa0, 0xc9, 0x06, 0x28, 0x02 +DEFINE_GUIDSTRUCT("091bb639-603f-11d1-b067-00a0c9062802", KSMEMORY_TYPE_DEVICE_UNKNOWN); +#define KSMEMORY_TYPE_DEVICE_UNKNOWN DEFINE_GUIDNAMED(KSMEMORY_TYPE_DEVICE_UNKNOWN) + +// +// Helper framing macros. +// +#define DECLARE_SIMPLE_FRAMING_EX(FramingExName, MemoryType, Flags, Frames, Alignment, MinFrameSize, MaxFrameSize) \ + const KSALLOCATOR_FRAMING_EX FramingExName = \ + {\ + 1, \ + 0, \ + {\ + 1, \ + 1, \ + 0 \ + }, \ + 0, \ + {\ + {\ + MemoryType, \ + STATIC_KS_TYPE_DONT_CARE, \ + 0, \ + 0, \ + Flags, \ + Frames, \ + Alignment, \ + 0, \ + {\ + 0, \ + (ULONG)-1, \ + 1 \ + }, \ + {\ + {\ + MinFrameSize, \ + MaxFrameSize, \ + 1 \ + }, \ + 0, \ + 0 \ + }\ + }\ + }\ + } + +#define SetDefaultKsCompression(KsCompressionPointer) \ +{\ + KsCompressionPointer->RatioNumerator = 1;\ + KsCompressionPointer->RatioDenominator = 1;\ + KsCompressionPointer->RatioConstantMargin = 0;\ +} + +#define SetDontCareKsFramingRange(KsFramingRangePointer) \ +{\ + KsFramingRangePointer->MinFrameSize = 0;\ + KsFramingRangePointer->MaxFrameSize = (ULONG) -1;\ + KsFramingRangePointer->Stepping = 1;\ +} + +#define SetKsFramingRange(KsFramingRangePointer, P_MinFrameSize, P_MaxFrameSize) \ +{\ + KsFramingRangePointer->MinFrameSize = P_MinFrameSize;\ + KsFramingRangePointer->MaxFrameSize = P_MaxFrameSize;\ + KsFramingRangePointer->Stepping = 1;\ +} + +#define SetKsFramingRangeWeighted(KsFramingRangeWeightedPointer, P_MinFrameSize, P_MaxFrameSize) \ +{\ + KS_FRAMING_RANGE *KsFramingRange = &KsFramingRangeWeightedPointer->Range;\ + SetKsFramingRange(KsFramingRange, P_MinFrameSize, P_MaxFrameSize);\ + KsFramingRangeWeightedPointer->InPlaceWeight = 0;\ + KsFramingRangeWeightedPointer->NotInPlaceWeight = 0;\ +} + +#define INITIALIZE_SIMPLE_FRAMING_EX(FramingExPointer, P_MemoryType, P_Flags, P_Frames, P_Alignment, P_MinFrameSize, P_MaxFrameSize) \ +{\ + KS_COMPRESSION *KsCompression = &FramingExPointer->OutputCompression;\ + KS_FRAMING_RANGE *KsFramingRange = &FramingExPointer->FramingItem[0].PhysicalRange;\ + KS_FRAMING_RANGE_WEIGHTED *KsFramingRangeWeighted = &FramingExPointer->FramingItem[0].FramingRange;\ + FramingExPointer->CountItems = 1;\ + FramingExPointer->PinFlags = 0;\ + SetDefaultKsCompression(KsCompression);\ + FramingExPointer->PinWeight = 0;\ + FramingExPointer->FramingItem[0].MemoryType = P_MemoryType;\ + FramingExPointer->FramingItem[0].BusType = KS_TYPE_DONT_CARE;\ + FramingExPointer->FramingItem[0].MemoryFlags = 0;\ + FramingExPointer->FramingItem[0].BusFlags = 0;\ + FramingExPointer->FramingItem[0].Flags = P_Flags;\ + FramingExPointer->FramingItem[0].Frames = P_Frames;\ + FramingExPointer->FramingItem[0].FileAlignment = P_Alignment;\ + FramingExPointer->FramingItem[0].MemoryTypeWeight = 0;\ + SetDontCareKsFramingRange(KsFramingRange);\ + SetKsFramingRangeWeighted(KsFramingRangeWeighted, P_MinFrameSize, P_MaxFrameSize);\ +} + + + +// KSEVENTSETID_StreamAllocator: {75D95571-073C-11d0-A161-0020AFD156E4} + +#define STATIC_KSEVENTSETID_StreamAllocator\ + 0x75d95571L, 0x073c, 0x11d0, 0xa1, 0x61, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4 +DEFINE_GUIDSTRUCT("75d95571-073c-11d0-a161-0020afd156e4", KSEVENTSETID_StreamAllocator); +#define KSEVENTSETID_StreamAllocator DEFINE_GUIDNAMED(KSEVENTSETID_StreamAllocator) + +typedef enum { + KSEVENT_STREAMALLOCATOR_INTERNAL_FREEFRAME, + KSEVENT_STREAMALLOCATOR_FREEFRAME +} KSEVENT_STREAMALLOCATOR; + +#define STATIC_KSMETHODSETID_StreamAllocator\ + 0xcf6e4341L, 0xec87, 0x11cf, 0xa1, 0x30, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4 +DEFINE_GUIDSTRUCT("cf6e4341-ec87-11cf-a130-0020afd156e4", KSMETHODSETID_StreamAllocator); +#define KSMETHODSETID_StreamAllocator DEFINE_GUIDNAMED(KSMETHODSETID_StreamAllocator) + +typedef enum { + KSMETHOD_STREAMALLOCATOR_ALLOC, + KSMETHOD_STREAMALLOCATOR_FREE +} KSMETHOD_STREAMALLOCATOR; + +#define DEFINE_KSMETHOD_ITEM_STREAMALLOCATOR_ALLOC(Handler)\ + DEFINE_KSMETHOD_ITEM(\ + KSMETHOD_STREAMALLOCATOR_ALLOC,\ + KSMETHOD_TYPE_WRITE,\ + (Handler),\ + sizeof(KSMETHOD),\ + sizeof(PVOID),\ + NULL) + +#define DEFINE_KSMETHOD_ITEM_STREAMALLOCATOR_FREE(Handler)\ + DEFINE_KSMETHOD_ITEM(\ + KSMETHOD_STREAMALLOCATOR_FREE,\ + KSMETHOD_TYPE_READ,\ + (Handler),\ + sizeof(KSMETHOD),\ + sizeof(PVOID),\ + NULL) + +#define DEFINE_KSMETHOD_ALLOCATORSET(AllocatorSet, MethodAlloc, MethodFree)\ +DEFINE_KSMETHOD_TABLE(AllocatorSet) {\ + DEFINE_KSMETHOD_ITEM_STREAMALLOCATOR_ALLOC(MethodAlloc),\ + DEFINE_KSMETHOD_ITEM_STREAMALLOCATOR_FREE(MethodFree)\ +} + +#define STATIC_KSPROPSETID_StreamAllocator\ + 0xcf6e4342L, 0xec87, 0x11cf, 0xa1, 0x30, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4 +DEFINE_GUIDSTRUCT("cf6e4342-ec87-11cf-a130-0020afd156e4", KSPROPSETID_StreamAllocator); +#define KSPROPSETID_StreamAllocator DEFINE_GUIDNAMED(KSPROPSETID_StreamAllocator) + +#if defined(_NTDDK_) +typedef enum { + KSPROPERTY_STREAMALLOCATOR_FUNCTIONTABLE, + KSPROPERTY_STREAMALLOCATOR_STATUS +} KSPROPERTY_STREAMALLOCATOR; + +#define DEFINE_KSPROPERTY_ITEM_STREAMALLOCATOR_FUNCTIONTABLE(Handler)\ + DEFINE_KSPROPERTY_ITEM(\ + KSPROPERTY_STREAMALLOCATOR_FUNCTIONTABLE,\ + (Handler),\ + sizeof(KSPROPERTY),\ + sizeof(KSSTREAMALLOCATOR_FUNCTIONTABLE),\ + NULL, NULL, 0, NULL, NULL, 0) + +#define DEFINE_KSPROPERTY_ITEM_STREAMALLOCATOR_STATUS(Handler)\ + DEFINE_KSPROPERTY_ITEM(\ + KSPROPERTY_STREAMALLOCATOR_STATUS,\ + (Handler),\ + sizeof(KSPROPERTY),\ + sizeof(KSSTREAMALLOCATOR_STATUS),\ + NULL, NULL, 0, NULL, NULL, 0) + +#define DEFINE_KSPROPERTY_ALLOCATORSET(AllocatorSet, PropFunctionTable, PropStatus)\ +DEFINE_KSPROPERTY_TABLE(AllocatorSet) {\ + DEFINE_KSPROPERTY_ITEM_STREAMALLOCATOR_STATUS(PropStatus),\ + DEFINE_KSPROPERTY_ITEM_STREAMALLOCATOR_FUNCTIONTABLE(PropFunctionTable)\ +} + +typedef +NTSTATUS +(*PFNALLOCATOR_ALLOCATEFRAME)( + IN PFILE_OBJECT FileObject, + PVOID *Frame + ); + +typedef +VOID +(*PFNALLOCATOR_FREEFRAME)( + IN PFILE_OBJECT FileObject, + IN PVOID Frame + ); + +typedef struct { + PFNALLOCATOR_ALLOCATEFRAME AllocateFrame; + PFNALLOCATOR_FREEFRAME FreeFrame; +} KSSTREAMALLOCATOR_FUNCTIONTABLE, *PKSSTREAMALLOCATOR_FUNCTIONTABLE; +#endif // defined(_NTDDK_) + +typedef struct { + KSALLOCATOR_FRAMING Framing; + ULONG AllocatedFrames; + ULONG Reserved; +} KSSTREAMALLOCATOR_STATUS, *PKSSTREAMALLOCATOR_STATUS; + +typedef struct { + KSALLOCATOR_FRAMING_EX Framing; + ULONG AllocatedFrames; + ULONG Reserved; +} KSSTREAMALLOCATOR_STATUS_EX, *PKSSTREAMALLOCATOR_STATUS_EX; + + +#define KSSTREAM_HEADER_OPTIONSF_SPLICEPOINT 0x00000001 +#define KSSTREAM_HEADER_OPTIONSF_PREROLL 0x00000002 +#define KSSTREAM_HEADER_OPTIONSF_DATADISCONTINUITY 0x00000004 +#define KSSTREAM_HEADER_OPTIONSF_TYPECHANGED 0x00000008 +#define KSSTREAM_HEADER_OPTIONSF_TIMEVALID 0x00000010 +#define KSSTREAM_HEADER_OPTIONSF_TIMEDISCONTINUITY 0x00000040 +#define KSSTREAM_HEADER_OPTIONSF_FLUSHONPAUSE 0x00000080 +#define KSSTREAM_HEADER_OPTIONSF_DURATIONVALID 0x00000100 +#define KSSTREAM_HEADER_OPTIONSF_ENDOFSTREAM 0x00000200 +#define KSSTREAM_HEADER_OPTIONSF_LOOPEDDATA 0x80000000 + +typedef struct { + LONGLONG Time; + ULONG Numerator; + ULONG Denominator; +} KSTIME, *PKSTIME; + +typedef struct { + ULONG Size; + ULONG TypeSpecificFlags; + KSTIME PresentationTime; + LONGLONG Duration; + ULONG FrameExtent; + ULONG DataUsed; + PVOID Data; + ULONG OptionsFlags; +#if _WIN64 + ULONG Reserved; +#endif +} KSSTREAM_HEADER, *PKSSTREAM_HEADER; + +#define STATIC_KSPROPSETID_StreamInterface\ + 0x1fdd8ee1L, 0x9cd3, 0x11d0, 0x82, 0xaa, 0x00, 0x00, 0xf8, 0x22, 0xfe, 0x8a +DEFINE_GUIDSTRUCT("1fdd8ee1-9cd3-11d0-82aa-0000f822fe8a", KSPROPSETID_StreamInterface); +#define KSPROPSETID_StreamInterface DEFINE_GUIDNAMED(KSPROPSETID_StreamInterface) + +typedef enum { + KSPROPERTY_STREAMINTERFACE_HEADERSIZE +} KSPROPERTY_STREAMINTERFACE; + +#define DEFINE_KSPROPERTY_ITEM_STREAMINTERFACE_HEADERSIZE( GetHandler )\ + DEFINE_KSPROPERTY_ITEM(\ + KSPROPERTY_STREAMINTERFACE_HEADERSIZE,\ + (GetHandler),\ + sizeof(KSPROPERTY),\ + sizeof(ULONG),\ + NULL, NULL, 0, NULL, NULL, 0) + +#define DEFINE_KSPROPERTY_STREAMINTERFACESET(StreamInterfaceSet,\ + HeaderSizeHandler)\ +DEFINE_KSPROPERTY_TABLE(StreamInterfaceSet) {\ + DEFINE_KSPROPERTY_ITEM_STREAMINTERFACE_HEADERSIZE( HeaderSizeHandler )\ +} + +#define STATIC_KSPROPSETID_Stream\ + 0x65aaba60L, 0x98ae, 0x11cf, 0xa1, 0x0d, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4 +DEFINE_GUIDSTRUCT("65aaba60-98ae-11cf-a10d-0020afd156e4", KSPROPSETID_Stream); +#define KSPROPSETID_Stream DEFINE_GUIDNAMED(KSPROPSETID_Stream) + +typedef enum { + KSPROPERTY_STREAM_ALLOCATOR, + KSPROPERTY_STREAM_QUALITY, + KSPROPERTY_STREAM_DEGRADATION, + KSPROPERTY_STREAM_MASTERCLOCK, + KSPROPERTY_STREAM_TIMEFORMAT, + KSPROPERTY_STREAM_PRESENTATIONTIME, + KSPROPERTY_STREAM_PRESENTATIONEXTENT, + KSPROPERTY_STREAM_FRAMETIME, + KSPROPERTY_STREAM_RATECAPABILITY, + KSPROPERTY_STREAM_RATE, + KSPROPERTY_STREAM_PIPE_ID +} KSPROPERTY_STREAM; + +#define DEFINE_KSPROPERTY_ITEM_STREAM_ALLOCATOR(GetHandler, SetHandler)\ + DEFINE_KSPROPERTY_ITEM(\ + KSPROPERTY_STREAM_ALLOCATOR,\ + (GetHandler),\ + sizeof(KSPROPERTY),\ + sizeof(HANDLE),\ + (SetHandler),\ + NULL, 0, NULL, NULL, 0) + +#define DEFINE_KSPROPERTY_ITEM_STREAM_QUALITY(Handler)\ + DEFINE_KSPROPERTY_ITEM(\ + KSPROPERTY_STREAM_QUALITY,\ + (Handler),\ + sizeof(KSPROPERTY),\ + sizeof(KSQUALITY_MANAGER),\ + NULL, NULL, 0, NULL, NULL, 0) + +#define DEFINE_KSPROPERTY_ITEM_STREAM_DEGRADATION(GetHandler, SetHandler)\ + DEFINE_KSPROPERTY_ITEM(\ + KSPROPERTY_STREAM_DEGRADATION,\ + (GetHandler),\ + sizeof(KSPROPERTY),\ + 0,\ + (SetHandler),\ + NULL, 0, NULL, NULL, 0) + +#define DEFINE_KSPROPERTY_ITEM_STREAM_MASTERCLOCK(GetHandler, SetHandler)\ + DEFINE_KSPROPERTY_ITEM(\ + KSPROPERTY_STREAM_MASTERCLOCK,\ + (GetHandler),\ + sizeof(KSPROPERTY),\ + sizeof(HANDLE),\ + (SetHandler),\ + NULL, 0, NULL, NULL, 0) + +#define DEFINE_KSPROPERTY_ITEM_STREAM_TIMEFORMAT(Handler)\ + DEFINE_KSPROPERTY_ITEM(\ + KSPROPERTY_STREAM_TIMEFORMAT,\ + (Handler),\ + sizeof(KSPROPERTY),\ + sizeof(GUID),\ + NULL, NULL, 0, NULL, NULL, 0) + +#define DEFINE_KSPROPERTY_ITEM_STREAM_PRESENTATIONTIME(GetHandler, SetHandler)\ + DEFINE_KSPROPERTY_ITEM(\ + KSPROPERTY_STREAM_PRESENTATIONTIME,\ + (GetHandler),\ + sizeof(KSPROPERTY),\ + sizeof(KSTIME),\ + (SetHandler),\ + NULL, 0, NULL, NULL, 0) + +#define DEFINE_KSPROPERTY_ITEM_STREAM_PRESENTATIONEXTENT(Handler)\ + DEFINE_KSPROPERTY_ITEM(\ + KSPROPERTY_STREAM_PRESENTATIONEXTENT,\ + (Handler),\ + sizeof(KSPROPERTY),\ + sizeof(LONGLONG),\ + NULL, NULL, 0, NULL, NULL, 0) + +#define DEFINE_KSPROPERTY_ITEM_STREAM_FRAMETIME(Handler)\ + DEFINE_KSPROPERTY_ITEM(\ + KSPROPERTY_STREAM_FRAMETIME,\ + (Handler),\ + sizeof(KSPROPERTY),\ + sizeof(KSFRAMETIME),\ + NULL, NULL, 0, NULL, NULL, 0) + +#define DEFINE_KSPROPERTY_ITEM_STREAM_RATECAPABILITY(Handler)\ + DEFINE_KSPROPERTY_ITEM(\ + KSPROPERTY_STREAM_RATECAPABILITY,\ + (Handler),\ + sizeof(KSRATE_CAPABILITY),\ + sizeof(KSRATE),\ + NULL, NULL, 0, NULL, NULL, 0) + +#define DEFINE_KSPROPERTY_ITEM_STREAM_RATE(GetHandler, SetHandler)\ + DEFINE_KSPROPERTY_ITEM(\ + KSPROPERTY_STREAM_RATE,\ + (GetHandler),\ + sizeof(KSPROPERTY),\ + sizeof(KSRATE),\ + (SetHandler),\ + NULL, 0, NULL, NULL, 0) + +#define DEFINE_KSPROPERTY_ITEM_STREAM_PIPE_ID(GetHandler, SetHandler)\ + DEFINE_KSPROPERTY_ITEM(\ + KSPROPERTY_STREAM_PIPE_ID,\ + (GetHandler),\ + sizeof(KSPROPERTY),\ + sizeof(HANDLE),\ + (SetHandler),\ + NULL, 0, NULL, NULL, 0) + +typedef struct { + HANDLE QualityManager; + PVOID Context; +} KSQUALITY_MANAGER, *PKSQUALITY_MANAGER; + +typedef struct { + LONGLONG Duration; + ULONG FrameFlags; + ULONG Reserved; +} KSFRAMETIME, *PKSFRAMETIME; + +#define KSFRAMETIME_VARIABLESIZE 0x00000001 + +typedef struct { + LONGLONG PresentationStart; + LONGLONG Duration; + KSPIN_INTERFACE Interface; + LONG Rate; + ULONG Flags; +} KSRATE, *PKSRATE; + +#define KSRATE_NOPRESENTATIONSTART 0x00000001 +#define KSRATE_NOPRESENTATIONDURATION 0x00000002 + +typedef struct { + KSPROPERTY Property; + KSRATE Rate; +} KSRATE_CAPABILITY, *PKSRATE_CAPABILITY; + +#define STATIC_KSPROPSETID_Clock \ + 0xDF12A4C0L, 0xAC17, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 +DEFINE_GUIDSTRUCT("DF12A4C0-AC17-11CF-A5D6-28DB04C10000", KSPROPSETID_Clock); +#define KSPROPSETID_Clock DEFINE_GUIDNAMED(KSPROPSETID_Clock) + +// +// Performs a x*y/z operation on 64 bit quantities by splitting the operation. The equation +// is simplified with respect to adding in the remainder for the upper 32 bits. +// +// (xh * 10000000 / Frequency) * 2^32 + ((((xh * 10000000) % Frequency) * 2^32 + (xl * 10000000)) / Frequency) +// +#define NANOSECONDS 10000000 +#define KSCONVERT_PERFORMANCE_TIME(Frequency, PerformanceTime) \ + ((((ULONGLONG)(ULONG)(PerformanceTime).HighPart * NANOSECONDS / (Frequency)) << 32) + \ + ((((((ULONGLONG)(ULONG)(PerformanceTime).HighPart * NANOSECONDS) % (Frequency)) << 32) + \ + ((ULONGLONG)(PerformanceTime).LowPart * NANOSECONDS)) / (Frequency))) + +typedef struct { + ULONG CreateFlags; +} KSCLOCK_CREATE, *PKSCLOCK_CREATE; + +typedef struct { + LONGLONG Time; + LONGLONG SystemTime; +} KSCORRELATED_TIME, *PKSCORRELATED_TIME; + +typedef struct { + LONGLONG Granularity; + LONGLONG Error; +} KSRESOLUTION, *PKSRESOLUTION; + +typedef enum { + KSPROPERTY_CLOCK_TIME, + KSPROPERTY_CLOCK_PHYSICALTIME, + KSPROPERTY_CLOCK_CORRELATEDTIME, + KSPROPERTY_CLOCK_CORRELATEDPHYSICALTIME, + KSPROPERTY_CLOCK_RESOLUTION, + KSPROPERTY_CLOCK_STATE, +#if defined(_NTDDK_) + KSPROPERTY_CLOCK_FUNCTIONTABLE +#endif // defined(_NTDDK_) +} KSPROPERTY_CLOCK; + +#if defined(_NTDDK_) + +typedef +LONGLONG +(FASTCALL *PFNKSCLOCK_GETTIME)( + IN PFILE_OBJECT FileObject + ); +typedef +LONGLONG +(FASTCALL *PFNKSCLOCK_CORRELATEDTIME)( + IN PFILE_OBJECT FileObject, + OUT PLONGLONG SystemTime); + +typedef struct { + PFNKSCLOCK_GETTIME GetTime; + PFNKSCLOCK_GETTIME GetPhysicalTime; + PFNKSCLOCK_CORRELATEDTIME GetCorrelatedTime; + PFNKSCLOCK_CORRELATEDTIME GetCorrelatedPhysicalTime; +} KSCLOCK_FUNCTIONTABLE, *PKSCLOCK_FUNCTIONTABLE; + +typedef +BOOLEAN +(*PFNKSSETTIMER)( + IN PVOID Context, + IN PKTIMER Timer, + IN LARGE_INTEGER DueTime, + IN PKDPC Dpc + ); + +typedef +BOOLEAN +(*PFNKSCANCELTIMER)( + IN PVOID Context, + IN PKTIMER Timer + ); + +typedef +LONGLONG +(FASTCALL *PFNKSCORRELATEDTIME)( + IN PVOID Context, + OUT PLONGLONG SystemTime); + +typedef PVOID PKSDEFAULTCLOCK; + +#define DEFINE_KSPROPERTY_ITEM_CLOCK_TIME(Handler)\ + DEFINE_KSPROPERTY_ITEM(\ + KSPROPERTY_CLOCK_TIME,\ + (Handler),\ + sizeof(KSPROPERTY),\ + sizeof(LONGLONG),\ + NULL, NULL, 0, NULL, NULL, 0) + +#define DEFINE_KSPROPERTY_ITEM_CLOCK_PHYSICALTIME(Handler)\ + DEFINE_KSPROPERTY_ITEM(\ + KSPROPERTY_CLOCK_PHYSICALTIME,\ + (Handler),\ + sizeof(KSPROPERTY),\ + sizeof(LONGLONG),\ + NULL, NULL, 0, NULL, NULL, 0) + +#define DEFINE_KSPROPERTY_ITEM_CLOCK_CORRELATEDTIME(Handler)\ + DEFINE_KSPROPERTY_ITEM(\ + KSPROPERTY_CLOCK_CORRELATEDTIME,\ + (Handler),\ + sizeof(KSPROPERTY),\ + sizeof(KSCORRELATED_TIME),\ + NULL, NULL, 0, NULL, NULL, 0) + +#define DEFINE_KSPROPERTY_ITEM_CLOCK_CORRELATEDPHYSICALTIME(Handler)\ + DEFINE_KSPROPERTY_ITEM(\ + KSPROPERTY_CLOCK_CORRELATEDPHYSICALTIME,\ + (Handler),\ + sizeof(KSPROPERTY),\ + sizeof(KSCORRELATED_TIME),\ + NULL, NULL, 0, NULL, NULL, 0) + +#define DEFINE_KSPROPERTY_ITEM_CLOCK_RESOLUTION(Handler)\ + DEFINE_KSPROPERTY_ITEM(\ + KSPROPERTY_CLOCK_RESOLUTION,\ + (Handler),\ + sizeof(KSPROPERTY),\ + sizeof(KSRESOLUTION),\ + NULL, NULL, 0, NULL, NULL, 0) + +#define DEFINE_KSPROPERTY_ITEM_CLOCK_STATE(Handler)\ + DEFINE_KSPROPERTY_ITEM(\ + KSPROPERTY_CLOCK_STATE,\ + (Handler),\ + sizeof(KSPROPERTY),\ + sizeof(KSSTATE),\ + NULL, NULL, 0, NULL, NULL, 0) + +#define DEFINE_KSPROPERTY_ITEM_CLOCK_FUNCTIONTABLE(Handler)\ + DEFINE_KSPROPERTY_ITEM(\ + KSPROPERTY_CLOCK_FUNCTIONTABLE,\ + (Handler),\ + sizeof(KSPROPERTY),\ + sizeof(KSCLOCK_FUNCTIONTABLE),\ + NULL, NULL, 0, NULL, NULL, 0) + +#define DEFINE_KSPROPERTY_CLOCKSET(ClockSet,\ + PropTime, PropPhysicalTime,\ + PropCorrelatedTime, PropCorrelatedPhysicalTime,\ + PropResolution, PropState, PropFunctionTable)\ +DEFINE_KSPROPERTY_TABLE(ClockSet) {\ + DEFINE_KSPROPERTY_ITEM_CLOCK_TIME(PropTime),\ + DEFINE_KSPROPERTY_ITEM_CLOCK_PHYSICALTIME(PropPhysicalTime),\ + DEFINE_KSPROPERTY_ITEM_CLOCK_CORRELATEDTIME(PropCorrelatedTime),\ + DEFINE_KSPROPERTY_ITEM_CLOCK_CORRELATEDPHYSICALTIME(PropCorrelatedPhysicalTime),\ + DEFINE_KSPROPERTY_ITEM_CLOCK_RESOLUTION(PropResolution),\ + DEFINE_KSPROPERTY_ITEM_CLOCK_STATE(PropState),\ + DEFINE_KSPROPERTY_ITEM_CLOCK_FUNCTIONTABLE(PropFunctionTable),\ +} + +#endif // defined(_NTDDK_) + +#define STATIC_KSEVENTSETID_Clock \ + 0x364D8E20L, 0x62C7, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 +DEFINE_GUIDSTRUCT("364D8E20-62C7-11CF-A5D6-28DB04C10000", KSEVENTSETID_Clock); +#define KSEVENTSETID_Clock DEFINE_GUIDNAMED(KSEVENTSETID_Clock) + +typedef enum { + KSEVENT_CLOCK_INTERVAL_MARK, + KSEVENT_CLOCK_POSITION_MARK +} KSEVENT_CLOCK_POSITION; + +#define STATIC_KSEVENTSETID_Connection\ + 0x7f4bcbe0L, 0x9ea5, 0x11cf, 0xa5, 0xd6, 0x28, 0xdb, 0x04, 0xc1, 0x00, 0x00 +DEFINE_GUIDSTRUCT("7f4bcbe0-9ea5-11cf-a5d6-28db04c10000", KSEVENTSETID_Connection); +#define KSEVENTSETID_Connection DEFINE_GUIDNAMED(KSEVENTSETID_Connection) + +typedef enum { + KSEVENT_CONNECTION_POSITIONUPDATE, + KSEVENT_CONNECTION_DATADISCONTINUITY, + KSEVENT_CONNECTION_TIMEDISCONTINUITY, + KSEVENT_CONNECTION_PRIORITY, + KSEVENT_CONNECTION_ENDOFSTREAM +} KSEVENT_CONNECTION; + +typedef struct { + PVOID Context; + ULONG Proportion; + LONGLONG DeltaTime; +} KSQUALITY, *PKSQUALITY; + +typedef struct { + PVOID Context; + ULONG Status; +} KSERROR, *PKSERROR; + +typedef KSIDENTIFIER KSDEGRADE, *PKSDEGRADE; + +#define STATIC_KSDEGRADESETID_Standard\ + 0x9F564180L, 0x704C, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 +DEFINE_GUIDSTRUCT("9F564180-704C-11D0-A5D6-28DB04C10000", KSDEGRADESETID_Standard); +#define KSDEGRADESETID_Standard DEFINE_GUIDNAMED(KSDEGRADESETID_Standard) + +typedef enum { + KSDEGRADE_STANDARD_SAMPLE, + KSDEGRADE_STANDARD_QUALITY, + KSDEGRADE_STANDARD_COMPUTATION, + KSDEGRADE_STANDARD_SKIP +} KSDEGRADE_STANDARD; + +#if defined(_NTDDK_) + +#define KSPROBE_STREAMREAD 0x00000000 +#define KSPROBE_STREAMWRITE 0x00000001 +#define KSPROBE_ALLOCATEMDL 0x00000010 +#define KSPROBE_PROBEANDLOCK 0x00000020 +#define KSPROBE_SYSTEMADDRESS 0x00000040 +#define KSPROBE_MODIFY 0x00000200 +#define KSPROBE_STREAMWRITEMODIFY (KSPROBE_MODIFY | KSPROBE_STREAMWRITE) +#define KSPROBE_ALLOWFORMATCHANGE 0x00000080 + +#define KSSTREAM_READ KSPROBE_STREAMREAD +#define KSSTREAM_WRITE KSPROBE_STREAMWRITE +#define KSSTREAM_PAGED_DATA 0x00000000 +#define KSSTREAM_NONPAGED_DATA 0x00000100 +#define KSSTREAM_SYNCHRONOUS 0x00001000 +#define KSSTREAM_FAILUREEXCEPTION 0x00002000 + +typedef +NTSTATUS +(*PFNKSCONTEXT_DISPATCH)( + IN PVOID Context, + IN PIRP Irp + ); + +typedef +NTSTATUS +(*PFNKSHANDLER)( + IN PIRP Irp, + IN PKSIDENTIFIER Request, + IN OUT PVOID Data + ); + +typedef +BOOLEAN +(*PFNKSFASTHANDLER)( + IN PFILE_OBJECT FileObject, + IN PKSIDENTIFIER Request, + IN ULONG RequestLength, + IN OUT PVOID Data, + IN ULONG DataLength, + OUT PIO_STATUS_BLOCK IoStatus + ); + +typedef +NTSTATUS +(*PFNKSALLOCATOR)( + IN PIRP Irp, + IN ULONG BufferSize, + IN BOOLEAN InputOperation + ); + +typedef struct { + KSPROPERTY_MEMBERSHEADER MembersHeader; + const VOID* Members; +} KSPROPERTY_MEMBERSLIST, *PKSPROPERTY_MEMBERSLIST; + +typedef struct { + KSIDENTIFIER PropTypeSet; + ULONG MembersListCount; + const KSPROPERTY_MEMBERSLIST* MembersList; +} KSPROPERTY_VALUES, *PKSPROPERTY_VALUES; + +#define DEFINE_KSPROPERTY_TABLE(tablename)\ + const KSPROPERTY_ITEM tablename[] = + +#define DEFINE_KSPROPERTY_ITEM(PropertyId, GetHandler,\ + MinProperty,\ + MinData,\ + SetHandler,\ + Values, RelationsCount, Relations, SupportHandler,\ + SerializedSize)\ +{\ + PropertyId, (PFNKSHANDLER)GetHandler, MinProperty, MinData,\ + (PFNKSHANDLER)SetHandler,\ + (PKSPROPERTY_VALUES)Values, RelationsCount, (PKSPROPERTY)Relations,\ + (PFNKSHANDLER)SupportHandler, (ULONG)SerializedSize\ +} + +typedef struct { + ULONG PropertyId; + union { + PFNKSHANDLER GetPropertyHandler; + BOOLEAN GetSupported; + }; + ULONG MinProperty; + ULONG MinData; + union { + PFNKSHANDLER SetPropertyHandler; + BOOLEAN SetSupported; + }; + const KSPROPERTY_VALUES*Values; + ULONG RelationsCount; + const KSPROPERTY* Relations; + PFNKSHANDLER SupportHandler; + ULONG SerializedSize; +} KSPROPERTY_ITEM, *PKSPROPERTY_ITEM; + +#define DEFINE_KSFASTPROPERTY_ITEM(PropertyId, GetHandler, SetHandler)\ +{\ + PropertyId, (PFNKSFASTHANDLER)GetHandler, (PFNKSFASTHANDLER)SetHandler, 0\ +} + +typedef struct { + ULONG PropertyId; + union { + PFNKSFASTHANDLER GetPropertyHandler; + BOOLEAN GetSupported; + }; + union { + PFNKSFASTHANDLER SetPropertyHandler; + BOOLEAN SetSupported; + }; + ULONG Reserved; +} KSFASTPROPERTY_ITEM, *PKSFASTPROPERTY_ITEM; + +#define DEFINE_KSPROPERTY_SET(Set,\ + PropertiesCount,\ + PropertyItem,\ + FastIoCount,\ + FastIoTable)\ +{\ + Set,\ + PropertiesCount,\ + PropertyItem,\ + FastIoCount,\ + FastIoTable\ +} + +#define DEFINE_KSPROPERTY_SET_TABLE(tablename)\ + const KSPROPERTY_SET tablename[] = + +typedef struct { + const GUID* Set; + ULONG PropertiesCount; + const KSPROPERTY_ITEM* PropertyItem; + ULONG FastIoCount; + const KSFASTPROPERTY_ITEM* FastIoTable; +} KSPROPERTY_SET, *PKSPROPERTY_SET; + +#define DEFINE_KSMETHOD_TABLE(tablename)\ + const KSMETHOD_ITEM tablename[] = + +#define DEFINE_KSMETHOD_ITEM(MethodId, Flags,\ + MethodHandler,\ + MinMethod, MinData, SupportHandler)\ +{\ + MethodId, (PFNKSHANDLER)MethodHandler, MinMethod, MinData,\ + SupportHandler, Flags\ +} + +typedef struct { + ULONG MethodId; + union { + PFNKSHANDLER MethodHandler; + BOOLEAN MethodSupported; + }; + ULONG MinMethod; + ULONG MinData; + PFNKSHANDLER SupportHandler; + ULONG Flags; +} KSMETHOD_ITEM, *PKSMETHOD_ITEM; + +#define DEFINE_KSFASTMETHOD_ITEM(MethodId, MethodHandler)\ +{\ + MethodId, (PFNKSFASTHANDLER)MethodHandler\ +} + +typedef struct { + ULONG MethodId; + union { + PFNKSFASTHANDLER MethodHandler; + BOOLEAN MethodSupported; + }; +} KSFASTMETHOD_ITEM, *PKSFASTMETHOD_ITEM; + +#define DEFINE_KSMETHOD_SET(Set,\ + MethodsCount,\ + MethodItem,\ + FastIoCount,\ + FastIoTable)\ +{\ + Set,\ + MethodsCount,\ + MethodItem,\ + FastIoCount,\ + FastIoTable\ +} + +#define DEFINE_KSMETHOD_SET_TABLE(tablename)\ + const KSMETHOD_SET tablename[] = + +typedef struct { + const GUID* Set; + ULONG MethodsCount; + const KSMETHOD_ITEM* MethodItem; + ULONG FastIoCount; + const KSFASTMETHOD_ITEM*FastIoTable; +} KSMETHOD_SET, *PKSMETHOD_SET; + +typedef struct _KSEVENT_ENTRY +KSEVENT_ENTRY, *PKSEVENT_ENTRY; + +typedef +NTSTATUS +(*PFNKSADDEVENT)( + IN PIRP Irp, + IN PKSEVENTDATA EventData, + IN struct _KSEVENT_ENTRY* EventEntry + ); + +typedef +VOID +(*PFNKSREMOVEEVENT)( + IN PFILE_OBJECT FileObject, + IN struct _KSEVENT_ENTRY* EventEntry + ); + +#define DEFINE_KSEVENT_TABLE(tablename)\ + const KSEVENT_ITEM tablename[] = + +#define DEFINE_KSEVENT_ITEM(EventId, DataInput, ExtraEntryData,\ + AddHandler, RemoveHandler, SupportHandler)\ +{\ + EventId,\ + DataInput,\ + ExtraEntryData,\ + AddHandler,\ + RemoveHandler,\ + SupportHandler\ +} + +typedef struct { + ULONG EventId; + ULONG DataInput; + ULONG ExtraEntryData; + PFNKSADDEVENT AddHandler; + PFNKSREMOVEEVENT RemoveHandler; + PFNKSHANDLER SupportHandler; +} KSEVENT_ITEM, *PKSEVENT_ITEM; + +#define DEFINE_KSEVENT_SET(Set,\ + EventsCount,\ + EventItem)\ +{\ + Set, EventsCount, EventItem\ +} + +#define DEFINE_KSEVENT_SET_TABLE(tablename)\ + const KSEVENT_SET tablename[] = + +typedef struct { + const GUID* Set; + ULONG EventsCount; + const KSEVENT_ITEM* EventItem; +} KSEVENT_SET, *PKSEVENT_SET; + +typedef struct { + KDPC Dpc; + ULONG ReferenceCount; + KSPIN_LOCK AccessLock; +} KSDPC_ITEM, *PKSDPC_ITEM; + +typedef struct { + KSDPC_ITEM DpcItem; + LIST_ENTRY BufferList; +} KSBUFFER_ITEM, *PKSBUFFER_ITEM; + +#define KSEVENT_ENTRY_DELETED 1 +#define KSEVENT_ENTRY_ONESHOT 2 +#define KSEVENT_ENTRY_BUFFERED 4 + +struct _KSEVENT_ENTRY { + LIST_ENTRY ListEntry; + PVOID Object; + union { + PKSDPC_ITEM DpcItem; + PKSBUFFER_ITEM BufferItem; + }; + PKSEVENTDATA EventData; + ULONG NotificationType; + const KSEVENT_SET* EventSet; + const KSEVENT_ITEM* EventItem; + PFILE_OBJECT FileObject; + ULONG SemaphoreAdjustment; + ULONG Reserved; + ULONG Flags; +}; + +typedef enum { + KSEVENTS_NONE, + KSEVENTS_SPINLOCK, + KSEVENTS_MUTEX, + KSEVENTS_FMUTEX, + KSEVENTS_FMUTEXUNSAFE, + KSEVENTS_INTERRUPT, + KSEVENTS_ERESOURCE +} KSEVENTS_LOCKTYPE; + +#define KSDISPATCH_FASTIO 0x80000000 + +typedef struct { + PDRIVER_DISPATCH Create; + PVOID Context; + UNICODE_STRING ObjectClass; + PSECURITY_DESCRIPTOR SecurityDescriptor; + ULONG Flags; +} KSOBJECT_CREATE_ITEM, *PKSOBJECT_CREATE_ITEM; + +typedef +VOID +(*PFNKSITEMFREECALLBACK)( + IN PKSOBJECT_CREATE_ITEM CreateItem + ); + +#define KSCREATE_ITEM_SECURITYCHANGED 0x00000001 +#define KSCREATE_ITEM_WILDCARD 0x00000002 +#define KSCREATE_ITEM_NOPARAMETERS 0x00000004 +#define KSCREATE_ITEM_FREEONSTOP 0x00000008 + +#define DEFINE_KSCREATE_DISPATCH_TABLE( tablename )\ + KSOBJECT_CREATE_ITEM tablename[] = + +#define DEFINE_KSCREATE_ITEM(DispatchCreate, TypeName, Context)\ +{\ + (DispatchCreate),\ + (PVOID)(Context),\ + {\ + sizeof(TypeName) - sizeof(UNICODE_NULL),\ + sizeof(TypeName),\ + (PWCHAR)(TypeName)\ + },\ + NULL, 0\ +} + +#define DEFINE_KSCREATE_ITEMEX(DispatchCreate, TypeName, Context, Flags)\ +{\ + (DispatchCreate),\ + (PVOID)(Context),\ + {\ + sizeof(TypeName) - sizeof(UNICODE_NULL),\ + sizeof(TypeName),\ + (PWCHAR)(TypeName)\ + },\ + NULL, (Flags)\ +} + +#define DEFINE_KSCREATE_ITEMNULL( DispatchCreate, Context )\ +{\ + DispatchCreate,\ + Context,\ + {\ + 0,\ + 0,\ + NULL,\ + },\ + NULL, 0\ +} + +typedef struct { + ULONG CreateItemsCount; + PKSOBJECT_CREATE_ITEM CreateItemsList; +} KSOBJECT_CREATE, *PKSOBJECT_CREATE; + +typedef struct { + PDRIVER_DISPATCH DeviceIoControl; + PDRIVER_DISPATCH Read; + PDRIVER_DISPATCH Write; + PDRIVER_DISPATCH Flush; + PDRIVER_DISPATCH Close; + PDRIVER_DISPATCH QuerySecurity; + PDRIVER_DISPATCH SetSecurity; + PFAST_IO_DEVICE_CONTROL FastDeviceIoControl; + PFAST_IO_READ FastRead; + PFAST_IO_WRITE FastWrite; +} KSDISPATCH_TABLE, *PKSDISPATCH_TABLE; + +#define DEFINE_KSDISPATCH_TABLE( tablename, DeviceIoControl, Read, Write,\ + Flush, Close, QuerySecurity, SetSecurity,\ + FastDeviceIoControl, FastRead, FastWrite )\ + const KSDISPATCH_TABLE tablename = \ + {\ + DeviceIoControl, \ + Read, \ + Write, \ + Flush, \ + Close, \ + QuerySecurity, \ + SetSecurity, \ + FastDeviceIoControl, \ + FastRead, \ + FastWrite, \ + } + +#define KSCREATE_ITEM_IRP_STORAGE(Irp) (*(PKSOBJECT_CREATE_ITEM*)&(Irp)->Tail.Overlay.DriverContext[0]) +#define KSEVENT_SET_IRP_STORAGE(Irp) (*(const KSEVENT_SET**)&(Irp)->Tail.Overlay.DriverContext[0]) +#define KSEVENT_ITEM_IRP_STORAGE(Irp) (*(const KSEVENT_ITEM**)&(Irp)->Tail.Overlay.DriverContext[3]) +#define KSEVENT_ENTRY_IRP_STORAGE(Irp) (*(PKSEVENT_ENTRY*)&(Irp)->Tail.Overlay.DriverContext[0]) +#define KSMETHOD_SET_IRP_STORAGE(Irp) (*(const KSMETHOD_SET**)&(Irp)->Tail.Overlay.DriverContext[0]) +#define KSMETHOD_ITEM_IRP_STORAGE(Irp) (*(const KSMETHOD_ITEM**)&(Irp)->Tail.Overlay.DriverContext[3]) +#define KSMETHOD_TYPE_IRP_STORAGE(Irp) (*(ULONG_PTR*)(&(Irp)->Tail.Overlay.DriverContext[2])) +#define KSQUEUE_SPINLOCK_IRP_STORAGE(Irp) (*(PKSPIN_LOCK*)&(Irp)->Tail.Overlay.DriverContext[1]) +#define KSPROPERTY_SET_IRP_STORAGE(Irp) (*(const KSPROPERTY_SET**)&(Irp)->Tail.Overlay.DriverContext[0]) +#define KSPROPERTY_ITEM_IRP_STORAGE(Irp) (*(const KSPROPERTY_ITEM**)&(Irp)->Tail.Overlay.DriverContext[3]) +#define KSPROPERTY_ATTRIBUTES_IRP_STORAGE(Irp) (*(PKSATTRIBUTE_LIST*)&(Irp)->Tail.Overlay.DriverContext[2]) + +typedef PVOID KSDEVICE_HEADER, KSOBJECT_HEADER; + +typedef enum { + KsInvokeOnSuccess = 1, + KsInvokeOnError = 2, + KsInvokeOnCancel = 4 +} KSCOMPLETION_INVOCATION; + +typedef enum { + KsListEntryTail, + KsListEntryHead +} KSLIST_ENTRY_LOCATION; + +typedef enum { + KsAcquireOnly, + KsAcquireAndRemove, + KsAcquireOnlySingleItem, + KsAcquireAndRemoveOnlySingleItem +} KSIRP_REMOVAL_OPERATION; + +typedef enum { + KsStackCopyToNewLocation, + KsStackReuseCurrentLocation, + KsStackUseNewLocation +} KSSTACK_USE; + +typedef enum { + KSTARGET_STATE_DISABLED, + KSTARGET_STATE_ENABLED +} KSTARGET_STATE; + +typedef +NTSTATUS +(*PFNKSIRPLISTCALLBACK)( + IN PIRP Irp, + IN PVOID Context + ); + +typedef +VOID +(*PFNREFERENCEDEVICEOBJECT)( + IN PVOID Context + ); + +typedef +VOID +(*PFNDEREFERENCEDEVICEOBJECT)( + IN PVOID Context + ); + +typedef +NTSTATUS +(*PFNQUERYREFERENCESTRING)( + IN PVOID Context, + IN OUT PWCHAR *String + ); + +#define BUS_INTERFACE_REFERENCE_VERSION 0x100 + +typedef struct { + // + // Standard interface header + // + + INTERFACE Interface; + + // + // Standard bus interfaces + // + + PFNREFERENCEDEVICEOBJECT ReferenceDeviceObject; + PFNDEREFERENCEDEVICEOBJECT DereferenceDeviceObject; + PFNQUERYREFERENCESTRING QueryReferenceString; + +} BUS_INTERFACE_REFERENCE, *PBUS_INTERFACE_REFERENCE; + +#define STATIC_REFERENCE_BUS_INTERFACE STATIC_KSMEDIUMSETID_Standard +#define REFERENCE_BUS_INTERFACE KSMEDIUMSETID_Standard + +typedef +NTSTATUS +(*PFNQUERYMEDIUMSLIST)( + IN PVOID Context, + OUT ULONG* MediumsCount, + OUT PKSPIN_MEDIUM* MediumList + ); + +typedef struct { + // + // Standard interface header + // + + INTERFACE Interface; + + // + // Interface definition + // + + PFNQUERYMEDIUMSLIST QueryMediumsList; + +} BUS_INTERFACE_MEDIUMS, *PBUS_INTERFACE_MEDIUMS; + +#define STATIC_GUID_BUS_INTERFACE_MEDIUMS \ + 0x4EC35C3EL, 0x201B, 0x11D2, 0x87, 0x45, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 +DEFINE_GUIDSTRUCT("4EC35C3E-201B-11D2-8745-00A0C9223196", GUID_BUS_INTERFACE_MEDIUMS); +#define GUID_BUS_INTERFACE_MEDIUMS DEFINE_GUIDNAMED(GUID_BUS_INTERFACE_MEDIUMS) + +#endif // defined(_NTDDK_) + +#if !defined( PACK_PRAGMAS_NOT_SUPPORTED ) +#include +#endif + +typedef struct { + GUID PropertySet; + ULONG Count; +} KSPROPERTY_SERIALHDR, *PKSPROPERTY_SERIALHDR; + +#if !defined( PACK_PRAGMAS_NOT_SUPPORTED ) +#include +#endif + +typedef struct { + KSIDENTIFIER PropTypeSet; + ULONG Id; + ULONG PropertyLength; +} KSPROPERTY_SERIAL, *PKSPROPERTY_SERIAL; + +#if defined(_NTDDK_) + +#define IOCTL_KS_HANDSHAKE CTL_CODE(FILE_DEVICE_KS, 0x007, METHOD_NEITHER, FILE_ANY_ACCESS) + +typedef struct { + GUID ProtocolId; + PVOID Argument1; + PVOID Argument2; +} KSHANDSHAKE, *PKSHANDSHAKE; + +typedef struct _KSGATE +KSGATE, *PKSGATE; + +struct _KSGATE { + LONG Count; + PKSGATE NextGate; +}; + +#ifndef _NTOS_ + +void __inline +KsGateTurnInputOn( + IN PKSGATE Gate OPTIONAL + ) +{ + while (Gate && (InterlockedIncrement(&Gate->Count) == 1)) { + Gate = Gate->NextGate; + } +} + +void __inline +KsGateTurnInputOff( + IN PKSGATE Gate OPTIONAL + ) +{ + while (Gate && (InterlockedDecrement(&Gate->Count) == 0)) { + Gate = Gate->NextGate; + } +} + +BOOLEAN __inline +KsGateGetStateUnsafe( + IN PKSGATE Gate + ) +{ + ASSERT(Gate); + return((BOOLEAN)(Gate->Count > 0)); +} + +BOOLEAN __inline +KsGateCaptureThreshold( + IN PKSGATE Gate + ) +{ + BOOLEAN captured; + + ASSERT(Gate); + + captured = (BOOLEAN)(InterlockedCompareExchange(&Gate->Count,0,1) == 1); + + // + // If we made a transition, it must be propagated. + // + if (captured) { + KsGateTurnInputOff(Gate->NextGate); + } + + // + // We return whatever the state was prior to the compare/exchange. If + // the state was on, the state is now off. + // + return captured; +} + +void __inline +KsGateInitialize( + IN PKSGATE Gate, + IN LONG InitialCount, + IN PKSGATE NextGate OPTIONAL, + IN BOOLEAN StateToPropagate // IN BOOLEAN NextGateIsAnOrGate + ) +{ + ASSERT(Gate); + Gate->Count = InitialCount; + Gate->NextGate = NextGate; + + if (NextGate) { + if (InitialCount > 0) { + if (StateToPropagate) { + KsGateTurnInputOn(NextGate); + } + } else { + if (! StateToPropagate) { + KsGateTurnInputOff(NextGate); + } + } + } +} + +void __inline +KsGateInitializeAnd( + IN PKSGATE AndGate, + IN PKSGATE NextOrGate OPTIONAL + ) +{ + KsGateInitialize(AndGate,1,NextOrGate,TRUE); +} + +void __inline +KsGateInitializeOr( + IN PKSGATE OrGate, + IN PKSGATE NextAndGate OPTIONAL + ) +{ + KsGateInitialize(OrGate,0,NextAndGate,FALSE); +} + +void __inline KsGateAddOnInputToAnd(IN PKSGATE AndGate) { UNREFERENCED_PARAMETER (AndGate); } +void __inline KsGateAddOffInputToAnd(IN PKSGATE AndGate) { KsGateTurnInputOff(AndGate); } +void __inline KsGateRemoveOnInputFromAnd(IN PKSGATE AndGate) { UNREFERENCED_PARAMETER (AndGate); } +void __inline KsGateRemoveOffInputFromAnd(IN PKSGATE AndGate) { KsGateTurnInputOn(AndGate); } + +void __inline KsGateAddOnInputToOr(IN PKSGATE OrGate) { KsGateTurnInputOn(OrGate); } +void __inline KsGateAddOffInputToOr(IN PKSGATE OrGate) { UNREFERENCED_PARAMETER (OrGate); } +void __inline KsGateRemoveOnInputFromOr(IN PKSGATE OrGate) { KsGateTurnInputOff(OrGate); } +void __inline KsGateRemoveOffInputFromOr(IN PKSGATE OrGate) { UNREFERENCED_PARAMETER (OrGate); } + +void __inline +KsGateTerminateAnd( + IN PKSGATE AndGate + ) +{ + ASSERT(AndGate); + if (KsGateGetStateUnsafe(AndGate)) { + KsGateRemoveOnInputFromOr(AndGate->NextGate); + } else { + KsGateRemoveOffInputFromOr(AndGate->NextGate); + } +} + +void __inline +KsGateTerminateOr( + IN PKSGATE OrGate + ) +{ + ASSERT(OrGate); + if (KsGateGetStateUnsafe(OrGate)) { + KsGateRemoveOnInputFromAnd(OrGate->NextGate); + } else { + KsGateRemoveOffInputFromAnd(OrGate->NextGate); + } +} + +#endif // !_NTOS_ + +typedef PVOID KSOBJECT_BAG; + +typedef +BOOLEAN +(*PFNKSGENERATEEVENTCALLBACK)( + IN PVOID Context, + IN PKSEVENT_ENTRY EventEntry + ); + +typedef +NTSTATUS +(*PFNKSDEVICECREATE)( + IN PKSDEVICE Device + ); +typedef +NTSTATUS +(*PFNKSDEVICEPNPSTART)( + IN PKSDEVICE Device, + IN PIRP Irp, + IN PCM_RESOURCE_LIST TranslatedResourceList OPTIONAL, + IN PCM_RESOURCE_LIST UntranslatedResourceList OPTIONAL + ); +typedef +NTSTATUS +(*PFNKSDEVICE)( + IN PKSDEVICE Device + ); +typedef +NTSTATUS +(*PFNKSDEVICEIRP)( + IN PKSDEVICE Device, + IN PIRP Irp + ); +typedef +void +(*PFNKSDEVICEIRPVOID)( + IN PKSDEVICE Device, + IN PIRP Irp + ); +typedef +NTSTATUS +(*PFNKSDEVICEQUERYCAPABILITIES)( + IN PKSDEVICE Device, + IN PIRP Irp, + IN OUT PDEVICE_CAPABILITIES Capabilities + ); +typedef +NTSTATUS +(*PFNKSDEVICEQUERYPOWER)( + IN PKSDEVICE Device, + IN PIRP Irp, + IN DEVICE_POWER_STATE DeviceTo, + IN DEVICE_POWER_STATE DeviceFrom, + IN SYSTEM_POWER_STATE SystemTo, + IN SYSTEM_POWER_STATE SystemFrom, + IN POWER_ACTION Action + ); +typedef +void +(*PFNKSDEVICESETPOWER)( + IN PKSDEVICE Device, + IN PIRP Irp, + IN DEVICE_POWER_STATE To, + IN DEVICE_POWER_STATE From + ); +typedef +NTSTATUS +(*PFNKSFILTERFACTORYVOID)( + IN PKSFILTERFACTORY FilterFactory + ); +typedef +void +(*PFNKSFILTERFACTORYPOWER)( + IN PKSFILTERFACTORY FilterFactory, + IN DEVICE_POWER_STATE State + ); +typedef +NTSTATUS +(*PFNKSFILTERIRP)( + IN PKSFILTER Filter, + IN PIRP Irp + ); +typedef +NTSTATUS +(*PFNKSFILTERPROCESS)( + IN PKSFILTER Filter, + IN PKSPROCESSPIN_INDEXENTRY Index + ); +typedef +NTSTATUS +(*PFNKSFILTERVOID)( + IN PKSFILTER Filter + ); +typedef +void +(*PFNKSFILTERPOWER)( + IN PKSFILTER Filter, + IN DEVICE_POWER_STATE State + ); +typedef +NTSTATUS +(*PFNKSPINIRP)( + IN PKSPIN Pin, + IN PIRP Irp + ); +typedef +NTSTATUS +(*PFNKSPINSETDEVICESTATE)( + IN PKSPIN Pin, + IN KSSTATE ToState, + IN KSSTATE FromState + ); +typedef +NTSTATUS +(*PFNKSPINSETDATAFORMAT)( + IN PKSPIN Pin, + IN PKSDATAFORMAT OldFormat OPTIONAL, + IN PKSMULTIPLE_ITEM OldAttributeList OPTIONAL, + IN const KSDATARANGE* DataRange, + IN const KSATTRIBUTE_LIST* AttributeRange OPTIONAL + ); +typedef +NTSTATUS +(*PFNKSPINHANDSHAKE)( + IN PKSPIN Pin, + IN PKSHANDSHAKE In, + IN PKSHANDSHAKE Out + ); +typedef +NTSTATUS +(*PFNKSPIN)( + IN PKSPIN Pin + ); +typedef +void +(*PFNKSPINVOID)( + IN PKSPIN Pin + ); +typedef +void +(*PFNKSPINPOWER)( + IN PKSPIN Pin, + IN DEVICE_POWER_STATE State + ); +typedef +BOOLEAN +(*PFNKSPINSETTIMER)( + IN PKSPIN Pin, + IN PKTIMER Timer, + IN LARGE_INTEGER DueTime, + IN PKDPC Dpc + ); +typedef +BOOLEAN +(*PFNKSPINCANCELTIMER)( + IN PKSPIN Pin, + IN PKTIMER Timer + ); +typedef +LONGLONG +(FASTCALL *PFNKSPINCORRELATEDTIME)( + IN PKSPIN Pin, + OUT PLONGLONG SystemTime + ); +typedef +void +(*PFNKSPINRESOLUTION)( + IN PKSPIN Pin, + OUT PKSRESOLUTION Resolution + ); +typedef +NTSTATUS +(*PFNKSPININITIALIZEALLOCATOR)( + IN PKSPIN Pin, + IN PKSALLOCATOR_FRAMING AllocatorFraming, + OUT PVOID* Context + ); +typedef +void +(*PFNKSSTREAMPOINTER)( + IN PKSSTREAM_POINTER StreamPointer + ); + +typedef struct KSAUTOMATION_TABLE_ +KSAUTOMATION_TABLE, *PKSAUTOMATION_TABLE; +struct KSAUTOMATION_TABLE_ { + ULONG PropertySetsCount; + ULONG PropertyItemSize; + const KSPROPERTY_SET* PropertySets; + ULONG MethodSetsCount; + ULONG MethodItemSize; + const KSMETHOD_SET* MethodSets; + ULONG EventSetsCount; + ULONG EventItemSize; + const KSEVENT_SET* EventSets; +#if !defined(_WIN64) + PVOID Alignment; +#endif // !defined(_WIN64) +}; + +#define DEFINE_KSAUTOMATION_TABLE(table)\ + const KSAUTOMATION_TABLE table = + +#define DEFINE_KSAUTOMATION_PROPERTIES(table)\ + SIZEOF_ARRAY(table),\ + sizeof(KSPROPERTY_ITEM),\ + table + +#define DEFINE_KSAUTOMATION_METHODS(table)\ + SIZEOF_ARRAY(table),\ + sizeof(KSMETHOD_ITEM),\ + table + +#define DEFINE_KSAUTOMATION_EVENTS(table)\ + SIZEOF_ARRAY(table),\ + sizeof(KSEVENT_ITEM),\ + table + +#define DEFINE_KSAUTOMATION_PROPERTIES_NULL\ + 0,\ + sizeof(KSPROPERTY_ITEM),\ + NULL + +#define DEFINE_KSAUTOMATION_METHODS_NULL\ + 0,\ + sizeof(KSMETHOD_ITEM),\ + NULL + +#define DEFINE_KSAUTOMATION_EVENTS_NULL\ + 0,\ + sizeof(KSEVENT_ITEM),\ + NULL + +#define MIN_DEV_VER_FOR_QI (0x100) + +struct _KSDEVICE_DISPATCH { + PFNKSDEVICECREATE Add; + PFNKSDEVICEPNPSTART Start; + PFNKSDEVICE PostStart; + PFNKSDEVICEIRP QueryStop; + PFNKSDEVICEIRPVOID CancelStop; + PFNKSDEVICEIRPVOID Stop; + PFNKSDEVICEIRP QueryRemove; + PFNKSDEVICEIRPVOID CancelRemove; + PFNKSDEVICEIRPVOID Remove; + PFNKSDEVICEQUERYCAPABILITIES QueryCapabilities; + PFNKSDEVICEIRPVOID SurpriseRemoval; + PFNKSDEVICEQUERYPOWER QueryPower; + PFNKSDEVICESETPOWER SetPower; + PFNKSDEVICEIRP QueryInterface; // added in version 0x100 +}; + +struct _KSFILTER_DISPATCH { + PFNKSFILTERIRP Create; + PFNKSFILTERIRP Close; + PFNKSFILTERPROCESS Process; + PFNKSFILTERVOID Reset; +}; + +struct _KSPIN_DISPATCH { + PFNKSPINIRP Create; + PFNKSPINIRP Close; + PFNKSPIN Process; + PFNKSPINVOID Reset; + PFNKSPINSETDATAFORMAT SetDataFormat; + PFNKSPINSETDEVICESTATE SetDeviceState; + PFNKSPIN Connect; + PFNKSPINVOID Disconnect; + const KSCLOCK_DISPATCH* Clock; + const KSALLOCATOR_DISPATCH* Allocator; +}; + +struct _KSCLOCK_DISPATCH { + PFNKSPINSETTIMER SetTimer; + PFNKSPINCANCELTIMER CancelTimer; + PFNKSPINCORRELATEDTIME CorrelatedTime; + PFNKSPINRESOLUTION Resolution; +}; + +struct _KSALLOCATOR_DISPATCH { + PFNKSPININITIALIZEALLOCATOR InitializeAllocator; + PFNKSDELETEALLOCATOR DeleteAllocator; + PFNKSDEFAULTALLOCATE Allocate; + PFNKSDEFAULTFREE Free; +}; + +#define KSDEVICE_DESCRIPTOR_VERSION (0x100) + +struct _KSDEVICE_DESCRIPTOR { + const KSDEVICE_DISPATCH* Dispatch; + ULONG FilterDescriptorsCount; + const KSFILTER_DESCRIPTOR*const* FilterDescriptors; + ULONG Version; // this is 0 for pre-version 100 driver + //#if !defined(_WIN64) + //PVOID Alignment; + //#endif //!defined(_WIN64) +}; + +struct _KSFILTER_DESCRIPTOR { + const KSFILTER_DISPATCH* Dispatch; + const KSAUTOMATION_TABLE* AutomationTable; + ULONG Version; +#define KSFILTER_DESCRIPTOR_VERSION ((ULONG)-1) + ULONG Flags; +#define KSFILTER_FLAG_DISPATCH_LEVEL_PROCESSING 0x00000001 +#define KSFILTER_FLAG_CRITICAL_PROCESSING 0x00000002 +#define KSFILTER_FLAG_HYPERCRITICAL_PROCESSING 0x00000004 +#define KSFILTER_FLAG_RECEIVE_ZERO_LENGTH_SAMPLES 0x00000008 +#define KSFILTER_FLAG_DENY_USERMODE_ACCESS 0x80000000 + const GUID* ReferenceGuid; + ULONG PinDescriptorsCount; + ULONG PinDescriptorSize; + const KSPIN_DESCRIPTOR_EX* PinDescriptors; + ULONG CategoriesCount; + const GUID* Categories; + ULONG NodeDescriptorsCount; + ULONG NodeDescriptorSize; + const KSNODE_DESCRIPTOR* NodeDescriptors; + ULONG ConnectionsCount; + const KSTOPOLOGY_CONNECTION* Connections; + const KSCOMPONENTID* ComponentId; +}; + +#define DEFINE_KSFILTER_DESCRIPTOR(descriptor)\ + const KSFILTER_DESCRIPTOR descriptor = + +#define DEFINE_KSFILTER_PIN_DESCRIPTORS(table)\ + SIZEOF_ARRAY(table),\ + sizeof(table[0]),\ + table + +#define DEFINE_KSFILTER_CATEGORIES(table)\ + SIZEOF_ARRAY(table),\ + table + +#define DEFINE_KSFILTER_CATEGORY(category)\ + 1,\ + &(category) + +#define DEFINE_KSFILTER_CATEGORIES_NULL\ + 0,\ + NULL + +#define DEFINE_KSFILTER_NODE_DESCRIPTORS(table)\ + SIZEOF_ARRAY(table),\ + sizeof(table[0]),\ + table + +#define DEFINE_KSFILTER_NODE_DESCRIPTORS_NULL\ + 0,\ + sizeof(KSNODE_DESCRIPTOR),\ + NULL + +#define DEFINE_KSFILTER_CONNECTIONS(table)\ + SIZEOF_ARRAY(table),\ + table + +#define DEFINE_KSFILTER_DEFAULT_CONNECTIONS\ + 0,\ + NULL + +#define DEFINE_KSFILTER_DESCRIPTOR_TABLE(table)\ + const KSFILTER_DESCRIPTOR*const table[] = + +struct _KSPIN_DESCRIPTOR_EX { + const KSPIN_DISPATCH* Dispatch; + const KSAUTOMATION_TABLE* AutomationTable; + KSPIN_DESCRIPTOR PinDescriptor; + ULONG Flags; +#define KSPIN_FLAG_DISPATCH_LEVEL_PROCESSING KSFILTER_FLAG_DISPATCH_LEVEL_PROCESSING +#define KSPIN_FLAG_CRITICAL_PROCESSING KSFILTER_FLAG_CRITICAL_PROCESSING +#define KSPIN_FLAG_HYPERCRITICAL_PROCESSING KSFILTER_FLAG_HYPERCRITICAL_PROCESSING +#define KSPIN_FLAG_ASYNCHRONOUS_PROCESSING 0x00000008 +#define KSPIN_FLAG_DO_NOT_INITIATE_PROCESSING 0x00000010 +#define KSPIN_FLAG_INITIATE_PROCESSING_ON_EVERY_ARRIVAL 0x00000020 +#define KSPIN_FLAG_FRAMES_NOT_REQUIRED_FOR_PROCESSING 0x00000040 +#define KSPIN_FLAG_ENFORCE_FIFO 0x00000080 + +#define KSPIN_FLAG_GENERATE_MAPPINGS 0x00000100 +#define KSPIN_FLAG_DISTINCT_TRAILING_EDGE 0x00000200 + +#define KSPIN_FLAG_PROCESS_IN_RUN_STATE_ONLY 0x00010000 +#define KSPIN_FLAG_SPLITTER 0x00020000 +#define KSPIN_FLAG_USE_STANDARD_TRANSPORT 0x00040000 +#define KSPIN_FLAG_DO_NOT_USE_STANDARD_TRANSPORT 0x00080000 +#define KSPIN_FLAG_FIXED_FORMAT 0x00100000 +#define KSPIN_FLAG_GENERATE_EOS_EVENTS 0x00200000 +#define KSPIN_FLAG_RENDERER (KSPIN_FLAG_PROCESS_IN_RUN_STATE_ONLY|KSPIN_FLAG_GENERATE_EOS_EVENTS) +#define KSPIN_FLAG_IMPLEMENT_CLOCK 0x00400000 +#define KSPIN_FLAG_SOME_FRAMES_REQUIRED_FOR_PROCESSING 0x00800000 +#define KSPIN_FLAG_PROCESS_IF_ANY_IN_RUN_STATE 0x01000000 +#define KSPIN_FLAG_DENY_USERMODE_ACCESS 0x80000000 + ULONG InstancesPossible; + ULONG InstancesNecessary; + const KSALLOCATOR_FRAMING_EX* AllocatorFraming; + PFNKSINTERSECTHANDLEREX IntersectHandler; +}; + +#define DEFINE_KSPIN_DEFAULT_INTERFACES\ + 0,\ + NULL + +#define DEFINE_KSPIN_DEFAULT_MEDIUMS\ + 0,\ + NULL + +struct _KSNODE_DESCRIPTOR { + const KSAUTOMATION_TABLE* AutomationTable; + const GUID* Type; + const GUID* Name; +#if !defined(_WIN64) + PVOID Alignment; +#endif // !defined(_WIN64) +}; + +#if !defined(_WIN64) +#define DEFINE_NODE_DESCRIPTOR(automation,type,name) \ + { (automation), (type), (name), NULL } +#else // !defined(_WIN64) +#define DEFINE_NODE_DESCRIPTOR(automation,type,name) \ + { (automation), (type), (name) } +#endif // !defined(_WIN64) + +struct _KSDEVICE { + const KSDEVICE_DESCRIPTOR* Descriptor; + KSOBJECT_BAG Bag; + PVOID Context; + PDEVICE_OBJECT FunctionalDeviceObject; + PDEVICE_OBJECT PhysicalDeviceObject; + PDEVICE_OBJECT NextDeviceObject; + BOOLEAN Started; + SYSTEM_POWER_STATE SystemPowerState; + DEVICE_POWER_STATE DevicePowerState; +}; + +struct _KSFILTERFACTORY { + const KSFILTER_DESCRIPTOR* FilterDescriptor; + KSOBJECT_BAG Bag; + PVOID Context; +}; + +struct _KSFILTER { + const KSFILTER_DESCRIPTOR* Descriptor; + KSOBJECT_BAG Bag; + PVOID Context; +}; + +struct _KSPIN { + const KSPIN_DESCRIPTOR_EX* Descriptor; + KSOBJECT_BAG Bag; + PVOID Context; + ULONG Id; + KSPIN_COMMUNICATION Communication; + BOOLEAN ConnectionIsExternal; + KSPIN_INTERFACE ConnectionInterface; + KSPIN_MEDIUM ConnectionMedium; + KSPRIORITY ConnectionPriority; + PKSDATAFORMAT ConnectionFormat; + PKSMULTIPLE_ITEM AttributeList; + ULONG StreamHeaderSize; + KSPIN_DATAFLOW DataFlow; + KSSTATE DeviceState; + KSRESET ResetState; + KSSTATE ClientState; +}; + +struct _KSMAPPING { + PHYSICAL_ADDRESS PhysicalAddress; + ULONG ByteCount; + ULONG Alignment; +}; + +struct _KSSTREAM_POINTER_OFFSET +{ +#if defined(_NTDDK_) + union { + PUCHAR Data; + PKSMAPPING Mappings; + }; +#else // !defined(_NTDDK_) + PUCHAR Data; +#endif // !defined(_NTDDK_) +#if !defined(_WIN64) + PVOID Alignment; +#endif // !defined(_WIN64) + ULONG Count; + ULONG Remaining; +}; + +struct _KSSTREAM_POINTER +{ + PVOID Context; + PKSPIN Pin; + PKSSTREAM_HEADER StreamHeader; + PKSSTREAM_POINTER_OFFSET Offset; + KSSTREAM_POINTER_OFFSET OffsetIn; + KSSTREAM_POINTER_OFFSET OffsetOut; +}; + +struct _KSPROCESSPIN { + PKSPIN Pin; + PKSSTREAM_POINTER StreamPointer; + PKSPROCESSPIN InPlaceCounterpart; + PKSPROCESSPIN DelegateBranch; + PKSPROCESSPIN CopySource; + PVOID Data; + ULONG BytesAvailable; + ULONG BytesUsed; + ULONG Flags; + BOOLEAN Terminate; +}; + +struct _KSPROCESSPIN_INDEXENTRY { + PKSPROCESSPIN *Pins; + ULONG Count; +}; + +typedef enum { + KsObjectTypeDevice, + KsObjectTypeFilterFactory, + KsObjectTypeFilter, + KsObjectTypePin +} KSOBJECTTYPE; + +typedef +void +(*PFNKSFREE)( + IN PVOID Data + ); + +typedef +void +(*PFNKSPINFRAMERETURN)( + IN PKSPIN Pin, + IN PVOID Data OPTIONAL, + IN ULONG Size OPTIONAL, + IN PMDL Mdl OPTIONAL, + IN PVOID Context OPTIONAL, + IN NTSTATUS Status + ); + +typedef +void +(*PFNKSPINIRPCOMPLETION)( + IN PKSPIN Pin, + IN PIRP Irp + ); + +#if defined(_UNKNOWN_H_) || defined(__IUnknown_INTERFACE_DEFINED__) +#if !defined(_IKsControl_) +#define _IKsControl_ + +typedef interface IKsControl* PIKSCONTROL; + +#if !defined(DEFINE_ABSTRACT_UNKNOWN) + +#define DEFINE_ABSTRACT_UNKNOWN() \ + STDMETHOD_(NTSTATUS, QueryInterface)(THIS_ \ + REFIID InterfaceId, \ + PVOID* Interface \ + ) PURE; \ + STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ + STDMETHOD_(ULONG,Release)(THIS) PURE; + +#endif //!defined(DEFINE_ABSTRACT_UNKNOWN) + +#undef INTERFACE +#define INTERFACE IKsControl +DECLARE_INTERFACE_(IKsControl,IUnknown) +{ + DEFINE_ABSTRACT_UNKNOWN() // For C + + STDMETHOD_(NTSTATUS, KsProperty)(THIS_ + IN PKSPROPERTY Property, + IN ULONG PropertyLength, + IN OUT PVOID PropertyData, + IN ULONG DataLength, + OUT ULONG* BytesReturned + ) PURE; + STDMETHOD_(NTSTATUS, KsMethod)(THIS_ + IN PKSMETHOD Method, + IN ULONG MethodLength, + IN OUT PVOID MethodData, + IN ULONG DataLength, + OUT ULONG* BytesReturned + ) PURE; + STDMETHOD_(NTSTATUS, KsEvent)(THIS_ + IN PKSEVENT Event OPTIONAL, + IN ULONG EventLength, + IN OUT PVOID EventData, + IN ULONG DataLength, + OUT ULONG* BytesReturned + ) PURE; +}; + +typedef interface IKsReferenceClock* PIKSREFERENCECLOCK; + +#undef INTERFACE +#define INTERFACE IKsReferenceClock +DECLARE_INTERFACE_(IKsReferenceClock,IUnknown) +{ + DEFINE_ABSTRACT_UNKNOWN() // For C + + STDMETHOD_(LONGLONG,GetTime)(THIS + ) PURE; + STDMETHOD_(LONGLONG,GetPhysicalTime)(THIS + ) PURE; + STDMETHOD_(LONGLONG,GetCorrelatedTime)(THIS_ + OUT PLONGLONG SystemTime + ) PURE; + STDMETHOD_(LONGLONG,GetCorrelatedPhysicalTime)(THIS_ + OUT PLONGLONG SystemTime + ) PURE; + STDMETHOD_(NTSTATUS, GetResolution)(THIS_ + OUT PKSRESOLUTION Resolution + ) PURE; + STDMETHOD_(NTSTATUS, GetState)(THIS_ + OUT PKSSTATE State + ) PURE; +}; +#undef INTERFACE + +#define STATIC_IID_IKsControl \ +0x28F54685L, 0x06FD, 0x11D2, 0xB2, 0x7A, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 +DEFINE_GUID(IID_IKsControl, +0x28F54685L, 0x06FD, 0x11D2, 0xB2, 0x7A, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96); +#if defined(__cplusplus) && _MSC_VER >= 1100 +struct __declspec(uuid("28F54685-06FD-11D2-B27A-00A0C9223196")) IKsControl; +#endif + +#define STATIC_IID_IKsFastClock \ +0xc9902485, 0xc180, 0x11d2, 0x84, 0x73, 0xd4, 0x23, 0x94, 0x45, 0x9e, 0x5e +DEFINE_GUID(IID_IKsFastClock, +0xc9902485, 0xc180, 0x11d2, 0x84, 0x73, 0xd4, 0x23, 0x94, 0x45, 0x9e, 0x5e); +#if defined(__cplusplus) && _MSC_VER >= 1100 +struct __declspec(uuid("C9902485-C180-11d2-8473-D42394459E5E")) IKsFastClock; +#endif + +#endif // !defined(_IKsControl_) +#endif // defined(_UNKNOWN_H_) || defined(__IUnknown_INTERFACE_DEFINED__) + +#endif // defined(_NTDDK_) + +//=========================================================================== + +#if defined(__cplusplus) +extern "C" { +#endif // defined(__cplusplus) + +// +// exported prototypes +// + +#ifdef _KSDDK_ +#define KSDDKAPI +#else // !_KSDDK_ +#define KSDDKAPI DECLSPEC_IMPORT +#endif // _KSDDK_ + +#if defined(_NTDDK_) + +KSDDKAPI +NTSTATUS +NTAPI +KsEnableEvent( + IN PIRP Irp, + IN ULONG EventSetsCount, + IN const KSEVENT_SET* EventSet, + IN OUT PLIST_ENTRY EventsList OPTIONAL, + IN KSEVENTS_LOCKTYPE EventsFlags OPTIONAL, + IN PVOID EventsLock OPTIONAL + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsEnableEventWithAllocator( + IN PIRP Irp, + IN ULONG EventSetsCount, + IN const KSEVENT_SET* EventSet, + IN OUT PLIST_ENTRY EventsList OPTIONAL, + IN KSEVENTS_LOCKTYPE EventsFlags OPTIONAL, + IN PVOID EventsLock OPTIONAL, + IN PFNKSALLOCATOR Allocator OPTIONAL, + IN ULONG EventItemSize OPTIONAL + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsDisableEvent( + IN PIRP Irp, + IN OUT PLIST_ENTRY EventsList, + IN KSEVENTS_LOCKTYPE EventsFlags, + IN PVOID EventsLock + ); + +KSDDKAPI +VOID +NTAPI +KsDiscardEvent( + IN PKSEVENT_ENTRY EventEntry + ); + +KSDDKAPI +VOID +NTAPI +KsFreeEventList( + IN PFILE_OBJECT FileObject, + IN OUT PLIST_ENTRY EventsList, + IN KSEVENTS_LOCKTYPE EventsFlags, + IN PVOID EventsLock + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsGenerateEvent( + IN PKSEVENT_ENTRY EventEntry + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsGenerateDataEvent( + IN PKSEVENT_ENTRY EventEntry, + IN ULONG DataSize, + IN PVOID Data + ); + +KSDDKAPI +VOID +NTAPI +KsGenerateEventList( + IN GUID* Set OPTIONAL, + IN ULONG EventId, + IN PLIST_ENTRY EventsList, + IN KSEVENTS_LOCKTYPE EventsFlags, + IN PVOID EventsLock + ); + +// property.c: + +KSDDKAPI +NTSTATUS +NTAPI +KsPropertyHandler( + IN PIRP Irp, + IN ULONG PropertySetsCount, + IN const KSPROPERTY_SET* PropertySet + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsPropertyHandlerWithAllocator( + IN PIRP Irp, + IN ULONG PropertySetsCount, + IN const KSPROPERTY_SET* PropertySet, + IN PFNKSALLOCATOR Allocator OPTIONAL, + IN ULONG PropertyItemSize OPTIONAL + ); + +KSDDKAPI +BOOLEAN +NTAPI +KsFastPropertyHandler( + IN PFILE_OBJECT FileObject, + IN PKSPROPERTY Property, + IN ULONG PropertyLength, + IN OUT PVOID Data, + IN ULONG DataLength, + OUT PIO_STATUS_BLOCK IoStatus, + IN ULONG PropertySetsCount, + IN const KSPROPERTY_SET* PropertySet + ); + +// method.c: + +KSDDKAPI +NTSTATUS +NTAPI +KsMethodHandler( + IN PIRP Irp, + IN ULONG MethodSetsCount, + IN const KSMETHOD_SET* MethodSet + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsMethodHandlerWithAllocator( + IN PIRP Irp, + IN ULONG MethodSetsCount, + IN const KSMETHOD_SET* MethodSet, + IN PFNKSALLOCATOR Allocator OPTIONAL, + IN ULONG MethodItemSize OPTIONAL + ); + +KSDDKAPI +BOOLEAN +NTAPI +KsFastMethodHandler( + IN PFILE_OBJECT FileObject, + IN PKSMETHOD Method, + IN ULONG MethodLength, + IN OUT PVOID Data, + IN ULONG DataLength, + OUT PIO_STATUS_BLOCK IoStatus, + IN ULONG MethodSetsCount, + IN const KSMETHOD_SET* MethodSet + ); + +// alloc.c: + +KSDDKAPI +NTSTATUS +NTAPI +KsCreateDefaultAllocator( + IN PIRP Irp + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsCreateDefaultAllocatorEx( + IN PIRP Irp, + IN PVOID InitializeContext OPTIONAL, + IN PFNKSDEFAULTALLOCATE DefaultAllocate OPTIONAL, + IN PFNKSDEFAULTFREE DefaultFree OPTIONAL, + IN PFNKSINITIALIZEALLOCATOR InitializeAllocator OPTIONAL, + IN PFNKSDELETEALLOCATOR DeleteAllocator OPTIONAL + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsCreateAllocator( + IN HANDLE ConnectionHandle, + IN PKSALLOCATOR_FRAMING AllocatorFraming, + OUT PHANDLE AllocatorHandle + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsValidateAllocatorCreateRequest( + IN PIRP Irp, + OUT PKSALLOCATOR_FRAMING* AllocatorFraming + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsValidateAllocatorFramingEx( + IN PKSALLOCATOR_FRAMING_EX Framing, + IN ULONG BufferSize, + IN const KSALLOCATOR_FRAMING_EX *PinFraming + ); + +// clock.c: + +KSDDKAPI +NTSTATUS +NTAPI +KsAllocateDefaultClock( + OUT PKSDEFAULTCLOCK* DefaultClock + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsAllocateDefaultClockEx( + OUT PKSDEFAULTCLOCK* DefaultClock, + IN PVOID Context OPTIONAL, + IN PFNKSSETTIMER SetTimer OPTIONAL, + IN PFNKSCANCELTIMER CancelTimer OPTIONAL, + IN PFNKSCORRELATEDTIME CorrelatedTime OPTIONAL, + IN const KSRESOLUTION* Resolution OPTIONAL, + IN ULONG Flags + ); + +KSDDKAPI +VOID +NTAPI +KsFreeDefaultClock( + IN PKSDEFAULTCLOCK DefaultClock + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsCreateDefaultClock( + IN PIRP Irp, + IN PKSDEFAULTCLOCK DefaultClock + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsCreateClock( + IN HANDLE ConnectionHandle, + IN PKSCLOCK_CREATE ClockCreate, + OUT PHANDLE ClockHandle + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsValidateClockCreateRequest( + IN PIRP Irp, + OUT PKSCLOCK_CREATE* ClockCreate + ); + +KSDDKAPI +KSSTATE +NTAPI +KsGetDefaultClockState( + IN PKSDEFAULTCLOCK DefaultClock + ); + +KSDDKAPI +VOID +NTAPI +KsSetDefaultClockState( + IN PKSDEFAULTCLOCK DefaultClock, + IN KSSTATE State + ); + +KSDDKAPI +LONGLONG +NTAPI +KsGetDefaultClockTime( + IN PKSDEFAULTCLOCK DefaultClock + ); + +KSDDKAPI +VOID +NTAPI +KsSetDefaultClockTime( + IN PKSDEFAULTCLOCK DefaultClock, + IN LONGLONG Time + ); + +// connect.c: + +KSDDKAPI +NTSTATUS +NTAPI +KsCreatePin( + IN HANDLE FilterHandle, + IN PKSPIN_CONNECT Connect, + IN ACCESS_MASK DesiredAccess, + OUT PHANDLE ConnectionHandle + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsValidateConnectRequest( + IN PIRP Irp, + IN ULONG DescriptorsCount, + IN const KSPIN_DESCRIPTOR* Descriptor, + OUT PKSPIN_CONNECT* Connect + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsPinPropertyHandler( + IN PIRP Irp, + IN PKSPROPERTY Property, + IN OUT PVOID Data, + IN ULONG DescriptorsCount, + IN const KSPIN_DESCRIPTOR* Descriptor + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsPinDataIntersection( + IN PIRP Irp, + IN PKSP_PIN Pin, + OUT PVOID Data OPTIONAL, + IN ULONG DescriptorsCount, + IN const KSPIN_DESCRIPTOR* Descriptor, + IN PFNKSINTERSECTHANDLER IntersectHandler + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsPinDataIntersectionEx( + IN PIRP Irp, + IN PKSP_PIN Pin, + OUT PVOID Data, + IN ULONG DescriptorsCount, + IN const KSPIN_DESCRIPTOR* Descriptor, + IN ULONG DescriptorSize, + IN PFNKSINTERSECTHANDLEREX IntersectHandler OPTIONAL, + IN PVOID HandlerContext OPTIONAL + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsHandleSizedListQuery( + IN PIRP Irp, + IN ULONG DataItemsCount, + IN ULONG DataItemSize, + IN const VOID* DataItems + ); + +// image.c: + +#if (!defined( MAKEINTRESOURCE )) +#define MAKEINTRESOURCE( res ) ((ULONG_PTR) (USHORT) res) +#endif + +#if (!defined( RT_STRING )) +#define RT_STRING MAKEINTRESOURCE( 6 ) +#define RT_RCDATA MAKEINTRESOURCE( 10 ) +#endif + +KSDDKAPI +NTSTATUS +NTAPI +KsLoadResource( + IN PVOID ImageBase, + IN POOL_TYPE PoolType, + IN ULONG_PTR ResourceName, + IN ULONG ResourceType, + OUT PVOID *Resource, + OUT PULONG ResourceSize + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsGetImageNameAndResourceId( + IN HANDLE RegKey, + OUT PUNICODE_STRING ImageName, + OUT PULONG_PTR ResourceId, + OUT PULONG ValueType +); + +KSDDKAPI +NTSTATUS +NTAPI +KsMapModuleName( + IN PDEVICE_OBJECT PhysicalDeviceObject, + IN PUNICODE_STRING ModuleName, + OUT PUNICODE_STRING ImageName, + OUT PULONG_PTR ResourceId, + OUT PULONG ValueType + ); + +// irp.c: + +KSDDKAPI +NTSTATUS +NTAPI +KsReferenceBusObject( + IN KSDEVICE_HEADER Header + ); + +KSDDKAPI +VOID +NTAPI +KsDereferenceBusObject( + IN KSDEVICE_HEADER Header + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsDispatchQuerySecurity( + IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsDispatchSetSecurity( + IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsDispatchSpecificProperty( + IN PIRP Irp, + IN PFNKSHANDLER Handler + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsDispatchSpecificMethod( + IN PIRP Irp, + IN PFNKSHANDLER Handler + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsReadFile( + IN PFILE_OBJECT FileObject, + IN PKEVENT Event OPTIONAL, + IN PVOID PortContext OPTIONAL, + OUT PIO_STATUS_BLOCK IoStatusBlock, + OUT PVOID Buffer, + IN ULONG Length, + IN ULONG Key OPTIONAL, + IN KPROCESSOR_MODE RequestorMode + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsWriteFile( + IN PFILE_OBJECT FileObject, + IN PKEVENT Event OPTIONAL, + IN PVOID PortContext OPTIONAL, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN PVOID Buffer, + IN ULONG Length, + IN ULONG Key OPTIONAL, + IN KPROCESSOR_MODE RequestorMode + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsQueryInformationFile( + IN PFILE_OBJECT FileObject, + OUT PVOID FileInformation, + IN ULONG Length, + IN FILE_INFORMATION_CLASS FileInformationClass + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsSetInformationFile( + IN PFILE_OBJECT FileObject, + IN PVOID FileInformation, + IN ULONG Length, + IN FILE_INFORMATION_CLASS FileInformationClass + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsStreamIo( + IN PFILE_OBJECT FileObject, + IN PKEVENT Event OPTIONAL, + IN PVOID PortContext OPTIONAL, + IN PIO_COMPLETION_ROUTINE CompletionRoutine OPTIONAL, + IN PVOID CompletionContext OPTIONAL, + IN KSCOMPLETION_INVOCATION CompletionInvocationFlags OPTIONAL, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN OUT PVOID StreamHeaders, + IN ULONG Length, + IN ULONG Flags, + IN KPROCESSOR_MODE RequestorMode + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsProbeStreamIrp( + IN OUT PIRP Irp, + IN ULONG ProbeFlags, + IN ULONG HeaderSize OPTIONAL + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsAllocateExtraData( + IN OUT PIRP Irp, + IN ULONG ExtraSize, + OUT PVOID* ExtraBuffer + ); + +KSDDKAPI +VOID +NTAPI +KsNullDriverUnload( + IN PDRIVER_OBJECT DriverObject + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsSetMajorFunctionHandler( + IN PDRIVER_OBJECT DriverObject, + IN ULONG MajorFunction + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsDispatchInvalidDeviceRequest( + IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsDefaultDeviceIoCompletion( + IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsDispatchIrp( + IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp + ); + +KSDDKAPI +BOOLEAN +NTAPI +KsDispatchFastIoDeviceControlFailure( + IN PFILE_OBJECT FileObject, + IN BOOLEAN Wait, + IN PVOID InputBuffer OPTIONAL, + IN ULONG InputBufferLength, + OUT PVOID OutputBuffer OPTIONAL, + IN ULONG OutputBufferLength, + IN ULONG IoControlCode, + OUT PIO_STATUS_BLOCK IoStatus, + IN PDEVICE_OBJECT DeviceObject + ); + +KSDDKAPI +BOOLEAN +NTAPI +KsDispatchFastReadFailure( + IN PFILE_OBJECT FileObject, + IN PLARGE_INTEGER FileOffset, + IN ULONG Length, + IN BOOLEAN Wait, + IN ULONG LockKey, + OUT PVOID Buffer, + OUT PIO_STATUS_BLOCK IoStatus, + IN PDEVICE_OBJECT DeviceObject + ); + +#define KsDispatchFastWriteFailure KsDispatchFastReadFailure + +KSDDKAPI +VOID +NTAPI +KsCancelRoutine( + IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp + ); + +KSDDKAPI +VOID +NTAPI +KsCancelIo( + IN OUT PLIST_ENTRY QueueHead, + IN PKSPIN_LOCK SpinLock + ); + +KSDDKAPI +VOID +NTAPI +KsReleaseIrpOnCancelableQueue( + IN PIRP Irp, + IN PDRIVER_CANCEL DriverCancel OPTIONAL + ); + +KSDDKAPI +PIRP +NTAPI +KsRemoveIrpFromCancelableQueue( + IN OUT PLIST_ENTRY QueueHead, + IN PKSPIN_LOCK SpinLock, + IN KSLIST_ENTRY_LOCATION ListLocation, + IN KSIRP_REMOVAL_OPERATION RemovalOperation + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsMoveIrpsOnCancelableQueue( + IN OUT PLIST_ENTRY SourceList, + IN PKSPIN_LOCK SourceLock, + IN OUT PLIST_ENTRY DestinationList, + IN PKSPIN_LOCK DestinationLock OPTIONAL, + IN KSLIST_ENTRY_LOCATION ListLocation, + IN PFNKSIRPLISTCALLBACK ListCallback, + IN PVOID Context + ); + +KSDDKAPI +VOID +NTAPI +KsRemoveSpecificIrpFromCancelableQueue( + IN PIRP Irp + ); + +KSDDKAPI +VOID +NTAPI +KsAddIrpToCancelableQueue( + IN OUT PLIST_ENTRY QueueHead, + IN PKSPIN_LOCK SpinLock, + IN PIRP Irp, + IN KSLIST_ENTRY_LOCATION ListLocation, + IN PDRIVER_CANCEL DriverCancel OPTIONAL + ); + +// api.c: + +KSDDKAPI +NTSTATUS +NTAPI +KsAcquireResetValue( + IN PIRP Irp, + OUT KSRESET* ResetValue + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsTopologyPropertyHandler( + IN PIRP Irp, + IN PKSPROPERTY Property, + IN OUT PVOID Data, + IN const KSTOPOLOGY* Topology + ); + +KSDDKAPI +VOID +NTAPI +KsAcquireDeviceSecurityLock( + IN KSDEVICE_HEADER Header, + IN BOOLEAN Exclusive + ); + +KSDDKAPI +VOID +NTAPI +KsReleaseDeviceSecurityLock( + IN KSDEVICE_HEADER Header + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsDefaultDispatchPnp( + IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsDefaultDispatchPower( + IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsDefaultForwardIrp( + IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp + ); + +KSDDKAPI +VOID +NTAPI +KsSetDevicePnpAndBaseObject( + IN KSDEVICE_HEADER Header, + IN PDEVICE_OBJECT PnpDeviceObject, + IN PDEVICE_OBJECT BaseObject + ); + +KSDDKAPI +PDEVICE_OBJECT +NTAPI +KsQueryDevicePnpObject( + IN KSDEVICE_HEADER Header + ); + +KSDDKAPI +ACCESS_MASK +NTAPI +KsQueryObjectAccessMask( + IN KSOBJECT_HEADER Header + ); + +KSDDKAPI +VOID +NTAPI +KsRecalculateStackDepth( + IN KSDEVICE_HEADER Header, + IN BOOLEAN ReuseStackLocation + ); + +KSDDKAPI +VOID +NTAPI +KsSetTargetState( + IN KSOBJECT_HEADER Header, + IN KSTARGET_STATE TargetState + ); + +KSDDKAPI +VOID +NTAPI +KsSetTargetDeviceObject( + IN KSOBJECT_HEADER Header, + IN PDEVICE_OBJECT TargetDevice OPTIONAL + ); + +KSDDKAPI +VOID +NTAPI +KsSetPowerDispatch( + IN KSOBJECT_HEADER Header, + IN PFNKSCONTEXT_DISPATCH PowerDispatch OPTIONAL, + IN PVOID PowerContext OPTIONAL + ); + +KSDDKAPI +PKSOBJECT_CREATE_ITEM +NTAPI +KsQueryObjectCreateItem( + IN KSOBJECT_HEADER Header + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsAllocateDeviceHeader( + OUT KSDEVICE_HEADER* Header, + IN ULONG ItemsCount, + IN PKSOBJECT_CREATE_ITEM ItemsList OPTIONAL + ); + +KSDDKAPI +VOID +NTAPI +KsFreeDeviceHeader( + IN KSDEVICE_HEADER Header + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsAllocateObjectHeader( + OUT KSOBJECT_HEADER* Header, + IN ULONG ItemsCount, + IN PKSOBJECT_CREATE_ITEM ItemsList OPTIONAL, + IN PIRP Irp, + IN const KSDISPATCH_TABLE* Table + ); + +KSDDKAPI +VOID +NTAPI +KsFreeObjectHeader( + IN KSOBJECT_HEADER Header + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsAddObjectCreateItemToDeviceHeader( + IN KSDEVICE_HEADER Header, + IN PDRIVER_DISPATCH Create, + IN PVOID Context, + IN PWCHAR ObjectClass, + IN PSECURITY_DESCRIPTOR SecurityDescriptor OPTIONAL + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsAddObjectCreateItemToObjectHeader( + IN KSOBJECT_HEADER Header, + IN PDRIVER_DISPATCH Create, + IN PVOID Context, + IN PWCHAR ObjectClass, + IN PSECURITY_DESCRIPTOR SecurityDescriptor OPTIONAL + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsAllocateObjectCreateItem( + IN KSDEVICE_HEADER Header, + IN PKSOBJECT_CREATE_ITEM CreateItem, + IN BOOLEAN AllocateEntry, + IN PFNKSITEMFREECALLBACK ItemFreeCallback OPTIONAL + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsFreeObjectCreateItem( + IN KSDEVICE_HEADER Header, + IN PUNICODE_STRING CreateItem + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsFreeObjectCreateItemsByContext( + IN KSDEVICE_HEADER Header, + IN PVOID Context + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsCreateDefaultSecurity( + IN PSECURITY_DESCRIPTOR ParentSecurity OPTIONAL, + OUT PSECURITY_DESCRIPTOR* DefaultSecurity + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsForwardIrp( + IN PIRP Irp, + IN PFILE_OBJECT FileObject, + IN BOOLEAN ReuseStackLocation + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsForwardAndCatchIrp( + IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp, + IN PFILE_OBJECT FileObject, + IN KSSTACK_USE StackUse + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsSynchronousIoControlDevice( + IN PFILE_OBJECT FileObject, + IN KPROCESSOR_MODE RequestorMode, + IN ULONG IoControl, + IN PVOID InBuffer, + IN ULONG InSize, + OUT PVOID OutBuffer, + IN ULONG OutSize, + OUT PULONG BytesReturned + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsUnserializeObjectPropertiesFromRegistry( + IN PFILE_OBJECT FileObject, + IN HANDLE ParentKey OPTIONAL, + IN PUNICODE_STRING RegistryPath OPTIONAL + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsCacheMedium( + IN PUNICODE_STRING SymbolicLink, + IN PKSPIN_MEDIUM Medium, + IN ULONG PinDirection + ); + +// thread.c: + +KSDDKAPI +NTSTATUS +NTAPI +KsRegisterWorker( + IN WORK_QUEUE_TYPE WorkQueueType, + OUT PKSWORKER* Worker + ); +KSDDKAPI +NTSTATUS +NTAPI +KsRegisterCountedWorker( + IN WORK_QUEUE_TYPE WorkQueueType, + IN PWORK_QUEUE_ITEM CountedWorkItem, + OUT PKSWORKER* Worker + ); +KSDDKAPI +VOID +NTAPI +KsUnregisterWorker( + IN PKSWORKER Worker + ); +KSDDKAPI +NTSTATUS +NTAPI +KsQueueWorkItem( + IN PKSWORKER Worker, + IN PWORK_QUEUE_ITEM WorkItem + ); +KSDDKAPI +ULONG +NTAPI +KsIncrementCountedWorker( + IN PKSWORKER Worker + ); +KSDDKAPI +ULONG +NTAPI +KsDecrementCountedWorker( + IN PKSWORKER Worker + ); + +// topology.c: + +KSDDKAPI +NTSTATUS +NTAPI +KsCreateTopologyNode( + IN HANDLE ParentHandle, + IN PKSNODE_CREATE NodeCreate, + IN ACCESS_MASK DesiredAccess, + OUT PHANDLE NodeHandle + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsValidateTopologyNodeCreateRequest( + IN PIRP Irp, + IN PKSTOPOLOGY Topology, + OUT PKSNODE_CREATE* NodeCreate + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsMergeAutomationTables( + OUT PKSAUTOMATION_TABLE* AutomationTableAB, + IN PKSAUTOMATION_TABLE AutomationTableA OPTIONAL, + IN PKSAUTOMATION_TABLE AutomationTableB OPTIONAL, + IN KSOBJECT_BAG Bag OPTIONAL + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsInitializeDriver( + IN PDRIVER_OBJECT DriverObject, + IN PUNICODE_STRING RegistryPathName, + IN const KSDEVICE_DESCRIPTOR* Descriptor OPTIONAL + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsAddDevice( + IN PDRIVER_OBJECT DriverObject, + IN PDEVICE_OBJECT PhysicalDeviceObject + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsCreateDevice( + IN PDRIVER_OBJECT DriverObject, + IN PDEVICE_OBJECT PhysicalDeviceObject, + IN const KSDEVICE_DESCRIPTOR* Descriptor OPTIONAL, + IN ULONG ExtensionSize OPTIONAL, + OUT PKSDEVICE* Device OPTIONAL + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsInitializeDevice( + IN PDEVICE_OBJECT FunctionalDeviceObject, + IN PDEVICE_OBJECT PhysicalDeviceObject, + IN PDEVICE_OBJECT NextDeviceObject, + IN const KSDEVICE_DESCRIPTOR* Descriptor OPTIONAL + ); + +KSDDKAPI +void +NTAPI +KsTerminateDevice( + IN PDEVICE_OBJECT DeviceObject + ); + +KSDDKAPI +PKSDEVICE +NTAPI +KsGetDeviceForDeviceObject( + IN PDEVICE_OBJECT FunctionalDeviceObject + ); + +KSDDKAPI +void +NTAPI +KsAcquireDevice( + IN PKSDEVICE Device + ); + +KSDDKAPI +void +NTAPI +KsReleaseDevice( + IN PKSDEVICE Device + ); + +KSDDKAPI +void +NTAPI +KsDeviceRegisterAdapterObject( + IN PKSDEVICE Device, + IN PADAPTER_OBJECT AdapterObject, + IN ULONG MaxMappingsByteCount, + IN ULONG MappingTableStride + ); + +KSDDKAPI +ULONG +NTAPI +KsDeviceGetBusData( + IN PKSDEVICE Device, + IN ULONG DataType, + IN PVOID Buffer, + IN ULONG Offset, + IN ULONG Length + ); + +KSDDKAPI +ULONG +NTAPI +KsDeviceSetBusData( + IN PKSDEVICE Device, + IN ULONG DataType, + IN PVOID Buffer, + IN ULONG Offset, + IN ULONG Length + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsCreateFilterFactory( + IN PDEVICE_OBJECT DeviceObject, + IN const KSFILTER_DESCRIPTOR* Descriptor, + IN PWCHAR RefString OPTIONAL, + IN PSECURITY_DESCRIPTOR SecurityDescriptor OPTIONAL, + IN ULONG CreateItemFlags, + IN PFNKSFILTERFACTORYPOWER SleepCallback OPTIONAL, + IN PFNKSFILTERFACTORYPOWER WakeCallback OPTIONAL, + OUT PKSFILTERFACTORY* FilterFactory OPTIONAL + ); + +#define KsDeleteFilterFactory(FilterFactory) \ + KsFreeObjectCreateItemsByContext(\ + *(KSDEVICE_HEADER *)(\ + KsFilterFactoryGetParentDevice(FilterFactory)->FunctionalDeviceObject->\ + DeviceExtension),\ + FilterFactory) + +KSDDKAPI +NTSTATUS +NTAPI +KsFilterFactoryUpdateCacheData( + IN PKSFILTERFACTORY FilterFactory, + IN const KSFILTER_DESCRIPTOR *FilterDescriptor OPTIONAL + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsFilterFactoryAddCreateItem( + IN PKSFILTERFACTORY FilterFactory, + IN PWCHAR RefString, + IN PSECURITY_DESCRIPTOR SecurityDescriptor OPTIONAL, + IN ULONG CreateItemFlags + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsFilterFactorySetDeviceClassesState( + IN PKSFILTERFACTORY FilterFactory, + IN BOOLEAN NewState + ); + +KSDDKAPI +PUNICODE_STRING +NTAPI +KsFilterFactoryGetSymbolicLink( + IN PKSFILTERFACTORY FilterFactory + ); + +KSDDKAPI +void +NTAPI +KsAddEvent( + IN PVOID Object, + IN PKSEVENT_ENTRY EventEntry + ); + +void _inline +KsFilterAddEvent( + IN PKSFILTER Filter, + IN PKSEVENT_ENTRY EventEntry + ) +{ + KsAddEvent(Filter,EventEntry); +} + +void _inline +KsPinAddEvent( + IN PKSPIN Pin, + IN PKSEVENT_ENTRY EventEntry + ) +{ + KsAddEvent(Pin,EventEntry); +} + +KSDDKAPI +NTSTATUS +NTAPI +KsDefaultAddEventHandler( + IN PIRP Irp, + IN PKSEVENTDATA EventData, + IN OUT PKSEVENT_ENTRY EventEntry + ); + +KSDDKAPI +void +NTAPI +KsGenerateEvents( + IN PVOID Object, + IN const GUID* EventSet OPTIONAL, + IN ULONG EventId, + IN ULONG DataSize, + IN PVOID Data OPTIONAL, + IN PFNKSGENERATEEVENTCALLBACK CallBack OPTIONAL, + IN PVOID CallBackContext OPTIONAL + ); + +void _inline +KsFilterGenerateEvents( + IN PKSFILTER Filter, + IN const GUID* EventSet OPTIONAL, + IN ULONG EventId, + IN ULONG DataSize, + IN PVOID Data OPTIONAL, + IN PFNKSGENERATEEVENTCALLBACK CallBack OPTIONAL, + IN PVOID CallBackContext OPTIONAL + ) +{ + KsGenerateEvents( + Filter, + EventSet, + EventId, + DataSize, + Data, + CallBack, + CallBackContext); +} + +void _inline +KsPinGenerateEvents( + IN PKSPIN Pin, + IN const GUID* EventSet OPTIONAL, + IN ULONG EventId, + IN ULONG DataSize, + IN PVOID Data OPTIONAL, + IN PFNKSGENERATEEVENTCALLBACK CallBack OPTIONAL, + IN PVOID CallBackContext OPTIONAL + ) +{ + KsGenerateEvents( + Pin, + EventSet, + EventId, + DataSize, + Data, + CallBack, + CallBackContext); +} + +typedef enum { + KSSTREAM_POINTER_STATE_UNLOCKED = 0, + KSSTREAM_POINTER_STATE_LOCKED +} KSSTREAM_POINTER_STATE; + +KSDDKAPI +NTSTATUS +NTAPI +KsPinGetAvailableByteCount( + IN PKSPIN Pin, + OUT PLONG InputDataBytes OPTIONAL, + OUT PLONG OutputBufferBytes OPTIONAL + ); + +KSDDKAPI +PKSSTREAM_POINTER +NTAPI +KsPinGetLeadingEdgeStreamPointer( + IN PKSPIN Pin, + IN KSSTREAM_POINTER_STATE State + ); + +KSDDKAPI +PKSSTREAM_POINTER +NTAPI +KsPinGetTrailingEdgeStreamPointer( + IN PKSPIN Pin, + IN KSSTREAM_POINTER_STATE State + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsStreamPointerSetStatusCode( + IN PKSSTREAM_POINTER StreamPointer, + IN NTSTATUS Status + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsStreamPointerLock( + IN PKSSTREAM_POINTER StreamPointer + ); + +KSDDKAPI +void +NTAPI +KsStreamPointerUnlock( + IN PKSSTREAM_POINTER StreamPointer, + IN BOOLEAN Eject + ); + +KSDDKAPI +void +NTAPI +KsStreamPointerAdvanceOffsetsAndUnlock( + IN PKSSTREAM_POINTER StreamPointer, + IN ULONG InUsed, + IN ULONG OutUsed, + IN BOOLEAN Eject + ); + +KSDDKAPI +void +NTAPI +KsStreamPointerDelete( + IN PKSSTREAM_POINTER StreamPointer + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsStreamPointerClone( + IN PKSSTREAM_POINTER StreamPointer, + IN PFNKSSTREAMPOINTER CancelCallback OPTIONAL, + IN ULONG ContextSize, + OUT PKSSTREAM_POINTER* CloneStreamPointer + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsStreamPointerAdvanceOffsets( + IN PKSSTREAM_POINTER StreamPointer, + IN ULONG InUsed, + IN ULONG OutUsed, + IN BOOLEAN Eject + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsStreamPointerAdvance( + IN PKSSTREAM_POINTER StreamPointer + ); + +KSDDKAPI +PMDL +NTAPI +KsStreamPointerGetMdl( + IN PKSSTREAM_POINTER StreamPointer + ); + +KSDDKAPI +PIRP +NTAPI +KsStreamPointerGetIrp( + IN PKSSTREAM_POINTER StreamPointer, + OUT PBOOLEAN FirstFrameInIrp OPTIONAL, + OUT PBOOLEAN LastFrameInIrp OPTIONAL + ); + +KSDDKAPI +void +NTAPI +KsStreamPointerScheduleTimeout( + IN PKSSTREAM_POINTER StreamPointer, + IN PFNKSSTREAMPOINTER Callback, + IN ULONGLONG Interval + ); + +KSDDKAPI +void +NTAPI +KsStreamPointerCancelTimeout( + IN PKSSTREAM_POINTER StreamPointer + ); + +KSDDKAPI +PKSSTREAM_POINTER +NTAPI +KsPinGetFirstCloneStreamPointer( + IN PKSPIN Pin + ); + +KSDDKAPI +PKSSTREAM_POINTER +NTAPI +KsStreamPointerGetNextClone( + IN PKSSTREAM_POINTER StreamPointer + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsPinHandshake( + IN PKSPIN Pin, + IN PKSHANDSHAKE In, + OUT PKSHANDSHAKE Out + ); + +KSDDKAPI +void +NTAPI +KsCompletePendingRequest( + IN PIRP Irp + ); + +KSDDKAPI +KSOBJECTTYPE +NTAPI +KsGetObjectTypeFromIrp( + IN PIRP Irp + ); + +KSDDKAPI +PVOID +NTAPI +KsGetObjectFromFileObject( + IN PFILE_OBJECT FileObject + ); + +KSDDKAPI +KSOBJECTTYPE +NTAPI +KsGetObjectTypeFromFileObject( + IN PFILE_OBJECT FileObject + ); + +PKSFILTER __inline +KsGetFilterFromFileObject( + IN PFILE_OBJECT FileObject + ) +{ + return (PKSFILTER) KsGetObjectFromFileObject(FileObject); +} + +PKSPIN __inline +KsGetPinFromFileObject( + IN PFILE_OBJECT FileObject + ) +{ + return (PKSPIN) KsGetObjectFromFileObject(FileObject); +} + +KSDDKAPI +PKSGATE +NTAPI +KsFilterGetAndGate( + IN PKSFILTER Filter + ); + +KSDDKAPI +void +NTAPI +KsFilterAcquireProcessingMutex( + IN PKSFILTER Filter + ); + +KSDDKAPI +void +NTAPI +KsFilterReleaseProcessingMutex( + IN PKSFILTER Filter + ); + +KSDDKAPI +void +NTAPI +KsFilterAttemptProcessing( + IN PKSFILTER Filter, + IN BOOLEAN Asynchronous + ); + +KSDDKAPI +PKSGATE +NTAPI +KsPinGetAndGate( + IN PKSPIN Pin + ); + +KSDDKAPI +void +NTAPI +KsPinAttachAndGate( + IN PKSPIN Pin, + IN PKSGATE AndGate OPTIONAL + ); + +KSDDKAPI +void +NTAPI +KsPinAttachOrGate( + IN PKSPIN Pin, + IN PKSGATE OrGate OPTIONAL + ); + +KSDDKAPI +void +NTAPI +KsPinAcquireProcessingMutex( + IN PKSPIN Pin + ); + +KSDDKAPI +void +NTAPI +KsPinReleaseProcessingMutex( + IN PKSPIN Pin + ); + +KSDDKAPI +BOOLEAN +NTAPI +KsProcessPinUpdate( + IN PKSPROCESSPIN ProcessPin + ); + +KSDDKAPI +void +NTAPI +KsPinGetCopyRelationships( + IN PKSPIN Pin, + OUT PKSPIN* CopySource, + OUT PKSPIN* DelegateBranch + ); + +KSDDKAPI +void +NTAPI +KsPinAttemptProcessing( + IN PKSPIN Pin, + IN BOOLEAN Asynchronous + ); + +KSDDKAPI +PVOID +NTAPI +KsGetParent( + IN PVOID Object + ); + +PKSDEVICE __inline +KsFilterFactoryGetParentDevice( + IN PKSFILTERFACTORY FilterFactory + ) +{ + return (PKSDEVICE) KsGetParent((PVOID) FilterFactory); +} + +PKSFILTERFACTORY __inline +KsFilterGetParentFilterFactory( + IN PKSFILTER Filter + ) +{ + return (PKSFILTERFACTORY) KsGetParent((PVOID) Filter); +} + +KSDDKAPI +PKSFILTER +NTAPI +KsPinGetParentFilter( + IN PKSPIN Pin + ); + +KSDDKAPI +PVOID +NTAPI +KsGetFirstChild( + IN PVOID Object + ); + +PKSFILTERFACTORY __inline +KsDeviceGetFirstChildFilterFactory( + IN PKSDEVICE Device + ) +{ + return (PKSFILTERFACTORY) KsGetFirstChild((PVOID) Device); +} + +PKSFILTER __inline +KsFilterFactoryGetFirstChildFilter( + IN PKSFILTERFACTORY FilterFactory + ) +{ + return (PKSFILTER) KsGetFirstChild((PVOID) FilterFactory); +} + +KSDDKAPI +ULONG +NTAPI +KsFilterGetChildPinCount( + IN PKSFILTER Filter, + IN ULONG PinId + ); + +KSDDKAPI +PKSPIN +NTAPI +KsFilterGetFirstChildPin( + IN PKSFILTER Filter, + IN ULONG PinId + ); + +KSDDKAPI +PVOID +NTAPI +KsGetNextSibling( + IN PVOID Object + ); + +KSDDKAPI +PKSPIN +NTAPI +KsPinGetNextSiblingPin( + IN PKSPIN Pin + ); + +PKSFILTERFACTORY __inline +KsFilterFactoryGetNextSiblingFilterFactory( + IN PKSFILTERFACTORY FilterFactory + ) +{ + return (PKSFILTERFACTORY) KsGetNextSibling((PVOID) FilterFactory); +} + +PKSFILTER __inline +KsFilterGetNextSiblingFilter( + IN PKSFILTER Filter + ) +{ + return (PKSFILTER) KsGetNextSibling((PVOID) Filter); +} + + +KSDDKAPI +PKSDEVICE +NTAPI +KsGetDevice( + IN PVOID Object + ); + +PKSDEVICE __inline +KsFilterFactoryGetDevice( + IN PKSFILTERFACTORY FilterFactory + ) +{ + return KsGetDevice((PVOID) FilterFactory); +} + +PKSDEVICE __inline +KsFilterGetDevice( + IN PKSFILTER Filter + ) +{ + return KsGetDevice((PVOID) Filter); +} + +PKSDEVICE __inline +KsPinGetDevice( + IN PKSPIN Pin + ) +{ + return KsGetDevice((PVOID) Pin); +} + +KSDDKAPI +PKSFILTER +NTAPI +KsGetFilterFromIrp( + IN PIRP Irp + ); + +KSDDKAPI +PKSPIN +NTAPI +KsGetPinFromIrp( + IN PIRP Irp + ); + +KSDDKAPI +ULONG +NTAPI +KsGetNodeIdFromIrp( + IN PIRP Irp + ); + +KSDDKAPI +void +NTAPI +KsAcquireControl( + IN PVOID Object + ); + +KSDDKAPI +void +NTAPI +KsReleaseControl( + IN PVOID Object + ); + +void __inline +KsFilterAcquireControl( + IN PKSFILTER Filter + ) +{ + KsAcquireControl((PVOID) Filter); +} + +void __inline +KsFilterReleaseControl( + IN PKSFILTER Filter + ) +{ + KsReleaseControl((PVOID) Filter); +} + +void __inline +KsPinAcquireControl( + IN PKSPIN Pin + ) +{ + KsAcquireControl((PVOID) Pin); +} + +void __inline +KsPinReleaseControl( + IN PKSPIN Pin + ) +{ + KsReleaseControl((PVOID) Pin); +} + +KSDDKAPI +NTSTATUS +NTAPI +KsAddItemToObjectBag( + IN KSOBJECT_BAG ObjectBag, + IN PVOID Item, + IN PFNKSFREE Free OPTIONAL + ); + +KSDDKAPI +ULONG +NTAPI +KsRemoveItemFromObjectBag( + IN KSOBJECT_BAG ObjectBag, + IN PVOID Item, + IN BOOLEAN Free + ); + +#define KsDiscard(Object,Pointer)\ + KsRemoveItemFromObjectBag(\ + (Object)->Bag,\ + (PVOID)(Pointer),\ + TRUE) + +KSDDKAPI +NTSTATUS +NTAPI +KsAllocateObjectBag( + IN PKSDEVICE Device, + OUT KSOBJECT_BAG* ObjectBag + ); + +KSDDKAPI +void +NTAPI +KsFreeObjectBag( + IN KSOBJECT_BAG ObjectBag + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsCopyObjectBagItems( + IN KSOBJECT_BAG ObjectBagDestination, + IN KSOBJECT_BAG ObjectBagSource + ); + +KSDDKAPI +NTSTATUS +NTAPI +_KsEdit( + IN KSOBJECT_BAG ObjectBag, + IN OUT PVOID* PointerToPointerToItem, + IN ULONG NewSize, + IN ULONG OldSize, + IN ULONG Tag + ); + +#define KsEdit(Object,PointerToPointer,Tag)\ + _KsEdit(\ + (Object)->Bag,\ + (PVOID*)(PointerToPointer),\ + sizeof(**(PointerToPointer)),\ + sizeof(**(PointerToPointer)),\ + (Tag)) +#define KsEditSized(Object,PointerToPointer,NewSize,OldSize,Tag)\ + _KsEdit((Object)->Bag,(PVOID*)(PointerToPointer),(NewSize),(OldSize),(Tag)) + +KSDDKAPI +NTSTATUS +NTAPI +KsRegisterFilterWithNoKSPins( + IN PDEVICE_OBJECT DeviceObject, + IN const GUID * InterfaceClassGUID, + IN ULONG PinCount, + IN BOOL * PinDirection, + IN KSPIN_MEDIUM * MediumList, + IN OPTIONAL GUID * CategoryList +); + +KSDDKAPI +NTSTATUS +NTAPI +KsFilterCreatePinFactory ( + IN PKSFILTER Filter, + IN const KSPIN_DESCRIPTOR_EX *const PinDescriptor, + OUT PULONG PinID + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsFilterCreateNode ( + IN PKSFILTER Filter, + IN const KSNODE_DESCRIPTOR *const NodeDescriptor, + OUT PULONG NodeID + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsFilterAddTopologyConnections ( + IN PKSFILTER Filter, + IN ULONG NewConnectionsCount, + IN const KSTOPOLOGY_CONNECTION *const NewTopologyConnections + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsPinGetConnectedPinInterface( + IN PKSPIN Pin, + IN const GUID* InterfaceId, + OUT PVOID* Interface + ); + +KSDDKAPI +PFILE_OBJECT +NTAPI +KsPinGetConnectedPinFileObject( + IN PKSPIN Pin + ); + +KSDDKAPI +PDEVICE_OBJECT +NTAPI +KsPinGetConnectedPinDeviceObject( + IN PKSPIN Pin + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsPinGetConnectedFilterInterface( + IN PKSPIN Pin, + IN const GUID* InterfaceId, + OUT PVOID* Interface + ); + +#if defined(_UNKNOWN_H_) || defined(__IUnknown_INTERFACE_DEFINED__) + +KSDDKAPI +NTSTATUS +NTAPI +KsPinGetReferenceClockInterface( + IN PKSPIN Pin, + OUT PIKSREFERENCECLOCK* Interface + ); + +#endif //defined(_UNKNOWN_H_) || defined(__IUnknown_INTERFACE_DEFINED__) + +KSDDKAPI +VOID +NTAPI +KsPinSetPinClockTime( + IN PKSPIN Pin, + IN LONGLONG Time + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsPinSubmitFrame( + IN PKSPIN Pin, + IN PVOID Data OPTIONAL, + IN ULONG Size OPTIONAL, + IN PKSSTREAM_HEADER StreamHeader OPTIONAL, + IN PVOID Context OPTIONAL + ); + +KSDDKAPI +NTSTATUS +NTAPI +KsPinSubmitFrameMdl( + IN PKSPIN Pin, + IN PMDL Mdl OPTIONAL, + IN PKSSTREAM_HEADER StreamHeader OPTIONAL, + IN PVOID Context OPTIONAL + ); + +KSDDKAPI +void +NTAPI +KsPinRegisterFrameReturnCallback( + IN PKSPIN Pin, + IN PFNKSPINFRAMERETURN FrameReturn + ); + +KSDDKAPI +void +NTAPI +KsPinRegisterIrpCompletionCallback( + IN PKSPIN Pin, + IN PFNKSPINIRPCOMPLETION IrpCompletion + ); + +KSDDKAPI +void +NTAPI +KsPinRegisterHandshakeCallback( + IN PKSPIN Pin, + IN PFNKSPINHANDSHAKE Handshake + ); + +KSDDKAPI +void +NTAPI +KsFilterRegisterPowerCallbacks( + IN PKSFILTER Filter, + IN PFNKSFILTERPOWER Sleep OPTIONAL, + IN PFNKSFILTERPOWER Wake OPTIONAL + ); + +KSDDKAPI +void +NTAPI +KsPinRegisterPowerCallbacks( + IN PKSPIN Pin, + IN PFNKSPINPOWER Sleep OPTIONAL, + IN PFNKSPINPOWER Wake OPTIONAL + ); + +#if defined(_UNKNOWN_H_) || defined(__IUnknown_INTERFACE_DEFINED__) + +KSDDKAPI +PUNKNOWN +NTAPI +KsRegisterAggregatedClientUnknown( + IN PVOID Object, + IN PUNKNOWN ClientUnknown + ); + +KSDDKAPI +PUNKNOWN +NTAPI +KsGetOuterUnknown( + IN PVOID Object + ); + +PUNKNOWN __inline +KsDeviceRegisterAggregatedClientUnknown( + IN PKSDEVICE Device, + IN PUNKNOWN ClientUnknown + ) +{ + return KsRegisterAggregatedClientUnknown((PVOID) Device,ClientUnknown); +} + +PUNKNOWN __inline +KsDeviceGetOuterUnknown( + IN PKSDEVICE Device + ) +{ + return KsGetOuterUnknown((PVOID) Device); +} + +PUNKNOWN __inline +KsFilterFactoryRegisterAggregatedClientUnknown( + IN PKSFILTERFACTORY FilterFactory, + IN PUNKNOWN ClientUnknown + ) +{ + return KsRegisterAggregatedClientUnknown((PVOID) FilterFactory,ClientUnknown); +} + +PUNKNOWN __inline +KsFilterFactoryGetOuterUnknown( + IN PKSFILTERFACTORY FilterFactory + ) +{ + return KsGetOuterUnknown((PVOID) FilterFactory); +} + +PUNKNOWN __inline +KsFilterRegisterAggregatedClientUnknown( + IN PKSFILTER Filter, + IN PUNKNOWN ClientUnknown + ) +{ + return KsRegisterAggregatedClientUnknown((PVOID) Filter,ClientUnknown); +} + +PUNKNOWN __inline +KsFilterGetOuterUnknown( + IN PKSFILTER Filter + ) +{ + return KsGetOuterUnknown((PVOID) Filter); +} + +PUNKNOWN __inline +KsPinRegisterAggregatedClientUnknown( + IN PKSPIN Pin, + IN PUNKNOWN ClientUnknown + ) +{ + return KsRegisterAggregatedClientUnknown((PVOID) Pin,ClientUnknown); +} + +PUNKNOWN __inline +KsPinGetOuterUnknown( + IN PKSPIN Pin + ) +{ + return KsGetOuterUnknown((PVOID) Pin); +} + +#endif // defined(_UNKNOWN_H_) || defined(__IUnknown_INTERFACE_DEFINED__) + +#else // !defined(_NTDDK_) + +#if !defined( KS_NO_CREATE_FUNCTIONS ) + +KSDDKAPI +DWORD +WINAPI +KsCreateAllocator( + IN HANDLE ConnectionHandle, + IN PKSALLOCATOR_FRAMING AllocatorFraming, + OUT PHANDLE AllocatorHandle + ); + +KSDDKAPI +DWORD +NTAPI +KsCreateClock( + IN HANDLE ConnectionHandle, + IN PKSCLOCK_CREATE ClockCreate, + OUT PHANDLE ClockHandle + ); + +KSDDKAPI +DWORD +WINAPI +KsCreatePin( + IN HANDLE FilterHandle, + IN PKSPIN_CONNECT Connect, + IN ACCESS_MASK DesiredAccess, + OUT PHANDLE ConnectionHandle + ); + +KSDDKAPI +DWORD +WINAPI +KsCreateTopologyNode( + IN HANDLE ParentHandle, + IN PKSNODE_CREATE NodeCreate, + IN ACCESS_MASK DesiredAccess, + OUT PHANDLE NodeHandle + ); + +#endif + +#endif // !defined(_NTDDK_) + +#if defined(__cplusplus) +} +#endif // defined(__cplusplus) + + +#define DENY_USERMODE_ACCESS( pIrp, CompleteRequest ) \ +if ( pIrp->RequestorMode != KernelMode ) { \ + pIrp->IoStatus.Information = 0; \ + pIrp->IoStatus.Status = STATUS_INVALID_DEVICE_REQUEST; \ + if ( CompleteRequest ) IoCompleteRequest ( pIrp, IO_NO_INCREMENT ); \ + return STATUS_INVALID_DEVICE_REQUEST; \ +} + + +#endif // !_KS_ diff --git a/videoInputSrcAndDemos/libs/DShow/Include/ksguid.h b/videoInputSrcAndDemos/libs/DShow/Include/ksguid.h index a78b33c..42cd2c7 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/ksguid.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/ksguid.h @@ -1,29 +1,29 @@ -/*++ - -Copyright (c) Microsoft Corporation. All rights reserved. - -Module Name: - - ksguid.h - -Abstract: - - Define guids for non-C++. - ---*/ - -#define INITGUID -#include - -#if defined( DEFINE_GUIDEX ) - #undef DEFINE_GUIDEX -#endif -#define DEFINE_GUIDEX(name) EXTERN_C const CDECL GUID __declspec(selectany) name = { STATICGUIDOF(name) } - -#ifndef STATICGUIDOF - #define STATICGUIDOF(guid) STATIC_##guid -#endif // !defined(STATICGUIDOF) - -#if !defined( DEFINE_WAVEFORMATEX_GUID ) -#define DEFINE_WAVEFORMATEX_GUID(x) (USHORT)(x), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 -#endif +/*++ + +Copyright (c) Microsoft Corporation. All rights reserved. + +Module Name: + + ksguid.h + +Abstract: + + Define guids for non-C++. + +--*/ + +#define INITGUID +#include + +#if defined( DEFINE_GUIDEX ) + #undef DEFINE_GUIDEX +#endif +#define DEFINE_GUIDEX(name) EXTERN_C const CDECL GUID __declspec(selectany) name = { STATICGUIDOF(name) } + +#ifndef STATICGUIDOF + #define STATICGUIDOF(guid) STATIC_##guid +#endif // !defined(STATICGUIDOF) + +#if !defined( DEFINE_WAVEFORMATEX_GUID ) +#define DEFINE_WAVEFORMATEX_GUID(x) (USHORT)(x), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 +#endif diff --git a/videoInputSrcAndDemos/libs/DShow/Include/ksmedia.h b/videoInputSrcAndDemos/libs/DShow/Include/ksmedia.h index 72c121d..136c5cc 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/ksmedia.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/ksmedia.h @@ -1,5159 +1,5159 @@ -/*++ - -Copyright (c) Microsoft Corporation. All rights reserved. - -Module Name: - - ksmedia.h - -Abstract: - - WDM-CSA Multimedia Definitions. - ---*/ - -#if !defined(_KS_) -#error KS.H must be included before KSMEDIA.H -#endif // !defined(_KS_) - -#if !defined(_KSMEDIA_) -#define _KSMEDIA_ - -typedef struct { - KSPROPERTY Property; - KSMULTIPLE_ITEM MultipleItem; -} KSMULTIPLE_DATA_PROP, *PKSMULTIPLE_DATA_PROP; - -#define STATIC_KSMEDIUMSETID_MidiBus \ - 0x05908040L, 0x3246, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 -DEFINE_GUIDSTRUCT("05908040-3246-11D0-A5D6-28DB04C10000", KSMEDIUMSETID_MidiBus); -#define KSMEDIUMSETID_MidiBus DEFINE_GUIDNAMED(KSMEDIUMSETID_MidiBus) - -#define STATIC_KSMEDIUMSETID_VPBus \ - 0xA18C15ECL, 0xCE43, 0x11D0, 0xAB, 0xE7, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 -DEFINE_GUIDSTRUCT("A18C15EC-CE43-11D0-ABE7-00A0C9223196", KSMEDIUMSETID_VPBus); -#define KSMEDIUMSETID_VPBus DEFINE_GUIDNAMED(KSMEDIUMSETID_VPBus) - -#define STATIC_KSINTERFACESETID_Media \ - 0x3A13EB40L, 0x30A7, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 -DEFINE_GUIDSTRUCT("3A13EB40-30A7-11D0-A5D6-28DB04C10000", KSINTERFACESETID_Media); -#define KSINTERFACESETID_Media DEFINE_GUIDNAMED(KSINTERFACESETID_Media) - -typedef enum { - KSINTERFACE_MEDIA_MUSIC, - KSINTERFACE_MEDIA_WAVE_BUFFERED, - KSINTERFACE_MEDIA_WAVE_QUEUED -} KSINTERFACE_MEDIA; - - -#if !defined(INIT_USBAUDIO_MID) -// {4e1cecd2-1679-463b-a72f-a5bf64c86eba} -#define INIT_USBAUDIO_MID(guid, id)\ -{\ - (guid)->Data1 = 0x4e1cecd2 + (USHORT)(id);\ - (guid)->Data2 = 0x1679;\ - (guid)->Data3 = 0x463b;\ - (guid)->Data4[0] = 0xa7;\ - (guid)->Data4[1] = 0x2f;\ - (guid)->Data4[2] = 0xa5;\ - (guid)->Data4[3] = 0xbf;\ - (guid)->Data4[4] = 0x64;\ - (guid)->Data4[5] = 0xc8;\ - (guid)->Data4[6] = 0x6e;\ - (guid)->Data4[7] = 0xba;\ -} -#define EXTRACT_USBAUDIO_MID(guid)\ - (USHORT)((guid)->Data1 - 0x4e1cecd2) -#define DEFINE_USBAUDIO_MID_GUID(id)\ - 0x4e1cecd2+(USHORT)(id), 0x1679, 0x463b, 0xa7, 0x2f, 0xa5, 0xbf, 0x64, 0xc8, 0x6e, 0xba - -#define IS_COMPATIBLE_USBAUDIO_MID(guid)\ - (((guid)->Data1 >= 0x4e1cecd2) &&\ - ((guid)->Data1 < 0x4e1cecd2 + 0xffff) &&\ - ((guid)->Data2 == 0x1679) &&\ - ((guid)->Data3 == 0x463b) &&\ - ((guid)->Data4[0] == 0xa7) &&\ - ((guid)->Data4[1] == 0x2f) &&\ - ((guid)->Data4[2] == 0xa5) &&\ - ((guid)->Data4[3] == 0xbf) &&\ - ((guid)->Data4[4] == 0x64) &&\ - ((guid)->Data4[5] == 0xc8) &&\ - ((guid)->Data4[6] == 0x6e) &&\ - ((guid)->Data4[7] == 0xba)) -#endif // !defined(INIT_USBAUDIO_MID) - -#if !defined(INIT_USBAUDIO_PID) -// {abcc5a5e-c263-463b-a72f-a5bf64c86eba} -#define INIT_USBAUDIO_PID(guid, id)\ -{\ - (guid)->Data1 = 0xabcc5a5e + (USHORT)(id);\ - (guid)->Data2 = 0xc263;\ - (guid)->Data3 = 0x463b;\ - (guid)->Data4[0] = 0xa7;\ - (guid)->Data4[1] = 0x2f;\ - (guid)->Data4[2] = 0xa5;\ - (guid)->Data4[3] = 0xbf;\ - (guid)->Data4[4] = 0x64;\ - (guid)->Data4[5] = 0xc8;\ - (guid)->Data4[6] = 0x6e;\ - (guid)->Data4[7] = 0xba;\ -} -#define EXTRACT_USBAUDIO_PID(guid)\ - (USHORT)((guid)->Data1 - 0xabcc5a5e) -#define DEFINE_USBAUDIO_PID_GUID(id)\ - 0xabcc5a5e+(USHORT)(id), 0xc263, 0x463b, 0xa7, 0x2f, 0xa5, 0xbf, 0x64, 0xc8, 0x6e, 0xba - -#define IS_COMPATIBLE_USBAUDIO_PID(guid)\ - (((guid)->Data1 >= 0xabcc5a5e) &&\ - ((guid)->Data1 < 0xabcc5a5e + 0xffff) &&\ - ((guid)->Data2 == 0xc263) &&\ - ((guid)->Data3 == 0x463b) &&\ - ((guid)->Data4[0] == 0xa7) &&\ - ((guid)->Data4[1] == 0x2f) &&\ - ((guid)->Data4[2] == 0xa5) &&\ - ((guid)->Data4[3] == 0xbf) &&\ - ((guid)->Data4[4] == 0x64) &&\ - ((guid)->Data4[5] == 0xc8) &&\ - ((guid)->Data4[6] == 0x6e) &&\ - ((guid)->Data4[7] == 0xba)) -#endif // !defined(INIT_USBAUDIO_PID) - -#if !defined(INIT_USBAUDIO_PRODUCT_NAME) -// {FC575048-2E08-463B-A72F-A5BF64C86EBA} -#define INIT_USBAUDIO_PRODUCT_NAME(guid, vid, pid, strIndex)\ -{\ - (guid)->Data1 = 0XFC575048 + (USHORT)(vid);\ - (guid)->Data2 = 0x2E08 + (USHORT)(pid);\ - (guid)->Data3 = 0x463B + (USHORT)(strIndex);\ - (guid)->Data4[0] = 0xA7;\ - (guid)->Data4[1] = 0x2F;\ - (guid)->Data4[2] = 0xA5;\ - (guid)->Data4[3] = 0xBF;\ - (guid)->Data4[4] = 0x64;\ - (guid)->Data4[5] = 0xC8;\ - (guid)->Data4[6] = 0x6E;\ - (guid)->Data4[7] = 0xBA;\ -} -#define DEFINE_USBAUDIO_PRODUCT_NAME(vid, pid, strIndex)\ - 0xFC575048+(USHORT)(vid), 0x2E08+(USHORT)(pid), 0x463B+(USHORT)(strIndex), 0xA7, 0x2F, 0xA5, 0xBF, 0x64, 0xC8, 0x6E, 0xBA -#endif // !defined(INIT_USBAUDIO_PRODUCT_NAME) - - -// USB Component ID -#define STATIC_KSCOMPONENTID_USBAUDIO \ - 0x8F1275F0, 0x26E9, 0x4264, 0xBA, 0x4D, 0x39, 0xFF, 0xF0, 0x1D, 0x94, 0xAA -DEFINE_GUIDSTRUCT("8F1275F0-26E9-4264-BA4D-39FFF01D94AA", KSCOMPONENTID_USBAUDIO); -#define KSCOMPONENTID_USBAUDIO DEFINE_GUIDNAMED(KSCOMPONENTID_USBAUDIO) - -// USB Terminals -#define INIT_USB_TERMINAL(guid, id)\ -{\ - (guid)->Data1 = 0xDFF219E0 + (USHORT)(id);\ - (guid)->Data2 = 0xF70F;\ - (guid)->Data3 = 0x11D0;\ - (guid)->Data4[0] = 0xb9;\ - (guid)->Data4[1] = 0x17;\ - (guid)->Data4[2] = 0x00;\ - (guid)->Data4[3] = 0xa0;\ - (guid)->Data4[4] = 0xc9;\ - (guid)->Data4[5] = 0x22;\ - (guid)->Data4[6] = 0x31;\ - (guid)->Data4[7] = 0x96;\ -} -#define EXTRACT_USB_TERMINAL(guid)\ - (USHORT)((guid)->Data1 - 0xDFF219E0) -#define DEFINE_USB_TERMINAL_GUID(id)\ - 0xDFF219E0+(USHORT)(id), 0xF70F, 0x11D0, 0xB9, 0x17, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 - -#define STATIC_KSNODETYPE_MICROPHONE\ - DEFINE_USB_TERMINAL_GUID(0x0201) -DEFINE_GUIDSTRUCT("DFF21BE1-F70F-11D0-B917-00A0C9223196", KSNODETYPE_MICROPHONE); -#define KSNODETYPE_MICROPHONE DEFINE_GUIDNAMED(KSNODETYPE_MICROPHONE) - -#define STATIC_KSNODETYPE_DESKTOP_MICROPHONE\ - DEFINE_USB_TERMINAL_GUID(0x0202) -DEFINE_GUIDSTRUCT("DFF21BE2-F70F-11D0-B917-00A0C9223196", KSNODETYPE_DESKTOP_MICROPHONE); -#define KSNODETYPE_DESKTOP_MICROPHONE DEFINE_GUIDNAMED(KSNODETYPE_DESKTOP_MICROPHONE) - -#define STATIC_KSNODETYPE_PERSONAL_MICROPHONE\ - DEFINE_USB_TERMINAL_GUID(0x0203) -DEFINE_GUIDSTRUCT("DFF21BE3-F70F-11D0-B917-00A0C9223196", KSNODETYPE_PERSONAL_MICROPHONE); -#define KSNODETYPE_PERSONAL_MICROPHONE DEFINE_GUIDNAMED(KSNODETYPE_PERSONAL_MICROPHONE) - -#define STATIC_KSNODETYPE_OMNI_DIRECTIONAL_MICROPHONE\ - DEFINE_USB_TERMINAL_GUID(0x0204) -DEFINE_GUIDSTRUCT("DFF21BE4-F70F-11D0-B917-00A0C9223196", KSNODETYPE_OMNI_DIRECTIONAL_MICROPHONE); -#define KSNODETYPE_OMNI_DIRECTIONAL_MICROPHONE DEFINE_GUIDNAMED(KSNODETYPE_OMNI_DIRECTIONAL_MICROPHONE) - -#define STATIC_KSNODETYPE_MICROPHONE_ARRAY\ - DEFINE_USB_TERMINAL_GUID(0x0205) -DEFINE_GUIDSTRUCT("DFF21BE5-F70F-11D0-B917-00A0C9223196", KSNODETYPE_MICROPHONE_ARRAY); -#define KSNODETYPE_MICROPHONE_ARRAY DEFINE_GUIDNAMED(KSNODETYPE_MICROPHONE_ARRAY) - -#define STATIC_KSNODETYPE_PROCESSING_MICROPHONE_ARRAY\ - DEFINE_USB_TERMINAL_GUID(0x0206) -DEFINE_GUIDSTRUCT("DFF21BE6-F70F-11D0-B917-00A0C9223196", KSNODETYPE_PROCESSING_MICROPHONE_ARRAY); -#define KSNODETYPE_PROCESSING_MICROPHONE_ARRAY DEFINE_GUIDNAMED(KSNODETYPE_PROCESSING_MICROPHONE_ARRAY) - -#define STATIC_KSCATEGORY_MICROPHONE_ARRAY_PROCESSOR \ - 0x830a44f2, 0xa32d, 0x476b, 0xbe, 0x97, 0x42, 0x84, 0x56, 0x73, 0xb3, 0x5a -DEFINE_GUIDSTRUCT("830a44f2-a32d-476b-be97-42845673b35a", KSCATEGORY_MICROPHONE_ARRAY_PROCESSOR); -#define KSCATEGORY_MICROPHONE_ARRAY_PROCESSOR DEFINE_GUIDNAMED(KSCATEGORY_MICROPHONE_ARRAY_PROCESSOR) - -#define STATIC_KSNODETYPE_SPEAKER\ - DEFINE_USB_TERMINAL_GUID(0x0301) -DEFINE_GUIDSTRUCT("DFF21CE1-F70F-11D0-B917-00A0C9223196", KSNODETYPE_SPEAKER); -#define KSNODETYPE_SPEAKER DEFINE_GUIDNAMED(KSNODETYPE_SPEAKER) - -#define STATIC_KSNODETYPE_HEADPHONES\ - DEFINE_USB_TERMINAL_GUID(0x0302) -DEFINE_GUIDSTRUCT("DFF21CE2-F70F-11D0-B917-00A0C9223196", KSNODETYPE_HEADPHONES); -#define KSNODETYPE_HEADPHONES DEFINE_GUIDNAMED(KSNODETYPE_HEADPHONES) - -#define STATIC_KSNODETYPE_HEAD_MOUNTED_DISPLAY_AUDIO\ - DEFINE_USB_TERMINAL_GUID(0x0303) -DEFINE_GUIDSTRUCT("DFF21CE3-F70F-11D0-B917-00A0C9223196", KSNODETYPE_HEAD_MOUNTED_DISPLAY_AUDIO); -#define KSNODETYPE_HEAD_MOUNTED_DISPLAY_AUDIO DEFINE_GUIDNAMED(KSNODETYPE_HEAD_MOUNTED_DISPLAY_AUDIO) - -#define STATIC_KSNODETYPE_DESKTOP_SPEAKER\ - DEFINE_USB_TERMINAL_GUID(0x0304) -DEFINE_GUIDSTRUCT("DFF21CE4-F70F-11D0-B917-00A0C9223196", KSNODETYPE_DESKTOP_SPEAKER); -#define KSNODETYPE_DESKTOP_SPEAKER DEFINE_GUIDNAMED(KSNODETYPE_DESKTOP_SPEAKER) - -#define STATIC_KSNODETYPE_ROOM_SPEAKER\ - DEFINE_USB_TERMINAL_GUID(0x0305) -DEFINE_GUIDSTRUCT("DFF21CE5-F70F-11D0-B917-00A0C9223196", KSNODETYPE_ROOM_SPEAKER); -#define KSNODETYPE_ROOM_SPEAKER DEFINE_GUIDNAMED(KSNODETYPE_ROOM_SPEAKER) - -#define STATIC_KSNODETYPE_COMMUNICATION_SPEAKER\ - DEFINE_USB_TERMINAL_GUID(0x0306) -DEFINE_GUIDSTRUCT("DFF21CE6-F70F-11D0-B917-00A0C9223196", KSNODETYPE_COMMUNICATION_SPEAKER); -#define KSNODETYPE_COMMUNICATION_SPEAKER DEFINE_GUIDNAMED(KSNODETYPE_COMMUNICATION_SPEAKER) - -#define STATIC_KSNODETYPE_LOW_FREQUENCY_EFFECTS_SPEAKER\ - DEFINE_USB_TERMINAL_GUID(0x0307) -DEFINE_GUIDSTRUCT("DFF21CE7-F70F-11D0-B917-00A0C9223196", KSNODETYPE_LOW_FREQUENCY_EFFECTS_SPEAKER); -#define KSNODETYPE_LOW_FREQUENCY_EFFECTS_SPEAKER DEFINE_GUIDNAMED(KSNODETYPE_LOW_FREQUENCY_EFFECTS_SPEAKER) - -#define STATIC_KSNODETYPE_HANDSET\ - DEFINE_USB_TERMINAL_GUID(0x0401) -DEFINE_GUIDSTRUCT("DFF21DE1-F70F-11D0-B917-00A0C9223196", KSNODETYPE_HANDSET); -#define KSNODETYPE_HANDSET DEFINE_GUIDNAMED(KSNODETYPE_HANDSET) - -#define STATIC_KSNODETYPE_HEADSET\ - DEFINE_USB_TERMINAL_GUID(0x0402) -DEFINE_GUIDSTRUCT("DFF21DE2-F70F-11D0-B917-00A0C9223196", KSNODETYPE_HEADSET); -#define KSNODETYPE_HEADSET DEFINE_GUIDNAMED(KSNODETYPE_HEADSET) - -#define STATIC_KSNODETYPE_SPEAKERPHONE_NO_ECHO_REDUCTION\ - DEFINE_USB_TERMINAL_GUID(0x0403) -DEFINE_GUIDSTRUCT("DFF21DE3-F70F-11D0-B917-00A0C9223196", KSNODETYPE_SPEAKERPHONE_NO_ECHO_REDUCTION); -#define KSNODETYPE_SPEAKERPHONE_NO_ECHO_REDUCTION DEFINE_GUIDNAMED(KSNODETYPE_SPEAKERPHONE_NO_ECHO_REDUCTION) - -#define STATIC_KSNODETYPE_ECHO_SUPPRESSING_SPEAKERPHONE\ - DEFINE_USB_TERMINAL_GUID(0x0404) -DEFINE_GUIDSTRUCT("DFF21DE4-F70F-11D0-B917-00A0C9223196", KSNODETYPE_ECHO_SUPPRESSING_SPEAKERPHONE); -#define KSNODETYPE_ECHO_SUPPRESSING_SPEAKERPHONE DEFINE_GUIDNAMED(KSNODETYPE_ECHO_SUPPRESSING_SPEAKERPHONE) - -#define STATIC_KSNODETYPE_ECHO_CANCELING_SPEAKERPHONE\ - DEFINE_USB_TERMINAL_GUID(0x0405) -DEFINE_GUIDSTRUCT("DFF21DE5-F70F-11D0-B917-00A0C9223196", KSNODETYPE_ECHO_CANCELING_SPEAKERPHONE); -#define KSNODETYPE_ECHO_CANCELING_SPEAKERPHONE DEFINE_GUIDNAMED(KSNODETYPE_ECHO_CANCELING_SPEAKERPHONE) - -#define STATIC_KSNODETYPE_PHONE_LINE\ - DEFINE_USB_TERMINAL_GUID(0x0501) -DEFINE_GUIDSTRUCT("DFF21EE1-F70F-11D0-B917-00A0C9223196", KSNODETYPE_PHONE_LINE); -#define KSNODETYPE_PHONE_LINE DEFINE_GUIDNAMED(KSNODETYPE_PHONE_LINE) - -#define STATIC_KSNODETYPE_TELEPHONE\ - DEFINE_USB_TERMINAL_GUID(0x0502) -DEFINE_GUIDSTRUCT("DFF21EE2-F70F-11D0-B917-00A0C9223196", KSNODETYPE_TELEPHONE); -#define KSNODETYPE_TELEPHONE DEFINE_GUIDNAMED(KSNODETYPE_TELEPHONE) - -#define STATIC_KSNODETYPE_DOWN_LINE_PHONE\ - DEFINE_USB_TERMINAL_GUID(0x0503) -DEFINE_GUIDSTRUCT("DFF21EE3-F70F-11D0-B917-00A0C9223196", KSNODETYPE_DOWN_LINE_PHONE); -#define KSNODETYPE_DOWN_LINE_PHONE DEFINE_GUIDNAMED(KSNODETYPE_DOWN_LINE_PHONE) - -#define STATIC_KSNODETYPE_ANALOG_CONNECTOR\ - DEFINE_USB_TERMINAL_GUID(0x601) -DEFINE_GUIDSTRUCT("DFF21FE1-F70F-11D0-B917-00A0C9223196", KSNODETYPE_ANALOG_CONNECTOR); -#define KSNODETYPE_ANALOG_CONNECTOR DEFINE_GUIDNAMED(KSNODETYPE_ANALOG_CONNECTOR) - -#define STATIC_KSNODETYPE_DIGITAL_AUDIO_INTERFACE\ - DEFINE_USB_TERMINAL_GUID(0x0602) -DEFINE_GUIDSTRUCT("DFF21FE2-F70F-11D0-B917-00A0C9223196", KSNODETYPE_DIGITAL_AUDIO_INTERFACE); -#define KSNODETYPE_DIGITAL_AUDIO_INTERFACE DEFINE_GUIDNAMED(KSNODETYPE_DIGITAL_AUDIO_INTERFACE) - -#define STATIC_KSNODETYPE_LINE_CONNECTOR\ - DEFINE_USB_TERMINAL_GUID(0x0603) -DEFINE_GUIDSTRUCT("DFF21FE3-F70F-11D0-B917-00A0C9223196", KSNODETYPE_LINE_CONNECTOR); -#define KSNODETYPE_LINE_CONNECTOR DEFINE_GUIDNAMED(KSNODETYPE_LINE_CONNECTOR) - -#define STATIC_KSNODETYPE_LEGACY_AUDIO_CONNECTOR\ - DEFINE_USB_TERMINAL_GUID(0x0604) -DEFINE_GUIDSTRUCT("DFF21FE4-F70F-11D0-B917-00A0C9223196", KSNODETYPE_LEGACY_AUDIO_CONNECTOR); -#define KSNODETYPE_LEGACY_AUDIO_CONNECTOR DEFINE_GUIDNAMED(KSNODETYPE_LEGACY_AUDIO_CONNECTOR) - -#define STATIC_KSNODETYPE_SPDIF_INTERFACE\ - DEFINE_USB_TERMINAL_GUID(0x0605) -DEFINE_GUIDSTRUCT("DFF21FE5-F70F-11D0-B917-00A0C9223196", KSNODETYPE_SPDIF_INTERFACE); -#define KSNODETYPE_SPDIF_INTERFACE DEFINE_GUIDNAMED(KSNODETYPE_SPDIF_INTERFACE) - -#define STATIC_KSNODETYPE_1394_DA_STREAM\ - DEFINE_USB_TERMINAL_GUID(0x0606) -DEFINE_GUIDSTRUCT("DFF21FE6-F70F-11D0-B917-00A0C9223196", KSNODETYPE_1394_DA_STREAM); -#define KSNODETYPE_1394_DA_STREAM DEFINE_GUIDNAMED(KSNODETYPE_1394_DA_STREAM) - -#define STATIC_KSNODETYPE_1394_DV_STREAM_SOUNDTRACK\ - DEFINE_USB_TERMINAL_GUID(0x0607) -DEFINE_GUIDSTRUCT("DFF21FE7-F70F-11D0-B917-00A0C9223196", KSNODETYPE_1394_DV_STREAM_SOUNDTRACK); -#define KSNODETYPE_1394_DV_STREAM_SOUNDTRACK DEFINE_GUIDNAMED(KSNODETYPE_1394_DV_STREAM_SOUNDTRACK) - -#define STATIC_KSNODETYPE_LEVEL_CALIBRATION_NOISE_SOURCE\ - DEFINE_USB_TERMINAL_GUID(0x0701) -DEFINE_GUIDSTRUCT("DFF220E1-F70F-11D0-B917-00A0C9223196", KSNODETYPE_LEVEL_CALIBRATION_NOISE_SOURCE); -#define KSNODETYPE_LEVEL_CALIBRATION_NOISE_SOURCE DEFINE_GUIDNAMED(KSNODETYPE_LEVEL_CALIBRATION_NOISE_SOURCE) - -#define STATIC_KSNODETYPE_EQUALIZATION_NOISE\ - DEFINE_USB_TERMINAL_GUID(0x0702) -DEFINE_GUIDSTRUCT("DFF220E2-F70F-11D0-B917-00A0C9223196", KSNODETYPE_EQUALIZATION_NOISE); -#define KSNODETYPE_EQUALIZATION_NOISE DEFINE_GUIDNAMED(KSNODETYPE_EQUALIZATION_NOISE) - -#define STATIC_KSNODETYPE_CD_PLAYER\ - DEFINE_USB_TERMINAL_GUID(0x0703) -DEFINE_GUIDSTRUCT("DFF220E3-F70F-11D0-B917-00A0C9223196", KSNODETYPE_CD_PLAYER); -#define KSNODETYPE_CD_PLAYER DEFINE_GUIDNAMED(KSNODETYPE_CD_PLAYER) - -#define STATIC_KSNODETYPE_DAT_IO_DIGITAL_AUDIO_TAPE\ - DEFINE_USB_TERMINAL_GUID(0x0704) -DEFINE_GUIDSTRUCT("DFF220E4-F70F-11D0-B917-00A0C9223196", KSNODETYPE_DAT_IO_DIGITAL_AUDIO_TAPE); -#define KSNODETYPE_DAT_IO_DIGITAL_AUDIO_TAPE DEFINE_GUIDNAMED(KSNODETYPE_DAT_IO_DIGITAL_AUDIO_TAPE) - -#define STATIC_KSNODETYPE_DCC_IO_DIGITAL_COMPACT_CASSETTE\ - DEFINE_USB_TERMINAL_GUID(0x0705) -DEFINE_GUIDSTRUCT("DFF220E5-F70F-11D0-B917-00A0C9223196", KSNODETYPE_DCC_IO_DIGITAL_COMPACT_CASSETTE); -#define KSNODETYPE_DCC_IO_DIGITAL_COMPACT_CASSETTE DEFINE_GUIDNAMED(KSNODETYPE_DCC_IO_DIGITAL_COMPACT_CASSETTE) - -#define STATIC_KSNODETYPE_MINIDISK\ - DEFINE_USB_TERMINAL_GUID(0x0706) -DEFINE_GUIDSTRUCT("DFF220E6-F70F-11D0-B917-00A0C9223196", KSNODETYPE_MINIDISK); -#define KSNODETYPE_MINIDISK DEFINE_GUIDNAMED(KSNODETYPE_MINIDISK) - -#define STATIC_KSNODETYPE_ANALOG_TAPE\ - DEFINE_USB_TERMINAL_GUID(0x0707) -DEFINE_GUIDSTRUCT("DFF220E7-F70F-11D0-B917-00A0C9223196", KSNODETYPE_ANALOG_TAPE); -#define KSNODETYPE_ANALOG_TAPE DEFINE_GUIDNAMED(KSNODETYPE_ANALOG_TAPE) - -#define STATIC_KSNODETYPE_PHONOGRAPH\ - DEFINE_USB_TERMINAL_GUID(0x0708) -DEFINE_GUIDSTRUCT("DFF220E8-F70F-11D0-B917-00A0C9223196", KSNODETYPE_PHONOGRAPH); -#define KSNODETYPE_PHONOGRAPH DEFINE_GUIDNAMED(KSNODETYPE_PHONOGRAPH) - -#define STATIC_KSNODETYPE_VCR_AUDIO\ - DEFINE_USB_TERMINAL_GUID(0x0708) -DEFINE_GUIDSTRUCT("DFF220E9-F70F-11D0-B917-00A0C9223196", KSNODETYPE_VCR_AUDIO); -#define KSNODETYPE_VCR_AUDIO DEFINE_GUIDNAMED(KSNODETYPE_VCR_AUDIO) - -#define STATIC_KSNODETYPE_VIDEO_DISC_AUDIO\ - DEFINE_USB_TERMINAL_GUID(0x070A) -DEFINE_GUIDSTRUCT("DFF220EA-F70F-11D0-B917-00A0C9223196", KSNODETYPE_VIDEO_DISC_AUDIO); -#define KSNODETYPE_VIDEO_DISC_AUDIO DEFINE_GUIDNAMED(KSNODETYPE_VIDEO_DISC_AUDIO) - -#define STATIC_KSNODETYPE_DVD_AUDIO\ - DEFINE_USB_TERMINAL_GUID(0x070B) -DEFINE_GUIDSTRUCT("DFF220EB-F70F-11D0-B917-00A0C9223196", KSNODETYPE_DVD_AUDIO); -#define KSNODETYPE_DVD_AUDIO DEFINE_GUIDNAMED(KSNODETYPE_DVD_AUDIO) - -#define STATIC_KSNODETYPE_TV_TUNER_AUDIO\ - DEFINE_USB_TERMINAL_GUID(0x070C) -DEFINE_GUIDSTRUCT("DFF220EC-F70F-11D0-B917-00A0C9223196", KSNODETYPE_TV_TUNER_AUDIO); -#define KSNODETYPE_TV_TUNER_AUDIO DEFINE_GUIDNAMED(KSNODETYPE_TV_TUNER_AUDIO) - -#define STATIC_KSNODETYPE_SATELLITE_RECEIVER_AUDIO\ - DEFINE_USB_TERMINAL_GUID(0x070D) -DEFINE_GUIDSTRUCT("DFF220ED-F70F-11D0-B917-00A0C9223196", KSNODETYPE_SATELLITE_RECEIVER_AUDIO); -#define KSNODETYPE_SATELLITE_RECEIVER_AUDIO DEFINE_GUIDNAMED(KSNODETYPE_SATELLITE_RECEIVER_AUDIO) - -#define STATIC_KSNODETYPE_CABLE_TUNER_AUDIO\ - DEFINE_USB_TERMINAL_GUID(0x070E) -DEFINE_GUIDSTRUCT("DFF220EE-F70F-11D0-B917-00A0C9223196", KSNODETYPE_CABLE_TUNER_AUDIO); -#define KSNODETYPE_CABLE_TUNER_AUDIO DEFINE_GUIDNAMED(KSNODETYPE_CABLE_TUNER_AUDIO) - -#define STATIC_KSNODETYPE_DSS_AUDIO\ - DEFINE_USB_TERMINAL_GUID(0x070F) -DEFINE_GUIDSTRUCT("DFF220EF-F70F-11D0-B917-00A0C9223196", KSNODETYPE_DSS_AUDIO); -#define KSNODETYPE_DSS_AUDIO DEFINE_GUIDNAMED(KSNODETYPE_DSS_AUDIO) - -#define STATIC_KSNODETYPE_RADIO_RECEIVER\ - DEFINE_USB_TERMINAL_GUID(0x0710) -DEFINE_GUIDSTRUCT("DFF220F0-F70F-11D0-B917-00A0C9223196", KSNODETYPE_RADIO_RECEIVER); -#define KSNODETYPE_RADIO_RECEIVER DEFINE_GUIDNAMED(KSNODETYPE_RADIO_RECEIVER) - -#define STATIC_KSNODETYPE_RADIO_TRANSMITTER\ - DEFINE_USB_TERMINAL_GUID(0x0711) -DEFINE_GUIDSTRUCT("DFF220F1-F70F-11D0-B917-00A0C9223196", KSNODETYPE_RADIO_TRANSMITTER); -#define KSNODETYPE_RADIO_TRANSMITTER DEFINE_GUIDNAMED(KSNODETYPE_RADIO_TRANSMITTER) - -#define STATIC_KSNODETYPE_MULTITRACK_RECORDER\ - DEFINE_USB_TERMINAL_GUID(0x0712) -DEFINE_GUIDSTRUCT("DFF220F2-F70F-11D0-B917-00A0C9223196", KSNODETYPE_MULTITRACK_RECORDER); -#define KSNODETYPE_MULTITRACK_RECORDER DEFINE_GUIDNAMED(KSNODETYPE_MULTITRACK_RECORDER) - -#define STATIC_KSNODETYPE_SYNTHESIZER\ - DEFINE_USB_TERMINAL_GUID(0x0713) -DEFINE_GUIDSTRUCT("DFF220F3-F70F-11D0-B917-00A0C9223196", KSNODETYPE_SYNTHESIZER); -#define KSNODETYPE_SYNTHESIZER DEFINE_GUIDNAMED(KSNODETYPE_SYNTHESIZER) - -// Microsoft's WDMAUD virtual swsynth pin name guid - -#define STATIC_KSNODETYPE_SWSYNTH\ - 0x423274A0L, 0x8B81, 0x11D1, 0xA0, 0x50, 0x00, 0x00, 0xF8, 0x00, 0x47, 0x88 -DEFINE_GUIDSTRUCT("423274A0-8B81-11D1-A050-0000F8004788", KSNODETYPE_SWSYNTH); -#define KSNODETYPE_SWSYNTH DEFINE_GUIDNAMED(KSNODETYPE_SWSYNTH) - -// Microsoft's SWMIDI midi pin and node name guid - -#define STATIC_KSNODETYPE_SWMIDI\ - 0xCB9BEFA0L, 0xA251, 0x11D1, 0xA0, 0x50, 0x00, 0x00, 0xF8, 0x00, 0x47, 0x88 -DEFINE_GUIDSTRUCT("CB9BEFA0-A251-11D1-A050-0000F8004788", KSNODETYPE_SWMIDI); -#define KSNODETYPE_SWMIDI DEFINE_GUIDNAMED(KSNODETYPE_SWMIDI) - -#define STATIC_KSNODETYPE_DRM_DESCRAMBLE\ - 0xFFBB6E3FL, 0xCCFE, 0x4D84, 0x90, 0xD9, 0x42, 0x14, 0x18, 0xB0, 0x3A, 0x8E -DEFINE_GUIDSTRUCT("FFBB6E3F-CCFE-4D84-90D9-421418B03A8E", KSNODETYPE_DRM_DESCRAMBLE); -#define KSNODETYPE_DRM_DESCRAMBLE DEFINE_GUIDNAMED(KSNODETYPE_DRM_DESCRAMBLE) - -// General categories -#define STATIC_KSCATEGORY_AUDIO \ - 0x6994AD04L, 0x93EF, 0x11D0, 0xA3, 0xCC, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 -DEFINE_GUIDSTRUCT("6994AD04-93EF-11D0-A3CC-00A0C9223196", KSCATEGORY_AUDIO); -#define KSCATEGORY_AUDIO DEFINE_GUIDNAMED(KSCATEGORY_AUDIO) - -#define STATIC_KSCATEGORY_VIDEO \ - 0x6994AD05L, 0x93EF, 0x11D0, 0xA3, 0xCC, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 -DEFINE_GUIDSTRUCT("6994AD05-93EF-11D0-A3CC-00A0C9223196", KSCATEGORY_VIDEO); -#define KSCATEGORY_VIDEO DEFINE_GUIDNAMED(KSCATEGORY_VIDEO) - -#define STATIC_KSCATEGORY_TEXT \ - 0x6994AD06L, 0x93EF, 0x11D0, 0xA3, 0xCC, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 -DEFINE_GUIDSTRUCT("6994AD06-93EF-11D0-A3CC-00A0C9223196", KSCATEGORY_TEXT); -#define KSCATEGORY_TEXT DEFINE_GUIDNAMED(KSCATEGORY_TEXT) - -#define STATIC_KSCATEGORY_NETWORK \ - 0x67C9CC3CL, 0x69C4, 0x11D2, 0x87, 0x59, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 -DEFINE_GUIDSTRUCT("67C9CC3C-69C4-11D2-8759-00A0C9223196", KSCATEGORY_NETWORK); -#define KSCATEGORY_NETWORK DEFINE_GUIDNAMED(KSCATEGORY_NETWORK) - -#define STATIC_KSCATEGORY_TOPOLOGY \ - 0xDDA54A40L, 0x1E4C, 0x11D1, 0xA0, 0x50, 0x40, 0x57, 0x05, 0xC1, 0x00, 0x00 -DEFINE_GUIDSTRUCT("DDA54A40-1E4C-11D1-A050-405705C10000", KSCATEGORY_TOPOLOGY); -#define KSCATEGORY_TOPOLOGY DEFINE_GUIDNAMED(KSCATEGORY_TOPOLOGY) - -#define STATIC_KSCATEGORY_VIRTUAL \ - 0x3503EAC4L, 0x1F26, 0x11D1, 0x8A, 0xB0, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 -DEFINE_GUIDSTRUCT("3503EAC4-1F26-11D1-8AB0-00A0C9223196", KSCATEGORY_VIRTUAL); -#define KSCATEGORY_VIRTUAL DEFINE_GUIDNAMED(KSCATEGORY_VIRTUAL) - -#define STATIC_KSCATEGORY_ACOUSTIC_ECHO_CANCEL \ - 0xBF963D80L, 0xC559, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1 -DEFINE_GUIDSTRUCT("BF963D80-C559-11D0-8A2B-00A0C9255AC1", KSCATEGORY_ACOUSTIC_ECHO_CANCEL); -#define KSCATEGORY_ACOUSTIC_ECHO_CANCEL DEFINE_GUIDNAMED(KSCATEGORY_ACOUSTIC_ECHO_CANCEL) - -#define STATIC_KSCATEGORY_SYSAUDIO \ - 0xA7C7A5B1L, 0x5AF3, 0x11D1, 0x9C, 0xED, 0x00, 0xA0, 0x24, 0xBF, 0x04, 0x07 -DEFINE_GUIDSTRUCT("A7C7A5B1-5AF3-11D1-9CED-00A024BF0407", KSCATEGORY_SYSAUDIO); -#define KSCATEGORY_SYSAUDIO DEFINE_GUIDNAMED(KSCATEGORY_SYSAUDIO) - -#define STATIC_KSCATEGORY_WDMAUD \ - 0x3E227E76L, 0x690D, 0x11D2, 0x81, 0x61, 0x00, 0x00, 0xF8, 0x77, 0x5B, 0xF1 -DEFINE_GUIDSTRUCT("3E227E76-690D-11D2-8161-0000F8775BF1", KSCATEGORY_WDMAUD); -#define KSCATEGORY_WDMAUD DEFINE_GUIDNAMED(KSCATEGORY_WDMAUD) - -#define STATIC_KSCATEGORY_AUDIO_GFX \ - 0x9BAF9572L, 0x340C, 0x11D3, 0xAB, 0xDC, 0x00, 0xA0, 0xC9, 0x0A, 0xB1, 0x6F -DEFINE_GUIDSTRUCT("9BAF9572-340C-11D3-ABDC-00A0C90AB16F", KSCATEGORY_AUDIO_GFX); -#define KSCATEGORY_AUDIO_GFX DEFINE_GUIDNAMED(KSCATEGORY_AUDIO_GFX) - -#define STATIC_KSCATEGORY_AUDIO_SPLITTER \ - 0x9EA331FAL, 0xB91B, 0x45F8, 0x92, 0x85, 0xBD, 0x2B, 0xC7, 0x7A, 0xFC, 0xDE -DEFINE_GUIDSTRUCT("9EA331FA-B91B-45F8-9285-BD2BC77AFCDE", KSCATEGORY_AUDIO_SPLITTER); -#define KSCATEGORY_AUDIO_SPLITTER DEFINE_GUIDNAMED(KSCATEGORY_AUDIO_SPLITTER) - -#define STATIC_KSCATEGORY_SYNTHESIZER STATIC_KSNODETYPE_SYNTHESIZER -#define KSCATEGORY_SYNTHESIZER KSNODETYPE_SYNTHESIZER - -#define STATIC_KSCATEGORY_DRM_DESCRAMBLE STATIC_KSNODETYPE_DRM_DESCRAMBLE -#define KSCATEGORY_DRM_DESCRAMBLE KSNODETYPE_DRM_DESCRAMBLE - -#define STATIC_KSCATEGORY_AUDIO_DEVICE \ - 0xFBF6F530L, 0x07B9, 0x11D2, 0xA7, 0x1E, 0x00, 0x00, 0xF8, 0x00, 0x47, 0x88 -DEFINE_GUIDSTRUCT("FBF6F530-07B9-11D2-A71E-0000F8004788", KSCATEGORY_AUDIO_DEVICE); -#define KSCATEGORY_AUDIO_DEVICE DEFINE_GUIDNAMED(KSCATEGORY_AUDIO_DEVICE) - -#define STATIC_KSCATEGORY_PREFERRED_WAVEOUT_DEVICE \ - 0xD6C5066EL, 0x72C1, 0x11D2, 0x97, 0x55, 0x00, 0x00, 0xF8, 0x00, 0x47, 0x88 -DEFINE_GUIDSTRUCT("D6C5066E-72C1-11D2-9755-0000F8004788", KSCATEGORY_PREFERRED_WAVEOUT_DEVICE); -#define KSCATEGORY_PREFERRED_WAVEOUT_DEVICE DEFINE_GUIDNAMED(KSCATEGORY_PREFERRED_WAVEOUT_DEVICE) - -#define STATIC_KSCATEGORY_PREFERRED_WAVEIN_DEVICE \ - 0xD6C50671L, 0x72C1, 0x11D2, 0x97, 0x55, 0x00, 0x00, 0xF8, 0x00, 0x47, 0x88 -DEFINE_GUIDSTRUCT("D6C50671-72C1-11D2-9755-0000F8004788", KSCATEGORY_PREFERRED_WAVEIN_DEVICE); -#define KSCATEGORY_PREFERRED_WAVEIN_DEVICE DEFINE_GUIDNAMED(KSCATEGORY_PREFERRED_WAVEIN_DEVICE) - -#define STATIC_KSCATEGORY_PREFERRED_MIDIOUT_DEVICE \ - 0xD6C50674L, 0x72C1, 0x11D2, 0x97, 0x55, 0x00, 0x00, 0xF8, 0x00, 0x47, 0x88 -DEFINE_GUIDSTRUCT("D6C50674-72C1-11D2-9755-0000F8004788", KSCATEGORY_PREFERRED_MIDIOUT_DEVICE); -#define KSCATEGORY_PREFERRED_MIDIOUT_DEVICE DEFINE_GUIDNAMED(KSCATEGORY_PREFERRED_MIDIOUT_DEVICE) - -// Special pin category for wdmaud - -#define STATIC_KSCATEGORY_WDMAUD_USE_PIN_NAME \ - 0x47A4FA20L, 0xA251, 0x11D1, 0xA0, 0x50, 0x00, 0x00, 0xF8, 0x00, 0x47, 0x88 -DEFINE_GUIDSTRUCT("47A4FA20-A251-11D1-A050-0000F8004788", KSCATEGORY_WDMAUD_USE_PIN_NAME); -#define KSCATEGORY_WDMAUD_USE_PIN_NAME DEFINE_GUIDNAMED(KSCATEGORY_WDMAUD_USE_PIN_NAME) - -// Escalante Platform Interface - -#define STATIC_KSCATEGORY_ESCALANTE_PLATFORM_DRIVER \ - 0x74f3aea8L, 0x9768, 0x11d1, 0x8e, 0x07, 0x00, 0xa0, 0xc9, 0x5e, 0xc2, 0x2e -DEFINE_GUIDSTRUCT("74f3aea8-9768-11d1-8e07-00a0c95ec22e", KSCATEGORY_ESCALANTE_PLATFORM_DRIVER); -#define KSCATEGORY_ESCALANTE_PLATFORM_DRIVER DEFINE_GUIDNAMED(KSCATEGORY_ESCALANTE_PLATFORM_DRIVER) - -// -- major types --- - -// 'vids' == MEDIATYPE_Video, -#define STATIC_KSDATAFORMAT_TYPE_VIDEO\ - 0x73646976L, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 -DEFINE_GUIDSTRUCT("73646976-0000-0010-8000-00aa00389b71", KSDATAFORMAT_TYPE_VIDEO); -#define KSDATAFORMAT_TYPE_VIDEO DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_VIDEO) - -// 'auds' == MEDIATYPE_Audio -#define STATIC_KSDATAFORMAT_TYPE_AUDIO\ - 0x73647561L, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 -DEFINE_GUIDSTRUCT("73647561-0000-0010-8000-00aa00389b71", KSDATAFORMAT_TYPE_AUDIO); -#define KSDATAFORMAT_TYPE_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_AUDIO) - -// 'txts' == MEDIATYPE_Text -#define STATIC_KSDATAFORMAT_TYPE_TEXT\ - 0x73747874L, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 -DEFINE_GUIDSTRUCT("73747874-0000-0010-8000-00aa00389b71", KSDATAFORMAT_TYPE_TEXT); -#define KSDATAFORMAT_TYPE_TEXT DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_TEXT) - -#if !defined( DEFINE_WAVEFORMATEX_GUID ) -#define DEFINE_WAVEFORMATEX_GUID(x) (USHORT)(x), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 -#endif - -#define STATIC_KSDATAFORMAT_SUBTYPE_WAVEFORMATEX\ - 0x00000000L, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 -DEFINE_GUIDSTRUCT("00000000-0000-0010-8000-00aa00389b71", KSDATAFORMAT_SUBTYPE_WAVEFORMATEX); -#define KSDATAFORMAT_SUBTYPE_WAVEFORMATEX DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_WAVEFORMATEX) - -#define INIT_WAVEFORMATEX_GUID(Guid, x)\ -{\ - *(Guid) = KSDATAFORMAT_SUBTYPE_WAVEFORMATEX;\ - (Guid)->Data1 = (USHORT)(x);\ -} - -#define EXTRACT_WAVEFORMATEX_ID(Guid)\ - (USHORT)((Guid)->Data1) - -#define IS_VALID_WAVEFORMATEX_GUID(Guid)\ - (!memcmp(((PUSHORT)&KSDATAFORMAT_SUBTYPE_WAVEFORMATEX) + 1, ((PUSHORT)(Guid)) + 1, sizeof(GUID) - sizeof(USHORT))) - -#if !defined(INIT_MMREG_MID) -//{d5a47fa7-6d98-11d1-a21a-00a0c9223196} -#define INIT_MMREG_MID(guid, id)\ -{\ - (guid)->Data1 = 0xd5a47fa7 + (USHORT)(id);\ - (guid)->Data2 = 0x6d98;\ - (guid)->Data3 = 0x11d1;\ - (guid)->Data4[0] = 0xa2;\ - (guid)->Data4[1] = 0x1a;\ - (guid)->Data4[2] = 0x00;\ - (guid)->Data4[3] = 0xa0;\ - (guid)->Data4[4] = 0xc9;\ - (guid)->Data4[5] = 0x22;\ - (guid)->Data4[6] = 0x31;\ - (guid)->Data4[7] = 0x96;\ -} -#define EXTRACT_MMREG_MID(guid)\ - (USHORT)((guid)->Data1 - 0xd5a47fa7) -#define DEFINE_MMREG_MID_GUID(id)\ - 0xd5a47fa7+(USHORT)(id), 0x6d98, 0x11d1, 0xa2, 0x1a, 0x00, 0xa0, 0xc9, 0x22, 0x31, 0x96 - -#define IS_COMPATIBLE_MMREG_MID(guid)\ - (((guid)->Data1 >= 0xd5a47fa7) &&\ - ((guid)->Data1 < 0xd5a47fa7 + 0xffff) &&\ - ((guid)->Data2 == 0x6d98) &&\ - ((guid)->Data3 == 0x11d1) &&\ - ((guid)->Data4[0] == 0xa2) &&\ - ((guid)->Data4[1] == 0x1a) &&\ - ((guid)->Data4[2] == 0x00) &&\ - ((guid)->Data4[3] == 0xa0) &&\ - ((guid)->Data4[4] == 0xc9) &&\ - ((guid)->Data4[5] == 0x22) &&\ - ((guid)->Data4[6] == 0x31) &&\ - ((guid)->Data4[7] == 0x96)) -#endif // !defined(INIT_MMREG_MID) - -#if !defined(INIT_MMREG_PID) -//{e36dc2ac-6d9a-11d1-a21a-00a0c9223196} -#define INIT_MMREG_PID(guid, id)\ -{\ - (guid)->Data1 = 0xe36dc2ac + (USHORT)(id);\ - (guid)->Data2 = 0x6d9a;\ - (guid)->Data3 = 0x11d1;\ - (guid)->Data4[0] = 0xa2;\ - (guid)->Data4[1] = 0x1a;\ - (guid)->Data4[2] = 0x00;\ - (guid)->Data4[3] = 0xa0;\ - (guid)->Data4[4] = 0xc9;\ - (guid)->Data4[5] = 0x22;\ - (guid)->Data4[6] = 0x31;\ - (guid)->Data4[7] = 0x96;\ -} -#define EXTRACT_MMREG_PID(guid)\ - (USHORT)((guid)->Data1 - 0xe36dc2ac) -#define DEFINE_MMREG_PID_GUID(id)\ - 0xe36dc2ac+(USHORT)(id), 0x6d9a, 0x11d1, 0xa2, 0x1a, 0x00, 0xa0, 0xc9, 0x22, 0x31, 0x96 - -#define IS_COMPATIBLE_MMREG_PID(guid)\ - (((guid)->Data1 >= 0xe36dc2ac) &&\ - ((guid)->Data1 < 0xe36dc2ac + 0xffff) &&\ - ((guid)->Data2 == 0x6d9a) &&\ - ((guid)->Data3 == 0x11d1) &&\ - ((guid)->Data4[0] == 0xa2) &&\ - ((guid)->Data4[1] == 0x1a) &&\ - ((guid)->Data4[2] == 0x00) &&\ - ((guid)->Data4[3] == 0xa0) &&\ - ((guid)->Data4[4] == 0xc9) &&\ - ((guid)->Data4[5] == 0x22) &&\ - ((guid)->Data4[6] == 0x31) &&\ - ((guid)->Data4[7] == 0x96)) -#endif // !defined(INIT_MMREG_PID) - -#define STATIC_KSDATAFORMAT_SUBTYPE_ANALOG\ - 0x6dba3190L, 0x67bd, 0x11cf, 0xa0, 0xf7, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4 -DEFINE_GUIDSTRUCT("6dba3190-67bd-11cf-a0f7-0020afd156e4", KSDATAFORMAT_SUBTYPE_ANALOG); -#define KSDATAFORMAT_SUBTYPE_ANALOG DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_ANALOG) - -#define STATIC_KSDATAFORMAT_SUBTYPE_PCM\ - DEFINE_WAVEFORMATEX_GUID(WAVE_FORMAT_PCM) -DEFINE_GUIDSTRUCT("00000001-0000-0010-8000-00aa00389b71", KSDATAFORMAT_SUBTYPE_PCM); -#define KSDATAFORMAT_SUBTYPE_PCM DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_PCM) - -#if defined(_INC_MMREG) -#define STATIC_KSDATAFORMAT_SUBTYPE_IEEE_FLOAT\ - DEFINE_WAVEFORMATEX_GUID(WAVE_FORMAT_IEEE_FLOAT) -DEFINE_GUIDSTRUCT("00000003-0000-0010-8000-00aa00389b71", KSDATAFORMAT_SUBTYPE_IEEE_FLOAT); -#define KSDATAFORMAT_SUBTYPE_IEEE_FLOAT DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_IEEE_FLOAT) - -#define STATIC_KSDATAFORMAT_SUBTYPE_DRM\ - DEFINE_WAVEFORMATEX_GUID(WAVE_FORMAT_DRM) -DEFINE_GUIDSTRUCT("00000009-0000-0010-8000-00aa00389b71", KSDATAFORMAT_SUBTYPE_DRM); -#define KSDATAFORMAT_SUBTYPE_DRM DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_DRM) - -#define STATIC_KSDATAFORMAT_SUBTYPE_ALAW\ - DEFINE_WAVEFORMATEX_GUID(WAVE_FORMAT_ALAW) -DEFINE_GUIDSTRUCT("00000006-0000-0010-8000-00aa00389b71", KSDATAFORMAT_SUBTYPE_ALAW); -#define KSDATAFORMAT_SUBTYPE_ALAW DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_ALAW) - -#define STATIC_KSDATAFORMAT_SUBTYPE_MULAW\ - DEFINE_WAVEFORMATEX_GUID(WAVE_FORMAT_MULAW) -DEFINE_GUIDSTRUCT("00000007-0000-0010-8000-00aa00389b71", KSDATAFORMAT_SUBTYPE_MULAW); -#define KSDATAFORMAT_SUBTYPE_MULAW DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_MULAW) - -#define STATIC_KSDATAFORMAT_SUBTYPE_ADPCM\ - DEFINE_WAVEFORMATEX_GUID(WAVE_FORMAT_ADPCM) -DEFINE_GUIDSTRUCT("00000002-0000-0010-8000-00aa00389b71", KSDATAFORMAT_SUBTYPE_ADPCM); -#define KSDATAFORMAT_SUBTYPE_ADPCM DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_ADPCM) - -#define STATIC_KSDATAFORMAT_SUBTYPE_MPEG\ - DEFINE_WAVEFORMATEX_GUID(WAVE_FORMAT_MPEG) -DEFINE_GUIDSTRUCT("00000050-0000-0010-8000-00aa00389b71", KSDATAFORMAT_SUBTYPE_MPEG); -#define KSDATAFORMAT_SUBTYPE_MPEG DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_MPEG) -#endif // defined(_INC_MMREG) - -#define STATIC_KSDATAFORMAT_SPECIFIER_VC_ID\ - 0xAD98D184L, 0xAAC3, 0x11D0, 0xA4, 0x1C, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 -DEFINE_GUIDSTRUCT("AD98D184-AAC3-11D0-A41C-00A0C9223196", KSDATAFORMAT_SPECIFIER_VC_ID); -#define KSDATAFORMAT_SPECIFIER_VC_ID DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_VC_ID) - -#define STATIC_KSDATAFORMAT_SPECIFIER_WAVEFORMATEX\ - 0x05589f81L, 0xc356, 0x11ce, 0xbf, 0x01, 0x00, 0xaa, 0x00, 0x55, 0x59, 0x5a -DEFINE_GUIDSTRUCT("05589f81-c356-11ce-bf01-00aa0055595a", KSDATAFORMAT_SPECIFIER_WAVEFORMATEX); -#define KSDATAFORMAT_SPECIFIER_WAVEFORMATEX DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_WAVEFORMATEX) - -#define STATIC_KSDATAFORMAT_SPECIFIER_DSOUND\ - 0x518590a2L, 0xa184, 0x11d0, 0x85, 0x22, 0x00, 0xc0, 0x4f, 0xd9, 0xba, 0xf3 -DEFINE_GUIDSTRUCT("518590a2-a184-11d0-8522-00c04fd9baf3", KSDATAFORMAT_SPECIFIER_DSOUND); -#define KSDATAFORMAT_SPECIFIER_DSOUND DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_DSOUND) - -#if defined(_INC_MMSYSTEM) || defined(_INC_MMREG) -#if !defined( PACK_PRAGMAS_NOT_SUPPORTED ) -#include -#endif -typedef struct { - KSDATAFORMAT DataFormat; - WAVEFORMATEX WaveFormatEx; -} KSDATAFORMAT_WAVEFORMATEX, *PKSDATAFORMAT_WAVEFORMATEX; - -#ifndef _WAVEFORMATEXTENSIBLE_ -#define _WAVEFORMATEXTENSIBLE_ -typedef struct { - WAVEFORMATEX Format; - union { - WORD wValidBitsPerSample; /* bits of precision */ - WORD wSamplesPerBlock; /* valid if wBitsPerSample==0 */ - WORD wReserved; /* If neither applies, set to zero. */ - } Samples; - DWORD dwChannelMask; /* which channels are */ - /* present in stream */ - GUID SubFormat; -} WAVEFORMATEXTENSIBLE, *PWAVEFORMATEXTENSIBLE; -#endif // !_WAVEFORMATEXTENSIBLE_ - -#if !defined(WAVE_FORMAT_EXTENSIBLE) -#define WAVE_FORMAT_EXTENSIBLE 0xFFFE -#endif // !defined(WAVE_FORMAT_EXTENSIBLE) - -// DirectSound buffer description -typedef struct { - ULONG Flags; - ULONG Control; - WAVEFORMATEX WaveFormatEx; -} KSDSOUND_BUFFERDESC, *PKSDSOUND_BUFFERDESC; - -// DirectSound format -typedef struct { - KSDATAFORMAT DataFormat; - KSDSOUND_BUFFERDESC BufferDesc; -} KSDATAFORMAT_DSOUND, *PKSDATAFORMAT_DSOUND; - -#if !defined( PACK_PRAGMAS_NOT_SUPPORTED ) -#include -#endif -#endif // defined(_INC_MMSYSTEM) || defined(_INC_MMREG) - - - -// DirectSound buffer flags -#define KSDSOUND_BUFFER_PRIMARY 0x00000001 -#define KSDSOUND_BUFFER_STATIC 0x00000002 -#define KSDSOUND_BUFFER_LOCHARDWARE 0x00000004 -#define KSDSOUND_BUFFER_LOCSOFTWARE 0x00000008 - -// DirectSound buffer control flags -#define KSDSOUND_BUFFER_CTRL_3D 0x00000001 -#define KSDSOUND_BUFFER_CTRL_FREQUENCY 0x00000002 -#define KSDSOUND_BUFFER_CTRL_PAN 0x00000004 -#define KSDSOUND_BUFFER_CTRL_VOLUME 0x00000008 -#define KSDSOUND_BUFFER_CTRL_POSITIONNOTIFY 0x00000010 - -typedef struct { -#if defined(_NTDDK_) - ULONGLONG PlayOffset; - ULONGLONG WriteOffset; -#else // !_NTDDK_ - DWORDLONG PlayOffset; - DWORDLONG WriteOffset; -#endif // !_NTDDK_ -} KSAUDIO_POSITION, *PKSAUDIO_POSITION; - -//=========================================================================== -// DirectSound3D HAL - - -typedef struct _DS3DVECTOR { - union { - FLOAT x; - FLOAT dvX; - }; - union { - FLOAT y; - FLOAT dvY; - }; - union { - FLOAT z; - FLOAT dvZ; - }; -} DS3DVECTOR, *PDS3DVECTOR; - - -//=========================================================================== -//=========================================================================== - -// KSPROPSETID_DirectSound3DListener : {437B3414-D060-11d0-8583-00C04FD9BAF3} - -#define STATIC_KSPROPSETID_DirectSound3DListener\ - 0x437b3414L, 0xd060, 0x11d0, 0x85, 0x83, 0x00, 0xc0, 0x4f, 0xd9, 0xba, 0xf3 -DEFINE_GUIDSTRUCT("437b3414-d060-11d0-8583-00c04fd9baf3",KSPROPSETID_DirectSound3DListener); -#define KSPROPSETID_DirectSound3DListener DEFINE_GUIDNAMED(KSPROPSETID_DirectSound3DListener) - -typedef enum { - KSPROPERTY_DIRECTSOUND3DLISTENER_ALL, - KSPROPERTY_DIRECTSOUND3DLISTENER_POSITION, - KSPROPERTY_DIRECTSOUND3DLISTENER_VELOCITY, - KSPROPERTY_DIRECTSOUND3DLISTENER_ORIENTATION, - KSPROPERTY_DIRECTSOUND3DLISTENER_DISTANCEFACTOR, - KSPROPERTY_DIRECTSOUND3DLISTENER_ROLLOFFFACTOR, - KSPROPERTY_DIRECTSOUND3DLISTENER_DOPPLERFACTOR, - KSPROPERTY_DIRECTSOUND3DLISTENER_BATCH, - KSPROPERTY_DIRECTSOUND3DLISTENER_ALLOCATION -} KSPROPERTY_DIRECTSOUND3DLISTENER; - -typedef struct { - DS3DVECTOR Position; - DS3DVECTOR Velocity; - DS3DVECTOR OrientFront; - DS3DVECTOR OrientTop; - FLOAT DistanceFactor; - FLOAT RolloffFactor; - FLOAT DopplerFactor; -} KSDS3D_LISTENER_ALL, *PKSDS3D_LISTENER_ALL; - -typedef struct { - DS3DVECTOR Front; - DS3DVECTOR Top; -} KSDS3D_LISTENER_ORIENTATION, *PKSDS3D_LISTENER_ORIENTATION; - - -//=========================================================================== -//=========================================================================== -// KSPROPSETID_DirectSound3DBuffer : {437B3411-D060-11d0-8583-00C04FD9BAF3} - -#define STATIC_KSPROPSETID_DirectSound3DBuffer\ - 0x437b3411L, 0xd060, 0x11d0, 0x85, 0x83, 0x00, 0xc0, 0x4f, 0xd9, 0xba, 0xf3 -DEFINE_GUIDSTRUCT("437b3411-d060-11d0-8583-00c04fd9baf3", KSPROPSETID_DirectSound3DBuffer); -#define KSPROPSETID_DirectSound3DBuffer DEFINE_GUIDNAMED(KSPROPSETID_DirectSound3DBuffer) - - -typedef enum { - KSPROPERTY_DIRECTSOUND3DBUFFER_ALL, - KSPROPERTY_DIRECTSOUND3DBUFFER_POSITION, - KSPROPERTY_DIRECTSOUND3DBUFFER_VELOCITY, - KSPROPERTY_DIRECTSOUND3DBUFFER_CONEANGLES, - KSPROPERTY_DIRECTSOUND3DBUFFER_CONEORIENTATION, - KSPROPERTY_DIRECTSOUND3DBUFFER_CONEOUTSIDEVOLUME, - KSPROPERTY_DIRECTSOUND3DBUFFER_MINDISTANCE, - KSPROPERTY_DIRECTSOUND3DBUFFER_MAXDISTANCE, - KSPROPERTY_DIRECTSOUND3DBUFFER_MODE -} KSPROPERTY_DIRECTSOUND3DBUFFER; - - -typedef struct { - DS3DVECTOR Position; - DS3DVECTOR Velocity; - ULONG InsideConeAngle; - ULONG OutsideConeAngle; - DS3DVECTOR ConeOrientation; - LONG ConeOutsideVolume; - FLOAT MinDistance; - FLOAT MaxDistance; - ULONG Mode; -} KSDS3D_BUFFER_ALL, *PKSDS3D_BUFFER_ALL; - -typedef struct { - ULONG InsideConeAngle; - ULONG OutsideConeAngle; -} KSDS3D_BUFFER_CONE_ANGLES, *PKSDS3D_BUFFER_CONE_ANGLES; - -#define KSAUDIO_STEREO_SPEAKER_GEOMETRY_HEADPHONE (-1) -#define KSAUDIO_STEREO_SPEAKER_GEOMETRY_MIN 5 -#define KSAUDIO_STEREO_SPEAKER_GEOMETRY_NARROW 10 -#define KSAUDIO_STEREO_SPEAKER_GEOMETRY_WIDE 20 -#define KSAUDIO_STEREO_SPEAKER_GEOMETRY_MAX 180 - -#define KSDSOUND_3D_MODE_NORMAL 0x00000000 -#define KSDSOUND_3D_MODE_HEADRELATIVE 0x00000001 -#define KSDSOUND_3D_MODE_DISABLE 0x00000002 - -typedef struct { - KSDATARANGE DataRange; - ULONG MaximumChannels; - ULONG MinimumBitsPerSample; - ULONG MaximumBitsPerSample; - ULONG MinimumSampleFrequency; - ULONG MaximumSampleFrequency; -} KSDATARANGE_AUDIO, *PKSDATARANGE_AUDIO; - -//--------------------------------------------------------------------------- - -#define STATIC_KSDATAFORMAT_SUBTYPE_RIFF\ - 0x4995DAEEL, 0x9EE6, 0x11D0, 0xA4, 0x0E, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 -DEFINE_GUIDSTRUCT("4995DAEE-9EE6-11D0-A40E-00A0C9223196", KSDATAFORMAT_SUBTYPE_RIFF); -#define KSDATAFORMAT_SUBTYPE_RIFF DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_RIFF) - -#define STATIC_KSDATAFORMAT_SUBTYPE_RIFFWAVE\ - 0xe436eb8bL, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70 -DEFINE_GUIDSTRUCT("e436eb8b-524f-11ce-9f53-0020af0ba770", KSDATAFORMAT_SUBTYPE_RIFFWAVE); -#define KSDATAFORMAT_SUBTYPE_RIFFWAVE DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_RIFFWAVE) - -//=========================================================================== -//=========================================================================== - -#define STATIC_KSPROPSETID_Bibliographic \ - 0x07BA150EL, 0xE2B1, 0x11D0, 0xAC, 0x17, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 -DEFINE_GUIDSTRUCT("07BA150E-E2B1-11D0-AC17-00A0C9223196", KSPROPSETID_Bibliographic); -#define KSPROPSETID_Bibliographic DEFINE_GUIDNAMED(KSPROPSETID_Bibliographic) - -//Repeatable tags contain all entries within the property, each preceeded by length -typedef enum { - KSPROPERTY_BIBLIOGRAPHIC_LEADER = 'RDL ', - KSPROPERTY_BIBLIOGRAPHIC_LCCN = '010 ', - KSPROPERTY_BIBLIOGRAPHIC_ISBN = '020 ', - KSPROPERTY_BIBLIOGRAPHIC_ISSN = '220 ', - KSPROPERTY_BIBLIOGRAPHIC_CATALOGINGSOURCE = '040 ', - KSPROPERTY_BIBLIOGRAPHIC_MAINPERSONALNAME = '001 ', - KSPROPERTY_BIBLIOGRAPHIC_MAINCORPORATEBODY = '011 ', - KSPROPERTY_BIBLIOGRAPHIC_MAINMEETINGNAME = '111 ', - KSPROPERTY_BIBLIOGRAPHIC_MAINUNIFORMTITLE = '031 ', - KSPROPERTY_BIBLIOGRAPHIC_UNIFORMTITLE = '042 ', - KSPROPERTY_BIBLIOGRAPHIC_TITLESTATEMENT = '542 ', - KSPROPERTY_BIBLIOGRAPHIC_VARYINGFORMTITLE = '642 ', - KSPROPERTY_BIBLIOGRAPHIC_PUBLICATION = '062 ', - KSPROPERTY_BIBLIOGRAPHIC_PHYSICALDESCRIPTION = '003 ', - KSPROPERTY_BIBLIOGRAPHIC_ADDEDENTRYTITLE = '044 ', - KSPROPERTY_BIBLIOGRAPHIC_SERIESSTATEMENT = '094 ', - KSPROPERTY_BIBLIOGRAPHIC_GENERALNOTE = '005 ', - KSPROPERTY_BIBLIOGRAPHIC_BIBLIOGRAPHYNOTE = '405 ', - KSPROPERTY_BIBLIOGRAPHIC_CONTENTSNOTE = '505 ', - KSPROPERTY_BIBLIOGRAPHIC_CREATIONCREDIT = '805 ', - KSPROPERTY_BIBLIOGRAPHIC_CITATION = '015 ', - KSPROPERTY_BIBLIOGRAPHIC_PARTICIPANT = '115 ', - KSPROPERTY_BIBLIOGRAPHIC_SUMMARY = '025 ', - KSPROPERTY_BIBLIOGRAPHIC_TARGETAUDIENCE = '125 ', - KSPROPERTY_BIBLIOGRAPHIC_ADDEDFORMAVAILABLE = '035 ', - KSPROPERTY_BIBLIOGRAPHIC_SYSTEMDETAILS = '835 ', - KSPROPERTY_BIBLIOGRAPHIC_AWARDS = '685 ', - KSPROPERTY_BIBLIOGRAPHIC_ADDEDENTRYPERSONALNAME = '006 ', - KSPROPERTY_BIBLIOGRAPHIC_ADDEDENTRYTOPICALTERM = '056 ', - KSPROPERTY_BIBLIOGRAPHIC_ADDEDENTRYGEOGRAPHIC = '156 ', - KSPROPERTY_BIBLIOGRAPHIC_INDEXTERMGENRE = '556 ', - KSPROPERTY_BIBLIOGRAPHIC_INDEXTERMCURRICULUM = '856 ', - KSPROPERTY_BIBLIOGRAPHIC_ADDEDENTRYUNIFORMTITLE = '037 ', - KSPROPERTY_BIBLIOGRAPHIC_ADDEDENTRYRELATED = '047 ', - KSPROPERTY_BIBLIOGRAPHIC_SERIESSTATEMENTPERSONALNAME = '008 ', - KSPROPERTY_BIBLIOGRAPHIC_SERIESSTATEMENTUNIFORMTITLE = '038 ' -} KSPROPERTY_BIBLIOGRAPHIC; - -#define STATIC_KSPROPSETID_TopologyNode\ - 0x45FFAAA1L, 0x6E1B, 0x11D0, 0xBC, 0xF2, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00 -DEFINE_GUIDSTRUCT("45FFAAA1-6E1B-11D0-BCF2-444553540000", KSPROPSETID_TopologyNode); -#define KSPROPSETID_TopologyNode DEFINE_GUIDNAMED(KSPROPSETID_TopologyNode) - -typedef enum { - KSPROPERTY_TOPOLOGYNODE_ENABLE = 1, - KSPROPERTY_TOPOLOGYNODE_RESET -} KSPROPERTY_TOPOLOGYNODE; - -//=========================================================================== - -#if defined(_NTDDK_) -typedef NTSTATUS (CALLBACK *PRTAUDIOGETPOSITION)(IN PFILE_OBJECT PinFileObject, - OUT PUCHAR *ppPlayPosition, - OUT PLONG plOffset); -#endif // defined(_NTDDK_) - -#define STATIC_KSPROPSETID_RtAudio\ - 0xa855a48c, 0x2f78, 0x4729, 0x90, 0x51, 0x19, 0x68, 0x74, 0x6b, 0x9e, 0xef -DEFINE_GUIDSTRUCT("A855A48C-2F78-4729-9051-1968746B9EEF", KSPROPSETID_RtAudio); -#define KSPROPSETID_RtAudio DEFINE_GUIDNAMED(KSPROPSETID_RtAudio) - -typedef enum { - KSPROPERTY_RTAUDIO_GETPOSITIONFUNCTION -} KSPROPERTY_RTAUDIO; - -//=========================================================================== -#define STATIC_KSPROPSETID_DrmAudioStream\ - 0x2f2c8ddd, 0x4198, 0x4fac, 0xba, 0x29, 0x61, 0xbb, 0x5, 0xb7, 0xde, 0x6 -DEFINE_GUIDSTRUCT("2F2C8DDD-4198-4fac-BA29-61BB05B7DE06", KSPROPSETID_DrmAudioStream); -#define KSPROPSETID_DrmAudioStream DEFINE_GUIDNAMED(KSPROPSETID_DrmAudioStream) - -typedef enum { - KSPROPERTY_DRMAUDIOSTREAM_CONTENTID -} KSPROPERTY_DRMAUDIOSTREAM; - -//=========================================================================== -#define STATIC_KSPROPSETID_Audio\ - 0x45FFAAA0L, 0x6E1B, 0x11D0, 0xBC, 0xF2, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00 -DEFINE_GUIDSTRUCT("45FFAAA0-6E1B-11D0-BCF2-444553540000", KSPROPSETID_Audio); -#define KSPROPSETID_Audio DEFINE_GUIDNAMED(KSPROPSETID_Audio) - -typedef enum { - KSPROPERTY_AUDIO_LATENCY = 1, - KSPROPERTY_AUDIO_COPY_PROTECTION, - KSPROPERTY_AUDIO_CHANNEL_CONFIG, - KSPROPERTY_AUDIO_VOLUMELEVEL, - KSPROPERTY_AUDIO_POSITION, - KSPROPERTY_AUDIO_DYNAMIC_RANGE, - KSPROPERTY_AUDIO_QUALITY, - KSPROPERTY_AUDIO_SAMPLING_RATE, - KSPROPERTY_AUDIO_DYNAMIC_SAMPLING_RATE, - KSPROPERTY_AUDIO_MIX_LEVEL_TABLE, - KSPROPERTY_AUDIO_MIX_LEVEL_CAPS, - KSPROPERTY_AUDIO_MUX_SOURCE, - KSPROPERTY_AUDIO_MUTE, - KSPROPERTY_AUDIO_BASS, - KSPROPERTY_AUDIO_MID, - KSPROPERTY_AUDIO_TREBLE, - KSPROPERTY_AUDIO_BASS_BOOST, - KSPROPERTY_AUDIO_EQ_LEVEL, - KSPROPERTY_AUDIO_NUM_EQ_BANDS, - KSPROPERTY_AUDIO_EQ_BANDS, - KSPROPERTY_AUDIO_AGC, - KSPROPERTY_AUDIO_DELAY, - KSPROPERTY_AUDIO_LOUDNESS, - KSPROPERTY_AUDIO_WIDE_MODE, - KSPROPERTY_AUDIO_WIDENESS, - KSPROPERTY_AUDIO_REVERB_LEVEL, - KSPROPERTY_AUDIO_CHORUS_LEVEL, - KSPROPERTY_AUDIO_DEV_SPECIFIC, - KSPROPERTY_AUDIO_DEMUX_DEST, - KSPROPERTY_AUDIO_STEREO_ENHANCE, - KSPROPERTY_AUDIO_MANUFACTURE_GUID, - KSPROPERTY_AUDIO_PRODUCT_GUID, - KSPROPERTY_AUDIO_CPU_RESOURCES, - KSPROPERTY_AUDIO_STEREO_SPEAKER_GEOMETRY, - KSPROPERTY_AUDIO_SURROUND_ENCODE, - KSPROPERTY_AUDIO_3D_INTERFACE, - KSPROPERTY_AUDIO_PEAKMETER, - KSPROPERTY_AUDIO_ALGORITHM_INSTANCE, - KSPROPERTY_AUDIO_FILTER_STATE, - KSPROPERTY_AUDIO_PREFERRED_STATUS -} KSPROPERTY_AUDIO; - -// Audio quality constants -#define KSAUDIO_QUALITY_WORST 0x0 -#define KSAUDIO_QUALITY_PC 0x1 -#define KSAUDIO_QUALITY_BASIC 0x2 -#define KSAUDIO_QUALITY_ADVANCED 0x3 - -// Audio CPU resource constants -#define KSAUDIO_CPU_RESOURCES_NOT_HOST_CPU 0x00000000 -#define KSAUDIO_CPU_RESOURCES_HOST_CPU 0x7FFFFFFF - -typedef struct { - BOOL fCopyrighted; - BOOL fOriginal; -} KSAUDIO_COPY_PROTECTION, *PKSAUDIO_COPY_PROTECTION; - -typedef struct { - LONG ActiveSpeakerPositions; -} KSAUDIO_CHANNEL_CONFIG, *PKSAUDIO_CHANNEL_CONFIG; - -// Speaker Positions: -#define SPEAKER_FRONT_LEFT 0x1 -#define SPEAKER_FRONT_RIGHT 0x2 -#define SPEAKER_FRONT_CENTER 0x4 -#define SPEAKER_LOW_FREQUENCY 0x8 -#define SPEAKER_BACK_LEFT 0x10 -#define SPEAKER_BACK_RIGHT 0x20 -#define SPEAKER_FRONT_LEFT_OF_CENTER 0x40 -#define SPEAKER_FRONT_RIGHT_OF_CENTER 0x80 -#define SPEAKER_BACK_CENTER 0x100 -#define SPEAKER_SIDE_LEFT 0x200 -#define SPEAKER_SIDE_RIGHT 0x400 -#define SPEAKER_TOP_CENTER 0x800 -#define SPEAKER_TOP_FRONT_LEFT 0x1000 -#define SPEAKER_TOP_FRONT_CENTER 0x2000 -#define SPEAKER_TOP_FRONT_RIGHT 0x4000 -#define SPEAKER_TOP_BACK_LEFT 0x8000 -#define SPEAKER_TOP_BACK_CENTER 0x10000 -#define SPEAKER_TOP_BACK_RIGHT 0x20000 - -// Bit mask locations reserved for future use -#define SPEAKER_RESERVED 0x7FFC0000 - -// Used to specify that any possible permutation of speaker configurations -#define SPEAKER_ALL 0x80000000 - -// DirectSound Speaker Config -#define KSAUDIO_SPEAKER_DIRECTOUT 0 -#define KSAUDIO_SPEAKER_MONO (SPEAKER_FRONT_CENTER) -#define KSAUDIO_SPEAKER_STEREO (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT) -#define KSAUDIO_SPEAKER_QUAD (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | \ - SPEAKER_BACK_LEFT | SPEAKER_BACK_RIGHT) -#define KSAUDIO_SPEAKER_SURROUND (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | \ - SPEAKER_FRONT_CENTER | SPEAKER_BACK_CENTER) -#define KSAUDIO_SPEAKER_5POINT1 (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | \ - SPEAKER_FRONT_CENTER | SPEAKER_LOW_FREQUENCY | \ - SPEAKER_BACK_LEFT | SPEAKER_BACK_RIGHT) -#define KSAUDIO_SPEAKER_7POINT1 (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | \ - SPEAKER_FRONT_CENTER | SPEAKER_LOW_FREQUENCY | \ - SPEAKER_BACK_LEFT | SPEAKER_BACK_RIGHT | \ - SPEAKER_FRONT_LEFT_OF_CENTER | SPEAKER_FRONT_RIGHT_OF_CENTER) -#define KSAUDIO_SPEAKER_5POINT1_SURROUND (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | \ - SPEAKER_FRONT_CENTER | SPEAKER_LOW_FREQUENCY | \ - SPEAKER_SIDE_LEFT | SPEAKER_SIDE_RIGHT) -#define KSAUDIO_SPEAKER_7POINT1_SURROUND (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | \ - SPEAKER_FRONT_CENTER | SPEAKER_LOW_FREQUENCY | \ - SPEAKER_BACK_LEFT | SPEAKER_BACK_RIGHT | \ - SPEAKER_SIDE_LEFT | SPEAKER_SIDE_RIGHT) -// The following are obsolete 5.1 and 7.1 settings (they lack side speakers). Note this means -// that the default 5.1 and 7.1 settings (KSAUDIO_SPEAKER_5POINT1 and KSAUDIO_SPEAKER_7POINT1 are -// similarly obsolete but are unchanged for compatibility reasons). -#define KSAUDIO_SPEAKER_5POINT1_BACK KSAUDIO_SPEAKER_5POINT1 -#define KSAUDIO_SPEAKER_7POINT1_WIDE KSAUDIO_SPEAKER_7POINT1 - -// DVD Speaker Positions -#define KSAUDIO_SPEAKER_GROUND_FRONT_LEFT SPEAKER_FRONT_LEFT -#define KSAUDIO_SPEAKER_GROUND_FRONT_CENTER SPEAKER_FRONT_CENTER -#define KSAUDIO_SPEAKER_GROUND_FRONT_RIGHT SPEAKER_FRONT_RIGHT -#define KSAUDIO_SPEAKER_GROUND_REAR_LEFT SPEAKER_BACK_LEFT -#define KSAUDIO_SPEAKER_GROUND_REAR_RIGHT SPEAKER_BACK_RIGHT -#define KSAUDIO_SPEAKER_TOP_MIDDLE SPEAKER_TOP_CENTER -#define KSAUDIO_SPEAKER_SUPER_WOOFER SPEAKER_LOW_FREQUENCY - -typedef struct { - ULONG QuietCompression; - ULONG LoudCompression; -} KSAUDIO_DYNAMIC_RANGE, *PKSAUDIO_DYNAMIC_RANGE; - -typedef struct { - BOOL Mute; - LONG Level; -} KSAUDIO_MIXLEVEL, *PKSAUDIO_MIXLEVEL; - -typedef struct { - BOOL Mute; - LONG Minimum; - LONG Maximum; - LONG Reset; -} KSAUDIO_MIX_CAPS, *PKSAUDIO_MIX_CAPS; - -typedef struct { - ULONG InputChannels; - ULONG OutputChannels; - KSAUDIO_MIX_CAPS Capabilities[1]; -} KSAUDIO_MIXCAP_TABLE, *PKSAUDIO_MIXCAP_TABLE; - -typedef enum { - SE_TECH_NONE, - SE_TECH_ANALOG_DEVICES_PHAT, - SE_TECH_CREATIVE, - SE_TECH_NATIONAL_SEMI, - SE_TECH_YAMAHA_YMERSION, - SE_TECH_BBE, - SE_TECH_CRYSTAL_SEMI, - SE_TECH_QSOUND_QXPANDER, - SE_TECH_SPATIALIZER, - SE_TECH_SRS, - SE_TECH_PLATFORM_TECH, - SE_TECH_AKM, - SE_TECH_AUREAL, - SE_TECH_AZTECH, - SE_TECH_BINAURA, - SE_TECH_ESS_TECH, - SE_TECH_HARMAN_VMAX, - SE_TECH_NVIDEA, - SE_TECH_PHILIPS_INCREDIBLE, - SE_TECH_TEXAS_INST, - SE_TECH_VLSI_TECH -} SE_TECHNIQUE; - -typedef struct { - SE_TECHNIQUE Technique; - ULONG Center; - ULONG Depth; - ULONG Reserved; -} KSAUDIO_STEREO_ENHANCE, *PKSAUDIO_STEREO_ENHANCE; - -typedef enum { // preferred device index - KSPROPERTY_SYSAUDIO_NORMAL_DEFAULT = 0, - KSPROPERTY_SYSAUDIO_PLAYBACK_DEFAULT, - KSPROPERTY_SYSAUDIO_RECORD_DEFAULT, - KSPROPERTY_SYSAUDIO_MIDI_DEFAULT, - KSPROPERTY_SYSAUDIO_MIXER_DEFAULT -} KSPROPERTY_SYSAUDIO_DEFAULT_TYPE; - -typedef struct { - BOOL Enable; - KSPROPERTY_SYSAUDIO_DEFAULT_TYPE DeviceType; - ULONG Flags; - ULONG Reserved; -} KSAUDIO_PREFERRED_STATUS, *PKSAUDIO_PREFERRED_STATUS; -//=========================================================================== -// Topology Node Type GUIDs - -#define STATIC_KSNODETYPE_DAC\ - 0x507AE360L, 0xC554, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1 -DEFINE_GUIDSTRUCT("507AE360-C554-11D0-8A2B-00A0C9255AC1", KSNODETYPE_DAC); -#define KSNODETYPE_DAC DEFINE_GUIDNAMED(KSNODETYPE_DAC) - -#define STATIC_KSNODETYPE_ADC\ - 0x4D837FE0L, 0xC555, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1 -DEFINE_GUIDSTRUCT("4D837FE0-C555-11D0-8A2B-00A0C9255AC1", KSNODETYPE_ADC); -#define KSNODETYPE_ADC DEFINE_GUIDNAMED(KSNODETYPE_ADC) - -#define STATIC_KSNODETYPE_SRC\ - 0x9DB7B9E0L, 0xC555, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1 -DEFINE_GUIDSTRUCT("9DB7B9E0-C555-11D0-8A2B-00A0C9255AC1", KSNODETYPE_SRC); -#define KSNODETYPE_SRC DEFINE_GUIDNAMED(KSNODETYPE_SRC) - -#define STATIC_KSNODETYPE_SUPERMIX\ - 0xE573ADC0L, 0xC555, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1 -DEFINE_GUIDSTRUCT("E573ADC0-C555-11D0-8A2B-00A0C9255AC1", KSNODETYPE_SUPERMIX); -#define KSNODETYPE_SUPERMIX DEFINE_GUIDNAMED(KSNODETYPE_SUPERMIX) - -#define STATIC_KSNODETYPE_MUX\ - 0x2CEAF780L, 0xC556, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1 -DEFINE_GUIDSTRUCT("2CEAF780-C556-11D0-8A2B-00A0C9255AC1", KSNODETYPE_MUX); -#define KSNODETYPE_MUX DEFINE_GUIDNAMED(KSNODETYPE_MUX) - -#define STATIC_KSNODETYPE_DEMUX\ - 0xC0EB67D4L, 0xE807, 0x11D0, 0x95, 0x8A, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 -DEFINE_GUIDSTRUCT("C0EB67D4-E807-11D0-958A-00C04FB925D3", KSNODETYPE_DEMUX); -#define KSNODETYPE_DEMUX DEFINE_GUIDNAMED(KSNODETYPE_DEMUX) - -#define STATIC_KSNODETYPE_SUM\ - 0xDA441A60L, 0xC556, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1 -DEFINE_GUIDSTRUCT("DA441A60-C556-11D0-8A2B-00A0C9255AC1", KSNODETYPE_SUM); -#define KSNODETYPE_SUM DEFINE_GUIDNAMED(KSNODETYPE_SUM) - -#define STATIC_KSNODETYPE_MUTE\ - 0x02B223C0L, 0xC557, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1 -DEFINE_GUIDSTRUCT("02B223C0-C557-11D0-8A2B-00A0C9255AC1", KSNODETYPE_MUTE); -#define KSNODETYPE_MUTE DEFINE_GUIDNAMED(KSNODETYPE_MUTE) - -#define STATIC_KSNODETYPE_VOLUME\ - 0x3A5ACC00L, 0xC557, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1 -DEFINE_GUIDSTRUCT("3A5ACC00-C557-11D0-8A2B-00A0C9255AC1", KSNODETYPE_VOLUME); -#define KSNODETYPE_VOLUME DEFINE_GUIDNAMED(KSNODETYPE_VOLUME) - -#define STATIC_KSNODETYPE_TONE\ - 0x7607E580L, 0xC557, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1 -DEFINE_GUIDSTRUCT("7607E580-C557-11D0-8A2B-00A0C9255AC1", KSNODETYPE_TONE); -#define KSNODETYPE_TONE DEFINE_GUIDNAMED(KSNODETYPE_TONE) - -#define STATIC_KSNODETYPE_EQUALIZER\ - 0x9D41B4A0L, 0xC557, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1 -DEFINE_GUIDSTRUCT("9D41B4A0-C557-11D0-8A2B-00A0C9255AC1", KSNODETYPE_EQUALIZER); -#define KSNODETYPE_EQUALIZER DEFINE_GUIDNAMED(KSNODETYPE_EQUALIZER) - -#define STATIC_KSNODETYPE_AGC\ - 0xE88C9BA0L, 0xC557, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1 -DEFINE_GUIDSTRUCT("E88C9BA0-C557-11D0-8A2B-00A0C9255AC1", KSNODETYPE_AGC); -#define KSNODETYPE_AGC DEFINE_GUIDNAMED(KSNODETYPE_AGC) - -#define STATIC_KSNODETYPE_NOISE_SUPPRESS\ - 0xe07f903f, 0x62fd, 0x4e60, 0x8c, 0xdd, 0xde, 0xa7, 0x23, 0x66, 0x65, 0xb5 -DEFINE_GUIDSTRUCT("E07F903F-62FD-4e60-8CDD-DEA7236665B5", KSNODETYPE_NOISE_SUPPRESS); -#define KSNODETYPE_NOISE_SUPPRESS DEFINE_GUIDNAMED(KSNODETYPE_NOISE_SUPPRESS) - -#define STATIC_KSNODETYPE_DELAY\ - 0x144981E0L, 0xC558, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1 -DEFINE_GUIDSTRUCT("144981E0-C558-11D0-8A2B-00A0C9255AC1", KSNODETYPE_DELAY); -#define KSNODETYPE_DELAY DEFINE_GUIDNAMED(KSNODETYPE_DELAY) - -#define STATIC_KSNODETYPE_LOUDNESS\ - 0x41887440L, 0xC558, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1 -DEFINE_GUIDSTRUCT("41887440-C558-11D0-8A2B-00A0C9255AC1", KSNODETYPE_LOUDNESS); -#define KSNODETYPE_LOUDNESS DEFINE_GUIDNAMED(KSNODETYPE_LOUDNESS) - -#define STATIC_KSNODETYPE_PROLOGIC_DECODER\ - 0x831C2C80L, 0xC558, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1 -DEFINE_GUIDSTRUCT("831C2C80-C558-11D0-8A2B-00A0C9255AC1", KSNODETYPE_PROLOGIC_DECODER); -#define KSNODETYPE_PROLOGIC_DECODER DEFINE_GUIDNAMED(KSNODETYPE_PROLOGIC_DECODER) - -#define STATIC_KSNODETYPE_STEREO_WIDE\ - 0xA9E69800L, 0xC558, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1 -DEFINE_GUIDSTRUCT("A9E69800-C558-11D0-8A2B-00A0C9255AC1", KSNODETYPE_STEREO_WIDE); -#define KSNODETYPE_STEREO_WIDE DEFINE_GUIDNAMED(KSNODETYPE_STEREO_WIDE) - -#define STATIC_KSNODETYPE_STEREO_ENHANCE\ - 0xAF6878ACL, 0xE83F, 0x11D0, 0x95, 0x8A, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 -DEFINE_GUIDSTRUCT("AF6878AC-E83F-11D0-958A-00C04FB925D3", KSNODETYPE_STEREO_ENHANCE); -#define KSNODETYPE_STEREO_ENHANCE DEFINE_GUIDNAMED(KSNODETYPE_STEREO_ENHANCE) - -#define STATIC_KSNODETYPE_REVERB\ - 0xEF0328E0L, 0xC558, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1 -DEFINE_GUIDSTRUCT("EF0328E0-C558-11D0-8A2B-00A0C9255AC1", KSNODETYPE_REVERB); -#define KSNODETYPE_REVERB DEFINE_GUIDNAMED(KSNODETYPE_REVERB) - -#define STATIC_KSNODETYPE_CHORUS\ - 0x20173F20L, 0xC559, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1 -DEFINE_GUIDSTRUCT("20173F20-C559-11D0-8A2B-00A0C9255AC1", KSNODETYPE_CHORUS); -#define KSNODETYPE_CHORUS DEFINE_GUIDNAMED(KSNODETYPE_CHORUS) - -#define STATIC_KSNODETYPE_3D_EFFECTS\ - 0x55515860L, 0xC559, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1 -DEFINE_GUIDSTRUCT("55515860-C559-11D0-8A2B-00A0C9255AC1", KSNODETYPE_3D_EFFECTS); -#define KSNODETYPE_3D_EFFECTS DEFINE_GUIDNAMED(KSNODETYPE_3D_EFFECTS) - -#define STATIC_KSNODETYPE_ACOUSTIC_ECHO_CANCEL STATIC_KSCATEGORY_ACOUSTIC_ECHO_CANCEL -#define KSNODETYPE_ACOUSTIC_ECHO_CANCEL KSCATEGORY_ACOUSTIC_ECHO_CANCEL - -#define STATIC_KSALGORITHMINSTANCE_SYSTEM_ACOUSTIC_ECHO_CANCEL\ - 0x1c22c56dL, 0x9879, 0x4f5b, 0xa3, 0x89, 0x27, 0x99, 0x6d, 0xdc, 0x28, 0x10 -DEFINE_GUIDSTRUCT("1C22C56D-9879-4f5b-A389-27996DDC2810", KSALGORITHMINSTANCE_SYSTEM_ACOUSTIC_ECHO_CANCEL); -#define KSALGORITHMINSTANCE_SYSTEM_ACOUSTIC_ECHO_CANCEL DEFINE_GUIDNAMED(KSALGORITHMINSTANCE_SYSTEM_ACOUSTIC_ECHO_CANCEL) - -#define STATIC_KSALGORITHMINSTANCE_SYSTEM_NOISE_SUPPRESS\ - 0x5ab0882eL, 0x7274, 0x4516, 0x87, 0x7d, 0x4e, 0xee, 0x99, 0xba, 0x4f, 0xd0 -DEFINE_GUIDSTRUCT("5AB0882E-7274-4516-877D-4EEE99BA4FD0", KSALGORITHMINSTANCE_SYSTEM_NOISE_SUPPRESS); -#define KSALGORITHMINSTANCE_SYSTEM_NOISE_SUPPRESS DEFINE_GUIDNAMED(KSALGORITHMINSTANCE_SYSTEM_NOISE_SUPPRESS) - -#define STATIC_KSALGORITHMINSTANCE_SYSTEM_AGC\ - 0x950e55b9L, 0x877c, 0x4c67, 0xbe, 0x8, 0xe4, 0x7b, 0x56, 0x11, 0x13, 0xa -DEFINE_GUIDSTRUCT("950E55B9-877C-4c67-BE08-E47B5611130A", KSALGORITHMINSTANCE_SYSTEM_AGC); -#define KSALGORITHMINSTANCE_SYSTEM_AGC DEFINE_GUIDNAMED(KSALGORITHMINSTANCE_SYSTEM_AGC) - -#define STATIC_KSALGORITHMINSTANCE_SYSTEM_MICROPHONE_ARRAY_PROCESSOR\ - 0xB6F5A0A0L, 0x9E61, 0x4F8C, 0x91, 0xE3, 0x76, 0xCF, 0xF, 0x3C, 0x47, 0x1F -DEFINE_GUIDSTRUCT("B6F5A0A0-9E61-4f8c-91E3-76CF0F3C471F", KSALGORITHMINSTANCE_SYSTEM_MICROPHONE_ARRAY_PROCESSOR); -#define KSALGORITHMINSTANCE_SYSTEM_MICROPHONE_ARRAY_PROCESSOR DEFINE_GUIDNAMED(KSALGORITHMINSTANCE_SYSTEM_MICROPHONE_ARRAY_PROCESSOR) - - -#define STATIC_KSNODETYPE_MICROPHONE_ARRAY_PROCESSOR STATIC_KSCATEGORY_MICROPHONE_ARRAY_PROCESSOR -#define KSNODETYPE_MICROPHONE_ARRAY_PROCESSOR KSCATEGORY_MICROPHONE_ARRAY_PROCESSOR - -#define STATIC_KSNODETYPE_DEV_SPECIFIC\ - 0x941C7AC0L, 0xC559, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1 -DEFINE_GUIDSTRUCT("941C7AC0-C559-11D0-8A2B-00A0C9255AC1", KSNODETYPE_DEV_SPECIFIC); -#define KSNODETYPE_DEV_SPECIFIC DEFINE_GUIDNAMED(KSNODETYPE_DEV_SPECIFIC) - -#define STATIC_KSNODETYPE_PROLOGIC_ENCODER\ - 0x8074C5B2L, 0x3C66, 0x11D2, 0xB4, 0x5A, 0x30, 0x78, 0x30, 0x2C, 0x20, 0x30 -DEFINE_GUIDSTRUCT("8074C5B2-3C66-11D2-B45A-3078302C2030", KSNODETYPE_PROLOGIC_ENCODER); -#define KSNODETYPE_PROLOGIC_ENCODER DEFINE_GUIDNAMED(KSNODETYPE_PROLOGIC_ENCODER) -#define KSNODETYPE_SURROUND_ENCODER KSNODETYPE_PROLOGIC_ENCODER - -#define STATIC_KSNODETYPE_PEAKMETER\ - 0xa085651eL, 0x5f0d, 0x4b36, 0xa8, 0x69, 0xd1, 0x95, 0xd6, 0xab, 0x4b, 0x9e -DEFINE_GUIDSTRUCT("A085651E-5F0D-4b36-A869-D195D6AB4B9E", KSNODETYPE_PEAKMETER); -#define KSNODETYPE_PEAKMETER DEFINE_GUIDNAMED(KSNODETYPE_PEAKMETER) - -//=========================================================================== -// Topology Node Name GUIDs for common audio nodes -#define STATIC_KSAUDFNAME_BASS\ - 0x185FEDE0L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 -DEFINE_GUIDSTRUCT("185FEDE0-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_BASS); -#define KSAUDFNAME_BASS DEFINE_GUIDNAMED(KSAUDFNAME_BASS) - -#define STATIC_KSAUDFNAME_TREBLE\ - 0x185FEDE1L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 -DEFINE_GUIDSTRUCT("185FEDE1-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_TREBLE); -#define KSAUDFNAME_TREBLE DEFINE_GUIDNAMED(KSAUDFNAME_TREBLE) - -#define STATIC_KSAUDFNAME_3D_STEREO\ - 0x185FEDE2L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 -DEFINE_GUIDSTRUCT("185FEDE2-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_3D_STEREO); -#define KSAUDFNAME_3D_STEREO DEFINE_GUIDNAMED(KSAUDFNAME_3D_STEREO) - -#define STATIC_KSAUDFNAME_MASTER_VOLUME\ - 0x185FEDE3L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 -DEFINE_GUIDSTRUCT("185FEDE3-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_MASTER_VOLUME); -#define KSAUDFNAME_MASTER_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_MASTER_VOLUME) - -#define STATIC_KSAUDFNAME_MASTER_MUTE\ - 0x185FEDE4L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 -DEFINE_GUIDSTRUCT("185FEDE4-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_MASTER_MUTE); -#define KSAUDFNAME_MASTER_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_MASTER_MUTE) - -#define STATIC_KSAUDFNAME_WAVE_VOLUME\ - 0x185FEDE5L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 -DEFINE_GUIDSTRUCT("185FEDE5-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_WAVE_VOLUME); -#define KSAUDFNAME_WAVE_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_WAVE_VOLUME) - -#define STATIC_KSAUDFNAME_WAVE_MUTE\ - 0x185FEDE6L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 -DEFINE_GUIDSTRUCT("185FEDE6-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_WAVE_MUTE); -#define KSAUDFNAME_WAVE_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_WAVE_MUTE) - -#define STATIC_KSAUDFNAME_MIDI_VOLUME\ - 0x185FEDE7L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 -DEFINE_GUIDSTRUCT("185FEDE7-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_MIDI_VOLUME); -#define KSAUDFNAME_MIDI_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_MIDI_VOLUME) - -#define STATIC_KSAUDFNAME_MIDI_MUTE\ - 0x185FEDE8L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 -DEFINE_GUIDSTRUCT("185FEDE8-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_MIDI_MUTE); -#define KSAUDFNAME_MIDI_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_MIDI_MUTE) - -#define STATIC_KSAUDFNAME_CD_VOLUME\ - 0x185FEDE9L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 -DEFINE_GUIDSTRUCT("185FEDE9-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_CD_VOLUME); -#define KSAUDFNAME_CD_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_CD_VOLUME) - -#define STATIC_KSAUDFNAME_CD_MUTE\ - 0x185FEDEAL, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 -DEFINE_GUIDSTRUCT("185FEDEA-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_CD_MUTE); -#define KSAUDFNAME_CD_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_CD_MUTE) - -#define STATIC_KSAUDFNAME_LINE_VOLUME\ - 0x185FEDEBL, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 -DEFINE_GUIDSTRUCT("185FEDEB-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_LINE_VOLUME); -#define KSAUDFNAME_LINE_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_LINE_VOLUME) - -#define STATIC_KSAUDFNAME_LINE_MUTE\ - 0x185FEDECL, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 -DEFINE_GUIDSTRUCT("185FEDEC-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_LINE_MUTE); -#define KSAUDFNAME_LINE_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_LINE_MUTE) - -#define STATIC_KSAUDFNAME_MIC_VOLUME\ - 0x185FEDEDL, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 -DEFINE_GUIDSTRUCT("185FEDED-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_MIC_VOLUME); -#define KSAUDFNAME_MIC_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_MIC_VOLUME) - -#define STATIC_KSAUDFNAME_MIC_MUTE\ - 0x185FEDEEL, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 -DEFINE_GUIDSTRUCT("185FEDEE-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_MIC_MUTE); -#define KSAUDFNAME_MIC_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_MIC_MUTE) - -#define STATIC_KSAUDFNAME_RECORDING_SOURCE\ - 0x185FEDEFL, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 -DEFINE_GUIDSTRUCT("185FEDEF-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_RECORDING_SOURCE); -#define KSAUDFNAME_RECORDING_SOURCE DEFINE_GUIDNAMED(KSAUDFNAME_RECORDING_SOURCE) - -#define STATIC_KSAUDFNAME_PC_SPEAKER_VOLUME\ - 0x185FEDF0L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 -DEFINE_GUIDSTRUCT("185FEDF0-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_PC_SPEAKER_VOLUME); -#define KSAUDFNAME_PC_SPEAKER_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_PC_SPEAKER_VOLUME) - -#define STATIC_KSAUDFNAME_PC_SPEAKER_MUTE\ - 0x185FEDF1L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 -DEFINE_GUIDSTRUCT("185FEDF1-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_PC_SPEAKER_MUTE); -#define KSAUDFNAME_PC_SPEAKER_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_PC_SPEAKER_MUTE) - -#define STATIC_KSAUDFNAME_MIDI_IN_VOLUME\ - 0x185FEDF2L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 -DEFINE_GUIDSTRUCT("185FEDF2-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_MIDI_IN_VOLUME); -#define KSAUDFNAME_MIDI_IN_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_MIDI_IN_VOLUME) - -#define STATIC_KSAUDFNAME_CD_IN_VOLUME\ - 0x185FEDF3L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 -DEFINE_GUIDSTRUCT("185FEDF3-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_CD_IN_VOLUME); -#define KSAUDFNAME_CD_IN_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_CD_IN_VOLUME) - -#define STATIC_KSAUDFNAME_LINE_IN_VOLUME\ - 0x185FEDF4L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 -DEFINE_GUIDSTRUCT("185FEDF4-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_LINE_IN_VOLUME); -#define KSAUDFNAME_LINE_IN_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_LINE_IN_VOLUME) - -#define STATIC_KSAUDFNAME_MIC_IN_VOLUME\ - 0x185FEDF5L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 -DEFINE_GUIDSTRUCT("185FEDF5-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_MIC_IN_VOLUME); -#define KSAUDFNAME_MIC_IN_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_MIC_IN_VOLUME) - -#define STATIC_KSAUDFNAME_WAVE_IN_VOLUME\ - 0x185FEDF6L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 -DEFINE_GUIDSTRUCT("185FEDF6-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_WAVE_IN_VOLUME); -#define KSAUDFNAME_WAVE_IN_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_WAVE_IN_VOLUME) - -#define STATIC_KSAUDFNAME_VOLUME_CONTROL\ - 0x185FEDF7L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 -DEFINE_GUIDSTRUCT("185FEDF7-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_VOLUME_CONTROL); -#define KSAUDFNAME_VOLUME_CONTROL DEFINE_GUIDNAMED(KSAUDFNAME_VOLUME_CONTROL) - -#define STATIC_KSAUDFNAME_MIDI\ - 0x185FEDF8L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 -DEFINE_GUIDSTRUCT("185FEDF8-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_MIDI); -#define KSAUDFNAME_MIDI DEFINE_GUIDNAMED(KSAUDFNAME_MIDI) - -#define STATIC_KSAUDFNAME_LINE_IN\ - 0x185FEDF9L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 -DEFINE_GUIDSTRUCT("185FEDF9-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_LINE_IN); -#define KSAUDFNAME_LINE_IN DEFINE_GUIDNAMED(KSAUDFNAME_LINE_IN) - -#define STATIC_KSAUDFNAME_RECORDING_CONTROL\ - 0x185FEDFAL, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 -DEFINE_GUIDSTRUCT("185FEDFA-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_RECORDING_CONTROL); -#define KSAUDFNAME_RECORDING_CONTROL DEFINE_GUIDNAMED(KSAUDFNAME_RECORDING_CONTROL) - -#define STATIC_KSAUDFNAME_CD_AUDIO\ - 0x185FEDFBL, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 -DEFINE_GUIDSTRUCT("185FEDFB-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_CD_AUDIO); -#define KSAUDFNAME_CD_AUDIO DEFINE_GUIDNAMED(KSAUDFNAME_CD_AUDIO) - -#define STATIC_KSAUDFNAME_AUX_VOLUME\ - 0x185FEDFCL, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 -DEFINE_GUIDSTRUCT("185FEDFC-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_AUX_VOLUME); -#define KSAUDFNAME_AUX_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_AUX_VOLUME) - -#define STATIC_KSAUDFNAME_AUX_MUTE\ - 0x185FEDFDL, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 -DEFINE_GUIDSTRUCT("185FEDFD-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_AUX_MUTE); -#define KSAUDFNAME_AUX_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_AUX_MUTE) - -#define STATIC_KSAUDFNAME_AUX\ - 0x185FEDFEL, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 -DEFINE_GUIDSTRUCT("185FEDFE-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_AUX); -#define KSAUDFNAME_AUX DEFINE_GUIDNAMED(KSAUDFNAME_AUX) - -#define STATIC_KSAUDFNAME_PC_SPEAKER\ - 0x185FEDFFL, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 -DEFINE_GUIDSTRUCT("185FEDFF-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_PC_SPEAKER); -#define KSAUDFNAME_PC_SPEAKER DEFINE_GUIDNAMED(KSAUDFNAME_PC_SPEAKER) - -#define STATIC_KSAUDFNAME_WAVE_OUT_MIX\ - 0x185FEE00L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 -DEFINE_GUIDSTRUCT("185FEE00-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_WAVE_OUT_MIX); -#define KSAUDFNAME_WAVE_OUT_MIX DEFINE_GUIDNAMED(KSAUDFNAME_WAVE_OUT_MIX) - -#define STATIC_KSAUDFNAME_MONO_OUT\ - 0xf9b41dc3L, 0x96e2, 0x11d2, 0xac, 0x4c, 0x0, 0xc0, 0x4f, 0x8e, 0xfb, 0x68 -DEFINE_GUIDSTRUCT("F9B41DC3-96E2-11d2-AC4C-00C04F8EFB68", KSAUDFNAME_MONO_OUT); -#define KSAUDFNAME_MONO_OUT DEFINE_GUIDNAMED(KSAUDFNAME_MONO_OUT) - -#define STATIC_KSAUDFNAME_STEREO_MIX\ - 0xdff077L, 0x96e3, 0x11d2, 0xac, 0x4c, 0x0, 0xc0, 0x4f, 0x8e, 0xfb, 0x68 -DEFINE_GUIDSTRUCT("00DFF077-96E3-11d2-AC4C-00C04F8EFB68", KSAUDFNAME_STEREO_MIX); -#define KSAUDFNAME_STEREO_MIX DEFINE_GUIDNAMED(KSAUDFNAME_STEREO_MIX) - -#define STATIC_KSAUDFNAME_MONO_MIX\ - 0xdff078L, 0x96e3, 0x11d2, 0xac, 0x4c, 0x0, 0xc0, 0x4f, 0x8e, 0xfb, 0x68 -DEFINE_GUIDSTRUCT("00DFF078-96E3-11d2-AC4C-00C04F8EFB68", KSAUDFNAME_MONO_MIX); -#define KSAUDFNAME_MONO_MIX DEFINE_GUIDNAMED(KSAUDFNAME_MONO_MIX) - -#define STATIC_KSAUDFNAME_MONO_OUT_VOLUME\ - 0x1ad247ebL, 0x96e3, 0x11d2, 0xac, 0x4c, 0x0, 0xc0, 0x4f, 0x8e, 0xfb, 0x68 -DEFINE_GUIDSTRUCT("1AD247EB-96E3-11d2-AC4C-00C04F8EFB68", KSAUDFNAME_MONO_OUT_VOLUME); -#define KSAUDFNAME_MONO_OUT_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_MONO_OUT_VOLUME) - -#define STATIC_KSAUDFNAME_MONO_OUT_MUTE\ - 0x1ad247ecL, 0x96e3, 0x11d2, 0xac, 0x4c, 0x0, 0xc0, 0x4f, 0x8e, 0xfb, 0x68 -DEFINE_GUIDSTRUCT("1AD247EC-96E3-11d2-AC4C-00C04F8EFB68", KSAUDFNAME_MONO_OUT_MUTE); -#define KSAUDFNAME_MONO_OUT_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_MONO_OUT_MUTE) - -#define STATIC_KSAUDFNAME_STEREO_MIX_VOLUME\ - 0x1ad247edL, 0x96e3, 0x11d2, 0xac, 0x4c, 0x0, 0xc0, 0x4f, 0x8e, 0xfb, 0x68 -DEFINE_GUIDSTRUCT("1AD247ED-96E3-11d2-AC4C-00C04F8EFB68", KSAUDFNAME_STEREO_MIX_VOLUME); -#define KSAUDFNAME_STEREO_MIX_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_STEREO_MIX_VOLUME) - -#define STATIC_KSAUDFNAME_STEREO_MIX_MUTE\ - 0x22b0eafdL, 0x96e3, 0x11d2, 0xac, 0x4c, 0x0, 0xc0, 0x4f, 0x8e, 0xfb, 0x68 -DEFINE_GUIDSTRUCT("22B0EAFD-96E3-11d2-AC4C-00C04F8EFB68", KSAUDFNAME_STEREO_MIX_MUTE); -#define KSAUDFNAME_STEREO_MIX_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_STEREO_MIX_MUTE) - -#define STATIC_KSAUDFNAME_MONO_MIX_VOLUME\ - 0x22b0eafeL, 0x96e3, 0x11d2, 0xac, 0x4c, 0x0, 0xc0, 0x4f, 0x8e, 0xfb, 0x68 -DEFINE_GUIDSTRUCT("22B0EAFE-96E3-11d2-AC4C-00C04F8EFB68", KSAUDFNAME_MONO_MIX_VOLUME); -#define KSAUDFNAME_MONO_MIX_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_MONO_MIX_VOLUME) - -#define STATIC_KSAUDFNAME_MONO_MIX_MUTE\ - 0x2bc31d69L, 0x96e3, 0x11d2, 0xac, 0x4c, 0x0, 0xc0, 0x4f, 0x8e, 0xfb, 0x68 -DEFINE_GUIDSTRUCT("2BC31D69-96E3-11d2-AC4C-00C04F8EFB68", KSAUDFNAME_MONO_MIX_MUTE); -#define KSAUDFNAME_MONO_MIX_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_MONO_MIX_MUTE) - -#define STATIC_KSAUDFNAME_MICROPHONE_BOOST\ - 0x2bc31d6aL, 0x96e3, 0x11d2, 0xac, 0x4c, 0x0, 0xc0, 0x4f, 0x8e, 0xfb, 0x68 -DEFINE_GUIDSTRUCT("2BC31D6A-96E3-11d2-AC4C-00C04F8EFB68", KSAUDFNAME_MICROPHONE_BOOST); -#define KSAUDFNAME_MICROPHONE_BOOST DEFINE_GUIDNAMED(KSAUDFNAME_MICROPHONE_BOOST) - -#define STATIC_KSAUDFNAME_ALTERNATE_MICROPHONE\ - 0x2bc31d6bL, 0x96e3, 0x11d2, 0xac, 0x4c, 0x0, 0xc0, 0x4f, 0x8e, 0xfb, 0x68 -DEFINE_GUIDSTRUCT("2BC31D6B-96E3-11d2-AC4C-00C04F8EFB68", KSAUDFNAME_ALTERNATE_MICROPHONE); -#define KSAUDFNAME_ALTERNATE_MICROPHONE DEFINE_GUIDNAMED(KSAUDFNAME_ALTERNATE_MICROPHONE) - -#define STATIC_KSAUDFNAME_3D_DEPTH\ - 0x63ff5747L, 0x991f, 0x11d2, 0xac, 0x4d, 0x0, 0xc0, 0x4f, 0x8e, 0xfb, 0x68 -DEFINE_GUIDSTRUCT("63FF5747-991F-11d2-AC4D-00C04F8EFB68", KSAUDFNAME_3D_DEPTH); -#define KSAUDFNAME_3D_DEPTH DEFINE_GUIDNAMED(KSAUDFNAME_3D_DEPTH) - -#define STATIC_KSAUDFNAME_3D_CENTER\ - 0x9f0670b4L, 0x991f, 0x11d2, 0xac, 0x4d, 0x0, 0xc0, 0x4f, 0x8e, 0xfb, 0x68 -DEFINE_GUIDSTRUCT("9F0670B4-991F-11d2-AC4D-00C04F8EFB68", KSAUDFNAME_3D_CENTER); -#define KSAUDFNAME_3D_CENTER DEFINE_GUIDNAMED(KSAUDFNAME_3D_CENTER) - -#define STATIC_KSAUDFNAME_VIDEO_VOLUME\ - 0x9b46e708L, 0x992a, 0x11d2, 0xac, 0x4d, 0x0, 0xc0, 0x4f, 0x8e, 0xfb, 0x68 -DEFINE_GUIDSTRUCT("9B46E708-992A-11d2-AC4D-00C04F8EFB68", KSAUDFNAME_VIDEO_VOLUME); -#define KSAUDFNAME_VIDEO_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_VIDEO_VOLUME) - -#define STATIC_KSAUDFNAME_VIDEO_MUTE\ - 0x9b46e709L, 0x992a, 0x11d2, 0xac, 0x4d, 0x0, 0xc0, 0x4f, 0x8e, 0xfb, 0x68 -DEFINE_GUIDSTRUCT("9B46E709-992A-11d2-AC4D-00C04F8EFB68", KSAUDFNAME_VIDEO_MUTE); -#define KSAUDFNAME_VIDEO_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_VIDEO_MUTE) - -#define STATIC_KSAUDFNAME_VIDEO\ - 0x915daec4L, 0xa434, 0x11d2, 0xac, 0x52, 0x0, 0xc0, 0x4f, 0x8e, 0xfb, 0x68 -DEFINE_GUIDSTRUCT("915DAEC4-A434-11d2-AC52-00C04F8EFB68", KSAUDFNAME_VIDEO); -#define KSAUDFNAME_VIDEO DEFINE_GUIDNAMED(KSAUDFNAME_VIDEO) - -#define STATIC_KSAUDFNAME_PEAKMETER\ - 0x57e24340L, 0xfc5b, 0x4612, 0xa5, 0x62, 0x72, 0xb1, 0x1a, 0x29, 0xdf, 0xae -DEFINE_GUIDSTRUCT("57E24340-FC5B-4612-A562-72B11A29DFAE", KSAUDFNAME_PEAKMETER); -#define KSAUDFNAME_PEAKMETER DEFINE_GUIDNAMED(KSAUDFNAME_PEAKMETER) - -// Internal topology node pin definitions - -#define KSNODEPIN_STANDARD_IN 1 -#define KSNODEPIN_STANDARD_OUT 0 - -#define KSNODEPIN_SUM_MUX_IN 1 // can be >= 1 -#define KSNODEPIN_SUM_MUX_OUT 0 - -#define KSNODEPIN_DEMUX_IN 0 -#define KSNODEPIN_DEMUX_OUT 1 // can be >= 1 - -#define KSNODEPIN_AEC_RENDER_IN 1 -#define KSNODEPIN_AEC_RENDER_OUT 0 -#define KSNODEPIN_AEC_CAPTURE_IN 2 -#define KSNODEPIN_AEC_CAPTURE_OUT 3 - -//=========================================================================== -//=========================================================================== - -#define STATIC_KSMETHODSETID_Wavetable\ - 0xDCEF31EBL, 0xD907, 0x11D0, 0x95, 0x83, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 -DEFINE_GUIDSTRUCT("DCEF31EB-D907-11D0-9583-00C04FB925D3", KSMETHODSETID_Wavetable); -#define KSMETHODSETID_Wavetable DEFINE_GUIDNAMED(KSMETHODSETID_Wavetable) - -typedef enum { - KSMETHOD_WAVETABLE_WAVE_ALLOC, - KSMETHOD_WAVETABLE_WAVE_FREE, - KSMETHOD_WAVETABLE_WAVE_FIND, - KSMETHOD_WAVETABLE_WAVE_WRITE -} KSMETHOD_WAVETABLE; - -typedef struct { - KSIDENTIFIER Identifier; // wave identifier - ULONG Size; // wave size - BOOL Looped; // wave looped flag - ULONG LoopPoint; // wave loop point - BOOL InROM; // wave InROM flag - KSDATAFORMAT Format; // wave format -} KSWAVETABLE_WAVE_DESC, *PKSWAVETABLE_WAVE_DESC; - - -//=========================================================================== -//=========================================================================== - -/* - Property sets and items -*/ - -//=========================================================================== -//=========================================================================== - -#define STATIC_KSPROPSETID_Acoustic_Echo_Cancel\ - 0xd7a4af8bL, 0x3dc1, 0x4902, 0x91, 0xea, 0x8a, 0x15, 0xc9, 0x0e, 0x05, 0xb2 -DEFINE_GUIDSTRUCT("D7A4AF8B-3DC1-4902-91EA-8A15C90E05B2", KSPROPSETID_Acoustic_Echo_Cancel); -#define KSPROPSETID_Acoustic_Echo_Cancel DEFINE_GUIDNAMED(KSPROPSETID_Acoustic_Echo_Cancel) - -typedef enum { - KSPROPERTY_AEC_NOISE_FILL_ENABLE = 0, - KSPROPERTY_AEC_STATUS, - KSPROPERTY_AEC_MODE -} KSPROPERTY_AEC; - -#define AEC_STATUS_FD_HISTORY_UNINITIALIZED 0x0 -#define AEC_STATUS_FD_HISTORY_CONTINUOUSLY_CONVERGED 0x1 -#define AEC_STATUS_FD_HISTORY_PREVIOUSLY_DIVERGED 0x2 -#define AEC_STATUS_FD_CURRENTLY_CONVERGED 0x8 - -#define AEC_MODE_PASS_THROUGH 0x0 -#define AEC_MODE_HALF_DUPLEX 0x1 -#define AEC_MODE_FULL_DUPLEX 0x2 - -//=========================================================================== -//=========================================================================== - -#define STATIC_KSPROPSETID_Wave_Queued\ - 0x16a15b10L, 0x16f0, 0x11d0, 0xa1, 0x95, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4 -DEFINE_GUIDSTRUCT("16a15b10-16f0-11d0-a195-0020afd156e4", KSPROPSETID_Wave_Queued); -#define KSPROPSETID_Wave_Queued DEFINE_GUIDNAMED(KSPROPSETID_Wave_Queued) - -#define KSPROPERTY_WAVE_QUEUED_POSITION 0x00000001 - -#define STATIC_KSMETHODSETID_Wave_Queued\ - 0x7432c160L, 0x8827, 0x11cf, 0xa1, 0x02, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4 -DEFINE_GUIDSTRUCT("7432c160-8827-11cf-a102-0020afd156e4", KSMETHODSETID_Wave_Queued); -#define KSMETHODSETID_Wave_Queued DEFINE_GUIDNAMED(KSMETHODSETID_Wave_Queued) - -#define KSMETHOD_WAVE_QUEUED_BREAKLOOP 0x00000001 - -#define STATIC_KSPROPSETID_Wave\ - 0x924e54b0L, 0x630f, 0x11cf, 0xad, 0xa7, 0x08, 0x00, 0x3e, 0x30, 0x49, 0x4a -DEFINE_GUIDSTRUCT("924e54b0-630f-11cf-ada7-08003e30494a", KSPROPSETID_Wave); -#define KSPROPSETID_Wave DEFINE_GUIDNAMED(KSPROPSETID_Wave) - -typedef enum { - KSPROPERTY_WAVE_COMPATIBLE_CAPABILITIES, - KSPROPERTY_WAVE_INPUT_CAPABILITIES, - KSPROPERTY_WAVE_OUTPUT_CAPABILITIES, - KSPROPERTY_WAVE_BUFFER, - KSPROPERTY_WAVE_FREQUENCY, - KSPROPERTY_WAVE_VOLUME, - KSPROPERTY_WAVE_PAN -} KSPROPERTY_WAVE; - -typedef struct { - ULONG ulDeviceType; -} KSWAVE_COMPATCAPS, *PKSWAVE_COMPATCAPS; - -#define KSWAVE_COMPATCAPS_INPUT 0x00000000 -#define KSWAVE_COMPATCAPS_OUTPUT 0x00000001 - -typedef struct { - ULONG MaximumChannelsPerConnection; - ULONG MinimumBitsPerSample; - ULONG MaximumBitsPerSample; - ULONG MinimumSampleFrequency; - ULONG MaximumSampleFrequency; - ULONG TotalConnections; - ULONG ActiveConnections; -} KSWAVE_INPUT_CAPABILITIES, *PKSWAVE_INPUT_CAPABILITIES; - -typedef struct { - ULONG MaximumChannelsPerConnection; - ULONG MinimumBitsPerSample; - ULONG MaximumBitsPerSample; - ULONG MinimumSampleFrequency; - ULONG MaximumSampleFrequency; - ULONG TotalConnections; - ULONG StaticConnections; - ULONG StreamingConnections; - ULONG ActiveConnections; - ULONG ActiveStaticConnections; - ULONG ActiveStreamingConnections; - ULONG Total3DConnections; - ULONG Static3DConnections; - ULONG Streaming3DConnections; - ULONG Active3DConnections; - ULONG ActiveStatic3DConnections; - ULONG ActiveStreaming3DConnections; - ULONG TotalSampleMemory; - ULONG FreeSampleMemory; - ULONG LargestFreeContiguousSampleMemory; -} KSWAVE_OUTPUT_CAPABILITIES, *PKSWAVE_OUTPUT_CAPABILITIES; - -typedef struct { - LONG LeftAttenuation; - LONG RightAttenuation; -} KSWAVE_VOLUME, *PKSWAVE_VOLUME; - -#define KSWAVE_BUFFER_ATTRIBUTEF_LOOPING 0x00000001 -#define KSWAVE_BUFFER_ATTRIBUTEF_STATIC 0x00000002 - -typedef struct { - ULONG Attributes; - ULONG BufferSize; - PVOID BufferAddress; -} KSWAVE_BUFFER, *PKSWAVE_BUFFER; - -//=========================================================================== -//=========================================================================== - -#define STATIC_KSMUSIC_TECHNOLOGY_PORT\ - 0x86C92E60L, 0x62E8, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 -DEFINE_GUIDSTRUCT("86C92E60-62E8-11CF-A5D6-28DB04C10000", KSMUSIC_TECHNOLOGY_PORT); -#define KSMUSIC_TECHNOLOGY_PORT DEFINE_GUIDNAMED(KSMUSIC_TECHNOLOGY_PORT) - -#define STATIC_KSMUSIC_TECHNOLOGY_SQSYNTH\ - 0x0ECF4380L, 0x62E9, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 -DEFINE_GUIDSTRUCT("0ECF4380-62E9-11CF-A5D6-28DB04C10000", KSMUSIC_TECHNOLOGY_SQSYNTH); -#define KSMUSIC_TECHNOLOGY_SQSYNTH DEFINE_GUIDNAMED(KSMUSIC_TECHNOLOGY_SQSYNTH) - -#define STATIC_KSMUSIC_TECHNOLOGY_FMSYNTH\ - 0x252C5C80L, 0x62E9, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 -DEFINE_GUIDSTRUCT("252C5C80-62E9-11CF-A5D6-28DB04C10000", KSMUSIC_TECHNOLOGY_FMSYNTH); -#define KSMUSIC_TECHNOLOGY_FMSYNTH DEFINE_GUIDNAMED(KSMUSIC_TECHNOLOGY_FMSYNTH) - -#define STATIC_KSMUSIC_TECHNOLOGY_WAVETABLE\ - 0x394EC7C0L, 0x62E9, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 -DEFINE_GUIDSTRUCT("394EC7C0-62E9-11CF-A5D6-28DB04C10000", KSMUSIC_TECHNOLOGY_WAVETABLE); -#define KSMUSIC_TECHNOLOGY_WAVETABLE DEFINE_GUIDNAMED(KSMUSIC_TECHNOLOGY_WAVETABLE) - -#define STATIC_KSMUSIC_TECHNOLOGY_SWSYNTH\ - 0x37407736L, 0x3620, 0x11D1, 0x85, 0xD3, 0x00, 0x00, 0xF8, 0x75, 0x43, 0x80 -DEFINE_GUIDSTRUCT("37407736-3620-11D1-85D3-0000F8754380", KSMUSIC_TECHNOLOGY_SWSYNTH); -#define KSMUSIC_TECHNOLOGY_SWSYNTH DEFINE_GUIDNAMED(KSMUSIC_TECHNOLOGY_SWSYNTH) - -#define STATIC_KSPROPSETID_WaveTable\ - 0x8539E660L, 0x62E9, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 -DEFINE_GUIDSTRUCT("8539E660-62E9-11CF-A5D6-28DB04C10000", KSPROPSETID_WaveTable); -#define KSPROPSETID_WaveTable DEFINE_GUIDNAMED(KSPROPSETID_WaveTable) - -typedef enum { - KSPROPERTY_WAVETABLE_LOAD_SAMPLE, - KSPROPERTY_WAVETABLE_UNLOAD_SAMPLE, - KSPROPERTY_WAVETABLE_MEMORY, - KSPROPERTY_WAVETABLE_VERSION -} KSPROPERTY_WAVETABLE; - -typedef struct { - KSDATARANGE DataRange; - GUID Technology; - ULONG Channels; - ULONG Notes; - ULONG ChannelMask; -} KSDATARANGE_MUSIC, *PKSDATARANGE_MUSIC; - -//=========================================================================== - -#define STATIC_KSEVENTSETID_Cyclic\ - 0x142C1AC0L, 0x072A, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 -DEFINE_GUIDSTRUCT("142C1AC0-072A-11D0-A5D6-28DB04C10000", KSEVENTSETID_Cyclic); -#define KSEVENTSETID_Cyclic DEFINE_GUIDNAMED(KSEVENTSETID_Cyclic) - -typedef enum { - KSEVENT_CYCLIC_TIME_INTERVAL, -} KSEVENT_CYCLIC_TIME; - -#define STATIC_KSPROPSETID_Cyclic\ - 0x3FFEAEA0L, 0x2BEE, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 -DEFINE_GUIDSTRUCT("3FFEAEA0-2BEE-11CF-A5D6-28DB04C10000", KSPROPSETID_Cyclic); -#define KSPROPSETID_Cyclic DEFINE_GUIDNAMED(KSPROPSETID_Cyclic) - -typedef enum { - KSPROPERTY_CYCLIC_POSITION, -} KSPROPERTY_CYCLIC; - -//=========================================================================== -#define STATIC_KSEVENTSETID_AudioControlChange\ - 0xE85E9698L, 0xFA2F, 0x11D1, 0x95, 0xBD, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 -DEFINE_GUIDSTRUCT("E85E9698-FA2F-11D1-95BD-00C04FB925D3", KSEVENTSETID_AudioControlChange); -#define KSEVENTSETID_AudioControlChange DEFINE_GUIDNAMED(KSEVENTSETID_AudioControlChange) - -typedef enum { - KSEVENT_CONTROL_CHANGE, -} KSEVENT_AUDIO_CONTROL_CHANGE; - -//=========================================================================== - -#define STATIC_KSEVENTSETID_LoopedStreaming\ - 0x4682B940L, 0xC6EF, 0x11D0, 0x96, 0xD8, 0x00, 0xAA, 0x00, 0x51, 0xE5, 0x1D -DEFINE_GUIDSTRUCT("4682B940-C6EF-11D0-96D8-00AA0051E51D", KSEVENTSETID_LoopedStreaming); -#define KSEVENTSETID_LoopedStreaming DEFINE_GUIDNAMED(KSEVENTSETID_LoopedStreaming) - -typedef enum { - KSEVENT_LOOPEDSTREAMING_POSITION, -} KSEVENT_LOOPEDSTREAMING; - -typedef struct { - KSEVENTDATA KsEventData; -#if defined(_NTDDK_) - ULONGLONG Position; -#else // !_NTDDK_ - DWORDLONG Position; -#endif // !_NTDDK_ -} LOOPEDSTREAMING_POSITION_EVENT_DATA, *PLOOPEDSTREAMING_POSITION_EVENT_DATA ; - -// @@BEGIN_DDKSPLIT -//=========================================================================== -#define STATIC_KSEVENTSETID_Sysaudio \ - 0x04800320L, 0x4491, 0x11D1, 0xA0, 0x50, 0x40, 0x57, 0x05, 0xC1, 0x00, 0x00 -DEFINE_GUIDSTRUCT("04800320-4491-11D1-A050-405705C10000", KSEVENTSETID_Sysaudio); -#define KSEVENTSETID_Sysaudio DEFINE_GUIDNAMED(KSEVENTSETID_Sysaudio) - -typedef enum { - KSEVENT_SYSAUDIO_ADDREMOVE_DEVICE, - KSEVENT_SYSAUDIO_CHANGE_DEVICE -} KSEVENT_SYSAUDIO; -// @@END_DDKSPLIT - -//=========================================================================== -#define STATIC_KSPROPSETID_Sysaudio\ - 0xCBE3FAA0L, 0xCC75, 0x11D0, 0xB4, 0x65, 0x00, 0x00, 0x1A, 0x18, 0x18, 0xE6 -DEFINE_GUIDSTRUCT("CBE3FAA0-CC75-11D0-B465-00001A1818E6", KSPROPSETID_Sysaudio); -#define KSPROPSETID_Sysaudio DEFINE_GUIDNAMED(KSPROPSETID_Sysaudio) - -typedef enum { - KSPROPERTY_SYSAUDIO_DEVICE_COUNT = 1, - KSPROPERTY_SYSAUDIO_DEVICE_FRIENDLY_NAME = 2, - KSPROPERTY_SYSAUDIO_DEVICE_INSTANCE = 3, - KSPROPERTY_SYSAUDIO_DEVICE_INTERFACE_NAME = 4, - KSPROPERTY_SYSAUDIO_SELECT_GRAPH = 5, - KSPROPERTY_SYSAUDIO_CREATE_VIRTUAL_SOURCE = 6, - KSPROPERTY_SYSAUDIO_DEVICE_DEFAULT = 7, -// @@BEGIN_DDKSPLIT - KSPROPERTY_SYSAUDIO_ALWAYS_CREATE_VIRTUAL_SOURCE = 8, - KSPROPERTY_SYSAUDIO_ADDREMOVE_LOCK = 9, - KSPROPERTY_SYSAUDIO_ADDREMOVE_UNLOCK = 10, - KSPROPERTY_SYSAUDIO_RENDER_PIN_INSTANCES = 11, - KSPROPERTY_SYSAUDIO_RENDER_CONNECTION_INDEX = 12, - KSPROPERTY_SYSAUDIO_CREATE_VIRTUAL_SOURCE_ONLY = 13, -// @@END_DDKSPLIT - KSPROPERTY_SYSAUDIO_INSTANCE_INFO = 14, -// @@BEGIN_DDKSPLIT - KSPROPERTY_SYSAUDIO_PREFERRED_DEVICE = 15, -// @@END_DDKSPLIT - KSPROPERTY_SYSAUDIO_COMPONENT_ID = 16, -// @@BEGIN_DDKSPLIT - KSPROPERTY_SYSAUDIO_ADDREMOVE_GFX = 17 -// @@END_DDKSPLIT -} KSPROPERTY_SYSAUDIO; - -typedef struct { - KSPROPERTY Property; - GUID PinCategory; - GUID PinName; -} SYSAUDIO_CREATE_VIRTUAL_SOURCE, *PSYSAUDIO_CREATE_VIRTUAL_SOURCE; - -// @@BEGIN_DDKSPLIT -typedef struct { - BOOL Enable; - HANDLE hGfx; - ULONG ulOrder; // Order of the GFX - ULONG ulType; // Type of the GFX - ULONG ulFlags; - ULONG ulDeviceNameOffset; // DeviceInterface on which this GFX needs to be attached - ULONG ulFriendlyNameOffset; // Friendly name of the GFX -} SYSAUDIO_GFX, *PSYSAUDIO_GFX; - -#define GFX_DEVICETYPE_RENDER 1 -#define GFX_DEVICETYPE_CAPTURE 2 -// @@END_DDKSPLIT - -typedef struct { - KSPROPERTY Property; - ULONG PinId; - ULONG NodeId; - ULONG Flags; - ULONG Reserved; -} SYSAUDIO_SELECT_GRAPH, *PSYSAUDIO_SELECT_GRAPH; - -typedef struct { - KSPROPERTY Property; - ULONG Flags; - ULONG DeviceNumber; -} SYSAUDIO_INSTANCE_INFO, *PSYSAUDIO_INSTANCE_INFO; - -#define SYSAUDIO_FLAGS_DONT_COMBINE_PINS 0x00000001 - -// @@BEGIN_DDKSPLIT -typedef struct { - KSPROPERTY Property; - ULONG Flags; - ULONG Index; // KSPROPERTY_SYSAUDIO_DEFAULT_TYPE -} SYSAUDIO_PREFERRED_DEVICE, *PSYSAUDIO_PREFERRED_DEVICE; - -#define SYSAUDIO_FLAGS_CLEAR_PREFERRED 0x00000002 -// @@END_DDKSPLIT - -#define STATIC_KSPROPSETID_Sysaudio_Pin \ - 0xA3A53220L, 0xC6E4, 0x11D0, 0xB4, 0x65, 0x00, 0x00, 0x1A, 0x18, 0x18, 0xE6 -DEFINE_GUIDSTRUCT("A3A53220-C6E4-11D0-B465-00001A1818E6", KSPROPSETID_Sysaudio_Pin); -#define KSPROPSETID_Sysaudio_Pin DEFINE_GUIDNAMED(KSPROPSETID_Sysaudio_Pin) - -typedef enum { -// @@BEGIN_DDKSPLIT - KSPROPERTY_SYSAUDIO_TOPOLOGY_CONNECTION_INDEX = 0, -// @@END_DDKSPLIT - KSPROPERTY_SYSAUDIO_ATTACH_VIRTUAL_SOURCE = 1, -// @@BEGIN_DDKSPLIT - KSPROPERTY_SYSAUDIO_PIN_VOLUME_NODE = 2 -// @@END_DDKSPLIT -} KSPROPERTY_SYSAUDIO_PIN; - -typedef struct { - KSPROPERTY Property; - ULONG MixerPinId; - ULONG Reserved; -} SYSAUDIO_ATTACH_VIRTUAL_SOURCE, *PSYSAUDIO_ATTACH_VIRTUAL_SOURCE; - -//=========================================================================== -typedef struct { - KSPROPERTY Property; - ULONG NodeId; - ULONG Reserved; -} KSNODEPROPERTY, *PKSNODEPROPERTY; - -typedef struct { - KSNODEPROPERTY NodeProperty; - LONG Channel; // value to get or set - ULONG Reserved; -} KSNODEPROPERTY_AUDIO_CHANNEL, *PKSNODEPROPERTY_AUDIO_CHANNEL; - -typedef struct { - KSNODEPROPERTY NodeProperty; - ULONG DevSpecificId; - ULONG DeviceInfo; - ULONG Length; -} KSNODEPROPERTY_AUDIO_DEV_SPECIFIC, *PKSNODEPROPERTY_AUDIO_DEV_SPECIFIC; - -typedef struct { - KSNODEPROPERTY NodeProperty; - PVOID ListenerId; -#ifndef _WIN64 - ULONG Reserved; -#endif // _WIN64 -} KSNODEPROPERTY_AUDIO_3D_LISTENER, *PKSNODEPROPERTY_AUDIO_3D_LISTENER; - -typedef struct { - KSNODEPROPERTY NodeProperty; - PVOID AppContext; - ULONG Length; -#ifndef _WIN64 - ULONG Reserved; -#endif // _WIN64 -} KSNODEPROPERTY_AUDIO_PROPERTY, *PKSNODEPROPERTY_AUDIO_PROPERTY; - -//=========================================================================== -// {79A9312E-59AE-43b0-A350-8B05284CAB24} -#define STATIC_KSPROPSETID_AudioGfx\ - 0x79a9312eL, 0x59ae, 0x43b0, 0xa3, 0x50, 0x8b, 0x5, 0x28, 0x4c, 0xab, 0x24 -DEFINE_GUIDSTRUCT("79A9312E-59AE-43b0-A350-8B05284CAB24", KSPROPSETID_AudioGfx); -#define KSPROPSETID_AudioGfx DEFINE_GUIDNAMED(KSPROPSETID_AudioGfx) - -typedef enum { - KSPROPERTY_AUDIOGFX_RENDERTARGETDEVICEID, - KSPROPERTY_AUDIOGFX_CAPTURETARGETDEVICEID -} KSPROPERTY_AUDIOGFX; - -//=========================================================================== - -#define STATIC_KSPROPSETID_Linear\ - 0x5A2FFE80L, 0x16B9, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 -DEFINE_GUIDSTRUCT("5A2FFE80-16B9-11D0-A5D6-28DB04C10000", KSPROPSETID_Linear); -#define KSPROPSETID_Linear DEFINE_GUIDNAMED(KSPROPSETID_Linear) - -typedef enum { - KSPROPERTY_LINEAR_POSITION, -} KSPROPERTY_LINEAR; - -//=========================================================================== - -// -// Midi definitions -// - -/* - Formats -*/ - -#define STATIC_KSDATAFORMAT_TYPE_MUSIC\ - 0xE725D360L, 0x62CC, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 -DEFINE_GUIDSTRUCT("E725D360-62CC-11CF-A5D6-28DB04C10000", KSDATAFORMAT_TYPE_MUSIC); -#define KSDATAFORMAT_TYPE_MUSIC DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_MUSIC) - -// 'mids' == MEDIATYPE_Midi -#define STATIC_KSDATAFORMAT_TYPE_MIDI\ - 0x7364696DL, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 -DEFINE_GUIDSTRUCT("7364696D-0000-0010-8000-00aa00389b71", KSDATAFORMAT_TYPE_MIDI); -#define KSDATAFORMAT_TYPE_MIDI DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_MIDI) - -#define STATIC_KSDATAFORMAT_SUBTYPE_MIDI\ - 0x1D262760L, 0xE957, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 -DEFINE_GUIDSTRUCT("1D262760-E957-11CF-A5D6-28DB04C10000", KSDATAFORMAT_SUBTYPE_MIDI); -#define KSDATAFORMAT_SUBTYPE_MIDI DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_MIDI) - -#define STATIC_KSDATAFORMAT_SUBTYPE_MIDI_BUS\ - 0x2CA15FA0L, 0x6CFE, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 -DEFINE_GUIDSTRUCT("2CA15FA0-6CFE-11CF-A5D6-28DB04C10000", KSDATAFORMAT_SUBTYPE_MIDI_BUS); -#define KSDATAFORMAT_SUBTYPE_MIDI_BUS DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_MIDI_BUS) - -#define STATIC_KSDATAFORMAT_SUBTYPE_RIFFMIDI\ - 0x4995DAF0L, 0x9EE6, 0x11D0, 0xA4, 0x0E, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 -DEFINE_GUIDSTRUCT("4995DAF0-9EE6-11D0-A40E-00A0C9223196", KSDATAFORMAT_SUBTYPE_RIFFMIDI); -#define KSDATAFORMAT_SUBTYPE_RIFFMIDI DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_RIFFMIDI) - -/* - KSDATAFORMAT_SUBTYPE_DIRECTMUSIC - see DMusicKS.h -*/ - -// WARNING! This structure MUST be dword aligned -// regardless of the number of data bytes. - -typedef struct { - ULONG TimeDeltaMs; // Delta Milliseconds from the previous midiformat - // in the packet. The first midiformat in the packet - // is a delta from the PTS in the KSSTREAM_HEADER. - ULONG ByteCount; // Number of bytes of data that follow this struct. -} KSMUSICFORMAT, *PKSMUSICFORMAT; - -// -// This entire set of MPEG Standard/Dialect Guids are obsolete. Do not use them. -// -//==================================================================================================== -//==================================================================================================== -// The following official MPEG Formats, Subtypes and Specifiers are listed as required or optional -// These official MPEG GUIDs are the preferred method of supporting MPEG/AC-3 media types in new code. -// Older MPEG GUIDs should also be supported for compatibilty, but these new modes are still required. -//==================================================================================================== -//==================================================================================================== - -/* -This is a summary of what media types/specifiers will be required for all DVD+DSS+DVB+DTV MPEG decoders. -These media types are what the decoder driver must accept, hardware support for all of these media types -may or may not actually be provided by the decoder natively. These media types are intended to define -the "officially" supported MPEG/AC-3 media types that all WHQL certified decoders must implement. This -specifically includes driver and/or hardware support for all the required standards and dialects. - -All MPEG video decoders must support all of the MPEG video modes shown as [required] below. -All MPEG audio decoders must support all of the MPEG audio modes shown as [required] below. -All AC-3 audio decoders must support all of the AC-3 audio modes shown as [required] below. -The line items shown as [optional] need not be implemented, but are possible formats that might be implemented. - -Note that the input/output pin formats are defined by 2 or 3 GUIDs: TYPE, SUBTYPE, and maybe SPECIFIER. -The specifiers are included if the data format is a "dialect" that needs to be differentiated during decoding. -The decoder MUST be prepared to deal with ALL requests for _required_ "Standard" formats OR _required_ "Dialects". - -STATIC_KSDATAFORMAT_TYPE_STANDARD_ELEMENTARY_STREAM [required] - STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_VIDEO [required] - STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_VIDEO [optional] - STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_AUDIO [required] - STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_AUDIO [optional] - STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_VIDEO [required] - STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_VIDEO [required] - STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_AUDIO [required] - STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_AUDIO [optional] - STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_AC3_AUDIO [required] - STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_AC3_AUDIO [optional] -STATIC_KSDATAFORMAT_TYPE_STANDARD_PES_PACKET [required] - STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_VIDEO [optional] - STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_VIDEO [optional] - STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_AUDIO [optional] - STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_AUDIO [optional] - STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_VIDEO [required] - STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_VIDEO [required] - STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_AUDIO [required] - STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_AUDIO [required] - STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_AC3_AUDIO [required] - STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_AC3_AUDIO [optional] -STATIC_KSDATAFORMAT_TYPE_STANDARD_PACK_HEADER [required] - STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_VIDEO [required] - STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_VIDEO [required] - STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_AUDIO [required] - STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_AUDIO [optional] - STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_AC3_AUDIO [required] - STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_AC3_AUDIO [optional] - -Note that the SPECIFIER GUIDs normally identify particular versions of MPEG such as DSS and DVD. -This approach was taken to minimize the number of DSS/DVB/DVD/DTV etc. media SUBTYPES. -These specifiers are currently required to disambiguate MPEG syntax _parsing_ by the decoder -using alternate parsing routines or downloadable firmware or hardware decode settings. - -In the future these specifiers will be extended to cover new KS MPEG flavors such as DVB and DTV. -Thus, the optional specifiers will be subject to clarification and/or definition as they are needed. - -Important note: Per the ITU MPEG specs, MPEG 2 media may contain pure MPEG 1 syntax and -any "MPEG 2" PES packets may actually contain MPEG 1 payloads and MPEG 1 syntax. Some MPEG -broadcasts can revert from MPEG2 to MPEG1 format data at their discretion, without warning. - -CAUTION: Decoders MUST attempt to process MPEG data AS SOON AS POSSIBLE after reception. -In particular, elementary MPEG or MPEG PES packet streams should not be aggregated into DVD -"pack headers" internally before submission to the codec hardware if AT ALL POSSIBLE. The -reason is that mpeg data may need to be processed immediately but there may be no additional -MPEG data forthcoming to fill up the PES packet OR DVD "pack" in a timely fashion. This is -particularly true of MPEG dialects that utilize "repeat field signally" to reuse the last -decoded MPEG video field. - -*/ - -///////////////////////////////////////////////////////////////////////// -// The major data type GUIDs that define the data packet encapsulation // -///////////////////////////////////////////////////////////////////////// - -// STATIC_KSDATAFORMAT_TYPE_STANDARD_ELEMENTARY_STREAM -#define STATIC_KSDATAFORMAT_TYPE_STANDARD_ELEMENTARY_STREAM \ - 0x36523b11L, 0x8ee5, 0x11d1, 0x8c, 0xa3, 0x00, 0x60, 0xb0, 0x57, 0x66, 0x4a -DEFINE_GUIDSTRUCT("36523B11-8EE5-11d1-8CA3-0060B057664A", KSDATAFORMAT_TYPE_STANDARD_ELEMENTARY_STREAM ); -#define KSDATAFORMAT_TYPE_STANDARD_ELEMENTARY_STREAM DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_STANDARD_ELEMENTARY_STREAM) - -// STATIC_KSDATAFORMAT_TYPE_STANDARD_PES_PACKET -#define STATIC_KSDATAFORMAT_TYPE_STANDARD_PES_PACKET \ - 0x36523b12L, 0x8ee5, 0x11d1, 0x8c, 0xa3, 0x00, 0x60, 0xb0, 0x57, 0x66, 0x4a -DEFINE_GUIDSTRUCT("36523B12-8EE5-11d1-8CA3-0060B057664A", KSDATAFORMAT_TYPE_STANDARD_PES_PACKET ); -#define KSDATAFORMAT_TYPE_STANDARD_PES_PACKET DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_STANDARD_PES_PACKET) - -// STATIC_KSDATAFORMAT_TYPE_STANDARD_PACK_HEADER -#define STATIC_KSDATAFORMAT_TYPE_STANDARD_PACK_HEADER \ - 0x36523b13L, 0x8ee5, 0x11d1, 0x8c, 0xa3, 0x00, 0x60, 0xb0, 0x57, 0x66, 0x4a -DEFINE_GUIDSTRUCT("36523B13-8EE5-11d1-8CA3-0060B057664A", KSDATAFORMAT_TYPE_STANDARD_PACK_HEADER ); -#define KSDATAFORMAT_TYPE_STANDARD_PACK_HEADER DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_STANDARD_PACK_HEADER) - -/////////////////////////////////////////////////////////////////////////////// -// The minor data subtype GUIDs that define the exact class of the data type.// -/////////////////////////////////////////////////////////////////////////////// - -// STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_VIDEO -#define STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_VIDEO \ - 0x36523b21L, 0x8ee5, 0x11d1, 0x8c, 0xa3, 0x00, 0x60, 0xb0, 0x57, 0x66, 0x4a -DEFINE_GUIDSTRUCT("36523B21-8EE5-11d1-8CA3-0060B057664A", KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_VIDEO ); -#define KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_VIDEO DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_VIDEO) - -// STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_AUDIO -#define STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_AUDIO \ - 0x36523b22L, 0x8ee5, 0x11d1, 0x8c, 0xa3, 0x00, 0x60, 0xb0, 0x57, 0x66, 0x4a -DEFINE_GUIDSTRUCT("36523B22-8EE5-11d1-8CA3-0060B057664A", KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_AUDIO ); -#define KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_AUDIO) - -// STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_VIDEO -#define STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_VIDEO \ - 0x36523b23L, 0x8ee5, 0x11d1, 0x8c, 0xa3, 0x00, 0x60, 0xb0, 0x57, 0x66, 0x4a -DEFINE_GUIDSTRUCT("36523B23-8EE5-11d1-8CA3-0060B057664A", KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_VIDEO ); -#define KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_VIDEO DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_VIDEO) - -// STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_AUDIO -#define STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_AUDIO \ - 0x36523b24L, 0x8ee5, 0x11d1, 0x8c, 0xa3, 0x00, 0x60, 0xb0, 0x57, 0x66, 0x4a -DEFINE_GUIDSTRUCT("36523B24-8EE5-11d1-8CA3-0060B057664A", KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_AUDIO ); -#define KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_AUDIO) - -// STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_AC3_AUDIO -#define STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_AC3_AUDIO \ - 0x36523b25L, 0x8ee5, 0x11d1, 0x8c, 0xa3, 0x00, 0x60, 0xb0, 0x57, 0x66, 0x4a -DEFINE_GUIDSTRUCT("36523B25-8EE5-11d1-8CA3-0060B057664A", KSDATAFORMAT_SUBTYPE_STANDARD_AC3_AUDIO ); -#define KSDATAFORMAT_SUBTYPE_STANDARD_AC3_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_STANDARD_AC3_AUDIO) - -/////////////////////////////////////////////////////////////////////////////// -// The low-level specifier GUIDs that define the flavor of the data subtype. // -// Some SUBTYPES, notably MPEG2_VIDEO, MPEG2_AUDIO have different dialects. // -// These specifiers are intended to be accompanied by a specifier structure. // -/////////////////////////////////////////////////////////////////////////////// - -// STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_VIDEO -#define STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_VIDEO \ - 0x36523b31L, 0x8ee5, 0x11d1, 0x8c, 0xa3, 0x00, 0x60, 0xb0, 0x57, 0x66, 0x4a -DEFINE_GUIDSTRUCT("36523B31-8EE5-11d1-8CA3-0060B057664A", KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_VIDEO ); -#define KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_VIDEO DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_VIDEO) - -// STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_AUDIO -#define STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_AUDIO \ - 0x36523b32L, 0x8ee5, 0x11d1, 0x8c, 0xa3, 0x00, 0x60, 0xb0, 0x57, 0x66, 0x4a -DEFINE_GUIDSTRUCT("36523B32-8EE5-11d1-8CA3-0060B057664A", KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_AUDIO ); -#define KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_AUDIO) - -// STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_VIDEO Associated with KS_MPEGVIDEOINFO2 defined later -#define STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_VIDEO \ - 0x36523b33L, 0x8ee5, 0x11d1, 0x8c, 0xa3, 0x00, 0x60, 0xb0, 0x57, 0x66, 0x4a -DEFINE_GUIDSTRUCT("36523B33-8EE5-11d1-8CA3-0060B057664A", KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_VIDEO ); -#define KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_VIDEO DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_VIDEO) - -// STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_AUDIO Associated with KS_MPEGAUDIOINFO defined later -#define STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_AUDIO \ - 0x36523b34L, 0x8ee5, 0x11d1, 0x8c, 0xa3, 0x00, 0x60, 0xb0, 0x57, 0x66, 0x4a -DEFINE_GUIDSTRUCT("36523B34-8EE5-11d1-8CA3-0060B057664A", KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_AUDIO ); -#define KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_AUDIO) - -// STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_AC3_AUDIO -#define STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_AC3_AUDIO \ - 0x36523b35L, 0x8ee5, 0x11d1, 0x8c, 0xa3, 0x00, 0x60, 0xb0, 0x57, 0x66, 0x4a -DEFINE_GUIDSTRUCT("36523B35-8EE5-11d1-8CA3-0060B057664A", KSDATAFORMAT_SPECIFIER_DIALECT_AC3_AUDIO ); -#define KSDATAFORMAT_SPECIFIER_DIALECT_AC3_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_DIALECT_AC3_AUDIO) - -//==================================================================================================== -//==================================================================================================== -// *** COMPATIBILITY WARNING *** -// The *following* older DSS, MPEG, DVD & AC-3 GUID definitions are retained for backward compability. -// These MPEG GUIDs should also be supported for compatibilty, but the above newer modes are still required. -//==================================================================================================== -//==================================================================================================== - -// -// DSS definitions -// - -#define STATIC_KSDATAFORMAT_SUBTYPE_DSS_VIDEO\ - 0xa0af4f81L, 0xe163, 0x11d0, 0xba, 0xd9, 0x00, 0x60, 0x97, 0x44, 0x11, 0x1a -DEFINE_GUIDSTRUCT("a0af4f81-e163-11d0-bad9-00609744111a", KSDATAFORMAT_SUBTYPE_DSS_VIDEO); -#define KSDATAFORMAT_SUBTYPE_DSS_VIDEO DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_DSS_VIDEO) - -#define STATIC_KSDATAFORMAT_SUBTYPE_DSS_AUDIO\ - 0xa0af4f82L, 0xe163, 0x11d0, 0xba, 0xd9, 0x00, 0x60, 0x97, 0x44, 0x11, 0x1a -DEFINE_GUIDSTRUCT("a0af4f82-e163-11d0-bad9-00609744111a", KSDATAFORMAT_SUBTYPE_DSS_AUDIO); -#define KSDATAFORMAT_SUBTYPE_DSS_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_DSS_AUDIO) - -// -// End of obsolete MPEG definitions. -// - -// -// mpeg 1 definitions -// -#define STATIC_KSDATAFORMAT_SUBTYPE_MPEG1Packet\ - 0xe436eb80, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70 -DEFINE_GUIDSTRUCT("e436eb80-524f-11ce-9F53-0020af0ba770", KSDATAFORMAT_SUBTYPE_MPEG1Packet); -#define KSDATAFORMAT_SUBTYPE_MPEG1Packet DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_MPEG1Packet) - -#define STATIC_KSDATAFORMAT_SUBTYPE_MPEG1Payload\ - 0xe436eb81, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70 -DEFINE_GUIDSTRUCT("e436eb81-524f-11ce-9F53-0020af0ba770", KSDATAFORMAT_SUBTYPE_MPEG1Payload); -#define KSDATAFORMAT_SUBTYPE_MPEG1Payload DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_MPEG1Payload) - -// MEDIASUBTYPE_MPEG1Video -#define STATIC_KSDATAFORMAT_SUBTYPE_MPEG1Video\ - 0xe436eb86, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70 -DEFINE_GUIDSTRUCT("e436eb86-524f-11ce-9f53-0020af0ba770", KSDATAFORMAT_SUBTYPE_MPEG1Video); -#define KSDATAFORMAT_SUBTYPE_MPEG1Video DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_MPEG1Video) - -//FORMAT_MPEGVideo -#define STATIC_KSDATAFORMAT_SPECIFIER_MPEG1_VIDEO\ - 0x05589f82L, 0xc356, 0x11ce, 0xbf, 0x01, 0x00, 0xaa, 0x00, 0x55, 0x59, 0x5a -DEFINE_GUIDSTRUCT("05589f82-c356-11ce-bf01-00aa0055595a", KSDATAFORMAT_SPECIFIER_MPEG1_VIDEO); -#define KSDATAFORMAT_SPECIFIER_MPEG1_VIDEO DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_MPEG1_VIDEO) - -// -// mpeg 2 definitions -// -#define STATIC_KSDATAFORMAT_TYPE_MPEG2_PES\ - 0xe06d8020L, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x5f, 0x6c, 0xbb, 0xea -DEFINE_GUIDSTRUCT("e06d8020-db46-11cf-b4d1-00805f6cbbea", KSDATAFORMAT_TYPE_MPEG2_PES); -#define KSDATAFORMAT_TYPE_MPEG2_PES DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_MPEG2_PES) - -#define STATIC_KSDATAFORMAT_TYPE_MPEG2_PROGRAM\ - 0xe06d8022L, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x5f, 0x6c, 0xbb, 0xea -DEFINE_GUIDSTRUCT("e06d8022-db46-11cf-b4d1-00805f6cbbea", KSDATAFORMAT_TYPE_MPEG2_PROGRAM); -#define KSDATAFORMAT_TYPE_MPEG2_PROGRAM DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_MPEG2_PROGRAM) - -#define STATIC_KSDATAFORMAT_TYPE_MPEG2_TRANSPORT\ - 0xe06d8023L, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x5f, 0x6c, 0xbb, 0xea -DEFINE_GUIDSTRUCT("e06d8023-db46-11cf-b4d1-00805f6cbbea", KSDATAFORMAT_TYPE_MPEG2_TRANSPORT); -#define KSDATAFORMAT_TYPE_MPEG2_TRANSPORT DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_MPEG2_TRANSPORT) - -#define STATIC_KSDATAFORMAT_SUBTYPE_MPEG2_VIDEO\ - 0xe06d8026L, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x5f, 0x6c, 0xbb, 0xea -DEFINE_GUIDSTRUCT("e06d8026-db46-11cf-b4d1-00805f6cbbea", KSDATAFORMAT_SUBTYPE_MPEG2_VIDEO); -#define KSDATAFORMAT_SUBTYPE_MPEG2_VIDEO DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_MPEG2_VIDEO) - -// use MPEGVIDEOINFO2 (defined below) with KSDATAFORMAT_SPECIFIER_MPEG2_VIDEO -#define STATIC_KSDATAFORMAT_SPECIFIER_MPEG2_VIDEO\ - 0xe06d80e3L, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x5f, 0x6c, 0xbb, 0xea -DEFINE_GUIDSTRUCT("e06d80e3-db46-11cf-b4d1-00805f6cbbea", KSDATAFORMAT_SPECIFIER_MPEG2_VIDEO); -#define KSDATAFORMAT_SPECIFIER_MPEG2_VIDEO DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_MPEG2_VIDEO) - - -// -// Mpeg2 video properties -// - - -#define STATIC_KSPROPSETID_Mpeg2Vid\ - 0xC8E11B60L, 0x0CC9, 0x11D0, 0xBD, 0x69, 0x00, 0x35, 0x05, 0xC1, 0x03, 0xA9 -DEFINE_GUIDSTRUCT("C8E11B60-0CC9-11D0-BD69-003505C103A9", KSPROPSETID_Mpeg2Vid); -#define KSPROPSETID_Mpeg2Vid DEFINE_GUIDNAMED( KSPROPSETID_Mpeg2Vid ) - - -typedef enum { - KSPROPERTY_MPEG2VID_MODES, // available output modes of decoder - KSPROPERTY_MPEG2VID_CUR_MODE, // current mode of the decoder - KSPROPERTY_MPEG2VID_4_3_RECT, // output coordinates for 4:3 source - KSPROPERTY_MPEG2VID_16_9_RECT, // output coordinates for 16:9 source - KSPROPERTY_MPEG2VID_16_9_PANSCAN, // pan and scan vectors -} KSPROPERTY_MPEG2VID; - -// -// bit field definitions for MPEG2 VIDEO mode -// - -#define KSMPEGVIDMODE_PANSCAN 0x0001 -#define KSMPEGVIDMODE_LTRBOX 0x0002 -#define KSMPEGVIDMODE_SCALE 0x0004 - -// -// rectangle definitions for the 4/3 and 16/9 cropping properties of -// the MPEG2Video decoder -// - -typedef struct _KSMPEGVID_RECT { - ULONG StartX; - ULONG StartY; - ULONG EndX; - ULONG EndY; -} KSMPEGVID_RECT, *PKSMPEGVID_RECT; - -// -// Params for pan / scan -// - - -// -// MPEG2 Audio definition -// - -#define STATIC_KSDATAFORMAT_SUBTYPE_MPEG2_AUDIO\ - 0xe06d802bL, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x5f, 0x6c, 0xbb, 0xea -DEFINE_GUIDSTRUCT("e06d802b-db46-11cf-b4d1-00805f6cbbea", KSDATAFORMAT_SUBTYPE_MPEG2_AUDIO); -#define KSDATAFORMAT_SUBTYPE_MPEG2_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_MPEG2_AUDIO) - -#define STATIC_KSDATAFORMAT_SPECIFIER_MPEG2_AUDIO\ - 0xe06d80e5L, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x5f, 0x6c, 0xbb, 0xea -DEFINE_GUIDSTRUCT("e06d80e5-db46-11cf-b4d1-00805f6cbbea", KSDATAFORMAT_SPECIFIER_MPEG2_AUDIO); -#define KSDATAFORMAT_SPECIFIER_MPEG2_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_MPEG2_AUDIO) - -// -// DVD LPCM Audio definition -// - -#define STATIC_KSDATAFORMAT_SUBTYPE_LPCM_AUDIO\ - 0xe06d8032L, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x5f, 0x6c, 0xbb, 0xea -DEFINE_GUIDSTRUCT("e06d8032-db46-11cf-b4d1-00805f6cbbea", KSDATAFORMAT_SUBTYPE_LPCM_AUDIO); -#define KSDATAFORMAT_SUBTYPE_LPCM_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_LPCM_AUDIO) - -#define STATIC_KSDATAFORMAT_SPECIFIER_LPCM_AUDIO\ - 0xe06d80e6L, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x5f, 0x6c, 0xbb, 0xea -DEFINE_GUIDSTRUCT("e06d80e6-db46-11cf-b4d1-00805f6cbbea", KSDATAFORMAT_SPECIFIER_LPCM_AUDIO); -#define KSDATAFORMAT_SPECIFIER_LPCM_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_LPCM_AUDIO) - -// -// AC-3 definition -// - -#define STATIC_KSDATAFORMAT_SUBTYPE_AC3_AUDIO\ - 0xe06d802cL, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x5f, 0x6c, 0xbb, 0xea -DEFINE_GUIDSTRUCT("e06d802c-db46-11cf-b4d1-00805f6cbbea", KSDATAFORMAT_SUBTYPE_AC3_AUDIO); -#define KSDATAFORMAT_SUBTYPE_AC3_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_AC3_AUDIO) - -#define STATIC_KSDATAFORMAT_SPECIFIER_AC3_AUDIO\ - 0xe06d80e4L, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x5f, 0x6c, 0xbb, 0xea -DEFINE_GUIDSTRUCT("e06d80e4-db46-11cf-b4d1-00805f6cbbea", KSDATAFORMAT_SPECIFIER_AC3_AUDIO); -#define KSDATAFORMAT_SPECIFIER_AC3_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_AC3_AUDIO) - -#define STATIC_KSPROPSETID_AC3\ - 0xBFABE720L, 0x6E1F, 0x11D0, 0xBC, 0xF2, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00 -DEFINE_GUIDSTRUCT("BFABE720-6E1F-11D0-BCF2-444553540000", KSPROPSETID_AC3); -#define KSPROPSETID_AC3 DEFINE_GUIDNAMED(KSPROPSETID_AC3) - -typedef enum { - KSPROPERTY_AC3_ERROR_CONCEALMENT = 1, - KSPROPERTY_AC3_ALTERNATE_AUDIO, - KSPROPERTY_AC3_DOWNMIX, - KSPROPERTY_AC3_BIT_STREAM_MODE, - KSPROPERTY_AC3_DIALOGUE_LEVEL, - KSPROPERTY_AC3_LANGUAGE_CODE, - KSPROPERTY_AC3_ROOM_TYPE -} KSPROPERTY_AC3; - -typedef struct { - BOOL fRepeatPreviousBlock; - BOOL fErrorInCurrentBlock; -} KSAC3_ERROR_CONCEALMENT, *PKSAC3_ERROR_CONCEALMENT; - -typedef struct { - BOOL fStereo; - ULONG DualMode; -} KSAC3_ALTERNATE_AUDIO, *PKSAC3_ALTERNATE_AUDIO; - -#define KSAC3_ALTERNATE_AUDIO_1 1 -#define KSAC3_ALTERNATE_AUDIO_2 2 -#define KSAC3_ALTERNATE_AUDIO_BOTH 3 - -typedef struct { - BOOL fDownMix; - BOOL fDolbySurround; -} KSAC3_DOWNMIX, *PKSAC3_DOWNMIX; - -typedef struct { - LONG BitStreamMode; -} KSAC3_BIT_STREAM_MODE, *PKSAC3_BIT_STREAM_MODE; - -#define KSAC3_SERVICE_MAIN_AUDIO 0 -#define KSAC3_SERVICE_NO_DIALOG 1 -#define KSAC3_SERVICE_VISUALLY_IMPAIRED 2 -#define KSAC3_SERVICE_HEARING_IMPAIRED 3 -#define KSAC3_SERVICE_DIALOG_ONLY 4 -#define KSAC3_SERVICE_COMMENTARY 5 -#define KSAC3_SERVICE_EMERGENCY_FLASH 6 -#define KSAC3_SERVICE_VOICE_OVER 7 - -typedef struct { - ULONG DialogueLevel; -} KSAC3_DIALOGUE_LEVEL, *PKSAC3_DIALOGUE_LEVEL; - -typedef struct { - BOOL fLargeRoom; -} KSAC3_ROOM_TYPE, *PKSAC3_ROOM_TYPE; - - -// -// DTS and SDDS definitions (media subtype GUIDs) -// -#define STATIC_KSDATAFORMAT_SUBTYPE_DTS_AUDIO\ - 0xe06d8033L, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x5f, 0x6c, 0xbb, 0xea -DEFINE_GUIDSTRUCT("e06d8033-db46-11cf-b4d1-00805f6cbbea", KSDATAFORMAT_SUBTYPE_DTS_AUDIO); -#define KSDATAFORMAT_SUBTYPE_DTS_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_DTS_AUDIO) - -#define STATIC_KSDATAFORMAT_SUBTYPE_SDDS_AUDIO\ - 0xe06d8034L, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x5f, 0x6c, 0xbb, 0xea -DEFINE_GUIDSTRUCT("e06d8034-db46-11cf-b4d1-00805f6cbbea", KSDATAFORMAT_SUBTYPE_SDDS_AUDIO); -#define KSDATAFORMAT_SUBTYPE_SDDS_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_SDDS_AUDIO) - - -// -// audio decoder output properties -// - -#define STATIC_KSPROPSETID_AudioDecoderOut\ - 0x6ca6e020L, 0x43bd, 0x11d0, 0xbd, 0x6a, 0x00, 0x35, 0x05, 0xc1, 0x03, 0xa9 -DEFINE_GUIDSTRUCT("6ca6e020-43bd-11d0-bd6a-003505c103a9", KSPROPSETID_AudioDecoderOut); -#define KSPROPSETID_AudioDecoderOut DEFINE_GUIDNAMED(KSPROPSETID_AudioDecoderOut) - -typedef enum { - KSPROPERTY_AUDDECOUT_MODES, // available output modes of decoder - KSPROPERTY_AUDDECOUT_CUR_MODE, // current mode of the decoder -} KSPROPERTY_AUDDECOUT; - -#define KSAUDDECOUTMODE_STEREO_ANALOG 0x0001 -#define KSAUDDECOUTMODE_PCM_51 0x0002 -#define KSAUDDECOUTMODE_SPDIFF 0x0004 - - - -// -// subpicture definition -// - -#define STATIC_KSDATAFORMAT_SUBTYPE_SUBPICTURE\ - 0xe06d802dL, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x5f, 0x6c, 0xbb, 0xea -DEFINE_GUIDSTRUCT("e06d802d-db46-11cf-b4d1-00805f6cbbea", KSDATAFORMAT_SUBTYPE_SUBPICTURE); -#define KSDATAFORMAT_SUBTYPE_SUBPICTURE DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_SUBPICTURE) - - -#define STATIC_KSPROPSETID_DvdSubPic\ - 0xac390460L, 0x43af, 0x11d0, 0xbd, 0x6a, 0x00, 0x35, 0x05, 0xc1, 0x03, 0xa9 -DEFINE_GUIDSTRUCT("ac390460-43af-11d0-bd6a-003505c103a9", KSPROPSETID_DvdSubPic); -#define KSPROPSETID_DvdSubPic DEFINE_GUIDNAMED(KSPROPSETID_DvdSubPic) - -typedef enum { - KSPROPERTY_DVDSUBPIC_PALETTE, - KSPROPERTY_DVDSUBPIC_HLI, - KSPROPERTY_DVDSUBPIC_COMPOSIT_ON, // TRUE for subpicture is displayed -} KSPROPERTY_DVDSUBPIC; - -typedef struct _KS_DVD_YCrCb { - UCHAR Reserved; - UCHAR Y; - UCHAR Cr; - UCHAR Cb; -} KS_DVD_YCrCb, *PKS_DVD_YCrCb; - -/* The KS_DVD_YUV structure is now superseded by KS_DVD_YCrCb above and is - here for backward compatibility only */ - -typedef struct _KS_DVD_YUV { - UCHAR Reserved; - UCHAR Y; - UCHAR V; - UCHAR U; -} KS_DVD_YUV, *PKS_DVD_YUV; - -typedef struct _KSPROPERTY_SPPAL { - KS_DVD_YUV sppal[16]; -} KSPROPERTY_SPPAL, *PKSPROPERTY_SPPAL; - -typedef struct _KS_COLCON { - UCHAR emph1col:4; - UCHAR emph2col:4; - UCHAR backcol:4; - UCHAR patcol:4; - UCHAR emph1con:4; - UCHAR emph2con:4; - UCHAR backcon:4; - UCHAR patcon:4; - -} KS_COLCON, *PKS_COLCON; - -typedef struct _KSPROPERTY_SPHLI { - USHORT HLISS; - USHORT Reserved; - ULONG StartPTM; // start presentation time in x/90000 - ULONG EndPTM; // end PTM in x/90000 - USHORT StartX; - USHORT StartY; - USHORT StopX; - USHORT StopY; - KS_COLCON ColCon; // color contrast description (4 bytes as given in HLI) -} KSPROPERTY_SPHLI, *PKSPROPERTY_SPHLI; - -typedef BOOL KSPROPERTY_COMPOSIT_ON, *PKSPROPERTY_COMPOSIT_ON; - -#define STATIC_KSPROPSETID_CopyProt \ - 0x0E8A0A40L, 0x6AEF, 0x11D0, 0x9E, 0xD0, 0x00, 0xA0, 0x24, 0xCA, 0x19, 0xB3 -DEFINE_GUIDSTRUCT("0E8A0A40-6AEF-11D0-9ED0-00A024CA19B3", KSPROPSETID_CopyProt); -#define KSPROPSETID_CopyProt DEFINE_GUIDNAMED(KSPROPSETID_CopyProt) - -typedef enum { - - KSPROPERTY_DVDCOPY_CHLG_KEY = 0x01, - KSPROPERTY_DVDCOPY_DVD_KEY1, - KSPROPERTY_DVDCOPY_DEC_KEY2, - KSPROPERTY_DVDCOPY_TITLE_KEY, - KSPROPERTY_COPY_MACROVISION, - KSPROPERTY_DVDCOPY_REGION, - KSPROPERTY_DVDCOPY_SET_COPY_STATE, - KSPROPERTY_DVDCOPY_DISC_KEY = 0x80 - -} KSPROPERTY_COPYPROT; - -typedef struct _KS_DVDCOPY_CHLGKEY { - BYTE ChlgKey[10]; - BYTE Reserved[2]; -} KS_DVDCOPY_CHLGKEY, *PKS_DVDCOPY_CHLGKEY; - -typedef struct _KS_DVDCOPY_BUSKEY { - BYTE BusKey[5]; - BYTE Reserved[1]; -} KS_DVDCOPY_BUSKEY, *PKS_DVDCOPY_BUSKEY; - - -typedef struct _KS_DVDCOPY_DISCKEY { - BYTE DiscKey[2048]; -} KS_DVDCOPY_DISCKEY, *PKS_DVDCOPY_DISCKEY; - -typedef struct _KS_DVDCOPY_REGION { - UCHAR Reserved; - UCHAR RegionData; - UCHAR Reserved2[2]; -} KS_DVDCOPY_REGION, *PKS_DVDCOPY_REGION; - -typedef struct _KS_DVDCOPY_TITLEKEY { - ULONG KeyFlags; - ULONG ReservedNT[2]; - UCHAR TitleKey[6]; - UCHAR Reserved[2]; -} KS_DVDCOPY_TITLEKEY, *PKS_DVDCOPY_TITLEKEY; - -typedef struct _KS_COPY_MACROVISION { - ULONG MACROVISIONLevel; -} KS_COPY_MACROVISION, *PKS_COPY_MACROVISION; - -typedef struct _KS_DVDCOPY_SET_COPY_STATE { - ULONG DVDCopyState; -} KS_DVDCOPY_SET_COPY_STATE, *PKS_DVDCOPY_SET_COPY_STATE; - -typedef enum { - KS_DVDCOPYSTATE_INITIALIZE, // indicates we are starting a full - // copy protection sequence. - KS_DVDCOPYSTATE_INITIALIZE_TITLE, // indicates we are starting a title - // key copy protection sequence - KS_DVDCOPYSTATE_AUTHENTICATION_NOT_REQUIRED, - KS_DVDCOPYSTATE_AUTHENTICATION_REQUIRED, - KS_DVDCOPYSTATE_DONE, -} KS_DVDCOPYSTATE; - -typedef enum { - KS_MACROVISION_DISABLED, - KS_MACROVISION_LEVEL1, - KS_MACROVISION_LEVEL2, - KS_MACROVISION_LEVEL3 -} KS_COPY_MACROVISION_LEVEL, *PKS_COPY_MACROVISION_LEVEL; - -// -// CGMS Copy Protection Flags -// - -#define KS_DVD_CGMS_RESERVED_MASK 0x00000078 - -#define KS_DVD_CGMS_COPY_PROTECT_MASK 0x00000018 -#define KS_DVD_CGMS_COPY_PERMITTED 0x00000000 -#define KS_DVD_CGMS_COPY_ONCE 0x00000010 -#define KS_DVD_CGMS_NO_COPY 0x00000018 - -#define KS_DVD_COPYRIGHT_MASK 0x00000040 -#define KS_DVD_NOT_COPYRIGHTED 0x00000000 -#define KS_DVD_COPYRIGHTED 0x00000040 - -#define KS_DVD_SECTOR_PROTECT_MASK 0x00000020 -#define KS_DVD_SECTOR_NOT_PROTECTED 0x00000000 -#define KS_DVD_SECTOR_PROTECTED 0x00000020 - - -//=========================================================================== -// The following MUST match the structures in WinGDI.h and AMVideo.h -//=========================================================================== - -#define STATIC_KSCATEGORY_TVTUNER \ - 0xa799a800L, 0xa46d, 0x11d0, 0xa1, 0x8c, 0x00, 0xa0, 0x24, 0x01, 0xdc, 0xd4 -DEFINE_GUIDSTRUCT("a799a800-a46d-11d0-a18c-00a02401dcd4", KSCATEGORY_TVTUNER); -#define KSCATEGORY_TVTUNER DEFINE_GUIDNAMED(KSCATEGORY_TVTUNER) - -#define STATIC_KSCATEGORY_CROSSBAR \ - 0xa799a801L, 0xa46d, 0x11d0, 0xa1, 0x8c, 0x00, 0xa0, 0x24, 0x01, 0xdc, 0xd4 -DEFINE_GUIDSTRUCT("a799a801-a46d-11d0-a18c-00a02401dcd4", KSCATEGORY_CROSSBAR); -#define KSCATEGORY_CROSSBAR DEFINE_GUIDNAMED(KSCATEGORY_CROSSBAR) - -#define STATIC_KSCATEGORY_TVAUDIO \ - 0xa799a802L, 0xa46d, 0x11d0, 0xa1, 0x8c, 0x00, 0xa0, 0x24, 0x01, 0xdc, 0xd4 -DEFINE_GUIDSTRUCT("a799a802-a46d-11d0-a18c-00a02401dcd4", KSCATEGORY_TVAUDIO); -#define KSCATEGORY_TVAUDIO DEFINE_GUIDNAMED(KSCATEGORY_TVAUDIO) - -#define STATIC_KSCATEGORY_VPMUX \ - 0xa799a803L, 0xa46d, 0x11d0, 0xa1, 0x8c, 0x00, 0xa0, 0x24, 0x01, 0xdc, 0xd4 -DEFINE_GUIDSTRUCT("a799a803-a46d-11d0-a18c-00a02401dcd4", KSCATEGORY_VPMUX); -#define KSCATEGORY_VPMUX DEFINE_GUIDNAMED(KSCATEGORY_VPMUX) - -#define STATIC_KSCATEGORY_VBICODEC \ - 0x07dad660L, 0x22f1, 0x11d1, 0xa9, 0xf4, 0x00, 0xc0, 0x4f, 0xbb, 0xde, 0x8f -DEFINE_GUIDSTRUCT("07dad660-22f1-11d1-a9f4-00c04fbbde8f", KSCATEGORY_VBICODEC); -#define KSCATEGORY_VBICODEC DEFINE_GUIDNAMED(KSCATEGORY_VBICODEC) - -// SUBTYPE_VPVideo -#define STATIC_KSDATAFORMAT_SUBTYPE_VPVideo\ - 0x5a9b6a40L, 0x1a22, 0x11d1, 0xba, 0xd9, 0x0, 0x60, 0x97, 0x44, 0x11, 0x1a -DEFINE_GUIDSTRUCT("5a9b6a40-1a22-11d1-bad9-00609744111a", KSDATAFORMAT_SUBTYPE_VPVideo); -#define KSDATAFORMAT_SUBTYPE_VPVideo DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_VPVideo) - -// SUBTYPE_VPVBI -#define STATIC_KSDATAFORMAT_SUBTYPE_VPVBI\ - 0x5a9b6a41L, 0x1a22, 0x11d1, 0xba, 0xd9, 0x0, 0x60, 0x97, 0x44, 0x11, 0x1a -DEFINE_GUIDSTRUCT("5a9b6a41-1a22-11d1-bad9-00609744111a", KSDATAFORMAT_SUBTYPE_VPVBI); -#define KSDATAFORMAT_SUBTYPE_VPVBI DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_VPVBI) - - -// FORMAT_VideoInfo -#define STATIC_KSDATAFORMAT_SPECIFIER_VIDEOINFO\ - 0x05589f80L, 0xc356, 0x11ce, 0xbf, 0x01, 0x00, 0xaa, 0x00, 0x55, 0x59, 0x5a -DEFINE_GUIDSTRUCT("05589f80-c356-11ce-bf01-00aa0055595a", KSDATAFORMAT_SPECIFIER_VIDEOINFO); -#define KSDATAFORMAT_SPECIFIER_VIDEOINFO DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_VIDEOINFO) - -// FORMAT_VideoInfo2 -#define STATIC_KSDATAFORMAT_SPECIFIER_VIDEOINFO2\ - 0xf72a76A0L, 0xeb0a, 0x11d0, 0xac, 0xe4, 0x00, 0x00, 0xc0, 0xcc, 0x16, 0xba -DEFINE_GUIDSTRUCT("f72a76A0-eb0a-11d0-ace4-0000c0cc16ba", KSDATAFORMAT_SPECIFIER_VIDEOINFO2); -#define KSDATAFORMAT_SPECIFIER_VIDEOINFO2 DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_VIDEOINFO2) - -// MEDIATYPE_AnalogVideo -#define STATIC_KSDATAFORMAT_TYPE_ANALOGVIDEO\ - 0x0482dde1L, 0x7817, 0x11cf, 0x8a, 0x03, 0x00, 0xaa, 0x00, 0x6e, 0xcb, 0x65 -DEFINE_GUIDSTRUCT("0482dde1-7817-11cf-8a03-00aa006ecb65", KSDATAFORMAT_TYPE_ANALOGVIDEO); -#define KSDATAFORMAT_TYPE_ANALOGVIDEO DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_ANALOGVIDEO) - -// FORMAT_AnalogVideo -#define STATIC_KSDATAFORMAT_SPECIFIER_ANALOGVIDEO\ - 0x0482dde0L, 0x7817, 0x11cf, 0x8a, 0x03, 0x00, 0xaa, 0x00, 0x6e, 0xcb, 0x65 -DEFINE_GUIDSTRUCT("0482dde0-7817-11cf-8a03-00aa006ecb65", KSDATAFORMAT_SPECIFIER_ANALOGVIDEO); -#define KSDATAFORMAT_SPECIFIER_ANALOGVIDEO DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_ANALOGVIDEO) - -// MEDIATYPE_AnalogAudio -#define STATIC_KSDATAFORMAT_TYPE_ANALOGAUDIO \ - 0x0482dee1L, 0x7817, 0x11cf, 0x8a, 0x03, 0x00, 0xaa, 0x00, 0x6e, 0xcb, 0x65 -DEFINE_GUIDSTRUCT("0482DEE1-7817-11cf-8a03-00aa006ecb65", KSDATAFORMAT_TYPE_ANALOGAUDIO); -#define KSDATAFORMAT_TYPE_ANALOGAUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_ANALOGAUDIO) - -// FORMAT_VBI -#define STATIC_KSDATAFORMAT_SPECIFIER_VBI\ - 0xf72a76e0L, 0xeb0a, 0x11d0, 0xac, 0xe4, 0x00, 0x00, 0xc0, 0xcc, 0x16, 0xba -DEFINE_GUIDSTRUCT("f72a76e0-eb0a-11d0-ace4-0000c0cc16ba", KSDATAFORMAT_SPECIFIER_VBI); -#define KSDATAFORMAT_SPECIFIER_VBI DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_VBI) - -// MEDIATYPE_VBI -#define STATIC_KSDATAFORMAT_TYPE_VBI\ - 0xf72a76e1L, 0xeb0a, 0x11d0, 0xac, 0xe4, 0x00, 0x00, 0xc0, 0xcc, 0x16, 0xba -DEFINE_GUIDSTRUCT("f72a76e1-eb0a-11d0-ace4-0000c0cc16ba", KSDATAFORMAT_TYPE_VBI); -#define KSDATAFORMAT_TYPE_VBI DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_VBI) - -// SUBTYPE_RAW8 -#define STATIC_KSDATAFORMAT_SUBTYPE_RAW8\ - 0xca20d9a0, 0x3e3e, 0x11d1, 0x9b, 0xf9, 0x0, 0xc0, 0x4f, 0xbb, 0xde, 0xbf -DEFINE_GUIDSTRUCT("ca20d9a0-3e3e-11d1-9bf9-00c04fbbdebf", KSDATAFORMAT_SUBTYPE_RAW8); -#define KSDATAFORMAT_SUBTYPE_RAW8 DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_RAW8) - -// MEDIASUBTYPE_CC -#define STATIC_KSDATAFORMAT_SUBTYPE_CC\ - 0x33214cc1, 0x11f, 0x11d2, 0xb4, 0xb1, 0x0, 0xa0, 0xd1, 0x2, 0xcf, 0xbe -DEFINE_GUIDSTRUCT("33214CC1-011F-11D2-B4B1-00A0D102CFBE", KSDATAFORMAT_SUBTYPE_CC); -#define KSDATAFORMAT_SUBTYPE_CC DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_CC) - -// MEDIASUBTYPE_NABTS -#define STATIC_KSDATAFORMAT_SUBTYPE_NABTS\ - 0xf72a76e2L, 0xeb0a, 0x11d0, 0xac, 0xe4, 0x00, 0x00, 0xc0, 0xcc, 0x16, 0xba -DEFINE_GUIDSTRUCT("f72a76e2-eb0a-11d0-ace4-0000c0cc16ba", KSDATAFORMAT_SUBTYPE_NABTS); -#define KSDATAFORMAT_SUBTYPE_NABTS DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_NABTS) - -// MEDIASUBTYPE_TELETEXT -#define STATIC_KSDATAFORMAT_SUBTYPE_TELETEXT\ - 0xf72a76e3L, 0xeb0a, 0x11d0, 0xac, 0xe4, 0x00, 0x00, 0xc0, 0xcc, 0x16, 0xba -DEFINE_GUIDSTRUCT("f72a76e3-eb0a-11d0-ace4-0000c0cc16ba", KSDATAFORMAT_SUBTYPE_TELETEXT); -#define KSDATAFORMAT_SUBTYPE_TELETEXT DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_TELETEXT) - - - -/* constants for the biCompression field */ -#define KS_BI_RGB 0L -#define KS_BI_RLE8 1L -#define KS_BI_RLE4 2L -#define KS_BI_BITFIELDS 3L - -typedef struct tagKS_RGBQUAD { // rgbq - BYTE rgbBlue; - BYTE rgbGreen; - BYTE rgbRed; - BYTE rgbReserved; -} KS_RGBQUAD, *PKS_RGBQUAD; - -/* constants for palettes */ -#define KS_iPALETTE_COLORS 256 // Maximum colours in palette -#define KS_iEGA_COLORS 16 // Number colours in EGA palette -#define KS_iMASK_COLORS 3 // Maximum three components -#define KS_iTRUECOLOR 16 // Minimum true colour device -#define KS_iRED 0 // Index position for RED mask -#define KS_iGREEN 1 // Index position for GREEN mask -#define KS_iBLUE 2 // Index position for BLUE mask -#define KS_iPALETTE 8 // Maximum colour depth using a palette -#define KS_iMAXBITS 8 // Maximum bits per colour component -#define KS_SIZE_EGA_PALETTE (KS_iEGA_COLORS * sizeof(KS_RGBQUAD)) -#define KS_SIZE_PALETTE (KS_iPALETTE_COLORS * sizeof(KS_RGBQUAD)) - -typedef struct tagKS_BITMAPINFOHEADER{ - DWORD biSize; - LONG biWidth; - LONG biHeight; - WORD biPlanes; - WORD biBitCount; - DWORD biCompression; - DWORD biSizeImage; - LONG biXPelsPerMeter; - LONG biYPelsPerMeter; - DWORD biClrUsed; - DWORD biClrImportant; -} KS_BITMAPINFOHEADER, *PKS_BITMAPINFOHEADER; - -// Used for true colour images that also have a palette - -typedef struct tag_KS_TRUECOLORINFO { - DWORD dwBitMasks[KS_iMASK_COLORS]; - KS_RGBQUAD bmiColors[KS_iPALETTE_COLORS]; -} KS_TRUECOLORINFO, *PKS_TRUECOLORINFO; - - -#define KS_WIDTHBYTES(bits) ((DWORD)(((bits)+31) & (~31)) / 8) -#define KS_DIBWIDTHBYTES(bi) (DWORD)KS_WIDTHBYTES((DWORD)(bi).biWidth * (DWORD)(bi).biBitCount) -#define KS__DIBSIZE(bi) (KS_DIBWIDTHBYTES(bi) * (DWORD)(bi).biHeight) -#define KS_DIBSIZE(bi) ((bi).biHeight < 0 ? (-1)*(KS__DIBSIZE(bi)) : KS__DIBSIZE(bi)) - -typedef LONGLONG REFERENCE_TIME; - -// 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 tagKS_VIDEOINFOHEADER { - - 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) - - KS_BITMAPINFOHEADER bmiHeader; - -} KS_VIDEOINFOHEADER, *PKS_VIDEOINFOHEADER; - -// !!! WARNING !!! -// DO NOT use the following structure unless you are sure that the BITMAPINFOHEADER -// has a normal biSize == sizeof(BITMAPINFOHEADER) ! -// !!! WARNING !!! - -typedef struct tagKS_VIDEOINFO { - - 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) - - KS_BITMAPINFOHEADER bmiHeader; - - union { - KS_RGBQUAD bmiColors[KS_iPALETTE_COLORS]; // Colour palette - DWORD dwBitMasks[KS_iMASK_COLORS]; // True colour masks - KS_TRUECOLORINFO TrueColorInfo; // Both of the above - }; - -} KS_VIDEOINFO, *PKS_VIDEOINFO; - - -#define KS_SIZE_MASKS (KS_iMASK_COLORS * sizeof(DWORD)) -#define KS_SIZE_PREHEADER (FIELD_OFFSET(KS_VIDEOINFOHEADER,bmiHeader)) - -// For normal size -// #define KS_SIZE_VIDEOHEADER (sizeof(KS_BITMAPINFOHEADER) + KS_SIZE_PREHEADER) -// !!! for abnormal biSizes -#define KS_SIZE_VIDEOHEADER(pbmi) ((pbmi)->bmiHeader.biSize + KS_SIZE_PREHEADER) - -// VBI -// Used for NABTS, CC, Intercast, WST -typedef struct tagKS_VBIINFOHEADER { - ULONG StartLine; // inclusive - ULONG EndLine; // inclusive - ULONG SamplingFrequency; // Hz. - ULONG MinLineStartTime; // microSec * 100 from HSync LE - ULONG MaxLineStartTime; // microSec * 100 from HSync LE - ULONG ActualLineStartTime; // microSec * 100 from HSync LE - ULONG ActualLineEndTime; // microSec * 100 from HSync LE - ULONG VideoStandard; // KS_AnalogVideoStandard* - ULONG SamplesPerLine; - ULONG StrideInBytes; // May be > SamplesPerLine - ULONG BufferSize; // Bytes -} KS_VBIINFOHEADER, *PKS_VBIINFOHEADER; - -// VBI Sampling Rates -#define KS_VBIDATARATE_NABTS (5727272L) -#define KS_VBIDATARATE_CC ( 503493L) // ~= 1/1.986125e-6 -#define KS_VBISAMPLINGRATE_4X_NABTS ((long)(4*KS_VBIDATARATE_NABTS)) -#define KS_VBISAMPLINGRATE_47X_NABTS ((long)(27000000)) -#define KS_VBISAMPLINGRATE_5X_NABTS ((long)(5*KS_VBIDATARATE_NABTS)) - -#define KS_47NABTS_SCALER (KS_VBISAMPLINGRATE_47X_NABTS/(double)KS_VBIDATARATE_NABTS) - -// 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 tagKS_AnalogVideoInfo { - 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) -} KS_ANALOGVIDEOINFO, *PKS_ANALOGVIDEOINFO; - -//=========================================================================== -// Data packet passed on Analog video stream channel change -//=========================================================================== - -#define KS_TVTUNER_CHANGE_BEGIN_TUNE 0x0001L // Starting a tuning operation -#define KS_TVTUNER_CHANGE_END_TUNE 0x0002L // Ending a tuning operation - -typedef struct tagKS_TVTUNER_CHANGE_INFO { - DWORD dwFlags; // KS_TVTUNER_CHANGE_* - DWORD dwCountryCode; - DWORD dwAnalogVideoStandard; // KS_AnalogVideoStandard - DWORD dwChannel; -} KS_TVTUNER_CHANGE_INFO, *PKS_TVTUNER_CHANGE_INFO; - -//=========================================================================== -// Video format blocks -//=========================================================================== - -typedef enum { - KS_MPEG2Level_Low, - KS_MPEG2Level_Main, - KS_MPEG2Level_High1440, - KS_MPEG2Level_High -} KS_MPEG2Level; - -typedef enum { - KS_MPEG2Profile_Simple, - KS_MPEG2Profile_Main, - KS_MPEG2Profile_SNRScalable, - KS_MPEG2Profile_SpatiallyScalable, - KS_MPEG2Profile_High -} KS_MPEG2Profile; - -#define KS_INTERLACE_IsInterlaced 0x00000001 // if 0, other interlace bits are irrelevent -#define KS_INTERLACE_1FieldPerSample 0x00000002 // else 2 fields per media sample -#define KS_INTERLACE_Field1First 0x00000004 // else Field 2 is first; top field in PAL is field 1, top field in NTSC is field 2? -#define KS_INTERLACE_UNUSED 0x00000008 // -#define KS_INTERLACE_FieldPatternMask 0x00000030 // use this mask with AMINTERLACE_FieldPat* -#define KS_INTERLACE_FieldPatField1Only 0x00000000 // Data never contains a Field2 -#define KS_INTERLACE_FieldPatField2Only 0x00000010 // Data never contains a Field1 -#define KS_INTERLACE_FieldPatBothRegular 0x00000020 // There will be a Field2 for every Field1 (required for Weave?) -#define KS_INTERLACE_FieldPatBothIrregular 0x00000030 // Random pattern of Field1s and Field2s -#define KS_INTERLACE_DisplayModeMask 0x000000c0 -#define KS_INTERLACE_DisplayModeBobOnly 0x00000000 -#define KS_INTERLACE_DisplayModeWeaveOnly 0x00000040 -#define KS_INTERLACE_DisplayModeBobOrWeave 0x00000080 - - - -#define KS_MPEG2_DoPanScan 0x00000001 //if set, the MPEG-2 video decoder should crop output image - // based on pan-scan vectors in picture_display_extension - // and change the picture aspect ratio accordingly. -#define KS_MPEG2_DVDLine21Field1 0x00000002 //if set, the MPEG-2 decoder must be able to produce an output - // pin for DVD style closed caption data found in GOP layer of field 1 -#define KS_MPEG2_DVDLine21Field2 0x00000004 //if set, the MPEG-2 decoder must be able to produce an output - // pin for DVD style closed caption data found in GOP layer of field 2 -#define KS_MPEG2_SourceIsLetterboxed 0x00000008 //if set, indicates that black bars have been encoded in the top - // and bottom of the video. -#define KS_MPEG2_FilmCameraMode 0x00000010 //if set, indicates "film mode" used for 625/50 content. If cleared, - // indicates that "camera mode" was used. -#define KS_MPEG2_LetterboxAnalogOut 0x00000020 //if set and this stream is sent to an analog output, it should - // be letterboxed. Streams sent to VGA should be letterboxed only by renderers. -#define KS_MPEG2_DSS_UserData 0x00000040 //if set, the MPEG-2 decoder must process DSS style user data -#define KS_MPEG2_DVB_UserData 0x00000080 //if set, the MPEG-2 decoder must process DVB style user data -#define KS_MPEG2_27MhzTimebase 0x00000100 //if set, the PTS,DTS timestamps advance at 27MHz rather than 90KHz - -typedef struct tagKS_VIDEOINFOHEADER2 { - RECT rcSource; - RECT rcTarget; - DWORD dwBitRate; - DWORD dwBitErrorRate; - REFERENCE_TIME AvgTimePerFrame; - DWORD dwInterlaceFlags; // use AMINTERLACE_* defines. Reject connection if undefined bits are not 0 - DWORD dwCopyProtectFlags; // use AMCOPYPROTECT_* defines. Reject connection if undefined bits are not 0 - DWORD dwPictAspectRatioX; // X dimension of picture aspect ratio, e.g. 16 for 16x9 display - DWORD dwPictAspectRatioY; // Y dimension of picture aspect ratio, e.g. 9 for 16x9 display - DWORD dwReserved1; // must be 0; reject connection otherwise - DWORD dwReserved2; // must be 0; reject connection otherwise - KS_BITMAPINFOHEADER bmiHeader; -} KS_VIDEOINFOHEADER2, *PKS_VIDEOINFOHEADER2; - -typedef struct tagKS_MPEG1VIDEOINFO { - KS_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 -} KS_MPEG1VIDEOINFO, *PKS_MPEG1VIDEOINFO; - -#define KS_MAX_SIZE_MPEG1_SEQUENCE_INFO 140 -#define KS_SIZE_MPEG1VIDEOINFO(pv) (FIELD_OFFSET(KS_MPEG1VIDEOINFO, bSequenceHeader[0]) + (pv)->cbSequenceHeader) -#define KS_MPEG1_SEQUENCE_INFO(pv) ((const BYTE *)(pv)->bSequenceHeader) - -typedef struct tagKS_MPEGVIDEOINFO2 { - KS_VIDEOINFOHEADER2 hdr; - DWORD dwStartTimeCode; // ?? not used for DVD ?? - DWORD cbSequenceHeader; // is 0 for DVD (no sequence header) - DWORD dwProfile; // use enum MPEG2Profile - DWORD dwLevel; // use enum MPEG2Level - DWORD dwFlags; // use AMMPEG2_* defines. Reject connection if undefined bits are not 0 - DWORD bSequenceHeader[1]; // DWORD instead of Byte for alignment purposes - // For MPEG-2, if a sequence_header is included, the sequence_extension - // should also be included -} KS_MPEGVIDEOINFO2, *PKS_MPEGVIDEOINFO2; - - -#define KS_SIZE_MPEGVIDEOINFO2(pv) (FIELD_OFFSET(KS_MPEGVIDEOINFO2, bSequenceHeader[0]) + (pv)->cbSequenceHeader) -#define KS_MPEG1_SEQUENCE_INFO(pv) ((const BYTE *)(pv)->bSequenceHeader) - -//=========================================================================== -// Audio format blocks -//=========================================================================== - -//if set, the PTS,DTS timestamps advance at 27MHz rather than 90KHz -#define KS_MPEGAUDIOINFO_27MhzTimebase 0x00000001 - -typedef struct tagKS_MPEAUDIOINFO { - DWORD dwFlags; // use KS_MPEGAUDIOINFO_* defines. Reject connection if undefined bits are not 0 - DWORD dwReserved1; // must be 0; reject connection otherwise - DWORD dwReserved2; // must be 0; reject connection otherwise - DWORD dwReserved3; // must be 0; reject connection otherwise -} KS_MPEGAUDIOINFO, *PKS_MPEGAUDIOINFO; - -//=========================================================================== -// Video DATAFORMATs -//=========================================================================== - -typedef struct tagKS_DATAFORMAT_VIDEOINFOHEADER { - KSDATAFORMAT DataFormat; - KS_VIDEOINFOHEADER VideoInfoHeader; -} KS_DATAFORMAT_VIDEOINFOHEADER, *PKS_DATAFORMAT_VIDEOINFOHEADER; - -typedef struct tagKS_DATAFORMAT_VIDEOINFOHEADER2 { - KSDATAFORMAT DataFormat; - KS_VIDEOINFOHEADER2 VideoInfoHeader2; -} KS_DATAFORMAT_VIDEOINFOHEADER2, *PKS_DATAFORMAT_VIDEOINFOHEADER2; - -typedef struct tagKS_DATAFORMAT_VIDEOINFO_PALETTE { - KSDATAFORMAT DataFormat; - KS_VIDEOINFO VideoInfo; -} KS_DATAFORMAT_VIDEOINFO_PALETTE, *PKS_DATAFORMAT_VIDEOINFO_PALETTE; - -typedef struct tagKS_DATAFORMAT_VBIINFOHEADER { - KSDATAFORMAT DataFormat; - KS_VBIINFOHEADER VBIInfoHeader; -} KS_DATAFORMAT_VBIINFOHEADER, *PKS_DATAFORMAT_VBIINFOHEADER; - -typedef struct _KS_VIDEO_STREAM_CONFIG_CAPS { - GUID guid; // will be MEDIATYPE_Video - ULONG VideoStandard; // logical OR of all AnalogVideoStandards - // supported - SIZE InputSize; // the inherent size of the incoming signal - // (every pixel unique) - SIZE MinCroppingSize; // smallest rcSrc cropping rect allowed - SIZE MaxCroppingSize; // largest rcSrc cropping rect allowed - int CropGranularityX; // granularity of cropping size - int CropGranularityY; - int CropAlignX; // alignment of cropping rect - int CropAlignY; - SIZE MinOutputSize; // smallest bitmap stream can produce - SIZE MaxOutputSize; // largest bitmap stream can produce - int OutputGranularityX; // granularity of output bitmap size - int OutputGranularityY; - int StretchTapsX; // 0, no stretch, 1 pix dup, 2 interp, ... - int StretchTapsY; // Describes quality of hardware scaler - int ShrinkTapsX; // - int ShrinkTapsY; // - LONGLONG MinFrameInterval; // 100 nS units - LONGLONG MaxFrameInterval; - LONG MinBitsPerSecond; - LONG MaxBitsPerSecond; -} KS_VIDEO_STREAM_CONFIG_CAPS, *PKS_VIDEO_STREAM_CONFIG_CAPS; - -//=========================================================================== -// Video DATARANGEs -//=========================================================================== - -typedef struct tagKS_DATARANGE_VIDEO { - KSDATARANGE DataRange; - BOOL bFixedSizeSamples; // all samples same size? - BOOL bTemporalCompression; // all I frames? - DWORD StreamDescriptionFlags; // KS_VIDEO_DESC_* - DWORD MemoryAllocationFlags; // KS_VIDEO_ALLOC_* - KS_VIDEO_STREAM_CONFIG_CAPS ConfigCaps; - KS_VIDEOINFOHEADER VideoInfoHeader; // default format -} KS_DATARANGE_VIDEO, *PKS_DATARANGE_VIDEO; - -typedef struct tagKS_DATARANGE_VIDEO2 { - KSDATARANGE DataRange; - BOOL bFixedSizeSamples; // all samples same size? - BOOL bTemporalCompression; // all I frames? - DWORD StreamDescriptionFlags; // KS_VIDEO_DESC_* - DWORD MemoryAllocationFlags; // KS_VIDEO_ALLOC_* - KS_VIDEO_STREAM_CONFIG_CAPS ConfigCaps; - KS_VIDEOINFOHEADER2 VideoInfoHeader; // default format -} KS_DATARANGE_VIDEO2, *PKS_DATARANGE_VIDEO2; - -typedef struct tagKS_DATARANGE_MPEG1_VIDEO { - KSDATARANGE DataRange; - BOOL bFixedSizeSamples; // all samples same size? - BOOL bTemporalCompression; // all I frames? - DWORD StreamDescriptionFlags; // KS_VIDEO_DESC_* - DWORD MemoryAllocationFlags; // KS_VIDEO_ALLOC_* - KS_VIDEO_STREAM_CONFIG_CAPS ConfigCaps; - KS_MPEG1VIDEOINFO VideoInfoHeader; // default format -} KS_DATARANGE_MPEG1_VIDEO, *PKS_DATARANGE_MPEG1_VIDEO; - -typedef struct tagKS_DATARANGE_MPEG2_VIDEO { - KSDATARANGE DataRange; - BOOL bFixedSizeSamples; // all samples same size? - BOOL bTemporalCompression; // all I frames? - DWORD StreamDescriptionFlags; // KS_VIDEO_DESC_* - DWORD MemoryAllocationFlags; // KS_VIDEO_ALLOC_* - KS_VIDEO_STREAM_CONFIG_CAPS ConfigCaps; - KS_MPEGVIDEOINFO2 VideoInfoHeader; // default format -} KS_DATARANGE_MPEG2_VIDEO, *PKS_DATARANGE_MPEG2_VIDEO; - -typedef struct tagKS_DATARANGE_VIDEO_PALETTE { - KSDATARANGE DataRange; - BOOL bFixedSizeSamples; // all samples same size? - BOOL bTemporalCompression; // all I frames? - DWORD StreamDescriptionFlags; // KS_VIDEO_DESC_* - DWORD MemoryAllocationFlags; // KS_VIDEO_ALLOC_* - KS_VIDEO_STREAM_CONFIG_CAPS ConfigCaps; - KS_VIDEOINFO VideoInfo; // default format -} KS_DATARANGE_VIDEO_PALETTE, *PKS_DATARANGE_VIDEO_PALETTE; - -typedef struct tagKS_DATARANGE_VIDEO_VBI { - KSDATARANGE DataRange; - BOOL bFixedSizeSamples; // all samples same size? - BOOL bTemporalCompression; // all I frames? - DWORD StreamDescriptionFlags; // KS_VIDEO_DESC_* - DWORD MemoryAllocationFlags; // KS_VIDEO_ALLOC_* - KS_VIDEO_STREAM_CONFIG_CAPS ConfigCaps; - KS_VBIINFOHEADER VBIInfoHeader; // default format -} KS_DATARANGE_VIDEO_VBI, *PKS_DATARANGE_VIDEO_VBI; - -typedef struct tagKS_DATARANGE_ANALOGVIDEO { - KSDATARANGE DataRange; - KS_ANALOGVIDEOINFO AnalogVideoInfo; -} KS_DATARANGE_ANALOGVIDEO, *PKS_DATARANGE_ANALOGVIDEO; - -//=========================================================================== -// StreamDescriptionFlags -// -// These define the "purpose" of each video stream -//=========================================================================== - -#define KS_VIDEOSTREAM_PREVIEW 0x0001 // Preview stream -#define KS_VIDEOSTREAM_CAPTURE 0x0002 // Capture stream -#define KS_VIDEOSTREAM_VBI 0x0010 // Field1 VBI -#define KS_VIDEOSTREAM_NABTS 0x0020 // Field1 NABTS -#define KS_VIDEOSTREAM_CC 0x0100 // Closed Captioning -#define KS_VIDEOSTREAM_EDS 0x0200 // Extended Data Services -#define KS_VIDEOSTREAM_TELETEXT 0x0400 // Field1 Teletext only -#define KS_VIDEOSTREAM_STILL 0x1000 // Still image input -#define KS_VIDEOSTREAM_IS_VPE 0x8000 // Is a VPE based stream? - -// MemoryAllocationFlags -#define KS_VIDEO_ALLOC_VPE_SYSTEM 0x0001 // VPE surface in system memory -#define KS_VIDEO_ALLOC_VPE_DISPLAY 0x0002 // VPE surface in display memory -#define KS_VIDEO_ALLOC_VPE_AGP 0x0004 // VPE surface in AGP memory - -////////////////////////////////////////////////////////////// -// Capture driver VBI property sets -////////////////////////////////////////////////////////////// - -// {F162C607-7B35-496f-AD7F-2DCA3B46B718} -#define STATIC_KSPROPSETID_VBICAP_PROPERTIES\ - 0xf162c607, 0x7b35, 0x496f, 0xad, 0x7f, 0x2d, 0xca, 0x3b, 0x46, 0xb7, 0x18 -DEFINE_GUIDSTRUCT("F162C607-7B35-496f-AD7F-2DCA3B46B718", KSPROPSETID_VBICAP_PROPERTIES); -#define KSPROPSETID_VBICAP_PROPERTIES DEFINE_GUIDNAMED(KSPROPSETID_VBICAP_PROPERTIES) - -typedef enum { - KSPROPERTY_VBICAP_PROPERTIES_PROTECTION = 0x01, -} KSPROPERTY_VBICAP; - -typedef struct _VBICAP_PROPERTIES_PROTECTION_S { - KSPROPERTY Property; - ULONG StreamIndex; // Index of stream - ULONG Status; -} VBICAP_PROPERTIES_PROTECTION_S, *PVBICAP_PROPERTIES_PROTECTION_S; -#define KS_VBICAP_PROTECTION_MV_PRESENT 0x0001L -#define KS_VBICAP_PROTECTION_MV_HARDWARE 0x0002L -#define KS_VBICAP_PROTECTION_MV_DETECTED 0x0004L - - -/***************************************************************************/ -/* VBI Related GUIDs, structs and properties for codecs(generic, cc, nabts)*/ -/***************************************************************************/ - -/////////////////////////////////////////////////////////////////////////////////////// -// IP/NABTS Protocol Reserved Group IDs - Overall Range 0x800-0x8FF [Decimal 2048-2079] -// Intervening values(0-F) are used if there are multiple providers at a particular tier -/////////////////////////////////////////////////////////////////////////////////////// - -// Used by individual content creators in show footage/data -#define KS_NABTS_GROUPID_ORIGINAL_CONTENT_BASE 0x800 -#define KS_NABTS_GROUPID_ORIGINAL_CONTENT_ADVERTISER_BASE 0x810 - -// Used by production company in finished show data -#define KS_NABTS_GROUPID_PRODUCTION_COMPANY_CONTENT_BASE 0x820 -#define KS_NABTS_GROUPID_PRODUCTION_COMPANY_ADVERTISER_BASE 0x830 - -// Used by broadcast syndicates in syndicated show data -#define KS_NABTS_GROUPID_SYNDICATED_SHOW_CONTENT_BASE 0x840 -#define KS_NABTS_GROUPID_SYNDICATED_SHOW_ADVERTISER_BASE 0x850 - -// Used by tv networks in network television data -#define KS_NABTS_GROUPID_NETWORK_WIDE_CONTENT_BASE 0x860 -#define KS_NABTS_GROUPID_NETWORK_WIDE_ADVERTISER_BASE 0x870 - -// Used by telvision stations in local programming data -#define KS_NABTS_GROUPID_TELEVISION_STATION_CONTENT_BASE 0x880 -#define KS_NABTS_GROUPID_TELEVISION_STATION_ADVERTISER_BASE 0x890 - -// Used by cable system in cable head-end originated data -#define KS_NABTS_GROUPID_LOCAL_CABLE_SYSTEM_CONTENT_BASE 0x8A0 -#define KS_NABTS_GROUPID_LOCAL_CABLE_SYSTEM_ADVERTISER_BASE 0x8B0 - -// The values between 0x8C0 - 0x8EF are reserved for future expansion - -// Used by Microsoft for Testing purposes (0x8F0 - 0x8FF) -#define KS_NABTS_GROUPID_MICROSOFT_RESERVED_TEST_DATA_BASE 0x8F0 - -////////////////////////////////////////////////////////////// -// Stream Format FEC-corrected NABTS bundles -////////////////////////////////////////////////////////////// - -#define STATIC_KSDATAFORMAT_TYPE_NABTS \ - 0xe757bca0, 0x39ac, 0x11d1, 0xa9, 0xf5, 0x0, 0xc0, 0x4f, 0xbb, 0xde, 0x8f -DEFINE_GUIDSTRUCT("E757BCA0-39AC-11d1-A9F5-00C04FBBDE8F", KSDATAFORMAT_TYPE_NABTS); -#define KSDATAFORMAT_TYPE_NABTS DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_NABTS) - -#define STATIC_KSDATAFORMAT_SUBTYPE_NABTS_FEC \ - 0xe757bca1, 0x39ac, 0x11d1, 0xa9, 0xf5, 0x0, 0xc0, 0x4f, 0xbb, 0xde, 0x8f -DEFINE_GUIDSTRUCT("E757BCA1-39AC-11d1-A9F5-00C04FBBDE8F", KSDATAFORMAT_SUBTYPE_NABTS_FEC); -#define KSDATAFORMAT_SUBTYPE_NABTS_FEC DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_NABTS_FEC) - - -////////////////////////////////////////////////////////////// -// NABTS Bundle data structure definition -////////////////////////////////////////////////////////////// - -#define MAX_NABTS_VBI_LINES_PER_FIELD 11 -#define NABTS_LINES_PER_BUNDLE 16 -#define NABTS_PAYLOAD_PER_LINE 28 -#define NABTS_BYTES_PER_LINE 36 - -typedef struct _NABTSFEC_BUFFER { - ULONG dataSize; - USHORT groupID; - USHORT Reserved; - UCHAR data[NABTS_LINES_PER_BUNDLE * NABTS_PAYLOAD_PER_LINE]; -} NABTSFEC_BUFFER, *PNABTSFEC_BUFFER; - -////////////////////////////////////////////////////////////// -// vbi codec filtering pin properties -////////////////////////////////////////////////////////////// - -#define STATIC_KSPROPSETID_VBICodecFiltering \ - 0xcafeb0caL, 0x8715, 0x11d0, 0xbd, 0x6a, 0x00, 0x35, 0xc0, 0xed, 0xba, 0xbe -DEFINE_GUIDSTRUCT("cafeb0ca-8715-11d0-bd6a-0035c0edbabe", KSPROPSETID_VBICodecFiltering); -#define KSPROPSETID_VBICodecFiltering DEFINE_GUIDNAMED(KSPROPSETID_VBICodecFiltering) - -typedef enum { - KSPROPERTY_VBICODECFILTERING_SCANLINES_REQUESTED_BIT_ARRAY = 0x01, - KSPROPERTY_VBICODECFILTERING_SCANLINES_DISCOVERED_BIT_ARRAY, - KSPROPERTY_VBICODECFILTERING_SUBSTREAMS_REQUESTED_BIT_ARRAY, - KSPROPERTY_VBICODECFILTERING_SUBSTREAMS_DISCOVERED_BIT_ARRAY, - KSPROPERTY_VBICODECFILTERING_STATISTICS, -} KSPROPERTY_VBICODECFILTERING; - -typedef struct _VBICODECFILTERING_SCANLINES { - DWORD DwordBitArray[32]; // An array of scanline bits 0..1024(32*32) -} VBICODECFILTERING_SCANLINES, *PVBICODECFILTERING_SCANLINES; - -typedef struct _VBICODECFILTERING_NABTS_SUBSTREAMS { - DWORD SubstreamMask[128]; // An array of 4096 bits (one for each NABTS GroupID) -} VBICODECFILTERING_NABTS_SUBSTREAMS, *PVBICODECFILTERING_NABTS_SUBSTREAMS; - -typedef struct _VBICODECFILTERING_CC_SUBSTREAMS { - DWORD SubstreamMask; // An array of 32 bits (see KS_CC_SUBSTREAM *) -} VBICODECFILTERING_CC_SUBSTREAMS, *PVBICODECFILTERING_CC_SUBSTREAMS; - -// These KS_CC_SUBSTREAM_* bitmasks are used with VBICODECFILTERING_CC_SUBSTREAMS -#define KS_CC_SUBSTREAM_ODD 0x0001L // Unfiltered Field 1 Data -#define KS_CC_SUBSTREAM_EVEN 0x0002L // Unfiltered Field 2 Data - -// The following flags describe CC field 1 substreams: CC1,CC2,TT1,TT2 -#define KS_CC_SUBSTREAM_FIELD1_MASK 0x00F0L -#define KS_CC_SUBSTREAM_SERVICE_CC1 0x0010L -#define KS_CC_SUBSTREAM_SERVICE_CC2 0x0020L -#define KS_CC_SUBSTREAM_SERVICE_T1 0x0040L -#define KS_CC_SUBSTREAM_SERVICE_T2 0x0080L - -// The following flags describe CC field 2 substreams: CC3,CC4,TT3,TT4,XDS -#define KS_CC_SUBSTREAM_FIELD2_MASK 0x1F00L -#define KS_CC_SUBSTREAM_SERVICE_CC3 0x0100L -#define KS_CC_SUBSTREAM_SERVICE_CC4 0x0200L -#define KS_CC_SUBSTREAM_SERVICE_T3 0x0400L -#define KS_CC_SUBSTREAM_SERVICE_T4 0x0800L -#define KS_CC_SUBSTREAM_SERVICE_XDS 0x1000L - -// Special Note: field 1 or 2 substreams are usually on found on field 1 and 2 respectively -// If the VBI odd/even polarity is reversed, the correct filtered data will still be found. - -/////////////////////////////////////////////////////////////////// -// Hardware decoded CC stream format -/////////////////////////////////////////////////////////////////// - -#define CC_MAX_HW_DECODE_LINES 12 -typedef struct _CC_BYTE_PAIR { - BYTE Decoded[2]; - USHORT Reserved; -} CC_BYTE_PAIR, *PCC_BYTE_PAIR; - -typedef struct _CC_HW_FIELD { - VBICODECFILTERING_SCANLINES ScanlinesRequested; - ULONG fieldFlags; // KS_VBI_FLAG_FIELD1,2 - LONGLONG PictureNumber; - CC_BYTE_PAIR Lines[CC_MAX_HW_DECODE_LINES]; -} CC_HW_FIELD, *PCC_HW_FIELD; - -/////////////////////////////////////////////////////////////////// -// Raw NABTS stream format (TYPE_NABTS, SUBTYPE_NABTS) -/////////////////////////////////////////////////////////////////// - -// These low-level structures are byte packed( -Zp1 ) -#if !defined( PACK_PRAGMAS_NOT_SUPPORTED ) -#include -#endif -typedef struct _NABTS_BUFFER_LINE { - BYTE Confidence; - BYTE Bytes[NABTS_BYTES_PER_LINE]; -} NABTS_BUFFER_LINE, *PNABTS_BUFFER_LINE; - -#define NABTS_BUFFER_PICTURENUMBER_SUPPORT 1 -typedef struct _NABTS_BUFFER { - VBICODECFILTERING_SCANLINES ScanlinesRequested; - LONGLONG PictureNumber; - NABTS_BUFFER_LINE NabtsLines[MAX_NABTS_VBI_LINES_PER_FIELD]; -} NABTS_BUFFER, *PNABTS_BUFFER; -#if !defined( PACK_PRAGMAS_NOT_SUPPORTED ) -#include -#endif - -////////////////////////////////////////////////////////////// -// WST Codec Teletext Media Sample Format -////////////////////////////////////////////////////////////// - -#define WST_TVTUNER_CHANGE_BEGIN_TUNE 0x1000L // Starting a tuning operation -#define WST_TVTUNER_CHANGE_END_TUNE 0x2000L // Ending a tuning operation - -#define MAX_WST_VBI_LINES_PER_FIELD 17 -#define WST_BYTES_PER_LINE 42 - -typedef struct _WST_BUFFER_LINE { - BYTE Confidence; - BYTE Bytes[WST_BYTES_PER_LINE]; -} WST_BUFFER_LINE, *PWST_BUFFER_LINE; - -typedef struct _WST_BUFFER { - VBICODECFILTERING_SCANLINES ScanlinesRequested; - WST_BUFFER_LINE WstLines[MAX_WST_VBI_LINES_PER_FIELD]; -} WST_BUFFER, *PWST_BUFFER; - -// -// Common codec statistics -// - -typedef struct _VBICODECFILTERING_STATISTICS_COMMON { - DWORD InputSRBsProcessed; // upstream SRBs received - DWORD OutputSRBsProcessed; // downstream SRBs sent - DWORD SRBsIgnored; // SRBs ignored due to no requests - DWORD InputSRBsMissing; // SRBs dropped upstream - DWORD OutputSRBsMissing; // Output dropped because no SRB pending - DWORD OutputFailures; // dropped because of other failure - DWORD InternalErrors; // could not process due to int. failure - DWORD ExternalErrors; // could not process due to ext. failure - DWORD InputDiscontinuities; // discontinuities received - DWORD DSPFailures; // DSP confidence failure - DWORD TvTunerChanges; // number of received KS_TVTUNER_CHANGE_BEGIN_TUNE and KS_TVTUNER_CHANGE_END_TUNE pairs. - DWORD VBIHeaderChanges; // number of received KS_VBI_FLAG_VBIINFOHEADER_CHANGE - DWORD LineConfidenceAvg; // Average of all DSP confidence results - DWORD BytesOutput; // Bytes sent downstream -} VBICODECFILTERING_STATISTICS_COMMON, *PVBICODECFILTERING_STATISTICS_COMMON; - -typedef struct _VBICODECFILTERING_STATISTICS_COMMON_PIN { - DWORD SRBsProcessed; // SRBs sent/received - DWORD SRBsIgnored; // SRBs ignored due to filtering - DWORD SRBsMissing; // SRBs not sent/received - DWORD InternalErrors; // could not send/receive due to int. failure - DWORD ExternalErrors; // could not send/receive due to ext. failure - DWORD Discontinuities; // discontinuities received/sent - DWORD LineConfidenceAvg; // Average of all DSP confidence results for this pin - DWORD BytesOutput; // Bytes sent downstream -} VBICODECFILTERING_STATISTICS_COMMON_PIN, *PVBICODECFILTERING_STATISTICS_COMMON_PIN; - -// -// Codec-specific statistics - NABTS -// - -typedef struct _VBICODECFILTERING_STATISTICS_NABTS { - VBICODECFILTERING_STATISTICS_COMMON Common; // Generic VBI statistics - DWORD FECBundleBadLines; // Un-FEC-correctable lines - DWORD FECQueueOverflows; // Number of times FEC queue overflowed - DWORD FECCorrectedLines; // Lines CSUM corrected by FEC - DWORD FECUncorrectableLines; // FEC input lines not CSUM correctable - DWORD BundlesProcessed; // Bundles received from FEC - DWORD BundlesSent2IP; // Bundles sent to IP driver - DWORD FilteredLines; // Lines processed and then dropped - // because no one was interested -} VBICODECFILTERING_STATISTICS_NABTS, *PVBICODECFILTERING_STATISTICS_NABTS; - -typedef struct _VBICODECFILTERING_STATISTICS_NABTS_PIN { - VBICODECFILTERING_STATISTICS_COMMON_PIN Common;// Generic VBI pin statistics -} VBICODECFILTERING_STATISTICS_NABTS_PIN, *PVBICODECFILTERING_STATISTICS_NABTS_PIN; - -// -// Codec-specific statistics - Closed Caption -// - -typedef struct _VBICODECFILTERING_STATISTICS_CC { - VBICODECFILTERING_STATISTICS_COMMON Common; // Generic VBI statistics -} VBICODECFILTERING_STATISTICS_CC, *PVBICODECFILTERING_STATISTICS_CC; - - -typedef struct _VBICODECFILTERING_STATISTICS_CC_PIN { - VBICODECFILTERING_STATISTICS_COMMON_PIN Common;// Generic VBI pin statistics -} VBICODECFILTERING_STATISTICS_CC_PIN, *PVBICODECFILTERING_STATISTICS_CC_PIN; - -// -// Codec-specific statistics - Closed Caption -// - -typedef struct _VBICODECFILTERING_STATISTICS_TELETEXT { - VBICODECFILTERING_STATISTICS_COMMON Common; // Generic VBI statistics -} VBICODECFILTERING_STATISTICS_TELETEXT, *PVBICODECFILTERING_STATISTICS_TELETEXT; - -typedef struct _VBICODECFILTERING_STATISTICS_TELETEXT_PIN { - VBICODECFILTERING_STATISTICS_COMMON_PIN Common;// Generic VBI pin statistics -} VBICODECFILTERING_STATISTICS_TELETEXT_PIN, *PVBICODECFILTERING_STATISTICS_TELETEXT_PIN; - -//////////////////////////////////////////////////////////////////////////// -// VBI codec property structures(based on KSPROPERTY_VBICODECFILTERING enum) -//////////////////////////////////////////////////////////////////////////// - -// *** Most codecs support this property -// KSPROPERTY_VBICODECFILTERING_SCANLINES_REQUESTED_BIT_ARRAY -// KSPROPERTY_VBICODECFILTERING_SCANLINES_DISCOVERED_BIT_ARRAY, -typedef struct { - KSPROPERTY Property; - VBICODECFILTERING_SCANLINES Scanlines; -} KSPROPERTY_VBICODECFILTERING_SCANLINES_S, *PKSPROPERTY_VBICODECFILTERING_SCANLINES_S; - -// *** NABTS codecs support this property -// KSPROPERTY_VBICODECFILTERING_SUBSTREAMS_REQUESTED_BIT_ARRAY, -// KSPROPERTY_VBICODECFILTERING_SUBSTREAMS_DISCOVERED_BIT_ARRAY, -typedef struct { - KSPROPERTY Property; - VBICODECFILTERING_NABTS_SUBSTREAMS Substreams; -} KSPROPERTY_VBICODECFILTERING_NABTS_SUBSTREAMS_S, *PKSPROPERTY_VBICODECFILTERING_NABTS_SUBSTREAMS_S; - -// *** Closed captioning codecs support this property -// KSPROPERTY_VBICODECFILTERING_SUBSTREAMS_REQUESTED_BIT_ARRAY, -// KSPROPERTY_VBICODECFILTERING_SUBSTREAMS_DISCOVERED_BIT_ARRAY, -typedef struct { - KSPROPERTY Property; - VBICODECFILTERING_CC_SUBSTREAMS Substreams; -} KSPROPERTY_VBICODECFILTERING_CC_SUBSTREAMS_S, *PKSPROPERTY_VBICODECFILTERING_CC_SUBSTREAMS_S; - -// *** Most codecs support these versions of the global and pin properties -// KSPROPERTY_VBICODECFILTERING_STATISTICS -typedef struct { - KSPROPERTY Property; - VBICODECFILTERING_STATISTICS_COMMON Statistics; -} KSPROPERTY_VBICODECFILTERING_STATISTICS_COMMON_S, *PKSPROPERTY_VBICODECFILTERING_STATISTICS_COMMON_S; - -typedef struct { - KSPROPERTY Property; - VBICODECFILTERING_STATISTICS_COMMON_PIN Statistics; -} KSPROPERTY_VBICODECFILTERING_STATISTICS_COMMON_PIN_S, *PKSPROPERTY_VBICODECFILTERING_STATISTICS_COMMON_PIN_S; - -// *** NABTS codecs support this version of the global and pin properties -// KSPROPERTY_VBICODECFILTERING_STATISTICS -typedef struct { - KSPROPERTY Property; - VBICODECFILTERING_STATISTICS_NABTS Statistics; -} KSPROPERTY_VBICODECFILTERING_STATISTICS_NABTS_S, *PKSPROPERTY_VBICODECFILTERING_STATISTICS_NABTS_S; - -typedef struct { - KSPROPERTY Property; - VBICODECFILTERING_STATISTICS_NABTS_PIN Statistics; -} KSPROPERTY_VBICODECFILTERING_STATISTICS_NABTS_PIN_S, *PKSPROPERTY_VBICODECFILTERING_STATISTICS_NABTS_PIN_S; - -// *** Closed captioning codecs support this version of the global and pin properties -// KSPROPERTY_VBICODECFILTERING_STATISTICS - -typedef struct { - KSPROPERTY Property; - VBICODECFILTERING_STATISTICS_CC Statistics; -} KSPROPERTY_VBICODECFILTERING_STATISTICS_CC_S, *PKSPROPERTY_VBICODECFILTERING_STATISTICS_CC_S; - -typedef struct { - KSPROPERTY Property; - VBICODECFILTERING_STATISTICS_CC_PIN Statistics; -} KSPROPERTY_VBICODECFILTERING_STATISTICS_CC_PIN_S, *PKSPROPERTY_VBICODECFILTERING_STATISTICS_CC_PIN_S; - -// Standard Pin Names for the video capture filter -//=========================================================================== - -#define STATIC_PINNAME_VIDEO_CAPTURE \ - 0xfb6c4281, 0x353, 0x11d1, 0x90, 0x5f, 0x0, 0x0, 0xc0, 0xcc, 0x16, 0xba -#define STATIC_PINNAME_CAPTURE STATIC_PINNAME_VIDEO_CAPTURE -DEFINE_GUIDSTRUCT("FB6C4281-0353-11d1-905F-0000C0CC16BA", PINNAME_VIDEO_CAPTURE); -#define PINNAME_VIDEO_CAPTURE DEFINE_GUIDNAMED(PINNAME_VIDEO_CAPTURE) -#define PINNAME_CAPTURE PINNAME_VIDEO_CAPTURE - -#define STATIC_PINNAME_VIDEO_CC_CAPTURE \ - 0x1aad8061, 0x12d, 0x11d2, 0xb4, 0xb1, 0x0, 0xa0, 0xd1, 0x2, 0xcf, 0xbe -#define STATIC_PINNAME_CC_CAPTURE STATIC_PINNAME_VIDEO_CC_CAPTURE -DEFINE_GUIDSTRUCT("1AAD8061-012D-11d2-B4B1-00A0D102CFBE", PINNAME_VIDEO_CC_CAPTURE); -#define PINNAME_VIDEO_CC_CAPTURE DEFINE_GUIDNAMED(PINNAME_VIDEO_CC_CAPTURE) - -#define STATIC_PINNAME_VIDEO_NABTS_CAPTURE \ - 0x29703660, 0x498a, 0x11d2, 0xb4, 0xb1, 0x0, 0xa0, 0xd1, 0x2, 0xcf, 0xbe -#define STATIC_PINNAME_NABTS_CAPTURE STATIC_PINNAME_VIDEO_NABTS_CAPTURE -DEFINE_GUIDSTRUCT("29703660-498A-11d2-B4B1-00A0D102CFBE", PINNAME_VIDEO_NABTS_CAPTURE); -#define PINNAME_VIDEO_NABTS_CAPTURE DEFINE_GUIDNAMED(PINNAME_VIDEO_NABTS_CAPTURE) - -#define STATIC_PINNAME_VIDEO_PREVIEW \ - 0xfb6c4282, 0x353, 0x11d1, 0x90, 0x5f, 0x0, 0x0, 0xc0, 0xcc, 0x16, 0xba -#define STATIC_PINNAME_PREVIEW STATIC_PINNAME_VIDEO_PREVIEW -DEFINE_GUIDSTRUCT("FB6C4282-0353-11d1-905F-0000C0CC16BA", PINNAME_VIDEO_PREVIEW); -#define PINNAME_VIDEO_PREVIEW DEFINE_GUIDNAMED(PINNAME_VIDEO_PREVIEW) -#define PINNAME_PREVIEW PINNAME_VIDEO_PREVIEW - -#define STATIC_PINNAME_VIDEO_ANALOGVIDEOIN \ - 0xfb6c4283, 0x353, 0x11d1, 0x90, 0x5f, 0x0, 0x0, 0xc0, 0xcc, 0x16, 0xba -DEFINE_GUIDSTRUCT("FB6C4283-0353-11d1-905F-0000C0CC16BA", PINNAME_VIDEO_ANALOGVIDEOIN); -#define PINNAME_VIDEO_ANALOGVIDEOIN DEFINE_GUIDNAMED(PINNAME_VIDEO_ANALOGVIDEOIN) - -#define STATIC_PINNAME_VIDEO_VBI \ - 0xfb6c4284, 0x353, 0x11d1, 0x90, 0x5f, 0x0, 0x0, 0xc0, 0xcc, 0x16, 0xba -DEFINE_GUIDSTRUCT("FB6C4284-0353-11d1-905F-0000C0CC16BA", PINNAME_VIDEO_VBI); -#define PINNAME_VIDEO_VBI DEFINE_GUIDNAMED(PINNAME_VIDEO_VBI) - -#define STATIC_PINNAME_VIDEO_VIDEOPORT \ - 0xfb6c4285, 0x353, 0x11d1, 0x90, 0x5f, 0x0, 0x0, 0xc0, 0xcc, 0x16, 0xba -DEFINE_GUIDSTRUCT("FB6C4285-0353-11d1-905F-0000C0CC16BA", PINNAME_VIDEO_VIDEOPORT); -#define PINNAME_VIDEO_VIDEOPORT DEFINE_GUIDNAMED(PINNAME_VIDEO_VIDEOPORT) - -#define STATIC_PINNAME_VIDEO_NABTS \ - 0xfb6c4286, 0x353, 0x11d1, 0x90, 0x5f, 0x0, 0x0, 0xc0, 0xcc, 0x16, 0xba -DEFINE_GUIDSTRUCT("FB6C4286-0353-11d1-905F-0000C0CC16BA", PINNAME_VIDEO_NABTS); -#define PINNAME_VIDEO_NABTS DEFINE_GUIDNAMED(PINNAME_VIDEO_NABTS) - -#define STATIC_PINNAME_VIDEO_EDS \ - 0xfb6c4287, 0x353, 0x11d1, 0x90, 0x5f, 0x0, 0x0, 0xc0, 0xcc, 0x16, 0xba -DEFINE_GUIDSTRUCT("FB6C4287-0353-11d1-905F-0000C0CC16BA", PINNAME_VIDEO_EDS); -#define PINNAME_VIDEO_EDS DEFINE_GUIDNAMED(PINNAME_VIDEO_EDS) - -#define STATIC_PINNAME_VIDEO_TELETEXT \ - 0xfb6c4288, 0x353, 0x11d1, 0x90, 0x5f, 0x0, 0x0, 0xc0, 0xcc, 0x16, 0xba -DEFINE_GUIDSTRUCT("FB6C4288-0353-11d1-905F-0000C0CC16BA", PINNAME_VIDEO_TELETEXT); -#define PINNAME_VIDEO_TELETEXT DEFINE_GUIDNAMED(PINNAME_VIDEO_TELETEXT) - -#define STATIC_PINNAME_VIDEO_CC \ - 0xfb6c4289, 0x353, 0x11d1, 0x90, 0x5f, 0x0, 0x0, 0xc0, 0xcc, 0x16, 0xba -DEFINE_GUIDSTRUCT("FB6C4289-0353-11d1-905F-0000C0CC16BA", PINNAME_VIDEO_CC); -#define PINNAME_VIDEO_CC DEFINE_GUIDNAMED(PINNAME_VIDEO_CC) - -#define STATIC_PINNAME_VIDEO_STILL \ - 0xfb6c428A, 0x353, 0x11d1, 0x90, 0x5f, 0x0, 0x0, 0xc0, 0xcc, 0x16, 0xba -DEFINE_GUIDSTRUCT("FB6C428A-0353-11d1-905F-0000C0CC16BA", PINNAME_VIDEO_STILL); -#define PINNAME_VIDEO_STILL DEFINE_GUIDNAMED(PINNAME_VIDEO_STILL) - -#define STATIC_PINNAME_VIDEO_TIMECODE \ - 0xfb6c428B, 0x353, 0x11d1, 0x90, 0x5f, 0x0, 0x0, 0xc0, 0xcc, 0x16, 0xba -DEFINE_GUIDSTRUCT("FB6C428B-0353-11d1-905F-0000C0CC16BA", PINNAME_VIDEO_TIMECODE); -#define PINNAME_VIDEO_TIMECODE DEFINE_GUIDNAMED(PINNAME_VIDEO_TIMECODE) - -#define STATIC_PINNAME_VIDEO_VIDEOPORT_VBI \ - 0xfb6c428C, 0x353, 0x11d1, 0x90, 0x5f, 0x0, 0x0, 0xc0, 0xcc, 0x16, 0xba -DEFINE_GUIDSTRUCT("FB6C428C-0353-11d1-905F-0000C0CC16BA", PINNAME_VIDEO_VIDEOPORT_VBI); -#define PINNAME_VIDEO_VIDEOPORT_VBI DEFINE_GUIDNAMED(PINNAME_VIDEO_VIDEOPORT_VBI) - -//=========================================================================== -// KSSTREAM_HEADER extensions for digital video -//=========================================================================== - -#define KS_VIDEO_FLAG_FRAME 0x0000L // Frame or Field (default is frame) -#define KS_VIDEO_FLAG_FIELD1 0x0001L -#define KS_VIDEO_FLAG_FIELD2 0x0002L - -#define KS_VIDEO_FLAG_I_FRAME 0x0000L // I, B, or P (default is I) -#define KS_VIDEO_FLAG_P_FRAME 0x0010L -#define KS_VIDEO_FLAG_B_FRAME 0x0020L - -typedef struct tagKS_FRAME_INFO { - ULONG ExtendedHeaderSize; // Size of this extended header - DWORD dwFrameFlags; // Field1, Field2, or Frame - LONGLONG PictureNumber; - LONGLONG DropCount; - - // The following are only set when using OverlayMixer - HANDLE hDirectDraw; // user mode DDraw handle - HANDLE hSurfaceHandle; // user mode surface handle - RECT DirectDrawRect; // portion of surface locked - // Reserved fields, never reference these - DWORD Reserved1; - DWORD Reserved2; - DWORD Reserved3; - DWORD Reserved4; -} KS_FRAME_INFO, *PKS_FRAME_INFO; - -//=========================================================================== -// KSSTREAM_HEADER extensions for VBI -//=========================================================================== - -#define KS_VBI_FLAG_FIELD1 0x0001L -#define KS_VBI_FLAG_FIELD2 0x0002L - -#define KS_VBI_FLAG_MV_PRESENT 0x0100L -#define KS_VBI_FLAG_MV_HARDWARE 0x0200L -#define KS_VBI_FLAG_MV_DETECTED 0x0400L - -#define KS_VBI_FLAG_TVTUNER_CHANGE 0x0010L // TvTunerChangeInfo is valid -#define KS_VBI_FLAG_VBIINFOHEADER_CHANGE 0x0020L // VBIInfoHeader is valid - -typedef struct tagKS_VBI_FRAME_INFO { - ULONG ExtendedHeaderSize; // Size of this extended header - DWORD dwFrameFlags; // Field1, Field2, or Frame; & etc - LONGLONG PictureNumber; // Test only? - LONGLONG DropCount; // Test only? - DWORD dwSamplingFrequency; - KS_TVTUNER_CHANGE_INFO TvTunerChangeInfo; - KS_VBIINFOHEADER VBIInfoHeader; -} KS_VBI_FRAME_INFO, *PKS_VBI_FRAME_INFO; - - -//=========================================================================== -// Analog video formats, used with: -// Analog Video Decoders -// TVTuners -// Analog Video Encoders -// -// XXX_STANDARDS_SUPPORTED returns a bitmask -//=========================================================================== - -typedef enum -{ - KS_AnalogVideo_None = 0x00000000, // This is a digital sensor - KS_AnalogVideo_NTSC_M = 0x00000001, // 75 IRE Setup - KS_AnalogVideo_NTSC_M_J = 0x00000002, // Japan, 0 IRE Setup - KS_AnalogVideo_NTSC_433 = 0x00000004, - - KS_AnalogVideo_PAL_B = 0x00000010, - KS_AnalogVideo_PAL_D = 0x00000020, - KS_AnalogVideo_PAL_G = 0x00000040, - KS_AnalogVideo_PAL_H = 0x00000080, - KS_AnalogVideo_PAL_I = 0x00000100, - KS_AnalogVideo_PAL_M = 0x00000200, - KS_AnalogVideo_PAL_N = 0x00000400, - - KS_AnalogVideo_PAL_60 = 0x00000800, - - KS_AnalogVideo_SECAM_B = 0x00001000, - KS_AnalogVideo_SECAM_D = 0x00002000, - KS_AnalogVideo_SECAM_G = 0x00004000, - KS_AnalogVideo_SECAM_H = 0x00008000, - KS_AnalogVideo_SECAM_K = 0x00010000, - KS_AnalogVideo_SECAM_K1 = 0x00020000, - KS_AnalogVideo_SECAM_L = 0x00040000, - KS_AnalogVideo_SECAM_L1 = 0x00080000, - - KS_AnalogVideo_PAL_N_COMBO - = 0x00100000 -} KS_AnalogVideoStandard; - -#define KS_AnalogVideo_NTSC_Mask 0x00000007 -#define KS_AnalogVideo_PAL_Mask 0x00100FF0 -#define KS_AnalogVideo_SECAM_Mask 0x000FF000 - -//=========================================================================== -// Property set definitions -// The comments show whether a given property is: -// R : READ only -// w : WRITE only -// RW : READ / WRITE -// O : Optional (return E_UNSUPPORTED if you don't handle this) -//=========================================================================== - -#define STATIC_PROPSETID_ALLOCATOR_CONTROL\ - 0x53171960, 0x148e, 0x11d2, 0x99, 0x79, 0x0, 0x0, 0xc0, 0xcc, 0x16, 0xba -DEFINE_GUIDSTRUCT("53171960-148E-11d2-9979-0000C0CC16BA", PROPSETID_ALLOCATOR_CONTROL); -#define PROPSETID_ALLOCATOR_CONTROL DEFINE_GUIDNAMED(PROPSETID_ALLOCATOR_CONTROL) -typedef enum { - KSPROPERTY_ALLOCATOR_CONTROL_HONOR_COUNT, // R O (will allocate exactly this number of buffers) - KSPROPERTY_ALLOCATOR_CONTROL_SURFACE_SIZE, // R O (return 2 DWORDs specifying surface size) - // W I (informn a capture driver whether interleave capture is possible or - // not - a value of 1 means that interleaved capture is supported) - KSPROPERTY_ALLOCATOR_CONTROL_CAPTURE_CAPS, - - // R O (if value == 1, then the ovmixer will turn on the DDVP_INTERLEAVE - // flag thus allowing interleaved capture of the video) - KSPROPERTY_ALLOCATOR_CONTROL_CAPTURE_INTERLEAVE, -} KSPROPERTY_ALLOCATOR_CONTROL; - -typedef struct { - //KSPROPERTY Property; - ULONG CX; - ULONG CY; -} KSPROPERTY_ALLOCATOR_CONTROL_SURFACE_SIZE_S, *PKSPROPERTY_ALLOCATOR_CONTROL_SURFACE_SIZE_S; - -typedef struct { - //KSPROPERTY Property; - ULONG InterleavedCapSupported; -} KSPROPERTY_ALLOCATOR_CONTROL_CAPTURE_CAPS_S, *PKSPROPERTY_ALLOCATOR_CONTROL_CAPTURE_CAPS_S; - - -typedef struct { - //KSPROPERTY Property; - ULONG InterleavedCapPossible; -} KSPROPERTY_ALLOCATOR_CONTROL_CAPTURE_INTERLEAVE_S, *PKSPROPERTY_ALLOCATOR_CONTROL_CAPTURE_INTERLEAVE_S; - -//=========================================================================== - -#define STATIC_PROPSETID_VIDCAP_VIDEOPROCAMP\ - 0xC6E13360L, 0x30AC, 0x11d0, 0xa1, 0x8c, 0x00, 0xA0, 0xC9, 0x11, 0x89, 0x56 -DEFINE_GUIDSTRUCT("C6E13360-30AC-11d0-A18C-00A0C9118956", PROPSETID_VIDCAP_VIDEOPROCAMP); -#define PROPSETID_VIDCAP_VIDEOPROCAMP DEFINE_GUIDNAMED(PROPSETID_VIDCAP_VIDEOPROCAMP) - -typedef enum { - KSPROPERTY_VIDEOPROCAMP_BRIGHTNESS, // RW O - KSPROPERTY_VIDEOPROCAMP_CONTRAST, // RW O - KSPROPERTY_VIDEOPROCAMP_HUE, // RW O - KSPROPERTY_VIDEOPROCAMP_SATURATION, // RW O - KSPROPERTY_VIDEOPROCAMP_SHARPNESS, // RW O - KSPROPERTY_VIDEOPROCAMP_GAMMA, // RW O - KSPROPERTY_VIDEOPROCAMP_COLORENABLE, // RW O - KSPROPERTY_VIDEOPROCAMP_WHITEBALANCE, // RW O - KSPROPERTY_VIDEOPROCAMP_BACKLIGHT_COMPENSATION,// RW O - KSPROPERTY_VIDEOPROCAMP_GAIN, // RW O - KSPROPERTY_VIDEOPROCAMP_DIGITAL_MULTIPLIER, // RW O - KSPROPERTY_VIDEOPROCAMP_DIGITAL_MULTIPLIER_LIMIT,// RW O - KSPROPERTY_VIDEOPROCAMP_WHITEBALANCE_COMPONENT, // RW O - KSPROPERTY_VIDEOPROCAMP_POWERLINE_FREQUENCY // RW O -} KSPROPERTY_VIDCAP_VIDEOPROCAMP; - -typedef struct { - KSPROPERTY Property; - LONG Value; // Value to set or get - ULONG Flags; // KSPROPERTY_VIDEOPROCAMP_FLAGS_* - ULONG Capabilities; // KSPROPERTY_VIDEOPROCAMP_FLAGS_* -} KSPROPERTY_VIDEOPROCAMP_S, *PKSPROPERTY_VIDEOPROCAMP_S; - -typedef struct { - KSP_NODE NodeProperty; - LONG Value; // Value to set or get - ULONG Flags; // KSPROPERTY_VIDEOPROCAMP_FLAGS_* - ULONG Capabilities; // KSPROPERTY_VIDEOPROCAMP_FLAGS_* -} KSPROPERTY_VIDEOPROCAMP_NODE_S, *PKSPROPERTY_VIDEOPROCAMP_NODE_S; - -typedef struct { - KSPROPERTY Property; - LONG Value1; - ULONG Flags; - ULONG Capabilities; - LONG Value2; -} KSPROPERTY_VIDEOPROCAMP_S2, *PKSPROPERTY_VIDEOPROCAMP_S2; - -typedef struct { - KSP_NODE NodeProperty; - LONG Value1; - ULONG Flags; - ULONG Capabilities; - LONG Value2; -} KSPROPERTY_VIDEOPROCAMP_NODE_S2, *PKSPROPERTY_VIDEOPROCAMP_NODE_S2; - -#define KSPROPERTY_VIDEOPROCAMP_FLAGS_AUTO 0X0001L -#define KSPROPERTY_VIDEOPROCAMP_FLAGS_MANUAL 0X0002L - -//=========================================================================== - -#define STATIC_PROPSETID_VIDCAP_SELECTOR \ - 0x1ABDAECA, 0x68B6, 0x4F83, 0x93, 0x71, 0xB4, 0x13, 0x90, 0x7C, 0x7B, 0x9F -DEFINE_GUIDSTRUCT("1ABDAECA-68B6-4F83-9371-B413907C7B9F", PROPSETID_VIDCAP_SELECTOR); -#define PROPSETID_VIDCAP_SELECTOR DEFINE_GUIDNAMED(PROPSETID_VIDCAP_SELECTOR) - -typedef enum { - KSPROPERTY_SELECTOR_SOURCE_NODE_ID, // RW - KSPROPERTY_SELECTOR_NUM_SOURCES // R -} KSPROPERTY_VIDCAP_SELECTOR, *PKSPROPERTY_VIDCAP_SELECTOR; - -typedef struct { - KSPROPERTY Property; - LONG Value; // Value to set or get - ULONG Flags; - ULONG Capabilities; -} KSPROPERTY_SELECTOR_S, *PKSPROPERTY_SELECTOR_S; - -typedef struct { - KSP_NODE NodeProperty; - LONG Value; // Value to set or get - ULONG Flags; - ULONG Capabilities; -} KSPROPERTY_SELECTOR_NODE_S, *PKSPROPERTY_SELECTOR_NODE_S; - - -//=========================================================================== - - -#define STATIC_PROPSETID_TUNER\ - 0x6a2e0605L, 0x28e4, 0x11d0, 0xa1, 0x8c, 0x00, 0xa0, 0xc9, 0x11, 0x89, 0x56 -DEFINE_GUIDSTRUCT("6a2e0605-28e4-11d0-a18c-00a0c9118956", PROPSETID_TUNER); -#define PROPSETID_TUNER DEFINE_GUIDNAMED(PROPSETID_TUNER) - -typedef enum { - KSPROPERTY_TUNER_CAPS, // R -overall device capabilities - KSPROPERTY_TUNER_MODE_CAPS, // R -capabilities in this mode - KSPROPERTY_TUNER_MODE, // RW -set a mode (TV, FM, AM, DSS) - KSPROPERTY_TUNER_STANDARD, // R -get TV standard (only if TV mode) - KSPROPERTY_TUNER_FREQUENCY, // RW -set/get frequency - KSPROPERTY_TUNER_INPUT, // RW -select an input - KSPROPERTY_TUNER_STATUS, // R -tuning status - KSPROPERTY_TUNER_IF_MEDIUM // R O-Medium for IF or Transport Pin -} KSPROPERTY_TUNER; - -typedef enum { - KSPROPERTY_TUNER_MODE_TV = 0X0001, - KSPROPERTY_TUNER_MODE_FM_RADIO = 0X0002, - KSPROPERTY_TUNER_MODE_AM_RADIO = 0X0004, - KSPROPERTY_TUNER_MODE_DSS = 0X0008, - KSPROPERTY_TUNER_MODE_ATSC = 0X0010, // also used for DVB-T, DVB-C -} KSPROPERTY_TUNER_MODES; - -// Describes how the device tunes. Only one of these flags may be set -// in KSPROPERTY_TUNER_MODE_CAPS_S.Strategy - -// Describe how the driver should attempt to tune: -// EXACT: just go to the frequency specified (no fine tuning) -// FINE: (slow) do an exhaustive search for the best signal -// COARSE: (fast) use larger frequency jumps to just determine if any signal - -typedef enum { - KS_TUNER_TUNING_EXACT = 1, // No fine tuning - KS_TUNER_TUNING_FINE, // Fine grained search - KS_TUNER_TUNING_COARSE, // Coarse search -}KS_TUNER_TUNING_FLAGS; - -typedef enum { - KS_TUNER_STRATEGY_PLL = 0X01, // Tune by PLL offset - KS_TUNER_STRATEGY_SIGNAL_STRENGTH = 0X02, // Tune by signal strength - KS_TUNER_STRATEGY_DRIVER_TUNES = 0X04, // Driver does fine tuning -}KS_TUNER_STRATEGY; - -typedef struct { - KSPROPERTY Property; - ULONG ModesSupported; // KS_PROPERTY_TUNER_MODES_* - KSPIN_MEDIUM VideoMedium; // GUID_NULL (no pin), or GUID - KSPIN_MEDIUM TVAudioMedium; // GUID_NULL (no pin), or GUID - KSPIN_MEDIUM RadioAudioMedium; // GUID_NULL (no pin), or GUID -} KSPROPERTY_TUNER_CAPS_S, *PKSPROPERTY_TUNER_CAPS_S; - -typedef struct { - KSPROPERTY Property; - KSPIN_MEDIUM IFMedium; // GUID_NULL (no pin), or GUID -} KSPROPERTY_TUNER_IF_MEDIUM_S, *PKSPROPERTY_TUNER_IF_MEDIUM_S; - -typedef struct { - KSPROPERTY Property; - ULONG Mode; // IN: KSPROPERTY_TUNER_MODE - ULONG StandardsSupported; // KS_AnalogVideo_* (if TV or DSS) - ULONG MinFrequency; // Hz - ULONG MaxFrequency; // Hz - ULONG TuningGranularity; // Hz - ULONG NumberOfInputs; // count of inputs - ULONG SettlingTime; // milliSeconds - ULONG Strategy; // KS_TUNER_STRATEGY -} KSPROPERTY_TUNER_MODE_CAPS_S, *PKSPROPERTY_TUNER_MODE_CAPS_S; - -typedef struct { - KSPROPERTY Property; - ULONG Mode; // IN: KSPROPERTY_TUNER_MODE -} KSPROPERTY_TUNER_MODE_S, *PKSPROPERTY_TUNER_MODE_S; - -typedef struct { - KSPROPERTY Property; - ULONG Frequency; // Hz - ULONG LastFrequency; // Hz (last known good) - ULONG TuningFlags; // KS_TUNER_TUNING_FLAGS - ULONG VideoSubChannel; // DSS - ULONG AudioSubChannel; // DSS - ULONG Channel; // VBI decoders - ULONG Country; // VBI decoders -} KSPROPERTY_TUNER_FREQUENCY_S, *PKSPROPERTY_TUNER_FREQUENCY_S; - -typedef struct { - KSPROPERTY Property; - ULONG Standard; // KS_AnalogVideo_* -} KSPROPERTY_TUNER_STANDARD_S, *PKSPROPERTY_TUNER_STANDARD_S; - -typedef struct { - KSPROPERTY Property; - ULONG InputIndex; // 0 to (n-1) inputs -} KSPROPERTY_TUNER_INPUT_S, *PKSPROPERTY_TUNER_INPUT_S; - -typedef struct { - KSPROPERTY Property; - ULONG CurrentFrequency; // Hz - ULONG PLLOffset; // if Strategy.KS_TUNER_STRATEGY_PLL - ULONG SignalStrength; // if Stretegy.KS_TUNER_STRATEGY_SIGNAL_STRENGTH - ULONG Busy; // TRUE if in the process of tuning -} KSPROPERTY_TUNER_STATUS_S, *PKSPROPERTY_TUNER_STATUS_S; - -#define STATIC_EVENTSETID_TUNER\ - 0x6a2e0606L, 0x28e4, 0x11d0, 0xa1, 0x8c, 0x00, 0xa0, 0xc9, 0x11, 0x89, 0x56 -DEFINE_GUIDSTRUCT("6a2e0606-28e4-11d0-a18c-00a0c9118956", EVENTSETID_TUNER); -#define EVENTSETID_TUNER DEFINE_GUIDNAMED(EVENTSETID_TUNER) - -typedef enum { - KSEVENT_TUNER_CHANGED -} KSEVENT_TUNER; - - -//=========================================================================== - -// USB Video Class Definitions - -#define STATIC_KSNODETYPE_VIDEO_STREAMING \ - 0xDFF229E1L, 0xF70F, 0x11D0, 0xB9, 0x17, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 -DEFINE_GUIDSTRUCT("DFF229E1-F70F-11D0-B917-00A0C9223196", KSNODETYPE_VIDEO_STREAMING); -#define KSNODETYPE_VIDEO_STREAMING DEFINE_GUIDNAMED(KSNODETYPE_VIDEO_STREAMING) - -#define STATIC_KSNODETYPE_VIDEO_INPUT_TERMINAL \ - 0xDFF229E2L, 0xF70F, 0x11D0, 0xB9, 0x17, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 -DEFINE_GUIDSTRUCT("DFF229E2-F70F-11D0-B917-00A0C9223196", KSNODETYPE_VIDEO_INPUT_TERMINAL); -#define KSNODETYPE_VIDEO_INPUT_TERMINAL DEFINE_GUIDNAMED(KSNODETYPE_VIDEO_INPUT_TERMINAL) - -#define STATIC_KSNODETYPE_VIDEO_OUTPUT_TERMINAL \ - 0xDFF229E3L, 0xF70F, 0x11D0, 0xB9, 0x17, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 -DEFINE_GUIDSTRUCT("DFF229E3-F70F-11D0-B917-00A0C9223196", KSNODETYPE_VIDEO_OUTPUT_TERMINAL); -#define KSNODETYPE_VIDEO_OUTPUT_TERMINAL DEFINE_GUIDNAMED(KSNODETYPE_VIDEO_OUTPUT_TERMINAL) - -#define STATIC_KSNODETYPE_VIDEO_SELECTOR \ - 0xDFF229E4L, 0xF70F, 0x11D0, 0xB9, 0x17, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 -DEFINE_GUIDSTRUCT("DFF229E4-F70F-11D0-B917-00A0C9223196", KSNODETYPE_VIDEO_SELECTOR); -#define KSNODETYPE_VIDEO_SELECTOR DEFINE_GUIDNAMED(KSNODETYPE_VIDEO_SELECTOR) - -#define STATIC_KSNODETYPE_VIDEO_PROCESSING \ - 0xDFF229E5L, 0xF70F, 0x11D0, 0xB9, 0x17, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 -DEFINE_GUIDSTRUCT("DFF229E5-F70F-11D0-B917-00A0C9223196", KSNODETYPE_VIDEO_PROCESSING); -#define KSNODETYPE_VIDEO_PROCESSING DEFINE_GUIDNAMED(KSNODETYPE_VIDEO_PROCESSING) - -#define STATIC_KSNODETYPE_VIDEO_CAMERA_TERMINAL \ - 0xDFF229E6L, 0xF70F, 0x11D0, 0xB9, 0x17, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 -DEFINE_GUIDSTRUCT("DFF229E6-F70F-11D0-B917-00A0C9223196", KSNODETYPE_VIDEO_CAMERA_TERMINAL); -#define KSNODETYPE_VIDEO_CAMERA_TERMINAL DEFINE_GUIDNAMED(KSNODETYPE_VIDEO_CAMERA_TERMINAL) - -#define STATIC_KSNODETYPE_VIDEO_INPUT_MTT \ - 0xDFF229E7L, 0xF70F, 0x11D0, 0xB9, 0x17, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 -DEFINE_GUIDSTRUCT("DFF229E7-F70F-11D0-B917-00A0C9223196", KSNODETYPE_VIDEO_INPUT_MTT); -#define KSNODETYPE_VIDEO_INPUT_MTT DEFINE_GUIDNAMED(KSNODETYPE_VIDEO_INPUT_MTT) - -#define STATIC_KSNODETYPE_VIDEO_OUTPUT_MTT \ - 0xDFF229E8L, 0xF70F, 0x11D0, 0xB9, 0x17, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 -DEFINE_GUIDSTRUCT("DFF229E8-F70F-11D0-B917-00A0C9223196", KSNODETYPE_VIDEO_OUTPUT_MTT); -#define KSNODETYPE_VIDEO_OUTPUT_MTT DEFINE_GUIDNAMED(KSNODETYPE_VIDEO_OUTPUT_MTT) - -//=========================================================================== - - -#define STATIC_PROPSETID_VIDCAP_VIDEOENCODER\ - 0x6a2e0610L, 0x28e4, 0x11d0, 0xa1, 0x8c, 0x00, 0xa0, 0xc9, 0x11, 0x89, 0x56 -DEFINE_GUIDSTRUCT("6a2e0610-28e4-11d0-a18c-00a0c9118956", PROPSETID_VIDCAP_VIDEOENCODER); -#define PROPSETID_VIDCAP_VIDEOENCODER DEFINE_GUIDNAMED(PROPSETID_VIDCAP_VIDEOENCODER) - -typedef enum { - KSPROPERTY_VIDEOENCODER_CAPS, // R - KSPROPERTY_VIDEOENCODER_STANDARD, // RW - KSPROPERTY_VIDEOENCODER_COPYPROTECTION, // RW O - KSPROPERTY_VIDEOENCODER_CC_ENABLE, // RW O -} KSPROPERTY_VIDCAP_VIDEOENCODER; - -typedef struct { - KSPROPERTY Property; - LONG Value; // value to get or set - ULONG Flags; // - ULONG Capabilities; // -} KSPROPERTY_VIDEOENCODER_S, *PKSPROPERTY_VIDEOENCODER_S; - -//=========================================================================== - -#define STATIC_PROPSETID_VIDCAP_VIDEODECODER\ - 0xC6E13350L, 0x30AC, 0x11d0, 0xA1, 0x8C, 0x00, 0xA0, 0xC9, 0x11, 0x89, 0x56 -DEFINE_GUIDSTRUCT("C6E13350-30AC-11d0-A18C-00A0C9118956", PROPSETID_VIDCAP_VIDEODECODER); -#define PROPSETID_VIDCAP_VIDEODECODER DEFINE_GUIDNAMED(PROPSETID_VIDCAP_VIDEODECODER) - -typedef enum { - KSPROPERTY_VIDEODECODER_CAPS, // R - KSPROPERTY_VIDEODECODER_STANDARD, // RW - KSPROPERTY_VIDEODECODER_STATUS, // R - KSPROPERTY_VIDEODECODER_OUTPUT_ENABLE, // Rw O - KSPROPERTY_VIDEODECODER_VCR_TIMING, // RW O -} KSPROPERTY_VIDCAP_VIDEODECODER; - -typedef enum { - KS_VIDEODECODER_FLAGS_CAN_DISABLE_OUTPUT = 0X0001, // VP Output can tri-stae - KS_VIDEODECODER_FLAGS_CAN_USE_VCR_LOCKING = 0X0002, // VCR PLL timings - KS_VIDEODECODER_FLAGS_CAN_INDICATE_LOCKED = 0X0004, // Can indicate valid signal -}KS_VIDEODECODER_FLAGS; - -typedef struct { - KSPROPERTY Property; - ULONG StandardsSupported; // KS_AnalogVideo_* - ULONG Capabilities; // KS_VIDEODECODER_FLAGS_* - ULONG SettlingTime; // milliseconds - ULONG HSyncPerVSync; // Number of HSync Pulses per VSync -} KSPROPERTY_VIDEODECODER_CAPS_S, *PKSPROPERTY_VIDEODECODER_CAPS_S; - -typedef struct { - KSPROPERTY Property; - ULONG NumberOfLines; // 525 or 625 lines detected - ULONG SignalLocked; // TRUE if signal is locked -} KSPROPERTY_VIDEODECODER_STATUS_S, *PKSPROPERTY_VIDEODECODER_STATUS_S; - -typedef struct { - KSPROPERTY Property; - ULONG Value; // Get or set a value -} KSPROPERTY_VIDEODECODER_S, *PKSPROPERTY_VIDEODECODER_S; - -#define STATIC_EVENTSETID_VIDEODECODER\ - 0x6a2e0621L, 0x28e4, 0x11d0, 0xa1, 0x8c, 0x00, 0xa0, 0xc9, 0x11, 0x89, 0x56 -DEFINE_GUIDSTRUCT("6a2e0621-28e4-11d0-a18c-00a0c9118956", EVENTSETID_VIDEODECODER); -#define EVENTSETID_VIDEODECODER DEFINE_GUIDNAMED(EVENTSETID_VIDEODECODER) - -typedef enum { - KSEVENT_VIDEODECODER_CHANGED -} KSEVENT_VIDEODECODER; - -//=========================================================================== - -#define STATIC_PROPSETID_VIDCAP_CAMERACONTROL\ - 0xC6E13370L, 0x30AC, 0x11d0, 0xa1, 0x8C, 0x00, 0xA0, 0xC9, 0x11, 0x89, 0x56 -DEFINE_GUIDSTRUCT("C6E13370-30AC-11d0-A18C-00A0C9118956", PROPSETID_VIDCAP_CAMERACONTROL); -#define PROPSETID_VIDCAP_CAMERACONTROL DEFINE_GUIDNAMED(PROPSETID_VIDCAP_CAMERACONTROL) - -typedef enum { - KSPROPERTY_CAMERACONTROL_PAN, // RW O - KSPROPERTY_CAMERACONTROL_TILT, // RW O - KSPROPERTY_CAMERACONTROL_ROLL, // RW O - KSPROPERTY_CAMERACONTROL_ZOOM, // RW O - KSPROPERTY_CAMERACONTROL_EXPOSURE, // RW O - KSPROPERTY_CAMERACONTROL_IRIS, // RW O - KSPROPERTY_CAMERACONTROL_FOCUS, // RW O - KSPROPERTY_CAMERACONTROL_SCANMODE, // RW O - KSPROPERTY_CAMERACONTROL_PRIVACY, // RW O - KSPROPERTY_CAMERACONTROL_PANTILT, // RW O - KSPROPERTY_CAMERACONTROL_PAN_RELATIVE, // RW O - KSPROPERTY_CAMERACONTROL_TILT_RELATIVE, // RW O - KSPROPERTY_CAMERACONTROL_ROLL_RELATIVE, // RW O - KSPROPERTY_CAMERACONTROL_ZOOM_RELATIVE, // RW O - KSPROPERTY_CAMERACONTROL_EXPOSURE_RELATIVE, // RW O - KSPROPERTY_CAMERACONTROL_IRIS_RELATIVE, // RW O - KSPROPERTY_CAMERACONTROL_FOCUS_RELATIVE, // RW O - KSPROPERTY_CAMERACONTROL_PANTILT_RELATIVE, // RW O - KSPROPERTY_CAMERACONTROL_FOCAL_LENGTH // R O -} KSPROPERTY_VIDCAP_CAMERACONTROL; - -typedef struct { - KSPROPERTY Property; - LONG Value; // value to get or set - ULONG Flags; // KSPROPERTY_CAMERACONTROL_FLAGS_* - ULONG Capabilities; // KSPROPERTY_CAMERACONTROL_FLAGS_* -} KSPROPERTY_CAMERACONTROL_S, *PKSPROPERTY_CAMERACONTROL_S; - -typedef struct { - KSP_NODE NodeProperty; - LONG Value; // value to get or set - ULONG Flags; // KSPROPERTY_CAMERACONTROL_FLAGS_* - ULONG Capabilities; // KSPROPERTY_CAMERACONTROL_FLAGS_* -} KSPROPERTY_CAMERACONTROL_NODE_S, PKSPROPERTY_CAMERACONTROL_NODE_S; - -typedef struct { - KSPROPERTY Property; - LONG Value1; - ULONG Flags; - ULONG Capabilities; - LONG Value2; -} KSPROPERTY_CAMERACONTROL_S2, *PKSPROPERTY_CAMERACONTROL_S2; - -typedef struct { - KSP_NODE NodeProperty; - LONG Value1; - ULONG Flags; - ULONG Capabilities; - LONG Value2; -} KSPROPERTY_CAMERACONTROL_NODE_S2, *PKSPROPERTY_CAMERACONTROL_NODE_S2; - -typedef struct { - KSPROPERTY Property; - LONG lOcularFocalLength; - LONG lObjectiveFocalLengthMin; - LONG lObjectiveFocalLengthMax; -} KSPROPERTY_CAMERACONTROL_FOCAL_LENGTH_S, *PKSPROPERTY_CAMERACONTROL_FOCAL_LENGTH_S; - -typedef struct { - KSNODEPROPERTY NodeProperty; - LONG lOcularFocalLength; - LONG lObjectiveFocalLengthMin; - LONG lObjectiveFocalLengthMax; -} KSPROPERTY_CAMERACONTROL_NODE_FOCAL_LENGTH_S, *PKSPROPERTY_CAMERACONTROL_NODE_FOCAL_LENGTH_S; - -#define KSPROPERTY_CAMERACONTROL_FLAGS_AUTO 0X0001L -#define KSPROPERTY_CAMERACONTROL_FLAGS_MANUAL 0X0002L - -#define KSPROPERTY_CAMERACONTROL_FLAGS_ABSOLUTE 0X0000L -#define KSPROPERTY_CAMERACONTROL_FLAGS_RELATIVE 0X0010L - -#ifndef __EDevCtrl__ -#define __EDevCtrl__ -//=========================================================================== - -#define STATIC_PROPSETID_EXT_DEVICE\ - 0xB5730A90L, 0x1A2C, 0x11cf, 0x8c, 0x23, 0x00, 0xAA, 0x00, 0x6B, 0x68, 0x14 -DEFINE_GUIDSTRUCT("B5730A90-1A2C-11cf-8C23-00AA006B6814", PROPSETID_EXT_DEVICE); -#define PROPSETID_EXT_DEVICE DEFINE_GUIDNAMED(PROPSETID_EXT_DEVICE) - -typedef enum { - KSPROPERTY_EXTDEVICE_ID, // R - KSPROPERTY_EXTDEVICE_VERSION, // R - KSPROPERTY_EXTDEVICE_POWER_STATE, // RW - KSPROPERTY_EXTDEVICE_PORT, // R - KSPROPERTY_EXTDEVICE_CAPABILITIES, // R -} KSPROPERTY_EXTDEVICE; - -typedef struct tagDEVCAPS{ - LONG CanRecord; - LONG CanRecordStrobe; - LONG HasAudio; - LONG HasVideo; - LONG UsesFiles; - LONG CanSave; - LONG DeviceType; - LONG TCRead; - LONG TCWrite; - LONG CTLRead; - LONG IndexRead; - LONG Preroll; - LONG Postroll; - LONG SyncAcc; - LONG NormRate; - LONG CanPreview; - LONG CanMonitorSrc; - LONG CanTest; - LONG VideoIn; - LONG AudioIn; - LONG Calibrate; - LONG SeekType; - LONG SimulatedHardware; -} DEVCAPS, *PDEVCAPS; - -typedef struct { - KSPROPERTY Property; - union { - DEVCAPS Capabilities; // Device capabilities - ULONG DevPort; // 1394, USB, etc. - ULONG PowerState; // On, standby or off - WCHAR pawchString[MAX_PATH]; // Version - DWORD NodeUniqueID[2]; // Unique NodeID - } u; -} KSPROPERTY_EXTDEVICE_S, *PKSPROPERTY_EXTDEVICE_S; - -//=========================================================================== - -#define STATIC_PROPSETID_EXT_TRANSPORT\ - 0xA03CD5F0L, 0x3045, 0x11cf, 0x8c, 0x44, 0x00, 0xAA, 0x00, 0x6B, 0x68, 0x14 -DEFINE_GUIDSTRUCT("A03CD5F0-3045-11cf-8C44-00AA006B6814", PROPSETID_EXT_TRANSPORT); -#define PROPSETID_EXT_TRANSPORT DEFINE_GUIDNAMED(PROPSETID_EXT_TRANSPORT) - -typedef enum { - KSPROPERTY_EXTXPORT_CAPABILITIES, // (R) Transport specific capability - KSPROPERTY_EXTXPORT_INPUT_SIGNAL_MODE, // (RW) Input signal: e.g. dvsd/NTSC/PAL, dvsl/NTSC/PAL, MPEG2-TS etc - KSPROPERTY_EXTXPORT_OUTPUT_SIGNAL_MODE, // (RW) Output signal: e.g. dvsd/NTSC/PAL, dvsl/NTSC/PAL, MPEG2-TS etc - KSPROPERTY_EXTXPORT_LOAD_MEDIUM, // (RW) Eject, open tray, close tray - KSPROPERTY_EXTXPORT_MEDIUM_INFO, // (R) Cassettte type, tape grade and write protection - KSPROPERTY_EXTXPORT_STATE, // (RW) Current transport mode and state - KSPROPERTY_EXTXPORT_STATE_NOTIFY, // (RW) Notify of transport mode and state change - KSPROPERTY_EXTXPORT_TIMECODE_SEARCH, // (W) Search to a specific timecode on a tape - KSPROPERTY_EXTXPORT_ATN_SEARCH, // (W) Search to a specific absolute track number (ATN) on a tape - KSPROPERTY_EXTXPORT_RTC_SEARCH, // (W) Search to a specific relative time counter (RTC) on a tape - KSPROPERTY_RAW_AVC_CMD, // (RW) Issue a raw AVC commnad -} KSPROPERTY_EXTXPORT; - -typedef struct tagTRANSPORTSTATUS{ - LONG Mode; - LONG LastError; - LONG RecordInhibit; - LONG ServoLock; - LONG MediaPresent; - LONG MediaLength; - LONG MediaSize; - LONG MediaTrackCount; - LONG MediaTrackLength; - LONG MediaTrackSide; - LONG MediaType; - LONG LinkMode; - LONG NotifyOn; -} TRANSPORTSTATUS, *PTRANSPORTSTATUS; - -typedef struct tagTRANSPORTBASICPARMS{ - LONG TimeFormat; - LONG TimeReference; - LONG Superimpose; - LONG EndStopAction; - LONG RecordFormat; - LONG StepFrames; - LONG SetpField; - LONG Preroll; - LONG RecPreroll; - LONG Postroll; - LONG EditDelay; - LONG PlayTCDelay; - LONG RecTCDelay; - LONG EditField; - LONG FrameServo; - LONG ColorFrameServo; - LONG ServoRef; - LONG WarnGenlock; - LONG SetTracking; - TCHAR VolumeName[40]; - LONG Ballistic[20]; - LONG Speed; - LONG CounterFormat; - LONG TunerChannel; - LONG TunerNumber; - LONG TimerEvent; - LONG TimerStartDay; - LONG TimerStartTime; - LONG TimerStopDay; - LONG TimerStopTime; -} TRANSPORTBASICPARMS, *PTRANSPORTBASICPARMS; - -typedef struct tagTRANSPORTVIDEOPARMS{ - LONG OutputMode; - LONG Input; -} TRANSPORTVIDEOPARMS, *PTRANSPORTVIDEOPARMS; - -typedef struct tagTRANSPORTAUDIOPARMS{ - LONG EnableOutput; - LONG EnableRecord; - LONG EnableSelsync; - LONG Input; - LONG MonitorSource; -} TRANSPORTAUDIOPARMS, *PTRANSPORTAUDIOPARMS; - -typedef struct { - BOOL MediaPresent; - ULONG MediaType; - BOOL RecordInhibit; -} MEDIUM_INFO, *PMEDIUM_INFO; - -typedef struct { - ULONG Mode; - ULONG State; -} TRANSPORT_STATE, *PTRANSPORT_STATE; - -typedef struct { - KSPROPERTY Property; - union { - ULONG Capabilities; - ULONG SignalMode; - ULONG LoadMedium; - MEDIUM_INFO MediumInfo; - TRANSPORT_STATE XPrtState; - struct { - BYTE frame; - BYTE second; - BYTE minute; - BYTE hour; - } Timecode; - DWORD dwTimecode; - DWORD dwAbsTrackNumber; - struct { - ULONG PayloadSize; - BYTE Payload[512]; - } RawAVC; - } u; - -} KSPROPERTY_EXTXPORT_S, *PKSPROPERTY_EXTXPORT_S; - -typedef struct { - KSP_NODE NodeProperty; - union { - ULONG Capabilities; - ULONG SignalMode; - ULONG LoadMedium; - MEDIUM_INFO MediumInfo; - TRANSPORT_STATE XPrtState; - struct { - BYTE frame; - BYTE second; - BYTE minute; - BYTE hour; - } Timecode; - DWORD dwTimecode; - DWORD dwAbsTrackNumber; - struct { - ULONG PayloadSize; - BYTE Payload[512]; - } RawAVC; - } u; - -} KSPROPERTY_EXTXPORT_NODE_S, *PKSPROPERTY_EXTXPORT_NODE_S; - -//=========================================================================== - -#define STATIC_PROPSETID_TIMECODE_READER\ - 0x9B496CE1L, 0x811B, 0x11cf, 0x8C, 0x77, 0x00, 0xAA, 0x00, 0x6B, 0x68, 0x14 -DEFINE_GUIDSTRUCT("9B496CE1-811B-11cf-8C77-00AA006B6814", PROPSETID_TIMECODE_READER); -#define PROPSETID_TIMECODE_READER DEFINE_GUIDNAMED(PROPSETID_TIMECODE_READER) - -typedef enum { - KSPROPERTY_TIMECODE_READER, // (R) Timecode for the current tape position - KSPROPERTY_ATN_READER, // (R) Absolute track number for the current tape position - KSPROPERTY_RTC_READER, // (R) Relative time counter for the current tape position -} KSPROPERTY_TIMECODE; - -#ifndef TIMECODE_DEFINED -#define TIMECODE_DEFINED -typedef union _timecode { - struct { - WORD wFrameRate; - WORD wFrameFract; - DWORD dwFrames; - }; - DWORDLONG qw; -} TIMECODE; -typedef TIMECODE *PTIMECODE; - -typedef struct tagTIMECODE_SAMPLE { - LONGLONG qwTick; - TIMECODE timecode; - DWORD dwUser; - DWORD dwFlags; -} TIMECODE_SAMPLE; - -typedef TIMECODE_SAMPLE *PTIMECODE_SAMPLE; - -#endif /* TIMECODE_DEFINED */ - -typedef struct { - KSPROPERTY Property; - TIMECODE_SAMPLE TimecodeSamp; -} KSPROPERTY_TIMECODE_S, *PKSPROPERTY_TIMECODE_S; - -typedef struct { - KSP_NODE NodeProperty; - TIMECODE_SAMPLE TimecodeSamp; -} KSPROPERTY_TIMECODE_NODE_S, *PKSPROPERTY_TIMECODE_NODE_S; - -//=========================================================================== - -#define STATIC_KSEVENTSETID_EXTDEV_Command\ - 0x109c7988L, 0xb3cb, 0x11d2, 0xb4, 0x8e, 0x00, 0x60, 0x97, 0xb3, 0x39, 0x1b -DEFINE_GUIDSTRUCT("109c7988-b3cb-11d2-b48e-006097b3391b", KSEVENTSETID_EXTDEV_Command); -#define KSEVENTSETID_EXTDEV_Command DEFINE_GUIDNAMED(KSEVENTSETID_EXTDEV_Command) - -typedef enum { - KSEVENT_EXTDEV_COMMAND_NOTIFY_INTERIM_READY, // Final response is ready for notify command - KSEVENT_EXTDEV_COMMAND_CONTROL_INTERIM_READY, // Final response is ready for control command. - KSEVENT_EXTDEV_COMMAND_BUSRESET, // A bus reset has occured. - KSEVENT_EXTDEV_TIMECODE_UPDATE, // Timecode has changed. - KSEVENT_EXTDEV_OPERATION_MODE_UPDATE, // Operting mode (VCR,Camera, etc.) has changed. - KSEVENT_EXTDEV_TRANSPORT_STATE_UPDATE, // Transport state has changed. - KSEVENT_EXTDEV_NOTIFY_REMOVAL, // Device was surprise removal. - KSEVENT_EXTDEV_NOTIFY_MEDIUM_CHANGE, // Tape medium is removed or added. -} KSEVENT_DEVCMD; - -#endif // __EDevCtrl__ - - -//=========================================================================== - - -#define STATIC_PROPSETID_VIDCAP_CROSSBAR\ - 0x6a2e0640L, 0x28e4, 0x11d0, 0xa1, 0x8c, 0x00, 0xa0, 0xc9, 0x11, 0x89, 0x56 -DEFINE_GUIDSTRUCT("6a2e0640-28e4-11d0-a18c-00a0c9118956", PROPSETID_VIDCAP_CROSSBAR); -#define PROPSETID_VIDCAP_CROSSBAR DEFINE_GUIDNAMED(PROPSETID_VIDCAP_CROSSBAR) - -typedef enum { - KSPROPERTY_CROSSBAR_CAPS, // R - KSPROPERTY_CROSSBAR_PININFO, // R - KSPROPERTY_CROSSBAR_CAN_ROUTE, // R - KSPROPERTY_CROSSBAR_ROUTE, // RW -} KSPROPERTY_VIDCAP_CROSSBAR; - -typedef struct { - KSPROPERTY Property; - ULONG NumberOfInputs; // the number of audio and video input pins - ULONG NumberOfOutputs; // the number of audio and video output pins -} KSPROPERTY_CROSSBAR_CAPS_S, *PKSPROPERTY_CROSSBAR_CAPS_S; - -typedef struct { - KSPROPERTY Property; - KSPIN_DATAFLOW Direction; // KSPIN_DATAFLOW_IN or KSPIN_DATAFLOW_OUT? - ULONG Index; // Which pin to return data for? - ULONG PinType; // KS_PhysConn_Video_* or KS_PhysConn_Audio_* - ULONG RelatedPinIndex; // For video pins, this is the related audio pin - KSPIN_MEDIUM Medium; // Identifies the hardware connection -} KSPROPERTY_CROSSBAR_PININFO_S, *PKSPROPERTY_CROSSBAR_PININFO_S; - -typedef struct { - KSPROPERTY Property; - ULONG IndexInputPin; // Zero based index of the input pin - ULONG IndexOutputPin; // Zero based index of the output pin - ULONG CanRoute; // returns non-zero on CAN_ROUTE if routing is possible -} KSPROPERTY_CROSSBAR_ROUTE_S, *PKSPROPERTY_CROSSBAR_ROUTE_S; - -#define STATIC_EVENTSETID_CROSSBAR\ - 0x6a2e0641L, 0x28e4, 0x11d0, 0xa1, 0x8c, 0x00, 0xa0, 0xc9, 0x11, 0x89, 0x56 -DEFINE_GUIDSTRUCT("6a2e0641-28e4-11d0-a18c-00a0c9118956", EVENTSETID_CROSSBAR); -#define EVENTSETID_CROSSBAR DEFINE_GUIDNAMED(EVENTSETID_CROSSBAR) - -typedef enum { - KSEVENT_CROSSBAR_CHANGED -} KSEVENT_CROSSBAR; - -// The following IDs should match the AM equivalents -typedef enum { - KS_PhysConn_Video_Tuner = 1, - KS_PhysConn_Video_Composite, - KS_PhysConn_Video_SVideo, - KS_PhysConn_Video_RGB, - KS_PhysConn_Video_YRYBY, - KS_PhysConn_Video_SerialDigital, - KS_PhysConn_Video_ParallelDigital, - KS_PhysConn_Video_SCSI, - KS_PhysConn_Video_AUX, - KS_PhysConn_Video_1394, - KS_PhysConn_Video_USB, - KS_PhysConn_Video_VideoDecoder, - KS_PhysConn_Video_VideoEncoder, - KS_PhysConn_Video_SCART, - - KS_PhysConn_Audio_Tuner = 4096, - KS_PhysConn_Audio_Line, - KS_PhysConn_Audio_Mic, - KS_PhysConn_Audio_AESDigital, - KS_PhysConn_Audio_SPDIFDigital, - KS_PhysConn_Audio_SCSI, - KS_PhysConn_Audio_AUX, - KS_PhysConn_Audio_1394, - KS_PhysConn_Audio_USB, - KS_PhysConn_Audio_AudioDecoder, -} KS_PhysicalConnectorType; - - -//=========================================================================== - -#define STATIC_PROPSETID_VIDCAP_TVAUDIO\ - 0x6a2e0650L, 0x28e4, 0x11d0, 0xa1, 0x8c, 0x00, 0xa0, 0xc9, 0x11, 0x89, 0x56 -DEFINE_GUIDSTRUCT("6a2e0650-28e4-11d0-a18c-00a0c9118956", PROPSETID_VIDCAP_TVAUDIO); -#define PROPSETID_VIDCAP_TVAUDIO DEFINE_GUIDNAMED(PROPSETID_VIDCAP_TVAUDIO) - -typedef enum { - KSPROPERTY_TVAUDIO_CAPS, // R - KSPROPERTY_TVAUDIO_MODE, // RW - KSPROPERTY_TVAUDIO_CURRENTLY_AVAILABLE_MODES // R -} KSPROPERTY_VIDCAP_TVAUDIO; - -#define KS_TVAUDIO_MODE_MONO 0x0001 // Mono -#define KS_TVAUDIO_MODE_STEREO 0x0002 // Stereo -#define KS_TVAUDIO_MODE_LANG_A 0x0010 // Primary language -#define KS_TVAUDIO_MODE_LANG_B 0x0020 // 2nd avail language -#define KS_TVAUDIO_MODE_LANG_C 0x0040 // 3rd avail language - -typedef struct { - KSPROPERTY Property; - ULONG Capabilities; // Bitmask of KS_TVAUDIO_MODE_* - KSPIN_MEDIUM InputMedium; - KSPIN_MEDIUM OutputMedium; -} KSPROPERTY_TVAUDIO_CAPS_S, *PKSPROPERTY_TVAUDIO_CAPS_S; - -typedef struct { - KSPROPERTY Property; - ULONG Mode; // KS_TVAUDIO_MODE_* -} KSPROPERTY_TVAUDIO_S, *PKSPROPERTY_TVAUDIO_S; - - -#define STATIC_KSEVENTSETID_VIDCAP_TVAUDIO\ - 0x6a2e0651L, 0x28e4, 0x11d0, 0xa1, 0x8c, 0x00, 0xa0, 0xc9, 0x11, 0x89, 0x56 -DEFINE_GUIDSTRUCT("6a2e0651-28e4-11d0-a18c-00a0c9118956", KSEVENTSETID_VIDCAP_TVAUDIO); -#define KSEVENTSETID_VIDCAP_TVAUDIO DEFINE_GUIDNAMED(KSEVENTSETID_VIDCAP_TVAUDIO) - -typedef enum { - KSEVENT_TVAUDIO_CHANGED, -} KSEVENT_TVAUDIO; - -//=========================================================================== -#define STATIC_PROPSETID_VIDCAP_VIDEOCOMPRESSION\ - 0xC6E13343L, 0x30AC, 0x11d0, 0xA1, 0x8C, 0x00, 0xA0, 0xC9, 0x11, 0x89, 0x56 -DEFINE_GUIDSTRUCT("C6E13343-30AC-11d0-A18C-00A0C9118956", PROPSETID_VIDCAP_VIDEOCOMPRESSION); -#define PROPSETID_VIDCAP_VIDEOCOMPRESSION DEFINE_GUIDNAMED(PROPSETID_VIDCAP_VIDEOCOMPRESSION) - -typedef enum { - KSPROPERTY_VIDEOCOMPRESSION_GETINFO, // R - KSPROPERTY_VIDEOCOMPRESSION_KEYFRAME_RATE, // RW - KSPROPERTY_VIDEOCOMPRESSION_PFRAMES_PER_KEYFRAME, // RW - KSPROPERTY_VIDEOCOMPRESSION_QUALITY, // RW - KSPROPERTY_VIDEOCOMPRESSION_OVERRIDE_KEYFRAME, // W - KSPROPERTY_VIDEOCOMPRESSION_OVERRIDE_FRAME_SIZE, // W - KSPROPERTY_VIDEOCOMPRESSION_WINDOWSIZE, // RW -} KSPROPERTY_VIDCAP_VIDEOCOMPRESSION; - -typedef enum { - KS_CompressionCaps_CanQuality = 1, - KS_CompressionCaps_CanCrunch = 2, - KS_CompressionCaps_CanKeyFrame = 4, - KS_CompressionCaps_CanBFrame = 8, - KS_CompressionCaps_CanWindow = 0x10, -} KS_CompressionCaps; - -typedef struct { - KSPROPERTY Property; - // Note, no VersionString! - // Note, no DescriptionString! - ULONG StreamIndex; // zero based index of stream - LONG DefaultKeyFrameRate; // Key frame rate - LONG DefaultPFrameRate; // Predeicted frames per Key frame - LONG DefaultQuality; // 0 to 10000 - LONG NumberOfQualitySettings; // How many discreet quality settings? - LONG Capabilities; // KS_CompressionCaps_* -} KSPROPERTY_VIDEOCOMPRESSION_GETINFO_S, *PKSPROPERTY_VIDEOCOMPRESSION_GETINFO_S; - -typedef struct { - KSPROPERTY Property; - ULONG StreamIndex; // zero based index of stream - LONG Value; // value to get or set -} KSPROPERTY_VIDEOCOMPRESSION_S, *PKSPROPERTY_VIDEOCOMPRESSION_S; - -//=========================================================================== -// MEDIASUBTYPE_Overlay -#define STATIC_KSDATAFORMAT_SUBTYPE_OVERLAY\ - 0xe436eb7fL, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70 -DEFINE_GUIDSTRUCT("e436eb7f-524f-11ce-9f53-0020af0ba770", KSDATAFORMAT_SUBTYPE_OVERLAY); -#define KSDATAFORMAT_SUBTYPE_OVERLAY DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_OVERLAY) - -#define STATIC_KSPROPSETID_OverlayUpdate\ - 0x490EA5CFL, 0x7681, 0x11D1, 0xA2, 0x1C, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 -DEFINE_GUIDSTRUCT("490EA5CF-7681-11D1-A21C-00A0C9223196", KSPROPSETID_OverlayUpdate); -#define KSPROPSETID_OverlayUpdate DEFINE_GUIDNAMED(KSPROPSETID_OverlayUpdate) - -typedef enum { - KSPROPERTY_OVERLAYUPDATE_INTERESTS, - KSPROPERTY_OVERLAYUPDATE_CLIPLIST = 0x1, - KSPROPERTY_OVERLAYUPDATE_PALETTE = 0x2, - KSPROPERTY_OVERLAYUPDATE_COLORKEY = 0x4, - KSPROPERTY_OVERLAYUPDATE_VIDEOPOSITION = 0x8, - KSPROPERTY_OVERLAYUPDATE_DISPLAYCHANGE = 0x10, - KSPROPERTY_OVERLAYUPDATE_COLORREF = 0x10000000 -} KSPROPERTY_OVERLAYUPDATE; - -typedef struct { - ULONG PelsWidth; - ULONG PelsHeight; - ULONG BitsPerPel; - WCHAR DeviceID[1]; -} KSDISPLAYCHANGE, *PKSDISPLAYCHANGE; - -#define DEFINE_KSPROPERTY_ITEM_OVERLAYUPDATE_INTERESTS(Handler)\ - DEFINE_KSPROPERTY_ITEM(\ - KSPROPERTY_OVERLAYUPDATE_INTERESTS,\ - (Handler),\ - sizeof(KSPROPERTY),\ - sizeof(ULONG),\ - NULL, NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_OVERLAYUPDATE_PALETTE(Handler)\ - DEFINE_KSPROPERTY_ITEM(\ - KSPROPERTY_OVERLAYUPDATE_PALETTE,\ - NULL,\ - sizeof(KSPROPERTY),\ - 0,\ - (Handler),\ - NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_OVERLAYUPDATE_COLORKEY(Handler)\ - DEFINE_KSPROPERTY_ITEM(\ - KSPROPERTY_OVERLAYUPDATE_COLORKEY,\ - NULL,\ - sizeof(KSPROPERTY),\ - sizeof(COLORKEY),\ - (Handler),\ - NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_OVERLAYUPDATE_CLIPLIST(Handler)\ - DEFINE_KSPROPERTY_ITEM(\ - KSPROPERTY_OVERLAYUPDATE_CLIPLIST,\ - NULL,\ - sizeof(KSPROPERTY),\ - 2 * sizeof(RECT) + sizeof(RGNDATAHEADER),\ - (Handler),\ - NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_OVERLAYUPDATE_VIDEOPOSITION(Handler)\ - DEFINE_KSPROPERTY_ITEM(\ - KSPROPERTY_OVERLAYUPDATE_VIDEOPOSITION,\ - NULL,\ - sizeof(KSPROPERTY),\ - 2 * sizeof(RECT),\ - (Handler),\ - NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_OVERLAYUPDATE_DISPLAYCHANGE(Handler)\ - DEFINE_KSPROPERTY_ITEM(\ - KSPROPERTY_OVERLAYUPDATE_DISPLAYCHANGE,\ - NULL,\ - sizeof(KSPROPERTY),\ - sizeof(KSDISPLAYCHANGE),\ - (Handler),\ - NULL, 0, NULL, NULL, 0) - -#define DEFINE_KSPROPERTY_ITEM_OVERLAYUPDATE_COLORREF(Handler)\ - DEFINE_KSPROPERTY_ITEM(\ - KSPROPERTY_OVERLAYUPDATE_COLORREF,\ - (Handler),\ - sizeof(KSPROPERTY),\ - sizeof(COLORREF),\ - NULL,\ - NULL, 0, NULL, NULL, 0) - -//=========================================================================== -#define STATIC_PROPSETID_VIDCAP_VIDEOCONTROL\ - 0x6a2e0670L, 0x28e4, 0x11d0, 0xa1, 0x8c, 0x00, 0xa0, 0xc9, 0x11, 0x89, 0x56 -DEFINE_GUIDSTRUCT("6a2e0670-28e4-11d0-a18c-00a0c9118956", PROPSETID_VIDCAP_VIDEOCONTROL); -#define PROPSETID_VIDCAP_VIDEOCONTROL DEFINE_GUIDNAMED(PROPSETID_VIDCAP_VIDEOCONTROL) - -typedef enum { - KSPROPERTY_VIDEOCONTROL_CAPS, // R - KSPROPERTY_VIDEOCONTROL_ACTUAL_FRAME_RATE, // R O - KSPROPERTY_VIDEOCONTROL_FRAME_RATES, // R O - KSPROPERTY_VIDEOCONTROL_MODE, // RWO -} KSPROPERTY_VIDCAP_VIDEOCONTROL; - -typedef enum { - KS_VideoControlFlag_FlipHorizontal = 0x0001, - KS_VideoControlFlag_FlipVertical = 0x0002, - KS_Obsolete_VideoControlFlag_ExternalTriggerEnable = 0x0010, // ***WARNING *** Flag msimatch with DSHOW. - KS_Obsolete_VideoControlFlag_Trigger = 0x0020, // ***WARNING *** Flag msimatch with DSHOW. - KS_VideoControlFlag_ExternalTriggerEnable = 0x0004, - KS_VideoControlFlag_Trigger = 0x0008, -} KS_VideoControlFlags; - -typedef struct { - KSPROPERTY Property; - ULONG StreamIndex; - ULONG VideoControlCaps; // KS_VideoControlFlags_* -} KSPROPERTY_VIDEOCONTROL_CAPS_S, *PKSPROPERTY_VIDEOCONTROL_CAPS_S; - -typedef struct { - KSPROPERTY Property; - ULONG StreamIndex; - LONG Mode; // KS_VideoControlFlags_* -} KSPROPERTY_VIDEOCONTROL_MODE_S, *PKSPROPERTY_VIDEOCONTROL_MODE_S; - -typedef struct { - KSPROPERTY Property; - ULONG StreamIndex; // Index of stream - ULONG RangeIndex; // Index of range - SIZE Dimensions; // Size of image - LONGLONG CurrentActualFrameRate; // Only correct if pin is open - LONGLONG CurrentMaxAvailableFrameRate; // Max Rate temporarily limited on USB or 1394? -} KSPROPERTY_VIDEOCONTROL_ACTUAL_FRAME_RATE_S, *PKSPROPERTY_VIDEOCONTROL_ACTUAL_FRAME_RATE_S; - -// KSPROPERTY_VIDEOCONTROL_FRAME_RATES returns a list of available frame rates in 100 nS units -typedef struct { - KSPROPERTY Property; - ULONG StreamIndex; // Index of stream - ULONG RangeIndex; // Index of range - SIZE Dimensions; // Size of image -} KSPROPERTY_VIDEOCONTROL_FRAME_RATES_S, *PKSPROPERTY_VIDEOCONTROL_FRAME_RATES_S; - -//=========================================================================== -#define STATIC_PROPSETID_VIDCAP_DROPPEDFRAMES\ - 0xC6E13344L, 0x30AC, 0x11d0, 0xa1, 0x8c, 0x00, 0xa0, 0xc9, 0x11, 0x89, 0x56 -DEFINE_GUIDSTRUCT("C6E13344-30AC-11d0-A18C-00A0C9118956", PROPSETID_VIDCAP_DROPPEDFRAMES); -#define PROPSETID_VIDCAP_DROPPEDFRAMES DEFINE_GUIDNAMED(PROPSETID_VIDCAP_DROPPEDFRAMES) - -typedef enum { - KSPROPERTY_DROPPEDFRAMES_CURRENT // R -} KSPROPERTY_VIDCAP_DROPPEDFRAMES; - -typedef struct { - KSPROPERTY Property; - LONGLONG PictureNumber; // Current Picture Number - LONGLONG DropCount; // Count of frames dropped - ULONG AverageFrameSize; // Average size of frames captured -} KSPROPERTY_DROPPEDFRAMES_CURRENT_S, *PKSPROPERTY_DROPPEDFRAMES_CURRENT_S; - -//=========================================================================== -// VPE - -#define STATIC_KSPROPSETID_VPConfig\ - 0xbc29a660L, 0x30e3, 0x11d0, 0x9e, 0x69, 0x00, 0xc0, 0x4f, 0xd7, 0xc1, 0x5b -DEFINE_GUIDSTRUCT("bc29a660-30e3-11d0-9e69-00c04fd7c15b", KSPROPSETID_VPConfig); -#define KSPROPSETID_VPConfig DEFINE_GUIDNAMED(KSPROPSETID_VPConfig) - -#define STATIC_KSPROPSETID_VPVBIConfig\ - 0xec529b00L, 0x1a1f, 0x11d1, 0xba, 0xd9, 0x0, 0x60, 0x97, 0x44, 0x11, 0x1a -DEFINE_GUIDSTRUCT("ec529b00-1a1f-11d1-bad9-00609744111a", KSPROPSETID_VPVBIConfig); -#define KSPROPSETID_VPVBIConfig DEFINE_GUIDNAMED(KSPROPSETID_VPVBIConfig) - -// Both of the above property sets use the same list of properties below - -typedef enum { - KSPROPERTY_VPCONFIG_NUMCONNECTINFO, - KSPROPERTY_VPCONFIG_GETCONNECTINFO, - KSPROPERTY_VPCONFIG_SETCONNECTINFO, - KSPROPERTY_VPCONFIG_VPDATAINFO, - KSPROPERTY_VPCONFIG_MAXPIXELRATE, - KSPROPERTY_VPCONFIG_INFORMVPINPUT, - KSPROPERTY_VPCONFIG_NUMVIDEOFORMAT, - KSPROPERTY_VPCONFIG_GETVIDEOFORMAT, - KSPROPERTY_VPCONFIG_SETVIDEOFORMAT, - KSPROPERTY_VPCONFIG_INVERTPOLARITY, - KSPROPERTY_VPCONFIG_DECIMATIONCAPABILITY, // E_NOTIMPL for VBI - KSPROPERTY_VPCONFIG_SCALEFACTOR, // E_NOTIMPL for VBI - KSPROPERTY_VPCONFIG_DDRAWHANDLE, - KSPROPERTY_VPCONFIG_VIDEOPORTID, - KSPROPERTY_VPCONFIG_DDRAWSURFACEHANDLE, - KSPROPERTY_VPCONFIG_SURFACEPARAMS -} KSPROPERTY_VPCONFIG; - -//========================= -// IBasicAudio -// -#define STATIC_CLSID_KsIBasicAudioInterfaceHandler\ - 0xb9f8ac3e, 0x0f71, 0x11d2, 0xb7, 0x2c, 0x00, 0xc0, 0x4f, 0xb6, 0xbd, 0x3d -DEFINE_GUIDSTRUCT("b9f8ac3e-0f71-11d2-b72c-00c04fb6bd3d", CLSID_KsIBasicAudioInterfaceHandler); -#define CLSID_KsIBasicAudioInterfaceHandler DEFINE_GUIDNAMED(CLSID_KsIBasicAudioInterfaceHandler) - - -#if defined(__IVPType__) - -typedef struct { - AMVPSIZE Size; - DWORD MaxPixelsPerSecond; - DWORD Reserved; -} KSVPMAXPIXELRATE, *PKSVPMAXPIXELRATE; - -typedef struct { - KSPROPERTY Property; - AMVPSIZE Size; -} KSVPSIZE_PROP, *PKSVPSIZE_PROP; - -typedef struct { - DWORD dwPitch; - DWORD dwXOrigin; - DWORD dwYOrigin; -} KSVPSURFACEPARAMS, *PKSVPSURFACEPARAMS; - -#else // !defined(__IVPType__) - -#if !defined(__DDRAW_INCLUDED__) - -//========================================================================== -// The following definitions must be in sync with DDraw.h in DirectX SDK -//========================================================================== - -/* - * The FourCC code is valid. - */ -#define DDPF_FOURCC 0x00000004l - - -typedef struct _DDPIXELFORMAT -{ - DWORD dwSize; // size of structure - DWORD dwFlags; // pixel format flags - DWORD dwFourCC; // (FOURCC code) - union - { - DWORD dwRGBBitCount; // how many bits per pixel (BD_1,2,4,8,16,24,32) - DWORD dwYUVBitCount; // how many bits per pixel (BD_4,8,16,24,32) - DWORD dwZBufferBitDepth; // how many bits for z buffers (BD_8,16,24,32) - DWORD dwAlphaBitDepth; // how many bits for alpha channels (BD_1,2,4,8) - }; - union - { - DWORD dwRBitMask; // mask for red bit - DWORD dwYBitMask; // mask for Y bits - }; - union - { - DWORD dwGBitMask; // mask for green bits - DWORD dwUBitMask; // mask for U bits - }; - union - { - DWORD dwBBitMask; // mask for blue bits - DWORD dwVBitMask; // mask for V bits - }; - union - { - DWORD dwRGBAlphaBitMask; // mask for alpha channel - DWORD dwYUVAlphaBitMask; // mask for alpha channel - DWORD dwRGBZBitMask; // mask for Z channel - DWORD dwYUVZBitMask; // mask for Z channel - }; -} DDPIXELFORMAT, * LPDDPIXELFORMAT; - -#endif // !defined(__DDRAW_INCLUDED__) - -//========================================================================== -// End of DDraw.h header info -//========================================================================== - -//========================================================================== -// The following definitions must be in sync with DVP.h in DirectX SDK -//========================================================================== - -#if !defined(__DVP_INCLUDED__) - -typedef struct _DDVIDEOPORTCONNECT { - DWORD dwSize; // size of the DDVIDEOPORTCONNECT structure - DWORD dwPortWidth; // Width of the video port - GUID guidTypeID; // Description of video port connection - DWORD dwFlags; // Connection flags - DWORD dwReserved1; // Reserved, set to zero. -} DDVIDEOPORTCONNECT, * LPDDVIDEOPORTCONNECT; - -#define DDVPTYPE_E_HREFH_VREFH \ - 0x54F39980L,0xDA60,0x11CF,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8 - -#define DDVPTYPE_E_HREFL_VREFL \ - 0xE09C77E0L,0xDA60,0x11CF,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8 - -#endif // !defined(__DVP_INCLUDED__) - -//========================================================================== -// End of DVP.h header info -//========================================================================== - - -//========================================================================== -// The following definitions must be in sync with VPType.h in AM 2.0 SDK -//========================================================================== - -// pixel aspect ratios corresponding to a 720x480 NTSC image or a 720x576 image -typedef enum // AMPixAspectRatio -{ - KS_PixAspectRatio_NTSC4x3, - KS_PixAspectRatio_NTSC16x9, - KS_PixAspectRatio_PAL4x3, - KS_PixAspectRatio_PAL16x9, -} KS_AMPixAspectRatio ; - -typedef enum // AMVP_SELECTFORMATBY -{ - KS_AMVP_DO_NOT_CARE, - KS_AMVP_BEST_BANDWIDTH, - KS_AMVP_INPUT_SAME_AS_OUTPUT -} KS_AMVP_SELECTFORMATBY; - -typedef enum // AMVP_MODE -{ - KS_AMVP_MODE_WEAVE, - KS_AMVP_MODE_BOBINTERLEAVED, - KS_AMVP_MODE_BOBNONINTERLEAVED, - KS_AMVP_MODE_SKIPEVEN, - KS_AMVP_MODE_SKIPODD -} KS_AMVP_MODE ; - -typedef struct tagKS_AMVPDIMINFO // AMVPDIMINFO -{ - DWORD dwFieldWidth ; // [out] field width - DWORD dwFieldHeight ; // [out] field height - DWORD dwVBIWidth ; // [out] VBI data width - DWORD dwVBIHeight ; // [out] VBI data height - RECT rcValidRegion ; // [out] valid rect for data cropping -} KS_AMVPDIMINFO, *PKS_AMVPDIMINFO ; - -typedef struct tagKS_AMVPDATAINFO // AMVPDATAINFO -{ - DWORD dwSize; // Size of the struct - DWORD dwMicrosecondsPerField; // Time taken by each field - KS_AMVPDIMINFO amvpDimInfo; // Dimensional Information - DWORD dwPictAspectRatioX; // Pict aspect ratio in X dimn - DWORD dwPictAspectRatioY; // Pict aspect ratio in Y dimn - BOOL bEnableDoubleClock; // Videoport should enable double clocking - BOOL bEnableVACT; // Videoport should use an external VACT signal - BOOL bDataIsInterlaced; // Indicates that the signal is interlaced - LONG lHalfLinesOdd; // number of halflines in the odd field - BOOL bFieldPolarityInverted; // Device inverts the polarity by default - DWORD dwNumLinesInVREF; // Number of lines of data in VREF - LONG lHalfLinesEven; // number of halflines in the even field - DWORD dwReserved1; // Reserved for future use -} KS_AMVPDATAINFO, *PKS_AMVPDATAINFO; - -typedef struct tagKS_AMVPSIZE // AMVPSIZE -{ - DWORD dwWidth ; // [in] width in pixels - DWORD dwHeight ; // [in] height in pixels -} KS_AMVPSIZE, *PKS_AMVPSIZE ; - -//========================================================================== -// End of VPType.h header info -//========================================================================== - -typedef struct { - KS_AMVPSIZE Size; - DWORD MaxPixelsPerSecond; - DWORD Reserved; -} KSVPMAXPIXELRATE, *PKSVPMAXPIXELRATE; - -typedef struct { - KSPROPERTY Property; - KS_AMVPSIZE Size; -} KSVPSIZE_PROP, *PKSVPSIZE_PROP; - -typedef struct { - DWORD dwPitch; - DWORD dwXOrigin; - DWORD dwYOrigin; -} KSVPSURFACEPARAMS, *PKSVPSURFACEPARAMS; - -#endif // !defined(__IVPType__) - -// -// IVPNotify event notification -// -#define STATIC_KSEVENTSETID_VPNotify\ - 0x20c5598eL, 0xd3c8, 0x11d0, 0x8d, 0xfc, 0x00, 0xc0, 0x4f, 0xd7, 0xc0, 0x8b -DEFINE_GUIDSTRUCT("20c5598e-d3c8-11d0-8dfc-00c04fd7c08b", KSEVENTSETID_VPNotify); -#define KSEVENTSETID_VPNotify DEFINE_GUIDNAMED(KSEVENTSETID_VPNotify) - -typedef enum { - KSEVENT_VPNOTIFY_FORMATCHANGE, -} KSEVENT_VPNOTIFY; - -// -// VIDCAPTOSTI event notification -// -#define STATIC_KSEVENTSETID_VIDCAPTOSTI\ - 0xdb47de20, 0xf628, 0x11d1, 0xba, 0x41, 0x0, 0xa0, 0xc9, 0xd, 0x2b, 0x5 -DEFINE_GUIDSTRUCT("DB47DE20-F628-11d1-BA41-00A0C90D2B05", KSEVENTSETID_VIDCAPTOSTI); -#define KSEVENTSETID_VIDCAPNotify DEFINE_GUIDNAMED(KSEVENTSETID_VIDCAPTOSTI) - -typedef enum { - KSEVENT_VIDCAPTOSTI_EXT_TRIGGER, - KSEVENT_VIDCAP_AUTO_UPDATE, - KSEVENT_VIDCAP_SEARCH -} KSEVENT_VIDCAPTOSTI; - -// -// Extension Unit Properties -// -typedef enum { - KSPROPERTY_EXTENSION_UNIT_INFO, // (R) - KSPROPERTY_EXTENSION_UNIT_CONTROL, // (RW) - KSPROPERTY_EXTENSION_UNIT_PASS_THROUGH = 0xffff, // (RW) -} KSPROPERTY_EXTENSION_UNIT, *PKSPROPERTY_EXTENSION_UNIT; - -// -// IVPVBINotify event notification -// -#define STATIC_KSEVENTSETID_VPVBINotify\ - 0xec529b01L, 0x1a1f, 0x11d1, 0xba, 0xd9, 0x0, 0x60, 0x97, 0x44, 0x11, 0x1a -DEFINE_GUIDSTRUCT("ec529b01-1a1f-11d1-bad9-00609744111a", KSEVENTSETID_VPVBINotify); -#define KSEVENTSETID_VPVBINotify DEFINE_GUIDNAMED(KSEVENTSETID_VPVBINotify) - -typedef enum { - KSEVENT_VPVBINOTIFY_FORMATCHANGE, -} KSEVENT_VPVBINOTIFY; - - -// -// closed caption information -// - -#define STATIC_KSDATAFORMAT_TYPE_AUXLine21Data \ -0x670aea80L, 0x3a82, 0x11d0, 0xb7, 0x9b, 0x00, 0xaa, 0x00, 0x37, 0x67, 0xa7 -DEFINE_GUIDSTRUCT("670aea80-3a82-11d0-b79b-00aa003767a7", KSDATAFORMAT_TYPE_AUXLine21Data); -#define KSDATAFORMAT_TYPE_AUXLine21Data DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_AUXLine21Data) - -#define STATIC_KSDATAFORMAT_SUBTYPE_Line21_BytePair \ -0x6e8d4a22L, 0x310c, 0x11d0, 0xb7, 0x9a, 0x00, 0xaa, 0x00, 0x37, 0x67, 0xa7 -DEFINE_GUIDSTRUCT("6e8d4a22-310c-11d0-b79a-00aa003767a7", KSDATAFORMAT_SUBTYPE_Line21_BytePair); -#define KSDATAFORMAT_SUBTYPE_Line21_BytePair DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_Line21_BytePair) - -#define STATIC_KSDATAFORMAT_SUBTYPE_Line21_GOPPacket \ -0x6e8d4a23L, 0x310c, 0x11d0, 0xb7, 0x9a, 0x00, 0xaa, 0x00, 0x37, 0x67, 0xa7 -DEFINE_GUIDSTRUCT("6e8d4a23-310c-11d0-b79a-00aa003767a7", KSDATAFORMAT_SUBTYPE_Line21_GOPPacket); -#define KSDATAFORMAT_SUBTYPE_Line21_GOPPacket DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_Line21_GOPPacket) - -typedef struct _KSGOP_USERDATA { - ULONG sc; - ULONG reserved1; - BYTE cFields; - CHAR l21Data[3]; -} KSGOP_USERDATA, *PKSGOP_USERDATA; - -// -// DVD encrypted PACK format type definition -// - -#define STATIC_KSDATAFORMAT_TYPE_DVD_ENCRYPTED_PACK\ - 0xed0b916a, 0x044d, 0x11d1, 0xaa, 0x78, 0x00, 0xc0, 0x4f, 0xc3, 0x1d, 0x60 -DEFINE_GUIDSTRUCT("ed0b916a-044d-11d1-aa78-00c04fc31d60", KSDATAFORMAT_TYPE_DVD_ENCRYPTED_PACK); -#define KSDATAFORMAT_TYPE_DVD_ENCRYPTED_PACK DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_DVD_ENCRYPTED_PACK) - -#define KS_AM_UseNewCSSKey 0x1 - - -// ----------------------------------------------------------------------- -// KS_AM_KSPROPSETID_TSRateChange property set definitions for time stamp -// rate changes. -// ----------------------------------------------------------------------- - - -#define STATIC_KSPROPSETID_TSRateChange\ - 0xa503c5c0, 0x1d1d, 0x11d1, 0xad, 0x80, 0x44, 0x45, 0x53, 0x54, 0x0, 0x0 - -DEFINE_GUIDSTRUCT("A503C5C0-1D1D-11D1-AD80-444553540000", KSPROPSETID_TSRateChange); -#define KSPROPSETID_TSRateChange DEFINE_GUIDNAMED(KSPROPSETID_TSRateChange) -typedef enum { - KS_AM_RATE_SimpleRateChange=1, // rw, use KS_AM_SimpleRateChange - KS_AM_RATE_ExactRateChange=2, // rw, use KS_AM_ExactRateChange - KS_AM_RATE_MaxFullDataRate=3, // r, use KS_AM_MaxFullDataRate - KS_AM_RATE_Step=4 // w, use KS_AM_Step -} KS_AM_PROPERTY_TS_RATE_CHANGE; - -typedef struct { - // this is the simplest mechanism to set a time stamp rate change on - // a filter (simplest for the person setting the rate change, harder - // for the filter doing the rate change). - REFERENCE_TIME StartTime; //stream time at which to start this rate - LONG Rate; //new rate * 10000 (decimal) -} KS_AM_SimpleRateChange, *PKS_AM_SimpleRateChange; - -typedef struct { - REFERENCE_TIME OutputZeroTime; //input TS that maps to zero output TS - LONG Rate; //new rate * 10000 (decimal) -} KS_AM_ExactRateChange, *PKS_AM_ExactRateChange; - -typedef LONG KS_AM_MaxFullDataRate; //rate * 10000 (decimal) - -typedef DWORD KS_AM_Step; // number of frame to step - -//=========================================================================== -//ENCODER API DEFINITIONS -//=========================================================================== - -#define STATIC_KSCATEGORY_ENCODER \ - 0x19689bf6, 0xc384, 0x48fd, 0xad, 0x51, 0x90, 0xe5, 0x8c, 0x79, 0xf7, 0xb -DEFINE_GUIDSTRUCT("19689BF6-C384-48fd-AD51-90E58C79F70B", KSCATEGORY_ENCODER); -#define KSCATEGORY_ENCODER DEFINE_GUIDNAMED(KSCATEGORY_ENCODER) - -#define STATIC_KSCATEGORY_MULTIPLEXER \ - 0x7a5de1d3, 0x1a1, 0x452c, 0xb4, 0x81, 0x4f, 0xa2, 0xb9, 0x62, 0x71, 0xe8 -DEFINE_GUIDSTRUCT("7A5DE1D3-01A1-452c-B481-4FA2B96271E8", KSCATEGORY_MULTIPLEXER); -#define KSCATEGORY_MULTIPLEXER DEFINE_GUIDNAMED(KSCATEGORY_MULTIPLEXER) - -#ifndef __ENCODER_API_GUIDS__ -#define __ENCODER_API_GUIDS__ - -#define STATIC_ENCAPIPARAM_BITRATE \ - 0x49cc4c43, 0xca83, 0x4ad4, 0xa9, 0xaf, 0xf3, 0x69, 0x6a, 0xf6, 0x66, 0xdf -DEFINE_GUIDSTRUCT("49CC4C43-CA83-4ad4-A9AF-F3696AF666DF", ENCAPIPARAM_BITRATE); -#define ENCAPIPARAM_BITRATE DEFINE_GUIDNAMED(ENCAPIPARAM_BITRATE) - -#define STATIC_ENCAPIPARAM_PEAK_BITRATE \ - 0x703f16a9, 0x3d48, 0x44a1, 0xb0, 0x77, 0x1, 0x8d, 0xff, 0x91, 0x5d, 0x19 -DEFINE_GUIDSTRUCT("703F16A9-3D48-44a1-B077-018DFF915D19", ENCAPIPARAM_PEAK_BITRATE); -#define ENCAPIPARAM_PEAK_BITRATE DEFINE_GUIDNAMED(ENCAPIPARAM_PEAK_BITRATE) - -#define STATIC_ENCAPIPARAM_BITRATE_MODE \ - 0xee5fb25c, 0xc713, 0x40d1, 0x9d, 0x58, 0xc0, 0xd7, 0x24, 0x1e, 0x25, 0xf -DEFINE_GUIDSTRUCT("EE5FB25C-C713-40d1-9D58-C0D7241E250F", ENCAPIPARAM_BITRATE_MODE); -#define ENCAPIPARAM_BITRATE_MODE DEFINE_GUIDNAMED(ENCAPIPARAM_BITRATE_MODE) - -#define STATIC_CODECAPI_CHANGELISTS \ - 0x62b12acf, 0xf6b0, 0x47d9, 0x94, 0x56, 0x96, 0xf2, 0x2c, 0x4e, 0x0b, 0x9d -DEFINE_GUIDSTRUCT("62B12ACF-F6B0-47D9-9456-96F22C4E0B9D", CODECAPI_CHANGELISTS ); -#define CODECAPI_CHANGELISTS DEFINE_GUIDNAMED(CODECAPI_CHANGELISTS ) - -#define STATIC_CODECAPI_VIDEO_ENCODER \ - 0x7112e8e1, 0x3d03, 0x47ef, 0x8e, 0x60, 0x03, 0xf1, 0xcf, 0x53, 0x73, 0x01 -DEFINE_GUIDSTRUCT("7112E8E1-3D03-47EF-8E60-03F1CF537301", CODECAPI_VIDEO_ENCODER ); -#define CODECAPI_VIDEO_ENCODER DEFINE_GUIDNAMED(CODECAPI_VIDEO_ENCODER ) - -#define STATIC_CODECAPI_AUDIO_ENCODER \ - 0xb9d19a3e, 0xf897, 0x429c, 0xbc, 0x46, 0x81, 0x38, 0xb7, 0x27, 0x2b, 0x2d -DEFINE_GUIDSTRUCT("B9D19A3E-F897-429C-BC46-8138B7272B2D", CODECAPI_AUDIO_ENCODER ); -#define CODECAPI_AUDIO_ENCODER DEFINE_GUIDNAMED(CODECAPI_AUDIO_ENCODER ) - -#define STATIC_CODECAPI_SETALLDEFAULTS \ - 0x6c5e6a7c, 0xacf8, 0x4f55, 0xa9, 0x99, 0x1a, 0x62, 0x81, 0x09, 0x05, 0x1b -DEFINE_GUIDSTRUCT("6C5E6A7C-ACF8-4F55-A999-1A628109051B", CODECAPI_SETALLDEFAULTS ); -#define CODECAPI_SETALLDEFAULTS DEFINE_GUIDNAMED(CODECAPI_SETALLDEFAULTS ) - -#define STATIC_CODECAPI_ALLSETTINGS \ - 0x6a577e92, 0x83e1, 0x4113, 0xad, 0xc2, 0x4f, 0xce, 0xc3, 0x2f, 0x83, 0xa1 -DEFINE_GUIDSTRUCT("6A577E92-83E1-4113-ADC2-4FCEC32F83A1", CODECAPI_ALLSETTINGS ); -#define CODECAPI_ALLSETTINGS DEFINE_GUIDNAMED(CODECAPI_ALLSETTINGS ) - -#define STATIC_CODECAPI_SUPPORTSEVENTS \ - 0x0581af97, 0x7693, 0x4dbd, 0x9d, 0xca, 0x3f, 0x9e, 0xbd, 0x65, 0x85, 0xa1 -DEFINE_GUIDSTRUCT("0581AF97-7693-4DBD-9DCA-3F9EBD6585A1", CODECAPI_SUPPORTSEVENTS ); -#define CODECAPI_SUPPORTSEVENTS DEFINE_GUIDNAMED(CODECAPI_SUPPORTSEVENTS ) - -#define STATIC_CODECAPI_CURRENTCHANGELIST \ - 0x1cb14e83, 0x7d72, 0x4657, 0x83, 0xfd, 0x47, 0xa2, 0xc5, 0xb9, 0xd1, 0x3d -DEFINE_GUIDSTRUCT("1CB14E83-7D72-4657-83FD-47A2C5B9D13D", CODECAPI_CURRENTCHANGELIST ); -#define CODECAPI_CURRENTCHANGELIST DEFINE_GUIDNAMED(CODECAPI_CURRENTCHANGELIST ) - -#endif // __ENCODER_API_GUIDS__ - -#ifndef __ENCODER_API_DEFINES__ -#define __ENCODER_API_DEFINES__ - -typedef enum { - - // - // Bit rate used for encoding is constant - // - ConstantBitRate = 0, - - // - // Bit rate used for encoding is variable with the specified bitrate used - // as a guaranteed average over a specified window. The default window - // size is considered to be 5 minutes. - // - VariableBitRateAverage, - - // - // Bit rate used for encoding is variable with the specified bitrate used - // as an average with a peak not to exceed the specified peak bitrate over - // a specified window. The default window size is considered to be 500ms - // (classically one GOP). - // - VariableBitRatePeak - -} VIDEOENCODER_BITRATE_MODE; - -#endif // __ENCODER_API_DEFINES__ - -#endif // !defined(_KSMEDIA_) +/*++ + +Copyright (c) Microsoft Corporation. All rights reserved. + +Module Name: + + ksmedia.h + +Abstract: + + WDM-CSA Multimedia Definitions. + +--*/ + +#if !defined(_KS_) +#error KS.H must be included before KSMEDIA.H +#endif // !defined(_KS_) + +#if !defined(_KSMEDIA_) +#define _KSMEDIA_ + +typedef struct { + KSPROPERTY Property; + KSMULTIPLE_ITEM MultipleItem; +} KSMULTIPLE_DATA_PROP, *PKSMULTIPLE_DATA_PROP; + +#define STATIC_KSMEDIUMSETID_MidiBus \ + 0x05908040L, 0x3246, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 +DEFINE_GUIDSTRUCT("05908040-3246-11D0-A5D6-28DB04C10000", KSMEDIUMSETID_MidiBus); +#define KSMEDIUMSETID_MidiBus DEFINE_GUIDNAMED(KSMEDIUMSETID_MidiBus) + +#define STATIC_KSMEDIUMSETID_VPBus \ + 0xA18C15ECL, 0xCE43, 0x11D0, 0xAB, 0xE7, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 +DEFINE_GUIDSTRUCT("A18C15EC-CE43-11D0-ABE7-00A0C9223196", KSMEDIUMSETID_VPBus); +#define KSMEDIUMSETID_VPBus DEFINE_GUIDNAMED(KSMEDIUMSETID_VPBus) + +#define STATIC_KSINTERFACESETID_Media \ + 0x3A13EB40L, 0x30A7, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 +DEFINE_GUIDSTRUCT("3A13EB40-30A7-11D0-A5D6-28DB04C10000", KSINTERFACESETID_Media); +#define KSINTERFACESETID_Media DEFINE_GUIDNAMED(KSINTERFACESETID_Media) + +typedef enum { + KSINTERFACE_MEDIA_MUSIC, + KSINTERFACE_MEDIA_WAVE_BUFFERED, + KSINTERFACE_MEDIA_WAVE_QUEUED +} KSINTERFACE_MEDIA; + + +#if !defined(INIT_USBAUDIO_MID) +// {4e1cecd2-1679-463b-a72f-a5bf64c86eba} +#define INIT_USBAUDIO_MID(guid, id)\ +{\ + (guid)->Data1 = 0x4e1cecd2 + (USHORT)(id);\ + (guid)->Data2 = 0x1679;\ + (guid)->Data3 = 0x463b;\ + (guid)->Data4[0] = 0xa7;\ + (guid)->Data4[1] = 0x2f;\ + (guid)->Data4[2] = 0xa5;\ + (guid)->Data4[3] = 0xbf;\ + (guid)->Data4[4] = 0x64;\ + (guid)->Data4[5] = 0xc8;\ + (guid)->Data4[6] = 0x6e;\ + (guid)->Data4[7] = 0xba;\ +} +#define EXTRACT_USBAUDIO_MID(guid)\ + (USHORT)((guid)->Data1 - 0x4e1cecd2) +#define DEFINE_USBAUDIO_MID_GUID(id)\ + 0x4e1cecd2+(USHORT)(id), 0x1679, 0x463b, 0xa7, 0x2f, 0xa5, 0xbf, 0x64, 0xc8, 0x6e, 0xba + +#define IS_COMPATIBLE_USBAUDIO_MID(guid)\ + (((guid)->Data1 >= 0x4e1cecd2) &&\ + ((guid)->Data1 < 0x4e1cecd2 + 0xffff) &&\ + ((guid)->Data2 == 0x1679) &&\ + ((guid)->Data3 == 0x463b) &&\ + ((guid)->Data4[0] == 0xa7) &&\ + ((guid)->Data4[1] == 0x2f) &&\ + ((guid)->Data4[2] == 0xa5) &&\ + ((guid)->Data4[3] == 0xbf) &&\ + ((guid)->Data4[4] == 0x64) &&\ + ((guid)->Data4[5] == 0xc8) &&\ + ((guid)->Data4[6] == 0x6e) &&\ + ((guid)->Data4[7] == 0xba)) +#endif // !defined(INIT_USBAUDIO_MID) + +#if !defined(INIT_USBAUDIO_PID) +// {abcc5a5e-c263-463b-a72f-a5bf64c86eba} +#define INIT_USBAUDIO_PID(guid, id)\ +{\ + (guid)->Data1 = 0xabcc5a5e + (USHORT)(id);\ + (guid)->Data2 = 0xc263;\ + (guid)->Data3 = 0x463b;\ + (guid)->Data4[0] = 0xa7;\ + (guid)->Data4[1] = 0x2f;\ + (guid)->Data4[2] = 0xa5;\ + (guid)->Data4[3] = 0xbf;\ + (guid)->Data4[4] = 0x64;\ + (guid)->Data4[5] = 0xc8;\ + (guid)->Data4[6] = 0x6e;\ + (guid)->Data4[7] = 0xba;\ +} +#define EXTRACT_USBAUDIO_PID(guid)\ + (USHORT)((guid)->Data1 - 0xabcc5a5e) +#define DEFINE_USBAUDIO_PID_GUID(id)\ + 0xabcc5a5e+(USHORT)(id), 0xc263, 0x463b, 0xa7, 0x2f, 0xa5, 0xbf, 0x64, 0xc8, 0x6e, 0xba + +#define IS_COMPATIBLE_USBAUDIO_PID(guid)\ + (((guid)->Data1 >= 0xabcc5a5e) &&\ + ((guid)->Data1 < 0xabcc5a5e + 0xffff) &&\ + ((guid)->Data2 == 0xc263) &&\ + ((guid)->Data3 == 0x463b) &&\ + ((guid)->Data4[0] == 0xa7) &&\ + ((guid)->Data4[1] == 0x2f) &&\ + ((guid)->Data4[2] == 0xa5) &&\ + ((guid)->Data4[3] == 0xbf) &&\ + ((guid)->Data4[4] == 0x64) &&\ + ((guid)->Data4[5] == 0xc8) &&\ + ((guid)->Data4[6] == 0x6e) &&\ + ((guid)->Data4[7] == 0xba)) +#endif // !defined(INIT_USBAUDIO_PID) + +#if !defined(INIT_USBAUDIO_PRODUCT_NAME) +// {FC575048-2E08-463B-A72F-A5BF64C86EBA} +#define INIT_USBAUDIO_PRODUCT_NAME(guid, vid, pid, strIndex)\ +{\ + (guid)->Data1 = 0XFC575048 + (USHORT)(vid);\ + (guid)->Data2 = 0x2E08 + (USHORT)(pid);\ + (guid)->Data3 = 0x463B + (USHORT)(strIndex);\ + (guid)->Data4[0] = 0xA7;\ + (guid)->Data4[1] = 0x2F;\ + (guid)->Data4[2] = 0xA5;\ + (guid)->Data4[3] = 0xBF;\ + (guid)->Data4[4] = 0x64;\ + (guid)->Data4[5] = 0xC8;\ + (guid)->Data4[6] = 0x6E;\ + (guid)->Data4[7] = 0xBA;\ +} +#define DEFINE_USBAUDIO_PRODUCT_NAME(vid, pid, strIndex)\ + 0xFC575048+(USHORT)(vid), 0x2E08+(USHORT)(pid), 0x463B+(USHORT)(strIndex), 0xA7, 0x2F, 0xA5, 0xBF, 0x64, 0xC8, 0x6E, 0xBA +#endif // !defined(INIT_USBAUDIO_PRODUCT_NAME) + + +// USB Component ID +#define STATIC_KSCOMPONENTID_USBAUDIO \ + 0x8F1275F0, 0x26E9, 0x4264, 0xBA, 0x4D, 0x39, 0xFF, 0xF0, 0x1D, 0x94, 0xAA +DEFINE_GUIDSTRUCT("8F1275F0-26E9-4264-BA4D-39FFF01D94AA", KSCOMPONENTID_USBAUDIO); +#define KSCOMPONENTID_USBAUDIO DEFINE_GUIDNAMED(KSCOMPONENTID_USBAUDIO) + +// USB Terminals +#define INIT_USB_TERMINAL(guid, id)\ +{\ + (guid)->Data1 = 0xDFF219E0 + (USHORT)(id);\ + (guid)->Data2 = 0xF70F;\ + (guid)->Data3 = 0x11D0;\ + (guid)->Data4[0] = 0xb9;\ + (guid)->Data4[1] = 0x17;\ + (guid)->Data4[2] = 0x00;\ + (guid)->Data4[3] = 0xa0;\ + (guid)->Data4[4] = 0xc9;\ + (guid)->Data4[5] = 0x22;\ + (guid)->Data4[6] = 0x31;\ + (guid)->Data4[7] = 0x96;\ +} +#define EXTRACT_USB_TERMINAL(guid)\ + (USHORT)((guid)->Data1 - 0xDFF219E0) +#define DEFINE_USB_TERMINAL_GUID(id)\ + 0xDFF219E0+(USHORT)(id), 0xF70F, 0x11D0, 0xB9, 0x17, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 + +#define STATIC_KSNODETYPE_MICROPHONE\ + DEFINE_USB_TERMINAL_GUID(0x0201) +DEFINE_GUIDSTRUCT("DFF21BE1-F70F-11D0-B917-00A0C9223196", KSNODETYPE_MICROPHONE); +#define KSNODETYPE_MICROPHONE DEFINE_GUIDNAMED(KSNODETYPE_MICROPHONE) + +#define STATIC_KSNODETYPE_DESKTOP_MICROPHONE\ + DEFINE_USB_TERMINAL_GUID(0x0202) +DEFINE_GUIDSTRUCT("DFF21BE2-F70F-11D0-B917-00A0C9223196", KSNODETYPE_DESKTOP_MICROPHONE); +#define KSNODETYPE_DESKTOP_MICROPHONE DEFINE_GUIDNAMED(KSNODETYPE_DESKTOP_MICROPHONE) + +#define STATIC_KSNODETYPE_PERSONAL_MICROPHONE\ + DEFINE_USB_TERMINAL_GUID(0x0203) +DEFINE_GUIDSTRUCT("DFF21BE3-F70F-11D0-B917-00A0C9223196", KSNODETYPE_PERSONAL_MICROPHONE); +#define KSNODETYPE_PERSONAL_MICROPHONE DEFINE_GUIDNAMED(KSNODETYPE_PERSONAL_MICROPHONE) + +#define STATIC_KSNODETYPE_OMNI_DIRECTIONAL_MICROPHONE\ + DEFINE_USB_TERMINAL_GUID(0x0204) +DEFINE_GUIDSTRUCT("DFF21BE4-F70F-11D0-B917-00A0C9223196", KSNODETYPE_OMNI_DIRECTIONAL_MICROPHONE); +#define KSNODETYPE_OMNI_DIRECTIONAL_MICROPHONE DEFINE_GUIDNAMED(KSNODETYPE_OMNI_DIRECTIONAL_MICROPHONE) + +#define STATIC_KSNODETYPE_MICROPHONE_ARRAY\ + DEFINE_USB_TERMINAL_GUID(0x0205) +DEFINE_GUIDSTRUCT("DFF21BE5-F70F-11D0-B917-00A0C9223196", KSNODETYPE_MICROPHONE_ARRAY); +#define KSNODETYPE_MICROPHONE_ARRAY DEFINE_GUIDNAMED(KSNODETYPE_MICROPHONE_ARRAY) + +#define STATIC_KSNODETYPE_PROCESSING_MICROPHONE_ARRAY\ + DEFINE_USB_TERMINAL_GUID(0x0206) +DEFINE_GUIDSTRUCT("DFF21BE6-F70F-11D0-B917-00A0C9223196", KSNODETYPE_PROCESSING_MICROPHONE_ARRAY); +#define KSNODETYPE_PROCESSING_MICROPHONE_ARRAY DEFINE_GUIDNAMED(KSNODETYPE_PROCESSING_MICROPHONE_ARRAY) + +#define STATIC_KSCATEGORY_MICROPHONE_ARRAY_PROCESSOR \ + 0x830a44f2, 0xa32d, 0x476b, 0xbe, 0x97, 0x42, 0x84, 0x56, 0x73, 0xb3, 0x5a +DEFINE_GUIDSTRUCT("830a44f2-a32d-476b-be97-42845673b35a", KSCATEGORY_MICROPHONE_ARRAY_PROCESSOR); +#define KSCATEGORY_MICROPHONE_ARRAY_PROCESSOR DEFINE_GUIDNAMED(KSCATEGORY_MICROPHONE_ARRAY_PROCESSOR) + +#define STATIC_KSNODETYPE_SPEAKER\ + DEFINE_USB_TERMINAL_GUID(0x0301) +DEFINE_GUIDSTRUCT("DFF21CE1-F70F-11D0-B917-00A0C9223196", KSNODETYPE_SPEAKER); +#define KSNODETYPE_SPEAKER DEFINE_GUIDNAMED(KSNODETYPE_SPEAKER) + +#define STATIC_KSNODETYPE_HEADPHONES\ + DEFINE_USB_TERMINAL_GUID(0x0302) +DEFINE_GUIDSTRUCT("DFF21CE2-F70F-11D0-B917-00A0C9223196", KSNODETYPE_HEADPHONES); +#define KSNODETYPE_HEADPHONES DEFINE_GUIDNAMED(KSNODETYPE_HEADPHONES) + +#define STATIC_KSNODETYPE_HEAD_MOUNTED_DISPLAY_AUDIO\ + DEFINE_USB_TERMINAL_GUID(0x0303) +DEFINE_GUIDSTRUCT("DFF21CE3-F70F-11D0-B917-00A0C9223196", KSNODETYPE_HEAD_MOUNTED_DISPLAY_AUDIO); +#define KSNODETYPE_HEAD_MOUNTED_DISPLAY_AUDIO DEFINE_GUIDNAMED(KSNODETYPE_HEAD_MOUNTED_DISPLAY_AUDIO) + +#define STATIC_KSNODETYPE_DESKTOP_SPEAKER\ + DEFINE_USB_TERMINAL_GUID(0x0304) +DEFINE_GUIDSTRUCT("DFF21CE4-F70F-11D0-B917-00A0C9223196", KSNODETYPE_DESKTOP_SPEAKER); +#define KSNODETYPE_DESKTOP_SPEAKER DEFINE_GUIDNAMED(KSNODETYPE_DESKTOP_SPEAKER) + +#define STATIC_KSNODETYPE_ROOM_SPEAKER\ + DEFINE_USB_TERMINAL_GUID(0x0305) +DEFINE_GUIDSTRUCT("DFF21CE5-F70F-11D0-B917-00A0C9223196", KSNODETYPE_ROOM_SPEAKER); +#define KSNODETYPE_ROOM_SPEAKER DEFINE_GUIDNAMED(KSNODETYPE_ROOM_SPEAKER) + +#define STATIC_KSNODETYPE_COMMUNICATION_SPEAKER\ + DEFINE_USB_TERMINAL_GUID(0x0306) +DEFINE_GUIDSTRUCT("DFF21CE6-F70F-11D0-B917-00A0C9223196", KSNODETYPE_COMMUNICATION_SPEAKER); +#define KSNODETYPE_COMMUNICATION_SPEAKER DEFINE_GUIDNAMED(KSNODETYPE_COMMUNICATION_SPEAKER) + +#define STATIC_KSNODETYPE_LOW_FREQUENCY_EFFECTS_SPEAKER\ + DEFINE_USB_TERMINAL_GUID(0x0307) +DEFINE_GUIDSTRUCT("DFF21CE7-F70F-11D0-B917-00A0C9223196", KSNODETYPE_LOW_FREQUENCY_EFFECTS_SPEAKER); +#define KSNODETYPE_LOW_FREQUENCY_EFFECTS_SPEAKER DEFINE_GUIDNAMED(KSNODETYPE_LOW_FREQUENCY_EFFECTS_SPEAKER) + +#define STATIC_KSNODETYPE_HANDSET\ + DEFINE_USB_TERMINAL_GUID(0x0401) +DEFINE_GUIDSTRUCT("DFF21DE1-F70F-11D0-B917-00A0C9223196", KSNODETYPE_HANDSET); +#define KSNODETYPE_HANDSET DEFINE_GUIDNAMED(KSNODETYPE_HANDSET) + +#define STATIC_KSNODETYPE_HEADSET\ + DEFINE_USB_TERMINAL_GUID(0x0402) +DEFINE_GUIDSTRUCT("DFF21DE2-F70F-11D0-B917-00A0C9223196", KSNODETYPE_HEADSET); +#define KSNODETYPE_HEADSET DEFINE_GUIDNAMED(KSNODETYPE_HEADSET) + +#define STATIC_KSNODETYPE_SPEAKERPHONE_NO_ECHO_REDUCTION\ + DEFINE_USB_TERMINAL_GUID(0x0403) +DEFINE_GUIDSTRUCT("DFF21DE3-F70F-11D0-B917-00A0C9223196", KSNODETYPE_SPEAKERPHONE_NO_ECHO_REDUCTION); +#define KSNODETYPE_SPEAKERPHONE_NO_ECHO_REDUCTION DEFINE_GUIDNAMED(KSNODETYPE_SPEAKERPHONE_NO_ECHO_REDUCTION) + +#define STATIC_KSNODETYPE_ECHO_SUPPRESSING_SPEAKERPHONE\ + DEFINE_USB_TERMINAL_GUID(0x0404) +DEFINE_GUIDSTRUCT("DFF21DE4-F70F-11D0-B917-00A0C9223196", KSNODETYPE_ECHO_SUPPRESSING_SPEAKERPHONE); +#define KSNODETYPE_ECHO_SUPPRESSING_SPEAKERPHONE DEFINE_GUIDNAMED(KSNODETYPE_ECHO_SUPPRESSING_SPEAKERPHONE) + +#define STATIC_KSNODETYPE_ECHO_CANCELING_SPEAKERPHONE\ + DEFINE_USB_TERMINAL_GUID(0x0405) +DEFINE_GUIDSTRUCT("DFF21DE5-F70F-11D0-B917-00A0C9223196", KSNODETYPE_ECHO_CANCELING_SPEAKERPHONE); +#define KSNODETYPE_ECHO_CANCELING_SPEAKERPHONE DEFINE_GUIDNAMED(KSNODETYPE_ECHO_CANCELING_SPEAKERPHONE) + +#define STATIC_KSNODETYPE_PHONE_LINE\ + DEFINE_USB_TERMINAL_GUID(0x0501) +DEFINE_GUIDSTRUCT("DFF21EE1-F70F-11D0-B917-00A0C9223196", KSNODETYPE_PHONE_LINE); +#define KSNODETYPE_PHONE_LINE DEFINE_GUIDNAMED(KSNODETYPE_PHONE_LINE) + +#define STATIC_KSNODETYPE_TELEPHONE\ + DEFINE_USB_TERMINAL_GUID(0x0502) +DEFINE_GUIDSTRUCT("DFF21EE2-F70F-11D0-B917-00A0C9223196", KSNODETYPE_TELEPHONE); +#define KSNODETYPE_TELEPHONE DEFINE_GUIDNAMED(KSNODETYPE_TELEPHONE) + +#define STATIC_KSNODETYPE_DOWN_LINE_PHONE\ + DEFINE_USB_TERMINAL_GUID(0x0503) +DEFINE_GUIDSTRUCT("DFF21EE3-F70F-11D0-B917-00A0C9223196", KSNODETYPE_DOWN_LINE_PHONE); +#define KSNODETYPE_DOWN_LINE_PHONE DEFINE_GUIDNAMED(KSNODETYPE_DOWN_LINE_PHONE) + +#define STATIC_KSNODETYPE_ANALOG_CONNECTOR\ + DEFINE_USB_TERMINAL_GUID(0x601) +DEFINE_GUIDSTRUCT("DFF21FE1-F70F-11D0-B917-00A0C9223196", KSNODETYPE_ANALOG_CONNECTOR); +#define KSNODETYPE_ANALOG_CONNECTOR DEFINE_GUIDNAMED(KSNODETYPE_ANALOG_CONNECTOR) + +#define STATIC_KSNODETYPE_DIGITAL_AUDIO_INTERFACE\ + DEFINE_USB_TERMINAL_GUID(0x0602) +DEFINE_GUIDSTRUCT("DFF21FE2-F70F-11D0-B917-00A0C9223196", KSNODETYPE_DIGITAL_AUDIO_INTERFACE); +#define KSNODETYPE_DIGITAL_AUDIO_INTERFACE DEFINE_GUIDNAMED(KSNODETYPE_DIGITAL_AUDIO_INTERFACE) + +#define STATIC_KSNODETYPE_LINE_CONNECTOR\ + DEFINE_USB_TERMINAL_GUID(0x0603) +DEFINE_GUIDSTRUCT("DFF21FE3-F70F-11D0-B917-00A0C9223196", KSNODETYPE_LINE_CONNECTOR); +#define KSNODETYPE_LINE_CONNECTOR DEFINE_GUIDNAMED(KSNODETYPE_LINE_CONNECTOR) + +#define STATIC_KSNODETYPE_LEGACY_AUDIO_CONNECTOR\ + DEFINE_USB_TERMINAL_GUID(0x0604) +DEFINE_GUIDSTRUCT("DFF21FE4-F70F-11D0-B917-00A0C9223196", KSNODETYPE_LEGACY_AUDIO_CONNECTOR); +#define KSNODETYPE_LEGACY_AUDIO_CONNECTOR DEFINE_GUIDNAMED(KSNODETYPE_LEGACY_AUDIO_CONNECTOR) + +#define STATIC_KSNODETYPE_SPDIF_INTERFACE\ + DEFINE_USB_TERMINAL_GUID(0x0605) +DEFINE_GUIDSTRUCT("DFF21FE5-F70F-11D0-B917-00A0C9223196", KSNODETYPE_SPDIF_INTERFACE); +#define KSNODETYPE_SPDIF_INTERFACE DEFINE_GUIDNAMED(KSNODETYPE_SPDIF_INTERFACE) + +#define STATIC_KSNODETYPE_1394_DA_STREAM\ + DEFINE_USB_TERMINAL_GUID(0x0606) +DEFINE_GUIDSTRUCT("DFF21FE6-F70F-11D0-B917-00A0C9223196", KSNODETYPE_1394_DA_STREAM); +#define KSNODETYPE_1394_DA_STREAM DEFINE_GUIDNAMED(KSNODETYPE_1394_DA_STREAM) + +#define STATIC_KSNODETYPE_1394_DV_STREAM_SOUNDTRACK\ + DEFINE_USB_TERMINAL_GUID(0x0607) +DEFINE_GUIDSTRUCT("DFF21FE7-F70F-11D0-B917-00A0C9223196", KSNODETYPE_1394_DV_STREAM_SOUNDTRACK); +#define KSNODETYPE_1394_DV_STREAM_SOUNDTRACK DEFINE_GUIDNAMED(KSNODETYPE_1394_DV_STREAM_SOUNDTRACK) + +#define STATIC_KSNODETYPE_LEVEL_CALIBRATION_NOISE_SOURCE\ + DEFINE_USB_TERMINAL_GUID(0x0701) +DEFINE_GUIDSTRUCT("DFF220E1-F70F-11D0-B917-00A0C9223196", KSNODETYPE_LEVEL_CALIBRATION_NOISE_SOURCE); +#define KSNODETYPE_LEVEL_CALIBRATION_NOISE_SOURCE DEFINE_GUIDNAMED(KSNODETYPE_LEVEL_CALIBRATION_NOISE_SOURCE) + +#define STATIC_KSNODETYPE_EQUALIZATION_NOISE\ + DEFINE_USB_TERMINAL_GUID(0x0702) +DEFINE_GUIDSTRUCT("DFF220E2-F70F-11D0-B917-00A0C9223196", KSNODETYPE_EQUALIZATION_NOISE); +#define KSNODETYPE_EQUALIZATION_NOISE DEFINE_GUIDNAMED(KSNODETYPE_EQUALIZATION_NOISE) + +#define STATIC_KSNODETYPE_CD_PLAYER\ + DEFINE_USB_TERMINAL_GUID(0x0703) +DEFINE_GUIDSTRUCT("DFF220E3-F70F-11D0-B917-00A0C9223196", KSNODETYPE_CD_PLAYER); +#define KSNODETYPE_CD_PLAYER DEFINE_GUIDNAMED(KSNODETYPE_CD_PLAYER) + +#define STATIC_KSNODETYPE_DAT_IO_DIGITAL_AUDIO_TAPE\ + DEFINE_USB_TERMINAL_GUID(0x0704) +DEFINE_GUIDSTRUCT("DFF220E4-F70F-11D0-B917-00A0C9223196", KSNODETYPE_DAT_IO_DIGITAL_AUDIO_TAPE); +#define KSNODETYPE_DAT_IO_DIGITAL_AUDIO_TAPE DEFINE_GUIDNAMED(KSNODETYPE_DAT_IO_DIGITAL_AUDIO_TAPE) + +#define STATIC_KSNODETYPE_DCC_IO_DIGITAL_COMPACT_CASSETTE\ + DEFINE_USB_TERMINAL_GUID(0x0705) +DEFINE_GUIDSTRUCT("DFF220E5-F70F-11D0-B917-00A0C9223196", KSNODETYPE_DCC_IO_DIGITAL_COMPACT_CASSETTE); +#define KSNODETYPE_DCC_IO_DIGITAL_COMPACT_CASSETTE DEFINE_GUIDNAMED(KSNODETYPE_DCC_IO_DIGITAL_COMPACT_CASSETTE) + +#define STATIC_KSNODETYPE_MINIDISK\ + DEFINE_USB_TERMINAL_GUID(0x0706) +DEFINE_GUIDSTRUCT("DFF220E6-F70F-11D0-B917-00A0C9223196", KSNODETYPE_MINIDISK); +#define KSNODETYPE_MINIDISK DEFINE_GUIDNAMED(KSNODETYPE_MINIDISK) + +#define STATIC_KSNODETYPE_ANALOG_TAPE\ + DEFINE_USB_TERMINAL_GUID(0x0707) +DEFINE_GUIDSTRUCT("DFF220E7-F70F-11D0-B917-00A0C9223196", KSNODETYPE_ANALOG_TAPE); +#define KSNODETYPE_ANALOG_TAPE DEFINE_GUIDNAMED(KSNODETYPE_ANALOG_TAPE) + +#define STATIC_KSNODETYPE_PHONOGRAPH\ + DEFINE_USB_TERMINAL_GUID(0x0708) +DEFINE_GUIDSTRUCT("DFF220E8-F70F-11D0-B917-00A0C9223196", KSNODETYPE_PHONOGRAPH); +#define KSNODETYPE_PHONOGRAPH DEFINE_GUIDNAMED(KSNODETYPE_PHONOGRAPH) + +#define STATIC_KSNODETYPE_VCR_AUDIO\ + DEFINE_USB_TERMINAL_GUID(0x0708) +DEFINE_GUIDSTRUCT("DFF220E9-F70F-11D0-B917-00A0C9223196", KSNODETYPE_VCR_AUDIO); +#define KSNODETYPE_VCR_AUDIO DEFINE_GUIDNAMED(KSNODETYPE_VCR_AUDIO) + +#define STATIC_KSNODETYPE_VIDEO_DISC_AUDIO\ + DEFINE_USB_TERMINAL_GUID(0x070A) +DEFINE_GUIDSTRUCT("DFF220EA-F70F-11D0-B917-00A0C9223196", KSNODETYPE_VIDEO_DISC_AUDIO); +#define KSNODETYPE_VIDEO_DISC_AUDIO DEFINE_GUIDNAMED(KSNODETYPE_VIDEO_DISC_AUDIO) + +#define STATIC_KSNODETYPE_DVD_AUDIO\ + DEFINE_USB_TERMINAL_GUID(0x070B) +DEFINE_GUIDSTRUCT("DFF220EB-F70F-11D0-B917-00A0C9223196", KSNODETYPE_DVD_AUDIO); +#define KSNODETYPE_DVD_AUDIO DEFINE_GUIDNAMED(KSNODETYPE_DVD_AUDIO) + +#define STATIC_KSNODETYPE_TV_TUNER_AUDIO\ + DEFINE_USB_TERMINAL_GUID(0x070C) +DEFINE_GUIDSTRUCT("DFF220EC-F70F-11D0-B917-00A0C9223196", KSNODETYPE_TV_TUNER_AUDIO); +#define KSNODETYPE_TV_TUNER_AUDIO DEFINE_GUIDNAMED(KSNODETYPE_TV_TUNER_AUDIO) + +#define STATIC_KSNODETYPE_SATELLITE_RECEIVER_AUDIO\ + DEFINE_USB_TERMINAL_GUID(0x070D) +DEFINE_GUIDSTRUCT("DFF220ED-F70F-11D0-B917-00A0C9223196", KSNODETYPE_SATELLITE_RECEIVER_AUDIO); +#define KSNODETYPE_SATELLITE_RECEIVER_AUDIO DEFINE_GUIDNAMED(KSNODETYPE_SATELLITE_RECEIVER_AUDIO) + +#define STATIC_KSNODETYPE_CABLE_TUNER_AUDIO\ + DEFINE_USB_TERMINAL_GUID(0x070E) +DEFINE_GUIDSTRUCT("DFF220EE-F70F-11D0-B917-00A0C9223196", KSNODETYPE_CABLE_TUNER_AUDIO); +#define KSNODETYPE_CABLE_TUNER_AUDIO DEFINE_GUIDNAMED(KSNODETYPE_CABLE_TUNER_AUDIO) + +#define STATIC_KSNODETYPE_DSS_AUDIO\ + DEFINE_USB_TERMINAL_GUID(0x070F) +DEFINE_GUIDSTRUCT("DFF220EF-F70F-11D0-B917-00A0C9223196", KSNODETYPE_DSS_AUDIO); +#define KSNODETYPE_DSS_AUDIO DEFINE_GUIDNAMED(KSNODETYPE_DSS_AUDIO) + +#define STATIC_KSNODETYPE_RADIO_RECEIVER\ + DEFINE_USB_TERMINAL_GUID(0x0710) +DEFINE_GUIDSTRUCT("DFF220F0-F70F-11D0-B917-00A0C9223196", KSNODETYPE_RADIO_RECEIVER); +#define KSNODETYPE_RADIO_RECEIVER DEFINE_GUIDNAMED(KSNODETYPE_RADIO_RECEIVER) + +#define STATIC_KSNODETYPE_RADIO_TRANSMITTER\ + DEFINE_USB_TERMINAL_GUID(0x0711) +DEFINE_GUIDSTRUCT("DFF220F1-F70F-11D0-B917-00A0C9223196", KSNODETYPE_RADIO_TRANSMITTER); +#define KSNODETYPE_RADIO_TRANSMITTER DEFINE_GUIDNAMED(KSNODETYPE_RADIO_TRANSMITTER) + +#define STATIC_KSNODETYPE_MULTITRACK_RECORDER\ + DEFINE_USB_TERMINAL_GUID(0x0712) +DEFINE_GUIDSTRUCT("DFF220F2-F70F-11D0-B917-00A0C9223196", KSNODETYPE_MULTITRACK_RECORDER); +#define KSNODETYPE_MULTITRACK_RECORDER DEFINE_GUIDNAMED(KSNODETYPE_MULTITRACK_RECORDER) + +#define STATIC_KSNODETYPE_SYNTHESIZER\ + DEFINE_USB_TERMINAL_GUID(0x0713) +DEFINE_GUIDSTRUCT("DFF220F3-F70F-11D0-B917-00A0C9223196", KSNODETYPE_SYNTHESIZER); +#define KSNODETYPE_SYNTHESIZER DEFINE_GUIDNAMED(KSNODETYPE_SYNTHESIZER) + +// Microsoft's WDMAUD virtual swsynth pin name guid + +#define STATIC_KSNODETYPE_SWSYNTH\ + 0x423274A0L, 0x8B81, 0x11D1, 0xA0, 0x50, 0x00, 0x00, 0xF8, 0x00, 0x47, 0x88 +DEFINE_GUIDSTRUCT("423274A0-8B81-11D1-A050-0000F8004788", KSNODETYPE_SWSYNTH); +#define KSNODETYPE_SWSYNTH DEFINE_GUIDNAMED(KSNODETYPE_SWSYNTH) + +// Microsoft's SWMIDI midi pin and node name guid + +#define STATIC_KSNODETYPE_SWMIDI\ + 0xCB9BEFA0L, 0xA251, 0x11D1, 0xA0, 0x50, 0x00, 0x00, 0xF8, 0x00, 0x47, 0x88 +DEFINE_GUIDSTRUCT("CB9BEFA0-A251-11D1-A050-0000F8004788", KSNODETYPE_SWMIDI); +#define KSNODETYPE_SWMIDI DEFINE_GUIDNAMED(KSNODETYPE_SWMIDI) + +#define STATIC_KSNODETYPE_DRM_DESCRAMBLE\ + 0xFFBB6E3FL, 0xCCFE, 0x4D84, 0x90, 0xD9, 0x42, 0x14, 0x18, 0xB0, 0x3A, 0x8E +DEFINE_GUIDSTRUCT("FFBB6E3F-CCFE-4D84-90D9-421418B03A8E", KSNODETYPE_DRM_DESCRAMBLE); +#define KSNODETYPE_DRM_DESCRAMBLE DEFINE_GUIDNAMED(KSNODETYPE_DRM_DESCRAMBLE) + +// General categories +#define STATIC_KSCATEGORY_AUDIO \ + 0x6994AD04L, 0x93EF, 0x11D0, 0xA3, 0xCC, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 +DEFINE_GUIDSTRUCT("6994AD04-93EF-11D0-A3CC-00A0C9223196", KSCATEGORY_AUDIO); +#define KSCATEGORY_AUDIO DEFINE_GUIDNAMED(KSCATEGORY_AUDIO) + +#define STATIC_KSCATEGORY_VIDEO \ + 0x6994AD05L, 0x93EF, 0x11D0, 0xA3, 0xCC, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 +DEFINE_GUIDSTRUCT("6994AD05-93EF-11D0-A3CC-00A0C9223196", KSCATEGORY_VIDEO); +#define KSCATEGORY_VIDEO DEFINE_GUIDNAMED(KSCATEGORY_VIDEO) + +#define STATIC_KSCATEGORY_TEXT \ + 0x6994AD06L, 0x93EF, 0x11D0, 0xA3, 0xCC, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 +DEFINE_GUIDSTRUCT("6994AD06-93EF-11D0-A3CC-00A0C9223196", KSCATEGORY_TEXT); +#define KSCATEGORY_TEXT DEFINE_GUIDNAMED(KSCATEGORY_TEXT) + +#define STATIC_KSCATEGORY_NETWORK \ + 0x67C9CC3CL, 0x69C4, 0x11D2, 0x87, 0x59, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 +DEFINE_GUIDSTRUCT("67C9CC3C-69C4-11D2-8759-00A0C9223196", KSCATEGORY_NETWORK); +#define KSCATEGORY_NETWORK DEFINE_GUIDNAMED(KSCATEGORY_NETWORK) + +#define STATIC_KSCATEGORY_TOPOLOGY \ + 0xDDA54A40L, 0x1E4C, 0x11D1, 0xA0, 0x50, 0x40, 0x57, 0x05, 0xC1, 0x00, 0x00 +DEFINE_GUIDSTRUCT("DDA54A40-1E4C-11D1-A050-405705C10000", KSCATEGORY_TOPOLOGY); +#define KSCATEGORY_TOPOLOGY DEFINE_GUIDNAMED(KSCATEGORY_TOPOLOGY) + +#define STATIC_KSCATEGORY_VIRTUAL \ + 0x3503EAC4L, 0x1F26, 0x11D1, 0x8A, 0xB0, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 +DEFINE_GUIDSTRUCT("3503EAC4-1F26-11D1-8AB0-00A0C9223196", KSCATEGORY_VIRTUAL); +#define KSCATEGORY_VIRTUAL DEFINE_GUIDNAMED(KSCATEGORY_VIRTUAL) + +#define STATIC_KSCATEGORY_ACOUSTIC_ECHO_CANCEL \ + 0xBF963D80L, 0xC559, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1 +DEFINE_GUIDSTRUCT("BF963D80-C559-11D0-8A2B-00A0C9255AC1", KSCATEGORY_ACOUSTIC_ECHO_CANCEL); +#define KSCATEGORY_ACOUSTIC_ECHO_CANCEL DEFINE_GUIDNAMED(KSCATEGORY_ACOUSTIC_ECHO_CANCEL) + +#define STATIC_KSCATEGORY_SYSAUDIO \ + 0xA7C7A5B1L, 0x5AF3, 0x11D1, 0x9C, 0xED, 0x00, 0xA0, 0x24, 0xBF, 0x04, 0x07 +DEFINE_GUIDSTRUCT("A7C7A5B1-5AF3-11D1-9CED-00A024BF0407", KSCATEGORY_SYSAUDIO); +#define KSCATEGORY_SYSAUDIO DEFINE_GUIDNAMED(KSCATEGORY_SYSAUDIO) + +#define STATIC_KSCATEGORY_WDMAUD \ + 0x3E227E76L, 0x690D, 0x11D2, 0x81, 0x61, 0x00, 0x00, 0xF8, 0x77, 0x5B, 0xF1 +DEFINE_GUIDSTRUCT("3E227E76-690D-11D2-8161-0000F8775BF1", KSCATEGORY_WDMAUD); +#define KSCATEGORY_WDMAUD DEFINE_GUIDNAMED(KSCATEGORY_WDMAUD) + +#define STATIC_KSCATEGORY_AUDIO_GFX \ + 0x9BAF9572L, 0x340C, 0x11D3, 0xAB, 0xDC, 0x00, 0xA0, 0xC9, 0x0A, 0xB1, 0x6F +DEFINE_GUIDSTRUCT("9BAF9572-340C-11D3-ABDC-00A0C90AB16F", KSCATEGORY_AUDIO_GFX); +#define KSCATEGORY_AUDIO_GFX DEFINE_GUIDNAMED(KSCATEGORY_AUDIO_GFX) + +#define STATIC_KSCATEGORY_AUDIO_SPLITTER \ + 0x9EA331FAL, 0xB91B, 0x45F8, 0x92, 0x85, 0xBD, 0x2B, 0xC7, 0x7A, 0xFC, 0xDE +DEFINE_GUIDSTRUCT("9EA331FA-B91B-45F8-9285-BD2BC77AFCDE", KSCATEGORY_AUDIO_SPLITTER); +#define KSCATEGORY_AUDIO_SPLITTER DEFINE_GUIDNAMED(KSCATEGORY_AUDIO_SPLITTER) + +#define STATIC_KSCATEGORY_SYNTHESIZER STATIC_KSNODETYPE_SYNTHESIZER +#define KSCATEGORY_SYNTHESIZER KSNODETYPE_SYNTHESIZER + +#define STATIC_KSCATEGORY_DRM_DESCRAMBLE STATIC_KSNODETYPE_DRM_DESCRAMBLE +#define KSCATEGORY_DRM_DESCRAMBLE KSNODETYPE_DRM_DESCRAMBLE + +#define STATIC_KSCATEGORY_AUDIO_DEVICE \ + 0xFBF6F530L, 0x07B9, 0x11D2, 0xA7, 0x1E, 0x00, 0x00, 0xF8, 0x00, 0x47, 0x88 +DEFINE_GUIDSTRUCT("FBF6F530-07B9-11D2-A71E-0000F8004788", KSCATEGORY_AUDIO_DEVICE); +#define KSCATEGORY_AUDIO_DEVICE DEFINE_GUIDNAMED(KSCATEGORY_AUDIO_DEVICE) + +#define STATIC_KSCATEGORY_PREFERRED_WAVEOUT_DEVICE \ + 0xD6C5066EL, 0x72C1, 0x11D2, 0x97, 0x55, 0x00, 0x00, 0xF8, 0x00, 0x47, 0x88 +DEFINE_GUIDSTRUCT("D6C5066E-72C1-11D2-9755-0000F8004788", KSCATEGORY_PREFERRED_WAVEOUT_DEVICE); +#define KSCATEGORY_PREFERRED_WAVEOUT_DEVICE DEFINE_GUIDNAMED(KSCATEGORY_PREFERRED_WAVEOUT_DEVICE) + +#define STATIC_KSCATEGORY_PREFERRED_WAVEIN_DEVICE \ + 0xD6C50671L, 0x72C1, 0x11D2, 0x97, 0x55, 0x00, 0x00, 0xF8, 0x00, 0x47, 0x88 +DEFINE_GUIDSTRUCT("D6C50671-72C1-11D2-9755-0000F8004788", KSCATEGORY_PREFERRED_WAVEIN_DEVICE); +#define KSCATEGORY_PREFERRED_WAVEIN_DEVICE DEFINE_GUIDNAMED(KSCATEGORY_PREFERRED_WAVEIN_DEVICE) + +#define STATIC_KSCATEGORY_PREFERRED_MIDIOUT_DEVICE \ + 0xD6C50674L, 0x72C1, 0x11D2, 0x97, 0x55, 0x00, 0x00, 0xF8, 0x00, 0x47, 0x88 +DEFINE_GUIDSTRUCT("D6C50674-72C1-11D2-9755-0000F8004788", KSCATEGORY_PREFERRED_MIDIOUT_DEVICE); +#define KSCATEGORY_PREFERRED_MIDIOUT_DEVICE DEFINE_GUIDNAMED(KSCATEGORY_PREFERRED_MIDIOUT_DEVICE) + +// Special pin category for wdmaud + +#define STATIC_KSCATEGORY_WDMAUD_USE_PIN_NAME \ + 0x47A4FA20L, 0xA251, 0x11D1, 0xA0, 0x50, 0x00, 0x00, 0xF8, 0x00, 0x47, 0x88 +DEFINE_GUIDSTRUCT("47A4FA20-A251-11D1-A050-0000F8004788", KSCATEGORY_WDMAUD_USE_PIN_NAME); +#define KSCATEGORY_WDMAUD_USE_PIN_NAME DEFINE_GUIDNAMED(KSCATEGORY_WDMAUD_USE_PIN_NAME) + +// Escalante Platform Interface + +#define STATIC_KSCATEGORY_ESCALANTE_PLATFORM_DRIVER \ + 0x74f3aea8L, 0x9768, 0x11d1, 0x8e, 0x07, 0x00, 0xa0, 0xc9, 0x5e, 0xc2, 0x2e +DEFINE_GUIDSTRUCT("74f3aea8-9768-11d1-8e07-00a0c95ec22e", KSCATEGORY_ESCALANTE_PLATFORM_DRIVER); +#define KSCATEGORY_ESCALANTE_PLATFORM_DRIVER DEFINE_GUIDNAMED(KSCATEGORY_ESCALANTE_PLATFORM_DRIVER) + +// -- major types --- + +// 'vids' == MEDIATYPE_Video, +#define STATIC_KSDATAFORMAT_TYPE_VIDEO\ + 0x73646976L, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 +DEFINE_GUIDSTRUCT("73646976-0000-0010-8000-00aa00389b71", KSDATAFORMAT_TYPE_VIDEO); +#define KSDATAFORMAT_TYPE_VIDEO DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_VIDEO) + +// 'auds' == MEDIATYPE_Audio +#define STATIC_KSDATAFORMAT_TYPE_AUDIO\ + 0x73647561L, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 +DEFINE_GUIDSTRUCT("73647561-0000-0010-8000-00aa00389b71", KSDATAFORMAT_TYPE_AUDIO); +#define KSDATAFORMAT_TYPE_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_AUDIO) + +// 'txts' == MEDIATYPE_Text +#define STATIC_KSDATAFORMAT_TYPE_TEXT\ + 0x73747874L, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 +DEFINE_GUIDSTRUCT("73747874-0000-0010-8000-00aa00389b71", KSDATAFORMAT_TYPE_TEXT); +#define KSDATAFORMAT_TYPE_TEXT DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_TEXT) + +#if !defined( DEFINE_WAVEFORMATEX_GUID ) +#define DEFINE_WAVEFORMATEX_GUID(x) (USHORT)(x), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 +#endif + +#define STATIC_KSDATAFORMAT_SUBTYPE_WAVEFORMATEX\ + 0x00000000L, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 +DEFINE_GUIDSTRUCT("00000000-0000-0010-8000-00aa00389b71", KSDATAFORMAT_SUBTYPE_WAVEFORMATEX); +#define KSDATAFORMAT_SUBTYPE_WAVEFORMATEX DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_WAVEFORMATEX) + +#define INIT_WAVEFORMATEX_GUID(Guid, x)\ +{\ + *(Guid) = KSDATAFORMAT_SUBTYPE_WAVEFORMATEX;\ + (Guid)->Data1 = (USHORT)(x);\ +} + +#define EXTRACT_WAVEFORMATEX_ID(Guid)\ + (USHORT)((Guid)->Data1) + +#define IS_VALID_WAVEFORMATEX_GUID(Guid)\ + (!memcmp(((PUSHORT)&KSDATAFORMAT_SUBTYPE_WAVEFORMATEX) + 1, ((PUSHORT)(Guid)) + 1, sizeof(GUID) - sizeof(USHORT))) + +#if !defined(INIT_MMREG_MID) +//{d5a47fa7-6d98-11d1-a21a-00a0c9223196} +#define INIT_MMREG_MID(guid, id)\ +{\ + (guid)->Data1 = 0xd5a47fa7 + (USHORT)(id);\ + (guid)->Data2 = 0x6d98;\ + (guid)->Data3 = 0x11d1;\ + (guid)->Data4[0] = 0xa2;\ + (guid)->Data4[1] = 0x1a;\ + (guid)->Data4[2] = 0x00;\ + (guid)->Data4[3] = 0xa0;\ + (guid)->Data4[4] = 0xc9;\ + (guid)->Data4[5] = 0x22;\ + (guid)->Data4[6] = 0x31;\ + (guid)->Data4[7] = 0x96;\ +} +#define EXTRACT_MMREG_MID(guid)\ + (USHORT)((guid)->Data1 - 0xd5a47fa7) +#define DEFINE_MMREG_MID_GUID(id)\ + 0xd5a47fa7+(USHORT)(id), 0x6d98, 0x11d1, 0xa2, 0x1a, 0x00, 0xa0, 0xc9, 0x22, 0x31, 0x96 + +#define IS_COMPATIBLE_MMREG_MID(guid)\ + (((guid)->Data1 >= 0xd5a47fa7) &&\ + ((guid)->Data1 < 0xd5a47fa7 + 0xffff) &&\ + ((guid)->Data2 == 0x6d98) &&\ + ((guid)->Data3 == 0x11d1) &&\ + ((guid)->Data4[0] == 0xa2) &&\ + ((guid)->Data4[1] == 0x1a) &&\ + ((guid)->Data4[2] == 0x00) &&\ + ((guid)->Data4[3] == 0xa0) &&\ + ((guid)->Data4[4] == 0xc9) &&\ + ((guid)->Data4[5] == 0x22) &&\ + ((guid)->Data4[6] == 0x31) &&\ + ((guid)->Data4[7] == 0x96)) +#endif // !defined(INIT_MMREG_MID) + +#if !defined(INIT_MMREG_PID) +//{e36dc2ac-6d9a-11d1-a21a-00a0c9223196} +#define INIT_MMREG_PID(guid, id)\ +{\ + (guid)->Data1 = 0xe36dc2ac + (USHORT)(id);\ + (guid)->Data2 = 0x6d9a;\ + (guid)->Data3 = 0x11d1;\ + (guid)->Data4[0] = 0xa2;\ + (guid)->Data4[1] = 0x1a;\ + (guid)->Data4[2] = 0x00;\ + (guid)->Data4[3] = 0xa0;\ + (guid)->Data4[4] = 0xc9;\ + (guid)->Data4[5] = 0x22;\ + (guid)->Data4[6] = 0x31;\ + (guid)->Data4[7] = 0x96;\ +} +#define EXTRACT_MMREG_PID(guid)\ + (USHORT)((guid)->Data1 - 0xe36dc2ac) +#define DEFINE_MMREG_PID_GUID(id)\ + 0xe36dc2ac+(USHORT)(id), 0x6d9a, 0x11d1, 0xa2, 0x1a, 0x00, 0xa0, 0xc9, 0x22, 0x31, 0x96 + +#define IS_COMPATIBLE_MMREG_PID(guid)\ + (((guid)->Data1 >= 0xe36dc2ac) &&\ + ((guid)->Data1 < 0xe36dc2ac + 0xffff) &&\ + ((guid)->Data2 == 0x6d9a) &&\ + ((guid)->Data3 == 0x11d1) &&\ + ((guid)->Data4[0] == 0xa2) &&\ + ((guid)->Data4[1] == 0x1a) &&\ + ((guid)->Data4[2] == 0x00) &&\ + ((guid)->Data4[3] == 0xa0) &&\ + ((guid)->Data4[4] == 0xc9) &&\ + ((guid)->Data4[5] == 0x22) &&\ + ((guid)->Data4[6] == 0x31) &&\ + ((guid)->Data4[7] == 0x96)) +#endif // !defined(INIT_MMREG_PID) + +#define STATIC_KSDATAFORMAT_SUBTYPE_ANALOG\ + 0x6dba3190L, 0x67bd, 0x11cf, 0xa0, 0xf7, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4 +DEFINE_GUIDSTRUCT("6dba3190-67bd-11cf-a0f7-0020afd156e4", KSDATAFORMAT_SUBTYPE_ANALOG); +#define KSDATAFORMAT_SUBTYPE_ANALOG DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_ANALOG) + +#define STATIC_KSDATAFORMAT_SUBTYPE_PCM\ + DEFINE_WAVEFORMATEX_GUID(WAVE_FORMAT_PCM) +DEFINE_GUIDSTRUCT("00000001-0000-0010-8000-00aa00389b71", KSDATAFORMAT_SUBTYPE_PCM); +#define KSDATAFORMAT_SUBTYPE_PCM DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_PCM) + +#if defined(_INC_MMREG) +#define STATIC_KSDATAFORMAT_SUBTYPE_IEEE_FLOAT\ + DEFINE_WAVEFORMATEX_GUID(WAVE_FORMAT_IEEE_FLOAT) +DEFINE_GUIDSTRUCT("00000003-0000-0010-8000-00aa00389b71", KSDATAFORMAT_SUBTYPE_IEEE_FLOAT); +#define KSDATAFORMAT_SUBTYPE_IEEE_FLOAT DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_IEEE_FLOAT) + +#define STATIC_KSDATAFORMAT_SUBTYPE_DRM\ + DEFINE_WAVEFORMATEX_GUID(WAVE_FORMAT_DRM) +DEFINE_GUIDSTRUCT("00000009-0000-0010-8000-00aa00389b71", KSDATAFORMAT_SUBTYPE_DRM); +#define KSDATAFORMAT_SUBTYPE_DRM DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_DRM) + +#define STATIC_KSDATAFORMAT_SUBTYPE_ALAW\ + DEFINE_WAVEFORMATEX_GUID(WAVE_FORMAT_ALAW) +DEFINE_GUIDSTRUCT("00000006-0000-0010-8000-00aa00389b71", KSDATAFORMAT_SUBTYPE_ALAW); +#define KSDATAFORMAT_SUBTYPE_ALAW DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_ALAW) + +#define STATIC_KSDATAFORMAT_SUBTYPE_MULAW\ + DEFINE_WAVEFORMATEX_GUID(WAVE_FORMAT_MULAW) +DEFINE_GUIDSTRUCT("00000007-0000-0010-8000-00aa00389b71", KSDATAFORMAT_SUBTYPE_MULAW); +#define KSDATAFORMAT_SUBTYPE_MULAW DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_MULAW) + +#define STATIC_KSDATAFORMAT_SUBTYPE_ADPCM\ + DEFINE_WAVEFORMATEX_GUID(WAVE_FORMAT_ADPCM) +DEFINE_GUIDSTRUCT("00000002-0000-0010-8000-00aa00389b71", KSDATAFORMAT_SUBTYPE_ADPCM); +#define KSDATAFORMAT_SUBTYPE_ADPCM DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_ADPCM) + +#define STATIC_KSDATAFORMAT_SUBTYPE_MPEG\ + DEFINE_WAVEFORMATEX_GUID(WAVE_FORMAT_MPEG) +DEFINE_GUIDSTRUCT("00000050-0000-0010-8000-00aa00389b71", KSDATAFORMAT_SUBTYPE_MPEG); +#define KSDATAFORMAT_SUBTYPE_MPEG DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_MPEG) +#endif // defined(_INC_MMREG) + +#define STATIC_KSDATAFORMAT_SPECIFIER_VC_ID\ + 0xAD98D184L, 0xAAC3, 0x11D0, 0xA4, 0x1C, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 +DEFINE_GUIDSTRUCT("AD98D184-AAC3-11D0-A41C-00A0C9223196", KSDATAFORMAT_SPECIFIER_VC_ID); +#define KSDATAFORMAT_SPECIFIER_VC_ID DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_VC_ID) + +#define STATIC_KSDATAFORMAT_SPECIFIER_WAVEFORMATEX\ + 0x05589f81L, 0xc356, 0x11ce, 0xbf, 0x01, 0x00, 0xaa, 0x00, 0x55, 0x59, 0x5a +DEFINE_GUIDSTRUCT("05589f81-c356-11ce-bf01-00aa0055595a", KSDATAFORMAT_SPECIFIER_WAVEFORMATEX); +#define KSDATAFORMAT_SPECIFIER_WAVEFORMATEX DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_WAVEFORMATEX) + +#define STATIC_KSDATAFORMAT_SPECIFIER_DSOUND\ + 0x518590a2L, 0xa184, 0x11d0, 0x85, 0x22, 0x00, 0xc0, 0x4f, 0xd9, 0xba, 0xf3 +DEFINE_GUIDSTRUCT("518590a2-a184-11d0-8522-00c04fd9baf3", KSDATAFORMAT_SPECIFIER_DSOUND); +#define KSDATAFORMAT_SPECIFIER_DSOUND DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_DSOUND) + +#if defined(_INC_MMSYSTEM) || defined(_INC_MMREG) +#if !defined( PACK_PRAGMAS_NOT_SUPPORTED ) +#include +#endif +typedef struct { + KSDATAFORMAT DataFormat; + WAVEFORMATEX WaveFormatEx; +} KSDATAFORMAT_WAVEFORMATEX, *PKSDATAFORMAT_WAVEFORMATEX; + +#ifndef _WAVEFORMATEXTENSIBLE_ +#define _WAVEFORMATEXTENSIBLE_ +typedef struct { + WAVEFORMATEX Format; + union { + WORD wValidBitsPerSample; /* bits of precision */ + WORD wSamplesPerBlock; /* valid if wBitsPerSample==0 */ + WORD wReserved; /* If neither applies, set to zero. */ + } Samples; + DWORD dwChannelMask; /* which channels are */ + /* present in stream */ + GUID SubFormat; +} WAVEFORMATEXTENSIBLE, *PWAVEFORMATEXTENSIBLE; +#endif // !_WAVEFORMATEXTENSIBLE_ + +#if !defined(WAVE_FORMAT_EXTENSIBLE) +#define WAVE_FORMAT_EXTENSIBLE 0xFFFE +#endif // !defined(WAVE_FORMAT_EXTENSIBLE) + +// DirectSound buffer description +typedef struct { + ULONG Flags; + ULONG Control; + WAVEFORMATEX WaveFormatEx; +} KSDSOUND_BUFFERDESC, *PKSDSOUND_BUFFERDESC; + +// DirectSound format +typedef struct { + KSDATAFORMAT DataFormat; + KSDSOUND_BUFFERDESC BufferDesc; +} KSDATAFORMAT_DSOUND, *PKSDATAFORMAT_DSOUND; + +#if !defined( PACK_PRAGMAS_NOT_SUPPORTED ) +#include +#endif +#endif // defined(_INC_MMSYSTEM) || defined(_INC_MMREG) + + + +// DirectSound buffer flags +#define KSDSOUND_BUFFER_PRIMARY 0x00000001 +#define KSDSOUND_BUFFER_STATIC 0x00000002 +#define KSDSOUND_BUFFER_LOCHARDWARE 0x00000004 +#define KSDSOUND_BUFFER_LOCSOFTWARE 0x00000008 + +// DirectSound buffer control flags +#define KSDSOUND_BUFFER_CTRL_3D 0x00000001 +#define KSDSOUND_BUFFER_CTRL_FREQUENCY 0x00000002 +#define KSDSOUND_BUFFER_CTRL_PAN 0x00000004 +#define KSDSOUND_BUFFER_CTRL_VOLUME 0x00000008 +#define KSDSOUND_BUFFER_CTRL_POSITIONNOTIFY 0x00000010 + +typedef struct { +#if defined(_NTDDK_) + ULONGLONG PlayOffset; + ULONGLONG WriteOffset; +#else // !_NTDDK_ + DWORDLONG PlayOffset; + DWORDLONG WriteOffset; +#endif // !_NTDDK_ +} KSAUDIO_POSITION, *PKSAUDIO_POSITION; + +//=========================================================================== +// DirectSound3D HAL + + +typedef struct _DS3DVECTOR { + union { + FLOAT x; + FLOAT dvX; + }; + union { + FLOAT y; + FLOAT dvY; + }; + union { + FLOAT z; + FLOAT dvZ; + }; +} DS3DVECTOR, *PDS3DVECTOR; + + +//=========================================================================== +//=========================================================================== + +// KSPROPSETID_DirectSound3DListener : {437B3414-D060-11d0-8583-00C04FD9BAF3} + +#define STATIC_KSPROPSETID_DirectSound3DListener\ + 0x437b3414L, 0xd060, 0x11d0, 0x85, 0x83, 0x00, 0xc0, 0x4f, 0xd9, 0xba, 0xf3 +DEFINE_GUIDSTRUCT("437b3414-d060-11d0-8583-00c04fd9baf3",KSPROPSETID_DirectSound3DListener); +#define KSPROPSETID_DirectSound3DListener DEFINE_GUIDNAMED(KSPROPSETID_DirectSound3DListener) + +typedef enum { + KSPROPERTY_DIRECTSOUND3DLISTENER_ALL, + KSPROPERTY_DIRECTSOUND3DLISTENER_POSITION, + KSPROPERTY_DIRECTSOUND3DLISTENER_VELOCITY, + KSPROPERTY_DIRECTSOUND3DLISTENER_ORIENTATION, + KSPROPERTY_DIRECTSOUND3DLISTENER_DISTANCEFACTOR, + KSPROPERTY_DIRECTSOUND3DLISTENER_ROLLOFFFACTOR, + KSPROPERTY_DIRECTSOUND3DLISTENER_DOPPLERFACTOR, + KSPROPERTY_DIRECTSOUND3DLISTENER_BATCH, + KSPROPERTY_DIRECTSOUND3DLISTENER_ALLOCATION +} KSPROPERTY_DIRECTSOUND3DLISTENER; + +typedef struct { + DS3DVECTOR Position; + DS3DVECTOR Velocity; + DS3DVECTOR OrientFront; + DS3DVECTOR OrientTop; + FLOAT DistanceFactor; + FLOAT RolloffFactor; + FLOAT DopplerFactor; +} KSDS3D_LISTENER_ALL, *PKSDS3D_LISTENER_ALL; + +typedef struct { + DS3DVECTOR Front; + DS3DVECTOR Top; +} KSDS3D_LISTENER_ORIENTATION, *PKSDS3D_LISTENER_ORIENTATION; + + +//=========================================================================== +//=========================================================================== +// KSPROPSETID_DirectSound3DBuffer : {437B3411-D060-11d0-8583-00C04FD9BAF3} + +#define STATIC_KSPROPSETID_DirectSound3DBuffer\ + 0x437b3411L, 0xd060, 0x11d0, 0x85, 0x83, 0x00, 0xc0, 0x4f, 0xd9, 0xba, 0xf3 +DEFINE_GUIDSTRUCT("437b3411-d060-11d0-8583-00c04fd9baf3", KSPROPSETID_DirectSound3DBuffer); +#define KSPROPSETID_DirectSound3DBuffer DEFINE_GUIDNAMED(KSPROPSETID_DirectSound3DBuffer) + + +typedef enum { + KSPROPERTY_DIRECTSOUND3DBUFFER_ALL, + KSPROPERTY_DIRECTSOUND3DBUFFER_POSITION, + KSPROPERTY_DIRECTSOUND3DBUFFER_VELOCITY, + KSPROPERTY_DIRECTSOUND3DBUFFER_CONEANGLES, + KSPROPERTY_DIRECTSOUND3DBUFFER_CONEORIENTATION, + KSPROPERTY_DIRECTSOUND3DBUFFER_CONEOUTSIDEVOLUME, + KSPROPERTY_DIRECTSOUND3DBUFFER_MINDISTANCE, + KSPROPERTY_DIRECTSOUND3DBUFFER_MAXDISTANCE, + KSPROPERTY_DIRECTSOUND3DBUFFER_MODE +} KSPROPERTY_DIRECTSOUND3DBUFFER; + + +typedef struct { + DS3DVECTOR Position; + DS3DVECTOR Velocity; + ULONG InsideConeAngle; + ULONG OutsideConeAngle; + DS3DVECTOR ConeOrientation; + LONG ConeOutsideVolume; + FLOAT MinDistance; + FLOAT MaxDistance; + ULONG Mode; +} KSDS3D_BUFFER_ALL, *PKSDS3D_BUFFER_ALL; + +typedef struct { + ULONG InsideConeAngle; + ULONG OutsideConeAngle; +} KSDS3D_BUFFER_CONE_ANGLES, *PKSDS3D_BUFFER_CONE_ANGLES; + +#define KSAUDIO_STEREO_SPEAKER_GEOMETRY_HEADPHONE (-1) +#define KSAUDIO_STEREO_SPEAKER_GEOMETRY_MIN 5 +#define KSAUDIO_STEREO_SPEAKER_GEOMETRY_NARROW 10 +#define KSAUDIO_STEREO_SPEAKER_GEOMETRY_WIDE 20 +#define KSAUDIO_STEREO_SPEAKER_GEOMETRY_MAX 180 + +#define KSDSOUND_3D_MODE_NORMAL 0x00000000 +#define KSDSOUND_3D_MODE_HEADRELATIVE 0x00000001 +#define KSDSOUND_3D_MODE_DISABLE 0x00000002 + +typedef struct { + KSDATARANGE DataRange; + ULONG MaximumChannels; + ULONG MinimumBitsPerSample; + ULONG MaximumBitsPerSample; + ULONG MinimumSampleFrequency; + ULONG MaximumSampleFrequency; +} KSDATARANGE_AUDIO, *PKSDATARANGE_AUDIO; + +//--------------------------------------------------------------------------- + +#define STATIC_KSDATAFORMAT_SUBTYPE_RIFF\ + 0x4995DAEEL, 0x9EE6, 0x11D0, 0xA4, 0x0E, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 +DEFINE_GUIDSTRUCT("4995DAEE-9EE6-11D0-A40E-00A0C9223196", KSDATAFORMAT_SUBTYPE_RIFF); +#define KSDATAFORMAT_SUBTYPE_RIFF DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_RIFF) + +#define STATIC_KSDATAFORMAT_SUBTYPE_RIFFWAVE\ + 0xe436eb8bL, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70 +DEFINE_GUIDSTRUCT("e436eb8b-524f-11ce-9f53-0020af0ba770", KSDATAFORMAT_SUBTYPE_RIFFWAVE); +#define KSDATAFORMAT_SUBTYPE_RIFFWAVE DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_RIFFWAVE) + +//=========================================================================== +//=========================================================================== + +#define STATIC_KSPROPSETID_Bibliographic \ + 0x07BA150EL, 0xE2B1, 0x11D0, 0xAC, 0x17, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 +DEFINE_GUIDSTRUCT("07BA150E-E2B1-11D0-AC17-00A0C9223196", KSPROPSETID_Bibliographic); +#define KSPROPSETID_Bibliographic DEFINE_GUIDNAMED(KSPROPSETID_Bibliographic) + +//Repeatable tags contain all entries within the property, each preceeded by length +typedef enum { + KSPROPERTY_BIBLIOGRAPHIC_LEADER = 'RDL ', + KSPROPERTY_BIBLIOGRAPHIC_LCCN = '010 ', + KSPROPERTY_BIBLIOGRAPHIC_ISBN = '020 ', + KSPROPERTY_BIBLIOGRAPHIC_ISSN = '220 ', + KSPROPERTY_BIBLIOGRAPHIC_CATALOGINGSOURCE = '040 ', + KSPROPERTY_BIBLIOGRAPHIC_MAINPERSONALNAME = '001 ', + KSPROPERTY_BIBLIOGRAPHIC_MAINCORPORATEBODY = '011 ', + KSPROPERTY_BIBLIOGRAPHIC_MAINMEETINGNAME = '111 ', + KSPROPERTY_BIBLIOGRAPHIC_MAINUNIFORMTITLE = '031 ', + KSPROPERTY_BIBLIOGRAPHIC_UNIFORMTITLE = '042 ', + KSPROPERTY_BIBLIOGRAPHIC_TITLESTATEMENT = '542 ', + KSPROPERTY_BIBLIOGRAPHIC_VARYINGFORMTITLE = '642 ', + KSPROPERTY_BIBLIOGRAPHIC_PUBLICATION = '062 ', + KSPROPERTY_BIBLIOGRAPHIC_PHYSICALDESCRIPTION = '003 ', + KSPROPERTY_BIBLIOGRAPHIC_ADDEDENTRYTITLE = '044 ', + KSPROPERTY_BIBLIOGRAPHIC_SERIESSTATEMENT = '094 ', + KSPROPERTY_BIBLIOGRAPHIC_GENERALNOTE = '005 ', + KSPROPERTY_BIBLIOGRAPHIC_BIBLIOGRAPHYNOTE = '405 ', + KSPROPERTY_BIBLIOGRAPHIC_CONTENTSNOTE = '505 ', + KSPROPERTY_BIBLIOGRAPHIC_CREATIONCREDIT = '805 ', + KSPROPERTY_BIBLIOGRAPHIC_CITATION = '015 ', + KSPROPERTY_BIBLIOGRAPHIC_PARTICIPANT = '115 ', + KSPROPERTY_BIBLIOGRAPHIC_SUMMARY = '025 ', + KSPROPERTY_BIBLIOGRAPHIC_TARGETAUDIENCE = '125 ', + KSPROPERTY_BIBLIOGRAPHIC_ADDEDFORMAVAILABLE = '035 ', + KSPROPERTY_BIBLIOGRAPHIC_SYSTEMDETAILS = '835 ', + KSPROPERTY_BIBLIOGRAPHIC_AWARDS = '685 ', + KSPROPERTY_BIBLIOGRAPHIC_ADDEDENTRYPERSONALNAME = '006 ', + KSPROPERTY_BIBLIOGRAPHIC_ADDEDENTRYTOPICALTERM = '056 ', + KSPROPERTY_BIBLIOGRAPHIC_ADDEDENTRYGEOGRAPHIC = '156 ', + KSPROPERTY_BIBLIOGRAPHIC_INDEXTERMGENRE = '556 ', + KSPROPERTY_BIBLIOGRAPHIC_INDEXTERMCURRICULUM = '856 ', + KSPROPERTY_BIBLIOGRAPHIC_ADDEDENTRYUNIFORMTITLE = '037 ', + KSPROPERTY_BIBLIOGRAPHIC_ADDEDENTRYRELATED = '047 ', + KSPROPERTY_BIBLIOGRAPHIC_SERIESSTATEMENTPERSONALNAME = '008 ', + KSPROPERTY_BIBLIOGRAPHIC_SERIESSTATEMENTUNIFORMTITLE = '038 ' +} KSPROPERTY_BIBLIOGRAPHIC; + +#define STATIC_KSPROPSETID_TopologyNode\ + 0x45FFAAA1L, 0x6E1B, 0x11D0, 0xBC, 0xF2, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00 +DEFINE_GUIDSTRUCT("45FFAAA1-6E1B-11D0-BCF2-444553540000", KSPROPSETID_TopologyNode); +#define KSPROPSETID_TopologyNode DEFINE_GUIDNAMED(KSPROPSETID_TopologyNode) + +typedef enum { + KSPROPERTY_TOPOLOGYNODE_ENABLE = 1, + KSPROPERTY_TOPOLOGYNODE_RESET +} KSPROPERTY_TOPOLOGYNODE; + +//=========================================================================== + +#if defined(_NTDDK_) +typedef NTSTATUS (CALLBACK *PRTAUDIOGETPOSITION)(IN PFILE_OBJECT PinFileObject, + OUT PUCHAR *ppPlayPosition, + OUT PLONG plOffset); +#endif // defined(_NTDDK_) + +#define STATIC_KSPROPSETID_RtAudio\ + 0xa855a48c, 0x2f78, 0x4729, 0x90, 0x51, 0x19, 0x68, 0x74, 0x6b, 0x9e, 0xef +DEFINE_GUIDSTRUCT("A855A48C-2F78-4729-9051-1968746B9EEF", KSPROPSETID_RtAudio); +#define KSPROPSETID_RtAudio DEFINE_GUIDNAMED(KSPROPSETID_RtAudio) + +typedef enum { + KSPROPERTY_RTAUDIO_GETPOSITIONFUNCTION +} KSPROPERTY_RTAUDIO; + +//=========================================================================== +#define STATIC_KSPROPSETID_DrmAudioStream\ + 0x2f2c8ddd, 0x4198, 0x4fac, 0xba, 0x29, 0x61, 0xbb, 0x5, 0xb7, 0xde, 0x6 +DEFINE_GUIDSTRUCT("2F2C8DDD-4198-4fac-BA29-61BB05B7DE06", KSPROPSETID_DrmAudioStream); +#define KSPROPSETID_DrmAudioStream DEFINE_GUIDNAMED(KSPROPSETID_DrmAudioStream) + +typedef enum { + KSPROPERTY_DRMAUDIOSTREAM_CONTENTID +} KSPROPERTY_DRMAUDIOSTREAM; + +//=========================================================================== +#define STATIC_KSPROPSETID_Audio\ + 0x45FFAAA0L, 0x6E1B, 0x11D0, 0xBC, 0xF2, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00 +DEFINE_GUIDSTRUCT("45FFAAA0-6E1B-11D0-BCF2-444553540000", KSPROPSETID_Audio); +#define KSPROPSETID_Audio DEFINE_GUIDNAMED(KSPROPSETID_Audio) + +typedef enum { + KSPROPERTY_AUDIO_LATENCY = 1, + KSPROPERTY_AUDIO_COPY_PROTECTION, + KSPROPERTY_AUDIO_CHANNEL_CONFIG, + KSPROPERTY_AUDIO_VOLUMELEVEL, + KSPROPERTY_AUDIO_POSITION, + KSPROPERTY_AUDIO_DYNAMIC_RANGE, + KSPROPERTY_AUDIO_QUALITY, + KSPROPERTY_AUDIO_SAMPLING_RATE, + KSPROPERTY_AUDIO_DYNAMIC_SAMPLING_RATE, + KSPROPERTY_AUDIO_MIX_LEVEL_TABLE, + KSPROPERTY_AUDIO_MIX_LEVEL_CAPS, + KSPROPERTY_AUDIO_MUX_SOURCE, + KSPROPERTY_AUDIO_MUTE, + KSPROPERTY_AUDIO_BASS, + KSPROPERTY_AUDIO_MID, + KSPROPERTY_AUDIO_TREBLE, + KSPROPERTY_AUDIO_BASS_BOOST, + KSPROPERTY_AUDIO_EQ_LEVEL, + KSPROPERTY_AUDIO_NUM_EQ_BANDS, + KSPROPERTY_AUDIO_EQ_BANDS, + KSPROPERTY_AUDIO_AGC, + KSPROPERTY_AUDIO_DELAY, + KSPROPERTY_AUDIO_LOUDNESS, + KSPROPERTY_AUDIO_WIDE_MODE, + KSPROPERTY_AUDIO_WIDENESS, + KSPROPERTY_AUDIO_REVERB_LEVEL, + KSPROPERTY_AUDIO_CHORUS_LEVEL, + KSPROPERTY_AUDIO_DEV_SPECIFIC, + KSPROPERTY_AUDIO_DEMUX_DEST, + KSPROPERTY_AUDIO_STEREO_ENHANCE, + KSPROPERTY_AUDIO_MANUFACTURE_GUID, + KSPROPERTY_AUDIO_PRODUCT_GUID, + KSPROPERTY_AUDIO_CPU_RESOURCES, + KSPROPERTY_AUDIO_STEREO_SPEAKER_GEOMETRY, + KSPROPERTY_AUDIO_SURROUND_ENCODE, + KSPROPERTY_AUDIO_3D_INTERFACE, + KSPROPERTY_AUDIO_PEAKMETER, + KSPROPERTY_AUDIO_ALGORITHM_INSTANCE, + KSPROPERTY_AUDIO_FILTER_STATE, + KSPROPERTY_AUDIO_PREFERRED_STATUS +} KSPROPERTY_AUDIO; + +// Audio quality constants +#define KSAUDIO_QUALITY_WORST 0x0 +#define KSAUDIO_QUALITY_PC 0x1 +#define KSAUDIO_QUALITY_BASIC 0x2 +#define KSAUDIO_QUALITY_ADVANCED 0x3 + +// Audio CPU resource constants +#define KSAUDIO_CPU_RESOURCES_NOT_HOST_CPU 0x00000000 +#define KSAUDIO_CPU_RESOURCES_HOST_CPU 0x7FFFFFFF + +typedef struct { + BOOL fCopyrighted; + BOOL fOriginal; +} KSAUDIO_COPY_PROTECTION, *PKSAUDIO_COPY_PROTECTION; + +typedef struct { + LONG ActiveSpeakerPositions; +} KSAUDIO_CHANNEL_CONFIG, *PKSAUDIO_CHANNEL_CONFIG; + +// Speaker Positions: +#define SPEAKER_FRONT_LEFT 0x1 +#define SPEAKER_FRONT_RIGHT 0x2 +#define SPEAKER_FRONT_CENTER 0x4 +#define SPEAKER_LOW_FREQUENCY 0x8 +#define SPEAKER_BACK_LEFT 0x10 +#define SPEAKER_BACK_RIGHT 0x20 +#define SPEAKER_FRONT_LEFT_OF_CENTER 0x40 +#define SPEAKER_FRONT_RIGHT_OF_CENTER 0x80 +#define SPEAKER_BACK_CENTER 0x100 +#define SPEAKER_SIDE_LEFT 0x200 +#define SPEAKER_SIDE_RIGHT 0x400 +#define SPEAKER_TOP_CENTER 0x800 +#define SPEAKER_TOP_FRONT_LEFT 0x1000 +#define SPEAKER_TOP_FRONT_CENTER 0x2000 +#define SPEAKER_TOP_FRONT_RIGHT 0x4000 +#define SPEAKER_TOP_BACK_LEFT 0x8000 +#define SPEAKER_TOP_BACK_CENTER 0x10000 +#define SPEAKER_TOP_BACK_RIGHT 0x20000 + +// Bit mask locations reserved for future use +#define SPEAKER_RESERVED 0x7FFC0000 + +// Used to specify that any possible permutation of speaker configurations +#define SPEAKER_ALL 0x80000000 + +// DirectSound Speaker Config +#define KSAUDIO_SPEAKER_DIRECTOUT 0 +#define KSAUDIO_SPEAKER_MONO (SPEAKER_FRONT_CENTER) +#define KSAUDIO_SPEAKER_STEREO (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT) +#define KSAUDIO_SPEAKER_QUAD (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | \ + SPEAKER_BACK_LEFT | SPEAKER_BACK_RIGHT) +#define KSAUDIO_SPEAKER_SURROUND (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | \ + SPEAKER_FRONT_CENTER | SPEAKER_BACK_CENTER) +#define KSAUDIO_SPEAKER_5POINT1 (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | \ + SPEAKER_FRONT_CENTER | SPEAKER_LOW_FREQUENCY | \ + SPEAKER_BACK_LEFT | SPEAKER_BACK_RIGHT) +#define KSAUDIO_SPEAKER_7POINT1 (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | \ + SPEAKER_FRONT_CENTER | SPEAKER_LOW_FREQUENCY | \ + SPEAKER_BACK_LEFT | SPEAKER_BACK_RIGHT | \ + SPEAKER_FRONT_LEFT_OF_CENTER | SPEAKER_FRONT_RIGHT_OF_CENTER) +#define KSAUDIO_SPEAKER_5POINT1_SURROUND (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | \ + SPEAKER_FRONT_CENTER | SPEAKER_LOW_FREQUENCY | \ + SPEAKER_SIDE_LEFT | SPEAKER_SIDE_RIGHT) +#define KSAUDIO_SPEAKER_7POINT1_SURROUND (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | \ + SPEAKER_FRONT_CENTER | SPEAKER_LOW_FREQUENCY | \ + SPEAKER_BACK_LEFT | SPEAKER_BACK_RIGHT | \ + SPEAKER_SIDE_LEFT | SPEAKER_SIDE_RIGHT) +// The following are obsolete 5.1 and 7.1 settings (they lack side speakers). Note this means +// that the default 5.1 and 7.1 settings (KSAUDIO_SPEAKER_5POINT1 and KSAUDIO_SPEAKER_7POINT1 are +// similarly obsolete but are unchanged for compatibility reasons). +#define KSAUDIO_SPEAKER_5POINT1_BACK KSAUDIO_SPEAKER_5POINT1 +#define KSAUDIO_SPEAKER_7POINT1_WIDE KSAUDIO_SPEAKER_7POINT1 + +// DVD Speaker Positions +#define KSAUDIO_SPEAKER_GROUND_FRONT_LEFT SPEAKER_FRONT_LEFT +#define KSAUDIO_SPEAKER_GROUND_FRONT_CENTER SPEAKER_FRONT_CENTER +#define KSAUDIO_SPEAKER_GROUND_FRONT_RIGHT SPEAKER_FRONT_RIGHT +#define KSAUDIO_SPEAKER_GROUND_REAR_LEFT SPEAKER_BACK_LEFT +#define KSAUDIO_SPEAKER_GROUND_REAR_RIGHT SPEAKER_BACK_RIGHT +#define KSAUDIO_SPEAKER_TOP_MIDDLE SPEAKER_TOP_CENTER +#define KSAUDIO_SPEAKER_SUPER_WOOFER SPEAKER_LOW_FREQUENCY + +typedef struct { + ULONG QuietCompression; + ULONG LoudCompression; +} KSAUDIO_DYNAMIC_RANGE, *PKSAUDIO_DYNAMIC_RANGE; + +typedef struct { + BOOL Mute; + LONG Level; +} KSAUDIO_MIXLEVEL, *PKSAUDIO_MIXLEVEL; + +typedef struct { + BOOL Mute; + LONG Minimum; + LONG Maximum; + LONG Reset; +} KSAUDIO_MIX_CAPS, *PKSAUDIO_MIX_CAPS; + +typedef struct { + ULONG InputChannels; + ULONG OutputChannels; + KSAUDIO_MIX_CAPS Capabilities[1]; +} KSAUDIO_MIXCAP_TABLE, *PKSAUDIO_MIXCAP_TABLE; + +typedef enum { + SE_TECH_NONE, + SE_TECH_ANALOG_DEVICES_PHAT, + SE_TECH_CREATIVE, + SE_TECH_NATIONAL_SEMI, + SE_TECH_YAMAHA_YMERSION, + SE_TECH_BBE, + SE_TECH_CRYSTAL_SEMI, + SE_TECH_QSOUND_QXPANDER, + SE_TECH_SPATIALIZER, + SE_TECH_SRS, + SE_TECH_PLATFORM_TECH, + SE_TECH_AKM, + SE_TECH_AUREAL, + SE_TECH_AZTECH, + SE_TECH_BINAURA, + SE_TECH_ESS_TECH, + SE_TECH_HARMAN_VMAX, + SE_TECH_NVIDEA, + SE_TECH_PHILIPS_INCREDIBLE, + SE_TECH_TEXAS_INST, + SE_TECH_VLSI_TECH +} SE_TECHNIQUE; + +typedef struct { + SE_TECHNIQUE Technique; + ULONG Center; + ULONG Depth; + ULONG Reserved; +} KSAUDIO_STEREO_ENHANCE, *PKSAUDIO_STEREO_ENHANCE; + +typedef enum { // preferred device index + KSPROPERTY_SYSAUDIO_NORMAL_DEFAULT = 0, + KSPROPERTY_SYSAUDIO_PLAYBACK_DEFAULT, + KSPROPERTY_SYSAUDIO_RECORD_DEFAULT, + KSPROPERTY_SYSAUDIO_MIDI_DEFAULT, + KSPROPERTY_SYSAUDIO_MIXER_DEFAULT +} KSPROPERTY_SYSAUDIO_DEFAULT_TYPE; + +typedef struct { + BOOL Enable; + KSPROPERTY_SYSAUDIO_DEFAULT_TYPE DeviceType; + ULONG Flags; + ULONG Reserved; +} KSAUDIO_PREFERRED_STATUS, *PKSAUDIO_PREFERRED_STATUS; +//=========================================================================== +// Topology Node Type GUIDs + +#define STATIC_KSNODETYPE_DAC\ + 0x507AE360L, 0xC554, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1 +DEFINE_GUIDSTRUCT("507AE360-C554-11D0-8A2B-00A0C9255AC1", KSNODETYPE_DAC); +#define KSNODETYPE_DAC DEFINE_GUIDNAMED(KSNODETYPE_DAC) + +#define STATIC_KSNODETYPE_ADC\ + 0x4D837FE0L, 0xC555, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1 +DEFINE_GUIDSTRUCT("4D837FE0-C555-11D0-8A2B-00A0C9255AC1", KSNODETYPE_ADC); +#define KSNODETYPE_ADC DEFINE_GUIDNAMED(KSNODETYPE_ADC) + +#define STATIC_KSNODETYPE_SRC\ + 0x9DB7B9E0L, 0xC555, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1 +DEFINE_GUIDSTRUCT("9DB7B9E0-C555-11D0-8A2B-00A0C9255AC1", KSNODETYPE_SRC); +#define KSNODETYPE_SRC DEFINE_GUIDNAMED(KSNODETYPE_SRC) + +#define STATIC_KSNODETYPE_SUPERMIX\ + 0xE573ADC0L, 0xC555, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1 +DEFINE_GUIDSTRUCT("E573ADC0-C555-11D0-8A2B-00A0C9255AC1", KSNODETYPE_SUPERMIX); +#define KSNODETYPE_SUPERMIX DEFINE_GUIDNAMED(KSNODETYPE_SUPERMIX) + +#define STATIC_KSNODETYPE_MUX\ + 0x2CEAF780L, 0xC556, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1 +DEFINE_GUIDSTRUCT("2CEAF780-C556-11D0-8A2B-00A0C9255AC1", KSNODETYPE_MUX); +#define KSNODETYPE_MUX DEFINE_GUIDNAMED(KSNODETYPE_MUX) + +#define STATIC_KSNODETYPE_DEMUX\ + 0xC0EB67D4L, 0xE807, 0x11D0, 0x95, 0x8A, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 +DEFINE_GUIDSTRUCT("C0EB67D4-E807-11D0-958A-00C04FB925D3", KSNODETYPE_DEMUX); +#define KSNODETYPE_DEMUX DEFINE_GUIDNAMED(KSNODETYPE_DEMUX) + +#define STATIC_KSNODETYPE_SUM\ + 0xDA441A60L, 0xC556, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1 +DEFINE_GUIDSTRUCT("DA441A60-C556-11D0-8A2B-00A0C9255AC1", KSNODETYPE_SUM); +#define KSNODETYPE_SUM DEFINE_GUIDNAMED(KSNODETYPE_SUM) + +#define STATIC_KSNODETYPE_MUTE\ + 0x02B223C0L, 0xC557, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1 +DEFINE_GUIDSTRUCT("02B223C0-C557-11D0-8A2B-00A0C9255AC1", KSNODETYPE_MUTE); +#define KSNODETYPE_MUTE DEFINE_GUIDNAMED(KSNODETYPE_MUTE) + +#define STATIC_KSNODETYPE_VOLUME\ + 0x3A5ACC00L, 0xC557, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1 +DEFINE_GUIDSTRUCT("3A5ACC00-C557-11D0-8A2B-00A0C9255AC1", KSNODETYPE_VOLUME); +#define KSNODETYPE_VOLUME DEFINE_GUIDNAMED(KSNODETYPE_VOLUME) + +#define STATIC_KSNODETYPE_TONE\ + 0x7607E580L, 0xC557, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1 +DEFINE_GUIDSTRUCT("7607E580-C557-11D0-8A2B-00A0C9255AC1", KSNODETYPE_TONE); +#define KSNODETYPE_TONE DEFINE_GUIDNAMED(KSNODETYPE_TONE) + +#define STATIC_KSNODETYPE_EQUALIZER\ + 0x9D41B4A0L, 0xC557, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1 +DEFINE_GUIDSTRUCT("9D41B4A0-C557-11D0-8A2B-00A0C9255AC1", KSNODETYPE_EQUALIZER); +#define KSNODETYPE_EQUALIZER DEFINE_GUIDNAMED(KSNODETYPE_EQUALIZER) + +#define STATIC_KSNODETYPE_AGC\ + 0xE88C9BA0L, 0xC557, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1 +DEFINE_GUIDSTRUCT("E88C9BA0-C557-11D0-8A2B-00A0C9255AC1", KSNODETYPE_AGC); +#define KSNODETYPE_AGC DEFINE_GUIDNAMED(KSNODETYPE_AGC) + +#define STATIC_KSNODETYPE_NOISE_SUPPRESS\ + 0xe07f903f, 0x62fd, 0x4e60, 0x8c, 0xdd, 0xde, 0xa7, 0x23, 0x66, 0x65, 0xb5 +DEFINE_GUIDSTRUCT("E07F903F-62FD-4e60-8CDD-DEA7236665B5", KSNODETYPE_NOISE_SUPPRESS); +#define KSNODETYPE_NOISE_SUPPRESS DEFINE_GUIDNAMED(KSNODETYPE_NOISE_SUPPRESS) + +#define STATIC_KSNODETYPE_DELAY\ + 0x144981E0L, 0xC558, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1 +DEFINE_GUIDSTRUCT("144981E0-C558-11D0-8A2B-00A0C9255AC1", KSNODETYPE_DELAY); +#define KSNODETYPE_DELAY DEFINE_GUIDNAMED(KSNODETYPE_DELAY) + +#define STATIC_KSNODETYPE_LOUDNESS\ + 0x41887440L, 0xC558, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1 +DEFINE_GUIDSTRUCT("41887440-C558-11D0-8A2B-00A0C9255AC1", KSNODETYPE_LOUDNESS); +#define KSNODETYPE_LOUDNESS DEFINE_GUIDNAMED(KSNODETYPE_LOUDNESS) + +#define STATIC_KSNODETYPE_PROLOGIC_DECODER\ + 0x831C2C80L, 0xC558, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1 +DEFINE_GUIDSTRUCT("831C2C80-C558-11D0-8A2B-00A0C9255AC1", KSNODETYPE_PROLOGIC_DECODER); +#define KSNODETYPE_PROLOGIC_DECODER DEFINE_GUIDNAMED(KSNODETYPE_PROLOGIC_DECODER) + +#define STATIC_KSNODETYPE_STEREO_WIDE\ + 0xA9E69800L, 0xC558, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1 +DEFINE_GUIDSTRUCT("A9E69800-C558-11D0-8A2B-00A0C9255AC1", KSNODETYPE_STEREO_WIDE); +#define KSNODETYPE_STEREO_WIDE DEFINE_GUIDNAMED(KSNODETYPE_STEREO_WIDE) + +#define STATIC_KSNODETYPE_STEREO_ENHANCE\ + 0xAF6878ACL, 0xE83F, 0x11D0, 0x95, 0x8A, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 +DEFINE_GUIDSTRUCT("AF6878AC-E83F-11D0-958A-00C04FB925D3", KSNODETYPE_STEREO_ENHANCE); +#define KSNODETYPE_STEREO_ENHANCE DEFINE_GUIDNAMED(KSNODETYPE_STEREO_ENHANCE) + +#define STATIC_KSNODETYPE_REVERB\ + 0xEF0328E0L, 0xC558, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1 +DEFINE_GUIDSTRUCT("EF0328E0-C558-11D0-8A2B-00A0C9255AC1", KSNODETYPE_REVERB); +#define KSNODETYPE_REVERB DEFINE_GUIDNAMED(KSNODETYPE_REVERB) + +#define STATIC_KSNODETYPE_CHORUS\ + 0x20173F20L, 0xC559, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1 +DEFINE_GUIDSTRUCT("20173F20-C559-11D0-8A2B-00A0C9255AC1", KSNODETYPE_CHORUS); +#define KSNODETYPE_CHORUS DEFINE_GUIDNAMED(KSNODETYPE_CHORUS) + +#define STATIC_KSNODETYPE_3D_EFFECTS\ + 0x55515860L, 0xC559, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1 +DEFINE_GUIDSTRUCT("55515860-C559-11D0-8A2B-00A0C9255AC1", KSNODETYPE_3D_EFFECTS); +#define KSNODETYPE_3D_EFFECTS DEFINE_GUIDNAMED(KSNODETYPE_3D_EFFECTS) + +#define STATIC_KSNODETYPE_ACOUSTIC_ECHO_CANCEL STATIC_KSCATEGORY_ACOUSTIC_ECHO_CANCEL +#define KSNODETYPE_ACOUSTIC_ECHO_CANCEL KSCATEGORY_ACOUSTIC_ECHO_CANCEL + +#define STATIC_KSALGORITHMINSTANCE_SYSTEM_ACOUSTIC_ECHO_CANCEL\ + 0x1c22c56dL, 0x9879, 0x4f5b, 0xa3, 0x89, 0x27, 0x99, 0x6d, 0xdc, 0x28, 0x10 +DEFINE_GUIDSTRUCT("1C22C56D-9879-4f5b-A389-27996DDC2810", KSALGORITHMINSTANCE_SYSTEM_ACOUSTIC_ECHO_CANCEL); +#define KSALGORITHMINSTANCE_SYSTEM_ACOUSTIC_ECHO_CANCEL DEFINE_GUIDNAMED(KSALGORITHMINSTANCE_SYSTEM_ACOUSTIC_ECHO_CANCEL) + +#define STATIC_KSALGORITHMINSTANCE_SYSTEM_NOISE_SUPPRESS\ + 0x5ab0882eL, 0x7274, 0x4516, 0x87, 0x7d, 0x4e, 0xee, 0x99, 0xba, 0x4f, 0xd0 +DEFINE_GUIDSTRUCT("5AB0882E-7274-4516-877D-4EEE99BA4FD0", KSALGORITHMINSTANCE_SYSTEM_NOISE_SUPPRESS); +#define KSALGORITHMINSTANCE_SYSTEM_NOISE_SUPPRESS DEFINE_GUIDNAMED(KSALGORITHMINSTANCE_SYSTEM_NOISE_SUPPRESS) + +#define STATIC_KSALGORITHMINSTANCE_SYSTEM_AGC\ + 0x950e55b9L, 0x877c, 0x4c67, 0xbe, 0x8, 0xe4, 0x7b, 0x56, 0x11, 0x13, 0xa +DEFINE_GUIDSTRUCT("950E55B9-877C-4c67-BE08-E47B5611130A", KSALGORITHMINSTANCE_SYSTEM_AGC); +#define KSALGORITHMINSTANCE_SYSTEM_AGC DEFINE_GUIDNAMED(KSALGORITHMINSTANCE_SYSTEM_AGC) + +#define STATIC_KSALGORITHMINSTANCE_SYSTEM_MICROPHONE_ARRAY_PROCESSOR\ + 0xB6F5A0A0L, 0x9E61, 0x4F8C, 0x91, 0xE3, 0x76, 0xCF, 0xF, 0x3C, 0x47, 0x1F +DEFINE_GUIDSTRUCT("B6F5A0A0-9E61-4f8c-91E3-76CF0F3C471F", KSALGORITHMINSTANCE_SYSTEM_MICROPHONE_ARRAY_PROCESSOR); +#define KSALGORITHMINSTANCE_SYSTEM_MICROPHONE_ARRAY_PROCESSOR DEFINE_GUIDNAMED(KSALGORITHMINSTANCE_SYSTEM_MICROPHONE_ARRAY_PROCESSOR) + + +#define STATIC_KSNODETYPE_MICROPHONE_ARRAY_PROCESSOR STATIC_KSCATEGORY_MICROPHONE_ARRAY_PROCESSOR +#define KSNODETYPE_MICROPHONE_ARRAY_PROCESSOR KSCATEGORY_MICROPHONE_ARRAY_PROCESSOR + +#define STATIC_KSNODETYPE_DEV_SPECIFIC\ + 0x941C7AC0L, 0xC559, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1 +DEFINE_GUIDSTRUCT("941C7AC0-C559-11D0-8A2B-00A0C9255AC1", KSNODETYPE_DEV_SPECIFIC); +#define KSNODETYPE_DEV_SPECIFIC DEFINE_GUIDNAMED(KSNODETYPE_DEV_SPECIFIC) + +#define STATIC_KSNODETYPE_PROLOGIC_ENCODER\ + 0x8074C5B2L, 0x3C66, 0x11D2, 0xB4, 0x5A, 0x30, 0x78, 0x30, 0x2C, 0x20, 0x30 +DEFINE_GUIDSTRUCT("8074C5B2-3C66-11D2-B45A-3078302C2030", KSNODETYPE_PROLOGIC_ENCODER); +#define KSNODETYPE_PROLOGIC_ENCODER DEFINE_GUIDNAMED(KSNODETYPE_PROLOGIC_ENCODER) +#define KSNODETYPE_SURROUND_ENCODER KSNODETYPE_PROLOGIC_ENCODER + +#define STATIC_KSNODETYPE_PEAKMETER\ + 0xa085651eL, 0x5f0d, 0x4b36, 0xa8, 0x69, 0xd1, 0x95, 0xd6, 0xab, 0x4b, 0x9e +DEFINE_GUIDSTRUCT("A085651E-5F0D-4b36-A869-D195D6AB4B9E", KSNODETYPE_PEAKMETER); +#define KSNODETYPE_PEAKMETER DEFINE_GUIDNAMED(KSNODETYPE_PEAKMETER) + +//=========================================================================== +// Topology Node Name GUIDs for common audio nodes +#define STATIC_KSAUDFNAME_BASS\ + 0x185FEDE0L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 +DEFINE_GUIDSTRUCT("185FEDE0-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_BASS); +#define KSAUDFNAME_BASS DEFINE_GUIDNAMED(KSAUDFNAME_BASS) + +#define STATIC_KSAUDFNAME_TREBLE\ + 0x185FEDE1L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 +DEFINE_GUIDSTRUCT("185FEDE1-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_TREBLE); +#define KSAUDFNAME_TREBLE DEFINE_GUIDNAMED(KSAUDFNAME_TREBLE) + +#define STATIC_KSAUDFNAME_3D_STEREO\ + 0x185FEDE2L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 +DEFINE_GUIDSTRUCT("185FEDE2-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_3D_STEREO); +#define KSAUDFNAME_3D_STEREO DEFINE_GUIDNAMED(KSAUDFNAME_3D_STEREO) + +#define STATIC_KSAUDFNAME_MASTER_VOLUME\ + 0x185FEDE3L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 +DEFINE_GUIDSTRUCT("185FEDE3-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_MASTER_VOLUME); +#define KSAUDFNAME_MASTER_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_MASTER_VOLUME) + +#define STATIC_KSAUDFNAME_MASTER_MUTE\ + 0x185FEDE4L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 +DEFINE_GUIDSTRUCT("185FEDE4-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_MASTER_MUTE); +#define KSAUDFNAME_MASTER_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_MASTER_MUTE) + +#define STATIC_KSAUDFNAME_WAVE_VOLUME\ + 0x185FEDE5L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 +DEFINE_GUIDSTRUCT("185FEDE5-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_WAVE_VOLUME); +#define KSAUDFNAME_WAVE_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_WAVE_VOLUME) + +#define STATIC_KSAUDFNAME_WAVE_MUTE\ + 0x185FEDE6L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 +DEFINE_GUIDSTRUCT("185FEDE6-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_WAVE_MUTE); +#define KSAUDFNAME_WAVE_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_WAVE_MUTE) + +#define STATIC_KSAUDFNAME_MIDI_VOLUME\ + 0x185FEDE7L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 +DEFINE_GUIDSTRUCT("185FEDE7-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_MIDI_VOLUME); +#define KSAUDFNAME_MIDI_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_MIDI_VOLUME) + +#define STATIC_KSAUDFNAME_MIDI_MUTE\ + 0x185FEDE8L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 +DEFINE_GUIDSTRUCT("185FEDE8-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_MIDI_MUTE); +#define KSAUDFNAME_MIDI_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_MIDI_MUTE) + +#define STATIC_KSAUDFNAME_CD_VOLUME\ + 0x185FEDE9L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 +DEFINE_GUIDSTRUCT("185FEDE9-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_CD_VOLUME); +#define KSAUDFNAME_CD_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_CD_VOLUME) + +#define STATIC_KSAUDFNAME_CD_MUTE\ + 0x185FEDEAL, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 +DEFINE_GUIDSTRUCT("185FEDEA-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_CD_MUTE); +#define KSAUDFNAME_CD_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_CD_MUTE) + +#define STATIC_KSAUDFNAME_LINE_VOLUME\ + 0x185FEDEBL, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 +DEFINE_GUIDSTRUCT("185FEDEB-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_LINE_VOLUME); +#define KSAUDFNAME_LINE_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_LINE_VOLUME) + +#define STATIC_KSAUDFNAME_LINE_MUTE\ + 0x185FEDECL, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 +DEFINE_GUIDSTRUCT("185FEDEC-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_LINE_MUTE); +#define KSAUDFNAME_LINE_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_LINE_MUTE) + +#define STATIC_KSAUDFNAME_MIC_VOLUME\ + 0x185FEDEDL, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 +DEFINE_GUIDSTRUCT("185FEDED-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_MIC_VOLUME); +#define KSAUDFNAME_MIC_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_MIC_VOLUME) + +#define STATIC_KSAUDFNAME_MIC_MUTE\ + 0x185FEDEEL, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 +DEFINE_GUIDSTRUCT("185FEDEE-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_MIC_MUTE); +#define KSAUDFNAME_MIC_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_MIC_MUTE) + +#define STATIC_KSAUDFNAME_RECORDING_SOURCE\ + 0x185FEDEFL, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 +DEFINE_GUIDSTRUCT("185FEDEF-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_RECORDING_SOURCE); +#define KSAUDFNAME_RECORDING_SOURCE DEFINE_GUIDNAMED(KSAUDFNAME_RECORDING_SOURCE) + +#define STATIC_KSAUDFNAME_PC_SPEAKER_VOLUME\ + 0x185FEDF0L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 +DEFINE_GUIDSTRUCT("185FEDF0-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_PC_SPEAKER_VOLUME); +#define KSAUDFNAME_PC_SPEAKER_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_PC_SPEAKER_VOLUME) + +#define STATIC_KSAUDFNAME_PC_SPEAKER_MUTE\ + 0x185FEDF1L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 +DEFINE_GUIDSTRUCT("185FEDF1-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_PC_SPEAKER_MUTE); +#define KSAUDFNAME_PC_SPEAKER_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_PC_SPEAKER_MUTE) + +#define STATIC_KSAUDFNAME_MIDI_IN_VOLUME\ + 0x185FEDF2L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 +DEFINE_GUIDSTRUCT("185FEDF2-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_MIDI_IN_VOLUME); +#define KSAUDFNAME_MIDI_IN_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_MIDI_IN_VOLUME) + +#define STATIC_KSAUDFNAME_CD_IN_VOLUME\ + 0x185FEDF3L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 +DEFINE_GUIDSTRUCT("185FEDF3-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_CD_IN_VOLUME); +#define KSAUDFNAME_CD_IN_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_CD_IN_VOLUME) + +#define STATIC_KSAUDFNAME_LINE_IN_VOLUME\ + 0x185FEDF4L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 +DEFINE_GUIDSTRUCT("185FEDF4-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_LINE_IN_VOLUME); +#define KSAUDFNAME_LINE_IN_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_LINE_IN_VOLUME) + +#define STATIC_KSAUDFNAME_MIC_IN_VOLUME\ + 0x185FEDF5L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 +DEFINE_GUIDSTRUCT("185FEDF5-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_MIC_IN_VOLUME); +#define KSAUDFNAME_MIC_IN_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_MIC_IN_VOLUME) + +#define STATIC_KSAUDFNAME_WAVE_IN_VOLUME\ + 0x185FEDF6L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 +DEFINE_GUIDSTRUCT("185FEDF6-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_WAVE_IN_VOLUME); +#define KSAUDFNAME_WAVE_IN_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_WAVE_IN_VOLUME) + +#define STATIC_KSAUDFNAME_VOLUME_CONTROL\ + 0x185FEDF7L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 +DEFINE_GUIDSTRUCT("185FEDF7-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_VOLUME_CONTROL); +#define KSAUDFNAME_VOLUME_CONTROL DEFINE_GUIDNAMED(KSAUDFNAME_VOLUME_CONTROL) + +#define STATIC_KSAUDFNAME_MIDI\ + 0x185FEDF8L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 +DEFINE_GUIDSTRUCT("185FEDF8-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_MIDI); +#define KSAUDFNAME_MIDI DEFINE_GUIDNAMED(KSAUDFNAME_MIDI) + +#define STATIC_KSAUDFNAME_LINE_IN\ + 0x185FEDF9L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 +DEFINE_GUIDSTRUCT("185FEDF9-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_LINE_IN); +#define KSAUDFNAME_LINE_IN DEFINE_GUIDNAMED(KSAUDFNAME_LINE_IN) + +#define STATIC_KSAUDFNAME_RECORDING_CONTROL\ + 0x185FEDFAL, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 +DEFINE_GUIDSTRUCT("185FEDFA-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_RECORDING_CONTROL); +#define KSAUDFNAME_RECORDING_CONTROL DEFINE_GUIDNAMED(KSAUDFNAME_RECORDING_CONTROL) + +#define STATIC_KSAUDFNAME_CD_AUDIO\ + 0x185FEDFBL, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 +DEFINE_GUIDSTRUCT("185FEDFB-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_CD_AUDIO); +#define KSAUDFNAME_CD_AUDIO DEFINE_GUIDNAMED(KSAUDFNAME_CD_AUDIO) + +#define STATIC_KSAUDFNAME_AUX_VOLUME\ + 0x185FEDFCL, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 +DEFINE_GUIDSTRUCT("185FEDFC-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_AUX_VOLUME); +#define KSAUDFNAME_AUX_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_AUX_VOLUME) + +#define STATIC_KSAUDFNAME_AUX_MUTE\ + 0x185FEDFDL, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 +DEFINE_GUIDSTRUCT("185FEDFD-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_AUX_MUTE); +#define KSAUDFNAME_AUX_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_AUX_MUTE) + +#define STATIC_KSAUDFNAME_AUX\ + 0x185FEDFEL, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 +DEFINE_GUIDSTRUCT("185FEDFE-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_AUX); +#define KSAUDFNAME_AUX DEFINE_GUIDNAMED(KSAUDFNAME_AUX) + +#define STATIC_KSAUDFNAME_PC_SPEAKER\ + 0x185FEDFFL, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 +DEFINE_GUIDSTRUCT("185FEDFF-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_PC_SPEAKER); +#define KSAUDFNAME_PC_SPEAKER DEFINE_GUIDNAMED(KSAUDFNAME_PC_SPEAKER) + +#define STATIC_KSAUDFNAME_WAVE_OUT_MIX\ + 0x185FEE00L, 0x9905, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 +DEFINE_GUIDSTRUCT("185FEE00-9905-11D1-95A9-00C04FB925D3", KSAUDFNAME_WAVE_OUT_MIX); +#define KSAUDFNAME_WAVE_OUT_MIX DEFINE_GUIDNAMED(KSAUDFNAME_WAVE_OUT_MIX) + +#define STATIC_KSAUDFNAME_MONO_OUT\ + 0xf9b41dc3L, 0x96e2, 0x11d2, 0xac, 0x4c, 0x0, 0xc0, 0x4f, 0x8e, 0xfb, 0x68 +DEFINE_GUIDSTRUCT("F9B41DC3-96E2-11d2-AC4C-00C04F8EFB68", KSAUDFNAME_MONO_OUT); +#define KSAUDFNAME_MONO_OUT DEFINE_GUIDNAMED(KSAUDFNAME_MONO_OUT) + +#define STATIC_KSAUDFNAME_STEREO_MIX\ + 0xdff077L, 0x96e3, 0x11d2, 0xac, 0x4c, 0x0, 0xc0, 0x4f, 0x8e, 0xfb, 0x68 +DEFINE_GUIDSTRUCT("00DFF077-96E3-11d2-AC4C-00C04F8EFB68", KSAUDFNAME_STEREO_MIX); +#define KSAUDFNAME_STEREO_MIX DEFINE_GUIDNAMED(KSAUDFNAME_STEREO_MIX) + +#define STATIC_KSAUDFNAME_MONO_MIX\ + 0xdff078L, 0x96e3, 0x11d2, 0xac, 0x4c, 0x0, 0xc0, 0x4f, 0x8e, 0xfb, 0x68 +DEFINE_GUIDSTRUCT("00DFF078-96E3-11d2-AC4C-00C04F8EFB68", KSAUDFNAME_MONO_MIX); +#define KSAUDFNAME_MONO_MIX DEFINE_GUIDNAMED(KSAUDFNAME_MONO_MIX) + +#define STATIC_KSAUDFNAME_MONO_OUT_VOLUME\ + 0x1ad247ebL, 0x96e3, 0x11d2, 0xac, 0x4c, 0x0, 0xc0, 0x4f, 0x8e, 0xfb, 0x68 +DEFINE_GUIDSTRUCT("1AD247EB-96E3-11d2-AC4C-00C04F8EFB68", KSAUDFNAME_MONO_OUT_VOLUME); +#define KSAUDFNAME_MONO_OUT_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_MONO_OUT_VOLUME) + +#define STATIC_KSAUDFNAME_MONO_OUT_MUTE\ + 0x1ad247ecL, 0x96e3, 0x11d2, 0xac, 0x4c, 0x0, 0xc0, 0x4f, 0x8e, 0xfb, 0x68 +DEFINE_GUIDSTRUCT("1AD247EC-96E3-11d2-AC4C-00C04F8EFB68", KSAUDFNAME_MONO_OUT_MUTE); +#define KSAUDFNAME_MONO_OUT_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_MONO_OUT_MUTE) + +#define STATIC_KSAUDFNAME_STEREO_MIX_VOLUME\ + 0x1ad247edL, 0x96e3, 0x11d2, 0xac, 0x4c, 0x0, 0xc0, 0x4f, 0x8e, 0xfb, 0x68 +DEFINE_GUIDSTRUCT("1AD247ED-96E3-11d2-AC4C-00C04F8EFB68", KSAUDFNAME_STEREO_MIX_VOLUME); +#define KSAUDFNAME_STEREO_MIX_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_STEREO_MIX_VOLUME) + +#define STATIC_KSAUDFNAME_STEREO_MIX_MUTE\ + 0x22b0eafdL, 0x96e3, 0x11d2, 0xac, 0x4c, 0x0, 0xc0, 0x4f, 0x8e, 0xfb, 0x68 +DEFINE_GUIDSTRUCT("22B0EAFD-96E3-11d2-AC4C-00C04F8EFB68", KSAUDFNAME_STEREO_MIX_MUTE); +#define KSAUDFNAME_STEREO_MIX_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_STEREO_MIX_MUTE) + +#define STATIC_KSAUDFNAME_MONO_MIX_VOLUME\ + 0x22b0eafeL, 0x96e3, 0x11d2, 0xac, 0x4c, 0x0, 0xc0, 0x4f, 0x8e, 0xfb, 0x68 +DEFINE_GUIDSTRUCT("22B0EAFE-96E3-11d2-AC4C-00C04F8EFB68", KSAUDFNAME_MONO_MIX_VOLUME); +#define KSAUDFNAME_MONO_MIX_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_MONO_MIX_VOLUME) + +#define STATIC_KSAUDFNAME_MONO_MIX_MUTE\ + 0x2bc31d69L, 0x96e3, 0x11d2, 0xac, 0x4c, 0x0, 0xc0, 0x4f, 0x8e, 0xfb, 0x68 +DEFINE_GUIDSTRUCT("2BC31D69-96E3-11d2-AC4C-00C04F8EFB68", KSAUDFNAME_MONO_MIX_MUTE); +#define KSAUDFNAME_MONO_MIX_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_MONO_MIX_MUTE) + +#define STATIC_KSAUDFNAME_MICROPHONE_BOOST\ + 0x2bc31d6aL, 0x96e3, 0x11d2, 0xac, 0x4c, 0x0, 0xc0, 0x4f, 0x8e, 0xfb, 0x68 +DEFINE_GUIDSTRUCT("2BC31D6A-96E3-11d2-AC4C-00C04F8EFB68", KSAUDFNAME_MICROPHONE_BOOST); +#define KSAUDFNAME_MICROPHONE_BOOST DEFINE_GUIDNAMED(KSAUDFNAME_MICROPHONE_BOOST) + +#define STATIC_KSAUDFNAME_ALTERNATE_MICROPHONE\ + 0x2bc31d6bL, 0x96e3, 0x11d2, 0xac, 0x4c, 0x0, 0xc0, 0x4f, 0x8e, 0xfb, 0x68 +DEFINE_GUIDSTRUCT("2BC31D6B-96E3-11d2-AC4C-00C04F8EFB68", KSAUDFNAME_ALTERNATE_MICROPHONE); +#define KSAUDFNAME_ALTERNATE_MICROPHONE DEFINE_GUIDNAMED(KSAUDFNAME_ALTERNATE_MICROPHONE) + +#define STATIC_KSAUDFNAME_3D_DEPTH\ + 0x63ff5747L, 0x991f, 0x11d2, 0xac, 0x4d, 0x0, 0xc0, 0x4f, 0x8e, 0xfb, 0x68 +DEFINE_GUIDSTRUCT("63FF5747-991F-11d2-AC4D-00C04F8EFB68", KSAUDFNAME_3D_DEPTH); +#define KSAUDFNAME_3D_DEPTH DEFINE_GUIDNAMED(KSAUDFNAME_3D_DEPTH) + +#define STATIC_KSAUDFNAME_3D_CENTER\ + 0x9f0670b4L, 0x991f, 0x11d2, 0xac, 0x4d, 0x0, 0xc0, 0x4f, 0x8e, 0xfb, 0x68 +DEFINE_GUIDSTRUCT("9F0670B4-991F-11d2-AC4D-00C04F8EFB68", KSAUDFNAME_3D_CENTER); +#define KSAUDFNAME_3D_CENTER DEFINE_GUIDNAMED(KSAUDFNAME_3D_CENTER) + +#define STATIC_KSAUDFNAME_VIDEO_VOLUME\ + 0x9b46e708L, 0x992a, 0x11d2, 0xac, 0x4d, 0x0, 0xc0, 0x4f, 0x8e, 0xfb, 0x68 +DEFINE_GUIDSTRUCT("9B46E708-992A-11d2-AC4D-00C04F8EFB68", KSAUDFNAME_VIDEO_VOLUME); +#define KSAUDFNAME_VIDEO_VOLUME DEFINE_GUIDNAMED(KSAUDFNAME_VIDEO_VOLUME) + +#define STATIC_KSAUDFNAME_VIDEO_MUTE\ + 0x9b46e709L, 0x992a, 0x11d2, 0xac, 0x4d, 0x0, 0xc0, 0x4f, 0x8e, 0xfb, 0x68 +DEFINE_GUIDSTRUCT("9B46E709-992A-11d2-AC4D-00C04F8EFB68", KSAUDFNAME_VIDEO_MUTE); +#define KSAUDFNAME_VIDEO_MUTE DEFINE_GUIDNAMED(KSAUDFNAME_VIDEO_MUTE) + +#define STATIC_KSAUDFNAME_VIDEO\ + 0x915daec4L, 0xa434, 0x11d2, 0xac, 0x52, 0x0, 0xc0, 0x4f, 0x8e, 0xfb, 0x68 +DEFINE_GUIDSTRUCT("915DAEC4-A434-11d2-AC52-00C04F8EFB68", KSAUDFNAME_VIDEO); +#define KSAUDFNAME_VIDEO DEFINE_GUIDNAMED(KSAUDFNAME_VIDEO) + +#define STATIC_KSAUDFNAME_PEAKMETER\ + 0x57e24340L, 0xfc5b, 0x4612, 0xa5, 0x62, 0x72, 0xb1, 0x1a, 0x29, 0xdf, 0xae +DEFINE_GUIDSTRUCT("57E24340-FC5B-4612-A562-72B11A29DFAE", KSAUDFNAME_PEAKMETER); +#define KSAUDFNAME_PEAKMETER DEFINE_GUIDNAMED(KSAUDFNAME_PEAKMETER) + +// Internal topology node pin definitions + +#define KSNODEPIN_STANDARD_IN 1 +#define KSNODEPIN_STANDARD_OUT 0 + +#define KSNODEPIN_SUM_MUX_IN 1 // can be >= 1 +#define KSNODEPIN_SUM_MUX_OUT 0 + +#define KSNODEPIN_DEMUX_IN 0 +#define KSNODEPIN_DEMUX_OUT 1 // can be >= 1 + +#define KSNODEPIN_AEC_RENDER_IN 1 +#define KSNODEPIN_AEC_RENDER_OUT 0 +#define KSNODEPIN_AEC_CAPTURE_IN 2 +#define KSNODEPIN_AEC_CAPTURE_OUT 3 + +//=========================================================================== +//=========================================================================== + +#define STATIC_KSMETHODSETID_Wavetable\ + 0xDCEF31EBL, 0xD907, 0x11D0, 0x95, 0x83, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 +DEFINE_GUIDSTRUCT("DCEF31EB-D907-11D0-9583-00C04FB925D3", KSMETHODSETID_Wavetable); +#define KSMETHODSETID_Wavetable DEFINE_GUIDNAMED(KSMETHODSETID_Wavetable) + +typedef enum { + KSMETHOD_WAVETABLE_WAVE_ALLOC, + KSMETHOD_WAVETABLE_WAVE_FREE, + KSMETHOD_WAVETABLE_WAVE_FIND, + KSMETHOD_WAVETABLE_WAVE_WRITE +} KSMETHOD_WAVETABLE; + +typedef struct { + KSIDENTIFIER Identifier; // wave identifier + ULONG Size; // wave size + BOOL Looped; // wave looped flag + ULONG LoopPoint; // wave loop point + BOOL InROM; // wave InROM flag + KSDATAFORMAT Format; // wave format +} KSWAVETABLE_WAVE_DESC, *PKSWAVETABLE_WAVE_DESC; + + +//=========================================================================== +//=========================================================================== + +/* + Property sets and items +*/ + +//=========================================================================== +//=========================================================================== + +#define STATIC_KSPROPSETID_Acoustic_Echo_Cancel\ + 0xd7a4af8bL, 0x3dc1, 0x4902, 0x91, 0xea, 0x8a, 0x15, 0xc9, 0x0e, 0x05, 0xb2 +DEFINE_GUIDSTRUCT("D7A4AF8B-3DC1-4902-91EA-8A15C90E05B2", KSPROPSETID_Acoustic_Echo_Cancel); +#define KSPROPSETID_Acoustic_Echo_Cancel DEFINE_GUIDNAMED(KSPROPSETID_Acoustic_Echo_Cancel) + +typedef enum { + KSPROPERTY_AEC_NOISE_FILL_ENABLE = 0, + KSPROPERTY_AEC_STATUS, + KSPROPERTY_AEC_MODE +} KSPROPERTY_AEC; + +#define AEC_STATUS_FD_HISTORY_UNINITIALIZED 0x0 +#define AEC_STATUS_FD_HISTORY_CONTINUOUSLY_CONVERGED 0x1 +#define AEC_STATUS_FD_HISTORY_PREVIOUSLY_DIVERGED 0x2 +#define AEC_STATUS_FD_CURRENTLY_CONVERGED 0x8 + +#define AEC_MODE_PASS_THROUGH 0x0 +#define AEC_MODE_HALF_DUPLEX 0x1 +#define AEC_MODE_FULL_DUPLEX 0x2 + +//=========================================================================== +//=========================================================================== + +#define STATIC_KSPROPSETID_Wave_Queued\ + 0x16a15b10L, 0x16f0, 0x11d0, 0xa1, 0x95, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4 +DEFINE_GUIDSTRUCT("16a15b10-16f0-11d0-a195-0020afd156e4", KSPROPSETID_Wave_Queued); +#define KSPROPSETID_Wave_Queued DEFINE_GUIDNAMED(KSPROPSETID_Wave_Queued) + +#define KSPROPERTY_WAVE_QUEUED_POSITION 0x00000001 + +#define STATIC_KSMETHODSETID_Wave_Queued\ + 0x7432c160L, 0x8827, 0x11cf, 0xa1, 0x02, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4 +DEFINE_GUIDSTRUCT("7432c160-8827-11cf-a102-0020afd156e4", KSMETHODSETID_Wave_Queued); +#define KSMETHODSETID_Wave_Queued DEFINE_GUIDNAMED(KSMETHODSETID_Wave_Queued) + +#define KSMETHOD_WAVE_QUEUED_BREAKLOOP 0x00000001 + +#define STATIC_KSPROPSETID_Wave\ + 0x924e54b0L, 0x630f, 0x11cf, 0xad, 0xa7, 0x08, 0x00, 0x3e, 0x30, 0x49, 0x4a +DEFINE_GUIDSTRUCT("924e54b0-630f-11cf-ada7-08003e30494a", KSPROPSETID_Wave); +#define KSPROPSETID_Wave DEFINE_GUIDNAMED(KSPROPSETID_Wave) + +typedef enum { + KSPROPERTY_WAVE_COMPATIBLE_CAPABILITIES, + KSPROPERTY_WAVE_INPUT_CAPABILITIES, + KSPROPERTY_WAVE_OUTPUT_CAPABILITIES, + KSPROPERTY_WAVE_BUFFER, + KSPROPERTY_WAVE_FREQUENCY, + KSPROPERTY_WAVE_VOLUME, + KSPROPERTY_WAVE_PAN +} KSPROPERTY_WAVE; + +typedef struct { + ULONG ulDeviceType; +} KSWAVE_COMPATCAPS, *PKSWAVE_COMPATCAPS; + +#define KSWAVE_COMPATCAPS_INPUT 0x00000000 +#define KSWAVE_COMPATCAPS_OUTPUT 0x00000001 + +typedef struct { + ULONG MaximumChannelsPerConnection; + ULONG MinimumBitsPerSample; + ULONG MaximumBitsPerSample; + ULONG MinimumSampleFrequency; + ULONG MaximumSampleFrequency; + ULONG TotalConnections; + ULONG ActiveConnections; +} KSWAVE_INPUT_CAPABILITIES, *PKSWAVE_INPUT_CAPABILITIES; + +typedef struct { + ULONG MaximumChannelsPerConnection; + ULONG MinimumBitsPerSample; + ULONG MaximumBitsPerSample; + ULONG MinimumSampleFrequency; + ULONG MaximumSampleFrequency; + ULONG TotalConnections; + ULONG StaticConnections; + ULONG StreamingConnections; + ULONG ActiveConnections; + ULONG ActiveStaticConnections; + ULONG ActiveStreamingConnections; + ULONG Total3DConnections; + ULONG Static3DConnections; + ULONG Streaming3DConnections; + ULONG Active3DConnections; + ULONG ActiveStatic3DConnections; + ULONG ActiveStreaming3DConnections; + ULONG TotalSampleMemory; + ULONG FreeSampleMemory; + ULONG LargestFreeContiguousSampleMemory; +} KSWAVE_OUTPUT_CAPABILITIES, *PKSWAVE_OUTPUT_CAPABILITIES; + +typedef struct { + LONG LeftAttenuation; + LONG RightAttenuation; +} KSWAVE_VOLUME, *PKSWAVE_VOLUME; + +#define KSWAVE_BUFFER_ATTRIBUTEF_LOOPING 0x00000001 +#define KSWAVE_BUFFER_ATTRIBUTEF_STATIC 0x00000002 + +typedef struct { + ULONG Attributes; + ULONG BufferSize; + PVOID BufferAddress; +} KSWAVE_BUFFER, *PKSWAVE_BUFFER; + +//=========================================================================== +//=========================================================================== + +#define STATIC_KSMUSIC_TECHNOLOGY_PORT\ + 0x86C92E60L, 0x62E8, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 +DEFINE_GUIDSTRUCT("86C92E60-62E8-11CF-A5D6-28DB04C10000", KSMUSIC_TECHNOLOGY_PORT); +#define KSMUSIC_TECHNOLOGY_PORT DEFINE_GUIDNAMED(KSMUSIC_TECHNOLOGY_PORT) + +#define STATIC_KSMUSIC_TECHNOLOGY_SQSYNTH\ + 0x0ECF4380L, 0x62E9, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 +DEFINE_GUIDSTRUCT("0ECF4380-62E9-11CF-A5D6-28DB04C10000", KSMUSIC_TECHNOLOGY_SQSYNTH); +#define KSMUSIC_TECHNOLOGY_SQSYNTH DEFINE_GUIDNAMED(KSMUSIC_TECHNOLOGY_SQSYNTH) + +#define STATIC_KSMUSIC_TECHNOLOGY_FMSYNTH\ + 0x252C5C80L, 0x62E9, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 +DEFINE_GUIDSTRUCT("252C5C80-62E9-11CF-A5D6-28DB04C10000", KSMUSIC_TECHNOLOGY_FMSYNTH); +#define KSMUSIC_TECHNOLOGY_FMSYNTH DEFINE_GUIDNAMED(KSMUSIC_TECHNOLOGY_FMSYNTH) + +#define STATIC_KSMUSIC_TECHNOLOGY_WAVETABLE\ + 0x394EC7C0L, 0x62E9, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 +DEFINE_GUIDSTRUCT("394EC7C0-62E9-11CF-A5D6-28DB04C10000", KSMUSIC_TECHNOLOGY_WAVETABLE); +#define KSMUSIC_TECHNOLOGY_WAVETABLE DEFINE_GUIDNAMED(KSMUSIC_TECHNOLOGY_WAVETABLE) + +#define STATIC_KSMUSIC_TECHNOLOGY_SWSYNTH\ + 0x37407736L, 0x3620, 0x11D1, 0x85, 0xD3, 0x00, 0x00, 0xF8, 0x75, 0x43, 0x80 +DEFINE_GUIDSTRUCT("37407736-3620-11D1-85D3-0000F8754380", KSMUSIC_TECHNOLOGY_SWSYNTH); +#define KSMUSIC_TECHNOLOGY_SWSYNTH DEFINE_GUIDNAMED(KSMUSIC_TECHNOLOGY_SWSYNTH) + +#define STATIC_KSPROPSETID_WaveTable\ + 0x8539E660L, 0x62E9, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 +DEFINE_GUIDSTRUCT("8539E660-62E9-11CF-A5D6-28DB04C10000", KSPROPSETID_WaveTable); +#define KSPROPSETID_WaveTable DEFINE_GUIDNAMED(KSPROPSETID_WaveTable) + +typedef enum { + KSPROPERTY_WAVETABLE_LOAD_SAMPLE, + KSPROPERTY_WAVETABLE_UNLOAD_SAMPLE, + KSPROPERTY_WAVETABLE_MEMORY, + KSPROPERTY_WAVETABLE_VERSION +} KSPROPERTY_WAVETABLE; + +typedef struct { + KSDATARANGE DataRange; + GUID Technology; + ULONG Channels; + ULONG Notes; + ULONG ChannelMask; +} KSDATARANGE_MUSIC, *PKSDATARANGE_MUSIC; + +//=========================================================================== + +#define STATIC_KSEVENTSETID_Cyclic\ + 0x142C1AC0L, 0x072A, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 +DEFINE_GUIDSTRUCT("142C1AC0-072A-11D0-A5D6-28DB04C10000", KSEVENTSETID_Cyclic); +#define KSEVENTSETID_Cyclic DEFINE_GUIDNAMED(KSEVENTSETID_Cyclic) + +typedef enum { + KSEVENT_CYCLIC_TIME_INTERVAL, +} KSEVENT_CYCLIC_TIME; + +#define STATIC_KSPROPSETID_Cyclic\ + 0x3FFEAEA0L, 0x2BEE, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 +DEFINE_GUIDSTRUCT("3FFEAEA0-2BEE-11CF-A5D6-28DB04C10000", KSPROPSETID_Cyclic); +#define KSPROPSETID_Cyclic DEFINE_GUIDNAMED(KSPROPSETID_Cyclic) + +typedef enum { + KSPROPERTY_CYCLIC_POSITION, +} KSPROPERTY_CYCLIC; + +//=========================================================================== +#define STATIC_KSEVENTSETID_AudioControlChange\ + 0xE85E9698L, 0xFA2F, 0x11D1, 0x95, 0xBD, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3 +DEFINE_GUIDSTRUCT("E85E9698-FA2F-11D1-95BD-00C04FB925D3", KSEVENTSETID_AudioControlChange); +#define KSEVENTSETID_AudioControlChange DEFINE_GUIDNAMED(KSEVENTSETID_AudioControlChange) + +typedef enum { + KSEVENT_CONTROL_CHANGE, +} KSEVENT_AUDIO_CONTROL_CHANGE; + +//=========================================================================== + +#define STATIC_KSEVENTSETID_LoopedStreaming\ + 0x4682B940L, 0xC6EF, 0x11D0, 0x96, 0xD8, 0x00, 0xAA, 0x00, 0x51, 0xE5, 0x1D +DEFINE_GUIDSTRUCT("4682B940-C6EF-11D0-96D8-00AA0051E51D", KSEVENTSETID_LoopedStreaming); +#define KSEVENTSETID_LoopedStreaming DEFINE_GUIDNAMED(KSEVENTSETID_LoopedStreaming) + +typedef enum { + KSEVENT_LOOPEDSTREAMING_POSITION, +} KSEVENT_LOOPEDSTREAMING; + +typedef struct { + KSEVENTDATA KsEventData; +#if defined(_NTDDK_) + ULONGLONG Position; +#else // !_NTDDK_ + DWORDLONG Position; +#endif // !_NTDDK_ +} LOOPEDSTREAMING_POSITION_EVENT_DATA, *PLOOPEDSTREAMING_POSITION_EVENT_DATA ; + +// @@BEGIN_DDKSPLIT +//=========================================================================== +#define STATIC_KSEVENTSETID_Sysaudio \ + 0x04800320L, 0x4491, 0x11D1, 0xA0, 0x50, 0x40, 0x57, 0x05, 0xC1, 0x00, 0x00 +DEFINE_GUIDSTRUCT("04800320-4491-11D1-A050-405705C10000", KSEVENTSETID_Sysaudio); +#define KSEVENTSETID_Sysaudio DEFINE_GUIDNAMED(KSEVENTSETID_Sysaudio) + +typedef enum { + KSEVENT_SYSAUDIO_ADDREMOVE_DEVICE, + KSEVENT_SYSAUDIO_CHANGE_DEVICE +} KSEVENT_SYSAUDIO; +// @@END_DDKSPLIT + +//=========================================================================== +#define STATIC_KSPROPSETID_Sysaudio\ + 0xCBE3FAA0L, 0xCC75, 0x11D0, 0xB4, 0x65, 0x00, 0x00, 0x1A, 0x18, 0x18, 0xE6 +DEFINE_GUIDSTRUCT("CBE3FAA0-CC75-11D0-B465-00001A1818E6", KSPROPSETID_Sysaudio); +#define KSPROPSETID_Sysaudio DEFINE_GUIDNAMED(KSPROPSETID_Sysaudio) + +typedef enum { + KSPROPERTY_SYSAUDIO_DEVICE_COUNT = 1, + KSPROPERTY_SYSAUDIO_DEVICE_FRIENDLY_NAME = 2, + KSPROPERTY_SYSAUDIO_DEVICE_INSTANCE = 3, + KSPROPERTY_SYSAUDIO_DEVICE_INTERFACE_NAME = 4, + KSPROPERTY_SYSAUDIO_SELECT_GRAPH = 5, + KSPROPERTY_SYSAUDIO_CREATE_VIRTUAL_SOURCE = 6, + KSPROPERTY_SYSAUDIO_DEVICE_DEFAULT = 7, +// @@BEGIN_DDKSPLIT + KSPROPERTY_SYSAUDIO_ALWAYS_CREATE_VIRTUAL_SOURCE = 8, + KSPROPERTY_SYSAUDIO_ADDREMOVE_LOCK = 9, + KSPROPERTY_SYSAUDIO_ADDREMOVE_UNLOCK = 10, + KSPROPERTY_SYSAUDIO_RENDER_PIN_INSTANCES = 11, + KSPROPERTY_SYSAUDIO_RENDER_CONNECTION_INDEX = 12, + KSPROPERTY_SYSAUDIO_CREATE_VIRTUAL_SOURCE_ONLY = 13, +// @@END_DDKSPLIT + KSPROPERTY_SYSAUDIO_INSTANCE_INFO = 14, +// @@BEGIN_DDKSPLIT + KSPROPERTY_SYSAUDIO_PREFERRED_DEVICE = 15, +// @@END_DDKSPLIT + KSPROPERTY_SYSAUDIO_COMPONENT_ID = 16, +// @@BEGIN_DDKSPLIT + KSPROPERTY_SYSAUDIO_ADDREMOVE_GFX = 17 +// @@END_DDKSPLIT +} KSPROPERTY_SYSAUDIO; + +typedef struct { + KSPROPERTY Property; + GUID PinCategory; + GUID PinName; +} SYSAUDIO_CREATE_VIRTUAL_SOURCE, *PSYSAUDIO_CREATE_VIRTUAL_SOURCE; + +// @@BEGIN_DDKSPLIT +typedef struct { + BOOL Enable; + HANDLE hGfx; + ULONG ulOrder; // Order of the GFX + ULONG ulType; // Type of the GFX + ULONG ulFlags; + ULONG ulDeviceNameOffset; // DeviceInterface on which this GFX needs to be attached + ULONG ulFriendlyNameOffset; // Friendly name of the GFX +} SYSAUDIO_GFX, *PSYSAUDIO_GFX; + +#define GFX_DEVICETYPE_RENDER 1 +#define GFX_DEVICETYPE_CAPTURE 2 +// @@END_DDKSPLIT + +typedef struct { + KSPROPERTY Property; + ULONG PinId; + ULONG NodeId; + ULONG Flags; + ULONG Reserved; +} SYSAUDIO_SELECT_GRAPH, *PSYSAUDIO_SELECT_GRAPH; + +typedef struct { + KSPROPERTY Property; + ULONG Flags; + ULONG DeviceNumber; +} SYSAUDIO_INSTANCE_INFO, *PSYSAUDIO_INSTANCE_INFO; + +#define SYSAUDIO_FLAGS_DONT_COMBINE_PINS 0x00000001 + +// @@BEGIN_DDKSPLIT +typedef struct { + KSPROPERTY Property; + ULONG Flags; + ULONG Index; // KSPROPERTY_SYSAUDIO_DEFAULT_TYPE +} SYSAUDIO_PREFERRED_DEVICE, *PSYSAUDIO_PREFERRED_DEVICE; + +#define SYSAUDIO_FLAGS_CLEAR_PREFERRED 0x00000002 +// @@END_DDKSPLIT + +#define STATIC_KSPROPSETID_Sysaudio_Pin \ + 0xA3A53220L, 0xC6E4, 0x11D0, 0xB4, 0x65, 0x00, 0x00, 0x1A, 0x18, 0x18, 0xE6 +DEFINE_GUIDSTRUCT("A3A53220-C6E4-11D0-B465-00001A1818E6", KSPROPSETID_Sysaudio_Pin); +#define KSPROPSETID_Sysaudio_Pin DEFINE_GUIDNAMED(KSPROPSETID_Sysaudio_Pin) + +typedef enum { +// @@BEGIN_DDKSPLIT + KSPROPERTY_SYSAUDIO_TOPOLOGY_CONNECTION_INDEX = 0, +// @@END_DDKSPLIT + KSPROPERTY_SYSAUDIO_ATTACH_VIRTUAL_SOURCE = 1, +// @@BEGIN_DDKSPLIT + KSPROPERTY_SYSAUDIO_PIN_VOLUME_NODE = 2 +// @@END_DDKSPLIT +} KSPROPERTY_SYSAUDIO_PIN; + +typedef struct { + KSPROPERTY Property; + ULONG MixerPinId; + ULONG Reserved; +} SYSAUDIO_ATTACH_VIRTUAL_SOURCE, *PSYSAUDIO_ATTACH_VIRTUAL_SOURCE; + +//=========================================================================== +typedef struct { + KSPROPERTY Property; + ULONG NodeId; + ULONG Reserved; +} KSNODEPROPERTY, *PKSNODEPROPERTY; + +typedef struct { + KSNODEPROPERTY NodeProperty; + LONG Channel; // value to get or set + ULONG Reserved; +} KSNODEPROPERTY_AUDIO_CHANNEL, *PKSNODEPROPERTY_AUDIO_CHANNEL; + +typedef struct { + KSNODEPROPERTY NodeProperty; + ULONG DevSpecificId; + ULONG DeviceInfo; + ULONG Length; +} KSNODEPROPERTY_AUDIO_DEV_SPECIFIC, *PKSNODEPROPERTY_AUDIO_DEV_SPECIFIC; + +typedef struct { + KSNODEPROPERTY NodeProperty; + PVOID ListenerId; +#ifndef _WIN64 + ULONG Reserved; +#endif // _WIN64 +} KSNODEPROPERTY_AUDIO_3D_LISTENER, *PKSNODEPROPERTY_AUDIO_3D_LISTENER; + +typedef struct { + KSNODEPROPERTY NodeProperty; + PVOID AppContext; + ULONG Length; +#ifndef _WIN64 + ULONG Reserved; +#endif // _WIN64 +} KSNODEPROPERTY_AUDIO_PROPERTY, *PKSNODEPROPERTY_AUDIO_PROPERTY; + +//=========================================================================== +// {79A9312E-59AE-43b0-A350-8B05284CAB24} +#define STATIC_KSPROPSETID_AudioGfx\ + 0x79a9312eL, 0x59ae, 0x43b0, 0xa3, 0x50, 0x8b, 0x5, 0x28, 0x4c, 0xab, 0x24 +DEFINE_GUIDSTRUCT("79A9312E-59AE-43b0-A350-8B05284CAB24", KSPROPSETID_AudioGfx); +#define KSPROPSETID_AudioGfx DEFINE_GUIDNAMED(KSPROPSETID_AudioGfx) + +typedef enum { + KSPROPERTY_AUDIOGFX_RENDERTARGETDEVICEID, + KSPROPERTY_AUDIOGFX_CAPTURETARGETDEVICEID +} KSPROPERTY_AUDIOGFX; + +//=========================================================================== + +#define STATIC_KSPROPSETID_Linear\ + 0x5A2FFE80L, 0x16B9, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 +DEFINE_GUIDSTRUCT("5A2FFE80-16B9-11D0-A5D6-28DB04C10000", KSPROPSETID_Linear); +#define KSPROPSETID_Linear DEFINE_GUIDNAMED(KSPROPSETID_Linear) + +typedef enum { + KSPROPERTY_LINEAR_POSITION, +} KSPROPERTY_LINEAR; + +//=========================================================================== + +// +// Midi definitions +// + +/* + Formats +*/ + +#define STATIC_KSDATAFORMAT_TYPE_MUSIC\ + 0xE725D360L, 0x62CC, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 +DEFINE_GUIDSTRUCT("E725D360-62CC-11CF-A5D6-28DB04C10000", KSDATAFORMAT_TYPE_MUSIC); +#define KSDATAFORMAT_TYPE_MUSIC DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_MUSIC) + +// 'mids' == MEDIATYPE_Midi +#define STATIC_KSDATAFORMAT_TYPE_MIDI\ + 0x7364696DL, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 +DEFINE_GUIDSTRUCT("7364696D-0000-0010-8000-00aa00389b71", KSDATAFORMAT_TYPE_MIDI); +#define KSDATAFORMAT_TYPE_MIDI DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_MIDI) + +#define STATIC_KSDATAFORMAT_SUBTYPE_MIDI\ + 0x1D262760L, 0xE957, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 +DEFINE_GUIDSTRUCT("1D262760-E957-11CF-A5D6-28DB04C10000", KSDATAFORMAT_SUBTYPE_MIDI); +#define KSDATAFORMAT_SUBTYPE_MIDI DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_MIDI) + +#define STATIC_KSDATAFORMAT_SUBTYPE_MIDI_BUS\ + 0x2CA15FA0L, 0x6CFE, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 +DEFINE_GUIDSTRUCT("2CA15FA0-6CFE-11CF-A5D6-28DB04C10000", KSDATAFORMAT_SUBTYPE_MIDI_BUS); +#define KSDATAFORMAT_SUBTYPE_MIDI_BUS DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_MIDI_BUS) + +#define STATIC_KSDATAFORMAT_SUBTYPE_RIFFMIDI\ + 0x4995DAF0L, 0x9EE6, 0x11D0, 0xA4, 0x0E, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 +DEFINE_GUIDSTRUCT("4995DAF0-9EE6-11D0-A40E-00A0C9223196", KSDATAFORMAT_SUBTYPE_RIFFMIDI); +#define KSDATAFORMAT_SUBTYPE_RIFFMIDI DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_RIFFMIDI) + +/* + KSDATAFORMAT_SUBTYPE_DIRECTMUSIC + see DMusicKS.h +*/ + +// WARNING! This structure MUST be dword aligned +// regardless of the number of data bytes. + +typedef struct { + ULONG TimeDeltaMs; // Delta Milliseconds from the previous midiformat + // in the packet. The first midiformat in the packet + // is a delta from the PTS in the KSSTREAM_HEADER. + ULONG ByteCount; // Number of bytes of data that follow this struct. +} KSMUSICFORMAT, *PKSMUSICFORMAT; + +// +// This entire set of MPEG Standard/Dialect Guids are obsolete. Do not use them. +// +//==================================================================================================== +//==================================================================================================== +// The following official MPEG Formats, Subtypes and Specifiers are listed as required or optional +// These official MPEG GUIDs are the preferred method of supporting MPEG/AC-3 media types in new code. +// Older MPEG GUIDs should also be supported for compatibilty, but these new modes are still required. +//==================================================================================================== +//==================================================================================================== + +/* +This is a summary of what media types/specifiers will be required for all DVD+DSS+DVB+DTV MPEG decoders. +These media types are what the decoder driver must accept, hardware support for all of these media types +may or may not actually be provided by the decoder natively. These media types are intended to define +the "officially" supported MPEG/AC-3 media types that all WHQL certified decoders must implement. This +specifically includes driver and/or hardware support for all the required standards and dialects. + +All MPEG video decoders must support all of the MPEG video modes shown as [required] below. +All MPEG audio decoders must support all of the MPEG audio modes shown as [required] below. +All AC-3 audio decoders must support all of the AC-3 audio modes shown as [required] below. +The line items shown as [optional] need not be implemented, but are possible formats that might be implemented. + +Note that the input/output pin formats are defined by 2 or 3 GUIDs: TYPE, SUBTYPE, and maybe SPECIFIER. +The specifiers are included if the data format is a "dialect" that needs to be differentiated during decoding. +The decoder MUST be prepared to deal with ALL requests for _required_ "Standard" formats OR _required_ "Dialects". + +STATIC_KSDATAFORMAT_TYPE_STANDARD_ELEMENTARY_STREAM [required] + STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_VIDEO [required] + STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_VIDEO [optional] + STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_AUDIO [required] + STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_AUDIO [optional] + STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_VIDEO [required] + STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_VIDEO [required] + STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_AUDIO [required] + STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_AUDIO [optional] + STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_AC3_AUDIO [required] + STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_AC3_AUDIO [optional] +STATIC_KSDATAFORMAT_TYPE_STANDARD_PES_PACKET [required] + STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_VIDEO [optional] + STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_VIDEO [optional] + STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_AUDIO [optional] + STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_AUDIO [optional] + STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_VIDEO [required] + STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_VIDEO [required] + STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_AUDIO [required] + STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_AUDIO [required] + STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_AC3_AUDIO [required] + STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_AC3_AUDIO [optional] +STATIC_KSDATAFORMAT_TYPE_STANDARD_PACK_HEADER [required] + STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_VIDEO [required] + STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_VIDEO [required] + STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_AUDIO [required] + STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_AUDIO [optional] + STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_AC3_AUDIO [required] + STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_AC3_AUDIO [optional] + +Note that the SPECIFIER GUIDs normally identify particular versions of MPEG such as DSS and DVD. +This approach was taken to minimize the number of DSS/DVB/DVD/DTV etc. media SUBTYPES. +These specifiers are currently required to disambiguate MPEG syntax _parsing_ by the decoder +using alternate parsing routines or downloadable firmware or hardware decode settings. + +In the future these specifiers will be extended to cover new KS MPEG flavors such as DVB and DTV. +Thus, the optional specifiers will be subject to clarification and/or definition as they are needed. + +Important note: Per the ITU MPEG specs, MPEG 2 media may contain pure MPEG 1 syntax and +any "MPEG 2" PES packets may actually contain MPEG 1 payloads and MPEG 1 syntax. Some MPEG +broadcasts can revert from MPEG2 to MPEG1 format data at their discretion, without warning. + +CAUTION: Decoders MUST attempt to process MPEG data AS SOON AS POSSIBLE after reception. +In particular, elementary MPEG or MPEG PES packet streams should not be aggregated into DVD +"pack headers" internally before submission to the codec hardware if AT ALL POSSIBLE. The +reason is that mpeg data may need to be processed immediately but there may be no additional +MPEG data forthcoming to fill up the PES packet OR DVD "pack" in a timely fashion. This is +particularly true of MPEG dialects that utilize "repeat field signally" to reuse the last +decoded MPEG video field. + +*/ + +///////////////////////////////////////////////////////////////////////// +// The major data type GUIDs that define the data packet encapsulation // +///////////////////////////////////////////////////////////////////////// + +// STATIC_KSDATAFORMAT_TYPE_STANDARD_ELEMENTARY_STREAM +#define STATIC_KSDATAFORMAT_TYPE_STANDARD_ELEMENTARY_STREAM \ + 0x36523b11L, 0x8ee5, 0x11d1, 0x8c, 0xa3, 0x00, 0x60, 0xb0, 0x57, 0x66, 0x4a +DEFINE_GUIDSTRUCT("36523B11-8EE5-11d1-8CA3-0060B057664A", KSDATAFORMAT_TYPE_STANDARD_ELEMENTARY_STREAM ); +#define KSDATAFORMAT_TYPE_STANDARD_ELEMENTARY_STREAM DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_STANDARD_ELEMENTARY_STREAM) + +// STATIC_KSDATAFORMAT_TYPE_STANDARD_PES_PACKET +#define STATIC_KSDATAFORMAT_TYPE_STANDARD_PES_PACKET \ + 0x36523b12L, 0x8ee5, 0x11d1, 0x8c, 0xa3, 0x00, 0x60, 0xb0, 0x57, 0x66, 0x4a +DEFINE_GUIDSTRUCT("36523B12-8EE5-11d1-8CA3-0060B057664A", KSDATAFORMAT_TYPE_STANDARD_PES_PACKET ); +#define KSDATAFORMAT_TYPE_STANDARD_PES_PACKET DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_STANDARD_PES_PACKET) + +// STATIC_KSDATAFORMAT_TYPE_STANDARD_PACK_HEADER +#define STATIC_KSDATAFORMAT_TYPE_STANDARD_PACK_HEADER \ + 0x36523b13L, 0x8ee5, 0x11d1, 0x8c, 0xa3, 0x00, 0x60, 0xb0, 0x57, 0x66, 0x4a +DEFINE_GUIDSTRUCT("36523B13-8EE5-11d1-8CA3-0060B057664A", KSDATAFORMAT_TYPE_STANDARD_PACK_HEADER ); +#define KSDATAFORMAT_TYPE_STANDARD_PACK_HEADER DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_STANDARD_PACK_HEADER) + +/////////////////////////////////////////////////////////////////////////////// +// The minor data subtype GUIDs that define the exact class of the data type.// +/////////////////////////////////////////////////////////////////////////////// + +// STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_VIDEO +#define STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_VIDEO \ + 0x36523b21L, 0x8ee5, 0x11d1, 0x8c, 0xa3, 0x00, 0x60, 0xb0, 0x57, 0x66, 0x4a +DEFINE_GUIDSTRUCT("36523B21-8EE5-11d1-8CA3-0060B057664A", KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_VIDEO ); +#define KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_VIDEO DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_VIDEO) + +// STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_AUDIO +#define STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_AUDIO \ + 0x36523b22L, 0x8ee5, 0x11d1, 0x8c, 0xa3, 0x00, 0x60, 0xb0, 0x57, 0x66, 0x4a +DEFINE_GUIDSTRUCT("36523B22-8EE5-11d1-8CA3-0060B057664A", KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_AUDIO ); +#define KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_AUDIO) + +// STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_VIDEO +#define STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_VIDEO \ + 0x36523b23L, 0x8ee5, 0x11d1, 0x8c, 0xa3, 0x00, 0x60, 0xb0, 0x57, 0x66, 0x4a +DEFINE_GUIDSTRUCT("36523B23-8EE5-11d1-8CA3-0060B057664A", KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_VIDEO ); +#define KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_VIDEO DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_VIDEO) + +// STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_AUDIO +#define STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_AUDIO \ + 0x36523b24L, 0x8ee5, 0x11d1, 0x8c, 0xa3, 0x00, 0x60, 0xb0, 0x57, 0x66, 0x4a +DEFINE_GUIDSTRUCT("36523B24-8EE5-11d1-8CA3-0060B057664A", KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_AUDIO ); +#define KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_AUDIO) + +// STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_AC3_AUDIO +#define STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_AC3_AUDIO \ + 0x36523b25L, 0x8ee5, 0x11d1, 0x8c, 0xa3, 0x00, 0x60, 0xb0, 0x57, 0x66, 0x4a +DEFINE_GUIDSTRUCT("36523B25-8EE5-11d1-8CA3-0060B057664A", KSDATAFORMAT_SUBTYPE_STANDARD_AC3_AUDIO ); +#define KSDATAFORMAT_SUBTYPE_STANDARD_AC3_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_STANDARD_AC3_AUDIO) + +/////////////////////////////////////////////////////////////////////////////// +// The low-level specifier GUIDs that define the flavor of the data subtype. // +// Some SUBTYPES, notably MPEG2_VIDEO, MPEG2_AUDIO have different dialects. // +// These specifiers are intended to be accompanied by a specifier structure. // +/////////////////////////////////////////////////////////////////////////////// + +// STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_VIDEO +#define STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_VIDEO \ + 0x36523b31L, 0x8ee5, 0x11d1, 0x8c, 0xa3, 0x00, 0x60, 0xb0, 0x57, 0x66, 0x4a +DEFINE_GUIDSTRUCT("36523B31-8EE5-11d1-8CA3-0060B057664A", KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_VIDEO ); +#define KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_VIDEO DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_VIDEO) + +// STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_AUDIO +#define STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_AUDIO \ + 0x36523b32L, 0x8ee5, 0x11d1, 0x8c, 0xa3, 0x00, 0x60, 0xb0, 0x57, 0x66, 0x4a +DEFINE_GUIDSTRUCT("36523B32-8EE5-11d1-8CA3-0060B057664A", KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_AUDIO ); +#define KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_AUDIO) + +// STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_VIDEO Associated with KS_MPEGVIDEOINFO2 defined later +#define STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_VIDEO \ + 0x36523b33L, 0x8ee5, 0x11d1, 0x8c, 0xa3, 0x00, 0x60, 0xb0, 0x57, 0x66, 0x4a +DEFINE_GUIDSTRUCT("36523B33-8EE5-11d1-8CA3-0060B057664A", KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_VIDEO ); +#define KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_VIDEO DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_VIDEO) + +// STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_AUDIO Associated with KS_MPEGAUDIOINFO defined later +#define STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_AUDIO \ + 0x36523b34L, 0x8ee5, 0x11d1, 0x8c, 0xa3, 0x00, 0x60, 0xb0, 0x57, 0x66, 0x4a +DEFINE_GUIDSTRUCT("36523B34-8EE5-11d1-8CA3-0060B057664A", KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_AUDIO ); +#define KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_AUDIO) + +// STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_AC3_AUDIO +#define STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_AC3_AUDIO \ + 0x36523b35L, 0x8ee5, 0x11d1, 0x8c, 0xa3, 0x00, 0x60, 0xb0, 0x57, 0x66, 0x4a +DEFINE_GUIDSTRUCT("36523B35-8EE5-11d1-8CA3-0060B057664A", KSDATAFORMAT_SPECIFIER_DIALECT_AC3_AUDIO ); +#define KSDATAFORMAT_SPECIFIER_DIALECT_AC3_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_DIALECT_AC3_AUDIO) + +//==================================================================================================== +//==================================================================================================== +// *** COMPATIBILITY WARNING *** +// The *following* older DSS, MPEG, DVD & AC-3 GUID definitions are retained for backward compability. +// These MPEG GUIDs should also be supported for compatibilty, but the above newer modes are still required. +//==================================================================================================== +//==================================================================================================== + +// +// DSS definitions +// + +#define STATIC_KSDATAFORMAT_SUBTYPE_DSS_VIDEO\ + 0xa0af4f81L, 0xe163, 0x11d0, 0xba, 0xd9, 0x00, 0x60, 0x97, 0x44, 0x11, 0x1a +DEFINE_GUIDSTRUCT("a0af4f81-e163-11d0-bad9-00609744111a", KSDATAFORMAT_SUBTYPE_DSS_VIDEO); +#define KSDATAFORMAT_SUBTYPE_DSS_VIDEO DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_DSS_VIDEO) + +#define STATIC_KSDATAFORMAT_SUBTYPE_DSS_AUDIO\ + 0xa0af4f82L, 0xe163, 0x11d0, 0xba, 0xd9, 0x00, 0x60, 0x97, 0x44, 0x11, 0x1a +DEFINE_GUIDSTRUCT("a0af4f82-e163-11d0-bad9-00609744111a", KSDATAFORMAT_SUBTYPE_DSS_AUDIO); +#define KSDATAFORMAT_SUBTYPE_DSS_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_DSS_AUDIO) + +// +// End of obsolete MPEG definitions. +// + +// +// mpeg 1 definitions +// +#define STATIC_KSDATAFORMAT_SUBTYPE_MPEG1Packet\ + 0xe436eb80, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70 +DEFINE_GUIDSTRUCT("e436eb80-524f-11ce-9F53-0020af0ba770", KSDATAFORMAT_SUBTYPE_MPEG1Packet); +#define KSDATAFORMAT_SUBTYPE_MPEG1Packet DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_MPEG1Packet) + +#define STATIC_KSDATAFORMAT_SUBTYPE_MPEG1Payload\ + 0xe436eb81, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70 +DEFINE_GUIDSTRUCT("e436eb81-524f-11ce-9F53-0020af0ba770", KSDATAFORMAT_SUBTYPE_MPEG1Payload); +#define KSDATAFORMAT_SUBTYPE_MPEG1Payload DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_MPEG1Payload) + +// MEDIASUBTYPE_MPEG1Video +#define STATIC_KSDATAFORMAT_SUBTYPE_MPEG1Video\ + 0xe436eb86, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70 +DEFINE_GUIDSTRUCT("e436eb86-524f-11ce-9f53-0020af0ba770", KSDATAFORMAT_SUBTYPE_MPEG1Video); +#define KSDATAFORMAT_SUBTYPE_MPEG1Video DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_MPEG1Video) + +//FORMAT_MPEGVideo +#define STATIC_KSDATAFORMAT_SPECIFIER_MPEG1_VIDEO\ + 0x05589f82L, 0xc356, 0x11ce, 0xbf, 0x01, 0x00, 0xaa, 0x00, 0x55, 0x59, 0x5a +DEFINE_GUIDSTRUCT("05589f82-c356-11ce-bf01-00aa0055595a", KSDATAFORMAT_SPECIFIER_MPEG1_VIDEO); +#define KSDATAFORMAT_SPECIFIER_MPEG1_VIDEO DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_MPEG1_VIDEO) + +// +// mpeg 2 definitions +// +#define STATIC_KSDATAFORMAT_TYPE_MPEG2_PES\ + 0xe06d8020L, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x5f, 0x6c, 0xbb, 0xea +DEFINE_GUIDSTRUCT("e06d8020-db46-11cf-b4d1-00805f6cbbea", KSDATAFORMAT_TYPE_MPEG2_PES); +#define KSDATAFORMAT_TYPE_MPEG2_PES DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_MPEG2_PES) + +#define STATIC_KSDATAFORMAT_TYPE_MPEG2_PROGRAM\ + 0xe06d8022L, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x5f, 0x6c, 0xbb, 0xea +DEFINE_GUIDSTRUCT("e06d8022-db46-11cf-b4d1-00805f6cbbea", KSDATAFORMAT_TYPE_MPEG2_PROGRAM); +#define KSDATAFORMAT_TYPE_MPEG2_PROGRAM DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_MPEG2_PROGRAM) + +#define STATIC_KSDATAFORMAT_TYPE_MPEG2_TRANSPORT\ + 0xe06d8023L, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x5f, 0x6c, 0xbb, 0xea +DEFINE_GUIDSTRUCT("e06d8023-db46-11cf-b4d1-00805f6cbbea", KSDATAFORMAT_TYPE_MPEG2_TRANSPORT); +#define KSDATAFORMAT_TYPE_MPEG2_TRANSPORT DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_MPEG2_TRANSPORT) + +#define STATIC_KSDATAFORMAT_SUBTYPE_MPEG2_VIDEO\ + 0xe06d8026L, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x5f, 0x6c, 0xbb, 0xea +DEFINE_GUIDSTRUCT("e06d8026-db46-11cf-b4d1-00805f6cbbea", KSDATAFORMAT_SUBTYPE_MPEG2_VIDEO); +#define KSDATAFORMAT_SUBTYPE_MPEG2_VIDEO DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_MPEG2_VIDEO) + +// use MPEGVIDEOINFO2 (defined below) with KSDATAFORMAT_SPECIFIER_MPEG2_VIDEO +#define STATIC_KSDATAFORMAT_SPECIFIER_MPEG2_VIDEO\ + 0xe06d80e3L, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x5f, 0x6c, 0xbb, 0xea +DEFINE_GUIDSTRUCT("e06d80e3-db46-11cf-b4d1-00805f6cbbea", KSDATAFORMAT_SPECIFIER_MPEG2_VIDEO); +#define KSDATAFORMAT_SPECIFIER_MPEG2_VIDEO DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_MPEG2_VIDEO) + + +// +// Mpeg2 video properties +// + + +#define STATIC_KSPROPSETID_Mpeg2Vid\ + 0xC8E11B60L, 0x0CC9, 0x11D0, 0xBD, 0x69, 0x00, 0x35, 0x05, 0xC1, 0x03, 0xA9 +DEFINE_GUIDSTRUCT("C8E11B60-0CC9-11D0-BD69-003505C103A9", KSPROPSETID_Mpeg2Vid); +#define KSPROPSETID_Mpeg2Vid DEFINE_GUIDNAMED( KSPROPSETID_Mpeg2Vid ) + + +typedef enum { + KSPROPERTY_MPEG2VID_MODES, // available output modes of decoder + KSPROPERTY_MPEG2VID_CUR_MODE, // current mode of the decoder + KSPROPERTY_MPEG2VID_4_3_RECT, // output coordinates for 4:3 source + KSPROPERTY_MPEG2VID_16_9_RECT, // output coordinates for 16:9 source + KSPROPERTY_MPEG2VID_16_9_PANSCAN, // pan and scan vectors +} KSPROPERTY_MPEG2VID; + +// +// bit field definitions for MPEG2 VIDEO mode +// + +#define KSMPEGVIDMODE_PANSCAN 0x0001 +#define KSMPEGVIDMODE_LTRBOX 0x0002 +#define KSMPEGVIDMODE_SCALE 0x0004 + +// +// rectangle definitions for the 4/3 and 16/9 cropping properties of +// the MPEG2Video decoder +// + +typedef struct _KSMPEGVID_RECT { + ULONG StartX; + ULONG StartY; + ULONG EndX; + ULONG EndY; +} KSMPEGVID_RECT, *PKSMPEGVID_RECT; + +// +// Params for pan / scan +// + + +// +// MPEG2 Audio definition +// + +#define STATIC_KSDATAFORMAT_SUBTYPE_MPEG2_AUDIO\ + 0xe06d802bL, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x5f, 0x6c, 0xbb, 0xea +DEFINE_GUIDSTRUCT("e06d802b-db46-11cf-b4d1-00805f6cbbea", KSDATAFORMAT_SUBTYPE_MPEG2_AUDIO); +#define KSDATAFORMAT_SUBTYPE_MPEG2_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_MPEG2_AUDIO) + +#define STATIC_KSDATAFORMAT_SPECIFIER_MPEG2_AUDIO\ + 0xe06d80e5L, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x5f, 0x6c, 0xbb, 0xea +DEFINE_GUIDSTRUCT("e06d80e5-db46-11cf-b4d1-00805f6cbbea", KSDATAFORMAT_SPECIFIER_MPEG2_AUDIO); +#define KSDATAFORMAT_SPECIFIER_MPEG2_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_MPEG2_AUDIO) + +// +// DVD LPCM Audio definition +// + +#define STATIC_KSDATAFORMAT_SUBTYPE_LPCM_AUDIO\ + 0xe06d8032L, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x5f, 0x6c, 0xbb, 0xea +DEFINE_GUIDSTRUCT("e06d8032-db46-11cf-b4d1-00805f6cbbea", KSDATAFORMAT_SUBTYPE_LPCM_AUDIO); +#define KSDATAFORMAT_SUBTYPE_LPCM_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_LPCM_AUDIO) + +#define STATIC_KSDATAFORMAT_SPECIFIER_LPCM_AUDIO\ + 0xe06d80e6L, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x5f, 0x6c, 0xbb, 0xea +DEFINE_GUIDSTRUCT("e06d80e6-db46-11cf-b4d1-00805f6cbbea", KSDATAFORMAT_SPECIFIER_LPCM_AUDIO); +#define KSDATAFORMAT_SPECIFIER_LPCM_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_LPCM_AUDIO) + +// +// AC-3 definition +// + +#define STATIC_KSDATAFORMAT_SUBTYPE_AC3_AUDIO\ + 0xe06d802cL, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x5f, 0x6c, 0xbb, 0xea +DEFINE_GUIDSTRUCT("e06d802c-db46-11cf-b4d1-00805f6cbbea", KSDATAFORMAT_SUBTYPE_AC3_AUDIO); +#define KSDATAFORMAT_SUBTYPE_AC3_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_AC3_AUDIO) + +#define STATIC_KSDATAFORMAT_SPECIFIER_AC3_AUDIO\ + 0xe06d80e4L, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x5f, 0x6c, 0xbb, 0xea +DEFINE_GUIDSTRUCT("e06d80e4-db46-11cf-b4d1-00805f6cbbea", KSDATAFORMAT_SPECIFIER_AC3_AUDIO); +#define KSDATAFORMAT_SPECIFIER_AC3_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_AC3_AUDIO) + +#define STATIC_KSPROPSETID_AC3\ + 0xBFABE720L, 0x6E1F, 0x11D0, 0xBC, 0xF2, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00 +DEFINE_GUIDSTRUCT("BFABE720-6E1F-11D0-BCF2-444553540000", KSPROPSETID_AC3); +#define KSPROPSETID_AC3 DEFINE_GUIDNAMED(KSPROPSETID_AC3) + +typedef enum { + KSPROPERTY_AC3_ERROR_CONCEALMENT = 1, + KSPROPERTY_AC3_ALTERNATE_AUDIO, + KSPROPERTY_AC3_DOWNMIX, + KSPROPERTY_AC3_BIT_STREAM_MODE, + KSPROPERTY_AC3_DIALOGUE_LEVEL, + KSPROPERTY_AC3_LANGUAGE_CODE, + KSPROPERTY_AC3_ROOM_TYPE +} KSPROPERTY_AC3; + +typedef struct { + BOOL fRepeatPreviousBlock; + BOOL fErrorInCurrentBlock; +} KSAC3_ERROR_CONCEALMENT, *PKSAC3_ERROR_CONCEALMENT; + +typedef struct { + BOOL fStereo; + ULONG DualMode; +} KSAC3_ALTERNATE_AUDIO, *PKSAC3_ALTERNATE_AUDIO; + +#define KSAC3_ALTERNATE_AUDIO_1 1 +#define KSAC3_ALTERNATE_AUDIO_2 2 +#define KSAC3_ALTERNATE_AUDIO_BOTH 3 + +typedef struct { + BOOL fDownMix; + BOOL fDolbySurround; +} KSAC3_DOWNMIX, *PKSAC3_DOWNMIX; + +typedef struct { + LONG BitStreamMode; +} KSAC3_BIT_STREAM_MODE, *PKSAC3_BIT_STREAM_MODE; + +#define KSAC3_SERVICE_MAIN_AUDIO 0 +#define KSAC3_SERVICE_NO_DIALOG 1 +#define KSAC3_SERVICE_VISUALLY_IMPAIRED 2 +#define KSAC3_SERVICE_HEARING_IMPAIRED 3 +#define KSAC3_SERVICE_DIALOG_ONLY 4 +#define KSAC3_SERVICE_COMMENTARY 5 +#define KSAC3_SERVICE_EMERGENCY_FLASH 6 +#define KSAC3_SERVICE_VOICE_OVER 7 + +typedef struct { + ULONG DialogueLevel; +} KSAC3_DIALOGUE_LEVEL, *PKSAC3_DIALOGUE_LEVEL; + +typedef struct { + BOOL fLargeRoom; +} KSAC3_ROOM_TYPE, *PKSAC3_ROOM_TYPE; + + +// +// DTS and SDDS definitions (media subtype GUIDs) +// +#define STATIC_KSDATAFORMAT_SUBTYPE_DTS_AUDIO\ + 0xe06d8033L, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x5f, 0x6c, 0xbb, 0xea +DEFINE_GUIDSTRUCT("e06d8033-db46-11cf-b4d1-00805f6cbbea", KSDATAFORMAT_SUBTYPE_DTS_AUDIO); +#define KSDATAFORMAT_SUBTYPE_DTS_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_DTS_AUDIO) + +#define STATIC_KSDATAFORMAT_SUBTYPE_SDDS_AUDIO\ + 0xe06d8034L, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x5f, 0x6c, 0xbb, 0xea +DEFINE_GUIDSTRUCT("e06d8034-db46-11cf-b4d1-00805f6cbbea", KSDATAFORMAT_SUBTYPE_SDDS_AUDIO); +#define KSDATAFORMAT_SUBTYPE_SDDS_AUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_SDDS_AUDIO) + + +// +// audio decoder output properties +// + +#define STATIC_KSPROPSETID_AudioDecoderOut\ + 0x6ca6e020L, 0x43bd, 0x11d0, 0xbd, 0x6a, 0x00, 0x35, 0x05, 0xc1, 0x03, 0xa9 +DEFINE_GUIDSTRUCT("6ca6e020-43bd-11d0-bd6a-003505c103a9", KSPROPSETID_AudioDecoderOut); +#define KSPROPSETID_AudioDecoderOut DEFINE_GUIDNAMED(KSPROPSETID_AudioDecoderOut) + +typedef enum { + KSPROPERTY_AUDDECOUT_MODES, // available output modes of decoder + KSPROPERTY_AUDDECOUT_CUR_MODE, // current mode of the decoder +} KSPROPERTY_AUDDECOUT; + +#define KSAUDDECOUTMODE_STEREO_ANALOG 0x0001 +#define KSAUDDECOUTMODE_PCM_51 0x0002 +#define KSAUDDECOUTMODE_SPDIFF 0x0004 + + + +// +// subpicture definition +// + +#define STATIC_KSDATAFORMAT_SUBTYPE_SUBPICTURE\ + 0xe06d802dL, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x5f, 0x6c, 0xbb, 0xea +DEFINE_GUIDSTRUCT("e06d802d-db46-11cf-b4d1-00805f6cbbea", KSDATAFORMAT_SUBTYPE_SUBPICTURE); +#define KSDATAFORMAT_SUBTYPE_SUBPICTURE DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_SUBPICTURE) + + +#define STATIC_KSPROPSETID_DvdSubPic\ + 0xac390460L, 0x43af, 0x11d0, 0xbd, 0x6a, 0x00, 0x35, 0x05, 0xc1, 0x03, 0xa9 +DEFINE_GUIDSTRUCT("ac390460-43af-11d0-bd6a-003505c103a9", KSPROPSETID_DvdSubPic); +#define KSPROPSETID_DvdSubPic DEFINE_GUIDNAMED(KSPROPSETID_DvdSubPic) + +typedef enum { + KSPROPERTY_DVDSUBPIC_PALETTE, + KSPROPERTY_DVDSUBPIC_HLI, + KSPROPERTY_DVDSUBPIC_COMPOSIT_ON, // TRUE for subpicture is displayed +} KSPROPERTY_DVDSUBPIC; + +typedef struct _KS_DVD_YCrCb { + UCHAR Reserved; + UCHAR Y; + UCHAR Cr; + UCHAR Cb; +} KS_DVD_YCrCb, *PKS_DVD_YCrCb; + +/* The KS_DVD_YUV structure is now superseded by KS_DVD_YCrCb above and is + here for backward compatibility only */ + +typedef struct _KS_DVD_YUV { + UCHAR Reserved; + UCHAR Y; + UCHAR V; + UCHAR U; +} KS_DVD_YUV, *PKS_DVD_YUV; + +typedef struct _KSPROPERTY_SPPAL { + KS_DVD_YUV sppal[16]; +} KSPROPERTY_SPPAL, *PKSPROPERTY_SPPAL; + +typedef struct _KS_COLCON { + UCHAR emph1col:4; + UCHAR emph2col:4; + UCHAR backcol:4; + UCHAR patcol:4; + UCHAR emph1con:4; + UCHAR emph2con:4; + UCHAR backcon:4; + UCHAR patcon:4; + +} KS_COLCON, *PKS_COLCON; + +typedef struct _KSPROPERTY_SPHLI { + USHORT HLISS; + USHORT Reserved; + ULONG StartPTM; // start presentation time in x/90000 + ULONG EndPTM; // end PTM in x/90000 + USHORT StartX; + USHORT StartY; + USHORT StopX; + USHORT StopY; + KS_COLCON ColCon; // color contrast description (4 bytes as given in HLI) +} KSPROPERTY_SPHLI, *PKSPROPERTY_SPHLI; + +typedef BOOL KSPROPERTY_COMPOSIT_ON, *PKSPROPERTY_COMPOSIT_ON; + +#define STATIC_KSPROPSETID_CopyProt \ + 0x0E8A0A40L, 0x6AEF, 0x11D0, 0x9E, 0xD0, 0x00, 0xA0, 0x24, 0xCA, 0x19, 0xB3 +DEFINE_GUIDSTRUCT("0E8A0A40-6AEF-11D0-9ED0-00A024CA19B3", KSPROPSETID_CopyProt); +#define KSPROPSETID_CopyProt DEFINE_GUIDNAMED(KSPROPSETID_CopyProt) + +typedef enum { + + KSPROPERTY_DVDCOPY_CHLG_KEY = 0x01, + KSPROPERTY_DVDCOPY_DVD_KEY1, + KSPROPERTY_DVDCOPY_DEC_KEY2, + KSPROPERTY_DVDCOPY_TITLE_KEY, + KSPROPERTY_COPY_MACROVISION, + KSPROPERTY_DVDCOPY_REGION, + KSPROPERTY_DVDCOPY_SET_COPY_STATE, + KSPROPERTY_DVDCOPY_DISC_KEY = 0x80 + +} KSPROPERTY_COPYPROT; + +typedef struct _KS_DVDCOPY_CHLGKEY { + BYTE ChlgKey[10]; + BYTE Reserved[2]; +} KS_DVDCOPY_CHLGKEY, *PKS_DVDCOPY_CHLGKEY; + +typedef struct _KS_DVDCOPY_BUSKEY { + BYTE BusKey[5]; + BYTE Reserved[1]; +} KS_DVDCOPY_BUSKEY, *PKS_DVDCOPY_BUSKEY; + + +typedef struct _KS_DVDCOPY_DISCKEY { + BYTE DiscKey[2048]; +} KS_DVDCOPY_DISCKEY, *PKS_DVDCOPY_DISCKEY; + +typedef struct _KS_DVDCOPY_REGION { + UCHAR Reserved; + UCHAR RegionData; + UCHAR Reserved2[2]; +} KS_DVDCOPY_REGION, *PKS_DVDCOPY_REGION; + +typedef struct _KS_DVDCOPY_TITLEKEY { + ULONG KeyFlags; + ULONG ReservedNT[2]; + UCHAR TitleKey[6]; + UCHAR Reserved[2]; +} KS_DVDCOPY_TITLEKEY, *PKS_DVDCOPY_TITLEKEY; + +typedef struct _KS_COPY_MACROVISION { + ULONG MACROVISIONLevel; +} KS_COPY_MACROVISION, *PKS_COPY_MACROVISION; + +typedef struct _KS_DVDCOPY_SET_COPY_STATE { + ULONG DVDCopyState; +} KS_DVDCOPY_SET_COPY_STATE, *PKS_DVDCOPY_SET_COPY_STATE; + +typedef enum { + KS_DVDCOPYSTATE_INITIALIZE, // indicates we are starting a full + // copy protection sequence. + KS_DVDCOPYSTATE_INITIALIZE_TITLE, // indicates we are starting a title + // key copy protection sequence + KS_DVDCOPYSTATE_AUTHENTICATION_NOT_REQUIRED, + KS_DVDCOPYSTATE_AUTHENTICATION_REQUIRED, + KS_DVDCOPYSTATE_DONE, +} KS_DVDCOPYSTATE; + +typedef enum { + KS_MACROVISION_DISABLED, + KS_MACROVISION_LEVEL1, + KS_MACROVISION_LEVEL2, + KS_MACROVISION_LEVEL3 +} KS_COPY_MACROVISION_LEVEL, *PKS_COPY_MACROVISION_LEVEL; + +// +// CGMS Copy Protection Flags +// + +#define KS_DVD_CGMS_RESERVED_MASK 0x00000078 + +#define KS_DVD_CGMS_COPY_PROTECT_MASK 0x00000018 +#define KS_DVD_CGMS_COPY_PERMITTED 0x00000000 +#define KS_DVD_CGMS_COPY_ONCE 0x00000010 +#define KS_DVD_CGMS_NO_COPY 0x00000018 + +#define KS_DVD_COPYRIGHT_MASK 0x00000040 +#define KS_DVD_NOT_COPYRIGHTED 0x00000000 +#define KS_DVD_COPYRIGHTED 0x00000040 + +#define KS_DVD_SECTOR_PROTECT_MASK 0x00000020 +#define KS_DVD_SECTOR_NOT_PROTECTED 0x00000000 +#define KS_DVD_SECTOR_PROTECTED 0x00000020 + + +//=========================================================================== +// The following MUST match the structures in WinGDI.h and AMVideo.h +//=========================================================================== + +#define STATIC_KSCATEGORY_TVTUNER \ + 0xa799a800L, 0xa46d, 0x11d0, 0xa1, 0x8c, 0x00, 0xa0, 0x24, 0x01, 0xdc, 0xd4 +DEFINE_GUIDSTRUCT("a799a800-a46d-11d0-a18c-00a02401dcd4", KSCATEGORY_TVTUNER); +#define KSCATEGORY_TVTUNER DEFINE_GUIDNAMED(KSCATEGORY_TVTUNER) + +#define STATIC_KSCATEGORY_CROSSBAR \ + 0xa799a801L, 0xa46d, 0x11d0, 0xa1, 0x8c, 0x00, 0xa0, 0x24, 0x01, 0xdc, 0xd4 +DEFINE_GUIDSTRUCT("a799a801-a46d-11d0-a18c-00a02401dcd4", KSCATEGORY_CROSSBAR); +#define KSCATEGORY_CROSSBAR DEFINE_GUIDNAMED(KSCATEGORY_CROSSBAR) + +#define STATIC_KSCATEGORY_TVAUDIO \ + 0xa799a802L, 0xa46d, 0x11d0, 0xa1, 0x8c, 0x00, 0xa0, 0x24, 0x01, 0xdc, 0xd4 +DEFINE_GUIDSTRUCT("a799a802-a46d-11d0-a18c-00a02401dcd4", KSCATEGORY_TVAUDIO); +#define KSCATEGORY_TVAUDIO DEFINE_GUIDNAMED(KSCATEGORY_TVAUDIO) + +#define STATIC_KSCATEGORY_VPMUX \ + 0xa799a803L, 0xa46d, 0x11d0, 0xa1, 0x8c, 0x00, 0xa0, 0x24, 0x01, 0xdc, 0xd4 +DEFINE_GUIDSTRUCT("a799a803-a46d-11d0-a18c-00a02401dcd4", KSCATEGORY_VPMUX); +#define KSCATEGORY_VPMUX DEFINE_GUIDNAMED(KSCATEGORY_VPMUX) + +#define STATIC_KSCATEGORY_VBICODEC \ + 0x07dad660L, 0x22f1, 0x11d1, 0xa9, 0xf4, 0x00, 0xc0, 0x4f, 0xbb, 0xde, 0x8f +DEFINE_GUIDSTRUCT("07dad660-22f1-11d1-a9f4-00c04fbbde8f", KSCATEGORY_VBICODEC); +#define KSCATEGORY_VBICODEC DEFINE_GUIDNAMED(KSCATEGORY_VBICODEC) + +// SUBTYPE_VPVideo +#define STATIC_KSDATAFORMAT_SUBTYPE_VPVideo\ + 0x5a9b6a40L, 0x1a22, 0x11d1, 0xba, 0xd9, 0x0, 0x60, 0x97, 0x44, 0x11, 0x1a +DEFINE_GUIDSTRUCT("5a9b6a40-1a22-11d1-bad9-00609744111a", KSDATAFORMAT_SUBTYPE_VPVideo); +#define KSDATAFORMAT_SUBTYPE_VPVideo DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_VPVideo) + +// SUBTYPE_VPVBI +#define STATIC_KSDATAFORMAT_SUBTYPE_VPVBI\ + 0x5a9b6a41L, 0x1a22, 0x11d1, 0xba, 0xd9, 0x0, 0x60, 0x97, 0x44, 0x11, 0x1a +DEFINE_GUIDSTRUCT("5a9b6a41-1a22-11d1-bad9-00609744111a", KSDATAFORMAT_SUBTYPE_VPVBI); +#define KSDATAFORMAT_SUBTYPE_VPVBI DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_VPVBI) + + +// FORMAT_VideoInfo +#define STATIC_KSDATAFORMAT_SPECIFIER_VIDEOINFO\ + 0x05589f80L, 0xc356, 0x11ce, 0xbf, 0x01, 0x00, 0xaa, 0x00, 0x55, 0x59, 0x5a +DEFINE_GUIDSTRUCT("05589f80-c356-11ce-bf01-00aa0055595a", KSDATAFORMAT_SPECIFIER_VIDEOINFO); +#define KSDATAFORMAT_SPECIFIER_VIDEOINFO DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_VIDEOINFO) + +// FORMAT_VideoInfo2 +#define STATIC_KSDATAFORMAT_SPECIFIER_VIDEOINFO2\ + 0xf72a76A0L, 0xeb0a, 0x11d0, 0xac, 0xe4, 0x00, 0x00, 0xc0, 0xcc, 0x16, 0xba +DEFINE_GUIDSTRUCT("f72a76A0-eb0a-11d0-ace4-0000c0cc16ba", KSDATAFORMAT_SPECIFIER_VIDEOINFO2); +#define KSDATAFORMAT_SPECIFIER_VIDEOINFO2 DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_VIDEOINFO2) + +// MEDIATYPE_AnalogVideo +#define STATIC_KSDATAFORMAT_TYPE_ANALOGVIDEO\ + 0x0482dde1L, 0x7817, 0x11cf, 0x8a, 0x03, 0x00, 0xaa, 0x00, 0x6e, 0xcb, 0x65 +DEFINE_GUIDSTRUCT("0482dde1-7817-11cf-8a03-00aa006ecb65", KSDATAFORMAT_TYPE_ANALOGVIDEO); +#define KSDATAFORMAT_TYPE_ANALOGVIDEO DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_ANALOGVIDEO) + +// FORMAT_AnalogVideo +#define STATIC_KSDATAFORMAT_SPECIFIER_ANALOGVIDEO\ + 0x0482dde0L, 0x7817, 0x11cf, 0x8a, 0x03, 0x00, 0xaa, 0x00, 0x6e, 0xcb, 0x65 +DEFINE_GUIDSTRUCT("0482dde0-7817-11cf-8a03-00aa006ecb65", KSDATAFORMAT_SPECIFIER_ANALOGVIDEO); +#define KSDATAFORMAT_SPECIFIER_ANALOGVIDEO DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_ANALOGVIDEO) + +// MEDIATYPE_AnalogAudio +#define STATIC_KSDATAFORMAT_TYPE_ANALOGAUDIO \ + 0x0482dee1L, 0x7817, 0x11cf, 0x8a, 0x03, 0x00, 0xaa, 0x00, 0x6e, 0xcb, 0x65 +DEFINE_GUIDSTRUCT("0482DEE1-7817-11cf-8a03-00aa006ecb65", KSDATAFORMAT_TYPE_ANALOGAUDIO); +#define KSDATAFORMAT_TYPE_ANALOGAUDIO DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_ANALOGAUDIO) + +// FORMAT_VBI +#define STATIC_KSDATAFORMAT_SPECIFIER_VBI\ + 0xf72a76e0L, 0xeb0a, 0x11d0, 0xac, 0xe4, 0x00, 0x00, 0xc0, 0xcc, 0x16, 0xba +DEFINE_GUIDSTRUCT("f72a76e0-eb0a-11d0-ace4-0000c0cc16ba", KSDATAFORMAT_SPECIFIER_VBI); +#define KSDATAFORMAT_SPECIFIER_VBI DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_VBI) + +// MEDIATYPE_VBI +#define STATIC_KSDATAFORMAT_TYPE_VBI\ + 0xf72a76e1L, 0xeb0a, 0x11d0, 0xac, 0xe4, 0x00, 0x00, 0xc0, 0xcc, 0x16, 0xba +DEFINE_GUIDSTRUCT("f72a76e1-eb0a-11d0-ace4-0000c0cc16ba", KSDATAFORMAT_TYPE_VBI); +#define KSDATAFORMAT_TYPE_VBI DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_VBI) + +// SUBTYPE_RAW8 +#define STATIC_KSDATAFORMAT_SUBTYPE_RAW8\ + 0xca20d9a0, 0x3e3e, 0x11d1, 0x9b, 0xf9, 0x0, 0xc0, 0x4f, 0xbb, 0xde, 0xbf +DEFINE_GUIDSTRUCT("ca20d9a0-3e3e-11d1-9bf9-00c04fbbdebf", KSDATAFORMAT_SUBTYPE_RAW8); +#define KSDATAFORMAT_SUBTYPE_RAW8 DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_RAW8) + +// MEDIASUBTYPE_CC +#define STATIC_KSDATAFORMAT_SUBTYPE_CC\ + 0x33214cc1, 0x11f, 0x11d2, 0xb4, 0xb1, 0x0, 0xa0, 0xd1, 0x2, 0xcf, 0xbe +DEFINE_GUIDSTRUCT("33214CC1-011F-11D2-B4B1-00A0D102CFBE", KSDATAFORMAT_SUBTYPE_CC); +#define KSDATAFORMAT_SUBTYPE_CC DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_CC) + +// MEDIASUBTYPE_NABTS +#define STATIC_KSDATAFORMAT_SUBTYPE_NABTS\ + 0xf72a76e2L, 0xeb0a, 0x11d0, 0xac, 0xe4, 0x00, 0x00, 0xc0, 0xcc, 0x16, 0xba +DEFINE_GUIDSTRUCT("f72a76e2-eb0a-11d0-ace4-0000c0cc16ba", KSDATAFORMAT_SUBTYPE_NABTS); +#define KSDATAFORMAT_SUBTYPE_NABTS DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_NABTS) + +// MEDIASUBTYPE_TELETEXT +#define STATIC_KSDATAFORMAT_SUBTYPE_TELETEXT\ + 0xf72a76e3L, 0xeb0a, 0x11d0, 0xac, 0xe4, 0x00, 0x00, 0xc0, 0xcc, 0x16, 0xba +DEFINE_GUIDSTRUCT("f72a76e3-eb0a-11d0-ace4-0000c0cc16ba", KSDATAFORMAT_SUBTYPE_TELETEXT); +#define KSDATAFORMAT_SUBTYPE_TELETEXT DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_TELETEXT) + + + +/* constants for the biCompression field */ +#define KS_BI_RGB 0L +#define KS_BI_RLE8 1L +#define KS_BI_RLE4 2L +#define KS_BI_BITFIELDS 3L + +typedef struct tagKS_RGBQUAD { // rgbq + BYTE rgbBlue; + BYTE rgbGreen; + BYTE rgbRed; + BYTE rgbReserved; +} KS_RGBQUAD, *PKS_RGBQUAD; + +/* constants for palettes */ +#define KS_iPALETTE_COLORS 256 // Maximum colours in palette +#define KS_iEGA_COLORS 16 // Number colours in EGA palette +#define KS_iMASK_COLORS 3 // Maximum three components +#define KS_iTRUECOLOR 16 // Minimum true colour device +#define KS_iRED 0 // Index position for RED mask +#define KS_iGREEN 1 // Index position for GREEN mask +#define KS_iBLUE 2 // Index position for BLUE mask +#define KS_iPALETTE 8 // Maximum colour depth using a palette +#define KS_iMAXBITS 8 // Maximum bits per colour component +#define KS_SIZE_EGA_PALETTE (KS_iEGA_COLORS * sizeof(KS_RGBQUAD)) +#define KS_SIZE_PALETTE (KS_iPALETTE_COLORS * sizeof(KS_RGBQUAD)) + +typedef struct tagKS_BITMAPINFOHEADER{ + DWORD biSize; + LONG biWidth; + LONG biHeight; + WORD biPlanes; + WORD biBitCount; + DWORD biCompression; + DWORD biSizeImage; + LONG biXPelsPerMeter; + LONG biYPelsPerMeter; + DWORD biClrUsed; + DWORD biClrImportant; +} KS_BITMAPINFOHEADER, *PKS_BITMAPINFOHEADER; + +// Used for true colour images that also have a palette + +typedef struct tag_KS_TRUECOLORINFO { + DWORD dwBitMasks[KS_iMASK_COLORS]; + KS_RGBQUAD bmiColors[KS_iPALETTE_COLORS]; +} KS_TRUECOLORINFO, *PKS_TRUECOLORINFO; + + +#define KS_WIDTHBYTES(bits) ((DWORD)(((bits)+31) & (~31)) / 8) +#define KS_DIBWIDTHBYTES(bi) (DWORD)KS_WIDTHBYTES((DWORD)(bi).biWidth * (DWORD)(bi).biBitCount) +#define KS__DIBSIZE(bi) (KS_DIBWIDTHBYTES(bi) * (DWORD)(bi).biHeight) +#define KS_DIBSIZE(bi) ((bi).biHeight < 0 ? (-1)*(KS__DIBSIZE(bi)) : KS__DIBSIZE(bi)) + +typedef LONGLONG REFERENCE_TIME; + +// 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 tagKS_VIDEOINFOHEADER { + + 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) + + KS_BITMAPINFOHEADER bmiHeader; + +} KS_VIDEOINFOHEADER, *PKS_VIDEOINFOHEADER; + +// !!! WARNING !!! +// DO NOT use the following structure unless you are sure that the BITMAPINFOHEADER +// has a normal biSize == sizeof(BITMAPINFOHEADER) ! +// !!! WARNING !!! + +typedef struct tagKS_VIDEOINFO { + + 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) + + KS_BITMAPINFOHEADER bmiHeader; + + union { + KS_RGBQUAD bmiColors[KS_iPALETTE_COLORS]; // Colour palette + DWORD dwBitMasks[KS_iMASK_COLORS]; // True colour masks + KS_TRUECOLORINFO TrueColorInfo; // Both of the above + }; + +} KS_VIDEOINFO, *PKS_VIDEOINFO; + + +#define KS_SIZE_MASKS (KS_iMASK_COLORS * sizeof(DWORD)) +#define KS_SIZE_PREHEADER (FIELD_OFFSET(KS_VIDEOINFOHEADER,bmiHeader)) + +// For normal size +// #define KS_SIZE_VIDEOHEADER (sizeof(KS_BITMAPINFOHEADER) + KS_SIZE_PREHEADER) +// !!! for abnormal biSizes +#define KS_SIZE_VIDEOHEADER(pbmi) ((pbmi)->bmiHeader.biSize + KS_SIZE_PREHEADER) + +// VBI +// Used for NABTS, CC, Intercast, WST +typedef struct tagKS_VBIINFOHEADER { + ULONG StartLine; // inclusive + ULONG EndLine; // inclusive + ULONG SamplingFrequency; // Hz. + ULONG MinLineStartTime; // microSec * 100 from HSync LE + ULONG MaxLineStartTime; // microSec * 100 from HSync LE + ULONG ActualLineStartTime; // microSec * 100 from HSync LE + ULONG ActualLineEndTime; // microSec * 100 from HSync LE + ULONG VideoStandard; // KS_AnalogVideoStandard* + ULONG SamplesPerLine; + ULONG StrideInBytes; // May be > SamplesPerLine + ULONG BufferSize; // Bytes +} KS_VBIINFOHEADER, *PKS_VBIINFOHEADER; + +// VBI Sampling Rates +#define KS_VBIDATARATE_NABTS (5727272L) +#define KS_VBIDATARATE_CC ( 503493L) // ~= 1/1.986125e-6 +#define KS_VBISAMPLINGRATE_4X_NABTS ((long)(4*KS_VBIDATARATE_NABTS)) +#define KS_VBISAMPLINGRATE_47X_NABTS ((long)(27000000)) +#define KS_VBISAMPLINGRATE_5X_NABTS ((long)(5*KS_VBIDATARATE_NABTS)) + +#define KS_47NABTS_SCALER (KS_VBISAMPLINGRATE_47X_NABTS/(double)KS_VBIDATARATE_NABTS) + +// 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 tagKS_AnalogVideoInfo { + 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) +} KS_ANALOGVIDEOINFO, *PKS_ANALOGVIDEOINFO; + +//=========================================================================== +// Data packet passed on Analog video stream channel change +//=========================================================================== + +#define KS_TVTUNER_CHANGE_BEGIN_TUNE 0x0001L // Starting a tuning operation +#define KS_TVTUNER_CHANGE_END_TUNE 0x0002L // Ending a tuning operation + +typedef struct tagKS_TVTUNER_CHANGE_INFO { + DWORD dwFlags; // KS_TVTUNER_CHANGE_* + DWORD dwCountryCode; + DWORD dwAnalogVideoStandard; // KS_AnalogVideoStandard + DWORD dwChannel; +} KS_TVTUNER_CHANGE_INFO, *PKS_TVTUNER_CHANGE_INFO; + +//=========================================================================== +// Video format blocks +//=========================================================================== + +typedef enum { + KS_MPEG2Level_Low, + KS_MPEG2Level_Main, + KS_MPEG2Level_High1440, + KS_MPEG2Level_High +} KS_MPEG2Level; + +typedef enum { + KS_MPEG2Profile_Simple, + KS_MPEG2Profile_Main, + KS_MPEG2Profile_SNRScalable, + KS_MPEG2Profile_SpatiallyScalable, + KS_MPEG2Profile_High +} KS_MPEG2Profile; + +#define KS_INTERLACE_IsInterlaced 0x00000001 // if 0, other interlace bits are irrelevent +#define KS_INTERLACE_1FieldPerSample 0x00000002 // else 2 fields per media sample +#define KS_INTERLACE_Field1First 0x00000004 // else Field 2 is first; top field in PAL is field 1, top field in NTSC is field 2? +#define KS_INTERLACE_UNUSED 0x00000008 // +#define KS_INTERLACE_FieldPatternMask 0x00000030 // use this mask with AMINTERLACE_FieldPat* +#define KS_INTERLACE_FieldPatField1Only 0x00000000 // Data never contains a Field2 +#define KS_INTERLACE_FieldPatField2Only 0x00000010 // Data never contains a Field1 +#define KS_INTERLACE_FieldPatBothRegular 0x00000020 // There will be a Field2 for every Field1 (required for Weave?) +#define KS_INTERLACE_FieldPatBothIrregular 0x00000030 // Random pattern of Field1s and Field2s +#define KS_INTERLACE_DisplayModeMask 0x000000c0 +#define KS_INTERLACE_DisplayModeBobOnly 0x00000000 +#define KS_INTERLACE_DisplayModeWeaveOnly 0x00000040 +#define KS_INTERLACE_DisplayModeBobOrWeave 0x00000080 + + + +#define KS_MPEG2_DoPanScan 0x00000001 //if set, the MPEG-2 video decoder should crop output image + // based on pan-scan vectors in picture_display_extension + // and change the picture aspect ratio accordingly. +#define KS_MPEG2_DVDLine21Field1 0x00000002 //if set, the MPEG-2 decoder must be able to produce an output + // pin for DVD style closed caption data found in GOP layer of field 1 +#define KS_MPEG2_DVDLine21Field2 0x00000004 //if set, the MPEG-2 decoder must be able to produce an output + // pin for DVD style closed caption data found in GOP layer of field 2 +#define KS_MPEG2_SourceIsLetterboxed 0x00000008 //if set, indicates that black bars have been encoded in the top + // and bottom of the video. +#define KS_MPEG2_FilmCameraMode 0x00000010 //if set, indicates "film mode" used for 625/50 content. If cleared, + // indicates that "camera mode" was used. +#define KS_MPEG2_LetterboxAnalogOut 0x00000020 //if set and this stream is sent to an analog output, it should + // be letterboxed. Streams sent to VGA should be letterboxed only by renderers. +#define KS_MPEG2_DSS_UserData 0x00000040 //if set, the MPEG-2 decoder must process DSS style user data +#define KS_MPEG2_DVB_UserData 0x00000080 //if set, the MPEG-2 decoder must process DVB style user data +#define KS_MPEG2_27MhzTimebase 0x00000100 //if set, the PTS,DTS timestamps advance at 27MHz rather than 90KHz + +typedef struct tagKS_VIDEOINFOHEADER2 { + RECT rcSource; + RECT rcTarget; + DWORD dwBitRate; + DWORD dwBitErrorRate; + REFERENCE_TIME AvgTimePerFrame; + DWORD dwInterlaceFlags; // use AMINTERLACE_* defines. Reject connection if undefined bits are not 0 + DWORD dwCopyProtectFlags; // use AMCOPYPROTECT_* defines. Reject connection if undefined bits are not 0 + DWORD dwPictAspectRatioX; // X dimension of picture aspect ratio, e.g. 16 for 16x9 display + DWORD dwPictAspectRatioY; // Y dimension of picture aspect ratio, e.g. 9 for 16x9 display + DWORD dwReserved1; // must be 0; reject connection otherwise + DWORD dwReserved2; // must be 0; reject connection otherwise + KS_BITMAPINFOHEADER bmiHeader; +} KS_VIDEOINFOHEADER2, *PKS_VIDEOINFOHEADER2; + +typedef struct tagKS_MPEG1VIDEOINFO { + KS_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 +} KS_MPEG1VIDEOINFO, *PKS_MPEG1VIDEOINFO; + +#define KS_MAX_SIZE_MPEG1_SEQUENCE_INFO 140 +#define KS_SIZE_MPEG1VIDEOINFO(pv) (FIELD_OFFSET(KS_MPEG1VIDEOINFO, bSequenceHeader[0]) + (pv)->cbSequenceHeader) +#define KS_MPEG1_SEQUENCE_INFO(pv) ((const BYTE *)(pv)->bSequenceHeader) + +typedef struct tagKS_MPEGVIDEOINFO2 { + KS_VIDEOINFOHEADER2 hdr; + DWORD dwStartTimeCode; // ?? not used for DVD ?? + DWORD cbSequenceHeader; // is 0 for DVD (no sequence header) + DWORD dwProfile; // use enum MPEG2Profile + DWORD dwLevel; // use enum MPEG2Level + DWORD dwFlags; // use AMMPEG2_* defines. Reject connection if undefined bits are not 0 + DWORD bSequenceHeader[1]; // DWORD instead of Byte for alignment purposes + // For MPEG-2, if a sequence_header is included, the sequence_extension + // should also be included +} KS_MPEGVIDEOINFO2, *PKS_MPEGVIDEOINFO2; + + +#define KS_SIZE_MPEGVIDEOINFO2(pv) (FIELD_OFFSET(KS_MPEGVIDEOINFO2, bSequenceHeader[0]) + (pv)->cbSequenceHeader) +#define KS_MPEG1_SEQUENCE_INFO(pv) ((const BYTE *)(pv)->bSequenceHeader) + +//=========================================================================== +// Audio format blocks +//=========================================================================== + +//if set, the PTS,DTS timestamps advance at 27MHz rather than 90KHz +#define KS_MPEGAUDIOINFO_27MhzTimebase 0x00000001 + +typedef struct tagKS_MPEAUDIOINFO { + DWORD dwFlags; // use KS_MPEGAUDIOINFO_* defines. Reject connection if undefined bits are not 0 + DWORD dwReserved1; // must be 0; reject connection otherwise + DWORD dwReserved2; // must be 0; reject connection otherwise + DWORD dwReserved3; // must be 0; reject connection otherwise +} KS_MPEGAUDIOINFO, *PKS_MPEGAUDIOINFO; + +//=========================================================================== +// Video DATAFORMATs +//=========================================================================== + +typedef struct tagKS_DATAFORMAT_VIDEOINFOHEADER { + KSDATAFORMAT DataFormat; + KS_VIDEOINFOHEADER VideoInfoHeader; +} KS_DATAFORMAT_VIDEOINFOHEADER, *PKS_DATAFORMAT_VIDEOINFOHEADER; + +typedef struct tagKS_DATAFORMAT_VIDEOINFOHEADER2 { + KSDATAFORMAT DataFormat; + KS_VIDEOINFOHEADER2 VideoInfoHeader2; +} KS_DATAFORMAT_VIDEOINFOHEADER2, *PKS_DATAFORMAT_VIDEOINFOHEADER2; + +typedef struct tagKS_DATAFORMAT_VIDEOINFO_PALETTE { + KSDATAFORMAT DataFormat; + KS_VIDEOINFO VideoInfo; +} KS_DATAFORMAT_VIDEOINFO_PALETTE, *PKS_DATAFORMAT_VIDEOINFO_PALETTE; + +typedef struct tagKS_DATAFORMAT_VBIINFOHEADER { + KSDATAFORMAT DataFormat; + KS_VBIINFOHEADER VBIInfoHeader; +} KS_DATAFORMAT_VBIINFOHEADER, *PKS_DATAFORMAT_VBIINFOHEADER; + +typedef struct _KS_VIDEO_STREAM_CONFIG_CAPS { + GUID guid; // will be MEDIATYPE_Video + ULONG VideoStandard; // logical OR of all AnalogVideoStandards + // supported + SIZE InputSize; // the inherent size of the incoming signal + // (every pixel unique) + SIZE MinCroppingSize; // smallest rcSrc cropping rect allowed + SIZE MaxCroppingSize; // largest rcSrc cropping rect allowed + int CropGranularityX; // granularity of cropping size + int CropGranularityY; + int CropAlignX; // alignment of cropping rect + int CropAlignY; + SIZE MinOutputSize; // smallest bitmap stream can produce + SIZE MaxOutputSize; // largest bitmap stream can produce + int OutputGranularityX; // granularity of output bitmap size + int OutputGranularityY; + int StretchTapsX; // 0, no stretch, 1 pix dup, 2 interp, ... + int StretchTapsY; // Describes quality of hardware scaler + int ShrinkTapsX; // + int ShrinkTapsY; // + LONGLONG MinFrameInterval; // 100 nS units + LONGLONG MaxFrameInterval; + LONG MinBitsPerSecond; + LONG MaxBitsPerSecond; +} KS_VIDEO_STREAM_CONFIG_CAPS, *PKS_VIDEO_STREAM_CONFIG_CAPS; + +//=========================================================================== +// Video DATARANGEs +//=========================================================================== + +typedef struct tagKS_DATARANGE_VIDEO { + KSDATARANGE DataRange; + BOOL bFixedSizeSamples; // all samples same size? + BOOL bTemporalCompression; // all I frames? + DWORD StreamDescriptionFlags; // KS_VIDEO_DESC_* + DWORD MemoryAllocationFlags; // KS_VIDEO_ALLOC_* + KS_VIDEO_STREAM_CONFIG_CAPS ConfigCaps; + KS_VIDEOINFOHEADER VideoInfoHeader; // default format +} KS_DATARANGE_VIDEO, *PKS_DATARANGE_VIDEO; + +typedef struct tagKS_DATARANGE_VIDEO2 { + KSDATARANGE DataRange; + BOOL bFixedSizeSamples; // all samples same size? + BOOL bTemporalCompression; // all I frames? + DWORD StreamDescriptionFlags; // KS_VIDEO_DESC_* + DWORD MemoryAllocationFlags; // KS_VIDEO_ALLOC_* + KS_VIDEO_STREAM_CONFIG_CAPS ConfigCaps; + KS_VIDEOINFOHEADER2 VideoInfoHeader; // default format +} KS_DATARANGE_VIDEO2, *PKS_DATARANGE_VIDEO2; + +typedef struct tagKS_DATARANGE_MPEG1_VIDEO { + KSDATARANGE DataRange; + BOOL bFixedSizeSamples; // all samples same size? + BOOL bTemporalCompression; // all I frames? + DWORD StreamDescriptionFlags; // KS_VIDEO_DESC_* + DWORD MemoryAllocationFlags; // KS_VIDEO_ALLOC_* + KS_VIDEO_STREAM_CONFIG_CAPS ConfigCaps; + KS_MPEG1VIDEOINFO VideoInfoHeader; // default format +} KS_DATARANGE_MPEG1_VIDEO, *PKS_DATARANGE_MPEG1_VIDEO; + +typedef struct tagKS_DATARANGE_MPEG2_VIDEO { + KSDATARANGE DataRange; + BOOL bFixedSizeSamples; // all samples same size? + BOOL bTemporalCompression; // all I frames? + DWORD StreamDescriptionFlags; // KS_VIDEO_DESC_* + DWORD MemoryAllocationFlags; // KS_VIDEO_ALLOC_* + KS_VIDEO_STREAM_CONFIG_CAPS ConfigCaps; + KS_MPEGVIDEOINFO2 VideoInfoHeader; // default format +} KS_DATARANGE_MPEG2_VIDEO, *PKS_DATARANGE_MPEG2_VIDEO; + +typedef struct tagKS_DATARANGE_VIDEO_PALETTE { + KSDATARANGE DataRange; + BOOL bFixedSizeSamples; // all samples same size? + BOOL bTemporalCompression; // all I frames? + DWORD StreamDescriptionFlags; // KS_VIDEO_DESC_* + DWORD MemoryAllocationFlags; // KS_VIDEO_ALLOC_* + KS_VIDEO_STREAM_CONFIG_CAPS ConfigCaps; + KS_VIDEOINFO VideoInfo; // default format +} KS_DATARANGE_VIDEO_PALETTE, *PKS_DATARANGE_VIDEO_PALETTE; + +typedef struct tagKS_DATARANGE_VIDEO_VBI { + KSDATARANGE DataRange; + BOOL bFixedSizeSamples; // all samples same size? + BOOL bTemporalCompression; // all I frames? + DWORD StreamDescriptionFlags; // KS_VIDEO_DESC_* + DWORD MemoryAllocationFlags; // KS_VIDEO_ALLOC_* + KS_VIDEO_STREAM_CONFIG_CAPS ConfigCaps; + KS_VBIINFOHEADER VBIInfoHeader; // default format +} KS_DATARANGE_VIDEO_VBI, *PKS_DATARANGE_VIDEO_VBI; + +typedef struct tagKS_DATARANGE_ANALOGVIDEO { + KSDATARANGE DataRange; + KS_ANALOGVIDEOINFO AnalogVideoInfo; +} KS_DATARANGE_ANALOGVIDEO, *PKS_DATARANGE_ANALOGVIDEO; + +//=========================================================================== +// StreamDescriptionFlags +// +// These define the "purpose" of each video stream +//=========================================================================== + +#define KS_VIDEOSTREAM_PREVIEW 0x0001 // Preview stream +#define KS_VIDEOSTREAM_CAPTURE 0x0002 // Capture stream +#define KS_VIDEOSTREAM_VBI 0x0010 // Field1 VBI +#define KS_VIDEOSTREAM_NABTS 0x0020 // Field1 NABTS +#define KS_VIDEOSTREAM_CC 0x0100 // Closed Captioning +#define KS_VIDEOSTREAM_EDS 0x0200 // Extended Data Services +#define KS_VIDEOSTREAM_TELETEXT 0x0400 // Field1 Teletext only +#define KS_VIDEOSTREAM_STILL 0x1000 // Still image input +#define KS_VIDEOSTREAM_IS_VPE 0x8000 // Is a VPE based stream? + +// MemoryAllocationFlags +#define KS_VIDEO_ALLOC_VPE_SYSTEM 0x0001 // VPE surface in system memory +#define KS_VIDEO_ALLOC_VPE_DISPLAY 0x0002 // VPE surface in display memory +#define KS_VIDEO_ALLOC_VPE_AGP 0x0004 // VPE surface in AGP memory + +////////////////////////////////////////////////////////////// +// Capture driver VBI property sets +////////////////////////////////////////////////////////////// + +// {F162C607-7B35-496f-AD7F-2DCA3B46B718} +#define STATIC_KSPROPSETID_VBICAP_PROPERTIES\ + 0xf162c607, 0x7b35, 0x496f, 0xad, 0x7f, 0x2d, 0xca, 0x3b, 0x46, 0xb7, 0x18 +DEFINE_GUIDSTRUCT("F162C607-7B35-496f-AD7F-2DCA3B46B718", KSPROPSETID_VBICAP_PROPERTIES); +#define KSPROPSETID_VBICAP_PROPERTIES DEFINE_GUIDNAMED(KSPROPSETID_VBICAP_PROPERTIES) + +typedef enum { + KSPROPERTY_VBICAP_PROPERTIES_PROTECTION = 0x01, +} KSPROPERTY_VBICAP; + +typedef struct _VBICAP_PROPERTIES_PROTECTION_S { + KSPROPERTY Property; + ULONG StreamIndex; // Index of stream + ULONG Status; +} VBICAP_PROPERTIES_PROTECTION_S, *PVBICAP_PROPERTIES_PROTECTION_S; +#define KS_VBICAP_PROTECTION_MV_PRESENT 0x0001L +#define KS_VBICAP_PROTECTION_MV_HARDWARE 0x0002L +#define KS_VBICAP_PROTECTION_MV_DETECTED 0x0004L + + +/***************************************************************************/ +/* VBI Related GUIDs, structs and properties for codecs(generic, cc, nabts)*/ +/***************************************************************************/ + +/////////////////////////////////////////////////////////////////////////////////////// +// IP/NABTS Protocol Reserved Group IDs - Overall Range 0x800-0x8FF [Decimal 2048-2079] +// Intervening values(0-F) are used if there are multiple providers at a particular tier +/////////////////////////////////////////////////////////////////////////////////////// + +// Used by individual content creators in show footage/data +#define KS_NABTS_GROUPID_ORIGINAL_CONTENT_BASE 0x800 +#define KS_NABTS_GROUPID_ORIGINAL_CONTENT_ADVERTISER_BASE 0x810 + +// Used by production company in finished show data +#define KS_NABTS_GROUPID_PRODUCTION_COMPANY_CONTENT_BASE 0x820 +#define KS_NABTS_GROUPID_PRODUCTION_COMPANY_ADVERTISER_BASE 0x830 + +// Used by broadcast syndicates in syndicated show data +#define KS_NABTS_GROUPID_SYNDICATED_SHOW_CONTENT_BASE 0x840 +#define KS_NABTS_GROUPID_SYNDICATED_SHOW_ADVERTISER_BASE 0x850 + +// Used by tv networks in network television data +#define KS_NABTS_GROUPID_NETWORK_WIDE_CONTENT_BASE 0x860 +#define KS_NABTS_GROUPID_NETWORK_WIDE_ADVERTISER_BASE 0x870 + +// Used by telvision stations in local programming data +#define KS_NABTS_GROUPID_TELEVISION_STATION_CONTENT_BASE 0x880 +#define KS_NABTS_GROUPID_TELEVISION_STATION_ADVERTISER_BASE 0x890 + +// Used by cable system in cable head-end originated data +#define KS_NABTS_GROUPID_LOCAL_CABLE_SYSTEM_CONTENT_BASE 0x8A0 +#define KS_NABTS_GROUPID_LOCAL_CABLE_SYSTEM_ADVERTISER_BASE 0x8B0 + +// The values between 0x8C0 - 0x8EF are reserved for future expansion + +// Used by Microsoft for Testing purposes (0x8F0 - 0x8FF) +#define KS_NABTS_GROUPID_MICROSOFT_RESERVED_TEST_DATA_BASE 0x8F0 + +////////////////////////////////////////////////////////////// +// Stream Format FEC-corrected NABTS bundles +////////////////////////////////////////////////////////////// + +#define STATIC_KSDATAFORMAT_TYPE_NABTS \ + 0xe757bca0, 0x39ac, 0x11d1, 0xa9, 0xf5, 0x0, 0xc0, 0x4f, 0xbb, 0xde, 0x8f +DEFINE_GUIDSTRUCT("E757BCA0-39AC-11d1-A9F5-00C04FBBDE8F", KSDATAFORMAT_TYPE_NABTS); +#define KSDATAFORMAT_TYPE_NABTS DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_NABTS) + +#define STATIC_KSDATAFORMAT_SUBTYPE_NABTS_FEC \ + 0xe757bca1, 0x39ac, 0x11d1, 0xa9, 0xf5, 0x0, 0xc0, 0x4f, 0xbb, 0xde, 0x8f +DEFINE_GUIDSTRUCT("E757BCA1-39AC-11d1-A9F5-00C04FBBDE8F", KSDATAFORMAT_SUBTYPE_NABTS_FEC); +#define KSDATAFORMAT_SUBTYPE_NABTS_FEC DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_NABTS_FEC) + + +////////////////////////////////////////////////////////////// +// NABTS Bundle data structure definition +////////////////////////////////////////////////////////////// + +#define MAX_NABTS_VBI_LINES_PER_FIELD 11 +#define NABTS_LINES_PER_BUNDLE 16 +#define NABTS_PAYLOAD_PER_LINE 28 +#define NABTS_BYTES_PER_LINE 36 + +typedef struct _NABTSFEC_BUFFER { + ULONG dataSize; + USHORT groupID; + USHORT Reserved; + UCHAR data[NABTS_LINES_PER_BUNDLE * NABTS_PAYLOAD_PER_LINE]; +} NABTSFEC_BUFFER, *PNABTSFEC_BUFFER; + +////////////////////////////////////////////////////////////// +// vbi codec filtering pin properties +////////////////////////////////////////////////////////////// + +#define STATIC_KSPROPSETID_VBICodecFiltering \ + 0xcafeb0caL, 0x8715, 0x11d0, 0xbd, 0x6a, 0x00, 0x35, 0xc0, 0xed, 0xba, 0xbe +DEFINE_GUIDSTRUCT("cafeb0ca-8715-11d0-bd6a-0035c0edbabe", KSPROPSETID_VBICodecFiltering); +#define KSPROPSETID_VBICodecFiltering DEFINE_GUIDNAMED(KSPROPSETID_VBICodecFiltering) + +typedef enum { + KSPROPERTY_VBICODECFILTERING_SCANLINES_REQUESTED_BIT_ARRAY = 0x01, + KSPROPERTY_VBICODECFILTERING_SCANLINES_DISCOVERED_BIT_ARRAY, + KSPROPERTY_VBICODECFILTERING_SUBSTREAMS_REQUESTED_BIT_ARRAY, + KSPROPERTY_VBICODECFILTERING_SUBSTREAMS_DISCOVERED_BIT_ARRAY, + KSPROPERTY_VBICODECFILTERING_STATISTICS, +} KSPROPERTY_VBICODECFILTERING; + +typedef struct _VBICODECFILTERING_SCANLINES { + DWORD DwordBitArray[32]; // An array of scanline bits 0..1024(32*32) +} VBICODECFILTERING_SCANLINES, *PVBICODECFILTERING_SCANLINES; + +typedef struct _VBICODECFILTERING_NABTS_SUBSTREAMS { + DWORD SubstreamMask[128]; // An array of 4096 bits (one for each NABTS GroupID) +} VBICODECFILTERING_NABTS_SUBSTREAMS, *PVBICODECFILTERING_NABTS_SUBSTREAMS; + +typedef struct _VBICODECFILTERING_CC_SUBSTREAMS { + DWORD SubstreamMask; // An array of 32 bits (see KS_CC_SUBSTREAM *) +} VBICODECFILTERING_CC_SUBSTREAMS, *PVBICODECFILTERING_CC_SUBSTREAMS; + +// These KS_CC_SUBSTREAM_* bitmasks are used with VBICODECFILTERING_CC_SUBSTREAMS +#define KS_CC_SUBSTREAM_ODD 0x0001L // Unfiltered Field 1 Data +#define KS_CC_SUBSTREAM_EVEN 0x0002L // Unfiltered Field 2 Data + +// The following flags describe CC field 1 substreams: CC1,CC2,TT1,TT2 +#define KS_CC_SUBSTREAM_FIELD1_MASK 0x00F0L +#define KS_CC_SUBSTREAM_SERVICE_CC1 0x0010L +#define KS_CC_SUBSTREAM_SERVICE_CC2 0x0020L +#define KS_CC_SUBSTREAM_SERVICE_T1 0x0040L +#define KS_CC_SUBSTREAM_SERVICE_T2 0x0080L + +// The following flags describe CC field 2 substreams: CC3,CC4,TT3,TT4,XDS +#define KS_CC_SUBSTREAM_FIELD2_MASK 0x1F00L +#define KS_CC_SUBSTREAM_SERVICE_CC3 0x0100L +#define KS_CC_SUBSTREAM_SERVICE_CC4 0x0200L +#define KS_CC_SUBSTREAM_SERVICE_T3 0x0400L +#define KS_CC_SUBSTREAM_SERVICE_T4 0x0800L +#define KS_CC_SUBSTREAM_SERVICE_XDS 0x1000L + +// Special Note: field 1 or 2 substreams are usually on found on field 1 and 2 respectively +// If the VBI odd/even polarity is reversed, the correct filtered data will still be found. + +/////////////////////////////////////////////////////////////////// +// Hardware decoded CC stream format +/////////////////////////////////////////////////////////////////// + +#define CC_MAX_HW_DECODE_LINES 12 +typedef struct _CC_BYTE_PAIR { + BYTE Decoded[2]; + USHORT Reserved; +} CC_BYTE_PAIR, *PCC_BYTE_PAIR; + +typedef struct _CC_HW_FIELD { + VBICODECFILTERING_SCANLINES ScanlinesRequested; + ULONG fieldFlags; // KS_VBI_FLAG_FIELD1,2 + LONGLONG PictureNumber; + CC_BYTE_PAIR Lines[CC_MAX_HW_DECODE_LINES]; +} CC_HW_FIELD, *PCC_HW_FIELD; + +/////////////////////////////////////////////////////////////////// +// Raw NABTS stream format (TYPE_NABTS, SUBTYPE_NABTS) +/////////////////////////////////////////////////////////////////// + +// These low-level structures are byte packed( -Zp1 ) +#if !defined( PACK_PRAGMAS_NOT_SUPPORTED ) +#include +#endif +typedef struct _NABTS_BUFFER_LINE { + BYTE Confidence; + BYTE Bytes[NABTS_BYTES_PER_LINE]; +} NABTS_BUFFER_LINE, *PNABTS_BUFFER_LINE; + +#define NABTS_BUFFER_PICTURENUMBER_SUPPORT 1 +typedef struct _NABTS_BUFFER { + VBICODECFILTERING_SCANLINES ScanlinesRequested; + LONGLONG PictureNumber; + NABTS_BUFFER_LINE NabtsLines[MAX_NABTS_VBI_LINES_PER_FIELD]; +} NABTS_BUFFER, *PNABTS_BUFFER; +#if !defined( PACK_PRAGMAS_NOT_SUPPORTED ) +#include +#endif + +////////////////////////////////////////////////////////////// +// WST Codec Teletext Media Sample Format +////////////////////////////////////////////////////////////// + +#define WST_TVTUNER_CHANGE_BEGIN_TUNE 0x1000L // Starting a tuning operation +#define WST_TVTUNER_CHANGE_END_TUNE 0x2000L // Ending a tuning operation + +#define MAX_WST_VBI_LINES_PER_FIELD 17 +#define WST_BYTES_PER_LINE 42 + +typedef struct _WST_BUFFER_LINE { + BYTE Confidence; + BYTE Bytes[WST_BYTES_PER_LINE]; +} WST_BUFFER_LINE, *PWST_BUFFER_LINE; + +typedef struct _WST_BUFFER { + VBICODECFILTERING_SCANLINES ScanlinesRequested; + WST_BUFFER_LINE WstLines[MAX_WST_VBI_LINES_PER_FIELD]; +} WST_BUFFER, *PWST_BUFFER; + +// +// Common codec statistics +// + +typedef struct _VBICODECFILTERING_STATISTICS_COMMON { + DWORD InputSRBsProcessed; // upstream SRBs received + DWORD OutputSRBsProcessed; // downstream SRBs sent + DWORD SRBsIgnored; // SRBs ignored due to no requests + DWORD InputSRBsMissing; // SRBs dropped upstream + DWORD OutputSRBsMissing; // Output dropped because no SRB pending + DWORD OutputFailures; // dropped because of other failure + DWORD InternalErrors; // could not process due to int. failure + DWORD ExternalErrors; // could not process due to ext. failure + DWORD InputDiscontinuities; // discontinuities received + DWORD DSPFailures; // DSP confidence failure + DWORD TvTunerChanges; // number of received KS_TVTUNER_CHANGE_BEGIN_TUNE and KS_TVTUNER_CHANGE_END_TUNE pairs. + DWORD VBIHeaderChanges; // number of received KS_VBI_FLAG_VBIINFOHEADER_CHANGE + DWORD LineConfidenceAvg; // Average of all DSP confidence results + DWORD BytesOutput; // Bytes sent downstream +} VBICODECFILTERING_STATISTICS_COMMON, *PVBICODECFILTERING_STATISTICS_COMMON; + +typedef struct _VBICODECFILTERING_STATISTICS_COMMON_PIN { + DWORD SRBsProcessed; // SRBs sent/received + DWORD SRBsIgnored; // SRBs ignored due to filtering + DWORD SRBsMissing; // SRBs not sent/received + DWORD InternalErrors; // could not send/receive due to int. failure + DWORD ExternalErrors; // could not send/receive due to ext. failure + DWORD Discontinuities; // discontinuities received/sent + DWORD LineConfidenceAvg; // Average of all DSP confidence results for this pin + DWORD BytesOutput; // Bytes sent downstream +} VBICODECFILTERING_STATISTICS_COMMON_PIN, *PVBICODECFILTERING_STATISTICS_COMMON_PIN; + +// +// Codec-specific statistics - NABTS +// + +typedef struct _VBICODECFILTERING_STATISTICS_NABTS { + VBICODECFILTERING_STATISTICS_COMMON Common; // Generic VBI statistics + DWORD FECBundleBadLines; // Un-FEC-correctable lines + DWORD FECQueueOverflows; // Number of times FEC queue overflowed + DWORD FECCorrectedLines; // Lines CSUM corrected by FEC + DWORD FECUncorrectableLines; // FEC input lines not CSUM correctable + DWORD BundlesProcessed; // Bundles received from FEC + DWORD BundlesSent2IP; // Bundles sent to IP driver + DWORD FilteredLines; // Lines processed and then dropped + // because no one was interested +} VBICODECFILTERING_STATISTICS_NABTS, *PVBICODECFILTERING_STATISTICS_NABTS; + +typedef struct _VBICODECFILTERING_STATISTICS_NABTS_PIN { + VBICODECFILTERING_STATISTICS_COMMON_PIN Common;// Generic VBI pin statistics +} VBICODECFILTERING_STATISTICS_NABTS_PIN, *PVBICODECFILTERING_STATISTICS_NABTS_PIN; + +// +// Codec-specific statistics - Closed Caption +// + +typedef struct _VBICODECFILTERING_STATISTICS_CC { + VBICODECFILTERING_STATISTICS_COMMON Common; // Generic VBI statistics +} VBICODECFILTERING_STATISTICS_CC, *PVBICODECFILTERING_STATISTICS_CC; + + +typedef struct _VBICODECFILTERING_STATISTICS_CC_PIN { + VBICODECFILTERING_STATISTICS_COMMON_PIN Common;// Generic VBI pin statistics +} VBICODECFILTERING_STATISTICS_CC_PIN, *PVBICODECFILTERING_STATISTICS_CC_PIN; + +// +// Codec-specific statistics - Closed Caption +// + +typedef struct _VBICODECFILTERING_STATISTICS_TELETEXT { + VBICODECFILTERING_STATISTICS_COMMON Common; // Generic VBI statistics +} VBICODECFILTERING_STATISTICS_TELETEXT, *PVBICODECFILTERING_STATISTICS_TELETEXT; + +typedef struct _VBICODECFILTERING_STATISTICS_TELETEXT_PIN { + VBICODECFILTERING_STATISTICS_COMMON_PIN Common;// Generic VBI pin statistics +} VBICODECFILTERING_STATISTICS_TELETEXT_PIN, *PVBICODECFILTERING_STATISTICS_TELETEXT_PIN; + +//////////////////////////////////////////////////////////////////////////// +// VBI codec property structures(based on KSPROPERTY_VBICODECFILTERING enum) +//////////////////////////////////////////////////////////////////////////// + +// *** Most codecs support this property +// KSPROPERTY_VBICODECFILTERING_SCANLINES_REQUESTED_BIT_ARRAY +// KSPROPERTY_VBICODECFILTERING_SCANLINES_DISCOVERED_BIT_ARRAY, +typedef struct { + KSPROPERTY Property; + VBICODECFILTERING_SCANLINES Scanlines; +} KSPROPERTY_VBICODECFILTERING_SCANLINES_S, *PKSPROPERTY_VBICODECFILTERING_SCANLINES_S; + +// *** NABTS codecs support this property +// KSPROPERTY_VBICODECFILTERING_SUBSTREAMS_REQUESTED_BIT_ARRAY, +// KSPROPERTY_VBICODECFILTERING_SUBSTREAMS_DISCOVERED_BIT_ARRAY, +typedef struct { + KSPROPERTY Property; + VBICODECFILTERING_NABTS_SUBSTREAMS Substreams; +} KSPROPERTY_VBICODECFILTERING_NABTS_SUBSTREAMS_S, *PKSPROPERTY_VBICODECFILTERING_NABTS_SUBSTREAMS_S; + +// *** Closed captioning codecs support this property +// KSPROPERTY_VBICODECFILTERING_SUBSTREAMS_REQUESTED_BIT_ARRAY, +// KSPROPERTY_VBICODECFILTERING_SUBSTREAMS_DISCOVERED_BIT_ARRAY, +typedef struct { + KSPROPERTY Property; + VBICODECFILTERING_CC_SUBSTREAMS Substreams; +} KSPROPERTY_VBICODECFILTERING_CC_SUBSTREAMS_S, *PKSPROPERTY_VBICODECFILTERING_CC_SUBSTREAMS_S; + +// *** Most codecs support these versions of the global and pin properties +// KSPROPERTY_VBICODECFILTERING_STATISTICS +typedef struct { + KSPROPERTY Property; + VBICODECFILTERING_STATISTICS_COMMON Statistics; +} KSPROPERTY_VBICODECFILTERING_STATISTICS_COMMON_S, *PKSPROPERTY_VBICODECFILTERING_STATISTICS_COMMON_S; + +typedef struct { + KSPROPERTY Property; + VBICODECFILTERING_STATISTICS_COMMON_PIN Statistics; +} KSPROPERTY_VBICODECFILTERING_STATISTICS_COMMON_PIN_S, *PKSPROPERTY_VBICODECFILTERING_STATISTICS_COMMON_PIN_S; + +// *** NABTS codecs support this version of the global and pin properties +// KSPROPERTY_VBICODECFILTERING_STATISTICS +typedef struct { + KSPROPERTY Property; + VBICODECFILTERING_STATISTICS_NABTS Statistics; +} KSPROPERTY_VBICODECFILTERING_STATISTICS_NABTS_S, *PKSPROPERTY_VBICODECFILTERING_STATISTICS_NABTS_S; + +typedef struct { + KSPROPERTY Property; + VBICODECFILTERING_STATISTICS_NABTS_PIN Statistics; +} KSPROPERTY_VBICODECFILTERING_STATISTICS_NABTS_PIN_S, *PKSPROPERTY_VBICODECFILTERING_STATISTICS_NABTS_PIN_S; + +// *** Closed captioning codecs support this version of the global and pin properties +// KSPROPERTY_VBICODECFILTERING_STATISTICS + +typedef struct { + KSPROPERTY Property; + VBICODECFILTERING_STATISTICS_CC Statistics; +} KSPROPERTY_VBICODECFILTERING_STATISTICS_CC_S, *PKSPROPERTY_VBICODECFILTERING_STATISTICS_CC_S; + +typedef struct { + KSPROPERTY Property; + VBICODECFILTERING_STATISTICS_CC_PIN Statistics; +} KSPROPERTY_VBICODECFILTERING_STATISTICS_CC_PIN_S, *PKSPROPERTY_VBICODECFILTERING_STATISTICS_CC_PIN_S; + +// Standard Pin Names for the video capture filter +//=========================================================================== + +#define STATIC_PINNAME_VIDEO_CAPTURE \ + 0xfb6c4281, 0x353, 0x11d1, 0x90, 0x5f, 0x0, 0x0, 0xc0, 0xcc, 0x16, 0xba +#define STATIC_PINNAME_CAPTURE STATIC_PINNAME_VIDEO_CAPTURE +DEFINE_GUIDSTRUCT("FB6C4281-0353-11d1-905F-0000C0CC16BA", PINNAME_VIDEO_CAPTURE); +#define PINNAME_VIDEO_CAPTURE DEFINE_GUIDNAMED(PINNAME_VIDEO_CAPTURE) +#define PINNAME_CAPTURE PINNAME_VIDEO_CAPTURE + +#define STATIC_PINNAME_VIDEO_CC_CAPTURE \ + 0x1aad8061, 0x12d, 0x11d2, 0xb4, 0xb1, 0x0, 0xa0, 0xd1, 0x2, 0xcf, 0xbe +#define STATIC_PINNAME_CC_CAPTURE STATIC_PINNAME_VIDEO_CC_CAPTURE +DEFINE_GUIDSTRUCT("1AAD8061-012D-11d2-B4B1-00A0D102CFBE", PINNAME_VIDEO_CC_CAPTURE); +#define PINNAME_VIDEO_CC_CAPTURE DEFINE_GUIDNAMED(PINNAME_VIDEO_CC_CAPTURE) + +#define STATIC_PINNAME_VIDEO_NABTS_CAPTURE \ + 0x29703660, 0x498a, 0x11d2, 0xb4, 0xb1, 0x0, 0xa0, 0xd1, 0x2, 0xcf, 0xbe +#define STATIC_PINNAME_NABTS_CAPTURE STATIC_PINNAME_VIDEO_NABTS_CAPTURE +DEFINE_GUIDSTRUCT("29703660-498A-11d2-B4B1-00A0D102CFBE", PINNAME_VIDEO_NABTS_CAPTURE); +#define PINNAME_VIDEO_NABTS_CAPTURE DEFINE_GUIDNAMED(PINNAME_VIDEO_NABTS_CAPTURE) + +#define STATIC_PINNAME_VIDEO_PREVIEW \ + 0xfb6c4282, 0x353, 0x11d1, 0x90, 0x5f, 0x0, 0x0, 0xc0, 0xcc, 0x16, 0xba +#define STATIC_PINNAME_PREVIEW STATIC_PINNAME_VIDEO_PREVIEW +DEFINE_GUIDSTRUCT("FB6C4282-0353-11d1-905F-0000C0CC16BA", PINNAME_VIDEO_PREVIEW); +#define PINNAME_VIDEO_PREVIEW DEFINE_GUIDNAMED(PINNAME_VIDEO_PREVIEW) +#define PINNAME_PREVIEW PINNAME_VIDEO_PREVIEW + +#define STATIC_PINNAME_VIDEO_ANALOGVIDEOIN \ + 0xfb6c4283, 0x353, 0x11d1, 0x90, 0x5f, 0x0, 0x0, 0xc0, 0xcc, 0x16, 0xba +DEFINE_GUIDSTRUCT("FB6C4283-0353-11d1-905F-0000C0CC16BA", PINNAME_VIDEO_ANALOGVIDEOIN); +#define PINNAME_VIDEO_ANALOGVIDEOIN DEFINE_GUIDNAMED(PINNAME_VIDEO_ANALOGVIDEOIN) + +#define STATIC_PINNAME_VIDEO_VBI \ + 0xfb6c4284, 0x353, 0x11d1, 0x90, 0x5f, 0x0, 0x0, 0xc0, 0xcc, 0x16, 0xba +DEFINE_GUIDSTRUCT("FB6C4284-0353-11d1-905F-0000C0CC16BA", PINNAME_VIDEO_VBI); +#define PINNAME_VIDEO_VBI DEFINE_GUIDNAMED(PINNAME_VIDEO_VBI) + +#define STATIC_PINNAME_VIDEO_VIDEOPORT \ + 0xfb6c4285, 0x353, 0x11d1, 0x90, 0x5f, 0x0, 0x0, 0xc0, 0xcc, 0x16, 0xba +DEFINE_GUIDSTRUCT("FB6C4285-0353-11d1-905F-0000C0CC16BA", PINNAME_VIDEO_VIDEOPORT); +#define PINNAME_VIDEO_VIDEOPORT DEFINE_GUIDNAMED(PINNAME_VIDEO_VIDEOPORT) + +#define STATIC_PINNAME_VIDEO_NABTS \ + 0xfb6c4286, 0x353, 0x11d1, 0x90, 0x5f, 0x0, 0x0, 0xc0, 0xcc, 0x16, 0xba +DEFINE_GUIDSTRUCT("FB6C4286-0353-11d1-905F-0000C0CC16BA", PINNAME_VIDEO_NABTS); +#define PINNAME_VIDEO_NABTS DEFINE_GUIDNAMED(PINNAME_VIDEO_NABTS) + +#define STATIC_PINNAME_VIDEO_EDS \ + 0xfb6c4287, 0x353, 0x11d1, 0x90, 0x5f, 0x0, 0x0, 0xc0, 0xcc, 0x16, 0xba +DEFINE_GUIDSTRUCT("FB6C4287-0353-11d1-905F-0000C0CC16BA", PINNAME_VIDEO_EDS); +#define PINNAME_VIDEO_EDS DEFINE_GUIDNAMED(PINNAME_VIDEO_EDS) + +#define STATIC_PINNAME_VIDEO_TELETEXT \ + 0xfb6c4288, 0x353, 0x11d1, 0x90, 0x5f, 0x0, 0x0, 0xc0, 0xcc, 0x16, 0xba +DEFINE_GUIDSTRUCT("FB6C4288-0353-11d1-905F-0000C0CC16BA", PINNAME_VIDEO_TELETEXT); +#define PINNAME_VIDEO_TELETEXT DEFINE_GUIDNAMED(PINNAME_VIDEO_TELETEXT) + +#define STATIC_PINNAME_VIDEO_CC \ + 0xfb6c4289, 0x353, 0x11d1, 0x90, 0x5f, 0x0, 0x0, 0xc0, 0xcc, 0x16, 0xba +DEFINE_GUIDSTRUCT("FB6C4289-0353-11d1-905F-0000C0CC16BA", PINNAME_VIDEO_CC); +#define PINNAME_VIDEO_CC DEFINE_GUIDNAMED(PINNAME_VIDEO_CC) + +#define STATIC_PINNAME_VIDEO_STILL \ + 0xfb6c428A, 0x353, 0x11d1, 0x90, 0x5f, 0x0, 0x0, 0xc0, 0xcc, 0x16, 0xba +DEFINE_GUIDSTRUCT("FB6C428A-0353-11d1-905F-0000C0CC16BA", PINNAME_VIDEO_STILL); +#define PINNAME_VIDEO_STILL DEFINE_GUIDNAMED(PINNAME_VIDEO_STILL) + +#define STATIC_PINNAME_VIDEO_TIMECODE \ + 0xfb6c428B, 0x353, 0x11d1, 0x90, 0x5f, 0x0, 0x0, 0xc0, 0xcc, 0x16, 0xba +DEFINE_GUIDSTRUCT("FB6C428B-0353-11d1-905F-0000C0CC16BA", PINNAME_VIDEO_TIMECODE); +#define PINNAME_VIDEO_TIMECODE DEFINE_GUIDNAMED(PINNAME_VIDEO_TIMECODE) + +#define STATIC_PINNAME_VIDEO_VIDEOPORT_VBI \ + 0xfb6c428C, 0x353, 0x11d1, 0x90, 0x5f, 0x0, 0x0, 0xc0, 0xcc, 0x16, 0xba +DEFINE_GUIDSTRUCT("FB6C428C-0353-11d1-905F-0000C0CC16BA", PINNAME_VIDEO_VIDEOPORT_VBI); +#define PINNAME_VIDEO_VIDEOPORT_VBI DEFINE_GUIDNAMED(PINNAME_VIDEO_VIDEOPORT_VBI) + +//=========================================================================== +// KSSTREAM_HEADER extensions for digital video +//=========================================================================== + +#define KS_VIDEO_FLAG_FRAME 0x0000L // Frame or Field (default is frame) +#define KS_VIDEO_FLAG_FIELD1 0x0001L +#define KS_VIDEO_FLAG_FIELD2 0x0002L + +#define KS_VIDEO_FLAG_I_FRAME 0x0000L // I, B, or P (default is I) +#define KS_VIDEO_FLAG_P_FRAME 0x0010L +#define KS_VIDEO_FLAG_B_FRAME 0x0020L + +typedef struct tagKS_FRAME_INFO { + ULONG ExtendedHeaderSize; // Size of this extended header + DWORD dwFrameFlags; // Field1, Field2, or Frame + LONGLONG PictureNumber; + LONGLONG DropCount; + + // The following are only set when using OverlayMixer + HANDLE hDirectDraw; // user mode DDraw handle + HANDLE hSurfaceHandle; // user mode surface handle + RECT DirectDrawRect; // portion of surface locked + // Reserved fields, never reference these + DWORD Reserved1; + DWORD Reserved2; + DWORD Reserved3; + DWORD Reserved4; +} KS_FRAME_INFO, *PKS_FRAME_INFO; + +//=========================================================================== +// KSSTREAM_HEADER extensions for VBI +//=========================================================================== + +#define KS_VBI_FLAG_FIELD1 0x0001L +#define KS_VBI_FLAG_FIELD2 0x0002L + +#define KS_VBI_FLAG_MV_PRESENT 0x0100L +#define KS_VBI_FLAG_MV_HARDWARE 0x0200L +#define KS_VBI_FLAG_MV_DETECTED 0x0400L + +#define KS_VBI_FLAG_TVTUNER_CHANGE 0x0010L // TvTunerChangeInfo is valid +#define KS_VBI_FLAG_VBIINFOHEADER_CHANGE 0x0020L // VBIInfoHeader is valid + +typedef struct tagKS_VBI_FRAME_INFO { + ULONG ExtendedHeaderSize; // Size of this extended header + DWORD dwFrameFlags; // Field1, Field2, or Frame; & etc + LONGLONG PictureNumber; // Test only? + LONGLONG DropCount; // Test only? + DWORD dwSamplingFrequency; + KS_TVTUNER_CHANGE_INFO TvTunerChangeInfo; + KS_VBIINFOHEADER VBIInfoHeader; +} KS_VBI_FRAME_INFO, *PKS_VBI_FRAME_INFO; + + +//=========================================================================== +// Analog video formats, used with: +// Analog Video Decoders +// TVTuners +// Analog Video Encoders +// +// XXX_STANDARDS_SUPPORTED returns a bitmask +//=========================================================================== + +typedef enum +{ + KS_AnalogVideo_None = 0x00000000, // This is a digital sensor + KS_AnalogVideo_NTSC_M = 0x00000001, // 75 IRE Setup + KS_AnalogVideo_NTSC_M_J = 0x00000002, // Japan, 0 IRE Setup + KS_AnalogVideo_NTSC_433 = 0x00000004, + + KS_AnalogVideo_PAL_B = 0x00000010, + KS_AnalogVideo_PAL_D = 0x00000020, + KS_AnalogVideo_PAL_G = 0x00000040, + KS_AnalogVideo_PAL_H = 0x00000080, + KS_AnalogVideo_PAL_I = 0x00000100, + KS_AnalogVideo_PAL_M = 0x00000200, + KS_AnalogVideo_PAL_N = 0x00000400, + + KS_AnalogVideo_PAL_60 = 0x00000800, + + KS_AnalogVideo_SECAM_B = 0x00001000, + KS_AnalogVideo_SECAM_D = 0x00002000, + KS_AnalogVideo_SECAM_G = 0x00004000, + KS_AnalogVideo_SECAM_H = 0x00008000, + KS_AnalogVideo_SECAM_K = 0x00010000, + KS_AnalogVideo_SECAM_K1 = 0x00020000, + KS_AnalogVideo_SECAM_L = 0x00040000, + KS_AnalogVideo_SECAM_L1 = 0x00080000, + + KS_AnalogVideo_PAL_N_COMBO + = 0x00100000 +} KS_AnalogVideoStandard; + +#define KS_AnalogVideo_NTSC_Mask 0x00000007 +#define KS_AnalogVideo_PAL_Mask 0x00100FF0 +#define KS_AnalogVideo_SECAM_Mask 0x000FF000 + +//=========================================================================== +// Property set definitions +// The comments show whether a given property is: +// R : READ only +// w : WRITE only +// RW : READ / WRITE +// O : Optional (return E_UNSUPPORTED if you don't handle this) +//=========================================================================== + +#define STATIC_PROPSETID_ALLOCATOR_CONTROL\ + 0x53171960, 0x148e, 0x11d2, 0x99, 0x79, 0x0, 0x0, 0xc0, 0xcc, 0x16, 0xba +DEFINE_GUIDSTRUCT("53171960-148E-11d2-9979-0000C0CC16BA", PROPSETID_ALLOCATOR_CONTROL); +#define PROPSETID_ALLOCATOR_CONTROL DEFINE_GUIDNAMED(PROPSETID_ALLOCATOR_CONTROL) +typedef enum { + KSPROPERTY_ALLOCATOR_CONTROL_HONOR_COUNT, // R O (will allocate exactly this number of buffers) + KSPROPERTY_ALLOCATOR_CONTROL_SURFACE_SIZE, // R O (return 2 DWORDs specifying surface size) + // W I (informn a capture driver whether interleave capture is possible or + // not - a value of 1 means that interleaved capture is supported) + KSPROPERTY_ALLOCATOR_CONTROL_CAPTURE_CAPS, + + // R O (if value == 1, then the ovmixer will turn on the DDVP_INTERLEAVE + // flag thus allowing interleaved capture of the video) + KSPROPERTY_ALLOCATOR_CONTROL_CAPTURE_INTERLEAVE, +} KSPROPERTY_ALLOCATOR_CONTROL; + +typedef struct { + //KSPROPERTY Property; + ULONG CX; + ULONG CY; +} KSPROPERTY_ALLOCATOR_CONTROL_SURFACE_SIZE_S, *PKSPROPERTY_ALLOCATOR_CONTROL_SURFACE_SIZE_S; + +typedef struct { + //KSPROPERTY Property; + ULONG InterleavedCapSupported; +} KSPROPERTY_ALLOCATOR_CONTROL_CAPTURE_CAPS_S, *PKSPROPERTY_ALLOCATOR_CONTROL_CAPTURE_CAPS_S; + + +typedef struct { + //KSPROPERTY Property; + ULONG InterleavedCapPossible; +} KSPROPERTY_ALLOCATOR_CONTROL_CAPTURE_INTERLEAVE_S, *PKSPROPERTY_ALLOCATOR_CONTROL_CAPTURE_INTERLEAVE_S; + +//=========================================================================== + +#define STATIC_PROPSETID_VIDCAP_VIDEOPROCAMP\ + 0xC6E13360L, 0x30AC, 0x11d0, 0xa1, 0x8c, 0x00, 0xA0, 0xC9, 0x11, 0x89, 0x56 +DEFINE_GUIDSTRUCT("C6E13360-30AC-11d0-A18C-00A0C9118956", PROPSETID_VIDCAP_VIDEOPROCAMP); +#define PROPSETID_VIDCAP_VIDEOPROCAMP DEFINE_GUIDNAMED(PROPSETID_VIDCAP_VIDEOPROCAMP) + +typedef enum { + KSPROPERTY_VIDEOPROCAMP_BRIGHTNESS, // RW O + KSPROPERTY_VIDEOPROCAMP_CONTRAST, // RW O + KSPROPERTY_VIDEOPROCAMP_HUE, // RW O + KSPROPERTY_VIDEOPROCAMP_SATURATION, // RW O + KSPROPERTY_VIDEOPROCAMP_SHARPNESS, // RW O + KSPROPERTY_VIDEOPROCAMP_GAMMA, // RW O + KSPROPERTY_VIDEOPROCAMP_COLORENABLE, // RW O + KSPROPERTY_VIDEOPROCAMP_WHITEBALANCE, // RW O + KSPROPERTY_VIDEOPROCAMP_BACKLIGHT_COMPENSATION,// RW O + KSPROPERTY_VIDEOPROCAMP_GAIN, // RW O + KSPROPERTY_VIDEOPROCAMP_DIGITAL_MULTIPLIER, // RW O + KSPROPERTY_VIDEOPROCAMP_DIGITAL_MULTIPLIER_LIMIT,// RW O + KSPROPERTY_VIDEOPROCAMP_WHITEBALANCE_COMPONENT, // RW O + KSPROPERTY_VIDEOPROCAMP_POWERLINE_FREQUENCY // RW O +} KSPROPERTY_VIDCAP_VIDEOPROCAMP; + +typedef struct { + KSPROPERTY Property; + LONG Value; // Value to set or get + ULONG Flags; // KSPROPERTY_VIDEOPROCAMP_FLAGS_* + ULONG Capabilities; // KSPROPERTY_VIDEOPROCAMP_FLAGS_* +} KSPROPERTY_VIDEOPROCAMP_S, *PKSPROPERTY_VIDEOPROCAMP_S; + +typedef struct { + KSP_NODE NodeProperty; + LONG Value; // Value to set or get + ULONG Flags; // KSPROPERTY_VIDEOPROCAMP_FLAGS_* + ULONG Capabilities; // KSPROPERTY_VIDEOPROCAMP_FLAGS_* +} KSPROPERTY_VIDEOPROCAMP_NODE_S, *PKSPROPERTY_VIDEOPROCAMP_NODE_S; + +typedef struct { + KSPROPERTY Property; + LONG Value1; + ULONG Flags; + ULONG Capabilities; + LONG Value2; +} KSPROPERTY_VIDEOPROCAMP_S2, *PKSPROPERTY_VIDEOPROCAMP_S2; + +typedef struct { + KSP_NODE NodeProperty; + LONG Value1; + ULONG Flags; + ULONG Capabilities; + LONG Value2; +} KSPROPERTY_VIDEOPROCAMP_NODE_S2, *PKSPROPERTY_VIDEOPROCAMP_NODE_S2; + +#define KSPROPERTY_VIDEOPROCAMP_FLAGS_AUTO 0X0001L +#define KSPROPERTY_VIDEOPROCAMP_FLAGS_MANUAL 0X0002L + +//=========================================================================== + +#define STATIC_PROPSETID_VIDCAP_SELECTOR \ + 0x1ABDAECA, 0x68B6, 0x4F83, 0x93, 0x71, 0xB4, 0x13, 0x90, 0x7C, 0x7B, 0x9F +DEFINE_GUIDSTRUCT("1ABDAECA-68B6-4F83-9371-B413907C7B9F", PROPSETID_VIDCAP_SELECTOR); +#define PROPSETID_VIDCAP_SELECTOR DEFINE_GUIDNAMED(PROPSETID_VIDCAP_SELECTOR) + +typedef enum { + KSPROPERTY_SELECTOR_SOURCE_NODE_ID, // RW + KSPROPERTY_SELECTOR_NUM_SOURCES // R +} KSPROPERTY_VIDCAP_SELECTOR, *PKSPROPERTY_VIDCAP_SELECTOR; + +typedef struct { + KSPROPERTY Property; + LONG Value; // Value to set or get + ULONG Flags; + ULONG Capabilities; +} KSPROPERTY_SELECTOR_S, *PKSPROPERTY_SELECTOR_S; + +typedef struct { + KSP_NODE NodeProperty; + LONG Value; // Value to set or get + ULONG Flags; + ULONG Capabilities; +} KSPROPERTY_SELECTOR_NODE_S, *PKSPROPERTY_SELECTOR_NODE_S; + + +//=========================================================================== + + +#define STATIC_PROPSETID_TUNER\ + 0x6a2e0605L, 0x28e4, 0x11d0, 0xa1, 0x8c, 0x00, 0xa0, 0xc9, 0x11, 0x89, 0x56 +DEFINE_GUIDSTRUCT("6a2e0605-28e4-11d0-a18c-00a0c9118956", PROPSETID_TUNER); +#define PROPSETID_TUNER DEFINE_GUIDNAMED(PROPSETID_TUNER) + +typedef enum { + KSPROPERTY_TUNER_CAPS, // R -overall device capabilities + KSPROPERTY_TUNER_MODE_CAPS, // R -capabilities in this mode + KSPROPERTY_TUNER_MODE, // RW -set a mode (TV, FM, AM, DSS) + KSPROPERTY_TUNER_STANDARD, // R -get TV standard (only if TV mode) + KSPROPERTY_TUNER_FREQUENCY, // RW -set/get frequency + KSPROPERTY_TUNER_INPUT, // RW -select an input + KSPROPERTY_TUNER_STATUS, // R -tuning status + KSPROPERTY_TUNER_IF_MEDIUM // R O-Medium for IF or Transport Pin +} KSPROPERTY_TUNER; + +typedef enum { + KSPROPERTY_TUNER_MODE_TV = 0X0001, + KSPROPERTY_TUNER_MODE_FM_RADIO = 0X0002, + KSPROPERTY_TUNER_MODE_AM_RADIO = 0X0004, + KSPROPERTY_TUNER_MODE_DSS = 0X0008, + KSPROPERTY_TUNER_MODE_ATSC = 0X0010, // also used for DVB-T, DVB-C +} KSPROPERTY_TUNER_MODES; + +// Describes how the device tunes. Only one of these flags may be set +// in KSPROPERTY_TUNER_MODE_CAPS_S.Strategy + +// Describe how the driver should attempt to tune: +// EXACT: just go to the frequency specified (no fine tuning) +// FINE: (slow) do an exhaustive search for the best signal +// COARSE: (fast) use larger frequency jumps to just determine if any signal + +typedef enum { + KS_TUNER_TUNING_EXACT = 1, // No fine tuning + KS_TUNER_TUNING_FINE, // Fine grained search + KS_TUNER_TUNING_COARSE, // Coarse search +}KS_TUNER_TUNING_FLAGS; + +typedef enum { + KS_TUNER_STRATEGY_PLL = 0X01, // Tune by PLL offset + KS_TUNER_STRATEGY_SIGNAL_STRENGTH = 0X02, // Tune by signal strength + KS_TUNER_STRATEGY_DRIVER_TUNES = 0X04, // Driver does fine tuning +}KS_TUNER_STRATEGY; + +typedef struct { + KSPROPERTY Property; + ULONG ModesSupported; // KS_PROPERTY_TUNER_MODES_* + KSPIN_MEDIUM VideoMedium; // GUID_NULL (no pin), or GUID + KSPIN_MEDIUM TVAudioMedium; // GUID_NULL (no pin), or GUID + KSPIN_MEDIUM RadioAudioMedium; // GUID_NULL (no pin), or GUID +} KSPROPERTY_TUNER_CAPS_S, *PKSPROPERTY_TUNER_CAPS_S; + +typedef struct { + KSPROPERTY Property; + KSPIN_MEDIUM IFMedium; // GUID_NULL (no pin), or GUID +} KSPROPERTY_TUNER_IF_MEDIUM_S, *PKSPROPERTY_TUNER_IF_MEDIUM_S; + +typedef struct { + KSPROPERTY Property; + ULONG Mode; // IN: KSPROPERTY_TUNER_MODE + ULONG StandardsSupported; // KS_AnalogVideo_* (if TV or DSS) + ULONG MinFrequency; // Hz + ULONG MaxFrequency; // Hz + ULONG TuningGranularity; // Hz + ULONG NumberOfInputs; // count of inputs + ULONG SettlingTime; // milliSeconds + ULONG Strategy; // KS_TUNER_STRATEGY +} KSPROPERTY_TUNER_MODE_CAPS_S, *PKSPROPERTY_TUNER_MODE_CAPS_S; + +typedef struct { + KSPROPERTY Property; + ULONG Mode; // IN: KSPROPERTY_TUNER_MODE +} KSPROPERTY_TUNER_MODE_S, *PKSPROPERTY_TUNER_MODE_S; + +typedef struct { + KSPROPERTY Property; + ULONG Frequency; // Hz + ULONG LastFrequency; // Hz (last known good) + ULONG TuningFlags; // KS_TUNER_TUNING_FLAGS + ULONG VideoSubChannel; // DSS + ULONG AudioSubChannel; // DSS + ULONG Channel; // VBI decoders + ULONG Country; // VBI decoders +} KSPROPERTY_TUNER_FREQUENCY_S, *PKSPROPERTY_TUNER_FREQUENCY_S; + +typedef struct { + KSPROPERTY Property; + ULONG Standard; // KS_AnalogVideo_* +} KSPROPERTY_TUNER_STANDARD_S, *PKSPROPERTY_TUNER_STANDARD_S; + +typedef struct { + KSPROPERTY Property; + ULONG InputIndex; // 0 to (n-1) inputs +} KSPROPERTY_TUNER_INPUT_S, *PKSPROPERTY_TUNER_INPUT_S; + +typedef struct { + KSPROPERTY Property; + ULONG CurrentFrequency; // Hz + ULONG PLLOffset; // if Strategy.KS_TUNER_STRATEGY_PLL + ULONG SignalStrength; // if Stretegy.KS_TUNER_STRATEGY_SIGNAL_STRENGTH + ULONG Busy; // TRUE if in the process of tuning +} KSPROPERTY_TUNER_STATUS_S, *PKSPROPERTY_TUNER_STATUS_S; + +#define STATIC_EVENTSETID_TUNER\ + 0x6a2e0606L, 0x28e4, 0x11d0, 0xa1, 0x8c, 0x00, 0xa0, 0xc9, 0x11, 0x89, 0x56 +DEFINE_GUIDSTRUCT("6a2e0606-28e4-11d0-a18c-00a0c9118956", EVENTSETID_TUNER); +#define EVENTSETID_TUNER DEFINE_GUIDNAMED(EVENTSETID_TUNER) + +typedef enum { + KSEVENT_TUNER_CHANGED +} KSEVENT_TUNER; + + +//=========================================================================== + +// USB Video Class Definitions + +#define STATIC_KSNODETYPE_VIDEO_STREAMING \ + 0xDFF229E1L, 0xF70F, 0x11D0, 0xB9, 0x17, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 +DEFINE_GUIDSTRUCT("DFF229E1-F70F-11D0-B917-00A0C9223196", KSNODETYPE_VIDEO_STREAMING); +#define KSNODETYPE_VIDEO_STREAMING DEFINE_GUIDNAMED(KSNODETYPE_VIDEO_STREAMING) + +#define STATIC_KSNODETYPE_VIDEO_INPUT_TERMINAL \ + 0xDFF229E2L, 0xF70F, 0x11D0, 0xB9, 0x17, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 +DEFINE_GUIDSTRUCT("DFF229E2-F70F-11D0-B917-00A0C9223196", KSNODETYPE_VIDEO_INPUT_TERMINAL); +#define KSNODETYPE_VIDEO_INPUT_TERMINAL DEFINE_GUIDNAMED(KSNODETYPE_VIDEO_INPUT_TERMINAL) + +#define STATIC_KSNODETYPE_VIDEO_OUTPUT_TERMINAL \ + 0xDFF229E3L, 0xF70F, 0x11D0, 0xB9, 0x17, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 +DEFINE_GUIDSTRUCT("DFF229E3-F70F-11D0-B917-00A0C9223196", KSNODETYPE_VIDEO_OUTPUT_TERMINAL); +#define KSNODETYPE_VIDEO_OUTPUT_TERMINAL DEFINE_GUIDNAMED(KSNODETYPE_VIDEO_OUTPUT_TERMINAL) + +#define STATIC_KSNODETYPE_VIDEO_SELECTOR \ + 0xDFF229E4L, 0xF70F, 0x11D0, 0xB9, 0x17, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 +DEFINE_GUIDSTRUCT("DFF229E4-F70F-11D0-B917-00A0C9223196", KSNODETYPE_VIDEO_SELECTOR); +#define KSNODETYPE_VIDEO_SELECTOR DEFINE_GUIDNAMED(KSNODETYPE_VIDEO_SELECTOR) + +#define STATIC_KSNODETYPE_VIDEO_PROCESSING \ + 0xDFF229E5L, 0xF70F, 0x11D0, 0xB9, 0x17, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 +DEFINE_GUIDSTRUCT("DFF229E5-F70F-11D0-B917-00A0C9223196", KSNODETYPE_VIDEO_PROCESSING); +#define KSNODETYPE_VIDEO_PROCESSING DEFINE_GUIDNAMED(KSNODETYPE_VIDEO_PROCESSING) + +#define STATIC_KSNODETYPE_VIDEO_CAMERA_TERMINAL \ + 0xDFF229E6L, 0xF70F, 0x11D0, 0xB9, 0x17, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 +DEFINE_GUIDSTRUCT("DFF229E6-F70F-11D0-B917-00A0C9223196", KSNODETYPE_VIDEO_CAMERA_TERMINAL); +#define KSNODETYPE_VIDEO_CAMERA_TERMINAL DEFINE_GUIDNAMED(KSNODETYPE_VIDEO_CAMERA_TERMINAL) + +#define STATIC_KSNODETYPE_VIDEO_INPUT_MTT \ + 0xDFF229E7L, 0xF70F, 0x11D0, 0xB9, 0x17, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 +DEFINE_GUIDSTRUCT("DFF229E7-F70F-11D0-B917-00A0C9223196", KSNODETYPE_VIDEO_INPUT_MTT); +#define KSNODETYPE_VIDEO_INPUT_MTT DEFINE_GUIDNAMED(KSNODETYPE_VIDEO_INPUT_MTT) + +#define STATIC_KSNODETYPE_VIDEO_OUTPUT_MTT \ + 0xDFF229E8L, 0xF70F, 0x11D0, 0xB9, 0x17, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 +DEFINE_GUIDSTRUCT("DFF229E8-F70F-11D0-B917-00A0C9223196", KSNODETYPE_VIDEO_OUTPUT_MTT); +#define KSNODETYPE_VIDEO_OUTPUT_MTT DEFINE_GUIDNAMED(KSNODETYPE_VIDEO_OUTPUT_MTT) + +//=========================================================================== + + +#define STATIC_PROPSETID_VIDCAP_VIDEOENCODER\ + 0x6a2e0610L, 0x28e4, 0x11d0, 0xa1, 0x8c, 0x00, 0xa0, 0xc9, 0x11, 0x89, 0x56 +DEFINE_GUIDSTRUCT("6a2e0610-28e4-11d0-a18c-00a0c9118956", PROPSETID_VIDCAP_VIDEOENCODER); +#define PROPSETID_VIDCAP_VIDEOENCODER DEFINE_GUIDNAMED(PROPSETID_VIDCAP_VIDEOENCODER) + +typedef enum { + KSPROPERTY_VIDEOENCODER_CAPS, // R + KSPROPERTY_VIDEOENCODER_STANDARD, // RW + KSPROPERTY_VIDEOENCODER_COPYPROTECTION, // RW O + KSPROPERTY_VIDEOENCODER_CC_ENABLE, // RW O +} KSPROPERTY_VIDCAP_VIDEOENCODER; + +typedef struct { + KSPROPERTY Property; + LONG Value; // value to get or set + ULONG Flags; // + ULONG Capabilities; // +} KSPROPERTY_VIDEOENCODER_S, *PKSPROPERTY_VIDEOENCODER_S; + +//=========================================================================== + +#define STATIC_PROPSETID_VIDCAP_VIDEODECODER\ + 0xC6E13350L, 0x30AC, 0x11d0, 0xA1, 0x8C, 0x00, 0xA0, 0xC9, 0x11, 0x89, 0x56 +DEFINE_GUIDSTRUCT("C6E13350-30AC-11d0-A18C-00A0C9118956", PROPSETID_VIDCAP_VIDEODECODER); +#define PROPSETID_VIDCAP_VIDEODECODER DEFINE_GUIDNAMED(PROPSETID_VIDCAP_VIDEODECODER) + +typedef enum { + KSPROPERTY_VIDEODECODER_CAPS, // R + KSPROPERTY_VIDEODECODER_STANDARD, // RW + KSPROPERTY_VIDEODECODER_STATUS, // R + KSPROPERTY_VIDEODECODER_OUTPUT_ENABLE, // Rw O + KSPROPERTY_VIDEODECODER_VCR_TIMING, // RW O +} KSPROPERTY_VIDCAP_VIDEODECODER; + +typedef enum { + KS_VIDEODECODER_FLAGS_CAN_DISABLE_OUTPUT = 0X0001, // VP Output can tri-stae + KS_VIDEODECODER_FLAGS_CAN_USE_VCR_LOCKING = 0X0002, // VCR PLL timings + KS_VIDEODECODER_FLAGS_CAN_INDICATE_LOCKED = 0X0004, // Can indicate valid signal +}KS_VIDEODECODER_FLAGS; + +typedef struct { + KSPROPERTY Property; + ULONG StandardsSupported; // KS_AnalogVideo_* + ULONG Capabilities; // KS_VIDEODECODER_FLAGS_* + ULONG SettlingTime; // milliseconds + ULONG HSyncPerVSync; // Number of HSync Pulses per VSync +} KSPROPERTY_VIDEODECODER_CAPS_S, *PKSPROPERTY_VIDEODECODER_CAPS_S; + +typedef struct { + KSPROPERTY Property; + ULONG NumberOfLines; // 525 or 625 lines detected + ULONG SignalLocked; // TRUE if signal is locked +} KSPROPERTY_VIDEODECODER_STATUS_S, *PKSPROPERTY_VIDEODECODER_STATUS_S; + +typedef struct { + KSPROPERTY Property; + ULONG Value; // Get or set a value +} KSPROPERTY_VIDEODECODER_S, *PKSPROPERTY_VIDEODECODER_S; + +#define STATIC_EVENTSETID_VIDEODECODER\ + 0x6a2e0621L, 0x28e4, 0x11d0, 0xa1, 0x8c, 0x00, 0xa0, 0xc9, 0x11, 0x89, 0x56 +DEFINE_GUIDSTRUCT("6a2e0621-28e4-11d0-a18c-00a0c9118956", EVENTSETID_VIDEODECODER); +#define EVENTSETID_VIDEODECODER DEFINE_GUIDNAMED(EVENTSETID_VIDEODECODER) + +typedef enum { + KSEVENT_VIDEODECODER_CHANGED +} KSEVENT_VIDEODECODER; + +//=========================================================================== + +#define STATIC_PROPSETID_VIDCAP_CAMERACONTROL\ + 0xC6E13370L, 0x30AC, 0x11d0, 0xa1, 0x8C, 0x00, 0xA0, 0xC9, 0x11, 0x89, 0x56 +DEFINE_GUIDSTRUCT("C6E13370-30AC-11d0-A18C-00A0C9118956", PROPSETID_VIDCAP_CAMERACONTROL); +#define PROPSETID_VIDCAP_CAMERACONTROL DEFINE_GUIDNAMED(PROPSETID_VIDCAP_CAMERACONTROL) + +typedef enum { + KSPROPERTY_CAMERACONTROL_PAN, // RW O + KSPROPERTY_CAMERACONTROL_TILT, // RW O + KSPROPERTY_CAMERACONTROL_ROLL, // RW O + KSPROPERTY_CAMERACONTROL_ZOOM, // RW O + KSPROPERTY_CAMERACONTROL_EXPOSURE, // RW O + KSPROPERTY_CAMERACONTROL_IRIS, // RW O + KSPROPERTY_CAMERACONTROL_FOCUS, // RW O + KSPROPERTY_CAMERACONTROL_SCANMODE, // RW O + KSPROPERTY_CAMERACONTROL_PRIVACY, // RW O + KSPROPERTY_CAMERACONTROL_PANTILT, // RW O + KSPROPERTY_CAMERACONTROL_PAN_RELATIVE, // RW O + KSPROPERTY_CAMERACONTROL_TILT_RELATIVE, // RW O + KSPROPERTY_CAMERACONTROL_ROLL_RELATIVE, // RW O + KSPROPERTY_CAMERACONTROL_ZOOM_RELATIVE, // RW O + KSPROPERTY_CAMERACONTROL_EXPOSURE_RELATIVE, // RW O + KSPROPERTY_CAMERACONTROL_IRIS_RELATIVE, // RW O + KSPROPERTY_CAMERACONTROL_FOCUS_RELATIVE, // RW O + KSPROPERTY_CAMERACONTROL_PANTILT_RELATIVE, // RW O + KSPROPERTY_CAMERACONTROL_FOCAL_LENGTH // R O +} KSPROPERTY_VIDCAP_CAMERACONTROL; + +typedef struct { + KSPROPERTY Property; + LONG Value; // value to get or set + ULONG Flags; // KSPROPERTY_CAMERACONTROL_FLAGS_* + ULONG Capabilities; // KSPROPERTY_CAMERACONTROL_FLAGS_* +} KSPROPERTY_CAMERACONTROL_S, *PKSPROPERTY_CAMERACONTROL_S; + +typedef struct { + KSP_NODE NodeProperty; + LONG Value; // value to get or set + ULONG Flags; // KSPROPERTY_CAMERACONTROL_FLAGS_* + ULONG Capabilities; // KSPROPERTY_CAMERACONTROL_FLAGS_* +} KSPROPERTY_CAMERACONTROL_NODE_S, PKSPROPERTY_CAMERACONTROL_NODE_S; + +typedef struct { + KSPROPERTY Property; + LONG Value1; + ULONG Flags; + ULONG Capabilities; + LONG Value2; +} KSPROPERTY_CAMERACONTROL_S2, *PKSPROPERTY_CAMERACONTROL_S2; + +typedef struct { + KSP_NODE NodeProperty; + LONG Value1; + ULONG Flags; + ULONG Capabilities; + LONG Value2; +} KSPROPERTY_CAMERACONTROL_NODE_S2, *PKSPROPERTY_CAMERACONTROL_NODE_S2; + +typedef struct { + KSPROPERTY Property; + LONG lOcularFocalLength; + LONG lObjectiveFocalLengthMin; + LONG lObjectiveFocalLengthMax; +} KSPROPERTY_CAMERACONTROL_FOCAL_LENGTH_S, *PKSPROPERTY_CAMERACONTROL_FOCAL_LENGTH_S; + +typedef struct { + KSNODEPROPERTY NodeProperty; + LONG lOcularFocalLength; + LONG lObjectiveFocalLengthMin; + LONG lObjectiveFocalLengthMax; +} KSPROPERTY_CAMERACONTROL_NODE_FOCAL_LENGTH_S, *PKSPROPERTY_CAMERACONTROL_NODE_FOCAL_LENGTH_S; + +#define KSPROPERTY_CAMERACONTROL_FLAGS_AUTO 0X0001L +#define KSPROPERTY_CAMERACONTROL_FLAGS_MANUAL 0X0002L + +#define KSPROPERTY_CAMERACONTROL_FLAGS_ABSOLUTE 0X0000L +#define KSPROPERTY_CAMERACONTROL_FLAGS_RELATIVE 0X0010L + +#ifndef __EDevCtrl__ +#define __EDevCtrl__ +//=========================================================================== + +#define STATIC_PROPSETID_EXT_DEVICE\ + 0xB5730A90L, 0x1A2C, 0x11cf, 0x8c, 0x23, 0x00, 0xAA, 0x00, 0x6B, 0x68, 0x14 +DEFINE_GUIDSTRUCT("B5730A90-1A2C-11cf-8C23-00AA006B6814", PROPSETID_EXT_DEVICE); +#define PROPSETID_EXT_DEVICE DEFINE_GUIDNAMED(PROPSETID_EXT_DEVICE) + +typedef enum { + KSPROPERTY_EXTDEVICE_ID, // R + KSPROPERTY_EXTDEVICE_VERSION, // R + KSPROPERTY_EXTDEVICE_POWER_STATE, // RW + KSPROPERTY_EXTDEVICE_PORT, // R + KSPROPERTY_EXTDEVICE_CAPABILITIES, // R +} KSPROPERTY_EXTDEVICE; + +typedef struct tagDEVCAPS{ + LONG CanRecord; + LONG CanRecordStrobe; + LONG HasAudio; + LONG HasVideo; + LONG UsesFiles; + LONG CanSave; + LONG DeviceType; + LONG TCRead; + LONG TCWrite; + LONG CTLRead; + LONG IndexRead; + LONG Preroll; + LONG Postroll; + LONG SyncAcc; + LONG NormRate; + LONG CanPreview; + LONG CanMonitorSrc; + LONG CanTest; + LONG VideoIn; + LONG AudioIn; + LONG Calibrate; + LONG SeekType; + LONG SimulatedHardware; +} DEVCAPS, *PDEVCAPS; + +typedef struct { + KSPROPERTY Property; + union { + DEVCAPS Capabilities; // Device capabilities + ULONG DevPort; // 1394, USB, etc. + ULONG PowerState; // On, standby or off + WCHAR pawchString[MAX_PATH]; // Version + DWORD NodeUniqueID[2]; // Unique NodeID + } u; +} KSPROPERTY_EXTDEVICE_S, *PKSPROPERTY_EXTDEVICE_S; + +//=========================================================================== + +#define STATIC_PROPSETID_EXT_TRANSPORT\ + 0xA03CD5F0L, 0x3045, 0x11cf, 0x8c, 0x44, 0x00, 0xAA, 0x00, 0x6B, 0x68, 0x14 +DEFINE_GUIDSTRUCT("A03CD5F0-3045-11cf-8C44-00AA006B6814", PROPSETID_EXT_TRANSPORT); +#define PROPSETID_EXT_TRANSPORT DEFINE_GUIDNAMED(PROPSETID_EXT_TRANSPORT) + +typedef enum { + KSPROPERTY_EXTXPORT_CAPABILITIES, // (R) Transport specific capability + KSPROPERTY_EXTXPORT_INPUT_SIGNAL_MODE, // (RW) Input signal: e.g. dvsd/NTSC/PAL, dvsl/NTSC/PAL, MPEG2-TS etc + KSPROPERTY_EXTXPORT_OUTPUT_SIGNAL_MODE, // (RW) Output signal: e.g. dvsd/NTSC/PAL, dvsl/NTSC/PAL, MPEG2-TS etc + KSPROPERTY_EXTXPORT_LOAD_MEDIUM, // (RW) Eject, open tray, close tray + KSPROPERTY_EXTXPORT_MEDIUM_INFO, // (R) Cassettte type, tape grade and write protection + KSPROPERTY_EXTXPORT_STATE, // (RW) Current transport mode and state + KSPROPERTY_EXTXPORT_STATE_NOTIFY, // (RW) Notify of transport mode and state change + KSPROPERTY_EXTXPORT_TIMECODE_SEARCH, // (W) Search to a specific timecode on a tape + KSPROPERTY_EXTXPORT_ATN_SEARCH, // (W) Search to a specific absolute track number (ATN) on a tape + KSPROPERTY_EXTXPORT_RTC_SEARCH, // (W) Search to a specific relative time counter (RTC) on a tape + KSPROPERTY_RAW_AVC_CMD, // (RW) Issue a raw AVC commnad +} KSPROPERTY_EXTXPORT; + +typedef struct tagTRANSPORTSTATUS{ + LONG Mode; + LONG LastError; + LONG RecordInhibit; + LONG ServoLock; + LONG MediaPresent; + LONG MediaLength; + LONG MediaSize; + LONG MediaTrackCount; + LONG MediaTrackLength; + LONG MediaTrackSide; + LONG MediaType; + LONG LinkMode; + LONG NotifyOn; +} TRANSPORTSTATUS, *PTRANSPORTSTATUS; + +typedef struct tagTRANSPORTBASICPARMS{ + LONG TimeFormat; + LONG TimeReference; + LONG Superimpose; + LONG EndStopAction; + LONG RecordFormat; + LONG StepFrames; + LONG SetpField; + LONG Preroll; + LONG RecPreroll; + LONG Postroll; + LONG EditDelay; + LONG PlayTCDelay; + LONG RecTCDelay; + LONG EditField; + LONG FrameServo; + LONG ColorFrameServo; + LONG ServoRef; + LONG WarnGenlock; + LONG SetTracking; + TCHAR VolumeName[40]; + LONG Ballistic[20]; + LONG Speed; + LONG CounterFormat; + LONG TunerChannel; + LONG TunerNumber; + LONG TimerEvent; + LONG TimerStartDay; + LONG TimerStartTime; + LONG TimerStopDay; + LONG TimerStopTime; +} TRANSPORTBASICPARMS, *PTRANSPORTBASICPARMS; + +typedef struct tagTRANSPORTVIDEOPARMS{ + LONG OutputMode; + LONG Input; +} TRANSPORTVIDEOPARMS, *PTRANSPORTVIDEOPARMS; + +typedef struct tagTRANSPORTAUDIOPARMS{ + LONG EnableOutput; + LONG EnableRecord; + LONG EnableSelsync; + LONG Input; + LONG MonitorSource; +} TRANSPORTAUDIOPARMS, *PTRANSPORTAUDIOPARMS; + +typedef struct { + BOOL MediaPresent; + ULONG MediaType; + BOOL RecordInhibit; +} MEDIUM_INFO, *PMEDIUM_INFO; + +typedef struct { + ULONG Mode; + ULONG State; +} TRANSPORT_STATE, *PTRANSPORT_STATE; + +typedef struct { + KSPROPERTY Property; + union { + ULONG Capabilities; + ULONG SignalMode; + ULONG LoadMedium; + MEDIUM_INFO MediumInfo; + TRANSPORT_STATE XPrtState; + struct { + BYTE frame; + BYTE second; + BYTE minute; + BYTE hour; + } Timecode; + DWORD dwTimecode; + DWORD dwAbsTrackNumber; + struct { + ULONG PayloadSize; + BYTE Payload[512]; + } RawAVC; + } u; + +} KSPROPERTY_EXTXPORT_S, *PKSPROPERTY_EXTXPORT_S; + +typedef struct { + KSP_NODE NodeProperty; + union { + ULONG Capabilities; + ULONG SignalMode; + ULONG LoadMedium; + MEDIUM_INFO MediumInfo; + TRANSPORT_STATE XPrtState; + struct { + BYTE frame; + BYTE second; + BYTE minute; + BYTE hour; + } Timecode; + DWORD dwTimecode; + DWORD dwAbsTrackNumber; + struct { + ULONG PayloadSize; + BYTE Payload[512]; + } RawAVC; + } u; + +} KSPROPERTY_EXTXPORT_NODE_S, *PKSPROPERTY_EXTXPORT_NODE_S; + +//=========================================================================== + +#define STATIC_PROPSETID_TIMECODE_READER\ + 0x9B496CE1L, 0x811B, 0x11cf, 0x8C, 0x77, 0x00, 0xAA, 0x00, 0x6B, 0x68, 0x14 +DEFINE_GUIDSTRUCT("9B496CE1-811B-11cf-8C77-00AA006B6814", PROPSETID_TIMECODE_READER); +#define PROPSETID_TIMECODE_READER DEFINE_GUIDNAMED(PROPSETID_TIMECODE_READER) + +typedef enum { + KSPROPERTY_TIMECODE_READER, // (R) Timecode for the current tape position + KSPROPERTY_ATN_READER, // (R) Absolute track number for the current tape position + KSPROPERTY_RTC_READER, // (R) Relative time counter for the current tape position +} KSPROPERTY_TIMECODE; + +#ifndef TIMECODE_DEFINED +#define TIMECODE_DEFINED +typedef union _timecode { + struct { + WORD wFrameRate; + WORD wFrameFract; + DWORD dwFrames; + }; + DWORDLONG qw; +} TIMECODE; +typedef TIMECODE *PTIMECODE; + +typedef struct tagTIMECODE_SAMPLE { + LONGLONG qwTick; + TIMECODE timecode; + DWORD dwUser; + DWORD dwFlags; +} TIMECODE_SAMPLE; + +typedef TIMECODE_SAMPLE *PTIMECODE_SAMPLE; + +#endif /* TIMECODE_DEFINED */ + +typedef struct { + KSPROPERTY Property; + TIMECODE_SAMPLE TimecodeSamp; +} KSPROPERTY_TIMECODE_S, *PKSPROPERTY_TIMECODE_S; + +typedef struct { + KSP_NODE NodeProperty; + TIMECODE_SAMPLE TimecodeSamp; +} KSPROPERTY_TIMECODE_NODE_S, *PKSPROPERTY_TIMECODE_NODE_S; + +//=========================================================================== + +#define STATIC_KSEVENTSETID_EXTDEV_Command\ + 0x109c7988L, 0xb3cb, 0x11d2, 0xb4, 0x8e, 0x00, 0x60, 0x97, 0xb3, 0x39, 0x1b +DEFINE_GUIDSTRUCT("109c7988-b3cb-11d2-b48e-006097b3391b", KSEVENTSETID_EXTDEV_Command); +#define KSEVENTSETID_EXTDEV_Command DEFINE_GUIDNAMED(KSEVENTSETID_EXTDEV_Command) + +typedef enum { + KSEVENT_EXTDEV_COMMAND_NOTIFY_INTERIM_READY, // Final response is ready for notify command + KSEVENT_EXTDEV_COMMAND_CONTROL_INTERIM_READY, // Final response is ready for control command. + KSEVENT_EXTDEV_COMMAND_BUSRESET, // A bus reset has occured. + KSEVENT_EXTDEV_TIMECODE_UPDATE, // Timecode has changed. + KSEVENT_EXTDEV_OPERATION_MODE_UPDATE, // Operting mode (VCR,Camera, etc.) has changed. + KSEVENT_EXTDEV_TRANSPORT_STATE_UPDATE, // Transport state has changed. + KSEVENT_EXTDEV_NOTIFY_REMOVAL, // Device was surprise removal. + KSEVENT_EXTDEV_NOTIFY_MEDIUM_CHANGE, // Tape medium is removed or added. +} KSEVENT_DEVCMD; + +#endif // __EDevCtrl__ + + +//=========================================================================== + + +#define STATIC_PROPSETID_VIDCAP_CROSSBAR\ + 0x6a2e0640L, 0x28e4, 0x11d0, 0xa1, 0x8c, 0x00, 0xa0, 0xc9, 0x11, 0x89, 0x56 +DEFINE_GUIDSTRUCT("6a2e0640-28e4-11d0-a18c-00a0c9118956", PROPSETID_VIDCAP_CROSSBAR); +#define PROPSETID_VIDCAP_CROSSBAR DEFINE_GUIDNAMED(PROPSETID_VIDCAP_CROSSBAR) + +typedef enum { + KSPROPERTY_CROSSBAR_CAPS, // R + KSPROPERTY_CROSSBAR_PININFO, // R + KSPROPERTY_CROSSBAR_CAN_ROUTE, // R + KSPROPERTY_CROSSBAR_ROUTE, // RW +} KSPROPERTY_VIDCAP_CROSSBAR; + +typedef struct { + KSPROPERTY Property; + ULONG NumberOfInputs; // the number of audio and video input pins + ULONG NumberOfOutputs; // the number of audio and video output pins +} KSPROPERTY_CROSSBAR_CAPS_S, *PKSPROPERTY_CROSSBAR_CAPS_S; + +typedef struct { + KSPROPERTY Property; + KSPIN_DATAFLOW Direction; // KSPIN_DATAFLOW_IN or KSPIN_DATAFLOW_OUT? + ULONG Index; // Which pin to return data for? + ULONG PinType; // KS_PhysConn_Video_* or KS_PhysConn_Audio_* + ULONG RelatedPinIndex; // For video pins, this is the related audio pin + KSPIN_MEDIUM Medium; // Identifies the hardware connection +} KSPROPERTY_CROSSBAR_PININFO_S, *PKSPROPERTY_CROSSBAR_PININFO_S; + +typedef struct { + KSPROPERTY Property; + ULONG IndexInputPin; // Zero based index of the input pin + ULONG IndexOutputPin; // Zero based index of the output pin + ULONG CanRoute; // returns non-zero on CAN_ROUTE if routing is possible +} KSPROPERTY_CROSSBAR_ROUTE_S, *PKSPROPERTY_CROSSBAR_ROUTE_S; + +#define STATIC_EVENTSETID_CROSSBAR\ + 0x6a2e0641L, 0x28e4, 0x11d0, 0xa1, 0x8c, 0x00, 0xa0, 0xc9, 0x11, 0x89, 0x56 +DEFINE_GUIDSTRUCT("6a2e0641-28e4-11d0-a18c-00a0c9118956", EVENTSETID_CROSSBAR); +#define EVENTSETID_CROSSBAR DEFINE_GUIDNAMED(EVENTSETID_CROSSBAR) + +typedef enum { + KSEVENT_CROSSBAR_CHANGED +} KSEVENT_CROSSBAR; + +// The following IDs should match the AM equivalents +typedef enum { + KS_PhysConn_Video_Tuner = 1, + KS_PhysConn_Video_Composite, + KS_PhysConn_Video_SVideo, + KS_PhysConn_Video_RGB, + KS_PhysConn_Video_YRYBY, + KS_PhysConn_Video_SerialDigital, + KS_PhysConn_Video_ParallelDigital, + KS_PhysConn_Video_SCSI, + KS_PhysConn_Video_AUX, + KS_PhysConn_Video_1394, + KS_PhysConn_Video_USB, + KS_PhysConn_Video_VideoDecoder, + KS_PhysConn_Video_VideoEncoder, + KS_PhysConn_Video_SCART, + + KS_PhysConn_Audio_Tuner = 4096, + KS_PhysConn_Audio_Line, + KS_PhysConn_Audio_Mic, + KS_PhysConn_Audio_AESDigital, + KS_PhysConn_Audio_SPDIFDigital, + KS_PhysConn_Audio_SCSI, + KS_PhysConn_Audio_AUX, + KS_PhysConn_Audio_1394, + KS_PhysConn_Audio_USB, + KS_PhysConn_Audio_AudioDecoder, +} KS_PhysicalConnectorType; + + +//=========================================================================== + +#define STATIC_PROPSETID_VIDCAP_TVAUDIO\ + 0x6a2e0650L, 0x28e4, 0x11d0, 0xa1, 0x8c, 0x00, 0xa0, 0xc9, 0x11, 0x89, 0x56 +DEFINE_GUIDSTRUCT("6a2e0650-28e4-11d0-a18c-00a0c9118956", PROPSETID_VIDCAP_TVAUDIO); +#define PROPSETID_VIDCAP_TVAUDIO DEFINE_GUIDNAMED(PROPSETID_VIDCAP_TVAUDIO) + +typedef enum { + KSPROPERTY_TVAUDIO_CAPS, // R + KSPROPERTY_TVAUDIO_MODE, // RW + KSPROPERTY_TVAUDIO_CURRENTLY_AVAILABLE_MODES // R +} KSPROPERTY_VIDCAP_TVAUDIO; + +#define KS_TVAUDIO_MODE_MONO 0x0001 // Mono +#define KS_TVAUDIO_MODE_STEREO 0x0002 // Stereo +#define KS_TVAUDIO_MODE_LANG_A 0x0010 // Primary language +#define KS_TVAUDIO_MODE_LANG_B 0x0020 // 2nd avail language +#define KS_TVAUDIO_MODE_LANG_C 0x0040 // 3rd avail language + +typedef struct { + KSPROPERTY Property; + ULONG Capabilities; // Bitmask of KS_TVAUDIO_MODE_* + KSPIN_MEDIUM InputMedium; + KSPIN_MEDIUM OutputMedium; +} KSPROPERTY_TVAUDIO_CAPS_S, *PKSPROPERTY_TVAUDIO_CAPS_S; + +typedef struct { + KSPROPERTY Property; + ULONG Mode; // KS_TVAUDIO_MODE_* +} KSPROPERTY_TVAUDIO_S, *PKSPROPERTY_TVAUDIO_S; + + +#define STATIC_KSEVENTSETID_VIDCAP_TVAUDIO\ + 0x6a2e0651L, 0x28e4, 0x11d0, 0xa1, 0x8c, 0x00, 0xa0, 0xc9, 0x11, 0x89, 0x56 +DEFINE_GUIDSTRUCT("6a2e0651-28e4-11d0-a18c-00a0c9118956", KSEVENTSETID_VIDCAP_TVAUDIO); +#define KSEVENTSETID_VIDCAP_TVAUDIO DEFINE_GUIDNAMED(KSEVENTSETID_VIDCAP_TVAUDIO) + +typedef enum { + KSEVENT_TVAUDIO_CHANGED, +} KSEVENT_TVAUDIO; + +//=========================================================================== +#define STATIC_PROPSETID_VIDCAP_VIDEOCOMPRESSION\ + 0xC6E13343L, 0x30AC, 0x11d0, 0xA1, 0x8C, 0x00, 0xA0, 0xC9, 0x11, 0x89, 0x56 +DEFINE_GUIDSTRUCT("C6E13343-30AC-11d0-A18C-00A0C9118956", PROPSETID_VIDCAP_VIDEOCOMPRESSION); +#define PROPSETID_VIDCAP_VIDEOCOMPRESSION DEFINE_GUIDNAMED(PROPSETID_VIDCAP_VIDEOCOMPRESSION) + +typedef enum { + KSPROPERTY_VIDEOCOMPRESSION_GETINFO, // R + KSPROPERTY_VIDEOCOMPRESSION_KEYFRAME_RATE, // RW + KSPROPERTY_VIDEOCOMPRESSION_PFRAMES_PER_KEYFRAME, // RW + KSPROPERTY_VIDEOCOMPRESSION_QUALITY, // RW + KSPROPERTY_VIDEOCOMPRESSION_OVERRIDE_KEYFRAME, // W + KSPROPERTY_VIDEOCOMPRESSION_OVERRIDE_FRAME_SIZE, // W + KSPROPERTY_VIDEOCOMPRESSION_WINDOWSIZE, // RW +} KSPROPERTY_VIDCAP_VIDEOCOMPRESSION; + +typedef enum { + KS_CompressionCaps_CanQuality = 1, + KS_CompressionCaps_CanCrunch = 2, + KS_CompressionCaps_CanKeyFrame = 4, + KS_CompressionCaps_CanBFrame = 8, + KS_CompressionCaps_CanWindow = 0x10, +} KS_CompressionCaps; + +typedef struct { + KSPROPERTY Property; + // Note, no VersionString! + // Note, no DescriptionString! + ULONG StreamIndex; // zero based index of stream + LONG DefaultKeyFrameRate; // Key frame rate + LONG DefaultPFrameRate; // Predeicted frames per Key frame + LONG DefaultQuality; // 0 to 10000 + LONG NumberOfQualitySettings; // How many discreet quality settings? + LONG Capabilities; // KS_CompressionCaps_* +} KSPROPERTY_VIDEOCOMPRESSION_GETINFO_S, *PKSPROPERTY_VIDEOCOMPRESSION_GETINFO_S; + +typedef struct { + KSPROPERTY Property; + ULONG StreamIndex; // zero based index of stream + LONG Value; // value to get or set +} KSPROPERTY_VIDEOCOMPRESSION_S, *PKSPROPERTY_VIDEOCOMPRESSION_S; + +//=========================================================================== +// MEDIASUBTYPE_Overlay +#define STATIC_KSDATAFORMAT_SUBTYPE_OVERLAY\ + 0xe436eb7fL, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70 +DEFINE_GUIDSTRUCT("e436eb7f-524f-11ce-9f53-0020af0ba770", KSDATAFORMAT_SUBTYPE_OVERLAY); +#define KSDATAFORMAT_SUBTYPE_OVERLAY DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_OVERLAY) + +#define STATIC_KSPROPSETID_OverlayUpdate\ + 0x490EA5CFL, 0x7681, 0x11D1, 0xA2, 0x1C, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 +DEFINE_GUIDSTRUCT("490EA5CF-7681-11D1-A21C-00A0C9223196", KSPROPSETID_OverlayUpdate); +#define KSPROPSETID_OverlayUpdate DEFINE_GUIDNAMED(KSPROPSETID_OverlayUpdate) + +typedef enum { + KSPROPERTY_OVERLAYUPDATE_INTERESTS, + KSPROPERTY_OVERLAYUPDATE_CLIPLIST = 0x1, + KSPROPERTY_OVERLAYUPDATE_PALETTE = 0x2, + KSPROPERTY_OVERLAYUPDATE_COLORKEY = 0x4, + KSPROPERTY_OVERLAYUPDATE_VIDEOPOSITION = 0x8, + KSPROPERTY_OVERLAYUPDATE_DISPLAYCHANGE = 0x10, + KSPROPERTY_OVERLAYUPDATE_COLORREF = 0x10000000 +} KSPROPERTY_OVERLAYUPDATE; + +typedef struct { + ULONG PelsWidth; + ULONG PelsHeight; + ULONG BitsPerPel; + WCHAR DeviceID[1]; +} KSDISPLAYCHANGE, *PKSDISPLAYCHANGE; + +#define DEFINE_KSPROPERTY_ITEM_OVERLAYUPDATE_INTERESTS(Handler)\ + DEFINE_KSPROPERTY_ITEM(\ + KSPROPERTY_OVERLAYUPDATE_INTERESTS,\ + (Handler),\ + sizeof(KSPROPERTY),\ + sizeof(ULONG),\ + NULL, NULL, 0, NULL, NULL, 0) + +#define DEFINE_KSPROPERTY_ITEM_OVERLAYUPDATE_PALETTE(Handler)\ + DEFINE_KSPROPERTY_ITEM(\ + KSPROPERTY_OVERLAYUPDATE_PALETTE,\ + NULL,\ + sizeof(KSPROPERTY),\ + 0,\ + (Handler),\ + NULL, 0, NULL, NULL, 0) + +#define DEFINE_KSPROPERTY_ITEM_OVERLAYUPDATE_COLORKEY(Handler)\ + DEFINE_KSPROPERTY_ITEM(\ + KSPROPERTY_OVERLAYUPDATE_COLORKEY,\ + NULL,\ + sizeof(KSPROPERTY),\ + sizeof(COLORKEY),\ + (Handler),\ + NULL, 0, NULL, NULL, 0) + +#define DEFINE_KSPROPERTY_ITEM_OVERLAYUPDATE_CLIPLIST(Handler)\ + DEFINE_KSPROPERTY_ITEM(\ + KSPROPERTY_OVERLAYUPDATE_CLIPLIST,\ + NULL,\ + sizeof(KSPROPERTY),\ + 2 * sizeof(RECT) + sizeof(RGNDATAHEADER),\ + (Handler),\ + NULL, 0, NULL, NULL, 0) + +#define DEFINE_KSPROPERTY_ITEM_OVERLAYUPDATE_VIDEOPOSITION(Handler)\ + DEFINE_KSPROPERTY_ITEM(\ + KSPROPERTY_OVERLAYUPDATE_VIDEOPOSITION,\ + NULL,\ + sizeof(KSPROPERTY),\ + 2 * sizeof(RECT),\ + (Handler),\ + NULL, 0, NULL, NULL, 0) + +#define DEFINE_KSPROPERTY_ITEM_OVERLAYUPDATE_DISPLAYCHANGE(Handler)\ + DEFINE_KSPROPERTY_ITEM(\ + KSPROPERTY_OVERLAYUPDATE_DISPLAYCHANGE,\ + NULL,\ + sizeof(KSPROPERTY),\ + sizeof(KSDISPLAYCHANGE),\ + (Handler),\ + NULL, 0, NULL, NULL, 0) + +#define DEFINE_KSPROPERTY_ITEM_OVERLAYUPDATE_COLORREF(Handler)\ + DEFINE_KSPROPERTY_ITEM(\ + KSPROPERTY_OVERLAYUPDATE_COLORREF,\ + (Handler),\ + sizeof(KSPROPERTY),\ + sizeof(COLORREF),\ + NULL,\ + NULL, 0, NULL, NULL, 0) + +//=========================================================================== +#define STATIC_PROPSETID_VIDCAP_VIDEOCONTROL\ + 0x6a2e0670L, 0x28e4, 0x11d0, 0xa1, 0x8c, 0x00, 0xa0, 0xc9, 0x11, 0x89, 0x56 +DEFINE_GUIDSTRUCT("6a2e0670-28e4-11d0-a18c-00a0c9118956", PROPSETID_VIDCAP_VIDEOCONTROL); +#define PROPSETID_VIDCAP_VIDEOCONTROL DEFINE_GUIDNAMED(PROPSETID_VIDCAP_VIDEOCONTROL) + +typedef enum { + KSPROPERTY_VIDEOCONTROL_CAPS, // R + KSPROPERTY_VIDEOCONTROL_ACTUAL_FRAME_RATE, // R O + KSPROPERTY_VIDEOCONTROL_FRAME_RATES, // R O + KSPROPERTY_VIDEOCONTROL_MODE, // RWO +} KSPROPERTY_VIDCAP_VIDEOCONTROL; + +typedef enum { + KS_VideoControlFlag_FlipHorizontal = 0x0001, + KS_VideoControlFlag_FlipVertical = 0x0002, + KS_Obsolete_VideoControlFlag_ExternalTriggerEnable = 0x0010, // ***WARNING *** Flag msimatch with DSHOW. + KS_Obsolete_VideoControlFlag_Trigger = 0x0020, // ***WARNING *** Flag msimatch with DSHOW. + KS_VideoControlFlag_ExternalTriggerEnable = 0x0004, + KS_VideoControlFlag_Trigger = 0x0008, +} KS_VideoControlFlags; + +typedef struct { + KSPROPERTY Property; + ULONG StreamIndex; + ULONG VideoControlCaps; // KS_VideoControlFlags_* +} KSPROPERTY_VIDEOCONTROL_CAPS_S, *PKSPROPERTY_VIDEOCONTROL_CAPS_S; + +typedef struct { + KSPROPERTY Property; + ULONG StreamIndex; + LONG Mode; // KS_VideoControlFlags_* +} KSPROPERTY_VIDEOCONTROL_MODE_S, *PKSPROPERTY_VIDEOCONTROL_MODE_S; + +typedef struct { + KSPROPERTY Property; + ULONG StreamIndex; // Index of stream + ULONG RangeIndex; // Index of range + SIZE Dimensions; // Size of image + LONGLONG CurrentActualFrameRate; // Only correct if pin is open + LONGLONG CurrentMaxAvailableFrameRate; // Max Rate temporarily limited on USB or 1394? +} KSPROPERTY_VIDEOCONTROL_ACTUAL_FRAME_RATE_S, *PKSPROPERTY_VIDEOCONTROL_ACTUAL_FRAME_RATE_S; + +// KSPROPERTY_VIDEOCONTROL_FRAME_RATES returns a list of available frame rates in 100 nS units +typedef struct { + KSPROPERTY Property; + ULONG StreamIndex; // Index of stream + ULONG RangeIndex; // Index of range + SIZE Dimensions; // Size of image +} KSPROPERTY_VIDEOCONTROL_FRAME_RATES_S, *PKSPROPERTY_VIDEOCONTROL_FRAME_RATES_S; + +//=========================================================================== +#define STATIC_PROPSETID_VIDCAP_DROPPEDFRAMES\ + 0xC6E13344L, 0x30AC, 0x11d0, 0xa1, 0x8c, 0x00, 0xa0, 0xc9, 0x11, 0x89, 0x56 +DEFINE_GUIDSTRUCT("C6E13344-30AC-11d0-A18C-00A0C9118956", PROPSETID_VIDCAP_DROPPEDFRAMES); +#define PROPSETID_VIDCAP_DROPPEDFRAMES DEFINE_GUIDNAMED(PROPSETID_VIDCAP_DROPPEDFRAMES) + +typedef enum { + KSPROPERTY_DROPPEDFRAMES_CURRENT // R +} KSPROPERTY_VIDCAP_DROPPEDFRAMES; + +typedef struct { + KSPROPERTY Property; + LONGLONG PictureNumber; // Current Picture Number + LONGLONG DropCount; // Count of frames dropped + ULONG AverageFrameSize; // Average size of frames captured +} KSPROPERTY_DROPPEDFRAMES_CURRENT_S, *PKSPROPERTY_DROPPEDFRAMES_CURRENT_S; + +//=========================================================================== +// VPE + +#define STATIC_KSPROPSETID_VPConfig\ + 0xbc29a660L, 0x30e3, 0x11d0, 0x9e, 0x69, 0x00, 0xc0, 0x4f, 0xd7, 0xc1, 0x5b +DEFINE_GUIDSTRUCT("bc29a660-30e3-11d0-9e69-00c04fd7c15b", KSPROPSETID_VPConfig); +#define KSPROPSETID_VPConfig DEFINE_GUIDNAMED(KSPROPSETID_VPConfig) + +#define STATIC_KSPROPSETID_VPVBIConfig\ + 0xec529b00L, 0x1a1f, 0x11d1, 0xba, 0xd9, 0x0, 0x60, 0x97, 0x44, 0x11, 0x1a +DEFINE_GUIDSTRUCT("ec529b00-1a1f-11d1-bad9-00609744111a", KSPROPSETID_VPVBIConfig); +#define KSPROPSETID_VPVBIConfig DEFINE_GUIDNAMED(KSPROPSETID_VPVBIConfig) + +// Both of the above property sets use the same list of properties below + +typedef enum { + KSPROPERTY_VPCONFIG_NUMCONNECTINFO, + KSPROPERTY_VPCONFIG_GETCONNECTINFO, + KSPROPERTY_VPCONFIG_SETCONNECTINFO, + KSPROPERTY_VPCONFIG_VPDATAINFO, + KSPROPERTY_VPCONFIG_MAXPIXELRATE, + KSPROPERTY_VPCONFIG_INFORMVPINPUT, + KSPROPERTY_VPCONFIG_NUMVIDEOFORMAT, + KSPROPERTY_VPCONFIG_GETVIDEOFORMAT, + KSPROPERTY_VPCONFIG_SETVIDEOFORMAT, + KSPROPERTY_VPCONFIG_INVERTPOLARITY, + KSPROPERTY_VPCONFIG_DECIMATIONCAPABILITY, // E_NOTIMPL for VBI + KSPROPERTY_VPCONFIG_SCALEFACTOR, // E_NOTIMPL for VBI + KSPROPERTY_VPCONFIG_DDRAWHANDLE, + KSPROPERTY_VPCONFIG_VIDEOPORTID, + KSPROPERTY_VPCONFIG_DDRAWSURFACEHANDLE, + KSPROPERTY_VPCONFIG_SURFACEPARAMS +} KSPROPERTY_VPCONFIG; + +//========================= +// IBasicAudio +// +#define STATIC_CLSID_KsIBasicAudioInterfaceHandler\ + 0xb9f8ac3e, 0x0f71, 0x11d2, 0xb7, 0x2c, 0x00, 0xc0, 0x4f, 0xb6, 0xbd, 0x3d +DEFINE_GUIDSTRUCT("b9f8ac3e-0f71-11d2-b72c-00c04fb6bd3d", CLSID_KsIBasicAudioInterfaceHandler); +#define CLSID_KsIBasicAudioInterfaceHandler DEFINE_GUIDNAMED(CLSID_KsIBasicAudioInterfaceHandler) + + +#if defined(__IVPType__) + +typedef struct { + AMVPSIZE Size; + DWORD MaxPixelsPerSecond; + DWORD Reserved; +} KSVPMAXPIXELRATE, *PKSVPMAXPIXELRATE; + +typedef struct { + KSPROPERTY Property; + AMVPSIZE Size; +} KSVPSIZE_PROP, *PKSVPSIZE_PROP; + +typedef struct { + DWORD dwPitch; + DWORD dwXOrigin; + DWORD dwYOrigin; +} KSVPSURFACEPARAMS, *PKSVPSURFACEPARAMS; + +#else // !defined(__IVPType__) + +#if !defined(__DDRAW_INCLUDED__) + +//========================================================================== +// The following definitions must be in sync with DDraw.h in DirectX SDK +//========================================================================== + +/* + * The FourCC code is valid. + */ +#define DDPF_FOURCC 0x00000004l + + +typedef struct _DDPIXELFORMAT +{ + DWORD dwSize; // size of structure + DWORD dwFlags; // pixel format flags + DWORD dwFourCC; // (FOURCC code) + union + { + DWORD dwRGBBitCount; // how many bits per pixel (BD_1,2,4,8,16,24,32) + DWORD dwYUVBitCount; // how many bits per pixel (BD_4,8,16,24,32) + DWORD dwZBufferBitDepth; // how many bits for z buffers (BD_8,16,24,32) + DWORD dwAlphaBitDepth; // how many bits for alpha channels (BD_1,2,4,8) + }; + union + { + DWORD dwRBitMask; // mask for red bit + DWORD dwYBitMask; // mask for Y bits + }; + union + { + DWORD dwGBitMask; // mask for green bits + DWORD dwUBitMask; // mask for U bits + }; + union + { + DWORD dwBBitMask; // mask for blue bits + DWORD dwVBitMask; // mask for V bits + }; + union + { + DWORD dwRGBAlphaBitMask; // mask for alpha channel + DWORD dwYUVAlphaBitMask; // mask for alpha channel + DWORD dwRGBZBitMask; // mask for Z channel + DWORD dwYUVZBitMask; // mask for Z channel + }; +} DDPIXELFORMAT, * LPDDPIXELFORMAT; + +#endif // !defined(__DDRAW_INCLUDED__) + +//========================================================================== +// End of DDraw.h header info +//========================================================================== + +//========================================================================== +// The following definitions must be in sync with DVP.h in DirectX SDK +//========================================================================== + +#if !defined(__DVP_INCLUDED__) + +typedef struct _DDVIDEOPORTCONNECT { + DWORD dwSize; // size of the DDVIDEOPORTCONNECT structure + DWORD dwPortWidth; // Width of the video port + GUID guidTypeID; // Description of video port connection + DWORD dwFlags; // Connection flags + DWORD dwReserved1; // Reserved, set to zero. +} DDVIDEOPORTCONNECT, * LPDDVIDEOPORTCONNECT; + +#define DDVPTYPE_E_HREFH_VREFH \ + 0x54F39980L,0xDA60,0x11CF,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8 + +#define DDVPTYPE_E_HREFL_VREFL \ + 0xE09C77E0L,0xDA60,0x11CF,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8 + +#endif // !defined(__DVP_INCLUDED__) + +//========================================================================== +// End of DVP.h header info +//========================================================================== + + +//========================================================================== +// The following definitions must be in sync with VPType.h in AM 2.0 SDK +//========================================================================== + +// pixel aspect ratios corresponding to a 720x480 NTSC image or a 720x576 image +typedef enum // AMPixAspectRatio +{ + KS_PixAspectRatio_NTSC4x3, + KS_PixAspectRatio_NTSC16x9, + KS_PixAspectRatio_PAL4x3, + KS_PixAspectRatio_PAL16x9, +} KS_AMPixAspectRatio ; + +typedef enum // AMVP_SELECTFORMATBY +{ + KS_AMVP_DO_NOT_CARE, + KS_AMVP_BEST_BANDWIDTH, + KS_AMVP_INPUT_SAME_AS_OUTPUT +} KS_AMVP_SELECTFORMATBY; + +typedef enum // AMVP_MODE +{ + KS_AMVP_MODE_WEAVE, + KS_AMVP_MODE_BOBINTERLEAVED, + KS_AMVP_MODE_BOBNONINTERLEAVED, + KS_AMVP_MODE_SKIPEVEN, + KS_AMVP_MODE_SKIPODD +} KS_AMVP_MODE ; + +typedef struct tagKS_AMVPDIMINFO // AMVPDIMINFO +{ + DWORD dwFieldWidth ; // [out] field width + DWORD dwFieldHeight ; // [out] field height + DWORD dwVBIWidth ; // [out] VBI data width + DWORD dwVBIHeight ; // [out] VBI data height + RECT rcValidRegion ; // [out] valid rect for data cropping +} KS_AMVPDIMINFO, *PKS_AMVPDIMINFO ; + +typedef struct tagKS_AMVPDATAINFO // AMVPDATAINFO +{ + DWORD dwSize; // Size of the struct + DWORD dwMicrosecondsPerField; // Time taken by each field + KS_AMVPDIMINFO amvpDimInfo; // Dimensional Information + DWORD dwPictAspectRatioX; // Pict aspect ratio in X dimn + DWORD dwPictAspectRatioY; // Pict aspect ratio in Y dimn + BOOL bEnableDoubleClock; // Videoport should enable double clocking + BOOL bEnableVACT; // Videoport should use an external VACT signal + BOOL bDataIsInterlaced; // Indicates that the signal is interlaced + LONG lHalfLinesOdd; // number of halflines in the odd field + BOOL bFieldPolarityInverted; // Device inverts the polarity by default + DWORD dwNumLinesInVREF; // Number of lines of data in VREF + LONG lHalfLinesEven; // number of halflines in the even field + DWORD dwReserved1; // Reserved for future use +} KS_AMVPDATAINFO, *PKS_AMVPDATAINFO; + +typedef struct tagKS_AMVPSIZE // AMVPSIZE +{ + DWORD dwWidth ; // [in] width in pixels + DWORD dwHeight ; // [in] height in pixels +} KS_AMVPSIZE, *PKS_AMVPSIZE ; + +//========================================================================== +// End of VPType.h header info +//========================================================================== + +typedef struct { + KS_AMVPSIZE Size; + DWORD MaxPixelsPerSecond; + DWORD Reserved; +} KSVPMAXPIXELRATE, *PKSVPMAXPIXELRATE; + +typedef struct { + KSPROPERTY Property; + KS_AMVPSIZE Size; +} KSVPSIZE_PROP, *PKSVPSIZE_PROP; + +typedef struct { + DWORD dwPitch; + DWORD dwXOrigin; + DWORD dwYOrigin; +} KSVPSURFACEPARAMS, *PKSVPSURFACEPARAMS; + +#endif // !defined(__IVPType__) + +// +// IVPNotify event notification +// +#define STATIC_KSEVENTSETID_VPNotify\ + 0x20c5598eL, 0xd3c8, 0x11d0, 0x8d, 0xfc, 0x00, 0xc0, 0x4f, 0xd7, 0xc0, 0x8b +DEFINE_GUIDSTRUCT("20c5598e-d3c8-11d0-8dfc-00c04fd7c08b", KSEVENTSETID_VPNotify); +#define KSEVENTSETID_VPNotify DEFINE_GUIDNAMED(KSEVENTSETID_VPNotify) + +typedef enum { + KSEVENT_VPNOTIFY_FORMATCHANGE, +} KSEVENT_VPNOTIFY; + +// +// VIDCAPTOSTI event notification +// +#define STATIC_KSEVENTSETID_VIDCAPTOSTI\ + 0xdb47de20, 0xf628, 0x11d1, 0xba, 0x41, 0x0, 0xa0, 0xc9, 0xd, 0x2b, 0x5 +DEFINE_GUIDSTRUCT("DB47DE20-F628-11d1-BA41-00A0C90D2B05", KSEVENTSETID_VIDCAPTOSTI); +#define KSEVENTSETID_VIDCAPNotify DEFINE_GUIDNAMED(KSEVENTSETID_VIDCAPTOSTI) + +typedef enum { + KSEVENT_VIDCAPTOSTI_EXT_TRIGGER, + KSEVENT_VIDCAP_AUTO_UPDATE, + KSEVENT_VIDCAP_SEARCH +} KSEVENT_VIDCAPTOSTI; + +// +// Extension Unit Properties +// +typedef enum { + KSPROPERTY_EXTENSION_UNIT_INFO, // (R) + KSPROPERTY_EXTENSION_UNIT_CONTROL, // (RW) + KSPROPERTY_EXTENSION_UNIT_PASS_THROUGH = 0xffff, // (RW) +} KSPROPERTY_EXTENSION_UNIT, *PKSPROPERTY_EXTENSION_UNIT; + +// +// IVPVBINotify event notification +// +#define STATIC_KSEVENTSETID_VPVBINotify\ + 0xec529b01L, 0x1a1f, 0x11d1, 0xba, 0xd9, 0x0, 0x60, 0x97, 0x44, 0x11, 0x1a +DEFINE_GUIDSTRUCT("ec529b01-1a1f-11d1-bad9-00609744111a", KSEVENTSETID_VPVBINotify); +#define KSEVENTSETID_VPVBINotify DEFINE_GUIDNAMED(KSEVENTSETID_VPVBINotify) + +typedef enum { + KSEVENT_VPVBINOTIFY_FORMATCHANGE, +} KSEVENT_VPVBINOTIFY; + + +// +// closed caption information +// + +#define STATIC_KSDATAFORMAT_TYPE_AUXLine21Data \ +0x670aea80L, 0x3a82, 0x11d0, 0xb7, 0x9b, 0x00, 0xaa, 0x00, 0x37, 0x67, 0xa7 +DEFINE_GUIDSTRUCT("670aea80-3a82-11d0-b79b-00aa003767a7", KSDATAFORMAT_TYPE_AUXLine21Data); +#define KSDATAFORMAT_TYPE_AUXLine21Data DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_AUXLine21Data) + +#define STATIC_KSDATAFORMAT_SUBTYPE_Line21_BytePair \ +0x6e8d4a22L, 0x310c, 0x11d0, 0xb7, 0x9a, 0x00, 0xaa, 0x00, 0x37, 0x67, 0xa7 +DEFINE_GUIDSTRUCT("6e8d4a22-310c-11d0-b79a-00aa003767a7", KSDATAFORMAT_SUBTYPE_Line21_BytePair); +#define KSDATAFORMAT_SUBTYPE_Line21_BytePair DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_Line21_BytePair) + +#define STATIC_KSDATAFORMAT_SUBTYPE_Line21_GOPPacket \ +0x6e8d4a23L, 0x310c, 0x11d0, 0xb7, 0x9a, 0x00, 0xaa, 0x00, 0x37, 0x67, 0xa7 +DEFINE_GUIDSTRUCT("6e8d4a23-310c-11d0-b79a-00aa003767a7", KSDATAFORMAT_SUBTYPE_Line21_GOPPacket); +#define KSDATAFORMAT_SUBTYPE_Line21_GOPPacket DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_Line21_GOPPacket) + +typedef struct _KSGOP_USERDATA { + ULONG sc; + ULONG reserved1; + BYTE cFields; + CHAR l21Data[3]; +} KSGOP_USERDATA, *PKSGOP_USERDATA; + +// +// DVD encrypted PACK format type definition +// + +#define STATIC_KSDATAFORMAT_TYPE_DVD_ENCRYPTED_PACK\ + 0xed0b916a, 0x044d, 0x11d1, 0xaa, 0x78, 0x00, 0xc0, 0x4f, 0xc3, 0x1d, 0x60 +DEFINE_GUIDSTRUCT("ed0b916a-044d-11d1-aa78-00c04fc31d60", KSDATAFORMAT_TYPE_DVD_ENCRYPTED_PACK); +#define KSDATAFORMAT_TYPE_DVD_ENCRYPTED_PACK DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_DVD_ENCRYPTED_PACK) + +#define KS_AM_UseNewCSSKey 0x1 + + +// ----------------------------------------------------------------------- +// KS_AM_KSPROPSETID_TSRateChange property set definitions for time stamp +// rate changes. +// ----------------------------------------------------------------------- + + +#define STATIC_KSPROPSETID_TSRateChange\ + 0xa503c5c0, 0x1d1d, 0x11d1, 0xad, 0x80, 0x44, 0x45, 0x53, 0x54, 0x0, 0x0 + +DEFINE_GUIDSTRUCT("A503C5C0-1D1D-11D1-AD80-444553540000", KSPROPSETID_TSRateChange); +#define KSPROPSETID_TSRateChange DEFINE_GUIDNAMED(KSPROPSETID_TSRateChange) +typedef enum { + KS_AM_RATE_SimpleRateChange=1, // rw, use KS_AM_SimpleRateChange + KS_AM_RATE_ExactRateChange=2, // rw, use KS_AM_ExactRateChange + KS_AM_RATE_MaxFullDataRate=3, // r, use KS_AM_MaxFullDataRate + KS_AM_RATE_Step=4 // w, use KS_AM_Step +} KS_AM_PROPERTY_TS_RATE_CHANGE; + +typedef struct { + // this is the simplest mechanism to set a time stamp rate change on + // a filter (simplest for the person setting the rate change, harder + // for the filter doing the rate change). + REFERENCE_TIME StartTime; //stream time at which to start this rate + LONG Rate; //new rate * 10000 (decimal) +} KS_AM_SimpleRateChange, *PKS_AM_SimpleRateChange; + +typedef struct { + REFERENCE_TIME OutputZeroTime; //input TS that maps to zero output TS + LONG Rate; //new rate * 10000 (decimal) +} KS_AM_ExactRateChange, *PKS_AM_ExactRateChange; + +typedef LONG KS_AM_MaxFullDataRate; //rate * 10000 (decimal) + +typedef DWORD KS_AM_Step; // number of frame to step + +//=========================================================================== +//ENCODER API DEFINITIONS +//=========================================================================== + +#define STATIC_KSCATEGORY_ENCODER \ + 0x19689bf6, 0xc384, 0x48fd, 0xad, 0x51, 0x90, 0xe5, 0x8c, 0x79, 0xf7, 0xb +DEFINE_GUIDSTRUCT("19689BF6-C384-48fd-AD51-90E58C79F70B", KSCATEGORY_ENCODER); +#define KSCATEGORY_ENCODER DEFINE_GUIDNAMED(KSCATEGORY_ENCODER) + +#define STATIC_KSCATEGORY_MULTIPLEXER \ + 0x7a5de1d3, 0x1a1, 0x452c, 0xb4, 0x81, 0x4f, 0xa2, 0xb9, 0x62, 0x71, 0xe8 +DEFINE_GUIDSTRUCT("7A5DE1D3-01A1-452c-B481-4FA2B96271E8", KSCATEGORY_MULTIPLEXER); +#define KSCATEGORY_MULTIPLEXER DEFINE_GUIDNAMED(KSCATEGORY_MULTIPLEXER) + +#ifndef __ENCODER_API_GUIDS__ +#define __ENCODER_API_GUIDS__ + +#define STATIC_ENCAPIPARAM_BITRATE \ + 0x49cc4c43, 0xca83, 0x4ad4, 0xa9, 0xaf, 0xf3, 0x69, 0x6a, 0xf6, 0x66, 0xdf +DEFINE_GUIDSTRUCT("49CC4C43-CA83-4ad4-A9AF-F3696AF666DF", ENCAPIPARAM_BITRATE); +#define ENCAPIPARAM_BITRATE DEFINE_GUIDNAMED(ENCAPIPARAM_BITRATE) + +#define STATIC_ENCAPIPARAM_PEAK_BITRATE \ + 0x703f16a9, 0x3d48, 0x44a1, 0xb0, 0x77, 0x1, 0x8d, 0xff, 0x91, 0x5d, 0x19 +DEFINE_GUIDSTRUCT("703F16A9-3D48-44a1-B077-018DFF915D19", ENCAPIPARAM_PEAK_BITRATE); +#define ENCAPIPARAM_PEAK_BITRATE DEFINE_GUIDNAMED(ENCAPIPARAM_PEAK_BITRATE) + +#define STATIC_ENCAPIPARAM_BITRATE_MODE \ + 0xee5fb25c, 0xc713, 0x40d1, 0x9d, 0x58, 0xc0, 0xd7, 0x24, 0x1e, 0x25, 0xf +DEFINE_GUIDSTRUCT("EE5FB25C-C713-40d1-9D58-C0D7241E250F", ENCAPIPARAM_BITRATE_MODE); +#define ENCAPIPARAM_BITRATE_MODE DEFINE_GUIDNAMED(ENCAPIPARAM_BITRATE_MODE) + +#define STATIC_CODECAPI_CHANGELISTS \ + 0x62b12acf, 0xf6b0, 0x47d9, 0x94, 0x56, 0x96, 0xf2, 0x2c, 0x4e, 0x0b, 0x9d +DEFINE_GUIDSTRUCT("62B12ACF-F6B0-47D9-9456-96F22C4E0B9D", CODECAPI_CHANGELISTS ); +#define CODECAPI_CHANGELISTS DEFINE_GUIDNAMED(CODECAPI_CHANGELISTS ) + +#define STATIC_CODECAPI_VIDEO_ENCODER \ + 0x7112e8e1, 0x3d03, 0x47ef, 0x8e, 0x60, 0x03, 0xf1, 0xcf, 0x53, 0x73, 0x01 +DEFINE_GUIDSTRUCT("7112E8E1-3D03-47EF-8E60-03F1CF537301", CODECAPI_VIDEO_ENCODER ); +#define CODECAPI_VIDEO_ENCODER DEFINE_GUIDNAMED(CODECAPI_VIDEO_ENCODER ) + +#define STATIC_CODECAPI_AUDIO_ENCODER \ + 0xb9d19a3e, 0xf897, 0x429c, 0xbc, 0x46, 0x81, 0x38, 0xb7, 0x27, 0x2b, 0x2d +DEFINE_GUIDSTRUCT("B9D19A3E-F897-429C-BC46-8138B7272B2D", CODECAPI_AUDIO_ENCODER ); +#define CODECAPI_AUDIO_ENCODER DEFINE_GUIDNAMED(CODECAPI_AUDIO_ENCODER ) + +#define STATIC_CODECAPI_SETALLDEFAULTS \ + 0x6c5e6a7c, 0xacf8, 0x4f55, 0xa9, 0x99, 0x1a, 0x62, 0x81, 0x09, 0x05, 0x1b +DEFINE_GUIDSTRUCT("6C5E6A7C-ACF8-4F55-A999-1A628109051B", CODECAPI_SETALLDEFAULTS ); +#define CODECAPI_SETALLDEFAULTS DEFINE_GUIDNAMED(CODECAPI_SETALLDEFAULTS ) + +#define STATIC_CODECAPI_ALLSETTINGS \ + 0x6a577e92, 0x83e1, 0x4113, 0xad, 0xc2, 0x4f, 0xce, 0xc3, 0x2f, 0x83, 0xa1 +DEFINE_GUIDSTRUCT("6A577E92-83E1-4113-ADC2-4FCEC32F83A1", CODECAPI_ALLSETTINGS ); +#define CODECAPI_ALLSETTINGS DEFINE_GUIDNAMED(CODECAPI_ALLSETTINGS ) + +#define STATIC_CODECAPI_SUPPORTSEVENTS \ + 0x0581af97, 0x7693, 0x4dbd, 0x9d, 0xca, 0x3f, 0x9e, 0xbd, 0x65, 0x85, 0xa1 +DEFINE_GUIDSTRUCT("0581AF97-7693-4DBD-9DCA-3F9EBD6585A1", CODECAPI_SUPPORTSEVENTS ); +#define CODECAPI_SUPPORTSEVENTS DEFINE_GUIDNAMED(CODECAPI_SUPPORTSEVENTS ) + +#define STATIC_CODECAPI_CURRENTCHANGELIST \ + 0x1cb14e83, 0x7d72, 0x4657, 0x83, 0xfd, 0x47, 0xa2, 0xc5, 0xb9, 0xd1, 0x3d +DEFINE_GUIDSTRUCT("1CB14E83-7D72-4657-83FD-47A2C5B9D13D", CODECAPI_CURRENTCHANGELIST ); +#define CODECAPI_CURRENTCHANGELIST DEFINE_GUIDNAMED(CODECAPI_CURRENTCHANGELIST ) + +#endif // __ENCODER_API_GUIDS__ + +#ifndef __ENCODER_API_DEFINES__ +#define __ENCODER_API_DEFINES__ + +typedef enum { + + // + // Bit rate used for encoding is constant + // + ConstantBitRate = 0, + + // + // Bit rate used for encoding is variable with the specified bitrate used + // as a guaranteed average over a specified window. The default window + // size is considered to be 5 minutes. + // + VariableBitRateAverage, + + // + // Bit rate used for encoding is variable with the specified bitrate used + // as an average with a peak not to exceed the specified peak bitrate over + // a specified window. The default window size is considered to be 500ms + // (classically one GOP). + // + VariableBitRatePeak + +} VIDEOENCODER_BITRATE_MODE; + +#endif // __ENCODER_API_DEFINES__ + +#endif // !defined(_KSMEDIA_) diff --git a/videoInputSrcAndDemos/libs/DShow/Include/ksproxy.h b/videoInputSrcAndDemos/libs/DShow/Include/ksproxy.h index 2ee3451..62be50e 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/ksproxy.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/ksproxy.h @@ -1,858 +1,858 @@ -/*++ - -Copyright (c) Microsoft Corporation. All rights reserved. - -Module Name: - - ksproxy.h - -Abstract: - - Interface definitions for WDM-CSA proxy filters. - ---*/ - -#ifndef __KSPROXY__ -#define __KSPROXY__ - -#ifdef __cplusplus -extern "C" { -#endif - -#undef KSDDKAPI -#ifdef _KSDDK_ -#define KSDDKAPI -#else // !_KSDDK_ -#define KSDDKAPI DECLSPEC_IMPORT -#endif // _KSDDK_ - -#define STATIC_IID_IKsObject\ - 0x423c13a2L, 0x2070, 0x11d0, 0x9e, 0xf7, 0x00, 0xaa, 0x00, 0xa2, 0x16, 0xa1 - -#define STATIC_IID_IKsPinEx\ - 0x7bb38260L, 0xd19c, 0x11d2, 0xb3, 0x8a, 0x00, 0xa0, 0xc9, 0x5e, 0xc2, 0x2e - -#define STATIC_IID_IKsPin\ - 0xb61178d1L, 0xa2d9, 0x11cf, 0x9e, 0x53, 0x00, 0xaa, 0x00, 0xa2, 0x16, 0xa1 - -#define STATIC_IID_IKsPinPipe\ - 0xe539cd90L, 0xa8b4, 0x11d1, 0x81, 0x89, 0x00, 0xa0, 0xc9, 0x06, 0x28, 0x02 - -#define STATIC_IID_IKsDataTypeHandler\ - 0x5ffbaa02L, 0x49a3, 0x11d0, 0x9f, 0x36, 0x00, 0xaa, 0x00, 0xa2, 0x16, 0xa1 - -#define STATIC_IID_IKsDataTypeCompletion\ - 0x827D1A0EL, 0x0F73, 0x11D2, 0xB2, 0x7A, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 - -#define STATIC_IID_IKsInterfaceHandler\ - 0xD3ABC7E0L, 0x9A61, 0x11D0, 0xA4, 0x0D, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 - -#define STATIC_IID_IKsClockPropertySet\ - 0x5C5CBD84L, 0xE755, 0x11D0, 0xAC, 0x18, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 - -#define STATIC_IID_IKsAllocator\ - 0x8da64899L, 0xc0d9, 0x11d0, 0x84, 0x13, 0x00, 0x00, 0xf8, 0x22, 0xfe, 0x8a - -#define STATIC_IID_IKsAllocatorEx\ - 0x091bb63aL, 0x603f, 0x11d1, 0xb0, 0x67, 0x00, 0xa0, 0xc9, 0x06, 0x28, 0x02 - - -#ifndef STATIC_IID_IKsPropertySet -#define STATIC_IID_IKsPropertySet\ - 0x31EFAC30L, 0x515C, 0x11d0, 0xA9, 0xAA, 0x00, 0xAA, 0x00, 0x61, 0xBE, 0x93 -#endif // STATIC_IID_IKsPropertySet - -#define STATIC_IID_IKsTopology\ - 0x28F54683L, 0x06FD, 0x11D2, 0xB2, 0x7A, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 - -#ifndef STATIC_IID_IKsControl -#define STATIC_IID_IKsControl\ - 0x28F54685L, 0x06FD, 0x11D2, 0xB2, 0x7A, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 -#endif // STATIC_IID_IKsControl - -#define STATIC_IID_IKsAggregateControl\ - 0x7F40EAC0L, 0x3947, 0x11D2, 0x87, 0x4E, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 - -#define STATIC_CLSID_Proxy \ - 0x17CCA71BL, 0xECD7, 0x11D0, 0xB9, 0x08, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 - -#ifdef _KS_ - -#if !defined(__cplusplus) || _MSC_VER < 1100 -DEFINE_GUIDEX(IID_IKsObject); - -DEFINE_GUIDEX(IID_IKsPin); - -DEFINE_GUIDEX(IID_IKsPinEx); - -DEFINE_GUIDEX(IID_IKsPinPipe); - -DEFINE_GUIDEX(IID_IKsDataTypeHandler); - -DEFINE_GUIDEX(IID_IKsDataTypeCompletion); - -DEFINE_GUIDEX(IID_IKsInterfaceHandler); - -DEFINE_GUIDEX(IID_IKsClockPropertySet); - -DEFINE_GUIDEX(IID_IKsAllocator); - -DEFINE_GUIDEX(IID_IKsAllocatorEx); - -#define IID_IKsQualityForwarder KSCATEGORY_QUALITY -#endif // !defined(__cplusplus) || _MSC_VER < 1100 - -#define STATIC_IID_IKsQualityForwarder STATIC_KSCATEGORY_QUALITY - -typedef enum { - KsAllocatorMode_User, - KsAllocatorMode_Kernel -} KSALLOCATORMODE; - - -typedef enum { - FramingProp_Uninitialized, - FramingProp_None, - FramingProp_Old, - FramingProp_Ex -} FRAMING_PROP; - -typedef FRAMING_PROP *PFRAMING_PROP; - - -typedef enum { - Framing_Cache_Update, // request to bypass cache when read/write - Framing_Cache_ReadLast, - Framing_Cache_ReadOrig, - Framing_Cache_Write -} FRAMING_CACHE_OPS; - - -typedef struct { - LONGLONG MinTotalNominator; - LONGLONG MaxTotalNominator; - LONGLONG TotalDenominator; -} OPTIMAL_WEIGHT_TOTALS; - -// forward declaration -typedef struct IPin IPin; -typedef struct IKsPin IKsPin; -typedef struct IKsAllocator IKsAllocator; -typedef struct IKsAllocatorEx IKsAllocatorEx; - - -// -// allocators strategy is defined by graph manager -// -#define AllocatorStrategy_DontCare 0 - -// -// what to optimize -// -#define AllocatorStrategy_MinimizeNumberOfFrames 0x00000001 -#define AllocatorStrategy_MinimizeFrameSize 0x00000002 -#define AllocatorStrategy_MinimizeNumberOfAllocators 0x00000004 -#define AllocatorStrategy_MaximizeSpeed 0x00000008 - -// -// factors (flags) defining the Pipes properties -// -#define PipeFactor_None 0 -#define PipeFactor_UserModeUpstream 0x00000001 -#define PipeFactor_UserModeDownstream 0x00000002 -#define PipeFactor_MemoryTypes 0x00000004 -#define PipeFactor_Flags 0x00000008 -#define PipeFactor_PhysicalRanges 0x00000010 -#define PipeFactor_OptimalRanges 0x00000020 -#define PipeFactor_FixedCompression 0x00000040 -#define PipeFactor_UnknownCompression 0x00000080 - -#define PipeFactor_Buffers 0x00000100 -#define PipeFactor_Align 0x00000200 - -#define PipeFactor_PhysicalEnd 0x00000400 -#define PipeFactor_LogicalEnd 0x00000800 - - - -typedef enum { - PipeState_DontCare, - PipeState_RangeNotFixed, - PipeState_RangeFixed, - PipeState_CompressionUnknown, - PipeState_Finalized -} PIPE_STATE; - - -// -// pipe dimensions relative to BeginPin. -// - -typedef struct _PIPE_DIMENSIONS { - KS_COMPRESSION AllocatorPin; - KS_COMPRESSION MaxExpansionPin; - KS_COMPRESSION EndPin; -} PIPE_DIMENSIONS, *PPIPE_DIMENSIONS; - - -typedef enum { - Pipe_Allocator_None, - Pipe_Allocator_FirstPin, - Pipe_Allocator_LastPin, - Pipe_Allocator_MiddlePin -} PIPE_ALLOCATOR_PLACE; - -typedef PIPE_ALLOCATOR_PLACE *PPIPE_ALLOCATOR_PLACE; - - -typedef enum { - KS_MemoryTypeDontCare = 0, - KS_MemoryTypeKernelPaged, - KS_MemoryTypeKernelNonPaged, - KS_MemoryTypeDeviceHostMapped, - KS_MemoryTypeDeviceSpecific, - KS_MemoryTypeUser, - KS_MemoryTypeAnyHost -} KS_LogicalMemoryType; - -typedef KS_LogicalMemoryType *PKS_LogicalMemoryType; - - - -typedef struct _PIPE_TERMINATION { - ULONG Flags; - ULONG OutsideFactors; - ULONG Weigth; // outside weight - KS_FRAMING_RANGE PhysicalRange; - KS_FRAMING_RANGE_WEIGHTED OptimalRange; - KS_COMPRESSION Compression; // relative to the connected pin on a neighboring filter. -} PIPE_TERMINATION; - - -// -// extended allocator properties -// -typedef struct _ALLOCATOR_PROPERTIES_EX - { - long cBuffers; - long cbBuffer; - long cbAlign; - long cbPrefix; -// new part - GUID MemoryType; - GUID BusType; // one of the buses this pipe is using - PIPE_STATE State; - PIPE_TERMINATION Input; - PIPE_TERMINATION Output; - ULONG Strategy; - ULONG Flags; - ULONG Weight; - KS_LogicalMemoryType LogicalMemoryType; - PIPE_ALLOCATOR_PLACE AllocatorPlace; - PIPE_DIMENSIONS Dimensions; - KS_FRAMING_RANGE PhysicalRange; // on allocator pin - IKsAllocatorEx* PrevSegment; // doubly-linked list of KS allocators - ULONG CountNextSegments; // possible multiple dependent pipes - IKsAllocatorEx** NextSegments; - ULONG InsideFactors; // existing factors (different from "don't care") - ULONG NumberPins; -} ALLOCATOR_PROPERTIES_EX; - -typedef ALLOCATOR_PROPERTIES_EX *PALLOCATOR_PROPERTIES_EX; - - -#ifdef __STREAMS__ - -struct DECLSPEC_UUID("5C5CBD84-E755-11D0-AC18-00A0C9223196") IKsClockPropertySet; -#undef INTERFACE -#define INTERFACE IKsClockPropertySet -DECLARE_INTERFACE_(IKsClockPropertySet, IUnknown) -{ - STDMETHOD(KsGetTime)( - THIS_ - LONGLONG* Time - ) PURE; - STDMETHOD(KsSetTime)( - THIS_ - LONGLONG Time - ) PURE; - STDMETHOD(KsGetPhysicalTime)( - THIS_ - LONGLONG* Time - ) PURE; - STDMETHOD(KsSetPhysicalTime)( - THIS_ - LONGLONG Time - ) PURE; - STDMETHOD(KsGetCorrelatedTime)( - THIS_ - KSCORRELATED_TIME* CorrelatedTime - ) PURE; - STDMETHOD(KsSetCorrelatedTime)( - THIS_ - KSCORRELATED_TIME* CorrelatedTime - ) PURE; - STDMETHOD(KsGetCorrelatedPhysicalTime)( - THIS_ - KSCORRELATED_TIME* CorrelatedTime - ) PURE; - STDMETHOD(KsSetCorrelatedPhysicalTime)( - THIS_ - KSCORRELATED_TIME* CorrelatedTime - ) PURE; - STDMETHOD(KsGetResolution)( - THIS_ - KSRESOLUTION* Resolution - ) PURE; - STDMETHOD(KsGetState)( - THIS_ - KSSTATE* State - ) PURE; -}; - - -interface DECLSPEC_UUID("8da64899-c0d9-11d0-8413-0000f822fe8a") IKsAllocator; -#undef INTERFACE -#define INTERFACE IKsAllocator -DECLARE_INTERFACE_(IKsAllocator, IUnknown) -{ - STDMETHOD_(HANDLE, KsGetAllocatorHandle)( - THIS - ) PURE; - STDMETHOD_(KSALLOCATORMODE, KsGetAllocatorMode)( - THIS - ) PURE; - STDMETHOD(KsGetAllocatorStatus)( - THIS_ - PKSSTREAMALLOCATOR_STATUS AllocatorStatus - ) PURE; - STDMETHOD_(VOID, KsSetAllocatorMode)( - THIS_ - KSALLOCATORMODE Mode - ) PURE; -}; - -interface DECLSPEC_UUID("091bb63a-603f-11d1-b067-00a0c9062802") IKsAllocatorEx; -#undef INTERFACE -#define INTERFACE IKsAllocatorEx -DECLARE_INTERFACE_(IKsAllocatorEx, IKsAllocator) -{ - STDMETHOD_(PALLOCATOR_PROPERTIES_EX, KsGetProperties)( - THIS - ) PURE; - STDMETHOD_(VOID, KsSetProperties)( - THIS_ - PALLOCATOR_PROPERTIES_EX - ) PURE; - STDMETHOD_(VOID, KsSetAllocatorHandle)( - THIS_ - HANDLE AllocatorHandle - ) PURE; - STDMETHOD_(HANDLE, KsCreateAllocatorAndGetHandle)( - THIS_ - IKsPin* KsPin - ) PURE; -}; - -typedef enum { - KsPeekOperation_PeekOnly, - KsPeekOperation_AddRef -} KSPEEKOPERATION; - -typedef struct _KSSTREAM_SEGMENT *PKSSTREAM_SEGMENT; - -interface DECLSPEC_UUID("b61178d1-a2d9-11cf-9e53-00aa00a216a1") IKsPin; - -#undef INTERFACE -#define INTERFACE IKsPin -DECLARE_INTERFACE_(IKsPin, IUnknown) -{ - STDMETHOD(KsQueryMediums)( - THIS_ - PKSMULTIPLE_ITEM* MediumList - ) PURE; - STDMETHOD(KsQueryInterfaces)( - THIS_ - PKSMULTIPLE_ITEM* InterfaceList - ) PURE; - STDMETHOD(KsCreateSinkPinHandle)( - THIS_ - KSPIN_INTERFACE& Interface, - KSPIN_MEDIUM& Medium - ) PURE; - STDMETHOD(KsGetCurrentCommunication)( - THIS_ - KSPIN_COMMUNICATION *Communication, - KSPIN_INTERFACE *Interface, - KSPIN_MEDIUM *Medium - ) PURE; - STDMETHOD(KsPropagateAcquire)( - THIS - ) PURE; - STDMETHOD(KsDeliver)( - THIS_ - IMediaSample* Sample, - ULONG Flags - ) PURE; - STDMETHOD(KsMediaSamplesCompleted)( - THIS_ - PKSSTREAM_SEGMENT StreamSegment - ) PURE; - STDMETHOD_(IMemAllocator *, KsPeekAllocator)( - THIS_ - KSPEEKOPERATION Operation - ) PURE; - STDMETHOD(KsReceiveAllocator)( - THIS_ - IMemAllocator *MemAllocator - ) PURE; - STDMETHOD(KsRenegotiateAllocator)( - THIS - ) PURE; - STDMETHOD_(LONG, KsIncrementPendingIoCount)( - THIS - ) PURE; - STDMETHOD_(LONG, KsDecrementPendingIoCount)( - THIS - ) PURE; - STDMETHOD(KsQualityNotify)( - THIS_ - ULONG Proportion, - REFERENCE_TIME TimeDelta - ) PURE; -}; - -interface DECLSPEC_UUID("7bb38260-d19c-11d2-b38a-00a0c95ec22e") IKsPinEx; -#undef INTERFACE -#define INTERFACE IKsPinEx -DECLARE_INTERFACE_(IKsPinEx, IKsPin) -{ - STDMETHOD_(VOID, KsNotifyError)( - THIS_ - IMediaSample* Sample, - HRESULT hr - ) PURE; -}; - -interface DECLSPEC_UUID("e539cd90-a8b4-11d1-8189-00a0c9062802") IKsPinPipe; -#undef INTERFACE -#define INTERFACE IKsPinPipe -DECLARE_INTERFACE_(IKsPinPipe, IUnknown) -{ - STDMETHOD(KsGetPinFramingCache)( - THIS_ - PKSALLOCATOR_FRAMING_EX *FramingEx, - PFRAMING_PROP FramingProp, - FRAMING_CACHE_OPS Option - ) PURE; - STDMETHOD(KsSetPinFramingCache)( - THIS_ - PKSALLOCATOR_FRAMING_EX FramingEx, - PFRAMING_PROP FramingProp, - FRAMING_CACHE_OPS Option - ) PURE; - STDMETHOD_(IPin*, KsGetConnectedPin)( - THIS - ) PURE; - STDMETHOD_(IKsAllocatorEx*, KsGetPipe)( - THIS_ - KSPEEKOPERATION Operation - ) PURE; - STDMETHOD(KsSetPipe)( - THIS_ - IKsAllocatorEx *KsAllocator - ) PURE; - STDMETHOD_(ULONG, KsGetPipeAllocatorFlag)( - THIS - ) PURE; - STDMETHOD(KsSetPipeAllocatorFlag)( - THIS_ - ULONG Flag - ) PURE; - STDMETHOD_(GUID, KsGetPinBusCache)( - THIS - ) PURE; - STDMETHOD(KsSetPinBusCache)( - THIS_ - GUID Bus - ) PURE; -// -// very useful methods for tracing. -// - STDMETHOD_(PWCHAR, KsGetPinName)( - THIS - ) PURE; - STDMETHOD_(PWCHAR, KsGetFilterName)( - THIS - ) PURE; -}; - - -interface DECLSPEC_UUID("CD5EBE6B-8B6E-11D1-8AE0-00A0C9223196") IKsPinFactory; -#undef INTERFACE -#define INTERFACE IKsPinFactory -DECLARE_INTERFACE_(IKsPinFactory, IUnknown) -{ - STDMETHOD(KsPinFactory)( - THIS_ - ULONG* PinFactory - ) PURE; -}; - -typedef enum { - KsIoOperation_Write, - KsIoOperation_Read -} KSIOOPERATION; - -interface DECLSPEC_UUID("5ffbaa02-49a3-11d0-9f36-00aa00a216a1") IKsDataTypeHandler; -#undef INTERFACE -#define INTERFACE IKsDataTypeHandler -DECLARE_INTERFACE_(IKsDataTypeHandler, IUnknown) -{ - STDMETHOD(KsCompleteIoOperation)( - THIS_ - IMediaSample *Sample, - PVOID StreamHeader, - KSIOOPERATION IoOperation, - BOOL Cancelled - ) PURE; - STDMETHOD(KsIsMediaTypeInRanges)( - THIS_ - PVOID DataRanges - ) PURE; - STDMETHOD(KsPrepareIoOperation)( - THIS_ - IMediaSample *Sample, - PVOID StreamHeader, - KSIOOPERATION IoOperation - ) PURE; - STDMETHOD(KsQueryExtendedSize)( - THIS_ - ULONG* ExtendedSize - ) PURE; - STDMETHOD(KsSetMediaType)( - THIS_ - const AM_MEDIA_TYPE* AmMediaType - ) PURE; -}; - -interface DECLSPEC_UUID("827D1A0E-0F73-11D2-B27A-00A0C9223196") IKsDataTypeCompletion; -#undef INTERFACE -#define INTERFACE IKsDataTypeCompletion -DECLARE_INTERFACE_(IKsDataTypeCompletion, IUnknown) -{ - STDMETHOD(KsCompleteMediaType)( - THIS_ - HANDLE FilterHandle, - ULONG PinFactoryId, - AM_MEDIA_TYPE* AmMediaType - ) PURE; -}; - -interface DECLSPEC_UUID("D3ABC7E0-9A61-11d0-A40D-00A0C9223196") IKsInterfaceHandler; -#undef INTERFACE -#define INTERFACE IKsInterfaceHandler -DECLARE_INTERFACE_(IKsInterfaceHandler, IUnknown) -{ - STDMETHOD(KsSetPin)( - THIS_ - IKsPin *KsPin - ) PURE; - STDMETHOD(KsProcessMediaSamples)( - THIS_ - IKsDataTypeHandler *KsDataTypeHandler, - IMediaSample** SampleList, - PLONG SampleCount, - KSIOOPERATION IoOperation, - PKSSTREAM_SEGMENT *StreamSegment - ) PURE; - STDMETHOD(KsCompleteIo)( - THIS_ - PKSSTREAM_SEGMENT StreamSegment - ) PURE; -}; - - -// -// This structure definition is the common header required by the proxy to -// dispatch the stream segment to the interface handler. Interface handlers -// will create extended structures to include other information such as -// media samples, extended header size and so on. -// - -typedef struct _KSSTREAM_SEGMENT { - IKsInterfaceHandler *KsInterfaceHandler; - IKsDataTypeHandler *KsDataTypeHandler; - KSIOOPERATION IoOperation; - HANDLE CompletionEvent; - -} KSSTREAM_SEGMENT; - -interface DECLSPEC_UUID("423c13a2-2070-11d0-9ef7-00aa00a216a1") IKsObject; -#undef INTERFACE -#define INTERFACE IKsObject -DECLARE_INTERFACE_(IKsObject, IUnknown) -{ - STDMETHOD_(HANDLE, KsGetObjectHandle)( - THIS - ) PURE; -}; - -interface DECLSPEC_UUID("97ebaacb-95bd-11d0-a3ea-00a0c9223196") IKsQualityForwarder; -#undef INTERFACE -#define INTERFACE IKsQualityForwarder -DECLARE_INTERFACE_(IKsQualityForwarder, IKsObject) -{ - STDMETHOD_(VOID, KsFlushClient)( - THIS_ - IKsPin* Pin - ) PURE; -}; - -interface DECLSPEC_UUID("412bd695-f84b-46c1-ac73-54196dbc8fa7") IKsNotifyEvent; -#undef INTERFACE -#define INTERFACE IKsNotifyEvent -DECLARE_INTERFACE_(IKsNotifyEvent, IUnknown) -{ - STDMETHOD(KsNotifyEvent)( - THIS_ - ULONG Event, - ULONG_PTR lParam1, - ULONG_PTR lParam2 - ) PURE; -}; - -KSDDKAPI -HRESULT -WINAPI -KsResolveRequiredAttributes( - PKSDATARANGE DataRange, - PKSMULTIPLE_ITEM Attributes OPTIONAL - ); - -KSDDKAPI -HRESULT -WINAPI -KsOpenDefaultDevice( - REFGUID Category, - ACCESS_MASK Access, - PHANDLE DeviceHandle - ); -KSDDKAPI -HRESULT -WINAPI -KsSynchronousDeviceControl( - HANDLE Handle, - ULONG IoControl, - PVOID InBuffer, - ULONG InLength, - PVOID OutBuffer, - ULONG OutLength, - PULONG BytesReturned - ); -KSDDKAPI -HRESULT -WINAPI -KsGetMultiplePinFactoryItems( - HANDLE FilterHandle, - ULONG PinFactoryId, - ULONG PropertyId, - PVOID* Items - ); -KSDDKAPI -HRESULT -WINAPI -KsGetMediaTypeCount( - HANDLE FilterHandle, - ULONG PinFactoryId, - ULONG* MediaTypeCount - ); -KSDDKAPI -HRESULT -WINAPI -KsGetMediaType( - int Position, - AM_MEDIA_TYPE* AmMediaType, - HANDLE FilterHandle, - ULONG PinFactoryId - ); - -#endif // __STREAMS__ - -#ifndef _IKsPropertySet_ -#if !defined(__cplusplus) || _MSC_VER < 1100 -DEFINE_GUIDEX(IID_IKsPropertySet); -#endif // !defined(__cplusplus) || _MSC_VER < 1100 -#endif // _IKsPropertySet_ - -#ifndef _IKsControl_ -#if !defined(__cplusplus) || _MSC_VER < 1100 -DEFINE_GUIDEX(IID_IKsControl); -#endif // !defined(__cplusplus) || _MSC_VER < 1100 -#endif // _IKsControl_ - -#if !defined(__cplusplus) || _MSC_VER < 1100 -DEFINE_GUIDEX(IID_IKsAggregateControl); -#endif // !defined(__cplusplus) || _MSC_VER < 1100 - -#ifndef _IKsTopology_ -#if !defined(__cplusplus) || _MSC_VER < 1100 -DEFINE_GUIDEX(IID_IKsTopology); -#endif // !defined(__cplusplus) || _MSC_VER < 1100 -#endif // _IKsTopology_ - -DEFINE_GUIDSTRUCT("17CCA71B-ECD7-11D0-B908-00A0C9223196", CLSID_Proxy); -#define CLSID_Proxy DEFINE_GUIDNAMED(CLSID_Proxy) - -#else // !_KS_ - -#ifndef _IKsPropertySet_ -#if !defined(__cplusplus) || _MSC_VER < 1100 -DEFINE_GUID(IID_IKsPropertySet, STATIC_IID_IKsPropertySet); -#endif // !defined(__cplusplus) || _MSC_VER < 1100 -#endif // _IKsPropertySet_ - -#if !defined(__cplusplus) || _MSC_VER < 1100 -DEFINE_GUID(CLSID_Proxy, STATIC_CLSID_Proxy); -#else // defined(__cplusplus) && _MSC_VER >= 1100 -DECLSPEC_UUID("17CCA71B-ECD7-11D0-B908-00A0C9223196") CLSID_Proxy; -#endif // defined(__cplusplus) && _MSC_VER >= 1100 - -#endif // !_KS_ - -#ifndef _IKsPropertySet_ -#define _IKsPropertySet_ - -#define KSPROPERTY_SUPPORT_GET 1 -#define KSPROPERTY_SUPPORT_SET 2 - -#ifdef DECLARE_INTERFACE_ - -interface DECLSPEC_UUID("31EFAC30-515C-11d0-A9AA-00aa0061be93") IKsPropertySet; -#undef INTERFACE -#define INTERFACE IKsPropertySet -DECLARE_INTERFACE_(IKsPropertySet, IUnknown) -{ - STDMETHOD(Set)( - THIS_ - IN REFGUID PropSet, - IN ULONG Id, - IN LPVOID InstanceData, - IN ULONG InstanceLength, - IN LPVOID PropertyData, - IN ULONG DataLength - ) PURE; - - STDMETHOD(Get)( - THIS_ - IN REFGUID PropSet, - IN ULONG Id, - IN LPVOID InstanceData, - IN ULONG InstanceLength, - OUT LPVOID PropertyData, - IN ULONG DataLength, - OUT ULONG* BytesReturned - ) PURE; - - STDMETHOD(QuerySupported)( - THIS_ - IN REFGUID PropSet, - IN ULONG Id, - OUT ULONG* TypeSupport - ) PURE; -}; - -#endif // DECLARE_INTERFACE_ - -#endif // _IKsPropertySet_ - -#ifndef _IKsControl_ -#define _IKsControl_ - -#ifdef DECLARE_INTERFACE_ - -interface DECLSPEC_UUID("28F54685-06FD-11D2-B27A-00A0C9223196") IKsControl; -#undef INTERFACE -#define INTERFACE IKsControl -DECLARE_INTERFACE_(IKsControl, IUnknown) -{ - STDMETHOD(KsProperty)( - THIS_ - IN PKSPROPERTY Property, - IN ULONG PropertyLength, - IN OUT LPVOID PropertyData, - IN ULONG DataLength, - OUT ULONG* BytesReturned - ) PURE; - STDMETHOD(KsMethod)( - THIS_ - IN PKSMETHOD Method, - IN ULONG MethodLength, - IN OUT LPVOID MethodData, - IN ULONG DataLength, - OUT ULONG* BytesReturned - ) PURE; - STDMETHOD(KsEvent)( - THIS_ - IN PKSEVENT Event OPTIONAL, - IN ULONG EventLength, - IN OUT LPVOID EventData, - IN ULONG DataLength, - OUT ULONG* BytesReturned - ) PURE; -}; - -#endif // DECLARE_INTERFACE_ - -#endif // _IKsControl_ - - -#ifdef DECLARE_INTERFACE_ - -interface DECLSPEC_UUID("7F40EAC0-3947-11D2-874E-00A0C9223196") IKsAggregateControl; -#undef INTERFACE -#define INTERFACE IKsAggregateControl -DECLARE_INTERFACE_(IKsAggregateControl, IUnknown) -{ - STDMETHOD(KsAddAggregate)( - THIS_ - IN REFGUID AggregateClass - ) PURE; - STDMETHOD(KsRemoveAggregate)( - THIS_ - IN REFGUID AggregateClass - ) PURE; -}; - -#endif // DECLARE_INTERFACE_ - -#ifndef _IKsTopology_ -#define _IKsTopology_ - -#ifdef DECLARE_INTERFACE_ - -interface DECLSPEC_UUID("28F54683-06FD-11D2-B27A-00A0C9223196") IKsTopology; -#undef INTERFACE -#define INTERFACE IKsTopology -DECLARE_INTERFACE_(IKsTopology, IUnknown) -{ - STDMETHOD(CreateNodeInstance)( - THIS_ - IN ULONG NodeId, - IN ULONG Flags, - IN ACCESS_MASK DesiredAccess, - IN IUnknown* UnkOuter OPTIONAL, - IN REFGUID InterfaceId, - OUT LPVOID* Interface - ) PURE; -}; - -#endif // DECLARE_INTERFACE_ - -#endif // _IKsTopology_ - -#ifdef __cplusplus -} -#endif // __cplusplus - -#endif // __KSPROXY__ +/*++ + +Copyright (c) Microsoft Corporation. All rights reserved. + +Module Name: + + ksproxy.h + +Abstract: + + Interface definitions for WDM-CSA proxy filters. + +--*/ + +#ifndef __KSPROXY__ +#define __KSPROXY__ + +#ifdef __cplusplus +extern "C" { +#endif + +#undef KSDDKAPI +#ifdef _KSDDK_ +#define KSDDKAPI +#else // !_KSDDK_ +#define KSDDKAPI DECLSPEC_IMPORT +#endif // _KSDDK_ + +#define STATIC_IID_IKsObject\ + 0x423c13a2L, 0x2070, 0x11d0, 0x9e, 0xf7, 0x00, 0xaa, 0x00, 0xa2, 0x16, 0xa1 + +#define STATIC_IID_IKsPinEx\ + 0x7bb38260L, 0xd19c, 0x11d2, 0xb3, 0x8a, 0x00, 0xa0, 0xc9, 0x5e, 0xc2, 0x2e + +#define STATIC_IID_IKsPin\ + 0xb61178d1L, 0xa2d9, 0x11cf, 0x9e, 0x53, 0x00, 0xaa, 0x00, 0xa2, 0x16, 0xa1 + +#define STATIC_IID_IKsPinPipe\ + 0xe539cd90L, 0xa8b4, 0x11d1, 0x81, 0x89, 0x00, 0xa0, 0xc9, 0x06, 0x28, 0x02 + +#define STATIC_IID_IKsDataTypeHandler\ + 0x5ffbaa02L, 0x49a3, 0x11d0, 0x9f, 0x36, 0x00, 0xaa, 0x00, 0xa2, 0x16, 0xa1 + +#define STATIC_IID_IKsDataTypeCompletion\ + 0x827D1A0EL, 0x0F73, 0x11D2, 0xB2, 0x7A, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 + +#define STATIC_IID_IKsInterfaceHandler\ + 0xD3ABC7E0L, 0x9A61, 0x11D0, 0xA4, 0x0D, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 + +#define STATIC_IID_IKsClockPropertySet\ + 0x5C5CBD84L, 0xE755, 0x11D0, 0xAC, 0x18, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 + +#define STATIC_IID_IKsAllocator\ + 0x8da64899L, 0xc0d9, 0x11d0, 0x84, 0x13, 0x00, 0x00, 0xf8, 0x22, 0xfe, 0x8a + +#define STATIC_IID_IKsAllocatorEx\ + 0x091bb63aL, 0x603f, 0x11d1, 0xb0, 0x67, 0x00, 0xa0, 0xc9, 0x06, 0x28, 0x02 + + +#ifndef STATIC_IID_IKsPropertySet +#define STATIC_IID_IKsPropertySet\ + 0x31EFAC30L, 0x515C, 0x11d0, 0xA9, 0xAA, 0x00, 0xAA, 0x00, 0x61, 0xBE, 0x93 +#endif // STATIC_IID_IKsPropertySet + +#define STATIC_IID_IKsTopology\ + 0x28F54683L, 0x06FD, 0x11D2, 0xB2, 0x7A, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 + +#ifndef STATIC_IID_IKsControl +#define STATIC_IID_IKsControl\ + 0x28F54685L, 0x06FD, 0x11D2, 0xB2, 0x7A, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 +#endif // STATIC_IID_IKsControl + +#define STATIC_IID_IKsAggregateControl\ + 0x7F40EAC0L, 0x3947, 0x11D2, 0x87, 0x4E, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 + +#define STATIC_CLSID_Proxy \ + 0x17CCA71BL, 0xECD7, 0x11D0, 0xB9, 0x08, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 + +#ifdef _KS_ + +#if !defined(__cplusplus) || _MSC_VER < 1100 +DEFINE_GUIDEX(IID_IKsObject); + +DEFINE_GUIDEX(IID_IKsPin); + +DEFINE_GUIDEX(IID_IKsPinEx); + +DEFINE_GUIDEX(IID_IKsPinPipe); + +DEFINE_GUIDEX(IID_IKsDataTypeHandler); + +DEFINE_GUIDEX(IID_IKsDataTypeCompletion); + +DEFINE_GUIDEX(IID_IKsInterfaceHandler); + +DEFINE_GUIDEX(IID_IKsClockPropertySet); + +DEFINE_GUIDEX(IID_IKsAllocator); + +DEFINE_GUIDEX(IID_IKsAllocatorEx); + +#define IID_IKsQualityForwarder KSCATEGORY_QUALITY +#endif // !defined(__cplusplus) || _MSC_VER < 1100 + +#define STATIC_IID_IKsQualityForwarder STATIC_KSCATEGORY_QUALITY + +typedef enum { + KsAllocatorMode_User, + KsAllocatorMode_Kernel +} KSALLOCATORMODE; + + +typedef enum { + FramingProp_Uninitialized, + FramingProp_None, + FramingProp_Old, + FramingProp_Ex +} FRAMING_PROP; + +typedef FRAMING_PROP *PFRAMING_PROP; + + +typedef enum { + Framing_Cache_Update, // request to bypass cache when read/write + Framing_Cache_ReadLast, + Framing_Cache_ReadOrig, + Framing_Cache_Write +} FRAMING_CACHE_OPS; + + +typedef struct { + LONGLONG MinTotalNominator; + LONGLONG MaxTotalNominator; + LONGLONG TotalDenominator; +} OPTIMAL_WEIGHT_TOTALS; + +// forward declaration +typedef struct IPin IPin; +typedef struct IKsPin IKsPin; +typedef struct IKsAllocator IKsAllocator; +typedef struct IKsAllocatorEx IKsAllocatorEx; + + +// +// allocators strategy is defined by graph manager +// +#define AllocatorStrategy_DontCare 0 + +// +// what to optimize +// +#define AllocatorStrategy_MinimizeNumberOfFrames 0x00000001 +#define AllocatorStrategy_MinimizeFrameSize 0x00000002 +#define AllocatorStrategy_MinimizeNumberOfAllocators 0x00000004 +#define AllocatorStrategy_MaximizeSpeed 0x00000008 + +// +// factors (flags) defining the Pipes properties +// +#define PipeFactor_None 0 +#define PipeFactor_UserModeUpstream 0x00000001 +#define PipeFactor_UserModeDownstream 0x00000002 +#define PipeFactor_MemoryTypes 0x00000004 +#define PipeFactor_Flags 0x00000008 +#define PipeFactor_PhysicalRanges 0x00000010 +#define PipeFactor_OptimalRanges 0x00000020 +#define PipeFactor_FixedCompression 0x00000040 +#define PipeFactor_UnknownCompression 0x00000080 + +#define PipeFactor_Buffers 0x00000100 +#define PipeFactor_Align 0x00000200 + +#define PipeFactor_PhysicalEnd 0x00000400 +#define PipeFactor_LogicalEnd 0x00000800 + + + +typedef enum { + PipeState_DontCare, + PipeState_RangeNotFixed, + PipeState_RangeFixed, + PipeState_CompressionUnknown, + PipeState_Finalized +} PIPE_STATE; + + +// +// pipe dimensions relative to BeginPin. +// + +typedef struct _PIPE_DIMENSIONS { + KS_COMPRESSION AllocatorPin; + KS_COMPRESSION MaxExpansionPin; + KS_COMPRESSION EndPin; +} PIPE_DIMENSIONS, *PPIPE_DIMENSIONS; + + +typedef enum { + Pipe_Allocator_None, + Pipe_Allocator_FirstPin, + Pipe_Allocator_LastPin, + Pipe_Allocator_MiddlePin +} PIPE_ALLOCATOR_PLACE; + +typedef PIPE_ALLOCATOR_PLACE *PPIPE_ALLOCATOR_PLACE; + + +typedef enum { + KS_MemoryTypeDontCare = 0, + KS_MemoryTypeKernelPaged, + KS_MemoryTypeKernelNonPaged, + KS_MemoryTypeDeviceHostMapped, + KS_MemoryTypeDeviceSpecific, + KS_MemoryTypeUser, + KS_MemoryTypeAnyHost +} KS_LogicalMemoryType; + +typedef KS_LogicalMemoryType *PKS_LogicalMemoryType; + + + +typedef struct _PIPE_TERMINATION { + ULONG Flags; + ULONG OutsideFactors; + ULONG Weigth; // outside weight + KS_FRAMING_RANGE PhysicalRange; + KS_FRAMING_RANGE_WEIGHTED OptimalRange; + KS_COMPRESSION Compression; // relative to the connected pin on a neighboring filter. +} PIPE_TERMINATION; + + +// +// extended allocator properties +// +typedef struct _ALLOCATOR_PROPERTIES_EX + { + long cBuffers; + long cbBuffer; + long cbAlign; + long cbPrefix; +// new part + GUID MemoryType; + GUID BusType; // one of the buses this pipe is using + PIPE_STATE State; + PIPE_TERMINATION Input; + PIPE_TERMINATION Output; + ULONG Strategy; + ULONG Flags; + ULONG Weight; + KS_LogicalMemoryType LogicalMemoryType; + PIPE_ALLOCATOR_PLACE AllocatorPlace; + PIPE_DIMENSIONS Dimensions; + KS_FRAMING_RANGE PhysicalRange; // on allocator pin + IKsAllocatorEx* PrevSegment; // doubly-linked list of KS allocators + ULONG CountNextSegments; // possible multiple dependent pipes + IKsAllocatorEx** NextSegments; + ULONG InsideFactors; // existing factors (different from "don't care") + ULONG NumberPins; +} ALLOCATOR_PROPERTIES_EX; + +typedef ALLOCATOR_PROPERTIES_EX *PALLOCATOR_PROPERTIES_EX; + + +#ifdef __STREAMS__ + +struct DECLSPEC_UUID("5C5CBD84-E755-11D0-AC18-00A0C9223196") IKsClockPropertySet; +#undef INTERFACE +#define INTERFACE IKsClockPropertySet +DECLARE_INTERFACE_(IKsClockPropertySet, IUnknown) +{ + STDMETHOD(KsGetTime)( + THIS_ + LONGLONG* Time + ) PURE; + STDMETHOD(KsSetTime)( + THIS_ + LONGLONG Time + ) PURE; + STDMETHOD(KsGetPhysicalTime)( + THIS_ + LONGLONG* Time + ) PURE; + STDMETHOD(KsSetPhysicalTime)( + THIS_ + LONGLONG Time + ) PURE; + STDMETHOD(KsGetCorrelatedTime)( + THIS_ + KSCORRELATED_TIME* CorrelatedTime + ) PURE; + STDMETHOD(KsSetCorrelatedTime)( + THIS_ + KSCORRELATED_TIME* CorrelatedTime + ) PURE; + STDMETHOD(KsGetCorrelatedPhysicalTime)( + THIS_ + KSCORRELATED_TIME* CorrelatedTime + ) PURE; + STDMETHOD(KsSetCorrelatedPhysicalTime)( + THIS_ + KSCORRELATED_TIME* CorrelatedTime + ) PURE; + STDMETHOD(KsGetResolution)( + THIS_ + KSRESOLUTION* Resolution + ) PURE; + STDMETHOD(KsGetState)( + THIS_ + KSSTATE* State + ) PURE; +}; + + +interface DECLSPEC_UUID("8da64899-c0d9-11d0-8413-0000f822fe8a") IKsAllocator; +#undef INTERFACE +#define INTERFACE IKsAllocator +DECLARE_INTERFACE_(IKsAllocator, IUnknown) +{ + STDMETHOD_(HANDLE, KsGetAllocatorHandle)( + THIS + ) PURE; + STDMETHOD_(KSALLOCATORMODE, KsGetAllocatorMode)( + THIS + ) PURE; + STDMETHOD(KsGetAllocatorStatus)( + THIS_ + PKSSTREAMALLOCATOR_STATUS AllocatorStatus + ) PURE; + STDMETHOD_(VOID, KsSetAllocatorMode)( + THIS_ + KSALLOCATORMODE Mode + ) PURE; +}; + +interface DECLSPEC_UUID("091bb63a-603f-11d1-b067-00a0c9062802") IKsAllocatorEx; +#undef INTERFACE +#define INTERFACE IKsAllocatorEx +DECLARE_INTERFACE_(IKsAllocatorEx, IKsAllocator) +{ + STDMETHOD_(PALLOCATOR_PROPERTIES_EX, KsGetProperties)( + THIS + ) PURE; + STDMETHOD_(VOID, KsSetProperties)( + THIS_ + PALLOCATOR_PROPERTIES_EX + ) PURE; + STDMETHOD_(VOID, KsSetAllocatorHandle)( + THIS_ + HANDLE AllocatorHandle + ) PURE; + STDMETHOD_(HANDLE, KsCreateAllocatorAndGetHandle)( + THIS_ + IKsPin* KsPin + ) PURE; +}; + +typedef enum { + KsPeekOperation_PeekOnly, + KsPeekOperation_AddRef +} KSPEEKOPERATION; + +typedef struct _KSSTREAM_SEGMENT *PKSSTREAM_SEGMENT; + +interface DECLSPEC_UUID("b61178d1-a2d9-11cf-9e53-00aa00a216a1") IKsPin; + +#undef INTERFACE +#define INTERFACE IKsPin +DECLARE_INTERFACE_(IKsPin, IUnknown) +{ + STDMETHOD(KsQueryMediums)( + THIS_ + PKSMULTIPLE_ITEM* MediumList + ) PURE; + STDMETHOD(KsQueryInterfaces)( + THIS_ + PKSMULTIPLE_ITEM* InterfaceList + ) PURE; + STDMETHOD(KsCreateSinkPinHandle)( + THIS_ + KSPIN_INTERFACE& Interface, + KSPIN_MEDIUM& Medium + ) PURE; + STDMETHOD(KsGetCurrentCommunication)( + THIS_ + KSPIN_COMMUNICATION *Communication, + KSPIN_INTERFACE *Interface, + KSPIN_MEDIUM *Medium + ) PURE; + STDMETHOD(KsPropagateAcquire)( + THIS + ) PURE; + STDMETHOD(KsDeliver)( + THIS_ + IMediaSample* Sample, + ULONG Flags + ) PURE; + STDMETHOD(KsMediaSamplesCompleted)( + THIS_ + PKSSTREAM_SEGMENT StreamSegment + ) PURE; + STDMETHOD_(IMemAllocator *, KsPeekAllocator)( + THIS_ + KSPEEKOPERATION Operation + ) PURE; + STDMETHOD(KsReceiveAllocator)( + THIS_ + IMemAllocator *MemAllocator + ) PURE; + STDMETHOD(KsRenegotiateAllocator)( + THIS + ) PURE; + STDMETHOD_(LONG, KsIncrementPendingIoCount)( + THIS + ) PURE; + STDMETHOD_(LONG, KsDecrementPendingIoCount)( + THIS + ) PURE; + STDMETHOD(KsQualityNotify)( + THIS_ + ULONG Proportion, + REFERENCE_TIME TimeDelta + ) PURE; +}; + +interface DECLSPEC_UUID("7bb38260-d19c-11d2-b38a-00a0c95ec22e") IKsPinEx; +#undef INTERFACE +#define INTERFACE IKsPinEx +DECLARE_INTERFACE_(IKsPinEx, IKsPin) +{ + STDMETHOD_(VOID, KsNotifyError)( + THIS_ + IMediaSample* Sample, + HRESULT hr + ) PURE; +}; + +interface DECLSPEC_UUID("e539cd90-a8b4-11d1-8189-00a0c9062802") IKsPinPipe; +#undef INTERFACE +#define INTERFACE IKsPinPipe +DECLARE_INTERFACE_(IKsPinPipe, IUnknown) +{ + STDMETHOD(KsGetPinFramingCache)( + THIS_ + PKSALLOCATOR_FRAMING_EX *FramingEx, + PFRAMING_PROP FramingProp, + FRAMING_CACHE_OPS Option + ) PURE; + STDMETHOD(KsSetPinFramingCache)( + THIS_ + PKSALLOCATOR_FRAMING_EX FramingEx, + PFRAMING_PROP FramingProp, + FRAMING_CACHE_OPS Option + ) PURE; + STDMETHOD_(IPin*, KsGetConnectedPin)( + THIS + ) PURE; + STDMETHOD_(IKsAllocatorEx*, KsGetPipe)( + THIS_ + KSPEEKOPERATION Operation + ) PURE; + STDMETHOD(KsSetPipe)( + THIS_ + IKsAllocatorEx *KsAllocator + ) PURE; + STDMETHOD_(ULONG, KsGetPipeAllocatorFlag)( + THIS + ) PURE; + STDMETHOD(KsSetPipeAllocatorFlag)( + THIS_ + ULONG Flag + ) PURE; + STDMETHOD_(GUID, KsGetPinBusCache)( + THIS + ) PURE; + STDMETHOD(KsSetPinBusCache)( + THIS_ + GUID Bus + ) PURE; +// +// very useful methods for tracing. +// + STDMETHOD_(PWCHAR, KsGetPinName)( + THIS + ) PURE; + STDMETHOD_(PWCHAR, KsGetFilterName)( + THIS + ) PURE; +}; + + +interface DECLSPEC_UUID("CD5EBE6B-8B6E-11D1-8AE0-00A0C9223196") IKsPinFactory; +#undef INTERFACE +#define INTERFACE IKsPinFactory +DECLARE_INTERFACE_(IKsPinFactory, IUnknown) +{ + STDMETHOD(KsPinFactory)( + THIS_ + ULONG* PinFactory + ) PURE; +}; + +typedef enum { + KsIoOperation_Write, + KsIoOperation_Read +} KSIOOPERATION; + +interface DECLSPEC_UUID("5ffbaa02-49a3-11d0-9f36-00aa00a216a1") IKsDataTypeHandler; +#undef INTERFACE +#define INTERFACE IKsDataTypeHandler +DECLARE_INTERFACE_(IKsDataTypeHandler, IUnknown) +{ + STDMETHOD(KsCompleteIoOperation)( + THIS_ + IMediaSample *Sample, + PVOID StreamHeader, + KSIOOPERATION IoOperation, + BOOL Cancelled + ) PURE; + STDMETHOD(KsIsMediaTypeInRanges)( + THIS_ + PVOID DataRanges + ) PURE; + STDMETHOD(KsPrepareIoOperation)( + THIS_ + IMediaSample *Sample, + PVOID StreamHeader, + KSIOOPERATION IoOperation + ) PURE; + STDMETHOD(KsQueryExtendedSize)( + THIS_ + ULONG* ExtendedSize + ) PURE; + STDMETHOD(KsSetMediaType)( + THIS_ + const AM_MEDIA_TYPE* AmMediaType + ) PURE; +}; + +interface DECLSPEC_UUID("827D1A0E-0F73-11D2-B27A-00A0C9223196") IKsDataTypeCompletion; +#undef INTERFACE +#define INTERFACE IKsDataTypeCompletion +DECLARE_INTERFACE_(IKsDataTypeCompletion, IUnknown) +{ + STDMETHOD(KsCompleteMediaType)( + THIS_ + HANDLE FilterHandle, + ULONG PinFactoryId, + AM_MEDIA_TYPE* AmMediaType + ) PURE; +}; + +interface DECLSPEC_UUID("D3ABC7E0-9A61-11d0-A40D-00A0C9223196") IKsInterfaceHandler; +#undef INTERFACE +#define INTERFACE IKsInterfaceHandler +DECLARE_INTERFACE_(IKsInterfaceHandler, IUnknown) +{ + STDMETHOD(KsSetPin)( + THIS_ + IKsPin *KsPin + ) PURE; + STDMETHOD(KsProcessMediaSamples)( + THIS_ + IKsDataTypeHandler *KsDataTypeHandler, + IMediaSample** SampleList, + PLONG SampleCount, + KSIOOPERATION IoOperation, + PKSSTREAM_SEGMENT *StreamSegment + ) PURE; + STDMETHOD(KsCompleteIo)( + THIS_ + PKSSTREAM_SEGMENT StreamSegment + ) PURE; +}; + + +// +// This structure definition is the common header required by the proxy to +// dispatch the stream segment to the interface handler. Interface handlers +// will create extended structures to include other information such as +// media samples, extended header size and so on. +// + +typedef struct _KSSTREAM_SEGMENT { + IKsInterfaceHandler *KsInterfaceHandler; + IKsDataTypeHandler *KsDataTypeHandler; + KSIOOPERATION IoOperation; + HANDLE CompletionEvent; + +} KSSTREAM_SEGMENT; + +interface DECLSPEC_UUID("423c13a2-2070-11d0-9ef7-00aa00a216a1") IKsObject; +#undef INTERFACE +#define INTERFACE IKsObject +DECLARE_INTERFACE_(IKsObject, IUnknown) +{ + STDMETHOD_(HANDLE, KsGetObjectHandle)( + THIS + ) PURE; +}; + +interface DECLSPEC_UUID("97ebaacb-95bd-11d0-a3ea-00a0c9223196") IKsQualityForwarder; +#undef INTERFACE +#define INTERFACE IKsQualityForwarder +DECLARE_INTERFACE_(IKsQualityForwarder, IKsObject) +{ + STDMETHOD_(VOID, KsFlushClient)( + THIS_ + IKsPin* Pin + ) PURE; +}; + +interface DECLSPEC_UUID("412bd695-f84b-46c1-ac73-54196dbc8fa7") IKsNotifyEvent; +#undef INTERFACE +#define INTERFACE IKsNotifyEvent +DECLARE_INTERFACE_(IKsNotifyEvent, IUnknown) +{ + STDMETHOD(KsNotifyEvent)( + THIS_ + ULONG Event, + ULONG_PTR lParam1, + ULONG_PTR lParam2 + ) PURE; +}; + +KSDDKAPI +HRESULT +WINAPI +KsResolveRequiredAttributes( + PKSDATARANGE DataRange, + PKSMULTIPLE_ITEM Attributes OPTIONAL + ); + +KSDDKAPI +HRESULT +WINAPI +KsOpenDefaultDevice( + REFGUID Category, + ACCESS_MASK Access, + PHANDLE DeviceHandle + ); +KSDDKAPI +HRESULT +WINAPI +KsSynchronousDeviceControl( + HANDLE Handle, + ULONG IoControl, + PVOID InBuffer, + ULONG InLength, + PVOID OutBuffer, + ULONG OutLength, + PULONG BytesReturned + ); +KSDDKAPI +HRESULT +WINAPI +KsGetMultiplePinFactoryItems( + HANDLE FilterHandle, + ULONG PinFactoryId, + ULONG PropertyId, + PVOID* Items + ); +KSDDKAPI +HRESULT +WINAPI +KsGetMediaTypeCount( + HANDLE FilterHandle, + ULONG PinFactoryId, + ULONG* MediaTypeCount + ); +KSDDKAPI +HRESULT +WINAPI +KsGetMediaType( + int Position, + AM_MEDIA_TYPE* AmMediaType, + HANDLE FilterHandle, + ULONG PinFactoryId + ); + +#endif // __STREAMS__ + +#ifndef _IKsPropertySet_ +#if !defined(__cplusplus) || _MSC_VER < 1100 +DEFINE_GUIDEX(IID_IKsPropertySet); +#endif // !defined(__cplusplus) || _MSC_VER < 1100 +#endif // _IKsPropertySet_ + +#ifndef _IKsControl_ +#if !defined(__cplusplus) || _MSC_VER < 1100 +DEFINE_GUIDEX(IID_IKsControl); +#endif // !defined(__cplusplus) || _MSC_VER < 1100 +#endif // _IKsControl_ + +#if !defined(__cplusplus) || _MSC_VER < 1100 +DEFINE_GUIDEX(IID_IKsAggregateControl); +#endif // !defined(__cplusplus) || _MSC_VER < 1100 + +#ifndef _IKsTopology_ +#if !defined(__cplusplus) || _MSC_VER < 1100 +DEFINE_GUIDEX(IID_IKsTopology); +#endif // !defined(__cplusplus) || _MSC_VER < 1100 +#endif // _IKsTopology_ + +DEFINE_GUIDSTRUCT("17CCA71B-ECD7-11D0-B908-00A0C9223196", CLSID_Proxy); +#define CLSID_Proxy DEFINE_GUIDNAMED(CLSID_Proxy) + +#else // !_KS_ + +#ifndef _IKsPropertySet_ +#if !defined(__cplusplus) || _MSC_VER < 1100 +DEFINE_GUID(IID_IKsPropertySet, STATIC_IID_IKsPropertySet); +#endif // !defined(__cplusplus) || _MSC_VER < 1100 +#endif // _IKsPropertySet_ + +#if !defined(__cplusplus) || _MSC_VER < 1100 +DEFINE_GUID(CLSID_Proxy, STATIC_CLSID_Proxy); +#else // defined(__cplusplus) && _MSC_VER >= 1100 +DECLSPEC_UUID("17CCA71B-ECD7-11D0-B908-00A0C9223196") CLSID_Proxy; +#endif // defined(__cplusplus) && _MSC_VER >= 1100 + +#endif // !_KS_ + +#ifndef _IKsPropertySet_ +#define _IKsPropertySet_ + +#define KSPROPERTY_SUPPORT_GET 1 +#define KSPROPERTY_SUPPORT_SET 2 + +#ifdef DECLARE_INTERFACE_ + +interface DECLSPEC_UUID("31EFAC30-515C-11d0-A9AA-00aa0061be93") IKsPropertySet; +#undef INTERFACE +#define INTERFACE IKsPropertySet +DECLARE_INTERFACE_(IKsPropertySet, IUnknown) +{ + STDMETHOD(Set)( + THIS_ + IN REFGUID PropSet, + IN ULONG Id, + IN LPVOID InstanceData, + IN ULONG InstanceLength, + IN LPVOID PropertyData, + IN ULONG DataLength + ) PURE; + + STDMETHOD(Get)( + THIS_ + IN REFGUID PropSet, + IN ULONG Id, + IN LPVOID InstanceData, + IN ULONG InstanceLength, + OUT LPVOID PropertyData, + IN ULONG DataLength, + OUT ULONG* BytesReturned + ) PURE; + + STDMETHOD(QuerySupported)( + THIS_ + IN REFGUID PropSet, + IN ULONG Id, + OUT ULONG* TypeSupport + ) PURE; +}; + +#endif // DECLARE_INTERFACE_ + +#endif // _IKsPropertySet_ + +#ifndef _IKsControl_ +#define _IKsControl_ + +#ifdef DECLARE_INTERFACE_ + +interface DECLSPEC_UUID("28F54685-06FD-11D2-B27A-00A0C9223196") IKsControl; +#undef INTERFACE +#define INTERFACE IKsControl +DECLARE_INTERFACE_(IKsControl, IUnknown) +{ + STDMETHOD(KsProperty)( + THIS_ + IN PKSPROPERTY Property, + IN ULONG PropertyLength, + IN OUT LPVOID PropertyData, + IN ULONG DataLength, + OUT ULONG* BytesReturned + ) PURE; + STDMETHOD(KsMethod)( + THIS_ + IN PKSMETHOD Method, + IN ULONG MethodLength, + IN OUT LPVOID MethodData, + IN ULONG DataLength, + OUT ULONG* BytesReturned + ) PURE; + STDMETHOD(KsEvent)( + THIS_ + IN PKSEVENT Event OPTIONAL, + IN ULONG EventLength, + IN OUT LPVOID EventData, + IN ULONG DataLength, + OUT ULONG* BytesReturned + ) PURE; +}; + +#endif // DECLARE_INTERFACE_ + +#endif // _IKsControl_ + + +#ifdef DECLARE_INTERFACE_ + +interface DECLSPEC_UUID("7F40EAC0-3947-11D2-874E-00A0C9223196") IKsAggregateControl; +#undef INTERFACE +#define INTERFACE IKsAggregateControl +DECLARE_INTERFACE_(IKsAggregateControl, IUnknown) +{ + STDMETHOD(KsAddAggregate)( + THIS_ + IN REFGUID AggregateClass + ) PURE; + STDMETHOD(KsRemoveAggregate)( + THIS_ + IN REFGUID AggregateClass + ) PURE; +}; + +#endif // DECLARE_INTERFACE_ + +#ifndef _IKsTopology_ +#define _IKsTopology_ + +#ifdef DECLARE_INTERFACE_ + +interface DECLSPEC_UUID("28F54683-06FD-11D2-B27A-00A0C9223196") IKsTopology; +#undef INTERFACE +#define INTERFACE IKsTopology +DECLARE_INTERFACE_(IKsTopology, IUnknown) +{ + STDMETHOD(CreateNodeInstance)( + THIS_ + IN ULONG NodeId, + IN ULONG Flags, + IN ACCESS_MASK DesiredAccess, + IN IUnknown* UnkOuter OPTIONAL, + IN REFGUID InterfaceId, + OUT LPVOID* Interface + ) PURE; +}; + +#endif // DECLARE_INTERFACE_ + +#endif // _IKsTopology_ + +#ifdef __cplusplus +} +#endif // __cplusplus + +#endif // __KSPROXY__ diff --git a/videoInputSrcAndDemos/libs/DShow/Include/ksuuids.h b/videoInputSrcAndDemos/libs/DShow/Include/ksuuids.h index da41d67..816fff2 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/ksuuids.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/ksuuids.h @@ -1,244 +1,244 @@ -//------------------------------------------------------------------------------ -// File: ksuuids.h -// -// Desc: Contains the GUIDs for the MediaType type, subtype fields and format -// types for DVD/MPEG2 media types. -// -// Copyright (c) 1992 - 2002, Microsoft Corporation. All rights reserved. -//------------------------------------------------------------------------------ - - -// -// --- MPEG 2 definitions --- -// - -// 36523B13-8EE5-11d1-8CA3-0060B057664A -OUR_GUID_ENTRY(MEDIATYPE_MPEG2_PACK, -0x36523B13, 0x8EE5, 0x11d1, 0x8C, 0xA3, 0x00, 0x60, 0xB0, 0x57, 0x66, 0x4A) - -// e06d8020-db46-11cf-b4d1-00805f6cbbea -OUR_GUID_ENTRY(MEDIATYPE_MPEG2_PES, -0xe06d8020, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x5f, 0x6c, 0xbb, 0xea) - - -#if 0 -DEFINE_GUID(MEDIATYPE_CONTROL, -0xe06d8021, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x05f, 0x6c, 0xbb, 0xea); -#endif // #if 0 - - -OUR_GUID_ENTRY( MEDIATYPE_MPEG2_SECTIONS, - 0x455f176c, 0x4b06, 0x47ce, 0x9a, 0xef, 0x8c, 0xae, 0xf7, 0x3d, 0xf7, 0xb5) - -OUR_GUID_ENTRY(MEDIASUBTYPE_ATSC_SI, -0xb3c7397c, 0xd303, 0x414d, 0xb3, 0x3c, 0x4e, 0xd2, 0xc9, 0xd2, 0x97, 0x33) - -OUR_GUID_ENTRY(MEDIASUBTYPE_DVB_SI, -0xe9dd31a3, 0x221d, 0x4adb, 0x85, 0x32, 0x9a, 0xf3, 0x9, 0xc1, 0xa4, 0x8) - - -// {C892E55B-252D-42b5-A316-D997E7A5D995} -OUR_GUID_ENTRY(MEDIASUBTYPE_MPEG2DATA, -0xc892e55b, 0x252d, 0x42b5, 0xa3, 0x16, 0xd9, 0x97, 0xe7, 0xa5, 0xd9, 0x95) - - - -// e06d8026-db46-11cf-b4d1-00805f6cbbea -OUR_GUID_ENTRY(MEDIASUBTYPE_MPEG2_VIDEO, -0xe06d8026, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x5f, 0x6c, 0xbb, 0xea) - -// use MPEG2VIDEOINFO (defined below) with FORMAT_MPEG2_VIDEO -// e06d80e3-db46-11cf-b4d1-00805f6cbbea -OUR_GUID_ENTRY(FORMAT_MPEG2_VIDEO, -0xe06d80e3, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x5f, 0x6c, 0xbb, 0xea) - -// F72A76A0-EB0A-11d0-ACE4-0000C0CC16BA (FORMAT_VideoInfo2) -OUR_GUID_ENTRY(FORMAT_VIDEOINFO2, -0xf72a76A0L, 0xeb0a, 0x11d0, 0xac, 0xe4, 0x0, 0x0, 0xc0, 0xcc, 0x16, 0xba) - -// MPEG2 Other subtypes -// e06d8022-db46-11cf-b4d1-00805f6cbbea -OUR_GUID_ENTRY(MEDIASUBTYPE_MPEG2_PROGRAM, -0xe06d8022, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x05f, 0x6c, 0xbb, 0xea) - -// e06d8023-db46-11cf-b4d1-00805f6cbbea -OUR_GUID_ENTRY(MEDIASUBTYPE_MPEG2_TRANSPORT, -0xe06d8023, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x05f, 0x6c, 0xbb, 0xea) - -// 138AA9A4-1EE2-4c5b-988E-19ABFDBC8A11 -OUR_GUID_ENTRY(MEDIASUBTYPE_MPEG2_TRANSPORT_STRIDE, -0x138aa9a4, 0x1ee2, 0x4c5b, 0x98, 0x8e, 0x19, 0xab, 0xfd, 0xbc, 0x8a, 0x11) - -// e06d802b-db46-11cf-b4d1-00805f6cbbea -OUR_GUID_ENTRY(MEDIASUBTYPE_MPEG2_AUDIO, -0xe06d802b, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x05f, 0x6c, 0xbb, 0xea) - -// e06d802c-db46-11cf-b4d1-00805f6cbbea -OUR_GUID_ENTRY(MEDIASUBTYPE_DOLBY_AC3, -0xe06d802c, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x05f, 0x6c, 0xbb, 0xea) - -// e06d802d-db46-11cf-b4d1-00805f6cbbea -OUR_GUID_ENTRY(MEDIASUBTYPE_DVD_SUBPICTURE, -0xe06d802d, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x05f, 0x6c, 0xbb, 0xea) - -// e06d8032-db46-11cf-b4d1-00805f6cbbea -OUR_GUID_ENTRY(MEDIASUBTYPE_DVD_LPCM_AUDIO, -0xe06d8032, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x05f, 0x6c, 0xbb, 0xea) - -// e06d8033-db46-11cf-b4d1-00805f6cbbea -OUR_GUID_ENTRY(MEDIASUBTYPE_DTS, -0xe06d8033, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x05f, 0x6c, 0xbb, 0xea) - -// e06d8034-db46-11cf-b4d1-00805f6cbbea -OUR_GUID_ENTRY(MEDIASUBTYPE_SDDS, -0xe06d8034, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x05f, 0x6c, 0xbb, 0xea) - -// DVD-related mediatypes -// ED0B916A-044D-11d1-AA78-00C04FC31D60 -OUR_GUID_ENTRY(MEDIATYPE_DVD_ENCRYPTED_PACK, -0xed0b916a, 0x044d, 0x11d1, 0xaa, 0x78, 0x00, 0xc0, 0x04f, 0xc3, 0x1d, 0x60) - -// e06d802e-db46-11cf-b4d1-00805f6cbbea -OUR_GUID_ENTRY(MEDIATYPE_DVD_NAVIGATION, -0xe06d802e, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x05f, 0x6c, 0xbb, 0xea) - -// e06d802f-db46-11cf-b4d1-00805f6cbbea -OUR_GUID_ENTRY(MEDIASUBTYPE_DVD_NAVIGATION_PCI, -0xe06d802f, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x05f, 0x6c, 0xbb, 0xea) - -// e06d8030-db46-11cf-b4d1-00805f6cbbea -OUR_GUID_ENTRY(MEDIASUBTYPE_DVD_NAVIGATION_DSI, -0xe06d8030, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x05f, 0x6c, 0xbb, 0xea) - -// e06d8031-db46-11cf-b4d1-00805f6cbbea -OUR_GUID_ENTRY(MEDIASUBTYPE_DVD_NAVIGATION_PROVIDER, -0xe06d8031, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x05f, 0x6c, 0xbb, 0xea) - -// -// DVD - MPEG2/AC3-related Formats -// -// e06d80e3-db46-11cf-b4d1-00805f6cbbea -OUR_GUID_ENTRY(FORMAT_MPEG2Video, -0xe06d80e3, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x05f, 0x6c, 0xbb, 0xea) - -// e06d80e4-db46-11cf-b4d1-00805f6cbbea -OUR_GUID_ENTRY(FORMAT_DolbyAC3, -0xe06d80e4, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x05f, 0x6c, 0xbb, 0xea) - -// e06d80e5-db46-11cf-b4d1-00805f6cbbea -OUR_GUID_ENTRY(FORMAT_MPEG2Audio, -0xe06d80e5, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x05f, 0x6c, 0xbb, 0xea) - -// e06d80e6-db46-11cf-b4d1-00805f6cbbea -OUR_GUID_ENTRY(FORMAT_DVD_LPCMAudio, -0xe06d80e6, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x05f, 0x6c, 0xbb, 0xea) - - -// -// KS Property Set Id (to communicate with the WDM Proxy filter) -- from -// ksmedia.h of WDM DDK. -// - -// BFABE720-6E1F-11D0-BCF2-444553540000 -OUR_GUID_ENTRY(AM_KSPROPSETID_AC3, -0xBFABE720, 0x6E1F, 0x11D0, 0xBC, 0xF2, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00) - -// ac390460-43af-11d0-bd6a-003505c103a9 -OUR_GUID_ENTRY(AM_KSPROPSETID_DvdSubPic, -0xac390460, 0x43af, 0x11d0, 0xbd, 0x6a, 0x00, 0x35, 0x05, 0xc1, 0x03, 0xa9) - -// 0E8A0A40L-6AEF-11D0-9ED0-00A024CA19B3 -OUR_GUID_ENTRY(AM_KSPROPSETID_CopyProt, -0x0E8A0A40, 0x6AEF, 0x11D0, 0x9E, 0xD0, 0x00, 0xA0, 0x24, 0xCA, 0x19, 0xB3) - -// A503C5C0-1D1D-11d1-AD80-444553540000 -OUR_GUID_ENTRY(AM_KSPROPSETID_TSRateChange, -0xa503c5c0, 0x1d1d, 0x11d1, 0xad, 0x80, 0x44, 0x45, 0x53, 0x54, 0x0, 0x0) - -// 3577EB09-9582-477f-B29C-B0C452A4FF9A -OUR_GUID_ENTRY(AM_KSPROPSETID_DVD_RateChange, -0x3577eb09, 0x9582, 0x477f, 0xb2, 0x9c, 0xb0, 0xc4, 0x52, 0xa4, 0xff, 0x9a) - -// ae4720ae-aa71-42d8-b82a-fffdf58b76fd -OUR_GUID_ENTRY(AM_KSPROPSETID_DvdKaraoke, -0xae4720ae, 0xaa71, 0x42d8, 0xb8, 0x2a, 0xff, 0xfd, 0xf5, 0x8b, 0x76, 0xfd) - -// c830acbd-ab07-492f-8852-45b6987c2979 -OUR_GUID_ENTRY(AM_KSPROPSETID_FrameStep, -0xc830acbd, 0xab07, 0x492f, 0x88, 0x52, 0x45, 0xb6, 0x98, 0x7c, 0x29, 0x79) - -// -// KS categories from ks.h and ksmedia.h -// -// - -// 65E8773D-8F56-11D0-A3B9-00A0C9223196 -OUR_GUID_ENTRY(AM_KSCATEGORY_CAPTURE, -0x65E8773DL, 0x8F56, 0x11D0, 0xA3, 0xB9, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96) - -// 65E8773E-8F56-11D0-A3B9-00A0C9223196 -OUR_GUID_ENTRY(AM_KSCATEGORY_RENDER, -0x65E8773EL, 0x8F56, 0x11D0, 0xA3, 0xB9, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96) - -// 1E84C900-7E70-11D0-A5D6-28DB04C10000 -OUR_GUID_ENTRY(AM_KSCATEGORY_DATACOMPRESSOR, -0x1E84C900L, 0x7E70, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00) - -// 6994AD04-93EF-11D0-A3CC-00A0C9223196 -OUR_GUID_ENTRY(AM_KSCATEGORY_AUDIO, -0x6994AD04L, 0x93EF, 0x11D0, 0xA3, 0xCC, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96) - -// 6994AD05-93EF-11D0-A3CC-00A0C9223196 -OUR_GUID_ENTRY(AM_KSCATEGORY_VIDEO, -0x6994AD05L, 0x93EF, 0x11D0, 0xA3, 0xCC, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96) - -// a799a800-a46d-11d0-a18c-00a02401dcd4 -OUR_GUID_ENTRY(AM_KSCATEGORY_TVTUNER, -0xa799a800L, 0xa46d, 0x11d0, 0xa1, 0x8c, 0x00, 0xa0, 0x24, 0x01, 0xdc, 0xd4) - -// a799a801-a46d-11d0-a18c-00a02401dcd4 -OUR_GUID_ENTRY(AM_KSCATEGORY_CROSSBAR, -0xa799a801L, 0xa46d, 0x11d0, 0xa1, 0x8c, 0x00, 0xa0, 0x24, 0x01, 0xdc, 0xd4) - -// a799a802-a46d-11d0-a18c-00a02401dcd4 -OUR_GUID_ENTRY(AM_KSCATEGORY_TVAUDIO, -0xa799a802L, 0xa46d, 0x11d0, 0xa1, 0x8c, 0x00, 0xa0, 0x24, 0x01, 0xdc, 0xd4) - - -// 07dad660L-22f1-11d1-a9f4-00c04fbbde8f -OUR_GUID_ENTRY(AM_KSCATEGORY_VBICODEC, -0x07dad660L, 0x22f1, 0x11d1, 0xa9, 0xf4, 0x00, 0xc0, 0x4f, 0xbb, 0xde, 0x8f) - - -// 0A4252A0L-7E70-11D0-A5D6-28DB04C10000 -OUR_GUID_ENTRY(AM_KSCATEGORY_SPLITTER, -0x0A4252A0L, 0x7E70, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00) - - -// -// GUIDs needed to support IKsPin interface -// - -// d3abc7e0l-9a61-11d0-a40d00a0c9223196 -OUR_GUID_ENTRY(IID_IKsInterfaceHandler, -0xD3ABC7E0L, 0x9A61, 0x11D0, 0xA4, 0x0D, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96) - -// 5ffbaa02l-49a3-11d0-9f3600aa00a216a1 -OUR_GUID_ENTRY(IID_IKsDataTypeHandler, -0x5FFBAA02L, 0x49A3, 0x11D0, 0x9F, 0x36, 0x00, 0xAA, 0x00, 0xA2, 0x16, 0xA1) - -// b61178d1-a2d9-11cf-9e53-00aa00a216a1 -OUR_GUID_ENTRY(IID_IKsPin, -0xb61178d1L, 0xa2d9, 0x11cf, 0x9e, 0x53, 0x00, 0xaa, 0x00, 0xa2, 0x16, 0xa1) - -// 28F54685-06FD-11D2-B27A-00A0C9223196 -OUR_GUID_ENTRY(IID_IKsControl, -0x28F54685L, 0x06FD, 0x11D2, 0xB2, 0x7A, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96) - -// CD5EBE6B-8B6E-11D1-8AE0-00A0C9223196 -OUR_GUID_ENTRY(IID_IKsPinFactory, -0xCD5EBE6BL, 0x8B6E, 0x11D1, 0x8A, 0xE0, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96) - -// 1A8766A0-62CE-11CF-A5D6-28DB04C10000 -OUR_GUID_ENTRY(AM_INTERFACESETID_Standard, -0x1A8766A0L, 0x62CE, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00) +//------------------------------------------------------------------------------ +// File: ksuuids.h +// +// Desc: Contains the GUIDs for the MediaType type, subtype fields and format +// types for DVD/MPEG2 media types. +// +// Copyright (c) 1992 - 2002, Microsoft Corporation. All rights reserved. +//------------------------------------------------------------------------------ + + +// +// --- MPEG 2 definitions --- +// + +// 36523B13-8EE5-11d1-8CA3-0060B057664A +OUR_GUID_ENTRY(MEDIATYPE_MPEG2_PACK, +0x36523B13, 0x8EE5, 0x11d1, 0x8C, 0xA3, 0x00, 0x60, 0xB0, 0x57, 0x66, 0x4A) + +// e06d8020-db46-11cf-b4d1-00805f6cbbea +OUR_GUID_ENTRY(MEDIATYPE_MPEG2_PES, +0xe06d8020, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x5f, 0x6c, 0xbb, 0xea) + + +#if 0 +DEFINE_GUID(MEDIATYPE_CONTROL, +0xe06d8021, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x05f, 0x6c, 0xbb, 0xea); +#endif // #if 0 + + +OUR_GUID_ENTRY( MEDIATYPE_MPEG2_SECTIONS, + 0x455f176c, 0x4b06, 0x47ce, 0x9a, 0xef, 0x8c, 0xae, 0xf7, 0x3d, 0xf7, 0xb5) + +OUR_GUID_ENTRY(MEDIASUBTYPE_ATSC_SI, +0xb3c7397c, 0xd303, 0x414d, 0xb3, 0x3c, 0x4e, 0xd2, 0xc9, 0xd2, 0x97, 0x33) + +OUR_GUID_ENTRY(MEDIASUBTYPE_DVB_SI, +0xe9dd31a3, 0x221d, 0x4adb, 0x85, 0x32, 0x9a, 0xf3, 0x9, 0xc1, 0xa4, 0x8) + + +// {C892E55B-252D-42b5-A316-D997E7A5D995} +OUR_GUID_ENTRY(MEDIASUBTYPE_MPEG2DATA, +0xc892e55b, 0x252d, 0x42b5, 0xa3, 0x16, 0xd9, 0x97, 0xe7, 0xa5, 0xd9, 0x95) + + + +// e06d8026-db46-11cf-b4d1-00805f6cbbea +OUR_GUID_ENTRY(MEDIASUBTYPE_MPEG2_VIDEO, +0xe06d8026, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x5f, 0x6c, 0xbb, 0xea) + +// use MPEG2VIDEOINFO (defined below) with FORMAT_MPEG2_VIDEO +// e06d80e3-db46-11cf-b4d1-00805f6cbbea +OUR_GUID_ENTRY(FORMAT_MPEG2_VIDEO, +0xe06d80e3, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x5f, 0x6c, 0xbb, 0xea) + +// F72A76A0-EB0A-11d0-ACE4-0000C0CC16BA (FORMAT_VideoInfo2) +OUR_GUID_ENTRY(FORMAT_VIDEOINFO2, +0xf72a76A0L, 0xeb0a, 0x11d0, 0xac, 0xe4, 0x0, 0x0, 0xc0, 0xcc, 0x16, 0xba) + +// MPEG2 Other subtypes +// e06d8022-db46-11cf-b4d1-00805f6cbbea +OUR_GUID_ENTRY(MEDIASUBTYPE_MPEG2_PROGRAM, +0xe06d8022, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x05f, 0x6c, 0xbb, 0xea) + +// e06d8023-db46-11cf-b4d1-00805f6cbbea +OUR_GUID_ENTRY(MEDIASUBTYPE_MPEG2_TRANSPORT, +0xe06d8023, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x05f, 0x6c, 0xbb, 0xea) + +// 138AA9A4-1EE2-4c5b-988E-19ABFDBC8A11 +OUR_GUID_ENTRY(MEDIASUBTYPE_MPEG2_TRANSPORT_STRIDE, +0x138aa9a4, 0x1ee2, 0x4c5b, 0x98, 0x8e, 0x19, 0xab, 0xfd, 0xbc, 0x8a, 0x11) + +// e06d802b-db46-11cf-b4d1-00805f6cbbea +OUR_GUID_ENTRY(MEDIASUBTYPE_MPEG2_AUDIO, +0xe06d802b, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x05f, 0x6c, 0xbb, 0xea) + +// e06d802c-db46-11cf-b4d1-00805f6cbbea +OUR_GUID_ENTRY(MEDIASUBTYPE_DOLBY_AC3, +0xe06d802c, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x05f, 0x6c, 0xbb, 0xea) + +// e06d802d-db46-11cf-b4d1-00805f6cbbea +OUR_GUID_ENTRY(MEDIASUBTYPE_DVD_SUBPICTURE, +0xe06d802d, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x05f, 0x6c, 0xbb, 0xea) + +// e06d8032-db46-11cf-b4d1-00805f6cbbea +OUR_GUID_ENTRY(MEDIASUBTYPE_DVD_LPCM_AUDIO, +0xe06d8032, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x05f, 0x6c, 0xbb, 0xea) + +// e06d8033-db46-11cf-b4d1-00805f6cbbea +OUR_GUID_ENTRY(MEDIASUBTYPE_DTS, +0xe06d8033, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x05f, 0x6c, 0xbb, 0xea) + +// e06d8034-db46-11cf-b4d1-00805f6cbbea +OUR_GUID_ENTRY(MEDIASUBTYPE_SDDS, +0xe06d8034, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x05f, 0x6c, 0xbb, 0xea) + +// DVD-related mediatypes +// ED0B916A-044D-11d1-AA78-00C04FC31D60 +OUR_GUID_ENTRY(MEDIATYPE_DVD_ENCRYPTED_PACK, +0xed0b916a, 0x044d, 0x11d1, 0xaa, 0x78, 0x00, 0xc0, 0x04f, 0xc3, 0x1d, 0x60) + +// e06d802e-db46-11cf-b4d1-00805f6cbbea +OUR_GUID_ENTRY(MEDIATYPE_DVD_NAVIGATION, +0xe06d802e, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x05f, 0x6c, 0xbb, 0xea) + +// e06d802f-db46-11cf-b4d1-00805f6cbbea +OUR_GUID_ENTRY(MEDIASUBTYPE_DVD_NAVIGATION_PCI, +0xe06d802f, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x05f, 0x6c, 0xbb, 0xea) + +// e06d8030-db46-11cf-b4d1-00805f6cbbea +OUR_GUID_ENTRY(MEDIASUBTYPE_DVD_NAVIGATION_DSI, +0xe06d8030, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x05f, 0x6c, 0xbb, 0xea) + +// e06d8031-db46-11cf-b4d1-00805f6cbbea +OUR_GUID_ENTRY(MEDIASUBTYPE_DVD_NAVIGATION_PROVIDER, +0xe06d8031, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x05f, 0x6c, 0xbb, 0xea) + +// +// DVD - MPEG2/AC3-related Formats +// +// e06d80e3-db46-11cf-b4d1-00805f6cbbea +OUR_GUID_ENTRY(FORMAT_MPEG2Video, +0xe06d80e3, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x05f, 0x6c, 0xbb, 0xea) + +// e06d80e4-db46-11cf-b4d1-00805f6cbbea +OUR_GUID_ENTRY(FORMAT_DolbyAC3, +0xe06d80e4, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x05f, 0x6c, 0xbb, 0xea) + +// e06d80e5-db46-11cf-b4d1-00805f6cbbea +OUR_GUID_ENTRY(FORMAT_MPEG2Audio, +0xe06d80e5, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x05f, 0x6c, 0xbb, 0xea) + +// e06d80e6-db46-11cf-b4d1-00805f6cbbea +OUR_GUID_ENTRY(FORMAT_DVD_LPCMAudio, +0xe06d80e6, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x05f, 0x6c, 0xbb, 0xea) + + +// +// KS Property Set Id (to communicate with the WDM Proxy filter) -- from +// ksmedia.h of WDM DDK. +// + +// BFABE720-6E1F-11D0-BCF2-444553540000 +OUR_GUID_ENTRY(AM_KSPROPSETID_AC3, +0xBFABE720, 0x6E1F, 0x11D0, 0xBC, 0xF2, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00) + +// ac390460-43af-11d0-bd6a-003505c103a9 +OUR_GUID_ENTRY(AM_KSPROPSETID_DvdSubPic, +0xac390460, 0x43af, 0x11d0, 0xbd, 0x6a, 0x00, 0x35, 0x05, 0xc1, 0x03, 0xa9) + +// 0E8A0A40L-6AEF-11D0-9ED0-00A024CA19B3 +OUR_GUID_ENTRY(AM_KSPROPSETID_CopyProt, +0x0E8A0A40, 0x6AEF, 0x11D0, 0x9E, 0xD0, 0x00, 0xA0, 0x24, 0xCA, 0x19, 0xB3) + +// A503C5C0-1D1D-11d1-AD80-444553540000 +OUR_GUID_ENTRY(AM_KSPROPSETID_TSRateChange, +0xa503c5c0, 0x1d1d, 0x11d1, 0xad, 0x80, 0x44, 0x45, 0x53, 0x54, 0x0, 0x0) + +// 3577EB09-9582-477f-B29C-B0C452A4FF9A +OUR_GUID_ENTRY(AM_KSPROPSETID_DVD_RateChange, +0x3577eb09, 0x9582, 0x477f, 0xb2, 0x9c, 0xb0, 0xc4, 0x52, 0xa4, 0xff, 0x9a) + +// ae4720ae-aa71-42d8-b82a-fffdf58b76fd +OUR_GUID_ENTRY(AM_KSPROPSETID_DvdKaraoke, +0xae4720ae, 0xaa71, 0x42d8, 0xb8, 0x2a, 0xff, 0xfd, 0xf5, 0x8b, 0x76, 0xfd) + +// c830acbd-ab07-492f-8852-45b6987c2979 +OUR_GUID_ENTRY(AM_KSPROPSETID_FrameStep, +0xc830acbd, 0xab07, 0x492f, 0x88, 0x52, 0x45, 0xb6, 0x98, 0x7c, 0x29, 0x79) + +// +// KS categories from ks.h and ksmedia.h +// +// + +// 65E8773D-8F56-11D0-A3B9-00A0C9223196 +OUR_GUID_ENTRY(AM_KSCATEGORY_CAPTURE, +0x65E8773DL, 0x8F56, 0x11D0, 0xA3, 0xB9, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96) + +// 65E8773E-8F56-11D0-A3B9-00A0C9223196 +OUR_GUID_ENTRY(AM_KSCATEGORY_RENDER, +0x65E8773EL, 0x8F56, 0x11D0, 0xA3, 0xB9, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96) + +// 1E84C900-7E70-11D0-A5D6-28DB04C10000 +OUR_GUID_ENTRY(AM_KSCATEGORY_DATACOMPRESSOR, +0x1E84C900L, 0x7E70, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00) + +// 6994AD04-93EF-11D0-A3CC-00A0C9223196 +OUR_GUID_ENTRY(AM_KSCATEGORY_AUDIO, +0x6994AD04L, 0x93EF, 0x11D0, 0xA3, 0xCC, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96) + +// 6994AD05-93EF-11D0-A3CC-00A0C9223196 +OUR_GUID_ENTRY(AM_KSCATEGORY_VIDEO, +0x6994AD05L, 0x93EF, 0x11D0, 0xA3, 0xCC, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96) + +// a799a800-a46d-11d0-a18c-00a02401dcd4 +OUR_GUID_ENTRY(AM_KSCATEGORY_TVTUNER, +0xa799a800L, 0xa46d, 0x11d0, 0xa1, 0x8c, 0x00, 0xa0, 0x24, 0x01, 0xdc, 0xd4) + +// a799a801-a46d-11d0-a18c-00a02401dcd4 +OUR_GUID_ENTRY(AM_KSCATEGORY_CROSSBAR, +0xa799a801L, 0xa46d, 0x11d0, 0xa1, 0x8c, 0x00, 0xa0, 0x24, 0x01, 0xdc, 0xd4) + +// a799a802-a46d-11d0-a18c-00a02401dcd4 +OUR_GUID_ENTRY(AM_KSCATEGORY_TVAUDIO, +0xa799a802L, 0xa46d, 0x11d0, 0xa1, 0x8c, 0x00, 0xa0, 0x24, 0x01, 0xdc, 0xd4) + + +// 07dad660L-22f1-11d1-a9f4-00c04fbbde8f +OUR_GUID_ENTRY(AM_KSCATEGORY_VBICODEC, +0x07dad660L, 0x22f1, 0x11d1, 0xa9, 0xf4, 0x00, 0xc0, 0x4f, 0xbb, 0xde, 0x8f) + + +// 0A4252A0L-7E70-11D0-A5D6-28DB04C10000 +OUR_GUID_ENTRY(AM_KSCATEGORY_SPLITTER, +0x0A4252A0L, 0x7E70, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00) + + +// +// GUIDs needed to support IKsPin interface +// + +// d3abc7e0l-9a61-11d0-a40d00a0c9223196 +OUR_GUID_ENTRY(IID_IKsInterfaceHandler, +0xD3ABC7E0L, 0x9A61, 0x11D0, 0xA4, 0x0D, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96) + +// 5ffbaa02l-49a3-11d0-9f3600aa00a216a1 +OUR_GUID_ENTRY(IID_IKsDataTypeHandler, +0x5FFBAA02L, 0x49A3, 0x11D0, 0x9F, 0x36, 0x00, 0xAA, 0x00, 0xA2, 0x16, 0xA1) + +// b61178d1-a2d9-11cf-9e53-00aa00a216a1 +OUR_GUID_ENTRY(IID_IKsPin, +0xb61178d1L, 0xa2d9, 0x11cf, 0x9e, 0x53, 0x00, 0xaa, 0x00, 0xa2, 0x16, 0xa1) + +// 28F54685-06FD-11D2-B27A-00A0C9223196 +OUR_GUID_ENTRY(IID_IKsControl, +0x28F54685L, 0x06FD, 0x11D2, 0xB2, 0x7A, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96) + +// CD5EBE6B-8B6E-11D1-8AE0-00A0C9223196 +OUR_GUID_ENTRY(IID_IKsPinFactory, +0xCD5EBE6BL, 0x8B6E, 0x11D1, 0x8A, 0xE0, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96) + +// 1A8766A0-62CE-11CF-A5D6-28DB04C10000 +OUR_GUID_ENTRY(AM_INTERFACESETID_Standard, +0x1A8766A0L, 0x62CE, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00) diff --git a/videoInputSrcAndDemos/libs/DShow/Include/measure.h b/videoInputSrcAndDemos/libs/DShow/Include/measure.h index 75365e3..f90eb15 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/measure.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/measure.h @@ -1,222 +1,222 @@ -//------------------------------------------------------------------------------ -// File: Measure.h -// -// Desc: DirectShow base classes. -// -// Copyright (c) Microsoft Corporation. All rights reserved. -//------------------------------------------------------------------------------ - - -/* - The idea is to pepper the source code with interesting measurements and - have the last few thousand of these recorded in a circular buffer that - can be post-processed to give interesting numbers. - - WHAT THE LOG LOOKS LIKE: - - Time (sec) Type Delta Incident_Name - 0.055,41 NOTE -. Incident Nine - Another note - 0.055,42 NOTE 0.000,01 Incident Nine - Another note - 0.055,44 NOTE 0.000,02 Incident Nine - Another note - 0.055,45 STOP -. Incident Eight - Also random - 0.055,47 START -. Incident Seven - Random - 0.055,49 NOTE 0.000,05 Incident Nine - Another note - ------- ---------------- - 0.125,60 STOP 0.000,03 Msr_Stop - 0.125,62 START -. Msr_Start - 0.125,63 START -. Incident Two - Start/Stop - 0.125,65 STOP 0.000,03 Msr_Start - 0.125,66 START -. Msr_Stop - 0.125,68 STOP 0.000,05 Incident Two - Start/Stop - 0.125,70 STOP 0.000,04 Msr_Stop - 0.125,72 START -. Msr_Start - 0.125,73 START -. Incident Two - Start/Stop - 0.125,75 STOP 0.000,03 Msr_Start - 0.125,77 START -. Msr_Stop - 0.125,78 STOP 0.000,05 Incident Two - Start/Stop - 0.125,80 STOP 0.000,03 Msr_Stop - 0.125,81 NOTE -. Incident Three - single Note - 0.125,83 START -. Incident Four - Start, no stop - 0.125,85 START -. Incident Five - Single Start/Stop - 0.125,87 STOP 0.000,02 Incident Five - Single Start/Stop - -Number Average StdDev Smallest Largest Incident_Name - 10 0.000,58 0.000,10 0.000,55 0.000,85 Incident One - Note - 50 0.000,05 0.000,00 0.000,05 0.000,05 Incident Two - Start/Stop - 1 -. -. -. -. Incident Three - single Note - 0 -. -. -. -. Incident Four - Start, no stop - 1 0.000,02 -. 0.000,02 0.000,02 Incident Five - Single Start/Stop - 0 -. -. -. -. Incident Six - zero occurrences - 100 0.000,25 0.000,12 0.000,02 0.000,62 Incident Seven - Random - 100 0.000,79 0.000,48 0.000,02 0.001,92 Incident Eight - Also random - 5895 0.000,01 0.000,01 0.000,01 0.000,56 Incident Nine - Another note - 10 0.000,03 0.000,00 0.000,03 0.000,04 Msr_Note - 50 0.000,03 0.000,00 0.000,03 0.000,04 Msr_Start - 50 0.000,04 0.000,03 0.000,03 0.000,31 Msr_Stop - - WHAT IT MEANS: - The log shows what happened and when. Each line shows the time at which - something happened (see WHAT YOU CODE below) what it was that happened - and (if approporate) the time since the corresponding previous event - (that's the delta column). - - The statistics show how many times each event occurred, what the average - delta time was, also the standard deviation, largest and smalles delta. - - WHAT YOU CODE: - - Before anything else executes: - register your ids - - int id1 = Msr_Register("Incident One - Note"); - int id2 = Msr_Register("Incident Two - Start/Stop"); - int id3 = Msr_Register("Incident Three - single Note"); - etc. - - At interesting moments: - - // To measure a repetitive event - e.g. end of bitblt to screen - Msr_Note(Id9); // e.g. "video frame hiting the screen NOW!" - - or - - // To measure an elapsed time e.g. time taken to decode an MPEG B-frame - Msr_Start(Id2); // e.g. "Starting to decode MPEG B-frame" - . . . - MsrStop(Id2); // "Finished MPEG decode" - - At the end: - - HANDLE hFile; - hFile = CreateFile("Perf.log", GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL); - Msr_Dump(hFile); // This writes the log out to the file - CloseHandle(hFile); - - or - - Msr_Dump(NULL); // This writes it to DbgLog((LOG_TRACE,0, ... )); - // but if you are writing it out to the debugger - // then the times are probably all garbage because - // the debugger can make things run awfully slow. - - A given id should be used either for start / stop or Note calls. If Notes - are mixed in with Starts and Stops their statistics will be gibberish. - - If you code the calls in upper case i.e. MSR_START(idMunge); then you get - macros which will turn into nothing unless PERF is defined. - - You can reset the statistical counts for a given id by calling Reset(Id). - They are reset by default at the start. - It logs Reset as a special incident, so you can see it in the log. - - The log is a circular buffer in storage (to try to minimise disk I/O). - It overwrites the oldest entries once full. The statistics include ALL - incidents since the last Reset, whether still visible in the log or not. -*/ - -#ifndef __MEASURE__ -#define __MEASURE__ - -#ifdef PERF -#define MSR_INIT() Msr_Init() -#define MSR_TERMINATE() Msr_Terminate() -#define MSR_REGISTER(a) Msr_Register(a) -#define MSR_RESET(a) Msr_Reset(a) -#define MSR_CONTROL(a) Msr_Control(a) -#define MSR_START(a) Msr_Start(a) -#define MSR_STOP(a) Msr_Stop(a) -#define MSR_NOTE(a) Msr_Note(a) -#define MSR_INTEGER(a,b) Msr_Integer(a,b) -#define MSR_DUMP(a) Msr_Dump(a) -#define MSR_DUMPSTATS(a) Msr_DumpStats(a) -#else -#define MSR_INIT() ((void)0) -#define MSR_TERMINATE() ((void)0) -#define MSR_REGISTER(a) 0 -#define MSR_RESET(a) ((void)0) -#define MSR_CONTROL(a) ((void)0) -#define MSR_START(a) ((void)0) -#define MSR_STOP(a) ((void)0) -#define MSR_NOTE(a) ((void)0) -#define MSR_INTEGER(a,b) ((void)0) -#define MSR_DUMP(a) ((void)0) -#define MSR_DUMPSTATS(a) ((void)0) -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -// This must be called first - (called by the DllEntry) - -void WINAPI Msr_Init(void); - - -// Call this last to clean up (or just let it fall off the end - who cares?) - -void WINAPI Msr_Terminate(void); - - -// Call this to get an Id for an "incident" that you can pass to Start, Stop or Note -// everything that's logged is called an "incident". - -int WINAPI Msr_Register(LPTSTR Incident); - - -// Reset the statistical counts for an incident - -void WINAPI Msr_Reset(int Id); - - -// Reset all the counts for all incidents -#define MSR_RESET_ALL 0 -#define MSR_PAUSE 1 -#define MSR_RUN 2 - -void WINAPI Msr_Control(int iAction); - - -// log the start of an operation - -void WINAPI Msr_Start(int Id); - - -// log the end of an operation - -void WINAPI Msr_Stop(int Id); - - -// log a one-off or repetitive operation - -void WINAPI Msr_Note(int Id); - - -// log an integer (on which we can see statistics later) -void WINAPI Msr_Integer(int Id, int n); - - -// print out all the vaialable log (it may have wrapped) and then the statistics. -// When the log wraps you lose log but the statistics are still complete. -// hFIle==NULL => use DbgLog -// otherwise hFile must have come from CreateFile or OpenFile. - -void WINAPI Msr_Dump(HANDLE hFile); - - -// just dump the statistics - never mind the log - -void WINAPI Msr_DumpStats(HANDLE hFile); - -// Type definitions in case you want to declare a pointer to the dump functions -// (makes it a trifle easier to do dynamic linking -// i.e. LoadModule, GetProcAddress and call that) - -// Typedefs so can declare MSR_DUMPPROC *MsrDumpStats; or whatever -typedef void WINAPI MSR_DUMPPROC(HANDLE hFile); -typedef void WINAPI MSR_CONTROLPROC(int iAction); - - -#ifdef __cplusplus -} -#endif - -#endif // __MEASURE__ +//------------------------------------------------------------------------------ +// File: Measure.h +// +// Desc: DirectShow base classes. +// +// Copyright (c) Microsoft Corporation. All rights reserved. +//------------------------------------------------------------------------------ + + +/* + The idea is to pepper the source code with interesting measurements and + have the last few thousand of these recorded in a circular buffer that + can be post-processed to give interesting numbers. + + WHAT THE LOG LOOKS LIKE: + + Time (sec) Type Delta Incident_Name + 0.055,41 NOTE -. Incident Nine - Another note + 0.055,42 NOTE 0.000,01 Incident Nine - Another note + 0.055,44 NOTE 0.000,02 Incident Nine - Another note + 0.055,45 STOP -. Incident Eight - Also random + 0.055,47 START -. Incident Seven - Random + 0.055,49 NOTE 0.000,05 Incident Nine - Another note + ------- ---------------- + 0.125,60 STOP 0.000,03 Msr_Stop + 0.125,62 START -. Msr_Start + 0.125,63 START -. Incident Two - Start/Stop + 0.125,65 STOP 0.000,03 Msr_Start + 0.125,66 START -. Msr_Stop + 0.125,68 STOP 0.000,05 Incident Two - Start/Stop + 0.125,70 STOP 0.000,04 Msr_Stop + 0.125,72 START -. Msr_Start + 0.125,73 START -. Incident Two - Start/Stop + 0.125,75 STOP 0.000,03 Msr_Start + 0.125,77 START -. Msr_Stop + 0.125,78 STOP 0.000,05 Incident Two - Start/Stop + 0.125,80 STOP 0.000,03 Msr_Stop + 0.125,81 NOTE -. Incident Three - single Note + 0.125,83 START -. Incident Four - Start, no stop + 0.125,85 START -. Incident Five - Single Start/Stop + 0.125,87 STOP 0.000,02 Incident Five - Single Start/Stop + +Number Average StdDev Smallest Largest Incident_Name + 10 0.000,58 0.000,10 0.000,55 0.000,85 Incident One - Note + 50 0.000,05 0.000,00 0.000,05 0.000,05 Incident Two - Start/Stop + 1 -. -. -. -. Incident Three - single Note + 0 -. -. -. -. Incident Four - Start, no stop + 1 0.000,02 -. 0.000,02 0.000,02 Incident Five - Single Start/Stop + 0 -. -. -. -. Incident Six - zero occurrences + 100 0.000,25 0.000,12 0.000,02 0.000,62 Incident Seven - Random + 100 0.000,79 0.000,48 0.000,02 0.001,92 Incident Eight - Also random + 5895 0.000,01 0.000,01 0.000,01 0.000,56 Incident Nine - Another note + 10 0.000,03 0.000,00 0.000,03 0.000,04 Msr_Note + 50 0.000,03 0.000,00 0.000,03 0.000,04 Msr_Start + 50 0.000,04 0.000,03 0.000,03 0.000,31 Msr_Stop + + WHAT IT MEANS: + The log shows what happened and when. Each line shows the time at which + something happened (see WHAT YOU CODE below) what it was that happened + and (if approporate) the time since the corresponding previous event + (that's the delta column). + + The statistics show how many times each event occurred, what the average + delta time was, also the standard deviation, largest and smalles delta. + + WHAT YOU CODE: + + Before anything else executes: - register your ids + + int id1 = Msr_Register("Incident One - Note"); + int id2 = Msr_Register("Incident Two - Start/Stop"); + int id3 = Msr_Register("Incident Three - single Note"); + etc. + + At interesting moments: + + // To measure a repetitive event - e.g. end of bitblt to screen + Msr_Note(Id9); // e.g. "video frame hiting the screen NOW!" + + or + + // To measure an elapsed time e.g. time taken to decode an MPEG B-frame + Msr_Start(Id2); // e.g. "Starting to decode MPEG B-frame" + . . . + MsrStop(Id2); // "Finished MPEG decode" + + At the end: + + HANDLE hFile; + hFile = CreateFile("Perf.log", GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL); + Msr_Dump(hFile); // This writes the log out to the file + CloseHandle(hFile); + + or + + Msr_Dump(NULL); // This writes it to DbgLog((LOG_TRACE,0, ... )); + // but if you are writing it out to the debugger + // then the times are probably all garbage because + // the debugger can make things run awfully slow. + + A given id should be used either for start / stop or Note calls. If Notes + are mixed in with Starts and Stops their statistics will be gibberish. + + If you code the calls in upper case i.e. MSR_START(idMunge); then you get + macros which will turn into nothing unless PERF is defined. + + You can reset the statistical counts for a given id by calling Reset(Id). + They are reset by default at the start. + It logs Reset as a special incident, so you can see it in the log. + + The log is a circular buffer in storage (to try to minimise disk I/O). + It overwrites the oldest entries once full. The statistics include ALL + incidents since the last Reset, whether still visible in the log or not. +*/ + +#ifndef __MEASURE__ +#define __MEASURE__ + +#ifdef PERF +#define MSR_INIT() Msr_Init() +#define MSR_TERMINATE() Msr_Terminate() +#define MSR_REGISTER(a) Msr_Register(a) +#define MSR_RESET(a) Msr_Reset(a) +#define MSR_CONTROL(a) Msr_Control(a) +#define MSR_START(a) Msr_Start(a) +#define MSR_STOP(a) Msr_Stop(a) +#define MSR_NOTE(a) Msr_Note(a) +#define MSR_INTEGER(a,b) Msr_Integer(a,b) +#define MSR_DUMP(a) Msr_Dump(a) +#define MSR_DUMPSTATS(a) Msr_DumpStats(a) +#else +#define MSR_INIT() ((void)0) +#define MSR_TERMINATE() ((void)0) +#define MSR_REGISTER(a) 0 +#define MSR_RESET(a) ((void)0) +#define MSR_CONTROL(a) ((void)0) +#define MSR_START(a) ((void)0) +#define MSR_STOP(a) ((void)0) +#define MSR_NOTE(a) ((void)0) +#define MSR_INTEGER(a,b) ((void)0) +#define MSR_DUMP(a) ((void)0) +#define MSR_DUMPSTATS(a) ((void)0) +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +// This must be called first - (called by the DllEntry) + +void WINAPI Msr_Init(void); + + +// Call this last to clean up (or just let it fall off the end - who cares?) + +void WINAPI Msr_Terminate(void); + + +// Call this to get an Id for an "incident" that you can pass to Start, Stop or Note +// everything that's logged is called an "incident". + +int WINAPI Msr_Register(LPTSTR Incident); + + +// Reset the statistical counts for an incident + +void WINAPI Msr_Reset(int Id); + + +// Reset all the counts for all incidents +#define MSR_RESET_ALL 0 +#define MSR_PAUSE 1 +#define MSR_RUN 2 + +void WINAPI Msr_Control(int iAction); + + +// log the start of an operation + +void WINAPI Msr_Start(int Id); + + +// log the end of an operation + +void WINAPI Msr_Stop(int Id); + + +// log a one-off or repetitive operation + +void WINAPI Msr_Note(int Id); + + +// log an integer (on which we can see statistics later) +void WINAPI Msr_Integer(int Id, int n); + + +// print out all the vaialable log (it may have wrapped) and then the statistics. +// When the log wraps you lose log but the statistics are still complete. +// hFIle==NULL => use DbgLog +// otherwise hFile must have come from CreateFile or OpenFile. + +void WINAPI Msr_Dump(HANDLE hFile); + + +// just dump the statistics - never mind the log + +void WINAPI Msr_DumpStats(HANDLE hFile); + +// Type definitions in case you want to declare a pointer to the dump functions +// (makes it a trifle easier to do dynamic linking +// i.e. LoadModule, GetProcAddress and call that) + +// Typedefs so can declare MSR_DUMPPROC *MsrDumpStats; or whatever +typedef void WINAPI MSR_DUMPPROC(HANDLE hFile); +typedef void WINAPI MSR_CONTROLPROC(int iAction); + + +#ifdef __cplusplus +} +#endif + +#endif // __MEASURE__ diff --git a/videoInputSrcAndDemos/libs/DShow/Include/mediaerr.h b/videoInputSrcAndDemos/libs/DShow/Include/mediaerr.h index 4f6abe2..74c242a 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/mediaerr.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/mediaerr.h @@ -1,20 +1,20 @@ -//------------------------------------------------------------------------------ -// File: MediaErr.h -// -// Desc: Shell error codes -// -// Copyright (c) 1999 - 2001, Microsoft Corporation. All rights reserved. -//------------------------------------------------------------------------------ - - -#ifndef _MEDIAERR_H_ -#define _MEDIAERR_H_ - -#define DMO_E_INVALIDSTREAMINDEX 0x80040201 -#define DMO_E_INVALIDTYPE 0x80040202 -#define DMO_E_TYPE_NOT_SET 0x80040203 -#define DMO_E_NOTACCEPTING 0x80040204 -#define DMO_E_TYPE_NOT_ACCEPTED 0x80040205 -#define DMO_E_NO_MORE_ITEMS 0x80040206 - -#endif _MEDIAERR_H_ +//------------------------------------------------------------------------------ +// File: MediaErr.h +// +// Desc: Shell error codes +// +// Copyright (c) 1999 - 2001, Microsoft Corporation. All rights reserved. +//------------------------------------------------------------------------------ + + +#ifndef _MEDIAERR_H_ +#define _MEDIAERR_H_ + +#define DMO_E_INVALIDSTREAMINDEX 0x80040201 +#define DMO_E_INVALIDTYPE 0x80040202 +#define DMO_E_TYPE_NOT_SET 0x80040203 +#define DMO_E_NOTACCEPTING 0x80040204 +#define DMO_E_TYPE_NOT_ACCEPTED 0x80040205 +#define DMO_E_NO_MORE_ITEMS 0x80040206 + +#endif _MEDIAERR_H_ diff --git a/videoInputSrcAndDemos/libs/DShow/Include/mediaobj.h b/videoInputSrcAndDemos/libs/DShow/Include/mediaobj.h index a3dfe36..d90d094 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/mediaobj.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/mediaobj.h @@ -1,1574 +1,1574 @@ - -#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 mediaobj.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 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 -#endif // __RPCNDR_H_VERSION__ - -#ifndef COM_NO_WINDOWS_H -#include "windows.h" -#include "ole2.h" -#endif /*COM_NO_WINDOWS_H*/ - -#ifndef __mediaobj_h__ -#define __mediaobj_h__ - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -#pragma once -#endif - -/* Forward Declarations */ - -#ifndef __IMediaBuffer_FWD_DEFINED__ -#define __IMediaBuffer_FWD_DEFINED__ -typedef interface IMediaBuffer IMediaBuffer; -#endif /* __IMediaBuffer_FWD_DEFINED__ */ - - -#ifndef __IMediaObject_FWD_DEFINED__ -#define __IMediaObject_FWD_DEFINED__ -typedef interface IMediaObject IMediaObject; -#endif /* __IMediaObject_FWD_DEFINED__ */ - - -#ifndef __IEnumDMO_FWD_DEFINED__ -#define __IEnumDMO_FWD_DEFINED__ -typedef interface IEnumDMO IEnumDMO; -#endif /* __IEnumDMO_FWD_DEFINED__ */ - - -#ifndef __IMediaObjectInPlace_FWD_DEFINED__ -#define __IMediaObjectInPlace_FWD_DEFINED__ -typedef interface IMediaObjectInPlace IMediaObjectInPlace; -#endif /* __IMediaObjectInPlace_FWD_DEFINED__ */ - - -#ifndef __IDMOQualityControl_FWD_DEFINED__ -#define __IDMOQualityControl_FWD_DEFINED__ -typedef interface IDMOQualityControl IDMOQualityControl; -#endif /* __IDMOQualityControl_FWD_DEFINED__ */ - - -#ifndef __IDMOVideoOutputOptimizations_FWD_DEFINED__ -#define __IDMOVideoOutputOptimizations_FWD_DEFINED__ -typedef interface IDMOVideoOutputOptimizations IDMOVideoOutputOptimizations; -#endif /* __IDMOVideoOutputOptimizations_FWD_DEFINED__ */ - - -/* header files for imported files */ -#include "unknwn.h" -#include "objidl.h" - -#ifdef __cplusplus -extern "C"{ -#endif - -void * __RPC_USER MIDL_user_allocate(size_t); -void __RPC_USER MIDL_user_free( void * ); - -/* interface __MIDL_itf_mediaobj_0000 */ -/* [local] */ - -#ifdef __strmif_h__ -typedef AM_MEDIA_TYPE DMO_MEDIA_TYPE; -#else -typedef struct _DMOMediaType - { - GUID majortype; - GUID subtype; - BOOL bFixedSizeSamples; - BOOL bTemporalCompression; - ULONG lSampleSize; - GUID formattype; - IUnknown *pUnk; - ULONG cbFormat; - /* [size_is] */ BYTE *pbFormat; - } DMO_MEDIA_TYPE; - -typedef LONGLONG REFERENCE_TIME; - -#endif - -enum _DMO_INPUT_DATA_BUFFER_FLAGS - { DMO_INPUT_DATA_BUFFERF_SYNCPOINT = 0x1, - DMO_INPUT_DATA_BUFFERF_TIME = 0x2, - DMO_INPUT_DATA_BUFFERF_TIMELENGTH = 0x4 - } ; - -enum _DMO_OUTPUT_DATA_BUFFER_FLAGS - { DMO_OUTPUT_DATA_BUFFERF_SYNCPOINT = 0x1, - DMO_OUTPUT_DATA_BUFFERF_TIME = 0x2, - DMO_OUTPUT_DATA_BUFFERF_TIMELENGTH = 0x4, - DMO_OUTPUT_DATA_BUFFERF_INCOMPLETE = 0x1000000 - } ; - -enum _DMO_INPUT_STATUS_FLAGS - { DMO_INPUT_STATUSF_ACCEPT_DATA = 0x1 - } ; - -enum _DMO_INPUT_STREAM_INFO_FLAGS - { DMO_INPUT_STREAMF_WHOLE_SAMPLES = 0x1, - DMO_INPUT_STREAMF_SINGLE_SAMPLE_PER_BUFFER = 0x2, - DMO_INPUT_STREAMF_FIXED_SAMPLE_SIZE = 0x4, - DMO_INPUT_STREAMF_HOLDS_BUFFERS = 0x8 - } ; - -enum _DMO_OUTPUT_STREAM_INFO_FLAGS - { DMO_OUTPUT_STREAMF_WHOLE_SAMPLES = 0x1, - DMO_OUTPUT_STREAMF_SINGLE_SAMPLE_PER_BUFFER = 0x2, - DMO_OUTPUT_STREAMF_FIXED_SAMPLE_SIZE = 0x4, - DMO_OUTPUT_STREAMF_DISCARDABLE = 0x8, - DMO_OUTPUT_STREAMF_OPTIONAL = 0x10 - } ; - -enum _DMO_SET_TYPE_FLAGS - { DMO_SET_TYPEF_TEST_ONLY = 0x1, - DMO_SET_TYPEF_CLEAR = 0x2 - } ; - -enum _DMO_PROCESS_OUTPUT_FLAGS - { DMO_PROCESS_OUTPUT_DISCARD_WHEN_NO_BUFFER = 0x1 - } ; - - -extern RPC_IF_HANDLE __MIDL_itf_mediaobj_0000_v0_0_c_ifspec; -extern RPC_IF_HANDLE __MIDL_itf_mediaobj_0000_v0_0_s_ifspec; - -#ifndef __IMediaBuffer_INTERFACE_DEFINED__ -#define __IMediaBuffer_INTERFACE_DEFINED__ - -/* interface IMediaBuffer */ -/* [uuid][object] */ - - -EXTERN_C const IID IID_IMediaBuffer; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("59eff8b9-938c-4a26-82f2-95cb84cdc837") - IMediaBuffer : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE SetLength( - DWORD cbLength) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetMaxLength( - /* [out] */ DWORD *pcbMaxLength) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetBufferAndLength( - /* [out] */ BYTE **ppBuffer, - /* [out] */ DWORD *pcbLength) = 0; - - }; - -#else /* C style interface */ - - typedef struct IMediaBufferVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IMediaBuffer * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IMediaBuffer * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IMediaBuffer * This); - - HRESULT ( STDMETHODCALLTYPE *SetLength )( - IMediaBuffer * This, - DWORD cbLength); - - HRESULT ( STDMETHODCALLTYPE *GetMaxLength )( - IMediaBuffer * This, - /* [out] */ DWORD *pcbMaxLength); - - HRESULT ( STDMETHODCALLTYPE *GetBufferAndLength )( - IMediaBuffer * This, - /* [out] */ BYTE **ppBuffer, - /* [out] */ DWORD *pcbLength); - - END_INTERFACE - } IMediaBufferVtbl; - - interface IMediaBuffer - { - CONST_VTBL struct IMediaBufferVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IMediaBuffer_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IMediaBuffer_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IMediaBuffer_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IMediaBuffer_SetLength(This,cbLength) \ - (This)->lpVtbl -> SetLength(This,cbLength) - -#define IMediaBuffer_GetMaxLength(This,pcbMaxLength) \ - (This)->lpVtbl -> GetMaxLength(This,pcbMaxLength) - -#define IMediaBuffer_GetBufferAndLength(This,ppBuffer,pcbLength) \ - (This)->lpVtbl -> GetBufferAndLength(This,ppBuffer,pcbLength) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IMediaBuffer_SetLength_Proxy( - IMediaBuffer * This, - DWORD cbLength); - - -void __RPC_STUB IMediaBuffer_SetLength_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IMediaBuffer_GetMaxLength_Proxy( - IMediaBuffer * This, - /* [out] */ DWORD *pcbMaxLength); - - -void __RPC_STUB IMediaBuffer_GetMaxLength_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IMediaBuffer_GetBufferAndLength_Proxy( - IMediaBuffer * This, - /* [out] */ BYTE **ppBuffer, - /* [out] */ DWORD *pcbLength); - - -void __RPC_STUB IMediaBuffer_GetBufferAndLength_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IMediaBuffer_INTERFACE_DEFINED__ */ - - -/* interface __MIDL_itf_mediaobj_0090 */ -/* [local] */ - -typedef struct _DMO_OUTPUT_DATA_BUFFER - { - IMediaBuffer *pBuffer; - DWORD dwStatus; - REFERENCE_TIME rtTimestamp; - REFERENCE_TIME rtTimelength; - } DMO_OUTPUT_DATA_BUFFER; - -typedef struct _DMO_OUTPUT_DATA_BUFFER *PDMO_OUTPUT_DATA_BUFFER; - - - -extern RPC_IF_HANDLE __MIDL_itf_mediaobj_0090_v0_0_c_ifspec; -extern RPC_IF_HANDLE __MIDL_itf_mediaobj_0090_v0_0_s_ifspec; - -#ifndef __IMediaObject_INTERFACE_DEFINED__ -#define __IMediaObject_INTERFACE_DEFINED__ - -/* interface IMediaObject */ -/* [uuid][object] */ - - -EXTERN_C const IID IID_IMediaObject; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("d8ad0f58-5494-4102-97c5-ec798e59bcf4") - IMediaObject : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE GetStreamCount( - /* [out] */ DWORD *pcInputStreams, - /* [out] */ DWORD *pcOutputStreams) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetInputStreamInfo( - DWORD dwInputStreamIndex, - /* [out] */ DWORD *pdwFlags) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetOutputStreamInfo( - DWORD dwOutputStreamIndex, - /* [out] */ DWORD *pdwFlags) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetInputType( - DWORD dwInputStreamIndex, - DWORD dwTypeIndex, - /* [out] */ DMO_MEDIA_TYPE *pmt) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetOutputType( - DWORD dwOutputStreamIndex, - DWORD dwTypeIndex, - /* [out] */ DMO_MEDIA_TYPE *pmt) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetInputType( - DWORD dwInputStreamIndex, - /* [in] */ const DMO_MEDIA_TYPE *pmt, - DWORD dwFlags) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetOutputType( - DWORD dwOutputStreamIndex, - /* [in] */ const DMO_MEDIA_TYPE *pmt, - DWORD dwFlags) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetInputCurrentType( - DWORD dwInputStreamIndex, - /* [out] */ DMO_MEDIA_TYPE *pmt) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetOutputCurrentType( - DWORD dwOutputStreamIndex, - /* [out] */ DMO_MEDIA_TYPE *pmt) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetInputSizeInfo( - DWORD dwInputStreamIndex, - /* [out] */ DWORD *pcbSize, - /* [out] */ DWORD *pcbMaxLookahead, - /* [out] */ DWORD *pcbAlignment) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetOutputSizeInfo( - DWORD dwOutputStreamIndex, - /* [out] */ DWORD *pcbSize, - /* [out] */ DWORD *pcbAlignment) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetInputMaxLatency( - DWORD dwInputStreamIndex, - /* [out] */ REFERENCE_TIME *prtMaxLatency) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetInputMaxLatency( - DWORD dwInputStreamIndex, - REFERENCE_TIME rtMaxLatency) = 0; - - virtual HRESULT STDMETHODCALLTYPE Flush( void) = 0; - - virtual HRESULT STDMETHODCALLTYPE Discontinuity( - DWORD dwInputStreamIndex) = 0; - - virtual HRESULT STDMETHODCALLTYPE AllocateStreamingResources( void) = 0; - - virtual HRESULT STDMETHODCALLTYPE FreeStreamingResources( void) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetInputStatus( - DWORD dwInputStreamIndex, - /* [out] */ DWORD *dwFlags) = 0; - - virtual HRESULT STDMETHODCALLTYPE ProcessInput( - DWORD dwInputStreamIndex, - IMediaBuffer *pBuffer, - DWORD dwFlags, - REFERENCE_TIME rtTimestamp, - REFERENCE_TIME rtTimelength) = 0; - - virtual HRESULT STDMETHODCALLTYPE ProcessOutput( - DWORD dwFlags, - DWORD cOutputBufferCount, - /* [size_is][out][in] */ DMO_OUTPUT_DATA_BUFFER *pOutputBuffers, - /* [out] */ DWORD *pdwStatus) = 0; - - virtual HRESULT STDMETHODCALLTYPE Lock( - LONG bLock) = 0; - - }; - -#else /* C style interface */ - - typedef struct IMediaObjectVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IMediaObject * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IMediaObject * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IMediaObject * This); - - HRESULT ( STDMETHODCALLTYPE *GetStreamCount )( - IMediaObject * This, - /* [out] */ DWORD *pcInputStreams, - /* [out] */ DWORD *pcOutputStreams); - - HRESULT ( STDMETHODCALLTYPE *GetInputStreamInfo )( - IMediaObject * This, - DWORD dwInputStreamIndex, - /* [out] */ DWORD *pdwFlags); - - HRESULT ( STDMETHODCALLTYPE *GetOutputStreamInfo )( - IMediaObject * This, - DWORD dwOutputStreamIndex, - /* [out] */ DWORD *pdwFlags); - - HRESULT ( STDMETHODCALLTYPE *GetInputType )( - IMediaObject * This, - DWORD dwInputStreamIndex, - DWORD dwTypeIndex, - /* [out] */ DMO_MEDIA_TYPE *pmt); - - HRESULT ( STDMETHODCALLTYPE *GetOutputType )( - IMediaObject * This, - DWORD dwOutputStreamIndex, - DWORD dwTypeIndex, - /* [out] */ DMO_MEDIA_TYPE *pmt); - - HRESULT ( STDMETHODCALLTYPE *SetInputType )( - IMediaObject * This, - DWORD dwInputStreamIndex, - /* [in] */ const DMO_MEDIA_TYPE *pmt, - DWORD dwFlags); - - HRESULT ( STDMETHODCALLTYPE *SetOutputType )( - IMediaObject * This, - DWORD dwOutputStreamIndex, - /* [in] */ const DMO_MEDIA_TYPE *pmt, - DWORD dwFlags); - - HRESULT ( STDMETHODCALLTYPE *GetInputCurrentType )( - IMediaObject * This, - DWORD dwInputStreamIndex, - /* [out] */ DMO_MEDIA_TYPE *pmt); - - HRESULT ( STDMETHODCALLTYPE *GetOutputCurrentType )( - IMediaObject * This, - DWORD dwOutputStreamIndex, - /* [out] */ DMO_MEDIA_TYPE *pmt); - - HRESULT ( STDMETHODCALLTYPE *GetInputSizeInfo )( - IMediaObject * This, - DWORD dwInputStreamIndex, - /* [out] */ DWORD *pcbSize, - /* [out] */ DWORD *pcbMaxLookahead, - /* [out] */ DWORD *pcbAlignment); - - HRESULT ( STDMETHODCALLTYPE *GetOutputSizeInfo )( - IMediaObject * This, - DWORD dwOutputStreamIndex, - /* [out] */ DWORD *pcbSize, - /* [out] */ DWORD *pcbAlignment); - - HRESULT ( STDMETHODCALLTYPE *GetInputMaxLatency )( - IMediaObject * This, - DWORD dwInputStreamIndex, - /* [out] */ REFERENCE_TIME *prtMaxLatency); - - HRESULT ( STDMETHODCALLTYPE *SetInputMaxLatency )( - IMediaObject * This, - DWORD dwInputStreamIndex, - REFERENCE_TIME rtMaxLatency); - - HRESULT ( STDMETHODCALLTYPE *Flush )( - IMediaObject * This); - - HRESULT ( STDMETHODCALLTYPE *Discontinuity )( - IMediaObject * This, - DWORD dwInputStreamIndex); - - HRESULT ( STDMETHODCALLTYPE *AllocateStreamingResources )( - IMediaObject * This); - - HRESULT ( STDMETHODCALLTYPE *FreeStreamingResources )( - IMediaObject * This); - - HRESULT ( STDMETHODCALLTYPE *GetInputStatus )( - IMediaObject * This, - DWORD dwInputStreamIndex, - /* [out] */ DWORD *dwFlags); - - HRESULT ( STDMETHODCALLTYPE *ProcessInput )( - IMediaObject * This, - DWORD dwInputStreamIndex, - IMediaBuffer *pBuffer, - DWORD dwFlags, - REFERENCE_TIME rtTimestamp, - REFERENCE_TIME rtTimelength); - - HRESULT ( STDMETHODCALLTYPE *ProcessOutput )( - IMediaObject * This, - DWORD dwFlags, - DWORD cOutputBufferCount, - /* [size_is][out][in] */ DMO_OUTPUT_DATA_BUFFER *pOutputBuffers, - /* [out] */ DWORD *pdwStatus); - - HRESULT ( STDMETHODCALLTYPE *Lock )( - IMediaObject * This, - LONG bLock); - - END_INTERFACE - } IMediaObjectVtbl; - - interface IMediaObject - { - CONST_VTBL struct IMediaObjectVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IMediaObject_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IMediaObject_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IMediaObject_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IMediaObject_GetStreamCount(This,pcInputStreams,pcOutputStreams) \ - (This)->lpVtbl -> GetStreamCount(This,pcInputStreams,pcOutputStreams) - -#define IMediaObject_GetInputStreamInfo(This,dwInputStreamIndex,pdwFlags) \ - (This)->lpVtbl -> GetInputStreamInfo(This,dwInputStreamIndex,pdwFlags) - -#define IMediaObject_GetOutputStreamInfo(This,dwOutputStreamIndex,pdwFlags) \ - (This)->lpVtbl -> GetOutputStreamInfo(This,dwOutputStreamIndex,pdwFlags) - -#define IMediaObject_GetInputType(This,dwInputStreamIndex,dwTypeIndex,pmt) \ - (This)->lpVtbl -> GetInputType(This,dwInputStreamIndex,dwTypeIndex,pmt) - -#define IMediaObject_GetOutputType(This,dwOutputStreamIndex,dwTypeIndex,pmt) \ - (This)->lpVtbl -> GetOutputType(This,dwOutputStreamIndex,dwTypeIndex,pmt) - -#define IMediaObject_SetInputType(This,dwInputStreamIndex,pmt,dwFlags) \ - (This)->lpVtbl -> SetInputType(This,dwInputStreamIndex,pmt,dwFlags) - -#define IMediaObject_SetOutputType(This,dwOutputStreamIndex,pmt,dwFlags) \ - (This)->lpVtbl -> SetOutputType(This,dwOutputStreamIndex,pmt,dwFlags) - -#define IMediaObject_GetInputCurrentType(This,dwInputStreamIndex,pmt) \ - (This)->lpVtbl -> GetInputCurrentType(This,dwInputStreamIndex,pmt) - -#define IMediaObject_GetOutputCurrentType(This,dwOutputStreamIndex,pmt) \ - (This)->lpVtbl -> GetOutputCurrentType(This,dwOutputStreamIndex,pmt) - -#define IMediaObject_GetInputSizeInfo(This,dwInputStreamIndex,pcbSize,pcbMaxLookahead,pcbAlignment) \ - (This)->lpVtbl -> GetInputSizeInfo(This,dwInputStreamIndex,pcbSize,pcbMaxLookahead,pcbAlignment) - -#define IMediaObject_GetOutputSizeInfo(This,dwOutputStreamIndex,pcbSize,pcbAlignment) \ - (This)->lpVtbl -> GetOutputSizeInfo(This,dwOutputStreamIndex,pcbSize,pcbAlignment) - -#define IMediaObject_GetInputMaxLatency(This,dwInputStreamIndex,prtMaxLatency) \ - (This)->lpVtbl -> GetInputMaxLatency(This,dwInputStreamIndex,prtMaxLatency) - -#define IMediaObject_SetInputMaxLatency(This,dwInputStreamIndex,rtMaxLatency) \ - (This)->lpVtbl -> SetInputMaxLatency(This,dwInputStreamIndex,rtMaxLatency) - -#define IMediaObject_Flush(This) \ - (This)->lpVtbl -> Flush(This) - -#define IMediaObject_Discontinuity(This,dwInputStreamIndex) \ - (This)->lpVtbl -> Discontinuity(This,dwInputStreamIndex) - -#define IMediaObject_AllocateStreamingResources(This) \ - (This)->lpVtbl -> AllocateStreamingResources(This) - -#define IMediaObject_FreeStreamingResources(This) \ - (This)->lpVtbl -> FreeStreamingResources(This) - -#define IMediaObject_GetInputStatus(This,dwInputStreamIndex,dwFlags) \ - (This)->lpVtbl -> GetInputStatus(This,dwInputStreamIndex,dwFlags) - -#define IMediaObject_ProcessInput(This,dwInputStreamIndex,pBuffer,dwFlags,rtTimestamp,rtTimelength) \ - (This)->lpVtbl -> ProcessInput(This,dwInputStreamIndex,pBuffer,dwFlags,rtTimestamp,rtTimelength) - -#define IMediaObject_ProcessOutput(This,dwFlags,cOutputBufferCount,pOutputBuffers,pdwStatus) \ - (This)->lpVtbl -> ProcessOutput(This,dwFlags,cOutputBufferCount,pOutputBuffers,pdwStatus) - -#define IMediaObject_Lock(This,bLock) \ - (This)->lpVtbl -> Lock(This,bLock) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IMediaObject_GetStreamCount_Proxy( - IMediaObject * This, - /* [out] */ DWORD *pcInputStreams, - /* [out] */ DWORD *pcOutputStreams); - - -void __RPC_STUB IMediaObject_GetStreamCount_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IMediaObject_GetInputStreamInfo_Proxy( - IMediaObject * This, - DWORD dwInputStreamIndex, - /* [out] */ DWORD *pdwFlags); - - -void __RPC_STUB IMediaObject_GetInputStreamInfo_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IMediaObject_GetOutputStreamInfo_Proxy( - IMediaObject * This, - DWORD dwOutputStreamIndex, - /* [out] */ DWORD *pdwFlags); - - -void __RPC_STUB IMediaObject_GetOutputStreamInfo_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IMediaObject_GetInputType_Proxy( - IMediaObject * This, - DWORD dwInputStreamIndex, - DWORD dwTypeIndex, - /* [out] */ DMO_MEDIA_TYPE *pmt); - - -void __RPC_STUB IMediaObject_GetInputType_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IMediaObject_GetOutputType_Proxy( - IMediaObject * This, - DWORD dwOutputStreamIndex, - DWORD dwTypeIndex, - /* [out] */ DMO_MEDIA_TYPE *pmt); - - -void __RPC_STUB IMediaObject_GetOutputType_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IMediaObject_SetInputType_Proxy( - IMediaObject * This, - DWORD dwInputStreamIndex, - /* [in] */ const DMO_MEDIA_TYPE *pmt, - DWORD dwFlags); - - -void __RPC_STUB IMediaObject_SetInputType_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IMediaObject_SetOutputType_Proxy( - IMediaObject * This, - DWORD dwOutputStreamIndex, - /* [in] */ const DMO_MEDIA_TYPE *pmt, - DWORD dwFlags); - - -void __RPC_STUB IMediaObject_SetOutputType_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IMediaObject_GetInputCurrentType_Proxy( - IMediaObject * This, - DWORD dwInputStreamIndex, - /* [out] */ DMO_MEDIA_TYPE *pmt); - - -void __RPC_STUB IMediaObject_GetInputCurrentType_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IMediaObject_GetOutputCurrentType_Proxy( - IMediaObject * This, - DWORD dwOutputStreamIndex, - /* [out] */ DMO_MEDIA_TYPE *pmt); - - -void __RPC_STUB IMediaObject_GetOutputCurrentType_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IMediaObject_GetInputSizeInfo_Proxy( - IMediaObject * This, - DWORD dwInputStreamIndex, - /* [out] */ DWORD *pcbSize, - /* [out] */ DWORD *pcbMaxLookahead, - /* [out] */ DWORD *pcbAlignment); - - -void __RPC_STUB IMediaObject_GetInputSizeInfo_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IMediaObject_GetOutputSizeInfo_Proxy( - IMediaObject * This, - DWORD dwOutputStreamIndex, - /* [out] */ DWORD *pcbSize, - /* [out] */ DWORD *pcbAlignment); - - -void __RPC_STUB IMediaObject_GetOutputSizeInfo_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IMediaObject_GetInputMaxLatency_Proxy( - IMediaObject * This, - DWORD dwInputStreamIndex, - /* [out] */ REFERENCE_TIME *prtMaxLatency); - - -void __RPC_STUB IMediaObject_GetInputMaxLatency_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IMediaObject_SetInputMaxLatency_Proxy( - IMediaObject * This, - DWORD dwInputStreamIndex, - REFERENCE_TIME rtMaxLatency); - - -void __RPC_STUB IMediaObject_SetInputMaxLatency_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IMediaObject_Flush_Proxy( - IMediaObject * This); - - -void __RPC_STUB IMediaObject_Flush_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IMediaObject_Discontinuity_Proxy( - IMediaObject * This, - DWORD dwInputStreamIndex); - - -void __RPC_STUB IMediaObject_Discontinuity_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IMediaObject_AllocateStreamingResources_Proxy( - IMediaObject * This); - - -void __RPC_STUB IMediaObject_AllocateStreamingResources_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IMediaObject_FreeStreamingResources_Proxy( - IMediaObject * This); - - -void __RPC_STUB IMediaObject_FreeStreamingResources_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IMediaObject_GetInputStatus_Proxy( - IMediaObject * This, - DWORD dwInputStreamIndex, - /* [out] */ DWORD *dwFlags); - - -void __RPC_STUB IMediaObject_GetInputStatus_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IMediaObject_ProcessInput_Proxy( - IMediaObject * This, - DWORD dwInputStreamIndex, - IMediaBuffer *pBuffer, - DWORD dwFlags, - REFERENCE_TIME rtTimestamp, - REFERENCE_TIME rtTimelength); - - -void __RPC_STUB IMediaObject_ProcessInput_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IMediaObject_ProcessOutput_Proxy( - IMediaObject * This, - DWORD dwFlags, - DWORD cOutputBufferCount, - /* [size_is][out][in] */ DMO_OUTPUT_DATA_BUFFER *pOutputBuffers, - /* [out] */ DWORD *pdwStatus); - - -void __RPC_STUB IMediaObject_ProcessOutput_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IMediaObject_Lock_Proxy( - IMediaObject * This, - LONG bLock); - - -void __RPC_STUB IMediaObject_Lock_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IMediaObject_INTERFACE_DEFINED__ */ - - -#ifndef __IEnumDMO_INTERFACE_DEFINED__ -#define __IEnumDMO_INTERFACE_DEFINED__ - -/* interface IEnumDMO */ -/* [uuid][object] */ - - -EXTERN_C const IID IID_IEnumDMO; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("2c3cd98a-2bfa-4a53-9c27-5249ba64ba0f") - IEnumDMO : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE Next( - DWORD cItemsToFetch, - /* [length_is][size_is][out] */ CLSID *pCLSID, - /* [string][length_is][size_is][out] */ WCHAR **Names, - /* [out] */ DWORD *pcItemsFetched) = 0; - - virtual HRESULT STDMETHODCALLTYPE Skip( - DWORD cItemsToSkip) = 0; - - virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0; - - virtual HRESULT STDMETHODCALLTYPE Clone( - /* [out] */ IEnumDMO **ppEnum) = 0; - - }; - -#else /* C style interface */ - - typedef struct IEnumDMOVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IEnumDMO * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IEnumDMO * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IEnumDMO * This); - - HRESULT ( STDMETHODCALLTYPE *Next )( - IEnumDMO * This, - DWORD cItemsToFetch, - /* [length_is][size_is][out] */ CLSID *pCLSID, - /* [string][length_is][size_is][out] */ WCHAR **Names, - /* [out] */ DWORD *pcItemsFetched); - - HRESULT ( STDMETHODCALLTYPE *Skip )( - IEnumDMO * This, - DWORD cItemsToSkip); - - HRESULT ( STDMETHODCALLTYPE *Reset )( - IEnumDMO * This); - - HRESULT ( STDMETHODCALLTYPE *Clone )( - IEnumDMO * This, - /* [out] */ IEnumDMO **ppEnum); - - END_INTERFACE - } IEnumDMOVtbl; - - interface IEnumDMO - { - CONST_VTBL struct IEnumDMOVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IEnumDMO_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IEnumDMO_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IEnumDMO_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IEnumDMO_Next(This,cItemsToFetch,pCLSID,Names,pcItemsFetched) \ - (This)->lpVtbl -> Next(This,cItemsToFetch,pCLSID,Names,pcItemsFetched) - -#define IEnumDMO_Skip(This,cItemsToSkip) \ - (This)->lpVtbl -> Skip(This,cItemsToSkip) - -#define IEnumDMO_Reset(This) \ - (This)->lpVtbl -> Reset(This) - -#define IEnumDMO_Clone(This,ppEnum) \ - (This)->lpVtbl -> Clone(This,ppEnum) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IEnumDMO_Next_Proxy( - IEnumDMO * This, - DWORD cItemsToFetch, - /* [length_is][size_is][out] */ CLSID *pCLSID, - /* [string][length_is][size_is][out] */ WCHAR **Names, - /* [out] */ DWORD *pcItemsFetched); - - -void __RPC_STUB IEnumDMO_Next_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IEnumDMO_Skip_Proxy( - IEnumDMO * This, - DWORD cItemsToSkip); - - -void __RPC_STUB IEnumDMO_Skip_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IEnumDMO_Reset_Proxy( - IEnumDMO * This); - - -void __RPC_STUB IEnumDMO_Reset_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IEnumDMO_Clone_Proxy( - IEnumDMO * This, - /* [out] */ IEnumDMO **ppEnum); - - -void __RPC_STUB IEnumDMO_Clone_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IEnumDMO_INTERFACE_DEFINED__ */ - - -/* interface __MIDL_itf_mediaobj_0092 */ -/* [local] */ - - -enum _DMO_INPLACE_PROCESS_FLAGS - { DMO_INPLACE_NORMAL = 0, - DMO_INPLACE_ZERO = 0x1 - } ; - - -extern RPC_IF_HANDLE __MIDL_itf_mediaobj_0092_v0_0_c_ifspec; -extern RPC_IF_HANDLE __MIDL_itf_mediaobj_0092_v0_0_s_ifspec; - -#ifndef __IMediaObjectInPlace_INTERFACE_DEFINED__ -#define __IMediaObjectInPlace_INTERFACE_DEFINED__ - -/* interface IMediaObjectInPlace */ -/* [uuid][object] */ - - -EXTERN_C const IID IID_IMediaObjectInPlace; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("651b9ad0-0fc7-4aa9-9538-d89931010741") - IMediaObjectInPlace : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE Process( - /* [in] */ ULONG ulSize, - /* [size_is][out][in] */ BYTE *pData, - /* [in] */ REFERENCE_TIME refTimeStart, - /* [in] */ DWORD dwFlags) = 0; - - virtual HRESULT STDMETHODCALLTYPE Clone( - /* [out] */ IMediaObjectInPlace **ppMediaObject) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetLatency( - /* [out] */ REFERENCE_TIME *pLatencyTime) = 0; - - }; - -#else /* C style interface */ - - typedef struct IMediaObjectInPlaceVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IMediaObjectInPlace * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IMediaObjectInPlace * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IMediaObjectInPlace * This); - - HRESULT ( STDMETHODCALLTYPE *Process )( - IMediaObjectInPlace * This, - /* [in] */ ULONG ulSize, - /* [size_is][out][in] */ BYTE *pData, - /* [in] */ REFERENCE_TIME refTimeStart, - /* [in] */ DWORD dwFlags); - - HRESULT ( STDMETHODCALLTYPE *Clone )( - IMediaObjectInPlace * This, - /* [out] */ IMediaObjectInPlace **ppMediaObject); - - HRESULT ( STDMETHODCALLTYPE *GetLatency )( - IMediaObjectInPlace * This, - /* [out] */ REFERENCE_TIME *pLatencyTime); - - END_INTERFACE - } IMediaObjectInPlaceVtbl; - - interface IMediaObjectInPlace - { - CONST_VTBL struct IMediaObjectInPlaceVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IMediaObjectInPlace_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IMediaObjectInPlace_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IMediaObjectInPlace_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IMediaObjectInPlace_Process(This,ulSize,pData,refTimeStart,dwFlags) \ - (This)->lpVtbl -> Process(This,ulSize,pData,refTimeStart,dwFlags) - -#define IMediaObjectInPlace_Clone(This,ppMediaObject) \ - (This)->lpVtbl -> Clone(This,ppMediaObject) - -#define IMediaObjectInPlace_GetLatency(This,pLatencyTime) \ - (This)->lpVtbl -> GetLatency(This,pLatencyTime) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IMediaObjectInPlace_Process_Proxy( - IMediaObjectInPlace * This, - /* [in] */ ULONG ulSize, - /* [size_is][out][in] */ BYTE *pData, - /* [in] */ REFERENCE_TIME refTimeStart, - /* [in] */ DWORD dwFlags); - - -void __RPC_STUB IMediaObjectInPlace_Process_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IMediaObjectInPlace_Clone_Proxy( - IMediaObjectInPlace * This, - /* [out] */ IMediaObjectInPlace **ppMediaObject); - - -void __RPC_STUB IMediaObjectInPlace_Clone_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IMediaObjectInPlace_GetLatency_Proxy( - IMediaObjectInPlace * This, - /* [out] */ REFERENCE_TIME *pLatencyTime); - - -void __RPC_STUB IMediaObjectInPlace_GetLatency_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IMediaObjectInPlace_INTERFACE_DEFINED__ */ - - -/* interface __MIDL_itf_mediaobj_0093 */ -/* [local] */ - - -enum _DMO_QUALITY_STATUS_FLAGS - { DMO_QUALITY_STATUS_ENABLED = 0x1 - } ; - - -extern RPC_IF_HANDLE __MIDL_itf_mediaobj_0093_v0_0_c_ifspec; -extern RPC_IF_HANDLE __MIDL_itf_mediaobj_0093_v0_0_s_ifspec; - -#ifndef __IDMOQualityControl_INTERFACE_DEFINED__ -#define __IDMOQualityControl_INTERFACE_DEFINED__ - -/* interface IDMOQualityControl */ -/* [uuid][object] */ - - -EXTERN_C const IID IID_IDMOQualityControl; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("65abea96-cf36-453f-af8a-705e98f16260") - IDMOQualityControl : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE SetNow( - /* [in] */ REFERENCE_TIME rtNow) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetStatus( - /* [in] */ DWORD dwFlags) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetStatus( - /* [out] */ DWORD *pdwFlags) = 0; - - }; - -#else /* C style interface */ - - typedef struct IDMOQualityControlVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IDMOQualityControl * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IDMOQualityControl * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IDMOQualityControl * This); - - HRESULT ( STDMETHODCALLTYPE *SetNow )( - IDMOQualityControl * This, - /* [in] */ REFERENCE_TIME rtNow); - - HRESULT ( STDMETHODCALLTYPE *SetStatus )( - IDMOQualityControl * This, - /* [in] */ DWORD dwFlags); - - HRESULT ( STDMETHODCALLTYPE *GetStatus )( - IDMOQualityControl * This, - /* [out] */ DWORD *pdwFlags); - - END_INTERFACE - } IDMOQualityControlVtbl; - - interface IDMOQualityControl - { - CONST_VTBL struct IDMOQualityControlVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IDMOQualityControl_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IDMOQualityControl_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IDMOQualityControl_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IDMOQualityControl_SetNow(This,rtNow) \ - (This)->lpVtbl -> SetNow(This,rtNow) - -#define IDMOQualityControl_SetStatus(This,dwFlags) \ - (This)->lpVtbl -> SetStatus(This,dwFlags) - -#define IDMOQualityControl_GetStatus(This,pdwFlags) \ - (This)->lpVtbl -> GetStatus(This,pdwFlags) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IDMOQualityControl_SetNow_Proxy( - IDMOQualityControl * This, - /* [in] */ REFERENCE_TIME rtNow); - - -void __RPC_STUB IDMOQualityControl_SetNow_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IDMOQualityControl_SetStatus_Proxy( - IDMOQualityControl * This, - /* [in] */ DWORD dwFlags); - - -void __RPC_STUB IDMOQualityControl_SetStatus_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IDMOQualityControl_GetStatus_Proxy( - IDMOQualityControl * This, - /* [out] */ DWORD *pdwFlags); - - -void __RPC_STUB IDMOQualityControl_GetStatus_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IDMOQualityControl_INTERFACE_DEFINED__ */ - - -/* interface __MIDL_itf_mediaobj_0094 */ -/* [local] */ - - -enum _DMO_VIDEO_OUTPUT_STREAM_FLAGS - { DMO_VOSF_NEEDS_PREVIOUS_SAMPLE = 0x1 - } ; - - -extern RPC_IF_HANDLE __MIDL_itf_mediaobj_0094_v0_0_c_ifspec; -extern RPC_IF_HANDLE __MIDL_itf_mediaobj_0094_v0_0_s_ifspec; - -#ifndef __IDMOVideoOutputOptimizations_INTERFACE_DEFINED__ -#define __IDMOVideoOutputOptimizations_INTERFACE_DEFINED__ - -/* interface IDMOVideoOutputOptimizations */ -/* [uuid][object] */ - - -EXTERN_C const IID IID_IDMOVideoOutputOptimizations; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("be8f4f4e-5b16-4d29-b350-7f6b5d9298ac") - IDMOVideoOutputOptimizations : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE QueryOperationModePreferences( - ULONG ulOutputStreamIndex, - DWORD *pdwRequestedCapabilities) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetOperationMode( - ULONG ulOutputStreamIndex, - DWORD dwEnabledFeatures) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetCurrentOperationMode( - ULONG ulOutputStreamIndex, - DWORD *pdwEnabledFeatures) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetCurrentSampleRequirements( - ULONG ulOutputStreamIndex, - DWORD *pdwRequestedFeatures) = 0; - - }; - -#else /* C style interface */ - - typedef struct IDMOVideoOutputOptimizationsVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IDMOVideoOutputOptimizations * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IDMOVideoOutputOptimizations * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IDMOVideoOutputOptimizations * This); - - HRESULT ( STDMETHODCALLTYPE *QueryOperationModePreferences )( - IDMOVideoOutputOptimizations * This, - ULONG ulOutputStreamIndex, - DWORD *pdwRequestedCapabilities); - - HRESULT ( STDMETHODCALLTYPE *SetOperationMode )( - IDMOVideoOutputOptimizations * This, - ULONG ulOutputStreamIndex, - DWORD dwEnabledFeatures); - - HRESULT ( STDMETHODCALLTYPE *GetCurrentOperationMode )( - IDMOVideoOutputOptimizations * This, - ULONG ulOutputStreamIndex, - DWORD *pdwEnabledFeatures); - - HRESULT ( STDMETHODCALLTYPE *GetCurrentSampleRequirements )( - IDMOVideoOutputOptimizations * This, - ULONG ulOutputStreamIndex, - DWORD *pdwRequestedFeatures); - - END_INTERFACE - } IDMOVideoOutputOptimizationsVtbl; - - interface IDMOVideoOutputOptimizations - { - CONST_VTBL struct IDMOVideoOutputOptimizationsVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IDMOVideoOutputOptimizations_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IDMOVideoOutputOptimizations_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IDMOVideoOutputOptimizations_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IDMOVideoOutputOptimizations_QueryOperationModePreferences(This,ulOutputStreamIndex,pdwRequestedCapabilities) \ - (This)->lpVtbl -> QueryOperationModePreferences(This,ulOutputStreamIndex,pdwRequestedCapabilities) - -#define IDMOVideoOutputOptimizations_SetOperationMode(This,ulOutputStreamIndex,dwEnabledFeatures) \ - (This)->lpVtbl -> SetOperationMode(This,ulOutputStreamIndex,dwEnabledFeatures) - -#define IDMOVideoOutputOptimizations_GetCurrentOperationMode(This,ulOutputStreamIndex,pdwEnabledFeatures) \ - (This)->lpVtbl -> GetCurrentOperationMode(This,ulOutputStreamIndex,pdwEnabledFeatures) - -#define IDMOVideoOutputOptimizations_GetCurrentSampleRequirements(This,ulOutputStreamIndex,pdwRequestedFeatures) \ - (This)->lpVtbl -> GetCurrentSampleRequirements(This,ulOutputStreamIndex,pdwRequestedFeatures) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IDMOVideoOutputOptimizations_QueryOperationModePreferences_Proxy( - IDMOVideoOutputOptimizations * This, - ULONG ulOutputStreamIndex, - DWORD *pdwRequestedCapabilities); - - -void __RPC_STUB IDMOVideoOutputOptimizations_QueryOperationModePreferences_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IDMOVideoOutputOptimizations_SetOperationMode_Proxy( - IDMOVideoOutputOptimizations * This, - ULONG ulOutputStreamIndex, - DWORD dwEnabledFeatures); - - -void __RPC_STUB IDMOVideoOutputOptimizations_SetOperationMode_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IDMOVideoOutputOptimizations_GetCurrentOperationMode_Proxy( - IDMOVideoOutputOptimizations * This, - ULONG ulOutputStreamIndex, - DWORD *pdwEnabledFeatures); - - -void __RPC_STUB IDMOVideoOutputOptimizations_GetCurrentOperationMode_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IDMOVideoOutputOptimizations_GetCurrentSampleRequirements_Proxy( - IDMOVideoOutputOptimizations * This, - ULONG ulOutputStreamIndex, - DWORD *pdwRequestedFeatures); - - -void __RPC_STUB IDMOVideoOutputOptimizations_GetCurrentSampleRequirements_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IDMOVideoOutputOptimizations_INTERFACE_DEFINED__ */ - - -/* Additional Prototypes for ALL interfaces */ - -/* end of Additional Prototypes */ - -#ifdef __cplusplus -} -#endif - -#endif - - + +#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 mediaobj.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 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 +#endif // __RPCNDR_H_VERSION__ + +#ifndef COM_NO_WINDOWS_H +#include "windows.h" +#include "ole2.h" +#endif /*COM_NO_WINDOWS_H*/ + +#ifndef __mediaobj_h__ +#define __mediaobj_h__ + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#pragma once +#endif + +/* Forward Declarations */ + +#ifndef __IMediaBuffer_FWD_DEFINED__ +#define __IMediaBuffer_FWD_DEFINED__ +typedef interface IMediaBuffer IMediaBuffer; +#endif /* __IMediaBuffer_FWD_DEFINED__ */ + + +#ifndef __IMediaObject_FWD_DEFINED__ +#define __IMediaObject_FWD_DEFINED__ +typedef interface IMediaObject IMediaObject; +#endif /* __IMediaObject_FWD_DEFINED__ */ + + +#ifndef __IEnumDMO_FWD_DEFINED__ +#define __IEnumDMO_FWD_DEFINED__ +typedef interface IEnumDMO IEnumDMO; +#endif /* __IEnumDMO_FWD_DEFINED__ */ + + +#ifndef __IMediaObjectInPlace_FWD_DEFINED__ +#define __IMediaObjectInPlace_FWD_DEFINED__ +typedef interface IMediaObjectInPlace IMediaObjectInPlace; +#endif /* __IMediaObjectInPlace_FWD_DEFINED__ */ + + +#ifndef __IDMOQualityControl_FWD_DEFINED__ +#define __IDMOQualityControl_FWD_DEFINED__ +typedef interface IDMOQualityControl IDMOQualityControl; +#endif /* __IDMOQualityControl_FWD_DEFINED__ */ + + +#ifndef __IDMOVideoOutputOptimizations_FWD_DEFINED__ +#define __IDMOVideoOutputOptimizations_FWD_DEFINED__ +typedef interface IDMOVideoOutputOptimizations IDMOVideoOutputOptimizations; +#endif /* __IDMOVideoOutputOptimizations_FWD_DEFINED__ */ + + +/* header files for imported files */ +#include "unknwn.h" +#include "objidl.h" + +#ifdef __cplusplus +extern "C"{ +#endif + +void * __RPC_USER MIDL_user_allocate(size_t); +void __RPC_USER MIDL_user_free( void * ); + +/* interface __MIDL_itf_mediaobj_0000 */ +/* [local] */ + +#ifdef __strmif_h__ +typedef AM_MEDIA_TYPE DMO_MEDIA_TYPE; +#else +typedef struct _DMOMediaType + { + GUID majortype; + GUID subtype; + BOOL bFixedSizeSamples; + BOOL bTemporalCompression; + ULONG lSampleSize; + GUID formattype; + IUnknown *pUnk; + ULONG cbFormat; + /* [size_is] */ BYTE *pbFormat; + } DMO_MEDIA_TYPE; + +typedef LONGLONG REFERENCE_TIME; + +#endif + +enum _DMO_INPUT_DATA_BUFFER_FLAGS + { DMO_INPUT_DATA_BUFFERF_SYNCPOINT = 0x1, + DMO_INPUT_DATA_BUFFERF_TIME = 0x2, + DMO_INPUT_DATA_BUFFERF_TIMELENGTH = 0x4 + } ; + +enum _DMO_OUTPUT_DATA_BUFFER_FLAGS + { DMO_OUTPUT_DATA_BUFFERF_SYNCPOINT = 0x1, + DMO_OUTPUT_DATA_BUFFERF_TIME = 0x2, + DMO_OUTPUT_DATA_BUFFERF_TIMELENGTH = 0x4, + DMO_OUTPUT_DATA_BUFFERF_INCOMPLETE = 0x1000000 + } ; + +enum _DMO_INPUT_STATUS_FLAGS + { DMO_INPUT_STATUSF_ACCEPT_DATA = 0x1 + } ; + +enum _DMO_INPUT_STREAM_INFO_FLAGS + { DMO_INPUT_STREAMF_WHOLE_SAMPLES = 0x1, + DMO_INPUT_STREAMF_SINGLE_SAMPLE_PER_BUFFER = 0x2, + DMO_INPUT_STREAMF_FIXED_SAMPLE_SIZE = 0x4, + DMO_INPUT_STREAMF_HOLDS_BUFFERS = 0x8 + } ; + +enum _DMO_OUTPUT_STREAM_INFO_FLAGS + { DMO_OUTPUT_STREAMF_WHOLE_SAMPLES = 0x1, + DMO_OUTPUT_STREAMF_SINGLE_SAMPLE_PER_BUFFER = 0x2, + DMO_OUTPUT_STREAMF_FIXED_SAMPLE_SIZE = 0x4, + DMO_OUTPUT_STREAMF_DISCARDABLE = 0x8, + DMO_OUTPUT_STREAMF_OPTIONAL = 0x10 + } ; + +enum _DMO_SET_TYPE_FLAGS + { DMO_SET_TYPEF_TEST_ONLY = 0x1, + DMO_SET_TYPEF_CLEAR = 0x2 + } ; + +enum _DMO_PROCESS_OUTPUT_FLAGS + { DMO_PROCESS_OUTPUT_DISCARD_WHEN_NO_BUFFER = 0x1 + } ; + + +extern RPC_IF_HANDLE __MIDL_itf_mediaobj_0000_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_mediaobj_0000_v0_0_s_ifspec; + +#ifndef __IMediaBuffer_INTERFACE_DEFINED__ +#define __IMediaBuffer_INTERFACE_DEFINED__ + +/* interface IMediaBuffer */ +/* [uuid][object] */ + + +EXTERN_C const IID IID_IMediaBuffer; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("59eff8b9-938c-4a26-82f2-95cb84cdc837") + IMediaBuffer : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE SetLength( + DWORD cbLength) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetMaxLength( + /* [out] */ DWORD *pcbMaxLength) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetBufferAndLength( + /* [out] */ BYTE **ppBuffer, + /* [out] */ DWORD *pcbLength) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMediaBufferVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMediaBuffer * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMediaBuffer * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMediaBuffer * This); + + HRESULT ( STDMETHODCALLTYPE *SetLength )( + IMediaBuffer * This, + DWORD cbLength); + + HRESULT ( STDMETHODCALLTYPE *GetMaxLength )( + IMediaBuffer * This, + /* [out] */ DWORD *pcbMaxLength); + + HRESULT ( STDMETHODCALLTYPE *GetBufferAndLength )( + IMediaBuffer * This, + /* [out] */ BYTE **ppBuffer, + /* [out] */ DWORD *pcbLength); + + END_INTERFACE + } IMediaBufferVtbl; + + interface IMediaBuffer + { + CONST_VTBL struct IMediaBufferVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMediaBuffer_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IMediaBuffer_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IMediaBuffer_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IMediaBuffer_SetLength(This,cbLength) \ + (This)->lpVtbl -> SetLength(This,cbLength) + +#define IMediaBuffer_GetMaxLength(This,pcbMaxLength) \ + (This)->lpVtbl -> GetMaxLength(This,pcbMaxLength) + +#define IMediaBuffer_GetBufferAndLength(This,ppBuffer,pcbLength) \ + (This)->lpVtbl -> GetBufferAndLength(This,ppBuffer,pcbLength) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IMediaBuffer_SetLength_Proxy( + IMediaBuffer * This, + DWORD cbLength); + + +void __RPC_STUB IMediaBuffer_SetLength_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IMediaBuffer_GetMaxLength_Proxy( + IMediaBuffer * This, + /* [out] */ DWORD *pcbMaxLength); + + +void __RPC_STUB IMediaBuffer_GetMaxLength_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IMediaBuffer_GetBufferAndLength_Proxy( + IMediaBuffer * This, + /* [out] */ BYTE **ppBuffer, + /* [out] */ DWORD *pcbLength); + + +void __RPC_STUB IMediaBuffer_GetBufferAndLength_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IMediaBuffer_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_mediaobj_0090 */ +/* [local] */ + +typedef struct _DMO_OUTPUT_DATA_BUFFER + { + IMediaBuffer *pBuffer; + DWORD dwStatus; + REFERENCE_TIME rtTimestamp; + REFERENCE_TIME rtTimelength; + } DMO_OUTPUT_DATA_BUFFER; + +typedef struct _DMO_OUTPUT_DATA_BUFFER *PDMO_OUTPUT_DATA_BUFFER; + + + +extern RPC_IF_HANDLE __MIDL_itf_mediaobj_0090_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_mediaobj_0090_v0_0_s_ifspec; + +#ifndef __IMediaObject_INTERFACE_DEFINED__ +#define __IMediaObject_INTERFACE_DEFINED__ + +/* interface IMediaObject */ +/* [uuid][object] */ + + +EXTERN_C const IID IID_IMediaObject; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("d8ad0f58-5494-4102-97c5-ec798e59bcf4") + IMediaObject : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE GetStreamCount( + /* [out] */ DWORD *pcInputStreams, + /* [out] */ DWORD *pcOutputStreams) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetInputStreamInfo( + DWORD dwInputStreamIndex, + /* [out] */ DWORD *pdwFlags) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetOutputStreamInfo( + DWORD dwOutputStreamIndex, + /* [out] */ DWORD *pdwFlags) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetInputType( + DWORD dwInputStreamIndex, + DWORD dwTypeIndex, + /* [out] */ DMO_MEDIA_TYPE *pmt) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetOutputType( + DWORD dwOutputStreamIndex, + DWORD dwTypeIndex, + /* [out] */ DMO_MEDIA_TYPE *pmt) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetInputType( + DWORD dwInputStreamIndex, + /* [in] */ const DMO_MEDIA_TYPE *pmt, + DWORD dwFlags) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetOutputType( + DWORD dwOutputStreamIndex, + /* [in] */ const DMO_MEDIA_TYPE *pmt, + DWORD dwFlags) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetInputCurrentType( + DWORD dwInputStreamIndex, + /* [out] */ DMO_MEDIA_TYPE *pmt) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetOutputCurrentType( + DWORD dwOutputStreamIndex, + /* [out] */ DMO_MEDIA_TYPE *pmt) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetInputSizeInfo( + DWORD dwInputStreamIndex, + /* [out] */ DWORD *pcbSize, + /* [out] */ DWORD *pcbMaxLookahead, + /* [out] */ DWORD *pcbAlignment) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetOutputSizeInfo( + DWORD dwOutputStreamIndex, + /* [out] */ DWORD *pcbSize, + /* [out] */ DWORD *pcbAlignment) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetInputMaxLatency( + DWORD dwInputStreamIndex, + /* [out] */ REFERENCE_TIME *prtMaxLatency) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetInputMaxLatency( + DWORD dwInputStreamIndex, + REFERENCE_TIME rtMaxLatency) = 0; + + virtual HRESULT STDMETHODCALLTYPE Flush( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE Discontinuity( + DWORD dwInputStreamIndex) = 0; + + virtual HRESULT STDMETHODCALLTYPE AllocateStreamingResources( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE FreeStreamingResources( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetInputStatus( + DWORD dwInputStreamIndex, + /* [out] */ DWORD *dwFlags) = 0; + + virtual HRESULT STDMETHODCALLTYPE ProcessInput( + DWORD dwInputStreamIndex, + IMediaBuffer *pBuffer, + DWORD dwFlags, + REFERENCE_TIME rtTimestamp, + REFERENCE_TIME rtTimelength) = 0; + + virtual HRESULT STDMETHODCALLTYPE ProcessOutput( + DWORD dwFlags, + DWORD cOutputBufferCount, + /* [size_is][out][in] */ DMO_OUTPUT_DATA_BUFFER *pOutputBuffers, + /* [out] */ DWORD *pdwStatus) = 0; + + virtual HRESULT STDMETHODCALLTYPE Lock( + LONG bLock) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMediaObjectVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMediaObject * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMediaObject * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMediaObject * This); + + HRESULT ( STDMETHODCALLTYPE *GetStreamCount )( + IMediaObject * This, + /* [out] */ DWORD *pcInputStreams, + /* [out] */ DWORD *pcOutputStreams); + + HRESULT ( STDMETHODCALLTYPE *GetInputStreamInfo )( + IMediaObject * This, + DWORD dwInputStreamIndex, + /* [out] */ DWORD *pdwFlags); + + HRESULT ( STDMETHODCALLTYPE *GetOutputStreamInfo )( + IMediaObject * This, + DWORD dwOutputStreamIndex, + /* [out] */ DWORD *pdwFlags); + + HRESULT ( STDMETHODCALLTYPE *GetInputType )( + IMediaObject * This, + DWORD dwInputStreamIndex, + DWORD dwTypeIndex, + /* [out] */ DMO_MEDIA_TYPE *pmt); + + HRESULT ( STDMETHODCALLTYPE *GetOutputType )( + IMediaObject * This, + DWORD dwOutputStreamIndex, + DWORD dwTypeIndex, + /* [out] */ DMO_MEDIA_TYPE *pmt); + + HRESULT ( STDMETHODCALLTYPE *SetInputType )( + IMediaObject * This, + DWORD dwInputStreamIndex, + /* [in] */ const DMO_MEDIA_TYPE *pmt, + DWORD dwFlags); + + HRESULT ( STDMETHODCALLTYPE *SetOutputType )( + IMediaObject * This, + DWORD dwOutputStreamIndex, + /* [in] */ const DMO_MEDIA_TYPE *pmt, + DWORD dwFlags); + + HRESULT ( STDMETHODCALLTYPE *GetInputCurrentType )( + IMediaObject * This, + DWORD dwInputStreamIndex, + /* [out] */ DMO_MEDIA_TYPE *pmt); + + HRESULT ( STDMETHODCALLTYPE *GetOutputCurrentType )( + IMediaObject * This, + DWORD dwOutputStreamIndex, + /* [out] */ DMO_MEDIA_TYPE *pmt); + + HRESULT ( STDMETHODCALLTYPE *GetInputSizeInfo )( + IMediaObject * This, + DWORD dwInputStreamIndex, + /* [out] */ DWORD *pcbSize, + /* [out] */ DWORD *pcbMaxLookahead, + /* [out] */ DWORD *pcbAlignment); + + HRESULT ( STDMETHODCALLTYPE *GetOutputSizeInfo )( + IMediaObject * This, + DWORD dwOutputStreamIndex, + /* [out] */ DWORD *pcbSize, + /* [out] */ DWORD *pcbAlignment); + + HRESULT ( STDMETHODCALLTYPE *GetInputMaxLatency )( + IMediaObject * This, + DWORD dwInputStreamIndex, + /* [out] */ REFERENCE_TIME *prtMaxLatency); + + HRESULT ( STDMETHODCALLTYPE *SetInputMaxLatency )( + IMediaObject * This, + DWORD dwInputStreamIndex, + REFERENCE_TIME rtMaxLatency); + + HRESULT ( STDMETHODCALLTYPE *Flush )( + IMediaObject * This); + + HRESULT ( STDMETHODCALLTYPE *Discontinuity )( + IMediaObject * This, + DWORD dwInputStreamIndex); + + HRESULT ( STDMETHODCALLTYPE *AllocateStreamingResources )( + IMediaObject * This); + + HRESULT ( STDMETHODCALLTYPE *FreeStreamingResources )( + IMediaObject * This); + + HRESULT ( STDMETHODCALLTYPE *GetInputStatus )( + IMediaObject * This, + DWORD dwInputStreamIndex, + /* [out] */ DWORD *dwFlags); + + HRESULT ( STDMETHODCALLTYPE *ProcessInput )( + IMediaObject * This, + DWORD dwInputStreamIndex, + IMediaBuffer *pBuffer, + DWORD dwFlags, + REFERENCE_TIME rtTimestamp, + REFERENCE_TIME rtTimelength); + + HRESULT ( STDMETHODCALLTYPE *ProcessOutput )( + IMediaObject * This, + DWORD dwFlags, + DWORD cOutputBufferCount, + /* [size_is][out][in] */ DMO_OUTPUT_DATA_BUFFER *pOutputBuffers, + /* [out] */ DWORD *pdwStatus); + + HRESULT ( STDMETHODCALLTYPE *Lock )( + IMediaObject * This, + LONG bLock); + + END_INTERFACE + } IMediaObjectVtbl; + + interface IMediaObject + { + CONST_VTBL struct IMediaObjectVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMediaObject_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IMediaObject_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IMediaObject_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IMediaObject_GetStreamCount(This,pcInputStreams,pcOutputStreams) \ + (This)->lpVtbl -> GetStreamCount(This,pcInputStreams,pcOutputStreams) + +#define IMediaObject_GetInputStreamInfo(This,dwInputStreamIndex,pdwFlags) \ + (This)->lpVtbl -> GetInputStreamInfo(This,dwInputStreamIndex,pdwFlags) + +#define IMediaObject_GetOutputStreamInfo(This,dwOutputStreamIndex,pdwFlags) \ + (This)->lpVtbl -> GetOutputStreamInfo(This,dwOutputStreamIndex,pdwFlags) + +#define IMediaObject_GetInputType(This,dwInputStreamIndex,dwTypeIndex,pmt) \ + (This)->lpVtbl -> GetInputType(This,dwInputStreamIndex,dwTypeIndex,pmt) + +#define IMediaObject_GetOutputType(This,dwOutputStreamIndex,dwTypeIndex,pmt) \ + (This)->lpVtbl -> GetOutputType(This,dwOutputStreamIndex,dwTypeIndex,pmt) + +#define IMediaObject_SetInputType(This,dwInputStreamIndex,pmt,dwFlags) \ + (This)->lpVtbl -> SetInputType(This,dwInputStreamIndex,pmt,dwFlags) + +#define IMediaObject_SetOutputType(This,dwOutputStreamIndex,pmt,dwFlags) \ + (This)->lpVtbl -> SetOutputType(This,dwOutputStreamIndex,pmt,dwFlags) + +#define IMediaObject_GetInputCurrentType(This,dwInputStreamIndex,pmt) \ + (This)->lpVtbl -> GetInputCurrentType(This,dwInputStreamIndex,pmt) + +#define IMediaObject_GetOutputCurrentType(This,dwOutputStreamIndex,pmt) \ + (This)->lpVtbl -> GetOutputCurrentType(This,dwOutputStreamIndex,pmt) + +#define IMediaObject_GetInputSizeInfo(This,dwInputStreamIndex,pcbSize,pcbMaxLookahead,pcbAlignment) \ + (This)->lpVtbl -> GetInputSizeInfo(This,dwInputStreamIndex,pcbSize,pcbMaxLookahead,pcbAlignment) + +#define IMediaObject_GetOutputSizeInfo(This,dwOutputStreamIndex,pcbSize,pcbAlignment) \ + (This)->lpVtbl -> GetOutputSizeInfo(This,dwOutputStreamIndex,pcbSize,pcbAlignment) + +#define IMediaObject_GetInputMaxLatency(This,dwInputStreamIndex,prtMaxLatency) \ + (This)->lpVtbl -> GetInputMaxLatency(This,dwInputStreamIndex,prtMaxLatency) + +#define IMediaObject_SetInputMaxLatency(This,dwInputStreamIndex,rtMaxLatency) \ + (This)->lpVtbl -> SetInputMaxLatency(This,dwInputStreamIndex,rtMaxLatency) + +#define IMediaObject_Flush(This) \ + (This)->lpVtbl -> Flush(This) + +#define IMediaObject_Discontinuity(This,dwInputStreamIndex) \ + (This)->lpVtbl -> Discontinuity(This,dwInputStreamIndex) + +#define IMediaObject_AllocateStreamingResources(This) \ + (This)->lpVtbl -> AllocateStreamingResources(This) + +#define IMediaObject_FreeStreamingResources(This) \ + (This)->lpVtbl -> FreeStreamingResources(This) + +#define IMediaObject_GetInputStatus(This,dwInputStreamIndex,dwFlags) \ + (This)->lpVtbl -> GetInputStatus(This,dwInputStreamIndex,dwFlags) + +#define IMediaObject_ProcessInput(This,dwInputStreamIndex,pBuffer,dwFlags,rtTimestamp,rtTimelength) \ + (This)->lpVtbl -> ProcessInput(This,dwInputStreamIndex,pBuffer,dwFlags,rtTimestamp,rtTimelength) + +#define IMediaObject_ProcessOutput(This,dwFlags,cOutputBufferCount,pOutputBuffers,pdwStatus) \ + (This)->lpVtbl -> ProcessOutput(This,dwFlags,cOutputBufferCount,pOutputBuffers,pdwStatus) + +#define IMediaObject_Lock(This,bLock) \ + (This)->lpVtbl -> Lock(This,bLock) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IMediaObject_GetStreamCount_Proxy( + IMediaObject * This, + /* [out] */ DWORD *pcInputStreams, + /* [out] */ DWORD *pcOutputStreams); + + +void __RPC_STUB IMediaObject_GetStreamCount_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IMediaObject_GetInputStreamInfo_Proxy( + IMediaObject * This, + DWORD dwInputStreamIndex, + /* [out] */ DWORD *pdwFlags); + + +void __RPC_STUB IMediaObject_GetInputStreamInfo_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IMediaObject_GetOutputStreamInfo_Proxy( + IMediaObject * This, + DWORD dwOutputStreamIndex, + /* [out] */ DWORD *pdwFlags); + + +void __RPC_STUB IMediaObject_GetOutputStreamInfo_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IMediaObject_GetInputType_Proxy( + IMediaObject * This, + DWORD dwInputStreamIndex, + DWORD dwTypeIndex, + /* [out] */ DMO_MEDIA_TYPE *pmt); + + +void __RPC_STUB IMediaObject_GetInputType_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IMediaObject_GetOutputType_Proxy( + IMediaObject * This, + DWORD dwOutputStreamIndex, + DWORD dwTypeIndex, + /* [out] */ DMO_MEDIA_TYPE *pmt); + + +void __RPC_STUB IMediaObject_GetOutputType_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IMediaObject_SetInputType_Proxy( + IMediaObject * This, + DWORD dwInputStreamIndex, + /* [in] */ const DMO_MEDIA_TYPE *pmt, + DWORD dwFlags); + + +void __RPC_STUB IMediaObject_SetInputType_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IMediaObject_SetOutputType_Proxy( + IMediaObject * This, + DWORD dwOutputStreamIndex, + /* [in] */ const DMO_MEDIA_TYPE *pmt, + DWORD dwFlags); + + +void __RPC_STUB IMediaObject_SetOutputType_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IMediaObject_GetInputCurrentType_Proxy( + IMediaObject * This, + DWORD dwInputStreamIndex, + /* [out] */ DMO_MEDIA_TYPE *pmt); + + +void __RPC_STUB IMediaObject_GetInputCurrentType_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IMediaObject_GetOutputCurrentType_Proxy( + IMediaObject * This, + DWORD dwOutputStreamIndex, + /* [out] */ DMO_MEDIA_TYPE *pmt); + + +void __RPC_STUB IMediaObject_GetOutputCurrentType_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IMediaObject_GetInputSizeInfo_Proxy( + IMediaObject * This, + DWORD dwInputStreamIndex, + /* [out] */ DWORD *pcbSize, + /* [out] */ DWORD *pcbMaxLookahead, + /* [out] */ DWORD *pcbAlignment); + + +void __RPC_STUB IMediaObject_GetInputSizeInfo_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IMediaObject_GetOutputSizeInfo_Proxy( + IMediaObject * This, + DWORD dwOutputStreamIndex, + /* [out] */ DWORD *pcbSize, + /* [out] */ DWORD *pcbAlignment); + + +void __RPC_STUB IMediaObject_GetOutputSizeInfo_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IMediaObject_GetInputMaxLatency_Proxy( + IMediaObject * This, + DWORD dwInputStreamIndex, + /* [out] */ REFERENCE_TIME *prtMaxLatency); + + +void __RPC_STUB IMediaObject_GetInputMaxLatency_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IMediaObject_SetInputMaxLatency_Proxy( + IMediaObject * This, + DWORD dwInputStreamIndex, + REFERENCE_TIME rtMaxLatency); + + +void __RPC_STUB IMediaObject_SetInputMaxLatency_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IMediaObject_Flush_Proxy( + IMediaObject * This); + + +void __RPC_STUB IMediaObject_Flush_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IMediaObject_Discontinuity_Proxy( + IMediaObject * This, + DWORD dwInputStreamIndex); + + +void __RPC_STUB IMediaObject_Discontinuity_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IMediaObject_AllocateStreamingResources_Proxy( + IMediaObject * This); + + +void __RPC_STUB IMediaObject_AllocateStreamingResources_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IMediaObject_FreeStreamingResources_Proxy( + IMediaObject * This); + + +void __RPC_STUB IMediaObject_FreeStreamingResources_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IMediaObject_GetInputStatus_Proxy( + IMediaObject * This, + DWORD dwInputStreamIndex, + /* [out] */ DWORD *dwFlags); + + +void __RPC_STUB IMediaObject_GetInputStatus_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IMediaObject_ProcessInput_Proxy( + IMediaObject * This, + DWORD dwInputStreamIndex, + IMediaBuffer *pBuffer, + DWORD dwFlags, + REFERENCE_TIME rtTimestamp, + REFERENCE_TIME rtTimelength); + + +void __RPC_STUB IMediaObject_ProcessInput_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IMediaObject_ProcessOutput_Proxy( + IMediaObject * This, + DWORD dwFlags, + DWORD cOutputBufferCount, + /* [size_is][out][in] */ DMO_OUTPUT_DATA_BUFFER *pOutputBuffers, + /* [out] */ DWORD *pdwStatus); + + +void __RPC_STUB IMediaObject_ProcessOutput_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IMediaObject_Lock_Proxy( + IMediaObject * This, + LONG bLock); + + +void __RPC_STUB IMediaObject_Lock_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IMediaObject_INTERFACE_DEFINED__ */ + + +#ifndef __IEnumDMO_INTERFACE_DEFINED__ +#define __IEnumDMO_INTERFACE_DEFINED__ + +/* interface IEnumDMO */ +/* [uuid][object] */ + + +EXTERN_C const IID IID_IEnumDMO; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("2c3cd98a-2bfa-4a53-9c27-5249ba64ba0f") + IEnumDMO : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE Next( + DWORD cItemsToFetch, + /* [length_is][size_is][out] */ CLSID *pCLSID, + /* [string][length_is][size_is][out] */ WCHAR **Names, + /* [out] */ DWORD *pcItemsFetched) = 0; + + virtual HRESULT STDMETHODCALLTYPE Skip( + DWORD cItemsToSkip) = 0; + + virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE Clone( + /* [out] */ IEnumDMO **ppEnum) = 0; + + }; + +#else /* C style interface */ + + typedef struct IEnumDMOVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IEnumDMO * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IEnumDMO * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IEnumDMO * This); + + HRESULT ( STDMETHODCALLTYPE *Next )( + IEnumDMO * This, + DWORD cItemsToFetch, + /* [length_is][size_is][out] */ CLSID *pCLSID, + /* [string][length_is][size_is][out] */ WCHAR **Names, + /* [out] */ DWORD *pcItemsFetched); + + HRESULT ( STDMETHODCALLTYPE *Skip )( + IEnumDMO * This, + DWORD cItemsToSkip); + + HRESULT ( STDMETHODCALLTYPE *Reset )( + IEnumDMO * This); + + HRESULT ( STDMETHODCALLTYPE *Clone )( + IEnumDMO * This, + /* [out] */ IEnumDMO **ppEnum); + + END_INTERFACE + } IEnumDMOVtbl; + + interface IEnumDMO + { + CONST_VTBL struct IEnumDMOVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IEnumDMO_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IEnumDMO_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IEnumDMO_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IEnumDMO_Next(This,cItemsToFetch,pCLSID,Names,pcItemsFetched) \ + (This)->lpVtbl -> Next(This,cItemsToFetch,pCLSID,Names,pcItemsFetched) + +#define IEnumDMO_Skip(This,cItemsToSkip) \ + (This)->lpVtbl -> Skip(This,cItemsToSkip) + +#define IEnumDMO_Reset(This) \ + (This)->lpVtbl -> Reset(This) + +#define IEnumDMO_Clone(This,ppEnum) \ + (This)->lpVtbl -> Clone(This,ppEnum) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IEnumDMO_Next_Proxy( + IEnumDMO * This, + DWORD cItemsToFetch, + /* [length_is][size_is][out] */ CLSID *pCLSID, + /* [string][length_is][size_is][out] */ WCHAR **Names, + /* [out] */ DWORD *pcItemsFetched); + + +void __RPC_STUB IEnumDMO_Next_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IEnumDMO_Skip_Proxy( + IEnumDMO * This, + DWORD cItemsToSkip); + + +void __RPC_STUB IEnumDMO_Skip_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IEnumDMO_Reset_Proxy( + IEnumDMO * This); + + +void __RPC_STUB IEnumDMO_Reset_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IEnumDMO_Clone_Proxy( + IEnumDMO * This, + /* [out] */ IEnumDMO **ppEnum); + + +void __RPC_STUB IEnumDMO_Clone_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IEnumDMO_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_mediaobj_0092 */ +/* [local] */ + + +enum _DMO_INPLACE_PROCESS_FLAGS + { DMO_INPLACE_NORMAL = 0, + DMO_INPLACE_ZERO = 0x1 + } ; + + +extern RPC_IF_HANDLE __MIDL_itf_mediaobj_0092_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_mediaobj_0092_v0_0_s_ifspec; + +#ifndef __IMediaObjectInPlace_INTERFACE_DEFINED__ +#define __IMediaObjectInPlace_INTERFACE_DEFINED__ + +/* interface IMediaObjectInPlace */ +/* [uuid][object] */ + + +EXTERN_C const IID IID_IMediaObjectInPlace; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("651b9ad0-0fc7-4aa9-9538-d89931010741") + IMediaObjectInPlace : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE Process( + /* [in] */ ULONG ulSize, + /* [size_is][out][in] */ BYTE *pData, + /* [in] */ REFERENCE_TIME refTimeStart, + /* [in] */ DWORD dwFlags) = 0; + + virtual HRESULT STDMETHODCALLTYPE Clone( + /* [out] */ IMediaObjectInPlace **ppMediaObject) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetLatency( + /* [out] */ REFERENCE_TIME *pLatencyTime) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMediaObjectInPlaceVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMediaObjectInPlace * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMediaObjectInPlace * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMediaObjectInPlace * This); + + HRESULT ( STDMETHODCALLTYPE *Process )( + IMediaObjectInPlace * This, + /* [in] */ ULONG ulSize, + /* [size_is][out][in] */ BYTE *pData, + /* [in] */ REFERENCE_TIME refTimeStart, + /* [in] */ DWORD dwFlags); + + HRESULT ( STDMETHODCALLTYPE *Clone )( + IMediaObjectInPlace * This, + /* [out] */ IMediaObjectInPlace **ppMediaObject); + + HRESULT ( STDMETHODCALLTYPE *GetLatency )( + IMediaObjectInPlace * This, + /* [out] */ REFERENCE_TIME *pLatencyTime); + + END_INTERFACE + } IMediaObjectInPlaceVtbl; + + interface IMediaObjectInPlace + { + CONST_VTBL struct IMediaObjectInPlaceVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMediaObjectInPlace_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IMediaObjectInPlace_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IMediaObjectInPlace_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IMediaObjectInPlace_Process(This,ulSize,pData,refTimeStart,dwFlags) \ + (This)->lpVtbl -> Process(This,ulSize,pData,refTimeStart,dwFlags) + +#define IMediaObjectInPlace_Clone(This,ppMediaObject) \ + (This)->lpVtbl -> Clone(This,ppMediaObject) + +#define IMediaObjectInPlace_GetLatency(This,pLatencyTime) \ + (This)->lpVtbl -> GetLatency(This,pLatencyTime) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IMediaObjectInPlace_Process_Proxy( + IMediaObjectInPlace * This, + /* [in] */ ULONG ulSize, + /* [size_is][out][in] */ BYTE *pData, + /* [in] */ REFERENCE_TIME refTimeStart, + /* [in] */ DWORD dwFlags); + + +void __RPC_STUB IMediaObjectInPlace_Process_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IMediaObjectInPlace_Clone_Proxy( + IMediaObjectInPlace * This, + /* [out] */ IMediaObjectInPlace **ppMediaObject); + + +void __RPC_STUB IMediaObjectInPlace_Clone_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IMediaObjectInPlace_GetLatency_Proxy( + IMediaObjectInPlace * This, + /* [out] */ REFERENCE_TIME *pLatencyTime); + + +void __RPC_STUB IMediaObjectInPlace_GetLatency_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IMediaObjectInPlace_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_mediaobj_0093 */ +/* [local] */ + + +enum _DMO_QUALITY_STATUS_FLAGS + { DMO_QUALITY_STATUS_ENABLED = 0x1 + } ; + + +extern RPC_IF_HANDLE __MIDL_itf_mediaobj_0093_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_mediaobj_0093_v0_0_s_ifspec; + +#ifndef __IDMOQualityControl_INTERFACE_DEFINED__ +#define __IDMOQualityControl_INTERFACE_DEFINED__ + +/* interface IDMOQualityControl */ +/* [uuid][object] */ + + +EXTERN_C const IID IID_IDMOQualityControl; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("65abea96-cf36-453f-af8a-705e98f16260") + IDMOQualityControl : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE SetNow( + /* [in] */ REFERENCE_TIME rtNow) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetStatus( + /* [in] */ DWORD dwFlags) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetStatus( + /* [out] */ DWORD *pdwFlags) = 0; + + }; + +#else /* C style interface */ + + typedef struct IDMOQualityControlVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDMOQualityControl * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDMOQualityControl * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDMOQualityControl * This); + + HRESULT ( STDMETHODCALLTYPE *SetNow )( + IDMOQualityControl * This, + /* [in] */ REFERENCE_TIME rtNow); + + HRESULT ( STDMETHODCALLTYPE *SetStatus )( + IDMOQualityControl * This, + /* [in] */ DWORD dwFlags); + + HRESULT ( STDMETHODCALLTYPE *GetStatus )( + IDMOQualityControl * This, + /* [out] */ DWORD *pdwFlags); + + END_INTERFACE + } IDMOQualityControlVtbl; + + interface IDMOQualityControl + { + CONST_VTBL struct IDMOQualityControlVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDMOQualityControl_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IDMOQualityControl_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IDMOQualityControl_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IDMOQualityControl_SetNow(This,rtNow) \ + (This)->lpVtbl -> SetNow(This,rtNow) + +#define IDMOQualityControl_SetStatus(This,dwFlags) \ + (This)->lpVtbl -> SetStatus(This,dwFlags) + +#define IDMOQualityControl_GetStatus(This,pdwFlags) \ + (This)->lpVtbl -> GetStatus(This,pdwFlags) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IDMOQualityControl_SetNow_Proxy( + IDMOQualityControl * This, + /* [in] */ REFERENCE_TIME rtNow); + + +void __RPC_STUB IDMOQualityControl_SetNow_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDMOQualityControl_SetStatus_Proxy( + IDMOQualityControl * This, + /* [in] */ DWORD dwFlags); + + +void __RPC_STUB IDMOQualityControl_SetStatus_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDMOQualityControl_GetStatus_Proxy( + IDMOQualityControl * This, + /* [out] */ DWORD *pdwFlags); + + +void __RPC_STUB IDMOQualityControl_GetStatus_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IDMOQualityControl_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_mediaobj_0094 */ +/* [local] */ + + +enum _DMO_VIDEO_OUTPUT_STREAM_FLAGS + { DMO_VOSF_NEEDS_PREVIOUS_SAMPLE = 0x1 + } ; + + +extern RPC_IF_HANDLE __MIDL_itf_mediaobj_0094_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_mediaobj_0094_v0_0_s_ifspec; + +#ifndef __IDMOVideoOutputOptimizations_INTERFACE_DEFINED__ +#define __IDMOVideoOutputOptimizations_INTERFACE_DEFINED__ + +/* interface IDMOVideoOutputOptimizations */ +/* [uuid][object] */ + + +EXTERN_C const IID IID_IDMOVideoOutputOptimizations; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("be8f4f4e-5b16-4d29-b350-7f6b5d9298ac") + IDMOVideoOutputOptimizations : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE QueryOperationModePreferences( + ULONG ulOutputStreamIndex, + DWORD *pdwRequestedCapabilities) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetOperationMode( + ULONG ulOutputStreamIndex, + DWORD dwEnabledFeatures) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetCurrentOperationMode( + ULONG ulOutputStreamIndex, + DWORD *pdwEnabledFeatures) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetCurrentSampleRequirements( + ULONG ulOutputStreamIndex, + DWORD *pdwRequestedFeatures) = 0; + + }; + +#else /* C style interface */ + + typedef struct IDMOVideoOutputOptimizationsVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDMOVideoOutputOptimizations * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDMOVideoOutputOptimizations * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDMOVideoOutputOptimizations * This); + + HRESULT ( STDMETHODCALLTYPE *QueryOperationModePreferences )( + IDMOVideoOutputOptimizations * This, + ULONG ulOutputStreamIndex, + DWORD *pdwRequestedCapabilities); + + HRESULT ( STDMETHODCALLTYPE *SetOperationMode )( + IDMOVideoOutputOptimizations * This, + ULONG ulOutputStreamIndex, + DWORD dwEnabledFeatures); + + HRESULT ( STDMETHODCALLTYPE *GetCurrentOperationMode )( + IDMOVideoOutputOptimizations * This, + ULONG ulOutputStreamIndex, + DWORD *pdwEnabledFeatures); + + HRESULT ( STDMETHODCALLTYPE *GetCurrentSampleRequirements )( + IDMOVideoOutputOptimizations * This, + ULONG ulOutputStreamIndex, + DWORD *pdwRequestedFeatures); + + END_INTERFACE + } IDMOVideoOutputOptimizationsVtbl; + + interface IDMOVideoOutputOptimizations + { + CONST_VTBL struct IDMOVideoOutputOptimizationsVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDMOVideoOutputOptimizations_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IDMOVideoOutputOptimizations_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IDMOVideoOutputOptimizations_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IDMOVideoOutputOptimizations_QueryOperationModePreferences(This,ulOutputStreamIndex,pdwRequestedCapabilities) \ + (This)->lpVtbl -> QueryOperationModePreferences(This,ulOutputStreamIndex,pdwRequestedCapabilities) + +#define IDMOVideoOutputOptimizations_SetOperationMode(This,ulOutputStreamIndex,dwEnabledFeatures) \ + (This)->lpVtbl -> SetOperationMode(This,ulOutputStreamIndex,dwEnabledFeatures) + +#define IDMOVideoOutputOptimizations_GetCurrentOperationMode(This,ulOutputStreamIndex,pdwEnabledFeatures) \ + (This)->lpVtbl -> GetCurrentOperationMode(This,ulOutputStreamIndex,pdwEnabledFeatures) + +#define IDMOVideoOutputOptimizations_GetCurrentSampleRequirements(This,ulOutputStreamIndex,pdwRequestedFeatures) \ + (This)->lpVtbl -> GetCurrentSampleRequirements(This,ulOutputStreamIndex,pdwRequestedFeatures) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IDMOVideoOutputOptimizations_QueryOperationModePreferences_Proxy( + IDMOVideoOutputOptimizations * This, + ULONG ulOutputStreamIndex, + DWORD *pdwRequestedCapabilities); + + +void __RPC_STUB IDMOVideoOutputOptimizations_QueryOperationModePreferences_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDMOVideoOutputOptimizations_SetOperationMode_Proxy( + IDMOVideoOutputOptimizations * This, + ULONG ulOutputStreamIndex, + DWORD dwEnabledFeatures); + + +void __RPC_STUB IDMOVideoOutputOptimizations_SetOperationMode_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDMOVideoOutputOptimizations_GetCurrentOperationMode_Proxy( + IDMOVideoOutputOptimizations * This, + ULONG ulOutputStreamIndex, + DWORD *pdwEnabledFeatures); + + +void __RPC_STUB IDMOVideoOutputOptimizations_GetCurrentOperationMode_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDMOVideoOutputOptimizations_GetCurrentSampleRequirements_Proxy( + IDMOVideoOutputOptimizations * This, + ULONG ulOutputStreamIndex, + DWORD *pdwRequestedFeatures); + + +void __RPC_STUB IDMOVideoOutputOptimizations_GetCurrentSampleRequirements_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IDMOVideoOutputOptimizations_INTERFACE_DEFINED__ */ + + +/* Additional Prototypes for ALL interfaces */ + +/* end of Additional Prototypes */ + +#ifdef __cplusplus +} +#endif + +#endif + + diff --git a/videoInputSrcAndDemos/libs/DShow/Include/medparam.h b/videoInputSrcAndDemos/libs/DShow/Include/medparam.h index 6163bea..db38cac 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/medparam.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/medparam.h @@ -1,581 +1,581 @@ - -#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 medparam.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 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 -#endif // __RPCNDR_H_VERSION__ - -#ifndef COM_NO_WINDOWS_H -#include "windows.h" -#include "ole2.h" -#endif /*COM_NO_WINDOWS_H*/ - -#ifndef __medparam_h__ -#define __medparam_h__ - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -#pragma once -#endif - -/* Forward Declarations */ - -#ifndef __IMediaParamInfo_FWD_DEFINED__ -#define __IMediaParamInfo_FWD_DEFINED__ -typedef interface IMediaParamInfo IMediaParamInfo; -#endif /* __IMediaParamInfo_FWD_DEFINED__ */ - - -#ifndef __IMediaParams_FWD_DEFINED__ -#define __IMediaParams_FWD_DEFINED__ -typedef interface IMediaParams IMediaParams; -#endif /* __IMediaParams_FWD_DEFINED__ */ - - -/* header files for imported files */ -#include "oaidl.h" -#include "ocidl.h" -#include "strmif.h" - -#ifdef __cplusplus -extern "C"{ -#endif - -void * __RPC_USER MIDL_user_allocate(size_t); -void __RPC_USER MIDL_user_free( void * ); - -/* interface __MIDL_itf_medparam_0000 */ -/* [local] */ - -typedef float MP_DATA; - -typedef -enum _MP_Type - { MPT_INT = 0, - MPT_FLOAT = MPT_INT + 1, - MPT_BOOL = MPT_FLOAT + 1, - MPT_ENUM = MPT_BOOL + 1, - MPT_MAX = MPT_ENUM + 1 - } MP_TYPE; - -#define MPBOOL_TRUE ( 1 ) - -#define MPBOOL_FALSE ( 0 ) - -typedef -enum _MP_CURVE_TYPE - { MP_CURVE_JUMP = 0x1, - MP_CURVE_LINEAR = 0x2, - MP_CURVE_SQUARE = 0x4, - MP_CURVE_INVSQUARE = 0x8, - MP_CURVE_SINE = 0x10 - } MP_CURVE_TYPE; - -typedef DWORD MP_CAPS; - -#define MP_CAPS_CURVE_JUMP ( MP_CURVE_JUMP ) - -#define MP_CAPS_CURVE_LINEAR ( MP_CURVE_LINEAR ) - -#define MP_CAPS_CURVE_SQUARE ( MP_CURVE_SQUARE ) - -#define MP_CAPS_CURVE_INVSQUARE ( MP_CURVE_INVSQUARE ) - -#define MP_CAPS_CURVE_SINE ( MP_CURVE_SINE ) - -typedef struct _MP_PARAMINFO - { - MP_TYPE mpType; - MP_CAPS mopCaps; - MP_DATA mpdMinValue; - MP_DATA mpdMaxValue; - MP_DATA mpdNeutralValue; - WCHAR szUnitText[ 32 ]; - WCHAR szLabel[ 32 ]; - } MP_PARAMINFO; - -typedef DWORD DWORD; - -#define DWORD_ALLPARAMS ( -1 ) - -typedef DWORD MP_TIMEDATA; - -DEFINE_GUID(GUID_TIME_REFERENCE, -0x93ad712b, 0xdaa0, 0x4ffe, 0xbc, 0x81, 0xb0, 0xce, 0x50, 0xf, 0xcd, 0xd9); -DEFINE_GUID(GUID_TIME_MUSIC, -0x574c49d, 0x5b04, 0x4b15, 0xa5, 0x42, 0xae, 0x28, 0x20, 0x30, 0x11, 0x7b); -DEFINE_GUID(GUID_TIME_SAMPLES, -0xa8593d05, 0xc43, 0x4984, 0x9a, 0x63, 0x97, 0xaf, 0x9e, 0x2, 0xc4, 0xc0); -typedef DWORD MP_FLAGS; - -#define MPF_ENVLP_STANDARD ( 0 ) - -#define MPF_ENVLP_BEGIN_CURRENTVAL ( 0x1 ) - -#define MPF_ENVLP_BEGIN_NEUTRALVAL ( 0x2 ) - -typedef struct _MP_ENVELOPE_SEGMENT - { - REFERENCE_TIME rtStart; - REFERENCE_TIME rtEnd; - MP_DATA valStart; - MP_DATA valEnd; - MP_CURVE_TYPE iCurve; - MP_FLAGS flags; - } MP_ENVELOPE_SEGMENT; - -#define MPF_PUNCHIN_REFTIME ( 0 ) - -#define MPF_PUNCHIN_NOW ( 0x1 ) - -#define MPF_PUNCHIN_STOPPED ( 0x2 ) - - - -extern RPC_IF_HANDLE __MIDL_itf_medparam_0000_v0_0_c_ifspec; -extern RPC_IF_HANDLE __MIDL_itf_medparam_0000_v0_0_s_ifspec; - -#ifndef __IMediaParamInfo_INTERFACE_DEFINED__ -#define __IMediaParamInfo_INTERFACE_DEFINED__ - -/* interface IMediaParamInfo */ -/* [version][uuid][object] */ - - -EXTERN_C const IID IID_IMediaParamInfo; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("6d6cbb60-a223-44aa-842f-a2f06750be6d") - IMediaParamInfo : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE GetParamCount( - /* [out] */ DWORD *pdwParams) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetParamInfo( - /* [in] */ DWORD dwParamIndex, - /* [out] */ MP_PARAMINFO *pInfo) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetParamText( - /* [in] */ DWORD dwParamIndex, - /* [out] */ WCHAR **ppwchText) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetNumTimeFormats( - /* [out] */ DWORD *pdwNumTimeFormats) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetSupportedTimeFormat( - /* [in] */ DWORD dwFormatIndex, - /* [out] */ GUID *pguidTimeFormat) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetCurrentTimeFormat( - /* [out] */ GUID *pguidTimeFormat, - /* [out] */ MP_TIMEDATA *pTimeData) = 0; - - }; - -#else /* C style interface */ - - typedef struct IMediaParamInfoVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IMediaParamInfo * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IMediaParamInfo * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IMediaParamInfo * This); - - HRESULT ( STDMETHODCALLTYPE *GetParamCount )( - IMediaParamInfo * This, - /* [out] */ DWORD *pdwParams); - - HRESULT ( STDMETHODCALLTYPE *GetParamInfo )( - IMediaParamInfo * This, - /* [in] */ DWORD dwParamIndex, - /* [out] */ MP_PARAMINFO *pInfo); - - HRESULT ( STDMETHODCALLTYPE *GetParamText )( - IMediaParamInfo * This, - /* [in] */ DWORD dwParamIndex, - /* [out] */ WCHAR **ppwchText); - - HRESULT ( STDMETHODCALLTYPE *GetNumTimeFormats )( - IMediaParamInfo * This, - /* [out] */ DWORD *pdwNumTimeFormats); - - HRESULT ( STDMETHODCALLTYPE *GetSupportedTimeFormat )( - IMediaParamInfo * This, - /* [in] */ DWORD dwFormatIndex, - /* [out] */ GUID *pguidTimeFormat); - - HRESULT ( STDMETHODCALLTYPE *GetCurrentTimeFormat )( - IMediaParamInfo * This, - /* [out] */ GUID *pguidTimeFormat, - /* [out] */ MP_TIMEDATA *pTimeData); - - END_INTERFACE - } IMediaParamInfoVtbl; - - interface IMediaParamInfo - { - CONST_VTBL struct IMediaParamInfoVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IMediaParamInfo_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IMediaParamInfo_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IMediaParamInfo_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IMediaParamInfo_GetParamCount(This,pdwParams) \ - (This)->lpVtbl -> GetParamCount(This,pdwParams) - -#define IMediaParamInfo_GetParamInfo(This,dwParamIndex,pInfo) \ - (This)->lpVtbl -> GetParamInfo(This,dwParamIndex,pInfo) - -#define IMediaParamInfo_GetParamText(This,dwParamIndex,ppwchText) \ - (This)->lpVtbl -> GetParamText(This,dwParamIndex,ppwchText) - -#define IMediaParamInfo_GetNumTimeFormats(This,pdwNumTimeFormats) \ - (This)->lpVtbl -> GetNumTimeFormats(This,pdwNumTimeFormats) - -#define IMediaParamInfo_GetSupportedTimeFormat(This,dwFormatIndex,pguidTimeFormat) \ - (This)->lpVtbl -> GetSupportedTimeFormat(This,dwFormatIndex,pguidTimeFormat) - -#define IMediaParamInfo_GetCurrentTimeFormat(This,pguidTimeFormat,pTimeData) \ - (This)->lpVtbl -> GetCurrentTimeFormat(This,pguidTimeFormat,pTimeData) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IMediaParamInfo_GetParamCount_Proxy( - IMediaParamInfo * This, - /* [out] */ DWORD *pdwParams); - - -void __RPC_STUB IMediaParamInfo_GetParamCount_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IMediaParamInfo_GetParamInfo_Proxy( - IMediaParamInfo * This, - /* [in] */ DWORD dwParamIndex, - /* [out] */ MP_PARAMINFO *pInfo); - - -void __RPC_STUB IMediaParamInfo_GetParamInfo_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IMediaParamInfo_GetParamText_Proxy( - IMediaParamInfo * This, - /* [in] */ DWORD dwParamIndex, - /* [out] */ WCHAR **ppwchText); - - -void __RPC_STUB IMediaParamInfo_GetParamText_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IMediaParamInfo_GetNumTimeFormats_Proxy( - IMediaParamInfo * This, - /* [out] */ DWORD *pdwNumTimeFormats); - - -void __RPC_STUB IMediaParamInfo_GetNumTimeFormats_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IMediaParamInfo_GetSupportedTimeFormat_Proxy( - IMediaParamInfo * This, - /* [in] */ DWORD dwFormatIndex, - /* [out] */ GUID *pguidTimeFormat); - - -void __RPC_STUB IMediaParamInfo_GetSupportedTimeFormat_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IMediaParamInfo_GetCurrentTimeFormat_Proxy( - IMediaParamInfo * This, - /* [out] */ GUID *pguidTimeFormat, - /* [out] */ MP_TIMEDATA *pTimeData); - - -void __RPC_STUB IMediaParamInfo_GetCurrentTimeFormat_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IMediaParamInfo_INTERFACE_DEFINED__ */ - - -#ifndef __IMediaParams_INTERFACE_DEFINED__ -#define __IMediaParams_INTERFACE_DEFINED__ - -/* interface IMediaParams */ -/* [version][uuid][object] */ - - -EXTERN_C const IID IID_IMediaParams; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("6d6cbb61-a223-44aa-842f-a2f06750be6e") - IMediaParams : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE GetParam( - /* [in] */ DWORD dwParamIndex, - /* [out] */ MP_DATA *pValue) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetParam( - /* [in] */ DWORD dwParamIndex, - /* [in] */ MP_DATA value) = 0; - - virtual HRESULT STDMETHODCALLTYPE AddEnvelope( - /* [in] */ DWORD dwParamIndex, - /* [in] */ DWORD cSegments, - /* [in] */ MP_ENVELOPE_SEGMENT *pEnvelopeSegments) = 0; - - virtual HRESULT STDMETHODCALLTYPE FlushEnvelope( - /* [in] */ DWORD dwParamIndex, - /* [in] */ REFERENCE_TIME refTimeStart, - /* [in] */ REFERENCE_TIME refTimeEnd) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetTimeFormat( - /* [in] */ GUID guidTimeFormat, - /* [in] */ MP_TIMEDATA mpTimeData) = 0; - - }; - -#else /* C style interface */ - - typedef struct IMediaParamsVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IMediaParams * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IMediaParams * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IMediaParams * This); - - HRESULT ( STDMETHODCALLTYPE *GetParam )( - IMediaParams * This, - /* [in] */ DWORD dwParamIndex, - /* [out] */ MP_DATA *pValue); - - HRESULT ( STDMETHODCALLTYPE *SetParam )( - IMediaParams * This, - /* [in] */ DWORD dwParamIndex, - /* [in] */ MP_DATA value); - - HRESULT ( STDMETHODCALLTYPE *AddEnvelope )( - IMediaParams * This, - /* [in] */ DWORD dwParamIndex, - /* [in] */ DWORD cSegments, - /* [in] */ MP_ENVELOPE_SEGMENT *pEnvelopeSegments); - - HRESULT ( STDMETHODCALLTYPE *FlushEnvelope )( - IMediaParams * This, - /* [in] */ DWORD dwParamIndex, - /* [in] */ REFERENCE_TIME refTimeStart, - /* [in] */ REFERENCE_TIME refTimeEnd); - - HRESULT ( STDMETHODCALLTYPE *SetTimeFormat )( - IMediaParams * This, - /* [in] */ GUID guidTimeFormat, - /* [in] */ MP_TIMEDATA mpTimeData); - - END_INTERFACE - } IMediaParamsVtbl; - - interface IMediaParams - { - CONST_VTBL struct IMediaParamsVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IMediaParams_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IMediaParams_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IMediaParams_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IMediaParams_GetParam(This,dwParamIndex,pValue) \ - (This)->lpVtbl -> GetParam(This,dwParamIndex,pValue) - -#define IMediaParams_SetParam(This,dwParamIndex,value) \ - (This)->lpVtbl -> SetParam(This,dwParamIndex,value) - -#define IMediaParams_AddEnvelope(This,dwParamIndex,cSegments,pEnvelopeSegments) \ - (This)->lpVtbl -> AddEnvelope(This,dwParamIndex,cSegments,pEnvelopeSegments) - -#define IMediaParams_FlushEnvelope(This,dwParamIndex,refTimeStart,refTimeEnd) \ - (This)->lpVtbl -> FlushEnvelope(This,dwParamIndex,refTimeStart,refTimeEnd) - -#define IMediaParams_SetTimeFormat(This,guidTimeFormat,mpTimeData) \ - (This)->lpVtbl -> SetTimeFormat(This,guidTimeFormat,mpTimeData) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IMediaParams_GetParam_Proxy( - IMediaParams * This, - /* [in] */ DWORD dwParamIndex, - /* [out] */ MP_DATA *pValue); - - -void __RPC_STUB IMediaParams_GetParam_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IMediaParams_SetParam_Proxy( - IMediaParams * This, - /* [in] */ DWORD dwParamIndex, - /* [in] */ MP_DATA value); - - -void __RPC_STUB IMediaParams_SetParam_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IMediaParams_AddEnvelope_Proxy( - IMediaParams * This, - /* [in] */ DWORD dwParamIndex, - /* [in] */ DWORD cSegments, - /* [in] */ MP_ENVELOPE_SEGMENT *pEnvelopeSegments); - - -void __RPC_STUB IMediaParams_AddEnvelope_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IMediaParams_FlushEnvelope_Proxy( - IMediaParams * This, - /* [in] */ DWORD dwParamIndex, - /* [in] */ REFERENCE_TIME refTimeStart, - /* [in] */ REFERENCE_TIME refTimeEnd); - - -void __RPC_STUB IMediaParams_FlushEnvelope_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IMediaParams_SetTimeFormat_Proxy( - IMediaParams * This, - /* [in] */ GUID guidTimeFormat, - /* [in] */ MP_TIMEDATA mpTimeData); - - -void __RPC_STUB IMediaParams_SetTimeFormat_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IMediaParams_INTERFACE_DEFINED__ */ - - -/* Additional Prototypes for ALL interfaces */ - -/* end of Additional Prototypes */ - -#ifdef __cplusplus -} -#endif - -#endif - - + +#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 medparam.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 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 +#endif // __RPCNDR_H_VERSION__ + +#ifndef COM_NO_WINDOWS_H +#include "windows.h" +#include "ole2.h" +#endif /*COM_NO_WINDOWS_H*/ + +#ifndef __medparam_h__ +#define __medparam_h__ + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#pragma once +#endif + +/* Forward Declarations */ + +#ifndef __IMediaParamInfo_FWD_DEFINED__ +#define __IMediaParamInfo_FWD_DEFINED__ +typedef interface IMediaParamInfo IMediaParamInfo; +#endif /* __IMediaParamInfo_FWD_DEFINED__ */ + + +#ifndef __IMediaParams_FWD_DEFINED__ +#define __IMediaParams_FWD_DEFINED__ +typedef interface IMediaParams IMediaParams; +#endif /* __IMediaParams_FWD_DEFINED__ */ + + +/* header files for imported files */ +#include "oaidl.h" +#include "ocidl.h" +#include "strmif.h" + +#ifdef __cplusplus +extern "C"{ +#endif + +void * __RPC_USER MIDL_user_allocate(size_t); +void __RPC_USER MIDL_user_free( void * ); + +/* interface __MIDL_itf_medparam_0000 */ +/* [local] */ + +typedef float MP_DATA; + +typedef +enum _MP_Type + { MPT_INT = 0, + MPT_FLOAT = MPT_INT + 1, + MPT_BOOL = MPT_FLOAT + 1, + MPT_ENUM = MPT_BOOL + 1, + MPT_MAX = MPT_ENUM + 1 + } MP_TYPE; + +#define MPBOOL_TRUE ( 1 ) + +#define MPBOOL_FALSE ( 0 ) + +typedef +enum _MP_CURVE_TYPE + { MP_CURVE_JUMP = 0x1, + MP_CURVE_LINEAR = 0x2, + MP_CURVE_SQUARE = 0x4, + MP_CURVE_INVSQUARE = 0x8, + MP_CURVE_SINE = 0x10 + } MP_CURVE_TYPE; + +typedef DWORD MP_CAPS; + +#define MP_CAPS_CURVE_JUMP ( MP_CURVE_JUMP ) + +#define MP_CAPS_CURVE_LINEAR ( MP_CURVE_LINEAR ) + +#define MP_CAPS_CURVE_SQUARE ( MP_CURVE_SQUARE ) + +#define MP_CAPS_CURVE_INVSQUARE ( MP_CURVE_INVSQUARE ) + +#define MP_CAPS_CURVE_SINE ( MP_CURVE_SINE ) + +typedef struct _MP_PARAMINFO + { + MP_TYPE mpType; + MP_CAPS mopCaps; + MP_DATA mpdMinValue; + MP_DATA mpdMaxValue; + MP_DATA mpdNeutralValue; + WCHAR szUnitText[ 32 ]; + WCHAR szLabel[ 32 ]; + } MP_PARAMINFO; + +typedef DWORD DWORD; + +#define DWORD_ALLPARAMS ( -1 ) + +typedef DWORD MP_TIMEDATA; + +DEFINE_GUID(GUID_TIME_REFERENCE, +0x93ad712b, 0xdaa0, 0x4ffe, 0xbc, 0x81, 0xb0, 0xce, 0x50, 0xf, 0xcd, 0xd9); +DEFINE_GUID(GUID_TIME_MUSIC, +0x574c49d, 0x5b04, 0x4b15, 0xa5, 0x42, 0xae, 0x28, 0x20, 0x30, 0x11, 0x7b); +DEFINE_GUID(GUID_TIME_SAMPLES, +0xa8593d05, 0xc43, 0x4984, 0x9a, 0x63, 0x97, 0xaf, 0x9e, 0x2, 0xc4, 0xc0); +typedef DWORD MP_FLAGS; + +#define MPF_ENVLP_STANDARD ( 0 ) + +#define MPF_ENVLP_BEGIN_CURRENTVAL ( 0x1 ) + +#define MPF_ENVLP_BEGIN_NEUTRALVAL ( 0x2 ) + +typedef struct _MP_ENVELOPE_SEGMENT + { + REFERENCE_TIME rtStart; + REFERENCE_TIME rtEnd; + MP_DATA valStart; + MP_DATA valEnd; + MP_CURVE_TYPE iCurve; + MP_FLAGS flags; + } MP_ENVELOPE_SEGMENT; + +#define MPF_PUNCHIN_REFTIME ( 0 ) + +#define MPF_PUNCHIN_NOW ( 0x1 ) + +#define MPF_PUNCHIN_STOPPED ( 0x2 ) + + + +extern RPC_IF_HANDLE __MIDL_itf_medparam_0000_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_medparam_0000_v0_0_s_ifspec; + +#ifndef __IMediaParamInfo_INTERFACE_DEFINED__ +#define __IMediaParamInfo_INTERFACE_DEFINED__ + +/* interface IMediaParamInfo */ +/* [version][uuid][object] */ + + +EXTERN_C const IID IID_IMediaParamInfo; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("6d6cbb60-a223-44aa-842f-a2f06750be6d") + IMediaParamInfo : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE GetParamCount( + /* [out] */ DWORD *pdwParams) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetParamInfo( + /* [in] */ DWORD dwParamIndex, + /* [out] */ MP_PARAMINFO *pInfo) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetParamText( + /* [in] */ DWORD dwParamIndex, + /* [out] */ WCHAR **ppwchText) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetNumTimeFormats( + /* [out] */ DWORD *pdwNumTimeFormats) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetSupportedTimeFormat( + /* [in] */ DWORD dwFormatIndex, + /* [out] */ GUID *pguidTimeFormat) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetCurrentTimeFormat( + /* [out] */ GUID *pguidTimeFormat, + /* [out] */ MP_TIMEDATA *pTimeData) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMediaParamInfoVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMediaParamInfo * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMediaParamInfo * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMediaParamInfo * This); + + HRESULT ( STDMETHODCALLTYPE *GetParamCount )( + IMediaParamInfo * This, + /* [out] */ DWORD *pdwParams); + + HRESULT ( STDMETHODCALLTYPE *GetParamInfo )( + IMediaParamInfo * This, + /* [in] */ DWORD dwParamIndex, + /* [out] */ MP_PARAMINFO *pInfo); + + HRESULT ( STDMETHODCALLTYPE *GetParamText )( + IMediaParamInfo * This, + /* [in] */ DWORD dwParamIndex, + /* [out] */ WCHAR **ppwchText); + + HRESULT ( STDMETHODCALLTYPE *GetNumTimeFormats )( + IMediaParamInfo * This, + /* [out] */ DWORD *pdwNumTimeFormats); + + HRESULT ( STDMETHODCALLTYPE *GetSupportedTimeFormat )( + IMediaParamInfo * This, + /* [in] */ DWORD dwFormatIndex, + /* [out] */ GUID *pguidTimeFormat); + + HRESULT ( STDMETHODCALLTYPE *GetCurrentTimeFormat )( + IMediaParamInfo * This, + /* [out] */ GUID *pguidTimeFormat, + /* [out] */ MP_TIMEDATA *pTimeData); + + END_INTERFACE + } IMediaParamInfoVtbl; + + interface IMediaParamInfo + { + CONST_VTBL struct IMediaParamInfoVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMediaParamInfo_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IMediaParamInfo_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IMediaParamInfo_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IMediaParamInfo_GetParamCount(This,pdwParams) \ + (This)->lpVtbl -> GetParamCount(This,pdwParams) + +#define IMediaParamInfo_GetParamInfo(This,dwParamIndex,pInfo) \ + (This)->lpVtbl -> GetParamInfo(This,dwParamIndex,pInfo) + +#define IMediaParamInfo_GetParamText(This,dwParamIndex,ppwchText) \ + (This)->lpVtbl -> GetParamText(This,dwParamIndex,ppwchText) + +#define IMediaParamInfo_GetNumTimeFormats(This,pdwNumTimeFormats) \ + (This)->lpVtbl -> GetNumTimeFormats(This,pdwNumTimeFormats) + +#define IMediaParamInfo_GetSupportedTimeFormat(This,dwFormatIndex,pguidTimeFormat) \ + (This)->lpVtbl -> GetSupportedTimeFormat(This,dwFormatIndex,pguidTimeFormat) + +#define IMediaParamInfo_GetCurrentTimeFormat(This,pguidTimeFormat,pTimeData) \ + (This)->lpVtbl -> GetCurrentTimeFormat(This,pguidTimeFormat,pTimeData) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IMediaParamInfo_GetParamCount_Proxy( + IMediaParamInfo * This, + /* [out] */ DWORD *pdwParams); + + +void __RPC_STUB IMediaParamInfo_GetParamCount_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IMediaParamInfo_GetParamInfo_Proxy( + IMediaParamInfo * This, + /* [in] */ DWORD dwParamIndex, + /* [out] */ MP_PARAMINFO *pInfo); + + +void __RPC_STUB IMediaParamInfo_GetParamInfo_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IMediaParamInfo_GetParamText_Proxy( + IMediaParamInfo * This, + /* [in] */ DWORD dwParamIndex, + /* [out] */ WCHAR **ppwchText); + + +void __RPC_STUB IMediaParamInfo_GetParamText_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IMediaParamInfo_GetNumTimeFormats_Proxy( + IMediaParamInfo * This, + /* [out] */ DWORD *pdwNumTimeFormats); + + +void __RPC_STUB IMediaParamInfo_GetNumTimeFormats_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IMediaParamInfo_GetSupportedTimeFormat_Proxy( + IMediaParamInfo * This, + /* [in] */ DWORD dwFormatIndex, + /* [out] */ GUID *pguidTimeFormat); + + +void __RPC_STUB IMediaParamInfo_GetSupportedTimeFormat_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IMediaParamInfo_GetCurrentTimeFormat_Proxy( + IMediaParamInfo * This, + /* [out] */ GUID *pguidTimeFormat, + /* [out] */ MP_TIMEDATA *pTimeData); + + +void __RPC_STUB IMediaParamInfo_GetCurrentTimeFormat_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IMediaParamInfo_INTERFACE_DEFINED__ */ + + +#ifndef __IMediaParams_INTERFACE_DEFINED__ +#define __IMediaParams_INTERFACE_DEFINED__ + +/* interface IMediaParams */ +/* [version][uuid][object] */ + + +EXTERN_C const IID IID_IMediaParams; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("6d6cbb61-a223-44aa-842f-a2f06750be6e") + IMediaParams : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE GetParam( + /* [in] */ DWORD dwParamIndex, + /* [out] */ MP_DATA *pValue) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetParam( + /* [in] */ DWORD dwParamIndex, + /* [in] */ MP_DATA value) = 0; + + virtual HRESULT STDMETHODCALLTYPE AddEnvelope( + /* [in] */ DWORD dwParamIndex, + /* [in] */ DWORD cSegments, + /* [in] */ MP_ENVELOPE_SEGMENT *pEnvelopeSegments) = 0; + + virtual HRESULT STDMETHODCALLTYPE FlushEnvelope( + /* [in] */ DWORD dwParamIndex, + /* [in] */ REFERENCE_TIME refTimeStart, + /* [in] */ REFERENCE_TIME refTimeEnd) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetTimeFormat( + /* [in] */ GUID guidTimeFormat, + /* [in] */ MP_TIMEDATA mpTimeData) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMediaParamsVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMediaParams * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMediaParams * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMediaParams * This); + + HRESULT ( STDMETHODCALLTYPE *GetParam )( + IMediaParams * This, + /* [in] */ DWORD dwParamIndex, + /* [out] */ MP_DATA *pValue); + + HRESULT ( STDMETHODCALLTYPE *SetParam )( + IMediaParams * This, + /* [in] */ DWORD dwParamIndex, + /* [in] */ MP_DATA value); + + HRESULT ( STDMETHODCALLTYPE *AddEnvelope )( + IMediaParams * This, + /* [in] */ DWORD dwParamIndex, + /* [in] */ DWORD cSegments, + /* [in] */ MP_ENVELOPE_SEGMENT *pEnvelopeSegments); + + HRESULT ( STDMETHODCALLTYPE *FlushEnvelope )( + IMediaParams * This, + /* [in] */ DWORD dwParamIndex, + /* [in] */ REFERENCE_TIME refTimeStart, + /* [in] */ REFERENCE_TIME refTimeEnd); + + HRESULT ( STDMETHODCALLTYPE *SetTimeFormat )( + IMediaParams * This, + /* [in] */ GUID guidTimeFormat, + /* [in] */ MP_TIMEDATA mpTimeData); + + END_INTERFACE + } IMediaParamsVtbl; + + interface IMediaParams + { + CONST_VTBL struct IMediaParamsVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMediaParams_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IMediaParams_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IMediaParams_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IMediaParams_GetParam(This,dwParamIndex,pValue) \ + (This)->lpVtbl -> GetParam(This,dwParamIndex,pValue) + +#define IMediaParams_SetParam(This,dwParamIndex,value) \ + (This)->lpVtbl -> SetParam(This,dwParamIndex,value) + +#define IMediaParams_AddEnvelope(This,dwParamIndex,cSegments,pEnvelopeSegments) \ + (This)->lpVtbl -> AddEnvelope(This,dwParamIndex,cSegments,pEnvelopeSegments) + +#define IMediaParams_FlushEnvelope(This,dwParamIndex,refTimeStart,refTimeEnd) \ + (This)->lpVtbl -> FlushEnvelope(This,dwParamIndex,refTimeStart,refTimeEnd) + +#define IMediaParams_SetTimeFormat(This,guidTimeFormat,mpTimeData) \ + (This)->lpVtbl -> SetTimeFormat(This,guidTimeFormat,mpTimeData) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IMediaParams_GetParam_Proxy( + IMediaParams * This, + /* [in] */ DWORD dwParamIndex, + /* [out] */ MP_DATA *pValue); + + +void __RPC_STUB IMediaParams_GetParam_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IMediaParams_SetParam_Proxy( + IMediaParams * This, + /* [in] */ DWORD dwParamIndex, + /* [in] */ MP_DATA value); + + +void __RPC_STUB IMediaParams_SetParam_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IMediaParams_AddEnvelope_Proxy( + IMediaParams * This, + /* [in] */ DWORD dwParamIndex, + /* [in] */ DWORD cSegments, + /* [in] */ MP_ENVELOPE_SEGMENT *pEnvelopeSegments); + + +void __RPC_STUB IMediaParams_AddEnvelope_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IMediaParams_FlushEnvelope_Proxy( + IMediaParams * This, + /* [in] */ DWORD dwParamIndex, + /* [in] */ REFERENCE_TIME refTimeStart, + /* [in] */ REFERENCE_TIME refTimeEnd); + + +void __RPC_STUB IMediaParams_FlushEnvelope_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IMediaParams_SetTimeFormat_Proxy( + IMediaParams * This, + /* [in] */ GUID guidTimeFormat, + /* [in] */ MP_TIMEDATA mpTimeData); + + +void __RPC_STUB IMediaParams_SetTimeFormat_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IMediaParams_INTERFACE_DEFINED__ */ + + +/* Additional Prototypes for ALL interfaces */ + +/* end of Additional Prototypes */ + +#ifdef __cplusplus +} +#endif + +#endif + + diff --git a/videoInputSrcAndDemos/libs/DShow/Include/mixerocx.h b/videoInputSrcAndDemos/libs/DShow/Include/mixerocx.h index a12860d..fd7814e 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/mixerocx.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/mixerocx.h @@ -1,488 +1,488 @@ - -#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 mixerocx.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 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 -#endif // __RPCNDR_H_VERSION__ - -#ifndef COM_NO_WINDOWS_H -#include "windows.h" -#include "ole2.h" -#endif /*COM_NO_WINDOWS_H*/ - -#ifndef __mixerocx_h__ -#define __mixerocx_h__ - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -#pragma once -#endif - -/* Forward Declarations */ - -#ifndef __IMixerOCXNotify_FWD_DEFINED__ -#define __IMixerOCXNotify_FWD_DEFINED__ -typedef interface IMixerOCXNotify IMixerOCXNotify; -#endif /* __IMixerOCXNotify_FWD_DEFINED__ */ - - -#ifndef __IMixerOCX_FWD_DEFINED__ -#define __IMixerOCX_FWD_DEFINED__ -typedef interface IMixerOCX IMixerOCX; -#endif /* __IMixerOCX_FWD_DEFINED__ */ - - -/* header files for imported files */ -#include "unknwn.h" - -#ifdef __cplusplus -extern "C"{ -#endif - -void * __RPC_USER MIDL_user_allocate(size_t); -void __RPC_USER MIDL_user_free( void * ); - -/* interface __MIDL_itf_mixerocx_0000 */ -/* [local] */ - - - - - -extern RPC_IF_HANDLE __MIDL_itf_mixerocx_0000_v0_0_c_ifspec; -extern RPC_IF_HANDLE __MIDL_itf_mixerocx_0000_v0_0_s_ifspec; - -#ifndef __IMixerOCXNotify_INTERFACE_DEFINED__ -#define __IMixerOCXNotify_INTERFACE_DEFINED__ - -/* interface IMixerOCXNotify */ -/* [unique][helpstring][uuid][object] */ - - -EXTERN_C const IID IID_IMixerOCXNotify; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("81A3BD31-DEE1-11d1-8508-00A0C91F9CA0") - IMixerOCXNotify : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE OnInvalidateRect( - /* [in] */ LPCRECT lpcRect) = 0; - - virtual HRESULT STDMETHODCALLTYPE OnStatusChange( - /* [in] */ ULONG ulStatusFlags) = 0; - - virtual HRESULT STDMETHODCALLTYPE OnDataChange( - /* [in] */ ULONG ulDataFlags) = 0; - - }; - -#else /* C style interface */ - - typedef struct IMixerOCXNotifyVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IMixerOCXNotify * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IMixerOCXNotify * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IMixerOCXNotify * This); - - HRESULT ( STDMETHODCALLTYPE *OnInvalidateRect )( - IMixerOCXNotify * This, - /* [in] */ LPCRECT lpcRect); - - HRESULT ( STDMETHODCALLTYPE *OnStatusChange )( - IMixerOCXNotify * This, - /* [in] */ ULONG ulStatusFlags); - - HRESULT ( STDMETHODCALLTYPE *OnDataChange )( - IMixerOCXNotify * This, - /* [in] */ ULONG ulDataFlags); - - END_INTERFACE - } IMixerOCXNotifyVtbl; - - interface IMixerOCXNotify - { - CONST_VTBL struct IMixerOCXNotifyVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IMixerOCXNotify_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IMixerOCXNotify_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IMixerOCXNotify_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IMixerOCXNotify_OnInvalidateRect(This,lpcRect) \ - (This)->lpVtbl -> OnInvalidateRect(This,lpcRect) - -#define IMixerOCXNotify_OnStatusChange(This,ulStatusFlags) \ - (This)->lpVtbl -> OnStatusChange(This,ulStatusFlags) - -#define IMixerOCXNotify_OnDataChange(This,ulDataFlags) \ - (This)->lpVtbl -> OnDataChange(This,ulDataFlags) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IMixerOCXNotify_OnInvalidateRect_Proxy( - IMixerOCXNotify * This, - /* [in] */ LPCRECT lpcRect); - - -void __RPC_STUB IMixerOCXNotify_OnInvalidateRect_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IMixerOCXNotify_OnStatusChange_Proxy( - IMixerOCXNotify * This, - /* [in] */ ULONG ulStatusFlags); - - -void __RPC_STUB IMixerOCXNotify_OnStatusChange_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IMixerOCXNotify_OnDataChange_Proxy( - IMixerOCXNotify * This, - /* [in] */ ULONG ulDataFlags); - - -void __RPC_STUB IMixerOCXNotify_OnDataChange_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IMixerOCXNotify_INTERFACE_DEFINED__ */ - - -#ifndef __IMixerOCX_INTERFACE_DEFINED__ -#define __IMixerOCX_INTERFACE_DEFINED__ - -/* interface IMixerOCX */ -/* [unique][helpstring][uuid][object] */ - - -EXTERN_C const IID IID_IMixerOCX; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("81A3BD32-DEE1-11d1-8508-00A0C91F9CA0") - IMixerOCX : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE OnDisplayChange( - /* [in] */ ULONG ulBitsPerPixel, - /* [in] */ ULONG ulScreenWidth, - /* [in] */ ULONG ulScreenHeight) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetAspectRatio( - /* [out] */ LPDWORD pdwPictAspectRatioX, - /* [out] */ LPDWORD pdwPictAspectRatioY) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetVideoSize( - /* [out] */ LPDWORD pdwVideoWidth, - /* [out] */ LPDWORD pdwVideoHeight) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetStatus( - /* [out] */ LPDWORD *pdwStatus) = 0; - - virtual HRESULT STDMETHODCALLTYPE OnDraw( - /* [in] */ HDC hdcDraw, - /* [in] */ LPCRECT prcDraw) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetDrawRegion( - /* [in] */ LPPOINT lpptTopLeftSC, - /* [in] */ LPCRECT prcDrawCC, - /* [in] */ LPCRECT lprcClip) = 0; - - virtual HRESULT STDMETHODCALLTYPE Advise( - /* [in] */ IMixerOCXNotify *pmdns) = 0; - - virtual HRESULT STDMETHODCALLTYPE UnAdvise( void) = 0; - - }; - -#else /* C style interface */ - - typedef struct IMixerOCXVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IMixerOCX * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IMixerOCX * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IMixerOCX * This); - - HRESULT ( STDMETHODCALLTYPE *OnDisplayChange )( - IMixerOCX * This, - /* [in] */ ULONG ulBitsPerPixel, - /* [in] */ ULONG ulScreenWidth, - /* [in] */ ULONG ulScreenHeight); - - HRESULT ( STDMETHODCALLTYPE *GetAspectRatio )( - IMixerOCX * This, - /* [out] */ LPDWORD pdwPictAspectRatioX, - /* [out] */ LPDWORD pdwPictAspectRatioY); - - HRESULT ( STDMETHODCALLTYPE *GetVideoSize )( - IMixerOCX * This, - /* [out] */ LPDWORD pdwVideoWidth, - /* [out] */ LPDWORD pdwVideoHeight); - - HRESULT ( STDMETHODCALLTYPE *GetStatus )( - IMixerOCX * This, - /* [out] */ LPDWORD *pdwStatus); - - HRESULT ( STDMETHODCALLTYPE *OnDraw )( - IMixerOCX * This, - /* [in] */ HDC hdcDraw, - /* [in] */ LPCRECT prcDraw); - - HRESULT ( STDMETHODCALLTYPE *SetDrawRegion )( - IMixerOCX * This, - /* [in] */ LPPOINT lpptTopLeftSC, - /* [in] */ LPCRECT prcDrawCC, - /* [in] */ LPCRECT lprcClip); - - HRESULT ( STDMETHODCALLTYPE *Advise )( - IMixerOCX * This, - /* [in] */ IMixerOCXNotify *pmdns); - - HRESULT ( STDMETHODCALLTYPE *UnAdvise )( - IMixerOCX * This); - - END_INTERFACE - } IMixerOCXVtbl; - - interface IMixerOCX - { - CONST_VTBL struct IMixerOCXVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IMixerOCX_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IMixerOCX_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IMixerOCX_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IMixerOCX_OnDisplayChange(This,ulBitsPerPixel,ulScreenWidth,ulScreenHeight) \ - (This)->lpVtbl -> OnDisplayChange(This,ulBitsPerPixel,ulScreenWidth,ulScreenHeight) - -#define IMixerOCX_GetAspectRatio(This,pdwPictAspectRatioX,pdwPictAspectRatioY) \ - (This)->lpVtbl -> GetAspectRatio(This,pdwPictAspectRatioX,pdwPictAspectRatioY) - -#define IMixerOCX_GetVideoSize(This,pdwVideoWidth,pdwVideoHeight) \ - (This)->lpVtbl -> GetVideoSize(This,pdwVideoWidth,pdwVideoHeight) - -#define IMixerOCX_GetStatus(This,pdwStatus) \ - (This)->lpVtbl -> GetStatus(This,pdwStatus) - -#define IMixerOCX_OnDraw(This,hdcDraw,prcDraw) \ - (This)->lpVtbl -> OnDraw(This,hdcDraw,prcDraw) - -#define IMixerOCX_SetDrawRegion(This,lpptTopLeftSC,prcDrawCC,lprcClip) \ - (This)->lpVtbl -> SetDrawRegion(This,lpptTopLeftSC,prcDrawCC,lprcClip) - -#define IMixerOCX_Advise(This,pmdns) \ - (This)->lpVtbl -> Advise(This,pmdns) - -#define IMixerOCX_UnAdvise(This) \ - (This)->lpVtbl -> UnAdvise(This) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IMixerOCX_OnDisplayChange_Proxy( - IMixerOCX * This, - /* [in] */ ULONG ulBitsPerPixel, - /* [in] */ ULONG ulScreenWidth, - /* [in] */ ULONG ulScreenHeight); - - -void __RPC_STUB IMixerOCX_OnDisplayChange_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IMixerOCX_GetAspectRatio_Proxy( - IMixerOCX * This, - /* [out] */ LPDWORD pdwPictAspectRatioX, - /* [out] */ LPDWORD pdwPictAspectRatioY); - - -void __RPC_STUB IMixerOCX_GetAspectRatio_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IMixerOCX_GetVideoSize_Proxy( - IMixerOCX * This, - /* [out] */ LPDWORD pdwVideoWidth, - /* [out] */ LPDWORD pdwVideoHeight); - - -void __RPC_STUB IMixerOCX_GetVideoSize_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IMixerOCX_GetStatus_Proxy( - IMixerOCX * This, - /* [out] */ LPDWORD *pdwStatus); - - -void __RPC_STUB IMixerOCX_GetStatus_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IMixerOCX_OnDraw_Proxy( - IMixerOCX * This, - /* [in] */ HDC hdcDraw, - /* [in] */ LPCRECT prcDraw); - - -void __RPC_STUB IMixerOCX_OnDraw_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IMixerOCX_SetDrawRegion_Proxy( - IMixerOCX * This, - /* [in] */ LPPOINT lpptTopLeftSC, - /* [in] */ LPCRECT prcDrawCC, - /* [in] */ LPCRECT lprcClip); - - -void __RPC_STUB IMixerOCX_SetDrawRegion_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IMixerOCX_Advise_Proxy( - IMixerOCX * This, - /* [in] */ IMixerOCXNotify *pmdns); - - -void __RPC_STUB IMixerOCX_Advise_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IMixerOCX_UnAdvise_Proxy( - IMixerOCX * This); - - -void __RPC_STUB IMixerOCX_UnAdvise_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IMixerOCX_INTERFACE_DEFINED__ */ - - -/* Additional Prototypes for ALL interfaces */ - -unsigned long __RPC_USER HDC_UserSize( unsigned long *, unsigned long , HDC * ); -unsigned char * __RPC_USER HDC_UserMarshal( unsigned long *, unsigned char *, HDC * ); -unsigned char * __RPC_USER HDC_UserUnmarshal(unsigned long *, unsigned char *, HDC * ); -void __RPC_USER HDC_UserFree( unsigned long *, HDC * ); - -/* end of Additional Prototypes */ - -#ifdef __cplusplus -} -#endif - -#endif - - + +#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 mixerocx.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 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 +#endif // __RPCNDR_H_VERSION__ + +#ifndef COM_NO_WINDOWS_H +#include "windows.h" +#include "ole2.h" +#endif /*COM_NO_WINDOWS_H*/ + +#ifndef __mixerocx_h__ +#define __mixerocx_h__ + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#pragma once +#endif + +/* Forward Declarations */ + +#ifndef __IMixerOCXNotify_FWD_DEFINED__ +#define __IMixerOCXNotify_FWD_DEFINED__ +typedef interface IMixerOCXNotify IMixerOCXNotify; +#endif /* __IMixerOCXNotify_FWD_DEFINED__ */ + + +#ifndef __IMixerOCX_FWD_DEFINED__ +#define __IMixerOCX_FWD_DEFINED__ +typedef interface IMixerOCX IMixerOCX; +#endif /* __IMixerOCX_FWD_DEFINED__ */ + + +/* header files for imported files */ +#include "unknwn.h" + +#ifdef __cplusplus +extern "C"{ +#endif + +void * __RPC_USER MIDL_user_allocate(size_t); +void __RPC_USER MIDL_user_free( void * ); + +/* interface __MIDL_itf_mixerocx_0000 */ +/* [local] */ + + + + + +extern RPC_IF_HANDLE __MIDL_itf_mixerocx_0000_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_mixerocx_0000_v0_0_s_ifspec; + +#ifndef __IMixerOCXNotify_INTERFACE_DEFINED__ +#define __IMixerOCXNotify_INTERFACE_DEFINED__ + +/* interface IMixerOCXNotify */ +/* [unique][helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IMixerOCXNotify; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("81A3BD31-DEE1-11d1-8508-00A0C91F9CA0") + IMixerOCXNotify : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE OnInvalidateRect( + /* [in] */ LPCRECT lpcRect) = 0; + + virtual HRESULT STDMETHODCALLTYPE OnStatusChange( + /* [in] */ ULONG ulStatusFlags) = 0; + + virtual HRESULT STDMETHODCALLTYPE OnDataChange( + /* [in] */ ULONG ulDataFlags) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMixerOCXNotifyVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMixerOCXNotify * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMixerOCXNotify * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMixerOCXNotify * This); + + HRESULT ( STDMETHODCALLTYPE *OnInvalidateRect )( + IMixerOCXNotify * This, + /* [in] */ LPCRECT lpcRect); + + HRESULT ( STDMETHODCALLTYPE *OnStatusChange )( + IMixerOCXNotify * This, + /* [in] */ ULONG ulStatusFlags); + + HRESULT ( STDMETHODCALLTYPE *OnDataChange )( + IMixerOCXNotify * This, + /* [in] */ ULONG ulDataFlags); + + END_INTERFACE + } IMixerOCXNotifyVtbl; + + interface IMixerOCXNotify + { + CONST_VTBL struct IMixerOCXNotifyVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMixerOCXNotify_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IMixerOCXNotify_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IMixerOCXNotify_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IMixerOCXNotify_OnInvalidateRect(This,lpcRect) \ + (This)->lpVtbl -> OnInvalidateRect(This,lpcRect) + +#define IMixerOCXNotify_OnStatusChange(This,ulStatusFlags) \ + (This)->lpVtbl -> OnStatusChange(This,ulStatusFlags) + +#define IMixerOCXNotify_OnDataChange(This,ulDataFlags) \ + (This)->lpVtbl -> OnDataChange(This,ulDataFlags) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IMixerOCXNotify_OnInvalidateRect_Proxy( + IMixerOCXNotify * This, + /* [in] */ LPCRECT lpcRect); + + +void __RPC_STUB IMixerOCXNotify_OnInvalidateRect_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IMixerOCXNotify_OnStatusChange_Proxy( + IMixerOCXNotify * This, + /* [in] */ ULONG ulStatusFlags); + + +void __RPC_STUB IMixerOCXNotify_OnStatusChange_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IMixerOCXNotify_OnDataChange_Proxy( + IMixerOCXNotify * This, + /* [in] */ ULONG ulDataFlags); + + +void __RPC_STUB IMixerOCXNotify_OnDataChange_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IMixerOCXNotify_INTERFACE_DEFINED__ */ + + +#ifndef __IMixerOCX_INTERFACE_DEFINED__ +#define __IMixerOCX_INTERFACE_DEFINED__ + +/* interface IMixerOCX */ +/* [unique][helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IMixerOCX; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("81A3BD32-DEE1-11d1-8508-00A0C91F9CA0") + IMixerOCX : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE OnDisplayChange( + /* [in] */ ULONG ulBitsPerPixel, + /* [in] */ ULONG ulScreenWidth, + /* [in] */ ULONG ulScreenHeight) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetAspectRatio( + /* [out] */ LPDWORD pdwPictAspectRatioX, + /* [out] */ LPDWORD pdwPictAspectRatioY) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetVideoSize( + /* [out] */ LPDWORD pdwVideoWidth, + /* [out] */ LPDWORD pdwVideoHeight) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetStatus( + /* [out] */ LPDWORD *pdwStatus) = 0; + + virtual HRESULT STDMETHODCALLTYPE OnDraw( + /* [in] */ HDC hdcDraw, + /* [in] */ LPCRECT prcDraw) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetDrawRegion( + /* [in] */ LPPOINT lpptTopLeftSC, + /* [in] */ LPCRECT prcDrawCC, + /* [in] */ LPCRECT lprcClip) = 0; + + virtual HRESULT STDMETHODCALLTYPE Advise( + /* [in] */ IMixerOCXNotify *pmdns) = 0; + + virtual HRESULT STDMETHODCALLTYPE UnAdvise( void) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMixerOCXVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMixerOCX * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMixerOCX * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMixerOCX * This); + + HRESULT ( STDMETHODCALLTYPE *OnDisplayChange )( + IMixerOCX * This, + /* [in] */ ULONG ulBitsPerPixel, + /* [in] */ ULONG ulScreenWidth, + /* [in] */ ULONG ulScreenHeight); + + HRESULT ( STDMETHODCALLTYPE *GetAspectRatio )( + IMixerOCX * This, + /* [out] */ LPDWORD pdwPictAspectRatioX, + /* [out] */ LPDWORD pdwPictAspectRatioY); + + HRESULT ( STDMETHODCALLTYPE *GetVideoSize )( + IMixerOCX * This, + /* [out] */ LPDWORD pdwVideoWidth, + /* [out] */ LPDWORD pdwVideoHeight); + + HRESULT ( STDMETHODCALLTYPE *GetStatus )( + IMixerOCX * This, + /* [out] */ LPDWORD *pdwStatus); + + HRESULT ( STDMETHODCALLTYPE *OnDraw )( + IMixerOCX * This, + /* [in] */ HDC hdcDraw, + /* [in] */ LPCRECT prcDraw); + + HRESULT ( STDMETHODCALLTYPE *SetDrawRegion )( + IMixerOCX * This, + /* [in] */ LPPOINT lpptTopLeftSC, + /* [in] */ LPCRECT prcDrawCC, + /* [in] */ LPCRECT lprcClip); + + HRESULT ( STDMETHODCALLTYPE *Advise )( + IMixerOCX * This, + /* [in] */ IMixerOCXNotify *pmdns); + + HRESULT ( STDMETHODCALLTYPE *UnAdvise )( + IMixerOCX * This); + + END_INTERFACE + } IMixerOCXVtbl; + + interface IMixerOCX + { + CONST_VTBL struct IMixerOCXVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMixerOCX_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IMixerOCX_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IMixerOCX_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IMixerOCX_OnDisplayChange(This,ulBitsPerPixel,ulScreenWidth,ulScreenHeight) \ + (This)->lpVtbl -> OnDisplayChange(This,ulBitsPerPixel,ulScreenWidth,ulScreenHeight) + +#define IMixerOCX_GetAspectRatio(This,pdwPictAspectRatioX,pdwPictAspectRatioY) \ + (This)->lpVtbl -> GetAspectRatio(This,pdwPictAspectRatioX,pdwPictAspectRatioY) + +#define IMixerOCX_GetVideoSize(This,pdwVideoWidth,pdwVideoHeight) \ + (This)->lpVtbl -> GetVideoSize(This,pdwVideoWidth,pdwVideoHeight) + +#define IMixerOCX_GetStatus(This,pdwStatus) \ + (This)->lpVtbl -> GetStatus(This,pdwStatus) + +#define IMixerOCX_OnDraw(This,hdcDraw,prcDraw) \ + (This)->lpVtbl -> OnDraw(This,hdcDraw,prcDraw) + +#define IMixerOCX_SetDrawRegion(This,lpptTopLeftSC,prcDrawCC,lprcClip) \ + (This)->lpVtbl -> SetDrawRegion(This,lpptTopLeftSC,prcDrawCC,lprcClip) + +#define IMixerOCX_Advise(This,pmdns) \ + (This)->lpVtbl -> Advise(This,pmdns) + +#define IMixerOCX_UnAdvise(This) \ + (This)->lpVtbl -> UnAdvise(This) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IMixerOCX_OnDisplayChange_Proxy( + IMixerOCX * This, + /* [in] */ ULONG ulBitsPerPixel, + /* [in] */ ULONG ulScreenWidth, + /* [in] */ ULONG ulScreenHeight); + + +void __RPC_STUB IMixerOCX_OnDisplayChange_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IMixerOCX_GetAspectRatio_Proxy( + IMixerOCX * This, + /* [out] */ LPDWORD pdwPictAspectRatioX, + /* [out] */ LPDWORD pdwPictAspectRatioY); + + +void __RPC_STUB IMixerOCX_GetAspectRatio_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IMixerOCX_GetVideoSize_Proxy( + IMixerOCX * This, + /* [out] */ LPDWORD pdwVideoWidth, + /* [out] */ LPDWORD pdwVideoHeight); + + +void __RPC_STUB IMixerOCX_GetVideoSize_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IMixerOCX_GetStatus_Proxy( + IMixerOCX * This, + /* [out] */ LPDWORD *pdwStatus); + + +void __RPC_STUB IMixerOCX_GetStatus_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IMixerOCX_OnDraw_Proxy( + IMixerOCX * This, + /* [in] */ HDC hdcDraw, + /* [in] */ LPCRECT prcDraw); + + +void __RPC_STUB IMixerOCX_OnDraw_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IMixerOCX_SetDrawRegion_Proxy( + IMixerOCX * This, + /* [in] */ LPPOINT lpptTopLeftSC, + /* [in] */ LPCRECT prcDrawCC, + /* [in] */ LPCRECT lprcClip); + + +void __RPC_STUB IMixerOCX_SetDrawRegion_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IMixerOCX_Advise_Proxy( + IMixerOCX * This, + /* [in] */ IMixerOCXNotify *pmdns); + + +void __RPC_STUB IMixerOCX_Advise_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IMixerOCX_UnAdvise_Proxy( + IMixerOCX * This); + + +void __RPC_STUB IMixerOCX_UnAdvise_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IMixerOCX_INTERFACE_DEFINED__ */ + + +/* Additional Prototypes for ALL interfaces */ + +unsigned long __RPC_USER HDC_UserSize( unsigned long *, unsigned long , HDC * ); +unsigned char * __RPC_USER HDC_UserMarshal( unsigned long *, unsigned char *, HDC * ); +unsigned char * __RPC_USER HDC_UserUnmarshal(unsigned long *, unsigned char *, HDC * ); +void __RPC_USER HDC_UserFree( unsigned long *, HDC * ); + +/* end of Additional Prototypes */ + +#ifdef __cplusplus +} +#endif + +#endif + + diff --git a/videoInputSrcAndDemos/libs/DShow/Include/mmstream.h b/videoInputSrcAndDemos/libs/DShow/Include/mmstream.h index 679577f..ec91bc0 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/mmstream.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/mmstream.h @@ -1,846 +1,846 @@ - -#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 mmstream.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 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 -#endif // __RPCNDR_H_VERSION__ - -#ifndef COM_NO_WINDOWS_H -#include "windows.h" -#include "ole2.h" -#endif /*COM_NO_WINDOWS_H*/ - -#ifndef __mmstream_h__ -#define __mmstream_h__ - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -#pragma once -#endif - -/* Forward Declarations */ - -#ifndef __IMultiMediaStream_FWD_DEFINED__ -#define __IMultiMediaStream_FWD_DEFINED__ -typedef interface IMultiMediaStream IMultiMediaStream; -#endif /* __IMultiMediaStream_FWD_DEFINED__ */ - - -#ifndef __IMediaStream_FWD_DEFINED__ -#define __IMediaStream_FWD_DEFINED__ -typedef interface IMediaStream IMediaStream; -#endif /* __IMediaStream_FWD_DEFINED__ */ - - -#ifndef __IStreamSample_FWD_DEFINED__ -#define __IStreamSample_FWD_DEFINED__ -typedef interface IStreamSample IStreamSample; -#endif /* __IStreamSample_FWD_DEFINED__ */ - - -/* header files for imported files */ -#include "unknwn.h" - -#ifdef __cplusplus -extern "C"{ -#endif - -void * __RPC_USER MIDL_user_allocate(size_t); -void __RPC_USER MIDL_user_free( void * ); - -/* interface __MIDL_itf_mmstream_0000 */ -/* [local] */ - -#define MS_ERROR_CODE(x) MAKE_HRESULT(1, FACILITY_ITF, (x) + 0x400) -#define MS_SUCCESS_CODE(x) MAKE_HRESULT(0, FACILITY_ITF, x) -#define MS_S_PENDING MS_SUCCESS_CODE(1) -#define MS_S_NOUPDATE MS_SUCCESS_CODE(2) -#define MS_S_ENDOFSTREAM MS_SUCCESS_CODE(3) -#define MS_E_SAMPLEALLOC MS_ERROR_CODE(1) -#define MS_E_PURPOSEID MS_ERROR_CODE(2) -#define MS_E_NOSTREAM MS_ERROR_CODE(3) -#define MS_E_NOSEEKING MS_ERROR_CODE(4) -#define MS_E_INCOMPATIBLE MS_ERROR_CODE(5) -#define MS_E_BUSY MS_ERROR_CODE(6) -#define MS_E_NOTINIT MS_ERROR_CODE(7) -#define MS_E_SOURCEALREADYDEFINED MS_ERROR_CODE(8) -#define MS_E_INVALIDSTREAMTYPE MS_ERROR_CODE(9) -#define MS_E_NOTRUNNING MS_ERROR_CODE(10) -// {A35FF56A-9FDA-11d0-8FDF-00C04FD9189D} -DEFINE_GUID(MSPID_PrimaryVideo, -0xa35ff56a, 0x9fda, 0x11d0, 0x8f, 0xdf, 0x0, 0xc0, 0x4f, 0xd9, 0x18, 0x9d); -// {A35FF56B-9FDA-11d0-8FDF-00C04FD9189D} -DEFINE_GUID(MSPID_PrimaryAudio, -0xa35ff56b, 0x9fda, 0x11d0, 0x8f, 0xdf, 0x0, 0xc0, 0x4f, 0xd9, 0x18, 0x9d); -#if(_WIN32_WINNT < 0x0400) -typedef void ( __stdcall *PAPCFUNC )( - DWORD_PTR dwParam); - -#endif -typedef LONGLONG STREAM_TIME; - -typedef GUID MSPID; - -typedef REFGUID REFMSPID; - -typedef /* [public][public][public] */ -enum __MIDL___MIDL_itf_mmstream_0000_0001 - { STREAMTYPE_READ = 0, - STREAMTYPE_WRITE = 1, - STREAMTYPE_TRANSFORM = 2 - } STREAM_TYPE; - -typedef /* [public][public][public] */ -enum __MIDL___MIDL_itf_mmstream_0000_0002 - { STREAMSTATE_STOP = 0, - STREAMSTATE_RUN = 1 - } STREAM_STATE; - -typedef /* [public] */ -enum __MIDL___MIDL_itf_mmstream_0000_0003 - { COMPSTAT_NOUPDATEOK = 0x1, - COMPSTAT_WAIT = 0x2, - COMPSTAT_ABORT = 0x4 - } COMPLETION_STATUS_FLAGS; - - -enum __MIDL___MIDL_itf_mmstream_0000_0004 - { MMSSF_HASCLOCK = 0x1, - MMSSF_SUPPORTSEEK = 0x2, - MMSSF_ASYNCHRONOUS = 0x4 - } ; - -enum __MIDL___MIDL_itf_mmstream_0000_0005 - { SSUPDATE_ASYNC = 0x1, - SSUPDATE_CONTINUOUS = 0x2 - } ; - - - - - -extern RPC_IF_HANDLE __MIDL_itf_mmstream_0000_v0_0_c_ifspec; -extern RPC_IF_HANDLE __MIDL_itf_mmstream_0000_v0_0_s_ifspec; - -#ifndef __IMultiMediaStream_INTERFACE_DEFINED__ -#define __IMultiMediaStream_INTERFACE_DEFINED__ - -/* interface IMultiMediaStream */ -/* [unique][uuid][local][object] */ - - -EXTERN_C const IID IID_IMultiMediaStream; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("B502D1BC-9A57-11d0-8FDE-00C04FD9189D") - IMultiMediaStream : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE GetInformation( - /* [out] */ DWORD *pdwFlags, - /* [out] */ STREAM_TYPE *pStreamType) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetMediaStream( - /* [in] */ REFMSPID idPurpose, - /* [out] */ IMediaStream **ppMediaStream) = 0; - - virtual HRESULT STDMETHODCALLTYPE EnumMediaStreams( - /* [in] */ long Index, - /* [out] */ IMediaStream **ppMediaStream) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetState( - /* [out] */ STREAM_STATE *pCurrentState) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetState( - /* [in] */ STREAM_STATE NewState) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetTime( - /* [out] */ STREAM_TIME *pCurrentTime) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetDuration( - /* [out] */ STREAM_TIME *pDuration) = 0; - - virtual HRESULT STDMETHODCALLTYPE Seek( - /* [in] */ STREAM_TIME SeekTime) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetEndOfStreamEventHandle( - /* [out] */ HANDLE *phEOS) = 0; - - }; - -#else /* C style interface */ - - typedef struct IMultiMediaStreamVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IMultiMediaStream * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IMultiMediaStream * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IMultiMediaStream * This); - - HRESULT ( STDMETHODCALLTYPE *GetInformation )( - IMultiMediaStream * This, - /* [out] */ DWORD *pdwFlags, - /* [out] */ STREAM_TYPE *pStreamType); - - HRESULT ( STDMETHODCALLTYPE *GetMediaStream )( - IMultiMediaStream * This, - /* [in] */ REFMSPID idPurpose, - /* [out] */ IMediaStream **ppMediaStream); - - HRESULT ( STDMETHODCALLTYPE *EnumMediaStreams )( - IMultiMediaStream * This, - /* [in] */ long Index, - /* [out] */ IMediaStream **ppMediaStream); - - HRESULT ( STDMETHODCALLTYPE *GetState )( - IMultiMediaStream * This, - /* [out] */ STREAM_STATE *pCurrentState); - - HRESULT ( STDMETHODCALLTYPE *SetState )( - IMultiMediaStream * This, - /* [in] */ STREAM_STATE NewState); - - HRESULT ( STDMETHODCALLTYPE *GetTime )( - IMultiMediaStream * This, - /* [out] */ STREAM_TIME *pCurrentTime); - - HRESULT ( STDMETHODCALLTYPE *GetDuration )( - IMultiMediaStream * This, - /* [out] */ STREAM_TIME *pDuration); - - HRESULT ( STDMETHODCALLTYPE *Seek )( - IMultiMediaStream * This, - /* [in] */ STREAM_TIME SeekTime); - - HRESULT ( STDMETHODCALLTYPE *GetEndOfStreamEventHandle )( - IMultiMediaStream * This, - /* [out] */ HANDLE *phEOS); - - END_INTERFACE - } IMultiMediaStreamVtbl; - - interface IMultiMediaStream - { - CONST_VTBL struct IMultiMediaStreamVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IMultiMediaStream_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IMultiMediaStream_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IMultiMediaStream_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IMultiMediaStream_GetInformation(This,pdwFlags,pStreamType) \ - (This)->lpVtbl -> GetInformation(This,pdwFlags,pStreamType) - -#define IMultiMediaStream_GetMediaStream(This,idPurpose,ppMediaStream) \ - (This)->lpVtbl -> GetMediaStream(This,idPurpose,ppMediaStream) - -#define IMultiMediaStream_EnumMediaStreams(This,Index,ppMediaStream) \ - (This)->lpVtbl -> EnumMediaStreams(This,Index,ppMediaStream) - -#define IMultiMediaStream_GetState(This,pCurrentState) \ - (This)->lpVtbl -> GetState(This,pCurrentState) - -#define IMultiMediaStream_SetState(This,NewState) \ - (This)->lpVtbl -> SetState(This,NewState) - -#define IMultiMediaStream_GetTime(This,pCurrentTime) \ - (This)->lpVtbl -> GetTime(This,pCurrentTime) - -#define IMultiMediaStream_GetDuration(This,pDuration) \ - (This)->lpVtbl -> GetDuration(This,pDuration) - -#define IMultiMediaStream_Seek(This,SeekTime) \ - (This)->lpVtbl -> Seek(This,SeekTime) - -#define IMultiMediaStream_GetEndOfStreamEventHandle(This,phEOS) \ - (This)->lpVtbl -> GetEndOfStreamEventHandle(This,phEOS) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IMultiMediaStream_GetInformation_Proxy( - IMultiMediaStream * This, - /* [out] */ DWORD *pdwFlags, - /* [out] */ STREAM_TYPE *pStreamType); - - -void __RPC_STUB IMultiMediaStream_GetInformation_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IMultiMediaStream_GetMediaStream_Proxy( - IMultiMediaStream * This, - /* [in] */ REFMSPID idPurpose, - /* [out] */ IMediaStream **ppMediaStream); - - -void __RPC_STUB IMultiMediaStream_GetMediaStream_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IMultiMediaStream_EnumMediaStreams_Proxy( - IMultiMediaStream * This, - /* [in] */ long Index, - /* [out] */ IMediaStream **ppMediaStream); - - -void __RPC_STUB IMultiMediaStream_EnumMediaStreams_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IMultiMediaStream_GetState_Proxy( - IMultiMediaStream * This, - /* [out] */ STREAM_STATE *pCurrentState); - - -void __RPC_STUB IMultiMediaStream_GetState_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IMultiMediaStream_SetState_Proxy( - IMultiMediaStream * This, - /* [in] */ STREAM_STATE NewState); - - -void __RPC_STUB IMultiMediaStream_SetState_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IMultiMediaStream_GetTime_Proxy( - IMultiMediaStream * This, - /* [out] */ STREAM_TIME *pCurrentTime); - - -void __RPC_STUB IMultiMediaStream_GetTime_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IMultiMediaStream_GetDuration_Proxy( - IMultiMediaStream * This, - /* [out] */ STREAM_TIME *pDuration); - - -void __RPC_STUB IMultiMediaStream_GetDuration_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IMultiMediaStream_Seek_Proxy( - IMultiMediaStream * This, - /* [in] */ STREAM_TIME SeekTime); - - -void __RPC_STUB IMultiMediaStream_Seek_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IMultiMediaStream_GetEndOfStreamEventHandle_Proxy( - IMultiMediaStream * This, - /* [out] */ HANDLE *phEOS); - - -void __RPC_STUB IMultiMediaStream_GetEndOfStreamEventHandle_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IMultiMediaStream_INTERFACE_DEFINED__ */ - - -#ifndef __IMediaStream_INTERFACE_DEFINED__ -#define __IMediaStream_INTERFACE_DEFINED__ - -/* interface IMediaStream */ -/* [unique][uuid][object] */ - - -EXTERN_C const IID IID_IMediaStream; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("B502D1BD-9A57-11d0-8FDE-00C04FD9189D") - IMediaStream : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE GetMultiMediaStream( - /* [out] */ IMultiMediaStream **ppMultiMediaStream) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetInformation( - /* [out] */ MSPID *pPurposeId, - /* [out] */ STREAM_TYPE *pType) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetSameFormat( - /* [in] */ IMediaStream *pStreamThatHasDesiredFormat, - /* [in] */ DWORD dwFlags) = 0; - - virtual HRESULT STDMETHODCALLTYPE AllocateSample( - /* [in] */ DWORD dwFlags, - /* [out] */ IStreamSample **ppSample) = 0; - - virtual HRESULT STDMETHODCALLTYPE CreateSharedSample( - /* [in] */ IStreamSample *pExistingSample, - /* [in] */ DWORD dwFlags, - /* [out] */ IStreamSample **ppNewSample) = 0; - - virtual HRESULT STDMETHODCALLTYPE SendEndOfStream( - DWORD dwFlags) = 0; - - }; - -#else /* C style interface */ - - typedef struct IMediaStreamVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IMediaStream * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IMediaStream * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IMediaStream * This); - - HRESULT ( STDMETHODCALLTYPE *GetMultiMediaStream )( - IMediaStream * This, - /* [out] */ IMultiMediaStream **ppMultiMediaStream); - - HRESULT ( STDMETHODCALLTYPE *GetInformation )( - IMediaStream * This, - /* [out] */ MSPID *pPurposeId, - /* [out] */ STREAM_TYPE *pType); - - HRESULT ( STDMETHODCALLTYPE *SetSameFormat )( - IMediaStream * This, - /* [in] */ IMediaStream *pStreamThatHasDesiredFormat, - /* [in] */ DWORD dwFlags); - - HRESULT ( STDMETHODCALLTYPE *AllocateSample )( - IMediaStream * This, - /* [in] */ DWORD dwFlags, - /* [out] */ IStreamSample **ppSample); - - HRESULT ( STDMETHODCALLTYPE *CreateSharedSample )( - IMediaStream * This, - /* [in] */ IStreamSample *pExistingSample, - /* [in] */ DWORD dwFlags, - /* [out] */ IStreamSample **ppNewSample); - - HRESULT ( STDMETHODCALLTYPE *SendEndOfStream )( - IMediaStream * This, - DWORD dwFlags); - - END_INTERFACE - } IMediaStreamVtbl; - - interface IMediaStream - { - CONST_VTBL struct IMediaStreamVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IMediaStream_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IMediaStream_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IMediaStream_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IMediaStream_GetMultiMediaStream(This,ppMultiMediaStream) \ - (This)->lpVtbl -> GetMultiMediaStream(This,ppMultiMediaStream) - -#define IMediaStream_GetInformation(This,pPurposeId,pType) \ - (This)->lpVtbl -> GetInformation(This,pPurposeId,pType) - -#define IMediaStream_SetSameFormat(This,pStreamThatHasDesiredFormat,dwFlags) \ - (This)->lpVtbl -> SetSameFormat(This,pStreamThatHasDesiredFormat,dwFlags) - -#define IMediaStream_AllocateSample(This,dwFlags,ppSample) \ - (This)->lpVtbl -> AllocateSample(This,dwFlags,ppSample) - -#define IMediaStream_CreateSharedSample(This,pExistingSample,dwFlags,ppNewSample) \ - (This)->lpVtbl -> CreateSharedSample(This,pExistingSample,dwFlags,ppNewSample) - -#define IMediaStream_SendEndOfStream(This,dwFlags) \ - (This)->lpVtbl -> SendEndOfStream(This,dwFlags) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IMediaStream_GetMultiMediaStream_Proxy( - IMediaStream * This, - /* [out] */ IMultiMediaStream **ppMultiMediaStream); - - -void __RPC_STUB IMediaStream_GetMultiMediaStream_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IMediaStream_GetInformation_Proxy( - IMediaStream * This, - /* [out] */ MSPID *pPurposeId, - /* [out] */ STREAM_TYPE *pType); - - -void __RPC_STUB IMediaStream_GetInformation_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IMediaStream_SetSameFormat_Proxy( - IMediaStream * This, - /* [in] */ IMediaStream *pStreamThatHasDesiredFormat, - /* [in] */ DWORD dwFlags); - - -void __RPC_STUB IMediaStream_SetSameFormat_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IMediaStream_AllocateSample_Proxy( - IMediaStream * This, - /* [in] */ DWORD dwFlags, - /* [out] */ IStreamSample **ppSample); - - -void __RPC_STUB IMediaStream_AllocateSample_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IMediaStream_CreateSharedSample_Proxy( - IMediaStream * This, - /* [in] */ IStreamSample *pExistingSample, - /* [in] */ DWORD dwFlags, - /* [out] */ IStreamSample **ppNewSample); - - -void __RPC_STUB IMediaStream_CreateSharedSample_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IMediaStream_SendEndOfStream_Proxy( - IMediaStream * This, - DWORD dwFlags); - - -void __RPC_STUB IMediaStream_SendEndOfStream_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IMediaStream_INTERFACE_DEFINED__ */ - - -#ifndef __IStreamSample_INTERFACE_DEFINED__ -#define __IStreamSample_INTERFACE_DEFINED__ - -/* interface IStreamSample */ -/* [unique][uuid][local][object] */ - - -EXTERN_C const IID IID_IStreamSample; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("B502D1BE-9A57-11d0-8FDE-00C04FD9189D") - IStreamSample : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE GetMediaStream( - /* [in] */ IMediaStream **ppMediaStream) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetSampleTimes( - /* [out] */ STREAM_TIME *pStartTime, - /* [out] */ STREAM_TIME *pEndTime, - /* [out] */ STREAM_TIME *pCurrentTime) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetSampleTimes( - /* [in] */ const STREAM_TIME *pStartTime, - /* [in] */ const STREAM_TIME *pEndTime) = 0; - - virtual HRESULT STDMETHODCALLTYPE Update( - /* [in] */ DWORD dwFlags, - /* [in] */ HANDLE hEvent, - /* [in] */ PAPCFUNC pfnAPC, - /* [in] */ DWORD_PTR dwAPCData) = 0; - - virtual HRESULT STDMETHODCALLTYPE CompletionStatus( - /* [in] */ DWORD dwFlags, - /* [in] */ DWORD dwMilliseconds) = 0; - - }; - -#else /* C style interface */ - - typedef struct IStreamSampleVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IStreamSample * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IStreamSample * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IStreamSample * This); - - HRESULT ( STDMETHODCALLTYPE *GetMediaStream )( - IStreamSample * This, - /* [in] */ IMediaStream **ppMediaStream); - - HRESULT ( STDMETHODCALLTYPE *GetSampleTimes )( - IStreamSample * This, - /* [out] */ STREAM_TIME *pStartTime, - /* [out] */ STREAM_TIME *pEndTime, - /* [out] */ STREAM_TIME *pCurrentTime); - - HRESULT ( STDMETHODCALLTYPE *SetSampleTimes )( - IStreamSample * This, - /* [in] */ const STREAM_TIME *pStartTime, - /* [in] */ const STREAM_TIME *pEndTime); - - HRESULT ( STDMETHODCALLTYPE *Update )( - IStreamSample * This, - /* [in] */ DWORD dwFlags, - /* [in] */ HANDLE hEvent, - /* [in] */ PAPCFUNC pfnAPC, - /* [in] */ DWORD_PTR dwAPCData); - - HRESULT ( STDMETHODCALLTYPE *CompletionStatus )( - IStreamSample * This, - /* [in] */ DWORD dwFlags, - /* [in] */ DWORD dwMilliseconds); - - END_INTERFACE - } IStreamSampleVtbl; - - interface IStreamSample - { - CONST_VTBL struct IStreamSampleVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IStreamSample_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IStreamSample_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IStreamSample_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IStreamSample_GetMediaStream(This,ppMediaStream) \ - (This)->lpVtbl -> GetMediaStream(This,ppMediaStream) - -#define IStreamSample_GetSampleTimes(This,pStartTime,pEndTime,pCurrentTime) \ - (This)->lpVtbl -> GetSampleTimes(This,pStartTime,pEndTime,pCurrentTime) - -#define IStreamSample_SetSampleTimes(This,pStartTime,pEndTime) \ - (This)->lpVtbl -> SetSampleTimes(This,pStartTime,pEndTime) - -#define IStreamSample_Update(This,dwFlags,hEvent,pfnAPC,dwAPCData) \ - (This)->lpVtbl -> Update(This,dwFlags,hEvent,pfnAPC,dwAPCData) - -#define IStreamSample_CompletionStatus(This,dwFlags,dwMilliseconds) \ - (This)->lpVtbl -> CompletionStatus(This,dwFlags,dwMilliseconds) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IStreamSample_GetMediaStream_Proxy( - IStreamSample * This, - /* [in] */ IMediaStream **ppMediaStream); - - -void __RPC_STUB IStreamSample_GetMediaStream_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IStreamSample_GetSampleTimes_Proxy( - IStreamSample * This, - /* [out] */ STREAM_TIME *pStartTime, - /* [out] */ STREAM_TIME *pEndTime, - /* [out] */ STREAM_TIME *pCurrentTime); - - -void __RPC_STUB IStreamSample_GetSampleTimes_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IStreamSample_SetSampleTimes_Proxy( - IStreamSample * This, - /* [in] */ const STREAM_TIME *pStartTime, - /* [in] */ const STREAM_TIME *pEndTime); - - -void __RPC_STUB IStreamSample_SetSampleTimes_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IStreamSample_Update_Proxy( - IStreamSample * This, - /* [in] */ DWORD dwFlags, - /* [in] */ HANDLE hEvent, - /* [in] */ PAPCFUNC pfnAPC, - /* [in] */ DWORD_PTR dwAPCData); - - -void __RPC_STUB IStreamSample_Update_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IStreamSample_CompletionStatus_Proxy( - IStreamSample * This, - /* [in] */ DWORD dwFlags, - /* [in] */ DWORD dwMilliseconds); - - -void __RPC_STUB IStreamSample_CompletionStatus_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IStreamSample_INTERFACE_DEFINED__ */ - - -/* Additional Prototypes for ALL interfaces */ - -/* end of Additional Prototypes */ - -#ifdef __cplusplus -} -#endif - -#endif - - + +#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 mmstream.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 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 +#endif // __RPCNDR_H_VERSION__ + +#ifndef COM_NO_WINDOWS_H +#include "windows.h" +#include "ole2.h" +#endif /*COM_NO_WINDOWS_H*/ + +#ifndef __mmstream_h__ +#define __mmstream_h__ + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#pragma once +#endif + +/* Forward Declarations */ + +#ifndef __IMultiMediaStream_FWD_DEFINED__ +#define __IMultiMediaStream_FWD_DEFINED__ +typedef interface IMultiMediaStream IMultiMediaStream; +#endif /* __IMultiMediaStream_FWD_DEFINED__ */ + + +#ifndef __IMediaStream_FWD_DEFINED__ +#define __IMediaStream_FWD_DEFINED__ +typedef interface IMediaStream IMediaStream; +#endif /* __IMediaStream_FWD_DEFINED__ */ + + +#ifndef __IStreamSample_FWD_DEFINED__ +#define __IStreamSample_FWD_DEFINED__ +typedef interface IStreamSample IStreamSample; +#endif /* __IStreamSample_FWD_DEFINED__ */ + + +/* header files for imported files */ +#include "unknwn.h" + +#ifdef __cplusplus +extern "C"{ +#endif + +void * __RPC_USER MIDL_user_allocate(size_t); +void __RPC_USER MIDL_user_free( void * ); + +/* interface __MIDL_itf_mmstream_0000 */ +/* [local] */ + +#define MS_ERROR_CODE(x) MAKE_HRESULT(1, FACILITY_ITF, (x) + 0x400) +#define MS_SUCCESS_CODE(x) MAKE_HRESULT(0, FACILITY_ITF, x) +#define MS_S_PENDING MS_SUCCESS_CODE(1) +#define MS_S_NOUPDATE MS_SUCCESS_CODE(2) +#define MS_S_ENDOFSTREAM MS_SUCCESS_CODE(3) +#define MS_E_SAMPLEALLOC MS_ERROR_CODE(1) +#define MS_E_PURPOSEID MS_ERROR_CODE(2) +#define MS_E_NOSTREAM MS_ERROR_CODE(3) +#define MS_E_NOSEEKING MS_ERROR_CODE(4) +#define MS_E_INCOMPATIBLE MS_ERROR_CODE(5) +#define MS_E_BUSY MS_ERROR_CODE(6) +#define MS_E_NOTINIT MS_ERROR_CODE(7) +#define MS_E_SOURCEALREADYDEFINED MS_ERROR_CODE(8) +#define MS_E_INVALIDSTREAMTYPE MS_ERROR_CODE(9) +#define MS_E_NOTRUNNING MS_ERROR_CODE(10) +// {A35FF56A-9FDA-11d0-8FDF-00C04FD9189D} +DEFINE_GUID(MSPID_PrimaryVideo, +0xa35ff56a, 0x9fda, 0x11d0, 0x8f, 0xdf, 0x0, 0xc0, 0x4f, 0xd9, 0x18, 0x9d); +// {A35FF56B-9FDA-11d0-8FDF-00C04FD9189D} +DEFINE_GUID(MSPID_PrimaryAudio, +0xa35ff56b, 0x9fda, 0x11d0, 0x8f, 0xdf, 0x0, 0xc0, 0x4f, 0xd9, 0x18, 0x9d); +#if(_WIN32_WINNT < 0x0400) +typedef void ( __stdcall *PAPCFUNC )( + DWORD_PTR dwParam); + +#endif +typedef LONGLONG STREAM_TIME; + +typedef GUID MSPID; + +typedef REFGUID REFMSPID; + +typedef /* [public][public][public] */ +enum __MIDL___MIDL_itf_mmstream_0000_0001 + { STREAMTYPE_READ = 0, + STREAMTYPE_WRITE = 1, + STREAMTYPE_TRANSFORM = 2 + } STREAM_TYPE; + +typedef /* [public][public][public] */ +enum __MIDL___MIDL_itf_mmstream_0000_0002 + { STREAMSTATE_STOP = 0, + STREAMSTATE_RUN = 1 + } STREAM_STATE; + +typedef /* [public] */ +enum __MIDL___MIDL_itf_mmstream_0000_0003 + { COMPSTAT_NOUPDATEOK = 0x1, + COMPSTAT_WAIT = 0x2, + COMPSTAT_ABORT = 0x4 + } COMPLETION_STATUS_FLAGS; + + +enum __MIDL___MIDL_itf_mmstream_0000_0004 + { MMSSF_HASCLOCK = 0x1, + MMSSF_SUPPORTSEEK = 0x2, + MMSSF_ASYNCHRONOUS = 0x4 + } ; + +enum __MIDL___MIDL_itf_mmstream_0000_0005 + { SSUPDATE_ASYNC = 0x1, + SSUPDATE_CONTINUOUS = 0x2 + } ; + + + + + +extern RPC_IF_HANDLE __MIDL_itf_mmstream_0000_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_mmstream_0000_v0_0_s_ifspec; + +#ifndef __IMultiMediaStream_INTERFACE_DEFINED__ +#define __IMultiMediaStream_INTERFACE_DEFINED__ + +/* interface IMultiMediaStream */ +/* [unique][uuid][local][object] */ + + +EXTERN_C const IID IID_IMultiMediaStream; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("B502D1BC-9A57-11d0-8FDE-00C04FD9189D") + IMultiMediaStream : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE GetInformation( + /* [out] */ DWORD *pdwFlags, + /* [out] */ STREAM_TYPE *pStreamType) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetMediaStream( + /* [in] */ REFMSPID idPurpose, + /* [out] */ IMediaStream **ppMediaStream) = 0; + + virtual HRESULT STDMETHODCALLTYPE EnumMediaStreams( + /* [in] */ long Index, + /* [out] */ IMediaStream **ppMediaStream) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetState( + /* [out] */ STREAM_STATE *pCurrentState) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetState( + /* [in] */ STREAM_STATE NewState) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetTime( + /* [out] */ STREAM_TIME *pCurrentTime) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetDuration( + /* [out] */ STREAM_TIME *pDuration) = 0; + + virtual HRESULT STDMETHODCALLTYPE Seek( + /* [in] */ STREAM_TIME SeekTime) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetEndOfStreamEventHandle( + /* [out] */ HANDLE *phEOS) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMultiMediaStreamVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMultiMediaStream * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMultiMediaStream * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMultiMediaStream * This); + + HRESULT ( STDMETHODCALLTYPE *GetInformation )( + IMultiMediaStream * This, + /* [out] */ DWORD *pdwFlags, + /* [out] */ STREAM_TYPE *pStreamType); + + HRESULT ( STDMETHODCALLTYPE *GetMediaStream )( + IMultiMediaStream * This, + /* [in] */ REFMSPID idPurpose, + /* [out] */ IMediaStream **ppMediaStream); + + HRESULT ( STDMETHODCALLTYPE *EnumMediaStreams )( + IMultiMediaStream * This, + /* [in] */ long Index, + /* [out] */ IMediaStream **ppMediaStream); + + HRESULT ( STDMETHODCALLTYPE *GetState )( + IMultiMediaStream * This, + /* [out] */ STREAM_STATE *pCurrentState); + + HRESULT ( STDMETHODCALLTYPE *SetState )( + IMultiMediaStream * This, + /* [in] */ STREAM_STATE NewState); + + HRESULT ( STDMETHODCALLTYPE *GetTime )( + IMultiMediaStream * This, + /* [out] */ STREAM_TIME *pCurrentTime); + + HRESULT ( STDMETHODCALLTYPE *GetDuration )( + IMultiMediaStream * This, + /* [out] */ STREAM_TIME *pDuration); + + HRESULT ( STDMETHODCALLTYPE *Seek )( + IMultiMediaStream * This, + /* [in] */ STREAM_TIME SeekTime); + + HRESULT ( STDMETHODCALLTYPE *GetEndOfStreamEventHandle )( + IMultiMediaStream * This, + /* [out] */ HANDLE *phEOS); + + END_INTERFACE + } IMultiMediaStreamVtbl; + + interface IMultiMediaStream + { + CONST_VTBL struct IMultiMediaStreamVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMultiMediaStream_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IMultiMediaStream_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IMultiMediaStream_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IMultiMediaStream_GetInformation(This,pdwFlags,pStreamType) \ + (This)->lpVtbl -> GetInformation(This,pdwFlags,pStreamType) + +#define IMultiMediaStream_GetMediaStream(This,idPurpose,ppMediaStream) \ + (This)->lpVtbl -> GetMediaStream(This,idPurpose,ppMediaStream) + +#define IMultiMediaStream_EnumMediaStreams(This,Index,ppMediaStream) \ + (This)->lpVtbl -> EnumMediaStreams(This,Index,ppMediaStream) + +#define IMultiMediaStream_GetState(This,pCurrentState) \ + (This)->lpVtbl -> GetState(This,pCurrentState) + +#define IMultiMediaStream_SetState(This,NewState) \ + (This)->lpVtbl -> SetState(This,NewState) + +#define IMultiMediaStream_GetTime(This,pCurrentTime) \ + (This)->lpVtbl -> GetTime(This,pCurrentTime) + +#define IMultiMediaStream_GetDuration(This,pDuration) \ + (This)->lpVtbl -> GetDuration(This,pDuration) + +#define IMultiMediaStream_Seek(This,SeekTime) \ + (This)->lpVtbl -> Seek(This,SeekTime) + +#define IMultiMediaStream_GetEndOfStreamEventHandle(This,phEOS) \ + (This)->lpVtbl -> GetEndOfStreamEventHandle(This,phEOS) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IMultiMediaStream_GetInformation_Proxy( + IMultiMediaStream * This, + /* [out] */ DWORD *pdwFlags, + /* [out] */ STREAM_TYPE *pStreamType); + + +void __RPC_STUB IMultiMediaStream_GetInformation_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IMultiMediaStream_GetMediaStream_Proxy( + IMultiMediaStream * This, + /* [in] */ REFMSPID idPurpose, + /* [out] */ IMediaStream **ppMediaStream); + + +void __RPC_STUB IMultiMediaStream_GetMediaStream_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IMultiMediaStream_EnumMediaStreams_Proxy( + IMultiMediaStream * This, + /* [in] */ long Index, + /* [out] */ IMediaStream **ppMediaStream); + + +void __RPC_STUB IMultiMediaStream_EnumMediaStreams_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IMultiMediaStream_GetState_Proxy( + IMultiMediaStream * This, + /* [out] */ STREAM_STATE *pCurrentState); + + +void __RPC_STUB IMultiMediaStream_GetState_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IMultiMediaStream_SetState_Proxy( + IMultiMediaStream * This, + /* [in] */ STREAM_STATE NewState); + + +void __RPC_STUB IMultiMediaStream_SetState_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IMultiMediaStream_GetTime_Proxy( + IMultiMediaStream * This, + /* [out] */ STREAM_TIME *pCurrentTime); + + +void __RPC_STUB IMultiMediaStream_GetTime_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IMultiMediaStream_GetDuration_Proxy( + IMultiMediaStream * This, + /* [out] */ STREAM_TIME *pDuration); + + +void __RPC_STUB IMultiMediaStream_GetDuration_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IMultiMediaStream_Seek_Proxy( + IMultiMediaStream * This, + /* [in] */ STREAM_TIME SeekTime); + + +void __RPC_STUB IMultiMediaStream_Seek_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IMultiMediaStream_GetEndOfStreamEventHandle_Proxy( + IMultiMediaStream * This, + /* [out] */ HANDLE *phEOS); + + +void __RPC_STUB IMultiMediaStream_GetEndOfStreamEventHandle_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IMultiMediaStream_INTERFACE_DEFINED__ */ + + +#ifndef __IMediaStream_INTERFACE_DEFINED__ +#define __IMediaStream_INTERFACE_DEFINED__ + +/* interface IMediaStream */ +/* [unique][uuid][object] */ + + +EXTERN_C const IID IID_IMediaStream; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("B502D1BD-9A57-11d0-8FDE-00C04FD9189D") + IMediaStream : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE GetMultiMediaStream( + /* [out] */ IMultiMediaStream **ppMultiMediaStream) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetInformation( + /* [out] */ MSPID *pPurposeId, + /* [out] */ STREAM_TYPE *pType) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetSameFormat( + /* [in] */ IMediaStream *pStreamThatHasDesiredFormat, + /* [in] */ DWORD dwFlags) = 0; + + virtual HRESULT STDMETHODCALLTYPE AllocateSample( + /* [in] */ DWORD dwFlags, + /* [out] */ IStreamSample **ppSample) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreateSharedSample( + /* [in] */ IStreamSample *pExistingSample, + /* [in] */ DWORD dwFlags, + /* [out] */ IStreamSample **ppNewSample) = 0; + + virtual HRESULT STDMETHODCALLTYPE SendEndOfStream( + DWORD dwFlags) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMediaStreamVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMediaStream * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMediaStream * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMediaStream * This); + + HRESULT ( STDMETHODCALLTYPE *GetMultiMediaStream )( + IMediaStream * This, + /* [out] */ IMultiMediaStream **ppMultiMediaStream); + + HRESULT ( STDMETHODCALLTYPE *GetInformation )( + IMediaStream * This, + /* [out] */ MSPID *pPurposeId, + /* [out] */ STREAM_TYPE *pType); + + HRESULT ( STDMETHODCALLTYPE *SetSameFormat )( + IMediaStream * This, + /* [in] */ IMediaStream *pStreamThatHasDesiredFormat, + /* [in] */ DWORD dwFlags); + + HRESULT ( STDMETHODCALLTYPE *AllocateSample )( + IMediaStream * This, + /* [in] */ DWORD dwFlags, + /* [out] */ IStreamSample **ppSample); + + HRESULT ( STDMETHODCALLTYPE *CreateSharedSample )( + IMediaStream * This, + /* [in] */ IStreamSample *pExistingSample, + /* [in] */ DWORD dwFlags, + /* [out] */ IStreamSample **ppNewSample); + + HRESULT ( STDMETHODCALLTYPE *SendEndOfStream )( + IMediaStream * This, + DWORD dwFlags); + + END_INTERFACE + } IMediaStreamVtbl; + + interface IMediaStream + { + CONST_VTBL struct IMediaStreamVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMediaStream_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IMediaStream_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IMediaStream_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IMediaStream_GetMultiMediaStream(This,ppMultiMediaStream) \ + (This)->lpVtbl -> GetMultiMediaStream(This,ppMultiMediaStream) + +#define IMediaStream_GetInformation(This,pPurposeId,pType) \ + (This)->lpVtbl -> GetInformation(This,pPurposeId,pType) + +#define IMediaStream_SetSameFormat(This,pStreamThatHasDesiredFormat,dwFlags) \ + (This)->lpVtbl -> SetSameFormat(This,pStreamThatHasDesiredFormat,dwFlags) + +#define IMediaStream_AllocateSample(This,dwFlags,ppSample) \ + (This)->lpVtbl -> AllocateSample(This,dwFlags,ppSample) + +#define IMediaStream_CreateSharedSample(This,pExistingSample,dwFlags,ppNewSample) \ + (This)->lpVtbl -> CreateSharedSample(This,pExistingSample,dwFlags,ppNewSample) + +#define IMediaStream_SendEndOfStream(This,dwFlags) \ + (This)->lpVtbl -> SendEndOfStream(This,dwFlags) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IMediaStream_GetMultiMediaStream_Proxy( + IMediaStream * This, + /* [out] */ IMultiMediaStream **ppMultiMediaStream); + + +void __RPC_STUB IMediaStream_GetMultiMediaStream_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IMediaStream_GetInformation_Proxy( + IMediaStream * This, + /* [out] */ MSPID *pPurposeId, + /* [out] */ STREAM_TYPE *pType); + + +void __RPC_STUB IMediaStream_GetInformation_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IMediaStream_SetSameFormat_Proxy( + IMediaStream * This, + /* [in] */ IMediaStream *pStreamThatHasDesiredFormat, + /* [in] */ DWORD dwFlags); + + +void __RPC_STUB IMediaStream_SetSameFormat_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IMediaStream_AllocateSample_Proxy( + IMediaStream * This, + /* [in] */ DWORD dwFlags, + /* [out] */ IStreamSample **ppSample); + + +void __RPC_STUB IMediaStream_AllocateSample_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IMediaStream_CreateSharedSample_Proxy( + IMediaStream * This, + /* [in] */ IStreamSample *pExistingSample, + /* [in] */ DWORD dwFlags, + /* [out] */ IStreamSample **ppNewSample); + + +void __RPC_STUB IMediaStream_CreateSharedSample_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IMediaStream_SendEndOfStream_Proxy( + IMediaStream * This, + DWORD dwFlags); + + +void __RPC_STUB IMediaStream_SendEndOfStream_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IMediaStream_INTERFACE_DEFINED__ */ + + +#ifndef __IStreamSample_INTERFACE_DEFINED__ +#define __IStreamSample_INTERFACE_DEFINED__ + +/* interface IStreamSample */ +/* [unique][uuid][local][object] */ + + +EXTERN_C const IID IID_IStreamSample; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("B502D1BE-9A57-11d0-8FDE-00C04FD9189D") + IStreamSample : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE GetMediaStream( + /* [in] */ IMediaStream **ppMediaStream) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetSampleTimes( + /* [out] */ STREAM_TIME *pStartTime, + /* [out] */ STREAM_TIME *pEndTime, + /* [out] */ STREAM_TIME *pCurrentTime) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetSampleTimes( + /* [in] */ const STREAM_TIME *pStartTime, + /* [in] */ const STREAM_TIME *pEndTime) = 0; + + virtual HRESULT STDMETHODCALLTYPE Update( + /* [in] */ DWORD dwFlags, + /* [in] */ HANDLE hEvent, + /* [in] */ PAPCFUNC pfnAPC, + /* [in] */ DWORD_PTR dwAPCData) = 0; + + virtual HRESULT STDMETHODCALLTYPE CompletionStatus( + /* [in] */ DWORD dwFlags, + /* [in] */ DWORD dwMilliseconds) = 0; + + }; + +#else /* C style interface */ + + typedef struct IStreamSampleVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IStreamSample * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IStreamSample * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IStreamSample * This); + + HRESULT ( STDMETHODCALLTYPE *GetMediaStream )( + IStreamSample * This, + /* [in] */ IMediaStream **ppMediaStream); + + HRESULT ( STDMETHODCALLTYPE *GetSampleTimes )( + IStreamSample * This, + /* [out] */ STREAM_TIME *pStartTime, + /* [out] */ STREAM_TIME *pEndTime, + /* [out] */ STREAM_TIME *pCurrentTime); + + HRESULT ( STDMETHODCALLTYPE *SetSampleTimes )( + IStreamSample * This, + /* [in] */ const STREAM_TIME *pStartTime, + /* [in] */ const STREAM_TIME *pEndTime); + + HRESULT ( STDMETHODCALLTYPE *Update )( + IStreamSample * This, + /* [in] */ DWORD dwFlags, + /* [in] */ HANDLE hEvent, + /* [in] */ PAPCFUNC pfnAPC, + /* [in] */ DWORD_PTR dwAPCData); + + HRESULT ( STDMETHODCALLTYPE *CompletionStatus )( + IStreamSample * This, + /* [in] */ DWORD dwFlags, + /* [in] */ DWORD dwMilliseconds); + + END_INTERFACE + } IStreamSampleVtbl; + + interface IStreamSample + { + CONST_VTBL struct IStreamSampleVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IStreamSample_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IStreamSample_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IStreamSample_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IStreamSample_GetMediaStream(This,ppMediaStream) \ + (This)->lpVtbl -> GetMediaStream(This,ppMediaStream) + +#define IStreamSample_GetSampleTimes(This,pStartTime,pEndTime,pCurrentTime) \ + (This)->lpVtbl -> GetSampleTimes(This,pStartTime,pEndTime,pCurrentTime) + +#define IStreamSample_SetSampleTimes(This,pStartTime,pEndTime) \ + (This)->lpVtbl -> SetSampleTimes(This,pStartTime,pEndTime) + +#define IStreamSample_Update(This,dwFlags,hEvent,pfnAPC,dwAPCData) \ + (This)->lpVtbl -> Update(This,dwFlags,hEvent,pfnAPC,dwAPCData) + +#define IStreamSample_CompletionStatus(This,dwFlags,dwMilliseconds) \ + (This)->lpVtbl -> CompletionStatus(This,dwFlags,dwMilliseconds) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IStreamSample_GetMediaStream_Proxy( + IStreamSample * This, + /* [in] */ IMediaStream **ppMediaStream); + + +void __RPC_STUB IStreamSample_GetMediaStream_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IStreamSample_GetSampleTimes_Proxy( + IStreamSample * This, + /* [out] */ STREAM_TIME *pStartTime, + /* [out] */ STREAM_TIME *pEndTime, + /* [out] */ STREAM_TIME *pCurrentTime); + + +void __RPC_STUB IStreamSample_GetSampleTimes_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IStreamSample_SetSampleTimes_Proxy( + IStreamSample * This, + /* [in] */ const STREAM_TIME *pStartTime, + /* [in] */ const STREAM_TIME *pEndTime); + + +void __RPC_STUB IStreamSample_SetSampleTimes_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IStreamSample_Update_Proxy( + IStreamSample * This, + /* [in] */ DWORD dwFlags, + /* [in] */ HANDLE hEvent, + /* [in] */ PAPCFUNC pfnAPC, + /* [in] */ DWORD_PTR dwAPCData); + + +void __RPC_STUB IStreamSample_Update_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IStreamSample_CompletionStatus_Proxy( + IStreamSample * This, + /* [in] */ DWORD dwFlags, + /* [in] */ DWORD dwMilliseconds); + + +void __RPC_STUB IStreamSample_CompletionStatus_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IStreamSample_INTERFACE_DEFINED__ */ + + +/* Additional Prototypes for ALL interfaces */ + +/* end of Additional Prototypes */ + +#ifdef __cplusplus +} +#endif + +#endif + + diff --git a/videoInputSrcAndDemos/libs/DShow/Include/mpconfig.h b/videoInputSrcAndDemos/libs/DShow/Include/mpconfig.h index c2eb9fa..49f8cf1 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/mpconfig.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/mpconfig.h @@ -1,144 +1,144 @@ -//------------------------------------------------------------------------------ -// File: MPConfig.h -// -// Desc: -// -// Copyright (c) 1997-2001, Microsoft Corporation. All rights reserved. -//------------------------------------------------------------------------------ - - -#ifndef __IMPConfig__ -#define __IMPConfig__ - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum _AM_ASPECT_RATIO_MODE -{ - AM_ARMODE_STRETCHED, // don't do any aspect ratio correction - AM_ARMODE_LETTER_BOX, // letter box the video, paint background color in the excess region - AM_ARMODE_CROP, // crop the video to the right aspect ratio - AM_ARMODE_STRETCHED_AS_PRIMARY // follow whatever the primary stream does (in terms of the mode as well as pict-aspect-ratio values) -} AM_ASPECT_RATIO_MODE; - - -DECLARE_INTERFACE_(IMixerPinConfig, IUnknown) -{ - // this function sets the position of the stream in the display window, assuming - // that the window coordinates are {0, 0, 10000, 10000}. Thus giving arguments - // (0, 0, 5000, 5000) will put the stream in the top-left quarter. Any value greater - // than 10000 is invalid. - STDMETHOD (SetRelativePosition)(THIS_ - IN DWORD dwLeft, - IN DWORD dwTop, - IN DWORD dwRight, - IN DWORD dwBottom - ) PURE; - - // this function gets the position of the stream in the display window, assuming - // that the window coordinates are {0, 0, 10000, 10000}. Thus if the values returned - // are (0, 0, 5000, 5000), then it means that the stream is in the top-left quarter. - STDMETHOD (GetRelativePosition)(THIS_ - OUT DWORD *pdwLeft, - OUT DWORD *pdwTop, - OUT DWORD *pdwRight, - OUT DWORD *pdwBottom - ) PURE; - - // this function sets the ZOrder of the stream. The ZOrder of 0 is the closest - // to the eyes of the user, and increasing values imply greater distance. - STDMETHOD (SetZOrder)(THIS_ - IN DWORD dwZOrder - ) PURE; - - - // this function gets the ZOrder of the stream. The ZOrder of 0 is the closest - // to the eyes of the user, and increasing values imply greater distance. - STDMETHOD (GetZOrder)(THIS_ - OUT DWORD *pdwZOrder - ) PURE; - - // this function sets the colorkey being used by the stream. Setting this value on the - // primary stream sets the destination colorkey being used by the overlay surface. Setting - // this value on the secondary pin makes sense only if the stream is transparent. By default - // the destination colorkey is used as the colorkey for all transparent (secondary) streams. - STDMETHOD (SetColorKey)(THIS_ - IN COLORKEY *pColorKey - ) PURE; - - // this function gets the colorkey being used by the stream. Getting this value on the - // primary stream gets the destination colorkey being used by the overlay surface. Getting - // this value on the secondary pin returns the colorkey being used by that particular stream. - // When using this method, you are allowed to pass NULL for either pColorKey or pColor but - // not both. - STDMETHOD (GetColorKey)(THIS_ - OUT COLORKEY *pColorKey, - OUT DWORD *pColor - ) PURE; - - // this function sets the blending parameter which in turn defines, how the secondary stream - // is going to be blended with the primary stream. A value of 0 makes the secondary stream - // invisible, a value of 255 makes the primary stream invisible (in that region only ofcourse), - // and any value inbetween, say x, blends the secondary and primary streams in the ratio x : (255-x). - // If no value is set, the default is 255. - // Any value less than 0 or greater than 255 is invalid. Calling this function on the primary - // stream would result in a return value of E_UNEXPECTED. - STDMETHOD (SetBlendingParameter)(THIS_ - IN DWORD dwBlendingParameter - ) PURE; - - // this function gets the blending parameter which in turn defines, how the secondary stream - // is currently being blended with the primary stream. - STDMETHOD (GetBlendingParameter)(THIS_ - OUT DWORD *pdwBlendingParameter - ) PURE; - - - // this function is used to set the Aspect Ratio Correction mode on the pin. - // If the mode is set to letter box, black color is painted on the excess region - STDMETHOD (SetAspectRatioMode)(THIS_ - IN AM_ASPECT_RATIO_MODE amAspectRatioMode - ) PURE; - - // this function is used to get the Aspect Ratio Correction mode on the pin. - STDMETHOD (GetAspectRatioMode)(THIS_ - OUT AM_ASPECT_RATIO_MODE* pamAspectRatioMode - ) PURE; - - // this function sets the stream to be transparent. That means that the stream is not going - // to occupy the whole of the rectangle (specified by SetRelativePosition), some of the region - // is going to be transparent i.e. the stream underneath, is going to see through. - // Calling this function on the primary stream would result in a return value of E_UNEXPECTED. - STDMETHOD (SetStreamTransparent)(THIS_ - IN BOOL bStreamTransparent - ) PURE; - - // this function is used to tell whether the stream is transparent or not. - STDMETHOD (GetStreamTransparent)(THIS_ - OUT BOOL *pbStreamTransparent - ) PURE; -}; - - -DECLARE_INTERFACE_(IMixerPinConfig2, IMixerPinConfig) -{ - // this functions sets the color-controls, if the vga chip supports it. - STDMETHOD (SetOverlaySurfaceColorControls)(THIS_ - IN LPDDCOLORCONTROL pColorControl - ) PURE; - - // this functions gets the color-controls. It also returns the capability of the vga hardware - // in the dwFlags value of the struct. - STDMETHOD (GetOverlaySurfaceColorControls)(THIS_ - OUT LPDDCOLORCONTROL pColorControl - ) PURE; -}; - -#ifdef __cplusplus -} -#endif - - -#endif // #define __IMPConfig__ - +//------------------------------------------------------------------------------ +// File: MPConfig.h +// +// Desc: +// +// Copyright (c) 1997-2001, Microsoft Corporation. All rights reserved. +//------------------------------------------------------------------------------ + + +#ifndef __IMPConfig__ +#define __IMPConfig__ + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum _AM_ASPECT_RATIO_MODE +{ + AM_ARMODE_STRETCHED, // don't do any aspect ratio correction + AM_ARMODE_LETTER_BOX, // letter box the video, paint background color in the excess region + AM_ARMODE_CROP, // crop the video to the right aspect ratio + AM_ARMODE_STRETCHED_AS_PRIMARY // follow whatever the primary stream does (in terms of the mode as well as pict-aspect-ratio values) +} AM_ASPECT_RATIO_MODE; + + +DECLARE_INTERFACE_(IMixerPinConfig, IUnknown) +{ + // this function sets the position of the stream in the display window, assuming + // that the window coordinates are {0, 0, 10000, 10000}. Thus giving arguments + // (0, 0, 5000, 5000) will put the stream in the top-left quarter. Any value greater + // than 10000 is invalid. + STDMETHOD (SetRelativePosition)(THIS_ + IN DWORD dwLeft, + IN DWORD dwTop, + IN DWORD dwRight, + IN DWORD dwBottom + ) PURE; + + // this function gets the position of the stream in the display window, assuming + // that the window coordinates are {0, 0, 10000, 10000}. Thus if the values returned + // are (0, 0, 5000, 5000), then it means that the stream is in the top-left quarter. + STDMETHOD (GetRelativePosition)(THIS_ + OUT DWORD *pdwLeft, + OUT DWORD *pdwTop, + OUT DWORD *pdwRight, + OUT DWORD *pdwBottom + ) PURE; + + // this function sets the ZOrder of the stream. The ZOrder of 0 is the closest + // to the eyes of the user, and increasing values imply greater distance. + STDMETHOD (SetZOrder)(THIS_ + IN DWORD dwZOrder + ) PURE; + + + // this function gets the ZOrder of the stream. The ZOrder of 0 is the closest + // to the eyes of the user, and increasing values imply greater distance. + STDMETHOD (GetZOrder)(THIS_ + OUT DWORD *pdwZOrder + ) PURE; + + // this function sets the colorkey being used by the stream. Setting this value on the + // primary stream sets the destination colorkey being used by the overlay surface. Setting + // this value on the secondary pin makes sense only if the stream is transparent. By default + // the destination colorkey is used as the colorkey for all transparent (secondary) streams. + STDMETHOD (SetColorKey)(THIS_ + IN COLORKEY *pColorKey + ) PURE; + + // this function gets the colorkey being used by the stream. Getting this value on the + // primary stream gets the destination colorkey being used by the overlay surface. Getting + // this value on the secondary pin returns the colorkey being used by that particular stream. + // When using this method, you are allowed to pass NULL for either pColorKey or pColor but + // not both. + STDMETHOD (GetColorKey)(THIS_ + OUT COLORKEY *pColorKey, + OUT DWORD *pColor + ) PURE; + + // this function sets the blending parameter which in turn defines, how the secondary stream + // is going to be blended with the primary stream. A value of 0 makes the secondary stream + // invisible, a value of 255 makes the primary stream invisible (in that region only ofcourse), + // and any value inbetween, say x, blends the secondary and primary streams in the ratio x : (255-x). + // If no value is set, the default is 255. + // Any value less than 0 or greater than 255 is invalid. Calling this function on the primary + // stream would result in a return value of E_UNEXPECTED. + STDMETHOD (SetBlendingParameter)(THIS_ + IN DWORD dwBlendingParameter + ) PURE; + + // this function gets the blending parameter which in turn defines, how the secondary stream + // is currently being blended with the primary stream. + STDMETHOD (GetBlendingParameter)(THIS_ + OUT DWORD *pdwBlendingParameter + ) PURE; + + + // this function is used to set the Aspect Ratio Correction mode on the pin. + // If the mode is set to letter box, black color is painted on the excess region + STDMETHOD (SetAspectRatioMode)(THIS_ + IN AM_ASPECT_RATIO_MODE amAspectRatioMode + ) PURE; + + // this function is used to get the Aspect Ratio Correction mode on the pin. + STDMETHOD (GetAspectRatioMode)(THIS_ + OUT AM_ASPECT_RATIO_MODE* pamAspectRatioMode + ) PURE; + + // this function sets the stream to be transparent. That means that the stream is not going + // to occupy the whole of the rectangle (specified by SetRelativePosition), some of the region + // is going to be transparent i.e. the stream underneath, is going to see through. + // Calling this function on the primary stream would result in a return value of E_UNEXPECTED. + STDMETHOD (SetStreamTransparent)(THIS_ + IN BOOL bStreamTransparent + ) PURE; + + // this function is used to tell whether the stream is transparent or not. + STDMETHOD (GetStreamTransparent)(THIS_ + OUT BOOL *pbStreamTransparent + ) PURE; +}; + + +DECLARE_INTERFACE_(IMixerPinConfig2, IMixerPinConfig) +{ + // this functions sets the color-controls, if the vga chip supports it. + STDMETHOD (SetOverlaySurfaceColorControls)(THIS_ + IN LPDDCOLORCONTROL pColorControl + ) PURE; + + // this functions gets the color-controls. It also returns the capability of the vga hardware + // in the dwFlags value of the struct. + STDMETHOD (GetOverlaySurfaceColorControls)(THIS_ + OUT LPDDCOLORCONTROL pColorControl + ) PURE; +}; + +#ifdef __cplusplus +} +#endif + + +#endif // #define __IMPConfig__ + diff --git a/videoInputSrcAndDemos/libs/DShow/Include/mpeg2data.h b/videoInputSrcAndDemos/libs/DShow/Include/mpeg2data.h index 237a4d0..f3301c6 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/mpeg2data.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/mpeg2data.h @@ -1,1072 +1,1072 @@ - -#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 mpeg2data.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 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 -#endif // __RPCNDR_H_VERSION__ - - -#ifndef __mpeg2data_h__ -#define __mpeg2data_h__ - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -#pragma once -#endif - -/* Forward Declarations */ - -#ifndef __IMpeg2Data_FWD_DEFINED__ -#define __IMpeg2Data_FWD_DEFINED__ -typedef interface IMpeg2Data IMpeg2Data; -#endif /* __IMpeg2Data_FWD_DEFINED__ */ - - -#ifndef __ISectionList_FWD_DEFINED__ -#define __ISectionList_FWD_DEFINED__ -typedef interface ISectionList ISectionList; -#endif /* __ISectionList_FWD_DEFINED__ */ - - -#ifndef __IMpeg2Stream_FWD_DEFINED__ -#define __IMpeg2Stream_FWD_DEFINED__ -typedef interface IMpeg2Stream IMpeg2Stream; -#endif /* __IMpeg2Stream_FWD_DEFINED__ */ - - -#ifndef __SectionList_FWD_DEFINED__ -#define __SectionList_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class SectionList SectionList; -#else -typedef struct SectionList SectionList; -#endif /* __cplusplus */ - -#endif /* __SectionList_FWD_DEFINED__ */ - - -#ifndef __Mpeg2Stream_FWD_DEFINED__ -#define __Mpeg2Stream_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class Mpeg2Stream Mpeg2Stream; -#else -typedef struct Mpeg2Stream Mpeg2Stream; -#endif /* __cplusplus */ - -#endif /* __Mpeg2Stream_FWD_DEFINED__ */ - - -#ifndef __Mpeg2Data_FWD_DEFINED__ -#define __Mpeg2Data_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class Mpeg2Data Mpeg2Data; -#else -typedef struct Mpeg2Data Mpeg2Data; -#endif /* __cplusplus */ - -#endif /* __Mpeg2Data_FWD_DEFINED__ */ - - -/* header files for imported files */ -#include "oaidl.h" -#include "ocidl.h" -#include "bdaiface.h" - -#ifdef __cplusplus -extern "C"{ -#endif - -void * __RPC_USER MIDL_user_allocate(size_t); -void __RPC_USER MIDL_user_free( void * ); - -/* interface __MIDL_itf_mpeg2data_0000 */ -/* [local] */ - - -#pragma pack(push) - -#pragma pack(1) - - -#define MPEG_PAT_PID 0x0000 -#define MPEG_PAT_TID 0x00 -#define MPEG_CAT_PID 0x0001 -#define MPEG_CAT_TID 0x01 -#define MPEG_PMT_TID 0x02 -#define MPEG_TSDT_PID 0x0002 -#define MPEG_TSDT_TID 0x03 -#define ATSC_MGT_PID 0x1FFB -#define ATSC_MGT_TID 0xC7 -#define ATSC_VCT_PID 0x1FFB -#define ATSC_VCT_TERR_TID 0xC8 -#define ATSC_VCT_CABL_TID 0xC9 -#define ATSC_RRT_PID 0x1FFB -#define ATSC_RRT_TID 0xCA -#define ATSC_EIT_TID 0xCB -#define ATSC_ETT_TID 0xCC -#define ATSC_STT_PID 0x1FFB -#define ATSC_STT_TID 0xCD -#define ATSC_PIT_TID 0xD0 -#define DVB_NIT_PID 0x0010 -#define DVB_NIT_ACTUAL_TID 0x40 -#define DVB_NIT_OTHER_TID 0x41 -#define DVB_SDT_PID 0x0011 -#define DVB_SDT_ACTUAL_TID 0x42 -#define DVB_SDT_OTHER_TID 0x46 -#define DVB_BAT_PID 0x0011 -#define DVB_BAT_TID 0x4A -#define DVB_EIT_PID 0x0012 -#define DVB_EIT_ACTUAL_TID 0x4E -#define DVB_EIT_OTHER_TID 0x4F -#define DVB_RST_PID 0x0013 -#define DVB_RST_TID 0x71 -#define DVB_TDT_PID 0x0014 -#define DVB_TDT_TID 0x70 -#define DVB_ST_PID_16 0x0010 -#define DVB_ST_PID_17 0x0011 -#define DVB_ST_PID_18 0x0012 -#define DVB_ST_PID_19 0x0013 -#define DVB_ST_PID_20 0x0014 -#define DVB_ST_TID 0x72 -#define DVB_TOT_PID 0x0014 -#define DVB_TOT_TID 0x73 -#define DVB_DIT_PID 0x001E -#define DVB_DIT_TID 0x7E -#define DVB_SIT_PID 0x001F -#define DVB_SIT_TID 0x7F -#define ISDB_DCT_PID 0x0017 -#define ISDB_DCT_TID 0xC0 -#define ISDB_LIT_PID 0x0020 -#define ISDB_LIT_TID 0xD0 -#define ISDB_ERT_PID 0x0021 -#define ISDB_ERT_TID 0xD1 -#define ISDB_ITT_TID 0xD2 -#define ISDB_DLT_TID 0xC1 -#define ISDB_PCAT_PID 0x0022 -#define ISDB_PCAT_TID 0xC2 -#define ISDB_SDTT_PID 0x0023 -#define ISDB_SDTT_TID 0xC3 -class DECLSPEC_UUID("DBAF6C1B-B6A4-4898-AE65-204F0D9509A1") Mpeg2DataLib; - - -extern RPC_IF_HANDLE __MIDL_itf_mpeg2data_0000_v0_0_c_ifspec; -extern RPC_IF_HANDLE __MIDL_itf_mpeg2data_0000_v0_0_s_ifspec; - - -#ifndef __Mpeg2DataLib_LIBRARY_DEFINED__ -#define __Mpeg2DataLib_LIBRARY_DEFINED__ - -/* library Mpeg2DataLib */ -/* [version][uuid] */ - -#pragma once - -#pragma pack(push) - -#pragma pack(1) -typedef /* [public] */ struct __MIDL___MIDL_itf_mpeg2data_0000_0001 - { - WORD Bits; - } PID_BITS_MIDL; - -typedef /* [public][public][public][public][public][public][public][public][public][public][public][public][public] */ struct __MIDL___MIDL_itf_mpeg2data_0000_0002 - { - WORD Bits; - } MPEG_HEADER_BITS_MIDL; - -typedef /* [public][public][public][public][public] */ struct __MIDL___MIDL_itf_mpeg2data_0000_0003 - { - BYTE Bits; - } MPEG_HEADER_VERSION_BITS_MIDL; - - -#pragma pack(pop) -typedef WORD PID; - -typedef BYTE TID; - -typedef UINT ClientKey; - -typedef /* [public] */ -enum __MIDL___MIDL_itf_mpeg2data_0000_0004 - { MPEG_SECTION_IS_NEXT = 0, - MPEG_SECTION_IS_CURRENT = 1 - } MPEG_CURRENT_NEXT_BIT; - -typedef /* [public] */ struct __MIDL___MIDL_itf_mpeg2data_0000_0005 - { - WORD wTidExt; - WORD wCount; - } TID_EXTENSION; - -typedef struct __MIDL___MIDL_itf_mpeg2data_0000_0005 *PTID_EXTENSION; - -typedef /* [public] */ struct __MIDL___MIDL_itf_mpeg2data_0000_0006 - { - TID TableId; - union - { - MPEG_HEADER_BITS_MIDL S; - WORD W; - } Header; - BYTE SectionData[ 1 ]; - } SECTION; - -typedef struct __MIDL___MIDL_itf_mpeg2data_0000_0006 *PSECTION; - -typedef /* [public] */ struct __MIDL___MIDL_itf_mpeg2data_0000_0008 - { - 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 ]; - } LONG_SECTION; - -typedef struct __MIDL___MIDL_itf_mpeg2data_0000_0008 *PLONG_SECTION; - -typedef /* [public] */ struct __MIDL___MIDL_itf_mpeg2data_0000_0011 - { - 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; - -typedef struct __MIDL___MIDL_itf_mpeg2data_0000_0011 *PDSMCC_SECTION; - -typedef /* [public] */ struct __MIDL___MIDL_itf_mpeg2data_0000_0014 - { - DWORD dwLength; - PSECTION pSection; - } MPEG_RQST_PACKET; - -typedef struct __MIDL___MIDL_itf_mpeg2data_0000_0014 *PMPEG_RQST_PACKET; - -typedef /* [public] */ struct __MIDL___MIDL_itf_mpeg2data_0000_0015 - { - WORD wPacketCount; - PMPEG_RQST_PACKET PacketList[ 1 ]; - } MPEG_PACKET_LIST; - -typedef struct __MIDL___MIDL_itf_mpeg2data_0000_0015 *PMPEG_PACKET_LIST; - -typedef /* [public][public][public][public][public][public][public][public][public][public] */ struct __MIDL___MIDL_itf_mpeg2data_0000_0016 - { - BOOL fSpecifyProtocol; - BYTE Protocol; - BOOL fSpecifyType; - BYTE Type; - BOOL fSpecifyMessageId; - WORD MessageId; - BOOL fSpecifyTransactionId; - BOOL fUseTrxIdMessageIdMask; - DWORD TransactionId; - BOOL fSpecifyModuleVersion; - BYTE ModuleVersion; - BOOL fSpecifyBlockNumber; - WORD BlockNumber; - BOOL fGetModuleCall; - WORD NumberOfBlocksInModule; - } DSMCC_FILTER_OPTIONS; - -typedef /* [public][public][public][public][public][public][public][public][public][public] */ struct __MIDL___MIDL_itf_mpeg2data_0000_0017 - { - BOOL fSpecifyEtmId; - DWORD EtmId; - } ATSC_FILTER_OPTIONS; - -typedef /* [public][public][public] */ struct __MIDL___MIDL_itf_mpeg2data_0000_0018 - { - BYTE bVersionNumber; - WORD wFilterSize; - BOOL fUseRawFilteringBits; - BYTE Filter[ 16 ]; - BYTE Mask[ 16 ]; - BOOL fSpecifyTableIdExtension; - WORD TableIdExtension; - BOOL fSpecifyVersion; - BYTE Version; - BOOL fSpecifySectionNumber; - BYTE SectionNumber; - BOOL fSpecifyCurrentNext; - BOOL fNext; - BOOL fSpecifyDsmccOptions; - DSMCC_FILTER_OPTIONS Dsmcc; - BOOL fSpecifyAtscOptions; - ATSC_FILTER_OPTIONS Atsc; - } MPEG2_FILTER; - -typedef struct __MIDL___MIDL_itf_mpeg2data_0000_0018 *PMPEG2_FILTER; - -#define MPEG2_FILTER_VERSION_1_SIZE 124 -typedef /* [public] */ struct __MIDL___MIDL_itf_mpeg2data_0000_0019 - { - HRESULT hr; - DWORD dwDataBufferSize; - DWORD dwSizeOfDataRead; - BYTE *pDataBuffer; - } MPEG_STREAM_BUFFER; - -typedef struct __MIDL___MIDL_itf_mpeg2data_0000_0019 *PMPEG_STREAM_BUFFER; - -typedef /* [public][public][public] */ struct __MIDL___MIDL_itf_mpeg2data_0000_0020 - { - BYTE Hours; - BYTE Minutes; - BYTE Seconds; - } MPEG_TIME; - -typedef MPEG_TIME MPEG_DURATION; - -typedef /* [public][public] */ struct __MIDL___MIDL_itf_mpeg2data_0000_0021 - { - BYTE Date; - BYTE Month; - WORD Year; - } MPEG_DATE; - -typedef /* [public] */ struct __MIDL___MIDL_itf_mpeg2data_0000_0022 - { - MPEG_DATE D; - MPEG_TIME T; - } MPEG_DATE_AND_TIME; - -typedef /* [public][public][public][public][public][public][public] */ -enum __MIDL___MIDL_itf_mpeg2data_0000_0023 - { MPEG_CONTEXT_BCS_DEMUX = 0, - MPEG_CONTEXT_WINSOCK = MPEG_CONTEXT_BCS_DEMUX + 1 - } MPEG_CONTEXT_TYPE; - -typedef /* [public][public][public][public][public][public][public] */ struct __MIDL___MIDL_itf_mpeg2data_0000_0024 - { - DWORD AVMGraphId; - } MPEG_BCS_DEMUX; - -typedef /* [public][public][public][public][public][public][public] */ struct __MIDL___MIDL_itf_mpeg2data_0000_0025 - { - DWORD AVMGraphId; - } MPEG_WINSOCK; - -typedef /* [public][public][public] */ struct __MIDL___MIDL_itf_mpeg2data_0000_0026 - { - MPEG_CONTEXT_TYPE Type; - union - { - MPEG_BCS_DEMUX Demux; - MPEG_WINSOCK Winsock; - } U; - } MPEG_CONTEXT; - -typedef struct __MIDL___MIDL_itf_mpeg2data_0000_0026 *PMPEG_CONTEXT; - -typedef /* [public][public][public][public][public] */ -enum __MIDL___MIDL_itf_mpeg2data_0000_0028 - { MPEG_RQST_UNKNOWN = 0, - MPEG_RQST_GET_SECTION = MPEG_RQST_UNKNOWN + 1, - MPEG_RQST_GET_SECTION_ASYNC = MPEG_RQST_GET_SECTION + 1, - MPEG_RQST_GET_TABLE = MPEG_RQST_GET_SECTION_ASYNC + 1, - MPEG_RQST_GET_TABLE_ASYNC = MPEG_RQST_GET_TABLE + 1, - MPEG_RQST_GET_SECTIONS_STREAM = MPEG_RQST_GET_TABLE_ASYNC + 1, - MPEG_RQST_GET_PES_STREAM = MPEG_RQST_GET_SECTIONS_STREAM + 1, - MPEG_RQST_GET_TS_STREAM = MPEG_RQST_GET_PES_STREAM + 1, - MPEG_RQST_START_MPE_STREAM = MPEG_RQST_GET_TS_STREAM + 1 - } MPEG_REQUEST_TYPE; - -typedef /* [public] */ struct __MIDL___MIDL_itf_mpeg2data_0000_0029 - { - MPEG_REQUEST_TYPE Type; - MPEG_CONTEXT Context; - PID Pid; - TID TableId; - MPEG2_FILTER Filter; - DWORD Flags; - } MPEG_SERVICE_REQUEST; - -typedef struct __MIDL___MIDL_itf_mpeg2data_0000_0029 *PMPEG_SERVICE_REQUEST; - -typedef /* [public] */ struct __MIDL___MIDL_itf_mpeg2data_0000_0030 - { - DWORD IPAddress; - WORD Port; - } MPEG_SERVICE_RESPONSE; - -typedef struct __MIDL___MIDL_itf_mpeg2data_0000_0030 *PMPEG_SERVICE_RESPONSE; - -typedef struct _DSMCC_ELEMENT - { - PID pid; - BYTE bComponentTag; - DWORD dwCarouselId; - DWORD dwTransactionId; - struct _DSMCC_ELEMENT *pNext; - } DSMCC_ELEMENT; - -typedef struct _DSMCC_ELEMENT *PDSMCC_ELEMENT; - -typedef struct _MPE_ELEMENT - { - PID pid; - BYTE bComponentTag; - struct _MPE_ELEMENT *pNext; - } MPE_ELEMENT; - -typedef struct _MPE_ELEMENT *PMPE_ELEMENT; - -typedef struct _MPEG_STREAM_FILTER - { - WORD wPidValue; - DWORD dwFilterSize; - BOOL fCrcEnabled; - BYTE rgchFilter[ 16 ]; - BYTE rgchMask[ 16 ]; - } MPEG_STREAM_FILTER; - - -EXTERN_C const IID LIBID_Mpeg2DataLib; - -#ifndef __IMpeg2Data_INTERFACE_DEFINED__ -#define __IMpeg2Data_INTERFACE_DEFINED__ - -/* interface IMpeg2Data */ -/* [unique][uuid][object] */ - - -EXTERN_C const IID IID_IMpeg2Data; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("9B396D40-F380-4e3c-A514-1A82BF6EBFE6") - IMpeg2Data : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE GetSection( - /* [in] */ PID pid, - /* [in] */ TID tid, - /* [in] */ PMPEG2_FILTER pFilter, - /* [in] */ DWORD dwTimeout, - /* [out] */ ISectionList **ppSectionList) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetTable( - /* [in] */ PID pid, - /* [in] */ TID tid, - /* [in] */ PMPEG2_FILTER pFilter, - /* [in] */ DWORD dwTimeout, - /* [out] */ ISectionList **ppSectionList) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetStreamOfSections( - /* [in] */ PID pid, - /* [in] */ TID tid, - /* [in] */ PMPEG2_FILTER pFilter, - /* [in] */ HANDLE hDataReadyEvent, - /* [out] */ IMpeg2Stream **ppMpegStream) = 0; - - }; - -#else /* C style interface */ - - typedef struct IMpeg2DataVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IMpeg2Data * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IMpeg2Data * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IMpeg2Data * This); - - HRESULT ( STDMETHODCALLTYPE *GetSection )( - IMpeg2Data * This, - /* [in] */ PID pid, - /* [in] */ TID tid, - /* [in] */ PMPEG2_FILTER pFilter, - /* [in] */ DWORD dwTimeout, - /* [out] */ ISectionList **ppSectionList); - - HRESULT ( STDMETHODCALLTYPE *GetTable )( - IMpeg2Data * This, - /* [in] */ PID pid, - /* [in] */ TID tid, - /* [in] */ PMPEG2_FILTER pFilter, - /* [in] */ DWORD dwTimeout, - /* [out] */ ISectionList **ppSectionList); - - HRESULT ( STDMETHODCALLTYPE *GetStreamOfSections )( - IMpeg2Data * This, - /* [in] */ PID pid, - /* [in] */ TID tid, - /* [in] */ PMPEG2_FILTER pFilter, - /* [in] */ HANDLE hDataReadyEvent, - /* [out] */ IMpeg2Stream **ppMpegStream); - - END_INTERFACE - } IMpeg2DataVtbl; - - interface IMpeg2Data - { - CONST_VTBL struct IMpeg2DataVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IMpeg2Data_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IMpeg2Data_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IMpeg2Data_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IMpeg2Data_GetSection(This,pid,tid,pFilter,dwTimeout,ppSectionList) \ - (This)->lpVtbl -> GetSection(This,pid,tid,pFilter,dwTimeout,ppSectionList) - -#define IMpeg2Data_GetTable(This,pid,tid,pFilter,dwTimeout,ppSectionList) \ - (This)->lpVtbl -> GetTable(This,pid,tid,pFilter,dwTimeout,ppSectionList) - -#define IMpeg2Data_GetStreamOfSections(This,pid,tid,pFilter,hDataReadyEvent,ppMpegStream) \ - (This)->lpVtbl -> GetStreamOfSections(This,pid,tid,pFilter,hDataReadyEvent,ppMpegStream) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IMpeg2Data_GetSection_Proxy( - IMpeg2Data * This, - /* [in] */ PID pid, - /* [in] */ TID tid, - /* [in] */ PMPEG2_FILTER pFilter, - /* [in] */ DWORD dwTimeout, - /* [out] */ ISectionList **ppSectionList); - - -void __RPC_STUB IMpeg2Data_GetSection_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IMpeg2Data_GetTable_Proxy( - IMpeg2Data * This, - /* [in] */ PID pid, - /* [in] */ TID tid, - /* [in] */ PMPEG2_FILTER pFilter, - /* [in] */ DWORD dwTimeout, - /* [out] */ ISectionList **ppSectionList); - - -void __RPC_STUB IMpeg2Data_GetTable_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IMpeg2Data_GetStreamOfSections_Proxy( - IMpeg2Data * This, - /* [in] */ PID pid, - /* [in] */ TID tid, - /* [in] */ PMPEG2_FILTER pFilter, - /* [in] */ HANDLE hDataReadyEvent, - /* [out] */ IMpeg2Stream **ppMpegStream); - - -void __RPC_STUB IMpeg2Data_GetStreamOfSections_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IMpeg2Data_INTERFACE_DEFINED__ */ - - -#ifndef __ISectionList_INTERFACE_DEFINED__ -#define __ISectionList_INTERFACE_DEFINED__ - -/* interface ISectionList */ -/* [unique][uuid][object] */ - - -EXTERN_C const IID IID_ISectionList; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("AFEC1EB5-2A64-46c6-BF4B-AE3CCB6AFDB0") - ISectionList : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE Initialize( - /* [in] */ MPEG_REQUEST_TYPE requestType, - /* [in] */ IMpeg2Data *pMpeg2Data, - /* [in] */ PMPEG_CONTEXT pContext, - /* [in] */ PID pid, - /* [in] */ TID tid, - /* [in] */ PMPEG2_FILTER pFilter, - /* [in] */ DWORD timeout, - /* [in] */ HANDLE hDoneEvent) = 0; - - virtual HRESULT STDMETHODCALLTYPE InitializeWithRawSections( - /* [in] */ PMPEG_PACKET_LIST pmplSections) = 0; - - virtual HRESULT STDMETHODCALLTYPE CancelPendingRequest( void) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetNumberOfSections( - /* [out] */ WORD *pCount) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetSectionData( - /* [in] */ WORD sectionNumber, - /* [out] */ DWORD *pdwRawPacketLength, - /* [out] */ PSECTION *ppSection) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetProgramIdentifier( - PID *pPid) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetTableIdentifier( - TID *pTableId) = 0; - - }; - -#else /* C style interface */ - - typedef struct ISectionListVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - ISectionList * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - ISectionList * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - ISectionList * This); - - HRESULT ( STDMETHODCALLTYPE *Initialize )( - ISectionList * This, - /* [in] */ MPEG_REQUEST_TYPE requestType, - /* [in] */ IMpeg2Data *pMpeg2Data, - /* [in] */ PMPEG_CONTEXT pContext, - /* [in] */ PID pid, - /* [in] */ TID tid, - /* [in] */ PMPEG2_FILTER pFilter, - /* [in] */ DWORD timeout, - /* [in] */ HANDLE hDoneEvent); - - HRESULT ( STDMETHODCALLTYPE *InitializeWithRawSections )( - ISectionList * This, - /* [in] */ PMPEG_PACKET_LIST pmplSections); - - HRESULT ( STDMETHODCALLTYPE *CancelPendingRequest )( - ISectionList * This); - - HRESULT ( STDMETHODCALLTYPE *GetNumberOfSections )( - ISectionList * This, - /* [out] */ WORD *pCount); - - HRESULT ( STDMETHODCALLTYPE *GetSectionData )( - ISectionList * This, - /* [in] */ WORD sectionNumber, - /* [out] */ DWORD *pdwRawPacketLength, - /* [out] */ PSECTION *ppSection); - - HRESULT ( STDMETHODCALLTYPE *GetProgramIdentifier )( - ISectionList * This, - PID *pPid); - - HRESULT ( STDMETHODCALLTYPE *GetTableIdentifier )( - ISectionList * This, - TID *pTableId); - - END_INTERFACE - } ISectionListVtbl; - - interface ISectionList - { - CONST_VTBL struct ISectionListVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define ISectionList_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define ISectionList_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define ISectionList_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define ISectionList_Initialize(This,requestType,pMpeg2Data,pContext,pid,tid,pFilter,timeout,hDoneEvent) \ - (This)->lpVtbl -> Initialize(This,requestType,pMpeg2Data,pContext,pid,tid,pFilter,timeout,hDoneEvent) - -#define ISectionList_InitializeWithRawSections(This,pmplSections) \ - (This)->lpVtbl -> InitializeWithRawSections(This,pmplSections) - -#define ISectionList_CancelPendingRequest(This) \ - (This)->lpVtbl -> CancelPendingRequest(This) - -#define ISectionList_GetNumberOfSections(This,pCount) \ - (This)->lpVtbl -> GetNumberOfSections(This,pCount) - -#define ISectionList_GetSectionData(This,sectionNumber,pdwRawPacketLength,ppSection) \ - (This)->lpVtbl -> GetSectionData(This,sectionNumber,pdwRawPacketLength,ppSection) - -#define ISectionList_GetProgramIdentifier(This,pPid) \ - (This)->lpVtbl -> GetProgramIdentifier(This,pPid) - -#define ISectionList_GetTableIdentifier(This,pTableId) \ - (This)->lpVtbl -> GetTableIdentifier(This,pTableId) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE ISectionList_Initialize_Proxy( - ISectionList * This, - /* [in] */ MPEG_REQUEST_TYPE requestType, - /* [in] */ IMpeg2Data *pMpeg2Data, - /* [in] */ PMPEG_CONTEXT pContext, - /* [in] */ PID pid, - /* [in] */ TID tid, - /* [in] */ PMPEG2_FILTER pFilter, - /* [in] */ DWORD timeout, - /* [in] */ HANDLE hDoneEvent); - - -void __RPC_STUB ISectionList_Initialize_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE ISectionList_InitializeWithRawSections_Proxy( - ISectionList * This, - /* [in] */ PMPEG_PACKET_LIST pmplSections); - - -void __RPC_STUB ISectionList_InitializeWithRawSections_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE ISectionList_CancelPendingRequest_Proxy( - ISectionList * This); - - -void __RPC_STUB ISectionList_CancelPendingRequest_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE ISectionList_GetNumberOfSections_Proxy( - ISectionList * This, - /* [out] */ WORD *pCount); - - -void __RPC_STUB ISectionList_GetNumberOfSections_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE ISectionList_GetSectionData_Proxy( - ISectionList * This, - /* [in] */ WORD sectionNumber, - /* [out] */ DWORD *pdwRawPacketLength, - /* [out] */ PSECTION *ppSection); - - -void __RPC_STUB ISectionList_GetSectionData_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE ISectionList_GetProgramIdentifier_Proxy( - ISectionList * This, - PID *pPid); - - -void __RPC_STUB ISectionList_GetProgramIdentifier_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE ISectionList_GetTableIdentifier_Proxy( - ISectionList * This, - TID *pTableId); - - -void __RPC_STUB ISectionList_GetTableIdentifier_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __ISectionList_INTERFACE_DEFINED__ */ - - -#ifndef __IMpeg2Stream_INTERFACE_DEFINED__ -#define __IMpeg2Stream_INTERFACE_DEFINED__ - -/* interface IMpeg2Stream */ -/* [unique][uuid][object] */ - - -EXTERN_C const IID IID_IMpeg2Stream; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("400CC286-32A0-4ce4-9041-39571125A635") - IMpeg2Stream : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE Initialize( - /* [in] */ MPEG_REQUEST_TYPE requestType, - /* [in] */ IMpeg2Data *pMpeg2Data, - /* [in] */ PMPEG_CONTEXT pContext, - /* [in] */ PID pid, - /* [in] */ TID tid, - /* [in] */ PMPEG2_FILTER pFilter, - /* [in] */ HANDLE hDataReadyEvent) = 0; - - virtual HRESULT STDMETHODCALLTYPE SupplyDataBuffer( - /* [in] */ PMPEG_STREAM_BUFFER pStreamBuffer) = 0; - - }; - -#else /* C style interface */ - - typedef struct IMpeg2StreamVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IMpeg2Stream * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IMpeg2Stream * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IMpeg2Stream * This); - - HRESULT ( STDMETHODCALLTYPE *Initialize )( - IMpeg2Stream * This, - /* [in] */ MPEG_REQUEST_TYPE requestType, - /* [in] */ IMpeg2Data *pMpeg2Data, - /* [in] */ PMPEG_CONTEXT pContext, - /* [in] */ PID pid, - /* [in] */ TID tid, - /* [in] */ PMPEG2_FILTER pFilter, - /* [in] */ HANDLE hDataReadyEvent); - - HRESULT ( STDMETHODCALLTYPE *SupplyDataBuffer )( - IMpeg2Stream * This, - /* [in] */ PMPEG_STREAM_BUFFER pStreamBuffer); - - END_INTERFACE - } IMpeg2StreamVtbl; - - interface IMpeg2Stream - { - CONST_VTBL struct IMpeg2StreamVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IMpeg2Stream_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IMpeg2Stream_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IMpeg2Stream_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IMpeg2Stream_Initialize(This,requestType,pMpeg2Data,pContext,pid,tid,pFilter,hDataReadyEvent) \ - (This)->lpVtbl -> Initialize(This,requestType,pMpeg2Data,pContext,pid,tid,pFilter,hDataReadyEvent) - -#define IMpeg2Stream_SupplyDataBuffer(This,pStreamBuffer) \ - (This)->lpVtbl -> SupplyDataBuffer(This,pStreamBuffer) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IMpeg2Stream_Initialize_Proxy( - IMpeg2Stream * This, - /* [in] */ MPEG_REQUEST_TYPE requestType, - /* [in] */ IMpeg2Data *pMpeg2Data, - /* [in] */ PMPEG_CONTEXT pContext, - /* [in] */ PID pid, - /* [in] */ TID tid, - /* [in] */ PMPEG2_FILTER pFilter, - /* [in] */ HANDLE hDataReadyEvent); - - -void __RPC_STUB IMpeg2Stream_Initialize_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IMpeg2Stream_SupplyDataBuffer_Proxy( - IMpeg2Stream * This, - /* [in] */ PMPEG_STREAM_BUFFER pStreamBuffer); - - -void __RPC_STUB IMpeg2Stream_SupplyDataBuffer_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IMpeg2Stream_INTERFACE_DEFINED__ */ - - -EXTERN_C const CLSID CLSID_SectionList; - -#ifdef __cplusplus - -class DECLSPEC_UUID("73DA5D04-4347-45d3-A9DC-FAE9DDBE558D") -SectionList; -#endif - -EXTERN_C const CLSID CLSID_Mpeg2Stream; - -#ifdef __cplusplus - -class DECLSPEC_UUID("F91D96C7-8509-4d0b-AB26-A0DD10904BB7") -Mpeg2Stream; -#endif - -EXTERN_C const CLSID CLSID_Mpeg2Data; - -#ifdef __cplusplus - -class DECLSPEC_UUID("C666E115-BB62-4027-A113-82D643FE2D99") -Mpeg2Data; -#endif -#endif /* __Mpeg2DataLib_LIBRARY_DEFINED__ */ - -/* interface __MIDL_itf_mpeg2data_0432 */ -/* [local] */ - - -#pragma pack(pop) - - -extern RPC_IF_HANDLE __MIDL_itf_mpeg2data_0432_v0_0_c_ifspec; -extern RPC_IF_HANDLE __MIDL_itf_mpeg2data_0432_v0_0_s_ifspec; - -/* Additional Prototypes for ALL interfaces */ - -/* end of Additional Prototypes */ - -#ifdef __cplusplus -} -#endif - -#endif - - + +#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 mpeg2data.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 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 +#endif // __RPCNDR_H_VERSION__ + + +#ifndef __mpeg2data_h__ +#define __mpeg2data_h__ + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#pragma once +#endif + +/* Forward Declarations */ + +#ifndef __IMpeg2Data_FWD_DEFINED__ +#define __IMpeg2Data_FWD_DEFINED__ +typedef interface IMpeg2Data IMpeg2Data; +#endif /* __IMpeg2Data_FWD_DEFINED__ */ + + +#ifndef __ISectionList_FWD_DEFINED__ +#define __ISectionList_FWD_DEFINED__ +typedef interface ISectionList ISectionList; +#endif /* __ISectionList_FWD_DEFINED__ */ + + +#ifndef __IMpeg2Stream_FWD_DEFINED__ +#define __IMpeg2Stream_FWD_DEFINED__ +typedef interface IMpeg2Stream IMpeg2Stream; +#endif /* __IMpeg2Stream_FWD_DEFINED__ */ + + +#ifndef __SectionList_FWD_DEFINED__ +#define __SectionList_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class SectionList SectionList; +#else +typedef struct SectionList SectionList; +#endif /* __cplusplus */ + +#endif /* __SectionList_FWD_DEFINED__ */ + + +#ifndef __Mpeg2Stream_FWD_DEFINED__ +#define __Mpeg2Stream_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class Mpeg2Stream Mpeg2Stream; +#else +typedef struct Mpeg2Stream Mpeg2Stream; +#endif /* __cplusplus */ + +#endif /* __Mpeg2Stream_FWD_DEFINED__ */ + + +#ifndef __Mpeg2Data_FWD_DEFINED__ +#define __Mpeg2Data_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class Mpeg2Data Mpeg2Data; +#else +typedef struct Mpeg2Data Mpeg2Data; +#endif /* __cplusplus */ + +#endif /* __Mpeg2Data_FWD_DEFINED__ */ + + +/* header files for imported files */ +#include "oaidl.h" +#include "ocidl.h" +#include "bdaiface.h" + +#ifdef __cplusplus +extern "C"{ +#endif + +void * __RPC_USER MIDL_user_allocate(size_t); +void __RPC_USER MIDL_user_free( void * ); + +/* interface __MIDL_itf_mpeg2data_0000 */ +/* [local] */ + + +#pragma pack(push) + +#pragma pack(1) + + +#define MPEG_PAT_PID 0x0000 +#define MPEG_PAT_TID 0x00 +#define MPEG_CAT_PID 0x0001 +#define MPEG_CAT_TID 0x01 +#define MPEG_PMT_TID 0x02 +#define MPEG_TSDT_PID 0x0002 +#define MPEG_TSDT_TID 0x03 +#define ATSC_MGT_PID 0x1FFB +#define ATSC_MGT_TID 0xC7 +#define ATSC_VCT_PID 0x1FFB +#define ATSC_VCT_TERR_TID 0xC8 +#define ATSC_VCT_CABL_TID 0xC9 +#define ATSC_RRT_PID 0x1FFB +#define ATSC_RRT_TID 0xCA +#define ATSC_EIT_TID 0xCB +#define ATSC_ETT_TID 0xCC +#define ATSC_STT_PID 0x1FFB +#define ATSC_STT_TID 0xCD +#define ATSC_PIT_TID 0xD0 +#define DVB_NIT_PID 0x0010 +#define DVB_NIT_ACTUAL_TID 0x40 +#define DVB_NIT_OTHER_TID 0x41 +#define DVB_SDT_PID 0x0011 +#define DVB_SDT_ACTUAL_TID 0x42 +#define DVB_SDT_OTHER_TID 0x46 +#define DVB_BAT_PID 0x0011 +#define DVB_BAT_TID 0x4A +#define DVB_EIT_PID 0x0012 +#define DVB_EIT_ACTUAL_TID 0x4E +#define DVB_EIT_OTHER_TID 0x4F +#define DVB_RST_PID 0x0013 +#define DVB_RST_TID 0x71 +#define DVB_TDT_PID 0x0014 +#define DVB_TDT_TID 0x70 +#define DVB_ST_PID_16 0x0010 +#define DVB_ST_PID_17 0x0011 +#define DVB_ST_PID_18 0x0012 +#define DVB_ST_PID_19 0x0013 +#define DVB_ST_PID_20 0x0014 +#define DVB_ST_TID 0x72 +#define DVB_TOT_PID 0x0014 +#define DVB_TOT_TID 0x73 +#define DVB_DIT_PID 0x001E +#define DVB_DIT_TID 0x7E +#define DVB_SIT_PID 0x001F +#define DVB_SIT_TID 0x7F +#define ISDB_DCT_PID 0x0017 +#define ISDB_DCT_TID 0xC0 +#define ISDB_LIT_PID 0x0020 +#define ISDB_LIT_TID 0xD0 +#define ISDB_ERT_PID 0x0021 +#define ISDB_ERT_TID 0xD1 +#define ISDB_ITT_TID 0xD2 +#define ISDB_DLT_TID 0xC1 +#define ISDB_PCAT_PID 0x0022 +#define ISDB_PCAT_TID 0xC2 +#define ISDB_SDTT_PID 0x0023 +#define ISDB_SDTT_TID 0xC3 +class DECLSPEC_UUID("DBAF6C1B-B6A4-4898-AE65-204F0D9509A1") Mpeg2DataLib; + + +extern RPC_IF_HANDLE __MIDL_itf_mpeg2data_0000_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_mpeg2data_0000_v0_0_s_ifspec; + + +#ifndef __Mpeg2DataLib_LIBRARY_DEFINED__ +#define __Mpeg2DataLib_LIBRARY_DEFINED__ + +/* library Mpeg2DataLib */ +/* [version][uuid] */ + +#pragma once + +#pragma pack(push) + +#pragma pack(1) +typedef /* [public] */ struct __MIDL___MIDL_itf_mpeg2data_0000_0001 + { + WORD Bits; + } PID_BITS_MIDL; + +typedef /* [public][public][public][public][public][public][public][public][public][public][public][public][public] */ struct __MIDL___MIDL_itf_mpeg2data_0000_0002 + { + WORD Bits; + } MPEG_HEADER_BITS_MIDL; + +typedef /* [public][public][public][public][public] */ struct __MIDL___MIDL_itf_mpeg2data_0000_0003 + { + BYTE Bits; + } MPEG_HEADER_VERSION_BITS_MIDL; + + +#pragma pack(pop) +typedef WORD PID; + +typedef BYTE TID; + +typedef UINT ClientKey; + +typedef /* [public] */ +enum __MIDL___MIDL_itf_mpeg2data_0000_0004 + { MPEG_SECTION_IS_NEXT = 0, + MPEG_SECTION_IS_CURRENT = 1 + } MPEG_CURRENT_NEXT_BIT; + +typedef /* [public] */ struct __MIDL___MIDL_itf_mpeg2data_0000_0005 + { + WORD wTidExt; + WORD wCount; + } TID_EXTENSION; + +typedef struct __MIDL___MIDL_itf_mpeg2data_0000_0005 *PTID_EXTENSION; + +typedef /* [public] */ struct __MIDL___MIDL_itf_mpeg2data_0000_0006 + { + TID TableId; + union + { + MPEG_HEADER_BITS_MIDL S; + WORD W; + } Header; + BYTE SectionData[ 1 ]; + } SECTION; + +typedef struct __MIDL___MIDL_itf_mpeg2data_0000_0006 *PSECTION; + +typedef /* [public] */ struct __MIDL___MIDL_itf_mpeg2data_0000_0008 + { + 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 ]; + } LONG_SECTION; + +typedef struct __MIDL___MIDL_itf_mpeg2data_0000_0008 *PLONG_SECTION; + +typedef /* [public] */ struct __MIDL___MIDL_itf_mpeg2data_0000_0011 + { + 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; + +typedef struct __MIDL___MIDL_itf_mpeg2data_0000_0011 *PDSMCC_SECTION; + +typedef /* [public] */ struct __MIDL___MIDL_itf_mpeg2data_0000_0014 + { + DWORD dwLength; + PSECTION pSection; + } MPEG_RQST_PACKET; + +typedef struct __MIDL___MIDL_itf_mpeg2data_0000_0014 *PMPEG_RQST_PACKET; + +typedef /* [public] */ struct __MIDL___MIDL_itf_mpeg2data_0000_0015 + { + WORD wPacketCount; + PMPEG_RQST_PACKET PacketList[ 1 ]; + } MPEG_PACKET_LIST; + +typedef struct __MIDL___MIDL_itf_mpeg2data_0000_0015 *PMPEG_PACKET_LIST; + +typedef /* [public][public][public][public][public][public][public][public][public][public] */ struct __MIDL___MIDL_itf_mpeg2data_0000_0016 + { + BOOL fSpecifyProtocol; + BYTE Protocol; + BOOL fSpecifyType; + BYTE Type; + BOOL fSpecifyMessageId; + WORD MessageId; + BOOL fSpecifyTransactionId; + BOOL fUseTrxIdMessageIdMask; + DWORD TransactionId; + BOOL fSpecifyModuleVersion; + BYTE ModuleVersion; + BOOL fSpecifyBlockNumber; + WORD BlockNumber; + BOOL fGetModuleCall; + WORD NumberOfBlocksInModule; + } DSMCC_FILTER_OPTIONS; + +typedef /* [public][public][public][public][public][public][public][public][public][public] */ struct __MIDL___MIDL_itf_mpeg2data_0000_0017 + { + BOOL fSpecifyEtmId; + DWORD EtmId; + } ATSC_FILTER_OPTIONS; + +typedef /* [public][public][public] */ struct __MIDL___MIDL_itf_mpeg2data_0000_0018 + { + BYTE bVersionNumber; + WORD wFilterSize; + BOOL fUseRawFilteringBits; + BYTE Filter[ 16 ]; + BYTE Mask[ 16 ]; + BOOL fSpecifyTableIdExtension; + WORD TableIdExtension; + BOOL fSpecifyVersion; + BYTE Version; + BOOL fSpecifySectionNumber; + BYTE SectionNumber; + BOOL fSpecifyCurrentNext; + BOOL fNext; + BOOL fSpecifyDsmccOptions; + DSMCC_FILTER_OPTIONS Dsmcc; + BOOL fSpecifyAtscOptions; + ATSC_FILTER_OPTIONS Atsc; + } MPEG2_FILTER; + +typedef struct __MIDL___MIDL_itf_mpeg2data_0000_0018 *PMPEG2_FILTER; + +#define MPEG2_FILTER_VERSION_1_SIZE 124 +typedef /* [public] */ struct __MIDL___MIDL_itf_mpeg2data_0000_0019 + { + HRESULT hr; + DWORD dwDataBufferSize; + DWORD dwSizeOfDataRead; + BYTE *pDataBuffer; + } MPEG_STREAM_BUFFER; + +typedef struct __MIDL___MIDL_itf_mpeg2data_0000_0019 *PMPEG_STREAM_BUFFER; + +typedef /* [public][public][public] */ struct __MIDL___MIDL_itf_mpeg2data_0000_0020 + { + BYTE Hours; + BYTE Minutes; + BYTE Seconds; + } MPEG_TIME; + +typedef MPEG_TIME MPEG_DURATION; + +typedef /* [public][public] */ struct __MIDL___MIDL_itf_mpeg2data_0000_0021 + { + BYTE Date; + BYTE Month; + WORD Year; + } MPEG_DATE; + +typedef /* [public] */ struct __MIDL___MIDL_itf_mpeg2data_0000_0022 + { + MPEG_DATE D; + MPEG_TIME T; + } MPEG_DATE_AND_TIME; + +typedef /* [public][public][public][public][public][public][public] */ +enum __MIDL___MIDL_itf_mpeg2data_0000_0023 + { MPEG_CONTEXT_BCS_DEMUX = 0, + MPEG_CONTEXT_WINSOCK = MPEG_CONTEXT_BCS_DEMUX + 1 + } MPEG_CONTEXT_TYPE; + +typedef /* [public][public][public][public][public][public][public] */ struct __MIDL___MIDL_itf_mpeg2data_0000_0024 + { + DWORD AVMGraphId; + } MPEG_BCS_DEMUX; + +typedef /* [public][public][public][public][public][public][public] */ struct __MIDL___MIDL_itf_mpeg2data_0000_0025 + { + DWORD AVMGraphId; + } MPEG_WINSOCK; + +typedef /* [public][public][public] */ struct __MIDL___MIDL_itf_mpeg2data_0000_0026 + { + MPEG_CONTEXT_TYPE Type; + union + { + MPEG_BCS_DEMUX Demux; + MPEG_WINSOCK Winsock; + } U; + } MPEG_CONTEXT; + +typedef struct __MIDL___MIDL_itf_mpeg2data_0000_0026 *PMPEG_CONTEXT; + +typedef /* [public][public][public][public][public] */ +enum __MIDL___MIDL_itf_mpeg2data_0000_0028 + { MPEG_RQST_UNKNOWN = 0, + MPEG_RQST_GET_SECTION = MPEG_RQST_UNKNOWN + 1, + MPEG_RQST_GET_SECTION_ASYNC = MPEG_RQST_GET_SECTION + 1, + MPEG_RQST_GET_TABLE = MPEG_RQST_GET_SECTION_ASYNC + 1, + MPEG_RQST_GET_TABLE_ASYNC = MPEG_RQST_GET_TABLE + 1, + MPEG_RQST_GET_SECTIONS_STREAM = MPEG_RQST_GET_TABLE_ASYNC + 1, + MPEG_RQST_GET_PES_STREAM = MPEG_RQST_GET_SECTIONS_STREAM + 1, + MPEG_RQST_GET_TS_STREAM = MPEG_RQST_GET_PES_STREAM + 1, + MPEG_RQST_START_MPE_STREAM = MPEG_RQST_GET_TS_STREAM + 1 + } MPEG_REQUEST_TYPE; + +typedef /* [public] */ struct __MIDL___MIDL_itf_mpeg2data_0000_0029 + { + MPEG_REQUEST_TYPE Type; + MPEG_CONTEXT Context; + PID Pid; + TID TableId; + MPEG2_FILTER Filter; + DWORD Flags; + } MPEG_SERVICE_REQUEST; + +typedef struct __MIDL___MIDL_itf_mpeg2data_0000_0029 *PMPEG_SERVICE_REQUEST; + +typedef /* [public] */ struct __MIDL___MIDL_itf_mpeg2data_0000_0030 + { + DWORD IPAddress; + WORD Port; + } MPEG_SERVICE_RESPONSE; + +typedef struct __MIDL___MIDL_itf_mpeg2data_0000_0030 *PMPEG_SERVICE_RESPONSE; + +typedef struct _DSMCC_ELEMENT + { + PID pid; + BYTE bComponentTag; + DWORD dwCarouselId; + DWORD dwTransactionId; + struct _DSMCC_ELEMENT *pNext; + } DSMCC_ELEMENT; + +typedef struct _DSMCC_ELEMENT *PDSMCC_ELEMENT; + +typedef struct _MPE_ELEMENT + { + PID pid; + BYTE bComponentTag; + struct _MPE_ELEMENT *pNext; + } MPE_ELEMENT; + +typedef struct _MPE_ELEMENT *PMPE_ELEMENT; + +typedef struct _MPEG_STREAM_FILTER + { + WORD wPidValue; + DWORD dwFilterSize; + BOOL fCrcEnabled; + BYTE rgchFilter[ 16 ]; + BYTE rgchMask[ 16 ]; + } MPEG_STREAM_FILTER; + + +EXTERN_C const IID LIBID_Mpeg2DataLib; + +#ifndef __IMpeg2Data_INTERFACE_DEFINED__ +#define __IMpeg2Data_INTERFACE_DEFINED__ + +/* interface IMpeg2Data */ +/* [unique][uuid][object] */ + + +EXTERN_C const IID IID_IMpeg2Data; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("9B396D40-F380-4e3c-A514-1A82BF6EBFE6") + IMpeg2Data : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE GetSection( + /* [in] */ PID pid, + /* [in] */ TID tid, + /* [in] */ PMPEG2_FILTER pFilter, + /* [in] */ DWORD dwTimeout, + /* [out] */ ISectionList **ppSectionList) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetTable( + /* [in] */ PID pid, + /* [in] */ TID tid, + /* [in] */ PMPEG2_FILTER pFilter, + /* [in] */ DWORD dwTimeout, + /* [out] */ ISectionList **ppSectionList) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetStreamOfSections( + /* [in] */ PID pid, + /* [in] */ TID tid, + /* [in] */ PMPEG2_FILTER pFilter, + /* [in] */ HANDLE hDataReadyEvent, + /* [out] */ IMpeg2Stream **ppMpegStream) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMpeg2DataVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMpeg2Data * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMpeg2Data * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMpeg2Data * This); + + HRESULT ( STDMETHODCALLTYPE *GetSection )( + IMpeg2Data * This, + /* [in] */ PID pid, + /* [in] */ TID tid, + /* [in] */ PMPEG2_FILTER pFilter, + /* [in] */ DWORD dwTimeout, + /* [out] */ ISectionList **ppSectionList); + + HRESULT ( STDMETHODCALLTYPE *GetTable )( + IMpeg2Data * This, + /* [in] */ PID pid, + /* [in] */ TID tid, + /* [in] */ PMPEG2_FILTER pFilter, + /* [in] */ DWORD dwTimeout, + /* [out] */ ISectionList **ppSectionList); + + HRESULT ( STDMETHODCALLTYPE *GetStreamOfSections )( + IMpeg2Data * This, + /* [in] */ PID pid, + /* [in] */ TID tid, + /* [in] */ PMPEG2_FILTER pFilter, + /* [in] */ HANDLE hDataReadyEvent, + /* [out] */ IMpeg2Stream **ppMpegStream); + + END_INTERFACE + } IMpeg2DataVtbl; + + interface IMpeg2Data + { + CONST_VTBL struct IMpeg2DataVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMpeg2Data_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IMpeg2Data_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IMpeg2Data_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IMpeg2Data_GetSection(This,pid,tid,pFilter,dwTimeout,ppSectionList) \ + (This)->lpVtbl -> GetSection(This,pid,tid,pFilter,dwTimeout,ppSectionList) + +#define IMpeg2Data_GetTable(This,pid,tid,pFilter,dwTimeout,ppSectionList) \ + (This)->lpVtbl -> GetTable(This,pid,tid,pFilter,dwTimeout,ppSectionList) + +#define IMpeg2Data_GetStreamOfSections(This,pid,tid,pFilter,hDataReadyEvent,ppMpegStream) \ + (This)->lpVtbl -> GetStreamOfSections(This,pid,tid,pFilter,hDataReadyEvent,ppMpegStream) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IMpeg2Data_GetSection_Proxy( + IMpeg2Data * This, + /* [in] */ PID pid, + /* [in] */ TID tid, + /* [in] */ PMPEG2_FILTER pFilter, + /* [in] */ DWORD dwTimeout, + /* [out] */ ISectionList **ppSectionList); + + +void __RPC_STUB IMpeg2Data_GetSection_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IMpeg2Data_GetTable_Proxy( + IMpeg2Data * This, + /* [in] */ PID pid, + /* [in] */ TID tid, + /* [in] */ PMPEG2_FILTER pFilter, + /* [in] */ DWORD dwTimeout, + /* [out] */ ISectionList **ppSectionList); + + +void __RPC_STUB IMpeg2Data_GetTable_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IMpeg2Data_GetStreamOfSections_Proxy( + IMpeg2Data * This, + /* [in] */ PID pid, + /* [in] */ TID tid, + /* [in] */ PMPEG2_FILTER pFilter, + /* [in] */ HANDLE hDataReadyEvent, + /* [out] */ IMpeg2Stream **ppMpegStream); + + +void __RPC_STUB IMpeg2Data_GetStreamOfSections_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IMpeg2Data_INTERFACE_DEFINED__ */ + + +#ifndef __ISectionList_INTERFACE_DEFINED__ +#define __ISectionList_INTERFACE_DEFINED__ + +/* interface ISectionList */ +/* [unique][uuid][object] */ + + +EXTERN_C const IID IID_ISectionList; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("AFEC1EB5-2A64-46c6-BF4B-AE3CCB6AFDB0") + ISectionList : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE Initialize( + /* [in] */ MPEG_REQUEST_TYPE requestType, + /* [in] */ IMpeg2Data *pMpeg2Data, + /* [in] */ PMPEG_CONTEXT pContext, + /* [in] */ PID pid, + /* [in] */ TID tid, + /* [in] */ PMPEG2_FILTER pFilter, + /* [in] */ DWORD timeout, + /* [in] */ HANDLE hDoneEvent) = 0; + + virtual HRESULT STDMETHODCALLTYPE InitializeWithRawSections( + /* [in] */ PMPEG_PACKET_LIST pmplSections) = 0; + + virtual HRESULT STDMETHODCALLTYPE CancelPendingRequest( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetNumberOfSections( + /* [out] */ WORD *pCount) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetSectionData( + /* [in] */ WORD sectionNumber, + /* [out] */ DWORD *pdwRawPacketLength, + /* [out] */ PSECTION *ppSection) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetProgramIdentifier( + PID *pPid) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetTableIdentifier( + TID *pTableId) = 0; + + }; + +#else /* C style interface */ + + typedef struct ISectionListVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ISectionList * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ISectionList * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ISectionList * This); + + HRESULT ( STDMETHODCALLTYPE *Initialize )( + ISectionList * This, + /* [in] */ MPEG_REQUEST_TYPE requestType, + /* [in] */ IMpeg2Data *pMpeg2Data, + /* [in] */ PMPEG_CONTEXT pContext, + /* [in] */ PID pid, + /* [in] */ TID tid, + /* [in] */ PMPEG2_FILTER pFilter, + /* [in] */ DWORD timeout, + /* [in] */ HANDLE hDoneEvent); + + HRESULT ( STDMETHODCALLTYPE *InitializeWithRawSections )( + ISectionList * This, + /* [in] */ PMPEG_PACKET_LIST pmplSections); + + HRESULT ( STDMETHODCALLTYPE *CancelPendingRequest )( + ISectionList * This); + + HRESULT ( STDMETHODCALLTYPE *GetNumberOfSections )( + ISectionList * This, + /* [out] */ WORD *pCount); + + HRESULT ( STDMETHODCALLTYPE *GetSectionData )( + ISectionList * This, + /* [in] */ WORD sectionNumber, + /* [out] */ DWORD *pdwRawPacketLength, + /* [out] */ PSECTION *ppSection); + + HRESULT ( STDMETHODCALLTYPE *GetProgramIdentifier )( + ISectionList * This, + PID *pPid); + + HRESULT ( STDMETHODCALLTYPE *GetTableIdentifier )( + ISectionList * This, + TID *pTableId); + + END_INTERFACE + } ISectionListVtbl; + + interface ISectionList + { + CONST_VTBL struct ISectionListVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ISectionList_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define ISectionList_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define ISectionList_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define ISectionList_Initialize(This,requestType,pMpeg2Data,pContext,pid,tid,pFilter,timeout,hDoneEvent) \ + (This)->lpVtbl -> Initialize(This,requestType,pMpeg2Data,pContext,pid,tid,pFilter,timeout,hDoneEvent) + +#define ISectionList_InitializeWithRawSections(This,pmplSections) \ + (This)->lpVtbl -> InitializeWithRawSections(This,pmplSections) + +#define ISectionList_CancelPendingRequest(This) \ + (This)->lpVtbl -> CancelPendingRequest(This) + +#define ISectionList_GetNumberOfSections(This,pCount) \ + (This)->lpVtbl -> GetNumberOfSections(This,pCount) + +#define ISectionList_GetSectionData(This,sectionNumber,pdwRawPacketLength,ppSection) \ + (This)->lpVtbl -> GetSectionData(This,sectionNumber,pdwRawPacketLength,ppSection) + +#define ISectionList_GetProgramIdentifier(This,pPid) \ + (This)->lpVtbl -> GetProgramIdentifier(This,pPid) + +#define ISectionList_GetTableIdentifier(This,pTableId) \ + (This)->lpVtbl -> GetTableIdentifier(This,pTableId) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE ISectionList_Initialize_Proxy( + ISectionList * This, + /* [in] */ MPEG_REQUEST_TYPE requestType, + /* [in] */ IMpeg2Data *pMpeg2Data, + /* [in] */ PMPEG_CONTEXT pContext, + /* [in] */ PID pid, + /* [in] */ TID tid, + /* [in] */ PMPEG2_FILTER pFilter, + /* [in] */ DWORD timeout, + /* [in] */ HANDLE hDoneEvent); + + +void __RPC_STUB ISectionList_Initialize_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ISectionList_InitializeWithRawSections_Proxy( + ISectionList * This, + /* [in] */ PMPEG_PACKET_LIST pmplSections); + + +void __RPC_STUB ISectionList_InitializeWithRawSections_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ISectionList_CancelPendingRequest_Proxy( + ISectionList * This); + + +void __RPC_STUB ISectionList_CancelPendingRequest_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ISectionList_GetNumberOfSections_Proxy( + ISectionList * This, + /* [out] */ WORD *pCount); + + +void __RPC_STUB ISectionList_GetNumberOfSections_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ISectionList_GetSectionData_Proxy( + ISectionList * This, + /* [in] */ WORD sectionNumber, + /* [out] */ DWORD *pdwRawPacketLength, + /* [out] */ PSECTION *ppSection); + + +void __RPC_STUB ISectionList_GetSectionData_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ISectionList_GetProgramIdentifier_Proxy( + ISectionList * This, + PID *pPid); + + +void __RPC_STUB ISectionList_GetProgramIdentifier_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ISectionList_GetTableIdentifier_Proxy( + ISectionList * This, + TID *pTableId); + + +void __RPC_STUB ISectionList_GetTableIdentifier_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __ISectionList_INTERFACE_DEFINED__ */ + + +#ifndef __IMpeg2Stream_INTERFACE_DEFINED__ +#define __IMpeg2Stream_INTERFACE_DEFINED__ + +/* interface IMpeg2Stream */ +/* [unique][uuid][object] */ + + +EXTERN_C const IID IID_IMpeg2Stream; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("400CC286-32A0-4ce4-9041-39571125A635") + IMpeg2Stream : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE Initialize( + /* [in] */ MPEG_REQUEST_TYPE requestType, + /* [in] */ IMpeg2Data *pMpeg2Data, + /* [in] */ PMPEG_CONTEXT pContext, + /* [in] */ PID pid, + /* [in] */ TID tid, + /* [in] */ PMPEG2_FILTER pFilter, + /* [in] */ HANDLE hDataReadyEvent) = 0; + + virtual HRESULT STDMETHODCALLTYPE SupplyDataBuffer( + /* [in] */ PMPEG_STREAM_BUFFER pStreamBuffer) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMpeg2StreamVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMpeg2Stream * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMpeg2Stream * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMpeg2Stream * This); + + HRESULT ( STDMETHODCALLTYPE *Initialize )( + IMpeg2Stream * This, + /* [in] */ MPEG_REQUEST_TYPE requestType, + /* [in] */ IMpeg2Data *pMpeg2Data, + /* [in] */ PMPEG_CONTEXT pContext, + /* [in] */ PID pid, + /* [in] */ TID tid, + /* [in] */ PMPEG2_FILTER pFilter, + /* [in] */ HANDLE hDataReadyEvent); + + HRESULT ( STDMETHODCALLTYPE *SupplyDataBuffer )( + IMpeg2Stream * This, + /* [in] */ PMPEG_STREAM_BUFFER pStreamBuffer); + + END_INTERFACE + } IMpeg2StreamVtbl; + + interface IMpeg2Stream + { + CONST_VTBL struct IMpeg2StreamVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMpeg2Stream_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IMpeg2Stream_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IMpeg2Stream_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IMpeg2Stream_Initialize(This,requestType,pMpeg2Data,pContext,pid,tid,pFilter,hDataReadyEvent) \ + (This)->lpVtbl -> Initialize(This,requestType,pMpeg2Data,pContext,pid,tid,pFilter,hDataReadyEvent) + +#define IMpeg2Stream_SupplyDataBuffer(This,pStreamBuffer) \ + (This)->lpVtbl -> SupplyDataBuffer(This,pStreamBuffer) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IMpeg2Stream_Initialize_Proxy( + IMpeg2Stream * This, + /* [in] */ MPEG_REQUEST_TYPE requestType, + /* [in] */ IMpeg2Data *pMpeg2Data, + /* [in] */ PMPEG_CONTEXT pContext, + /* [in] */ PID pid, + /* [in] */ TID tid, + /* [in] */ PMPEG2_FILTER pFilter, + /* [in] */ HANDLE hDataReadyEvent); + + +void __RPC_STUB IMpeg2Stream_Initialize_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IMpeg2Stream_SupplyDataBuffer_Proxy( + IMpeg2Stream * This, + /* [in] */ PMPEG_STREAM_BUFFER pStreamBuffer); + + +void __RPC_STUB IMpeg2Stream_SupplyDataBuffer_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IMpeg2Stream_INTERFACE_DEFINED__ */ + + +EXTERN_C const CLSID CLSID_SectionList; + +#ifdef __cplusplus + +class DECLSPEC_UUID("73DA5D04-4347-45d3-A9DC-FAE9DDBE558D") +SectionList; +#endif + +EXTERN_C const CLSID CLSID_Mpeg2Stream; + +#ifdef __cplusplus + +class DECLSPEC_UUID("F91D96C7-8509-4d0b-AB26-A0DD10904BB7") +Mpeg2Stream; +#endif + +EXTERN_C const CLSID CLSID_Mpeg2Data; + +#ifdef __cplusplus + +class DECLSPEC_UUID("C666E115-BB62-4027-A113-82D643FE2D99") +Mpeg2Data; +#endif +#endif /* __Mpeg2DataLib_LIBRARY_DEFINED__ */ + +/* interface __MIDL_itf_mpeg2data_0432 */ +/* [local] */ + + +#pragma pack(pop) + + +extern RPC_IF_HANDLE __MIDL_itf_mpeg2data_0432_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_mpeg2data_0432_v0_0_s_ifspec; + +/* Additional Prototypes for ALL interfaces */ + +/* end of Additional Prototypes */ + +#ifdef __cplusplus +} +#endif + +#endif + + diff --git a/videoInputSrcAndDemos/libs/DShow/Include/mpegtype.h b/videoInputSrcAndDemos/libs/DShow/Include/mpegtype.h index 9083837..4e79fcb 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/mpegtype.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/mpegtype.h @@ -1,119 +1,119 @@ -//------------------------------------------------------------------------------ -// File: MPEGType.h -// -// Desc: MPEG system stream compound type definition -// -// Copyright (c) 1996-2001, Microsoft Corporation. All rights reserved. -//------------------------------------------------------------------------------ - - -#ifndef __MPEGTYPE__ -#define __MPEGTYPE__ - -#ifdef __cplusplus -extern "C" { -#endif // __cplusplus - -// -// AM_MPEGSYSTEMTYPE defines the format block contents for -// data of type MEDIATYPE_MPEG1System when the format -// block GUID is FORMAT_MPEG1System -// -// The format block consists of elements of type -// AM_MPEGSYSTEMTYPE up to the length of the format block -// Each format block is 8-byte aligned from the start of -// the format block -// - -typedef struct tagAM_MPEGSTREAMTYPE -{ - DWORD dwStreamId; // Stream id of stream to process - DWORD dwReserved; // 8-byte alignment - AM_MEDIA_TYPE mt; // Type for substream - pbFormat is NULL - BYTE bFormat[1]; // Format data -} AM_MPEGSTREAMTYPE; - -typedef struct tagAM_MPEGSYSTEMTYPE -{ - DWORD dwBitRate; // Bits per second - DWORD cStreams; // Number of streams - AM_MPEGSTREAMTYPE Streams[1]; -} AM_MPEGSYSTEMTYPE; - -// -// Helper macros for AM_MPEGSTREAMTYPE -// -#define AM_MPEGSTREAMTYPE_ELEMENTLENGTH(pStreamType) \ - FIELD_OFFSET(AM_MPEGSTREAMTYPE, bFormat[(pStreamType)->mt.cbFormat]) -#define AM_MPEGSTREAMTYPE_NEXT(pStreamType) \ - ((AM_MPEGSTREAMTYPE *)((PBYTE)(pStreamType) + \ - ((AM_MPEGSTREAMTYPE_ELEMENTLENGTH(pStreamType) + 7) & ~7))) - -// -// IMpegAudioDecoder -// - -// Values for DualMode -#define AM_MPEG_AUDIO_DUAL_MERGE 0 -#define AM_MPEG_AUDIO_DUAL_LEFT 1 -#define AM_MPEG_AUDIO_DUAL_RIGHT 2 - -DECLARE_INTERFACE_(IMpegAudioDecoder, IUnknown) { - - STDMETHOD(get_FrequencyDivider) (THIS_ - unsigned long *pDivider /* [out] */ - ) PURE; - - STDMETHOD(put_FrequencyDivider) (THIS_ - unsigned long Divider /* [in] */ - ) PURE; - - STDMETHOD(get_DecoderAccuracy) (THIS_ - unsigned long *pAccuracy /* [out] */ - ) PURE; - - STDMETHOD(put_DecoderAccuracy) (THIS_ - unsigned long Accuracy /* [in] */ - ) PURE; - - STDMETHOD(get_Stereo) (THIS_ - unsigned long *pStereo /* [out] */ - ) PURE; - - STDMETHOD(put_Stereo) (THIS_ - unsigned long Stereo /* [in] */ - ) PURE; - - STDMETHOD(get_DecoderWordSize) (THIS_ - unsigned long *pWordSize /* [out] */ - ) PURE; - - STDMETHOD(put_DecoderWordSize) (THIS_ - unsigned long WordSize /* [in] */ - ) PURE; - - STDMETHOD(get_IntegerDecode) (THIS_ - unsigned long *pIntDecode /* [out] */ - ) PURE; - - STDMETHOD(put_IntegerDecode) (THIS_ - unsigned long IntDecode /* [in] */ - ) PURE; - - STDMETHOD(get_DualMode) (THIS_ - unsigned long *pIntDecode /* [out] */ - ) PURE; - - STDMETHOD(put_DualMode) (THIS_ - unsigned long IntDecode /* [in] */ - ) PURE; - - STDMETHOD(get_AudioFormat) (THIS_ - MPEG1WAVEFORMAT *lpFmt /* [out] */ - ) PURE; -}; - -#ifdef __cplusplus -} -#endif // __cplusplus -#endif // __MPEGTYPE__ +//------------------------------------------------------------------------------ +// File: MPEGType.h +// +// Desc: MPEG system stream compound type definition +// +// Copyright (c) 1996-2001, Microsoft Corporation. All rights reserved. +//------------------------------------------------------------------------------ + + +#ifndef __MPEGTYPE__ +#define __MPEGTYPE__ + +#ifdef __cplusplus +extern "C" { +#endif // __cplusplus + +// +// AM_MPEGSYSTEMTYPE defines the format block contents for +// data of type MEDIATYPE_MPEG1System when the format +// block GUID is FORMAT_MPEG1System +// +// The format block consists of elements of type +// AM_MPEGSYSTEMTYPE up to the length of the format block +// Each format block is 8-byte aligned from the start of +// the format block +// + +typedef struct tagAM_MPEGSTREAMTYPE +{ + DWORD dwStreamId; // Stream id of stream to process + DWORD dwReserved; // 8-byte alignment + AM_MEDIA_TYPE mt; // Type for substream - pbFormat is NULL + BYTE bFormat[1]; // Format data +} AM_MPEGSTREAMTYPE; + +typedef struct tagAM_MPEGSYSTEMTYPE +{ + DWORD dwBitRate; // Bits per second + DWORD cStreams; // Number of streams + AM_MPEGSTREAMTYPE Streams[1]; +} AM_MPEGSYSTEMTYPE; + +// +// Helper macros for AM_MPEGSTREAMTYPE +// +#define AM_MPEGSTREAMTYPE_ELEMENTLENGTH(pStreamType) \ + FIELD_OFFSET(AM_MPEGSTREAMTYPE, bFormat[(pStreamType)->mt.cbFormat]) +#define AM_MPEGSTREAMTYPE_NEXT(pStreamType) \ + ((AM_MPEGSTREAMTYPE *)((PBYTE)(pStreamType) + \ + ((AM_MPEGSTREAMTYPE_ELEMENTLENGTH(pStreamType) + 7) & ~7))) + +// +// IMpegAudioDecoder +// + +// Values for DualMode +#define AM_MPEG_AUDIO_DUAL_MERGE 0 +#define AM_MPEG_AUDIO_DUAL_LEFT 1 +#define AM_MPEG_AUDIO_DUAL_RIGHT 2 + +DECLARE_INTERFACE_(IMpegAudioDecoder, IUnknown) { + + STDMETHOD(get_FrequencyDivider) (THIS_ + unsigned long *pDivider /* [out] */ + ) PURE; + + STDMETHOD(put_FrequencyDivider) (THIS_ + unsigned long Divider /* [in] */ + ) PURE; + + STDMETHOD(get_DecoderAccuracy) (THIS_ + unsigned long *pAccuracy /* [out] */ + ) PURE; + + STDMETHOD(put_DecoderAccuracy) (THIS_ + unsigned long Accuracy /* [in] */ + ) PURE; + + STDMETHOD(get_Stereo) (THIS_ + unsigned long *pStereo /* [out] */ + ) PURE; + + STDMETHOD(put_Stereo) (THIS_ + unsigned long Stereo /* [in] */ + ) PURE; + + STDMETHOD(get_DecoderWordSize) (THIS_ + unsigned long *pWordSize /* [out] */ + ) PURE; + + STDMETHOD(put_DecoderWordSize) (THIS_ + unsigned long WordSize /* [in] */ + ) PURE; + + STDMETHOD(get_IntegerDecode) (THIS_ + unsigned long *pIntDecode /* [out] */ + ) PURE; + + STDMETHOD(put_IntegerDecode) (THIS_ + unsigned long IntDecode /* [in] */ + ) PURE; + + STDMETHOD(get_DualMode) (THIS_ + unsigned long *pIntDecode /* [out] */ + ) PURE; + + STDMETHOD(put_DualMode) (THIS_ + unsigned long IntDecode /* [in] */ + ) PURE; + + STDMETHOD(get_AudioFormat) (THIS_ + MPEG1WAVEFORMAT *lpFmt /* [out] */ + ) PURE; +}; + +#ifdef __cplusplus +} +#endif // __cplusplus +#endif // __MPEGTYPE__ diff --git a/videoInputSrcAndDemos/libs/DShow/Include/msgthrd.h b/videoInputSrcAndDemos/libs/DShow/Include/msgthrd.h index 5db5425..10f3f99 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/msgthrd.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/msgthrd.h @@ -1,120 +1,120 @@ -//------------------------------------------------------------------------------ -// File: MsgThrd.h -// -// Desc: DirectShow base classes - provides support for a worker thread -// class to which one can asynchronously post messages. -// -// Copyright (c) Microsoft Corporation. All rights reserved. -//------------------------------------------------------------------------------ - - -// Message class - really just a structure. -// -class CMsg { -public: - UINT uMsg; - DWORD dwFlags; - LPVOID lpParam; - CAMEvent *pEvent; - - CMsg(UINT u, DWORD dw, LPVOID lp, CAMEvent *pEvnt) - : uMsg(u), dwFlags(dw), lpParam(lp), pEvent(pEvnt) {} - - CMsg() - : uMsg(0), dwFlags(0L), lpParam(NULL), pEvent(NULL) {} -}; - -// This is the actual thread class. It exports all the usual thread control -// functions. The created thread is different from a normal WIN32 thread in -// that it is prompted to perform particaular tasks by responding to messages -// posted to its message queue. -// -class CMsgThread { -private: - static DWORD WINAPI DefaultThreadProc(LPVOID lpParam); - DWORD m_ThreadId; - HANDLE m_hThread; - -protected: - - // if you want to override GetThreadMsg to block on other things - // as well as this queue, you need access to this - CGenericList m_ThreadQueue; - CCritSec m_Lock; - HANDLE m_hSem; - LONG m_lWaiting; - -public: - CMsgThread() - : m_ThreadId(0), - m_hThread(NULL), - m_lWaiting(0), - m_hSem(NULL), - // make a list with a cache of 5 items - m_ThreadQueue(NAME("MsgThread list"), 5) - { - } - - ~CMsgThread(); - // override this if you want to block on other things as well - // as the message loop - void virtual GetThreadMsg(CMsg *msg); - - // override this if you want to do something on thread startup - virtual void OnThreadInit() { - }; - - BOOL CreateThread(); - - BOOL WaitForThreadExit(LPDWORD lpdwExitCode) { - if (m_hThread != NULL) { - WaitForSingleObject(m_hThread, INFINITE); - return GetExitCodeThread(m_hThread, lpdwExitCode); - } - return FALSE; - } - - DWORD ResumeThread() { - return ::ResumeThread(m_hThread); - } - - DWORD SuspendThread() { - return ::SuspendThread(m_hThread); - } - - int GetThreadPriority() { - return ::GetThreadPriority(m_hThread); - } - - BOOL SetThreadPriority(int nPriority) { - return ::SetThreadPriority(m_hThread, nPriority); - } - - HANDLE GetThreadHandle() { - return m_hThread; - } - - DWORD GetThreadId() { - return m_ThreadId; - } - - - void PutThreadMsg(UINT uMsg, DWORD dwMsgFlags, - LPVOID lpMsgParam, CAMEvent *pEvent = NULL) { - CAutoLock lck(&m_Lock); - CMsg* pMsg = new CMsg(uMsg, dwMsgFlags, lpMsgParam, pEvent); - m_ThreadQueue.AddTail(pMsg); - if (m_lWaiting != 0) { - ReleaseSemaphore(m_hSem, m_lWaiting, 0); - m_lWaiting = 0; - } - } - - // This is the function prototype of the function that the client - // supplies. It is always called on the created thread, never on - // the creator thread. - // - virtual LRESULT ThreadMessageProc( - UINT uMsg, DWORD dwFlags, LPVOID lpParam, CAMEvent *pEvent) = 0; -}; - +//------------------------------------------------------------------------------ +// File: MsgThrd.h +// +// Desc: DirectShow base classes - provides support for a worker thread +// class to which one can asynchronously post messages. +// +// Copyright (c) Microsoft Corporation. All rights reserved. +//------------------------------------------------------------------------------ + + +// Message class - really just a structure. +// +class CMsg { +public: + UINT uMsg; + DWORD dwFlags; + LPVOID lpParam; + CAMEvent *pEvent; + + CMsg(UINT u, DWORD dw, LPVOID lp, CAMEvent *pEvnt) + : uMsg(u), dwFlags(dw), lpParam(lp), pEvent(pEvnt) {} + + CMsg() + : uMsg(0), dwFlags(0L), lpParam(NULL), pEvent(NULL) {} +}; + +// This is the actual thread class. It exports all the usual thread control +// functions. The created thread is different from a normal WIN32 thread in +// that it is prompted to perform particaular tasks by responding to messages +// posted to its message queue. +// +class CMsgThread { +private: + static DWORD WINAPI DefaultThreadProc(LPVOID lpParam); + DWORD m_ThreadId; + HANDLE m_hThread; + +protected: + + // if you want to override GetThreadMsg to block on other things + // as well as this queue, you need access to this + CGenericList m_ThreadQueue; + CCritSec m_Lock; + HANDLE m_hSem; + LONG m_lWaiting; + +public: + CMsgThread() + : m_ThreadId(0), + m_hThread(NULL), + m_lWaiting(0), + m_hSem(NULL), + // make a list with a cache of 5 items + m_ThreadQueue(NAME("MsgThread list"), 5) + { + } + + ~CMsgThread(); + // override this if you want to block on other things as well + // as the message loop + void virtual GetThreadMsg(CMsg *msg); + + // override this if you want to do something on thread startup + virtual void OnThreadInit() { + }; + + BOOL CreateThread(); + + BOOL WaitForThreadExit(LPDWORD lpdwExitCode) { + if (m_hThread != NULL) { + WaitForSingleObject(m_hThread, INFINITE); + return GetExitCodeThread(m_hThread, lpdwExitCode); + } + return FALSE; + } + + DWORD ResumeThread() { + return ::ResumeThread(m_hThread); + } + + DWORD SuspendThread() { + return ::SuspendThread(m_hThread); + } + + int GetThreadPriority() { + return ::GetThreadPriority(m_hThread); + } + + BOOL SetThreadPriority(int nPriority) { + return ::SetThreadPriority(m_hThread, nPriority); + } + + HANDLE GetThreadHandle() { + return m_hThread; + } + + DWORD GetThreadId() { + return m_ThreadId; + } + + + void PutThreadMsg(UINT uMsg, DWORD dwMsgFlags, + LPVOID lpMsgParam, CAMEvent *pEvent = NULL) { + CAutoLock lck(&m_Lock); + CMsg* pMsg = new CMsg(uMsg, dwMsgFlags, lpMsgParam, pEvent); + m_ThreadQueue.AddTail(pMsg); + if (m_lWaiting != 0) { + ReleaseSemaphore(m_hSem, m_lWaiting, 0); + m_lWaiting = 0; + } + } + + // This is the function prototype of the function that the client + // supplies. It is always called on the created thread, never on + // the creator thread. + // + virtual LRESULT ThreadMessageProc( + UINT uMsg, DWORD dwFlags, LPVOID lpParam, CAMEvent *pEvent) = 0; +}; + diff --git a/videoInputSrcAndDemos/libs/DShow/Include/mtype.h b/videoInputSrcAndDemos/libs/DShow/Include/mtype.h index 7a8a239..41d5829 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/mtype.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/mtype.h @@ -1,89 +1,89 @@ -//------------------------------------------------------------------------------ -// File: MtType.h -// -// Desc: DirectShow base classes - defines a class that holds and manages -// media type information. -// -// Copyright (c) Microsoft Corporation. All rights reserved. -//------------------------------------------------------------------------------ - - -#ifndef __MTYPE__ -#define __MTYPE__ - -/* Helper class that derived pin objects can use to compare media - types etc. Has same data members as the struct AM_MEDIA_TYPE defined - in the streams IDL file, but also has (non-virtual) functions */ - -class CMediaType : public _AMMediaType { - -public: - - ~CMediaType(); - CMediaType(); - CMediaType(const GUID * majortype); - CMediaType(const AM_MEDIA_TYPE&, HRESULT* phr = NULL); - CMediaType(const CMediaType&, HRESULT* phr = NULL); - - CMediaType& operator=(const CMediaType&); - CMediaType& operator=(const AM_MEDIA_TYPE&); - - BOOL operator == (const CMediaType&) const; - BOOL operator != (const CMediaType&) const; - - HRESULT Set(const CMediaType& rt); - HRESULT Set(const AM_MEDIA_TYPE& rt); - - BOOL IsValid() const; - - const GUID *Type() const { return &majortype;} ; - void SetType(const GUID *); - const GUID *Subtype() const { return &subtype;} ; - void SetSubtype(const GUID *); - - BOOL IsFixedSize() const {return bFixedSizeSamples; }; - BOOL IsTemporalCompressed() const {return bTemporalCompression; }; - ULONG GetSampleSize() const; - - void SetSampleSize(ULONG sz); - void SetVariableSize(); - void SetTemporalCompression(BOOL bCompressed); - - // read/write pointer to format - can't change length without - // calling SetFormat, AllocFormatBuffer or ReallocFormatBuffer - - BYTE* Format() const {return pbFormat; }; - ULONG FormatLength() const { return cbFormat; }; - - void SetFormatType(const GUID *); - const GUID *FormatType() const {return &formattype; }; - BOOL SetFormat(BYTE *pFormat, ULONG length); - void ResetFormatBuffer(); - BYTE* AllocFormatBuffer(ULONG length); - BYTE* ReallocFormatBuffer(ULONG length); - - void InitMediaType(); - - BOOL MatchesPartial(const CMediaType* ppartial) const; - BOOL IsPartiallySpecified(void) const; -}; - - -/* General purpose functions to copy and delete a task allocated AM_MEDIA_TYPE - structure which is useful when using the IEnumMediaFormats interface as - the implementation allocates the structures which you must later delete */ - -void WINAPI DeleteMediaType(AM_MEDIA_TYPE *pmt); -AM_MEDIA_TYPE * WINAPI CreateMediaType(AM_MEDIA_TYPE const *pSrc); -HRESULT WINAPI CopyMediaType(AM_MEDIA_TYPE *pmtTarget, const AM_MEDIA_TYPE *pmtSource); -void WINAPI FreeMediaType(AM_MEDIA_TYPE& mt); - -// Initialize a media type from a WAVEFORMATEX - -STDAPI CreateAudioMediaType( - const WAVEFORMATEX *pwfx, - AM_MEDIA_TYPE *pmt, - BOOL bSetFormat); - -#endif /* __MTYPE__ */ - +//------------------------------------------------------------------------------ +// File: MtType.h +// +// Desc: DirectShow base classes - defines a class that holds and manages +// media type information. +// +// Copyright (c) Microsoft Corporation. All rights reserved. +//------------------------------------------------------------------------------ + + +#ifndef __MTYPE__ +#define __MTYPE__ + +/* Helper class that derived pin objects can use to compare media + types etc. Has same data members as the struct AM_MEDIA_TYPE defined + in the streams IDL file, but also has (non-virtual) functions */ + +class CMediaType : public _AMMediaType { + +public: + + ~CMediaType(); + CMediaType(); + CMediaType(const GUID * majortype); + CMediaType(const AM_MEDIA_TYPE&, HRESULT* phr = NULL); + CMediaType(const CMediaType&, HRESULT* phr = NULL); + + CMediaType& operator=(const CMediaType&); + CMediaType& operator=(const AM_MEDIA_TYPE&); + + BOOL operator == (const CMediaType&) const; + BOOL operator != (const CMediaType&) const; + + HRESULT Set(const CMediaType& rt); + HRESULT Set(const AM_MEDIA_TYPE& rt); + + BOOL IsValid() const; + + const GUID *Type() const { return &majortype;} ; + void SetType(const GUID *); + const GUID *Subtype() const { return &subtype;} ; + void SetSubtype(const GUID *); + + BOOL IsFixedSize() const {return bFixedSizeSamples; }; + BOOL IsTemporalCompressed() const {return bTemporalCompression; }; + ULONG GetSampleSize() const; + + void SetSampleSize(ULONG sz); + void SetVariableSize(); + void SetTemporalCompression(BOOL bCompressed); + + // read/write pointer to format - can't change length without + // calling SetFormat, AllocFormatBuffer or ReallocFormatBuffer + + BYTE* Format() const {return pbFormat; }; + ULONG FormatLength() const { return cbFormat; }; + + void SetFormatType(const GUID *); + const GUID *FormatType() const {return &formattype; }; + BOOL SetFormat(BYTE *pFormat, ULONG length); + void ResetFormatBuffer(); + BYTE* AllocFormatBuffer(ULONG length); + BYTE* ReallocFormatBuffer(ULONG length); + + void InitMediaType(); + + BOOL MatchesPartial(const CMediaType* ppartial) const; + BOOL IsPartiallySpecified(void) const; +}; + + +/* General purpose functions to copy and delete a task allocated AM_MEDIA_TYPE + structure which is useful when using the IEnumMediaFormats interface as + the implementation allocates the structures which you must later delete */ + +void WINAPI DeleteMediaType(AM_MEDIA_TYPE *pmt); +AM_MEDIA_TYPE * WINAPI CreateMediaType(AM_MEDIA_TYPE const *pSrc); +HRESULT WINAPI CopyMediaType(AM_MEDIA_TYPE *pmtTarget, const AM_MEDIA_TYPE *pmtSource); +void WINAPI FreeMediaType(AM_MEDIA_TYPE& mt); + +// Initialize a media type from a WAVEFORMATEX + +STDAPI CreateAudioMediaType( + const WAVEFORMATEX *pwfx, + AM_MEDIA_TYPE *pmt, + BOOL bSetFormat); + +#endif /* __MTYPE__ */ + diff --git a/videoInputSrcAndDemos/libs/DShow/Include/multimon.h b/videoInputSrcAndDemos/libs/DShow/Include/multimon.h index 83fa9dd..88e2862 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/multimon.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/multimon.h @@ -1,484 +1,484 @@ -//============================================================================= -// -// multimon.h -- Stub module that fakes multiple monitor apis on Win32 OSes -// without them. -// -// By using this header your code will get back default values from -// GetSystemMetrics() for new metrics, and the new multimonitor APIs -// will act like only one display is present on a Win32 OS without -// multimonitor APIs. -// -// Exactly one source must include this with COMPILE_MULTIMON_STUBS defined. -// -// Copyright (c) Microsoft Corporation. All rights reserved. -// -//============================================================================= - -#ifdef __cplusplus -extern "C" { // Assume C declarations for C++ -#endif // __cplusplus - -// -// If we are building with Win95/NT4 headers, we need to declare -// the multimonitor-related metrics and APIs ourselves. -// -#ifndef SM_CMONITORS - -#define SM_XVIRTUALSCREEN 76 -#define SM_YVIRTUALSCREEN 77 -#define SM_CXVIRTUALSCREEN 78 -#define SM_CYVIRTUALSCREEN 79 -#define SM_CMONITORS 80 -#define SM_SAMEDISPLAYFORMAT 81 - -// HMONITOR is already declared if WINVER >= 0x0500 in windef.h -// This is for components built with an older version number. -// -#if !defined(HMONITOR_DECLARED) && (WINVER < 0x0500) -DECLARE_HANDLE(HMONITOR); -#define HMONITOR_DECLARED -#endif - -#define MONITOR_DEFAULTTONULL 0x00000000 -#define MONITOR_DEFAULTTOPRIMARY 0x00000001 -#define MONITOR_DEFAULTTONEAREST 0x00000002 - -#define MONITORINFOF_PRIMARY 0x00000001 - -typedef struct tagMONITORINFO -{ - DWORD cbSize; - RECT rcMonitor; - RECT rcWork; - DWORD dwFlags; -} MONITORINFO, *LPMONITORINFO; - -#ifndef CCHDEVICENAME -#define CCHDEVICENAME 32 -#endif - -#ifdef __cplusplus -typedef struct tagMONITORINFOEXA : public tagMONITORINFO -{ - CHAR szDevice[CCHDEVICENAME]; -} MONITORINFOEXA, *LPMONITORINFOEXA; -typedef struct tagMONITORINFOEXW : public tagMONITORINFO -{ - WCHAR szDevice[CCHDEVICENAME]; -} MONITORINFOEXW, *LPMONITORINFOEXW; -#ifdef UNICODE -typedef MONITORINFOEXW MONITORINFOEX; -typedef LPMONITORINFOEXW LPMONITORINFOEX; -#else -typedef MONITORINFOEXA MONITORINFOEX; -typedef LPMONITORINFOEXA LPMONITORINFOEX; -#endif // UNICODE -#else // ndef __cplusplus -typedef struct tagMONITORINFOEXA -{ - MONITORINFO; - CHAR szDevice[CCHDEVICENAME]; -} MONITORINFOEXA, *LPMONITORINFOEXA; -typedef struct tagMONITORINFOEXW -{ - MONITORINFO; - WCHAR szDevice[CCHDEVICENAME]; -} MONITORINFOEXW, *LPMONITORINFOEXW; -#ifdef UNICODE -typedef MONITORINFOEXW MONITORINFOEX; -typedef LPMONITORINFOEXW LPMONITORINFOEX; -#else -typedef MONITORINFOEXA MONITORINFOEX; -typedef LPMONITORINFOEXA LPMONITORINFOEX; -#endif // UNICODE -#endif - -typedef BOOL (CALLBACK* MONITORENUMPROC)(HMONITOR, HDC, LPRECT, LPARAM); - -#ifndef DISPLAY_DEVICE_ATTACHED_TO_DESKTOP -typedef struct _DISPLAY_DEVICEA { - DWORD cb; - CHAR DeviceName[32]; - CHAR DeviceString[128]; - DWORD StateFlags; - CHAR DeviceID[128]; - CHAR DeviceKey[128]; -} DISPLAY_DEVICEA, *PDISPLAY_DEVICEA, *LPDISPLAY_DEVICEA; -typedef struct _DISPLAY_DEVICEW { - DWORD cb; - WCHAR DeviceName[32]; - WCHAR DeviceString[128]; - DWORD StateFlags; - WCHAR DeviceID[128]; - WCHAR DeviceKey[128]; -} DISPLAY_DEVICEW, *PDISPLAY_DEVICEW, *LPDISPLAY_DEVICEW; -#ifdef UNICODE -typedef DISPLAY_DEVICEW DISPLAY_DEVICE; -typedef PDISPLAY_DEVICEW PDISPLAY_DEVICE; -typedef LPDISPLAY_DEVICEW LPDISPLAY_DEVICE; -#else -typedef DISPLAY_DEVICEA DISPLAY_DEVICE; -typedef PDISPLAY_DEVICEA PDISPLAY_DEVICE; -typedef LPDISPLAY_DEVICEA LPDISPLAY_DEVICE; -#endif // UNICODE - -#define DISPLAY_DEVICE_ATTACHED_TO_DESKTOP 0x00000001 -#define DISPLAY_DEVICE_MULTI_DRIVER 0x00000002 -#define DISPLAY_DEVICE_PRIMARY_DEVICE 0x00000004 -#define DISPLAY_DEVICE_MIRRORING_DRIVER 0x00000008 -#define DISPLAY_DEVICE_VGA_COMPATIBLE 0x00000010 -#endif - -#endif // SM_CMONITORS - -#undef GetMonitorInfo -#undef GetSystemMetrics -#undef MonitorFromWindow -#undef MonitorFromRect -#undef MonitorFromPoint -#undef EnumDisplayMonitors -#undef EnumDisplayDevices - -// -// Define COMPILE_MULTIMON_STUBS to compile the stubs; -// otherwise, you get the declarations. -// -#ifdef COMPILE_MULTIMON_STUBS - -//----------------------------------------------------------------------------- -// -// Implement the API stubs. -// -//----------------------------------------------------------------------------- - -#ifndef MULTIMON_FNS_DEFINED - -int (WINAPI* g_pfnGetSystemMetrics)(int) = NULL; -HMONITOR (WINAPI* g_pfnMonitorFromWindow)(HWND, DWORD) = NULL; -HMONITOR (WINAPI* g_pfnMonitorFromRect)(LPCRECT, DWORD) = NULL; -HMONITOR (WINAPI* g_pfnMonitorFromPoint)(POINT, DWORD) = NULL; -BOOL (WINAPI* g_pfnGetMonitorInfo)(HMONITOR, LPMONITORINFO) = NULL; -BOOL (WINAPI* g_pfnEnumDisplayMonitors)(HDC, LPCRECT, MONITORENUMPROC, LPARAM) = NULL; -BOOL (WINAPI* g_pfnEnumDisplayDevices)(PVOID, DWORD, PDISPLAY_DEVICE,DWORD) = NULL; -BOOL g_fMultiMonInitDone = FALSE; -BOOL g_fMultimonPlatformNT = FALSE; - -#endif - -BOOL IsPlatformNT() -{ - OSVERSIONINFOA osvi = {0}; - osvi.dwOSVersionInfoSize = sizeof(osvi); - GetVersionExA((OSVERSIONINFOA*)&osvi); - return (VER_PLATFORM_WIN32_NT == osvi.dwPlatformId); -} - -BOOL InitMultipleMonitorStubs(void) -{ - HMODULE hUser32; - if (g_fMultiMonInitDone) - { - return g_pfnGetMonitorInfo != NULL; - } - - g_fMultimonPlatformNT = IsPlatformNT(); - hUser32 = GetModuleHandle(TEXT("USER32")); - if (hUser32 && - (*(FARPROC*)&g_pfnGetSystemMetrics = GetProcAddress(hUser32,"GetSystemMetrics")) != NULL && - (*(FARPROC*)&g_pfnMonitorFromWindow = GetProcAddress(hUser32,"MonitorFromWindow")) != NULL && - (*(FARPROC*)&g_pfnMonitorFromRect = GetProcAddress(hUser32,"MonitorFromRect")) != NULL && - (*(FARPROC*)&g_pfnMonitorFromPoint = GetProcAddress(hUser32,"MonitorFromPoint")) != NULL && - (*(FARPROC*)&g_pfnEnumDisplayMonitors = GetProcAddress(hUser32,"EnumDisplayMonitors")) != NULL && -#ifdef UNICODE - (*(FARPROC*)&g_pfnEnumDisplayDevices = GetProcAddress(hUser32,"EnumDisplayDevicesW")) != NULL && - (*(FARPROC*)&g_pfnGetMonitorInfo = g_fMultimonPlatformNT ? GetProcAddress(hUser32,"GetMonitorInfoW") : - GetProcAddress(hUser32,"GetMonitorInfoA")) != NULL -#else - (*(FARPROC*)&g_pfnGetMonitorInfo = GetProcAddress(hUser32,"GetMonitorInfoA")) != NULL && - (*(FARPROC*)&g_pfnEnumDisplayDevices = GetProcAddress(hUser32,"EnumDisplayDevicesA")) != NULL -#endif - ) { - g_fMultiMonInitDone = TRUE; - return TRUE; - } - else - { - g_pfnGetSystemMetrics = NULL; - g_pfnMonitorFromWindow = NULL; - g_pfnMonitorFromRect = NULL; - g_pfnMonitorFromPoint = NULL; - g_pfnGetMonitorInfo = NULL; - g_pfnEnumDisplayMonitors = NULL; - g_pfnEnumDisplayDevices = NULL; - - g_fMultiMonInitDone = TRUE; - return FALSE; - } -} - -//----------------------------------------------------------------------------- -// -// fake implementations of Monitor APIs that work with the primary display -// no special parameter validation is made since these run in client code -// -//----------------------------------------------------------------------------- - -int WINAPI -xGetSystemMetrics(int nIndex) -{ - if (InitMultipleMonitorStubs()) - return g_pfnGetSystemMetrics(nIndex); - - switch (nIndex) - { - case SM_CMONITORS: - case SM_SAMEDISPLAYFORMAT: - return 1; - - case SM_XVIRTUALSCREEN: - case SM_YVIRTUALSCREEN: - return 0; - - case SM_CXVIRTUALSCREEN: - nIndex = SM_CXSCREEN; - break; - - case SM_CYVIRTUALSCREEN: - nIndex = SM_CYSCREEN; - break; - } - - return GetSystemMetrics(nIndex); -} - -#define xPRIMARY_MONITOR ((HMONITOR)0x12340042) - -HMONITOR WINAPI -xMonitorFromPoint(POINT ptScreenCoords, DWORD dwFlags) -{ - if (InitMultipleMonitorStubs()) - return g_pfnMonitorFromPoint(ptScreenCoords, dwFlags); - - if ((dwFlags & (MONITOR_DEFAULTTOPRIMARY | MONITOR_DEFAULTTONEAREST)) || - ((ptScreenCoords.x >= 0) && - (ptScreenCoords.x < GetSystemMetrics(SM_CXSCREEN)) && - (ptScreenCoords.y >= 0) && - (ptScreenCoords.y < GetSystemMetrics(SM_CYSCREEN)))) - { - return xPRIMARY_MONITOR; - } - - return NULL; -} - -HMONITOR WINAPI -xMonitorFromRect(LPCRECT lprcScreenCoords, DWORD dwFlags) -{ - if (InitMultipleMonitorStubs()) - return g_pfnMonitorFromRect(lprcScreenCoords, dwFlags); - - if ((dwFlags & (MONITOR_DEFAULTTOPRIMARY | MONITOR_DEFAULTTONEAREST)) || - ((lprcScreenCoords->right > 0) && - (lprcScreenCoords->bottom > 0) && - (lprcScreenCoords->left < GetSystemMetrics(SM_CXSCREEN)) && - (lprcScreenCoords->top < GetSystemMetrics(SM_CYSCREEN)))) - { - return xPRIMARY_MONITOR; - } - - return NULL; -} - -HMONITOR WINAPI -xMonitorFromWindow(HWND hWnd, DWORD dwFlags) -{ - WINDOWPLACEMENT wp; - - if (InitMultipleMonitorStubs()) - return g_pfnMonitorFromWindow(hWnd, dwFlags); - - if (dwFlags & (MONITOR_DEFAULTTOPRIMARY | MONITOR_DEFAULTTONEAREST)) - return xPRIMARY_MONITOR; - - if (IsIconic(hWnd) ? - GetWindowPlacement(hWnd, &wp) : - GetWindowRect(hWnd, &wp.rcNormalPosition)) { - - return xMonitorFromRect(&wp.rcNormalPosition, dwFlags); - } - - return NULL; -} - -BOOL WINAPI -xGetMonitorInfo(HMONITOR hMonitor, LPMONITORINFO lpMonitorInfo) -{ - RECT rcWork; - - if (InitMultipleMonitorStubs()) - { - BOOL f = g_pfnGetMonitorInfo(hMonitor, lpMonitorInfo); -#ifdef UNICODE - if (f && !g_fMultimonPlatformNT && (lpMonitorInfo->cbSize >= sizeof(MONITORINFOEX))) - { - MultiByteToWideChar(CP_ACP, 0, - (LPSTR)((MONITORINFOEX*)lpMonitorInfo)->szDevice, -1, - ((MONITORINFOEX*)lpMonitorInfo)->szDevice, (sizeof(((MONITORINFOEX*)lpMonitorInfo)->szDevice)/sizeof(TCHAR))); - } -#endif - return f; - } - - if ((hMonitor == xPRIMARY_MONITOR) && - lpMonitorInfo && - (lpMonitorInfo->cbSize >= sizeof(MONITORINFO)) && - SystemParametersInfoA(SPI_GETWORKAREA, 0, &rcWork, 0)) - { - lpMonitorInfo->rcMonitor.left = 0; - lpMonitorInfo->rcMonitor.top = 0; - lpMonitorInfo->rcMonitor.right = GetSystemMetrics(SM_CXSCREEN); - lpMonitorInfo->rcMonitor.bottom = GetSystemMetrics(SM_CYSCREEN); - lpMonitorInfo->rcWork = rcWork; - lpMonitorInfo->dwFlags = MONITORINFOF_PRIMARY; - - if (lpMonitorInfo->cbSize >= sizeof(MONITORINFOEX)) - { -#ifdef UNICODE - MultiByteToWideChar(CP_ACP, 0, "DISPLAY", -1, ((MONITORINFOEX*)lpMonitorInfo)->szDevice, (sizeof(((MONITORINFOEX*)lpMonitorInfo)->szDevice)/sizeof(TCHAR))); -#else // UNICODE - lstrcpy(((MONITORINFOEX*)lpMonitorInfo)->szDevice, TEXT("DISPLAY")); -#endif // UNICODE - } - - return TRUE; - } - - return FALSE; -} - -BOOL WINAPI -xEnumDisplayMonitors( - HDC hdcOptionalForPainting, - LPCRECT lprcEnumMonitorsThatIntersect, - MONITORENUMPROC lpfnEnumProc, - LPARAM dwData) -{ - RECT rcLimit; - - if (InitMultipleMonitorStubs()) { - return g_pfnEnumDisplayMonitors( - hdcOptionalForPainting, - lprcEnumMonitorsThatIntersect, - lpfnEnumProc, - dwData); - } - - if (!lpfnEnumProc) - return FALSE; - - rcLimit.left = 0; - rcLimit.top = 0; - rcLimit.right = GetSystemMetrics(SM_CXSCREEN); - rcLimit.bottom = GetSystemMetrics(SM_CYSCREEN); - - if (hdcOptionalForPainting) - { - RECT rcClip; - POINT ptOrg; - - switch (GetClipBox(hdcOptionalForPainting, &rcClip)) - { - default: - if (!GetDCOrgEx(hdcOptionalForPainting, &ptOrg)) - return FALSE; - - OffsetRect(&rcLimit, -ptOrg.x, -ptOrg.y); - if (IntersectRect(&rcLimit, &rcLimit, &rcClip) && - (!lprcEnumMonitorsThatIntersect || - IntersectRect(&rcLimit, &rcLimit, lprcEnumMonitorsThatIntersect))) { - - break; - } - //fall thru - case NULLREGION: - return TRUE; - case ERROR: - return FALSE; - } - } else { - if ( lprcEnumMonitorsThatIntersect && - !IntersectRect(&rcLimit, &rcLimit, lprcEnumMonitorsThatIntersect)) { - - return TRUE; - } - } - - return lpfnEnumProc( - xPRIMARY_MONITOR, - hdcOptionalForPainting, - &rcLimit, - dwData); -} - -BOOL WINAPI -xEnumDisplayDevices( - PVOID Unused, - DWORD iDevNum, - PDISPLAY_DEVICE lpDisplayDevice, - DWORD dwFlags) -{ - if (InitMultipleMonitorStubs()) - return g_pfnEnumDisplayDevices(Unused, iDevNum, lpDisplayDevice, dwFlags); - - if (Unused != NULL) - return FALSE; - - if (iDevNum != 0) - return FALSE; - - if (lpDisplayDevice == NULL || lpDisplayDevice->cb < sizeof(DISPLAY_DEVICE)) - return FALSE; - -#ifdef UNICODE - MultiByteToWideChar(CP_ACP, 0, "DISPLAY", -1, lpDisplayDevice->DeviceName, (sizeof(lpDisplayDevice->DeviceName)/sizeof(TCHAR))); - MultiByteToWideChar(CP_ACP, 0, "DISPLAY", -1, lpDisplayDevice->DeviceString, (sizeof(lpDisplayDevice->DeviceName)/sizeof(TCHAR))); -#else // UNICODE - lstrcpy((LPTSTR)lpDisplayDevice->DeviceName, TEXT("DISPLAY")); - lstrcpy((LPTSTR)lpDisplayDevice->DeviceString, TEXT("DISPLAY")); -#endif // UNICODE - - lpDisplayDevice->StateFlags = DISPLAY_DEVICE_ATTACHED_TO_DESKTOP | DISPLAY_DEVICE_PRIMARY_DEVICE; - - return TRUE; -} - -#undef xPRIMARY_MONITOR -#undef COMPILE_MULTIMON_STUBS - -#else // COMPILE_MULTIMON_STUBS - -extern int WINAPI xGetSystemMetrics(int); -extern HMONITOR WINAPI xMonitorFromWindow(HWND, DWORD); -extern HMONITOR WINAPI xMonitorFromRect(LPCRECT, DWORD); -extern HMONITOR WINAPI xMonitorFromPoint(POINT, DWORD); -extern BOOL WINAPI xGetMonitorInfo(HMONITOR, LPMONITORINFO); -extern BOOL WINAPI xEnumDisplayMonitors(HDC, LPCRECT, MONITORENUMPROC, LPARAM); -extern BOOL WINAPI xEnumDisplayDevices(PVOID, DWORD, PDISPLAY_DEVICE, DWORD); - -#endif // COMPILE_MULTIMON_STUBS - -// -// build defines that replace the regular APIs with our versions -// -#define GetSystemMetrics xGetSystemMetrics -#define MonitorFromWindow xMonitorFromWindow -#define MonitorFromRect xMonitorFromRect -#define MonitorFromPoint xMonitorFromPoint -#define GetMonitorInfo xGetMonitorInfo -#define EnumDisplayMonitors xEnumDisplayMonitors -#define EnumDisplayDevices xEnumDisplayDevices - -#ifdef __cplusplus -} -#endif // __cplusplus - +//============================================================================= +// +// multimon.h -- Stub module that fakes multiple monitor apis on Win32 OSes +// without them. +// +// By using this header your code will get back default values from +// GetSystemMetrics() for new metrics, and the new multimonitor APIs +// will act like only one display is present on a Win32 OS without +// multimonitor APIs. +// +// Exactly one source must include this with COMPILE_MULTIMON_STUBS defined. +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// +//============================================================================= + +#ifdef __cplusplus +extern "C" { // Assume C declarations for C++ +#endif // __cplusplus + +// +// If we are building with Win95/NT4 headers, we need to declare +// the multimonitor-related metrics and APIs ourselves. +// +#ifndef SM_CMONITORS + +#define SM_XVIRTUALSCREEN 76 +#define SM_YVIRTUALSCREEN 77 +#define SM_CXVIRTUALSCREEN 78 +#define SM_CYVIRTUALSCREEN 79 +#define SM_CMONITORS 80 +#define SM_SAMEDISPLAYFORMAT 81 + +// HMONITOR is already declared if WINVER >= 0x0500 in windef.h +// This is for components built with an older version number. +// +#if !defined(HMONITOR_DECLARED) && (WINVER < 0x0500) +DECLARE_HANDLE(HMONITOR); +#define HMONITOR_DECLARED +#endif + +#define MONITOR_DEFAULTTONULL 0x00000000 +#define MONITOR_DEFAULTTOPRIMARY 0x00000001 +#define MONITOR_DEFAULTTONEAREST 0x00000002 + +#define MONITORINFOF_PRIMARY 0x00000001 + +typedef struct tagMONITORINFO +{ + DWORD cbSize; + RECT rcMonitor; + RECT rcWork; + DWORD dwFlags; +} MONITORINFO, *LPMONITORINFO; + +#ifndef CCHDEVICENAME +#define CCHDEVICENAME 32 +#endif + +#ifdef __cplusplus +typedef struct tagMONITORINFOEXA : public tagMONITORINFO +{ + CHAR szDevice[CCHDEVICENAME]; +} MONITORINFOEXA, *LPMONITORINFOEXA; +typedef struct tagMONITORINFOEXW : public tagMONITORINFO +{ + WCHAR szDevice[CCHDEVICENAME]; +} MONITORINFOEXW, *LPMONITORINFOEXW; +#ifdef UNICODE +typedef MONITORINFOEXW MONITORINFOEX; +typedef LPMONITORINFOEXW LPMONITORINFOEX; +#else +typedef MONITORINFOEXA MONITORINFOEX; +typedef LPMONITORINFOEXA LPMONITORINFOEX; +#endif // UNICODE +#else // ndef __cplusplus +typedef struct tagMONITORINFOEXA +{ + MONITORINFO; + CHAR szDevice[CCHDEVICENAME]; +} MONITORINFOEXA, *LPMONITORINFOEXA; +typedef struct tagMONITORINFOEXW +{ + MONITORINFO; + WCHAR szDevice[CCHDEVICENAME]; +} MONITORINFOEXW, *LPMONITORINFOEXW; +#ifdef UNICODE +typedef MONITORINFOEXW MONITORINFOEX; +typedef LPMONITORINFOEXW LPMONITORINFOEX; +#else +typedef MONITORINFOEXA MONITORINFOEX; +typedef LPMONITORINFOEXA LPMONITORINFOEX; +#endif // UNICODE +#endif + +typedef BOOL (CALLBACK* MONITORENUMPROC)(HMONITOR, HDC, LPRECT, LPARAM); + +#ifndef DISPLAY_DEVICE_ATTACHED_TO_DESKTOP +typedef struct _DISPLAY_DEVICEA { + DWORD cb; + CHAR DeviceName[32]; + CHAR DeviceString[128]; + DWORD StateFlags; + CHAR DeviceID[128]; + CHAR DeviceKey[128]; +} DISPLAY_DEVICEA, *PDISPLAY_DEVICEA, *LPDISPLAY_DEVICEA; +typedef struct _DISPLAY_DEVICEW { + DWORD cb; + WCHAR DeviceName[32]; + WCHAR DeviceString[128]; + DWORD StateFlags; + WCHAR DeviceID[128]; + WCHAR DeviceKey[128]; +} DISPLAY_DEVICEW, *PDISPLAY_DEVICEW, *LPDISPLAY_DEVICEW; +#ifdef UNICODE +typedef DISPLAY_DEVICEW DISPLAY_DEVICE; +typedef PDISPLAY_DEVICEW PDISPLAY_DEVICE; +typedef LPDISPLAY_DEVICEW LPDISPLAY_DEVICE; +#else +typedef DISPLAY_DEVICEA DISPLAY_DEVICE; +typedef PDISPLAY_DEVICEA PDISPLAY_DEVICE; +typedef LPDISPLAY_DEVICEA LPDISPLAY_DEVICE; +#endif // UNICODE + +#define DISPLAY_DEVICE_ATTACHED_TO_DESKTOP 0x00000001 +#define DISPLAY_DEVICE_MULTI_DRIVER 0x00000002 +#define DISPLAY_DEVICE_PRIMARY_DEVICE 0x00000004 +#define DISPLAY_DEVICE_MIRRORING_DRIVER 0x00000008 +#define DISPLAY_DEVICE_VGA_COMPATIBLE 0x00000010 +#endif + +#endif // SM_CMONITORS + +#undef GetMonitorInfo +#undef GetSystemMetrics +#undef MonitorFromWindow +#undef MonitorFromRect +#undef MonitorFromPoint +#undef EnumDisplayMonitors +#undef EnumDisplayDevices + +// +// Define COMPILE_MULTIMON_STUBS to compile the stubs; +// otherwise, you get the declarations. +// +#ifdef COMPILE_MULTIMON_STUBS + +//----------------------------------------------------------------------------- +// +// Implement the API stubs. +// +//----------------------------------------------------------------------------- + +#ifndef MULTIMON_FNS_DEFINED + +int (WINAPI* g_pfnGetSystemMetrics)(int) = NULL; +HMONITOR (WINAPI* g_pfnMonitorFromWindow)(HWND, DWORD) = NULL; +HMONITOR (WINAPI* g_pfnMonitorFromRect)(LPCRECT, DWORD) = NULL; +HMONITOR (WINAPI* g_pfnMonitorFromPoint)(POINT, DWORD) = NULL; +BOOL (WINAPI* g_pfnGetMonitorInfo)(HMONITOR, LPMONITORINFO) = NULL; +BOOL (WINAPI* g_pfnEnumDisplayMonitors)(HDC, LPCRECT, MONITORENUMPROC, LPARAM) = NULL; +BOOL (WINAPI* g_pfnEnumDisplayDevices)(PVOID, DWORD, PDISPLAY_DEVICE,DWORD) = NULL; +BOOL g_fMultiMonInitDone = FALSE; +BOOL g_fMultimonPlatformNT = FALSE; + +#endif + +BOOL IsPlatformNT() +{ + OSVERSIONINFOA osvi = {0}; + osvi.dwOSVersionInfoSize = sizeof(osvi); + GetVersionExA((OSVERSIONINFOA*)&osvi); + return (VER_PLATFORM_WIN32_NT == osvi.dwPlatformId); +} + +BOOL InitMultipleMonitorStubs(void) +{ + HMODULE hUser32; + if (g_fMultiMonInitDone) + { + return g_pfnGetMonitorInfo != NULL; + } + + g_fMultimonPlatformNT = IsPlatformNT(); + hUser32 = GetModuleHandle(TEXT("USER32")); + if (hUser32 && + (*(FARPROC*)&g_pfnGetSystemMetrics = GetProcAddress(hUser32,"GetSystemMetrics")) != NULL && + (*(FARPROC*)&g_pfnMonitorFromWindow = GetProcAddress(hUser32,"MonitorFromWindow")) != NULL && + (*(FARPROC*)&g_pfnMonitorFromRect = GetProcAddress(hUser32,"MonitorFromRect")) != NULL && + (*(FARPROC*)&g_pfnMonitorFromPoint = GetProcAddress(hUser32,"MonitorFromPoint")) != NULL && + (*(FARPROC*)&g_pfnEnumDisplayMonitors = GetProcAddress(hUser32,"EnumDisplayMonitors")) != NULL && +#ifdef UNICODE + (*(FARPROC*)&g_pfnEnumDisplayDevices = GetProcAddress(hUser32,"EnumDisplayDevicesW")) != NULL && + (*(FARPROC*)&g_pfnGetMonitorInfo = g_fMultimonPlatformNT ? GetProcAddress(hUser32,"GetMonitorInfoW") : + GetProcAddress(hUser32,"GetMonitorInfoA")) != NULL +#else + (*(FARPROC*)&g_pfnGetMonitorInfo = GetProcAddress(hUser32,"GetMonitorInfoA")) != NULL && + (*(FARPROC*)&g_pfnEnumDisplayDevices = GetProcAddress(hUser32,"EnumDisplayDevicesA")) != NULL +#endif + ) { + g_fMultiMonInitDone = TRUE; + return TRUE; + } + else + { + g_pfnGetSystemMetrics = NULL; + g_pfnMonitorFromWindow = NULL; + g_pfnMonitorFromRect = NULL; + g_pfnMonitorFromPoint = NULL; + g_pfnGetMonitorInfo = NULL; + g_pfnEnumDisplayMonitors = NULL; + g_pfnEnumDisplayDevices = NULL; + + g_fMultiMonInitDone = TRUE; + return FALSE; + } +} + +//----------------------------------------------------------------------------- +// +// fake implementations of Monitor APIs that work with the primary display +// no special parameter validation is made since these run in client code +// +//----------------------------------------------------------------------------- + +int WINAPI +xGetSystemMetrics(int nIndex) +{ + if (InitMultipleMonitorStubs()) + return g_pfnGetSystemMetrics(nIndex); + + switch (nIndex) + { + case SM_CMONITORS: + case SM_SAMEDISPLAYFORMAT: + return 1; + + case SM_XVIRTUALSCREEN: + case SM_YVIRTUALSCREEN: + return 0; + + case SM_CXVIRTUALSCREEN: + nIndex = SM_CXSCREEN; + break; + + case SM_CYVIRTUALSCREEN: + nIndex = SM_CYSCREEN; + break; + } + + return GetSystemMetrics(nIndex); +} + +#define xPRIMARY_MONITOR ((HMONITOR)0x12340042) + +HMONITOR WINAPI +xMonitorFromPoint(POINT ptScreenCoords, DWORD dwFlags) +{ + if (InitMultipleMonitorStubs()) + return g_pfnMonitorFromPoint(ptScreenCoords, dwFlags); + + if ((dwFlags & (MONITOR_DEFAULTTOPRIMARY | MONITOR_DEFAULTTONEAREST)) || + ((ptScreenCoords.x >= 0) && + (ptScreenCoords.x < GetSystemMetrics(SM_CXSCREEN)) && + (ptScreenCoords.y >= 0) && + (ptScreenCoords.y < GetSystemMetrics(SM_CYSCREEN)))) + { + return xPRIMARY_MONITOR; + } + + return NULL; +} + +HMONITOR WINAPI +xMonitorFromRect(LPCRECT lprcScreenCoords, DWORD dwFlags) +{ + if (InitMultipleMonitorStubs()) + return g_pfnMonitorFromRect(lprcScreenCoords, dwFlags); + + if ((dwFlags & (MONITOR_DEFAULTTOPRIMARY | MONITOR_DEFAULTTONEAREST)) || + ((lprcScreenCoords->right > 0) && + (lprcScreenCoords->bottom > 0) && + (lprcScreenCoords->left < GetSystemMetrics(SM_CXSCREEN)) && + (lprcScreenCoords->top < GetSystemMetrics(SM_CYSCREEN)))) + { + return xPRIMARY_MONITOR; + } + + return NULL; +} + +HMONITOR WINAPI +xMonitorFromWindow(HWND hWnd, DWORD dwFlags) +{ + WINDOWPLACEMENT wp; + + if (InitMultipleMonitorStubs()) + return g_pfnMonitorFromWindow(hWnd, dwFlags); + + if (dwFlags & (MONITOR_DEFAULTTOPRIMARY | MONITOR_DEFAULTTONEAREST)) + return xPRIMARY_MONITOR; + + if (IsIconic(hWnd) ? + GetWindowPlacement(hWnd, &wp) : + GetWindowRect(hWnd, &wp.rcNormalPosition)) { + + return xMonitorFromRect(&wp.rcNormalPosition, dwFlags); + } + + return NULL; +} + +BOOL WINAPI +xGetMonitorInfo(HMONITOR hMonitor, LPMONITORINFO lpMonitorInfo) +{ + RECT rcWork; + + if (InitMultipleMonitorStubs()) + { + BOOL f = g_pfnGetMonitorInfo(hMonitor, lpMonitorInfo); +#ifdef UNICODE + if (f && !g_fMultimonPlatformNT && (lpMonitorInfo->cbSize >= sizeof(MONITORINFOEX))) + { + MultiByteToWideChar(CP_ACP, 0, + (LPSTR)((MONITORINFOEX*)lpMonitorInfo)->szDevice, -1, + ((MONITORINFOEX*)lpMonitorInfo)->szDevice, (sizeof(((MONITORINFOEX*)lpMonitorInfo)->szDevice)/sizeof(TCHAR))); + } +#endif + return f; + } + + if ((hMonitor == xPRIMARY_MONITOR) && + lpMonitorInfo && + (lpMonitorInfo->cbSize >= sizeof(MONITORINFO)) && + SystemParametersInfoA(SPI_GETWORKAREA, 0, &rcWork, 0)) + { + lpMonitorInfo->rcMonitor.left = 0; + lpMonitorInfo->rcMonitor.top = 0; + lpMonitorInfo->rcMonitor.right = GetSystemMetrics(SM_CXSCREEN); + lpMonitorInfo->rcMonitor.bottom = GetSystemMetrics(SM_CYSCREEN); + lpMonitorInfo->rcWork = rcWork; + lpMonitorInfo->dwFlags = MONITORINFOF_PRIMARY; + + if (lpMonitorInfo->cbSize >= sizeof(MONITORINFOEX)) + { +#ifdef UNICODE + MultiByteToWideChar(CP_ACP, 0, "DISPLAY", -1, ((MONITORINFOEX*)lpMonitorInfo)->szDevice, (sizeof(((MONITORINFOEX*)lpMonitorInfo)->szDevice)/sizeof(TCHAR))); +#else // UNICODE + lstrcpy(((MONITORINFOEX*)lpMonitorInfo)->szDevice, TEXT("DISPLAY")); +#endif // UNICODE + } + + return TRUE; + } + + return FALSE; +} + +BOOL WINAPI +xEnumDisplayMonitors( + HDC hdcOptionalForPainting, + LPCRECT lprcEnumMonitorsThatIntersect, + MONITORENUMPROC lpfnEnumProc, + LPARAM dwData) +{ + RECT rcLimit; + + if (InitMultipleMonitorStubs()) { + return g_pfnEnumDisplayMonitors( + hdcOptionalForPainting, + lprcEnumMonitorsThatIntersect, + lpfnEnumProc, + dwData); + } + + if (!lpfnEnumProc) + return FALSE; + + rcLimit.left = 0; + rcLimit.top = 0; + rcLimit.right = GetSystemMetrics(SM_CXSCREEN); + rcLimit.bottom = GetSystemMetrics(SM_CYSCREEN); + + if (hdcOptionalForPainting) + { + RECT rcClip; + POINT ptOrg; + + switch (GetClipBox(hdcOptionalForPainting, &rcClip)) + { + default: + if (!GetDCOrgEx(hdcOptionalForPainting, &ptOrg)) + return FALSE; + + OffsetRect(&rcLimit, -ptOrg.x, -ptOrg.y); + if (IntersectRect(&rcLimit, &rcLimit, &rcClip) && + (!lprcEnumMonitorsThatIntersect || + IntersectRect(&rcLimit, &rcLimit, lprcEnumMonitorsThatIntersect))) { + + break; + } + //fall thru + case NULLREGION: + return TRUE; + case ERROR: + return FALSE; + } + } else { + if ( lprcEnumMonitorsThatIntersect && + !IntersectRect(&rcLimit, &rcLimit, lprcEnumMonitorsThatIntersect)) { + + return TRUE; + } + } + + return lpfnEnumProc( + xPRIMARY_MONITOR, + hdcOptionalForPainting, + &rcLimit, + dwData); +} + +BOOL WINAPI +xEnumDisplayDevices( + PVOID Unused, + DWORD iDevNum, + PDISPLAY_DEVICE lpDisplayDevice, + DWORD dwFlags) +{ + if (InitMultipleMonitorStubs()) + return g_pfnEnumDisplayDevices(Unused, iDevNum, lpDisplayDevice, dwFlags); + + if (Unused != NULL) + return FALSE; + + if (iDevNum != 0) + return FALSE; + + if (lpDisplayDevice == NULL || lpDisplayDevice->cb < sizeof(DISPLAY_DEVICE)) + return FALSE; + +#ifdef UNICODE + MultiByteToWideChar(CP_ACP, 0, "DISPLAY", -1, lpDisplayDevice->DeviceName, (sizeof(lpDisplayDevice->DeviceName)/sizeof(TCHAR))); + MultiByteToWideChar(CP_ACP, 0, "DISPLAY", -1, lpDisplayDevice->DeviceString, (sizeof(lpDisplayDevice->DeviceName)/sizeof(TCHAR))); +#else // UNICODE + lstrcpy((LPTSTR)lpDisplayDevice->DeviceName, TEXT("DISPLAY")); + lstrcpy((LPTSTR)lpDisplayDevice->DeviceString, TEXT("DISPLAY")); +#endif // UNICODE + + lpDisplayDevice->StateFlags = DISPLAY_DEVICE_ATTACHED_TO_DESKTOP | DISPLAY_DEVICE_PRIMARY_DEVICE; + + return TRUE; +} + +#undef xPRIMARY_MONITOR +#undef COMPILE_MULTIMON_STUBS + +#else // COMPILE_MULTIMON_STUBS + +extern int WINAPI xGetSystemMetrics(int); +extern HMONITOR WINAPI xMonitorFromWindow(HWND, DWORD); +extern HMONITOR WINAPI xMonitorFromRect(LPCRECT, DWORD); +extern HMONITOR WINAPI xMonitorFromPoint(POINT, DWORD); +extern BOOL WINAPI xGetMonitorInfo(HMONITOR, LPMONITORINFO); +extern BOOL WINAPI xEnumDisplayMonitors(HDC, LPCRECT, MONITORENUMPROC, LPARAM); +extern BOOL WINAPI xEnumDisplayDevices(PVOID, DWORD, PDISPLAY_DEVICE, DWORD); + +#endif // COMPILE_MULTIMON_STUBS + +// +// build defines that replace the regular APIs with our versions +// +#define GetSystemMetrics xGetSystemMetrics +#define MonitorFromWindow xMonitorFromWindow +#define MonitorFromRect xMonitorFromRect +#define MonitorFromPoint xMonitorFromPoint +#define GetMonitorInfo xGetMonitorInfo +#define EnumDisplayMonitors xEnumDisplayMonitors +#define EnumDisplayDevices xEnumDisplayDevices + +#ifdef __cplusplus +} +#endif // __cplusplus + diff --git a/videoInputSrcAndDemos/libs/DShow/Include/outputq.h b/videoInputSrcAndDemos/libs/DShow/Include/outputq.h index d021922..3869fa7 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/outputq.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/outputq.h @@ -1,137 +1,137 @@ -//------------------------------------------------------------------------------ -// File: OutputQ.h -// -// Desc: DirectShow base classes - defines the COutputQueue class, which -// makes a queue of samples and sends them to an output pin. The -// class will optionally send the samples to the pin directly. -// -// Copyright (c) Microsoft Corporation. All rights reserved. -//------------------------------------------------------------------------------ - - -typedef CGenericList CSampleList; - -class COutputQueue : public CCritSec -{ -public: - // Constructor - COutputQueue(IPin *pInputPin, // Pin to send stuff to - HRESULT *phr, // 'Return code' - BOOL bAuto = TRUE, // Ask pin if blocks - BOOL bQueue = TRUE, // Send through queue (ignored if - // bAuto set) - LONG lBatchSize = 1, // Batch - BOOL bBatchExact = FALSE,// Batch exactly to BatchSize - LONG lListSize = // Likely number in the list - DEFAULTCACHE, - DWORD dwPriority = // Priority of thread to create - THREAD_PRIORITY_NORMAL, - bool bFlushingOpt = false // flushing optimization - ); - ~COutputQueue(); - - // enter flush state - discard all data - void BeginFlush(); // Begin flushing samples - - // re-enable receives (pass this downstream) - void EndFlush(); // Complete flush of samples - downstream - // pin guaranteed not to block at this stage - - void EOS(); // Call this on End of stream - - void SendAnyway(); // Send batched samples anyway (if bBatchExact set) - - void NewSegment( - REFERENCE_TIME tStart, - REFERENCE_TIME tStop, - double dRate); - - HRESULT Receive(IMediaSample *pSample); - - // do something with these media samples - HRESULT ReceiveMultiple ( - IMediaSample **pSamples, - long nSamples, - long *nSamplesProcessed); - - void Reset(); // Reset m_hr ready for more data - - // See if its idle or not - BOOL IsIdle(); - - // give the class an event to fire after everything removed from the queue - void SetPopEvent(HANDLE hEvent); - -protected: - static DWORD WINAPI InitialThreadProc(LPVOID pv); - DWORD ThreadProc(); - BOOL IsQueued() - { - return m_List != NULL; - } - - // The critical section MUST be held when this is called - void QueueSample(IMediaSample *pSample); - - BOOL IsSpecialSample(IMediaSample *pSample) - { - return (DWORD_PTR)pSample > (DWORD_PTR)(LONG_PTR)(-16); - } - - // Remove and Release() batched and queued samples - void FreeSamples(); - - // Notify the thread there is something to do - void NotifyThread(); - - -protected: - // Queue 'messages' - #define SEND_PACKET ((IMediaSample *)(LONG_PTR)(-2)) // Send batch - #define EOS_PACKET ((IMediaSample *)(LONG_PTR)(-3)) // End of stream - #define RESET_PACKET ((IMediaSample *)(LONG_PTR)(-4)) // Reset m_hr - #define NEW_SEGMENT ((IMediaSample *)(LONG_PTR)(-5)) // send NewSegment - - // new segment packet is always followed by one of these - struct NewSegmentPacket { - REFERENCE_TIME tStart; - REFERENCE_TIME tStop; - double dRate; - }; - - // Remember input stuff - IPin * const m_pPin; - IMemInputPin * m_pInputPin; - BOOL const m_bBatchExact; - LONG const m_lBatchSize; - - CSampleList * m_List; - HANDLE m_hSem; - CAMEvent m_evFlushComplete; - HANDLE m_hThread; - IMediaSample ** m_ppSamples; - LONG m_nBatched; - - // Wait optimization - LONG m_lWaiting; - // Flush synchronization - BOOL m_bFlushing; - - // flushing optimization. some downstream filters have trouble - // with the queue's flushing optimization. other rely on it - BOOL m_bFlushed; - bool m_bFlushingOpt; - - // Terminate now - BOOL m_bTerminate; - - // Send anyway flag for batching - BOOL m_bSendAnyway; - - // Deferred 'return code' - BOOL volatile m_hr; - - // an event that can be fired after every deliver - HANDLE m_hEventPop; -}; - +//------------------------------------------------------------------------------ +// File: OutputQ.h +// +// Desc: DirectShow base classes - defines the COutputQueue class, which +// makes a queue of samples and sends them to an output pin. The +// class will optionally send the samples to the pin directly. +// +// Copyright (c) Microsoft Corporation. All rights reserved. +//------------------------------------------------------------------------------ + + +typedef CGenericList CSampleList; + +class COutputQueue : public CCritSec +{ +public: + // Constructor + COutputQueue(IPin *pInputPin, // Pin to send stuff to + HRESULT *phr, // 'Return code' + BOOL bAuto = TRUE, // Ask pin if blocks + BOOL bQueue = TRUE, // Send through queue (ignored if + // bAuto set) + LONG lBatchSize = 1, // Batch + BOOL bBatchExact = FALSE,// Batch exactly to BatchSize + LONG lListSize = // Likely number in the list + DEFAULTCACHE, + DWORD dwPriority = // Priority of thread to create + THREAD_PRIORITY_NORMAL, + bool bFlushingOpt = false // flushing optimization + ); + ~COutputQueue(); + + // enter flush state - discard all data + void BeginFlush(); // Begin flushing samples + + // re-enable receives (pass this downstream) + void EndFlush(); // Complete flush of samples - downstream + // pin guaranteed not to block at this stage + + void EOS(); // Call this on End of stream + + void SendAnyway(); // Send batched samples anyway (if bBatchExact set) + + void NewSegment( + REFERENCE_TIME tStart, + REFERENCE_TIME tStop, + double dRate); + + HRESULT Receive(IMediaSample *pSample); + + // do something with these media samples + HRESULT ReceiveMultiple ( + IMediaSample **pSamples, + long nSamples, + long *nSamplesProcessed); + + void Reset(); // Reset m_hr ready for more data + + // See if its idle or not + BOOL IsIdle(); + + // give the class an event to fire after everything removed from the queue + void SetPopEvent(HANDLE hEvent); + +protected: + static DWORD WINAPI InitialThreadProc(LPVOID pv); + DWORD ThreadProc(); + BOOL IsQueued() + { + return m_List != NULL; + } + + // The critical section MUST be held when this is called + void QueueSample(IMediaSample *pSample); + + BOOL IsSpecialSample(IMediaSample *pSample) + { + return (DWORD_PTR)pSample > (DWORD_PTR)(LONG_PTR)(-16); + } + + // Remove and Release() batched and queued samples + void FreeSamples(); + + // Notify the thread there is something to do + void NotifyThread(); + + +protected: + // Queue 'messages' + #define SEND_PACKET ((IMediaSample *)(LONG_PTR)(-2)) // Send batch + #define EOS_PACKET ((IMediaSample *)(LONG_PTR)(-3)) // End of stream + #define RESET_PACKET ((IMediaSample *)(LONG_PTR)(-4)) // Reset m_hr + #define NEW_SEGMENT ((IMediaSample *)(LONG_PTR)(-5)) // send NewSegment + + // new segment packet is always followed by one of these + struct NewSegmentPacket { + REFERENCE_TIME tStart; + REFERENCE_TIME tStop; + double dRate; + }; + + // Remember input stuff + IPin * const m_pPin; + IMemInputPin * m_pInputPin; + BOOL const m_bBatchExact; + LONG const m_lBatchSize; + + CSampleList * m_List; + HANDLE m_hSem; + CAMEvent m_evFlushComplete; + HANDLE m_hThread; + IMediaSample ** m_ppSamples; + LONG m_nBatched; + + // Wait optimization + LONG m_lWaiting; + // Flush synchronization + BOOL m_bFlushing; + + // flushing optimization. some downstream filters have trouble + // with the queue's flushing optimization. other rely on it + BOOL m_bFlushed; + bool m_bFlushingOpt; + + // Terminate now + BOOL m_bTerminate; + + // Send anyway flag for batching + BOOL m_bSendAnyway; + + // Deferred 'return code' + BOOL volatile m_hr; + + // an event that can be fired after every deliver + HANDLE m_hEventPop; +}; + diff --git a/videoInputSrcAndDemos/libs/DShow/Include/playlist.h b/videoInputSrcAndDemos/libs/DShow/Include/playlist.h index fa2dca6..1a796f3 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/playlist.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/playlist.h @@ -1,849 +1,849 @@ - -#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 5.03.0279 */ -/* at Sat Jul 31 00:39:47 1999 - */ -/* Compiler settings for playlist.idl: - Oicf (OptLev=i2), W1, Zp8, env=Win32 (32b run), 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 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 -#endif // __RPCNDR_H_VERSION__ - -#ifndef COM_NO_WINDOWS_H -#include "windows.h" -#include "ole2.h" -#endif /*COM_NO_WINDOWS_H*/ - -#ifndef __playlist_h__ -#define __playlist_h__ - -/* Forward Declarations */ - -#ifndef __IAMPlayListItem_FWD_DEFINED__ -#define __IAMPlayListItem_FWD_DEFINED__ -typedef interface IAMPlayListItem IAMPlayListItem; -#endif /* __IAMPlayListItem_FWD_DEFINED__ */ - - -#ifndef __IAMPlayList_FWD_DEFINED__ -#define __IAMPlayList_FWD_DEFINED__ -typedef interface IAMPlayList IAMPlayList; -#endif /* __IAMPlayList_FWD_DEFINED__ */ - - -#ifndef __ISpecifyParticularPages_FWD_DEFINED__ -#define __ISpecifyParticularPages_FWD_DEFINED__ -typedef interface ISpecifyParticularPages ISpecifyParticularPages; -#endif /* __ISpecifyParticularPages_FWD_DEFINED__ */ - - -#ifndef __IAMRebuild_FWD_DEFINED__ -#define __IAMRebuild_FWD_DEFINED__ -typedef interface IAMRebuild IAMRebuild; -#endif /* __IAMRebuild_FWD_DEFINED__ */ - - -/* header files for imported files */ -#include "unknwn.h" -#include "strmif.h" - -#ifdef __cplusplus -extern "C"{ -#endif - -void __RPC_FAR * __RPC_USER MIDL_user_allocate(size_t); -void __RPC_USER MIDL_user_free( void __RPC_FAR * ); - -/* interface __MIDL_itf_playlist_0000 */ -/* [local] */ - - -enum AMPlayListItemFlags - { AMPLAYLISTITEM_CANSKIP = 0x1, - AMPLAYLISTITEM_CANBIND = 0x2 - }; - - -extern RPC_IF_HANDLE __MIDL_itf_playlist_0000_v0_0_c_ifspec; -extern RPC_IF_HANDLE __MIDL_itf_playlist_0000_v0_0_s_ifspec; - -#ifndef __IAMPlayListItem_INTERFACE_DEFINED__ -#define __IAMPlayListItem_INTERFACE_DEFINED__ - -/* interface IAMPlayListItem */ -/* [unique][uuid][object] */ - - -EXTERN_C const IID IID_IAMPlayListItem; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("56a868ff-0ad4-11ce-b03a-0020af0ba770") - IAMPlayListItem : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE GetFlags( - /* [out] */ DWORD __RPC_FAR *pdwFlags) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetSourceCount( - /* [out] */ DWORD __RPC_FAR *pdwSources) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetSourceURL( - /* [in] */ DWORD dwSourceIndex, - /* [out] */ BSTR __RPC_FAR *pbstrURL) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetSourceStart( - /* [in] */ DWORD dwSourceIndex, - /* [out] */ REFERENCE_TIME __RPC_FAR *prtStart) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetSourceDuration( - /* [in] */ DWORD dwSourceIndex, - /* [out] */ REFERENCE_TIME __RPC_FAR *prtDuration) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetSourceStartMarker( - /* [in] */ DWORD dwSourceIndex, - /* [out] */ DWORD __RPC_FAR *pdwMarker) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetSourceEndMarker( - /* [in] */ DWORD dwSourceIndex, - /* [out] */ DWORD __RPC_FAR *pdwMarker) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetSourceStartMarkerName( - /* [in] */ DWORD dwSourceIndex, - /* [out] */ BSTR __RPC_FAR *pbstrStartMarker) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetSourceEndMarkerName( - /* [in] */ DWORD dwSourceIndex, - /* [out] */ BSTR __RPC_FAR *pbstrEndMarker) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetLinkURL( - /* [out] */ BSTR __RPC_FAR *pbstrURL) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetScanDuration( - /* [in] */ DWORD dwSourceIndex, - /* [out] */ REFERENCE_TIME __RPC_FAR *prtScanDuration) = 0; - - }; - -#else /* C style interface */ - - typedef struct IAMPlayListItemVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )( - IAMPlayListItem __RPC_FAR * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject); - - ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )( - IAMPlayListItem __RPC_FAR * This); - - ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )( - IAMPlayListItem __RPC_FAR * This); - - HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetFlags )( - IAMPlayListItem __RPC_FAR * This, - /* [out] */ DWORD __RPC_FAR *pdwFlags); - - HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetSourceCount )( - IAMPlayListItem __RPC_FAR * This, - /* [out] */ DWORD __RPC_FAR *pdwSources); - - HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetSourceURL )( - IAMPlayListItem __RPC_FAR * This, - /* [in] */ DWORD dwSourceIndex, - /* [out] */ BSTR __RPC_FAR *pbstrURL); - - HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetSourceStart )( - IAMPlayListItem __RPC_FAR * This, - /* [in] */ DWORD dwSourceIndex, - /* [out] */ REFERENCE_TIME __RPC_FAR *prtStart); - - HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetSourceDuration )( - IAMPlayListItem __RPC_FAR * This, - /* [in] */ DWORD dwSourceIndex, - /* [out] */ REFERENCE_TIME __RPC_FAR *prtDuration); - - HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetSourceStartMarker )( - IAMPlayListItem __RPC_FAR * This, - /* [in] */ DWORD dwSourceIndex, - /* [out] */ DWORD __RPC_FAR *pdwMarker); - - HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetSourceEndMarker )( - IAMPlayListItem __RPC_FAR * This, - /* [in] */ DWORD dwSourceIndex, - /* [out] */ DWORD __RPC_FAR *pdwMarker); - - HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetSourceStartMarkerName )( - IAMPlayListItem __RPC_FAR * This, - /* [in] */ DWORD dwSourceIndex, - /* [out] */ BSTR __RPC_FAR *pbstrStartMarker); - - HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetSourceEndMarkerName )( - IAMPlayListItem __RPC_FAR * This, - /* [in] */ DWORD dwSourceIndex, - /* [out] */ BSTR __RPC_FAR *pbstrEndMarker); - - HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetLinkURL )( - IAMPlayListItem __RPC_FAR * This, - /* [out] */ BSTR __RPC_FAR *pbstrURL); - - HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetScanDuration )( - IAMPlayListItem __RPC_FAR * This, - /* [in] */ DWORD dwSourceIndex, - /* [out] */ REFERENCE_TIME __RPC_FAR *prtScanDuration); - - END_INTERFACE - } IAMPlayListItemVtbl; - - interface IAMPlayListItem - { - CONST_VTBL struct IAMPlayListItemVtbl __RPC_FAR *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IAMPlayListItem_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IAMPlayListItem_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IAMPlayListItem_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IAMPlayListItem_GetFlags(This,pdwFlags) \ - (This)->lpVtbl -> GetFlags(This,pdwFlags) - -#define IAMPlayListItem_GetSourceCount(This,pdwSources) \ - (This)->lpVtbl -> GetSourceCount(This,pdwSources) - -#define IAMPlayListItem_GetSourceURL(This,dwSourceIndex,pbstrURL) \ - (This)->lpVtbl -> GetSourceURL(This,dwSourceIndex,pbstrURL) - -#define IAMPlayListItem_GetSourceStart(This,dwSourceIndex,prtStart) \ - (This)->lpVtbl -> GetSourceStart(This,dwSourceIndex,prtStart) - -#define IAMPlayListItem_GetSourceDuration(This,dwSourceIndex,prtDuration) \ - (This)->lpVtbl -> GetSourceDuration(This,dwSourceIndex,prtDuration) - -#define IAMPlayListItem_GetSourceStartMarker(This,dwSourceIndex,pdwMarker) \ - (This)->lpVtbl -> GetSourceStartMarker(This,dwSourceIndex,pdwMarker) - -#define IAMPlayListItem_GetSourceEndMarker(This,dwSourceIndex,pdwMarker) \ - (This)->lpVtbl -> GetSourceEndMarker(This,dwSourceIndex,pdwMarker) - -#define IAMPlayListItem_GetSourceStartMarkerName(This,dwSourceIndex,pbstrStartMarker) \ - (This)->lpVtbl -> GetSourceStartMarkerName(This,dwSourceIndex,pbstrStartMarker) - -#define IAMPlayListItem_GetSourceEndMarkerName(This,dwSourceIndex,pbstrEndMarker) \ - (This)->lpVtbl -> GetSourceEndMarkerName(This,dwSourceIndex,pbstrEndMarker) - -#define IAMPlayListItem_GetLinkURL(This,pbstrURL) \ - (This)->lpVtbl -> GetLinkURL(This,pbstrURL) - -#define IAMPlayListItem_GetScanDuration(This,dwSourceIndex,prtScanDuration) \ - (This)->lpVtbl -> GetScanDuration(This,dwSourceIndex,prtScanDuration) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IAMPlayListItem_GetFlags_Proxy( - IAMPlayListItem __RPC_FAR * This, - /* [out] */ DWORD __RPC_FAR *pdwFlags); - - -void __RPC_STUB IAMPlayListItem_GetFlags_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IAMPlayListItem_GetSourceCount_Proxy( - IAMPlayListItem __RPC_FAR * This, - /* [out] */ DWORD __RPC_FAR *pdwSources); - - -void __RPC_STUB IAMPlayListItem_GetSourceCount_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IAMPlayListItem_GetSourceURL_Proxy( - IAMPlayListItem __RPC_FAR * This, - /* [in] */ DWORD dwSourceIndex, - /* [out] */ BSTR __RPC_FAR *pbstrURL); - - -void __RPC_STUB IAMPlayListItem_GetSourceURL_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IAMPlayListItem_GetSourceStart_Proxy( - IAMPlayListItem __RPC_FAR * This, - /* [in] */ DWORD dwSourceIndex, - /* [out] */ REFERENCE_TIME __RPC_FAR *prtStart); - - -void __RPC_STUB IAMPlayListItem_GetSourceStart_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IAMPlayListItem_GetSourceDuration_Proxy( - IAMPlayListItem __RPC_FAR * This, - /* [in] */ DWORD dwSourceIndex, - /* [out] */ REFERENCE_TIME __RPC_FAR *prtDuration); - - -void __RPC_STUB IAMPlayListItem_GetSourceDuration_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IAMPlayListItem_GetSourceStartMarker_Proxy( - IAMPlayListItem __RPC_FAR * This, - /* [in] */ DWORD dwSourceIndex, - /* [out] */ DWORD __RPC_FAR *pdwMarker); - - -void __RPC_STUB IAMPlayListItem_GetSourceStartMarker_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IAMPlayListItem_GetSourceEndMarker_Proxy( - IAMPlayListItem __RPC_FAR * This, - /* [in] */ DWORD dwSourceIndex, - /* [out] */ DWORD __RPC_FAR *pdwMarker); - - -void __RPC_STUB IAMPlayListItem_GetSourceEndMarker_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IAMPlayListItem_GetSourceStartMarkerName_Proxy( - IAMPlayListItem __RPC_FAR * This, - /* [in] */ DWORD dwSourceIndex, - /* [out] */ BSTR __RPC_FAR *pbstrStartMarker); - - -void __RPC_STUB IAMPlayListItem_GetSourceStartMarkerName_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IAMPlayListItem_GetSourceEndMarkerName_Proxy( - IAMPlayListItem __RPC_FAR * This, - /* [in] */ DWORD dwSourceIndex, - /* [out] */ BSTR __RPC_FAR *pbstrEndMarker); - - -void __RPC_STUB IAMPlayListItem_GetSourceEndMarkerName_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IAMPlayListItem_GetLinkURL_Proxy( - IAMPlayListItem __RPC_FAR * This, - /* [out] */ BSTR __RPC_FAR *pbstrURL); - - -void __RPC_STUB IAMPlayListItem_GetLinkURL_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IAMPlayListItem_GetScanDuration_Proxy( - IAMPlayListItem __RPC_FAR * This, - /* [in] */ DWORD dwSourceIndex, - /* [out] */ REFERENCE_TIME __RPC_FAR *prtScanDuration); - - -void __RPC_STUB IAMPlayListItem_GetScanDuration_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IAMPlayListItem_INTERFACE_DEFINED__ */ - - -/* interface __MIDL_itf_playlist_0348 */ -/* [local] */ - - -enum AMPlayListFlags - { AMPLAYLIST_STARTINSCANMODE = 0x1, - AMPLAYLIST_FORCEBANNER = 0x2 - }; - -enum AMPlayListEventFlags - { AMPLAYLISTEVENT_RESUME = 0, - AMPLAYLISTEVENT_BREAK = 0x1, - AMPLAYLISTEVENT_NEXT = 0x2, - AMPLAYLISTEVENT_MASK = 0xf, - AMPLAYLISTEVENT_REFRESH = 0x10 - }; - - -extern RPC_IF_HANDLE __MIDL_itf_playlist_0348_v0_0_c_ifspec; -extern RPC_IF_HANDLE __MIDL_itf_playlist_0348_v0_0_s_ifspec; - -#ifndef __IAMPlayList_INTERFACE_DEFINED__ -#define __IAMPlayList_INTERFACE_DEFINED__ - -/* interface IAMPlayList */ -/* [unique][uuid][object] */ - - -EXTERN_C const IID IID_IAMPlayList; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("56a868fe-0ad4-11ce-b03a-0020af0ba770") - IAMPlayList : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE GetFlags( - /* [out] */ DWORD __RPC_FAR *pdwFlags) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetItemCount( - /* [out] */ DWORD __RPC_FAR *pdwItems) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetItem( - /* [in] */ DWORD dwItemIndex, - /* [out] */ IAMPlayListItem __RPC_FAR *__RPC_FAR *ppItem) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetNamedEvent( - /* [in] */ WCHAR __RPC_FAR *pwszEventName, - /* [in] */ DWORD dwItemIndex, - /* [out] */ IAMPlayListItem __RPC_FAR *__RPC_FAR *ppItem, - /* [out] */ DWORD __RPC_FAR *pdwFlags) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetRepeatInfo( - /* [out] */ DWORD __RPC_FAR *pdwRepeatCount, - /* [out] */ DWORD __RPC_FAR *pdwRepeatStart, - /* [out] */ DWORD __RPC_FAR *pdwRepeatEnd) = 0; - - }; - -#else /* C style interface */ - - typedef struct IAMPlayListVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )( - IAMPlayList __RPC_FAR * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject); - - ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )( - IAMPlayList __RPC_FAR * This); - - ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )( - IAMPlayList __RPC_FAR * This); - - HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetFlags )( - IAMPlayList __RPC_FAR * This, - /* [out] */ DWORD __RPC_FAR *pdwFlags); - - HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetItemCount )( - IAMPlayList __RPC_FAR * This, - /* [out] */ DWORD __RPC_FAR *pdwItems); - - HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetItem )( - IAMPlayList __RPC_FAR * This, - /* [in] */ DWORD dwItemIndex, - /* [out] */ IAMPlayListItem __RPC_FAR *__RPC_FAR *ppItem); - - HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetNamedEvent )( - IAMPlayList __RPC_FAR * This, - /* [in] */ WCHAR __RPC_FAR *pwszEventName, - /* [in] */ DWORD dwItemIndex, - /* [out] */ IAMPlayListItem __RPC_FAR *__RPC_FAR *ppItem, - /* [out] */ DWORD __RPC_FAR *pdwFlags); - - HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetRepeatInfo )( - IAMPlayList __RPC_FAR * This, - /* [out] */ DWORD __RPC_FAR *pdwRepeatCount, - /* [out] */ DWORD __RPC_FAR *pdwRepeatStart, - /* [out] */ DWORD __RPC_FAR *pdwRepeatEnd); - - END_INTERFACE - } IAMPlayListVtbl; - - interface IAMPlayList - { - CONST_VTBL struct IAMPlayListVtbl __RPC_FAR *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IAMPlayList_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IAMPlayList_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IAMPlayList_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IAMPlayList_GetFlags(This,pdwFlags) \ - (This)->lpVtbl -> GetFlags(This,pdwFlags) - -#define IAMPlayList_GetItemCount(This,pdwItems) \ - (This)->lpVtbl -> GetItemCount(This,pdwItems) - -#define IAMPlayList_GetItem(This,dwItemIndex,ppItem) \ - (This)->lpVtbl -> GetItem(This,dwItemIndex,ppItem) - -#define IAMPlayList_GetNamedEvent(This,pwszEventName,dwItemIndex,ppItem,pdwFlags) \ - (This)->lpVtbl -> GetNamedEvent(This,pwszEventName,dwItemIndex,ppItem,pdwFlags) - -#define IAMPlayList_GetRepeatInfo(This,pdwRepeatCount,pdwRepeatStart,pdwRepeatEnd) \ - (This)->lpVtbl -> GetRepeatInfo(This,pdwRepeatCount,pdwRepeatStart,pdwRepeatEnd) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IAMPlayList_GetFlags_Proxy( - IAMPlayList __RPC_FAR * This, - /* [out] */ DWORD __RPC_FAR *pdwFlags); - - -void __RPC_STUB IAMPlayList_GetFlags_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IAMPlayList_GetItemCount_Proxy( - IAMPlayList __RPC_FAR * This, - /* [out] */ DWORD __RPC_FAR *pdwItems); - - -void __RPC_STUB IAMPlayList_GetItemCount_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IAMPlayList_GetItem_Proxy( - IAMPlayList __RPC_FAR * This, - /* [in] */ DWORD dwItemIndex, - /* [out] */ IAMPlayListItem __RPC_FAR *__RPC_FAR *ppItem); - - -void __RPC_STUB IAMPlayList_GetItem_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IAMPlayList_GetNamedEvent_Proxy( - IAMPlayList __RPC_FAR * This, - /* [in] */ WCHAR __RPC_FAR *pwszEventName, - /* [in] */ DWORD dwItemIndex, - /* [out] */ IAMPlayListItem __RPC_FAR *__RPC_FAR *ppItem, - /* [out] */ DWORD __RPC_FAR *pdwFlags); - - -void __RPC_STUB IAMPlayList_GetNamedEvent_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IAMPlayList_GetRepeatInfo_Proxy( - IAMPlayList __RPC_FAR * This, - /* [out] */ DWORD __RPC_FAR *pdwRepeatCount, - /* [out] */ DWORD __RPC_FAR *pdwRepeatStart, - /* [out] */ DWORD __RPC_FAR *pdwRepeatEnd); - - -void __RPC_STUB IAMPlayList_GetRepeatInfo_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IAMPlayList_INTERFACE_DEFINED__ */ - - -#ifndef __ISpecifyParticularPages_INTERFACE_DEFINED__ -#define __ISpecifyParticularPages_INTERFACE_DEFINED__ - -/* interface ISpecifyParticularPages */ -/* [object][helpstring][uuid] */ - - -EXTERN_C const IID IID_ISpecifyParticularPages; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("4C437B91-6E9E-11d1-A704-006097C4E476") - ISpecifyParticularPages : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE GetPages( - /* [in] */ REFGUID guidWhatPages, - /* [out] */ CAUUID __RPC_FAR *pPages) = 0; - - }; - -#else /* C style interface */ - - typedef struct ISpecifyParticularPagesVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )( - ISpecifyParticularPages __RPC_FAR * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject); - - ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )( - ISpecifyParticularPages __RPC_FAR * This); - - ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )( - ISpecifyParticularPages __RPC_FAR * This); - - HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetPages )( - ISpecifyParticularPages __RPC_FAR * This, - /* [in] */ REFGUID guidWhatPages, - /* [out] */ CAUUID __RPC_FAR *pPages); - - END_INTERFACE - } ISpecifyParticularPagesVtbl; - - interface ISpecifyParticularPages - { - CONST_VTBL struct ISpecifyParticularPagesVtbl __RPC_FAR *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define ISpecifyParticularPages_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define ISpecifyParticularPages_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define ISpecifyParticularPages_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define ISpecifyParticularPages_GetPages(This,guidWhatPages,pPages) \ - (This)->lpVtbl -> GetPages(This,guidWhatPages,pPages) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE ISpecifyParticularPages_GetPages_Proxy( - ISpecifyParticularPages __RPC_FAR * This, - /* [in] */ REFGUID guidWhatPages, - /* [out] */ CAUUID __RPC_FAR *pPages); - - -void __RPC_STUB ISpecifyParticularPages_GetPages_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __ISpecifyParticularPages_INTERFACE_DEFINED__ */ - - -#ifndef __IAMRebuild_INTERFACE_DEFINED__ -#define __IAMRebuild_INTERFACE_DEFINED__ - -/* interface IAMRebuild */ -/* [object][helpstring][uuid][local] */ - - -EXTERN_C const IID IID_IAMRebuild; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("02EF04DD-7580-11d1-BECE-00C04FB6E937") - IAMRebuild : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE RebuildNow( void) = 0; - - }; - -#else /* C style interface */ - - typedef struct IAMRebuildVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )( - IAMRebuild __RPC_FAR * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject); - - ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )( - IAMRebuild __RPC_FAR * This); - - ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )( - IAMRebuild __RPC_FAR * This); - - HRESULT ( STDMETHODCALLTYPE __RPC_FAR *RebuildNow )( - IAMRebuild __RPC_FAR * This); - - END_INTERFACE - } IAMRebuildVtbl; - - interface IAMRebuild - { - CONST_VTBL struct IAMRebuildVtbl __RPC_FAR *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IAMRebuild_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IAMRebuild_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IAMRebuild_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IAMRebuild_RebuildNow(This) \ - (This)->lpVtbl -> RebuildNow(This) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IAMRebuild_RebuildNow_Proxy( - IAMRebuild __RPC_FAR * This); - - -void __RPC_STUB IAMRebuild_RebuildNow_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IAMRebuild_INTERFACE_DEFINED__ */ - - -/* interface __MIDL_itf_playlist_0351 */ -/* [local] */ - -EXTERN_GUID(IID_IAMPlayListItem,0x56a868ff,0x0ad4,0x11ce,0xb0,0xa3,0x0,0x20,0xaf,0x0b,0xa7,0x70); -EXTERN_GUID(IID_IAMRebuild,0x2ef04dd,0x7580,0x11d1,0xbe,0xce,0x0,0xc0,0x4f,0xb6,0xe9,0x37); -EXTERN_GUID(IID_IAMPlayList,0x56a868fe,0x0ad4,0x11ce,0xb0,0xa3,0x0,0x20,0xaf,0x0b,0xa7,0x70); -EXTERN_GUID(SPECIFYPAGES_STATISTICS,0x4c437b92,0x6e9e,0x11d1,0xa7,0x4,0x0,0x60,0x97,0xc4,0xe4,0x76); -EXTERN_GUID(IID_ISpecifyParticularPages,0x4c437b91,0x6e9e,0x11d1,0xa7,0x4,0x0,0x60,0x97,0xc4,0xe4,0x76); - - -extern RPC_IF_HANDLE __MIDL_itf_playlist_0351_v0_0_c_ifspec; -extern RPC_IF_HANDLE __MIDL_itf_playlist_0351_v0_0_s_ifspec; - -/* Additional Prototypes for ALL interfaces */ - -unsigned long __RPC_USER BSTR_UserSize( unsigned long __RPC_FAR *, unsigned long , BSTR __RPC_FAR * ); -unsigned char __RPC_FAR * __RPC_USER BSTR_UserMarshal( unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, BSTR __RPC_FAR * ); -unsigned char __RPC_FAR * __RPC_USER BSTR_UserUnmarshal(unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, BSTR __RPC_FAR * ); -void __RPC_USER BSTR_UserFree( unsigned long __RPC_FAR *, BSTR __RPC_FAR * ); - -/* end of Additional Prototypes */ - -#ifdef __cplusplus -} -#endif - -#endif - - + +#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 5.03.0279 */ +/* at Sat Jul 31 00:39:47 1999 + */ +/* Compiler settings for playlist.idl: + Oicf (OptLev=i2), W1, Zp8, env=Win32 (32b run), 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 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 +#endif // __RPCNDR_H_VERSION__ + +#ifndef COM_NO_WINDOWS_H +#include "windows.h" +#include "ole2.h" +#endif /*COM_NO_WINDOWS_H*/ + +#ifndef __playlist_h__ +#define __playlist_h__ + +/* Forward Declarations */ + +#ifndef __IAMPlayListItem_FWD_DEFINED__ +#define __IAMPlayListItem_FWD_DEFINED__ +typedef interface IAMPlayListItem IAMPlayListItem; +#endif /* __IAMPlayListItem_FWD_DEFINED__ */ + + +#ifndef __IAMPlayList_FWD_DEFINED__ +#define __IAMPlayList_FWD_DEFINED__ +typedef interface IAMPlayList IAMPlayList; +#endif /* __IAMPlayList_FWD_DEFINED__ */ + + +#ifndef __ISpecifyParticularPages_FWD_DEFINED__ +#define __ISpecifyParticularPages_FWD_DEFINED__ +typedef interface ISpecifyParticularPages ISpecifyParticularPages; +#endif /* __ISpecifyParticularPages_FWD_DEFINED__ */ + + +#ifndef __IAMRebuild_FWD_DEFINED__ +#define __IAMRebuild_FWD_DEFINED__ +typedef interface IAMRebuild IAMRebuild; +#endif /* __IAMRebuild_FWD_DEFINED__ */ + + +/* header files for imported files */ +#include "unknwn.h" +#include "strmif.h" + +#ifdef __cplusplus +extern "C"{ +#endif + +void __RPC_FAR * __RPC_USER MIDL_user_allocate(size_t); +void __RPC_USER MIDL_user_free( void __RPC_FAR * ); + +/* interface __MIDL_itf_playlist_0000 */ +/* [local] */ + + +enum AMPlayListItemFlags + { AMPLAYLISTITEM_CANSKIP = 0x1, + AMPLAYLISTITEM_CANBIND = 0x2 + }; + + +extern RPC_IF_HANDLE __MIDL_itf_playlist_0000_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_playlist_0000_v0_0_s_ifspec; + +#ifndef __IAMPlayListItem_INTERFACE_DEFINED__ +#define __IAMPlayListItem_INTERFACE_DEFINED__ + +/* interface IAMPlayListItem */ +/* [unique][uuid][object] */ + + +EXTERN_C const IID IID_IAMPlayListItem; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("56a868ff-0ad4-11ce-b03a-0020af0ba770") + IAMPlayListItem : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE GetFlags( + /* [out] */ DWORD __RPC_FAR *pdwFlags) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetSourceCount( + /* [out] */ DWORD __RPC_FAR *pdwSources) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetSourceURL( + /* [in] */ DWORD dwSourceIndex, + /* [out] */ BSTR __RPC_FAR *pbstrURL) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetSourceStart( + /* [in] */ DWORD dwSourceIndex, + /* [out] */ REFERENCE_TIME __RPC_FAR *prtStart) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetSourceDuration( + /* [in] */ DWORD dwSourceIndex, + /* [out] */ REFERENCE_TIME __RPC_FAR *prtDuration) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetSourceStartMarker( + /* [in] */ DWORD dwSourceIndex, + /* [out] */ DWORD __RPC_FAR *pdwMarker) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetSourceEndMarker( + /* [in] */ DWORD dwSourceIndex, + /* [out] */ DWORD __RPC_FAR *pdwMarker) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetSourceStartMarkerName( + /* [in] */ DWORD dwSourceIndex, + /* [out] */ BSTR __RPC_FAR *pbstrStartMarker) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetSourceEndMarkerName( + /* [in] */ DWORD dwSourceIndex, + /* [out] */ BSTR __RPC_FAR *pbstrEndMarker) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetLinkURL( + /* [out] */ BSTR __RPC_FAR *pbstrURL) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetScanDuration( + /* [in] */ DWORD dwSourceIndex, + /* [out] */ REFERENCE_TIME __RPC_FAR *prtScanDuration) = 0; + + }; + +#else /* C style interface */ + + typedef struct IAMPlayListItemVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )( + IAMPlayListItem __RPC_FAR * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject); + + ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )( + IAMPlayListItem __RPC_FAR * This); + + ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )( + IAMPlayListItem __RPC_FAR * This); + + HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetFlags )( + IAMPlayListItem __RPC_FAR * This, + /* [out] */ DWORD __RPC_FAR *pdwFlags); + + HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetSourceCount )( + IAMPlayListItem __RPC_FAR * This, + /* [out] */ DWORD __RPC_FAR *pdwSources); + + HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetSourceURL )( + IAMPlayListItem __RPC_FAR * This, + /* [in] */ DWORD dwSourceIndex, + /* [out] */ BSTR __RPC_FAR *pbstrURL); + + HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetSourceStart )( + IAMPlayListItem __RPC_FAR * This, + /* [in] */ DWORD dwSourceIndex, + /* [out] */ REFERENCE_TIME __RPC_FAR *prtStart); + + HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetSourceDuration )( + IAMPlayListItem __RPC_FAR * This, + /* [in] */ DWORD dwSourceIndex, + /* [out] */ REFERENCE_TIME __RPC_FAR *prtDuration); + + HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetSourceStartMarker )( + IAMPlayListItem __RPC_FAR * This, + /* [in] */ DWORD dwSourceIndex, + /* [out] */ DWORD __RPC_FAR *pdwMarker); + + HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetSourceEndMarker )( + IAMPlayListItem __RPC_FAR * This, + /* [in] */ DWORD dwSourceIndex, + /* [out] */ DWORD __RPC_FAR *pdwMarker); + + HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetSourceStartMarkerName )( + IAMPlayListItem __RPC_FAR * This, + /* [in] */ DWORD dwSourceIndex, + /* [out] */ BSTR __RPC_FAR *pbstrStartMarker); + + HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetSourceEndMarkerName )( + IAMPlayListItem __RPC_FAR * This, + /* [in] */ DWORD dwSourceIndex, + /* [out] */ BSTR __RPC_FAR *pbstrEndMarker); + + HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetLinkURL )( + IAMPlayListItem __RPC_FAR * This, + /* [out] */ BSTR __RPC_FAR *pbstrURL); + + HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetScanDuration )( + IAMPlayListItem __RPC_FAR * This, + /* [in] */ DWORD dwSourceIndex, + /* [out] */ REFERENCE_TIME __RPC_FAR *prtScanDuration); + + END_INTERFACE + } IAMPlayListItemVtbl; + + interface IAMPlayListItem + { + CONST_VTBL struct IAMPlayListItemVtbl __RPC_FAR *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IAMPlayListItem_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IAMPlayListItem_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IAMPlayListItem_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IAMPlayListItem_GetFlags(This,pdwFlags) \ + (This)->lpVtbl -> GetFlags(This,pdwFlags) + +#define IAMPlayListItem_GetSourceCount(This,pdwSources) \ + (This)->lpVtbl -> GetSourceCount(This,pdwSources) + +#define IAMPlayListItem_GetSourceURL(This,dwSourceIndex,pbstrURL) \ + (This)->lpVtbl -> GetSourceURL(This,dwSourceIndex,pbstrURL) + +#define IAMPlayListItem_GetSourceStart(This,dwSourceIndex,prtStart) \ + (This)->lpVtbl -> GetSourceStart(This,dwSourceIndex,prtStart) + +#define IAMPlayListItem_GetSourceDuration(This,dwSourceIndex,prtDuration) \ + (This)->lpVtbl -> GetSourceDuration(This,dwSourceIndex,prtDuration) + +#define IAMPlayListItem_GetSourceStartMarker(This,dwSourceIndex,pdwMarker) \ + (This)->lpVtbl -> GetSourceStartMarker(This,dwSourceIndex,pdwMarker) + +#define IAMPlayListItem_GetSourceEndMarker(This,dwSourceIndex,pdwMarker) \ + (This)->lpVtbl -> GetSourceEndMarker(This,dwSourceIndex,pdwMarker) + +#define IAMPlayListItem_GetSourceStartMarkerName(This,dwSourceIndex,pbstrStartMarker) \ + (This)->lpVtbl -> GetSourceStartMarkerName(This,dwSourceIndex,pbstrStartMarker) + +#define IAMPlayListItem_GetSourceEndMarkerName(This,dwSourceIndex,pbstrEndMarker) \ + (This)->lpVtbl -> GetSourceEndMarkerName(This,dwSourceIndex,pbstrEndMarker) + +#define IAMPlayListItem_GetLinkURL(This,pbstrURL) \ + (This)->lpVtbl -> GetLinkURL(This,pbstrURL) + +#define IAMPlayListItem_GetScanDuration(This,dwSourceIndex,prtScanDuration) \ + (This)->lpVtbl -> GetScanDuration(This,dwSourceIndex,prtScanDuration) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IAMPlayListItem_GetFlags_Proxy( + IAMPlayListItem __RPC_FAR * This, + /* [out] */ DWORD __RPC_FAR *pdwFlags); + + +void __RPC_STUB IAMPlayListItem_GetFlags_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IAMPlayListItem_GetSourceCount_Proxy( + IAMPlayListItem __RPC_FAR * This, + /* [out] */ DWORD __RPC_FAR *pdwSources); + + +void __RPC_STUB IAMPlayListItem_GetSourceCount_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IAMPlayListItem_GetSourceURL_Proxy( + IAMPlayListItem __RPC_FAR * This, + /* [in] */ DWORD dwSourceIndex, + /* [out] */ BSTR __RPC_FAR *pbstrURL); + + +void __RPC_STUB IAMPlayListItem_GetSourceURL_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IAMPlayListItem_GetSourceStart_Proxy( + IAMPlayListItem __RPC_FAR * This, + /* [in] */ DWORD dwSourceIndex, + /* [out] */ REFERENCE_TIME __RPC_FAR *prtStart); + + +void __RPC_STUB IAMPlayListItem_GetSourceStart_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IAMPlayListItem_GetSourceDuration_Proxy( + IAMPlayListItem __RPC_FAR * This, + /* [in] */ DWORD dwSourceIndex, + /* [out] */ REFERENCE_TIME __RPC_FAR *prtDuration); + + +void __RPC_STUB IAMPlayListItem_GetSourceDuration_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IAMPlayListItem_GetSourceStartMarker_Proxy( + IAMPlayListItem __RPC_FAR * This, + /* [in] */ DWORD dwSourceIndex, + /* [out] */ DWORD __RPC_FAR *pdwMarker); + + +void __RPC_STUB IAMPlayListItem_GetSourceStartMarker_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IAMPlayListItem_GetSourceEndMarker_Proxy( + IAMPlayListItem __RPC_FAR * This, + /* [in] */ DWORD dwSourceIndex, + /* [out] */ DWORD __RPC_FAR *pdwMarker); + + +void __RPC_STUB IAMPlayListItem_GetSourceEndMarker_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IAMPlayListItem_GetSourceStartMarkerName_Proxy( + IAMPlayListItem __RPC_FAR * This, + /* [in] */ DWORD dwSourceIndex, + /* [out] */ BSTR __RPC_FAR *pbstrStartMarker); + + +void __RPC_STUB IAMPlayListItem_GetSourceStartMarkerName_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IAMPlayListItem_GetSourceEndMarkerName_Proxy( + IAMPlayListItem __RPC_FAR * This, + /* [in] */ DWORD dwSourceIndex, + /* [out] */ BSTR __RPC_FAR *pbstrEndMarker); + + +void __RPC_STUB IAMPlayListItem_GetSourceEndMarkerName_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IAMPlayListItem_GetLinkURL_Proxy( + IAMPlayListItem __RPC_FAR * This, + /* [out] */ BSTR __RPC_FAR *pbstrURL); + + +void __RPC_STUB IAMPlayListItem_GetLinkURL_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IAMPlayListItem_GetScanDuration_Proxy( + IAMPlayListItem __RPC_FAR * This, + /* [in] */ DWORD dwSourceIndex, + /* [out] */ REFERENCE_TIME __RPC_FAR *prtScanDuration); + + +void __RPC_STUB IAMPlayListItem_GetScanDuration_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IAMPlayListItem_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_playlist_0348 */ +/* [local] */ + + +enum AMPlayListFlags + { AMPLAYLIST_STARTINSCANMODE = 0x1, + AMPLAYLIST_FORCEBANNER = 0x2 + }; + +enum AMPlayListEventFlags + { AMPLAYLISTEVENT_RESUME = 0, + AMPLAYLISTEVENT_BREAK = 0x1, + AMPLAYLISTEVENT_NEXT = 0x2, + AMPLAYLISTEVENT_MASK = 0xf, + AMPLAYLISTEVENT_REFRESH = 0x10 + }; + + +extern RPC_IF_HANDLE __MIDL_itf_playlist_0348_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_playlist_0348_v0_0_s_ifspec; + +#ifndef __IAMPlayList_INTERFACE_DEFINED__ +#define __IAMPlayList_INTERFACE_DEFINED__ + +/* interface IAMPlayList */ +/* [unique][uuid][object] */ + + +EXTERN_C const IID IID_IAMPlayList; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("56a868fe-0ad4-11ce-b03a-0020af0ba770") + IAMPlayList : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE GetFlags( + /* [out] */ DWORD __RPC_FAR *pdwFlags) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetItemCount( + /* [out] */ DWORD __RPC_FAR *pdwItems) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetItem( + /* [in] */ DWORD dwItemIndex, + /* [out] */ IAMPlayListItem __RPC_FAR *__RPC_FAR *ppItem) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetNamedEvent( + /* [in] */ WCHAR __RPC_FAR *pwszEventName, + /* [in] */ DWORD dwItemIndex, + /* [out] */ IAMPlayListItem __RPC_FAR *__RPC_FAR *ppItem, + /* [out] */ DWORD __RPC_FAR *pdwFlags) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetRepeatInfo( + /* [out] */ DWORD __RPC_FAR *pdwRepeatCount, + /* [out] */ DWORD __RPC_FAR *pdwRepeatStart, + /* [out] */ DWORD __RPC_FAR *pdwRepeatEnd) = 0; + + }; + +#else /* C style interface */ + + typedef struct IAMPlayListVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )( + IAMPlayList __RPC_FAR * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject); + + ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )( + IAMPlayList __RPC_FAR * This); + + ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )( + IAMPlayList __RPC_FAR * This); + + HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetFlags )( + IAMPlayList __RPC_FAR * This, + /* [out] */ DWORD __RPC_FAR *pdwFlags); + + HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetItemCount )( + IAMPlayList __RPC_FAR * This, + /* [out] */ DWORD __RPC_FAR *pdwItems); + + HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetItem )( + IAMPlayList __RPC_FAR * This, + /* [in] */ DWORD dwItemIndex, + /* [out] */ IAMPlayListItem __RPC_FAR *__RPC_FAR *ppItem); + + HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetNamedEvent )( + IAMPlayList __RPC_FAR * This, + /* [in] */ WCHAR __RPC_FAR *pwszEventName, + /* [in] */ DWORD dwItemIndex, + /* [out] */ IAMPlayListItem __RPC_FAR *__RPC_FAR *ppItem, + /* [out] */ DWORD __RPC_FAR *pdwFlags); + + HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetRepeatInfo )( + IAMPlayList __RPC_FAR * This, + /* [out] */ DWORD __RPC_FAR *pdwRepeatCount, + /* [out] */ DWORD __RPC_FAR *pdwRepeatStart, + /* [out] */ DWORD __RPC_FAR *pdwRepeatEnd); + + END_INTERFACE + } IAMPlayListVtbl; + + interface IAMPlayList + { + CONST_VTBL struct IAMPlayListVtbl __RPC_FAR *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IAMPlayList_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IAMPlayList_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IAMPlayList_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IAMPlayList_GetFlags(This,pdwFlags) \ + (This)->lpVtbl -> GetFlags(This,pdwFlags) + +#define IAMPlayList_GetItemCount(This,pdwItems) \ + (This)->lpVtbl -> GetItemCount(This,pdwItems) + +#define IAMPlayList_GetItem(This,dwItemIndex,ppItem) \ + (This)->lpVtbl -> GetItem(This,dwItemIndex,ppItem) + +#define IAMPlayList_GetNamedEvent(This,pwszEventName,dwItemIndex,ppItem,pdwFlags) \ + (This)->lpVtbl -> GetNamedEvent(This,pwszEventName,dwItemIndex,ppItem,pdwFlags) + +#define IAMPlayList_GetRepeatInfo(This,pdwRepeatCount,pdwRepeatStart,pdwRepeatEnd) \ + (This)->lpVtbl -> GetRepeatInfo(This,pdwRepeatCount,pdwRepeatStart,pdwRepeatEnd) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IAMPlayList_GetFlags_Proxy( + IAMPlayList __RPC_FAR * This, + /* [out] */ DWORD __RPC_FAR *pdwFlags); + + +void __RPC_STUB IAMPlayList_GetFlags_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IAMPlayList_GetItemCount_Proxy( + IAMPlayList __RPC_FAR * This, + /* [out] */ DWORD __RPC_FAR *pdwItems); + + +void __RPC_STUB IAMPlayList_GetItemCount_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IAMPlayList_GetItem_Proxy( + IAMPlayList __RPC_FAR * This, + /* [in] */ DWORD dwItemIndex, + /* [out] */ IAMPlayListItem __RPC_FAR *__RPC_FAR *ppItem); + + +void __RPC_STUB IAMPlayList_GetItem_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IAMPlayList_GetNamedEvent_Proxy( + IAMPlayList __RPC_FAR * This, + /* [in] */ WCHAR __RPC_FAR *pwszEventName, + /* [in] */ DWORD dwItemIndex, + /* [out] */ IAMPlayListItem __RPC_FAR *__RPC_FAR *ppItem, + /* [out] */ DWORD __RPC_FAR *pdwFlags); + + +void __RPC_STUB IAMPlayList_GetNamedEvent_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IAMPlayList_GetRepeatInfo_Proxy( + IAMPlayList __RPC_FAR * This, + /* [out] */ DWORD __RPC_FAR *pdwRepeatCount, + /* [out] */ DWORD __RPC_FAR *pdwRepeatStart, + /* [out] */ DWORD __RPC_FAR *pdwRepeatEnd); + + +void __RPC_STUB IAMPlayList_GetRepeatInfo_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IAMPlayList_INTERFACE_DEFINED__ */ + + +#ifndef __ISpecifyParticularPages_INTERFACE_DEFINED__ +#define __ISpecifyParticularPages_INTERFACE_DEFINED__ + +/* interface ISpecifyParticularPages */ +/* [object][helpstring][uuid] */ + + +EXTERN_C const IID IID_ISpecifyParticularPages; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("4C437B91-6E9E-11d1-A704-006097C4E476") + ISpecifyParticularPages : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE GetPages( + /* [in] */ REFGUID guidWhatPages, + /* [out] */ CAUUID __RPC_FAR *pPages) = 0; + + }; + +#else /* C style interface */ + + typedef struct ISpecifyParticularPagesVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )( + ISpecifyParticularPages __RPC_FAR * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject); + + ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )( + ISpecifyParticularPages __RPC_FAR * This); + + ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )( + ISpecifyParticularPages __RPC_FAR * This); + + HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetPages )( + ISpecifyParticularPages __RPC_FAR * This, + /* [in] */ REFGUID guidWhatPages, + /* [out] */ CAUUID __RPC_FAR *pPages); + + END_INTERFACE + } ISpecifyParticularPagesVtbl; + + interface ISpecifyParticularPages + { + CONST_VTBL struct ISpecifyParticularPagesVtbl __RPC_FAR *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ISpecifyParticularPages_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define ISpecifyParticularPages_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define ISpecifyParticularPages_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define ISpecifyParticularPages_GetPages(This,guidWhatPages,pPages) \ + (This)->lpVtbl -> GetPages(This,guidWhatPages,pPages) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE ISpecifyParticularPages_GetPages_Proxy( + ISpecifyParticularPages __RPC_FAR * This, + /* [in] */ REFGUID guidWhatPages, + /* [out] */ CAUUID __RPC_FAR *pPages); + + +void __RPC_STUB ISpecifyParticularPages_GetPages_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __ISpecifyParticularPages_INTERFACE_DEFINED__ */ + + +#ifndef __IAMRebuild_INTERFACE_DEFINED__ +#define __IAMRebuild_INTERFACE_DEFINED__ + +/* interface IAMRebuild */ +/* [object][helpstring][uuid][local] */ + + +EXTERN_C const IID IID_IAMRebuild; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("02EF04DD-7580-11d1-BECE-00C04FB6E937") + IAMRebuild : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE RebuildNow( void) = 0; + + }; + +#else /* C style interface */ + + typedef struct IAMRebuildVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )( + IAMRebuild __RPC_FAR * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject); + + ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )( + IAMRebuild __RPC_FAR * This); + + ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )( + IAMRebuild __RPC_FAR * This); + + HRESULT ( STDMETHODCALLTYPE __RPC_FAR *RebuildNow )( + IAMRebuild __RPC_FAR * This); + + END_INTERFACE + } IAMRebuildVtbl; + + interface IAMRebuild + { + CONST_VTBL struct IAMRebuildVtbl __RPC_FAR *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IAMRebuild_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IAMRebuild_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IAMRebuild_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IAMRebuild_RebuildNow(This) \ + (This)->lpVtbl -> RebuildNow(This) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IAMRebuild_RebuildNow_Proxy( + IAMRebuild __RPC_FAR * This); + + +void __RPC_STUB IAMRebuild_RebuildNow_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IAMRebuild_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_playlist_0351 */ +/* [local] */ + +EXTERN_GUID(IID_IAMPlayListItem,0x56a868ff,0x0ad4,0x11ce,0xb0,0xa3,0x0,0x20,0xaf,0x0b,0xa7,0x70); +EXTERN_GUID(IID_IAMRebuild,0x2ef04dd,0x7580,0x11d1,0xbe,0xce,0x0,0xc0,0x4f,0xb6,0xe9,0x37); +EXTERN_GUID(IID_IAMPlayList,0x56a868fe,0x0ad4,0x11ce,0xb0,0xa3,0x0,0x20,0xaf,0x0b,0xa7,0x70); +EXTERN_GUID(SPECIFYPAGES_STATISTICS,0x4c437b92,0x6e9e,0x11d1,0xa7,0x4,0x0,0x60,0x97,0xc4,0xe4,0x76); +EXTERN_GUID(IID_ISpecifyParticularPages,0x4c437b91,0x6e9e,0x11d1,0xa7,0x4,0x0,0x60,0x97,0xc4,0xe4,0x76); + + +extern RPC_IF_HANDLE __MIDL_itf_playlist_0351_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_playlist_0351_v0_0_s_ifspec; + +/* Additional Prototypes for ALL interfaces */ + +unsigned long __RPC_USER BSTR_UserSize( unsigned long __RPC_FAR *, unsigned long , BSTR __RPC_FAR * ); +unsigned char __RPC_FAR * __RPC_USER BSTR_UserMarshal( unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, BSTR __RPC_FAR * ); +unsigned char __RPC_FAR * __RPC_USER BSTR_UserUnmarshal(unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, BSTR __RPC_FAR * ); +void __RPC_USER BSTR_UserFree( unsigned long __RPC_FAR *, BSTR __RPC_FAR * ); + +/* end of Additional Prototypes */ + +#ifdef __cplusplus +} +#endif + +#endif + + diff --git a/videoInputSrcAndDemos/libs/DShow/Include/pstream.h b/videoInputSrcAndDemos/libs/DShow/Include/pstream.h index 95ec88c..0611a4e 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/pstream.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/pstream.h @@ -1,114 +1,114 @@ -//------------------------------------------------------------------------------ -// File: PStream.h -// -// Desc: DirectShow base classes - defines a class for persistent properties -// of filters. -// -// Copyright (c) Microsoft Corporation. All rights reserved. -//------------------------------------------------------------------------------ - - -#ifndef __PSTREAM__ -#define __PSTREAM__ - -// Base class for persistent properties of filters -// (i.e. filter properties in saved graphs) - -// The simplest way to use this is: -// 1. Arrange for your filter to inherit this class -// 2. Implement in your class WriteToStream and ReadFromStream -// These will override the "do nothing" functions here. -// 3. Change your NonDelegatingQueryInterface to handle IPersistStream -// 4. Implement SizeMax to return the number of bytes of data you save. -// If you save UNICODE data, don't forget a char is 2 bytes. -// 5. Whenever your data changes, call SetDirty() -// -// At some point you may decide to alter, or extend the format of your data. -// At that point you will wish that you had a version number in all the old -// saved graphs, so that you can tell, when you read them, whether they -// represent the old or new form. To assist you in this, this class -// writes and reads a version number. -// When it writes, it calls GetSoftwareVersion() to enquire what version -// of the software we have at the moment. (In effect this is a version number -// of the data layout in the file). It writes this as the first thing in the data. -// If you want to change the version, implement (override) GetSoftwareVersion(). -// It reads this from the file into mPS_dwFileVersion before calling ReadFromStream, -// so in ReadFromStream you can check mPS_dwFileVersion to see if you are reading -// an old version file. -// Normally you should accept files whose version is no newer than the software -// version that's reading them. - - -// CPersistStream -// -// Implements IPersistStream. -// See 'OLE Programmers Reference (Vol 1):Structured Storage Overview' for -// more implementation information. -class CPersistStream : public IPersistStream { - private: - - // Internal state: - - protected: - DWORD mPS_dwFileVersion; // version number of file (being read) - BOOL mPS_fDirty; - - public: - - // IPersistStream methods - - STDMETHODIMP IsDirty() - {return (mPS_fDirty ? S_OK : S_FALSE);} // note FALSE means clean - STDMETHODIMP Load(LPSTREAM pStm); - STDMETHODIMP Save(LPSTREAM pStm, BOOL fClearDirty); - STDMETHODIMP GetSizeMax(ULARGE_INTEGER * pcbSize) - // Allow 24 bytes for version. - { pcbSize->QuadPart = 12*sizeof(WCHAR)+SizeMax(); return NOERROR; } - - // implementation - - CPersistStream(IUnknown *punk, HRESULT *phr); - ~CPersistStream(); - - HRESULT SetDirty(BOOL fDirty) - { mPS_fDirty = fDirty; return NOERROR;} - - - // override to reveal IPersist & IPersistStream - // STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, void **ppv); - - // --- IPersist --- - - // You must override this to provide your own class id - STDMETHODIMP GetClassID(CLSID *pClsid) PURE; - - // overrideable if you want - // file version number. Override it if you ever change format - virtual DWORD GetSoftwareVersion(void) { return 0; } - - - //========================================================================= - // OVERRIDE THESE to read and write your data - // OVERRIDE THESE to read and write your data - // OVERRIDE THESE to read and write your data - - virtual int SizeMax() {return 0;} - virtual HRESULT WriteToStream(IStream *pStream); - virtual HRESULT ReadFromStream(IStream *pStream); - //========================================================================= - - private: - -}; - - -// --- Useful helpers --- - - -// Writes an int to an IStream as UNICODE. -STDAPI WriteInt(IStream *pIStream, int n); - -// inverse of WriteInt -STDAPI_(int) ReadInt(IStream *pIStream, HRESULT &hr); - -#endif // __PSTREAM__ +//------------------------------------------------------------------------------ +// File: PStream.h +// +// Desc: DirectShow base classes - defines a class for persistent properties +// of filters. +// +// Copyright (c) Microsoft Corporation. All rights reserved. +//------------------------------------------------------------------------------ + + +#ifndef __PSTREAM__ +#define __PSTREAM__ + +// Base class for persistent properties of filters +// (i.e. filter properties in saved graphs) + +// The simplest way to use this is: +// 1. Arrange for your filter to inherit this class +// 2. Implement in your class WriteToStream and ReadFromStream +// These will override the "do nothing" functions here. +// 3. Change your NonDelegatingQueryInterface to handle IPersistStream +// 4. Implement SizeMax to return the number of bytes of data you save. +// If you save UNICODE data, don't forget a char is 2 bytes. +// 5. Whenever your data changes, call SetDirty() +// +// At some point you may decide to alter, or extend the format of your data. +// At that point you will wish that you had a version number in all the old +// saved graphs, so that you can tell, when you read them, whether they +// represent the old or new form. To assist you in this, this class +// writes and reads a version number. +// When it writes, it calls GetSoftwareVersion() to enquire what version +// of the software we have at the moment. (In effect this is a version number +// of the data layout in the file). It writes this as the first thing in the data. +// If you want to change the version, implement (override) GetSoftwareVersion(). +// It reads this from the file into mPS_dwFileVersion before calling ReadFromStream, +// so in ReadFromStream you can check mPS_dwFileVersion to see if you are reading +// an old version file. +// Normally you should accept files whose version is no newer than the software +// version that's reading them. + + +// CPersistStream +// +// Implements IPersistStream. +// See 'OLE Programmers Reference (Vol 1):Structured Storage Overview' for +// more implementation information. +class CPersistStream : public IPersistStream { + private: + + // Internal state: + + protected: + DWORD mPS_dwFileVersion; // version number of file (being read) + BOOL mPS_fDirty; + + public: + + // IPersistStream methods + + STDMETHODIMP IsDirty() + {return (mPS_fDirty ? S_OK : S_FALSE);} // note FALSE means clean + STDMETHODIMP Load(LPSTREAM pStm); + STDMETHODIMP Save(LPSTREAM pStm, BOOL fClearDirty); + STDMETHODIMP GetSizeMax(ULARGE_INTEGER * pcbSize) + // Allow 24 bytes for version. + { pcbSize->QuadPart = 12*sizeof(WCHAR)+SizeMax(); return NOERROR; } + + // implementation + + CPersistStream(IUnknown *punk, HRESULT *phr); + ~CPersistStream(); + + HRESULT SetDirty(BOOL fDirty) + { mPS_fDirty = fDirty; return NOERROR;} + + + // override to reveal IPersist & IPersistStream + // STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, void **ppv); + + // --- IPersist --- + + // You must override this to provide your own class id + STDMETHODIMP GetClassID(CLSID *pClsid) PURE; + + // overrideable if you want + // file version number. Override it if you ever change format + virtual DWORD GetSoftwareVersion(void) { return 0; } + + + //========================================================================= + // OVERRIDE THESE to read and write your data + // OVERRIDE THESE to read and write your data + // OVERRIDE THESE to read and write your data + + virtual int SizeMax() {return 0;} + virtual HRESULT WriteToStream(IStream *pStream); + virtual HRESULT ReadFromStream(IStream *pStream); + //========================================================================= + + private: + +}; + + +// --- Useful helpers --- + + +// Writes an int to an IStream as UNICODE. +STDAPI WriteInt(IStream *pIStream, int n); + +// inverse of WriteInt +STDAPI_(int) ReadInt(IStream *pIStream, HRESULT &hr); + +#endif // __PSTREAM__ diff --git a/videoInputSrcAndDemos/libs/DShow/Include/pullpin.h b/videoInputSrcAndDemos/libs/DShow/Include/pullpin.h index 254ffe2..6546701 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/pullpin.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/pullpin.h @@ -1,152 +1,152 @@ -//------------------------------------------------------------------------------ -// File: PullPin.h -// -// Desc: DirectShow base classes - defines CPullPin class. -// -// Copyright (c) Microsoft Corporation. All rights reserved. -//------------------------------------------------------------------------------ - - -#ifndef __PULLPIN_H__ -#define __PULLPIN_H__ - -// -// CPullPin -// -// object supporting pulling data from an IAsyncReader interface. -// Given a start/stop position, calls a pure Receive method with each -// IMediaSample received. -// -// This is essentially for use in a MemInputPin when it finds itself -// connected to an IAsyncReader pin instead of a pushing pin. -// - -class CPullPin : public CAMThread -{ - IAsyncReader* m_pReader; - REFERENCE_TIME m_tStart; - REFERENCE_TIME m_tStop; - REFERENCE_TIME m_tDuration; - BOOL m_bSync; - - enum ThreadMsg { - TM_Pause, // stop pulling and wait for next message - TM_Start, // start pulling - TM_Exit, // stop and exit - }; - - ThreadMsg m_State; - - // override pure thread proc from CAMThread - DWORD ThreadProc(void); - - // running pull method (check m_bSync) - void Process(void); - - // clean up any cancelled i/o after a flush - void CleanupCancelled(void); - - // suspend thread from pulling, eg during seek - HRESULT PauseThread(); - - // start thread pulling - create thread if necy - HRESULT StartThread(); - - // stop and close thread - HRESULT StopThread(); - - // called from ProcessAsync to queue and collect requests - HRESULT QueueSample( - REFERENCE_TIME& tCurrent, - REFERENCE_TIME tAlignStop, - BOOL bDiscontinuity); - - HRESULT CollectAndDeliver( - REFERENCE_TIME tStart, - REFERENCE_TIME tStop); - - HRESULT DeliverSample( - IMediaSample* pSample, - REFERENCE_TIME tStart, - REFERENCE_TIME tStop); - -protected: - IMemAllocator * m_pAlloc; - -public: - CPullPin(); - virtual ~CPullPin(); - - // returns S_OK if successfully connected to an IAsyncReader interface - // from this object - // Optional allocator should be proposed as a preferred allocator if - // necessary - // bSync is TRUE if we are to use sync reads instead of the - // async methods. - HRESULT Connect(IUnknown* pUnk, IMemAllocator* pAlloc, BOOL bSync); - - // disconnect any connection made in Connect - HRESULT Disconnect(); - - // agree an allocator using RequestAllocator - optional - // props param specifies your requirements (non-zero fields). - // returns an error code if fail to match requirements. - // optional IMemAllocator interface is offered as a preferred allocator - // but no error occurs if it can't be met. - virtual HRESULT DecideAllocator( - IMemAllocator* pAlloc, - ALLOCATOR_PROPERTIES * pProps); - - // set start and stop position. if active, will start immediately at - // the new position. Default is 0 to duration - HRESULT Seek(REFERENCE_TIME tStart, REFERENCE_TIME tStop); - - // return the total duration - HRESULT Duration(REFERENCE_TIME* ptDuration); - - // start pulling data - HRESULT Active(void); - - // stop pulling data - HRESULT Inactive(void); - - // helper functions - LONGLONG AlignDown(LONGLONG ll, LONG lAlign) { - // aligning downwards is just truncation - return ll & ~(lAlign-1); - }; - - LONGLONG AlignUp(LONGLONG ll, LONG lAlign) { - // align up: round up to next boundary - return (ll + (lAlign -1)) & ~(lAlign -1); - }; - - // GetReader returns the (addrefed) IAsyncReader interface - // for SyncRead etc - IAsyncReader* GetReader() { - m_pReader->AddRef(); - return m_pReader; - }; - - // -- pure -- - - // override this to handle data arrival - // return value other than S_OK will stop data - virtual HRESULT Receive(IMediaSample*) PURE; - - // override this to handle end-of-stream - virtual HRESULT EndOfStream(void) PURE; - - // called on runtime errors that will have caused pulling - // to stop - // these errors are all returned from the upstream filter, who - // will have already reported any errors to the filtergraph. - virtual void OnError(HRESULT hr) PURE; - - // flush this pin and all downstream - virtual HRESULT BeginFlush() PURE; - virtual HRESULT EndFlush() PURE; - -}; - -#endif //__PULLPIN_H__ +//------------------------------------------------------------------------------ +// File: PullPin.h +// +// Desc: DirectShow base classes - defines CPullPin class. +// +// Copyright (c) Microsoft Corporation. All rights reserved. +//------------------------------------------------------------------------------ + + +#ifndef __PULLPIN_H__ +#define __PULLPIN_H__ + +// +// CPullPin +// +// object supporting pulling data from an IAsyncReader interface. +// Given a start/stop position, calls a pure Receive method with each +// IMediaSample received. +// +// This is essentially for use in a MemInputPin when it finds itself +// connected to an IAsyncReader pin instead of a pushing pin. +// + +class CPullPin : public CAMThread +{ + IAsyncReader* m_pReader; + REFERENCE_TIME m_tStart; + REFERENCE_TIME m_tStop; + REFERENCE_TIME m_tDuration; + BOOL m_bSync; + + enum ThreadMsg { + TM_Pause, // stop pulling and wait for next message + TM_Start, // start pulling + TM_Exit, // stop and exit + }; + + ThreadMsg m_State; + + // override pure thread proc from CAMThread + DWORD ThreadProc(void); + + // running pull method (check m_bSync) + void Process(void); + + // clean up any cancelled i/o after a flush + void CleanupCancelled(void); + + // suspend thread from pulling, eg during seek + HRESULT PauseThread(); + + // start thread pulling - create thread if necy + HRESULT StartThread(); + + // stop and close thread + HRESULT StopThread(); + + // called from ProcessAsync to queue and collect requests + HRESULT QueueSample( + REFERENCE_TIME& tCurrent, + REFERENCE_TIME tAlignStop, + BOOL bDiscontinuity); + + HRESULT CollectAndDeliver( + REFERENCE_TIME tStart, + REFERENCE_TIME tStop); + + HRESULT DeliverSample( + IMediaSample* pSample, + REFERENCE_TIME tStart, + REFERENCE_TIME tStop); + +protected: + IMemAllocator * m_pAlloc; + +public: + CPullPin(); + virtual ~CPullPin(); + + // returns S_OK if successfully connected to an IAsyncReader interface + // from this object + // Optional allocator should be proposed as a preferred allocator if + // necessary + // bSync is TRUE if we are to use sync reads instead of the + // async methods. + HRESULT Connect(IUnknown* pUnk, IMemAllocator* pAlloc, BOOL bSync); + + // disconnect any connection made in Connect + HRESULT Disconnect(); + + // agree an allocator using RequestAllocator - optional + // props param specifies your requirements (non-zero fields). + // returns an error code if fail to match requirements. + // optional IMemAllocator interface is offered as a preferred allocator + // but no error occurs if it can't be met. + virtual HRESULT DecideAllocator( + IMemAllocator* pAlloc, + ALLOCATOR_PROPERTIES * pProps); + + // set start and stop position. if active, will start immediately at + // the new position. Default is 0 to duration + HRESULT Seek(REFERENCE_TIME tStart, REFERENCE_TIME tStop); + + // return the total duration + HRESULT Duration(REFERENCE_TIME* ptDuration); + + // start pulling data + HRESULT Active(void); + + // stop pulling data + HRESULT Inactive(void); + + // helper functions + LONGLONG AlignDown(LONGLONG ll, LONG lAlign) { + // aligning downwards is just truncation + return ll & ~(lAlign-1); + }; + + LONGLONG AlignUp(LONGLONG ll, LONG lAlign) { + // align up: round up to next boundary + return (ll + (lAlign -1)) & ~(lAlign -1); + }; + + // GetReader returns the (addrefed) IAsyncReader interface + // for SyncRead etc + IAsyncReader* GetReader() { + m_pReader->AddRef(); + return m_pReader; + }; + + // -- pure -- + + // override this to handle data arrival + // return value other than S_OK will stop data + virtual HRESULT Receive(IMediaSample*) PURE; + + // override this to handle end-of-stream + virtual HRESULT EndOfStream(void) PURE; + + // called on runtime errors that will have caused pulling + // to stop + // these errors are all returned from the upstream filter, who + // will have already reported any errors to the filtergraph. + virtual void OnError(HRESULT hr) PURE; + + // flush this pin and all downstream + virtual HRESULT BeginFlush() PURE; + virtual HRESULT EndFlush() PURE; + +}; + +#endif //__PULLPIN_H__ diff --git a/videoInputSrcAndDemos/libs/DShow/Include/qedit.h b/videoInputSrcAndDemos/libs/DShow/Include/qedit.h index f002843..947c8a0 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/qedit.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/qedit.h @@ -1,10236 +1,10236 @@ - -#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 qedit.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 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 -#endif // __RPCNDR_H_VERSION__ - -#ifndef COM_NO_WINDOWS_H -#include "windows.h" -#include "ole2.h" -#endif /*COM_NO_WINDOWS_H*/ - -#ifndef __qedit_h__ -#define __qedit_h__ - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -#pragma once -#endif - -/* Forward Declarations */ - -#ifndef __IPropertySetter_FWD_DEFINED__ -#define __IPropertySetter_FWD_DEFINED__ -typedef interface IPropertySetter IPropertySetter; -#endif /* __IPropertySetter_FWD_DEFINED__ */ - - -#ifndef __IDxtCompositor_FWD_DEFINED__ -#define __IDxtCompositor_FWD_DEFINED__ -typedef interface IDxtCompositor IDxtCompositor; -#endif /* __IDxtCompositor_FWD_DEFINED__ */ - - -#ifndef __IDxtAlphaSetter_FWD_DEFINED__ -#define __IDxtAlphaSetter_FWD_DEFINED__ -typedef interface IDxtAlphaSetter IDxtAlphaSetter; -#endif /* __IDxtAlphaSetter_FWD_DEFINED__ */ - - -#ifndef __IDxtJpeg_FWD_DEFINED__ -#define __IDxtJpeg_FWD_DEFINED__ -typedef interface IDxtJpeg IDxtJpeg; -#endif /* __IDxtJpeg_FWD_DEFINED__ */ - - -#ifndef __IDxtKey_FWD_DEFINED__ -#define __IDxtKey_FWD_DEFINED__ -typedef interface IDxtKey IDxtKey; -#endif /* __IDxtKey_FWD_DEFINED__ */ - - -#ifndef __IMediaLocator_FWD_DEFINED__ -#define __IMediaLocator_FWD_DEFINED__ -typedef interface IMediaLocator IMediaLocator; -#endif /* __IMediaLocator_FWD_DEFINED__ */ - - -#ifndef __IMediaDet_FWD_DEFINED__ -#define __IMediaDet_FWD_DEFINED__ -typedef interface IMediaDet IMediaDet; -#endif /* __IMediaDet_FWD_DEFINED__ */ - - -#ifndef __IGrfCache_FWD_DEFINED__ -#define __IGrfCache_FWD_DEFINED__ -typedef interface IGrfCache IGrfCache; -#endif /* __IGrfCache_FWD_DEFINED__ */ - - -#ifndef __IRenderEngine_FWD_DEFINED__ -#define __IRenderEngine_FWD_DEFINED__ -typedef interface IRenderEngine IRenderEngine; -#endif /* __IRenderEngine_FWD_DEFINED__ */ - - -#ifndef __IRenderEngine2_FWD_DEFINED__ -#define __IRenderEngine2_FWD_DEFINED__ -typedef interface IRenderEngine2 IRenderEngine2; -#endif /* __IRenderEngine2_FWD_DEFINED__ */ - - -#ifndef __IFindCompressorCB_FWD_DEFINED__ -#define __IFindCompressorCB_FWD_DEFINED__ -typedef interface IFindCompressorCB IFindCompressorCB; -#endif /* __IFindCompressorCB_FWD_DEFINED__ */ - - -#ifndef __ISmartRenderEngine_FWD_DEFINED__ -#define __ISmartRenderEngine_FWD_DEFINED__ -typedef interface ISmartRenderEngine ISmartRenderEngine; -#endif /* __ISmartRenderEngine_FWD_DEFINED__ */ - - -#ifndef __IAMTimelineObj_FWD_DEFINED__ -#define __IAMTimelineObj_FWD_DEFINED__ -typedef interface IAMTimelineObj IAMTimelineObj; -#endif /* __IAMTimelineObj_FWD_DEFINED__ */ - - -#ifndef __IAMTimelineEffectable_FWD_DEFINED__ -#define __IAMTimelineEffectable_FWD_DEFINED__ -typedef interface IAMTimelineEffectable IAMTimelineEffectable; -#endif /* __IAMTimelineEffectable_FWD_DEFINED__ */ - - -#ifndef __IAMTimelineEffect_FWD_DEFINED__ -#define __IAMTimelineEffect_FWD_DEFINED__ -typedef interface IAMTimelineEffect IAMTimelineEffect; -#endif /* __IAMTimelineEffect_FWD_DEFINED__ */ - - -#ifndef __IAMTimelineTransable_FWD_DEFINED__ -#define __IAMTimelineTransable_FWD_DEFINED__ -typedef interface IAMTimelineTransable IAMTimelineTransable; -#endif /* __IAMTimelineTransable_FWD_DEFINED__ */ - - -#ifndef __IAMTimelineSplittable_FWD_DEFINED__ -#define __IAMTimelineSplittable_FWD_DEFINED__ -typedef interface IAMTimelineSplittable IAMTimelineSplittable; -#endif /* __IAMTimelineSplittable_FWD_DEFINED__ */ - - -#ifndef __IAMTimelineTrans_FWD_DEFINED__ -#define __IAMTimelineTrans_FWD_DEFINED__ -typedef interface IAMTimelineTrans IAMTimelineTrans; -#endif /* __IAMTimelineTrans_FWD_DEFINED__ */ - - -#ifndef __IAMTimelineSrc_FWD_DEFINED__ -#define __IAMTimelineSrc_FWD_DEFINED__ -typedef interface IAMTimelineSrc IAMTimelineSrc; -#endif /* __IAMTimelineSrc_FWD_DEFINED__ */ - - -#ifndef __IAMTimelineTrack_FWD_DEFINED__ -#define __IAMTimelineTrack_FWD_DEFINED__ -typedef interface IAMTimelineTrack IAMTimelineTrack; -#endif /* __IAMTimelineTrack_FWD_DEFINED__ */ - - -#ifndef __IAMTimelineVirtualTrack_FWD_DEFINED__ -#define __IAMTimelineVirtualTrack_FWD_DEFINED__ -typedef interface IAMTimelineVirtualTrack IAMTimelineVirtualTrack; -#endif /* __IAMTimelineVirtualTrack_FWD_DEFINED__ */ - - -#ifndef __IAMTimelineComp_FWD_DEFINED__ -#define __IAMTimelineComp_FWD_DEFINED__ -typedef interface IAMTimelineComp IAMTimelineComp; -#endif /* __IAMTimelineComp_FWD_DEFINED__ */ - - -#ifndef __IAMTimelineGroup_FWD_DEFINED__ -#define __IAMTimelineGroup_FWD_DEFINED__ -typedef interface IAMTimelineGroup IAMTimelineGroup; -#endif /* __IAMTimelineGroup_FWD_DEFINED__ */ - - -#ifndef __IAMTimeline_FWD_DEFINED__ -#define __IAMTimeline_FWD_DEFINED__ -typedef interface IAMTimeline IAMTimeline; -#endif /* __IAMTimeline_FWD_DEFINED__ */ - - -#ifndef __IXml2Dex_FWD_DEFINED__ -#define __IXml2Dex_FWD_DEFINED__ -typedef interface IXml2Dex IXml2Dex; -#endif /* __IXml2Dex_FWD_DEFINED__ */ - - -#ifndef __IAMErrorLog_FWD_DEFINED__ -#define __IAMErrorLog_FWD_DEFINED__ -typedef interface IAMErrorLog IAMErrorLog; -#endif /* __IAMErrorLog_FWD_DEFINED__ */ - - -#ifndef __IAMSetErrorLog_FWD_DEFINED__ -#define __IAMSetErrorLog_FWD_DEFINED__ -typedef interface IAMSetErrorLog IAMSetErrorLog; -#endif /* __IAMSetErrorLog_FWD_DEFINED__ */ - - -#ifndef __ISampleGrabberCB_FWD_DEFINED__ -#define __ISampleGrabberCB_FWD_DEFINED__ -typedef interface ISampleGrabberCB ISampleGrabberCB; -#endif /* __ISampleGrabberCB_FWD_DEFINED__ */ - - -#ifndef __ISampleGrabber_FWD_DEFINED__ -#define __ISampleGrabber_FWD_DEFINED__ -typedef interface ISampleGrabber ISampleGrabber; -#endif /* __ISampleGrabber_FWD_DEFINED__ */ - - -#ifndef __IResize_FWD_DEFINED__ -#define __IResize_FWD_DEFINED__ -typedef interface IResize IResize; -#endif /* __IResize_FWD_DEFINED__ */ - - -#ifndef __AMTimeline_FWD_DEFINED__ -#define __AMTimeline_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class AMTimeline AMTimeline; -#else -typedef struct AMTimeline AMTimeline; -#endif /* __cplusplus */ - -#endif /* __AMTimeline_FWD_DEFINED__ */ - - -#ifndef __AMTimelineObj_FWD_DEFINED__ -#define __AMTimelineObj_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class AMTimelineObj AMTimelineObj; -#else -typedef struct AMTimelineObj AMTimelineObj; -#endif /* __cplusplus */ - -#endif /* __AMTimelineObj_FWD_DEFINED__ */ - - -#ifndef __AMTimelineSrc_FWD_DEFINED__ -#define __AMTimelineSrc_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class AMTimelineSrc AMTimelineSrc; -#else -typedef struct AMTimelineSrc AMTimelineSrc; -#endif /* __cplusplus */ - -#endif /* __AMTimelineSrc_FWD_DEFINED__ */ - - -#ifndef __AMTimelineTrack_FWD_DEFINED__ -#define __AMTimelineTrack_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class AMTimelineTrack AMTimelineTrack; -#else -typedef struct AMTimelineTrack AMTimelineTrack; -#endif /* __cplusplus */ - -#endif /* __AMTimelineTrack_FWD_DEFINED__ */ - - -#ifndef __AMTimelineComp_FWD_DEFINED__ -#define __AMTimelineComp_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class AMTimelineComp AMTimelineComp; -#else -typedef struct AMTimelineComp AMTimelineComp; -#endif /* __cplusplus */ - -#endif /* __AMTimelineComp_FWD_DEFINED__ */ - - -#ifndef __AMTimelineGroup_FWD_DEFINED__ -#define __AMTimelineGroup_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class AMTimelineGroup AMTimelineGroup; -#else -typedef struct AMTimelineGroup AMTimelineGroup; -#endif /* __cplusplus */ - -#endif /* __AMTimelineGroup_FWD_DEFINED__ */ - - -#ifndef __AMTimelineTrans_FWD_DEFINED__ -#define __AMTimelineTrans_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class AMTimelineTrans AMTimelineTrans; -#else -typedef struct AMTimelineTrans AMTimelineTrans; -#endif /* __cplusplus */ - -#endif /* __AMTimelineTrans_FWD_DEFINED__ */ - - -#ifndef __AMTimelineEffect_FWD_DEFINED__ -#define __AMTimelineEffect_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class AMTimelineEffect AMTimelineEffect; -#else -typedef struct AMTimelineEffect AMTimelineEffect; -#endif /* __cplusplus */ - -#endif /* __AMTimelineEffect_FWD_DEFINED__ */ - - -#ifndef __RenderEngine_FWD_DEFINED__ -#define __RenderEngine_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class RenderEngine RenderEngine; -#else -typedef struct RenderEngine RenderEngine; -#endif /* __cplusplus */ - -#endif /* __RenderEngine_FWD_DEFINED__ */ - - -#ifndef __SmartRenderEngine_FWD_DEFINED__ -#define __SmartRenderEngine_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class SmartRenderEngine SmartRenderEngine; -#else -typedef struct SmartRenderEngine SmartRenderEngine; -#endif /* __cplusplus */ - -#endif /* __SmartRenderEngine_FWD_DEFINED__ */ - - -#ifndef __AudMixer_FWD_DEFINED__ -#define __AudMixer_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class AudMixer AudMixer; -#else -typedef struct AudMixer AudMixer; -#endif /* __cplusplus */ - -#endif /* __AudMixer_FWD_DEFINED__ */ - - -#ifndef __Xml2Dex_FWD_DEFINED__ -#define __Xml2Dex_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class Xml2Dex Xml2Dex; -#else -typedef struct Xml2Dex Xml2Dex; -#endif /* __cplusplus */ - -#endif /* __Xml2Dex_FWD_DEFINED__ */ - - -#ifndef __MediaLocator_FWD_DEFINED__ -#define __MediaLocator_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class MediaLocator MediaLocator; -#else -typedef struct MediaLocator MediaLocator; -#endif /* __cplusplus */ - -#endif /* __MediaLocator_FWD_DEFINED__ */ - - -#ifndef __PropertySetter_FWD_DEFINED__ -#define __PropertySetter_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class PropertySetter PropertySetter; -#else -typedef struct PropertySetter PropertySetter; -#endif /* __cplusplus */ - -#endif /* __PropertySetter_FWD_DEFINED__ */ - - -#ifndef __MediaDet_FWD_DEFINED__ -#define __MediaDet_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class MediaDet MediaDet; -#else -typedef struct MediaDet MediaDet; -#endif /* __cplusplus */ - -#endif /* __MediaDet_FWD_DEFINED__ */ - - -#ifndef __SampleGrabber_FWD_DEFINED__ -#define __SampleGrabber_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class SampleGrabber SampleGrabber; -#else -typedef struct SampleGrabber SampleGrabber; -#endif /* __cplusplus */ - -#endif /* __SampleGrabber_FWD_DEFINED__ */ - - -#ifndef __NullRenderer_FWD_DEFINED__ -#define __NullRenderer_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class NullRenderer NullRenderer; -#else -typedef struct NullRenderer NullRenderer; -#endif /* __cplusplus */ - -#endif /* __NullRenderer_FWD_DEFINED__ */ - - -#ifndef __DxtCompositor_FWD_DEFINED__ -#define __DxtCompositor_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class DxtCompositor DxtCompositor; -#else -typedef struct DxtCompositor DxtCompositor; -#endif /* __cplusplus */ - -#endif /* __DxtCompositor_FWD_DEFINED__ */ - - -#ifndef __DxtAlphaSetter_FWD_DEFINED__ -#define __DxtAlphaSetter_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class DxtAlphaSetter DxtAlphaSetter; -#else -typedef struct DxtAlphaSetter DxtAlphaSetter; -#endif /* __cplusplus */ - -#endif /* __DxtAlphaSetter_FWD_DEFINED__ */ - - -#ifndef __DxtJpeg_FWD_DEFINED__ -#define __DxtJpeg_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class DxtJpeg DxtJpeg; -#else -typedef struct DxtJpeg DxtJpeg; -#endif /* __cplusplus */ - -#endif /* __DxtJpeg_FWD_DEFINED__ */ - - -#ifndef __ColorSource_FWD_DEFINED__ -#define __ColorSource_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class ColorSource ColorSource; -#else -typedef struct ColorSource ColorSource; -#endif /* __cplusplus */ - -#endif /* __ColorSource_FWD_DEFINED__ */ - - -#ifndef __DxtKey_FWD_DEFINED__ -#define __DxtKey_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class DxtKey DxtKey; -#else -typedef struct DxtKey DxtKey; -#endif /* __cplusplus */ - -#endif /* __DxtKey_FWD_DEFINED__ */ - - -/* header files for imported files */ -#include "oaidl.h" -#include "ocidl.h" -#include "dxtrans.h" -#include "amstream.h" - -#ifdef __cplusplus -extern "C"{ -#endif - -void * __RPC_USER MIDL_user_allocate(size_t); -void __RPC_USER MIDL_user_free( void * ); - -/* interface __MIDL_itf_qedit_0000 */ -/* [local] */ - - - - - - - - - - -typedef /* [public] */ -enum __MIDL___MIDL_itf_qedit_0000_0001 - { DEXTERF_JUMP = 0, - DEXTERF_INTERPOLATE = DEXTERF_JUMP + 1 - } DEXTERF; - -typedef /* [public][public][public][public] */ struct __MIDL___MIDL_itf_qedit_0000_0002 - { - BSTR Name; - DISPID dispID; - LONG nValues; - } DEXTER_PARAM; - -typedef /* [public][public][public][public] */ struct __MIDL___MIDL_itf_qedit_0000_0003 - { - VARIANT v; - REFERENCE_TIME rt; - DWORD dwInterp; - } DEXTER_VALUE; - - -enum __MIDL___MIDL_itf_qedit_0000_0004 - { DEXTER_AUDIO_JUMP = 0, - DEXTER_AUDIO_INTERPOLATE = DEXTER_AUDIO_JUMP + 1 - } ; -typedef /* [public] */ struct __MIDL___MIDL_itf_qedit_0000_0005 - { - REFERENCE_TIME rtEnd; - double dLevel; - BOOL bMethod; - } DEXTER_AUDIO_VOLUMEENVELOPE; - - -enum __MIDL___MIDL_itf_qedit_0000_0006 - { TIMELINE_INSERT_MODE_INSERT = 1, - TIMELINE_INSERT_MODE_OVERLAY = 2 - } ; -typedef /* [public][public][public][public][public][public][public][public] */ -enum __MIDL___MIDL_itf_qedit_0000_0007 - { TIMELINE_MAJOR_TYPE_COMPOSITE = 1, - TIMELINE_MAJOR_TYPE_TRACK = 2, - TIMELINE_MAJOR_TYPE_SOURCE = 4, - TIMELINE_MAJOR_TYPE_TRANSITION = 8, - TIMELINE_MAJOR_TYPE_EFFECT = 16, - TIMELINE_MAJOR_TYPE_GROUP = 128 - } TIMELINE_MAJOR_TYPE; - -typedef /* [public] */ -enum __MIDL___MIDL_itf_qedit_0000_0008 - { DEXTERF_BOUNDING = -1, - DEXTERF_EXACTLY_AT = 0, - DEXTERF_FORWARDS = 1 - } DEXTERF_TRACK_SEARCH_FLAGS; - -typedef struct _SCompFmt0 - { - long nFormatId; - AM_MEDIA_TYPE MediaType; - } SCompFmt0; - - -enum __MIDL___MIDL_itf_qedit_0000_0009 - { RESIZEF_STRETCH = 0, - RESIZEF_CROP = RESIZEF_STRETCH + 1, - RESIZEF_PRESERVEASPECTRATIO = RESIZEF_CROP + 1, - RESIZEF_PRESERVEASPECTRATIO_NOLETTERBOX = RESIZEF_PRESERVEASPECTRATIO + 1 - } ; - -enum __MIDL___MIDL_itf_qedit_0000_0010 - { CONNECTF_DYNAMIC_NONE = 0, - CONNECTF_DYNAMIC_SOURCES = 0x1, - CONNECTF_DYNAMIC_EFFECTS = 0x2 - } ; - -enum __MIDL___MIDL_itf_qedit_0000_0011 - { SFN_VALIDATEF_CHECK = 0x1, - SFN_VALIDATEF_POPUP = 0x2, - SFN_VALIDATEF_TELLME = 0x4, - SFN_VALIDATEF_REPLACE = 0x8, - SFN_VALIDATEF_USELOCAL = 0x10, - SFN_VALIDATEF_NOFIND = 0x20, - SFN_VALIDATEF_IGNOREMUTED = 0x40, - SFN_VALIDATEF_END = SFN_VALIDATEF_IGNOREMUTED + 1 - } ; - -enum __MIDL___MIDL_itf_qedit_0000_0012 - { DXTKEY_RGB = 0, - DXTKEY_NONRED = DXTKEY_RGB + 1, - DXTKEY_LUMINANCE = DXTKEY_NONRED + 1, - DXTKEY_ALPHA = DXTKEY_LUMINANCE + 1, - DXTKEY_HUE = DXTKEY_ALPHA + 1 - } ; - - -extern RPC_IF_HANDLE __MIDL_itf_qedit_0000_v0_0_c_ifspec; -extern RPC_IF_HANDLE __MIDL_itf_qedit_0000_v0_0_s_ifspec; - -#ifndef __IPropertySetter_INTERFACE_DEFINED__ -#define __IPropertySetter_INTERFACE_DEFINED__ - -/* interface IPropertySetter */ -/* [unique][helpstring][uuid][object] */ - - -EXTERN_C const IID IID_IPropertySetter; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("AE9472BD-B0C3-11D2-8D24-00A0C9441E20") - IPropertySetter : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE LoadXML( - /* [in] */ IUnknown *pxml) = 0; - - virtual HRESULT STDMETHODCALLTYPE PrintXML( - /* [out] */ char *pszXML, - /* [in] */ int cbXML, - /* [out] */ int *pcbPrinted, - /* [in] */ int indent) = 0; - - virtual HRESULT STDMETHODCALLTYPE CloneProps( - /* [out] */ IPropertySetter **ppSetter, - /* [in] */ REFERENCE_TIME rtStart, - /* [in] */ REFERENCE_TIME rtStop) = 0; - - virtual HRESULT STDMETHODCALLTYPE AddProp( - /* [in] */ DEXTER_PARAM Param, - /* [in] */ DEXTER_VALUE *paValue) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetProps( - /* [out] */ LONG *pcParams, - /* [out] */ DEXTER_PARAM **paParam, - /* [out] */ DEXTER_VALUE **paValue) = 0; - - virtual HRESULT STDMETHODCALLTYPE FreeProps( - /* [in] */ LONG cParams, - /* [in] */ DEXTER_PARAM *paParam, - /* [in] */ DEXTER_VALUE *paValue) = 0; - - virtual HRESULT STDMETHODCALLTYPE ClearProps( void) = 0; - - virtual HRESULT STDMETHODCALLTYPE SaveToBlob( - /* [out] */ LONG *pcSize, - /* [out] */ BYTE **ppb) = 0; - - virtual HRESULT STDMETHODCALLTYPE LoadFromBlob( - /* [in] */ LONG cSize, - /* [in] */ BYTE *pb) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetProps( - /* [in] */ IUnknown *pTarget, - /* [in] */ REFERENCE_TIME rtNow) = 0; - - virtual HRESULT STDMETHODCALLTYPE PrintXMLW( - /* [out] */ WCHAR *pszXML, - /* [in] */ int cchXML, - /* [out] */ int *pcchPrinted, - /* [in] */ int indent) = 0; - - }; - -#else /* C style interface */ - - typedef struct IPropertySetterVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IPropertySetter * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IPropertySetter * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IPropertySetter * This); - - HRESULT ( STDMETHODCALLTYPE *LoadXML )( - IPropertySetter * This, - /* [in] */ IUnknown *pxml); - - HRESULT ( STDMETHODCALLTYPE *PrintXML )( - IPropertySetter * This, - /* [out] */ char *pszXML, - /* [in] */ int cbXML, - /* [out] */ int *pcbPrinted, - /* [in] */ int indent); - - HRESULT ( STDMETHODCALLTYPE *CloneProps )( - IPropertySetter * This, - /* [out] */ IPropertySetter **ppSetter, - /* [in] */ REFERENCE_TIME rtStart, - /* [in] */ REFERENCE_TIME rtStop); - - HRESULT ( STDMETHODCALLTYPE *AddProp )( - IPropertySetter * This, - /* [in] */ DEXTER_PARAM Param, - /* [in] */ DEXTER_VALUE *paValue); - - HRESULT ( STDMETHODCALLTYPE *GetProps )( - IPropertySetter * This, - /* [out] */ LONG *pcParams, - /* [out] */ DEXTER_PARAM **paParam, - /* [out] */ DEXTER_VALUE **paValue); - - HRESULT ( STDMETHODCALLTYPE *FreeProps )( - IPropertySetter * This, - /* [in] */ LONG cParams, - /* [in] */ DEXTER_PARAM *paParam, - /* [in] */ DEXTER_VALUE *paValue); - - HRESULT ( STDMETHODCALLTYPE *ClearProps )( - IPropertySetter * This); - - HRESULT ( STDMETHODCALLTYPE *SaveToBlob )( - IPropertySetter * This, - /* [out] */ LONG *pcSize, - /* [out] */ BYTE **ppb); - - HRESULT ( STDMETHODCALLTYPE *LoadFromBlob )( - IPropertySetter * This, - /* [in] */ LONG cSize, - /* [in] */ BYTE *pb); - - HRESULT ( STDMETHODCALLTYPE *SetProps )( - IPropertySetter * This, - /* [in] */ IUnknown *pTarget, - /* [in] */ REFERENCE_TIME rtNow); - - HRESULT ( STDMETHODCALLTYPE *PrintXMLW )( - IPropertySetter * This, - /* [out] */ WCHAR *pszXML, - /* [in] */ int cchXML, - /* [out] */ int *pcchPrinted, - /* [in] */ int indent); - - END_INTERFACE - } IPropertySetterVtbl; - - interface IPropertySetter - { - CONST_VTBL struct IPropertySetterVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IPropertySetter_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IPropertySetter_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IPropertySetter_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IPropertySetter_LoadXML(This,pxml) \ - (This)->lpVtbl -> LoadXML(This,pxml) - -#define IPropertySetter_PrintXML(This,pszXML,cbXML,pcbPrinted,indent) \ - (This)->lpVtbl -> PrintXML(This,pszXML,cbXML,pcbPrinted,indent) - -#define IPropertySetter_CloneProps(This,ppSetter,rtStart,rtStop) \ - (This)->lpVtbl -> CloneProps(This,ppSetter,rtStart,rtStop) - -#define IPropertySetter_AddProp(This,Param,paValue) \ - (This)->lpVtbl -> AddProp(This,Param,paValue) - -#define IPropertySetter_GetProps(This,pcParams,paParam,paValue) \ - (This)->lpVtbl -> GetProps(This,pcParams,paParam,paValue) - -#define IPropertySetter_FreeProps(This,cParams,paParam,paValue) \ - (This)->lpVtbl -> FreeProps(This,cParams,paParam,paValue) - -#define IPropertySetter_ClearProps(This) \ - (This)->lpVtbl -> ClearProps(This) - -#define IPropertySetter_SaveToBlob(This,pcSize,ppb) \ - (This)->lpVtbl -> SaveToBlob(This,pcSize,ppb) - -#define IPropertySetter_LoadFromBlob(This,cSize,pb) \ - (This)->lpVtbl -> LoadFromBlob(This,cSize,pb) - -#define IPropertySetter_SetProps(This,pTarget,rtNow) \ - (This)->lpVtbl -> SetProps(This,pTarget,rtNow) - -#define IPropertySetter_PrintXMLW(This,pszXML,cchXML,pcchPrinted,indent) \ - (This)->lpVtbl -> PrintXMLW(This,pszXML,cchXML,pcchPrinted,indent) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IPropertySetter_LoadXML_Proxy( - IPropertySetter * This, - /* [in] */ IUnknown *pxml); - - -void __RPC_STUB IPropertySetter_LoadXML_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IPropertySetter_PrintXML_Proxy( - IPropertySetter * This, - /* [out] */ char *pszXML, - /* [in] */ int cbXML, - /* [out] */ int *pcbPrinted, - /* [in] */ int indent); - - -void __RPC_STUB IPropertySetter_PrintXML_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IPropertySetter_CloneProps_Proxy( - IPropertySetter * This, - /* [out] */ IPropertySetter **ppSetter, - /* [in] */ REFERENCE_TIME rtStart, - /* [in] */ REFERENCE_TIME rtStop); - - -void __RPC_STUB IPropertySetter_CloneProps_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IPropertySetter_AddProp_Proxy( - IPropertySetter * This, - /* [in] */ DEXTER_PARAM Param, - /* [in] */ DEXTER_VALUE *paValue); - - -void __RPC_STUB IPropertySetter_AddProp_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IPropertySetter_GetProps_Proxy( - IPropertySetter * This, - /* [out] */ LONG *pcParams, - /* [out] */ DEXTER_PARAM **paParam, - /* [out] */ DEXTER_VALUE **paValue); - - -void __RPC_STUB IPropertySetter_GetProps_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IPropertySetter_FreeProps_Proxy( - IPropertySetter * This, - /* [in] */ LONG cParams, - /* [in] */ DEXTER_PARAM *paParam, - /* [in] */ DEXTER_VALUE *paValue); - - -void __RPC_STUB IPropertySetter_FreeProps_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IPropertySetter_ClearProps_Proxy( - IPropertySetter * This); - - -void __RPC_STUB IPropertySetter_ClearProps_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IPropertySetter_SaveToBlob_Proxy( - IPropertySetter * This, - /* [out] */ LONG *pcSize, - /* [out] */ BYTE **ppb); - - -void __RPC_STUB IPropertySetter_SaveToBlob_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IPropertySetter_LoadFromBlob_Proxy( - IPropertySetter * This, - /* [in] */ LONG cSize, - /* [in] */ BYTE *pb); - - -void __RPC_STUB IPropertySetter_LoadFromBlob_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IPropertySetter_SetProps_Proxy( - IPropertySetter * This, - /* [in] */ IUnknown *pTarget, - /* [in] */ REFERENCE_TIME rtNow); - - -void __RPC_STUB IPropertySetter_SetProps_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IPropertySetter_PrintXMLW_Proxy( - IPropertySetter * This, - /* [out] */ WCHAR *pszXML, - /* [in] */ int cchXML, - /* [out] */ int *pcchPrinted, - /* [in] */ int indent); - - -void __RPC_STUB IPropertySetter_PrintXMLW_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IPropertySetter_INTERFACE_DEFINED__ */ - - -#ifndef __IDxtCompositor_INTERFACE_DEFINED__ -#define __IDxtCompositor_INTERFACE_DEFINED__ - -/* interface IDxtCompositor */ -/* [unique][helpstring][dual][uuid][object] */ - - -EXTERN_C const IID IID_IDxtCompositor; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("BB44391E-6ABD-422f-9E2E-385C9DFF51FC") - IDxtCompositor : public IDXEffect - { - public: - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_OffsetX( - /* [retval][out] */ long *pVal) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_OffsetX( - /* [in] */ long newVal) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_OffsetY( - /* [retval][out] */ long *pVal) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_OffsetY( - /* [in] */ long newVal) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Width( - /* [retval][out] */ long *pVal) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_Width( - /* [in] */ long newVal) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Height( - /* [retval][out] */ long *pVal) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_Height( - /* [in] */ long newVal) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_SrcOffsetX( - /* [retval][out] */ long *pVal) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_SrcOffsetX( - /* [in] */ long newVal) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_SrcOffsetY( - /* [retval][out] */ long *pVal) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_SrcOffsetY( - /* [in] */ long newVal) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_SrcWidth( - /* [retval][out] */ long *pVal) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_SrcWidth( - /* [in] */ long newVal) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_SrcHeight( - /* [retval][out] */ long *pVal) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_SrcHeight( - /* [in] */ long newVal) = 0; - - }; - -#else /* C style interface */ - - typedef struct IDxtCompositorVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IDxtCompositor * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IDxtCompositor * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IDxtCompositor * This); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( - IDxtCompositor * This, - /* [out] */ UINT *pctinfo); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( - IDxtCompositor * This, - /* [in] */ UINT iTInfo, - /* [in] */ LCID lcid, - /* [out] */ ITypeInfo **ppTInfo); - - HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( - IDxtCompositor * This, - /* [in] */ REFIID riid, - /* [size_is][in] */ LPOLESTR *rgszNames, - /* [in] */ UINT cNames, - /* [in] */ LCID lcid, - /* [size_is][out] */ DISPID *rgDispId); - - /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( - IDxtCompositor * This, - /* [in] */ DISPID dispIdMember, - /* [in] */ REFIID riid, - /* [in] */ LCID lcid, - /* [in] */ WORD wFlags, - /* [out][in] */ DISPPARAMS *pDispParams, - /* [out] */ VARIANT *pVarResult, - /* [out] */ EXCEPINFO *pExcepInfo, - /* [out] */ UINT *puArgErr); - - /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Capabilities )( - IDxtCompositor * This, - /* [retval][out] */ long *pVal); - - /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Progress )( - IDxtCompositor * This, - /* [retval][out] */ float *pVal); - - /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Progress )( - IDxtCompositor * This, - /* [in] */ float newVal); - - /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_StepResolution )( - IDxtCompositor * This, - /* [retval][out] */ float *pVal); - - /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Duration )( - IDxtCompositor * This, - /* [retval][out] */ float *pVal); - - /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Duration )( - IDxtCompositor * This, - /* [in] */ float newVal); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_OffsetX )( - IDxtCompositor * This, - /* [retval][out] */ long *pVal); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_OffsetX )( - IDxtCompositor * This, - /* [in] */ long newVal); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_OffsetY )( - IDxtCompositor * This, - /* [retval][out] */ long *pVal); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_OffsetY )( - IDxtCompositor * This, - /* [in] */ long newVal); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Width )( - IDxtCompositor * This, - /* [retval][out] */ long *pVal); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Width )( - IDxtCompositor * This, - /* [in] */ long newVal); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Height )( - IDxtCompositor * This, - /* [retval][out] */ long *pVal); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Height )( - IDxtCompositor * This, - /* [in] */ long newVal); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_SrcOffsetX )( - IDxtCompositor * This, - /* [retval][out] */ long *pVal); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_SrcOffsetX )( - IDxtCompositor * This, - /* [in] */ long newVal); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_SrcOffsetY )( - IDxtCompositor * This, - /* [retval][out] */ long *pVal); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_SrcOffsetY )( - IDxtCompositor * This, - /* [in] */ long newVal); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_SrcWidth )( - IDxtCompositor * This, - /* [retval][out] */ long *pVal); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_SrcWidth )( - IDxtCompositor * This, - /* [in] */ long newVal); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_SrcHeight )( - IDxtCompositor * This, - /* [retval][out] */ long *pVal); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_SrcHeight )( - IDxtCompositor * This, - /* [in] */ long newVal); - - END_INTERFACE - } IDxtCompositorVtbl; - - interface IDxtCompositor - { - CONST_VTBL struct IDxtCompositorVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IDxtCompositor_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IDxtCompositor_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IDxtCompositor_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IDxtCompositor_GetTypeInfoCount(This,pctinfo) \ - (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) - -#define IDxtCompositor_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ - (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) - -#define IDxtCompositor_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ - (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) - -#define IDxtCompositor_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ - (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) - - -#define IDxtCompositor_get_Capabilities(This,pVal) \ - (This)->lpVtbl -> get_Capabilities(This,pVal) - -#define IDxtCompositor_get_Progress(This,pVal) \ - (This)->lpVtbl -> get_Progress(This,pVal) - -#define IDxtCompositor_put_Progress(This,newVal) \ - (This)->lpVtbl -> put_Progress(This,newVal) - -#define IDxtCompositor_get_StepResolution(This,pVal) \ - (This)->lpVtbl -> get_StepResolution(This,pVal) - -#define IDxtCompositor_get_Duration(This,pVal) \ - (This)->lpVtbl -> get_Duration(This,pVal) - -#define IDxtCompositor_put_Duration(This,newVal) \ - (This)->lpVtbl -> put_Duration(This,newVal) - - -#define IDxtCompositor_get_OffsetX(This,pVal) \ - (This)->lpVtbl -> get_OffsetX(This,pVal) - -#define IDxtCompositor_put_OffsetX(This,newVal) \ - (This)->lpVtbl -> put_OffsetX(This,newVal) - -#define IDxtCompositor_get_OffsetY(This,pVal) \ - (This)->lpVtbl -> get_OffsetY(This,pVal) - -#define IDxtCompositor_put_OffsetY(This,newVal) \ - (This)->lpVtbl -> put_OffsetY(This,newVal) - -#define IDxtCompositor_get_Width(This,pVal) \ - (This)->lpVtbl -> get_Width(This,pVal) - -#define IDxtCompositor_put_Width(This,newVal) \ - (This)->lpVtbl -> put_Width(This,newVal) - -#define IDxtCompositor_get_Height(This,pVal) \ - (This)->lpVtbl -> get_Height(This,pVal) - -#define IDxtCompositor_put_Height(This,newVal) \ - (This)->lpVtbl -> put_Height(This,newVal) - -#define IDxtCompositor_get_SrcOffsetX(This,pVal) \ - (This)->lpVtbl -> get_SrcOffsetX(This,pVal) - -#define IDxtCompositor_put_SrcOffsetX(This,newVal) \ - (This)->lpVtbl -> put_SrcOffsetX(This,newVal) - -#define IDxtCompositor_get_SrcOffsetY(This,pVal) \ - (This)->lpVtbl -> get_SrcOffsetY(This,pVal) - -#define IDxtCompositor_put_SrcOffsetY(This,newVal) \ - (This)->lpVtbl -> put_SrcOffsetY(This,newVal) - -#define IDxtCompositor_get_SrcWidth(This,pVal) \ - (This)->lpVtbl -> get_SrcWidth(This,pVal) - -#define IDxtCompositor_put_SrcWidth(This,newVal) \ - (This)->lpVtbl -> put_SrcWidth(This,newVal) - -#define IDxtCompositor_get_SrcHeight(This,pVal) \ - (This)->lpVtbl -> get_SrcHeight(This,pVal) - -#define IDxtCompositor_put_SrcHeight(This,newVal) \ - (This)->lpVtbl -> put_SrcHeight(This,newVal) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDxtCompositor_get_OffsetX_Proxy( - IDxtCompositor * This, - /* [retval][out] */ long *pVal); - - -void __RPC_STUB IDxtCompositor_get_OffsetX_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDxtCompositor_put_OffsetX_Proxy( - IDxtCompositor * This, - /* [in] */ long newVal); - - -void __RPC_STUB IDxtCompositor_put_OffsetX_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDxtCompositor_get_OffsetY_Proxy( - IDxtCompositor * This, - /* [retval][out] */ long *pVal); - - -void __RPC_STUB IDxtCompositor_get_OffsetY_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDxtCompositor_put_OffsetY_Proxy( - IDxtCompositor * This, - /* [in] */ long newVal); - - -void __RPC_STUB IDxtCompositor_put_OffsetY_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDxtCompositor_get_Width_Proxy( - IDxtCompositor * This, - /* [retval][out] */ long *pVal); - - -void __RPC_STUB IDxtCompositor_get_Width_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDxtCompositor_put_Width_Proxy( - IDxtCompositor * This, - /* [in] */ long newVal); - - -void __RPC_STUB IDxtCompositor_put_Width_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDxtCompositor_get_Height_Proxy( - IDxtCompositor * This, - /* [retval][out] */ long *pVal); - - -void __RPC_STUB IDxtCompositor_get_Height_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDxtCompositor_put_Height_Proxy( - IDxtCompositor * This, - /* [in] */ long newVal); - - -void __RPC_STUB IDxtCompositor_put_Height_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDxtCompositor_get_SrcOffsetX_Proxy( - IDxtCompositor * This, - /* [retval][out] */ long *pVal); - - -void __RPC_STUB IDxtCompositor_get_SrcOffsetX_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDxtCompositor_put_SrcOffsetX_Proxy( - IDxtCompositor * This, - /* [in] */ long newVal); - - -void __RPC_STUB IDxtCompositor_put_SrcOffsetX_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDxtCompositor_get_SrcOffsetY_Proxy( - IDxtCompositor * This, - /* [retval][out] */ long *pVal); - - -void __RPC_STUB IDxtCompositor_get_SrcOffsetY_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDxtCompositor_put_SrcOffsetY_Proxy( - IDxtCompositor * This, - /* [in] */ long newVal); - - -void __RPC_STUB IDxtCompositor_put_SrcOffsetY_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDxtCompositor_get_SrcWidth_Proxy( - IDxtCompositor * This, - /* [retval][out] */ long *pVal); - - -void __RPC_STUB IDxtCompositor_get_SrcWidth_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDxtCompositor_put_SrcWidth_Proxy( - IDxtCompositor * This, - /* [in] */ long newVal); - - -void __RPC_STUB IDxtCompositor_put_SrcWidth_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDxtCompositor_get_SrcHeight_Proxy( - IDxtCompositor * This, - /* [retval][out] */ long *pVal); - - -void __RPC_STUB IDxtCompositor_get_SrcHeight_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDxtCompositor_put_SrcHeight_Proxy( - IDxtCompositor * This, - /* [in] */ long newVal); - - -void __RPC_STUB IDxtCompositor_put_SrcHeight_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IDxtCompositor_INTERFACE_DEFINED__ */ - - -#ifndef __IDxtAlphaSetter_INTERFACE_DEFINED__ -#define __IDxtAlphaSetter_INTERFACE_DEFINED__ - -/* interface IDxtAlphaSetter */ -/* [unique][helpstring][dual][uuid][object] */ - - -EXTERN_C const IID IID_IDxtAlphaSetter; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("4EE9EAD9-DA4D-43d0-9383-06B90C08B12B") - IDxtAlphaSetter : public IDXEffect - { - public: - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Alpha( - /* [retval][out] */ long *pVal) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_Alpha( - /* [in] */ long newVal) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_AlphaRamp( - /* [retval][out] */ double *pVal) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_AlphaRamp( - /* [in] */ double newVal) = 0; - - }; - -#else /* C style interface */ - - typedef struct IDxtAlphaSetterVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IDxtAlphaSetter * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IDxtAlphaSetter * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IDxtAlphaSetter * This); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( - IDxtAlphaSetter * This, - /* [out] */ UINT *pctinfo); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( - IDxtAlphaSetter * This, - /* [in] */ UINT iTInfo, - /* [in] */ LCID lcid, - /* [out] */ ITypeInfo **ppTInfo); - - HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( - IDxtAlphaSetter * This, - /* [in] */ REFIID riid, - /* [size_is][in] */ LPOLESTR *rgszNames, - /* [in] */ UINT cNames, - /* [in] */ LCID lcid, - /* [size_is][out] */ DISPID *rgDispId); - - /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( - IDxtAlphaSetter * This, - /* [in] */ DISPID dispIdMember, - /* [in] */ REFIID riid, - /* [in] */ LCID lcid, - /* [in] */ WORD wFlags, - /* [out][in] */ DISPPARAMS *pDispParams, - /* [out] */ VARIANT *pVarResult, - /* [out] */ EXCEPINFO *pExcepInfo, - /* [out] */ UINT *puArgErr); - - /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Capabilities )( - IDxtAlphaSetter * This, - /* [retval][out] */ long *pVal); - - /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Progress )( - IDxtAlphaSetter * This, - /* [retval][out] */ float *pVal); - - /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Progress )( - IDxtAlphaSetter * This, - /* [in] */ float newVal); - - /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_StepResolution )( - IDxtAlphaSetter * This, - /* [retval][out] */ float *pVal); - - /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Duration )( - IDxtAlphaSetter * This, - /* [retval][out] */ float *pVal); - - /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Duration )( - IDxtAlphaSetter * This, - /* [in] */ float newVal); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Alpha )( - IDxtAlphaSetter * This, - /* [retval][out] */ long *pVal); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Alpha )( - IDxtAlphaSetter * This, - /* [in] */ long newVal); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_AlphaRamp )( - IDxtAlphaSetter * This, - /* [retval][out] */ double *pVal); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_AlphaRamp )( - IDxtAlphaSetter * This, - /* [in] */ double newVal); - - END_INTERFACE - } IDxtAlphaSetterVtbl; - - interface IDxtAlphaSetter - { - CONST_VTBL struct IDxtAlphaSetterVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IDxtAlphaSetter_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IDxtAlphaSetter_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IDxtAlphaSetter_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IDxtAlphaSetter_GetTypeInfoCount(This,pctinfo) \ - (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) - -#define IDxtAlphaSetter_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ - (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) - -#define IDxtAlphaSetter_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ - (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) - -#define IDxtAlphaSetter_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ - (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) - - -#define IDxtAlphaSetter_get_Capabilities(This,pVal) \ - (This)->lpVtbl -> get_Capabilities(This,pVal) - -#define IDxtAlphaSetter_get_Progress(This,pVal) \ - (This)->lpVtbl -> get_Progress(This,pVal) - -#define IDxtAlphaSetter_put_Progress(This,newVal) \ - (This)->lpVtbl -> put_Progress(This,newVal) - -#define IDxtAlphaSetter_get_StepResolution(This,pVal) \ - (This)->lpVtbl -> get_StepResolution(This,pVal) - -#define IDxtAlphaSetter_get_Duration(This,pVal) \ - (This)->lpVtbl -> get_Duration(This,pVal) - -#define IDxtAlphaSetter_put_Duration(This,newVal) \ - (This)->lpVtbl -> put_Duration(This,newVal) - - -#define IDxtAlphaSetter_get_Alpha(This,pVal) \ - (This)->lpVtbl -> get_Alpha(This,pVal) - -#define IDxtAlphaSetter_put_Alpha(This,newVal) \ - (This)->lpVtbl -> put_Alpha(This,newVal) - -#define IDxtAlphaSetter_get_AlphaRamp(This,pVal) \ - (This)->lpVtbl -> get_AlphaRamp(This,pVal) - -#define IDxtAlphaSetter_put_AlphaRamp(This,newVal) \ - (This)->lpVtbl -> put_AlphaRamp(This,newVal) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDxtAlphaSetter_get_Alpha_Proxy( - IDxtAlphaSetter * This, - /* [retval][out] */ long *pVal); - - -void __RPC_STUB IDxtAlphaSetter_get_Alpha_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDxtAlphaSetter_put_Alpha_Proxy( - IDxtAlphaSetter * This, - /* [in] */ long newVal); - - -void __RPC_STUB IDxtAlphaSetter_put_Alpha_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDxtAlphaSetter_get_AlphaRamp_Proxy( - IDxtAlphaSetter * This, - /* [retval][out] */ double *pVal); - - -void __RPC_STUB IDxtAlphaSetter_get_AlphaRamp_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDxtAlphaSetter_put_AlphaRamp_Proxy( - IDxtAlphaSetter * This, - /* [in] */ double newVal); - - -void __RPC_STUB IDxtAlphaSetter_put_AlphaRamp_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IDxtAlphaSetter_INTERFACE_DEFINED__ */ - - -#ifndef __IDxtJpeg_INTERFACE_DEFINED__ -#define __IDxtJpeg_INTERFACE_DEFINED__ - -/* interface IDxtJpeg */ -/* [unique][helpstring][dual][uuid][object] */ - - -EXTERN_C const IID IID_IDxtJpeg; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("DE75D011-7A65-11D2-8CEA-00A0C9441E20") - IDxtJpeg : public IDXEffect - { - public: - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_MaskNum( - /* [retval][out] */ long *__MIDL_0021) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_MaskNum( - /* [in] */ long __MIDL_0022) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_MaskName( - /* [retval][out] */ BSTR *pVal) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_MaskName( - /* [in] */ BSTR newVal) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_ScaleX( - /* [retval][out] */ double *__MIDL_0023) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_ScaleX( - /* [in] */ double __MIDL_0024) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_ScaleY( - /* [retval][out] */ double *__MIDL_0025) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_ScaleY( - /* [in] */ double __MIDL_0026) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_OffsetX( - /* [retval][out] */ long *__MIDL_0027) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_OffsetX( - /* [in] */ long __MIDL_0028) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_OffsetY( - /* [retval][out] */ long *__MIDL_0029) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_OffsetY( - /* [in] */ long __MIDL_0030) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_ReplicateX( - /* [retval][out] */ long *pVal) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_ReplicateX( - /* [in] */ long newVal) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_ReplicateY( - /* [retval][out] */ long *pVal) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_ReplicateY( - /* [in] */ long newVal) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_BorderColor( - /* [retval][out] */ long *pVal) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_BorderColor( - /* [in] */ long newVal) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_BorderWidth( - /* [retval][out] */ long *pVal) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_BorderWidth( - /* [in] */ long newVal) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_BorderSoftness( - /* [retval][out] */ long *pVal) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_BorderSoftness( - /* [in] */ long newVal) = 0; - - virtual HRESULT STDMETHODCALLTYPE ApplyChanges( void) = 0; - - virtual HRESULT STDMETHODCALLTYPE LoadDefSettings( void) = 0; - - }; - -#else /* C style interface */ - - typedef struct IDxtJpegVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IDxtJpeg * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IDxtJpeg * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IDxtJpeg * This); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( - IDxtJpeg * This, - /* [out] */ UINT *pctinfo); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( - IDxtJpeg * This, - /* [in] */ UINT iTInfo, - /* [in] */ LCID lcid, - /* [out] */ ITypeInfo **ppTInfo); - - HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( - IDxtJpeg * This, - /* [in] */ REFIID riid, - /* [size_is][in] */ LPOLESTR *rgszNames, - /* [in] */ UINT cNames, - /* [in] */ LCID lcid, - /* [size_is][out] */ DISPID *rgDispId); - - /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( - IDxtJpeg * This, - /* [in] */ DISPID dispIdMember, - /* [in] */ REFIID riid, - /* [in] */ LCID lcid, - /* [in] */ WORD wFlags, - /* [out][in] */ DISPPARAMS *pDispParams, - /* [out] */ VARIANT *pVarResult, - /* [out] */ EXCEPINFO *pExcepInfo, - /* [out] */ UINT *puArgErr); - - /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Capabilities )( - IDxtJpeg * This, - /* [retval][out] */ long *pVal); - - /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Progress )( - IDxtJpeg * This, - /* [retval][out] */ float *pVal); - - /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Progress )( - IDxtJpeg * This, - /* [in] */ float newVal); - - /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_StepResolution )( - IDxtJpeg * This, - /* [retval][out] */ float *pVal); - - /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Duration )( - IDxtJpeg * This, - /* [retval][out] */ float *pVal); - - /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Duration )( - IDxtJpeg * This, - /* [in] */ float newVal); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_MaskNum )( - IDxtJpeg * This, - /* [retval][out] */ long *__MIDL_0021); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_MaskNum )( - IDxtJpeg * This, - /* [in] */ long __MIDL_0022); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_MaskName )( - IDxtJpeg * This, - /* [retval][out] */ BSTR *pVal); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_MaskName )( - IDxtJpeg * This, - /* [in] */ BSTR newVal); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_ScaleX )( - IDxtJpeg * This, - /* [retval][out] */ double *__MIDL_0023); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_ScaleX )( - IDxtJpeg * This, - /* [in] */ double __MIDL_0024); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_ScaleY )( - IDxtJpeg * This, - /* [retval][out] */ double *__MIDL_0025); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_ScaleY )( - IDxtJpeg * This, - /* [in] */ double __MIDL_0026); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_OffsetX )( - IDxtJpeg * This, - /* [retval][out] */ long *__MIDL_0027); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_OffsetX )( - IDxtJpeg * This, - /* [in] */ long __MIDL_0028); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_OffsetY )( - IDxtJpeg * This, - /* [retval][out] */ long *__MIDL_0029); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_OffsetY )( - IDxtJpeg * This, - /* [in] */ long __MIDL_0030); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_ReplicateX )( - IDxtJpeg * This, - /* [retval][out] */ long *pVal); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_ReplicateX )( - IDxtJpeg * This, - /* [in] */ long newVal); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_ReplicateY )( - IDxtJpeg * This, - /* [retval][out] */ long *pVal); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_ReplicateY )( - IDxtJpeg * This, - /* [in] */ long newVal); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_BorderColor )( - IDxtJpeg * This, - /* [retval][out] */ long *pVal); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_BorderColor )( - IDxtJpeg * This, - /* [in] */ long newVal); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_BorderWidth )( - IDxtJpeg * This, - /* [retval][out] */ long *pVal); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_BorderWidth )( - IDxtJpeg * This, - /* [in] */ long newVal); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_BorderSoftness )( - IDxtJpeg * This, - /* [retval][out] */ long *pVal); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_BorderSoftness )( - IDxtJpeg * This, - /* [in] */ long newVal); - - HRESULT ( STDMETHODCALLTYPE *ApplyChanges )( - IDxtJpeg * This); - - HRESULT ( STDMETHODCALLTYPE *LoadDefSettings )( - IDxtJpeg * This); - - END_INTERFACE - } IDxtJpegVtbl; - - interface IDxtJpeg - { - CONST_VTBL struct IDxtJpegVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IDxtJpeg_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IDxtJpeg_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IDxtJpeg_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IDxtJpeg_GetTypeInfoCount(This,pctinfo) \ - (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) - -#define IDxtJpeg_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ - (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) - -#define IDxtJpeg_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ - (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) - -#define IDxtJpeg_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ - (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) - - -#define IDxtJpeg_get_Capabilities(This,pVal) \ - (This)->lpVtbl -> get_Capabilities(This,pVal) - -#define IDxtJpeg_get_Progress(This,pVal) \ - (This)->lpVtbl -> get_Progress(This,pVal) - -#define IDxtJpeg_put_Progress(This,newVal) \ - (This)->lpVtbl -> put_Progress(This,newVal) - -#define IDxtJpeg_get_StepResolution(This,pVal) \ - (This)->lpVtbl -> get_StepResolution(This,pVal) - -#define IDxtJpeg_get_Duration(This,pVal) \ - (This)->lpVtbl -> get_Duration(This,pVal) - -#define IDxtJpeg_put_Duration(This,newVal) \ - (This)->lpVtbl -> put_Duration(This,newVal) - - -#define IDxtJpeg_get_MaskNum(This,__MIDL_0021) \ - (This)->lpVtbl -> get_MaskNum(This,__MIDL_0021) - -#define IDxtJpeg_put_MaskNum(This,__MIDL_0022) \ - (This)->lpVtbl -> put_MaskNum(This,__MIDL_0022) - -#define IDxtJpeg_get_MaskName(This,pVal) \ - (This)->lpVtbl -> get_MaskName(This,pVal) - -#define IDxtJpeg_put_MaskName(This,newVal) \ - (This)->lpVtbl -> put_MaskName(This,newVal) - -#define IDxtJpeg_get_ScaleX(This,__MIDL_0023) \ - (This)->lpVtbl -> get_ScaleX(This,__MIDL_0023) - -#define IDxtJpeg_put_ScaleX(This,__MIDL_0024) \ - (This)->lpVtbl -> put_ScaleX(This,__MIDL_0024) - -#define IDxtJpeg_get_ScaleY(This,__MIDL_0025) \ - (This)->lpVtbl -> get_ScaleY(This,__MIDL_0025) - -#define IDxtJpeg_put_ScaleY(This,__MIDL_0026) \ - (This)->lpVtbl -> put_ScaleY(This,__MIDL_0026) - -#define IDxtJpeg_get_OffsetX(This,__MIDL_0027) \ - (This)->lpVtbl -> get_OffsetX(This,__MIDL_0027) - -#define IDxtJpeg_put_OffsetX(This,__MIDL_0028) \ - (This)->lpVtbl -> put_OffsetX(This,__MIDL_0028) - -#define IDxtJpeg_get_OffsetY(This,__MIDL_0029) \ - (This)->lpVtbl -> get_OffsetY(This,__MIDL_0029) - -#define IDxtJpeg_put_OffsetY(This,__MIDL_0030) \ - (This)->lpVtbl -> put_OffsetY(This,__MIDL_0030) - -#define IDxtJpeg_get_ReplicateX(This,pVal) \ - (This)->lpVtbl -> get_ReplicateX(This,pVal) - -#define IDxtJpeg_put_ReplicateX(This,newVal) \ - (This)->lpVtbl -> put_ReplicateX(This,newVal) - -#define IDxtJpeg_get_ReplicateY(This,pVal) \ - (This)->lpVtbl -> get_ReplicateY(This,pVal) - -#define IDxtJpeg_put_ReplicateY(This,newVal) \ - (This)->lpVtbl -> put_ReplicateY(This,newVal) - -#define IDxtJpeg_get_BorderColor(This,pVal) \ - (This)->lpVtbl -> get_BorderColor(This,pVal) - -#define IDxtJpeg_put_BorderColor(This,newVal) \ - (This)->lpVtbl -> put_BorderColor(This,newVal) - -#define IDxtJpeg_get_BorderWidth(This,pVal) \ - (This)->lpVtbl -> get_BorderWidth(This,pVal) - -#define IDxtJpeg_put_BorderWidth(This,newVal) \ - (This)->lpVtbl -> put_BorderWidth(This,newVal) - -#define IDxtJpeg_get_BorderSoftness(This,pVal) \ - (This)->lpVtbl -> get_BorderSoftness(This,pVal) - -#define IDxtJpeg_put_BorderSoftness(This,newVal) \ - (This)->lpVtbl -> put_BorderSoftness(This,newVal) - -#define IDxtJpeg_ApplyChanges(This) \ - (This)->lpVtbl -> ApplyChanges(This) - -#define IDxtJpeg_LoadDefSettings(This) \ - (This)->lpVtbl -> LoadDefSettings(This) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDxtJpeg_get_MaskNum_Proxy( - IDxtJpeg * This, - /* [retval][out] */ long *__MIDL_0021); - - -void __RPC_STUB IDxtJpeg_get_MaskNum_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDxtJpeg_put_MaskNum_Proxy( - IDxtJpeg * This, - /* [in] */ long __MIDL_0022); - - -void __RPC_STUB IDxtJpeg_put_MaskNum_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDxtJpeg_get_MaskName_Proxy( - IDxtJpeg * This, - /* [retval][out] */ BSTR *pVal); - - -void __RPC_STUB IDxtJpeg_get_MaskName_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDxtJpeg_put_MaskName_Proxy( - IDxtJpeg * This, - /* [in] */ BSTR newVal); - - -void __RPC_STUB IDxtJpeg_put_MaskName_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDxtJpeg_get_ScaleX_Proxy( - IDxtJpeg * This, - /* [retval][out] */ double *__MIDL_0023); - - -void __RPC_STUB IDxtJpeg_get_ScaleX_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDxtJpeg_put_ScaleX_Proxy( - IDxtJpeg * This, - /* [in] */ double __MIDL_0024); - - -void __RPC_STUB IDxtJpeg_put_ScaleX_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDxtJpeg_get_ScaleY_Proxy( - IDxtJpeg * This, - /* [retval][out] */ double *__MIDL_0025); - - -void __RPC_STUB IDxtJpeg_get_ScaleY_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDxtJpeg_put_ScaleY_Proxy( - IDxtJpeg * This, - /* [in] */ double __MIDL_0026); - - -void __RPC_STUB IDxtJpeg_put_ScaleY_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDxtJpeg_get_OffsetX_Proxy( - IDxtJpeg * This, - /* [retval][out] */ long *__MIDL_0027); - - -void __RPC_STUB IDxtJpeg_get_OffsetX_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDxtJpeg_put_OffsetX_Proxy( - IDxtJpeg * This, - /* [in] */ long __MIDL_0028); - - -void __RPC_STUB IDxtJpeg_put_OffsetX_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDxtJpeg_get_OffsetY_Proxy( - IDxtJpeg * This, - /* [retval][out] */ long *__MIDL_0029); - - -void __RPC_STUB IDxtJpeg_get_OffsetY_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDxtJpeg_put_OffsetY_Proxy( - IDxtJpeg * This, - /* [in] */ long __MIDL_0030); - - -void __RPC_STUB IDxtJpeg_put_OffsetY_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDxtJpeg_get_ReplicateX_Proxy( - IDxtJpeg * This, - /* [retval][out] */ long *pVal); - - -void __RPC_STUB IDxtJpeg_get_ReplicateX_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDxtJpeg_put_ReplicateX_Proxy( - IDxtJpeg * This, - /* [in] */ long newVal); - - -void __RPC_STUB IDxtJpeg_put_ReplicateX_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDxtJpeg_get_ReplicateY_Proxy( - IDxtJpeg * This, - /* [retval][out] */ long *pVal); - - -void __RPC_STUB IDxtJpeg_get_ReplicateY_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDxtJpeg_put_ReplicateY_Proxy( - IDxtJpeg * This, - /* [in] */ long newVal); - - -void __RPC_STUB IDxtJpeg_put_ReplicateY_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDxtJpeg_get_BorderColor_Proxy( - IDxtJpeg * This, - /* [retval][out] */ long *pVal); - - -void __RPC_STUB IDxtJpeg_get_BorderColor_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDxtJpeg_put_BorderColor_Proxy( - IDxtJpeg * This, - /* [in] */ long newVal); - - -void __RPC_STUB IDxtJpeg_put_BorderColor_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDxtJpeg_get_BorderWidth_Proxy( - IDxtJpeg * This, - /* [retval][out] */ long *pVal); - - -void __RPC_STUB IDxtJpeg_get_BorderWidth_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDxtJpeg_put_BorderWidth_Proxy( - IDxtJpeg * This, - /* [in] */ long newVal); - - -void __RPC_STUB IDxtJpeg_put_BorderWidth_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDxtJpeg_get_BorderSoftness_Proxy( - IDxtJpeg * This, - /* [retval][out] */ long *pVal); - - -void __RPC_STUB IDxtJpeg_get_BorderSoftness_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDxtJpeg_put_BorderSoftness_Proxy( - IDxtJpeg * This, - /* [in] */ long newVal); - - -void __RPC_STUB IDxtJpeg_put_BorderSoftness_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IDxtJpeg_ApplyChanges_Proxy( - IDxtJpeg * This); - - -void __RPC_STUB IDxtJpeg_ApplyChanges_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IDxtJpeg_LoadDefSettings_Proxy( - IDxtJpeg * This); - - -void __RPC_STUB IDxtJpeg_LoadDefSettings_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IDxtJpeg_INTERFACE_DEFINED__ */ - - -#ifndef __IDxtKey_INTERFACE_DEFINED__ -#define __IDxtKey_INTERFACE_DEFINED__ - -/* interface IDxtKey */ -/* [unique][helpstring][dual][uuid][object] */ - - -EXTERN_C const IID IID_IDxtKey; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("3255de56-38fb-4901-b980-94b438010d7b") - IDxtKey : public IDXEffect - { - public: - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_KeyType( - /* [retval][out] */ int *__MIDL_0031) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_KeyType( - /* [in] */ int __MIDL_0032) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Hue( - /* [retval][out] */ int *__MIDL_0033) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_Hue( - /* [in] */ int __MIDL_0034) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Luminance( - /* [retval][out] */ int *__MIDL_0035) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_Luminance( - /* [in] */ int __MIDL_0036) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_RGB( - /* [retval][out] */ DWORD *__MIDL_0037) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_RGB( - /* [in] */ DWORD __MIDL_0038) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Similarity( - /* [retval][out] */ int *__MIDL_0039) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_Similarity( - /* [in] */ int __MIDL_0040) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Invert( - /* [retval][out] */ BOOL *__MIDL_0041) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_Invert( - /* [in] */ BOOL __MIDL_0042) = 0; - - }; - -#else /* C style interface */ - - typedef struct IDxtKeyVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IDxtKey * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IDxtKey * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IDxtKey * This); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( - IDxtKey * This, - /* [out] */ UINT *pctinfo); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( - IDxtKey * This, - /* [in] */ UINT iTInfo, - /* [in] */ LCID lcid, - /* [out] */ ITypeInfo **ppTInfo); - - HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( - IDxtKey * This, - /* [in] */ REFIID riid, - /* [size_is][in] */ LPOLESTR *rgszNames, - /* [in] */ UINT cNames, - /* [in] */ LCID lcid, - /* [size_is][out] */ DISPID *rgDispId); - - /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( - IDxtKey * This, - /* [in] */ DISPID dispIdMember, - /* [in] */ REFIID riid, - /* [in] */ LCID lcid, - /* [in] */ WORD wFlags, - /* [out][in] */ DISPPARAMS *pDispParams, - /* [out] */ VARIANT *pVarResult, - /* [out] */ EXCEPINFO *pExcepInfo, - /* [out] */ UINT *puArgErr); - - /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Capabilities )( - IDxtKey * This, - /* [retval][out] */ long *pVal); - - /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Progress )( - IDxtKey * This, - /* [retval][out] */ float *pVal); - - /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Progress )( - IDxtKey * This, - /* [in] */ float newVal); - - /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_StepResolution )( - IDxtKey * This, - /* [retval][out] */ float *pVal); - - /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Duration )( - IDxtKey * This, - /* [retval][out] */ float *pVal); - - /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Duration )( - IDxtKey * This, - /* [in] */ float newVal); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_KeyType )( - IDxtKey * This, - /* [retval][out] */ int *__MIDL_0031); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_KeyType )( - IDxtKey * This, - /* [in] */ int __MIDL_0032); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Hue )( - IDxtKey * This, - /* [retval][out] */ int *__MIDL_0033); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Hue )( - IDxtKey * This, - /* [in] */ int __MIDL_0034); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Luminance )( - IDxtKey * This, - /* [retval][out] */ int *__MIDL_0035); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Luminance )( - IDxtKey * This, - /* [in] */ int __MIDL_0036); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_RGB )( - IDxtKey * This, - /* [retval][out] */ DWORD *__MIDL_0037); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_RGB )( - IDxtKey * This, - /* [in] */ DWORD __MIDL_0038); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Similarity )( - IDxtKey * This, - /* [retval][out] */ int *__MIDL_0039); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Similarity )( - IDxtKey * This, - /* [in] */ int __MIDL_0040); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Invert )( - IDxtKey * This, - /* [retval][out] */ BOOL *__MIDL_0041); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Invert )( - IDxtKey * This, - /* [in] */ BOOL __MIDL_0042); - - END_INTERFACE - } IDxtKeyVtbl; - - interface IDxtKey - { - CONST_VTBL struct IDxtKeyVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IDxtKey_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IDxtKey_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IDxtKey_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IDxtKey_GetTypeInfoCount(This,pctinfo) \ - (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) - -#define IDxtKey_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ - (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) - -#define IDxtKey_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ - (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) - -#define IDxtKey_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ - (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) - - -#define IDxtKey_get_Capabilities(This,pVal) \ - (This)->lpVtbl -> get_Capabilities(This,pVal) - -#define IDxtKey_get_Progress(This,pVal) \ - (This)->lpVtbl -> get_Progress(This,pVal) - -#define IDxtKey_put_Progress(This,newVal) \ - (This)->lpVtbl -> put_Progress(This,newVal) - -#define IDxtKey_get_StepResolution(This,pVal) \ - (This)->lpVtbl -> get_StepResolution(This,pVal) - -#define IDxtKey_get_Duration(This,pVal) \ - (This)->lpVtbl -> get_Duration(This,pVal) - -#define IDxtKey_put_Duration(This,newVal) \ - (This)->lpVtbl -> put_Duration(This,newVal) - - -#define IDxtKey_get_KeyType(This,__MIDL_0031) \ - (This)->lpVtbl -> get_KeyType(This,__MIDL_0031) - -#define IDxtKey_put_KeyType(This,__MIDL_0032) \ - (This)->lpVtbl -> put_KeyType(This,__MIDL_0032) - -#define IDxtKey_get_Hue(This,__MIDL_0033) \ - (This)->lpVtbl -> get_Hue(This,__MIDL_0033) - -#define IDxtKey_put_Hue(This,__MIDL_0034) \ - (This)->lpVtbl -> put_Hue(This,__MIDL_0034) - -#define IDxtKey_get_Luminance(This,__MIDL_0035) \ - (This)->lpVtbl -> get_Luminance(This,__MIDL_0035) - -#define IDxtKey_put_Luminance(This,__MIDL_0036) \ - (This)->lpVtbl -> put_Luminance(This,__MIDL_0036) - -#define IDxtKey_get_RGB(This,__MIDL_0037) \ - (This)->lpVtbl -> get_RGB(This,__MIDL_0037) - -#define IDxtKey_put_RGB(This,__MIDL_0038) \ - (This)->lpVtbl -> put_RGB(This,__MIDL_0038) - -#define IDxtKey_get_Similarity(This,__MIDL_0039) \ - (This)->lpVtbl -> get_Similarity(This,__MIDL_0039) - -#define IDxtKey_put_Similarity(This,__MIDL_0040) \ - (This)->lpVtbl -> put_Similarity(This,__MIDL_0040) - -#define IDxtKey_get_Invert(This,__MIDL_0041) \ - (This)->lpVtbl -> get_Invert(This,__MIDL_0041) - -#define IDxtKey_put_Invert(This,__MIDL_0042) \ - (This)->lpVtbl -> put_Invert(This,__MIDL_0042) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDxtKey_get_KeyType_Proxy( - IDxtKey * This, - /* [retval][out] */ int *__MIDL_0031); - - -void __RPC_STUB IDxtKey_get_KeyType_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDxtKey_put_KeyType_Proxy( - IDxtKey * This, - /* [in] */ int __MIDL_0032); - - -void __RPC_STUB IDxtKey_put_KeyType_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDxtKey_get_Hue_Proxy( - IDxtKey * This, - /* [retval][out] */ int *__MIDL_0033); - - -void __RPC_STUB IDxtKey_get_Hue_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDxtKey_put_Hue_Proxy( - IDxtKey * This, - /* [in] */ int __MIDL_0034); - - -void __RPC_STUB IDxtKey_put_Hue_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDxtKey_get_Luminance_Proxy( - IDxtKey * This, - /* [retval][out] */ int *__MIDL_0035); - - -void __RPC_STUB IDxtKey_get_Luminance_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDxtKey_put_Luminance_Proxy( - IDxtKey * This, - /* [in] */ int __MIDL_0036); - - -void __RPC_STUB IDxtKey_put_Luminance_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDxtKey_get_RGB_Proxy( - IDxtKey * This, - /* [retval][out] */ DWORD *__MIDL_0037); - - -void __RPC_STUB IDxtKey_get_RGB_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDxtKey_put_RGB_Proxy( - IDxtKey * This, - /* [in] */ DWORD __MIDL_0038); - - -void __RPC_STUB IDxtKey_put_RGB_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDxtKey_get_Similarity_Proxy( - IDxtKey * This, - /* [retval][out] */ int *__MIDL_0039); - - -void __RPC_STUB IDxtKey_get_Similarity_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDxtKey_put_Similarity_Proxy( - IDxtKey * This, - /* [in] */ int __MIDL_0040); - - -void __RPC_STUB IDxtKey_put_Similarity_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDxtKey_get_Invert_Proxy( - IDxtKey * This, - /* [retval][out] */ BOOL *__MIDL_0041); - - -void __RPC_STUB IDxtKey_get_Invert_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDxtKey_put_Invert_Proxy( - IDxtKey * This, - /* [in] */ BOOL __MIDL_0042); - - -void __RPC_STUB IDxtKey_put_Invert_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IDxtKey_INTERFACE_DEFINED__ */ - - -#ifndef __IMediaLocator_INTERFACE_DEFINED__ -#define __IMediaLocator_INTERFACE_DEFINED__ - -/* interface IMediaLocator */ -/* [unique][helpstring][uuid][object] */ - - -EXTERN_C const IID IID_IMediaLocator; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("288581E0-66CE-11d2-918F-00C0DF10D434") - IMediaLocator : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE FindMediaFile( - BSTR Input, - BSTR FilterString, - BSTR *pOutput, - long Flags) = 0; - - virtual HRESULT STDMETHODCALLTYPE AddFoundLocation( - BSTR DirectoryName) = 0; - - }; - -#else /* C style interface */ - - typedef struct IMediaLocatorVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IMediaLocator * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IMediaLocator * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IMediaLocator * This); - - HRESULT ( STDMETHODCALLTYPE *FindMediaFile )( - IMediaLocator * This, - BSTR Input, - BSTR FilterString, - BSTR *pOutput, - long Flags); - - HRESULT ( STDMETHODCALLTYPE *AddFoundLocation )( - IMediaLocator * This, - BSTR DirectoryName); - - END_INTERFACE - } IMediaLocatorVtbl; - - interface IMediaLocator - { - CONST_VTBL struct IMediaLocatorVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IMediaLocator_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IMediaLocator_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IMediaLocator_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IMediaLocator_FindMediaFile(This,Input,FilterString,pOutput,Flags) \ - (This)->lpVtbl -> FindMediaFile(This,Input,FilterString,pOutput,Flags) - -#define IMediaLocator_AddFoundLocation(This,DirectoryName) \ - (This)->lpVtbl -> AddFoundLocation(This,DirectoryName) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IMediaLocator_FindMediaFile_Proxy( - IMediaLocator * This, - BSTR Input, - BSTR FilterString, - BSTR *pOutput, - long Flags); - - -void __RPC_STUB IMediaLocator_FindMediaFile_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IMediaLocator_AddFoundLocation_Proxy( - IMediaLocator * This, - BSTR DirectoryName); - - -void __RPC_STUB IMediaLocator_AddFoundLocation_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IMediaLocator_INTERFACE_DEFINED__ */ - - -#ifndef __IMediaDet_INTERFACE_DEFINED__ -#define __IMediaDet_INTERFACE_DEFINED__ - -/* interface IMediaDet */ -/* [unique][helpstring][uuid][object] */ - - -EXTERN_C const IID IID_IMediaDet; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("65BD0710-24D2-4ff7-9324-ED2E5D3ABAFA") - IMediaDet : public IUnknown - { - public: - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Filter( - /* [retval][out] */ IUnknown **pVal) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_Filter( - /* [in] */ IUnknown *newVal) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_OutputStreams( - /* [retval][out] */ long *pVal) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_CurrentStream( - /* [retval][out] */ long *pVal) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_CurrentStream( - /* [in] */ long newVal) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_StreamType( - /* [retval][out] */ GUID *pVal) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_StreamTypeB( - /* [retval][out] */ BSTR *pVal) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_StreamLength( - /* [retval][out] */ double *pVal) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Filename( - /* [retval][out] */ BSTR *pVal) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_Filename( - /* [in] */ BSTR newVal) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetBitmapBits( - double StreamTime, - long *pBufferSize, - char *pBuffer, - long Width, - long Height) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE WriteBitmapBits( - double StreamTime, - long Width, - long Height, - BSTR Filename) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_StreamMediaType( - /* [retval][out] */ AM_MEDIA_TYPE *pVal) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetSampleGrabber( - /* [out] */ ISampleGrabber **ppVal) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_FrameRate( - /* [retval][out] */ double *pVal) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE EnterBitmapGrabMode( - double SeekTime) = 0; - - }; - -#else /* C style interface */ - - typedef struct IMediaDetVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IMediaDet * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IMediaDet * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IMediaDet * This); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Filter )( - IMediaDet * This, - /* [retval][out] */ IUnknown **pVal); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Filter )( - IMediaDet * This, - /* [in] */ IUnknown *newVal); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_OutputStreams )( - IMediaDet * This, - /* [retval][out] */ long *pVal); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_CurrentStream )( - IMediaDet * This, - /* [retval][out] */ long *pVal); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_CurrentStream )( - IMediaDet * This, - /* [in] */ long newVal); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_StreamType )( - IMediaDet * This, - /* [retval][out] */ GUID *pVal); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_StreamTypeB )( - IMediaDet * This, - /* [retval][out] */ BSTR *pVal); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_StreamLength )( - IMediaDet * This, - /* [retval][out] */ double *pVal); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Filename )( - IMediaDet * This, - /* [retval][out] */ BSTR *pVal); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Filename )( - IMediaDet * This, - /* [in] */ BSTR newVal); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetBitmapBits )( - IMediaDet * This, - double StreamTime, - long *pBufferSize, - char *pBuffer, - long Width, - long Height); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *WriteBitmapBits )( - IMediaDet * This, - double StreamTime, - long Width, - long Height, - BSTR Filename); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_StreamMediaType )( - IMediaDet * This, - /* [retval][out] */ AM_MEDIA_TYPE *pVal); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetSampleGrabber )( - IMediaDet * This, - /* [out] */ ISampleGrabber **ppVal); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_FrameRate )( - IMediaDet * This, - /* [retval][out] */ double *pVal); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *EnterBitmapGrabMode )( - IMediaDet * This, - double SeekTime); - - END_INTERFACE - } IMediaDetVtbl; - - interface IMediaDet - { - CONST_VTBL struct IMediaDetVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IMediaDet_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IMediaDet_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IMediaDet_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IMediaDet_get_Filter(This,pVal) \ - (This)->lpVtbl -> get_Filter(This,pVal) - -#define IMediaDet_put_Filter(This,newVal) \ - (This)->lpVtbl -> put_Filter(This,newVal) - -#define IMediaDet_get_OutputStreams(This,pVal) \ - (This)->lpVtbl -> get_OutputStreams(This,pVal) - -#define IMediaDet_get_CurrentStream(This,pVal) \ - (This)->lpVtbl -> get_CurrentStream(This,pVal) - -#define IMediaDet_put_CurrentStream(This,newVal) \ - (This)->lpVtbl -> put_CurrentStream(This,newVal) - -#define IMediaDet_get_StreamType(This,pVal) \ - (This)->lpVtbl -> get_StreamType(This,pVal) - -#define IMediaDet_get_StreamTypeB(This,pVal) \ - (This)->lpVtbl -> get_StreamTypeB(This,pVal) - -#define IMediaDet_get_StreamLength(This,pVal) \ - (This)->lpVtbl -> get_StreamLength(This,pVal) - -#define IMediaDet_get_Filename(This,pVal) \ - (This)->lpVtbl -> get_Filename(This,pVal) - -#define IMediaDet_put_Filename(This,newVal) \ - (This)->lpVtbl -> put_Filename(This,newVal) - -#define IMediaDet_GetBitmapBits(This,StreamTime,pBufferSize,pBuffer,Width,Height) \ - (This)->lpVtbl -> GetBitmapBits(This,StreamTime,pBufferSize,pBuffer,Width,Height) - -#define IMediaDet_WriteBitmapBits(This,StreamTime,Width,Height,Filename) \ - (This)->lpVtbl -> WriteBitmapBits(This,StreamTime,Width,Height,Filename) - -#define IMediaDet_get_StreamMediaType(This,pVal) \ - (This)->lpVtbl -> get_StreamMediaType(This,pVal) - -#define IMediaDet_GetSampleGrabber(This,ppVal) \ - (This)->lpVtbl -> GetSampleGrabber(This,ppVal) - -#define IMediaDet_get_FrameRate(This,pVal) \ - (This)->lpVtbl -> get_FrameRate(This,pVal) - -#define IMediaDet_EnterBitmapGrabMode(This,SeekTime) \ - (This)->lpVtbl -> EnterBitmapGrabMode(This,SeekTime) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IMediaDet_get_Filter_Proxy( - IMediaDet * This, - /* [retval][out] */ IUnknown **pVal); - - -void __RPC_STUB IMediaDet_get_Filter_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IMediaDet_put_Filter_Proxy( - IMediaDet * This, - /* [in] */ IUnknown *newVal); - - -void __RPC_STUB IMediaDet_put_Filter_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IMediaDet_get_OutputStreams_Proxy( - IMediaDet * This, - /* [retval][out] */ long *pVal); - - -void __RPC_STUB IMediaDet_get_OutputStreams_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IMediaDet_get_CurrentStream_Proxy( - IMediaDet * This, - /* [retval][out] */ long *pVal); - - -void __RPC_STUB IMediaDet_get_CurrentStream_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IMediaDet_put_CurrentStream_Proxy( - IMediaDet * This, - /* [in] */ long newVal); - - -void __RPC_STUB IMediaDet_put_CurrentStream_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IMediaDet_get_StreamType_Proxy( - IMediaDet * This, - /* [retval][out] */ GUID *pVal); - - -void __RPC_STUB IMediaDet_get_StreamType_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IMediaDet_get_StreamTypeB_Proxy( - IMediaDet * This, - /* [retval][out] */ BSTR *pVal); - - -void __RPC_STUB IMediaDet_get_StreamTypeB_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IMediaDet_get_StreamLength_Proxy( - IMediaDet * This, - /* [retval][out] */ double *pVal); - - -void __RPC_STUB IMediaDet_get_StreamLength_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IMediaDet_get_Filename_Proxy( - IMediaDet * This, - /* [retval][out] */ BSTR *pVal); - - -void __RPC_STUB IMediaDet_get_Filename_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IMediaDet_put_Filename_Proxy( - IMediaDet * This, - /* [in] */ BSTR newVal); - - -void __RPC_STUB IMediaDet_put_Filename_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IMediaDet_GetBitmapBits_Proxy( - IMediaDet * This, - double StreamTime, - long *pBufferSize, - char *pBuffer, - long Width, - long Height); - - -void __RPC_STUB IMediaDet_GetBitmapBits_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IMediaDet_WriteBitmapBits_Proxy( - IMediaDet * This, - double StreamTime, - long Width, - long Height, - BSTR Filename); - - -void __RPC_STUB IMediaDet_WriteBitmapBits_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IMediaDet_get_StreamMediaType_Proxy( - IMediaDet * This, - /* [retval][out] */ AM_MEDIA_TYPE *pVal); - - -void __RPC_STUB IMediaDet_get_StreamMediaType_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IMediaDet_GetSampleGrabber_Proxy( - IMediaDet * This, - /* [out] */ ISampleGrabber **ppVal); - - -void __RPC_STUB IMediaDet_GetSampleGrabber_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IMediaDet_get_FrameRate_Proxy( - IMediaDet * This, - /* [retval][out] */ double *pVal); - - -void __RPC_STUB IMediaDet_get_FrameRate_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IMediaDet_EnterBitmapGrabMode_Proxy( - IMediaDet * This, - double SeekTime); - - -void __RPC_STUB IMediaDet_EnterBitmapGrabMode_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IMediaDet_INTERFACE_DEFINED__ */ - - -#ifndef __IGrfCache_INTERFACE_DEFINED__ -#define __IGrfCache_INTERFACE_DEFINED__ - -/* interface IGrfCache */ -/* [unique][helpstring][uuid][object] */ - - -EXTERN_C const IID IID_IGrfCache; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("AE9472BE-B0C3-11D2-8D24-00A0C9441E20") - IGrfCache : public IDispatch - { - public: - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE AddFilter( - IGrfCache *ChainedCache, - LONGLONG ID, - const IBaseFilter *pFilter, - LPCWSTR pName) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE ConnectPins( - IGrfCache *ChainedCache, - LONGLONG PinID1, - const IPin *pPin1, - LONGLONG PinID2, - const IPin *pPin2) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE SetGraph( - const IGraphBuilder *pGraph) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE DoConnectionsNow( void) = 0; - - }; - -#else /* C style interface */ - - typedef struct IGrfCacheVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IGrfCache * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IGrfCache * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IGrfCache * This); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( - IGrfCache * This, - /* [out] */ UINT *pctinfo); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( - IGrfCache * This, - /* [in] */ UINT iTInfo, - /* [in] */ LCID lcid, - /* [out] */ ITypeInfo **ppTInfo); - - HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( - IGrfCache * This, - /* [in] */ REFIID riid, - /* [size_is][in] */ LPOLESTR *rgszNames, - /* [in] */ UINT cNames, - /* [in] */ LCID lcid, - /* [size_is][out] */ DISPID *rgDispId); - - /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( - IGrfCache * This, - /* [in] */ DISPID dispIdMember, - /* [in] */ REFIID riid, - /* [in] */ LCID lcid, - /* [in] */ WORD wFlags, - /* [out][in] */ DISPPARAMS *pDispParams, - /* [out] */ VARIANT *pVarResult, - /* [out] */ EXCEPINFO *pExcepInfo, - /* [out] */ UINT *puArgErr); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *AddFilter )( - IGrfCache * This, - IGrfCache *ChainedCache, - LONGLONG ID, - const IBaseFilter *pFilter, - LPCWSTR pName); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *ConnectPins )( - IGrfCache * This, - IGrfCache *ChainedCache, - LONGLONG PinID1, - const IPin *pPin1, - LONGLONG PinID2, - const IPin *pPin2); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *SetGraph )( - IGrfCache * This, - const IGraphBuilder *pGraph); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *DoConnectionsNow )( - IGrfCache * This); - - END_INTERFACE - } IGrfCacheVtbl; - - interface IGrfCache - { - CONST_VTBL struct IGrfCacheVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IGrfCache_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IGrfCache_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IGrfCache_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IGrfCache_GetTypeInfoCount(This,pctinfo) \ - (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) - -#define IGrfCache_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ - (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) - -#define IGrfCache_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ - (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) - -#define IGrfCache_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ - (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) - - -#define IGrfCache_AddFilter(This,ChainedCache,ID,pFilter,pName) \ - (This)->lpVtbl -> AddFilter(This,ChainedCache,ID,pFilter,pName) - -#define IGrfCache_ConnectPins(This,ChainedCache,PinID1,pPin1,PinID2,pPin2) \ - (This)->lpVtbl -> ConnectPins(This,ChainedCache,PinID1,pPin1,PinID2,pPin2) - -#define IGrfCache_SetGraph(This,pGraph) \ - (This)->lpVtbl -> SetGraph(This,pGraph) - -#define IGrfCache_DoConnectionsNow(This) \ - (This)->lpVtbl -> DoConnectionsNow(This) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IGrfCache_AddFilter_Proxy( - IGrfCache * This, - IGrfCache *ChainedCache, - LONGLONG ID, - const IBaseFilter *pFilter, - LPCWSTR pName); - - -void __RPC_STUB IGrfCache_AddFilter_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IGrfCache_ConnectPins_Proxy( - IGrfCache * This, - IGrfCache *ChainedCache, - LONGLONG PinID1, - const IPin *pPin1, - LONGLONG PinID2, - const IPin *pPin2); - - -void __RPC_STUB IGrfCache_ConnectPins_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IGrfCache_SetGraph_Proxy( - IGrfCache * This, - const IGraphBuilder *pGraph); - - -void __RPC_STUB IGrfCache_SetGraph_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IGrfCache_DoConnectionsNow_Proxy( - IGrfCache * This); - - -void __RPC_STUB IGrfCache_DoConnectionsNow_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IGrfCache_INTERFACE_DEFINED__ */ - - -#ifndef __IRenderEngine_INTERFACE_DEFINED__ -#define __IRenderEngine_INTERFACE_DEFINED__ - -/* interface IRenderEngine */ -/* [unique][helpstring][uuid][object] */ - - -EXTERN_C const IID IID_IRenderEngine; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("6BEE3A81-66C9-11d2-918F-00C0DF10D434") - IRenderEngine : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE SetTimelineObject( - IAMTimeline *pTimeline) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetTimelineObject( - /* [out] */ IAMTimeline **ppTimeline) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetFilterGraph( - /* [out] */ IGraphBuilder **ppFG) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetFilterGraph( - IGraphBuilder *pFG) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetInterestRange( - REFERENCE_TIME Start, - REFERENCE_TIME Stop) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetInterestRange2( - double Start, - double Stop) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetRenderRange( - REFERENCE_TIME Start, - REFERENCE_TIME Stop) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetRenderRange2( - double Start, - double Stop) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetGroupOutputPin( - long Group, - /* [out] */ IPin **ppRenderPin) = 0; - - virtual HRESULT STDMETHODCALLTYPE ScrapIt( void) = 0; - - virtual HRESULT STDMETHODCALLTYPE RenderOutputPins( void) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetVendorString( - /* [retval][out] */ BSTR *pVendorID) = 0; - - virtual HRESULT STDMETHODCALLTYPE ConnectFrontEnd( void) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetSourceConnectCallback( - IGrfCache *pCallback) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetDynamicReconnectLevel( - long Level) = 0; - - virtual HRESULT STDMETHODCALLTYPE DoSmartRecompression( void) = 0; - - virtual HRESULT STDMETHODCALLTYPE UseInSmartRecompressionGraph( void) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetSourceNameValidation( - BSTR FilterString, - IMediaLocator *pOverride, - LONG Flags) = 0; - - virtual HRESULT STDMETHODCALLTYPE Commit( void) = 0; - - virtual HRESULT STDMETHODCALLTYPE Decommit( void) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetCaps( - long Index, - long *pReturn) = 0; - - }; - -#else /* C style interface */ - - typedef struct IRenderEngineVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IRenderEngine * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IRenderEngine * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IRenderEngine * This); - - HRESULT ( STDMETHODCALLTYPE *SetTimelineObject )( - IRenderEngine * This, - IAMTimeline *pTimeline); - - HRESULT ( STDMETHODCALLTYPE *GetTimelineObject )( - IRenderEngine * This, - /* [out] */ IAMTimeline **ppTimeline); - - HRESULT ( STDMETHODCALLTYPE *GetFilterGraph )( - IRenderEngine * This, - /* [out] */ IGraphBuilder **ppFG); - - HRESULT ( STDMETHODCALLTYPE *SetFilterGraph )( - IRenderEngine * This, - IGraphBuilder *pFG); - - HRESULT ( STDMETHODCALLTYPE *SetInterestRange )( - IRenderEngine * This, - REFERENCE_TIME Start, - REFERENCE_TIME Stop); - - HRESULT ( STDMETHODCALLTYPE *SetInterestRange2 )( - IRenderEngine * This, - double Start, - double Stop); - - HRESULT ( STDMETHODCALLTYPE *SetRenderRange )( - IRenderEngine * This, - REFERENCE_TIME Start, - REFERENCE_TIME Stop); - - HRESULT ( STDMETHODCALLTYPE *SetRenderRange2 )( - IRenderEngine * This, - double Start, - double Stop); - - HRESULT ( STDMETHODCALLTYPE *GetGroupOutputPin )( - IRenderEngine * This, - long Group, - /* [out] */ IPin **ppRenderPin); - - HRESULT ( STDMETHODCALLTYPE *ScrapIt )( - IRenderEngine * This); - - HRESULT ( STDMETHODCALLTYPE *RenderOutputPins )( - IRenderEngine * This); - - HRESULT ( STDMETHODCALLTYPE *GetVendorString )( - IRenderEngine * This, - /* [retval][out] */ BSTR *pVendorID); - - HRESULT ( STDMETHODCALLTYPE *ConnectFrontEnd )( - IRenderEngine * This); - - HRESULT ( STDMETHODCALLTYPE *SetSourceConnectCallback )( - IRenderEngine * This, - IGrfCache *pCallback); - - HRESULT ( STDMETHODCALLTYPE *SetDynamicReconnectLevel )( - IRenderEngine * This, - long Level); - - HRESULT ( STDMETHODCALLTYPE *DoSmartRecompression )( - IRenderEngine * This); - - HRESULT ( STDMETHODCALLTYPE *UseInSmartRecompressionGraph )( - IRenderEngine * This); - - HRESULT ( STDMETHODCALLTYPE *SetSourceNameValidation )( - IRenderEngine * This, - BSTR FilterString, - IMediaLocator *pOverride, - LONG Flags); - - HRESULT ( STDMETHODCALLTYPE *Commit )( - IRenderEngine * This); - - HRESULT ( STDMETHODCALLTYPE *Decommit )( - IRenderEngine * This); - - HRESULT ( STDMETHODCALLTYPE *GetCaps )( - IRenderEngine * This, - long Index, - long *pReturn); - - END_INTERFACE - } IRenderEngineVtbl; - - interface IRenderEngine - { - CONST_VTBL struct IRenderEngineVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IRenderEngine_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IRenderEngine_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IRenderEngine_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IRenderEngine_SetTimelineObject(This,pTimeline) \ - (This)->lpVtbl -> SetTimelineObject(This,pTimeline) - -#define IRenderEngine_GetTimelineObject(This,ppTimeline) \ - (This)->lpVtbl -> GetTimelineObject(This,ppTimeline) - -#define IRenderEngine_GetFilterGraph(This,ppFG) \ - (This)->lpVtbl -> GetFilterGraph(This,ppFG) - -#define IRenderEngine_SetFilterGraph(This,pFG) \ - (This)->lpVtbl -> SetFilterGraph(This,pFG) - -#define IRenderEngine_SetInterestRange(This,Start,Stop) \ - (This)->lpVtbl -> SetInterestRange(This,Start,Stop) - -#define IRenderEngine_SetInterestRange2(This,Start,Stop) \ - (This)->lpVtbl -> SetInterestRange2(This,Start,Stop) - -#define IRenderEngine_SetRenderRange(This,Start,Stop) \ - (This)->lpVtbl -> SetRenderRange(This,Start,Stop) - -#define IRenderEngine_SetRenderRange2(This,Start,Stop) \ - (This)->lpVtbl -> SetRenderRange2(This,Start,Stop) - -#define IRenderEngine_GetGroupOutputPin(This,Group,ppRenderPin) \ - (This)->lpVtbl -> GetGroupOutputPin(This,Group,ppRenderPin) - -#define IRenderEngine_ScrapIt(This) \ - (This)->lpVtbl -> ScrapIt(This) - -#define IRenderEngine_RenderOutputPins(This) \ - (This)->lpVtbl -> RenderOutputPins(This) - -#define IRenderEngine_GetVendorString(This,pVendorID) \ - (This)->lpVtbl -> GetVendorString(This,pVendorID) - -#define IRenderEngine_ConnectFrontEnd(This) \ - (This)->lpVtbl -> ConnectFrontEnd(This) - -#define IRenderEngine_SetSourceConnectCallback(This,pCallback) \ - (This)->lpVtbl -> SetSourceConnectCallback(This,pCallback) - -#define IRenderEngine_SetDynamicReconnectLevel(This,Level) \ - (This)->lpVtbl -> SetDynamicReconnectLevel(This,Level) - -#define IRenderEngine_DoSmartRecompression(This) \ - (This)->lpVtbl -> DoSmartRecompression(This) - -#define IRenderEngine_UseInSmartRecompressionGraph(This) \ - (This)->lpVtbl -> UseInSmartRecompressionGraph(This) - -#define IRenderEngine_SetSourceNameValidation(This,FilterString,pOverride,Flags) \ - (This)->lpVtbl -> SetSourceNameValidation(This,FilterString,pOverride,Flags) - -#define IRenderEngine_Commit(This) \ - (This)->lpVtbl -> Commit(This) - -#define IRenderEngine_Decommit(This) \ - (This)->lpVtbl -> Decommit(This) - -#define IRenderEngine_GetCaps(This,Index,pReturn) \ - (This)->lpVtbl -> GetCaps(This,Index,pReturn) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IRenderEngine_SetTimelineObject_Proxy( - IRenderEngine * This, - IAMTimeline *pTimeline); - - -void __RPC_STUB IRenderEngine_SetTimelineObject_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IRenderEngine_GetTimelineObject_Proxy( - IRenderEngine * This, - /* [out] */ IAMTimeline **ppTimeline); - - -void __RPC_STUB IRenderEngine_GetTimelineObject_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IRenderEngine_GetFilterGraph_Proxy( - IRenderEngine * This, - /* [out] */ IGraphBuilder **ppFG); - - -void __RPC_STUB IRenderEngine_GetFilterGraph_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IRenderEngine_SetFilterGraph_Proxy( - IRenderEngine * This, - IGraphBuilder *pFG); - - -void __RPC_STUB IRenderEngine_SetFilterGraph_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IRenderEngine_SetInterestRange_Proxy( - IRenderEngine * This, - REFERENCE_TIME Start, - REFERENCE_TIME Stop); - - -void __RPC_STUB IRenderEngine_SetInterestRange_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IRenderEngine_SetInterestRange2_Proxy( - IRenderEngine * This, - double Start, - double Stop); - - -void __RPC_STUB IRenderEngine_SetInterestRange2_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IRenderEngine_SetRenderRange_Proxy( - IRenderEngine * This, - REFERENCE_TIME Start, - REFERENCE_TIME Stop); - - -void __RPC_STUB IRenderEngine_SetRenderRange_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IRenderEngine_SetRenderRange2_Proxy( - IRenderEngine * This, - double Start, - double Stop); - - -void __RPC_STUB IRenderEngine_SetRenderRange2_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IRenderEngine_GetGroupOutputPin_Proxy( - IRenderEngine * This, - long Group, - /* [out] */ IPin **ppRenderPin); - - -void __RPC_STUB IRenderEngine_GetGroupOutputPin_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IRenderEngine_ScrapIt_Proxy( - IRenderEngine * This); - - -void __RPC_STUB IRenderEngine_ScrapIt_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IRenderEngine_RenderOutputPins_Proxy( - IRenderEngine * This); - - -void __RPC_STUB IRenderEngine_RenderOutputPins_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IRenderEngine_GetVendorString_Proxy( - IRenderEngine * This, - /* [retval][out] */ BSTR *pVendorID); - - -void __RPC_STUB IRenderEngine_GetVendorString_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IRenderEngine_ConnectFrontEnd_Proxy( - IRenderEngine * This); - - -void __RPC_STUB IRenderEngine_ConnectFrontEnd_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IRenderEngine_SetSourceConnectCallback_Proxy( - IRenderEngine * This, - IGrfCache *pCallback); - - -void __RPC_STUB IRenderEngine_SetSourceConnectCallback_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IRenderEngine_SetDynamicReconnectLevel_Proxy( - IRenderEngine * This, - long Level); - - -void __RPC_STUB IRenderEngine_SetDynamicReconnectLevel_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IRenderEngine_DoSmartRecompression_Proxy( - IRenderEngine * This); - - -void __RPC_STUB IRenderEngine_DoSmartRecompression_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IRenderEngine_UseInSmartRecompressionGraph_Proxy( - IRenderEngine * This); - - -void __RPC_STUB IRenderEngine_UseInSmartRecompressionGraph_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IRenderEngine_SetSourceNameValidation_Proxy( - IRenderEngine * This, - BSTR FilterString, - IMediaLocator *pOverride, - LONG Flags); - - -void __RPC_STUB IRenderEngine_SetSourceNameValidation_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IRenderEngine_Commit_Proxy( - IRenderEngine * This); - - -void __RPC_STUB IRenderEngine_Commit_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IRenderEngine_Decommit_Proxy( - IRenderEngine * This); - - -void __RPC_STUB IRenderEngine_Decommit_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IRenderEngine_GetCaps_Proxy( - IRenderEngine * This, - long Index, - long *pReturn); - - -void __RPC_STUB IRenderEngine_GetCaps_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IRenderEngine_INTERFACE_DEFINED__ */ - - -#ifndef __IRenderEngine2_INTERFACE_DEFINED__ -#define __IRenderEngine2_INTERFACE_DEFINED__ - -/* interface IRenderEngine2 */ -/* [unique][helpstring][uuid][object] */ - - -EXTERN_C const IID IID_IRenderEngine2; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("6BEE3A82-66C9-11d2-918F-00C0DF10D434") - IRenderEngine2 : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE SetResizerGUID( - GUID ResizerGuid) = 0; - - }; - -#else /* C style interface */ - - typedef struct IRenderEngine2Vtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IRenderEngine2 * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IRenderEngine2 * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IRenderEngine2 * This); - - HRESULT ( STDMETHODCALLTYPE *SetResizerGUID )( - IRenderEngine2 * This, - GUID ResizerGuid); - - END_INTERFACE - } IRenderEngine2Vtbl; - - interface IRenderEngine2 - { - CONST_VTBL struct IRenderEngine2Vtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IRenderEngine2_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IRenderEngine2_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IRenderEngine2_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IRenderEngine2_SetResizerGUID(This,ResizerGuid) \ - (This)->lpVtbl -> SetResizerGUID(This,ResizerGuid) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IRenderEngine2_SetResizerGUID_Proxy( - IRenderEngine2 * This, - GUID ResizerGuid); - - -void __RPC_STUB IRenderEngine2_SetResizerGUID_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IRenderEngine2_INTERFACE_DEFINED__ */ - - -#ifndef __IFindCompressorCB_INTERFACE_DEFINED__ -#define __IFindCompressorCB_INTERFACE_DEFINED__ - -/* interface IFindCompressorCB */ -/* [unique][helpstring][uuid][object] */ - - -EXTERN_C const IID IID_IFindCompressorCB; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("F03FA8DE-879A-4d59-9B2C-26BB1CF83461") - IFindCompressorCB : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE GetCompressor( - AM_MEDIA_TYPE *pType, - AM_MEDIA_TYPE *pCompType, - /* [out] */ IBaseFilter **ppFilter) = 0; - - }; - -#else /* C style interface */ - - typedef struct IFindCompressorCBVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IFindCompressorCB * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IFindCompressorCB * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IFindCompressorCB * This); - - HRESULT ( STDMETHODCALLTYPE *GetCompressor )( - IFindCompressorCB * This, - AM_MEDIA_TYPE *pType, - AM_MEDIA_TYPE *pCompType, - /* [out] */ IBaseFilter **ppFilter); - - END_INTERFACE - } IFindCompressorCBVtbl; - - interface IFindCompressorCB - { - CONST_VTBL struct IFindCompressorCBVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IFindCompressorCB_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IFindCompressorCB_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IFindCompressorCB_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IFindCompressorCB_GetCompressor(This,pType,pCompType,ppFilter) \ - (This)->lpVtbl -> GetCompressor(This,pType,pCompType,ppFilter) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IFindCompressorCB_GetCompressor_Proxy( - IFindCompressorCB * This, - AM_MEDIA_TYPE *pType, - AM_MEDIA_TYPE *pCompType, - /* [out] */ IBaseFilter **ppFilter); - - -void __RPC_STUB IFindCompressorCB_GetCompressor_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IFindCompressorCB_INTERFACE_DEFINED__ */ - - -#ifndef __ISmartRenderEngine_INTERFACE_DEFINED__ -#define __ISmartRenderEngine_INTERFACE_DEFINED__ - -/* interface ISmartRenderEngine */ -/* [unique][helpstring][uuid][object] */ - - -EXTERN_C const IID IID_ISmartRenderEngine; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("F03FA8CE-879A-4d59-9B2C-26BB1CF83461") - ISmartRenderEngine : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE SetGroupCompressor( - long Group, - IBaseFilter *pCompressor) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetGroupCompressor( - long Group, - IBaseFilter **pCompressor) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetFindCompressorCB( - IFindCompressorCB *pCallback) = 0; - - }; - -#else /* C style interface */ - - typedef struct ISmartRenderEngineVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - ISmartRenderEngine * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - ISmartRenderEngine * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - ISmartRenderEngine * This); - - HRESULT ( STDMETHODCALLTYPE *SetGroupCompressor )( - ISmartRenderEngine * This, - long Group, - IBaseFilter *pCompressor); - - HRESULT ( STDMETHODCALLTYPE *GetGroupCompressor )( - ISmartRenderEngine * This, - long Group, - IBaseFilter **pCompressor); - - HRESULT ( STDMETHODCALLTYPE *SetFindCompressorCB )( - ISmartRenderEngine * This, - IFindCompressorCB *pCallback); - - END_INTERFACE - } ISmartRenderEngineVtbl; - - interface ISmartRenderEngine - { - CONST_VTBL struct ISmartRenderEngineVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define ISmartRenderEngine_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define ISmartRenderEngine_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define ISmartRenderEngine_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define ISmartRenderEngine_SetGroupCompressor(This,Group,pCompressor) \ - (This)->lpVtbl -> SetGroupCompressor(This,Group,pCompressor) - -#define ISmartRenderEngine_GetGroupCompressor(This,Group,pCompressor) \ - (This)->lpVtbl -> GetGroupCompressor(This,Group,pCompressor) - -#define ISmartRenderEngine_SetFindCompressorCB(This,pCallback) \ - (This)->lpVtbl -> SetFindCompressorCB(This,pCallback) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE ISmartRenderEngine_SetGroupCompressor_Proxy( - ISmartRenderEngine * This, - long Group, - IBaseFilter *pCompressor); - - -void __RPC_STUB ISmartRenderEngine_SetGroupCompressor_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE ISmartRenderEngine_GetGroupCompressor_Proxy( - ISmartRenderEngine * This, - long Group, - IBaseFilter **pCompressor); - - -void __RPC_STUB ISmartRenderEngine_GetGroupCompressor_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE ISmartRenderEngine_SetFindCompressorCB_Proxy( - ISmartRenderEngine * This, - IFindCompressorCB *pCallback); - - -void __RPC_STUB ISmartRenderEngine_SetFindCompressorCB_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __ISmartRenderEngine_INTERFACE_DEFINED__ */ - - -#ifndef __IAMTimelineObj_INTERFACE_DEFINED__ -#define __IAMTimelineObj_INTERFACE_DEFINED__ - -/* interface IAMTimelineObj */ -/* [unique][helpstring][uuid][local][object] */ - - -EXTERN_C const IID IID_IAMTimelineObj; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("78530B77-61F9-11D2-8CAD-00A024580902") - IAMTimelineObj : public IUnknown - { - public: - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetStartStop( - REFERENCE_TIME *pStart, - REFERENCE_TIME *pStop) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetStartStop2( - REFTIME *pStart, - REFTIME *pStop) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE FixTimes( - REFERENCE_TIME *pStart, - REFERENCE_TIME *pStop) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE FixTimes2( - REFTIME *pStart, - REFTIME *pStop) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetStartStop( - REFERENCE_TIME Start, - REFERENCE_TIME Stop) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetStartStop2( - REFTIME Start, - REFTIME Stop) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetPropertySetter( - /* [retval][out] */ IPropertySetter **pVal) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetPropertySetter( - IPropertySetter *newVal) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetSubObject( - /* [retval][out] */ IUnknown **pVal) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetSubObject( - IUnknown *newVal) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetSubObjectGUID( - GUID newVal) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetSubObjectGUIDB( - BSTR newVal) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetSubObjectGUID( - GUID *pVal) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetSubObjectGUIDB( - /* [retval][out] */ BSTR *pVal) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetSubObjectLoaded( - BOOL *pVal) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetTimelineType( - TIMELINE_MAJOR_TYPE *pVal) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetTimelineType( - TIMELINE_MAJOR_TYPE newVal) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetUserID( - long *pVal) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetUserID( - long newVal) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetGenID( - long *pVal) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetUserName( - /* [retval][out] */ BSTR *pVal) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetUserName( - BSTR newVal) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetUserData( - BYTE *pData, - long *pSize) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetUserData( - BYTE *pData, - long Size) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetMuted( - BOOL *pVal) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetMuted( - BOOL newVal) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetLocked( - BOOL *pVal) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetLocked( - BOOL newVal) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetDirtyRange( - REFERENCE_TIME *pStart, - REFERENCE_TIME *pStop) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetDirtyRange2( - REFTIME *pStart, - REFTIME *pStop) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetDirtyRange( - REFERENCE_TIME Start, - REFERENCE_TIME Stop) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetDirtyRange2( - REFTIME Start, - REFTIME Stop) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE ClearDirty( void) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE Remove( void) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE RemoveAll( void) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetTimelineNoRef( - IAMTimeline **ppResult) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetGroupIBelongTo( - /* [out] */ IAMTimelineGroup **ppGroup) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetEmbedDepth( - long *pVal) = 0; - - }; - -#else /* C style interface */ - - typedef struct IAMTimelineObjVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IAMTimelineObj * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IAMTimelineObj * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IAMTimelineObj * This); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetStartStop )( - IAMTimelineObj * This, - REFERENCE_TIME *pStart, - REFERENCE_TIME *pStop); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetStartStop2 )( - IAMTimelineObj * This, - REFTIME *pStart, - REFTIME *pStop); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *FixTimes )( - IAMTimelineObj * This, - REFERENCE_TIME *pStart, - REFERENCE_TIME *pStop); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *FixTimes2 )( - IAMTimelineObj * This, - REFTIME *pStart, - REFTIME *pStop); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetStartStop )( - IAMTimelineObj * This, - REFERENCE_TIME Start, - REFERENCE_TIME Stop); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetStartStop2 )( - IAMTimelineObj * This, - REFTIME Start, - REFTIME Stop); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetPropertySetter )( - IAMTimelineObj * This, - /* [retval][out] */ IPropertySetter **pVal); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetPropertySetter )( - IAMTimelineObj * This, - IPropertySetter *newVal); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetSubObject )( - IAMTimelineObj * This, - /* [retval][out] */ IUnknown **pVal); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetSubObject )( - IAMTimelineObj * This, - IUnknown *newVal); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetSubObjectGUID )( - IAMTimelineObj * This, - GUID newVal); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetSubObjectGUIDB )( - IAMTimelineObj * This, - BSTR newVal); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetSubObjectGUID )( - IAMTimelineObj * This, - GUID *pVal); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetSubObjectGUIDB )( - IAMTimelineObj * This, - /* [retval][out] */ BSTR *pVal); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetSubObjectLoaded )( - IAMTimelineObj * This, - BOOL *pVal); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetTimelineType )( - IAMTimelineObj * This, - TIMELINE_MAJOR_TYPE *pVal); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetTimelineType )( - IAMTimelineObj * This, - TIMELINE_MAJOR_TYPE newVal); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetUserID )( - IAMTimelineObj * This, - long *pVal); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetUserID )( - IAMTimelineObj * This, - long newVal); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetGenID )( - IAMTimelineObj * This, - long *pVal); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetUserName )( - IAMTimelineObj * This, - /* [retval][out] */ BSTR *pVal); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetUserName )( - IAMTimelineObj * This, - BSTR newVal); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetUserData )( - IAMTimelineObj * This, - BYTE *pData, - long *pSize); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetUserData )( - IAMTimelineObj * This, - BYTE *pData, - long Size); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetMuted )( - IAMTimelineObj * This, - BOOL *pVal); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetMuted )( - IAMTimelineObj * This, - BOOL newVal); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetLocked )( - IAMTimelineObj * This, - BOOL *pVal); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetLocked )( - IAMTimelineObj * This, - BOOL newVal); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetDirtyRange )( - IAMTimelineObj * This, - REFERENCE_TIME *pStart, - REFERENCE_TIME *pStop); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetDirtyRange2 )( - IAMTimelineObj * This, - REFTIME *pStart, - REFTIME *pStop); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetDirtyRange )( - IAMTimelineObj * This, - REFERENCE_TIME Start, - REFERENCE_TIME Stop); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetDirtyRange2 )( - IAMTimelineObj * This, - REFTIME Start, - REFTIME Stop); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *ClearDirty )( - IAMTimelineObj * This); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *Remove )( - IAMTimelineObj * This); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *RemoveAll )( - IAMTimelineObj * This); - - HRESULT ( STDMETHODCALLTYPE *GetTimelineNoRef )( - IAMTimelineObj * This, - IAMTimeline **ppResult); - - HRESULT ( STDMETHODCALLTYPE *GetGroupIBelongTo )( - IAMTimelineObj * This, - /* [out] */ IAMTimelineGroup **ppGroup); - - HRESULT ( STDMETHODCALLTYPE *GetEmbedDepth )( - IAMTimelineObj * This, - long *pVal); - - END_INTERFACE - } IAMTimelineObjVtbl; - - interface IAMTimelineObj - { - CONST_VTBL struct IAMTimelineObjVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IAMTimelineObj_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IAMTimelineObj_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IAMTimelineObj_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IAMTimelineObj_GetStartStop(This,pStart,pStop) \ - (This)->lpVtbl -> GetStartStop(This,pStart,pStop) - -#define IAMTimelineObj_GetStartStop2(This,pStart,pStop) \ - (This)->lpVtbl -> GetStartStop2(This,pStart,pStop) - -#define IAMTimelineObj_FixTimes(This,pStart,pStop) \ - (This)->lpVtbl -> FixTimes(This,pStart,pStop) - -#define IAMTimelineObj_FixTimes2(This,pStart,pStop) \ - (This)->lpVtbl -> FixTimes2(This,pStart,pStop) - -#define IAMTimelineObj_SetStartStop(This,Start,Stop) \ - (This)->lpVtbl -> SetStartStop(This,Start,Stop) - -#define IAMTimelineObj_SetStartStop2(This,Start,Stop) \ - (This)->lpVtbl -> SetStartStop2(This,Start,Stop) - -#define IAMTimelineObj_GetPropertySetter(This,pVal) \ - (This)->lpVtbl -> GetPropertySetter(This,pVal) - -#define IAMTimelineObj_SetPropertySetter(This,newVal) \ - (This)->lpVtbl -> SetPropertySetter(This,newVal) - -#define IAMTimelineObj_GetSubObject(This,pVal) \ - (This)->lpVtbl -> GetSubObject(This,pVal) - -#define IAMTimelineObj_SetSubObject(This,newVal) \ - (This)->lpVtbl -> SetSubObject(This,newVal) - -#define IAMTimelineObj_SetSubObjectGUID(This,newVal) \ - (This)->lpVtbl -> SetSubObjectGUID(This,newVal) - -#define IAMTimelineObj_SetSubObjectGUIDB(This,newVal) \ - (This)->lpVtbl -> SetSubObjectGUIDB(This,newVal) - -#define IAMTimelineObj_GetSubObjectGUID(This,pVal) \ - (This)->lpVtbl -> GetSubObjectGUID(This,pVal) - -#define IAMTimelineObj_GetSubObjectGUIDB(This,pVal) \ - (This)->lpVtbl -> GetSubObjectGUIDB(This,pVal) - -#define IAMTimelineObj_GetSubObjectLoaded(This,pVal) \ - (This)->lpVtbl -> GetSubObjectLoaded(This,pVal) - -#define IAMTimelineObj_GetTimelineType(This,pVal) \ - (This)->lpVtbl -> GetTimelineType(This,pVal) - -#define IAMTimelineObj_SetTimelineType(This,newVal) \ - (This)->lpVtbl -> SetTimelineType(This,newVal) - -#define IAMTimelineObj_GetUserID(This,pVal) \ - (This)->lpVtbl -> GetUserID(This,pVal) - -#define IAMTimelineObj_SetUserID(This,newVal) \ - (This)->lpVtbl -> SetUserID(This,newVal) - -#define IAMTimelineObj_GetGenID(This,pVal) \ - (This)->lpVtbl -> GetGenID(This,pVal) - -#define IAMTimelineObj_GetUserName(This,pVal) \ - (This)->lpVtbl -> GetUserName(This,pVal) - -#define IAMTimelineObj_SetUserName(This,newVal) \ - (This)->lpVtbl -> SetUserName(This,newVal) - -#define IAMTimelineObj_GetUserData(This,pData,pSize) \ - (This)->lpVtbl -> GetUserData(This,pData,pSize) - -#define IAMTimelineObj_SetUserData(This,pData,Size) \ - (This)->lpVtbl -> SetUserData(This,pData,Size) - -#define IAMTimelineObj_GetMuted(This,pVal) \ - (This)->lpVtbl -> GetMuted(This,pVal) - -#define IAMTimelineObj_SetMuted(This,newVal) \ - (This)->lpVtbl -> SetMuted(This,newVal) - -#define IAMTimelineObj_GetLocked(This,pVal) \ - (This)->lpVtbl -> GetLocked(This,pVal) - -#define IAMTimelineObj_SetLocked(This,newVal) \ - (This)->lpVtbl -> SetLocked(This,newVal) - -#define IAMTimelineObj_GetDirtyRange(This,pStart,pStop) \ - (This)->lpVtbl -> GetDirtyRange(This,pStart,pStop) - -#define IAMTimelineObj_GetDirtyRange2(This,pStart,pStop) \ - (This)->lpVtbl -> GetDirtyRange2(This,pStart,pStop) - -#define IAMTimelineObj_SetDirtyRange(This,Start,Stop) \ - (This)->lpVtbl -> SetDirtyRange(This,Start,Stop) - -#define IAMTimelineObj_SetDirtyRange2(This,Start,Stop) \ - (This)->lpVtbl -> SetDirtyRange2(This,Start,Stop) - -#define IAMTimelineObj_ClearDirty(This) \ - (This)->lpVtbl -> ClearDirty(This) - -#define IAMTimelineObj_Remove(This) \ - (This)->lpVtbl -> Remove(This) - -#define IAMTimelineObj_RemoveAll(This) \ - (This)->lpVtbl -> RemoveAll(This) - -#define IAMTimelineObj_GetTimelineNoRef(This,ppResult) \ - (This)->lpVtbl -> GetTimelineNoRef(This,ppResult) - -#define IAMTimelineObj_GetGroupIBelongTo(This,ppGroup) \ - (This)->lpVtbl -> GetGroupIBelongTo(This,ppGroup) - -#define IAMTimelineObj_GetEmbedDepth(This,pVal) \ - (This)->lpVtbl -> GetEmbedDepth(This,pVal) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineObj_GetStartStop_Proxy( - IAMTimelineObj * This, - REFERENCE_TIME *pStart, - REFERENCE_TIME *pStop); - - -void __RPC_STUB IAMTimelineObj_GetStartStop_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineObj_GetStartStop2_Proxy( - IAMTimelineObj * This, - REFTIME *pStart, - REFTIME *pStop); - - -void __RPC_STUB IAMTimelineObj_GetStartStop2_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineObj_FixTimes_Proxy( - IAMTimelineObj * This, - REFERENCE_TIME *pStart, - REFERENCE_TIME *pStop); - - -void __RPC_STUB IAMTimelineObj_FixTimes_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineObj_FixTimes2_Proxy( - IAMTimelineObj * This, - REFTIME *pStart, - REFTIME *pStop); - - -void __RPC_STUB IAMTimelineObj_FixTimes2_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineObj_SetStartStop_Proxy( - IAMTimelineObj * This, - REFERENCE_TIME Start, - REFERENCE_TIME Stop); - - -void __RPC_STUB IAMTimelineObj_SetStartStop_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineObj_SetStartStop2_Proxy( - IAMTimelineObj * This, - REFTIME Start, - REFTIME Stop); - - -void __RPC_STUB IAMTimelineObj_SetStartStop2_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineObj_GetPropertySetter_Proxy( - IAMTimelineObj * This, - /* [retval][out] */ IPropertySetter **pVal); - - -void __RPC_STUB IAMTimelineObj_GetPropertySetter_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineObj_SetPropertySetter_Proxy( - IAMTimelineObj * This, - IPropertySetter *newVal); - - -void __RPC_STUB IAMTimelineObj_SetPropertySetter_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineObj_GetSubObject_Proxy( - IAMTimelineObj * This, - /* [retval][out] */ IUnknown **pVal); - - -void __RPC_STUB IAMTimelineObj_GetSubObject_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineObj_SetSubObject_Proxy( - IAMTimelineObj * This, - IUnknown *newVal); - - -void __RPC_STUB IAMTimelineObj_SetSubObject_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineObj_SetSubObjectGUID_Proxy( - IAMTimelineObj * This, - GUID newVal); - - -void __RPC_STUB IAMTimelineObj_SetSubObjectGUID_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineObj_SetSubObjectGUIDB_Proxy( - IAMTimelineObj * This, - BSTR newVal); - - -void __RPC_STUB IAMTimelineObj_SetSubObjectGUIDB_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineObj_GetSubObjectGUID_Proxy( - IAMTimelineObj * This, - GUID *pVal); - - -void __RPC_STUB IAMTimelineObj_GetSubObjectGUID_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineObj_GetSubObjectGUIDB_Proxy( - IAMTimelineObj * This, - /* [retval][out] */ BSTR *pVal); - - -void __RPC_STUB IAMTimelineObj_GetSubObjectGUIDB_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineObj_GetSubObjectLoaded_Proxy( - IAMTimelineObj * This, - BOOL *pVal); - - -void __RPC_STUB IAMTimelineObj_GetSubObjectLoaded_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineObj_GetTimelineType_Proxy( - IAMTimelineObj * This, - TIMELINE_MAJOR_TYPE *pVal); - - -void __RPC_STUB IAMTimelineObj_GetTimelineType_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineObj_SetTimelineType_Proxy( - IAMTimelineObj * This, - TIMELINE_MAJOR_TYPE newVal); - - -void __RPC_STUB IAMTimelineObj_SetTimelineType_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineObj_GetUserID_Proxy( - IAMTimelineObj * This, - long *pVal); - - -void __RPC_STUB IAMTimelineObj_GetUserID_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineObj_SetUserID_Proxy( - IAMTimelineObj * This, - long newVal); - - -void __RPC_STUB IAMTimelineObj_SetUserID_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineObj_GetGenID_Proxy( - IAMTimelineObj * This, - long *pVal); - - -void __RPC_STUB IAMTimelineObj_GetGenID_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineObj_GetUserName_Proxy( - IAMTimelineObj * This, - /* [retval][out] */ BSTR *pVal); - - -void __RPC_STUB IAMTimelineObj_GetUserName_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineObj_SetUserName_Proxy( - IAMTimelineObj * This, - BSTR newVal); - - -void __RPC_STUB IAMTimelineObj_SetUserName_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineObj_GetUserData_Proxy( - IAMTimelineObj * This, - BYTE *pData, - long *pSize); - - -void __RPC_STUB IAMTimelineObj_GetUserData_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineObj_SetUserData_Proxy( - IAMTimelineObj * This, - BYTE *pData, - long Size); - - -void __RPC_STUB IAMTimelineObj_SetUserData_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineObj_GetMuted_Proxy( - IAMTimelineObj * This, - BOOL *pVal); - - -void __RPC_STUB IAMTimelineObj_GetMuted_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineObj_SetMuted_Proxy( - IAMTimelineObj * This, - BOOL newVal); - - -void __RPC_STUB IAMTimelineObj_SetMuted_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineObj_GetLocked_Proxy( - IAMTimelineObj * This, - BOOL *pVal); - - -void __RPC_STUB IAMTimelineObj_GetLocked_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineObj_SetLocked_Proxy( - IAMTimelineObj * This, - BOOL newVal); - - -void __RPC_STUB IAMTimelineObj_SetLocked_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineObj_GetDirtyRange_Proxy( - IAMTimelineObj * This, - REFERENCE_TIME *pStart, - REFERENCE_TIME *pStop); - - -void __RPC_STUB IAMTimelineObj_GetDirtyRange_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineObj_GetDirtyRange2_Proxy( - IAMTimelineObj * This, - REFTIME *pStart, - REFTIME *pStop); - - -void __RPC_STUB IAMTimelineObj_GetDirtyRange2_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineObj_SetDirtyRange_Proxy( - IAMTimelineObj * This, - REFERENCE_TIME Start, - REFERENCE_TIME Stop); - - -void __RPC_STUB IAMTimelineObj_SetDirtyRange_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineObj_SetDirtyRange2_Proxy( - IAMTimelineObj * This, - REFTIME Start, - REFTIME Stop); - - -void __RPC_STUB IAMTimelineObj_SetDirtyRange2_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineObj_ClearDirty_Proxy( - IAMTimelineObj * This); - - -void __RPC_STUB IAMTimelineObj_ClearDirty_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineObj_Remove_Proxy( - IAMTimelineObj * This); - - -void __RPC_STUB IAMTimelineObj_Remove_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineObj_RemoveAll_Proxy( - IAMTimelineObj * This); - - -void __RPC_STUB IAMTimelineObj_RemoveAll_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IAMTimelineObj_GetTimelineNoRef_Proxy( - IAMTimelineObj * This, - IAMTimeline **ppResult); - - -void __RPC_STUB IAMTimelineObj_GetTimelineNoRef_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IAMTimelineObj_GetGroupIBelongTo_Proxy( - IAMTimelineObj * This, - /* [out] */ IAMTimelineGroup **ppGroup); - - -void __RPC_STUB IAMTimelineObj_GetGroupIBelongTo_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IAMTimelineObj_GetEmbedDepth_Proxy( - IAMTimelineObj * This, - long *pVal); - - -void __RPC_STUB IAMTimelineObj_GetEmbedDepth_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IAMTimelineObj_INTERFACE_DEFINED__ */ - - -#ifndef __IAMTimelineEffectable_INTERFACE_DEFINED__ -#define __IAMTimelineEffectable_INTERFACE_DEFINED__ - -/* interface IAMTimelineEffectable */ -/* [unique][helpstring][uuid][object] */ - - -EXTERN_C const IID IID_IAMTimelineEffectable; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("EAE58537-622E-11d2-8CAD-00A024580902") - IAMTimelineEffectable : public IUnknown - { - public: - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE EffectInsBefore( - IAMTimelineObj *pFX, - long priority) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE EffectSwapPriorities( - long PriorityA, - long PriorityB) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE EffectGetCount( - long *pCount) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetEffect( - /* [out] */ IAMTimelineObj **ppFx, - long Which) = 0; - - }; - -#else /* C style interface */ - - typedef struct IAMTimelineEffectableVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IAMTimelineEffectable * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IAMTimelineEffectable * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IAMTimelineEffectable * This); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *EffectInsBefore )( - IAMTimelineEffectable * This, - IAMTimelineObj *pFX, - long priority); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *EffectSwapPriorities )( - IAMTimelineEffectable * This, - long PriorityA, - long PriorityB); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *EffectGetCount )( - IAMTimelineEffectable * This, - long *pCount); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetEffect )( - IAMTimelineEffectable * This, - /* [out] */ IAMTimelineObj **ppFx, - long Which); - - END_INTERFACE - } IAMTimelineEffectableVtbl; - - interface IAMTimelineEffectable - { - CONST_VTBL struct IAMTimelineEffectableVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IAMTimelineEffectable_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IAMTimelineEffectable_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IAMTimelineEffectable_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IAMTimelineEffectable_EffectInsBefore(This,pFX,priority) \ - (This)->lpVtbl -> EffectInsBefore(This,pFX,priority) - -#define IAMTimelineEffectable_EffectSwapPriorities(This,PriorityA,PriorityB) \ - (This)->lpVtbl -> EffectSwapPriorities(This,PriorityA,PriorityB) - -#define IAMTimelineEffectable_EffectGetCount(This,pCount) \ - (This)->lpVtbl -> EffectGetCount(This,pCount) - -#define IAMTimelineEffectable_GetEffect(This,ppFx,Which) \ - (This)->lpVtbl -> GetEffect(This,ppFx,Which) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineEffectable_EffectInsBefore_Proxy( - IAMTimelineEffectable * This, - IAMTimelineObj *pFX, - long priority); - - -void __RPC_STUB IAMTimelineEffectable_EffectInsBefore_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineEffectable_EffectSwapPriorities_Proxy( - IAMTimelineEffectable * This, - long PriorityA, - long PriorityB); - - -void __RPC_STUB IAMTimelineEffectable_EffectSwapPriorities_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineEffectable_EffectGetCount_Proxy( - IAMTimelineEffectable * This, - long *pCount); - - -void __RPC_STUB IAMTimelineEffectable_EffectGetCount_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineEffectable_GetEffect_Proxy( - IAMTimelineEffectable * This, - /* [out] */ IAMTimelineObj **ppFx, - long Which); - - -void __RPC_STUB IAMTimelineEffectable_GetEffect_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IAMTimelineEffectable_INTERFACE_DEFINED__ */ - - -#ifndef __IAMTimelineEffect_INTERFACE_DEFINED__ -#define __IAMTimelineEffect_INTERFACE_DEFINED__ - -/* interface IAMTimelineEffect */ -/* [unique][helpstring][uuid][object] */ - - -EXTERN_C const IID IID_IAMTimelineEffect; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("BCE0C264-622D-11d2-8CAD-00A024580902") - IAMTimelineEffect : public IUnknown - { - public: - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE EffectGetPriority( - long *pVal) = 0; - - }; - -#else /* C style interface */ - - typedef struct IAMTimelineEffectVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IAMTimelineEffect * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IAMTimelineEffect * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IAMTimelineEffect * This); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *EffectGetPriority )( - IAMTimelineEffect * This, - long *pVal); - - END_INTERFACE - } IAMTimelineEffectVtbl; - - interface IAMTimelineEffect - { - CONST_VTBL struct IAMTimelineEffectVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IAMTimelineEffect_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IAMTimelineEffect_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IAMTimelineEffect_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IAMTimelineEffect_EffectGetPriority(This,pVal) \ - (This)->lpVtbl -> EffectGetPriority(This,pVal) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineEffect_EffectGetPriority_Proxy( - IAMTimelineEffect * This, - long *pVal); - - -void __RPC_STUB IAMTimelineEffect_EffectGetPriority_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IAMTimelineEffect_INTERFACE_DEFINED__ */ - - -#ifndef __IAMTimelineTransable_INTERFACE_DEFINED__ -#define __IAMTimelineTransable_INTERFACE_DEFINED__ - -/* interface IAMTimelineTransable */ -/* [unique][helpstring][uuid][object] */ - - -EXTERN_C const IID IID_IAMTimelineTransable; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("378FA386-622E-11d2-8CAD-00A024580902") - IAMTimelineTransable : public IUnknown - { - public: - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE TransAdd( - IAMTimelineObj *pTrans) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE TransGetCount( - long *pCount) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetNextTrans( - /* [out] */ IAMTimelineObj **ppTrans, - REFERENCE_TIME *pInOut) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetNextTrans2( - /* [out] */ IAMTimelineObj **ppTrans, - REFTIME *pInOut) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetTransAtTime( - /* [out] */ IAMTimelineObj **ppObj, - REFERENCE_TIME Time, - long SearchDirection) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetTransAtTime2( - /* [out] */ IAMTimelineObj **ppObj, - REFTIME Time, - long SearchDirection) = 0; - - }; - -#else /* C style interface */ - - typedef struct IAMTimelineTransableVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IAMTimelineTransable * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IAMTimelineTransable * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IAMTimelineTransable * This); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *TransAdd )( - IAMTimelineTransable * This, - IAMTimelineObj *pTrans); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *TransGetCount )( - IAMTimelineTransable * This, - long *pCount); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetNextTrans )( - IAMTimelineTransable * This, - /* [out] */ IAMTimelineObj **ppTrans, - REFERENCE_TIME *pInOut); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetNextTrans2 )( - IAMTimelineTransable * This, - /* [out] */ IAMTimelineObj **ppTrans, - REFTIME *pInOut); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetTransAtTime )( - IAMTimelineTransable * This, - /* [out] */ IAMTimelineObj **ppObj, - REFERENCE_TIME Time, - long SearchDirection); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetTransAtTime2 )( - IAMTimelineTransable * This, - /* [out] */ IAMTimelineObj **ppObj, - REFTIME Time, - long SearchDirection); - - END_INTERFACE - } IAMTimelineTransableVtbl; - - interface IAMTimelineTransable - { - CONST_VTBL struct IAMTimelineTransableVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IAMTimelineTransable_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IAMTimelineTransable_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IAMTimelineTransable_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IAMTimelineTransable_TransAdd(This,pTrans) \ - (This)->lpVtbl -> TransAdd(This,pTrans) - -#define IAMTimelineTransable_TransGetCount(This,pCount) \ - (This)->lpVtbl -> TransGetCount(This,pCount) - -#define IAMTimelineTransable_GetNextTrans(This,ppTrans,pInOut) \ - (This)->lpVtbl -> GetNextTrans(This,ppTrans,pInOut) - -#define IAMTimelineTransable_GetNextTrans2(This,ppTrans,pInOut) \ - (This)->lpVtbl -> GetNextTrans2(This,ppTrans,pInOut) - -#define IAMTimelineTransable_GetTransAtTime(This,ppObj,Time,SearchDirection) \ - (This)->lpVtbl -> GetTransAtTime(This,ppObj,Time,SearchDirection) - -#define IAMTimelineTransable_GetTransAtTime2(This,ppObj,Time,SearchDirection) \ - (This)->lpVtbl -> GetTransAtTime2(This,ppObj,Time,SearchDirection) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineTransable_TransAdd_Proxy( - IAMTimelineTransable * This, - IAMTimelineObj *pTrans); - - -void __RPC_STUB IAMTimelineTransable_TransAdd_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineTransable_TransGetCount_Proxy( - IAMTimelineTransable * This, - long *pCount); - - -void __RPC_STUB IAMTimelineTransable_TransGetCount_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineTransable_GetNextTrans_Proxy( - IAMTimelineTransable * This, - /* [out] */ IAMTimelineObj **ppTrans, - REFERENCE_TIME *pInOut); - - -void __RPC_STUB IAMTimelineTransable_GetNextTrans_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineTransable_GetNextTrans2_Proxy( - IAMTimelineTransable * This, - /* [out] */ IAMTimelineObj **ppTrans, - REFTIME *pInOut); - - -void __RPC_STUB IAMTimelineTransable_GetNextTrans2_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineTransable_GetTransAtTime_Proxy( - IAMTimelineTransable * This, - /* [out] */ IAMTimelineObj **ppObj, - REFERENCE_TIME Time, - long SearchDirection); - - -void __RPC_STUB IAMTimelineTransable_GetTransAtTime_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineTransable_GetTransAtTime2_Proxy( - IAMTimelineTransable * This, - /* [out] */ IAMTimelineObj **ppObj, - REFTIME Time, - long SearchDirection); - - -void __RPC_STUB IAMTimelineTransable_GetTransAtTime2_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IAMTimelineTransable_INTERFACE_DEFINED__ */ - - -#ifndef __IAMTimelineSplittable_INTERFACE_DEFINED__ -#define __IAMTimelineSplittable_INTERFACE_DEFINED__ - -/* interface IAMTimelineSplittable */ -/* [unique][helpstring][uuid][object] */ - - -EXTERN_C const IID IID_IAMTimelineSplittable; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("A0F840A0-D590-11d2-8D55-00A0C9441E20") - IAMTimelineSplittable : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE SplitAt( - REFERENCE_TIME Time) = 0; - - virtual HRESULT STDMETHODCALLTYPE SplitAt2( - REFTIME Time) = 0; - - }; - -#else /* C style interface */ - - typedef struct IAMTimelineSplittableVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IAMTimelineSplittable * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IAMTimelineSplittable * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IAMTimelineSplittable * This); - - HRESULT ( STDMETHODCALLTYPE *SplitAt )( - IAMTimelineSplittable * This, - REFERENCE_TIME Time); - - HRESULT ( STDMETHODCALLTYPE *SplitAt2 )( - IAMTimelineSplittable * This, - REFTIME Time); - - END_INTERFACE - } IAMTimelineSplittableVtbl; - - interface IAMTimelineSplittable - { - CONST_VTBL struct IAMTimelineSplittableVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IAMTimelineSplittable_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IAMTimelineSplittable_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IAMTimelineSplittable_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IAMTimelineSplittable_SplitAt(This,Time) \ - (This)->lpVtbl -> SplitAt(This,Time) - -#define IAMTimelineSplittable_SplitAt2(This,Time) \ - (This)->lpVtbl -> SplitAt2(This,Time) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IAMTimelineSplittable_SplitAt_Proxy( - IAMTimelineSplittable * This, - REFERENCE_TIME Time); - - -void __RPC_STUB IAMTimelineSplittable_SplitAt_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IAMTimelineSplittable_SplitAt2_Proxy( - IAMTimelineSplittable * This, - REFTIME Time); - - -void __RPC_STUB IAMTimelineSplittable_SplitAt2_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IAMTimelineSplittable_INTERFACE_DEFINED__ */ - - -#ifndef __IAMTimelineTrans_INTERFACE_DEFINED__ -#define __IAMTimelineTrans_INTERFACE_DEFINED__ - -/* interface IAMTimelineTrans */ -/* [unique][helpstring][uuid][object] */ - - -EXTERN_C const IID IID_IAMTimelineTrans; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("BCE0C265-622D-11d2-8CAD-00A024580902") - IAMTimelineTrans : public IUnknown - { - public: - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetCutPoint( - REFERENCE_TIME *pTLTime) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetCutPoint2( - REFTIME *pTLTime) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetCutPoint( - REFERENCE_TIME TLTime) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetCutPoint2( - REFTIME TLTime) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetSwapInputs( - BOOL *pVal) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetSwapInputs( - BOOL pVal) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetCutsOnly( - BOOL *pVal) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetCutsOnly( - BOOL pVal) = 0; - - }; - -#else /* C style interface */ - - typedef struct IAMTimelineTransVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IAMTimelineTrans * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IAMTimelineTrans * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IAMTimelineTrans * This); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetCutPoint )( - IAMTimelineTrans * This, - REFERENCE_TIME *pTLTime); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetCutPoint2 )( - IAMTimelineTrans * This, - REFTIME *pTLTime); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetCutPoint )( - IAMTimelineTrans * This, - REFERENCE_TIME TLTime); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetCutPoint2 )( - IAMTimelineTrans * This, - REFTIME TLTime); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetSwapInputs )( - IAMTimelineTrans * This, - BOOL *pVal); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetSwapInputs )( - IAMTimelineTrans * This, - BOOL pVal); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetCutsOnly )( - IAMTimelineTrans * This, - BOOL *pVal); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetCutsOnly )( - IAMTimelineTrans * This, - BOOL pVal); - - END_INTERFACE - } IAMTimelineTransVtbl; - - interface IAMTimelineTrans - { - CONST_VTBL struct IAMTimelineTransVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IAMTimelineTrans_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IAMTimelineTrans_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IAMTimelineTrans_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IAMTimelineTrans_GetCutPoint(This,pTLTime) \ - (This)->lpVtbl -> GetCutPoint(This,pTLTime) - -#define IAMTimelineTrans_GetCutPoint2(This,pTLTime) \ - (This)->lpVtbl -> GetCutPoint2(This,pTLTime) - -#define IAMTimelineTrans_SetCutPoint(This,TLTime) \ - (This)->lpVtbl -> SetCutPoint(This,TLTime) - -#define IAMTimelineTrans_SetCutPoint2(This,TLTime) \ - (This)->lpVtbl -> SetCutPoint2(This,TLTime) - -#define IAMTimelineTrans_GetSwapInputs(This,pVal) \ - (This)->lpVtbl -> GetSwapInputs(This,pVal) - -#define IAMTimelineTrans_SetSwapInputs(This,pVal) \ - (This)->lpVtbl -> SetSwapInputs(This,pVal) - -#define IAMTimelineTrans_GetCutsOnly(This,pVal) \ - (This)->lpVtbl -> GetCutsOnly(This,pVal) - -#define IAMTimelineTrans_SetCutsOnly(This,pVal) \ - (This)->lpVtbl -> SetCutsOnly(This,pVal) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineTrans_GetCutPoint_Proxy( - IAMTimelineTrans * This, - REFERENCE_TIME *pTLTime); - - -void __RPC_STUB IAMTimelineTrans_GetCutPoint_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineTrans_GetCutPoint2_Proxy( - IAMTimelineTrans * This, - REFTIME *pTLTime); - - -void __RPC_STUB IAMTimelineTrans_GetCutPoint2_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineTrans_SetCutPoint_Proxy( - IAMTimelineTrans * This, - REFERENCE_TIME TLTime); - - -void __RPC_STUB IAMTimelineTrans_SetCutPoint_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineTrans_SetCutPoint2_Proxy( - IAMTimelineTrans * This, - REFTIME TLTime); - - -void __RPC_STUB IAMTimelineTrans_SetCutPoint2_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineTrans_GetSwapInputs_Proxy( - IAMTimelineTrans * This, - BOOL *pVal); - - -void __RPC_STUB IAMTimelineTrans_GetSwapInputs_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineTrans_SetSwapInputs_Proxy( - IAMTimelineTrans * This, - BOOL pVal); - - -void __RPC_STUB IAMTimelineTrans_SetSwapInputs_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineTrans_GetCutsOnly_Proxy( - IAMTimelineTrans * This, - BOOL *pVal); - - -void __RPC_STUB IAMTimelineTrans_GetCutsOnly_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineTrans_SetCutsOnly_Proxy( - IAMTimelineTrans * This, - BOOL pVal); - - -void __RPC_STUB IAMTimelineTrans_SetCutsOnly_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IAMTimelineTrans_INTERFACE_DEFINED__ */ - - -#ifndef __IAMTimelineSrc_INTERFACE_DEFINED__ -#define __IAMTimelineSrc_INTERFACE_DEFINED__ - -/* interface IAMTimelineSrc */ -/* [unique][helpstring][uuid][object] */ - - -EXTERN_C const IID IID_IAMTimelineSrc; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("78530B79-61F9-11D2-8CAD-00A024580902") - IAMTimelineSrc : public IUnknown - { - public: - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetMediaTimes( - REFERENCE_TIME *pStart, - REFERENCE_TIME *pStop) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetMediaTimes2( - REFTIME *pStart, - REFTIME *pStop) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE ModifyStopTime( - REFERENCE_TIME Stop) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE ModifyStopTime2( - REFTIME Stop) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE FixMediaTimes( - REFERENCE_TIME *pStart, - REFERENCE_TIME *pStop) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE FixMediaTimes2( - REFTIME *pStart, - REFTIME *pStop) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetMediaTimes( - REFERENCE_TIME Start, - REFERENCE_TIME Stop) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetMediaTimes2( - REFTIME Start, - REFTIME Stop) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetMediaLength( - REFERENCE_TIME Length) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetMediaLength2( - REFTIME Length) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetMediaLength( - REFERENCE_TIME *pLength) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetMediaLength2( - REFTIME *pLength) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetMediaName( - /* [retval][out] */ BSTR *pVal) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetMediaName( - BSTR newVal) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SpliceWithNext( - IAMTimelineObj *pNext) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetStreamNumber( - long *pVal) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetStreamNumber( - long Val) = 0; - - virtual HRESULT STDMETHODCALLTYPE IsNormalRate( - BOOL *pVal) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetDefaultFPS( - double *pFPS) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetDefaultFPS( - double FPS) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetStretchMode( - int *pnStretchMode) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetStretchMode( - int nStretchMode) = 0; - - }; - -#else /* C style interface */ - - typedef struct IAMTimelineSrcVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IAMTimelineSrc * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IAMTimelineSrc * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IAMTimelineSrc * This); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetMediaTimes )( - IAMTimelineSrc * This, - REFERENCE_TIME *pStart, - REFERENCE_TIME *pStop); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetMediaTimes2 )( - IAMTimelineSrc * This, - REFTIME *pStart, - REFTIME *pStop); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *ModifyStopTime )( - IAMTimelineSrc * This, - REFERENCE_TIME Stop); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *ModifyStopTime2 )( - IAMTimelineSrc * This, - REFTIME Stop); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *FixMediaTimes )( - IAMTimelineSrc * This, - REFERENCE_TIME *pStart, - REFERENCE_TIME *pStop); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *FixMediaTimes2 )( - IAMTimelineSrc * This, - REFTIME *pStart, - REFTIME *pStop); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetMediaTimes )( - IAMTimelineSrc * This, - REFERENCE_TIME Start, - REFERENCE_TIME Stop); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetMediaTimes2 )( - IAMTimelineSrc * This, - REFTIME Start, - REFTIME Stop); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetMediaLength )( - IAMTimelineSrc * This, - REFERENCE_TIME Length); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetMediaLength2 )( - IAMTimelineSrc * This, - REFTIME Length); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetMediaLength )( - IAMTimelineSrc * This, - REFERENCE_TIME *pLength); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetMediaLength2 )( - IAMTimelineSrc * This, - REFTIME *pLength); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetMediaName )( - IAMTimelineSrc * This, - /* [retval][out] */ BSTR *pVal); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetMediaName )( - IAMTimelineSrc * This, - BSTR newVal); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SpliceWithNext )( - IAMTimelineSrc * This, - IAMTimelineObj *pNext); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetStreamNumber )( - IAMTimelineSrc * This, - long *pVal); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetStreamNumber )( - IAMTimelineSrc * This, - long Val); - - HRESULT ( STDMETHODCALLTYPE *IsNormalRate )( - IAMTimelineSrc * This, - BOOL *pVal); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetDefaultFPS )( - IAMTimelineSrc * This, - double *pFPS); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetDefaultFPS )( - IAMTimelineSrc * This, - double FPS); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetStretchMode )( - IAMTimelineSrc * This, - int *pnStretchMode); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetStretchMode )( - IAMTimelineSrc * This, - int nStretchMode); - - END_INTERFACE - } IAMTimelineSrcVtbl; - - interface IAMTimelineSrc - { - CONST_VTBL struct IAMTimelineSrcVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IAMTimelineSrc_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IAMTimelineSrc_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IAMTimelineSrc_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IAMTimelineSrc_GetMediaTimes(This,pStart,pStop) \ - (This)->lpVtbl -> GetMediaTimes(This,pStart,pStop) - -#define IAMTimelineSrc_GetMediaTimes2(This,pStart,pStop) \ - (This)->lpVtbl -> GetMediaTimes2(This,pStart,pStop) - -#define IAMTimelineSrc_ModifyStopTime(This,Stop) \ - (This)->lpVtbl -> ModifyStopTime(This,Stop) - -#define IAMTimelineSrc_ModifyStopTime2(This,Stop) \ - (This)->lpVtbl -> ModifyStopTime2(This,Stop) - -#define IAMTimelineSrc_FixMediaTimes(This,pStart,pStop) \ - (This)->lpVtbl -> FixMediaTimes(This,pStart,pStop) - -#define IAMTimelineSrc_FixMediaTimes2(This,pStart,pStop) \ - (This)->lpVtbl -> FixMediaTimes2(This,pStart,pStop) - -#define IAMTimelineSrc_SetMediaTimes(This,Start,Stop) \ - (This)->lpVtbl -> SetMediaTimes(This,Start,Stop) - -#define IAMTimelineSrc_SetMediaTimes2(This,Start,Stop) \ - (This)->lpVtbl -> SetMediaTimes2(This,Start,Stop) - -#define IAMTimelineSrc_SetMediaLength(This,Length) \ - (This)->lpVtbl -> SetMediaLength(This,Length) - -#define IAMTimelineSrc_SetMediaLength2(This,Length) \ - (This)->lpVtbl -> SetMediaLength2(This,Length) - -#define IAMTimelineSrc_GetMediaLength(This,pLength) \ - (This)->lpVtbl -> GetMediaLength(This,pLength) - -#define IAMTimelineSrc_GetMediaLength2(This,pLength) \ - (This)->lpVtbl -> GetMediaLength2(This,pLength) - -#define IAMTimelineSrc_GetMediaName(This,pVal) \ - (This)->lpVtbl -> GetMediaName(This,pVal) - -#define IAMTimelineSrc_SetMediaName(This,newVal) \ - (This)->lpVtbl -> SetMediaName(This,newVal) - -#define IAMTimelineSrc_SpliceWithNext(This,pNext) \ - (This)->lpVtbl -> SpliceWithNext(This,pNext) - -#define IAMTimelineSrc_GetStreamNumber(This,pVal) \ - (This)->lpVtbl -> GetStreamNumber(This,pVal) - -#define IAMTimelineSrc_SetStreamNumber(This,Val) \ - (This)->lpVtbl -> SetStreamNumber(This,Val) - -#define IAMTimelineSrc_IsNormalRate(This,pVal) \ - (This)->lpVtbl -> IsNormalRate(This,pVal) - -#define IAMTimelineSrc_GetDefaultFPS(This,pFPS) \ - (This)->lpVtbl -> GetDefaultFPS(This,pFPS) - -#define IAMTimelineSrc_SetDefaultFPS(This,FPS) \ - (This)->lpVtbl -> SetDefaultFPS(This,FPS) - -#define IAMTimelineSrc_GetStretchMode(This,pnStretchMode) \ - (This)->lpVtbl -> GetStretchMode(This,pnStretchMode) - -#define IAMTimelineSrc_SetStretchMode(This,nStretchMode) \ - (This)->lpVtbl -> SetStretchMode(This,nStretchMode) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineSrc_GetMediaTimes_Proxy( - IAMTimelineSrc * This, - REFERENCE_TIME *pStart, - REFERENCE_TIME *pStop); - - -void __RPC_STUB IAMTimelineSrc_GetMediaTimes_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineSrc_GetMediaTimes2_Proxy( - IAMTimelineSrc * This, - REFTIME *pStart, - REFTIME *pStop); - - -void __RPC_STUB IAMTimelineSrc_GetMediaTimes2_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineSrc_ModifyStopTime_Proxy( - IAMTimelineSrc * This, - REFERENCE_TIME Stop); - - -void __RPC_STUB IAMTimelineSrc_ModifyStopTime_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineSrc_ModifyStopTime2_Proxy( - IAMTimelineSrc * This, - REFTIME Stop); - - -void __RPC_STUB IAMTimelineSrc_ModifyStopTime2_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineSrc_FixMediaTimes_Proxy( - IAMTimelineSrc * This, - REFERENCE_TIME *pStart, - REFERENCE_TIME *pStop); - - -void __RPC_STUB IAMTimelineSrc_FixMediaTimes_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineSrc_FixMediaTimes2_Proxy( - IAMTimelineSrc * This, - REFTIME *pStart, - REFTIME *pStop); - - -void __RPC_STUB IAMTimelineSrc_FixMediaTimes2_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineSrc_SetMediaTimes_Proxy( - IAMTimelineSrc * This, - REFERENCE_TIME Start, - REFERENCE_TIME Stop); - - -void __RPC_STUB IAMTimelineSrc_SetMediaTimes_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineSrc_SetMediaTimes2_Proxy( - IAMTimelineSrc * This, - REFTIME Start, - REFTIME Stop); - - -void __RPC_STUB IAMTimelineSrc_SetMediaTimes2_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineSrc_SetMediaLength_Proxy( - IAMTimelineSrc * This, - REFERENCE_TIME Length); - - -void __RPC_STUB IAMTimelineSrc_SetMediaLength_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineSrc_SetMediaLength2_Proxy( - IAMTimelineSrc * This, - REFTIME Length); - - -void __RPC_STUB IAMTimelineSrc_SetMediaLength2_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineSrc_GetMediaLength_Proxy( - IAMTimelineSrc * This, - REFERENCE_TIME *pLength); - - -void __RPC_STUB IAMTimelineSrc_GetMediaLength_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineSrc_GetMediaLength2_Proxy( - IAMTimelineSrc * This, - REFTIME *pLength); - - -void __RPC_STUB IAMTimelineSrc_GetMediaLength2_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineSrc_GetMediaName_Proxy( - IAMTimelineSrc * This, - /* [retval][out] */ BSTR *pVal); - - -void __RPC_STUB IAMTimelineSrc_GetMediaName_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineSrc_SetMediaName_Proxy( - IAMTimelineSrc * This, - BSTR newVal); - - -void __RPC_STUB IAMTimelineSrc_SetMediaName_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineSrc_SpliceWithNext_Proxy( - IAMTimelineSrc * This, - IAMTimelineObj *pNext); - - -void __RPC_STUB IAMTimelineSrc_SpliceWithNext_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineSrc_GetStreamNumber_Proxy( - IAMTimelineSrc * This, - long *pVal); - - -void __RPC_STUB IAMTimelineSrc_GetStreamNumber_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineSrc_SetStreamNumber_Proxy( - IAMTimelineSrc * This, - long Val); - - -void __RPC_STUB IAMTimelineSrc_SetStreamNumber_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IAMTimelineSrc_IsNormalRate_Proxy( - IAMTimelineSrc * This, - BOOL *pVal); - - -void __RPC_STUB IAMTimelineSrc_IsNormalRate_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineSrc_GetDefaultFPS_Proxy( - IAMTimelineSrc * This, - double *pFPS); - - -void __RPC_STUB IAMTimelineSrc_GetDefaultFPS_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineSrc_SetDefaultFPS_Proxy( - IAMTimelineSrc * This, - double FPS); - - -void __RPC_STUB IAMTimelineSrc_SetDefaultFPS_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineSrc_GetStretchMode_Proxy( - IAMTimelineSrc * This, - int *pnStretchMode); - - -void __RPC_STUB IAMTimelineSrc_GetStretchMode_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineSrc_SetStretchMode_Proxy( - IAMTimelineSrc * This, - int nStretchMode); - - -void __RPC_STUB IAMTimelineSrc_SetStretchMode_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IAMTimelineSrc_INTERFACE_DEFINED__ */ - - -#ifndef __IAMTimelineTrack_INTERFACE_DEFINED__ -#define __IAMTimelineTrack_INTERFACE_DEFINED__ - -/* interface IAMTimelineTrack */ -/* [unique][helpstring][uuid][object] */ - - -EXTERN_C const IID IID_IAMTimelineTrack; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("EAE58538-622E-11d2-8CAD-00A024580902") - IAMTimelineTrack : public IUnknown - { - public: - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SrcAdd( - IAMTimelineObj *pSource) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetNextSrc( - /* [out] */ IAMTimelineObj **ppSrc, - REFERENCE_TIME *pInOut) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetNextSrc2( - /* [out] */ IAMTimelineObj **ppSrc, - REFTIME *pInOut) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE MoveEverythingBy( - REFERENCE_TIME Start, - REFERENCE_TIME MoveBy) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE MoveEverythingBy2( - REFTIME Start, - REFTIME MoveBy) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetSourcesCount( - long *pVal) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE AreYouBlank( - long *pVal) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetSrcAtTime( - /* [out] */ IAMTimelineObj **ppSrc, - REFERENCE_TIME Time, - long SearchDirection) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetSrcAtTime2( - /* [out] */ IAMTimelineObj **ppSrc, - REFTIME Time, - long SearchDirection) = 0; - - virtual HRESULT STDMETHODCALLTYPE InsertSpace( - REFERENCE_TIME rtStart, - REFERENCE_TIME rtEnd) = 0; - - virtual HRESULT STDMETHODCALLTYPE InsertSpace2( - REFTIME rtStart, - REFTIME rtEnd) = 0; - - virtual HRESULT STDMETHODCALLTYPE ZeroBetween( - REFERENCE_TIME rtStart, - REFERENCE_TIME rtEnd) = 0; - - virtual HRESULT STDMETHODCALLTYPE ZeroBetween2( - REFTIME rtStart, - REFTIME rtEnd) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetNextSrcEx( - IAMTimelineObj *pLast, - /* [out] */ IAMTimelineObj **ppNext) = 0; - - }; - -#else /* C style interface */ - - typedef struct IAMTimelineTrackVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IAMTimelineTrack * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IAMTimelineTrack * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IAMTimelineTrack * This); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SrcAdd )( - IAMTimelineTrack * This, - IAMTimelineObj *pSource); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetNextSrc )( - IAMTimelineTrack * This, - /* [out] */ IAMTimelineObj **ppSrc, - REFERENCE_TIME *pInOut); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetNextSrc2 )( - IAMTimelineTrack * This, - /* [out] */ IAMTimelineObj **ppSrc, - REFTIME *pInOut); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *MoveEverythingBy )( - IAMTimelineTrack * This, - REFERENCE_TIME Start, - REFERENCE_TIME MoveBy); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *MoveEverythingBy2 )( - IAMTimelineTrack * This, - REFTIME Start, - REFTIME MoveBy); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetSourcesCount )( - IAMTimelineTrack * This, - long *pVal); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *AreYouBlank )( - IAMTimelineTrack * This, - long *pVal); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetSrcAtTime )( - IAMTimelineTrack * This, - /* [out] */ IAMTimelineObj **ppSrc, - REFERENCE_TIME Time, - long SearchDirection); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetSrcAtTime2 )( - IAMTimelineTrack * This, - /* [out] */ IAMTimelineObj **ppSrc, - REFTIME Time, - long SearchDirection); - - HRESULT ( STDMETHODCALLTYPE *InsertSpace )( - IAMTimelineTrack * This, - REFERENCE_TIME rtStart, - REFERENCE_TIME rtEnd); - - HRESULT ( STDMETHODCALLTYPE *InsertSpace2 )( - IAMTimelineTrack * This, - REFTIME rtStart, - REFTIME rtEnd); - - HRESULT ( STDMETHODCALLTYPE *ZeroBetween )( - IAMTimelineTrack * This, - REFERENCE_TIME rtStart, - REFERENCE_TIME rtEnd); - - HRESULT ( STDMETHODCALLTYPE *ZeroBetween2 )( - IAMTimelineTrack * This, - REFTIME rtStart, - REFTIME rtEnd); - - HRESULT ( STDMETHODCALLTYPE *GetNextSrcEx )( - IAMTimelineTrack * This, - IAMTimelineObj *pLast, - /* [out] */ IAMTimelineObj **ppNext); - - END_INTERFACE - } IAMTimelineTrackVtbl; - - interface IAMTimelineTrack - { - CONST_VTBL struct IAMTimelineTrackVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IAMTimelineTrack_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IAMTimelineTrack_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IAMTimelineTrack_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IAMTimelineTrack_SrcAdd(This,pSource) \ - (This)->lpVtbl -> SrcAdd(This,pSource) - -#define IAMTimelineTrack_GetNextSrc(This,ppSrc,pInOut) \ - (This)->lpVtbl -> GetNextSrc(This,ppSrc,pInOut) - -#define IAMTimelineTrack_GetNextSrc2(This,ppSrc,pInOut) \ - (This)->lpVtbl -> GetNextSrc2(This,ppSrc,pInOut) - -#define IAMTimelineTrack_MoveEverythingBy(This,Start,MoveBy) \ - (This)->lpVtbl -> MoveEverythingBy(This,Start,MoveBy) - -#define IAMTimelineTrack_MoveEverythingBy2(This,Start,MoveBy) \ - (This)->lpVtbl -> MoveEverythingBy2(This,Start,MoveBy) - -#define IAMTimelineTrack_GetSourcesCount(This,pVal) \ - (This)->lpVtbl -> GetSourcesCount(This,pVal) - -#define IAMTimelineTrack_AreYouBlank(This,pVal) \ - (This)->lpVtbl -> AreYouBlank(This,pVal) - -#define IAMTimelineTrack_GetSrcAtTime(This,ppSrc,Time,SearchDirection) \ - (This)->lpVtbl -> GetSrcAtTime(This,ppSrc,Time,SearchDirection) - -#define IAMTimelineTrack_GetSrcAtTime2(This,ppSrc,Time,SearchDirection) \ - (This)->lpVtbl -> GetSrcAtTime2(This,ppSrc,Time,SearchDirection) - -#define IAMTimelineTrack_InsertSpace(This,rtStart,rtEnd) \ - (This)->lpVtbl -> InsertSpace(This,rtStart,rtEnd) - -#define IAMTimelineTrack_InsertSpace2(This,rtStart,rtEnd) \ - (This)->lpVtbl -> InsertSpace2(This,rtStart,rtEnd) - -#define IAMTimelineTrack_ZeroBetween(This,rtStart,rtEnd) \ - (This)->lpVtbl -> ZeroBetween(This,rtStart,rtEnd) - -#define IAMTimelineTrack_ZeroBetween2(This,rtStart,rtEnd) \ - (This)->lpVtbl -> ZeroBetween2(This,rtStart,rtEnd) - -#define IAMTimelineTrack_GetNextSrcEx(This,pLast,ppNext) \ - (This)->lpVtbl -> GetNextSrcEx(This,pLast,ppNext) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineTrack_SrcAdd_Proxy( - IAMTimelineTrack * This, - IAMTimelineObj *pSource); - - -void __RPC_STUB IAMTimelineTrack_SrcAdd_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineTrack_GetNextSrc_Proxy( - IAMTimelineTrack * This, - /* [out] */ IAMTimelineObj **ppSrc, - REFERENCE_TIME *pInOut); - - -void __RPC_STUB IAMTimelineTrack_GetNextSrc_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineTrack_GetNextSrc2_Proxy( - IAMTimelineTrack * This, - /* [out] */ IAMTimelineObj **ppSrc, - REFTIME *pInOut); - - -void __RPC_STUB IAMTimelineTrack_GetNextSrc2_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineTrack_MoveEverythingBy_Proxy( - IAMTimelineTrack * This, - REFERENCE_TIME Start, - REFERENCE_TIME MoveBy); - - -void __RPC_STUB IAMTimelineTrack_MoveEverythingBy_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineTrack_MoveEverythingBy2_Proxy( - IAMTimelineTrack * This, - REFTIME Start, - REFTIME MoveBy); - - -void __RPC_STUB IAMTimelineTrack_MoveEverythingBy2_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineTrack_GetSourcesCount_Proxy( - IAMTimelineTrack * This, - long *pVal); - - -void __RPC_STUB IAMTimelineTrack_GetSourcesCount_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineTrack_AreYouBlank_Proxy( - IAMTimelineTrack * This, - long *pVal); - - -void __RPC_STUB IAMTimelineTrack_AreYouBlank_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineTrack_GetSrcAtTime_Proxy( - IAMTimelineTrack * This, - /* [out] */ IAMTimelineObj **ppSrc, - REFERENCE_TIME Time, - long SearchDirection); - - -void __RPC_STUB IAMTimelineTrack_GetSrcAtTime_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineTrack_GetSrcAtTime2_Proxy( - IAMTimelineTrack * This, - /* [out] */ IAMTimelineObj **ppSrc, - REFTIME Time, - long SearchDirection); - - -void __RPC_STUB IAMTimelineTrack_GetSrcAtTime2_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IAMTimelineTrack_InsertSpace_Proxy( - IAMTimelineTrack * This, - REFERENCE_TIME rtStart, - REFERENCE_TIME rtEnd); - - -void __RPC_STUB IAMTimelineTrack_InsertSpace_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IAMTimelineTrack_InsertSpace2_Proxy( - IAMTimelineTrack * This, - REFTIME rtStart, - REFTIME rtEnd); - - -void __RPC_STUB IAMTimelineTrack_InsertSpace2_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IAMTimelineTrack_ZeroBetween_Proxy( - IAMTimelineTrack * This, - REFERENCE_TIME rtStart, - REFERENCE_TIME rtEnd); - - -void __RPC_STUB IAMTimelineTrack_ZeroBetween_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IAMTimelineTrack_ZeroBetween2_Proxy( - IAMTimelineTrack * This, - REFTIME rtStart, - REFTIME rtEnd); - - -void __RPC_STUB IAMTimelineTrack_ZeroBetween2_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IAMTimelineTrack_GetNextSrcEx_Proxy( - IAMTimelineTrack * This, - IAMTimelineObj *pLast, - /* [out] */ IAMTimelineObj **ppNext); - - -void __RPC_STUB IAMTimelineTrack_GetNextSrcEx_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IAMTimelineTrack_INTERFACE_DEFINED__ */ - - -#ifndef __IAMTimelineVirtualTrack_INTERFACE_DEFINED__ -#define __IAMTimelineVirtualTrack_INTERFACE_DEFINED__ - -/* interface IAMTimelineVirtualTrack */ -/* [unique][helpstring][uuid][object] */ - - -EXTERN_C const IID IID_IAMTimelineVirtualTrack; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("A8ED5F80-C2C7-11d2-8D39-00A0C9441E20") - IAMTimelineVirtualTrack : public IUnknown - { - public: - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE TrackGetPriority( - long *pPriority) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetTrackDirty( void) = 0; - - }; - -#else /* C style interface */ - - typedef struct IAMTimelineVirtualTrackVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IAMTimelineVirtualTrack * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IAMTimelineVirtualTrack * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IAMTimelineVirtualTrack * This); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *TrackGetPriority )( - IAMTimelineVirtualTrack * This, - long *pPriority); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetTrackDirty )( - IAMTimelineVirtualTrack * This); - - END_INTERFACE - } IAMTimelineVirtualTrackVtbl; - - interface IAMTimelineVirtualTrack - { - CONST_VTBL struct IAMTimelineVirtualTrackVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IAMTimelineVirtualTrack_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IAMTimelineVirtualTrack_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IAMTimelineVirtualTrack_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IAMTimelineVirtualTrack_TrackGetPriority(This,pPriority) \ - (This)->lpVtbl -> TrackGetPriority(This,pPriority) - -#define IAMTimelineVirtualTrack_SetTrackDirty(This) \ - (This)->lpVtbl -> SetTrackDirty(This) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineVirtualTrack_TrackGetPriority_Proxy( - IAMTimelineVirtualTrack * This, - long *pPriority); - - -void __RPC_STUB IAMTimelineVirtualTrack_TrackGetPriority_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineVirtualTrack_SetTrackDirty_Proxy( - IAMTimelineVirtualTrack * This); - - -void __RPC_STUB IAMTimelineVirtualTrack_SetTrackDirty_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IAMTimelineVirtualTrack_INTERFACE_DEFINED__ */ - - -#ifndef __IAMTimelineComp_INTERFACE_DEFINED__ -#define __IAMTimelineComp_INTERFACE_DEFINED__ - -/* interface IAMTimelineComp */ -/* [unique][helpstring][uuid][object] */ - - -EXTERN_C const IID IID_IAMTimelineComp; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("EAE58536-622E-11d2-8CAD-00A024580902") - IAMTimelineComp : public IUnknown - { - public: - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE VTrackInsBefore( - IAMTimelineObj *pVirtualTrack, - long Priority) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE VTrackSwapPriorities( - long VirtualTrackA, - long VirtualTrackB) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE VTrackGetCount( - long *pVal) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetVTrack( - /* [out] */ IAMTimelineObj **ppVirtualTrack, - long Which) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetCountOfType( - long *pVal, - long *pValWithComps, - TIMELINE_MAJOR_TYPE MajorType) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetRecursiveLayerOfType( - /* [out] */ IAMTimelineObj **ppVirtualTrack, - long WhichLayer, - TIMELINE_MAJOR_TYPE Type) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetRecursiveLayerOfTypeI( - /* [out] */ IAMTimelineObj **ppVirtualTrack, - /* [out][in] */ long *pWhichLayer, - TIMELINE_MAJOR_TYPE Type) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetNextVTrack( - IAMTimelineObj *pVirtualTrack, - /* [out] */ IAMTimelineObj **ppNextVirtualTrack) = 0; - - }; - -#else /* C style interface */ - - typedef struct IAMTimelineCompVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IAMTimelineComp * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IAMTimelineComp * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IAMTimelineComp * This); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *VTrackInsBefore )( - IAMTimelineComp * This, - IAMTimelineObj *pVirtualTrack, - long Priority); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *VTrackSwapPriorities )( - IAMTimelineComp * This, - long VirtualTrackA, - long VirtualTrackB); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *VTrackGetCount )( - IAMTimelineComp * This, - long *pVal); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetVTrack )( - IAMTimelineComp * This, - /* [out] */ IAMTimelineObj **ppVirtualTrack, - long Which); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetCountOfType )( - IAMTimelineComp * This, - long *pVal, - long *pValWithComps, - TIMELINE_MAJOR_TYPE MajorType); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetRecursiveLayerOfType )( - IAMTimelineComp * This, - /* [out] */ IAMTimelineObj **ppVirtualTrack, - long WhichLayer, - TIMELINE_MAJOR_TYPE Type); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetRecursiveLayerOfTypeI )( - IAMTimelineComp * This, - /* [out] */ IAMTimelineObj **ppVirtualTrack, - /* [out][in] */ long *pWhichLayer, - TIMELINE_MAJOR_TYPE Type); - - HRESULT ( STDMETHODCALLTYPE *GetNextVTrack )( - IAMTimelineComp * This, - IAMTimelineObj *pVirtualTrack, - /* [out] */ IAMTimelineObj **ppNextVirtualTrack); - - END_INTERFACE - } IAMTimelineCompVtbl; - - interface IAMTimelineComp - { - CONST_VTBL struct IAMTimelineCompVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IAMTimelineComp_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IAMTimelineComp_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IAMTimelineComp_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IAMTimelineComp_VTrackInsBefore(This,pVirtualTrack,Priority) \ - (This)->lpVtbl -> VTrackInsBefore(This,pVirtualTrack,Priority) - -#define IAMTimelineComp_VTrackSwapPriorities(This,VirtualTrackA,VirtualTrackB) \ - (This)->lpVtbl -> VTrackSwapPriorities(This,VirtualTrackA,VirtualTrackB) - -#define IAMTimelineComp_VTrackGetCount(This,pVal) \ - (This)->lpVtbl -> VTrackGetCount(This,pVal) - -#define IAMTimelineComp_GetVTrack(This,ppVirtualTrack,Which) \ - (This)->lpVtbl -> GetVTrack(This,ppVirtualTrack,Which) - -#define IAMTimelineComp_GetCountOfType(This,pVal,pValWithComps,MajorType) \ - (This)->lpVtbl -> GetCountOfType(This,pVal,pValWithComps,MajorType) - -#define IAMTimelineComp_GetRecursiveLayerOfType(This,ppVirtualTrack,WhichLayer,Type) \ - (This)->lpVtbl -> GetRecursiveLayerOfType(This,ppVirtualTrack,WhichLayer,Type) - -#define IAMTimelineComp_GetRecursiveLayerOfTypeI(This,ppVirtualTrack,pWhichLayer,Type) \ - (This)->lpVtbl -> GetRecursiveLayerOfTypeI(This,ppVirtualTrack,pWhichLayer,Type) - -#define IAMTimelineComp_GetNextVTrack(This,pVirtualTrack,ppNextVirtualTrack) \ - (This)->lpVtbl -> GetNextVTrack(This,pVirtualTrack,ppNextVirtualTrack) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineComp_VTrackInsBefore_Proxy( - IAMTimelineComp * This, - IAMTimelineObj *pVirtualTrack, - long Priority); - - -void __RPC_STUB IAMTimelineComp_VTrackInsBefore_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineComp_VTrackSwapPriorities_Proxy( - IAMTimelineComp * This, - long VirtualTrackA, - long VirtualTrackB); - - -void __RPC_STUB IAMTimelineComp_VTrackSwapPriorities_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineComp_VTrackGetCount_Proxy( - IAMTimelineComp * This, - long *pVal); - - -void __RPC_STUB IAMTimelineComp_VTrackGetCount_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineComp_GetVTrack_Proxy( - IAMTimelineComp * This, - /* [out] */ IAMTimelineObj **ppVirtualTrack, - long Which); - - -void __RPC_STUB IAMTimelineComp_GetVTrack_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineComp_GetCountOfType_Proxy( - IAMTimelineComp * This, - long *pVal, - long *pValWithComps, - TIMELINE_MAJOR_TYPE MajorType); - - -void __RPC_STUB IAMTimelineComp_GetCountOfType_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineComp_GetRecursiveLayerOfType_Proxy( - IAMTimelineComp * This, - /* [out] */ IAMTimelineObj **ppVirtualTrack, - long WhichLayer, - TIMELINE_MAJOR_TYPE Type); - - -void __RPC_STUB IAMTimelineComp_GetRecursiveLayerOfType_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineComp_GetRecursiveLayerOfTypeI_Proxy( - IAMTimelineComp * This, - /* [out] */ IAMTimelineObj **ppVirtualTrack, - /* [out][in] */ long *pWhichLayer, - TIMELINE_MAJOR_TYPE Type); - - -void __RPC_STUB IAMTimelineComp_GetRecursiveLayerOfTypeI_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IAMTimelineComp_GetNextVTrack_Proxy( - IAMTimelineComp * This, - IAMTimelineObj *pVirtualTrack, - /* [out] */ IAMTimelineObj **ppNextVirtualTrack); - - -void __RPC_STUB IAMTimelineComp_GetNextVTrack_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IAMTimelineComp_INTERFACE_DEFINED__ */ - - -#ifndef __IAMTimelineGroup_INTERFACE_DEFINED__ -#define __IAMTimelineGroup_INTERFACE_DEFINED__ - -/* interface IAMTimelineGroup */ -/* [unique][helpstring][uuid][object] */ - - -EXTERN_C const IID IID_IAMTimelineGroup; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("9EED4F00-B8A6-11d2-8023-00C0DF10D434") - IAMTimelineGroup : public IUnknown - { - public: - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetTimeline( - IAMTimeline *pTimeline) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetTimeline( - /* [out] */ IAMTimeline **ppTimeline) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetPriority( - long *pPriority) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetMediaType( - /* [out] */ AM_MEDIA_TYPE *__MIDL_0043) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetMediaType( - /* [in] */ AM_MEDIA_TYPE *__MIDL_0044) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetOutputFPS( - double FPS) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetOutputFPS( - double *pFPS) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetGroupName( - BSTR pGroupName) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetGroupName( - /* [retval][out] */ BSTR *pGroupName) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetPreviewMode( - BOOL fPreview) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetPreviewMode( - BOOL *pfPreview) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetMediaTypeForVB( - /* [in] */ long Val) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetOutputBuffering( - /* [out] */ int *pnBuffer) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetOutputBuffering( - /* [in] */ int nBuffer) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetSmartRecompressFormat( - long *pFormat) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetSmartRecompressFormat( - long **ppFormat) = 0; - - virtual HRESULT STDMETHODCALLTYPE IsSmartRecompressFormatSet( - BOOL *pVal) = 0; - - virtual HRESULT STDMETHODCALLTYPE IsRecompressFormatDirty( - BOOL *pVal) = 0; - - virtual HRESULT STDMETHODCALLTYPE ClearRecompressFormatDirty( void) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetRecompFormatFromSource( - IAMTimelineSrc *pSource) = 0; - - }; - -#else /* C style interface */ - - typedef struct IAMTimelineGroupVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IAMTimelineGroup * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IAMTimelineGroup * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IAMTimelineGroup * This); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetTimeline )( - IAMTimelineGroup * This, - IAMTimeline *pTimeline); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetTimeline )( - IAMTimelineGroup * This, - /* [out] */ IAMTimeline **ppTimeline); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetPriority )( - IAMTimelineGroup * This, - long *pPriority); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetMediaType )( - IAMTimelineGroup * This, - /* [out] */ AM_MEDIA_TYPE *__MIDL_0043); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetMediaType )( - IAMTimelineGroup * This, - /* [in] */ AM_MEDIA_TYPE *__MIDL_0044); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetOutputFPS )( - IAMTimelineGroup * This, - double FPS); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetOutputFPS )( - IAMTimelineGroup * This, - double *pFPS); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetGroupName )( - IAMTimelineGroup * This, - BSTR pGroupName); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetGroupName )( - IAMTimelineGroup * This, - /* [retval][out] */ BSTR *pGroupName); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetPreviewMode )( - IAMTimelineGroup * This, - BOOL fPreview); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetPreviewMode )( - IAMTimelineGroup * This, - BOOL *pfPreview); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetMediaTypeForVB )( - IAMTimelineGroup * This, - /* [in] */ long Val); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetOutputBuffering )( - IAMTimelineGroup * This, - /* [out] */ int *pnBuffer); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetOutputBuffering )( - IAMTimelineGroup * This, - /* [in] */ int nBuffer); - - HRESULT ( STDMETHODCALLTYPE *SetSmartRecompressFormat )( - IAMTimelineGroup * This, - long *pFormat); - - HRESULT ( STDMETHODCALLTYPE *GetSmartRecompressFormat )( - IAMTimelineGroup * This, - long **ppFormat); - - HRESULT ( STDMETHODCALLTYPE *IsSmartRecompressFormatSet )( - IAMTimelineGroup * This, - BOOL *pVal); - - HRESULT ( STDMETHODCALLTYPE *IsRecompressFormatDirty )( - IAMTimelineGroup * This, - BOOL *pVal); - - HRESULT ( STDMETHODCALLTYPE *ClearRecompressFormatDirty )( - IAMTimelineGroup * This); - - HRESULT ( STDMETHODCALLTYPE *SetRecompFormatFromSource )( - IAMTimelineGroup * This, - IAMTimelineSrc *pSource); - - END_INTERFACE - } IAMTimelineGroupVtbl; - - interface IAMTimelineGroup - { - CONST_VTBL struct IAMTimelineGroupVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IAMTimelineGroup_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IAMTimelineGroup_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IAMTimelineGroup_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IAMTimelineGroup_SetTimeline(This,pTimeline) \ - (This)->lpVtbl -> SetTimeline(This,pTimeline) - -#define IAMTimelineGroup_GetTimeline(This,ppTimeline) \ - (This)->lpVtbl -> GetTimeline(This,ppTimeline) - -#define IAMTimelineGroup_GetPriority(This,pPriority) \ - (This)->lpVtbl -> GetPriority(This,pPriority) - -#define IAMTimelineGroup_GetMediaType(This,__MIDL_0043) \ - (This)->lpVtbl -> GetMediaType(This,__MIDL_0043) - -#define IAMTimelineGroup_SetMediaType(This,__MIDL_0044) \ - (This)->lpVtbl -> SetMediaType(This,__MIDL_0044) - -#define IAMTimelineGroup_SetOutputFPS(This,FPS) \ - (This)->lpVtbl -> SetOutputFPS(This,FPS) - -#define IAMTimelineGroup_GetOutputFPS(This,pFPS) \ - (This)->lpVtbl -> GetOutputFPS(This,pFPS) - -#define IAMTimelineGroup_SetGroupName(This,pGroupName) \ - (This)->lpVtbl -> SetGroupName(This,pGroupName) - -#define IAMTimelineGroup_GetGroupName(This,pGroupName) \ - (This)->lpVtbl -> GetGroupName(This,pGroupName) - -#define IAMTimelineGroup_SetPreviewMode(This,fPreview) \ - (This)->lpVtbl -> SetPreviewMode(This,fPreview) - -#define IAMTimelineGroup_GetPreviewMode(This,pfPreview) \ - (This)->lpVtbl -> GetPreviewMode(This,pfPreview) - -#define IAMTimelineGroup_SetMediaTypeForVB(This,Val) \ - (This)->lpVtbl -> SetMediaTypeForVB(This,Val) - -#define IAMTimelineGroup_GetOutputBuffering(This,pnBuffer) \ - (This)->lpVtbl -> GetOutputBuffering(This,pnBuffer) - -#define IAMTimelineGroup_SetOutputBuffering(This,nBuffer) \ - (This)->lpVtbl -> SetOutputBuffering(This,nBuffer) - -#define IAMTimelineGroup_SetSmartRecompressFormat(This,pFormat) \ - (This)->lpVtbl -> SetSmartRecompressFormat(This,pFormat) - -#define IAMTimelineGroup_GetSmartRecompressFormat(This,ppFormat) \ - (This)->lpVtbl -> GetSmartRecompressFormat(This,ppFormat) - -#define IAMTimelineGroup_IsSmartRecompressFormatSet(This,pVal) \ - (This)->lpVtbl -> IsSmartRecompressFormatSet(This,pVal) - -#define IAMTimelineGroup_IsRecompressFormatDirty(This,pVal) \ - (This)->lpVtbl -> IsRecompressFormatDirty(This,pVal) - -#define IAMTimelineGroup_ClearRecompressFormatDirty(This) \ - (This)->lpVtbl -> ClearRecompressFormatDirty(This) - -#define IAMTimelineGroup_SetRecompFormatFromSource(This,pSource) \ - (This)->lpVtbl -> SetRecompFormatFromSource(This,pSource) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineGroup_SetTimeline_Proxy( - IAMTimelineGroup * This, - IAMTimeline *pTimeline); - - -void __RPC_STUB IAMTimelineGroup_SetTimeline_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineGroup_GetTimeline_Proxy( - IAMTimelineGroup * This, - /* [out] */ IAMTimeline **ppTimeline); - - -void __RPC_STUB IAMTimelineGroup_GetTimeline_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineGroup_GetPriority_Proxy( - IAMTimelineGroup * This, - long *pPriority); - - -void __RPC_STUB IAMTimelineGroup_GetPriority_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineGroup_GetMediaType_Proxy( - IAMTimelineGroup * This, - /* [out] */ AM_MEDIA_TYPE *__MIDL_0043); - - -void __RPC_STUB IAMTimelineGroup_GetMediaType_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineGroup_SetMediaType_Proxy( - IAMTimelineGroup * This, - /* [in] */ AM_MEDIA_TYPE *__MIDL_0044); - - -void __RPC_STUB IAMTimelineGroup_SetMediaType_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineGroup_SetOutputFPS_Proxy( - IAMTimelineGroup * This, - double FPS); - - -void __RPC_STUB IAMTimelineGroup_SetOutputFPS_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineGroup_GetOutputFPS_Proxy( - IAMTimelineGroup * This, - double *pFPS); - - -void __RPC_STUB IAMTimelineGroup_GetOutputFPS_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineGroup_SetGroupName_Proxy( - IAMTimelineGroup * This, - BSTR pGroupName); - - -void __RPC_STUB IAMTimelineGroup_SetGroupName_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineGroup_GetGroupName_Proxy( - IAMTimelineGroup * This, - /* [retval][out] */ BSTR *pGroupName); - - -void __RPC_STUB IAMTimelineGroup_GetGroupName_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineGroup_SetPreviewMode_Proxy( - IAMTimelineGroup * This, - BOOL fPreview); - - -void __RPC_STUB IAMTimelineGroup_SetPreviewMode_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineGroup_GetPreviewMode_Proxy( - IAMTimelineGroup * This, - BOOL *pfPreview); - - -void __RPC_STUB IAMTimelineGroup_GetPreviewMode_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineGroup_SetMediaTypeForVB_Proxy( - IAMTimelineGroup * This, - /* [in] */ long Val); - - -void __RPC_STUB IAMTimelineGroup_SetMediaTypeForVB_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineGroup_GetOutputBuffering_Proxy( - IAMTimelineGroup * This, - /* [out] */ int *pnBuffer); - - -void __RPC_STUB IAMTimelineGroup_GetOutputBuffering_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineGroup_SetOutputBuffering_Proxy( - IAMTimelineGroup * This, - /* [in] */ int nBuffer); - - -void __RPC_STUB IAMTimelineGroup_SetOutputBuffering_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IAMTimelineGroup_SetSmartRecompressFormat_Proxy( - IAMTimelineGroup * This, - long *pFormat); - - -void __RPC_STUB IAMTimelineGroup_SetSmartRecompressFormat_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IAMTimelineGroup_GetSmartRecompressFormat_Proxy( - IAMTimelineGroup * This, - long **ppFormat); - - -void __RPC_STUB IAMTimelineGroup_GetSmartRecompressFormat_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IAMTimelineGroup_IsSmartRecompressFormatSet_Proxy( - IAMTimelineGroup * This, - BOOL *pVal); - - -void __RPC_STUB IAMTimelineGroup_IsSmartRecompressFormatSet_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IAMTimelineGroup_IsRecompressFormatDirty_Proxy( - IAMTimelineGroup * This, - BOOL *pVal); - - -void __RPC_STUB IAMTimelineGroup_IsRecompressFormatDirty_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IAMTimelineGroup_ClearRecompressFormatDirty_Proxy( - IAMTimelineGroup * This); - - -void __RPC_STUB IAMTimelineGroup_ClearRecompressFormatDirty_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IAMTimelineGroup_SetRecompFormatFromSource_Proxy( - IAMTimelineGroup * This, - IAMTimelineSrc *pSource); - - -void __RPC_STUB IAMTimelineGroup_SetRecompFormatFromSource_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IAMTimelineGroup_INTERFACE_DEFINED__ */ - - -#ifndef __IAMTimeline_INTERFACE_DEFINED__ -#define __IAMTimeline_INTERFACE_DEFINED__ - -/* interface IAMTimeline */ -/* [unique][helpstring][uuid][object] */ - - -EXTERN_C const IID IID_IAMTimeline; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("78530B74-61F9-11D2-8CAD-00A024580902") - IAMTimeline : public IUnknown - { - public: - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE CreateEmptyNode( - /* [out] */ IAMTimelineObj **ppObj, - TIMELINE_MAJOR_TYPE Type) = 0; - - virtual HRESULT STDMETHODCALLTYPE AddGroup( - IAMTimelineObj *pGroup) = 0; - - virtual HRESULT STDMETHODCALLTYPE RemGroupFromList( - IAMTimelineObj *pGroup) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetGroup( - /* [out] */ IAMTimelineObj **ppGroup, - long WhichGroup) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetGroupCount( - long *pCount) = 0; - - virtual HRESULT STDMETHODCALLTYPE ClearAllGroups( void) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetInsertMode( - long *pMode) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetInsertMode( - long Mode) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE EnableTransitions( - BOOL fEnabled) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE TransitionsEnabled( - BOOL *pfEnabled) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE EnableEffects( - BOOL fEnabled) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE EffectsEnabled( - BOOL *pfEnabled) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetInterestRange( - REFERENCE_TIME Start, - REFERENCE_TIME Stop) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetDuration( - REFERENCE_TIME *pDuration) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetDuration2( - double *pDuration) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetDefaultFPS( - double FPS) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetDefaultFPS( - double *pFPS) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE IsDirty( - BOOL *pDirty) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetDirtyRange( - REFERENCE_TIME *pStart, - REFERENCE_TIME *pStop) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetCountOfType( - long Group, - long *pVal, - long *pValWithComps, - TIMELINE_MAJOR_TYPE MajorType) = 0; - - virtual HRESULT STDMETHODCALLTYPE ValidateSourceNames( - long ValidateFlags, - IMediaLocator *pOverride, - LONG_PTR NotifyEventHandle) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetDefaultTransition( - GUID *pGuid) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetDefaultTransition( - GUID *pGuid) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetDefaultEffect( - GUID *pGuid) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetDefaultEffect( - GUID *pGuid) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetDefaultTransitionB( - BSTR pGuid) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetDefaultTransitionB( - /* [retval][out] */ BSTR *pGuid) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetDefaultEffectB( - BSTR pGuid) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetDefaultEffectB( - /* [retval][out] */ BSTR *pGuid) = 0; - - }; - -#else /* C style interface */ - - typedef struct IAMTimelineVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IAMTimeline * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IAMTimeline * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IAMTimeline * This); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *CreateEmptyNode )( - IAMTimeline * This, - /* [out] */ IAMTimelineObj **ppObj, - TIMELINE_MAJOR_TYPE Type); - - HRESULT ( STDMETHODCALLTYPE *AddGroup )( - IAMTimeline * This, - IAMTimelineObj *pGroup); - - HRESULT ( STDMETHODCALLTYPE *RemGroupFromList )( - IAMTimeline * This, - IAMTimelineObj *pGroup); - - HRESULT ( STDMETHODCALLTYPE *GetGroup )( - IAMTimeline * This, - /* [out] */ IAMTimelineObj **ppGroup, - long WhichGroup); - - HRESULT ( STDMETHODCALLTYPE *GetGroupCount )( - IAMTimeline * This, - long *pCount); - - HRESULT ( STDMETHODCALLTYPE *ClearAllGroups )( - IAMTimeline * This); - - HRESULT ( STDMETHODCALLTYPE *GetInsertMode )( - IAMTimeline * This, - long *pMode); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetInsertMode )( - IAMTimeline * This, - long Mode); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *EnableTransitions )( - IAMTimeline * This, - BOOL fEnabled); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *TransitionsEnabled )( - IAMTimeline * This, - BOOL *pfEnabled); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *EnableEffects )( - IAMTimeline * This, - BOOL fEnabled); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *EffectsEnabled )( - IAMTimeline * This, - BOOL *pfEnabled); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetInterestRange )( - IAMTimeline * This, - REFERENCE_TIME Start, - REFERENCE_TIME Stop); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetDuration )( - IAMTimeline * This, - REFERENCE_TIME *pDuration); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetDuration2 )( - IAMTimeline * This, - double *pDuration); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetDefaultFPS )( - IAMTimeline * This, - double FPS); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetDefaultFPS )( - IAMTimeline * This, - double *pFPS); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *IsDirty )( - IAMTimeline * This, - BOOL *pDirty); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetDirtyRange )( - IAMTimeline * This, - REFERENCE_TIME *pStart, - REFERENCE_TIME *pStop); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetCountOfType )( - IAMTimeline * This, - long Group, - long *pVal, - long *pValWithComps, - TIMELINE_MAJOR_TYPE MajorType); - - HRESULT ( STDMETHODCALLTYPE *ValidateSourceNames )( - IAMTimeline * This, - long ValidateFlags, - IMediaLocator *pOverride, - LONG_PTR NotifyEventHandle); - - HRESULT ( STDMETHODCALLTYPE *SetDefaultTransition )( - IAMTimeline * This, - GUID *pGuid); - - HRESULT ( STDMETHODCALLTYPE *GetDefaultTransition )( - IAMTimeline * This, - GUID *pGuid); - - HRESULT ( STDMETHODCALLTYPE *SetDefaultEffect )( - IAMTimeline * This, - GUID *pGuid); - - HRESULT ( STDMETHODCALLTYPE *GetDefaultEffect )( - IAMTimeline * This, - GUID *pGuid); - - HRESULT ( STDMETHODCALLTYPE *SetDefaultTransitionB )( - IAMTimeline * This, - BSTR pGuid); - - HRESULT ( STDMETHODCALLTYPE *GetDefaultTransitionB )( - IAMTimeline * This, - /* [retval][out] */ BSTR *pGuid); - - HRESULT ( STDMETHODCALLTYPE *SetDefaultEffectB )( - IAMTimeline * This, - BSTR pGuid); - - HRESULT ( STDMETHODCALLTYPE *GetDefaultEffectB )( - IAMTimeline * This, - /* [retval][out] */ BSTR *pGuid); - - END_INTERFACE - } IAMTimelineVtbl; - - interface IAMTimeline - { - CONST_VTBL struct IAMTimelineVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IAMTimeline_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IAMTimeline_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IAMTimeline_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IAMTimeline_CreateEmptyNode(This,ppObj,Type) \ - (This)->lpVtbl -> CreateEmptyNode(This,ppObj,Type) - -#define IAMTimeline_AddGroup(This,pGroup) \ - (This)->lpVtbl -> AddGroup(This,pGroup) - -#define IAMTimeline_RemGroupFromList(This,pGroup) \ - (This)->lpVtbl -> RemGroupFromList(This,pGroup) - -#define IAMTimeline_GetGroup(This,ppGroup,WhichGroup) \ - (This)->lpVtbl -> GetGroup(This,ppGroup,WhichGroup) - -#define IAMTimeline_GetGroupCount(This,pCount) \ - (This)->lpVtbl -> GetGroupCount(This,pCount) - -#define IAMTimeline_ClearAllGroups(This) \ - (This)->lpVtbl -> ClearAllGroups(This) - -#define IAMTimeline_GetInsertMode(This,pMode) \ - (This)->lpVtbl -> GetInsertMode(This,pMode) - -#define IAMTimeline_SetInsertMode(This,Mode) \ - (This)->lpVtbl -> SetInsertMode(This,Mode) - -#define IAMTimeline_EnableTransitions(This,fEnabled) \ - (This)->lpVtbl -> EnableTransitions(This,fEnabled) - -#define IAMTimeline_TransitionsEnabled(This,pfEnabled) \ - (This)->lpVtbl -> TransitionsEnabled(This,pfEnabled) - -#define IAMTimeline_EnableEffects(This,fEnabled) \ - (This)->lpVtbl -> EnableEffects(This,fEnabled) - -#define IAMTimeline_EffectsEnabled(This,pfEnabled) \ - (This)->lpVtbl -> EffectsEnabled(This,pfEnabled) - -#define IAMTimeline_SetInterestRange(This,Start,Stop) \ - (This)->lpVtbl -> SetInterestRange(This,Start,Stop) - -#define IAMTimeline_GetDuration(This,pDuration) \ - (This)->lpVtbl -> GetDuration(This,pDuration) - -#define IAMTimeline_GetDuration2(This,pDuration) \ - (This)->lpVtbl -> GetDuration2(This,pDuration) - -#define IAMTimeline_SetDefaultFPS(This,FPS) \ - (This)->lpVtbl -> SetDefaultFPS(This,FPS) - -#define IAMTimeline_GetDefaultFPS(This,pFPS) \ - (This)->lpVtbl -> GetDefaultFPS(This,pFPS) - -#define IAMTimeline_IsDirty(This,pDirty) \ - (This)->lpVtbl -> IsDirty(This,pDirty) - -#define IAMTimeline_GetDirtyRange(This,pStart,pStop) \ - (This)->lpVtbl -> GetDirtyRange(This,pStart,pStop) - -#define IAMTimeline_GetCountOfType(This,Group,pVal,pValWithComps,MajorType) \ - (This)->lpVtbl -> GetCountOfType(This,Group,pVal,pValWithComps,MajorType) - -#define IAMTimeline_ValidateSourceNames(This,ValidateFlags,pOverride,NotifyEventHandle) \ - (This)->lpVtbl -> ValidateSourceNames(This,ValidateFlags,pOverride,NotifyEventHandle) - -#define IAMTimeline_SetDefaultTransition(This,pGuid) \ - (This)->lpVtbl -> SetDefaultTransition(This,pGuid) - -#define IAMTimeline_GetDefaultTransition(This,pGuid) \ - (This)->lpVtbl -> GetDefaultTransition(This,pGuid) - -#define IAMTimeline_SetDefaultEffect(This,pGuid) \ - (This)->lpVtbl -> SetDefaultEffect(This,pGuid) - -#define IAMTimeline_GetDefaultEffect(This,pGuid) \ - (This)->lpVtbl -> GetDefaultEffect(This,pGuid) - -#define IAMTimeline_SetDefaultTransitionB(This,pGuid) \ - (This)->lpVtbl -> SetDefaultTransitionB(This,pGuid) - -#define IAMTimeline_GetDefaultTransitionB(This,pGuid) \ - (This)->lpVtbl -> GetDefaultTransitionB(This,pGuid) - -#define IAMTimeline_SetDefaultEffectB(This,pGuid) \ - (This)->lpVtbl -> SetDefaultEffectB(This,pGuid) - -#define IAMTimeline_GetDefaultEffectB(This,pGuid) \ - (This)->lpVtbl -> GetDefaultEffectB(This,pGuid) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimeline_CreateEmptyNode_Proxy( - IAMTimeline * This, - /* [out] */ IAMTimelineObj **ppObj, - TIMELINE_MAJOR_TYPE Type); - - -void __RPC_STUB IAMTimeline_CreateEmptyNode_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IAMTimeline_AddGroup_Proxy( - IAMTimeline * This, - IAMTimelineObj *pGroup); - - -void __RPC_STUB IAMTimeline_AddGroup_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IAMTimeline_RemGroupFromList_Proxy( - IAMTimeline * This, - IAMTimelineObj *pGroup); - - -void __RPC_STUB IAMTimeline_RemGroupFromList_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IAMTimeline_GetGroup_Proxy( - IAMTimeline * This, - /* [out] */ IAMTimelineObj **ppGroup, - long WhichGroup); - - -void __RPC_STUB IAMTimeline_GetGroup_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IAMTimeline_GetGroupCount_Proxy( - IAMTimeline * This, - long *pCount); - - -void __RPC_STUB IAMTimeline_GetGroupCount_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IAMTimeline_ClearAllGroups_Proxy( - IAMTimeline * This); - - -void __RPC_STUB IAMTimeline_ClearAllGroups_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IAMTimeline_GetInsertMode_Proxy( - IAMTimeline * This, - long *pMode); - - -void __RPC_STUB IAMTimeline_GetInsertMode_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimeline_SetInsertMode_Proxy( - IAMTimeline * This, - long Mode); - - -void __RPC_STUB IAMTimeline_SetInsertMode_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimeline_EnableTransitions_Proxy( - IAMTimeline * This, - BOOL fEnabled); - - -void __RPC_STUB IAMTimeline_EnableTransitions_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimeline_TransitionsEnabled_Proxy( - IAMTimeline * This, - BOOL *pfEnabled); - - -void __RPC_STUB IAMTimeline_TransitionsEnabled_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimeline_EnableEffects_Proxy( - IAMTimeline * This, - BOOL fEnabled); - - -void __RPC_STUB IAMTimeline_EnableEffects_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimeline_EffectsEnabled_Proxy( - IAMTimeline * This, - BOOL *pfEnabled); - - -void __RPC_STUB IAMTimeline_EffectsEnabled_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimeline_SetInterestRange_Proxy( - IAMTimeline * This, - REFERENCE_TIME Start, - REFERENCE_TIME Stop); - - -void __RPC_STUB IAMTimeline_SetInterestRange_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimeline_GetDuration_Proxy( - IAMTimeline * This, - REFERENCE_TIME *pDuration); - - -void __RPC_STUB IAMTimeline_GetDuration_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimeline_GetDuration2_Proxy( - IAMTimeline * This, - double *pDuration); - - -void __RPC_STUB IAMTimeline_GetDuration2_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimeline_SetDefaultFPS_Proxy( - IAMTimeline * This, - double FPS); - - -void __RPC_STUB IAMTimeline_SetDefaultFPS_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimeline_GetDefaultFPS_Proxy( - IAMTimeline * This, - double *pFPS); - - -void __RPC_STUB IAMTimeline_GetDefaultFPS_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimeline_IsDirty_Proxy( - IAMTimeline * This, - BOOL *pDirty); - - -void __RPC_STUB IAMTimeline_IsDirty_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimeline_GetDirtyRange_Proxy( - IAMTimeline * This, - REFERENCE_TIME *pStart, - REFERENCE_TIME *pStop); - - -void __RPC_STUB IAMTimeline_GetDirtyRange_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimeline_GetCountOfType_Proxy( - IAMTimeline * This, - long Group, - long *pVal, - long *pValWithComps, - TIMELINE_MAJOR_TYPE MajorType); - - -void __RPC_STUB IAMTimeline_GetCountOfType_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IAMTimeline_ValidateSourceNames_Proxy( - IAMTimeline * This, - long ValidateFlags, - IMediaLocator *pOverride, - LONG_PTR NotifyEventHandle); - - -void __RPC_STUB IAMTimeline_ValidateSourceNames_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IAMTimeline_SetDefaultTransition_Proxy( - IAMTimeline * This, - GUID *pGuid); - - -void __RPC_STUB IAMTimeline_SetDefaultTransition_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IAMTimeline_GetDefaultTransition_Proxy( - IAMTimeline * This, - GUID *pGuid); - - -void __RPC_STUB IAMTimeline_GetDefaultTransition_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IAMTimeline_SetDefaultEffect_Proxy( - IAMTimeline * This, - GUID *pGuid); - - -void __RPC_STUB IAMTimeline_SetDefaultEffect_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IAMTimeline_GetDefaultEffect_Proxy( - IAMTimeline * This, - GUID *pGuid); - - -void __RPC_STUB IAMTimeline_GetDefaultEffect_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IAMTimeline_SetDefaultTransitionB_Proxy( - IAMTimeline * This, - BSTR pGuid); - - -void __RPC_STUB IAMTimeline_SetDefaultTransitionB_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IAMTimeline_GetDefaultTransitionB_Proxy( - IAMTimeline * This, - /* [retval][out] */ BSTR *pGuid); - - -void __RPC_STUB IAMTimeline_GetDefaultTransitionB_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IAMTimeline_SetDefaultEffectB_Proxy( - IAMTimeline * This, - BSTR pGuid); - - -void __RPC_STUB IAMTimeline_SetDefaultEffectB_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IAMTimeline_GetDefaultEffectB_Proxy( - IAMTimeline * This, - /* [retval][out] */ BSTR *pGuid); - - -void __RPC_STUB IAMTimeline_GetDefaultEffectB_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IAMTimeline_INTERFACE_DEFINED__ */ - - -#ifndef __IXml2Dex_INTERFACE_DEFINED__ -#define __IXml2Dex_INTERFACE_DEFINED__ - -/* interface IXml2Dex */ -/* [unique][helpstring][uuid][object] */ - - -EXTERN_C const IID IID_IXml2Dex; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("18C628ED-962A-11D2-8D08-00A0C9441E20") - IXml2Dex : public IDispatch - { - public: - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE CreateGraphFromFile( - /* [out] */ IUnknown **ppGraph, - IUnknown *pTimeline, - BSTR Filename) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE WriteGrfFile( - IUnknown *pGraph, - BSTR FileName) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE WriteXMLFile( - IUnknown *pTimeline, - BSTR FileName) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE ReadXMLFile( - IUnknown *pTimeline, - BSTR XMLName) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Delete( - IUnknown *pTimeline, - double dStart, - double dEnd) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE WriteXMLPart( - IUnknown *pTimeline, - double dStart, - double dEnd, - BSTR FileName) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE PasteXMLFile( - IUnknown *pTimeline, - double dStart, - BSTR FileName) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE CopyXML( - IUnknown *pTimeline, - double dStart, - double dEnd) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE PasteXML( - IUnknown *pTimeline, - double dStart) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Reset( void) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE ReadXML( - IUnknown *pTimeline, - IUnknown *pXML) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE WriteXML( - IUnknown *pTimeline, - BSTR *pbstrXML) = 0; - - }; - -#else /* C style interface */ - - typedef struct IXml2DexVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IXml2Dex * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IXml2Dex * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IXml2Dex * This); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( - IXml2Dex * This, - /* [out] */ UINT *pctinfo); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( - IXml2Dex * This, - /* [in] */ UINT iTInfo, - /* [in] */ LCID lcid, - /* [out] */ ITypeInfo **ppTInfo); - - HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( - IXml2Dex * This, - /* [in] */ REFIID riid, - /* [size_is][in] */ LPOLESTR *rgszNames, - /* [in] */ UINT cNames, - /* [in] */ LCID lcid, - /* [size_is][out] */ DISPID *rgDispId); - - /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( - IXml2Dex * This, - /* [in] */ DISPID dispIdMember, - /* [in] */ REFIID riid, - /* [in] */ LCID lcid, - /* [in] */ WORD wFlags, - /* [out][in] */ DISPPARAMS *pDispParams, - /* [out] */ VARIANT *pVarResult, - /* [out] */ EXCEPINFO *pExcepInfo, - /* [out] */ UINT *puArgErr); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *CreateGraphFromFile )( - IXml2Dex * This, - /* [out] */ IUnknown **ppGraph, - IUnknown *pTimeline, - BSTR Filename); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *WriteGrfFile )( - IXml2Dex * This, - IUnknown *pGraph, - BSTR FileName); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *WriteXMLFile )( - IXml2Dex * This, - IUnknown *pTimeline, - BSTR FileName); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *ReadXMLFile )( - IXml2Dex * This, - IUnknown *pTimeline, - BSTR XMLName); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Delete )( - IXml2Dex * This, - IUnknown *pTimeline, - double dStart, - double dEnd); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *WriteXMLPart )( - IXml2Dex * This, - IUnknown *pTimeline, - double dStart, - double dEnd, - BSTR FileName); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *PasteXMLFile )( - IXml2Dex * This, - IUnknown *pTimeline, - double dStart, - BSTR FileName); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *CopyXML )( - IXml2Dex * This, - IUnknown *pTimeline, - double dStart, - double dEnd); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *PasteXML )( - IXml2Dex * This, - IUnknown *pTimeline, - double dStart); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Reset )( - IXml2Dex * This); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *ReadXML )( - IXml2Dex * This, - IUnknown *pTimeline, - IUnknown *pXML); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *WriteXML )( - IXml2Dex * This, - IUnknown *pTimeline, - BSTR *pbstrXML); - - END_INTERFACE - } IXml2DexVtbl; - - interface IXml2Dex - { - CONST_VTBL struct IXml2DexVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IXml2Dex_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IXml2Dex_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IXml2Dex_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IXml2Dex_GetTypeInfoCount(This,pctinfo) \ - (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) - -#define IXml2Dex_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ - (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) - -#define IXml2Dex_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ - (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) - -#define IXml2Dex_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ - (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) - - -#define IXml2Dex_CreateGraphFromFile(This,ppGraph,pTimeline,Filename) \ - (This)->lpVtbl -> CreateGraphFromFile(This,ppGraph,pTimeline,Filename) - -#define IXml2Dex_WriteGrfFile(This,pGraph,FileName) \ - (This)->lpVtbl -> WriteGrfFile(This,pGraph,FileName) - -#define IXml2Dex_WriteXMLFile(This,pTimeline,FileName) \ - (This)->lpVtbl -> WriteXMLFile(This,pTimeline,FileName) - -#define IXml2Dex_ReadXMLFile(This,pTimeline,XMLName) \ - (This)->lpVtbl -> ReadXMLFile(This,pTimeline,XMLName) - -#define IXml2Dex_Delete(This,pTimeline,dStart,dEnd) \ - (This)->lpVtbl -> Delete(This,pTimeline,dStart,dEnd) - -#define IXml2Dex_WriteXMLPart(This,pTimeline,dStart,dEnd,FileName) \ - (This)->lpVtbl -> WriteXMLPart(This,pTimeline,dStart,dEnd,FileName) - -#define IXml2Dex_PasteXMLFile(This,pTimeline,dStart,FileName) \ - (This)->lpVtbl -> PasteXMLFile(This,pTimeline,dStart,FileName) - -#define IXml2Dex_CopyXML(This,pTimeline,dStart,dEnd) \ - (This)->lpVtbl -> CopyXML(This,pTimeline,dStart,dEnd) - -#define IXml2Dex_PasteXML(This,pTimeline,dStart) \ - (This)->lpVtbl -> PasteXML(This,pTimeline,dStart) - -#define IXml2Dex_Reset(This) \ - (This)->lpVtbl -> Reset(This) - -#define IXml2Dex_ReadXML(This,pTimeline,pXML) \ - (This)->lpVtbl -> ReadXML(This,pTimeline,pXML) - -#define IXml2Dex_WriteXML(This,pTimeline,pbstrXML) \ - (This)->lpVtbl -> WriteXML(This,pTimeline,pbstrXML) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IXml2Dex_CreateGraphFromFile_Proxy( - IXml2Dex * This, - /* [out] */ IUnknown **ppGraph, - IUnknown *pTimeline, - BSTR Filename); - - -void __RPC_STUB IXml2Dex_CreateGraphFromFile_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IXml2Dex_WriteGrfFile_Proxy( - IXml2Dex * This, - IUnknown *pGraph, - BSTR FileName); - - -void __RPC_STUB IXml2Dex_WriteGrfFile_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IXml2Dex_WriteXMLFile_Proxy( - IXml2Dex * This, - IUnknown *pTimeline, - BSTR FileName); - - -void __RPC_STUB IXml2Dex_WriteXMLFile_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IXml2Dex_ReadXMLFile_Proxy( - IXml2Dex * This, - IUnknown *pTimeline, - BSTR XMLName); - - -void __RPC_STUB IXml2Dex_ReadXMLFile_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IXml2Dex_Delete_Proxy( - IXml2Dex * This, - IUnknown *pTimeline, - double dStart, - double dEnd); - - -void __RPC_STUB IXml2Dex_Delete_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IXml2Dex_WriteXMLPart_Proxy( - IXml2Dex * This, - IUnknown *pTimeline, - double dStart, - double dEnd, - BSTR FileName); - - -void __RPC_STUB IXml2Dex_WriteXMLPart_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IXml2Dex_PasteXMLFile_Proxy( - IXml2Dex * This, - IUnknown *pTimeline, - double dStart, - BSTR FileName); - - -void __RPC_STUB IXml2Dex_PasteXMLFile_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IXml2Dex_CopyXML_Proxy( - IXml2Dex * This, - IUnknown *pTimeline, - double dStart, - double dEnd); - - -void __RPC_STUB IXml2Dex_CopyXML_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IXml2Dex_PasteXML_Proxy( - IXml2Dex * This, - IUnknown *pTimeline, - double dStart); - - -void __RPC_STUB IXml2Dex_PasteXML_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IXml2Dex_Reset_Proxy( - IXml2Dex * This); - - -void __RPC_STUB IXml2Dex_Reset_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IXml2Dex_ReadXML_Proxy( - IXml2Dex * This, - IUnknown *pTimeline, - IUnknown *pXML); - - -void __RPC_STUB IXml2Dex_ReadXML_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IXml2Dex_WriteXML_Proxy( - IXml2Dex * This, - IUnknown *pTimeline, - BSTR *pbstrXML); - - -void __RPC_STUB IXml2Dex_WriteXML_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IXml2Dex_INTERFACE_DEFINED__ */ - - -#ifndef __IAMErrorLog_INTERFACE_DEFINED__ -#define __IAMErrorLog_INTERFACE_DEFINED__ - -/* interface IAMErrorLog */ -/* [unique][helpstring][uuid][object] */ - - -EXTERN_C const IID IID_IAMErrorLog; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("E43E73A2-0EFA-11d3-9601-00A0C9441E20") - IAMErrorLog : public IUnknown - { - public: - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE LogError( - long Severity, - BSTR pErrorString, - long ErrorCode, - long hresult, - /* [in] */ VARIANT *pExtraInfo) = 0; - - }; - -#else /* C style interface */ - - typedef struct IAMErrorLogVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IAMErrorLog * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IAMErrorLog * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IAMErrorLog * This); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *LogError )( - IAMErrorLog * This, - long Severity, - BSTR pErrorString, - long ErrorCode, - long hresult, - /* [in] */ VARIANT *pExtraInfo); - - END_INTERFACE - } IAMErrorLogVtbl; - - interface IAMErrorLog - { - CONST_VTBL struct IAMErrorLogVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IAMErrorLog_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IAMErrorLog_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IAMErrorLog_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IAMErrorLog_LogError(This,Severity,pErrorString,ErrorCode,hresult,pExtraInfo) \ - (This)->lpVtbl -> LogError(This,Severity,pErrorString,ErrorCode,hresult,pExtraInfo) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMErrorLog_LogError_Proxy( - IAMErrorLog * This, - long Severity, - BSTR pErrorString, - long ErrorCode, - long hresult, - /* [in] */ VARIANT *pExtraInfo); - - -void __RPC_STUB IAMErrorLog_LogError_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IAMErrorLog_INTERFACE_DEFINED__ */ - - -#ifndef __IAMSetErrorLog_INTERFACE_DEFINED__ -#define __IAMSetErrorLog_INTERFACE_DEFINED__ - -/* interface IAMSetErrorLog */ -/* [unique][helpstring][uuid][object] */ - - -EXTERN_C const IID IID_IAMSetErrorLog; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("963566DA-BE21-4eaf-88E9-35704F8F52A1") - IAMSetErrorLog : public IUnknown - { - public: - virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_ErrorLog( - /* [retval][out] */ IAMErrorLog **pVal) = 0; - - virtual /* [helpstring][propput] */ HRESULT STDMETHODCALLTYPE put_ErrorLog( - /* [in] */ IAMErrorLog *newVal) = 0; - - }; - -#else /* C style interface */ - - typedef struct IAMSetErrorLogVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IAMSetErrorLog * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IAMSetErrorLog * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IAMSetErrorLog * This); - - /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_ErrorLog )( - IAMSetErrorLog * This, - /* [retval][out] */ IAMErrorLog **pVal); - - /* [helpstring][propput] */ HRESULT ( STDMETHODCALLTYPE *put_ErrorLog )( - IAMSetErrorLog * This, - /* [in] */ IAMErrorLog *newVal); - - END_INTERFACE - } IAMSetErrorLogVtbl; - - interface IAMSetErrorLog - { - CONST_VTBL struct IAMSetErrorLogVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IAMSetErrorLog_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IAMSetErrorLog_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IAMSetErrorLog_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IAMSetErrorLog_get_ErrorLog(This,pVal) \ - (This)->lpVtbl -> get_ErrorLog(This,pVal) - -#define IAMSetErrorLog_put_ErrorLog(This,newVal) \ - (This)->lpVtbl -> put_ErrorLog(This,newVal) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IAMSetErrorLog_get_ErrorLog_Proxy( - IAMSetErrorLog * This, - /* [retval][out] */ IAMErrorLog **pVal); - - -void __RPC_STUB IAMSetErrorLog_get_ErrorLog_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][propput] */ HRESULT STDMETHODCALLTYPE IAMSetErrorLog_put_ErrorLog_Proxy( - IAMSetErrorLog * This, - /* [in] */ IAMErrorLog *newVal); - - -void __RPC_STUB IAMSetErrorLog_put_ErrorLog_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IAMSetErrorLog_INTERFACE_DEFINED__ */ - - -#ifndef __ISampleGrabberCB_INTERFACE_DEFINED__ -#define __ISampleGrabberCB_INTERFACE_DEFINED__ - -/* interface ISampleGrabberCB */ -/* [unique][helpstring][local][uuid][object] */ - - -EXTERN_C const IID IID_ISampleGrabberCB; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("0579154A-2B53-4994-B0D0-E773148EFF85") - ISampleGrabberCB : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE SampleCB( - double SampleTime, - IMediaSample *pSample) = 0; - - virtual HRESULT STDMETHODCALLTYPE BufferCB( - double SampleTime, - BYTE *pBuffer, - long BufferLen) = 0; - - }; - -#else /* C style interface */ - - typedef struct ISampleGrabberCBVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - ISampleGrabberCB * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - ISampleGrabberCB * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - ISampleGrabberCB * This); - - HRESULT ( STDMETHODCALLTYPE *SampleCB )( - ISampleGrabberCB * This, - double SampleTime, - IMediaSample *pSample); - - HRESULT ( STDMETHODCALLTYPE *BufferCB )( - ISampleGrabberCB * This, - double SampleTime, - BYTE *pBuffer, - long BufferLen); - - END_INTERFACE - } ISampleGrabberCBVtbl; - - interface ISampleGrabberCB - { - CONST_VTBL struct ISampleGrabberCBVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define ISampleGrabberCB_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define ISampleGrabberCB_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define ISampleGrabberCB_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define ISampleGrabberCB_SampleCB(This,SampleTime,pSample) \ - (This)->lpVtbl -> SampleCB(This,SampleTime,pSample) - -#define ISampleGrabberCB_BufferCB(This,SampleTime,pBuffer,BufferLen) \ - (This)->lpVtbl -> BufferCB(This,SampleTime,pBuffer,BufferLen) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE ISampleGrabberCB_SampleCB_Proxy( - ISampleGrabberCB * This, - double SampleTime, - IMediaSample *pSample); - - -void __RPC_STUB ISampleGrabberCB_SampleCB_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE ISampleGrabberCB_BufferCB_Proxy( - ISampleGrabberCB * This, - double SampleTime, - BYTE *pBuffer, - long BufferLen); - - -void __RPC_STUB ISampleGrabberCB_BufferCB_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __ISampleGrabberCB_INTERFACE_DEFINED__ */ - - -#ifndef __ISampleGrabber_INTERFACE_DEFINED__ -#define __ISampleGrabber_INTERFACE_DEFINED__ - -/* interface ISampleGrabber */ -/* [unique][helpstring][local][uuid][object] */ - - -EXTERN_C const IID IID_ISampleGrabber; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("6B652FFF-11FE-4fce-92AD-0266B5D7C78F") - ISampleGrabber : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE SetOneShot( - BOOL OneShot) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetMediaType( - const AM_MEDIA_TYPE *pType) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetConnectedMediaType( - AM_MEDIA_TYPE *pType) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetBufferSamples( - BOOL BufferThem) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetCurrentBuffer( - /* [out][in] */ long *pBufferSize, - /* [out] */ long *pBuffer) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetCurrentSample( - /* [retval][out] */ IMediaSample **ppSample) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetCallback( - ISampleGrabberCB *pCallback, - long WhichMethodToCallback) = 0; - - }; - -#else /* C style interface */ - - typedef struct ISampleGrabberVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - ISampleGrabber * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - ISampleGrabber * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - ISampleGrabber * This); - - HRESULT ( STDMETHODCALLTYPE *SetOneShot )( - ISampleGrabber * This, - BOOL OneShot); - - HRESULT ( STDMETHODCALLTYPE *SetMediaType )( - ISampleGrabber * This, - const AM_MEDIA_TYPE *pType); - - HRESULT ( STDMETHODCALLTYPE *GetConnectedMediaType )( - ISampleGrabber * This, - AM_MEDIA_TYPE *pType); - - HRESULT ( STDMETHODCALLTYPE *SetBufferSamples )( - ISampleGrabber * This, - BOOL BufferThem); - - HRESULT ( STDMETHODCALLTYPE *GetCurrentBuffer )( - ISampleGrabber * This, - /* [out][in] */ long *pBufferSize, - /* [out] */ long *pBuffer); - - HRESULT ( STDMETHODCALLTYPE *GetCurrentSample )( - ISampleGrabber * This, - /* [retval][out] */ IMediaSample **ppSample); - - HRESULT ( STDMETHODCALLTYPE *SetCallback )( - ISampleGrabber * This, - ISampleGrabberCB *pCallback, - long WhichMethodToCallback); - - END_INTERFACE - } ISampleGrabberVtbl; - - interface ISampleGrabber - { - CONST_VTBL struct ISampleGrabberVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define ISampleGrabber_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define ISampleGrabber_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define ISampleGrabber_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define ISampleGrabber_SetOneShot(This,OneShot) \ - (This)->lpVtbl -> SetOneShot(This,OneShot) - -#define ISampleGrabber_SetMediaType(This,pType) \ - (This)->lpVtbl -> SetMediaType(This,pType) - -#define ISampleGrabber_GetConnectedMediaType(This,pType) \ - (This)->lpVtbl -> GetConnectedMediaType(This,pType) - -#define ISampleGrabber_SetBufferSamples(This,BufferThem) \ - (This)->lpVtbl -> SetBufferSamples(This,BufferThem) - -#define ISampleGrabber_GetCurrentBuffer(This,pBufferSize,pBuffer) \ - (This)->lpVtbl -> GetCurrentBuffer(This,pBufferSize,pBuffer) - -#define ISampleGrabber_GetCurrentSample(This,ppSample) \ - (This)->lpVtbl -> GetCurrentSample(This,ppSample) - -#define ISampleGrabber_SetCallback(This,pCallback,WhichMethodToCallback) \ - (This)->lpVtbl -> SetCallback(This,pCallback,WhichMethodToCallback) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE ISampleGrabber_SetOneShot_Proxy( - ISampleGrabber * This, - BOOL OneShot); - - -void __RPC_STUB ISampleGrabber_SetOneShot_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE ISampleGrabber_SetMediaType_Proxy( - ISampleGrabber * This, - const AM_MEDIA_TYPE *pType); - - -void __RPC_STUB ISampleGrabber_SetMediaType_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE ISampleGrabber_GetConnectedMediaType_Proxy( - ISampleGrabber * This, - AM_MEDIA_TYPE *pType); - - -void __RPC_STUB ISampleGrabber_GetConnectedMediaType_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE ISampleGrabber_SetBufferSamples_Proxy( - ISampleGrabber * This, - BOOL BufferThem); - - -void __RPC_STUB ISampleGrabber_SetBufferSamples_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE ISampleGrabber_GetCurrentBuffer_Proxy( - ISampleGrabber * This, - /* [out][in] */ long *pBufferSize, - /* [out] */ long *pBuffer); - - -void __RPC_STUB ISampleGrabber_GetCurrentBuffer_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE ISampleGrabber_GetCurrentSample_Proxy( - ISampleGrabber * This, - /* [retval][out] */ IMediaSample **ppSample); - - -void __RPC_STUB ISampleGrabber_GetCurrentSample_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE ISampleGrabber_SetCallback_Proxy( - ISampleGrabber * This, - ISampleGrabberCB *pCallback, - long WhichMethodToCallback); - - -void __RPC_STUB ISampleGrabber_SetCallback_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __ISampleGrabber_INTERFACE_DEFINED__ */ - - - -#ifndef __DexterLib_LIBRARY_DEFINED__ -#define __DexterLib_LIBRARY_DEFINED__ - -/* library DexterLib */ -/* [helpstring][version][uuid] */ - - -EXTERN_C const IID LIBID_DexterLib; - -#ifndef __IResize_INTERFACE_DEFINED__ -#define __IResize_INTERFACE_DEFINED__ - -/* interface IResize */ -/* [unique][helpstring][uuid][object] */ - - -EXTERN_C const IID IID_IResize; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("4ada63a0-72d5-11d2-952a-0060081840bc") - IResize : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE get_Size( - /* [out] */ int *piHeight, - /* [out] */ int *piWidth, - /* [out] */ long *pFlag) = 0; - - virtual HRESULT STDMETHODCALLTYPE get_InputSize( - /* [out] */ int *piHeight, - /* [out] */ int *piWidth) = 0; - - virtual HRESULT STDMETHODCALLTYPE put_Size( - /* [in] */ int Height, - /* [in] */ int Width, - /* [in] */ long Flag) = 0; - - virtual HRESULT STDMETHODCALLTYPE get_MediaType( - /* [out] */ AM_MEDIA_TYPE *pmt) = 0; - - virtual HRESULT STDMETHODCALLTYPE put_MediaType( - /* [in] */ const AM_MEDIA_TYPE *pmt) = 0; - - }; - -#else /* C style interface */ - - typedef struct IResizeVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IResize * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IResize * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IResize * This); - - HRESULT ( STDMETHODCALLTYPE *get_Size )( - IResize * This, - /* [out] */ int *piHeight, - /* [out] */ int *piWidth, - /* [out] */ long *pFlag); - - HRESULT ( STDMETHODCALLTYPE *get_InputSize )( - IResize * This, - /* [out] */ int *piHeight, - /* [out] */ int *piWidth); - - HRESULT ( STDMETHODCALLTYPE *put_Size )( - IResize * This, - /* [in] */ int Height, - /* [in] */ int Width, - /* [in] */ long Flag); - - HRESULT ( STDMETHODCALLTYPE *get_MediaType )( - IResize * This, - /* [out] */ AM_MEDIA_TYPE *pmt); - - HRESULT ( STDMETHODCALLTYPE *put_MediaType )( - IResize * This, - /* [in] */ const AM_MEDIA_TYPE *pmt); - - END_INTERFACE - } IResizeVtbl; - - interface IResize - { - CONST_VTBL struct IResizeVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IResize_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IResize_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IResize_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IResize_get_Size(This,piHeight,piWidth,pFlag) \ - (This)->lpVtbl -> get_Size(This,piHeight,piWidth,pFlag) - -#define IResize_get_InputSize(This,piHeight,piWidth) \ - (This)->lpVtbl -> get_InputSize(This,piHeight,piWidth) - -#define IResize_put_Size(This,Height,Width,Flag) \ - (This)->lpVtbl -> put_Size(This,Height,Width,Flag) - -#define IResize_get_MediaType(This,pmt) \ - (This)->lpVtbl -> get_MediaType(This,pmt) - -#define IResize_put_MediaType(This,pmt) \ - (This)->lpVtbl -> put_MediaType(This,pmt) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IResize_get_Size_Proxy( - IResize * This, - /* [out] */ int *piHeight, - /* [out] */ int *piWidth, - /* [out] */ long *pFlag); - - -void __RPC_STUB IResize_get_Size_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IResize_get_InputSize_Proxy( - IResize * This, - /* [out] */ int *piHeight, - /* [out] */ int *piWidth); - - -void __RPC_STUB IResize_get_InputSize_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IResize_put_Size_Proxy( - IResize * This, - /* [in] */ int Height, - /* [in] */ int Width, - /* [in] */ long Flag); - - -void __RPC_STUB IResize_put_Size_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IResize_get_MediaType_Proxy( - IResize * This, - /* [out] */ AM_MEDIA_TYPE *pmt); - - -void __RPC_STUB IResize_get_MediaType_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IResize_put_MediaType_Proxy( - IResize * This, - /* [in] */ const AM_MEDIA_TYPE *pmt); - - -void __RPC_STUB IResize_put_MediaType_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IResize_INTERFACE_DEFINED__ */ - - -EXTERN_C const CLSID CLSID_AMTimeline; - -#ifdef __cplusplus - -class DECLSPEC_UUID("78530B75-61F9-11D2-8CAD-00A024580902") -AMTimeline; -#endif - -EXTERN_C const CLSID CLSID_AMTimelineObj; - -#ifdef __cplusplus - -class DECLSPEC_UUID("78530B78-61F9-11D2-8CAD-00A024580902") -AMTimelineObj; -#endif - -EXTERN_C const CLSID CLSID_AMTimelineSrc; - -#ifdef __cplusplus - -class DECLSPEC_UUID("78530B7A-61F9-11D2-8CAD-00A024580902") -AMTimelineSrc; -#endif - -EXTERN_C const CLSID CLSID_AMTimelineTrack; - -#ifdef __cplusplus - -class DECLSPEC_UUID("8F6C3C50-897B-11d2-8CFB-00A0C9441E20") -AMTimelineTrack; -#endif - -EXTERN_C const CLSID CLSID_AMTimelineComp; - -#ifdef __cplusplus - -class DECLSPEC_UUID("74D2EC80-6233-11d2-8CAD-00A024580902") -AMTimelineComp; -#endif - -EXTERN_C const CLSID CLSID_AMTimelineGroup; - -#ifdef __cplusplus - -class DECLSPEC_UUID("F6D371E1-B8A6-11d2-8023-00C0DF10D434") -AMTimelineGroup; -#endif - -EXTERN_C const CLSID CLSID_AMTimelineTrans; - -#ifdef __cplusplus - -class DECLSPEC_UUID("74D2EC81-6233-11d2-8CAD-00A024580902") -AMTimelineTrans; -#endif - -EXTERN_C const CLSID CLSID_AMTimelineEffect; - -#ifdef __cplusplus - -class DECLSPEC_UUID("74D2EC82-6233-11d2-8CAD-00A024580902") -AMTimelineEffect; -#endif - -EXTERN_C const CLSID CLSID_RenderEngine; - -#ifdef __cplusplus - -class DECLSPEC_UUID("64D8A8E0-80A2-11d2-8CF3-00A0C9441E20") -RenderEngine; -#endif - -EXTERN_C const CLSID CLSID_SmartRenderEngine; - -#ifdef __cplusplus - -class DECLSPEC_UUID("498B0949-BBE9-4072-98BE-6CCAEB79DC6F") -SmartRenderEngine; -#endif - -EXTERN_C const CLSID CLSID_AudMixer; - -#ifdef __cplusplus - -class DECLSPEC_UUID("036A9790-C153-11d2-9EF7-006008039E37") -AudMixer; -#endif - -EXTERN_C const CLSID CLSID_Xml2Dex; - -#ifdef __cplusplus - -class DECLSPEC_UUID("18C628EE-962A-11D2-8D08-00A0C9441E20") -Xml2Dex; -#endif - -EXTERN_C const CLSID CLSID_MediaLocator; - -#ifdef __cplusplus - -class DECLSPEC_UUID("CC1101F2-79DC-11D2-8CE6-00A0C9441E20") -MediaLocator; -#endif - -EXTERN_C const CLSID CLSID_PropertySetter; - -#ifdef __cplusplus - -class DECLSPEC_UUID("ADF95821-DED7-11d2-ACBE-0080C75E246E") -PropertySetter; -#endif - -EXTERN_C const CLSID CLSID_MediaDet; - -#ifdef __cplusplus - -class DECLSPEC_UUID("65BD0711-24D2-4ff7-9324-ED2E5D3ABAFA") -MediaDet; -#endif - -EXTERN_C const CLSID CLSID_SampleGrabber; - -#ifdef __cplusplus - -class DECLSPEC_UUID("C1F400A0-3F08-11d3-9F0B-006008039E37") -SampleGrabber; -#endif - -EXTERN_C const CLSID CLSID_NullRenderer; - -#ifdef __cplusplus - -class DECLSPEC_UUID("C1F400A4-3F08-11d3-9F0B-006008039E37") -NullRenderer; -#endif - -EXTERN_C const CLSID CLSID_DxtCompositor; - -#ifdef __cplusplus - -class DECLSPEC_UUID("BB44391D-6ABD-422f-9E2E-385C9DFF51FC") -DxtCompositor; -#endif - -EXTERN_C const CLSID CLSID_DxtAlphaSetter; - -#ifdef __cplusplus - -class DECLSPEC_UUID("506D89AE-909A-44f7-9444-ABD575896E35") -DxtAlphaSetter; -#endif - -EXTERN_C const CLSID CLSID_DxtJpeg; - -#ifdef __cplusplus - -class DECLSPEC_UUID("DE75D012-7A65-11D2-8CEA-00A0C9441E20") -DxtJpeg; -#endif - -EXTERN_C const CLSID CLSID_ColorSource; - -#ifdef __cplusplus - -class DECLSPEC_UUID("0cfdd070-581a-11d2-9ee6-006008039e37") -ColorSource; -#endif - -EXTERN_C const CLSID CLSID_DxtKey; - -#ifdef __cplusplus - -class DECLSPEC_UUID("C5B19592-145E-11d3-9F04-006008039E37") -DxtKey; -#endif -#endif /* __DexterLib_LIBRARY_DEFINED__ */ - -/* interface __MIDL_itf_qedit_0484 */ -/* [local] */ - - -enum __MIDL___MIDL_itf_qedit_0484_0001 - { E_NOTINTREE = 0x80040400, - E_RENDER_ENGINE_IS_BROKEN = 0x80040401, - E_MUST_INIT_RENDERER = 0x80040402, - E_NOTDETERMINED = 0x80040403, - E_NO_TIMELINE = 0x80040404, - S_WARN_OUTPUTRESET = 40404 - } ; -#define DEX_IDS_BAD_SOURCE_NAME 1400 -#define DEX_IDS_BAD_SOURCE_NAME2 1401 -#define DEX_IDS_MISSING_SOURCE_NAME 1402 -#define DEX_IDS_UNKNOWN_SOURCE 1403 -#define DEX_IDS_INSTALL_PROBLEM 1404 -#define DEX_IDS_NO_SOURCE_NAMES 1405 -#define DEX_IDS_BAD_MEDIATYPE 1406 -#define DEX_IDS_STREAM_NUMBER 1407 -#define DEX_IDS_OUTOFMEMORY 1408 -#define DEX_IDS_DIBSEQ_NOTALLSAME 1409 -#define DEX_IDS_CLIPTOOSHORT 1410 -#define DEX_IDS_INVALID_DXT 1411 -#define DEX_IDS_INVALID_DEFAULT_DXT 1412 -#define DEX_IDS_NO_3D 1413 -#define DEX_IDS_BROKEN_DXT 1414 -#define DEX_IDS_NO_SUCH_PROPERTY 1415 -#define DEX_IDS_ILLEGAL_PROPERTY_VAL 1416 -#define DEX_IDS_INVALID_XML 1417 -#define DEX_IDS_CANT_FIND_FILTER 1418 -#define DEX_IDS_DISK_WRITE_ERROR 1419 -#define DEX_IDS_INVALID_AUDIO_FX 1420 -#define DEX_IDS_CANT_FIND_COMPRESSOR 1421 -#define DEX_IDS_TIMELINE_PARSE 1426 -#define DEX_IDS_GRAPH_ERROR 1427 -#define DEX_IDS_GRID_ERROR 1428 -#define DEX_IDS_INTERFACE_ERROR 1429 -EXTERN_GUID(CLSID_VideoEffects1Category, 0xcc7bfb42, 0xf175, 0x11d1, 0xa3, 0x92, 0x0, 0xe0, 0x29, 0x1f, 0x39, 0x59); -EXTERN_GUID(CLSID_VideoEffects2Category, 0xcc7bfb43, 0xf175, 0x11d1, 0xa3, 0x92, 0x0, 0xe0, 0x29, 0x1f, 0x39, 0x59); -EXTERN_GUID(CLSID_AudioEffects1Category, 0xcc7bfb44, 0xf175, 0x11d1, 0xa3, 0x92, 0x0, 0xe0, 0x29, 0x1f, 0x39, 0x59); -EXTERN_GUID(CLSID_AudioEffects2Category, 0xcc7bfb45, 0xf175, 0x11d1, 0xa3, 0x92, 0x0, 0xe0, 0x29, 0x1f, 0x39, 0x59); - - -extern RPC_IF_HANDLE __MIDL_itf_qedit_0484_v0_0_c_ifspec; -extern RPC_IF_HANDLE __MIDL_itf_qedit_0484_v0_0_s_ifspec; - -/* Additional Prototypes for ALL interfaces */ - -unsigned long __RPC_USER BSTR_UserSize( unsigned long *, unsigned long , BSTR * ); -unsigned char * __RPC_USER BSTR_UserMarshal( unsigned long *, unsigned char *, BSTR * ); -unsigned char * __RPC_USER BSTR_UserUnmarshal(unsigned long *, unsigned char *, BSTR * ); -void __RPC_USER BSTR_UserFree( unsigned long *, BSTR * ); - -unsigned long __RPC_USER VARIANT_UserSize( unsigned long *, unsigned long , VARIANT * ); -unsigned char * __RPC_USER VARIANT_UserMarshal( unsigned long *, unsigned char *, VARIANT * ); -unsigned char * __RPC_USER VARIANT_UserUnmarshal(unsigned long *, unsigned char *, VARIANT * ); -void __RPC_USER VARIANT_UserFree( unsigned long *, VARIANT * ); - -/* end of Additional Prototypes */ - -#ifdef __cplusplus -} -#endif - -#endif - - + +#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 qedit.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 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 +#endif // __RPCNDR_H_VERSION__ + +#ifndef COM_NO_WINDOWS_H +#include "windows.h" +#include "ole2.h" +#endif /*COM_NO_WINDOWS_H*/ + +#ifndef __qedit_h__ +#define __qedit_h__ + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#pragma once +#endif + +/* Forward Declarations */ + +#ifndef __IPropertySetter_FWD_DEFINED__ +#define __IPropertySetter_FWD_DEFINED__ +typedef interface IPropertySetter IPropertySetter; +#endif /* __IPropertySetter_FWD_DEFINED__ */ + + +#ifndef __IDxtCompositor_FWD_DEFINED__ +#define __IDxtCompositor_FWD_DEFINED__ +typedef interface IDxtCompositor IDxtCompositor; +#endif /* __IDxtCompositor_FWD_DEFINED__ */ + + +#ifndef __IDxtAlphaSetter_FWD_DEFINED__ +#define __IDxtAlphaSetter_FWD_DEFINED__ +typedef interface IDxtAlphaSetter IDxtAlphaSetter; +#endif /* __IDxtAlphaSetter_FWD_DEFINED__ */ + + +#ifndef __IDxtJpeg_FWD_DEFINED__ +#define __IDxtJpeg_FWD_DEFINED__ +typedef interface IDxtJpeg IDxtJpeg; +#endif /* __IDxtJpeg_FWD_DEFINED__ */ + + +#ifndef __IDxtKey_FWD_DEFINED__ +#define __IDxtKey_FWD_DEFINED__ +typedef interface IDxtKey IDxtKey; +#endif /* __IDxtKey_FWD_DEFINED__ */ + + +#ifndef __IMediaLocator_FWD_DEFINED__ +#define __IMediaLocator_FWD_DEFINED__ +typedef interface IMediaLocator IMediaLocator; +#endif /* __IMediaLocator_FWD_DEFINED__ */ + + +#ifndef __IMediaDet_FWD_DEFINED__ +#define __IMediaDet_FWD_DEFINED__ +typedef interface IMediaDet IMediaDet; +#endif /* __IMediaDet_FWD_DEFINED__ */ + + +#ifndef __IGrfCache_FWD_DEFINED__ +#define __IGrfCache_FWD_DEFINED__ +typedef interface IGrfCache IGrfCache; +#endif /* __IGrfCache_FWD_DEFINED__ */ + + +#ifndef __IRenderEngine_FWD_DEFINED__ +#define __IRenderEngine_FWD_DEFINED__ +typedef interface IRenderEngine IRenderEngine; +#endif /* __IRenderEngine_FWD_DEFINED__ */ + + +#ifndef __IRenderEngine2_FWD_DEFINED__ +#define __IRenderEngine2_FWD_DEFINED__ +typedef interface IRenderEngine2 IRenderEngine2; +#endif /* __IRenderEngine2_FWD_DEFINED__ */ + + +#ifndef __IFindCompressorCB_FWD_DEFINED__ +#define __IFindCompressorCB_FWD_DEFINED__ +typedef interface IFindCompressorCB IFindCompressorCB; +#endif /* __IFindCompressorCB_FWD_DEFINED__ */ + + +#ifndef __ISmartRenderEngine_FWD_DEFINED__ +#define __ISmartRenderEngine_FWD_DEFINED__ +typedef interface ISmartRenderEngine ISmartRenderEngine; +#endif /* __ISmartRenderEngine_FWD_DEFINED__ */ + + +#ifndef __IAMTimelineObj_FWD_DEFINED__ +#define __IAMTimelineObj_FWD_DEFINED__ +typedef interface IAMTimelineObj IAMTimelineObj; +#endif /* __IAMTimelineObj_FWD_DEFINED__ */ + + +#ifndef __IAMTimelineEffectable_FWD_DEFINED__ +#define __IAMTimelineEffectable_FWD_DEFINED__ +typedef interface IAMTimelineEffectable IAMTimelineEffectable; +#endif /* __IAMTimelineEffectable_FWD_DEFINED__ */ + + +#ifndef __IAMTimelineEffect_FWD_DEFINED__ +#define __IAMTimelineEffect_FWD_DEFINED__ +typedef interface IAMTimelineEffect IAMTimelineEffect; +#endif /* __IAMTimelineEffect_FWD_DEFINED__ */ + + +#ifndef __IAMTimelineTransable_FWD_DEFINED__ +#define __IAMTimelineTransable_FWD_DEFINED__ +typedef interface IAMTimelineTransable IAMTimelineTransable; +#endif /* __IAMTimelineTransable_FWD_DEFINED__ */ + + +#ifndef __IAMTimelineSplittable_FWD_DEFINED__ +#define __IAMTimelineSplittable_FWD_DEFINED__ +typedef interface IAMTimelineSplittable IAMTimelineSplittable; +#endif /* __IAMTimelineSplittable_FWD_DEFINED__ */ + + +#ifndef __IAMTimelineTrans_FWD_DEFINED__ +#define __IAMTimelineTrans_FWD_DEFINED__ +typedef interface IAMTimelineTrans IAMTimelineTrans; +#endif /* __IAMTimelineTrans_FWD_DEFINED__ */ + + +#ifndef __IAMTimelineSrc_FWD_DEFINED__ +#define __IAMTimelineSrc_FWD_DEFINED__ +typedef interface IAMTimelineSrc IAMTimelineSrc; +#endif /* __IAMTimelineSrc_FWD_DEFINED__ */ + + +#ifndef __IAMTimelineTrack_FWD_DEFINED__ +#define __IAMTimelineTrack_FWD_DEFINED__ +typedef interface IAMTimelineTrack IAMTimelineTrack; +#endif /* __IAMTimelineTrack_FWD_DEFINED__ */ + + +#ifndef __IAMTimelineVirtualTrack_FWD_DEFINED__ +#define __IAMTimelineVirtualTrack_FWD_DEFINED__ +typedef interface IAMTimelineVirtualTrack IAMTimelineVirtualTrack; +#endif /* __IAMTimelineVirtualTrack_FWD_DEFINED__ */ + + +#ifndef __IAMTimelineComp_FWD_DEFINED__ +#define __IAMTimelineComp_FWD_DEFINED__ +typedef interface IAMTimelineComp IAMTimelineComp; +#endif /* __IAMTimelineComp_FWD_DEFINED__ */ + + +#ifndef __IAMTimelineGroup_FWD_DEFINED__ +#define __IAMTimelineGroup_FWD_DEFINED__ +typedef interface IAMTimelineGroup IAMTimelineGroup; +#endif /* __IAMTimelineGroup_FWD_DEFINED__ */ + + +#ifndef __IAMTimeline_FWD_DEFINED__ +#define __IAMTimeline_FWD_DEFINED__ +typedef interface IAMTimeline IAMTimeline; +#endif /* __IAMTimeline_FWD_DEFINED__ */ + + +#ifndef __IXml2Dex_FWD_DEFINED__ +#define __IXml2Dex_FWD_DEFINED__ +typedef interface IXml2Dex IXml2Dex; +#endif /* __IXml2Dex_FWD_DEFINED__ */ + + +#ifndef __IAMErrorLog_FWD_DEFINED__ +#define __IAMErrorLog_FWD_DEFINED__ +typedef interface IAMErrorLog IAMErrorLog; +#endif /* __IAMErrorLog_FWD_DEFINED__ */ + + +#ifndef __IAMSetErrorLog_FWD_DEFINED__ +#define __IAMSetErrorLog_FWD_DEFINED__ +typedef interface IAMSetErrorLog IAMSetErrorLog; +#endif /* __IAMSetErrorLog_FWD_DEFINED__ */ + + +#ifndef __ISampleGrabberCB_FWD_DEFINED__ +#define __ISampleGrabberCB_FWD_DEFINED__ +typedef interface ISampleGrabberCB ISampleGrabberCB; +#endif /* __ISampleGrabberCB_FWD_DEFINED__ */ + + +#ifndef __ISampleGrabber_FWD_DEFINED__ +#define __ISampleGrabber_FWD_DEFINED__ +typedef interface ISampleGrabber ISampleGrabber; +#endif /* __ISampleGrabber_FWD_DEFINED__ */ + + +#ifndef __IResize_FWD_DEFINED__ +#define __IResize_FWD_DEFINED__ +typedef interface IResize IResize; +#endif /* __IResize_FWD_DEFINED__ */ + + +#ifndef __AMTimeline_FWD_DEFINED__ +#define __AMTimeline_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class AMTimeline AMTimeline; +#else +typedef struct AMTimeline AMTimeline; +#endif /* __cplusplus */ + +#endif /* __AMTimeline_FWD_DEFINED__ */ + + +#ifndef __AMTimelineObj_FWD_DEFINED__ +#define __AMTimelineObj_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class AMTimelineObj AMTimelineObj; +#else +typedef struct AMTimelineObj AMTimelineObj; +#endif /* __cplusplus */ + +#endif /* __AMTimelineObj_FWD_DEFINED__ */ + + +#ifndef __AMTimelineSrc_FWD_DEFINED__ +#define __AMTimelineSrc_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class AMTimelineSrc AMTimelineSrc; +#else +typedef struct AMTimelineSrc AMTimelineSrc; +#endif /* __cplusplus */ + +#endif /* __AMTimelineSrc_FWD_DEFINED__ */ + + +#ifndef __AMTimelineTrack_FWD_DEFINED__ +#define __AMTimelineTrack_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class AMTimelineTrack AMTimelineTrack; +#else +typedef struct AMTimelineTrack AMTimelineTrack; +#endif /* __cplusplus */ + +#endif /* __AMTimelineTrack_FWD_DEFINED__ */ + + +#ifndef __AMTimelineComp_FWD_DEFINED__ +#define __AMTimelineComp_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class AMTimelineComp AMTimelineComp; +#else +typedef struct AMTimelineComp AMTimelineComp; +#endif /* __cplusplus */ + +#endif /* __AMTimelineComp_FWD_DEFINED__ */ + + +#ifndef __AMTimelineGroup_FWD_DEFINED__ +#define __AMTimelineGroup_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class AMTimelineGroup AMTimelineGroup; +#else +typedef struct AMTimelineGroup AMTimelineGroup; +#endif /* __cplusplus */ + +#endif /* __AMTimelineGroup_FWD_DEFINED__ */ + + +#ifndef __AMTimelineTrans_FWD_DEFINED__ +#define __AMTimelineTrans_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class AMTimelineTrans AMTimelineTrans; +#else +typedef struct AMTimelineTrans AMTimelineTrans; +#endif /* __cplusplus */ + +#endif /* __AMTimelineTrans_FWD_DEFINED__ */ + + +#ifndef __AMTimelineEffect_FWD_DEFINED__ +#define __AMTimelineEffect_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class AMTimelineEffect AMTimelineEffect; +#else +typedef struct AMTimelineEffect AMTimelineEffect; +#endif /* __cplusplus */ + +#endif /* __AMTimelineEffect_FWD_DEFINED__ */ + + +#ifndef __RenderEngine_FWD_DEFINED__ +#define __RenderEngine_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class RenderEngine RenderEngine; +#else +typedef struct RenderEngine RenderEngine; +#endif /* __cplusplus */ + +#endif /* __RenderEngine_FWD_DEFINED__ */ + + +#ifndef __SmartRenderEngine_FWD_DEFINED__ +#define __SmartRenderEngine_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class SmartRenderEngine SmartRenderEngine; +#else +typedef struct SmartRenderEngine SmartRenderEngine; +#endif /* __cplusplus */ + +#endif /* __SmartRenderEngine_FWD_DEFINED__ */ + + +#ifndef __AudMixer_FWD_DEFINED__ +#define __AudMixer_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class AudMixer AudMixer; +#else +typedef struct AudMixer AudMixer; +#endif /* __cplusplus */ + +#endif /* __AudMixer_FWD_DEFINED__ */ + + +#ifndef __Xml2Dex_FWD_DEFINED__ +#define __Xml2Dex_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class Xml2Dex Xml2Dex; +#else +typedef struct Xml2Dex Xml2Dex; +#endif /* __cplusplus */ + +#endif /* __Xml2Dex_FWD_DEFINED__ */ + + +#ifndef __MediaLocator_FWD_DEFINED__ +#define __MediaLocator_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class MediaLocator MediaLocator; +#else +typedef struct MediaLocator MediaLocator; +#endif /* __cplusplus */ + +#endif /* __MediaLocator_FWD_DEFINED__ */ + + +#ifndef __PropertySetter_FWD_DEFINED__ +#define __PropertySetter_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class PropertySetter PropertySetter; +#else +typedef struct PropertySetter PropertySetter; +#endif /* __cplusplus */ + +#endif /* __PropertySetter_FWD_DEFINED__ */ + + +#ifndef __MediaDet_FWD_DEFINED__ +#define __MediaDet_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class MediaDet MediaDet; +#else +typedef struct MediaDet MediaDet; +#endif /* __cplusplus */ + +#endif /* __MediaDet_FWD_DEFINED__ */ + + +#ifndef __SampleGrabber_FWD_DEFINED__ +#define __SampleGrabber_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class SampleGrabber SampleGrabber; +#else +typedef struct SampleGrabber SampleGrabber; +#endif /* __cplusplus */ + +#endif /* __SampleGrabber_FWD_DEFINED__ */ + + +#ifndef __NullRenderer_FWD_DEFINED__ +#define __NullRenderer_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class NullRenderer NullRenderer; +#else +typedef struct NullRenderer NullRenderer; +#endif /* __cplusplus */ + +#endif /* __NullRenderer_FWD_DEFINED__ */ + + +#ifndef __DxtCompositor_FWD_DEFINED__ +#define __DxtCompositor_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class DxtCompositor DxtCompositor; +#else +typedef struct DxtCompositor DxtCompositor; +#endif /* __cplusplus */ + +#endif /* __DxtCompositor_FWD_DEFINED__ */ + + +#ifndef __DxtAlphaSetter_FWD_DEFINED__ +#define __DxtAlphaSetter_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class DxtAlphaSetter DxtAlphaSetter; +#else +typedef struct DxtAlphaSetter DxtAlphaSetter; +#endif /* __cplusplus */ + +#endif /* __DxtAlphaSetter_FWD_DEFINED__ */ + + +#ifndef __DxtJpeg_FWD_DEFINED__ +#define __DxtJpeg_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class DxtJpeg DxtJpeg; +#else +typedef struct DxtJpeg DxtJpeg; +#endif /* __cplusplus */ + +#endif /* __DxtJpeg_FWD_DEFINED__ */ + + +#ifndef __ColorSource_FWD_DEFINED__ +#define __ColorSource_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class ColorSource ColorSource; +#else +typedef struct ColorSource ColorSource; +#endif /* __cplusplus */ + +#endif /* __ColorSource_FWD_DEFINED__ */ + + +#ifndef __DxtKey_FWD_DEFINED__ +#define __DxtKey_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class DxtKey DxtKey; +#else +typedef struct DxtKey DxtKey; +#endif /* __cplusplus */ + +#endif /* __DxtKey_FWD_DEFINED__ */ + + +/* header files for imported files */ +#include "oaidl.h" +#include "ocidl.h" +#include "dxtrans.h" +#include "amstream.h" + +#ifdef __cplusplus +extern "C"{ +#endif + +void * __RPC_USER MIDL_user_allocate(size_t); +void __RPC_USER MIDL_user_free( void * ); + +/* interface __MIDL_itf_qedit_0000 */ +/* [local] */ + + + + + + + + + + +typedef /* [public] */ +enum __MIDL___MIDL_itf_qedit_0000_0001 + { DEXTERF_JUMP = 0, + DEXTERF_INTERPOLATE = DEXTERF_JUMP + 1 + } DEXTERF; + +typedef /* [public][public][public][public] */ struct __MIDL___MIDL_itf_qedit_0000_0002 + { + BSTR Name; + DISPID dispID; + LONG nValues; + } DEXTER_PARAM; + +typedef /* [public][public][public][public] */ struct __MIDL___MIDL_itf_qedit_0000_0003 + { + VARIANT v; + REFERENCE_TIME rt; + DWORD dwInterp; + } DEXTER_VALUE; + + +enum __MIDL___MIDL_itf_qedit_0000_0004 + { DEXTER_AUDIO_JUMP = 0, + DEXTER_AUDIO_INTERPOLATE = DEXTER_AUDIO_JUMP + 1 + } ; +typedef /* [public] */ struct __MIDL___MIDL_itf_qedit_0000_0005 + { + REFERENCE_TIME rtEnd; + double dLevel; + BOOL bMethod; + } DEXTER_AUDIO_VOLUMEENVELOPE; + + +enum __MIDL___MIDL_itf_qedit_0000_0006 + { TIMELINE_INSERT_MODE_INSERT = 1, + TIMELINE_INSERT_MODE_OVERLAY = 2 + } ; +typedef /* [public][public][public][public][public][public][public][public] */ +enum __MIDL___MIDL_itf_qedit_0000_0007 + { TIMELINE_MAJOR_TYPE_COMPOSITE = 1, + TIMELINE_MAJOR_TYPE_TRACK = 2, + TIMELINE_MAJOR_TYPE_SOURCE = 4, + TIMELINE_MAJOR_TYPE_TRANSITION = 8, + TIMELINE_MAJOR_TYPE_EFFECT = 16, + TIMELINE_MAJOR_TYPE_GROUP = 128 + } TIMELINE_MAJOR_TYPE; + +typedef /* [public] */ +enum __MIDL___MIDL_itf_qedit_0000_0008 + { DEXTERF_BOUNDING = -1, + DEXTERF_EXACTLY_AT = 0, + DEXTERF_FORWARDS = 1 + } DEXTERF_TRACK_SEARCH_FLAGS; + +typedef struct _SCompFmt0 + { + long nFormatId; + AM_MEDIA_TYPE MediaType; + } SCompFmt0; + + +enum __MIDL___MIDL_itf_qedit_0000_0009 + { RESIZEF_STRETCH = 0, + RESIZEF_CROP = RESIZEF_STRETCH + 1, + RESIZEF_PRESERVEASPECTRATIO = RESIZEF_CROP + 1, + RESIZEF_PRESERVEASPECTRATIO_NOLETTERBOX = RESIZEF_PRESERVEASPECTRATIO + 1 + } ; + +enum __MIDL___MIDL_itf_qedit_0000_0010 + { CONNECTF_DYNAMIC_NONE = 0, + CONNECTF_DYNAMIC_SOURCES = 0x1, + CONNECTF_DYNAMIC_EFFECTS = 0x2 + } ; + +enum __MIDL___MIDL_itf_qedit_0000_0011 + { SFN_VALIDATEF_CHECK = 0x1, + SFN_VALIDATEF_POPUP = 0x2, + SFN_VALIDATEF_TELLME = 0x4, + SFN_VALIDATEF_REPLACE = 0x8, + SFN_VALIDATEF_USELOCAL = 0x10, + SFN_VALIDATEF_NOFIND = 0x20, + SFN_VALIDATEF_IGNOREMUTED = 0x40, + SFN_VALIDATEF_END = SFN_VALIDATEF_IGNOREMUTED + 1 + } ; + +enum __MIDL___MIDL_itf_qedit_0000_0012 + { DXTKEY_RGB = 0, + DXTKEY_NONRED = DXTKEY_RGB + 1, + DXTKEY_LUMINANCE = DXTKEY_NONRED + 1, + DXTKEY_ALPHA = DXTKEY_LUMINANCE + 1, + DXTKEY_HUE = DXTKEY_ALPHA + 1 + } ; + + +extern RPC_IF_HANDLE __MIDL_itf_qedit_0000_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_qedit_0000_v0_0_s_ifspec; + +#ifndef __IPropertySetter_INTERFACE_DEFINED__ +#define __IPropertySetter_INTERFACE_DEFINED__ + +/* interface IPropertySetter */ +/* [unique][helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IPropertySetter; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("AE9472BD-B0C3-11D2-8D24-00A0C9441E20") + IPropertySetter : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE LoadXML( + /* [in] */ IUnknown *pxml) = 0; + + virtual HRESULT STDMETHODCALLTYPE PrintXML( + /* [out] */ char *pszXML, + /* [in] */ int cbXML, + /* [out] */ int *pcbPrinted, + /* [in] */ int indent) = 0; + + virtual HRESULT STDMETHODCALLTYPE CloneProps( + /* [out] */ IPropertySetter **ppSetter, + /* [in] */ REFERENCE_TIME rtStart, + /* [in] */ REFERENCE_TIME rtStop) = 0; + + virtual HRESULT STDMETHODCALLTYPE AddProp( + /* [in] */ DEXTER_PARAM Param, + /* [in] */ DEXTER_VALUE *paValue) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetProps( + /* [out] */ LONG *pcParams, + /* [out] */ DEXTER_PARAM **paParam, + /* [out] */ DEXTER_VALUE **paValue) = 0; + + virtual HRESULT STDMETHODCALLTYPE FreeProps( + /* [in] */ LONG cParams, + /* [in] */ DEXTER_PARAM *paParam, + /* [in] */ DEXTER_VALUE *paValue) = 0; + + virtual HRESULT STDMETHODCALLTYPE ClearProps( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE SaveToBlob( + /* [out] */ LONG *pcSize, + /* [out] */ BYTE **ppb) = 0; + + virtual HRESULT STDMETHODCALLTYPE LoadFromBlob( + /* [in] */ LONG cSize, + /* [in] */ BYTE *pb) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetProps( + /* [in] */ IUnknown *pTarget, + /* [in] */ REFERENCE_TIME rtNow) = 0; + + virtual HRESULT STDMETHODCALLTYPE PrintXMLW( + /* [out] */ WCHAR *pszXML, + /* [in] */ int cchXML, + /* [out] */ int *pcchPrinted, + /* [in] */ int indent) = 0; + + }; + +#else /* C style interface */ + + typedef struct IPropertySetterVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IPropertySetter * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IPropertySetter * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IPropertySetter * This); + + HRESULT ( STDMETHODCALLTYPE *LoadXML )( + IPropertySetter * This, + /* [in] */ IUnknown *pxml); + + HRESULT ( STDMETHODCALLTYPE *PrintXML )( + IPropertySetter * This, + /* [out] */ char *pszXML, + /* [in] */ int cbXML, + /* [out] */ int *pcbPrinted, + /* [in] */ int indent); + + HRESULT ( STDMETHODCALLTYPE *CloneProps )( + IPropertySetter * This, + /* [out] */ IPropertySetter **ppSetter, + /* [in] */ REFERENCE_TIME rtStart, + /* [in] */ REFERENCE_TIME rtStop); + + HRESULT ( STDMETHODCALLTYPE *AddProp )( + IPropertySetter * This, + /* [in] */ DEXTER_PARAM Param, + /* [in] */ DEXTER_VALUE *paValue); + + HRESULT ( STDMETHODCALLTYPE *GetProps )( + IPropertySetter * This, + /* [out] */ LONG *pcParams, + /* [out] */ DEXTER_PARAM **paParam, + /* [out] */ DEXTER_VALUE **paValue); + + HRESULT ( STDMETHODCALLTYPE *FreeProps )( + IPropertySetter * This, + /* [in] */ LONG cParams, + /* [in] */ DEXTER_PARAM *paParam, + /* [in] */ DEXTER_VALUE *paValue); + + HRESULT ( STDMETHODCALLTYPE *ClearProps )( + IPropertySetter * This); + + HRESULT ( STDMETHODCALLTYPE *SaveToBlob )( + IPropertySetter * This, + /* [out] */ LONG *pcSize, + /* [out] */ BYTE **ppb); + + HRESULT ( STDMETHODCALLTYPE *LoadFromBlob )( + IPropertySetter * This, + /* [in] */ LONG cSize, + /* [in] */ BYTE *pb); + + HRESULT ( STDMETHODCALLTYPE *SetProps )( + IPropertySetter * This, + /* [in] */ IUnknown *pTarget, + /* [in] */ REFERENCE_TIME rtNow); + + HRESULT ( STDMETHODCALLTYPE *PrintXMLW )( + IPropertySetter * This, + /* [out] */ WCHAR *pszXML, + /* [in] */ int cchXML, + /* [out] */ int *pcchPrinted, + /* [in] */ int indent); + + END_INTERFACE + } IPropertySetterVtbl; + + interface IPropertySetter + { + CONST_VTBL struct IPropertySetterVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IPropertySetter_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IPropertySetter_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IPropertySetter_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IPropertySetter_LoadXML(This,pxml) \ + (This)->lpVtbl -> LoadXML(This,pxml) + +#define IPropertySetter_PrintXML(This,pszXML,cbXML,pcbPrinted,indent) \ + (This)->lpVtbl -> PrintXML(This,pszXML,cbXML,pcbPrinted,indent) + +#define IPropertySetter_CloneProps(This,ppSetter,rtStart,rtStop) \ + (This)->lpVtbl -> CloneProps(This,ppSetter,rtStart,rtStop) + +#define IPropertySetter_AddProp(This,Param,paValue) \ + (This)->lpVtbl -> AddProp(This,Param,paValue) + +#define IPropertySetter_GetProps(This,pcParams,paParam,paValue) \ + (This)->lpVtbl -> GetProps(This,pcParams,paParam,paValue) + +#define IPropertySetter_FreeProps(This,cParams,paParam,paValue) \ + (This)->lpVtbl -> FreeProps(This,cParams,paParam,paValue) + +#define IPropertySetter_ClearProps(This) \ + (This)->lpVtbl -> ClearProps(This) + +#define IPropertySetter_SaveToBlob(This,pcSize,ppb) \ + (This)->lpVtbl -> SaveToBlob(This,pcSize,ppb) + +#define IPropertySetter_LoadFromBlob(This,cSize,pb) \ + (This)->lpVtbl -> LoadFromBlob(This,cSize,pb) + +#define IPropertySetter_SetProps(This,pTarget,rtNow) \ + (This)->lpVtbl -> SetProps(This,pTarget,rtNow) + +#define IPropertySetter_PrintXMLW(This,pszXML,cchXML,pcchPrinted,indent) \ + (This)->lpVtbl -> PrintXMLW(This,pszXML,cchXML,pcchPrinted,indent) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IPropertySetter_LoadXML_Proxy( + IPropertySetter * This, + /* [in] */ IUnknown *pxml); + + +void __RPC_STUB IPropertySetter_LoadXML_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IPropertySetter_PrintXML_Proxy( + IPropertySetter * This, + /* [out] */ char *pszXML, + /* [in] */ int cbXML, + /* [out] */ int *pcbPrinted, + /* [in] */ int indent); + + +void __RPC_STUB IPropertySetter_PrintXML_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IPropertySetter_CloneProps_Proxy( + IPropertySetter * This, + /* [out] */ IPropertySetter **ppSetter, + /* [in] */ REFERENCE_TIME rtStart, + /* [in] */ REFERENCE_TIME rtStop); + + +void __RPC_STUB IPropertySetter_CloneProps_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IPropertySetter_AddProp_Proxy( + IPropertySetter * This, + /* [in] */ DEXTER_PARAM Param, + /* [in] */ DEXTER_VALUE *paValue); + + +void __RPC_STUB IPropertySetter_AddProp_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IPropertySetter_GetProps_Proxy( + IPropertySetter * This, + /* [out] */ LONG *pcParams, + /* [out] */ DEXTER_PARAM **paParam, + /* [out] */ DEXTER_VALUE **paValue); + + +void __RPC_STUB IPropertySetter_GetProps_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IPropertySetter_FreeProps_Proxy( + IPropertySetter * This, + /* [in] */ LONG cParams, + /* [in] */ DEXTER_PARAM *paParam, + /* [in] */ DEXTER_VALUE *paValue); + + +void __RPC_STUB IPropertySetter_FreeProps_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IPropertySetter_ClearProps_Proxy( + IPropertySetter * This); + + +void __RPC_STUB IPropertySetter_ClearProps_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IPropertySetter_SaveToBlob_Proxy( + IPropertySetter * This, + /* [out] */ LONG *pcSize, + /* [out] */ BYTE **ppb); + + +void __RPC_STUB IPropertySetter_SaveToBlob_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IPropertySetter_LoadFromBlob_Proxy( + IPropertySetter * This, + /* [in] */ LONG cSize, + /* [in] */ BYTE *pb); + + +void __RPC_STUB IPropertySetter_LoadFromBlob_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IPropertySetter_SetProps_Proxy( + IPropertySetter * This, + /* [in] */ IUnknown *pTarget, + /* [in] */ REFERENCE_TIME rtNow); + + +void __RPC_STUB IPropertySetter_SetProps_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IPropertySetter_PrintXMLW_Proxy( + IPropertySetter * This, + /* [out] */ WCHAR *pszXML, + /* [in] */ int cchXML, + /* [out] */ int *pcchPrinted, + /* [in] */ int indent); + + +void __RPC_STUB IPropertySetter_PrintXMLW_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IPropertySetter_INTERFACE_DEFINED__ */ + + +#ifndef __IDxtCompositor_INTERFACE_DEFINED__ +#define __IDxtCompositor_INTERFACE_DEFINED__ + +/* interface IDxtCompositor */ +/* [unique][helpstring][dual][uuid][object] */ + + +EXTERN_C const IID IID_IDxtCompositor; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("BB44391E-6ABD-422f-9E2E-385C9DFF51FC") + IDxtCompositor : public IDXEffect + { + public: + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_OffsetX( + /* [retval][out] */ long *pVal) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_OffsetX( + /* [in] */ long newVal) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_OffsetY( + /* [retval][out] */ long *pVal) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_OffsetY( + /* [in] */ long newVal) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Width( + /* [retval][out] */ long *pVal) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_Width( + /* [in] */ long newVal) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Height( + /* [retval][out] */ long *pVal) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_Height( + /* [in] */ long newVal) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_SrcOffsetX( + /* [retval][out] */ long *pVal) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_SrcOffsetX( + /* [in] */ long newVal) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_SrcOffsetY( + /* [retval][out] */ long *pVal) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_SrcOffsetY( + /* [in] */ long newVal) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_SrcWidth( + /* [retval][out] */ long *pVal) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_SrcWidth( + /* [in] */ long newVal) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_SrcHeight( + /* [retval][out] */ long *pVal) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_SrcHeight( + /* [in] */ long newVal) = 0; + + }; + +#else /* C style interface */ + + typedef struct IDxtCompositorVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDxtCompositor * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDxtCompositor * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDxtCompositor * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IDxtCompositor * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IDxtCompositor * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IDxtCompositor * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IDxtCompositor * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Capabilities )( + IDxtCompositor * This, + /* [retval][out] */ long *pVal); + + /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Progress )( + IDxtCompositor * This, + /* [retval][out] */ float *pVal); + + /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Progress )( + IDxtCompositor * This, + /* [in] */ float newVal); + + /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_StepResolution )( + IDxtCompositor * This, + /* [retval][out] */ float *pVal); + + /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Duration )( + IDxtCompositor * This, + /* [retval][out] */ float *pVal); + + /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Duration )( + IDxtCompositor * This, + /* [in] */ float newVal); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_OffsetX )( + IDxtCompositor * This, + /* [retval][out] */ long *pVal); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_OffsetX )( + IDxtCompositor * This, + /* [in] */ long newVal); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_OffsetY )( + IDxtCompositor * This, + /* [retval][out] */ long *pVal); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_OffsetY )( + IDxtCompositor * This, + /* [in] */ long newVal); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Width )( + IDxtCompositor * This, + /* [retval][out] */ long *pVal); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Width )( + IDxtCompositor * This, + /* [in] */ long newVal); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Height )( + IDxtCompositor * This, + /* [retval][out] */ long *pVal); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Height )( + IDxtCompositor * This, + /* [in] */ long newVal); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_SrcOffsetX )( + IDxtCompositor * This, + /* [retval][out] */ long *pVal); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_SrcOffsetX )( + IDxtCompositor * This, + /* [in] */ long newVal); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_SrcOffsetY )( + IDxtCompositor * This, + /* [retval][out] */ long *pVal); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_SrcOffsetY )( + IDxtCompositor * This, + /* [in] */ long newVal); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_SrcWidth )( + IDxtCompositor * This, + /* [retval][out] */ long *pVal); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_SrcWidth )( + IDxtCompositor * This, + /* [in] */ long newVal); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_SrcHeight )( + IDxtCompositor * This, + /* [retval][out] */ long *pVal); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_SrcHeight )( + IDxtCompositor * This, + /* [in] */ long newVal); + + END_INTERFACE + } IDxtCompositorVtbl; + + interface IDxtCompositor + { + CONST_VTBL struct IDxtCompositorVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDxtCompositor_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IDxtCompositor_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IDxtCompositor_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IDxtCompositor_GetTypeInfoCount(This,pctinfo) \ + (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) + +#define IDxtCompositor_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) + +#define IDxtCompositor_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) + +#define IDxtCompositor_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) + + +#define IDxtCompositor_get_Capabilities(This,pVal) \ + (This)->lpVtbl -> get_Capabilities(This,pVal) + +#define IDxtCompositor_get_Progress(This,pVal) \ + (This)->lpVtbl -> get_Progress(This,pVal) + +#define IDxtCompositor_put_Progress(This,newVal) \ + (This)->lpVtbl -> put_Progress(This,newVal) + +#define IDxtCompositor_get_StepResolution(This,pVal) \ + (This)->lpVtbl -> get_StepResolution(This,pVal) + +#define IDxtCompositor_get_Duration(This,pVal) \ + (This)->lpVtbl -> get_Duration(This,pVal) + +#define IDxtCompositor_put_Duration(This,newVal) \ + (This)->lpVtbl -> put_Duration(This,newVal) + + +#define IDxtCompositor_get_OffsetX(This,pVal) \ + (This)->lpVtbl -> get_OffsetX(This,pVal) + +#define IDxtCompositor_put_OffsetX(This,newVal) \ + (This)->lpVtbl -> put_OffsetX(This,newVal) + +#define IDxtCompositor_get_OffsetY(This,pVal) \ + (This)->lpVtbl -> get_OffsetY(This,pVal) + +#define IDxtCompositor_put_OffsetY(This,newVal) \ + (This)->lpVtbl -> put_OffsetY(This,newVal) + +#define IDxtCompositor_get_Width(This,pVal) \ + (This)->lpVtbl -> get_Width(This,pVal) + +#define IDxtCompositor_put_Width(This,newVal) \ + (This)->lpVtbl -> put_Width(This,newVal) + +#define IDxtCompositor_get_Height(This,pVal) \ + (This)->lpVtbl -> get_Height(This,pVal) + +#define IDxtCompositor_put_Height(This,newVal) \ + (This)->lpVtbl -> put_Height(This,newVal) + +#define IDxtCompositor_get_SrcOffsetX(This,pVal) \ + (This)->lpVtbl -> get_SrcOffsetX(This,pVal) + +#define IDxtCompositor_put_SrcOffsetX(This,newVal) \ + (This)->lpVtbl -> put_SrcOffsetX(This,newVal) + +#define IDxtCompositor_get_SrcOffsetY(This,pVal) \ + (This)->lpVtbl -> get_SrcOffsetY(This,pVal) + +#define IDxtCompositor_put_SrcOffsetY(This,newVal) \ + (This)->lpVtbl -> put_SrcOffsetY(This,newVal) + +#define IDxtCompositor_get_SrcWidth(This,pVal) \ + (This)->lpVtbl -> get_SrcWidth(This,pVal) + +#define IDxtCompositor_put_SrcWidth(This,newVal) \ + (This)->lpVtbl -> put_SrcWidth(This,newVal) + +#define IDxtCompositor_get_SrcHeight(This,pVal) \ + (This)->lpVtbl -> get_SrcHeight(This,pVal) + +#define IDxtCompositor_put_SrcHeight(This,newVal) \ + (This)->lpVtbl -> put_SrcHeight(This,newVal) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDxtCompositor_get_OffsetX_Proxy( + IDxtCompositor * This, + /* [retval][out] */ long *pVal); + + +void __RPC_STUB IDxtCompositor_get_OffsetX_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDxtCompositor_put_OffsetX_Proxy( + IDxtCompositor * This, + /* [in] */ long newVal); + + +void __RPC_STUB IDxtCompositor_put_OffsetX_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDxtCompositor_get_OffsetY_Proxy( + IDxtCompositor * This, + /* [retval][out] */ long *pVal); + + +void __RPC_STUB IDxtCompositor_get_OffsetY_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDxtCompositor_put_OffsetY_Proxy( + IDxtCompositor * This, + /* [in] */ long newVal); + + +void __RPC_STUB IDxtCompositor_put_OffsetY_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDxtCompositor_get_Width_Proxy( + IDxtCompositor * This, + /* [retval][out] */ long *pVal); + + +void __RPC_STUB IDxtCompositor_get_Width_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDxtCompositor_put_Width_Proxy( + IDxtCompositor * This, + /* [in] */ long newVal); + + +void __RPC_STUB IDxtCompositor_put_Width_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDxtCompositor_get_Height_Proxy( + IDxtCompositor * This, + /* [retval][out] */ long *pVal); + + +void __RPC_STUB IDxtCompositor_get_Height_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDxtCompositor_put_Height_Proxy( + IDxtCompositor * This, + /* [in] */ long newVal); + + +void __RPC_STUB IDxtCompositor_put_Height_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDxtCompositor_get_SrcOffsetX_Proxy( + IDxtCompositor * This, + /* [retval][out] */ long *pVal); + + +void __RPC_STUB IDxtCompositor_get_SrcOffsetX_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDxtCompositor_put_SrcOffsetX_Proxy( + IDxtCompositor * This, + /* [in] */ long newVal); + + +void __RPC_STUB IDxtCompositor_put_SrcOffsetX_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDxtCompositor_get_SrcOffsetY_Proxy( + IDxtCompositor * This, + /* [retval][out] */ long *pVal); + + +void __RPC_STUB IDxtCompositor_get_SrcOffsetY_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDxtCompositor_put_SrcOffsetY_Proxy( + IDxtCompositor * This, + /* [in] */ long newVal); + + +void __RPC_STUB IDxtCompositor_put_SrcOffsetY_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDxtCompositor_get_SrcWidth_Proxy( + IDxtCompositor * This, + /* [retval][out] */ long *pVal); + + +void __RPC_STUB IDxtCompositor_get_SrcWidth_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDxtCompositor_put_SrcWidth_Proxy( + IDxtCompositor * This, + /* [in] */ long newVal); + + +void __RPC_STUB IDxtCompositor_put_SrcWidth_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDxtCompositor_get_SrcHeight_Proxy( + IDxtCompositor * This, + /* [retval][out] */ long *pVal); + + +void __RPC_STUB IDxtCompositor_get_SrcHeight_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDxtCompositor_put_SrcHeight_Proxy( + IDxtCompositor * This, + /* [in] */ long newVal); + + +void __RPC_STUB IDxtCompositor_put_SrcHeight_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IDxtCompositor_INTERFACE_DEFINED__ */ + + +#ifndef __IDxtAlphaSetter_INTERFACE_DEFINED__ +#define __IDxtAlphaSetter_INTERFACE_DEFINED__ + +/* interface IDxtAlphaSetter */ +/* [unique][helpstring][dual][uuid][object] */ + + +EXTERN_C const IID IID_IDxtAlphaSetter; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("4EE9EAD9-DA4D-43d0-9383-06B90C08B12B") + IDxtAlphaSetter : public IDXEffect + { + public: + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Alpha( + /* [retval][out] */ long *pVal) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_Alpha( + /* [in] */ long newVal) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_AlphaRamp( + /* [retval][out] */ double *pVal) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_AlphaRamp( + /* [in] */ double newVal) = 0; + + }; + +#else /* C style interface */ + + typedef struct IDxtAlphaSetterVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDxtAlphaSetter * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDxtAlphaSetter * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDxtAlphaSetter * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IDxtAlphaSetter * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IDxtAlphaSetter * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IDxtAlphaSetter * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IDxtAlphaSetter * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Capabilities )( + IDxtAlphaSetter * This, + /* [retval][out] */ long *pVal); + + /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Progress )( + IDxtAlphaSetter * This, + /* [retval][out] */ float *pVal); + + /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Progress )( + IDxtAlphaSetter * This, + /* [in] */ float newVal); + + /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_StepResolution )( + IDxtAlphaSetter * This, + /* [retval][out] */ float *pVal); + + /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Duration )( + IDxtAlphaSetter * This, + /* [retval][out] */ float *pVal); + + /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Duration )( + IDxtAlphaSetter * This, + /* [in] */ float newVal); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Alpha )( + IDxtAlphaSetter * This, + /* [retval][out] */ long *pVal); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Alpha )( + IDxtAlphaSetter * This, + /* [in] */ long newVal); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_AlphaRamp )( + IDxtAlphaSetter * This, + /* [retval][out] */ double *pVal); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_AlphaRamp )( + IDxtAlphaSetter * This, + /* [in] */ double newVal); + + END_INTERFACE + } IDxtAlphaSetterVtbl; + + interface IDxtAlphaSetter + { + CONST_VTBL struct IDxtAlphaSetterVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDxtAlphaSetter_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IDxtAlphaSetter_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IDxtAlphaSetter_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IDxtAlphaSetter_GetTypeInfoCount(This,pctinfo) \ + (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) + +#define IDxtAlphaSetter_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) + +#define IDxtAlphaSetter_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) + +#define IDxtAlphaSetter_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) + + +#define IDxtAlphaSetter_get_Capabilities(This,pVal) \ + (This)->lpVtbl -> get_Capabilities(This,pVal) + +#define IDxtAlphaSetter_get_Progress(This,pVal) \ + (This)->lpVtbl -> get_Progress(This,pVal) + +#define IDxtAlphaSetter_put_Progress(This,newVal) \ + (This)->lpVtbl -> put_Progress(This,newVal) + +#define IDxtAlphaSetter_get_StepResolution(This,pVal) \ + (This)->lpVtbl -> get_StepResolution(This,pVal) + +#define IDxtAlphaSetter_get_Duration(This,pVal) \ + (This)->lpVtbl -> get_Duration(This,pVal) + +#define IDxtAlphaSetter_put_Duration(This,newVal) \ + (This)->lpVtbl -> put_Duration(This,newVal) + + +#define IDxtAlphaSetter_get_Alpha(This,pVal) \ + (This)->lpVtbl -> get_Alpha(This,pVal) + +#define IDxtAlphaSetter_put_Alpha(This,newVal) \ + (This)->lpVtbl -> put_Alpha(This,newVal) + +#define IDxtAlphaSetter_get_AlphaRamp(This,pVal) \ + (This)->lpVtbl -> get_AlphaRamp(This,pVal) + +#define IDxtAlphaSetter_put_AlphaRamp(This,newVal) \ + (This)->lpVtbl -> put_AlphaRamp(This,newVal) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDxtAlphaSetter_get_Alpha_Proxy( + IDxtAlphaSetter * This, + /* [retval][out] */ long *pVal); + + +void __RPC_STUB IDxtAlphaSetter_get_Alpha_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDxtAlphaSetter_put_Alpha_Proxy( + IDxtAlphaSetter * This, + /* [in] */ long newVal); + + +void __RPC_STUB IDxtAlphaSetter_put_Alpha_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDxtAlphaSetter_get_AlphaRamp_Proxy( + IDxtAlphaSetter * This, + /* [retval][out] */ double *pVal); + + +void __RPC_STUB IDxtAlphaSetter_get_AlphaRamp_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDxtAlphaSetter_put_AlphaRamp_Proxy( + IDxtAlphaSetter * This, + /* [in] */ double newVal); + + +void __RPC_STUB IDxtAlphaSetter_put_AlphaRamp_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IDxtAlphaSetter_INTERFACE_DEFINED__ */ + + +#ifndef __IDxtJpeg_INTERFACE_DEFINED__ +#define __IDxtJpeg_INTERFACE_DEFINED__ + +/* interface IDxtJpeg */ +/* [unique][helpstring][dual][uuid][object] */ + + +EXTERN_C const IID IID_IDxtJpeg; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("DE75D011-7A65-11D2-8CEA-00A0C9441E20") + IDxtJpeg : public IDXEffect + { + public: + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_MaskNum( + /* [retval][out] */ long *__MIDL_0021) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_MaskNum( + /* [in] */ long __MIDL_0022) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_MaskName( + /* [retval][out] */ BSTR *pVal) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_MaskName( + /* [in] */ BSTR newVal) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_ScaleX( + /* [retval][out] */ double *__MIDL_0023) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_ScaleX( + /* [in] */ double __MIDL_0024) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_ScaleY( + /* [retval][out] */ double *__MIDL_0025) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_ScaleY( + /* [in] */ double __MIDL_0026) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_OffsetX( + /* [retval][out] */ long *__MIDL_0027) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_OffsetX( + /* [in] */ long __MIDL_0028) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_OffsetY( + /* [retval][out] */ long *__MIDL_0029) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_OffsetY( + /* [in] */ long __MIDL_0030) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_ReplicateX( + /* [retval][out] */ long *pVal) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_ReplicateX( + /* [in] */ long newVal) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_ReplicateY( + /* [retval][out] */ long *pVal) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_ReplicateY( + /* [in] */ long newVal) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_BorderColor( + /* [retval][out] */ long *pVal) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_BorderColor( + /* [in] */ long newVal) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_BorderWidth( + /* [retval][out] */ long *pVal) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_BorderWidth( + /* [in] */ long newVal) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_BorderSoftness( + /* [retval][out] */ long *pVal) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_BorderSoftness( + /* [in] */ long newVal) = 0; + + virtual HRESULT STDMETHODCALLTYPE ApplyChanges( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE LoadDefSettings( void) = 0; + + }; + +#else /* C style interface */ + + typedef struct IDxtJpegVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDxtJpeg * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDxtJpeg * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDxtJpeg * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IDxtJpeg * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IDxtJpeg * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IDxtJpeg * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IDxtJpeg * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Capabilities )( + IDxtJpeg * This, + /* [retval][out] */ long *pVal); + + /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Progress )( + IDxtJpeg * This, + /* [retval][out] */ float *pVal); + + /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Progress )( + IDxtJpeg * This, + /* [in] */ float newVal); + + /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_StepResolution )( + IDxtJpeg * This, + /* [retval][out] */ float *pVal); + + /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Duration )( + IDxtJpeg * This, + /* [retval][out] */ float *pVal); + + /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Duration )( + IDxtJpeg * This, + /* [in] */ float newVal); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_MaskNum )( + IDxtJpeg * This, + /* [retval][out] */ long *__MIDL_0021); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_MaskNum )( + IDxtJpeg * This, + /* [in] */ long __MIDL_0022); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_MaskName )( + IDxtJpeg * This, + /* [retval][out] */ BSTR *pVal); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_MaskName )( + IDxtJpeg * This, + /* [in] */ BSTR newVal); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_ScaleX )( + IDxtJpeg * This, + /* [retval][out] */ double *__MIDL_0023); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_ScaleX )( + IDxtJpeg * This, + /* [in] */ double __MIDL_0024); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_ScaleY )( + IDxtJpeg * This, + /* [retval][out] */ double *__MIDL_0025); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_ScaleY )( + IDxtJpeg * This, + /* [in] */ double __MIDL_0026); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_OffsetX )( + IDxtJpeg * This, + /* [retval][out] */ long *__MIDL_0027); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_OffsetX )( + IDxtJpeg * This, + /* [in] */ long __MIDL_0028); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_OffsetY )( + IDxtJpeg * This, + /* [retval][out] */ long *__MIDL_0029); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_OffsetY )( + IDxtJpeg * This, + /* [in] */ long __MIDL_0030); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_ReplicateX )( + IDxtJpeg * This, + /* [retval][out] */ long *pVal); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_ReplicateX )( + IDxtJpeg * This, + /* [in] */ long newVal); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_ReplicateY )( + IDxtJpeg * This, + /* [retval][out] */ long *pVal); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_ReplicateY )( + IDxtJpeg * This, + /* [in] */ long newVal); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_BorderColor )( + IDxtJpeg * This, + /* [retval][out] */ long *pVal); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_BorderColor )( + IDxtJpeg * This, + /* [in] */ long newVal); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_BorderWidth )( + IDxtJpeg * This, + /* [retval][out] */ long *pVal); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_BorderWidth )( + IDxtJpeg * This, + /* [in] */ long newVal); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_BorderSoftness )( + IDxtJpeg * This, + /* [retval][out] */ long *pVal); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_BorderSoftness )( + IDxtJpeg * This, + /* [in] */ long newVal); + + HRESULT ( STDMETHODCALLTYPE *ApplyChanges )( + IDxtJpeg * This); + + HRESULT ( STDMETHODCALLTYPE *LoadDefSettings )( + IDxtJpeg * This); + + END_INTERFACE + } IDxtJpegVtbl; + + interface IDxtJpeg + { + CONST_VTBL struct IDxtJpegVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDxtJpeg_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IDxtJpeg_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IDxtJpeg_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IDxtJpeg_GetTypeInfoCount(This,pctinfo) \ + (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) + +#define IDxtJpeg_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) + +#define IDxtJpeg_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) + +#define IDxtJpeg_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) + + +#define IDxtJpeg_get_Capabilities(This,pVal) \ + (This)->lpVtbl -> get_Capabilities(This,pVal) + +#define IDxtJpeg_get_Progress(This,pVal) \ + (This)->lpVtbl -> get_Progress(This,pVal) + +#define IDxtJpeg_put_Progress(This,newVal) \ + (This)->lpVtbl -> put_Progress(This,newVal) + +#define IDxtJpeg_get_StepResolution(This,pVal) \ + (This)->lpVtbl -> get_StepResolution(This,pVal) + +#define IDxtJpeg_get_Duration(This,pVal) \ + (This)->lpVtbl -> get_Duration(This,pVal) + +#define IDxtJpeg_put_Duration(This,newVal) \ + (This)->lpVtbl -> put_Duration(This,newVal) + + +#define IDxtJpeg_get_MaskNum(This,__MIDL_0021) \ + (This)->lpVtbl -> get_MaskNum(This,__MIDL_0021) + +#define IDxtJpeg_put_MaskNum(This,__MIDL_0022) \ + (This)->lpVtbl -> put_MaskNum(This,__MIDL_0022) + +#define IDxtJpeg_get_MaskName(This,pVal) \ + (This)->lpVtbl -> get_MaskName(This,pVal) + +#define IDxtJpeg_put_MaskName(This,newVal) \ + (This)->lpVtbl -> put_MaskName(This,newVal) + +#define IDxtJpeg_get_ScaleX(This,__MIDL_0023) \ + (This)->lpVtbl -> get_ScaleX(This,__MIDL_0023) + +#define IDxtJpeg_put_ScaleX(This,__MIDL_0024) \ + (This)->lpVtbl -> put_ScaleX(This,__MIDL_0024) + +#define IDxtJpeg_get_ScaleY(This,__MIDL_0025) \ + (This)->lpVtbl -> get_ScaleY(This,__MIDL_0025) + +#define IDxtJpeg_put_ScaleY(This,__MIDL_0026) \ + (This)->lpVtbl -> put_ScaleY(This,__MIDL_0026) + +#define IDxtJpeg_get_OffsetX(This,__MIDL_0027) \ + (This)->lpVtbl -> get_OffsetX(This,__MIDL_0027) + +#define IDxtJpeg_put_OffsetX(This,__MIDL_0028) \ + (This)->lpVtbl -> put_OffsetX(This,__MIDL_0028) + +#define IDxtJpeg_get_OffsetY(This,__MIDL_0029) \ + (This)->lpVtbl -> get_OffsetY(This,__MIDL_0029) + +#define IDxtJpeg_put_OffsetY(This,__MIDL_0030) \ + (This)->lpVtbl -> put_OffsetY(This,__MIDL_0030) + +#define IDxtJpeg_get_ReplicateX(This,pVal) \ + (This)->lpVtbl -> get_ReplicateX(This,pVal) + +#define IDxtJpeg_put_ReplicateX(This,newVal) \ + (This)->lpVtbl -> put_ReplicateX(This,newVal) + +#define IDxtJpeg_get_ReplicateY(This,pVal) \ + (This)->lpVtbl -> get_ReplicateY(This,pVal) + +#define IDxtJpeg_put_ReplicateY(This,newVal) \ + (This)->lpVtbl -> put_ReplicateY(This,newVal) + +#define IDxtJpeg_get_BorderColor(This,pVal) \ + (This)->lpVtbl -> get_BorderColor(This,pVal) + +#define IDxtJpeg_put_BorderColor(This,newVal) \ + (This)->lpVtbl -> put_BorderColor(This,newVal) + +#define IDxtJpeg_get_BorderWidth(This,pVal) \ + (This)->lpVtbl -> get_BorderWidth(This,pVal) + +#define IDxtJpeg_put_BorderWidth(This,newVal) \ + (This)->lpVtbl -> put_BorderWidth(This,newVal) + +#define IDxtJpeg_get_BorderSoftness(This,pVal) \ + (This)->lpVtbl -> get_BorderSoftness(This,pVal) + +#define IDxtJpeg_put_BorderSoftness(This,newVal) \ + (This)->lpVtbl -> put_BorderSoftness(This,newVal) + +#define IDxtJpeg_ApplyChanges(This) \ + (This)->lpVtbl -> ApplyChanges(This) + +#define IDxtJpeg_LoadDefSettings(This) \ + (This)->lpVtbl -> LoadDefSettings(This) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDxtJpeg_get_MaskNum_Proxy( + IDxtJpeg * This, + /* [retval][out] */ long *__MIDL_0021); + + +void __RPC_STUB IDxtJpeg_get_MaskNum_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDxtJpeg_put_MaskNum_Proxy( + IDxtJpeg * This, + /* [in] */ long __MIDL_0022); + + +void __RPC_STUB IDxtJpeg_put_MaskNum_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDxtJpeg_get_MaskName_Proxy( + IDxtJpeg * This, + /* [retval][out] */ BSTR *pVal); + + +void __RPC_STUB IDxtJpeg_get_MaskName_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDxtJpeg_put_MaskName_Proxy( + IDxtJpeg * This, + /* [in] */ BSTR newVal); + + +void __RPC_STUB IDxtJpeg_put_MaskName_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDxtJpeg_get_ScaleX_Proxy( + IDxtJpeg * This, + /* [retval][out] */ double *__MIDL_0023); + + +void __RPC_STUB IDxtJpeg_get_ScaleX_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDxtJpeg_put_ScaleX_Proxy( + IDxtJpeg * This, + /* [in] */ double __MIDL_0024); + + +void __RPC_STUB IDxtJpeg_put_ScaleX_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDxtJpeg_get_ScaleY_Proxy( + IDxtJpeg * This, + /* [retval][out] */ double *__MIDL_0025); + + +void __RPC_STUB IDxtJpeg_get_ScaleY_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDxtJpeg_put_ScaleY_Proxy( + IDxtJpeg * This, + /* [in] */ double __MIDL_0026); + + +void __RPC_STUB IDxtJpeg_put_ScaleY_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDxtJpeg_get_OffsetX_Proxy( + IDxtJpeg * This, + /* [retval][out] */ long *__MIDL_0027); + + +void __RPC_STUB IDxtJpeg_get_OffsetX_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDxtJpeg_put_OffsetX_Proxy( + IDxtJpeg * This, + /* [in] */ long __MIDL_0028); + + +void __RPC_STUB IDxtJpeg_put_OffsetX_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDxtJpeg_get_OffsetY_Proxy( + IDxtJpeg * This, + /* [retval][out] */ long *__MIDL_0029); + + +void __RPC_STUB IDxtJpeg_get_OffsetY_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDxtJpeg_put_OffsetY_Proxy( + IDxtJpeg * This, + /* [in] */ long __MIDL_0030); + + +void __RPC_STUB IDxtJpeg_put_OffsetY_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDxtJpeg_get_ReplicateX_Proxy( + IDxtJpeg * This, + /* [retval][out] */ long *pVal); + + +void __RPC_STUB IDxtJpeg_get_ReplicateX_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDxtJpeg_put_ReplicateX_Proxy( + IDxtJpeg * This, + /* [in] */ long newVal); + + +void __RPC_STUB IDxtJpeg_put_ReplicateX_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDxtJpeg_get_ReplicateY_Proxy( + IDxtJpeg * This, + /* [retval][out] */ long *pVal); + + +void __RPC_STUB IDxtJpeg_get_ReplicateY_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDxtJpeg_put_ReplicateY_Proxy( + IDxtJpeg * This, + /* [in] */ long newVal); + + +void __RPC_STUB IDxtJpeg_put_ReplicateY_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDxtJpeg_get_BorderColor_Proxy( + IDxtJpeg * This, + /* [retval][out] */ long *pVal); + + +void __RPC_STUB IDxtJpeg_get_BorderColor_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDxtJpeg_put_BorderColor_Proxy( + IDxtJpeg * This, + /* [in] */ long newVal); + + +void __RPC_STUB IDxtJpeg_put_BorderColor_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDxtJpeg_get_BorderWidth_Proxy( + IDxtJpeg * This, + /* [retval][out] */ long *pVal); + + +void __RPC_STUB IDxtJpeg_get_BorderWidth_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDxtJpeg_put_BorderWidth_Proxy( + IDxtJpeg * This, + /* [in] */ long newVal); + + +void __RPC_STUB IDxtJpeg_put_BorderWidth_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDxtJpeg_get_BorderSoftness_Proxy( + IDxtJpeg * This, + /* [retval][out] */ long *pVal); + + +void __RPC_STUB IDxtJpeg_get_BorderSoftness_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDxtJpeg_put_BorderSoftness_Proxy( + IDxtJpeg * This, + /* [in] */ long newVal); + + +void __RPC_STUB IDxtJpeg_put_BorderSoftness_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDxtJpeg_ApplyChanges_Proxy( + IDxtJpeg * This); + + +void __RPC_STUB IDxtJpeg_ApplyChanges_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IDxtJpeg_LoadDefSettings_Proxy( + IDxtJpeg * This); + + +void __RPC_STUB IDxtJpeg_LoadDefSettings_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IDxtJpeg_INTERFACE_DEFINED__ */ + + +#ifndef __IDxtKey_INTERFACE_DEFINED__ +#define __IDxtKey_INTERFACE_DEFINED__ + +/* interface IDxtKey */ +/* [unique][helpstring][dual][uuid][object] */ + + +EXTERN_C const IID IID_IDxtKey; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("3255de56-38fb-4901-b980-94b438010d7b") + IDxtKey : public IDXEffect + { + public: + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_KeyType( + /* [retval][out] */ int *__MIDL_0031) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_KeyType( + /* [in] */ int __MIDL_0032) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Hue( + /* [retval][out] */ int *__MIDL_0033) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_Hue( + /* [in] */ int __MIDL_0034) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Luminance( + /* [retval][out] */ int *__MIDL_0035) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_Luminance( + /* [in] */ int __MIDL_0036) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_RGB( + /* [retval][out] */ DWORD *__MIDL_0037) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_RGB( + /* [in] */ DWORD __MIDL_0038) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Similarity( + /* [retval][out] */ int *__MIDL_0039) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_Similarity( + /* [in] */ int __MIDL_0040) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Invert( + /* [retval][out] */ BOOL *__MIDL_0041) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_Invert( + /* [in] */ BOOL __MIDL_0042) = 0; + + }; + +#else /* C style interface */ + + typedef struct IDxtKeyVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDxtKey * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDxtKey * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDxtKey * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IDxtKey * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IDxtKey * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IDxtKey * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IDxtKey * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Capabilities )( + IDxtKey * This, + /* [retval][out] */ long *pVal); + + /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Progress )( + IDxtKey * This, + /* [retval][out] */ float *pVal); + + /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Progress )( + IDxtKey * This, + /* [in] */ float newVal); + + /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_StepResolution )( + IDxtKey * This, + /* [retval][out] */ float *pVal); + + /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Duration )( + IDxtKey * This, + /* [retval][out] */ float *pVal); + + /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Duration )( + IDxtKey * This, + /* [in] */ float newVal); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_KeyType )( + IDxtKey * This, + /* [retval][out] */ int *__MIDL_0031); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_KeyType )( + IDxtKey * This, + /* [in] */ int __MIDL_0032); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Hue )( + IDxtKey * This, + /* [retval][out] */ int *__MIDL_0033); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Hue )( + IDxtKey * This, + /* [in] */ int __MIDL_0034); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Luminance )( + IDxtKey * This, + /* [retval][out] */ int *__MIDL_0035); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Luminance )( + IDxtKey * This, + /* [in] */ int __MIDL_0036); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_RGB )( + IDxtKey * This, + /* [retval][out] */ DWORD *__MIDL_0037); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_RGB )( + IDxtKey * This, + /* [in] */ DWORD __MIDL_0038); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Similarity )( + IDxtKey * This, + /* [retval][out] */ int *__MIDL_0039); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Similarity )( + IDxtKey * This, + /* [in] */ int __MIDL_0040); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Invert )( + IDxtKey * This, + /* [retval][out] */ BOOL *__MIDL_0041); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Invert )( + IDxtKey * This, + /* [in] */ BOOL __MIDL_0042); + + END_INTERFACE + } IDxtKeyVtbl; + + interface IDxtKey + { + CONST_VTBL struct IDxtKeyVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDxtKey_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IDxtKey_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IDxtKey_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IDxtKey_GetTypeInfoCount(This,pctinfo) \ + (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) + +#define IDxtKey_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) + +#define IDxtKey_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) + +#define IDxtKey_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) + + +#define IDxtKey_get_Capabilities(This,pVal) \ + (This)->lpVtbl -> get_Capabilities(This,pVal) + +#define IDxtKey_get_Progress(This,pVal) \ + (This)->lpVtbl -> get_Progress(This,pVal) + +#define IDxtKey_put_Progress(This,newVal) \ + (This)->lpVtbl -> put_Progress(This,newVal) + +#define IDxtKey_get_StepResolution(This,pVal) \ + (This)->lpVtbl -> get_StepResolution(This,pVal) + +#define IDxtKey_get_Duration(This,pVal) \ + (This)->lpVtbl -> get_Duration(This,pVal) + +#define IDxtKey_put_Duration(This,newVal) \ + (This)->lpVtbl -> put_Duration(This,newVal) + + +#define IDxtKey_get_KeyType(This,__MIDL_0031) \ + (This)->lpVtbl -> get_KeyType(This,__MIDL_0031) + +#define IDxtKey_put_KeyType(This,__MIDL_0032) \ + (This)->lpVtbl -> put_KeyType(This,__MIDL_0032) + +#define IDxtKey_get_Hue(This,__MIDL_0033) \ + (This)->lpVtbl -> get_Hue(This,__MIDL_0033) + +#define IDxtKey_put_Hue(This,__MIDL_0034) \ + (This)->lpVtbl -> put_Hue(This,__MIDL_0034) + +#define IDxtKey_get_Luminance(This,__MIDL_0035) \ + (This)->lpVtbl -> get_Luminance(This,__MIDL_0035) + +#define IDxtKey_put_Luminance(This,__MIDL_0036) \ + (This)->lpVtbl -> put_Luminance(This,__MIDL_0036) + +#define IDxtKey_get_RGB(This,__MIDL_0037) \ + (This)->lpVtbl -> get_RGB(This,__MIDL_0037) + +#define IDxtKey_put_RGB(This,__MIDL_0038) \ + (This)->lpVtbl -> put_RGB(This,__MIDL_0038) + +#define IDxtKey_get_Similarity(This,__MIDL_0039) \ + (This)->lpVtbl -> get_Similarity(This,__MIDL_0039) + +#define IDxtKey_put_Similarity(This,__MIDL_0040) \ + (This)->lpVtbl -> put_Similarity(This,__MIDL_0040) + +#define IDxtKey_get_Invert(This,__MIDL_0041) \ + (This)->lpVtbl -> get_Invert(This,__MIDL_0041) + +#define IDxtKey_put_Invert(This,__MIDL_0042) \ + (This)->lpVtbl -> put_Invert(This,__MIDL_0042) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDxtKey_get_KeyType_Proxy( + IDxtKey * This, + /* [retval][out] */ int *__MIDL_0031); + + +void __RPC_STUB IDxtKey_get_KeyType_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDxtKey_put_KeyType_Proxy( + IDxtKey * This, + /* [in] */ int __MIDL_0032); + + +void __RPC_STUB IDxtKey_put_KeyType_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDxtKey_get_Hue_Proxy( + IDxtKey * This, + /* [retval][out] */ int *__MIDL_0033); + + +void __RPC_STUB IDxtKey_get_Hue_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDxtKey_put_Hue_Proxy( + IDxtKey * This, + /* [in] */ int __MIDL_0034); + + +void __RPC_STUB IDxtKey_put_Hue_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDxtKey_get_Luminance_Proxy( + IDxtKey * This, + /* [retval][out] */ int *__MIDL_0035); + + +void __RPC_STUB IDxtKey_get_Luminance_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDxtKey_put_Luminance_Proxy( + IDxtKey * This, + /* [in] */ int __MIDL_0036); + + +void __RPC_STUB IDxtKey_put_Luminance_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDxtKey_get_RGB_Proxy( + IDxtKey * This, + /* [retval][out] */ DWORD *__MIDL_0037); + + +void __RPC_STUB IDxtKey_get_RGB_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDxtKey_put_RGB_Proxy( + IDxtKey * This, + /* [in] */ DWORD __MIDL_0038); + + +void __RPC_STUB IDxtKey_put_RGB_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDxtKey_get_Similarity_Proxy( + IDxtKey * This, + /* [retval][out] */ int *__MIDL_0039); + + +void __RPC_STUB IDxtKey_get_Similarity_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDxtKey_put_Similarity_Proxy( + IDxtKey * This, + /* [in] */ int __MIDL_0040); + + +void __RPC_STUB IDxtKey_put_Similarity_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDxtKey_get_Invert_Proxy( + IDxtKey * This, + /* [retval][out] */ BOOL *__MIDL_0041); + + +void __RPC_STUB IDxtKey_get_Invert_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDxtKey_put_Invert_Proxy( + IDxtKey * This, + /* [in] */ BOOL __MIDL_0042); + + +void __RPC_STUB IDxtKey_put_Invert_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IDxtKey_INTERFACE_DEFINED__ */ + + +#ifndef __IMediaLocator_INTERFACE_DEFINED__ +#define __IMediaLocator_INTERFACE_DEFINED__ + +/* interface IMediaLocator */ +/* [unique][helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IMediaLocator; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("288581E0-66CE-11d2-918F-00C0DF10D434") + IMediaLocator : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE FindMediaFile( + BSTR Input, + BSTR FilterString, + BSTR *pOutput, + long Flags) = 0; + + virtual HRESULT STDMETHODCALLTYPE AddFoundLocation( + BSTR DirectoryName) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMediaLocatorVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMediaLocator * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMediaLocator * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMediaLocator * This); + + HRESULT ( STDMETHODCALLTYPE *FindMediaFile )( + IMediaLocator * This, + BSTR Input, + BSTR FilterString, + BSTR *pOutput, + long Flags); + + HRESULT ( STDMETHODCALLTYPE *AddFoundLocation )( + IMediaLocator * This, + BSTR DirectoryName); + + END_INTERFACE + } IMediaLocatorVtbl; + + interface IMediaLocator + { + CONST_VTBL struct IMediaLocatorVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMediaLocator_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IMediaLocator_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IMediaLocator_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IMediaLocator_FindMediaFile(This,Input,FilterString,pOutput,Flags) \ + (This)->lpVtbl -> FindMediaFile(This,Input,FilterString,pOutput,Flags) + +#define IMediaLocator_AddFoundLocation(This,DirectoryName) \ + (This)->lpVtbl -> AddFoundLocation(This,DirectoryName) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IMediaLocator_FindMediaFile_Proxy( + IMediaLocator * This, + BSTR Input, + BSTR FilterString, + BSTR *pOutput, + long Flags); + + +void __RPC_STUB IMediaLocator_FindMediaFile_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IMediaLocator_AddFoundLocation_Proxy( + IMediaLocator * This, + BSTR DirectoryName); + + +void __RPC_STUB IMediaLocator_AddFoundLocation_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IMediaLocator_INTERFACE_DEFINED__ */ + + +#ifndef __IMediaDet_INTERFACE_DEFINED__ +#define __IMediaDet_INTERFACE_DEFINED__ + +/* interface IMediaDet */ +/* [unique][helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IMediaDet; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("65BD0710-24D2-4ff7-9324-ED2E5D3ABAFA") + IMediaDet : public IUnknown + { + public: + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Filter( + /* [retval][out] */ IUnknown **pVal) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_Filter( + /* [in] */ IUnknown *newVal) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_OutputStreams( + /* [retval][out] */ long *pVal) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_CurrentStream( + /* [retval][out] */ long *pVal) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_CurrentStream( + /* [in] */ long newVal) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_StreamType( + /* [retval][out] */ GUID *pVal) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_StreamTypeB( + /* [retval][out] */ BSTR *pVal) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_StreamLength( + /* [retval][out] */ double *pVal) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Filename( + /* [retval][out] */ BSTR *pVal) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_Filename( + /* [in] */ BSTR newVal) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetBitmapBits( + double StreamTime, + long *pBufferSize, + char *pBuffer, + long Width, + long Height) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE WriteBitmapBits( + double StreamTime, + long Width, + long Height, + BSTR Filename) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_StreamMediaType( + /* [retval][out] */ AM_MEDIA_TYPE *pVal) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetSampleGrabber( + /* [out] */ ISampleGrabber **ppVal) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_FrameRate( + /* [retval][out] */ double *pVal) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE EnterBitmapGrabMode( + double SeekTime) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMediaDetVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMediaDet * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMediaDet * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMediaDet * This); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Filter )( + IMediaDet * This, + /* [retval][out] */ IUnknown **pVal); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Filter )( + IMediaDet * This, + /* [in] */ IUnknown *newVal); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_OutputStreams )( + IMediaDet * This, + /* [retval][out] */ long *pVal); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_CurrentStream )( + IMediaDet * This, + /* [retval][out] */ long *pVal); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_CurrentStream )( + IMediaDet * This, + /* [in] */ long newVal); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_StreamType )( + IMediaDet * This, + /* [retval][out] */ GUID *pVal); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_StreamTypeB )( + IMediaDet * This, + /* [retval][out] */ BSTR *pVal); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_StreamLength )( + IMediaDet * This, + /* [retval][out] */ double *pVal); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Filename )( + IMediaDet * This, + /* [retval][out] */ BSTR *pVal); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Filename )( + IMediaDet * This, + /* [in] */ BSTR newVal); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetBitmapBits )( + IMediaDet * This, + double StreamTime, + long *pBufferSize, + char *pBuffer, + long Width, + long Height); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *WriteBitmapBits )( + IMediaDet * This, + double StreamTime, + long Width, + long Height, + BSTR Filename); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_StreamMediaType )( + IMediaDet * This, + /* [retval][out] */ AM_MEDIA_TYPE *pVal); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetSampleGrabber )( + IMediaDet * This, + /* [out] */ ISampleGrabber **ppVal); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_FrameRate )( + IMediaDet * This, + /* [retval][out] */ double *pVal); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *EnterBitmapGrabMode )( + IMediaDet * This, + double SeekTime); + + END_INTERFACE + } IMediaDetVtbl; + + interface IMediaDet + { + CONST_VTBL struct IMediaDetVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMediaDet_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IMediaDet_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IMediaDet_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IMediaDet_get_Filter(This,pVal) \ + (This)->lpVtbl -> get_Filter(This,pVal) + +#define IMediaDet_put_Filter(This,newVal) \ + (This)->lpVtbl -> put_Filter(This,newVal) + +#define IMediaDet_get_OutputStreams(This,pVal) \ + (This)->lpVtbl -> get_OutputStreams(This,pVal) + +#define IMediaDet_get_CurrentStream(This,pVal) \ + (This)->lpVtbl -> get_CurrentStream(This,pVal) + +#define IMediaDet_put_CurrentStream(This,newVal) \ + (This)->lpVtbl -> put_CurrentStream(This,newVal) + +#define IMediaDet_get_StreamType(This,pVal) \ + (This)->lpVtbl -> get_StreamType(This,pVal) + +#define IMediaDet_get_StreamTypeB(This,pVal) \ + (This)->lpVtbl -> get_StreamTypeB(This,pVal) + +#define IMediaDet_get_StreamLength(This,pVal) \ + (This)->lpVtbl -> get_StreamLength(This,pVal) + +#define IMediaDet_get_Filename(This,pVal) \ + (This)->lpVtbl -> get_Filename(This,pVal) + +#define IMediaDet_put_Filename(This,newVal) \ + (This)->lpVtbl -> put_Filename(This,newVal) + +#define IMediaDet_GetBitmapBits(This,StreamTime,pBufferSize,pBuffer,Width,Height) \ + (This)->lpVtbl -> GetBitmapBits(This,StreamTime,pBufferSize,pBuffer,Width,Height) + +#define IMediaDet_WriteBitmapBits(This,StreamTime,Width,Height,Filename) \ + (This)->lpVtbl -> WriteBitmapBits(This,StreamTime,Width,Height,Filename) + +#define IMediaDet_get_StreamMediaType(This,pVal) \ + (This)->lpVtbl -> get_StreamMediaType(This,pVal) + +#define IMediaDet_GetSampleGrabber(This,ppVal) \ + (This)->lpVtbl -> GetSampleGrabber(This,ppVal) + +#define IMediaDet_get_FrameRate(This,pVal) \ + (This)->lpVtbl -> get_FrameRate(This,pVal) + +#define IMediaDet_EnterBitmapGrabMode(This,SeekTime) \ + (This)->lpVtbl -> EnterBitmapGrabMode(This,SeekTime) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IMediaDet_get_Filter_Proxy( + IMediaDet * This, + /* [retval][out] */ IUnknown **pVal); + + +void __RPC_STUB IMediaDet_get_Filter_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IMediaDet_put_Filter_Proxy( + IMediaDet * This, + /* [in] */ IUnknown *newVal); + + +void __RPC_STUB IMediaDet_put_Filter_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IMediaDet_get_OutputStreams_Proxy( + IMediaDet * This, + /* [retval][out] */ long *pVal); + + +void __RPC_STUB IMediaDet_get_OutputStreams_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IMediaDet_get_CurrentStream_Proxy( + IMediaDet * This, + /* [retval][out] */ long *pVal); + + +void __RPC_STUB IMediaDet_get_CurrentStream_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IMediaDet_put_CurrentStream_Proxy( + IMediaDet * This, + /* [in] */ long newVal); + + +void __RPC_STUB IMediaDet_put_CurrentStream_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IMediaDet_get_StreamType_Proxy( + IMediaDet * This, + /* [retval][out] */ GUID *pVal); + + +void __RPC_STUB IMediaDet_get_StreamType_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IMediaDet_get_StreamTypeB_Proxy( + IMediaDet * This, + /* [retval][out] */ BSTR *pVal); + + +void __RPC_STUB IMediaDet_get_StreamTypeB_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IMediaDet_get_StreamLength_Proxy( + IMediaDet * This, + /* [retval][out] */ double *pVal); + + +void __RPC_STUB IMediaDet_get_StreamLength_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IMediaDet_get_Filename_Proxy( + IMediaDet * This, + /* [retval][out] */ BSTR *pVal); + + +void __RPC_STUB IMediaDet_get_Filename_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IMediaDet_put_Filename_Proxy( + IMediaDet * This, + /* [in] */ BSTR newVal); + + +void __RPC_STUB IMediaDet_put_Filename_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IMediaDet_GetBitmapBits_Proxy( + IMediaDet * This, + double StreamTime, + long *pBufferSize, + char *pBuffer, + long Width, + long Height); + + +void __RPC_STUB IMediaDet_GetBitmapBits_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IMediaDet_WriteBitmapBits_Proxy( + IMediaDet * This, + double StreamTime, + long Width, + long Height, + BSTR Filename); + + +void __RPC_STUB IMediaDet_WriteBitmapBits_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IMediaDet_get_StreamMediaType_Proxy( + IMediaDet * This, + /* [retval][out] */ AM_MEDIA_TYPE *pVal); + + +void __RPC_STUB IMediaDet_get_StreamMediaType_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IMediaDet_GetSampleGrabber_Proxy( + IMediaDet * This, + /* [out] */ ISampleGrabber **ppVal); + + +void __RPC_STUB IMediaDet_GetSampleGrabber_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IMediaDet_get_FrameRate_Proxy( + IMediaDet * This, + /* [retval][out] */ double *pVal); + + +void __RPC_STUB IMediaDet_get_FrameRate_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IMediaDet_EnterBitmapGrabMode_Proxy( + IMediaDet * This, + double SeekTime); + + +void __RPC_STUB IMediaDet_EnterBitmapGrabMode_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IMediaDet_INTERFACE_DEFINED__ */ + + +#ifndef __IGrfCache_INTERFACE_DEFINED__ +#define __IGrfCache_INTERFACE_DEFINED__ + +/* interface IGrfCache */ +/* [unique][helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IGrfCache; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("AE9472BE-B0C3-11D2-8D24-00A0C9441E20") + IGrfCache : public IDispatch + { + public: + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE AddFilter( + IGrfCache *ChainedCache, + LONGLONG ID, + const IBaseFilter *pFilter, + LPCWSTR pName) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE ConnectPins( + IGrfCache *ChainedCache, + LONGLONG PinID1, + const IPin *pPin1, + LONGLONG PinID2, + const IPin *pPin2) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE SetGraph( + const IGraphBuilder *pGraph) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE DoConnectionsNow( void) = 0; + + }; + +#else /* C style interface */ + + typedef struct IGrfCacheVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IGrfCache * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IGrfCache * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IGrfCache * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IGrfCache * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IGrfCache * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IGrfCache * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IGrfCache * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *AddFilter )( + IGrfCache * This, + IGrfCache *ChainedCache, + LONGLONG ID, + const IBaseFilter *pFilter, + LPCWSTR pName); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *ConnectPins )( + IGrfCache * This, + IGrfCache *ChainedCache, + LONGLONG PinID1, + const IPin *pPin1, + LONGLONG PinID2, + const IPin *pPin2); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *SetGraph )( + IGrfCache * This, + const IGraphBuilder *pGraph); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *DoConnectionsNow )( + IGrfCache * This); + + END_INTERFACE + } IGrfCacheVtbl; + + interface IGrfCache + { + CONST_VTBL struct IGrfCacheVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IGrfCache_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IGrfCache_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IGrfCache_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IGrfCache_GetTypeInfoCount(This,pctinfo) \ + (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) + +#define IGrfCache_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) + +#define IGrfCache_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) + +#define IGrfCache_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) + + +#define IGrfCache_AddFilter(This,ChainedCache,ID,pFilter,pName) \ + (This)->lpVtbl -> AddFilter(This,ChainedCache,ID,pFilter,pName) + +#define IGrfCache_ConnectPins(This,ChainedCache,PinID1,pPin1,PinID2,pPin2) \ + (This)->lpVtbl -> ConnectPins(This,ChainedCache,PinID1,pPin1,PinID2,pPin2) + +#define IGrfCache_SetGraph(This,pGraph) \ + (This)->lpVtbl -> SetGraph(This,pGraph) + +#define IGrfCache_DoConnectionsNow(This) \ + (This)->lpVtbl -> DoConnectionsNow(This) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IGrfCache_AddFilter_Proxy( + IGrfCache * This, + IGrfCache *ChainedCache, + LONGLONG ID, + const IBaseFilter *pFilter, + LPCWSTR pName); + + +void __RPC_STUB IGrfCache_AddFilter_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IGrfCache_ConnectPins_Proxy( + IGrfCache * This, + IGrfCache *ChainedCache, + LONGLONG PinID1, + const IPin *pPin1, + LONGLONG PinID2, + const IPin *pPin2); + + +void __RPC_STUB IGrfCache_ConnectPins_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IGrfCache_SetGraph_Proxy( + IGrfCache * This, + const IGraphBuilder *pGraph); + + +void __RPC_STUB IGrfCache_SetGraph_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IGrfCache_DoConnectionsNow_Proxy( + IGrfCache * This); + + +void __RPC_STUB IGrfCache_DoConnectionsNow_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IGrfCache_INTERFACE_DEFINED__ */ + + +#ifndef __IRenderEngine_INTERFACE_DEFINED__ +#define __IRenderEngine_INTERFACE_DEFINED__ + +/* interface IRenderEngine */ +/* [unique][helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IRenderEngine; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("6BEE3A81-66C9-11d2-918F-00C0DF10D434") + IRenderEngine : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE SetTimelineObject( + IAMTimeline *pTimeline) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetTimelineObject( + /* [out] */ IAMTimeline **ppTimeline) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetFilterGraph( + /* [out] */ IGraphBuilder **ppFG) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetFilterGraph( + IGraphBuilder *pFG) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetInterestRange( + REFERENCE_TIME Start, + REFERENCE_TIME Stop) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetInterestRange2( + double Start, + double Stop) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetRenderRange( + REFERENCE_TIME Start, + REFERENCE_TIME Stop) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetRenderRange2( + double Start, + double Stop) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetGroupOutputPin( + long Group, + /* [out] */ IPin **ppRenderPin) = 0; + + virtual HRESULT STDMETHODCALLTYPE ScrapIt( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE RenderOutputPins( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetVendorString( + /* [retval][out] */ BSTR *pVendorID) = 0; + + virtual HRESULT STDMETHODCALLTYPE ConnectFrontEnd( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetSourceConnectCallback( + IGrfCache *pCallback) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetDynamicReconnectLevel( + long Level) = 0; + + virtual HRESULT STDMETHODCALLTYPE DoSmartRecompression( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE UseInSmartRecompressionGraph( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetSourceNameValidation( + BSTR FilterString, + IMediaLocator *pOverride, + LONG Flags) = 0; + + virtual HRESULT STDMETHODCALLTYPE Commit( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE Decommit( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetCaps( + long Index, + long *pReturn) = 0; + + }; + +#else /* C style interface */ + + typedef struct IRenderEngineVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IRenderEngine * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IRenderEngine * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IRenderEngine * This); + + HRESULT ( STDMETHODCALLTYPE *SetTimelineObject )( + IRenderEngine * This, + IAMTimeline *pTimeline); + + HRESULT ( STDMETHODCALLTYPE *GetTimelineObject )( + IRenderEngine * This, + /* [out] */ IAMTimeline **ppTimeline); + + HRESULT ( STDMETHODCALLTYPE *GetFilterGraph )( + IRenderEngine * This, + /* [out] */ IGraphBuilder **ppFG); + + HRESULT ( STDMETHODCALLTYPE *SetFilterGraph )( + IRenderEngine * This, + IGraphBuilder *pFG); + + HRESULT ( STDMETHODCALLTYPE *SetInterestRange )( + IRenderEngine * This, + REFERENCE_TIME Start, + REFERENCE_TIME Stop); + + HRESULT ( STDMETHODCALLTYPE *SetInterestRange2 )( + IRenderEngine * This, + double Start, + double Stop); + + HRESULT ( STDMETHODCALLTYPE *SetRenderRange )( + IRenderEngine * This, + REFERENCE_TIME Start, + REFERENCE_TIME Stop); + + HRESULT ( STDMETHODCALLTYPE *SetRenderRange2 )( + IRenderEngine * This, + double Start, + double Stop); + + HRESULT ( STDMETHODCALLTYPE *GetGroupOutputPin )( + IRenderEngine * This, + long Group, + /* [out] */ IPin **ppRenderPin); + + HRESULT ( STDMETHODCALLTYPE *ScrapIt )( + IRenderEngine * This); + + HRESULT ( STDMETHODCALLTYPE *RenderOutputPins )( + IRenderEngine * This); + + HRESULT ( STDMETHODCALLTYPE *GetVendorString )( + IRenderEngine * This, + /* [retval][out] */ BSTR *pVendorID); + + HRESULT ( STDMETHODCALLTYPE *ConnectFrontEnd )( + IRenderEngine * This); + + HRESULT ( STDMETHODCALLTYPE *SetSourceConnectCallback )( + IRenderEngine * This, + IGrfCache *pCallback); + + HRESULT ( STDMETHODCALLTYPE *SetDynamicReconnectLevel )( + IRenderEngine * This, + long Level); + + HRESULT ( STDMETHODCALLTYPE *DoSmartRecompression )( + IRenderEngine * This); + + HRESULT ( STDMETHODCALLTYPE *UseInSmartRecompressionGraph )( + IRenderEngine * This); + + HRESULT ( STDMETHODCALLTYPE *SetSourceNameValidation )( + IRenderEngine * This, + BSTR FilterString, + IMediaLocator *pOverride, + LONG Flags); + + HRESULT ( STDMETHODCALLTYPE *Commit )( + IRenderEngine * This); + + HRESULT ( STDMETHODCALLTYPE *Decommit )( + IRenderEngine * This); + + HRESULT ( STDMETHODCALLTYPE *GetCaps )( + IRenderEngine * This, + long Index, + long *pReturn); + + END_INTERFACE + } IRenderEngineVtbl; + + interface IRenderEngine + { + CONST_VTBL struct IRenderEngineVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IRenderEngine_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IRenderEngine_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IRenderEngine_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IRenderEngine_SetTimelineObject(This,pTimeline) \ + (This)->lpVtbl -> SetTimelineObject(This,pTimeline) + +#define IRenderEngine_GetTimelineObject(This,ppTimeline) \ + (This)->lpVtbl -> GetTimelineObject(This,ppTimeline) + +#define IRenderEngine_GetFilterGraph(This,ppFG) \ + (This)->lpVtbl -> GetFilterGraph(This,ppFG) + +#define IRenderEngine_SetFilterGraph(This,pFG) \ + (This)->lpVtbl -> SetFilterGraph(This,pFG) + +#define IRenderEngine_SetInterestRange(This,Start,Stop) \ + (This)->lpVtbl -> SetInterestRange(This,Start,Stop) + +#define IRenderEngine_SetInterestRange2(This,Start,Stop) \ + (This)->lpVtbl -> SetInterestRange2(This,Start,Stop) + +#define IRenderEngine_SetRenderRange(This,Start,Stop) \ + (This)->lpVtbl -> SetRenderRange(This,Start,Stop) + +#define IRenderEngine_SetRenderRange2(This,Start,Stop) \ + (This)->lpVtbl -> SetRenderRange2(This,Start,Stop) + +#define IRenderEngine_GetGroupOutputPin(This,Group,ppRenderPin) \ + (This)->lpVtbl -> GetGroupOutputPin(This,Group,ppRenderPin) + +#define IRenderEngine_ScrapIt(This) \ + (This)->lpVtbl -> ScrapIt(This) + +#define IRenderEngine_RenderOutputPins(This) \ + (This)->lpVtbl -> RenderOutputPins(This) + +#define IRenderEngine_GetVendorString(This,pVendorID) \ + (This)->lpVtbl -> GetVendorString(This,pVendorID) + +#define IRenderEngine_ConnectFrontEnd(This) \ + (This)->lpVtbl -> ConnectFrontEnd(This) + +#define IRenderEngine_SetSourceConnectCallback(This,pCallback) \ + (This)->lpVtbl -> SetSourceConnectCallback(This,pCallback) + +#define IRenderEngine_SetDynamicReconnectLevel(This,Level) \ + (This)->lpVtbl -> SetDynamicReconnectLevel(This,Level) + +#define IRenderEngine_DoSmartRecompression(This) \ + (This)->lpVtbl -> DoSmartRecompression(This) + +#define IRenderEngine_UseInSmartRecompressionGraph(This) \ + (This)->lpVtbl -> UseInSmartRecompressionGraph(This) + +#define IRenderEngine_SetSourceNameValidation(This,FilterString,pOverride,Flags) \ + (This)->lpVtbl -> SetSourceNameValidation(This,FilterString,pOverride,Flags) + +#define IRenderEngine_Commit(This) \ + (This)->lpVtbl -> Commit(This) + +#define IRenderEngine_Decommit(This) \ + (This)->lpVtbl -> Decommit(This) + +#define IRenderEngine_GetCaps(This,Index,pReturn) \ + (This)->lpVtbl -> GetCaps(This,Index,pReturn) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IRenderEngine_SetTimelineObject_Proxy( + IRenderEngine * This, + IAMTimeline *pTimeline); + + +void __RPC_STUB IRenderEngine_SetTimelineObject_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IRenderEngine_GetTimelineObject_Proxy( + IRenderEngine * This, + /* [out] */ IAMTimeline **ppTimeline); + + +void __RPC_STUB IRenderEngine_GetTimelineObject_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IRenderEngine_GetFilterGraph_Proxy( + IRenderEngine * This, + /* [out] */ IGraphBuilder **ppFG); + + +void __RPC_STUB IRenderEngine_GetFilterGraph_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IRenderEngine_SetFilterGraph_Proxy( + IRenderEngine * This, + IGraphBuilder *pFG); + + +void __RPC_STUB IRenderEngine_SetFilterGraph_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IRenderEngine_SetInterestRange_Proxy( + IRenderEngine * This, + REFERENCE_TIME Start, + REFERENCE_TIME Stop); + + +void __RPC_STUB IRenderEngine_SetInterestRange_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IRenderEngine_SetInterestRange2_Proxy( + IRenderEngine * This, + double Start, + double Stop); + + +void __RPC_STUB IRenderEngine_SetInterestRange2_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IRenderEngine_SetRenderRange_Proxy( + IRenderEngine * This, + REFERENCE_TIME Start, + REFERENCE_TIME Stop); + + +void __RPC_STUB IRenderEngine_SetRenderRange_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IRenderEngine_SetRenderRange2_Proxy( + IRenderEngine * This, + double Start, + double Stop); + + +void __RPC_STUB IRenderEngine_SetRenderRange2_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IRenderEngine_GetGroupOutputPin_Proxy( + IRenderEngine * This, + long Group, + /* [out] */ IPin **ppRenderPin); + + +void __RPC_STUB IRenderEngine_GetGroupOutputPin_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IRenderEngine_ScrapIt_Proxy( + IRenderEngine * This); + + +void __RPC_STUB IRenderEngine_ScrapIt_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IRenderEngine_RenderOutputPins_Proxy( + IRenderEngine * This); + + +void __RPC_STUB IRenderEngine_RenderOutputPins_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IRenderEngine_GetVendorString_Proxy( + IRenderEngine * This, + /* [retval][out] */ BSTR *pVendorID); + + +void __RPC_STUB IRenderEngine_GetVendorString_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IRenderEngine_ConnectFrontEnd_Proxy( + IRenderEngine * This); + + +void __RPC_STUB IRenderEngine_ConnectFrontEnd_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IRenderEngine_SetSourceConnectCallback_Proxy( + IRenderEngine * This, + IGrfCache *pCallback); + + +void __RPC_STUB IRenderEngine_SetSourceConnectCallback_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IRenderEngine_SetDynamicReconnectLevel_Proxy( + IRenderEngine * This, + long Level); + + +void __RPC_STUB IRenderEngine_SetDynamicReconnectLevel_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IRenderEngine_DoSmartRecompression_Proxy( + IRenderEngine * This); + + +void __RPC_STUB IRenderEngine_DoSmartRecompression_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IRenderEngine_UseInSmartRecompressionGraph_Proxy( + IRenderEngine * This); + + +void __RPC_STUB IRenderEngine_UseInSmartRecompressionGraph_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IRenderEngine_SetSourceNameValidation_Proxy( + IRenderEngine * This, + BSTR FilterString, + IMediaLocator *pOverride, + LONG Flags); + + +void __RPC_STUB IRenderEngine_SetSourceNameValidation_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IRenderEngine_Commit_Proxy( + IRenderEngine * This); + + +void __RPC_STUB IRenderEngine_Commit_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IRenderEngine_Decommit_Proxy( + IRenderEngine * This); + + +void __RPC_STUB IRenderEngine_Decommit_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IRenderEngine_GetCaps_Proxy( + IRenderEngine * This, + long Index, + long *pReturn); + + +void __RPC_STUB IRenderEngine_GetCaps_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IRenderEngine_INTERFACE_DEFINED__ */ + + +#ifndef __IRenderEngine2_INTERFACE_DEFINED__ +#define __IRenderEngine2_INTERFACE_DEFINED__ + +/* interface IRenderEngine2 */ +/* [unique][helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IRenderEngine2; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("6BEE3A82-66C9-11d2-918F-00C0DF10D434") + IRenderEngine2 : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE SetResizerGUID( + GUID ResizerGuid) = 0; + + }; + +#else /* C style interface */ + + typedef struct IRenderEngine2Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IRenderEngine2 * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IRenderEngine2 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IRenderEngine2 * This); + + HRESULT ( STDMETHODCALLTYPE *SetResizerGUID )( + IRenderEngine2 * This, + GUID ResizerGuid); + + END_INTERFACE + } IRenderEngine2Vtbl; + + interface IRenderEngine2 + { + CONST_VTBL struct IRenderEngine2Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IRenderEngine2_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IRenderEngine2_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IRenderEngine2_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IRenderEngine2_SetResizerGUID(This,ResizerGuid) \ + (This)->lpVtbl -> SetResizerGUID(This,ResizerGuid) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IRenderEngine2_SetResizerGUID_Proxy( + IRenderEngine2 * This, + GUID ResizerGuid); + + +void __RPC_STUB IRenderEngine2_SetResizerGUID_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IRenderEngine2_INTERFACE_DEFINED__ */ + + +#ifndef __IFindCompressorCB_INTERFACE_DEFINED__ +#define __IFindCompressorCB_INTERFACE_DEFINED__ + +/* interface IFindCompressorCB */ +/* [unique][helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IFindCompressorCB; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("F03FA8DE-879A-4d59-9B2C-26BB1CF83461") + IFindCompressorCB : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE GetCompressor( + AM_MEDIA_TYPE *pType, + AM_MEDIA_TYPE *pCompType, + /* [out] */ IBaseFilter **ppFilter) = 0; + + }; + +#else /* C style interface */ + + typedef struct IFindCompressorCBVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IFindCompressorCB * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IFindCompressorCB * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IFindCompressorCB * This); + + HRESULT ( STDMETHODCALLTYPE *GetCompressor )( + IFindCompressorCB * This, + AM_MEDIA_TYPE *pType, + AM_MEDIA_TYPE *pCompType, + /* [out] */ IBaseFilter **ppFilter); + + END_INTERFACE + } IFindCompressorCBVtbl; + + interface IFindCompressorCB + { + CONST_VTBL struct IFindCompressorCBVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IFindCompressorCB_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IFindCompressorCB_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IFindCompressorCB_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IFindCompressorCB_GetCompressor(This,pType,pCompType,ppFilter) \ + (This)->lpVtbl -> GetCompressor(This,pType,pCompType,ppFilter) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IFindCompressorCB_GetCompressor_Proxy( + IFindCompressorCB * This, + AM_MEDIA_TYPE *pType, + AM_MEDIA_TYPE *pCompType, + /* [out] */ IBaseFilter **ppFilter); + + +void __RPC_STUB IFindCompressorCB_GetCompressor_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IFindCompressorCB_INTERFACE_DEFINED__ */ + + +#ifndef __ISmartRenderEngine_INTERFACE_DEFINED__ +#define __ISmartRenderEngine_INTERFACE_DEFINED__ + +/* interface ISmartRenderEngine */ +/* [unique][helpstring][uuid][object] */ + + +EXTERN_C const IID IID_ISmartRenderEngine; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("F03FA8CE-879A-4d59-9B2C-26BB1CF83461") + ISmartRenderEngine : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE SetGroupCompressor( + long Group, + IBaseFilter *pCompressor) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetGroupCompressor( + long Group, + IBaseFilter **pCompressor) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetFindCompressorCB( + IFindCompressorCB *pCallback) = 0; + + }; + +#else /* C style interface */ + + typedef struct ISmartRenderEngineVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ISmartRenderEngine * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ISmartRenderEngine * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ISmartRenderEngine * This); + + HRESULT ( STDMETHODCALLTYPE *SetGroupCompressor )( + ISmartRenderEngine * This, + long Group, + IBaseFilter *pCompressor); + + HRESULT ( STDMETHODCALLTYPE *GetGroupCompressor )( + ISmartRenderEngine * This, + long Group, + IBaseFilter **pCompressor); + + HRESULT ( STDMETHODCALLTYPE *SetFindCompressorCB )( + ISmartRenderEngine * This, + IFindCompressorCB *pCallback); + + END_INTERFACE + } ISmartRenderEngineVtbl; + + interface ISmartRenderEngine + { + CONST_VTBL struct ISmartRenderEngineVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ISmartRenderEngine_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define ISmartRenderEngine_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define ISmartRenderEngine_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define ISmartRenderEngine_SetGroupCompressor(This,Group,pCompressor) \ + (This)->lpVtbl -> SetGroupCompressor(This,Group,pCompressor) + +#define ISmartRenderEngine_GetGroupCompressor(This,Group,pCompressor) \ + (This)->lpVtbl -> GetGroupCompressor(This,Group,pCompressor) + +#define ISmartRenderEngine_SetFindCompressorCB(This,pCallback) \ + (This)->lpVtbl -> SetFindCompressorCB(This,pCallback) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE ISmartRenderEngine_SetGroupCompressor_Proxy( + ISmartRenderEngine * This, + long Group, + IBaseFilter *pCompressor); + + +void __RPC_STUB ISmartRenderEngine_SetGroupCompressor_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ISmartRenderEngine_GetGroupCompressor_Proxy( + ISmartRenderEngine * This, + long Group, + IBaseFilter **pCompressor); + + +void __RPC_STUB ISmartRenderEngine_GetGroupCompressor_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ISmartRenderEngine_SetFindCompressorCB_Proxy( + ISmartRenderEngine * This, + IFindCompressorCB *pCallback); + + +void __RPC_STUB ISmartRenderEngine_SetFindCompressorCB_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __ISmartRenderEngine_INTERFACE_DEFINED__ */ + + +#ifndef __IAMTimelineObj_INTERFACE_DEFINED__ +#define __IAMTimelineObj_INTERFACE_DEFINED__ + +/* interface IAMTimelineObj */ +/* [unique][helpstring][uuid][local][object] */ + + +EXTERN_C const IID IID_IAMTimelineObj; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("78530B77-61F9-11D2-8CAD-00A024580902") + IAMTimelineObj : public IUnknown + { + public: + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetStartStop( + REFERENCE_TIME *pStart, + REFERENCE_TIME *pStop) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetStartStop2( + REFTIME *pStart, + REFTIME *pStop) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE FixTimes( + REFERENCE_TIME *pStart, + REFERENCE_TIME *pStop) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE FixTimes2( + REFTIME *pStart, + REFTIME *pStop) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetStartStop( + REFERENCE_TIME Start, + REFERENCE_TIME Stop) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetStartStop2( + REFTIME Start, + REFTIME Stop) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetPropertySetter( + /* [retval][out] */ IPropertySetter **pVal) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetPropertySetter( + IPropertySetter *newVal) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetSubObject( + /* [retval][out] */ IUnknown **pVal) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetSubObject( + IUnknown *newVal) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetSubObjectGUID( + GUID newVal) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetSubObjectGUIDB( + BSTR newVal) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetSubObjectGUID( + GUID *pVal) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetSubObjectGUIDB( + /* [retval][out] */ BSTR *pVal) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetSubObjectLoaded( + BOOL *pVal) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetTimelineType( + TIMELINE_MAJOR_TYPE *pVal) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetTimelineType( + TIMELINE_MAJOR_TYPE newVal) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetUserID( + long *pVal) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetUserID( + long newVal) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetGenID( + long *pVal) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetUserName( + /* [retval][out] */ BSTR *pVal) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetUserName( + BSTR newVal) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetUserData( + BYTE *pData, + long *pSize) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetUserData( + BYTE *pData, + long Size) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetMuted( + BOOL *pVal) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetMuted( + BOOL newVal) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetLocked( + BOOL *pVal) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetLocked( + BOOL newVal) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetDirtyRange( + REFERENCE_TIME *pStart, + REFERENCE_TIME *pStop) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetDirtyRange2( + REFTIME *pStart, + REFTIME *pStop) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetDirtyRange( + REFERENCE_TIME Start, + REFERENCE_TIME Stop) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetDirtyRange2( + REFTIME Start, + REFTIME Stop) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE ClearDirty( void) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE Remove( void) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE RemoveAll( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetTimelineNoRef( + IAMTimeline **ppResult) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetGroupIBelongTo( + /* [out] */ IAMTimelineGroup **ppGroup) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetEmbedDepth( + long *pVal) = 0; + + }; + +#else /* C style interface */ + + typedef struct IAMTimelineObjVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IAMTimelineObj * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IAMTimelineObj * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IAMTimelineObj * This); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetStartStop )( + IAMTimelineObj * This, + REFERENCE_TIME *pStart, + REFERENCE_TIME *pStop); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetStartStop2 )( + IAMTimelineObj * This, + REFTIME *pStart, + REFTIME *pStop); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *FixTimes )( + IAMTimelineObj * This, + REFERENCE_TIME *pStart, + REFERENCE_TIME *pStop); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *FixTimes2 )( + IAMTimelineObj * This, + REFTIME *pStart, + REFTIME *pStop); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetStartStop )( + IAMTimelineObj * This, + REFERENCE_TIME Start, + REFERENCE_TIME Stop); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetStartStop2 )( + IAMTimelineObj * This, + REFTIME Start, + REFTIME Stop); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetPropertySetter )( + IAMTimelineObj * This, + /* [retval][out] */ IPropertySetter **pVal); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetPropertySetter )( + IAMTimelineObj * This, + IPropertySetter *newVal); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetSubObject )( + IAMTimelineObj * This, + /* [retval][out] */ IUnknown **pVal); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetSubObject )( + IAMTimelineObj * This, + IUnknown *newVal); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetSubObjectGUID )( + IAMTimelineObj * This, + GUID newVal); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetSubObjectGUIDB )( + IAMTimelineObj * This, + BSTR newVal); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetSubObjectGUID )( + IAMTimelineObj * This, + GUID *pVal); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetSubObjectGUIDB )( + IAMTimelineObj * This, + /* [retval][out] */ BSTR *pVal); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetSubObjectLoaded )( + IAMTimelineObj * This, + BOOL *pVal); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetTimelineType )( + IAMTimelineObj * This, + TIMELINE_MAJOR_TYPE *pVal); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetTimelineType )( + IAMTimelineObj * This, + TIMELINE_MAJOR_TYPE newVal); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetUserID )( + IAMTimelineObj * This, + long *pVal); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetUserID )( + IAMTimelineObj * This, + long newVal); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetGenID )( + IAMTimelineObj * This, + long *pVal); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetUserName )( + IAMTimelineObj * This, + /* [retval][out] */ BSTR *pVal); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetUserName )( + IAMTimelineObj * This, + BSTR newVal); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetUserData )( + IAMTimelineObj * This, + BYTE *pData, + long *pSize); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetUserData )( + IAMTimelineObj * This, + BYTE *pData, + long Size); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetMuted )( + IAMTimelineObj * This, + BOOL *pVal); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetMuted )( + IAMTimelineObj * This, + BOOL newVal); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetLocked )( + IAMTimelineObj * This, + BOOL *pVal); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetLocked )( + IAMTimelineObj * This, + BOOL newVal); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetDirtyRange )( + IAMTimelineObj * This, + REFERENCE_TIME *pStart, + REFERENCE_TIME *pStop); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetDirtyRange2 )( + IAMTimelineObj * This, + REFTIME *pStart, + REFTIME *pStop); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetDirtyRange )( + IAMTimelineObj * This, + REFERENCE_TIME Start, + REFERENCE_TIME Stop); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetDirtyRange2 )( + IAMTimelineObj * This, + REFTIME Start, + REFTIME Stop); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *ClearDirty )( + IAMTimelineObj * This); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *Remove )( + IAMTimelineObj * This); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *RemoveAll )( + IAMTimelineObj * This); + + HRESULT ( STDMETHODCALLTYPE *GetTimelineNoRef )( + IAMTimelineObj * This, + IAMTimeline **ppResult); + + HRESULT ( STDMETHODCALLTYPE *GetGroupIBelongTo )( + IAMTimelineObj * This, + /* [out] */ IAMTimelineGroup **ppGroup); + + HRESULT ( STDMETHODCALLTYPE *GetEmbedDepth )( + IAMTimelineObj * This, + long *pVal); + + END_INTERFACE + } IAMTimelineObjVtbl; + + interface IAMTimelineObj + { + CONST_VTBL struct IAMTimelineObjVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IAMTimelineObj_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IAMTimelineObj_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IAMTimelineObj_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IAMTimelineObj_GetStartStop(This,pStart,pStop) \ + (This)->lpVtbl -> GetStartStop(This,pStart,pStop) + +#define IAMTimelineObj_GetStartStop2(This,pStart,pStop) \ + (This)->lpVtbl -> GetStartStop2(This,pStart,pStop) + +#define IAMTimelineObj_FixTimes(This,pStart,pStop) \ + (This)->lpVtbl -> FixTimes(This,pStart,pStop) + +#define IAMTimelineObj_FixTimes2(This,pStart,pStop) \ + (This)->lpVtbl -> FixTimes2(This,pStart,pStop) + +#define IAMTimelineObj_SetStartStop(This,Start,Stop) \ + (This)->lpVtbl -> SetStartStop(This,Start,Stop) + +#define IAMTimelineObj_SetStartStop2(This,Start,Stop) \ + (This)->lpVtbl -> SetStartStop2(This,Start,Stop) + +#define IAMTimelineObj_GetPropertySetter(This,pVal) \ + (This)->lpVtbl -> GetPropertySetter(This,pVal) + +#define IAMTimelineObj_SetPropertySetter(This,newVal) \ + (This)->lpVtbl -> SetPropertySetter(This,newVal) + +#define IAMTimelineObj_GetSubObject(This,pVal) \ + (This)->lpVtbl -> GetSubObject(This,pVal) + +#define IAMTimelineObj_SetSubObject(This,newVal) \ + (This)->lpVtbl -> SetSubObject(This,newVal) + +#define IAMTimelineObj_SetSubObjectGUID(This,newVal) \ + (This)->lpVtbl -> SetSubObjectGUID(This,newVal) + +#define IAMTimelineObj_SetSubObjectGUIDB(This,newVal) \ + (This)->lpVtbl -> SetSubObjectGUIDB(This,newVal) + +#define IAMTimelineObj_GetSubObjectGUID(This,pVal) \ + (This)->lpVtbl -> GetSubObjectGUID(This,pVal) + +#define IAMTimelineObj_GetSubObjectGUIDB(This,pVal) \ + (This)->lpVtbl -> GetSubObjectGUIDB(This,pVal) + +#define IAMTimelineObj_GetSubObjectLoaded(This,pVal) \ + (This)->lpVtbl -> GetSubObjectLoaded(This,pVal) + +#define IAMTimelineObj_GetTimelineType(This,pVal) \ + (This)->lpVtbl -> GetTimelineType(This,pVal) + +#define IAMTimelineObj_SetTimelineType(This,newVal) \ + (This)->lpVtbl -> SetTimelineType(This,newVal) + +#define IAMTimelineObj_GetUserID(This,pVal) \ + (This)->lpVtbl -> GetUserID(This,pVal) + +#define IAMTimelineObj_SetUserID(This,newVal) \ + (This)->lpVtbl -> SetUserID(This,newVal) + +#define IAMTimelineObj_GetGenID(This,pVal) \ + (This)->lpVtbl -> GetGenID(This,pVal) + +#define IAMTimelineObj_GetUserName(This,pVal) \ + (This)->lpVtbl -> GetUserName(This,pVal) + +#define IAMTimelineObj_SetUserName(This,newVal) \ + (This)->lpVtbl -> SetUserName(This,newVal) + +#define IAMTimelineObj_GetUserData(This,pData,pSize) \ + (This)->lpVtbl -> GetUserData(This,pData,pSize) + +#define IAMTimelineObj_SetUserData(This,pData,Size) \ + (This)->lpVtbl -> SetUserData(This,pData,Size) + +#define IAMTimelineObj_GetMuted(This,pVal) \ + (This)->lpVtbl -> GetMuted(This,pVal) + +#define IAMTimelineObj_SetMuted(This,newVal) \ + (This)->lpVtbl -> SetMuted(This,newVal) + +#define IAMTimelineObj_GetLocked(This,pVal) \ + (This)->lpVtbl -> GetLocked(This,pVal) + +#define IAMTimelineObj_SetLocked(This,newVal) \ + (This)->lpVtbl -> SetLocked(This,newVal) + +#define IAMTimelineObj_GetDirtyRange(This,pStart,pStop) \ + (This)->lpVtbl -> GetDirtyRange(This,pStart,pStop) + +#define IAMTimelineObj_GetDirtyRange2(This,pStart,pStop) \ + (This)->lpVtbl -> GetDirtyRange2(This,pStart,pStop) + +#define IAMTimelineObj_SetDirtyRange(This,Start,Stop) \ + (This)->lpVtbl -> SetDirtyRange(This,Start,Stop) + +#define IAMTimelineObj_SetDirtyRange2(This,Start,Stop) \ + (This)->lpVtbl -> SetDirtyRange2(This,Start,Stop) + +#define IAMTimelineObj_ClearDirty(This) \ + (This)->lpVtbl -> ClearDirty(This) + +#define IAMTimelineObj_Remove(This) \ + (This)->lpVtbl -> Remove(This) + +#define IAMTimelineObj_RemoveAll(This) \ + (This)->lpVtbl -> RemoveAll(This) + +#define IAMTimelineObj_GetTimelineNoRef(This,ppResult) \ + (This)->lpVtbl -> GetTimelineNoRef(This,ppResult) + +#define IAMTimelineObj_GetGroupIBelongTo(This,ppGroup) \ + (This)->lpVtbl -> GetGroupIBelongTo(This,ppGroup) + +#define IAMTimelineObj_GetEmbedDepth(This,pVal) \ + (This)->lpVtbl -> GetEmbedDepth(This,pVal) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineObj_GetStartStop_Proxy( + IAMTimelineObj * This, + REFERENCE_TIME *pStart, + REFERENCE_TIME *pStop); + + +void __RPC_STUB IAMTimelineObj_GetStartStop_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineObj_GetStartStop2_Proxy( + IAMTimelineObj * This, + REFTIME *pStart, + REFTIME *pStop); + + +void __RPC_STUB IAMTimelineObj_GetStartStop2_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineObj_FixTimes_Proxy( + IAMTimelineObj * This, + REFERENCE_TIME *pStart, + REFERENCE_TIME *pStop); + + +void __RPC_STUB IAMTimelineObj_FixTimes_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineObj_FixTimes2_Proxy( + IAMTimelineObj * This, + REFTIME *pStart, + REFTIME *pStop); + + +void __RPC_STUB IAMTimelineObj_FixTimes2_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineObj_SetStartStop_Proxy( + IAMTimelineObj * This, + REFERENCE_TIME Start, + REFERENCE_TIME Stop); + + +void __RPC_STUB IAMTimelineObj_SetStartStop_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineObj_SetStartStop2_Proxy( + IAMTimelineObj * This, + REFTIME Start, + REFTIME Stop); + + +void __RPC_STUB IAMTimelineObj_SetStartStop2_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineObj_GetPropertySetter_Proxy( + IAMTimelineObj * This, + /* [retval][out] */ IPropertySetter **pVal); + + +void __RPC_STUB IAMTimelineObj_GetPropertySetter_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineObj_SetPropertySetter_Proxy( + IAMTimelineObj * This, + IPropertySetter *newVal); + + +void __RPC_STUB IAMTimelineObj_SetPropertySetter_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineObj_GetSubObject_Proxy( + IAMTimelineObj * This, + /* [retval][out] */ IUnknown **pVal); + + +void __RPC_STUB IAMTimelineObj_GetSubObject_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineObj_SetSubObject_Proxy( + IAMTimelineObj * This, + IUnknown *newVal); + + +void __RPC_STUB IAMTimelineObj_SetSubObject_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineObj_SetSubObjectGUID_Proxy( + IAMTimelineObj * This, + GUID newVal); + + +void __RPC_STUB IAMTimelineObj_SetSubObjectGUID_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineObj_SetSubObjectGUIDB_Proxy( + IAMTimelineObj * This, + BSTR newVal); + + +void __RPC_STUB IAMTimelineObj_SetSubObjectGUIDB_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineObj_GetSubObjectGUID_Proxy( + IAMTimelineObj * This, + GUID *pVal); + + +void __RPC_STUB IAMTimelineObj_GetSubObjectGUID_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineObj_GetSubObjectGUIDB_Proxy( + IAMTimelineObj * This, + /* [retval][out] */ BSTR *pVal); + + +void __RPC_STUB IAMTimelineObj_GetSubObjectGUIDB_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineObj_GetSubObjectLoaded_Proxy( + IAMTimelineObj * This, + BOOL *pVal); + + +void __RPC_STUB IAMTimelineObj_GetSubObjectLoaded_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineObj_GetTimelineType_Proxy( + IAMTimelineObj * This, + TIMELINE_MAJOR_TYPE *pVal); + + +void __RPC_STUB IAMTimelineObj_GetTimelineType_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineObj_SetTimelineType_Proxy( + IAMTimelineObj * This, + TIMELINE_MAJOR_TYPE newVal); + + +void __RPC_STUB IAMTimelineObj_SetTimelineType_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineObj_GetUserID_Proxy( + IAMTimelineObj * This, + long *pVal); + + +void __RPC_STUB IAMTimelineObj_GetUserID_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineObj_SetUserID_Proxy( + IAMTimelineObj * This, + long newVal); + + +void __RPC_STUB IAMTimelineObj_SetUserID_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineObj_GetGenID_Proxy( + IAMTimelineObj * This, + long *pVal); + + +void __RPC_STUB IAMTimelineObj_GetGenID_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineObj_GetUserName_Proxy( + IAMTimelineObj * This, + /* [retval][out] */ BSTR *pVal); + + +void __RPC_STUB IAMTimelineObj_GetUserName_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineObj_SetUserName_Proxy( + IAMTimelineObj * This, + BSTR newVal); + + +void __RPC_STUB IAMTimelineObj_SetUserName_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineObj_GetUserData_Proxy( + IAMTimelineObj * This, + BYTE *pData, + long *pSize); + + +void __RPC_STUB IAMTimelineObj_GetUserData_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineObj_SetUserData_Proxy( + IAMTimelineObj * This, + BYTE *pData, + long Size); + + +void __RPC_STUB IAMTimelineObj_SetUserData_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineObj_GetMuted_Proxy( + IAMTimelineObj * This, + BOOL *pVal); + + +void __RPC_STUB IAMTimelineObj_GetMuted_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineObj_SetMuted_Proxy( + IAMTimelineObj * This, + BOOL newVal); + + +void __RPC_STUB IAMTimelineObj_SetMuted_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineObj_GetLocked_Proxy( + IAMTimelineObj * This, + BOOL *pVal); + + +void __RPC_STUB IAMTimelineObj_GetLocked_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineObj_SetLocked_Proxy( + IAMTimelineObj * This, + BOOL newVal); + + +void __RPC_STUB IAMTimelineObj_SetLocked_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineObj_GetDirtyRange_Proxy( + IAMTimelineObj * This, + REFERENCE_TIME *pStart, + REFERENCE_TIME *pStop); + + +void __RPC_STUB IAMTimelineObj_GetDirtyRange_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineObj_GetDirtyRange2_Proxy( + IAMTimelineObj * This, + REFTIME *pStart, + REFTIME *pStop); + + +void __RPC_STUB IAMTimelineObj_GetDirtyRange2_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineObj_SetDirtyRange_Proxy( + IAMTimelineObj * This, + REFERENCE_TIME Start, + REFERENCE_TIME Stop); + + +void __RPC_STUB IAMTimelineObj_SetDirtyRange_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineObj_SetDirtyRange2_Proxy( + IAMTimelineObj * This, + REFTIME Start, + REFTIME Stop); + + +void __RPC_STUB IAMTimelineObj_SetDirtyRange2_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineObj_ClearDirty_Proxy( + IAMTimelineObj * This); + + +void __RPC_STUB IAMTimelineObj_ClearDirty_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineObj_Remove_Proxy( + IAMTimelineObj * This); + + +void __RPC_STUB IAMTimelineObj_Remove_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineObj_RemoveAll_Proxy( + IAMTimelineObj * This); + + +void __RPC_STUB IAMTimelineObj_RemoveAll_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IAMTimelineObj_GetTimelineNoRef_Proxy( + IAMTimelineObj * This, + IAMTimeline **ppResult); + + +void __RPC_STUB IAMTimelineObj_GetTimelineNoRef_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IAMTimelineObj_GetGroupIBelongTo_Proxy( + IAMTimelineObj * This, + /* [out] */ IAMTimelineGroup **ppGroup); + + +void __RPC_STUB IAMTimelineObj_GetGroupIBelongTo_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IAMTimelineObj_GetEmbedDepth_Proxy( + IAMTimelineObj * This, + long *pVal); + + +void __RPC_STUB IAMTimelineObj_GetEmbedDepth_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IAMTimelineObj_INTERFACE_DEFINED__ */ + + +#ifndef __IAMTimelineEffectable_INTERFACE_DEFINED__ +#define __IAMTimelineEffectable_INTERFACE_DEFINED__ + +/* interface IAMTimelineEffectable */ +/* [unique][helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IAMTimelineEffectable; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("EAE58537-622E-11d2-8CAD-00A024580902") + IAMTimelineEffectable : public IUnknown + { + public: + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE EffectInsBefore( + IAMTimelineObj *pFX, + long priority) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE EffectSwapPriorities( + long PriorityA, + long PriorityB) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE EffectGetCount( + long *pCount) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetEffect( + /* [out] */ IAMTimelineObj **ppFx, + long Which) = 0; + + }; + +#else /* C style interface */ + + typedef struct IAMTimelineEffectableVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IAMTimelineEffectable * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IAMTimelineEffectable * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IAMTimelineEffectable * This); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *EffectInsBefore )( + IAMTimelineEffectable * This, + IAMTimelineObj *pFX, + long priority); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *EffectSwapPriorities )( + IAMTimelineEffectable * This, + long PriorityA, + long PriorityB); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *EffectGetCount )( + IAMTimelineEffectable * This, + long *pCount); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetEffect )( + IAMTimelineEffectable * This, + /* [out] */ IAMTimelineObj **ppFx, + long Which); + + END_INTERFACE + } IAMTimelineEffectableVtbl; + + interface IAMTimelineEffectable + { + CONST_VTBL struct IAMTimelineEffectableVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IAMTimelineEffectable_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IAMTimelineEffectable_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IAMTimelineEffectable_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IAMTimelineEffectable_EffectInsBefore(This,pFX,priority) \ + (This)->lpVtbl -> EffectInsBefore(This,pFX,priority) + +#define IAMTimelineEffectable_EffectSwapPriorities(This,PriorityA,PriorityB) \ + (This)->lpVtbl -> EffectSwapPriorities(This,PriorityA,PriorityB) + +#define IAMTimelineEffectable_EffectGetCount(This,pCount) \ + (This)->lpVtbl -> EffectGetCount(This,pCount) + +#define IAMTimelineEffectable_GetEffect(This,ppFx,Which) \ + (This)->lpVtbl -> GetEffect(This,ppFx,Which) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineEffectable_EffectInsBefore_Proxy( + IAMTimelineEffectable * This, + IAMTimelineObj *pFX, + long priority); + + +void __RPC_STUB IAMTimelineEffectable_EffectInsBefore_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineEffectable_EffectSwapPriorities_Proxy( + IAMTimelineEffectable * This, + long PriorityA, + long PriorityB); + + +void __RPC_STUB IAMTimelineEffectable_EffectSwapPriorities_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineEffectable_EffectGetCount_Proxy( + IAMTimelineEffectable * This, + long *pCount); + + +void __RPC_STUB IAMTimelineEffectable_EffectGetCount_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineEffectable_GetEffect_Proxy( + IAMTimelineEffectable * This, + /* [out] */ IAMTimelineObj **ppFx, + long Which); + + +void __RPC_STUB IAMTimelineEffectable_GetEffect_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IAMTimelineEffectable_INTERFACE_DEFINED__ */ + + +#ifndef __IAMTimelineEffect_INTERFACE_DEFINED__ +#define __IAMTimelineEffect_INTERFACE_DEFINED__ + +/* interface IAMTimelineEffect */ +/* [unique][helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IAMTimelineEffect; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("BCE0C264-622D-11d2-8CAD-00A024580902") + IAMTimelineEffect : public IUnknown + { + public: + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE EffectGetPriority( + long *pVal) = 0; + + }; + +#else /* C style interface */ + + typedef struct IAMTimelineEffectVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IAMTimelineEffect * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IAMTimelineEffect * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IAMTimelineEffect * This); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *EffectGetPriority )( + IAMTimelineEffect * This, + long *pVal); + + END_INTERFACE + } IAMTimelineEffectVtbl; + + interface IAMTimelineEffect + { + CONST_VTBL struct IAMTimelineEffectVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IAMTimelineEffect_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IAMTimelineEffect_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IAMTimelineEffect_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IAMTimelineEffect_EffectGetPriority(This,pVal) \ + (This)->lpVtbl -> EffectGetPriority(This,pVal) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineEffect_EffectGetPriority_Proxy( + IAMTimelineEffect * This, + long *pVal); + + +void __RPC_STUB IAMTimelineEffect_EffectGetPriority_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IAMTimelineEffect_INTERFACE_DEFINED__ */ + + +#ifndef __IAMTimelineTransable_INTERFACE_DEFINED__ +#define __IAMTimelineTransable_INTERFACE_DEFINED__ + +/* interface IAMTimelineTransable */ +/* [unique][helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IAMTimelineTransable; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("378FA386-622E-11d2-8CAD-00A024580902") + IAMTimelineTransable : public IUnknown + { + public: + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE TransAdd( + IAMTimelineObj *pTrans) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE TransGetCount( + long *pCount) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetNextTrans( + /* [out] */ IAMTimelineObj **ppTrans, + REFERENCE_TIME *pInOut) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetNextTrans2( + /* [out] */ IAMTimelineObj **ppTrans, + REFTIME *pInOut) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetTransAtTime( + /* [out] */ IAMTimelineObj **ppObj, + REFERENCE_TIME Time, + long SearchDirection) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetTransAtTime2( + /* [out] */ IAMTimelineObj **ppObj, + REFTIME Time, + long SearchDirection) = 0; + + }; + +#else /* C style interface */ + + typedef struct IAMTimelineTransableVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IAMTimelineTransable * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IAMTimelineTransable * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IAMTimelineTransable * This); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *TransAdd )( + IAMTimelineTransable * This, + IAMTimelineObj *pTrans); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *TransGetCount )( + IAMTimelineTransable * This, + long *pCount); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetNextTrans )( + IAMTimelineTransable * This, + /* [out] */ IAMTimelineObj **ppTrans, + REFERENCE_TIME *pInOut); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetNextTrans2 )( + IAMTimelineTransable * This, + /* [out] */ IAMTimelineObj **ppTrans, + REFTIME *pInOut); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetTransAtTime )( + IAMTimelineTransable * This, + /* [out] */ IAMTimelineObj **ppObj, + REFERENCE_TIME Time, + long SearchDirection); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetTransAtTime2 )( + IAMTimelineTransable * This, + /* [out] */ IAMTimelineObj **ppObj, + REFTIME Time, + long SearchDirection); + + END_INTERFACE + } IAMTimelineTransableVtbl; + + interface IAMTimelineTransable + { + CONST_VTBL struct IAMTimelineTransableVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IAMTimelineTransable_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IAMTimelineTransable_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IAMTimelineTransable_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IAMTimelineTransable_TransAdd(This,pTrans) \ + (This)->lpVtbl -> TransAdd(This,pTrans) + +#define IAMTimelineTransable_TransGetCount(This,pCount) \ + (This)->lpVtbl -> TransGetCount(This,pCount) + +#define IAMTimelineTransable_GetNextTrans(This,ppTrans,pInOut) \ + (This)->lpVtbl -> GetNextTrans(This,ppTrans,pInOut) + +#define IAMTimelineTransable_GetNextTrans2(This,ppTrans,pInOut) \ + (This)->lpVtbl -> GetNextTrans2(This,ppTrans,pInOut) + +#define IAMTimelineTransable_GetTransAtTime(This,ppObj,Time,SearchDirection) \ + (This)->lpVtbl -> GetTransAtTime(This,ppObj,Time,SearchDirection) + +#define IAMTimelineTransable_GetTransAtTime2(This,ppObj,Time,SearchDirection) \ + (This)->lpVtbl -> GetTransAtTime2(This,ppObj,Time,SearchDirection) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineTransable_TransAdd_Proxy( + IAMTimelineTransable * This, + IAMTimelineObj *pTrans); + + +void __RPC_STUB IAMTimelineTransable_TransAdd_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineTransable_TransGetCount_Proxy( + IAMTimelineTransable * This, + long *pCount); + + +void __RPC_STUB IAMTimelineTransable_TransGetCount_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineTransable_GetNextTrans_Proxy( + IAMTimelineTransable * This, + /* [out] */ IAMTimelineObj **ppTrans, + REFERENCE_TIME *pInOut); + + +void __RPC_STUB IAMTimelineTransable_GetNextTrans_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineTransable_GetNextTrans2_Proxy( + IAMTimelineTransable * This, + /* [out] */ IAMTimelineObj **ppTrans, + REFTIME *pInOut); + + +void __RPC_STUB IAMTimelineTransable_GetNextTrans2_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineTransable_GetTransAtTime_Proxy( + IAMTimelineTransable * This, + /* [out] */ IAMTimelineObj **ppObj, + REFERENCE_TIME Time, + long SearchDirection); + + +void __RPC_STUB IAMTimelineTransable_GetTransAtTime_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineTransable_GetTransAtTime2_Proxy( + IAMTimelineTransable * This, + /* [out] */ IAMTimelineObj **ppObj, + REFTIME Time, + long SearchDirection); + + +void __RPC_STUB IAMTimelineTransable_GetTransAtTime2_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IAMTimelineTransable_INTERFACE_DEFINED__ */ + + +#ifndef __IAMTimelineSplittable_INTERFACE_DEFINED__ +#define __IAMTimelineSplittable_INTERFACE_DEFINED__ + +/* interface IAMTimelineSplittable */ +/* [unique][helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IAMTimelineSplittable; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("A0F840A0-D590-11d2-8D55-00A0C9441E20") + IAMTimelineSplittable : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE SplitAt( + REFERENCE_TIME Time) = 0; + + virtual HRESULT STDMETHODCALLTYPE SplitAt2( + REFTIME Time) = 0; + + }; + +#else /* C style interface */ + + typedef struct IAMTimelineSplittableVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IAMTimelineSplittable * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IAMTimelineSplittable * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IAMTimelineSplittable * This); + + HRESULT ( STDMETHODCALLTYPE *SplitAt )( + IAMTimelineSplittable * This, + REFERENCE_TIME Time); + + HRESULT ( STDMETHODCALLTYPE *SplitAt2 )( + IAMTimelineSplittable * This, + REFTIME Time); + + END_INTERFACE + } IAMTimelineSplittableVtbl; + + interface IAMTimelineSplittable + { + CONST_VTBL struct IAMTimelineSplittableVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IAMTimelineSplittable_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IAMTimelineSplittable_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IAMTimelineSplittable_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IAMTimelineSplittable_SplitAt(This,Time) \ + (This)->lpVtbl -> SplitAt(This,Time) + +#define IAMTimelineSplittable_SplitAt2(This,Time) \ + (This)->lpVtbl -> SplitAt2(This,Time) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IAMTimelineSplittable_SplitAt_Proxy( + IAMTimelineSplittable * This, + REFERENCE_TIME Time); + + +void __RPC_STUB IAMTimelineSplittable_SplitAt_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IAMTimelineSplittable_SplitAt2_Proxy( + IAMTimelineSplittable * This, + REFTIME Time); + + +void __RPC_STUB IAMTimelineSplittable_SplitAt2_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IAMTimelineSplittable_INTERFACE_DEFINED__ */ + + +#ifndef __IAMTimelineTrans_INTERFACE_DEFINED__ +#define __IAMTimelineTrans_INTERFACE_DEFINED__ + +/* interface IAMTimelineTrans */ +/* [unique][helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IAMTimelineTrans; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("BCE0C265-622D-11d2-8CAD-00A024580902") + IAMTimelineTrans : public IUnknown + { + public: + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetCutPoint( + REFERENCE_TIME *pTLTime) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetCutPoint2( + REFTIME *pTLTime) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetCutPoint( + REFERENCE_TIME TLTime) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetCutPoint2( + REFTIME TLTime) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetSwapInputs( + BOOL *pVal) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetSwapInputs( + BOOL pVal) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetCutsOnly( + BOOL *pVal) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetCutsOnly( + BOOL pVal) = 0; + + }; + +#else /* C style interface */ + + typedef struct IAMTimelineTransVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IAMTimelineTrans * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IAMTimelineTrans * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IAMTimelineTrans * This); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetCutPoint )( + IAMTimelineTrans * This, + REFERENCE_TIME *pTLTime); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetCutPoint2 )( + IAMTimelineTrans * This, + REFTIME *pTLTime); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetCutPoint )( + IAMTimelineTrans * This, + REFERENCE_TIME TLTime); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetCutPoint2 )( + IAMTimelineTrans * This, + REFTIME TLTime); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetSwapInputs )( + IAMTimelineTrans * This, + BOOL *pVal); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetSwapInputs )( + IAMTimelineTrans * This, + BOOL pVal); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetCutsOnly )( + IAMTimelineTrans * This, + BOOL *pVal); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetCutsOnly )( + IAMTimelineTrans * This, + BOOL pVal); + + END_INTERFACE + } IAMTimelineTransVtbl; + + interface IAMTimelineTrans + { + CONST_VTBL struct IAMTimelineTransVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IAMTimelineTrans_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IAMTimelineTrans_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IAMTimelineTrans_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IAMTimelineTrans_GetCutPoint(This,pTLTime) \ + (This)->lpVtbl -> GetCutPoint(This,pTLTime) + +#define IAMTimelineTrans_GetCutPoint2(This,pTLTime) \ + (This)->lpVtbl -> GetCutPoint2(This,pTLTime) + +#define IAMTimelineTrans_SetCutPoint(This,TLTime) \ + (This)->lpVtbl -> SetCutPoint(This,TLTime) + +#define IAMTimelineTrans_SetCutPoint2(This,TLTime) \ + (This)->lpVtbl -> SetCutPoint2(This,TLTime) + +#define IAMTimelineTrans_GetSwapInputs(This,pVal) \ + (This)->lpVtbl -> GetSwapInputs(This,pVal) + +#define IAMTimelineTrans_SetSwapInputs(This,pVal) \ + (This)->lpVtbl -> SetSwapInputs(This,pVal) + +#define IAMTimelineTrans_GetCutsOnly(This,pVal) \ + (This)->lpVtbl -> GetCutsOnly(This,pVal) + +#define IAMTimelineTrans_SetCutsOnly(This,pVal) \ + (This)->lpVtbl -> SetCutsOnly(This,pVal) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineTrans_GetCutPoint_Proxy( + IAMTimelineTrans * This, + REFERENCE_TIME *pTLTime); + + +void __RPC_STUB IAMTimelineTrans_GetCutPoint_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineTrans_GetCutPoint2_Proxy( + IAMTimelineTrans * This, + REFTIME *pTLTime); + + +void __RPC_STUB IAMTimelineTrans_GetCutPoint2_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineTrans_SetCutPoint_Proxy( + IAMTimelineTrans * This, + REFERENCE_TIME TLTime); + + +void __RPC_STUB IAMTimelineTrans_SetCutPoint_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineTrans_SetCutPoint2_Proxy( + IAMTimelineTrans * This, + REFTIME TLTime); + + +void __RPC_STUB IAMTimelineTrans_SetCutPoint2_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineTrans_GetSwapInputs_Proxy( + IAMTimelineTrans * This, + BOOL *pVal); + + +void __RPC_STUB IAMTimelineTrans_GetSwapInputs_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineTrans_SetSwapInputs_Proxy( + IAMTimelineTrans * This, + BOOL pVal); + + +void __RPC_STUB IAMTimelineTrans_SetSwapInputs_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineTrans_GetCutsOnly_Proxy( + IAMTimelineTrans * This, + BOOL *pVal); + + +void __RPC_STUB IAMTimelineTrans_GetCutsOnly_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineTrans_SetCutsOnly_Proxy( + IAMTimelineTrans * This, + BOOL pVal); + + +void __RPC_STUB IAMTimelineTrans_SetCutsOnly_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IAMTimelineTrans_INTERFACE_DEFINED__ */ + + +#ifndef __IAMTimelineSrc_INTERFACE_DEFINED__ +#define __IAMTimelineSrc_INTERFACE_DEFINED__ + +/* interface IAMTimelineSrc */ +/* [unique][helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IAMTimelineSrc; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("78530B79-61F9-11D2-8CAD-00A024580902") + IAMTimelineSrc : public IUnknown + { + public: + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetMediaTimes( + REFERENCE_TIME *pStart, + REFERENCE_TIME *pStop) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetMediaTimes2( + REFTIME *pStart, + REFTIME *pStop) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE ModifyStopTime( + REFERENCE_TIME Stop) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE ModifyStopTime2( + REFTIME Stop) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE FixMediaTimes( + REFERENCE_TIME *pStart, + REFERENCE_TIME *pStop) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE FixMediaTimes2( + REFTIME *pStart, + REFTIME *pStop) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetMediaTimes( + REFERENCE_TIME Start, + REFERENCE_TIME Stop) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetMediaTimes2( + REFTIME Start, + REFTIME Stop) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetMediaLength( + REFERENCE_TIME Length) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetMediaLength2( + REFTIME Length) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetMediaLength( + REFERENCE_TIME *pLength) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetMediaLength2( + REFTIME *pLength) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetMediaName( + /* [retval][out] */ BSTR *pVal) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetMediaName( + BSTR newVal) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SpliceWithNext( + IAMTimelineObj *pNext) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetStreamNumber( + long *pVal) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetStreamNumber( + long Val) = 0; + + virtual HRESULT STDMETHODCALLTYPE IsNormalRate( + BOOL *pVal) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetDefaultFPS( + double *pFPS) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetDefaultFPS( + double FPS) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetStretchMode( + int *pnStretchMode) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetStretchMode( + int nStretchMode) = 0; + + }; + +#else /* C style interface */ + + typedef struct IAMTimelineSrcVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IAMTimelineSrc * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IAMTimelineSrc * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IAMTimelineSrc * This); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetMediaTimes )( + IAMTimelineSrc * This, + REFERENCE_TIME *pStart, + REFERENCE_TIME *pStop); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetMediaTimes2 )( + IAMTimelineSrc * This, + REFTIME *pStart, + REFTIME *pStop); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *ModifyStopTime )( + IAMTimelineSrc * This, + REFERENCE_TIME Stop); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *ModifyStopTime2 )( + IAMTimelineSrc * This, + REFTIME Stop); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *FixMediaTimes )( + IAMTimelineSrc * This, + REFERENCE_TIME *pStart, + REFERENCE_TIME *pStop); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *FixMediaTimes2 )( + IAMTimelineSrc * This, + REFTIME *pStart, + REFTIME *pStop); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetMediaTimes )( + IAMTimelineSrc * This, + REFERENCE_TIME Start, + REFERENCE_TIME Stop); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetMediaTimes2 )( + IAMTimelineSrc * This, + REFTIME Start, + REFTIME Stop); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetMediaLength )( + IAMTimelineSrc * This, + REFERENCE_TIME Length); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetMediaLength2 )( + IAMTimelineSrc * This, + REFTIME Length); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetMediaLength )( + IAMTimelineSrc * This, + REFERENCE_TIME *pLength); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetMediaLength2 )( + IAMTimelineSrc * This, + REFTIME *pLength); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetMediaName )( + IAMTimelineSrc * This, + /* [retval][out] */ BSTR *pVal); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetMediaName )( + IAMTimelineSrc * This, + BSTR newVal); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SpliceWithNext )( + IAMTimelineSrc * This, + IAMTimelineObj *pNext); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetStreamNumber )( + IAMTimelineSrc * This, + long *pVal); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetStreamNumber )( + IAMTimelineSrc * This, + long Val); + + HRESULT ( STDMETHODCALLTYPE *IsNormalRate )( + IAMTimelineSrc * This, + BOOL *pVal); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetDefaultFPS )( + IAMTimelineSrc * This, + double *pFPS); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetDefaultFPS )( + IAMTimelineSrc * This, + double FPS); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetStretchMode )( + IAMTimelineSrc * This, + int *pnStretchMode); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetStretchMode )( + IAMTimelineSrc * This, + int nStretchMode); + + END_INTERFACE + } IAMTimelineSrcVtbl; + + interface IAMTimelineSrc + { + CONST_VTBL struct IAMTimelineSrcVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IAMTimelineSrc_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IAMTimelineSrc_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IAMTimelineSrc_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IAMTimelineSrc_GetMediaTimes(This,pStart,pStop) \ + (This)->lpVtbl -> GetMediaTimes(This,pStart,pStop) + +#define IAMTimelineSrc_GetMediaTimes2(This,pStart,pStop) \ + (This)->lpVtbl -> GetMediaTimes2(This,pStart,pStop) + +#define IAMTimelineSrc_ModifyStopTime(This,Stop) \ + (This)->lpVtbl -> ModifyStopTime(This,Stop) + +#define IAMTimelineSrc_ModifyStopTime2(This,Stop) \ + (This)->lpVtbl -> ModifyStopTime2(This,Stop) + +#define IAMTimelineSrc_FixMediaTimes(This,pStart,pStop) \ + (This)->lpVtbl -> FixMediaTimes(This,pStart,pStop) + +#define IAMTimelineSrc_FixMediaTimes2(This,pStart,pStop) \ + (This)->lpVtbl -> FixMediaTimes2(This,pStart,pStop) + +#define IAMTimelineSrc_SetMediaTimes(This,Start,Stop) \ + (This)->lpVtbl -> SetMediaTimes(This,Start,Stop) + +#define IAMTimelineSrc_SetMediaTimes2(This,Start,Stop) \ + (This)->lpVtbl -> SetMediaTimes2(This,Start,Stop) + +#define IAMTimelineSrc_SetMediaLength(This,Length) \ + (This)->lpVtbl -> SetMediaLength(This,Length) + +#define IAMTimelineSrc_SetMediaLength2(This,Length) \ + (This)->lpVtbl -> SetMediaLength2(This,Length) + +#define IAMTimelineSrc_GetMediaLength(This,pLength) \ + (This)->lpVtbl -> GetMediaLength(This,pLength) + +#define IAMTimelineSrc_GetMediaLength2(This,pLength) \ + (This)->lpVtbl -> GetMediaLength2(This,pLength) + +#define IAMTimelineSrc_GetMediaName(This,pVal) \ + (This)->lpVtbl -> GetMediaName(This,pVal) + +#define IAMTimelineSrc_SetMediaName(This,newVal) \ + (This)->lpVtbl -> SetMediaName(This,newVal) + +#define IAMTimelineSrc_SpliceWithNext(This,pNext) \ + (This)->lpVtbl -> SpliceWithNext(This,pNext) + +#define IAMTimelineSrc_GetStreamNumber(This,pVal) \ + (This)->lpVtbl -> GetStreamNumber(This,pVal) + +#define IAMTimelineSrc_SetStreamNumber(This,Val) \ + (This)->lpVtbl -> SetStreamNumber(This,Val) + +#define IAMTimelineSrc_IsNormalRate(This,pVal) \ + (This)->lpVtbl -> IsNormalRate(This,pVal) + +#define IAMTimelineSrc_GetDefaultFPS(This,pFPS) \ + (This)->lpVtbl -> GetDefaultFPS(This,pFPS) + +#define IAMTimelineSrc_SetDefaultFPS(This,FPS) \ + (This)->lpVtbl -> SetDefaultFPS(This,FPS) + +#define IAMTimelineSrc_GetStretchMode(This,pnStretchMode) \ + (This)->lpVtbl -> GetStretchMode(This,pnStretchMode) + +#define IAMTimelineSrc_SetStretchMode(This,nStretchMode) \ + (This)->lpVtbl -> SetStretchMode(This,nStretchMode) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineSrc_GetMediaTimes_Proxy( + IAMTimelineSrc * This, + REFERENCE_TIME *pStart, + REFERENCE_TIME *pStop); + + +void __RPC_STUB IAMTimelineSrc_GetMediaTimes_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineSrc_GetMediaTimes2_Proxy( + IAMTimelineSrc * This, + REFTIME *pStart, + REFTIME *pStop); + + +void __RPC_STUB IAMTimelineSrc_GetMediaTimes2_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineSrc_ModifyStopTime_Proxy( + IAMTimelineSrc * This, + REFERENCE_TIME Stop); + + +void __RPC_STUB IAMTimelineSrc_ModifyStopTime_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineSrc_ModifyStopTime2_Proxy( + IAMTimelineSrc * This, + REFTIME Stop); + + +void __RPC_STUB IAMTimelineSrc_ModifyStopTime2_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineSrc_FixMediaTimes_Proxy( + IAMTimelineSrc * This, + REFERENCE_TIME *pStart, + REFERENCE_TIME *pStop); + + +void __RPC_STUB IAMTimelineSrc_FixMediaTimes_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineSrc_FixMediaTimes2_Proxy( + IAMTimelineSrc * This, + REFTIME *pStart, + REFTIME *pStop); + + +void __RPC_STUB IAMTimelineSrc_FixMediaTimes2_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineSrc_SetMediaTimes_Proxy( + IAMTimelineSrc * This, + REFERENCE_TIME Start, + REFERENCE_TIME Stop); + + +void __RPC_STUB IAMTimelineSrc_SetMediaTimes_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineSrc_SetMediaTimes2_Proxy( + IAMTimelineSrc * This, + REFTIME Start, + REFTIME Stop); + + +void __RPC_STUB IAMTimelineSrc_SetMediaTimes2_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineSrc_SetMediaLength_Proxy( + IAMTimelineSrc * This, + REFERENCE_TIME Length); + + +void __RPC_STUB IAMTimelineSrc_SetMediaLength_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineSrc_SetMediaLength2_Proxy( + IAMTimelineSrc * This, + REFTIME Length); + + +void __RPC_STUB IAMTimelineSrc_SetMediaLength2_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineSrc_GetMediaLength_Proxy( + IAMTimelineSrc * This, + REFERENCE_TIME *pLength); + + +void __RPC_STUB IAMTimelineSrc_GetMediaLength_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineSrc_GetMediaLength2_Proxy( + IAMTimelineSrc * This, + REFTIME *pLength); + + +void __RPC_STUB IAMTimelineSrc_GetMediaLength2_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineSrc_GetMediaName_Proxy( + IAMTimelineSrc * This, + /* [retval][out] */ BSTR *pVal); + + +void __RPC_STUB IAMTimelineSrc_GetMediaName_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineSrc_SetMediaName_Proxy( + IAMTimelineSrc * This, + BSTR newVal); + + +void __RPC_STUB IAMTimelineSrc_SetMediaName_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineSrc_SpliceWithNext_Proxy( + IAMTimelineSrc * This, + IAMTimelineObj *pNext); + + +void __RPC_STUB IAMTimelineSrc_SpliceWithNext_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineSrc_GetStreamNumber_Proxy( + IAMTimelineSrc * This, + long *pVal); + + +void __RPC_STUB IAMTimelineSrc_GetStreamNumber_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineSrc_SetStreamNumber_Proxy( + IAMTimelineSrc * This, + long Val); + + +void __RPC_STUB IAMTimelineSrc_SetStreamNumber_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IAMTimelineSrc_IsNormalRate_Proxy( + IAMTimelineSrc * This, + BOOL *pVal); + + +void __RPC_STUB IAMTimelineSrc_IsNormalRate_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineSrc_GetDefaultFPS_Proxy( + IAMTimelineSrc * This, + double *pFPS); + + +void __RPC_STUB IAMTimelineSrc_GetDefaultFPS_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineSrc_SetDefaultFPS_Proxy( + IAMTimelineSrc * This, + double FPS); + + +void __RPC_STUB IAMTimelineSrc_SetDefaultFPS_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineSrc_GetStretchMode_Proxy( + IAMTimelineSrc * This, + int *pnStretchMode); + + +void __RPC_STUB IAMTimelineSrc_GetStretchMode_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineSrc_SetStretchMode_Proxy( + IAMTimelineSrc * This, + int nStretchMode); + + +void __RPC_STUB IAMTimelineSrc_SetStretchMode_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IAMTimelineSrc_INTERFACE_DEFINED__ */ + + +#ifndef __IAMTimelineTrack_INTERFACE_DEFINED__ +#define __IAMTimelineTrack_INTERFACE_DEFINED__ + +/* interface IAMTimelineTrack */ +/* [unique][helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IAMTimelineTrack; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("EAE58538-622E-11d2-8CAD-00A024580902") + IAMTimelineTrack : public IUnknown + { + public: + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SrcAdd( + IAMTimelineObj *pSource) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetNextSrc( + /* [out] */ IAMTimelineObj **ppSrc, + REFERENCE_TIME *pInOut) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetNextSrc2( + /* [out] */ IAMTimelineObj **ppSrc, + REFTIME *pInOut) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE MoveEverythingBy( + REFERENCE_TIME Start, + REFERENCE_TIME MoveBy) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE MoveEverythingBy2( + REFTIME Start, + REFTIME MoveBy) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetSourcesCount( + long *pVal) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE AreYouBlank( + long *pVal) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetSrcAtTime( + /* [out] */ IAMTimelineObj **ppSrc, + REFERENCE_TIME Time, + long SearchDirection) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetSrcAtTime2( + /* [out] */ IAMTimelineObj **ppSrc, + REFTIME Time, + long SearchDirection) = 0; + + virtual HRESULT STDMETHODCALLTYPE InsertSpace( + REFERENCE_TIME rtStart, + REFERENCE_TIME rtEnd) = 0; + + virtual HRESULT STDMETHODCALLTYPE InsertSpace2( + REFTIME rtStart, + REFTIME rtEnd) = 0; + + virtual HRESULT STDMETHODCALLTYPE ZeroBetween( + REFERENCE_TIME rtStart, + REFERENCE_TIME rtEnd) = 0; + + virtual HRESULT STDMETHODCALLTYPE ZeroBetween2( + REFTIME rtStart, + REFTIME rtEnd) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetNextSrcEx( + IAMTimelineObj *pLast, + /* [out] */ IAMTimelineObj **ppNext) = 0; + + }; + +#else /* C style interface */ + + typedef struct IAMTimelineTrackVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IAMTimelineTrack * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IAMTimelineTrack * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IAMTimelineTrack * This); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SrcAdd )( + IAMTimelineTrack * This, + IAMTimelineObj *pSource); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetNextSrc )( + IAMTimelineTrack * This, + /* [out] */ IAMTimelineObj **ppSrc, + REFERENCE_TIME *pInOut); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetNextSrc2 )( + IAMTimelineTrack * This, + /* [out] */ IAMTimelineObj **ppSrc, + REFTIME *pInOut); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *MoveEverythingBy )( + IAMTimelineTrack * This, + REFERENCE_TIME Start, + REFERENCE_TIME MoveBy); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *MoveEverythingBy2 )( + IAMTimelineTrack * This, + REFTIME Start, + REFTIME MoveBy); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetSourcesCount )( + IAMTimelineTrack * This, + long *pVal); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *AreYouBlank )( + IAMTimelineTrack * This, + long *pVal); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetSrcAtTime )( + IAMTimelineTrack * This, + /* [out] */ IAMTimelineObj **ppSrc, + REFERENCE_TIME Time, + long SearchDirection); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetSrcAtTime2 )( + IAMTimelineTrack * This, + /* [out] */ IAMTimelineObj **ppSrc, + REFTIME Time, + long SearchDirection); + + HRESULT ( STDMETHODCALLTYPE *InsertSpace )( + IAMTimelineTrack * This, + REFERENCE_TIME rtStart, + REFERENCE_TIME rtEnd); + + HRESULT ( STDMETHODCALLTYPE *InsertSpace2 )( + IAMTimelineTrack * This, + REFTIME rtStart, + REFTIME rtEnd); + + HRESULT ( STDMETHODCALLTYPE *ZeroBetween )( + IAMTimelineTrack * This, + REFERENCE_TIME rtStart, + REFERENCE_TIME rtEnd); + + HRESULT ( STDMETHODCALLTYPE *ZeroBetween2 )( + IAMTimelineTrack * This, + REFTIME rtStart, + REFTIME rtEnd); + + HRESULT ( STDMETHODCALLTYPE *GetNextSrcEx )( + IAMTimelineTrack * This, + IAMTimelineObj *pLast, + /* [out] */ IAMTimelineObj **ppNext); + + END_INTERFACE + } IAMTimelineTrackVtbl; + + interface IAMTimelineTrack + { + CONST_VTBL struct IAMTimelineTrackVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IAMTimelineTrack_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IAMTimelineTrack_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IAMTimelineTrack_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IAMTimelineTrack_SrcAdd(This,pSource) \ + (This)->lpVtbl -> SrcAdd(This,pSource) + +#define IAMTimelineTrack_GetNextSrc(This,ppSrc,pInOut) \ + (This)->lpVtbl -> GetNextSrc(This,ppSrc,pInOut) + +#define IAMTimelineTrack_GetNextSrc2(This,ppSrc,pInOut) \ + (This)->lpVtbl -> GetNextSrc2(This,ppSrc,pInOut) + +#define IAMTimelineTrack_MoveEverythingBy(This,Start,MoveBy) \ + (This)->lpVtbl -> MoveEverythingBy(This,Start,MoveBy) + +#define IAMTimelineTrack_MoveEverythingBy2(This,Start,MoveBy) \ + (This)->lpVtbl -> MoveEverythingBy2(This,Start,MoveBy) + +#define IAMTimelineTrack_GetSourcesCount(This,pVal) \ + (This)->lpVtbl -> GetSourcesCount(This,pVal) + +#define IAMTimelineTrack_AreYouBlank(This,pVal) \ + (This)->lpVtbl -> AreYouBlank(This,pVal) + +#define IAMTimelineTrack_GetSrcAtTime(This,ppSrc,Time,SearchDirection) \ + (This)->lpVtbl -> GetSrcAtTime(This,ppSrc,Time,SearchDirection) + +#define IAMTimelineTrack_GetSrcAtTime2(This,ppSrc,Time,SearchDirection) \ + (This)->lpVtbl -> GetSrcAtTime2(This,ppSrc,Time,SearchDirection) + +#define IAMTimelineTrack_InsertSpace(This,rtStart,rtEnd) \ + (This)->lpVtbl -> InsertSpace(This,rtStart,rtEnd) + +#define IAMTimelineTrack_InsertSpace2(This,rtStart,rtEnd) \ + (This)->lpVtbl -> InsertSpace2(This,rtStart,rtEnd) + +#define IAMTimelineTrack_ZeroBetween(This,rtStart,rtEnd) \ + (This)->lpVtbl -> ZeroBetween(This,rtStart,rtEnd) + +#define IAMTimelineTrack_ZeroBetween2(This,rtStart,rtEnd) \ + (This)->lpVtbl -> ZeroBetween2(This,rtStart,rtEnd) + +#define IAMTimelineTrack_GetNextSrcEx(This,pLast,ppNext) \ + (This)->lpVtbl -> GetNextSrcEx(This,pLast,ppNext) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineTrack_SrcAdd_Proxy( + IAMTimelineTrack * This, + IAMTimelineObj *pSource); + + +void __RPC_STUB IAMTimelineTrack_SrcAdd_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineTrack_GetNextSrc_Proxy( + IAMTimelineTrack * This, + /* [out] */ IAMTimelineObj **ppSrc, + REFERENCE_TIME *pInOut); + + +void __RPC_STUB IAMTimelineTrack_GetNextSrc_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineTrack_GetNextSrc2_Proxy( + IAMTimelineTrack * This, + /* [out] */ IAMTimelineObj **ppSrc, + REFTIME *pInOut); + + +void __RPC_STUB IAMTimelineTrack_GetNextSrc2_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineTrack_MoveEverythingBy_Proxy( + IAMTimelineTrack * This, + REFERENCE_TIME Start, + REFERENCE_TIME MoveBy); + + +void __RPC_STUB IAMTimelineTrack_MoveEverythingBy_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineTrack_MoveEverythingBy2_Proxy( + IAMTimelineTrack * This, + REFTIME Start, + REFTIME MoveBy); + + +void __RPC_STUB IAMTimelineTrack_MoveEverythingBy2_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineTrack_GetSourcesCount_Proxy( + IAMTimelineTrack * This, + long *pVal); + + +void __RPC_STUB IAMTimelineTrack_GetSourcesCount_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineTrack_AreYouBlank_Proxy( + IAMTimelineTrack * This, + long *pVal); + + +void __RPC_STUB IAMTimelineTrack_AreYouBlank_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineTrack_GetSrcAtTime_Proxy( + IAMTimelineTrack * This, + /* [out] */ IAMTimelineObj **ppSrc, + REFERENCE_TIME Time, + long SearchDirection); + + +void __RPC_STUB IAMTimelineTrack_GetSrcAtTime_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineTrack_GetSrcAtTime2_Proxy( + IAMTimelineTrack * This, + /* [out] */ IAMTimelineObj **ppSrc, + REFTIME Time, + long SearchDirection); + + +void __RPC_STUB IAMTimelineTrack_GetSrcAtTime2_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IAMTimelineTrack_InsertSpace_Proxy( + IAMTimelineTrack * This, + REFERENCE_TIME rtStart, + REFERENCE_TIME rtEnd); + + +void __RPC_STUB IAMTimelineTrack_InsertSpace_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IAMTimelineTrack_InsertSpace2_Proxy( + IAMTimelineTrack * This, + REFTIME rtStart, + REFTIME rtEnd); + + +void __RPC_STUB IAMTimelineTrack_InsertSpace2_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IAMTimelineTrack_ZeroBetween_Proxy( + IAMTimelineTrack * This, + REFERENCE_TIME rtStart, + REFERENCE_TIME rtEnd); + + +void __RPC_STUB IAMTimelineTrack_ZeroBetween_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IAMTimelineTrack_ZeroBetween2_Proxy( + IAMTimelineTrack * This, + REFTIME rtStart, + REFTIME rtEnd); + + +void __RPC_STUB IAMTimelineTrack_ZeroBetween2_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IAMTimelineTrack_GetNextSrcEx_Proxy( + IAMTimelineTrack * This, + IAMTimelineObj *pLast, + /* [out] */ IAMTimelineObj **ppNext); + + +void __RPC_STUB IAMTimelineTrack_GetNextSrcEx_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IAMTimelineTrack_INTERFACE_DEFINED__ */ + + +#ifndef __IAMTimelineVirtualTrack_INTERFACE_DEFINED__ +#define __IAMTimelineVirtualTrack_INTERFACE_DEFINED__ + +/* interface IAMTimelineVirtualTrack */ +/* [unique][helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IAMTimelineVirtualTrack; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("A8ED5F80-C2C7-11d2-8D39-00A0C9441E20") + IAMTimelineVirtualTrack : public IUnknown + { + public: + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE TrackGetPriority( + long *pPriority) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetTrackDirty( void) = 0; + + }; + +#else /* C style interface */ + + typedef struct IAMTimelineVirtualTrackVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IAMTimelineVirtualTrack * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IAMTimelineVirtualTrack * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IAMTimelineVirtualTrack * This); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *TrackGetPriority )( + IAMTimelineVirtualTrack * This, + long *pPriority); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetTrackDirty )( + IAMTimelineVirtualTrack * This); + + END_INTERFACE + } IAMTimelineVirtualTrackVtbl; + + interface IAMTimelineVirtualTrack + { + CONST_VTBL struct IAMTimelineVirtualTrackVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IAMTimelineVirtualTrack_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IAMTimelineVirtualTrack_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IAMTimelineVirtualTrack_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IAMTimelineVirtualTrack_TrackGetPriority(This,pPriority) \ + (This)->lpVtbl -> TrackGetPriority(This,pPriority) + +#define IAMTimelineVirtualTrack_SetTrackDirty(This) \ + (This)->lpVtbl -> SetTrackDirty(This) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineVirtualTrack_TrackGetPriority_Proxy( + IAMTimelineVirtualTrack * This, + long *pPriority); + + +void __RPC_STUB IAMTimelineVirtualTrack_TrackGetPriority_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineVirtualTrack_SetTrackDirty_Proxy( + IAMTimelineVirtualTrack * This); + + +void __RPC_STUB IAMTimelineVirtualTrack_SetTrackDirty_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IAMTimelineVirtualTrack_INTERFACE_DEFINED__ */ + + +#ifndef __IAMTimelineComp_INTERFACE_DEFINED__ +#define __IAMTimelineComp_INTERFACE_DEFINED__ + +/* interface IAMTimelineComp */ +/* [unique][helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IAMTimelineComp; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("EAE58536-622E-11d2-8CAD-00A024580902") + IAMTimelineComp : public IUnknown + { + public: + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE VTrackInsBefore( + IAMTimelineObj *pVirtualTrack, + long Priority) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE VTrackSwapPriorities( + long VirtualTrackA, + long VirtualTrackB) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE VTrackGetCount( + long *pVal) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetVTrack( + /* [out] */ IAMTimelineObj **ppVirtualTrack, + long Which) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetCountOfType( + long *pVal, + long *pValWithComps, + TIMELINE_MAJOR_TYPE MajorType) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetRecursiveLayerOfType( + /* [out] */ IAMTimelineObj **ppVirtualTrack, + long WhichLayer, + TIMELINE_MAJOR_TYPE Type) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetRecursiveLayerOfTypeI( + /* [out] */ IAMTimelineObj **ppVirtualTrack, + /* [out][in] */ long *pWhichLayer, + TIMELINE_MAJOR_TYPE Type) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetNextVTrack( + IAMTimelineObj *pVirtualTrack, + /* [out] */ IAMTimelineObj **ppNextVirtualTrack) = 0; + + }; + +#else /* C style interface */ + + typedef struct IAMTimelineCompVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IAMTimelineComp * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IAMTimelineComp * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IAMTimelineComp * This); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *VTrackInsBefore )( + IAMTimelineComp * This, + IAMTimelineObj *pVirtualTrack, + long Priority); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *VTrackSwapPriorities )( + IAMTimelineComp * This, + long VirtualTrackA, + long VirtualTrackB); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *VTrackGetCount )( + IAMTimelineComp * This, + long *pVal); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetVTrack )( + IAMTimelineComp * This, + /* [out] */ IAMTimelineObj **ppVirtualTrack, + long Which); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetCountOfType )( + IAMTimelineComp * This, + long *pVal, + long *pValWithComps, + TIMELINE_MAJOR_TYPE MajorType); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetRecursiveLayerOfType )( + IAMTimelineComp * This, + /* [out] */ IAMTimelineObj **ppVirtualTrack, + long WhichLayer, + TIMELINE_MAJOR_TYPE Type); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetRecursiveLayerOfTypeI )( + IAMTimelineComp * This, + /* [out] */ IAMTimelineObj **ppVirtualTrack, + /* [out][in] */ long *pWhichLayer, + TIMELINE_MAJOR_TYPE Type); + + HRESULT ( STDMETHODCALLTYPE *GetNextVTrack )( + IAMTimelineComp * This, + IAMTimelineObj *pVirtualTrack, + /* [out] */ IAMTimelineObj **ppNextVirtualTrack); + + END_INTERFACE + } IAMTimelineCompVtbl; + + interface IAMTimelineComp + { + CONST_VTBL struct IAMTimelineCompVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IAMTimelineComp_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IAMTimelineComp_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IAMTimelineComp_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IAMTimelineComp_VTrackInsBefore(This,pVirtualTrack,Priority) \ + (This)->lpVtbl -> VTrackInsBefore(This,pVirtualTrack,Priority) + +#define IAMTimelineComp_VTrackSwapPriorities(This,VirtualTrackA,VirtualTrackB) \ + (This)->lpVtbl -> VTrackSwapPriorities(This,VirtualTrackA,VirtualTrackB) + +#define IAMTimelineComp_VTrackGetCount(This,pVal) \ + (This)->lpVtbl -> VTrackGetCount(This,pVal) + +#define IAMTimelineComp_GetVTrack(This,ppVirtualTrack,Which) \ + (This)->lpVtbl -> GetVTrack(This,ppVirtualTrack,Which) + +#define IAMTimelineComp_GetCountOfType(This,pVal,pValWithComps,MajorType) \ + (This)->lpVtbl -> GetCountOfType(This,pVal,pValWithComps,MajorType) + +#define IAMTimelineComp_GetRecursiveLayerOfType(This,ppVirtualTrack,WhichLayer,Type) \ + (This)->lpVtbl -> GetRecursiveLayerOfType(This,ppVirtualTrack,WhichLayer,Type) + +#define IAMTimelineComp_GetRecursiveLayerOfTypeI(This,ppVirtualTrack,pWhichLayer,Type) \ + (This)->lpVtbl -> GetRecursiveLayerOfTypeI(This,ppVirtualTrack,pWhichLayer,Type) + +#define IAMTimelineComp_GetNextVTrack(This,pVirtualTrack,ppNextVirtualTrack) \ + (This)->lpVtbl -> GetNextVTrack(This,pVirtualTrack,ppNextVirtualTrack) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineComp_VTrackInsBefore_Proxy( + IAMTimelineComp * This, + IAMTimelineObj *pVirtualTrack, + long Priority); + + +void __RPC_STUB IAMTimelineComp_VTrackInsBefore_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineComp_VTrackSwapPriorities_Proxy( + IAMTimelineComp * This, + long VirtualTrackA, + long VirtualTrackB); + + +void __RPC_STUB IAMTimelineComp_VTrackSwapPriorities_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineComp_VTrackGetCount_Proxy( + IAMTimelineComp * This, + long *pVal); + + +void __RPC_STUB IAMTimelineComp_VTrackGetCount_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineComp_GetVTrack_Proxy( + IAMTimelineComp * This, + /* [out] */ IAMTimelineObj **ppVirtualTrack, + long Which); + + +void __RPC_STUB IAMTimelineComp_GetVTrack_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineComp_GetCountOfType_Proxy( + IAMTimelineComp * This, + long *pVal, + long *pValWithComps, + TIMELINE_MAJOR_TYPE MajorType); + + +void __RPC_STUB IAMTimelineComp_GetCountOfType_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineComp_GetRecursiveLayerOfType_Proxy( + IAMTimelineComp * This, + /* [out] */ IAMTimelineObj **ppVirtualTrack, + long WhichLayer, + TIMELINE_MAJOR_TYPE Type); + + +void __RPC_STUB IAMTimelineComp_GetRecursiveLayerOfType_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineComp_GetRecursiveLayerOfTypeI_Proxy( + IAMTimelineComp * This, + /* [out] */ IAMTimelineObj **ppVirtualTrack, + /* [out][in] */ long *pWhichLayer, + TIMELINE_MAJOR_TYPE Type); + + +void __RPC_STUB IAMTimelineComp_GetRecursiveLayerOfTypeI_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IAMTimelineComp_GetNextVTrack_Proxy( + IAMTimelineComp * This, + IAMTimelineObj *pVirtualTrack, + /* [out] */ IAMTimelineObj **ppNextVirtualTrack); + + +void __RPC_STUB IAMTimelineComp_GetNextVTrack_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IAMTimelineComp_INTERFACE_DEFINED__ */ + + +#ifndef __IAMTimelineGroup_INTERFACE_DEFINED__ +#define __IAMTimelineGroup_INTERFACE_DEFINED__ + +/* interface IAMTimelineGroup */ +/* [unique][helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IAMTimelineGroup; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("9EED4F00-B8A6-11d2-8023-00C0DF10D434") + IAMTimelineGroup : public IUnknown + { + public: + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetTimeline( + IAMTimeline *pTimeline) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetTimeline( + /* [out] */ IAMTimeline **ppTimeline) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetPriority( + long *pPriority) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetMediaType( + /* [out] */ AM_MEDIA_TYPE *__MIDL_0043) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetMediaType( + /* [in] */ AM_MEDIA_TYPE *__MIDL_0044) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetOutputFPS( + double FPS) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetOutputFPS( + double *pFPS) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetGroupName( + BSTR pGroupName) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetGroupName( + /* [retval][out] */ BSTR *pGroupName) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetPreviewMode( + BOOL fPreview) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetPreviewMode( + BOOL *pfPreview) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetMediaTypeForVB( + /* [in] */ long Val) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetOutputBuffering( + /* [out] */ int *pnBuffer) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetOutputBuffering( + /* [in] */ int nBuffer) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetSmartRecompressFormat( + long *pFormat) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetSmartRecompressFormat( + long **ppFormat) = 0; + + virtual HRESULT STDMETHODCALLTYPE IsSmartRecompressFormatSet( + BOOL *pVal) = 0; + + virtual HRESULT STDMETHODCALLTYPE IsRecompressFormatDirty( + BOOL *pVal) = 0; + + virtual HRESULT STDMETHODCALLTYPE ClearRecompressFormatDirty( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetRecompFormatFromSource( + IAMTimelineSrc *pSource) = 0; + + }; + +#else /* C style interface */ + + typedef struct IAMTimelineGroupVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IAMTimelineGroup * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IAMTimelineGroup * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IAMTimelineGroup * This); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetTimeline )( + IAMTimelineGroup * This, + IAMTimeline *pTimeline); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetTimeline )( + IAMTimelineGroup * This, + /* [out] */ IAMTimeline **ppTimeline); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetPriority )( + IAMTimelineGroup * This, + long *pPriority); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetMediaType )( + IAMTimelineGroup * This, + /* [out] */ AM_MEDIA_TYPE *__MIDL_0043); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetMediaType )( + IAMTimelineGroup * This, + /* [in] */ AM_MEDIA_TYPE *__MIDL_0044); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetOutputFPS )( + IAMTimelineGroup * This, + double FPS); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetOutputFPS )( + IAMTimelineGroup * This, + double *pFPS); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetGroupName )( + IAMTimelineGroup * This, + BSTR pGroupName); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetGroupName )( + IAMTimelineGroup * This, + /* [retval][out] */ BSTR *pGroupName); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetPreviewMode )( + IAMTimelineGroup * This, + BOOL fPreview); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetPreviewMode )( + IAMTimelineGroup * This, + BOOL *pfPreview); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetMediaTypeForVB )( + IAMTimelineGroup * This, + /* [in] */ long Val); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetOutputBuffering )( + IAMTimelineGroup * This, + /* [out] */ int *pnBuffer); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetOutputBuffering )( + IAMTimelineGroup * This, + /* [in] */ int nBuffer); + + HRESULT ( STDMETHODCALLTYPE *SetSmartRecompressFormat )( + IAMTimelineGroup * This, + long *pFormat); + + HRESULT ( STDMETHODCALLTYPE *GetSmartRecompressFormat )( + IAMTimelineGroup * This, + long **ppFormat); + + HRESULT ( STDMETHODCALLTYPE *IsSmartRecompressFormatSet )( + IAMTimelineGroup * This, + BOOL *pVal); + + HRESULT ( STDMETHODCALLTYPE *IsRecompressFormatDirty )( + IAMTimelineGroup * This, + BOOL *pVal); + + HRESULT ( STDMETHODCALLTYPE *ClearRecompressFormatDirty )( + IAMTimelineGroup * This); + + HRESULT ( STDMETHODCALLTYPE *SetRecompFormatFromSource )( + IAMTimelineGroup * This, + IAMTimelineSrc *pSource); + + END_INTERFACE + } IAMTimelineGroupVtbl; + + interface IAMTimelineGroup + { + CONST_VTBL struct IAMTimelineGroupVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IAMTimelineGroup_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IAMTimelineGroup_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IAMTimelineGroup_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IAMTimelineGroup_SetTimeline(This,pTimeline) \ + (This)->lpVtbl -> SetTimeline(This,pTimeline) + +#define IAMTimelineGroup_GetTimeline(This,ppTimeline) \ + (This)->lpVtbl -> GetTimeline(This,ppTimeline) + +#define IAMTimelineGroup_GetPriority(This,pPriority) \ + (This)->lpVtbl -> GetPriority(This,pPriority) + +#define IAMTimelineGroup_GetMediaType(This,__MIDL_0043) \ + (This)->lpVtbl -> GetMediaType(This,__MIDL_0043) + +#define IAMTimelineGroup_SetMediaType(This,__MIDL_0044) \ + (This)->lpVtbl -> SetMediaType(This,__MIDL_0044) + +#define IAMTimelineGroup_SetOutputFPS(This,FPS) \ + (This)->lpVtbl -> SetOutputFPS(This,FPS) + +#define IAMTimelineGroup_GetOutputFPS(This,pFPS) \ + (This)->lpVtbl -> GetOutputFPS(This,pFPS) + +#define IAMTimelineGroup_SetGroupName(This,pGroupName) \ + (This)->lpVtbl -> SetGroupName(This,pGroupName) + +#define IAMTimelineGroup_GetGroupName(This,pGroupName) \ + (This)->lpVtbl -> GetGroupName(This,pGroupName) + +#define IAMTimelineGroup_SetPreviewMode(This,fPreview) \ + (This)->lpVtbl -> SetPreviewMode(This,fPreview) + +#define IAMTimelineGroup_GetPreviewMode(This,pfPreview) \ + (This)->lpVtbl -> GetPreviewMode(This,pfPreview) + +#define IAMTimelineGroup_SetMediaTypeForVB(This,Val) \ + (This)->lpVtbl -> SetMediaTypeForVB(This,Val) + +#define IAMTimelineGroup_GetOutputBuffering(This,pnBuffer) \ + (This)->lpVtbl -> GetOutputBuffering(This,pnBuffer) + +#define IAMTimelineGroup_SetOutputBuffering(This,nBuffer) \ + (This)->lpVtbl -> SetOutputBuffering(This,nBuffer) + +#define IAMTimelineGroup_SetSmartRecompressFormat(This,pFormat) \ + (This)->lpVtbl -> SetSmartRecompressFormat(This,pFormat) + +#define IAMTimelineGroup_GetSmartRecompressFormat(This,ppFormat) \ + (This)->lpVtbl -> GetSmartRecompressFormat(This,ppFormat) + +#define IAMTimelineGroup_IsSmartRecompressFormatSet(This,pVal) \ + (This)->lpVtbl -> IsSmartRecompressFormatSet(This,pVal) + +#define IAMTimelineGroup_IsRecompressFormatDirty(This,pVal) \ + (This)->lpVtbl -> IsRecompressFormatDirty(This,pVal) + +#define IAMTimelineGroup_ClearRecompressFormatDirty(This) \ + (This)->lpVtbl -> ClearRecompressFormatDirty(This) + +#define IAMTimelineGroup_SetRecompFormatFromSource(This,pSource) \ + (This)->lpVtbl -> SetRecompFormatFromSource(This,pSource) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineGroup_SetTimeline_Proxy( + IAMTimelineGroup * This, + IAMTimeline *pTimeline); + + +void __RPC_STUB IAMTimelineGroup_SetTimeline_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineGroup_GetTimeline_Proxy( + IAMTimelineGroup * This, + /* [out] */ IAMTimeline **ppTimeline); + + +void __RPC_STUB IAMTimelineGroup_GetTimeline_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineGroup_GetPriority_Proxy( + IAMTimelineGroup * This, + long *pPriority); + + +void __RPC_STUB IAMTimelineGroup_GetPriority_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineGroup_GetMediaType_Proxy( + IAMTimelineGroup * This, + /* [out] */ AM_MEDIA_TYPE *__MIDL_0043); + + +void __RPC_STUB IAMTimelineGroup_GetMediaType_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineGroup_SetMediaType_Proxy( + IAMTimelineGroup * This, + /* [in] */ AM_MEDIA_TYPE *__MIDL_0044); + + +void __RPC_STUB IAMTimelineGroup_SetMediaType_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineGroup_SetOutputFPS_Proxy( + IAMTimelineGroup * This, + double FPS); + + +void __RPC_STUB IAMTimelineGroup_SetOutputFPS_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineGroup_GetOutputFPS_Proxy( + IAMTimelineGroup * This, + double *pFPS); + + +void __RPC_STUB IAMTimelineGroup_GetOutputFPS_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineGroup_SetGroupName_Proxy( + IAMTimelineGroup * This, + BSTR pGroupName); + + +void __RPC_STUB IAMTimelineGroup_SetGroupName_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineGroup_GetGroupName_Proxy( + IAMTimelineGroup * This, + /* [retval][out] */ BSTR *pGroupName); + + +void __RPC_STUB IAMTimelineGroup_GetGroupName_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineGroup_SetPreviewMode_Proxy( + IAMTimelineGroup * This, + BOOL fPreview); + + +void __RPC_STUB IAMTimelineGroup_SetPreviewMode_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineGroup_GetPreviewMode_Proxy( + IAMTimelineGroup * This, + BOOL *pfPreview); + + +void __RPC_STUB IAMTimelineGroup_GetPreviewMode_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineGroup_SetMediaTypeForVB_Proxy( + IAMTimelineGroup * This, + /* [in] */ long Val); + + +void __RPC_STUB IAMTimelineGroup_SetMediaTypeForVB_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineGroup_GetOutputBuffering_Proxy( + IAMTimelineGroup * This, + /* [out] */ int *pnBuffer); + + +void __RPC_STUB IAMTimelineGroup_GetOutputBuffering_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimelineGroup_SetOutputBuffering_Proxy( + IAMTimelineGroup * This, + /* [in] */ int nBuffer); + + +void __RPC_STUB IAMTimelineGroup_SetOutputBuffering_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IAMTimelineGroup_SetSmartRecompressFormat_Proxy( + IAMTimelineGroup * This, + long *pFormat); + + +void __RPC_STUB IAMTimelineGroup_SetSmartRecompressFormat_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IAMTimelineGroup_GetSmartRecompressFormat_Proxy( + IAMTimelineGroup * This, + long **ppFormat); + + +void __RPC_STUB IAMTimelineGroup_GetSmartRecompressFormat_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IAMTimelineGroup_IsSmartRecompressFormatSet_Proxy( + IAMTimelineGroup * This, + BOOL *pVal); + + +void __RPC_STUB IAMTimelineGroup_IsSmartRecompressFormatSet_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IAMTimelineGroup_IsRecompressFormatDirty_Proxy( + IAMTimelineGroup * This, + BOOL *pVal); + + +void __RPC_STUB IAMTimelineGroup_IsRecompressFormatDirty_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IAMTimelineGroup_ClearRecompressFormatDirty_Proxy( + IAMTimelineGroup * This); + + +void __RPC_STUB IAMTimelineGroup_ClearRecompressFormatDirty_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IAMTimelineGroup_SetRecompFormatFromSource_Proxy( + IAMTimelineGroup * This, + IAMTimelineSrc *pSource); + + +void __RPC_STUB IAMTimelineGroup_SetRecompFormatFromSource_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IAMTimelineGroup_INTERFACE_DEFINED__ */ + + +#ifndef __IAMTimeline_INTERFACE_DEFINED__ +#define __IAMTimeline_INTERFACE_DEFINED__ + +/* interface IAMTimeline */ +/* [unique][helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IAMTimeline; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("78530B74-61F9-11D2-8CAD-00A024580902") + IAMTimeline : public IUnknown + { + public: + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE CreateEmptyNode( + /* [out] */ IAMTimelineObj **ppObj, + TIMELINE_MAJOR_TYPE Type) = 0; + + virtual HRESULT STDMETHODCALLTYPE AddGroup( + IAMTimelineObj *pGroup) = 0; + + virtual HRESULT STDMETHODCALLTYPE RemGroupFromList( + IAMTimelineObj *pGroup) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetGroup( + /* [out] */ IAMTimelineObj **ppGroup, + long WhichGroup) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetGroupCount( + long *pCount) = 0; + + virtual HRESULT STDMETHODCALLTYPE ClearAllGroups( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetInsertMode( + long *pMode) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetInsertMode( + long Mode) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE EnableTransitions( + BOOL fEnabled) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE TransitionsEnabled( + BOOL *pfEnabled) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE EnableEffects( + BOOL fEnabled) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE EffectsEnabled( + BOOL *pfEnabled) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetInterestRange( + REFERENCE_TIME Start, + REFERENCE_TIME Stop) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetDuration( + REFERENCE_TIME *pDuration) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetDuration2( + double *pDuration) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetDefaultFPS( + double FPS) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetDefaultFPS( + double *pFPS) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE IsDirty( + BOOL *pDirty) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetDirtyRange( + REFERENCE_TIME *pStart, + REFERENCE_TIME *pStop) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetCountOfType( + long Group, + long *pVal, + long *pValWithComps, + TIMELINE_MAJOR_TYPE MajorType) = 0; + + virtual HRESULT STDMETHODCALLTYPE ValidateSourceNames( + long ValidateFlags, + IMediaLocator *pOverride, + LONG_PTR NotifyEventHandle) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetDefaultTransition( + GUID *pGuid) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetDefaultTransition( + GUID *pGuid) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetDefaultEffect( + GUID *pGuid) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetDefaultEffect( + GUID *pGuid) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetDefaultTransitionB( + BSTR pGuid) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetDefaultTransitionB( + /* [retval][out] */ BSTR *pGuid) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetDefaultEffectB( + BSTR pGuid) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetDefaultEffectB( + /* [retval][out] */ BSTR *pGuid) = 0; + + }; + +#else /* C style interface */ + + typedef struct IAMTimelineVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IAMTimeline * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IAMTimeline * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IAMTimeline * This); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *CreateEmptyNode )( + IAMTimeline * This, + /* [out] */ IAMTimelineObj **ppObj, + TIMELINE_MAJOR_TYPE Type); + + HRESULT ( STDMETHODCALLTYPE *AddGroup )( + IAMTimeline * This, + IAMTimelineObj *pGroup); + + HRESULT ( STDMETHODCALLTYPE *RemGroupFromList )( + IAMTimeline * This, + IAMTimelineObj *pGroup); + + HRESULT ( STDMETHODCALLTYPE *GetGroup )( + IAMTimeline * This, + /* [out] */ IAMTimelineObj **ppGroup, + long WhichGroup); + + HRESULT ( STDMETHODCALLTYPE *GetGroupCount )( + IAMTimeline * This, + long *pCount); + + HRESULT ( STDMETHODCALLTYPE *ClearAllGroups )( + IAMTimeline * This); + + HRESULT ( STDMETHODCALLTYPE *GetInsertMode )( + IAMTimeline * This, + long *pMode); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetInsertMode )( + IAMTimeline * This, + long Mode); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *EnableTransitions )( + IAMTimeline * This, + BOOL fEnabled); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *TransitionsEnabled )( + IAMTimeline * This, + BOOL *pfEnabled); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *EnableEffects )( + IAMTimeline * This, + BOOL fEnabled); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *EffectsEnabled )( + IAMTimeline * This, + BOOL *pfEnabled); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetInterestRange )( + IAMTimeline * This, + REFERENCE_TIME Start, + REFERENCE_TIME Stop); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetDuration )( + IAMTimeline * This, + REFERENCE_TIME *pDuration); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetDuration2 )( + IAMTimeline * This, + double *pDuration); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetDefaultFPS )( + IAMTimeline * This, + double FPS); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetDefaultFPS )( + IAMTimeline * This, + double *pFPS); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *IsDirty )( + IAMTimeline * This, + BOOL *pDirty); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetDirtyRange )( + IAMTimeline * This, + REFERENCE_TIME *pStart, + REFERENCE_TIME *pStop); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetCountOfType )( + IAMTimeline * This, + long Group, + long *pVal, + long *pValWithComps, + TIMELINE_MAJOR_TYPE MajorType); + + HRESULT ( STDMETHODCALLTYPE *ValidateSourceNames )( + IAMTimeline * This, + long ValidateFlags, + IMediaLocator *pOverride, + LONG_PTR NotifyEventHandle); + + HRESULT ( STDMETHODCALLTYPE *SetDefaultTransition )( + IAMTimeline * This, + GUID *pGuid); + + HRESULT ( STDMETHODCALLTYPE *GetDefaultTransition )( + IAMTimeline * This, + GUID *pGuid); + + HRESULT ( STDMETHODCALLTYPE *SetDefaultEffect )( + IAMTimeline * This, + GUID *pGuid); + + HRESULT ( STDMETHODCALLTYPE *GetDefaultEffect )( + IAMTimeline * This, + GUID *pGuid); + + HRESULT ( STDMETHODCALLTYPE *SetDefaultTransitionB )( + IAMTimeline * This, + BSTR pGuid); + + HRESULT ( STDMETHODCALLTYPE *GetDefaultTransitionB )( + IAMTimeline * This, + /* [retval][out] */ BSTR *pGuid); + + HRESULT ( STDMETHODCALLTYPE *SetDefaultEffectB )( + IAMTimeline * This, + BSTR pGuid); + + HRESULT ( STDMETHODCALLTYPE *GetDefaultEffectB )( + IAMTimeline * This, + /* [retval][out] */ BSTR *pGuid); + + END_INTERFACE + } IAMTimelineVtbl; + + interface IAMTimeline + { + CONST_VTBL struct IAMTimelineVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IAMTimeline_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IAMTimeline_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IAMTimeline_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IAMTimeline_CreateEmptyNode(This,ppObj,Type) \ + (This)->lpVtbl -> CreateEmptyNode(This,ppObj,Type) + +#define IAMTimeline_AddGroup(This,pGroup) \ + (This)->lpVtbl -> AddGroup(This,pGroup) + +#define IAMTimeline_RemGroupFromList(This,pGroup) \ + (This)->lpVtbl -> RemGroupFromList(This,pGroup) + +#define IAMTimeline_GetGroup(This,ppGroup,WhichGroup) \ + (This)->lpVtbl -> GetGroup(This,ppGroup,WhichGroup) + +#define IAMTimeline_GetGroupCount(This,pCount) \ + (This)->lpVtbl -> GetGroupCount(This,pCount) + +#define IAMTimeline_ClearAllGroups(This) \ + (This)->lpVtbl -> ClearAllGroups(This) + +#define IAMTimeline_GetInsertMode(This,pMode) \ + (This)->lpVtbl -> GetInsertMode(This,pMode) + +#define IAMTimeline_SetInsertMode(This,Mode) \ + (This)->lpVtbl -> SetInsertMode(This,Mode) + +#define IAMTimeline_EnableTransitions(This,fEnabled) \ + (This)->lpVtbl -> EnableTransitions(This,fEnabled) + +#define IAMTimeline_TransitionsEnabled(This,pfEnabled) \ + (This)->lpVtbl -> TransitionsEnabled(This,pfEnabled) + +#define IAMTimeline_EnableEffects(This,fEnabled) \ + (This)->lpVtbl -> EnableEffects(This,fEnabled) + +#define IAMTimeline_EffectsEnabled(This,pfEnabled) \ + (This)->lpVtbl -> EffectsEnabled(This,pfEnabled) + +#define IAMTimeline_SetInterestRange(This,Start,Stop) \ + (This)->lpVtbl -> SetInterestRange(This,Start,Stop) + +#define IAMTimeline_GetDuration(This,pDuration) \ + (This)->lpVtbl -> GetDuration(This,pDuration) + +#define IAMTimeline_GetDuration2(This,pDuration) \ + (This)->lpVtbl -> GetDuration2(This,pDuration) + +#define IAMTimeline_SetDefaultFPS(This,FPS) \ + (This)->lpVtbl -> SetDefaultFPS(This,FPS) + +#define IAMTimeline_GetDefaultFPS(This,pFPS) \ + (This)->lpVtbl -> GetDefaultFPS(This,pFPS) + +#define IAMTimeline_IsDirty(This,pDirty) \ + (This)->lpVtbl -> IsDirty(This,pDirty) + +#define IAMTimeline_GetDirtyRange(This,pStart,pStop) \ + (This)->lpVtbl -> GetDirtyRange(This,pStart,pStop) + +#define IAMTimeline_GetCountOfType(This,Group,pVal,pValWithComps,MajorType) \ + (This)->lpVtbl -> GetCountOfType(This,Group,pVal,pValWithComps,MajorType) + +#define IAMTimeline_ValidateSourceNames(This,ValidateFlags,pOverride,NotifyEventHandle) \ + (This)->lpVtbl -> ValidateSourceNames(This,ValidateFlags,pOverride,NotifyEventHandle) + +#define IAMTimeline_SetDefaultTransition(This,pGuid) \ + (This)->lpVtbl -> SetDefaultTransition(This,pGuid) + +#define IAMTimeline_GetDefaultTransition(This,pGuid) \ + (This)->lpVtbl -> GetDefaultTransition(This,pGuid) + +#define IAMTimeline_SetDefaultEffect(This,pGuid) \ + (This)->lpVtbl -> SetDefaultEffect(This,pGuid) + +#define IAMTimeline_GetDefaultEffect(This,pGuid) \ + (This)->lpVtbl -> GetDefaultEffect(This,pGuid) + +#define IAMTimeline_SetDefaultTransitionB(This,pGuid) \ + (This)->lpVtbl -> SetDefaultTransitionB(This,pGuid) + +#define IAMTimeline_GetDefaultTransitionB(This,pGuid) \ + (This)->lpVtbl -> GetDefaultTransitionB(This,pGuid) + +#define IAMTimeline_SetDefaultEffectB(This,pGuid) \ + (This)->lpVtbl -> SetDefaultEffectB(This,pGuid) + +#define IAMTimeline_GetDefaultEffectB(This,pGuid) \ + (This)->lpVtbl -> GetDefaultEffectB(This,pGuid) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimeline_CreateEmptyNode_Proxy( + IAMTimeline * This, + /* [out] */ IAMTimelineObj **ppObj, + TIMELINE_MAJOR_TYPE Type); + + +void __RPC_STUB IAMTimeline_CreateEmptyNode_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IAMTimeline_AddGroup_Proxy( + IAMTimeline * This, + IAMTimelineObj *pGroup); + + +void __RPC_STUB IAMTimeline_AddGroup_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IAMTimeline_RemGroupFromList_Proxy( + IAMTimeline * This, + IAMTimelineObj *pGroup); + + +void __RPC_STUB IAMTimeline_RemGroupFromList_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IAMTimeline_GetGroup_Proxy( + IAMTimeline * This, + /* [out] */ IAMTimelineObj **ppGroup, + long WhichGroup); + + +void __RPC_STUB IAMTimeline_GetGroup_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IAMTimeline_GetGroupCount_Proxy( + IAMTimeline * This, + long *pCount); + + +void __RPC_STUB IAMTimeline_GetGroupCount_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IAMTimeline_ClearAllGroups_Proxy( + IAMTimeline * This); + + +void __RPC_STUB IAMTimeline_ClearAllGroups_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IAMTimeline_GetInsertMode_Proxy( + IAMTimeline * This, + long *pMode); + + +void __RPC_STUB IAMTimeline_GetInsertMode_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimeline_SetInsertMode_Proxy( + IAMTimeline * This, + long Mode); + + +void __RPC_STUB IAMTimeline_SetInsertMode_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimeline_EnableTransitions_Proxy( + IAMTimeline * This, + BOOL fEnabled); + + +void __RPC_STUB IAMTimeline_EnableTransitions_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimeline_TransitionsEnabled_Proxy( + IAMTimeline * This, + BOOL *pfEnabled); + + +void __RPC_STUB IAMTimeline_TransitionsEnabled_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimeline_EnableEffects_Proxy( + IAMTimeline * This, + BOOL fEnabled); + + +void __RPC_STUB IAMTimeline_EnableEffects_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimeline_EffectsEnabled_Proxy( + IAMTimeline * This, + BOOL *pfEnabled); + + +void __RPC_STUB IAMTimeline_EffectsEnabled_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimeline_SetInterestRange_Proxy( + IAMTimeline * This, + REFERENCE_TIME Start, + REFERENCE_TIME Stop); + + +void __RPC_STUB IAMTimeline_SetInterestRange_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimeline_GetDuration_Proxy( + IAMTimeline * This, + REFERENCE_TIME *pDuration); + + +void __RPC_STUB IAMTimeline_GetDuration_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimeline_GetDuration2_Proxy( + IAMTimeline * This, + double *pDuration); + + +void __RPC_STUB IAMTimeline_GetDuration2_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimeline_SetDefaultFPS_Proxy( + IAMTimeline * This, + double FPS); + + +void __RPC_STUB IAMTimeline_SetDefaultFPS_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimeline_GetDefaultFPS_Proxy( + IAMTimeline * This, + double *pFPS); + + +void __RPC_STUB IAMTimeline_GetDefaultFPS_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimeline_IsDirty_Proxy( + IAMTimeline * This, + BOOL *pDirty); + + +void __RPC_STUB IAMTimeline_IsDirty_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimeline_GetDirtyRange_Proxy( + IAMTimeline * This, + REFERENCE_TIME *pStart, + REFERENCE_TIME *pStop); + + +void __RPC_STUB IAMTimeline_GetDirtyRange_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMTimeline_GetCountOfType_Proxy( + IAMTimeline * This, + long Group, + long *pVal, + long *pValWithComps, + TIMELINE_MAJOR_TYPE MajorType); + + +void __RPC_STUB IAMTimeline_GetCountOfType_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IAMTimeline_ValidateSourceNames_Proxy( + IAMTimeline * This, + long ValidateFlags, + IMediaLocator *pOverride, + LONG_PTR NotifyEventHandle); + + +void __RPC_STUB IAMTimeline_ValidateSourceNames_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IAMTimeline_SetDefaultTransition_Proxy( + IAMTimeline * This, + GUID *pGuid); + + +void __RPC_STUB IAMTimeline_SetDefaultTransition_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IAMTimeline_GetDefaultTransition_Proxy( + IAMTimeline * This, + GUID *pGuid); + + +void __RPC_STUB IAMTimeline_GetDefaultTransition_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IAMTimeline_SetDefaultEffect_Proxy( + IAMTimeline * This, + GUID *pGuid); + + +void __RPC_STUB IAMTimeline_SetDefaultEffect_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IAMTimeline_GetDefaultEffect_Proxy( + IAMTimeline * This, + GUID *pGuid); + + +void __RPC_STUB IAMTimeline_GetDefaultEffect_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IAMTimeline_SetDefaultTransitionB_Proxy( + IAMTimeline * This, + BSTR pGuid); + + +void __RPC_STUB IAMTimeline_SetDefaultTransitionB_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IAMTimeline_GetDefaultTransitionB_Proxy( + IAMTimeline * This, + /* [retval][out] */ BSTR *pGuid); + + +void __RPC_STUB IAMTimeline_GetDefaultTransitionB_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IAMTimeline_SetDefaultEffectB_Proxy( + IAMTimeline * This, + BSTR pGuid); + + +void __RPC_STUB IAMTimeline_SetDefaultEffectB_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IAMTimeline_GetDefaultEffectB_Proxy( + IAMTimeline * This, + /* [retval][out] */ BSTR *pGuid); + + +void __RPC_STUB IAMTimeline_GetDefaultEffectB_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IAMTimeline_INTERFACE_DEFINED__ */ + + +#ifndef __IXml2Dex_INTERFACE_DEFINED__ +#define __IXml2Dex_INTERFACE_DEFINED__ + +/* interface IXml2Dex */ +/* [unique][helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IXml2Dex; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("18C628ED-962A-11D2-8D08-00A0C9441E20") + IXml2Dex : public IDispatch + { + public: + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE CreateGraphFromFile( + /* [out] */ IUnknown **ppGraph, + IUnknown *pTimeline, + BSTR Filename) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE WriteGrfFile( + IUnknown *pGraph, + BSTR FileName) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE WriteXMLFile( + IUnknown *pTimeline, + BSTR FileName) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE ReadXMLFile( + IUnknown *pTimeline, + BSTR XMLName) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Delete( + IUnknown *pTimeline, + double dStart, + double dEnd) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE WriteXMLPart( + IUnknown *pTimeline, + double dStart, + double dEnd, + BSTR FileName) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE PasteXMLFile( + IUnknown *pTimeline, + double dStart, + BSTR FileName) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE CopyXML( + IUnknown *pTimeline, + double dStart, + double dEnd) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE PasteXML( + IUnknown *pTimeline, + double dStart) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Reset( void) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE ReadXML( + IUnknown *pTimeline, + IUnknown *pXML) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE WriteXML( + IUnknown *pTimeline, + BSTR *pbstrXML) = 0; + + }; + +#else /* C style interface */ + + typedef struct IXml2DexVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IXml2Dex * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IXml2Dex * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IXml2Dex * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IXml2Dex * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IXml2Dex * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IXml2Dex * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IXml2Dex * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *CreateGraphFromFile )( + IXml2Dex * This, + /* [out] */ IUnknown **ppGraph, + IUnknown *pTimeline, + BSTR Filename); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *WriteGrfFile )( + IXml2Dex * This, + IUnknown *pGraph, + BSTR FileName); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *WriteXMLFile )( + IXml2Dex * This, + IUnknown *pTimeline, + BSTR FileName); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *ReadXMLFile )( + IXml2Dex * This, + IUnknown *pTimeline, + BSTR XMLName); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Delete )( + IXml2Dex * This, + IUnknown *pTimeline, + double dStart, + double dEnd); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *WriteXMLPart )( + IXml2Dex * This, + IUnknown *pTimeline, + double dStart, + double dEnd, + BSTR FileName); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *PasteXMLFile )( + IXml2Dex * This, + IUnknown *pTimeline, + double dStart, + BSTR FileName); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *CopyXML )( + IXml2Dex * This, + IUnknown *pTimeline, + double dStart, + double dEnd); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *PasteXML )( + IXml2Dex * This, + IUnknown *pTimeline, + double dStart); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Reset )( + IXml2Dex * This); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *ReadXML )( + IXml2Dex * This, + IUnknown *pTimeline, + IUnknown *pXML); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *WriteXML )( + IXml2Dex * This, + IUnknown *pTimeline, + BSTR *pbstrXML); + + END_INTERFACE + } IXml2DexVtbl; + + interface IXml2Dex + { + CONST_VTBL struct IXml2DexVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IXml2Dex_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IXml2Dex_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IXml2Dex_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IXml2Dex_GetTypeInfoCount(This,pctinfo) \ + (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) + +#define IXml2Dex_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) + +#define IXml2Dex_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) + +#define IXml2Dex_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) + + +#define IXml2Dex_CreateGraphFromFile(This,ppGraph,pTimeline,Filename) \ + (This)->lpVtbl -> CreateGraphFromFile(This,ppGraph,pTimeline,Filename) + +#define IXml2Dex_WriteGrfFile(This,pGraph,FileName) \ + (This)->lpVtbl -> WriteGrfFile(This,pGraph,FileName) + +#define IXml2Dex_WriteXMLFile(This,pTimeline,FileName) \ + (This)->lpVtbl -> WriteXMLFile(This,pTimeline,FileName) + +#define IXml2Dex_ReadXMLFile(This,pTimeline,XMLName) \ + (This)->lpVtbl -> ReadXMLFile(This,pTimeline,XMLName) + +#define IXml2Dex_Delete(This,pTimeline,dStart,dEnd) \ + (This)->lpVtbl -> Delete(This,pTimeline,dStart,dEnd) + +#define IXml2Dex_WriteXMLPart(This,pTimeline,dStart,dEnd,FileName) \ + (This)->lpVtbl -> WriteXMLPart(This,pTimeline,dStart,dEnd,FileName) + +#define IXml2Dex_PasteXMLFile(This,pTimeline,dStart,FileName) \ + (This)->lpVtbl -> PasteXMLFile(This,pTimeline,dStart,FileName) + +#define IXml2Dex_CopyXML(This,pTimeline,dStart,dEnd) \ + (This)->lpVtbl -> CopyXML(This,pTimeline,dStart,dEnd) + +#define IXml2Dex_PasteXML(This,pTimeline,dStart) \ + (This)->lpVtbl -> PasteXML(This,pTimeline,dStart) + +#define IXml2Dex_Reset(This) \ + (This)->lpVtbl -> Reset(This) + +#define IXml2Dex_ReadXML(This,pTimeline,pXML) \ + (This)->lpVtbl -> ReadXML(This,pTimeline,pXML) + +#define IXml2Dex_WriteXML(This,pTimeline,pbstrXML) \ + (This)->lpVtbl -> WriteXML(This,pTimeline,pbstrXML) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IXml2Dex_CreateGraphFromFile_Proxy( + IXml2Dex * This, + /* [out] */ IUnknown **ppGraph, + IUnknown *pTimeline, + BSTR Filename); + + +void __RPC_STUB IXml2Dex_CreateGraphFromFile_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IXml2Dex_WriteGrfFile_Proxy( + IXml2Dex * This, + IUnknown *pGraph, + BSTR FileName); + + +void __RPC_STUB IXml2Dex_WriteGrfFile_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IXml2Dex_WriteXMLFile_Proxy( + IXml2Dex * This, + IUnknown *pTimeline, + BSTR FileName); + + +void __RPC_STUB IXml2Dex_WriteXMLFile_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IXml2Dex_ReadXMLFile_Proxy( + IXml2Dex * This, + IUnknown *pTimeline, + BSTR XMLName); + + +void __RPC_STUB IXml2Dex_ReadXMLFile_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IXml2Dex_Delete_Proxy( + IXml2Dex * This, + IUnknown *pTimeline, + double dStart, + double dEnd); + + +void __RPC_STUB IXml2Dex_Delete_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IXml2Dex_WriteXMLPart_Proxy( + IXml2Dex * This, + IUnknown *pTimeline, + double dStart, + double dEnd, + BSTR FileName); + + +void __RPC_STUB IXml2Dex_WriteXMLPart_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IXml2Dex_PasteXMLFile_Proxy( + IXml2Dex * This, + IUnknown *pTimeline, + double dStart, + BSTR FileName); + + +void __RPC_STUB IXml2Dex_PasteXMLFile_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IXml2Dex_CopyXML_Proxy( + IXml2Dex * This, + IUnknown *pTimeline, + double dStart, + double dEnd); + + +void __RPC_STUB IXml2Dex_CopyXML_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IXml2Dex_PasteXML_Proxy( + IXml2Dex * This, + IUnknown *pTimeline, + double dStart); + + +void __RPC_STUB IXml2Dex_PasteXML_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IXml2Dex_Reset_Proxy( + IXml2Dex * This); + + +void __RPC_STUB IXml2Dex_Reset_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IXml2Dex_ReadXML_Proxy( + IXml2Dex * This, + IUnknown *pTimeline, + IUnknown *pXML); + + +void __RPC_STUB IXml2Dex_ReadXML_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IXml2Dex_WriteXML_Proxy( + IXml2Dex * This, + IUnknown *pTimeline, + BSTR *pbstrXML); + + +void __RPC_STUB IXml2Dex_WriteXML_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IXml2Dex_INTERFACE_DEFINED__ */ + + +#ifndef __IAMErrorLog_INTERFACE_DEFINED__ +#define __IAMErrorLog_INTERFACE_DEFINED__ + +/* interface IAMErrorLog */ +/* [unique][helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IAMErrorLog; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("E43E73A2-0EFA-11d3-9601-00A0C9441E20") + IAMErrorLog : public IUnknown + { + public: + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE LogError( + long Severity, + BSTR pErrorString, + long ErrorCode, + long hresult, + /* [in] */ VARIANT *pExtraInfo) = 0; + + }; + +#else /* C style interface */ + + typedef struct IAMErrorLogVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IAMErrorLog * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IAMErrorLog * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IAMErrorLog * This); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *LogError )( + IAMErrorLog * This, + long Severity, + BSTR pErrorString, + long ErrorCode, + long hresult, + /* [in] */ VARIANT *pExtraInfo); + + END_INTERFACE + } IAMErrorLogVtbl; + + interface IAMErrorLog + { + CONST_VTBL struct IAMErrorLogVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IAMErrorLog_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IAMErrorLog_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IAMErrorLog_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IAMErrorLog_LogError(This,Severity,pErrorString,ErrorCode,hresult,pExtraInfo) \ + (This)->lpVtbl -> LogError(This,Severity,pErrorString,ErrorCode,hresult,pExtraInfo) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IAMErrorLog_LogError_Proxy( + IAMErrorLog * This, + long Severity, + BSTR pErrorString, + long ErrorCode, + long hresult, + /* [in] */ VARIANT *pExtraInfo); + + +void __RPC_STUB IAMErrorLog_LogError_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IAMErrorLog_INTERFACE_DEFINED__ */ + + +#ifndef __IAMSetErrorLog_INTERFACE_DEFINED__ +#define __IAMSetErrorLog_INTERFACE_DEFINED__ + +/* interface IAMSetErrorLog */ +/* [unique][helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IAMSetErrorLog; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("963566DA-BE21-4eaf-88E9-35704F8F52A1") + IAMSetErrorLog : public IUnknown + { + public: + virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_ErrorLog( + /* [retval][out] */ IAMErrorLog **pVal) = 0; + + virtual /* [helpstring][propput] */ HRESULT STDMETHODCALLTYPE put_ErrorLog( + /* [in] */ IAMErrorLog *newVal) = 0; + + }; + +#else /* C style interface */ + + typedef struct IAMSetErrorLogVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IAMSetErrorLog * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IAMSetErrorLog * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IAMSetErrorLog * This); + + /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_ErrorLog )( + IAMSetErrorLog * This, + /* [retval][out] */ IAMErrorLog **pVal); + + /* [helpstring][propput] */ HRESULT ( STDMETHODCALLTYPE *put_ErrorLog )( + IAMSetErrorLog * This, + /* [in] */ IAMErrorLog *newVal); + + END_INTERFACE + } IAMSetErrorLogVtbl; + + interface IAMSetErrorLog + { + CONST_VTBL struct IAMSetErrorLogVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IAMSetErrorLog_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IAMSetErrorLog_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IAMSetErrorLog_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IAMSetErrorLog_get_ErrorLog(This,pVal) \ + (This)->lpVtbl -> get_ErrorLog(This,pVal) + +#define IAMSetErrorLog_put_ErrorLog(This,newVal) \ + (This)->lpVtbl -> put_ErrorLog(This,newVal) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IAMSetErrorLog_get_ErrorLog_Proxy( + IAMSetErrorLog * This, + /* [retval][out] */ IAMErrorLog **pVal); + + +void __RPC_STUB IAMSetErrorLog_get_ErrorLog_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][propput] */ HRESULT STDMETHODCALLTYPE IAMSetErrorLog_put_ErrorLog_Proxy( + IAMSetErrorLog * This, + /* [in] */ IAMErrorLog *newVal); + + +void __RPC_STUB IAMSetErrorLog_put_ErrorLog_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IAMSetErrorLog_INTERFACE_DEFINED__ */ + + +#ifndef __ISampleGrabberCB_INTERFACE_DEFINED__ +#define __ISampleGrabberCB_INTERFACE_DEFINED__ + +/* interface ISampleGrabberCB */ +/* [unique][helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_ISampleGrabberCB; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("0579154A-2B53-4994-B0D0-E773148EFF85") + ISampleGrabberCB : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE SampleCB( + double SampleTime, + IMediaSample *pSample) = 0; + + virtual HRESULT STDMETHODCALLTYPE BufferCB( + double SampleTime, + BYTE *pBuffer, + long BufferLen) = 0; + + }; + +#else /* C style interface */ + + typedef struct ISampleGrabberCBVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ISampleGrabberCB * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ISampleGrabberCB * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ISampleGrabberCB * This); + + HRESULT ( STDMETHODCALLTYPE *SampleCB )( + ISampleGrabberCB * This, + double SampleTime, + IMediaSample *pSample); + + HRESULT ( STDMETHODCALLTYPE *BufferCB )( + ISampleGrabberCB * This, + double SampleTime, + BYTE *pBuffer, + long BufferLen); + + END_INTERFACE + } ISampleGrabberCBVtbl; + + interface ISampleGrabberCB + { + CONST_VTBL struct ISampleGrabberCBVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ISampleGrabberCB_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define ISampleGrabberCB_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define ISampleGrabberCB_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define ISampleGrabberCB_SampleCB(This,SampleTime,pSample) \ + (This)->lpVtbl -> SampleCB(This,SampleTime,pSample) + +#define ISampleGrabberCB_BufferCB(This,SampleTime,pBuffer,BufferLen) \ + (This)->lpVtbl -> BufferCB(This,SampleTime,pBuffer,BufferLen) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE ISampleGrabberCB_SampleCB_Proxy( + ISampleGrabberCB * This, + double SampleTime, + IMediaSample *pSample); + + +void __RPC_STUB ISampleGrabberCB_SampleCB_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ISampleGrabberCB_BufferCB_Proxy( + ISampleGrabberCB * This, + double SampleTime, + BYTE *pBuffer, + long BufferLen); + + +void __RPC_STUB ISampleGrabberCB_BufferCB_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __ISampleGrabberCB_INTERFACE_DEFINED__ */ + + +#ifndef __ISampleGrabber_INTERFACE_DEFINED__ +#define __ISampleGrabber_INTERFACE_DEFINED__ + +/* interface ISampleGrabber */ +/* [unique][helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_ISampleGrabber; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("6B652FFF-11FE-4fce-92AD-0266B5D7C78F") + ISampleGrabber : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE SetOneShot( + BOOL OneShot) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetMediaType( + const AM_MEDIA_TYPE *pType) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetConnectedMediaType( + AM_MEDIA_TYPE *pType) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetBufferSamples( + BOOL BufferThem) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetCurrentBuffer( + /* [out][in] */ long *pBufferSize, + /* [out] */ long *pBuffer) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetCurrentSample( + /* [retval][out] */ IMediaSample **ppSample) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetCallback( + ISampleGrabberCB *pCallback, + long WhichMethodToCallback) = 0; + + }; + +#else /* C style interface */ + + typedef struct ISampleGrabberVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ISampleGrabber * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ISampleGrabber * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ISampleGrabber * This); + + HRESULT ( STDMETHODCALLTYPE *SetOneShot )( + ISampleGrabber * This, + BOOL OneShot); + + HRESULT ( STDMETHODCALLTYPE *SetMediaType )( + ISampleGrabber * This, + const AM_MEDIA_TYPE *pType); + + HRESULT ( STDMETHODCALLTYPE *GetConnectedMediaType )( + ISampleGrabber * This, + AM_MEDIA_TYPE *pType); + + HRESULT ( STDMETHODCALLTYPE *SetBufferSamples )( + ISampleGrabber * This, + BOOL BufferThem); + + HRESULT ( STDMETHODCALLTYPE *GetCurrentBuffer )( + ISampleGrabber * This, + /* [out][in] */ long *pBufferSize, + /* [out] */ long *pBuffer); + + HRESULT ( STDMETHODCALLTYPE *GetCurrentSample )( + ISampleGrabber * This, + /* [retval][out] */ IMediaSample **ppSample); + + HRESULT ( STDMETHODCALLTYPE *SetCallback )( + ISampleGrabber * This, + ISampleGrabberCB *pCallback, + long WhichMethodToCallback); + + END_INTERFACE + } ISampleGrabberVtbl; + + interface ISampleGrabber + { + CONST_VTBL struct ISampleGrabberVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ISampleGrabber_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define ISampleGrabber_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define ISampleGrabber_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define ISampleGrabber_SetOneShot(This,OneShot) \ + (This)->lpVtbl -> SetOneShot(This,OneShot) + +#define ISampleGrabber_SetMediaType(This,pType) \ + (This)->lpVtbl -> SetMediaType(This,pType) + +#define ISampleGrabber_GetConnectedMediaType(This,pType) \ + (This)->lpVtbl -> GetConnectedMediaType(This,pType) + +#define ISampleGrabber_SetBufferSamples(This,BufferThem) \ + (This)->lpVtbl -> SetBufferSamples(This,BufferThem) + +#define ISampleGrabber_GetCurrentBuffer(This,pBufferSize,pBuffer) \ + (This)->lpVtbl -> GetCurrentBuffer(This,pBufferSize,pBuffer) + +#define ISampleGrabber_GetCurrentSample(This,ppSample) \ + (This)->lpVtbl -> GetCurrentSample(This,ppSample) + +#define ISampleGrabber_SetCallback(This,pCallback,WhichMethodToCallback) \ + (This)->lpVtbl -> SetCallback(This,pCallback,WhichMethodToCallback) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE ISampleGrabber_SetOneShot_Proxy( + ISampleGrabber * This, + BOOL OneShot); + + +void __RPC_STUB ISampleGrabber_SetOneShot_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ISampleGrabber_SetMediaType_Proxy( + ISampleGrabber * This, + const AM_MEDIA_TYPE *pType); + + +void __RPC_STUB ISampleGrabber_SetMediaType_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ISampleGrabber_GetConnectedMediaType_Proxy( + ISampleGrabber * This, + AM_MEDIA_TYPE *pType); + + +void __RPC_STUB ISampleGrabber_GetConnectedMediaType_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ISampleGrabber_SetBufferSamples_Proxy( + ISampleGrabber * This, + BOOL BufferThem); + + +void __RPC_STUB ISampleGrabber_SetBufferSamples_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ISampleGrabber_GetCurrentBuffer_Proxy( + ISampleGrabber * This, + /* [out][in] */ long *pBufferSize, + /* [out] */ long *pBuffer); + + +void __RPC_STUB ISampleGrabber_GetCurrentBuffer_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ISampleGrabber_GetCurrentSample_Proxy( + ISampleGrabber * This, + /* [retval][out] */ IMediaSample **ppSample); + + +void __RPC_STUB ISampleGrabber_GetCurrentSample_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ISampleGrabber_SetCallback_Proxy( + ISampleGrabber * This, + ISampleGrabberCB *pCallback, + long WhichMethodToCallback); + + +void __RPC_STUB ISampleGrabber_SetCallback_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __ISampleGrabber_INTERFACE_DEFINED__ */ + + + +#ifndef __DexterLib_LIBRARY_DEFINED__ +#define __DexterLib_LIBRARY_DEFINED__ + +/* library DexterLib */ +/* [helpstring][version][uuid] */ + + +EXTERN_C const IID LIBID_DexterLib; + +#ifndef __IResize_INTERFACE_DEFINED__ +#define __IResize_INTERFACE_DEFINED__ + +/* interface IResize */ +/* [unique][helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IResize; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("4ada63a0-72d5-11d2-952a-0060081840bc") + IResize : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE get_Size( + /* [out] */ int *piHeight, + /* [out] */ int *piWidth, + /* [out] */ long *pFlag) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_InputSize( + /* [out] */ int *piHeight, + /* [out] */ int *piWidth) = 0; + + virtual HRESULT STDMETHODCALLTYPE put_Size( + /* [in] */ int Height, + /* [in] */ int Width, + /* [in] */ long Flag) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_MediaType( + /* [out] */ AM_MEDIA_TYPE *pmt) = 0; + + virtual HRESULT STDMETHODCALLTYPE put_MediaType( + /* [in] */ const AM_MEDIA_TYPE *pmt) = 0; + + }; + +#else /* C style interface */ + + typedef struct IResizeVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IResize * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IResize * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IResize * This); + + HRESULT ( STDMETHODCALLTYPE *get_Size )( + IResize * This, + /* [out] */ int *piHeight, + /* [out] */ int *piWidth, + /* [out] */ long *pFlag); + + HRESULT ( STDMETHODCALLTYPE *get_InputSize )( + IResize * This, + /* [out] */ int *piHeight, + /* [out] */ int *piWidth); + + HRESULT ( STDMETHODCALLTYPE *put_Size )( + IResize * This, + /* [in] */ int Height, + /* [in] */ int Width, + /* [in] */ long Flag); + + HRESULT ( STDMETHODCALLTYPE *get_MediaType )( + IResize * This, + /* [out] */ AM_MEDIA_TYPE *pmt); + + HRESULT ( STDMETHODCALLTYPE *put_MediaType )( + IResize * This, + /* [in] */ const AM_MEDIA_TYPE *pmt); + + END_INTERFACE + } IResizeVtbl; + + interface IResize + { + CONST_VTBL struct IResizeVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IResize_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IResize_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IResize_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IResize_get_Size(This,piHeight,piWidth,pFlag) \ + (This)->lpVtbl -> get_Size(This,piHeight,piWidth,pFlag) + +#define IResize_get_InputSize(This,piHeight,piWidth) \ + (This)->lpVtbl -> get_InputSize(This,piHeight,piWidth) + +#define IResize_put_Size(This,Height,Width,Flag) \ + (This)->lpVtbl -> put_Size(This,Height,Width,Flag) + +#define IResize_get_MediaType(This,pmt) \ + (This)->lpVtbl -> get_MediaType(This,pmt) + +#define IResize_put_MediaType(This,pmt) \ + (This)->lpVtbl -> put_MediaType(This,pmt) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IResize_get_Size_Proxy( + IResize * This, + /* [out] */ int *piHeight, + /* [out] */ int *piWidth, + /* [out] */ long *pFlag); + + +void __RPC_STUB IResize_get_Size_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IResize_get_InputSize_Proxy( + IResize * This, + /* [out] */ int *piHeight, + /* [out] */ int *piWidth); + + +void __RPC_STUB IResize_get_InputSize_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IResize_put_Size_Proxy( + IResize * This, + /* [in] */ int Height, + /* [in] */ int Width, + /* [in] */ long Flag); + + +void __RPC_STUB IResize_put_Size_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IResize_get_MediaType_Proxy( + IResize * This, + /* [out] */ AM_MEDIA_TYPE *pmt); + + +void __RPC_STUB IResize_get_MediaType_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IResize_put_MediaType_Proxy( + IResize * This, + /* [in] */ const AM_MEDIA_TYPE *pmt); + + +void __RPC_STUB IResize_put_MediaType_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IResize_INTERFACE_DEFINED__ */ + + +EXTERN_C const CLSID CLSID_AMTimeline; + +#ifdef __cplusplus + +class DECLSPEC_UUID("78530B75-61F9-11D2-8CAD-00A024580902") +AMTimeline; +#endif + +EXTERN_C const CLSID CLSID_AMTimelineObj; + +#ifdef __cplusplus + +class DECLSPEC_UUID("78530B78-61F9-11D2-8CAD-00A024580902") +AMTimelineObj; +#endif + +EXTERN_C const CLSID CLSID_AMTimelineSrc; + +#ifdef __cplusplus + +class DECLSPEC_UUID("78530B7A-61F9-11D2-8CAD-00A024580902") +AMTimelineSrc; +#endif + +EXTERN_C const CLSID CLSID_AMTimelineTrack; + +#ifdef __cplusplus + +class DECLSPEC_UUID("8F6C3C50-897B-11d2-8CFB-00A0C9441E20") +AMTimelineTrack; +#endif + +EXTERN_C const CLSID CLSID_AMTimelineComp; + +#ifdef __cplusplus + +class DECLSPEC_UUID("74D2EC80-6233-11d2-8CAD-00A024580902") +AMTimelineComp; +#endif + +EXTERN_C const CLSID CLSID_AMTimelineGroup; + +#ifdef __cplusplus + +class DECLSPEC_UUID("F6D371E1-B8A6-11d2-8023-00C0DF10D434") +AMTimelineGroup; +#endif + +EXTERN_C const CLSID CLSID_AMTimelineTrans; + +#ifdef __cplusplus + +class DECLSPEC_UUID("74D2EC81-6233-11d2-8CAD-00A024580902") +AMTimelineTrans; +#endif + +EXTERN_C const CLSID CLSID_AMTimelineEffect; + +#ifdef __cplusplus + +class DECLSPEC_UUID("74D2EC82-6233-11d2-8CAD-00A024580902") +AMTimelineEffect; +#endif + +EXTERN_C const CLSID CLSID_RenderEngine; + +#ifdef __cplusplus + +class DECLSPEC_UUID("64D8A8E0-80A2-11d2-8CF3-00A0C9441E20") +RenderEngine; +#endif + +EXTERN_C const CLSID CLSID_SmartRenderEngine; + +#ifdef __cplusplus + +class DECLSPEC_UUID("498B0949-BBE9-4072-98BE-6CCAEB79DC6F") +SmartRenderEngine; +#endif + +EXTERN_C const CLSID CLSID_AudMixer; + +#ifdef __cplusplus + +class DECLSPEC_UUID("036A9790-C153-11d2-9EF7-006008039E37") +AudMixer; +#endif + +EXTERN_C const CLSID CLSID_Xml2Dex; + +#ifdef __cplusplus + +class DECLSPEC_UUID("18C628EE-962A-11D2-8D08-00A0C9441E20") +Xml2Dex; +#endif + +EXTERN_C const CLSID CLSID_MediaLocator; + +#ifdef __cplusplus + +class DECLSPEC_UUID("CC1101F2-79DC-11D2-8CE6-00A0C9441E20") +MediaLocator; +#endif + +EXTERN_C const CLSID CLSID_PropertySetter; + +#ifdef __cplusplus + +class DECLSPEC_UUID("ADF95821-DED7-11d2-ACBE-0080C75E246E") +PropertySetter; +#endif + +EXTERN_C const CLSID CLSID_MediaDet; + +#ifdef __cplusplus + +class DECLSPEC_UUID("65BD0711-24D2-4ff7-9324-ED2E5D3ABAFA") +MediaDet; +#endif + +EXTERN_C const CLSID CLSID_SampleGrabber; + +#ifdef __cplusplus + +class DECLSPEC_UUID("C1F400A0-3F08-11d3-9F0B-006008039E37") +SampleGrabber; +#endif + +EXTERN_C const CLSID CLSID_NullRenderer; + +#ifdef __cplusplus + +class DECLSPEC_UUID("C1F400A4-3F08-11d3-9F0B-006008039E37") +NullRenderer; +#endif + +EXTERN_C const CLSID CLSID_DxtCompositor; + +#ifdef __cplusplus + +class DECLSPEC_UUID("BB44391D-6ABD-422f-9E2E-385C9DFF51FC") +DxtCompositor; +#endif + +EXTERN_C const CLSID CLSID_DxtAlphaSetter; + +#ifdef __cplusplus + +class DECLSPEC_UUID("506D89AE-909A-44f7-9444-ABD575896E35") +DxtAlphaSetter; +#endif + +EXTERN_C const CLSID CLSID_DxtJpeg; + +#ifdef __cplusplus + +class DECLSPEC_UUID("DE75D012-7A65-11D2-8CEA-00A0C9441E20") +DxtJpeg; +#endif + +EXTERN_C const CLSID CLSID_ColorSource; + +#ifdef __cplusplus + +class DECLSPEC_UUID("0cfdd070-581a-11d2-9ee6-006008039e37") +ColorSource; +#endif + +EXTERN_C const CLSID CLSID_DxtKey; + +#ifdef __cplusplus + +class DECLSPEC_UUID("C5B19592-145E-11d3-9F04-006008039E37") +DxtKey; +#endif +#endif /* __DexterLib_LIBRARY_DEFINED__ */ + +/* interface __MIDL_itf_qedit_0484 */ +/* [local] */ + + +enum __MIDL___MIDL_itf_qedit_0484_0001 + { E_NOTINTREE = 0x80040400, + E_RENDER_ENGINE_IS_BROKEN = 0x80040401, + E_MUST_INIT_RENDERER = 0x80040402, + E_NOTDETERMINED = 0x80040403, + E_NO_TIMELINE = 0x80040404, + S_WARN_OUTPUTRESET = 40404 + } ; +#define DEX_IDS_BAD_SOURCE_NAME 1400 +#define DEX_IDS_BAD_SOURCE_NAME2 1401 +#define DEX_IDS_MISSING_SOURCE_NAME 1402 +#define DEX_IDS_UNKNOWN_SOURCE 1403 +#define DEX_IDS_INSTALL_PROBLEM 1404 +#define DEX_IDS_NO_SOURCE_NAMES 1405 +#define DEX_IDS_BAD_MEDIATYPE 1406 +#define DEX_IDS_STREAM_NUMBER 1407 +#define DEX_IDS_OUTOFMEMORY 1408 +#define DEX_IDS_DIBSEQ_NOTALLSAME 1409 +#define DEX_IDS_CLIPTOOSHORT 1410 +#define DEX_IDS_INVALID_DXT 1411 +#define DEX_IDS_INVALID_DEFAULT_DXT 1412 +#define DEX_IDS_NO_3D 1413 +#define DEX_IDS_BROKEN_DXT 1414 +#define DEX_IDS_NO_SUCH_PROPERTY 1415 +#define DEX_IDS_ILLEGAL_PROPERTY_VAL 1416 +#define DEX_IDS_INVALID_XML 1417 +#define DEX_IDS_CANT_FIND_FILTER 1418 +#define DEX_IDS_DISK_WRITE_ERROR 1419 +#define DEX_IDS_INVALID_AUDIO_FX 1420 +#define DEX_IDS_CANT_FIND_COMPRESSOR 1421 +#define DEX_IDS_TIMELINE_PARSE 1426 +#define DEX_IDS_GRAPH_ERROR 1427 +#define DEX_IDS_GRID_ERROR 1428 +#define DEX_IDS_INTERFACE_ERROR 1429 +EXTERN_GUID(CLSID_VideoEffects1Category, 0xcc7bfb42, 0xf175, 0x11d1, 0xa3, 0x92, 0x0, 0xe0, 0x29, 0x1f, 0x39, 0x59); +EXTERN_GUID(CLSID_VideoEffects2Category, 0xcc7bfb43, 0xf175, 0x11d1, 0xa3, 0x92, 0x0, 0xe0, 0x29, 0x1f, 0x39, 0x59); +EXTERN_GUID(CLSID_AudioEffects1Category, 0xcc7bfb44, 0xf175, 0x11d1, 0xa3, 0x92, 0x0, 0xe0, 0x29, 0x1f, 0x39, 0x59); +EXTERN_GUID(CLSID_AudioEffects2Category, 0xcc7bfb45, 0xf175, 0x11d1, 0xa3, 0x92, 0x0, 0xe0, 0x29, 0x1f, 0x39, 0x59); + + +extern RPC_IF_HANDLE __MIDL_itf_qedit_0484_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_qedit_0484_v0_0_s_ifspec; + +/* Additional Prototypes for ALL interfaces */ + +unsigned long __RPC_USER BSTR_UserSize( unsigned long *, unsigned long , BSTR * ); +unsigned char * __RPC_USER BSTR_UserMarshal( unsigned long *, unsigned char *, BSTR * ); +unsigned char * __RPC_USER BSTR_UserUnmarshal(unsigned long *, unsigned char *, BSTR * ); +void __RPC_USER BSTR_UserFree( unsigned long *, BSTR * ); + +unsigned long __RPC_USER VARIANT_UserSize( unsigned long *, unsigned long , VARIANT * ); +unsigned char * __RPC_USER VARIANT_UserMarshal( unsigned long *, unsigned char *, VARIANT * ); +unsigned char * __RPC_USER VARIANT_UserUnmarshal(unsigned long *, unsigned char *, VARIANT * ); +void __RPC_USER VARIANT_UserFree( unsigned long *, VARIANT * ); + +/* end of Additional Prototypes */ + +#ifdef __cplusplus +} +#endif + +#endif + + diff --git a/videoInputSrcAndDemos/libs/DShow/Include/qnetwork.h b/videoInputSrcAndDemos/libs/DShow/Include/qnetwork.h index a4aeacd..2df2194 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/qnetwork.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/qnetwork.h @@ -1,555 +1,555 @@ -//------------------------------------------------------------------------------ -// File: qnetwork.h -// -// Desc: This header file machine-generated by mktyplib.exe. -// Interface to type library: QuartzNetTypeLib -// -// Copyright (c) 1997-2001, Microsoft Corporation. All rights reserved. -//------------------------------------------------------------------------------ - - -#ifndef _QuartzNetTypeLib_H_ -#define _QuartzNetTypeLib_H_ - -DEFINE_GUID(LIBID_QuartzNetTypeLib,0x56A868B1L,0x0AD4,0x11CE,0xB0,0x3A,0x00,0x20,0xAF,0x0B,0xA7,0x70); -#ifndef BEGIN_INTERFACE -#define BEGIN_INTERFACE -#endif - -DEFINE_GUID(IID_IAMNetShowConfig,0xFA2AA8F1L,0x8B62,0x11D0,0xA5,0x20,0x00,0x00,0x00,0x00,0x00,0x00); - -/* Definition of interface: IAMNetShowConfig */ -#undef INTERFACE -#define INTERFACE IAMNetShowConfig - -DECLARE_INTERFACE_(IAMNetShowConfig, IDispatch) -{ -BEGIN_INTERFACE -#ifndef NO_BASEINTERFACE_FUNCS - - /* IUnknown methods */ - STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; - STDMETHOD_(ULONG, AddRef)(THIS) PURE; - STDMETHOD_(ULONG, Release)(THIS) PURE; - - /* IDispatch methods */ - STDMETHOD(GetTypeInfoCount)(THIS_ UINT FAR* pctinfo) PURE; - - STDMETHOD(GetTypeInfo)( - THIS_ - UINT itinfo, - LCID lcid, - ITypeInfo FAR* FAR* pptinfo) PURE; - - STDMETHOD(GetIDsOfNames)( - THIS_ - REFIID riid, - OLECHAR FAR* FAR* rgszNames, - UINT cNames, - LCID lcid, - DISPID FAR* rgdispid) PURE; - - STDMETHOD(Invoke)( - THIS_ - DISPID dispidMember, - REFIID riid, - LCID lcid, - WORD wFlags, - DISPPARAMS FAR* pdispparams, - VARIANT FAR* pvarResult, - EXCEPINFO FAR* pexcepinfo, - UINT FAR* puArgErr) PURE; -#endif - - /* IAMNetShowConfig methods */ - STDMETHOD(get_BufferingTime)(THIS_ double FAR* pBufferingTime) PURE; - STDMETHOD(put_BufferingTime)(THIS_ double BufferingTime) PURE; - STDMETHOD(get_UseFixedUDPPort)(THIS_ VARIANT_BOOL FAR* pUseFixedUDPPort) PURE; - STDMETHOD(put_UseFixedUDPPort)(THIS_ VARIANT_BOOL UseFixedUDPPort) PURE; - STDMETHOD(get_FixedUDPPort)(THIS_ long FAR* pFixedUDPPort) PURE; - STDMETHOD(put_FixedUDPPort)(THIS_ long FixedUDPPort) PURE; - STDMETHOD(get_UseHTTPProxy)(THIS_ VARIANT_BOOL FAR* pUseHTTPProxy) PURE; - STDMETHOD(put_UseHTTPProxy)(THIS_ VARIANT_BOOL UseHTTPProxy) PURE; - STDMETHOD(get_EnableAutoProxy)(THIS_ VARIANT_BOOL FAR* pEnableAutoProxy) PURE; - STDMETHOD(put_EnableAutoProxy)(THIS_ VARIANT_BOOL EnableAutoProxy) PURE; - STDMETHOD(get_HTTPProxyHost)(THIS_ BSTR FAR* pbstrHTTPProxyHost) PURE; - STDMETHOD(put_HTTPProxyHost)(THIS_ BSTR bstrHTTPProxyHost) PURE; - STDMETHOD(get_HTTPProxyPort)(THIS_ long FAR* pHTTPProxyPort) PURE; - STDMETHOD(put_HTTPProxyPort)(THIS_ long HTTPProxyPort) PURE; - STDMETHOD(get_EnableMulticast)(THIS_ VARIANT_BOOL FAR* pEnableMulticast) PURE; - STDMETHOD(put_EnableMulticast)(THIS_ VARIANT_BOOL EnableMulticast) PURE; - STDMETHOD(get_EnableUDP)(THIS_ VARIANT_BOOL FAR* pEnableUDP) PURE; - STDMETHOD(put_EnableUDP)(THIS_ VARIANT_BOOL EnableUDP) PURE; - STDMETHOD(get_EnableTCP)(THIS_ VARIANT_BOOL FAR* pEnableTCP) PURE; - STDMETHOD(put_EnableTCP)(THIS_ VARIANT_BOOL EnableTCP) PURE; - STDMETHOD(get_EnableHTTP)(THIS_ VARIANT_BOOL FAR* pEnableHTTP) PURE; - STDMETHOD(put_EnableHTTP)(THIS_ VARIANT_BOOL EnableHTTP) PURE; -}; - -DEFINE_GUID(IID_IAMChannelInfo,0xFA2AA8F2L,0x8B62,0x11D0,0xA5,0x20,0x00,0x00,0x00,0x00,0x00,0x00); - -/* Definition of interface: IAMChannelInfo */ -#undef INTERFACE -#define INTERFACE IAMChannelInfo - -DECLARE_INTERFACE_(IAMChannelInfo, IDispatch) -{ -BEGIN_INTERFACE -#ifndef NO_BASEINTERFACE_FUNCS - - /* IUnknown methods */ - STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; - STDMETHOD_(ULONG, AddRef)(THIS) PURE; - STDMETHOD_(ULONG, Release)(THIS) PURE; - - /* IDispatch methods */ - STDMETHOD(GetTypeInfoCount)(THIS_ UINT FAR* pctinfo) PURE; - - STDMETHOD(GetTypeInfo)( - THIS_ - UINT itinfo, - LCID lcid, - ITypeInfo FAR* FAR* pptinfo) PURE; - - STDMETHOD(GetIDsOfNames)( - THIS_ - REFIID riid, - OLECHAR FAR* FAR* rgszNames, - UINT cNames, - LCID lcid, - DISPID FAR* rgdispid) PURE; - - STDMETHOD(Invoke)( - THIS_ - DISPID dispidMember, - REFIID riid, - LCID lcid, - WORD wFlags, - DISPPARAMS FAR* pdispparams, - VARIANT FAR* pvarResult, - EXCEPINFO FAR* pexcepinfo, - UINT FAR* puArgErr) PURE; -#endif - - /* IAMChannelInfo methods */ - STDMETHOD(get_ChannelName)(THIS_ BSTR FAR* pbstrChannelName) PURE; - STDMETHOD(get_ChannelDescription)(THIS_ BSTR FAR* pbstrChannelDescription) PURE; - STDMETHOD(get_ChannelURL)(THIS_ BSTR FAR* pbstrChannelURL) PURE; - STDMETHOD(get_ContactAddress)(THIS_ BSTR FAR* pbstrContactAddress) PURE; - STDMETHOD(get_ContactPhone)(THIS_ BSTR FAR* pbstrContactPhone) PURE; - STDMETHOD(get_ContactEmail)(THIS_ BSTR FAR* pbstrContactEmail) PURE; -}; - -DEFINE_GUID(IID_IAMNetworkStatus,0xFA2AA8F3L,0x8B62,0x11D0,0xA5,0x20,0x00,0x00,0x00,0x00,0x00,0x00); - -/* Definition of interface: IAMNetworkStatus */ -#undef INTERFACE -#define INTERFACE IAMNetworkStatus - -DECLARE_INTERFACE_(IAMNetworkStatus, IDispatch) -{ -BEGIN_INTERFACE -#ifndef NO_BASEINTERFACE_FUNCS - - /* IUnknown methods */ - STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; - STDMETHOD_(ULONG, AddRef)(THIS) PURE; - STDMETHOD_(ULONG, Release)(THIS) PURE; - - /* IDispatch methods */ - STDMETHOD(GetTypeInfoCount)(THIS_ UINT FAR* pctinfo) PURE; - - STDMETHOD(GetTypeInfo)( - THIS_ - UINT itinfo, - LCID lcid, - ITypeInfo FAR* FAR* pptinfo) PURE; - - STDMETHOD(GetIDsOfNames)( - THIS_ - REFIID riid, - OLECHAR FAR* FAR* rgszNames, - UINT cNames, - LCID lcid, - DISPID FAR* rgdispid) PURE; - - STDMETHOD(Invoke)( - THIS_ - DISPID dispidMember, - REFIID riid, - LCID lcid, - WORD wFlags, - DISPPARAMS FAR* pdispparams, - VARIANT FAR* pvarResult, - EXCEPINFO FAR* pexcepinfo, - UINT FAR* puArgErr) PURE; -#endif - - /* IAMNetworkStatus methods */ - STDMETHOD(get_ReceivedPackets)(THIS_ long FAR* pReceivedPackets) PURE; - STDMETHOD(get_RecoveredPackets)(THIS_ long FAR* pRecoveredPackets) PURE; - STDMETHOD(get_LostPackets)(THIS_ long FAR* pLostPackets) PURE; - STDMETHOD(get_ReceptionQuality)(THIS_ long FAR* pReceptionQuality) PURE; - STDMETHOD(get_BufferingCount)(THIS_ long FAR* pBufferingCount) PURE; - STDMETHOD(get_IsBroadcast)(THIS_ VARIANT_BOOL FAR* pIsBroadcast) PURE; - STDMETHOD(get_BufferingProgress)(THIS_ long FAR* pBufferingProgress) PURE; -}; - -typedef enum { - AM_EXSEEK_CANSEEK = 1, - AM_EXSEEK_CANSCAN = 2, - AM_EXSEEK_MARKERSEEK = 4, - AM_EXSEEK_SCANWITHOUTCLOCK = 8, - AM_EXSEEK_NOSTANDARDREPAINT = 16, - AM_EXSEEK_BUFFERING = 32, - AM_EXSEEK_SENDS_VIDEOFRAMEREADY = 64 -} AMExtendedSeekingCapabilities; - -DEFINE_GUID(IID_IAMExtendedSeeking,0xFA2AA8F9L,0x8B62,0x11D0,0xA5,0x20,0x00,0x00,0x00,0x00,0x00,0x00); - -/* Definition of interface: IAMExtendedSeeking */ -#undef INTERFACE -#define INTERFACE IAMExtendedSeeking - -DECLARE_INTERFACE_(IAMExtendedSeeking, IDispatch) -{ -BEGIN_INTERFACE -#ifndef NO_BASEINTERFACE_FUNCS - - /* IUnknown methods */ - STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; - STDMETHOD_(ULONG, AddRef)(THIS) PURE; - STDMETHOD_(ULONG, Release)(THIS) PURE; - - /* IDispatch methods */ - STDMETHOD(GetTypeInfoCount)(THIS_ UINT FAR* pctinfo) PURE; - - STDMETHOD(GetTypeInfo)( - THIS_ - UINT itinfo, - LCID lcid, - ITypeInfo FAR* FAR* pptinfo) PURE; - - STDMETHOD(GetIDsOfNames)( - THIS_ - REFIID riid, - OLECHAR FAR* FAR* rgszNames, - UINT cNames, - LCID lcid, - DISPID FAR* rgdispid) PURE; - - STDMETHOD(Invoke)( - THIS_ - DISPID dispidMember, - REFIID riid, - LCID lcid, - WORD wFlags, - DISPPARAMS FAR* pdispparams, - VARIANT FAR* pvarResult, - EXCEPINFO FAR* pexcepinfo, - UINT FAR* puArgErr) PURE; -#endif - - /* IAMExtendedSeeking methods */ - STDMETHOD(get_ExSeekCapabilities)(THIS_ long FAR* pExCapabilities) PURE; - STDMETHOD(get_MarkerCount)(THIS_ long FAR* pMarkerCount) PURE; - STDMETHOD(get_CurrentMarker)(THIS_ long FAR* pCurrentMarker) PURE; - STDMETHOD(GetMarkerTime)(THIS_ long MarkerNum, double FAR* pMarkerTime) PURE; - STDMETHOD(GetMarkerName)(THIS_ long MarkerNum, BSTR FAR* pbstrMarkerName) PURE; - STDMETHOD(put_PlaybackSpeed)(THIS_ double Speed) PURE; - STDMETHOD(get_PlaybackSpeed)(THIS_ double FAR* pSpeed) PURE; -}; - -DEFINE_GUID(IID_IAMNetShowExProps,0xFA2AA8F5L,0x8B62,0x11D0,0xA5,0x20,0x00,0x00,0x00,0x00,0x00,0x00); - -/* Definition of interface: IAMNetShowExProps */ -#undef INTERFACE -#define INTERFACE IAMNetShowExProps - -DECLARE_INTERFACE_(IAMNetShowExProps, IDispatch) -{ -BEGIN_INTERFACE -#ifndef NO_BASEINTERFACE_FUNCS - - /* IUnknown methods */ - STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; - STDMETHOD_(ULONG, AddRef)(THIS) PURE; - STDMETHOD_(ULONG, Release)(THIS) PURE; - - /* IDispatch methods */ - STDMETHOD(GetTypeInfoCount)(THIS_ UINT FAR* pctinfo) PURE; - - STDMETHOD(GetTypeInfo)( - THIS_ - UINT itinfo, - LCID lcid, - ITypeInfo FAR* FAR* pptinfo) PURE; - - STDMETHOD(GetIDsOfNames)( - THIS_ - REFIID riid, - OLECHAR FAR* FAR* rgszNames, - UINT cNames, - LCID lcid, - DISPID FAR* rgdispid) PURE; - - STDMETHOD(Invoke)( - THIS_ - DISPID dispidMember, - REFIID riid, - LCID lcid, - WORD wFlags, - DISPPARAMS FAR* pdispparams, - VARIANT FAR* pvarResult, - EXCEPINFO FAR* pexcepinfo, - UINT FAR* puArgErr) PURE; -#endif - - /* IAMNetShowExProps methods */ - STDMETHOD(get_SourceProtocol)(THIS_ long FAR* pSourceProtocol) PURE; - STDMETHOD(get_Bandwidth)(THIS_ long FAR* pBandwidth) PURE; - STDMETHOD(get_ErrorCorrection)(THIS_ BSTR FAR* pbstrErrorCorrection) PURE; - STDMETHOD(get_CodecCount)(THIS_ long FAR* pCodecCount) PURE; - STDMETHOD(GetCodecInstalled)(THIS_ long CodecNum, VARIANT_BOOL FAR* pCodecInstalled) PURE; - STDMETHOD(GetCodecDescription)(THIS_ long CodecNum, BSTR FAR* pbstrCodecDescription) PURE; - STDMETHOD(GetCodecURL)(THIS_ long CodecNum, BSTR FAR* pbstrCodecURL) PURE; - STDMETHOD(get_CreationDate)(THIS_ DATE FAR* pCreationDate) PURE; - STDMETHOD(get_SourceLink)(THIS_ BSTR FAR* pbstrSourceLink) PURE; -}; - -DEFINE_GUID(IID_IAMExtendedErrorInfo,0xFA2AA8F6L,0x8B62,0x11D0,0xA5,0x20,0x00,0x00,0x00,0x00,0x00,0x00); - -/* Definition of interface: IAMExtendedErrorInfo */ -#undef INTERFACE -#define INTERFACE IAMExtendedErrorInfo - -DECLARE_INTERFACE_(IAMExtendedErrorInfo, IDispatch) -{ -BEGIN_INTERFACE -#ifndef NO_BASEINTERFACE_FUNCS - - /* IUnknown methods */ - STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; - STDMETHOD_(ULONG, AddRef)(THIS) PURE; - STDMETHOD_(ULONG, Release)(THIS) PURE; - - /* IDispatch methods */ - STDMETHOD(GetTypeInfoCount)(THIS_ UINT FAR* pctinfo) PURE; - - STDMETHOD(GetTypeInfo)( - THIS_ - UINT itinfo, - LCID lcid, - ITypeInfo FAR* FAR* pptinfo) PURE; - - STDMETHOD(GetIDsOfNames)( - THIS_ - REFIID riid, - OLECHAR FAR* FAR* rgszNames, - UINT cNames, - LCID lcid, - DISPID FAR* rgdispid) PURE; - - STDMETHOD(Invoke)( - THIS_ - DISPID dispidMember, - REFIID riid, - LCID lcid, - WORD wFlags, - DISPPARAMS FAR* pdispparams, - VARIANT FAR* pvarResult, - EXCEPINFO FAR* pexcepinfo, - UINT FAR* puArgErr) PURE; -#endif - - /* IAMExtendedErrorInfo methods */ - STDMETHOD(get_HasError)(THIS_ VARIANT_BOOL FAR* pHasError) PURE; - STDMETHOD(get_ErrorDescription)(THIS_ BSTR FAR* pbstrErrorDescription) PURE; - STDMETHOD(get_ErrorCode)(THIS_ long FAR* pErrorCode) PURE; -}; - -DEFINE_GUID(IID_IAMMediaContent,0xFA2AA8F4L,0x8B62,0x11D0,0xA5,0x20,0x00,0x00,0x00,0x00,0x00,0x00); - -/* Definition of interface: IAMMediaContent */ -#undef INTERFACE -#define INTERFACE IAMMediaContent - -DECLARE_INTERFACE_(IAMMediaContent, IDispatch) -{ -BEGIN_INTERFACE -#ifndef NO_BASEINTERFACE_FUNCS - - /* IUnknown methods */ - STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; - STDMETHOD_(ULONG, AddRef)(THIS) PURE; - STDMETHOD_(ULONG, Release)(THIS) PURE; - - /* IDispatch methods */ - STDMETHOD(GetTypeInfoCount)(THIS_ UINT FAR* pctinfo) PURE; - - STDMETHOD(GetTypeInfo)( - THIS_ - UINT itinfo, - LCID lcid, - ITypeInfo FAR* FAR* pptinfo) PURE; - - STDMETHOD(GetIDsOfNames)( - THIS_ - REFIID riid, - OLECHAR FAR* FAR* rgszNames, - UINT cNames, - LCID lcid, - DISPID FAR* rgdispid) PURE; - - STDMETHOD(Invoke)( - THIS_ - DISPID dispidMember, - REFIID riid, - LCID lcid, - WORD wFlags, - DISPPARAMS FAR* pdispparams, - VARIANT FAR* pvarResult, - EXCEPINFO FAR* pexcepinfo, - UINT FAR* puArgErr) PURE; -#endif - - /* IAMMediaContent methods */ - STDMETHOD(get_AuthorName)(THIS_ BSTR FAR* pbstrAuthorName) PURE; - STDMETHOD(get_Title)(THIS_ BSTR FAR* pbstrTitle) PURE; - STDMETHOD(get_Rating)(THIS_ BSTR FAR* pbstrRating) PURE; - STDMETHOD(get_Description)(THIS_ BSTR FAR* pbstrDescription) PURE; - STDMETHOD(get_Copyright)(THIS_ BSTR FAR* pbstrCopyright) PURE; - STDMETHOD(get_BaseURL)(THIS_ BSTR FAR* pbstrBaseURL) PURE; - STDMETHOD(get_LogoURL)(THIS_ BSTR FAR* pbstrLogoURL) PURE; - STDMETHOD(get_LogoIconURL)(THIS_ BSTR FAR* pbstrLogoURL) PURE; - STDMETHOD(get_WatermarkURL)(THIS_ BSTR FAR* pbstrWatermarkURL) PURE; - STDMETHOD(get_MoreInfoURL)(THIS_ BSTR FAR* pbstrMoreInfoURL) PURE; - STDMETHOD(get_MoreInfoBannerImage)(THIS_ BSTR FAR* pbstrMoreInfoBannerImage) PURE; - STDMETHOD(get_MoreInfoBannerURL)(THIS_ BSTR FAR* pbstrMoreInfoBannerURL) PURE; - STDMETHOD(get_MoreInfoText)(THIS_ BSTR FAR* pbstrMoreInfoText) PURE; -}; - -DEFINE_GUID(IID_IAMMediaContent2,0xCE8F78C1L,0x74D9,0x11D2,0xB0,0x9D,0x00,0xA0,0xC9,0xA8,0x11,0x17); - -/* Definition of interface: IAMMediaContent2 */ -#undef INTERFACE -#define INTERFACE IAMMediaContent2 - -DECLARE_INTERFACE_(IAMMediaContent2, IDispatch) -{ -BEGIN_INTERFACE -#ifndef NO_BASEINTERFACE_FUNCS - - /* IUnknown methods */ - STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; - STDMETHOD_(ULONG, AddRef)(THIS) PURE; - STDMETHOD_(ULONG, Release)(THIS) PURE; - - /* IDispatch methods */ - STDMETHOD(GetTypeInfoCount)(THIS_ UINT FAR* pctinfo) PURE; - - STDMETHOD(GetTypeInfo)( - THIS_ - UINT itinfo, - LCID lcid, - ITypeInfo FAR* FAR* pptinfo) PURE; - - STDMETHOD(GetIDsOfNames)( - THIS_ - REFIID riid, - OLECHAR FAR* FAR* rgszNames, - UINT cNames, - LCID lcid, - DISPID FAR* rgdispid) PURE; - - STDMETHOD(Invoke)( - THIS_ - DISPID dispidMember, - REFIID riid, - LCID lcid, - WORD wFlags, - DISPPARAMS FAR* pdispparams, - VARIANT FAR* pvarResult, - EXCEPINFO FAR* pexcepinfo, - UINT FAR* puArgErr) PURE; -#endif - - /* IAMMediaContent2 methods */ - STDMETHOD(get_MediaParameter)(THIS_ long EntryNum, BSTR bstrName, BSTR FAR* pbstrValue) PURE; - STDMETHOD(get_MediaParameterName)(THIS_ long EntryNum, long Index, BSTR FAR* pbstrName) PURE; - STDMETHOD(get_PlaylistCount)(THIS_ long FAR* pNumberEntries) PURE; -}; - -DEFINE_GUID(IID_IAMNetShowPreroll,0xAAE7E4E2L,0x6388,0x11D1,0x8D,0x93,0x00,0x60,0x97,0xC9,0xA2,0xB2); - -/* Definition of interface: IAMNetShowPreroll */ -#undef INTERFACE -#define INTERFACE IAMNetShowPreroll - -DECLARE_INTERFACE_(IAMNetShowPreroll, IDispatch) -{ -BEGIN_INTERFACE -#ifndef NO_BASEINTERFACE_FUNCS - - /* IUnknown methods */ - STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; - STDMETHOD_(ULONG, AddRef)(THIS) PURE; - STDMETHOD_(ULONG, Release)(THIS) PURE; - - /* IDispatch methods */ - STDMETHOD(GetTypeInfoCount)(THIS_ UINT FAR* pctinfo) PURE; - - STDMETHOD(GetTypeInfo)( - THIS_ - UINT itinfo, - LCID lcid, - ITypeInfo FAR* FAR* pptinfo) PURE; - - STDMETHOD(GetIDsOfNames)( - THIS_ - REFIID riid, - OLECHAR FAR* FAR* rgszNames, - UINT cNames, - LCID lcid, - DISPID FAR* rgdispid) PURE; - - STDMETHOD(Invoke)( - THIS_ - DISPID dispidMember, - REFIID riid, - LCID lcid, - WORD wFlags, - DISPPARAMS FAR* pdispparams, - VARIANT FAR* pvarResult, - EXCEPINFO FAR* pexcepinfo, - UINT FAR* puArgErr) PURE; -#endif - - /* IAMNetShowPreroll methods */ - STDMETHOD(put_Preroll)(THIS_ VARIANT_BOOL fPreroll) PURE; - STDMETHOD(get_Preroll)(THIS_ VARIANT_BOOL FAR* pfPreroll) PURE; -}; - -DEFINE_GUID(IID_IDShowPlugin,0x4746B7C8L,0x700E,0x11D1,0xBE,0xCC,0x00,0xC0,0x4F,0xB6,0xE9,0x37); - -/* Definition of interface: IDShowPlugin */ -#undef INTERFACE -#define INTERFACE IDShowPlugin - -DECLARE_INTERFACE_(IDShowPlugin, IUnknown) -{ -BEGIN_INTERFACE -#ifndef NO_BASEINTERFACE_FUNCS - - /* IUnknown methods */ - STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; - STDMETHOD_(ULONG, AddRef)(THIS) PURE; - STDMETHOD_(ULONG, Release)(THIS) PURE; -#endif - - /* IDShowPlugin methods */ - STDMETHOD(get_URL)(THIS_ BSTR FAR* pURL) PURE; - STDMETHOD(get_UserAgent)(THIS_ BSTR FAR* pUserAgent) PURE; -}; - -#endif +//------------------------------------------------------------------------------ +// File: qnetwork.h +// +// Desc: This header file machine-generated by mktyplib.exe. +// Interface to type library: QuartzNetTypeLib +// +// Copyright (c) 1997-2001, Microsoft Corporation. All rights reserved. +//------------------------------------------------------------------------------ + + +#ifndef _QuartzNetTypeLib_H_ +#define _QuartzNetTypeLib_H_ + +DEFINE_GUID(LIBID_QuartzNetTypeLib,0x56A868B1L,0x0AD4,0x11CE,0xB0,0x3A,0x00,0x20,0xAF,0x0B,0xA7,0x70); +#ifndef BEGIN_INTERFACE +#define BEGIN_INTERFACE +#endif + +DEFINE_GUID(IID_IAMNetShowConfig,0xFA2AA8F1L,0x8B62,0x11D0,0xA5,0x20,0x00,0x00,0x00,0x00,0x00,0x00); + +/* Definition of interface: IAMNetShowConfig */ +#undef INTERFACE +#define INTERFACE IAMNetShowConfig + +DECLARE_INTERFACE_(IAMNetShowConfig, IDispatch) +{ +BEGIN_INTERFACE +#ifndef NO_BASEINTERFACE_FUNCS + + /* IUnknown methods */ + STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; + STDMETHOD_(ULONG, AddRef)(THIS) PURE; + STDMETHOD_(ULONG, Release)(THIS) PURE; + + /* IDispatch methods */ + STDMETHOD(GetTypeInfoCount)(THIS_ UINT FAR* pctinfo) PURE; + + STDMETHOD(GetTypeInfo)( + THIS_ + UINT itinfo, + LCID lcid, + ITypeInfo FAR* FAR* pptinfo) PURE; + + STDMETHOD(GetIDsOfNames)( + THIS_ + REFIID riid, + OLECHAR FAR* FAR* rgszNames, + UINT cNames, + LCID lcid, + DISPID FAR* rgdispid) PURE; + + STDMETHOD(Invoke)( + THIS_ + DISPID dispidMember, + REFIID riid, + LCID lcid, + WORD wFlags, + DISPPARAMS FAR* pdispparams, + VARIANT FAR* pvarResult, + EXCEPINFO FAR* pexcepinfo, + UINT FAR* puArgErr) PURE; +#endif + + /* IAMNetShowConfig methods */ + STDMETHOD(get_BufferingTime)(THIS_ double FAR* pBufferingTime) PURE; + STDMETHOD(put_BufferingTime)(THIS_ double BufferingTime) PURE; + STDMETHOD(get_UseFixedUDPPort)(THIS_ VARIANT_BOOL FAR* pUseFixedUDPPort) PURE; + STDMETHOD(put_UseFixedUDPPort)(THIS_ VARIANT_BOOL UseFixedUDPPort) PURE; + STDMETHOD(get_FixedUDPPort)(THIS_ long FAR* pFixedUDPPort) PURE; + STDMETHOD(put_FixedUDPPort)(THIS_ long FixedUDPPort) PURE; + STDMETHOD(get_UseHTTPProxy)(THIS_ VARIANT_BOOL FAR* pUseHTTPProxy) PURE; + STDMETHOD(put_UseHTTPProxy)(THIS_ VARIANT_BOOL UseHTTPProxy) PURE; + STDMETHOD(get_EnableAutoProxy)(THIS_ VARIANT_BOOL FAR* pEnableAutoProxy) PURE; + STDMETHOD(put_EnableAutoProxy)(THIS_ VARIANT_BOOL EnableAutoProxy) PURE; + STDMETHOD(get_HTTPProxyHost)(THIS_ BSTR FAR* pbstrHTTPProxyHost) PURE; + STDMETHOD(put_HTTPProxyHost)(THIS_ BSTR bstrHTTPProxyHost) PURE; + STDMETHOD(get_HTTPProxyPort)(THIS_ long FAR* pHTTPProxyPort) PURE; + STDMETHOD(put_HTTPProxyPort)(THIS_ long HTTPProxyPort) PURE; + STDMETHOD(get_EnableMulticast)(THIS_ VARIANT_BOOL FAR* pEnableMulticast) PURE; + STDMETHOD(put_EnableMulticast)(THIS_ VARIANT_BOOL EnableMulticast) PURE; + STDMETHOD(get_EnableUDP)(THIS_ VARIANT_BOOL FAR* pEnableUDP) PURE; + STDMETHOD(put_EnableUDP)(THIS_ VARIANT_BOOL EnableUDP) PURE; + STDMETHOD(get_EnableTCP)(THIS_ VARIANT_BOOL FAR* pEnableTCP) PURE; + STDMETHOD(put_EnableTCP)(THIS_ VARIANT_BOOL EnableTCP) PURE; + STDMETHOD(get_EnableHTTP)(THIS_ VARIANT_BOOL FAR* pEnableHTTP) PURE; + STDMETHOD(put_EnableHTTP)(THIS_ VARIANT_BOOL EnableHTTP) PURE; +}; + +DEFINE_GUID(IID_IAMChannelInfo,0xFA2AA8F2L,0x8B62,0x11D0,0xA5,0x20,0x00,0x00,0x00,0x00,0x00,0x00); + +/* Definition of interface: IAMChannelInfo */ +#undef INTERFACE +#define INTERFACE IAMChannelInfo + +DECLARE_INTERFACE_(IAMChannelInfo, IDispatch) +{ +BEGIN_INTERFACE +#ifndef NO_BASEINTERFACE_FUNCS + + /* IUnknown methods */ + STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; + STDMETHOD_(ULONG, AddRef)(THIS) PURE; + STDMETHOD_(ULONG, Release)(THIS) PURE; + + /* IDispatch methods */ + STDMETHOD(GetTypeInfoCount)(THIS_ UINT FAR* pctinfo) PURE; + + STDMETHOD(GetTypeInfo)( + THIS_ + UINT itinfo, + LCID lcid, + ITypeInfo FAR* FAR* pptinfo) PURE; + + STDMETHOD(GetIDsOfNames)( + THIS_ + REFIID riid, + OLECHAR FAR* FAR* rgszNames, + UINT cNames, + LCID lcid, + DISPID FAR* rgdispid) PURE; + + STDMETHOD(Invoke)( + THIS_ + DISPID dispidMember, + REFIID riid, + LCID lcid, + WORD wFlags, + DISPPARAMS FAR* pdispparams, + VARIANT FAR* pvarResult, + EXCEPINFO FAR* pexcepinfo, + UINT FAR* puArgErr) PURE; +#endif + + /* IAMChannelInfo methods */ + STDMETHOD(get_ChannelName)(THIS_ BSTR FAR* pbstrChannelName) PURE; + STDMETHOD(get_ChannelDescription)(THIS_ BSTR FAR* pbstrChannelDescription) PURE; + STDMETHOD(get_ChannelURL)(THIS_ BSTR FAR* pbstrChannelURL) PURE; + STDMETHOD(get_ContactAddress)(THIS_ BSTR FAR* pbstrContactAddress) PURE; + STDMETHOD(get_ContactPhone)(THIS_ BSTR FAR* pbstrContactPhone) PURE; + STDMETHOD(get_ContactEmail)(THIS_ BSTR FAR* pbstrContactEmail) PURE; +}; + +DEFINE_GUID(IID_IAMNetworkStatus,0xFA2AA8F3L,0x8B62,0x11D0,0xA5,0x20,0x00,0x00,0x00,0x00,0x00,0x00); + +/* Definition of interface: IAMNetworkStatus */ +#undef INTERFACE +#define INTERFACE IAMNetworkStatus + +DECLARE_INTERFACE_(IAMNetworkStatus, IDispatch) +{ +BEGIN_INTERFACE +#ifndef NO_BASEINTERFACE_FUNCS + + /* IUnknown methods */ + STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; + STDMETHOD_(ULONG, AddRef)(THIS) PURE; + STDMETHOD_(ULONG, Release)(THIS) PURE; + + /* IDispatch methods */ + STDMETHOD(GetTypeInfoCount)(THIS_ UINT FAR* pctinfo) PURE; + + STDMETHOD(GetTypeInfo)( + THIS_ + UINT itinfo, + LCID lcid, + ITypeInfo FAR* FAR* pptinfo) PURE; + + STDMETHOD(GetIDsOfNames)( + THIS_ + REFIID riid, + OLECHAR FAR* FAR* rgszNames, + UINT cNames, + LCID lcid, + DISPID FAR* rgdispid) PURE; + + STDMETHOD(Invoke)( + THIS_ + DISPID dispidMember, + REFIID riid, + LCID lcid, + WORD wFlags, + DISPPARAMS FAR* pdispparams, + VARIANT FAR* pvarResult, + EXCEPINFO FAR* pexcepinfo, + UINT FAR* puArgErr) PURE; +#endif + + /* IAMNetworkStatus methods */ + STDMETHOD(get_ReceivedPackets)(THIS_ long FAR* pReceivedPackets) PURE; + STDMETHOD(get_RecoveredPackets)(THIS_ long FAR* pRecoveredPackets) PURE; + STDMETHOD(get_LostPackets)(THIS_ long FAR* pLostPackets) PURE; + STDMETHOD(get_ReceptionQuality)(THIS_ long FAR* pReceptionQuality) PURE; + STDMETHOD(get_BufferingCount)(THIS_ long FAR* pBufferingCount) PURE; + STDMETHOD(get_IsBroadcast)(THIS_ VARIANT_BOOL FAR* pIsBroadcast) PURE; + STDMETHOD(get_BufferingProgress)(THIS_ long FAR* pBufferingProgress) PURE; +}; + +typedef enum { + AM_EXSEEK_CANSEEK = 1, + AM_EXSEEK_CANSCAN = 2, + AM_EXSEEK_MARKERSEEK = 4, + AM_EXSEEK_SCANWITHOUTCLOCK = 8, + AM_EXSEEK_NOSTANDARDREPAINT = 16, + AM_EXSEEK_BUFFERING = 32, + AM_EXSEEK_SENDS_VIDEOFRAMEREADY = 64 +} AMExtendedSeekingCapabilities; + +DEFINE_GUID(IID_IAMExtendedSeeking,0xFA2AA8F9L,0x8B62,0x11D0,0xA5,0x20,0x00,0x00,0x00,0x00,0x00,0x00); + +/* Definition of interface: IAMExtendedSeeking */ +#undef INTERFACE +#define INTERFACE IAMExtendedSeeking + +DECLARE_INTERFACE_(IAMExtendedSeeking, IDispatch) +{ +BEGIN_INTERFACE +#ifndef NO_BASEINTERFACE_FUNCS + + /* IUnknown methods */ + STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; + STDMETHOD_(ULONG, AddRef)(THIS) PURE; + STDMETHOD_(ULONG, Release)(THIS) PURE; + + /* IDispatch methods */ + STDMETHOD(GetTypeInfoCount)(THIS_ UINT FAR* pctinfo) PURE; + + STDMETHOD(GetTypeInfo)( + THIS_ + UINT itinfo, + LCID lcid, + ITypeInfo FAR* FAR* pptinfo) PURE; + + STDMETHOD(GetIDsOfNames)( + THIS_ + REFIID riid, + OLECHAR FAR* FAR* rgszNames, + UINT cNames, + LCID lcid, + DISPID FAR* rgdispid) PURE; + + STDMETHOD(Invoke)( + THIS_ + DISPID dispidMember, + REFIID riid, + LCID lcid, + WORD wFlags, + DISPPARAMS FAR* pdispparams, + VARIANT FAR* pvarResult, + EXCEPINFO FAR* pexcepinfo, + UINT FAR* puArgErr) PURE; +#endif + + /* IAMExtendedSeeking methods */ + STDMETHOD(get_ExSeekCapabilities)(THIS_ long FAR* pExCapabilities) PURE; + STDMETHOD(get_MarkerCount)(THIS_ long FAR* pMarkerCount) PURE; + STDMETHOD(get_CurrentMarker)(THIS_ long FAR* pCurrentMarker) PURE; + STDMETHOD(GetMarkerTime)(THIS_ long MarkerNum, double FAR* pMarkerTime) PURE; + STDMETHOD(GetMarkerName)(THIS_ long MarkerNum, BSTR FAR* pbstrMarkerName) PURE; + STDMETHOD(put_PlaybackSpeed)(THIS_ double Speed) PURE; + STDMETHOD(get_PlaybackSpeed)(THIS_ double FAR* pSpeed) PURE; +}; + +DEFINE_GUID(IID_IAMNetShowExProps,0xFA2AA8F5L,0x8B62,0x11D0,0xA5,0x20,0x00,0x00,0x00,0x00,0x00,0x00); + +/* Definition of interface: IAMNetShowExProps */ +#undef INTERFACE +#define INTERFACE IAMNetShowExProps + +DECLARE_INTERFACE_(IAMNetShowExProps, IDispatch) +{ +BEGIN_INTERFACE +#ifndef NO_BASEINTERFACE_FUNCS + + /* IUnknown methods */ + STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; + STDMETHOD_(ULONG, AddRef)(THIS) PURE; + STDMETHOD_(ULONG, Release)(THIS) PURE; + + /* IDispatch methods */ + STDMETHOD(GetTypeInfoCount)(THIS_ UINT FAR* pctinfo) PURE; + + STDMETHOD(GetTypeInfo)( + THIS_ + UINT itinfo, + LCID lcid, + ITypeInfo FAR* FAR* pptinfo) PURE; + + STDMETHOD(GetIDsOfNames)( + THIS_ + REFIID riid, + OLECHAR FAR* FAR* rgszNames, + UINT cNames, + LCID lcid, + DISPID FAR* rgdispid) PURE; + + STDMETHOD(Invoke)( + THIS_ + DISPID dispidMember, + REFIID riid, + LCID lcid, + WORD wFlags, + DISPPARAMS FAR* pdispparams, + VARIANT FAR* pvarResult, + EXCEPINFO FAR* pexcepinfo, + UINT FAR* puArgErr) PURE; +#endif + + /* IAMNetShowExProps methods */ + STDMETHOD(get_SourceProtocol)(THIS_ long FAR* pSourceProtocol) PURE; + STDMETHOD(get_Bandwidth)(THIS_ long FAR* pBandwidth) PURE; + STDMETHOD(get_ErrorCorrection)(THIS_ BSTR FAR* pbstrErrorCorrection) PURE; + STDMETHOD(get_CodecCount)(THIS_ long FAR* pCodecCount) PURE; + STDMETHOD(GetCodecInstalled)(THIS_ long CodecNum, VARIANT_BOOL FAR* pCodecInstalled) PURE; + STDMETHOD(GetCodecDescription)(THIS_ long CodecNum, BSTR FAR* pbstrCodecDescription) PURE; + STDMETHOD(GetCodecURL)(THIS_ long CodecNum, BSTR FAR* pbstrCodecURL) PURE; + STDMETHOD(get_CreationDate)(THIS_ DATE FAR* pCreationDate) PURE; + STDMETHOD(get_SourceLink)(THIS_ BSTR FAR* pbstrSourceLink) PURE; +}; + +DEFINE_GUID(IID_IAMExtendedErrorInfo,0xFA2AA8F6L,0x8B62,0x11D0,0xA5,0x20,0x00,0x00,0x00,0x00,0x00,0x00); + +/* Definition of interface: IAMExtendedErrorInfo */ +#undef INTERFACE +#define INTERFACE IAMExtendedErrorInfo + +DECLARE_INTERFACE_(IAMExtendedErrorInfo, IDispatch) +{ +BEGIN_INTERFACE +#ifndef NO_BASEINTERFACE_FUNCS + + /* IUnknown methods */ + STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; + STDMETHOD_(ULONG, AddRef)(THIS) PURE; + STDMETHOD_(ULONG, Release)(THIS) PURE; + + /* IDispatch methods */ + STDMETHOD(GetTypeInfoCount)(THIS_ UINT FAR* pctinfo) PURE; + + STDMETHOD(GetTypeInfo)( + THIS_ + UINT itinfo, + LCID lcid, + ITypeInfo FAR* FAR* pptinfo) PURE; + + STDMETHOD(GetIDsOfNames)( + THIS_ + REFIID riid, + OLECHAR FAR* FAR* rgszNames, + UINT cNames, + LCID lcid, + DISPID FAR* rgdispid) PURE; + + STDMETHOD(Invoke)( + THIS_ + DISPID dispidMember, + REFIID riid, + LCID lcid, + WORD wFlags, + DISPPARAMS FAR* pdispparams, + VARIANT FAR* pvarResult, + EXCEPINFO FAR* pexcepinfo, + UINT FAR* puArgErr) PURE; +#endif + + /* IAMExtendedErrorInfo methods */ + STDMETHOD(get_HasError)(THIS_ VARIANT_BOOL FAR* pHasError) PURE; + STDMETHOD(get_ErrorDescription)(THIS_ BSTR FAR* pbstrErrorDescription) PURE; + STDMETHOD(get_ErrorCode)(THIS_ long FAR* pErrorCode) PURE; +}; + +DEFINE_GUID(IID_IAMMediaContent,0xFA2AA8F4L,0x8B62,0x11D0,0xA5,0x20,0x00,0x00,0x00,0x00,0x00,0x00); + +/* Definition of interface: IAMMediaContent */ +#undef INTERFACE +#define INTERFACE IAMMediaContent + +DECLARE_INTERFACE_(IAMMediaContent, IDispatch) +{ +BEGIN_INTERFACE +#ifndef NO_BASEINTERFACE_FUNCS + + /* IUnknown methods */ + STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; + STDMETHOD_(ULONG, AddRef)(THIS) PURE; + STDMETHOD_(ULONG, Release)(THIS) PURE; + + /* IDispatch methods */ + STDMETHOD(GetTypeInfoCount)(THIS_ UINT FAR* pctinfo) PURE; + + STDMETHOD(GetTypeInfo)( + THIS_ + UINT itinfo, + LCID lcid, + ITypeInfo FAR* FAR* pptinfo) PURE; + + STDMETHOD(GetIDsOfNames)( + THIS_ + REFIID riid, + OLECHAR FAR* FAR* rgszNames, + UINT cNames, + LCID lcid, + DISPID FAR* rgdispid) PURE; + + STDMETHOD(Invoke)( + THIS_ + DISPID dispidMember, + REFIID riid, + LCID lcid, + WORD wFlags, + DISPPARAMS FAR* pdispparams, + VARIANT FAR* pvarResult, + EXCEPINFO FAR* pexcepinfo, + UINT FAR* puArgErr) PURE; +#endif + + /* IAMMediaContent methods */ + STDMETHOD(get_AuthorName)(THIS_ BSTR FAR* pbstrAuthorName) PURE; + STDMETHOD(get_Title)(THIS_ BSTR FAR* pbstrTitle) PURE; + STDMETHOD(get_Rating)(THIS_ BSTR FAR* pbstrRating) PURE; + STDMETHOD(get_Description)(THIS_ BSTR FAR* pbstrDescription) PURE; + STDMETHOD(get_Copyright)(THIS_ BSTR FAR* pbstrCopyright) PURE; + STDMETHOD(get_BaseURL)(THIS_ BSTR FAR* pbstrBaseURL) PURE; + STDMETHOD(get_LogoURL)(THIS_ BSTR FAR* pbstrLogoURL) PURE; + STDMETHOD(get_LogoIconURL)(THIS_ BSTR FAR* pbstrLogoURL) PURE; + STDMETHOD(get_WatermarkURL)(THIS_ BSTR FAR* pbstrWatermarkURL) PURE; + STDMETHOD(get_MoreInfoURL)(THIS_ BSTR FAR* pbstrMoreInfoURL) PURE; + STDMETHOD(get_MoreInfoBannerImage)(THIS_ BSTR FAR* pbstrMoreInfoBannerImage) PURE; + STDMETHOD(get_MoreInfoBannerURL)(THIS_ BSTR FAR* pbstrMoreInfoBannerURL) PURE; + STDMETHOD(get_MoreInfoText)(THIS_ BSTR FAR* pbstrMoreInfoText) PURE; +}; + +DEFINE_GUID(IID_IAMMediaContent2,0xCE8F78C1L,0x74D9,0x11D2,0xB0,0x9D,0x00,0xA0,0xC9,0xA8,0x11,0x17); + +/* Definition of interface: IAMMediaContent2 */ +#undef INTERFACE +#define INTERFACE IAMMediaContent2 + +DECLARE_INTERFACE_(IAMMediaContent2, IDispatch) +{ +BEGIN_INTERFACE +#ifndef NO_BASEINTERFACE_FUNCS + + /* IUnknown methods */ + STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; + STDMETHOD_(ULONG, AddRef)(THIS) PURE; + STDMETHOD_(ULONG, Release)(THIS) PURE; + + /* IDispatch methods */ + STDMETHOD(GetTypeInfoCount)(THIS_ UINT FAR* pctinfo) PURE; + + STDMETHOD(GetTypeInfo)( + THIS_ + UINT itinfo, + LCID lcid, + ITypeInfo FAR* FAR* pptinfo) PURE; + + STDMETHOD(GetIDsOfNames)( + THIS_ + REFIID riid, + OLECHAR FAR* FAR* rgszNames, + UINT cNames, + LCID lcid, + DISPID FAR* rgdispid) PURE; + + STDMETHOD(Invoke)( + THIS_ + DISPID dispidMember, + REFIID riid, + LCID lcid, + WORD wFlags, + DISPPARAMS FAR* pdispparams, + VARIANT FAR* pvarResult, + EXCEPINFO FAR* pexcepinfo, + UINT FAR* puArgErr) PURE; +#endif + + /* IAMMediaContent2 methods */ + STDMETHOD(get_MediaParameter)(THIS_ long EntryNum, BSTR bstrName, BSTR FAR* pbstrValue) PURE; + STDMETHOD(get_MediaParameterName)(THIS_ long EntryNum, long Index, BSTR FAR* pbstrName) PURE; + STDMETHOD(get_PlaylistCount)(THIS_ long FAR* pNumberEntries) PURE; +}; + +DEFINE_GUID(IID_IAMNetShowPreroll,0xAAE7E4E2L,0x6388,0x11D1,0x8D,0x93,0x00,0x60,0x97,0xC9,0xA2,0xB2); + +/* Definition of interface: IAMNetShowPreroll */ +#undef INTERFACE +#define INTERFACE IAMNetShowPreroll + +DECLARE_INTERFACE_(IAMNetShowPreroll, IDispatch) +{ +BEGIN_INTERFACE +#ifndef NO_BASEINTERFACE_FUNCS + + /* IUnknown methods */ + STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; + STDMETHOD_(ULONG, AddRef)(THIS) PURE; + STDMETHOD_(ULONG, Release)(THIS) PURE; + + /* IDispatch methods */ + STDMETHOD(GetTypeInfoCount)(THIS_ UINT FAR* pctinfo) PURE; + + STDMETHOD(GetTypeInfo)( + THIS_ + UINT itinfo, + LCID lcid, + ITypeInfo FAR* FAR* pptinfo) PURE; + + STDMETHOD(GetIDsOfNames)( + THIS_ + REFIID riid, + OLECHAR FAR* FAR* rgszNames, + UINT cNames, + LCID lcid, + DISPID FAR* rgdispid) PURE; + + STDMETHOD(Invoke)( + THIS_ + DISPID dispidMember, + REFIID riid, + LCID lcid, + WORD wFlags, + DISPPARAMS FAR* pdispparams, + VARIANT FAR* pvarResult, + EXCEPINFO FAR* pexcepinfo, + UINT FAR* puArgErr) PURE; +#endif + + /* IAMNetShowPreroll methods */ + STDMETHOD(put_Preroll)(THIS_ VARIANT_BOOL fPreroll) PURE; + STDMETHOD(get_Preroll)(THIS_ VARIANT_BOOL FAR* pfPreroll) PURE; +}; + +DEFINE_GUID(IID_IDShowPlugin,0x4746B7C8L,0x700E,0x11D1,0xBE,0xCC,0x00,0xC0,0x4F,0xB6,0xE9,0x37); + +/* Definition of interface: IDShowPlugin */ +#undef INTERFACE +#define INTERFACE IDShowPlugin + +DECLARE_INTERFACE_(IDShowPlugin, IUnknown) +{ +BEGIN_INTERFACE +#ifndef NO_BASEINTERFACE_FUNCS + + /* IUnknown methods */ + STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; + STDMETHOD_(ULONG, AddRef)(THIS) PURE; + STDMETHOD_(ULONG, Release)(THIS) PURE; +#endif + + /* IDShowPlugin methods */ + STDMETHOD(get_URL)(THIS_ BSTR FAR* pURL) PURE; + STDMETHOD(get_UserAgent)(THIS_ BSTR FAR* pUserAgent) PURE; +}; + +#endif diff --git a/videoInputSrcAndDemos/libs/DShow/Include/refclock.h b/videoInputSrcAndDemos/libs/DShow/Include/refclock.h index a864f72..596b656 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/refclock.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/refclock.h @@ -1,171 +1,178 @@ -//------------------------------------------------------------------------------ -// File: RefClock.h -// -// Desc: DirectShow base classes - defines the IReferenceClock interface. -// -// Copyright (c) Microsoft Corporation. All rights reserved. -//------------------------------------------------------------------------------ - - -#ifndef __BASEREFCLOCK__ -#define __BASEREFCLOCK__ - -#include "dsschedule.h" - -const UINT RESOLUTION = 1; /* High resolution timer */ -const INT ADVISE_CACHE = 4; /* Default cache size */ -const LONGLONG MAX_TIME = 0x7FFFFFFFFFFFFFFF; /* Maximum LONGLONG value */ - -inline LONGLONG WINAPI ConvertToMilliseconds(const REFERENCE_TIME& RT) -{ - /* This converts an arbitrary value representing a reference time - into a MILLISECONDS value for use in subsequent system calls */ - - return (RT / (UNITS / MILLISECONDS)); -} - -/* This class hierarchy will support an IReferenceClock interface so - that an audio card (or other externally driven clock) can update the - system wide clock that everyone uses. - - The interface will be pretty thin with probably just one update method - This interface has not yet been defined. - */ - -/* This abstract base class implements the IReferenceClock - * interface. Classes that actually provide clock signals (from - * whatever source) have to be derived from this class. - * - * The abstract class provides implementations for: - * CUnknown support - * locking support (CCritSec) - * client advise code (creates a thread) - * - * Question: what can we do about quality? Change the timer - * resolution to lower the system load? Up the priority of the - * timer thread to force more responsive signals? - * - * During class construction we create a worker thread that is destroyed during - * destuction. This thread executes a series of WaitForSingleObject calls, - * waking up when a command is given to the thread or the next wake up point - * is reached. The wakeup points are determined by clients making Advise - * calls. - * - * Each advise call defines a point in time when they wish to be notified. A - * periodic advise is a series of these such events. We maintain a list of - * advise links and calculate when the nearest event notification is due for. - * We then call WaitForSingleObject with a timeout equal to this time. The - * handle we wait on is used by the class to signal that something has changed - * and that we must reschedule the next event. This typically happens when - * someone comes in and asks for an advise link while we are waiting for an - * event to timeout. - * - * While we are modifying the list of advise requests we - * are protected from interference through a critical section. Clients are NOT - * advised through callbacks. One shot clients have an event set, while - * periodic clients have a semaphore released for each event notification. A - * semaphore allows a client to be kept up to date with the number of events - * actually triggered and be assured that they can't miss multiple events being - * set. - * - * Keeping track of advises is taken care of by the CAMSchedule class. - */ - -class CBaseReferenceClock -: public CUnknown, public IReferenceClock, public CCritSec -{ -protected: - virtual ~CBaseReferenceClock(); // Don't let me be created on the stack! -public: - CBaseReferenceClock(TCHAR *pName, LPUNKNOWN pUnk, HRESULT *phr, CAMSchedule * pSched = 0 ); - - STDMETHODIMP NonDelegatingQueryInterface(REFIID riid,void ** ppv); - - DECLARE_IUNKNOWN - - /* IReferenceClock methods */ - // Derived classes must implement GetPrivateTime(). All our GetTime - // does is call GetPrivateTime and then check so that time does not - // go backwards. A return code of S_FALSE implies that the internal - // clock has gone backwards and GetTime time has halted until internal - // time has caught up. (Don't know if this will be much use to folk, - // but it seems odd not to use the return code for something useful.) - STDMETHODIMP GetTime(REFERENCE_TIME *pTime); - // When this is called, it sets m_rtLastGotTime to the time it returns. - - /* Provide standard mechanisms for scheduling events */ - - /* Ask for an async notification that a time has elapsed */ - STDMETHODIMP AdviseTime( - REFERENCE_TIME baseTime, // base reference time - REFERENCE_TIME streamTime, // stream offset time - HEVENT hEvent, // advise via this event - DWORD_PTR *pdwAdviseCookie // where your cookie goes - ); - - /* Ask for an asynchronous periodic notification that a time has elapsed */ - STDMETHODIMP AdvisePeriodic( - REFERENCE_TIME StartTime, // starting at this time - REFERENCE_TIME PeriodTime, // time between notifications - HSEMAPHORE hSemaphore, // advise via a semaphore - DWORD_PTR *pdwAdviseCookie // where your cookie goes - ); - - /* Cancel a request for notification(s) - if the notification was - * a one shot timer then this function doesn't need to be called - * as the advise is automatically cancelled, however it does no - * harm to explicitly cancel a one-shot advise. It is REQUIRED that - * clients call Unadvise to clear a Periodic advise setting. - */ - - STDMETHODIMP Unadvise(DWORD_PTR dwAdviseCookie); - - /* Methods for the benefit of derived classes or outer objects */ - - // GetPrivateTime() is the REAL clock. GetTime is just a cover for - // it. Derived classes will probably override this method but not - // GetTime() itself. - // The important point about GetPrivateTime() is it's allowed to go - // backwards. Our GetTime() will keep returning the LastGotTime - // until GetPrivateTime() catches up. - virtual REFERENCE_TIME GetPrivateTime(); - - /* Provide a method for correcting drift */ - STDMETHODIMP SetTimeDelta( const REFERENCE_TIME& TimeDelta ); - - CAMSchedule * GetSchedule() const { return m_pSchedule; } - -private: - REFERENCE_TIME m_rtPrivateTime; // Current best estimate of time - DWORD m_dwPrevSystemTime; // Last vaule we got from timeGetTime - REFERENCE_TIME m_rtLastGotTime; // Last time returned by GetTime - REFERENCE_TIME m_rtNextAdvise; // Time of next advise - UINT m_TimerResolution; - -#ifdef PERF - int m_idGetSystemTime; -#endif - -// Thread stuff -public: - void TriggerThread() // Wakes thread up. Need to do this if - { // time to next advise needs reevaluating. - EXECUTE_ASSERT(SetEvent(m_pSchedule->GetEvent())); - } - - -private: - BOOL m_bAbort; // Flag used for thread shutdown - HANDLE m_hThread; // Thread handle - - HRESULT AdviseThread(); // Method in which the advise thread runs - static DWORD __stdcall AdviseThreadFunction(LPVOID); // Function used to get there - -protected: - CAMSchedule * const m_pSchedule; - - void Restart (IN REFERENCE_TIME rtMinTime = 0I64) ; -}; - -#endif - +//------------------------------------------------------------------------------ +// File: RefClock.h +// +// Desc: DirectShow base classes - defines the IReferenceClock interface. +// +// Copyright (c) Microsoft Corporation. All rights reserved. +//------------------------------------------------------------------------------ + + +#ifndef __BASEREFCLOCK__ +#define __BASEREFCLOCK__ + +#include "dsschedule.h" + +const UINT RESOLUTION = 1; /* High resolution timer */ +const INT ADVISE_CACHE = 4; /* Default cache size */ +#ifdef __MINGW32_MAJOR_VERSION +const LONGLONG MAX_TIME = 0x7FFFFFFFFFFFFFFFLL; +#else +const LONGLONG MAX_TIME = 0x7FFFFFFFFFFFFFFF; /* Maximum LONGLONG value */ +#endif + +inline LONGLONG WINAPI ConvertToMilliseconds(const REFERENCE_TIME& RT) +{ + /* This converts an arbitrary value representing a reference time + into a MILLISECONDS value for use in subsequent system calls */ + + return (RT / (UNITS / MILLISECONDS)); +} + +/* This class hierarchy will support an IReferenceClock interface so + that an audio card (or other externally driven clock) can update the + system wide clock that everyone uses. + + The interface will be pretty thin with probably just one update method + This interface has not yet been defined. + */ + +/* This abstract base class implements the IReferenceClock + * interface. Classes that actually provide clock signals (from + * whatever source) have to be derived from this class. + * + * The abstract class provides implementations for: + * CUnknown support + * locking support (CCritSec) + * client advise code (creates a thread) + * + * Question: what can we do about quality? Change the timer + * resolution to lower the system load? Up the priority of the + * timer thread to force more responsive signals? + * + * During class construction we create a worker thread that is destroyed during + * destuction. This thread executes a series of WaitForSingleObject calls, + * waking up when a command is given to the thread or the next wake up point + * is reached. The wakeup points are determined by clients making Advise + * calls. + * + * Each advise call defines a point in time when they wish to be notified. A + * periodic advise is a series of these such events. We maintain a list of + * advise links and calculate when the nearest event notification is due for. + * We then call WaitForSingleObject with a timeout equal to this time. The + * handle we wait on is used by the class to signal that something has changed + * and that we must reschedule the next event. This typically happens when + * someone comes in and asks for an advise link while we are waiting for an + * event to timeout. + * + * While we are modifying the list of advise requests we + * are protected from interference through a critical section. Clients are NOT + * advised through callbacks. One shot clients have an event set, while + * periodic clients have a semaphore released for each event notification. A + * semaphore allows a client to be kept up to date with the number of events + * actually triggered and be assured that they can't miss multiple events being + * set. + * + * Keeping track of advises is taken care of by the CAMSchedule class. + */ + +class CBaseReferenceClock +: public CUnknown, public IReferenceClock, public CCritSec +{ +protected: + virtual ~CBaseReferenceClock(); // Don't let me be created on the stack! +public: + CBaseReferenceClock(TCHAR *pName, LPUNKNOWN pUnk, HRESULT *phr, CAMSchedule * pSched = 0 ); + + STDMETHODIMP NonDelegatingQueryInterface(REFIID riid,void ** ppv); + + DECLARE_IUNKNOWN + + /* IReferenceClock methods */ + // Derived classes must implement GetPrivateTime(). All our GetTime + // does is call GetPrivateTime and then check so that time does not + // go backwards. A return code of S_FALSE implies that the internal + // clock has gone backwards and GetTime time has halted until internal + // time has caught up. (Don't know if this will be much use to folk, + // but it seems odd not to use the return code for something useful.) + STDMETHODIMP GetTime(REFERENCE_TIME *pTime); + // When this is called, it sets m_rtLastGotTime to the time it returns. + + /* Provide standard mechanisms for scheduling events */ + + /* Ask for an async notification that a time has elapsed */ + STDMETHODIMP AdviseTime( + REFERENCE_TIME baseTime, // base reference time + REFERENCE_TIME streamTime, // stream offset time + HEVENT hEvent, // advise via this event + DWORD_PTR *pdwAdviseCookie // where your cookie goes + ); + + /* Ask for an asynchronous periodic notification that a time has elapsed */ + STDMETHODIMP AdvisePeriodic( + REFERENCE_TIME StartTime, // starting at this time + REFERENCE_TIME PeriodTime, // time between notifications + HSEMAPHORE hSemaphore, // advise via a semaphore + DWORD_PTR *pdwAdviseCookie // where your cookie goes + ); + + /* Cancel a request for notification(s) - if the notification was + * a one shot timer then this function doesn't need to be called + * as the advise is automatically cancelled, however it does no + * harm to explicitly cancel a one-shot advise. It is REQUIRED that + * clients call Unadvise to clear a Periodic advise setting. + */ + + STDMETHODIMP Unadvise(DWORD_PTR dwAdviseCookie); + + /* Methods for the benefit of derived classes or outer objects */ + + // GetPrivateTime() is the REAL clock. GetTime is just a cover for + // it. Derived classes will probably override this method but not + // GetTime() itself. + // The important point about GetPrivateTime() is it's allowed to go + // backwards. Our GetTime() will keep returning the LastGotTime + // until GetPrivateTime() catches up. + virtual REFERENCE_TIME GetPrivateTime(); + + /* Provide a method for correcting drift */ + STDMETHODIMP SetTimeDelta( const REFERENCE_TIME& TimeDelta ); + + CAMSchedule * GetSchedule() const { return m_pSchedule; } + +private: + REFERENCE_TIME m_rtPrivateTime; // Current best estimate of time + DWORD m_dwPrevSystemTime; // Last vaule we got from timeGetTime + REFERENCE_TIME m_rtLastGotTime; // Last time returned by GetTime + REFERENCE_TIME m_rtNextAdvise; // Time of next advise + UINT m_TimerResolution; + +#ifdef PERF + int m_idGetSystemTime; +#endif + +// Thread stuff +public: + void TriggerThread() // Wakes thread up. Need to do this if + { // time to next advise needs reevaluating. + EXECUTE_ASSERT(SetEvent(m_pSchedule->GetEvent())); + } + + +private: + BOOL m_bAbort; // Flag used for thread shutdown + HANDLE m_hThread; // Thread handle + + HRESULT AdviseThread(); // Method in which the advise thread runs + static DWORD __stdcall AdviseThreadFunction(LPVOID); // Function used to get there + +protected: + CAMSchedule * const m_pSchedule; +#ifdef __MINGW32_MAJOR_VERSION + void Restart (IN REFERENCE_TIME rtMinTime = 0) ; +#else + void Restart (IN REFERENCE_TIME rtMinTime = 0I64) ; +#endif +}; + +#endif + diff --git a/videoInputSrcAndDemos/libs/DShow/Include/reftime.h b/videoInputSrcAndDemos/libs/DShow/Include/reftime.h index 87c43b9..2cf70df 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/reftime.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/reftime.h @@ -1,116 +1,116 @@ -//------------------------------------------------------------------------------ -// File: RefTime.h -// -// Desc: DirectShow base classes - defines CRefTime, a class that manages -// reference times. -// -// Copyright (c) Microsoft Corporation. All rights reserved. -//------------------------------------------------------------------------------ - - -// -// CRefTime -// -// Manage reference times. -// Shares same data layout as REFERENCE_TIME, but adds some (nonvirtual) -// functions providing simple comparison, conversion and arithmetic. -// -// A reference time (at the moment) is a unit of seconds represented in -// 100ns units as is used in the Win32 FILETIME structure. BUT the time -// a REFERENCE_TIME represents is NOT the time elapsed since 1/1/1601 it -// will either be stream time or reference time depending upon context -// -// This class provides simple arithmetic operations on reference times -// -// keep non-virtual otherwise the data layout will not be the same as -// REFERENCE_TIME - - -// ----- -// note that you are safe to cast a CRefTime* to a REFERENCE_TIME*, but -// you will need to do so explicitly -// ----- - - -#ifndef __REFTIME__ -#define __REFTIME__ - - -const LONGLONG MILLISECONDS = (1000); // 10 ^ 3 -const LONGLONG NANOSECONDS = (1000000000); // 10 ^ 9 -const LONGLONG UNITS = (NANOSECONDS / 100); // 10 ^ 7 - -/* Unfortunately an inline function here generates a call to __allmul - - even for constants! -*/ -#define MILLISECONDS_TO_100NS_UNITS(lMs) \ - Int32x32To64((lMs), (UNITS / MILLISECONDS)) - -class CRefTime -{ -public: - - // *MUST* be the only data member so that this class is exactly - // equivalent to a REFERENCE_TIME. - // Also, must be *no virtual functions* - - REFERENCE_TIME m_time; - - inline CRefTime() - { - // default to 0 time - m_time = 0; - }; - - inline CRefTime(LONG msecs) - { - m_time = MILLISECONDS_TO_100NS_UNITS(msecs); - }; - - inline CRefTime(REFERENCE_TIME rt) - { - m_time = rt; - }; - - inline operator REFERENCE_TIME() const - { - return m_time; - }; - - inline CRefTime& operator=(const CRefTime& rt) - { - m_time = rt.m_time; - return *this; - }; - - inline CRefTime& operator=(const LONGLONG ll) - { - m_time = ll; - return *this; - }; - - inline CRefTime& operator+=(const CRefTime& rt) - { - return (*this = *this + rt); - }; - - inline CRefTime& operator-=(const CRefTime& rt) - { - return (*this = *this - rt); - }; - - inline LONG Millisecs(void) - { - return (LONG)(m_time / (UNITS / MILLISECONDS)); - }; - - inline LONGLONG GetUnits(void) - { - return m_time; - }; -}; - -const LONGLONG TimeZero = 0; - -#endif /* __REFTIME__ */ - +//------------------------------------------------------------------------------ +// File: RefTime.h +// +// Desc: DirectShow base classes - defines CRefTime, a class that manages +// reference times. +// +// Copyright (c) Microsoft Corporation. All rights reserved. +//------------------------------------------------------------------------------ + + +// +// CRefTime +// +// Manage reference times. +// Shares same data layout as REFERENCE_TIME, but adds some (nonvirtual) +// functions providing simple comparison, conversion and arithmetic. +// +// A reference time (at the moment) is a unit of seconds represented in +// 100ns units as is used in the Win32 FILETIME structure. BUT the time +// a REFERENCE_TIME represents is NOT the time elapsed since 1/1/1601 it +// will either be stream time or reference time depending upon context +// +// This class provides simple arithmetic operations on reference times +// +// keep non-virtual otherwise the data layout will not be the same as +// REFERENCE_TIME + + +// ----- +// note that you are safe to cast a CRefTime* to a REFERENCE_TIME*, but +// you will need to do so explicitly +// ----- + + +#ifndef __REFTIME__ +#define __REFTIME__ + + +const LONGLONG MILLISECONDS = (1000); // 10 ^ 3 +const LONGLONG NANOSECONDS = (1000000000); // 10 ^ 9 +const LONGLONG UNITS = (NANOSECONDS / 100); // 10 ^ 7 + +/* Unfortunately an inline function here generates a call to __allmul + - even for constants! +*/ +#define MILLISECONDS_TO_100NS_UNITS(lMs) \ + Int32x32To64((lMs), (UNITS / MILLISECONDS)) + +class CRefTime +{ +public: + + // *MUST* be the only data member so that this class is exactly + // equivalent to a REFERENCE_TIME. + // Also, must be *no virtual functions* + + REFERENCE_TIME m_time; + + inline CRefTime() + { + // default to 0 time + m_time = 0; + }; + + inline CRefTime(LONG msecs) + { + m_time = MILLISECONDS_TO_100NS_UNITS(msecs); + }; + + inline CRefTime(REFERENCE_TIME rt) + { + m_time = rt; + }; + + inline operator REFERENCE_TIME() const + { + return m_time; + }; + + inline CRefTime& operator=(const CRefTime& rt) + { + m_time = rt.m_time; + return *this; + }; + + inline CRefTime& operator=(const LONGLONG ll) + { + m_time = ll; + return *this; + }; + + inline CRefTime& operator+=(const CRefTime& rt) + { + return (*this = *this + rt); + }; + + inline CRefTime& operator-=(const CRefTime& rt) + { + return (*this = *this - rt); + }; + + inline LONG Millisecs(void) + { + return (LONG)(m_time / (UNITS / MILLISECONDS)); + }; + + inline LONGLONG GetUnits(void) + { + return m_time; + }; +}; + +const LONGLONG TimeZero = 0; + +#endif /* __REFTIME__ */ + diff --git a/videoInputSrcAndDemos/libs/DShow/Include/regbag.h b/videoInputSrcAndDemos/libs/DShow/Include/regbag.h index 7e0a27f..6cb54d7 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/regbag.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/regbag.h @@ -1,193 +1,193 @@ - -#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 regbag.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 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 -#endif // __RPCNDR_H_VERSION__ - -#ifndef COM_NO_WINDOWS_H -#include "windows.h" -#include "ole2.h" -#endif /*COM_NO_WINDOWS_H*/ - -#ifndef __regbag_h__ -#define __regbag_h__ - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -#pragma once -#endif - -/* Forward Declarations */ - -#ifndef __ICreatePropBagOnRegKey_FWD_DEFINED__ -#define __ICreatePropBagOnRegKey_FWD_DEFINED__ -typedef interface ICreatePropBagOnRegKey ICreatePropBagOnRegKey; -#endif /* __ICreatePropBagOnRegKey_FWD_DEFINED__ */ - - -/* header files for imported files */ -#include "objidl.h" -#include "oaidl.h" -#include "ocidl.h" - -#ifdef __cplusplus -extern "C"{ -#endif - -void * __RPC_USER MIDL_user_allocate(size_t); -void __RPC_USER MIDL_user_free( void * ); - -/* interface __MIDL_itf_regbag_0000 */ -/* [local] */ - -//+------------------------------------------------------------------------- -// -// Microsoft Windows -// Copyright (C) Microsoft Corporation, 1999-2000. -// -//-------------------------------------------------------------------------- -#pragma once - - -extern RPC_IF_HANDLE __MIDL_itf_regbag_0000_v0_0_c_ifspec; -extern RPC_IF_HANDLE __MIDL_itf_regbag_0000_v0_0_s_ifspec; - -#ifndef __ICreatePropBagOnRegKey_INTERFACE_DEFINED__ -#define __ICreatePropBagOnRegKey_INTERFACE_DEFINED__ - -/* interface ICreatePropBagOnRegKey */ -/* [local][unique][helpstring][uuid][restricted][hidden][object] */ - - -EXTERN_C const IID IID_ICreatePropBagOnRegKey; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("8A674B48-1F63-11d3-B64C-00C04F79498E") - ICreatePropBagOnRegKey : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE Create( - /* [in] */ HKEY hkey, - /* [in] */ LPCOLESTR subkey, - /* [in] */ DWORD ulOptions, - /* [in] */ DWORD samDesired, - REFIID iid, - /* [out] */ LPVOID *ppBag) = 0; - - }; - -#else /* C style interface */ - - typedef struct ICreatePropBagOnRegKeyVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - ICreatePropBagOnRegKey * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - ICreatePropBagOnRegKey * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - ICreatePropBagOnRegKey * This); - - HRESULT ( STDMETHODCALLTYPE *Create )( - ICreatePropBagOnRegKey * This, - /* [in] */ HKEY hkey, - /* [in] */ LPCOLESTR subkey, - /* [in] */ DWORD ulOptions, - /* [in] */ DWORD samDesired, - REFIID iid, - /* [out] */ LPVOID *ppBag); - - END_INTERFACE - } ICreatePropBagOnRegKeyVtbl; - - interface ICreatePropBagOnRegKey - { - CONST_VTBL struct ICreatePropBagOnRegKeyVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define ICreatePropBagOnRegKey_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define ICreatePropBagOnRegKey_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define ICreatePropBagOnRegKey_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define ICreatePropBagOnRegKey_Create(This,hkey,subkey,ulOptions,samDesired,iid,ppBag) \ - (This)->lpVtbl -> Create(This,hkey,subkey,ulOptions,samDesired,iid,ppBag) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE ICreatePropBagOnRegKey_Create_Proxy( - ICreatePropBagOnRegKey * This, - /* [in] */ HKEY hkey, - /* [in] */ LPCOLESTR subkey, - /* [in] */ DWORD ulOptions, - /* [in] */ DWORD samDesired, - REFIID iid, - /* [out] */ LPVOID *ppBag); - - -void __RPC_STUB ICreatePropBagOnRegKey_Create_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __ICreatePropBagOnRegKey_INTERFACE_DEFINED__ */ - - -/* Additional Prototypes for ALL interfaces */ - -/* end of Additional Prototypes */ - -#ifdef __cplusplus -} -#endif - -#endif - - + +#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 regbag.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 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 +#endif // __RPCNDR_H_VERSION__ + +#ifndef COM_NO_WINDOWS_H +#include "windows.h" +#include "ole2.h" +#endif /*COM_NO_WINDOWS_H*/ + +#ifndef __regbag_h__ +#define __regbag_h__ + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#pragma once +#endif + +/* Forward Declarations */ + +#ifndef __ICreatePropBagOnRegKey_FWD_DEFINED__ +#define __ICreatePropBagOnRegKey_FWD_DEFINED__ +typedef interface ICreatePropBagOnRegKey ICreatePropBagOnRegKey; +#endif /* __ICreatePropBagOnRegKey_FWD_DEFINED__ */ + + +/* header files for imported files */ +#include "objidl.h" +#include "oaidl.h" +#include "ocidl.h" + +#ifdef __cplusplus +extern "C"{ +#endif + +void * __RPC_USER MIDL_user_allocate(size_t); +void __RPC_USER MIDL_user_free( void * ); + +/* interface __MIDL_itf_regbag_0000 */ +/* [local] */ + +//+------------------------------------------------------------------------- +// +// Microsoft Windows +// Copyright (C) Microsoft Corporation, 1999-2000. +// +//-------------------------------------------------------------------------- +#pragma once + + +extern RPC_IF_HANDLE __MIDL_itf_regbag_0000_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_regbag_0000_v0_0_s_ifspec; + +#ifndef __ICreatePropBagOnRegKey_INTERFACE_DEFINED__ +#define __ICreatePropBagOnRegKey_INTERFACE_DEFINED__ + +/* interface ICreatePropBagOnRegKey */ +/* [local][unique][helpstring][uuid][restricted][hidden][object] */ + + +EXTERN_C const IID IID_ICreatePropBagOnRegKey; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("8A674B48-1F63-11d3-B64C-00C04F79498E") + ICreatePropBagOnRegKey : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE Create( + /* [in] */ HKEY hkey, + /* [in] */ LPCOLESTR subkey, + /* [in] */ DWORD ulOptions, + /* [in] */ DWORD samDesired, + REFIID iid, + /* [out] */ LPVOID *ppBag) = 0; + + }; + +#else /* C style interface */ + + typedef struct ICreatePropBagOnRegKeyVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ICreatePropBagOnRegKey * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ICreatePropBagOnRegKey * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ICreatePropBagOnRegKey * This); + + HRESULT ( STDMETHODCALLTYPE *Create )( + ICreatePropBagOnRegKey * This, + /* [in] */ HKEY hkey, + /* [in] */ LPCOLESTR subkey, + /* [in] */ DWORD ulOptions, + /* [in] */ DWORD samDesired, + REFIID iid, + /* [out] */ LPVOID *ppBag); + + END_INTERFACE + } ICreatePropBagOnRegKeyVtbl; + + interface ICreatePropBagOnRegKey + { + CONST_VTBL struct ICreatePropBagOnRegKeyVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ICreatePropBagOnRegKey_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define ICreatePropBagOnRegKey_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define ICreatePropBagOnRegKey_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define ICreatePropBagOnRegKey_Create(This,hkey,subkey,ulOptions,samDesired,iid,ppBag) \ + (This)->lpVtbl -> Create(This,hkey,subkey,ulOptions,samDesired,iid,ppBag) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE ICreatePropBagOnRegKey_Create_Proxy( + ICreatePropBagOnRegKey * This, + /* [in] */ HKEY hkey, + /* [in] */ LPCOLESTR subkey, + /* [in] */ DWORD ulOptions, + /* [in] */ DWORD samDesired, + REFIID iid, + /* [out] */ LPVOID *ppBag); + + +void __RPC_STUB ICreatePropBagOnRegKey_Create_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __ICreatePropBagOnRegKey_INTERFACE_DEFINED__ */ + + +/* Additional Prototypes for ALL interfaces */ + +/* end of Additional Prototypes */ + +#ifdef __cplusplus +} +#endif + +#endif + + diff --git a/videoInputSrcAndDemos/libs/DShow/Include/renbase.h b/videoInputSrcAndDemos/libs/DShow/Include/renbase.h index f30a3fa..5352e87 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/renbase.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/renbase.h @@ -1,478 +1,478 @@ -//------------------------------------------------------------------------------ -// File: RenBase.h -// -// Desc: DirectShow base classes - defines a generic ActiveX base renderer -// class. -// -// Copyright (c) Microsoft Corporation. All rights reserved. -//------------------------------------------------------------------------------ - - -#ifndef __RENBASE__ -#define __RENBASE__ - -// Forward class declarations - -class CBaseRenderer; -class CBaseVideoRenderer; -class CRendererInputPin; - -// This is our input pin class that channels calls to the renderer - -class CRendererInputPin : public CBaseInputPin -{ -protected: - - CBaseRenderer *m_pRenderer; - -public: - - CRendererInputPin(CBaseRenderer *pRenderer, - HRESULT *phr, - LPCWSTR Name); - - // Overriden from the base pin classes - - HRESULT BreakConnect(); - HRESULT CompleteConnect(IPin *pReceivePin); - HRESULT SetMediaType(const CMediaType *pmt); - HRESULT CheckMediaType(const CMediaType *pmt); - HRESULT Active(); - HRESULT Inactive(); - - // Add rendering behaviour to interface functions - - STDMETHODIMP QueryId(LPWSTR *Id); - STDMETHODIMP EndOfStream(); - STDMETHODIMP BeginFlush(); - STDMETHODIMP EndFlush(); - STDMETHODIMP Receive(IMediaSample *pMediaSample); - - // Helper - IMemAllocator inline *Allocator() const - { - return m_pAllocator; - } -}; - -// Main renderer class that handles synchronisation and state changes - -class CBaseRenderer : public CBaseFilter -{ -protected: - - friend class CRendererInputPin; - - friend void CALLBACK EndOfStreamTimer(UINT uID, // Timer identifier - UINT uMsg, // Not currently used - DWORD_PTR dwUser, // User information - DWORD_PTR dw1, // Windows reserved - DWORD_PTR dw2); // Is also reserved - - CRendererPosPassThru *m_pPosition; // Media seeking pass by object - CAMEvent m_RenderEvent; // Used to signal timer events - CAMEvent m_ThreadSignal; // Signalled to release worker thread - CAMEvent m_evComplete; // Signalled when state complete - BOOL m_bAbort; // Stop us from rendering more data - BOOL m_bStreaming; // Are we currently streaming - DWORD_PTR m_dwAdvise; // Timer advise cookie - IMediaSample *m_pMediaSample; // Current image media sample - BOOL m_bEOS; // Any more samples in the stream - BOOL m_bEOSDelivered; // Have we delivered an EC_COMPLETE - CRendererInputPin *m_pInputPin; // Our renderer input pin object - CCritSec m_InterfaceLock; // Critical section for interfaces - CCritSec m_RendererLock; // Controls access to internals - IQualityControl * m_pQSink; // QualityControl sink - BOOL m_bRepaintStatus; // Can we signal an EC_REPAINT - // Avoid some deadlocks by tracking filter during stop - volatile BOOL m_bInReceive; // Inside Receive between PrepareReceive - // And actually processing the sample - REFERENCE_TIME m_SignalTime; // Time when we signal EC_COMPLETE - UINT m_EndOfStreamTimer; // Used to signal end of stream - CCritSec m_ObjectCreationLock; // This lock protects the creation and - // of m_pPosition and m_pInputPin. It - // ensures that two threads cannot create - // either object simultaneously. - -public: - - CBaseRenderer(REFCLSID RenderClass, // CLSID for this renderer - TCHAR *pName, // Debug ONLY description - LPUNKNOWN pUnk, // Aggregated owner object - HRESULT *phr); // General OLE return code - - ~CBaseRenderer(); - - // Overriden to say what interfaces we support and where - - virtual HRESULT GetMediaPositionInterface(REFIID riid,void **ppv); - STDMETHODIMP NonDelegatingQueryInterface(REFIID, void **); - - virtual HRESULT SourceThreadCanWait(BOOL bCanWait); - -#ifdef DEBUG - // Debug only dump of the renderer state - void DisplayRendererState(); -#endif - virtual HRESULT WaitForRenderTime(); - virtual HRESULT CompleteStateChange(FILTER_STATE OldState); - - // Return internal information about this filter - - BOOL IsEndOfStream() { return m_bEOS; }; - BOOL IsEndOfStreamDelivered() { return m_bEOSDelivered; }; - BOOL IsStreaming() { return m_bStreaming; }; - void SetAbortSignal(BOOL bAbort) { m_bAbort = bAbort; }; - virtual void OnReceiveFirstSample(IMediaSample *pMediaSample) { }; - CAMEvent *GetRenderEvent() { return &m_RenderEvent; }; - - // Permit access to the transition state - - void Ready() { m_evComplete.Set(); }; - void NotReady() { m_evComplete.Reset(); }; - BOOL CheckReady() { return m_evComplete.Check(); }; - - virtual int GetPinCount(); - virtual CBasePin *GetPin(int n); - FILTER_STATE GetRealState(); - void SendRepaint(); - void SendNotifyWindow(IPin *pPin,HWND hwnd); - BOOL OnDisplayChange(); - void SetRepaintStatus(BOOL bRepaint); - - // Override the filter and pin interface functions - - STDMETHODIMP Stop(); - STDMETHODIMP Pause(); - STDMETHODIMP Run(REFERENCE_TIME StartTime); - STDMETHODIMP GetState(DWORD dwMSecs,FILTER_STATE *State); - STDMETHODIMP FindPin(LPCWSTR Id, IPin **ppPin); - - // These are available for a quality management implementation - - virtual void OnRenderStart(IMediaSample *pMediaSample); - virtual void OnRenderEnd(IMediaSample *pMediaSample); - virtual HRESULT OnStartStreaming() { return NOERROR; }; - virtual HRESULT OnStopStreaming() { return NOERROR; }; - virtual void OnWaitStart() { }; - virtual void OnWaitEnd() { }; - virtual void PrepareRender() { }; - -#ifdef PERF - REFERENCE_TIME m_trRenderStart; // Just before we started drawing - // Set in OnRenderStart, Used in OnRenderEnd - int m_idBaseStamp; // MSR_id for frame time stamp - int m_idBaseRenderTime; // MSR_id for true wait time - int m_idBaseAccuracy; // MSR_id for time frame is late (int) -#endif - - // Quality management implementation for scheduling rendering - - virtual BOOL ScheduleSample(IMediaSample *pMediaSample); - virtual HRESULT GetSampleTimes(IMediaSample *pMediaSample, - REFERENCE_TIME *pStartTime, - REFERENCE_TIME *pEndTime); - - virtual HRESULT ShouldDrawSampleNow(IMediaSample *pMediaSample, - REFERENCE_TIME *ptrStart, - REFERENCE_TIME *ptrEnd); - - // Lots of end of stream complexities - - void TimerCallback(); - void ResetEndOfStreamTimer(); - HRESULT NotifyEndOfStream(); - virtual HRESULT SendEndOfStream(); - virtual HRESULT ResetEndOfStream(); - virtual HRESULT EndOfStream(); - - // Rendering is based around the clock - - void SignalTimerFired(); - virtual HRESULT CancelNotification(); - virtual HRESULT ClearPendingSample(); - - // Called when the filter changes state - - virtual HRESULT Active(); - virtual HRESULT Inactive(); - virtual HRESULT StartStreaming(); - virtual HRESULT StopStreaming(); - virtual HRESULT BeginFlush(); - virtual HRESULT EndFlush(); - - // Deal with connections and type changes - - virtual HRESULT BreakConnect(); - virtual HRESULT SetMediaType(const CMediaType *pmt); - virtual HRESULT CompleteConnect(IPin *pReceivePin); - - // These look after the handling of data samples - - virtual HRESULT PrepareReceive(IMediaSample *pMediaSample); - virtual HRESULT Receive(IMediaSample *pMediaSample); - virtual BOOL HaveCurrentSample(); - virtual IMediaSample *GetCurrentSample(); - virtual HRESULT Render(IMediaSample *pMediaSample); - - // Derived classes MUST override these - virtual HRESULT DoRenderSample(IMediaSample *pMediaSample) PURE; - virtual HRESULT CheckMediaType(const CMediaType *) PURE; - - // Helper - void WaitForReceiveToComplete(); -}; - - -// CBaseVideoRenderer is a renderer class (see its ancestor class) and -// it handles scheduling of media samples so that they are drawn at the -// correct time by the reference clock. It implements a degradation -// strategy. Possible degradation modes are: -// Drop frames here (only useful if the drawing takes significant time) -// Signal supplier (upstream) to drop some frame(s) - i.e. one-off skip. -// Signal supplier to change the frame rate - i.e. ongoing skipping. -// Or any combination of the above. -// In order to determine what's useful to try we need to know what's going -// on. This is done by timing various operations (including the supplier). -// This timing is done by using timeGetTime as it is accurate enough and -// usually cheaper than calling the reference clock. It also tells the -// truth if there is an audio break and the reference clock stops. -// We provide a number of public entry points (named OnXxxStart, OnXxxEnd) -// which the rest of the renderer calls at significant moments. These do -// the timing. - -// the number of frames that the sliding averages are averaged over. -// the rule is (1024*NewObservation + (AVGPERIOD-1) * PreviousAverage)/AVGPERIOD -#define AVGPERIOD 4 -#define DO_MOVING_AVG(avg,obs) (avg = (1024*obs + (AVGPERIOD-1)*avg)/AVGPERIOD) -// Spot the bug in this macro - I can't. but it doesn't work! - -class CBaseVideoRenderer : public CBaseRenderer, // Base renderer class - public IQualProp, // Property page guff - public IQualityControl // Allow throttling -{ -protected: - - // Hungarian: - // tFoo is the time Foo in mSec (beware m_tStart from filter.h) - // trBar is the time Bar by the reference clock - - //****************************************************************** - // State variables to control synchronisation - //****************************************************************** - - // Control of sending Quality messages. We need to know whether - // we are in trouble (e.g. frames being dropped) and where the time - // is being spent. - - // When we drop a frame we play the next one early. - // The frame after that is likely to wait before drawing and counting this - // wait as spare time is unfair, so we count it as a zero wait. - // We therefore need to know whether we are playing frames early or not. - - int m_nNormal; // The number of consecutive frames - // drawn at their normal time (not early) - // -1 means we just dropped a frame. - -#ifdef PERF - BOOL m_bDrawLateFrames; // Don't drop any frames (debug and I'm - // not keen on people using it!) -#endif - - BOOL m_bSupplierHandlingQuality;// The response to Quality messages says - // our supplier is handling things. - // We will allow things to go extra late - // before dropping frames. We will play - // very early after he has dropped one. - - // Control of scheduling, frame dropping etc. - // We need to know where the time is being spent so as to tell whether - // we should be taking action here, signalling supplier or what. - // The variables are initialised to a mode of NOT dropping frames. - // They will tell the truth after a few frames. - // We typically record a start time for an event, later we get the time - // again and subtract to get the elapsed time, and we average this over - // a few frames. The average is used to tell what mode we are in. - - // Although these are reference times (64 bit) they are all DIFFERENCES - // between times which are small. An int will go up to 214 secs before - // overflow. Avoiding 64 bit multiplications and divisions seems - // worth while. - - - - // Audio-video throttling. If the user has turned up audio quality - // very high (in principle it could be any other stream, not just audio) - // then we can receive cries for help via the graph manager. In this case - // we put in a wait for some time after rendering each frame. - int m_trThrottle; - - // The time taken to render (i.e. BitBlt) frames controls which component - // needs to degrade. If the blt is expensive, the renderer degrades. - // If the blt is cheap it's done anyway and the supplier degrades. - int m_trRenderAvg; // Time frames are taking to blt - int m_trRenderLast; // Time for last frame blt - int m_tRenderStart; // Just before we started drawing (mSec) - // derived from timeGetTime. - - // When frames are dropped we will play the next frame as early as we can. - // If it was a false alarm and the machine is fast we slide gently back to - // normal timing. To do this, we record the offset showing just how early - // we really are. This will normally be negative meaning early or zero. - int m_trEarliness; - - // Target provides slow long-term feedback to try to reduce the - // average sync offset to zero. Whenever a frame is actually rendered - // early we add a msec or two, whenever late we take off a few. - // We add or take off 1/32 of the error time. - // Eventually we should be hovering around zero. For a really bad case - // where we were (say) 300mSec off, it might take 100 odd frames to - // settle down. The rate of change of this is intended to be slower - // than any other mechanism in Quartz, thereby avoiding hunting. - int m_trTarget; - - // The proportion of time spent waiting for the right moment to blt - // controls whether we bother to drop a frame or whether we reckon that - // we're doing well enough that we can stand a one-frame glitch. - int m_trWaitAvg; // Average of last few wait times - // (actually we just average how early - // we were). Negative here means LATE. - - // The average inter-frame time. - // This is used to calculate the proportion of the time used by the - // three operations (supplying us, waiting, rendering) - int m_trFrameAvg; // Average inter-frame time - int m_trDuration; // duration of last frame. - -#ifdef PERF - // Performance logging identifiers - int m_idTimeStamp; // MSR_id for frame time stamp - int m_idEarliness; // MSR_id for earliness fudge - int m_idTarget; // MSR_id for Target fudge - int m_idWaitReal; // MSR_id for true wait time - int m_idWait; // MSR_id for wait time recorded - int m_idFrameAccuracy; // MSR_id for time frame is late (int) - int m_idRenderAvg; // MSR_id for Render time recorded (int) - int m_idSchLateTime; // MSR_id for lateness at scheduler - int m_idQualityRate; // MSR_id for Quality rate requested - int m_idQualityTime; // MSR_id for Quality time requested - int m_idDecision; // MSR_id for decision code - int m_idDuration; // MSR_id for duration of a frame - int m_idThrottle; // MSR_id for audio-video throttling - //int m_idDebug; // MSR_id for trace style debugging - //int m_idSendQuality; // MSR_id for timing the notifications per se -#endif // PERF - REFERENCE_TIME m_trRememberStampForPerf; // original time stamp of frame - // with no earliness fudges etc. -#ifdef PERF - REFERENCE_TIME m_trRememberFrameForPerf; // time when previous frame rendered - - // debug... - int m_idFrameAvg; - int m_idWaitAvg; -#endif - - // PROPERTY PAGE - // This has edit fields that show the user what's happening - // These member variables hold these counts. - - int m_cFramesDropped; // cumulative frames dropped IN THE RENDERER - int m_cFramesDrawn; // Frames since streaming started seen BY THE - // RENDERER (some may be dropped upstream) - - // Next two support average sync offset and standard deviation of sync offset. - LONGLONG m_iTotAcc; // Sum of accuracies in mSec - LONGLONG m_iSumSqAcc; // Sum of squares of (accuracies in mSec) - - // Next two allow jitter calculation. Jitter is std deviation of frame time. - REFERENCE_TIME m_trLastDraw; // Time of prev frame (for inter-frame times) - LONGLONG m_iSumSqFrameTime; // Sum of squares of (inter-frame time in mSec) - LONGLONG m_iSumFrameTime; // Sum of inter-frame times in mSec - - // To get performance statistics on frame rate, jitter etc, we need - // to record the lateness and inter-frame time. What we actually need are the - // data above (sum, sum of squares and number of entries for each) but the data - // is generated just ahead of time and only later do we discover whether the - // frame was actually drawn or not. So we have to hang on to the data - int m_trLate; // hold onto frame lateness - int m_trFrame; // hold onto inter-frame time - - int m_tStreamingStart; // if streaming then time streaming started - // else time of last streaming session - // used for property page statistics -#ifdef PERF - LONGLONG m_llTimeOffset; // timeGetTime()*10000+m_llTimeOffset==ref time -#endif - -public: - - - CBaseVideoRenderer(REFCLSID RenderClass, // CLSID for this renderer - TCHAR *pName, // Debug ONLY description - LPUNKNOWN pUnk, // Aggregated owner object - HRESULT *phr); // General OLE return code - - ~CBaseVideoRenderer(); - - // IQualityControl methods - Notify allows audio-video throttling - - STDMETHODIMP SetSink( IQualityControl * piqc); - STDMETHODIMP Notify( IBaseFilter * pSelf, Quality q); - - // These provide a full video quality management implementation - - void OnRenderStart(IMediaSample *pMediaSample); - void OnRenderEnd(IMediaSample *pMediaSample); - void OnWaitStart(); - void OnWaitEnd(); - HRESULT OnStartStreaming(); - HRESULT OnStopStreaming(); - void ThrottleWait(); - - // Handle the statistics gathering for our quality management - - void PreparePerformanceData(int trLate, int trFrame); - virtual void RecordFrameLateness(int trLate, int trFrame); - virtual void OnDirectRender(IMediaSample *pMediaSample); - virtual HRESULT ResetStreamingTimes(); - BOOL ScheduleSample(IMediaSample *pMediaSample); - HRESULT ShouldDrawSampleNow(IMediaSample *pMediaSample, - REFERENCE_TIME *ptrStart, - REFERENCE_TIME *ptrEnd); - - virtual HRESULT SendQuality(REFERENCE_TIME trLate, REFERENCE_TIME trRealStream); - STDMETHODIMP JoinFilterGraph(IFilterGraph * pGraph, LPCWSTR pName); - - // - // Do estimates for standard deviations for per-frame - // statistics - // - // *piResult = (llSumSq - iTot * iTot / m_cFramesDrawn - 1) / - // (m_cFramesDrawn - 2) - // or 0 if m_cFramesDrawn <= 3 - // - HRESULT GetStdDev( - int nSamples, - int *piResult, - LONGLONG llSumSq, - LONGLONG iTot - ); -public: - - // IQualProp property page support - - STDMETHODIMP get_FramesDroppedInRenderer(int *cFramesDropped); - STDMETHODIMP get_FramesDrawn(int *pcFramesDrawn); - STDMETHODIMP get_AvgFrameRate(int *piAvgFrameRate); - STDMETHODIMP get_Jitter(int *piJitter); - STDMETHODIMP get_AvgSyncOffset(int *piAvg); - STDMETHODIMP get_DevSyncOffset(int *piDev); - - // Implement an IUnknown interface and expose IQualProp - - DECLARE_IUNKNOWN - STDMETHODIMP NonDelegatingQueryInterface(REFIID riid,VOID **ppv); -}; - -#endif // __RENBASE__ - +//------------------------------------------------------------------------------ +// File: RenBase.h +// +// Desc: DirectShow base classes - defines a generic ActiveX base renderer +// class. +// +// Copyright (c) Microsoft Corporation. All rights reserved. +//------------------------------------------------------------------------------ + + +#ifndef __RENBASE__ +#define __RENBASE__ + +// Forward class declarations + +class CBaseRenderer; +class CBaseVideoRenderer; +class CRendererInputPin; + +// This is our input pin class that channels calls to the renderer + +class CRendererInputPin : public CBaseInputPin +{ +protected: + + CBaseRenderer *m_pRenderer; + +public: + + CRendererInputPin(CBaseRenderer *pRenderer, + HRESULT *phr, + LPCWSTR Name); + + // Overriden from the base pin classes + + HRESULT BreakConnect(); + HRESULT CompleteConnect(IPin *pReceivePin); + HRESULT SetMediaType(const CMediaType *pmt); + HRESULT CheckMediaType(const CMediaType *pmt); + HRESULT Active(); + HRESULT Inactive(); + + // Add rendering behaviour to interface functions + + STDMETHODIMP QueryId(LPWSTR *Id); + STDMETHODIMP EndOfStream(); + STDMETHODIMP BeginFlush(); + STDMETHODIMP EndFlush(); + STDMETHODIMP Receive(IMediaSample *pMediaSample); + + // Helper + IMemAllocator inline *Allocator() const + { + return m_pAllocator; + } +}; + +// Main renderer class that handles synchronisation and state changes + +class CBaseRenderer : public CBaseFilter +{ +protected: + + friend class CRendererInputPin; + + friend void CALLBACK EndOfStreamTimer(UINT uID, // Timer identifier + UINT uMsg, // Not currently used + DWORD_PTR dwUser, // User information + DWORD_PTR dw1, // Windows reserved + DWORD_PTR dw2); // Is also reserved + + CRendererPosPassThru *m_pPosition; // Media seeking pass by object + CAMEvent m_RenderEvent; // Used to signal timer events + CAMEvent m_ThreadSignal; // Signalled to release worker thread + CAMEvent m_evComplete; // Signalled when state complete + BOOL m_bAbort; // Stop us from rendering more data + BOOL m_bStreaming; // Are we currently streaming + DWORD_PTR m_dwAdvise; // Timer advise cookie + IMediaSample *m_pMediaSample; // Current image media sample + BOOL m_bEOS; // Any more samples in the stream + BOOL m_bEOSDelivered; // Have we delivered an EC_COMPLETE + CRendererInputPin *m_pInputPin; // Our renderer input pin object + CCritSec m_InterfaceLock; // Critical section for interfaces + CCritSec m_RendererLock; // Controls access to internals + IQualityControl * m_pQSink; // QualityControl sink + BOOL m_bRepaintStatus; // Can we signal an EC_REPAINT + // Avoid some deadlocks by tracking filter during stop + volatile BOOL m_bInReceive; // Inside Receive between PrepareReceive + // And actually processing the sample + REFERENCE_TIME m_SignalTime; // Time when we signal EC_COMPLETE + UINT m_EndOfStreamTimer; // Used to signal end of stream + CCritSec m_ObjectCreationLock; // This lock protects the creation and + // of m_pPosition and m_pInputPin. It + // ensures that two threads cannot create + // either object simultaneously. + +public: + + CBaseRenderer(REFCLSID RenderClass, // CLSID for this renderer + TCHAR *pName, // Debug ONLY description + LPUNKNOWN pUnk, // Aggregated owner object + HRESULT *phr); // General OLE return code + + ~CBaseRenderer(); + + // Overriden to say what interfaces we support and where + + virtual HRESULT GetMediaPositionInterface(REFIID riid,void **ppv); + STDMETHODIMP NonDelegatingQueryInterface(REFIID, void **); + + virtual HRESULT SourceThreadCanWait(BOOL bCanWait); + +#ifdef DEBUG + // Debug only dump of the renderer state + void DisplayRendererState(); +#endif + virtual HRESULT WaitForRenderTime(); + virtual HRESULT CompleteStateChange(FILTER_STATE OldState); + + // Return internal information about this filter + + BOOL IsEndOfStream() { return m_bEOS; }; + BOOL IsEndOfStreamDelivered() { return m_bEOSDelivered; }; + BOOL IsStreaming() { return m_bStreaming; }; + void SetAbortSignal(BOOL bAbort) { m_bAbort = bAbort; }; + virtual void OnReceiveFirstSample(IMediaSample *pMediaSample) { }; + CAMEvent *GetRenderEvent() { return &m_RenderEvent; }; + + // Permit access to the transition state + + void Ready() { m_evComplete.Set(); }; + void NotReady() { m_evComplete.Reset(); }; + BOOL CheckReady() { return m_evComplete.Check(); }; + + virtual int GetPinCount(); + virtual CBasePin *GetPin(int n); + FILTER_STATE GetRealState(); + void SendRepaint(); + void SendNotifyWindow(IPin *pPin,HWND hwnd); + BOOL OnDisplayChange(); + void SetRepaintStatus(BOOL bRepaint); + + // Override the filter and pin interface functions + + STDMETHODIMP Stop(); + STDMETHODIMP Pause(); + STDMETHODIMP Run(REFERENCE_TIME StartTime); + STDMETHODIMP GetState(DWORD dwMSecs,FILTER_STATE *State); + STDMETHODIMP FindPin(LPCWSTR Id, IPin **ppPin); + + // These are available for a quality management implementation + + virtual void OnRenderStart(IMediaSample *pMediaSample); + virtual void OnRenderEnd(IMediaSample *pMediaSample); + virtual HRESULT OnStartStreaming() { return NOERROR; }; + virtual HRESULT OnStopStreaming() { return NOERROR; }; + virtual void OnWaitStart() { }; + virtual void OnWaitEnd() { }; + virtual void PrepareRender() { }; + +#ifdef PERF + REFERENCE_TIME m_trRenderStart; // Just before we started drawing + // Set in OnRenderStart, Used in OnRenderEnd + int m_idBaseStamp; // MSR_id for frame time stamp + int m_idBaseRenderTime; // MSR_id for true wait time + int m_idBaseAccuracy; // MSR_id for time frame is late (int) +#endif + + // Quality management implementation for scheduling rendering + + virtual BOOL ScheduleSample(IMediaSample *pMediaSample); + virtual HRESULT GetSampleTimes(IMediaSample *pMediaSample, + REFERENCE_TIME *pStartTime, + REFERENCE_TIME *pEndTime); + + virtual HRESULT ShouldDrawSampleNow(IMediaSample *pMediaSample, + REFERENCE_TIME *ptrStart, + REFERENCE_TIME *ptrEnd); + + // Lots of end of stream complexities + + void TimerCallback(); + void ResetEndOfStreamTimer(); + HRESULT NotifyEndOfStream(); + virtual HRESULT SendEndOfStream(); + virtual HRESULT ResetEndOfStream(); + virtual HRESULT EndOfStream(); + + // Rendering is based around the clock + + void SignalTimerFired(); + virtual HRESULT CancelNotification(); + virtual HRESULT ClearPendingSample(); + + // Called when the filter changes state + + virtual HRESULT Active(); + virtual HRESULT Inactive(); + virtual HRESULT StartStreaming(); + virtual HRESULT StopStreaming(); + virtual HRESULT BeginFlush(); + virtual HRESULT EndFlush(); + + // Deal with connections and type changes + + virtual HRESULT BreakConnect(); + virtual HRESULT SetMediaType(const CMediaType *pmt); + virtual HRESULT CompleteConnect(IPin *pReceivePin); + + // These look after the handling of data samples + + virtual HRESULT PrepareReceive(IMediaSample *pMediaSample); + virtual HRESULT Receive(IMediaSample *pMediaSample); + virtual BOOL HaveCurrentSample(); + virtual IMediaSample *GetCurrentSample(); + virtual HRESULT Render(IMediaSample *pMediaSample); + + // Derived classes MUST override these + virtual HRESULT DoRenderSample(IMediaSample *pMediaSample) PURE; + virtual HRESULT CheckMediaType(const CMediaType *) PURE; + + // Helper + void WaitForReceiveToComplete(); +}; + + +// CBaseVideoRenderer is a renderer class (see its ancestor class) and +// it handles scheduling of media samples so that they are drawn at the +// correct time by the reference clock. It implements a degradation +// strategy. Possible degradation modes are: +// Drop frames here (only useful if the drawing takes significant time) +// Signal supplier (upstream) to drop some frame(s) - i.e. one-off skip. +// Signal supplier to change the frame rate - i.e. ongoing skipping. +// Or any combination of the above. +// In order to determine what's useful to try we need to know what's going +// on. This is done by timing various operations (including the supplier). +// This timing is done by using timeGetTime as it is accurate enough and +// usually cheaper than calling the reference clock. It also tells the +// truth if there is an audio break and the reference clock stops. +// We provide a number of public entry points (named OnXxxStart, OnXxxEnd) +// which the rest of the renderer calls at significant moments. These do +// the timing. + +// the number of frames that the sliding averages are averaged over. +// the rule is (1024*NewObservation + (AVGPERIOD-1) * PreviousAverage)/AVGPERIOD +#define AVGPERIOD 4 +#define DO_MOVING_AVG(avg,obs) (avg = (1024*obs + (AVGPERIOD-1)*avg)/AVGPERIOD) +// Spot the bug in this macro - I can't. but it doesn't work! + +class CBaseVideoRenderer : public CBaseRenderer, // Base renderer class + public IQualProp, // Property page guff + public IQualityControl // Allow throttling +{ +protected: + + // Hungarian: + // tFoo is the time Foo in mSec (beware m_tStart from filter.h) + // trBar is the time Bar by the reference clock + + //****************************************************************** + // State variables to control synchronisation + //****************************************************************** + + // Control of sending Quality messages. We need to know whether + // we are in trouble (e.g. frames being dropped) and where the time + // is being spent. + + // When we drop a frame we play the next one early. + // The frame after that is likely to wait before drawing and counting this + // wait as spare time is unfair, so we count it as a zero wait. + // We therefore need to know whether we are playing frames early or not. + + int m_nNormal; // The number of consecutive frames + // drawn at their normal time (not early) + // -1 means we just dropped a frame. + +#ifdef PERF + BOOL m_bDrawLateFrames; // Don't drop any frames (debug and I'm + // not keen on people using it!) +#endif + + BOOL m_bSupplierHandlingQuality;// The response to Quality messages says + // our supplier is handling things. + // We will allow things to go extra late + // before dropping frames. We will play + // very early after he has dropped one. + + // Control of scheduling, frame dropping etc. + // We need to know where the time is being spent so as to tell whether + // we should be taking action here, signalling supplier or what. + // The variables are initialised to a mode of NOT dropping frames. + // They will tell the truth after a few frames. + // We typically record a start time for an event, later we get the time + // again and subtract to get the elapsed time, and we average this over + // a few frames. The average is used to tell what mode we are in. + + // Although these are reference times (64 bit) they are all DIFFERENCES + // between times which are small. An int will go up to 214 secs before + // overflow. Avoiding 64 bit multiplications and divisions seems + // worth while. + + + + // Audio-video throttling. If the user has turned up audio quality + // very high (in principle it could be any other stream, not just audio) + // then we can receive cries for help via the graph manager. In this case + // we put in a wait for some time after rendering each frame. + int m_trThrottle; + + // The time taken to render (i.e. BitBlt) frames controls which component + // needs to degrade. If the blt is expensive, the renderer degrades. + // If the blt is cheap it's done anyway and the supplier degrades. + int m_trRenderAvg; // Time frames are taking to blt + int m_trRenderLast; // Time for last frame blt + int m_tRenderStart; // Just before we started drawing (mSec) + // derived from timeGetTime. + + // When frames are dropped we will play the next frame as early as we can. + // If it was a false alarm and the machine is fast we slide gently back to + // normal timing. To do this, we record the offset showing just how early + // we really are. This will normally be negative meaning early or zero. + int m_trEarliness; + + // Target provides slow long-term feedback to try to reduce the + // average sync offset to zero. Whenever a frame is actually rendered + // early we add a msec or two, whenever late we take off a few. + // We add or take off 1/32 of the error time. + // Eventually we should be hovering around zero. For a really bad case + // where we were (say) 300mSec off, it might take 100 odd frames to + // settle down. The rate of change of this is intended to be slower + // than any other mechanism in Quartz, thereby avoiding hunting. + int m_trTarget; + + // The proportion of time spent waiting for the right moment to blt + // controls whether we bother to drop a frame or whether we reckon that + // we're doing well enough that we can stand a one-frame glitch. + int m_trWaitAvg; // Average of last few wait times + // (actually we just average how early + // we were). Negative here means LATE. + + // The average inter-frame time. + // This is used to calculate the proportion of the time used by the + // three operations (supplying us, waiting, rendering) + int m_trFrameAvg; // Average inter-frame time + int m_trDuration; // duration of last frame. + +#ifdef PERF + // Performance logging identifiers + int m_idTimeStamp; // MSR_id for frame time stamp + int m_idEarliness; // MSR_id for earliness fudge + int m_idTarget; // MSR_id for Target fudge + int m_idWaitReal; // MSR_id for true wait time + int m_idWait; // MSR_id for wait time recorded + int m_idFrameAccuracy; // MSR_id for time frame is late (int) + int m_idRenderAvg; // MSR_id for Render time recorded (int) + int m_idSchLateTime; // MSR_id for lateness at scheduler + int m_idQualityRate; // MSR_id for Quality rate requested + int m_idQualityTime; // MSR_id for Quality time requested + int m_idDecision; // MSR_id for decision code + int m_idDuration; // MSR_id for duration of a frame + int m_idThrottle; // MSR_id for audio-video throttling + //int m_idDebug; // MSR_id for trace style debugging + //int m_idSendQuality; // MSR_id for timing the notifications per se +#endif // PERF + REFERENCE_TIME m_trRememberStampForPerf; // original time stamp of frame + // with no earliness fudges etc. +#ifdef PERF + REFERENCE_TIME m_trRememberFrameForPerf; // time when previous frame rendered + + // debug... + int m_idFrameAvg; + int m_idWaitAvg; +#endif + + // PROPERTY PAGE + // This has edit fields that show the user what's happening + // These member variables hold these counts. + + int m_cFramesDropped; // cumulative frames dropped IN THE RENDERER + int m_cFramesDrawn; // Frames since streaming started seen BY THE + // RENDERER (some may be dropped upstream) + + // Next two support average sync offset and standard deviation of sync offset. + LONGLONG m_iTotAcc; // Sum of accuracies in mSec + LONGLONG m_iSumSqAcc; // Sum of squares of (accuracies in mSec) + + // Next two allow jitter calculation. Jitter is std deviation of frame time. + REFERENCE_TIME m_trLastDraw; // Time of prev frame (for inter-frame times) + LONGLONG m_iSumSqFrameTime; // Sum of squares of (inter-frame time in mSec) + LONGLONG m_iSumFrameTime; // Sum of inter-frame times in mSec + + // To get performance statistics on frame rate, jitter etc, we need + // to record the lateness and inter-frame time. What we actually need are the + // data above (sum, sum of squares and number of entries for each) but the data + // is generated just ahead of time and only later do we discover whether the + // frame was actually drawn or not. So we have to hang on to the data + int m_trLate; // hold onto frame lateness + int m_trFrame; // hold onto inter-frame time + + int m_tStreamingStart; // if streaming then time streaming started + // else time of last streaming session + // used for property page statistics +#ifdef PERF + LONGLONG m_llTimeOffset; // timeGetTime()*10000+m_llTimeOffset==ref time +#endif + +public: + + + CBaseVideoRenderer(REFCLSID RenderClass, // CLSID for this renderer + TCHAR *pName, // Debug ONLY description + LPUNKNOWN pUnk, // Aggregated owner object + HRESULT *phr); // General OLE return code + + ~CBaseVideoRenderer(); + + // IQualityControl methods - Notify allows audio-video throttling + + STDMETHODIMP SetSink( IQualityControl * piqc); + STDMETHODIMP Notify( IBaseFilter * pSelf, Quality q); + + // These provide a full video quality management implementation + + void OnRenderStart(IMediaSample *pMediaSample); + void OnRenderEnd(IMediaSample *pMediaSample); + void OnWaitStart(); + void OnWaitEnd(); + HRESULT OnStartStreaming(); + HRESULT OnStopStreaming(); + void ThrottleWait(); + + // Handle the statistics gathering for our quality management + + void PreparePerformanceData(int trLate, int trFrame); + virtual void RecordFrameLateness(int trLate, int trFrame); + virtual void OnDirectRender(IMediaSample *pMediaSample); + virtual HRESULT ResetStreamingTimes(); + BOOL ScheduleSample(IMediaSample *pMediaSample); + HRESULT ShouldDrawSampleNow(IMediaSample *pMediaSample, + REFERENCE_TIME *ptrStart, + REFERENCE_TIME *ptrEnd); + + virtual HRESULT SendQuality(REFERENCE_TIME trLate, REFERENCE_TIME trRealStream); + STDMETHODIMP JoinFilterGraph(IFilterGraph * pGraph, LPCWSTR pName); + + // + // Do estimates for standard deviations for per-frame + // statistics + // + // *piResult = (llSumSq - iTot * iTot / m_cFramesDrawn - 1) / + // (m_cFramesDrawn - 2) + // or 0 if m_cFramesDrawn <= 3 + // + HRESULT GetStdDev( + int nSamples, + int *piResult, + LONGLONG llSumSq, + LONGLONG iTot + ); +public: + + // IQualProp property page support + + STDMETHODIMP get_FramesDroppedInRenderer(int *cFramesDropped); + STDMETHODIMP get_FramesDrawn(int *pcFramesDrawn); + STDMETHODIMP get_AvgFrameRate(int *piAvgFrameRate); + STDMETHODIMP get_Jitter(int *piJitter); + STDMETHODIMP get_AvgSyncOffset(int *piAvg); + STDMETHODIMP get_DevSyncOffset(int *piDev); + + // Implement an IUnknown interface and expose IQualProp + + DECLARE_IUNKNOWN + STDMETHODIMP NonDelegatingQueryInterface(REFIID riid,VOID **ppv); +}; + +#endif // __RENBASE__ + diff --git a/videoInputSrcAndDemos/libs/DShow/Include/rmxfguid.h b/videoInputSrcAndDemos/libs/DShow/Include/rmxfguid.h index 31e71e6..d3326cc 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/rmxfguid.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/rmxfguid.h @@ -1,223 +1,223 @@ -/*************************************************************************** - * - * Copyright (C) 1998-1999 Microsoft Corporation. All Rights Reserved. - * - * File: rmxfguid.h - * - * Content: Defines GUIDs of D3DRM's templates. - * - ***************************************************************************/ - -#ifndef __RMXFGUID_H_ -#define __RMXFGUID_H_ - -/* {2B957100-9E9A-11cf-AB39-0020AF71E433} */ -DEFINE_GUID(TID_D3DRMInfo, -0x2b957100, 0x9e9a, 0x11cf, 0xab, 0x39, 0x0, 0x20, 0xaf, 0x71, 0xe4, 0x33); - -/* {3D82AB44-62DA-11cf-AB39-0020AF71E433} */ -DEFINE_GUID(TID_D3DRMMesh, -0x3d82ab44, 0x62da, 0x11cf, 0xab, 0x39, 0x0, 0x20, 0xaf, 0x71, 0xe4, 0x33); - -/* {3D82AB5E-62DA-11cf-AB39-0020AF71E433} */ -DEFINE_GUID(TID_D3DRMVector, -0x3d82ab5e, 0x62da, 0x11cf, 0xab, 0x39, 0x0, 0x20, 0xaf, 0x71, 0xe4, 0x33); - -/* {3D82AB5F-62DA-11cf-AB39-0020AF71E433} */ -DEFINE_GUID(TID_D3DRMMeshFace, -0x3d82ab5f, 0x62da, 0x11cf, 0xab, 0x39, 0x0, 0x20, 0xaf, 0x71, 0xe4, 0x33); - -/* {3D82AB4D-62DA-11cf-AB39-0020AF71E433} */ -DEFINE_GUID(TID_D3DRMMaterial, -0x3d82ab4d, 0x62da, 0x11cf, 0xab, 0x39, 0x0, 0x20, 0xaf, 0x71, 0xe4, 0x33); - -/* {35FF44E1-6C7C-11cf-8F52-0040333594A3} */ -DEFINE_GUID(TID_D3DRMMaterialArray, -0x35ff44e1, 0x6c7c, 0x11cf, 0x8F, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3); - -/* {3D82AB46-62DA-11cf-AB39-0020AF71E433} */ -DEFINE_GUID(TID_D3DRMFrame, -0x3d82ab46, 0x62da, 0x11cf, 0xab, 0x39, 0x0, 0x20, 0xaf, 0x71, 0xe4, 0x33); - -/* {F6F23F41-7686-11cf-8F52-0040333594A3} */ -DEFINE_GUID(TID_D3DRMFrameTransformMatrix, -0xf6f23f41, 0x7686, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3); - -/* {F6F23F42-7686-11cf-8F52-0040333594A3} */ -DEFINE_GUID(TID_D3DRMMeshMaterialList, -0xf6f23f42, 0x7686, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3); - -/* {F6F23F40-7686-11cf-8F52-0040333594A3} */ -DEFINE_GUID(TID_D3DRMMeshTextureCoords, -0xf6f23f40, 0x7686, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3); - -/* {F6F23F43-7686-11cf-8F52-0040333594A3} */ -DEFINE_GUID(TID_D3DRMMeshNormals, -0xf6f23f43, 0x7686, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3); - -/* {F6F23F44-7686-11cf-8F52-0040333594A3} */ -DEFINE_GUID(TID_D3DRMCoords2d, -0xf6f23f44, 0x7686, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3); - -/* {F6F23F45-7686-11cf-8F52-0040333594A3} */ -DEFINE_GUID(TID_D3DRMMatrix4x4, -0xf6f23f45, 0x7686, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3); - -/* {3D82AB4F-62DA-11cf-AB39-0020AF71E433} */ -DEFINE_GUID(TID_D3DRMAnimation, -0x3d82ab4f, 0x62da, 0x11cf, 0xab, 0x39, 0x0, 0x20, 0xaf, 0x71, 0xe4, 0x33); - -/* {3D82AB50-62DA-11cf-AB39-0020AF71E433} */ -DEFINE_GUID(TID_D3DRMAnimationSet, -0x3d82ab50, 0x62da, 0x11cf, 0xab, 0x39, 0x0, 0x20, 0xaf, 0x71, 0xe4, 0x33); - -/* {10DD46A8-775B-11cf-8F52-0040333594A3} */ -DEFINE_GUID(TID_D3DRMAnimationKey, -0x10dd46a8, 0x775b, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xA3); - -/* {10DD46A9-775B-11cf-8F52-0040333594A3} */ -DEFINE_GUID(TID_D3DRMFloatKeys, -0x10dd46a9, 0x775b, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xA3); - -/* {01411840-7786-11cf-8F52-0040333594A3} */ -DEFINE_GUID(TID_D3DRMMaterialAmbientColor, -0x01411840, 0x7786, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xA3); - -/* {01411841-7786-11cf-8F52-0040333594A3} */ -DEFINE_GUID(TID_D3DRMMaterialDiffuseColor, -0x01411841, 0x7786, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xA3); - -/* {01411842-7786-11cf-8F52-0040333594A3} */ -DEFINE_GUID(TID_D3DRMMaterialSpecularColor, -0x01411842, 0x7786, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xA3); - -/* {D3E16E80-7835-11cf-8F52-0040333594A3} */ -DEFINE_GUID(TID_D3DRMMaterialEmissiveColor, -0xd3e16e80, 0x7835, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3); - -/* {01411843-7786-11cf-8F52-0040333594A3} */ -DEFINE_GUID(TID_D3DRMMaterialPower, -0x01411843, 0x7786, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xA3); - -/* {35FF44E0-6C7C-11cf-8F52-0040333594A3} */ -DEFINE_GUID(TID_D3DRMColorRGBA, -0x35ff44e0, 0x6c7c, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xA3); - -/* {D3E16E81-7835-11cf-8F52-0040333594A3} */ -DEFINE_GUID(TID_D3DRMColorRGB, -0xd3e16e81, 0x7835, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3); - -/* {A42790E0-7810-11cf-8F52-0040333594A3} */ -DEFINE_GUID(TID_D3DRMGuid, -0xa42790e0, 0x7810, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3); - -/* {A42790E1-7810-11cf-8F52-0040333594A3} */ -DEFINE_GUID(TID_D3DRMTextureFilename, -0xa42790e1, 0x7810, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3); - -/* {A42790E2-7810-11cf-8F52-0040333594A3} */ -DEFINE_GUID(TID_D3DRMTextureReference, -0xa42790e2, 0x7810, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3); - -/* {1630B820-7842-11cf-8F52-0040333594A3} */ -DEFINE_GUID(TID_D3DRMIndexedColor, -0x1630b820, 0x7842, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3); - -/* {1630B821-7842-11cf-8F52-0040333594A3} */ -DEFINE_GUID(TID_D3DRMMeshVertexColors, -0x1630b821, 0x7842, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3); - -/* {4885AE60-78E8-11cf-8F52-0040333594A3} */ -DEFINE_GUID(TID_D3DRMMaterialWrap, -0x4885ae60, 0x78e8, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3); - -/* {537DA6A0-CA37-11d0-941C-0080C80CFA7B} */ -DEFINE_GUID(TID_D3DRMBoolean, -0x537da6a0, 0xca37, 0x11d0, 0x94, 0x1c, 0x0, 0x80, 0xc8, 0xc, 0xfa, 0x7b); - -/* {ED1EC5C0-C0A8-11d0-941C-0080C80CFA7B} */ -DEFINE_GUID(TID_D3DRMMeshFaceWraps, -0xed1ec5c0, 0xc0a8, 0x11d0, 0x94, 0x1c, 0x0, 0x80, 0xc8, 0xc, 0xfa, 0x7b); - -/* {4885AE63-78E8-11cf-8F52-0040333594A3} */ -DEFINE_GUID(TID_D3DRMBoolean2d, -0x4885ae63, 0x78e8, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3); - -/* {F406B180-7B3B-11cf-8F52-0040333594A3} */ -DEFINE_GUID(TID_D3DRMTimedFloatKeys, -0xf406b180, 0x7b3b, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3); - -/* {E2BF56C0-840F-11cf-8F52-0040333594A3} */ -DEFINE_GUID(TID_D3DRMAnimationOptions, -0xe2bf56c0, 0x840f, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3); - -/* {E2BF56C1-840F-11cf-8F52-0040333594A3} */ -DEFINE_GUID(TID_D3DRMFramePosition, -0xe2bf56c1, 0x840f, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3); - -/* {E2BF56C2-840F-11cf-8F52-0040333594A3} */ -DEFINE_GUID(TID_D3DRMFrameVelocity, -0xe2bf56c2, 0x840f, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3); - -/* {E2BF56C3-840F-11cf-8F52-0040333594A3} */ -DEFINE_GUID(TID_D3DRMFrameRotation, -0xe2bf56c3, 0x840f, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3); - -/* {3D82AB4A-62DA-11cf-AB39-0020AF71E433} */ -DEFINE_GUID(TID_D3DRMLight, -0x3d82ab4a, 0x62da, 0x11cf, 0xab, 0x39, 0x0, 0x20, 0xaf, 0x71, 0xe4, 0x33); - -/* {3D82AB51-62DA-11cf-AB39-0020AF71E433} */ -DEFINE_GUID(TID_D3DRMCamera, -0x3d82ab51, 0x62da, 0x11cf, 0xab, 0x39, 0x0, 0x20, 0xaf, 0x71, 0xe4, 0x33); - -/* {E5745280-B24F-11cf-9DD5-00AA00A71A2F} */ -DEFINE_GUID(TID_D3DRMAppData, -0xe5745280, 0xb24f, 0x11cf, 0x9d, 0xd5, 0x0, 0xaa, 0x0, 0xa7, 0x1a, 0x2f); - -/* {AED22740-B31F-11cf-9DD5-00AA00A71A2F} */ -DEFINE_GUID(TID_D3DRMLightUmbra, -0xaed22740, 0xb31f, 0x11cf, 0x9d, 0xd5, 0x0, 0xaa, 0x0, 0xa7, 0x1a, 0x2f); - -/* {AED22742-B31F-11cf-9DD5-00AA00A71A2F} */ -DEFINE_GUID(TID_D3DRMLightRange, -0xaed22742, 0xb31f, 0x11cf, 0x9d, 0xd5, 0x0, 0xaa, 0x0, 0xa7, 0x1a, 0x2f); - -/* {AED22741-B31F-11cf-9DD5-00AA00A71A2F} */ -DEFINE_GUID(TID_D3DRMLightPenumbra, -0xaed22741, 0xb31f, 0x11cf, 0x9d, 0xd5, 0x0, 0xaa, 0x0, 0xa7, 0x1a, 0x2f); - -/* {A8A98BA0-C5E5-11cf-B941-0080C80CFA7B} */ -DEFINE_GUID(TID_D3DRMLightAttenuation, -0xa8a98ba0, 0xc5e5, 0x11cf, 0xb9, 0x41, 0x0, 0x80, 0xc8, 0xc, 0xfa, 0x7b); - -/* {3A23EEA0-94B1-11d0-AB39-0020AF71E433} */ -DEFINE_GUID(TID_D3DRMInlineData, -0x3a23eea0, 0x94b1, 0x11d0, 0xab, 0x39, 0x0, 0x20, 0xaf, 0x71, 0xe4, 0x33); - -/* {3A23EEA1-94B1-11d0-AB39-0020AF71E433} */ -DEFINE_GUID(TID_D3DRMUrl, -0x3a23eea1, 0x94b1, 0x11d0, 0xab, 0x39, 0x0, 0x20, 0xaf, 0x71, 0xe4, 0x33); - -/* {8A63C360-997D-11d0-941C-0080C80CFA7B} */ -DEFINE_GUID(TID_D3DRMProgressiveMesh, -0x8A63C360, 0x997D, 0x11d0, 0x94, 0x1C, 0x0, 0x80, 0xC8, 0x0C, 0xFA, 0x7B); - -/* {98116AA0-BDBA-11d1-82C0-00A0C9697271} */ -DEFINE_GUID(TID_D3DRMExternalVisual, -0x98116AA0, 0xBDBA, 0x11d1, 0x82, 0xC0, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x71); - -/* {7F0F21E0-BFE1-11d1-82C0-00A0C9697271} */ -DEFINE_GUID(TID_D3DRMStringProperty, -0x7f0f21e0, 0xbfe1, 0x11d1, 0x82, 0xc0, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x71); - -/* {7F0F21E1-BFE1-11d1-82C0-00A0C9697271} */ -DEFINE_GUID(TID_D3DRMPropertyBag, -0x7f0f21e1, 0xbfe1, 0x11d1, 0x82, 0xc0, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x71); - -// {7F5D5EA0-D53A-11d1-82C0-00A0C9697271} -DEFINE_GUID(TID_D3DRMRightHanded, -0x7f5d5ea0, 0xd53a, 0x11d1, 0x82, 0xc0, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x71); - -#endif /* __RMXFGUID_H_ */ - +/*************************************************************************** + * + * Copyright (C) 1998-1999 Microsoft Corporation. All Rights Reserved. + * + * File: rmxfguid.h + * + * Content: Defines GUIDs of D3DRM's templates. + * + ***************************************************************************/ + +#ifndef __RMXFGUID_H_ +#define __RMXFGUID_H_ + +/* {2B957100-9E9A-11cf-AB39-0020AF71E433} */ +DEFINE_GUID(TID_D3DRMInfo, +0x2b957100, 0x9e9a, 0x11cf, 0xab, 0x39, 0x0, 0x20, 0xaf, 0x71, 0xe4, 0x33); + +/* {3D82AB44-62DA-11cf-AB39-0020AF71E433} */ +DEFINE_GUID(TID_D3DRMMesh, +0x3d82ab44, 0x62da, 0x11cf, 0xab, 0x39, 0x0, 0x20, 0xaf, 0x71, 0xe4, 0x33); + +/* {3D82AB5E-62DA-11cf-AB39-0020AF71E433} */ +DEFINE_GUID(TID_D3DRMVector, +0x3d82ab5e, 0x62da, 0x11cf, 0xab, 0x39, 0x0, 0x20, 0xaf, 0x71, 0xe4, 0x33); + +/* {3D82AB5F-62DA-11cf-AB39-0020AF71E433} */ +DEFINE_GUID(TID_D3DRMMeshFace, +0x3d82ab5f, 0x62da, 0x11cf, 0xab, 0x39, 0x0, 0x20, 0xaf, 0x71, 0xe4, 0x33); + +/* {3D82AB4D-62DA-11cf-AB39-0020AF71E433} */ +DEFINE_GUID(TID_D3DRMMaterial, +0x3d82ab4d, 0x62da, 0x11cf, 0xab, 0x39, 0x0, 0x20, 0xaf, 0x71, 0xe4, 0x33); + +/* {35FF44E1-6C7C-11cf-8F52-0040333594A3} */ +DEFINE_GUID(TID_D3DRMMaterialArray, +0x35ff44e1, 0x6c7c, 0x11cf, 0x8F, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3); + +/* {3D82AB46-62DA-11cf-AB39-0020AF71E433} */ +DEFINE_GUID(TID_D3DRMFrame, +0x3d82ab46, 0x62da, 0x11cf, 0xab, 0x39, 0x0, 0x20, 0xaf, 0x71, 0xe4, 0x33); + +/* {F6F23F41-7686-11cf-8F52-0040333594A3} */ +DEFINE_GUID(TID_D3DRMFrameTransformMatrix, +0xf6f23f41, 0x7686, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3); + +/* {F6F23F42-7686-11cf-8F52-0040333594A3} */ +DEFINE_GUID(TID_D3DRMMeshMaterialList, +0xf6f23f42, 0x7686, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3); + +/* {F6F23F40-7686-11cf-8F52-0040333594A3} */ +DEFINE_GUID(TID_D3DRMMeshTextureCoords, +0xf6f23f40, 0x7686, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3); + +/* {F6F23F43-7686-11cf-8F52-0040333594A3} */ +DEFINE_GUID(TID_D3DRMMeshNormals, +0xf6f23f43, 0x7686, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3); + +/* {F6F23F44-7686-11cf-8F52-0040333594A3} */ +DEFINE_GUID(TID_D3DRMCoords2d, +0xf6f23f44, 0x7686, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3); + +/* {F6F23F45-7686-11cf-8F52-0040333594A3} */ +DEFINE_GUID(TID_D3DRMMatrix4x4, +0xf6f23f45, 0x7686, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3); + +/* {3D82AB4F-62DA-11cf-AB39-0020AF71E433} */ +DEFINE_GUID(TID_D3DRMAnimation, +0x3d82ab4f, 0x62da, 0x11cf, 0xab, 0x39, 0x0, 0x20, 0xaf, 0x71, 0xe4, 0x33); + +/* {3D82AB50-62DA-11cf-AB39-0020AF71E433} */ +DEFINE_GUID(TID_D3DRMAnimationSet, +0x3d82ab50, 0x62da, 0x11cf, 0xab, 0x39, 0x0, 0x20, 0xaf, 0x71, 0xe4, 0x33); + +/* {10DD46A8-775B-11cf-8F52-0040333594A3} */ +DEFINE_GUID(TID_D3DRMAnimationKey, +0x10dd46a8, 0x775b, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xA3); + +/* {10DD46A9-775B-11cf-8F52-0040333594A3} */ +DEFINE_GUID(TID_D3DRMFloatKeys, +0x10dd46a9, 0x775b, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xA3); + +/* {01411840-7786-11cf-8F52-0040333594A3} */ +DEFINE_GUID(TID_D3DRMMaterialAmbientColor, +0x01411840, 0x7786, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xA3); + +/* {01411841-7786-11cf-8F52-0040333594A3} */ +DEFINE_GUID(TID_D3DRMMaterialDiffuseColor, +0x01411841, 0x7786, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xA3); + +/* {01411842-7786-11cf-8F52-0040333594A3} */ +DEFINE_GUID(TID_D3DRMMaterialSpecularColor, +0x01411842, 0x7786, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xA3); + +/* {D3E16E80-7835-11cf-8F52-0040333594A3} */ +DEFINE_GUID(TID_D3DRMMaterialEmissiveColor, +0xd3e16e80, 0x7835, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3); + +/* {01411843-7786-11cf-8F52-0040333594A3} */ +DEFINE_GUID(TID_D3DRMMaterialPower, +0x01411843, 0x7786, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xA3); + +/* {35FF44E0-6C7C-11cf-8F52-0040333594A3} */ +DEFINE_GUID(TID_D3DRMColorRGBA, +0x35ff44e0, 0x6c7c, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xA3); + +/* {D3E16E81-7835-11cf-8F52-0040333594A3} */ +DEFINE_GUID(TID_D3DRMColorRGB, +0xd3e16e81, 0x7835, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3); + +/* {A42790E0-7810-11cf-8F52-0040333594A3} */ +DEFINE_GUID(TID_D3DRMGuid, +0xa42790e0, 0x7810, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3); + +/* {A42790E1-7810-11cf-8F52-0040333594A3} */ +DEFINE_GUID(TID_D3DRMTextureFilename, +0xa42790e1, 0x7810, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3); + +/* {A42790E2-7810-11cf-8F52-0040333594A3} */ +DEFINE_GUID(TID_D3DRMTextureReference, +0xa42790e2, 0x7810, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3); + +/* {1630B820-7842-11cf-8F52-0040333594A3} */ +DEFINE_GUID(TID_D3DRMIndexedColor, +0x1630b820, 0x7842, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3); + +/* {1630B821-7842-11cf-8F52-0040333594A3} */ +DEFINE_GUID(TID_D3DRMMeshVertexColors, +0x1630b821, 0x7842, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3); + +/* {4885AE60-78E8-11cf-8F52-0040333594A3} */ +DEFINE_GUID(TID_D3DRMMaterialWrap, +0x4885ae60, 0x78e8, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3); + +/* {537DA6A0-CA37-11d0-941C-0080C80CFA7B} */ +DEFINE_GUID(TID_D3DRMBoolean, +0x537da6a0, 0xca37, 0x11d0, 0x94, 0x1c, 0x0, 0x80, 0xc8, 0xc, 0xfa, 0x7b); + +/* {ED1EC5C0-C0A8-11d0-941C-0080C80CFA7B} */ +DEFINE_GUID(TID_D3DRMMeshFaceWraps, +0xed1ec5c0, 0xc0a8, 0x11d0, 0x94, 0x1c, 0x0, 0x80, 0xc8, 0xc, 0xfa, 0x7b); + +/* {4885AE63-78E8-11cf-8F52-0040333594A3} */ +DEFINE_GUID(TID_D3DRMBoolean2d, +0x4885ae63, 0x78e8, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3); + +/* {F406B180-7B3B-11cf-8F52-0040333594A3} */ +DEFINE_GUID(TID_D3DRMTimedFloatKeys, +0xf406b180, 0x7b3b, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3); + +/* {E2BF56C0-840F-11cf-8F52-0040333594A3} */ +DEFINE_GUID(TID_D3DRMAnimationOptions, +0xe2bf56c0, 0x840f, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3); + +/* {E2BF56C1-840F-11cf-8F52-0040333594A3} */ +DEFINE_GUID(TID_D3DRMFramePosition, +0xe2bf56c1, 0x840f, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3); + +/* {E2BF56C2-840F-11cf-8F52-0040333594A3} */ +DEFINE_GUID(TID_D3DRMFrameVelocity, +0xe2bf56c2, 0x840f, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3); + +/* {E2BF56C3-840F-11cf-8F52-0040333594A3} */ +DEFINE_GUID(TID_D3DRMFrameRotation, +0xe2bf56c3, 0x840f, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3); + +/* {3D82AB4A-62DA-11cf-AB39-0020AF71E433} */ +DEFINE_GUID(TID_D3DRMLight, +0x3d82ab4a, 0x62da, 0x11cf, 0xab, 0x39, 0x0, 0x20, 0xaf, 0x71, 0xe4, 0x33); + +/* {3D82AB51-62DA-11cf-AB39-0020AF71E433} */ +DEFINE_GUID(TID_D3DRMCamera, +0x3d82ab51, 0x62da, 0x11cf, 0xab, 0x39, 0x0, 0x20, 0xaf, 0x71, 0xe4, 0x33); + +/* {E5745280-B24F-11cf-9DD5-00AA00A71A2F} */ +DEFINE_GUID(TID_D3DRMAppData, +0xe5745280, 0xb24f, 0x11cf, 0x9d, 0xd5, 0x0, 0xaa, 0x0, 0xa7, 0x1a, 0x2f); + +/* {AED22740-B31F-11cf-9DD5-00AA00A71A2F} */ +DEFINE_GUID(TID_D3DRMLightUmbra, +0xaed22740, 0xb31f, 0x11cf, 0x9d, 0xd5, 0x0, 0xaa, 0x0, 0xa7, 0x1a, 0x2f); + +/* {AED22742-B31F-11cf-9DD5-00AA00A71A2F} */ +DEFINE_GUID(TID_D3DRMLightRange, +0xaed22742, 0xb31f, 0x11cf, 0x9d, 0xd5, 0x0, 0xaa, 0x0, 0xa7, 0x1a, 0x2f); + +/* {AED22741-B31F-11cf-9DD5-00AA00A71A2F} */ +DEFINE_GUID(TID_D3DRMLightPenumbra, +0xaed22741, 0xb31f, 0x11cf, 0x9d, 0xd5, 0x0, 0xaa, 0x0, 0xa7, 0x1a, 0x2f); + +/* {A8A98BA0-C5E5-11cf-B941-0080C80CFA7B} */ +DEFINE_GUID(TID_D3DRMLightAttenuation, +0xa8a98ba0, 0xc5e5, 0x11cf, 0xb9, 0x41, 0x0, 0x80, 0xc8, 0xc, 0xfa, 0x7b); + +/* {3A23EEA0-94B1-11d0-AB39-0020AF71E433} */ +DEFINE_GUID(TID_D3DRMInlineData, +0x3a23eea0, 0x94b1, 0x11d0, 0xab, 0x39, 0x0, 0x20, 0xaf, 0x71, 0xe4, 0x33); + +/* {3A23EEA1-94B1-11d0-AB39-0020AF71E433} */ +DEFINE_GUID(TID_D3DRMUrl, +0x3a23eea1, 0x94b1, 0x11d0, 0xab, 0x39, 0x0, 0x20, 0xaf, 0x71, 0xe4, 0x33); + +/* {8A63C360-997D-11d0-941C-0080C80CFA7B} */ +DEFINE_GUID(TID_D3DRMProgressiveMesh, +0x8A63C360, 0x997D, 0x11d0, 0x94, 0x1C, 0x0, 0x80, 0xC8, 0x0C, 0xFA, 0x7B); + +/* {98116AA0-BDBA-11d1-82C0-00A0C9697271} */ +DEFINE_GUID(TID_D3DRMExternalVisual, +0x98116AA0, 0xBDBA, 0x11d1, 0x82, 0xC0, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x71); + +/* {7F0F21E0-BFE1-11d1-82C0-00A0C9697271} */ +DEFINE_GUID(TID_D3DRMStringProperty, +0x7f0f21e0, 0xbfe1, 0x11d1, 0x82, 0xc0, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x71); + +/* {7F0F21E1-BFE1-11d1-82C0-00A0C9697271} */ +DEFINE_GUID(TID_D3DRMPropertyBag, +0x7f0f21e1, 0xbfe1, 0x11d1, 0x82, 0xc0, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x71); + +// {7F5D5EA0-D53A-11d1-82C0-00A0C9697271} +DEFINE_GUID(TID_D3DRMRightHanded, +0x7f5d5ea0, 0xd53a, 0x11d1, 0x82, 0xc0, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x71); + +#endif /* __RMXFGUID_H_ */ + diff --git a/videoInputSrcAndDemos/libs/DShow/Include/rmxftmpl.h b/videoInputSrcAndDemos/libs/DShow/Include/rmxftmpl.h index 8de19ef..e0018d0 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/rmxftmpl.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/rmxftmpl.h @@ -1,339 +1,339 @@ -/* D3DRM XFile templates in binary form */ - -#ifndef _RMXFTMPL_H_ -#define _RMXFTMPL_H_ - -unsigned char D3DRM_XTEMPLATES[] = { - 0x78, 0x6f, 0x66, 0x20, 0x30, 0x33, 0x30, 0x32, 0x62, - 0x69, 0x6e, 0x20, 0x30, 0x30, 0x36, 0x34, 0x1f, 0, 0x1, - 0, 0x6, 0, 0, 0, 0x48, 0x65, 0x61, 0x64, 0x65, - 0x72, 0xa, 0, 0x5, 0, 0x43, 0xab, 0x82, 0x3d, 0xda, - 0x62, 0xcf, 0x11, 0xab, 0x39, 0, 0x20, 0xaf, 0x71, 0xe4, - 0x33, 0x28, 0, 0x1, 0, 0x5, 0, 0, 0, 0x6d, - 0x61, 0x6a, 0x6f, 0x72, 0x14, 0, 0x28, 0, 0x1, 0, - 0x5, 0, 0, 0, 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x14, - 0, 0x29, 0, 0x1, 0, 0x5, 0, 0, 0, 0x66, - 0x6c, 0x61, 0x67, 0x73, 0x14, 0, 0xb, 0, 0x1f, 0, - 0x1, 0, 0x6, 0, 0, 0, 0x56, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0xa, 0, 0x5, 0, 0x5e, 0xab, 0x82, 0x3d, - 0xda, 0x62, 0xcf, 0x11, 0xab, 0x39, 0, 0x20, 0xaf, 0x71, - 0xe4, 0x33, 0x2a, 0, 0x1, 0, 0x1, 0, 0, 0, - 0x78, 0x14, 0, 0x2a, 0, 0x1, 0, 0x1, 0, 0, - 0, 0x79, 0x14, 0, 0x2a, 0, 0x1, 0, 0x1, 0, - 0, 0, 0x7a, 0x14, 0, 0xb, 0, 0x1f, 0, 0x1, - 0, 0x8, 0, 0, 0, 0x43, 0x6f, 0x6f, 0x72, 0x64, - 0x73, 0x32, 0x64, 0xa, 0, 0x5, 0, 0x44, 0x3f, 0xf2, - 0xf6, 0x86, 0x76, 0xcf, 0x11, 0x8f, 0x52, 0, 0x40, 0x33, - 0x35, 0x94, 0xa3, 0x2a, 0, 0x1, 0, 0x1, 0, 0, - 0, 0x75, 0x14, 0, 0x2a, 0, 0x1, 0, 0x1, 0, - 0, 0, 0x76, 0x14, 0, 0xb, 0, 0x1f, 0, 0x1, - 0, 0x9, 0, 0, 0, 0x4d, 0x61, 0x74, 0x72, 0x69, - 0x78, 0x34, 0x78, 0x34, 0xa, 0, 0x5, 0, 0x45, 0x3f, - 0xf2, 0xf6, 0x86, 0x76, 0xcf, 0x11, 0x8f, 0x52, 0, 0x40, - 0x33, 0x35, 0x94, 0xa3, 0x34, 0, 0x2a, 0, 0x1, 0, - 0x6, 0, 0, 0, 0x6d, 0x61, 0x74, 0x72, 0x69, 0x78, - 0xe, 0, 0x3, 0, 0x10, 0, 0, 0, 0xf, 0, - 0x14, 0, 0xb, 0, 0x1f, 0, 0x1, 0, 0x9, 0, - 0, 0, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x52, 0x47, 0x42, - 0x41, 0xa, 0, 0x5, 0, 0xe0, 0x44, 0xff, 0x35, 0x7c, - 0x6c, 0xcf, 0x11, 0x8f, 0x52, 0, 0x40, 0x33, 0x35, 0x94, - 0xa3, 0x2a, 0, 0x1, 0, 0x3, 0, 0, 0, 0x72, - 0x65, 0x64, 0x14, 0, 0x2a, 0, 0x1, 0, 0x5, 0, - 0, 0, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x14, 0, 0x2a, - 0, 0x1, 0, 0x4, 0, 0, 0, 0x62, 0x6c, 0x75, - 0x65, 0x14, 0, 0x2a, 0, 0x1, 0, 0x5, 0, 0, - 0, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x14, 0, 0xb, 0, - 0x1f, 0, 0x1, 0, 0x8, 0, 0, 0, 0x43, 0x6f, - 0x6c, 0x6f, 0x72, 0x52, 0x47, 0x42, 0xa, 0, 0x5, 0, - 0x81, 0x6e, 0xe1, 0xd3, 0x35, 0x78, 0xcf, 0x11, 0x8f, 0x52, - 0, 0x40, 0x33, 0x35, 0x94, 0xa3, 0x2a, 0, 0x1, 0, - 0x3, 0, 0, 0, 0x72, 0x65, 0x64, 0x14, 0, 0x2a, - 0, 0x1, 0, 0x5, 0, 0, 0, 0x67, 0x72, 0x65, - 0x65, 0x6e, 0x14, 0, 0x2a, 0, 0x1, 0, 0x4, 0, - 0, 0, 0x62, 0x6c, 0x75, 0x65, 0x14, 0, 0xb, 0, - 0x1f, 0, 0x1, 0, 0xc, 0, 0, 0, 0x49, 0x6e, - 0x64, 0x65, 0x78, 0x65, 0x64, 0x43, 0x6f, 0x6c, 0x6f, 0x72, - 0xa, 0, 0x5, 0, 0x20, 0xb8, 0x30, 0x16, 0x42, 0x78, - 0xcf, 0x11, 0x8f, 0x52, 0, 0x40, 0x33, 0x35, 0x94, 0xa3, - 0x29, 0, 0x1, 0, 0x5, 0, 0, 0, 0x69, 0x6e, - 0x64, 0x65, 0x78, 0x14, 0, 0x1, 0, 0x9, 0, 0, - 0, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x52, 0x47, 0x42, 0x41, - 0x1, 0, 0xa, 0, 0, 0, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x14, 0, 0xb, 0, - 0x1f, 0, 0x1, 0, 0x7, 0, 0, 0, 0x42, 0x6f, - 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0xa, 0, 0x5, 0, 0xa0, - 0xa6, 0x7d, 0x53, 0x37, 0xca, 0xd0, 0x11, 0x94, 0x1c, 0, - 0x80, 0xc8, 0xc, 0xfa, 0x7b, 0x29, 0, 0x1, 0, 0x9, - 0, 0, 0, 0x74, 0x72, 0x75, 0x65, 0x66, 0x61, 0x6c, - 0x73, 0x65, 0x14, 0, 0xb, 0, 0x1f, 0, 0x1, 0, - 0x9, 0, 0, 0, 0x42, 0x6f, 0x6f, 0x6c, 0x65, 0x61, - 0x6e, 0x32, 0x64, 0xa, 0, 0x5, 0, 0x63, 0xae, 0x85, - 0x48, 0xe8, 0x78, 0xcf, 0x11, 0x8f, 0x52, 0, 0x40, 0x33, - 0x35, 0x94, 0xa3, 0x1, 0, 0x7, 0, 0, 0, 0x42, - 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x1, 0, 0x1, 0, - 0, 0, 0x75, 0x14, 0, 0x1, 0, 0x7, 0, 0, - 0, 0x42, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x1, 0, - 0x1, 0, 0, 0, 0x76, 0x14, 0, 0xb, 0, 0x1f, - 0, 0x1, 0, 0xc, 0, 0, 0, 0x4d, 0x61, 0x74, - 0x65, 0x72, 0x69, 0x61, 0x6c, 0x57, 0x72, 0x61, 0x70, 0xa, - 0, 0x5, 0, 0x60, 0xae, 0x85, 0x48, 0xe8, 0x78, 0xcf, - 0x11, 0x8f, 0x52, 0, 0x40, 0x33, 0x35, 0x94, 0xa3, 0x1, - 0, 0x7, 0, 0, 0, 0x42, 0x6f, 0x6f, 0x6c, 0x65, - 0x61, 0x6e, 0x1, 0, 0x1, 0, 0, 0, 0x75, 0x14, - 0, 0x1, 0, 0x7, 0, 0, 0, 0x42, 0x6f, 0x6f, - 0x6c, 0x65, 0x61, 0x6e, 0x1, 0, 0x1, 0, 0, 0, - 0x76, 0x14, 0, 0xb, 0, 0x1f, 0, 0x1, 0, 0xf, - 0, 0, 0, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, - 0x46, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0xa, 0, - 0x5, 0, 0xe1, 0x90, 0x27, 0xa4, 0x10, 0x78, 0xcf, 0x11, - 0x8f, 0x52, 0, 0x40, 0x33, 0x35, 0x94, 0xa3, 0x31, 0, - 0x1, 0, 0x8, 0, 0, 0, 0x66, 0x69, 0x6c, 0x65, - 0x6e, 0x61, 0x6d, 0x65, 0x14, 0, 0xb, 0, 0x1f, 0, - 0x1, 0, 0x8, 0, 0, 0, 0x4d, 0x61, 0x74, 0x65, - 0x72, 0x69, 0x61, 0x6c, 0xa, 0, 0x5, 0, 0x4d, 0xab, - 0x82, 0x3d, 0xda, 0x62, 0xcf, 0x11, 0xab, 0x39, 0, 0x20, - 0xaf, 0x71, 0xe4, 0x33, 0x1, 0, 0x9, 0, 0, 0, - 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x52, 0x47, 0x42, 0x41, 0x1, - 0, 0x9, 0, 0, 0, 0x66, 0x61, 0x63, 0x65, 0x43, - 0x6f, 0x6c, 0x6f, 0x72, 0x14, 0, 0x2a, 0, 0x1, 0, - 0x5, 0, 0, 0, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x14, - 0, 0x1, 0, 0x8, 0, 0, 0, 0x43, 0x6f, 0x6c, - 0x6f, 0x72, 0x52, 0x47, 0x42, 0x1, 0, 0xd, 0, 0, - 0, 0x73, 0x70, 0x65, 0x63, 0x75, 0x6c, 0x61, 0x72, 0x43, - 0x6f, 0x6c, 0x6f, 0x72, 0x14, 0, 0x1, 0, 0x8, 0, - 0, 0, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x52, 0x47, 0x42, - 0x1, 0, 0xd, 0, 0, 0, 0x65, 0x6d, 0x69, 0x73, - 0x73, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x14, - 0, 0xe, 0, 0x12, 0, 0x12, 0, 0x12, 0, 0xf, - 0, 0xb, 0, 0x1f, 0, 0x1, 0, 0x8, 0, 0, - 0, 0x4d, 0x65, 0x73, 0x68, 0x46, 0x61, 0x63, 0x65, 0xa, - 0, 0x5, 0, 0x5f, 0xab, 0x82, 0x3d, 0xda, 0x62, 0xcf, - 0x11, 0xab, 0x39, 0, 0x20, 0xaf, 0x71, 0xe4, 0x33, 0x29, - 0, 0x1, 0, 0x12, 0, 0, 0, 0x6e, 0x46, 0x61, - 0x63, 0x65, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, 0x6e, - 0x64, 0x69, 0x63, 0x65, 0x73, 0x14, 0, 0x34, 0, 0x29, - 0, 0x1, 0, 0x11, 0, 0, 0, 0x66, 0x61, 0x63, - 0x65, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, 0x6e, 0x64, - 0x69, 0x63, 0x65, 0x73, 0xe, 0, 0x1, 0, 0x12, 0, - 0, 0, 0x6e, 0x46, 0x61, 0x63, 0x65, 0x56, 0x65, 0x72, - 0x74, 0x65, 0x78, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, - 0xf, 0, 0x14, 0, 0xb, 0, 0x1f, 0, 0x1, 0, - 0xd, 0, 0, 0, 0x4d, 0x65, 0x73, 0x68, 0x46, 0x61, - 0x63, 0x65, 0x57, 0x72, 0x61, 0x70, 0x73, 0xa, 0, 0x5, - 0, 0xc0, 0xc5, 0x1e, 0xed, 0xa8, 0xc0, 0xd0, 0x11, 0x94, - 0x1c, 0, 0x80, 0xc8, 0xc, 0xfa, 0x7b, 0x29, 0, 0x1, - 0, 0xf, 0, 0, 0, 0x6e, 0x46, 0x61, 0x63, 0x65, - 0x57, 0x72, 0x61, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, - 0x14, 0, 0x34, 0, 0x1, 0, 0x9, 0, 0, 0, - 0x42, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x32, 0x64, 0x1, - 0, 0xe, 0, 0, 0, 0x66, 0x61, 0x63, 0x65, 0x57, - 0x72, 0x61, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0xe, - 0, 0x1, 0, 0xf, 0, 0, 0, 0x6e, 0x46, 0x61, - 0x63, 0x65, 0x57, 0x72, 0x61, 0x70, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x73, 0xf, 0, 0x14, 0, 0xb, 0, 0x1f, 0, - 0x1, 0, 0x11, 0, 0, 0, 0x4d, 0x65, 0x73, 0x68, - 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x43, 0x6f, 0x6f, - 0x72, 0x64, 0x73, 0xa, 0, 0x5, 0, 0x40, 0x3f, 0xf2, - 0xf6, 0x86, 0x76, 0xcf, 0x11, 0x8f, 0x52, 0, 0x40, 0x33, - 0x35, 0x94, 0xa3, 0x29, 0, 0x1, 0, 0xe, 0, 0, - 0, 0x6e, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x43, - 0x6f, 0x6f, 0x72, 0x64, 0x73, 0x14, 0, 0x34, 0, 0x1, - 0, 0x8, 0, 0, 0, 0x43, 0x6f, 0x6f, 0x72, 0x64, - 0x73, 0x32, 0x64, 0x1, 0, 0xd, 0, 0, 0, 0x74, - 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x43, 0x6f, 0x6f, 0x72, - 0x64, 0x73, 0xe, 0, 0x1, 0, 0xe, 0, 0, 0, - 0x6e, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x43, 0x6f, - 0x6f, 0x72, 0x64, 0x73, 0xf, 0, 0x14, 0, 0xb, 0, - 0x1f, 0, 0x1, 0, 0x10, 0, 0, 0, 0x4d, 0x65, - 0x73, 0x68, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, - 0x4c, 0x69, 0x73, 0x74, 0xa, 0, 0x5, 0, 0x42, 0x3f, - 0xf2, 0xf6, 0x86, 0x76, 0xcf, 0x11, 0x8f, 0x52, 0, 0x40, - 0x33, 0x35, 0x94, 0xa3, 0x29, 0, 0x1, 0, 0xa, 0, - 0, 0, 0x6e, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, - 0x6c, 0x73, 0x14, 0, 0x29, 0, 0x1, 0, 0xc, 0, - 0, 0, 0x6e, 0x46, 0x61, 0x63, 0x65, 0x49, 0x6e, 0x64, - 0x65, 0x78, 0x65, 0x73, 0x14, 0, 0x34, 0, 0x29, 0, - 0x1, 0, 0xb, 0, 0, 0, 0x66, 0x61, 0x63, 0x65, - 0x49, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x73, 0xe, 0, 0x1, - 0, 0xc, 0, 0, 0, 0x6e, 0x46, 0x61, 0x63, 0x65, - 0x49, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x73, 0xf, 0, 0x14, - 0, 0xe, 0, 0x1, 0, 0x8, 0, 0, 0, 0x4d, - 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0xf, 0, 0xb, - 0, 0x1f, 0, 0x1, 0, 0xb, 0, 0, 0, 0x4d, - 0x65, 0x73, 0x68, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x73, - 0xa, 0, 0x5, 0, 0x43, 0x3f, 0xf2, 0xf6, 0x86, 0x76, - 0xcf, 0x11, 0x8f, 0x52, 0, 0x40, 0x33, 0x35, 0x94, 0xa3, - 0x29, 0, 0x1, 0, 0x8, 0, 0, 0, 0x6e, 0x4e, - 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x73, 0x14, 0, 0x34, 0, - 0x1, 0, 0x6, 0, 0, 0, 0x56, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x1, 0, 0x7, 0, 0, 0, 0x6e, 0x6f, - 0x72, 0x6d, 0x61, 0x6c, 0x73, 0xe, 0, 0x1, 0, 0x8, - 0, 0, 0, 0x6e, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, - 0x73, 0xf, 0, 0x14, 0, 0x29, 0, 0x1, 0, 0xc, - 0, 0, 0, 0x6e, 0x46, 0x61, 0x63, 0x65, 0x4e, 0x6f, - 0x72, 0x6d, 0x61, 0x6c, 0x73, 0x14, 0, 0x34, 0, 0x1, - 0, 0x8, 0, 0, 0, 0x4d, 0x65, 0x73, 0x68, 0x46, - 0x61, 0x63, 0x65, 0x1, 0, 0xb, 0, 0, 0, 0x66, - 0x61, 0x63, 0x65, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x73, - 0xe, 0, 0x1, 0, 0xc, 0, 0, 0, 0x6e, 0x46, - 0x61, 0x63, 0x65, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x73, - 0xf, 0, 0x14, 0, 0xb, 0, 0x1f, 0, 0x1, 0, - 0x10, 0, 0, 0, 0x4d, 0x65, 0x73, 0x68, 0x56, 0x65, - 0x72, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x73, - 0xa, 0, 0x5, 0, 0x21, 0xb8, 0x30, 0x16, 0x42, 0x78, - 0xcf, 0x11, 0x8f, 0x52, 0, 0x40, 0x33, 0x35, 0x94, 0xa3, - 0x29, 0, 0x1, 0, 0xd, 0, 0, 0, 0x6e, 0x56, - 0x65, 0x72, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, - 0x73, 0x14, 0, 0x34, 0, 0x1, 0, 0xc, 0, 0, - 0, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x64, 0x43, 0x6f, - 0x6c, 0x6f, 0x72, 0x1, 0, 0xc, 0, 0, 0, 0x76, - 0x65, 0x72, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, - 0x73, 0xe, 0, 0x1, 0, 0xd, 0, 0, 0, 0x6e, - 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, - 0x72, 0x73, 0xf, 0, 0x14, 0, 0xb, 0, 0x1f, 0, - 0x1, 0, 0x4, 0, 0, 0, 0x4d, 0x65, 0x73, 0x68, - 0xa, 0, 0x5, 0, 0x44, 0xab, 0x82, 0x3d, 0xda, 0x62, - 0xcf, 0x11, 0xab, 0x39, 0, 0x20, 0xaf, 0x71, 0xe4, 0x33, - 0x29, 0, 0x1, 0, 0x9, 0, 0, 0, 0x6e, 0x56, - 0x65, 0x72, 0x74, 0x69, 0x63, 0x65, 0x73, 0x14, 0, 0x34, - 0, 0x1, 0, 0x6, 0, 0, 0, 0x56, 0x65, 0x63, - 0x74, 0x6f, 0x72, 0x1, 0, 0x8, 0, 0, 0, 0x76, - 0x65, 0x72, 0x74, 0x69, 0x63, 0x65, 0x73, 0xe, 0, 0x1, - 0, 0x9, 0, 0, 0, 0x6e, 0x56, 0x65, 0x72, 0x74, - 0x69, 0x63, 0x65, 0x73, 0xf, 0, 0x14, 0, 0x29, 0, - 0x1, 0, 0x6, 0, 0, 0, 0x6e, 0x46, 0x61, 0x63, - 0x65, 0x73, 0x14, 0, 0x34, 0, 0x1, 0, 0x8, 0, - 0, 0, 0x4d, 0x65, 0x73, 0x68, 0x46, 0x61, 0x63, 0x65, - 0x1, 0, 0x5, 0, 0, 0, 0x66, 0x61, 0x63, 0x65, - 0x73, 0xe, 0, 0x1, 0, 0x6, 0, 0, 0, 0x6e, - 0x46, 0x61, 0x63, 0x65, 0x73, 0xf, 0, 0x14, 0, 0xe, - 0, 0x12, 0, 0x12, 0, 0x12, 0, 0xf, 0, 0xb, - 0, 0x1f, 0, 0x1, 0, 0x14, 0, 0, 0, 0x46, - 0x72, 0x61, 0x6d, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, - 0x6f, 0x72, 0x6d, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0xa, - 0, 0x5, 0, 0x41, 0x3f, 0xf2, 0xf6, 0x86, 0x76, 0xcf, - 0x11, 0x8f, 0x52, 0, 0x40, 0x33, 0x35, 0x94, 0xa3, 0x1, - 0, 0x9, 0, 0, 0, 0x4d, 0x61, 0x74, 0x72, 0x69, - 0x78, 0x34, 0x78, 0x34, 0x1, 0, 0xb, 0, 0, 0, - 0x66, 0x72, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x72, 0x69, - 0x78, 0x14, 0, 0xb, 0, 0x1f, 0, 0x1, 0, 0x5, - 0, 0, 0, 0x46, 0x72, 0x61, 0x6d, 0x65, 0xa, 0, - 0x5, 0, 0x46, 0xab, 0x82, 0x3d, 0xda, 0x62, 0xcf, 0x11, - 0xab, 0x39, 0, 0x20, 0xaf, 0x71, 0xe4, 0x33, 0xe, 0, - 0x12, 0, 0x12, 0, 0x12, 0, 0xf, 0, 0xb, 0, - 0x1f, 0, 0x1, 0, 0x9, 0, 0, 0, 0x46, 0x6c, - 0x6f, 0x61, 0x74, 0x4b, 0x65, 0x79, 0x73, 0xa, 0, 0x5, - 0, 0xa9, 0x46, 0xdd, 0x10, 0x5b, 0x77, 0xcf, 0x11, 0x8f, - 0x52, 0, 0x40, 0x33, 0x35, 0x94, 0xa3, 0x29, 0, 0x1, - 0, 0x7, 0, 0, 0, 0x6e, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x73, 0x14, 0, 0x34, 0, 0x2a, 0, 0x1, 0, - 0x6, 0, 0, 0, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, - 0xe, 0, 0x1, 0, 0x7, 0, 0, 0, 0x6e, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x73, 0xf, 0, 0x14, 0, 0xb, - 0, 0x1f, 0, 0x1, 0, 0xe, 0, 0, 0, 0x54, - 0x69, 0x6d, 0x65, 0x64, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x4b, - 0x65, 0x79, 0x73, 0xa, 0, 0x5, 0, 0x80, 0xb1, 0x6, - 0xf4, 0x3b, 0x7b, 0xcf, 0x11, 0x8f, 0x52, 0, 0x40, 0x33, - 0x35, 0x94, 0xa3, 0x29, 0, 0x1, 0, 0x4, 0, 0, - 0, 0x74, 0x69, 0x6d, 0x65, 0x14, 0, 0x1, 0, 0x9, - 0, 0, 0, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x4b, 0x65, - 0x79, 0x73, 0x1, 0, 0x6, 0, 0, 0, 0x74, 0x66, - 0x6b, 0x65, 0x79, 0x73, 0x14, 0, 0xb, 0, 0x1f, 0, - 0x1, 0, 0xc, 0, 0, 0, 0x41, 0x6e, 0x69, 0x6d, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0xa, 0, - 0x5, 0, 0xa8, 0x46, 0xdd, 0x10, 0x5b, 0x77, 0xcf, 0x11, - 0x8f, 0x52, 0, 0x40, 0x33, 0x35, 0x94, 0xa3, 0x29, 0, - 0x1, 0, 0x7, 0, 0, 0, 0x6b, 0x65, 0x79, 0x54, - 0x79, 0x70, 0x65, 0x14, 0, 0x29, 0, 0x1, 0, 0x5, - 0, 0, 0, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x14, 0, - 0x34, 0, 0x1, 0, 0xe, 0, 0, 0, 0x54, 0x69, - 0x6d, 0x65, 0x64, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x4b, 0x65, - 0x79, 0x73, 0x1, 0, 0x4, 0, 0, 0, 0x6b, 0x65, - 0x79, 0x73, 0xe, 0, 0x1, 0, 0x5, 0, 0, 0, - 0x6e, 0x4b, 0x65, 0x79, 0x73, 0xf, 0, 0x14, 0, 0xb, - 0, 0x1f, 0, 0x1, 0, 0x10, 0, 0, 0, 0x41, - 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xa, 0, 0x5, 0, 0xc0, - 0x56, 0xbf, 0xe2, 0xf, 0x84, 0xcf, 0x11, 0x8f, 0x52, 0, - 0x40, 0x33, 0x35, 0x94, 0xa3, 0x29, 0, 0x1, 0, 0xa, - 0, 0, 0, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6c, 0x6f, - 0x73, 0x65, 0x64, 0x14, 0, 0x29, 0, 0x1, 0, 0xf, - 0, 0, 0, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x14, 0, - 0xb, 0, 0x1f, 0, 0x1, 0, 0x9, 0, 0, 0, - 0x41, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xa, - 0, 0x5, 0, 0x4f, 0xab, 0x82, 0x3d, 0xda, 0x62, 0xcf, - 0x11, 0xab, 0x39, 0, 0x20, 0xaf, 0x71, 0xe4, 0x33, 0xe, - 0, 0x12, 0, 0x12, 0, 0x12, 0, 0xf, 0, 0xb, - 0, 0x1f, 0, 0x1, 0, 0xc, 0, 0, 0, 0x41, - 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, - 0x74, 0xa, 0, 0x5, 0, 0x50, 0xab, 0x82, 0x3d, 0xda, - 0x62, 0xcf, 0x11, 0xab, 0x39, 0, 0x20, 0xaf, 0x71, 0xe4, - 0x33, 0xe, 0, 0x1, 0, 0x9, 0, 0, 0, 0x41, - 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xf, 0, - 0xb, 0, 0x1f, 0, 0x1, 0, 0xa, 0, 0, 0, - 0x49, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x44, 0x61, 0x74, 0x61, - 0xa, 0, 0x5, 0, 0xa0, 0xee, 0x23, 0x3a, 0xb1, 0x94, - 0xd0, 0x11, 0xab, 0x39, 0, 0x20, 0xaf, 0x71, 0xe4, 0x33, - 0xe, 0, 0x1, 0, 0x6, 0, 0, 0, 0x42, 0x49, - 0x4e, 0x41, 0x52, 0x59, 0xf, 0, 0xb, 0, 0x1f, 0, - 0x1, 0, 0x3, 0, 0, 0, 0x55, 0x72, 0x6c, 0xa, - 0, 0x5, 0, 0xa1, 0xee, 0x23, 0x3a, 0xb1, 0x94, 0xd0, - 0x11, 0xab, 0x39, 0, 0x20, 0xaf, 0x71, 0xe4, 0x33, 0x29, - 0, 0x1, 0, 0x5, 0, 0, 0, 0x6e, 0x55, 0x72, - 0x6c, 0x73, 0x14, 0, 0x34, 0, 0x31, 0, 0x1, 0, - 0x4, 0, 0, 0, 0x75, 0x72, 0x6c, 0x73, 0xe, 0, - 0x1, 0, 0x5, 0, 0, 0, 0x6e, 0x55, 0x72, 0x6c, - 0x73, 0xf, 0, 0x14, 0, 0xb, 0, 0x1f, 0, 0x1, - 0, 0xf, 0, 0, 0, 0x50, 0x72, 0x6f, 0x67, 0x72, - 0x65, 0x73, 0x73, 0x69, 0x76, 0x65, 0x4d, 0x65, 0x73, 0x68, - 0xa, 0, 0x5, 0, 0x60, 0xc3, 0x63, 0x8a, 0x7d, 0x99, - 0xd0, 0x11, 0x94, 0x1c, 0, 0x80, 0xc8, 0xc, 0xfa, 0x7b, - 0xe, 0, 0x1, 0, 0x3, 0, 0, 0, 0x55, 0x72, - 0x6c, 0x13, 0, 0x1, 0, 0xa, 0, 0, 0, 0x49, - 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x44, 0x61, 0x74, 0x61, 0xf, - 0, 0xb, 0, 0x1f, 0, 0x1, 0, 0x4, 0, 0, - 0, 0x47, 0x75, 0x69, 0x64, 0xa, 0, 0x5, 0, 0xe0, - 0x90, 0x27, 0xa4, 0x10, 0x78, 0xcf, 0x11, 0x8f, 0x52, 0, - 0x40, 0x33, 0x35, 0x94, 0xa3, 0x29, 0, 0x1, 0, 0x5, - 0, 0, 0, 0x64, 0x61, 0x74, 0x61, 0x31, 0x14, 0, - 0x28, 0, 0x1, 0, 0x5, 0, 0, 0, 0x64, 0x61, - 0x74, 0x61, 0x32, 0x14, 0, 0x28, 0, 0x1, 0, 0x5, - 0, 0, 0, 0x64, 0x61, 0x74, 0x61, 0x33, 0x14, 0, - 0x34, 0, 0x2d, 0, 0x1, 0, 0x5, 0, 0, 0, - 0x64, 0x61, 0x74, 0x61, 0x34, 0xe, 0, 0x3, 0, 0x8, - 0, 0, 0, 0xf, 0, 0x14, 0, 0xb, 0, 0x1f, - 0, 0x1, 0, 0xe, 0, 0, 0, 0x53, 0x74, 0x72, - 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, - 0x79, 0xa, 0, 0x5, 0, 0xe0, 0x21, 0xf, 0x7f, 0xe1, - 0xbf, 0xd1, 0x11, 0x82, 0xc0, 0, 0xa0, 0xc9, 0x69, 0x72, - 0x71, 0x31, 0, 0x1, 0, 0x3, 0, 0, 0, 0x6b, - 0x65, 0x79, 0x14, 0, 0x31, 0, 0x1, 0, 0x5, 0, - 0, 0, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x14, 0, 0xb, - 0, 0x1f, 0, 0x1, 0, 0xb, 0, 0, 0, 0x50, - 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x42, 0x61, 0x67, - 0xa, 0, 0x5, 0, 0xe1, 0x21, 0xf, 0x7f, 0xe1, 0xbf, - 0xd1, 0x11, 0x82, 0xc0, 0, 0xa0, 0xc9, 0x69, 0x72, 0x71, - 0xe, 0, 0x1, 0, 0xe, 0, 0, 0, 0x53, 0x74, - 0x72, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, - 0x74, 0x79, 0xf, 0, 0xb, 0, 0x1f, 0, 0x1, 0, - 0xe, 0, 0, 0, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, - 0x61, 0x6c, 0x56, 0x69, 0x73, 0x75, 0x61, 0x6c, 0xa, 0, - 0x5, 0, 0xa0, 0x6a, 0x11, 0x98, 0xba, 0xbd, 0xd1, 0x11, - 0x82, 0xc0, 0, 0xa0, 0xc9, 0x69, 0x72, 0x71, 0x1, 0, - 0x4, 0, 0, 0, 0x47, 0x75, 0x69, 0x64, 0x1, 0, - 0x12, 0, 0, 0, 0x67, 0x75, 0x69, 0x64, 0x45, 0x78, - 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x56, 0x69, 0x73, 0x75, - 0x61, 0x6c, 0x14, 0, 0xe, 0, 0x12, 0, 0x12, 0, - 0x12, 0, 0xf, 0, 0xb, 0, 0x1f, 0, 0x1, 0, - 0xb, 0, 0, 0, 0x52, 0x69, 0x67, 0x68, 0x74, 0x48, - 0x61, 0x6e, 0x64, 0x65, 0x64, 0xa, 0, 0x5, 0, 0xa0, - 0x5e, 0x5d, 0x7f, 0x3a, 0xd5, 0xd1, 0x11, 0x82, 0xc0, 0, - 0xa0, 0xc9, 0x69, 0x72, 0x71, 0x29, 0, 0x1, 0, 0xc, - 0, 0, 0, 0x62, 0x52, 0x69, 0x67, 0x68, 0x74, 0x48, - 0x61, 0x6e, 0x64, 0x65, 0x64, 0x14, 0, 0xb, 0 -}; - -#define D3DRM_XTEMPLATE_BYTES 3278 - -#endif /* _RMXFTMPL_H_ */ +/* D3DRM XFile templates in binary form */ + +#ifndef _RMXFTMPL_H_ +#define _RMXFTMPL_H_ + +unsigned char D3DRM_XTEMPLATES[] = { + 0x78, 0x6f, 0x66, 0x20, 0x30, 0x33, 0x30, 0x32, 0x62, + 0x69, 0x6e, 0x20, 0x30, 0x30, 0x36, 0x34, 0x1f, 0, 0x1, + 0, 0x6, 0, 0, 0, 0x48, 0x65, 0x61, 0x64, 0x65, + 0x72, 0xa, 0, 0x5, 0, 0x43, 0xab, 0x82, 0x3d, 0xda, + 0x62, 0xcf, 0x11, 0xab, 0x39, 0, 0x20, 0xaf, 0x71, 0xe4, + 0x33, 0x28, 0, 0x1, 0, 0x5, 0, 0, 0, 0x6d, + 0x61, 0x6a, 0x6f, 0x72, 0x14, 0, 0x28, 0, 0x1, 0, + 0x5, 0, 0, 0, 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x14, + 0, 0x29, 0, 0x1, 0, 0x5, 0, 0, 0, 0x66, + 0x6c, 0x61, 0x67, 0x73, 0x14, 0, 0xb, 0, 0x1f, 0, + 0x1, 0, 0x6, 0, 0, 0, 0x56, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0xa, 0, 0x5, 0, 0x5e, 0xab, 0x82, 0x3d, + 0xda, 0x62, 0xcf, 0x11, 0xab, 0x39, 0, 0x20, 0xaf, 0x71, + 0xe4, 0x33, 0x2a, 0, 0x1, 0, 0x1, 0, 0, 0, + 0x78, 0x14, 0, 0x2a, 0, 0x1, 0, 0x1, 0, 0, + 0, 0x79, 0x14, 0, 0x2a, 0, 0x1, 0, 0x1, 0, + 0, 0, 0x7a, 0x14, 0, 0xb, 0, 0x1f, 0, 0x1, + 0, 0x8, 0, 0, 0, 0x43, 0x6f, 0x6f, 0x72, 0x64, + 0x73, 0x32, 0x64, 0xa, 0, 0x5, 0, 0x44, 0x3f, 0xf2, + 0xf6, 0x86, 0x76, 0xcf, 0x11, 0x8f, 0x52, 0, 0x40, 0x33, + 0x35, 0x94, 0xa3, 0x2a, 0, 0x1, 0, 0x1, 0, 0, + 0, 0x75, 0x14, 0, 0x2a, 0, 0x1, 0, 0x1, 0, + 0, 0, 0x76, 0x14, 0, 0xb, 0, 0x1f, 0, 0x1, + 0, 0x9, 0, 0, 0, 0x4d, 0x61, 0x74, 0x72, 0x69, + 0x78, 0x34, 0x78, 0x34, 0xa, 0, 0x5, 0, 0x45, 0x3f, + 0xf2, 0xf6, 0x86, 0x76, 0xcf, 0x11, 0x8f, 0x52, 0, 0x40, + 0x33, 0x35, 0x94, 0xa3, 0x34, 0, 0x2a, 0, 0x1, 0, + 0x6, 0, 0, 0, 0x6d, 0x61, 0x74, 0x72, 0x69, 0x78, + 0xe, 0, 0x3, 0, 0x10, 0, 0, 0, 0xf, 0, + 0x14, 0, 0xb, 0, 0x1f, 0, 0x1, 0, 0x9, 0, + 0, 0, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x52, 0x47, 0x42, + 0x41, 0xa, 0, 0x5, 0, 0xe0, 0x44, 0xff, 0x35, 0x7c, + 0x6c, 0xcf, 0x11, 0x8f, 0x52, 0, 0x40, 0x33, 0x35, 0x94, + 0xa3, 0x2a, 0, 0x1, 0, 0x3, 0, 0, 0, 0x72, + 0x65, 0x64, 0x14, 0, 0x2a, 0, 0x1, 0, 0x5, 0, + 0, 0, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x14, 0, 0x2a, + 0, 0x1, 0, 0x4, 0, 0, 0, 0x62, 0x6c, 0x75, + 0x65, 0x14, 0, 0x2a, 0, 0x1, 0, 0x5, 0, 0, + 0, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x14, 0, 0xb, 0, + 0x1f, 0, 0x1, 0, 0x8, 0, 0, 0, 0x43, 0x6f, + 0x6c, 0x6f, 0x72, 0x52, 0x47, 0x42, 0xa, 0, 0x5, 0, + 0x81, 0x6e, 0xe1, 0xd3, 0x35, 0x78, 0xcf, 0x11, 0x8f, 0x52, + 0, 0x40, 0x33, 0x35, 0x94, 0xa3, 0x2a, 0, 0x1, 0, + 0x3, 0, 0, 0, 0x72, 0x65, 0x64, 0x14, 0, 0x2a, + 0, 0x1, 0, 0x5, 0, 0, 0, 0x67, 0x72, 0x65, + 0x65, 0x6e, 0x14, 0, 0x2a, 0, 0x1, 0, 0x4, 0, + 0, 0, 0x62, 0x6c, 0x75, 0x65, 0x14, 0, 0xb, 0, + 0x1f, 0, 0x1, 0, 0xc, 0, 0, 0, 0x49, 0x6e, + 0x64, 0x65, 0x78, 0x65, 0x64, 0x43, 0x6f, 0x6c, 0x6f, 0x72, + 0xa, 0, 0x5, 0, 0x20, 0xb8, 0x30, 0x16, 0x42, 0x78, + 0xcf, 0x11, 0x8f, 0x52, 0, 0x40, 0x33, 0x35, 0x94, 0xa3, + 0x29, 0, 0x1, 0, 0x5, 0, 0, 0, 0x69, 0x6e, + 0x64, 0x65, 0x78, 0x14, 0, 0x1, 0, 0x9, 0, 0, + 0, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x52, 0x47, 0x42, 0x41, + 0x1, 0, 0xa, 0, 0, 0, 0x69, 0x6e, 0x64, 0x65, + 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x14, 0, 0xb, 0, + 0x1f, 0, 0x1, 0, 0x7, 0, 0, 0, 0x42, 0x6f, + 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0xa, 0, 0x5, 0, 0xa0, + 0xa6, 0x7d, 0x53, 0x37, 0xca, 0xd0, 0x11, 0x94, 0x1c, 0, + 0x80, 0xc8, 0xc, 0xfa, 0x7b, 0x29, 0, 0x1, 0, 0x9, + 0, 0, 0, 0x74, 0x72, 0x75, 0x65, 0x66, 0x61, 0x6c, + 0x73, 0x65, 0x14, 0, 0xb, 0, 0x1f, 0, 0x1, 0, + 0x9, 0, 0, 0, 0x42, 0x6f, 0x6f, 0x6c, 0x65, 0x61, + 0x6e, 0x32, 0x64, 0xa, 0, 0x5, 0, 0x63, 0xae, 0x85, + 0x48, 0xe8, 0x78, 0xcf, 0x11, 0x8f, 0x52, 0, 0x40, 0x33, + 0x35, 0x94, 0xa3, 0x1, 0, 0x7, 0, 0, 0, 0x42, + 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x1, 0, 0x1, 0, + 0, 0, 0x75, 0x14, 0, 0x1, 0, 0x7, 0, 0, + 0, 0x42, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x1, 0, + 0x1, 0, 0, 0, 0x76, 0x14, 0, 0xb, 0, 0x1f, + 0, 0x1, 0, 0xc, 0, 0, 0, 0x4d, 0x61, 0x74, + 0x65, 0x72, 0x69, 0x61, 0x6c, 0x57, 0x72, 0x61, 0x70, 0xa, + 0, 0x5, 0, 0x60, 0xae, 0x85, 0x48, 0xe8, 0x78, 0xcf, + 0x11, 0x8f, 0x52, 0, 0x40, 0x33, 0x35, 0x94, 0xa3, 0x1, + 0, 0x7, 0, 0, 0, 0x42, 0x6f, 0x6f, 0x6c, 0x65, + 0x61, 0x6e, 0x1, 0, 0x1, 0, 0, 0, 0x75, 0x14, + 0, 0x1, 0, 0x7, 0, 0, 0, 0x42, 0x6f, 0x6f, + 0x6c, 0x65, 0x61, 0x6e, 0x1, 0, 0x1, 0, 0, 0, + 0x76, 0x14, 0, 0xb, 0, 0x1f, 0, 0x1, 0, 0xf, + 0, 0, 0, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, + 0x46, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0xa, 0, + 0x5, 0, 0xe1, 0x90, 0x27, 0xa4, 0x10, 0x78, 0xcf, 0x11, + 0x8f, 0x52, 0, 0x40, 0x33, 0x35, 0x94, 0xa3, 0x31, 0, + 0x1, 0, 0x8, 0, 0, 0, 0x66, 0x69, 0x6c, 0x65, + 0x6e, 0x61, 0x6d, 0x65, 0x14, 0, 0xb, 0, 0x1f, 0, + 0x1, 0, 0x8, 0, 0, 0, 0x4d, 0x61, 0x74, 0x65, + 0x72, 0x69, 0x61, 0x6c, 0xa, 0, 0x5, 0, 0x4d, 0xab, + 0x82, 0x3d, 0xda, 0x62, 0xcf, 0x11, 0xab, 0x39, 0, 0x20, + 0xaf, 0x71, 0xe4, 0x33, 0x1, 0, 0x9, 0, 0, 0, + 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x52, 0x47, 0x42, 0x41, 0x1, + 0, 0x9, 0, 0, 0, 0x66, 0x61, 0x63, 0x65, 0x43, + 0x6f, 0x6c, 0x6f, 0x72, 0x14, 0, 0x2a, 0, 0x1, 0, + 0x5, 0, 0, 0, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x14, + 0, 0x1, 0, 0x8, 0, 0, 0, 0x43, 0x6f, 0x6c, + 0x6f, 0x72, 0x52, 0x47, 0x42, 0x1, 0, 0xd, 0, 0, + 0, 0x73, 0x70, 0x65, 0x63, 0x75, 0x6c, 0x61, 0x72, 0x43, + 0x6f, 0x6c, 0x6f, 0x72, 0x14, 0, 0x1, 0, 0x8, 0, + 0, 0, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x52, 0x47, 0x42, + 0x1, 0, 0xd, 0, 0, 0, 0x65, 0x6d, 0x69, 0x73, + 0x73, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x14, + 0, 0xe, 0, 0x12, 0, 0x12, 0, 0x12, 0, 0xf, + 0, 0xb, 0, 0x1f, 0, 0x1, 0, 0x8, 0, 0, + 0, 0x4d, 0x65, 0x73, 0x68, 0x46, 0x61, 0x63, 0x65, 0xa, + 0, 0x5, 0, 0x5f, 0xab, 0x82, 0x3d, 0xda, 0x62, 0xcf, + 0x11, 0xab, 0x39, 0, 0x20, 0xaf, 0x71, 0xe4, 0x33, 0x29, + 0, 0x1, 0, 0x12, 0, 0, 0, 0x6e, 0x46, 0x61, + 0x63, 0x65, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, 0x6e, + 0x64, 0x69, 0x63, 0x65, 0x73, 0x14, 0, 0x34, 0, 0x29, + 0, 0x1, 0, 0x11, 0, 0, 0, 0x66, 0x61, 0x63, + 0x65, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, 0x6e, 0x64, + 0x69, 0x63, 0x65, 0x73, 0xe, 0, 0x1, 0, 0x12, 0, + 0, 0, 0x6e, 0x46, 0x61, 0x63, 0x65, 0x56, 0x65, 0x72, + 0x74, 0x65, 0x78, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, + 0xf, 0, 0x14, 0, 0xb, 0, 0x1f, 0, 0x1, 0, + 0xd, 0, 0, 0, 0x4d, 0x65, 0x73, 0x68, 0x46, 0x61, + 0x63, 0x65, 0x57, 0x72, 0x61, 0x70, 0x73, 0xa, 0, 0x5, + 0, 0xc0, 0xc5, 0x1e, 0xed, 0xa8, 0xc0, 0xd0, 0x11, 0x94, + 0x1c, 0, 0x80, 0xc8, 0xc, 0xfa, 0x7b, 0x29, 0, 0x1, + 0, 0xf, 0, 0, 0, 0x6e, 0x46, 0x61, 0x63, 0x65, + 0x57, 0x72, 0x61, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, + 0x14, 0, 0x34, 0, 0x1, 0, 0x9, 0, 0, 0, + 0x42, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x32, 0x64, 0x1, + 0, 0xe, 0, 0, 0, 0x66, 0x61, 0x63, 0x65, 0x57, + 0x72, 0x61, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0xe, + 0, 0x1, 0, 0xf, 0, 0, 0, 0x6e, 0x46, 0x61, + 0x63, 0x65, 0x57, 0x72, 0x61, 0x70, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x73, 0xf, 0, 0x14, 0, 0xb, 0, 0x1f, 0, + 0x1, 0, 0x11, 0, 0, 0, 0x4d, 0x65, 0x73, 0x68, + 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x43, 0x6f, 0x6f, + 0x72, 0x64, 0x73, 0xa, 0, 0x5, 0, 0x40, 0x3f, 0xf2, + 0xf6, 0x86, 0x76, 0xcf, 0x11, 0x8f, 0x52, 0, 0x40, 0x33, + 0x35, 0x94, 0xa3, 0x29, 0, 0x1, 0, 0xe, 0, 0, + 0, 0x6e, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x43, + 0x6f, 0x6f, 0x72, 0x64, 0x73, 0x14, 0, 0x34, 0, 0x1, + 0, 0x8, 0, 0, 0, 0x43, 0x6f, 0x6f, 0x72, 0x64, + 0x73, 0x32, 0x64, 0x1, 0, 0xd, 0, 0, 0, 0x74, + 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x43, 0x6f, 0x6f, 0x72, + 0x64, 0x73, 0xe, 0, 0x1, 0, 0xe, 0, 0, 0, + 0x6e, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x43, 0x6f, + 0x6f, 0x72, 0x64, 0x73, 0xf, 0, 0x14, 0, 0xb, 0, + 0x1f, 0, 0x1, 0, 0x10, 0, 0, 0, 0x4d, 0x65, + 0x73, 0x68, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, + 0x4c, 0x69, 0x73, 0x74, 0xa, 0, 0x5, 0, 0x42, 0x3f, + 0xf2, 0xf6, 0x86, 0x76, 0xcf, 0x11, 0x8f, 0x52, 0, 0x40, + 0x33, 0x35, 0x94, 0xa3, 0x29, 0, 0x1, 0, 0xa, 0, + 0, 0, 0x6e, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, + 0x6c, 0x73, 0x14, 0, 0x29, 0, 0x1, 0, 0xc, 0, + 0, 0, 0x6e, 0x46, 0x61, 0x63, 0x65, 0x49, 0x6e, 0x64, + 0x65, 0x78, 0x65, 0x73, 0x14, 0, 0x34, 0, 0x29, 0, + 0x1, 0, 0xb, 0, 0, 0, 0x66, 0x61, 0x63, 0x65, + 0x49, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x73, 0xe, 0, 0x1, + 0, 0xc, 0, 0, 0, 0x6e, 0x46, 0x61, 0x63, 0x65, + 0x49, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x73, 0xf, 0, 0x14, + 0, 0xe, 0, 0x1, 0, 0x8, 0, 0, 0, 0x4d, + 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0xf, 0, 0xb, + 0, 0x1f, 0, 0x1, 0, 0xb, 0, 0, 0, 0x4d, + 0x65, 0x73, 0x68, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x73, + 0xa, 0, 0x5, 0, 0x43, 0x3f, 0xf2, 0xf6, 0x86, 0x76, + 0xcf, 0x11, 0x8f, 0x52, 0, 0x40, 0x33, 0x35, 0x94, 0xa3, + 0x29, 0, 0x1, 0, 0x8, 0, 0, 0, 0x6e, 0x4e, + 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x73, 0x14, 0, 0x34, 0, + 0x1, 0, 0x6, 0, 0, 0, 0x56, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x1, 0, 0x7, 0, 0, 0, 0x6e, 0x6f, + 0x72, 0x6d, 0x61, 0x6c, 0x73, 0xe, 0, 0x1, 0, 0x8, + 0, 0, 0, 0x6e, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, + 0x73, 0xf, 0, 0x14, 0, 0x29, 0, 0x1, 0, 0xc, + 0, 0, 0, 0x6e, 0x46, 0x61, 0x63, 0x65, 0x4e, 0x6f, + 0x72, 0x6d, 0x61, 0x6c, 0x73, 0x14, 0, 0x34, 0, 0x1, + 0, 0x8, 0, 0, 0, 0x4d, 0x65, 0x73, 0x68, 0x46, + 0x61, 0x63, 0x65, 0x1, 0, 0xb, 0, 0, 0, 0x66, + 0x61, 0x63, 0x65, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x73, + 0xe, 0, 0x1, 0, 0xc, 0, 0, 0, 0x6e, 0x46, + 0x61, 0x63, 0x65, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x73, + 0xf, 0, 0x14, 0, 0xb, 0, 0x1f, 0, 0x1, 0, + 0x10, 0, 0, 0, 0x4d, 0x65, 0x73, 0x68, 0x56, 0x65, + 0x72, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x73, + 0xa, 0, 0x5, 0, 0x21, 0xb8, 0x30, 0x16, 0x42, 0x78, + 0xcf, 0x11, 0x8f, 0x52, 0, 0x40, 0x33, 0x35, 0x94, 0xa3, + 0x29, 0, 0x1, 0, 0xd, 0, 0, 0, 0x6e, 0x56, + 0x65, 0x72, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, + 0x73, 0x14, 0, 0x34, 0, 0x1, 0, 0xc, 0, 0, + 0, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x64, 0x43, 0x6f, + 0x6c, 0x6f, 0x72, 0x1, 0, 0xc, 0, 0, 0, 0x76, + 0x65, 0x72, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, + 0x73, 0xe, 0, 0x1, 0, 0xd, 0, 0, 0, 0x6e, + 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, + 0x72, 0x73, 0xf, 0, 0x14, 0, 0xb, 0, 0x1f, 0, + 0x1, 0, 0x4, 0, 0, 0, 0x4d, 0x65, 0x73, 0x68, + 0xa, 0, 0x5, 0, 0x44, 0xab, 0x82, 0x3d, 0xda, 0x62, + 0xcf, 0x11, 0xab, 0x39, 0, 0x20, 0xaf, 0x71, 0xe4, 0x33, + 0x29, 0, 0x1, 0, 0x9, 0, 0, 0, 0x6e, 0x56, + 0x65, 0x72, 0x74, 0x69, 0x63, 0x65, 0x73, 0x14, 0, 0x34, + 0, 0x1, 0, 0x6, 0, 0, 0, 0x56, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x1, 0, 0x8, 0, 0, 0, 0x76, + 0x65, 0x72, 0x74, 0x69, 0x63, 0x65, 0x73, 0xe, 0, 0x1, + 0, 0x9, 0, 0, 0, 0x6e, 0x56, 0x65, 0x72, 0x74, + 0x69, 0x63, 0x65, 0x73, 0xf, 0, 0x14, 0, 0x29, 0, + 0x1, 0, 0x6, 0, 0, 0, 0x6e, 0x46, 0x61, 0x63, + 0x65, 0x73, 0x14, 0, 0x34, 0, 0x1, 0, 0x8, 0, + 0, 0, 0x4d, 0x65, 0x73, 0x68, 0x46, 0x61, 0x63, 0x65, + 0x1, 0, 0x5, 0, 0, 0, 0x66, 0x61, 0x63, 0x65, + 0x73, 0xe, 0, 0x1, 0, 0x6, 0, 0, 0, 0x6e, + 0x46, 0x61, 0x63, 0x65, 0x73, 0xf, 0, 0x14, 0, 0xe, + 0, 0x12, 0, 0x12, 0, 0x12, 0, 0xf, 0, 0xb, + 0, 0x1f, 0, 0x1, 0, 0x14, 0, 0, 0, 0x46, + 0x72, 0x61, 0x6d, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, + 0x6f, 0x72, 0x6d, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0xa, + 0, 0x5, 0, 0x41, 0x3f, 0xf2, 0xf6, 0x86, 0x76, 0xcf, + 0x11, 0x8f, 0x52, 0, 0x40, 0x33, 0x35, 0x94, 0xa3, 0x1, + 0, 0x9, 0, 0, 0, 0x4d, 0x61, 0x74, 0x72, 0x69, + 0x78, 0x34, 0x78, 0x34, 0x1, 0, 0xb, 0, 0, 0, + 0x66, 0x72, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x72, 0x69, + 0x78, 0x14, 0, 0xb, 0, 0x1f, 0, 0x1, 0, 0x5, + 0, 0, 0, 0x46, 0x72, 0x61, 0x6d, 0x65, 0xa, 0, + 0x5, 0, 0x46, 0xab, 0x82, 0x3d, 0xda, 0x62, 0xcf, 0x11, + 0xab, 0x39, 0, 0x20, 0xaf, 0x71, 0xe4, 0x33, 0xe, 0, + 0x12, 0, 0x12, 0, 0x12, 0, 0xf, 0, 0xb, 0, + 0x1f, 0, 0x1, 0, 0x9, 0, 0, 0, 0x46, 0x6c, + 0x6f, 0x61, 0x74, 0x4b, 0x65, 0x79, 0x73, 0xa, 0, 0x5, + 0, 0xa9, 0x46, 0xdd, 0x10, 0x5b, 0x77, 0xcf, 0x11, 0x8f, + 0x52, 0, 0x40, 0x33, 0x35, 0x94, 0xa3, 0x29, 0, 0x1, + 0, 0x7, 0, 0, 0, 0x6e, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x73, 0x14, 0, 0x34, 0, 0x2a, 0, 0x1, 0, + 0x6, 0, 0, 0, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, + 0xe, 0, 0x1, 0, 0x7, 0, 0, 0, 0x6e, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x73, 0xf, 0, 0x14, 0, 0xb, + 0, 0x1f, 0, 0x1, 0, 0xe, 0, 0, 0, 0x54, + 0x69, 0x6d, 0x65, 0x64, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x4b, + 0x65, 0x79, 0x73, 0xa, 0, 0x5, 0, 0x80, 0xb1, 0x6, + 0xf4, 0x3b, 0x7b, 0xcf, 0x11, 0x8f, 0x52, 0, 0x40, 0x33, + 0x35, 0x94, 0xa3, 0x29, 0, 0x1, 0, 0x4, 0, 0, + 0, 0x74, 0x69, 0x6d, 0x65, 0x14, 0, 0x1, 0, 0x9, + 0, 0, 0, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x4b, 0x65, + 0x79, 0x73, 0x1, 0, 0x6, 0, 0, 0, 0x74, 0x66, + 0x6b, 0x65, 0x79, 0x73, 0x14, 0, 0xb, 0, 0x1f, 0, + 0x1, 0, 0xc, 0, 0, 0, 0x41, 0x6e, 0x69, 0x6d, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0xa, 0, + 0x5, 0, 0xa8, 0x46, 0xdd, 0x10, 0x5b, 0x77, 0xcf, 0x11, + 0x8f, 0x52, 0, 0x40, 0x33, 0x35, 0x94, 0xa3, 0x29, 0, + 0x1, 0, 0x7, 0, 0, 0, 0x6b, 0x65, 0x79, 0x54, + 0x79, 0x70, 0x65, 0x14, 0, 0x29, 0, 0x1, 0, 0x5, + 0, 0, 0, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x14, 0, + 0x34, 0, 0x1, 0, 0xe, 0, 0, 0, 0x54, 0x69, + 0x6d, 0x65, 0x64, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x4b, 0x65, + 0x79, 0x73, 0x1, 0, 0x4, 0, 0, 0, 0x6b, 0x65, + 0x79, 0x73, 0xe, 0, 0x1, 0, 0x5, 0, 0, 0, + 0x6e, 0x4b, 0x65, 0x79, 0x73, 0xf, 0, 0x14, 0, 0xb, + 0, 0x1f, 0, 0x1, 0, 0x10, 0, 0, 0, 0x41, + 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xa, 0, 0x5, 0, 0xc0, + 0x56, 0xbf, 0xe2, 0xf, 0x84, 0xcf, 0x11, 0x8f, 0x52, 0, + 0x40, 0x33, 0x35, 0x94, 0xa3, 0x29, 0, 0x1, 0, 0xa, + 0, 0, 0, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6c, 0x6f, + 0x73, 0x65, 0x64, 0x14, 0, 0x29, 0, 0x1, 0, 0xf, + 0, 0, 0, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x14, 0, + 0xb, 0, 0x1f, 0, 0x1, 0, 0x9, 0, 0, 0, + 0x41, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xa, + 0, 0x5, 0, 0x4f, 0xab, 0x82, 0x3d, 0xda, 0x62, 0xcf, + 0x11, 0xab, 0x39, 0, 0x20, 0xaf, 0x71, 0xe4, 0x33, 0xe, + 0, 0x12, 0, 0x12, 0, 0x12, 0, 0xf, 0, 0xb, + 0, 0x1f, 0, 0x1, 0, 0xc, 0, 0, 0, 0x41, + 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, + 0x74, 0xa, 0, 0x5, 0, 0x50, 0xab, 0x82, 0x3d, 0xda, + 0x62, 0xcf, 0x11, 0xab, 0x39, 0, 0x20, 0xaf, 0x71, 0xe4, + 0x33, 0xe, 0, 0x1, 0, 0x9, 0, 0, 0, 0x41, + 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xf, 0, + 0xb, 0, 0x1f, 0, 0x1, 0, 0xa, 0, 0, 0, + 0x49, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x44, 0x61, 0x74, 0x61, + 0xa, 0, 0x5, 0, 0xa0, 0xee, 0x23, 0x3a, 0xb1, 0x94, + 0xd0, 0x11, 0xab, 0x39, 0, 0x20, 0xaf, 0x71, 0xe4, 0x33, + 0xe, 0, 0x1, 0, 0x6, 0, 0, 0, 0x42, 0x49, + 0x4e, 0x41, 0x52, 0x59, 0xf, 0, 0xb, 0, 0x1f, 0, + 0x1, 0, 0x3, 0, 0, 0, 0x55, 0x72, 0x6c, 0xa, + 0, 0x5, 0, 0xa1, 0xee, 0x23, 0x3a, 0xb1, 0x94, 0xd0, + 0x11, 0xab, 0x39, 0, 0x20, 0xaf, 0x71, 0xe4, 0x33, 0x29, + 0, 0x1, 0, 0x5, 0, 0, 0, 0x6e, 0x55, 0x72, + 0x6c, 0x73, 0x14, 0, 0x34, 0, 0x31, 0, 0x1, 0, + 0x4, 0, 0, 0, 0x75, 0x72, 0x6c, 0x73, 0xe, 0, + 0x1, 0, 0x5, 0, 0, 0, 0x6e, 0x55, 0x72, 0x6c, + 0x73, 0xf, 0, 0x14, 0, 0xb, 0, 0x1f, 0, 0x1, + 0, 0xf, 0, 0, 0, 0x50, 0x72, 0x6f, 0x67, 0x72, + 0x65, 0x73, 0x73, 0x69, 0x76, 0x65, 0x4d, 0x65, 0x73, 0x68, + 0xa, 0, 0x5, 0, 0x60, 0xc3, 0x63, 0x8a, 0x7d, 0x99, + 0xd0, 0x11, 0x94, 0x1c, 0, 0x80, 0xc8, 0xc, 0xfa, 0x7b, + 0xe, 0, 0x1, 0, 0x3, 0, 0, 0, 0x55, 0x72, + 0x6c, 0x13, 0, 0x1, 0, 0xa, 0, 0, 0, 0x49, + 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x44, 0x61, 0x74, 0x61, 0xf, + 0, 0xb, 0, 0x1f, 0, 0x1, 0, 0x4, 0, 0, + 0, 0x47, 0x75, 0x69, 0x64, 0xa, 0, 0x5, 0, 0xe0, + 0x90, 0x27, 0xa4, 0x10, 0x78, 0xcf, 0x11, 0x8f, 0x52, 0, + 0x40, 0x33, 0x35, 0x94, 0xa3, 0x29, 0, 0x1, 0, 0x5, + 0, 0, 0, 0x64, 0x61, 0x74, 0x61, 0x31, 0x14, 0, + 0x28, 0, 0x1, 0, 0x5, 0, 0, 0, 0x64, 0x61, + 0x74, 0x61, 0x32, 0x14, 0, 0x28, 0, 0x1, 0, 0x5, + 0, 0, 0, 0x64, 0x61, 0x74, 0x61, 0x33, 0x14, 0, + 0x34, 0, 0x2d, 0, 0x1, 0, 0x5, 0, 0, 0, + 0x64, 0x61, 0x74, 0x61, 0x34, 0xe, 0, 0x3, 0, 0x8, + 0, 0, 0, 0xf, 0, 0x14, 0, 0xb, 0, 0x1f, + 0, 0x1, 0, 0xe, 0, 0, 0, 0x53, 0x74, 0x72, + 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, + 0x79, 0xa, 0, 0x5, 0, 0xe0, 0x21, 0xf, 0x7f, 0xe1, + 0xbf, 0xd1, 0x11, 0x82, 0xc0, 0, 0xa0, 0xc9, 0x69, 0x72, + 0x71, 0x31, 0, 0x1, 0, 0x3, 0, 0, 0, 0x6b, + 0x65, 0x79, 0x14, 0, 0x31, 0, 0x1, 0, 0x5, 0, + 0, 0, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x14, 0, 0xb, + 0, 0x1f, 0, 0x1, 0, 0xb, 0, 0, 0, 0x50, + 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x42, 0x61, 0x67, + 0xa, 0, 0x5, 0, 0xe1, 0x21, 0xf, 0x7f, 0xe1, 0xbf, + 0xd1, 0x11, 0x82, 0xc0, 0, 0xa0, 0xc9, 0x69, 0x72, 0x71, + 0xe, 0, 0x1, 0, 0xe, 0, 0, 0, 0x53, 0x74, + 0x72, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, + 0x74, 0x79, 0xf, 0, 0xb, 0, 0x1f, 0, 0x1, 0, + 0xe, 0, 0, 0, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, + 0x61, 0x6c, 0x56, 0x69, 0x73, 0x75, 0x61, 0x6c, 0xa, 0, + 0x5, 0, 0xa0, 0x6a, 0x11, 0x98, 0xba, 0xbd, 0xd1, 0x11, + 0x82, 0xc0, 0, 0xa0, 0xc9, 0x69, 0x72, 0x71, 0x1, 0, + 0x4, 0, 0, 0, 0x47, 0x75, 0x69, 0x64, 0x1, 0, + 0x12, 0, 0, 0, 0x67, 0x75, 0x69, 0x64, 0x45, 0x78, + 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x56, 0x69, 0x73, 0x75, + 0x61, 0x6c, 0x14, 0, 0xe, 0, 0x12, 0, 0x12, 0, + 0x12, 0, 0xf, 0, 0xb, 0, 0x1f, 0, 0x1, 0, + 0xb, 0, 0, 0, 0x52, 0x69, 0x67, 0x68, 0x74, 0x48, + 0x61, 0x6e, 0x64, 0x65, 0x64, 0xa, 0, 0x5, 0, 0xa0, + 0x5e, 0x5d, 0x7f, 0x3a, 0xd5, 0xd1, 0x11, 0x82, 0xc0, 0, + 0xa0, 0xc9, 0x69, 0x72, 0x71, 0x29, 0, 0x1, 0, 0xc, + 0, 0, 0, 0x62, 0x52, 0x69, 0x67, 0x68, 0x74, 0x48, + 0x61, 0x6e, 0x64, 0x65, 0x64, 0x14, 0, 0xb, 0 +}; + +#define D3DRM_XTEMPLATE_BYTES 3278 + +#endif /* _RMXFTMPL_H_ */ diff --git a/videoInputSrcAndDemos/libs/DShow/Include/sbe.h b/videoInputSrcAndDemos/libs/DShow/Include/sbe.h index db5c121..0fcc401 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/sbe.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/sbe.h @@ -1,1777 +1,1777 @@ - -#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 sbe.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 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 -#endif // __RPCNDR_H_VERSION__ - -#ifndef COM_NO_WINDOWS_H -#include "windows.h" -#include "ole2.h" -#endif /*COM_NO_WINDOWS_H*/ - -#ifndef __sbe_h__ -#define __sbe_h__ - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -#pragma once -#endif - -/* Forward Declarations */ - -#ifndef __IStreamBufferInitialize_FWD_DEFINED__ -#define __IStreamBufferInitialize_FWD_DEFINED__ -typedef interface IStreamBufferInitialize IStreamBufferInitialize; -#endif /* __IStreamBufferInitialize_FWD_DEFINED__ */ - - -#ifndef __IStreamBufferSink_FWD_DEFINED__ -#define __IStreamBufferSink_FWD_DEFINED__ -typedef interface IStreamBufferSink IStreamBufferSink; -#endif /* __IStreamBufferSink_FWD_DEFINED__ */ - - -#ifndef __IStreamBufferSource_FWD_DEFINED__ -#define __IStreamBufferSource_FWD_DEFINED__ -typedef interface IStreamBufferSource IStreamBufferSource; -#endif /* __IStreamBufferSource_FWD_DEFINED__ */ - - -#ifndef __IStreamBufferRecordControl_FWD_DEFINED__ -#define __IStreamBufferRecordControl_FWD_DEFINED__ -typedef interface IStreamBufferRecordControl IStreamBufferRecordControl; -#endif /* __IStreamBufferRecordControl_FWD_DEFINED__ */ - - -#ifndef __IStreamBufferRecComp_FWD_DEFINED__ -#define __IStreamBufferRecComp_FWD_DEFINED__ -typedef interface IStreamBufferRecComp IStreamBufferRecComp; -#endif /* __IStreamBufferRecComp_FWD_DEFINED__ */ - - -#ifndef __IStreamBufferRecordingAttribute_FWD_DEFINED__ -#define __IStreamBufferRecordingAttribute_FWD_DEFINED__ -typedef interface IStreamBufferRecordingAttribute IStreamBufferRecordingAttribute; -#endif /* __IStreamBufferRecordingAttribute_FWD_DEFINED__ */ - - -#ifndef __IEnumStreamBufferRecordingAttrib_FWD_DEFINED__ -#define __IEnumStreamBufferRecordingAttrib_FWD_DEFINED__ -typedef interface IEnumStreamBufferRecordingAttrib IEnumStreamBufferRecordingAttrib; -#endif /* __IEnumStreamBufferRecordingAttrib_FWD_DEFINED__ */ - - -#ifndef __IStreamBufferConfigure_FWD_DEFINED__ -#define __IStreamBufferConfigure_FWD_DEFINED__ -typedef interface IStreamBufferConfigure IStreamBufferConfigure; -#endif /* __IStreamBufferConfigure_FWD_DEFINED__ */ - - -#ifndef __IStreamBufferMediaSeeking_FWD_DEFINED__ -#define __IStreamBufferMediaSeeking_FWD_DEFINED__ -typedef interface IStreamBufferMediaSeeking IStreamBufferMediaSeeking; -#endif /* __IStreamBufferMediaSeeking_FWD_DEFINED__ */ - - -/* header files for imported files */ -#include "unknwn.h" -#include "objidl.h" -#include "strmif.h" - -#ifdef __cplusplus -extern "C"{ -#endif - -void * __RPC_USER MIDL_user_allocate(size_t); -void __RPC_USER MIDL_user_free( void * ); - -/* interface __MIDL_itf_sbe_0000 */ -/* [local] */ - - - - - - - - - - - - -extern RPC_IF_HANDLE __MIDL_itf_sbe_0000_v0_0_c_ifspec; -extern RPC_IF_HANDLE __MIDL_itf_sbe_0000_v0_0_s_ifspec; - -#ifndef __IStreamBufferInitialize_INTERFACE_DEFINED__ -#define __IStreamBufferInitialize_INTERFACE_DEFINED__ - -/* interface IStreamBufferInitialize */ -/* [local][unique][uuid][object] */ - - -EXTERN_C const IID IID_IStreamBufferInitialize; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("9ce50f2d-6ba7-40fb-a034-50b1a674ec78") - IStreamBufferInitialize : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE SetHKEY( - /* [in] */ HKEY hkeyRoot) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetSIDs( - /* [in] */ DWORD cSIDs, - /* [size_is][in] */ PSID *ppSID) = 0; - - }; - -#else /* C style interface */ - - typedef struct IStreamBufferInitializeVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IStreamBufferInitialize * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IStreamBufferInitialize * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IStreamBufferInitialize * This); - - HRESULT ( STDMETHODCALLTYPE *SetHKEY )( - IStreamBufferInitialize * This, - /* [in] */ HKEY hkeyRoot); - - HRESULT ( STDMETHODCALLTYPE *SetSIDs )( - IStreamBufferInitialize * This, - /* [in] */ DWORD cSIDs, - /* [size_is][in] */ PSID *ppSID); - - END_INTERFACE - } IStreamBufferInitializeVtbl; - - interface IStreamBufferInitialize - { - CONST_VTBL struct IStreamBufferInitializeVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IStreamBufferInitialize_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IStreamBufferInitialize_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IStreamBufferInitialize_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IStreamBufferInitialize_SetHKEY(This,hkeyRoot) \ - (This)->lpVtbl -> SetHKEY(This,hkeyRoot) - -#define IStreamBufferInitialize_SetSIDs(This,cSIDs,ppSID) \ - (This)->lpVtbl -> SetSIDs(This,cSIDs,ppSID) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IStreamBufferInitialize_SetHKEY_Proxy( - IStreamBufferInitialize * This, - /* [in] */ HKEY hkeyRoot); - - -void __RPC_STUB IStreamBufferInitialize_SetHKEY_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IStreamBufferInitialize_SetSIDs_Proxy( - IStreamBufferInitialize * This, - /* [in] */ DWORD cSIDs, - /* [size_is][in] */ PSID *ppSID); - - -void __RPC_STUB IStreamBufferInitialize_SetSIDs_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IStreamBufferInitialize_INTERFACE_DEFINED__ */ - - -/* interface __MIDL_itf_sbe_0408 */ -/* [local] */ - - -enum __MIDL___MIDL_itf_sbe_0408_0001 - { RECORDING_TYPE_CONTENT = 0, - RECORDING_TYPE_REFERENCE = RECORDING_TYPE_CONTENT + 1 - } ; - - -extern RPC_IF_HANDLE __MIDL_itf_sbe_0408_v0_0_c_ifspec; -extern RPC_IF_HANDLE __MIDL_itf_sbe_0408_v0_0_s_ifspec; - -#ifndef __IStreamBufferSink_INTERFACE_DEFINED__ -#define __IStreamBufferSink_INTERFACE_DEFINED__ - -/* interface IStreamBufferSink */ -/* [unique][uuid][object] */ - - -EXTERN_C const IID IID_IStreamBufferSink; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("afd1f242-7efd-45ee-ba4e-407a25c9a77a") - IStreamBufferSink : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE LockProfile( - /* [in] */ LPCWSTR pszStreamBufferFilename) = 0; - - virtual HRESULT STDMETHODCALLTYPE CreateRecorder( - /* [in] */ LPCWSTR pszFilename, - /* [in] */ DWORD dwRecordType, - /* [out] */ IUnknown **pRecordingIUnknown) = 0; - - virtual HRESULT STDMETHODCALLTYPE IsProfileLocked( void) = 0; - - }; - -#else /* C style interface */ - - typedef struct IStreamBufferSinkVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IStreamBufferSink * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IStreamBufferSink * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IStreamBufferSink * This); - - HRESULT ( STDMETHODCALLTYPE *LockProfile )( - IStreamBufferSink * This, - /* [in] */ LPCWSTR pszStreamBufferFilename); - - HRESULT ( STDMETHODCALLTYPE *CreateRecorder )( - IStreamBufferSink * This, - /* [in] */ LPCWSTR pszFilename, - /* [in] */ DWORD dwRecordType, - /* [out] */ IUnknown **pRecordingIUnknown); - - HRESULT ( STDMETHODCALLTYPE *IsProfileLocked )( - IStreamBufferSink * This); - - END_INTERFACE - } IStreamBufferSinkVtbl; - - interface IStreamBufferSink - { - CONST_VTBL struct IStreamBufferSinkVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IStreamBufferSink_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IStreamBufferSink_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IStreamBufferSink_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IStreamBufferSink_LockProfile(This,pszStreamBufferFilename) \ - (This)->lpVtbl -> LockProfile(This,pszStreamBufferFilename) - -#define IStreamBufferSink_CreateRecorder(This,pszFilename,dwRecordType,pRecordingIUnknown) \ - (This)->lpVtbl -> CreateRecorder(This,pszFilename,dwRecordType,pRecordingIUnknown) - -#define IStreamBufferSink_IsProfileLocked(This) \ - (This)->lpVtbl -> IsProfileLocked(This) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IStreamBufferSink_LockProfile_Proxy( - IStreamBufferSink * This, - /* [in] */ LPCWSTR pszStreamBufferFilename); - - -void __RPC_STUB IStreamBufferSink_LockProfile_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IStreamBufferSink_CreateRecorder_Proxy( - IStreamBufferSink * This, - /* [in] */ LPCWSTR pszFilename, - /* [in] */ DWORD dwRecordType, - /* [out] */ IUnknown **pRecordingIUnknown); - - -void __RPC_STUB IStreamBufferSink_CreateRecorder_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IStreamBufferSink_IsProfileLocked_Proxy( - IStreamBufferSink * This); - - -void __RPC_STUB IStreamBufferSink_IsProfileLocked_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IStreamBufferSink_INTERFACE_DEFINED__ */ - - -#ifndef __IStreamBufferSource_INTERFACE_DEFINED__ -#define __IStreamBufferSource_INTERFACE_DEFINED__ - -/* interface IStreamBufferSource */ -/* [unique][uuid][object] */ - - -EXTERN_C const IID IID_IStreamBufferSource; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("1c5bd776-6ced-4f44-8164-5eab0e98db12") - IStreamBufferSource : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE SetStreamSink( - /* [in] */ IStreamBufferSink *pIStreamBufferSink) = 0; - - }; - -#else /* C style interface */ - - typedef struct IStreamBufferSourceVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IStreamBufferSource * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IStreamBufferSource * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IStreamBufferSource * This); - - HRESULT ( STDMETHODCALLTYPE *SetStreamSink )( - IStreamBufferSource * This, - /* [in] */ IStreamBufferSink *pIStreamBufferSink); - - END_INTERFACE - } IStreamBufferSourceVtbl; - - interface IStreamBufferSource - { - CONST_VTBL struct IStreamBufferSourceVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IStreamBufferSource_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IStreamBufferSource_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IStreamBufferSource_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IStreamBufferSource_SetStreamSink(This,pIStreamBufferSink) \ - (This)->lpVtbl -> SetStreamSink(This,pIStreamBufferSink) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IStreamBufferSource_SetStreamSink_Proxy( - IStreamBufferSource * This, - /* [in] */ IStreamBufferSink *pIStreamBufferSink); - - -void __RPC_STUB IStreamBufferSource_SetStreamSink_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IStreamBufferSource_INTERFACE_DEFINED__ */ - - -#ifndef __IStreamBufferRecordControl_INTERFACE_DEFINED__ -#define __IStreamBufferRecordControl_INTERFACE_DEFINED__ - -/* interface IStreamBufferRecordControl */ -/* [unique][uuid][object] */ - - -EXTERN_C const IID IID_IStreamBufferRecordControl; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("ba9b6c99-f3c7-4ff2-92db-cfdd4851bf31") - IStreamBufferRecordControl : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE Start( - /* [out][in] */ REFERENCE_TIME *prtStart) = 0; - - virtual HRESULT STDMETHODCALLTYPE Stop( - /* [in] */ REFERENCE_TIME rtStop) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetRecordingStatus( - /* [out] */ HRESULT *phResult, - /* [out] */ BOOL *pbStarted, - /* [out] */ BOOL *pbStopped) = 0; - - }; - -#else /* C style interface */ - - typedef struct IStreamBufferRecordControlVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IStreamBufferRecordControl * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IStreamBufferRecordControl * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IStreamBufferRecordControl * This); - - HRESULT ( STDMETHODCALLTYPE *Start )( - IStreamBufferRecordControl * This, - /* [out][in] */ REFERENCE_TIME *prtStart); - - HRESULT ( STDMETHODCALLTYPE *Stop )( - IStreamBufferRecordControl * This, - /* [in] */ REFERENCE_TIME rtStop); - - HRESULT ( STDMETHODCALLTYPE *GetRecordingStatus )( - IStreamBufferRecordControl * This, - /* [out] */ HRESULT *phResult, - /* [out] */ BOOL *pbStarted, - /* [out] */ BOOL *pbStopped); - - END_INTERFACE - } IStreamBufferRecordControlVtbl; - - interface IStreamBufferRecordControl - { - CONST_VTBL struct IStreamBufferRecordControlVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IStreamBufferRecordControl_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IStreamBufferRecordControl_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IStreamBufferRecordControl_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IStreamBufferRecordControl_Start(This,prtStart) \ - (This)->lpVtbl -> Start(This,prtStart) - -#define IStreamBufferRecordControl_Stop(This,rtStop) \ - (This)->lpVtbl -> Stop(This,rtStop) - -#define IStreamBufferRecordControl_GetRecordingStatus(This,phResult,pbStarted,pbStopped) \ - (This)->lpVtbl -> GetRecordingStatus(This,phResult,pbStarted,pbStopped) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IStreamBufferRecordControl_Start_Proxy( - IStreamBufferRecordControl * This, - /* [out][in] */ REFERENCE_TIME *prtStart); - - -void __RPC_STUB IStreamBufferRecordControl_Start_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IStreamBufferRecordControl_Stop_Proxy( - IStreamBufferRecordControl * This, - /* [in] */ REFERENCE_TIME rtStop); - - -void __RPC_STUB IStreamBufferRecordControl_Stop_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IStreamBufferRecordControl_GetRecordingStatus_Proxy( - IStreamBufferRecordControl * This, - /* [out] */ HRESULT *phResult, - /* [out] */ BOOL *pbStarted, - /* [out] */ BOOL *pbStopped); - - -void __RPC_STUB IStreamBufferRecordControl_GetRecordingStatus_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IStreamBufferRecordControl_INTERFACE_DEFINED__ */ - - -#ifndef __IStreamBufferRecComp_INTERFACE_DEFINED__ -#define __IStreamBufferRecComp_INTERFACE_DEFINED__ - -/* interface IStreamBufferRecComp */ -/* [unique][uuid][object] */ - - -EXTERN_C const IID IID_IStreamBufferRecComp; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("9E259A9B-8815-42ae-B09F-221970B154FD") - IStreamBufferRecComp : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE Initialize( - /* [in] */ LPCWSTR pszTargetFilename, - /* [in] */ LPCWSTR pszSBRecProfileRef) = 0; - - virtual HRESULT STDMETHODCALLTYPE Append( - /* [in] */ LPCWSTR pszSBRecording) = 0; - - virtual HRESULT STDMETHODCALLTYPE AppendEx( - /* [in] */ LPCWSTR pszSBRecording, - /* [in] */ REFERENCE_TIME rtStart, - /* [in] */ REFERENCE_TIME rtStop) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetCurrentLength( - /* [out] */ DWORD *pcSeconds) = 0; - - virtual HRESULT STDMETHODCALLTYPE Close( void) = 0; - - virtual HRESULT STDMETHODCALLTYPE Cancel( void) = 0; - - }; - -#else /* C style interface */ - - typedef struct IStreamBufferRecCompVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IStreamBufferRecComp * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IStreamBufferRecComp * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IStreamBufferRecComp * This); - - HRESULT ( STDMETHODCALLTYPE *Initialize )( - IStreamBufferRecComp * This, - /* [in] */ LPCWSTR pszTargetFilename, - /* [in] */ LPCWSTR pszSBRecProfileRef); - - HRESULT ( STDMETHODCALLTYPE *Append )( - IStreamBufferRecComp * This, - /* [in] */ LPCWSTR pszSBRecording); - - HRESULT ( STDMETHODCALLTYPE *AppendEx )( - IStreamBufferRecComp * This, - /* [in] */ LPCWSTR pszSBRecording, - /* [in] */ REFERENCE_TIME rtStart, - /* [in] */ REFERENCE_TIME rtStop); - - HRESULT ( STDMETHODCALLTYPE *GetCurrentLength )( - IStreamBufferRecComp * This, - /* [out] */ DWORD *pcSeconds); - - HRESULT ( STDMETHODCALLTYPE *Close )( - IStreamBufferRecComp * This); - - HRESULT ( STDMETHODCALLTYPE *Cancel )( - IStreamBufferRecComp * This); - - END_INTERFACE - } IStreamBufferRecCompVtbl; - - interface IStreamBufferRecComp - { - CONST_VTBL struct IStreamBufferRecCompVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IStreamBufferRecComp_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IStreamBufferRecComp_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IStreamBufferRecComp_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IStreamBufferRecComp_Initialize(This,pszTargetFilename,pszSBRecProfileRef) \ - (This)->lpVtbl -> Initialize(This,pszTargetFilename,pszSBRecProfileRef) - -#define IStreamBufferRecComp_Append(This,pszSBRecording) \ - (This)->lpVtbl -> Append(This,pszSBRecording) - -#define IStreamBufferRecComp_AppendEx(This,pszSBRecording,rtStart,rtStop) \ - (This)->lpVtbl -> AppendEx(This,pszSBRecording,rtStart,rtStop) - -#define IStreamBufferRecComp_GetCurrentLength(This,pcSeconds) \ - (This)->lpVtbl -> GetCurrentLength(This,pcSeconds) - -#define IStreamBufferRecComp_Close(This) \ - (This)->lpVtbl -> Close(This) - -#define IStreamBufferRecComp_Cancel(This) \ - (This)->lpVtbl -> Cancel(This) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IStreamBufferRecComp_Initialize_Proxy( - IStreamBufferRecComp * This, - /* [in] */ LPCWSTR pszTargetFilename, - /* [in] */ LPCWSTR pszSBRecProfileRef); - - -void __RPC_STUB IStreamBufferRecComp_Initialize_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IStreamBufferRecComp_Append_Proxy( - IStreamBufferRecComp * This, - /* [in] */ LPCWSTR pszSBRecording); - - -void __RPC_STUB IStreamBufferRecComp_Append_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IStreamBufferRecComp_AppendEx_Proxy( - IStreamBufferRecComp * This, - /* [in] */ LPCWSTR pszSBRecording, - /* [in] */ REFERENCE_TIME rtStart, - /* [in] */ REFERENCE_TIME rtStop); - - -void __RPC_STUB IStreamBufferRecComp_AppendEx_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IStreamBufferRecComp_GetCurrentLength_Proxy( - IStreamBufferRecComp * This, - /* [out] */ DWORD *pcSeconds); - - -void __RPC_STUB IStreamBufferRecComp_GetCurrentLength_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IStreamBufferRecComp_Close_Proxy( - IStreamBufferRecComp * This); - - -void __RPC_STUB IStreamBufferRecComp_Close_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IStreamBufferRecComp_Cancel_Proxy( - IStreamBufferRecComp * This); - - -void __RPC_STUB IStreamBufferRecComp_Cancel_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IStreamBufferRecComp_INTERFACE_DEFINED__ */ - - -/* interface __MIDL_itf_sbe_0412 */ -/* [local] */ - -//////////////////////////////////////////////////////////////// -// -// List of pre-defined attributes -// -static const WCHAR g_wszStreamBufferRecordingDuration[] =L"Duration"; -static const WCHAR g_wszStreamBufferRecordingBitrate[] =L"Bitrate"; -static const WCHAR g_wszStreamBufferRecordingSeekable[] =L"Seekable"; -static const WCHAR g_wszStreamBufferRecordingStridable[] =L"Stridable"; -static const WCHAR g_wszStreamBufferRecordingBroadcast[] =L"Broadcast"; -static const WCHAR g_wszStreamBufferRecordingProtected[] =L"Is_Protected"; -static const WCHAR g_wszStreamBufferRecordingTrusted[] =L"Is_Trusted"; -static const WCHAR g_wszStreamBufferRecordingSignature_Name[] =L"Signature_Name"; -static const WCHAR g_wszStreamBufferRecordingHasAudio[] =L"HasAudio"; -static const WCHAR g_wszStreamBufferRecordingHasImage[] =L"HasImage"; -static const WCHAR g_wszStreamBufferRecordingHasScript[] =L"HasScript"; -static const WCHAR g_wszStreamBufferRecordingHasVideo[] =L"HasVideo"; -static const WCHAR g_wszStreamBufferRecordingCurrentBitrate[] =L"CurrentBitrate"; -static const WCHAR g_wszStreamBufferRecordingOptimalBitrate[] =L"OptimalBitrate"; -static const WCHAR g_wszStreamBufferRecordingHasAttachedImages[] =L"HasAttachedImages"; -static const WCHAR g_wszStreamBufferRecordingSkipBackward[] =L"Can_Skip_Backward"; -static const WCHAR g_wszStreamBufferRecordingSkipForward[] =L"Can_Skip_Forward"; -static const WCHAR g_wszStreamBufferRecordingNumberOfFrames[] =L"NumberOfFrames"; -static const WCHAR g_wszStreamBufferRecordingFileSize[] =L"FileSize"; -static const WCHAR g_wszStreamBufferRecordingHasArbitraryDataStream[] =L"HasArbitraryDataStream"; -static const WCHAR g_wszStreamBufferRecordingHasFileTransferStream[] =L"HasFileTransferStream"; - -//////////////////////////////////////////////////////////////// -// -// The content description object supports 5 basic attributes. -// -static const WCHAR g_wszStreamBufferRecordingTitle[] =L"Title"; -static const WCHAR g_wszStreamBufferRecordingAuthor[] =L"Author"; -static const WCHAR g_wszStreamBufferRecordingDescription[] =L"Description"; -static const WCHAR g_wszStreamBufferRecordingRating[] =L"Rating"; -static const WCHAR g_wszStreamBufferRecordingCopyright[] =L"Copyright"; - -//////////////////////////////////////////////////////////////// -// -// These attributes are used to configure DRM using IWMDRMWriter::SetDRMAttribute. -// -static const WCHAR *g_wszStreamBufferRecordingUse_DRM = L"Use_DRM"; -static const WCHAR *g_wszStreamBufferRecordingDRM_Flags = L"DRM_Flags"; -static const WCHAR *g_wszStreamBufferRecordingDRM_Level = L"DRM_Level"; - -//////////////////////////////////////////////////////////////// -// -// These are the additional attributes defined in the WM attribute -// namespace that give information about the content. -// -static const WCHAR g_wszStreamBufferRecordingAlbumTitle[] =L"WM/AlbumTitle"; -static const WCHAR g_wszStreamBufferRecordingTrack[] =L"WM/Track"; -static const WCHAR g_wszStreamBufferRecordingPromotionURL[] =L"WM/PromotionURL"; -static const WCHAR g_wszStreamBufferRecordingAlbumCoverURL[] =L"WM/AlbumCoverURL"; -static const WCHAR g_wszStreamBufferRecordingGenre[] =L"WM/Genre"; -static const WCHAR g_wszStreamBufferRecordingYear[] =L"WM/Year"; -static const WCHAR g_wszStreamBufferRecordingGenreID[] =L"WM/GenreID"; -static const WCHAR g_wszStreamBufferRecordingMCDI[] =L"WM/MCDI"; -static const WCHAR g_wszStreamBufferRecordingComposer[] =L"WM/Composer"; -static const WCHAR g_wszStreamBufferRecordingLyrics[] =L"WM/Lyrics"; -static const WCHAR g_wszStreamBufferRecordingTrackNumber[] =L"WM/TrackNumber"; -static const WCHAR g_wszStreamBufferRecordingToolName[] =L"WM/ToolName"; -static const WCHAR g_wszStreamBufferRecordingToolVersion[] =L"WM/ToolVersion"; -static const WCHAR g_wszStreamBufferRecordingIsVBR[] =L"IsVBR"; -static const WCHAR g_wszStreamBufferRecordingAlbumArtist[] =L"WM/AlbumArtist"; - -//////////////////////////////////////////////////////////////// -// -// These optional attributes may be used to give information -// about the branding of the content. -// -static const WCHAR g_wszStreamBufferRecordingBannerImageType[] =L"BannerImageType"; -static const WCHAR g_wszStreamBufferRecordingBannerImageData[] =L"BannerImageData"; -static const WCHAR g_wszStreamBufferRecordingBannerImageURL[] =L"BannerImageURL"; -static const WCHAR g_wszStreamBufferRecordingCopyrightURL[] =L"CopyrightURL"; -//////////////////////////////////////////////////////////////// -// -// Optional attributes, used to give information -// about video stream properties. -// -static const WCHAR g_wszStreamBufferRecordingAspectRatioX[] =L"AspectRatioX"; -static const WCHAR g_wszStreamBufferRecordingAspectRatioY[] =L"AspectRatioY"; -//////////////////////////////////////////////////////////////// -// -// The NSC file supports the following attributes. -// -static const WCHAR g_wszStreamBufferRecordingNSCName[] =L"NSC_Name"; -static const WCHAR g_wszStreamBufferRecordingNSCAddress[] =L"NSC_Address"; -static const WCHAR g_wszStreamBufferRecordingNSCPhone[] =L"NSC_Phone"; -static const WCHAR g_wszStreamBufferRecordingNSCEmail[] =L"NSC_Email"; -static const WCHAR g_wszStreamBufferRecordingNSCDescription[] =L"NSC_Description"; - -typedef /* [public][public][public][public][public][public] */ -enum __MIDL___MIDL_itf_sbe_0412_0001 - { 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; - - - -extern RPC_IF_HANDLE __MIDL_itf_sbe_0412_v0_0_c_ifspec; -extern RPC_IF_HANDLE __MIDL_itf_sbe_0412_v0_0_s_ifspec; - -#ifndef __IStreamBufferRecordingAttribute_INTERFACE_DEFINED__ -#define __IStreamBufferRecordingAttribute_INTERFACE_DEFINED__ - -/* interface IStreamBufferRecordingAttribute */ -/* [unique][uuid][object] */ - - -EXTERN_C const IID IID_IStreamBufferRecordingAttribute; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("16CA4E03-FE69-4705-BD41-5B7DFC0C95F3") - IStreamBufferRecordingAttribute : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE SetAttribute( - /* [in] */ ULONG ulReserved, - /* [in] */ LPCWSTR pszAttributeName, - /* [in] */ STREAMBUFFER_ATTR_DATATYPE StreamBufferAttributeType, - /* [in] */ BYTE *pbAttribute, - /* [in] */ WORD cbAttributeLength) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetAttributeCount( - /* [in] */ ULONG ulReserved, - /* [out] */ WORD *pcAttributes) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetAttributeByName( - /* [in] */ LPCWSTR pszAttributeName, - /* [in] */ ULONG *pulReserved, - /* [out] */ STREAMBUFFER_ATTR_DATATYPE *pStreamBufferAttributeType, - /* [out] */ BYTE *pbAttribute, - /* [out][in] */ WORD *pcbLength) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetAttributeByIndex( - /* [in] */ WORD wIndex, - /* [in] */ ULONG *pulReserved, - /* [out] */ WCHAR *pszAttributeName, - /* [out][in] */ WORD *pcchNameLength, - /* [out] */ STREAMBUFFER_ATTR_DATATYPE *pStreamBufferAttributeType, - /* [out] */ BYTE *pbAttribute, - /* [out][in] */ WORD *pcbLength) = 0; - - virtual HRESULT STDMETHODCALLTYPE EnumAttributes( - /* [out] */ IEnumStreamBufferRecordingAttrib **ppIEnumStreamBufferAttrib) = 0; - - }; - -#else /* C style interface */ - - typedef struct IStreamBufferRecordingAttributeVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IStreamBufferRecordingAttribute * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IStreamBufferRecordingAttribute * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IStreamBufferRecordingAttribute * This); - - HRESULT ( STDMETHODCALLTYPE *SetAttribute )( - IStreamBufferRecordingAttribute * This, - /* [in] */ ULONG ulReserved, - /* [in] */ LPCWSTR pszAttributeName, - /* [in] */ STREAMBUFFER_ATTR_DATATYPE StreamBufferAttributeType, - /* [in] */ BYTE *pbAttribute, - /* [in] */ WORD cbAttributeLength); - - HRESULT ( STDMETHODCALLTYPE *GetAttributeCount )( - IStreamBufferRecordingAttribute * This, - /* [in] */ ULONG ulReserved, - /* [out] */ WORD *pcAttributes); - - HRESULT ( STDMETHODCALLTYPE *GetAttributeByName )( - IStreamBufferRecordingAttribute * This, - /* [in] */ LPCWSTR pszAttributeName, - /* [in] */ ULONG *pulReserved, - /* [out] */ STREAMBUFFER_ATTR_DATATYPE *pStreamBufferAttributeType, - /* [out] */ BYTE *pbAttribute, - /* [out][in] */ WORD *pcbLength); - - HRESULT ( STDMETHODCALLTYPE *GetAttributeByIndex )( - IStreamBufferRecordingAttribute * This, - /* [in] */ WORD wIndex, - /* [in] */ ULONG *pulReserved, - /* [out] */ WCHAR *pszAttributeName, - /* [out][in] */ WORD *pcchNameLength, - /* [out] */ STREAMBUFFER_ATTR_DATATYPE *pStreamBufferAttributeType, - /* [out] */ BYTE *pbAttribute, - /* [out][in] */ WORD *pcbLength); - - HRESULT ( STDMETHODCALLTYPE *EnumAttributes )( - IStreamBufferRecordingAttribute * This, - /* [out] */ IEnumStreamBufferRecordingAttrib **ppIEnumStreamBufferAttrib); - - END_INTERFACE - } IStreamBufferRecordingAttributeVtbl; - - interface IStreamBufferRecordingAttribute - { - CONST_VTBL struct IStreamBufferRecordingAttributeVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IStreamBufferRecordingAttribute_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IStreamBufferRecordingAttribute_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IStreamBufferRecordingAttribute_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IStreamBufferRecordingAttribute_SetAttribute(This,ulReserved,pszAttributeName,StreamBufferAttributeType,pbAttribute,cbAttributeLength) \ - (This)->lpVtbl -> SetAttribute(This,ulReserved,pszAttributeName,StreamBufferAttributeType,pbAttribute,cbAttributeLength) - -#define IStreamBufferRecordingAttribute_GetAttributeCount(This,ulReserved,pcAttributes) \ - (This)->lpVtbl -> GetAttributeCount(This,ulReserved,pcAttributes) - -#define IStreamBufferRecordingAttribute_GetAttributeByName(This,pszAttributeName,pulReserved,pStreamBufferAttributeType,pbAttribute,pcbLength) \ - (This)->lpVtbl -> GetAttributeByName(This,pszAttributeName,pulReserved,pStreamBufferAttributeType,pbAttribute,pcbLength) - -#define IStreamBufferRecordingAttribute_GetAttributeByIndex(This,wIndex,pulReserved,pszAttributeName,pcchNameLength,pStreamBufferAttributeType,pbAttribute,pcbLength) \ - (This)->lpVtbl -> GetAttributeByIndex(This,wIndex,pulReserved,pszAttributeName,pcchNameLength,pStreamBufferAttributeType,pbAttribute,pcbLength) - -#define IStreamBufferRecordingAttribute_EnumAttributes(This,ppIEnumStreamBufferAttrib) \ - (This)->lpVtbl -> EnumAttributes(This,ppIEnumStreamBufferAttrib) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IStreamBufferRecordingAttribute_SetAttribute_Proxy( - IStreamBufferRecordingAttribute * This, - /* [in] */ ULONG ulReserved, - /* [in] */ LPCWSTR pszAttributeName, - /* [in] */ STREAMBUFFER_ATTR_DATATYPE StreamBufferAttributeType, - /* [in] */ BYTE *pbAttribute, - /* [in] */ WORD cbAttributeLength); - - -void __RPC_STUB IStreamBufferRecordingAttribute_SetAttribute_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IStreamBufferRecordingAttribute_GetAttributeCount_Proxy( - IStreamBufferRecordingAttribute * This, - /* [in] */ ULONG ulReserved, - /* [out] */ WORD *pcAttributes); - - -void __RPC_STUB IStreamBufferRecordingAttribute_GetAttributeCount_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IStreamBufferRecordingAttribute_GetAttributeByName_Proxy( - IStreamBufferRecordingAttribute * This, - /* [in] */ LPCWSTR pszAttributeName, - /* [in] */ ULONG *pulReserved, - /* [out] */ STREAMBUFFER_ATTR_DATATYPE *pStreamBufferAttributeType, - /* [out] */ BYTE *pbAttribute, - /* [out][in] */ WORD *pcbLength); - - -void __RPC_STUB IStreamBufferRecordingAttribute_GetAttributeByName_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IStreamBufferRecordingAttribute_GetAttributeByIndex_Proxy( - IStreamBufferRecordingAttribute * This, - /* [in] */ WORD wIndex, - /* [in] */ ULONG *pulReserved, - /* [out] */ WCHAR *pszAttributeName, - /* [out][in] */ WORD *pcchNameLength, - /* [out] */ STREAMBUFFER_ATTR_DATATYPE *pStreamBufferAttributeType, - /* [out] */ BYTE *pbAttribute, - /* [out][in] */ WORD *pcbLength); - - -void __RPC_STUB IStreamBufferRecordingAttribute_GetAttributeByIndex_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IStreamBufferRecordingAttribute_EnumAttributes_Proxy( - IStreamBufferRecordingAttribute * This, - /* [out] */ IEnumStreamBufferRecordingAttrib **ppIEnumStreamBufferAttrib); - - -void __RPC_STUB IStreamBufferRecordingAttribute_EnumAttributes_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IStreamBufferRecordingAttribute_INTERFACE_DEFINED__ */ - - -/* interface __MIDL_itf_sbe_0413 */ -/* [local] */ - -typedef /* [public][public] */ struct __MIDL___MIDL_itf_sbe_0413_0001 - { - LPWSTR pszName; - STREAMBUFFER_ATTR_DATATYPE StreamBufferAttributeType; - BYTE *pbAttribute; - WORD cbLength; - } STREAMBUFFER_ATTRIBUTE; - - - -extern RPC_IF_HANDLE __MIDL_itf_sbe_0413_v0_0_c_ifspec; -extern RPC_IF_HANDLE __MIDL_itf_sbe_0413_v0_0_s_ifspec; - -#ifndef __IEnumStreamBufferRecordingAttrib_INTERFACE_DEFINED__ -#define __IEnumStreamBufferRecordingAttrib_INTERFACE_DEFINED__ - -/* interface IEnumStreamBufferRecordingAttrib */ -/* [unique][uuid][object] */ - - -EXTERN_C const IID IID_IEnumStreamBufferRecordingAttrib; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("C18A9162-1E82-4142-8C73-5690FA62FE33") - IEnumStreamBufferRecordingAttrib : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE Next( - /* [in] */ ULONG cRequest, - /* [size_is][out][in] */ STREAMBUFFER_ATTRIBUTE *pStreamBufferAttribute, - /* [out] */ ULONG *pcReceived) = 0; - - virtual HRESULT STDMETHODCALLTYPE Skip( - /* [in] */ ULONG cRecords) = 0; - - virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0; - - virtual HRESULT STDMETHODCALLTYPE Clone( - /* [out] */ IEnumStreamBufferRecordingAttrib **ppIEnumStreamBufferAttrib) = 0; - - }; - -#else /* C style interface */ - - typedef struct IEnumStreamBufferRecordingAttribVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IEnumStreamBufferRecordingAttrib * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IEnumStreamBufferRecordingAttrib * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IEnumStreamBufferRecordingAttrib * This); - - HRESULT ( STDMETHODCALLTYPE *Next )( - IEnumStreamBufferRecordingAttrib * This, - /* [in] */ ULONG cRequest, - /* [size_is][out][in] */ STREAMBUFFER_ATTRIBUTE *pStreamBufferAttribute, - /* [out] */ ULONG *pcReceived); - - HRESULT ( STDMETHODCALLTYPE *Skip )( - IEnumStreamBufferRecordingAttrib * This, - /* [in] */ ULONG cRecords); - - HRESULT ( STDMETHODCALLTYPE *Reset )( - IEnumStreamBufferRecordingAttrib * This); - - HRESULT ( STDMETHODCALLTYPE *Clone )( - IEnumStreamBufferRecordingAttrib * This, - /* [out] */ IEnumStreamBufferRecordingAttrib **ppIEnumStreamBufferAttrib); - - END_INTERFACE - } IEnumStreamBufferRecordingAttribVtbl; - - interface IEnumStreamBufferRecordingAttrib - { - CONST_VTBL struct IEnumStreamBufferRecordingAttribVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IEnumStreamBufferRecordingAttrib_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IEnumStreamBufferRecordingAttrib_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IEnumStreamBufferRecordingAttrib_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IEnumStreamBufferRecordingAttrib_Next(This,cRequest,pStreamBufferAttribute,pcReceived) \ - (This)->lpVtbl -> Next(This,cRequest,pStreamBufferAttribute,pcReceived) - -#define IEnumStreamBufferRecordingAttrib_Skip(This,cRecords) \ - (This)->lpVtbl -> Skip(This,cRecords) - -#define IEnumStreamBufferRecordingAttrib_Reset(This) \ - (This)->lpVtbl -> Reset(This) - -#define IEnumStreamBufferRecordingAttrib_Clone(This,ppIEnumStreamBufferAttrib) \ - (This)->lpVtbl -> Clone(This,ppIEnumStreamBufferAttrib) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IEnumStreamBufferRecordingAttrib_Next_Proxy( - IEnumStreamBufferRecordingAttrib * This, - /* [in] */ ULONG cRequest, - /* [size_is][out][in] */ STREAMBUFFER_ATTRIBUTE *pStreamBufferAttribute, - /* [out] */ ULONG *pcReceived); - - -void __RPC_STUB IEnumStreamBufferRecordingAttrib_Next_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IEnumStreamBufferRecordingAttrib_Skip_Proxy( - IEnumStreamBufferRecordingAttrib * This, - /* [in] */ ULONG cRecords); - - -void __RPC_STUB IEnumStreamBufferRecordingAttrib_Skip_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IEnumStreamBufferRecordingAttrib_Reset_Proxy( - IEnumStreamBufferRecordingAttrib * This); - - -void __RPC_STUB IEnumStreamBufferRecordingAttrib_Reset_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IEnumStreamBufferRecordingAttrib_Clone_Proxy( - IEnumStreamBufferRecordingAttrib * This, - /* [out] */ IEnumStreamBufferRecordingAttrib **ppIEnumStreamBufferAttrib); - - -void __RPC_STUB IEnumStreamBufferRecordingAttrib_Clone_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IEnumStreamBufferRecordingAttrib_INTERFACE_DEFINED__ */ - - -#ifndef __IStreamBufferConfigure_INTERFACE_DEFINED__ -#define __IStreamBufferConfigure_INTERFACE_DEFINED__ - -/* interface IStreamBufferConfigure */ -/* [unique][uuid][object] */ - - -EXTERN_C const IID IID_IStreamBufferConfigure; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("ce14dfae-4098-4af7-bbf7-d6511f835414") - IStreamBufferConfigure : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE SetDirectory( - /* [in] */ LPCWSTR pszDirectoryName) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetDirectory( - /* [out] */ LPWSTR *ppszDirectoryName) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetBackingFileCount( - /* [in] */ DWORD dwMin, - /* [in] */ DWORD dwMax) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetBackingFileCount( - /* [out] */ DWORD *pdwMin, - /* [out] */ DWORD *pdwMax) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetBackingFileDuration( - /* [in] */ DWORD dwSeconds) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetBackingFileDuration( - /* [out] */ DWORD *pdwSeconds) = 0; - - }; - -#else /* C style interface */ - - typedef struct IStreamBufferConfigureVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IStreamBufferConfigure * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IStreamBufferConfigure * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IStreamBufferConfigure * This); - - HRESULT ( STDMETHODCALLTYPE *SetDirectory )( - IStreamBufferConfigure * This, - /* [in] */ LPCWSTR pszDirectoryName); - - HRESULT ( STDMETHODCALLTYPE *GetDirectory )( - IStreamBufferConfigure * This, - /* [out] */ LPWSTR *ppszDirectoryName); - - HRESULT ( STDMETHODCALLTYPE *SetBackingFileCount )( - IStreamBufferConfigure * This, - /* [in] */ DWORD dwMin, - /* [in] */ DWORD dwMax); - - HRESULT ( STDMETHODCALLTYPE *GetBackingFileCount )( - IStreamBufferConfigure * This, - /* [out] */ DWORD *pdwMin, - /* [out] */ DWORD *pdwMax); - - HRESULT ( STDMETHODCALLTYPE *SetBackingFileDuration )( - IStreamBufferConfigure * This, - /* [in] */ DWORD dwSeconds); - - HRESULT ( STDMETHODCALLTYPE *GetBackingFileDuration )( - IStreamBufferConfigure * This, - /* [out] */ DWORD *pdwSeconds); - - END_INTERFACE - } IStreamBufferConfigureVtbl; - - interface IStreamBufferConfigure - { - CONST_VTBL struct IStreamBufferConfigureVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IStreamBufferConfigure_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IStreamBufferConfigure_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IStreamBufferConfigure_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IStreamBufferConfigure_SetDirectory(This,pszDirectoryName) \ - (This)->lpVtbl -> SetDirectory(This,pszDirectoryName) - -#define IStreamBufferConfigure_GetDirectory(This,ppszDirectoryName) \ - (This)->lpVtbl -> GetDirectory(This,ppszDirectoryName) - -#define IStreamBufferConfigure_SetBackingFileCount(This,dwMin,dwMax) \ - (This)->lpVtbl -> SetBackingFileCount(This,dwMin,dwMax) - -#define IStreamBufferConfigure_GetBackingFileCount(This,pdwMin,pdwMax) \ - (This)->lpVtbl -> GetBackingFileCount(This,pdwMin,pdwMax) - -#define IStreamBufferConfigure_SetBackingFileDuration(This,dwSeconds) \ - (This)->lpVtbl -> SetBackingFileDuration(This,dwSeconds) - -#define IStreamBufferConfigure_GetBackingFileDuration(This,pdwSeconds) \ - (This)->lpVtbl -> GetBackingFileDuration(This,pdwSeconds) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IStreamBufferConfigure_SetDirectory_Proxy( - IStreamBufferConfigure * This, - /* [in] */ LPCWSTR pszDirectoryName); - - -void __RPC_STUB IStreamBufferConfigure_SetDirectory_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IStreamBufferConfigure_GetDirectory_Proxy( - IStreamBufferConfigure * This, - /* [out] */ LPWSTR *ppszDirectoryName); - - -void __RPC_STUB IStreamBufferConfigure_GetDirectory_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IStreamBufferConfigure_SetBackingFileCount_Proxy( - IStreamBufferConfigure * This, - /* [in] */ DWORD dwMin, - /* [in] */ DWORD dwMax); - - -void __RPC_STUB IStreamBufferConfigure_SetBackingFileCount_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IStreamBufferConfigure_GetBackingFileCount_Proxy( - IStreamBufferConfigure * This, - /* [out] */ DWORD *pdwMin, - /* [out] */ DWORD *pdwMax); - - -void __RPC_STUB IStreamBufferConfigure_GetBackingFileCount_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IStreamBufferConfigure_SetBackingFileDuration_Proxy( - IStreamBufferConfigure * This, - /* [in] */ DWORD dwSeconds); - - -void __RPC_STUB IStreamBufferConfigure_SetBackingFileDuration_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IStreamBufferConfigure_GetBackingFileDuration_Proxy( - IStreamBufferConfigure * This, - /* [out] */ DWORD *pdwSeconds); - - -void __RPC_STUB IStreamBufferConfigure_GetBackingFileDuration_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IStreamBufferConfigure_INTERFACE_DEFINED__ */ - - -#ifndef __IStreamBufferMediaSeeking_INTERFACE_DEFINED__ -#define __IStreamBufferMediaSeeking_INTERFACE_DEFINED__ - -/* interface IStreamBufferMediaSeeking */ -/* [unique][uuid][object] */ - - -EXTERN_C const IID IID_IStreamBufferMediaSeeking; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("f61f5c26-863d-4afa-b0ba-2f81dc978596") - IStreamBufferMediaSeeking : public IMediaSeeking - { - public: - }; - -#else /* C style interface */ - - typedef struct IStreamBufferMediaSeekingVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IStreamBufferMediaSeeking * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IStreamBufferMediaSeeking * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IStreamBufferMediaSeeking * This); - - HRESULT ( STDMETHODCALLTYPE *GetCapabilities )( - IStreamBufferMediaSeeking * This, - /* [out] */ DWORD *pCapabilities); - - HRESULT ( STDMETHODCALLTYPE *CheckCapabilities )( - IStreamBufferMediaSeeking * This, - /* [out][in] */ DWORD *pCapabilities); - - HRESULT ( STDMETHODCALLTYPE *IsFormatSupported )( - IStreamBufferMediaSeeking * This, - /* [in] */ const GUID *pFormat); - - HRESULT ( STDMETHODCALLTYPE *QueryPreferredFormat )( - IStreamBufferMediaSeeking * This, - /* [out] */ GUID *pFormat); - - HRESULT ( STDMETHODCALLTYPE *GetTimeFormat )( - IStreamBufferMediaSeeking * This, - /* [out] */ GUID *pFormat); - - HRESULT ( STDMETHODCALLTYPE *IsUsingTimeFormat )( - IStreamBufferMediaSeeking * This, - /* [in] */ const GUID *pFormat); - - HRESULT ( STDMETHODCALLTYPE *SetTimeFormat )( - IStreamBufferMediaSeeking * This, - /* [in] */ const GUID *pFormat); - - HRESULT ( STDMETHODCALLTYPE *GetDuration )( - IStreamBufferMediaSeeking * This, - /* [out] */ LONGLONG *pDuration); - - HRESULT ( STDMETHODCALLTYPE *GetStopPosition )( - IStreamBufferMediaSeeking * This, - /* [out] */ LONGLONG *pStop); - - HRESULT ( STDMETHODCALLTYPE *GetCurrentPosition )( - IStreamBufferMediaSeeking * This, - /* [out] */ LONGLONG *pCurrent); - - HRESULT ( STDMETHODCALLTYPE *ConvertTimeFormat )( - IStreamBufferMediaSeeking * This, - /* [out] */ LONGLONG *pTarget, - /* [in] */ const GUID *pTargetFormat, - /* [in] */ LONGLONG Source, - /* [in] */ const GUID *pSourceFormat); - - HRESULT ( STDMETHODCALLTYPE *SetPositions )( - IStreamBufferMediaSeeking * This, - /* [out][in] */ LONGLONG *pCurrent, - /* [in] */ DWORD dwCurrentFlags, - /* [out][in] */ LONGLONG *pStop, - /* [in] */ DWORD dwStopFlags); - - HRESULT ( STDMETHODCALLTYPE *GetPositions )( - IStreamBufferMediaSeeking * This, - /* [out] */ LONGLONG *pCurrent, - /* [out] */ LONGLONG *pStop); - - HRESULT ( STDMETHODCALLTYPE *GetAvailable )( - IStreamBufferMediaSeeking * This, - /* [out] */ LONGLONG *pEarliest, - /* [out] */ LONGLONG *pLatest); - - HRESULT ( STDMETHODCALLTYPE *SetRate )( - IStreamBufferMediaSeeking * This, - /* [in] */ double dRate); - - HRESULT ( STDMETHODCALLTYPE *GetRate )( - IStreamBufferMediaSeeking * This, - /* [out] */ double *pdRate); - - HRESULT ( STDMETHODCALLTYPE *GetPreroll )( - IStreamBufferMediaSeeking * This, - /* [out] */ LONGLONG *pllPreroll); - - END_INTERFACE - } IStreamBufferMediaSeekingVtbl; - - interface IStreamBufferMediaSeeking - { - CONST_VTBL struct IStreamBufferMediaSeekingVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IStreamBufferMediaSeeking_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IStreamBufferMediaSeeking_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IStreamBufferMediaSeeking_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IStreamBufferMediaSeeking_GetCapabilities(This,pCapabilities) \ - (This)->lpVtbl -> GetCapabilities(This,pCapabilities) - -#define IStreamBufferMediaSeeking_CheckCapabilities(This,pCapabilities) \ - (This)->lpVtbl -> CheckCapabilities(This,pCapabilities) - -#define IStreamBufferMediaSeeking_IsFormatSupported(This,pFormat) \ - (This)->lpVtbl -> IsFormatSupported(This,pFormat) - -#define IStreamBufferMediaSeeking_QueryPreferredFormat(This,pFormat) \ - (This)->lpVtbl -> QueryPreferredFormat(This,pFormat) - -#define IStreamBufferMediaSeeking_GetTimeFormat(This,pFormat) \ - (This)->lpVtbl -> GetTimeFormat(This,pFormat) - -#define IStreamBufferMediaSeeking_IsUsingTimeFormat(This,pFormat) \ - (This)->lpVtbl -> IsUsingTimeFormat(This,pFormat) - -#define IStreamBufferMediaSeeking_SetTimeFormat(This,pFormat) \ - (This)->lpVtbl -> SetTimeFormat(This,pFormat) - -#define IStreamBufferMediaSeeking_GetDuration(This,pDuration) \ - (This)->lpVtbl -> GetDuration(This,pDuration) - -#define IStreamBufferMediaSeeking_GetStopPosition(This,pStop) \ - (This)->lpVtbl -> GetStopPosition(This,pStop) - -#define IStreamBufferMediaSeeking_GetCurrentPosition(This,pCurrent) \ - (This)->lpVtbl -> GetCurrentPosition(This,pCurrent) - -#define IStreamBufferMediaSeeking_ConvertTimeFormat(This,pTarget,pTargetFormat,Source,pSourceFormat) \ - (This)->lpVtbl -> ConvertTimeFormat(This,pTarget,pTargetFormat,Source,pSourceFormat) - -#define IStreamBufferMediaSeeking_SetPositions(This,pCurrent,dwCurrentFlags,pStop,dwStopFlags) \ - (This)->lpVtbl -> SetPositions(This,pCurrent,dwCurrentFlags,pStop,dwStopFlags) - -#define IStreamBufferMediaSeeking_GetPositions(This,pCurrent,pStop) \ - (This)->lpVtbl -> GetPositions(This,pCurrent,pStop) - -#define IStreamBufferMediaSeeking_GetAvailable(This,pEarliest,pLatest) \ - (This)->lpVtbl -> GetAvailable(This,pEarliest,pLatest) - -#define IStreamBufferMediaSeeking_SetRate(This,dRate) \ - (This)->lpVtbl -> SetRate(This,dRate) - -#define IStreamBufferMediaSeeking_GetRate(This,pdRate) \ - (This)->lpVtbl -> GetRate(This,pdRate) - -#define IStreamBufferMediaSeeking_GetPreroll(This,pllPreroll) \ - (This)->lpVtbl -> GetPreroll(This,pllPreroll) - - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __IStreamBufferMediaSeeking_INTERFACE_DEFINED__ */ - - -/* interface __MIDL_itf_sbe_0416 */ -/* [local] */ - -#define STREAMBUFFER_EC_BASE 0x0326 -enum { - // timehole event - // param1 = timehole stream offset ms - // param1 = timehole size ms - STREAMBUFFER_EC_TIMEHOLE = STREAMBUFFER_EC_BASE, - - STREAMBUFFER_EC_STALE_DATA_READ, - - STREAMBUFFER_EC_STALE_FILE_DELETED, - STREAMBUFFER_EC_CONTENT_BECOMING_STALE, - STREAMBUFFER_EC_WRITE_FAILURE, - // - // unexpected read failure - // param1 = HRESULT failure - // param2 = undefined - STREAMBUFFER_EC_READ_FAILURE, - // - // playback rate change - // param1 = old_playback_rate * 10000 e.g. 2x is 20000 - // param2 = new_playback_rate * 10000 - STREAMBUFFER_EC_RATE_CHANGED, -} ; - - -extern RPC_IF_HANDLE __MIDL_itf_sbe_0416_v0_0_c_ifspec; -extern RPC_IF_HANDLE __MIDL_itf_sbe_0416_v0_0_s_ifspec; - -/* Additional Prototypes for ALL interfaces */ - -/* end of Additional Prototypes */ - -#ifdef __cplusplus -} -#endif - -#endif - - + +#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 sbe.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 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 +#endif // __RPCNDR_H_VERSION__ + +#ifndef COM_NO_WINDOWS_H +#include "windows.h" +#include "ole2.h" +#endif /*COM_NO_WINDOWS_H*/ + +#ifndef __sbe_h__ +#define __sbe_h__ + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#pragma once +#endif + +/* Forward Declarations */ + +#ifndef __IStreamBufferInitialize_FWD_DEFINED__ +#define __IStreamBufferInitialize_FWD_DEFINED__ +typedef interface IStreamBufferInitialize IStreamBufferInitialize; +#endif /* __IStreamBufferInitialize_FWD_DEFINED__ */ + + +#ifndef __IStreamBufferSink_FWD_DEFINED__ +#define __IStreamBufferSink_FWD_DEFINED__ +typedef interface IStreamBufferSink IStreamBufferSink; +#endif /* __IStreamBufferSink_FWD_DEFINED__ */ + + +#ifndef __IStreamBufferSource_FWD_DEFINED__ +#define __IStreamBufferSource_FWD_DEFINED__ +typedef interface IStreamBufferSource IStreamBufferSource; +#endif /* __IStreamBufferSource_FWD_DEFINED__ */ + + +#ifndef __IStreamBufferRecordControl_FWD_DEFINED__ +#define __IStreamBufferRecordControl_FWD_DEFINED__ +typedef interface IStreamBufferRecordControl IStreamBufferRecordControl; +#endif /* __IStreamBufferRecordControl_FWD_DEFINED__ */ + + +#ifndef __IStreamBufferRecComp_FWD_DEFINED__ +#define __IStreamBufferRecComp_FWD_DEFINED__ +typedef interface IStreamBufferRecComp IStreamBufferRecComp; +#endif /* __IStreamBufferRecComp_FWD_DEFINED__ */ + + +#ifndef __IStreamBufferRecordingAttribute_FWD_DEFINED__ +#define __IStreamBufferRecordingAttribute_FWD_DEFINED__ +typedef interface IStreamBufferRecordingAttribute IStreamBufferRecordingAttribute; +#endif /* __IStreamBufferRecordingAttribute_FWD_DEFINED__ */ + + +#ifndef __IEnumStreamBufferRecordingAttrib_FWD_DEFINED__ +#define __IEnumStreamBufferRecordingAttrib_FWD_DEFINED__ +typedef interface IEnumStreamBufferRecordingAttrib IEnumStreamBufferRecordingAttrib; +#endif /* __IEnumStreamBufferRecordingAttrib_FWD_DEFINED__ */ + + +#ifndef __IStreamBufferConfigure_FWD_DEFINED__ +#define __IStreamBufferConfigure_FWD_DEFINED__ +typedef interface IStreamBufferConfigure IStreamBufferConfigure; +#endif /* __IStreamBufferConfigure_FWD_DEFINED__ */ + + +#ifndef __IStreamBufferMediaSeeking_FWD_DEFINED__ +#define __IStreamBufferMediaSeeking_FWD_DEFINED__ +typedef interface IStreamBufferMediaSeeking IStreamBufferMediaSeeking; +#endif /* __IStreamBufferMediaSeeking_FWD_DEFINED__ */ + + +/* header files for imported files */ +#include "unknwn.h" +#include "objidl.h" +#include "strmif.h" + +#ifdef __cplusplus +extern "C"{ +#endif + +void * __RPC_USER MIDL_user_allocate(size_t); +void __RPC_USER MIDL_user_free( void * ); + +/* interface __MIDL_itf_sbe_0000 */ +/* [local] */ + + + + + + + + + + + + +extern RPC_IF_HANDLE __MIDL_itf_sbe_0000_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_sbe_0000_v0_0_s_ifspec; + +#ifndef __IStreamBufferInitialize_INTERFACE_DEFINED__ +#define __IStreamBufferInitialize_INTERFACE_DEFINED__ + +/* interface IStreamBufferInitialize */ +/* [local][unique][uuid][object] */ + + +EXTERN_C const IID IID_IStreamBufferInitialize; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("9ce50f2d-6ba7-40fb-a034-50b1a674ec78") + IStreamBufferInitialize : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE SetHKEY( + /* [in] */ HKEY hkeyRoot) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetSIDs( + /* [in] */ DWORD cSIDs, + /* [size_is][in] */ PSID *ppSID) = 0; + + }; + +#else /* C style interface */ + + typedef struct IStreamBufferInitializeVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IStreamBufferInitialize * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IStreamBufferInitialize * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IStreamBufferInitialize * This); + + HRESULT ( STDMETHODCALLTYPE *SetHKEY )( + IStreamBufferInitialize * This, + /* [in] */ HKEY hkeyRoot); + + HRESULT ( STDMETHODCALLTYPE *SetSIDs )( + IStreamBufferInitialize * This, + /* [in] */ DWORD cSIDs, + /* [size_is][in] */ PSID *ppSID); + + END_INTERFACE + } IStreamBufferInitializeVtbl; + + interface IStreamBufferInitialize + { + CONST_VTBL struct IStreamBufferInitializeVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IStreamBufferInitialize_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IStreamBufferInitialize_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IStreamBufferInitialize_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IStreamBufferInitialize_SetHKEY(This,hkeyRoot) \ + (This)->lpVtbl -> SetHKEY(This,hkeyRoot) + +#define IStreamBufferInitialize_SetSIDs(This,cSIDs,ppSID) \ + (This)->lpVtbl -> SetSIDs(This,cSIDs,ppSID) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IStreamBufferInitialize_SetHKEY_Proxy( + IStreamBufferInitialize * This, + /* [in] */ HKEY hkeyRoot); + + +void __RPC_STUB IStreamBufferInitialize_SetHKEY_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IStreamBufferInitialize_SetSIDs_Proxy( + IStreamBufferInitialize * This, + /* [in] */ DWORD cSIDs, + /* [size_is][in] */ PSID *ppSID); + + +void __RPC_STUB IStreamBufferInitialize_SetSIDs_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IStreamBufferInitialize_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_sbe_0408 */ +/* [local] */ + + +enum __MIDL___MIDL_itf_sbe_0408_0001 + { RECORDING_TYPE_CONTENT = 0, + RECORDING_TYPE_REFERENCE = RECORDING_TYPE_CONTENT + 1 + } ; + + +extern RPC_IF_HANDLE __MIDL_itf_sbe_0408_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_sbe_0408_v0_0_s_ifspec; + +#ifndef __IStreamBufferSink_INTERFACE_DEFINED__ +#define __IStreamBufferSink_INTERFACE_DEFINED__ + +/* interface IStreamBufferSink */ +/* [unique][uuid][object] */ + + +EXTERN_C const IID IID_IStreamBufferSink; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("afd1f242-7efd-45ee-ba4e-407a25c9a77a") + IStreamBufferSink : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE LockProfile( + /* [in] */ LPCWSTR pszStreamBufferFilename) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreateRecorder( + /* [in] */ LPCWSTR pszFilename, + /* [in] */ DWORD dwRecordType, + /* [out] */ IUnknown **pRecordingIUnknown) = 0; + + virtual HRESULT STDMETHODCALLTYPE IsProfileLocked( void) = 0; + + }; + +#else /* C style interface */ + + typedef struct IStreamBufferSinkVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IStreamBufferSink * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IStreamBufferSink * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IStreamBufferSink * This); + + HRESULT ( STDMETHODCALLTYPE *LockProfile )( + IStreamBufferSink * This, + /* [in] */ LPCWSTR pszStreamBufferFilename); + + HRESULT ( STDMETHODCALLTYPE *CreateRecorder )( + IStreamBufferSink * This, + /* [in] */ LPCWSTR pszFilename, + /* [in] */ DWORD dwRecordType, + /* [out] */ IUnknown **pRecordingIUnknown); + + HRESULT ( STDMETHODCALLTYPE *IsProfileLocked )( + IStreamBufferSink * This); + + END_INTERFACE + } IStreamBufferSinkVtbl; + + interface IStreamBufferSink + { + CONST_VTBL struct IStreamBufferSinkVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IStreamBufferSink_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IStreamBufferSink_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IStreamBufferSink_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IStreamBufferSink_LockProfile(This,pszStreamBufferFilename) \ + (This)->lpVtbl -> LockProfile(This,pszStreamBufferFilename) + +#define IStreamBufferSink_CreateRecorder(This,pszFilename,dwRecordType,pRecordingIUnknown) \ + (This)->lpVtbl -> CreateRecorder(This,pszFilename,dwRecordType,pRecordingIUnknown) + +#define IStreamBufferSink_IsProfileLocked(This) \ + (This)->lpVtbl -> IsProfileLocked(This) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IStreamBufferSink_LockProfile_Proxy( + IStreamBufferSink * This, + /* [in] */ LPCWSTR pszStreamBufferFilename); + + +void __RPC_STUB IStreamBufferSink_LockProfile_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IStreamBufferSink_CreateRecorder_Proxy( + IStreamBufferSink * This, + /* [in] */ LPCWSTR pszFilename, + /* [in] */ DWORD dwRecordType, + /* [out] */ IUnknown **pRecordingIUnknown); + + +void __RPC_STUB IStreamBufferSink_CreateRecorder_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IStreamBufferSink_IsProfileLocked_Proxy( + IStreamBufferSink * This); + + +void __RPC_STUB IStreamBufferSink_IsProfileLocked_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IStreamBufferSink_INTERFACE_DEFINED__ */ + + +#ifndef __IStreamBufferSource_INTERFACE_DEFINED__ +#define __IStreamBufferSource_INTERFACE_DEFINED__ + +/* interface IStreamBufferSource */ +/* [unique][uuid][object] */ + + +EXTERN_C const IID IID_IStreamBufferSource; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("1c5bd776-6ced-4f44-8164-5eab0e98db12") + IStreamBufferSource : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE SetStreamSink( + /* [in] */ IStreamBufferSink *pIStreamBufferSink) = 0; + + }; + +#else /* C style interface */ + + typedef struct IStreamBufferSourceVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IStreamBufferSource * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IStreamBufferSource * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IStreamBufferSource * This); + + HRESULT ( STDMETHODCALLTYPE *SetStreamSink )( + IStreamBufferSource * This, + /* [in] */ IStreamBufferSink *pIStreamBufferSink); + + END_INTERFACE + } IStreamBufferSourceVtbl; + + interface IStreamBufferSource + { + CONST_VTBL struct IStreamBufferSourceVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IStreamBufferSource_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IStreamBufferSource_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IStreamBufferSource_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IStreamBufferSource_SetStreamSink(This,pIStreamBufferSink) \ + (This)->lpVtbl -> SetStreamSink(This,pIStreamBufferSink) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IStreamBufferSource_SetStreamSink_Proxy( + IStreamBufferSource * This, + /* [in] */ IStreamBufferSink *pIStreamBufferSink); + + +void __RPC_STUB IStreamBufferSource_SetStreamSink_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IStreamBufferSource_INTERFACE_DEFINED__ */ + + +#ifndef __IStreamBufferRecordControl_INTERFACE_DEFINED__ +#define __IStreamBufferRecordControl_INTERFACE_DEFINED__ + +/* interface IStreamBufferRecordControl */ +/* [unique][uuid][object] */ + + +EXTERN_C const IID IID_IStreamBufferRecordControl; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("ba9b6c99-f3c7-4ff2-92db-cfdd4851bf31") + IStreamBufferRecordControl : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE Start( + /* [out][in] */ REFERENCE_TIME *prtStart) = 0; + + virtual HRESULT STDMETHODCALLTYPE Stop( + /* [in] */ REFERENCE_TIME rtStop) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetRecordingStatus( + /* [out] */ HRESULT *phResult, + /* [out] */ BOOL *pbStarted, + /* [out] */ BOOL *pbStopped) = 0; + + }; + +#else /* C style interface */ + + typedef struct IStreamBufferRecordControlVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IStreamBufferRecordControl * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IStreamBufferRecordControl * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IStreamBufferRecordControl * This); + + HRESULT ( STDMETHODCALLTYPE *Start )( + IStreamBufferRecordControl * This, + /* [out][in] */ REFERENCE_TIME *prtStart); + + HRESULT ( STDMETHODCALLTYPE *Stop )( + IStreamBufferRecordControl * This, + /* [in] */ REFERENCE_TIME rtStop); + + HRESULT ( STDMETHODCALLTYPE *GetRecordingStatus )( + IStreamBufferRecordControl * This, + /* [out] */ HRESULT *phResult, + /* [out] */ BOOL *pbStarted, + /* [out] */ BOOL *pbStopped); + + END_INTERFACE + } IStreamBufferRecordControlVtbl; + + interface IStreamBufferRecordControl + { + CONST_VTBL struct IStreamBufferRecordControlVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IStreamBufferRecordControl_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IStreamBufferRecordControl_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IStreamBufferRecordControl_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IStreamBufferRecordControl_Start(This,prtStart) \ + (This)->lpVtbl -> Start(This,prtStart) + +#define IStreamBufferRecordControl_Stop(This,rtStop) \ + (This)->lpVtbl -> Stop(This,rtStop) + +#define IStreamBufferRecordControl_GetRecordingStatus(This,phResult,pbStarted,pbStopped) \ + (This)->lpVtbl -> GetRecordingStatus(This,phResult,pbStarted,pbStopped) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IStreamBufferRecordControl_Start_Proxy( + IStreamBufferRecordControl * This, + /* [out][in] */ REFERENCE_TIME *prtStart); + + +void __RPC_STUB IStreamBufferRecordControl_Start_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IStreamBufferRecordControl_Stop_Proxy( + IStreamBufferRecordControl * This, + /* [in] */ REFERENCE_TIME rtStop); + + +void __RPC_STUB IStreamBufferRecordControl_Stop_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IStreamBufferRecordControl_GetRecordingStatus_Proxy( + IStreamBufferRecordControl * This, + /* [out] */ HRESULT *phResult, + /* [out] */ BOOL *pbStarted, + /* [out] */ BOOL *pbStopped); + + +void __RPC_STUB IStreamBufferRecordControl_GetRecordingStatus_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IStreamBufferRecordControl_INTERFACE_DEFINED__ */ + + +#ifndef __IStreamBufferRecComp_INTERFACE_DEFINED__ +#define __IStreamBufferRecComp_INTERFACE_DEFINED__ + +/* interface IStreamBufferRecComp */ +/* [unique][uuid][object] */ + + +EXTERN_C const IID IID_IStreamBufferRecComp; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("9E259A9B-8815-42ae-B09F-221970B154FD") + IStreamBufferRecComp : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE Initialize( + /* [in] */ LPCWSTR pszTargetFilename, + /* [in] */ LPCWSTR pszSBRecProfileRef) = 0; + + virtual HRESULT STDMETHODCALLTYPE Append( + /* [in] */ LPCWSTR pszSBRecording) = 0; + + virtual HRESULT STDMETHODCALLTYPE AppendEx( + /* [in] */ LPCWSTR pszSBRecording, + /* [in] */ REFERENCE_TIME rtStart, + /* [in] */ REFERENCE_TIME rtStop) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetCurrentLength( + /* [out] */ DWORD *pcSeconds) = 0; + + virtual HRESULT STDMETHODCALLTYPE Close( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE Cancel( void) = 0; + + }; + +#else /* C style interface */ + + typedef struct IStreamBufferRecCompVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IStreamBufferRecComp * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IStreamBufferRecComp * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IStreamBufferRecComp * This); + + HRESULT ( STDMETHODCALLTYPE *Initialize )( + IStreamBufferRecComp * This, + /* [in] */ LPCWSTR pszTargetFilename, + /* [in] */ LPCWSTR pszSBRecProfileRef); + + HRESULT ( STDMETHODCALLTYPE *Append )( + IStreamBufferRecComp * This, + /* [in] */ LPCWSTR pszSBRecording); + + HRESULT ( STDMETHODCALLTYPE *AppendEx )( + IStreamBufferRecComp * This, + /* [in] */ LPCWSTR pszSBRecording, + /* [in] */ REFERENCE_TIME rtStart, + /* [in] */ REFERENCE_TIME rtStop); + + HRESULT ( STDMETHODCALLTYPE *GetCurrentLength )( + IStreamBufferRecComp * This, + /* [out] */ DWORD *pcSeconds); + + HRESULT ( STDMETHODCALLTYPE *Close )( + IStreamBufferRecComp * This); + + HRESULT ( STDMETHODCALLTYPE *Cancel )( + IStreamBufferRecComp * This); + + END_INTERFACE + } IStreamBufferRecCompVtbl; + + interface IStreamBufferRecComp + { + CONST_VTBL struct IStreamBufferRecCompVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IStreamBufferRecComp_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IStreamBufferRecComp_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IStreamBufferRecComp_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IStreamBufferRecComp_Initialize(This,pszTargetFilename,pszSBRecProfileRef) \ + (This)->lpVtbl -> Initialize(This,pszTargetFilename,pszSBRecProfileRef) + +#define IStreamBufferRecComp_Append(This,pszSBRecording) \ + (This)->lpVtbl -> Append(This,pszSBRecording) + +#define IStreamBufferRecComp_AppendEx(This,pszSBRecording,rtStart,rtStop) \ + (This)->lpVtbl -> AppendEx(This,pszSBRecording,rtStart,rtStop) + +#define IStreamBufferRecComp_GetCurrentLength(This,pcSeconds) \ + (This)->lpVtbl -> GetCurrentLength(This,pcSeconds) + +#define IStreamBufferRecComp_Close(This) \ + (This)->lpVtbl -> Close(This) + +#define IStreamBufferRecComp_Cancel(This) \ + (This)->lpVtbl -> Cancel(This) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IStreamBufferRecComp_Initialize_Proxy( + IStreamBufferRecComp * This, + /* [in] */ LPCWSTR pszTargetFilename, + /* [in] */ LPCWSTR pszSBRecProfileRef); + + +void __RPC_STUB IStreamBufferRecComp_Initialize_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IStreamBufferRecComp_Append_Proxy( + IStreamBufferRecComp * This, + /* [in] */ LPCWSTR pszSBRecording); + + +void __RPC_STUB IStreamBufferRecComp_Append_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IStreamBufferRecComp_AppendEx_Proxy( + IStreamBufferRecComp * This, + /* [in] */ LPCWSTR pszSBRecording, + /* [in] */ REFERENCE_TIME rtStart, + /* [in] */ REFERENCE_TIME rtStop); + + +void __RPC_STUB IStreamBufferRecComp_AppendEx_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IStreamBufferRecComp_GetCurrentLength_Proxy( + IStreamBufferRecComp * This, + /* [out] */ DWORD *pcSeconds); + + +void __RPC_STUB IStreamBufferRecComp_GetCurrentLength_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IStreamBufferRecComp_Close_Proxy( + IStreamBufferRecComp * This); + + +void __RPC_STUB IStreamBufferRecComp_Close_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IStreamBufferRecComp_Cancel_Proxy( + IStreamBufferRecComp * This); + + +void __RPC_STUB IStreamBufferRecComp_Cancel_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IStreamBufferRecComp_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_sbe_0412 */ +/* [local] */ + +//////////////////////////////////////////////////////////////// +// +// List of pre-defined attributes +// +static const WCHAR g_wszStreamBufferRecordingDuration[] =L"Duration"; +static const WCHAR g_wszStreamBufferRecordingBitrate[] =L"Bitrate"; +static const WCHAR g_wszStreamBufferRecordingSeekable[] =L"Seekable"; +static const WCHAR g_wszStreamBufferRecordingStridable[] =L"Stridable"; +static const WCHAR g_wszStreamBufferRecordingBroadcast[] =L"Broadcast"; +static const WCHAR g_wszStreamBufferRecordingProtected[] =L"Is_Protected"; +static const WCHAR g_wszStreamBufferRecordingTrusted[] =L"Is_Trusted"; +static const WCHAR g_wszStreamBufferRecordingSignature_Name[] =L"Signature_Name"; +static const WCHAR g_wszStreamBufferRecordingHasAudio[] =L"HasAudio"; +static const WCHAR g_wszStreamBufferRecordingHasImage[] =L"HasImage"; +static const WCHAR g_wszStreamBufferRecordingHasScript[] =L"HasScript"; +static const WCHAR g_wszStreamBufferRecordingHasVideo[] =L"HasVideo"; +static const WCHAR g_wszStreamBufferRecordingCurrentBitrate[] =L"CurrentBitrate"; +static const WCHAR g_wszStreamBufferRecordingOptimalBitrate[] =L"OptimalBitrate"; +static const WCHAR g_wszStreamBufferRecordingHasAttachedImages[] =L"HasAttachedImages"; +static const WCHAR g_wszStreamBufferRecordingSkipBackward[] =L"Can_Skip_Backward"; +static const WCHAR g_wszStreamBufferRecordingSkipForward[] =L"Can_Skip_Forward"; +static const WCHAR g_wszStreamBufferRecordingNumberOfFrames[] =L"NumberOfFrames"; +static const WCHAR g_wszStreamBufferRecordingFileSize[] =L"FileSize"; +static const WCHAR g_wszStreamBufferRecordingHasArbitraryDataStream[] =L"HasArbitraryDataStream"; +static const WCHAR g_wszStreamBufferRecordingHasFileTransferStream[] =L"HasFileTransferStream"; + +//////////////////////////////////////////////////////////////// +// +// The content description object supports 5 basic attributes. +// +static const WCHAR g_wszStreamBufferRecordingTitle[] =L"Title"; +static const WCHAR g_wszStreamBufferRecordingAuthor[] =L"Author"; +static const WCHAR g_wszStreamBufferRecordingDescription[] =L"Description"; +static const WCHAR g_wszStreamBufferRecordingRating[] =L"Rating"; +static const WCHAR g_wszStreamBufferRecordingCopyright[] =L"Copyright"; + +//////////////////////////////////////////////////////////////// +// +// These attributes are used to configure DRM using IWMDRMWriter::SetDRMAttribute. +// +static const WCHAR *g_wszStreamBufferRecordingUse_DRM = L"Use_DRM"; +static const WCHAR *g_wszStreamBufferRecordingDRM_Flags = L"DRM_Flags"; +static const WCHAR *g_wszStreamBufferRecordingDRM_Level = L"DRM_Level"; + +//////////////////////////////////////////////////////////////// +// +// These are the additional attributes defined in the WM attribute +// namespace that give information about the content. +// +static const WCHAR g_wszStreamBufferRecordingAlbumTitle[] =L"WM/AlbumTitle"; +static const WCHAR g_wszStreamBufferRecordingTrack[] =L"WM/Track"; +static const WCHAR g_wszStreamBufferRecordingPromotionURL[] =L"WM/PromotionURL"; +static const WCHAR g_wszStreamBufferRecordingAlbumCoverURL[] =L"WM/AlbumCoverURL"; +static const WCHAR g_wszStreamBufferRecordingGenre[] =L"WM/Genre"; +static const WCHAR g_wszStreamBufferRecordingYear[] =L"WM/Year"; +static const WCHAR g_wszStreamBufferRecordingGenreID[] =L"WM/GenreID"; +static const WCHAR g_wszStreamBufferRecordingMCDI[] =L"WM/MCDI"; +static const WCHAR g_wszStreamBufferRecordingComposer[] =L"WM/Composer"; +static const WCHAR g_wszStreamBufferRecordingLyrics[] =L"WM/Lyrics"; +static const WCHAR g_wszStreamBufferRecordingTrackNumber[] =L"WM/TrackNumber"; +static const WCHAR g_wszStreamBufferRecordingToolName[] =L"WM/ToolName"; +static const WCHAR g_wszStreamBufferRecordingToolVersion[] =L"WM/ToolVersion"; +static const WCHAR g_wszStreamBufferRecordingIsVBR[] =L"IsVBR"; +static const WCHAR g_wszStreamBufferRecordingAlbumArtist[] =L"WM/AlbumArtist"; + +//////////////////////////////////////////////////////////////// +// +// These optional attributes may be used to give information +// about the branding of the content. +// +static const WCHAR g_wszStreamBufferRecordingBannerImageType[] =L"BannerImageType"; +static const WCHAR g_wszStreamBufferRecordingBannerImageData[] =L"BannerImageData"; +static const WCHAR g_wszStreamBufferRecordingBannerImageURL[] =L"BannerImageURL"; +static const WCHAR g_wszStreamBufferRecordingCopyrightURL[] =L"CopyrightURL"; +//////////////////////////////////////////////////////////////// +// +// Optional attributes, used to give information +// about video stream properties. +// +static const WCHAR g_wszStreamBufferRecordingAspectRatioX[] =L"AspectRatioX"; +static const WCHAR g_wszStreamBufferRecordingAspectRatioY[] =L"AspectRatioY"; +//////////////////////////////////////////////////////////////// +// +// The NSC file supports the following attributes. +// +static const WCHAR g_wszStreamBufferRecordingNSCName[] =L"NSC_Name"; +static const WCHAR g_wszStreamBufferRecordingNSCAddress[] =L"NSC_Address"; +static const WCHAR g_wszStreamBufferRecordingNSCPhone[] =L"NSC_Phone"; +static const WCHAR g_wszStreamBufferRecordingNSCEmail[] =L"NSC_Email"; +static const WCHAR g_wszStreamBufferRecordingNSCDescription[] =L"NSC_Description"; + +typedef /* [public][public][public][public][public][public] */ +enum __MIDL___MIDL_itf_sbe_0412_0001 + { 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; + + + +extern RPC_IF_HANDLE __MIDL_itf_sbe_0412_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_sbe_0412_v0_0_s_ifspec; + +#ifndef __IStreamBufferRecordingAttribute_INTERFACE_DEFINED__ +#define __IStreamBufferRecordingAttribute_INTERFACE_DEFINED__ + +/* interface IStreamBufferRecordingAttribute */ +/* [unique][uuid][object] */ + + +EXTERN_C const IID IID_IStreamBufferRecordingAttribute; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("16CA4E03-FE69-4705-BD41-5B7DFC0C95F3") + IStreamBufferRecordingAttribute : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE SetAttribute( + /* [in] */ ULONG ulReserved, + /* [in] */ LPCWSTR pszAttributeName, + /* [in] */ STREAMBUFFER_ATTR_DATATYPE StreamBufferAttributeType, + /* [in] */ BYTE *pbAttribute, + /* [in] */ WORD cbAttributeLength) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetAttributeCount( + /* [in] */ ULONG ulReserved, + /* [out] */ WORD *pcAttributes) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetAttributeByName( + /* [in] */ LPCWSTR pszAttributeName, + /* [in] */ ULONG *pulReserved, + /* [out] */ STREAMBUFFER_ATTR_DATATYPE *pStreamBufferAttributeType, + /* [out] */ BYTE *pbAttribute, + /* [out][in] */ WORD *pcbLength) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetAttributeByIndex( + /* [in] */ WORD wIndex, + /* [in] */ ULONG *pulReserved, + /* [out] */ WCHAR *pszAttributeName, + /* [out][in] */ WORD *pcchNameLength, + /* [out] */ STREAMBUFFER_ATTR_DATATYPE *pStreamBufferAttributeType, + /* [out] */ BYTE *pbAttribute, + /* [out][in] */ WORD *pcbLength) = 0; + + virtual HRESULT STDMETHODCALLTYPE EnumAttributes( + /* [out] */ IEnumStreamBufferRecordingAttrib **ppIEnumStreamBufferAttrib) = 0; + + }; + +#else /* C style interface */ + + typedef struct IStreamBufferRecordingAttributeVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IStreamBufferRecordingAttribute * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IStreamBufferRecordingAttribute * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IStreamBufferRecordingAttribute * This); + + HRESULT ( STDMETHODCALLTYPE *SetAttribute )( + IStreamBufferRecordingAttribute * This, + /* [in] */ ULONG ulReserved, + /* [in] */ LPCWSTR pszAttributeName, + /* [in] */ STREAMBUFFER_ATTR_DATATYPE StreamBufferAttributeType, + /* [in] */ BYTE *pbAttribute, + /* [in] */ WORD cbAttributeLength); + + HRESULT ( STDMETHODCALLTYPE *GetAttributeCount )( + IStreamBufferRecordingAttribute * This, + /* [in] */ ULONG ulReserved, + /* [out] */ WORD *pcAttributes); + + HRESULT ( STDMETHODCALLTYPE *GetAttributeByName )( + IStreamBufferRecordingAttribute * This, + /* [in] */ LPCWSTR pszAttributeName, + /* [in] */ ULONG *pulReserved, + /* [out] */ STREAMBUFFER_ATTR_DATATYPE *pStreamBufferAttributeType, + /* [out] */ BYTE *pbAttribute, + /* [out][in] */ WORD *pcbLength); + + HRESULT ( STDMETHODCALLTYPE *GetAttributeByIndex )( + IStreamBufferRecordingAttribute * This, + /* [in] */ WORD wIndex, + /* [in] */ ULONG *pulReserved, + /* [out] */ WCHAR *pszAttributeName, + /* [out][in] */ WORD *pcchNameLength, + /* [out] */ STREAMBUFFER_ATTR_DATATYPE *pStreamBufferAttributeType, + /* [out] */ BYTE *pbAttribute, + /* [out][in] */ WORD *pcbLength); + + HRESULT ( STDMETHODCALLTYPE *EnumAttributes )( + IStreamBufferRecordingAttribute * This, + /* [out] */ IEnumStreamBufferRecordingAttrib **ppIEnumStreamBufferAttrib); + + END_INTERFACE + } IStreamBufferRecordingAttributeVtbl; + + interface IStreamBufferRecordingAttribute + { + CONST_VTBL struct IStreamBufferRecordingAttributeVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IStreamBufferRecordingAttribute_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IStreamBufferRecordingAttribute_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IStreamBufferRecordingAttribute_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IStreamBufferRecordingAttribute_SetAttribute(This,ulReserved,pszAttributeName,StreamBufferAttributeType,pbAttribute,cbAttributeLength) \ + (This)->lpVtbl -> SetAttribute(This,ulReserved,pszAttributeName,StreamBufferAttributeType,pbAttribute,cbAttributeLength) + +#define IStreamBufferRecordingAttribute_GetAttributeCount(This,ulReserved,pcAttributes) \ + (This)->lpVtbl -> GetAttributeCount(This,ulReserved,pcAttributes) + +#define IStreamBufferRecordingAttribute_GetAttributeByName(This,pszAttributeName,pulReserved,pStreamBufferAttributeType,pbAttribute,pcbLength) \ + (This)->lpVtbl -> GetAttributeByName(This,pszAttributeName,pulReserved,pStreamBufferAttributeType,pbAttribute,pcbLength) + +#define IStreamBufferRecordingAttribute_GetAttributeByIndex(This,wIndex,pulReserved,pszAttributeName,pcchNameLength,pStreamBufferAttributeType,pbAttribute,pcbLength) \ + (This)->lpVtbl -> GetAttributeByIndex(This,wIndex,pulReserved,pszAttributeName,pcchNameLength,pStreamBufferAttributeType,pbAttribute,pcbLength) + +#define IStreamBufferRecordingAttribute_EnumAttributes(This,ppIEnumStreamBufferAttrib) \ + (This)->lpVtbl -> EnumAttributes(This,ppIEnumStreamBufferAttrib) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IStreamBufferRecordingAttribute_SetAttribute_Proxy( + IStreamBufferRecordingAttribute * This, + /* [in] */ ULONG ulReserved, + /* [in] */ LPCWSTR pszAttributeName, + /* [in] */ STREAMBUFFER_ATTR_DATATYPE StreamBufferAttributeType, + /* [in] */ BYTE *pbAttribute, + /* [in] */ WORD cbAttributeLength); + + +void __RPC_STUB IStreamBufferRecordingAttribute_SetAttribute_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IStreamBufferRecordingAttribute_GetAttributeCount_Proxy( + IStreamBufferRecordingAttribute * This, + /* [in] */ ULONG ulReserved, + /* [out] */ WORD *pcAttributes); + + +void __RPC_STUB IStreamBufferRecordingAttribute_GetAttributeCount_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IStreamBufferRecordingAttribute_GetAttributeByName_Proxy( + IStreamBufferRecordingAttribute * This, + /* [in] */ LPCWSTR pszAttributeName, + /* [in] */ ULONG *pulReserved, + /* [out] */ STREAMBUFFER_ATTR_DATATYPE *pStreamBufferAttributeType, + /* [out] */ BYTE *pbAttribute, + /* [out][in] */ WORD *pcbLength); + + +void __RPC_STUB IStreamBufferRecordingAttribute_GetAttributeByName_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IStreamBufferRecordingAttribute_GetAttributeByIndex_Proxy( + IStreamBufferRecordingAttribute * This, + /* [in] */ WORD wIndex, + /* [in] */ ULONG *pulReserved, + /* [out] */ WCHAR *pszAttributeName, + /* [out][in] */ WORD *pcchNameLength, + /* [out] */ STREAMBUFFER_ATTR_DATATYPE *pStreamBufferAttributeType, + /* [out] */ BYTE *pbAttribute, + /* [out][in] */ WORD *pcbLength); + + +void __RPC_STUB IStreamBufferRecordingAttribute_GetAttributeByIndex_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IStreamBufferRecordingAttribute_EnumAttributes_Proxy( + IStreamBufferRecordingAttribute * This, + /* [out] */ IEnumStreamBufferRecordingAttrib **ppIEnumStreamBufferAttrib); + + +void __RPC_STUB IStreamBufferRecordingAttribute_EnumAttributes_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IStreamBufferRecordingAttribute_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_sbe_0413 */ +/* [local] */ + +typedef /* [public][public] */ struct __MIDL___MIDL_itf_sbe_0413_0001 + { + LPWSTR pszName; + STREAMBUFFER_ATTR_DATATYPE StreamBufferAttributeType; + BYTE *pbAttribute; + WORD cbLength; + } STREAMBUFFER_ATTRIBUTE; + + + +extern RPC_IF_HANDLE __MIDL_itf_sbe_0413_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_sbe_0413_v0_0_s_ifspec; + +#ifndef __IEnumStreamBufferRecordingAttrib_INTERFACE_DEFINED__ +#define __IEnumStreamBufferRecordingAttrib_INTERFACE_DEFINED__ + +/* interface IEnumStreamBufferRecordingAttrib */ +/* [unique][uuid][object] */ + + +EXTERN_C const IID IID_IEnumStreamBufferRecordingAttrib; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("C18A9162-1E82-4142-8C73-5690FA62FE33") + IEnumStreamBufferRecordingAttrib : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE Next( + /* [in] */ ULONG cRequest, + /* [size_is][out][in] */ STREAMBUFFER_ATTRIBUTE *pStreamBufferAttribute, + /* [out] */ ULONG *pcReceived) = 0; + + virtual HRESULT STDMETHODCALLTYPE Skip( + /* [in] */ ULONG cRecords) = 0; + + virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE Clone( + /* [out] */ IEnumStreamBufferRecordingAttrib **ppIEnumStreamBufferAttrib) = 0; + + }; + +#else /* C style interface */ + + typedef struct IEnumStreamBufferRecordingAttribVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IEnumStreamBufferRecordingAttrib * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IEnumStreamBufferRecordingAttrib * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IEnumStreamBufferRecordingAttrib * This); + + HRESULT ( STDMETHODCALLTYPE *Next )( + IEnumStreamBufferRecordingAttrib * This, + /* [in] */ ULONG cRequest, + /* [size_is][out][in] */ STREAMBUFFER_ATTRIBUTE *pStreamBufferAttribute, + /* [out] */ ULONG *pcReceived); + + HRESULT ( STDMETHODCALLTYPE *Skip )( + IEnumStreamBufferRecordingAttrib * This, + /* [in] */ ULONG cRecords); + + HRESULT ( STDMETHODCALLTYPE *Reset )( + IEnumStreamBufferRecordingAttrib * This); + + HRESULT ( STDMETHODCALLTYPE *Clone )( + IEnumStreamBufferRecordingAttrib * This, + /* [out] */ IEnumStreamBufferRecordingAttrib **ppIEnumStreamBufferAttrib); + + END_INTERFACE + } IEnumStreamBufferRecordingAttribVtbl; + + interface IEnumStreamBufferRecordingAttrib + { + CONST_VTBL struct IEnumStreamBufferRecordingAttribVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IEnumStreamBufferRecordingAttrib_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IEnumStreamBufferRecordingAttrib_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IEnumStreamBufferRecordingAttrib_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IEnumStreamBufferRecordingAttrib_Next(This,cRequest,pStreamBufferAttribute,pcReceived) \ + (This)->lpVtbl -> Next(This,cRequest,pStreamBufferAttribute,pcReceived) + +#define IEnumStreamBufferRecordingAttrib_Skip(This,cRecords) \ + (This)->lpVtbl -> Skip(This,cRecords) + +#define IEnumStreamBufferRecordingAttrib_Reset(This) \ + (This)->lpVtbl -> Reset(This) + +#define IEnumStreamBufferRecordingAttrib_Clone(This,ppIEnumStreamBufferAttrib) \ + (This)->lpVtbl -> Clone(This,ppIEnumStreamBufferAttrib) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IEnumStreamBufferRecordingAttrib_Next_Proxy( + IEnumStreamBufferRecordingAttrib * This, + /* [in] */ ULONG cRequest, + /* [size_is][out][in] */ STREAMBUFFER_ATTRIBUTE *pStreamBufferAttribute, + /* [out] */ ULONG *pcReceived); + + +void __RPC_STUB IEnumStreamBufferRecordingAttrib_Next_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IEnumStreamBufferRecordingAttrib_Skip_Proxy( + IEnumStreamBufferRecordingAttrib * This, + /* [in] */ ULONG cRecords); + + +void __RPC_STUB IEnumStreamBufferRecordingAttrib_Skip_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IEnumStreamBufferRecordingAttrib_Reset_Proxy( + IEnumStreamBufferRecordingAttrib * This); + + +void __RPC_STUB IEnumStreamBufferRecordingAttrib_Reset_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IEnumStreamBufferRecordingAttrib_Clone_Proxy( + IEnumStreamBufferRecordingAttrib * This, + /* [out] */ IEnumStreamBufferRecordingAttrib **ppIEnumStreamBufferAttrib); + + +void __RPC_STUB IEnumStreamBufferRecordingAttrib_Clone_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IEnumStreamBufferRecordingAttrib_INTERFACE_DEFINED__ */ + + +#ifndef __IStreamBufferConfigure_INTERFACE_DEFINED__ +#define __IStreamBufferConfigure_INTERFACE_DEFINED__ + +/* interface IStreamBufferConfigure */ +/* [unique][uuid][object] */ + + +EXTERN_C const IID IID_IStreamBufferConfigure; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("ce14dfae-4098-4af7-bbf7-d6511f835414") + IStreamBufferConfigure : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE SetDirectory( + /* [in] */ LPCWSTR pszDirectoryName) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetDirectory( + /* [out] */ LPWSTR *ppszDirectoryName) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetBackingFileCount( + /* [in] */ DWORD dwMin, + /* [in] */ DWORD dwMax) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetBackingFileCount( + /* [out] */ DWORD *pdwMin, + /* [out] */ DWORD *pdwMax) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetBackingFileDuration( + /* [in] */ DWORD dwSeconds) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetBackingFileDuration( + /* [out] */ DWORD *pdwSeconds) = 0; + + }; + +#else /* C style interface */ + + typedef struct IStreamBufferConfigureVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IStreamBufferConfigure * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IStreamBufferConfigure * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IStreamBufferConfigure * This); + + HRESULT ( STDMETHODCALLTYPE *SetDirectory )( + IStreamBufferConfigure * This, + /* [in] */ LPCWSTR pszDirectoryName); + + HRESULT ( STDMETHODCALLTYPE *GetDirectory )( + IStreamBufferConfigure * This, + /* [out] */ LPWSTR *ppszDirectoryName); + + HRESULT ( STDMETHODCALLTYPE *SetBackingFileCount )( + IStreamBufferConfigure * This, + /* [in] */ DWORD dwMin, + /* [in] */ DWORD dwMax); + + HRESULT ( STDMETHODCALLTYPE *GetBackingFileCount )( + IStreamBufferConfigure * This, + /* [out] */ DWORD *pdwMin, + /* [out] */ DWORD *pdwMax); + + HRESULT ( STDMETHODCALLTYPE *SetBackingFileDuration )( + IStreamBufferConfigure * This, + /* [in] */ DWORD dwSeconds); + + HRESULT ( STDMETHODCALLTYPE *GetBackingFileDuration )( + IStreamBufferConfigure * This, + /* [out] */ DWORD *pdwSeconds); + + END_INTERFACE + } IStreamBufferConfigureVtbl; + + interface IStreamBufferConfigure + { + CONST_VTBL struct IStreamBufferConfigureVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IStreamBufferConfigure_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IStreamBufferConfigure_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IStreamBufferConfigure_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IStreamBufferConfigure_SetDirectory(This,pszDirectoryName) \ + (This)->lpVtbl -> SetDirectory(This,pszDirectoryName) + +#define IStreamBufferConfigure_GetDirectory(This,ppszDirectoryName) \ + (This)->lpVtbl -> GetDirectory(This,ppszDirectoryName) + +#define IStreamBufferConfigure_SetBackingFileCount(This,dwMin,dwMax) \ + (This)->lpVtbl -> SetBackingFileCount(This,dwMin,dwMax) + +#define IStreamBufferConfigure_GetBackingFileCount(This,pdwMin,pdwMax) \ + (This)->lpVtbl -> GetBackingFileCount(This,pdwMin,pdwMax) + +#define IStreamBufferConfigure_SetBackingFileDuration(This,dwSeconds) \ + (This)->lpVtbl -> SetBackingFileDuration(This,dwSeconds) + +#define IStreamBufferConfigure_GetBackingFileDuration(This,pdwSeconds) \ + (This)->lpVtbl -> GetBackingFileDuration(This,pdwSeconds) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IStreamBufferConfigure_SetDirectory_Proxy( + IStreamBufferConfigure * This, + /* [in] */ LPCWSTR pszDirectoryName); + + +void __RPC_STUB IStreamBufferConfigure_SetDirectory_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IStreamBufferConfigure_GetDirectory_Proxy( + IStreamBufferConfigure * This, + /* [out] */ LPWSTR *ppszDirectoryName); + + +void __RPC_STUB IStreamBufferConfigure_GetDirectory_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IStreamBufferConfigure_SetBackingFileCount_Proxy( + IStreamBufferConfigure * This, + /* [in] */ DWORD dwMin, + /* [in] */ DWORD dwMax); + + +void __RPC_STUB IStreamBufferConfigure_SetBackingFileCount_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IStreamBufferConfigure_GetBackingFileCount_Proxy( + IStreamBufferConfigure * This, + /* [out] */ DWORD *pdwMin, + /* [out] */ DWORD *pdwMax); + + +void __RPC_STUB IStreamBufferConfigure_GetBackingFileCount_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IStreamBufferConfigure_SetBackingFileDuration_Proxy( + IStreamBufferConfigure * This, + /* [in] */ DWORD dwSeconds); + + +void __RPC_STUB IStreamBufferConfigure_SetBackingFileDuration_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IStreamBufferConfigure_GetBackingFileDuration_Proxy( + IStreamBufferConfigure * This, + /* [out] */ DWORD *pdwSeconds); + + +void __RPC_STUB IStreamBufferConfigure_GetBackingFileDuration_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IStreamBufferConfigure_INTERFACE_DEFINED__ */ + + +#ifndef __IStreamBufferMediaSeeking_INTERFACE_DEFINED__ +#define __IStreamBufferMediaSeeking_INTERFACE_DEFINED__ + +/* interface IStreamBufferMediaSeeking */ +/* [unique][uuid][object] */ + + +EXTERN_C const IID IID_IStreamBufferMediaSeeking; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("f61f5c26-863d-4afa-b0ba-2f81dc978596") + IStreamBufferMediaSeeking : public IMediaSeeking + { + public: + }; + +#else /* C style interface */ + + typedef struct IStreamBufferMediaSeekingVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IStreamBufferMediaSeeking * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IStreamBufferMediaSeeking * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IStreamBufferMediaSeeking * This); + + HRESULT ( STDMETHODCALLTYPE *GetCapabilities )( + IStreamBufferMediaSeeking * This, + /* [out] */ DWORD *pCapabilities); + + HRESULT ( STDMETHODCALLTYPE *CheckCapabilities )( + IStreamBufferMediaSeeking * This, + /* [out][in] */ DWORD *pCapabilities); + + HRESULT ( STDMETHODCALLTYPE *IsFormatSupported )( + IStreamBufferMediaSeeking * This, + /* [in] */ const GUID *pFormat); + + HRESULT ( STDMETHODCALLTYPE *QueryPreferredFormat )( + IStreamBufferMediaSeeking * This, + /* [out] */ GUID *pFormat); + + HRESULT ( STDMETHODCALLTYPE *GetTimeFormat )( + IStreamBufferMediaSeeking * This, + /* [out] */ GUID *pFormat); + + HRESULT ( STDMETHODCALLTYPE *IsUsingTimeFormat )( + IStreamBufferMediaSeeking * This, + /* [in] */ const GUID *pFormat); + + HRESULT ( STDMETHODCALLTYPE *SetTimeFormat )( + IStreamBufferMediaSeeking * This, + /* [in] */ const GUID *pFormat); + + HRESULT ( STDMETHODCALLTYPE *GetDuration )( + IStreamBufferMediaSeeking * This, + /* [out] */ LONGLONG *pDuration); + + HRESULT ( STDMETHODCALLTYPE *GetStopPosition )( + IStreamBufferMediaSeeking * This, + /* [out] */ LONGLONG *pStop); + + HRESULT ( STDMETHODCALLTYPE *GetCurrentPosition )( + IStreamBufferMediaSeeking * This, + /* [out] */ LONGLONG *pCurrent); + + HRESULT ( STDMETHODCALLTYPE *ConvertTimeFormat )( + IStreamBufferMediaSeeking * This, + /* [out] */ LONGLONG *pTarget, + /* [in] */ const GUID *pTargetFormat, + /* [in] */ LONGLONG Source, + /* [in] */ const GUID *pSourceFormat); + + HRESULT ( STDMETHODCALLTYPE *SetPositions )( + IStreamBufferMediaSeeking * This, + /* [out][in] */ LONGLONG *pCurrent, + /* [in] */ DWORD dwCurrentFlags, + /* [out][in] */ LONGLONG *pStop, + /* [in] */ DWORD dwStopFlags); + + HRESULT ( STDMETHODCALLTYPE *GetPositions )( + IStreamBufferMediaSeeking * This, + /* [out] */ LONGLONG *pCurrent, + /* [out] */ LONGLONG *pStop); + + HRESULT ( STDMETHODCALLTYPE *GetAvailable )( + IStreamBufferMediaSeeking * This, + /* [out] */ LONGLONG *pEarliest, + /* [out] */ LONGLONG *pLatest); + + HRESULT ( STDMETHODCALLTYPE *SetRate )( + IStreamBufferMediaSeeking * This, + /* [in] */ double dRate); + + HRESULT ( STDMETHODCALLTYPE *GetRate )( + IStreamBufferMediaSeeking * This, + /* [out] */ double *pdRate); + + HRESULT ( STDMETHODCALLTYPE *GetPreroll )( + IStreamBufferMediaSeeking * This, + /* [out] */ LONGLONG *pllPreroll); + + END_INTERFACE + } IStreamBufferMediaSeekingVtbl; + + interface IStreamBufferMediaSeeking + { + CONST_VTBL struct IStreamBufferMediaSeekingVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IStreamBufferMediaSeeking_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IStreamBufferMediaSeeking_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IStreamBufferMediaSeeking_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IStreamBufferMediaSeeking_GetCapabilities(This,pCapabilities) \ + (This)->lpVtbl -> GetCapabilities(This,pCapabilities) + +#define IStreamBufferMediaSeeking_CheckCapabilities(This,pCapabilities) \ + (This)->lpVtbl -> CheckCapabilities(This,pCapabilities) + +#define IStreamBufferMediaSeeking_IsFormatSupported(This,pFormat) \ + (This)->lpVtbl -> IsFormatSupported(This,pFormat) + +#define IStreamBufferMediaSeeking_QueryPreferredFormat(This,pFormat) \ + (This)->lpVtbl -> QueryPreferredFormat(This,pFormat) + +#define IStreamBufferMediaSeeking_GetTimeFormat(This,pFormat) \ + (This)->lpVtbl -> GetTimeFormat(This,pFormat) + +#define IStreamBufferMediaSeeking_IsUsingTimeFormat(This,pFormat) \ + (This)->lpVtbl -> IsUsingTimeFormat(This,pFormat) + +#define IStreamBufferMediaSeeking_SetTimeFormat(This,pFormat) \ + (This)->lpVtbl -> SetTimeFormat(This,pFormat) + +#define IStreamBufferMediaSeeking_GetDuration(This,pDuration) \ + (This)->lpVtbl -> GetDuration(This,pDuration) + +#define IStreamBufferMediaSeeking_GetStopPosition(This,pStop) \ + (This)->lpVtbl -> GetStopPosition(This,pStop) + +#define IStreamBufferMediaSeeking_GetCurrentPosition(This,pCurrent) \ + (This)->lpVtbl -> GetCurrentPosition(This,pCurrent) + +#define IStreamBufferMediaSeeking_ConvertTimeFormat(This,pTarget,pTargetFormat,Source,pSourceFormat) \ + (This)->lpVtbl -> ConvertTimeFormat(This,pTarget,pTargetFormat,Source,pSourceFormat) + +#define IStreamBufferMediaSeeking_SetPositions(This,pCurrent,dwCurrentFlags,pStop,dwStopFlags) \ + (This)->lpVtbl -> SetPositions(This,pCurrent,dwCurrentFlags,pStop,dwStopFlags) + +#define IStreamBufferMediaSeeking_GetPositions(This,pCurrent,pStop) \ + (This)->lpVtbl -> GetPositions(This,pCurrent,pStop) + +#define IStreamBufferMediaSeeking_GetAvailable(This,pEarliest,pLatest) \ + (This)->lpVtbl -> GetAvailable(This,pEarliest,pLatest) + +#define IStreamBufferMediaSeeking_SetRate(This,dRate) \ + (This)->lpVtbl -> SetRate(This,dRate) + +#define IStreamBufferMediaSeeking_GetRate(This,pdRate) \ + (This)->lpVtbl -> GetRate(This,pdRate) + +#define IStreamBufferMediaSeeking_GetPreroll(This,pllPreroll) \ + (This)->lpVtbl -> GetPreroll(This,pllPreroll) + + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IStreamBufferMediaSeeking_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_sbe_0416 */ +/* [local] */ + +#define STREAMBUFFER_EC_BASE 0x0326 +enum { + // timehole event + // param1 = timehole stream offset ms + // param1 = timehole size ms + STREAMBUFFER_EC_TIMEHOLE = STREAMBUFFER_EC_BASE, + + STREAMBUFFER_EC_STALE_DATA_READ, + + STREAMBUFFER_EC_STALE_FILE_DELETED, + STREAMBUFFER_EC_CONTENT_BECOMING_STALE, + STREAMBUFFER_EC_WRITE_FAILURE, + // + // unexpected read failure + // param1 = HRESULT failure + // param2 = undefined + STREAMBUFFER_EC_READ_FAILURE, + // + // playback rate change + // param1 = old_playback_rate * 10000 e.g. 2x is 20000 + // param2 = new_playback_rate * 10000 + STREAMBUFFER_EC_RATE_CHANGED, +} ; + + +extern RPC_IF_HANDLE __MIDL_itf_sbe_0416_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_sbe_0416_v0_0_s_ifspec; + +/* Additional Prototypes for ALL interfaces */ + +/* end of Additional Prototypes */ + +#ifdef __cplusplus +} +#endif + +#endif + + diff --git a/videoInputSrcAndDemos/libs/DShow/Include/seekpt.h b/videoInputSrcAndDemos/libs/DShow/Include/seekpt.h index 93b7061..1d26dfe 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/seekpt.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/seekpt.h @@ -1,30 +1,30 @@ -//------------------------------------------------------------------------------ -// File: SeekPT.h -// -// Desc: DirectShow base classes. -// -// Copyright (c) Microsoft Corporation. All rights reserved. -//------------------------------------------------------------------------------ - - -#ifndef __seekpt_h__ -#define __seekpt_h__ - - -class CSeekingPassThru : public ISeekingPassThru, public CUnknown -{ -public: - static CUnknown *CreateInstance(LPUNKNOWN pUnk, HRESULT *phr); - CSeekingPassThru(TCHAR *pName, LPUNKNOWN pUnk, HRESULT *phr); - ~CSeekingPassThru(); - - DECLARE_IUNKNOWN; - STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, void ** ppv); - - STDMETHODIMP Init(BOOL bSupportRendering, IPin *pPin); - -private: - CPosPassThru *m_pPosPassThru; -}; - -#endif +//------------------------------------------------------------------------------ +// File: SeekPT.h +// +// Desc: DirectShow base classes. +// +// Copyright (c) Microsoft Corporation. All rights reserved. +//------------------------------------------------------------------------------ + + +#ifndef __seekpt_h__ +#define __seekpt_h__ + + +class CSeekingPassThru : public ISeekingPassThru, public CUnknown +{ +public: + static CUnknown *CreateInstance(LPUNKNOWN pUnk, HRESULT *phr); + CSeekingPassThru(TCHAR *pName, LPUNKNOWN pUnk, HRESULT *phr); + ~CSeekingPassThru(); + + DECLARE_IUNKNOWN; + STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, void ** ppv); + + STDMETHODIMP Init(BOOL bSupportRendering, IPin *pPin); + +private: + CPosPassThru *m_pPosPassThru; +}; + +#endif diff --git a/videoInputSrcAndDemos/libs/DShow/Include/source.h b/videoInputSrcAndDemos/libs/DShow/Include/source.h index 6dff3e7..a5f0aeb 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/source.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/source.h @@ -1,172 +1,172 @@ -//------------------------------------------------------------------------------ -// File: Source.h -// -// Desc: DirectShow base classes - defines classes to simplify creation of -// ActiveX source filters that support continuous generation of data. -// No support is provided for IMediaControl or IMediaPosition. -// -// Copyright (c) Microsoft Corporation. All rights reserved. -//------------------------------------------------------------------------------ - - -// -// Derive your source filter from CSource. -// During construction either: -// Create some CSourceStream objects to manage your pins -// Provide the user with a means of doing so eg, an IPersistFile interface. -// -// CSource provides: -// IBaseFilter interface management -// IMediaFilter interface management, via CBaseFilter -// Pin counting for CBaseFilter -// -// Derive a class from CSourceStream to manage your output pin types -// Implement GetMediaType/1 to return the type you support. If you support multiple -// types then overide GetMediaType/3, CheckMediaType and GetMediaTypeCount. -// Implement Fillbuffer() to put data into one buffer. -// -// CSourceStream provides: -// IPin management via CBaseOutputPin -// Worker thread management - -#ifndef __CSOURCE__ -#define __CSOURCE__ - -class CSourceStream; // The class that will handle each pin - - -// -// CSource -// -// Override construction to provide a means of creating -// CSourceStream derived objects - ie a way of creating pins. -class CSource : public CBaseFilter { -public: - - CSource(TCHAR *pName, LPUNKNOWN lpunk, CLSID clsid, HRESULT *phr); - CSource(TCHAR *pName, LPUNKNOWN lpunk, CLSID clsid); -#ifdef UNICODE - CSource(CHAR *pName, LPUNKNOWN lpunk, CLSID clsid, HRESULT *phr); - CSource(CHAR *pName, LPUNKNOWN lpunk, CLSID clsid); -#endif - ~CSource(); - - int GetPinCount(void); - CBasePin *GetPin(int n); - - // -- Utilities -- - - CCritSec* pStateLock(void) { return &m_cStateLock; } // provide our critical section - - HRESULT AddPin(CSourceStream *); - HRESULT RemovePin(CSourceStream *); - - STDMETHODIMP FindPin( - LPCWSTR Id, - IPin ** ppPin - ); - - int FindPinNumber(IPin *iPin); - -protected: - - int m_iPins; // The number of pins on this filter. Updated by CSourceStream - // constructors & destructors. - CSourceStream **m_paStreams; // the pins on this filter. - - CCritSec m_cStateLock; // Lock this to serialize function accesses to the filter state - -}; - - -// -// CSourceStream -// -// Use this class to manage a stream of data that comes from a -// pin. -// Uses a worker thread to put data on the pin. -class CSourceStream : public CAMThread, public CBaseOutputPin { -public: - - CSourceStream(TCHAR *pObjectName, - HRESULT *phr, - CSource *pms, - LPCWSTR pName); -#ifdef UNICODE - CSourceStream(CHAR *pObjectName, - HRESULT *phr, - CSource *pms, - LPCWSTR pName); -#endif - virtual ~CSourceStream(void); // virtual destructor ensures derived class destructors are called too. - -protected: - - CSource *m_pFilter; // The parent of this stream - - // * - // * Data Source - // * - // * The following three functions: FillBuffer, OnThreadCreate/Destroy, are - // * called from within the ThreadProc. They are used in the creation of - // * the media samples this pin will provide - // * - - // Override this to provide the worker thread a means - // of processing a buffer - virtual HRESULT FillBuffer(IMediaSample *pSamp) PURE; - - // Called as the thread is created/destroyed - use to perform - // jobs such as start/stop streaming mode - // If OnThreadCreate returns an error the thread will exit. - virtual HRESULT OnThreadCreate(void) {return NOERROR;}; - virtual HRESULT OnThreadDestroy(void) {return NOERROR;}; - virtual HRESULT OnThreadStartPlay(void) {return NOERROR;}; - - // * - // * Worker Thread - // * - - HRESULT Active(void); // Starts up the worker thread - HRESULT Inactive(void); // Exits the worker thread. - -public: - // thread commands - enum Command {CMD_INIT, CMD_PAUSE, CMD_RUN, CMD_STOP, CMD_EXIT}; - HRESULT Init(void) { return CallWorker(CMD_INIT); } - HRESULT Exit(void) { return CallWorker(CMD_EXIT); } - HRESULT Run(void) { return CallWorker(CMD_RUN); } - HRESULT Pause(void) { return CallWorker(CMD_PAUSE); } - HRESULT Stop(void) { return CallWorker(CMD_STOP); } - -protected: - Command GetRequest(void) { return (Command) CAMThread::GetRequest(); } - BOOL CheckRequest(Command *pCom) { return CAMThread::CheckRequest( (DWORD *) pCom); } - - // override these if you want to add thread commands - virtual DWORD ThreadProc(void); // the thread function - - virtual HRESULT DoBufferProcessingLoop(void); // the loop executed whilst running - - - // * - // * AM_MEDIA_TYPE support - // * - - // If you support more than one media type then override these 2 functions - virtual HRESULT CheckMediaType(const CMediaType *pMediaType); - virtual HRESULT GetMediaType(int iPosition, CMediaType *pMediaType); // List pos. 0-n - - // If you support only one type then override this fn. - // This will only be called by the default implementations - // of CheckMediaType and GetMediaType(int, CMediaType*) - // You must override this fn. or the above 2! - virtual HRESULT GetMediaType(CMediaType *pMediaType) {return E_UNEXPECTED;} - - STDMETHODIMP QueryId( - LPWSTR * Id - ); -}; - -#endif // __CSOURCE__ - +//------------------------------------------------------------------------------ +// File: Source.h +// +// Desc: DirectShow base classes - defines classes to simplify creation of +// ActiveX source filters that support continuous generation of data. +// No support is provided for IMediaControl or IMediaPosition. +// +// Copyright (c) Microsoft Corporation. All rights reserved. +//------------------------------------------------------------------------------ + + +// +// Derive your source filter from CSource. +// During construction either: +// Create some CSourceStream objects to manage your pins +// Provide the user with a means of doing so eg, an IPersistFile interface. +// +// CSource provides: +// IBaseFilter interface management +// IMediaFilter interface management, via CBaseFilter +// Pin counting for CBaseFilter +// +// Derive a class from CSourceStream to manage your output pin types +// Implement GetMediaType/1 to return the type you support. If you support multiple +// types then overide GetMediaType/3, CheckMediaType and GetMediaTypeCount. +// Implement Fillbuffer() to put data into one buffer. +// +// CSourceStream provides: +// IPin management via CBaseOutputPin +// Worker thread management + +#ifndef __CSOURCE__ +#define __CSOURCE__ + +class CSourceStream; // The class that will handle each pin + + +// +// CSource +// +// Override construction to provide a means of creating +// CSourceStream derived objects - ie a way of creating pins. +class CSource : public CBaseFilter { +public: + + CSource(TCHAR *pName, LPUNKNOWN lpunk, CLSID clsid, HRESULT *phr); + CSource(TCHAR *pName, LPUNKNOWN lpunk, CLSID clsid); +#ifdef UNICODE + CSource(CHAR *pName, LPUNKNOWN lpunk, CLSID clsid, HRESULT *phr); + CSource(CHAR *pName, LPUNKNOWN lpunk, CLSID clsid); +#endif + ~CSource(); + + int GetPinCount(void); + CBasePin *GetPin(int n); + + // -- Utilities -- + + CCritSec* pStateLock(void) { return &m_cStateLock; } // provide our critical section + + HRESULT AddPin(CSourceStream *); + HRESULT RemovePin(CSourceStream *); + + STDMETHODIMP FindPin( + LPCWSTR Id, + IPin ** ppPin + ); + + int FindPinNumber(IPin *iPin); + +protected: + + int m_iPins; // The number of pins on this filter. Updated by CSourceStream + // constructors & destructors. + CSourceStream **m_paStreams; // the pins on this filter. + + CCritSec m_cStateLock; // Lock this to serialize function accesses to the filter state + +}; + + +// +// CSourceStream +// +// Use this class to manage a stream of data that comes from a +// pin. +// Uses a worker thread to put data on the pin. +class CSourceStream : public CAMThread, public CBaseOutputPin { +public: + + CSourceStream(TCHAR *pObjectName, + HRESULT *phr, + CSource *pms, + LPCWSTR pName); +#ifdef UNICODE + CSourceStream(CHAR *pObjectName, + HRESULT *phr, + CSource *pms, + LPCWSTR pName); +#endif + virtual ~CSourceStream(void); // virtual destructor ensures derived class destructors are called too. + +protected: + + CSource *m_pFilter; // The parent of this stream + + // * + // * Data Source + // * + // * The following three functions: FillBuffer, OnThreadCreate/Destroy, are + // * called from within the ThreadProc. They are used in the creation of + // * the media samples this pin will provide + // * + + // Override this to provide the worker thread a means + // of processing a buffer + virtual HRESULT FillBuffer(IMediaSample *pSamp) PURE; + + // Called as the thread is created/destroyed - use to perform + // jobs such as start/stop streaming mode + // If OnThreadCreate returns an error the thread will exit. + virtual HRESULT OnThreadCreate(void) {return NOERROR;}; + virtual HRESULT OnThreadDestroy(void) {return NOERROR;}; + virtual HRESULT OnThreadStartPlay(void) {return NOERROR;}; + + // * + // * Worker Thread + // * + + HRESULT Active(void); // Starts up the worker thread + HRESULT Inactive(void); // Exits the worker thread. + +public: + // thread commands + enum Command {CMD_INIT, CMD_PAUSE, CMD_RUN, CMD_STOP, CMD_EXIT}; + HRESULT Init(void) { return CallWorker(CMD_INIT); } + HRESULT Exit(void) { return CallWorker(CMD_EXIT); } + HRESULT Run(void) { return CallWorker(CMD_RUN); } + HRESULT Pause(void) { return CallWorker(CMD_PAUSE); } + HRESULT Stop(void) { return CallWorker(CMD_STOP); } + +protected: + Command GetRequest(void) { return (Command) CAMThread::GetRequest(); } + BOOL CheckRequest(Command *pCom) { return CAMThread::CheckRequest( (DWORD *) pCom); } + + // override these if you want to add thread commands + virtual DWORD ThreadProc(void); // the thread function + + virtual HRESULT DoBufferProcessingLoop(void); // the loop executed whilst running + + + // * + // * AM_MEDIA_TYPE support + // * + + // If you support more than one media type then override these 2 functions + virtual HRESULT CheckMediaType(const CMediaType *pMediaType); + virtual HRESULT GetMediaType(int iPosition, CMediaType *pMediaType); // List pos. 0-n + + // If you support only one type then override this fn. + // This will only be called by the default implementations + // of CheckMediaType and GetMediaType(int, CMediaType*) + // You must override this fn. or the above 2! + virtual HRESULT GetMediaType(CMediaType *pMediaType) {return E_UNEXPECTED;} + + STDMETHODIMP QueryId( + LPWSTR * Id + ); +}; + +#endif // __CSOURCE__ + diff --git a/videoInputSrcAndDemos/libs/DShow/Include/streams.h b/videoInputSrcAndDemos/libs/DShow/Include/streams.h index 4131ce8..2f76979 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/streams.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/streams.h @@ -1,184 +1,184 @@ - -//------------------------------------------------------------------------------ -// File: Streams.h -// -// Desc: DirectShow base classes - defines overall streams architecture. -// -// Copyright (c) Microsoft Corporation. All rights reserved. -//------------------------------------------------------------------------------ - - -#ifndef __STREAMS__ -#define __STREAMS__ - -#ifdef _MSC_VER -// disable some level-4 warnings, use #pragma warning(enable:###) to re-enable -#pragma warning(disable:4100) // warning C4100: unreferenced formal parameter -#pragma warning(disable:4127) // warning C4127: conditional expression is constant -#pragma warning(disable:4189) // warning C4189: local variable is initialized but not referenced -#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 -#pragma warning(disable:4710) // warning C4710: 'function' not inlined - -#if _MSC_VER>=1100 - -#define AM_NOVTABLE __declspec(novtable) -#else -#define AM_NOVTABLE -#endif -#else //new line -#define AM_NOVTABLE //new line -#endif // MSC_VER - -// Because of differences between Visual C++ and older Microsoft SDKs, -// you may have defined _DEBUG without defining DEBUG. This logic -// ensures that both will be set if Visual C++ sets _DEBUG. -#ifdef _DEBUG -#ifndef DEBUG -#define DEBUG -#endif -#endif - - -#include -#include -#include -#include - -// Disable warning message for C4201 - use of nameless struct/union -// Otherwise, strmif.h will generate warnings for Win32 debug builds -#pragma warning( disable : 4201 ) - -#include - -#ifndef NUMELMS - #define NUMELMS(aa) (sizeof(aa)/sizeof((aa)[0])) -#endif - -/////////////////////////////////////////////////////////////////////////// -// The following definitions come from the Platform SDK and are required if -// the applicaiton is being compiled with the headers from Visual C++ 6.0. -/////////////////////////////////////////////////////////////////////////// -#ifndef InterlockedExchangePointer - #define InterlockedExchangePointer(Target, Value) \ - (PVOID)InterlockedExchange((PLONG)(Target), (LONG)(Value)) -#endif - -#ifndef _WAVEFORMATEXTENSIBLE_ -#define _WAVEFORMATEXTENSIBLE_ -typedef struct { - WAVEFORMATEX Format; - union { - WORD wValidBitsPerSample; // bits of precision // - WORD wSamplesPerBlock; // valid if wBitsPerSample==0 // - WORD wReserved; // If neither applies, set to zero. // - } Samples; - DWORD dwChannelMask; // which channels are // - // present in stream // - GUID SubFormat; -} WAVEFORMATEXTENSIBLE, *PWAVEFORMATEXTENSIBLE; -#endif // !_WAVEFORMATEXTENSIBLE_ - -#if !defined(WAVE_FORMAT_EXTENSIBLE) -#define WAVE_FORMAT_EXTENSIBLE 0xFFFE -#endif // !defined(WAVE_FORMAT_EXTENSIBLE) - -#ifndef GetWindowLongPtr - #define GetWindowLongPtrA GetWindowLongA - #define GetWindowLongPtrW GetWindowLongW - #ifdef UNICODE - #define GetWindowLongPtr GetWindowLongPtrW - #else - #define GetWindowLongPtr GetWindowLongPtrA - #endif // !UNICODE -#endif // !GetWindowLongPtr - -#ifndef SetWindowLongPtr - #define SetWindowLongPtrA SetWindowLongA - #define SetWindowLongPtrW SetWindowLongW - #ifdef UNICODE - #define SetWindowLongPtr SetWindowLongPtrW - #else - #define SetWindowLongPtr SetWindowLongPtrA - #endif // !UNICODE -#endif // !SetWindowLongPtr - -#ifndef GWLP_WNDPROC - #define GWLP_WNDPROC (-4) -#endif -#ifndef GWLP_HINSTANCE - #define GWLP_HINSTANCE (-6) -#endif -#ifndef GWLP_HWNDPARENT - #define GWLP_HWNDPARENT (-8) -#endif -#ifndef GWLP_USERDATA - #define GWLP_USERDATA (-21) -#endif -#ifndef GWLP_ID - #define GWLP_ID (-12) -#endif -#ifndef DWLP_MSGRESULT - #define DWLP_MSGRESULT 0 -#endif -#ifndef DWLP_DLGPROC - #define DWLP_DLGPROC DWLP_MSGRESULT + sizeof(LRESULT) -#endif -#ifndef DWLP_USER - #define DWLP_USER DWLP_DLGPROC + sizeof(DLGPROC) -#endif -/////////////////////////////////////////////////////////////////////////// -// End Platform SDK definitions -/////////////////////////////////////////////////////////////////////////// - - -#pragma warning(disable:4201) // warning C4201: nonstandard extension used : nameless struct/union -#include // Generated IDL header file for streams interfaces - -#include // Helper class for REFERENCE_TIME management -#include // Debug support for logging and ASSERTs -#include // ActiveMovie video interfaces and definitions -//include amaudio.h explicitly if you need it. it requires the DirectX SDK. -//#include // ActiveMovie audio interfaces and definitions -#include // General helper classes for threads etc -#include // Base COM classes to support IUnknown -#include // Filter registration support functions -#include // Performance measurement -#include // Light weight com function prototypes - -#include // Simple cache container class -#include // Non MFC generic list class -#include // CMsgThread -#include // Helper class for managing media types -#include // conversions between FOURCCs and GUIDs -#include // generated from control.odl -#include // control interface utility classes -#include // event code definitions -#include // Main streams architecture class hierachy -#include // Generic transform filter -#include // Generic transform-in-place filter -#include // declaration of type GUIDs and well-known clsids -#include // Generic source filter -#include // Output pin queueing -#include // HRESULT status and error definitions -#include // Base class for writing ActiveX renderers -#include // Helps with filters that manage windows -#include // Implements the IVideoWindow interface -#include // Specifically video related classes -#include // Base clock class -#include // System clock -#include // IPersistStream helper class -#include // Video Transform Filter base class -#include -#include // Base property page class -#include // IAMStreamControl support -#include // External device control interface defines -#include // audio filter device error event codes - -#else - #ifdef DEBUG - #pragma message("STREAMS.H included TWICE") - #endif -#endif // __STREAMS__ + +//------------------------------------------------------------------------------ +// File: Streams.h +// +// Desc: DirectShow base classes - defines overall streams architecture. +// +// Copyright (c) Microsoft Corporation. All rights reserved. +//------------------------------------------------------------------------------ + + +#ifndef __STREAMS__ +#define __STREAMS__ + +#ifdef _MSC_VER +// disable some level-4 warnings, use #pragma warning(enable:###) to re-enable +#pragma warning(disable:4100) // warning C4100: unreferenced formal parameter +#pragma warning(disable:4127) // warning C4127: conditional expression is constant +#pragma warning(disable:4189) // warning C4189: local variable is initialized but not referenced +#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 +#pragma warning(disable:4710) // warning C4710: 'function' not inlined + +#if _MSC_VER>=1100 + +#define AM_NOVTABLE __declspec(novtable) +#else +#define AM_NOVTABLE +#endif +#else //new line +#define AM_NOVTABLE //new line +#endif // MSC_VER + +// Because of differences between Visual C++ and older Microsoft SDKs, +// you may have defined _DEBUG without defining DEBUG. This logic +// ensures that both will be set if Visual C++ sets _DEBUG. +#ifdef _DEBUG +#ifndef DEBUG +#define DEBUG +#endif +#endif + + +#include +#include +#include +#include + +// Disable warning message for C4201 - use of nameless struct/union +// Otherwise, strmif.h will generate warnings for Win32 debug builds +#pragma warning( disable : 4201 ) + +#include + +#ifndef NUMELMS + #define NUMELMS(aa) (sizeof(aa)/sizeof((aa)[0])) +#endif + +/////////////////////////////////////////////////////////////////////////// +// The following definitions come from the Platform SDK and are required if +// the applicaiton is being compiled with the headers from Visual C++ 6.0. +/////////////////////////////////////////////////////////////////////////// +#ifndef InterlockedExchangePointer + #define InterlockedExchangePointer(Target, Value) \ + (PVOID)InterlockedExchange((PLONG)(Target), (LONG)(Value)) +#endif + +#ifndef _WAVEFORMATEXTENSIBLE_ +#define _WAVEFORMATEXTENSIBLE_ +typedef struct { + WAVEFORMATEX Format; + union { + WORD wValidBitsPerSample; // bits of precision // + WORD wSamplesPerBlock; // valid if wBitsPerSample==0 // + WORD wReserved; // If neither applies, set to zero. // + } Samples; + DWORD dwChannelMask; // which channels are // + // present in stream // + GUID SubFormat; +} WAVEFORMATEXTENSIBLE, *PWAVEFORMATEXTENSIBLE; +#endif // !_WAVEFORMATEXTENSIBLE_ + +#if !defined(WAVE_FORMAT_EXTENSIBLE) +#define WAVE_FORMAT_EXTENSIBLE 0xFFFE +#endif // !defined(WAVE_FORMAT_EXTENSIBLE) + +#ifndef GetWindowLongPtr + #define GetWindowLongPtrA GetWindowLongA + #define GetWindowLongPtrW GetWindowLongW + #ifdef UNICODE + #define GetWindowLongPtr GetWindowLongPtrW + #else + #define GetWindowLongPtr GetWindowLongPtrA + #endif // !UNICODE +#endif // !GetWindowLongPtr + +#ifndef SetWindowLongPtr + #define SetWindowLongPtrA SetWindowLongA + #define SetWindowLongPtrW SetWindowLongW + #ifdef UNICODE + #define SetWindowLongPtr SetWindowLongPtrW + #else + #define SetWindowLongPtr SetWindowLongPtrA + #endif // !UNICODE +#endif // !SetWindowLongPtr + +#ifndef GWLP_WNDPROC + #define GWLP_WNDPROC (-4) +#endif +#ifndef GWLP_HINSTANCE + #define GWLP_HINSTANCE (-6) +#endif +#ifndef GWLP_HWNDPARENT + #define GWLP_HWNDPARENT (-8) +#endif +#ifndef GWLP_USERDATA + #define GWLP_USERDATA (-21) +#endif +#ifndef GWLP_ID + #define GWLP_ID (-12) +#endif +#ifndef DWLP_MSGRESULT + #define DWLP_MSGRESULT 0 +#endif +#ifndef DWLP_DLGPROC + #define DWLP_DLGPROC DWLP_MSGRESULT + sizeof(LRESULT) +#endif +#ifndef DWLP_USER + #define DWLP_USER DWLP_DLGPROC + sizeof(DLGPROC) +#endif +/////////////////////////////////////////////////////////////////////////// +// End Platform SDK definitions +/////////////////////////////////////////////////////////////////////////// + + +#pragma warning(disable:4201) // warning C4201: nonstandard extension used : nameless struct/union +#include // Generated IDL header file for streams interfaces + +#include // Helper class for REFERENCE_TIME management +#include // Debug support for logging and ASSERTs +#include // ActiveMovie video interfaces and definitions +//include amaudio.h explicitly if you need it. it requires the DirectX SDK. +//#include // ActiveMovie audio interfaces and definitions +#include // General helper classes for threads etc +#include // Base COM classes to support IUnknown +#include // Filter registration support functions +#include // Performance measurement +#include // Light weight com function prototypes + +#include // Simple cache container class +#include // Non MFC generic list class +#include // CMsgThread +#include // Helper class for managing media types +#include // conversions between FOURCCs and GUIDs +#include // generated from control.odl +#include // control interface utility classes +#include // event code definitions +#include // Main streams architecture class hierachy +#include // Generic transform filter +#include // Generic transform-in-place filter +#include // declaration of type GUIDs and well-known clsids +#include // Generic source filter +#include // Output pin queueing +#include // HRESULT status and error definitions +#include // Base class for writing ActiveX renderers +#include // Helps with filters that manage windows +#include // Implements the IVideoWindow interface +#include // Specifically video related classes +#include // Base clock class +#include // System clock +#include // IPersistStream helper class +#include // Video Transform Filter base class +#include +#include // Base property page class +#include // IAMStreamControl support +#include // External device control interface defines +#include // audio filter device error event codes + +#else + #ifdef DEBUG + #pragma message("STREAMS.H included TWICE") + #endif +#endif // __STREAMS__ diff --git a/videoInputSrcAndDemos/libs/DShow/Include/strmctl.h b/videoInputSrcAndDemos/libs/DShow/Include/strmctl.h index 2a1475f..d054777 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/strmctl.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/strmctl.h @@ -1,157 +1,157 @@ -//------------------------------------------------------------------------------ -// File: StrmCtl.h -// -// Desc: DirectShow base classes. -// -// Copyright (c) Microsoft Corporation. All rights reserved. -//------------------------------------------------------------------------------ - - -#ifndef __strmctl_h__ -#define __strmctl_h__ - -class CBaseStreamControl : public IAMStreamControl -{ -public: - // Used by the implementation - enum StreamControlState - { STREAM_FLOWING = 0x1000, - STREAM_DISCARDING - }; - -private: - enum StreamControlState m_StreamState; // Current stream state - enum StreamControlState m_StreamStateOnStop; // State after next stop - // (i.e.Blocking or Discarding) - - REFERENCE_TIME m_tStartTime; // MAX_TIME implies none - REFERENCE_TIME m_tStopTime; // MAX_TIME implies none - DWORD m_dwStartCookie; // Cookie for notification to app - DWORD m_dwStopCookie; // Cookie for notification to app - volatile BOOL m_bIsFlushing; // No optimization pls! - volatile BOOL m_bStopSendExtra; // bSendExtra was set - volatile BOOL m_bStopExtraSent; // the extra one was sent - - CCritSec m_CritSec; // CritSec to guard above attributes - - // Event to fire when we can come - // out of blocking, or to come out of waiting - // to discard if we change our minds. - // - CAMEvent m_StreamEvent; - - // All of these methods execute immediately. Helpers for others. - // - void ExecuteStop(); - void ExecuteStart(); - void CancelStop(); - void CancelStart(); - - // Some things we need to be told by our owning filter - // Your pin must also expose IAMStreamControl when QI'd for it! - // - IReferenceClock * m_pRefClock; // Need it to set advises - // Filter must tell us via - // SetSyncSource - IMediaEventSink * m_pSink; // Event sink - // Filter must tell us after it - // creates it in JoinFilterGraph() - FILTER_STATE m_FilterState; // Just need it! - // Filter must tell us via - // NotifyFilterState - REFERENCE_TIME m_tRunStart; // Per the Run call to the filter - - // This guy will return one of the three StreamControlState's. Here's what - // the caller should do for each one: - // - // STREAM_FLOWING: Proceed as usual (render or pass the sample on) - // STREAM_DISCARDING: Calculate the time 'til *pSampleStop and wait - // that long for the event handle - // (GetStreamEventHandle()). If the wait - // expires, throw the sample away. If the event - // fires, call me back - I've changed my mind. - // - enum StreamControlState CheckSampleTimes( const REFERENCE_TIME * pSampleStart, - const REFERENCE_TIME * pSampleStop ); - -public: - // You don't have to tell us much when we're created, but there are other - // obligations that must be met. See SetSyncSource & NotifyFilterState - // below. - // - CBaseStreamControl(); - ~CBaseStreamControl(); - - // If you want this class to work properly, there are thing you need to - // (keep) telling it. Filters with pins that use this class - // should ensure that they pass through to this method any calls they - // receive on their SetSyncSource. - - // We need a clock to see what time it is. This is for the - // "discard in a timely fashion" logic. If we discard everything as - // quick as possible, a whole 60 minute file could get discarded in the - // first 10 seconds, and if somebody wants to turn streaming on at 30 - // minutes into the file, and they make the call more than a few seconds - // after the graph is run, it may be too late! - // So we hold every sample until it's time has gone, then we discard it. - // The filter should call this when it gets a SetSyncSource - // - void SetSyncSource( IReferenceClock * pRefClock ) - { - CAutoLock lck(&m_CritSec); - if (m_pRefClock) m_pRefClock->Release(); - m_pRefClock = pRefClock; - if (m_pRefClock) m_pRefClock->AddRef(); - } - - // Set event sink for notifications - // The filter should call this in its JoinFilterGraph after it creates the - // IMediaEventSink - // - void SetFilterGraph( IMediaEventSink *pSink ) { - m_pSink = pSink; - } - - // Since we schedule in stream time, we need the tStart and must track the - // state of our owning filter. - // The app should call this ever state change - // - void NotifyFilterState( FILTER_STATE new_state, REFERENCE_TIME tStart = 0 ); - - // Filter should call Flushing(TRUE) in BeginFlush, - // and Flushing(FALSE) in EndFlush. - // - void Flushing( BOOL bInProgress ); - - - // The two main methods of IAMStreamControl - - // Class adds default values suitable for immediate - // muting and unmuting of the stream. - - STDMETHODIMP StopAt( const REFERENCE_TIME * ptStop = NULL, - BOOL bSendExtra = FALSE, - DWORD dwCookie = 0 ); - STDMETHODIMP StartAt( const REFERENCE_TIME * ptStart = NULL, - DWORD dwCookie = 0 ); - STDMETHODIMP GetInfo( AM_STREAM_INFO *pInfo); - - // Helper function for pin's receive method. Call this with - // the sample and we'll tell you what to do with it. We'll do a - // WaitForSingleObject within this call if one is required. This is - // a "What should I do with this sample?" kind of call. We'll tell the - // caller to either flow it or discard it. - // If pSample is NULL we evaluate based on the current state - // settings - enum StreamControlState CheckStreamState( IMediaSample * pSample ); - -private: - // These don't require locking, but we are relying on the fact that - // m_StreamState can be retrieved with integrity, and is a snap shot that - // may have just been, or may be just about to be, changed. - HANDLE GetStreamEventHandle() const { return m_StreamEvent; } - enum StreamControlState GetStreamState() const { return m_StreamState; } - BOOL IsStreaming() const { return m_StreamState == STREAM_FLOWING; } -}; - -#endif +//------------------------------------------------------------------------------ +// File: StrmCtl.h +// +// Desc: DirectShow base classes. +// +// Copyright (c) Microsoft Corporation. All rights reserved. +//------------------------------------------------------------------------------ + + +#ifndef __strmctl_h__ +#define __strmctl_h__ + +class CBaseStreamControl : public IAMStreamControl +{ +public: + // Used by the implementation + enum StreamControlState + { STREAM_FLOWING = 0x1000, + STREAM_DISCARDING + }; + +private: + enum StreamControlState m_StreamState; // Current stream state + enum StreamControlState m_StreamStateOnStop; // State after next stop + // (i.e.Blocking or Discarding) + + REFERENCE_TIME m_tStartTime; // MAX_TIME implies none + REFERENCE_TIME m_tStopTime; // MAX_TIME implies none + DWORD m_dwStartCookie; // Cookie for notification to app + DWORD m_dwStopCookie; // Cookie for notification to app + volatile BOOL m_bIsFlushing; // No optimization pls! + volatile BOOL m_bStopSendExtra; // bSendExtra was set + volatile BOOL m_bStopExtraSent; // the extra one was sent + + CCritSec m_CritSec; // CritSec to guard above attributes + + // Event to fire when we can come + // out of blocking, or to come out of waiting + // to discard if we change our minds. + // + CAMEvent m_StreamEvent; + + // All of these methods execute immediately. Helpers for others. + // + void ExecuteStop(); + void ExecuteStart(); + void CancelStop(); + void CancelStart(); + + // Some things we need to be told by our owning filter + // Your pin must also expose IAMStreamControl when QI'd for it! + // + IReferenceClock * m_pRefClock; // Need it to set advises + // Filter must tell us via + // SetSyncSource + IMediaEventSink * m_pSink; // Event sink + // Filter must tell us after it + // creates it in JoinFilterGraph() + FILTER_STATE m_FilterState; // Just need it! + // Filter must tell us via + // NotifyFilterState + REFERENCE_TIME m_tRunStart; // Per the Run call to the filter + + // This guy will return one of the three StreamControlState's. Here's what + // the caller should do for each one: + // + // STREAM_FLOWING: Proceed as usual (render or pass the sample on) + // STREAM_DISCARDING: Calculate the time 'til *pSampleStop and wait + // that long for the event handle + // (GetStreamEventHandle()). If the wait + // expires, throw the sample away. If the event + // fires, call me back - I've changed my mind. + // + enum StreamControlState CheckSampleTimes( const REFERENCE_TIME * pSampleStart, + const REFERENCE_TIME * pSampleStop ); + +public: + // You don't have to tell us much when we're created, but there are other + // obligations that must be met. See SetSyncSource & NotifyFilterState + // below. + // + CBaseStreamControl(); + ~CBaseStreamControl(); + + // If you want this class to work properly, there are thing you need to + // (keep) telling it. Filters with pins that use this class + // should ensure that they pass through to this method any calls they + // receive on their SetSyncSource. + + // We need a clock to see what time it is. This is for the + // "discard in a timely fashion" logic. If we discard everything as + // quick as possible, a whole 60 minute file could get discarded in the + // first 10 seconds, and if somebody wants to turn streaming on at 30 + // minutes into the file, and they make the call more than a few seconds + // after the graph is run, it may be too late! + // So we hold every sample until it's time has gone, then we discard it. + // The filter should call this when it gets a SetSyncSource + // + void SetSyncSource( IReferenceClock * pRefClock ) + { + CAutoLock lck(&m_CritSec); + if (m_pRefClock) m_pRefClock->Release(); + m_pRefClock = pRefClock; + if (m_pRefClock) m_pRefClock->AddRef(); + } + + // Set event sink for notifications + // The filter should call this in its JoinFilterGraph after it creates the + // IMediaEventSink + // + void SetFilterGraph( IMediaEventSink *pSink ) { + m_pSink = pSink; + } + + // Since we schedule in stream time, we need the tStart and must track the + // state of our owning filter. + // The app should call this ever state change + // + void NotifyFilterState( FILTER_STATE new_state, REFERENCE_TIME tStart = 0 ); + + // Filter should call Flushing(TRUE) in BeginFlush, + // and Flushing(FALSE) in EndFlush. + // + void Flushing( BOOL bInProgress ); + + + // The two main methods of IAMStreamControl + + // Class adds default values suitable for immediate + // muting and unmuting of the stream. + + STDMETHODIMP StopAt( const REFERENCE_TIME * ptStop = NULL, + BOOL bSendExtra = FALSE, + DWORD dwCookie = 0 ); + STDMETHODIMP StartAt( const REFERENCE_TIME * ptStart = NULL, + DWORD dwCookie = 0 ); + STDMETHODIMP GetInfo( AM_STREAM_INFO *pInfo); + + // Helper function for pin's receive method. Call this with + // the sample and we'll tell you what to do with it. We'll do a + // WaitForSingleObject within this call if one is required. This is + // a "What should I do with this sample?" kind of call. We'll tell the + // caller to either flow it or discard it. + // If pSample is NULL we evaluate based on the current state + // settings + enum StreamControlState CheckStreamState( IMediaSample * pSample ); + +private: + // These don't require locking, but we are relying on the fact that + // m_StreamState can be retrieved with integrity, and is a snap shot that + // may have just been, or may be just about to be, changed. + HANDLE GetStreamEventHandle() const { return m_StreamEvent; } + enum StreamControlState GetStreamState() const { return m_StreamState; } + BOOL IsStreaming() const { return m_StreamState == STREAM_FLOWING; } +}; + +#endif diff --git a/videoInputSrcAndDemos/libs/DShow/Include/strmif.h b/videoInputSrcAndDemos/libs/DShow/Include/strmif.h index db904d5..23cae1b 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/strmif.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/strmif.h @@ -1 +1,5 @@ - #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.0347 */ /* Compiler settings for strmif.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 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 #endif // __RPCNDR_H_VERSION__ #ifndef COM_NO_WINDOWS_H #include "windows.h" #include "ole2.h" #endif /*COM_NO_WINDOWS_H*/ #ifndef __strmif_h__ #define __strmif_h__ #if defined(_MSC_VER) && (_MSC_VER >= 1020) #pragma once #endif /* Forward Declarations */ #ifndef __ICreateDevEnum_FWD_DEFINED__ #define __ICreateDevEnum_FWD_DEFINED__ typedef interface ICreateDevEnum ICreateDevEnum; #endif /* __ICreateDevEnum_FWD_DEFINED__ */ #ifndef __IPin_FWD_DEFINED__ #define __IPin_FWD_DEFINED__ typedef interface IPin IPin; #endif /* __IPin_FWD_DEFINED__ */ #ifndef __IEnumPins_FWD_DEFINED__ #define __IEnumPins_FWD_DEFINED__ typedef interface IEnumPins IEnumPins; #endif /* __IEnumPins_FWD_DEFINED__ */ #ifndef __IEnumMediaTypes_FWD_DEFINED__ #define __IEnumMediaTypes_FWD_DEFINED__ typedef interface IEnumMediaTypes IEnumMediaTypes; #endif /* __IEnumMediaTypes_FWD_DEFINED__ */ #ifndef __IFilterGraph_FWD_DEFINED__ #define __IFilterGraph_FWD_DEFINED__ typedef interface IFilterGraph IFilterGraph; #endif /* __IFilterGraph_FWD_DEFINED__ */ #ifndef __IEnumFilters_FWD_DEFINED__ #define __IEnumFilters_FWD_DEFINED__ typedef interface IEnumFilters IEnumFilters; #endif /* __IEnumFilters_FWD_DEFINED__ */ #ifndef __IMediaFilter_FWD_DEFINED__ #define __IMediaFilter_FWD_DEFINED__ typedef interface IMediaFilter IMediaFilter; #endif /* __IMediaFilter_FWD_DEFINED__ */ #ifndef __IBaseFilter_FWD_DEFINED__ #define __IBaseFilter_FWD_DEFINED__ typedef interface IBaseFilter IBaseFilter; #endif /* __IBaseFilter_FWD_DEFINED__ */ #ifndef __IReferenceClock_FWD_DEFINED__ #define __IReferenceClock_FWD_DEFINED__ typedef interface IReferenceClock IReferenceClock; #endif /* __IReferenceClock_FWD_DEFINED__ */ #ifndef __IReferenceClock2_FWD_DEFINED__ #define __IReferenceClock2_FWD_DEFINED__ typedef interface IReferenceClock2 IReferenceClock2; #endif /* __IReferenceClock2_FWD_DEFINED__ */ #ifndef __IMediaSample_FWD_DEFINED__ #define __IMediaSample_FWD_DEFINED__ typedef interface IMediaSample IMediaSample; #endif /* __IMediaSample_FWD_DEFINED__ */ #ifndef __IMediaSample2_FWD_DEFINED__ #define __IMediaSample2_FWD_DEFINED__ typedef interface IMediaSample2 IMediaSample2; #endif /* __IMediaSample2_FWD_DEFINED__ */ #ifndef __IMemAllocator_FWD_DEFINED__ #define __IMemAllocator_FWD_DEFINED__ typedef interface IMemAllocator IMemAllocator; #endif /* __IMemAllocator_FWD_DEFINED__ */ #ifndef __IMemAllocatorCallbackTemp_FWD_DEFINED__ #define __IMemAllocatorCallbackTemp_FWD_DEFINED__ typedef interface IMemAllocatorCallbackTemp IMemAllocatorCallbackTemp; #endif /* __IMemAllocatorCallbackTemp_FWD_DEFINED__ */ #ifndef __IMemAllocatorNotifyCallbackTemp_FWD_DEFINED__ #define __IMemAllocatorNotifyCallbackTemp_FWD_DEFINED__ typedef interface IMemAllocatorNotifyCallbackTemp IMemAllocatorNotifyCallbackTemp; #endif /* __IMemAllocatorNotifyCallbackTemp_FWD_DEFINED__ */ #ifndef __IMemInputPin_FWD_DEFINED__ #define __IMemInputPin_FWD_DEFINED__ typedef interface IMemInputPin IMemInputPin; #endif /* __IMemInputPin_FWD_DEFINED__ */ #ifndef __IAMovieSetup_FWD_DEFINED__ #define __IAMovieSetup_FWD_DEFINED__ typedef interface IAMovieSetup IAMovieSetup; #endif /* __IAMovieSetup_FWD_DEFINED__ */ #ifndef __IMediaSeeking_FWD_DEFINED__ #define __IMediaSeeking_FWD_DEFINED__ typedef interface IMediaSeeking IMediaSeeking; #endif /* __IMediaSeeking_FWD_DEFINED__ */ #ifndef __IEnumRegFilters_FWD_DEFINED__ #define __IEnumRegFilters_FWD_DEFINED__ typedef interface IEnumRegFilters IEnumRegFilters; #endif /* __IEnumRegFilters_FWD_DEFINED__ */ #ifndef __IFilterMapper_FWD_DEFINED__ #define __IFilterMapper_FWD_DEFINED__ typedef interface IFilterMapper IFilterMapper; #endif /* __IFilterMapper_FWD_DEFINED__ */ #ifndef __IFilterMapper2_FWD_DEFINED__ #define __IFilterMapper2_FWD_DEFINED__ typedef interface IFilterMapper2 IFilterMapper2; #endif /* __IFilterMapper2_FWD_DEFINED__ */ #ifndef __IFilterMapper3_FWD_DEFINED__ #define __IFilterMapper3_FWD_DEFINED__ typedef interface IFilterMapper3 IFilterMapper3; #endif /* __IFilterMapper3_FWD_DEFINED__ */ #ifndef __IQualityControl_FWD_DEFINED__ #define __IQualityControl_FWD_DEFINED__ typedef interface IQualityControl IQualityControl; #endif /* __IQualityControl_FWD_DEFINED__ */ #ifndef __IOverlayNotify_FWD_DEFINED__ #define __IOverlayNotify_FWD_DEFINED__ typedef interface IOverlayNotify IOverlayNotify; #endif /* __IOverlayNotify_FWD_DEFINED__ */ #ifndef __IOverlayNotify2_FWD_DEFINED__ #define __IOverlayNotify2_FWD_DEFINED__ typedef interface IOverlayNotify2 IOverlayNotify2; #endif /* __IOverlayNotify2_FWD_DEFINED__ */ #ifndef __IOverlay_FWD_DEFINED__ #define __IOverlay_FWD_DEFINED__ typedef interface IOverlay IOverlay; #endif /* __IOverlay_FWD_DEFINED__ */ #ifndef __IMediaEventSink_FWD_DEFINED__ #define __IMediaEventSink_FWD_DEFINED__ typedef interface IMediaEventSink IMediaEventSink; #endif /* __IMediaEventSink_FWD_DEFINED__ */ #ifndef __IFileSourceFilter_FWD_DEFINED__ #define __IFileSourceFilter_FWD_DEFINED__ typedef interface IFileSourceFilter IFileSourceFilter; #endif /* __IFileSourceFilter_FWD_DEFINED__ */ #ifndef __IFileSinkFilter_FWD_DEFINED__ #define __IFileSinkFilter_FWD_DEFINED__ typedef interface IFileSinkFilter IFileSinkFilter; #endif /* __IFileSinkFilter_FWD_DEFINED__ */ #ifndef __IFileSinkFilter2_FWD_DEFINED__ #define __IFileSinkFilter2_FWD_DEFINED__ typedef interface IFileSinkFilter2 IFileSinkFilter2; #endif /* __IFileSinkFilter2_FWD_DEFINED__ */ #ifndef __IGraphBuilder_FWD_DEFINED__ #define __IGraphBuilder_FWD_DEFINED__ typedef interface IGraphBuilder IGraphBuilder; #endif /* __IGraphBuilder_FWD_DEFINED__ */ #ifndef __ICaptureGraphBuilder_FWD_DEFINED__ #define __ICaptureGraphBuilder_FWD_DEFINED__ typedef interface ICaptureGraphBuilder ICaptureGraphBuilder; #endif /* __ICaptureGraphBuilder_FWD_DEFINED__ */ #ifndef __IAMCopyCaptureFileProgress_FWD_DEFINED__ #define __IAMCopyCaptureFileProgress_FWD_DEFINED__ typedef interface IAMCopyCaptureFileProgress IAMCopyCaptureFileProgress; #endif /* __IAMCopyCaptureFileProgress_FWD_DEFINED__ */ #ifndef __ICaptureGraphBuilder2_FWD_DEFINED__ #define __ICaptureGraphBuilder2_FWD_DEFINED__ typedef interface ICaptureGraphBuilder2 ICaptureGraphBuilder2; #endif /* __ICaptureGraphBuilder2_FWD_DEFINED__ */ #ifndef __IFilterGraph2_FWD_DEFINED__ #define __IFilterGraph2_FWD_DEFINED__ typedef interface IFilterGraph2 IFilterGraph2; #endif /* __IFilterGraph2_FWD_DEFINED__ */ #ifndef __IStreamBuilder_FWD_DEFINED__ #define __IStreamBuilder_FWD_DEFINED__ typedef interface IStreamBuilder IStreamBuilder; #endif /* __IStreamBuilder_FWD_DEFINED__ */ #ifndef __IAsyncReader_FWD_DEFINED__ #define __IAsyncReader_FWD_DEFINED__ typedef interface IAsyncReader IAsyncReader; #endif /* __IAsyncReader_FWD_DEFINED__ */ #ifndef __IGraphVersion_FWD_DEFINED__ #define __IGraphVersion_FWD_DEFINED__ typedef interface IGraphVersion IGraphVersion; #endif /* __IGraphVersion_FWD_DEFINED__ */ #ifndef __IResourceConsumer_FWD_DEFINED__ #define __IResourceConsumer_FWD_DEFINED__ typedef interface IResourceConsumer IResourceConsumer; #endif /* __IResourceConsumer_FWD_DEFINED__ */ #ifndef __IResourceManager_FWD_DEFINED__ #define __IResourceManager_FWD_DEFINED__ typedef interface IResourceManager IResourceManager; #endif /* __IResourceManager_FWD_DEFINED__ */ #ifndef __IDistributorNotify_FWD_DEFINED__ #define __IDistributorNotify_FWD_DEFINED__ typedef interface IDistributorNotify IDistributorNotify; #endif /* __IDistributorNotify_FWD_DEFINED__ */ #ifndef __IAMStreamControl_FWD_DEFINED__ #define __IAMStreamControl_FWD_DEFINED__ typedef interface IAMStreamControl IAMStreamControl; #endif /* __IAMStreamControl_FWD_DEFINED__ */ #ifndef __ISeekingPassThru_FWD_DEFINED__ #define __ISeekingPassThru_FWD_DEFINED__ typedef interface ISeekingPassThru ISeekingPassThru; #endif /* __ISeekingPassThru_FWD_DEFINED__ */ #ifndef __IAMStreamConfig_FWD_DEFINED__ #define __IAMStreamConfig_FWD_DEFINED__ typedef interface IAMStreamConfig IAMStreamConfig; #endif /* __IAMStreamConfig_FWD_DEFINED__ */ #ifndef __IConfigInterleaving_FWD_DEFINED__ #define __IConfigInterleaving_FWD_DEFINED__ typedef interface IConfigInterleaving IConfigInterleaving; #endif /* __IConfigInterleaving_FWD_DEFINED__ */ #ifndef __IConfigAviMux_FWD_DEFINED__ #define __IConfigAviMux_FWD_DEFINED__ typedef interface IConfigAviMux IConfigAviMux; #endif /* __IConfigAviMux_FWD_DEFINED__ */ #ifndef __IAMVideoCompression_FWD_DEFINED__ #define __IAMVideoCompression_FWD_DEFINED__ typedef interface IAMVideoCompression IAMVideoCompression; #endif /* __IAMVideoCompression_FWD_DEFINED__ */ #ifndef __IAMVfwCaptureDialogs_FWD_DEFINED__ #define __IAMVfwCaptureDialogs_FWD_DEFINED__ typedef interface IAMVfwCaptureDialogs IAMVfwCaptureDialogs; #endif /* __IAMVfwCaptureDialogs_FWD_DEFINED__ */ #ifndef __IAMVfwCompressDialogs_FWD_DEFINED__ #define __IAMVfwCompressDialogs_FWD_DEFINED__ typedef interface IAMVfwCompressDialogs IAMVfwCompressDialogs; #endif /* __IAMVfwCompressDialogs_FWD_DEFINED__ */ #ifndef __IAMDroppedFrames_FWD_DEFINED__ #define __IAMDroppedFrames_FWD_DEFINED__ typedef interface IAMDroppedFrames IAMDroppedFrames; #endif /* __IAMDroppedFrames_FWD_DEFINED__ */ #ifndef __IAMAudioInputMixer_FWD_DEFINED__ #define __IAMAudioInputMixer_FWD_DEFINED__ typedef interface IAMAudioInputMixer IAMAudioInputMixer; #endif /* __IAMAudioInputMixer_FWD_DEFINED__ */ #ifndef __IAMBufferNegotiation_FWD_DEFINED__ #define __IAMBufferNegotiation_FWD_DEFINED__ typedef interface IAMBufferNegotiation IAMBufferNegotiation; #endif /* __IAMBufferNegotiation_FWD_DEFINED__ */ #ifndef __IAMAnalogVideoDecoder_FWD_DEFINED__ #define __IAMAnalogVideoDecoder_FWD_DEFINED__ typedef interface IAMAnalogVideoDecoder IAMAnalogVideoDecoder; #endif /* __IAMAnalogVideoDecoder_FWD_DEFINED__ */ #ifndef __IAMVideoProcAmp_FWD_DEFINED__ #define __IAMVideoProcAmp_FWD_DEFINED__ typedef interface IAMVideoProcAmp IAMVideoProcAmp; #endif /* __IAMVideoProcAmp_FWD_DEFINED__ */ #ifndef __IAMCameraControl_FWD_DEFINED__ #define __IAMCameraControl_FWD_DEFINED__ typedef interface IAMCameraControl IAMCameraControl; #endif /* __IAMCameraControl_FWD_DEFINED__ */ #ifndef __IAMVideoControl_FWD_DEFINED__ #define __IAMVideoControl_FWD_DEFINED__ typedef interface IAMVideoControl IAMVideoControl; #endif /* __IAMVideoControl_FWD_DEFINED__ */ #ifndef __IAMCrossbar_FWD_DEFINED__ #define __IAMCrossbar_FWD_DEFINED__ typedef interface IAMCrossbar IAMCrossbar; #endif /* __IAMCrossbar_FWD_DEFINED__ */ #ifndef __IAMTuner_FWD_DEFINED__ #define __IAMTuner_FWD_DEFINED__ typedef interface IAMTuner IAMTuner; #endif /* __IAMTuner_FWD_DEFINED__ */ #ifndef __IAMTunerNotification_FWD_DEFINED__ #define __IAMTunerNotification_FWD_DEFINED__ typedef interface IAMTunerNotification IAMTunerNotification; #endif /* __IAMTunerNotification_FWD_DEFINED__ */ #ifndef __IAMTVTuner_FWD_DEFINED__ #define __IAMTVTuner_FWD_DEFINED__ typedef interface IAMTVTuner IAMTVTuner; #endif /* __IAMTVTuner_FWD_DEFINED__ */ #ifndef __IBPCSatelliteTuner_FWD_DEFINED__ #define __IBPCSatelliteTuner_FWD_DEFINED__ typedef interface IBPCSatelliteTuner IBPCSatelliteTuner; #endif /* __IBPCSatelliteTuner_FWD_DEFINED__ */ #ifndef __IAMTVAudio_FWD_DEFINED__ #define __IAMTVAudio_FWD_DEFINED__ typedef interface IAMTVAudio IAMTVAudio; #endif /* __IAMTVAudio_FWD_DEFINED__ */ #ifndef __IAMTVAudioNotification_FWD_DEFINED__ #define __IAMTVAudioNotification_FWD_DEFINED__ typedef interface IAMTVAudioNotification IAMTVAudioNotification; #endif /* __IAMTVAudioNotification_FWD_DEFINED__ */ #ifndef __IAMAnalogVideoEncoder_FWD_DEFINED__ #define __IAMAnalogVideoEncoder_FWD_DEFINED__ typedef interface IAMAnalogVideoEncoder IAMAnalogVideoEncoder; #endif /* __IAMAnalogVideoEncoder_FWD_DEFINED__ */ #ifndef __IKsPropertySet_FWD_DEFINED__ #define __IKsPropertySet_FWD_DEFINED__ typedef interface IKsPropertySet IKsPropertySet; #endif /* __IKsPropertySet_FWD_DEFINED__ */ #ifndef __IMediaPropertyBag_FWD_DEFINED__ #define __IMediaPropertyBag_FWD_DEFINED__ typedef interface IMediaPropertyBag IMediaPropertyBag; #endif /* __IMediaPropertyBag_FWD_DEFINED__ */ #ifndef __IPersistMediaPropertyBag_FWD_DEFINED__ #define __IPersistMediaPropertyBag_FWD_DEFINED__ typedef interface IPersistMediaPropertyBag IPersistMediaPropertyBag; #endif /* __IPersistMediaPropertyBag_FWD_DEFINED__ */ #ifndef __IAMPhysicalPinInfo_FWD_DEFINED__ #define __IAMPhysicalPinInfo_FWD_DEFINED__ typedef interface IAMPhysicalPinInfo IAMPhysicalPinInfo; #endif /* __IAMPhysicalPinInfo_FWD_DEFINED__ */ #ifndef __IAMExtDevice_FWD_DEFINED__ #define __IAMExtDevice_FWD_DEFINED__ typedef interface IAMExtDevice IAMExtDevice; #endif /* __IAMExtDevice_FWD_DEFINED__ */ #ifndef __IAMExtTransport_FWD_DEFINED__ #define __IAMExtTransport_FWD_DEFINED__ typedef interface IAMExtTransport IAMExtTransport; #endif /* __IAMExtTransport_FWD_DEFINED__ */ #ifndef __IAMTimecodeReader_FWD_DEFINED__ #define __IAMTimecodeReader_FWD_DEFINED__ typedef interface IAMTimecodeReader IAMTimecodeReader; #endif /* __IAMTimecodeReader_FWD_DEFINED__ */ #ifndef __IAMTimecodeGenerator_FWD_DEFINED__ #define __IAMTimecodeGenerator_FWD_DEFINED__ typedef interface IAMTimecodeGenerator IAMTimecodeGenerator; #endif /* __IAMTimecodeGenerator_FWD_DEFINED__ */ #ifndef __IAMTimecodeDisplay_FWD_DEFINED__ #define __IAMTimecodeDisplay_FWD_DEFINED__ typedef interface IAMTimecodeDisplay IAMTimecodeDisplay; #endif /* __IAMTimecodeDisplay_FWD_DEFINED__ */ #ifndef __IAMDevMemoryAllocator_FWD_DEFINED__ #define __IAMDevMemoryAllocator_FWD_DEFINED__ typedef interface IAMDevMemoryAllocator IAMDevMemoryAllocator; #endif /* __IAMDevMemoryAllocator_FWD_DEFINED__ */ #ifndef __IAMDevMemoryControl_FWD_DEFINED__ #define __IAMDevMemoryControl_FWD_DEFINED__ typedef interface IAMDevMemoryControl IAMDevMemoryControl; #endif /* __IAMDevMemoryControl_FWD_DEFINED__ */ #ifndef __IAMStreamSelect_FWD_DEFINED__ #define __IAMStreamSelect_FWD_DEFINED__ typedef interface IAMStreamSelect IAMStreamSelect; #endif /* __IAMStreamSelect_FWD_DEFINED__ */ #ifndef __IAMResourceControl_FWD_DEFINED__ #define __IAMResourceControl_FWD_DEFINED__ typedef interface IAMResourceControl IAMResourceControl; #endif /* __IAMResourceControl_FWD_DEFINED__ */ #ifndef __IAMClockAdjust_FWD_DEFINED__ #define __IAMClockAdjust_FWD_DEFINED__ typedef interface IAMClockAdjust IAMClockAdjust; #endif /* __IAMClockAdjust_FWD_DEFINED__ */ #ifndef __IAMFilterMiscFlags_FWD_DEFINED__ #define __IAMFilterMiscFlags_FWD_DEFINED__ typedef interface IAMFilterMiscFlags IAMFilterMiscFlags; #endif /* __IAMFilterMiscFlags_FWD_DEFINED__ */ #ifndef __IDrawVideoImage_FWD_DEFINED__ #define __IDrawVideoImage_FWD_DEFINED__ typedef interface IDrawVideoImage IDrawVideoImage; #endif /* __IDrawVideoImage_FWD_DEFINED__ */ #ifndef __IDecimateVideoImage_FWD_DEFINED__ #define __IDecimateVideoImage_FWD_DEFINED__ typedef interface IDecimateVideoImage IDecimateVideoImage; #endif /* __IDecimateVideoImage_FWD_DEFINED__ */ #ifndef __IAMVideoDecimationProperties_FWD_DEFINED__ #define __IAMVideoDecimationProperties_FWD_DEFINED__ typedef interface IAMVideoDecimationProperties IAMVideoDecimationProperties; #endif /* __IAMVideoDecimationProperties_FWD_DEFINED__ */ #ifndef __IVideoFrameStep_FWD_DEFINED__ #define __IVideoFrameStep_FWD_DEFINED__ typedef interface IVideoFrameStep IVideoFrameStep; #endif /* __IVideoFrameStep_FWD_DEFINED__ */ #ifndef __IAMLatency_FWD_DEFINED__ #define __IAMLatency_FWD_DEFINED__ typedef interface IAMLatency IAMLatency; #endif /* __IAMLatency_FWD_DEFINED__ */ #ifndef __IAMPushSource_FWD_DEFINED__ #define __IAMPushSource_FWD_DEFINED__ typedef interface IAMPushSource IAMPushSource; #endif /* __IAMPushSource_FWD_DEFINED__ */ #ifndef __IAMDeviceRemoval_FWD_DEFINED__ #define __IAMDeviceRemoval_FWD_DEFINED__ typedef interface IAMDeviceRemoval IAMDeviceRemoval; #endif /* __IAMDeviceRemoval_FWD_DEFINED__ */ #ifndef __IDVEnc_FWD_DEFINED__ #define __IDVEnc_FWD_DEFINED__ typedef interface IDVEnc IDVEnc; #endif /* __IDVEnc_FWD_DEFINED__ */ #ifndef __IIPDVDec_FWD_DEFINED__ #define __IIPDVDec_FWD_DEFINED__ typedef interface IIPDVDec IIPDVDec; #endif /* __IIPDVDec_FWD_DEFINED__ */ #ifndef __IDVRGB219_FWD_DEFINED__ #define __IDVRGB219_FWD_DEFINED__ typedef interface IDVRGB219 IDVRGB219; #endif /* __IDVRGB219_FWD_DEFINED__ */ #ifndef __IDVSplitter_FWD_DEFINED__ #define __IDVSplitter_FWD_DEFINED__ typedef interface IDVSplitter IDVSplitter; #endif /* __IDVSplitter_FWD_DEFINED__ */ #ifndef __IAMAudioRendererStats_FWD_DEFINED__ #define __IAMAudioRendererStats_FWD_DEFINED__ typedef interface IAMAudioRendererStats IAMAudioRendererStats; #endif /* __IAMAudioRendererStats_FWD_DEFINED__ */ #ifndef __IAMGraphStreams_FWD_DEFINED__ #define __IAMGraphStreams_FWD_DEFINED__ typedef interface IAMGraphStreams IAMGraphStreams; #endif /* __IAMGraphStreams_FWD_DEFINED__ */ #ifndef __IAMOverlayFX_FWD_DEFINED__ #define __IAMOverlayFX_FWD_DEFINED__ typedef interface IAMOverlayFX IAMOverlayFX; #endif /* __IAMOverlayFX_FWD_DEFINED__ */ #ifndef __IAMOpenProgress_FWD_DEFINED__ #define __IAMOpenProgress_FWD_DEFINED__ typedef interface IAMOpenProgress IAMOpenProgress; #endif /* __IAMOpenProgress_FWD_DEFINED__ */ #ifndef __IMpeg2Demultiplexer_FWD_DEFINED__ #define __IMpeg2Demultiplexer_FWD_DEFINED__ typedef interface IMpeg2Demultiplexer IMpeg2Demultiplexer; #endif /* __IMpeg2Demultiplexer_FWD_DEFINED__ */ #ifndef __IEnumStreamIdMap_FWD_DEFINED__ #define __IEnumStreamIdMap_FWD_DEFINED__ typedef interface IEnumStreamIdMap IEnumStreamIdMap; #endif /* __IEnumStreamIdMap_FWD_DEFINED__ */ #ifndef __IMPEG2StreamIdMap_FWD_DEFINED__ #define __IMPEG2StreamIdMap_FWD_DEFINED__ typedef interface IMPEG2StreamIdMap IMPEG2StreamIdMap; #endif /* __IMPEG2StreamIdMap_FWD_DEFINED__ */ #ifndef __IRegisterServiceProvider_FWD_DEFINED__ #define __IRegisterServiceProvider_FWD_DEFINED__ typedef interface IRegisterServiceProvider IRegisterServiceProvider; #endif /* __IRegisterServiceProvider_FWD_DEFINED__ */ #ifndef __IAMDecoderCaps_FWD_DEFINED__ #define __IAMDecoderCaps_FWD_DEFINED__ typedef interface IAMDecoderCaps IAMDecoderCaps; #endif /* __IAMDecoderCaps_FWD_DEFINED__ */ #ifndef __IAMClockSlave_FWD_DEFINED__ #define __IAMClockSlave_FWD_DEFINED__ typedef interface IAMClockSlave IAMClockSlave; #endif /* __IAMClockSlave_FWD_DEFINED__ */ #ifndef __IDvdControl_FWD_DEFINED__ #define __IDvdControl_FWD_DEFINED__ typedef interface IDvdControl IDvdControl; #endif /* __IDvdControl_FWD_DEFINED__ */ #ifndef __IDvdInfo_FWD_DEFINED__ #define __IDvdInfo_FWD_DEFINED__ typedef interface IDvdInfo IDvdInfo; #endif /* __IDvdInfo_FWD_DEFINED__ */ #ifndef __IDvdCmd_FWD_DEFINED__ #define __IDvdCmd_FWD_DEFINED__ typedef interface IDvdCmd IDvdCmd; #endif /* __IDvdCmd_FWD_DEFINED__ */ #ifndef __IDvdState_FWD_DEFINED__ #define __IDvdState_FWD_DEFINED__ typedef interface IDvdState IDvdState; #endif /* __IDvdState_FWD_DEFINED__ */ #ifndef __IDvdControl2_FWD_DEFINED__ #define __IDvdControl2_FWD_DEFINED__ typedef interface IDvdControl2 IDvdControl2; #endif /* __IDvdControl2_FWD_DEFINED__ */ #ifndef __IDvdInfo2_FWD_DEFINED__ #define __IDvdInfo2_FWD_DEFINED__ typedef interface IDvdInfo2 IDvdInfo2; #endif /* __IDvdInfo2_FWD_DEFINED__ */ #ifndef __IDvdGraphBuilder_FWD_DEFINED__ #define __IDvdGraphBuilder_FWD_DEFINED__ typedef interface IDvdGraphBuilder IDvdGraphBuilder; #endif /* __IDvdGraphBuilder_FWD_DEFINED__ */ #ifndef __IDDrawExclModeVideo_FWD_DEFINED__ #define __IDDrawExclModeVideo_FWD_DEFINED__ typedef interface IDDrawExclModeVideo IDDrawExclModeVideo; #endif /* __IDDrawExclModeVideo_FWD_DEFINED__ */ #ifndef __IDDrawExclModeVideoCallback_FWD_DEFINED__ #define __IDDrawExclModeVideoCallback_FWD_DEFINED__ typedef interface IDDrawExclModeVideoCallback IDDrawExclModeVideoCallback; #endif /* __IDDrawExclModeVideoCallback_FWD_DEFINED__ */ #ifndef __IPinConnection_FWD_DEFINED__ #define __IPinConnection_FWD_DEFINED__ typedef interface IPinConnection IPinConnection; #endif /* __IPinConnection_FWD_DEFINED__ */ #ifndef __IPinFlowControl_FWD_DEFINED__ #define __IPinFlowControl_FWD_DEFINED__ typedef interface IPinFlowControl IPinFlowControl; #endif /* __IPinFlowControl_FWD_DEFINED__ */ #ifndef __IGraphConfig_FWD_DEFINED__ #define __IGraphConfig_FWD_DEFINED__ typedef interface IGraphConfig IGraphConfig; #endif /* __IGraphConfig_FWD_DEFINED__ */ #ifndef __IGraphConfigCallback_FWD_DEFINED__ #define __IGraphConfigCallback_FWD_DEFINED__ typedef interface IGraphConfigCallback IGraphConfigCallback; #endif /* __IGraphConfigCallback_FWD_DEFINED__ */ #ifndef __IFilterChain_FWD_DEFINED__ #define __IFilterChain_FWD_DEFINED__ typedef interface IFilterChain IFilterChain; #endif /* __IFilterChain_FWD_DEFINED__ */ #ifndef __IVMRImagePresenter_FWD_DEFINED__ #define __IVMRImagePresenter_FWD_DEFINED__ typedef interface IVMRImagePresenter IVMRImagePresenter; #endif /* __IVMRImagePresenter_FWD_DEFINED__ */ #ifndef __IVMRSurfaceAllocator_FWD_DEFINED__ #define __IVMRSurfaceAllocator_FWD_DEFINED__ typedef interface IVMRSurfaceAllocator IVMRSurfaceAllocator; #endif /* __IVMRSurfaceAllocator_FWD_DEFINED__ */ #ifndef __IVMRSurfaceAllocatorNotify_FWD_DEFINED__ #define __IVMRSurfaceAllocatorNotify_FWD_DEFINED__ typedef interface IVMRSurfaceAllocatorNotify IVMRSurfaceAllocatorNotify; #endif /* __IVMRSurfaceAllocatorNotify_FWD_DEFINED__ */ #ifndef __IVMRWindowlessControl_FWD_DEFINED__ #define __IVMRWindowlessControl_FWD_DEFINED__ typedef interface IVMRWindowlessControl IVMRWindowlessControl; #endif /* __IVMRWindowlessControl_FWD_DEFINED__ */ #ifndef __IVMRMixerControl_FWD_DEFINED__ #define __IVMRMixerControl_FWD_DEFINED__ typedef interface IVMRMixerControl IVMRMixerControl; #endif /* __IVMRMixerControl_FWD_DEFINED__ */ #ifndef __IVMRMonitorConfig_FWD_DEFINED__ #define __IVMRMonitorConfig_FWD_DEFINED__ typedef interface IVMRMonitorConfig IVMRMonitorConfig; #endif /* __IVMRMonitorConfig_FWD_DEFINED__ */ #ifndef __IVMRFilterConfig_FWD_DEFINED__ #define __IVMRFilterConfig_FWD_DEFINED__ typedef interface IVMRFilterConfig IVMRFilterConfig; #endif /* __IVMRFilterConfig_FWD_DEFINED__ */ #ifndef __IVMRMixerBitmap_FWD_DEFINED__ #define __IVMRMixerBitmap_FWD_DEFINED__ typedef interface IVMRMixerBitmap IVMRMixerBitmap; #endif /* __IVMRMixerBitmap_FWD_DEFINED__ */ #ifndef __IVMRImageCompositor_FWD_DEFINED__ #define __IVMRImageCompositor_FWD_DEFINED__ typedef interface IVMRImageCompositor IVMRImageCompositor; #endif /* __IVMRImageCompositor_FWD_DEFINED__ */ #ifndef __IVMRVideoStreamControl_FWD_DEFINED__ #define __IVMRVideoStreamControl_FWD_DEFINED__ typedef interface IVMRVideoStreamControl IVMRVideoStreamControl; #endif /* __IVMRVideoStreamControl_FWD_DEFINED__ */ #ifndef __IVMRSurface_FWD_DEFINED__ #define __IVMRSurface_FWD_DEFINED__ typedef interface IVMRSurface IVMRSurface; #endif /* __IVMRSurface_FWD_DEFINED__ */ #ifndef __IVMRImagePresenterConfig_FWD_DEFINED__ #define __IVMRImagePresenterConfig_FWD_DEFINED__ typedef interface IVMRImagePresenterConfig IVMRImagePresenterConfig; #endif /* __IVMRImagePresenterConfig_FWD_DEFINED__ */ #ifndef __IVMRImagePresenterExclModeConfig_FWD_DEFINED__ #define __IVMRImagePresenterExclModeConfig_FWD_DEFINED__ typedef interface IVMRImagePresenterExclModeConfig IVMRImagePresenterExclModeConfig; #endif /* __IVMRImagePresenterExclModeConfig_FWD_DEFINED__ */ #ifndef __IVPManager_FWD_DEFINED__ #define __IVPManager_FWD_DEFINED__ typedef interface IVPManager IVPManager; #endif /* __IVPManager_FWD_DEFINED__ */ /* header files for imported files */ #include "unknwn.h" #include "objidl.h" #include "oaidl.h" #include "ocidl.h" #ifdef __cplusplus extern "C"{ #endif void * __RPC_USER MIDL_user_allocate(size_t); void __RPC_USER MIDL_user_free( void * ); /* interface __MIDL_itf_strmif_0000 */ /* [local] */ //+------------------------------------------------------------------------- // // Copyright (C) Microsoft Corporation, 1999-2001. // //-------------------------------------------------------------------------- // Disable /W4 compiler warning C4201: nameless struct/union #pragma warning(disable:4201) // Disable C4201: nameless struct/union #define CDEF_CLASS_DEFAULT 0x0001 #define CDEF_BYPASS_CLASS_MANAGER 0x0002 #define CDEF_MERIT_ABOVE_DO_NOT_USE 0x0008 #define CDEF_DEVMON_CMGR_DEVICE 0x0010 #define CDEF_DEVMON_DMO 0x0020 #define CDEF_DEVMON_PNP_DEVICE 0x0040 #define CDEF_DEVMON_FILTER 0x0080 #define CDEF_DEVMON_SELECTIVE_MASK 0x00f0 extern RPC_IF_HANDLE __MIDL_itf_strmif_0000_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0000_v0_0_s_ifspec; #ifndef __ICreateDevEnum_INTERFACE_DEFINED__ #define __ICreateDevEnum_INTERFACE_DEFINED__ /* interface ICreateDevEnum */ /* [unique][uuid][object] */ EXTERN_C const IID IID_ICreateDevEnum; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("29840822-5B84-11D0-BD3B-00A0C911CE86") ICreateDevEnum : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE CreateClassEnumerator( /* [in] */ REFCLSID clsidDeviceClass, /* [out] */ IEnumMoniker **ppEnumMoniker, /* [in] */ DWORD dwFlags) = 0; }; #else /* C style interface */ typedef struct ICreateDevEnumVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( ICreateDevEnum * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( ICreateDevEnum * This); ULONG ( STDMETHODCALLTYPE *Release )( ICreateDevEnum * This); HRESULT ( STDMETHODCALLTYPE *CreateClassEnumerator )( ICreateDevEnum * This, /* [in] */ REFCLSID clsidDeviceClass, /* [out] */ IEnumMoniker **ppEnumMoniker, /* [in] */ DWORD dwFlags); END_INTERFACE } ICreateDevEnumVtbl; interface ICreateDevEnum { CONST_VTBL struct ICreateDevEnumVtbl *lpVtbl; }; #ifdef COBJMACROS #define ICreateDevEnum_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define ICreateDevEnum_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define ICreateDevEnum_Release(This) \ (This)->lpVtbl -> Release(This) #define ICreateDevEnum_CreateClassEnumerator(This,clsidDeviceClass,ppEnumMoniker,dwFlags) \ (This)->lpVtbl -> CreateClassEnumerator(This,clsidDeviceClass,ppEnumMoniker,dwFlags) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE ICreateDevEnum_CreateClassEnumerator_Proxy( ICreateDevEnum * This, /* [in] */ REFCLSID clsidDeviceClass, /* [out] */ IEnumMoniker **ppEnumMoniker, /* [in] */ DWORD dwFlags); void __RPC_STUB ICreateDevEnum_CreateClassEnumerator_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __ICreateDevEnum_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0112 */ /* [local] */ #define CHARS_IN_GUID 39 typedef struct _AMMediaType { GUID majortype; GUID subtype; BOOL bFixedSizeSamples; BOOL bTemporalCompression; ULONG lSampleSize; GUID formattype; IUnknown *pUnk; ULONG cbFormat; /* [size_is] */ BYTE *pbFormat; } AM_MEDIA_TYPE; typedef enum _PinDirection { PINDIR_INPUT = 0, PINDIR_OUTPUT = PINDIR_INPUT + 1 } PIN_DIRECTION; #define MAX_PIN_NAME 128 #define MAX_FILTER_NAME 128 typedef LONGLONG REFERENCE_TIME; typedef double REFTIME; typedef DWORD_PTR HSEMAPHORE; typedef DWORD_PTR HEVENT; typedef struct _AllocatorProperties { long cBuffers; long cbBuffer; long cbAlign; long cbPrefix; } ALLOCATOR_PROPERTIES; extern RPC_IF_HANDLE __MIDL_itf_strmif_0112_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0112_v0_0_s_ifspec; #ifndef __IPin_INTERFACE_DEFINED__ #define __IPin_INTERFACE_DEFINED__ /* interface IPin */ /* [unique][uuid][object] */ typedef struct _PinInfo { IBaseFilter *pFilter; PIN_DIRECTION dir; WCHAR achName[ 128 ]; } PIN_INFO; EXTERN_C const IID IID_IPin; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("56a86891-0ad4-11ce-b03a-0020af0ba770") IPin : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE Connect( /* [in] */ IPin *pReceivePin, /* [in] */ const AM_MEDIA_TYPE *pmt) = 0; virtual HRESULT STDMETHODCALLTYPE ReceiveConnection( /* [in] */ IPin *pConnector, /* [in] */ const AM_MEDIA_TYPE *pmt) = 0; virtual HRESULT STDMETHODCALLTYPE Disconnect( void) = 0; virtual HRESULT STDMETHODCALLTYPE ConnectedTo( /* [out] */ IPin **pPin) = 0; virtual HRESULT STDMETHODCALLTYPE ConnectionMediaType( /* [out] */ AM_MEDIA_TYPE *pmt) = 0; virtual HRESULT STDMETHODCALLTYPE QueryPinInfo( /* [out] */ PIN_INFO *pInfo) = 0; virtual HRESULT STDMETHODCALLTYPE QueryDirection( /* [out] */ PIN_DIRECTION *pPinDir) = 0; virtual HRESULT STDMETHODCALLTYPE QueryId( /* [out] */ LPWSTR *Id) = 0; virtual HRESULT STDMETHODCALLTYPE QueryAccept( /* [in] */ const AM_MEDIA_TYPE *pmt) = 0; virtual HRESULT STDMETHODCALLTYPE EnumMediaTypes( /* [out] */ IEnumMediaTypes **ppEnum) = 0; virtual HRESULT STDMETHODCALLTYPE QueryInternalConnections( /* [out] */ IPin **apPin, /* [out][in] */ ULONG *nPin) = 0; virtual HRESULT STDMETHODCALLTYPE EndOfStream( void) = 0; virtual HRESULT STDMETHODCALLTYPE BeginFlush( void) = 0; virtual HRESULT STDMETHODCALLTYPE EndFlush( void) = 0; virtual HRESULT STDMETHODCALLTYPE NewSegment( /* [in] */ REFERENCE_TIME tStart, /* [in] */ REFERENCE_TIME tStop, /* [in] */ double dRate) = 0; }; #else /* C style interface */ typedef struct IPinVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IPin * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IPin * This); ULONG ( STDMETHODCALLTYPE *Release )( IPin * This); HRESULT ( STDMETHODCALLTYPE *Connect )( IPin * This, /* [in] */ IPin *pReceivePin, /* [in] */ const AM_MEDIA_TYPE *pmt); HRESULT ( STDMETHODCALLTYPE *ReceiveConnection )( IPin * This, /* [in] */ IPin *pConnector, /* [in] */ const AM_MEDIA_TYPE *pmt); HRESULT ( STDMETHODCALLTYPE *Disconnect )( IPin * This); HRESULT ( STDMETHODCALLTYPE *ConnectedTo )( IPin * This, /* [out] */ IPin **pPin); HRESULT ( STDMETHODCALLTYPE *ConnectionMediaType )( IPin * This, /* [out] */ AM_MEDIA_TYPE *pmt); HRESULT ( STDMETHODCALLTYPE *QueryPinInfo )( IPin * This, /* [out] */ PIN_INFO *pInfo); HRESULT ( STDMETHODCALLTYPE *QueryDirection )( IPin * This, /* [out] */ PIN_DIRECTION *pPinDir); HRESULT ( STDMETHODCALLTYPE *QueryId )( IPin * This, /* [out] */ LPWSTR *Id); HRESULT ( STDMETHODCALLTYPE *QueryAccept )( IPin * This, /* [in] */ const AM_MEDIA_TYPE *pmt); HRESULT ( STDMETHODCALLTYPE *EnumMediaTypes )( IPin * This, /* [out] */ IEnumMediaTypes **ppEnum); HRESULT ( STDMETHODCALLTYPE *QueryInternalConnections )( IPin * This, /* [out] */ IPin **apPin, /* [out][in] */ ULONG *nPin); HRESULT ( STDMETHODCALLTYPE *EndOfStream )( IPin * This); HRESULT ( STDMETHODCALLTYPE *BeginFlush )( IPin * This); HRESULT ( STDMETHODCALLTYPE *EndFlush )( IPin * This); HRESULT ( STDMETHODCALLTYPE *NewSegment )( IPin * This, /* [in] */ REFERENCE_TIME tStart, /* [in] */ REFERENCE_TIME tStop, /* [in] */ double dRate); END_INTERFACE } IPinVtbl; interface IPin { CONST_VTBL struct IPinVtbl *lpVtbl; }; #ifdef COBJMACROS #define IPin_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IPin_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IPin_Release(This) \ (This)->lpVtbl -> Release(This) #define IPin_Connect(This,pReceivePin,pmt) \ (This)->lpVtbl -> Connect(This,pReceivePin,pmt) #define IPin_ReceiveConnection(This,pConnector,pmt) \ (This)->lpVtbl -> ReceiveConnection(This,pConnector,pmt) #define IPin_Disconnect(This) \ (This)->lpVtbl -> Disconnect(This) #define IPin_ConnectedTo(This,pPin) \ (This)->lpVtbl -> ConnectedTo(This,pPin) #define IPin_ConnectionMediaType(This,pmt) \ (This)->lpVtbl -> ConnectionMediaType(This,pmt) #define IPin_QueryPinInfo(This,pInfo) \ (This)->lpVtbl -> QueryPinInfo(This,pInfo) #define IPin_QueryDirection(This,pPinDir) \ (This)->lpVtbl -> QueryDirection(This,pPinDir) #define IPin_QueryId(This,Id) \ (This)->lpVtbl -> QueryId(This,Id) #define IPin_QueryAccept(This,pmt) \ (This)->lpVtbl -> QueryAccept(This,pmt) #define IPin_EnumMediaTypes(This,ppEnum) \ (This)->lpVtbl -> EnumMediaTypes(This,ppEnum) #define IPin_QueryInternalConnections(This,apPin,nPin) \ (This)->lpVtbl -> QueryInternalConnections(This,apPin,nPin) #define IPin_EndOfStream(This) \ (This)->lpVtbl -> EndOfStream(This) #define IPin_BeginFlush(This) \ (This)->lpVtbl -> BeginFlush(This) #define IPin_EndFlush(This) \ (This)->lpVtbl -> EndFlush(This) #define IPin_NewSegment(This,tStart,tStop,dRate) \ (This)->lpVtbl -> NewSegment(This,tStart,tStop,dRate) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IPin_Connect_Proxy( IPin * This, /* [in] */ IPin *pReceivePin, /* [in] */ const AM_MEDIA_TYPE *pmt); void __RPC_STUB IPin_Connect_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IPin_ReceiveConnection_Proxy( IPin * This, /* [in] */ IPin *pConnector, /* [in] */ const AM_MEDIA_TYPE *pmt); void __RPC_STUB IPin_ReceiveConnection_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IPin_Disconnect_Proxy( IPin * This); void __RPC_STUB IPin_Disconnect_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IPin_ConnectedTo_Proxy( IPin * This, /* [out] */ IPin **pPin); void __RPC_STUB IPin_ConnectedTo_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IPin_ConnectionMediaType_Proxy( IPin * This, /* [out] */ AM_MEDIA_TYPE *pmt); void __RPC_STUB IPin_ConnectionMediaType_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IPin_QueryPinInfo_Proxy( IPin * This, /* [out] */ PIN_INFO *pInfo); void __RPC_STUB IPin_QueryPinInfo_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IPin_QueryDirection_Proxy( IPin * This, /* [out] */ PIN_DIRECTION *pPinDir); void __RPC_STUB IPin_QueryDirection_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IPin_QueryId_Proxy( IPin * This, /* [out] */ LPWSTR *Id); void __RPC_STUB IPin_QueryId_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IPin_QueryAccept_Proxy( IPin * This, /* [in] */ const AM_MEDIA_TYPE *pmt); void __RPC_STUB IPin_QueryAccept_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IPin_EnumMediaTypes_Proxy( IPin * This, /* [out] */ IEnumMediaTypes **ppEnum); void __RPC_STUB IPin_EnumMediaTypes_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IPin_QueryInternalConnections_Proxy( IPin * This, /* [out] */ IPin **apPin, /* [out][in] */ ULONG *nPin); void __RPC_STUB IPin_QueryInternalConnections_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IPin_EndOfStream_Proxy( IPin * This); void __RPC_STUB IPin_EndOfStream_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IPin_BeginFlush_Proxy( IPin * This); void __RPC_STUB IPin_BeginFlush_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IPin_EndFlush_Proxy( IPin * This); void __RPC_STUB IPin_EndFlush_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IPin_NewSegment_Proxy( IPin * This, /* [in] */ REFERENCE_TIME tStart, /* [in] */ REFERENCE_TIME tStop, /* [in] */ double dRate); void __RPC_STUB IPin_NewSegment_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IPin_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0113 */ /* [local] */ typedef IPin *PPIN; extern RPC_IF_HANDLE __MIDL_itf_strmif_0113_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0113_v0_0_s_ifspec; #ifndef __IEnumPins_INTERFACE_DEFINED__ #define __IEnumPins_INTERFACE_DEFINED__ /* interface IEnumPins */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IEnumPins; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("56a86892-0ad4-11ce-b03a-0020af0ba770") IEnumPins : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE Next( /* [in] */ ULONG cPins, /* [size_is][out] */ IPin **ppPins, /* [out] */ ULONG *pcFetched) = 0; virtual HRESULT STDMETHODCALLTYPE Skip( /* [in] */ ULONG cPins) = 0; virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0; virtual HRESULT STDMETHODCALLTYPE Clone( /* [out] */ IEnumPins **ppEnum) = 0; }; #else /* C style interface */ typedef struct IEnumPinsVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IEnumPins * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IEnumPins * This); ULONG ( STDMETHODCALLTYPE *Release )( IEnumPins * This); HRESULT ( STDMETHODCALLTYPE *Next )( IEnumPins * This, /* [in] */ ULONG cPins, /* [size_is][out] */ IPin **ppPins, /* [out] */ ULONG *pcFetched); HRESULT ( STDMETHODCALLTYPE *Skip )( IEnumPins * This, /* [in] */ ULONG cPins); HRESULT ( STDMETHODCALLTYPE *Reset )( IEnumPins * This); HRESULT ( STDMETHODCALLTYPE *Clone )( IEnumPins * This, /* [out] */ IEnumPins **ppEnum); END_INTERFACE } IEnumPinsVtbl; interface IEnumPins { CONST_VTBL struct IEnumPinsVtbl *lpVtbl; }; #ifdef COBJMACROS #define IEnumPins_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IEnumPins_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IEnumPins_Release(This) \ (This)->lpVtbl -> Release(This) #define IEnumPins_Next(This,cPins,ppPins,pcFetched) \ (This)->lpVtbl -> Next(This,cPins,ppPins,pcFetched) #define IEnumPins_Skip(This,cPins) \ (This)->lpVtbl -> Skip(This,cPins) #define IEnumPins_Reset(This) \ (This)->lpVtbl -> Reset(This) #define IEnumPins_Clone(This,ppEnum) \ (This)->lpVtbl -> Clone(This,ppEnum) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IEnumPins_Next_Proxy( IEnumPins * This, /* [in] */ ULONG cPins, /* [size_is][out] */ IPin **ppPins, /* [out] */ ULONG *pcFetched); void __RPC_STUB IEnumPins_Next_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IEnumPins_Skip_Proxy( IEnumPins * This, /* [in] */ ULONG cPins); void __RPC_STUB IEnumPins_Skip_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IEnumPins_Reset_Proxy( IEnumPins * This); void __RPC_STUB IEnumPins_Reset_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IEnumPins_Clone_Proxy( IEnumPins * This, /* [out] */ IEnumPins **ppEnum); void __RPC_STUB IEnumPins_Clone_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IEnumPins_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0114 */ /* [local] */ typedef IEnumPins *PENUMPINS; extern RPC_IF_HANDLE __MIDL_itf_strmif_0114_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0114_v0_0_s_ifspec; #ifndef __IEnumMediaTypes_INTERFACE_DEFINED__ #define __IEnumMediaTypes_INTERFACE_DEFINED__ /* interface IEnumMediaTypes */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IEnumMediaTypes; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("89c31040-846b-11ce-97d3-00aa0055595a") IEnumMediaTypes : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE Next( /* [in] */ ULONG cMediaTypes, /* [size_is][out] */ AM_MEDIA_TYPE **ppMediaTypes, /* [out] */ ULONG *pcFetched) = 0; virtual HRESULT STDMETHODCALLTYPE Skip( /* [in] */ ULONG cMediaTypes) = 0; virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0; virtual HRESULT STDMETHODCALLTYPE Clone( /* [out] */ IEnumMediaTypes **ppEnum) = 0; }; #else /* C style interface */ typedef struct IEnumMediaTypesVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IEnumMediaTypes * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IEnumMediaTypes * This); ULONG ( STDMETHODCALLTYPE *Release )( IEnumMediaTypes * This); HRESULT ( STDMETHODCALLTYPE *Next )( IEnumMediaTypes * This, /* [in] */ ULONG cMediaTypes, /* [size_is][out] */ AM_MEDIA_TYPE **ppMediaTypes, /* [out] */ ULONG *pcFetched); HRESULT ( STDMETHODCALLTYPE *Skip )( IEnumMediaTypes * This, /* [in] */ ULONG cMediaTypes); HRESULT ( STDMETHODCALLTYPE *Reset )( IEnumMediaTypes * This); HRESULT ( STDMETHODCALLTYPE *Clone )( IEnumMediaTypes * This, /* [out] */ IEnumMediaTypes **ppEnum); END_INTERFACE } IEnumMediaTypesVtbl; interface IEnumMediaTypes { CONST_VTBL struct IEnumMediaTypesVtbl *lpVtbl; }; #ifdef COBJMACROS #define IEnumMediaTypes_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IEnumMediaTypes_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IEnumMediaTypes_Release(This) \ (This)->lpVtbl -> Release(This) #define IEnumMediaTypes_Next(This,cMediaTypes,ppMediaTypes,pcFetched) \ (This)->lpVtbl -> Next(This,cMediaTypes,ppMediaTypes,pcFetched) #define IEnumMediaTypes_Skip(This,cMediaTypes) \ (This)->lpVtbl -> Skip(This,cMediaTypes) #define IEnumMediaTypes_Reset(This) \ (This)->lpVtbl -> Reset(This) #define IEnumMediaTypes_Clone(This,ppEnum) \ (This)->lpVtbl -> Clone(This,ppEnum) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IEnumMediaTypes_Next_Proxy( IEnumMediaTypes * This, /* [in] */ ULONG cMediaTypes, /* [size_is][out] */ AM_MEDIA_TYPE **ppMediaTypes, /* [out] */ ULONG *pcFetched); void __RPC_STUB IEnumMediaTypes_Next_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IEnumMediaTypes_Skip_Proxy( IEnumMediaTypes * This, /* [in] */ ULONG cMediaTypes); void __RPC_STUB IEnumMediaTypes_Skip_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IEnumMediaTypes_Reset_Proxy( IEnumMediaTypes * This); void __RPC_STUB IEnumMediaTypes_Reset_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IEnumMediaTypes_Clone_Proxy( IEnumMediaTypes * This, /* [out] */ IEnumMediaTypes **ppEnum); void __RPC_STUB IEnumMediaTypes_Clone_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IEnumMediaTypes_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0115 */ /* [local] */ typedef IEnumMediaTypes *PENUMMEDIATYPES; extern RPC_IF_HANDLE __MIDL_itf_strmif_0115_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0115_v0_0_s_ifspec; #ifndef __IFilterGraph_INTERFACE_DEFINED__ #define __IFilterGraph_INTERFACE_DEFINED__ /* interface IFilterGraph */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IFilterGraph; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("56a8689f-0ad4-11ce-b03a-0020af0ba770") IFilterGraph : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE AddFilter( /* [in] */ IBaseFilter *pFilter, /* [string][in] */ LPCWSTR pName) = 0; virtual HRESULT STDMETHODCALLTYPE RemoveFilter( /* [in] */ IBaseFilter *pFilter) = 0; virtual HRESULT STDMETHODCALLTYPE EnumFilters( /* [out] */ IEnumFilters **ppEnum) = 0; virtual HRESULT STDMETHODCALLTYPE FindFilterByName( /* [string][in] */ LPCWSTR pName, /* [out] */ IBaseFilter **ppFilter) = 0; virtual HRESULT STDMETHODCALLTYPE ConnectDirect( /* [in] */ IPin *ppinOut, /* [in] */ IPin *ppinIn, /* [unique][in] */ const AM_MEDIA_TYPE *pmt) = 0; virtual HRESULT STDMETHODCALLTYPE Reconnect( /* [in] */ IPin *ppin) = 0; virtual HRESULT STDMETHODCALLTYPE Disconnect( /* [in] */ IPin *ppin) = 0; virtual HRESULT STDMETHODCALLTYPE SetDefaultSyncSource( void) = 0; }; #else /* C style interface */ typedef struct IFilterGraphVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IFilterGraph * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IFilterGraph * This); ULONG ( STDMETHODCALLTYPE *Release )( IFilterGraph * This); HRESULT ( STDMETHODCALLTYPE *AddFilter )( IFilterGraph * This, /* [in] */ IBaseFilter *pFilter, /* [string][in] */ LPCWSTR pName); HRESULT ( STDMETHODCALLTYPE *RemoveFilter )( IFilterGraph * This, /* [in] */ IBaseFilter *pFilter); HRESULT ( STDMETHODCALLTYPE *EnumFilters )( IFilterGraph * This, /* [out] */ IEnumFilters **ppEnum); HRESULT ( STDMETHODCALLTYPE *FindFilterByName )( IFilterGraph * This, /* [string][in] */ LPCWSTR pName, /* [out] */ IBaseFilter **ppFilter); HRESULT ( STDMETHODCALLTYPE *ConnectDirect )( IFilterGraph * This, /* [in] */ IPin *ppinOut, /* [in] */ IPin *ppinIn, /* [unique][in] */ const AM_MEDIA_TYPE *pmt); HRESULT ( STDMETHODCALLTYPE *Reconnect )( IFilterGraph * This, /* [in] */ IPin *ppin); HRESULT ( STDMETHODCALLTYPE *Disconnect )( IFilterGraph * This, /* [in] */ IPin *ppin); HRESULT ( STDMETHODCALLTYPE *SetDefaultSyncSource )( IFilterGraph * This); END_INTERFACE } IFilterGraphVtbl; interface IFilterGraph { CONST_VTBL struct IFilterGraphVtbl *lpVtbl; }; #ifdef COBJMACROS #define IFilterGraph_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IFilterGraph_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IFilterGraph_Release(This) \ (This)->lpVtbl -> Release(This) #define IFilterGraph_AddFilter(This,pFilter,pName) \ (This)->lpVtbl -> AddFilter(This,pFilter,pName) #define IFilterGraph_RemoveFilter(This,pFilter) \ (This)->lpVtbl -> RemoveFilter(This,pFilter) #define IFilterGraph_EnumFilters(This,ppEnum) \ (This)->lpVtbl -> EnumFilters(This,ppEnum) #define IFilterGraph_FindFilterByName(This,pName,ppFilter) \ (This)->lpVtbl -> FindFilterByName(This,pName,ppFilter) #define IFilterGraph_ConnectDirect(This,ppinOut,ppinIn,pmt) \ (This)->lpVtbl -> ConnectDirect(This,ppinOut,ppinIn,pmt) #define IFilterGraph_Reconnect(This,ppin) \ (This)->lpVtbl -> Reconnect(This,ppin) #define IFilterGraph_Disconnect(This,ppin) \ (This)->lpVtbl -> Disconnect(This,ppin) #define IFilterGraph_SetDefaultSyncSource(This) \ (This)->lpVtbl -> SetDefaultSyncSource(This) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IFilterGraph_AddFilter_Proxy( IFilterGraph * This, /* [in] */ IBaseFilter *pFilter, /* [string][in] */ LPCWSTR pName); void __RPC_STUB IFilterGraph_AddFilter_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IFilterGraph_RemoveFilter_Proxy( IFilterGraph * This, /* [in] */ IBaseFilter *pFilter); void __RPC_STUB IFilterGraph_RemoveFilter_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IFilterGraph_EnumFilters_Proxy( IFilterGraph * This, /* [out] */ IEnumFilters **ppEnum); void __RPC_STUB IFilterGraph_EnumFilters_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IFilterGraph_FindFilterByName_Proxy( IFilterGraph * This, /* [string][in] */ LPCWSTR pName, /* [out] */ IBaseFilter **ppFilter); void __RPC_STUB IFilterGraph_FindFilterByName_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IFilterGraph_ConnectDirect_Proxy( IFilterGraph * This, /* [in] */ IPin *ppinOut, /* [in] */ IPin *ppinIn, /* [unique][in] */ const AM_MEDIA_TYPE *pmt); void __RPC_STUB IFilterGraph_ConnectDirect_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IFilterGraph_Reconnect_Proxy( IFilterGraph * This, /* [in] */ IPin *ppin); void __RPC_STUB IFilterGraph_Reconnect_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IFilterGraph_Disconnect_Proxy( IFilterGraph * This, /* [in] */ IPin *ppin); void __RPC_STUB IFilterGraph_Disconnect_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IFilterGraph_SetDefaultSyncSource_Proxy( IFilterGraph * This); void __RPC_STUB IFilterGraph_SetDefaultSyncSource_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IFilterGraph_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0116 */ /* [local] */ typedef IFilterGraph *PFILTERGRAPH; extern RPC_IF_HANDLE __MIDL_itf_strmif_0116_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0116_v0_0_s_ifspec; #ifndef __IEnumFilters_INTERFACE_DEFINED__ #define __IEnumFilters_INTERFACE_DEFINED__ /* interface IEnumFilters */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IEnumFilters; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("56a86893-0ad4-11ce-b03a-0020af0ba770") IEnumFilters : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE Next( /* [in] */ ULONG cFilters, /* [out] */ IBaseFilter **ppFilter, /* [out] */ ULONG *pcFetched) = 0; virtual HRESULT STDMETHODCALLTYPE Skip( /* [in] */ ULONG cFilters) = 0; virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0; virtual HRESULT STDMETHODCALLTYPE Clone( /* [out] */ IEnumFilters **ppEnum) = 0; }; #else /* C style interface */ typedef struct IEnumFiltersVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IEnumFilters * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IEnumFilters * This); ULONG ( STDMETHODCALLTYPE *Release )( IEnumFilters * This); HRESULT ( STDMETHODCALLTYPE *Next )( IEnumFilters * This, /* [in] */ ULONG cFilters, /* [out] */ IBaseFilter **ppFilter, /* [out] */ ULONG *pcFetched); HRESULT ( STDMETHODCALLTYPE *Skip )( IEnumFilters * This, /* [in] */ ULONG cFilters); HRESULT ( STDMETHODCALLTYPE *Reset )( IEnumFilters * This); HRESULT ( STDMETHODCALLTYPE *Clone )( IEnumFilters * This, /* [out] */ IEnumFilters **ppEnum); END_INTERFACE } IEnumFiltersVtbl; interface IEnumFilters { CONST_VTBL struct IEnumFiltersVtbl *lpVtbl; }; #ifdef COBJMACROS #define IEnumFilters_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IEnumFilters_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IEnumFilters_Release(This) \ (This)->lpVtbl -> Release(This) #define IEnumFilters_Next(This,cFilters,ppFilter,pcFetched) \ (This)->lpVtbl -> Next(This,cFilters,ppFilter,pcFetched) #define IEnumFilters_Skip(This,cFilters) \ (This)->lpVtbl -> Skip(This,cFilters) #define IEnumFilters_Reset(This) \ (This)->lpVtbl -> Reset(This) #define IEnumFilters_Clone(This,ppEnum) \ (This)->lpVtbl -> Clone(This,ppEnum) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IEnumFilters_Next_Proxy( IEnumFilters * This, /* [in] */ ULONG cFilters, /* [out] */ IBaseFilter **ppFilter, /* [out] */ ULONG *pcFetched); void __RPC_STUB IEnumFilters_Next_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IEnumFilters_Skip_Proxy( IEnumFilters * This, /* [in] */ ULONG cFilters); void __RPC_STUB IEnumFilters_Skip_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IEnumFilters_Reset_Proxy( IEnumFilters * This); void __RPC_STUB IEnumFilters_Reset_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IEnumFilters_Clone_Proxy( IEnumFilters * This, /* [out] */ IEnumFilters **ppEnum); void __RPC_STUB IEnumFilters_Clone_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IEnumFilters_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0117 */ /* [local] */ typedef IEnumFilters *PENUMFILTERS; extern RPC_IF_HANDLE __MIDL_itf_strmif_0117_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0117_v0_0_s_ifspec; #ifndef __IMediaFilter_INTERFACE_DEFINED__ #define __IMediaFilter_INTERFACE_DEFINED__ /* interface IMediaFilter */ /* [unique][uuid][object] */ typedef enum _FilterState { State_Stopped = 0, State_Paused = State_Stopped + 1, State_Running = State_Paused + 1 } FILTER_STATE; EXTERN_C const IID IID_IMediaFilter; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("56a86899-0ad4-11ce-b03a-0020af0ba770") IMediaFilter : public IPersist { public: virtual HRESULT STDMETHODCALLTYPE Stop( void) = 0; virtual HRESULT STDMETHODCALLTYPE Pause( void) = 0; virtual HRESULT STDMETHODCALLTYPE Run( REFERENCE_TIME tStart) = 0; virtual HRESULT STDMETHODCALLTYPE GetState( /* [in] */ DWORD dwMilliSecsTimeout, /* [out] */ FILTER_STATE *State) = 0; virtual HRESULT STDMETHODCALLTYPE SetSyncSource( /* [in] */ IReferenceClock *pClock) = 0; virtual HRESULT STDMETHODCALLTYPE GetSyncSource( /* [out] */ IReferenceClock **pClock) = 0; }; #else /* C style interface */ typedef struct IMediaFilterVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IMediaFilter * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IMediaFilter * This); ULONG ( STDMETHODCALLTYPE *Release )( IMediaFilter * This); HRESULT ( STDMETHODCALLTYPE *GetClassID )( IMediaFilter * This, /* [out] */ CLSID *pClassID); HRESULT ( STDMETHODCALLTYPE *Stop )( IMediaFilter * This); HRESULT ( STDMETHODCALLTYPE *Pause )( IMediaFilter * This); HRESULT ( STDMETHODCALLTYPE *Run )( IMediaFilter * This, REFERENCE_TIME tStart); HRESULT ( STDMETHODCALLTYPE *GetState )( IMediaFilter * This, /* [in] */ DWORD dwMilliSecsTimeout, /* [out] */ FILTER_STATE *State); HRESULT ( STDMETHODCALLTYPE *SetSyncSource )( IMediaFilter * This, /* [in] */ IReferenceClock *pClock); HRESULT ( STDMETHODCALLTYPE *GetSyncSource )( IMediaFilter * This, /* [out] */ IReferenceClock **pClock); END_INTERFACE } IMediaFilterVtbl; interface IMediaFilter { CONST_VTBL struct IMediaFilterVtbl *lpVtbl; }; #ifdef COBJMACROS #define IMediaFilter_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IMediaFilter_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IMediaFilter_Release(This) \ (This)->lpVtbl -> Release(This) #define IMediaFilter_GetClassID(This,pClassID) \ (This)->lpVtbl -> GetClassID(This,pClassID) #define IMediaFilter_Stop(This) \ (This)->lpVtbl -> Stop(This) #define IMediaFilter_Pause(This) \ (This)->lpVtbl -> Pause(This) #define IMediaFilter_Run(This,tStart) \ (This)->lpVtbl -> Run(This,tStart) #define IMediaFilter_GetState(This,dwMilliSecsTimeout,State) \ (This)->lpVtbl -> GetState(This,dwMilliSecsTimeout,State) #define IMediaFilter_SetSyncSource(This,pClock) \ (This)->lpVtbl -> SetSyncSource(This,pClock) #define IMediaFilter_GetSyncSource(This,pClock) \ (This)->lpVtbl -> GetSyncSource(This,pClock) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IMediaFilter_Stop_Proxy( IMediaFilter * This); void __RPC_STUB IMediaFilter_Stop_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMediaFilter_Pause_Proxy( IMediaFilter * This); void __RPC_STUB IMediaFilter_Pause_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMediaFilter_Run_Proxy( IMediaFilter * This, REFERENCE_TIME tStart); void __RPC_STUB IMediaFilter_Run_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMediaFilter_GetState_Proxy( IMediaFilter * This, /* [in] */ DWORD dwMilliSecsTimeout, /* [out] */ FILTER_STATE *State); void __RPC_STUB IMediaFilter_GetState_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMediaFilter_SetSyncSource_Proxy( IMediaFilter * This, /* [in] */ IReferenceClock *pClock); void __RPC_STUB IMediaFilter_SetSyncSource_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMediaFilter_GetSyncSource_Proxy( IMediaFilter * This, /* [out] */ IReferenceClock **pClock); void __RPC_STUB IMediaFilter_GetSyncSource_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IMediaFilter_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0118 */ /* [local] */ typedef IMediaFilter *PMEDIAFILTER; extern RPC_IF_HANDLE __MIDL_itf_strmif_0118_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0118_v0_0_s_ifspec; #ifndef __IBaseFilter_INTERFACE_DEFINED__ #define __IBaseFilter_INTERFACE_DEFINED__ /* interface IBaseFilter */ /* [unique][uuid][object] */ typedef struct _FilterInfo { WCHAR achName[ 128 ]; IFilterGraph *pGraph; } FILTER_INFO; EXTERN_C const IID IID_IBaseFilter; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("56a86895-0ad4-11ce-b03a-0020af0ba770") IBaseFilter : public IMediaFilter { public: virtual HRESULT STDMETHODCALLTYPE EnumPins( /* [out] */ IEnumPins **ppEnum) = 0; virtual HRESULT STDMETHODCALLTYPE FindPin( /* [string][in] */ LPCWSTR Id, /* [out] */ IPin **ppPin) = 0; virtual HRESULT STDMETHODCALLTYPE QueryFilterInfo( /* [out] */ FILTER_INFO *pInfo) = 0; virtual HRESULT STDMETHODCALLTYPE JoinFilterGraph( /* [in] */ IFilterGraph *pGraph, /* [string][in] */ LPCWSTR pName) = 0; virtual HRESULT STDMETHODCALLTYPE QueryVendorInfo( /* [string][out] */ LPWSTR *pVendorInfo) = 0; }; #else /* C style interface */ typedef struct IBaseFilterVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IBaseFilter * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IBaseFilter * This); ULONG ( STDMETHODCALLTYPE *Release )( IBaseFilter * This); HRESULT ( STDMETHODCALLTYPE *GetClassID )( IBaseFilter * This, /* [out] */ CLSID *pClassID); HRESULT ( STDMETHODCALLTYPE *Stop )( IBaseFilter * This); HRESULT ( STDMETHODCALLTYPE *Pause )( IBaseFilter * This); HRESULT ( STDMETHODCALLTYPE *Run )( IBaseFilter * This, REFERENCE_TIME tStart); HRESULT ( STDMETHODCALLTYPE *GetState )( IBaseFilter * This, /* [in] */ DWORD dwMilliSecsTimeout, /* [out] */ FILTER_STATE *State); HRESULT ( STDMETHODCALLTYPE *SetSyncSource )( IBaseFilter * This, /* [in] */ IReferenceClock *pClock); HRESULT ( STDMETHODCALLTYPE *GetSyncSource )( IBaseFilter * This, /* [out] */ IReferenceClock **pClock); HRESULT ( STDMETHODCALLTYPE *EnumPins )( IBaseFilter * This, /* [out] */ IEnumPins **ppEnum); HRESULT ( STDMETHODCALLTYPE *FindPin )( IBaseFilter * This, /* [string][in] */ LPCWSTR Id, /* [out] */ IPin **ppPin); HRESULT ( STDMETHODCALLTYPE *QueryFilterInfo )( IBaseFilter * This, /* [out] */ FILTER_INFO *pInfo); HRESULT ( STDMETHODCALLTYPE *JoinFilterGraph )( IBaseFilter * This, /* [in] */ IFilterGraph *pGraph, /* [string][in] */ LPCWSTR pName); HRESULT ( STDMETHODCALLTYPE *QueryVendorInfo )( IBaseFilter * This, /* [string][out] */ LPWSTR *pVendorInfo); END_INTERFACE } IBaseFilterVtbl; interface IBaseFilter { CONST_VTBL struct IBaseFilterVtbl *lpVtbl; }; #ifdef COBJMACROS #define IBaseFilter_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IBaseFilter_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IBaseFilter_Release(This) \ (This)->lpVtbl -> Release(This) #define IBaseFilter_GetClassID(This,pClassID) \ (This)->lpVtbl -> GetClassID(This,pClassID) #define IBaseFilter_Stop(This) \ (This)->lpVtbl -> Stop(This) #define IBaseFilter_Pause(This) \ (This)->lpVtbl -> Pause(This) #define IBaseFilter_Run(This,tStart) \ (This)->lpVtbl -> Run(This,tStart) #define IBaseFilter_GetState(This,dwMilliSecsTimeout,State) \ (This)->lpVtbl -> GetState(This,dwMilliSecsTimeout,State) #define IBaseFilter_SetSyncSource(This,pClock) \ (This)->lpVtbl -> SetSyncSource(This,pClock) #define IBaseFilter_GetSyncSource(This,pClock) \ (This)->lpVtbl -> GetSyncSource(This,pClock) #define IBaseFilter_EnumPins(This,ppEnum) \ (This)->lpVtbl -> EnumPins(This,ppEnum) #define IBaseFilter_FindPin(This,Id,ppPin) \ (This)->lpVtbl -> FindPin(This,Id,ppPin) #define IBaseFilter_QueryFilterInfo(This,pInfo) \ (This)->lpVtbl -> QueryFilterInfo(This,pInfo) #define IBaseFilter_JoinFilterGraph(This,pGraph,pName) \ (This)->lpVtbl -> JoinFilterGraph(This,pGraph,pName) #define IBaseFilter_QueryVendorInfo(This,pVendorInfo) \ (This)->lpVtbl -> QueryVendorInfo(This,pVendorInfo) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IBaseFilter_EnumPins_Proxy( IBaseFilter * This, /* [out] */ IEnumPins **ppEnum); void __RPC_STUB IBaseFilter_EnumPins_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IBaseFilter_FindPin_Proxy( IBaseFilter * This, /* [string][in] */ LPCWSTR Id, /* [out] */ IPin **ppPin); void __RPC_STUB IBaseFilter_FindPin_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IBaseFilter_QueryFilterInfo_Proxy( IBaseFilter * This, /* [out] */ FILTER_INFO *pInfo); void __RPC_STUB IBaseFilter_QueryFilterInfo_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IBaseFilter_JoinFilterGraph_Proxy( IBaseFilter * This, /* [in] */ IFilterGraph *pGraph, /* [string][in] */ LPCWSTR pName); void __RPC_STUB IBaseFilter_JoinFilterGraph_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IBaseFilter_QueryVendorInfo_Proxy( IBaseFilter * This, /* [string][out] */ LPWSTR *pVendorInfo); void __RPC_STUB IBaseFilter_QueryVendorInfo_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IBaseFilter_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0119 */ /* [local] */ typedef IBaseFilter *PFILTER; extern RPC_IF_HANDLE __MIDL_itf_strmif_0119_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0119_v0_0_s_ifspec; #ifndef __IReferenceClock_INTERFACE_DEFINED__ #define __IReferenceClock_INTERFACE_DEFINED__ /* interface IReferenceClock */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IReferenceClock; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("56a86897-0ad4-11ce-b03a-0020af0ba770") IReferenceClock : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE GetTime( /* [out] */ REFERENCE_TIME *pTime) = 0; virtual HRESULT STDMETHODCALLTYPE AdviseTime( /* [in] */ REFERENCE_TIME baseTime, /* [in] */ REFERENCE_TIME streamTime, /* [in] */ HEVENT hEvent, /* [out] */ DWORD_PTR *pdwAdviseCookie) = 0; virtual HRESULT STDMETHODCALLTYPE AdvisePeriodic( /* [in] */ REFERENCE_TIME startTime, /* [in] */ REFERENCE_TIME periodTime, /* [in] */ HSEMAPHORE hSemaphore, /* [out] */ DWORD_PTR *pdwAdviseCookie) = 0; virtual HRESULT STDMETHODCALLTYPE Unadvise( /* [in] */ DWORD_PTR dwAdviseCookie) = 0; }; #else /* C style interface */ typedef struct IReferenceClockVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IReferenceClock * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IReferenceClock * This); ULONG ( STDMETHODCALLTYPE *Release )( IReferenceClock * This); HRESULT ( STDMETHODCALLTYPE *GetTime )( IReferenceClock * This, /* [out] */ REFERENCE_TIME *pTime); HRESULT ( STDMETHODCALLTYPE *AdviseTime )( IReferenceClock * This, /* [in] */ REFERENCE_TIME baseTime, /* [in] */ REFERENCE_TIME streamTime, /* [in] */ HEVENT hEvent, /* [out] */ DWORD_PTR *pdwAdviseCookie); HRESULT ( STDMETHODCALLTYPE *AdvisePeriodic )( IReferenceClock * This, /* [in] */ REFERENCE_TIME startTime, /* [in] */ REFERENCE_TIME periodTime, /* [in] */ HSEMAPHORE hSemaphore, /* [out] */ DWORD_PTR *pdwAdviseCookie); HRESULT ( STDMETHODCALLTYPE *Unadvise )( IReferenceClock * This, /* [in] */ DWORD_PTR dwAdviseCookie); END_INTERFACE } IReferenceClockVtbl; interface IReferenceClock { CONST_VTBL struct IReferenceClockVtbl *lpVtbl; }; #ifdef COBJMACROS #define IReferenceClock_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IReferenceClock_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IReferenceClock_Release(This) \ (This)->lpVtbl -> Release(This) #define IReferenceClock_GetTime(This,pTime) \ (This)->lpVtbl -> GetTime(This,pTime) #define IReferenceClock_AdviseTime(This,baseTime,streamTime,hEvent,pdwAdviseCookie) \ (This)->lpVtbl -> AdviseTime(This,baseTime,streamTime,hEvent,pdwAdviseCookie) #define IReferenceClock_AdvisePeriodic(This,startTime,periodTime,hSemaphore,pdwAdviseCookie) \ (This)->lpVtbl -> AdvisePeriodic(This,startTime,periodTime,hSemaphore,pdwAdviseCookie) #define IReferenceClock_Unadvise(This,dwAdviseCookie) \ (This)->lpVtbl -> Unadvise(This,dwAdviseCookie) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IReferenceClock_GetTime_Proxy( IReferenceClock * This, /* [out] */ REFERENCE_TIME *pTime); void __RPC_STUB IReferenceClock_GetTime_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IReferenceClock_AdviseTime_Proxy( IReferenceClock * This, /* [in] */ REFERENCE_TIME baseTime, /* [in] */ REFERENCE_TIME streamTime, /* [in] */ HEVENT hEvent, /* [out] */ DWORD_PTR *pdwAdviseCookie); void __RPC_STUB IReferenceClock_AdviseTime_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IReferenceClock_AdvisePeriodic_Proxy( IReferenceClock * This, /* [in] */ REFERENCE_TIME startTime, /* [in] */ REFERENCE_TIME periodTime, /* [in] */ HSEMAPHORE hSemaphore, /* [out] */ DWORD_PTR *pdwAdviseCookie); void __RPC_STUB IReferenceClock_AdvisePeriodic_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IReferenceClock_Unadvise_Proxy( IReferenceClock * This, /* [in] */ DWORD_PTR dwAdviseCookie); void __RPC_STUB IReferenceClock_Unadvise_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IReferenceClock_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0120 */ /* [local] */ typedef IReferenceClock *PREFERENCECLOCK; extern RPC_IF_HANDLE __MIDL_itf_strmif_0120_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0120_v0_0_s_ifspec; #ifndef __IReferenceClock2_INTERFACE_DEFINED__ #define __IReferenceClock2_INTERFACE_DEFINED__ /* interface IReferenceClock2 */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IReferenceClock2; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("36b73885-c2c8-11cf-8b46-00805f6cef60") IReferenceClock2 : public IReferenceClock { public: }; #else /* C style interface */ typedef struct IReferenceClock2Vtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IReferenceClock2 * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IReferenceClock2 * This); ULONG ( STDMETHODCALLTYPE *Release )( IReferenceClock2 * This); HRESULT ( STDMETHODCALLTYPE *GetTime )( IReferenceClock2 * This, /* [out] */ REFERENCE_TIME *pTime); HRESULT ( STDMETHODCALLTYPE *AdviseTime )( IReferenceClock2 * This, /* [in] */ REFERENCE_TIME baseTime, /* [in] */ REFERENCE_TIME streamTime, /* [in] */ HEVENT hEvent, /* [out] */ DWORD_PTR *pdwAdviseCookie); HRESULT ( STDMETHODCALLTYPE *AdvisePeriodic )( IReferenceClock2 * This, /* [in] */ REFERENCE_TIME startTime, /* [in] */ REFERENCE_TIME periodTime, /* [in] */ HSEMAPHORE hSemaphore, /* [out] */ DWORD_PTR *pdwAdviseCookie); HRESULT ( STDMETHODCALLTYPE *Unadvise )( IReferenceClock2 * This, /* [in] */ DWORD_PTR dwAdviseCookie); END_INTERFACE } IReferenceClock2Vtbl; interface IReferenceClock2 { CONST_VTBL struct IReferenceClock2Vtbl *lpVtbl; }; #ifdef COBJMACROS #define IReferenceClock2_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IReferenceClock2_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IReferenceClock2_Release(This) \ (This)->lpVtbl -> Release(This) #define IReferenceClock2_GetTime(This,pTime) \ (This)->lpVtbl -> GetTime(This,pTime) #define IReferenceClock2_AdviseTime(This,baseTime,streamTime,hEvent,pdwAdviseCookie) \ (This)->lpVtbl -> AdviseTime(This,baseTime,streamTime,hEvent,pdwAdviseCookie) #define IReferenceClock2_AdvisePeriodic(This,startTime,periodTime,hSemaphore,pdwAdviseCookie) \ (This)->lpVtbl -> AdvisePeriodic(This,startTime,periodTime,hSemaphore,pdwAdviseCookie) #define IReferenceClock2_Unadvise(This,dwAdviseCookie) \ (This)->lpVtbl -> Unadvise(This,dwAdviseCookie) #endif /* COBJMACROS */ #endif /* C style interface */ #endif /* __IReferenceClock2_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0121 */ /* [local] */ typedef IReferenceClock2 *PREFERENCECLOCK2; extern RPC_IF_HANDLE __MIDL_itf_strmif_0121_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0121_v0_0_s_ifspec; #ifndef __IMediaSample_INTERFACE_DEFINED__ #define __IMediaSample_INTERFACE_DEFINED__ /* interface IMediaSample */ /* [unique][uuid][object][local] */ EXTERN_C const IID IID_IMediaSample; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("56a8689a-0ad4-11ce-b03a-0020af0ba770") IMediaSample : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE GetPointer( /* [out] */ BYTE **ppBuffer) = 0; virtual long STDMETHODCALLTYPE GetSize( void) = 0; virtual HRESULT STDMETHODCALLTYPE GetTime( /* [out] */ REFERENCE_TIME *pTimeStart, /* [out] */ REFERENCE_TIME *pTimeEnd) = 0; virtual HRESULT STDMETHODCALLTYPE SetTime( /* [in] */ REFERENCE_TIME *pTimeStart, /* [in] */ REFERENCE_TIME *pTimeEnd) = 0; virtual HRESULT STDMETHODCALLTYPE IsSyncPoint( void) = 0; virtual HRESULT STDMETHODCALLTYPE SetSyncPoint( BOOL bIsSyncPoint) = 0; virtual HRESULT STDMETHODCALLTYPE IsPreroll( void) = 0; virtual HRESULT STDMETHODCALLTYPE SetPreroll( BOOL bIsPreroll) = 0; virtual long STDMETHODCALLTYPE GetActualDataLength( void) = 0; virtual HRESULT STDMETHODCALLTYPE SetActualDataLength( long __MIDL_0010) = 0; virtual HRESULT STDMETHODCALLTYPE GetMediaType( AM_MEDIA_TYPE **ppMediaType) = 0; virtual HRESULT STDMETHODCALLTYPE SetMediaType( AM_MEDIA_TYPE *pMediaType) = 0; virtual HRESULT STDMETHODCALLTYPE IsDiscontinuity( void) = 0; virtual HRESULT STDMETHODCALLTYPE SetDiscontinuity( BOOL bDiscontinuity) = 0; virtual HRESULT STDMETHODCALLTYPE GetMediaTime( /* [out] */ LONGLONG *pTimeStart, /* [out] */ LONGLONG *pTimeEnd) = 0; virtual HRESULT STDMETHODCALLTYPE SetMediaTime( /* [in] */ LONGLONG *pTimeStart, /* [in] */ LONGLONG *pTimeEnd) = 0; }; #else /* C style interface */ typedef struct IMediaSampleVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IMediaSample * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IMediaSample * This); ULONG ( STDMETHODCALLTYPE *Release )( IMediaSample * This); HRESULT ( STDMETHODCALLTYPE *GetPointer )( IMediaSample * This, /* [out] */ BYTE **ppBuffer); long ( STDMETHODCALLTYPE *GetSize )( IMediaSample * This); HRESULT ( STDMETHODCALLTYPE *GetTime )( IMediaSample * This, /* [out] */ REFERENCE_TIME *pTimeStart, /* [out] */ REFERENCE_TIME *pTimeEnd); HRESULT ( STDMETHODCALLTYPE *SetTime )( IMediaSample * This, /* [in] */ REFERENCE_TIME *pTimeStart, /* [in] */ REFERENCE_TIME *pTimeEnd); HRESULT ( STDMETHODCALLTYPE *IsSyncPoint )( IMediaSample * This); HRESULT ( STDMETHODCALLTYPE *SetSyncPoint )( IMediaSample * This, BOOL bIsSyncPoint); HRESULT ( STDMETHODCALLTYPE *IsPreroll )( IMediaSample * This); HRESULT ( STDMETHODCALLTYPE *SetPreroll )( IMediaSample * This, BOOL bIsPreroll); long ( STDMETHODCALLTYPE *GetActualDataLength )( IMediaSample * This); HRESULT ( STDMETHODCALLTYPE *SetActualDataLength )( IMediaSample * This, long __MIDL_0010); HRESULT ( STDMETHODCALLTYPE *GetMediaType )( IMediaSample * This, AM_MEDIA_TYPE **ppMediaType); HRESULT ( STDMETHODCALLTYPE *SetMediaType )( IMediaSample * This, AM_MEDIA_TYPE *pMediaType); HRESULT ( STDMETHODCALLTYPE *IsDiscontinuity )( IMediaSample * This); HRESULT ( STDMETHODCALLTYPE *SetDiscontinuity )( IMediaSample * This, BOOL bDiscontinuity); HRESULT ( STDMETHODCALLTYPE *GetMediaTime )( IMediaSample * This, /* [out] */ LONGLONG *pTimeStart, /* [out] */ LONGLONG *pTimeEnd); HRESULT ( STDMETHODCALLTYPE *SetMediaTime )( IMediaSample * This, /* [in] */ LONGLONG *pTimeStart, /* [in] */ LONGLONG *pTimeEnd); END_INTERFACE } IMediaSampleVtbl; interface IMediaSample { CONST_VTBL struct IMediaSampleVtbl *lpVtbl; }; #ifdef COBJMACROS #define IMediaSample_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IMediaSample_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IMediaSample_Release(This) \ (This)->lpVtbl -> Release(This) #define IMediaSample_GetPointer(This,ppBuffer) \ (This)->lpVtbl -> GetPointer(This,ppBuffer) #define IMediaSample_GetSize(This) \ (This)->lpVtbl -> GetSize(This) #define IMediaSample_GetTime(This,pTimeStart,pTimeEnd) \ (This)->lpVtbl -> GetTime(This,pTimeStart,pTimeEnd) #define IMediaSample_SetTime(This,pTimeStart,pTimeEnd) \ (This)->lpVtbl -> SetTime(This,pTimeStart,pTimeEnd) #define IMediaSample_IsSyncPoint(This) \ (This)->lpVtbl -> IsSyncPoint(This) #define IMediaSample_SetSyncPoint(This,bIsSyncPoint) \ (This)->lpVtbl -> SetSyncPoint(This,bIsSyncPoint) #define IMediaSample_IsPreroll(This) \ (This)->lpVtbl -> IsPreroll(This) #define IMediaSample_SetPreroll(This,bIsPreroll) \ (This)->lpVtbl -> SetPreroll(This,bIsPreroll) #define IMediaSample_GetActualDataLength(This) \ (This)->lpVtbl -> GetActualDataLength(This) #define IMediaSample_SetActualDataLength(This,__MIDL_0010) \ (This)->lpVtbl -> SetActualDataLength(This,__MIDL_0010) #define IMediaSample_GetMediaType(This,ppMediaType) \ (This)->lpVtbl -> GetMediaType(This,ppMediaType) #define IMediaSample_SetMediaType(This,pMediaType) \ (This)->lpVtbl -> SetMediaType(This,pMediaType) #define IMediaSample_IsDiscontinuity(This) \ (This)->lpVtbl -> IsDiscontinuity(This) #define IMediaSample_SetDiscontinuity(This,bDiscontinuity) \ (This)->lpVtbl -> SetDiscontinuity(This,bDiscontinuity) #define IMediaSample_GetMediaTime(This,pTimeStart,pTimeEnd) \ (This)->lpVtbl -> GetMediaTime(This,pTimeStart,pTimeEnd) #define IMediaSample_SetMediaTime(This,pTimeStart,pTimeEnd) \ (This)->lpVtbl -> SetMediaTime(This,pTimeStart,pTimeEnd) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IMediaSample_GetPointer_Proxy( IMediaSample * This, /* [out] */ BYTE **ppBuffer); void __RPC_STUB IMediaSample_GetPointer_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); long STDMETHODCALLTYPE IMediaSample_GetSize_Proxy( IMediaSample * This); void __RPC_STUB IMediaSample_GetSize_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMediaSample_GetTime_Proxy( IMediaSample * This, /* [out] */ REFERENCE_TIME *pTimeStart, /* [out] */ REFERENCE_TIME *pTimeEnd); void __RPC_STUB IMediaSample_GetTime_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMediaSample_SetTime_Proxy( IMediaSample * This, /* [in] */ REFERENCE_TIME *pTimeStart, /* [in] */ REFERENCE_TIME *pTimeEnd); void __RPC_STUB IMediaSample_SetTime_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMediaSample_IsSyncPoint_Proxy( IMediaSample * This); void __RPC_STUB IMediaSample_IsSyncPoint_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMediaSample_SetSyncPoint_Proxy( IMediaSample * This, BOOL bIsSyncPoint); void __RPC_STUB IMediaSample_SetSyncPoint_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMediaSample_IsPreroll_Proxy( IMediaSample * This); void __RPC_STUB IMediaSample_IsPreroll_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMediaSample_SetPreroll_Proxy( IMediaSample * This, BOOL bIsPreroll); void __RPC_STUB IMediaSample_SetPreroll_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); long STDMETHODCALLTYPE IMediaSample_GetActualDataLength_Proxy( IMediaSample * This); void __RPC_STUB IMediaSample_GetActualDataLength_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMediaSample_SetActualDataLength_Proxy( IMediaSample * This, long __MIDL_0010); void __RPC_STUB IMediaSample_SetActualDataLength_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMediaSample_GetMediaType_Proxy( IMediaSample * This, AM_MEDIA_TYPE **ppMediaType); void __RPC_STUB IMediaSample_GetMediaType_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMediaSample_SetMediaType_Proxy( IMediaSample * This, AM_MEDIA_TYPE *pMediaType); void __RPC_STUB IMediaSample_SetMediaType_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMediaSample_IsDiscontinuity_Proxy( IMediaSample * This); void __RPC_STUB IMediaSample_IsDiscontinuity_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMediaSample_SetDiscontinuity_Proxy( IMediaSample * This, BOOL bDiscontinuity); void __RPC_STUB IMediaSample_SetDiscontinuity_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMediaSample_GetMediaTime_Proxy( IMediaSample * This, /* [out] */ LONGLONG *pTimeStart, /* [out] */ LONGLONG *pTimeEnd); void __RPC_STUB IMediaSample_GetMediaTime_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMediaSample_SetMediaTime_Proxy( IMediaSample * This, /* [in] */ LONGLONG *pTimeStart, /* [in] */ LONGLONG *pTimeEnd); void __RPC_STUB IMediaSample_SetMediaTime_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IMediaSample_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0122 */ /* [local] */ typedef IMediaSample *PMEDIASAMPLE; enum tagAM_SAMPLE_PROPERTY_FLAGS { AM_SAMPLE_SPLICEPOINT = 0x1, AM_SAMPLE_PREROLL = 0x2, AM_SAMPLE_DATADISCONTINUITY = 0x4, AM_SAMPLE_TYPECHANGED = 0x8, AM_SAMPLE_TIMEVALID = 0x10, AM_SAMPLE_TIMEDISCONTINUITY = 0x40, AM_SAMPLE_FLUSH_ON_PAUSE = 0x80, AM_SAMPLE_STOPVALID = 0x100, AM_SAMPLE_ENDOFSTREAM = 0x200, AM_STREAM_MEDIA = 0, AM_STREAM_CONTROL = 1 } ; typedef struct tagAM_SAMPLE2_PROPERTIES { DWORD cbData; DWORD dwTypeSpecificFlags; DWORD dwSampleFlags; LONG lActual; REFERENCE_TIME tStart; REFERENCE_TIME tStop; DWORD dwStreamId; AM_MEDIA_TYPE *pMediaType; BYTE *pbBuffer; LONG cbBuffer; } AM_SAMPLE2_PROPERTIES; extern RPC_IF_HANDLE __MIDL_itf_strmif_0122_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0122_v0_0_s_ifspec; #ifndef __IMediaSample2_INTERFACE_DEFINED__ #define __IMediaSample2_INTERFACE_DEFINED__ /* interface IMediaSample2 */ /* [unique][uuid][object][local] */ EXTERN_C const IID IID_IMediaSample2; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("36b73884-c2c8-11cf-8b46-00805f6cef60") IMediaSample2 : public IMediaSample { public: virtual HRESULT STDMETHODCALLTYPE GetProperties( /* [in] */ DWORD cbProperties, /* [size_is][out] */ BYTE *pbProperties) = 0; virtual HRESULT STDMETHODCALLTYPE SetProperties( /* [in] */ DWORD cbProperties, /* [size_is][in] */ const BYTE *pbProperties) = 0; }; #else /* C style interface */ typedef struct IMediaSample2Vtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IMediaSample2 * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IMediaSample2 * This); ULONG ( STDMETHODCALLTYPE *Release )( IMediaSample2 * This); HRESULT ( STDMETHODCALLTYPE *GetPointer )( IMediaSample2 * This, /* [out] */ BYTE **ppBuffer); long ( STDMETHODCALLTYPE *GetSize )( IMediaSample2 * This); HRESULT ( STDMETHODCALLTYPE *GetTime )( IMediaSample2 * This, /* [out] */ REFERENCE_TIME *pTimeStart, /* [out] */ REFERENCE_TIME *pTimeEnd); HRESULT ( STDMETHODCALLTYPE *SetTime )( IMediaSample2 * This, /* [in] */ REFERENCE_TIME *pTimeStart, /* [in] */ REFERENCE_TIME *pTimeEnd); HRESULT ( STDMETHODCALLTYPE *IsSyncPoint )( IMediaSample2 * This); HRESULT ( STDMETHODCALLTYPE *SetSyncPoint )( IMediaSample2 * This, BOOL bIsSyncPoint); HRESULT ( STDMETHODCALLTYPE *IsPreroll )( IMediaSample2 * This); HRESULT ( STDMETHODCALLTYPE *SetPreroll )( IMediaSample2 * This, BOOL bIsPreroll); long ( STDMETHODCALLTYPE *GetActualDataLength )( IMediaSample2 * This); HRESULT ( STDMETHODCALLTYPE *SetActualDataLength )( IMediaSample2 * This, long __MIDL_0010); HRESULT ( STDMETHODCALLTYPE *GetMediaType )( IMediaSample2 * This, AM_MEDIA_TYPE **ppMediaType); HRESULT ( STDMETHODCALLTYPE *SetMediaType )( IMediaSample2 * This, AM_MEDIA_TYPE *pMediaType); HRESULT ( STDMETHODCALLTYPE *IsDiscontinuity )( IMediaSample2 * This); HRESULT ( STDMETHODCALLTYPE *SetDiscontinuity )( IMediaSample2 * This, BOOL bDiscontinuity); HRESULT ( STDMETHODCALLTYPE *GetMediaTime )( IMediaSample2 * This, /* [out] */ LONGLONG *pTimeStart, /* [out] */ LONGLONG *pTimeEnd); HRESULT ( STDMETHODCALLTYPE *SetMediaTime )( IMediaSample2 * This, /* [in] */ LONGLONG *pTimeStart, /* [in] */ LONGLONG *pTimeEnd); HRESULT ( STDMETHODCALLTYPE *GetProperties )( IMediaSample2 * This, /* [in] */ DWORD cbProperties, /* [size_is][out] */ BYTE *pbProperties); HRESULT ( STDMETHODCALLTYPE *SetProperties )( IMediaSample2 * This, /* [in] */ DWORD cbProperties, /* [size_is][in] */ const BYTE *pbProperties); END_INTERFACE } IMediaSample2Vtbl; interface IMediaSample2 { CONST_VTBL struct IMediaSample2Vtbl *lpVtbl; }; #ifdef COBJMACROS #define IMediaSample2_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IMediaSample2_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IMediaSample2_Release(This) \ (This)->lpVtbl -> Release(This) #define IMediaSample2_GetPointer(This,ppBuffer) \ (This)->lpVtbl -> GetPointer(This,ppBuffer) #define IMediaSample2_GetSize(This) \ (This)->lpVtbl -> GetSize(This) #define IMediaSample2_GetTime(This,pTimeStart,pTimeEnd) \ (This)->lpVtbl -> GetTime(This,pTimeStart,pTimeEnd) #define IMediaSample2_SetTime(This,pTimeStart,pTimeEnd) \ (This)->lpVtbl -> SetTime(This,pTimeStart,pTimeEnd) #define IMediaSample2_IsSyncPoint(This) \ (This)->lpVtbl -> IsSyncPoint(This) #define IMediaSample2_SetSyncPoint(This,bIsSyncPoint) \ (This)->lpVtbl -> SetSyncPoint(This,bIsSyncPoint) #define IMediaSample2_IsPreroll(This) \ (This)->lpVtbl -> IsPreroll(This) #define IMediaSample2_SetPreroll(This,bIsPreroll) \ (This)->lpVtbl -> SetPreroll(This,bIsPreroll) #define IMediaSample2_GetActualDataLength(This) \ (This)->lpVtbl -> GetActualDataLength(This) #define IMediaSample2_SetActualDataLength(This,__MIDL_0010) \ (This)->lpVtbl -> SetActualDataLength(This,__MIDL_0010) #define IMediaSample2_GetMediaType(This,ppMediaType) \ (This)->lpVtbl -> GetMediaType(This,ppMediaType) #define IMediaSample2_SetMediaType(This,pMediaType) \ (This)->lpVtbl -> SetMediaType(This,pMediaType) #define IMediaSample2_IsDiscontinuity(This) \ (This)->lpVtbl -> IsDiscontinuity(This) #define IMediaSample2_SetDiscontinuity(This,bDiscontinuity) \ (This)->lpVtbl -> SetDiscontinuity(This,bDiscontinuity) #define IMediaSample2_GetMediaTime(This,pTimeStart,pTimeEnd) \ (This)->lpVtbl -> GetMediaTime(This,pTimeStart,pTimeEnd) #define IMediaSample2_SetMediaTime(This,pTimeStart,pTimeEnd) \ (This)->lpVtbl -> SetMediaTime(This,pTimeStart,pTimeEnd) #define IMediaSample2_GetProperties(This,cbProperties,pbProperties) \ (This)->lpVtbl -> GetProperties(This,cbProperties,pbProperties) #define IMediaSample2_SetProperties(This,cbProperties,pbProperties) \ (This)->lpVtbl -> SetProperties(This,cbProperties,pbProperties) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IMediaSample2_GetProperties_Proxy( IMediaSample2 * This, /* [in] */ DWORD cbProperties, /* [size_is][out] */ BYTE *pbProperties); void __RPC_STUB IMediaSample2_GetProperties_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMediaSample2_SetProperties_Proxy( IMediaSample2 * This, /* [in] */ DWORD cbProperties, /* [size_is][in] */ const BYTE *pbProperties); void __RPC_STUB IMediaSample2_SetProperties_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IMediaSample2_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0123 */ /* [local] */ typedef IMediaSample2 *PMEDIASAMPLE2; #define AM_GBF_PREVFRAMESKIPPED 1 #define AM_GBF_NOTASYNCPOINT 2 #define AM_GBF_NOWAIT 4 #define AM_GBF_NODDSURFACELOCK 8 extern RPC_IF_HANDLE __MIDL_itf_strmif_0123_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0123_v0_0_s_ifspec; #ifndef __IMemAllocator_INTERFACE_DEFINED__ #define __IMemAllocator_INTERFACE_DEFINED__ /* interface IMemAllocator */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IMemAllocator; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("56a8689c-0ad4-11ce-b03a-0020af0ba770") IMemAllocator : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE SetProperties( /* [in] */ ALLOCATOR_PROPERTIES *pRequest, /* [out] */ ALLOCATOR_PROPERTIES *pActual) = 0; virtual HRESULT STDMETHODCALLTYPE GetProperties( /* [out] */ ALLOCATOR_PROPERTIES *pProps) = 0; virtual HRESULT STDMETHODCALLTYPE Commit( void) = 0; virtual HRESULT STDMETHODCALLTYPE Decommit( void) = 0; virtual HRESULT STDMETHODCALLTYPE GetBuffer( /* [out] */ IMediaSample **ppBuffer, /* [in] */ REFERENCE_TIME *pStartTime, /* [in] */ REFERENCE_TIME *pEndTime, /* [in] */ DWORD dwFlags) = 0; virtual HRESULT STDMETHODCALLTYPE ReleaseBuffer( /* [in] */ IMediaSample *pBuffer) = 0; }; #else /* C style interface */ typedef struct IMemAllocatorVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IMemAllocator * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IMemAllocator * This); ULONG ( STDMETHODCALLTYPE *Release )( IMemAllocator * This); HRESULT ( STDMETHODCALLTYPE *SetProperties )( IMemAllocator * This, /* [in] */ ALLOCATOR_PROPERTIES *pRequest, /* [out] */ ALLOCATOR_PROPERTIES *pActual); HRESULT ( STDMETHODCALLTYPE *GetProperties )( IMemAllocator * This, /* [out] */ ALLOCATOR_PROPERTIES *pProps); HRESULT ( STDMETHODCALLTYPE *Commit )( IMemAllocator * This); HRESULT ( STDMETHODCALLTYPE *Decommit )( IMemAllocator * This); HRESULT ( STDMETHODCALLTYPE *GetBuffer )( IMemAllocator * This, /* [out] */ IMediaSample **ppBuffer, /* [in] */ REFERENCE_TIME *pStartTime, /* [in] */ REFERENCE_TIME *pEndTime, /* [in] */ DWORD dwFlags); HRESULT ( STDMETHODCALLTYPE *ReleaseBuffer )( IMemAllocator * This, /* [in] */ IMediaSample *pBuffer); END_INTERFACE } IMemAllocatorVtbl; interface IMemAllocator { CONST_VTBL struct IMemAllocatorVtbl *lpVtbl; }; #ifdef COBJMACROS #define IMemAllocator_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IMemAllocator_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IMemAllocator_Release(This) \ (This)->lpVtbl -> Release(This) #define IMemAllocator_SetProperties(This,pRequest,pActual) \ (This)->lpVtbl -> SetProperties(This,pRequest,pActual) #define IMemAllocator_GetProperties(This,pProps) \ (This)->lpVtbl -> GetProperties(This,pProps) #define IMemAllocator_Commit(This) \ (This)->lpVtbl -> Commit(This) #define IMemAllocator_Decommit(This) \ (This)->lpVtbl -> Decommit(This) #define IMemAllocator_GetBuffer(This,ppBuffer,pStartTime,pEndTime,dwFlags) \ (This)->lpVtbl -> GetBuffer(This,ppBuffer,pStartTime,pEndTime,dwFlags) #define IMemAllocator_ReleaseBuffer(This,pBuffer) \ (This)->lpVtbl -> ReleaseBuffer(This,pBuffer) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IMemAllocator_SetProperties_Proxy( IMemAllocator * This, /* [in] */ ALLOCATOR_PROPERTIES *pRequest, /* [out] */ ALLOCATOR_PROPERTIES *pActual); void __RPC_STUB IMemAllocator_SetProperties_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMemAllocator_GetProperties_Proxy( IMemAllocator * This, /* [out] */ ALLOCATOR_PROPERTIES *pProps); void __RPC_STUB IMemAllocator_GetProperties_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMemAllocator_Commit_Proxy( IMemAllocator * This); void __RPC_STUB IMemAllocator_Commit_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMemAllocator_Decommit_Proxy( IMemAllocator * This); void __RPC_STUB IMemAllocator_Decommit_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMemAllocator_GetBuffer_Proxy( IMemAllocator * This, /* [out] */ IMediaSample **ppBuffer, /* [in] */ REFERENCE_TIME *pStartTime, /* [in] */ REFERENCE_TIME *pEndTime, /* [in] */ DWORD dwFlags); void __RPC_STUB IMemAllocator_GetBuffer_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMemAllocator_ReleaseBuffer_Proxy( IMemAllocator * This, /* [in] */ IMediaSample *pBuffer); void __RPC_STUB IMemAllocator_ReleaseBuffer_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IMemAllocator_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0124 */ /* [local] */ typedef IMemAllocator *PMEMALLOCATOR; extern RPC_IF_HANDLE __MIDL_itf_strmif_0124_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0124_v0_0_s_ifspec; #ifndef __IMemAllocatorCallbackTemp_INTERFACE_DEFINED__ #define __IMemAllocatorCallbackTemp_INTERFACE_DEFINED__ /* interface IMemAllocatorCallbackTemp */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IMemAllocatorCallbackTemp; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("379a0cf0-c1de-11d2-abf5-00a0c905f375") IMemAllocatorCallbackTemp : public IMemAllocator { public: virtual HRESULT STDMETHODCALLTYPE SetNotify( /* [in] */ IMemAllocatorNotifyCallbackTemp *pNotify) = 0; virtual HRESULT STDMETHODCALLTYPE GetFreeCount( /* [out] */ LONG *plBuffersFree) = 0; }; #else /* C style interface */ typedef struct IMemAllocatorCallbackTempVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IMemAllocatorCallbackTemp * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IMemAllocatorCallbackTemp * This); ULONG ( STDMETHODCALLTYPE *Release )( IMemAllocatorCallbackTemp * This); HRESULT ( STDMETHODCALLTYPE *SetProperties )( IMemAllocatorCallbackTemp * This, /* [in] */ ALLOCATOR_PROPERTIES *pRequest, /* [out] */ ALLOCATOR_PROPERTIES *pActual); HRESULT ( STDMETHODCALLTYPE *GetProperties )( IMemAllocatorCallbackTemp * This, /* [out] */ ALLOCATOR_PROPERTIES *pProps); HRESULT ( STDMETHODCALLTYPE *Commit )( IMemAllocatorCallbackTemp * This); HRESULT ( STDMETHODCALLTYPE *Decommit )( IMemAllocatorCallbackTemp * This); HRESULT ( STDMETHODCALLTYPE *GetBuffer )( IMemAllocatorCallbackTemp * This, /* [out] */ IMediaSample **ppBuffer, /* [in] */ REFERENCE_TIME *pStartTime, /* [in] */ REFERENCE_TIME *pEndTime, /* [in] */ DWORD dwFlags); HRESULT ( STDMETHODCALLTYPE *ReleaseBuffer )( IMemAllocatorCallbackTemp * This, /* [in] */ IMediaSample *pBuffer); HRESULT ( STDMETHODCALLTYPE *SetNotify )( IMemAllocatorCallbackTemp * This, /* [in] */ IMemAllocatorNotifyCallbackTemp *pNotify); HRESULT ( STDMETHODCALLTYPE *GetFreeCount )( IMemAllocatorCallbackTemp * This, /* [out] */ LONG *plBuffersFree); END_INTERFACE } IMemAllocatorCallbackTempVtbl; interface IMemAllocatorCallbackTemp { CONST_VTBL struct IMemAllocatorCallbackTempVtbl *lpVtbl; }; #ifdef COBJMACROS #define IMemAllocatorCallbackTemp_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IMemAllocatorCallbackTemp_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IMemAllocatorCallbackTemp_Release(This) \ (This)->lpVtbl -> Release(This) #define IMemAllocatorCallbackTemp_SetProperties(This,pRequest,pActual) \ (This)->lpVtbl -> SetProperties(This,pRequest,pActual) #define IMemAllocatorCallbackTemp_GetProperties(This,pProps) \ (This)->lpVtbl -> GetProperties(This,pProps) #define IMemAllocatorCallbackTemp_Commit(This) \ (This)->lpVtbl -> Commit(This) #define IMemAllocatorCallbackTemp_Decommit(This) \ (This)->lpVtbl -> Decommit(This) #define IMemAllocatorCallbackTemp_GetBuffer(This,ppBuffer,pStartTime,pEndTime,dwFlags) \ (This)->lpVtbl -> GetBuffer(This,ppBuffer,pStartTime,pEndTime,dwFlags) #define IMemAllocatorCallbackTemp_ReleaseBuffer(This,pBuffer) \ (This)->lpVtbl -> ReleaseBuffer(This,pBuffer) #define IMemAllocatorCallbackTemp_SetNotify(This,pNotify) \ (This)->lpVtbl -> SetNotify(This,pNotify) #define IMemAllocatorCallbackTemp_GetFreeCount(This,plBuffersFree) \ (This)->lpVtbl -> GetFreeCount(This,plBuffersFree) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IMemAllocatorCallbackTemp_SetNotify_Proxy( IMemAllocatorCallbackTemp * This, /* [in] */ IMemAllocatorNotifyCallbackTemp *pNotify); void __RPC_STUB IMemAllocatorCallbackTemp_SetNotify_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMemAllocatorCallbackTemp_GetFreeCount_Proxy( IMemAllocatorCallbackTemp * This, /* [out] */ LONG *plBuffersFree); void __RPC_STUB IMemAllocatorCallbackTemp_GetFreeCount_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IMemAllocatorCallbackTemp_INTERFACE_DEFINED__ */ #ifndef __IMemAllocatorNotifyCallbackTemp_INTERFACE_DEFINED__ #define __IMemAllocatorNotifyCallbackTemp_INTERFACE_DEFINED__ /* interface IMemAllocatorNotifyCallbackTemp */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IMemAllocatorNotifyCallbackTemp; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("92980b30-c1de-11d2-abf5-00a0c905f375") IMemAllocatorNotifyCallbackTemp : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE NotifyRelease( void) = 0; }; #else /* C style interface */ typedef struct IMemAllocatorNotifyCallbackTempVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IMemAllocatorNotifyCallbackTemp * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IMemAllocatorNotifyCallbackTemp * This); ULONG ( STDMETHODCALLTYPE *Release )( IMemAllocatorNotifyCallbackTemp * This); HRESULT ( STDMETHODCALLTYPE *NotifyRelease )( IMemAllocatorNotifyCallbackTemp * This); END_INTERFACE } IMemAllocatorNotifyCallbackTempVtbl; interface IMemAllocatorNotifyCallbackTemp { CONST_VTBL struct IMemAllocatorNotifyCallbackTempVtbl *lpVtbl; }; #ifdef COBJMACROS #define IMemAllocatorNotifyCallbackTemp_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IMemAllocatorNotifyCallbackTemp_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IMemAllocatorNotifyCallbackTemp_Release(This) \ (This)->lpVtbl -> Release(This) #define IMemAllocatorNotifyCallbackTemp_NotifyRelease(This) \ (This)->lpVtbl -> NotifyRelease(This) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IMemAllocatorNotifyCallbackTemp_NotifyRelease_Proxy( IMemAllocatorNotifyCallbackTemp * This); void __RPC_STUB IMemAllocatorNotifyCallbackTemp_NotifyRelease_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IMemAllocatorNotifyCallbackTemp_INTERFACE_DEFINED__ */ #ifndef __IMemInputPin_INTERFACE_DEFINED__ #define __IMemInputPin_INTERFACE_DEFINED__ /* interface IMemInputPin */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IMemInputPin; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("56a8689d-0ad4-11ce-b03a-0020af0ba770") IMemInputPin : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE GetAllocator( /* [out] */ IMemAllocator **ppAllocator) = 0; virtual HRESULT STDMETHODCALLTYPE NotifyAllocator( /* [in] */ IMemAllocator *pAllocator, /* [in] */ BOOL bReadOnly) = 0; virtual HRESULT STDMETHODCALLTYPE GetAllocatorRequirements( /* [out] */ ALLOCATOR_PROPERTIES *pProps) = 0; virtual HRESULT STDMETHODCALLTYPE Receive( /* [in] */ IMediaSample *pSample) = 0; virtual HRESULT STDMETHODCALLTYPE ReceiveMultiple( /* [size_is][in] */ IMediaSample **pSamples, /* [in] */ long nSamples, /* [out] */ long *nSamplesProcessed) = 0; virtual HRESULT STDMETHODCALLTYPE ReceiveCanBlock( void) = 0; }; #else /* C style interface */ typedef struct IMemInputPinVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IMemInputPin * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IMemInputPin * This); ULONG ( STDMETHODCALLTYPE *Release )( IMemInputPin * This); HRESULT ( STDMETHODCALLTYPE *GetAllocator )( IMemInputPin * This, /* [out] */ IMemAllocator **ppAllocator); HRESULT ( STDMETHODCALLTYPE *NotifyAllocator )( IMemInputPin * This, /* [in] */ IMemAllocator *pAllocator, /* [in] */ BOOL bReadOnly); HRESULT ( STDMETHODCALLTYPE *GetAllocatorRequirements )( IMemInputPin * This, /* [out] */ ALLOCATOR_PROPERTIES *pProps); HRESULT ( STDMETHODCALLTYPE *Receive )( IMemInputPin * This, /* [in] */ IMediaSample *pSample); HRESULT ( STDMETHODCALLTYPE *ReceiveMultiple )( IMemInputPin * This, /* [size_is][in] */ IMediaSample **pSamples, /* [in] */ long nSamples, /* [out] */ long *nSamplesProcessed); HRESULT ( STDMETHODCALLTYPE *ReceiveCanBlock )( IMemInputPin * This); END_INTERFACE } IMemInputPinVtbl; interface IMemInputPin { CONST_VTBL struct IMemInputPinVtbl *lpVtbl; }; #ifdef COBJMACROS #define IMemInputPin_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IMemInputPin_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IMemInputPin_Release(This) \ (This)->lpVtbl -> Release(This) #define IMemInputPin_GetAllocator(This,ppAllocator) \ (This)->lpVtbl -> GetAllocator(This,ppAllocator) #define IMemInputPin_NotifyAllocator(This,pAllocator,bReadOnly) \ (This)->lpVtbl -> NotifyAllocator(This,pAllocator,bReadOnly) #define IMemInputPin_GetAllocatorRequirements(This,pProps) \ (This)->lpVtbl -> GetAllocatorRequirements(This,pProps) #define IMemInputPin_Receive(This,pSample) \ (This)->lpVtbl -> Receive(This,pSample) #define IMemInputPin_ReceiveMultiple(This,pSamples,nSamples,nSamplesProcessed) \ (This)->lpVtbl -> ReceiveMultiple(This,pSamples,nSamples,nSamplesProcessed) #define IMemInputPin_ReceiveCanBlock(This) \ (This)->lpVtbl -> ReceiveCanBlock(This) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IMemInputPin_GetAllocator_Proxy( IMemInputPin * This, /* [out] */ IMemAllocator **ppAllocator); void __RPC_STUB IMemInputPin_GetAllocator_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMemInputPin_NotifyAllocator_Proxy( IMemInputPin * This, /* [in] */ IMemAllocator *pAllocator, /* [in] */ BOOL bReadOnly); void __RPC_STUB IMemInputPin_NotifyAllocator_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMemInputPin_GetAllocatorRequirements_Proxy( IMemInputPin * This, /* [out] */ ALLOCATOR_PROPERTIES *pProps); void __RPC_STUB IMemInputPin_GetAllocatorRequirements_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMemInputPin_Receive_Proxy( IMemInputPin * This, /* [in] */ IMediaSample *pSample); void __RPC_STUB IMemInputPin_Receive_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMemInputPin_ReceiveMultiple_Proxy( IMemInputPin * This, /* [size_is][in] */ IMediaSample **pSamples, /* [in] */ long nSamples, /* [out] */ long *nSamplesProcessed); void __RPC_STUB IMemInputPin_ReceiveMultiple_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMemInputPin_ReceiveCanBlock_Proxy( IMemInputPin * This); void __RPC_STUB IMemInputPin_ReceiveCanBlock_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IMemInputPin_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0127 */ /* [local] */ typedef IMemInputPin *PMEMINPUTPIN; extern RPC_IF_HANDLE __MIDL_itf_strmif_0127_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0127_v0_0_s_ifspec; #ifndef __IAMovieSetup_INTERFACE_DEFINED__ #define __IAMovieSetup_INTERFACE_DEFINED__ /* interface IAMovieSetup */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IAMovieSetup; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("a3d8cec0-7e5a-11cf-bbc5-00805f6cef20") IAMovieSetup : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE Register( void) = 0; virtual HRESULT STDMETHODCALLTYPE Unregister( void) = 0; }; #else /* C style interface */ typedef struct IAMovieSetupVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMovieSetup * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMovieSetup * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMovieSetup * This); HRESULT ( STDMETHODCALLTYPE *Register )( IAMovieSetup * This); HRESULT ( STDMETHODCALLTYPE *Unregister )( IAMovieSetup * This); END_INTERFACE } IAMovieSetupVtbl; interface IAMovieSetup { CONST_VTBL struct IAMovieSetupVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMovieSetup_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMovieSetup_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMovieSetup_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMovieSetup_Register(This) \ (This)->lpVtbl -> Register(This) #define IAMovieSetup_Unregister(This) \ (This)->lpVtbl -> Unregister(This) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMovieSetup_Register_Proxy( IAMovieSetup * This); void __RPC_STUB IAMovieSetup_Register_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMovieSetup_Unregister_Proxy( IAMovieSetup * This); void __RPC_STUB IAMovieSetup_Unregister_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMovieSetup_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0128 */ /* [local] */ typedef IAMovieSetup *PAMOVIESETUP; typedef enum AM_SEEKING_SeekingFlags { AM_SEEKING_NoPositioning = 0, AM_SEEKING_AbsolutePositioning = 0x1, AM_SEEKING_RelativePositioning = 0x2, AM_SEEKING_IncrementalPositioning = 0x3, AM_SEEKING_PositioningBitsMask = 0x3, AM_SEEKING_SeekToKeyFrame = 0x4, AM_SEEKING_ReturnTime = 0x8, AM_SEEKING_Segment = 0x10, AM_SEEKING_NoFlush = 0x20 } AM_SEEKING_SEEKING_FLAGS; typedef enum AM_SEEKING_SeekingCapabilities { AM_SEEKING_CanSeekAbsolute = 0x1, AM_SEEKING_CanSeekForwards = 0x2, AM_SEEKING_CanSeekBackwards = 0x4, AM_SEEKING_CanGetCurrentPos = 0x8, AM_SEEKING_CanGetStopPos = 0x10, AM_SEEKING_CanGetDuration = 0x20, AM_SEEKING_CanPlayBackwards = 0x40, AM_SEEKING_CanDoSegments = 0x80, AM_SEEKING_Source = 0x100 } AM_SEEKING_SEEKING_CAPABILITIES; extern RPC_IF_HANDLE __MIDL_itf_strmif_0128_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0128_v0_0_s_ifspec; #ifndef __IMediaSeeking_INTERFACE_DEFINED__ #define __IMediaSeeking_INTERFACE_DEFINED__ /* interface IMediaSeeking */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IMediaSeeking; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("36b73880-c2c8-11cf-8b46-00805f6cef60") IMediaSeeking : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE GetCapabilities( /* [out] */ DWORD *pCapabilities) = 0; virtual HRESULT STDMETHODCALLTYPE CheckCapabilities( /* [out][in] */ DWORD *pCapabilities) = 0; virtual HRESULT STDMETHODCALLTYPE IsFormatSupported( /* [in] */ const GUID *pFormat) = 0; virtual HRESULT STDMETHODCALLTYPE QueryPreferredFormat( /* [out] */ GUID *pFormat) = 0; virtual HRESULT STDMETHODCALLTYPE GetTimeFormat( /* [out] */ GUID *pFormat) = 0; virtual HRESULT STDMETHODCALLTYPE IsUsingTimeFormat( /* [in] */ const GUID *pFormat) = 0; virtual HRESULT STDMETHODCALLTYPE SetTimeFormat( /* [in] */ const GUID *pFormat) = 0; virtual HRESULT STDMETHODCALLTYPE GetDuration( /* [out] */ LONGLONG *pDuration) = 0; virtual HRESULT STDMETHODCALLTYPE GetStopPosition( /* [out] */ LONGLONG *pStop) = 0; virtual HRESULT STDMETHODCALLTYPE GetCurrentPosition( /* [out] */ LONGLONG *pCurrent) = 0; virtual HRESULT STDMETHODCALLTYPE ConvertTimeFormat( /* [out] */ LONGLONG *pTarget, /* [in] */ const GUID *pTargetFormat, /* [in] */ LONGLONG Source, /* [in] */ const GUID *pSourceFormat) = 0; virtual HRESULT STDMETHODCALLTYPE SetPositions( /* [out][in] */ LONGLONG *pCurrent, /* [in] */ DWORD dwCurrentFlags, /* [out][in] */ LONGLONG *pStop, /* [in] */ DWORD dwStopFlags) = 0; virtual HRESULT STDMETHODCALLTYPE GetPositions( /* [out] */ LONGLONG *pCurrent, /* [out] */ LONGLONG *pStop) = 0; virtual HRESULT STDMETHODCALLTYPE GetAvailable( /* [out] */ LONGLONG *pEarliest, /* [out] */ LONGLONG *pLatest) = 0; virtual HRESULT STDMETHODCALLTYPE SetRate( /* [in] */ double dRate) = 0; virtual HRESULT STDMETHODCALLTYPE GetRate( /* [out] */ double *pdRate) = 0; virtual HRESULT STDMETHODCALLTYPE GetPreroll( /* [out] */ LONGLONG *pllPreroll) = 0; }; #else /* C style interface */ typedef struct IMediaSeekingVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IMediaSeeking * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IMediaSeeking * This); ULONG ( STDMETHODCALLTYPE *Release )( IMediaSeeking * This); HRESULT ( STDMETHODCALLTYPE *GetCapabilities )( IMediaSeeking * This, /* [out] */ DWORD *pCapabilities); HRESULT ( STDMETHODCALLTYPE *CheckCapabilities )( IMediaSeeking * This, /* [out][in] */ DWORD *pCapabilities); HRESULT ( STDMETHODCALLTYPE *IsFormatSupported )( IMediaSeeking * This, /* [in] */ const GUID *pFormat); HRESULT ( STDMETHODCALLTYPE *QueryPreferredFormat )( IMediaSeeking * This, /* [out] */ GUID *pFormat); HRESULT ( STDMETHODCALLTYPE *GetTimeFormat )( IMediaSeeking * This, /* [out] */ GUID *pFormat); HRESULT ( STDMETHODCALLTYPE *IsUsingTimeFormat )( IMediaSeeking * This, /* [in] */ const GUID *pFormat); HRESULT ( STDMETHODCALLTYPE *SetTimeFormat )( IMediaSeeking * This, /* [in] */ const GUID *pFormat); HRESULT ( STDMETHODCALLTYPE *GetDuration )( IMediaSeeking * This, /* [out] */ LONGLONG *pDuration); HRESULT ( STDMETHODCALLTYPE *GetStopPosition )( IMediaSeeking * This, /* [out] */ LONGLONG *pStop); HRESULT ( STDMETHODCALLTYPE *GetCurrentPosition )( IMediaSeeking * This, /* [out] */ LONGLONG *pCurrent); HRESULT ( STDMETHODCALLTYPE *ConvertTimeFormat )( IMediaSeeking * This, /* [out] */ LONGLONG *pTarget, /* [in] */ const GUID *pTargetFormat, /* [in] */ LONGLONG Source, /* [in] */ const GUID *pSourceFormat); HRESULT ( STDMETHODCALLTYPE *SetPositions )( IMediaSeeking * This, /* [out][in] */ LONGLONG *pCurrent, /* [in] */ DWORD dwCurrentFlags, /* [out][in] */ LONGLONG *pStop, /* [in] */ DWORD dwStopFlags); HRESULT ( STDMETHODCALLTYPE *GetPositions )( IMediaSeeking * This, /* [out] */ LONGLONG *pCurrent, /* [out] */ LONGLONG *pStop); HRESULT ( STDMETHODCALLTYPE *GetAvailable )( IMediaSeeking * This, /* [out] */ LONGLONG *pEarliest, /* [out] */ LONGLONG *pLatest); HRESULT ( STDMETHODCALLTYPE *SetRate )( IMediaSeeking * This, /* [in] */ double dRate); HRESULT ( STDMETHODCALLTYPE *GetRate )( IMediaSeeking * This, /* [out] */ double *pdRate); HRESULT ( STDMETHODCALLTYPE *GetPreroll )( IMediaSeeking * This, /* [out] */ LONGLONG *pllPreroll); END_INTERFACE } IMediaSeekingVtbl; interface IMediaSeeking { CONST_VTBL struct IMediaSeekingVtbl *lpVtbl; }; #ifdef COBJMACROS #define IMediaSeeking_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IMediaSeeking_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IMediaSeeking_Release(This) \ (This)->lpVtbl -> Release(This) #define IMediaSeeking_GetCapabilities(This,pCapabilities) \ (This)->lpVtbl -> GetCapabilities(This,pCapabilities) #define IMediaSeeking_CheckCapabilities(This,pCapabilities) \ (This)->lpVtbl -> CheckCapabilities(This,pCapabilities) #define IMediaSeeking_IsFormatSupported(This,pFormat) \ (This)->lpVtbl -> IsFormatSupported(This,pFormat) #define IMediaSeeking_QueryPreferredFormat(This,pFormat) \ (This)->lpVtbl -> QueryPreferredFormat(This,pFormat) #define IMediaSeeking_GetTimeFormat(This,pFormat) \ (This)->lpVtbl -> GetTimeFormat(This,pFormat) #define IMediaSeeking_IsUsingTimeFormat(This,pFormat) \ (This)->lpVtbl -> IsUsingTimeFormat(This,pFormat) #define IMediaSeeking_SetTimeFormat(This,pFormat) \ (This)->lpVtbl -> SetTimeFormat(This,pFormat) #define IMediaSeeking_GetDuration(This,pDuration) \ (This)->lpVtbl -> GetDuration(This,pDuration) #define IMediaSeeking_GetStopPosition(This,pStop) \ (This)->lpVtbl -> GetStopPosition(This,pStop) #define IMediaSeeking_GetCurrentPosition(This,pCurrent) \ (This)->lpVtbl -> GetCurrentPosition(This,pCurrent) #define IMediaSeeking_ConvertTimeFormat(This,pTarget,pTargetFormat,Source,pSourceFormat) \ (This)->lpVtbl -> ConvertTimeFormat(This,pTarget,pTargetFormat,Source,pSourceFormat) #define IMediaSeeking_SetPositions(This,pCurrent,dwCurrentFlags,pStop,dwStopFlags) \ (This)->lpVtbl -> SetPositions(This,pCurrent,dwCurrentFlags,pStop,dwStopFlags) #define IMediaSeeking_GetPositions(This,pCurrent,pStop) \ (This)->lpVtbl -> GetPositions(This,pCurrent,pStop) #define IMediaSeeking_GetAvailable(This,pEarliest,pLatest) \ (This)->lpVtbl -> GetAvailable(This,pEarliest,pLatest) #define IMediaSeeking_SetRate(This,dRate) \ (This)->lpVtbl -> SetRate(This,dRate) #define IMediaSeeking_GetRate(This,pdRate) \ (This)->lpVtbl -> GetRate(This,pdRate) #define IMediaSeeking_GetPreroll(This,pllPreroll) \ (This)->lpVtbl -> GetPreroll(This,pllPreroll) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IMediaSeeking_GetCapabilities_Proxy( IMediaSeeking * This, /* [out] */ DWORD *pCapabilities); void __RPC_STUB IMediaSeeking_GetCapabilities_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMediaSeeking_CheckCapabilities_Proxy( IMediaSeeking * This, /* [out][in] */ DWORD *pCapabilities); void __RPC_STUB IMediaSeeking_CheckCapabilities_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMediaSeeking_IsFormatSupported_Proxy( IMediaSeeking * This, /* [in] */ const GUID *pFormat); void __RPC_STUB IMediaSeeking_IsFormatSupported_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMediaSeeking_QueryPreferredFormat_Proxy( IMediaSeeking * This, /* [out] */ GUID *pFormat); void __RPC_STUB IMediaSeeking_QueryPreferredFormat_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMediaSeeking_GetTimeFormat_Proxy( IMediaSeeking * This, /* [out] */ GUID *pFormat); void __RPC_STUB IMediaSeeking_GetTimeFormat_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMediaSeeking_IsUsingTimeFormat_Proxy( IMediaSeeking * This, /* [in] */ const GUID *pFormat); void __RPC_STUB IMediaSeeking_IsUsingTimeFormat_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMediaSeeking_SetTimeFormat_Proxy( IMediaSeeking * This, /* [in] */ const GUID *pFormat); void __RPC_STUB IMediaSeeking_SetTimeFormat_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMediaSeeking_GetDuration_Proxy( IMediaSeeking * This, /* [out] */ LONGLONG *pDuration); void __RPC_STUB IMediaSeeking_GetDuration_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMediaSeeking_GetStopPosition_Proxy( IMediaSeeking * This, /* [out] */ LONGLONG *pStop); void __RPC_STUB IMediaSeeking_GetStopPosition_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMediaSeeking_GetCurrentPosition_Proxy( IMediaSeeking * This, /* [out] */ LONGLONG *pCurrent); void __RPC_STUB IMediaSeeking_GetCurrentPosition_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMediaSeeking_ConvertTimeFormat_Proxy( IMediaSeeking * This, /* [out] */ LONGLONG *pTarget, /* [in] */ const GUID *pTargetFormat, /* [in] */ LONGLONG Source, /* [in] */ const GUID *pSourceFormat); void __RPC_STUB IMediaSeeking_ConvertTimeFormat_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMediaSeeking_SetPositions_Proxy( IMediaSeeking * This, /* [out][in] */ LONGLONG *pCurrent, /* [in] */ DWORD dwCurrentFlags, /* [out][in] */ LONGLONG *pStop, /* [in] */ DWORD dwStopFlags); void __RPC_STUB IMediaSeeking_SetPositions_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMediaSeeking_GetPositions_Proxy( IMediaSeeking * This, /* [out] */ LONGLONG *pCurrent, /* [out] */ LONGLONG *pStop); void __RPC_STUB IMediaSeeking_GetPositions_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMediaSeeking_GetAvailable_Proxy( IMediaSeeking * This, /* [out] */ LONGLONG *pEarliest, /* [out] */ LONGLONG *pLatest); void __RPC_STUB IMediaSeeking_GetAvailable_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMediaSeeking_SetRate_Proxy( IMediaSeeking * This, /* [in] */ double dRate); void __RPC_STUB IMediaSeeking_SetRate_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMediaSeeking_GetRate_Proxy( IMediaSeeking * This, /* [out] */ double *pdRate); void __RPC_STUB IMediaSeeking_GetRate_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMediaSeeking_GetPreroll_Proxy( IMediaSeeking * This, /* [out] */ LONGLONG *pllPreroll); void __RPC_STUB IMediaSeeking_GetPreroll_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IMediaSeeking_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0129 */ /* [local] */ typedef IMediaSeeking *PMEDIASEEKING; enum tagAM_MEDIAEVENT_FLAGS { AM_MEDIAEVENT_NONOTIFY = 0x01 }; typedef /* [public][public] */ struct __MIDL___MIDL_itf_strmif_0129_0001 { CLSID Clsid; LPWSTR Name; } REGFILTER; extern RPC_IF_HANDLE __MIDL_itf_strmif_0129_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0129_v0_0_s_ifspec; #ifndef __IEnumRegFilters_INTERFACE_DEFINED__ #define __IEnumRegFilters_INTERFACE_DEFINED__ /* interface IEnumRegFilters */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IEnumRegFilters; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("56a868a4-0ad4-11ce-b03a-0020af0ba770") IEnumRegFilters : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE Next( /* [in] */ ULONG cFilters, /* [out] */ REGFILTER **apRegFilter, /* [out] */ ULONG *pcFetched) = 0; virtual HRESULT STDMETHODCALLTYPE Skip( /* [in] */ ULONG cFilters) = 0; virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0; virtual HRESULT STDMETHODCALLTYPE Clone( /* [out] */ IEnumRegFilters **ppEnum) = 0; }; #else /* C style interface */ typedef struct IEnumRegFiltersVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IEnumRegFilters * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IEnumRegFilters * This); ULONG ( STDMETHODCALLTYPE *Release )( IEnumRegFilters * This); HRESULT ( STDMETHODCALLTYPE *Next )( IEnumRegFilters * This, /* [in] */ ULONG cFilters, /* [out] */ REGFILTER **apRegFilter, /* [out] */ ULONG *pcFetched); HRESULT ( STDMETHODCALLTYPE *Skip )( IEnumRegFilters * This, /* [in] */ ULONG cFilters); HRESULT ( STDMETHODCALLTYPE *Reset )( IEnumRegFilters * This); HRESULT ( STDMETHODCALLTYPE *Clone )( IEnumRegFilters * This, /* [out] */ IEnumRegFilters **ppEnum); END_INTERFACE } IEnumRegFiltersVtbl; interface IEnumRegFilters { CONST_VTBL struct IEnumRegFiltersVtbl *lpVtbl; }; #ifdef COBJMACROS #define IEnumRegFilters_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IEnumRegFilters_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IEnumRegFilters_Release(This) \ (This)->lpVtbl -> Release(This) #define IEnumRegFilters_Next(This,cFilters,apRegFilter,pcFetched) \ (This)->lpVtbl -> Next(This,cFilters,apRegFilter,pcFetched) #define IEnumRegFilters_Skip(This,cFilters) \ (This)->lpVtbl -> Skip(This,cFilters) #define IEnumRegFilters_Reset(This) \ (This)->lpVtbl -> Reset(This) #define IEnumRegFilters_Clone(This,ppEnum) \ (This)->lpVtbl -> Clone(This,ppEnum) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IEnumRegFilters_Next_Proxy( IEnumRegFilters * This, /* [in] */ ULONG cFilters, /* [out] */ REGFILTER **apRegFilter, /* [out] */ ULONG *pcFetched); void __RPC_STUB IEnumRegFilters_Next_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IEnumRegFilters_Skip_Proxy( IEnumRegFilters * This, /* [in] */ ULONG cFilters); void __RPC_STUB IEnumRegFilters_Skip_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IEnumRegFilters_Reset_Proxy( IEnumRegFilters * This); void __RPC_STUB IEnumRegFilters_Reset_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IEnumRegFilters_Clone_Proxy( IEnumRegFilters * This, /* [out] */ IEnumRegFilters **ppEnum); void __RPC_STUB IEnumRegFilters_Clone_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IEnumRegFilters_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0131 */ /* [local] */ typedef IEnumRegFilters *PENUMREGFILTERS; extern RPC_IF_HANDLE __MIDL_itf_strmif_0131_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0131_v0_0_s_ifspec; #ifndef __IFilterMapper_INTERFACE_DEFINED__ #define __IFilterMapper_INTERFACE_DEFINED__ /* interface IFilterMapper */ /* [unique][uuid][object] */ enum __MIDL_IFilterMapper_0001 { MERIT_PREFERRED = 0x800000, MERIT_NORMAL = 0x600000, MERIT_UNLIKELY = 0x400000, MERIT_DO_NOT_USE = 0x200000, MERIT_SW_COMPRESSOR = 0x100000, MERIT_HW_COMPRESSOR = 0x100050 } ; EXTERN_C const IID IID_IFilterMapper; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("56a868a3-0ad4-11ce-b03a-0020af0ba770") IFilterMapper : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE RegisterFilter( /* [in] */ CLSID clsid, /* [in] */ LPCWSTR Name, /* [in] */ DWORD dwMerit) = 0; virtual HRESULT STDMETHODCALLTYPE RegisterFilterInstance( /* [in] */ CLSID clsid, /* [in] */ LPCWSTR Name, /* [out] */ CLSID *MRId) = 0; virtual HRESULT STDMETHODCALLTYPE RegisterPin( /* [in] */ CLSID Filter, /* [in] */ LPCWSTR Name, /* [in] */ BOOL bRendered, /* [in] */ BOOL bOutput, /* [in] */ BOOL bZero, /* [in] */ BOOL bMany, /* [in] */ CLSID ConnectsToFilter, /* [in] */ LPCWSTR ConnectsToPin) = 0; virtual HRESULT STDMETHODCALLTYPE RegisterPinType( /* [in] */ CLSID clsFilter, /* [in] */ LPCWSTR strName, /* [in] */ CLSID clsMajorType, /* [in] */ CLSID clsSubType) = 0; virtual HRESULT STDMETHODCALLTYPE UnregisterFilter( /* [in] */ CLSID Filter) = 0; virtual HRESULT STDMETHODCALLTYPE UnregisterFilterInstance( /* [in] */ CLSID MRId) = 0; virtual HRESULT STDMETHODCALLTYPE UnregisterPin( /* [in] */ CLSID Filter, /* [in] */ LPCWSTR Name) = 0; virtual HRESULT STDMETHODCALLTYPE EnumMatchingFilters( /* [out] */ IEnumRegFilters **ppEnum, /* [in] */ DWORD dwMerit, /* [in] */ BOOL bInputNeeded, /* [in] */ CLSID clsInMaj, /* [in] */ CLSID clsInSub, /* [in] */ BOOL bRender, /* [in] */ BOOL bOututNeeded, /* [in] */ CLSID clsOutMaj, /* [in] */ CLSID clsOutSub) = 0; }; #else /* C style interface */ typedef struct IFilterMapperVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IFilterMapper * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IFilterMapper * This); ULONG ( STDMETHODCALLTYPE *Release )( IFilterMapper * This); HRESULT ( STDMETHODCALLTYPE *RegisterFilter )( IFilterMapper * This, /* [in] */ CLSID clsid, /* [in] */ LPCWSTR Name, /* [in] */ DWORD dwMerit); HRESULT ( STDMETHODCALLTYPE *RegisterFilterInstance )( IFilterMapper * This, /* [in] */ CLSID clsid, /* [in] */ LPCWSTR Name, /* [out] */ CLSID *MRId); HRESULT ( STDMETHODCALLTYPE *RegisterPin )( IFilterMapper * This, /* [in] */ CLSID Filter, /* [in] */ LPCWSTR Name, /* [in] */ BOOL bRendered, /* [in] */ BOOL bOutput, /* [in] */ BOOL bZero, /* [in] */ BOOL bMany, /* [in] */ CLSID ConnectsToFilter, /* [in] */ LPCWSTR ConnectsToPin); HRESULT ( STDMETHODCALLTYPE *RegisterPinType )( IFilterMapper * This, /* [in] */ CLSID clsFilter, /* [in] */ LPCWSTR strName, /* [in] */ CLSID clsMajorType, /* [in] */ CLSID clsSubType); HRESULT ( STDMETHODCALLTYPE *UnregisterFilter )( IFilterMapper * This, /* [in] */ CLSID Filter); HRESULT ( STDMETHODCALLTYPE *UnregisterFilterInstance )( IFilterMapper * This, /* [in] */ CLSID MRId); HRESULT ( STDMETHODCALLTYPE *UnregisterPin )( IFilterMapper * This, /* [in] */ CLSID Filter, /* [in] */ LPCWSTR Name); HRESULT ( STDMETHODCALLTYPE *EnumMatchingFilters )( IFilterMapper * This, /* [out] */ IEnumRegFilters **ppEnum, /* [in] */ DWORD dwMerit, /* [in] */ BOOL bInputNeeded, /* [in] */ CLSID clsInMaj, /* [in] */ CLSID clsInSub, /* [in] */ BOOL bRender, /* [in] */ BOOL bOututNeeded, /* [in] */ CLSID clsOutMaj, /* [in] */ CLSID clsOutSub); END_INTERFACE } IFilterMapperVtbl; interface IFilterMapper { CONST_VTBL struct IFilterMapperVtbl *lpVtbl; }; #ifdef COBJMACROS #define IFilterMapper_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IFilterMapper_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IFilterMapper_Release(This) \ (This)->lpVtbl -> Release(This) #define IFilterMapper_RegisterFilter(This,clsid,Name,dwMerit) \ (This)->lpVtbl -> RegisterFilter(This,clsid,Name,dwMerit) #define IFilterMapper_RegisterFilterInstance(This,clsid,Name,MRId) \ (This)->lpVtbl -> RegisterFilterInstance(This,clsid,Name,MRId) #define IFilterMapper_RegisterPin(This,Filter,Name,bRendered,bOutput,bZero,bMany,ConnectsToFilter,ConnectsToPin) \ (This)->lpVtbl -> RegisterPin(This,Filter,Name,bRendered,bOutput,bZero,bMany,ConnectsToFilter,ConnectsToPin) #define IFilterMapper_RegisterPinType(This,clsFilter,strName,clsMajorType,clsSubType) \ (This)->lpVtbl -> RegisterPinType(This,clsFilter,strName,clsMajorType,clsSubType) #define IFilterMapper_UnregisterFilter(This,Filter) \ (This)->lpVtbl -> UnregisterFilter(This,Filter) #define IFilterMapper_UnregisterFilterInstance(This,MRId) \ (This)->lpVtbl -> UnregisterFilterInstance(This,MRId) #define IFilterMapper_UnregisterPin(This,Filter,Name) \ (This)->lpVtbl -> UnregisterPin(This,Filter,Name) #define IFilterMapper_EnumMatchingFilters(This,ppEnum,dwMerit,bInputNeeded,clsInMaj,clsInSub,bRender,bOututNeeded,clsOutMaj,clsOutSub) \ (This)->lpVtbl -> EnumMatchingFilters(This,ppEnum,dwMerit,bInputNeeded,clsInMaj,clsInSub,bRender,bOututNeeded,clsOutMaj,clsOutSub) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IFilterMapper_RegisterFilter_Proxy( IFilterMapper * This, /* [in] */ CLSID clsid, /* [in] */ LPCWSTR Name, /* [in] */ DWORD dwMerit); void __RPC_STUB IFilterMapper_RegisterFilter_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IFilterMapper_RegisterFilterInstance_Proxy( IFilterMapper * This, /* [in] */ CLSID clsid, /* [in] */ LPCWSTR Name, /* [out] */ CLSID *MRId); void __RPC_STUB IFilterMapper_RegisterFilterInstance_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IFilterMapper_RegisterPin_Proxy( IFilterMapper * This, /* [in] */ CLSID Filter, /* [in] */ LPCWSTR Name, /* [in] */ BOOL bRendered, /* [in] */ BOOL bOutput, /* [in] */ BOOL bZero, /* [in] */ BOOL bMany, /* [in] */ CLSID ConnectsToFilter, /* [in] */ LPCWSTR ConnectsToPin); void __RPC_STUB IFilterMapper_RegisterPin_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IFilterMapper_RegisterPinType_Proxy( IFilterMapper * This, /* [in] */ CLSID clsFilter, /* [in] */ LPCWSTR strName, /* [in] */ CLSID clsMajorType, /* [in] */ CLSID clsSubType); void __RPC_STUB IFilterMapper_RegisterPinType_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IFilterMapper_UnregisterFilter_Proxy( IFilterMapper * This, /* [in] */ CLSID Filter); void __RPC_STUB IFilterMapper_UnregisterFilter_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IFilterMapper_UnregisterFilterInstance_Proxy( IFilterMapper * This, /* [in] */ CLSID MRId); void __RPC_STUB IFilterMapper_UnregisterFilterInstance_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IFilterMapper_UnregisterPin_Proxy( IFilterMapper * This, /* [in] */ CLSID Filter, /* [in] */ LPCWSTR Name); void __RPC_STUB IFilterMapper_UnregisterPin_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IFilterMapper_EnumMatchingFilters_Proxy( IFilterMapper * This, /* [out] */ IEnumRegFilters **ppEnum, /* [in] */ DWORD dwMerit, /* [in] */ BOOL bInputNeeded, /* [in] */ CLSID clsInMaj, /* [in] */ CLSID clsInSub, /* [in] */ BOOL bRender, /* [in] */ BOOL bOututNeeded, /* [in] */ CLSID clsOutMaj, /* [in] */ CLSID clsOutSub); void __RPC_STUB IFilterMapper_EnumMatchingFilters_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IFilterMapper_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0133 */ /* [local] */ typedef /* [public][public][public][public][public][public][public] */ struct __MIDL___MIDL_itf_strmif_0133_0001 { const CLSID *clsMajorType; const CLSID *clsMinorType; } REGPINTYPES; typedef /* [public][public][public] */ struct __MIDL___MIDL_itf_strmif_0133_0002 { LPWSTR strName; BOOL bRendered; BOOL bOutput; BOOL bZero; BOOL bMany; const CLSID *clsConnectsToFilter; const WCHAR *strConnectsToPin; UINT nMediaTypes; const REGPINTYPES *lpMediaType; } REGFILTERPINS; typedef /* [public][public][public][public][public][public] */ struct __MIDL___MIDL_itf_strmif_0133_0003 { CLSID clsMedium; DWORD dw1; DWORD dw2; } REGPINMEDIUM; enum __MIDL___MIDL_itf_strmif_0133_0004 { REG_PINFLAG_B_ZERO = 0x1, REG_PINFLAG_B_RENDERER = 0x2, REG_PINFLAG_B_MANY = 0x4, REG_PINFLAG_B_OUTPUT = 0x8 } ; typedef /* [public][public][public] */ struct __MIDL___MIDL_itf_strmif_0133_0005 { DWORD dwFlags; UINT cInstances; UINT nMediaTypes; /* [size_is] */ const REGPINTYPES *lpMediaType; UINT nMediums; /* [size_is] */ const REGPINMEDIUM *lpMedium; const CLSID *clsPinCategory; } REGFILTERPINS2; typedef /* [public][public] */ struct __MIDL___MIDL_itf_strmif_0133_0006 { DWORD dwVersion; DWORD dwMerit; /* [switch_type][switch_is] */ union { /* [case()] */ struct { ULONG cPins; /* [size_is] */ const REGFILTERPINS *rgPins; } ; /* [case()] */ struct { ULONG cPins2; /* [size_is] */ const REGFILTERPINS2 *rgPins2; } ; /* [default] */ /* Empty union arm */ } ; } REGFILTER2; extern RPC_IF_HANDLE __MIDL_itf_strmif_0133_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0133_v0_0_s_ifspec; #ifndef __IFilterMapper2_INTERFACE_DEFINED__ #define __IFilterMapper2_INTERFACE_DEFINED__ /* interface IFilterMapper2 */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IFilterMapper2; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("b79bb0b0-33c1-11d1-abe1-00a0c905f375") IFilterMapper2 : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE CreateCategory( /* [in] */ REFCLSID clsidCategory, /* [in] */ DWORD dwCategoryMerit, /* [in] */ LPCWSTR Description) = 0; virtual HRESULT STDMETHODCALLTYPE UnregisterFilter( /* [in] */ const CLSID *pclsidCategory, /* [in] */ const OLECHAR *szInstance, /* [in] */ REFCLSID Filter) = 0; virtual HRESULT STDMETHODCALLTYPE RegisterFilter( /* [in] */ REFCLSID clsidFilter, /* [in] */ LPCWSTR Name, /* [out][in] */ IMoniker **ppMoniker, /* [in] */ const CLSID *pclsidCategory, /* [in] */ const OLECHAR *szInstance, /* [in] */ const REGFILTER2 *prf2) = 0; virtual HRESULT STDMETHODCALLTYPE EnumMatchingFilters( /* [out] */ IEnumMoniker **ppEnum, /* [in] */ DWORD dwFlags, /* [in] */ BOOL bExactMatch, /* [in] */ DWORD dwMerit, /* [in] */ BOOL bInputNeeded, /* [in] */ DWORD cInputTypes, /* [size_is] */ const GUID *pInputTypes, /* [in] */ const REGPINMEDIUM *pMedIn, /* [in] */ const CLSID *pPinCategoryIn, /* [in] */ BOOL bRender, /* [in] */ BOOL bOutputNeeded, /* [in] */ DWORD cOutputTypes, /* [size_is] */ const GUID *pOutputTypes, /* [in] */ const REGPINMEDIUM *pMedOut, /* [in] */ const CLSID *pPinCategoryOut) = 0; }; #else /* C style interface */ typedef struct IFilterMapper2Vtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IFilterMapper2 * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IFilterMapper2 * This); ULONG ( STDMETHODCALLTYPE *Release )( IFilterMapper2 * This); HRESULT ( STDMETHODCALLTYPE *CreateCategory )( IFilterMapper2 * This, /* [in] */ REFCLSID clsidCategory, /* [in] */ DWORD dwCategoryMerit, /* [in] */ LPCWSTR Description); HRESULT ( STDMETHODCALLTYPE *UnregisterFilter )( IFilterMapper2 * This, /* [in] */ const CLSID *pclsidCategory, /* [in] */ const OLECHAR *szInstance, /* [in] */ REFCLSID Filter); HRESULT ( STDMETHODCALLTYPE *RegisterFilter )( IFilterMapper2 * This, /* [in] */ REFCLSID clsidFilter, /* [in] */ LPCWSTR Name, /* [out][in] */ IMoniker **ppMoniker, /* [in] */ const CLSID *pclsidCategory, /* [in] */ const OLECHAR *szInstance, /* [in] */ const REGFILTER2 *prf2); HRESULT ( STDMETHODCALLTYPE *EnumMatchingFilters )( IFilterMapper2 * This, /* [out] */ IEnumMoniker **ppEnum, /* [in] */ DWORD dwFlags, /* [in] */ BOOL bExactMatch, /* [in] */ DWORD dwMerit, /* [in] */ BOOL bInputNeeded, /* [in] */ DWORD cInputTypes, /* [size_is] */ const GUID *pInputTypes, /* [in] */ const REGPINMEDIUM *pMedIn, /* [in] */ const CLSID *pPinCategoryIn, /* [in] */ BOOL bRender, /* [in] */ BOOL bOutputNeeded, /* [in] */ DWORD cOutputTypes, /* [size_is] */ const GUID *pOutputTypes, /* [in] */ const REGPINMEDIUM *pMedOut, /* [in] */ const CLSID *pPinCategoryOut); END_INTERFACE } IFilterMapper2Vtbl; interface IFilterMapper2 { CONST_VTBL struct IFilterMapper2Vtbl *lpVtbl; }; #ifdef COBJMACROS #define IFilterMapper2_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IFilterMapper2_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IFilterMapper2_Release(This) \ (This)->lpVtbl -> Release(This) #define IFilterMapper2_CreateCategory(This,clsidCategory,dwCategoryMerit,Description) \ (This)->lpVtbl -> CreateCategory(This,clsidCategory,dwCategoryMerit,Description) #define IFilterMapper2_UnregisterFilter(This,pclsidCategory,szInstance,Filter) \ (This)->lpVtbl -> UnregisterFilter(This,pclsidCategory,szInstance,Filter) #define IFilterMapper2_RegisterFilter(This,clsidFilter,Name,ppMoniker,pclsidCategory,szInstance,prf2) \ (This)->lpVtbl -> RegisterFilter(This,clsidFilter,Name,ppMoniker,pclsidCategory,szInstance,prf2) #define IFilterMapper2_EnumMatchingFilters(This,ppEnum,dwFlags,bExactMatch,dwMerit,bInputNeeded,cInputTypes,pInputTypes,pMedIn,pPinCategoryIn,bRender,bOutputNeeded,cOutputTypes,pOutputTypes,pMedOut,pPinCategoryOut) \ (This)->lpVtbl -> EnumMatchingFilters(This,ppEnum,dwFlags,bExactMatch,dwMerit,bInputNeeded,cInputTypes,pInputTypes,pMedIn,pPinCategoryIn,bRender,bOutputNeeded,cOutputTypes,pOutputTypes,pMedOut,pPinCategoryOut) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IFilterMapper2_CreateCategory_Proxy( IFilterMapper2 * This, /* [in] */ REFCLSID clsidCategory, /* [in] */ DWORD dwCategoryMerit, /* [in] */ LPCWSTR Description); void __RPC_STUB IFilterMapper2_CreateCategory_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IFilterMapper2_UnregisterFilter_Proxy( IFilterMapper2 * This, /* [in] */ const CLSID *pclsidCategory, /* [in] */ const OLECHAR *szInstance, /* [in] */ REFCLSID Filter); void __RPC_STUB IFilterMapper2_UnregisterFilter_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IFilterMapper2_RegisterFilter_Proxy( IFilterMapper2 * This, /* [in] */ REFCLSID clsidFilter, /* [in] */ LPCWSTR Name, /* [out][in] */ IMoniker **ppMoniker, /* [in] */ const CLSID *pclsidCategory, /* [in] */ const OLECHAR *szInstance, /* [in] */ const REGFILTER2 *prf2); void __RPC_STUB IFilterMapper2_RegisterFilter_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IFilterMapper2_EnumMatchingFilters_Proxy( IFilterMapper2 * This, /* [out] */ IEnumMoniker **ppEnum, /* [in] */ DWORD dwFlags, /* [in] */ BOOL bExactMatch, /* [in] */ DWORD dwMerit, /* [in] */ BOOL bInputNeeded, /* [in] */ DWORD cInputTypes, /* [size_is] */ const GUID *pInputTypes, /* [in] */ const REGPINMEDIUM *pMedIn, /* [in] */ const CLSID *pPinCategoryIn, /* [in] */ BOOL bRender, /* [in] */ BOOL bOutputNeeded, /* [in] */ DWORD cOutputTypes, /* [size_is] */ const GUID *pOutputTypes, /* [in] */ const REGPINMEDIUM *pMedOut, /* [in] */ const CLSID *pPinCategoryOut); void __RPC_STUB IFilterMapper2_EnumMatchingFilters_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IFilterMapper2_INTERFACE_DEFINED__ */ #ifndef __IFilterMapper3_INTERFACE_DEFINED__ #define __IFilterMapper3_INTERFACE_DEFINED__ /* interface IFilterMapper3 */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IFilterMapper3; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("b79bb0b1-33c1-11d1-abe1-00a0c905f375") IFilterMapper3 : public IFilterMapper2 { public: virtual HRESULT STDMETHODCALLTYPE GetICreateDevEnum( /* [out] */ ICreateDevEnum **ppEnum) = 0; }; #else /* C style interface */ typedef struct IFilterMapper3Vtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IFilterMapper3 * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IFilterMapper3 * This); ULONG ( STDMETHODCALLTYPE *Release )( IFilterMapper3 * This); HRESULT ( STDMETHODCALLTYPE *CreateCategory )( IFilterMapper3 * This, /* [in] */ REFCLSID clsidCategory, /* [in] */ DWORD dwCategoryMerit, /* [in] */ LPCWSTR Description); HRESULT ( STDMETHODCALLTYPE *UnregisterFilter )( IFilterMapper3 * This, /* [in] */ const CLSID *pclsidCategory, /* [in] */ const OLECHAR *szInstance, /* [in] */ REFCLSID Filter); HRESULT ( STDMETHODCALLTYPE *RegisterFilter )( IFilterMapper3 * This, /* [in] */ REFCLSID clsidFilter, /* [in] */ LPCWSTR Name, /* [out][in] */ IMoniker **ppMoniker, /* [in] */ const CLSID *pclsidCategory, /* [in] */ const OLECHAR *szInstance, /* [in] */ const REGFILTER2 *prf2); HRESULT ( STDMETHODCALLTYPE *EnumMatchingFilters )( IFilterMapper3 * This, /* [out] */ IEnumMoniker **ppEnum, /* [in] */ DWORD dwFlags, /* [in] */ BOOL bExactMatch, /* [in] */ DWORD dwMerit, /* [in] */ BOOL bInputNeeded, /* [in] */ DWORD cInputTypes, /* [size_is] */ const GUID *pInputTypes, /* [in] */ const REGPINMEDIUM *pMedIn, /* [in] */ const CLSID *pPinCategoryIn, /* [in] */ BOOL bRender, /* [in] */ BOOL bOutputNeeded, /* [in] */ DWORD cOutputTypes, /* [size_is] */ const GUID *pOutputTypes, /* [in] */ const REGPINMEDIUM *pMedOut, /* [in] */ const CLSID *pPinCategoryOut); HRESULT ( STDMETHODCALLTYPE *GetICreateDevEnum )( IFilterMapper3 * This, /* [out] */ ICreateDevEnum **ppEnum); END_INTERFACE } IFilterMapper3Vtbl; interface IFilterMapper3 { CONST_VTBL struct IFilterMapper3Vtbl *lpVtbl; }; #ifdef COBJMACROS #define IFilterMapper3_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IFilterMapper3_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IFilterMapper3_Release(This) \ (This)->lpVtbl -> Release(This) #define IFilterMapper3_CreateCategory(This,clsidCategory,dwCategoryMerit,Description) \ (This)->lpVtbl -> CreateCategory(This,clsidCategory,dwCategoryMerit,Description) #define IFilterMapper3_UnregisterFilter(This,pclsidCategory,szInstance,Filter) \ (This)->lpVtbl -> UnregisterFilter(This,pclsidCategory,szInstance,Filter) #define IFilterMapper3_RegisterFilter(This,clsidFilter,Name,ppMoniker,pclsidCategory,szInstance,prf2) \ (This)->lpVtbl -> RegisterFilter(This,clsidFilter,Name,ppMoniker,pclsidCategory,szInstance,prf2) #define IFilterMapper3_EnumMatchingFilters(This,ppEnum,dwFlags,bExactMatch,dwMerit,bInputNeeded,cInputTypes,pInputTypes,pMedIn,pPinCategoryIn,bRender,bOutputNeeded,cOutputTypes,pOutputTypes,pMedOut,pPinCategoryOut) \ (This)->lpVtbl -> EnumMatchingFilters(This,ppEnum,dwFlags,bExactMatch,dwMerit,bInputNeeded,cInputTypes,pInputTypes,pMedIn,pPinCategoryIn,bRender,bOutputNeeded,cOutputTypes,pOutputTypes,pMedOut,pPinCategoryOut) #define IFilterMapper3_GetICreateDevEnum(This,ppEnum) \ (This)->lpVtbl -> GetICreateDevEnum(This,ppEnum) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IFilterMapper3_GetICreateDevEnum_Proxy( IFilterMapper3 * This, /* [out] */ ICreateDevEnum **ppEnum); void __RPC_STUB IFilterMapper3_GetICreateDevEnum_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IFilterMapper3_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0136 */ /* [local] */ typedef enum tagQualityMessageType { Famine = 0, Flood = Famine + 1 } QualityMessageType; typedef struct tagQuality { QualityMessageType Type; long Proportion; REFERENCE_TIME Late; REFERENCE_TIME TimeStamp; } Quality; typedef IQualityControl *PQUALITYCONTROL; extern RPC_IF_HANDLE __MIDL_itf_strmif_0136_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0136_v0_0_s_ifspec; #ifndef __IQualityControl_INTERFACE_DEFINED__ #define __IQualityControl_INTERFACE_DEFINED__ /* interface IQualityControl */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IQualityControl; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("56a868a5-0ad4-11ce-b03a-0020af0ba770") IQualityControl : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE Notify( /* [in] */ IBaseFilter *pSelf, /* [in] */ Quality q) = 0; virtual HRESULT STDMETHODCALLTYPE SetSink( /* [in] */ IQualityControl *piqc) = 0; }; #else /* C style interface */ typedef struct IQualityControlVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IQualityControl * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IQualityControl * This); ULONG ( STDMETHODCALLTYPE *Release )( IQualityControl * This); HRESULT ( STDMETHODCALLTYPE *Notify )( IQualityControl * This, /* [in] */ IBaseFilter *pSelf, /* [in] */ Quality q); HRESULT ( STDMETHODCALLTYPE *SetSink )( IQualityControl * This, /* [in] */ IQualityControl *piqc); END_INTERFACE } IQualityControlVtbl; interface IQualityControl { CONST_VTBL struct IQualityControlVtbl *lpVtbl; }; #ifdef COBJMACROS #define IQualityControl_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IQualityControl_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IQualityControl_Release(This) \ (This)->lpVtbl -> Release(This) #define IQualityControl_Notify(This,pSelf,q) \ (This)->lpVtbl -> Notify(This,pSelf,q) #define IQualityControl_SetSink(This,piqc) \ (This)->lpVtbl -> SetSink(This,piqc) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IQualityControl_Notify_Proxy( IQualityControl * This, /* [in] */ IBaseFilter *pSelf, /* [in] */ Quality q); void __RPC_STUB IQualityControl_Notify_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IQualityControl_SetSink_Proxy( IQualityControl * This, /* [in] */ IQualityControl *piqc); void __RPC_STUB IQualityControl_SetSink_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IQualityControl_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0137 */ /* [local] */ enum __MIDL___MIDL_itf_strmif_0137_0001 { CK_NOCOLORKEY = 0, CK_INDEX = 0x1, CK_RGB = 0x2 } ; typedef struct tagCOLORKEY { DWORD KeyType; DWORD PaletteIndex; COLORREF LowColorValue; COLORREF HighColorValue; } COLORKEY; enum __MIDL___MIDL_itf_strmif_0137_0002 { ADVISE_NONE = 0, ADVISE_CLIPPING = 0x1, ADVISE_PALETTE = 0x2, ADVISE_COLORKEY = 0x4, ADVISE_POSITION = 0x8, ADVISE_DISPLAY_CHANGE = 0x10 } ; #define ADVISE_ALL ( ADVISE_CLIPPING | ADVISE_PALETTE | ADVISE_COLORKEY | ADVISE_POSITION ) #define ADVISE_ALL2 ( ADVISE_ALL | ADVISE_DISPLAY_CHANGE ) #ifndef _WINGDI_ typedef struct _RGNDATAHEADER { DWORD dwSize; DWORD iType; DWORD nCount; DWORD nRgnSize; RECT rcBound; } RGNDATAHEADER; typedef struct _RGNDATA { RGNDATAHEADER rdh; char Buffer[ 1 ]; } RGNDATA; #endif extern RPC_IF_HANDLE __MIDL_itf_strmif_0137_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0137_v0_0_s_ifspec; #ifndef __IOverlayNotify_INTERFACE_DEFINED__ #define __IOverlayNotify_INTERFACE_DEFINED__ /* interface IOverlayNotify */ /* [unique][uuid][local][object] */ EXTERN_C const IID IID_IOverlayNotify; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("56a868a0-0ad4-11ce-b03a-0020af0ba770") IOverlayNotify : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE OnPaletteChange( /* [in] */ DWORD dwColors, /* [in] */ const PALETTEENTRY *pPalette) = 0; virtual HRESULT STDMETHODCALLTYPE OnClipChange( /* [in] */ const RECT *pSourceRect, /* [in] */ const RECT *pDestinationRect, /* [in] */ const RGNDATA *pRgnData) = 0; virtual HRESULT STDMETHODCALLTYPE OnColorKeyChange( /* [in] */ const COLORKEY *pColorKey) = 0; virtual HRESULT STDMETHODCALLTYPE OnPositionChange( /* [in] */ const RECT *pSourceRect, /* [in] */ const RECT *pDestinationRect) = 0; }; #else /* C style interface */ typedef struct IOverlayNotifyVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IOverlayNotify * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IOverlayNotify * This); ULONG ( STDMETHODCALLTYPE *Release )( IOverlayNotify * This); HRESULT ( STDMETHODCALLTYPE *OnPaletteChange )( IOverlayNotify * This, /* [in] */ DWORD dwColors, /* [in] */ const PALETTEENTRY *pPalette); HRESULT ( STDMETHODCALLTYPE *OnClipChange )( IOverlayNotify * This, /* [in] */ const RECT *pSourceRect, /* [in] */ const RECT *pDestinationRect, /* [in] */ const RGNDATA *pRgnData); HRESULT ( STDMETHODCALLTYPE *OnColorKeyChange )( IOverlayNotify * This, /* [in] */ const COLORKEY *pColorKey); HRESULT ( STDMETHODCALLTYPE *OnPositionChange )( IOverlayNotify * This, /* [in] */ const RECT *pSourceRect, /* [in] */ const RECT *pDestinationRect); END_INTERFACE } IOverlayNotifyVtbl; interface IOverlayNotify { CONST_VTBL struct IOverlayNotifyVtbl *lpVtbl; }; #ifdef COBJMACROS #define IOverlayNotify_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IOverlayNotify_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IOverlayNotify_Release(This) \ (This)->lpVtbl -> Release(This) #define IOverlayNotify_OnPaletteChange(This,dwColors,pPalette) \ (This)->lpVtbl -> OnPaletteChange(This,dwColors,pPalette) #define IOverlayNotify_OnClipChange(This,pSourceRect,pDestinationRect,pRgnData) \ (This)->lpVtbl -> OnClipChange(This,pSourceRect,pDestinationRect,pRgnData) #define IOverlayNotify_OnColorKeyChange(This,pColorKey) \ (This)->lpVtbl -> OnColorKeyChange(This,pColorKey) #define IOverlayNotify_OnPositionChange(This,pSourceRect,pDestinationRect) \ (This)->lpVtbl -> OnPositionChange(This,pSourceRect,pDestinationRect) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IOverlayNotify_OnPaletteChange_Proxy( IOverlayNotify * This, /* [in] */ DWORD dwColors, /* [in] */ const PALETTEENTRY *pPalette); void __RPC_STUB IOverlayNotify_OnPaletteChange_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IOverlayNotify_OnClipChange_Proxy( IOverlayNotify * This, /* [in] */ const RECT *pSourceRect, /* [in] */ const RECT *pDestinationRect, /* [in] */ const RGNDATA *pRgnData); void __RPC_STUB IOverlayNotify_OnClipChange_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IOverlayNotify_OnColorKeyChange_Proxy( IOverlayNotify * This, /* [in] */ const COLORKEY *pColorKey); void __RPC_STUB IOverlayNotify_OnColorKeyChange_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IOverlayNotify_OnPositionChange_Proxy( IOverlayNotify * This, /* [in] */ const RECT *pSourceRect, /* [in] */ const RECT *pDestinationRect); void __RPC_STUB IOverlayNotify_OnPositionChange_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IOverlayNotify_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0138 */ /* [local] */ typedef IOverlayNotify *POVERLAYNOTIFY; #if !defined(HMONITOR_DECLARED) && !defined(HMONITOR) && (WINVER < 0x0500) #define HMONITOR_DECLARED #if 0 typedef HANDLE HMONITOR; #endif DECLARE_HANDLE(HMONITOR); #endif extern RPC_IF_HANDLE __MIDL_itf_strmif_0138_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0138_v0_0_s_ifspec; #ifndef __IOverlayNotify2_INTERFACE_DEFINED__ #define __IOverlayNotify2_INTERFACE_DEFINED__ /* interface IOverlayNotify2 */ /* [unique][uuid][local][object] */ EXTERN_C const IID IID_IOverlayNotify2; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("680EFA10-D535-11D1-87C8-00A0C9223196") IOverlayNotify2 : public IOverlayNotify { public: virtual HRESULT STDMETHODCALLTYPE OnDisplayChange( HMONITOR hMonitor) = 0; }; #else /* C style interface */ typedef struct IOverlayNotify2Vtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IOverlayNotify2 * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IOverlayNotify2 * This); ULONG ( STDMETHODCALLTYPE *Release )( IOverlayNotify2 * This); HRESULT ( STDMETHODCALLTYPE *OnPaletteChange )( IOverlayNotify2 * This, /* [in] */ DWORD dwColors, /* [in] */ const PALETTEENTRY *pPalette); HRESULT ( STDMETHODCALLTYPE *OnClipChange )( IOverlayNotify2 * This, /* [in] */ const RECT *pSourceRect, /* [in] */ const RECT *pDestinationRect, /* [in] */ const RGNDATA *pRgnData); HRESULT ( STDMETHODCALLTYPE *OnColorKeyChange )( IOverlayNotify2 * This, /* [in] */ const COLORKEY *pColorKey); HRESULT ( STDMETHODCALLTYPE *OnPositionChange )( IOverlayNotify2 * This, /* [in] */ const RECT *pSourceRect, /* [in] */ const RECT *pDestinationRect); HRESULT ( STDMETHODCALLTYPE *OnDisplayChange )( IOverlayNotify2 * This, HMONITOR hMonitor); END_INTERFACE } IOverlayNotify2Vtbl; interface IOverlayNotify2 { CONST_VTBL struct IOverlayNotify2Vtbl *lpVtbl; }; #ifdef COBJMACROS #define IOverlayNotify2_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IOverlayNotify2_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IOverlayNotify2_Release(This) \ (This)->lpVtbl -> Release(This) #define IOverlayNotify2_OnPaletteChange(This,dwColors,pPalette) \ (This)->lpVtbl -> OnPaletteChange(This,dwColors,pPalette) #define IOverlayNotify2_OnClipChange(This,pSourceRect,pDestinationRect,pRgnData) \ (This)->lpVtbl -> OnClipChange(This,pSourceRect,pDestinationRect,pRgnData) #define IOverlayNotify2_OnColorKeyChange(This,pColorKey) \ (This)->lpVtbl -> OnColorKeyChange(This,pColorKey) #define IOverlayNotify2_OnPositionChange(This,pSourceRect,pDestinationRect) \ (This)->lpVtbl -> OnPositionChange(This,pSourceRect,pDestinationRect) #define IOverlayNotify2_OnDisplayChange(This,hMonitor) \ (This)->lpVtbl -> OnDisplayChange(This,hMonitor) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IOverlayNotify2_OnDisplayChange_Proxy( IOverlayNotify2 * This, HMONITOR hMonitor); void __RPC_STUB IOverlayNotify2_OnDisplayChange_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IOverlayNotify2_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0139 */ /* [local] */ typedef IOverlayNotify2 *POVERLAYNOTIFY2; extern RPC_IF_HANDLE __MIDL_itf_strmif_0139_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0139_v0_0_s_ifspec; #ifndef __IOverlay_INTERFACE_DEFINED__ #define __IOverlay_INTERFACE_DEFINED__ /* interface IOverlay */ /* [unique][uuid][local][object] */ EXTERN_C const IID IID_IOverlay; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("56a868a1-0ad4-11ce-b03a-0020af0ba770") IOverlay : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE GetPalette( /* [out] */ DWORD *pdwColors, /* [out] */ PALETTEENTRY **ppPalette) = 0; virtual HRESULT STDMETHODCALLTYPE SetPalette( /* [in] */ DWORD dwColors, /* [in] */ PALETTEENTRY *pPalette) = 0; virtual HRESULT STDMETHODCALLTYPE GetDefaultColorKey( /* [out] */ COLORKEY *pColorKey) = 0; virtual HRESULT STDMETHODCALLTYPE GetColorKey( /* [out] */ COLORKEY *pColorKey) = 0; virtual HRESULT STDMETHODCALLTYPE SetColorKey( /* [out][in] */ COLORKEY *pColorKey) = 0; virtual HRESULT STDMETHODCALLTYPE GetWindowHandle( /* [out] */ HWND *pHwnd) = 0; virtual HRESULT STDMETHODCALLTYPE GetClipList( /* [out] */ RECT *pSourceRect, /* [out] */ RECT *pDestinationRect, /* [out] */ RGNDATA **ppRgnData) = 0; virtual HRESULT STDMETHODCALLTYPE GetVideoPosition( /* [out] */ RECT *pSourceRect, /* [out] */ RECT *pDestinationRect) = 0; virtual HRESULT STDMETHODCALLTYPE Advise( /* [in] */ IOverlayNotify *pOverlayNotify, /* [in] */ DWORD dwInterests) = 0; virtual HRESULT STDMETHODCALLTYPE Unadvise( void) = 0; }; #else /* C style interface */ typedef struct IOverlayVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IOverlay * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IOverlay * This); ULONG ( STDMETHODCALLTYPE *Release )( IOverlay * This); HRESULT ( STDMETHODCALLTYPE *GetPalette )( IOverlay * This, /* [out] */ DWORD *pdwColors, /* [out] */ PALETTEENTRY **ppPalette); HRESULT ( STDMETHODCALLTYPE *SetPalette )( IOverlay * This, /* [in] */ DWORD dwColors, /* [in] */ PALETTEENTRY *pPalette); HRESULT ( STDMETHODCALLTYPE *GetDefaultColorKey )( IOverlay * This, /* [out] */ COLORKEY *pColorKey); HRESULT ( STDMETHODCALLTYPE *GetColorKey )( IOverlay * This, /* [out] */ COLORKEY *pColorKey); HRESULT ( STDMETHODCALLTYPE *SetColorKey )( IOverlay * This, /* [out][in] */ COLORKEY *pColorKey); HRESULT ( STDMETHODCALLTYPE *GetWindowHandle )( IOverlay * This, /* [out] */ HWND *pHwnd); HRESULT ( STDMETHODCALLTYPE *GetClipList )( IOverlay * This, /* [out] */ RECT *pSourceRect, /* [out] */ RECT *pDestinationRect, /* [out] */ RGNDATA **ppRgnData); HRESULT ( STDMETHODCALLTYPE *GetVideoPosition )( IOverlay * This, /* [out] */ RECT *pSourceRect, /* [out] */ RECT *pDestinationRect); HRESULT ( STDMETHODCALLTYPE *Advise )( IOverlay * This, /* [in] */ IOverlayNotify *pOverlayNotify, /* [in] */ DWORD dwInterests); HRESULT ( STDMETHODCALLTYPE *Unadvise )( IOverlay * This); END_INTERFACE } IOverlayVtbl; interface IOverlay { CONST_VTBL struct IOverlayVtbl *lpVtbl; }; #ifdef COBJMACROS #define IOverlay_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IOverlay_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IOverlay_Release(This) \ (This)->lpVtbl -> Release(This) #define IOverlay_GetPalette(This,pdwColors,ppPalette) \ (This)->lpVtbl -> GetPalette(This,pdwColors,ppPalette) #define IOverlay_SetPalette(This,dwColors,pPalette) \ (This)->lpVtbl -> SetPalette(This,dwColors,pPalette) #define IOverlay_GetDefaultColorKey(This,pColorKey) \ (This)->lpVtbl -> GetDefaultColorKey(This,pColorKey) #define IOverlay_GetColorKey(This,pColorKey) \ (This)->lpVtbl -> GetColorKey(This,pColorKey) #define IOverlay_SetColorKey(This,pColorKey) \ (This)->lpVtbl -> SetColorKey(This,pColorKey) #define IOverlay_GetWindowHandle(This,pHwnd) \ (This)->lpVtbl -> GetWindowHandle(This,pHwnd) #define IOverlay_GetClipList(This,pSourceRect,pDestinationRect,ppRgnData) \ (This)->lpVtbl -> GetClipList(This,pSourceRect,pDestinationRect,ppRgnData) #define IOverlay_GetVideoPosition(This,pSourceRect,pDestinationRect) \ (This)->lpVtbl -> GetVideoPosition(This,pSourceRect,pDestinationRect) #define IOverlay_Advise(This,pOverlayNotify,dwInterests) \ (This)->lpVtbl -> Advise(This,pOverlayNotify,dwInterests) #define IOverlay_Unadvise(This) \ (This)->lpVtbl -> Unadvise(This) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IOverlay_GetPalette_Proxy( IOverlay * This, /* [out] */ DWORD *pdwColors, /* [out] */ PALETTEENTRY **ppPalette); void __RPC_STUB IOverlay_GetPalette_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IOverlay_SetPalette_Proxy( IOverlay * This, /* [in] */ DWORD dwColors, /* [in] */ PALETTEENTRY *pPalette); void __RPC_STUB IOverlay_SetPalette_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IOverlay_GetDefaultColorKey_Proxy( IOverlay * This, /* [out] */ COLORKEY *pColorKey); void __RPC_STUB IOverlay_GetDefaultColorKey_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IOverlay_GetColorKey_Proxy( IOverlay * This, /* [out] */ COLORKEY *pColorKey); void __RPC_STUB IOverlay_GetColorKey_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IOverlay_SetColorKey_Proxy( IOverlay * This, /* [out][in] */ COLORKEY *pColorKey); void __RPC_STUB IOverlay_SetColorKey_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IOverlay_GetWindowHandle_Proxy( IOverlay * This, /* [out] */ HWND *pHwnd); void __RPC_STUB IOverlay_GetWindowHandle_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IOverlay_GetClipList_Proxy( IOverlay * This, /* [out] */ RECT *pSourceRect, /* [out] */ RECT *pDestinationRect, /* [out] */ RGNDATA **ppRgnData); void __RPC_STUB IOverlay_GetClipList_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IOverlay_GetVideoPosition_Proxy( IOverlay * This, /* [out] */ RECT *pSourceRect, /* [out] */ RECT *pDestinationRect); void __RPC_STUB IOverlay_GetVideoPosition_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IOverlay_Advise_Proxy( IOverlay * This, /* [in] */ IOverlayNotify *pOverlayNotify, /* [in] */ DWORD dwInterests); void __RPC_STUB IOverlay_Advise_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IOverlay_Unadvise_Proxy( IOverlay * This); void __RPC_STUB IOverlay_Unadvise_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IOverlay_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0140 */ /* [local] */ typedef IOverlay *POVERLAY; extern RPC_IF_HANDLE __MIDL_itf_strmif_0140_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0140_v0_0_s_ifspec; #ifndef __IMediaEventSink_INTERFACE_DEFINED__ #define __IMediaEventSink_INTERFACE_DEFINED__ /* interface IMediaEventSink */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IMediaEventSink; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("56a868a2-0ad4-11ce-b03a-0020af0ba770") IMediaEventSink : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE Notify( /* [in] */ long EventCode, /* [in] */ LONG_PTR EventParam1, /* [in] */ LONG_PTR EventParam2) = 0; }; #else /* C style interface */ typedef struct IMediaEventSinkVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IMediaEventSink * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IMediaEventSink * This); ULONG ( STDMETHODCALLTYPE *Release )( IMediaEventSink * This); HRESULT ( STDMETHODCALLTYPE *Notify )( IMediaEventSink * This, /* [in] */ long EventCode, /* [in] */ LONG_PTR EventParam1, /* [in] */ LONG_PTR EventParam2); END_INTERFACE } IMediaEventSinkVtbl; interface IMediaEventSink { CONST_VTBL struct IMediaEventSinkVtbl *lpVtbl; }; #ifdef COBJMACROS #define IMediaEventSink_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IMediaEventSink_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IMediaEventSink_Release(This) \ (This)->lpVtbl -> Release(This) #define IMediaEventSink_Notify(This,EventCode,EventParam1,EventParam2) \ (This)->lpVtbl -> Notify(This,EventCode,EventParam1,EventParam2) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IMediaEventSink_Notify_Proxy( IMediaEventSink * This, /* [in] */ long EventCode, /* [in] */ LONG_PTR EventParam1, /* [in] */ LONG_PTR EventParam2); void __RPC_STUB IMediaEventSink_Notify_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IMediaEventSink_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0141 */ /* [local] */ typedef IMediaEventSink *PMEDIAEVENTSINK; extern RPC_IF_HANDLE __MIDL_itf_strmif_0141_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0141_v0_0_s_ifspec; #ifndef __IFileSourceFilter_INTERFACE_DEFINED__ #define __IFileSourceFilter_INTERFACE_DEFINED__ /* interface IFileSourceFilter */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IFileSourceFilter; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("56a868a6-0ad4-11ce-b03a-0020af0ba770") IFileSourceFilter : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE Load( /* [in] */ LPCOLESTR pszFileName, /* [unique][in] */ const AM_MEDIA_TYPE *pmt) = 0; virtual HRESULT STDMETHODCALLTYPE GetCurFile( /* [out] */ LPOLESTR *ppszFileName, /* [out] */ AM_MEDIA_TYPE *pmt) = 0; }; #else /* C style interface */ typedef struct IFileSourceFilterVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IFileSourceFilter * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IFileSourceFilter * This); ULONG ( STDMETHODCALLTYPE *Release )( IFileSourceFilter * This); HRESULT ( STDMETHODCALLTYPE *Load )( IFileSourceFilter * This, /* [in] */ LPCOLESTR pszFileName, /* [unique][in] */ const AM_MEDIA_TYPE *pmt); HRESULT ( STDMETHODCALLTYPE *GetCurFile )( IFileSourceFilter * This, /* [out] */ LPOLESTR *ppszFileName, /* [out] */ AM_MEDIA_TYPE *pmt); END_INTERFACE } IFileSourceFilterVtbl; interface IFileSourceFilter { CONST_VTBL struct IFileSourceFilterVtbl *lpVtbl; }; #ifdef COBJMACROS #define IFileSourceFilter_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IFileSourceFilter_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IFileSourceFilter_Release(This) \ (This)->lpVtbl -> Release(This) #define IFileSourceFilter_Load(This,pszFileName,pmt) \ (This)->lpVtbl -> Load(This,pszFileName,pmt) #define IFileSourceFilter_GetCurFile(This,ppszFileName,pmt) \ (This)->lpVtbl -> GetCurFile(This,ppszFileName,pmt) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IFileSourceFilter_Load_Proxy( IFileSourceFilter * This, /* [in] */ LPCOLESTR pszFileName, /* [unique][in] */ const AM_MEDIA_TYPE *pmt); void __RPC_STUB IFileSourceFilter_Load_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IFileSourceFilter_GetCurFile_Proxy( IFileSourceFilter * This, /* [out] */ LPOLESTR *ppszFileName, /* [out] */ AM_MEDIA_TYPE *pmt); void __RPC_STUB IFileSourceFilter_GetCurFile_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IFileSourceFilter_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0142 */ /* [local] */ typedef IFileSourceFilter *PFILTERFILESOURCE; extern RPC_IF_HANDLE __MIDL_itf_strmif_0142_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0142_v0_0_s_ifspec; #ifndef __IFileSinkFilter_INTERFACE_DEFINED__ #define __IFileSinkFilter_INTERFACE_DEFINED__ /* interface IFileSinkFilter */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IFileSinkFilter; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("a2104830-7c70-11cf-8bce-00aa00a3f1a6") IFileSinkFilter : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE SetFileName( /* [in] */ LPCOLESTR pszFileName, /* [unique][in] */ const AM_MEDIA_TYPE *pmt) = 0; virtual HRESULT STDMETHODCALLTYPE GetCurFile( /* [out] */ LPOLESTR *ppszFileName, /* [out] */ AM_MEDIA_TYPE *pmt) = 0; }; #else /* C style interface */ typedef struct IFileSinkFilterVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IFileSinkFilter * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IFileSinkFilter * This); ULONG ( STDMETHODCALLTYPE *Release )( IFileSinkFilter * This); HRESULT ( STDMETHODCALLTYPE *SetFileName )( IFileSinkFilter * This, /* [in] */ LPCOLESTR pszFileName, /* [unique][in] */ const AM_MEDIA_TYPE *pmt); HRESULT ( STDMETHODCALLTYPE *GetCurFile )( IFileSinkFilter * This, /* [out] */ LPOLESTR *ppszFileName, /* [out] */ AM_MEDIA_TYPE *pmt); END_INTERFACE } IFileSinkFilterVtbl; interface IFileSinkFilter { CONST_VTBL struct IFileSinkFilterVtbl *lpVtbl; }; #ifdef COBJMACROS #define IFileSinkFilter_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IFileSinkFilter_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IFileSinkFilter_Release(This) \ (This)->lpVtbl -> Release(This) #define IFileSinkFilter_SetFileName(This,pszFileName,pmt) \ (This)->lpVtbl -> SetFileName(This,pszFileName,pmt) #define IFileSinkFilter_GetCurFile(This,ppszFileName,pmt) \ (This)->lpVtbl -> GetCurFile(This,ppszFileName,pmt) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IFileSinkFilter_SetFileName_Proxy( IFileSinkFilter * This, /* [in] */ LPCOLESTR pszFileName, /* [unique][in] */ const AM_MEDIA_TYPE *pmt); void __RPC_STUB IFileSinkFilter_SetFileName_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IFileSinkFilter_GetCurFile_Proxy( IFileSinkFilter * This, /* [out] */ LPOLESTR *ppszFileName, /* [out] */ AM_MEDIA_TYPE *pmt); void __RPC_STUB IFileSinkFilter_GetCurFile_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IFileSinkFilter_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0143 */ /* [local] */ typedef IFileSinkFilter *PFILTERFILESINK; extern RPC_IF_HANDLE __MIDL_itf_strmif_0143_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0143_v0_0_s_ifspec; #ifndef __IFileSinkFilter2_INTERFACE_DEFINED__ #define __IFileSinkFilter2_INTERFACE_DEFINED__ /* interface IFileSinkFilter2 */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IFileSinkFilter2; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("00855B90-CE1B-11d0-BD4F-00A0C911CE86") IFileSinkFilter2 : public IFileSinkFilter { public: virtual HRESULT STDMETHODCALLTYPE SetMode( /* [in] */ DWORD dwFlags) = 0; virtual HRESULT STDMETHODCALLTYPE GetMode( /* [out] */ DWORD *pdwFlags) = 0; }; #else /* C style interface */ typedef struct IFileSinkFilter2Vtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IFileSinkFilter2 * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IFileSinkFilter2 * This); ULONG ( STDMETHODCALLTYPE *Release )( IFileSinkFilter2 * This); HRESULT ( STDMETHODCALLTYPE *SetFileName )( IFileSinkFilter2 * This, /* [in] */ LPCOLESTR pszFileName, /* [unique][in] */ const AM_MEDIA_TYPE *pmt); HRESULT ( STDMETHODCALLTYPE *GetCurFile )( IFileSinkFilter2 * This, /* [out] */ LPOLESTR *ppszFileName, /* [out] */ AM_MEDIA_TYPE *pmt); HRESULT ( STDMETHODCALLTYPE *SetMode )( IFileSinkFilter2 * This, /* [in] */ DWORD dwFlags); HRESULT ( STDMETHODCALLTYPE *GetMode )( IFileSinkFilter2 * This, /* [out] */ DWORD *pdwFlags); END_INTERFACE } IFileSinkFilter2Vtbl; interface IFileSinkFilter2 { CONST_VTBL struct IFileSinkFilter2Vtbl *lpVtbl; }; #ifdef COBJMACROS #define IFileSinkFilter2_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IFileSinkFilter2_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IFileSinkFilter2_Release(This) \ (This)->lpVtbl -> Release(This) #define IFileSinkFilter2_SetFileName(This,pszFileName,pmt) \ (This)->lpVtbl -> SetFileName(This,pszFileName,pmt) #define IFileSinkFilter2_GetCurFile(This,ppszFileName,pmt) \ (This)->lpVtbl -> GetCurFile(This,ppszFileName,pmt) #define IFileSinkFilter2_SetMode(This,dwFlags) \ (This)->lpVtbl -> SetMode(This,dwFlags) #define IFileSinkFilter2_GetMode(This,pdwFlags) \ (This)->lpVtbl -> GetMode(This,pdwFlags) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IFileSinkFilter2_SetMode_Proxy( IFileSinkFilter2 * This, /* [in] */ DWORD dwFlags); void __RPC_STUB IFileSinkFilter2_SetMode_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IFileSinkFilter2_GetMode_Proxy( IFileSinkFilter2 * This, /* [out] */ DWORD *pdwFlags); void __RPC_STUB IFileSinkFilter2_GetMode_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IFileSinkFilter2_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0144 */ /* [local] */ typedef IFileSinkFilter2 *PFILESINKFILTER2; typedef /* [public] */ enum __MIDL___MIDL_itf_strmif_0144_0001 { AM_FILE_OVERWRITE = 0x1 } AM_FILESINK_FLAGS; extern RPC_IF_HANDLE __MIDL_itf_strmif_0144_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0144_v0_0_s_ifspec; #ifndef __IGraphBuilder_INTERFACE_DEFINED__ #define __IGraphBuilder_INTERFACE_DEFINED__ /* interface IGraphBuilder */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IGraphBuilder; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("56a868a9-0ad4-11ce-b03a-0020af0ba770") IGraphBuilder : public IFilterGraph { public: virtual HRESULT STDMETHODCALLTYPE Connect( /* [in] */ IPin *ppinOut, /* [in] */ IPin *ppinIn) = 0; virtual HRESULT STDMETHODCALLTYPE Render( /* [in] */ IPin *ppinOut) = 0; virtual HRESULT STDMETHODCALLTYPE RenderFile( /* [in] */ LPCWSTR lpcwstrFile, /* [unique][in] */ LPCWSTR lpcwstrPlayList) = 0; virtual HRESULT STDMETHODCALLTYPE AddSourceFilter( /* [in] */ LPCWSTR lpcwstrFileName, /* [unique][in] */ LPCWSTR lpcwstrFilterName, /* [out] */ IBaseFilter **ppFilter) = 0; virtual HRESULT STDMETHODCALLTYPE SetLogFile( /* [in] */ DWORD_PTR hFile) = 0; virtual HRESULT STDMETHODCALLTYPE Abort( void) = 0; virtual HRESULT STDMETHODCALLTYPE ShouldOperationContinue( void) = 0; }; #else /* C style interface */ typedef struct IGraphBuilderVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IGraphBuilder * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IGraphBuilder * This); ULONG ( STDMETHODCALLTYPE *Release )( IGraphBuilder * This); HRESULT ( STDMETHODCALLTYPE *AddFilter )( IGraphBuilder * This, /* [in] */ IBaseFilter *pFilter, /* [string][in] */ LPCWSTR pName); HRESULT ( STDMETHODCALLTYPE *RemoveFilter )( IGraphBuilder * This, /* [in] */ IBaseFilter *pFilter); HRESULT ( STDMETHODCALLTYPE *EnumFilters )( IGraphBuilder * This, /* [out] */ IEnumFilters **ppEnum); HRESULT ( STDMETHODCALLTYPE *FindFilterByName )( IGraphBuilder * This, /* [string][in] */ LPCWSTR pName, /* [out] */ IBaseFilter **ppFilter); HRESULT ( STDMETHODCALLTYPE *ConnectDirect )( IGraphBuilder * This, /* [in] */ IPin *ppinOut, /* [in] */ IPin *ppinIn, /* [unique][in] */ const AM_MEDIA_TYPE *pmt); HRESULT ( STDMETHODCALLTYPE *Reconnect )( IGraphBuilder * This, /* [in] */ IPin *ppin); HRESULT ( STDMETHODCALLTYPE *Disconnect )( IGraphBuilder * This, /* [in] */ IPin *ppin); HRESULT ( STDMETHODCALLTYPE *SetDefaultSyncSource )( IGraphBuilder * This); HRESULT ( STDMETHODCALLTYPE *Connect )( IGraphBuilder * This, /* [in] */ IPin *ppinOut, /* [in] */ IPin *ppinIn); HRESULT ( STDMETHODCALLTYPE *Render )( IGraphBuilder * This, /* [in] */ IPin *ppinOut); HRESULT ( STDMETHODCALLTYPE *RenderFile )( IGraphBuilder * This, /* [in] */ LPCWSTR lpcwstrFile, /* [unique][in] */ LPCWSTR lpcwstrPlayList); HRESULT ( STDMETHODCALLTYPE *AddSourceFilter )( IGraphBuilder * This, /* [in] */ LPCWSTR lpcwstrFileName, /* [unique][in] */ LPCWSTR lpcwstrFilterName, /* [out] */ IBaseFilter **ppFilter); HRESULT ( STDMETHODCALLTYPE *SetLogFile )( IGraphBuilder * This, /* [in] */ DWORD_PTR hFile); HRESULT ( STDMETHODCALLTYPE *Abort )( IGraphBuilder * This); HRESULT ( STDMETHODCALLTYPE *ShouldOperationContinue )( IGraphBuilder * This); END_INTERFACE } IGraphBuilderVtbl; interface IGraphBuilder { CONST_VTBL struct IGraphBuilderVtbl *lpVtbl; }; #ifdef COBJMACROS #define IGraphBuilder_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IGraphBuilder_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IGraphBuilder_Release(This) \ (This)->lpVtbl -> Release(This) #define IGraphBuilder_AddFilter(This,pFilter,pName) \ (This)->lpVtbl -> AddFilter(This,pFilter,pName) #define IGraphBuilder_RemoveFilter(This,pFilter) \ (This)->lpVtbl -> RemoveFilter(This,pFilter) #define IGraphBuilder_EnumFilters(This,ppEnum) \ (This)->lpVtbl -> EnumFilters(This,ppEnum) #define IGraphBuilder_FindFilterByName(This,pName,ppFilter) \ (This)->lpVtbl -> FindFilterByName(This,pName,ppFilter) #define IGraphBuilder_ConnectDirect(This,ppinOut,ppinIn,pmt) \ (This)->lpVtbl -> ConnectDirect(This,ppinOut,ppinIn,pmt) #define IGraphBuilder_Reconnect(This,ppin) \ (This)->lpVtbl -> Reconnect(This,ppin) #define IGraphBuilder_Disconnect(This,ppin) \ (This)->lpVtbl -> Disconnect(This,ppin) #define IGraphBuilder_SetDefaultSyncSource(This) \ (This)->lpVtbl -> SetDefaultSyncSource(This) #define IGraphBuilder_Connect(This,ppinOut,ppinIn) \ (This)->lpVtbl -> Connect(This,ppinOut,ppinIn) #define IGraphBuilder_Render(This,ppinOut) \ (This)->lpVtbl -> Render(This,ppinOut) #define IGraphBuilder_RenderFile(This,lpcwstrFile,lpcwstrPlayList) \ (This)->lpVtbl -> RenderFile(This,lpcwstrFile,lpcwstrPlayList) #define IGraphBuilder_AddSourceFilter(This,lpcwstrFileName,lpcwstrFilterName,ppFilter) \ (This)->lpVtbl -> AddSourceFilter(This,lpcwstrFileName,lpcwstrFilterName,ppFilter) #define IGraphBuilder_SetLogFile(This,hFile) \ (This)->lpVtbl -> SetLogFile(This,hFile) #define IGraphBuilder_Abort(This) \ (This)->lpVtbl -> Abort(This) #define IGraphBuilder_ShouldOperationContinue(This) \ (This)->lpVtbl -> ShouldOperationContinue(This) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IGraphBuilder_Connect_Proxy( IGraphBuilder * This, /* [in] */ IPin *ppinOut, /* [in] */ IPin *ppinIn); void __RPC_STUB IGraphBuilder_Connect_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IGraphBuilder_Render_Proxy( IGraphBuilder * This, /* [in] */ IPin *ppinOut); void __RPC_STUB IGraphBuilder_Render_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IGraphBuilder_RenderFile_Proxy( IGraphBuilder * This, /* [in] */ LPCWSTR lpcwstrFile, /* [unique][in] */ LPCWSTR lpcwstrPlayList); void __RPC_STUB IGraphBuilder_RenderFile_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IGraphBuilder_AddSourceFilter_Proxy( IGraphBuilder * This, /* [in] */ LPCWSTR lpcwstrFileName, /* [unique][in] */ LPCWSTR lpcwstrFilterName, /* [out] */ IBaseFilter **ppFilter); void __RPC_STUB IGraphBuilder_AddSourceFilter_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IGraphBuilder_SetLogFile_Proxy( IGraphBuilder * This, /* [in] */ DWORD_PTR hFile); void __RPC_STUB IGraphBuilder_SetLogFile_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IGraphBuilder_Abort_Proxy( IGraphBuilder * This); void __RPC_STUB IGraphBuilder_Abort_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IGraphBuilder_ShouldOperationContinue_Proxy( IGraphBuilder * This); void __RPC_STUB IGraphBuilder_ShouldOperationContinue_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IGraphBuilder_INTERFACE_DEFINED__ */ #ifndef __ICaptureGraphBuilder_INTERFACE_DEFINED__ #define __ICaptureGraphBuilder_INTERFACE_DEFINED__ /* interface ICaptureGraphBuilder */ /* [unique][uuid][object] */ EXTERN_C const IID IID_ICaptureGraphBuilder; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("bf87b6e0-8c27-11d0-b3f0-00aa003761c5") ICaptureGraphBuilder : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE SetFiltergraph( /* [in] */ IGraphBuilder *pfg) = 0; virtual HRESULT STDMETHODCALLTYPE GetFiltergraph( /* [out] */ IGraphBuilder **ppfg) = 0; virtual HRESULT STDMETHODCALLTYPE SetOutputFileName( /* [in] */ const GUID *pType, /* [in] */ LPCOLESTR lpstrFile, /* [out] */ IBaseFilter **ppf, /* [out] */ IFileSinkFilter **ppSink) = 0; virtual /* [local] */ HRESULT STDMETHODCALLTYPE FindInterface( /* [unique][in] */ const GUID *pCategory, /* [in] */ IBaseFilter *pf, /* [in] */ REFIID riid, /* [out] */ void **ppint) = 0; virtual HRESULT STDMETHODCALLTYPE RenderStream( /* [in] */ const GUID *pCategory, /* [in] */ IUnknown *pSource, /* [in] */ IBaseFilter *pfCompressor, /* [in] */ IBaseFilter *pfRenderer) = 0; virtual HRESULT STDMETHODCALLTYPE ControlStream( /* [in] */ const GUID *pCategory, /* [in] */ IBaseFilter *pFilter, /* [in] */ REFERENCE_TIME *pstart, /* [in] */ REFERENCE_TIME *pstop, /* [in] */ WORD wStartCookie, /* [in] */ WORD wStopCookie) = 0; virtual HRESULT STDMETHODCALLTYPE AllocCapFile( /* [in] */ LPCOLESTR lpstr, /* [in] */ DWORDLONG dwlSize) = 0; virtual HRESULT STDMETHODCALLTYPE CopyCaptureFile( /* [in] */ LPOLESTR lpwstrOld, /* [in] */ LPOLESTR lpwstrNew, /* [in] */ int fAllowEscAbort, /* [in] */ IAMCopyCaptureFileProgress *pCallback) = 0; }; #else /* C style interface */ typedef struct ICaptureGraphBuilderVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( ICaptureGraphBuilder * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( ICaptureGraphBuilder * This); ULONG ( STDMETHODCALLTYPE *Release )( ICaptureGraphBuilder * This); HRESULT ( STDMETHODCALLTYPE *SetFiltergraph )( ICaptureGraphBuilder * This, /* [in] */ IGraphBuilder *pfg); HRESULT ( STDMETHODCALLTYPE *GetFiltergraph )( ICaptureGraphBuilder * This, /* [out] */ IGraphBuilder **ppfg); HRESULT ( STDMETHODCALLTYPE *SetOutputFileName )( ICaptureGraphBuilder * This, /* [in] */ const GUID *pType, /* [in] */ LPCOLESTR lpstrFile, /* [out] */ IBaseFilter **ppf, /* [out] */ IFileSinkFilter **ppSink); /* [local] */ HRESULT ( STDMETHODCALLTYPE *FindInterface )( ICaptureGraphBuilder * This, /* [unique][in] */ const GUID *pCategory, /* [in] */ IBaseFilter *pf, /* [in] */ REFIID riid, /* [out] */ void **ppint); HRESULT ( STDMETHODCALLTYPE *RenderStream )( ICaptureGraphBuilder * This, /* [in] */ const GUID *pCategory, /* [in] */ IUnknown *pSource, /* [in] */ IBaseFilter *pfCompressor, /* [in] */ IBaseFilter *pfRenderer); HRESULT ( STDMETHODCALLTYPE *ControlStream )( ICaptureGraphBuilder * This, /* [in] */ const GUID *pCategory, /* [in] */ IBaseFilter *pFilter, /* [in] */ REFERENCE_TIME *pstart, /* [in] */ REFERENCE_TIME *pstop, /* [in] */ WORD wStartCookie, /* [in] */ WORD wStopCookie); HRESULT ( STDMETHODCALLTYPE *AllocCapFile )( ICaptureGraphBuilder * This, /* [in] */ LPCOLESTR lpstr, /* [in] */ DWORDLONG dwlSize); HRESULT ( STDMETHODCALLTYPE *CopyCaptureFile )( ICaptureGraphBuilder * This, /* [in] */ LPOLESTR lpwstrOld, /* [in] */ LPOLESTR lpwstrNew, /* [in] */ int fAllowEscAbort, /* [in] */ IAMCopyCaptureFileProgress *pCallback); END_INTERFACE } ICaptureGraphBuilderVtbl; interface ICaptureGraphBuilder { CONST_VTBL struct ICaptureGraphBuilderVtbl *lpVtbl; }; #ifdef COBJMACROS #define ICaptureGraphBuilder_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define ICaptureGraphBuilder_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define ICaptureGraphBuilder_Release(This) \ (This)->lpVtbl -> Release(This) #define ICaptureGraphBuilder_SetFiltergraph(This,pfg) \ (This)->lpVtbl -> SetFiltergraph(This,pfg) #define ICaptureGraphBuilder_GetFiltergraph(This,ppfg) \ (This)->lpVtbl -> GetFiltergraph(This,ppfg) #define ICaptureGraphBuilder_SetOutputFileName(This,pType,lpstrFile,ppf,ppSink) \ (This)->lpVtbl -> SetOutputFileName(This,pType,lpstrFile,ppf,ppSink) #define ICaptureGraphBuilder_FindInterface(This,pCategory,pf,riid,ppint) \ (This)->lpVtbl -> FindInterface(This,pCategory,pf,riid,ppint) #define ICaptureGraphBuilder_RenderStream(This,pCategory,pSource,pfCompressor,pfRenderer) \ (This)->lpVtbl -> RenderStream(This,pCategory,pSource,pfCompressor,pfRenderer) #define ICaptureGraphBuilder_ControlStream(This,pCategory,pFilter,pstart,pstop,wStartCookie,wStopCookie) \ (This)->lpVtbl -> ControlStream(This,pCategory,pFilter,pstart,pstop,wStartCookie,wStopCookie) #define ICaptureGraphBuilder_AllocCapFile(This,lpstr,dwlSize) \ (This)->lpVtbl -> AllocCapFile(This,lpstr,dwlSize) #define ICaptureGraphBuilder_CopyCaptureFile(This,lpwstrOld,lpwstrNew,fAllowEscAbort,pCallback) \ (This)->lpVtbl -> CopyCaptureFile(This,lpwstrOld,lpwstrNew,fAllowEscAbort,pCallback) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE ICaptureGraphBuilder_SetFiltergraph_Proxy( ICaptureGraphBuilder * This, /* [in] */ IGraphBuilder *pfg); void __RPC_STUB ICaptureGraphBuilder_SetFiltergraph_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE ICaptureGraphBuilder_GetFiltergraph_Proxy( ICaptureGraphBuilder * This, /* [out] */ IGraphBuilder **ppfg); void __RPC_STUB ICaptureGraphBuilder_GetFiltergraph_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE ICaptureGraphBuilder_SetOutputFileName_Proxy( ICaptureGraphBuilder * This, /* [in] */ const GUID *pType, /* [in] */ LPCOLESTR lpstrFile, /* [out] */ IBaseFilter **ppf, /* [out] */ IFileSinkFilter **ppSink); void __RPC_STUB ICaptureGraphBuilder_SetOutputFileName_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); /* [call_as] */ HRESULT STDMETHODCALLTYPE ICaptureGraphBuilder_RemoteFindInterface_Proxy( ICaptureGraphBuilder * This, /* [unique][in] */ const GUID *pCategory, /* [in] */ IBaseFilter *pf, /* [in] */ REFIID riid, /* [out] */ IUnknown **ppint); void __RPC_STUB ICaptureGraphBuilder_RemoteFindInterface_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE ICaptureGraphBuilder_RenderStream_Proxy( ICaptureGraphBuilder * This, /* [in] */ const GUID *pCategory, /* [in] */ IUnknown *pSource, /* [in] */ IBaseFilter *pfCompressor, /* [in] */ IBaseFilter *pfRenderer); void __RPC_STUB ICaptureGraphBuilder_RenderStream_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE ICaptureGraphBuilder_ControlStream_Proxy( ICaptureGraphBuilder * This, /* [in] */ const GUID *pCategory, /* [in] */ IBaseFilter *pFilter, /* [in] */ REFERENCE_TIME *pstart, /* [in] */ REFERENCE_TIME *pstop, /* [in] */ WORD wStartCookie, /* [in] */ WORD wStopCookie); void __RPC_STUB ICaptureGraphBuilder_ControlStream_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE ICaptureGraphBuilder_AllocCapFile_Proxy( ICaptureGraphBuilder * This, /* [in] */ LPCOLESTR lpstr, /* [in] */ DWORDLONG dwlSize); void __RPC_STUB ICaptureGraphBuilder_AllocCapFile_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE ICaptureGraphBuilder_CopyCaptureFile_Proxy( ICaptureGraphBuilder * This, /* [in] */ LPOLESTR lpwstrOld, /* [in] */ LPOLESTR lpwstrNew, /* [in] */ int fAllowEscAbort, /* [in] */ IAMCopyCaptureFileProgress *pCallback); void __RPC_STUB ICaptureGraphBuilder_CopyCaptureFile_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __ICaptureGraphBuilder_INTERFACE_DEFINED__ */ #ifndef __IAMCopyCaptureFileProgress_INTERFACE_DEFINED__ #define __IAMCopyCaptureFileProgress_INTERFACE_DEFINED__ /* interface IAMCopyCaptureFileProgress */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IAMCopyCaptureFileProgress; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("670d1d20-a068-11d0-b3f0-00aa003761c5") IAMCopyCaptureFileProgress : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE Progress( /* [in] */ int iProgress) = 0; }; #else /* C style interface */ typedef struct IAMCopyCaptureFileProgressVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMCopyCaptureFileProgress * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMCopyCaptureFileProgress * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMCopyCaptureFileProgress * This); HRESULT ( STDMETHODCALLTYPE *Progress )( IAMCopyCaptureFileProgress * This, /* [in] */ int iProgress); END_INTERFACE } IAMCopyCaptureFileProgressVtbl; interface IAMCopyCaptureFileProgress { CONST_VTBL struct IAMCopyCaptureFileProgressVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMCopyCaptureFileProgress_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMCopyCaptureFileProgress_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMCopyCaptureFileProgress_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMCopyCaptureFileProgress_Progress(This,iProgress) \ (This)->lpVtbl -> Progress(This,iProgress) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMCopyCaptureFileProgress_Progress_Proxy( IAMCopyCaptureFileProgress * This, /* [in] */ int iProgress); void __RPC_STUB IAMCopyCaptureFileProgress_Progress_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMCopyCaptureFileProgress_INTERFACE_DEFINED__ */ #ifndef __ICaptureGraphBuilder2_INTERFACE_DEFINED__ #define __ICaptureGraphBuilder2_INTERFACE_DEFINED__ /* interface ICaptureGraphBuilder2 */ /* [unique][uuid][object] */ EXTERN_C const IID IID_ICaptureGraphBuilder2; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("93E5A4E0-2D50-11d2-ABFA-00A0C9C6E38D") ICaptureGraphBuilder2 : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE SetFiltergraph( /* [in] */ IGraphBuilder *pfg) = 0; virtual HRESULT STDMETHODCALLTYPE GetFiltergraph( /* [out] */ IGraphBuilder **ppfg) = 0; virtual HRESULT STDMETHODCALLTYPE SetOutputFileName( /* [in] */ const GUID *pType, /* [in] */ LPCOLESTR lpstrFile, /* [out] */ IBaseFilter **ppf, /* [out] */ IFileSinkFilter **ppSink) = 0; virtual /* [local] */ HRESULT STDMETHODCALLTYPE FindInterface( /* [in] */ const GUID *pCategory, /* [in] */ const GUID *pType, /* [in] */ IBaseFilter *pf, /* [in] */ REFIID riid, /* [out] */ void **ppint) = 0; virtual HRESULT STDMETHODCALLTYPE RenderStream( /* [in] */ const GUID *pCategory, /* [in] */ const GUID *pType, /* [in] */ IUnknown *pSource, /* [in] */ IBaseFilter *pfCompressor, /* [in] */ IBaseFilter *pfRenderer) = 0; virtual HRESULT STDMETHODCALLTYPE ControlStream( /* [in] */ const GUID *pCategory, /* [in] */ const GUID *pType, /* [in] */ IBaseFilter *pFilter, /* [in] */ REFERENCE_TIME *pstart, /* [in] */ REFERENCE_TIME *pstop, /* [in] */ WORD wStartCookie, /* [in] */ WORD wStopCookie) = 0; virtual HRESULT STDMETHODCALLTYPE AllocCapFile( /* [in] */ LPCOLESTR lpstr, /* [in] */ DWORDLONG dwlSize) = 0; virtual HRESULT STDMETHODCALLTYPE CopyCaptureFile( /* [in] */ LPOLESTR lpwstrOld, /* [in] */ LPOLESTR lpwstrNew, /* [in] */ int fAllowEscAbort, /* [in] */ IAMCopyCaptureFileProgress *pCallback) = 0; virtual HRESULT STDMETHODCALLTYPE FindPin( /* [in] */ IUnknown *pSource, /* [in] */ PIN_DIRECTION pindir, /* [in] */ const GUID *pCategory, /* [in] */ const GUID *pType, /* [in] */ BOOL fUnconnected, /* [in] */ int num, /* [out] */ IPin **ppPin) = 0; }; #else /* C style interface */ typedef struct ICaptureGraphBuilder2Vtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( ICaptureGraphBuilder2 * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( ICaptureGraphBuilder2 * This); ULONG ( STDMETHODCALLTYPE *Release )( ICaptureGraphBuilder2 * This); HRESULT ( STDMETHODCALLTYPE *SetFiltergraph )( ICaptureGraphBuilder2 * This, /* [in] */ IGraphBuilder *pfg); HRESULT ( STDMETHODCALLTYPE *GetFiltergraph )( ICaptureGraphBuilder2 * This, /* [out] */ IGraphBuilder **ppfg); HRESULT ( STDMETHODCALLTYPE *SetOutputFileName )( ICaptureGraphBuilder2 * This, /* [in] */ const GUID *pType, /* [in] */ LPCOLESTR lpstrFile, /* [out] */ IBaseFilter **ppf, /* [out] */ IFileSinkFilter **ppSink); /* [local] */ HRESULT ( STDMETHODCALLTYPE *FindInterface )( ICaptureGraphBuilder2 * This, /* [in] */ const GUID *pCategory, /* [in] */ const GUID *pType, /* [in] */ IBaseFilter *pf, /* [in] */ REFIID riid, /* [out] */ void **ppint); HRESULT ( STDMETHODCALLTYPE *RenderStream )( ICaptureGraphBuilder2 * This, /* [in] */ const GUID *pCategory, /* [in] */ const GUID *pType, /* [in] */ IUnknown *pSource, /* [in] */ IBaseFilter *pfCompressor, /* [in] */ IBaseFilter *pfRenderer); HRESULT ( STDMETHODCALLTYPE *ControlStream )( ICaptureGraphBuilder2 * This, /* [in] */ const GUID *pCategory, /* [in] */ const GUID *pType, /* [in] */ IBaseFilter *pFilter, /* [in] */ REFERENCE_TIME *pstart, /* [in] */ REFERENCE_TIME *pstop, /* [in] */ WORD wStartCookie, /* [in] */ WORD wStopCookie); HRESULT ( STDMETHODCALLTYPE *AllocCapFile )( ICaptureGraphBuilder2 * This, /* [in] */ LPCOLESTR lpstr, /* [in] */ DWORDLONG dwlSize); HRESULT ( STDMETHODCALLTYPE *CopyCaptureFile )( ICaptureGraphBuilder2 * This, /* [in] */ LPOLESTR lpwstrOld, /* [in] */ LPOLESTR lpwstrNew, /* [in] */ int fAllowEscAbort, /* [in] */ IAMCopyCaptureFileProgress *pCallback); HRESULT ( STDMETHODCALLTYPE *FindPin )( ICaptureGraphBuilder2 * This, /* [in] */ IUnknown *pSource, /* [in] */ PIN_DIRECTION pindir, /* [in] */ const GUID *pCategory, /* [in] */ const GUID *pType, /* [in] */ BOOL fUnconnected, /* [in] */ int num, /* [out] */ IPin **ppPin); END_INTERFACE } ICaptureGraphBuilder2Vtbl; interface ICaptureGraphBuilder2 { CONST_VTBL struct ICaptureGraphBuilder2Vtbl *lpVtbl; }; #ifdef COBJMACROS #define ICaptureGraphBuilder2_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define ICaptureGraphBuilder2_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define ICaptureGraphBuilder2_Release(This) \ (This)->lpVtbl -> Release(This) #define ICaptureGraphBuilder2_SetFiltergraph(This,pfg) \ (This)->lpVtbl -> SetFiltergraph(This,pfg) #define ICaptureGraphBuilder2_GetFiltergraph(This,ppfg) \ (This)->lpVtbl -> GetFiltergraph(This,ppfg) #define ICaptureGraphBuilder2_SetOutputFileName(This,pType,lpstrFile,ppf,ppSink) \ (This)->lpVtbl -> SetOutputFileName(This,pType,lpstrFile,ppf,ppSink) #define ICaptureGraphBuilder2_FindInterface(This,pCategory,pType,pf,riid,ppint) \ (This)->lpVtbl -> FindInterface(This,pCategory,pType,pf,riid,ppint) #define ICaptureGraphBuilder2_RenderStream(This,pCategory,pType,pSource,pfCompressor,pfRenderer) \ (This)->lpVtbl -> RenderStream(This,pCategory,pType,pSource,pfCompressor,pfRenderer) #define ICaptureGraphBuilder2_ControlStream(This,pCategory,pType,pFilter,pstart,pstop,wStartCookie,wStopCookie) \ (This)->lpVtbl -> ControlStream(This,pCategory,pType,pFilter,pstart,pstop,wStartCookie,wStopCookie) #define ICaptureGraphBuilder2_AllocCapFile(This,lpstr,dwlSize) \ (This)->lpVtbl -> AllocCapFile(This,lpstr,dwlSize) #define ICaptureGraphBuilder2_CopyCaptureFile(This,lpwstrOld,lpwstrNew,fAllowEscAbort,pCallback) \ (This)->lpVtbl -> CopyCaptureFile(This,lpwstrOld,lpwstrNew,fAllowEscAbort,pCallback) #define ICaptureGraphBuilder2_FindPin(This,pSource,pindir,pCategory,pType,fUnconnected,num,ppPin) \ (This)->lpVtbl -> FindPin(This,pSource,pindir,pCategory,pType,fUnconnected,num,ppPin) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE ICaptureGraphBuilder2_SetFiltergraph_Proxy( ICaptureGraphBuilder2 * This, /* [in] */ IGraphBuilder *pfg); void __RPC_STUB ICaptureGraphBuilder2_SetFiltergraph_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE ICaptureGraphBuilder2_GetFiltergraph_Proxy( ICaptureGraphBuilder2 * This, /* [out] */ IGraphBuilder **ppfg); void __RPC_STUB ICaptureGraphBuilder2_GetFiltergraph_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE ICaptureGraphBuilder2_SetOutputFileName_Proxy( ICaptureGraphBuilder2 * This, /* [in] */ const GUID *pType, /* [in] */ LPCOLESTR lpstrFile, /* [out] */ IBaseFilter **ppf, /* [out] */ IFileSinkFilter **ppSink); void __RPC_STUB ICaptureGraphBuilder2_SetOutputFileName_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); /* [call_as] */ HRESULT STDMETHODCALLTYPE ICaptureGraphBuilder2_RemoteFindInterface_Proxy( ICaptureGraphBuilder2 * This, /* [in] */ const GUID *pCategory, /* [in] */ const GUID *pType, /* [in] */ IBaseFilter *pf, /* [in] */ REFIID riid, /* [out] */ IUnknown **ppint); void __RPC_STUB ICaptureGraphBuilder2_RemoteFindInterface_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE ICaptureGraphBuilder2_RenderStream_Proxy( ICaptureGraphBuilder2 * This, /* [in] */ const GUID *pCategory, /* [in] */ const GUID *pType, /* [in] */ IUnknown *pSource, /* [in] */ IBaseFilter *pfCompressor, /* [in] */ IBaseFilter *pfRenderer); void __RPC_STUB ICaptureGraphBuilder2_RenderStream_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE ICaptureGraphBuilder2_ControlStream_Proxy( ICaptureGraphBuilder2 * This, /* [in] */ const GUID *pCategory, /* [in] */ const GUID *pType, /* [in] */ IBaseFilter *pFilter, /* [in] */ REFERENCE_TIME *pstart, /* [in] */ REFERENCE_TIME *pstop, /* [in] */ WORD wStartCookie, /* [in] */ WORD wStopCookie); void __RPC_STUB ICaptureGraphBuilder2_ControlStream_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE ICaptureGraphBuilder2_AllocCapFile_Proxy( ICaptureGraphBuilder2 * This, /* [in] */ LPCOLESTR lpstr, /* [in] */ DWORDLONG dwlSize); void __RPC_STUB ICaptureGraphBuilder2_AllocCapFile_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE ICaptureGraphBuilder2_CopyCaptureFile_Proxy( ICaptureGraphBuilder2 * This, /* [in] */ LPOLESTR lpwstrOld, /* [in] */ LPOLESTR lpwstrNew, /* [in] */ int fAllowEscAbort, /* [in] */ IAMCopyCaptureFileProgress *pCallback); void __RPC_STUB ICaptureGraphBuilder2_CopyCaptureFile_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE ICaptureGraphBuilder2_FindPin_Proxy( ICaptureGraphBuilder2 * This, /* [in] */ IUnknown *pSource, /* [in] */ PIN_DIRECTION pindir, /* [in] */ const GUID *pCategory, /* [in] */ const GUID *pType, /* [in] */ BOOL fUnconnected, /* [in] */ int num, /* [out] */ IPin **ppPin); void __RPC_STUB ICaptureGraphBuilder2_FindPin_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __ICaptureGraphBuilder2_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0148 */ /* [local] */ enum _AM_RENSDEREXFLAGS { AM_RENDEREX_RENDERTOEXISTINGRENDERERS = 0x1 } ; extern RPC_IF_HANDLE __MIDL_itf_strmif_0148_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0148_v0_0_s_ifspec; #ifndef __IFilterGraph2_INTERFACE_DEFINED__ #define __IFilterGraph2_INTERFACE_DEFINED__ /* interface IFilterGraph2 */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IFilterGraph2; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("36b73882-c2c8-11cf-8b46-00805f6cef60") IFilterGraph2 : public IGraphBuilder { public: virtual HRESULT STDMETHODCALLTYPE AddSourceFilterForMoniker( /* [in] */ IMoniker *pMoniker, /* [in] */ IBindCtx *pCtx, /* [unique][in] */ LPCWSTR lpcwstrFilterName, /* [out] */ IBaseFilter **ppFilter) = 0; virtual HRESULT STDMETHODCALLTYPE ReconnectEx( /* [in] */ IPin *ppin, /* [unique][in] */ const AM_MEDIA_TYPE *pmt) = 0; virtual HRESULT STDMETHODCALLTYPE RenderEx( /* [in] */ IPin *pPinOut, /* [in] */ DWORD dwFlags, /* [out][in] */ DWORD *pvContext) = 0; }; #else /* C style interface */ typedef struct IFilterGraph2Vtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IFilterGraph2 * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IFilterGraph2 * This); ULONG ( STDMETHODCALLTYPE *Release )( IFilterGraph2 * This); HRESULT ( STDMETHODCALLTYPE *AddFilter )( IFilterGraph2 * This, /* [in] */ IBaseFilter *pFilter, /* [string][in] */ LPCWSTR pName); HRESULT ( STDMETHODCALLTYPE *RemoveFilter )( IFilterGraph2 * This, /* [in] */ IBaseFilter *pFilter); HRESULT ( STDMETHODCALLTYPE *EnumFilters )( IFilterGraph2 * This, /* [out] */ IEnumFilters **ppEnum); HRESULT ( STDMETHODCALLTYPE *FindFilterByName )( IFilterGraph2 * This, /* [string][in] */ LPCWSTR pName, /* [out] */ IBaseFilter **ppFilter); HRESULT ( STDMETHODCALLTYPE *ConnectDirect )( IFilterGraph2 * This, /* [in] */ IPin *ppinOut, /* [in] */ IPin *ppinIn, /* [unique][in] */ const AM_MEDIA_TYPE *pmt); HRESULT ( STDMETHODCALLTYPE *Reconnect )( IFilterGraph2 * This, /* [in] */ IPin *ppin); HRESULT ( STDMETHODCALLTYPE *Disconnect )( IFilterGraph2 * This, /* [in] */ IPin *ppin); HRESULT ( STDMETHODCALLTYPE *SetDefaultSyncSource )( IFilterGraph2 * This); HRESULT ( STDMETHODCALLTYPE *Connect )( IFilterGraph2 * This, /* [in] */ IPin *ppinOut, /* [in] */ IPin *ppinIn); HRESULT ( STDMETHODCALLTYPE *Render )( IFilterGraph2 * This, /* [in] */ IPin *ppinOut); HRESULT ( STDMETHODCALLTYPE *RenderFile )( IFilterGraph2 * This, /* [in] */ LPCWSTR lpcwstrFile, /* [unique][in] */ LPCWSTR lpcwstrPlayList); HRESULT ( STDMETHODCALLTYPE *AddSourceFilter )( IFilterGraph2 * This, /* [in] */ LPCWSTR lpcwstrFileName, /* [unique][in] */ LPCWSTR lpcwstrFilterName, /* [out] */ IBaseFilter **ppFilter); HRESULT ( STDMETHODCALLTYPE *SetLogFile )( IFilterGraph2 * This, /* [in] */ DWORD_PTR hFile); HRESULT ( STDMETHODCALLTYPE *Abort )( IFilterGraph2 * This); HRESULT ( STDMETHODCALLTYPE *ShouldOperationContinue )( IFilterGraph2 * This); HRESULT ( STDMETHODCALLTYPE *AddSourceFilterForMoniker )( IFilterGraph2 * This, /* [in] */ IMoniker *pMoniker, /* [in] */ IBindCtx *pCtx, /* [unique][in] */ LPCWSTR lpcwstrFilterName, /* [out] */ IBaseFilter **ppFilter); HRESULT ( STDMETHODCALLTYPE *ReconnectEx )( IFilterGraph2 * This, /* [in] */ IPin *ppin, /* [unique][in] */ const AM_MEDIA_TYPE *pmt); HRESULT ( STDMETHODCALLTYPE *RenderEx )( IFilterGraph2 * This, /* [in] */ IPin *pPinOut, /* [in] */ DWORD dwFlags, /* [out][in] */ DWORD *pvContext); END_INTERFACE } IFilterGraph2Vtbl; interface IFilterGraph2 { CONST_VTBL struct IFilterGraph2Vtbl *lpVtbl; }; #ifdef COBJMACROS #define IFilterGraph2_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IFilterGraph2_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IFilterGraph2_Release(This) \ (This)->lpVtbl -> Release(This) #define IFilterGraph2_AddFilter(This,pFilter,pName) \ (This)->lpVtbl -> AddFilter(This,pFilter,pName) #define IFilterGraph2_RemoveFilter(This,pFilter) \ (This)->lpVtbl -> RemoveFilter(This,pFilter) #define IFilterGraph2_EnumFilters(This,ppEnum) \ (This)->lpVtbl -> EnumFilters(This,ppEnum) #define IFilterGraph2_FindFilterByName(This,pName,ppFilter) \ (This)->lpVtbl -> FindFilterByName(This,pName,ppFilter) #define IFilterGraph2_ConnectDirect(This,ppinOut,ppinIn,pmt) \ (This)->lpVtbl -> ConnectDirect(This,ppinOut,ppinIn,pmt) #define IFilterGraph2_Reconnect(This,ppin) \ (This)->lpVtbl -> Reconnect(This,ppin) #define IFilterGraph2_Disconnect(This,ppin) \ (This)->lpVtbl -> Disconnect(This,ppin) #define IFilterGraph2_SetDefaultSyncSource(This) \ (This)->lpVtbl -> SetDefaultSyncSource(This) #define IFilterGraph2_Connect(This,ppinOut,ppinIn) \ (This)->lpVtbl -> Connect(This,ppinOut,ppinIn) #define IFilterGraph2_Render(This,ppinOut) \ (This)->lpVtbl -> Render(This,ppinOut) #define IFilterGraph2_RenderFile(This,lpcwstrFile,lpcwstrPlayList) \ (This)->lpVtbl -> RenderFile(This,lpcwstrFile,lpcwstrPlayList) #define IFilterGraph2_AddSourceFilter(This,lpcwstrFileName,lpcwstrFilterName,ppFilter) \ (This)->lpVtbl -> AddSourceFilter(This,lpcwstrFileName,lpcwstrFilterName,ppFilter) #define IFilterGraph2_SetLogFile(This,hFile) \ (This)->lpVtbl -> SetLogFile(This,hFile) #define IFilterGraph2_Abort(This) \ (This)->lpVtbl -> Abort(This) #define IFilterGraph2_ShouldOperationContinue(This) \ (This)->lpVtbl -> ShouldOperationContinue(This) #define IFilterGraph2_AddSourceFilterForMoniker(This,pMoniker,pCtx,lpcwstrFilterName,ppFilter) \ (This)->lpVtbl -> AddSourceFilterForMoniker(This,pMoniker,pCtx,lpcwstrFilterName,ppFilter) #define IFilterGraph2_ReconnectEx(This,ppin,pmt) \ (This)->lpVtbl -> ReconnectEx(This,ppin,pmt) #define IFilterGraph2_RenderEx(This,pPinOut,dwFlags,pvContext) \ (This)->lpVtbl -> RenderEx(This,pPinOut,dwFlags,pvContext) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IFilterGraph2_AddSourceFilterForMoniker_Proxy( IFilterGraph2 * This, /* [in] */ IMoniker *pMoniker, /* [in] */ IBindCtx *pCtx, /* [unique][in] */ LPCWSTR lpcwstrFilterName, /* [out] */ IBaseFilter **ppFilter); void __RPC_STUB IFilterGraph2_AddSourceFilterForMoniker_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IFilterGraph2_ReconnectEx_Proxy( IFilterGraph2 * This, /* [in] */ IPin *ppin, /* [unique][in] */ const AM_MEDIA_TYPE *pmt); void __RPC_STUB IFilterGraph2_ReconnectEx_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IFilterGraph2_RenderEx_Proxy( IFilterGraph2 * This, /* [in] */ IPin *pPinOut, /* [in] */ DWORD dwFlags, /* [out][in] */ DWORD *pvContext); void __RPC_STUB IFilterGraph2_RenderEx_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IFilterGraph2_INTERFACE_DEFINED__ */ #ifndef __IStreamBuilder_INTERFACE_DEFINED__ #define __IStreamBuilder_INTERFACE_DEFINED__ /* interface IStreamBuilder */ /* [unique][uuid][local][object] */ EXTERN_C const IID IID_IStreamBuilder; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("56a868bf-0ad4-11ce-b03a-0020af0ba770") IStreamBuilder : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE Render( /* [in] */ IPin *ppinOut, /* [in] */ IGraphBuilder *pGraph) = 0; virtual HRESULT STDMETHODCALLTYPE Backout( /* [in] */ IPin *ppinOut, /* [in] */ IGraphBuilder *pGraph) = 0; }; #else /* C style interface */ typedef struct IStreamBuilderVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IStreamBuilder * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IStreamBuilder * This); ULONG ( STDMETHODCALLTYPE *Release )( IStreamBuilder * This); HRESULT ( STDMETHODCALLTYPE *Render )( IStreamBuilder * This, /* [in] */ IPin *ppinOut, /* [in] */ IGraphBuilder *pGraph); HRESULT ( STDMETHODCALLTYPE *Backout )( IStreamBuilder * This, /* [in] */ IPin *ppinOut, /* [in] */ IGraphBuilder *pGraph); END_INTERFACE } IStreamBuilderVtbl; interface IStreamBuilder { CONST_VTBL struct IStreamBuilderVtbl *lpVtbl; }; #ifdef COBJMACROS #define IStreamBuilder_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IStreamBuilder_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IStreamBuilder_Release(This) \ (This)->lpVtbl -> Release(This) #define IStreamBuilder_Render(This,ppinOut,pGraph) \ (This)->lpVtbl -> Render(This,ppinOut,pGraph) #define IStreamBuilder_Backout(This,ppinOut,pGraph) \ (This)->lpVtbl -> Backout(This,ppinOut,pGraph) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IStreamBuilder_Render_Proxy( IStreamBuilder * This, /* [in] */ IPin *ppinOut, /* [in] */ IGraphBuilder *pGraph); void __RPC_STUB IStreamBuilder_Render_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IStreamBuilder_Backout_Proxy( IStreamBuilder * This, /* [in] */ IPin *ppinOut, /* [in] */ IGraphBuilder *pGraph); void __RPC_STUB IStreamBuilder_Backout_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IStreamBuilder_INTERFACE_DEFINED__ */ #ifndef __IAsyncReader_INTERFACE_DEFINED__ #define __IAsyncReader_INTERFACE_DEFINED__ /* interface IAsyncReader */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IAsyncReader; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("56a868aa-0ad4-11ce-b03a-0020af0ba770") IAsyncReader : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE RequestAllocator( /* [in] */ IMemAllocator *pPreferred, /* [in] */ ALLOCATOR_PROPERTIES *pProps, /* [out] */ IMemAllocator **ppActual) = 0; virtual HRESULT STDMETHODCALLTYPE Request( /* [in] */ IMediaSample *pSample, /* [in] */ DWORD_PTR dwUser) = 0; virtual HRESULT STDMETHODCALLTYPE WaitForNext( /* [in] */ DWORD dwTimeout, /* [out] */ IMediaSample **ppSample, /* [out] */ DWORD_PTR *pdwUser) = 0; virtual HRESULT STDMETHODCALLTYPE SyncReadAligned( /* [in] */ IMediaSample *pSample) = 0; virtual HRESULT STDMETHODCALLTYPE SyncRead( /* [in] */ LONGLONG llPosition, /* [in] */ LONG lLength, /* [size_is][out] */ BYTE *pBuffer) = 0; virtual HRESULT STDMETHODCALLTYPE Length( /* [out] */ LONGLONG *pTotal, /* [out] */ LONGLONG *pAvailable) = 0; virtual HRESULT STDMETHODCALLTYPE BeginFlush( void) = 0; virtual HRESULT STDMETHODCALLTYPE EndFlush( void) = 0; }; #else /* C style interface */ typedef struct IAsyncReaderVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAsyncReader * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAsyncReader * This); ULONG ( STDMETHODCALLTYPE *Release )( IAsyncReader * This); HRESULT ( STDMETHODCALLTYPE *RequestAllocator )( IAsyncReader * This, /* [in] */ IMemAllocator *pPreferred, /* [in] */ ALLOCATOR_PROPERTIES *pProps, /* [out] */ IMemAllocator **ppActual); HRESULT ( STDMETHODCALLTYPE *Request )( IAsyncReader * This, /* [in] */ IMediaSample *pSample, /* [in] */ DWORD_PTR dwUser); HRESULT ( STDMETHODCALLTYPE *WaitForNext )( IAsyncReader * This, /* [in] */ DWORD dwTimeout, /* [out] */ IMediaSample **ppSample, /* [out] */ DWORD_PTR *pdwUser); HRESULT ( STDMETHODCALLTYPE *SyncReadAligned )( IAsyncReader * This, /* [in] */ IMediaSample *pSample); HRESULT ( STDMETHODCALLTYPE *SyncRead )( IAsyncReader * This, /* [in] */ LONGLONG llPosition, /* [in] */ LONG lLength, /* [size_is][out] */ BYTE *pBuffer); HRESULT ( STDMETHODCALLTYPE *Length )( IAsyncReader * This, /* [out] */ LONGLONG *pTotal, /* [out] */ LONGLONG *pAvailable); HRESULT ( STDMETHODCALLTYPE *BeginFlush )( IAsyncReader * This); HRESULT ( STDMETHODCALLTYPE *EndFlush )( IAsyncReader * This); END_INTERFACE } IAsyncReaderVtbl; interface IAsyncReader { CONST_VTBL struct IAsyncReaderVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAsyncReader_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAsyncReader_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAsyncReader_Release(This) \ (This)->lpVtbl -> Release(This) #define IAsyncReader_RequestAllocator(This,pPreferred,pProps,ppActual) \ (This)->lpVtbl -> RequestAllocator(This,pPreferred,pProps,ppActual) #define IAsyncReader_Request(This,pSample,dwUser) \ (This)->lpVtbl -> Request(This,pSample,dwUser) #define IAsyncReader_WaitForNext(This,dwTimeout,ppSample,pdwUser) \ (This)->lpVtbl -> WaitForNext(This,dwTimeout,ppSample,pdwUser) #define IAsyncReader_SyncReadAligned(This,pSample) \ (This)->lpVtbl -> SyncReadAligned(This,pSample) #define IAsyncReader_SyncRead(This,llPosition,lLength,pBuffer) \ (This)->lpVtbl -> SyncRead(This,llPosition,lLength,pBuffer) #define IAsyncReader_Length(This,pTotal,pAvailable) \ (This)->lpVtbl -> Length(This,pTotal,pAvailable) #define IAsyncReader_BeginFlush(This) \ (This)->lpVtbl -> BeginFlush(This) #define IAsyncReader_EndFlush(This) \ (This)->lpVtbl -> EndFlush(This) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAsyncReader_RequestAllocator_Proxy( IAsyncReader * This, /* [in] */ IMemAllocator *pPreferred, /* [in] */ ALLOCATOR_PROPERTIES *pProps, /* [out] */ IMemAllocator **ppActual); void __RPC_STUB IAsyncReader_RequestAllocator_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAsyncReader_Request_Proxy( IAsyncReader * This, /* [in] */ IMediaSample *pSample, /* [in] */ DWORD_PTR dwUser); void __RPC_STUB IAsyncReader_Request_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAsyncReader_WaitForNext_Proxy( IAsyncReader * This, /* [in] */ DWORD dwTimeout, /* [out] */ IMediaSample **ppSample, /* [out] */ DWORD_PTR *pdwUser); void __RPC_STUB IAsyncReader_WaitForNext_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAsyncReader_SyncReadAligned_Proxy( IAsyncReader * This, /* [in] */ IMediaSample *pSample); void __RPC_STUB IAsyncReader_SyncReadAligned_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAsyncReader_SyncRead_Proxy( IAsyncReader * This, /* [in] */ LONGLONG llPosition, /* [in] */ LONG lLength, /* [size_is][out] */ BYTE *pBuffer); void __RPC_STUB IAsyncReader_SyncRead_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAsyncReader_Length_Proxy( IAsyncReader * This, /* [out] */ LONGLONG *pTotal, /* [out] */ LONGLONG *pAvailable); void __RPC_STUB IAsyncReader_Length_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAsyncReader_BeginFlush_Proxy( IAsyncReader * This); void __RPC_STUB IAsyncReader_BeginFlush_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAsyncReader_EndFlush_Proxy( IAsyncReader * This); void __RPC_STUB IAsyncReader_EndFlush_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAsyncReader_INTERFACE_DEFINED__ */ #ifndef __IGraphVersion_INTERFACE_DEFINED__ #define __IGraphVersion_INTERFACE_DEFINED__ /* interface IGraphVersion */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IGraphVersion; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("56a868ab-0ad4-11ce-b03a-0020af0ba770") IGraphVersion : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE QueryVersion( LONG *pVersion) = 0; }; #else /* C style interface */ typedef struct IGraphVersionVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IGraphVersion * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IGraphVersion * This); ULONG ( STDMETHODCALLTYPE *Release )( IGraphVersion * This); HRESULT ( STDMETHODCALLTYPE *QueryVersion )( IGraphVersion * This, LONG *pVersion); END_INTERFACE } IGraphVersionVtbl; interface IGraphVersion { CONST_VTBL struct IGraphVersionVtbl *lpVtbl; }; #ifdef COBJMACROS #define IGraphVersion_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IGraphVersion_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IGraphVersion_Release(This) \ (This)->lpVtbl -> Release(This) #define IGraphVersion_QueryVersion(This,pVersion) \ (This)->lpVtbl -> QueryVersion(This,pVersion) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IGraphVersion_QueryVersion_Proxy( IGraphVersion * This, LONG *pVersion); void __RPC_STUB IGraphVersion_QueryVersion_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IGraphVersion_INTERFACE_DEFINED__ */ #ifndef __IResourceConsumer_INTERFACE_DEFINED__ #define __IResourceConsumer_INTERFACE_DEFINED__ /* interface IResourceConsumer */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IResourceConsumer; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("56a868ad-0ad4-11ce-b03a-0020af0ba770") IResourceConsumer : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE AcquireResource( /* [in] */ LONG idResource) = 0; virtual HRESULT STDMETHODCALLTYPE ReleaseResource( /* [in] */ LONG idResource) = 0; }; #else /* C style interface */ typedef struct IResourceConsumerVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IResourceConsumer * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IResourceConsumer * This); ULONG ( STDMETHODCALLTYPE *Release )( IResourceConsumer * This); HRESULT ( STDMETHODCALLTYPE *AcquireResource )( IResourceConsumer * This, /* [in] */ LONG idResource); HRESULT ( STDMETHODCALLTYPE *ReleaseResource )( IResourceConsumer * This, /* [in] */ LONG idResource); END_INTERFACE } IResourceConsumerVtbl; interface IResourceConsumer { CONST_VTBL struct IResourceConsumerVtbl *lpVtbl; }; #ifdef COBJMACROS #define IResourceConsumer_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IResourceConsumer_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IResourceConsumer_Release(This) \ (This)->lpVtbl -> Release(This) #define IResourceConsumer_AcquireResource(This,idResource) \ (This)->lpVtbl -> AcquireResource(This,idResource) #define IResourceConsumer_ReleaseResource(This,idResource) \ (This)->lpVtbl -> ReleaseResource(This,idResource) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IResourceConsumer_AcquireResource_Proxy( IResourceConsumer * This, /* [in] */ LONG idResource); void __RPC_STUB IResourceConsumer_AcquireResource_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IResourceConsumer_ReleaseResource_Proxy( IResourceConsumer * This, /* [in] */ LONG idResource); void __RPC_STUB IResourceConsumer_ReleaseResource_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IResourceConsumer_INTERFACE_DEFINED__ */ #ifndef __IResourceManager_INTERFACE_DEFINED__ #define __IResourceManager_INTERFACE_DEFINED__ /* interface IResourceManager */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IResourceManager; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("56a868ac-0ad4-11ce-b03a-0020af0ba770") IResourceManager : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE Register( /* [in] */ LPCWSTR pName, /* [in] */ LONG cResource, /* [out] */ LONG *plToken) = 0; virtual HRESULT STDMETHODCALLTYPE RegisterGroup( /* [in] */ LPCWSTR pName, /* [in] */ LONG cResource, /* [size_is][in] */ LONG *palTokens, /* [out] */ LONG *plToken) = 0; virtual HRESULT STDMETHODCALLTYPE RequestResource( /* [in] */ LONG idResource, /* [in] */ IUnknown *pFocusObject, /* [in] */ IResourceConsumer *pConsumer) = 0; virtual HRESULT STDMETHODCALLTYPE NotifyAcquire( /* [in] */ LONG idResource, /* [in] */ IResourceConsumer *pConsumer, /* [in] */ HRESULT hr) = 0; virtual HRESULT STDMETHODCALLTYPE NotifyRelease( /* [in] */ LONG idResource, /* [in] */ IResourceConsumer *pConsumer, /* [in] */ BOOL bStillWant) = 0; virtual HRESULT STDMETHODCALLTYPE CancelRequest( /* [in] */ LONG idResource, /* [in] */ IResourceConsumer *pConsumer) = 0; virtual HRESULT STDMETHODCALLTYPE SetFocus( /* [in] */ IUnknown *pFocusObject) = 0; virtual HRESULT STDMETHODCALLTYPE ReleaseFocus( /* [in] */ IUnknown *pFocusObject) = 0; }; #else /* C style interface */ typedef struct IResourceManagerVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IResourceManager * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IResourceManager * This); ULONG ( STDMETHODCALLTYPE *Release )( IResourceManager * This); HRESULT ( STDMETHODCALLTYPE *Register )( IResourceManager * This, /* [in] */ LPCWSTR pName, /* [in] */ LONG cResource, /* [out] */ LONG *plToken); HRESULT ( STDMETHODCALLTYPE *RegisterGroup )( IResourceManager * This, /* [in] */ LPCWSTR pName, /* [in] */ LONG cResource, /* [size_is][in] */ LONG *palTokens, /* [out] */ LONG *plToken); HRESULT ( STDMETHODCALLTYPE *RequestResource )( IResourceManager * This, /* [in] */ LONG idResource, /* [in] */ IUnknown *pFocusObject, /* [in] */ IResourceConsumer *pConsumer); HRESULT ( STDMETHODCALLTYPE *NotifyAcquire )( IResourceManager * This, /* [in] */ LONG idResource, /* [in] */ IResourceConsumer *pConsumer, /* [in] */ HRESULT hr); HRESULT ( STDMETHODCALLTYPE *NotifyRelease )( IResourceManager * This, /* [in] */ LONG idResource, /* [in] */ IResourceConsumer *pConsumer, /* [in] */ BOOL bStillWant); HRESULT ( STDMETHODCALLTYPE *CancelRequest )( IResourceManager * This, /* [in] */ LONG idResource, /* [in] */ IResourceConsumer *pConsumer); HRESULT ( STDMETHODCALLTYPE *SetFocus )( IResourceManager * This, /* [in] */ IUnknown *pFocusObject); HRESULT ( STDMETHODCALLTYPE *ReleaseFocus )( IResourceManager * This, /* [in] */ IUnknown *pFocusObject); END_INTERFACE } IResourceManagerVtbl; interface IResourceManager { CONST_VTBL struct IResourceManagerVtbl *lpVtbl; }; #ifdef COBJMACROS #define IResourceManager_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IResourceManager_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IResourceManager_Release(This) \ (This)->lpVtbl -> Release(This) #define IResourceManager_Register(This,pName,cResource,plToken) \ (This)->lpVtbl -> Register(This,pName,cResource,plToken) #define IResourceManager_RegisterGroup(This,pName,cResource,palTokens,plToken) \ (This)->lpVtbl -> RegisterGroup(This,pName,cResource,palTokens,plToken) #define IResourceManager_RequestResource(This,idResource,pFocusObject,pConsumer) \ (This)->lpVtbl -> RequestResource(This,idResource,pFocusObject,pConsumer) #define IResourceManager_NotifyAcquire(This,idResource,pConsumer,hr) \ (This)->lpVtbl -> NotifyAcquire(This,idResource,pConsumer,hr) #define IResourceManager_NotifyRelease(This,idResource,pConsumer,bStillWant) \ (This)->lpVtbl -> NotifyRelease(This,idResource,pConsumer,bStillWant) #define IResourceManager_CancelRequest(This,idResource,pConsumer) \ (This)->lpVtbl -> CancelRequest(This,idResource,pConsumer) #define IResourceManager_SetFocus(This,pFocusObject) \ (This)->lpVtbl -> SetFocus(This,pFocusObject) #define IResourceManager_ReleaseFocus(This,pFocusObject) \ (This)->lpVtbl -> ReleaseFocus(This,pFocusObject) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IResourceManager_Register_Proxy( IResourceManager * This, /* [in] */ LPCWSTR pName, /* [in] */ LONG cResource, /* [out] */ LONG *plToken); void __RPC_STUB IResourceManager_Register_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IResourceManager_RegisterGroup_Proxy( IResourceManager * This, /* [in] */ LPCWSTR pName, /* [in] */ LONG cResource, /* [size_is][in] */ LONG *palTokens, /* [out] */ LONG *plToken); void __RPC_STUB IResourceManager_RegisterGroup_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IResourceManager_RequestResource_Proxy( IResourceManager * This, /* [in] */ LONG idResource, /* [in] */ IUnknown *pFocusObject, /* [in] */ IResourceConsumer *pConsumer); void __RPC_STUB IResourceManager_RequestResource_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IResourceManager_NotifyAcquire_Proxy( IResourceManager * This, /* [in] */ LONG idResource, /* [in] */ IResourceConsumer *pConsumer, /* [in] */ HRESULT hr); void __RPC_STUB IResourceManager_NotifyAcquire_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IResourceManager_NotifyRelease_Proxy( IResourceManager * This, /* [in] */ LONG idResource, /* [in] */ IResourceConsumer *pConsumer, /* [in] */ BOOL bStillWant); void __RPC_STUB IResourceManager_NotifyRelease_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IResourceManager_CancelRequest_Proxy( IResourceManager * This, /* [in] */ LONG idResource, /* [in] */ IResourceConsumer *pConsumer); void __RPC_STUB IResourceManager_CancelRequest_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IResourceManager_SetFocus_Proxy( IResourceManager * This, /* [in] */ IUnknown *pFocusObject); void __RPC_STUB IResourceManager_SetFocus_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IResourceManager_ReleaseFocus_Proxy( IResourceManager * This, /* [in] */ IUnknown *pFocusObject); void __RPC_STUB IResourceManager_ReleaseFocus_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IResourceManager_INTERFACE_DEFINED__ */ #ifndef __IDistributorNotify_INTERFACE_DEFINED__ #define __IDistributorNotify_INTERFACE_DEFINED__ /* interface IDistributorNotify */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IDistributorNotify; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("56a868af-0ad4-11ce-b03a-0020af0ba770") IDistributorNotify : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE Stop( void) = 0; virtual HRESULT STDMETHODCALLTYPE Pause( void) = 0; virtual HRESULT STDMETHODCALLTYPE Run( REFERENCE_TIME tStart) = 0; virtual HRESULT STDMETHODCALLTYPE SetSyncSource( /* [in] */ IReferenceClock *pClock) = 0; virtual HRESULT STDMETHODCALLTYPE NotifyGraphChange( void) = 0; }; #else /* C style interface */ typedef struct IDistributorNotifyVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IDistributorNotify * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IDistributorNotify * This); ULONG ( STDMETHODCALLTYPE *Release )( IDistributorNotify * This); HRESULT ( STDMETHODCALLTYPE *Stop )( IDistributorNotify * This); HRESULT ( STDMETHODCALLTYPE *Pause )( IDistributorNotify * This); HRESULT ( STDMETHODCALLTYPE *Run )( IDistributorNotify * This, REFERENCE_TIME tStart); HRESULT ( STDMETHODCALLTYPE *SetSyncSource )( IDistributorNotify * This, /* [in] */ IReferenceClock *pClock); HRESULT ( STDMETHODCALLTYPE *NotifyGraphChange )( IDistributorNotify * This); END_INTERFACE } IDistributorNotifyVtbl; interface IDistributorNotify { CONST_VTBL struct IDistributorNotifyVtbl *lpVtbl; }; #ifdef COBJMACROS #define IDistributorNotify_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IDistributorNotify_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IDistributorNotify_Release(This) \ (This)->lpVtbl -> Release(This) #define IDistributorNotify_Stop(This) \ (This)->lpVtbl -> Stop(This) #define IDistributorNotify_Pause(This) \ (This)->lpVtbl -> Pause(This) #define IDistributorNotify_Run(This,tStart) \ (This)->lpVtbl -> Run(This,tStart) #define IDistributorNotify_SetSyncSource(This,pClock) \ (This)->lpVtbl -> SetSyncSource(This,pClock) #define IDistributorNotify_NotifyGraphChange(This) \ (This)->lpVtbl -> NotifyGraphChange(This) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IDistributorNotify_Stop_Proxy( IDistributorNotify * This); void __RPC_STUB IDistributorNotify_Stop_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDistributorNotify_Pause_Proxy( IDistributorNotify * This); void __RPC_STUB IDistributorNotify_Pause_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDistributorNotify_Run_Proxy( IDistributorNotify * This, REFERENCE_TIME tStart); void __RPC_STUB IDistributorNotify_Run_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDistributorNotify_SetSyncSource_Proxy( IDistributorNotify * This, /* [in] */ IReferenceClock *pClock); void __RPC_STUB IDistributorNotify_SetSyncSource_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDistributorNotify_NotifyGraphChange_Proxy( IDistributorNotify * This); void __RPC_STUB IDistributorNotify_NotifyGraphChange_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IDistributorNotify_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0155 */ /* [local] */ typedef /* [public] */ enum __MIDL___MIDL_itf_strmif_0155_0001 { AM_STREAM_INFO_START_DEFINED = 0x1, AM_STREAM_INFO_STOP_DEFINED = 0x2, AM_STREAM_INFO_DISCARDING = 0x4, AM_STREAM_INFO_STOP_SEND_EXTRA = 0x10 } AM_STREAM_INFO_FLAGS; typedef /* [public][public] */ struct __MIDL___MIDL_itf_strmif_0155_0002 { REFERENCE_TIME tStart; REFERENCE_TIME tStop; DWORD dwStartCookie; DWORD dwStopCookie; DWORD dwFlags; } AM_STREAM_INFO; extern RPC_IF_HANDLE __MIDL_itf_strmif_0155_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0155_v0_0_s_ifspec; #ifndef __IAMStreamControl_INTERFACE_DEFINED__ #define __IAMStreamControl_INTERFACE_DEFINED__ /* interface IAMStreamControl */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IAMStreamControl; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("36b73881-c2c8-11cf-8b46-00805f6cef60") IAMStreamControl : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE StartAt( /* [in] */ const REFERENCE_TIME *ptStart, /* [in] */ DWORD dwCookie) = 0; virtual HRESULT STDMETHODCALLTYPE StopAt( /* [in] */ const REFERENCE_TIME *ptStop, /* [in] */ BOOL bSendExtra, /* [in] */ DWORD dwCookie) = 0; virtual HRESULT STDMETHODCALLTYPE GetInfo( /* [out] */ AM_STREAM_INFO *pInfo) = 0; }; #else /* C style interface */ typedef struct IAMStreamControlVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMStreamControl * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMStreamControl * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMStreamControl * This); HRESULT ( STDMETHODCALLTYPE *StartAt )( IAMStreamControl * This, /* [in] */ const REFERENCE_TIME *ptStart, /* [in] */ DWORD dwCookie); HRESULT ( STDMETHODCALLTYPE *StopAt )( IAMStreamControl * This, /* [in] */ const REFERENCE_TIME *ptStop, /* [in] */ BOOL bSendExtra, /* [in] */ DWORD dwCookie); HRESULT ( STDMETHODCALLTYPE *GetInfo )( IAMStreamControl * This, /* [out] */ AM_STREAM_INFO *pInfo); END_INTERFACE } IAMStreamControlVtbl; interface IAMStreamControl { CONST_VTBL struct IAMStreamControlVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMStreamControl_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMStreamControl_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMStreamControl_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMStreamControl_StartAt(This,ptStart,dwCookie) \ (This)->lpVtbl -> StartAt(This,ptStart,dwCookie) #define IAMStreamControl_StopAt(This,ptStop,bSendExtra,dwCookie) \ (This)->lpVtbl -> StopAt(This,ptStop,bSendExtra,dwCookie) #define IAMStreamControl_GetInfo(This,pInfo) \ (This)->lpVtbl -> GetInfo(This,pInfo) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMStreamControl_StartAt_Proxy( IAMStreamControl * This, /* [in] */ const REFERENCE_TIME *ptStart, /* [in] */ DWORD dwCookie); void __RPC_STUB IAMStreamControl_StartAt_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMStreamControl_StopAt_Proxy( IAMStreamControl * This, /* [in] */ const REFERENCE_TIME *ptStop, /* [in] */ BOOL bSendExtra, /* [in] */ DWORD dwCookie); void __RPC_STUB IAMStreamControl_StopAt_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMStreamControl_GetInfo_Proxy( IAMStreamControl * This, /* [out] */ AM_STREAM_INFO *pInfo); void __RPC_STUB IAMStreamControl_GetInfo_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMStreamControl_INTERFACE_DEFINED__ */ #ifndef __ISeekingPassThru_INTERFACE_DEFINED__ #define __ISeekingPassThru_INTERFACE_DEFINED__ /* interface ISeekingPassThru */ /* [unique][uuid][object] */ EXTERN_C const IID IID_ISeekingPassThru; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("36b73883-c2c8-11cf-8b46-00805f6cef60") ISeekingPassThru : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE Init( /* [in] */ BOOL bSupportRendering, /* [in] */ IPin *pPin) = 0; }; #else /* C style interface */ typedef struct ISeekingPassThruVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( ISeekingPassThru * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( ISeekingPassThru * This); ULONG ( STDMETHODCALLTYPE *Release )( ISeekingPassThru * This); HRESULT ( STDMETHODCALLTYPE *Init )( ISeekingPassThru * This, /* [in] */ BOOL bSupportRendering, /* [in] */ IPin *pPin); END_INTERFACE } ISeekingPassThruVtbl; interface ISeekingPassThru { CONST_VTBL struct ISeekingPassThruVtbl *lpVtbl; }; #ifdef COBJMACROS #define ISeekingPassThru_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define ISeekingPassThru_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define ISeekingPassThru_Release(This) \ (This)->lpVtbl -> Release(This) #define ISeekingPassThru_Init(This,bSupportRendering,pPin) \ (This)->lpVtbl -> Init(This,bSupportRendering,pPin) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE ISeekingPassThru_Init_Proxy( ISeekingPassThru * This, /* [in] */ BOOL bSupportRendering, /* [in] */ IPin *pPin); void __RPC_STUB ISeekingPassThru_Init_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __ISeekingPassThru_INTERFACE_DEFINED__ */ #ifndef __IAMStreamConfig_INTERFACE_DEFINED__ #define __IAMStreamConfig_INTERFACE_DEFINED__ /* interface IAMStreamConfig */ /* [unique][uuid][object] */ typedef struct _VIDEO_STREAM_CONFIG_CAPS { GUID guid; ULONG VideoStandard; SIZE InputSize; SIZE MinCroppingSize; SIZE MaxCroppingSize; int CropGranularityX; int CropGranularityY; int CropAlignX; int CropAlignY; SIZE MinOutputSize; SIZE MaxOutputSize; int OutputGranularityX; int OutputGranularityY; int StretchTapsX; int StretchTapsY; int ShrinkTapsX; int ShrinkTapsY; LONGLONG MinFrameInterval; LONGLONG MaxFrameInterval; LONG MinBitsPerSecond; LONG MaxBitsPerSecond; } VIDEO_STREAM_CONFIG_CAPS; typedef struct _AUDIO_STREAM_CONFIG_CAPS { GUID guid; ULONG MinimumChannels; ULONG MaximumChannels; ULONG ChannelsGranularity; ULONG MinimumBitsPerSample; ULONG MaximumBitsPerSample; ULONG BitsPerSampleGranularity; ULONG MinimumSampleFrequency; ULONG MaximumSampleFrequency; ULONG SampleFrequencyGranularity; } AUDIO_STREAM_CONFIG_CAPS; EXTERN_C const IID IID_IAMStreamConfig; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("C6E13340-30AC-11d0-A18C-00A0C9118956") IAMStreamConfig : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE SetFormat( /* [in] */ AM_MEDIA_TYPE *pmt) = 0; virtual HRESULT STDMETHODCALLTYPE GetFormat( /* [out] */ AM_MEDIA_TYPE **ppmt) = 0; virtual HRESULT STDMETHODCALLTYPE GetNumberOfCapabilities( /* [out] */ int *piCount, /* [out] */ int *piSize) = 0; virtual HRESULT STDMETHODCALLTYPE GetStreamCaps( /* [in] */ int iIndex, /* [out] */ AM_MEDIA_TYPE **ppmt, /* [out] */ BYTE *pSCC) = 0; }; #else /* C style interface */ typedef struct IAMStreamConfigVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMStreamConfig * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMStreamConfig * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMStreamConfig * This); HRESULT ( STDMETHODCALLTYPE *SetFormat )( IAMStreamConfig * This, /* [in] */ AM_MEDIA_TYPE *pmt); HRESULT ( STDMETHODCALLTYPE *GetFormat )( IAMStreamConfig * This, /* [out] */ AM_MEDIA_TYPE **ppmt); HRESULT ( STDMETHODCALLTYPE *GetNumberOfCapabilities )( IAMStreamConfig * This, /* [out] */ int *piCount, /* [out] */ int *piSize); HRESULT ( STDMETHODCALLTYPE *GetStreamCaps )( IAMStreamConfig * This, /* [in] */ int iIndex, /* [out] */ AM_MEDIA_TYPE **ppmt, /* [out] */ BYTE *pSCC); END_INTERFACE } IAMStreamConfigVtbl; interface IAMStreamConfig { CONST_VTBL struct IAMStreamConfigVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMStreamConfig_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMStreamConfig_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMStreamConfig_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMStreamConfig_SetFormat(This,pmt) \ (This)->lpVtbl -> SetFormat(This,pmt) #define IAMStreamConfig_GetFormat(This,ppmt) \ (This)->lpVtbl -> GetFormat(This,ppmt) #define IAMStreamConfig_GetNumberOfCapabilities(This,piCount,piSize) \ (This)->lpVtbl -> GetNumberOfCapabilities(This,piCount,piSize) #define IAMStreamConfig_GetStreamCaps(This,iIndex,ppmt,pSCC) \ (This)->lpVtbl -> GetStreamCaps(This,iIndex,ppmt,pSCC) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMStreamConfig_SetFormat_Proxy( IAMStreamConfig * This, /* [in] */ AM_MEDIA_TYPE *pmt); void __RPC_STUB IAMStreamConfig_SetFormat_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMStreamConfig_GetFormat_Proxy( IAMStreamConfig * This, /* [out] */ AM_MEDIA_TYPE **ppmt); void __RPC_STUB IAMStreamConfig_GetFormat_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMStreamConfig_GetNumberOfCapabilities_Proxy( IAMStreamConfig * This, /* [out] */ int *piCount, /* [out] */ int *piSize); void __RPC_STUB IAMStreamConfig_GetNumberOfCapabilities_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMStreamConfig_GetStreamCaps_Proxy( IAMStreamConfig * This, /* [in] */ int iIndex, /* [out] */ AM_MEDIA_TYPE **ppmt, /* [out] */ BYTE *pSCC); void __RPC_STUB IAMStreamConfig_GetStreamCaps_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMStreamConfig_INTERFACE_DEFINED__ */ #ifndef __IConfigInterleaving_INTERFACE_DEFINED__ #define __IConfigInterleaving_INTERFACE_DEFINED__ /* interface IConfigInterleaving */ /* [unique][uuid][object] */ typedef /* [public][public][public] */ enum __MIDL_IConfigInterleaving_0001 { INTERLEAVE_NONE = 0, INTERLEAVE_CAPTURE = INTERLEAVE_NONE + 1, INTERLEAVE_FULL = INTERLEAVE_CAPTURE + 1, INTERLEAVE_NONE_BUFFERED = INTERLEAVE_FULL + 1 } InterleavingMode; EXTERN_C const IID IID_IConfigInterleaving; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("BEE3D220-157B-11d0-BD23-00A0C911CE86") IConfigInterleaving : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE put_Mode( /* [in] */ InterleavingMode mode) = 0; virtual HRESULT STDMETHODCALLTYPE get_Mode( /* [out] */ InterleavingMode *pMode) = 0; virtual HRESULT STDMETHODCALLTYPE put_Interleaving( /* [in] */ const REFERENCE_TIME *prtInterleave, /* [in] */ const REFERENCE_TIME *prtPreroll) = 0; virtual HRESULT STDMETHODCALLTYPE get_Interleaving( /* [out] */ REFERENCE_TIME *prtInterleave, /* [out] */ REFERENCE_TIME *prtPreroll) = 0; }; #else /* C style interface */ typedef struct IConfigInterleavingVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IConfigInterleaving * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IConfigInterleaving * This); ULONG ( STDMETHODCALLTYPE *Release )( IConfigInterleaving * This); HRESULT ( STDMETHODCALLTYPE *put_Mode )( IConfigInterleaving * This, /* [in] */ InterleavingMode mode); HRESULT ( STDMETHODCALLTYPE *get_Mode )( IConfigInterleaving * This, /* [out] */ InterleavingMode *pMode); HRESULT ( STDMETHODCALLTYPE *put_Interleaving )( IConfigInterleaving * This, /* [in] */ const REFERENCE_TIME *prtInterleave, /* [in] */ const REFERENCE_TIME *prtPreroll); HRESULT ( STDMETHODCALLTYPE *get_Interleaving )( IConfigInterleaving * This, /* [out] */ REFERENCE_TIME *prtInterleave, /* [out] */ REFERENCE_TIME *prtPreroll); END_INTERFACE } IConfigInterleavingVtbl; interface IConfigInterleaving { CONST_VTBL struct IConfigInterleavingVtbl *lpVtbl; }; #ifdef COBJMACROS #define IConfigInterleaving_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IConfigInterleaving_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IConfigInterleaving_Release(This) \ (This)->lpVtbl -> Release(This) #define IConfigInterleaving_put_Mode(This,mode) \ (This)->lpVtbl -> put_Mode(This,mode) #define IConfigInterleaving_get_Mode(This,pMode) \ (This)->lpVtbl -> get_Mode(This,pMode) #define IConfigInterleaving_put_Interleaving(This,prtInterleave,prtPreroll) \ (This)->lpVtbl -> put_Interleaving(This,prtInterleave,prtPreroll) #define IConfigInterleaving_get_Interleaving(This,prtInterleave,prtPreroll) \ (This)->lpVtbl -> get_Interleaving(This,prtInterleave,prtPreroll) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IConfigInterleaving_put_Mode_Proxy( IConfigInterleaving * This, /* [in] */ InterleavingMode mode); void __RPC_STUB IConfigInterleaving_put_Mode_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IConfigInterleaving_get_Mode_Proxy( IConfigInterleaving * This, /* [out] */ InterleavingMode *pMode); void __RPC_STUB IConfigInterleaving_get_Mode_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IConfigInterleaving_put_Interleaving_Proxy( IConfigInterleaving * This, /* [in] */ const REFERENCE_TIME *prtInterleave, /* [in] */ const REFERENCE_TIME *prtPreroll); void __RPC_STUB IConfigInterleaving_put_Interleaving_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IConfigInterleaving_get_Interleaving_Proxy( IConfigInterleaving * This, /* [out] */ REFERENCE_TIME *prtInterleave, /* [out] */ REFERENCE_TIME *prtPreroll); void __RPC_STUB IConfigInterleaving_get_Interleaving_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IConfigInterleaving_INTERFACE_DEFINED__ */ #ifndef __IConfigAviMux_INTERFACE_DEFINED__ #define __IConfigAviMux_INTERFACE_DEFINED__ /* interface IConfigAviMux */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IConfigAviMux; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("5ACD6AA0-F482-11ce-8B67-00AA00A3F1A6") IConfigAviMux : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE SetMasterStream( /* [in] */ LONG iStream) = 0; virtual HRESULT STDMETHODCALLTYPE GetMasterStream( /* [out] */ LONG *pStream) = 0; virtual HRESULT STDMETHODCALLTYPE SetOutputCompatibilityIndex( /* [in] */ BOOL fOldIndex) = 0; virtual HRESULT STDMETHODCALLTYPE GetOutputCompatibilityIndex( /* [out] */ BOOL *pfOldIndex) = 0; }; #else /* C style interface */ typedef struct IConfigAviMuxVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IConfigAviMux * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IConfigAviMux * This); ULONG ( STDMETHODCALLTYPE *Release )( IConfigAviMux * This); HRESULT ( STDMETHODCALLTYPE *SetMasterStream )( IConfigAviMux * This, /* [in] */ LONG iStream); HRESULT ( STDMETHODCALLTYPE *GetMasterStream )( IConfigAviMux * This, /* [out] */ LONG *pStream); HRESULT ( STDMETHODCALLTYPE *SetOutputCompatibilityIndex )( IConfigAviMux * This, /* [in] */ BOOL fOldIndex); HRESULT ( STDMETHODCALLTYPE *GetOutputCompatibilityIndex )( IConfigAviMux * This, /* [out] */ BOOL *pfOldIndex); END_INTERFACE } IConfigAviMuxVtbl; interface IConfigAviMux { CONST_VTBL struct IConfigAviMuxVtbl *lpVtbl; }; #ifdef COBJMACROS #define IConfigAviMux_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IConfigAviMux_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IConfigAviMux_Release(This) \ (This)->lpVtbl -> Release(This) #define IConfigAviMux_SetMasterStream(This,iStream) \ (This)->lpVtbl -> SetMasterStream(This,iStream) #define IConfigAviMux_GetMasterStream(This,pStream) \ (This)->lpVtbl -> GetMasterStream(This,pStream) #define IConfigAviMux_SetOutputCompatibilityIndex(This,fOldIndex) \ (This)->lpVtbl -> SetOutputCompatibilityIndex(This,fOldIndex) #define IConfigAviMux_GetOutputCompatibilityIndex(This,pfOldIndex) \ (This)->lpVtbl -> GetOutputCompatibilityIndex(This,pfOldIndex) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IConfigAviMux_SetMasterStream_Proxy( IConfigAviMux * This, /* [in] */ LONG iStream); void __RPC_STUB IConfigAviMux_SetMasterStream_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IConfigAviMux_GetMasterStream_Proxy( IConfigAviMux * This, /* [out] */ LONG *pStream); void __RPC_STUB IConfigAviMux_GetMasterStream_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IConfigAviMux_SetOutputCompatibilityIndex_Proxy( IConfigAviMux * This, /* [in] */ BOOL fOldIndex); void __RPC_STUB IConfigAviMux_SetOutputCompatibilityIndex_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IConfigAviMux_GetOutputCompatibilityIndex_Proxy( IConfigAviMux * This, /* [out] */ BOOL *pfOldIndex); void __RPC_STUB IConfigAviMux_GetOutputCompatibilityIndex_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IConfigAviMux_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0162 */ /* [local] */ typedef /* [public] */ enum __MIDL___MIDL_itf_strmif_0162_0001 { CompressionCaps_CanQuality = 0x1, CompressionCaps_CanCrunch = 0x2, CompressionCaps_CanKeyFrame = 0x4, CompressionCaps_CanBFrame = 0x8, CompressionCaps_CanWindow = 0x10 } CompressionCaps; extern RPC_IF_HANDLE __MIDL_itf_strmif_0162_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0162_v0_0_s_ifspec; #ifndef __IAMVideoCompression_INTERFACE_DEFINED__ #define __IAMVideoCompression_INTERFACE_DEFINED__ /* interface IAMVideoCompression */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IAMVideoCompression; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("C6E13343-30AC-11d0-A18C-00A0C9118956") IAMVideoCompression : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE put_KeyFrameRate( /* [in] */ long KeyFrameRate) = 0; virtual HRESULT STDMETHODCALLTYPE get_KeyFrameRate( /* [out] */ long *pKeyFrameRate) = 0; virtual HRESULT STDMETHODCALLTYPE put_PFramesPerKeyFrame( /* [in] */ long PFramesPerKeyFrame) = 0; virtual HRESULT STDMETHODCALLTYPE get_PFramesPerKeyFrame( /* [out] */ long *pPFramesPerKeyFrame) = 0; virtual HRESULT STDMETHODCALLTYPE put_Quality( /* [in] */ double Quality) = 0; virtual HRESULT STDMETHODCALLTYPE get_Quality( /* [out] */ double *pQuality) = 0; virtual HRESULT STDMETHODCALLTYPE put_WindowSize( /* [in] */ DWORDLONG WindowSize) = 0; virtual HRESULT STDMETHODCALLTYPE get_WindowSize( /* [out] */ DWORDLONG *pWindowSize) = 0; virtual HRESULT STDMETHODCALLTYPE GetInfo( /* [size_is][out] */ WCHAR *pszVersion, /* [out][in] */ int *pcbVersion, /* [size_is][out] */ LPWSTR pszDescription, /* [out][in] */ int *pcbDescription, /* [out] */ long *pDefaultKeyFrameRate, /* [out] */ long *pDefaultPFramesPerKey, /* [out] */ double *pDefaultQuality, /* [out] */ long *pCapabilities) = 0; virtual HRESULT STDMETHODCALLTYPE OverrideKeyFrame( /* [in] */ long FrameNumber) = 0; virtual HRESULT STDMETHODCALLTYPE OverrideFrameSize( /* [in] */ long FrameNumber, /* [in] */ long Size) = 0; }; #else /* C style interface */ typedef struct IAMVideoCompressionVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMVideoCompression * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMVideoCompression * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMVideoCompression * This); HRESULT ( STDMETHODCALLTYPE *put_KeyFrameRate )( IAMVideoCompression * This, /* [in] */ long KeyFrameRate); HRESULT ( STDMETHODCALLTYPE *get_KeyFrameRate )( IAMVideoCompression * This, /* [out] */ long *pKeyFrameRate); HRESULT ( STDMETHODCALLTYPE *put_PFramesPerKeyFrame )( IAMVideoCompression * This, /* [in] */ long PFramesPerKeyFrame); HRESULT ( STDMETHODCALLTYPE *get_PFramesPerKeyFrame )( IAMVideoCompression * This, /* [out] */ long *pPFramesPerKeyFrame); HRESULT ( STDMETHODCALLTYPE *put_Quality )( IAMVideoCompression * This, /* [in] */ double Quality); HRESULT ( STDMETHODCALLTYPE *get_Quality )( IAMVideoCompression * This, /* [out] */ double *pQuality); HRESULT ( STDMETHODCALLTYPE *put_WindowSize )( IAMVideoCompression * This, /* [in] */ DWORDLONG WindowSize); HRESULT ( STDMETHODCALLTYPE *get_WindowSize )( IAMVideoCompression * This, /* [out] */ DWORDLONG *pWindowSize); HRESULT ( STDMETHODCALLTYPE *GetInfo )( IAMVideoCompression * This, /* [size_is][out] */ WCHAR *pszVersion, /* [out][in] */ int *pcbVersion, /* [size_is][out] */ LPWSTR pszDescription, /* [out][in] */ int *pcbDescription, /* [out] */ long *pDefaultKeyFrameRate, /* [out] */ long *pDefaultPFramesPerKey, /* [out] */ double *pDefaultQuality, /* [out] */ long *pCapabilities); HRESULT ( STDMETHODCALLTYPE *OverrideKeyFrame )( IAMVideoCompression * This, /* [in] */ long FrameNumber); HRESULT ( STDMETHODCALLTYPE *OverrideFrameSize )( IAMVideoCompression * This, /* [in] */ long FrameNumber, /* [in] */ long Size); END_INTERFACE } IAMVideoCompressionVtbl; interface IAMVideoCompression { CONST_VTBL struct IAMVideoCompressionVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMVideoCompression_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMVideoCompression_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMVideoCompression_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMVideoCompression_put_KeyFrameRate(This,KeyFrameRate) \ (This)->lpVtbl -> put_KeyFrameRate(This,KeyFrameRate) #define IAMVideoCompression_get_KeyFrameRate(This,pKeyFrameRate) \ (This)->lpVtbl -> get_KeyFrameRate(This,pKeyFrameRate) #define IAMVideoCompression_put_PFramesPerKeyFrame(This,PFramesPerKeyFrame) \ (This)->lpVtbl -> put_PFramesPerKeyFrame(This,PFramesPerKeyFrame) #define IAMVideoCompression_get_PFramesPerKeyFrame(This,pPFramesPerKeyFrame) \ (This)->lpVtbl -> get_PFramesPerKeyFrame(This,pPFramesPerKeyFrame) #define IAMVideoCompression_put_Quality(This,Quality) \ (This)->lpVtbl -> put_Quality(This,Quality) #define IAMVideoCompression_get_Quality(This,pQuality) \ (This)->lpVtbl -> get_Quality(This,pQuality) #define IAMVideoCompression_put_WindowSize(This,WindowSize) \ (This)->lpVtbl -> put_WindowSize(This,WindowSize) #define IAMVideoCompression_get_WindowSize(This,pWindowSize) \ (This)->lpVtbl -> get_WindowSize(This,pWindowSize) #define IAMVideoCompression_GetInfo(This,pszVersion,pcbVersion,pszDescription,pcbDescription,pDefaultKeyFrameRate,pDefaultPFramesPerKey,pDefaultQuality,pCapabilities) \ (This)->lpVtbl -> GetInfo(This,pszVersion,pcbVersion,pszDescription,pcbDescription,pDefaultKeyFrameRate,pDefaultPFramesPerKey,pDefaultQuality,pCapabilities) #define IAMVideoCompression_OverrideKeyFrame(This,FrameNumber) \ (This)->lpVtbl -> OverrideKeyFrame(This,FrameNumber) #define IAMVideoCompression_OverrideFrameSize(This,FrameNumber,Size) \ (This)->lpVtbl -> OverrideFrameSize(This,FrameNumber,Size) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMVideoCompression_put_KeyFrameRate_Proxy( IAMVideoCompression * This, /* [in] */ long KeyFrameRate); void __RPC_STUB IAMVideoCompression_put_KeyFrameRate_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMVideoCompression_get_KeyFrameRate_Proxy( IAMVideoCompression * This, /* [out] */ long *pKeyFrameRate); void __RPC_STUB IAMVideoCompression_get_KeyFrameRate_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMVideoCompression_put_PFramesPerKeyFrame_Proxy( IAMVideoCompression * This, /* [in] */ long PFramesPerKeyFrame); void __RPC_STUB IAMVideoCompression_put_PFramesPerKeyFrame_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMVideoCompression_get_PFramesPerKeyFrame_Proxy( IAMVideoCompression * This, /* [out] */ long *pPFramesPerKeyFrame); void __RPC_STUB IAMVideoCompression_get_PFramesPerKeyFrame_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMVideoCompression_put_Quality_Proxy( IAMVideoCompression * This, /* [in] */ double Quality); void __RPC_STUB IAMVideoCompression_put_Quality_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMVideoCompression_get_Quality_Proxy( IAMVideoCompression * This, /* [out] */ double *pQuality); void __RPC_STUB IAMVideoCompression_get_Quality_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMVideoCompression_put_WindowSize_Proxy( IAMVideoCompression * This, /* [in] */ DWORDLONG WindowSize); void __RPC_STUB IAMVideoCompression_put_WindowSize_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMVideoCompression_get_WindowSize_Proxy( IAMVideoCompression * This, /* [out] */ DWORDLONG *pWindowSize); void __RPC_STUB IAMVideoCompression_get_WindowSize_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMVideoCompression_GetInfo_Proxy( IAMVideoCompression * This, /* [size_is][out] */ WCHAR *pszVersion, /* [out][in] */ int *pcbVersion, /* [size_is][out] */ LPWSTR pszDescription, /* [out][in] */ int *pcbDescription, /* [out] */ long *pDefaultKeyFrameRate, /* [out] */ long *pDefaultPFramesPerKey, /* [out] */ double *pDefaultQuality, /* [out] */ long *pCapabilities); void __RPC_STUB IAMVideoCompression_GetInfo_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMVideoCompression_OverrideKeyFrame_Proxy( IAMVideoCompression * This, /* [in] */ long FrameNumber); void __RPC_STUB IAMVideoCompression_OverrideKeyFrame_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMVideoCompression_OverrideFrameSize_Proxy( IAMVideoCompression * This, /* [in] */ long FrameNumber, /* [in] */ long Size); void __RPC_STUB IAMVideoCompression_OverrideFrameSize_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMVideoCompression_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0163 */ /* [local] */ typedef /* [public] */ enum __MIDL___MIDL_itf_strmif_0163_0001 { VfwCaptureDialog_Source = 0x1, VfwCaptureDialog_Format = 0x2, VfwCaptureDialog_Display = 0x4 } VfwCaptureDialogs; typedef /* [public] */ enum __MIDL___MIDL_itf_strmif_0163_0002 { VfwCompressDialog_Config = 0x1, VfwCompressDialog_About = 0x2, VfwCompressDialog_QueryConfig = 0x4, VfwCompressDialog_QueryAbout = 0x8 } VfwCompressDialogs; extern RPC_IF_HANDLE __MIDL_itf_strmif_0163_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0163_v0_0_s_ifspec; #ifndef __IAMVfwCaptureDialogs_INTERFACE_DEFINED__ #define __IAMVfwCaptureDialogs_INTERFACE_DEFINED__ /* interface IAMVfwCaptureDialogs */ /* [unique][uuid][local][object] */ EXTERN_C const IID IID_IAMVfwCaptureDialogs; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("D8D715A0-6E5E-11D0-B3F0-00AA003761C5") IAMVfwCaptureDialogs : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE HasDialog( /* [in] */ int iDialog) = 0; virtual HRESULT STDMETHODCALLTYPE ShowDialog( /* [in] */ int iDialog, /* [in] */ HWND hwnd) = 0; virtual HRESULT STDMETHODCALLTYPE SendDriverMessage( /* [in] */ int iDialog, /* [in] */ int uMsg, /* [in] */ long dw1, /* [in] */ long dw2) = 0; }; #else /* C style interface */ typedef struct IAMVfwCaptureDialogsVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMVfwCaptureDialogs * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMVfwCaptureDialogs * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMVfwCaptureDialogs * This); HRESULT ( STDMETHODCALLTYPE *HasDialog )( IAMVfwCaptureDialogs * This, /* [in] */ int iDialog); HRESULT ( STDMETHODCALLTYPE *ShowDialog )( IAMVfwCaptureDialogs * This, /* [in] */ int iDialog, /* [in] */ HWND hwnd); HRESULT ( STDMETHODCALLTYPE *SendDriverMessage )( IAMVfwCaptureDialogs * This, /* [in] */ int iDialog, /* [in] */ int uMsg, /* [in] */ long dw1, /* [in] */ long dw2); END_INTERFACE } IAMVfwCaptureDialogsVtbl; interface IAMVfwCaptureDialogs { CONST_VTBL struct IAMVfwCaptureDialogsVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMVfwCaptureDialogs_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMVfwCaptureDialogs_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMVfwCaptureDialogs_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMVfwCaptureDialogs_HasDialog(This,iDialog) \ (This)->lpVtbl -> HasDialog(This,iDialog) #define IAMVfwCaptureDialogs_ShowDialog(This,iDialog,hwnd) \ (This)->lpVtbl -> ShowDialog(This,iDialog,hwnd) #define IAMVfwCaptureDialogs_SendDriverMessage(This,iDialog,uMsg,dw1,dw2) \ (This)->lpVtbl -> SendDriverMessage(This,iDialog,uMsg,dw1,dw2) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMVfwCaptureDialogs_HasDialog_Proxy( IAMVfwCaptureDialogs * This, /* [in] */ int iDialog); void __RPC_STUB IAMVfwCaptureDialogs_HasDialog_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMVfwCaptureDialogs_ShowDialog_Proxy( IAMVfwCaptureDialogs * This, /* [in] */ int iDialog, /* [in] */ HWND hwnd); void __RPC_STUB IAMVfwCaptureDialogs_ShowDialog_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMVfwCaptureDialogs_SendDriverMessage_Proxy( IAMVfwCaptureDialogs * This, /* [in] */ int iDialog, /* [in] */ int uMsg, /* [in] */ long dw1, /* [in] */ long dw2); void __RPC_STUB IAMVfwCaptureDialogs_SendDriverMessage_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMVfwCaptureDialogs_INTERFACE_DEFINED__ */ #ifndef __IAMVfwCompressDialogs_INTERFACE_DEFINED__ #define __IAMVfwCompressDialogs_INTERFACE_DEFINED__ /* interface IAMVfwCompressDialogs */ /* [unique][uuid][local][object] */ EXTERN_C const IID IID_IAMVfwCompressDialogs; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("D8D715A3-6E5E-11D0-B3F0-00AA003761C5") IAMVfwCompressDialogs : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE ShowDialog( /* [in] */ int iDialog, /* [in] */ HWND hwnd) = 0; virtual HRESULT STDMETHODCALLTYPE GetState( /* [size_is][out] */ LPVOID pState, /* [out][in] */ int *pcbState) = 0; virtual HRESULT STDMETHODCALLTYPE SetState( /* [size_is][in] */ LPVOID pState, /* [in] */ int cbState) = 0; virtual HRESULT STDMETHODCALLTYPE SendDriverMessage( /* [in] */ int uMsg, /* [in] */ long dw1, /* [in] */ long dw2) = 0; }; #else /* C style interface */ typedef struct IAMVfwCompressDialogsVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMVfwCompressDialogs * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMVfwCompressDialogs * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMVfwCompressDialogs * This); HRESULT ( STDMETHODCALLTYPE *ShowDialog )( IAMVfwCompressDialogs * This, /* [in] */ int iDialog, /* [in] */ HWND hwnd); HRESULT ( STDMETHODCALLTYPE *GetState )( IAMVfwCompressDialogs * This, /* [size_is][out] */ LPVOID pState, /* [out][in] */ int *pcbState); HRESULT ( STDMETHODCALLTYPE *SetState )( IAMVfwCompressDialogs * This, /* [size_is][in] */ LPVOID pState, /* [in] */ int cbState); HRESULT ( STDMETHODCALLTYPE *SendDriverMessage )( IAMVfwCompressDialogs * This, /* [in] */ int uMsg, /* [in] */ long dw1, /* [in] */ long dw2); END_INTERFACE } IAMVfwCompressDialogsVtbl; interface IAMVfwCompressDialogs { CONST_VTBL struct IAMVfwCompressDialogsVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMVfwCompressDialogs_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMVfwCompressDialogs_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMVfwCompressDialogs_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMVfwCompressDialogs_ShowDialog(This,iDialog,hwnd) \ (This)->lpVtbl -> ShowDialog(This,iDialog,hwnd) #define IAMVfwCompressDialogs_GetState(This,pState,pcbState) \ (This)->lpVtbl -> GetState(This,pState,pcbState) #define IAMVfwCompressDialogs_SetState(This,pState,cbState) \ (This)->lpVtbl -> SetState(This,pState,cbState) #define IAMVfwCompressDialogs_SendDriverMessage(This,uMsg,dw1,dw2) \ (This)->lpVtbl -> SendDriverMessage(This,uMsg,dw1,dw2) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMVfwCompressDialogs_ShowDialog_Proxy( IAMVfwCompressDialogs * This, /* [in] */ int iDialog, /* [in] */ HWND hwnd); void __RPC_STUB IAMVfwCompressDialogs_ShowDialog_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMVfwCompressDialogs_GetState_Proxy( IAMVfwCompressDialogs * This, /* [size_is][out] */ LPVOID pState, /* [out][in] */ int *pcbState); void __RPC_STUB IAMVfwCompressDialogs_GetState_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMVfwCompressDialogs_SetState_Proxy( IAMVfwCompressDialogs * This, /* [size_is][in] */ LPVOID pState, /* [in] */ int cbState); void __RPC_STUB IAMVfwCompressDialogs_SetState_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMVfwCompressDialogs_SendDriverMessage_Proxy( IAMVfwCompressDialogs * This, /* [in] */ int uMsg, /* [in] */ long dw1, /* [in] */ long dw2); void __RPC_STUB IAMVfwCompressDialogs_SendDriverMessage_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMVfwCompressDialogs_INTERFACE_DEFINED__ */ #ifndef __IAMDroppedFrames_INTERFACE_DEFINED__ #define __IAMDroppedFrames_INTERFACE_DEFINED__ /* interface IAMDroppedFrames */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IAMDroppedFrames; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("C6E13344-30AC-11d0-A18C-00A0C9118956") IAMDroppedFrames : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE GetNumDropped( /* [out] */ long *plDropped) = 0; virtual HRESULT STDMETHODCALLTYPE GetNumNotDropped( /* [out] */ long *plNotDropped) = 0; virtual HRESULT STDMETHODCALLTYPE GetDroppedInfo( /* [in] */ long lSize, /* [out] */ long *plArray, /* [out] */ long *plNumCopied) = 0; virtual HRESULT STDMETHODCALLTYPE GetAverageFrameSize( /* [out] */ long *plAverageSize) = 0; }; #else /* C style interface */ typedef struct IAMDroppedFramesVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMDroppedFrames * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMDroppedFrames * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMDroppedFrames * This); HRESULT ( STDMETHODCALLTYPE *GetNumDropped )( IAMDroppedFrames * This, /* [out] */ long *plDropped); HRESULT ( STDMETHODCALLTYPE *GetNumNotDropped )( IAMDroppedFrames * This, /* [out] */ long *plNotDropped); HRESULT ( STDMETHODCALLTYPE *GetDroppedInfo )( IAMDroppedFrames * This, /* [in] */ long lSize, /* [out] */ long *plArray, /* [out] */ long *plNumCopied); HRESULT ( STDMETHODCALLTYPE *GetAverageFrameSize )( IAMDroppedFrames * This, /* [out] */ long *plAverageSize); END_INTERFACE } IAMDroppedFramesVtbl; interface IAMDroppedFrames { CONST_VTBL struct IAMDroppedFramesVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMDroppedFrames_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMDroppedFrames_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMDroppedFrames_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMDroppedFrames_GetNumDropped(This,plDropped) \ (This)->lpVtbl -> GetNumDropped(This,plDropped) #define IAMDroppedFrames_GetNumNotDropped(This,plNotDropped) \ (This)->lpVtbl -> GetNumNotDropped(This,plNotDropped) #define IAMDroppedFrames_GetDroppedInfo(This,lSize,plArray,plNumCopied) \ (This)->lpVtbl -> GetDroppedInfo(This,lSize,plArray,plNumCopied) #define IAMDroppedFrames_GetAverageFrameSize(This,plAverageSize) \ (This)->lpVtbl -> GetAverageFrameSize(This,plAverageSize) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMDroppedFrames_GetNumDropped_Proxy( IAMDroppedFrames * This, /* [out] */ long *plDropped); void __RPC_STUB IAMDroppedFrames_GetNumDropped_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMDroppedFrames_GetNumNotDropped_Proxy( IAMDroppedFrames * This, /* [out] */ long *plNotDropped); void __RPC_STUB IAMDroppedFrames_GetNumNotDropped_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMDroppedFrames_GetDroppedInfo_Proxy( IAMDroppedFrames * This, /* [in] */ long lSize, /* [out] */ long *plArray, /* [out] */ long *plNumCopied); void __RPC_STUB IAMDroppedFrames_GetDroppedInfo_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMDroppedFrames_GetAverageFrameSize_Proxy( IAMDroppedFrames * This, /* [out] */ long *plAverageSize); void __RPC_STUB IAMDroppedFrames_GetAverageFrameSize_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMDroppedFrames_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0166 */ /* [local] */ #define AMF_AUTOMATICGAIN -1.0 extern RPC_IF_HANDLE __MIDL_itf_strmif_0166_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0166_v0_0_s_ifspec; #ifndef __IAMAudioInputMixer_INTERFACE_DEFINED__ #define __IAMAudioInputMixer_INTERFACE_DEFINED__ /* interface IAMAudioInputMixer */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IAMAudioInputMixer; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("54C39221-8380-11d0-B3F0-00AA003761C5") IAMAudioInputMixer : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE put_Enable( /* [in] */ BOOL fEnable) = 0; virtual HRESULT STDMETHODCALLTYPE get_Enable( /* [out] */ BOOL *pfEnable) = 0; virtual HRESULT STDMETHODCALLTYPE put_Mono( /* [in] */ BOOL fMono) = 0; virtual HRESULT STDMETHODCALLTYPE get_Mono( /* [out] */ BOOL *pfMono) = 0; virtual HRESULT STDMETHODCALLTYPE put_MixLevel( /* [in] */ double Level) = 0; virtual HRESULT STDMETHODCALLTYPE get_MixLevel( /* [out] */ double *pLevel) = 0; virtual HRESULT STDMETHODCALLTYPE put_Pan( /* [in] */ double Pan) = 0; virtual HRESULT STDMETHODCALLTYPE get_Pan( /* [out] */ double *pPan) = 0; virtual HRESULT STDMETHODCALLTYPE put_Loudness( /* [in] */ BOOL fLoudness) = 0; virtual HRESULT STDMETHODCALLTYPE get_Loudness( /* [out] */ BOOL *pfLoudness) = 0; virtual HRESULT STDMETHODCALLTYPE put_Treble( /* [in] */ double Treble) = 0; virtual HRESULT STDMETHODCALLTYPE get_Treble( /* [out] */ double *pTreble) = 0; virtual HRESULT STDMETHODCALLTYPE get_TrebleRange( /* [out] */ double *pRange) = 0; virtual HRESULT STDMETHODCALLTYPE put_Bass( /* [in] */ double Bass) = 0; virtual HRESULT STDMETHODCALLTYPE get_Bass( /* [out] */ double *pBass) = 0; virtual HRESULT STDMETHODCALLTYPE get_BassRange( /* [out] */ double *pRange) = 0; }; #else /* C style interface */ typedef struct IAMAudioInputMixerVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMAudioInputMixer * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMAudioInputMixer * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMAudioInputMixer * This); HRESULT ( STDMETHODCALLTYPE *put_Enable )( IAMAudioInputMixer * This, /* [in] */ BOOL fEnable); HRESULT ( STDMETHODCALLTYPE *get_Enable )( IAMAudioInputMixer * This, /* [out] */ BOOL *pfEnable); HRESULT ( STDMETHODCALLTYPE *put_Mono )( IAMAudioInputMixer * This, /* [in] */ BOOL fMono); HRESULT ( STDMETHODCALLTYPE *get_Mono )( IAMAudioInputMixer * This, /* [out] */ BOOL *pfMono); HRESULT ( STDMETHODCALLTYPE *put_MixLevel )( IAMAudioInputMixer * This, /* [in] */ double Level); HRESULT ( STDMETHODCALLTYPE *get_MixLevel )( IAMAudioInputMixer * This, /* [out] */ double *pLevel); HRESULT ( STDMETHODCALLTYPE *put_Pan )( IAMAudioInputMixer * This, /* [in] */ double Pan); HRESULT ( STDMETHODCALLTYPE *get_Pan )( IAMAudioInputMixer * This, /* [out] */ double *pPan); HRESULT ( STDMETHODCALLTYPE *put_Loudness )( IAMAudioInputMixer * This, /* [in] */ BOOL fLoudness); HRESULT ( STDMETHODCALLTYPE *get_Loudness )( IAMAudioInputMixer * This, /* [out] */ BOOL *pfLoudness); HRESULT ( STDMETHODCALLTYPE *put_Treble )( IAMAudioInputMixer * This, /* [in] */ double Treble); HRESULT ( STDMETHODCALLTYPE *get_Treble )( IAMAudioInputMixer * This, /* [out] */ double *pTreble); HRESULT ( STDMETHODCALLTYPE *get_TrebleRange )( IAMAudioInputMixer * This, /* [out] */ double *pRange); HRESULT ( STDMETHODCALLTYPE *put_Bass )( IAMAudioInputMixer * This, /* [in] */ double Bass); HRESULT ( STDMETHODCALLTYPE *get_Bass )( IAMAudioInputMixer * This, /* [out] */ double *pBass); HRESULT ( STDMETHODCALLTYPE *get_BassRange )( IAMAudioInputMixer * This, /* [out] */ double *pRange); END_INTERFACE } IAMAudioInputMixerVtbl; interface IAMAudioInputMixer { CONST_VTBL struct IAMAudioInputMixerVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMAudioInputMixer_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMAudioInputMixer_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMAudioInputMixer_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMAudioInputMixer_put_Enable(This,fEnable) \ (This)->lpVtbl -> put_Enable(This,fEnable) #define IAMAudioInputMixer_get_Enable(This,pfEnable) \ (This)->lpVtbl -> get_Enable(This,pfEnable) #define IAMAudioInputMixer_put_Mono(This,fMono) \ (This)->lpVtbl -> put_Mono(This,fMono) #define IAMAudioInputMixer_get_Mono(This,pfMono) \ (This)->lpVtbl -> get_Mono(This,pfMono) #define IAMAudioInputMixer_put_MixLevel(This,Level) \ (This)->lpVtbl -> put_MixLevel(This,Level) #define IAMAudioInputMixer_get_MixLevel(This,pLevel) \ (This)->lpVtbl -> get_MixLevel(This,pLevel) #define IAMAudioInputMixer_put_Pan(This,Pan) \ (This)->lpVtbl -> put_Pan(This,Pan) #define IAMAudioInputMixer_get_Pan(This,pPan) \ (This)->lpVtbl -> get_Pan(This,pPan) #define IAMAudioInputMixer_put_Loudness(This,fLoudness) \ (This)->lpVtbl -> put_Loudness(This,fLoudness) #define IAMAudioInputMixer_get_Loudness(This,pfLoudness) \ (This)->lpVtbl -> get_Loudness(This,pfLoudness) #define IAMAudioInputMixer_put_Treble(This,Treble) \ (This)->lpVtbl -> put_Treble(This,Treble) #define IAMAudioInputMixer_get_Treble(This,pTreble) \ (This)->lpVtbl -> get_Treble(This,pTreble) #define IAMAudioInputMixer_get_TrebleRange(This,pRange) \ (This)->lpVtbl -> get_TrebleRange(This,pRange) #define IAMAudioInputMixer_put_Bass(This,Bass) \ (This)->lpVtbl -> put_Bass(This,Bass) #define IAMAudioInputMixer_get_Bass(This,pBass) \ (This)->lpVtbl -> get_Bass(This,pBass) #define IAMAudioInputMixer_get_BassRange(This,pRange) \ (This)->lpVtbl -> get_BassRange(This,pRange) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMAudioInputMixer_put_Enable_Proxy( IAMAudioInputMixer * This, /* [in] */ BOOL fEnable); void __RPC_STUB IAMAudioInputMixer_put_Enable_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMAudioInputMixer_get_Enable_Proxy( IAMAudioInputMixer * This, /* [out] */ BOOL *pfEnable); void __RPC_STUB IAMAudioInputMixer_get_Enable_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMAudioInputMixer_put_Mono_Proxy( IAMAudioInputMixer * This, /* [in] */ BOOL fMono); void __RPC_STUB IAMAudioInputMixer_put_Mono_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMAudioInputMixer_get_Mono_Proxy( IAMAudioInputMixer * This, /* [out] */ BOOL *pfMono); void __RPC_STUB IAMAudioInputMixer_get_Mono_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMAudioInputMixer_put_MixLevel_Proxy( IAMAudioInputMixer * This, /* [in] */ double Level); void __RPC_STUB IAMAudioInputMixer_put_MixLevel_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMAudioInputMixer_get_MixLevel_Proxy( IAMAudioInputMixer * This, /* [out] */ double *pLevel); void __RPC_STUB IAMAudioInputMixer_get_MixLevel_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMAudioInputMixer_put_Pan_Proxy( IAMAudioInputMixer * This, /* [in] */ double Pan); void __RPC_STUB IAMAudioInputMixer_put_Pan_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMAudioInputMixer_get_Pan_Proxy( IAMAudioInputMixer * This, /* [out] */ double *pPan); void __RPC_STUB IAMAudioInputMixer_get_Pan_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMAudioInputMixer_put_Loudness_Proxy( IAMAudioInputMixer * This, /* [in] */ BOOL fLoudness); void __RPC_STUB IAMAudioInputMixer_put_Loudness_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMAudioInputMixer_get_Loudness_Proxy( IAMAudioInputMixer * This, /* [out] */ BOOL *pfLoudness); void __RPC_STUB IAMAudioInputMixer_get_Loudness_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMAudioInputMixer_put_Treble_Proxy( IAMAudioInputMixer * This, /* [in] */ double Treble); void __RPC_STUB IAMAudioInputMixer_put_Treble_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMAudioInputMixer_get_Treble_Proxy( IAMAudioInputMixer * This, /* [out] */ double *pTreble); void __RPC_STUB IAMAudioInputMixer_get_Treble_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMAudioInputMixer_get_TrebleRange_Proxy( IAMAudioInputMixer * This, /* [out] */ double *pRange); void __RPC_STUB IAMAudioInputMixer_get_TrebleRange_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMAudioInputMixer_put_Bass_Proxy( IAMAudioInputMixer * This, /* [in] */ double Bass); void __RPC_STUB IAMAudioInputMixer_put_Bass_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMAudioInputMixer_get_Bass_Proxy( IAMAudioInputMixer * This, /* [out] */ double *pBass); void __RPC_STUB IAMAudioInputMixer_get_Bass_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMAudioInputMixer_get_BassRange_Proxy( IAMAudioInputMixer * This, /* [out] */ double *pRange); void __RPC_STUB IAMAudioInputMixer_get_BassRange_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMAudioInputMixer_INTERFACE_DEFINED__ */ #ifndef __IAMBufferNegotiation_INTERFACE_DEFINED__ #define __IAMBufferNegotiation_INTERFACE_DEFINED__ /* interface IAMBufferNegotiation */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IAMBufferNegotiation; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("56ED71A0-AF5F-11D0-B3F0-00AA003761C5") IAMBufferNegotiation : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE SuggestAllocatorProperties( /* [in] */ const ALLOCATOR_PROPERTIES *pprop) = 0; virtual HRESULT STDMETHODCALLTYPE GetAllocatorProperties( /* [out] */ ALLOCATOR_PROPERTIES *pprop) = 0; }; #else /* C style interface */ typedef struct IAMBufferNegotiationVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMBufferNegotiation * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMBufferNegotiation * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMBufferNegotiation * This); HRESULT ( STDMETHODCALLTYPE *SuggestAllocatorProperties )( IAMBufferNegotiation * This, /* [in] */ const ALLOCATOR_PROPERTIES *pprop); HRESULT ( STDMETHODCALLTYPE *GetAllocatorProperties )( IAMBufferNegotiation * This, /* [out] */ ALLOCATOR_PROPERTIES *pprop); END_INTERFACE } IAMBufferNegotiationVtbl; interface IAMBufferNegotiation { CONST_VTBL struct IAMBufferNegotiationVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMBufferNegotiation_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMBufferNegotiation_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMBufferNegotiation_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMBufferNegotiation_SuggestAllocatorProperties(This,pprop) \ (This)->lpVtbl -> SuggestAllocatorProperties(This,pprop) #define IAMBufferNegotiation_GetAllocatorProperties(This,pprop) \ (This)->lpVtbl -> GetAllocatorProperties(This,pprop) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMBufferNegotiation_SuggestAllocatorProperties_Proxy( IAMBufferNegotiation * This, /* [in] */ const ALLOCATOR_PROPERTIES *pprop); void __RPC_STUB IAMBufferNegotiation_SuggestAllocatorProperties_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMBufferNegotiation_GetAllocatorProperties_Proxy( IAMBufferNegotiation * This, /* [out] */ ALLOCATOR_PROPERTIES *pprop); void __RPC_STUB IAMBufferNegotiation_GetAllocatorProperties_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMBufferNegotiation_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0168 */ /* [local] */ typedef enum tagAnalogVideoStandard { AnalogVideo_None = 0, AnalogVideo_NTSC_M = 0x1, AnalogVideo_NTSC_M_J = 0x2, AnalogVideo_NTSC_433 = 0x4, AnalogVideo_PAL_B = 0x10, AnalogVideo_PAL_D = 0x20, AnalogVideo_PAL_G = 0x40, AnalogVideo_PAL_H = 0x80, AnalogVideo_PAL_I = 0x100, AnalogVideo_PAL_M = 0x200, AnalogVideo_PAL_N = 0x400, AnalogVideo_PAL_60 = 0x800, AnalogVideo_SECAM_B = 0x1000, AnalogVideo_SECAM_D = 0x2000, AnalogVideo_SECAM_G = 0x4000, AnalogVideo_SECAM_H = 0x8000, AnalogVideo_SECAM_K = 0x10000, AnalogVideo_SECAM_K1 = 0x20000, AnalogVideo_SECAM_L = 0x40000, AnalogVideo_SECAM_L1 = 0x80000, AnalogVideo_PAL_N_COMBO = 0x100000 } AnalogVideoStandard; #define AnalogVideo_NTSC_Mask 0x00000007 #define AnalogVideo_PAL_Mask 0x00100FF0 #define AnalogVideo_SECAM_Mask 0x000FF000 typedef enum tagTunerInputType { TunerInputCable = 0, TunerInputAntenna = TunerInputCable + 1 } TunerInputType; typedef /* [public] */ enum __MIDL___MIDL_itf_strmif_0168_0001 { VideoCopyProtectionMacrovisionBasic = 0, VideoCopyProtectionMacrovisionCBI = VideoCopyProtectionMacrovisionBasic + 1 } VideoCopyProtectionType; typedef enum tagPhysicalConnectorType { PhysConn_Video_Tuner = 1, PhysConn_Video_Composite = PhysConn_Video_Tuner + 1, PhysConn_Video_SVideo = PhysConn_Video_Composite + 1, PhysConn_Video_RGB = PhysConn_Video_SVideo + 1, PhysConn_Video_YRYBY = PhysConn_Video_RGB + 1, PhysConn_Video_SerialDigital = PhysConn_Video_YRYBY + 1, PhysConn_Video_ParallelDigital = PhysConn_Video_SerialDigital + 1, PhysConn_Video_SCSI = PhysConn_Video_ParallelDigital + 1, PhysConn_Video_AUX = PhysConn_Video_SCSI + 1, PhysConn_Video_1394 = PhysConn_Video_AUX + 1, PhysConn_Video_USB = PhysConn_Video_1394 + 1, PhysConn_Video_VideoDecoder = PhysConn_Video_USB + 1, PhysConn_Video_VideoEncoder = PhysConn_Video_VideoDecoder + 1, PhysConn_Video_SCART = PhysConn_Video_VideoEncoder + 1, PhysConn_Video_Black = PhysConn_Video_SCART + 1, PhysConn_Audio_Tuner = 0x1000, PhysConn_Audio_Line = PhysConn_Audio_Tuner + 1, PhysConn_Audio_Mic = PhysConn_Audio_Line + 1, PhysConn_Audio_AESDigital = PhysConn_Audio_Mic + 1, PhysConn_Audio_SPDIFDigital = PhysConn_Audio_AESDigital + 1, PhysConn_Audio_SCSI = PhysConn_Audio_SPDIFDigital + 1, PhysConn_Audio_AUX = PhysConn_Audio_SCSI + 1, PhysConn_Audio_1394 = PhysConn_Audio_AUX + 1, PhysConn_Audio_USB = PhysConn_Audio_1394 + 1, PhysConn_Audio_AudioDecoder = PhysConn_Audio_USB + 1 } PhysicalConnectorType; extern RPC_IF_HANDLE __MIDL_itf_strmif_0168_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0168_v0_0_s_ifspec; #ifndef __IAMAnalogVideoDecoder_INTERFACE_DEFINED__ #define __IAMAnalogVideoDecoder_INTERFACE_DEFINED__ /* interface IAMAnalogVideoDecoder */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IAMAnalogVideoDecoder; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("C6E13350-30AC-11d0-A18C-00A0C9118956") IAMAnalogVideoDecoder : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE get_AvailableTVFormats( /* [out] */ long *lAnalogVideoStandard) = 0; virtual HRESULT STDMETHODCALLTYPE put_TVFormat( /* [in] */ long lAnalogVideoStandard) = 0; virtual HRESULT STDMETHODCALLTYPE get_TVFormat( /* [out] */ long *plAnalogVideoStandard) = 0; virtual HRESULT STDMETHODCALLTYPE get_HorizontalLocked( /* [out] */ long *plLocked) = 0; virtual HRESULT STDMETHODCALLTYPE put_VCRHorizontalLocking( /* [in] */ long lVCRHorizontalLocking) = 0; virtual HRESULT STDMETHODCALLTYPE get_VCRHorizontalLocking( /* [out] */ long *plVCRHorizontalLocking) = 0; virtual HRESULT STDMETHODCALLTYPE get_NumberOfLines( /* [out] */ long *plNumberOfLines) = 0; virtual HRESULT STDMETHODCALLTYPE put_OutputEnable( /* [in] */ long lOutputEnable) = 0; virtual HRESULT STDMETHODCALLTYPE get_OutputEnable( /* [out] */ long *plOutputEnable) = 0; }; #else /* C style interface */ typedef struct IAMAnalogVideoDecoderVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMAnalogVideoDecoder * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMAnalogVideoDecoder * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMAnalogVideoDecoder * This); HRESULT ( STDMETHODCALLTYPE *get_AvailableTVFormats )( IAMAnalogVideoDecoder * This, /* [out] */ long *lAnalogVideoStandard); HRESULT ( STDMETHODCALLTYPE *put_TVFormat )( IAMAnalogVideoDecoder * This, /* [in] */ long lAnalogVideoStandard); HRESULT ( STDMETHODCALLTYPE *get_TVFormat )( IAMAnalogVideoDecoder * This, /* [out] */ long *plAnalogVideoStandard); HRESULT ( STDMETHODCALLTYPE *get_HorizontalLocked )( IAMAnalogVideoDecoder * This, /* [out] */ long *plLocked); HRESULT ( STDMETHODCALLTYPE *put_VCRHorizontalLocking )( IAMAnalogVideoDecoder * This, /* [in] */ long lVCRHorizontalLocking); HRESULT ( STDMETHODCALLTYPE *get_VCRHorizontalLocking )( IAMAnalogVideoDecoder * This, /* [out] */ long *plVCRHorizontalLocking); HRESULT ( STDMETHODCALLTYPE *get_NumberOfLines )( IAMAnalogVideoDecoder * This, /* [out] */ long *plNumberOfLines); HRESULT ( STDMETHODCALLTYPE *put_OutputEnable )( IAMAnalogVideoDecoder * This, /* [in] */ long lOutputEnable); HRESULT ( STDMETHODCALLTYPE *get_OutputEnable )( IAMAnalogVideoDecoder * This, /* [out] */ long *plOutputEnable); END_INTERFACE } IAMAnalogVideoDecoderVtbl; interface IAMAnalogVideoDecoder { CONST_VTBL struct IAMAnalogVideoDecoderVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMAnalogVideoDecoder_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMAnalogVideoDecoder_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMAnalogVideoDecoder_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMAnalogVideoDecoder_get_AvailableTVFormats(This,lAnalogVideoStandard) \ (This)->lpVtbl -> get_AvailableTVFormats(This,lAnalogVideoStandard) #define IAMAnalogVideoDecoder_put_TVFormat(This,lAnalogVideoStandard) \ (This)->lpVtbl -> put_TVFormat(This,lAnalogVideoStandard) #define IAMAnalogVideoDecoder_get_TVFormat(This,plAnalogVideoStandard) \ (This)->lpVtbl -> get_TVFormat(This,plAnalogVideoStandard) #define IAMAnalogVideoDecoder_get_HorizontalLocked(This,plLocked) \ (This)->lpVtbl -> get_HorizontalLocked(This,plLocked) #define IAMAnalogVideoDecoder_put_VCRHorizontalLocking(This,lVCRHorizontalLocking) \ (This)->lpVtbl -> put_VCRHorizontalLocking(This,lVCRHorizontalLocking) #define IAMAnalogVideoDecoder_get_VCRHorizontalLocking(This,plVCRHorizontalLocking) \ (This)->lpVtbl -> get_VCRHorizontalLocking(This,plVCRHorizontalLocking) #define IAMAnalogVideoDecoder_get_NumberOfLines(This,plNumberOfLines) \ (This)->lpVtbl -> get_NumberOfLines(This,plNumberOfLines) #define IAMAnalogVideoDecoder_put_OutputEnable(This,lOutputEnable) \ (This)->lpVtbl -> put_OutputEnable(This,lOutputEnable) #define IAMAnalogVideoDecoder_get_OutputEnable(This,plOutputEnable) \ (This)->lpVtbl -> get_OutputEnable(This,plOutputEnable) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMAnalogVideoDecoder_get_AvailableTVFormats_Proxy( IAMAnalogVideoDecoder * This, /* [out] */ long *lAnalogVideoStandard); void __RPC_STUB IAMAnalogVideoDecoder_get_AvailableTVFormats_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMAnalogVideoDecoder_put_TVFormat_Proxy( IAMAnalogVideoDecoder * This, /* [in] */ long lAnalogVideoStandard); void __RPC_STUB IAMAnalogVideoDecoder_put_TVFormat_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMAnalogVideoDecoder_get_TVFormat_Proxy( IAMAnalogVideoDecoder * This, /* [out] */ long *plAnalogVideoStandard); void __RPC_STUB IAMAnalogVideoDecoder_get_TVFormat_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMAnalogVideoDecoder_get_HorizontalLocked_Proxy( IAMAnalogVideoDecoder * This, /* [out] */ long *plLocked); void __RPC_STUB IAMAnalogVideoDecoder_get_HorizontalLocked_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMAnalogVideoDecoder_put_VCRHorizontalLocking_Proxy( IAMAnalogVideoDecoder * This, /* [in] */ long lVCRHorizontalLocking); void __RPC_STUB IAMAnalogVideoDecoder_put_VCRHorizontalLocking_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMAnalogVideoDecoder_get_VCRHorizontalLocking_Proxy( IAMAnalogVideoDecoder * This, /* [out] */ long *plVCRHorizontalLocking); void __RPC_STUB IAMAnalogVideoDecoder_get_VCRHorizontalLocking_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMAnalogVideoDecoder_get_NumberOfLines_Proxy( IAMAnalogVideoDecoder * This, /* [out] */ long *plNumberOfLines); void __RPC_STUB IAMAnalogVideoDecoder_get_NumberOfLines_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMAnalogVideoDecoder_put_OutputEnable_Proxy( IAMAnalogVideoDecoder * This, /* [in] */ long lOutputEnable); void __RPC_STUB IAMAnalogVideoDecoder_put_OutputEnable_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMAnalogVideoDecoder_get_OutputEnable_Proxy( IAMAnalogVideoDecoder * This, /* [out] */ long *plOutputEnable); void __RPC_STUB IAMAnalogVideoDecoder_get_OutputEnable_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMAnalogVideoDecoder_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0169 */ /* [local] */ typedef enum tagVideoProcAmpProperty { VideoProcAmp_Brightness = 0, VideoProcAmp_Contrast = VideoProcAmp_Brightness + 1, VideoProcAmp_Hue = VideoProcAmp_Contrast + 1, VideoProcAmp_Saturation = VideoProcAmp_Hue + 1, VideoProcAmp_Sharpness = VideoProcAmp_Saturation + 1, VideoProcAmp_Gamma = VideoProcAmp_Sharpness + 1, VideoProcAmp_ColorEnable = VideoProcAmp_Gamma + 1, VideoProcAmp_WhiteBalance = VideoProcAmp_ColorEnable + 1, VideoProcAmp_BacklightCompensation = VideoProcAmp_WhiteBalance + 1, VideoProcAmp_Gain = VideoProcAmp_BacklightCompensation + 1 } VideoProcAmpProperty; typedef enum tagVideoProcAmpFlags { VideoProcAmp_Flags_Auto = 0x1, VideoProcAmp_Flags_Manual = 0x2 } VideoProcAmpFlags; extern RPC_IF_HANDLE __MIDL_itf_strmif_0169_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0169_v0_0_s_ifspec; #ifndef __IAMVideoProcAmp_INTERFACE_DEFINED__ #define __IAMVideoProcAmp_INTERFACE_DEFINED__ /* interface IAMVideoProcAmp */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IAMVideoProcAmp; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("C6E13360-30AC-11d0-A18C-00A0C9118956") IAMVideoProcAmp : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE GetRange( /* [in] */ long Property, /* [out] */ long *pMin, /* [out] */ long *pMax, /* [out] */ long *pSteppingDelta, /* [out] */ long *pDefault, /* [out] */ long *pCapsFlags) = 0; virtual HRESULT STDMETHODCALLTYPE Set( /* [in] */ long Property, /* [in] */ long lValue, /* [in] */ long Flags) = 0; virtual HRESULT STDMETHODCALLTYPE Get( /* [in] */ long Property, /* [out] */ long *lValue, /* [out] */ long *Flags) = 0; }; #else /* C style interface */ typedef struct IAMVideoProcAmpVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMVideoProcAmp * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMVideoProcAmp * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMVideoProcAmp * This); HRESULT ( STDMETHODCALLTYPE *GetRange )( IAMVideoProcAmp * This, /* [in] */ long Property, /* [out] */ long *pMin, /* [out] */ long *pMax, /* [out] */ long *pSteppingDelta, /* [out] */ long *pDefault, /* [out] */ long *pCapsFlags); HRESULT ( STDMETHODCALLTYPE *Set )( IAMVideoProcAmp * This, /* [in] */ long Property, /* [in] */ long lValue, /* [in] */ long Flags); HRESULT ( STDMETHODCALLTYPE *Get )( IAMVideoProcAmp * This, /* [in] */ long Property, /* [out] */ long *lValue, /* [out] */ long *Flags); END_INTERFACE } IAMVideoProcAmpVtbl; interface IAMVideoProcAmp { CONST_VTBL struct IAMVideoProcAmpVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMVideoProcAmp_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMVideoProcAmp_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMVideoProcAmp_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMVideoProcAmp_GetRange(This,Property,pMin,pMax,pSteppingDelta,pDefault,pCapsFlags) \ (This)->lpVtbl -> GetRange(This,Property,pMin,pMax,pSteppingDelta,pDefault,pCapsFlags) #define IAMVideoProcAmp_Set(This,Property,lValue,Flags) \ (This)->lpVtbl -> Set(This,Property,lValue,Flags) #define IAMVideoProcAmp_Get(This,Property,lValue,Flags) \ (This)->lpVtbl -> Get(This,Property,lValue,Flags) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMVideoProcAmp_GetRange_Proxy( IAMVideoProcAmp * This, /* [in] */ long Property, /* [out] */ long *pMin, /* [out] */ long *pMax, /* [out] */ long *pSteppingDelta, /* [out] */ long *pDefault, /* [out] */ long *pCapsFlags); void __RPC_STUB IAMVideoProcAmp_GetRange_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMVideoProcAmp_Set_Proxy( IAMVideoProcAmp * This, /* [in] */ long Property, /* [in] */ long lValue, /* [in] */ long Flags); void __RPC_STUB IAMVideoProcAmp_Set_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMVideoProcAmp_Get_Proxy( IAMVideoProcAmp * This, /* [in] */ long Property, /* [out] */ long *lValue, /* [out] */ long *Flags); void __RPC_STUB IAMVideoProcAmp_Get_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMVideoProcAmp_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0170 */ /* [local] */ typedef enum tagCameraControlProperty { CameraControl_Pan = 0, CameraControl_Tilt = CameraControl_Pan + 1, CameraControl_Roll = CameraControl_Tilt + 1, CameraControl_Zoom = CameraControl_Roll + 1, CameraControl_Exposure = CameraControl_Zoom + 1, CameraControl_Iris = CameraControl_Exposure + 1, CameraControl_Focus = CameraControl_Iris + 1 } CameraControlProperty; typedef enum tagCameraControlFlags { CameraControl_Flags_Auto = 0x1, CameraControl_Flags_Manual = 0x2 } CameraControlFlags; extern RPC_IF_HANDLE __MIDL_itf_strmif_0170_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0170_v0_0_s_ifspec; #ifndef __IAMCameraControl_INTERFACE_DEFINED__ #define __IAMCameraControl_INTERFACE_DEFINED__ /* interface IAMCameraControl */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IAMCameraControl; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("C6E13370-30AC-11d0-A18C-00A0C9118956") IAMCameraControl : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE GetRange( /* [in] */ long Property, /* [out] */ long *pMin, /* [out] */ long *pMax, /* [out] */ long *pSteppingDelta, /* [out] */ long *pDefault, /* [out] */ long *pCapsFlags) = 0; virtual HRESULT STDMETHODCALLTYPE Set( /* [in] */ long Property, /* [in] */ long lValue, /* [in] */ long Flags) = 0; virtual HRESULT STDMETHODCALLTYPE Get( /* [in] */ long Property, /* [out] */ long *lValue, /* [out] */ long *Flags) = 0; }; #else /* C style interface */ typedef struct IAMCameraControlVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMCameraControl * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMCameraControl * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMCameraControl * This); HRESULT ( STDMETHODCALLTYPE *GetRange )( IAMCameraControl * This, /* [in] */ long Property, /* [out] */ long *pMin, /* [out] */ long *pMax, /* [out] */ long *pSteppingDelta, /* [out] */ long *pDefault, /* [out] */ long *pCapsFlags); HRESULT ( STDMETHODCALLTYPE *Set )( IAMCameraControl * This, /* [in] */ long Property, /* [in] */ long lValue, /* [in] */ long Flags); HRESULT ( STDMETHODCALLTYPE *Get )( IAMCameraControl * This, /* [in] */ long Property, /* [out] */ long *lValue, /* [out] */ long *Flags); END_INTERFACE } IAMCameraControlVtbl; interface IAMCameraControl { CONST_VTBL struct IAMCameraControlVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMCameraControl_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMCameraControl_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMCameraControl_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMCameraControl_GetRange(This,Property,pMin,pMax,pSteppingDelta,pDefault,pCapsFlags) \ (This)->lpVtbl -> GetRange(This,Property,pMin,pMax,pSteppingDelta,pDefault,pCapsFlags) #define IAMCameraControl_Set(This,Property,lValue,Flags) \ (This)->lpVtbl -> Set(This,Property,lValue,Flags) #define IAMCameraControl_Get(This,Property,lValue,Flags) \ (This)->lpVtbl -> Get(This,Property,lValue,Flags) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMCameraControl_GetRange_Proxy( IAMCameraControl * This, /* [in] */ long Property, /* [out] */ long *pMin, /* [out] */ long *pMax, /* [out] */ long *pSteppingDelta, /* [out] */ long *pDefault, /* [out] */ long *pCapsFlags); void __RPC_STUB IAMCameraControl_GetRange_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMCameraControl_Set_Proxy( IAMCameraControl * This, /* [in] */ long Property, /* [in] */ long lValue, /* [in] */ long Flags); void __RPC_STUB IAMCameraControl_Set_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMCameraControl_Get_Proxy( IAMCameraControl * This, /* [in] */ long Property, /* [out] */ long *lValue, /* [out] */ long *Flags); void __RPC_STUB IAMCameraControl_Get_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMCameraControl_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0171 */ /* [local] */ typedef enum tagVideoControlFlags { VideoControlFlag_FlipHorizontal = 0x1, VideoControlFlag_FlipVertical = 0x2, VideoControlFlag_ExternalTriggerEnable = 0x4, VideoControlFlag_Trigger = 0x8 } VideoControlFlags; extern RPC_IF_HANDLE __MIDL_itf_strmif_0171_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0171_v0_0_s_ifspec; #ifndef __IAMVideoControl_INTERFACE_DEFINED__ #define __IAMVideoControl_INTERFACE_DEFINED__ /* interface IAMVideoControl */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IAMVideoControl; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("6a2e0670-28e4-11d0-a18c-00a0c9118956") IAMVideoControl : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE GetCaps( /* [in] */ IPin *pPin, /* [out] */ long *pCapsFlags) = 0; virtual HRESULT STDMETHODCALLTYPE SetMode( /* [in] */ IPin *pPin, /* [in] */ long Mode) = 0; virtual HRESULT STDMETHODCALLTYPE GetMode( /* [in] */ IPin *pPin, /* [out] */ long *Mode) = 0; virtual HRESULT STDMETHODCALLTYPE GetCurrentActualFrameRate( /* [in] */ IPin *pPin, /* [out] */ LONGLONG *ActualFrameRate) = 0; virtual HRESULT STDMETHODCALLTYPE GetMaxAvailableFrameRate( /* [in] */ IPin *pPin, /* [in] */ long iIndex, /* [in] */ SIZE Dimensions, /* [out] */ LONGLONG *MaxAvailableFrameRate) = 0; virtual HRESULT STDMETHODCALLTYPE GetFrameRateList( /* [in] */ IPin *pPin, /* [in] */ long iIndex, /* [in] */ SIZE Dimensions, /* [out] */ long *ListSize, /* [out] */ LONGLONG **FrameRates) = 0; }; #else /* C style interface */ typedef struct IAMVideoControlVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMVideoControl * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMVideoControl * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMVideoControl * This); HRESULT ( STDMETHODCALLTYPE *GetCaps )( IAMVideoControl * This, /* [in] */ IPin *pPin, /* [out] */ long *pCapsFlags); HRESULT ( STDMETHODCALLTYPE *SetMode )( IAMVideoControl * This, /* [in] */ IPin *pPin, /* [in] */ long Mode); HRESULT ( STDMETHODCALLTYPE *GetMode )( IAMVideoControl * This, /* [in] */ IPin *pPin, /* [out] */ long *Mode); HRESULT ( STDMETHODCALLTYPE *GetCurrentActualFrameRate )( IAMVideoControl * This, /* [in] */ IPin *pPin, /* [out] */ LONGLONG *ActualFrameRate); HRESULT ( STDMETHODCALLTYPE *GetMaxAvailableFrameRate )( IAMVideoControl * This, /* [in] */ IPin *pPin, /* [in] */ long iIndex, /* [in] */ SIZE Dimensions, /* [out] */ LONGLONG *MaxAvailableFrameRate); HRESULT ( STDMETHODCALLTYPE *GetFrameRateList )( IAMVideoControl * This, /* [in] */ IPin *pPin, /* [in] */ long iIndex, /* [in] */ SIZE Dimensions, /* [out] */ long *ListSize, /* [out] */ LONGLONG **FrameRates); END_INTERFACE } IAMVideoControlVtbl; interface IAMVideoControl { CONST_VTBL struct IAMVideoControlVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMVideoControl_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMVideoControl_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMVideoControl_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMVideoControl_GetCaps(This,pPin,pCapsFlags) \ (This)->lpVtbl -> GetCaps(This,pPin,pCapsFlags) #define IAMVideoControl_SetMode(This,pPin,Mode) \ (This)->lpVtbl -> SetMode(This,pPin,Mode) #define IAMVideoControl_GetMode(This,pPin,Mode) \ (This)->lpVtbl -> GetMode(This,pPin,Mode) #define IAMVideoControl_GetCurrentActualFrameRate(This,pPin,ActualFrameRate) \ (This)->lpVtbl -> GetCurrentActualFrameRate(This,pPin,ActualFrameRate) #define IAMVideoControl_GetMaxAvailableFrameRate(This,pPin,iIndex,Dimensions,MaxAvailableFrameRate) \ (This)->lpVtbl -> GetMaxAvailableFrameRate(This,pPin,iIndex,Dimensions,MaxAvailableFrameRate) #define IAMVideoControl_GetFrameRateList(This,pPin,iIndex,Dimensions,ListSize,FrameRates) \ (This)->lpVtbl -> GetFrameRateList(This,pPin,iIndex,Dimensions,ListSize,FrameRates) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMVideoControl_GetCaps_Proxy( IAMVideoControl * This, /* [in] */ IPin *pPin, /* [out] */ long *pCapsFlags); void __RPC_STUB IAMVideoControl_GetCaps_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMVideoControl_SetMode_Proxy( IAMVideoControl * This, /* [in] */ IPin *pPin, /* [in] */ long Mode); void __RPC_STUB IAMVideoControl_SetMode_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMVideoControl_GetMode_Proxy( IAMVideoControl * This, /* [in] */ IPin *pPin, /* [out] */ long *Mode); void __RPC_STUB IAMVideoControl_GetMode_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMVideoControl_GetCurrentActualFrameRate_Proxy( IAMVideoControl * This, /* [in] */ IPin *pPin, /* [out] */ LONGLONG *ActualFrameRate); void __RPC_STUB IAMVideoControl_GetCurrentActualFrameRate_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMVideoControl_GetMaxAvailableFrameRate_Proxy( IAMVideoControl * This, /* [in] */ IPin *pPin, /* [in] */ long iIndex, /* [in] */ SIZE Dimensions, /* [out] */ LONGLONG *MaxAvailableFrameRate); void __RPC_STUB IAMVideoControl_GetMaxAvailableFrameRate_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMVideoControl_GetFrameRateList_Proxy( IAMVideoControl * This, /* [in] */ IPin *pPin, /* [in] */ long iIndex, /* [in] */ SIZE Dimensions, /* [out] */ long *ListSize, /* [out] */ LONGLONG **FrameRates); void __RPC_STUB IAMVideoControl_GetFrameRateList_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMVideoControl_INTERFACE_DEFINED__ */ #ifndef __IAMCrossbar_INTERFACE_DEFINED__ #define __IAMCrossbar_INTERFACE_DEFINED__ /* interface IAMCrossbar */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IAMCrossbar; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("C6E13380-30AC-11d0-A18C-00A0C9118956") IAMCrossbar : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE get_PinCounts( /* [out] */ long *OutputPinCount, /* [out] */ long *InputPinCount) = 0; virtual HRESULT STDMETHODCALLTYPE CanRoute( /* [in] */ long OutputPinIndex, /* [in] */ long InputPinIndex) = 0; virtual HRESULT STDMETHODCALLTYPE Route( /* [in] */ long OutputPinIndex, /* [in] */ long InputPinIndex) = 0; virtual HRESULT STDMETHODCALLTYPE get_IsRoutedTo( /* [in] */ long OutputPinIndex, /* [out] */ long *InputPinIndex) = 0; virtual HRESULT STDMETHODCALLTYPE get_CrossbarPinInfo( /* [in] */ BOOL IsInputPin, /* [in] */ long PinIndex, /* [out] */ long *PinIndexRelated, /* [out] */ long *PhysicalType) = 0; }; #else /* C style interface */ typedef struct IAMCrossbarVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMCrossbar * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMCrossbar * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMCrossbar * This); HRESULT ( STDMETHODCALLTYPE *get_PinCounts )( IAMCrossbar * This, /* [out] */ long *OutputPinCount, /* [out] */ long *InputPinCount); HRESULT ( STDMETHODCALLTYPE *CanRoute )( IAMCrossbar * This, /* [in] */ long OutputPinIndex, /* [in] */ long InputPinIndex); HRESULT ( STDMETHODCALLTYPE *Route )( IAMCrossbar * This, /* [in] */ long OutputPinIndex, /* [in] */ long InputPinIndex); HRESULT ( STDMETHODCALLTYPE *get_IsRoutedTo )( IAMCrossbar * This, /* [in] */ long OutputPinIndex, /* [out] */ long *InputPinIndex); HRESULT ( STDMETHODCALLTYPE *get_CrossbarPinInfo )( IAMCrossbar * This, /* [in] */ BOOL IsInputPin, /* [in] */ long PinIndex, /* [out] */ long *PinIndexRelated, /* [out] */ long *PhysicalType); END_INTERFACE } IAMCrossbarVtbl; interface IAMCrossbar { CONST_VTBL struct IAMCrossbarVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMCrossbar_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMCrossbar_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMCrossbar_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMCrossbar_get_PinCounts(This,OutputPinCount,InputPinCount) \ (This)->lpVtbl -> get_PinCounts(This,OutputPinCount,InputPinCount) #define IAMCrossbar_CanRoute(This,OutputPinIndex,InputPinIndex) \ (This)->lpVtbl -> CanRoute(This,OutputPinIndex,InputPinIndex) #define IAMCrossbar_Route(This,OutputPinIndex,InputPinIndex) \ (This)->lpVtbl -> Route(This,OutputPinIndex,InputPinIndex) #define IAMCrossbar_get_IsRoutedTo(This,OutputPinIndex,InputPinIndex) \ (This)->lpVtbl -> get_IsRoutedTo(This,OutputPinIndex,InputPinIndex) #define IAMCrossbar_get_CrossbarPinInfo(This,IsInputPin,PinIndex,PinIndexRelated,PhysicalType) \ (This)->lpVtbl -> get_CrossbarPinInfo(This,IsInputPin,PinIndex,PinIndexRelated,PhysicalType) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMCrossbar_get_PinCounts_Proxy( IAMCrossbar * This, /* [out] */ long *OutputPinCount, /* [out] */ long *InputPinCount); void __RPC_STUB IAMCrossbar_get_PinCounts_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMCrossbar_CanRoute_Proxy( IAMCrossbar * This, /* [in] */ long OutputPinIndex, /* [in] */ long InputPinIndex); void __RPC_STUB IAMCrossbar_CanRoute_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMCrossbar_Route_Proxy( IAMCrossbar * This, /* [in] */ long OutputPinIndex, /* [in] */ long InputPinIndex); void __RPC_STUB IAMCrossbar_Route_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMCrossbar_get_IsRoutedTo_Proxy( IAMCrossbar * This, /* [in] */ long OutputPinIndex, /* [out] */ long *InputPinIndex); void __RPC_STUB IAMCrossbar_get_IsRoutedTo_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMCrossbar_get_CrossbarPinInfo_Proxy( IAMCrossbar * This, /* [in] */ BOOL IsInputPin, /* [in] */ long PinIndex, /* [out] */ long *PinIndexRelated, /* [out] */ long *PhysicalType); void __RPC_STUB IAMCrossbar_get_CrossbarPinInfo_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMCrossbar_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0173 */ /* [local] */ typedef enum tagAMTunerSubChannel { AMTUNER_SUBCHAN_NO_TUNE = -2, AMTUNER_SUBCHAN_DEFAULT = -1 } AMTunerSubChannel; typedef enum tagAMTunerSignalStrength { AMTUNER_HASNOSIGNALSTRENGTH = -1, AMTUNER_NOSIGNAL = 0, AMTUNER_SIGNALPRESENT = 1 } AMTunerSignalStrength; typedef enum tagAMTunerModeType { AMTUNER_MODE_DEFAULT = 0, AMTUNER_MODE_TV = 0x1, AMTUNER_MODE_FM_RADIO = 0x2, AMTUNER_MODE_AM_RADIO = 0x4, AMTUNER_MODE_DSS = 0x8 } AMTunerModeType; typedef enum tagAMTunerEventType { AMTUNER_EVENT_CHANGED = 0x1 } AMTunerEventType; extern RPC_IF_HANDLE __MIDL_itf_strmif_0173_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0173_v0_0_s_ifspec; #ifndef __IAMTuner_INTERFACE_DEFINED__ #define __IAMTuner_INTERFACE_DEFINED__ /* interface IAMTuner */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IAMTuner; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("211A8761-03AC-11d1-8D13-00AA00BD8339") IAMTuner : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE put_Channel( /* [in] */ long lChannel, /* [in] */ long lVideoSubChannel, /* [in] */ long lAudioSubChannel) = 0; virtual HRESULT STDMETHODCALLTYPE get_Channel( /* [out] */ long *plChannel, /* [out] */ long *plVideoSubChannel, /* [out] */ long *plAudioSubChannel) = 0; virtual HRESULT STDMETHODCALLTYPE ChannelMinMax( /* [out] */ long *lChannelMin, /* [out] */ long *lChannelMax) = 0; virtual HRESULT STDMETHODCALLTYPE put_CountryCode( /* [in] */ long lCountryCode) = 0; virtual HRESULT STDMETHODCALLTYPE get_CountryCode( /* [out] */ long *plCountryCode) = 0; virtual HRESULT STDMETHODCALLTYPE put_TuningSpace( /* [in] */ long lTuningSpace) = 0; virtual HRESULT STDMETHODCALLTYPE get_TuningSpace( /* [out] */ long *plTuningSpace) = 0; virtual /* [local] */ HRESULT STDMETHODCALLTYPE Logon( /* [in] */ HANDLE hCurrentUser) = 0; virtual HRESULT STDMETHODCALLTYPE Logout( void) = 0; virtual HRESULT STDMETHODCALLTYPE SignalPresent( /* [out] */ long *plSignalStrength) = 0; virtual HRESULT STDMETHODCALLTYPE put_Mode( /* [in] */ AMTunerModeType lMode) = 0; virtual HRESULT STDMETHODCALLTYPE get_Mode( /* [out] */ AMTunerModeType *plMode) = 0; virtual HRESULT STDMETHODCALLTYPE GetAvailableModes( /* [out] */ long *plModes) = 0; virtual HRESULT STDMETHODCALLTYPE RegisterNotificationCallBack( /* [in] */ IAMTunerNotification *pNotify, /* [in] */ long lEvents) = 0; virtual HRESULT STDMETHODCALLTYPE UnRegisterNotificationCallBack( /* [in] */ IAMTunerNotification *pNotify) = 0; }; #else /* C style interface */ typedef struct IAMTunerVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMTuner * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMTuner * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMTuner * This); HRESULT ( STDMETHODCALLTYPE *put_Channel )( IAMTuner * This, /* [in] */ long lChannel, /* [in] */ long lVideoSubChannel, /* [in] */ long lAudioSubChannel); HRESULT ( STDMETHODCALLTYPE *get_Channel )( IAMTuner * This, /* [out] */ long *plChannel, /* [out] */ long *plVideoSubChannel, /* [out] */ long *plAudioSubChannel); HRESULT ( STDMETHODCALLTYPE *ChannelMinMax )( IAMTuner * This, /* [out] */ long *lChannelMin, /* [out] */ long *lChannelMax); HRESULT ( STDMETHODCALLTYPE *put_CountryCode )( IAMTuner * This, /* [in] */ long lCountryCode); HRESULT ( STDMETHODCALLTYPE *get_CountryCode )( IAMTuner * This, /* [out] */ long *plCountryCode); HRESULT ( STDMETHODCALLTYPE *put_TuningSpace )( IAMTuner * This, /* [in] */ long lTuningSpace); HRESULT ( STDMETHODCALLTYPE *get_TuningSpace )( IAMTuner * This, /* [out] */ long *plTuningSpace); /* [local] */ HRESULT ( STDMETHODCALLTYPE *Logon )( IAMTuner * This, /* [in] */ HANDLE hCurrentUser); HRESULT ( STDMETHODCALLTYPE *Logout )( IAMTuner * This); HRESULT ( STDMETHODCALLTYPE *SignalPresent )( IAMTuner * This, /* [out] */ long *plSignalStrength); HRESULT ( STDMETHODCALLTYPE *put_Mode )( IAMTuner * This, /* [in] */ AMTunerModeType lMode); HRESULT ( STDMETHODCALLTYPE *get_Mode )( IAMTuner * This, /* [out] */ AMTunerModeType *plMode); HRESULT ( STDMETHODCALLTYPE *GetAvailableModes )( IAMTuner * This, /* [out] */ long *plModes); HRESULT ( STDMETHODCALLTYPE *RegisterNotificationCallBack )( IAMTuner * This, /* [in] */ IAMTunerNotification *pNotify, /* [in] */ long lEvents); HRESULT ( STDMETHODCALLTYPE *UnRegisterNotificationCallBack )( IAMTuner * This, /* [in] */ IAMTunerNotification *pNotify); END_INTERFACE } IAMTunerVtbl; interface IAMTuner { CONST_VTBL struct IAMTunerVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMTuner_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMTuner_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMTuner_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMTuner_put_Channel(This,lChannel,lVideoSubChannel,lAudioSubChannel) \ (This)->lpVtbl -> put_Channel(This,lChannel,lVideoSubChannel,lAudioSubChannel) #define IAMTuner_get_Channel(This,plChannel,plVideoSubChannel,plAudioSubChannel) \ (This)->lpVtbl -> get_Channel(This,plChannel,plVideoSubChannel,plAudioSubChannel) #define IAMTuner_ChannelMinMax(This,lChannelMin,lChannelMax) \ (This)->lpVtbl -> ChannelMinMax(This,lChannelMin,lChannelMax) #define IAMTuner_put_CountryCode(This,lCountryCode) \ (This)->lpVtbl -> put_CountryCode(This,lCountryCode) #define IAMTuner_get_CountryCode(This,plCountryCode) \ (This)->lpVtbl -> get_CountryCode(This,plCountryCode) #define IAMTuner_put_TuningSpace(This,lTuningSpace) \ (This)->lpVtbl -> put_TuningSpace(This,lTuningSpace) #define IAMTuner_get_TuningSpace(This,plTuningSpace) \ (This)->lpVtbl -> get_TuningSpace(This,plTuningSpace) #define IAMTuner_Logon(This,hCurrentUser) \ (This)->lpVtbl -> Logon(This,hCurrentUser) #define IAMTuner_Logout(This) \ (This)->lpVtbl -> Logout(This) #define IAMTuner_SignalPresent(This,plSignalStrength) \ (This)->lpVtbl -> SignalPresent(This,plSignalStrength) #define IAMTuner_put_Mode(This,lMode) \ (This)->lpVtbl -> put_Mode(This,lMode) #define IAMTuner_get_Mode(This,plMode) \ (This)->lpVtbl -> get_Mode(This,plMode) #define IAMTuner_GetAvailableModes(This,plModes) \ (This)->lpVtbl -> GetAvailableModes(This,plModes) #define IAMTuner_RegisterNotificationCallBack(This,pNotify,lEvents) \ (This)->lpVtbl -> RegisterNotificationCallBack(This,pNotify,lEvents) #define IAMTuner_UnRegisterNotificationCallBack(This,pNotify) \ (This)->lpVtbl -> UnRegisterNotificationCallBack(This,pNotify) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMTuner_put_Channel_Proxy( IAMTuner * This, /* [in] */ long lChannel, /* [in] */ long lVideoSubChannel, /* [in] */ long lAudioSubChannel); void __RPC_STUB IAMTuner_put_Channel_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTuner_get_Channel_Proxy( IAMTuner * This, /* [out] */ long *plChannel, /* [out] */ long *plVideoSubChannel, /* [out] */ long *plAudioSubChannel); void __RPC_STUB IAMTuner_get_Channel_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTuner_ChannelMinMax_Proxy( IAMTuner * This, /* [out] */ long *lChannelMin, /* [out] */ long *lChannelMax); void __RPC_STUB IAMTuner_ChannelMinMax_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTuner_put_CountryCode_Proxy( IAMTuner * This, /* [in] */ long lCountryCode); void __RPC_STUB IAMTuner_put_CountryCode_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTuner_get_CountryCode_Proxy( IAMTuner * This, /* [out] */ long *plCountryCode); void __RPC_STUB IAMTuner_get_CountryCode_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTuner_put_TuningSpace_Proxy( IAMTuner * This, /* [in] */ long lTuningSpace); void __RPC_STUB IAMTuner_put_TuningSpace_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTuner_get_TuningSpace_Proxy( IAMTuner * This, /* [out] */ long *plTuningSpace); void __RPC_STUB IAMTuner_get_TuningSpace_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); /* [local] */ HRESULT STDMETHODCALLTYPE IAMTuner_Logon_Proxy( IAMTuner * This, /* [in] */ HANDLE hCurrentUser); void __RPC_STUB IAMTuner_Logon_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTuner_Logout_Proxy( IAMTuner * This); void __RPC_STUB IAMTuner_Logout_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTuner_SignalPresent_Proxy( IAMTuner * This, /* [out] */ long *plSignalStrength); void __RPC_STUB IAMTuner_SignalPresent_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTuner_put_Mode_Proxy( IAMTuner * This, /* [in] */ AMTunerModeType lMode); void __RPC_STUB IAMTuner_put_Mode_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTuner_get_Mode_Proxy( IAMTuner * This, /* [out] */ AMTunerModeType *plMode); void __RPC_STUB IAMTuner_get_Mode_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTuner_GetAvailableModes_Proxy( IAMTuner * This, /* [out] */ long *plModes); void __RPC_STUB IAMTuner_GetAvailableModes_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTuner_RegisterNotificationCallBack_Proxy( IAMTuner * This, /* [in] */ IAMTunerNotification *pNotify, /* [in] */ long lEvents); void __RPC_STUB IAMTuner_RegisterNotificationCallBack_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTuner_UnRegisterNotificationCallBack_Proxy( IAMTuner * This, /* [in] */ IAMTunerNotification *pNotify); void __RPC_STUB IAMTuner_UnRegisterNotificationCallBack_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMTuner_INTERFACE_DEFINED__ */ #ifndef __IAMTunerNotification_INTERFACE_DEFINED__ #define __IAMTunerNotification_INTERFACE_DEFINED__ /* interface IAMTunerNotification */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IAMTunerNotification; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("211A8760-03AC-11d1-8D13-00AA00BD8339") IAMTunerNotification : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE OnEvent( /* [in] */ AMTunerEventType Event) = 0; }; #else /* C style interface */ typedef struct IAMTunerNotificationVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMTunerNotification * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMTunerNotification * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMTunerNotification * This); HRESULT ( STDMETHODCALLTYPE *OnEvent )( IAMTunerNotification * This, /* [in] */ AMTunerEventType Event); END_INTERFACE } IAMTunerNotificationVtbl; interface IAMTunerNotification { CONST_VTBL struct IAMTunerNotificationVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMTunerNotification_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMTunerNotification_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMTunerNotification_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMTunerNotification_OnEvent(This,Event) \ (This)->lpVtbl -> OnEvent(This,Event) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMTunerNotification_OnEvent_Proxy( IAMTunerNotification * This, /* [in] */ AMTunerEventType Event); void __RPC_STUB IAMTunerNotification_OnEvent_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMTunerNotification_INTERFACE_DEFINED__ */ #ifndef __IAMTVTuner_INTERFACE_DEFINED__ #define __IAMTVTuner_INTERFACE_DEFINED__ /* interface IAMTVTuner */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IAMTVTuner; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("211A8766-03AC-11d1-8D13-00AA00BD8339") IAMTVTuner : public IAMTuner { public: virtual HRESULT STDMETHODCALLTYPE get_AvailableTVFormats( /* [out] */ long *lAnalogVideoStandard) = 0; virtual HRESULT STDMETHODCALLTYPE get_TVFormat( /* [out] */ long *plAnalogVideoStandard) = 0; virtual HRESULT STDMETHODCALLTYPE AutoTune( /* [in] */ long lChannel, /* [out] */ long *plFoundSignal) = 0; virtual HRESULT STDMETHODCALLTYPE StoreAutoTune( void) = 0; virtual HRESULT STDMETHODCALLTYPE get_NumInputConnections( /* [out] */ long *plNumInputConnections) = 0; virtual HRESULT STDMETHODCALLTYPE put_InputType( /* [in] */ long lIndex, /* [in] */ TunerInputType InputType) = 0; virtual HRESULT STDMETHODCALLTYPE get_InputType( /* [in] */ long lIndex, /* [out] */ TunerInputType *pInputType) = 0; virtual HRESULT STDMETHODCALLTYPE put_ConnectInput( /* [in] */ long lIndex) = 0; virtual HRESULT STDMETHODCALLTYPE get_ConnectInput( /* [out] */ long *plIndex) = 0; virtual HRESULT STDMETHODCALLTYPE get_VideoFrequency( /* [out] */ long *lFreq) = 0; virtual HRESULT STDMETHODCALLTYPE get_AudioFrequency( /* [out] */ long *lFreq) = 0; }; #else /* C style interface */ typedef struct IAMTVTunerVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMTVTuner * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMTVTuner * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMTVTuner * This); HRESULT ( STDMETHODCALLTYPE *put_Channel )( IAMTVTuner * This, /* [in] */ long lChannel, /* [in] */ long lVideoSubChannel, /* [in] */ long lAudioSubChannel); HRESULT ( STDMETHODCALLTYPE *get_Channel )( IAMTVTuner * This, /* [out] */ long *plChannel, /* [out] */ long *plVideoSubChannel, /* [out] */ long *plAudioSubChannel); HRESULT ( STDMETHODCALLTYPE *ChannelMinMax )( IAMTVTuner * This, /* [out] */ long *lChannelMin, /* [out] */ long *lChannelMax); HRESULT ( STDMETHODCALLTYPE *put_CountryCode )( IAMTVTuner * This, /* [in] */ long lCountryCode); HRESULT ( STDMETHODCALLTYPE *get_CountryCode )( IAMTVTuner * This, /* [out] */ long *plCountryCode); HRESULT ( STDMETHODCALLTYPE *put_TuningSpace )( IAMTVTuner * This, /* [in] */ long lTuningSpace); HRESULT ( STDMETHODCALLTYPE *get_TuningSpace )( IAMTVTuner * This, /* [out] */ long *plTuningSpace); /* [local] */ HRESULT ( STDMETHODCALLTYPE *Logon )( IAMTVTuner * This, /* [in] */ HANDLE hCurrentUser); HRESULT ( STDMETHODCALLTYPE *Logout )( IAMTVTuner * This); HRESULT ( STDMETHODCALLTYPE *SignalPresent )( IAMTVTuner * This, /* [out] */ long *plSignalStrength); HRESULT ( STDMETHODCALLTYPE *put_Mode )( IAMTVTuner * This, /* [in] */ AMTunerModeType lMode); HRESULT ( STDMETHODCALLTYPE *get_Mode )( IAMTVTuner * This, /* [out] */ AMTunerModeType *plMode); HRESULT ( STDMETHODCALLTYPE *GetAvailableModes )( IAMTVTuner * This, /* [out] */ long *plModes); HRESULT ( STDMETHODCALLTYPE *RegisterNotificationCallBack )( IAMTVTuner * This, /* [in] */ IAMTunerNotification *pNotify, /* [in] */ long lEvents); HRESULT ( STDMETHODCALLTYPE *UnRegisterNotificationCallBack )( IAMTVTuner * This, /* [in] */ IAMTunerNotification *pNotify); HRESULT ( STDMETHODCALLTYPE *get_AvailableTVFormats )( IAMTVTuner * This, /* [out] */ long *lAnalogVideoStandard); HRESULT ( STDMETHODCALLTYPE *get_TVFormat )( IAMTVTuner * This, /* [out] */ long *plAnalogVideoStandard); HRESULT ( STDMETHODCALLTYPE *AutoTune )( IAMTVTuner * This, /* [in] */ long lChannel, /* [out] */ long *plFoundSignal); HRESULT ( STDMETHODCALLTYPE *StoreAutoTune )( IAMTVTuner * This); HRESULT ( STDMETHODCALLTYPE *get_NumInputConnections )( IAMTVTuner * This, /* [out] */ long *plNumInputConnections); HRESULT ( STDMETHODCALLTYPE *put_InputType )( IAMTVTuner * This, /* [in] */ long lIndex, /* [in] */ TunerInputType InputType); HRESULT ( STDMETHODCALLTYPE *get_InputType )( IAMTVTuner * This, /* [in] */ long lIndex, /* [out] */ TunerInputType *pInputType); HRESULT ( STDMETHODCALLTYPE *put_ConnectInput )( IAMTVTuner * This, /* [in] */ long lIndex); HRESULT ( STDMETHODCALLTYPE *get_ConnectInput )( IAMTVTuner * This, /* [out] */ long *plIndex); HRESULT ( STDMETHODCALLTYPE *get_VideoFrequency )( IAMTVTuner * This, /* [out] */ long *lFreq); HRESULT ( STDMETHODCALLTYPE *get_AudioFrequency )( IAMTVTuner * This, /* [out] */ long *lFreq); END_INTERFACE } IAMTVTunerVtbl; interface IAMTVTuner { CONST_VTBL struct IAMTVTunerVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMTVTuner_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMTVTuner_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMTVTuner_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMTVTuner_put_Channel(This,lChannel,lVideoSubChannel,lAudioSubChannel) \ (This)->lpVtbl -> put_Channel(This,lChannel,lVideoSubChannel,lAudioSubChannel) #define IAMTVTuner_get_Channel(This,plChannel,plVideoSubChannel,plAudioSubChannel) \ (This)->lpVtbl -> get_Channel(This,plChannel,plVideoSubChannel,plAudioSubChannel) #define IAMTVTuner_ChannelMinMax(This,lChannelMin,lChannelMax) \ (This)->lpVtbl -> ChannelMinMax(This,lChannelMin,lChannelMax) #define IAMTVTuner_put_CountryCode(This,lCountryCode) \ (This)->lpVtbl -> put_CountryCode(This,lCountryCode) #define IAMTVTuner_get_CountryCode(This,plCountryCode) \ (This)->lpVtbl -> get_CountryCode(This,plCountryCode) #define IAMTVTuner_put_TuningSpace(This,lTuningSpace) \ (This)->lpVtbl -> put_TuningSpace(This,lTuningSpace) #define IAMTVTuner_get_TuningSpace(This,plTuningSpace) \ (This)->lpVtbl -> get_TuningSpace(This,plTuningSpace) #define IAMTVTuner_Logon(This,hCurrentUser) \ (This)->lpVtbl -> Logon(This,hCurrentUser) #define IAMTVTuner_Logout(This) \ (This)->lpVtbl -> Logout(This) #define IAMTVTuner_SignalPresent(This,plSignalStrength) \ (This)->lpVtbl -> SignalPresent(This,plSignalStrength) #define IAMTVTuner_put_Mode(This,lMode) \ (This)->lpVtbl -> put_Mode(This,lMode) #define IAMTVTuner_get_Mode(This,plMode) \ (This)->lpVtbl -> get_Mode(This,plMode) #define IAMTVTuner_GetAvailableModes(This,plModes) \ (This)->lpVtbl -> GetAvailableModes(This,plModes) #define IAMTVTuner_RegisterNotificationCallBack(This,pNotify,lEvents) \ (This)->lpVtbl -> RegisterNotificationCallBack(This,pNotify,lEvents) #define IAMTVTuner_UnRegisterNotificationCallBack(This,pNotify) \ (This)->lpVtbl -> UnRegisterNotificationCallBack(This,pNotify) #define IAMTVTuner_get_AvailableTVFormats(This,lAnalogVideoStandard) \ (This)->lpVtbl -> get_AvailableTVFormats(This,lAnalogVideoStandard) #define IAMTVTuner_get_TVFormat(This,plAnalogVideoStandard) \ (This)->lpVtbl -> get_TVFormat(This,plAnalogVideoStandard) #define IAMTVTuner_AutoTune(This,lChannel,plFoundSignal) \ (This)->lpVtbl -> AutoTune(This,lChannel,plFoundSignal) #define IAMTVTuner_StoreAutoTune(This) \ (This)->lpVtbl -> StoreAutoTune(This) #define IAMTVTuner_get_NumInputConnections(This,plNumInputConnections) \ (This)->lpVtbl -> get_NumInputConnections(This,plNumInputConnections) #define IAMTVTuner_put_InputType(This,lIndex,InputType) \ (This)->lpVtbl -> put_InputType(This,lIndex,InputType) #define IAMTVTuner_get_InputType(This,lIndex,pInputType) \ (This)->lpVtbl -> get_InputType(This,lIndex,pInputType) #define IAMTVTuner_put_ConnectInput(This,lIndex) \ (This)->lpVtbl -> put_ConnectInput(This,lIndex) #define IAMTVTuner_get_ConnectInput(This,plIndex) \ (This)->lpVtbl -> get_ConnectInput(This,plIndex) #define IAMTVTuner_get_VideoFrequency(This,lFreq) \ (This)->lpVtbl -> get_VideoFrequency(This,lFreq) #define IAMTVTuner_get_AudioFrequency(This,lFreq) \ (This)->lpVtbl -> get_AudioFrequency(This,lFreq) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMTVTuner_get_AvailableTVFormats_Proxy( IAMTVTuner * This, /* [out] */ long *lAnalogVideoStandard); void __RPC_STUB IAMTVTuner_get_AvailableTVFormats_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTVTuner_get_TVFormat_Proxy( IAMTVTuner * This, /* [out] */ long *plAnalogVideoStandard); void __RPC_STUB IAMTVTuner_get_TVFormat_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTVTuner_AutoTune_Proxy( IAMTVTuner * This, /* [in] */ long lChannel, /* [out] */ long *plFoundSignal); void __RPC_STUB IAMTVTuner_AutoTune_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTVTuner_StoreAutoTune_Proxy( IAMTVTuner * This); void __RPC_STUB IAMTVTuner_StoreAutoTune_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTVTuner_get_NumInputConnections_Proxy( IAMTVTuner * This, /* [out] */ long *plNumInputConnections); void __RPC_STUB IAMTVTuner_get_NumInputConnections_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTVTuner_put_InputType_Proxy( IAMTVTuner * This, /* [in] */ long lIndex, /* [in] */ TunerInputType InputType); void __RPC_STUB IAMTVTuner_put_InputType_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTVTuner_get_InputType_Proxy( IAMTVTuner * This, /* [in] */ long lIndex, /* [out] */ TunerInputType *pInputType); void __RPC_STUB IAMTVTuner_get_InputType_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTVTuner_put_ConnectInput_Proxy( IAMTVTuner * This, /* [in] */ long lIndex); void __RPC_STUB IAMTVTuner_put_ConnectInput_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTVTuner_get_ConnectInput_Proxy( IAMTVTuner * This, /* [out] */ long *plIndex); void __RPC_STUB IAMTVTuner_get_ConnectInput_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTVTuner_get_VideoFrequency_Proxy( IAMTVTuner * This, /* [out] */ long *lFreq); void __RPC_STUB IAMTVTuner_get_VideoFrequency_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTVTuner_get_AudioFrequency_Proxy( IAMTVTuner * This, /* [out] */ long *lFreq); void __RPC_STUB IAMTVTuner_get_AudioFrequency_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMTVTuner_INTERFACE_DEFINED__ */ #ifndef __IBPCSatelliteTuner_INTERFACE_DEFINED__ #define __IBPCSatelliteTuner_INTERFACE_DEFINED__ /* interface IBPCSatelliteTuner */ /* [unique][uuid][local][object] */ EXTERN_C const IID IID_IBPCSatelliteTuner; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("211A8765-03AC-11d1-8D13-00AA00BD8339") IBPCSatelliteTuner : public IAMTuner { public: virtual HRESULT STDMETHODCALLTYPE get_DefaultSubChannelTypes( /* [out] */ long *plDefaultVideoType, /* [out] */ long *plDefaultAudioType) = 0; virtual HRESULT STDMETHODCALLTYPE put_DefaultSubChannelTypes( /* [in] */ long lDefaultVideoType, /* [in] */ long lDefaultAudioType) = 0; virtual HRESULT STDMETHODCALLTYPE IsTapingPermitted( void) = 0; }; #else /* C style interface */ typedef struct IBPCSatelliteTunerVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IBPCSatelliteTuner * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IBPCSatelliteTuner * This); ULONG ( STDMETHODCALLTYPE *Release )( IBPCSatelliteTuner * This); HRESULT ( STDMETHODCALLTYPE *put_Channel )( IBPCSatelliteTuner * This, /* [in] */ long lChannel, /* [in] */ long lVideoSubChannel, /* [in] */ long lAudioSubChannel); HRESULT ( STDMETHODCALLTYPE *get_Channel )( IBPCSatelliteTuner * This, /* [out] */ long *plChannel, /* [out] */ long *plVideoSubChannel, /* [out] */ long *plAudioSubChannel); HRESULT ( STDMETHODCALLTYPE *ChannelMinMax )( IBPCSatelliteTuner * This, /* [out] */ long *lChannelMin, /* [out] */ long *lChannelMax); HRESULT ( STDMETHODCALLTYPE *put_CountryCode )( IBPCSatelliteTuner * This, /* [in] */ long lCountryCode); HRESULT ( STDMETHODCALLTYPE *get_CountryCode )( IBPCSatelliteTuner * This, /* [out] */ long *plCountryCode); HRESULT ( STDMETHODCALLTYPE *put_TuningSpace )( IBPCSatelliteTuner * This, /* [in] */ long lTuningSpace); HRESULT ( STDMETHODCALLTYPE *get_TuningSpace )( IBPCSatelliteTuner * This, /* [out] */ long *plTuningSpace); /* [local] */ HRESULT ( STDMETHODCALLTYPE *Logon )( IBPCSatelliteTuner * This, /* [in] */ HANDLE hCurrentUser); HRESULT ( STDMETHODCALLTYPE *Logout )( IBPCSatelliteTuner * This); HRESULT ( STDMETHODCALLTYPE *SignalPresent )( IBPCSatelliteTuner * This, /* [out] */ long *plSignalStrength); HRESULT ( STDMETHODCALLTYPE *put_Mode )( IBPCSatelliteTuner * This, /* [in] */ AMTunerModeType lMode); HRESULT ( STDMETHODCALLTYPE *get_Mode )( IBPCSatelliteTuner * This, /* [out] */ AMTunerModeType *plMode); HRESULT ( STDMETHODCALLTYPE *GetAvailableModes )( IBPCSatelliteTuner * This, /* [out] */ long *plModes); HRESULT ( STDMETHODCALLTYPE *RegisterNotificationCallBack )( IBPCSatelliteTuner * This, /* [in] */ IAMTunerNotification *pNotify, /* [in] */ long lEvents); HRESULT ( STDMETHODCALLTYPE *UnRegisterNotificationCallBack )( IBPCSatelliteTuner * This, /* [in] */ IAMTunerNotification *pNotify); HRESULT ( STDMETHODCALLTYPE *get_DefaultSubChannelTypes )( IBPCSatelliteTuner * This, /* [out] */ long *plDefaultVideoType, /* [out] */ long *plDefaultAudioType); HRESULT ( STDMETHODCALLTYPE *put_DefaultSubChannelTypes )( IBPCSatelliteTuner * This, /* [in] */ long lDefaultVideoType, /* [in] */ long lDefaultAudioType); HRESULT ( STDMETHODCALLTYPE *IsTapingPermitted )( IBPCSatelliteTuner * This); END_INTERFACE } IBPCSatelliteTunerVtbl; interface IBPCSatelliteTuner { CONST_VTBL struct IBPCSatelliteTunerVtbl *lpVtbl; }; #ifdef COBJMACROS #define IBPCSatelliteTuner_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IBPCSatelliteTuner_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IBPCSatelliteTuner_Release(This) \ (This)->lpVtbl -> Release(This) #define IBPCSatelliteTuner_put_Channel(This,lChannel,lVideoSubChannel,lAudioSubChannel) \ (This)->lpVtbl -> put_Channel(This,lChannel,lVideoSubChannel,lAudioSubChannel) #define IBPCSatelliteTuner_get_Channel(This,plChannel,plVideoSubChannel,plAudioSubChannel) \ (This)->lpVtbl -> get_Channel(This,plChannel,plVideoSubChannel,plAudioSubChannel) #define IBPCSatelliteTuner_ChannelMinMax(This,lChannelMin,lChannelMax) \ (This)->lpVtbl -> ChannelMinMax(This,lChannelMin,lChannelMax) #define IBPCSatelliteTuner_put_CountryCode(This,lCountryCode) \ (This)->lpVtbl -> put_CountryCode(This,lCountryCode) #define IBPCSatelliteTuner_get_CountryCode(This,plCountryCode) \ (This)->lpVtbl -> get_CountryCode(This,plCountryCode) #define IBPCSatelliteTuner_put_TuningSpace(This,lTuningSpace) \ (This)->lpVtbl -> put_TuningSpace(This,lTuningSpace) #define IBPCSatelliteTuner_get_TuningSpace(This,plTuningSpace) \ (This)->lpVtbl -> get_TuningSpace(This,plTuningSpace) #define IBPCSatelliteTuner_Logon(This,hCurrentUser) \ (This)->lpVtbl -> Logon(This,hCurrentUser) #define IBPCSatelliteTuner_Logout(This) \ (This)->lpVtbl -> Logout(This) #define IBPCSatelliteTuner_SignalPresent(This,plSignalStrength) \ (This)->lpVtbl -> SignalPresent(This,plSignalStrength) #define IBPCSatelliteTuner_put_Mode(This,lMode) \ (This)->lpVtbl -> put_Mode(This,lMode) #define IBPCSatelliteTuner_get_Mode(This,plMode) \ (This)->lpVtbl -> get_Mode(This,plMode) #define IBPCSatelliteTuner_GetAvailableModes(This,plModes) \ (This)->lpVtbl -> GetAvailableModes(This,plModes) #define IBPCSatelliteTuner_RegisterNotificationCallBack(This,pNotify,lEvents) \ (This)->lpVtbl -> RegisterNotificationCallBack(This,pNotify,lEvents) #define IBPCSatelliteTuner_UnRegisterNotificationCallBack(This,pNotify) \ (This)->lpVtbl -> UnRegisterNotificationCallBack(This,pNotify) #define IBPCSatelliteTuner_get_DefaultSubChannelTypes(This,plDefaultVideoType,plDefaultAudioType) \ (This)->lpVtbl -> get_DefaultSubChannelTypes(This,plDefaultVideoType,plDefaultAudioType) #define IBPCSatelliteTuner_put_DefaultSubChannelTypes(This,lDefaultVideoType,lDefaultAudioType) \ (This)->lpVtbl -> put_DefaultSubChannelTypes(This,lDefaultVideoType,lDefaultAudioType) #define IBPCSatelliteTuner_IsTapingPermitted(This) \ (This)->lpVtbl -> IsTapingPermitted(This) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IBPCSatelliteTuner_get_DefaultSubChannelTypes_Proxy( IBPCSatelliteTuner * This, /* [out] */ long *plDefaultVideoType, /* [out] */ long *plDefaultAudioType); void __RPC_STUB IBPCSatelliteTuner_get_DefaultSubChannelTypes_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IBPCSatelliteTuner_put_DefaultSubChannelTypes_Proxy( IBPCSatelliteTuner * This, /* [in] */ long lDefaultVideoType, /* [in] */ long lDefaultAudioType); void __RPC_STUB IBPCSatelliteTuner_put_DefaultSubChannelTypes_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IBPCSatelliteTuner_IsTapingPermitted_Proxy( IBPCSatelliteTuner * This); void __RPC_STUB IBPCSatelliteTuner_IsTapingPermitted_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IBPCSatelliteTuner_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0177 */ /* [local] */ typedef enum tagTVAudioMode { AMTVAUDIO_MODE_MONO = 0x1, AMTVAUDIO_MODE_STEREO = 0x2, AMTVAUDIO_MODE_LANG_A = 0x10, AMTVAUDIO_MODE_LANG_B = 0x20, AMTVAUDIO_MODE_LANG_C = 0x40 } TVAudioMode; typedef enum tagAMTVAudioEventType { AMTVAUDIO_EVENT_CHANGED = 0x1 } AMTVAudioEventType; extern RPC_IF_HANDLE __MIDL_itf_strmif_0177_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0177_v0_0_s_ifspec; #ifndef __IAMTVAudio_INTERFACE_DEFINED__ #define __IAMTVAudio_INTERFACE_DEFINED__ /* interface IAMTVAudio */ /* [unique][uuid][local][object] */ EXTERN_C const IID IID_IAMTVAudio; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("83EC1C30-23D1-11d1-99E6-00A0C9560266") IAMTVAudio : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE GetHardwareSupportedTVAudioModes( /* [out] */ long *plModes) = 0; virtual HRESULT STDMETHODCALLTYPE GetAvailableTVAudioModes( /* [out] */ long *plModes) = 0; virtual HRESULT STDMETHODCALLTYPE get_TVAudioMode( /* [out] */ long *plMode) = 0; virtual HRESULT STDMETHODCALLTYPE put_TVAudioMode( /* [in] */ long lMode) = 0; virtual HRESULT STDMETHODCALLTYPE RegisterNotificationCallBack( /* [in] */ IAMTunerNotification *pNotify, /* [in] */ long lEvents) = 0; virtual HRESULT STDMETHODCALLTYPE UnRegisterNotificationCallBack( IAMTunerNotification *pNotify) = 0; }; #else /* C style interface */ typedef struct IAMTVAudioVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMTVAudio * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMTVAudio * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMTVAudio * This); HRESULT ( STDMETHODCALLTYPE *GetHardwareSupportedTVAudioModes )( IAMTVAudio * This, /* [out] */ long *plModes); HRESULT ( STDMETHODCALLTYPE *GetAvailableTVAudioModes )( IAMTVAudio * This, /* [out] */ long *plModes); HRESULT ( STDMETHODCALLTYPE *get_TVAudioMode )( IAMTVAudio * This, /* [out] */ long *plMode); HRESULT ( STDMETHODCALLTYPE *put_TVAudioMode )( IAMTVAudio * This, /* [in] */ long lMode); HRESULT ( STDMETHODCALLTYPE *RegisterNotificationCallBack )( IAMTVAudio * This, /* [in] */ IAMTunerNotification *pNotify, /* [in] */ long lEvents); HRESULT ( STDMETHODCALLTYPE *UnRegisterNotificationCallBack )( IAMTVAudio * This, IAMTunerNotification *pNotify); END_INTERFACE } IAMTVAudioVtbl; interface IAMTVAudio { CONST_VTBL struct IAMTVAudioVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMTVAudio_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMTVAudio_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMTVAudio_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMTVAudio_GetHardwareSupportedTVAudioModes(This,plModes) \ (This)->lpVtbl -> GetHardwareSupportedTVAudioModes(This,plModes) #define IAMTVAudio_GetAvailableTVAudioModes(This,plModes) \ (This)->lpVtbl -> GetAvailableTVAudioModes(This,plModes) #define IAMTVAudio_get_TVAudioMode(This,plMode) \ (This)->lpVtbl -> get_TVAudioMode(This,plMode) #define IAMTVAudio_put_TVAudioMode(This,lMode) \ (This)->lpVtbl -> put_TVAudioMode(This,lMode) #define IAMTVAudio_RegisterNotificationCallBack(This,pNotify,lEvents) \ (This)->lpVtbl -> RegisterNotificationCallBack(This,pNotify,lEvents) #define IAMTVAudio_UnRegisterNotificationCallBack(This,pNotify) \ (This)->lpVtbl -> UnRegisterNotificationCallBack(This,pNotify) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMTVAudio_GetHardwareSupportedTVAudioModes_Proxy( IAMTVAudio * This, /* [out] */ long *plModes); void __RPC_STUB IAMTVAudio_GetHardwareSupportedTVAudioModes_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTVAudio_GetAvailableTVAudioModes_Proxy( IAMTVAudio * This, /* [out] */ long *plModes); void __RPC_STUB IAMTVAudio_GetAvailableTVAudioModes_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTVAudio_get_TVAudioMode_Proxy( IAMTVAudio * This, /* [out] */ long *plMode); void __RPC_STUB IAMTVAudio_get_TVAudioMode_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTVAudio_put_TVAudioMode_Proxy( IAMTVAudio * This, /* [in] */ long lMode); void __RPC_STUB IAMTVAudio_put_TVAudioMode_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTVAudio_RegisterNotificationCallBack_Proxy( IAMTVAudio * This, /* [in] */ IAMTunerNotification *pNotify, /* [in] */ long lEvents); void __RPC_STUB IAMTVAudio_RegisterNotificationCallBack_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTVAudio_UnRegisterNotificationCallBack_Proxy( IAMTVAudio * This, IAMTunerNotification *pNotify); void __RPC_STUB IAMTVAudio_UnRegisterNotificationCallBack_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMTVAudio_INTERFACE_DEFINED__ */ #ifndef __IAMTVAudioNotification_INTERFACE_DEFINED__ #define __IAMTVAudioNotification_INTERFACE_DEFINED__ /* interface IAMTVAudioNotification */ /* [unique][uuid][local][object] */ EXTERN_C const IID IID_IAMTVAudioNotification; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("83EC1C33-23D1-11d1-99E6-00A0C9560266") IAMTVAudioNotification : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE OnEvent( /* [in] */ AMTVAudioEventType Event) = 0; }; #else /* C style interface */ typedef struct IAMTVAudioNotificationVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMTVAudioNotification * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMTVAudioNotification * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMTVAudioNotification * This); HRESULT ( STDMETHODCALLTYPE *OnEvent )( IAMTVAudioNotification * This, /* [in] */ AMTVAudioEventType Event); END_INTERFACE } IAMTVAudioNotificationVtbl; interface IAMTVAudioNotification { CONST_VTBL struct IAMTVAudioNotificationVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMTVAudioNotification_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMTVAudioNotification_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMTVAudioNotification_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMTVAudioNotification_OnEvent(This,Event) \ (This)->lpVtbl -> OnEvent(This,Event) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMTVAudioNotification_OnEvent_Proxy( IAMTVAudioNotification * This, /* [in] */ AMTVAudioEventType Event); void __RPC_STUB IAMTVAudioNotification_OnEvent_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMTVAudioNotification_INTERFACE_DEFINED__ */ #ifndef __IAMAnalogVideoEncoder_INTERFACE_DEFINED__ #define __IAMAnalogVideoEncoder_INTERFACE_DEFINED__ /* interface IAMAnalogVideoEncoder */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IAMAnalogVideoEncoder; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("C6E133B0-30AC-11d0-A18C-00A0C9118956") IAMAnalogVideoEncoder : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE get_AvailableTVFormats( /* [out] */ long *lAnalogVideoStandard) = 0; virtual HRESULT STDMETHODCALLTYPE put_TVFormat( /* [in] */ long lAnalogVideoStandard) = 0; virtual HRESULT STDMETHODCALLTYPE get_TVFormat( /* [out] */ long *plAnalogVideoStandard) = 0; virtual HRESULT STDMETHODCALLTYPE put_CopyProtection( /* [in] */ long lVideoCopyProtection) = 0; virtual HRESULT STDMETHODCALLTYPE get_CopyProtection( /* [out] */ long *lVideoCopyProtection) = 0; virtual HRESULT STDMETHODCALLTYPE put_CCEnable( /* [in] */ long lCCEnable) = 0; virtual HRESULT STDMETHODCALLTYPE get_CCEnable( /* [out] */ long *lCCEnable) = 0; }; #else /* C style interface */ typedef struct IAMAnalogVideoEncoderVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMAnalogVideoEncoder * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMAnalogVideoEncoder * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMAnalogVideoEncoder * This); HRESULT ( STDMETHODCALLTYPE *get_AvailableTVFormats )( IAMAnalogVideoEncoder * This, /* [out] */ long *lAnalogVideoStandard); HRESULT ( STDMETHODCALLTYPE *put_TVFormat )( IAMAnalogVideoEncoder * This, /* [in] */ long lAnalogVideoStandard); HRESULT ( STDMETHODCALLTYPE *get_TVFormat )( IAMAnalogVideoEncoder * This, /* [out] */ long *plAnalogVideoStandard); HRESULT ( STDMETHODCALLTYPE *put_CopyProtection )( IAMAnalogVideoEncoder * This, /* [in] */ long lVideoCopyProtection); HRESULT ( STDMETHODCALLTYPE *get_CopyProtection )( IAMAnalogVideoEncoder * This, /* [out] */ long *lVideoCopyProtection); HRESULT ( STDMETHODCALLTYPE *put_CCEnable )( IAMAnalogVideoEncoder * This, /* [in] */ long lCCEnable); HRESULT ( STDMETHODCALLTYPE *get_CCEnable )( IAMAnalogVideoEncoder * This, /* [out] */ long *lCCEnable); END_INTERFACE } IAMAnalogVideoEncoderVtbl; interface IAMAnalogVideoEncoder { CONST_VTBL struct IAMAnalogVideoEncoderVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMAnalogVideoEncoder_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMAnalogVideoEncoder_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMAnalogVideoEncoder_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMAnalogVideoEncoder_get_AvailableTVFormats(This,lAnalogVideoStandard) \ (This)->lpVtbl -> get_AvailableTVFormats(This,lAnalogVideoStandard) #define IAMAnalogVideoEncoder_put_TVFormat(This,lAnalogVideoStandard) \ (This)->lpVtbl -> put_TVFormat(This,lAnalogVideoStandard) #define IAMAnalogVideoEncoder_get_TVFormat(This,plAnalogVideoStandard) \ (This)->lpVtbl -> get_TVFormat(This,plAnalogVideoStandard) #define IAMAnalogVideoEncoder_put_CopyProtection(This,lVideoCopyProtection) \ (This)->lpVtbl -> put_CopyProtection(This,lVideoCopyProtection) #define IAMAnalogVideoEncoder_get_CopyProtection(This,lVideoCopyProtection) \ (This)->lpVtbl -> get_CopyProtection(This,lVideoCopyProtection) #define IAMAnalogVideoEncoder_put_CCEnable(This,lCCEnable) \ (This)->lpVtbl -> put_CCEnable(This,lCCEnable) #define IAMAnalogVideoEncoder_get_CCEnable(This,lCCEnable) \ (This)->lpVtbl -> get_CCEnable(This,lCCEnable) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMAnalogVideoEncoder_get_AvailableTVFormats_Proxy( IAMAnalogVideoEncoder * This, /* [out] */ long *lAnalogVideoStandard); void __RPC_STUB IAMAnalogVideoEncoder_get_AvailableTVFormats_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMAnalogVideoEncoder_put_TVFormat_Proxy( IAMAnalogVideoEncoder * This, /* [in] */ long lAnalogVideoStandard); void __RPC_STUB IAMAnalogVideoEncoder_put_TVFormat_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMAnalogVideoEncoder_get_TVFormat_Proxy( IAMAnalogVideoEncoder * This, /* [out] */ long *plAnalogVideoStandard); void __RPC_STUB IAMAnalogVideoEncoder_get_TVFormat_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMAnalogVideoEncoder_put_CopyProtection_Proxy( IAMAnalogVideoEncoder * This, /* [in] */ long lVideoCopyProtection); void __RPC_STUB IAMAnalogVideoEncoder_put_CopyProtection_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMAnalogVideoEncoder_get_CopyProtection_Proxy( IAMAnalogVideoEncoder * This, /* [out] */ long *lVideoCopyProtection); void __RPC_STUB IAMAnalogVideoEncoder_get_CopyProtection_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMAnalogVideoEncoder_put_CCEnable_Proxy( IAMAnalogVideoEncoder * This, /* [in] */ long lCCEnable); void __RPC_STUB IAMAnalogVideoEncoder_put_CCEnable_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMAnalogVideoEncoder_get_CCEnable_Proxy( IAMAnalogVideoEncoder * This, /* [out] */ long *lCCEnable); void __RPC_STUB IAMAnalogVideoEncoder_get_CCEnable_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMAnalogVideoEncoder_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0180 */ /* [local] */ typedef /* [public] */ enum __MIDL___MIDL_itf_strmif_0180_0001 { AMPROPERTY_PIN_CATEGORY = 0, AMPROPERTY_PIN_MEDIUM = AMPROPERTY_PIN_CATEGORY + 1 } AMPROPERTY_PIN; #ifndef _IKsPropertySet_ #define _IKsPropertySet_ #define KSPROPERTY_SUPPORT_GET 1 #define KSPROPERTY_SUPPORT_SET 2 extern RPC_IF_HANDLE __MIDL_itf_strmif_0180_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0180_v0_0_s_ifspec; #ifndef __IKsPropertySet_INTERFACE_DEFINED__ #define __IKsPropertySet_INTERFACE_DEFINED__ /* interface IKsPropertySet */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IKsPropertySet; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("31EFAC30-515C-11d0-A9AA-00AA0061BE93") IKsPropertySet : public IUnknown { public: virtual /* [local] */ HRESULT STDMETHODCALLTYPE Set( /* [in] */ REFGUID guidPropSet, /* [in] */ DWORD dwPropID, /* [size_is][in] */ LPVOID pInstanceData, /* [in] */ DWORD cbInstanceData, /* [size_is][in] */ LPVOID pPropData, /* [in] */ DWORD cbPropData) = 0; virtual /* [local] */ HRESULT STDMETHODCALLTYPE Get( /* [in] */ REFGUID guidPropSet, /* [in] */ DWORD dwPropID, /* [size_is][in] */ LPVOID pInstanceData, /* [in] */ DWORD cbInstanceData, /* [size_is][out] */ LPVOID pPropData, /* [in] */ DWORD cbPropData, /* [out] */ DWORD *pcbReturned) = 0; virtual HRESULT STDMETHODCALLTYPE QuerySupported( /* [in] */ REFGUID guidPropSet, /* [in] */ DWORD dwPropID, /* [out] */ DWORD *pTypeSupport) = 0; }; #else /* C style interface */ typedef struct IKsPropertySetVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IKsPropertySet * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IKsPropertySet * This); ULONG ( STDMETHODCALLTYPE *Release )( IKsPropertySet * This); /* [local] */ HRESULT ( STDMETHODCALLTYPE *Set )( IKsPropertySet * This, /* [in] */ REFGUID guidPropSet, /* [in] */ DWORD dwPropID, /* [size_is][in] */ LPVOID pInstanceData, /* [in] */ DWORD cbInstanceData, /* [size_is][in] */ LPVOID pPropData, /* [in] */ DWORD cbPropData); /* [local] */ HRESULT ( STDMETHODCALLTYPE *Get )( IKsPropertySet * This, /* [in] */ REFGUID guidPropSet, /* [in] */ DWORD dwPropID, /* [size_is][in] */ LPVOID pInstanceData, /* [in] */ DWORD cbInstanceData, /* [size_is][out] */ LPVOID pPropData, /* [in] */ DWORD cbPropData, /* [out] */ DWORD *pcbReturned); HRESULT ( STDMETHODCALLTYPE *QuerySupported )( IKsPropertySet * This, /* [in] */ REFGUID guidPropSet, /* [in] */ DWORD dwPropID, /* [out] */ DWORD *pTypeSupport); END_INTERFACE } IKsPropertySetVtbl; interface IKsPropertySet { CONST_VTBL struct IKsPropertySetVtbl *lpVtbl; }; #ifdef COBJMACROS #define IKsPropertySet_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IKsPropertySet_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IKsPropertySet_Release(This) \ (This)->lpVtbl -> Release(This) #define IKsPropertySet_Set(This,guidPropSet,dwPropID,pInstanceData,cbInstanceData,pPropData,cbPropData) \ (This)->lpVtbl -> Set(This,guidPropSet,dwPropID,pInstanceData,cbInstanceData,pPropData,cbPropData) #define IKsPropertySet_Get(This,guidPropSet,dwPropID,pInstanceData,cbInstanceData,pPropData,cbPropData,pcbReturned) \ (This)->lpVtbl -> Get(This,guidPropSet,dwPropID,pInstanceData,cbInstanceData,pPropData,cbPropData,pcbReturned) #define IKsPropertySet_QuerySupported(This,guidPropSet,dwPropID,pTypeSupport) \ (This)->lpVtbl -> QuerySupported(This,guidPropSet,dwPropID,pTypeSupport) #endif /* COBJMACROS */ #endif /* C style interface */ /* [call_as] */ HRESULT STDMETHODCALLTYPE IKsPropertySet_RemoteSet_Proxy( IKsPropertySet * This, /* [in] */ REFGUID guidPropSet, /* [in] */ DWORD dwPropID, /* [size_is][in] */ byte *pInstanceData, /* [in] */ DWORD cbInstanceData, /* [size_is][in] */ byte *pPropData, /* [in] */ DWORD cbPropData); void __RPC_STUB IKsPropertySet_RemoteSet_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); /* [call_as] */ HRESULT STDMETHODCALLTYPE IKsPropertySet_RemoteGet_Proxy( IKsPropertySet * This, /* [in] */ REFGUID guidPropSet, /* [in] */ DWORD dwPropID, /* [size_is][in] */ byte *pInstanceData, /* [in] */ DWORD cbInstanceData, /* [size_is][out] */ byte *pPropData, /* [in] */ DWORD cbPropData, /* [out] */ DWORD *pcbReturned); void __RPC_STUB IKsPropertySet_RemoteGet_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IKsPropertySet_QuerySupported_Proxy( IKsPropertySet * This, /* [in] */ REFGUID guidPropSet, /* [in] */ DWORD dwPropID, /* [out] */ DWORD *pTypeSupport); void __RPC_STUB IKsPropertySet_QuerySupported_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IKsPropertySet_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0181 */ /* [local] */ #endif // _IKsPropertySet_ extern RPC_IF_HANDLE __MIDL_itf_strmif_0181_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0181_v0_0_s_ifspec; #ifndef __IMediaPropertyBag_INTERFACE_DEFINED__ #define __IMediaPropertyBag_INTERFACE_DEFINED__ /* interface IMediaPropertyBag */ /* [unique][uuid][object] */ typedef IMediaPropertyBag *LPMEDIAPROPERTYBAG; EXTERN_C const IID IID_IMediaPropertyBag; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("6025A880-C0D5-11d0-BD4E-00A0C911CE86") IMediaPropertyBag : public IPropertyBag { public: virtual HRESULT STDMETHODCALLTYPE EnumProperty( /* [in] */ ULONG iProperty, /* [out][in] */ VARIANT *pvarPropertyName, /* [out][in] */ VARIANT *pvarPropertyValue) = 0; }; #else /* C style interface */ typedef struct IMediaPropertyBagVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IMediaPropertyBag * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IMediaPropertyBag * This); ULONG ( STDMETHODCALLTYPE *Release )( IMediaPropertyBag * This); /* [local] */ HRESULT ( STDMETHODCALLTYPE *Read )( IMediaPropertyBag * This, /* [in] */ LPCOLESTR pszPropName, /* [out][in] */ VARIANT *pVar, /* [in] */ IErrorLog *pErrorLog); HRESULT ( STDMETHODCALLTYPE *Write )( IMediaPropertyBag * This, /* [in] */ LPCOLESTR pszPropName, /* [in] */ VARIANT *pVar); HRESULT ( STDMETHODCALLTYPE *EnumProperty )( IMediaPropertyBag * This, /* [in] */ ULONG iProperty, /* [out][in] */ VARIANT *pvarPropertyName, /* [out][in] */ VARIANT *pvarPropertyValue); END_INTERFACE } IMediaPropertyBagVtbl; interface IMediaPropertyBag { CONST_VTBL struct IMediaPropertyBagVtbl *lpVtbl; }; #ifdef COBJMACROS #define IMediaPropertyBag_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IMediaPropertyBag_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IMediaPropertyBag_Release(This) \ (This)->lpVtbl -> Release(This) #define IMediaPropertyBag_Read(This,pszPropName,pVar,pErrorLog) \ (This)->lpVtbl -> Read(This,pszPropName,pVar,pErrorLog) #define IMediaPropertyBag_Write(This,pszPropName,pVar) \ (This)->lpVtbl -> Write(This,pszPropName,pVar) #define IMediaPropertyBag_EnumProperty(This,iProperty,pvarPropertyName,pvarPropertyValue) \ (This)->lpVtbl -> EnumProperty(This,iProperty,pvarPropertyName,pvarPropertyValue) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IMediaPropertyBag_EnumProperty_Proxy( IMediaPropertyBag * This, /* [in] */ ULONG iProperty, /* [out][in] */ VARIANT *pvarPropertyName, /* [out][in] */ VARIANT *pvarPropertyValue); void __RPC_STUB IMediaPropertyBag_EnumProperty_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IMediaPropertyBag_INTERFACE_DEFINED__ */ #ifndef __IPersistMediaPropertyBag_INTERFACE_DEFINED__ #define __IPersistMediaPropertyBag_INTERFACE_DEFINED__ /* interface IPersistMediaPropertyBag */ /* [unique][uuid][object] */ typedef IPersistMediaPropertyBag *LPPERSISTMEDIAPROPERTYBAG; EXTERN_C const IID IID_IPersistMediaPropertyBag; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("5738E040-B67F-11d0-BD4D-00A0C911CE86") IPersistMediaPropertyBag : public IPersist { public: virtual HRESULT STDMETHODCALLTYPE InitNew( void) = 0; virtual HRESULT STDMETHODCALLTYPE Load( /* [in] */ IMediaPropertyBag *pPropBag, /* [in] */ IErrorLog *pErrorLog) = 0; virtual HRESULT STDMETHODCALLTYPE Save( /* [in] */ IMediaPropertyBag *pPropBag, /* [in] */ BOOL fClearDirty, /* [in] */ BOOL fSaveAllProperties) = 0; }; #else /* C style interface */ typedef struct IPersistMediaPropertyBagVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IPersistMediaPropertyBag * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IPersistMediaPropertyBag * This); ULONG ( STDMETHODCALLTYPE *Release )( IPersistMediaPropertyBag * This); HRESULT ( STDMETHODCALLTYPE *GetClassID )( IPersistMediaPropertyBag * This, /* [out] */ CLSID *pClassID); HRESULT ( STDMETHODCALLTYPE *InitNew )( IPersistMediaPropertyBag * This); HRESULT ( STDMETHODCALLTYPE *Load )( IPersistMediaPropertyBag * This, /* [in] */ IMediaPropertyBag *pPropBag, /* [in] */ IErrorLog *pErrorLog); HRESULT ( STDMETHODCALLTYPE *Save )( IPersistMediaPropertyBag * This, /* [in] */ IMediaPropertyBag *pPropBag, /* [in] */ BOOL fClearDirty, /* [in] */ BOOL fSaveAllProperties); END_INTERFACE } IPersistMediaPropertyBagVtbl; interface IPersistMediaPropertyBag { CONST_VTBL struct IPersistMediaPropertyBagVtbl *lpVtbl; }; #ifdef COBJMACROS #define IPersistMediaPropertyBag_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IPersistMediaPropertyBag_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IPersistMediaPropertyBag_Release(This) \ (This)->lpVtbl -> Release(This) #define IPersistMediaPropertyBag_GetClassID(This,pClassID) \ (This)->lpVtbl -> GetClassID(This,pClassID) #define IPersistMediaPropertyBag_InitNew(This) \ (This)->lpVtbl -> InitNew(This) #define IPersistMediaPropertyBag_Load(This,pPropBag,pErrorLog) \ (This)->lpVtbl -> Load(This,pPropBag,pErrorLog) #define IPersistMediaPropertyBag_Save(This,pPropBag,fClearDirty,fSaveAllProperties) \ (This)->lpVtbl -> Save(This,pPropBag,fClearDirty,fSaveAllProperties) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IPersistMediaPropertyBag_InitNew_Proxy( IPersistMediaPropertyBag * This); void __RPC_STUB IPersistMediaPropertyBag_InitNew_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IPersistMediaPropertyBag_Load_Proxy( IPersistMediaPropertyBag * This, /* [in] */ IMediaPropertyBag *pPropBag, /* [in] */ IErrorLog *pErrorLog); void __RPC_STUB IPersistMediaPropertyBag_Load_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IPersistMediaPropertyBag_Save_Proxy( IPersistMediaPropertyBag * This, /* [in] */ IMediaPropertyBag *pPropBag, /* [in] */ BOOL fClearDirty, /* [in] */ BOOL fSaveAllProperties); void __RPC_STUB IPersistMediaPropertyBag_Save_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IPersistMediaPropertyBag_INTERFACE_DEFINED__ */ #ifndef __IAMPhysicalPinInfo_INTERFACE_DEFINED__ #define __IAMPhysicalPinInfo_INTERFACE_DEFINED__ /* interface IAMPhysicalPinInfo */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IAMPhysicalPinInfo; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("F938C991-3029-11cf-8C44-00AA006B6814") IAMPhysicalPinInfo : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE GetPhysicalType( /* [out] */ long *pType, /* [out] */ LPOLESTR *ppszType) = 0; }; #else /* C style interface */ typedef struct IAMPhysicalPinInfoVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMPhysicalPinInfo * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMPhysicalPinInfo * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMPhysicalPinInfo * This); HRESULT ( STDMETHODCALLTYPE *GetPhysicalType )( IAMPhysicalPinInfo * This, /* [out] */ long *pType, /* [out] */ LPOLESTR *ppszType); END_INTERFACE } IAMPhysicalPinInfoVtbl; interface IAMPhysicalPinInfo { CONST_VTBL struct IAMPhysicalPinInfoVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMPhysicalPinInfo_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMPhysicalPinInfo_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMPhysicalPinInfo_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMPhysicalPinInfo_GetPhysicalType(This,pType,ppszType) \ (This)->lpVtbl -> GetPhysicalType(This,pType,ppszType) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMPhysicalPinInfo_GetPhysicalType_Proxy( IAMPhysicalPinInfo * This, /* [out] */ long *pType, /* [out] */ LPOLESTR *ppszType); void __RPC_STUB IAMPhysicalPinInfo_GetPhysicalType_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMPhysicalPinInfo_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0328 */ /* [local] */ typedef IAMPhysicalPinInfo *PAMPHYSICALPININFO; extern RPC_IF_HANDLE __MIDL_itf_strmif_0328_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0328_v0_0_s_ifspec; #ifndef __IAMExtDevice_INTERFACE_DEFINED__ #define __IAMExtDevice_INTERFACE_DEFINED__ /* interface IAMExtDevice */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IAMExtDevice; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("B5730A90-1A2C-11cf-8C23-00AA006B6814") IAMExtDevice : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE GetCapability( /* [in] */ long Capability, /* [out] */ long *pValue, /* [out] */ double *pdblValue) = 0; virtual HRESULT STDMETHODCALLTYPE get_ExternalDeviceID( /* [out] */ LPOLESTR *ppszData) = 0; virtual HRESULT STDMETHODCALLTYPE get_ExternalDeviceVersion( /* [out] */ LPOLESTR *ppszData) = 0; virtual HRESULT STDMETHODCALLTYPE put_DevicePower( /* [in] */ long PowerMode) = 0; virtual HRESULT STDMETHODCALLTYPE get_DevicePower( /* [out] */ long *pPowerMode) = 0; virtual HRESULT STDMETHODCALLTYPE Calibrate( /* [in] */ HEVENT hEvent, /* [in] */ long Mode, /* [out] */ long *pStatus) = 0; virtual HRESULT STDMETHODCALLTYPE put_DevicePort( /* [in] */ long DevicePort) = 0; virtual HRESULT STDMETHODCALLTYPE get_DevicePort( /* [out] */ long *pDevicePort) = 0; }; #else /* C style interface */ typedef struct IAMExtDeviceVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMExtDevice * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMExtDevice * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMExtDevice * This); HRESULT ( STDMETHODCALLTYPE *GetCapability )( IAMExtDevice * This, /* [in] */ long Capability, /* [out] */ long *pValue, /* [out] */ double *pdblValue); HRESULT ( STDMETHODCALLTYPE *get_ExternalDeviceID )( IAMExtDevice * This, /* [out] */ LPOLESTR *ppszData); HRESULT ( STDMETHODCALLTYPE *get_ExternalDeviceVersion )( IAMExtDevice * This, /* [out] */ LPOLESTR *ppszData); HRESULT ( STDMETHODCALLTYPE *put_DevicePower )( IAMExtDevice * This, /* [in] */ long PowerMode); HRESULT ( STDMETHODCALLTYPE *get_DevicePower )( IAMExtDevice * This, /* [out] */ long *pPowerMode); HRESULT ( STDMETHODCALLTYPE *Calibrate )( IAMExtDevice * This, /* [in] */ HEVENT hEvent, /* [in] */ long Mode, /* [out] */ long *pStatus); HRESULT ( STDMETHODCALLTYPE *put_DevicePort )( IAMExtDevice * This, /* [in] */ long DevicePort); HRESULT ( STDMETHODCALLTYPE *get_DevicePort )( IAMExtDevice * This, /* [out] */ long *pDevicePort); END_INTERFACE } IAMExtDeviceVtbl; interface IAMExtDevice { CONST_VTBL struct IAMExtDeviceVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMExtDevice_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMExtDevice_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMExtDevice_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMExtDevice_GetCapability(This,Capability,pValue,pdblValue) \ (This)->lpVtbl -> GetCapability(This,Capability,pValue,pdblValue) #define IAMExtDevice_get_ExternalDeviceID(This,ppszData) \ (This)->lpVtbl -> get_ExternalDeviceID(This,ppszData) #define IAMExtDevice_get_ExternalDeviceVersion(This,ppszData) \ (This)->lpVtbl -> get_ExternalDeviceVersion(This,ppszData) #define IAMExtDevice_put_DevicePower(This,PowerMode) \ (This)->lpVtbl -> put_DevicePower(This,PowerMode) #define IAMExtDevice_get_DevicePower(This,pPowerMode) \ (This)->lpVtbl -> get_DevicePower(This,pPowerMode) #define IAMExtDevice_Calibrate(This,hEvent,Mode,pStatus) \ (This)->lpVtbl -> Calibrate(This,hEvent,Mode,pStatus) #define IAMExtDevice_put_DevicePort(This,DevicePort) \ (This)->lpVtbl -> put_DevicePort(This,DevicePort) #define IAMExtDevice_get_DevicePort(This,pDevicePort) \ (This)->lpVtbl -> get_DevicePort(This,pDevicePort) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMExtDevice_GetCapability_Proxy( IAMExtDevice * This, /* [in] */ long Capability, /* [out] */ long *pValue, /* [out] */ double *pdblValue); void __RPC_STUB IAMExtDevice_GetCapability_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMExtDevice_get_ExternalDeviceID_Proxy( IAMExtDevice * This, /* [out] */ LPOLESTR *ppszData); void __RPC_STUB IAMExtDevice_get_ExternalDeviceID_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMExtDevice_get_ExternalDeviceVersion_Proxy( IAMExtDevice * This, /* [out] */ LPOLESTR *ppszData); void __RPC_STUB IAMExtDevice_get_ExternalDeviceVersion_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMExtDevice_put_DevicePower_Proxy( IAMExtDevice * This, /* [in] */ long PowerMode); void __RPC_STUB IAMExtDevice_put_DevicePower_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMExtDevice_get_DevicePower_Proxy( IAMExtDevice * This, /* [out] */ long *pPowerMode); void __RPC_STUB IAMExtDevice_get_DevicePower_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMExtDevice_Calibrate_Proxy( IAMExtDevice * This, /* [in] */ HEVENT hEvent, /* [in] */ long Mode, /* [out] */ long *pStatus); void __RPC_STUB IAMExtDevice_Calibrate_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMExtDevice_put_DevicePort_Proxy( IAMExtDevice * This, /* [in] */ long DevicePort); void __RPC_STUB IAMExtDevice_put_DevicePort_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMExtDevice_get_DevicePort_Proxy( IAMExtDevice * This, /* [out] */ long *pDevicePort); void __RPC_STUB IAMExtDevice_get_DevicePort_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMExtDevice_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0329 */ /* [local] */ typedef IAMExtDevice *PEXTDEVICE; extern RPC_IF_HANDLE __MIDL_itf_strmif_0329_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0329_v0_0_s_ifspec; #ifndef __IAMExtTransport_INTERFACE_DEFINED__ #define __IAMExtTransport_INTERFACE_DEFINED__ /* interface IAMExtTransport */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IAMExtTransport; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("A03CD5F0-3045-11cf-8C44-00AA006B6814") IAMExtTransport : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE GetCapability( /* [in] */ long Capability, /* [out] */ long *pValue, /* [out] */ double *pdblValue) = 0; virtual HRESULT STDMETHODCALLTYPE put_MediaState( /* [in] */ long State) = 0; virtual HRESULT STDMETHODCALLTYPE get_MediaState( /* [out] */ long *pState) = 0; virtual HRESULT STDMETHODCALLTYPE put_LocalControl( /* [in] */ long State) = 0; virtual HRESULT STDMETHODCALLTYPE get_LocalControl( /* [out] */ long *pState) = 0; virtual HRESULT STDMETHODCALLTYPE GetStatus( /* [in] */ long StatusItem, /* [out] */ long *pValue) = 0; virtual HRESULT STDMETHODCALLTYPE GetTransportBasicParameters( /* [in] */ long Param, /* [out] */ long *pValue, /* [out] */ LPOLESTR *ppszData) = 0; virtual HRESULT STDMETHODCALLTYPE SetTransportBasicParameters( /* [in] */ long Param, /* [in] */ long Value, /* [in] */ LPCOLESTR pszData) = 0; virtual HRESULT STDMETHODCALLTYPE GetTransportVideoParameters( /* [in] */ long Param, /* [out] */ long *pValue) = 0; virtual HRESULT STDMETHODCALLTYPE SetTransportVideoParameters( /* [in] */ long Param, /* [in] */ long Value) = 0; virtual HRESULT STDMETHODCALLTYPE GetTransportAudioParameters( /* [in] */ long Param, /* [out] */ long *pValue) = 0; virtual HRESULT STDMETHODCALLTYPE SetTransportAudioParameters( /* [in] */ long Param, /* [in] */ long Value) = 0; virtual HRESULT STDMETHODCALLTYPE put_Mode( /* [in] */ long Mode) = 0; virtual HRESULT STDMETHODCALLTYPE get_Mode( /* [out] */ long *pMode) = 0; virtual HRESULT STDMETHODCALLTYPE put_Rate( /* [in] */ double dblRate) = 0; virtual HRESULT STDMETHODCALLTYPE get_Rate( /* [out] */ double *pdblRate) = 0; virtual HRESULT STDMETHODCALLTYPE GetChase( /* [out] */ long *pEnabled, /* [out] */ long *pOffset, /* [out] */ HEVENT *phEvent) = 0; virtual HRESULT STDMETHODCALLTYPE SetChase( /* [in] */ long Enable, /* [in] */ long Offset, /* [in] */ HEVENT hEvent) = 0; virtual HRESULT STDMETHODCALLTYPE GetBump( /* [out] */ long *pSpeed, /* [out] */ long *pDuration) = 0; virtual HRESULT STDMETHODCALLTYPE SetBump( /* [in] */ long Speed, /* [in] */ long Duration) = 0; virtual HRESULT STDMETHODCALLTYPE get_AntiClogControl( /* [out] */ long *pEnabled) = 0; virtual HRESULT STDMETHODCALLTYPE put_AntiClogControl( /* [in] */ long Enable) = 0; virtual HRESULT STDMETHODCALLTYPE GetEditPropertySet( /* [in] */ long EditID, /* [out] */ long *pState) = 0; virtual HRESULT STDMETHODCALLTYPE SetEditPropertySet( /* [out][in] */ long *pEditID, /* [in] */ long State) = 0; virtual HRESULT STDMETHODCALLTYPE GetEditProperty( /* [in] */ long EditID, /* [in] */ long Param, /* [out] */ long *pValue) = 0; virtual HRESULT STDMETHODCALLTYPE SetEditProperty( /* [in] */ long EditID, /* [in] */ long Param, /* [in] */ long Value) = 0; virtual HRESULT STDMETHODCALLTYPE get_EditStart( /* [out] */ long *pValue) = 0; virtual HRESULT STDMETHODCALLTYPE put_EditStart( /* [in] */ long Value) = 0; }; #else /* C style interface */ typedef struct IAMExtTransportVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMExtTransport * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMExtTransport * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMExtTransport * This); HRESULT ( STDMETHODCALLTYPE *GetCapability )( IAMExtTransport * This, /* [in] */ long Capability, /* [out] */ long *pValue, /* [out] */ double *pdblValue); HRESULT ( STDMETHODCALLTYPE *put_MediaState )( IAMExtTransport * This, /* [in] */ long State); HRESULT ( STDMETHODCALLTYPE *get_MediaState )( IAMExtTransport * This, /* [out] */ long *pState); HRESULT ( STDMETHODCALLTYPE *put_LocalControl )( IAMExtTransport * This, /* [in] */ long State); HRESULT ( STDMETHODCALLTYPE *get_LocalControl )( IAMExtTransport * This, /* [out] */ long *pState); HRESULT ( STDMETHODCALLTYPE *GetStatus )( IAMExtTransport * This, /* [in] */ long StatusItem, /* [out] */ long *pValue); HRESULT ( STDMETHODCALLTYPE *GetTransportBasicParameters )( IAMExtTransport * This, /* [in] */ long Param, /* [out] */ long *pValue, /* [out] */ LPOLESTR *ppszData); HRESULT ( STDMETHODCALLTYPE *SetTransportBasicParameters )( IAMExtTransport * This, /* [in] */ long Param, /* [in] */ long Value, /* [in] */ LPCOLESTR pszData); HRESULT ( STDMETHODCALLTYPE *GetTransportVideoParameters )( IAMExtTransport * This, /* [in] */ long Param, /* [out] */ long *pValue); HRESULT ( STDMETHODCALLTYPE *SetTransportVideoParameters )( IAMExtTransport * This, /* [in] */ long Param, /* [in] */ long Value); HRESULT ( STDMETHODCALLTYPE *GetTransportAudioParameters )( IAMExtTransport * This, /* [in] */ long Param, /* [out] */ long *pValue); HRESULT ( STDMETHODCALLTYPE *SetTransportAudioParameters )( IAMExtTransport * This, /* [in] */ long Param, /* [in] */ long Value); HRESULT ( STDMETHODCALLTYPE *put_Mode )( IAMExtTransport * This, /* [in] */ long Mode); HRESULT ( STDMETHODCALLTYPE *get_Mode )( IAMExtTransport * This, /* [out] */ long *pMode); HRESULT ( STDMETHODCALLTYPE *put_Rate )( IAMExtTransport * This, /* [in] */ double dblRate); HRESULT ( STDMETHODCALLTYPE *get_Rate )( IAMExtTransport * This, /* [out] */ double *pdblRate); HRESULT ( STDMETHODCALLTYPE *GetChase )( IAMExtTransport * This, /* [out] */ long *pEnabled, /* [out] */ long *pOffset, /* [out] */ HEVENT *phEvent); HRESULT ( STDMETHODCALLTYPE *SetChase )( IAMExtTransport * This, /* [in] */ long Enable, /* [in] */ long Offset, /* [in] */ HEVENT hEvent); HRESULT ( STDMETHODCALLTYPE *GetBump )( IAMExtTransport * This, /* [out] */ long *pSpeed, /* [out] */ long *pDuration); HRESULT ( STDMETHODCALLTYPE *SetBump )( IAMExtTransport * This, /* [in] */ long Speed, /* [in] */ long Duration); HRESULT ( STDMETHODCALLTYPE *get_AntiClogControl )( IAMExtTransport * This, /* [out] */ long *pEnabled); HRESULT ( STDMETHODCALLTYPE *put_AntiClogControl )( IAMExtTransport * This, /* [in] */ long Enable); HRESULT ( STDMETHODCALLTYPE *GetEditPropertySet )( IAMExtTransport * This, /* [in] */ long EditID, /* [out] */ long *pState); HRESULT ( STDMETHODCALLTYPE *SetEditPropertySet )( IAMExtTransport * This, /* [out][in] */ long *pEditID, /* [in] */ long State); HRESULT ( STDMETHODCALLTYPE *GetEditProperty )( IAMExtTransport * This, /* [in] */ long EditID, /* [in] */ long Param, /* [out] */ long *pValue); HRESULT ( STDMETHODCALLTYPE *SetEditProperty )( IAMExtTransport * This, /* [in] */ long EditID, /* [in] */ long Param, /* [in] */ long Value); HRESULT ( STDMETHODCALLTYPE *get_EditStart )( IAMExtTransport * This, /* [out] */ long *pValue); HRESULT ( STDMETHODCALLTYPE *put_EditStart )( IAMExtTransport * This, /* [in] */ long Value); END_INTERFACE } IAMExtTransportVtbl; interface IAMExtTransport { CONST_VTBL struct IAMExtTransportVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMExtTransport_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMExtTransport_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMExtTransport_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMExtTransport_GetCapability(This,Capability,pValue,pdblValue) \ (This)->lpVtbl -> GetCapability(This,Capability,pValue,pdblValue) #define IAMExtTransport_put_MediaState(This,State) \ (This)->lpVtbl -> put_MediaState(This,State) #define IAMExtTransport_get_MediaState(This,pState) \ (This)->lpVtbl -> get_MediaState(This,pState) #define IAMExtTransport_put_LocalControl(This,State) \ (This)->lpVtbl -> put_LocalControl(This,State) #define IAMExtTransport_get_LocalControl(This,pState) \ (This)->lpVtbl -> get_LocalControl(This,pState) #define IAMExtTransport_GetStatus(This,StatusItem,pValue) \ (This)->lpVtbl -> GetStatus(This,StatusItem,pValue) #define IAMExtTransport_GetTransportBasicParameters(This,Param,pValue,ppszData) \ (This)->lpVtbl -> GetTransportBasicParameters(This,Param,pValue,ppszData) #define IAMExtTransport_SetTransportBasicParameters(This,Param,Value,pszData) \ (This)->lpVtbl -> SetTransportBasicParameters(This,Param,Value,pszData) #define IAMExtTransport_GetTransportVideoParameters(This,Param,pValue) \ (This)->lpVtbl -> GetTransportVideoParameters(This,Param,pValue) #define IAMExtTransport_SetTransportVideoParameters(This,Param,Value) \ (This)->lpVtbl -> SetTransportVideoParameters(This,Param,Value) #define IAMExtTransport_GetTransportAudioParameters(This,Param,pValue) \ (This)->lpVtbl -> GetTransportAudioParameters(This,Param,pValue) #define IAMExtTransport_SetTransportAudioParameters(This,Param,Value) \ (This)->lpVtbl -> SetTransportAudioParameters(This,Param,Value) #define IAMExtTransport_put_Mode(This,Mode) \ (This)->lpVtbl -> put_Mode(This,Mode) #define IAMExtTransport_get_Mode(This,pMode) \ (This)->lpVtbl -> get_Mode(This,pMode) #define IAMExtTransport_put_Rate(This,dblRate) \ (This)->lpVtbl -> put_Rate(This,dblRate) #define IAMExtTransport_get_Rate(This,pdblRate) \ (This)->lpVtbl -> get_Rate(This,pdblRate) #define IAMExtTransport_GetChase(This,pEnabled,pOffset,phEvent) \ (This)->lpVtbl -> GetChase(This,pEnabled,pOffset,phEvent) #define IAMExtTransport_SetChase(This,Enable,Offset,hEvent) \ (This)->lpVtbl -> SetChase(This,Enable,Offset,hEvent) #define IAMExtTransport_GetBump(This,pSpeed,pDuration) \ (This)->lpVtbl -> GetBump(This,pSpeed,pDuration) #define IAMExtTransport_SetBump(This,Speed,Duration) \ (This)->lpVtbl -> SetBump(This,Speed,Duration) #define IAMExtTransport_get_AntiClogControl(This,pEnabled) \ (This)->lpVtbl -> get_AntiClogControl(This,pEnabled) #define IAMExtTransport_put_AntiClogControl(This,Enable) \ (This)->lpVtbl -> put_AntiClogControl(This,Enable) #define IAMExtTransport_GetEditPropertySet(This,EditID,pState) \ (This)->lpVtbl -> GetEditPropertySet(This,EditID,pState) #define IAMExtTransport_SetEditPropertySet(This,pEditID,State) \ (This)->lpVtbl -> SetEditPropertySet(This,pEditID,State) #define IAMExtTransport_GetEditProperty(This,EditID,Param,pValue) \ (This)->lpVtbl -> GetEditProperty(This,EditID,Param,pValue) #define IAMExtTransport_SetEditProperty(This,EditID,Param,Value) \ (This)->lpVtbl -> SetEditProperty(This,EditID,Param,Value) #define IAMExtTransport_get_EditStart(This,pValue) \ (This)->lpVtbl -> get_EditStart(This,pValue) #define IAMExtTransport_put_EditStart(This,Value) \ (This)->lpVtbl -> put_EditStart(This,Value) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMExtTransport_GetCapability_Proxy( IAMExtTransport * This, /* [in] */ long Capability, /* [out] */ long *pValue, /* [out] */ double *pdblValue); void __RPC_STUB IAMExtTransport_GetCapability_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMExtTransport_put_MediaState_Proxy( IAMExtTransport * This, /* [in] */ long State); void __RPC_STUB IAMExtTransport_put_MediaState_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMExtTransport_get_MediaState_Proxy( IAMExtTransport * This, /* [out] */ long *pState); void __RPC_STUB IAMExtTransport_get_MediaState_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMExtTransport_put_LocalControl_Proxy( IAMExtTransport * This, /* [in] */ long State); void __RPC_STUB IAMExtTransport_put_LocalControl_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMExtTransport_get_LocalControl_Proxy( IAMExtTransport * This, /* [out] */ long *pState); void __RPC_STUB IAMExtTransport_get_LocalControl_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMExtTransport_GetStatus_Proxy( IAMExtTransport * This, /* [in] */ long StatusItem, /* [out] */ long *pValue); void __RPC_STUB IAMExtTransport_GetStatus_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMExtTransport_GetTransportBasicParameters_Proxy( IAMExtTransport * This, /* [in] */ long Param, /* [out] */ long *pValue, /* [out] */ LPOLESTR *ppszData); void __RPC_STUB IAMExtTransport_GetTransportBasicParameters_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMExtTransport_SetTransportBasicParameters_Proxy( IAMExtTransport * This, /* [in] */ long Param, /* [in] */ long Value, /* [in] */ LPCOLESTR pszData); void __RPC_STUB IAMExtTransport_SetTransportBasicParameters_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMExtTransport_GetTransportVideoParameters_Proxy( IAMExtTransport * This, /* [in] */ long Param, /* [out] */ long *pValue); void __RPC_STUB IAMExtTransport_GetTransportVideoParameters_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMExtTransport_SetTransportVideoParameters_Proxy( IAMExtTransport * This, /* [in] */ long Param, /* [in] */ long Value); void __RPC_STUB IAMExtTransport_SetTransportVideoParameters_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMExtTransport_GetTransportAudioParameters_Proxy( IAMExtTransport * This, /* [in] */ long Param, /* [out] */ long *pValue); void __RPC_STUB IAMExtTransport_GetTransportAudioParameters_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMExtTransport_SetTransportAudioParameters_Proxy( IAMExtTransport * This, /* [in] */ long Param, /* [in] */ long Value); void __RPC_STUB IAMExtTransport_SetTransportAudioParameters_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMExtTransport_put_Mode_Proxy( IAMExtTransport * This, /* [in] */ long Mode); void __RPC_STUB IAMExtTransport_put_Mode_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMExtTransport_get_Mode_Proxy( IAMExtTransport * This, /* [out] */ long *pMode); void __RPC_STUB IAMExtTransport_get_Mode_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMExtTransport_put_Rate_Proxy( IAMExtTransport * This, /* [in] */ double dblRate); void __RPC_STUB IAMExtTransport_put_Rate_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMExtTransport_get_Rate_Proxy( IAMExtTransport * This, /* [out] */ double *pdblRate); void __RPC_STUB IAMExtTransport_get_Rate_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMExtTransport_GetChase_Proxy( IAMExtTransport * This, /* [out] */ long *pEnabled, /* [out] */ long *pOffset, /* [out] */ HEVENT *phEvent); void __RPC_STUB IAMExtTransport_GetChase_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMExtTransport_SetChase_Proxy( IAMExtTransport * This, /* [in] */ long Enable, /* [in] */ long Offset, /* [in] */ HEVENT hEvent); void __RPC_STUB IAMExtTransport_SetChase_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMExtTransport_GetBump_Proxy( IAMExtTransport * This, /* [out] */ long *pSpeed, /* [out] */ long *pDuration); void __RPC_STUB IAMExtTransport_GetBump_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMExtTransport_SetBump_Proxy( IAMExtTransport * This, /* [in] */ long Speed, /* [in] */ long Duration); void __RPC_STUB IAMExtTransport_SetBump_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMExtTransport_get_AntiClogControl_Proxy( IAMExtTransport * This, /* [out] */ long *pEnabled); void __RPC_STUB IAMExtTransport_get_AntiClogControl_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMExtTransport_put_AntiClogControl_Proxy( IAMExtTransport * This, /* [in] */ long Enable); void __RPC_STUB IAMExtTransport_put_AntiClogControl_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMExtTransport_GetEditPropertySet_Proxy( IAMExtTransport * This, /* [in] */ long EditID, /* [out] */ long *pState); void __RPC_STUB IAMExtTransport_GetEditPropertySet_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMExtTransport_SetEditPropertySet_Proxy( IAMExtTransport * This, /* [out][in] */ long *pEditID, /* [in] */ long State); void __RPC_STUB IAMExtTransport_SetEditPropertySet_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMExtTransport_GetEditProperty_Proxy( IAMExtTransport * This, /* [in] */ long EditID, /* [in] */ long Param, /* [out] */ long *pValue); void __RPC_STUB IAMExtTransport_GetEditProperty_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMExtTransport_SetEditProperty_Proxy( IAMExtTransport * This, /* [in] */ long EditID, /* [in] */ long Param, /* [in] */ long Value); void __RPC_STUB IAMExtTransport_SetEditProperty_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMExtTransport_get_EditStart_Proxy( IAMExtTransport * This, /* [out] */ long *pValue); void __RPC_STUB IAMExtTransport_get_EditStart_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMExtTransport_put_EditStart_Proxy( IAMExtTransport * This, /* [in] */ long Value); void __RPC_STUB IAMExtTransport_put_EditStart_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMExtTransport_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0330 */ /* [local] */ typedef IAMExtTransport *PIAMEXTTRANSPORT; #if 0 /* the following is what MIDL knows how to remote */ typedef struct tagTIMECODE { WORD wFrameRate; WORD wFrameFract; DWORD dwFrames; } TIMECODE; #else /* 0 */ #ifndef TIMECODE_DEFINED #define TIMECODE_DEFINED typedef union _timecode { struct { WORD wFrameRate; WORD wFrameFract; DWORD dwFrames; }; DWORDLONG qw; } TIMECODE; #endif /* TIMECODE_DEFINED */ #endif /* 0 */ typedef TIMECODE *PTIMECODE; typedef struct tagTIMECODE_SAMPLE { LONGLONG qwTick; TIMECODE timecode; DWORD dwUser; DWORD dwFlags; } TIMECODE_SAMPLE; typedef TIMECODE_SAMPLE *PTIMECODE_SAMPLE; extern RPC_IF_HANDLE __MIDL_itf_strmif_0330_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0330_v0_0_s_ifspec; #ifndef __IAMTimecodeReader_INTERFACE_DEFINED__ #define __IAMTimecodeReader_INTERFACE_DEFINED__ /* interface IAMTimecodeReader */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IAMTimecodeReader; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("9B496CE1-811B-11cf-8C77-00AA006B6814") IAMTimecodeReader : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE GetTCRMode( /* [in] */ long Param, /* [out] */ long *pValue) = 0; virtual HRESULT STDMETHODCALLTYPE SetTCRMode( /* [in] */ long Param, /* [in] */ long Value) = 0; virtual HRESULT STDMETHODCALLTYPE put_VITCLine( /* [in] */ long Line) = 0; virtual HRESULT STDMETHODCALLTYPE get_VITCLine( /* [out] */ long *pLine) = 0; virtual HRESULT STDMETHODCALLTYPE GetTimecode( /* [out] */ PTIMECODE_SAMPLE pTimecodeSample) = 0; }; #else /* C style interface */ typedef struct IAMTimecodeReaderVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMTimecodeReader * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMTimecodeReader * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMTimecodeReader * This); HRESULT ( STDMETHODCALLTYPE *GetTCRMode )( IAMTimecodeReader * This, /* [in] */ long Param, /* [out] */ long *pValue); HRESULT ( STDMETHODCALLTYPE *SetTCRMode )( IAMTimecodeReader * This, /* [in] */ long Param, /* [in] */ long Value); HRESULT ( STDMETHODCALLTYPE *put_VITCLine )( IAMTimecodeReader * This, /* [in] */ long Line); HRESULT ( STDMETHODCALLTYPE *get_VITCLine )( IAMTimecodeReader * This, /* [out] */ long *pLine); HRESULT ( STDMETHODCALLTYPE *GetTimecode )( IAMTimecodeReader * This, /* [out] */ PTIMECODE_SAMPLE pTimecodeSample); END_INTERFACE } IAMTimecodeReaderVtbl; interface IAMTimecodeReader { CONST_VTBL struct IAMTimecodeReaderVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMTimecodeReader_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMTimecodeReader_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMTimecodeReader_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMTimecodeReader_GetTCRMode(This,Param,pValue) \ (This)->lpVtbl -> GetTCRMode(This,Param,pValue) #define IAMTimecodeReader_SetTCRMode(This,Param,Value) \ (This)->lpVtbl -> SetTCRMode(This,Param,Value) #define IAMTimecodeReader_put_VITCLine(This,Line) \ (This)->lpVtbl -> put_VITCLine(This,Line) #define IAMTimecodeReader_get_VITCLine(This,pLine) \ (This)->lpVtbl -> get_VITCLine(This,pLine) #define IAMTimecodeReader_GetTimecode(This,pTimecodeSample) \ (This)->lpVtbl -> GetTimecode(This,pTimecodeSample) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMTimecodeReader_GetTCRMode_Proxy( IAMTimecodeReader * This, /* [in] */ long Param, /* [out] */ long *pValue); void __RPC_STUB IAMTimecodeReader_GetTCRMode_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTimecodeReader_SetTCRMode_Proxy( IAMTimecodeReader * This, /* [in] */ long Param, /* [in] */ long Value); void __RPC_STUB IAMTimecodeReader_SetTCRMode_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTimecodeReader_put_VITCLine_Proxy( IAMTimecodeReader * This, /* [in] */ long Line); void __RPC_STUB IAMTimecodeReader_put_VITCLine_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTimecodeReader_get_VITCLine_Proxy( IAMTimecodeReader * This, /* [out] */ long *pLine); void __RPC_STUB IAMTimecodeReader_get_VITCLine_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTimecodeReader_GetTimecode_Proxy( IAMTimecodeReader * This, /* [out] */ PTIMECODE_SAMPLE pTimecodeSample); void __RPC_STUB IAMTimecodeReader_GetTimecode_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMTimecodeReader_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0331 */ /* [local] */ typedef IAMTimecodeReader *PIAMTIMECODEREADER; extern RPC_IF_HANDLE __MIDL_itf_strmif_0331_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0331_v0_0_s_ifspec; #ifndef __IAMTimecodeGenerator_INTERFACE_DEFINED__ #define __IAMTimecodeGenerator_INTERFACE_DEFINED__ /* interface IAMTimecodeGenerator */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IAMTimecodeGenerator; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("9B496CE0-811B-11cf-8C77-00AA006B6814") IAMTimecodeGenerator : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE GetTCGMode( /* [in] */ long Param, /* [out] */ long *pValue) = 0; virtual HRESULT STDMETHODCALLTYPE SetTCGMode( /* [in] */ long Param, /* [in] */ long Value) = 0; virtual HRESULT STDMETHODCALLTYPE put_VITCLine( /* [in] */ long Line) = 0; virtual HRESULT STDMETHODCALLTYPE get_VITCLine( /* [out] */ long *pLine) = 0; virtual HRESULT STDMETHODCALLTYPE SetTimecode( /* [in] */ PTIMECODE_SAMPLE pTimecodeSample) = 0; virtual HRESULT STDMETHODCALLTYPE GetTimecode( /* [out] */ PTIMECODE_SAMPLE pTimecodeSample) = 0; }; #else /* C style interface */ typedef struct IAMTimecodeGeneratorVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMTimecodeGenerator * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMTimecodeGenerator * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMTimecodeGenerator * This); HRESULT ( STDMETHODCALLTYPE *GetTCGMode )( IAMTimecodeGenerator * This, /* [in] */ long Param, /* [out] */ long *pValue); HRESULT ( STDMETHODCALLTYPE *SetTCGMode )( IAMTimecodeGenerator * This, /* [in] */ long Param, /* [in] */ long Value); HRESULT ( STDMETHODCALLTYPE *put_VITCLine )( IAMTimecodeGenerator * This, /* [in] */ long Line); HRESULT ( STDMETHODCALLTYPE *get_VITCLine )( IAMTimecodeGenerator * This, /* [out] */ long *pLine); HRESULT ( STDMETHODCALLTYPE *SetTimecode )( IAMTimecodeGenerator * This, /* [in] */ PTIMECODE_SAMPLE pTimecodeSample); HRESULT ( STDMETHODCALLTYPE *GetTimecode )( IAMTimecodeGenerator * This, /* [out] */ PTIMECODE_SAMPLE pTimecodeSample); END_INTERFACE } IAMTimecodeGeneratorVtbl; interface IAMTimecodeGenerator { CONST_VTBL struct IAMTimecodeGeneratorVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMTimecodeGenerator_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMTimecodeGenerator_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMTimecodeGenerator_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMTimecodeGenerator_GetTCGMode(This,Param,pValue) \ (This)->lpVtbl -> GetTCGMode(This,Param,pValue) #define IAMTimecodeGenerator_SetTCGMode(This,Param,Value) \ (This)->lpVtbl -> SetTCGMode(This,Param,Value) #define IAMTimecodeGenerator_put_VITCLine(This,Line) \ (This)->lpVtbl -> put_VITCLine(This,Line) #define IAMTimecodeGenerator_get_VITCLine(This,pLine) \ (This)->lpVtbl -> get_VITCLine(This,pLine) #define IAMTimecodeGenerator_SetTimecode(This,pTimecodeSample) \ (This)->lpVtbl -> SetTimecode(This,pTimecodeSample) #define IAMTimecodeGenerator_GetTimecode(This,pTimecodeSample) \ (This)->lpVtbl -> GetTimecode(This,pTimecodeSample) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMTimecodeGenerator_GetTCGMode_Proxy( IAMTimecodeGenerator * This, /* [in] */ long Param, /* [out] */ long *pValue); void __RPC_STUB IAMTimecodeGenerator_GetTCGMode_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTimecodeGenerator_SetTCGMode_Proxy( IAMTimecodeGenerator * This, /* [in] */ long Param, /* [in] */ long Value); void __RPC_STUB IAMTimecodeGenerator_SetTCGMode_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTimecodeGenerator_put_VITCLine_Proxy( IAMTimecodeGenerator * This, /* [in] */ long Line); void __RPC_STUB IAMTimecodeGenerator_put_VITCLine_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTimecodeGenerator_get_VITCLine_Proxy( IAMTimecodeGenerator * This, /* [out] */ long *pLine); void __RPC_STUB IAMTimecodeGenerator_get_VITCLine_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTimecodeGenerator_SetTimecode_Proxy( IAMTimecodeGenerator * This, /* [in] */ PTIMECODE_SAMPLE pTimecodeSample); void __RPC_STUB IAMTimecodeGenerator_SetTimecode_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTimecodeGenerator_GetTimecode_Proxy( IAMTimecodeGenerator * This, /* [out] */ PTIMECODE_SAMPLE pTimecodeSample); void __RPC_STUB IAMTimecodeGenerator_GetTimecode_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMTimecodeGenerator_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0332 */ /* [local] */ typedef IAMTimecodeGenerator *PIAMTIMECODEGENERATOR; extern RPC_IF_HANDLE __MIDL_itf_strmif_0332_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0332_v0_0_s_ifspec; #ifndef __IAMTimecodeDisplay_INTERFACE_DEFINED__ #define __IAMTimecodeDisplay_INTERFACE_DEFINED__ /* interface IAMTimecodeDisplay */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IAMTimecodeDisplay; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("9B496CE2-811B-11cf-8C77-00AA006B6814") IAMTimecodeDisplay : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE GetTCDisplayEnable( /* [out] */ long *pState) = 0; virtual HRESULT STDMETHODCALLTYPE SetTCDisplayEnable( /* [in] */ long State) = 0; virtual HRESULT STDMETHODCALLTYPE GetTCDisplay( /* [in] */ long Param, /* [out] */ long *pValue) = 0; virtual HRESULT STDMETHODCALLTYPE SetTCDisplay( /* [in] */ long Param, /* [in] */ long Value) = 0; }; #else /* C style interface */ typedef struct IAMTimecodeDisplayVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMTimecodeDisplay * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMTimecodeDisplay * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMTimecodeDisplay * This); HRESULT ( STDMETHODCALLTYPE *GetTCDisplayEnable )( IAMTimecodeDisplay * This, /* [out] */ long *pState); HRESULT ( STDMETHODCALLTYPE *SetTCDisplayEnable )( IAMTimecodeDisplay * This, /* [in] */ long State); HRESULT ( STDMETHODCALLTYPE *GetTCDisplay )( IAMTimecodeDisplay * This, /* [in] */ long Param, /* [out] */ long *pValue); HRESULT ( STDMETHODCALLTYPE *SetTCDisplay )( IAMTimecodeDisplay * This, /* [in] */ long Param, /* [in] */ long Value); END_INTERFACE } IAMTimecodeDisplayVtbl; interface IAMTimecodeDisplay { CONST_VTBL struct IAMTimecodeDisplayVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMTimecodeDisplay_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMTimecodeDisplay_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMTimecodeDisplay_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMTimecodeDisplay_GetTCDisplayEnable(This,pState) \ (This)->lpVtbl -> GetTCDisplayEnable(This,pState) #define IAMTimecodeDisplay_SetTCDisplayEnable(This,State) \ (This)->lpVtbl -> SetTCDisplayEnable(This,State) #define IAMTimecodeDisplay_GetTCDisplay(This,Param,pValue) \ (This)->lpVtbl -> GetTCDisplay(This,Param,pValue) #define IAMTimecodeDisplay_SetTCDisplay(This,Param,Value) \ (This)->lpVtbl -> SetTCDisplay(This,Param,Value) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMTimecodeDisplay_GetTCDisplayEnable_Proxy( IAMTimecodeDisplay * This, /* [out] */ long *pState); void __RPC_STUB IAMTimecodeDisplay_GetTCDisplayEnable_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTimecodeDisplay_SetTCDisplayEnable_Proxy( IAMTimecodeDisplay * This, /* [in] */ long State); void __RPC_STUB IAMTimecodeDisplay_SetTCDisplayEnable_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTimecodeDisplay_GetTCDisplay_Proxy( IAMTimecodeDisplay * This, /* [in] */ long Param, /* [out] */ long *pValue); void __RPC_STUB IAMTimecodeDisplay_GetTCDisplay_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTimecodeDisplay_SetTCDisplay_Proxy( IAMTimecodeDisplay * This, /* [in] */ long Param, /* [in] */ long Value); void __RPC_STUB IAMTimecodeDisplay_SetTCDisplay_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMTimecodeDisplay_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0333 */ /* [local] */ typedef IAMTimecodeDisplay *PIAMTIMECODEDISPLAY; extern RPC_IF_HANDLE __MIDL_itf_strmif_0333_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0333_v0_0_s_ifspec; #ifndef __IAMDevMemoryAllocator_INTERFACE_DEFINED__ #define __IAMDevMemoryAllocator_INTERFACE_DEFINED__ /* interface IAMDevMemoryAllocator */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IAMDevMemoryAllocator; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("c6545bf0-e76b-11d0-bd52-00a0c911ce86") IAMDevMemoryAllocator : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE GetInfo( /* [out] */ DWORD *pdwcbTotalFree, /* [out] */ DWORD *pdwcbLargestFree, /* [out] */ DWORD *pdwcbTotalMemory, /* [out] */ DWORD *pdwcbMinimumChunk) = 0; virtual HRESULT STDMETHODCALLTYPE CheckMemory( /* [in] */ const BYTE *pBuffer) = 0; virtual HRESULT STDMETHODCALLTYPE Alloc( /* [out] */ BYTE **ppBuffer, /* [out][in] */ DWORD *pdwcbBuffer) = 0; virtual HRESULT STDMETHODCALLTYPE Free( /* [in] */ BYTE *pBuffer) = 0; virtual HRESULT STDMETHODCALLTYPE GetDevMemoryObject( /* [out] */ IUnknown **ppUnkInnner, /* [in] */ IUnknown *pUnkOuter) = 0; }; #else /* C style interface */ typedef struct IAMDevMemoryAllocatorVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMDevMemoryAllocator * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMDevMemoryAllocator * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMDevMemoryAllocator * This); HRESULT ( STDMETHODCALLTYPE *GetInfo )( IAMDevMemoryAllocator * This, /* [out] */ DWORD *pdwcbTotalFree, /* [out] */ DWORD *pdwcbLargestFree, /* [out] */ DWORD *pdwcbTotalMemory, /* [out] */ DWORD *pdwcbMinimumChunk); HRESULT ( STDMETHODCALLTYPE *CheckMemory )( IAMDevMemoryAllocator * This, /* [in] */ const BYTE *pBuffer); HRESULT ( STDMETHODCALLTYPE *Alloc )( IAMDevMemoryAllocator * This, /* [out] */ BYTE **ppBuffer, /* [out][in] */ DWORD *pdwcbBuffer); HRESULT ( STDMETHODCALLTYPE *Free )( IAMDevMemoryAllocator * This, /* [in] */ BYTE *pBuffer); HRESULT ( STDMETHODCALLTYPE *GetDevMemoryObject )( IAMDevMemoryAllocator * This, /* [out] */ IUnknown **ppUnkInnner, /* [in] */ IUnknown *pUnkOuter); END_INTERFACE } IAMDevMemoryAllocatorVtbl; interface IAMDevMemoryAllocator { CONST_VTBL struct IAMDevMemoryAllocatorVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMDevMemoryAllocator_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMDevMemoryAllocator_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMDevMemoryAllocator_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMDevMemoryAllocator_GetInfo(This,pdwcbTotalFree,pdwcbLargestFree,pdwcbTotalMemory,pdwcbMinimumChunk) \ (This)->lpVtbl -> GetInfo(This,pdwcbTotalFree,pdwcbLargestFree,pdwcbTotalMemory,pdwcbMinimumChunk) #define IAMDevMemoryAllocator_CheckMemory(This,pBuffer) \ (This)->lpVtbl -> CheckMemory(This,pBuffer) #define IAMDevMemoryAllocator_Alloc(This,ppBuffer,pdwcbBuffer) \ (This)->lpVtbl -> Alloc(This,ppBuffer,pdwcbBuffer) #define IAMDevMemoryAllocator_Free(This,pBuffer) \ (This)->lpVtbl -> Free(This,pBuffer) #define IAMDevMemoryAllocator_GetDevMemoryObject(This,ppUnkInnner,pUnkOuter) \ (This)->lpVtbl -> GetDevMemoryObject(This,ppUnkInnner,pUnkOuter) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMDevMemoryAllocator_GetInfo_Proxy( IAMDevMemoryAllocator * This, /* [out] */ DWORD *pdwcbTotalFree, /* [out] */ DWORD *pdwcbLargestFree, /* [out] */ DWORD *pdwcbTotalMemory, /* [out] */ DWORD *pdwcbMinimumChunk); void __RPC_STUB IAMDevMemoryAllocator_GetInfo_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMDevMemoryAllocator_CheckMemory_Proxy( IAMDevMemoryAllocator * This, /* [in] */ const BYTE *pBuffer); void __RPC_STUB IAMDevMemoryAllocator_CheckMemory_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMDevMemoryAllocator_Alloc_Proxy( IAMDevMemoryAllocator * This, /* [out] */ BYTE **ppBuffer, /* [out][in] */ DWORD *pdwcbBuffer); void __RPC_STUB IAMDevMemoryAllocator_Alloc_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMDevMemoryAllocator_Free_Proxy( IAMDevMemoryAllocator * This, /* [in] */ BYTE *pBuffer); void __RPC_STUB IAMDevMemoryAllocator_Free_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMDevMemoryAllocator_GetDevMemoryObject_Proxy( IAMDevMemoryAllocator * This, /* [out] */ IUnknown **ppUnkInnner, /* [in] */ IUnknown *pUnkOuter); void __RPC_STUB IAMDevMemoryAllocator_GetDevMemoryObject_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMDevMemoryAllocator_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0334 */ /* [local] */ typedef IAMDevMemoryAllocator *PAMDEVMEMORYALLOCATOR; extern RPC_IF_HANDLE __MIDL_itf_strmif_0334_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0334_v0_0_s_ifspec; #ifndef __IAMDevMemoryControl_INTERFACE_DEFINED__ #define __IAMDevMemoryControl_INTERFACE_DEFINED__ /* interface IAMDevMemoryControl */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IAMDevMemoryControl; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("c6545bf1-e76b-11d0-bd52-00a0c911ce86") IAMDevMemoryControl : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE QueryWriteSync( void) = 0; virtual HRESULT STDMETHODCALLTYPE WriteSync( void) = 0; virtual HRESULT STDMETHODCALLTYPE GetDevId( /* [out] */ DWORD *pdwDevId) = 0; }; #else /* C style interface */ typedef struct IAMDevMemoryControlVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMDevMemoryControl * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMDevMemoryControl * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMDevMemoryControl * This); HRESULT ( STDMETHODCALLTYPE *QueryWriteSync )( IAMDevMemoryControl * This); HRESULT ( STDMETHODCALLTYPE *WriteSync )( IAMDevMemoryControl * This); HRESULT ( STDMETHODCALLTYPE *GetDevId )( IAMDevMemoryControl * This, /* [out] */ DWORD *pdwDevId); END_INTERFACE } IAMDevMemoryControlVtbl; interface IAMDevMemoryControl { CONST_VTBL struct IAMDevMemoryControlVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMDevMemoryControl_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMDevMemoryControl_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMDevMemoryControl_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMDevMemoryControl_QueryWriteSync(This) \ (This)->lpVtbl -> QueryWriteSync(This) #define IAMDevMemoryControl_WriteSync(This) \ (This)->lpVtbl -> WriteSync(This) #define IAMDevMemoryControl_GetDevId(This,pdwDevId) \ (This)->lpVtbl -> GetDevId(This,pdwDevId) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMDevMemoryControl_QueryWriteSync_Proxy( IAMDevMemoryControl * This); void __RPC_STUB IAMDevMemoryControl_QueryWriteSync_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMDevMemoryControl_WriteSync_Proxy( IAMDevMemoryControl * This); void __RPC_STUB IAMDevMemoryControl_WriteSync_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMDevMemoryControl_GetDevId_Proxy( IAMDevMemoryControl * This, /* [out] */ DWORD *pdwDevId); void __RPC_STUB IAMDevMemoryControl_GetDevId_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMDevMemoryControl_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0335 */ /* [local] */ typedef IAMDevMemoryControl *PAMDEVMEMORYCONTROL; enum _AMSTREAMSELECTINFOFLAGS { AMSTREAMSELECTINFO_ENABLED = 0x1, AMSTREAMSELECTINFO_EXCLUSIVE = 0x2 } ; enum _AMSTREAMSELECTENABLEFLAGS { AMSTREAMSELECTENABLE_ENABLE = 0x1, AMSTREAMSELECTENABLE_ENABLEALL = 0x2 } ; extern RPC_IF_HANDLE __MIDL_itf_strmif_0335_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0335_v0_0_s_ifspec; #ifndef __IAMStreamSelect_INTERFACE_DEFINED__ #define __IAMStreamSelect_INTERFACE_DEFINED__ /* interface IAMStreamSelect */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IAMStreamSelect; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("c1960960-17f5-11d1-abe1-00a0c905f375") IAMStreamSelect : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE Count( /* [out] */ DWORD *pcStreams) = 0; virtual HRESULT STDMETHODCALLTYPE Info( /* [in] */ long lIndex, /* [out] */ AM_MEDIA_TYPE **ppmt, /* [out] */ DWORD *pdwFlags, /* [out] */ LCID *plcid, /* [out] */ DWORD *pdwGroup, /* [out] */ WCHAR **ppszName, /* [out] */ IUnknown **ppObject, /* [out] */ IUnknown **ppUnk) = 0; virtual HRESULT STDMETHODCALLTYPE Enable( /* [in] */ long lIndex, /* [in] */ DWORD dwFlags) = 0; }; #else /* C style interface */ typedef struct IAMStreamSelectVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMStreamSelect * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMStreamSelect * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMStreamSelect * This); HRESULT ( STDMETHODCALLTYPE *Count )( IAMStreamSelect * This, /* [out] */ DWORD *pcStreams); HRESULT ( STDMETHODCALLTYPE *Info )( IAMStreamSelect * This, /* [in] */ long lIndex, /* [out] */ AM_MEDIA_TYPE **ppmt, /* [out] */ DWORD *pdwFlags, /* [out] */ LCID *plcid, /* [out] */ DWORD *pdwGroup, /* [out] */ WCHAR **ppszName, /* [out] */ IUnknown **ppObject, /* [out] */ IUnknown **ppUnk); HRESULT ( STDMETHODCALLTYPE *Enable )( IAMStreamSelect * This, /* [in] */ long lIndex, /* [in] */ DWORD dwFlags); END_INTERFACE } IAMStreamSelectVtbl; interface IAMStreamSelect { CONST_VTBL struct IAMStreamSelectVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMStreamSelect_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMStreamSelect_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMStreamSelect_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMStreamSelect_Count(This,pcStreams) \ (This)->lpVtbl -> Count(This,pcStreams) #define IAMStreamSelect_Info(This,lIndex,ppmt,pdwFlags,plcid,pdwGroup,ppszName,ppObject,ppUnk) \ (This)->lpVtbl -> Info(This,lIndex,ppmt,pdwFlags,plcid,pdwGroup,ppszName,ppObject,ppUnk) #define IAMStreamSelect_Enable(This,lIndex,dwFlags) \ (This)->lpVtbl -> Enable(This,lIndex,dwFlags) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMStreamSelect_Count_Proxy( IAMStreamSelect * This, /* [out] */ DWORD *pcStreams); void __RPC_STUB IAMStreamSelect_Count_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMStreamSelect_Info_Proxy( IAMStreamSelect * This, /* [in] */ long lIndex, /* [out] */ AM_MEDIA_TYPE **ppmt, /* [out] */ DWORD *pdwFlags, /* [out] */ LCID *plcid, /* [out] */ DWORD *pdwGroup, /* [out] */ WCHAR **ppszName, /* [out] */ IUnknown **ppObject, /* [out] */ IUnknown **ppUnk); void __RPC_STUB IAMStreamSelect_Info_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMStreamSelect_Enable_Proxy( IAMStreamSelect * This, /* [in] */ long lIndex, /* [in] */ DWORD dwFlags); void __RPC_STUB IAMStreamSelect_Enable_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMStreamSelect_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0336 */ /* [local] */ typedef IAMStreamSelect *PAMSTREAMSELECT; enum _AMRESCTL_RESERVEFLAGS { AMRESCTL_RESERVEFLAGS_RESERVE = 0, AMRESCTL_RESERVEFLAGS_UNRESERVE = 0x1 } ; extern RPC_IF_HANDLE __MIDL_itf_strmif_0336_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0336_v0_0_s_ifspec; #ifndef __IAMResourceControl_INTERFACE_DEFINED__ #define __IAMResourceControl_INTERFACE_DEFINED__ /* interface IAMResourceControl */ /* [local][unique][uuid][object] */ EXTERN_C const IID IID_IAMResourceControl; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("8389d2d0-77d7-11d1-abe6-00a0c905f375") IAMResourceControl : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE Reserve( /* [in] */ DWORD dwFlags, /* [in] */ PVOID pvReserved) = 0; }; #else /* C style interface */ typedef struct IAMResourceControlVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMResourceControl * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMResourceControl * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMResourceControl * This); HRESULT ( STDMETHODCALLTYPE *Reserve )( IAMResourceControl * This, /* [in] */ DWORD dwFlags, /* [in] */ PVOID pvReserved); END_INTERFACE } IAMResourceControlVtbl; interface IAMResourceControl { CONST_VTBL struct IAMResourceControlVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMResourceControl_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMResourceControl_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMResourceControl_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMResourceControl_Reserve(This,dwFlags,pvReserved) \ (This)->lpVtbl -> Reserve(This,dwFlags,pvReserved) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMResourceControl_Reserve_Proxy( IAMResourceControl * This, /* [in] */ DWORD dwFlags, /* [in] */ PVOID pvReserved); void __RPC_STUB IAMResourceControl_Reserve_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMResourceControl_INTERFACE_DEFINED__ */ #ifndef __IAMClockAdjust_INTERFACE_DEFINED__ #define __IAMClockAdjust_INTERFACE_DEFINED__ /* interface IAMClockAdjust */ /* [local][unique][uuid][object] */ EXTERN_C const IID IID_IAMClockAdjust; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("4d5466b0-a49c-11d1-abe8-00a0c905f375") IAMClockAdjust : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE SetClockDelta( /* [in] */ REFERENCE_TIME rtDelta) = 0; }; #else /* C style interface */ typedef struct IAMClockAdjustVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMClockAdjust * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMClockAdjust * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMClockAdjust * This); HRESULT ( STDMETHODCALLTYPE *SetClockDelta )( IAMClockAdjust * This, /* [in] */ REFERENCE_TIME rtDelta); END_INTERFACE } IAMClockAdjustVtbl; interface IAMClockAdjust { CONST_VTBL struct IAMClockAdjustVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMClockAdjust_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMClockAdjust_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMClockAdjust_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMClockAdjust_SetClockDelta(This,rtDelta) \ (This)->lpVtbl -> SetClockDelta(This,rtDelta) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMClockAdjust_SetClockDelta_Proxy( IAMClockAdjust * This, /* [in] */ REFERENCE_TIME rtDelta); void __RPC_STUB IAMClockAdjust_SetClockDelta_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMClockAdjust_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0338 */ /* [local] */ enum _AM_FILTER_MISC_FLAGS { AM_FILTER_MISC_FLAGS_IS_RENDERER = 0x1, AM_FILTER_MISC_FLAGS_IS_SOURCE = 0x2 } ; extern RPC_IF_HANDLE __MIDL_itf_strmif_0338_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0338_v0_0_s_ifspec; #ifndef __IAMFilterMiscFlags_INTERFACE_DEFINED__ #define __IAMFilterMiscFlags_INTERFACE_DEFINED__ /* interface IAMFilterMiscFlags */ /* [local][unique][uuid][object] */ EXTERN_C const IID IID_IAMFilterMiscFlags; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("2dd74950-a890-11d1-abe8-00a0c905f375") IAMFilterMiscFlags : public IUnknown { public: virtual ULONG STDMETHODCALLTYPE GetMiscFlags( void) = 0; }; #else /* C style interface */ typedef struct IAMFilterMiscFlagsVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMFilterMiscFlags * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMFilterMiscFlags * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMFilterMiscFlags * This); ULONG ( STDMETHODCALLTYPE *GetMiscFlags )( IAMFilterMiscFlags * This); END_INTERFACE } IAMFilterMiscFlagsVtbl; interface IAMFilterMiscFlags { CONST_VTBL struct IAMFilterMiscFlagsVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMFilterMiscFlags_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMFilterMiscFlags_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMFilterMiscFlags_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMFilterMiscFlags_GetMiscFlags(This) \ (This)->lpVtbl -> GetMiscFlags(This) #endif /* COBJMACROS */ #endif /* C style interface */ ULONG STDMETHODCALLTYPE IAMFilterMiscFlags_GetMiscFlags_Proxy( IAMFilterMiscFlags * This); void __RPC_STUB IAMFilterMiscFlags_GetMiscFlags_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMFilterMiscFlags_INTERFACE_DEFINED__ */ #ifndef __IDrawVideoImage_INTERFACE_DEFINED__ #define __IDrawVideoImage_INTERFACE_DEFINED__ /* interface IDrawVideoImage */ /* [unique][uuid][local][object] */ EXTERN_C const IID IID_IDrawVideoImage; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("48efb120-ab49-11d2-aed2-00a0c995e8d5") IDrawVideoImage : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE DrawVideoImageBegin( void) = 0; virtual HRESULT STDMETHODCALLTYPE DrawVideoImageEnd( void) = 0; virtual HRESULT STDMETHODCALLTYPE DrawVideoImageDraw( /* [in] */ HDC hdc, /* [in] */ LPRECT lprcSrc, /* [in] */ LPRECT lprcDst) = 0; }; #else /* C style interface */ typedef struct IDrawVideoImageVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IDrawVideoImage * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IDrawVideoImage * This); ULONG ( STDMETHODCALLTYPE *Release )( IDrawVideoImage * This); HRESULT ( STDMETHODCALLTYPE *DrawVideoImageBegin )( IDrawVideoImage * This); HRESULT ( STDMETHODCALLTYPE *DrawVideoImageEnd )( IDrawVideoImage * This); HRESULT ( STDMETHODCALLTYPE *DrawVideoImageDraw )( IDrawVideoImage * This, /* [in] */ HDC hdc, /* [in] */ LPRECT lprcSrc, /* [in] */ LPRECT lprcDst); END_INTERFACE } IDrawVideoImageVtbl; interface IDrawVideoImage { CONST_VTBL struct IDrawVideoImageVtbl *lpVtbl; }; #ifdef COBJMACROS #define IDrawVideoImage_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IDrawVideoImage_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IDrawVideoImage_Release(This) \ (This)->lpVtbl -> Release(This) #define IDrawVideoImage_DrawVideoImageBegin(This) \ (This)->lpVtbl -> DrawVideoImageBegin(This) #define IDrawVideoImage_DrawVideoImageEnd(This) \ (This)->lpVtbl -> DrawVideoImageEnd(This) #define IDrawVideoImage_DrawVideoImageDraw(This,hdc,lprcSrc,lprcDst) \ (This)->lpVtbl -> DrawVideoImageDraw(This,hdc,lprcSrc,lprcDst) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IDrawVideoImage_DrawVideoImageBegin_Proxy( IDrawVideoImage * This); void __RPC_STUB IDrawVideoImage_DrawVideoImageBegin_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDrawVideoImage_DrawVideoImageEnd_Proxy( IDrawVideoImage * This); void __RPC_STUB IDrawVideoImage_DrawVideoImageEnd_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDrawVideoImage_DrawVideoImageDraw_Proxy( IDrawVideoImage * This, /* [in] */ HDC hdc, /* [in] */ LPRECT lprcSrc, /* [in] */ LPRECT lprcDst); void __RPC_STUB IDrawVideoImage_DrawVideoImageDraw_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IDrawVideoImage_INTERFACE_DEFINED__ */ #ifndef __IDecimateVideoImage_INTERFACE_DEFINED__ #define __IDecimateVideoImage_INTERFACE_DEFINED__ /* interface IDecimateVideoImage */ /* [unique][uuid][local][object] */ EXTERN_C const IID IID_IDecimateVideoImage; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("2e5ea3e0-e924-11d2-b6da-00a0c995e8df") IDecimateVideoImage : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE SetDecimationImageSize( /* [in] */ long lWidth, /* [in] */ long lHeight) = 0; virtual HRESULT STDMETHODCALLTYPE ResetDecimationImageSize( void) = 0; }; #else /* C style interface */ typedef struct IDecimateVideoImageVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IDecimateVideoImage * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IDecimateVideoImage * This); ULONG ( STDMETHODCALLTYPE *Release )( IDecimateVideoImage * This); HRESULT ( STDMETHODCALLTYPE *SetDecimationImageSize )( IDecimateVideoImage * This, /* [in] */ long lWidth, /* [in] */ long lHeight); HRESULT ( STDMETHODCALLTYPE *ResetDecimationImageSize )( IDecimateVideoImage * This); END_INTERFACE } IDecimateVideoImageVtbl; interface IDecimateVideoImage { CONST_VTBL struct IDecimateVideoImageVtbl *lpVtbl; }; #ifdef COBJMACROS #define IDecimateVideoImage_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IDecimateVideoImage_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IDecimateVideoImage_Release(This) \ (This)->lpVtbl -> Release(This) #define IDecimateVideoImage_SetDecimationImageSize(This,lWidth,lHeight) \ (This)->lpVtbl -> SetDecimationImageSize(This,lWidth,lHeight) #define IDecimateVideoImage_ResetDecimationImageSize(This) \ (This)->lpVtbl -> ResetDecimationImageSize(This) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IDecimateVideoImage_SetDecimationImageSize_Proxy( IDecimateVideoImage * This, /* [in] */ long lWidth, /* [in] */ long lHeight); void __RPC_STUB IDecimateVideoImage_SetDecimationImageSize_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDecimateVideoImage_ResetDecimationImageSize_Proxy( IDecimateVideoImage * This); void __RPC_STUB IDecimateVideoImage_ResetDecimationImageSize_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IDecimateVideoImage_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0341 */ /* [local] */ typedef enum _DECIMATION_USAGE { DECIMATION_LEGACY = 0, DECIMATION_USE_DECODER_ONLY = DECIMATION_LEGACY + 1, DECIMATION_USE_VIDEOPORT_ONLY = DECIMATION_USE_DECODER_ONLY + 1, DECIMATION_USE_OVERLAY_ONLY = DECIMATION_USE_VIDEOPORT_ONLY + 1, DECIMATION_DEFAULT = DECIMATION_USE_OVERLAY_ONLY + 1 } DECIMATION_USAGE; extern RPC_IF_HANDLE __MIDL_itf_strmif_0341_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0341_v0_0_s_ifspec; #ifndef __IAMVideoDecimationProperties_INTERFACE_DEFINED__ #define __IAMVideoDecimationProperties_INTERFACE_DEFINED__ /* interface IAMVideoDecimationProperties */ /* [unique][uuid][local][object] */ EXTERN_C const IID IID_IAMVideoDecimationProperties; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("60d32930-13da-11d3-9ec6-c4fcaef5c7be") IAMVideoDecimationProperties : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE QueryDecimationUsage( /* [out] */ DECIMATION_USAGE *lpUsage) = 0; virtual HRESULT STDMETHODCALLTYPE SetDecimationUsage( /* [in] */ DECIMATION_USAGE Usage) = 0; }; #else /* C style interface */ typedef struct IAMVideoDecimationPropertiesVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMVideoDecimationProperties * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMVideoDecimationProperties * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMVideoDecimationProperties * This); HRESULT ( STDMETHODCALLTYPE *QueryDecimationUsage )( IAMVideoDecimationProperties * This, /* [out] */ DECIMATION_USAGE *lpUsage); HRESULT ( STDMETHODCALLTYPE *SetDecimationUsage )( IAMVideoDecimationProperties * This, /* [in] */ DECIMATION_USAGE Usage); END_INTERFACE } IAMVideoDecimationPropertiesVtbl; interface IAMVideoDecimationProperties { CONST_VTBL struct IAMVideoDecimationPropertiesVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMVideoDecimationProperties_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMVideoDecimationProperties_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMVideoDecimationProperties_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMVideoDecimationProperties_QueryDecimationUsage(This,lpUsage) \ (This)->lpVtbl -> QueryDecimationUsage(This,lpUsage) #define IAMVideoDecimationProperties_SetDecimationUsage(This,Usage) \ (This)->lpVtbl -> SetDecimationUsage(This,Usage) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMVideoDecimationProperties_QueryDecimationUsage_Proxy( IAMVideoDecimationProperties * This, /* [out] */ DECIMATION_USAGE *lpUsage); void __RPC_STUB IAMVideoDecimationProperties_QueryDecimationUsage_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMVideoDecimationProperties_SetDecimationUsage_Proxy( IAMVideoDecimationProperties * This, /* [in] */ DECIMATION_USAGE Usage); void __RPC_STUB IAMVideoDecimationProperties_SetDecimationUsage_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMVideoDecimationProperties_INTERFACE_DEFINED__ */ #ifndef __IVideoFrameStep_INTERFACE_DEFINED__ #define __IVideoFrameStep_INTERFACE_DEFINED__ /* interface IVideoFrameStep */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IVideoFrameStep; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("e46a9787-2b71-444d-a4b5-1fab7b708d6a") IVideoFrameStep : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE Step( DWORD dwFrames, /* [unique] */ IUnknown *pStepObject) = 0; virtual HRESULT STDMETHODCALLTYPE CanStep( long bMultiple, /* [unique] */ IUnknown *pStepObject) = 0; virtual HRESULT STDMETHODCALLTYPE CancelStep( void) = 0; }; #else /* C style interface */ typedef struct IVideoFrameStepVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IVideoFrameStep * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IVideoFrameStep * This); ULONG ( STDMETHODCALLTYPE *Release )( IVideoFrameStep * This); HRESULT ( STDMETHODCALLTYPE *Step )( IVideoFrameStep * This, DWORD dwFrames, /* [unique] */ IUnknown *pStepObject); HRESULT ( STDMETHODCALLTYPE *CanStep )( IVideoFrameStep * This, long bMultiple, /* [unique] */ IUnknown *pStepObject); HRESULT ( STDMETHODCALLTYPE *CancelStep )( IVideoFrameStep * This); END_INTERFACE } IVideoFrameStepVtbl; interface IVideoFrameStep { CONST_VTBL struct IVideoFrameStepVtbl *lpVtbl; }; #ifdef COBJMACROS #define IVideoFrameStep_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IVideoFrameStep_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IVideoFrameStep_Release(This) \ (This)->lpVtbl -> Release(This) #define IVideoFrameStep_Step(This,dwFrames,pStepObject) \ (This)->lpVtbl -> Step(This,dwFrames,pStepObject) #define IVideoFrameStep_CanStep(This,bMultiple,pStepObject) \ (This)->lpVtbl -> CanStep(This,bMultiple,pStepObject) #define IVideoFrameStep_CancelStep(This) \ (This)->lpVtbl -> CancelStep(This) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IVideoFrameStep_Step_Proxy( IVideoFrameStep * This, DWORD dwFrames, /* [unique] */ IUnknown *pStepObject); void __RPC_STUB IVideoFrameStep_Step_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVideoFrameStep_CanStep_Proxy( IVideoFrameStep * This, long bMultiple, /* [unique] */ IUnknown *pStepObject); void __RPC_STUB IVideoFrameStep_CanStep_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVideoFrameStep_CancelStep_Proxy( IVideoFrameStep * This); void __RPC_STUB IVideoFrameStep_CancelStep_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IVideoFrameStep_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0343 */ /* [local] */ enum _AM_PUSHSOURCE_FLAGS { AM_PUSHSOURCECAPS_INTERNAL_RM = 0x1, AM_PUSHSOURCECAPS_NOT_LIVE = 0x2, AM_PUSHSOURCECAPS_PRIVATE_CLOCK = 0x4, AM_PUSHSOURCEREQS_USE_STREAM_CLOCK = 0x10000 } ; extern RPC_IF_HANDLE __MIDL_itf_strmif_0343_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0343_v0_0_s_ifspec; #ifndef __IAMLatency_INTERFACE_DEFINED__ #define __IAMLatency_INTERFACE_DEFINED__ /* interface IAMLatency */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IAMLatency; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("62EA93BA-EC62-11d2-B770-00C04FB6BD3D") IAMLatency : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE GetLatency( /* [in] */ REFERENCE_TIME *prtLatency) = 0; }; #else /* C style interface */ typedef struct IAMLatencyVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMLatency * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMLatency * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMLatency * This); HRESULT ( STDMETHODCALLTYPE *GetLatency )( IAMLatency * This, /* [in] */ REFERENCE_TIME *prtLatency); END_INTERFACE } IAMLatencyVtbl; interface IAMLatency { CONST_VTBL struct IAMLatencyVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMLatency_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMLatency_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMLatency_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMLatency_GetLatency(This,prtLatency) \ (This)->lpVtbl -> GetLatency(This,prtLatency) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMLatency_GetLatency_Proxy( IAMLatency * This, /* [in] */ REFERENCE_TIME *prtLatency); void __RPC_STUB IAMLatency_GetLatency_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMLatency_INTERFACE_DEFINED__ */ #ifndef __IAMPushSource_INTERFACE_DEFINED__ #define __IAMPushSource_INTERFACE_DEFINED__ /* interface IAMPushSource */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IAMPushSource; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("F185FE76-E64E-11d2-B76E-00C04FB6BD3D") IAMPushSource : public IAMLatency { public: virtual HRESULT STDMETHODCALLTYPE GetPushSourceFlags( /* [out] */ ULONG *pFlags) = 0; virtual HRESULT STDMETHODCALLTYPE SetPushSourceFlags( /* [in] */ ULONG Flags) = 0; virtual HRESULT STDMETHODCALLTYPE SetStreamOffset( /* [in] */ REFERENCE_TIME rtOffset) = 0; virtual HRESULT STDMETHODCALLTYPE GetStreamOffset( /* [out] */ REFERENCE_TIME *prtOffset) = 0; virtual HRESULT STDMETHODCALLTYPE GetMaxStreamOffset( /* [out] */ REFERENCE_TIME *prtMaxOffset) = 0; virtual HRESULT STDMETHODCALLTYPE SetMaxStreamOffset( /* [in] */ REFERENCE_TIME rtMaxOffset) = 0; }; #else /* C style interface */ typedef struct IAMPushSourceVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMPushSource * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMPushSource * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMPushSource * This); HRESULT ( STDMETHODCALLTYPE *GetLatency )( IAMPushSource * This, /* [in] */ REFERENCE_TIME *prtLatency); HRESULT ( STDMETHODCALLTYPE *GetPushSourceFlags )( IAMPushSource * This, /* [out] */ ULONG *pFlags); HRESULT ( STDMETHODCALLTYPE *SetPushSourceFlags )( IAMPushSource * This, /* [in] */ ULONG Flags); HRESULT ( STDMETHODCALLTYPE *SetStreamOffset )( IAMPushSource * This, /* [in] */ REFERENCE_TIME rtOffset); HRESULT ( STDMETHODCALLTYPE *GetStreamOffset )( IAMPushSource * This, /* [out] */ REFERENCE_TIME *prtOffset); HRESULT ( STDMETHODCALLTYPE *GetMaxStreamOffset )( IAMPushSource * This, /* [out] */ REFERENCE_TIME *prtMaxOffset); HRESULT ( STDMETHODCALLTYPE *SetMaxStreamOffset )( IAMPushSource * This, /* [in] */ REFERENCE_TIME rtMaxOffset); END_INTERFACE } IAMPushSourceVtbl; interface IAMPushSource { CONST_VTBL struct IAMPushSourceVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMPushSource_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMPushSource_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMPushSource_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMPushSource_GetLatency(This,prtLatency) \ (This)->lpVtbl -> GetLatency(This,prtLatency) #define IAMPushSource_GetPushSourceFlags(This,pFlags) \ (This)->lpVtbl -> GetPushSourceFlags(This,pFlags) #define IAMPushSource_SetPushSourceFlags(This,Flags) \ (This)->lpVtbl -> SetPushSourceFlags(This,Flags) #define IAMPushSource_SetStreamOffset(This,rtOffset) \ (This)->lpVtbl -> SetStreamOffset(This,rtOffset) #define IAMPushSource_GetStreamOffset(This,prtOffset) \ (This)->lpVtbl -> GetStreamOffset(This,prtOffset) #define IAMPushSource_GetMaxStreamOffset(This,prtMaxOffset) \ (This)->lpVtbl -> GetMaxStreamOffset(This,prtMaxOffset) #define IAMPushSource_SetMaxStreamOffset(This,rtMaxOffset) \ (This)->lpVtbl -> SetMaxStreamOffset(This,rtMaxOffset) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMPushSource_GetPushSourceFlags_Proxy( IAMPushSource * This, /* [out] */ ULONG *pFlags); void __RPC_STUB IAMPushSource_GetPushSourceFlags_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMPushSource_SetPushSourceFlags_Proxy( IAMPushSource * This, /* [in] */ ULONG Flags); void __RPC_STUB IAMPushSource_SetPushSourceFlags_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMPushSource_SetStreamOffset_Proxy( IAMPushSource * This, /* [in] */ REFERENCE_TIME rtOffset); void __RPC_STUB IAMPushSource_SetStreamOffset_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMPushSource_GetStreamOffset_Proxy( IAMPushSource * This, /* [out] */ REFERENCE_TIME *prtOffset); void __RPC_STUB IAMPushSource_GetStreamOffset_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMPushSource_GetMaxStreamOffset_Proxy( IAMPushSource * This, /* [out] */ REFERENCE_TIME *prtMaxOffset); void __RPC_STUB IAMPushSource_GetMaxStreamOffset_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMPushSource_SetMaxStreamOffset_Proxy( IAMPushSource * This, /* [in] */ REFERENCE_TIME rtMaxOffset); void __RPC_STUB IAMPushSource_SetMaxStreamOffset_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMPushSource_INTERFACE_DEFINED__ */ #ifndef __IAMDeviceRemoval_INTERFACE_DEFINED__ #define __IAMDeviceRemoval_INTERFACE_DEFINED__ /* interface IAMDeviceRemoval */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IAMDeviceRemoval; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("f90a6130-b658-11d2-ae49-0000f8754b99") IAMDeviceRemoval : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE DeviceInfo( /* [out] */ CLSID *pclsidInterfaceClass, /* [out] */ WCHAR **pwszSymbolicLink) = 0; virtual HRESULT STDMETHODCALLTYPE Reassociate( void) = 0; virtual HRESULT STDMETHODCALLTYPE Disassociate( void) = 0; }; #else /* C style interface */ typedef struct IAMDeviceRemovalVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMDeviceRemoval * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMDeviceRemoval * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMDeviceRemoval * This); HRESULT ( STDMETHODCALLTYPE *DeviceInfo )( IAMDeviceRemoval * This, /* [out] */ CLSID *pclsidInterfaceClass, /* [out] */ WCHAR **pwszSymbolicLink); HRESULT ( STDMETHODCALLTYPE *Reassociate )( IAMDeviceRemoval * This); HRESULT ( STDMETHODCALLTYPE *Disassociate )( IAMDeviceRemoval * This); END_INTERFACE } IAMDeviceRemovalVtbl; interface IAMDeviceRemoval { CONST_VTBL struct IAMDeviceRemovalVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMDeviceRemoval_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMDeviceRemoval_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMDeviceRemoval_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMDeviceRemoval_DeviceInfo(This,pclsidInterfaceClass,pwszSymbolicLink) \ (This)->lpVtbl -> DeviceInfo(This,pclsidInterfaceClass,pwszSymbolicLink) #define IAMDeviceRemoval_Reassociate(This) \ (This)->lpVtbl -> Reassociate(This) #define IAMDeviceRemoval_Disassociate(This) \ (This)->lpVtbl -> Disassociate(This) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMDeviceRemoval_DeviceInfo_Proxy( IAMDeviceRemoval * This, /* [out] */ CLSID *pclsidInterfaceClass, /* [out] */ WCHAR **pwszSymbolicLink); void __RPC_STUB IAMDeviceRemoval_DeviceInfo_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMDeviceRemoval_Reassociate_Proxy( IAMDeviceRemoval * This); void __RPC_STUB IAMDeviceRemoval_Reassociate_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMDeviceRemoval_Disassociate_Proxy( IAMDeviceRemoval * This); void __RPC_STUB IAMDeviceRemoval_Disassociate_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMDeviceRemoval_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0345 */ /* [local] */ typedef /* [public][public][public] */ struct __MIDL___MIDL_itf_strmif_0345_0001 { DWORD dwDVAAuxSrc; DWORD dwDVAAuxCtl; DWORD dwDVAAuxSrc1; DWORD dwDVAAuxCtl1; DWORD dwDVVAuxSrc; DWORD dwDVVAuxCtl; DWORD dwDVReserved[ 2 ]; } DVINFO; typedef struct __MIDL___MIDL_itf_strmif_0345_0001 *PDVINFO; enum _DVENCODERRESOLUTION { DVENCODERRESOLUTION_720x480 = 2012, DVENCODERRESOLUTION_360x240 = 2013, DVENCODERRESOLUTION_180x120 = 2014, DVENCODERRESOLUTION_88x60 = 2015 } ; enum _DVENCODERVIDEOFORMAT { DVENCODERVIDEOFORMAT_NTSC = 2000, DVENCODERVIDEOFORMAT_PAL = 2001 } ; enum _DVENCODERFORMAT { DVENCODERFORMAT_DVSD = 2007, DVENCODERFORMAT_DVHD = 2008, DVENCODERFORMAT_DVSL = 2009 } ; extern RPC_IF_HANDLE __MIDL_itf_strmif_0345_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0345_v0_0_s_ifspec; #ifndef __IDVEnc_INTERFACE_DEFINED__ #define __IDVEnc_INTERFACE_DEFINED__ /* interface IDVEnc */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IDVEnc; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("d18e17a0-aacb-11d0-afb0-00aa00b67a42") IDVEnc : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE get_IFormatResolution( /* [out] */ int *VideoFormat, /* [out] */ int *DVFormat, /* [out] */ int *Resolution, /* [in] */ BYTE fDVInfo, /* [out] */ DVINFO *sDVInfo) = 0; virtual HRESULT STDMETHODCALLTYPE put_IFormatResolution( /* [in] */ int VideoFormat, /* [in] */ int DVFormat, /* [in] */ int Resolution, /* [in] */ BYTE fDVInfo, /* [in] */ DVINFO *sDVInfo) = 0; }; #else /* C style interface */ typedef struct IDVEncVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IDVEnc * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IDVEnc * This); ULONG ( STDMETHODCALLTYPE *Release )( IDVEnc * This); HRESULT ( STDMETHODCALLTYPE *get_IFormatResolution )( IDVEnc * This, /* [out] */ int *VideoFormat, /* [out] */ int *DVFormat, /* [out] */ int *Resolution, /* [in] */ BYTE fDVInfo, /* [out] */ DVINFO *sDVInfo); HRESULT ( STDMETHODCALLTYPE *put_IFormatResolution )( IDVEnc * This, /* [in] */ int VideoFormat, /* [in] */ int DVFormat, /* [in] */ int Resolution, /* [in] */ BYTE fDVInfo, /* [in] */ DVINFO *sDVInfo); END_INTERFACE } IDVEncVtbl; interface IDVEnc { CONST_VTBL struct IDVEncVtbl *lpVtbl; }; #ifdef COBJMACROS #define IDVEnc_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IDVEnc_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IDVEnc_Release(This) \ (This)->lpVtbl -> Release(This) #define IDVEnc_get_IFormatResolution(This,VideoFormat,DVFormat,Resolution,fDVInfo,sDVInfo) \ (This)->lpVtbl -> get_IFormatResolution(This,VideoFormat,DVFormat,Resolution,fDVInfo,sDVInfo) #define IDVEnc_put_IFormatResolution(This,VideoFormat,DVFormat,Resolution,fDVInfo,sDVInfo) \ (This)->lpVtbl -> put_IFormatResolution(This,VideoFormat,DVFormat,Resolution,fDVInfo,sDVInfo) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IDVEnc_get_IFormatResolution_Proxy( IDVEnc * This, /* [out] */ int *VideoFormat, /* [out] */ int *DVFormat, /* [out] */ int *Resolution, /* [in] */ BYTE fDVInfo, /* [out] */ DVINFO *sDVInfo); void __RPC_STUB IDVEnc_get_IFormatResolution_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDVEnc_put_IFormatResolution_Proxy( IDVEnc * This, /* [in] */ int VideoFormat, /* [in] */ int DVFormat, /* [in] */ int Resolution, /* [in] */ BYTE fDVInfo, /* [in] */ DVINFO *sDVInfo); void __RPC_STUB IDVEnc_put_IFormatResolution_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IDVEnc_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0346 */ /* [local] */ enum _DVDECODERRESOLUTION { DVDECODERRESOLUTION_720x480 = 1000, DVDECODERRESOLUTION_360x240 = 1001, DVDECODERRESOLUTION_180x120 = 1002, DVDECODERRESOLUTION_88x60 = 1003 } ; enum _DVRESOLUTION { DVRESOLUTION_FULL = 1000, DVRESOLUTION_HALF = 1001, DVRESOLUTION_QUARTER = 1002, DVRESOLUTION_DC = 1003 } ; extern RPC_IF_HANDLE __MIDL_itf_strmif_0346_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0346_v0_0_s_ifspec; #ifndef __IIPDVDec_INTERFACE_DEFINED__ #define __IIPDVDec_INTERFACE_DEFINED__ /* interface IIPDVDec */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IIPDVDec; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("b8e8bd60-0bfe-11d0-af91-00aa00b67a42") IIPDVDec : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE get_IPDisplay( /* [out] */ int *displayPix) = 0; virtual HRESULT STDMETHODCALLTYPE put_IPDisplay( /* [in] */ int displayPix) = 0; }; #else /* C style interface */ typedef struct IIPDVDecVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IIPDVDec * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IIPDVDec * This); ULONG ( STDMETHODCALLTYPE *Release )( IIPDVDec * This); HRESULT ( STDMETHODCALLTYPE *get_IPDisplay )( IIPDVDec * This, /* [out] */ int *displayPix); HRESULT ( STDMETHODCALLTYPE *put_IPDisplay )( IIPDVDec * This, /* [in] */ int displayPix); END_INTERFACE } IIPDVDecVtbl; interface IIPDVDec { CONST_VTBL struct IIPDVDecVtbl *lpVtbl; }; #ifdef COBJMACROS #define IIPDVDec_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IIPDVDec_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IIPDVDec_Release(This) \ (This)->lpVtbl -> Release(This) #define IIPDVDec_get_IPDisplay(This,displayPix) \ (This)->lpVtbl -> get_IPDisplay(This,displayPix) #define IIPDVDec_put_IPDisplay(This,displayPix) \ (This)->lpVtbl -> put_IPDisplay(This,displayPix) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IIPDVDec_get_IPDisplay_Proxy( IIPDVDec * This, /* [out] */ int *displayPix); void __RPC_STUB IIPDVDec_get_IPDisplay_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IIPDVDec_put_IPDisplay_Proxy( IIPDVDec * This, /* [in] */ int displayPix); void __RPC_STUB IIPDVDec_put_IPDisplay_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IIPDVDec_INTERFACE_DEFINED__ */ #ifndef __IDVRGB219_INTERFACE_DEFINED__ #define __IDVRGB219_INTERFACE_DEFINED__ /* interface IDVRGB219 */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IDVRGB219; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("58473A19-2BC8-4663-8012-25F81BABDDD1") IDVRGB219 : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE SetRGB219( /* [in] */ BOOL bState) = 0; }; #else /* C style interface */ typedef struct IDVRGB219Vtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IDVRGB219 * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IDVRGB219 * This); ULONG ( STDMETHODCALLTYPE *Release )( IDVRGB219 * This); HRESULT ( STDMETHODCALLTYPE *SetRGB219 )( IDVRGB219 * This, /* [in] */ BOOL bState); END_INTERFACE } IDVRGB219Vtbl; interface IDVRGB219 { CONST_VTBL struct IDVRGB219Vtbl *lpVtbl; }; #ifdef COBJMACROS #define IDVRGB219_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IDVRGB219_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IDVRGB219_Release(This) \ (This)->lpVtbl -> Release(This) #define IDVRGB219_SetRGB219(This,bState) \ (This)->lpVtbl -> SetRGB219(This,bState) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IDVRGB219_SetRGB219_Proxy( IDVRGB219 * This, /* [in] */ BOOL bState); void __RPC_STUB IDVRGB219_SetRGB219_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IDVRGB219_INTERFACE_DEFINED__ */ #ifndef __IDVSplitter_INTERFACE_DEFINED__ #define __IDVSplitter_INTERFACE_DEFINED__ /* interface IDVSplitter */ /* [uuid][object] */ EXTERN_C const IID IID_IDVSplitter; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("92a3a302-da7c-4a1f-ba7e-1802bb5d2d02") IDVSplitter : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE DiscardAlternateVideoFrames( /* [in] */ int nDiscard) = 0; }; #else /* C style interface */ typedef struct IDVSplitterVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IDVSplitter * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IDVSplitter * This); ULONG ( STDMETHODCALLTYPE *Release )( IDVSplitter * This); HRESULT ( STDMETHODCALLTYPE *DiscardAlternateVideoFrames )( IDVSplitter * This, /* [in] */ int nDiscard); END_INTERFACE } IDVSplitterVtbl; interface IDVSplitter { CONST_VTBL struct IDVSplitterVtbl *lpVtbl; }; #ifdef COBJMACROS #define IDVSplitter_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IDVSplitter_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IDVSplitter_Release(This) \ (This)->lpVtbl -> Release(This) #define IDVSplitter_DiscardAlternateVideoFrames(This,nDiscard) \ (This)->lpVtbl -> DiscardAlternateVideoFrames(This,nDiscard) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IDVSplitter_DiscardAlternateVideoFrames_Proxy( IDVSplitter * This, /* [in] */ int nDiscard); void __RPC_STUB IDVSplitter_DiscardAlternateVideoFrames_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IDVSplitter_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0349 */ /* [local] */ enum _AM_AUDIO_RENDERER_STAT_PARAM { AM_AUDREND_STAT_PARAM_BREAK_COUNT = 1, AM_AUDREND_STAT_PARAM_SLAVE_MODE = AM_AUDREND_STAT_PARAM_BREAK_COUNT + 1, AM_AUDREND_STAT_PARAM_SILENCE_DUR = AM_AUDREND_STAT_PARAM_SLAVE_MODE + 1, AM_AUDREND_STAT_PARAM_LAST_BUFFER_DUR = AM_AUDREND_STAT_PARAM_SILENCE_DUR + 1, AM_AUDREND_STAT_PARAM_DISCONTINUITIES = AM_AUDREND_STAT_PARAM_LAST_BUFFER_DUR + 1, AM_AUDREND_STAT_PARAM_SLAVE_RATE = AM_AUDREND_STAT_PARAM_DISCONTINUITIES + 1, AM_AUDREND_STAT_PARAM_SLAVE_DROPWRITE_DUR = AM_AUDREND_STAT_PARAM_SLAVE_RATE + 1, AM_AUDREND_STAT_PARAM_SLAVE_HIGHLOWERROR = AM_AUDREND_STAT_PARAM_SLAVE_DROPWRITE_DUR + 1, AM_AUDREND_STAT_PARAM_SLAVE_LASTHIGHLOWERROR = AM_AUDREND_STAT_PARAM_SLAVE_HIGHLOWERROR + 1, AM_AUDREND_STAT_PARAM_SLAVE_ACCUMERROR = AM_AUDREND_STAT_PARAM_SLAVE_LASTHIGHLOWERROR + 1, AM_AUDREND_STAT_PARAM_BUFFERFULLNESS = AM_AUDREND_STAT_PARAM_SLAVE_ACCUMERROR + 1, AM_AUDREND_STAT_PARAM_JITTER = AM_AUDREND_STAT_PARAM_BUFFERFULLNESS + 1 } ; extern RPC_IF_HANDLE __MIDL_itf_strmif_0349_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0349_v0_0_s_ifspec; #ifndef __IAMAudioRendererStats_INTERFACE_DEFINED__ #define __IAMAudioRendererStats_INTERFACE_DEFINED__ /* interface IAMAudioRendererStats */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IAMAudioRendererStats; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("22320CB2-D41A-11d2-BF7C-D7CB9DF0BF93") IAMAudioRendererStats : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE GetStatParam( /* [in] */ DWORD dwParam, /* [out] */ DWORD *pdwParam1, /* [out] */ DWORD *pdwParam2) = 0; }; #else /* C style interface */ typedef struct IAMAudioRendererStatsVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMAudioRendererStats * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMAudioRendererStats * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMAudioRendererStats * This); HRESULT ( STDMETHODCALLTYPE *GetStatParam )( IAMAudioRendererStats * This, /* [in] */ DWORD dwParam, /* [out] */ DWORD *pdwParam1, /* [out] */ DWORD *pdwParam2); END_INTERFACE } IAMAudioRendererStatsVtbl; interface IAMAudioRendererStats { CONST_VTBL struct IAMAudioRendererStatsVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMAudioRendererStats_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMAudioRendererStats_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMAudioRendererStats_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMAudioRendererStats_GetStatParam(This,dwParam,pdwParam1,pdwParam2) \ (This)->lpVtbl -> GetStatParam(This,dwParam,pdwParam1,pdwParam2) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMAudioRendererStats_GetStatParam_Proxy( IAMAudioRendererStats * This, /* [in] */ DWORD dwParam, /* [out] */ DWORD *pdwParam1, /* [out] */ DWORD *pdwParam2); void __RPC_STUB IAMAudioRendererStats_GetStatParam_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMAudioRendererStats_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0351 */ /* [local] */ enum _AM_INTF_SEARCH_FLAGS { AM_INTF_SEARCH_INPUT_PIN = 0x1, AM_INTF_SEARCH_OUTPUT_PIN = 0x2, AM_INTF_SEARCH_FILTER = 0x4 } ; extern RPC_IF_HANDLE __MIDL_itf_strmif_0351_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0351_v0_0_s_ifspec; #ifndef __IAMGraphStreams_INTERFACE_DEFINED__ #define __IAMGraphStreams_INTERFACE_DEFINED__ /* interface IAMGraphStreams */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IAMGraphStreams; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("632105FA-072E-11d3-8AF9-00C04FB6BD3D") IAMGraphStreams : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE FindUpstreamInterface( /* [in] */ IPin *pPin, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvInterface, /* [in] */ DWORD dwFlags) = 0; virtual HRESULT STDMETHODCALLTYPE SyncUsingStreamOffset( /* [in] */ BOOL bUseStreamOffset) = 0; virtual HRESULT STDMETHODCALLTYPE SetMaxGraphLatency( /* [in] */ REFERENCE_TIME rtMaxGraphLatency) = 0; }; #else /* C style interface */ typedef struct IAMGraphStreamsVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMGraphStreams * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMGraphStreams * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMGraphStreams * This); HRESULT ( STDMETHODCALLTYPE *FindUpstreamInterface )( IAMGraphStreams * This, /* [in] */ IPin *pPin, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvInterface, /* [in] */ DWORD dwFlags); HRESULT ( STDMETHODCALLTYPE *SyncUsingStreamOffset )( IAMGraphStreams * This, /* [in] */ BOOL bUseStreamOffset); HRESULT ( STDMETHODCALLTYPE *SetMaxGraphLatency )( IAMGraphStreams * This, /* [in] */ REFERENCE_TIME rtMaxGraphLatency); END_INTERFACE } IAMGraphStreamsVtbl; interface IAMGraphStreams { CONST_VTBL struct IAMGraphStreamsVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMGraphStreams_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMGraphStreams_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMGraphStreams_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMGraphStreams_FindUpstreamInterface(This,pPin,riid,ppvInterface,dwFlags) \ (This)->lpVtbl -> FindUpstreamInterface(This,pPin,riid,ppvInterface,dwFlags) #define IAMGraphStreams_SyncUsingStreamOffset(This,bUseStreamOffset) \ (This)->lpVtbl -> SyncUsingStreamOffset(This,bUseStreamOffset) #define IAMGraphStreams_SetMaxGraphLatency(This,rtMaxGraphLatency) \ (This)->lpVtbl -> SetMaxGraphLatency(This,rtMaxGraphLatency) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMGraphStreams_FindUpstreamInterface_Proxy( IAMGraphStreams * This, /* [in] */ IPin *pPin, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvInterface, /* [in] */ DWORD dwFlags); void __RPC_STUB IAMGraphStreams_FindUpstreamInterface_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMGraphStreams_SyncUsingStreamOffset_Proxy( IAMGraphStreams * This, /* [in] */ BOOL bUseStreamOffset); void __RPC_STUB IAMGraphStreams_SyncUsingStreamOffset_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMGraphStreams_SetMaxGraphLatency_Proxy( IAMGraphStreams * This, /* [in] */ REFERENCE_TIME rtMaxGraphLatency); void __RPC_STUB IAMGraphStreams_SetMaxGraphLatency_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMGraphStreams_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0352 */ /* [local] */ enum AMOVERLAYFX { AMOVERFX_NOFX = 0, AMOVERFX_MIRRORLEFTRIGHT = 0x2, AMOVERFX_MIRRORUPDOWN = 0x4, AMOVERFX_DEINTERLACE = 0x8 } ; extern RPC_IF_HANDLE __MIDL_itf_strmif_0352_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0352_v0_0_s_ifspec; #ifndef __IAMOverlayFX_INTERFACE_DEFINED__ #define __IAMOverlayFX_INTERFACE_DEFINED__ /* interface IAMOverlayFX */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IAMOverlayFX; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("62fae250-7e65-4460-bfc9-6398b322073c") IAMOverlayFX : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE QueryOverlayFXCaps( /* [out] */ DWORD *lpdwOverlayFXCaps) = 0; virtual HRESULT STDMETHODCALLTYPE SetOverlayFX( /* [in] */ DWORD dwOverlayFX) = 0; virtual HRESULT STDMETHODCALLTYPE GetOverlayFX( /* [out] */ DWORD *lpdwOverlayFX) = 0; }; #else /* C style interface */ typedef struct IAMOverlayFXVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMOverlayFX * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMOverlayFX * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMOverlayFX * This); HRESULT ( STDMETHODCALLTYPE *QueryOverlayFXCaps )( IAMOverlayFX * This, /* [out] */ DWORD *lpdwOverlayFXCaps); HRESULT ( STDMETHODCALLTYPE *SetOverlayFX )( IAMOverlayFX * This, /* [in] */ DWORD dwOverlayFX); HRESULT ( STDMETHODCALLTYPE *GetOverlayFX )( IAMOverlayFX * This, /* [out] */ DWORD *lpdwOverlayFX); END_INTERFACE } IAMOverlayFXVtbl; interface IAMOverlayFX { CONST_VTBL struct IAMOverlayFXVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMOverlayFX_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMOverlayFX_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMOverlayFX_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMOverlayFX_QueryOverlayFXCaps(This,lpdwOverlayFXCaps) \ (This)->lpVtbl -> QueryOverlayFXCaps(This,lpdwOverlayFXCaps) #define IAMOverlayFX_SetOverlayFX(This,dwOverlayFX) \ (This)->lpVtbl -> SetOverlayFX(This,dwOverlayFX) #define IAMOverlayFX_GetOverlayFX(This,lpdwOverlayFX) \ (This)->lpVtbl -> GetOverlayFX(This,lpdwOverlayFX) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMOverlayFX_QueryOverlayFXCaps_Proxy( IAMOverlayFX * This, /* [out] */ DWORD *lpdwOverlayFXCaps); void __RPC_STUB IAMOverlayFX_QueryOverlayFXCaps_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMOverlayFX_SetOverlayFX_Proxy( IAMOverlayFX * This, /* [in] */ DWORD dwOverlayFX); void __RPC_STUB IAMOverlayFX_SetOverlayFX_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMOverlayFX_GetOverlayFX_Proxy( IAMOverlayFX * This, /* [out] */ DWORD *lpdwOverlayFX); void __RPC_STUB IAMOverlayFX_GetOverlayFX_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMOverlayFX_INTERFACE_DEFINED__ */ #ifndef __IAMOpenProgress_INTERFACE_DEFINED__ #define __IAMOpenProgress_INTERFACE_DEFINED__ /* interface IAMOpenProgress */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IAMOpenProgress; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("8E1C39A1-DE53-11cf-AA63-0080C744528D") IAMOpenProgress : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE QueryProgress( /* [out] */ LONGLONG *pllTotal, /* [out] */ LONGLONG *pllCurrent) = 0; virtual HRESULT STDMETHODCALLTYPE AbortOperation( void) = 0; }; #else /* C style interface */ typedef struct IAMOpenProgressVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMOpenProgress * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMOpenProgress * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMOpenProgress * This); HRESULT ( STDMETHODCALLTYPE *QueryProgress )( IAMOpenProgress * This, /* [out] */ LONGLONG *pllTotal, /* [out] */ LONGLONG *pllCurrent); HRESULT ( STDMETHODCALLTYPE *AbortOperation )( IAMOpenProgress * This); END_INTERFACE } IAMOpenProgressVtbl; interface IAMOpenProgress { CONST_VTBL struct IAMOpenProgressVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMOpenProgress_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMOpenProgress_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMOpenProgress_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMOpenProgress_QueryProgress(This,pllTotal,pllCurrent) \ (This)->lpVtbl -> QueryProgress(This,pllTotal,pllCurrent) #define IAMOpenProgress_AbortOperation(This) \ (This)->lpVtbl -> AbortOperation(This) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMOpenProgress_QueryProgress_Proxy( IAMOpenProgress * This, /* [out] */ LONGLONG *pllTotal, /* [out] */ LONGLONG *pllCurrent); void __RPC_STUB IAMOpenProgress_QueryProgress_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMOpenProgress_AbortOperation_Proxy( IAMOpenProgress * This); void __RPC_STUB IAMOpenProgress_AbortOperation_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMOpenProgress_INTERFACE_DEFINED__ */ #ifndef __IMpeg2Demultiplexer_INTERFACE_DEFINED__ #define __IMpeg2Demultiplexer_INTERFACE_DEFINED__ /* interface IMpeg2Demultiplexer */ /* [unique][uuid][local][object] */ EXTERN_C const IID IID_IMpeg2Demultiplexer; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("436eee9c-264f-4242-90e1-4e330c107512") IMpeg2Demultiplexer : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE CreateOutputPin( /* [in] */ AM_MEDIA_TYPE *pMediaType, /* [in] */ LPWSTR pszPinName, /* [out] */ IPin **ppIPin) = 0; virtual HRESULT STDMETHODCALLTYPE SetOutputPinMediaType( /* [in] */ LPWSTR pszPinName, /* [in] */ AM_MEDIA_TYPE *pMediaType) = 0; virtual HRESULT STDMETHODCALLTYPE DeleteOutputPin( /* [in] */ LPWSTR pszPinName) = 0; }; #else /* C style interface */ typedef struct IMpeg2DemultiplexerVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IMpeg2Demultiplexer * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IMpeg2Demultiplexer * This); ULONG ( STDMETHODCALLTYPE *Release )( IMpeg2Demultiplexer * This); HRESULT ( STDMETHODCALLTYPE *CreateOutputPin )( IMpeg2Demultiplexer * This, /* [in] */ AM_MEDIA_TYPE *pMediaType, /* [in] */ LPWSTR pszPinName, /* [out] */ IPin **ppIPin); HRESULT ( STDMETHODCALLTYPE *SetOutputPinMediaType )( IMpeg2Demultiplexer * This, /* [in] */ LPWSTR pszPinName, /* [in] */ AM_MEDIA_TYPE *pMediaType); HRESULT ( STDMETHODCALLTYPE *DeleteOutputPin )( IMpeg2Demultiplexer * This, /* [in] */ LPWSTR pszPinName); END_INTERFACE } IMpeg2DemultiplexerVtbl; interface IMpeg2Demultiplexer { CONST_VTBL struct IMpeg2DemultiplexerVtbl *lpVtbl; }; #ifdef COBJMACROS #define IMpeg2Demultiplexer_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IMpeg2Demultiplexer_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IMpeg2Demultiplexer_Release(This) \ (This)->lpVtbl -> Release(This) #define IMpeg2Demultiplexer_CreateOutputPin(This,pMediaType,pszPinName,ppIPin) \ (This)->lpVtbl -> CreateOutputPin(This,pMediaType,pszPinName,ppIPin) #define IMpeg2Demultiplexer_SetOutputPinMediaType(This,pszPinName,pMediaType) \ (This)->lpVtbl -> SetOutputPinMediaType(This,pszPinName,pMediaType) #define IMpeg2Demultiplexer_DeleteOutputPin(This,pszPinName) \ (This)->lpVtbl -> DeleteOutputPin(This,pszPinName) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IMpeg2Demultiplexer_CreateOutputPin_Proxy( IMpeg2Demultiplexer * This, /* [in] */ AM_MEDIA_TYPE *pMediaType, /* [in] */ LPWSTR pszPinName, /* [out] */ IPin **ppIPin); void __RPC_STUB IMpeg2Demultiplexer_CreateOutputPin_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMpeg2Demultiplexer_SetOutputPinMediaType_Proxy( IMpeg2Demultiplexer * This, /* [in] */ LPWSTR pszPinName, /* [in] */ AM_MEDIA_TYPE *pMediaType); void __RPC_STUB IMpeg2Demultiplexer_SetOutputPinMediaType_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMpeg2Demultiplexer_DeleteOutputPin_Proxy( IMpeg2Demultiplexer * This, /* [in] */ LPWSTR pszPinName); void __RPC_STUB IMpeg2Demultiplexer_DeleteOutputPin_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IMpeg2Demultiplexer_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0355 */ /* [local] */ #define MPEG2_PROGRAM_STREAM_MAP 0x00000000 #define MPEG2_PROGRAM_ELEMENTARY_STREAM 0x00000001 #define MPEG2_PROGRAM_DIRECTORY_PES_PACKET 0x00000002 #define MPEG2_PROGRAM_PACK_HEADER 0x00000003 #define MPEG2_PROGRAM_PES_STREAM 0x00000004 #define MPEG2_PROGRAM_SYSTEM_HEADER 0x00000005 #define SUBSTREAM_FILTER_VAL_NONE 0x10000000 typedef /* [public][public] */ struct __MIDL___MIDL_itf_strmif_0355_0001 { ULONG stream_id; DWORD dwMediaSampleContent; ULONG ulSubstreamFilterValue; int iDataOffset; } STREAM_ID_MAP; extern RPC_IF_HANDLE __MIDL_itf_strmif_0355_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0355_v0_0_s_ifspec; #ifndef __IEnumStreamIdMap_INTERFACE_DEFINED__ #define __IEnumStreamIdMap_INTERFACE_DEFINED__ /* interface IEnumStreamIdMap */ /* [unique][uuid][local][object] */ EXTERN_C const IID IID_IEnumStreamIdMap; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("945C1566-6202-46fc-96C7-D87F289C6534") IEnumStreamIdMap : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE Next( /* [in] */ ULONG cRequest, /* [size_is][out][in] */ STREAM_ID_MAP *pStreamIdMap, /* [out] */ ULONG *pcReceived) = 0; virtual HRESULT STDMETHODCALLTYPE Skip( /* [in] */ ULONG cRecords) = 0; virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0; virtual HRESULT STDMETHODCALLTYPE Clone( /* [out] */ IEnumStreamIdMap **ppIEnumStreamIdMap) = 0; }; #else /* C style interface */ typedef struct IEnumStreamIdMapVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IEnumStreamIdMap * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IEnumStreamIdMap * This); ULONG ( STDMETHODCALLTYPE *Release )( IEnumStreamIdMap * This); HRESULT ( STDMETHODCALLTYPE *Next )( IEnumStreamIdMap * This, /* [in] */ ULONG cRequest, /* [size_is][out][in] */ STREAM_ID_MAP *pStreamIdMap, /* [out] */ ULONG *pcReceived); HRESULT ( STDMETHODCALLTYPE *Skip )( IEnumStreamIdMap * This, /* [in] */ ULONG cRecords); HRESULT ( STDMETHODCALLTYPE *Reset )( IEnumStreamIdMap * This); HRESULT ( STDMETHODCALLTYPE *Clone )( IEnumStreamIdMap * This, /* [out] */ IEnumStreamIdMap **ppIEnumStreamIdMap); END_INTERFACE } IEnumStreamIdMapVtbl; interface IEnumStreamIdMap { CONST_VTBL struct IEnumStreamIdMapVtbl *lpVtbl; }; #ifdef COBJMACROS #define IEnumStreamIdMap_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IEnumStreamIdMap_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IEnumStreamIdMap_Release(This) \ (This)->lpVtbl -> Release(This) #define IEnumStreamIdMap_Next(This,cRequest,pStreamIdMap,pcReceived) \ (This)->lpVtbl -> Next(This,cRequest,pStreamIdMap,pcReceived) #define IEnumStreamIdMap_Skip(This,cRecords) \ (This)->lpVtbl -> Skip(This,cRecords) #define IEnumStreamIdMap_Reset(This) \ (This)->lpVtbl -> Reset(This) #define IEnumStreamIdMap_Clone(This,ppIEnumStreamIdMap) \ (This)->lpVtbl -> Clone(This,ppIEnumStreamIdMap) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IEnumStreamIdMap_Next_Proxy( IEnumStreamIdMap * This, /* [in] */ ULONG cRequest, /* [size_is][out][in] */ STREAM_ID_MAP *pStreamIdMap, /* [out] */ ULONG *pcReceived); void __RPC_STUB IEnumStreamIdMap_Next_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IEnumStreamIdMap_Skip_Proxy( IEnumStreamIdMap * This, /* [in] */ ULONG cRecords); void __RPC_STUB IEnumStreamIdMap_Skip_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IEnumStreamIdMap_Reset_Proxy( IEnumStreamIdMap * This); void __RPC_STUB IEnumStreamIdMap_Reset_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IEnumStreamIdMap_Clone_Proxy( IEnumStreamIdMap * This, /* [out] */ IEnumStreamIdMap **ppIEnumStreamIdMap); void __RPC_STUB IEnumStreamIdMap_Clone_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IEnumStreamIdMap_INTERFACE_DEFINED__ */ #ifndef __IMPEG2StreamIdMap_INTERFACE_DEFINED__ #define __IMPEG2StreamIdMap_INTERFACE_DEFINED__ /* interface IMPEG2StreamIdMap */ /* [unique][uuid][local][object] */ EXTERN_C const IID IID_IMPEG2StreamIdMap; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("D0E04C47-25B8-4369-925A-362A01D95444") IMPEG2StreamIdMap : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE MapStreamId( /* [in] */ ULONG ulStreamId, /* [in] */ DWORD MediaSampleContent, /* [in] */ ULONG ulSubstreamFilterValue, /* [in] */ int iDataOffset) = 0; virtual HRESULT STDMETHODCALLTYPE UnmapStreamId( /* [in] */ ULONG culStreamId, /* [in] */ ULONG *pulStreamId) = 0; virtual HRESULT STDMETHODCALLTYPE EnumStreamIdMap( /* [out] */ IEnumStreamIdMap **ppIEnumStreamIdMap) = 0; }; #else /* C style interface */ typedef struct IMPEG2StreamIdMapVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IMPEG2StreamIdMap * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IMPEG2StreamIdMap * This); ULONG ( STDMETHODCALLTYPE *Release )( IMPEG2StreamIdMap * This); HRESULT ( STDMETHODCALLTYPE *MapStreamId )( IMPEG2StreamIdMap * This, /* [in] */ ULONG ulStreamId, /* [in] */ DWORD MediaSampleContent, /* [in] */ ULONG ulSubstreamFilterValue, /* [in] */ int iDataOffset); HRESULT ( STDMETHODCALLTYPE *UnmapStreamId )( IMPEG2StreamIdMap * This, /* [in] */ ULONG culStreamId, /* [in] */ ULONG *pulStreamId); HRESULT ( STDMETHODCALLTYPE *EnumStreamIdMap )( IMPEG2StreamIdMap * This, /* [out] */ IEnumStreamIdMap **ppIEnumStreamIdMap); END_INTERFACE } IMPEG2StreamIdMapVtbl; interface IMPEG2StreamIdMap { CONST_VTBL struct IMPEG2StreamIdMapVtbl *lpVtbl; }; #ifdef COBJMACROS #define IMPEG2StreamIdMap_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IMPEG2StreamIdMap_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IMPEG2StreamIdMap_Release(This) \ (This)->lpVtbl -> Release(This) #define IMPEG2StreamIdMap_MapStreamId(This,ulStreamId,MediaSampleContent,ulSubstreamFilterValue,iDataOffset) \ (This)->lpVtbl -> MapStreamId(This,ulStreamId,MediaSampleContent,ulSubstreamFilterValue,iDataOffset) #define IMPEG2StreamIdMap_UnmapStreamId(This,culStreamId,pulStreamId) \ (This)->lpVtbl -> UnmapStreamId(This,culStreamId,pulStreamId) #define IMPEG2StreamIdMap_EnumStreamIdMap(This,ppIEnumStreamIdMap) \ (This)->lpVtbl -> EnumStreamIdMap(This,ppIEnumStreamIdMap) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IMPEG2StreamIdMap_MapStreamId_Proxy( IMPEG2StreamIdMap * This, /* [in] */ ULONG ulStreamId, /* [in] */ DWORD MediaSampleContent, /* [in] */ ULONG ulSubstreamFilterValue, /* [in] */ int iDataOffset); void __RPC_STUB IMPEG2StreamIdMap_MapStreamId_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMPEG2StreamIdMap_UnmapStreamId_Proxy( IMPEG2StreamIdMap * This, /* [in] */ ULONG culStreamId, /* [in] */ ULONG *pulStreamId); void __RPC_STUB IMPEG2StreamIdMap_UnmapStreamId_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMPEG2StreamIdMap_EnumStreamIdMap_Proxy( IMPEG2StreamIdMap * This, /* [out] */ IEnumStreamIdMap **ppIEnumStreamIdMap); void __RPC_STUB IMPEG2StreamIdMap_EnumStreamIdMap_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IMPEG2StreamIdMap_INTERFACE_DEFINED__ */ #ifndef __IRegisterServiceProvider_INTERFACE_DEFINED__ #define __IRegisterServiceProvider_INTERFACE_DEFINED__ /* interface IRegisterServiceProvider */ /* [unique][uuid][local][object] */ EXTERN_C const IID IID_IRegisterServiceProvider; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("7B3A2F01-0751-48DD-B556-004785171C54") IRegisterServiceProvider : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE RegisterService( /* [in] */ REFGUID guidService, /* [in] */ IUnknown *pUnkObject) = 0; }; #else /* C style interface */ typedef struct IRegisterServiceProviderVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IRegisterServiceProvider * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IRegisterServiceProvider * This); ULONG ( STDMETHODCALLTYPE *Release )( IRegisterServiceProvider * This); HRESULT ( STDMETHODCALLTYPE *RegisterService )( IRegisterServiceProvider * This, /* [in] */ REFGUID guidService, /* [in] */ IUnknown *pUnkObject); END_INTERFACE } IRegisterServiceProviderVtbl; interface IRegisterServiceProvider { CONST_VTBL struct IRegisterServiceProviderVtbl *lpVtbl; }; #ifdef COBJMACROS #define IRegisterServiceProvider_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IRegisterServiceProvider_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IRegisterServiceProvider_Release(This) \ (This)->lpVtbl -> Release(This) #define IRegisterServiceProvider_RegisterService(This,guidService,pUnkObject) \ (This)->lpVtbl -> RegisterService(This,guidService,pUnkObject) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IRegisterServiceProvider_RegisterService_Proxy( IRegisterServiceProvider * This, /* [in] */ REFGUID guidService, /* [in] */ IUnknown *pUnkObject); void __RPC_STUB IRegisterServiceProvider_RegisterService_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IRegisterServiceProvider_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0358 */ /* [local] */ #define AM_GETDECODERCAP_QUERY_VMR_SUPPORT 0x00000001 #define VMR_NOTSUPPORTED 0x00000000 #define VMR_SUPPORTED 0x00000001 #define AM_QUERY_DECODER_VMR_SUPPORT 0x00000001 #define AM_QUERY_DECODER_DXVA_1_SUPPORT 0x00000002 #define AM_QUERY_DECODER_DVD_SUPPORT 0x00000003 #define AM_QUERY_DECODER_ATSC_SD_SUPPORT 0x00000004 #define AM_QUERY_DECODER_ATSC_HD_SUPPORT 0x00000005 #define DECODER_CAP_NOTSUPPORTED 0x00000000 #define DECODER_CAP_SUPPORTED 0x00000001 extern RPC_IF_HANDLE __MIDL_itf_strmif_0358_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0358_v0_0_s_ifspec; #ifndef __IAMDecoderCaps_INTERFACE_DEFINED__ #define __IAMDecoderCaps_INTERFACE_DEFINED__ /* interface IAMDecoderCaps */ /* [unique][uuid][local][object] */ EXTERN_C const IID IID_IAMDecoderCaps; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("c0dff467-d499-4986-972b-e1d9090fa941") IAMDecoderCaps : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE GetDecoderCaps( /* [in] */ DWORD dwCapIndex, /* [out] */ DWORD *lpdwCap) = 0; }; #else /* C style interface */ typedef struct IAMDecoderCapsVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMDecoderCaps * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMDecoderCaps * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMDecoderCaps * This); HRESULT ( STDMETHODCALLTYPE *GetDecoderCaps )( IAMDecoderCaps * This, /* [in] */ DWORD dwCapIndex, /* [out] */ DWORD *lpdwCap); END_INTERFACE } IAMDecoderCapsVtbl; interface IAMDecoderCaps { CONST_VTBL struct IAMDecoderCapsVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMDecoderCaps_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMDecoderCaps_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMDecoderCaps_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMDecoderCaps_GetDecoderCaps(This,dwCapIndex,lpdwCap) \ (This)->lpVtbl -> GetDecoderCaps(This,dwCapIndex,lpdwCap) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMDecoderCaps_GetDecoderCaps_Proxy( IAMDecoderCaps * This, /* [in] */ DWORD dwCapIndex, /* [out] */ DWORD *lpdwCap); void __RPC_STUB IAMDecoderCaps_GetDecoderCaps_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMDecoderCaps_INTERFACE_DEFINED__ */ #ifndef __IAMClockSlave_INTERFACE_DEFINED__ #define __IAMClockSlave_INTERFACE_DEFINED__ /* interface IAMClockSlave */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IAMClockSlave; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("9FD52741-176D-4b36-8F51-CA8F933223BE") IAMClockSlave : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE SetErrorTolerance( /* [in] */ DWORD dwTolerance) = 0; virtual HRESULT STDMETHODCALLTYPE GetErrorTolerance( /* [out] */ DWORD *pdwTolerance) = 0; }; #else /* C style interface */ typedef struct IAMClockSlaveVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMClockSlave * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMClockSlave * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMClockSlave * This); HRESULT ( STDMETHODCALLTYPE *SetErrorTolerance )( IAMClockSlave * This, /* [in] */ DWORD dwTolerance); HRESULT ( STDMETHODCALLTYPE *GetErrorTolerance )( IAMClockSlave * This, /* [out] */ DWORD *pdwTolerance); END_INTERFACE } IAMClockSlaveVtbl; interface IAMClockSlave { CONST_VTBL struct IAMClockSlaveVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMClockSlave_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMClockSlave_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMClockSlave_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMClockSlave_SetErrorTolerance(This,dwTolerance) \ (This)->lpVtbl -> SetErrorTolerance(This,dwTolerance) #define IAMClockSlave_GetErrorTolerance(This,pdwTolerance) \ (This)->lpVtbl -> GetErrorTolerance(This,pdwTolerance) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMClockSlave_SetErrorTolerance_Proxy( IAMClockSlave * This, /* [in] */ DWORD dwTolerance); void __RPC_STUB IAMClockSlave_SetErrorTolerance_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMClockSlave_GetErrorTolerance_Proxy( IAMClockSlave * This, /* [out] */ DWORD *pdwTolerance); void __RPC_STUB IAMClockSlave_GetErrorTolerance_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMClockSlave_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0360 */ /* [local] */ #include typedef enum tagDVD_DOMAIN { DVD_DOMAIN_FirstPlay = 1, DVD_DOMAIN_VideoManagerMenu = DVD_DOMAIN_FirstPlay + 1, DVD_DOMAIN_VideoTitleSetMenu = DVD_DOMAIN_VideoManagerMenu + 1, DVD_DOMAIN_Title = DVD_DOMAIN_VideoTitleSetMenu + 1, DVD_DOMAIN_Stop = DVD_DOMAIN_Title + 1 } DVD_DOMAIN; typedef enum tagDVD_MENU_ID { DVD_MENU_Title = 2, DVD_MENU_Root = 3, DVD_MENU_Subpicture = 4, DVD_MENU_Audio = 5, DVD_MENU_Angle = 6, DVD_MENU_Chapter = 7 } DVD_MENU_ID; typedef enum tagDVD_DISC_SIDE { DVD_SIDE_A = 1, DVD_SIDE_B = 2 } DVD_DISC_SIDE; typedef enum tagDVD_PREFERRED_DISPLAY_MODE { DISPLAY_CONTENT_DEFAULT = 0, DISPLAY_16x9 = 1, DISPLAY_4x3_PANSCAN_PREFERRED = 2, DISPLAY_4x3_LETTERBOX_PREFERRED = 3 } DVD_PREFERRED_DISPLAY_MODE; typedef WORD DVD_REGISTER; typedef DVD_REGISTER GPRMARRAY[ 16 ]; typedef DVD_REGISTER SPRMARRAY[ 24 ]; typedef struct tagDVD_ATR { ULONG ulCAT; BYTE pbATRI[ 768 ]; } DVD_ATR; typedef BYTE DVD_VideoATR[ 2 ]; typedef BYTE DVD_AudioATR[ 8 ]; typedef BYTE DVD_SubpictureATR[ 6 ]; typedef enum tagDVD_FRAMERATE { DVD_FPS_25 = 1, DVD_FPS_30NonDrop = 3 } DVD_FRAMERATE; typedef struct tagDVD_TIMECODE { ULONG Hours1 :4; // Hours ULONG Hours10 :4; // Tens of Hours ULONG Minutes1 :4; // Minutes ULONG Minutes10:4; // Tens of Minutes ULONG Seconds1 :4; // Seconds ULONG Seconds10:4; // Tens of Seconds ULONG Frames1 :4; // Frames ULONG Frames10 :2; // Tens of Frames ULONG FrameRateCode: 2; // use DVD_FRAMERATE to indicate frames/sec and drop/non-drop } DVD_TIMECODE; typedef enum tagDVD_TIMECODE_FLAGS { DVD_TC_FLAG_25fps = 0x1, DVD_TC_FLAG_30fps = 0x2, DVD_TC_FLAG_DropFrame = 0x4, DVD_TC_FLAG_Interpolated = 0x8 } DVD_TIMECODE_FLAGS; typedef struct tagDVD_HMSF_TIMECODE { BYTE bHours; BYTE bMinutes; BYTE bSeconds; BYTE bFrames; } DVD_HMSF_TIMECODE; typedef struct tagDVD_PLAYBACK_LOCATION2 { ULONG TitleNum; ULONG ChapterNum; DVD_HMSF_TIMECODE TimeCode; ULONG TimeCodeFlags; } DVD_PLAYBACK_LOCATION2; typedef struct tagDVD_PLAYBACK_LOCATION { ULONG TitleNum; ULONG ChapterNum; ULONG TimeCode; } DVD_PLAYBACK_LOCATION; typedef DWORD VALID_UOP_SOMTHING_OR_OTHER; typedef /* [public] */ enum __MIDL___MIDL_itf_strmif_0360_0001 { UOP_FLAG_Play_Title_Or_AtTime = 0x1, UOP_FLAG_Play_Chapter = 0x2, UOP_FLAG_Play_Title = 0x4, UOP_FLAG_Stop = 0x8, UOP_FLAG_ReturnFromSubMenu = 0x10, UOP_FLAG_Play_Chapter_Or_AtTime = 0x20, UOP_FLAG_PlayPrev_Or_Replay_Chapter = 0x40, UOP_FLAG_PlayNext_Chapter = 0x80, UOP_FLAG_Play_Forwards = 0x100, UOP_FLAG_Play_Backwards = 0x200, UOP_FLAG_ShowMenu_Title = 0x400, UOP_FLAG_ShowMenu_Root = 0x800, UOP_FLAG_ShowMenu_SubPic = 0x1000, UOP_FLAG_ShowMenu_Audio = 0x2000, UOP_FLAG_ShowMenu_Angle = 0x4000, UOP_FLAG_ShowMenu_Chapter = 0x8000, UOP_FLAG_Resume = 0x10000, UOP_FLAG_Select_Or_Activate_Button = 0x20000, UOP_FLAG_Still_Off = 0x40000, UOP_FLAG_Pause_On = 0x80000, UOP_FLAG_Select_Audio_Stream = 0x100000, UOP_FLAG_Select_SubPic_Stream = 0x200000, UOP_FLAG_Select_Angle = 0x400000, UOP_FLAG_Select_Karaoke_Audio_Presentation_Mode = 0x800000, UOP_FLAG_Select_Video_Mode_Preference = 0x1000000 } VALID_UOP_FLAG; typedef /* [public] */ enum __MIDL___MIDL_itf_strmif_0360_0002 { DVD_CMD_FLAG_None = 0, DVD_CMD_FLAG_Flush = 0x1, DVD_CMD_FLAG_SendEvents = 0x2, DVD_CMD_FLAG_Block = 0x4, DVD_CMD_FLAG_StartWhenRendered = 0x8, DVD_CMD_FLAG_EndAfterRendered = 0x10 } DVD_CMD_FLAGS; typedef /* [public][public] */ enum __MIDL___MIDL_itf_strmif_0360_0003 { DVD_ResetOnStop = 1, DVD_NotifyParentalLevelChange = 2, DVD_HMSF_TimeCodeEvents = 3 } DVD_OPTION_FLAG; typedef /* [public][public] */ enum __MIDL___MIDL_itf_strmif_0360_0004 { DVD_Relative_Upper = 1, DVD_Relative_Lower = 2, DVD_Relative_Left = 3, DVD_Relative_Right = 4 } DVD_RELATIVE_BUTTON; typedef enum tagDVD_PARENTAL_LEVEL { DVD_PARENTAL_LEVEL_8 = 0x8000, DVD_PARENTAL_LEVEL_7 = 0x4000, DVD_PARENTAL_LEVEL_6 = 0x2000, DVD_PARENTAL_LEVEL_5 = 0x1000, DVD_PARENTAL_LEVEL_4 = 0x800, DVD_PARENTAL_LEVEL_3 = 0x400, DVD_PARENTAL_LEVEL_2 = 0x200, DVD_PARENTAL_LEVEL_1 = 0x100 } DVD_PARENTAL_LEVEL; typedef enum tagDVD_AUDIO_LANG_EXT { DVD_AUD_EXT_NotSpecified = 0, DVD_AUD_EXT_Captions = 1, DVD_AUD_EXT_VisuallyImpaired = 2, DVD_AUD_EXT_DirectorComments1 = 3, DVD_AUD_EXT_DirectorComments2 = 4 } DVD_AUDIO_LANG_EXT; typedef enum tagDVD_SUBPICTURE_LANG_EXT { DVD_SP_EXT_NotSpecified = 0, DVD_SP_EXT_Caption_Normal = 1, DVD_SP_EXT_Caption_Big = 2, DVD_SP_EXT_Caption_Children = 3, DVD_SP_EXT_CC_Normal = 5, DVD_SP_EXT_CC_Big = 6, DVD_SP_EXT_CC_Children = 7, DVD_SP_EXT_Forced = 9, DVD_SP_EXT_DirectorComments_Normal = 13, DVD_SP_EXT_DirectorComments_Big = 14, DVD_SP_EXT_DirectorComments_Children = 15 } DVD_SUBPICTURE_LANG_EXT; typedef enum tagDVD_AUDIO_APPMODE { DVD_AudioMode_None = 0, DVD_AudioMode_Karaoke = 1, DVD_AudioMode_Surround = 2, DVD_AudioMode_Other = 3 } DVD_AUDIO_APPMODE; typedef enum tagDVD_AUDIO_FORMAT { DVD_AudioFormat_AC3 = 0, DVD_AudioFormat_MPEG1 = 1, DVD_AudioFormat_MPEG1_DRC = 2, DVD_AudioFormat_MPEG2 = 3, DVD_AudioFormat_MPEG2_DRC = 4, DVD_AudioFormat_LPCM = 5, DVD_AudioFormat_DTS = 6, DVD_AudioFormat_SDDS = 7, DVD_AudioFormat_Other = 8 } DVD_AUDIO_FORMAT; typedef enum tagDVD_KARAOKE_DOWNMIX { DVD_Mix_0to0 = 0x1, DVD_Mix_1to0 = 0x2, DVD_Mix_2to0 = 0x4, DVD_Mix_3to0 = 0x8, DVD_Mix_4to0 = 0x10, DVD_Mix_Lto0 = 0x20, DVD_Mix_Rto0 = 0x40, DVD_Mix_0to1 = 0x100, DVD_Mix_1to1 = 0x200, DVD_Mix_2to1 = 0x400, DVD_Mix_3to1 = 0x800, DVD_Mix_4to1 = 0x1000, DVD_Mix_Lto1 = 0x2000, DVD_Mix_Rto1 = 0x4000 } DVD_KARAOKE_DOWNMIX; typedef struct tagDVD_AudioAttributes { DVD_AUDIO_APPMODE AppMode; BYTE AppModeData; DVD_AUDIO_FORMAT AudioFormat; LCID Language; DVD_AUDIO_LANG_EXT LanguageExtension; BOOL fHasMultichannelInfo; DWORD dwFrequency; BYTE bQuantization; BYTE bNumberOfChannels; DWORD dwReserved[ 2 ]; } DVD_AudioAttributes; typedef struct tagDVD_MUA_MixingInfo { BOOL fMixTo0; BOOL fMixTo1; BOOL fMix0InPhase; BOOL fMix1InPhase; DWORD dwSpeakerPosition; } DVD_MUA_MixingInfo; typedef struct tagDVD_MUA_Coeff { double log2_alpha; double log2_beta; } DVD_MUA_Coeff; typedef struct tagDVD_MultichannelAudioAttributes { DVD_MUA_MixingInfo Info[ 8 ]; DVD_MUA_Coeff Coeff[ 8 ]; } DVD_MultichannelAudioAttributes; typedef enum tagDVD_KARAOKE_CONTENTS { DVD_Karaoke_GuideVocal1 = 0x1, DVD_Karaoke_GuideVocal2 = 0x2, DVD_Karaoke_GuideMelody1 = 0x4, DVD_Karaoke_GuideMelody2 = 0x8, DVD_Karaoke_GuideMelodyA = 0x10, DVD_Karaoke_GuideMelodyB = 0x20, DVD_Karaoke_SoundEffectA = 0x40, DVD_Karaoke_SoundEffectB = 0x80 } DVD_KARAOKE_CONTENTS; typedef enum tagDVD_KARAOKE_ASSIGNMENT { DVD_Assignment_reserved0 = 0, DVD_Assignment_reserved1 = 1, DVD_Assignment_LR = 2, DVD_Assignment_LRM = 3, DVD_Assignment_LR1 = 4, DVD_Assignment_LRM1 = 5, DVD_Assignment_LR12 = 6, DVD_Assignment_LRM12 = 7 } DVD_KARAOKE_ASSIGNMENT; typedef struct tagDVD_KaraokeAttributes { BYTE bVersion; BOOL fMasterOfCeremoniesInGuideVocal1; BOOL fDuet; DVD_KARAOKE_ASSIGNMENT ChannelAssignment; WORD wChannelContents[ 8 ]; } DVD_KaraokeAttributes; typedef enum tagDVD_VIDEO_COMPRESSION { DVD_VideoCompression_Other = 0, DVD_VideoCompression_MPEG1 = 1, DVD_VideoCompression_MPEG2 = 2 } DVD_VIDEO_COMPRESSION; typedef struct tagDVD_VideoAttributes { BOOL fPanscanPermitted; BOOL fLetterboxPermitted; ULONG ulAspectX; ULONG ulAspectY; ULONG ulFrameRate; ULONG ulFrameHeight; DVD_VIDEO_COMPRESSION Compression; BOOL fLine21Field1InGOP; BOOL fLine21Field2InGOP; ULONG ulSourceResolutionX; ULONG ulSourceResolutionY; BOOL fIsSourceLetterboxed; BOOL fIsFilmMode; } DVD_VideoAttributes; typedef enum tagDVD_SUBPICTURE_TYPE { DVD_SPType_NotSpecified = 0, DVD_SPType_Language = 1, DVD_SPType_Other = 2 } DVD_SUBPICTURE_TYPE; typedef enum tagDVD_SUBPICTURE_CODING { DVD_SPCoding_RunLength = 0, DVD_SPCoding_Extended = 1, DVD_SPCoding_Other = 2 } DVD_SUBPICTURE_CODING; typedef struct tagDVD_SubpictureAttributes { DVD_SUBPICTURE_TYPE Type; DVD_SUBPICTURE_CODING CodingMode; LCID Language; DVD_SUBPICTURE_LANG_EXT LanguageExtension; } DVD_SubpictureAttributes; typedef enum tagDVD_TITLE_APPMODE { DVD_AppMode_Not_Specified = 0, DVD_AppMode_Karaoke = 1, DVD_AppMode_Other = 3 } DVD_TITLE_APPMODE; typedef struct tagDVD_TitleMainAttributes { DVD_TITLE_APPMODE AppMode; DVD_VideoAttributes VideoAttributes; ULONG ulNumberOfAudioStreams; DVD_AudioAttributes AudioAttributes[ 8 ]; DVD_MultichannelAudioAttributes MultichannelAudioAttributes[ 8 ]; ULONG ulNumberOfSubpictureStreams; DVD_SubpictureAttributes SubpictureAttributes[ 32 ]; } DVD_TitleAttributes; typedef struct tagDVD_MenuAttributes { BOOL fCompatibleRegion[ 8 ]; DVD_VideoAttributes VideoAttributes; BOOL fAudioPresent; DVD_AudioAttributes AudioAttributes; BOOL fSubpicturePresent; DVD_SubpictureAttributes SubpictureAttributes; } DVD_MenuAttributes; extern RPC_IF_HANDLE __MIDL_itf_strmif_0360_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0360_v0_0_s_ifspec; #ifndef __IDvdControl_INTERFACE_DEFINED__ #define __IDvdControl_INTERFACE_DEFINED__ /* interface IDvdControl */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IDvdControl; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("A70EFE61-E2A3-11d0-A9BE-00AA0061BE93") IDvdControl : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE TitlePlay( /* [in] */ ULONG ulTitle) = 0; virtual HRESULT STDMETHODCALLTYPE ChapterPlay( /* [in] */ ULONG ulTitle, /* [in] */ ULONG ulChapter) = 0; virtual HRESULT STDMETHODCALLTYPE TimePlay( /* [in] */ ULONG ulTitle, /* [in] */ ULONG bcdTime) = 0; virtual HRESULT STDMETHODCALLTYPE StopForResume( void) = 0; virtual HRESULT STDMETHODCALLTYPE GoUp( void) = 0; virtual HRESULT STDMETHODCALLTYPE TimeSearch( /* [in] */ ULONG bcdTime) = 0; virtual HRESULT STDMETHODCALLTYPE ChapterSearch( /* [in] */ ULONG ulChapter) = 0; virtual HRESULT STDMETHODCALLTYPE PrevPGSearch( void) = 0; virtual HRESULT STDMETHODCALLTYPE TopPGSearch( void) = 0; virtual HRESULT STDMETHODCALLTYPE NextPGSearch( void) = 0; virtual HRESULT STDMETHODCALLTYPE ForwardScan( /* [in] */ double dwSpeed) = 0; virtual HRESULT STDMETHODCALLTYPE BackwardScan( /* [in] */ double dwSpeed) = 0; virtual HRESULT STDMETHODCALLTYPE MenuCall( /* [in] */ DVD_MENU_ID MenuID) = 0; virtual HRESULT STDMETHODCALLTYPE Resume( void) = 0; virtual HRESULT STDMETHODCALLTYPE UpperButtonSelect( void) = 0; virtual HRESULT STDMETHODCALLTYPE LowerButtonSelect( void) = 0; virtual HRESULT STDMETHODCALLTYPE LeftButtonSelect( void) = 0; virtual HRESULT STDMETHODCALLTYPE RightButtonSelect( void) = 0; virtual HRESULT STDMETHODCALLTYPE ButtonActivate( void) = 0; virtual HRESULT STDMETHODCALLTYPE ButtonSelectAndActivate( /* [in] */ ULONG ulButton) = 0; virtual HRESULT STDMETHODCALLTYPE StillOff( void) = 0; virtual HRESULT STDMETHODCALLTYPE PauseOn( void) = 0; virtual HRESULT STDMETHODCALLTYPE PauseOff( void) = 0; virtual HRESULT STDMETHODCALLTYPE MenuLanguageSelect( /* [in] */ LCID Language) = 0; virtual HRESULT STDMETHODCALLTYPE AudioStreamChange( /* [in] */ ULONG ulAudio) = 0; virtual HRESULT STDMETHODCALLTYPE SubpictureStreamChange( /* [in] */ ULONG ulSubPicture, /* [in] */ BOOL bDisplay) = 0; virtual HRESULT STDMETHODCALLTYPE AngleChange( /* [in] */ ULONG ulAngle) = 0; virtual HRESULT STDMETHODCALLTYPE ParentalLevelSelect( /* [in] */ ULONG ulParentalLevel) = 0; virtual HRESULT STDMETHODCALLTYPE ParentalCountrySelect( /* [in] */ WORD wCountry) = 0; virtual HRESULT STDMETHODCALLTYPE KaraokeAudioPresentationModeChange( /* [in] */ ULONG ulMode) = 0; virtual HRESULT STDMETHODCALLTYPE VideoModePreferrence( /* [in] */ ULONG ulPreferredDisplayMode) = 0; virtual HRESULT STDMETHODCALLTYPE SetRoot( /* [in] */ LPCWSTR pszPath) = 0; virtual HRESULT STDMETHODCALLTYPE MouseActivate( /* [in] */ POINT point) = 0; virtual HRESULT STDMETHODCALLTYPE MouseSelect( /* [in] */ POINT point) = 0; virtual HRESULT STDMETHODCALLTYPE ChapterPlayAutoStop( /* [in] */ ULONG ulTitle, /* [in] */ ULONG ulChapter, /* [in] */ ULONG ulChaptersToPlay) = 0; }; #else /* C style interface */ typedef struct IDvdControlVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IDvdControl * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IDvdControl * This); ULONG ( STDMETHODCALLTYPE *Release )( IDvdControl * This); HRESULT ( STDMETHODCALLTYPE *TitlePlay )( IDvdControl * This, /* [in] */ ULONG ulTitle); HRESULT ( STDMETHODCALLTYPE *ChapterPlay )( IDvdControl * This, /* [in] */ ULONG ulTitle, /* [in] */ ULONG ulChapter); HRESULT ( STDMETHODCALLTYPE *TimePlay )( IDvdControl * This, /* [in] */ ULONG ulTitle, /* [in] */ ULONG bcdTime); HRESULT ( STDMETHODCALLTYPE *StopForResume )( IDvdControl * This); HRESULT ( STDMETHODCALLTYPE *GoUp )( IDvdControl * This); HRESULT ( STDMETHODCALLTYPE *TimeSearch )( IDvdControl * This, /* [in] */ ULONG bcdTime); HRESULT ( STDMETHODCALLTYPE *ChapterSearch )( IDvdControl * This, /* [in] */ ULONG ulChapter); HRESULT ( STDMETHODCALLTYPE *PrevPGSearch )( IDvdControl * This); HRESULT ( STDMETHODCALLTYPE *TopPGSearch )( IDvdControl * This); HRESULT ( STDMETHODCALLTYPE *NextPGSearch )( IDvdControl * This); HRESULT ( STDMETHODCALLTYPE *ForwardScan )( IDvdControl * This, /* [in] */ double dwSpeed); HRESULT ( STDMETHODCALLTYPE *BackwardScan )( IDvdControl * This, /* [in] */ double dwSpeed); HRESULT ( STDMETHODCALLTYPE *MenuCall )( IDvdControl * This, /* [in] */ DVD_MENU_ID MenuID); HRESULT ( STDMETHODCALLTYPE *Resume )( IDvdControl * This); HRESULT ( STDMETHODCALLTYPE *UpperButtonSelect )( IDvdControl * This); HRESULT ( STDMETHODCALLTYPE *LowerButtonSelect )( IDvdControl * This); HRESULT ( STDMETHODCALLTYPE *LeftButtonSelect )( IDvdControl * This); HRESULT ( STDMETHODCALLTYPE *RightButtonSelect )( IDvdControl * This); HRESULT ( STDMETHODCALLTYPE *ButtonActivate )( IDvdControl * This); HRESULT ( STDMETHODCALLTYPE *ButtonSelectAndActivate )( IDvdControl * This, /* [in] */ ULONG ulButton); HRESULT ( STDMETHODCALLTYPE *StillOff )( IDvdControl * This); HRESULT ( STDMETHODCALLTYPE *PauseOn )( IDvdControl * This); HRESULT ( STDMETHODCALLTYPE *PauseOff )( IDvdControl * This); HRESULT ( STDMETHODCALLTYPE *MenuLanguageSelect )( IDvdControl * This, /* [in] */ LCID Language); HRESULT ( STDMETHODCALLTYPE *AudioStreamChange )( IDvdControl * This, /* [in] */ ULONG ulAudio); HRESULT ( STDMETHODCALLTYPE *SubpictureStreamChange )( IDvdControl * This, /* [in] */ ULONG ulSubPicture, /* [in] */ BOOL bDisplay); HRESULT ( STDMETHODCALLTYPE *AngleChange )( IDvdControl * This, /* [in] */ ULONG ulAngle); HRESULT ( STDMETHODCALLTYPE *ParentalLevelSelect )( IDvdControl * This, /* [in] */ ULONG ulParentalLevel); HRESULT ( STDMETHODCALLTYPE *ParentalCountrySelect )( IDvdControl * This, /* [in] */ WORD wCountry); HRESULT ( STDMETHODCALLTYPE *KaraokeAudioPresentationModeChange )( IDvdControl * This, /* [in] */ ULONG ulMode); HRESULT ( STDMETHODCALLTYPE *VideoModePreferrence )( IDvdControl * This, /* [in] */ ULONG ulPreferredDisplayMode); HRESULT ( STDMETHODCALLTYPE *SetRoot )( IDvdControl * This, /* [in] */ LPCWSTR pszPath); HRESULT ( STDMETHODCALLTYPE *MouseActivate )( IDvdControl * This, /* [in] */ POINT point); HRESULT ( STDMETHODCALLTYPE *MouseSelect )( IDvdControl * This, /* [in] */ POINT point); HRESULT ( STDMETHODCALLTYPE *ChapterPlayAutoStop )( IDvdControl * This, /* [in] */ ULONG ulTitle, /* [in] */ ULONG ulChapter, /* [in] */ ULONG ulChaptersToPlay); END_INTERFACE } IDvdControlVtbl; interface IDvdControl { CONST_VTBL struct IDvdControlVtbl *lpVtbl; }; #ifdef COBJMACROS #define IDvdControl_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IDvdControl_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IDvdControl_Release(This) \ (This)->lpVtbl -> Release(This) #define IDvdControl_TitlePlay(This,ulTitle) \ (This)->lpVtbl -> TitlePlay(This,ulTitle) #define IDvdControl_ChapterPlay(This,ulTitle,ulChapter) \ (This)->lpVtbl -> ChapterPlay(This,ulTitle,ulChapter) #define IDvdControl_TimePlay(This,ulTitle,bcdTime) \ (This)->lpVtbl -> TimePlay(This,ulTitle,bcdTime) #define IDvdControl_StopForResume(This) \ (This)->lpVtbl -> StopForResume(This) #define IDvdControl_GoUp(This) \ (This)->lpVtbl -> GoUp(This) #define IDvdControl_TimeSearch(This,bcdTime) \ (This)->lpVtbl -> TimeSearch(This,bcdTime) #define IDvdControl_ChapterSearch(This,ulChapter) \ (This)->lpVtbl -> ChapterSearch(This,ulChapter) #define IDvdControl_PrevPGSearch(This) \ (This)->lpVtbl -> PrevPGSearch(This) #define IDvdControl_TopPGSearch(This) \ (This)->lpVtbl -> TopPGSearch(This) #define IDvdControl_NextPGSearch(This) \ (This)->lpVtbl -> NextPGSearch(This) #define IDvdControl_ForwardScan(This,dwSpeed) \ (This)->lpVtbl -> ForwardScan(This,dwSpeed) #define IDvdControl_BackwardScan(This,dwSpeed) \ (This)->lpVtbl -> BackwardScan(This,dwSpeed) #define IDvdControl_MenuCall(This,MenuID) \ (This)->lpVtbl -> MenuCall(This,MenuID) #define IDvdControl_Resume(This) \ (This)->lpVtbl -> Resume(This) #define IDvdControl_UpperButtonSelect(This) \ (This)->lpVtbl -> UpperButtonSelect(This) #define IDvdControl_LowerButtonSelect(This) \ (This)->lpVtbl -> LowerButtonSelect(This) #define IDvdControl_LeftButtonSelect(This) \ (This)->lpVtbl -> LeftButtonSelect(This) #define IDvdControl_RightButtonSelect(This) \ (This)->lpVtbl -> RightButtonSelect(This) #define IDvdControl_ButtonActivate(This) \ (This)->lpVtbl -> ButtonActivate(This) #define IDvdControl_ButtonSelectAndActivate(This,ulButton) \ (This)->lpVtbl -> ButtonSelectAndActivate(This,ulButton) #define IDvdControl_StillOff(This) \ (This)->lpVtbl -> StillOff(This) #define IDvdControl_PauseOn(This) \ (This)->lpVtbl -> PauseOn(This) #define IDvdControl_PauseOff(This) \ (This)->lpVtbl -> PauseOff(This) #define IDvdControl_MenuLanguageSelect(This,Language) \ (This)->lpVtbl -> MenuLanguageSelect(This,Language) #define IDvdControl_AudioStreamChange(This,ulAudio) \ (This)->lpVtbl -> AudioStreamChange(This,ulAudio) #define IDvdControl_SubpictureStreamChange(This,ulSubPicture,bDisplay) \ (This)->lpVtbl -> SubpictureStreamChange(This,ulSubPicture,bDisplay) #define IDvdControl_AngleChange(This,ulAngle) \ (This)->lpVtbl -> AngleChange(This,ulAngle) #define IDvdControl_ParentalLevelSelect(This,ulParentalLevel) \ (This)->lpVtbl -> ParentalLevelSelect(This,ulParentalLevel) #define IDvdControl_ParentalCountrySelect(This,wCountry) \ (This)->lpVtbl -> ParentalCountrySelect(This,wCountry) #define IDvdControl_KaraokeAudioPresentationModeChange(This,ulMode) \ (This)->lpVtbl -> KaraokeAudioPresentationModeChange(This,ulMode) #define IDvdControl_VideoModePreferrence(This,ulPreferredDisplayMode) \ (This)->lpVtbl -> VideoModePreferrence(This,ulPreferredDisplayMode) #define IDvdControl_SetRoot(This,pszPath) \ (This)->lpVtbl -> SetRoot(This,pszPath) #define IDvdControl_MouseActivate(This,point) \ (This)->lpVtbl -> MouseActivate(This,point) #define IDvdControl_MouseSelect(This,point) \ (This)->lpVtbl -> MouseSelect(This,point) #define IDvdControl_ChapterPlayAutoStop(This,ulTitle,ulChapter,ulChaptersToPlay) \ (This)->lpVtbl -> ChapterPlayAutoStop(This,ulTitle,ulChapter,ulChaptersToPlay) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IDvdControl_TitlePlay_Proxy( IDvdControl * This, /* [in] */ ULONG ulTitle); void __RPC_STUB IDvdControl_TitlePlay_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl_ChapterPlay_Proxy( IDvdControl * This, /* [in] */ ULONG ulTitle, /* [in] */ ULONG ulChapter); void __RPC_STUB IDvdControl_ChapterPlay_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl_TimePlay_Proxy( IDvdControl * This, /* [in] */ ULONG ulTitle, /* [in] */ ULONG bcdTime); void __RPC_STUB IDvdControl_TimePlay_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl_StopForResume_Proxy( IDvdControl * This); void __RPC_STUB IDvdControl_StopForResume_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl_GoUp_Proxy( IDvdControl * This); void __RPC_STUB IDvdControl_GoUp_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl_TimeSearch_Proxy( IDvdControl * This, /* [in] */ ULONG bcdTime); void __RPC_STUB IDvdControl_TimeSearch_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl_ChapterSearch_Proxy( IDvdControl * This, /* [in] */ ULONG ulChapter); void __RPC_STUB IDvdControl_ChapterSearch_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl_PrevPGSearch_Proxy( IDvdControl * This); void __RPC_STUB IDvdControl_PrevPGSearch_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl_TopPGSearch_Proxy( IDvdControl * This); void __RPC_STUB IDvdControl_TopPGSearch_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl_NextPGSearch_Proxy( IDvdControl * This); void __RPC_STUB IDvdControl_NextPGSearch_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl_ForwardScan_Proxy( IDvdControl * This, /* [in] */ double dwSpeed); void __RPC_STUB IDvdControl_ForwardScan_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl_BackwardScan_Proxy( IDvdControl * This, /* [in] */ double dwSpeed); void __RPC_STUB IDvdControl_BackwardScan_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl_MenuCall_Proxy( IDvdControl * This, /* [in] */ DVD_MENU_ID MenuID); void __RPC_STUB IDvdControl_MenuCall_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl_Resume_Proxy( IDvdControl * This); void __RPC_STUB IDvdControl_Resume_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl_UpperButtonSelect_Proxy( IDvdControl * This); void __RPC_STUB IDvdControl_UpperButtonSelect_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl_LowerButtonSelect_Proxy( IDvdControl * This); void __RPC_STUB IDvdControl_LowerButtonSelect_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl_LeftButtonSelect_Proxy( IDvdControl * This); void __RPC_STUB IDvdControl_LeftButtonSelect_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl_RightButtonSelect_Proxy( IDvdControl * This); void __RPC_STUB IDvdControl_RightButtonSelect_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl_ButtonActivate_Proxy( IDvdControl * This); void __RPC_STUB IDvdControl_ButtonActivate_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl_ButtonSelectAndActivate_Proxy( IDvdControl * This, /* [in] */ ULONG ulButton); void __RPC_STUB IDvdControl_ButtonSelectAndActivate_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl_StillOff_Proxy( IDvdControl * This); void __RPC_STUB IDvdControl_StillOff_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl_PauseOn_Proxy( IDvdControl * This); void __RPC_STUB IDvdControl_PauseOn_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl_PauseOff_Proxy( IDvdControl * This); void __RPC_STUB IDvdControl_PauseOff_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl_MenuLanguageSelect_Proxy( IDvdControl * This, /* [in] */ LCID Language); void __RPC_STUB IDvdControl_MenuLanguageSelect_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl_AudioStreamChange_Proxy( IDvdControl * This, /* [in] */ ULONG ulAudio); void __RPC_STUB IDvdControl_AudioStreamChange_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl_SubpictureStreamChange_Proxy( IDvdControl * This, /* [in] */ ULONG ulSubPicture, /* [in] */ BOOL bDisplay); void __RPC_STUB IDvdControl_SubpictureStreamChange_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl_AngleChange_Proxy( IDvdControl * This, /* [in] */ ULONG ulAngle); void __RPC_STUB IDvdControl_AngleChange_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl_ParentalLevelSelect_Proxy( IDvdControl * This, /* [in] */ ULONG ulParentalLevel); void __RPC_STUB IDvdControl_ParentalLevelSelect_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl_ParentalCountrySelect_Proxy( IDvdControl * This, /* [in] */ WORD wCountry); void __RPC_STUB IDvdControl_ParentalCountrySelect_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl_KaraokeAudioPresentationModeChange_Proxy( IDvdControl * This, /* [in] */ ULONG ulMode); void __RPC_STUB IDvdControl_KaraokeAudioPresentationModeChange_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl_VideoModePreferrence_Proxy( IDvdControl * This, /* [in] */ ULONG ulPreferredDisplayMode); void __RPC_STUB IDvdControl_VideoModePreferrence_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl_SetRoot_Proxy( IDvdControl * This, /* [in] */ LPCWSTR pszPath); void __RPC_STUB IDvdControl_SetRoot_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl_MouseActivate_Proxy( IDvdControl * This, /* [in] */ POINT point); void __RPC_STUB IDvdControl_MouseActivate_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl_MouseSelect_Proxy( IDvdControl * This, /* [in] */ POINT point); void __RPC_STUB IDvdControl_MouseSelect_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl_ChapterPlayAutoStop_Proxy( IDvdControl * This, /* [in] */ ULONG ulTitle, /* [in] */ ULONG ulChapter, /* [in] */ ULONG ulChaptersToPlay); void __RPC_STUB IDvdControl_ChapterPlayAutoStop_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IDvdControl_INTERFACE_DEFINED__ */ #ifndef __IDvdInfo_INTERFACE_DEFINED__ #define __IDvdInfo_INTERFACE_DEFINED__ /* interface IDvdInfo */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IDvdInfo; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("A70EFE60-E2A3-11d0-A9BE-00AA0061BE93") IDvdInfo : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE GetCurrentDomain( /* [out] */ DVD_DOMAIN *pDomain) = 0; virtual HRESULT STDMETHODCALLTYPE GetCurrentLocation( /* [out] */ DVD_PLAYBACK_LOCATION *pLocation) = 0; virtual HRESULT STDMETHODCALLTYPE GetTotalTitleTime( /* [out] */ ULONG *pulTotalTime) = 0; virtual HRESULT STDMETHODCALLTYPE GetCurrentButton( /* [out] */ ULONG *pulButtonsAvailable, /* [out] */ ULONG *pulCurrentButton) = 0; virtual HRESULT STDMETHODCALLTYPE GetCurrentAngle( /* [out] */ ULONG *pulAnglesAvailable, /* [out] */ ULONG *pulCurrentAngle) = 0; virtual HRESULT STDMETHODCALLTYPE GetCurrentAudio( /* [out] */ ULONG *pulStreamsAvailable, /* [out] */ ULONG *pulCurrentStream) = 0; virtual HRESULT STDMETHODCALLTYPE GetCurrentSubpicture( /* [out] */ ULONG *pulStreamsAvailable, /* [out] */ ULONG *pulCurrentStream, /* [out] */ BOOL *pIsDisabled) = 0; virtual HRESULT STDMETHODCALLTYPE GetCurrentUOPS( /* [out] */ VALID_UOP_SOMTHING_OR_OTHER *pUOP) = 0; virtual HRESULT STDMETHODCALLTYPE GetAllSPRMs( /* [out] */ SPRMARRAY *pRegisterArray) = 0; virtual HRESULT STDMETHODCALLTYPE GetAllGPRMs( /* [out] */ GPRMARRAY *pRegisterArray) = 0; virtual HRESULT STDMETHODCALLTYPE GetAudioLanguage( /* [in] */ ULONG ulStream, /* [out] */ LCID *pLanguage) = 0; virtual HRESULT STDMETHODCALLTYPE GetSubpictureLanguage( /* [in] */ ULONG ulStream, /* [out] */ LCID *pLanguage) = 0; virtual HRESULT STDMETHODCALLTYPE GetTitleAttributes( /* [in] */ ULONG ulTitle, /* [out] */ DVD_ATR *pATR) = 0; virtual HRESULT STDMETHODCALLTYPE GetVMGAttributes( /* [out] */ DVD_ATR *pATR) = 0; virtual HRESULT STDMETHODCALLTYPE GetCurrentVideoAttributes( /* [out] */ DVD_VideoATR *pATR) = 0; virtual HRESULT STDMETHODCALLTYPE GetCurrentAudioAttributes( /* [out] */ DVD_AudioATR *pATR) = 0; virtual HRESULT STDMETHODCALLTYPE GetCurrentSubpictureAttributes( /* [out] */ DVD_SubpictureATR *pATR) = 0; virtual HRESULT STDMETHODCALLTYPE GetCurrentVolumeInfo( /* [out] */ ULONG *pulNumOfVol, /* [out] */ ULONG *pulThisVolNum, /* [out] */ DVD_DISC_SIDE *pSide, /* [out] */ ULONG *pulNumOfTitles) = 0; virtual HRESULT STDMETHODCALLTYPE GetDVDTextInfo( /* [size_is][out] */ BYTE *pTextManager, /* [in] */ ULONG ulBufSize, /* [out] */ ULONG *pulActualSize) = 0; virtual HRESULT STDMETHODCALLTYPE GetPlayerParentalLevel( /* [out] */ ULONG *pulParentalLevel, /* [out] */ ULONG *pulCountryCode) = 0; virtual HRESULT STDMETHODCALLTYPE GetNumberOfChapters( /* [in] */ ULONG ulTitle, /* [out] */ ULONG *pulNumberOfChapters) = 0; virtual HRESULT STDMETHODCALLTYPE GetTitleParentalLevels( /* [in] */ ULONG ulTitle, /* [out] */ ULONG *pulParentalLevels) = 0; virtual HRESULT STDMETHODCALLTYPE GetRoot( /* [size_is][out] */ LPSTR pRoot, /* [in] */ ULONG ulBufSize, /* [out] */ ULONG *pulActualSize) = 0; }; #else /* C style interface */ typedef struct IDvdInfoVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IDvdInfo * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IDvdInfo * This); ULONG ( STDMETHODCALLTYPE *Release )( IDvdInfo * This); HRESULT ( STDMETHODCALLTYPE *GetCurrentDomain )( IDvdInfo * This, /* [out] */ DVD_DOMAIN *pDomain); HRESULT ( STDMETHODCALLTYPE *GetCurrentLocation )( IDvdInfo * This, /* [out] */ DVD_PLAYBACK_LOCATION *pLocation); HRESULT ( STDMETHODCALLTYPE *GetTotalTitleTime )( IDvdInfo * This, /* [out] */ ULONG *pulTotalTime); HRESULT ( STDMETHODCALLTYPE *GetCurrentButton )( IDvdInfo * This, /* [out] */ ULONG *pulButtonsAvailable, /* [out] */ ULONG *pulCurrentButton); HRESULT ( STDMETHODCALLTYPE *GetCurrentAngle )( IDvdInfo * This, /* [out] */ ULONG *pulAnglesAvailable, /* [out] */ ULONG *pulCurrentAngle); HRESULT ( STDMETHODCALLTYPE *GetCurrentAudio )( IDvdInfo * This, /* [out] */ ULONG *pulStreamsAvailable, /* [out] */ ULONG *pulCurrentStream); HRESULT ( STDMETHODCALLTYPE *GetCurrentSubpicture )( IDvdInfo * This, /* [out] */ ULONG *pulStreamsAvailable, /* [out] */ ULONG *pulCurrentStream, /* [out] */ BOOL *pIsDisabled); HRESULT ( STDMETHODCALLTYPE *GetCurrentUOPS )( IDvdInfo * This, /* [out] */ VALID_UOP_SOMTHING_OR_OTHER *pUOP); HRESULT ( STDMETHODCALLTYPE *GetAllSPRMs )( IDvdInfo * This, /* [out] */ SPRMARRAY *pRegisterArray); HRESULT ( STDMETHODCALLTYPE *GetAllGPRMs )( IDvdInfo * This, /* [out] */ GPRMARRAY *pRegisterArray); HRESULT ( STDMETHODCALLTYPE *GetAudioLanguage )( IDvdInfo * This, /* [in] */ ULONG ulStream, /* [out] */ LCID *pLanguage); HRESULT ( STDMETHODCALLTYPE *GetSubpictureLanguage )( IDvdInfo * This, /* [in] */ ULONG ulStream, /* [out] */ LCID *pLanguage); HRESULT ( STDMETHODCALLTYPE *GetTitleAttributes )( IDvdInfo * This, /* [in] */ ULONG ulTitle, /* [out] */ DVD_ATR *pATR); HRESULT ( STDMETHODCALLTYPE *GetVMGAttributes )( IDvdInfo * This, /* [out] */ DVD_ATR *pATR); HRESULT ( STDMETHODCALLTYPE *GetCurrentVideoAttributes )( IDvdInfo * This, /* [out] */ DVD_VideoATR *pATR); HRESULT ( STDMETHODCALLTYPE *GetCurrentAudioAttributes )( IDvdInfo * This, /* [out] */ DVD_AudioATR *pATR); HRESULT ( STDMETHODCALLTYPE *GetCurrentSubpictureAttributes )( IDvdInfo * This, /* [out] */ DVD_SubpictureATR *pATR); HRESULT ( STDMETHODCALLTYPE *GetCurrentVolumeInfo )( IDvdInfo * This, /* [out] */ ULONG *pulNumOfVol, /* [out] */ ULONG *pulThisVolNum, /* [out] */ DVD_DISC_SIDE *pSide, /* [out] */ ULONG *pulNumOfTitles); HRESULT ( STDMETHODCALLTYPE *GetDVDTextInfo )( IDvdInfo * This, /* [size_is][out] */ BYTE *pTextManager, /* [in] */ ULONG ulBufSize, /* [out] */ ULONG *pulActualSize); HRESULT ( STDMETHODCALLTYPE *GetPlayerParentalLevel )( IDvdInfo * This, /* [out] */ ULONG *pulParentalLevel, /* [out] */ ULONG *pulCountryCode); HRESULT ( STDMETHODCALLTYPE *GetNumberOfChapters )( IDvdInfo * This, /* [in] */ ULONG ulTitle, /* [out] */ ULONG *pulNumberOfChapters); HRESULT ( STDMETHODCALLTYPE *GetTitleParentalLevels )( IDvdInfo * This, /* [in] */ ULONG ulTitle, /* [out] */ ULONG *pulParentalLevels); HRESULT ( STDMETHODCALLTYPE *GetRoot )( IDvdInfo * This, /* [size_is][out] */ LPSTR pRoot, /* [in] */ ULONG ulBufSize, /* [out] */ ULONG *pulActualSize); END_INTERFACE } IDvdInfoVtbl; interface IDvdInfo { CONST_VTBL struct IDvdInfoVtbl *lpVtbl; }; #ifdef COBJMACROS #define IDvdInfo_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IDvdInfo_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IDvdInfo_Release(This) \ (This)->lpVtbl -> Release(This) #define IDvdInfo_GetCurrentDomain(This,pDomain) \ (This)->lpVtbl -> GetCurrentDomain(This,pDomain) #define IDvdInfo_GetCurrentLocation(This,pLocation) \ (This)->lpVtbl -> GetCurrentLocation(This,pLocation) #define IDvdInfo_GetTotalTitleTime(This,pulTotalTime) \ (This)->lpVtbl -> GetTotalTitleTime(This,pulTotalTime) #define IDvdInfo_GetCurrentButton(This,pulButtonsAvailable,pulCurrentButton) \ (This)->lpVtbl -> GetCurrentButton(This,pulButtonsAvailable,pulCurrentButton) #define IDvdInfo_GetCurrentAngle(This,pulAnglesAvailable,pulCurrentAngle) \ (This)->lpVtbl -> GetCurrentAngle(This,pulAnglesAvailable,pulCurrentAngle) #define IDvdInfo_GetCurrentAudio(This,pulStreamsAvailable,pulCurrentStream) \ (This)->lpVtbl -> GetCurrentAudio(This,pulStreamsAvailable,pulCurrentStream) #define IDvdInfo_GetCurrentSubpicture(This,pulStreamsAvailable,pulCurrentStream,pIsDisabled) \ (This)->lpVtbl -> GetCurrentSubpicture(This,pulStreamsAvailable,pulCurrentStream,pIsDisabled) #define IDvdInfo_GetCurrentUOPS(This,pUOP) \ (This)->lpVtbl -> GetCurrentUOPS(This,pUOP) #define IDvdInfo_GetAllSPRMs(This,pRegisterArray) \ (This)->lpVtbl -> GetAllSPRMs(This,pRegisterArray) #define IDvdInfo_GetAllGPRMs(This,pRegisterArray) \ (This)->lpVtbl -> GetAllGPRMs(This,pRegisterArray) #define IDvdInfo_GetAudioLanguage(This,ulStream,pLanguage) \ (This)->lpVtbl -> GetAudioLanguage(This,ulStream,pLanguage) #define IDvdInfo_GetSubpictureLanguage(This,ulStream,pLanguage) \ (This)->lpVtbl -> GetSubpictureLanguage(This,ulStream,pLanguage) #define IDvdInfo_GetTitleAttributes(This,ulTitle,pATR) \ (This)->lpVtbl -> GetTitleAttributes(This,ulTitle,pATR) #define IDvdInfo_GetVMGAttributes(This,pATR) \ (This)->lpVtbl -> GetVMGAttributes(This,pATR) #define IDvdInfo_GetCurrentVideoAttributes(This,pATR) \ (This)->lpVtbl -> GetCurrentVideoAttributes(This,pATR) #define IDvdInfo_GetCurrentAudioAttributes(This,pATR) \ (This)->lpVtbl -> GetCurrentAudioAttributes(This,pATR) #define IDvdInfo_GetCurrentSubpictureAttributes(This,pATR) \ (This)->lpVtbl -> GetCurrentSubpictureAttributes(This,pATR) #define IDvdInfo_GetCurrentVolumeInfo(This,pulNumOfVol,pulThisVolNum,pSide,pulNumOfTitles) \ (This)->lpVtbl -> GetCurrentVolumeInfo(This,pulNumOfVol,pulThisVolNum,pSide,pulNumOfTitles) #define IDvdInfo_GetDVDTextInfo(This,pTextManager,ulBufSize,pulActualSize) \ (This)->lpVtbl -> GetDVDTextInfo(This,pTextManager,ulBufSize,pulActualSize) #define IDvdInfo_GetPlayerParentalLevel(This,pulParentalLevel,pulCountryCode) \ (This)->lpVtbl -> GetPlayerParentalLevel(This,pulParentalLevel,pulCountryCode) #define IDvdInfo_GetNumberOfChapters(This,ulTitle,pulNumberOfChapters) \ (This)->lpVtbl -> GetNumberOfChapters(This,ulTitle,pulNumberOfChapters) #define IDvdInfo_GetTitleParentalLevels(This,ulTitle,pulParentalLevels) \ (This)->lpVtbl -> GetTitleParentalLevels(This,ulTitle,pulParentalLevels) #define IDvdInfo_GetRoot(This,pRoot,ulBufSize,pulActualSize) \ (This)->lpVtbl -> GetRoot(This,pRoot,ulBufSize,pulActualSize) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IDvdInfo_GetCurrentDomain_Proxy( IDvdInfo * This, /* [out] */ DVD_DOMAIN *pDomain); void __RPC_STUB IDvdInfo_GetCurrentDomain_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo_GetCurrentLocation_Proxy( IDvdInfo * This, /* [out] */ DVD_PLAYBACK_LOCATION *pLocation); void __RPC_STUB IDvdInfo_GetCurrentLocation_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo_GetTotalTitleTime_Proxy( IDvdInfo * This, /* [out] */ ULONG *pulTotalTime); void __RPC_STUB IDvdInfo_GetTotalTitleTime_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo_GetCurrentButton_Proxy( IDvdInfo * This, /* [out] */ ULONG *pulButtonsAvailable, /* [out] */ ULONG *pulCurrentButton); void __RPC_STUB IDvdInfo_GetCurrentButton_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo_GetCurrentAngle_Proxy( IDvdInfo * This, /* [out] */ ULONG *pulAnglesAvailable, /* [out] */ ULONG *pulCurrentAngle); void __RPC_STUB IDvdInfo_GetCurrentAngle_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo_GetCurrentAudio_Proxy( IDvdInfo * This, /* [out] */ ULONG *pulStreamsAvailable, /* [out] */ ULONG *pulCurrentStream); void __RPC_STUB IDvdInfo_GetCurrentAudio_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo_GetCurrentSubpicture_Proxy( IDvdInfo * This, /* [out] */ ULONG *pulStreamsAvailable, /* [out] */ ULONG *pulCurrentStream, /* [out] */ BOOL *pIsDisabled); void __RPC_STUB IDvdInfo_GetCurrentSubpicture_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo_GetCurrentUOPS_Proxy( IDvdInfo * This, /* [out] */ VALID_UOP_SOMTHING_OR_OTHER *pUOP); void __RPC_STUB IDvdInfo_GetCurrentUOPS_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo_GetAllSPRMs_Proxy( IDvdInfo * This, /* [out] */ SPRMARRAY *pRegisterArray); void __RPC_STUB IDvdInfo_GetAllSPRMs_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo_GetAllGPRMs_Proxy( IDvdInfo * This, /* [out] */ GPRMARRAY *pRegisterArray); void __RPC_STUB IDvdInfo_GetAllGPRMs_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo_GetAudioLanguage_Proxy( IDvdInfo * This, /* [in] */ ULONG ulStream, /* [out] */ LCID *pLanguage); void __RPC_STUB IDvdInfo_GetAudioLanguage_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo_GetSubpictureLanguage_Proxy( IDvdInfo * This, /* [in] */ ULONG ulStream, /* [out] */ LCID *pLanguage); void __RPC_STUB IDvdInfo_GetSubpictureLanguage_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo_GetTitleAttributes_Proxy( IDvdInfo * This, /* [in] */ ULONG ulTitle, /* [out] */ DVD_ATR *pATR); void __RPC_STUB IDvdInfo_GetTitleAttributes_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo_GetVMGAttributes_Proxy( IDvdInfo * This, /* [out] */ DVD_ATR *pATR); void __RPC_STUB IDvdInfo_GetVMGAttributes_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo_GetCurrentVideoAttributes_Proxy( IDvdInfo * This, /* [out] */ DVD_VideoATR *pATR); void __RPC_STUB IDvdInfo_GetCurrentVideoAttributes_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo_GetCurrentAudioAttributes_Proxy( IDvdInfo * This, /* [out] */ DVD_AudioATR *pATR); void __RPC_STUB IDvdInfo_GetCurrentAudioAttributes_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo_GetCurrentSubpictureAttributes_Proxy( IDvdInfo * This, /* [out] */ DVD_SubpictureATR *pATR); void __RPC_STUB IDvdInfo_GetCurrentSubpictureAttributes_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo_GetCurrentVolumeInfo_Proxy( IDvdInfo * This, /* [out] */ ULONG *pulNumOfVol, /* [out] */ ULONG *pulThisVolNum, /* [out] */ DVD_DISC_SIDE *pSide, /* [out] */ ULONG *pulNumOfTitles); void __RPC_STUB IDvdInfo_GetCurrentVolumeInfo_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo_GetDVDTextInfo_Proxy( IDvdInfo * This, /* [size_is][out] */ BYTE *pTextManager, /* [in] */ ULONG ulBufSize, /* [out] */ ULONG *pulActualSize); void __RPC_STUB IDvdInfo_GetDVDTextInfo_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo_GetPlayerParentalLevel_Proxy( IDvdInfo * This, /* [out] */ ULONG *pulParentalLevel, /* [out] */ ULONG *pulCountryCode); void __RPC_STUB IDvdInfo_GetPlayerParentalLevel_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo_GetNumberOfChapters_Proxy( IDvdInfo * This, /* [in] */ ULONG ulTitle, /* [out] */ ULONG *pulNumberOfChapters); void __RPC_STUB IDvdInfo_GetNumberOfChapters_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo_GetTitleParentalLevels_Proxy( IDvdInfo * This, /* [in] */ ULONG ulTitle, /* [out] */ ULONG *pulParentalLevels); void __RPC_STUB IDvdInfo_GetTitleParentalLevels_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo_GetRoot_Proxy( IDvdInfo * This, /* [size_is][out] */ LPSTR pRoot, /* [in] */ ULONG ulBufSize, /* [out] */ ULONG *pulActualSize); void __RPC_STUB IDvdInfo_GetRoot_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IDvdInfo_INTERFACE_DEFINED__ */ #ifndef __IDvdCmd_INTERFACE_DEFINED__ #define __IDvdCmd_INTERFACE_DEFINED__ /* interface IDvdCmd */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IDvdCmd; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("5a4a97e4-94ee-4a55-9751-74b5643aa27d") IDvdCmd : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE WaitForStart( void) = 0; virtual HRESULT STDMETHODCALLTYPE WaitForEnd( void) = 0; }; #else /* C style interface */ typedef struct IDvdCmdVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IDvdCmd * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IDvdCmd * This); ULONG ( STDMETHODCALLTYPE *Release )( IDvdCmd * This); HRESULT ( STDMETHODCALLTYPE *WaitForStart )( IDvdCmd * This); HRESULT ( STDMETHODCALLTYPE *WaitForEnd )( IDvdCmd * This); END_INTERFACE } IDvdCmdVtbl; interface IDvdCmd { CONST_VTBL struct IDvdCmdVtbl *lpVtbl; }; #ifdef COBJMACROS #define IDvdCmd_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IDvdCmd_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IDvdCmd_Release(This) \ (This)->lpVtbl -> Release(This) #define IDvdCmd_WaitForStart(This) \ (This)->lpVtbl -> WaitForStart(This) #define IDvdCmd_WaitForEnd(This) \ (This)->lpVtbl -> WaitForEnd(This) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IDvdCmd_WaitForStart_Proxy( IDvdCmd * This); void __RPC_STUB IDvdCmd_WaitForStart_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdCmd_WaitForEnd_Proxy( IDvdCmd * This); void __RPC_STUB IDvdCmd_WaitForEnd_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IDvdCmd_INTERFACE_DEFINED__ */ #ifndef __IDvdState_INTERFACE_DEFINED__ #define __IDvdState_INTERFACE_DEFINED__ /* interface IDvdState */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IDvdState; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("86303d6d-1c4a-4087-ab42-f711167048ef") IDvdState : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE GetDiscID( /* [out] */ ULONGLONG *pullUniqueID) = 0; virtual HRESULT STDMETHODCALLTYPE GetParentalLevel( /* [out] */ ULONG *pulParentalLevel) = 0; }; #else /* C style interface */ typedef struct IDvdStateVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IDvdState * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IDvdState * This); ULONG ( STDMETHODCALLTYPE *Release )( IDvdState * This); HRESULT ( STDMETHODCALLTYPE *GetDiscID )( IDvdState * This, /* [out] */ ULONGLONG *pullUniqueID); HRESULT ( STDMETHODCALLTYPE *GetParentalLevel )( IDvdState * This, /* [out] */ ULONG *pulParentalLevel); END_INTERFACE } IDvdStateVtbl; interface IDvdState { CONST_VTBL struct IDvdStateVtbl *lpVtbl; }; #ifdef COBJMACROS #define IDvdState_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IDvdState_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IDvdState_Release(This) \ (This)->lpVtbl -> Release(This) #define IDvdState_GetDiscID(This,pullUniqueID) \ (This)->lpVtbl -> GetDiscID(This,pullUniqueID) #define IDvdState_GetParentalLevel(This,pulParentalLevel) \ (This)->lpVtbl -> GetParentalLevel(This,pulParentalLevel) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IDvdState_GetDiscID_Proxy( IDvdState * This, /* [out] */ ULONGLONG *pullUniqueID); void __RPC_STUB IDvdState_GetDiscID_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdState_GetParentalLevel_Proxy( IDvdState * This, /* [out] */ ULONG *pulParentalLevel); void __RPC_STUB IDvdState_GetParentalLevel_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IDvdState_INTERFACE_DEFINED__ */ #ifndef __IDvdControl2_INTERFACE_DEFINED__ #define __IDvdControl2_INTERFACE_DEFINED__ /* interface IDvdControl2 */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IDvdControl2; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("33BC7430-EEC0-11D2-8201-00A0C9D74842") IDvdControl2 : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE PlayTitle( /* [in] */ ULONG ulTitle, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd) = 0; virtual HRESULT STDMETHODCALLTYPE PlayChapterInTitle( /* [in] */ ULONG ulTitle, /* [in] */ ULONG ulChapter, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd) = 0; virtual HRESULT STDMETHODCALLTYPE PlayAtTimeInTitle( /* [in] */ ULONG ulTitle, /* [in] */ DVD_HMSF_TIMECODE *pStartTime, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd) = 0; virtual HRESULT STDMETHODCALLTYPE Stop( void) = 0; virtual HRESULT STDMETHODCALLTYPE ReturnFromSubmenu( /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd) = 0; virtual HRESULT STDMETHODCALLTYPE PlayAtTime( /* [in] */ DVD_HMSF_TIMECODE *pTime, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd) = 0; virtual HRESULT STDMETHODCALLTYPE PlayChapter( /* [in] */ ULONG ulChapter, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd) = 0; virtual HRESULT STDMETHODCALLTYPE PlayPrevChapter( /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd) = 0; virtual HRESULT STDMETHODCALLTYPE ReplayChapter( /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd) = 0; virtual HRESULT STDMETHODCALLTYPE PlayNextChapter( /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd) = 0; virtual HRESULT STDMETHODCALLTYPE PlayForwards( /* [in] */ double dSpeed, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd) = 0; virtual HRESULT STDMETHODCALLTYPE PlayBackwards( /* [in] */ double dSpeed, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd) = 0; virtual HRESULT STDMETHODCALLTYPE ShowMenu( /* [in] */ DVD_MENU_ID MenuID, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd) = 0; virtual HRESULT STDMETHODCALLTYPE Resume( /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd) = 0; virtual HRESULT STDMETHODCALLTYPE SelectRelativeButton( DVD_RELATIVE_BUTTON buttonDir) = 0; virtual HRESULT STDMETHODCALLTYPE ActivateButton( void) = 0; virtual HRESULT STDMETHODCALLTYPE SelectButton( /* [in] */ ULONG ulButton) = 0; virtual HRESULT STDMETHODCALLTYPE SelectAndActivateButton( /* [in] */ ULONG ulButton) = 0; virtual HRESULT STDMETHODCALLTYPE StillOff( void) = 0; virtual HRESULT STDMETHODCALLTYPE Pause( /* [in] */ BOOL bState) = 0; virtual HRESULT STDMETHODCALLTYPE SelectAudioStream( /* [in] */ ULONG ulAudio, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd) = 0; virtual HRESULT STDMETHODCALLTYPE SelectSubpictureStream( /* [in] */ ULONG ulSubPicture, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd) = 0; virtual HRESULT STDMETHODCALLTYPE SetSubpictureState( /* [in] */ BOOL bState, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd) = 0; virtual HRESULT STDMETHODCALLTYPE SelectAngle( /* [in] */ ULONG ulAngle, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd) = 0; virtual HRESULT STDMETHODCALLTYPE SelectParentalLevel( /* [in] */ ULONG ulParentalLevel) = 0; virtual HRESULT STDMETHODCALLTYPE SelectParentalCountry( /* [in] */ BYTE bCountry[ 2 ]) = 0; virtual HRESULT STDMETHODCALLTYPE SelectKaraokeAudioPresentationMode( /* [in] */ ULONG ulMode) = 0; virtual HRESULT STDMETHODCALLTYPE SelectVideoModePreference( /* [in] */ ULONG ulPreferredDisplayMode) = 0; virtual HRESULT STDMETHODCALLTYPE SetDVDDirectory( /* [in] */ LPCWSTR pszwPath) = 0; virtual HRESULT STDMETHODCALLTYPE ActivateAtPosition( /* [in] */ POINT point) = 0; virtual HRESULT STDMETHODCALLTYPE SelectAtPosition( /* [in] */ POINT point) = 0; virtual HRESULT STDMETHODCALLTYPE PlayChaptersAutoStop( /* [in] */ ULONG ulTitle, /* [in] */ ULONG ulChapter, /* [in] */ ULONG ulChaptersToPlay, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd) = 0; virtual HRESULT STDMETHODCALLTYPE AcceptParentalLevelChange( /* [in] */ BOOL bAccept) = 0; virtual HRESULT STDMETHODCALLTYPE SetOption( /* [in] */ DVD_OPTION_FLAG flag, /* [in] */ BOOL fState) = 0; virtual HRESULT STDMETHODCALLTYPE SetState( /* [in] */ IDvdState *pState, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd) = 0; virtual HRESULT STDMETHODCALLTYPE PlayPeriodInTitleAutoStop( /* [in] */ ULONG ulTitle, /* [in] */ DVD_HMSF_TIMECODE *pStartTime, /* [in] */ DVD_HMSF_TIMECODE *pEndTime, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd) = 0; virtual HRESULT STDMETHODCALLTYPE SetGPRM( /* [in] */ ULONG ulIndex, /* [in] */ WORD wValue, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd) = 0; virtual HRESULT STDMETHODCALLTYPE SelectDefaultMenuLanguage( /* [in] */ LCID Language) = 0; virtual HRESULT STDMETHODCALLTYPE SelectDefaultAudioLanguage( /* [in] */ LCID Language, /* [in] */ DVD_AUDIO_LANG_EXT audioExtension) = 0; virtual HRESULT STDMETHODCALLTYPE SelectDefaultSubpictureLanguage( /* [in] */ LCID Language, /* [in] */ DVD_SUBPICTURE_LANG_EXT subpictureExtension) = 0; }; #else /* C style interface */ typedef struct IDvdControl2Vtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IDvdControl2 * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IDvdControl2 * This); ULONG ( STDMETHODCALLTYPE *Release )( IDvdControl2 * This); HRESULT ( STDMETHODCALLTYPE *PlayTitle )( IDvdControl2 * This, /* [in] */ ULONG ulTitle, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); HRESULT ( STDMETHODCALLTYPE *PlayChapterInTitle )( IDvdControl2 * This, /* [in] */ ULONG ulTitle, /* [in] */ ULONG ulChapter, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); HRESULT ( STDMETHODCALLTYPE *PlayAtTimeInTitle )( IDvdControl2 * This, /* [in] */ ULONG ulTitle, /* [in] */ DVD_HMSF_TIMECODE *pStartTime, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); HRESULT ( STDMETHODCALLTYPE *Stop )( IDvdControl2 * This); HRESULT ( STDMETHODCALLTYPE *ReturnFromSubmenu )( IDvdControl2 * This, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); HRESULT ( STDMETHODCALLTYPE *PlayAtTime )( IDvdControl2 * This, /* [in] */ DVD_HMSF_TIMECODE *pTime, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); HRESULT ( STDMETHODCALLTYPE *PlayChapter )( IDvdControl2 * This, /* [in] */ ULONG ulChapter, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); HRESULT ( STDMETHODCALLTYPE *PlayPrevChapter )( IDvdControl2 * This, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); HRESULT ( STDMETHODCALLTYPE *ReplayChapter )( IDvdControl2 * This, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); HRESULT ( STDMETHODCALLTYPE *PlayNextChapter )( IDvdControl2 * This, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); HRESULT ( STDMETHODCALLTYPE *PlayForwards )( IDvdControl2 * This, /* [in] */ double dSpeed, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); HRESULT ( STDMETHODCALLTYPE *PlayBackwards )( IDvdControl2 * This, /* [in] */ double dSpeed, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); HRESULT ( STDMETHODCALLTYPE *ShowMenu )( IDvdControl2 * This, /* [in] */ DVD_MENU_ID MenuID, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); HRESULT ( STDMETHODCALLTYPE *Resume )( IDvdControl2 * This, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); HRESULT ( STDMETHODCALLTYPE *SelectRelativeButton )( IDvdControl2 * This, DVD_RELATIVE_BUTTON buttonDir); HRESULT ( STDMETHODCALLTYPE *ActivateButton )( IDvdControl2 * This); HRESULT ( STDMETHODCALLTYPE *SelectButton )( IDvdControl2 * This, /* [in] */ ULONG ulButton); HRESULT ( STDMETHODCALLTYPE *SelectAndActivateButton )( IDvdControl2 * This, /* [in] */ ULONG ulButton); HRESULT ( STDMETHODCALLTYPE *StillOff )( IDvdControl2 * This); HRESULT ( STDMETHODCALLTYPE *Pause )( IDvdControl2 * This, /* [in] */ BOOL bState); HRESULT ( STDMETHODCALLTYPE *SelectAudioStream )( IDvdControl2 * This, /* [in] */ ULONG ulAudio, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); HRESULT ( STDMETHODCALLTYPE *SelectSubpictureStream )( IDvdControl2 * This, /* [in] */ ULONG ulSubPicture, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); HRESULT ( STDMETHODCALLTYPE *SetSubpictureState )( IDvdControl2 * This, /* [in] */ BOOL bState, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); HRESULT ( STDMETHODCALLTYPE *SelectAngle )( IDvdControl2 * This, /* [in] */ ULONG ulAngle, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); HRESULT ( STDMETHODCALLTYPE *SelectParentalLevel )( IDvdControl2 * This, /* [in] */ ULONG ulParentalLevel); HRESULT ( STDMETHODCALLTYPE *SelectParentalCountry )( IDvdControl2 * This, /* [in] */ BYTE bCountry[ 2 ]); HRESULT ( STDMETHODCALLTYPE *SelectKaraokeAudioPresentationMode )( IDvdControl2 * This, /* [in] */ ULONG ulMode); HRESULT ( STDMETHODCALLTYPE *SelectVideoModePreference )( IDvdControl2 * This, /* [in] */ ULONG ulPreferredDisplayMode); HRESULT ( STDMETHODCALLTYPE *SetDVDDirectory )( IDvdControl2 * This, /* [in] */ LPCWSTR pszwPath); HRESULT ( STDMETHODCALLTYPE *ActivateAtPosition )( IDvdControl2 * This, /* [in] */ POINT point); HRESULT ( STDMETHODCALLTYPE *SelectAtPosition )( IDvdControl2 * This, /* [in] */ POINT point); HRESULT ( STDMETHODCALLTYPE *PlayChaptersAutoStop )( IDvdControl2 * This, /* [in] */ ULONG ulTitle, /* [in] */ ULONG ulChapter, /* [in] */ ULONG ulChaptersToPlay, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); HRESULT ( STDMETHODCALLTYPE *AcceptParentalLevelChange )( IDvdControl2 * This, /* [in] */ BOOL bAccept); HRESULT ( STDMETHODCALLTYPE *SetOption )( IDvdControl2 * This, /* [in] */ DVD_OPTION_FLAG flag, /* [in] */ BOOL fState); HRESULT ( STDMETHODCALLTYPE *SetState )( IDvdControl2 * This, /* [in] */ IDvdState *pState, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); HRESULT ( STDMETHODCALLTYPE *PlayPeriodInTitleAutoStop )( IDvdControl2 * This, /* [in] */ ULONG ulTitle, /* [in] */ DVD_HMSF_TIMECODE *pStartTime, /* [in] */ DVD_HMSF_TIMECODE *pEndTime, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); HRESULT ( STDMETHODCALLTYPE *SetGPRM )( IDvdControl2 * This, /* [in] */ ULONG ulIndex, /* [in] */ WORD wValue, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); HRESULT ( STDMETHODCALLTYPE *SelectDefaultMenuLanguage )( IDvdControl2 * This, /* [in] */ LCID Language); HRESULT ( STDMETHODCALLTYPE *SelectDefaultAudioLanguage )( IDvdControl2 * This, /* [in] */ LCID Language, /* [in] */ DVD_AUDIO_LANG_EXT audioExtension); HRESULT ( STDMETHODCALLTYPE *SelectDefaultSubpictureLanguage )( IDvdControl2 * This, /* [in] */ LCID Language, /* [in] */ DVD_SUBPICTURE_LANG_EXT subpictureExtension); END_INTERFACE } IDvdControl2Vtbl; interface IDvdControl2 { CONST_VTBL struct IDvdControl2Vtbl *lpVtbl; }; #ifdef COBJMACROS #define IDvdControl2_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IDvdControl2_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IDvdControl2_Release(This) \ (This)->lpVtbl -> Release(This) #define IDvdControl2_PlayTitle(This,ulTitle,dwFlags,ppCmd) \ (This)->lpVtbl -> PlayTitle(This,ulTitle,dwFlags,ppCmd) #define IDvdControl2_PlayChapterInTitle(This,ulTitle,ulChapter,dwFlags,ppCmd) \ (This)->lpVtbl -> PlayChapterInTitle(This,ulTitle,ulChapter,dwFlags,ppCmd) #define IDvdControl2_PlayAtTimeInTitle(This,ulTitle,pStartTime,dwFlags,ppCmd) \ (This)->lpVtbl -> PlayAtTimeInTitle(This,ulTitle,pStartTime,dwFlags,ppCmd) #define IDvdControl2_Stop(This) \ (This)->lpVtbl -> Stop(This) #define IDvdControl2_ReturnFromSubmenu(This,dwFlags,ppCmd) \ (This)->lpVtbl -> ReturnFromSubmenu(This,dwFlags,ppCmd) #define IDvdControl2_PlayAtTime(This,pTime,dwFlags,ppCmd) \ (This)->lpVtbl -> PlayAtTime(This,pTime,dwFlags,ppCmd) #define IDvdControl2_PlayChapter(This,ulChapter,dwFlags,ppCmd) \ (This)->lpVtbl -> PlayChapter(This,ulChapter,dwFlags,ppCmd) #define IDvdControl2_PlayPrevChapter(This,dwFlags,ppCmd) \ (This)->lpVtbl -> PlayPrevChapter(This,dwFlags,ppCmd) #define IDvdControl2_ReplayChapter(This,dwFlags,ppCmd) \ (This)->lpVtbl -> ReplayChapter(This,dwFlags,ppCmd) #define IDvdControl2_PlayNextChapter(This,dwFlags,ppCmd) \ (This)->lpVtbl -> PlayNextChapter(This,dwFlags,ppCmd) #define IDvdControl2_PlayForwards(This,dSpeed,dwFlags,ppCmd) \ (This)->lpVtbl -> PlayForwards(This,dSpeed,dwFlags,ppCmd) #define IDvdControl2_PlayBackwards(This,dSpeed,dwFlags,ppCmd) \ (This)->lpVtbl -> PlayBackwards(This,dSpeed,dwFlags,ppCmd) #define IDvdControl2_ShowMenu(This,MenuID,dwFlags,ppCmd) \ (This)->lpVtbl -> ShowMenu(This,MenuID,dwFlags,ppCmd) #define IDvdControl2_Resume(This,dwFlags,ppCmd) \ (This)->lpVtbl -> Resume(This,dwFlags,ppCmd) #define IDvdControl2_SelectRelativeButton(This,buttonDir) \ (This)->lpVtbl -> SelectRelativeButton(This,buttonDir) #define IDvdControl2_ActivateButton(This) \ (This)->lpVtbl -> ActivateButton(This) #define IDvdControl2_SelectButton(This,ulButton) \ (This)->lpVtbl -> SelectButton(This,ulButton) #define IDvdControl2_SelectAndActivateButton(This,ulButton) \ (This)->lpVtbl -> SelectAndActivateButton(This,ulButton) #define IDvdControl2_StillOff(This) \ (This)->lpVtbl -> StillOff(This) #define IDvdControl2_Pause(This,bState) \ (This)->lpVtbl -> Pause(This,bState) #define IDvdControl2_SelectAudioStream(This,ulAudio,dwFlags,ppCmd) \ (This)->lpVtbl -> SelectAudioStream(This,ulAudio,dwFlags,ppCmd) #define IDvdControl2_SelectSubpictureStream(This,ulSubPicture,dwFlags,ppCmd) \ (This)->lpVtbl -> SelectSubpictureStream(This,ulSubPicture,dwFlags,ppCmd) #define IDvdControl2_SetSubpictureState(This,bState,dwFlags,ppCmd) \ (This)->lpVtbl -> SetSubpictureState(This,bState,dwFlags,ppCmd) #define IDvdControl2_SelectAngle(This,ulAngle,dwFlags,ppCmd) \ (This)->lpVtbl -> SelectAngle(This,ulAngle,dwFlags,ppCmd) #define IDvdControl2_SelectParentalLevel(This,ulParentalLevel) \ (This)->lpVtbl -> SelectParentalLevel(This,ulParentalLevel) #define IDvdControl2_SelectParentalCountry(This,bCountry) \ (This)->lpVtbl -> SelectParentalCountry(This,bCountry) #define IDvdControl2_SelectKaraokeAudioPresentationMode(This,ulMode) \ (This)->lpVtbl -> SelectKaraokeAudioPresentationMode(This,ulMode) #define IDvdControl2_SelectVideoModePreference(This,ulPreferredDisplayMode) \ (This)->lpVtbl -> SelectVideoModePreference(This,ulPreferredDisplayMode) #define IDvdControl2_SetDVDDirectory(This,pszwPath) \ (This)->lpVtbl -> SetDVDDirectory(This,pszwPath) #define IDvdControl2_ActivateAtPosition(This,point) \ (This)->lpVtbl -> ActivateAtPosition(This,point) #define IDvdControl2_SelectAtPosition(This,point) \ (This)->lpVtbl -> SelectAtPosition(This,point) #define IDvdControl2_PlayChaptersAutoStop(This,ulTitle,ulChapter,ulChaptersToPlay,dwFlags,ppCmd) \ (This)->lpVtbl -> PlayChaptersAutoStop(This,ulTitle,ulChapter,ulChaptersToPlay,dwFlags,ppCmd) #define IDvdControl2_AcceptParentalLevelChange(This,bAccept) \ (This)->lpVtbl -> AcceptParentalLevelChange(This,bAccept) #define IDvdControl2_SetOption(This,flag,fState) \ (This)->lpVtbl -> SetOption(This,flag,fState) #define IDvdControl2_SetState(This,pState,dwFlags,ppCmd) \ (This)->lpVtbl -> SetState(This,pState,dwFlags,ppCmd) #define IDvdControl2_PlayPeriodInTitleAutoStop(This,ulTitle,pStartTime,pEndTime,dwFlags,ppCmd) \ (This)->lpVtbl -> PlayPeriodInTitleAutoStop(This,ulTitle,pStartTime,pEndTime,dwFlags,ppCmd) #define IDvdControl2_SetGPRM(This,ulIndex,wValue,dwFlags,ppCmd) \ (This)->lpVtbl -> SetGPRM(This,ulIndex,wValue,dwFlags,ppCmd) #define IDvdControl2_SelectDefaultMenuLanguage(This,Language) \ (This)->lpVtbl -> SelectDefaultMenuLanguage(This,Language) #define IDvdControl2_SelectDefaultAudioLanguage(This,Language,audioExtension) \ (This)->lpVtbl -> SelectDefaultAudioLanguage(This,Language,audioExtension) #define IDvdControl2_SelectDefaultSubpictureLanguage(This,Language,subpictureExtension) \ (This)->lpVtbl -> SelectDefaultSubpictureLanguage(This,Language,subpictureExtension) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IDvdControl2_PlayTitle_Proxy( IDvdControl2 * This, /* [in] */ ULONG ulTitle, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); void __RPC_STUB IDvdControl2_PlayTitle_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_PlayChapterInTitle_Proxy( IDvdControl2 * This, /* [in] */ ULONG ulTitle, /* [in] */ ULONG ulChapter, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); void __RPC_STUB IDvdControl2_PlayChapterInTitle_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_PlayAtTimeInTitle_Proxy( IDvdControl2 * This, /* [in] */ ULONG ulTitle, /* [in] */ DVD_HMSF_TIMECODE *pStartTime, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); void __RPC_STUB IDvdControl2_PlayAtTimeInTitle_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_Stop_Proxy( IDvdControl2 * This); void __RPC_STUB IDvdControl2_Stop_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_ReturnFromSubmenu_Proxy( IDvdControl2 * This, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); void __RPC_STUB IDvdControl2_ReturnFromSubmenu_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_PlayAtTime_Proxy( IDvdControl2 * This, /* [in] */ DVD_HMSF_TIMECODE *pTime, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); void __RPC_STUB IDvdControl2_PlayAtTime_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_PlayChapter_Proxy( IDvdControl2 * This, /* [in] */ ULONG ulChapter, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); void __RPC_STUB IDvdControl2_PlayChapter_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_PlayPrevChapter_Proxy( IDvdControl2 * This, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); void __RPC_STUB IDvdControl2_PlayPrevChapter_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_ReplayChapter_Proxy( IDvdControl2 * This, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); void __RPC_STUB IDvdControl2_ReplayChapter_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_PlayNextChapter_Proxy( IDvdControl2 * This, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); void __RPC_STUB IDvdControl2_PlayNextChapter_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_PlayForwards_Proxy( IDvdControl2 * This, /* [in] */ double dSpeed, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); void __RPC_STUB IDvdControl2_PlayForwards_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_PlayBackwards_Proxy( IDvdControl2 * This, /* [in] */ double dSpeed, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); void __RPC_STUB IDvdControl2_PlayBackwards_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_ShowMenu_Proxy( IDvdControl2 * This, /* [in] */ DVD_MENU_ID MenuID, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); void __RPC_STUB IDvdControl2_ShowMenu_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_Resume_Proxy( IDvdControl2 * This, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); void __RPC_STUB IDvdControl2_Resume_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_SelectRelativeButton_Proxy( IDvdControl2 * This, DVD_RELATIVE_BUTTON buttonDir); void __RPC_STUB IDvdControl2_SelectRelativeButton_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_ActivateButton_Proxy( IDvdControl2 * This); void __RPC_STUB IDvdControl2_ActivateButton_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_SelectButton_Proxy( IDvdControl2 * This, /* [in] */ ULONG ulButton); void __RPC_STUB IDvdControl2_SelectButton_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_SelectAndActivateButton_Proxy( IDvdControl2 * This, /* [in] */ ULONG ulButton); void __RPC_STUB IDvdControl2_SelectAndActivateButton_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_StillOff_Proxy( IDvdControl2 * This); void __RPC_STUB IDvdControl2_StillOff_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_Pause_Proxy( IDvdControl2 * This, /* [in] */ BOOL bState); void __RPC_STUB IDvdControl2_Pause_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_SelectAudioStream_Proxy( IDvdControl2 * This, /* [in] */ ULONG ulAudio, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); void __RPC_STUB IDvdControl2_SelectAudioStream_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_SelectSubpictureStream_Proxy( IDvdControl2 * This, /* [in] */ ULONG ulSubPicture, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); void __RPC_STUB IDvdControl2_SelectSubpictureStream_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_SetSubpictureState_Proxy( IDvdControl2 * This, /* [in] */ BOOL bState, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); void __RPC_STUB IDvdControl2_SetSubpictureState_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_SelectAngle_Proxy( IDvdControl2 * This, /* [in] */ ULONG ulAngle, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); void __RPC_STUB IDvdControl2_SelectAngle_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_SelectParentalLevel_Proxy( IDvdControl2 * This, /* [in] */ ULONG ulParentalLevel); void __RPC_STUB IDvdControl2_SelectParentalLevel_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_SelectParentalCountry_Proxy( IDvdControl2 * This, /* [in] */ BYTE bCountry[ 2 ]); void __RPC_STUB IDvdControl2_SelectParentalCountry_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_SelectKaraokeAudioPresentationMode_Proxy( IDvdControl2 * This, /* [in] */ ULONG ulMode); void __RPC_STUB IDvdControl2_SelectKaraokeAudioPresentationMode_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_SelectVideoModePreference_Proxy( IDvdControl2 * This, /* [in] */ ULONG ulPreferredDisplayMode); void __RPC_STUB IDvdControl2_SelectVideoModePreference_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_SetDVDDirectory_Proxy( IDvdControl2 * This, /* [in] */ LPCWSTR pszwPath); void __RPC_STUB IDvdControl2_SetDVDDirectory_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_ActivateAtPosition_Proxy( IDvdControl2 * This, /* [in] */ POINT point); void __RPC_STUB IDvdControl2_ActivateAtPosition_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_SelectAtPosition_Proxy( IDvdControl2 * This, /* [in] */ POINT point); void __RPC_STUB IDvdControl2_SelectAtPosition_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_PlayChaptersAutoStop_Proxy( IDvdControl2 * This, /* [in] */ ULONG ulTitle, /* [in] */ ULONG ulChapter, /* [in] */ ULONG ulChaptersToPlay, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); void __RPC_STUB IDvdControl2_PlayChaptersAutoStop_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_AcceptParentalLevelChange_Proxy( IDvdControl2 * This, /* [in] */ BOOL bAccept); void __RPC_STUB IDvdControl2_AcceptParentalLevelChange_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_SetOption_Proxy( IDvdControl2 * This, /* [in] */ DVD_OPTION_FLAG flag, /* [in] */ BOOL fState); void __RPC_STUB IDvdControl2_SetOption_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_SetState_Proxy( IDvdControl2 * This, /* [in] */ IDvdState *pState, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); void __RPC_STUB IDvdControl2_SetState_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_PlayPeriodInTitleAutoStop_Proxy( IDvdControl2 * This, /* [in] */ ULONG ulTitle, /* [in] */ DVD_HMSF_TIMECODE *pStartTime, /* [in] */ DVD_HMSF_TIMECODE *pEndTime, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); void __RPC_STUB IDvdControl2_PlayPeriodInTitleAutoStop_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_SetGPRM_Proxy( IDvdControl2 * This, /* [in] */ ULONG ulIndex, /* [in] */ WORD wValue, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); void __RPC_STUB IDvdControl2_SetGPRM_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_SelectDefaultMenuLanguage_Proxy( IDvdControl2 * This, /* [in] */ LCID Language); void __RPC_STUB IDvdControl2_SelectDefaultMenuLanguage_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_SelectDefaultAudioLanguage_Proxy( IDvdControl2 * This, /* [in] */ LCID Language, /* [in] */ DVD_AUDIO_LANG_EXT audioExtension); void __RPC_STUB IDvdControl2_SelectDefaultAudioLanguage_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_SelectDefaultSubpictureLanguage_Proxy( IDvdControl2 * This, /* [in] */ LCID Language, /* [in] */ DVD_SUBPICTURE_LANG_EXT subpictureExtension); void __RPC_STUB IDvdControl2_SelectDefaultSubpictureLanguage_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IDvdControl2_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0371 */ /* [local] */ enum DVD_TextStringType { DVD_Struct_Volume = 0x1, DVD_Struct_Title = 0x2, DVD_Struct_ParentalID = 0x3, DVD_Struct_PartOfTitle = 0x4, DVD_Struct_Cell = 0x5, DVD_Stream_Audio = 0x10, DVD_Stream_Subpicture = 0x11, DVD_Stream_Angle = 0x12, DVD_Channel_Audio = 0x20, DVD_General_Name = 0x30, DVD_General_Comments = 0x31, DVD_Title_Series = 0x38, DVD_Title_Movie = 0x39, DVD_Title_Video = 0x3a, DVD_Title_Album = 0x3b, DVD_Title_Song = 0x3c, DVD_Title_Other = 0x3f, DVD_Title_Sub_Series = 0x40, DVD_Title_Sub_Movie = 0x41, DVD_Title_Sub_Video = 0x42, DVD_Title_Sub_Album = 0x43, DVD_Title_Sub_Song = 0x44, DVD_Title_Sub_Other = 0x47, DVD_Title_Orig_Series = 0x48, DVD_Title_Orig_Movie = 0x49, DVD_Title_Orig_Video = 0x4a, DVD_Title_Orig_Album = 0x4b, DVD_Title_Orig_Song = 0x4c, DVD_Title_Orig_Other = 0x4f, DVD_Other_Scene = 0x50, DVD_Other_Cut = 0x51, DVD_Other_Take = 0x52 } ; enum DVD_TextCharSet { DVD_CharSet_Unicode = 0, DVD_CharSet_ISO646 = 1, DVD_CharSet_JIS_Roman_Kanji = 2, DVD_CharSet_ISO8859_1 = 3, DVD_CharSet_ShiftJIS_Kanji_Roman_Katakana = 4 } ; #define DVD_TITLE_MENU 0x000 #define DVD_STREAM_DATA_CURRENT 0x800 #define DVD_STREAM_DATA_VMGM 0x400 #define DVD_STREAM_DATA_VTSM 0x401 #define DVD_DEFAULT_AUDIO_STREAM 0x0f typedef struct tagDVD_DECODER_CAPS { DWORD dwSize; DWORD dwAudioCaps; double dFwdMaxRateVideo; double dFwdMaxRateAudio; double dFwdMaxRateSP; double dBwdMaxRateVideo; double dBwdMaxRateAudio; double dBwdMaxRateSP; DWORD dwRes1; DWORD dwRes2; DWORD dwRes3; DWORD dwRes4; } DVD_DECODER_CAPS; #define DVD_AUDIO_CAPS_AC3 0x00000001 #define DVD_AUDIO_CAPS_MPEG2 0x00000002 #define DVD_AUDIO_CAPS_LPCM 0x00000004 #define DVD_AUDIO_CAPS_DTS 0x00000008 #define DVD_AUDIO_CAPS_SDDS 0x00000010 extern RPC_IF_HANDLE __MIDL_itf_strmif_0371_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0371_v0_0_s_ifspec; #ifndef __IDvdInfo2_INTERFACE_DEFINED__ #define __IDvdInfo2_INTERFACE_DEFINED__ /* interface IDvdInfo2 */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IDvdInfo2; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("34151510-EEC0-11D2-8201-00A0C9D74842") IDvdInfo2 : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE GetCurrentDomain( /* [out] */ DVD_DOMAIN *pDomain) = 0; virtual HRESULT STDMETHODCALLTYPE GetCurrentLocation( /* [out] */ DVD_PLAYBACK_LOCATION2 *pLocation) = 0; virtual HRESULT STDMETHODCALLTYPE GetTotalTitleTime( /* [out] */ DVD_HMSF_TIMECODE *pTotalTime, /* [out] */ ULONG *ulTimeCodeFlags) = 0; virtual HRESULT STDMETHODCALLTYPE GetCurrentButton( /* [out] */ ULONG *pulButtonsAvailable, /* [out] */ ULONG *pulCurrentButton) = 0; virtual HRESULT STDMETHODCALLTYPE GetCurrentAngle( /* [out] */ ULONG *pulAnglesAvailable, /* [out] */ ULONG *pulCurrentAngle) = 0; virtual HRESULT STDMETHODCALLTYPE GetCurrentAudio( /* [out] */ ULONG *pulStreamsAvailable, /* [out] */ ULONG *pulCurrentStream) = 0; virtual HRESULT STDMETHODCALLTYPE GetCurrentSubpicture( /* [out] */ ULONG *pulStreamsAvailable, /* [out] */ ULONG *pulCurrentStream, /* [out] */ BOOL *pbIsDisabled) = 0; virtual HRESULT STDMETHODCALLTYPE GetCurrentUOPS( /* [out] */ ULONG *pulUOPs) = 0; virtual HRESULT STDMETHODCALLTYPE GetAllSPRMs( /* [out] */ SPRMARRAY *pRegisterArray) = 0; virtual HRESULT STDMETHODCALLTYPE GetAllGPRMs( /* [out] */ GPRMARRAY *pRegisterArray) = 0; virtual HRESULT STDMETHODCALLTYPE GetAudioLanguage( /* [in] */ ULONG ulStream, /* [out] */ LCID *pLanguage) = 0; virtual HRESULT STDMETHODCALLTYPE GetSubpictureLanguage( /* [in] */ ULONG ulStream, /* [out] */ LCID *pLanguage) = 0; virtual HRESULT STDMETHODCALLTYPE GetTitleAttributes( /* [in] */ ULONG ulTitle, /* [out] */ DVD_MenuAttributes *pMenu, /* [out] */ DVD_TitleAttributes *pTitle) = 0; virtual HRESULT STDMETHODCALLTYPE GetVMGAttributes( /* [out] */ DVD_MenuAttributes *pATR) = 0; virtual HRESULT STDMETHODCALLTYPE GetCurrentVideoAttributes( /* [out] */ DVD_VideoAttributes *pATR) = 0; virtual HRESULT STDMETHODCALLTYPE GetAudioAttributes( /* [in] */ ULONG ulStream, /* [out] */ DVD_AudioAttributes *pATR) = 0; virtual HRESULT STDMETHODCALLTYPE GetKaraokeAttributes( /* [in] */ ULONG ulStream, /* [out] */ DVD_KaraokeAttributes *pAttributes) = 0; virtual HRESULT STDMETHODCALLTYPE GetSubpictureAttributes( /* [in] */ ULONG ulStream, /* [out] */ DVD_SubpictureAttributes *pATR) = 0; virtual HRESULT STDMETHODCALLTYPE GetDVDVolumeInfo( /* [out] */ ULONG *pulNumOfVolumes, /* [out] */ ULONG *pulVolume, /* [out] */ DVD_DISC_SIDE *pSide, /* [out] */ ULONG *pulNumOfTitles) = 0; virtual HRESULT STDMETHODCALLTYPE GetDVDTextNumberOfLanguages( /* [out] */ ULONG *pulNumOfLangs) = 0; virtual HRESULT STDMETHODCALLTYPE GetDVDTextLanguageInfo( /* [in] */ ULONG ulLangIndex, /* [out] */ ULONG *pulNumOfStrings, /* [out] */ LCID *pLangCode, /* [out] */ enum DVD_TextCharSet *pbCharacterSet) = 0; virtual HRESULT STDMETHODCALLTYPE GetDVDTextStringAsNative( /* [in] */ ULONG ulLangIndex, /* [in] */ ULONG ulStringIndex, /* [out] */ BYTE *pbBuffer, /* [in] */ ULONG ulMaxBufferSize, /* [out] */ ULONG *pulActualSize, /* [out] */ enum DVD_TextStringType *pType) = 0; virtual HRESULT STDMETHODCALLTYPE GetDVDTextStringAsUnicode( /* [in] */ ULONG ulLangIndex, /* [in] */ ULONG ulStringIndex, /* [out] */ WCHAR *pchwBuffer, /* [in] */ ULONG ulMaxBufferSize, /* [out] */ ULONG *pulActualSize, /* [out] */ enum DVD_TextStringType *pType) = 0; virtual HRESULT STDMETHODCALLTYPE GetPlayerParentalLevel( /* [out] */ ULONG *pulParentalLevel, /* [out] */ BYTE pbCountryCode[ 2 ]) = 0; virtual HRESULT STDMETHODCALLTYPE GetNumberOfChapters( /* [in] */ ULONG ulTitle, /* [out] */ ULONG *pulNumOfChapters) = 0; virtual HRESULT STDMETHODCALLTYPE GetTitleParentalLevels( /* [in] */ ULONG ulTitle, /* [out] */ ULONG *pulParentalLevels) = 0; virtual HRESULT STDMETHODCALLTYPE GetDVDDirectory( /* [size_is][out] */ LPWSTR pszwPath, /* [in] */ ULONG ulMaxSize, /* [out] */ ULONG *pulActualSize) = 0; virtual HRESULT STDMETHODCALLTYPE IsAudioStreamEnabled( /* [in] */ ULONG ulStreamNum, /* [out] */ BOOL *pbEnabled) = 0; virtual HRESULT STDMETHODCALLTYPE GetDiscID( /* [in] */ LPCWSTR pszwPath, /* [out] */ ULONGLONG *pullDiscID) = 0; virtual HRESULT STDMETHODCALLTYPE GetState( /* [out] */ IDvdState **pStateData) = 0; virtual HRESULT STDMETHODCALLTYPE GetMenuLanguages( /* [out] */ LCID *pLanguages, /* [in] */ ULONG ulMaxLanguages, /* [out] */ ULONG *pulActualLanguages) = 0; virtual HRESULT STDMETHODCALLTYPE GetButtonAtPosition( /* [in] */ POINT point, /* [out] */ ULONG *pulButtonIndex) = 0; virtual HRESULT STDMETHODCALLTYPE GetCmdFromEvent( /* [in] */ LONG_PTR lParam1, /* [out] */ IDvdCmd **pCmdObj) = 0; virtual HRESULT STDMETHODCALLTYPE GetDefaultMenuLanguage( /* [out] */ LCID *pLanguage) = 0; virtual HRESULT STDMETHODCALLTYPE GetDefaultAudioLanguage( /* [out] */ LCID *pLanguage, /* [out] */ DVD_AUDIO_LANG_EXT *pAudioExtension) = 0; virtual HRESULT STDMETHODCALLTYPE GetDefaultSubpictureLanguage( /* [out] */ LCID *pLanguage, /* [out] */ DVD_SUBPICTURE_LANG_EXT *pSubpictureExtension) = 0; virtual HRESULT STDMETHODCALLTYPE GetDecoderCaps( /* [out] */ DVD_DECODER_CAPS *pCaps) = 0; virtual HRESULT STDMETHODCALLTYPE GetButtonRect( /* [in] */ ULONG ulButton, /* [out] */ RECT *pRect) = 0; virtual HRESULT STDMETHODCALLTYPE IsSubpictureStreamEnabled( /* [in] */ ULONG ulStreamNum, /* [out] */ BOOL *pbEnabled) = 0; }; #else /* C style interface */ typedef struct IDvdInfo2Vtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IDvdInfo2 * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IDvdInfo2 * This); ULONG ( STDMETHODCALLTYPE *Release )( IDvdInfo2 * This); HRESULT ( STDMETHODCALLTYPE *GetCurrentDomain )( IDvdInfo2 * This, /* [out] */ DVD_DOMAIN *pDomain); HRESULT ( STDMETHODCALLTYPE *GetCurrentLocation )( IDvdInfo2 * This, /* [out] */ DVD_PLAYBACK_LOCATION2 *pLocation); HRESULT ( STDMETHODCALLTYPE *GetTotalTitleTime )( IDvdInfo2 * This, /* [out] */ DVD_HMSF_TIMECODE *pTotalTime, /* [out] */ ULONG *ulTimeCodeFlags); HRESULT ( STDMETHODCALLTYPE *GetCurrentButton )( IDvdInfo2 * This, /* [out] */ ULONG *pulButtonsAvailable, /* [out] */ ULONG *pulCurrentButton); HRESULT ( STDMETHODCALLTYPE *GetCurrentAngle )( IDvdInfo2 * This, /* [out] */ ULONG *pulAnglesAvailable, /* [out] */ ULONG *pulCurrentAngle); HRESULT ( STDMETHODCALLTYPE *GetCurrentAudio )( IDvdInfo2 * This, /* [out] */ ULONG *pulStreamsAvailable, /* [out] */ ULONG *pulCurrentStream); HRESULT ( STDMETHODCALLTYPE *GetCurrentSubpicture )( IDvdInfo2 * This, /* [out] */ ULONG *pulStreamsAvailable, /* [out] */ ULONG *pulCurrentStream, /* [out] */ BOOL *pbIsDisabled); HRESULT ( STDMETHODCALLTYPE *GetCurrentUOPS )( IDvdInfo2 * This, /* [out] */ ULONG *pulUOPs); HRESULT ( STDMETHODCALLTYPE *GetAllSPRMs )( IDvdInfo2 * This, /* [out] */ SPRMARRAY *pRegisterArray); HRESULT ( STDMETHODCALLTYPE *GetAllGPRMs )( IDvdInfo2 * This, /* [out] */ GPRMARRAY *pRegisterArray); HRESULT ( STDMETHODCALLTYPE *GetAudioLanguage )( IDvdInfo2 * This, /* [in] */ ULONG ulStream, /* [out] */ LCID *pLanguage); HRESULT ( STDMETHODCALLTYPE *GetSubpictureLanguage )( IDvdInfo2 * This, /* [in] */ ULONG ulStream, /* [out] */ LCID *pLanguage); HRESULT ( STDMETHODCALLTYPE *GetTitleAttributes )( IDvdInfo2 * This, /* [in] */ ULONG ulTitle, /* [out] */ DVD_MenuAttributes *pMenu, /* [out] */ DVD_TitleAttributes *pTitle); HRESULT ( STDMETHODCALLTYPE *GetVMGAttributes )( IDvdInfo2 * This, /* [out] */ DVD_MenuAttributes *pATR); HRESULT ( STDMETHODCALLTYPE *GetCurrentVideoAttributes )( IDvdInfo2 * This, /* [out] */ DVD_VideoAttributes *pATR); HRESULT ( STDMETHODCALLTYPE *GetAudioAttributes )( IDvdInfo2 * This, /* [in] */ ULONG ulStream, /* [out] */ DVD_AudioAttributes *pATR); HRESULT ( STDMETHODCALLTYPE *GetKaraokeAttributes )( IDvdInfo2 * This, /* [in] */ ULONG ulStream, /* [out] */ DVD_KaraokeAttributes *pAttributes); HRESULT ( STDMETHODCALLTYPE *GetSubpictureAttributes )( IDvdInfo2 * This, /* [in] */ ULONG ulStream, /* [out] */ DVD_SubpictureAttributes *pATR); HRESULT ( STDMETHODCALLTYPE *GetDVDVolumeInfo )( IDvdInfo2 * This, /* [out] */ ULONG *pulNumOfVolumes, /* [out] */ ULONG *pulVolume, /* [out] */ DVD_DISC_SIDE *pSide, /* [out] */ ULONG *pulNumOfTitles); HRESULT ( STDMETHODCALLTYPE *GetDVDTextNumberOfLanguages )( IDvdInfo2 * This, /* [out] */ ULONG *pulNumOfLangs); HRESULT ( STDMETHODCALLTYPE *GetDVDTextLanguageInfo )( IDvdInfo2 * This, /* [in] */ ULONG ulLangIndex, /* [out] */ ULONG *pulNumOfStrings, /* [out] */ LCID *pLangCode, /* [out] */ enum DVD_TextCharSet *pbCharacterSet); HRESULT ( STDMETHODCALLTYPE *GetDVDTextStringAsNative )( IDvdInfo2 * This, /* [in] */ ULONG ulLangIndex, /* [in] */ ULONG ulStringIndex, /* [out] */ BYTE *pbBuffer, /* [in] */ ULONG ulMaxBufferSize, /* [out] */ ULONG *pulActualSize, /* [out] */ enum DVD_TextStringType *pType); HRESULT ( STDMETHODCALLTYPE *GetDVDTextStringAsUnicode )( IDvdInfo2 * This, /* [in] */ ULONG ulLangIndex, /* [in] */ ULONG ulStringIndex, /* [out] */ WCHAR *pchwBuffer, /* [in] */ ULONG ulMaxBufferSize, /* [out] */ ULONG *pulActualSize, /* [out] */ enum DVD_TextStringType *pType); HRESULT ( STDMETHODCALLTYPE *GetPlayerParentalLevel )( IDvdInfo2 * This, /* [out] */ ULONG *pulParentalLevel, /* [out] */ BYTE pbCountryCode[ 2 ]); HRESULT ( STDMETHODCALLTYPE *GetNumberOfChapters )( IDvdInfo2 * This, /* [in] */ ULONG ulTitle, /* [out] */ ULONG *pulNumOfChapters); HRESULT ( STDMETHODCALLTYPE *GetTitleParentalLevels )( IDvdInfo2 * This, /* [in] */ ULONG ulTitle, /* [out] */ ULONG *pulParentalLevels); HRESULT ( STDMETHODCALLTYPE *GetDVDDirectory )( IDvdInfo2 * This, /* [size_is][out] */ LPWSTR pszwPath, /* [in] */ ULONG ulMaxSize, /* [out] */ ULONG *pulActualSize); HRESULT ( STDMETHODCALLTYPE *IsAudioStreamEnabled )( IDvdInfo2 * This, /* [in] */ ULONG ulStreamNum, /* [out] */ BOOL *pbEnabled); HRESULT ( STDMETHODCALLTYPE *GetDiscID )( IDvdInfo2 * This, /* [in] */ LPCWSTR pszwPath, /* [out] */ ULONGLONG *pullDiscID); HRESULT ( STDMETHODCALLTYPE *GetState )( IDvdInfo2 * This, /* [out] */ IDvdState **pStateData); HRESULT ( STDMETHODCALLTYPE *GetMenuLanguages )( IDvdInfo2 * This, /* [out] */ LCID *pLanguages, /* [in] */ ULONG ulMaxLanguages, /* [out] */ ULONG *pulActualLanguages); HRESULT ( STDMETHODCALLTYPE *GetButtonAtPosition )( IDvdInfo2 * This, /* [in] */ POINT point, /* [out] */ ULONG *pulButtonIndex); HRESULT ( STDMETHODCALLTYPE *GetCmdFromEvent )( IDvdInfo2 * This, /* [in] */ LONG_PTR lParam1, /* [out] */ IDvdCmd **pCmdObj); HRESULT ( STDMETHODCALLTYPE *GetDefaultMenuLanguage )( IDvdInfo2 * This, /* [out] */ LCID *pLanguage); HRESULT ( STDMETHODCALLTYPE *GetDefaultAudioLanguage )( IDvdInfo2 * This, /* [out] */ LCID *pLanguage, /* [out] */ DVD_AUDIO_LANG_EXT *pAudioExtension); HRESULT ( STDMETHODCALLTYPE *GetDefaultSubpictureLanguage )( IDvdInfo2 * This, /* [out] */ LCID *pLanguage, /* [out] */ DVD_SUBPICTURE_LANG_EXT *pSubpictureExtension); HRESULT ( STDMETHODCALLTYPE *GetDecoderCaps )( IDvdInfo2 * This, /* [out] */ DVD_DECODER_CAPS *pCaps); HRESULT ( STDMETHODCALLTYPE *GetButtonRect )( IDvdInfo2 * This, /* [in] */ ULONG ulButton, /* [out] */ RECT *pRect); HRESULT ( STDMETHODCALLTYPE *IsSubpictureStreamEnabled )( IDvdInfo2 * This, /* [in] */ ULONG ulStreamNum, /* [out] */ BOOL *pbEnabled); END_INTERFACE } IDvdInfo2Vtbl; interface IDvdInfo2 { CONST_VTBL struct IDvdInfo2Vtbl *lpVtbl; }; #ifdef COBJMACROS #define IDvdInfo2_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IDvdInfo2_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IDvdInfo2_Release(This) \ (This)->lpVtbl -> Release(This) #define IDvdInfo2_GetCurrentDomain(This,pDomain) \ (This)->lpVtbl -> GetCurrentDomain(This,pDomain) #define IDvdInfo2_GetCurrentLocation(This,pLocation) \ (This)->lpVtbl -> GetCurrentLocation(This,pLocation) #define IDvdInfo2_GetTotalTitleTime(This,pTotalTime,ulTimeCodeFlags) \ (This)->lpVtbl -> GetTotalTitleTime(This,pTotalTime,ulTimeCodeFlags) #define IDvdInfo2_GetCurrentButton(This,pulButtonsAvailable,pulCurrentButton) \ (This)->lpVtbl -> GetCurrentButton(This,pulButtonsAvailable,pulCurrentButton) #define IDvdInfo2_GetCurrentAngle(This,pulAnglesAvailable,pulCurrentAngle) \ (This)->lpVtbl -> GetCurrentAngle(This,pulAnglesAvailable,pulCurrentAngle) #define IDvdInfo2_GetCurrentAudio(This,pulStreamsAvailable,pulCurrentStream) \ (This)->lpVtbl -> GetCurrentAudio(This,pulStreamsAvailable,pulCurrentStream) #define IDvdInfo2_GetCurrentSubpicture(This,pulStreamsAvailable,pulCurrentStream,pbIsDisabled) \ (This)->lpVtbl -> GetCurrentSubpicture(This,pulStreamsAvailable,pulCurrentStream,pbIsDisabled) #define IDvdInfo2_GetCurrentUOPS(This,pulUOPs) \ (This)->lpVtbl -> GetCurrentUOPS(This,pulUOPs) #define IDvdInfo2_GetAllSPRMs(This,pRegisterArray) \ (This)->lpVtbl -> GetAllSPRMs(This,pRegisterArray) #define IDvdInfo2_GetAllGPRMs(This,pRegisterArray) \ (This)->lpVtbl -> GetAllGPRMs(This,pRegisterArray) #define IDvdInfo2_GetAudioLanguage(This,ulStream,pLanguage) \ (This)->lpVtbl -> GetAudioLanguage(This,ulStream,pLanguage) #define IDvdInfo2_GetSubpictureLanguage(This,ulStream,pLanguage) \ (This)->lpVtbl -> GetSubpictureLanguage(This,ulStream,pLanguage) #define IDvdInfo2_GetTitleAttributes(This,ulTitle,pMenu,pTitle) \ (This)->lpVtbl -> GetTitleAttributes(This,ulTitle,pMenu,pTitle) #define IDvdInfo2_GetVMGAttributes(This,pATR) \ (This)->lpVtbl -> GetVMGAttributes(This,pATR) #define IDvdInfo2_GetCurrentVideoAttributes(This,pATR) \ (This)->lpVtbl -> GetCurrentVideoAttributes(This,pATR) #define IDvdInfo2_GetAudioAttributes(This,ulStream,pATR) \ (This)->lpVtbl -> GetAudioAttributes(This,ulStream,pATR) #define IDvdInfo2_GetKaraokeAttributes(This,ulStream,pAttributes) \ (This)->lpVtbl -> GetKaraokeAttributes(This,ulStream,pAttributes) #define IDvdInfo2_GetSubpictureAttributes(This,ulStream,pATR) \ (This)->lpVtbl -> GetSubpictureAttributes(This,ulStream,pATR) #define IDvdInfo2_GetDVDVolumeInfo(This,pulNumOfVolumes,pulVolume,pSide,pulNumOfTitles) \ (This)->lpVtbl -> GetDVDVolumeInfo(This,pulNumOfVolumes,pulVolume,pSide,pulNumOfTitles) #define IDvdInfo2_GetDVDTextNumberOfLanguages(This,pulNumOfLangs) \ (This)->lpVtbl -> GetDVDTextNumberOfLanguages(This,pulNumOfLangs) #define IDvdInfo2_GetDVDTextLanguageInfo(This,ulLangIndex,pulNumOfStrings,pLangCode,pbCharacterSet) \ (This)->lpVtbl -> GetDVDTextLanguageInfo(This,ulLangIndex,pulNumOfStrings,pLangCode,pbCharacterSet) #define IDvdInfo2_GetDVDTextStringAsNative(This,ulLangIndex,ulStringIndex,pbBuffer,ulMaxBufferSize,pulActualSize,pType) \ (This)->lpVtbl -> GetDVDTextStringAsNative(This,ulLangIndex,ulStringIndex,pbBuffer,ulMaxBufferSize,pulActualSize,pType) #define IDvdInfo2_GetDVDTextStringAsUnicode(This,ulLangIndex,ulStringIndex,pchwBuffer,ulMaxBufferSize,pulActualSize,pType) \ (This)->lpVtbl -> GetDVDTextStringAsUnicode(This,ulLangIndex,ulStringIndex,pchwBuffer,ulMaxBufferSize,pulActualSize,pType) #define IDvdInfo2_GetPlayerParentalLevel(This,pulParentalLevel,pbCountryCode) \ (This)->lpVtbl -> GetPlayerParentalLevel(This,pulParentalLevel,pbCountryCode) #define IDvdInfo2_GetNumberOfChapters(This,ulTitle,pulNumOfChapters) \ (This)->lpVtbl -> GetNumberOfChapters(This,ulTitle,pulNumOfChapters) #define IDvdInfo2_GetTitleParentalLevels(This,ulTitle,pulParentalLevels) \ (This)->lpVtbl -> GetTitleParentalLevels(This,ulTitle,pulParentalLevels) #define IDvdInfo2_GetDVDDirectory(This,pszwPath,ulMaxSize,pulActualSize) \ (This)->lpVtbl -> GetDVDDirectory(This,pszwPath,ulMaxSize,pulActualSize) #define IDvdInfo2_IsAudioStreamEnabled(This,ulStreamNum,pbEnabled) \ (This)->lpVtbl -> IsAudioStreamEnabled(This,ulStreamNum,pbEnabled) #define IDvdInfo2_GetDiscID(This,pszwPath,pullDiscID) \ (This)->lpVtbl -> GetDiscID(This,pszwPath,pullDiscID) #define IDvdInfo2_GetState(This,pStateData) \ (This)->lpVtbl -> GetState(This,pStateData) #define IDvdInfo2_GetMenuLanguages(This,pLanguages,ulMaxLanguages,pulActualLanguages) \ (This)->lpVtbl -> GetMenuLanguages(This,pLanguages,ulMaxLanguages,pulActualLanguages) #define IDvdInfo2_GetButtonAtPosition(This,point,pulButtonIndex) \ (This)->lpVtbl -> GetButtonAtPosition(This,point,pulButtonIndex) #define IDvdInfo2_GetCmdFromEvent(This,lParam1,pCmdObj) \ (This)->lpVtbl -> GetCmdFromEvent(This,lParam1,pCmdObj) #define IDvdInfo2_GetDefaultMenuLanguage(This,pLanguage) \ (This)->lpVtbl -> GetDefaultMenuLanguage(This,pLanguage) #define IDvdInfo2_GetDefaultAudioLanguage(This,pLanguage,pAudioExtension) \ (This)->lpVtbl -> GetDefaultAudioLanguage(This,pLanguage,pAudioExtension) #define IDvdInfo2_GetDefaultSubpictureLanguage(This,pLanguage,pSubpictureExtension) \ (This)->lpVtbl -> GetDefaultSubpictureLanguage(This,pLanguage,pSubpictureExtension) #define IDvdInfo2_GetDecoderCaps(This,pCaps) \ (This)->lpVtbl -> GetDecoderCaps(This,pCaps) #define IDvdInfo2_GetButtonRect(This,ulButton,pRect) \ (This)->lpVtbl -> GetButtonRect(This,ulButton,pRect) #define IDvdInfo2_IsSubpictureStreamEnabled(This,ulStreamNum,pbEnabled) \ (This)->lpVtbl -> IsSubpictureStreamEnabled(This,ulStreamNum,pbEnabled) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IDvdInfo2_GetCurrentDomain_Proxy( IDvdInfo2 * This, /* [out] */ DVD_DOMAIN *pDomain); void __RPC_STUB IDvdInfo2_GetCurrentDomain_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_GetCurrentLocation_Proxy( IDvdInfo2 * This, /* [out] */ DVD_PLAYBACK_LOCATION2 *pLocation); void __RPC_STUB IDvdInfo2_GetCurrentLocation_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_GetTotalTitleTime_Proxy( IDvdInfo2 * This, /* [out] */ DVD_HMSF_TIMECODE *pTotalTime, /* [out] */ ULONG *ulTimeCodeFlags); void __RPC_STUB IDvdInfo2_GetTotalTitleTime_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_GetCurrentButton_Proxy( IDvdInfo2 * This, /* [out] */ ULONG *pulButtonsAvailable, /* [out] */ ULONG *pulCurrentButton); void __RPC_STUB IDvdInfo2_GetCurrentButton_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_GetCurrentAngle_Proxy( IDvdInfo2 * This, /* [out] */ ULONG *pulAnglesAvailable, /* [out] */ ULONG *pulCurrentAngle); void __RPC_STUB IDvdInfo2_GetCurrentAngle_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_GetCurrentAudio_Proxy( IDvdInfo2 * This, /* [out] */ ULONG *pulStreamsAvailable, /* [out] */ ULONG *pulCurrentStream); void __RPC_STUB IDvdInfo2_GetCurrentAudio_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_GetCurrentSubpicture_Proxy( IDvdInfo2 * This, /* [out] */ ULONG *pulStreamsAvailable, /* [out] */ ULONG *pulCurrentStream, /* [out] */ BOOL *pbIsDisabled); void __RPC_STUB IDvdInfo2_GetCurrentSubpicture_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_GetCurrentUOPS_Proxy( IDvdInfo2 * This, /* [out] */ ULONG *pulUOPs); void __RPC_STUB IDvdInfo2_GetCurrentUOPS_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_GetAllSPRMs_Proxy( IDvdInfo2 * This, /* [out] */ SPRMARRAY *pRegisterArray); void __RPC_STUB IDvdInfo2_GetAllSPRMs_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_GetAllGPRMs_Proxy( IDvdInfo2 * This, /* [out] */ GPRMARRAY *pRegisterArray); void __RPC_STUB IDvdInfo2_GetAllGPRMs_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_GetAudioLanguage_Proxy( IDvdInfo2 * This, /* [in] */ ULONG ulStream, /* [out] */ LCID *pLanguage); void __RPC_STUB IDvdInfo2_GetAudioLanguage_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_GetSubpictureLanguage_Proxy( IDvdInfo2 * This, /* [in] */ ULONG ulStream, /* [out] */ LCID *pLanguage); void __RPC_STUB IDvdInfo2_GetSubpictureLanguage_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_GetTitleAttributes_Proxy( IDvdInfo2 * This, /* [in] */ ULONG ulTitle, /* [out] */ DVD_MenuAttributes *pMenu, /* [out] */ DVD_TitleAttributes *pTitle); void __RPC_STUB IDvdInfo2_GetTitleAttributes_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_GetVMGAttributes_Proxy( IDvdInfo2 * This, /* [out] */ DVD_MenuAttributes *pATR); void __RPC_STUB IDvdInfo2_GetVMGAttributes_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_GetCurrentVideoAttributes_Proxy( IDvdInfo2 * This, /* [out] */ DVD_VideoAttributes *pATR); void __RPC_STUB IDvdInfo2_GetCurrentVideoAttributes_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_GetAudioAttributes_Proxy( IDvdInfo2 * This, /* [in] */ ULONG ulStream, /* [out] */ DVD_AudioAttributes *pATR); void __RPC_STUB IDvdInfo2_GetAudioAttributes_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_GetKaraokeAttributes_Proxy( IDvdInfo2 * This, /* [in] */ ULONG ulStream, /* [out] */ DVD_KaraokeAttributes *pAttributes); void __RPC_STUB IDvdInfo2_GetKaraokeAttributes_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_GetSubpictureAttributes_Proxy( IDvdInfo2 * This, /* [in] */ ULONG ulStream, /* [out] */ DVD_SubpictureAttributes *pATR); void __RPC_STUB IDvdInfo2_GetSubpictureAttributes_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_GetDVDVolumeInfo_Proxy( IDvdInfo2 * This, /* [out] */ ULONG *pulNumOfVolumes, /* [out] */ ULONG *pulVolume, /* [out] */ DVD_DISC_SIDE *pSide, /* [out] */ ULONG *pulNumOfTitles); void __RPC_STUB IDvdInfo2_GetDVDVolumeInfo_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_GetDVDTextNumberOfLanguages_Proxy( IDvdInfo2 * This, /* [out] */ ULONG *pulNumOfLangs); void __RPC_STUB IDvdInfo2_GetDVDTextNumberOfLanguages_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_GetDVDTextLanguageInfo_Proxy( IDvdInfo2 * This, /* [in] */ ULONG ulLangIndex, /* [out] */ ULONG *pulNumOfStrings, /* [out] */ LCID *pLangCode, /* [out] */ enum DVD_TextCharSet *pbCharacterSet); void __RPC_STUB IDvdInfo2_GetDVDTextLanguageInfo_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_GetDVDTextStringAsNative_Proxy( IDvdInfo2 * This, /* [in] */ ULONG ulLangIndex, /* [in] */ ULONG ulStringIndex, /* [out] */ BYTE *pbBuffer, /* [in] */ ULONG ulMaxBufferSize, /* [out] */ ULONG *pulActualSize, /* [out] */ enum DVD_TextStringType *pType); void __RPC_STUB IDvdInfo2_GetDVDTextStringAsNative_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_GetDVDTextStringAsUnicode_Proxy( IDvdInfo2 * This, /* [in] */ ULONG ulLangIndex, /* [in] */ ULONG ulStringIndex, /* [out] */ WCHAR *pchwBuffer, /* [in] */ ULONG ulMaxBufferSize, /* [out] */ ULONG *pulActualSize, /* [out] */ enum DVD_TextStringType *pType); void __RPC_STUB IDvdInfo2_GetDVDTextStringAsUnicode_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_GetPlayerParentalLevel_Proxy( IDvdInfo2 * This, /* [out] */ ULONG *pulParentalLevel, /* [out] */ BYTE pbCountryCode[ 2 ]); void __RPC_STUB IDvdInfo2_GetPlayerParentalLevel_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_GetNumberOfChapters_Proxy( IDvdInfo2 * This, /* [in] */ ULONG ulTitle, /* [out] */ ULONG *pulNumOfChapters); void __RPC_STUB IDvdInfo2_GetNumberOfChapters_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_GetTitleParentalLevels_Proxy( IDvdInfo2 * This, /* [in] */ ULONG ulTitle, /* [out] */ ULONG *pulParentalLevels); void __RPC_STUB IDvdInfo2_GetTitleParentalLevels_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_GetDVDDirectory_Proxy( IDvdInfo2 * This, /* [size_is][out] */ LPWSTR pszwPath, /* [in] */ ULONG ulMaxSize, /* [out] */ ULONG *pulActualSize); void __RPC_STUB IDvdInfo2_GetDVDDirectory_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_IsAudioStreamEnabled_Proxy( IDvdInfo2 * This, /* [in] */ ULONG ulStreamNum, /* [out] */ BOOL *pbEnabled); void __RPC_STUB IDvdInfo2_IsAudioStreamEnabled_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_GetDiscID_Proxy( IDvdInfo2 * This, /* [in] */ LPCWSTR pszwPath, /* [out] */ ULONGLONG *pullDiscID); void __RPC_STUB IDvdInfo2_GetDiscID_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_GetState_Proxy( IDvdInfo2 * This, /* [out] */ IDvdState **pStateData); void __RPC_STUB IDvdInfo2_GetState_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_GetMenuLanguages_Proxy( IDvdInfo2 * This, /* [out] */ LCID *pLanguages, /* [in] */ ULONG ulMaxLanguages, /* [out] */ ULONG *pulActualLanguages); void __RPC_STUB IDvdInfo2_GetMenuLanguages_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_GetButtonAtPosition_Proxy( IDvdInfo2 * This, /* [in] */ POINT point, /* [out] */ ULONG *pulButtonIndex); void __RPC_STUB IDvdInfo2_GetButtonAtPosition_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_GetCmdFromEvent_Proxy( IDvdInfo2 * This, /* [in] */ LONG_PTR lParam1, /* [out] */ IDvdCmd **pCmdObj); void __RPC_STUB IDvdInfo2_GetCmdFromEvent_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_GetDefaultMenuLanguage_Proxy( IDvdInfo2 * This, /* [out] */ LCID *pLanguage); void __RPC_STUB IDvdInfo2_GetDefaultMenuLanguage_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_GetDefaultAudioLanguage_Proxy( IDvdInfo2 * This, /* [out] */ LCID *pLanguage, /* [out] */ DVD_AUDIO_LANG_EXT *pAudioExtension); void __RPC_STUB IDvdInfo2_GetDefaultAudioLanguage_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_GetDefaultSubpictureLanguage_Proxy( IDvdInfo2 * This, /* [out] */ LCID *pLanguage, /* [out] */ DVD_SUBPICTURE_LANG_EXT *pSubpictureExtension); void __RPC_STUB IDvdInfo2_GetDefaultSubpictureLanguage_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_GetDecoderCaps_Proxy( IDvdInfo2 * This, /* [out] */ DVD_DECODER_CAPS *pCaps); void __RPC_STUB IDvdInfo2_GetDecoderCaps_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_GetButtonRect_Proxy( IDvdInfo2 * This, /* [in] */ ULONG ulButton, /* [out] */ RECT *pRect); void __RPC_STUB IDvdInfo2_GetButtonRect_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_IsSubpictureStreamEnabled_Proxy( IDvdInfo2 * This, /* [in] */ ULONG ulStreamNum, /* [out] */ BOOL *pbEnabled); void __RPC_STUB IDvdInfo2_IsSubpictureStreamEnabled_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IDvdInfo2_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0373 */ /* [local] */ typedef enum _AM_DVD_GRAPH_FLAGS { AM_DVD_HWDEC_PREFER = 0x1, AM_DVD_HWDEC_ONLY = 0x2, AM_DVD_SWDEC_PREFER = 0x4, AM_DVD_SWDEC_ONLY = 0x8, AM_DVD_NOVPE = 0x100 } AM_DVD_GRAPH_FLAGS; typedef enum _AM_DVD_STREAM_FLAGS { AM_DVD_STREAM_VIDEO = 0x1, AM_DVD_STREAM_AUDIO = 0x2, AM_DVD_STREAM_SUBPIC = 0x4 } AM_DVD_STREAM_FLAGS; typedef /* [public][public] */ struct __MIDL___MIDL_itf_strmif_0373_0001 { HRESULT hrVPEStatus; BOOL bDvdVolInvalid; BOOL bDvdVolUnknown; BOOL bNoLine21In; BOOL bNoLine21Out; int iNumStreams; int iNumStreamsFailed; DWORD dwFailedStreamsFlag; } AM_DVD_RENDERSTATUS; extern RPC_IF_HANDLE __MIDL_itf_strmif_0373_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0373_v0_0_s_ifspec; #ifndef __IDvdGraphBuilder_INTERFACE_DEFINED__ #define __IDvdGraphBuilder_INTERFACE_DEFINED__ /* interface IDvdGraphBuilder */ /* [unique][uuid][local][object] */ EXTERN_C const IID IID_IDvdGraphBuilder; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("FCC152B6-F372-11d0-8E00-00C04FD7C08B") IDvdGraphBuilder : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE GetFiltergraph( /* [out] */ IGraphBuilder **ppGB) = 0; virtual HRESULT STDMETHODCALLTYPE GetDvdInterface( /* [in] */ REFIID riid, /* [out] */ void **ppvIF) = 0; virtual HRESULT STDMETHODCALLTYPE RenderDvdVideoVolume( /* [in] */ LPCWSTR lpcwszPathName, /* [in] */ DWORD dwFlags, /* [out] */ AM_DVD_RENDERSTATUS *pStatus) = 0; }; #else /* C style interface */ typedef struct IDvdGraphBuilderVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IDvdGraphBuilder * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IDvdGraphBuilder * This); ULONG ( STDMETHODCALLTYPE *Release )( IDvdGraphBuilder * This); HRESULT ( STDMETHODCALLTYPE *GetFiltergraph )( IDvdGraphBuilder * This, /* [out] */ IGraphBuilder **ppGB); HRESULT ( STDMETHODCALLTYPE *GetDvdInterface )( IDvdGraphBuilder * This, /* [in] */ REFIID riid, /* [out] */ void **ppvIF); HRESULT ( STDMETHODCALLTYPE *RenderDvdVideoVolume )( IDvdGraphBuilder * This, /* [in] */ LPCWSTR lpcwszPathName, /* [in] */ DWORD dwFlags, /* [out] */ AM_DVD_RENDERSTATUS *pStatus); END_INTERFACE } IDvdGraphBuilderVtbl; interface IDvdGraphBuilder { CONST_VTBL struct IDvdGraphBuilderVtbl *lpVtbl; }; #ifdef COBJMACROS #define IDvdGraphBuilder_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IDvdGraphBuilder_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IDvdGraphBuilder_Release(This) \ (This)->lpVtbl -> Release(This) #define IDvdGraphBuilder_GetFiltergraph(This,ppGB) \ (This)->lpVtbl -> GetFiltergraph(This,ppGB) #define IDvdGraphBuilder_GetDvdInterface(This,riid,ppvIF) \ (This)->lpVtbl -> GetDvdInterface(This,riid,ppvIF) #define IDvdGraphBuilder_RenderDvdVideoVolume(This,lpcwszPathName,dwFlags,pStatus) \ (This)->lpVtbl -> RenderDvdVideoVolume(This,lpcwszPathName,dwFlags,pStatus) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IDvdGraphBuilder_GetFiltergraph_Proxy( IDvdGraphBuilder * This, /* [out] */ IGraphBuilder **ppGB); void __RPC_STUB IDvdGraphBuilder_GetFiltergraph_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdGraphBuilder_GetDvdInterface_Proxy( IDvdGraphBuilder * This, /* [in] */ REFIID riid, /* [out] */ void **ppvIF); void __RPC_STUB IDvdGraphBuilder_GetDvdInterface_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdGraphBuilder_RenderDvdVideoVolume_Proxy( IDvdGraphBuilder * This, /* [in] */ LPCWSTR lpcwszPathName, /* [in] */ DWORD dwFlags, /* [out] */ AM_DVD_RENDERSTATUS *pStatus); void __RPC_STUB IDvdGraphBuilder_RenderDvdVideoVolume_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IDvdGraphBuilder_INTERFACE_DEFINED__ */ #ifndef __IDDrawExclModeVideo_INTERFACE_DEFINED__ #define __IDDrawExclModeVideo_INTERFACE_DEFINED__ /* interface IDDrawExclModeVideo */ /* [unique][uuid][local][object] */ EXTERN_C const IID IID_IDDrawExclModeVideo; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("153ACC21-D83B-11d1-82BF-00A0C9696C8F") IDDrawExclModeVideo : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE SetDDrawObject( /* [in] */ IDirectDraw *pDDrawObject) = 0; virtual HRESULT STDMETHODCALLTYPE GetDDrawObject( /* [out] */ IDirectDraw **ppDDrawObject, /* [out] */ BOOL *pbUsingExternal) = 0; virtual HRESULT STDMETHODCALLTYPE SetDDrawSurface( /* [in] */ IDirectDrawSurface *pDDrawSurface) = 0; virtual HRESULT STDMETHODCALLTYPE GetDDrawSurface( /* [out] */ IDirectDrawSurface **ppDDrawSurface, /* [out] */ BOOL *pbUsingExternal) = 0; virtual HRESULT STDMETHODCALLTYPE SetDrawParameters( /* [in] */ const RECT *prcSource, /* [in] */ const RECT *prcTarget) = 0; virtual HRESULT STDMETHODCALLTYPE GetNativeVideoProps( /* [out] */ DWORD *pdwVideoWidth, /* [out] */ DWORD *pdwVideoHeight, /* [out] */ DWORD *pdwPictAspectRatioX, /* [out] */ DWORD *pdwPictAspectRatioY) = 0; virtual HRESULT STDMETHODCALLTYPE SetCallbackInterface( /* [in] */ IDDrawExclModeVideoCallback *pCallback, /* [in] */ DWORD dwFlags) = 0; }; #else /* C style interface */ typedef struct IDDrawExclModeVideoVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IDDrawExclModeVideo * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IDDrawExclModeVideo * This); ULONG ( STDMETHODCALLTYPE *Release )( IDDrawExclModeVideo * This); HRESULT ( STDMETHODCALLTYPE *SetDDrawObject )( IDDrawExclModeVideo * This, /* [in] */ IDirectDraw *pDDrawObject); HRESULT ( STDMETHODCALLTYPE *GetDDrawObject )( IDDrawExclModeVideo * This, /* [out] */ IDirectDraw **ppDDrawObject, /* [out] */ BOOL *pbUsingExternal); HRESULT ( STDMETHODCALLTYPE *SetDDrawSurface )( IDDrawExclModeVideo * This, /* [in] */ IDirectDrawSurface *pDDrawSurface); HRESULT ( STDMETHODCALLTYPE *GetDDrawSurface )( IDDrawExclModeVideo * This, /* [out] */ IDirectDrawSurface **ppDDrawSurface, /* [out] */ BOOL *pbUsingExternal); HRESULT ( STDMETHODCALLTYPE *SetDrawParameters )( IDDrawExclModeVideo * This, /* [in] */ const RECT *prcSource, /* [in] */ const RECT *prcTarget); HRESULT ( STDMETHODCALLTYPE *GetNativeVideoProps )( IDDrawExclModeVideo * This, /* [out] */ DWORD *pdwVideoWidth, /* [out] */ DWORD *pdwVideoHeight, /* [out] */ DWORD *pdwPictAspectRatioX, /* [out] */ DWORD *pdwPictAspectRatioY); HRESULT ( STDMETHODCALLTYPE *SetCallbackInterface )( IDDrawExclModeVideo * This, /* [in] */ IDDrawExclModeVideoCallback *pCallback, /* [in] */ DWORD dwFlags); END_INTERFACE } IDDrawExclModeVideoVtbl; interface IDDrawExclModeVideo { CONST_VTBL struct IDDrawExclModeVideoVtbl *lpVtbl; }; #ifdef COBJMACROS #define IDDrawExclModeVideo_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IDDrawExclModeVideo_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IDDrawExclModeVideo_Release(This) \ (This)->lpVtbl -> Release(This) #define IDDrawExclModeVideo_SetDDrawObject(This,pDDrawObject) \ (This)->lpVtbl -> SetDDrawObject(This,pDDrawObject) #define IDDrawExclModeVideo_GetDDrawObject(This,ppDDrawObject,pbUsingExternal) \ (This)->lpVtbl -> GetDDrawObject(This,ppDDrawObject,pbUsingExternal) #define IDDrawExclModeVideo_SetDDrawSurface(This,pDDrawSurface) \ (This)->lpVtbl -> SetDDrawSurface(This,pDDrawSurface) #define IDDrawExclModeVideo_GetDDrawSurface(This,ppDDrawSurface,pbUsingExternal) \ (This)->lpVtbl -> GetDDrawSurface(This,ppDDrawSurface,pbUsingExternal) #define IDDrawExclModeVideo_SetDrawParameters(This,prcSource,prcTarget) \ (This)->lpVtbl -> SetDrawParameters(This,prcSource,prcTarget) #define IDDrawExclModeVideo_GetNativeVideoProps(This,pdwVideoWidth,pdwVideoHeight,pdwPictAspectRatioX,pdwPictAspectRatioY) \ (This)->lpVtbl -> GetNativeVideoProps(This,pdwVideoWidth,pdwVideoHeight,pdwPictAspectRatioX,pdwPictAspectRatioY) #define IDDrawExclModeVideo_SetCallbackInterface(This,pCallback,dwFlags) \ (This)->lpVtbl -> SetCallbackInterface(This,pCallback,dwFlags) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IDDrawExclModeVideo_SetDDrawObject_Proxy( IDDrawExclModeVideo * This, /* [in] */ IDirectDraw *pDDrawObject); void __RPC_STUB IDDrawExclModeVideo_SetDDrawObject_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDDrawExclModeVideo_GetDDrawObject_Proxy( IDDrawExclModeVideo * This, /* [out] */ IDirectDraw **ppDDrawObject, /* [out] */ BOOL *pbUsingExternal); void __RPC_STUB IDDrawExclModeVideo_GetDDrawObject_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDDrawExclModeVideo_SetDDrawSurface_Proxy( IDDrawExclModeVideo * This, /* [in] */ IDirectDrawSurface *pDDrawSurface); void __RPC_STUB IDDrawExclModeVideo_SetDDrawSurface_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDDrawExclModeVideo_GetDDrawSurface_Proxy( IDDrawExclModeVideo * This, /* [out] */ IDirectDrawSurface **ppDDrawSurface, /* [out] */ BOOL *pbUsingExternal); void __RPC_STUB IDDrawExclModeVideo_GetDDrawSurface_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDDrawExclModeVideo_SetDrawParameters_Proxy( IDDrawExclModeVideo * This, /* [in] */ const RECT *prcSource, /* [in] */ const RECT *prcTarget); void __RPC_STUB IDDrawExclModeVideo_SetDrawParameters_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDDrawExclModeVideo_GetNativeVideoProps_Proxy( IDDrawExclModeVideo * This, /* [out] */ DWORD *pdwVideoWidth, /* [out] */ DWORD *pdwVideoHeight, /* [out] */ DWORD *pdwPictAspectRatioX, /* [out] */ DWORD *pdwPictAspectRatioY); void __RPC_STUB IDDrawExclModeVideo_GetNativeVideoProps_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDDrawExclModeVideo_SetCallbackInterface_Proxy( IDDrawExclModeVideo * This, /* [in] */ IDDrawExclModeVideoCallback *pCallback, /* [in] */ DWORD dwFlags); void __RPC_STUB IDDrawExclModeVideo_SetCallbackInterface_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IDDrawExclModeVideo_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0375 */ /* [local] */ enum _AM_OVERLAY_NOTIFY_FLAGS { AM_OVERLAY_NOTIFY_VISIBLE_CHANGE = 0x1, AM_OVERLAY_NOTIFY_SOURCE_CHANGE = 0x2, AM_OVERLAY_NOTIFY_DEST_CHANGE = 0x4 } ; extern RPC_IF_HANDLE __MIDL_itf_strmif_0375_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0375_v0_0_s_ifspec; #ifndef __IDDrawExclModeVideoCallback_INTERFACE_DEFINED__ #define __IDDrawExclModeVideoCallback_INTERFACE_DEFINED__ /* interface IDDrawExclModeVideoCallback */ /* [unique][uuid][local][object] */ EXTERN_C const IID IID_IDDrawExclModeVideoCallback; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("913c24a0-20ab-11d2-9038-00a0c9697298") IDDrawExclModeVideoCallback : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE OnUpdateOverlay( /* [in] */ BOOL bBefore, /* [in] */ DWORD dwFlags, /* [in] */ BOOL bOldVisible, /* [in] */ const RECT *prcOldSrc, /* [in] */ const RECT *prcOldDest, /* [in] */ BOOL bNewVisible, /* [in] */ const RECT *prcNewSrc, /* [in] */ const RECT *prcNewDest) = 0; virtual HRESULT STDMETHODCALLTYPE OnUpdateColorKey( /* [in] */ const COLORKEY *pKey, /* [in] */ DWORD dwColor) = 0; virtual HRESULT STDMETHODCALLTYPE OnUpdateSize( /* [in] */ DWORD dwWidth, /* [in] */ DWORD dwHeight, /* [in] */ DWORD dwARWidth, /* [in] */ DWORD dwARHeight) = 0; }; #else /* C style interface */ typedef struct IDDrawExclModeVideoCallbackVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IDDrawExclModeVideoCallback * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IDDrawExclModeVideoCallback * This); ULONG ( STDMETHODCALLTYPE *Release )( IDDrawExclModeVideoCallback * This); HRESULT ( STDMETHODCALLTYPE *OnUpdateOverlay )( IDDrawExclModeVideoCallback * This, /* [in] */ BOOL bBefore, /* [in] */ DWORD dwFlags, /* [in] */ BOOL bOldVisible, /* [in] */ const RECT *prcOldSrc, /* [in] */ const RECT *prcOldDest, /* [in] */ BOOL bNewVisible, /* [in] */ const RECT *prcNewSrc, /* [in] */ const RECT *prcNewDest); HRESULT ( STDMETHODCALLTYPE *OnUpdateColorKey )( IDDrawExclModeVideoCallback * This, /* [in] */ const COLORKEY *pKey, /* [in] */ DWORD dwColor); HRESULT ( STDMETHODCALLTYPE *OnUpdateSize )( IDDrawExclModeVideoCallback * This, /* [in] */ DWORD dwWidth, /* [in] */ DWORD dwHeight, /* [in] */ DWORD dwARWidth, /* [in] */ DWORD dwARHeight); END_INTERFACE } IDDrawExclModeVideoCallbackVtbl; interface IDDrawExclModeVideoCallback { CONST_VTBL struct IDDrawExclModeVideoCallbackVtbl *lpVtbl; }; #ifdef COBJMACROS #define IDDrawExclModeVideoCallback_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IDDrawExclModeVideoCallback_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IDDrawExclModeVideoCallback_Release(This) \ (This)->lpVtbl -> Release(This) #define IDDrawExclModeVideoCallback_OnUpdateOverlay(This,bBefore,dwFlags,bOldVisible,prcOldSrc,prcOldDest,bNewVisible,prcNewSrc,prcNewDest) \ (This)->lpVtbl -> OnUpdateOverlay(This,bBefore,dwFlags,bOldVisible,prcOldSrc,prcOldDest,bNewVisible,prcNewSrc,prcNewDest) #define IDDrawExclModeVideoCallback_OnUpdateColorKey(This,pKey,dwColor) \ (This)->lpVtbl -> OnUpdateColorKey(This,pKey,dwColor) #define IDDrawExclModeVideoCallback_OnUpdateSize(This,dwWidth,dwHeight,dwARWidth,dwARHeight) \ (This)->lpVtbl -> OnUpdateSize(This,dwWidth,dwHeight,dwARWidth,dwARHeight) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IDDrawExclModeVideoCallback_OnUpdateOverlay_Proxy( IDDrawExclModeVideoCallback * This, /* [in] */ BOOL bBefore, /* [in] */ DWORD dwFlags, /* [in] */ BOOL bOldVisible, /* [in] */ const RECT *prcOldSrc, /* [in] */ const RECT *prcOldDest, /* [in] */ BOOL bNewVisible, /* [in] */ const RECT *prcNewSrc, /* [in] */ const RECT *prcNewDest); void __RPC_STUB IDDrawExclModeVideoCallback_OnUpdateOverlay_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDDrawExclModeVideoCallback_OnUpdateColorKey_Proxy( IDDrawExclModeVideoCallback * This, /* [in] */ const COLORKEY *pKey, /* [in] */ DWORD dwColor); void __RPC_STUB IDDrawExclModeVideoCallback_OnUpdateColorKey_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDDrawExclModeVideoCallback_OnUpdateSize_Proxy( IDDrawExclModeVideoCallback * This, /* [in] */ DWORD dwWidth, /* [in] */ DWORD dwHeight, /* [in] */ DWORD dwARWidth, /* [in] */ DWORD dwARHeight); void __RPC_STUB IDDrawExclModeVideoCallback_OnUpdateSize_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IDDrawExclModeVideoCallback_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0376 */ /* [local] */ extern RPC_IF_HANDLE __MIDL_itf_strmif_0376_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0376_v0_0_s_ifspec; #ifndef __IPinConnection_INTERFACE_DEFINED__ #define __IPinConnection_INTERFACE_DEFINED__ /* interface IPinConnection */ /* [unique][uuid][object][local] */ EXTERN_C const IID IID_IPinConnection; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("4a9a62d3-27d4-403d-91e9-89f540e55534") IPinConnection : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE DynamicQueryAccept( /* [in] */ const AM_MEDIA_TYPE *pmt) = 0; virtual HRESULT STDMETHODCALLTYPE NotifyEndOfStream( /* [in] */ HANDLE hNotifyEvent) = 0; virtual HRESULT STDMETHODCALLTYPE IsEndPin( void) = 0; virtual HRESULT STDMETHODCALLTYPE DynamicDisconnect( void) = 0; }; #else /* C style interface */ typedef struct IPinConnectionVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IPinConnection * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IPinConnection * This); ULONG ( STDMETHODCALLTYPE *Release )( IPinConnection * This); HRESULT ( STDMETHODCALLTYPE *DynamicQueryAccept )( IPinConnection * This, /* [in] */ const AM_MEDIA_TYPE *pmt); HRESULT ( STDMETHODCALLTYPE *NotifyEndOfStream )( IPinConnection * This, /* [in] */ HANDLE hNotifyEvent); HRESULT ( STDMETHODCALLTYPE *IsEndPin )( IPinConnection * This); HRESULT ( STDMETHODCALLTYPE *DynamicDisconnect )( IPinConnection * This); END_INTERFACE } IPinConnectionVtbl; interface IPinConnection { CONST_VTBL struct IPinConnectionVtbl *lpVtbl; }; #ifdef COBJMACROS #define IPinConnection_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IPinConnection_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IPinConnection_Release(This) \ (This)->lpVtbl -> Release(This) #define IPinConnection_DynamicQueryAccept(This,pmt) \ (This)->lpVtbl -> DynamicQueryAccept(This,pmt) #define IPinConnection_NotifyEndOfStream(This,hNotifyEvent) \ (This)->lpVtbl -> NotifyEndOfStream(This,hNotifyEvent) #define IPinConnection_IsEndPin(This) \ (This)->lpVtbl -> IsEndPin(This) #define IPinConnection_DynamicDisconnect(This) \ (This)->lpVtbl -> DynamicDisconnect(This) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IPinConnection_DynamicQueryAccept_Proxy( IPinConnection * This, /* [in] */ const AM_MEDIA_TYPE *pmt); void __RPC_STUB IPinConnection_DynamicQueryAccept_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IPinConnection_NotifyEndOfStream_Proxy( IPinConnection * This, /* [in] */ HANDLE hNotifyEvent); void __RPC_STUB IPinConnection_NotifyEndOfStream_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IPinConnection_IsEndPin_Proxy( IPinConnection * This); void __RPC_STUB IPinConnection_IsEndPin_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IPinConnection_DynamicDisconnect_Proxy( IPinConnection * This); void __RPC_STUB IPinConnection_DynamicDisconnect_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IPinConnection_INTERFACE_DEFINED__ */ #ifndef __IPinFlowControl_INTERFACE_DEFINED__ #define __IPinFlowControl_INTERFACE_DEFINED__ /* interface IPinFlowControl */ /* [unique][uuid][object][local] */ EXTERN_C const IID IID_IPinFlowControl; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("c56e9858-dbf3-4f6b-8119-384af2060deb") IPinFlowControl : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE Block( /* [in] */ DWORD dwBlockFlags, /* [in] */ HANDLE hEvent) = 0; }; #else /* C style interface */ typedef struct IPinFlowControlVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IPinFlowControl * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IPinFlowControl * This); ULONG ( STDMETHODCALLTYPE *Release )( IPinFlowControl * This); HRESULT ( STDMETHODCALLTYPE *Block )( IPinFlowControl * This, /* [in] */ DWORD dwBlockFlags, /* [in] */ HANDLE hEvent); END_INTERFACE } IPinFlowControlVtbl; interface IPinFlowControl { CONST_VTBL struct IPinFlowControlVtbl *lpVtbl; }; #ifdef COBJMACROS #define IPinFlowControl_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IPinFlowControl_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IPinFlowControl_Release(This) \ (This)->lpVtbl -> Release(This) #define IPinFlowControl_Block(This,dwBlockFlags,hEvent) \ (This)->lpVtbl -> Block(This,dwBlockFlags,hEvent) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IPinFlowControl_Block_Proxy( IPinFlowControl * This, /* [in] */ DWORD dwBlockFlags, /* [in] */ HANDLE hEvent); void __RPC_STUB IPinFlowControl_Block_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IPinFlowControl_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0378 */ /* [local] */ enum _AM_PIN_FLOW_CONTROL_BLOCK_FLAGS { AM_PIN_FLOW_CONTROL_BLOCK = 0x1 } ; typedef enum _AM_GRAPH_CONFIG_RECONNECT_FLAGS { AM_GRAPH_CONFIG_RECONNECT_DIRECTCONNECT = 0x1, AM_GRAPH_CONFIG_RECONNECT_CACHE_REMOVED_FILTERS = 0x2, AM_GRAPH_CONFIG_RECONNECT_USE_ONLY_CACHED_FILTERS = 0x4 } AM_GRAPH_CONFIG_RECONNECT_FLAGS; enum _REM_FILTER_FLAGS { REMFILTERF_LEAVECONNECTED = 0x1 } ; typedef enum _AM_FILTER_FLAGS { AM_FILTER_FLAGS_REMOVABLE = 0x1 } AM_FILTER_FLAGS; extern RPC_IF_HANDLE __MIDL_itf_strmif_0378_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0378_v0_0_s_ifspec; #ifndef __IGraphConfig_INTERFACE_DEFINED__ #define __IGraphConfig_INTERFACE_DEFINED__ /* interface IGraphConfig */ /* [unique][uuid][object][local] */ EXTERN_C const IID IID_IGraphConfig; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("03A1EB8E-32BF-4245-8502-114D08A9CB88") IGraphConfig : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE Reconnect( /* [in] */ IPin *pOutputPin, /* [in] */ IPin *pInputPin, /* [in] */ const AM_MEDIA_TYPE *pmtFirstConnection, /* [in] */ IBaseFilter *pUsingFilter, /* [in] */ HANDLE hAbortEvent, /* [in] */ DWORD dwFlags) = 0; virtual HRESULT STDMETHODCALLTYPE Reconfigure( /* [in] */ IGraphConfigCallback *pCallback, /* [in] */ PVOID pvContext, /* [in] */ DWORD dwFlags, /* [in] */ HANDLE hAbortEvent) = 0; virtual HRESULT STDMETHODCALLTYPE AddFilterToCache( /* [in] */ IBaseFilter *pFilter) = 0; virtual HRESULT STDMETHODCALLTYPE EnumCacheFilter( /* [out] */ IEnumFilters **pEnum) = 0; virtual HRESULT STDMETHODCALLTYPE RemoveFilterFromCache( /* [in] */ IBaseFilter *pFilter) = 0; virtual HRESULT STDMETHODCALLTYPE GetStartTime( /* [out] */ REFERENCE_TIME *prtStart) = 0; virtual HRESULT STDMETHODCALLTYPE PushThroughData( /* [in] */ IPin *pOutputPin, /* [in] */ IPinConnection *pConnection, /* [in] */ HANDLE hEventAbort) = 0; virtual HRESULT STDMETHODCALLTYPE SetFilterFlags( /* [in] */ IBaseFilter *pFilter, /* [in] */ DWORD dwFlags) = 0; virtual HRESULT STDMETHODCALLTYPE GetFilterFlags( /* [in] */ IBaseFilter *pFilter, /* [out] */ DWORD *pdwFlags) = 0; virtual HRESULT STDMETHODCALLTYPE RemoveFilterEx( /* [in] */ IBaseFilter *pFilter, DWORD Flags) = 0; }; #else /* C style interface */ typedef struct IGraphConfigVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IGraphConfig * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IGraphConfig * This); ULONG ( STDMETHODCALLTYPE *Release )( IGraphConfig * This); HRESULT ( STDMETHODCALLTYPE *Reconnect )( IGraphConfig * This, /* [in] */ IPin *pOutputPin, /* [in] */ IPin *pInputPin, /* [in] */ const AM_MEDIA_TYPE *pmtFirstConnection, /* [in] */ IBaseFilter *pUsingFilter, /* [in] */ HANDLE hAbortEvent, /* [in] */ DWORD dwFlags); HRESULT ( STDMETHODCALLTYPE *Reconfigure )( IGraphConfig * This, /* [in] */ IGraphConfigCallback *pCallback, /* [in] */ PVOID pvContext, /* [in] */ DWORD dwFlags, /* [in] */ HANDLE hAbortEvent); HRESULT ( STDMETHODCALLTYPE *AddFilterToCache )( IGraphConfig * This, /* [in] */ IBaseFilter *pFilter); HRESULT ( STDMETHODCALLTYPE *EnumCacheFilter )( IGraphConfig * This, /* [out] */ IEnumFilters **pEnum); HRESULT ( STDMETHODCALLTYPE *RemoveFilterFromCache )( IGraphConfig * This, /* [in] */ IBaseFilter *pFilter); HRESULT ( STDMETHODCALLTYPE *GetStartTime )( IGraphConfig * This, /* [out] */ REFERENCE_TIME *prtStart); HRESULT ( STDMETHODCALLTYPE *PushThroughData )( IGraphConfig * This, /* [in] */ IPin *pOutputPin, /* [in] */ IPinConnection *pConnection, /* [in] */ HANDLE hEventAbort); HRESULT ( STDMETHODCALLTYPE *SetFilterFlags )( IGraphConfig * This, /* [in] */ IBaseFilter *pFilter, /* [in] */ DWORD dwFlags); HRESULT ( STDMETHODCALLTYPE *GetFilterFlags )( IGraphConfig * This, /* [in] */ IBaseFilter *pFilter, /* [out] */ DWORD *pdwFlags); HRESULT ( STDMETHODCALLTYPE *RemoveFilterEx )( IGraphConfig * This, /* [in] */ IBaseFilter *pFilter, DWORD Flags); END_INTERFACE } IGraphConfigVtbl; interface IGraphConfig { CONST_VTBL struct IGraphConfigVtbl *lpVtbl; }; #ifdef COBJMACROS #define IGraphConfig_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IGraphConfig_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IGraphConfig_Release(This) \ (This)->lpVtbl -> Release(This) #define IGraphConfig_Reconnect(This,pOutputPin,pInputPin,pmtFirstConnection,pUsingFilter,hAbortEvent,dwFlags) \ (This)->lpVtbl -> Reconnect(This,pOutputPin,pInputPin,pmtFirstConnection,pUsingFilter,hAbortEvent,dwFlags) #define IGraphConfig_Reconfigure(This,pCallback,pvContext,dwFlags,hAbortEvent) \ (This)->lpVtbl -> Reconfigure(This,pCallback,pvContext,dwFlags,hAbortEvent) #define IGraphConfig_AddFilterToCache(This,pFilter) \ (This)->lpVtbl -> AddFilterToCache(This,pFilter) #define IGraphConfig_EnumCacheFilter(This,pEnum) \ (This)->lpVtbl -> EnumCacheFilter(This,pEnum) #define IGraphConfig_RemoveFilterFromCache(This,pFilter) \ (This)->lpVtbl -> RemoveFilterFromCache(This,pFilter) #define IGraphConfig_GetStartTime(This,prtStart) \ (This)->lpVtbl -> GetStartTime(This,prtStart) #define IGraphConfig_PushThroughData(This,pOutputPin,pConnection,hEventAbort) \ (This)->lpVtbl -> PushThroughData(This,pOutputPin,pConnection,hEventAbort) #define IGraphConfig_SetFilterFlags(This,pFilter,dwFlags) \ (This)->lpVtbl -> SetFilterFlags(This,pFilter,dwFlags) #define IGraphConfig_GetFilterFlags(This,pFilter,pdwFlags) \ (This)->lpVtbl -> GetFilterFlags(This,pFilter,pdwFlags) #define IGraphConfig_RemoveFilterEx(This,pFilter,Flags) \ (This)->lpVtbl -> RemoveFilterEx(This,pFilter,Flags) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IGraphConfig_Reconnect_Proxy( IGraphConfig * This, /* [in] */ IPin *pOutputPin, /* [in] */ IPin *pInputPin, /* [in] */ const AM_MEDIA_TYPE *pmtFirstConnection, /* [in] */ IBaseFilter *pUsingFilter, /* [in] */ HANDLE hAbortEvent, /* [in] */ DWORD dwFlags); void __RPC_STUB IGraphConfig_Reconnect_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IGraphConfig_Reconfigure_Proxy( IGraphConfig * This, /* [in] */ IGraphConfigCallback *pCallback, /* [in] */ PVOID pvContext, /* [in] */ DWORD dwFlags, /* [in] */ HANDLE hAbortEvent); void __RPC_STUB IGraphConfig_Reconfigure_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IGraphConfig_AddFilterToCache_Proxy( IGraphConfig * This, /* [in] */ IBaseFilter *pFilter); void __RPC_STUB IGraphConfig_AddFilterToCache_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IGraphConfig_EnumCacheFilter_Proxy( IGraphConfig * This, /* [out] */ IEnumFilters **pEnum); void __RPC_STUB IGraphConfig_EnumCacheFilter_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IGraphConfig_RemoveFilterFromCache_Proxy( IGraphConfig * This, /* [in] */ IBaseFilter *pFilter); void __RPC_STUB IGraphConfig_RemoveFilterFromCache_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IGraphConfig_GetStartTime_Proxy( IGraphConfig * This, /* [out] */ REFERENCE_TIME *prtStart); void __RPC_STUB IGraphConfig_GetStartTime_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IGraphConfig_PushThroughData_Proxy( IGraphConfig * This, /* [in] */ IPin *pOutputPin, /* [in] */ IPinConnection *pConnection, /* [in] */ HANDLE hEventAbort); void __RPC_STUB IGraphConfig_PushThroughData_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IGraphConfig_SetFilterFlags_Proxy( IGraphConfig * This, /* [in] */ IBaseFilter *pFilter, /* [in] */ DWORD dwFlags); void __RPC_STUB IGraphConfig_SetFilterFlags_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IGraphConfig_GetFilterFlags_Proxy( IGraphConfig * This, /* [in] */ IBaseFilter *pFilter, /* [out] */ DWORD *pdwFlags); void __RPC_STUB IGraphConfig_GetFilterFlags_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IGraphConfig_RemoveFilterEx_Proxy( IGraphConfig * This, /* [in] */ IBaseFilter *pFilter, DWORD Flags); void __RPC_STUB IGraphConfig_RemoveFilterEx_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IGraphConfig_INTERFACE_DEFINED__ */ #ifndef __IGraphConfigCallback_INTERFACE_DEFINED__ #define __IGraphConfigCallback_INTERFACE_DEFINED__ /* interface IGraphConfigCallback */ /* [unique][uuid][object][local] */ EXTERN_C const IID IID_IGraphConfigCallback; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("ade0fd60-d19d-11d2-abf6-00a0c905f375") IGraphConfigCallback : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE Reconfigure( PVOID pvContext, DWORD dwFlags) = 0; }; #else /* C style interface */ typedef struct IGraphConfigCallbackVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IGraphConfigCallback * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IGraphConfigCallback * This); ULONG ( STDMETHODCALLTYPE *Release )( IGraphConfigCallback * This); HRESULT ( STDMETHODCALLTYPE *Reconfigure )( IGraphConfigCallback * This, PVOID pvContext, DWORD dwFlags); END_INTERFACE } IGraphConfigCallbackVtbl; interface IGraphConfigCallback { CONST_VTBL struct IGraphConfigCallbackVtbl *lpVtbl; }; #ifdef COBJMACROS #define IGraphConfigCallback_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IGraphConfigCallback_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IGraphConfigCallback_Release(This) \ (This)->lpVtbl -> Release(This) #define IGraphConfigCallback_Reconfigure(This,pvContext,dwFlags) \ (This)->lpVtbl -> Reconfigure(This,pvContext,dwFlags) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IGraphConfigCallback_Reconfigure_Proxy( IGraphConfigCallback * This, PVOID pvContext, DWORD dwFlags); void __RPC_STUB IGraphConfigCallback_Reconfigure_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IGraphConfigCallback_INTERFACE_DEFINED__ */ #ifndef __IFilterChain_INTERFACE_DEFINED__ #define __IFilterChain_INTERFACE_DEFINED__ /* interface IFilterChain */ /* [unique][uuid][object][local] */ EXTERN_C const IID IID_IFilterChain; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("DCFBDCF6-0DC2-45f5-9AB2-7C330EA09C29") IFilterChain : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE StartChain( /* [in] */ IBaseFilter *pStartFilter, /* [in] */ IBaseFilter *pEndFilter) = 0; virtual HRESULT STDMETHODCALLTYPE PauseChain( /* [in] */ IBaseFilter *pStartFilter, /* [in] */ IBaseFilter *pEndFilter) = 0; virtual HRESULT STDMETHODCALLTYPE StopChain( /* [in] */ IBaseFilter *pStartFilter, /* [in] */ IBaseFilter *pEndFilter) = 0; virtual HRESULT STDMETHODCALLTYPE RemoveChain( /* [in] */ IBaseFilter *pStartFilter, /* [in] */ IBaseFilter *pEndFilter) = 0; }; #else /* C style interface */ typedef struct IFilterChainVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IFilterChain * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IFilterChain * This); ULONG ( STDMETHODCALLTYPE *Release )( IFilterChain * This); HRESULT ( STDMETHODCALLTYPE *StartChain )( IFilterChain * This, /* [in] */ IBaseFilter *pStartFilter, /* [in] */ IBaseFilter *pEndFilter); HRESULT ( STDMETHODCALLTYPE *PauseChain )( IFilterChain * This, /* [in] */ IBaseFilter *pStartFilter, /* [in] */ IBaseFilter *pEndFilter); HRESULT ( STDMETHODCALLTYPE *StopChain )( IFilterChain * This, /* [in] */ IBaseFilter *pStartFilter, /* [in] */ IBaseFilter *pEndFilter); HRESULT ( STDMETHODCALLTYPE *RemoveChain )( IFilterChain * This, /* [in] */ IBaseFilter *pStartFilter, /* [in] */ IBaseFilter *pEndFilter); END_INTERFACE } IFilterChainVtbl; interface IFilterChain { CONST_VTBL struct IFilterChainVtbl *lpVtbl; }; #ifdef COBJMACROS #define IFilterChain_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IFilterChain_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IFilterChain_Release(This) \ (This)->lpVtbl -> Release(This) #define IFilterChain_StartChain(This,pStartFilter,pEndFilter) \ (This)->lpVtbl -> StartChain(This,pStartFilter,pEndFilter) #define IFilterChain_PauseChain(This,pStartFilter,pEndFilter) \ (This)->lpVtbl -> PauseChain(This,pStartFilter,pEndFilter) #define IFilterChain_StopChain(This,pStartFilter,pEndFilter) \ (This)->lpVtbl -> StopChain(This,pStartFilter,pEndFilter) #define IFilterChain_RemoveChain(This,pStartFilter,pEndFilter) \ (This)->lpVtbl -> RemoveChain(This,pStartFilter,pEndFilter) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IFilterChain_StartChain_Proxy( IFilterChain * This, /* [in] */ IBaseFilter *pStartFilter, /* [in] */ IBaseFilter *pEndFilter); void __RPC_STUB IFilterChain_StartChain_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IFilterChain_PauseChain_Proxy( IFilterChain * This, /* [in] */ IBaseFilter *pStartFilter, /* [in] */ IBaseFilter *pEndFilter); void __RPC_STUB IFilterChain_PauseChain_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IFilterChain_StopChain_Proxy( IFilterChain * This, /* [in] */ IBaseFilter *pStartFilter, /* [in] */ IBaseFilter *pEndFilter); void __RPC_STUB IFilterChain_StopChain_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IFilterChain_RemoveChain_Proxy( IFilterChain * This, /* [in] */ IBaseFilter *pStartFilter, /* [in] */ IBaseFilter *pEndFilter); void __RPC_STUB IFilterChain_RemoveChain_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IFilterChain_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0381 */ /* [local] */ // Restore the previous setting for C4201 compiler warning #pragma warning(default:4201) #if 0 typedef DWORD *LPDIRECTDRAW7; typedef DWORD *LPDIRECTDRAWSURFACE7; typedef DWORD *LPDDPIXELFORMAT; typedef DWORD *LPBITMAPINFOHEADER; typedef /* [public][public][public][public][public][public] */ struct __MIDL___MIDL_itf_strmif_0381_0001 { DWORD dw1; DWORD dw2; } DDCOLORKEY; typedef DDCOLORKEY *LPDDCOLORKEY; #endif #include typedef /* [public] */ enum __MIDL___MIDL_itf_strmif_0381_0002 { VMRSample_SyncPoint = 0x1, VMRSample_Preroll = 0x2, VMRSample_Discontinuity = 0x4, VMRSample_TimeValid = 0x8 } VMRPresentationFlags; typedef struct tagVMRPRESENTATIONINFO { DWORD dwFlags; LPDIRECTDRAWSURFACE7 lpSurf; REFERENCE_TIME rtStart; REFERENCE_TIME rtEnd; SIZE szAspectRatio; RECT rcSrc; RECT rcDst; DWORD dwTypeSpecificFlags; DWORD dwInterlaceFlags; } VMRPRESENTATIONINFO; extern RPC_IF_HANDLE __MIDL_itf_strmif_0381_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0381_v0_0_s_ifspec; #ifndef __IVMRImagePresenter_INTERFACE_DEFINED__ #define __IVMRImagePresenter_INTERFACE_DEFINED__ /* interface IVMRImagePresenter */ /* [unique][helpstring][uuid][local][object][local] */ EXTERN_C const IID IID_IVMRImagePresenter; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("CE704FE7-E71E-41fb-BAA2-C4403E1182F5") IVMRImagePresenter : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE StartPresenting( /* [in] */ DWORD_PTR dwUserID) = 0; virtual HRESULT STDMETHODCALLTYPE StopPresenting( /* [in] */ DWORD_PTR dwUserID) = 0; virtual HRESULT STDMETHODCALLTYPE PresentImage( /* [in] */ DWORD_PTR dwUserID, /* [in] */ VMRPRESENTATIONINFO *lpPresInfo) = 0; }; #else /* C style interface */ typedef struct IVMRImagePresenterVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IVMRImagePresenter * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IVMRImagePresenter * This); ULONG ( STDMETHODCALLTYPE *Release )( IVMRImagePresenter * This); HRESULT ( STDMETHODCALLTYPE *StartPresenting )( IVMRImagePresenter * This, /* [in] */ DWORD_PTR dwUserID); HRESULT ( STDMETHODCALLTYPE *StopPresenting )( IVMRImagePresenter * This, /* [in] */ DWORD_PTR dwUserID); HRESULT ( STDMETHODCALLTYPE *PresentImage )( IVMRImagePresenter * This, /* [in] */ DWORD_PTR dwUserID, /* [in] */ VMRPRESENTATIONINFO *lpPresInfo); END_INTERFACE } IVMRImagePresenterVtbl; interface IVMRImagePresenter { CONST_VTBL struct IVMRImagePresenterVtbl *lpVtbl; }; #ifdef COBJMACROS #define IVMRImagePresenter_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IVMRImagePresenter_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IVMRImagePresenter_Release(This) \ (This)->lpVtbl -> Release(This) #define IVMRImagePresenter_StartPresenting(This,dwUserID) \ (This)->lpVtbl -> StartPresenting(This,dwUserID) #define IVMRImagePresenter_StopPresenting(This,dwUserID) \ (This)->lpVtbl -> StopPresenting(This,dwUserID) #define IVMRImagePresenter_PresentImage(This,dwUserID,lpPresInfo) \ (This)->lpVtbl -> PresentImage(This,dwUserID,lpPresInfo) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IVMRImagePresenter_StartPresenting_Proxy( IVMRImagePresenter * This, /* [in] */ DWORD_PTR dwUserID); void __RPC_STUB IVMRImagePresenter_StartPresenting_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRImagePresenter_StopPresenting_Proxy( IVMRImagePresenter * This, /* [in] */ DWORD_PTR dwUserID); void __RPC_STUB IVMRImagePresenter_StopPresenting_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRImagePresenter_PresentImage_Proxy( IVMRImagePresenter * This, /* [in] */ DWORD_PTR dwUserID, /* [in] */ VMRPRESENTATIONINFO *lpPresInfo); void __RPC_STUB IVMRImagePresenter_PresentImage_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IVMRImagePresenter_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0382 */ /* [local] */ typedef /* [public] */ enum __MIDL___MIDL_itf_strmif_0382_0001 { AMAP_PIXELFORMAT_VALID = 0x1, AMAP_3D_TARGET = 0x2, AMAP_ALLOW_SYSMEM = 0x4, AMAP_FORCE_SYSMEM = 0x8, AMAP_DIRECTED_FLIP = 0x10, AMAP_DXVA_TARGET = 0x20 } VMRSurfaceAllocationFlags; typedef struct tagVMRALLOCATIONINFO { DWORD dwFlags; LPBITMAPINFOHEADER lpHdr; LPDDPIXELFORMAT lpPixFmt; SIZE szAspectRatio; DWORD dwMinBuffers; DWORD dwMaxBuffers; DWORD dwInterlaceFlags; SIZE szNativeSize; } VMRALLOCATIONINFO; extern RPC_IF_HANDLE __MIDL_itf_strmif_0382_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0382_v0_0_s_ifspec; #ifndef __IVMRSurfaceAllocator_INTERFACE_DEFINED__ #define __IVMRSurfaceAllocator_INTERFACE_DEFINED__ /* interface IVMRSurfaceAllocator */ /* [unique][helpstring][uuid][local][object][local] */ EXTERN_C const IID IID_IVMRSurfaceAllocator; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("31ce832e-4484-458b-8cca-f4d7e3db0b52") IVMRSurfaceAllocator : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE AllocateSurface( /* [in] */ DWORD_PTR dwUserID, /* [in] */ VMRALLOCATIONINFO *lpAllocInfo, /* [out][in] */ DWORD *lpdwActualBuffers, /* [out] */ LPDIRECTDRAWSURFACE7 *lplpSurface) = 0; virtual HRESULT STDMETHODCALLTYPE FreeSurface( /* [in] */ DWORD_PTR dwID) = 0; virtual HRESULT STDMETHODCALLTYPE PrepareSurface( /* [in] */ DWORD_PTR dwUserID, /* [in] */ LPDIRECTDRAWSURFACE7 lpSurface, /* [in] */ DWORD dwSurfaceFlags) = 0; virtual HRESULT STDMETHODCALLTYPE AdviseNotify( /* [in] */ IVMRSurfaceAllocatorNotify *lpIVMRSurfAllocNotify) = 0; }; #else /* C style interface */ typedef struct IVMRSurfaceAllocatorVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IVMRSurfaceAllocator * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IVMRSurfaceAllocator * This); ULONG ( STDMETHODCALLTYPE *Release )( IVMRSurfaceAllocator * This); HRESULT ( STDMETHODCALLTYPE *AllocateSurface )( IVMRSurfaceAllocator * This, /* [in] */ DWORD_PTR dwUserID, /* [in] */ VMRALLOCATIONINFO *lpAllocInfo, /* [out][in] */ DWORD *lpdwActualBuffers, /* [out] */ LPDIRECTDRAWSURFACE7 *lplpSurface); HRESULT ( STDMETHODCALLTYPE *FreeSurface )( IVMRSurfaceAllocator * This, /* [in] */ DWORD_PTR dwID); HRESULT ( STDMETHODCALLTYPE *PrepareSurface )( IVMRSurfaceAllocator * This, /* [in] */ DWORD_PTR dwUserID, /* [in] */ LPDIRECTDRAWSURFACE7 lpSurface, /* [in] */ DWORD dwSurfaceFlags); HRESULT ( STDMETHODCALLTYPE *AdviseNotify )( IVMRSurfaceAllocator * This, /* [in] */ IVMRSurfaceAllocatorNotify *lpIVMRSurfAllocNotify); END_INTERFACE } IVMRSurfaceAllocatorVtbl; interface IVMRSurfaceAllocator { CONST_VTBL struct IVMRSurfaceAllocatorVtbl *lpVtbl; }; #ifdef COBJMACROS #define IVMRSurfaceAllocator_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IVMRSurfaceAllocator_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IVMRSurfaceAllocator_Release(This) \ (This)->lpVtbl -> Release(This) #define IVMRSurfaceAllocator_AllocateSurface(This,dwUserID,lpAllocInfo,lpdwActualBuffers,lplpSurface) \ (This)->lpVtbl -> AllocateSurface(This,dwUserID,lpAllocInfo,lpdwActualBuffers,lplpSurface) #define IVMRSurfaceAllocator_FreeSurface(This,dwID) \ (This)->lpVtbl -> FreeSurface(This,dwID) #define IVMRSurfaceAllocator_PrepareSurface(This,dwUserID,lpSurface,dwSurfaceFlags) \ (This)->lpVtbl -> PrepareSurface(This,dwUserID,lpSurface,dwSurfaceFlags) #define IVMRSurfaceAllocator_AdviseNotify(This,lpIVMRSurfAllocNotify) \ (This)->lpVtbl -> AdviseNotify(This,lpIVMRSurfAllocNotify) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IVMRSurfaceAllocator_AllocateSurface_Proxy( IVMRSurfaceAllocator * This, /* [in] */ DWORD_PTR dwUserID, /* [in] */ VMRALLOCATIONINFO *lpAllocInfo, /* [out][in] */ DWORD *lpdwActualBuffers, /* [out] */ LPDIRECTDRAWSURFACE7 *lplpSurface); void __RPC_STUB IVMRSurfaceAllocator_AllocateSurface_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRSurfaceAllocator_FreeSurface_Proxy( IVMRSurfaceAllocator * This, /* [in] */ DWORD_PTR dwID); void __RPC_STUB IVMRSurfaceAllocator_FreeSurface_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRSurfaceAllocator_PrepareSurface_Proxy( IVMRSurfaceAllocator * This, /* [in] */ DWORD_PTR dwUserID, /* [in] */ LPDIRECTDRAWSURFACE7 lpSurface, /* [in] */ DWORD dwSurfaceFlags); void __RPC_STUB IVMRSurfaceAllocator_PrepareSurface_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRSurfaceAllocator_AdviseNotify_Proxy( IVMRSurfaceAllocator * This, /* [in] */ IVMRSurfaceAllocatorNotify *lpIVMRSurfAllocNotify); void __RPC_STUB IVMRSurfaceAllocator_AdviseNotify_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IVMRSurfaceAllocator_INTERFACE_DEFINED__ */ #ifndef __IVMRSurfaceAllocatorNotify_INTERFACE_DEFINED__ #define __IVMRSurfaceAllocatorNotify_INTERFACE_DEFINED__ /* interface IVMRSurfaceAllocatorNotify */ /* [unique][helpstring][uuid][local][object][local] */ EXTERN_C const IID IID_IVMRSurfaceAllocatorNotify; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("aada05a8-5a4e-4729-af0b-cea27aed51e2") IVMRSurfaceAllocatorNotify : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE AdviseSurfaceAllocator( /* [in] */ DWORD_PTR dwUserID, /* [in] */ IVMRSurfaceAllocator *lpIVRMSurfaceAllocator) = 0; virtual HRESULT STDMETHODCALLTYPE SetDDrawDevice( /* [in] */ LPDIRECTDRAW7 lpDDrawDevice, /* [in] */ HMONITOR hMonitor) = 0; virtual HRESULT STDMETHODCALLTYPE ChangeDDrawDevice( /* [in] */ LPDIRECTDRAW7 lpDDrawDevice, /* [in] */ HMONITOR hMonitor) = 0; virtual HRESULT STDMETHODCALLTYPE RestoreDDrawSurfaces( void) = 0; virtual HRESULT STDMETHODCALLTYPE NotifyEvent( /* [in] */ LONG EventCode, /* [in] */ LONG_PTR Param1, /* [in] */ LONG_PTR Param2) = 0; virtual HRESULT STDMETHODCALLTYPE SetBorderColor( /* [in] */ COLORREF clrBorder) = 0; }; #else /* C style interface */ typedef struct IVMRSurfaceAllocatorNotifyVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IVMRSurfaceAllocatorNotify * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IVMRSurfaceAllocatorNotify * This); ULONG ( STDMETHODCALLTYPE *Release )( IVMRSurfaceAllocatorNotify * This); HRESULT ( STDMETHODCALLTYPE *AdviseSurfaceAllocator )( IVMRSurfaceAllocatorNotify * This, /* [in] */ DWORD_PTR dwUserID, /* [in] */ IVMRSurfaceAllocator *lpIVRMSurfaceAllocator); HRESULT ( STDMETHODCALLTYPE *SetDDrawDevice )( IVMRSurfaceAllocatorNotify * This, /* [in] */ LPDIRECTDRAW7 lpDDrawDevice, /* [in] */ HMONITOR hMonitor); HRESULT ( STDMETHODCALLTYPE *ChangeDDrawDevice )( IVMRSurfaceAllocatorNotify * This, /* [in] */ LPDIRECTDRAW7 lpDDrawDevice, /* [in] */ HMONITOR hMonitor); HRESULT ( STDMETHODCALLTYPE *RestoreDDrawSurfaces )( IVMRSurfaceAllocatorNotify * This); HRESULT ( STDMETHODCALLTYPE *NotifyEvent )( IVMRSurfaceAllocatorNotify * This, /* [in] */ LONG EventCode, /* [in] */ LONG_PTR Param1, /* [in] */ LONG_PTR Param2); HRESULT ( STDMETHODCALLTYPE *SetBorderColor )( IVMRSurfaceAllocatorNotify * This, /* [in] */ COLORREF clrBorder); END_INTERFACE } IVMRSurfaceAllocatorNotifyVtbl; interface IVMRSurfaceAllocatorNotify { CONST_VTBL struct IVMRSurfaceAllocatorNotifyVtbl *lpVtbl; }; #ifdef COBJMACROS #define IVMRSurfaceAllocatorNotify_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IVMRSurfaceAllocatorNotify_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IVMRSurfaceAllocatorNotify_Release(This) \ (This)->lpVtbl -> Release(This) #define IVMRSurfaceAllocatorNotify_AdviseSurfaceAllocator(This,dwUserID,lpIVRMSurfaceAllocator) \ (This)->lpVtbl -> AdviseSurfaceAllocator(This,dwUserID,lpIVRMSurfaceAllocator) #define IVMRSurfaceAllocatorNotify_SetDDrawDevice(This,lpDDrawDevice,hMonitor) \ (This)->lpVtbl -> SetDDrawDevice(This,lpDDrawDevice,hMonitor) #define IVMRSurfaceAllocatorNotify_ChangeDDrawDevice(This,lpDDrawDevice,hMonitor) \ (This)->lpVtbl -> ChangeDDrawDevice(This,lpDDrawDevice,hMonitor) #define IVMRSurfaceAllocatorNotify_RestoreDDrawSurfaces(This) \ (This)->lpVtbl -> RestoreDDrawSurfaces(This) #define IVMRSurfaceAllocatorNotify_NotifyEvent(This,EventCode,Param1,Param2) \ (This)->lpVtbl -> NotifyEvent(This,EventCode,Param1,Param2) #define IVMRSurfaceAllocatorNotify_SetBorderColor(This,clrBorder) \ (This)->lpVtbl -> SetBorderColor(This,clrBorder) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IVMRSurfaceAllocatorNotify_AdviseSurfaceAllocator_Proxy( IVMRSurfaceAllocatorNotify * This, /* [in] */ DWORD_PTR dwUserID, /* [in] */ IVMRSurfaceAllocator *lpIVRMSurfaceAllocator); void __RPC_STUB IVMRSurfaceAllocatorNotify_AdviseSurfaceAllocator_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRSurfaceAllocatorNotify_SetDDrawDevice_Proxy( IVMRSurfaceAllocatorNotify * This, /* [in] */ LPDIRECTDRAW7 lpDDrawDevice, /* [in] */ HMONITOR hMonitor); void __RPC_STUB IVMRSurfaceAllocatorNotify_SetDDrawDevice_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRSurfaceAllocatorNotify_ChangeDDrawDevice_Proxy( IVMRSurfaceAllocatorNotify * This, /* [in] */ LPDIRECTDRAW7 lpDDrawDevice, /* [in] */ HMONITOR hMonitor); void __RPC_STUB IVMRSurfaceAllocatorNotify_ChangeDDrawDevice_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRSurfaceAllocatorNotify_RestoreDDrawSurfaces_Proxy( IVMRSurfaceAllocatorNotify * This); void __RPC_STUB IVMRSurfaceAllocatorNotify_RestoreDDrawSurfaces_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRSurfaceAllocatorNotify_NotifyEvent_Proxy( IVMRSurfaceAllocatorNotify * This, /* [in] */ LONG EventCode, /* [in] */ LONG_PTR Param1, /* [in] */ LONG_PTR Param2); void __RPC_STUB IVMRSurfaceAllocatorNotify_NotifyEvent_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRSurfaceAllocatorNotify_SetBorderColor_Proxy( IVMRSurfaceAllocatorNotify * This, /* [in] */ COLORREF clrBorder); void __RPC_STUB IVMRSurfaceAllocatorNotify_SetBorderColor_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IVMRSurfaceAllocatorNotify_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0384 */ /* [local] */ typedef /* [public] */ enum __MIDL___MIDL_itf_strmif_0384_0001 { VMR_ARMODE_NONE = 0, VMR_ARMODE_LETTER_BOX = VMR_ARMODE_NONE + 1 } VMR_ASPECT_RATIO_MODE; extern RPC_IF_HANDLE __MIDL_itf_strmif_0384_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0384_v0_0_s_ifspec; #ifndef __IVMRWindowlessControl_INTERFACE_DEFINED__ #define __IVMRWindowlessControl_INTERFACE_DEFINED__ /* interface IVMRWindowlessControl */ /* [unique][helpstring][uuid][local][object][local] */ EXTERN_C const IID IID_IVMRWindowlessControl; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("0eb1088c-4dcd-46f0-878f-39dae86a51b7") IVMRWindowlessControl : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE GetNativeVideoSize( /* [out] */ LONG *lpWidth, /* [out] */ LONG *lpHeight, /* [out] */ LONG *lpARWidth, /* [out] */ LONG *lpARHeight) = 0; virtual HRESULT STDMETHODCALLTYPE GetMinIdealVideoSize( /* [out] */ LONG *lpWidth, /* [out] */ LONG *lpHeight) = 0; virtual HRESULT STDMETHODCALLTYPE GetMaxIdealVideoSize( /* [out] */ LONG *lpWidth, /* [out] */ LONG *lpHeight) = 0; virtual HRESULT STDMETHODCALLTYPE SetVideoPosition( /* [in] */ const LPRECT lpSRCRect, /* [in] */ const LPRECT lpDSTRect) = 0; virtual HRESULT STDMETHODCALLTYPE GetVideoPosition( /* [out] */ LPRECT lpSRCRect, /* [out] */ LPRECT lpDSTRect) = 0; virtual HRESULT STDMETHODCALLTYPE GetAspectRatioMode( /* [out] */ DWORD *lpAspectRatioMode) = 0; virtual HRESULT STDMETHODCALLTYPE SetAspectRatioMode( /* [in] */ DWORD AspectRatioMode) = 0; virtual HRESULT STDMETHODCALLTYPE SetVideoClippingWindow( /* [in] */ HWND hwnd) = 0; virtual HRESULT STDMETHODCALLTYPE RepaintVideo( /* [in] */ HWND hwnd, /* [in] */ HDC hdc) = 0; virtual HRESULT STDMETHODCALLTYPE DisplayModeChanged( void) = 0; virtual HRESULT STDMETHODCALLTYPE GetCurrentImage( /* [out] */ BYTE **lpDib) = 0; virtual HRESULT STDMETHODCALLTYPE SetBorderColor( /* [in] */ COLORREF Clr) = 0; virtual HRESULT STDMETHODCALLTYPE GetBorderColor( /* [out] */ COLORREF *lpClr) = 0; virtual HRESULT STDMETHODCALLTYPE SetColorKey( /* [in] */ COLORREF Clr) = 0; virtual HRESULT STDMETHODCALLTYPE GetColorKey( /* [out] */ COLORREF *lpClr) = 0; }; #else /* C style interface */ typedef struct IVMRWindowlessControlVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IVMRWindowlessControl * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IVMRWindowlessControl * This); ULONG ( STDMETHODCALLTYPE *Release )( IVMRWindowlessControl * This); HRESULT ( STDMETHODCALLTYPE *GetNativeVideoSize )( IVMRWindowlessControl * This, /* [out] */ LONG *lpWidth, /* [out] */ LONG *lpHeight, /* [out] */ LONG *lpARWidth, /* [out] */ LONG *lpARHeight); HRESULT ( STDMETHODCALLTYPE *GetMinIdealVideoSize )( IVMRWindowlessControl * This, /* [out] */ LONG *lpWidth, /* [out] */ LONG *lpHeight); HRESULT ( STDMETHODCALLTYPE *GetMaxIdealVideoSize )( IVMRWindowlessControl * This, /* [out] */ LONG *lpWidth, /* [out] */ LONG *lpHeight); HRESULT ( STDMETHODCALLTYPE *SetVideoPosition )( IVMRWindowlessControl * This, /* [in] */ const LPRECT lpSRCRect, /* [in] */ const LPRECT lpDSTRect); HRESULT ( STDMETHODCALLTYPE *GetVideoPosition )( IVMRWindowlessControl * This, /* [out] */ LPRECT lpSRCRect, /* [out] */ LPRECT lpDSTRect); HRESULT ( STDMETHODCALLTYPE *GetAspectRatioMode )( IVMRWindowlessControl * This, /* [out] */ DWORD *lpAspectRatioMode); HRESULT ( STDMETHODCALLTYPE *SetAspectRatioMode )( IVMRWindowlessControl * This, /* [in] */ DWORD AspectRatioMode); HRESULT ( STDMETHODCALLTYPE *SetVideoClippingWindow )( IVMRWindowlessControl * This, /* [in] */ HWND hwnd); HRESULT ( STDMETHODCALLTYPE *RepaintVideo )( IVMRWindowlessControl * This, /* [in] */ HWND hwnd, /* [in] */ HDC hdc); HRESULT ( STDMETHODCALLTYPE *DisplayModeChanged )( IVMRWindowlessControl * This); HRESULT ( STDMETHODCALLTYPE *GetCurrentImage )( IVMRWindowlessControl * This, /* [out] */ BYTE **lpDib); HRESULT ( STDMETHODCALLTYPE *SetBorderColor )( IVMRWindowlessControl * This, /* [in] */ COLORREF Clr); HRESULT ( STDMETHODCALLTYPE *GetBorderColor )( IVMRWindowlessControl * This, /* [out] */ COLORREF *lpClr); HRESULT ( STDMETHODCALLTYPE *SetColorKey )( IVMRWindowlessControl * This, /* [in] */ COLORREF Clr); HRESULT ( STDMETHODCALLTYPE *GetColorKey )( IVMRWindowlessControl * This, /* [out] */ COLORREF *lpClr); END_INTERFACE } IVMRWindowlessControlVtbl; interface IVMRWindowlessControl { CONST_VTBL struct IVMRWindowlessControlVtbl *lpVtbl; }; #ifdef COBJMACROS #define IVMRWindowlessControl_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IVMRWindowlessControl_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IVMRWindowlessControl_Release(This) \ (This)->lpVtbl -> Release(This) #define IVMRWindowlessControl_GetNativeVideoSize(This,lpWidth,lpHeight,lpARWidth,lpARHeight) \ (This)->lpVtbl -> GetNativeVideoSize(This,lpWidth,lpHeight,lpARWidth,lpARHeight) #define IVMRWindowlessControl_GetMinIdealVideoSize(This,lpWidth,lpHeight) \ (This)->lpVtbl -> GetMinIdealVideoSize(This,lpWidth,lpHeight) #define IVMRWindowlessControl_GetMaxIdealVideoSize(This,lpWidth,lpHeight) \ (This)->lpVtbl -> GetMaxIdealVideoSize(This,lpWidth,lpHeight) #define IVMRWindowlessControl_SetVideoPosition(This,lpSRCRect,lpDSTRect) \ (This)->lpVtbl -> SetVideoPosition(This,lpSRCRect,lpDSTRect) #define IVMRWindowlessControl_GetVideoPosition(This,lpSRCRect,lpDSTRect) \ (This)->lpVtbl -> GetVideoPosition(This,lpSRCRect,lpDSTRect) #define IVMRWindowlessControl_GetAspectRatioMode(This,lpAspectRatioMode) \ (This)->lpVtbl -> GetAspectRatioMode(This,lpAspectRatioMode) #define IVMRWindowlessControl_SetAspectRatioMode(This,AspectRatioMode) \ (This)->lpVtbl -> SetAspectRatioMode(This,AspectRatioMode) #define IVMRWindowlessControl_SetVideoClippingWindow(This,hwnd) \ (This)->lpVtbl -> SetVideoClippingWindow(This,hwnd) #define IVMRWindowlessControl_RepaintVideo(This,hwnd,hdc) \ (This)->lpVtbl -> RepaintVideo(This,hwnd,hdc) #define IVMRWindowlessControl_DisplayModeChanged(This) \ (This)->lpVtbl -> DisplayModeChanged(This) #define IVMRWindowlessControl_GetCurrentImage(This,lpDib) \ (This)->lpVtbl -> GetCurrentImage(This,lpDib) #define IVMRWindowlessControl_SetBorderColor(This,Clr) \ (This)->lpVtbl -> SetBorderColor(This,Clr) #define IVMRWindowlessControl_GetBorderColor(This,lpClr) \ (This)->lpVtbl -> GetBorderColor(This,lpClr) #define IVMRWindowlessControl_SetColorKey(This,Clr) \ (This)->lpVtbl -> SetColorKey(This,Clr) #define IVMRWindowlessControl_GetColorKey(This,lpClr) \ (This)->lpVtbl -> GetColorKey(This,lpClr) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IVMRWindowlessControl_GetNativeVideoSize_Proxy( IVMRWindowlessControl * This, /* [out] */ LONG *lpWidth, /* [out] */ LONG *lpHeight, /* [out] */ LONG *lpARWidth, /* [out] */ LONG *lpARHeight); void __RPC_STUB IVMRWindowlessControl_GetNativeVideoSize_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRWindowlessControl_GetMinIdealVideoSize_Proxy( IVMRWindowlessControl * This, /* [out] */ LONG *lpWidth, /* [out] */ LONG *lpHeight); void __RPC_STUB IVMRWindowlessControl_GetMinIdealVideoSize_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRWindowlessControl_GetMaxIdealVideoSize_Proxy( IVMRWindowlessControl * This, /* [out] */ LONG *lpWidth, /* [out] */ LONG *lpHeight); void __RPC_STUB IVMRWindowlessControl_GetMaxIdealVideoSize_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRWindowlessControl_SetVideoPosition_Proxy( IVMRWindowlessControl * This, /* [in] */ const LPRECT lpSRCRect, /* [in] */ const LPRECT lpDSTRect); void __RPC_STUB IVMRWindowlessControl_SetVideoPosition_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRWindowlessControl_GetVideoPosition_Proxy( IVMRWindowlessControl * This, /* [out] */ LPRECT lpSRCRect, /* [out] */ LPRECT lpDSTRect); void __RPC_STUB IVMRWindowlessControl_GetVideoPosition_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRWindowlessControl_GetAspectRatioMode_Proxy( IVMRWindowlessControl * This, /* [out] */ DWORD *lpAspectRatioMode); void __RPC_STUB IVMRWindowlessControl_GetAspectRatioMode_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRWindowlessControl_SetAspectRatioMode_Proxy( IVMRWindowlessControl * This, /* [in] */ DWORD AspectRatioMode); void __RPC_STUB IVMRWindowlessControl_SetAspectRatioMode_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRWindowlessControl_SetVideoClippingWindow_Proxy( IVMRWindowlessControl * This, /* [in] */ HWND hwnd); void __RPC_STUB IVMRWindowlessControl_SetVideoClippingWindow_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRWindowlessControl_RepaintVideo_Proxy( IVMRWindowlessControl * This, /* [in] */ HWND hwnd, /* [in] */ HDC hdc); void __RPC_STUB IVMRWindowlessControl_RepaintVideo_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRWindowlessControl_DisplayModeChanged_Proxy( IVMRWindowlessControl * This); void __RPC_STUB IVMRWindowlessControl_DisplayModeChanged_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRWindowlessControl_GetCurrentImage_Proxy( IVMRWindowlessControl * This, /* [out] */ BYTE **lpDib); void __RPC_STUB IVMRWindowlessControl_GetCurrentImage_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRWindowlessControl_SetBorderColor_Proxy( IVMRWindowlessControl * This, /* [in] */ COLORREF Clr); void __RPC_STUB IVMRWindowlessControl_SetBorderColor_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRWindowlessControl_GetBorderColor_Proxy( IVMRWindowlessControl * This, /* [out] */ COLORREF *lpClr); void __RPC_STUB IVMRWindowlessControl_GetBorderColor_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRWindowlessControl_SetColorKey_Proxy( IVMRWindowlessControl * This, /* [in] */ COLORREF Clr); void __RPC_STUB IVMRWindowlessControl_SetColorKey_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRWindowlessControl_GetColorKey_Proxy( IVMRWindowlessControl * This, /* [out] */ COLORREF *lpClr); void __RPC_STUB IVMRWindowlessControl_GetColorKey_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IVMRWindowlessControl_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0385 */ /* [local] */ typedef /* [public] */ enum __MIDL___MIDL_itf_strmif_0385_0001 { MixerPref_NoDecimation = 0x1, MixerPref_DecimateOutput = 0x2, MixerPref_DecimateMask = 0xf, MixerPref_BiLinearFiltering = 0x10, MixerPref_PointFiltering = 0x20, MixerPref_FilteringMask = 0xf0, MixerPref_RenderTargetRGB = 0x100, MixerPref_RenderTargetYUV420 = 0x200, MixerPref_RenderTargetYUV422 = 0x400, MixerPref_RenderTargetYUV444 = 0x800, MixerPref_RenderTargetReserved = 0xf000, MixerPref_RenderTargetMask = 0xff00 } VMRMixerPrefs; typedef struct _NORMALIZEDRECT { float left; float top; float right; float bottom; } NORMALIZEDRECT; typedef struct _NORMALIZEDRECT *PNORMALIZEDRECT; extern RPC_IF_HANDLE __MIDL_itf_strmif_0385_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0385_v0_0_s_ifspec; #ifndef __IVMRMixerControl_INTERFACE_DEFINED__ #define __IVMRMixerControl_INTERFACE_DEFINED__ /* interface IVMRMixerControl */ /* [unique][helpstring][uuid][local][object][local] */ EXTERN_C const IID IID_IVMRMixerControl; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("1c1a17b0-bed0-415d-974b-dc6696131599") IVMRMixerControl : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE SetAlpha( /* [in] */ DWORD dwStreamID, /* [in] */ float Alpha) = 0; virtual HRESULT STDMETHODCALLTYPE GetAlpha( /* [in] */ DWORD dwStreamID, /* [out] */ float *pAlpha) = 0; virtual HRESULT STDMETHODCALLTYPE SetZOrder( /* [in] */ DWORD dwStreamID, /* [in] */ DWORD dwZ) = 0; virtual HRESULT STDMETHODCALLTYPE GetZOrder( /* [in] */ DWORD dwStreamID, /* [out] */ DWORD *pZ) = 0; virtual HRESULT STDMETHODCALLTYPE SetOutputRect( /* [in] */ DWORD dwStreamID, /* [in] */ const NORMALIZEDRECT *pRect) = 0; virtual HRESULT STDMETHODCALLTYPE GetOutputRect( /* [in] */ DWORD dwStreamID, /* [out] */ NORMALIZEDRECT *pRect) = 0; virtual HRESULT STDMETHODCALLTYPE SetBackgroundClr( /* [in] */ COLORREF ClrBkg) = 0; virtual HRESULT STDMETHODCALLTYPE GetBackgroundClr( /* [in] */ COLORREF *lpClrBkg) = 0; virtual HRESULT STDMETHODCALLTYPE SetMixingPrefs( /* [in] */ DWORD dwMixerPrefs) = 0; virtual HRESULT STDMETHODCALLTYPE GetMixingPrefs( /* [out] */ DWORD *pdwMixerPrefs) = 0; }; #else /* C style interface */ typedef struct IVMRMixerControlVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IVMRMixerControl * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IVMRMixerControl * This); ULONG ( STDMETHODCALLTYPE *Release )( IVMRMixerControl * This); HRESULT ( STDMETHODCALLTYPE *SetAlpha )( IVMRMixerControl * This, /* [in] */ DWORD dwStreamID, /* [in] */ float Alpha); HRESULT ( STDMETHODCALLTYPE *GetAlpha )( IVMRMixerControl * This, /* [in] */ DWORD dwStreamID, /* [out] */ float *pAlpha); HRESULT ( STDMETHODCALLTYPE *SetZOrder )( IVMRMixerControl * This, /* [in] */ DWORD dwStreamID, /* [in] */ DWORD dwZ); HRESULT ( STDMETHODCALLTYPE *GetZOrder )( IVMRMixerControl * This, /* [in] */ DWORD dwStreamID, /* [out] */ DWORD *pZ); HRESULT ( STDMETHODCALLTYPE *SetOutputRect )( IVMRMixerControl * This, /* [in] */ DWORD dwStreamID, /* [in] */ const NORMALIZEDRECT *pRect); HRESULT ( STDMETHODCALLTYPE *GetOutputRect )( IVMRMixerControl * This, /* [in] */ DWORD dwStreamID, /* [out] */ NORMALIZEDRECT *pRect); HRESULT ( STDMETHODCALLTYPE *SetBackgroundClr )( IVMRMixerControl * This, /* [in] */ COLORREF ClrBkg); HRESULT ( STDMETHODCALLTYPE *GetBackgroundClr )( IVMRMixerControl * This, /* [in] */ COLORREF *lpClrBkg); HRESULT ( STDMETHODCALLTYPE *SetMixingPrefs )( IVMRMixerControl * This, /* [in] */ DWORD dwMixerPrefs); HRESULT ( STDMETHODCALLTYPE *GetMixingPrefs )( IVMRMixerControl * This, /* [out] */ DWORD *pdwMixerPrefs); END_INTERFACE } IVMRMixerControlVtbl; interface IVMRMixerControl { CONST_VTBL struct IVMRMixerControlVtbl *lpVtbl; }; #ifdef COBJMACROS #define IVMRMixerControl_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IVMRMixerControl_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IVMRMixerControl_Release(This) \ (This)->lpVtbl -> Release(This) #define IVMRMixerControl_SetAlpha(This,dwStreamID,Alpha) \ (This)->lpVtbl -> SetAlpha(This,dwStreamID,Alpha) #define IVMRMixerControl_GetAlpha(This,dwStreamID,pAlpha) \ (This)->lpVtbl -> GetAlpha(This,dwStreamID,pAlpha) #define IVMRMixerControl_SetZOrder(This,dwStreamID,dwZ) \ (This)->lpVtbl -> SetZOrder(This,dwStreamID,dwZ) #define IVMRMixerControl_GetZOrder(This,dwStreamID,pZ) \ (This)->lpVtbl -> GetZOrder(This,dwStreamID,pZ) #define IVMRMixerControl_SetOutputRect(This,dwStreamID,pRect) \ (This)->lpVtbl -> SetOutputRect(This,dwStreamID,pRect) #define IVMRMixerControl_GetOutputRect(This,dwStreamID,pRect) \ (This)->lpVtbl -> GetOutputRect(This,dwStreamID,pRect) #define IVMRMixerControl_SetBackgroundClr(This,ClrBkg) \ (This)->lpVtbl -> SetBackgroundClr(This,ClrBkg) #define IVMRMixerControl_GetBackgroundClr(This,lpClrBkg) \ (This)->lpVtbl -> GetBackgroundClr(This,lpClrBkg) #define IVMRMixerControl_SetMixingPrefs(This,dwMixerPrefs) \ (This)->lpVtbl -> SetMixingPrefs(This,dwMixerPrefs) #define IVMRMixerControl_GetMixingPrefs(This,pdwMixerPrefs) \ (This)->lpVtbl -> GetMixingPrefs(This,pdwMixerPrefs) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IVMRMixerControl_SetAlpha_Proxy( IVMRMixerControl * This, /* [in] */ DWORD dwStreamID, /* [in] */ float Alpha); void __RPC_STUB IVMRMixerControl_SetAlpha_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRMixerControl_GetAlpha_Proxy( IVMRMixerControl * This, /* [in] */ DWORD dwStreamID, /* [out] */ float *pAlpha); void __RPC_STUB IVMRMixerControl_GetAlpha_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRMixerControl_SetZOrder_Proxy( IVMRMixerControl * This, /* [in] */ DWORD dwStreamID, /* [in] */ DWORD dwZ); void __RPC_STUB IVMRMixerControl_SetZOrder_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRMixerControl_GetZOrder_Proxy( IVMRMixerControl * This, /* [in] */ DWORD dwStreamID, /* [out] */ DWORD *pZ); void __RPC_STUB IVMRMixerControl_GetZOrder_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRMixerControl_SetOutputRect_Proxy( IVMRMixerControl * This, /* [in] */ DWORD dwStreamID, /* [in] */ const NORMALIZEDRECT *pRect); void __RPC_STUB IVMRMixerControl_SetOutputRect_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRMixerControl_GetOutputRect_Proxy( IVMRMixerControl * This, /* [in] */ DWORD dwStreamID, /* [out] */ NORMALIZEDRECT *pRect); void __RPC_STUB IVMRMixerControl_GetOutputRect_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRMixerControl_SetBackgroundClr_Proxy( IVMRMixerControl * This, /* [in] */ COLORREF ClrBkg); void __RPC_STUB IVMRMixerControl_SetBackgroundClr_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRMixerControl_GetBackgroundClr_Proxy( IVMRMixerControl * This, /* [in] */ COLORREF *lpClrBkg); void __RPC_STUB IVMRMixerControl_GetBackgroundClr_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRMixerControl_SetMixingPrefs_Proxy( IVMRMixerControl * This, /* [in] */ DWORD dwMixerPrefs); void __RPC_STUB IVMRMixerControl_SetMixingPrefs_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRMixerControl_GetMixingPrefs_Proxy( IVMRMixerControl * This, /* [out] */ DWORD *pdwMixerPrefs); void __RPC_STUB IVMRMixerControl_GetMixingPrefs_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IVMRMixerControl_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0386 */ /* [local] */ typedef struct tagVMRGUID { GUID *pGUID; GUID GUID; } VMRGUID; typedef struct tagVMRMONITORINFO { VMRGUID guid; RECT rcMonitor; HMONITOR hMon; DWORD dwFlags; wchar_t szDevice[ 32 ]; wchar_t szDescription[ 256 ]; LARGE_INTEGER liDriverVersion; DWORD dwVendorId; DWORD dwDeviceId; DWORD dwSubSysId; DWORD dwRevision; } VMRMONITORINFO; extern RPC_IF_HANDLE __MIDL_itf_strmif_0386_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0386_v0_0_s_ifspec; #ifndef __IVMRMonitorConfig_INTERFACE_DEFINED__ #define __IVMRMonitorConfig_INTERFACE_DEFINED__ /* interface IVMRMonitorConfig */ /* [unique][helpstring][uuid][local][object] */ EXTERN_C const IID IID_IVMRMonitorConfig; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("9cf0b1b6-fbaa-4b7f-88cf-cf1f130a0dce") IVMRMonitorConfig : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE SetMonitor( /* [in] */ const VMRGUID *pGUID) = 0; virtual HRESULT STDMETHODCALLTYPE GetMonitor( /* [out] */ VMRGUID *pGUID) = 0; virtual HRESULT STDMETHODCALLTYPE SetDefaultMonitor( /* [in] */ const VMRGUID *pGUID) = 0; virtual HRESULT STDMETHODCALLTYPE GetDefaultMonitor( /* [out] */ VMRGUID *pGUID) = 0; virtual HRESULT STDMETHODCALLTYPE GetAvailableMonitors( /* [size_is][out] */ VMRMONITORINFO *pInfo, /* [in] */ DWORD dwMaxInfoArraySize, /* [out] */ DWORD *pdwNumDevices) = 0; }; #else /* C style interface */ typedef struct IVMRMonitorConfigVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IVMRMonitorConfig * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IVMRMonitorConfig * This); ULONG ( STDMETHODCALLTYPE *Release )( IVMRMonitorConfig * This); HRESULT ( STDMETHODCALLTYPE *SetMonitor )( IVMRMonitorConfig * This, /* [in] */ const VMRGUID *pGUID); HRESULT ( STDMETHODCALLTYPE *GetMonitor )( IVMRMonitorConfig * This, /* [out] */ VMRGUID *pGUID); HRESULT ( STDMETHODCALLTYPE *SetDefaultMonitor )( IVMRMonitorConfig * This, /* [in] */ const VMRGUID *pGUID); HRESULT ( STDMETHODCALLTYPE *GetDefaultMonitor )( IVMRMonitorConfig * This, /* [out] */ VMRGUID *pGUID); HRESULT ( STDMETHODCALLTYPE *GetAvailableMonitors )( IVMRMonitorConfig * This, /* [size_is][out] */ VMRMONITORINFO *pInfo, /* [in] */ DWORD dwMaxInfoArraySize, /* [out] */ DWORD *pdwNumDevices); END_INTERFACE } IVMRMonitorConfigVtbl; interface IVMRMonitorConfig { CONST_VTBL struct IVMRMonitorConfigVtbl *lpVtbl; }; #ifdef COBJMACROS #define IVMRMonitorConfig_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IVMRMonitorConfig_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IVMRMonitorConfig_Release(This) \ (This)->lpVtbl -> Release(This) #define IVMRMonitorConfig_SetMonitor(This,pGUID) \ (This)->lpVtbl -> SetMonitor(This,pGUID) #define IVMRMonitorConfig_GetMonitor(This,pGUID) \ (This)->lpVtbl -> GetMonitor(This,pGUID) #define IVMRMonitorConfig_SetDefaultMonitor(This,pGUID) \ (This)->lpVtbl -> SetDefaultMonitor(This,pGUID) #define IVMRMonitorConfig_GetDefaultMonitor(This,pGUID) \ (This)->lpVtbl -> GetDefaultMonitor(This,pGUID) #define IVMRMonitorConfig_GetAvailableMonitors(This,pInfo,dwMaxInfoArraySize,pdwNumDevices) \ (This)->lpVtbl -> GetAvailableMonitors(This,pInfo,dwMaxInfoArraySize,pdwNumDevices) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IVMRMonitorConfig_SetMonitor_Proxy( IVMRMonitorConfig * This, /* [in] */ const VMRGUID *pGUID); void __RPC_STUB IVMRMonitorConfig_SetMonitor_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRMonitorConfig_GetMonitor_Proxy( IVMRMonitorConfig * This, /* [out] */ VMRGUID *pGUID); void __RPC_STUB IVMRMonitorConfig_GetMonitor_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRMonitorConfig_SetDefaultMonitor_Proxy( IVMRMonitorConfig * This, /* [in] */ const VMRGUID *pGUID); void __RPC_STUB IVMRMonitorConfig_SetDefaultMonitor_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRMonitorConfig_GetDefaultMonitor_Proxy( IVMRMonitorConfig * This, /* [out] */ VMRGUID *pGUID); void __RPC_STUB IVMRMonitorConfig_GetDefaultMonitor_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRMonitorConfig_GetAvailableMonitors_Proxy( IVMRMonitorConfig * This, /* [size_is][out] */ VMRMONITORINFO *pInfo, /* [in] */ DWORD dwMaxInfoArraySize, /* [out] */ DWORD *pdwNumDevices); void __RPC_STUB IVMRMonitorConfig_GetAvailableMonitors_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IVMRMonitorConfig_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0387 */ /* [local] */ typedef /* [public] */ enum __MIDL___MIDL_itf_strmif_0387_0001 { RenderPrefs_ForceOffscreen = 0x1, RenderPrefs_ForceOverlays = 0x2, RenderPrefs_AllowOverlays = 0, RenderPrefs_AllowOffscreen = 0, RenderPrefs_DoNotRenderColorKeyAndBorder = 0x8, RenderPrefs_RestrictToInitialMonitor = 0x10, RenderPrefs_PreferAGPMemWhenMixing = 0x20, RenderPrefs_Mask = 0x3f } VMRRenderPrefs; typedef /* [public] */ enum __MIDL___MIDL_itf_strmif_0387_0002 { VMRMode_Windowed = 0x1, VMRMode_Windowless = 0x2, VMRMode_Renderless = 0x4, VMRMode_Mask = 0x7 } VMRMode; enum __MIDL___MIDL_itf_strmif_0387_0003 { MAX_NUMBER_OF_STREAMS = 16 } ; extern RPC_IF_HANDLE __MIDL_itf_strmif_0387_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0387_v0_0_s_ifspec; #ifndef __IVMRFilterConfig_INTERFACE_DEFINED__ #define __IVMRFilterConfig_INTERFACE_DEFINED__ /* interface IVMRFilterConfig */ /* [unique][helpstring][uuid][local][object] */ EXTERN_C const IID IID_IVMRFilterConfig; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("9e5530c5-7034-48b4-bb46-0b8a6efc8e36") IVMRFilterConfig : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE SetImageCompositor( /* [in] */ IVMRImageCompositor *lpVMRImgCompositor) = 0; virtual HRESULT STDMETHODCALLTYPE SetNumberOfStreams( /* [in] */ DWORD dwMaxStreams) = 0; virtual HRESULT STDMETHODCALLTYPE GetNumberOfStreams( /* [out] */ DWORD *pdwMaxStreams) = 0; virtual HRESULT STDMETHODCALLTYPE SetRenderingPrefs( /* [in] */ DWORD dwRenderFlags) = 0; virtual HRESULT STDMETHODCALLTYPE GetRenderingPrefs( /* [out] */ DWORD *pdwRenderFlags) = 0; virtual HRESULT STDMETHODCALLTYPE SetRenderingMode( /* [in] */ DWORD Mode) = 0; virtual HRESULT STDMETHODCALLTYPE GetRenderingMode( /* [out] */ DWORD *pMode) = 0; }; #else /* C style interface */ typedef struct IVMRFilterConfigVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IVMRFilterConfig * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IVMRFilterConfig * This); ULONG ( STDMETHODCALLTYPE *Release )( IVMRFilterConfig * This); HRESULT ( STDMETHODCALLTYPE *SetImageCompositor )( IVMRFilterConfig * This, /* [in] */ IVMRImageCompositor *lpVMRImgCompositor); HRESULT ( STDMETHODCALLTYPE *SetNumberOfStreams )( IVMRFilterConfig * This, /* [in] */ DWORD dwMaxStreams); HRESULT ( STDMETHODCALLTYPE *GetNumberOfStreams )( IVMRFilterConfig * This, /* [out] */ DWORD *pdwMaxStreams); HRESULT ( STDMETHODCALLTYPE *SetRenderingPrefs )( IVMRFilterConfig * This, /* [in] */ DWORD dwRenderFlags); HRESULT ( STDMETHODCALLTYPE *GetRenderingPrefs )( IVMRFilterConfig * This, /* [out] */ DWORD *pdwRenderFlags); HRESULT ( STDMETHODCALLTYPE *SetRenderingMode )( IVMRFilterConfig * This, /* [in] */ DWORD Mode); HRESULT ( STDMETHODCALLTYPE *GetRenderingMode )( IVMRFilterConfig * This, /* [out] */ DWORD *pMode); END_INTERFACE } IVMRFilterConfigVtbl; interface IVMRFilterConfig { CONST_VTBL struct IVMRFilterConfigVtbl *lpVtbl; }; #ifdef COBJMACROS #define IVMRFilterConfig_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IVMRFilterConfig_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IVMRFilterConfig_Release(This) \ (This)->lpVtbl -> Release(This) #define IVMRFilterConfig_SetImageCompositor(This,lpVMRImgCompositor) \ (This)->lpVtbl -> SetImageCompositor(This,lpVMRImgCompositor) #define IVMRFilterConfig_SetNumberOfStreams(This,dwMaxStreams) \ (This)->lpVtbl -> SetNumberOfStreams(This,dwMaxStreams) #define IVMRFilterConfig_GetNumberOfStreams(This,pdwMaxStreams) \ (This)->lpVtbl -> GetNumberOfStreams(This,pdwMaxStreams) #define IVMRFilterConfig_SetRenderingPrefs(This,dwRenderFlags) \ (This)->lpVtbl -> SetRenderingPrefs(This,dwRenderFlags) #define IVMRFilterConfig_GetRenderingPrefs(This,pdwRenderFlags) \ (This)->lpVtbl -> GetRenderingPrefs(This,pdwRenderFlags) #define IVMRFilterConfig_SetRenderingMode(This,Mode) \ (This)->lpVtbl -> SetRenderingMode(This,Mode) #define IVMRFilterConfig_GetRenderingMode(This,pMode) \ (This)->lpVtbl -> GetRenderingMode(This,pMode) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IVMRFilterConfig_SetImageCompositor_Proxy( IVMRFilterConfig * This, /* [in] */ IVMRImageCompositor *lpVMRImgCompositor); void __RPC_STUB IVMRFilterConfig_SetImageCompositor_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRFilterConfig_SetNumberOfStreams_Proxy( IVMRFilterConfig * This, /* [in] */ DWORD dwMaxStreams); void __RPC_STUB IVMRFilterConfig_SetNumberOfStreams_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRFilterConfig_GetNumberOfStreams_Proxy( IVMRFilterConfig * This, /* [out] */ DWORD *pdwMaxStreams); void __RPC_STUB IVMRFilterConfig_GetNumberOfStreams_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRFilterConfig_SetRenderingPrefs_Proxy( IVMRFilterConfig * This, /* [in] */ DWORD dwRenderFlags); void __RPC_STUB IVMRFilterConfig_SetRenderingPrefs_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRFilterConfig_GetRenderingPrefs_Proxy( IVMRFilterConfig * This, /* [out] */ DWORD *pdwRenderFlags); void __RPC_STUB IVMRFilterConfig_GetRenderingPrefs_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRFilterConfig_SetRenderingMode_Proxy( IVMRFilterConfig * This, /* [in] */ DWORD Mode); void __RPC_STUB IVMRFilterConfig_SetRenderingMode_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRFilterConfig_GetRenderingMode_Proxy( IVMRFilterConfig * This, /* [out] */ DWORD *pMode); void __RPC_STUB IVMRFilterConfig_GetRenderingMode_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IVMRFilterConfig_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0388 */ /* [local] */ typedef struct _VMRALPHABITMAP { DWORD dwFlags; HDC hdc; LPDIRECTDRAWSURFACE7 pDDS; RECT rSrc; NORMALIZEDRECT rDest; FLOAT fAlpha; COLORREF clrSrcKey; } VMRALPHABITMAP; typedef struct _VMRALPHABITMAP *PVMRALPHABITMAP; #define VMRBITMAP_DISABLE 0x00000001 #define VMRBITMAP_HDC 0x00000002 #define VMRBITMAP_ENTIREDDS 0x00000004 #define VMRBITMAP_SRCCOLORKEY 0x00000008 #define VMRBITMAP_SRCRECT 0x00000010 extern RPC_IF_HANDLE __MIDL_itf_strmif_0388_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0388_v0_0_s_ifspec; #ifndef __IVMRMixerBitmap_INTERFACE_DEFINED__ #define __IVMRMixerBitmap_INTERFACE_DEFINED__ /* interface IVMRMixerBitmap */ /* [unique][helpstring][uuid][local][object] */ EXTERN_C const IID IID_IVMRMixerBitmap; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("1E673275-0257-40aa-AF20-7C608D4A0428") IVMRMixerBitmap : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE SetAlphaBitmap( /* [in] */ const VMRALPHABITMAP *pBmpParms) = 0; virtual HRESULT STDMETHODCALLTYPE UpdateAlphaBitmapParameters( /* [in] */ PVMRALPHABITMAP pBmpParms) = 0; virtual HRESULT STDMETHODCALLTYPE GetAlphaBitmapParameters( /* [out] */ PVMRALPHABITMAP pBmpParms) = 0; }; #else /* C style interface */ typedef struct IVMRMixerBitmapVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IVMRMixerBitmap * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IVMRMixerBitmap * This); ULONG ( STDMETHODCALLTYPE *Release )( IVMRMixerBitmap * This); HRESULT ( STDMETHODCALLTYPE *SetAlphaBitmap )( IVMRMixerBitmap * This, /* [in] */ const VMRALPHABITMAP *pBmpParms); HRESULT ( STDMETHODCALLTYPE *UpdateAlphaBitmapParameters )( IVMRMixerBitmap * This, /* [in] */ PVMRALPHABITMAP pBmpParms); HRESULT ( STDMETHODCALLTYPE *GetAlphaBitmapParameters )( IVMRMixerBitmap * This, /* [out] */ PVMRALPHABITMAP pBmpParms); END_INTERFACE } IVMRMixerBitmapVtbl; interface IVMRMixerBitmap { CONST_VTBL struct IVMRMixerBitmapVtbl *lpVtbl; }; #ifdef COBJMACROS #define IVMRMixerBitmap_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IVMRMixerBitmap_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IVMRMixerBitmap_Release(This) \ (This)->lpVtbl -> Release(This) #define IVMRMixerBitmap_SetAlphaBitmap(This,pBmpParms) \ (This)->lpVtbl -> SetAlphaBitmap(This,pBmpParms) #define IVMRMixerBitmap_UpdateAlphaBitmapParameters(This,pBmpParms) \ (This)->lpVtbl -> UpdateAlphaBitmapParameters(This,pBmpParms) #define IVMRMixerBitmap_GetAlphaBitmapParameters(This,pBmpParms) \ (This)->lpVtbl -> GetAlphaBitmapParameters(This,pBmpParms) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IVMRMixerBitmap_SetAlphaBitmap_Proxy( IVMRMixerBitmap * This, /* [in] */ const VMRALPHABITMAP *pBmpParms); void __RPC_STUB IVMRMixerBitmap_SetAlphaBitmap_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRMixerBitmap_UpdateAlphaBitmapParameters_Proxy( IVMRMixerBitmap * This, /* [in] */ PVMRALPHABITMAP pBmpParms); void __RPC_STUB IVMRMixerBitmap_UpdateAlphaBitmapParameters_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRMixerBitmap_GetAlphaBitmapParameters_Proxy( IVMRMixerBitmap * This, /* [out] */ PVMRALPHABITMAP pBmpParms); void __RPC_STUB IVMRMixerBitmap_GetAlphaBitmapParameters_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IVMRMixerBitmap_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0389 */ /* [local] */ typedef struct _VMRVIDEOSTREAMINFO { LPDIRECTDRAWSURFACE7 pddsVideoSurface; DWORD dwWidth; DWORD dwHeight; DWORD dwStrmID; FLOAT fAlpha; DDCOLORKEY ddClrKey; NORMALIZEDRECT rNormal; } VMRVIDEOSTREAMINFO; extern RPC_IF_HANDLE __MIDL_itf_strmif_0389_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0389_v0_0_s_ifspec; #ifndef __IVMRImageCompositor_INTERFACE_DEFINED__ #define __IVMRImageCompositor_INTERFACE_DEFINED__ /* interface IVMRImageCompositor */ /* [unique][helpstring][uuid][local][object][local] */ EXTERN_C const IID IID_IVMRImageCompositor; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("7a4fb5af-479f-4074-bb40-ce6722e43c82") IVMRImageCompositor : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE InitCompositionTarget( /* [in] */ IUnknown *pD3DDevice, /* [in] */ LPDIRECTDRAWSURFACE7 pddsRenderTarget) = 0; virtual HRESULT STDMETHODCALLTYPE TermCompositionTarget( /* [in] */ IUnknown *pD3DDevice, /* [in] */ LPDIRECTDRAWSURFACE7 pddsRenderTarget) = 0; virtual HRESULT STDMETHODCALLTYPE SetStreamMediaType( /* [in] */ DWORD dwStrmID, /* [in] */ AM_MEDIA_TYPE *pmt, /* [in] */ BOOL fTexture) = 0; virtual HRESULT STDMETHODCALLTYPE CompositeImage( /* [in] */ IUnknown *pD3DDevice, /* [in] */ LPDIRECTDRAWSURFACE7 pddsRenderTarget, /* [in] */ AM_MEDIA_TYPE *pmtRenderTarget, /* [in] */ REFERENCE_TIME rtStart, /* [in] */ REFERENCE_TIME rtEnd, /* [in] */ DWORD dwClrBkGnd, /* [in] */ VMRVIDEOSTREAMINFO *pVideoStreamInfo, /* [in] */ UINT cStreams) = 0; }; #else /* C style interface */ typedef struct IVMRImageCompositorVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IVMRImageCompositor * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IVMRImageCompositor * This); ULONG ( STDMETHODCALLTYPE *Release )( IVMRImageCompositor * This); HRESULT ( STDMETHODCALLTYPE *InitCompositionTarget )( IVMRImageCompositor * This, /* [in] */ IUnknown *pD3DDevice, /* [in] */ LPDIRECTDRAWSURFACE7 pddsRenderTarget); HRESULT ( STDMETHODCALLTYPE *TermCompositionTarget )( IVMRImageCompositor * This, /* [in] */ IUnknown *pD3DDevice, /* [in] */ LPDIRECTDRAWSURFACE7 pddsRenderTarget); HRESULT ( STDMETHODCALLTYPE *SetStreamMediaType )( IVMRImageCompositor * This, /* [in] */ DWORD dwStrmID, /* [in] */ AM_MEDIA_TYPE *pmt, /* [in] */ BOOL fTexture); HRESULT ( STDMETHODCALLTYPE *CompositeImage )( IVMRImageCompositor * This, /* [in] */ IUnknown *pD3DDevice, /* [in] */ LPDIRECTDRAWSURFACE7 pddsRenderTarget, /* [in] */ AM_MEDIA_TYPE *pmtRenderTarget, /* [in] */ REFERENCE_TIME rtStart, /* [in] */ REFERENCE_TIME rtEnd, /* [in] */ DWORD dwClrBkGnd, /* [in] */ VMRVIDEOSTREAMINFO *pVideoStreamInfo, /* [in] */ UINT cStreams); END_INTERFACE } IVMRImageCompositorVtbl; interface IVMRImageCompositor { CONST_VTBL struct IVMRImageCompositorVtbl *lpVtbl; }; #ifdef COBJMACROS #define IVMRImageCompositor_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IVMRImageCompositor_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IVMRImageCompositor_Release(This) \ (This)->lpVtbl -> Release(This) #define IVMRImageCompositor_InitCompositionTarget(This,pD3DDevice,pddsRenderTarget) \ (This)->lpVtbl -> InitCompositionTarget(This,pD3DDevice,pddsRenderTarget) #define IVMRImageCompositor_TermCompositionTarget(This,pD3DDevice,pddsRenderTarget) \ (This)->lpVtbl -> TermCompositionTarget(This,pD3DDevice,pddsRenderTarget) #define IVMRImageCompositor_SetStreamMediaType(This,dwStrmID,pmt,fTexture) \ (This)->lpVtbl -> SetStreamMediaType(This,dwStrmID,pmt,fTexture) #define IVMRImageCompositor_CompositeImage(This,pD3DDevice,pddsRenderTarget,pmtRenderTarget,rtStart,rtEnd,dwClrBkGnd,pVideoStreamInfo,cStreams) \ (This)->lpVtbl -> CompositeImage(This,pD3DDevice,pddsRenderTarget,pmtRenderTarget,rtStart,rtEnd,dwClrBkGnd,pVideoStreamInfo,cStreams) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IVMRImageCompositor_InitCompositionTarget_Proxy( IVMRImageCompositor * This, /* [in] */ IUnknown *pD3DDevice, /* [in] */ LPDIRECTDRAWSURFACE7 pddsRenderTarget); void __RPC_STUB IVMRImageCompositor_InitCompositionTarget_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRImageCompositor_TermCompositionTarget_Proxy( IVMRImageCompositor * This, /* [in] */ IUnknown *pD3DDevice, /* [in] */ LPDIRECTDRAWSURFACE7 pddsRenderTarget); void __RPC_STUB IVMRImageCompositor_TermCompositionTarget_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRImageCompositor_SetStreamMediaType_Proxy( IVMRImageCompositor * This, /* [in] */ DWORD dwStrmID, /* [in] */ AM_MEDIA_TYPE *pmt, /* [in] */ BOOL fTexture); void __RPC_STUB IVMRImageCompositor_SetStreamMediaType_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRImageCompositor_CompositeImage_Proxy( IVMRImageCompositor * This, /* [in] */ IUnknown *pD3DDevice, /* [in] */ LPDIRECTDRAWSURFACE7 pddsRenderTarget, /* [in] */ AM_MEDIA_TYPE *pmtRenderTarget, /* [in] */ REFERENCE_TIME rtStart, /* [in] */ REFERENCE_TIME rtEnd, /* [in] */ DWORD dwClrBkGnd, /* [in] */ VMRVIDEOSTREAMINFO *pVideoStreamInfo, /* [in] */ UINT cStreams); void __RPC_STUB IVMRImageCompositor_CompositeImage_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IVMRImageCompositor_INTERFACE_DEFINED__ */ #ifndef __IVMRVideoStreamControl_INTERFACE_DEFINED__ #define __IVMRVideoStreamControl_INTERFACE_DEFINED__ /* interface IVMRVideoStreamControl */ /* [unique][helpstring][uuid][local][object] */ EXTERN_C const IID IID_IVMRVideoStreamControl; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("058d1f11-2a54-4bef-bd54-df706626b727") IVMRVideoStreamControl : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE SetColorKey( /* [in] */ LPDDCOLORKEY lpClrKey) = 0; virtual HRESULT STDMETHODCALLTYPE GetColorKey( /* [out] */ LPDDCOLORKEY lpClrKey) = 0; virtual HRESULT STDMETHODCALLTYPE SetStreamActiveState( /* [in] */ BOOL fActive) = 0; virtual HRESULT STDMETHODCALLTYPE GetStreamActiveState( /* [out] */ BOOL *lpfActive) = 0; }; #else /* C style interface */ typedef struct IVMRVideoStreamControlVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IVMRVideoStreamControl * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IVMRVideoStreamControl * This); ULONG ( STDMETHODCALLTYPE *Release )( IVMRVideoStreamControl * This); HRESULT ( STDMETHODCALLTYPE *SetColorKey )( IVMRVideoStreamControl * This, /* [in] */ LPDDCOLORKEY lpClrKey); HRESULT ( STDMETHODCALLTYPE *GetColorKey )( IVMRVideoStreamControl * This, /* [out] */ LPDDCOLORKEY lpClrKey); HRESULT ( STDMETHODCALLTYPE *SetStreamActiveState )( IVMRVideoStreamControl * This, /* [in] */ BOOL fActive); HRESULT ( STDMETHODCALLTYPE *GetStreamActiveState )( IVMRVideoStreamControl * This, /* [out] */ BOOL *lpfActive); END_INTERFACE } IVMRVideoStreamControlVtbl; interface IVMRVideoStreamControl { CONST_VTBL struct IVMRVideoStreamControlVtbl *lpVtbl; }; #ifdef COBJMACROS #define IVMRVideoStreamControl_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IVMRVideoStreamControl_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IVMRVideoStreamControl_Release(This) \ (This)->lpVtbl -> Release(This) #define IVMRVideoStreamControl_SetColorKey(This,lpClrKey) \ (This)->lpVtbl -> SetColorKey(This,lpClrKey) #define IVMRVideoStreamControl_GetColorKey(This,lpClrKey) \ (This)->lpVtbl -> GetColorKey(This,lpClrKey) #define IVMRVideoStreamControl_SetStreamActiveState(This,fActive) \ (This)->lpVtbl -> SetStreamActiveState(This,fActive) #define IVMRVideoStreamControl_GetStreamActiveState(This,lpfActive) \ (This)->lpVtbl -> GetStreamActiveState(This,lpfActive) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IVMRVideoStreamControl_SetColorKey_Proxy( IVMRVideoStreamControl * This, /* [in] */ LPDDCOLORKEY lpClrKey); void __RPC_STUB IVMRVideoStreamControl_SetColorKey_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRVideoStreamControl_GetColorKey_Proxy( IVMRVideoStreamControl * This, /* [out] */ LPDDCOLORKEY lpClrKey); void __RPC_STUB IVMRVideoStreamControl_GetColorKey_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRVideoStreamControl_SetStreamActiveState_Proxy( IVMRVideoStreamControl * This, /* [in] */ BOOL fActive); void __RPC_STUB IVMRVideoStreamControl_SetStreamActiveState_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRVideoStreamControl_GetStreamActiveState_Proxy( IVMRVideoStreamControl * This, /* [out] */ BOOL *lpfActive); void __RPC_STUB IVMRVideoStreamControl_GetStreamActiveState_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IVMRVideoStreamControl_INTERFACE_DEFINED__ */ #ifndef __IVMRSurface_INTERFACE_DEFINED__ #define __IVMRSurface_INTERFACE_DEFINED__ /* interface IVMRSurface */ /* [unique][helpstring][uuid][local][object][local] */ EXTERN_C const IID IID_IVMRSurface; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("a9849bbe-9ec8-4263-b764-62730f0d15d0") IVMRSurface : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE IsSurfaceLocked( void) = 0; virtual HRESULT STDMETHODCALLTYPE LockSurface( /* [out] */ BYTE **lpSurface) = 0; virtual HRESULT STDMETHODCALLTYPE UnlockSurface( void) = 0; virtual HRESULT STDMETHODCALLTYPE GetSurface( /* [out] */ LPDIRECTDRAWSURFACE7 *lplpSurface) = 0; }; #else /* C style interface */ typedef struct IVMRSurfaceVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IVMRSurface * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IVMRSurface * This); ULONG ( STDMETHODCALLTYPE *Release )( IVMRSurface * This); HRESULT ( STDMETHODCALLTYPE *IsSurfaceLocked )( IVMRSurface * This); HRESULT ( STDMETHODCALLTYPE *LockSurface )( IVMRSurface * This, /* [out] */ BYTE **lpSurface); HRESULT ( STDMETHODCALLTYPE *UnlockSurface )( IVMRSurface * This); HRESULT ( STDMETHODCALLTYPE *GetSurface )( IVMRSurface * This, /* [out] */ LPDIRECTDRAWSURFACE7 *lplpSurface); END_INTERFACE } IVMRSurfaceVtbl; interface IVMRSurface { CONST_VTBL struct IVMRSurfaceVtbl *lpVtbl; }; #ifdef COBJMACROS #define IVMRSurface_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IVMRSurface_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IVMRSurface_Release(This) \ (This)->lpVtbl -> Release(This) #define IVMRSurface_IsSurfaceLocked(This) \ (This)->lpVtbl -> IsSurfaceLocked(This) #define IVMRSurface_LockSurface(This,lpSurface) \ (This)->lpVtbl -> LockSurface(This,lpSurface) #define IVMRSurface_UnlockSurface(This) \ (This)->lpVtbl -> UnlockSurface(This) #define IVMRSurface_GetSurface(This,lplpSurface) \ (This)->lpVtbl -> GetSurface(This,lplpSurface) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IVMRSurface_IsSurfaceLocked_Proxy( IVMRSurface * This); void __RPC_STUB IVMRSurface_IsSurfaceLocked_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRSurface_LockSurface_Proxy( IVMRSurface * This, /* [out] */ BYTE **lpSurface); void __RPC_STUB IVMRSurface_LockSurface_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRSurface_UnlockSurface_Proxy( IVMRSurface * This); void __RPC_STUB IVMRSurface_UnlockSurface_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRSurface_GetSurface_Proxy( IVMRSurface * This, /* [out] */ LPDIRECTDRAWSURFACE7 *lplpSurface); void __RPC_STUB IVMRSurface_GetSurface_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IVMRSurface_INTERFACE_DEFINED__ */ #ifndef __IVMRImagePresenterConfig_INTERFACE_DEFINED__ #define __IVMRImagePresenterConfig_INTERFACE_DEFINED__ /* interface IVMRImagePresenterConfig */ /* [unique][helpstring][uuid][local][object][local] */ EXTERN_C const IID IID_IVMRImagePresenterConfig; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("9f3a1c85-8555-49ba-935f-be5b5b29d178") IVMRImagePresenterConfig : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE SetRenderingPrefs( /* [in] */ DWORD dwRenderFlags) = 0; virtual HRESULT STDMETHODCALLTYPE GetRenderingPrefs( /* [out] */ DWORD *dwRenderFlags) = 0; }; #else /* C style interface */ typedef struct IVMRImagePresenterConfigVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IVMRImagePresenterConfig * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IVMRImagePresenterConfig * This); ULONG ( STDMETHODCALLTYPE *Release )( IVMRImagePresenterConfig * This); HRESULT ( STDMETHODCALLTYPE *SetRenderingPrefs )( IVMRImagePresenterConfig * This, /* [in] */ DWORD dwRenderFlags); HRESULT ( STDMETHODCALLTYPE *GetRenderingPrefs )( IVMRImagePresenterConfig * This, /* [out] */ DWORD *dwRenderFlags); END_INTERFACE } IVMRImagePresenterConfigVtbl; interface IVMRImagePresenterConfig { CONST_VTBL struct IVMRImagePresenterConfigVtbl *lpVtbl; }; #ifdef COBJMACROS #define IVMRImagePresenterConfig_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IVMRImagePresenterConfig_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IVMRImagePresenterConfig_Release(This) \ (This)->lpVtbl -> Release(This) #define IVMRImagePresenterConfig_SetRenderingPrefs(This,dwRenderFlags) \ (This)->lpVtbl -> SetRenderingPrefs(This,dwRenderFlags) #define IVMRImagePresenterConfig_GetRenderingPrefs(This,dwRenderFlags) \ (This)->lpVtbl -> GetRenderingPrefs(This,dwRenderFlags) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IVMRImagePresenterConfig_SetRenderingPrefs_Proxy( IVMRImagePresenterConfig * This, /* [in] */ DWORD dwRenderFlags); void __RPC_STUB IVMRImagePresenterConfig_SetRenderingPrefs_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRImagePresenterConfig_GetRenderingPrefs_Proxy( IVMRImagePresenterConfig * This, /* [out] */ DWORD *dwRenderFlags); void __RPC_STUB IVMRImagePresenterConfig_GetRenderingPrefs_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IVMRImagePresenterConfig_INTERFACE_DEFINED__ */ #ifndef __IVMRImagePresenterExclModeConfig_INTERFACE_DEFINED__ #define __IVMRImagePresenterExclModeConfig_INTERFACE_DEFINED__ /* interface IVMRImagePresenterExclModeConfig */ /* [unique][helpstring][uuid][local][object][local] */ EXTERN_C const IID IID_IVMRImagePresenterExclModeConfig; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("e6f7ce40-4673-44f1-8f77-5499d68cb4ea") IVMRImagePresenterExclModeConfig : public IVMRImagePresenterConfig { public: virtual HRESULT STDMETHODCALLTYPE SetXlcModeDDObjAndPrimarySurface( /* [in] */ LPDIRECTDRAW7 lpDDObj, /* [in] */ LPDIRECTDRAWSURFACE7 lpPrimarySurf) = 0; virtual HRESULT STDMETHODCALLTYPE GetXlcModeDDObjAndPrimarySurface( /* [out] */ LPDIRECTDRAW7 *lpDDObj, /* [out] */ LPDIRECTDRAWSURFACE7 *lpPrimarySurf) = 0; }; #else /* C style interface */ typedef struct IVMRImagePresenterExclModeConfigVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IVMRImagePresenterExclModeConfig * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IVMRImagePresenterExclModeConfig * This); ULONG ( STDMETHODCALLTYPE *Release )( IVMRImagePresenterExclModeConfig * This); HRESULT ( STDMETHODCALLTYPE *SetRenderingPrefs )( IVMRImagePresenterExclModeConfig * This, /* [in] */ DWORD dwRenderFlags); HRESULT ( STDMETHODCALLTYPE *GetRenderingPrefs )( IVMRImagePresenterExclModeConfig * This, /* [out] */ DWORD *dwRenderFlags); HRESULT ( STDMETHODCALLTYPE *SetXlcModeDDObjAndPrimarySurface )( IVMRImagePresenterExclModeConfig * This, /* [in] */ LPDIRECTDRAW7 lpDDObj, /* [in] */ LPDIRECTDRAWSURFACE7 lpPrimarySurf); HRESULT ( STDMETHODCALLTYPE *GetXlcModeDDObjAndPrimarySurface )( IVMRImagePresenterExclModeConfig * This, /* [out] */ LPDIRECTDRAW7 *lpDDObj, /* [out] */ LPDIRECTDRAWSURFACE7 *lpPrimarySurf); END_INTERFACE } IVMRImagePresenterExclModeConfigVtbl; interface IVMRImagePresenterExclModeConfig { CONST_VTBL struct IVMRImagePresenterExclModeConfigVtbl *lpVtbl; }; #ifdef COBJMACROS #define IVMRImagePresenterExclModeConfig_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IVMRImagePresenterExclModeConfig_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IVMRImagePresenterExclModeConfig_Release(This) \ (This)->lpVtbl -> Release(This) #define IVMRImagePresenterExclModeConfig_SetRenderingPrefs(This,dwRenderFlags) \ (This)->lpVtbl -> SetRenderingPrefs(This,dwRenderFlags) #define IVMRImagePresenterExclModeConfig_GetRenderingPrefs(This,dwRenderFlags) \ (This)->lpVtbl -> GetRenderingPrefs(This,dwRenderFlags) #define IVMRImagePresenterExclModeConfig_SetXlcModeDDObjAndPrimarySurface(This,lpDDObj,lpPrimarySurf) \ (This)->lpVtbl -> SetXlcModeDDObjAndPrimarySurface(This,lpDDObj,lpPrimarySurf) #define IVMRImagePresenterExclModeConfig_GetXlcModeDDObjAndPrimarySurface(This,lpDDObj,lpPrimarySurf) \ (This)->lpVtbl -> GetXlcModeDDObjAndPrimarySurface(This,lpDDObj,lpPrimarySurf) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IVMRImagePresenterExclModeConfig_SetXlcModeDDObjAndPrimarySurface_Proxy( IVMRImagePresenterExclModeConfig * This, /* [in] */ LPDIRECTDRAW7 lpDDObj, /* [in] */ LPDIRECTDRAWSURFACE7 lpPrimarySurf); void __RPC_STUB IVMRImagePresenterExclModeConfig_SetXlcModeDDObjAndPrimarySurface_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRImagePresenterExclModeConfig_GetXlcModeDDObjAndPrimarySurface_Proxy( IVMRImagePresenterExclModeConfig * This, /* [out] */ LPDIRECTDRAW7 *lpDDObj, /* [out] */ LPDIRECTDRAWSURFACE7 *lpPrimarySurf); void __RPC_STUB IVMRImagePresenterExclModeConfig_GetXlcModeDDObjAndPrimarySurface_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IVMRImagePresenterExclModeConfig_INTERFACE_DEFINED__ */ #ifndef __IVPManager_INTERFACE_DEFINED__ #define __IVPManager_INTERFACE_DEFINED__ /* interface IVPManager */ /* [unique][helpstring][uuid][local][object][local] */ EXTERN_C const IID IID_IVPManager; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("aac18c18-e186-46d2-825d-a1f8dc8e395a") IVPManager : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE SetVideoPortIndex( /* [in] */ DWORD dwVideoPortIndex) = 0; virtual HRESULT STDMETHODCALLTYPE GetVideoPortIndex( /* [out] */ DWORD *pdwVideoPortIndex) = 0; }; #else /* C style interface */ typedef struct IVPManagerVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IVPManager * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IVPManager * This); ULONG ( STDMETHODCALLTYPE *Release )( IVPManager * This); HRESULT ( STDMETHODCALLTYPE *SetVideoPortIndex )( IVPManager * This, /* [in] */ DWORD dwVideoPortIndex); HRESULT ( STDMETHODCALLTYPE *GetVideoPortIndex )( IVPManager * This, /* [out] */ DWORD *pdwVideoPortIndex); END_INTERFACE } IVPManagerVtbl; interface IVPManager { CONST_VTBL struct IVPManagerVtbl *lpVtbl; }; #ifdef COBJMACROS #define IVPManager_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IVPManager_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IVPManager_Release(This) \ (This)->lpVtbl -> Release(This) #define IVPManager_SetVideoPortIndex(This,dwVideoPortIndex) \ (This)->lpVtbl -> SetVideoPortIndex(This,dwVideoPortIndex) #define IVPManager_GetVideoPortIndex(This,pdwVideoPortIndex) \ (This)->lpVtbl -> GetVideoPortIndex(This,pdwVideoPortIndex) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IVPManager_SetVideoPortIndex_Proxy( IVPManager * This, /* [in] */ DWORD dwVideoPortIndex); void __RPC_STUB IVPManager_SetVideoPortIndex_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVPManager_GetVideoPortIndex_Proxy( IVPManager * This, /* [out] */ DWORD *pdwVideoPortIndex); void __RPC_STUB IVPManager_GetVideoPortIndex_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IVPManager_INTERFACE_DEFINED__ */ /* Additional Prototypes for ALL interfaces */ unsigned long __RPC_USER VARIANT_UserSize( unsigned long *, unsigned long , VARIANT * ); unsigned char * __RPC_USER VARIANT_UserMarshal( unsigned long *, unsigned char *, VARIANT * ); unsigned char * __RPC_USER VARIANT_UserUnmarshal(unsigned long *, unsigned char *, VARIANT * ); void __RPC_USER VARIANT_UserFree( unsigned long *, VARIANT * ); /* [local] */ HRESULT STDMETHODCALLTYPE ICaptureGraphBuilder_FindInterface_Proxy( ICaptureGraphBuilder * This, /* [unique][in] */ const GUID *pCategory, /* [in] */ IBaseFilter *pf, /* [in] */ REFIID riid, /* [out] */ void **ppint); /* [call_as] */ HRESULT STDMETHODCALLTYPE ICaptureGraphBuilder_FindInterface_Stub( ICaptureGraphBuilder * This, /* [unique][in] */ const GUID *pCategory, /* [in] */ IBaseFilter *pf, /* [in] */ REFIID riid, /* [out] */ IUnknown **ppint); /* [local] */ HRESULT STDMETHODCALLTYPE ICaptureGraphBuilder2_FindInterface_Proxy( ICaptureGraphBuilder2 * This, /* [in] */ const GUID *pCategory, /* [in] */ const GUID *pType, /* [in] */ IBaseFilter *pf, /* [in] */ REFIID riid, /* [out] */ void **ppint); /* [call_as] */ HRESULT STDMETHODCALLTYPE ICaptureGraphBuilder2_FindInterface_Stub( ICaptureGraphBuilder2 * This, /* [in] */ const GUID *pCategory, /* [in] */ const GUID *pType, /* [in] */ IBaseFilter *pf, /* [in] */ REFIID riid, /* [out] */ IUnknown **ppint); /* [local] */ HRESULT STDMETHODCALLTYPE IKsPropertySet_Set_Proxy( IKsPropertySet * This, /* [in] */ REFGUID guidPropSet, /* [in] */ DWORD dwPropID, /* [size_is][in] */ LPVOID pInstanceData, /* [in] */ DWORD cbInstanceData, /* [size_is][in] */ LPVOID pPropData, /* [in] */ DWORD cbPropData); /* [call_as] */ HRESULT STDMETHODCALLTYPE IKsPropertySet_Set_Stub( IKsPropertySet * This, /* [in] */ REFGUID guidPropSet, /* [in] */ DWORD dwPropID, /* [size_is][in] */ byte *pInstanceData, /* [in] */ DWORD cbInstanceData, /* [size_is][in] */ byte *pPropData, /* [in] */ DWORD cbPropData); /* [local] */ HRESULT STDMETHODCALLTYPE IKsPropertySet_Get_Proxy( IKsPropertySet * This, /* [in] */ REFGUID guidPropSet, /* [in] */ DWORD dwPropID, /* [size_is][in] */ LPVOID pInstanceData, /* [in] */ DWORD cbInstanceData, /* [size_is][out] */ LPVOID pPropData, /* [in] */ DWORD cbPropData, /* [out] */ DWORD *pcbReturned); /* [call_as] */ HRESULT STDMETHODCALLTYPE IKsPropertySet_Get_Stub( IKsPropertySet * This, /* [in] */ REFGUID guidPropSet, /* [in] */ DWORD dwPropID, /* [size_is][in] */ byte *pInstanceData, /* [in] */ DWORD cbInstanceData, /* [size_is][out] */ byte *pPropData, /* [in] */ DWORD cbPropData, /* [out] */ DWORD *pcbReturned); /* end of Additional Prototypes */ #ifdef __cplusplus } #endif #endif \ No newline at end of file + #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.0347 */ /* Compiler settings for strmif.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 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 #endif // __RPCNDR_H_VERSION__ #ifndef COM_NO_WINDOWS_H #include "windows.h" #include "ole2.h" #endif /*COM_NO_WINDOWS_H*/ #ifndef __strmif_h__ #define __strmif_h__ #if defined(_MSC_VER) && (_MSC_VER >= 1020) #pragma once #endif /* Forward Declarations */ #ifndef __ICreateDevEnum_FWD_DEFINED__ #define __ICreateDevEnum_FWD_DEFINED__ typedef interface ICreateDevEnum ICreateDevEnum; #endif /* __ICreateDevEnum_FWD_DEFINED__ */ #ifndef __IPin_FWD_DEFINED__ #define __IPin_FWD_DEFINED__ typedef interface IPin IPin; #endif /* __IPin_FWD_DEFINED__ */ #ifndef __IEnumPins_FWD_DEFINED__ #define __IEnumPins_FWD_DEFINED__ typedef interface IEnumPins IEnumPins; #endif /* __IEnumPins_FWD_DEFINED__ */ #ifndef __IEnumMediaTypes_FWD_DEFINED__ #define __IEnumMediaTypes_FWD_DEFINED__ typedef interface IEnumMediaTypes IEnumMediaTypes; #endif /* __IEnumMediaTypes_FWD_DEFINED__ */ #ifndef __IFilterGraph_FWD_DEFINED__ #define __IFilterGraph_FWD_DEFINED__ typedef interface IFilterGraph IFilterGraph; #endif /* __IFilterGraph_FWD_DEFINED__ */ #ifndef __IEnumFilters_FWD_DEFINED__ #define __IEnumFilters_FWD_DEFINED__ typedef interface IEnumFilters IEnumFilters; #endif /* __IEnumFilters_FWD_DEFINED__ */ #ifndef __IMediaFilter_FWD_DEFINED__ #define __IMediaFilter_FWD_DEFINED__ typedef interface IMediaFilter IMediaFilter; #endif /* __IMediaFilter_FWD_DEFINED__ */ #ifndef __IBaseFilter_FWD_DEFINED__ #define __IBaseFilter_FWD_DEFINED__ typedef interface IBaseFilter IBaseFilter; #endif /* __IBaseFilter_FWD_DEFINED__ */ #ifndef __IReferenceClock_FWD_DEFINED__ #define __IReferenceClock_FWD_DEFINED__ typedef interface IReferenceClock IReferenceClock; #endif /* __IReferenceClock_FWD_DEFINED__ */ #ifndef __IReferenceClock2_FWD_DEFINED__ #define __IReferenceClock2_FWD_DEFINED__ typedef interface IReferenceClock2 IReferenceClock2; #endif /* __IReferenceClock2_FWD_DEFINED__ */ #ifndef __IMediaSample_FWD_DEFINED__ #define __IMediaSample_FWD_DEFINED__ typedef interface IMediaSample IMediaSample; #endif /* __IMediaSample_FWD_DEFINED__ */ #ifndef __IMediaSample2_FWD_DEFINED__ #define __IMediaSample2_FWD_DEFINED__ typedef interface IMediaSample2 IMediaSample2; #endif /* __IMediaSample2_FWD_DEFINED__ */ #ifndef __IMemAllocator_FWD_DEFINED__ #define __IMemAllocator_FWD_DEFINED__ typedef interface IMemAllocator IMemAllocator; #endif /* __IMemAllocator_FWD_DEFINED__ */ #ifndef __IMemAllocatorCallbackTemp_FWD_DEFINED__ #define __IMemAllocatorCallbackTemp_FWD_DEFINED__ typedef interface IMemAllocatorCallbackTemp IMemAllocatorCallbackTemp; #endif /* __IMemAllocatorCallbackTemp_FWD_DEFINED__ */ #ifndef __IMemAllocatorNotifyCallbackTemp_FWD_DEFINED__ #define __IMemAllocatorNotifyCallbackTemp_FWD_DEFINED__ typedef interface IMemAllocatorNotifyCallbackTemp IMemAllocatorNotifyCallbackTemp; #endif /* __IMemAllocatorNotifyCallbackTemp_FWD_DEFINED__ */ #ifndef __IMemInputPin_FWD_DEFINED__ #define __IMemInputPin_FWD_DEFINED__ typedef interface IMemInputPin IMemInputPin; #endif /* __IMemInputPin_FWD_DEFINED__ */ #ifndef __IAMovieSetup_FWD_DEFINED__ #define __IAMovieSetup_FWD_DEFINED__ typedef interface IAMovieSetup IAMovieSetup; #endif /* __IAMovieSetup_FWD_DEFINED__ */ #ifndef __IMediaSeeking_FWD_DEFINED__ #define __IMediaSeeking_FWD_DEFINED__ typedef interface IMediaSeeking IMediaSeeking; #endif /* __IMediaSeeking_FWD_DEFINED__ */ #ifndef __IEnumRegFilters_FWD_DEFINED__ #define __IEnumRegFilters_FWD_DEFINED__ typedef interface IEnumRegFilters IEnumRegFilters; #endif /* __IEnumRegFilters_FWD_DEFINED__ */ #ifndef __IFilterMapper_FWD_DEFINED__ #define __IFilterMapper_FWD_DEFINED__ typedef interface IFilterMapper IFilterMapper; #endif /* __IFilterMapper_FWD_DEFINED__ */ #ifndef __IFilterMapper2_FWD_DEFINED__ #define __IFilterMapper2_FWD_DEFINED__ typedef interface IFilterMapper2 IFilterMapper2; #endif /* __IFilterMapper2_FWD_DEFINED__ */ #ifndef __IFilterMapper3_FWD_DEFINED__ #define __IFilterMapper3_FWD_DEFINED__ typedef interface IFilterMapper3 IFilterMapper3; #endif /* __IFilterMapper3_FWD_DEFINED__ */ #ifndef __IQualityControl_FWD_DEFINED__ #define __IQualityControl_FWD_DEFINED__ typedef interface IQualityControl IQualityControl; #endif /* __IQualityControl_FWD_DEFINED__ */ #ifndef __IOverlayNotify_FWD_DEFINED__ #define __IOverlayNotify_FWD_DEFINED__ typedef interface IOverlayNotify IOverlayNotify; #endif /* __IOverlayNotify_FWD_DEFINED__ */ #ifndef __IOverlayNotify2_FWD_DEFINED__ #define __IOverlayNotify2_FWD_DEFINED__ typedef interface IOverlayNotify2 IOverlayNotify2; #endif /* __IOverlayNotify2_FWD_DEFINED__ */ #ifndef __IOverlay_FWD_DEFINED__ #define __IOverlay_FWD_DEFINED__ typedef interface IOverlay IOverlay; #endif /* __IOverlay_FWD_DEFINED__ */ #ifndef __IMediaEventSink_FWD_DEFINED__ #define __IMediaEventSink_FWD_DEFINED__ typedef interface IMediaEventSink IMediaEventSink; #endif /* __IMediaEventSink_FWD_DEFINED__ */ #ifndef __IFileSourceFilter_FWD_DEFINED__ #define __IFileSourceFilter_FWD_DEFINED__ typedef interface IFileSourceFilter IFileSourceFilter; #endif /* __IFileSourceFilter_FWD_DEFINED__ */ #ifndef __IFileSinkFilter_FWD_DEFINED__ #define __IFileSinkFilter_FWD_DEFINED__ typedef interface IFileSinkFilter IFileSinkFilter; #endif /* __IFileSinkFilter_FWD_DEFINED__ */ #ifndef __IFileSinkFilter2_FWD_DEFINED__ #define __IFileSinkFilter2_FWD_DEFINED__ typedef interface IFileSinkFilter2 IFileSinkFilter2; #endif /* __IFileSinkFilter2_FWD_DEFINED__ */ #ifndef __IGraphBuilder_FWD_DEFINED__ #define __IGraphBuilder_FWD_DEFINED__ typedef interface IGraphBuilder IGraphBuilder; #endif /* __IGraphBuilder_FWD_DEFINED__ */ #ifndef __ICaptureGraphBuilder_FWD_DEFINED__ #define __ICaptureGraphBuilder_FWD_DEFINED__ typedef interface ICaptureGraphBuilder ICaptureGraphBuilder; #endif /* __ICaptureGraphBuilder_FWD_DEFINED__ */ #ifndef __IAMCopyCaptureFileProgress_FWD_DEFINED__ #define __IAMCopyCaptureFileProgress_FWD_DEFINED__ typedef interface IAMCopyCaptureFileProgress IAMCopyCaptureFileProgress; #endif /* __IAMCopyCaptureFileProgress_FWD_DEFINED__ */ #ifndef __ICaptureGraphBuilder2_FWD_DEFINED__ #define __ICaptureGraphBuilder2_FWD_DEFINED__ typedef interface ICaptureGraphBuilder2 ICaptureGraphBuilder2; #endif /* __ICaptureGraphBuilder2_FWD_DEFINED__ */ #ifndef __IFilterGraph2_FWD_DEFINED__ #define __IFilterGraph2_FWD_DEFINED__ typedef interface IFilterGraph2 IFilterGraph2; #endif /* __IFilterGraph2_FWD_DEFINED__ */ #ifndef __IStreamBuilder_FWD_DEFINED__ #define __IStreamBuilder_FWD_DEFINED__ typedef interface IStreamBuilder IStreamBuilder; #endif /* __IStreamBuilder_FWD_DEFINED__ */ #ifndef __IAsyncReader_FWD_DEFINED__ #define __IAsyncReader_FWD_DEFINED__ typedef interface IAsyncReader IAsyncReader; #endif /* __IAsyncReader_FWD_DEFINED__ */ #ifndef __IGraphVersion_FWD_DEFINED__ #define __IGraphVersion_FWD_DEFINED__ typedef interface IGraphVersion IGraphVersion; #endif /* __IGraphVersion_FWD_DEFINED__ */ #ifndef __IResourceConsumer_FWD_DEFINED__ #define __IResourceConsumer_FWD_DEFINED__ typedef interface IResourceConsumer IResourceConsumer; #endif /* __IResourceConsumer_FWD_DEFINED__ */ #ifndef __IResourceManager_FWD_DEFINED__ #define __IResourceManager_FWD_DEFINED__ typedef interface IResourceManager IResourceManager; #endif /* __IResourceManager_FWD_DEFINED__ */ #ifndef __IDistributorNotify_FWD_DEFINED__ #define __IDistributorNotify_FWD_DEFINED__ typedef interface IDistributorNotify IDistributorNotify; #endif /* __IDistributorNotify_FWD_DEFINED__ */ #ifndef __IAMStreamControl_FWD_DEFINED__ #define __IAMStreamControl_FWD_DEFINED__ typedef interface IAMStreamControl IAMStreamControl; #endif /* __IAMStreamControl_FWD_DEFINED__ */ #ifndef __ISeekingPassThru_FWD_DEFINED__ #define __ISeekingPassThru_FWD_DEFINED__ typedef interface ISeekingPassThru ISeekingPassThru; #endif /* __ISeekingPassThru_FWD_DEFINED__ */ #ifndef __IAMStreamConfig_FWD_DEFINED__ #define __IAMStreamConfig_FWD_DEFINED__ typedef interface IAMStreamConfig IAMStreamConfig; #endif /* __IAMStreamConfig_FWD_DEFINED__ */ #ifndef __IConfigInterleaving_FWD_DEFINED__ #define __IConfigInterleaving_FWD_DEFINED__ typedef interface IConfigInterleaving IConfigInterleaving; #endif /* __IConfigInterleaving_FWD_DEFINED__ */ #ifndef __IConfigAviMux_FWD_DEFINED__ #define __IConfigAviMux_FWD_DEFINED__ typedef interface IConfigAviMux IConfigAviMux; #endif /* __IConfigAviMux_FWD_DEFINED__ */ #ifndef __IAMVideoCompression_FWD_DEFINED__ #define __IAMVideoCompression_FWD_DEFINED__ typedef interface IAMVideoCompression IAMVideoCompression; #endif /* __IAMVideoCompression_FWD_DEFINED__ */ #ifndef __IAMVfwCaptureDialogs_FWD_DEFINED__ #define __IAMVfwCaptureDialogs_FWD_DEFINED__ typedef interface IAMVfwCaptureDialogs IAMVfwCaptureDialogs; #endif /* __IAMVfwCaptureDialogs_FWD_DEFINED__ */ #ifndef __IAMVfwCompressDialogs_FWD_DEFINED__ #define __IAMVfwCompressDialogs_FWD_DEFINED__ typedef interface IAMVfwCompressDialogs IAMVfwCompressDialogs; #endif /* __IAMVfwCompressDialogs_FWD_DEFINED__ */ #ifndef __IAMDroppedFrames_FWD_DEFINED__ #define __IAMDroppedFrames_FWD_DEFINED__ typedef interface IAMDroppedFrames IAMDroppedFrames; #endif /* __IAMDroppedFrames_FWD_DEFINED__ */ #ifndef __IAMAudioInputMixer_FWD_DEFINED__ #define __IAMAudioInputMixer_FWD_DEFINED__ typedef interface IAMAudioInputMixer IAMAudioInputMixer; #endif /* __IAMAudioInputMixer_FWD_DEFINED__ */ #ifndef __IAMBufferNegotiation_FWD_DEFINED__ #define __IAMBufferNegotiation_FWD_DEFINED__ typedef interface IAMBufferNegotiation IAMBufferNegotiation; #endif /* __IAMBufferNegotiation_FWD_DEFINED__ */ #ifndef __IAMAnalogVideoDecoder_FWD_DEFINED__ #define __IAMAnalogVideoDecoder_FWD_DEFINED__ typedef interface IAMAnalogVideoDecoder IAMAnalogVideoDecoder; #endif /* __IAMAnalogVideoDecoder_FWD_DEFINED__ */ #ifndef __IAMVideoProcAmp_FWD_DEFINED__ #define __IAMVideoProcAmp_FWD_DEFINED__ typedef interface IAMVideoProcAmp IAMVideoProcAmp; #endif /* __IAMVideoProcAmp_FWD_DEFINED__ */ #ifndef __IAMCameraControl_FWD_DEFINED__ #define __IAMCameraControl_FWD_DEFINED__ typedef interface IAMCameraControl IAMCameraControl; #endif /* __IAMCameraControl_FWD_DEFINED__ */ #ifndef __IAMVideoControl_FWD_DEFINED__ #define __IAMVideoControl_FWD_DEFINED__ typedef interface IAMVideoControl IAMVideoControl; #endif /* __IAMVideoControl_FWD_DEFINED__ */ #ifndef __IAMCrossbar_FWD_DEFINED__ #define __IAMCrossbar_FWD_DEFINED__ typedef interface IAMCrossbar IAMCrossbar; #endif /* __IAMCrossbar_FWD_DEFINED__ */ #ifndef __IAMTuner_FWD_DEFINED__ #define __IAMTuner_FWD_DEFINED__ typedef interface IAMTuner IAMTuner; #endif /* __IAMTuner_FWD_DEFINED__ */ #ifndef __IAMTunerNotification_FWD_DEFINED__ #define __IAMTunerNotification_FWD_DEFINED__ typedef interface IAMTunerNotification IAMTunerNotification; #endif /* __IAMTunerNotification_FWD_DEFINED__ */ #ifndef __IAMTVTuner_FWD_DEFINED__ #define __IAMTVTuner_FWD_DEFINED__ typedef interface IAMTVTuner IAMTVTuner; #endif /* __IAMTVTuner_FWD_DEFINED__ */ #ifndef __IBPCSatelliteTuner_FWD_DEFINED__ #define __IBPCSatelliteTuner_FWD_DEFINED__ typedef interface IBPCSatelliteTuner IBPCSatelliteTuner; #endif /* __IBPCSatelliteTuner_FWD_DEFINED__ */ #ifndef __IAMTVAudio_FWD_DEFINED__ #define __IAMTVAudio_FWD_DEFINED__ typedef interface IAMTVAudio IAMTVAudio; #endif /* __IAMTVAudio_FWD_DEFINED__ */ #ifndef __IAMTVAudioNotification_FWD_DEFINED__ #define __IAMTVAudioNotification_FWD_DEFINED__ typedef interface IAMTVAudioNotification IAMTVAudioNotification; #endif /* __IAMTVAudioNotification_FWD_DEFINED__ */ #ifndef __IAMAnalogVideoEncoder_FWD_DEFINED__ #define __IAMAnalogVideoEncoder_FWD_DEFINED__ typedef interface IAMAnalogVideoEncoder IAMAnalogVideoEncoder; #endif /* __IAMAnalogVideoEncoder_FWD_DEFINED__ */ #ifndef __IKsPropertySet_FWD_DEFINED__ #define __IKsPropertySet_FWD_DEFINED__ typedef interface IKsPropertySet IKsPropertySet; #endif /* __IKsPropertySet_FWD_DEFINED__ */ #ifndef __IMediaPropertyBag_FWD_DEFINED__ #define __IMediaPropertyBag_FWD_DEFINED__ typedef interface IMediaPropertyBag IMediaPropertyBag; #endif /* __IMediaPropertyBag_FWD_DEFINED__ */ #ifndef __IPersistMediaPropertyBag_FWD_DEFINED__ #define __IPersistMediaPropertyBag_FWD_DEFINED__ typedef interface IPersistMediaPropertyBag IPersistMediaPropertyBag; #endif /* __IPersistMediaPropertyBag_FWD_DEFINED__ */ #ifndef __IAMPhysicalPinInfo_FWD_DEFINED__ #define __IAMPhysicalPinInfo_FWD_DEFINED__ typedef interface IAMPhysicalPinInfo IAMPhysicalPinInfo; #endif /* __IAMPhysicalPinInfo_FWD_DEFINED__ */ #ifndef __IAMExtDevice_FWD_DEFINED__ #define __IAMExtDevice_FWD_DEFINED__ typedef interface IAMExtDevice IAMExtDevice; #endif /* __IAMExtDevice_FWD_DEFINED__ */ #ifndef __IAMExtTransport_FWD_DEFINED__ #define __IAMExtTransport_FWD_DEFINED__ typedef interface IAMExtTransport IAMExtTransport; #endif /* __IAMExtTransport_FWD_DEFINED__ */ #ifndef __IAMTimecodeReader_FWD_DEFINED__ #define __IAMTimecodeReader_FWD_DEFINED__ typedef interface IAMTimecodeReader IAMTimecodeReader; #endif /* __IAMTimecodeReader_FWD_DEFINED__ */ #ifndef __IAMTimecodeGenerator_FWD_DEFINED__ #define __IAMTimecodeGenerator_FWD_DEFINED__ typedef interface IAMTimecodeGenerator IAMTimecodeGenerator; #endif /* __IAMTimecodeGenerator_FWD_DEFINED__ */ #ifndef __IAMTimecodeDisplay_FWD_DEFINED__ #define __IAMTimecodeDisplay_FWD_DEFINED__ typedef interface IAMTimecodeDisplay IAMTimecodeDisplay; #endif /* __IAMTimecodeDisplay_FWD_DEFINED__ */ #ifndef __IAMDevMemoryAllocator_FWD_DEFINED__ #define __IAMDevMemoryAllocator_FWD_DEFINED__ typedef interface IAMDevMemoryAllocator IAMDevMemoryAllocator; #endif /* __IAMDevMemoryAllocator_FWD_DEFINED__ */ #ifndef __IAMDevMemoryControl_FWD_DEFINED__ #define __IAMDevMemoryControl_FWD_DEFINED__ typedef interface IAMDevMemoryControl IAMDevMemoryControl; #endif /* __IAMDevMemoryControl_FWD_DEFINED__ */ #ifndef __IAMStreamSelect_FWD_DEFINED__ #define __IAMStreamSelect_FWD_DEFINED__ typedef interface IAMStreamSelect IAMStreamSelect; #endif /* __IAMStreamSelect_FWD_DEFINED__ */ #ifndef __IAMResourceControl_FWD_DEFINED__ #define __IAMResourceControl_FWD_DEFINED__ typedef interface IAMResourceControl IAMResourceControl; #endif /* __IAMResourceControl_FWD_DEFINED__ */ #ifndef __IAMClockAdjust_FWD_DEFINED__ #define __IAMClockAdjust_FWD_DEFINED__ typedef interface IAMClockAdjust IAMClockAdjust; #endif /* __IAMClockAdjust_FWD_DEFINED__ */ #ifndef __IAMFilterMiscFlags_FWD_DEFINED__ #define __IAMFilterMiscFlags_FWD_DEFINED__ typedef interface IAMFilterMiscFlags IAMFilterMiscFlags; #endif /* __IAMFilterMiscFlags_FWD_DEFINED__ */ #ifndef __IDrawVideoImage_FWD_DEFINED__ #define __IDrawVideoImage_FWD_DEFINED__ typedef interface IDrawVideoImage IDrawVideoImage; #endif /* __IDrawVideoImage_FWD_DEFINED__ */ #ifndef __IDecimateVideoImage_FWD_DEFINED__ #define __IDecimateVideoImage_FWD_DEFINED__ typedef interface IDecimateVideoImage IDecimateVideoImage; #endif /* __IDecimateVideoImage_FWD_DEFINED__ */ #ifndef __IAMVideoDecimationProperties_FWD_DEFINED__ #define __IAMVideoDecimationProperties_FWD_DEFINED__ typedef interface IAMVideoDecimationProperties IAMVideoDecimationProperties; #endif /* __IAMVideoDecimationProperties_FWD_DEFINED__ */ #ifndef __IVideoFrameStep_FWD_DEFINED__ #define __IVideoFrameStep_FWD_DEFINED__ typedef interface IVideoFrameStep IVideoFrameStep; #endif /* __IVideoFrameStep_FWD_DEFINED__ */ #ifndef __IAMLatency_FWD_DEFINED__ #define __IAMLatency_FWD_DEFINED__ typedef interface IAMLatency IAMLatency; #endif /* __IAMLatency_FWD_DEFINED__ */ #ifndef __IAMPushSource_FWD_DEFINED__ #define __IAMPushSource_FWD_DEFINED__ typedef interface IAMPushSource IAMPushSource; #endif /* __IAMPushSource_FWD_DEFINED__ */ #ifndef __IAMDeviceRemoval_FWD_DEFINED__ #define __IAMDeviceRemoval_FWD_DEFINED__ typedef interface IAMDeviceRemoval IAMDeviceRemoval; #endif /* __IAMDeviceRemoval_FWD_DEFINED__ */ #ifndef __IDVEnc_FWD_DEFINED__ #define __IDVEnc_FWD_DEFINED__ typedef interface IDVEnc IDVEnc; #endif /* __IDVEnc_FWD_DEFINED__ */ #ifndef __IIPDVDec_FWD_DEFINED__ #define __IIPDVDec_FWD_DEFINED__ typedef interface IIPDVDec IIPDVDec; #endif /* __IIPDVDec_FWD_DEFINED__ */ #ifndef __IDVRGB219_FWD_DEFINED__ #define __IDVRGB219_FWD_DEFINED__ typedef interface IDVRGB219 IDVRGB219; #endif /* __IDVRGB219_FWD_DEFINED__ */ #ifndef __IDVSplitter_FWD_DEFINED__ #define __IDVSplitter_FWD_DEFINED__ typedef interface IDVSplitter IDVSplitter; #endif /* __IDVSplitter_FWD_DEFINED__ */ #ifndef __IAMAudioRendererStats_FWD_DEFINED__ #define __IAMAudioRendererStats_FWD_DEFINED__ typedef interface IAMAudioRendererStats IAMAudioRendererStats; #endif /* __IAMAudioRendererStats_FWD_DEFINED__ */ #ifndef __IAMGraphStreams_FWD_DEFINED__ #define __IAMGraphStreams_FWD_DEFINED__ typedef interface IAMGraphStreams IAMGraphStreams; #endif /* __IAMGraphStreams_FWD_DEFINED__ */ #ifndef __IAMOverlayFX_FWD_DEFINED__ #define __IAMOverlayFX_FWD_DEFINED__ typedef interface IAMOverlayFX IAMOverlayFX; #endif /* __IAMOverlayFX_FWD_DEFINED__ */ #ifndef __IAMOpenProgress_FWD_DEFINED__ #define __IAMOpenProgress_FWD_DEFINED__ typedef interface IAMOpenProgress IAMOpenProgress; #endif /* __IAMOpenProgress_FWD_DEFINED__ */ #ifndef __IMpeg2Demultiplexer_FWD_DEFINED__ #define __IMpeg2Demultiplexer_FWD_DEFINED__ typedef interface IMpeg2Demultiplexer IMpeg2Demultiplexer; #endif /* __IMpeg2Demultiplexer_FWD_DEFINED__ */ #ifndef __IEnumStreamIdMap_FWD_DEFINED__ #define __IEnumStreamIdMap_FWD_DEFINED__ typedef interface IEnumStreamIdMap IEnumStreamIdMap; #endif /* __IEnumStreamIdMap_FWD_DEFINED__ */ #ifndef __IMPEG2StreamIdMap_FWD_DEFINED__ #define __IMPEG2StreamIdMap_FWD_DEFINED__ typedef interface IMPEG2StreamIdMap IMPEG2StreamIdMap; #endif /* __IMPEG2StreamIdMap_FWD_DEFINED__ */ #ifndef __IRegisterServiceProvider_FWD_DEFINED__ #define __IRegisterServiceProvider_FWD_DEFINED__ typedef interface IRegisterServiceProvider IRegisterServiceProvider; #endif /* __IRegisterServiceProvider_FWD_DEFINED__ */ #ifndef __IAMDecoderCaps_FWD_DEFINED__ #define __IAMDecoderCaps_FWD_DEFINED__ typedef interface IAMDecoderCaps IAMDecoderCaps; #endif /* __IAMDecoderCaps_FWD_DEFINED__ */ #ifndef __IAMClockSlave_FWD_DEFINED__ #define __IAMClockSlave_FWD_DEFINED__ typedef interface IAMClockSlave IAMClockSlave; #endif /* __IAMClockSlave_FWD_DEFINED__ */ #ifndef __IDvdControl_FWD_DEFINED__ #define __IDvdControl_FWD_DEFINED__ typedef interface IDvdControl IDvdControl; #endif /* __IDvdControl_FWD_DEFINED__ */ #ifndef __IDvdInfo_FWD_DEFINED__ #define __IDvdInfo_FWD_DEFINED__ typedef interface IDvdInfo IDvdInfo; #endif /* __IDvdInfo_FWD_DEFINED__ */ #ifndef __IDvdCmd_FWD_DEFINED__ #define __IDvdCmd_FWD_DEFINED__ typedef interface IDvdCmd IDvdCmd; #endif /* __IDvdCmd_FWD_DEFINED__ */ #ifndef __IDvdState_FWD_DEFINED__ #define __IDvdState_FWD_DEFINED__ typedef interface IDvdState IDvdState; #endif /* __IDvdState_FWD_DEFINED__ */ #ifndef __IDvdControl2_FWD_DEFINED__ #define __IDvdControl2_FWD_DEFINED__ typedef interface IDvdControl2 IDvdControl2; #endif /* __IDvdControl2_FWD_DEFINED__ */ #ifndef __IDvdInfo2_FWD_DEFINED__ #define __IDvdInfo2_FWD_DEFINED__ typedef interface IDvdInfo2 IDvdInfo2; #endif /* __IDvdInfo2_FWD_DEFINED__ */ #ifndef __IDvdGraphBuilder_FWD_DEFINED__ #define __IDvdGraphBuilder_FWD_DEFINED__ typedef interface IDvdGraphBuilder IDvdGraphBuilder; #endif /* __IDvdGraphBuilder_FWD_DEFINED__ */ #ifndef __IDDrawExclModeVideo_FWD_DEFINED__ #define __IDDrawExclModeVideo_FWD_DEFINED__ typedef interface IDDrawExclModeVideo IDDrawExclModeVideo; #endif /* __IDDrawExclModeVideo_FWD_DEFINED__ */ #ifndef __IDDrawExclModeVideoCallback_FWD_DEFINED__ #define __IDDrawExclModeVideoCallback_FWD_DEFINED__ typedef interface IDDrawExclModeVideoCallback IDDrawExclModeVideoCallback; #endif /* __IDDrawExclModeVideoCallback_FWD_DEFINED__ */ #ifndef __IPinConnection_FWD_DEFINED__ #define __IPinConnection_FWD_DEFINED__ typedef interface IPinConnection IPinConnection; #endif /* __IPinConnection_FWD_DEFINED__ */ #ifndef __IPinFlowControl_FWD_DEFINED__ #define __IPinFlowControl_FWD_DEFINED__ typedef interface IPinFlowControl IPinFlowControl; #endif /* __IPinFlowControl_FWD_DEFINED__ */ #ifndef __IGraphConfig_FWD_DEFINED__ #define __IGraphConfig_FWD_DEFINED__ typedef interface IGraphConfig IGraphConfig; #endif /* __IGraphConfig_FWD_DEFINED__ */ #ifndef __IGraphConfigCallback_FWD_DEFINED__ #define __IGraphConfigCallback_FWD_DEFINED__ typedef interface IGraphConfigCallback IGraphConfigCallback; #endif /* __IGraphConfigCallback_FWD_DEFINED__ */ #ifndef __IFilterChain_FWD_DEFINED__ #define __IFilterChain_FWD_DEFINED__ typedef interface IFilterChain IFilterChain; #endif /* __IFilterChain_FWD_DEFINED__ */ #ifndef __IVMRImagePresenter_FWD_DEFINED__ #define __IVMRImagePresenter_FWD_DEFINED__ typedef interface IVMRImagePresenter IVMRImagePresenter; #endif /* __IVMRImagePresenter_FWD_DEFINED__ */ #ifndef __IVMRSurfaceAllocator_FWD_DEFINED__ #define __IVMRSurfaceAllocator_FWD_DEFINED__ typedef interface IVMRSurfaceAllocator IVMRSurfaceAllocator; #endif /* __IVMRSurfaceAllocator_FWD_DEFINED__ */ #ifndef __IVMRSurfaceAllocatorNotify_FWD_DEFINED__ #define __IVMRSurfaceAllocatorNotify_FWD_DEFINED__ typedef interface IVMRSurfaceAllocatorNotify IVMRSurfaceAllocatorNotify; #endif /* __IVMRSurfaceAllocatorNotify_FWD_DEFINED__ */ #ifndef __IVMRWindowlessControl_FWD_DEFINED__ #define __IVMRWindowlessControl_FWD_DEFINED__ typedef interface IVMRWindowlessControl IVMRWindowlessControl; #endif /* __IVMRWindowlessControl_FWD_DEFINED__ */ #ifndef __IVMRMixerControl_FWD_DEFINED__ #define __IVMRMixerControl_FWD_DEFINED__ typedef interface IVMRMixerControl IVMRMixerControl; #endif /* __IVMRMixerControl_FWD_DEFINED__ */ #ifndef __IVMRMonitorConfig_FWD_DEFINED__ #define __IVMRMonitorConfig_FWD_DEFINED__ typedef interface IVMRMonitorConfig IVMRMonitorConfig; #endif /* __IVMRMonitorConfig_FWD_DEFINED__ */ #ifndef __IVMRFilterConfig_FWD_DEFINED__ #define __IVMRFilterConfig_FWD_DEFINED__ typedef interface IVMRFilterConfig IVMRFilterConfig; #endif /* __IVMRFilterConfig_FWD_DEFINED__ */ #ifndef __IVMRMixerBitmap_FWD_DEFINED__ #define __IVMRMixerBitmap_FWD_DEFINED__ typedef interface IVMRMixerBitmap IVMRMixerBitmap; #endif /* __IVMRMixerBitmap_FWD_DEFINED__ */ #ifndef __IVMRImageCompositor_FWD_DEFINED__ #define __IVMRImageCompositor_FWD_DEFINED__ typedef interface IVMRImageCompositor IVMRImageCompositor; #endif /* __IVMRImageCompositor_FWD_DEFINED__ */ #ifndef __IVMRVideoStreamControl_FWD_DEFINED__ #define __IVMRVideoStreamControl_FWD_DEFINED__ typedef interface IVMRVideoStreamControl IVMRVideoStreamControl; #endif /* __IVMRVideoStreamControl_FWD_DEFINED__ */ #ifndef __IVMRSurface_FWD_DEFINED__ #define __IVMRSurface_FWD_DEFINED__ typedef interface IVMRSurface IVMRSurface; #endif /* __IVMRSurface_FWD_DEFINED__ */ #ifndef __IVMRImagePresenterConfig_FWD_DEFINED__ #define __IVMRImagePresenterConfig_FWD_DEFINED__ typedef interface IVMRImagePresenterConfig IVMRImagePresenterConfig; #endif /* __IVMRImagePresenterConfig_FWD_DEFINED__ */ #ifndef __IVMRImagePresenterExclModeConfig_FWD_DEFINED__ #define __IVMRImagePresenterExclModeConfig_FWD_DEFINED__ typedef interface IVMRImagePresenterExclModeConfig IVMRImagePresenterExclModeConfig; #endif /* __IVMRImagePresenterExclModeConfig_FWD_DEFINED__ */ #ifndef __IVPManager_FWD_DEFINED__ #define __IVPManager_FWD_DEFINED__ typedef interface IVPManager IVPManager; #endif /* __IVPManager_FWD_DEFINED__ */ /* header files for imported files */ #include "unknwn.h" #include "objidl.h" #include "oaidl.h" #include "ocidl.h" #ifdef __cplusplus extern "C"{ #endif void * __RPC_USER MIDL_user_allocate(size_t); void __RPC_USER MIDL_user_free( void * ); /* interface __MIDL_itf_strmif_0000 */ /* [local] */ //+------------------------------------------------------------------------- // // Copyright (C) Microsoft Corporation, 1999-2001. // //-------------------------------------------------------------------------- // Disable /W4 compiler warning C4201: nameless struct/union #pragma warning(disable:4201) // Disable C4201: nameless struct/union #define CDEF_CLASS_DEFAULT 0x0001 #define CDEF_BYPASS_CLASS_MANAGER 0x0002 #define CDEF_MERIT_ABOVE_DO_NOT_USE 0x0008 #define CDEF_DEVMON_CMGR_DEVICE 0x0010 #define CDEF_DEVMON_DMO 0x0020 #define CDEF_DEVMON_PNP_DEVICE 0x0040 #define CDEF_DEVMON_FILTER 0x0080 #define CDEF_DEVMON_SELECTIVE_MASK 0x00f0 extern RPC_IF_HANDLE __MIDL_itf_strmif_0000_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0000_v0_0_s_ifspec; #ifndef __ICreateDevEnum_INTERFACE_DEFINED__ #define __ICreateDevEnum_INTERFACE_DEFINED__ /* interface ICreateDevEnum */ /* [unique][uuid][object] */ EXTERN_C const IID IID_ICreateDevEnum; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("29840822-5B84-11D0-BD3B-00A0C911CE86") ICreateDevEnum : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE CreateClassEnumerator( /* [in] */ REFCLSID clsidDeviceClass, /* [out] */ IEnumMoniker **ppEnumMoniker, /* [in] */ DWORD dwFlags) = 0; }; #else /* C style interface */ typedef struct ICreateDevEnumVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( ICreateDevEnum * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( ICreateDevEnum * This); ULONG ( STDMETHODCALLTYPE *Release )( ICreateDevEnum * This); HRESULT ( STDMETHODCALLTYPE *CreateClassEnumerator )( ICreateDevEnum * This, /* [in] */ REFCLSID clsidDeviceClass, /* [out] */ IEnumMoniker **ppEnumMoniker, /* [in] */ DWORD dwFlags); END_INTERFACE } ICreateDevEnumVtbl; interface ICreateDevEnum { CONST_VTBL struct ICreateDevEnumVtbl *lpVtbl; }; #ifdef COBJMACROS #define ICreateDevEnum_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define ICreateDevEnum_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define ICreateDevEnum_Release(This) \ (This)->lpVtbl -> Release(This) #define ICreateDevEnum_CreateClassEnumerator(This,clsidDeviceClass,ppEnumMoniker,dwFlags) \ (This)->lpVtbl -> CreateClassEnumerator(This,clsidDeviceClass,ppEnumMoniker,dwFlags) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE ICreateDevEnum_CreateClassEnumerator_Proxy( ICreateDevEnum * This, /* [in] */ REFCLSID clsidDeviceClass, /* [out] */ IEnumMoniker **ppEnumMoniker, /* [in] */ DWORD dwFlags); void __RPC_STUB ICreateDevEnum_CreateClassEnumerator_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __ICreateDevEnum_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0112 */ /* [local] */ #define CHARS_IN_GUID 39 typedef struct _AMMediaType { GUID majortype; GUID subtype; BOOL bFixedSizeSamples; BOOL bTemporalCompression; ULONG lSampleSize; GUID formattype; IUnknown *pUnk; ULONG cbFormat; /* [size_is] */ BYTE *pbFormat; } AM_MEDIA_TYPE; typedef enum _PinDirection { PINDIR_INPUT = 0, PINDIR_OUTPUT = PINDIR_INPUT + 1 } PIN_DIRECTION; #define MAX_PIN_NAME 128 #define MAX_FILTER_NAME 128 typedef LONGLONG REFERENCE_TIME; typedef double REFTIME; typedef DWORD_PTR HSEMAPHORE; typedef DWORD_PTR HEVENT; typedef struct _AllocatorProperties { long cBuffers; long cbBuffer; long cbAlign; long cbPrefix; } ALLOCATOR_PROPERTIES; extern RPC_IF_HANDLE __MIDL_itf_strmif_0112_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0112_v0_0_s_ifspec; #ifndef __IPin_INTERFACE_DEFINED__ #define __IPin_INTERFACE_DEFINED__ /* interface IPin */ /* [unique][uuid][object] */ typedef struct _PinInfo { IBaseFilter *pFilter; PIN_DIRECTION dir; WCHAR achName[ 128 ]; } PIN_INFO; EXTERN_C const IID IID_IPin; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("56a86891-0ad4-11ce-b03a-0020af0ba770") IPin : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE Connect( /* [in] */ IPin *pReceivePin, /* [in] */ const AM_MEDIA_TYPE *pmt) = 0; virtual HRESULT STDMETHODCALLTYPE ReceiveConnection( /* [in] */ IPin *pConnector, /* [in] */ const AM_MEDIA_TYPE *pmt) = 0; virtual HRESULT STDMETHODCALLTYPE Disconnect( void) = 0; virtual HRESULT STDMETHODCALLTYPE ConnectedTo( /* [out] */ IPin **pPin) = 0; virtual HRESULT STDMETHODCALLTYPE ConnectionMediaType( /* [out] */ AM_MEDIA_TYPE *pmt) = 0; virtual HRESULT STDMETHODCALLTYPE QueryPinInfo( /* [out] */ PIN_INFO *pInfo) = 0; virtual HRESULT STDMETHODCALLTYPE QueryDirection( /* [out] */ PIN_DIRECTION *pPinDir) = 0; virtual HRESULT STDMETHODCALLTYPE QueryId( /* [out] */ LPWSTR *Id) = 0; virtual HRESULT STDMETHODCALLTYPE QueryAccept( /* [in] */ const AM_MEDIA_TYPE *pmt) = 0; virtual HRESULT STDMETHODCALLTYPE EnumMediaTypes( /* [out] */ IEnumMediaTypes **ppEnum) = 0; virtual HRESULT STDMETHODCALLTYPE QueryInternalConnections( /* [out] */ IPin **apPin, /* [out][in] */ ULONG *nPin) = 0; virtual HRESULT STDMETHODCALLTYPE EndOfStream( void) = 0; virtual HRESULT STDMETHODCALLTYPE BeginFlush( void) = 0; virtual HRESULT STDMETHODCALLTYPE EndFlush( void) = 0; virtual HRESULT STDMETHODCALLTYPE NewSegment( /* [in] */ REFERENCE_TIME tStart, /* [in] */ REFERENCE_TIME tStop, /* [in] */ double dRate) = 0; }; #else /* C style interface */ typedef struct IPinVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IPin * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IPin * This); ULONG ( STDMETHODCALLTYPE *Release )( IPin * This); HRESULT ( STDMETHODCALLTYPE *Connect )( IPin * This, /* [in] */ IPin *pReceivePin, /* [in] */ const AM_MEDIA_TYPE *pmt); HRESULT ( STDMETHODCALLTYPE *ReceiveConnection )( IPin * This, /* [in] */ IPin *pConnector, /* [in] */ const AM_MEDIA_TYPE *pmt); HRESULT ( STDMETHODCALLTYPE *Disconnect )( IPin * This); HRESULT ( STDMETHODCALLTYPE *ConnectedTo )( IPin * This, /* [out] */ IPin **pPin); HRESULT ( STDMETHODCALLTYPE *ConnectionMediaType )( IPin * This, /* [out] */ AM_MEDIA_TYPE *pmt); HRESULT ( STDMETHODCALLTYPE *QueryPinInfo )( IPin * This, /* [out] */ PIN_INFO *pInfo); HRESULT ( STDMETHODCALLTYPE *QueryDirection )( IPin * This, /* [out] */ PIN_DIRECTION *pPinDir); HRESULT ( STDMETHODCALLTYPE *QueryId )( IPin * This, /* [out] */ LPWSTR *Id); HRESULT ( STDMETHODCALLTYPE *QueryAccept )( IPin * This, /* [in] */ const AM_MEDIA_TYPE *pmt); HRESULT ( STDMETHODCALLTYPE *EnumMediaTypes )( IPin * This, /* [out] */ IEnumMediaTypes **ppEnum); HRESULT ( STDMETHODCALLTYPE *QueryInternalConnections )( IPin * This, /* [out] */ IPin **apPin, /* [out][in] */ ULONG *nPin); HRESULT ( STDMETHODCALLTYPE *EndOfStream )( IPin * This); HRESULT ( STDMETHODCALLTYPE *BeginFlush )( IPin * This); HRESULT ( STDMETHODCALLTYPE *EndFlush )( IPin * This); HRESULT ( STDMETHODCALLTYPE *NewSegment )( IPin * This, /* [in] */ REFERENCE_TIME tStart, /* [in] */ REFERENCE_TIME tStop, /* [in] */ double dRate); END_INTERFACE } IPinVtbl; interface IPin { CONST_VTBL struct IPinVtbl *lpVtbl; }; #ifdef COBJMACROS #define IPin_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IPin_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IPin_Release(This) \ (This)->lpVtbl -> Release(This) #define IPin_Connect(This,pReceivePin,pmt) \ (This)->lpVtbl -> Connect(This,pReceivePin,pmt) #define IPin_ReceiveConnection(This,pConnector,pmt) \ (This)->lpVtbl -> ReceiveConnection(This,pConnector,pmt) #define IPin_Disconnect(This) \ (This)->lpVtbl -> Disconnect(This) #define IPin_ConnectedTo(This,pPin) \ (This)->lpVtbl -> ConnectedTo(This,pPin) #define IPin_ConnectionMediaType(This,pmt) \ (This)->lpVtbl -> ConnectionMediaType(This,pmt) #define IPin_QueryPinInfo(This,pInfo) \ (This)->lpVtbl -> QueryPinInfo(This,pInfo) #define IPin_QueryDirection(This,pPinDir) \ (This)->lpVtbl -> QueryDirection(This,pPinDir) #define IPin_QueryId(This,Id) \ (This)->lpVtbl -> QueryId(This,Id) #define IPin_QueryAccept(This,pmt) \ (This)->lpVtbl -> QueryAccept(This,pmt) #define IPin_EnumMediaTypes(This,ppEnum) \ (This)->lpVtbl -> EnumMediaTypes(This,ppEnum) #define IPin_QueryInternalConnections(This,apPin,nPin) \ (This)->lpVtbl -> QueryInternalConnections(This,apPin,nPin) #define IPin_EndOfStream(This) \ (This)->lpVtbl -> EndOfStream(This) #define IPin_BeginFlush(This) \ (This)->lpVtbl -> BeginFlush(This) #define IPin_EndFlush(This) \ (This)->lpVtbl -> EndFlush(This) #define IPin_NewSegment(This,tStart,tStop,dRate) \ (This)->lpVtbl -> NewSegment(This,tStart,tStop,dRate) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IPin_Connect_Proxy( IPin * This, /* [in] */ IPin *pReceivePin, /* [in] */ const AM_MEDIA_TYPE *pmt); void __RPC_STUB IPin_Connect_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IPin_ReceiveConnection_Proxy( IPin * This, /* [in] */ IPin *pConnector, /* [in] */ const AM_MEDIA_TYPE *pmt); void __RPC_STUB IPin_ReceiveConnection_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IPin_Disconnect_Proxy( IPin * This); void __RPC_STUB IPin_Disconnect_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IPin_ConnectedTo_Proxy( IPin * This, /* [out] */ IPin **pPin); void __RPC_STUB IPin_ConnectedTo_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IPin_ConnectionMediaType_Proxy( IPin * This, /* [out] */ AM_MEDIA_TYPE *pmt); void __RPC_STUB IPin_ConnectionMediaType_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IPin_QueryPinInfo_Proxy( IPin * This, /* [out] */ PIN_INFO *pInfo); void __RPC_STUB IPin_QueryPinInfo_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IPin_QueryDirection_Proxy( IPin * This, /* [out] */ PIN_DIRECTION *pPinDir); void __RPC_STUB IPin_QueryDirection_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IPin_QueryId_Proxy( IPin * This, /* [out] */ LPWSTR *Id); void __RPC_STUB IPin_QueryId_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IPin_QueryAccept_Proxy( IPin * This, /* [in] */ const AM_MEDIA_TYPE *pmt); void __RPC_STUB IPin_QueryAccept_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IPin_EnumMediaTypes_Proxy( IPin * This, /* [out] */ IEnumMediaTypes **ppEnum); void __RPC_STUB IPin_EnumMediaTypes_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IPin_QueryInternalConnections_Proxy( IPin * This, /* [out] */ IPin **apPin, /* [out][in] */ ULONG *nPin); void __RPC_STUB IPin_QueryInternalConnections_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IPin_EndOfStream_Proxy( IPin * This); void __RPC_STUB IPin_EndOfStream_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IPin_BeginFlush_Proxy( IPin * This); void __RPC_STUB IPin_BeginFlush_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IPin_EndFlush_Proxy( IPin * This); void __RPC_STUB IPin_EndFlush_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IPin_NewSegment_Proxy( IPin * This, /* [in] */ REFERENCE_TIME tStart, /* [in] */ REFERENCE_TIME tStop, /* [in] */ double dRate); void __RPC_STUB IPin_NewSegment_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IPin_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0113 */ /* [local] */ typedef IPin *PPIN; extern RPC_IF_HANDLE __MIDL_itf_strmif_0113_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0113_v0_0_s_ifspec; #ifndef __IEnumPins_INTERFACE_DEFINED__ #define __IEnumPins_INTERFACE_DEFINED__ /* interface IEnumPins */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IEnumPins; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("56a86892-0ad4-11ce-b03a-0020af0ba770") IEnumPins : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE Next( /* [in] */ ULONG cPins, /* [size_is][out] */ IPin **ppPins, /* [out] */ ULONG *pcFetched) = 0; virtual HRESULT STDMETHODCALLTYPE Skip( /* [in] */ ULONG cPins) = 0; virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0; virtual HRESULT STDMETHODCALLTYPE Clone( /* [out] */ IEnumPins **ppEnum) = 0; }; #else /* C style interface */ typedef struct IEnumPinsVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IEnumPins * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IEnumPins * This); ULONG ( STDMETHODCALLTYPE *Release )( IEnumPins * This); HRESULT ( STDMETHODCALLTYPE *Next )( IEnumPins * This, /* [in] */ ULONG cPins, /* [size_is][out] */ IPin **ppPins, /* [out] */ ULONG *pcFetched); HRESULT ( STDMETHODCALLTYPE *Skip )( IEnumPins * This, /* [in] */ ULONG cPins); HRESULT ( STDMETHODCALLTYPE *Reset )( IEnumPins * This); HRESULT ( STDMETHODCALLTYPE *Clone )( IEnumPins * This, /* [out] */ IEnumPins **ppEnum); END_INTERFACE } IEnumPinsVtbl; interface IEnumPins { CONST_VTBL struct IEnumPinsVtbl *lpVtbl; }; #ifdef COBJMACROS #define IEnumPins_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IEnumPins_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IEnumPins_Release(This) \ (This)->lpVtbl -> Release(This) #define IEnumPins_Next(This,cPins,ppPins,pcFetched) \ (This)->lpVtbl -> Next(This,cPins,ppPins,pcFetched) #define IEnumPins_Skip(This,cPins) \ (This)->lpVtbl -> Skip(This,cPins) #define IEnumPins_Reset(This) \ (This)->lpVtbl -> Reset(This) #define IEnumPins_Clone(This,ppEnum) \ (This)->lpVtbl -> Clone(This,ppEnum) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IEnumPins_Next_Proxy( IEnumPins * This, /* [in] */ ULONG cPins, /* [size_is][out] */ IPin **ppPins, /* [out] */ ULONG *pcFetched); void __RPC_STUB IEnumPins_Next_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IEnumPins_Skip_Proxy( IEnumPins * This, /* [in] */ ULONG cPins); void __RPC_STUB IEnumPins_Skip_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IEnumPins_Reset_Proxy( IEnumPins * This); void __RPC_STUB IEnumPins_Reset_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IEnumPins_Clone_Proxy( IEnumPins * This, /* [out] */ IEnumPins **ppEnum); void __RPC_STUB IEnumPins_Clone_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IEnumPins_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0114 */ /* [local] */ typedef IEnumPins *PENUMPINS; extern RPC_IF_HANDLE __MIDL_itf_strmif_0114_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0114_v0_0_s_ifspec; #ifndef __IEnumMediaTypes_INTERFACE_DEFINED__ #define __IEnumMediaTypes_INTERFACE_DEFINED__ /* interface IEnumMediaTypes */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IEnumMediaTypes; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("89c31040-846b-11ce-97d3-00aa0055595a") IEnumMediaTypes : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE Next( /* [in] */ ULONG cMediaTypes, /* [size_is][out] */ AM_MEDIA_TYPE **ppMediaTypes, /* [out] */ ULONG *pcFetched) = 0; virtual HRESULT STDMETHODCALLTYPE Skip( /* [in] */ ULONG cMediaTypes) = 0; virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0; virtual HRESULT STDMETHODCALLTYPE Clone( /* [out] */ IEnumMediaTypes **ppEnum) = 0; }; #else /* C style interface */ typedef struct IEnumMediaTypesVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IEnumMediaTypes * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IEnumMediaTypes * This); ULONG ( STDMETHODCALLTYPE *Release )( IEnumMediaTypes * This); HRESULT ( STDMETHODCALLTYPE *Next )( IEnumMediaTypes * This, /* [in] */ ULONG cMediaTypes, /* [size_is][out] */ AM_MEDIA_TYPE **ppMediaTypes, /* [out] */ ULONG *pcFetched); HRESULT ( STDMETHODCALLTYPE *Skip )( IEnumMediaTypes * This, /* [in] */ ULONG cMediaTypes); HRESULT ( STDMETHODCALLTYPE *Reset )( IEnumMediaTypes * This); HRESULT ( STDMETHODCALLTYPE *Clone )( IEnumMediaTypes * This, /* [out] */ IEnumMediaTypes **ppEnum); END_INTERFACE } IEnumMediaTypesVtbl; interface IEnumMediaTypes { CONST_VTBL struct IEnumMediaTypesVtbl *lpVtbl; }; #ifdef COBJMACROS #define IEnumMediaTypes_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IEnumMediaTypes_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IEnumMediaTypes_Release(This) \ (This)->lpVtbl -> Release(This) #define IEnumMediaTypes_Next(This,cMediaTypes,ppMediaTypes,pcFetched) \ (This)->lpVtbl -> Next(This,cMediaTypes,ppMediaTypes,pcFetched) #define IEnumMediaTypes_Skip(This,cMediaTypes) \ (This)->lpVtbl -> Skip(This,cMediaTypes) #define IEnumMediaTypes_Reset(This) \ (This)->lpVtbl -> Reset(This) #define IEnumMediaTypes_Clone(This,ppEnum) \ (This)->lpVtbl -> Clone(This,ppEnum) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IEnumMediaTypes_Next_Proxy( IEnumMediaTypes * This, /* [in] */ ULONG cMediaTypes, /* [size_is][out] */ AM_MEDIA_TYPE **ppMediaTypes, /* [out] */ ULONG *pcFetched); void __RPC_STUB IEnumMediaTypes_Next_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IEnumMediaTypes_Skip_Proxy( IEnumMediaTypes * This, /* [in] */ ULONG cMediaTypes); void __RPC_STUB IEnumMediaTypes_Skip_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IEnumMediaTypes_Reset_Proxy( IEnumMediaTypes * This); void __RPC_STUB IEnumMediaTypes_Reset_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IEnumMediaTypes_Clone_Proxy( IEnumMediaTypes * This, /* [out] */ IEnumMediaTypes **ppEnum); void __RPC_STUB IEnumMediaTypes_Clone_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IEnumMediaTypes_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0115 */ /* [local] */ typedef IEnumMediaTypes *PENUMMEDIATYPES; extern RPC_IF_HANDLE __MIDL_itf_strmif_0115_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0115_v0_0_s_ifspec; #ifndef __IFilterGraph_INTERFACE_DEFINED__ #define __IFilterGraph_INTERFACE_DEFINED__ /* interface IFilterGraph */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IFilterGraph; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("56a8689f-0ad4-11ce-b03a-0020af0ba770") IFilterGraph : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE AddFilter( /* [in] */ IBaseFilter *pFilter, /* [string][in] */ LPCWSTR pName) = 0; virtual HRESULT STDMETHODCALLTYPE RemoveFilter( /* [in] */ IBaseFilter *pFilter) = 0; virtual HRESULT STDMETHODCALLTYPE EnumFilters( /* [out] */ IEnumFilters **ppEnum) = 0; virtual HRESULT STDMETHODCALLTYPE FindFilterByName( /* [string][in] */ LPCWSTR pName, /* [out] */ IBaseFilter **ppFilter) = 0; virtual HRESULT STDMETHODCALLTYPE ConnectDirect( /* [in] */ IPin *ppinOut, /* [in] */ IPin *ppinIn, /* [unique][in] */ const AM_MEDIA_TYPE *pmt) = 0; virtual HRESULT STDMETHODCALLTYPE Reconnect( /* [in] */ IPin *ppin) = 0; virtual HRESULT STDMETHODCALLTYPE Disconnect( /* [in] */ IPin *ppin) = 0; virtual HRESULT STDMETHODCALLTYPE SetDefaultSyncSource( void) = 0; }; #else /* C style interface */ typedef struct IFilterGraphVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IFilterGraph * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IFilterGraph * This); ULONG ( STDMETHODCALLTYPE *Release )( IFilterGraph * This); HRESULT ( STDMETHODCALLTYPE *AddFilter )( IFilterGraph * This, /* [in] */ IBaseFilter *pFilter, /* [string][in] */ LPCWSTR pName); HRESULT ( STDMETHODCALLTYPE *RemoveFilter )( IFilterGraph * This, /* [in] */ IBaseFilter *pFilter); HRESULT ( STDMETHODCALLTYPE *EnumFilters )( IFilterGraph * This, /* [out] */ IEnumFilters **ppEnum); HRESULT ( STDMETHODCALLTYPE *FindFilterByName )( IFilterGraph * This, /* [string][in] */ LPCWSTR pName, /* [out] */ IBaseFilter **ppFilter); HRESULT ( STDMETHODCALLTYPE *ConnectDirect )( IFilterGraph * This, /* [in] */ IPin *ppinOut, /* [in] */ IPin *ppinIn, /* [unique][in] */ const AM_MEDIA_TYPE *pmt); HRESULT ( STDMETHODCALLTYPE *Reconnect )( IFilterGraph * This, /* [in] */ IPin *ppin); HRESULT ( STDMETHODCALLTYPE *Disconnect )( IFilterGraph * This, /* [in] */ IPin *ppin); HRESULT ( STDMETHODCALLTYPE *SetDefaultSyncSource )( IFilterGraph * This); END_INTERFACE } IFilterGraphVtbl; interface IFilterGraph { CONST_VTBL struct IFilterGraphVtbl *lpVtbl; }; #ifdef COBJMACROS #define IFilterGraph_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IFilterGraph_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IFilterGraph_Release(This) \ (This)->lpVtbl -> Release(This) #define IFilterGraph_AddFilter(This,pFilter,pName) \ (This)->lpVtbl -> AddFilter(This,pFilter,pName) #define IFilterGraph_RemoveFilter(This,pFilter) \ (This)->lpVtbl -> RemoveFilter(This,pFilter) #define IFilterGraph_EnumFilters(This,ppEnum) \ (This)->lpVtbl -> EnumFilters(This,ppEnum) #define IFilterGraph_FindFilterByName(This,pName,ppFilter) \ (This)->lpVtbl -> FindFilterByName(This,pName,ppFilter) #define IFilterGraph_ConnectDirect(This,ppinOut,ppinIn,pmt) \ (This)->lpVtbl -> ConnectDirect(This,ppinOut,ppinIn,pmt) #define IFilterGraph_Reconnect(This,ppin) \ (This)->lpVtbl -> Reconnect(This,ppin) #define IFilterGraph_Disconnect(This,ppin) \ (This)->lpVtbl -> Disconnect(This,ppin) #define IFilterGraph_SetDefaultSyncSource(This) \ (This)->lpVtbl -> SetDefaultSyncSource(This) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IFilterGraph_AddFilter_Proxy( IFilterGraph * This, /* [in] */ IBaseFilter *pFilter, /* [string][in] */ LPCWSTR pName); void __RPC_STUB IFilterGraph_AddFilter_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IFilterGraph_RemoveFilter_Proxy( IFilterGraph * This, /* [in] */ IBaseFilter *pFilter); void __RPC_STUB IFilterGraph_RemoveFilter_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IFilterGraph_EnumFilters_Proxy( IFilterGraph * This, /* [out] */ IEnumFilters **ppEnum); void __RPC_STUB IFilterGraph_EnumFilters_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IFilterGraph_FindFilterByName_Proxy( IFilterGraph * This, /* [string][in] */ LPCWSTR pName, /* [out] */ IBaseFilter **ppFilter); void __RPC_STUB IFilterGraph_FindFilterByName_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IFilterGraph_ConnectDirect_Proxy( IFilterGraph * This, /* [in] */ IPin *ppinOut, /* [in] */ IPin *ppinIn, /* [unique][in] */ const AM_MEDIA_TYPE *pmt); void __RPC_STUB IFilterGraph_ConnectDirect_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IFilterGraph_Reconnect_Proxy( IFilterGraph * This, /* [in] */ IPin *ppin); void __RPC_STUB IFilterGraph_Reconnect_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IFilterGraph_Disconnect_Proxy( IFilterGraph * This, /* [in] */ IPin *ppin); void __RPC_STUB IFilterGraph_Disconnect_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IFilterGraph_SetDefaultSyncSource_Proxy( IFilterGraph * This); void __RPC_STUB IFilterGraph_SetDefaultSyncSource_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IFilterGraph_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0116 */ /* [local] */ typedef IFilterGraph *PFILTERGRAPH; extern RPC_IF_HANDLE __MIDL_itf_strmif_0116_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0116_v0_0_s_ifspec; #ifndef __IEnumFilters_INTERFACE_DEFINED__ #define __IEnumFilters_INTERFACE_DEFINED__ /* interface IEnumFilters */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IEnumFilters; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("56a86893-0ad4-11ce-b03a-0020af0ba770") IEnumFilters : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE Next( /* [in] */ ULONG cFilters, /* [out] */ IBaseFilter **ppFilter, /* [out] */ ULONG *pcFetched) = 0; virtual HRESULT STDMETHODCALLTYPE Skip( /* [in] */ ULONG cFilters) = 0; virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0; virtual HRESULT STDMETHODCALLTYPE Clone( /* [out] */ IEnumFilters **ppEnum) = 0; }; #else /* C style interface */ typedef struct IEnumFiltersVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IEnumFilters * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IEnumFilters * This); ULONG ( STDMETHODCALLTYPE *Release )( IEnumFilters * This); HRESULT ( STDMETHODCALLTYPE *Next )( IEnumFilters * This, /* [in] */ ULONG cFilters, /* [out] */ IBaseFilter **ppFilter, /* [out] */ ULONG *pcFetched); HRESULT ( STDMETHODCALLTYPE *Skip )( IEnumFilters * This, /* [in] */ ULONG cFilters); HRESULT ( STDMETHODCALLTYPE *Reset )( IEnumFilters * This); HRESULT ( STDMETHODCALLTYPE *Clone )( IEnumFilters * This, /* [out] */ IEnumFilters **ppEnum); END_INTERFACE } IEnumFiltersVtbl; interface IEnumFilters { CONST_VTBL struct IEnumFiltersVtbl *lpVtbl; }; #ifdef COBJMACROS #define IEnumFilters_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IEnumFilters_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IEnumFilters_Release(This) \ (This)->lpVtbl -> Release(This) #define IEnumFilters_Next(This,cFilters,ppFilter,pcFetched) \ (This)->lpVtbl -> Next(This,cFilters,ppFilter,pcFetched) #define IEnumFilters_Skip(This,cFilters) \ (This)->lpVtbl -> Skip(This,cFilters) #define IEnumFilters_Reset(This) \ (This)->lpVtbl -> Reset(This) #define IEnumFilters_Clone(This,ppEnum) \ (This)->lpVtbl -> Clone(This,ppEnum) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IEnumFilters_Next_Proxy( IEnumFilters * This, /* [in] */ ULONG cFilters, /* [out] */ IBaseFilter **ppFilter, /* [out] */ ULONG *pcFetched); void __RPC_STUB IEnumFilters_Next_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IEnumFilters_Skip_Proxy( IEnumFilters * This, /* [in] */ ULONG cFilters); void __RPC_STUB IEnumFilters_Skip_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IEnumFilters_Reset_Proxy( IEnumFilters * This); void __RPC_STUB IEnumFilters_Reset_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IEnumFilters_Clone_Proxy( IEnumFilters * This, /* [out] */ IEnumFilters **ppEnum); void __RPC_STUB IEnumFilters_Clone_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IEnumFilters_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0117 */ /* [local] */ typedef IEnumFilters *PENUMFILTERS; extern RPC_IF_HANDLE __MIDL_itf_strmif_0117_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0117_v0_0_s_ifspec; #ifndef __IMediaFilter_INTERFACE_DEFINED__ #define __IMediaFilter_INTERFACE_DEFINED__ /* interface IMediaFilter */ /* [unique][uuid][object] */ typedef enum _FilterState { State_Stopped = 0, State_Paused = State_Stopped + 1, State_Running = State_Paused + 1 } FILTER_STATE; EXTERN_C const IID IID_IMediaFilter; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("56a86899-0ad4-11ce-b03a-0020af0ba770") IMediaFilter : public IPersist { public: virtual HRESULT STDMETHODCALLTYPE Stop( void) = 0; virtual HRESULT STDMETHODCALLTYPE Pause( void) = 0; virtual HRESULT STDMETHODCALLTYPE Run( REFERENCE_TIME tStart) = 0; virtual HRESULT STDMETHODCALLTYPE GetState( /* [in] */ DWORD dwMilliSecsTimeout, /* [out] */ FILTER_STATE *State) = 0; virtual HRESULT STDMETHODCALLTYPE SetSyncSource( /* [in] */ IReferenceClock *pClock) = 0; virtual HRESULT STDMETHODCALLTYPE GetSyncSource( /* [out] */ IReferenceClock **pClock) = 0; }; #else /* C style interface */ typedef struct IMediaFilterVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IMediaFilter * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IMediaFilter * This); ULONG ( STDMETHODCALLTYPE *Release )( IMediaFilter * This); HRESULT ( STDMETHODCALLTYPE *GetClassID )( IMediaFilter * This, /* [out] */ CLSID *pClassID); HRESULT ( STDMETHODCALLTYPE *Stop )( IMediaFilter * This); HRESULT ( STDMETHODCALLTYPE *Pause )( IMediaFilter * This); HRESULT ( STDMETHODCALLTYPE *Run )( IMediaFilter * This, REFERENCE_TIME tStart); HRESULT ( STDMETHODCALLTYPE *GetState )( IMediaFilter * This, /* [in] */ DWORD dwMilliSecsTimeout, /* [out] */ FILTER_STATE *State); HRESULT ( STDMETHODCALLTYPE *SetSyncSource )( IMediaFilter * This, /* [in] */ IReferenceClock *pClock); HRESULT ( STDMETHODCALLTYPE *GetSyncSource )( IMediaFilter * This, /* [out] */ IReferenceClock **pClock); END_INTERFACE } IMediaFilterVtbl; interface IMediaFilter { CONST_VTBL struct IMediaFilterVtbl *lpVtbl; }; #ifdef COBJMACROS #define IMediaFilter_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IMediaFilter_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IMediaFilter_Release(This) \ (This)->lpVtbl -> Release(This) #define IMediaFilter_GetClassID(This,pClassID) \ (This)->lpVtbl -> GetClassID(This,pClassID) #define IMediaFilter_Stop(This) \ (This)->lpVtbl -> Stop(This) #define IMediaFilter_Pause(This) \ (This)->lpVtbl -> Pause(This) #define IMediaFilter_Run(This,tStart) \ (This)->lpVtbl -> Run(This,tStart) #define IMediaFilter_GetState(This,dwMilliSecsTimeout,State) \ (This)->lpVtbl -> GetState(This,dwMilliSecsTimeout,State) #define IMediaFilter_SetSyncSource(This,pClock) \ (This)->lpVtbl -> SetSyncSource(This,pClock) #define IMediaFilter_GetSyncSource(This,pClock) \ (This)->lpVtbl -> GetSyncSource(This,pClock) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IMediaFilter_Stop_Proxy( IMediaFilter * This); void __RPC_STUB IMediaFilter_Stop_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMediaFilter_Pause_Proxy( IMediaFilter * This); void __RPC_STUB IMediaFilter_Pause_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMediaFilter_Run_Proxy( IMediaFilter * This, REFERENCE_TIME tStart); void __RPC_STUB IMediaFilter_Run_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMediaFilter_GetState_Proxy( IMediaFilter * This, /* [in] */ DWORD dwMilliSecsTimeout, /* [out] */ FILTER_STATE *State); void __RPC_STUB IMediaFilter_GetState_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMediaFilter_SetSyncSource_Proxy( IMediaFilter * This, /* [in] */ IReferenceClock *pClock); void __RPC_STUB IMediaFilter_SetSyncSource_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMediaFilter_GetSyncSource_Proxy( IMediaFilter * This, /* [out] */ IReferenceClock **pClock); void __RPC_STUB IMediaFilter_GetSyncSource_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IMediaFilter_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0118 */ /* [local] */ typedef IMediaFilter *PMEDIAFILTER; extern RPC_IF_HANDLE __MIDL_itf_strmif_0118_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0118_v0_0_s_ifspec; #ifndef __IBaseFilter_INTERFACE_DEFINED__ #define __IBaseFilter_INTERFACE_DEFINED__ /* interface IBaseFilter */ /* [unique][uuid][object] */ typedef struct _FilterInfo { WCHAR achName[ 128 ]; IFilterGraph *pGraph; } FILTER_INFO; EXTERN_C const IID IID_IBaseFilter; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("56a86895-0ad4-11ce-b03a-0020af0ba770") IBaseFilter : public IMediaFilter { public: virtual HRESULT STDMETHODCALLTYPE EnumPins( /* [out] */ IEnumPins **ppEnum) = 0; virtual HRESULT STDMETHODCALLTYPE FindPin( /* [string][in] */ LPCWSTR Id, /* [out] */ IPin **ppPin) = 0; virtual HRESULT STDMETHODCALLTYPE QueryFilterInfo( /* [out] */ FILTER_INFO *pInfo) = 0; virtual HRESULT STDMETHODCALLTYPE JoinFilterGraph( /* [in] */ IFilterGraph *pGraph, /* [string][in] */ LPCWSTR pName) = 0; virtual HRESULT STDMETHODCALLTYPE QueryVendorInfo( /* [string][out] */ LPWSTR *pVendorInfo) = 0; }; #else /* C style interface */ typedef struct IBaseFilterVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IBaseFilter * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IBaseFilter * This); ULONG ( STDMETHODCALLTYPE *Release )( IBaseFilter * This); HRESULT ( STDMETHODCALLTYPE *GetClassID )( IBaseFilter * This, /* [out] */ CLSID *pClassID); HRESULT ( STDMETHODCALLTYPE *Stop )( IBaseFilter * This); HRESULT ( STDMETHODCALLTYPE *Pause )( IBaseFilter * This); HRESULT ( STDMETHODCALLTYPE *Run )( IBaseFilter * This, REFERENCE_TIME tStart); HRESULT ( STDMETHODCALLTYPE *GetState )( IBaseFilter * This, /* [in] */ DWORD dwMilliSecsTimeout, /* [out] */ FILTER_STATE *State); HRESULT ( STDMETHODCALLTYPE *SetSyncSource )( IBaseFilter * This, /* [in] */ IReferenceClock *pClock); HRESULT ( STDMETHODCALLTYPE *GetSyncSource )( IBaseFilter * This, /* [out] */ IReferenceClock **pClock); HRESULT ( STDMETHODCALLTYPE *EnumPins )( IBaseFilter * This, /* [out] */ IEnumPins **ppEnum); HRESULT ( STDMETHODCALLTYPE *FindPin )( IBaseFilter * This, /* [string][in] */ LPCWSTR Id, /* [out] */ IPin **ppPin); HRESULT ( STDMETHODCALLTYPE *QueryFilterInfo )( IBaseFilter * This, /* [out] */ FILTER_INFO *pInfo); HRESULT ( STDMETHODCALLTYPE *JoinFilterGraph )( IBaseFilter * This, /* [in] */ IFilterGraph *pGraph, /* [string][in] */ LPCWSTR pName); HRESULT ( STDMETHODCALLTYPE *QueryVendorInfo )( IBaseFilter * This, /* [string][out] */ LPWSTR *pVendorInfo); END_INTERFACE } IBaseFilterVtbl; interface IBaseFilter { CONST_VTBL struct IBaseFilterVtbl *lpVtbl; }; #ifdef COBJMACROS #define IBaseFilter_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IBaseFilter_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IBaseFilter_Release(This) \ (This)->lpVtbl -> Release(This) #define IBaseFilter_GetClassID(This,pClassID) \ (This)->lpVtbl -> GetClassID(This,pClassID) #define IBaseFilter_Stop(This) \ (This)->lpVtbl -> Stop(This) #define IBaseFilter_Pause(This) \ (This)->lpVtbl -> Pause(This) #define IBaseFilter_Run(This,tStart) \ (This)->lpVtbl -> Run(This,tStart) #define IBaseFilter_GetState(This,dwMilliSecsTimeout,State) \ (This)->lpVtbl -> GetState(This,dwMilliSecsTimeout,State) #define IBaseFilter_SetSyncSource(This,pClock) \ (This)->lpVtbl -> SetSyncSource(This,pClock) #define IBaseFilter_GetSyncSource(This,pClock) \ (This)->lpVtbl -> GetSyncSource(This,pClock) #define IBaseFilter_EnumPins(This,ppEnum) \ (This)->lpVtbl -> EnumPins(This,ppEnum) #define IBaseFilter_FindPin(This,Id,ppPin) \ (This)->lpVtbl -> FindPin(This,Id,ppPin) #define IBaseFilter_QueryFilterInfo(This,pInfo) \ (This)->lpVtbl -> QueryFilterInfo(This,pInfo) #define IBaseFilter_JoinFilterGraph(This,pGraph,pName) \ (This)->lpVtbl -> JoinFilterGraph(This,pGraph,pName) #define IBaseFilter_QueryVendorInfo(This,pVendorInfo) \ (This)->lpVtbl -> QueryVendorInfo(This,pVendorInfo) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IBaseFilter_EnumPins_Proxy( IBaseFilter * This, /* [out] */ IEnumPins **ppEnum); void __RPC_STUB IBaseFilter_EnumPins_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IBaseFilter_FindPin_Proxy( IBaseFilter * This, /* [string][in] */ LPCWSTR Id, /* [out] */ IPin **ppPin); void __RPC_STUB IBaseFilter_FindPin_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IBaseFilter_QueryFilterInfo_Proxy( IBaseFilter * This, /* [out] */ FILTER_INFO *pInfo); void __RPC_STUB IBaseFilter_QueryFilterInfo_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IBaseFilter_JoinFilterGraph_Proxy( IBaseFilter * This, /* [in] */ IFilterGraph *pGraph, /* [string][in] */ LPCWSTR pName); void __RPC_STUB IBaseFilter_JoinFilterGraph_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IBaseFilter_QueryVendorInfo_Proxy( IBaseFilter * This, /* [string][out] */ LPWSTR *pVendorInfo); void __RPC_STUB IBaseFilter_QueryVendorInfo_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IBaseFilter_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0119 */ /* [local] */ typedef IBaseFilter *PFILTER; extern RPC_IF_HANDLE __MIDL_itf_strmif_0119_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0119_v0_0_s_ifspec; #ifndef __IReferenceClock_INTERFACE_DEFINED__ #define __IReferenceClock_INTERFACE_DEFINED__ /* interface IReferenceClock */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IReferenceClock; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("56a86897-0ad4-11ce-b03a-0020af0ba770") IReferenceClock : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE GetTime( /* [out] */ REFERENCE_TIME *pTime) = 0; virtual HRESULT STDMETHODCALLTYPE AdviseTime( /* [in] */ REFERENCE_TIME baseTime, /* [in] */ REFERENCE_TIME streamTime, /* [in] */ HEVENT hEvent, /* [out] */ DWORD_PTR *pdwAdviseCookie) = 0; virtual HRESULT STDMETHODCALLTYPE AdvisePeriodic( /* [in] */ REFERENCE_TIME startTime, /* [in] */ REFERENCE_TIME periodTime, /* [in] */ HSEMAPHORE hSemaphore, /* [out] */ DWORD_PTR *pdwAdviseCookie) = 0; virtual HRESULT STDMETHODCALLTYPE Unadvise( /* [in] */ DWORD_PTR dwAdviseCookie) = 0; }; #else /* C style interface */ typedef struct IReferenceClockVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IReferenceClock * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IReferenceClock * This); ULONG ( STDMETHODCALLTYPE *Release )( IReferenceClock * This); HRESULT ( STDMETHODCALLTYPE *GetTime )( IReferenceClock * This, /* [out] */ REFERENCE_TIME *pTime); HRESULT ( STDMETHODCALLTYPE *AdviseTime )( IReferenceClock * This, /* [in] */ REFERENCE_TIME baseTime, /* [in] */ REFERENCE_TIME streamTime, /* [in] */ HEVENT hEvent, /* [out] */ DWORD_PTR *pdwAdviseCookie); HRESULT ( STDMETHODCALLTYPE *AdvisePeriodic )( IReferenceClock * This, /* [in] */ REFERENCE_TIME startTime, /* [in] */ REFERENCE_TIME periodTime, /* [in] */ HSEMAPHORE hSemaphore, /* [out] */ DWORD_PTR *pdwAdviseCookie); HRESULT ( STDMETHODCALLTYPE *Unadvise )( IReferenceClock * This, /* [in] */ DWORD_PTR dwAdviseCookie); END_INTERFACE } IReferenceClockVtbl; interface IReferenceClock { CONST_VTBL struct IReferenceClockVtbl *lpVtbl; }; #ifdef COBJMACROS #define IReferenceClock_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IReferenceClock_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IReferenceClock_Release(This) \ (This)->lpVtbl -> Release(This) #define IReferenceClock_GetTime(This,pTime) \ (This)->lpVtbl -> GetTime(This,pTime) #define IReferenceClock_AdviseTime(This,baseTime,streamTime,hEvent,pdwAdviseCookie) \ (This)->lpVtbl -> AdviseTime(This,baseTime,streamTime,hEvent,pdwAdviseCookie) #define IReferenceClock_AdvisePeriodic(This,startTime,periodTime,hSemaphore,pdwAdviseCookie) \ (This)->lpVtbl -> AdvisePeriodic(This,startTime,periodTime,hSemaphore,pdwAdviseCookie) #define IReferenceClock_Unadvise(This,dwAdviseCookie) \ (This)->lpVtbl -> Unadvise(This,dwAdviseCookie) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IReferenceClock_GetTime_Proxy( IReferenceClock * This, /* [out] */ REFERENCE_TIME *pTime); void __RPC_STUB IReferenceClock_GetTime_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IReferenceClock_AdviseTime_Proxy( IReferenceClock * This, /* [in] */ REFERENCE_TIME baseTime, /* [in] */ REFERENCE_TIME streamTime, /* [in] */ HEVENT hEvent, /* [out] */ DWORD_PTR *pdwAdviseCookie); void __RPC_STUB IReferenceClock_AdviseTime_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IReferenceClock_AdvisePeriodic_Proxy( IReferenceClock * This, /* [in] */ REFERENCE_TIME startTime, /* [in] */ REFERENCE_TIME periodTime, /* [in] */ HSEMAPHORE hSemaphore, /* [out] */ DWORD_PTR *pdwAdviseCookie); void __RPC_STUB IReferenceClock_AdvisePeriodic_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IReferenceClock_Unadvise_Proxy( IReferenceClock * This, /* [in] */ DWORD_PTR dwAdviseCookie); void __RPC_STUB IReferenceClock_Unadvise_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IReferenceClock_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0120 */ /* [local] */ typedef IReferenceClock *PREFERENCECLOCK; extern RPC_IF_HANDLE __MIDL_itf_strmif_0120_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0120_v0_0_s_ifspec; #ifndef __IReferenceClock2_INTERFACE_DEFINED__ #define __IReferenceClock2_INTERFACE_DEFINED__ /* interface IReferenceClock2 */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IReferenceClock2; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("36b73885-c2c8-11cf-8b46-00805f6cef60") IReferenceClock2 : public IReferenceClock { public: }; #else /* C style interface */ typedef struct IReferenceClock2Vtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IReferenceClock2 * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IReferenceClock2 * This); ULONG ( STDMETHODCALLTYPE *Release )( IReferenceClock2 * This); HRESULT ( STDMETHODCALLTYPE *GetTime )( IReferenceClock2 * This, /* [out] */ REFERENCE_TIME *pTime); HRESULT ( STDMETHODCALLTYPE *AdviseTime )( IReferenceClock2 * This, /* [in] */ REFERENCE_TIME baseTime, /* [in] */ REFERENCE_TIME streamTime, /* [in] */ HEVENT hEvent, /* [out] */ DWORD_PTR *pdwAdviseCookie); HRESULT ( STDMETHODCALLTYPE *AdvisePeriodic )( IReferenceClock2 * This, /* [in] */ REFERENCE_TIME startTime, /* [in] */ REFERENCE_TIME periodTime, /* [in] */ HSEMAPHORE hSemaphore, /* [out] */ DWORD_PTR *pdwAdviseCookie); HRESULT ( STDMETHODCALLTYPE *Unadvise )( IReferenceClock2 * This, /* [in] */ DWORD_PTR dwAdviseCookie); END_INTERFACE } IReferenceClock2Vtbl; interface IReferenceClock2 { CONST_VTBL struct IReferenceClock2Vtbl *lpVtbl; }; #ifdef COBJMACROS #define IReferenceClock2_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IReferenceClock2_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IReferenceClock2_Release(This) \ (This)->lpVtbl -> Release(This) #define IReferenceClock2_GetTime(This,pTime) \ (This)->lpVtbl -> GetTime(This,pTime) #define IReferenceClock2_AdviseTime(This,baseTime,streamTime,hEvent,pdwAdviseCookie) \ (This)->lpVtbl -> AdviseTime(This,baseTime,streamTime,hEvent,pdwAdviseCookie) #define IReferenceClock2_AdvisePeriodic(This,startTime,periodTime,hSemaphore,pdwAdviseCookie) \ (This)->lpVtbl -> AdvisePeriodic(This,startTime,periodTime,hSemaphore,pdwAdviseCookie) #define IReferenceClock2_Unadvise(This,dwAdviseCookie) \ (This)->lpVtbl -> Unadvise(This,dwAdviseCookie) #endif /* COBJMACROS */ #endif /* C style interface */ #endif /* __IReferenceClock2_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0121 */ /* [local] */ typedef IReferenceClock2 *PREFERENCECLOCK2; extern RPC_IF_HANDLE __MIDL_itf_strmif_0121_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0121_v0_0_s_ifspec; #ifndef __IMediaSample_INTERFACE_DEFINED__ #define __IMediaSample_INTERFACE_DEFINED__ /* interface IMediaSample */ /* [unique][uuid][object][local] */ EXTERN_C const IID IID_IMediaSample; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("56a8689a-0ad4-11ce-b03a-0020af0ba770") IMediaSample : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE GetPointer( /* [out] */ BYTE **ppBuffer) = 0; virtual long STDMETHODCALLTYPE GetSize( void) = 0; virtual HRESULT STDMETHODCALLTYPE GetTime( /* [out] */ REFERENCE_TIME *pTimeStart, /* [out] */ REFERENCE_TIME *pTimeEnd) = 0; virtual HRESULT STDMETHODCALLTYPE SetTime( /* [in] */ REFERENCE_TIME *pTimeStart, /* [in] */ REFERENCE_TIME *pTimeEnd) = 0; virtual HRESULT STDMETHODCALLTYPE IsSyncPoint( void) = 0; virtual HRESULT STDMETHODCALLTYPE SetSyncPoint( BOOL bIsSyncPoint) = 0; virtual HRESULT STDMETHODCALLTYPE IsPreroll( void) = 0; virtual HRESULT STDMETHODCALLTYPE SetPreroll( BOOL bIsPreroll) = 0; virtual long STDMETHODCALLTYPE GetActualDataLength( void) = 0; virtual HRESULT STDMETHODCALLTYPE SetActualDataLength( long __MIDL_0010) = 0; virtual HRESULT STDMETHODCALLTYPE GetMediaType( AM_MEDIA_TYPE **ppMediaType) = 0; virtual HRESULT STDMETHODCALLTYPE SetMediaType( AM_MEDIA_TYPE *pMediaType) = 0; virtual HRESULT STDMETHODCALLTYPE IsDiscontinuity( void) = 0; virtual HRESULT STDMETHODCALLTYPE SetDiscontinuity( BOOL bDiscontinuity) = 0; virtual HRESULT STDMETHODCALLTYPE GetMediaTime( /* [out] */ LONGLONG *pTimeStart, /* [out] */ LONGLONG *pTimeEnd) = 0; virtual HRESULT STDMETHODCALLTYPE SetMediaTime( /* [in] */ LONGLONG *pTimeStart, /* [in] */ LONGLONG *pTimeEnd) = 0; }; #else /* C style interface */ typedef struct IMediaSampleVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IMediaSample * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IMediaSample * This); ULONG ( STDMETHODCALLTYPE *Release )( IMediaSample * This); HRESULT ( STDMETHODCALLTYPE *GetPointer )( IMediaSample * This, /* [out] */ BYTE **ppBuffer); long ( STDMETHODCALLTYPE *GetSize )( IMediaSample * This); HRESULT ( STDMETHODCALLTYPE *GetTime )( IMediaSample * This, /* [out] */ REFERENCE_TIME *pTimeStart, /* [out] */ REFERENCE_TIME *pTimeEnd); HRESULT ( STDMETHODCALLTYPE *SetTime )( IMediaSample * This, /* [in] */ REFERENCE_TIME *pTimeStart, /* [in] */ REFERENCE_TIME *pTimeEnd); HRESULT ( STDMETHODCALLTYPE *IsSyncPoint )( IMediaSample * This); HRESULT ( STDMETHODCALLTYPE *SetSyncPoint )( IMediaSample * This, BOOL bIsSyncPoint); HRESULT ( STDMETHODCALLTYPE *IsPreroll )( IMediaSample * This); HRESULT ( STDMETHODCALLTYPE *SetPreroll )( IMediaSample * This, BOOL bIsPreroll); long ( STDMETHODCALLTYPE *GetActualDataLength )( IMediaSample * This); HRESULT ( STDMETHODCALLTYPE *SetActualDataLength )( IMediaSample * This, long __MIDL_0010); HRESULT ( STDMETHODCALLTYPE *GetMediaType )( IMediaSample * This, AM_MEDIA_TYPE **ppMediaType); HRESULT ( STDMETHODCALLTYPE *SetMediaType )( IMediaSample * This, AM_MEDIA_TYPE *pMediaType); HRESULT ( STDMETHODCALLTYPE *IsDiscontinuity )( IMediaSample * This); HRESULT ( STDMETHODCALLTYPE *SetDiscontinuity )( IMediaSample * This, BOOL bDiscontinuity); HRESULT ( STDMETHODCALLTYPE *GetMediaTime )( IMediaSample * This, /* [out] */ LONGLONG *pTimeStart, /* [out] */ LONGLONG *pTimeEnd); HRESULT ( STDMETHODCALLTYPE *SetMediaTime )( IMediaSample * This, /* [in] */ LONGLONG *pTimeStart, /* [in] */ LONGLONG *pTimeEnd); END_INTERFACE } IMediaSampleVtbl; interface IMediaSample { CONST_VTBL struct IMediaSampleVtbl *lpVtbl; }; #ifdef COBJMACROS #define IMediaSample_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IMediaSample_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IMediaSample_Release(This) \ (This)->lpVtbl -> Release(This) #define IMediaSample_GetPointer(This,ppBuffer) \ (This)->lpVtbl -> GetPointer(This,ppBuffer) #define IMediaSample_GetSize(This) \ (This)->lpVtbl -> GetSize(This) #define IMediaSample_GetTime(This,pTimeStart,pTimeEnd) \ (This)->lpVtbl -> GetTime(This,pTimeStart,pTimeEnd) #define IMediaSample_SetTime(This,pTimeStart,pTimeEnd) \ (This)->lpVtbl -> SetTime(This,pTimeStart,pTimeEnd) #define IMediaSample_IsSyncPoint(This) \ (This)->lpVtbl -> IsSyncPoint(This) #define IMediaSample_SetSyncPoint(This,bIsSyncPoint) \ (This)->lpVtbl -> SetSyncPoint(This,bIsSyncPoint) #define IMediaSample_IsPreroll(This) \ (This)->lpVtbl -> IsPreroll(This) #define IMediaSample_SetPreroll(This,bIsPreroll) \ (This)->lpVtbl -> SetPreroll(This,bIsPreroll) #define IMediaSample_GetActualDataLength(This) \ (This)->lpVtbl -> GetActualDataLength(This) #define IMediaSample_SetActualDataLength(This,__MIDL_0010) \ (This)->lpVtbl -> SetActualDataLength(This,__MIDL_0010) #define IMediaSample_GetMediaType(This,ppMediaType) \ (This)->lpVtbl -> GetMediaType(This,ppMediaType) #define IMediaSample_SetMediaType(This,pMediaType) \ (This)->lpVtbl -> SetMediaType(This,pMediaType) #define IMediaSample_IsDiscontinuity(This) \ (This)->lpVtbl -> IsDiscontinuity(This) #define IMediaSample_SetDiscontinuity(This,bDiscontinuity) \ (This)->lpVtbl -> SetDiscontinuity(This,bDiscontinuity) #define IMediaSample_GetMediaTime(This,pTimeStart,pTimeEnd) \ (This)->lpVtbl -> GetMediaTime(This,pTimeStart,pTimeEnd) #define IMediaSample_SetMediaTime(This,pTimeStart,pTimeEnd) \ (This)->lpVtbl -> SetMediaTime(This,pTimeStart,pTimeEnd) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IMediaSample_GetPointer_Proxy( IMediaSample * This, /* [out] */ BYTE **ppBuffer); void __RPC_STUB IMediaSample_GetPointer_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); long STDMETHODCALLTYPE IMediaSample_GetSize_Proxy( IMediaSample * This); void __RPC_STUB IMediaSample_GetSize_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMediaSample_GetTime_Proxy( IMediaSample * This, /* [out] */ REFERENCE_TIME *pTimeStart, /* [out] */ REFERENCE_TIME *pTimeEnd); void __RPC_STUB IMediaSample_GetTime_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMediaSample_SetTime_Proxy( IMediaSample * This, /* [in] */ REFERENCE_TIME *pTimeStart, /* [in] */ REFERENCE_TIME *pTimeEnd); void __RPC_STUB IMediaSample_SetTime_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMediaSample_IsSyncPoint_Proxy( IMediaSample * This); void __RPC_STUB IMediaSample_IsSyncPoint_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMediaSample_SetSyncPoint_Proxy( IMediaSample * This, BOOL bIsSyncPoint); void __RPC_STUB IMediaSample_SetSyncPoint_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMediaSample_IsPreroll_Proxy( IMediaSample * This); void __RPC_STUB IMediaSample_IsPreroll_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMediaSample_SetPreroll_Proxy( IMediaSample * This, BOOL bIsPreroll); void __RPC_STUB IMediaSample_SetPreroll_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); long STDMETHODCALLTYPE IMediaSample_GetActualDataLength_Proxy( IMediaSample * This); void __RPC_STUB IMediaSample_GetActualDataLength_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMediaSample_SetActualDataLength_Proxy( IMediaSample * This, long __MIDL_0010); void __RPC_STUB IMediaSample_SetActualDataLength_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMediaSample_GetMediaType_Proxy( IMediaSample * This, AM_MEDIA_TYPE **ppMediaType); void __RPC_STUB IMediaSample_GetMediaType_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMediaSample_SetMediaType_Proxy( IMediaSample * This, AM_MEDIA_TYPE *pMediaType); void __RPC_STUB IMediaSample_SetMediaType_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMediaSample_IsDiscontinuity_Proxy( IMediaSample * This); void __RPC_STUB IMediaSample_IsDiscontinuity_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMediaSample_SetDiscontinuity_Proxy( IMediaSample * This, BOOL bDiscontinuity); void __RPC_STUB IMediaSample_SetDiscontinuity_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMediaSample_GetMediaTime_Proxy( IMediaSample * This, /* [out] */ LONGLONG *pTimeStart, /* [out] */ LONGLONG *pTimeEnd); void __RPC_STUB IMediaSample_GetMediaTime_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMediaSample_SetMediaTime_Proxy( IMediaSample * This, /* [in] */ LONGLONG *pTimeStart, /* [in] */ LONGLONG *pTimeEnd); void __RPC_STUB IMediaSample_SetMediaTime_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IMediaSample_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0122 */ /* [local] */ typedef IMediaSample *PMEDIASAMPLE; enum tagAM_SAMPLE_PROPERTY_FLAGS { AM_SAMPLE_SPLICEPOINT = 0x1, AM_SAMPLE_PREROLL = 0x2, AM_SAMPLE_DATADISCONTINUITY = 0x4, AM_SAMPLE_TYPECHANGED = 0x8, AM_SAMPLE_TIMEVALID = 0x10, AM_SAMPLE_TIMEDISCONTINUITY = 0x40, AM_SAMPLE_FLUSH_ON_PAUSE = 0x80, AM_SAMPLE_STOPVALID = 0x100, AM_SAMPLE_ENDOFSTREAM = 0x200, AM_STREAM_MEDIA = 0, AM_STREAM_CONTROL = 1 } ; typedef struct tagAM_SAMPLE2_PROPERTIES { DWORD cbData; DWORD dwTypeSpecificFlags; DWORD dwSampleFlags; LONG lActual; REFERENCE_TIME tStart; REFERENCE_TIME tStop; DWORD dwStreamId; AM_MEDIA_TYPE *pMediaType; BYTE *pbBuffer; LONG cbBuffer; } AM_SAMPLE2_PROPERTIES; extern RPC_IF_HANDLE __MIDL_itf_strmif_0122_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0122_v0_0_s_ifspec; #ifndef __IMediaSample2_INTERFACE_DEFINED__ #define __IMediaSample2_INTERFACE_DEFINED__ /* interface IMediaSample2 */ /* [unique][uuid][object][local] */ EXTERN_C const IID IID_IMediaSample2; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("36b73884-c2c8-11cf-8b46-00805f6cef60") IMediaSample2 : public IMediaSample { public: virtual HRESULT STDMETHODCALLTYPE GetProperties( /* [in] */ DWORD cbProperties, /* [size_is][out] */ BYTE *pbProperties) = 0; virtual HRESULT STDMETHODCALLTYPE SetProperties( /* [in] */ DWORD cbProperties, /* [size_is][in] */ const BYTE *pbProperties) = 0; }; #else /* C style interface */ typedef struct IMediaSample2Vtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IMediaSample2 * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IMediaSample2 * This); ULONG ( STDMETHODCALLTYPE *Release )( IMediaSample2 * This); HRESULT ( STDMETHODCALLTYPE *GetPointer )( IMediaSample2 * This, /* [out] */ BYTE **ppBuffer); long ( STDMETHODCALLTYPE *GetSize )( IMediaSample2 * This); HRESULT ( STDMETHODCALLTYPE *GetTime )( IMediaSample2 * This, /* [out] */ REFERENCE_TIME *pTimeStart, /* [out] */ REFERENCE_TIME *pTimeEnd); HRESULT ( STDMETHODCALLTYPE *SetTime )( IMediaSample2 * This, /* [in] */ REFERENCE_TIME *pTimeStart, /* [in] */ REFERENCE_TIME *pTimeEnd); HRESULT ( STDMETHODCALLTYPE *IsSyncPoint )( IMediaSample2 * This); HRESULT ( STDMETHODCALLTYPE *SetSyncPoint )( IMediaSample2 * This, BOOL bIsSyncPoint); HRESULT ( STDMETHODCALLTYPE *IsPreroll )( IMediaSample2 * This); HRESULT ( STDMETHODCALLTYPE *SetPreroll )( IMediaSample2 * This, BOOL bIsPreroll); long ( STDMETHODCALLTYPE *GetActualDataLength )( IMediaSample2 * This); HRESULT ( STDMETHODCALLTYPE *SetActualDataLength )( IMediaSample2 * This, long __MIDL_0010); HRESULT ( STDMETHODCALLTYPE *GetMediaType )( IMediaSample2 * This, AM_MEDIA_TYPE **ppMediaType); HRESULT ( STDMETHODCALLTYPE *SetMediaType )( IMediaSample2 * This, AM_MEDIA_TYPE *pMediaType); HRESULT ( STDMETHODCALLTYPE *IsDiscontinuity )( IMediaSample2 * This); HRESULT ( STDMETHODCALLTYPE *SetDiscontinuity )( IMediaSample2 * This, BOOL bDiscontinuity); HRESULT ( STDMETHODCALLTYPE *GetMediaTime )( IMediaSample2 * This, /* [out] */ LONGLONG *pTimeStart, /* [out] */ LONGLONG *pTimeEnd); HRESULT ( STDMETHODCALLTYPE *SetMediaTime )( IMediaSample2 * This, /* [in] */ LONGLONG *pTimeStart, /* [in] */ LONGLONG *pTimeEnd); HRESULT ( STDMETHODCALLTYPE *GetProperties )( IMediaSample2 * This, /* [in] */ DWORD cbProperties, /* [size_is][out] */ BYTE *pbProperties); HRESULT ( STDMETHODCALLTYPE *SetProperties )( IMediaSample2 * This, /* [in] */ DWORD cbProperties, /* [size_is][in] */ const BYTE *pbProperties); END_INTERFACE } IMediaSample2Vtbl; interface IMediaSample2 { CONST_VTBL struct IMediaSample2Vtbl *lpVtbl; }; #ifdef COBJMACROS #define IMediaSample2_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IMediaSample2_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IMediaSample2_Release(This) \ (This)->lpVtbl -> Release(This) #define IMediaSample2_GetPointer(This,ppBuffer) \ (This)->lpVtbl -> GetPointer(This,ppBuffer) #define IMediaSample2_GetSize(This) \ (This)->lpVtbl -> GetSize(This) #define IMediaSample2_GetTime(This,pTimeStart,pTimeEnd) \ (This)->lpVtbl -> GetTime(This,pTimeStart,pTimeEnd) #define IMediaSample2_SetTime(This,pTimeStart,pTimeEnd) \ (This)->lpVtbl -> SetTime(This,pTimeStart,pTimeEnd) #define IMediaSample2_IsSyncPoint(This) \ (This)->lpVtbl -> IsSyncPoint(This) #define IMediaSample2_SetSyncPoint(This,bIsSyncPoint) \ (This)->lpVtbl -> SetSyncPoint(This,bIsSyncPoint) #define IMediaSample2_IsPreroll(This) \ (This)->lpVtbl -> IsPreroll(This) #define IMediaSample2_SetPreroll(This,bIsPreroll) \ (This)->lpVtbl -> SetPreroll(This,bIsPreroll) #define IMediaSample2_GetActualDataLength(This) \ (This)->lpVtbl -> GetActualDataLength(This) #define IMediaSample2_SetActualDataLength(This,__MIDL_0010) \ (This)->lpVtbl -> SetActualDataLength(This,__MIDL_0010) #define IMediaSample2_GetMediaType(This,ppMediaType) \ (This)->lpVtbl -> GetMediaType(This,ppMediaType) #define IMediaSample2_SetMediaType(This,pMediaType) \ (This)->lpVtbl -> SetMediaType(This,pMediaType) #define IMediaSample2_IsDiscontinuity(This) \ (This)->lpVtbl -> IsDiscontinuity(This) #define IMediaSample2_SetDiscontinuity(This,bDiscontinuity) \ (This)->lpVtbl -> SetDiscontinuity(This,bDiscontinuity) #define IMediaSample2_GetMediaTime(This,pTimeStart,pTimeEnd) \ (This)->lpVtbl -> GetMediaTime(This,pTimeStart,pTimeEnd) #define IMediaSample2_SetMediaTime(This,pTimeStart,pTimeEnd) \ (This)->lpVtbl -> SetMediaTime(This,pTimeStart,pTimeEnd) #define IMediaSample2_GetProperties(This,cbProperties,pbProperties) \ (This)->lpVtbl -> GetProperties(This,cbProperties,pbProperties) #define IMediaSample2_SetProperties(This,cbProperties,pbProperties) \ (This)->lpVtbl -> SetProperties(This,cbProperties,pbProperties) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IMediaSample2_GetProperties_Proxy( IMediaSample2 * This, /* [in] */ DWORD cbProperties, /* [size_is][out] */ BYTE *pbProperties); void __RPC_STUB IMediaSample2_GetProperties_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMediaSample2_SetProperties_Proxy( IMediaSample2 * This, /* [in] */ DWORD cbProperties, /* [size_is][in] */ const BYTE *pbProperties); void __RPC_STUB IMediaSample2_SetProperties_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IMediaSample2_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0123 */ /* [local] */ typedef IMediaSample2 *PMEDIASAMPLE2; #define AM_GBF_PREVFRAMESKIPPED 1 #define AM_GBF_NOTASYNCPOINT 2 #define AM_GBF_NOWAIT 4 #define AM_GBF_NODDSURFACELOCK 8 extern RPC_IF_HANDLE __MIDL_itf_strmif_0123_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0123_v0_0_s_ifspec; #ifndef __IMemAllocator_INTERFACE_DEFINED__ #define __IMemAllocator_INTERFACE_DEFINED__ /* interface IMemAllocator */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IMemAllocator; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("56a8689c-0ad4-11ce-b03a-0020af0ba770") IMemAllocator : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE SetProperties( /* [in] */ ALLOCATOR_PROPERTIES *pRequest, /* [out] */ ALLOCATOR_PROPERTIES *pActual) = 0; virtual HRESULT STDMETHODCALLTYPE GetProperties( /* [out] */ ALLOCATOR_PROPERTIES *pProps) = 0; virtual HRESULT STDMETHODCALLTYPE Commit( void) = 0; virtual HRESULT STDMETHODCALLTYPE Decommit( void) = 0; virtual HRESULT STDMETHODCALLTYPE GetBuffer( /* [out] */ IMediaSample **ppBuffer, /* [in] */ REFERENCE_TIME *pStartTime, /* [in] */ REFERENCE_TIME *pEndTime, /* [in] */ DWORD dwFlags) = 0; virtual HRESULT STDMETHODCALLTYPE ReleaseBuffer( /* [in] */ IMediaSample *pBuffer) = 0; }; #else /* C style interface */ typedef struct IMemAllocatorVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IMemAllocator * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IMemAllocator * This); ULONG ( STDMETHODCALLTYPE *Release )( IMemAllocator * This); HRESULT ( STDMETHODCALLTYPE *SetProperties )( IMemAllocator * This, /* [in] */ ALLOCATOR_PROPERTIES *pRequest, /* [out] */ ALLOCATOR_PROPERTIES *pActual); HRESULT ( STDMETHODCALLTYPE *GetProperties )( IMemAllocator * This, /* [out] */ ALLOCATOR_PROPERTIES *pProps); HRESULT ( STDMETHODCALLTYPE *Commit )( IMemAllocator * This); HRESULT ( STDMETHODCALLTYPE *Decommit )( IMemAllocator * This); HRESULT ( STDMETHODCALLTYPE *GetBuffer )( IMemAllocator * This, /* [out] */ IMediaSample **ppBuffer, /* [in] */ REFERENCE_TIME *pStartTime, /* [in] */ REFERENCE_TIME *pEndTime, /* [in] */ DWORD dwFlags); HRESULT ( STDMETHODCALLTYPE *ReleaseBuffer )( IMemAllocator * This, /* [in] */ IMediaSample *pBuffer); END_INTERFACE } IMemAllocatorVtbl; interface IMemAllocator { CONST_VTBL struct IMemAllocatorVtbl *lpVtbl; }; #ifdef COBJMACROS #define IMemAllocator_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IMemAllocator_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IMemAllocator_Release(This) \ (This)->lpVtbl -> Release(This) #define IMemAllocator_SetProperties(This,pRequest,pActual) \ (This)->lpVtbl -> SetProperties(This,pRequest,pActual) #define IMemAllocator_GetProperties(This,pProps) \ (This)->lpVtbl -> GetProperties(This,pProps) #define IMemAllocator_Commit(This) \ (This)->lpVtbl -> Commit(This) #define IMemAllocator_Decommit(This) \ (This)->lpVtbl -> Decommit(This) #define IMemAllocator_GetBuffer(This,ppBuffer,pStartTime,pEndTime,dwFlags) \ (This)->lpVtbl -> GetBuffer(This,ppBuffer,pStartTime,pEndTime,dwFlags) #define IMemAllocator_ReleaseBuffer(This,pBuffer) \ (This)->lpVtbl -> ReleaseBuffer(This,pBuffer) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IMemAllocator_SetProperties_Proxy( IMemAllocator * This, /* [in] */ ALLOCATOR_PROPERTIES *pRequest, /* [out] */ ALLOCATOR_PROPERTIES *pActual); void __RPC_STUB IMemAllocator_SetProperties_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMemAllocator_GetProperties_Proxy( IMemAllocator * This, /* [out] */ ALLOCATOR_PROPERTIES *pProps); void __RPC_STUB IMemAllocator_GetProperties_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMemAllocator_Commit_Proxy( IMemAllocator * This); void __RPC_STUB IMemAllocator_Commit_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMemAllocator_Decommit_Proxy( IMemAllocator * This); void __RPC_STUB IMemAllocator_Decommit_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMemAllocator_GetBuffer_Proxy( IMemAllocator * This, /* [out] */ IMediaSample **ppBuffer, /* [in] */ REFERENCE_TIME *pStartTime, /* [in] */ REFERENCE_TIME *pEndTime, /* [in] */ DWORD dwFlags); void __RPC_STUB IMemAllocator_GetBuffer_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMemAllocator_ReleaseBuffer_Proxy( IMemAllocator * This, /* [in] */ IMediaSample *pBuffer); void __RPC_STUB IMemAllocator_ReleaseBuffer_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IMemAllocator_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0124 */ /* [local] */ typedef IMemAllocator *PMEMALLOCATOR; extern RPC_IF_HANDLE __MIDL_itf_strmif_0124_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0124_v0_0_s_ifspec; #ifndef __IMemAllocatorCallbackTemp_INTERFACE_DEFINED__ #define __IMemAllocatorCallbackTemp_INTERFACE_DEFINED__ /* interface IMemAllocatorCallbackTemp */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IMemAllocatorCallbackTemp; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("379a0cf0-c1de-11d2-abf5-00a0c905f375") IMemAllocatorCallbackTemp : public IMemAllocator { public: virtual HRESULT STDMETHODCALLTYPE SetNotify( /* [in] */ IMemAllocatorNotifyCallbackTemp *pNotify) = 0; virtual HRESULT STDMETHODCALLTYPE GetFreeCount( /* [out] */ LONG *plBuffersFree) = 0; }; #else /* C style interface */ typedef struct IMemAllocatorCallbackTempVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IMemAllocatorCallbackTemp * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IMemAllocatorCallbackTemp * This); ULONG ( STDMETHODCALLTYPE *Release )( IMemAllocatorCallbackTemp * This); HRESULT ( STDMETHODCALLTYPE *SetProperties )( IMemAllocatorCallbackTemp * This, /* [in] */ ALLOCATOR_PROPERTIES *pRequest, /* [out] */ ALLOCATOR_PROPERTIES *pActual); HRESULT ( STDMETHODCALLTYPE *GetProperties )( IMemAllocatorCallbackTemp * This, /* [out] */ ALLOCATOR_PROPERTIES *pProps); HRESULT ( STDMETHODCALLTYPE *Commit )( IMemAllocatorCallbackTemp * This); HRESULT ( STDMETHODCALLTYPE *Decommit )( IMemAllocatorCallbackTemp * This); HRESULT ( STDMETHODCALLTYPE *GetBuffer )( IMemAllocatorCallbackTemp * This, /* [out] */ IMediaSample **ppBuffer, /* [in] */ REFERENCE_TIME *pStartTime, /* [in] */ REFERENCE_TIME *pEndTime, /* [in] */ DWORD dwFlags); HRESULT ( STDMETHODCALLTYPE *ReleaseBuffer )( IMemAllocatorCallbackTemp * This, /* [in] */ IMediaSample *pBuffer); HRESULT ( STDMETHODCALLTYPE *SetNotify )( IMemAllocatorCallbackTemp * This, /* [in] */ IMemAllocatorNotifyCallbackTemp *pNotify); HRESULT ( STDMETHODCALLTYPE *GetFreeCount )( IMemAllocatorCallbackTemp * This, /* [out] */ LONG *plBuffersFree); END_INTERFACE } IMemAllocatorCallbackTempVtbl; interface IMemAllocatorCallbackTemp { CONST_VTBL struct IMemAllocatorCallbackTempVtbl *lpVtbl; }; #ifdef COBJMACROS #define IMemAllocatorCallbackTemp_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IMemAllocatorCallbackTemp_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IMemAllocatorCallbackTemp_Release(This) \ (This)->lpVtbl -> Release(This) #define IMemAllocatorCallbackTemp_SetProperties(This,pRequest,pActual) \ (This)->lpVtbl -> SetProperties(This,pRequest,pActual) #define IMemAllocatorCallbackTemp_GetProperties(This,pProps) \ (This)->lpVtbl -> GetProperties(This,pProps) #define IMemAllocatorCallbackTemp_Commit(This) \ (This)->lpVtbl -> Commit(This) #define IMemAllocatorCallbackTemp_Decommit(This) \ (This)->lpVtbl -> Decommit(This) #define IMemAllocatorCallbackTemp_GetBuffer(This,ppBuffer,pStartTime,pEndTime,dwFlags) \ (This)->lpVtbl -> GetBuffer(This,ppBuffer,pStartTime,pEndTime,dwFlags) #define IMemAllocatorCallbackTemp_ReleaseBuffer(This,pBuffer) \ (This)->lpVtbl -> ReleaseBuffer(This,pBuffer) #define IMemAllocatorCallbackTemp_SetNotify(This,pNotify) \ (This)->lpVtbl -> SetNotify(This,pNotify) #define IMemAllocatorCallbackTemp_GetFreeCount(This,plBuffersFree) \ (This)->lpVtbl -> GetFreeCount(This,plBuffersFree) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IMemAllocatorCallbackTemp_SetNotify_Proxy( IMemAllocatorCallbackTemp * This, /* [in] */ IMemAllocatorNotifyCallbackTemp *pNotify); void __RPC_STUB IMemAllocatorCallbackTemp_SetNotify_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMemAllocatorCallbackTemp_GetFreeCount_Proxy( IMemAllocatorCallbackTemp * This, /* [out] */ LONG *plBuffersFree); void __RPC_STUB IMemAllocatorCallbackTemp_GetFreeCount_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IMemAllocatorCallbackTemp_INTERFACE_DEFINED__ */ #ifndef __IMemAllocatorNotifyCallbackTemp_INTERFACE_DEFINED__ #define __IMemAllocatorNotifyCallbackTemp_INTERFACE_DEFINED__ /* interface IMemAllocatorNotifyCallbackTemp */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IMemAllocatorNotifyCallbackTemp; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("92980b30-c1de-11d2-abf5-00a0c905f375") IMemAllocatorNotifyCallbackTemp : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE NotifyRelease( void) = 0; }; #else /* C style interface */ typedef struct IMemAllocatorNotifyCallbackTempVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IMemAllocatorNotifyCallbackTemp * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IMemAllocatorNotifyCallbackTemp * This); ULONG ( STDMETHODCALLTYPE *Release )( IMemAllocatorNotifyCallbackTemp * This); HRESULT ( STDMETHODCALLTYPE *NotifyRelease )( IMemAllocatorNotifyCallbackTemp * This); END_INTERFACE } IMemAllocatorNotifyCallbackTempVtbl; interface IMemAllocatorNotifyCallbackTemp { CONST_VTBL struct IMemAllocatorNotifyCallbackTempVtbl *lpVtbl; }; #ifdef COBJMACROS #define IMemAllocatorNotifyCallbackTemp_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IMemAllocatorNotifyCallbackTemp_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IMemAllocatorNotifyCallbackTemp_Release(This) \ (This)->lpVtbl -> Release(This) #define IMemAllocatorNotifyCallbackTemp_NotifyRelease(This) \ (This)->lpVtbl -> NotifyRelease(This) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IMemAllocatorNotifyCallbackTemp_NotifyRelease_Proxy( IMemAllocatorNotifyCallbackTemp * This); void __RPC_STUB IMemAllocatorNotifyCallbackTemp_NotifyRelease_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IMemAllocatorNotifyCallbackTemp_INTERFACE_DEFINED__ */ #ifndef __IMemInputPin_INTERFACE_DEFINED__ #define __IMemInputPin_INTERFACE_DEFINED__ /* interface IMemInputPin */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IMemInputPin; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("56a8689d-0ad4-11ce-b03a-0020af0ba770") IMemInputPin : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE GetAllocator( /* [out] */ IMemAllocator **ppAllocator) = 0; virtual HRESULT STDMETHODCALLTYPE NotifyAllocator( /* [in] */ IMemAllocator *pAllocator, /* [in] */ BOOL bReadOnly) = 0; virtual HRESULT STDMETHODCALLTYPE GetAllocatorRequirements( /* [out] */ ALLOCATOR_PROPERTIES *pProps) = 0; virtual HRESULT STDMETHODCALLTYPE Receive( /* [in] */ IMediaSample *pSample) = 0; virtual HRESULT STDMETHODCALLTYPE ReceiveMultiple( /* [size_is][in] */ IMediaSample **pSamples, /* [in] */ long nSamples, /* [out] */ long *nSamplesProcessed) = 0; virtual HRESULT STDMETHODCALLTYPE ReceiveCanBlock( void) = 0; }; #else /* C style interface */ typedef struct IMemInputPinVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IMemInputPin * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IMemInputPin * This); ULONG ( STDMETHODCALLTYPE *Release )( IMemInputPin * This); HRESULT ( STDMETHODCALLTYPE *GetAllocator )( IMemInputPin * This, /* [out] */ IMemAllocator **ppAllocator); HRESULT ( STDMETHODCALLTYPE *NotifyAllocator )( IMemInputPin * This, /* [in] */ IMemAllocator *pAllocator, /* [in] */ BOOL bReadOnly); HRESULT ( STDMETHODCALLTYPE *GetAllocatorRequirements )( IMemInputPin * This, /* [out] */ ALLOCATOR_PROPERTIES *pProps); HRESULT ( STDMETHODCALLTYPE *Receive )( IMemInputPin * This, /* [in] */ IMediaSample *pSample); HRESULT ( STDMETHODCALLTYPE *ReceiveMultiple )( IMemInputPin * This, /* [size_is][in] */ IMediaSample **pSamples, /* [in] */ long nSamples, /* [out] */ long *nSamplesProcessed); HRESULT ( STDMETHODCALLTYPE *ReceiveCanBlock )( IMemInputPin * This); END_INTERFACE } IMemInputPinVtbl; interface IMemInputPin { CONST_VTBL struct IMemInputPinVtbl *lpVtbl; }; #ifdef COBJMACROS #define IMemInputPin_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IMemInputPin_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IMemInputPin_Release(This) \ (This)->lpVtbl -> Release(This) #define IMemInputPin_GetAllocator(This,ppAllocator) \ (This)->lpVtbl -> GetAllocator(This,ppAllocator) #define IMemInputPin_NotifyAllocator(This,pAllocator,bReadOnly) \ (This)->lpVtbl -> NotifyAllocator(This,pAllocator,bReadOnly) #define IMemInputPin_GetAllocatorRequirements(This,pProps) \ (This)->lpVtbl -> GetAllocatorRequirements(This,pProps) #define IMemInputPin_Receive(This,pSample) \ (This)->lpVtbl -> Receive(This,pSample) #define IMemInputPin_ReceiveMultiple(This,pSamples,nSamples,nSamplesProcessed) \ (This)->lpVtbl -> ReceiveMultiple(This,pSamples,nSamples,nSamplesProcessed) #define IMemInputPin_ReceiveCanBlock(This) \ (This)->lpVtbl -> ReceiveCanBlock(This) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IMemInputPin_GetAllocator_Proxy( IMemInputPin * This, /* [out] */ IMemAllocator **ppAllocator); void __RPC_STUB IMemInputPin_GetAllocator_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMemInputPin_NotifyAllocator_Proxy( IMemInputPin * This, /* [in] */ IMemAllocator *pAllocator, /* [in] */ BOOL bReadOnly); void __RPC_STUB IMemInputPin_NotifyAllocator_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMemInputPin_GetAllocatorRequirements_Proxy( IMemInputPin * This, /* [out] */ ALLOCATOR_PROPERTIES *pProps); void __RPC_STUB IMemInputPin_GetAllocatorRequirements_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMemInputPin_Receive_Proxy( IMemInputPin * This, /* [in] */ IMediaSample *pSample); void __RPC_STUB IMemInputPin_Receive_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMemInputPin_ReceiveMultiple_Proxy( IMemInputPin * This, /* [size_is][in] */ IMediaSample **pSamples, /* [in] */ long nSamples, /* [out] */ long *nSamplesProcessed); void __RPC_STUB IMemInputPin_ReceiveMultiple_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMemInputPin_ReceiveCanBlock_Proxy( IMemInputPin * This); void __RPC_STUB IMemInputPin_ReceiveCanBlock_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IMemInputPin_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0127 */ /* [local] */ typedef IMemInputPin *PMEMINPUTPIN; extern RPC_IF_HANDLE __MIDL_itf_strmif_0127_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0127_v0_0_s_ifspec; #ifndef __IAMovieSetup_INTERFACE_DEFINED__ #define __IAMovieSetup_INTERFACE_DEFINED__ /* interface IAMovieSetup */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IAMovieSetup; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("a3d8cec0-7e5a-11cf-bbc5-00805f6cef20") IAMovieSetup : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE Register( void) = 0; virtual HRESULT STDMETHODCALLTYPE Unregister( void) = 0; }; #else /* C style interface */ typedef struct IAMovieSetupVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMovieSetup * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMovieSetup * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMovieSetup * This); HRESULT ( STDMETHODCALLTYPE *Register )( IAMovieSetup * This); HRESULT ( STDMETHODCALLTYPE *Unregister )( IAMovieSetup * This); END_INTERFACE } IAMovieSetupVtbl; interface IAMovieSetup { CONST_VTBL struct IAMovieSetupVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMovieSetup_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMovieSetup_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMovieSetup_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMovieSetup_Register(This) \ (This)->lpVtbl -> Register(This) #define IAMovieSetup_Unregister(This) \ (This)->lpVtbl -> Unregister(This) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMovieSetup_Register_Proxy( IAMovieSetup * This); void __RPC_STUB IAMovieSetup_Register_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMovieSetup_Unregister_Proxy( IAMovieSetup * This); void __RPC_STUB IAMovieSetup_Unregister_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMovieSetup_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0128 */ /* [local] */ typedef IAMovieSetup *PAMOVIESETUP; typedef enum AM_SEEKING_SeekingFlags { AM_SEEKING_NoPositioning = 0, AM_SEEKING_AbsolutePositioning = 0x1, AM_SEEKING_RelativePositioning = 0x2, AM_SEEKING_IncrementalPositioning = 0x3, AM_SEEKING_PositioningBitsMask = 0x3, AM_SEEKING_SeekToKeyFrame = 0x4, AM_SEEKING_ReturnTime = 0x8, AM_SEEKING_Segment = 0x10, AM_SEEKING_NoFlush = 0x20 } AM_SEEKING_SEEKING_FLAGS; typedef enum AM_SEEKING_SeekingCapabilities { AM_SEEKING_CanSeekAbsolute = 0x1, AM_SEEKING_CanSeekForwards = 0x2, AM_SEEKING_CanSeekBackwards = 0x4, AM_SEEKING_CanGetCurrentPos = 0x8, AM_SEEKING_CanGetStopPos = 0x10, AM_SEEKING_CanGetDuration = 0x20, AM_SEEKING_CanPlayBackwards = 0x40, AM_SEEKING_CanDoSegments = 0x80, AM_SEEKING_Source = 0x100 } AM_SEEKING_SEEKING_CAPABILITIES; extern RPC_IF_HANDLE __MIDL_itf_strmif_0128_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0128_v0_0_s_ifspec; #ifndef __IMediaSeeking_INTERFACE_DEFINED__ #define __IMediaSeeking_INTERFACE_DEFINED__ /* interface IMediaSeeking */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IMediaSeeking; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("36b73880-c2c8-11cf-8b46-00805f6cef60") IMediaSeeking : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE GetCapabilities( /* [out] */ DWORD *pCapabilities) = 0; virtual HRESULT STDMETHODCALLTYPE CheckCapabilities( /* [out][in] */ DWORD *pCapabilities) = 0; virtual HRESULT STDMETHODCALLTYPE IsFormatSupported( /* [in] */ const GUID *pFormat) = 0; virtual HRESULT STDMETHODCALLTYPE QueryPreferredFormat( /* [out] */ GUID *pFormat) = 0; virtual HRESULT STDMETHODCALLTYPE GetTimeFormat( /* [out] */ GUID *pFormat) = 0; virtual HRESULT STDMETHODCALLTYPE IsUsingTimeFormat( /* [in] */ const GUID *pFormat) = 0; virtual HRESULT STDMETHODCALLTYPE SetTimeFormat( /* [in] */ const GUID *pFormat) = 0; virtual HRESULT STDMETHODCALLTYPE GetDuration( /* [out] */ LONGLONG *pDuration) = 0; virtual HRESULT STDMETHODCALLTYPE GetStopPosition( /* [out] */ LONGLONG *pStop) = 0; virtual HRESULT STDMETHODCALLTYPE GetCurrentPosition( /* [out] */ LONGLONG *pCurrent) = 0; virtual HRESULT STDMETHODCALLTYPE ConvertTimeFormat( /* [out] */ LONGLONG *pTarget, /* [in] */ const GUID *pTargetFormat, /* [in] */ LONGLONG Source, /* [in] */ const GUID *pSourceFormat) = 0; virtual HRESULT STDMETHODCALLTYPE SetPositions( /* [out][in] */ LONGLONG *pCurrent, /* [in] */ DWORD dwCurrentFlags, /* [out][in] */ LONGLONG *pStop, /* [in] */ DWORD dwStopFlags) = 0; virtual HRESULT STDMETHODCALLTYPE GetPositions( /* [out] */ LONGLONG *pCurrent, /* [out] */ LONGLONG *pStop) = 0; virtual HRESULT STDMETHODCALLTYPE GetAvailable( /* [out] */ LONGLONG *pEarliest, /* [out] */ LONGLONG *pLatest) = 0; virtual HRESULT STDMETHODCALLTYPE SetRate( /* [in] */ double dRate) = 0; virtual HRESULT STDMETHODCALLTYPE GetRate( /* [out] */ double *pdRate) = 0; virtual HRESULT STDMETHODCALLTYPE GetPreroll( /* [out] */ LONGLONG *pllPreroll) = 0; }; #else /* C style interface */ typedef struct IMediaSeekingVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IMediaSeeking * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IMediaSeeking * This); ULONG ( STDMETHODCALLTYPE *Release )( IMediaSeeking * This); HRESULT ( STDMETHODCALLTYPE *GetCapabilities )( IMediaSeeking * This, /* [out] */ DWORD *pCapabilities); HRESULT ( STDMETHODCALLTYPE *CheckCapabilities )( IMediaSeeking * This, /* [out][in] */ DWORD *pCapabilities); HRESULT ( STDMETHODCALLTYPE *IsFormatSupported )( IMediaSeeking * This, /* [in] */ const GUID *pFormat); HRESULT ( STDMETHODCALLTYPE *QueryPreferredFormat )( IMediaSeeking * This, /* [out] */ GUID *pFormat); HRESULT ( STDMETHODCALLTYPE *GetTimeFormat )( IMediaSeeking * This, /* [out] */ GUID *pFormat); HRESULT ( STDMETHODCALLTYPE *IsUsingTimeFormat )( IMediaSeeking * This, /* [in] */ const GUID *pFormat); HRESULT ( STDMETHODCALLTYPE *SetTimeFormat )( IMediaSeeking * This, /* [in] */ const GUID *pFormat); HRESULT ( STDMETHODCALLTYPE *GetDuration )( IMediaSeeking * This, /* [out] */ LONGLONG *pDuration); HRESULT ( STDMETHODCALLTYPE *GetStopPosition )( IMediaSeeking * This, /* [out] */ LONGLONG *pStop); HRESULT ( STDMETHODCALLTYPE *GetCurrentPosition )( IMediaSeeking * This, /* [out] */ LONGLONG *pCurrent); HRESULT ( STDMETHODCALLTYPE *ConvertTimeFormat )( IMediaSeeking * This, /* [out] */ LONGLONG *pTarget, /* [in] */ const GUID *pTargetFormat, /* [in] */ LONGLONG Source, /* [in] */ const GUID *pSourceFormat); HRESULT ( STDMETHODCALLTYPE *SetPositions )( IMediaSeeking * This, /* [out][in] */ LONGLONG *pCurrent, /* [in] */ DWORD dwCurrentFlags, /* [out][in] */ LONGLONG *pStop, /* [in] */ DWORD dwStopFlags); HRESULT ( STDMETHODCALLTYPE *GetPositions )( IMediaSeeking * This, /* [out] */ LONGLONG *pCurrent, /* [out] */ LONGLONG *pStop); HRESULT ( STDMETHODCALLTYPE *GetAvailable )( IMediaSeeking * This, /* [out] */ LONGLONG *pEarliest, /* [out] */ LONGLONG *pLatest); HRESULT ( STDMETHODCALLTYPE *SetRate )( IMediaSeeking * This, /* [in] */ double dRate); HRESULT ( STDMETHODCALLTYPE *GetRate )( IMediaSeeking * This, /* [out] */ double *pdRate); HRESULT ( STDMETHODCALLTYPE *GetPreroll )( IMediaSeeking * This, /* [out] */ LONGLONG *pllPreroll); END_INTERFACE } IMediaSeekingVtbl; interface IMediaSeeking { CONST_VTBL struct IMediaSeekingVtbl *lpVtbl; }; #ifdef COBJMACROS #define IMediaSeeking_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IMediaSeeking_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IMediaSeeking_Release(This) \ (This)->lpVtbl -> Release(This) #define IMediaSeeking_GetCapabilities(This,pCapabilities) \ (This)->lpVtbl -> GetCapabilities(This,pCapabilities) #define IMediaSeeking_CheckCapabilities(This,pCapabilities) \ (This)->lpVtbl -> CheckCapabilities(This,pCapabilities) #define IMediaSeeking_IsFormatSupported(This,pFormat) \ (This)->lpVtbl -> IsFormatSupported(This,pFormat) #define IMediaSeeking_QueryPreferredFormat(This,pFormat) \ (This)->lpVtbl -> QueryPreferredFormat(This,pFormat) #define IMediaSeeking_GetTimeFormat(This,pFormat) \ (This)->lpVtbl -> GetTimeFormat(This,pFormat) #define IMediaSeeking_IsUsingTimeFormat(This,pFormat) \ (This)->lpVtbl -> IsUsingTimeFormat(This,pFormat) #define IMediaSeeking_SetTimeFormat(This,pFormat) \ (This)->lpVtbl -> SetTimeFormat(This,pFormat) #define IMediaSeeking_GetDuration(This,pDuration) \ (This)->lpVtbl -> GetDuration(This,pDuration) #define IMediaSeeking_GetStopPosition(This,pStop) \ (This)->lpVtbl -> GetStopPosition(This,pStop) #define IMediaSeeking_GetCurrentPosition(This,pCurrent) \ (This)->lpVtbl -> GetCurrentPosition(This,pCurrent) #define IMediaSeeking_ConvertTimeFormat(This,pTarget,pTargetFormat,Source,pSourceFormat) \ (This)->lpVtbl -> ConvertTimeFormat(This,pTarget,pTargetFormat,Source,pSourceFormat) #define IMediaSeeking_SetPositions(This,pCurrent,dwCurrentFlags,pStop,dwStopFlags) \ (This)->lpVtbl -> SetPositions(This,pCurrent,dwCurrentFlags,pStop,dwStopFlags) #define IMediaSeeking_GetPositions(This,pCurrent,pStop) \ (This)->lpVtbl -> GetPositions(This,pCurrent,pStop) #define IMediaSeeking_GetAvailable(This,pEarliest,pLatest) \ (This)->lpVtbl -> GetAvailable(This,pEarliest,pLatest) #define IMediaSeeking_SetRate(This,dRate) \ (This)->lpVtbl -> SetRate(This,dRate) #define IMediaSeeking_GetRate(This,pdRate) \ (This)->lpVtbl -> GetRate(This,pdRate) #define IMediaSeeking_GetPreroll(This,pllPreroll) \ (This)->lpVtbl -> GetPreroll(This,pllPreroll) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IMediaSeeking_GetCapabilities_Proxy( IMediaSeeking * This, /* [out] */ DWORD *pCapabilities); void __RPC_STUB IMediaSeeking_GetCapabilities_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMediaSeeking_CheckCapabilities_Proxy( IMediaSeeking * This, /* [out][in] */ DWORD *pCapabilities); void __RPC_STUB IMediaSeeking_CheckCapabilities_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMediaSeeking_IsFormatSupported_Proxy( IMediaSeeking * This, /* [in] */ const GUID *pFormat); void __RPC_STUB IMediaSeeking_IsFormatSupported_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMediaSeeking_QueryPreferredFormat_Proxy( IMediaSeeking * This, /* [out] */ GUID *pFormat); void __RPC_STUB IMediaSeeking_QueryPreferredFormat_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMediaSeeking_GetTimeFormat_Proxy( IMediaSeeking * This, /* [out] */ GUID *pFormat); void __RPC_STUB IMediaSeeking_GetTimeFormat_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMediaSeeking_IsUsingTimeFormat_Proxy( IMediaSeeking * This, /* [in] */ const GUID *pFormat); void __RPC_STUB IMediaSeeking_IsUsingTimeFormat_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMediaSeeking_SetTimeFormat_Proxy( IMediaSeeking * This, /* [in] */ const GUID *pFormat); void __RPC_STUB IMediaSeeking_SetTimeFormat_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMediaSeeking_GetDuration_Proxy( IMediaSeeking * This, /* [out] */ LONGLONG *pDuration); void __RPC_STUB IMediaSeeking_GetDuration_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMediaSeeking_GetStopPosition_Proxy( IMediaSeeking * This, /* [out] */ LONGLONG *pStop); void __RPC_STUB IMediaSeeking_GetStopPosition_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMediaSeeking_GetCurrentPosition_Proxy( IMediaSeeking * This, /* [out] */ LONGLONG *pCurrent); void __RPC_STUB IMediaSeeking_GetCurrentPosition_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMediaSeeking_ConvertTimeFormat_Proxy( IMediaSeeking * This, /* [out] */ LONGLONG *pTarget, /* [in] */ const GUID *pTargetFormat, /* [in] */ LONGLONG Source, /* [in] */ const GUID *pSourceFormat); void __RPC_STUB IMediaSeeking_ConvertTimeFormat_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMediaSeeking_SetPositions_Proxy( IMediaSeeking * This, /* [out][in] */ LONGLONG *pCurrent, /* [in] */ DWORD dwCurrentFlags, /* [out][in] */ LONGLONG *pStop, /* [in] */ DWORD dwStopFlags); void __RPC_STUB IMediaSeeking_SetPositions_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMediaSeeking_GetPositions_Proxy( IMediaSeeking * This, /* [out] */ LONGLONG *pCurrent, /* [out] */ LONGLONG *pStop); void __RPC_STUB IMediaSeeking_GetPositions_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMediaSeeking_GetAvailable_Proxy( IMediaSeeking * This, /* [out] */ LONGLONG *pEarliest, /* [out] */ LONGLONG *pLatest); void __RPC_STUB IMediaSeeking_GetAvailable_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMediaSeeking_SetRate_Proxy( IMediaSeeking * This, /* [in] */ double dRate); void __RPC_STUB IMediaSeeking_SetRate_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMediaSeeking_GetRate_Proxy( IMediaSeeking * This, /* [out] */ double *pdRate); void __RPC_STUB IMediaSeeking_GetRate_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMediaSeeking_GetPreroll_Proxy( IMediaSeeking * This, /* [out] */ LONGLONG *pllPreroll); void __RPC_STUB IMediaSeeking_GetPreroll_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IMediaSeeking_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0129 */ /* [local] */ typedef IMediaSeeking *PMEDIASEEKING; enum tagAM_MEDIAEVENT_FLAGS { AM_MEDIAEVENT_NONOTIFY = 0x01 }; typedef /* [public][public] */ struct __MIDL___MIDL_itf_strmif_0129_0001 { CLSID Clsid; LPWSTR Name; } REGFILTER; extern RPC_IF_HANDLE __MIDL_itf_strmif_0129_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0129_v0_0_s_ifspec; #ifndef __IEnumRegFilters_INTERFACE_DEFINED__ #define __IEnumRegFilters_INTERFACE_DEFINED__ /* interface IEnumRegFilters */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IEnumRegFilters; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("56a868a4-0ad4-11ce-b03a-0020af0ba770") IEnumRegFilters : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE Next( /* [in] */ ULONG cFilters, /* [out] */ REGFILTER **apRegFilter, /* [out] */ ULONG *pcFetched) = 0; virtual HRESULT STDMETHODCALLTYPE Skip( /* [in] */ ULONG cFilters) = 0; virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0; virtual HRESULT STDMETHODCALLTYPE Clone( /* [out] */ IEnumRegFilters **ppEnum) = 0; }; #else /* C style interface */ typedef struct IEnumRegFiltersVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IEnumRegFilters * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IEnumRegFilters * This); ULONG ( STDMETHODCALLTYPE *Release )( IEnumRegFilters * This); HRESULT ( STDMETHODCALLTYPE *Next )( IEnumRegFilters * This, /* [in] */ ULONG cFilters, /* [out] */ REGFILTER **apRegFilter, /* [out] */ ULONG *pcFetched); HRESULT ( STDMETHODCALLTYPE *Skip )( IEnumRegFilters * This, /* [in] */ ULONG cFilters); HRESULT ( STDMETHODCALLTYPE *Reset )( IEnumRegFilters * This); HRESULT ( STDMETHODCALLTYPE *Clone )( IEnumRegFilters * This, /* [out] */ IEnumRegFilters **ppEnum); END_INTERFACE } IEnumRegFiltersVtbl; interface IEnumRegFilters { CONST_VTBL struct IEnumRegFiltersVtbl *lpVtbl; }; #ifdef COBJMACROS #define IEnumRegFilters_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IEnumRegFilters_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IEnumRegFilters_Release(This) \ (This)->lpVtbl -> Release(This) #define IEnumRegFilters_Next(This,cFilters,apRegFilter,pcFetched) \ (This)->lpVtbl -> Next(This,cFilters,apRegFilter,pcFetched) #define IEnumRegFilters_Skip(This,cFilters) \ (This)->lpVtbl -> Skip(This,cFilters) #define IEnumRegFilters_Reset(This) \ (This)->lpVtbl -> Reset(This) #define IEnumRegFilters_Clone(This,ppEnum) \ (This)->lpVtbl -> Clone(This,ppEnum) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IEnumRegFilters_Next_Proxy( IEnumRegFilters * This, /* [in] */ ULONG cFilters, /* [out] */ REGFILTER **apRegFilter, /* [out] */ ULONG *pcFetched); void __RPC_STUB IEnumRegFilters_Next_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IEnumRegFilters_Skip_Proxy( IEnumRegFilters * This, /* [in] */ ULONG cFilters); void __RPC_STUB IEnumRegFilters_Skip_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IEnumRegFilters_Reset_Proxy( IEnumRegFilters * This); void __RPC_STUB IEnumRegFilters_Reset_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IEnumRegFilters_Clone_Proxy( IEnumRegFilters * This, /* [out] */ IEnumRegFilters **ppEnum); void __RPC_STUB IEnumRegFilters_Clone_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IEnumRegFilters_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0131 */ /* [local] */ typedef IEnumRegFilters *PENUMREGFILTERS; extern RPC_IF_HANDLE __MIDL_itf_strmif_0131_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0131_v0_0_s_ifspec; #ifndef __IFilterMapper_INTERFACE_DEFINED__ #define __IFilterMapper_INTERFACE_DEFINED__ /* interface IFilterMapper */ /* [unique][uuid][object] */ enum __MIDL_IFilterMapper_0001 { MERIT_PREFERRED = 0x800000, MERIT_NORMAL = 0x600000, MERIT_UNLIKELY = 0x400000, MERIT_DO_NOT_USE = 0x200000, MERIT_SW_COMPRESSOR = 0x100000, MERIT_HW_COMPRESSOR = 0x100050 } ; EXTERN_C const IID IID_IFilterMapper; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("56a868a3-0ad4-11ce-b03a-0020af0ba770") IFilterMapper : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE RegisterFilter( /* [in] */ CLSID clsid, /* [in] */ LPCWSTR Name, /* [in] */ DWORD dwMerit) = 0; virtual HRESULT STDMETHODCALLTYPE RegisterFilterInstance( /* [in] */ CLSID clsid, /* [in] */ LPCWSTR Name, /* [out] */ CLSID *MRId) = 0; virtual HRESULT STDMETHODCALLTYPE RegisterPin( /* [in] */ CLSID Filter, /* [in] */ LPCWSTR Name, /* [in] */ BOOL bRendered, /* [in] */ BOOL bOutput, /* [in] */ BOOL bZero, /* [in] */ BOOL bMany, /* [in] */ CLSID ConnectsToFilter, /* [in] */ LPCWSTR ConnectsToPin) = 0; virtual HRESULT STDMETHODCALLTYPE RegisterPinType( /* [in] */ CLSID clsFilter, /* [in] */ LPCWSTR strName, /* [in] */ CLSID clsMajorType, /* [in] */ CLSID clsSubType) = 0; virtual HRESULT STDMETHODCALLTYPE UnregisterFilter( /* [in] */ CLSID Filter) = 0; virtual HRESULT STDMETHODCALLTYPE UnregisterFilterInstance( /* [in] */ CLSID MRId) = 0; virtual HRESULT STDMETHODCALLTYPE UnregisterPin( /* [in] */ CLSID Filter, /* [in] */ LPCWSTR Name) = 0; virtual HRESULT STDMETHODCALLTYPE EnumMatchingFilters( /* [out] */ IEnumRegFilters **ppEnum, /* [in] */ DWORD dwMerit, /* [in] */ BOOL bInputNeeded, /* [in] */ CLSID clsInMaj, /* [in] */ CLSID clsInSub, /* [in] */ BOOL bRender, /* [in] */ BOOL bOututNeeded, /* [in] */ CLSID clsOutMaj, /* [in] */ CLSID clsOutSub) = 0; }; #else /* C style interface */ typedef struct IFilterMapperVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IFilterMapper * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IFilterMapper * This); ULONG ( STDMETHODCALLTYPE *Release )( IFilterMapper * This); HRESULT ( STDMETHODCALLTYPE *RegisterFilter )( IFilterMapper * This, /* [in] */ CLSID clsid, /* [in] */ LPCWSTR Name, /* [in] */ DWORD dwMerit); HRESULT ( STDMETHODCALLTYPE *RegisterFilterInstance )( IFilterMapper * This, /* [in] */ CLSID clsid, /* [in] */ LPCWSTR Name, /* [out] */ CLSID *MRId); HRESULT ( STDMETHODCALLTYPE *RegisterPin )( IFilterMapper * This, /* [in] */ CLSID Filter, /* [in] */ LPCWSTR Name, /* [in] */ BOOL bRendered, /* [in] */ BOOL bOutput, /* [in] */ BOOL bZero, /* [in] */ BOOL bMany, /* [in] */ CLSID ConnectsToFilter, /* [in] */ LPCWSTR ConnectsToPin); HRESULT ( STDMETHODCALLTYPE *RegisterPinType )( IFilterMapper * This, /* [in] */ CLSID clsFilter, /* [in] */ LPCWSTR strName, /* [in] */ CLSID clsMajorType, /* [in] */ CLSID clsSubType); HRESULT ( STDMETHODCALLTYPE *UnregisterFilter )( IFilterMapper * This, /* [in] */ CLSID Filter); HRESULT ( STDMETHODCALLTYPE *UnregisterFilterInstance )( IFilterMapper * This, /* [in] */ CLSID MRId); HRESULT ( STDMETHODCALLTYPE *UnregisterPin )( IFilterMapper * This, /* [in] */ CLSID Filter, /* [in] */ LPCWSTR Name); HRESULT ( STDMETHODCALLTYPE *EnumMatchingFilters )( IFilterMapper * This, /* [out] */ IEnumRegFilters **ppEnum, /* [in] */ DWORD dwMerit, /* [in] */ BOOL bInputNeeded, /* [in] */ CLSID clsInMaj, /* [in] */ CLSID clsInSub, /* [in] */ BOOL bRender, /* [in] */ BOOL bOututNeeded, /* [in] */ CLSID clsOutMaj, /* [in] */ CLSID clsOutSub); END_INTERFACE } IFilterMapperVtbl; interface IFilterMapper { CONST_VTBL struct IFilterMapperVtbl *lpVtbl; }; #ifdef COBJMACROS #define IFilterMapper_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IFilterMapper_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IFilterMapper_Release(This) \ (This)->lpVtbl -> Release(This) #define IFilterMapper_RegisterFilter(This,clsid,Name,dwMerit) \ (This)->lpVtbl -> RegisterFilter(This,clsid,Name,dwMerit) #define IFilterMapper_RegisterFilterInstance(This,clsid,Name,MRId) \ (This)->lpVtbl -> RegisterFilterInstance(This,clsid,Name,MRId) #define IFilterMapper_RegisterPin(This,Filter,Name,bRendered,bOutput,bZero,bMany,ConnectsToFilter,ConnectsToPin) \ (This)->lpVtbl -> RegisterPin(This,Filter,Name,bRendered,bOutput,bZero,bMany,ConnectsToFilter,ConnectsToPin) #define IFilterMapper_RegisterPinType(This,clsFilter,strName,clsMajorType,clsSubType) \ (This)->lpVtbl -> RegisterPinType(This,clsFilter,strName,clsMajorType,clsSubType) #define IFilterMapper_UnregisterFilter(This,Filter) \ (This)->lpVtbl -> UnregisterFilter(This,Filter) #define IFilterMapper_UnregisterFilterInstance(This,MRId) \ (This)->lpVtbl -> UnregisterFilterInstance(This,MRId) #define IFilterMapper_UnregisterPin(This,Filter,Name) \ (This)->lpVtbl -> UnregisterPin(This,Filter,Name) #define IFilterMapper_EnumMatchingFilters(This,ppEnum,dwMerit,bInputNeeded,clsInMaj,clsInSub,bRender,bOututNeeded,clsOutMaj,clsOutSub) \ (This)->lpVtbl -> EnumMatchingFilters(This,ppEnum,dwMerit,bInputNeeded,clsInMaj,clsInSub,bRender,bOututNeeded,clsOutMaj,clsOutSub) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IFilterMapper_RegisterFilter_Proxy( IFilterMapper * This, /* [in] */ CLSID clsid, /* [in] */ LPCWSTR Name, /* [in] */ DWORD dwMerit); void __RPC_STUB IFilterMapper_RegisterFilter_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IFilterMapper_RegisterFilterInstance_Proxy( IFilterMapper * This, /* [in] */ CLSID clsid, /* [in] */ LPCWSTR Name, /* [out] */ CLSID *MRId); void __RPC_STUB IFilterMapper_RegisterFilterInstance_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IFilterMapper_RegisterPin_Proxy( IFilterMapper * This, /* [in] */ CLSID Filter, /* [in] */ LPCWSTR Name, /* [in] */ BOOL bRendered, /* [in] */ BOOL bOutput, /* [in] */ BOOL bZero, /* [in] */ BOOL bMany, /* [in] */ CLSID ConnectsToFilter, /* [in] */ LPCWSTR ConnectsToPin); void __RPC_STUB IFilterMapper_RegisterPin_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IFilterMapper_RegisterPinType_Proxy( IFilterMapper * This, /* [in] */ CLSID clsFilter, /* [in] */ LPCWSTR strName, /* [in] */ CLSID clsMajorType, /* [in] */ CLSID clsSubType); void __RPC_STUB IFilterMapper_RegisterPinType_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IFilterMapper_UnregisterFilter_Proxy( IFilterMapper * This, /* [in] */ CLSID Filter); void __RPC_STUB IFilterMapper_UnregisterFilter_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IFilterMapper_UnregisterFilterInstance_Proxy( IFilterMapper * This, /* [in] */ CLSID MRId); void __RPC_STUB IFilterMapper_UnregisterFilterInstance_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IFilterMapper_UnregisterPin_Proxy( IFilterMapper * This, /* [in] */ CLSID Filter, /* [in] */ LPCWSTR Name); void __RPC_STUB IFilterMapper_UnregisterPin_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IFilterMapper_EnumMatchingFilters_Proxy( IFilterMapper * This, /* [out] */ IEnumRegFilters **ppEnum, /* [in] */ DWORD dwMerit, /* [in] */ BOOL bInputNeeded, /* [in] */ CLSID clsInMaj, /* [in] */ CLSID clsInSub, /* [in] */ BOOL bRender, /* [in] */ BOOL bOututNeeded, /* [in] */ CLSID clsOutMaj, /* [in] */ CLSID clsOutSub); void __RPC_STUB IFilterMapper_EnumMatchingFilters_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IFilterMapper_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0133 */ /* [local] */ typedef /* [public][public][public][public][public][public][public] */ struct __MIDL___MIDL_itf_strmif_0133_0001 { const CLSID *clsMajorType; const CLSID *clsMinorType; } REGPINTYPES; typedef /* [public][public][public] */ struct __MIDL___MIDL_itf_strmif_0133_0002 { LPWSTR strName; BOOL bRendered; BOOL bOutput; BOOL bZero; BOOL bMany; const CLSID *clsConnectsToFilter; const WCHAR *strConnectsToPin; UINT nMediaTypes; const REGPINTYPES *lpMediaType; } REGFILTERPINS; typedef /* [public][public][public][public][public][public] */ struct __MIDL___MIDL_itf_strmif_0133_0003 { CLSID clsMedium; DWORD dw1; DWORD dw2; } REGPINMEDIUM; enum __MIDL___MIDL_itf_strmif_0133_0004 { REG_PINFLAG_B_ZERO = 0x1, REG_PINFLAG_B_RENDERER = 0x2, REG_PINFLAG_B_MANY = 0x4, REG_PINFLAG_B_OUTPUT = 0x8 } ; typedef /* [public][public][public] */ struct __MIDL___MIDL_itf_strmif_0133_0005 { DWORD dwFlags; UINT cInstances; UINT nMediaTypes; /* [size_is] */ const REGPINTYPES *lpMediaType; UINT nMediums; /* [size_is] */ const REGPINMEDIUM *lpMedium; const CLSID *clsPinCategory; } REGFILTERPINS2; typedef /* [public][public] */ struct __MIDL___MIDL_itf_strmif_0133_0006 { DWORD dwVersion; DWORD dwMerit; /* [switch_type][switch_is] */ union { /* [case()] */ struct { ULONG cPins; /* [size_is] */ const REGFILTERPINS *rgPins; } ; /* [case()] */ struct { ULONG cPins2; /* [size_is] */ const REGFILTERPINS2 *rgPins2; } ; /* [default] */ /* Empty union arm */ } ; } REGFILTER2; extern RPC_IF_HANDLE __MIDL_itf_strmif_0133_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0133_v0_0_s_ifspec; #ifndef __IFilterMapper2_INTERFACE_DEFINED__ #define __IFilterMapper2_INTERFACE_DEFINED__ /* interface IFilterMapper2 */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IFilterMapper2; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("b79bb0b0-33c1-11d1-abe1-00a0c905f375") IFilterMapper2 : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE CreateCategory( /* [in] */ REFCLSID clsidCategory, /* [in] */ DWORD dwCategoryMerit, /* [in] */ LPCWSTR Description) = 0; virtual HRESULT STDMETHODCALLTYPE UnregisterFilter( /* [in] */ const CLSID *pclsidCategory, /* [in] */ const OLECHAR *szInstance, /* [in] */ REFCLSID Filter) = 0; virtual HRESULT STDMETHODCALLTYPE RegisterFilter( /* [in] */ REFCLSID clsidFilter, /* [in] */ LPCWSTR Name, /* [out][in] */ IMoniker **ppMoniker, /* [in] */ const CLSID *pclsidCategory, /* [in] */ const OLECHAR *szInstance, /* [in] */ const REGFILTER2 *prf2) = 0; virtual HRESULT STDMETHODCALLTYPE EnumMatchingFilters( /* [out] */ IEnumMoniker **ppEnum, /* [in] */ DWORD dwFlags, /* [in] */ BOOL bExactMatch, /* [in] */ DWORD dwMerit, /* [in] */ BOOL bInputNeeded, /* [in] */ DWORD cInputTypes, /* [size_is] */ const GUID *pInputTypes, /* [in] */ const REGPINMEDIUM *pMedIn, /* [in] */ const CLSID *pPinCategoryIn, /* [in] */ BOOL bRender, /* [in] */ BOOL bOutputNeeded, /* [in] */ DWORD cOutputTypes, /* [size_is] */ const GUID *pOutputTypes, /* [in] */ const REGPINMEDIUM *pMedOut, /* [in] */ const CLSID *pPinCategoryOut) = 0; }; #else /* C style interface */ typedef struct IFilterMapper2Vtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IFilterMapper2 * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IFilterMapper2 * This); ULONG ( STDMETHODCALLTYPE *Release )( IFilterMapper2 * This); HRESULT ( STDMETHODCALLTYPE *CreateCategory )( IFilterMapper2 * This, /* [in] */ REFCLSID clsidCategory, /* [in] */ DWORD dwCategoryMerit, /* [in] */ LPCWSTR Description); HRESULT ( STDMETHODCALLTYPE *UnregisterFilter )( IFilterMapper2 * This, /* [in] */ const CLSID *pclsidCategory, /* [in] */ const OLECHAR *szInstance, /* [in] */ REFCLSID Filter); HRESULT ( STDMETHODCALLTYPE *RegisterFilter )( IFilterMapper2 * This, /* [in] */ REFCLSID clsidFilter, /* [in] */ LPCWSTR Name, /* [out][in] */ IMoniker **ppMoniker, /* [in] */ const CLSID *pclsidCategory, /* [in] */ const OLECHAR *szInstance, /* [in] */ const REGFILTER2 *prf2); HRESULT ( STDMETHODCALLTYPE *EnumMatchingFilters )( IFilterMapper2 * This, /* [out] */ IEnumMoniker **ppEnum, /* [in] */ DWORD dwFlags, /* [in] */ BOOL bExactMatch, /* [in] */ DWORD dwMerit, /* [in] */ BOOL bInputNeeded, /* [in] */ DWORD cInputTypes, /* [size_is] */ const GUID *pInputTypes, /* [in] */ const REGPINMEDIUM *pMedIn, /* [in] */ const CLSID *pPinCategoryIn, /* [in] */ BOOL bRender, /* [in] */ BOOL bOutputNeeded, /* [in] */ DWORD cOutputTypes, /* [size_is] */ const GUID *pOutputTypes, /* [in] */ const REGPINMEDIUM *pMedOut, /* [in] */ const CLSID *pPinCategoryOut); END_INTERFACE } IFilterMapper2Vtbl; interface IFilterMapper2 { CONST_VTBL struct IFilterMapper2Vtbl *lpVtbl; }; #ifdef COBJMACROS #define IFilterMapper2_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IFilterMapper2_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IFilterMapper2_Release(This) \ (This)->lpVtbl -> Release(This) #define IFilterMapper2_CreateCategory(This,clsidCategory,dwCategoryMerit,Description) \ (This)->lpVtbl -> CreateCategory(This,clsidCategory,dwCategoryMerit,Description) #define IFilterMapper2_UnregisterFilter(This,pclsidCategory,szInstance,Filter) \ (This)->lpVtbl -> UnregisterFilter(This,pclsidCategory,szInstance,Filter) #define IFilterMapper2_RegisterFilter(This,clsidFilter,Name,ppMoniker,pclsidCategory,szInstance,prf2) \ (This)->lpVtbl -> RegisterFilter(This,clsidFilter,Name,ppMoniker,pclsidCategory,szInstance,prf2) #define IFilterMapper2_EnumMatchingFilters(This,ppEnum,dwFlags,bExactMatch,dwMerit,bInputNeeded,cInputTypes,pInputTypes,pMedIn,pPinCategoryIn,bRender,bOutputNeeded,cOutputTypes,pOutputTypes,pMedOut,pPinCategoryOut) \ (This)->lpVtbl -> EnumMatchingFilters(This,ppEnum,dwFlags,bExactMatch,dwMerit,bInputNeeded,cInputTypes,pInputTypes,pMedIn,pPinCategoryIn,bRender,bOutputNeeded,cOutputTypes,pOutputTypes,pMedOut,pPinCategoryOut) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IFilterMapper2_CreateCategory_Proxy( IFilterMapper2 * This, /* [in] */ REFCLSID clsidCategory, /* [in] */ DWORD dwCategoryMerit, /* [in] */ LPCWSTR Description); void __RPC_STUB IFilterMapper2_CreateCategory_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IFilterMapper2_UnregisterFilter_Proxy( IFilterMapper2 * This, /* [in] */ const CLSID *pclsidCategory, /* [in] */ const OLECHAR *szInstance, /* [in] */ REFCLSID Filter); void __RPC_STUB IFilterMapper2_UnregisterFilter_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IFilterMapper2_RegisterFilter_Proxy( IFilterMapper2 * This, /* [in] */ REFCLSID clsidFilter, /* [in] */ LPCWSTR Name, /* [out][in] */ IMoniker **ppMoniker, /* [in] */ const CLSID *pclsidCategory, /* [in] */ const OLECHAR *szInstance, /* [in] */ const REGFILTER2 *prf2); void __RPC_STUB IFilterMapper2_RegisterFilter_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IFilterMapper2_EnumMatchingFilters_Proxy( IFilterMapper2 * This, /* [out] */ IEnumMoniker **ppEnum, /* [in] */ DWORD dwFlags, /* [in] */ BOOL bExactMatch, /* [in] */ DWORD dwMerit, /* [in] */ BOOL bInputNeeded, /* [in] */ DWORD cInputTypes, /* [size_is] */ const GUID *pInputTypes, /* [in] */ const REGPINMEDIUM *pMedIn, /* [in] */ const CLSID *pPinCategoryIn, /* [in] */ BOOL bRender, /* [in] */ BOOL bOutputNeeded, /* [in] */ DWORD cOutputTypes, /* [size_is] */ const GUID *pOutputTypes, /* [in] */ const REGPINMEDIUM *pMedOut, /* [in] */ const CLSID *pPinCategoryOut); void __RPC_STUB IFilterMapper2_EnumMatchingFilters_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IFilterMapper2_INTERFACE_DEFINED__ */ #ifndef __IFilterMapper3_INTERFACE_DEFINED__ #define __IFilterMapper3_INTERFACE_DEFINED__ /* interface IFilterMapper3 */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IFilterMapper3; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("b79bb0b1-33c1-11d1-abe1-00a0c905f375") IFilterMapper3 : public IFilterMapper2 { public: virtual HRESULT STDMETHODCALLTYPE GetICreateDevEnum( /* [out] */ ICreateDevEnum **ppEnum) = 0; }; #else /* C style interface */ typedef struct IFilterMapper3Vtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IFilterMapper3 * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IFilterMapper3 * This); ULONG ( STDMETHODCALLTYPE *Release )( IFilterMapper3 * This); HRESULT ( STDMETHODCALLTYPE *CreateCategory )( IFilterMapper3 * This, /* [in] */ REFCLSID clsidCategory, /* [in] */ DWORD dwCategoryMerit, /* [in] */ LPCWSTR Description); HRESULT ( STDMETHODCALLTYPE *UnregisterFilter )( IFilterMapper3 * This, /* [in] */ const CLSID *pclsidCategory, /* [in] */ const OLECHAR *szInstance, /* [in] */ REFCLSID Filter); HRESULT ( STDMETHODCALLTYPE *RegisterFilter )( IFilterMapper3 * This, /* [in] */ REFCLSID clsidFilter, /* [in] */ LPCWSTR Name, /* [out][in] */ IMoniker **ppMoniker, /* [in] */ const CLSID *pclsidCategory, /* [in] */ const OLECHAR *szInstance, /* [in] */ const REGFILTER2 *prf2); HRESULT ( STDMETHODCALLTYPE *EnumMatchingFilters )( IFilterMapper3 * This, /* [out] */ IEnumMoniker **ppEnum, /* [in] */ DWORD dwFlags, /* [in] */ BOOL bExactMatch, /* [in] */ DWORD dwMerit, /* [in] */ BOOL bInputNeeded, /* [in] */ DWORD cInputTypes, /* [size_is] */ const GUID *pInputTypes, /* [in] */ const REGPINMEDIUM *pMedIn, /* [in] */ const CLSID *pPinCategoryIn, /* [in] */ BOOL bRender, /* [in] */ BOOL bOutputNeeded, /* [in] */ DWORD cOutputTypes, /* [size_is] */ const GUID *pOutputTypes, /* [in] */ const REGPINMEDIUM *pMedOut, /* [in] */ const CLSID *pPinCategoryOut); HRESULT ( STDMETHODCALLTYPE *GetICreateDevEnum )( IFilterMapper3 * This, /* [out] */ ICreateDevEnum **ppEnum); END_INTERFACE } IFilterMapper3Vtbl; interface IFilterMapper3 { CONST_VTBL struct IFilterMapper3Vtbl *lpVtbl; }; #ifdef COBJMACROS #define IFilterMapper3_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IFilterMapper3_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IFilterMapper3_Release(This) \ (This)->lpVtbl -> Release(This) #define IFilterMapper3_CreateCategory(This,clsidCategory,dwCategoryMerit,Description) \ (This)->lpVtbl -> CreateCategory(This,clsidCategory,dwCategoryMerit,Description) #define IFilterMapper3_UnregisterFilter(This,pclsidCategory,szInstance,Filter) \ (This)->lpVtbl -> UnregisterFilter(This,pclsidCategory,szInstance,Filter) #define IFilterMapper3_RegisterFilter(This,clsidFilter,Name,ppMoniker,pclsidCategory,szInstance,prf2) \ (This)->lpVtbl -> RegisterFilter(This,clsidFilter,Name,ppMoniker,pclsidCategory,szInstance,prf2) #define IFilterMapper3_EnumMatchingFilters(This,ppEnum,dwFlags,bExactMatch,dwMerit,bInputNeeded,cInputTypes,pInputTypes,pMedIn,pPinCategoryIn,bRender,bOutputNeeded,cOutputTypes,pOutputTypes,pMedOut,pPinCategoryOut) \ (This)->lpVtbl -> EnumMatchingFilters(This,ppEnum,dwFlags,bExactMatch,dwMerit,bInputNeeded,cInputTypes,pInputTypes,pMedIn,pPinCategoryIn,bRender,bOutputNeeded,cOutputTypes,pOutputTypes,pMedOut,pPinCategoryOut) #define IFilterMapper3_GetICreateDevEnum(This,ppEnum) \ (This)->lpVtbl -> GetICreateDevEnum(This,ppEnum) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IFilterMapper3_GetICreateDevEnum_Proxy( IFilterMapper3 * This, /* [out] */ ICreateDevEnum **ppEnum); void __RPC_STUB IFilterMapper3_GetICreateDevEnum_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IFilterMapper3_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0136 */ /* [local] */ typedef enum tagQualityMessageType { Famine = 0, Flood = Famine + 1 } QualityMessageType; typedef struct tagQuality { QualityMessageType Type; long Proportion; REFERENCE_TIME Late; REFERENCE_TIME TimeStamp; } Quality; typedef IQualityControl *PQUALITYCONTROL; extern RPC_IF_HANDLE __MIDL_itf_strmif_0136_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0136_v0_0_s_ifspec; #ifndef __IQualityControl_INTERFACE_DEFINED__ #define __IQualityControl_INTERFACE_DEFINED__ /* interface IQualityControl */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IQualityControl; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("56a868a5-0ad4-11ce-b03a-0020af0ba770") IQualityControl : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE Notify( /* [in] */ IBaseFilter *pSelf, /* [in] */ Quality q) = 0; virtual HRESULT STDMETHODCALLTYPE SetSink( /* [in] */ IQualityControl *piqc) = 0; }; #else /* C style interface */ typedef struct IQualityControlVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IQualityControl * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IQualityControl * This); ULONG ( STDMETHODCALLTYPE *Release )( IQualityControl * This); HRESULT ( STDMETHODCALLTYPE *Notify )( IQualityControl * This, /* [in] */ IBaseFilter *pSelf, /* [in] */ Quality q); HRESULT ( STDMETHODCALLTYPE *SetSink )( IQualityControl * This, /* [in] */ IQualityControl *piqc); END_INTERFACE } IQualityControlVtbl; interface IQualityControl { CONST_VTBL struct IQualityControlVtbl *lpVtbl; }; #ifdef COBJMACROS #define IQualityControl_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IQualityControl_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IQualityControl_Release(This) \ (This)->lpVtbl -> Release(This) #define IQualityControl_Notify(This,pSelf,q) \ (This)->lpVtbl -> Notify(This,pSelf,q) #define IQualityControl_SetSink(This,piqc) \ (This)->lpVtbl -> SetSink(This,piqc) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IQualityControl_Notify_Proxy( IQualityControl * This, /* [in] */ IBaseFilter *pSelf, /* [in] */ Quality q); void __RPC_STUB IQualityControl_Notify_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IQualityControl_SetSink_Proxy( IQualityControl * This, /* [in] */ IQualityControl *piqc); void __RPC_STUB IQualityControl_SetSink_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IQualityControl_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0137 */ /* [local] */ enum __MIDL___MIDL_itf_strmif_0137_0001 { CK_NOCOLORKEY = 0, CK_INDEX = 0x1, CK_RGB = 0x2 } ; typedef struct tagCOLORKEY { DWORD KeyType; DWORD PaletteIndex; COLORREF LowColorValue; COLORREF HighColorValue; } COLORKEY; enum __MIDL___MIDL_itf_strmif_0137_0002 { ADVISE_NONE = 0, ADVISE_CLIPPING = 0x1, ADVISE_PALETTE = 0x2, ADVISE_COLORKEY = 0x4, ADVISE_POSITION = 0x8, ADVISE_DISPLAY_CHANGE = 0x10 } ; #define ADVISE_ALL ( ADVISE_CLIPPING | ADVISE_PALETTE | ADVISE_COLORKEY | ADVISE_POSITION ) #define ADVISE_ALL2 ( ADVISE_ALL | ADVISE_DISPLAY_CHANGE ) #ifndef _WINGDI_ typedef struct _RGNDATAHEADER { DWORD dwSize; DWORD iType; DWORD nCount; DWORD nRgnSize; RECT rcBound; } RGNDATAHEADER; typedef struct _RGNDATA { RGNDATAHEADER rdh; char Buffer[ 1 ]; } RGNDATA; #endif extern RPC_IF_HANDLE __MIDL_itf_strmif_0137_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0137_v0_0_s_ifspec; #ifndef __IOverlayNotify_INTERFACE_DEFINED__ #define __IOverlayNotify_INTERFACE_DEFINED__ /* interface IOverlayNotify */ /* [unique][uuid][local][object] */ EXTERN_C const IID IID_IOverlayNotify; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("56a868a0-0ad4-11ce-b03a-0020af0ba770") IOverlayNotify : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE OnPaletteChange( /* [in] */ DWORD dwColors, /* [in] */ const PALETTEENTRY *pPalette) = 0; virtual HRESULT STDMETHODCALLTYPE OnClipChange( /* [in] */ const RECT *pSourceRect, /* [in] */ const RECT *pDestinationRect, /* [in] */ const RGNDATA *pRgnData) = 0; virtual HRESULT STDMETHODCALLTYPE OnColorKeyChange( /* [in] */ const COLORKEY *pColorKey) = 0; virtual HRESULT STDMETHODCALLTYPE OnPositionChange( /* [in] */ const RECT *pSourceRect, /* [in] */ const RECT *pDestinationRect) = 0; }; #else /* C style interface */ typedef struct IOverlayNotifyVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IOverlayNotify * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IOverlayNotify * This); ULONG ( STDMETHODCALLTYPE *Release )( IOverlayNotify * This); HRESULT ( STDMETHODCALLTYPE *OnPaletteChange )( IOverlayNotify * This, /* [in] */ DWORD dwColors, /* [in] */ const PALETTEENTRY *pPalette); HRESULT ( STDMETHODCALLTYPE *OnClipChange )( IOverlayNotify * This, /* [in] */ const RECT *pSourceRect, /* [in] */ const RECT *pDestinationRect, /* [in] */ const RGNDATA *pRgnData); HRESULT ( STDMETHODCALLTYPE *OnColorKeyChange )( IOverlayNotify * This, /* [in] */ const COLORKEY *pColorKey); HRESULT ( STDMETHODCALLTYPE *OnPositionChange )( IOverlayNotify * This, /* [in] */ const RECT *pSourceRect, /* [in] */ const RECT *pDestinationRect); END_INTERFACE } IOverlayNotifyVtbl; interface IOverlayNotify { CONST_VTBL struct IOverlayNotifyVtbl *lpVtbl; }; #ifdef COBJMACROS #define IOverlayNotify_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IOverlayNotify_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IOverlayNotify_Release(This) \ (This)->lpVtbl -> Release(This) #define IOverlayNotify_OnPaletteChange(This,dwColors,pPalette) \ (This)->lpVtbl -> OnPaletteChange(This,dwColors,pPalette) #define IOverlayNotify_OnClipChange(This,pSourceRect,pDestinationRect,pRgnData) \ (This)->lpVtbl -> OnClipChange(This,pSourceRect,pDestinationRect,pRgnData) #define IOverlayNotify_OnColorKeyChange(This,pColorKey) \ (This)->lpVtbl -> OnColorKeyChange(This,pColorKey) #define IOverlayNotify_OnPositionChange(This,pSourceRect,pDestinationRect) \ (This)->lpVtbl -> OnPositionChange(This,pSourceRect,pDestinationRect) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IOverlayNotify_OnPaletteChange_Proxy( IOverlayNotify * This, /* [in] */ DWORD dwColors, /* [in] */ const PALETTEENTRY *pPalette); void __RPC_STUB IOverlayNotify_OnPaletteChange_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IOverlayNotify_OnClipChange_Proxy( IOverlayNotify * This, /* [in] */ const RECT *pSourceRect, /* [in] */ const RECT *pDestinationRect, /* [in] */ const RGNDATA *pRgnData); void __RPC_STUB IOverlayNotify_OnClipChange_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IOverlayNotify_OnColorKeyChange_Proxy( IOverlayNotify * This, /* [in] */ const COLORKEY *pColorKey); void __RPC_STUB IOverlayNotify_OnColorKeyChange_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IOverlayNotify_OnPositionChange_Proxy( IOverlayNotify * This, /* [in] */ const RECT *pSourceRect, /* [in] */ const RECT *pDestinationRect); void __RPC_STUB IOverlayNotify_OnPositionChange_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IOverlayNotify_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0138 */ /* [local] */ typedef IOverlayNotify *POVERLAYNOTIFY; #if !defined(HMONITOR_DECLARED) && !defined(HMONITOR) && (WINVER < 0x0500) #define HMONITOR_DECLARED #if 0 typedef HANDLE HMONITOR; #endif DECLARE_HANDLE(HMONITOR); #endif extern RPC_IF_HANDLE __MIDL_itf_strmif_0138_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0138_v0_0_s_ifspec; #ifndef __IOverlayNotify2_INTERFACE_DEFINED__ #define __IOverlayNotify2_INTERFACE_DEFINED__ /* interface IOverlayNotify2 */ /* [unique][uuid][local][object] */ EXTERN_C const IID IID_IOverlayNotify2; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("680EFA10-D535-11D1-87C8-00A0C9223196") IOverlayNotify2 : public IOverlayNotify { public: virtual HRESULT STDMETHODCALLTYPE OnDisplayChange( HMONITOR hMonitor) = 0; }; #else /* C style interface */ typedef struct IOverlayNotify2Vtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IOverlayNotify2 * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IOverlayNotify2 * This); ULONG ( STDMETHODCALLTYPE *Release )( IOverlayNotify2 * This); HRESULT ( STDMETHODCALLTYPE *OnPaletteChange )( IOverlayNotify2 * This, /* [in] */ DWORD dwColors, /* [in] */ const PALETTEENTRY *pPalette); HRESULT ( STDMETHODCALLTYPE *OnClipChange )( IOverlayNotify2 * This, /* [in] */ const RECT *pSourceRect, /* [in] */ const RECT *pDestinationRect, /* [in] */ const RGNDATA *pRgnData); HRESULT ( STDMETHODCALLTYPE *OnColorKeyChange )( IOverlayNotify2 * This, /* [in] */ const COLORKEY *pColorKey); HRESULT ( STDMETHODCALLTYPE *OnPositionChange )( IOverlayNotify2 * This, /* [in] */ const RECT *pSourceRect, /* [in] */ const RECT *pDestinationRect); HRESULT ( STDMETHODCALLTYPE *OnDisplayChange )( IOverlayNotify2 * This, HMONITOR hMonitor); END_INTERFACE } IOverlayNotify2Vtbl; interface IOverlayNotify2 { CONST_VTBL struct IOverlayNotify2Vtbl *lpVtbl; }; #ifdef COBJMACROS #define IOverlayNotify2_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IOverlayNotify2_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IOverlayNotify2_Release(This) \ (This)->lpVtbl -> Release(This) #define IOverlayNotify2_OnPaletteChange(This,dwColors,pPalette) \ (This)->lpVtbl -> OnPaletteChange(This,dwColors,pPalette) #define IOverlayNotify2_OnClipChange(This,pSourceRect,pDestinationRect,pRgnData) \ (This)->lpVtbl -> OnClipChange(This,pSourceRect,pDestinationRect,pRgnData) #define IOverlayNotify2_OnColorKeyChange(This,pColorKey) \ (This)->lpVtbl -> OnColorKeyChange(This,pColorKey) #define IOverlayNotify2_OnPositionChange(This,pSourceRect,pDestinationRect) \ (This)->lpVtbl -> OnPositionChange(This,pSourceRect,pDestinationRect) #define IOverlayNotify2_OnDisplayChange(This,hMonitor) \ (This)->lpVtbl -> OnDisplayChange(This,hMonitor) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IOverlayNotify2_OnDisplayChange_Proxy( IOverlayNotify2 * This, HMONITOR hMonitor); void __RPC_STUB IOverlayNotify2_OnDisplayChange_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IOverlayNotify2_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0139 */ /* [local] */ typedef IOverlayNotify2 *POVERLAYNOTIFY2; extern RPC_IF_HANDLE __MIDL_itf_strmif_0139_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0139_v0_0_s_ifspec; #ifndef __IOverlay_INTERFACE_DEFINED__ #define __IOverlay_INTERFACE_DEFINED__ /* interface IOverlay */ /* [unique][uuid][local][object] */ EXTERN_C const IID IID_IOverlay; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("56a868a1-0ad4-11ce-b03a-0020af0ba770") IOverlay : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE GetPalette( /* [out] */ DWORD *pdwColors, /* [out] */ PALETTEENTRY **ppPalette) = 0; virtual HRESULT STDMETHODCALLTYPE SetPalette( /* [in] */ DWORD dwColors, /* [in] */ PALETTEENTRY *pPalette) = 0; virtual HRESULT STDMETHODCALLTYPE GetDefaultColorKey( /* [out] */ COLORKEY *pColorKey) = 0; virtual HRESULT STDMETHODCALLTYPE GetColorKey( /* [out] */ COLORKEY *pColorKey) = 0; virtual HRESULT STDMETHODCALLTYPE SetColorKey( /* [out][in] */ COLORKEY *pColorKey) = 0; virtual HRESULT STDMETHODCALLTYPE GetWindowHandle( /* [out] */ HWND *pHwnd) = 0; virtual HRESULT STDMETHODCALLTYPE GetClipList( /* [out] */ RECT *pSourceRect, /* [out] */ RECT *pDestinationRect, /* [out] */ RGNDATA **ppRgnData) = 0; virtual HRESULT STDMETHODCALLTYPE GetVideoPosition( /* [out] */ RECT *pSourceRect, /* [out] */ RECT *pDestinationRect) = 0; virtual HRESULT STDMETHODCALLTYPE Advise( /* [in] */ IOverlayNotify *pOverlayNotify, /* [in] */ DWORD dwInterests) = 0; virtual HRESULT STDMETHODCALLTYPE Unadvise( void) = 0; }; #else /* C style interface */ typedef struct IOverlayVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IOverlay * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IOverlay * This); ULONG ( STDMETHODCALLTYPE *Release )( IOverlay * This); HRESULT ( STDMETHODCALLTYPE *GetPalette )( IOverlay * This, /* [out] */ DWORD *pdwColors, /* [out] */ PALETTEENTRY **ppPalette); HRESULT ( STDMETHODCALLTYPE *SetPalette )( IOverlay * This, /* [in] */ DWORD dwColors, /* [in] */ PALETTEENTRY *pPalette); HRESULT ( STDMETHODCALLTYPE *GetDefaultColorKey )( IOverlay * This, /* [out] */ COLORKEY *pColorKey); HRESULT ( STDMETHODCALLTYPE *GetColorKey )( IOverlay * This, /* [out] */ COLORKEY *pColorKey); HRESULT ( STDMETHODCALLTYPE *SetColorKey )( IOverlay * This, /* [out][in] */ COLORKEY *pColorKey); HRESULT ( STDMETHODCALLTYPE *GetWindowHandle )( IOverlay * This, /* [out] */ HWND *pHwnd); HRESULT ( STDMETHODCALLTYPE *GetClipList )( IOverlay * This, /* [out] */ RECT *pSourceRect, /* [out] */ RECT *pDestinationRect, /* [out] */ RGNDATA **ppRgnData); HRESULT ( STDMETHODCALLTYPE *GetVideoPosition )( IOverlay * This, /* [out] */ RECT *pSourceRect, /* [out] */ RECT *pDestinationRect); HRESULT ( STDMETHODCALLTYPE *Advise )( IOverlay * This, /* [in] */ IOverlayNotify *pOverlayNotify, /* [in] */ DWORD dwInterests); HRESULT ( STDMETHODCALLTYPE *Unadvise )( IOverlay * This); END_INTERFACE } IOverlayVtbl; interface IOverlay { CONST_VTBL struct IOverlayVtbl *lpVtbl; }; #ifdef COBJMACROS #define IOverlay_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IOverlay_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IOverlay_Release(This) \ (This)->lpVtbl -> Release(This) #define IOverlay_GetPalette(This,pdwColors,ppPalette) \ (This)->lpVtbl -> GetPalette(This,pdwColors,ppPalette) #define IOverlay_SetPalette(This,dwColors,pPalette) \ (This)->lpVtbl -> SetPalette(This,dwColors,pPalette) #define IOverlay_GetDefaultColorKey(This,pColorKey) \ (This)->lpVtbl -> GetDefaultColorKey(This,pColorKey) #define IOverlay_GetColorKey(This,pColorKey) \ (This)->lpVtbl -> GetColorKey(This,pColorKey) #define IOverlay_SetColorKey(This,pColorKey) \ (This)->lpVtbl -> SetColorKey(This,pColorKey) #define IOverlay_GetWindowHandle(This,pHwnd) \ (This)->lpVtbl -> GetWindowHandle(This,pHwnd) #define IOverlay_GetClipList(This,pSourceRect,pDestinationRect,ppRgnData) \ (This)->lpVtbl -> GetClipList(This,pSourceRect,pDestinationRect,ppRgnData) #define IOverlay_GetVideoPosition(This,pSourceRect,pDestinationRect) \ (This)->lpVtbl -> GetVideoPosition(This,pSourceRect,pDestinationRect) #define IOverlay_Advise(This,pOverlayNotify,dwInterests) \ (This)->lpVtbl -> Advise(This,pOverlayNotify,dwInterests) #define IOverlay_Unadvise(This) \ (This)->lpVtbl -> Unadvise(This) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IOverlay_GetPalette_Proxy( IOverlay * This, /* [out] */ DWORD *pdwColors, /* [out] */ PALETTEENTRY **ppPalette); void __RPC_STUB IOverlay_GetPalette_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IOverlay_SetPalette_Proxy( IOverlay * This, /* [in] */ DWORD dwColors, /* [in] */ PALETTEENTRY *pPalette); void __RPC_STUB IOverlay_SetPalette_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IOverlay_GetDefaultColorKey_Proxy( IOverlay * This, /* [out] */ COLORKEY *pColorKey); void __RPC_STUB IOverlay_GetDefaultColorKey_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IOverlay_GetColorKey_Proxy( IOverlay * This, /* [out] */ COLORKEY *pColorKey); void __RPC_STUB IOverlay_GetColorKey_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IOverlay_SetColorKey_Proxy( IOverlay * This, /* [out][in] */ COLORKEY *pColorKey); void __RPC_STUB IOverlay_SetColorKey_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IOverlay_GetWindowHandle_Proxy( IOverlay * This, /* [out] */ HWND *pHwnd); void __RPC_STUB IOverlay_GetWindowHandle_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IOverlay_GetClipList_Proxy( IOverlay * This, /* [out] */ RECT *pSourceRect, /* [out] */ RECT *pDestinationRect, /* [out] */ RGNDATA **ppRgnData); void __RPC_STUB IOverlay_GetClipList_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IOverlay_GetVideoPosition_Proxy( IOverlay * This, /* [out] */ RECT *pSourceRect, /* [out] */ RECT *pDestinationRect); void __RPC_STUB IOverlay_GetVideoPosition_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IOverlay_Advise_Proxy( IOverlay * This, /* [in] */ IOverlayNotify *pOverlayNotify, /* [in] */ DWORD dwInterests); void __RPC_STUB IOverlay_Advise_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IOverlay_Unadvise_Proxy( IOverlay * This); void __RPC_STUB IOverlay_Unadvise_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IOverlay_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0140 */ /* [local] */ typedef IOverlay *POVERLAY; extern RPC_IF_HANDLE __MIDL_itf_strmif_0140_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0140_v0_0_s_ifspec; #ifndef __IMediaEventSink_INTERFACE_DEFINED__ #define __IMediaEventSink_INTERFACE_DEFINED__ /* interface IMediaEventSink */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IMediaEventSink; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("56a868a2-0ad4-11ce-b03a-0020af0ba770") IMediaEventSink : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE Notify( /* [in] */ long EventCode, /* [in] */ LONG_PTR EventParam1, /* [in] */ LONG_PTR EventParam2) = 0; }; #else /* C style interface */ typedef struct IMediaEventSinkVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IMediaEventSink * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IMediaEventSink * This); ULONG ( STDMETHODCALLTYPE *Release )( IMediaEventSink * This); HRESULT ( STDMETHODCALLTYPE *Notify )( IMediaEventSink * This, /* [in] */ long EventCode, /* [in] */ LONG_PTR EventParam1, /* [in] */ LONG_PTR EventParam2); END_INTERFACE } IMediaEventSinkVtbl; interface IMediaEventSink { CONST_VTBL struct IMediaEventSinkVtbl *lpVtbl; }; #ifdef COBJMACROS #define IMediaEventSink_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IMediaEventSink_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IMediaEventSink_Release(This) \ (This)->lpVtbl -> Release(This) #define IMediaEventSink_Notify(This,EventCode,EventParam1,EventParam2) \ (This)->lpVtbl -> Notify(This,EventCode,EventParam1,EventParam2) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IMediaEventSink_Notify_Proxy( IMediaEventSink * This, /* [in] */ long EventCode, /* [in] */ LONG_PTR EventParam1, /* [in] */ LONG_PTR EventParam2); void __RPC_STUB IMediaEventSink_Notify_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IMediaEventSink_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0141 */ /* [local] */ typedef IMediaEventSink *PMEDIAEVENTSINK; extern RPC_IF_HANDLE __MIDL_itf_strmif_0141_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0141_v0_0_s_ifspec; #ifndef __IFileSourceFilter_INTERFACE_DEFINED__ #define __IFileSourceFilter_INTERFACE_DEFINED__ /* interface IFileSourceFilter */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IFileSourceFilter; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("56a868a6-0ad4-11ce-b03a-0020af0ba770") IFileSourceFilter : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE Load( /* [in] */ LPCOLESTR pszFileName, /* [unique][in] */ const AM_MEDIA_TYPE *pmt) = 0; virtual HRESULT STDMETHODCALLTYPE GetCurFile( /* [out] */ LPOLESTR *ppszFileName, /* [out] */ AM_MEDIA_TYPE *pmt) = 0; }; #else /* C style interface */ typedef struct IFileSourceFilterVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IFileSourceFilter * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IFileSourceFilter * This); ULONG ( STDMETHODCALLTYPE *Release )( IFileSourceFilter * This); HRESULT ( STDMETHODCALLTYPE *Load )( IFileSourceFilter * This, /* [in] */ LPCOLESTR pszFileName, /* [unique][in] */ const AM_MEDIA_TYPE *pmt); HRESULT ( STDMETHODCALLTYPE *GetCurFile )( IFileSourceFilter * This, /* [out] */ LPOLESTR *ppszFileName, /* [out] */ AM_MEDIA_TYPE *pmt); END_INTERFACE } IFileSourceFilterVtbl; interface IFileSourceFilter { CONST_VTBL struct IFileSourceFilterVtbl *lpVtbl; }; #ifdef COBJMACROS #define IFileSourceFilter_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IFileSourceFilter_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IFileSourceFilter_Release(This) \ (This)->lpVtbl -> Release(This) #define IFileSourceFilter_Load(This,pszFileName,pmt) \ (This)->lpVtbl -> Load(This,pszFileName,pmt) #define IFileSourceFilter_GetCurFile(This,ppszFileName,pmt) \ (This)->lpVtbl -> GetCurFile(This,ppszFileName,pmt) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IFileSourceFilter_Load_Proxy( IFileSourceFilter * This, /* [in] */ LPCOLESTR pszFileName, /* [unique][in] */ const AM_MEDIA_TYPE *pmt); void __RPC_STUB IFileSourceFilter_Load_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IFileSourceFilter_GetCurFile_Proxy( IFileSourceFilter * This, /* [out] */ LPOLESTR *ppszFileName, /* [out] */ AM_MEDIA_TYPE *pmt); void __RPC_STUB IFileSourceFilter_GetCurFile_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IFileSourceFilter_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0142 */ /* [local] */ typedef IFileSourceFilter *PFILTERFILESOURCE; extern RPC_IF_HANDLE __MIDL_itf_strmif_0142_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0142_v0_0_s_ifspec; #ifndef __IFileSinkFilter_INTERFACE_DEFINED__ #define __IFileSinkFilter_INTERFACE_DEFINED__ /* interface IFileSinkFilter */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IFileSinkFilter; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("a2104830-7c70-11cf-8bce-00aa00a3f1a6") IFileSinkFilter : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE SetFileName( /* [in] */ LPCOLESTR pszFileName, /* [unique][in] */ const AM_MEDIA_TYPE *pmt) = 0; virtual HRESULT STDMETHODCALLTYPE GetCurFile( /* [out] */ LPOLESTR *ppszFileName, /* [out] */ AM_MEDIA_TYPE *pmt) = 0; }; #else /* C style interface */ typedef struct IFileSinkFilterVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IFileSinkFilter * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IFileSinkFilter * This); ULONG ( STDMETHODCALLTYPE *Release )( IFileSinkFilter * This); HRESULT ( STDMETHODCALLTYPE *SetFileName )( IFileSinkFilter * This, /* [in] */ LPCOLESTR pszFileName, /* [unique][in] */ const AM_MEDIA_TYPE *pmt); HRESULT ( STDMETHODCALLTYPE *GetCurFile )( IFileSinkFilter * This, /* [out] */ LPOLESTR *ppszFileName, /* [out] */ AM_MEDIA_TYPE *pmt); END_INTERFACE } IFileSinkFilterVtbl; interface IFileSinkFilter { CONST_VTBL struct IFileSinkFilterVtbl *lpVtbl; }; #ifdef COBJMACROS #define IFileSinkFilter_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IFileSinkFilter_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IFileSinkFilter_Release(This) \ (This)->lpVtbl -> Release(This) #define IFileSinkFilter_SetFileName(This,pszFileName,pmt) \ (This)->lpVtbl -> SetFileName(This,pszFileName,pmt) #define IFileSinkFilter_GetCurFile(This,ppszFileName,pmt) \ (This)->lpVtbl -> GetCurFile(This,ppszFileName,pmt) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IFileSinkFilter_SetFileName_Proxy( IFileSinkFilter * This, /* [in] */ LPCOLESTR pszFileName, /* [unique][in] */ const AM_MEDIA_TYPE *pmt); void __RPC_STUB IFileSinkFilter_SetFileName_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IFileSinkFilter_GetCurFile_Proxy( IFileSinkFilter * This, /* [out] */ LPOLESTR *ppszFileName, /* [out] */ AM_MEDIA_TYPE *pmt); void __RPC_STUB IFileSinkFilter_GetCurFile_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IFileSinkFilter_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0143 */ /* [local] */ typedef IFileSinkFilter *PFILTERFILESINK; extern RPC_IF_HANDLE __MIDL_itf_strmif_0143_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0143_v0_0_s_ifspec; #ifndef __IFileSinkFilter2_INTERFACE_DEFINED__ #define __IFileSinkFilter2_INTERFACE_DEFINED__ /* interface IFileSinkFilter2 */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IFileSinkFilter2; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("00855B90-CE1B-11d0-BD4F-00A0C911CE86") IFileSinkFilter2 : public IFileSinkFilter { public: virtual HRESULT STDMETHODCALLTYPE SetMode( /* [in] */ DWORD dwFlags) = 0; virtual HRESULT STDMETHODCALLTYPE GetMode( /* [out] */ DWORD *pdwFlags) = 0; }; #else /* C style interface */ typedef struct IFileSinkFilter2Vtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IFileSinkFilter2 * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IFileSinkFilter2 * This); ULONG ( STDMETHODCALLTYPE *Release )( IFileSinkFilter2 * This); HRESULT ( STDMETHODCALLTYPE *SetFileName )( IFileSinkFilter2 * This, /* [in] */ LPCOLESTR pszFileName, /* [unique][in] */ const AM_MEDIA_TYPE *pmt); HRESULT ( STDMETHODCALLTYPE *GetCurFile )( IFileSinkFilter2 * This, /* [out] */ LPOLESTR *ppszFileName, /* [out] */ AM_MEDIA_TYPE *pmt); HRESULT ( STDMETHODCALLTYPE *SetMode )( IFileSinkFilter2 * This, /* [in] */ DWORD dwFlags); HRESULT ( STDMETHODCALLTYPE *GetMode )( IFileSinkFilter2 * This, /* [out] */ DWORD *pdwFlags); END_INTERFACE } IFileSinkFilter2Vtbl; interface IFileSinkFilter2 { CONST_VTBL struct IFileSinkFilter2Vtbl *lpVtbl; }; #ifdef COBJMACROS #define IFileSinkFilter2_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IFileSinkFilter2_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IFileSinkFilter2_Release(This) \ (This)->lpVtbl -> Release(This) #define IFileSinkFilter2_SetFileName(This,pszFileName,pmt) \ (This)->lpVtbl -> SetFileName(This,pszFileName,pmt) #define IFileSinkFilter2_GetCurFile(This,ppszFileName,pmt) \ (This)->lpVtbl -> GetCurFile(This,ppszFileName,pmt) #define IFileSinkFilter2_SetMode(This,dwFlags) \ (This)->lpVtbl -> SetMode(This,dwFlags) #define IFileSinkFilter2_GetMode(This,pdwFlags) \ (This)->lpVtbl -> GetMode(This,pdwFlags) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IFileSinkFilter2_SetMode_Proxy( IFileSinkFilter2 * This, /* [in] */ DWORD dwFlags); void __RPC_STUB IFileSinkFilter2_SetMode_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IFileSinkFilter2_GetMode_Proxy( IFileSinkFilter2 * This, /* [out] */ DWORD *pdwFlags); void __RPC_STUB IFileSinkFilter2_GetMode_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IFileSinkFilter2_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0144 */ /* [local] */ typedef IFileSinkFilter2 *PFILESINKFILTER2; typedef /* [public] */ enum __MIDL___MIDL_itf_strmif_0144_0001 { AM_FILE_OVERWRITE = 0x1 } AM_FILESINK_FLAGS; extern RPC_IF_HANDLE __MIDL_itf_strmif_0144_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0144_v0_0_s_ifspec; #ifndef __IGraphBuilder_INTERFACE_DEFINED__ #define __IGraphBuilder_INTERFACE_DEFINED__ /* interface IGraphBuilder */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IGraphBuilder; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("56a868a9-0ad4-11ce-b03a-0020af0ba770") IGraphBuilder : public IFilterGraph { public: virtual HRESULT STDMETHODCALLTYPE Connect( /* [in] */ IPin *ppinOut, /* [in] */ IPin *ppinIn) = 0; virtual HRESULT STDMETHODCALLTYPE Render( /* [in] */ IPin *ppinOut) = 0; virtual HRESULT STDMETHODCALLTYPE RenderFile( /* [in] */ LPCWSTR lpcwstrFile, /* [unique][in] */ LPCWSTR lpcwstrPlayList) = 0; virtual HRESULT STDMETHODCALLTYPE AddSourceFilter( /* [in] */ LPCWSTR lpcwstrFileName, /* [unique][in] */ LPCWSTR lpcwstrFilterName, /* [out] */ IBaseFilter **ppFilter) = 0; virtual HRESULT STDMETHODCALLTYPE SetLogFile( /* [in] */ DWORD_PTR hFile) = 0; virtual HRESULT STDMETHODCALLTYPE Abort( void) = 0; virtual HRESULT STDMETHODCALLTYPE ShouldOperationContinue( void) = 0; }; #else /* C style interface */ typedef struct IGraphBuilderVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IGraphBuilder * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IGraphBuilder * This); ULONG ( STDMETHODCALLTYPE *Release )( IGraphBuilder * This); HRESULT ( STDMETHODCALLTYPE *AddFilter )( IGraphBuilder * This, /* [in] */ IBaseFilter *pFilter, /* [string][in] */ LPCWSTR pName); HRESULT ( STDMETHODCALLTYPE *RemoveFilter )( IGraphBuilder * This, /* [in] */ IBaseFilter *pFilter); HRESULT ( STDMETHODCALLTYPE *EnumFilters )( IGraphBuilder * This, /* [out] */ IEnumFilters **ppEnum); HRESULT ( STDMETHODCALLTYPE *FindFilterByName )( IGraphBuilder * This, /* [string][in] */ LPCWSTR pName, /* [out] */ IBaseFilter **ppFilter); HRESULT ( STDMETHODCALLTYPE *ConnectDirect )( IGraphBuilder * This, /* [in] */ IPin *ppinOut, /* [in] */ IPin *ppinIn, /* [unique][in] */ const AM_MEDIA_TYPE *pmt); HRESULT ( STDMETHODCALLTYPE *Reconnect )( IGraphBuilder * This, /* [in] */ IPin *ppin); HRESULT ( STDMETHODCALLTYPE *Disconnect )( IGraphBuilder * This, /* [in] */ IPin *ppin); HRESULT ( STDMETHODCALLTYPE *SetDefaultSyncSource )( IGraphBuilder * This); HRESULT ( STDMETHODCALLTYPE *Connect )( IGraphBuilder * This, /* [in] */ IPin *ppinOut, /* [in] */ IPin *ppinIn); HRESULT ( STDMETHODCALLTYPE *Render )( IGraphBuilder * This, /* [in] */ IPin *ppinOut); HRESULT ( STDMETHODCALLTYPE *RenderFile )( IGraphBuilder * This, /* [in] */ LPCWSTR lpcwstrFile, /* [unique][in] */ LPCWSTR lpcwstrPlayList); HRESULT ( STDMETHODCALLTYPE *AddSourceFilter )( IGraphBuilder * This, /* [in] */ LPCWSTR lpcwstrFileName, /* [unique][in] */ LPCWSTR lpcwstrFilterName, /* [out] */ IBaseFilter **ppFilter); HRESULT ( STDMETHODCALLTYPE *SetLogFile )( IGraphBuilder * This, /* [in] */ DWORD_PTR hFile); HRESULT ( STDMETHODCALLTYPE *Abort )( IGraphBuilder * This); HRESULT ( STDMETHODCALLTYPE *ShouldOperationContinue )( IGraphBuilder * This); END_INTERFACE } IGraphBuilderVtbl; interface IGraphBuilder { CONST_VTBL struct IGraphBuilderVtbl *lpVtbl; }; #ifdef COBJMACROS #define IGraphBuilder_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IGraphBuilder_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IGraphBuilder_Release(This) \ (This)->lpVtbl -> Release(This) #define IGraphBuilder_AddFilter(This,pFilter,pName) \ (This)->lpVtbl -> AddFilter(This,pFilter,pName) #define IGraphBuilder_RemoveFilter(This,pFilter) \ (This)->lpVtbl -> RemoveFilter(This,pFilter) #define IGraphBuilder_EnumFilters(This,ppEnum) \ (This)->lpVtbl -> EnumFilters(This,ppEnum) #define IGraphBuilder_FindFilterByName(This,pName,ppFilter) \ (This)->lpVtbl -> FindFilterByName(This,pName,ppFilter) #define IGraphBuilder_ConnectDirect(This,ppinOut,ppinIn,pmt) \ (This)->lpVtbl -> ConnectDirect(This,ppinOut,ppinIn,pmt) #define IGraphBuilder_Reconnect(This,ppin) \ (This)->lpVtbl -> Reconnect(This,ppin) #define IGraphBuilder_Disconnect(This,ppin) \ (This)->lpVtbl -> Disconnect(This,ppin) #define IGraphBuilder_SetDefaultSyncSource(This) \ (This)->lpVtbl -> SetDefaultSyncSource(This) #define IGraphBuilder_Connect(This,ppinOut,ppinIn) \ (This)->lpVtbl -> Connect(This,ppinOut,ppinIn) #define IGraphBuilder_Render(This,ppinOut) \ (This)->lpVtbl -> Render(This,ppinOut) #define IGraphBuilder_RenderFile(This,lpcwstrFile,lpcwstrPlayList) \ (This)->lpVtbl -> RenderFile(This,lpcwstrFile,lpcwstrPlayList) #define IGraphBuilder_AddSourceFilter(This,lpcwstrFileName,lpcwstrFilterName,ppFilter) \ (This)->lpVtbl -> AddSourceFilter(This,lpcwstrFileName,lpcwstrFilterName,ppFilter) #define IGraphBuilder_SetLogFile(This,hFile) \ (This)->lpVtbl -> SetLogFile(This,hFile) #define IGraphBuilder_Abort(This) \ (This)->lpVtbl -> Abort(This) #define IGraphBuilder_ShouldOperationContinue(This) \ (This)->lpVtbl -> ShouldOperationContinue(This) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IGraphBuilder_Connect_Proxy( IGraphBuilder * This, /* [in] */ IPin *ppinOut, /* [in] */ IPin *ppinIn); void __RPC_STUB IGraphBuilder_Connect_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IGraphBuilder_Render_Proxy( IGraphBuilder * This, /* [in] */ IPin *ppinOut); void __RPC_STUB IGraphBuilder_Render_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IGraphBuilder_RenderFile_Proxy( IGraphBuilder * This, /* [in] */ LPCWSTR lpcwstrFile, /* [unique][in] */ LPCWSTR lpcwstrPlayList); void __RPC_STUB IGraphBuilder_RenderFile_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IGraphBuilder_AddSourceFilter_Proxy( IGraphBuilder * This, /* [in] */ LPCWSTR lpcwstrFileName, /* [unique][in] */ LPCWSTR lpcwstrFilterName, /* [out] */ IBaseFilter **ppFilter); void __RPC_STUB IGraphBuilder_AddSourceFilter_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IGraphBuilder_SetLogFile_Proxy( IGraphBuilder * This, /* [in] */ DWORD_PTR hFile); void __RPC_STUB IGraphBuilder_SetLogFile_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IGraphBuilder_Abort_Proxy( IGraphBuilder * This); void __RPC_STUB IGraphBuilder_Abort_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IGraphBuilder_ShouldOperationContinue_Proxy( IGraphBuilder * This); void __RPC_STUB IGraphBuilder_ShouldOperationContinue_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IGraphBuilder_INTERFACE_DEFINED__ */ #ifndef __ICaptureGraphBuilder_INTERFACE_DEFINED__ #define __ICaptureGraphBuilder_INTERFACE_DEFINED__ /* interface ICaptureGraphBuilder */ /* [unique][uuid][object] */ EXTERN_C const IID IID_ICaptureGraphBuilder; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("bf87b6e0-8c27-11d0-b3f0-00aa003761c5") ICaptureGraphBuilder : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE SetFiltergraph( /* [in] */ IGraphBuilder *pfg) = 0; virtual HRESULT STDMETHODCALLTYPE GetFiltergraph( /* [out] */ IGraphBuilder **ppfg) = 0; virtual HRESULT STDMETHODCALLTYPE SetOutputFileName( /* [in] */ const GUID *pType, /* [in] */ LPCOLESTR lpstrFile, /* [out] */ IBaseFilter **ppf, /* [out] */ IFileSinkFilter **ppSink) = 0; virtual /* [local] */ HRESULT STDMETHODCALLTYPE FindInterface( /* [unique][in] */ const GUID *pCategory, /* [in] */ IBaseFilter *pf, /* [in] */ REFIID riid, /* [out] */ void **ppint) = 0; virtual HRESULT STDMETHODCALLTYPE RenderStream( /* [in] */ const GUID *pCategory, /* [in] */ IUnknown *pSource, /* [in] */ IBaseFilter *pfCompressor, /* [in] */ IBaseFilter *pfRenderer) = 0; virtual HRESULT STDMETHODCALLTYPE ControlStream( /* [in] */ const GUID *pCategory, /* [in] */ IBaseFilter *pFilter, /* [in] */ REFERENCE_TIME *pstart, /* [in] */ REFERENCE_TIME *pstop, /* [in] */ WORD wStartCookie, /* [in] */ WORD wStopCookie) = 0; virtual HRESULT STDMETHODCALLTYPE AllocCapFile( /* [in] */ LPCOLESTR lpstr, /* [in] */ DWORDLONG dwlSize) = 0; virtual HRESULT STDMETHODCALLTYPE CopyCaptureFile( /* [in] */ LPOLESTR lpwstrOld, /* [in] */ LPOLESTR lpwstrNew, /* [in] */ int fAllowEscAbort, /* [in] */ IAMCopyCaptureFileProgress *pCallback) = 0; }; #else /* C style interface */ typedef struct ICaptureGraphBuilderVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( ICaptureGraphBuilder * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( ICaptureGraphBuilder * This); ULONG ( STDMETHODCALLTYPE *Release )( ICaptureGraphBuilder * This); HRESULT ( STDMETHODCALLTYPE *SetFiltergraph )( ICaptureGraphBuilder * This, /* [in] */ IGraphBuilder *pfg); HRESULT ( STDMETHODCALLTYPE *GetFiltergraph )( ICaptureGraphBuilder * This, /* [out] */ IGraphBuilder **ppfg); HRESULT ( STDMETHODCALLTYPE *SetOutputFileName )( ICaptureGraphBuilder * This, /* [in] */ const GUID *pType, /* [in] */ LPCOLESTR lpstrFile, /* [out] */ IBaseFilter **ppf, /* [out] */ IFileSinkFilter **ppSink); /* [local] */ HRESULT ( STDMETHODCALLTYPE *FindInterface )( ICaptureGraphBuilder * This, /* [unique][in] */ const GUID *pCategory, /* [in] */ IBaseFilter *pf, /* [in] */ REFIID riid, /* [out] */ void **ppint); HRESULT ( STDMETHODCALLTYPE *RenderStream )( ICaptureGraphBuilder * This, /* [in] */ const GUID *pCategory, /* [in] */ IUnknown *pSource, /* [in] */ IBaseFilter *pfCompressor, /* [in] */ IBaseFilter *pfRenderer); HRESULT ( STDMETHODCALLTYPE *ControlStream )( ICaptureGraphBuilder * This, /* [in] */ const GUID *pCategory, /* [in] */ IBaseFilter *pFilter, /* [in] */ REFERENCE_TIME *pstart, /* [in] */ REFERENCE_TIME *pstop, /* [in] */ WORD wStartCookie, /* [in] */ WORD wStopCookie); HRESULT ( STDMETHODCALLTYPE *AllocCapFile )( ICaptureGraphBuilder * This, /* [in] */ LPCOLESTR lpstr, /* [in] */ DWORDLONG dwlSize); HRESULT ( STDMETHODCALLTYPE *CopyCaptureFile )( ICaptureGraphBuilder * This, /* [in] */ LPOLESTR lpwstrOld, /* [in] */ LPOLESTR lpwstrNew, /* [in] */ int fAllowEscAbort, /* [in] */ IAMCopyCaptureFileProgress *pCallback); END_INTERFACE } ICaptureGraphBuilderVtbl; interface ICaptureGraphBuilder { CONST_VTBL struct ICaptureGraphBuilderVtbl *lpVtbl; }; #ifdef COBJMACROS #define ICaptureGraphBuilder_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define ICaptureGraphBuilder_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define ICaptureGraphBuilder_Release(This) \ (This)->lpVtbl -> Release(This) #define ICaptureGraphBuilder_SetFiltergraph(This,pfg) \ (This)->lpVtbl -> SetFiltergraph(This,pfg) #define ICaptureGraphBuilder_GetFiltergraph(This,ppfg) \ (This)->lpVtbl -> GetFiltergraph(This,ppfg) #define ICaptureGraphBuilder_SetOutputFileName(This,pType,lpstrFile,ppf,ppSink) \ (This)->lpVtbl -> SetOutputFileName(This,pType,lpstrFile,ppf,ppSink) #define ICaptureGraphBuilder_FindInterface(This,pCategory,pf,riid,ppint) \ (This)->lpVtbl -> FindInterface(This,pCategory,pf,riid,ppint) #define ICaptureGraphBuilder_RenderStream(This,pCategory,pSource,pfCompressor,pfRenderer) \ (This)->lpVtbl -> RenderStream(This,pCategory,pSource,pfCompressor,pfRenderer) #define ICaptureGraphBuilder_ControlStream(This,pCategory,pFilter,pstart,pstop,wStartCookie,wStopCookie) \ (This)->lpVtbl -> ControlStream(This,pCategory,pFilter,pstart,pstop,wStartCookie,wStopCookie) #define ICaptureGraphBuilder_AllocCapFile(This,lpstr,dwlSize) \ (This)->lpVtbl -> AllocCapFile(This,lpstr,dwlSize) #define ICaptureGraphBuilder_CopyCaptureFile(This,lpwstrOld,lpwstrNew,fAllowEscAbort,pCallback) \ (This)->lpVtbl -> CopyCaptureFile(This,lpwstrOld,lpwstrNew,fAllowEscAbort,pCallback) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE ICaptureGraphBuilder_SetFiltergraph_Proxy( ICaptureGraphBuilder * This, /* [in] */ IGraphBuilder *pfg); void __RPC_STUB ICaptureGraphBuilder_SetFiltergraph_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE ICaptureGraphBuilder_GetFiltergraph_Proxy( ICaptureGraphBuilder * This, /* [out] */ IGraphBuilder **ppfg); void __RPC_STUB ICaptureGraphBuilder_GetFiltergraph_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE ICaptureGraphBuilder_SetOutputFileName_Proxy( ICaptureGraphBuilder * This, /* [in] */ const GUID *pType, /* [in] */ LPCOLESTR lpstrFile, /* [out] */ IBaseFilter **ppf, /* [out] */ IFileSinkFilter **ppSink); void __RPC_STUB ICaptureGraphBuilder_SetOutputFileName_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); /* [call_as] */ HRESULT STDMETHODCALLTYPE ICaptureGraphBuilder_RemoteFindInterface_Proxy( ICaptureGraphBuilder * This, /* [unique][in] */ const GUID *pCategory, /* [in] */ IBaseFilter *pf, /* [in] */ REFIID riid, /* [out] */ IUnknown **ppint); void __RPC_STUB ICaptureGraphBuilder_RemoteFindInterface_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE ICaptureGraphBuilder_RenderStream_Proxy( ICaptureGraphBuilder * This, /* [in] */ const GUID *pCategory, /* [in] */ IUnknown *pSource, /* [in] */ IBaseFilter *pfCompressor, /* [in] */ IBaseFilter *pfRenderer); void __RPC_STUB ICaptureGraphBuilder_RenderStream_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE ICaptureGraphBuilder_ControlStream_Proxy( ICaptureGraphBuilder * This, /* [in] */ const GUID *pCategory, /* [in] */ IBaseFilter *pFilter, /* [in] */ REFERENCE_TIME *pstart, /* [in] */ REFERENCE_TIME *pstop, /* [in] */ WORD wStartCookie, /* [in] */ WORD wStopCookie); void __RPC_STUB ICaptureGraphBuilder_ControlStream_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE ICaptureGraphBuilder_AllocCapFile_Proxy( ICaptureGraphBuilder * This, /* [in] */ LPCOLESTR lpstr, /* [in] */ DWORDLONG dwlSize); void __RPC_STUB ICaptureGraphBuilder_AllocCapFile_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE ICaptureGraphBuilder_CopyCaptureFile_Proxy( ICaptureGraphBuilder * This, /* [in] */ LPOLESTR lpwstrOld, /* [in] */ LPOLESTR lpwstrNew, /* [in] */ int fAllowEscAbort, /* [in] */ IAMCopyCaptureFileProgress *pCallback); void __RPC_STUB ICaptureGraphBuilder_CopyCaptureFile_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __ICaptureGraphBuilder_INTERFACE_DEFINED__ */ #ifndef __IAMCopyCaptureFileProgress_INTERFACE_DEFINED__ #define __IAMCopyCaptureFileProgress_INTERFACE_DEFINED__ /* interface IAMCopyCaptureFileProgress */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IAMCopyCaptureFileProgress; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("670d1d20-a068-11d0-b3f0-00aa003761c5") IAMCopyCaptureFileProgress : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE Progress( /* [in] */ int iProgress) = 0; }; #else /* C style interface */ typedef struct IAMCopyCaptureFileProgressVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMCopyCaptureFileProgress * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMCopyCaptureFileProgress * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMCopyCaptureFileProgress * This); HRESULT ( STDMETHODCALLTYPE *Progress )( IAMCopyCaptureFileProgress * This, /* [in] */ int iProgress); END_INTERFACE } IAMCopyCaptureFileProgressVtbl; interface IAMCopyCaptureFileProgress { CONST_VTBL struct IAMCopyCaptureFileProgressVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMCopyCaptureFileProgress_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMCopyCaptureFileProgress_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMCopyCaptureFileProgress_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMCopyCaptureFileProgress_Progress(This,iProgress) \ (This)->lpVtbl -> Progress(This,iProgress) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMCopyCaptureFileProgress_Progress_Proxy( IAMCopyCaptureFileProgress * This, /* [in] */ int iProgress); void __RPC_STUB IAMCopyCaptureFileProgress_Progress_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMCopyCaptureFileProgress_INTERFACE_DEFINED__ */ #ifndef __ICaptureGraphBuilder2_INTERFACE_DEFINED__ #define __ICaptureGraphBuilder2_INTERFACE_DEFINED__ /* interface ICaptureGraphBuilder2 */ /* [unique][uuid][object] */ EXTERN_C const IID IID_ICaptureGraphBuilder2; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("93E5A4E0-2D50-11d2-ABFA-00A0C9C6E38D") ICaptureGraphBuilder2 : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE SetFiltergraph( /* [in] */ IGraphBuilder *pfg) = 0; virtual HRESULT STDMETHODCALLTYPE GetFiltergraph( /* [out] */ IGraphBuilder **ppfg) = 0; virtual HRESULT STDMETHODCALLTYPE SetOutputFileName( /* [in] */ const GUID *pType, /* [in] */ LPCOLESTR lpstrFile, /* [out] */ IBaseFilter **ppf, /* [out] */ IFileSinkFilter **ppSink) = 0; virtual /* [local] */ HRESULT STDMETHODCALLTYPE FindInterface( /* [in] */ const GUID *pCategory, /* [in] */ const GUID *pType, /* [in] */ IBaseFilter *pf, /* [in] */ REFIID riid, /* [out] */ void **ppint) = 0; virtual HRESULT STDMETHODCALLTYPE RenderStream( /* [in] */ const GUID *pCategory, /* [in] */ const GUID *pType, /* [in] */ IUnknown *pSource, /* [in] */ IBaseFilter *pfCompressor, /* [in] */ IBaseFilter *pfRenderer) = 0; virtual HRESULT STDMETHODCALLTYPE ControlStream( /* [in] */ const GUID *pCategory, /* [in] */ const GUID *pType, /* [in] */ IBaseFilter *pFilter, /* [in] */ REFERENCE_TIME *pstart, /* [in] */ REFERENCE_TIME *pstop, /* [in] */ WORD wStartCookie, /* [in] */ WORD wStopCookie) = 0; virtual HRESULT STDMETHODCALLTYPE AllocCapFile( /* [in] */ LPCOLESTR lpstr, /* [in] */ DWORDLONG dwlSize) = 0; virtual HRESULT STDMETHODCALLTYPE CopyCaptureFile( /* [in] */ LPOLESTR lpwstrOld, /* [in] */ LPOLESTR lpwstrNew, /* [in] */ int fAllowEscAbort, /* [in] */ IAMCopyCaptureFileProgress *pCallback) = 0; virtual HRESULT STDMETHODCALLTYPE FindPin( /* [in] */ IUnknown *pSource, /* [in] */ PIN_DIRECTION pindir, /* [in] */ const GUID *pCategory, /* [in] */ const GUID *pType, /* [in] */ BOOL fUnconnected, /* [in] */ int num, /* [out] */ IPin **ppPin) = 0; }; #else /* C style interface */ typedef struct ICaptureGraphBuilder2Vtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( ICaptureGraphBuilder2 * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( ICaptureGraphBuilder2 * This); ULONG ( STDMETHODCALLTYPE *Release )( ICaptureGraphBuilder2 * This); HRESULT ( STDMETHODCALLTYPE *SetFiltergraph )( ICaptureGraphBuilder2 * This, /* [in] */ IGraphBuilder *pfg); HRESULT ( STDMETHODCALLTYPE *GetFiltergraph )( ICaptureGraphBuilder2 * This, /* [out] */ IGraphBuilder **ppfg); HRESULT ( STDMETHODCALLTYPE *SetOutputFileName )( ICaptureGraphBuilder2 * This, /* [in] */ const GUID *pType, /* [in] */ LPCOLESTR lpstrFile, /* [out] */ IBaseFilter **ppf, /* [out] */ IFileSinkFilter **ppSink); /* [local] */ HRESULT ( STDMETHODCALLTYPE *FindInterface )( ICaptureGraphBuilder2 * This, /* [in] */ const GUID *pCategory, /* [in] */ const GUID *pType, /* [in] */ IBaseFilter *pf, /* [in] */ REFIID riid, /* [out] */ void **ppint); HRESULT ( STDMETHODCALLTYPE *RenderStream )( ICaptureGraphBuilder2 * This, /* [in] */ const GUID *pCategory, /* [in] */ const GUID *pType, /* [in] */ IUnknown *pSource, /* [in] */ IBaseFilter *pfCompressor, /* [in] */ IBaseFilter *pfRenderer); HRESULT ( STDMETHODCALLTYPE *ControlStream )( ICaptureGraphBuilder2 * This, /* [in] */ const GUID *pCategory, /* [in] */ const GUID *pType, /* [in] */ IBaseFilter *pFilter, /* [in] */ REFERENCE_TIME *pstart, /* [in] */ REFERENCE_TIME *pstop, /* [in] */ WORD wStartCookie, /* [in] */ WORD wStopCookie); HRESULT ( STDMETHODCALLTYPE *AllocCapFile )( ICaptureGraphBuilder2 * This, /* [in] */ LPCOLESTR lpstr, /* [in] */ DWORDLONG dwlSize); HRESULT ( STDMETHODCALLTYPE *CopyCaptureFile )( ICaptureGraphBuilder2 * This, /* [in] */ LPOLESTR lpwstrOld, /* [in] */ LPOLESTR lpwstrNew, /* [in] */ int fAllowEscAbort, /* [in] */ IAMCopyCaptureFileProgress *pCallback); HRESULT ( STDMETHODCALLTYPE *FindPin )( ICaptureGraphBuilder2 * This, /* [in] */ IUnknown *pSource, /* [in] */ PIN_DIRECTION pindir, /* [in] */ const GUID *pCategory, /* [in] */ const GUID *pType, /* [in] */ BOOL fUnconnected, /* [in] */ int num, /* [out] */ IPin **ppPin); END_INTERFACE } ICaptureGraphBuilder2Vtbl; interface ICaptureGraphBuilder2 { CONST_VTBL struct ICaptureGraphBuilder2Vtbl *lpVtbl; }; #ifdef COBJMACROS #define ICaptureGraphBuilder2_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define ICaptureGraphBuilder2_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define ICaptureGraphBuilder2_Release(This) \ (This)->lpVtbl -> Release(This) #define ICaptureGraphBuilder2_SetFiltergraph(This,pfg) \ (This)->lpVtbl -> SetFiltergraph(This,pfg) #define ICaptureGraphBuilder2_GetFiltergraph(This,ppfg) \ (This)->lpVtbl -> GetFiltergraph(This,ppfg) #define ICaptureGraphBuilder2_SetOutputFileName(This,pType,lpstrFile,ppf,ppSink) \ (This)->lpVtbl -> SetOutputFileName(This,pType,lpstrFile,ppf,ppSink) #define ICaptureGraphBuilder2_FindInterface(This,pCategory,pType,pf,riid,ppint) \ (This)->lpVtbl -> FindInterface(This,pCategory,pType,pf,riid,ppint) #define ICaptureGraphBuilder2_RenderStream(This,pCategory,pType,pSource,pfCompressor,pfRenderer) \ (This)->lpVtbl -> RenderStream(This,pCategory,pType,pSource,pfCompressor,pfRenderer) #define ICaptureGraphBuilder2_ControlStream(This,pCategory,pType,pFilter,pstart,pstop,wStartCookie,wStopCookie) \ (This)->lpVtbl -> ControlStream(This,pCategory,pType,pFilter,pstart,pstop,wStartCookie,wStopCookie) #define ICaptureGraphBuilder2_AllocCapFile(This,lpstr,dwlSize) \ (This)->lpVtbl -> AllocCapFile(This,lpstr,dwlSize) #define ICaptureGraphBuilder2_CopyCaptureFile(This,lpwstrOld,lpwstrNew,fAllowEscAbort,pCallback) \ (This)->lpVtbl -> CopyCaptureFile(This,lpwstrOld,lpwstrNew,fAllowEscAbort,pCallback) #define ICaptureGraphBuilder2_FindPin(This,pSource,pindir,pCategory,pType,fUnconnected,num,ppPin) \ (This)->lpVtbl -> FindPin(This,pSource,pindir,pCategory,pType,fUnconnected,num,ppPin) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE ICaptureGraphBuilder2_SetFiltergraph_Proxy( ICaptureGraphBuilder2 * This, /* [in] */ IGraphBuilder *pfg); void __RPC_STUB ICaptureGraphBuilder2_SetFiltergraph_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE ICaptureGraphBuilder2_GetFiltergraph_Proxy( ICaptureGraphBuilder2 * This, /* [out] */ IGraphBuilder **ppfg); void __RPC_STUB ICaptureGraphBuilder2_GetFiltergraph_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE ICaptureGraphBuilder2_SetOutputFileName_Proxy( ICaptureGraphBuilder2 * This, /* [in] */ const GUID *pType, /* [in] */ LPCOLESTR lpstrFile, /* [out] */ IBaseFilter **ppf, /* [out] */ IFileSinkFilter **ppSink); void __RPC_STUB ICaptureGraphBuilder2_SetOutputFileName_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); /* [call_as] */ HRESULT STDMETHODCALLTYPE ICaptureGraphBuilder2_RemoteFindInterface_Proxy( ICaptureGraphBuilder2 * This, /* [in] */ const GUID *pCategory, /* [in] */ const GUID *pType, /* [in] */ IBaseFilter *pf, /* [in] */ REFIID riid, /* [out] */ IUnknown **ppint); void __RPC_STUB ICaptureGraphBuilder2_RemoteFindInterface_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE ICaptureGraphBuilder2_RenderStream_Proxy( ICaptureGraphBuilder2 * This, /* [in] */ const GUID *pCategory, /* [in] */ const GUID *pType, /* [in] */ IUnknown *pSource, /* [in] */ IBaseFilter *pfCompressor, /* [in] */ IBaseFilter *pfRenderer); void __RPC_STUB ICaptureGraphBuilder2_RenderStream_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE ICaptureGraphBuilder2_ControlStream_Proxy( ICaptureGraphBuilder2 * This, /* [in] */ const GUID *pCategory, /* [in] */ const GUID *pType, /* [in] */ IBaseFilter *pFilter, /* [in] */ REFERENCE_TIME *pstart, /* [in] */ REFERENCE_TIME *pstop, /* [in] */ WORD wStartCookie, /* [in] */ WORD wStopCookie); void __RPC_STUB ICaptureGraphBuilder2_ControlStream_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE ICaptureGraphBuilder2_AllocCapFile_Proxy( ICaptureGraphBuilder2 * This, /* [in] */ LPCOLESTR lpstr, /* [in] */ DWORDLONG dwlSize); void __RPC_STUB ICaptureGraphBuilder2_AllocCapFile_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE ICaptureGraphBuilder2_CopyCaptureFile_Proxy( ICaptureGraphBuilder2 * This, /* [in] */ LPOLESTR lpwstrOld, /* [in] */ LPOLESTR lpwstrNew, /* [in] */ int fAllowEscAbort, /* [in] */ IAMCopyCaptureFileProgress *pCallback); void __RPC_STUB ICaptureGraphBuilder2_CopyCaptureFile_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE ICaptureGraphBuilder2_FindPin_Proxy( ICaptureGraphBuilder2 * This, /* [in] */ IUnknown *pSource, /* [in] */ PIN_DIRECTION pindir, /* [in] */ const GUID *pCategory, /* [in] */ const GUID *pType, /* [in] */ BOOL fUnconnected, /* [in] */ int num, /* [out] */ IPin **ppPin); void __RPC_STUB ICaptureGraphBuilder2_FindPin_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __ICaptureGraphBuilder2_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0148 */ /* [local] */ enum _AM_RENSDEREXFLAGS { AM_RENDEREX_RENDERTOEXISTINGRENDERERS = 0x1 } ; extern RPC_IF_HANDLE __MIDL_itf_strmif_0148_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0148_v0_0_s_ifspec; #ifndef __IFilterGraph2_INTERFACE_DEFINED__ #define __IFilterGraph2_INTERFACE_DEFINED__ /* interface IFilterGraph2 */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IFilterGraph2; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("36b73882-c2c8-11cf-8b46-00805f6cef60") IFilterGraph2 : public IGraphBuilder { public: virtual HRESULT STDMETHODCALLTYPE AddSourceFilterForMoniker( /* [in] */ IMoniker *pMoniker, /* [in] */ IBindCtx *pCtx, /* [unique][in] */ LPCWSTR lpcwstrFilterName, /* [out] */ IBaseFilter **ppFilter) = 0; virtual HRESULT STDMETHODCALLTYPE ReconnectEx( /* [in] */ IPin *ppin, /* [unique][in] */ const AM_MEDIA_TYPE *pmt) = 0; virtual HRESULT STDMETHODCALLTYPE RenderEx( /* [in] */ IPin *pPinOut, /* [in] */ DWORD dwFlags, /* [out][in] */ DWORD *pvContext) = 0; }; #else /* C style interface */ typedef struct IFilterGraph2Vtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IFilterGraph2 * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IFilterGraph2 * This); ULONG ( STDMETHODCALLTYPE *Release )( IFilterGraph2 * This); HRESULT ( STDMETHODCALLTYPE *AddFilter )( IFilterGraph2 * This, /* [in] */ IBaseFilter *pFilter, /* [string][in] */ LPCWSTR pName); HRESULT ( STDMETHODCALLTYPE *RemoveFilter )( IFilterGraph2 * This, /* [in] */ IBaseFilter *pFilter); HRESULT ( STDMETHODCALLTYPE *EnumFilters )( IFilterGraph2 * This, /* [out] */ IEnumFilters **ppEnum); HRESULT ( STDMETHODCALLTYPE *FindFilterByName )( IFilterGraph2 * This, /* [string][in] */ LPCWSTR pName, /* [out] */ IBaseFilter **ppFilter); HRESULT ( STDMETHODCALLTYPE *ConnectDirect )( IFilterGraph2 * This, /* [in] */ IPin *ppinOut, /* [in] */ IPin *ppinIn, /* [unique][in] */ const AM_MEDIA_TYPE *pmt); HRESULT ( STDMETHODCALLTYPE *Reconnect )( IFilterGraph2 * This, /* [in] */ IPin *ppin); HRESULT ( STDMETHODCALLTYPE *Disconnect )( IFilterGraph2 * This, /* [in] */ IPin *ppin); HRESULT ( STDMETHODCALLTYPE *SetDefaultSyncSource )( IFilterGraph2 * This); HRESULT ( STDMETHODCALLTYPE *Connect )( IFilterGraph2 * This, /* [in] */ IPin *ppinOut, /* [in] */ IPin *ppinIn); HRESULT ( STDMETHODCALLTYPE *Render )( IFilterGraph2 * This, /* [in] */ IPin *ppinOut); HRESULT ( STDMETHODCALLTYPE *RenderFile )( IFilterGraph2 * This, /* [in] */ LPCWSTR lpcwstrFile, /* [unique][in] */ LPCWSTR lpcwstrPlayList); HRESULT ( STDMETHODCALLTYPE *AddSourceFilter )( IFilterGraph2 * This, /* [in] */ LPCWSTR lpcwstrFileName, /* [unique][in] */ LPCWSTR lpcwstrFilterName, /* [out] */ IBaseFilter **ppFilter); HRESULT ( STDMETHODCALLTYPE *SetLogFile )( IFilterGraph2 * This, /* [in] */ DWORD_PTR hFile); HRESULT ( STDMETHODCALLTYPE *Abort )( IFilterGraph2 * This); HRESULT ( STDMETHODCALLTYPE *ShouldOperationContinue )( IFilterGraph2 * This); HRESULT ( STDMETHODCALLTYPE *AddSourceFilterForMoniker )( IFilterGraph2 * This, /* [in] */ IMoniker *pMoniker, /* [in] */ IBindCtx *pCtx, /* [unique][in] */ LPCWSTR lpcwstrFilterName, /* [out] */ IBaseFilter **ppFilter); HRESULT ( STDMETHODCALLTYPE *ReconnectEx )( IFilterGraph2 * This, /* [in] */ IPin *ppin, /* [unique][in] */ const AM_MEDIA_TYPE *pmt); HRESULT ( STDMETHODCALLTYPE *RenderEx )( IFilterGraph2 * This, /* [in] */ IPin *pPinOut, /* [in] */ DWORD dwFlags, /* [out][in] */ DWORD *pvContext); END_INTERFACE } IFilterGraph2Vtbl; interface IFilterGraph2 { CONST_VTBL struct IFilterGraph2Vtbl *lpVtbl; }; #ifdef COBJMACROS #define IFilterGraph2_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IFilterGraph2_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IFilterGraph2_Release(This) \ (This)->lpVtbl -> Release(This) #define IFilterGraph2_AddFilter(This,pFilter,pName) \ (This)->lpVtbl -> AddFilter(This,pFilter,pName) #define IFilterGraph2_RemoveFilter(This,pFilter) \ (This)->lpVtbl -> RemoveFilter(This,pFilter) #define IFilterGraph2_EnumFilters(This,ppEnum) \ (This)->lpVtbl -> EnumFilters(This,ppEnum) #define IFilterGraph2_FindFilterByName(This,pName,ppFilter) \ (This)->lpVtbl -> FindFilterByName(This,pName,ppFilter) #define IFilterGraph2_ConnectDirect(This,ppinOut,ppinIn,pmt) \ (This)->lpVtbl -> ConnectDirect(This,ppinOut,ppinIn,pmt) #define IFilterGraph2_Reconnect(This,ppin) \ (This)->lpVtbl -> Reconnect(This,ppin) #define IFilterGraph2_Disconnect(This,ppin) \ (This)->lpVtbl -> Disconnect(This,ppin) #define IFilterGraph2_SetDefaultSyncSource(This) \ (This)->lpVtbl -> SetDefaultSyncSource(This) #define IFilterGraph2_Connect(This,ppinOut,ppinIn) \ (This)->lpVtbl -> Connect(This,ppinOut,ppinIn) #define IFilterGraph2_Render(This,ppinOut) \ (This)->lpVtbl -> Render(This,ppinOut) #define IFilterGraph2_RenderFile(This,lpcwstrFile,lpcwstrPlayList) \ (This)->lpVtbl -> RenderFile(This,lpcwstrFile,lpcwstrPlayList) #define IFilterGraph2_AddSourceFilter(This,lpcwstrFileName,lpcwstrFilterName,ppFilter) \ (This)->lpVtbl -> AddSourceFilter(This,lpcwstrFileName,lpcwstrFilterName,ppFilter) #define IFilterGraph2_SetLogFile(This,hFile) \ (This)->lpVtbl -> SetLogFile(This,hFile) #define IFilterGraph2_Abort(This) \ (This)->lpVtbl -> Abort(This) #define IFilterGraph2_ShouldOperationContinue(This) \ (This)->lpVtbl -> ShouldOperationContinue(This) #define IFilterGraph2_AddSourceFilterForMoniker(This,pMoniker,pCtx,lpcwstrFilterName,ppFilter) \ (This)->lpVtbl -> AddSourceFilterForMoniker(This,pMoniker,pCtx,lpcwstrFilterName,ppFilter) #define IFilterGraph2_ReconnectEx(This,ppin,pmt) \ (This)->lpVtbl -> ReconnectEx(This,ppin,pmt) #define IFilterGraph2_RenderEx(This,pPinOut,dwFlags,pvContext) \ (This)->lpVtbl -> RenderEx(This,pPinOut,dwFlags,pvContext) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IFilterGraph2_AddSourceFilterForMoniker_Proxy( IFilterGraph2 * This, /* [in] */ IMoniker *pMoniker, /* [in] */ IBindCtx *pCtx, /* [unique][in] */ LPCWSTR lpcwstrFilterName, /* [out] */ IBaseFilter **ppFilter); void __RPC_STUB IFilterGraph2_AddSourceFilterForMoniker_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IFilterGraph2_ReconnectEx_Proxy( IFilterGraph2 * This, /* [in] */ IPin *ppin, /* [unique][in] */ const AM_MEDIA_TYPE *pmt); void __RPC_STUB IFilterGraph2_ReconnectEx_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IFilterGraph2_RenderEx_Proxy( IFilterGraph2 * This, /* [in] */ IPin *pPinOut, /* [in] */ DWORD dwFlags, /* [out][in] */ DWORD *pvContext); void __RPC_STUB IFilterGraph2_RenderEx_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IFilterGraph2_INTERFACE_DEFINED__ */ #ifndef __IStreamBuilder_INTERFACE_DEFINED__ #define __IStreamBuilder_INTERFACE_DEFINED__ /* interface IStreamBuilder */ /* [unique][uuid][local][object] */ EXTERN_C const IID IID_IStreamBuilder; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("56a868bf-0ad4-11ce-b03a-0020af0ba770") IStreamBuilder : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE Render( /* [in] */ IPin *ppinOut, /* [in] */ IGraphBuilder *pGraph) = 0; virtual HRESULT STDMETHODCALLTYPE Backout( /* [in] */ IPin *ppinOut, /* [in] */ IGraphBuilder *pGraph) = 0; }; #else /* C style interface */ typedef struct IStreamBuilderVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IStreamBuilder * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IStreamBuilder * This); ULONG ( STDMETHODCALLTYPE *Release )( IStreamBuilder * This); HRESULT ( STDMETHODCALLTYPE *Render )( IStreamBuilder * This, /* [in] */ IPin *ppinOut, /* [in] */ IGraphBuilder *pGraph); HRESULT ( STDMETHODCALLTYPE *Backout )( IStreamBuilder * This, /* [in] */ IPin *ppinOut, /* [in] */ IGraphBuilder *pGraph); END_INTERFACE } IStreamBuilderVtbl; interface IStreamBuilder { CONST_VTBL struct IStreamBuilderVtbl *lpVtbl; }; #ifdef COBJMACROS #define IStreamBuilder_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IStreamBuilder_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IStreamBuilder_Release(This) \ (This)->lpVtbl -> Release(This) #define IStreamBuilder_Render(This,ppinOut,pGraph) \ (This)->lpVtbl -> Render(This,ppinOut,pGraph) #define IStreamBuilder_Backout(This,ppinOut,pGraph) \ (This)->lpVtbl -> Backout(This,ppinOut,pGraph) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IStreamBuilder_Render_Proxy( IStreamBuilder * This, /* [in] */ IPin *ppinOut, /* [in] */ IGraphBuilder *pGraph); void __RPC_STUB IStreamBuilder_Render_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IStreamBuilder_Backout_Proxy( IStreamBuilder * This, /* [in] */ IPin *ppinOut, /* [in] */ IGraphBuilder *pGraph); void __RPC_STUB IStreamBuilder_Backout_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IStreamBuilder_INTERFACE_DEFINED__ */ #ifndef __IAsyncReader_INTERFACE_DEFINED__ #define __IAsyncReader_INTERFACE_DEFINED__ /* interface IAsyncReader */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IAsyncReader; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("56a868aa-0ad4-11ce-b03a-0020af0ba770") IAsyncReader : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE RequestAllocator( /* [in] */ IMemAllocator *pPreferred, /* [in] */ ALLOCATOR_PROPERTIES *pProps, /* [out] */ IMemAllocator **ppActual) = 0; virtual HRESULT STDMETHODCALLTYPE Request( /* [in] */ IMediaSample *pSample, /* [in] */ DWORD_PTR dwUser) = 0; virtual HRESULT STDMETHODCALLTYPE WaitForNext( /* [in] */ DWORD dwTimeout, /* [out] */ IMediaSample **ppSample, /* [out] */ DWORD_PTR *pdwUser) = 0; virtual HRESULT STDMETHODCALLTYPE SyncReadAligned( /* [in] */ IMediaSample *pSample) = 0; virtual HRESULT STDMETHODCALLTYPE SyncRead( /* [in] */ LONGLONG llPosition, /* [in] */ LONG lLength, /* [size_is][out] */ BYTE *pBuffer) = 0; virtual HRESULT STDMETHODCALLTYPE Length( /* [out] */ LONGLONG *pTotal, /* [out] */ LONGLONG *pAvailable) = 0; virtual HRESULT STDMETHODCALLTYPE BeginFlush( void) = 0; virtual HRESULT STDMETHODCALLTYPE EndFlush( void) = 0; }; #else /* C style interface */ typedef struct IAsyncReaderVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAsyncReader * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAsyncReader * This); ULONG ( STDMETHODCALLTYPE *Release )( IAsyncReader * This); HRESULT ( STDMETHODCALLTYPE *RequestAllocator )( IAsyncReader * This, /* [in] */ IMemAllocator *pPreferred, /* [in] */ ALLOCATOR_PROPERTIES *pProps, /* [out] */ IMemAllocator **ppActual); HRESULT ( STDMETHODCALLTYPE *Request )( IAsyncReader * This, /* [in] */ IMediaSample *pSample, /* [in] */ DWORD_PTR dwUser); HRESULT ( STDMETHODCALLTYPE *WaitForNext )( IAsyncReader * This, /* [in] */ DWORD dwTimeout, /* [out] */ IMediaSample **ppSample, /* [out] */ DWORD_PTR *pdwUser); HRESULT ( STDMETHODCALLTYPE *SyncReadAligned )( IAsyncReader * This, /* [in] */ IMediaSample *pSample); HRESULT ( STDMETHODCALLTYPE *SyncRead )( IAsyncReader * This, /* [in] */ LONGLONG llPosition, /* [in] */ LONG lLength, /* [size_is][out] */ BYTE *pBuffer); HRESULT ( STDMETHODCALLTYPE *Length )( IAsyncReader * This, /* [out] */ LONGLONG *pTotal, /* [out] */ LONGLONG *pAvailable); HRESULT ( STDMETHODCALLTYPE *BeginFlush )( IAsyncReader * This); HRESULT ( STDMETHODCALLTYPE *EndFlush )( IAsyncReader * This); END_INTERFACE } IAsyncReaderVtbl; interface IAsyncReader { CONST_VTBL struct IAsyncReaderVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAsyncReader_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAsyncReader_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAsyncReader_Release(This) \ (This)->lpVtbl -> Release(This) #define IAsyncReader_RequestAllocator(This,pPreferred,pProps,ppActual) \ (This)->lpVtbl -> RequestAllocator(This,pPreferred,pProps,ppActual) #define IAsyncReader_Request(This,pSample,dwUser) \ (This)->lpVtbl -> Request(This,pSample,dwUser) #define IAsyncReader_WaitForNext(This,dwTimeout,ppSample,pdwUser) \ (This)->lpVtbl -> WaitForNext(This,dwTimeout,ppSample,pdwUser) #define IAsyncReader_SyncReadAligned(This,pSample) \ (This)->lpVtbl -> SyncReadAligned(This,pSample) #define IAsyncReader_SyncRead(This,llPosition,lLength,pBuffer) \ (This)->lpVtbl -> SyncRead(This,llPosition,lLength,pBuffer) #define IAsyncReader_Length(This,pTotal,pAvailable) \ (This)->lpVtbl -> Length(This,pTotal,pAvailable) #define IAsyncReader_BeginFlush(This) \ (This)->lpVtbl -> BeginFlush(This) #define IAsyncReader_EndFlush(This) \ (This)->lpVtbl -> EndFlush(This) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAsyncReader_RequestAllocator_Proxy( IAsyncReader * This, /* [in] */ IMemAllocator *pPreferred, /* [in] */ ALLOCATOR_PROPERTIES *pProps, /* [out] */ IMemAllocator **ppActual); void __RPC_STUB IAsyncReader_RequestAllocator_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAsyncReader_Request_Proxy( IAsyncReader * This, /* [in] */ IMediaSample *pSample, /* [in] */ DWORD_PTR dwUser); void __RPC_STUB IAsyncReader_Request_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAsyncReader_WaitForNext_Proxy( IAsyncReader * This, /* [in] */ DWORD dwTimeout, /* [out] */ IMediaSample **ppSample, /* [out] */ DWORD_PTR *pdwUser); void __RPC_STUB IAsyncReader_WaitForNext_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAsyncReader_SyncReadAligned_Proxy( IAsyncReader * This, /* [in] */ IMediaSample *pSample); void __RPC_STUB IAsyncReader_SyncReadAligned_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAsyncReader_SyncRead_Proxy( IAsyncReader * This, /* [in] */ LONGLONG llPosition, /* [in] */ LONG lLength, /* [size_is][out] */ BYTE *pBuffer); void __RPC_STUB IAsyncReader_SyncRead_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAsyncReader_Length_Proxy( IAsyncReader * This, /* [out] */ LONGLONG *pTotal, /* [out] */ LONGLONG *pAvailable); void __RPC_STUB IAsyncReader_Length_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAsyncReader_BeginFlush_Proxy( IAsyncReader * This); void __RPC_STUB IAsyncReader_BeginFlush_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAsyncReader_EndFlush_Proxy( IAsyncReader * This); void __RPC_STUB IAsyncReader_EndFlush_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAsyncReader_INTERFACE_DEFINED__ */ #ifndef __IGraphVersion_INTERFACE_DEFINED__ #define __IGraphVersion_INTERFACE_DEFINED__ /* interface IGraphVersion */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IGraphVersion; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("56a868ab-0ad4-11ce-b03a-0020af0ba770") IGraphVersion : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE QueryVersion( LONG *pVersion) = 0; }; #else /* C style interface */ typedef struct IGraphVersionVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IGraphVersion * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IGraphVersion * This); ULONG ( STDMETHODCALLTYPE *Release )( IGraphVersion * This); HRESULT ( STDMETHODCALLTYPE *QueryVersion )( IGraphVersion * This, LONG *pVersion); END_INTERFACE } IGraphVersionVtbl; interface IGraphVersion { CONST_VTBL struct IGraphVersionVtbl *lpVtbl; }; #ifdef COBJMACROS #define IGraphVersion_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IGraphVersion_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IGraphVersion_Release(This) \ (This)->lpVtbl -> Release(This) #define IGraphVersion_QueryVersion(This,pVersion) \ (This)->lpVtbl -> QueryVersion(This,pVersion) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IGraphVersion_QueryVersion_Proxy( IGraphVersion * This, LONG *pVersion); void __RPC_STUB IGraphVersion_QueryVersion_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IGraphVersion_INTERFACE_DEFINED__ */ #ifndef __IResourceConsumer_INTERFACE_DEFINED__ #define __IResourceConsumer_INTERFACE_DEFINED__ /* interface IResourceConsumer */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IResourceConsumer; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("56a868ad-0ad4-11ce-b03a-0020af0ba770") IResourceConsumer : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE AcquireResource( /* [in] */ LONG idResource) = 0; virtual HRESULT STDMETHODCALLTYPE ReleaseResource( /* [in] */ LONG idResource) = 0; }; #else /* C style interface */ typedef struct IResourceConsumerVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IResourceConsumer * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IResourceConsumer * This); ULONG ( STDMETHODCALLTYPE *Release )( IResourceConsumer * This); HRESULT ( STDMETHODCALLTYPE *AcquireResource )( IResourceConsumer * This, /* [in] */ LONG idResource); HRESULT ( STDMETHODCALLTYPE *ReleaseResource )( IResourceConsumer * This, /* [in] */ LONG idResource); END_INTERFACE } IResourceConsumerVtbl; interface IResourceConsumer { CONST_VTBL struct IResourceConsumerVtbl *lpVtbl; }; #ifdef COBJMACROS #define IResourceConsumer_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IResourceConsumer_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IResourceConsumer_Release(This) \ (This)->lpVtbl -> Release(This) #define IResourceConsumer_AcquireResource(This,idResource) \ (This)->lpVtbl -> AcquireResource(This,idResource) #define IResourceConsumer_ReleaseResource(This,idResource) \ (This)->lpVtbl -> ReleaseResource(This,idResource) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IResourceConsumer_AcquireResource_Proxy( IResourceConsumer * This, /* [in] */ LONG idResource); void __RPC_STUB IResourceConsumer_AcquireResource_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IResourceConsumer_ReleaseResource_Proxy( IResourceConsumer * This, /* [in] */ LONG idResource); void __RPC_STUB IResourceConsumer_ReleaseResource_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IResourceConsumer_INTERFACE_DEFINED__ */ #ifndef __IResourceManager_INTERFACE_DEFINED__ #define __IResourceManager_INTERFACE_DEFINED__ /* interface IResourceManager */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IResourceManager; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("56a868ac-0ad4-11ce-b03a-0020af0ba770") IResourceManager : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE Register( /* [in] */ LPCWSTR pName, /* [in] */ LONG cResource, /* [out] */ LONG *plToken) = 0; virtual HRESULT STDMETHODCALLTYPE RegisterGroup( /* [in] */ LPCWSTR pName, /* [in] */ LONG cResource, /* [size_is][in] */ LONG *palTokens, /* [out] */ LONG *plToken) = 0; virtual HRESULT STDMETHODCALLTYPE RequestResource( /* [in] */ LONG idResource, /* [in] */ IUnknown *pFocusObject, /* [in] */ IResourceConsumer *pConsumer) = 0; virtual HRESULT STDMETHODCALLTYPE NotifyAcquire( /* [in] */ LONG idResource, /* [in] */ IResourceConsumer *pConsumer, /* [in] */ HRESULT hr) = 0; virtual HRESULT STDMETHODCALLTYPE NotifyRelease( /* [in] */ LONG idResource, /* [in] */ IResourceConsumer *pConsumer, /* [in] */ BOOL bStillWant) = 0; virtual HRESULT STDMETHODCALLTYPE CancelRequest( /* [in] */ LONG idResource, /* [in] */ IResourceConsumer *pConsumer) = 0; virtual HRESULT STDMETHODCALLTYPE SetFocus( /* [in] */ IUnknown *pFocusObject) = 0; virtual HRESULT STDMETHODCALLTYPE ReleaseFocus( /* [in] */ IUnknown *pFocusObject) = 0; }; #else /* C style interface */ typedef struct IResourceManagerVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IResourceManager * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IResourceManager * This); ULONG ( STDMETHODCALLTYPE *Release )( IResourceManager * This); HRESULT ( STDMETHODCALLTYPE *Register )( IResourceManager * This, /* [in] */ LPCWSTR pName, /* [in] */ LONG cResource, /* [out] */ LONG *plToken); HRESULT ( STDMETHODCALLTYPE *RegisterGroup )( IResourceManager * This, /* [in] */ LPCWSTR pName, /* [in] */ LONG cResource, /* [size_is][in] */ LONG *palTokens, /* [out] */ LONG *plToken); HRESULT ( STDMETHODCALLTYPE *RequestResource )( IResourceManager * This, /* [in] */ LONG idResource, /* [in] */ IUnknown *pFocusObject, /* [in] */ IResourceConsumer *pConsumer); HRESULT ( STDMETHODCALLTYPE *NotifyAcquire )( IResourceManager * This, /* [in] */ LONG idResource, /* [in] */ IResourceConsumer *pConsumer, /* [in] */ HRESULT hr); HRESULT ( STDMETHODCALLTYPE *NotifyRelease )( IResourceManager * This, /* [in] */ LONG idResource, /* [in] */ IResourceConsumer *pConsumer, /* [in] */ BOOL bStillWant); HRESULT ( STDMETHODCALLTYPE *CancelRequest )( IResourceManager * This, /* [in] */ LONG idResource, /* [in] */ IResourceConsumer *pConsumer); HRESULT ( STDMETHODCALLTYPE *SetFocus )( IResourceManager * This, /* [in] */ IUnknown *pFocusObject); HRESULT ( STDMETHODCALLTYPE *ReleaseFocus )( IResourceManager * This, /* [in] */ IUnknown *pFocusObject); END_INTERFACE } IResourceManagerVtbl; interface IResourceManager { CONST_VTBL struct IResourceManagerVtbl *lpVtbl; }; #ifdef COBJMACROS #define IResourceManager_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IResourceManager_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IResourceManager_Release(This) \ (This)->lpVtbl -> Release(This) #define IResourceManager_Register(This,pName,cResource,plToken) \ (This)->lpVtbl -> Register(This,pName,cResource,plToken) #define IResourceManager_RegisterGroup(This,pName,cResource,palTokens,plToken) \ (This)->lpVtbl -> RegisterGroup(This,pName,cResource,palTokens,plToken) #define IResourceManager_RequestResource(This,idResource,pFocusObject,pConsumer) \ (This)->lpVtbl -> RequestResource(This,idResource,pFocusObject,pConsumer) #define IResourceManager_NotifyAcquire(This,idResource,pConsumer,hr) \ (This)->lpVtbl -> NotifyAcquire(This,idResource,pConsumer,hr) #define IResourceManager_NotifyRelease(This,idResource,pConsumer,bStillWant) \ (This)->lpVtbl -> NotifyRelease(This,idResource,pConsumer,bStillWant) #define IResourceManager_CancelRequest(This,idResource,pConsumer) \ (This)->lpVtbl -> CancelRequest(This,idResource,pConsumer) #define IResourceManager_SetFocus(This,pFocusObject) \ (This)->lpVtbl -> SetFocus(This,pFocusObject) #define IResourceManager_ReleaseFocus(This,pFocusObject) \ (This)->lpVtbl -> ReleaseFocus(This,pFocusObject) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IResourceManager_Register_Proxy( IResourceManager * This, /* [in] */ LPCWSTR pName, /* [in] */ LONG cResource, /* [out] */ LONG *plToken); void __RPC_STUB IResourceManager_Register_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IResourceManager_RegisterGroup_Proxy( IResourceManager * This, /* [in] */ LPCWSTR pName, /* [in] */ LONG cResource, /* [size_is][in] */ LONG *palTokens, /* [out] */ LONG *plToken); void __RPC_STUB IResourceManager_RegisterGroup_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IResourceManager_RequestResource_Proxy( IResourceManager * This, /* [in] */ LONG idResource, /* [in] */ IUnknown *pFocusObject, /* [in] */ IResourceConsumer *pConsumer); void __RPC_STUB IResourceManager_RequestResource_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IResourceManager_NotifyAcquire_Proxy( IResourceManager * This, /* [in] */ LONG idResource, /* [in] */ IResourceConsumer *pConsumer, /* [in] */ HRESULT hr); void __RPC_STUB IResourceManager_NotifyAcquire_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IResourceManager_NotifyRelease_Proxy( IResourceManager * This, /* [in] */ LONG idResource, /* [in] */ IResourceConsumer *pConsumer, /* [in] */ BOOL bStillWant); void __RPC_STUB IResourceManager_NotifyRelease_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IResourceManager_CancelRequest_Proxy( IResourceManager * This, /* [in] */ LONG idResource, /* [in] */ IResourceConsumer *pConsumer); void __RPC_STUB IResourceManager_CancelRequest_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IResourceManager_SetFocus_Proxy( IResourceManager * This, /* [in] */ IUnknown *pFocusObject); void __RPC_STUB IResourceManager_SetFocus_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IResourceManager_ReleaseFocus_Proxy( IResourceManager * This, /* [in] */ IUnknown *pFocusObject); void __RPC_STUB IResourceManager_ReleaseFocus_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IResourceManager_INTERFACE_DEFINED__ */ #ifndef __IDistributorNotify_INTERFACE_DEFINED__ #define __IDistributorNotify_INTERFACE_DEFINED__ /* interface IDistributorNotify */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IDistributorNotify; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("56a868af-0ad4-11ce-b03a-0020af0ba770") IDistributorNotify : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE Stop( void) = 0; virtual HRESULT STDMETHODCALLTYPE Pause( void) = 0; virtual HRESULT STDMETHODCALLTYPE Run( REFERENCE_TIME tStart) = 0; virtual HRESULT STDMETHODCALLTYPE SetSyncSource( /* [in] */ IReferenceClock *pClock) = 0; virtual HRESULT STDMETHODCALLTYPE NotifyGraphChange( void) = 0; }; #else /* C style interface */ typedef struct IDistributorNotifyVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IDistributorNotify * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IDistributorNotify * This); ULONG ( STDMETHODCALLTYPE *Release )( IDistributorNotify * This); HRESULT ( STDMETHODCALLTYPE *Stop )( IDistributorNotify * This); HRESULT ( STDMETHODCALLTYPE *Pause )( IDistributorNotify * This); HRESULT ( STDMETHODCALLTYPE *Run )( IDistributorNotify * This, REFERENCE_TIME tStart); HRESULT ( STDMETHODCALLTYPE *SetSyncSource )( IDistributorNotify * This, /* [in] */ IReferenceClock *pClock); HRESULT ( STDMETHODCALLTYPE *NotifyGraphChange )( IDistributorNotify * This); END_INTERFACE } IDistributorNotifyVtbl; interface IDistributorNotify { CONST_VTBL struct IDistributorNotifyVtbl *lpVtbl; }; #ifdef COBJMACROS #define IDistributorNotify_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IDistributorNotify_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IDistributorNotify_Release(This) \ (This)->lpVtbl -> Release(This) #define IDistributorNotify_Stop(This) \ (This)->lpVtbl -> Stop(This) #define IDistributorNotify_Pause(This) \ (This)->lpVtbl -> Pause(This) #define IDistributorNotify_Run(This,tStart) \ (This)->lpVtbl -> Run(This,tStart) #define IDistributorNotify_SetSyncSource(This,pClock) \ (This)->lpVtbl -> SetSyncSource(This,pClock) #define IDistributorNotify_NotifyGraphChange(This) \ (This)->lpVtbl -> NotifyGraphChange(This) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IDistributorNotify_Stop_Proxy( IDistributorNotify * This); void __RPC_STUB IDistributorNotify_Stop_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDistributorNotify_Pause_Proxy( IDistributorNotify * This); void __RPC_STUB IDistributorNotify_Pause_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDistributorNotify_Run_Proxy( IDistributorNotify * This, REFERENCE_TIME tStart); void __RPC_STUB IDistributorNotify_Run_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDistributorNotify_SetSyncSource_Proxy( IDistributorNotify * This, /* [in] */ IReferenceClock *pClock); void __RPC_STUB IDistributorNotify_SetSyncSource_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDistributorNotify_NotifyGraphChange_Proxy( IDistributorNotify * This); void __RPC_STUB IDistributorNotify_NotifyGraphChange_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IDistributorNotify_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0155 */ /* [local] */ typedef /* [public] */ enum __MIDL___MIDL_itf_strmif_0155_0001 { AM_STREAM_INFO_START_DEFINED = 0x1, AM_STREAM_INFO_STOP_DEFINED = 0x2, AM_STREAM_INFO_DISCARDING = 0x4, AM_STREAM_INFO_STOP_SEND_EXTRA = 0x10 } AM_STREAM_INFO_FLAGS; typedef /* [public][public] */ struct __MIDL___MIDL_itf_strmif_0155_0002 { REFERENCE_TIME tStart; REFERENCE_TIME tStop; DWORD dwStartCookie; DWORD dwStopCookie; DWORD dwFlags; } AM_STREAM_INFO; extern RPC_IF_HANDLE __MIDL_itf_strmif_0155_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0155_v0_0_s_ifspec; #ifndef __IAMStreamControl_INTERFACE_DEFINED__ #define __IAMStreamControl_INTERFACE_DEFINED__ /* interface IAMStreamControl */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IAMStreamControl; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("36b73881-c2c8-11cf-8b46-00805f6cef60") IAMStreamControl : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE StartAt( /* [in] */ const REFERENCE_TIME *ptStart, /* [in] */ DWORD dwCookie) = 0; virtual HRESULT STDMETHODCALLTYPE StopAt( /* [in] */ const REFERENCE_TIME *ptStop, /* [in] */ BOOL bSendExtra, /* [in] */ DWORD dwCookie) = 0; virtual HRESULT STDMETHODCALLTYPE GetInfo( /* [out] */ AM_STREAM_INFO *pInfo) = 0; }; #else /* C style interface */ typedef struct IAMStreamControlVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMStreamControl * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMStreamControl * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMStreamControl * This); HRESULT ( STDMETHODCALLTYPE *StartAt )( IAMStreamControl * This, /* [in] */ const REFERENCE_TIME *ptStart, /* [in] */ DWORD dwCookie); HRESULT ( STDMETHODCALLTYPE *StopAt )( IAMStreamControl * This, /* [in] */ const REFERENCE_TIME *ptStop, /* [in] */ BOOL bSendExtra, /* [in] */ DWORD dwCookie); HRESULT ( STDMETHODCALLTYPE *GetInfo )( IAMStreamControl * This, /* [out] */ AM_STREAM_INFO *pInfo); END_INTERFACE } IAMStreamControlVtbl; interface IAMStreamControl { CONST_VTBL struct IAMStreamControlVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMStreamControl_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMStreamControl_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMStreamControl_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMStreamControl_StartAt(This,ptStart,dwCookie) \ (This)->lpVtbl -> StartAt(This,ptStart,dwCookie) #define IAMStreamControl_StopAt(This,ptStop,bSendExtra,dwCookie) \ (This)->lpVtbl -> StopAt(This,ptStop,bSendExtra,dwCookie) #define IAMStreamControl_GetInfo(This,pInfo) \ (This)->lpVtbl -> GetInfo(This,pInfo) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMStreamControl_StartAt_Proxy( IAMStreamControl * This, /* [in] */ const REFERENCE_TIME *ptStart, /* [in] */ DWORD dwCookie); void __RPC_STUB IAMStreamControl_StartAt_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMStreamControl_StopAt_Proxy( IAMStreamControl * This, /* [in] */ const REFERENCE_TIME *ptStop, /* [in] */ BOOL bSendExtra, /* [in] */ DWORD dwCookie); void __RPC_STUB IAMStreamControl_StopAt_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMStreamControl_GetInfo_Proxy( IAMStreamControl * This, /* [out] */ AM_STREAM_INFO *pInfo); void __RPC_STUB IAMStreamControl_GetInfo_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMStreamControl_INTERFACE_DEFINED__ */ #ifndef __ISeekingPassThru_INTERFACE_DEFINED__ #define __ISeekingPassThru_INTERFACE_DEFINED__ /* interface ISeekingPassThru */ /* [unique][uuid][object] */ EXTERN_C const IID IID_ISeekingPassThru; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("36b73883-c2c8-11cf-8b46-00805f6cef60") ISeekingPassThru : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE Init( /* [in] */ BOOL bSupportRendering, /* [in] */ IPin *pPin) = 0; }; #else /* C style interface */ typedef struct ISeekingPassThruVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( ISeekingPassThru * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( ISeekingPassThru * This); ULONG ( STDMETHODCALLTYPE *Release )( ISeekingPassThru * This); HRESULT ( STDMETHODCALLTYPE *Init )( ISeekingPassThru * This, /* [in] */ BOOL bSupportRendering, /* [in] */ IPin *pPin); END_INTERFACE } ISeekingPassThruVtbl; interface ISeekingPassThru { CONST_VTBL struct ISeekingPassThruVtbl *lpVtbl; }; #ifdef COBJMACROS #define ISeekingPassThru_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define ISeekingPassThru_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define ISeekingPassThru_Release(This) \ (This)->lpVtbl -> Release(This) #define ISeekingPassThru_Init(This,bSupportRendering,pPin) \ (This)->lpVtbl -> Init(This,bSupportRendering,pPin) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE ISeekingPassThru_Init_Proxy( ISeekingPassThru * This, /* [in] */ BOOL bSupportRendering, /* [in] */ IPin *pPin); void __RPC_STUB ISeekingPassThru_Init_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __ISeekingPassThru_INTERFACE_DEFINED__ */ #ifndef __IAMStreamConfig_INTERFACE_DEFINED__ #define __IAMStreamConfig_INTERFACE_DEFINED__ /* interface IAMStreamConfig */ /* [unique][uuid][object] */ typedef struct _VIDEO_STREAM_CONFIG_CAPS { GUID guid; ULONG VideoStandard; SIZE InputSize; SIZE MinCroppingSize; SIZE MaxCroppingSize; int CropGranularityX; int CropGranularityY; int CropAlignX; int CropAlignY; SIZE MinOutputSize; SIZE MaxOutputSize; int OutputGranularityX; int OutputGranularityY; int StretchTapsX; int StretchTapsY; int ShrinkTapsX; int ShrinkTapsY; LONGLONG MinFrameInterval; LONGLONG MaxFrameInterval; LONG MinBitsPerSecond; LONG MaxBitsPerSecond; } VIDEO_STREAM_CONFIG_CAPS; typedef struct _AUDIO_STREAM_CONFIG_CAPS { GUID guid; ULONG MinimumChannels; ULONG MaximumChannels; ULONG ChannelsGranularity; ULONG MinimumBitsPerSample; ULONG MaximumBitsPerSample; ULONG BitsPerSampleGranularity; ULONG MinimumSampleFrequency; ULONG MaximumSampleFrequency; ULONG SampleFrequencyGranularity; } AUDIO_STREAM_CONFIG_CAPS; EXTERN_C const IID IID_IAMStreamConfig; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("C6E13340-30AC-11d0-A18C-00A0C9118956") IAMStreamConfig : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE SetFormat( /* [in] */ AM_MEDIA_TYPE *pmt) = 0; virtual HRESULT STDMETHODCALLTYPE GetFormat( /* [out] */ AM_MEDIA_TYPE **ppmt) = 0; virtual HRESULT STDMETHODCALLTYPE GetNumberOfCapabilities( /* [out] */ int *piCount, /* [out] */ int *piSize) = 0; virtual HRESULT STDMETHODCALLTYPE GetStreamCaps( /* [in] */ int iIndex, /* [out] */ AM_MEDIA_TYPE **ppmt, /* [out] */ BYTE *pSCC) = 0; }; #else /* C style interface */ typedef struct IAMStreamConfigVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMStreamConfig * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMStreamConfig * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMStreamConfig * This); HRESULT ( STDMETHODCALLTYPE *SetFormat )( IAMStreamConfig * This, /* [in] */ AM_MEDIA_TYPE *pmt); HRESULT ( STDMETHODCALLTYPE *GetFormat )( IAMStreamConfig * This, /* [out] */ AM_MEDIA_TYPE **ppmt); HRESULT ( STDMETHODCALLTYPE *GetNumberOfCapabilities )( IAMStreamConfig * This, /* [out] */ int *piCount, /* [out] */ int *piSize); HRESULT ( STDMETHODCALLTYPE *GetStreamCaps )( IAMStreamConfig * This, /* [in] */ int iIndex, /* [out] */ AM_MEDIA_TYPE **ppmt, /* [out] */ BYTE *pSCC); END_INTERFACE } IAMStreamConfigVtbl; interface IAMStreamConfig { CONST_VTBL struct IAMStreamConfigVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMStreamConfig_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMStreamConfig_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMStreamConfig_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMStreamConfig_SetFormat(This,pmt) \ (This)->lpVtbl -> SetFormat(This,pmt) #define IAMStreamConfig_GetFormat(This,ppmt) \ (This)->lpVtbl -> GetFormat(This,ppmt) #define IAMStreamConfig_GetNumberOfCapabilities(This,piCount,piSize) \ (This)->lpVtbl -> GetNumberOfCapabilities(This,piCount,piSize) #define IAMStreamConfig_GetStreamCaps(This,iIndex,ppmt,pSCC) \ (This)->lpVtbl -> GetStreamCaps(This,iIndex,ppmt,pSCC) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMStreamConfig_SetFormat_Proxy( IAMStreamConfig * This, /* [in] */ AM_MEDIA_TYPE *pmt); void __RPC_STUB IAMStreamConfig_SetFormat_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMStreamConfig_GetFormat_Proxy( IAMStreamConfig * This, /* [out] */ AM_MEDIA_TYPE **ppmt); void __RPC_STUB IAMStreamConfig_GetFormat_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMStreamConfig_GetNumberOfCapabilities_Proxy( IAMStreamConfig * This, /* [out] */ int *piCount, /* [out] */ int *piSize); void __RPC_STUB IAMStreamConfig_GetNumberOfCapabilities_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMStreamConfig_GetStreamCaps_Proxy( IAMStreamConfig * This, /* [in] */ int iIndex, /* [out] */ AM_MEDIA_TYPE **ppmt, /* [out] */ BYTE *pSCC); void __RPC_STUB IAMStreamConfig_GetStreamCaps_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMStreamConfig_INTERFACE_DEFINED__ */ #ifndef __IConfigInterleaving_INTERFACE_DEFINED__ #define __IConfigInterleaving_INTERFACE_DEFINED__ /* interface IConfigInterleaving */ /* [unique][uuid][object] */ typedef /* [public][public][public] */ enum __MIDL_IConfigInterleaving_0001 { INTERLEAVE_NONE = 0, INTERLEAVE_CAPTURE = INTERLEAVE_NONE + 1, INTERLEAVE_FULL = INTERLEAVE_CAPTURE + 1, INTERLEAVE_NONE_BUFFERED = INTERLEAVE_FULL + 1 } InterleavingMode; EXTERN_C const IID IID_IConfigInterleaving; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("BEE3D220-157B-11d0-BD23-00A0C911CE86") IConfigInterleaving : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE put_Mode( /* [in] */ InterleavingMode mode) = 0; virtual HRESULT STDMETHODCALLTYPE get_Mode( /* [out] */ InterleavingMode *pMode) = 0; virtual HRESULT STDMETHODCALLTYPE put_Interleaving( /* [in] */ const REFERENCE_TIME *prtInterleave, /* [in] */ const REFERENCE_TIME *prtPreroll) = 0; virtual HRESULT STDMETHODCALLTYPE get_Interleaving( /* [out] */ REFERENCE_TIME *prtInterleave, /* [out] */ REFERENCE_TIME *prtPreroll) = 0; }; #else /* C style interface */ typedef struct IConfigInterleavingVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IConfigInterleaving * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IConfigInterleaving * This); ULONG ( STDMETHODCALLTYPE *Release )( IConfigInterleaving * This); HRESULT ( STDMETHODCALLTYPE *put_Mode )( IConfigInterleaving * This, /* [in] */ InterleavingMode mode); HRESULT ( STDMETHODCALLTYPE *get_Mode )( IConfigInterleaving * This, /* [out] */ InterleavingMode *pMode); HRESULT ( STDMETHODCALLTYPE *put_Interleaving )( IConfigInterleaving * This, /* [in] */ const REFERENCE_TIME *prtInterleave, /* [in] */ const REFERENCE_TIME *prtPreroll); HRESULT ( STDMETHODCALLTYPE *get_Interleaving )( IConfigInterleaving * This, /* [out] */ REFERENCE_TIME *prtInterleave, /* [out] */ REFERENCE_TIME *prtPreroll); END_INTERFACE } IConfigInterleavingVtbl; interface IConfigInterleaving { CONST_VTBL struct IConfigInterleavingVtbl *lpVtbl; }; #ifdef COBJMACROS #define IConfigInterleaving_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IConfigInterleaving_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IConfigInterleaving_Release(This) \ (This)->lpVtbl -> Release(This) #define IConfigInterleaving_put_Mode(This,mode) \ (This)->lpVtbl -> put_Mode(This,mode) #define IConfigInterleaving_get_Mode(This,pMode) \ (This)->lpVtbl -> get_Mode(This,pMode) #define IConfigInterleaving_put_Interleaving(This,prtInterleave,prtPreroll) \ (This)->lpVtbl -> put_Interleaving(This,prtInterleave,prtPreroll) #define IConfigInterleaving_get_Interleaving(This,prtInterleave,prtPreroll) \ (This)->lpVtbl -> get_Interleaving(This,prtInterleave,prtPreroll) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IConfigInterleaving_put_Mode_Proxy( IConfigInterleaving * This, /* [in] */ InterleavingMode mode); void __RPC_STUB IConfigInterleaving_put_Mode_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IConfigInterleaving_get_Mode_Proxy( IConfigInterleaving * This, /* [out] */ InterleavingMode *pMode); void __RPC_STUB IConfigInterleaving_get_Mode_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IConfigInterleaving_put_Interleaving_Proxy( IConfigInterleaving * This, /* [in] */ const REFERENCE_TIME *prtInterleave, /* [in] */ const REFERENCE_TIME *prtPreroll); void __RPC_STUB IConfigInterleaving_put_Interleaving_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IConfigInterleaving_get_Interleaving_Proxy( IConfigInterleaving * This, /* [out] */ REFERENCE_TIME *prtInterleave, /* [out] */ REFERENCE_TIME *prtPreroll); void __RPC_STUB IConfigInterleaving_get_Interleaving_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IConfigInterleaving_INTERFACE_DEFINED__ */ #ifndef __IConfigAviMux_INTERFACE_DEFINED__ #define __IConfigAviMux_INTERFACE_DEFINED__ /* interface IConfigAviMux */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IConfigAviMux; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("5ACD6AA0-F482-11ce-8B67-00AA00A3F1A6") IConfigAviMux : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE SetMasterStream( /* [in] */ LONG iStream) = 0; virtual HRESULT STDMETHODCALLTYPE GetMasterStream( /* [out] */ LONG *pStream) = 0; virtual HRESULT STDMETHODCALLTYPE SetOutputCompatibilityIndex( /* [in] */ BOOL fOldIndex) = 0; virtual HRESULT STDMETHODCALLTYPE GetOutputCompatibilityIndex( /* [out] */ BOOL *pfOldIndex) = 0; }; #else /* C style interface */ typedef struct IConfigAviMuxVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IConfigAviMux * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IConfigAviMux * This); ULONG ( STDMETHODCALLTYPE *Release )( IConfigAviMux * This); HRESULT ( STDMETHODCALLTYPE *SetMasterStream )( IConfigAviMux * This, /* [in] */ LONG iStream); HRESULT ( STDMETHODCALLTYPE *GetMasterStream )( IConfigAviMux * This, /* [out] */ LONG *pStream); HRESULT ( STDMETHODCALLTYPE *SetOutputCompatibilityIndex )( IConfigAviMux * This, /* [in] */ BOOL fOldIndex); HRESULT ( STDMETHODCALLTYPE *GetOutputCompatibilityIndex )( IConfigAviMux * This, /* [out] */ BOOL *pfOldIndex); END_INTERFACE } IConfigAviMuxVtbl; interface IConfigAviMux { CONST_VTBL struct IConfigAviMuxVtbl *lpVtbl; }; #ifdef COBJMACROS #define IConfigAviMux_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IConfigAviMux_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IConfigAviMux_Release(This) \ (This)->lpVtbl -> Release(This) #define IConfigAviMux_SetMasterStream(This,iStream) \ (This)->lpVtbl -> SetMasterStream(This,iStream) #define IConfigAviMux_GetMasterStream(This,pStream) \ (This)->lpVtbl -> GetMasterStream(This,pStream) #define IConfigAviMux_SetOutputCompatibilityIndex(This,fOldIndex) \ (This)->lpVtbl -> SetOutputCompatibilityIndex(This,fOldIndex) #define IConfigAviMux_GetOutputCompatibilityIndex(This,pfOldIndex) \ (This)->lpVtbl -> GetOutputCompatibilityIndex(This,pfOldIndex) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IConfigAviMux_SetMasterStream_Proxy( IConfigAviMux * This, /* [in] */ LONG iStream); void __RPC_STUB IConfigAviMux_SetMasterStream_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IConfigAviMux_GetMasterStream_Proxy( IConfigAviMux * This, /* [out] */ LONG *pStream); void __RPC_STUB IConfigAviMux_GetMasterStream_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IConfigAviMux_SetOutputCompatibilityIndex_Proxy( IConfigAviMux * This, /* [in] */ BOOL fOldIndex); void __RPC_STUB IConfigAviMux_SetOutputCompatibilityIndex_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IConfigAviMux_GetOutputCompatibilityIndex_Proxy( IConfigAviMux * This, /* [out] */ BOOL *pfOldIndex); void __RPC_STUB IConfigAviMux_GetOutputCompatibilityIndex_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IConfigAviMux_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0162 */ /* [local] */ typedef /* [public] */ enum __MIDL___MIDL_itf_strmif_0162_0001 { CompressionCaps_CanQuality = 0x1, CompressionCaps_CanCrunch = 0x2, CompressionCaps_CanKeyFrame = 0x4, CompressionCaps_CanBFrame = 0x8, CompressionCaps_CanWindow = 0x10 } CompressionCaps; extern RPC_IF_HANDLE __MIDL_itf_strmif_0162_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0162_v0_0_s_ifspec; #ifndef __IAMVideoCompression_INTERFACE_DEFINED__ #define __IAMVideoCompression_INTERFACE_DEFINED__ /* interface IAMVideoCompression */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IAMVideoCompression; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("C6E13343-30AC-11d0-A18C-00A0C9118956") IAMVideoCompression : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE put_KeyFrameRate( /* [in] */ long KeyFrameRate) = 0; virtual HRESULT STDMETHODCALLTYPE get_KeyFrameRate( /* [out] */ long *pKeyFrameRate) = 0; virtual HRESULT STDMETHODCALLTYPE put_PFramesPerKeyFrame( /* [in] */ long PFramesPerKeyFrame) = 0; virtual HRESULT STDMETHODCALLTYPE get_PFramesPerKeyFrame( /* [out] */ long *pPFramesPerKeyFrame) = 0; virtual HRESULT STDMETHODCALLTYPE put_Quality( /* [in] */ double Quality) = 0; virtual HRESULT STDMETHODCALLTYPE get_Quality( /* [out] */ double *pQuality) = 0; virtual HRESULT STDMETHODCALLTYPE put_WindowSize( /* [in] */ DWORDLONG WindowSize) = 0; virtual HRESULT STDMETHODCALLTYPE get_WindowSize( /* [out] */ DWORDLONG *pWindowSize) = 0; virtual HRESULT STDMETHODCALLTYPE GetInfo( /* [size_is][out] */ WCHAR *pszVersion, /* [out][in] */ int *pcbVersion, /* [size_is][out] */ LPWSTR pszDescription, /* [out][in] */ int *pcbDescription, /* [out] */ long *pDefaultKeyFrameRate, /* [out] */ long *pDefaultPFramesPerKey, /* [out] */ double *pDefaultQuality, /* [out] */ long *pCapabilities) = 0; virtual HRESULT STDMETHODCALLTYPE OverrideKeyFrame( /* [in] */ long FrameNumber) = 0; virtual HRESULT STDMETHODCALLTYPE OverrideFrameSize( /* [in] */ long FrameNumber, /* [in] */ long Size) = 0; }; #else /* C style interface */ typedef struct IAMVideoCompressionVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMVideoCompression * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMVideoCompression * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMVideoCompression * This); HRESULT ( STDMETHODCALLTYPE *put_KeyFrameRate )( IAMVideoCompression * This, /* [in] */ long KeyFrameRate); HRESULT ( STDMETHODCALLTYPE *get_KeyFrameRate )( IAMVideoCompression * This, /* [out] */ long *pKeyFrameRate); HRESULT ( STDMETHODCALLTYPE *put_PFramesPerKeyFrame )( IAMVideoCompression * This, /* [in] */ long PFramesPerKeyFrame); HRESULT ( STDMETHODCALLTYPE *get_PFramesPerKeyFrame )( IAMVideoCompression * This, /* [out] */ long *pPFramesPerKeyFrame); HRESULT ( STDMETHODCALLTYPE *put_Quality )( IAMVideoCompression * This, /* [in] */ double Quality); HRESULT ( STDMETHODCALLTYPE *get_Quality )( IAMVideoCompression * This, /* [out] */ double *pQuality); HRESULT ( STDMETHODCALLTYPE *put_WindowSize )( IAMVideoCompression * This, /* [in] */ DWORDLONG WindowSize); HRESULT ( STDMETHODCALLTYPE *get_WindowSize )( IAMVideoCompression * This, /* [out] */ DWORDLONG *pWindowSize); HRESULT ( STDMETHODCALLTYPE *GetInfo )( IAMVideoCompression * This, /* [size_is][out] */ WCHAR *pszVersion, /* [out][in] */ int *pcbVersion, /* [size_is][out] */ LPWSTR pszDescription, /* [out][in] */ int *pcbDescription, /* [out] */ long *pDefaultKeyFrameRate, /* [out] */ long *pDefaultPFramesPerKey, /* [out] */ double *pDefaultQuality, /* [out] */ long *pCapabilities); HRESULT ( STDMETHODCALLTYPE *OverrideKeyFrame )( IAMVideoCompression * This, /* [in] */ long FrameNumber); HRESULT ( STDMETHODCALLTYPE *OverrideFrameSize )( IAMVideoCompression * This, /* [in] */ long FrameNumber, /* [in] */ long Size); END_INTERFACE } IAMVideoCompressionVtbl; interface IAMVideoCompression { CONST_VTBL struct IAMVideoCompressionVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMVideoCompression_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMVideoCompression_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMVideoCompression_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMVideoCompression_put_KeyFrameRate(This,KeyFrameRate) \ (This)->lpVtbl -> put_KeyFrameRate(This,KeyFrameRate) #define IAMVideoCompression_get_KeyFrameRate(This,pKeyFrameRate) \ (This)->lpVtbl -> get_KeyFrameRate(This,pKeyFrameRate) #define IAMVideoCompression_put_PFramesPerKeyFrame(This,PFramesPerKeyFrame) \ (This)->lpVtbl -> put_PFramesPerKeyFrame(This,PFramesPerKeyFrame) #define IAMVideoCompression_get_PFramesPerKeyFrame(This,pPFramesPerKeyFrame) \ (This)->lpVtbl -> get_PFramesPerKeyFrame(This,pPFramesPerKeyFrame) #define IAMVideoCompression_put_Quality(This,Quality) \ (This)->lpVtbl -> put_Quality(This,Quality) #define IAMVideoCompression_get_Quality(This,pQuality) \ (This)->lpVtbl -> get_Quality(This,pQuality) #define IAMVideoCompression_put_WindowSize(This,WindowSize) \ (This)->lpVtbl -> put_WindowSize(This,WindowSize) #define IAMVideoCompression_get_WindowSize(This,pWindowSize) \ (This)->lpVtbl -> get_WindowSize(This,pWindowSize) #define IAMVideoCompression_GetInfo(This,pszVersion,pcbVersion,pszDescription,pcbDescription,pDefaultKeyFrameRate,pDefaultPFramesPerKey,pDefaultQuality,pCapabilities) \ (This)->lpVtbl -> GetInfo(This,pszVersion,pcbVersion,pszDescription,pcbDescription,pDefaultKeyFrameRate,pDefaultPFramesPerKey,pDefaultQuality,pCapabilities) #define IAMVideoCompression_OverrideKeyFrame(This,FrameNumber) \ (This)->lpVtbl -> OverrideKeyFrame(This,FrameNumber) #define IAMVideoCompression_OverrideFrameSize(This,FrameNumber,Size) \ (This)->lpVtbl -> OverrideFrameSize(This,FrameNumber,Size) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMVideoCompression_put_KeyFrameRate_Proxy( IAMVideoCompression * This, /* [in] */ long KeyFrameRate); void __RPC_STUB IAMVideoCompression_put_KeyFrameRate_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMVideoCompression_get_KeyFrameRate_Proxy( IAMVideoCompression * This, /* [out] */ long *pKeyFrameRate); void __RPC_STUB IAMVideoCompression_get_KeyFrameRate_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMVideoCompression_put_PFramesPerKeyFrame_Proxy( IAMVideoCompression * This, /* [in] */ long PFramesPerKeyFrame); void __RPC_STUB IAMVideoCompression_put_PFramesPerKeyFrame_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMVideoCompression_get_PFramesPerKeyFrame_Proxy( IAMVideoCompression * This, /* [out] */ long *pPFramesPerKeyFrame); void __RPC_STUB IAMVideoCompression_get_PFramesPerKeyFrame_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMVideoCompression_put_Quality_Proxy( IAMVideoCompression * This, /* [in] */ double Quality); void __RPC_STUB IAMVideoCompression_put_Quality_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMVideoCompression_get_Quality_Proxy( IAMVideoCompression * This, /* [out] */ double *pQuality); void __RPC_STUB IAMVideoCompression_get_Quality_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMVideoCompression_put_WindowSize_Proxy( IAMVideoCompression * This, /* [in] */ DWORDLONG WindowSize); void __RPC_STUB IAMVideoCompression_put_WindowSize_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMVideoCompression_get_WindowSize_Proxy( IAMVideoCompression * This, /* [out] */ DWORDLONG *pWindowSize); void __RPC_STUB IAMVideoCompression_get_WindowSize_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMVideoCompression_GetInfo_Proxy( IAMVideoCompression * This, /* [size_is][out] */ WCHAR *pszVersion, /* [out][in] */ int *pcbVersion, /* [size_is][out] */ LPWSTR pszDescription, /* [out][in] */ int *pcbDescription, /* [out] */ long *pDefaultKeyFrameRate, /* [out] */ long *pDefaultPFramesPerKey, /* [out] */ double *pDefaultQuality, /* [out] */ long *pCapabilities); void __RPC_STUB IAMVideoCompression_GetInfo_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMVideoCompression_OverrideKeyFrame_Proxy( IAMVideoCompression * This, /* [in] */ long FrameNumber); void __RPC_STUB IAMVideoCompression_OverrideKeyFrame_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMVideoCompression_OverrideFrameSize_Proxy( IAMVideoCompression * This, /* [in] */ long FrameNumber, /* [in] */ long Size); void __RPC_STUB IAMVideoCompression_OverrideFrameSize_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMVideoCompression_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0163 */ /* [local] */ typedef /* [public] */ enum __MIDL___MIDL_itf_strmif_0163_0001 { VfwCaptureDialog_Source = 0x1, VfwCaptureDialog_Format = 0x2, VfwCaptureDialog_Display = 0x4 } VfwCaptureDialogs; typedef /* [public] */ enum __MIDL___MIDL_itf_strmif_0163_0002 { VfwCompressDialog_Config = 0x1, VfwCompressDialog_About = 0x2, VfwCompressDialog_QueryConfig = 0x4, VfwCompressDialog_QueryAbout = 0x8 } VfwCompressDialogs; extern RPC_IF_HANDLE __MIDL_itf_strmif_0163_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0163_v0_0_s_ifspec; #ifndef __IAMVfwCaptureDialogs_INTERFACE_DEFINED__ #define __IAMVfwCaptureDialogs_INTERFACE_DEFINED__ /* interface IAMVfwCaptureDialogs */ /* [unique][uuid][local][object] */ EXTERN_C const IID IID_IAMVfwCaptureDialogs; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("D8D715A0-6E5E-11D0-B3F0-00AA003761C5") IAMVfwCaptureDialogs : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE HasDialog( /* [in] */ int iDialog) = 0; virtual HRESULT STDMETHODCALLTYPE ShowDialog( /* [in] */ int iDialog, /* [in] */ HWND hwnd) = 0; virtual HRESULT STDMETHODCALLTYPE SendDriverMessage( /* [in] */ int iDialog, /* [in] */ int uMsg, /* [in] */ long dw1, /* [in] */ long dw2) = 0; }; #else /* C style interface */ typedef struct IAMVfwCaptureDialogsVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMVfwCaptureDialogs * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMVfwCaptureDialogs * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMVfwCaptureDialogs * This); HRESULT ( STDMETHODCALLTYPE *HasDialog )( IAMVfwCaptureDialogs * This, /* [in] */ int iDialog); HRESULT ( STDMETHODCALLTYPE *ShowDialog )( IAMVfwCaptureDialogs * This, /* [in] */ int iDialog, /* [in] */ HWND hwnd); HRESULT ( STDMETHODCALLTYPE *SendDriverMessage )( IAMVfwCaptureDialogs * This, /* [in] */ int iDialog, /* [in] */ int uMsg, /* [in] */ long dw1, /* [in] */ long dw2); END_INTERFACE } IAMVfwCaptureDialogsVtbl; interface IAMVfwCaptureDialogs { CONST_VTBL struct IAMVfwCaptureDialogsVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMVfwCaptureDialogs_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMVfwCaptureDialogs_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMVfwCaptureDialogs_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMVfwCaptureDialogs_HasDialog(This,iDialog) \ (This)->lpVtbl -> HasDialog(This,iDialog) #define IAMVfwCaptureDialogs_ShowDialog(This,iDialog,hwnd) \ (This)->lpVtbl -> ShowDialog(This,iDialog,hwnd) #define IAMVfwCaptureDialogs_SendDriverMessage(This,iDialog,uMsg,dw1,dw2) \ (This)->lpVtbl -> SendDriverMessage(This,iDialog,uMsg,dw1,dw2) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMVfwCaptureDialogs_HasDialog_Proxy( IAMVfwCaptureDialogs * This, /* [in] */ int iDialog); void __RPC_STUB IAMVfwCaptureDialogs_HasDialog_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMVfwCaptureDialogs_ShowDialog_Proxy( IAMVfwCaptureDialogs * This, /* [in] */ int iDialog, /* [in] */ HWND hwnd); void __RPC_STUB IAMVfwCaptureDialogs_ShowDialog_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMVfwCaptureDialogs_SendDriverMessage_Proxy( IAMVfwCaptureDialogs * This, /* [in] */ int iDialog, /* [in] */ int uMsg, /* [in] */ long dw1, /* [in] */ long dw2); void __RPC_STUB IAMVfwCaptureDialogs_SendDriverMessage_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMVfwCaptureDialogs_INTERFACE_DEFINED__ */ #ifndef __IAMVfwCompressDialogs_INTERFACE_DEFINED__ #define __IAMVfwCompressDialogs_INTERFACE_DEFINED__ /* interface IAMVfwCompressDialogs */ /* [unique][uuid][local][object] */ EXTERN_C const IID IID_IAMVfwCompressDialogs; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("D8D715A3-6E5E-11D0-B3F0-00AA003761C5") IAMVfwCompressDialogs : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE ShowDialog( /* [in] */ int iDialog, /* [in] */ HWND hwnd) = 0; virtual HRESULT STDMETHODCALLTYPE GetState( /* [size_is][out] */ LPVOID pState, /* [out][in] */ int *pcbState) = 0; virtual HRESULT STDMETHODCALLTYPE SetState( /* [size_is][in] */ LPVOID pState, /* [in] */ int cbState) = 0; virtual HRESULT STDMETHODCALLTYPE SendDriverMessage( /* [in] */ int uMsg, /* [in] */ long dw1, /* [in] */ long dw2) = 0; }; #else /* C style interface */ typedef struct IAMVfwCompressDialogsVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMVfwCompressDialogs * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMVfwCompressDialogs * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMVfwCompressDialogs * This); HRESULT ( STDMETHODCALLTYPE *ShowDialog )( IAMVfwCompressDialogs * This, /* [in] */ int iDialog, /* [in] */ HWND hwnd); HRESULT ( STDMETHODCALLTYPE *GetState )( IAMVfwCompressDialogs * This, /* [size_is][out] */ LPVOID pState, /* [out][in] */ int *pcbState); HRESULT ( STDMETHODCALLTYPE *SetState )( IAMVfwCompressDialogs * This, /* [size_is][in] */ LPVOID pState, /* [in] */ int cbState); HRESULT ( STDMETHODCALLTYPE *SendDriverMessage )( IAMVfwCompressDialogs * This, /* [in] */ int uMsg, /* [in] */ long dw1, /* [in] */ long dw2); END_INTERFACE } IAMVfwCompressDialogsVtbl; interface IAMVfwCompressDialogs { CONST_VTBL struct IAMVfwCompressDialogsVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMVfwCompressDialogs_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMVfwCompressDialogs_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMVfwCompressDialogs_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMVfwCompressDialogs_ShowDialog(This,iDialog,hwnd) \ (This)->lpVtbl -> ShowDialog(This,iDialog,hwnd) #define IAMVfwCompressDialogs_GetState(This,pState,pcbState) \ (This)->lpVtbl -> GetState(This,pState,pcbState) #define IAMVfwCompressDialogs_SetState(This,pState,cbState) \ (This)->lpVtbl -> SetState(This,pState,cbState) #define IAMVfwCompressDialogs_SendDriverMessage(This,uMsg,dw1,dw2) \ (This)->lpVtbl -> SendDriverMessage(This,uMsg,dw1,dw2) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMVfwCompressDialogs_ShowDialog_Proxy( IAMVfwCompressDialogs * This, /* [in] */ int iDialog, /* [in] */ HWND hwnd); void __RPC_STUB IAMVfwCompressDialogs_ShowDialog_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMVfwCompressDialogs_GetState_Proxy( IAMVfwCompressDialogs * This, /* [size_is][out] */ LPVOID pState, /* [out][in] */ int *pcbState); void __RPC_STUB IAMVfwCompressDialogs_GetState_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMVfwCompressDialogs_SetState_Proxy( IAMVfwCompressDialogs * This, /* [size_is][in] */ LPVOID pState, /* [in] */ int cbState); void __RPC_STUB IAMVfwCompressDialogs_SetState_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMVfwCompressDialogs_SendDriverMessage_Proxy( IAMVfwCompressDialogs * This, /* [in] */ int uMsg, /* [in] */ long dw1, /* [in] */ long dw2); void __RPC_STUB IAMVfwCompressDialogs_SendDriverMessage_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMVfwCompressDialogs_INTERFACE_DEFINED__ */ #ifndef __IAMDroppedFrames_INTERFACE_DEFINED__ #define __IAMDroppedFrames_INTERFACE_DEFINED__ /* interface IAMDroppedFrames */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IAMDroppedFrames; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("C6E13344-30AC-11d0-A18C-00A0C9118956") IAMDroppedFrames : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE GetNumDropped( /* [out] */ long *plDropped) = 0; virtual HRESULT STDMETHODCALLTYPE GetNumNotDropped( /* [out] */ long *plNotDropped) = 0; virtual HRESULT STDMETHODCALLTYPE GetDroppedInfo( /* [in] */ long lSize, /* [out] */ long *plArray, /* [out] */ long *plNumCopied) = 0; virtual HRESULT STDMETHODCALLTYPE GetAverageFrameSize( /* [out] */ long *plAverageSize) = 0; }; #else /* C style interface */ typedef struct IAMDroppedFramesVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMDroppedFrames * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMDroppedFrames * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMDroppedFrames * This); HRESULT ( STDMETHODCALLTYPE *GetNumDropped )( IAMDroppedFrames * This, /* [out] */ long *plDropped); HRESULT ( STDMETHODCALLTYPE *GetNumNotDropped )( IAMDroppedFrames * This, /* [out] */ long *plNotDropped); HRESULT ( STDMETHODCALLTYPE *GetDroppedInfo )( IAMDroppedFrames * This, /* [in] */ long lSize, /* [out] */ long *plArray, /* [out] */ long *plNumCopied); HRESULT ( STDMETHODCALLTYPE *GetAverageFrameSize )( IAMDroppedFrames * This, /* [out] */ long *plAverageSize); END_INTERFACE } IAMDroppedFramesVtbl; interface IAMDroppedFrames { CONST_VTBL struct IAMDroppedFramesVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMDroppedFrames_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMDroppedFrames_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMDroppedFrames_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMDroppedFrames_GetNumDropped(This,plDropped) \ (This)->lpVtbl -> GetNumDropped(This,plDropped) #define IAMDroppedFrames_GetNumNotDropped(This,plNotDropped) \ (This)->lpVtbl -> GetNumNotDropped(This,plNotDropped) #define IAMDroppedFrames_GetDroppedInfo(This,lSize,plArray,plNumCopied) \ (This)->lpVtbl -> GetDroppedInfo(This,lSize,plArray,plNumCopied) #define IAMDroppedFrames_GetAverageFrameSize(This,plAverageSize) \ (This)->lpVtbl -> GetAverageFrameSize(This,plAverageSize) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMDroppedFrames_GetNumDropped_Proxy( IAMDroppedFrames * This, /* [out] */ long *plDropped); void __RPC_STUB IAMDroppedFrames_GetNumDropped_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMDroppedFrames_GetNumNotDropped_Proxy( IAMDroppedFrames * This, /* [out] */ long *plNotDropped); void __RPC_STUB IAMDroppedFrames_GetNumNotDropped_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMDroppedFrames_GetDroppedInfo_Proxy( IAMDroppedFrames * This, /* [in] */ long lSize, /* [out] */ long *plArray, /* [out] */ long *plNumCopied); void __RPC_STUB IAMDroppedFrames_GetDroppedInfo_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMDroppedFrames_GetAverageFrameSize_Proxy( IAMDroppedFrames * This, /* [out] */ long *plAverageSize); void __RPC_STUB IAMDroppedFrames_GetAverageFrameSize_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMDroppedFrames_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0166 */ /* [local] */ #define AMF_AUTOMATICGAIN -1.0 extern RPC_IF_HANDLE __MIDL_itf_strmif_0166_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0166_v0_0_s_ifspec; #ifndef __IAMAudioInputMixer_INTERFACE_DEFINED__ #define __IAMAudioInputMixer_INTERFACE_DEFINED__ /* interface IAMAudioInputMixer */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IAMAudioInputMixer; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("54C39221-8380-11d0-B3F0-00AA003761C5") IAMAudioInputMixer : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE put_Enable( /* [in] */ BOOL fEnable) = 0; virtual HRESULT STDMETHODCALLTYPE get_Enable( /* [out] */ BOOL *pfEnable) = 0; virtual HRESULT STDMETHODCALLTYPE put_Mono( /* [in] */ BOOL fMono) = 0; virtual HRESULT STDMETHODCALLTYPE get_Mono( /* [out] */ BOOL *pfMono) = 0; virtual HRESULT STDMETHODCALLTYPE put_MixLevel( /* [in] */ double Level) = 0; virtual HRESULT STDMETHODCALLTYPE get_MixLevel( /* [out] */ double *pLevel) = 0; virtual HRESULT STDMETHODCALLTYPE put_Pan( /* [in] */ double Pan) = 0; virtual HRESULT STDMETHODCALLTYPE get_Pan( /* [out] */ double *pPan) = 0; virtual HRESULT STDMETHODCALLTYPE put_Loudness( /* [in] */ BOOL fLoudness) = 0; virtual HRESULT STDMETHODCALLTYPE get_Loudness( /* [out] */ BOOL *pfLoudness) = 0; virtual HRESULT STDMETHODCALLTYPE put_Treble( /* [in] */ double Treble) = 0; virtual HRESULT STDMETHODCALLTYPE get_Treble( /* [out] */ double *pTreble) = 0; virtual HRESULT STDMETHODCALLTYPE get_TrebleRange( /* [out] */ double *pRange) = 0; virtual HRESULT STDMETHODCALLTYPE put_Bass( /* [in] */ double Bass) = 0; virtual HRESULT STDMETHODCALLTYPE get_Bass( /* [out] */ double *pBass) = 0; virtual HRESULT STDMETHODCALLTYPE get_BassRange( /* [out] */ double *pRange) = 0; }; #else /* C style interface */ typedef struct IAMAudioInputMixerVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMAudioInputMixer * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMAudioInputMixer * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMAudioInputMixer * This); HRESULT ( STDMETHODCALLTYPE *put_Enable )( IAMAudioInputMixer * This, /* [in] */ BOOL fEnable); HRESULT ( STDMETHODCALLTYPE *get_Enable )( IAMAudioInputMixer * This, /* [out] */ BOOL *pfEnable); HRESULT ( STDMETHODCALLTYPE *put_Mono )( IAMAudioInputMixer * This, /* [in] */ BOOL fMono); HRESULT ( STDMETHODCALLTYPE *get_Mono )( IAMAudioInputMixer * This, /* [out] */ BOOL *pfMono); HRESULT ( STDMETHODCALLTYPE *put_MixLevel )( IAMAudioInputMixer * This, /* [in] */ double Level); HRESULT ( STDMETHODCALLTYPE *get_MixLevel )( IAMAudioInputMixer * This, /* [out] */ double *pLevel); HRESULT ( STDMETHODCALLTYPE *put_Pan )( IAMAudioInputMixer * This, /* [in] */ double Pan); HRESULT ( STDMETHODCALLTYPE *get_Pan )( IAMAudioInputMixer * This, /* [out] */ double *pPan); HRESULT ( STDMETHODCALLTYPE *put_Loudness )( IAMAudioInputMixer * This, /* [in] */ BOOL fLoudness); HRESULT ( STDMETHODCALLTYPE *get_Loudness )( IAMAudioInputMixer * This, /* [out] */ BOOL *pfLoudness); HRESULT ( STDMETHODCALLTYPE *put_Treble )( IAMAudioInputMixer * This, /* [in] */ double Treble); HRESULT ( STDMETHODCALLTYPE *get_Treble )( IAMAudioInputMixer * This, /* [out] */ double *pTreble); HRESULT ( STDMETHODCALLTYPE *get_TrebleRange )( IAMAudioInputMixer * This, /* [out] */ double *pRange); HRESULT ( STDMETHODCALLTYPE *put_Bass )( IAMAudioInputMixer * This, /* [in] */ double Bass); HRESULT ( STDMETHODCALLTYPE *get_Bass )( IAMAudioInputMixer * This, /* [out] */ double *pBass); HRESULT ( STDMETHODCALLTYPE *get_BassRange )( IAMAudioInputMixer * This, /* [out] */ double *pRange); END_INTERFACE } IAMAudioInputMixerVtbl; interface IAMAudioInputMixer { CONST_VTBL struct IAMAudioInputMixerVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMAudioInputMixer_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMAudioInputMixer_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMAudioInputMixer_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMAudioInputMixer_put_Enable(This,fEnable) \ (This)->lpVtbl -> put_Enable(This,fEnable) #define IAMAudioInputMixer_get_Enable(This,pfEnable) \ (This)->lpVtbl -> get_Enable(This,pfEnable) #define IAMAudioInputMixer_put_Mono(This,fMono) \ (This)->lpVtbl -> put_Mono(This,fMono) #define IAMAudioInputMixer_get_Mono(This,pfMono) \ (This)->lpVtbl -> get_Mono(This,pfMono) #define IAMAudioInputMixer_put_MixLevel(This,Level) \ (This)->lpVtbl -> put_MixLevel(This,Level) #define IAMAudioInputMixer_get_MixLevel(This,pLevel) \ (This)->lpVtbl -> get_MixLevel(This,pLevel) #define IAMAudioInputMixer_put_Pan(This,Pan) \ (This)->lpVtbl -> put_Pan(This,Pan) #define IAMAudioInputMixer_get_Pan(This,pPan) \ (This)->lpVtbl -> get_Pan(This,pPan) #define IAMAudioInputMixer_put_Loudness(This,fLoudness) \ (This)->lpVtbl -> put_Loudness(This,fLoudness) #define IAMAudioInputMixer_get_Loudness(This,pfLoudness) \ (This)->lpVtbl -> get_Loudness(This,pfLoudness) #define IAMAudioInputMixer_put_Treble(This,Treble) \ (This)->lpVtbl -> put_Treble(This,Treble) #define IAMAudioInputMixer_get_Treble(This,pTreble) \ (This)->lpVtbl -> get_Treble(This,pTreble) #define IAMAudioInputMixer_get_TrebleRange(This,pRange) \ (This)->lpVtbl -> get_TrebleRange(This,pRange) #define IAMAudioInputMixer_put_Bass(This,Bass) \ (This)->lpVtbl -> put_Bass(This,Bass) #define IAMAudioInputMixer_get_Bass(This,pBass) \ (This)->lpVtbl -> get_Bass(This,pBass) #define IAMAudioInputMixer_get_BassRange(This,pRange) \ (This)->lpVtbl -> get_BassRange(This,pRange) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMAudioInputMixer_put_Enable_Proxy( IAMAudioInputMixer * This, /* [in] */ BOOL fEnable); void __RPC_STUB IAMAudioInputMixer_put_Enable_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMAudioInputMixer_get_Enable_Proxy( IAMAudioInputMixer * This, /* [out] */ BOOL *pfEnable); void __RPC_STUB IAMAudioInputMixer_get_Enable_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMAudioInputMixer_put_Mono_Proxy( IAMAudioInputMixer * This, /* [in] */ BOOL fMono); void __RPC_STUB IAMAudioInputMixer_put_Mono_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMAudioInputMixer_get_Mono_Proxy( IAMAudioInputMixer * This, /* [out] */ BOOL *pfMono); void __RPC_STUB IAMAudioInputMixer_get_Mono_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMAudioInputMixer_put_MixLevel_Proxy( IAMAudioInputMixer * This, /* [in] */ double Level); void __RPC_STUB IAMAudioInputMixer_put_MixLevel_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMAudioInputMixer_get_MixLevel_Proxy( IAMAudioInputMixer * This, /* [out] */ double *pLevel); void __RPC_STUB IAMAudioInputMixer_get_MixLevel_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMAudioInputMixer_put_Pan_Proxy( IAMAudioInputMixer * This, /* [in] */ double Pan); void __RPC_STUB IAMAudioInputMixer_put_Pan_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMAudioInputMixer_get_Pan_Proxy( IAMAudioInputMixer * This, /* [out] */ double *pPan); void __RPC_STUB IAMAudioInputMixer_get_Pan_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMAudioInputMixer_put_Loudness_Proxy( IAMAudioInputMixer * This, /* [in] */ BOOL fLoudness); void __RPC_STUB IAMAudioInputMixer_put_Loudness_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMAudioInputMixer_get_Loudness_Proxy( IAMAudioInputMixer * This, /* [out] */ BOOL *pfLoudness); void __RPC_STUB IAMAudioInputMixer_get_Loudness_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMAudioInputMixer_put_Treble_Proxy( IAMAudioInputMixer * This, /* [in] */ double Treble); void __RPC_STUB IAMAudioInputMixer_put_Treble_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMAudioInputMixer_get_Treble_Proxy( IAMAudioInputMixer * This, /* [out] */ double *pTreble); void __RPC_STUB IAMAudioInputMixer_get_Treble_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMAudioInputMixer_get_TrebleRange_Proxy( IAMAudioInputMixer * This, /* [out] */ double *pRange); void __RPC_STUB IAMAudioInputMixer_get_TrebleRange_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMAudioInputMixer_put_Bass_Proxy( IAMAudioInputMixer * This, /* [in] */ double Bass); void __RPC_STUB IAMAudioInputMixer_put_Bass_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMAudioInputMixer_get_Bass_Proxy( IAMAudioInputMixer * This, /* [out] */ double *pBass); void __RPC_STUB IAMAudioInputMixer_get_Bass_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMAudioInputMixer_get_BassRange_Proxy( IAMAudioInputMixer * This, /* [out] */ double *pRange); void __RPC_STUB IAMAudioInputMixer_get_BassRange_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMAudioInputMixer_INTERFACE_DEFINED__ */ #ifndef __IAMBufferNegotiation_INTERFACE_DEFINED__ #define __IAMBufferNegotiation_INTERFACE_DEFINED__ /* interface IAMBufferNegotiation */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IAMBufferNegotiation; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("56ED71A0-AF5F-11D0-B3F0-00AA003761C5") IAMBufferNegotiation : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE SuggestAllocatorProperties( /* [in] */ const ALLOCATOR_PROPERTIES *pprop) = 0; virtual HRESULT STDMETHODCALLTYPE GetAllocatorProperties( /* [out] */ ALLOCATOR_PROPERTIES *pprop) = 0; }; #else /* C style interface */ typedef struct IAMBufferNegotiationVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMBufferNegotiation * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMBufferNegotiation * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMBufferNegotiation * This); HRESULT ( STDMETHODCALLTYPE *SuggestAllocatorProperties )( IAMBufferNegotiation * This, /* [in] */ const ALLOCATOR_PROPERTIES *pprop); HRESULT ( STDMETHODCALLTYPE *GetAllocatorProperties )( IAMBufferNegotiation * This, /* [out] */ ALLOCATOR_PROPERTIES *pprop); END_INTERFACE } IAMBufferNegotiationVtbl; interface IAMBufferNegotiation { CONST_VTBL struct IAMBufferNegotiationVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMBufferNegotiation_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMBufferNegotiation_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMBufferNegotiation_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMBufferNegotiation_SuggestAllocatorProperties(This,pprop) \ (This)->lpVtbl -> SuggestAllocatorProperties(This,pprop) #define IAMBufferNegotiation_GetAllocatorProperties(This,pprop) \ (This)->lpVtbl -> GetAllocatorProperties(This,pprop) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMBufferNegotiation_SuggestAllocatorProperties_Proxy( IAMBufferNegotiation * This, /* [in] */ const ALLOCATOR_PROPERTIES *pprop); void __RPC_STUB IAMBufferNegotiation_SuggestAllocatorProperties_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMBufferNegotiation_GetAllocatorProperties_Proxy( IAMBufferNegotiation * This, /* [out] */ ALLOCATOR_PROPERTIES *pprop); void __RPC_STUB IAMBufferNegotiation_GetAllocatorProperties_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMBufferNegotiation_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0168 */ /* [local] */ typedef enum tagAnalogVideoStandard { AnalogVideo_None = 0, AnalogVideo_NTSC_M = 0x1, AnalogVideo_NTSC_M_J = 0x2, AnalogVideo_NTSC_433 = 0x4, AnalogVideo_PAL_B = 0x10, AnalogVideo_PAL_D = 0x20, AnalogVideo_PAL_G = 0x40, AnalogVideo_PAL_H = 0x80, AnalogVideo_PAL_I = 0x100, AnalogVideo_PAL_M = 0x200, AnalogVideo_PAL_N = 0x400, AnalogVideo_PAL_60 = 0x800, AnalogVideo_SECAM_B = 0x1000, AnalogVideo_SECAM_D = 0x2000, AnalogVideo_SECAM_G = 0x4000, AnalogVideo_SECAM_H = 0x8000, AnalogVideo_SECAM_K = 0x10000, AnalogVideo_SECAM_K1 = 0x20000, AnalogVideo_SECAM_L = 0x40000, AnalogVideo_SECAM_L1 = 0x80000, AnalogVideo_PAL_N_COMBO = 0x100000 } AnalogVideoStandard; #define AnalogVideo_NTSC_Mask 0x00000007 #define AnalogVideo_PAL_Mask 0x00100FF0 #define AnalogVideo_SECAM_Mask 0x000FF000 typedef enum tagTunerInputType { TunerInputCable = 0, TunerInputAntenna = TunerInputCable + 1 } TunerInputType; typedef /* [public] */ enum __MIDL___MIDL_itf_strmif_0168_0001 { VideoCopyProtectionMacrovisionBasic = 0, VideoCopyProtectionMacrovisionCBI = VideoCopyProtectionMacrovisionBasic + 1 } VideoCopyProtectionType; typedef enum tagPhysicalConnectorType { PhysConn_Video_Tuner = 1, PhysConn_Video_Composite = PhysConn_Video_Tuner + 1, PhysConn_Video_SVideo = PhysConn_Video_Composite + 1, PhysConn_Video_RGB = PhysConn_Video_SVideo + 1, PhysConn_Video_YRYBY = PhysConn_Video_RGB + 1, PhysConn_Video_SerialDigital = PhysConn_Video_YRYBY + 1, PhysConn_Video_ParallelDigital = PhysConn_Video_SerialDigital + 1, PhysConn_Video_SCSI = PhysConn_Video_ParallelDigital + 1, PhysConn_Video_AUX = PhysConn_Video_SCSI + 1, PhysConn_Video_1394 = PhysConn_Video_AUX + 1, PhysConn_Video_USB = PhysConn_Video_1394 + 1, PhysConn_Video_VideoDecoder = PhysConn_Video_USB + 1, PhysConn_Video_VideoEncoder = PhysConn_Video_VideoDecoder + 1, PhysConn_Video_SCART = PhysConn_Video_VideoEncoder + 1, PhysConn_Video_Black = PhysConn_Video_SCART + 1, PhysConn_Audio_Tuner = 0x1000, PhysConn_Audio_Line = PhysConn_Audio_Tuner + 1, PhysConn_Audio_Mic = PhysConn_Audio_Line + 1, PhysConn_Audio_AESDigital = PhysConn_Audio_Mic + 1, PhysConn_Audio_SPDIFDigital = PhysConn_Audio_AESDigital + 1, PhysConn_Audio_SCSI = PhysConn_Audio_SPDIFDigital + 1, PhysConn_Audio_AUX = PhysConn_Audio_SCSI + 1, PhysConn_Audio_1394 = PhysConn_Audio_AUX + 1, PhysConn_Audio_USB = PhysConn_Audio_1394 + 1, PhysConn_Audio_AudioDecoder = PhysConn_Audio_USB + 1 } PhysicalConnectorType; extern RPC_IF_HANDLE __MIDL_itf_strmif_0168_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0168_v0_0_s_ifspec; #ifndef __IAMAnalogVideoDecoder_INTERFACE_DEFINED__ #define __IAMAnalogVideoDecoder_INTERFACE_DEFINED__ /* interface IAMAnalogVideoDecoder */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IAMAnalogVideoDecoder; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("C6E13350-30AC-11d0-A18C-00A0C9118956") IAMAnalogVideoDecoder : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE get_AvailableTVFormats( /* [out] */ long *lAnalogVideoStandard) = 0; virtual HRESULT STDMETHODCALLTYPE put_TVFormat( /* [in] */ long lAnalogVideoStandard) = 0; virtual HRESULT STDMETHODCALLTYPE get_TVFormat( /* [out] */ long *plAnalogVideoStandard) = 0; virtual HRESULT STDMETHODCALLTYPE get_HorizontalLocked( /* [out] */ long *plLocked) = 0; virtual HRESULT STDMETHODCALLTYPE put_VCRHorizontalLocking( /* [in] */ long lVCRHorizontalLocking) = 0; virtual HRESULT STDMETHODCALLTYPE get_VCRHorizontalLocking( /* [out] */ long *plVCRHorizontalLocking) = 0; virtual HRESULT STDMETHODCALLTYPE get_NumberOfLines( /* [out] */ long *plNumberOfLines) = 0; virtual HRESULT STDMETHODCALLTYPE put_OutputEnable( /* [in] */ long lOutputEnable) = 0; virtual HRESULT STDMETHODCALLTYPE get_OutputEnable( /* [out] */ long *plOutputEnable) = 0; }; #else /* C style interface */ typedef struct IAMAnalogVideoDecoderVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMAnalogVideoDecoder * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMAnalogVideoDecoder * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMAnalogVideoDecoder * This); HRESULT ( STDMETHODCALLTYPE *get_AvailableTVFormats )( IAMAnalogVideoDecoder * This, /* [out] */ long *lAnalogVideoStandard); HRESULT ( STDMETHODCALLTYPE *put_TVFormat )( IAMAnalogVideoDecoder * This, /* [in] */ long lAnalogVideoStandard); HRESULT ( STDMETHODCALLTYPE *get_TVFormat )( IAMAnalogVideoDecoder * This, /* [out] */ long *plAnalogVideoStandard); HRESULT ( STDMETHODCALLTYPE *get_HorizontalLocked )( IAMAnalogVideoDecoder * This, /* [out] */ long *plLocked); HRESULT ( STDMETHODCALLTYPE *put_VCRHorizontalLocking )( IAMAnalogVideoDecoder * This, /* [in] */ long lVCRHorizontalLocking); HRESULT ( STDMETHODCALLTYPE *get_VCRHorizontalLocking )( IAMAnalogVideoDecoder * This, /* [out] */ long *plVCRHorizontalLocking); HRESULT ( STDMETHODCALLTYPE *get_NumberOfLines )( IAMAnalogVideoDecoder * This, /* [out] */ long *plNumberOfLines); HRESULT ( STDMETHODCALLTYPE *put_OutputEnable )( IAMAnalogVideoDecoder * This, /* [in] */ long lOutputEnable); HRESULT ( STDMETHODCALLTYPE *get_OutputEnable )( IAMAnalogVideoDecoder * This, /* [out] */ long *plOutputEnable); END_INTERFACE } IAMAnalogVideoDecoderVtbl; interface IAMAnalogVideoDecoder { CONST_VTBL struct IAMAnalogVideoDecoderVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMAnalogVideoDecoder_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMAnalogVideoDecoder_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMAnalogVideoDecoder_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMAnalogVideoDecoder_get_AvailableTVFormats(This,lAnalogVideoStandard) \ (This)->lpVtbl -> get_AvailableTVFormats(This,lAnalogVideoStandard) #define IAMAnalogVideoDecoder_put_TVFormat(This,lAnalogVideoStandard) \ (This)->lpVtbl -> put_TVFormat(This,lAnalogVideoStandard) #define IAMAnalogVideoDecoder_get_TVFormat(This,plAnalogVideoStandard) \ (This)->lpVtbl -> get_TVFormat(This,plAnalogVideoStandard) #define IAMAnalogVideoDecoder_get_HorizontalLocked(This,plLocked) \ (This)->lpVtbl -> get_HorizontalLocked(This,plLocked) #define IAMAnalogVideoDecoder_put_VCRHorizontalLocking(This,lVCRHorizontalLocking) \ (This)->lpVtbl -> put_VCRHorizontalLocking(This,lVCRHorizontalLocking) #define IAMAnalogVideoDecoder_get_VCRHorizontalLocking(This,plVCRHorizontalLocking) \ (This)->lpVtbl -> get_VCRHorizontalLocking(This,plVCRHorizontalLocking) #define IAMAnalogVideoDecoder_get_NumberOfLines(This,plNumberOfLines) \ (This)->lpVtbl -> get_NumberOfLines(This,plNumberOfLines) #define IAMAnalogVideoDecoder_put_OutputEnable(This,lOutputEnable) \ (This)->lpVtbl -> put_OutputEnable(This,lOutputEnable) #define IAMAnalogVideoDecoder_get_OutputEnable(This,plOutputEnable) \ (This)->lpVtbl -> get_OutputEnable(This,plOutputEnable) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMAnalogVideoDecoder_get_AvailableTVFormats_Proxy( IAMAnalogVideoDecoder * This, /* [out] */ long *lAnalogVideoStandard); void __RPC_STUB IAMAnalogVideoDecoder_get_AvailableTVFormats_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMAnalogVideoDecoder_put_TVFormat_Proxy( IAMAnalogVideoDecoder * This, /* [in] */ long lAnalogVideoStandard); void __RPC_STUB IAMAnalogVideoDecoder_put_TVFormat_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMAnalogVideoDecoder_get_TVFormat_Proxy( IAMAnalogVideoDecoder * This, /* [out] */ long *plAnalogVideoStandard); void __RPC_STUB IAMAnalogVideoDecoder_get_TVFormat_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMAnalogVideoDecoder_get_HorizontalLocked_Proxy( IAMAnalogVideoDecoder * This, /* [out] */ long *plLocked); void __RPC_STUB IAMAnalogVideoDecoder_get_HorizontalLocked_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMAnalogVideoDecoder_put_VCRHorizontalLocking_Proxy( IAMAnalogVideoDecoder * This, /* [in] */ long lVCRHorizontalLocking); void __RPC_STUB IAMAnalogVideoDecoder_put_VCRHorizontalLocking_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMAnalogVideoDecoder_get_VCRHorizontalLocking_Proxy( IAMAnalogVideoDecoder * This, /* [out] */ long *plVCRHorizontalLocking); void __RPC_STUB IAMAnalogVideoDecoder_get_VCRHorizontalLocking_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMAnalogVideoDecoder_get_NumberOfLines_Proxy( IAMAnalogVideoDecoder * This, /* [out] */ long *plNumberOfLines); void __RPC_STUB IAMAnalogVideoDecoder_get_NumberOfLines_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMAnalogVideoDecoder_put_OutputEnable_Proxy( IAMAnalogVideoDecoder * This, /* [in] */ long lOutputEnable); void __RPC_STUB IAMAnalogVideoDecoder_put_OutputEnable_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMAnalogVideoDecoder_get_OutputEnable_Proxy( IAMAnalogVideoDecoder * This, /* [out] */ long *plOutputEnable); void __RPC_STUB IAMAnalogVideoDecoder_get_OutputEnable_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMAnalogVideoDecoder_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0169 */ /* [local] */ typedef enum tagVideoProcAmpProperty { VideoProcAmp_Brightness = 0, VideoProcAmp_Contrast = VideoProcAmp_Brightness + 1, VideoProcAmp_Hue = VideoProcAmp_Contrast + 1, VideoProcAmp_Saturation = VideoProcAmp_Hue + 1, VideoProcAmp_Sharpness = VideoProcAmp_Saturation + 1, VideoProcAmp_Gamma = VideoProcAmp_Sharpness + 1, VideoProcAmp_ColorEnable = VideoProcAmp_Gamma + 1, VideoProcAmp_WhiteBalance = VideoProcAmp_ColorEnable + 1, VideoProcAmp_BacklightCompensation = VideoProcAmp_WhiteBalance + 1, VideoProcAmp_Gain = VideoProcAmp_BacklightCompensation + 1 } VideoProcAmpProperty; typedef enum tagVideoProcAmpFlags { VideoProcAmp_Flags_Auto = 0x1, VideoProcAmp_Flags_Manual = 0x2 } VideoProcAmpFlags; extern RPC_IF_HANDLE __MIDL_itf_strmif_0169_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0169_v0_0_s_ifspec; #ifndef __IAMVideoProcAmp_INTERFACE_DEFINED__ #define __IAMVideoProcAmp_INTERFACE_DEFINED__ /* interface IAMVideoProcAmp */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IAMVideoProcAmp; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("C6E13360-30AC-11d0-A18C-00A0C9118956") IAMVideoProcAmp : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE GetRange( /* [in] */ long Property, /* [out] */ long *pMin, /* [out] */ long *pMax, /* [out] */ long *pSteppingDelta, /* [out] */ long *pDefault, /* [out] */ long *pCapsFlags) = 0; virtual HRESULT STDMETHODCALLTYPE Set( /* [in] */ long Property, /* [in] */ long lValue, /* [in] */ long Flags) = 0; virtual HRESULT STDMETHODCALLTYPE Get( /* [in] */ long Property, /* [out] */ long *lValue, /* [out] */ long *Flags) = 0; }; #else /* C style interface */ typedef struct IAMVideoProcAmpVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMVideoProcAmp * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMVideoProcAmp * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMVideoProcAmp * This); HRESULT ( STDMETHODCALLTYPE *GetRange )( IAMVideoProcAmp * This, /* [in] */ long Property, /* [out] */ long *pMin, /* [out] */ long *pMax, /* [out] */ long *pSteppingDelta, /* [out] */ long *pDefault, /* [out] */ long *pCapsFlags); HRESULT ( STDMETHODCALLTYPE *Set )( IAMVideoProcAmp * This, /* [in] */ long Property, /* [in] */ long lValue, /* [in] */ long Flags); HRESULT ( STDMETHODCALLTYPE *Get )( IAMVideoProcAmp * This, /* [in] */ long Property, /* [out] */ long *lValue, /* [out] */ long *Flags); END_INTERFACE } IAMVideoProcAmpVtbl; interface IAMVideoProcAmp { CONST_VTBL struct IAMVideoProcAmpVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMVideoProcAmp_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMVideoProcAmp_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMVideoProcAmp_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMVideoProcAmp_GetRange(This,Property,pMin,pMax,pSteppingDelta,pDefault,pCapsFlags) \ (This)->lpVtbl -> GetRange(This,Property,pMin,pMax,pSteppingDelta,pDefault,pCapsFlags) #define IAMVideoProcAmp_Set(This,Property,lValue,Flags) \ (This)->lpVtbl -> Set(This,Property,lValue,Flags) #define IAMVideoProcAmp_Get(This,Property,lValue,Flags) \ (This)->lpVtbl -> Get(This,Property,lValue,Flags) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMVideoProcAmp_GetRange_Proxy( IAMVideoProcAmp * This, /* [in] */ long Property, /* [out] */ long *pMin, /* [out] */ long *pMax, /* [out] */ long *pSteppingDelta, /* [out] */ long *pDefault, /* [out] */ long *pCapsFlags); void __RPC_STUB IAMVideoProcAmp_GetRange_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMVideoProcAmp_Set_Proxy( IAMVideoProcAmp * This, /* [in] */ long Property, /* [in] */ long lValue, /* [in] */ long Flags); void __RPC_STUB IAMVideoProcAmp_Set_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMVideoProcAmp_Get_Proxy( IAMVideoProcAmp * This, /* [in] */ long Property, /* [out] */ long *lValue, /* [out] */ long *Flags); void __RPC_STUB IAMVideoProcAmp_Get_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMVideoProcAmp_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0170 */ /* [local] */ typedef enum tagCameraControlProperty { CameraControl_Pan = 0, CameraControl_Tilt = CameraControl_Pan + 1, CameraControl_Roll = CameraControl_Tilt + 1, CameraControl_Zoom = CameraControl_Roll + 1, CameraControl_Exposure = CameraControl_Zoom + 1, CameraControl_Iris = CameraControl_Exposure + 1, CameraControl_Focus = CameraControl_Iris + 1 } CameraControlProperty; typedef enum tagCameraControlFlags { CameraControl_Flags_Auto = 0x1, CameraControl_Flags_Manual = 0x2 } CameraControlFlags; extern RPC_IF_HANDLE __MIDL_itf_strmif_0170_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0170_v0_0_s_ifspec; #ifndef __IAMCameraControl_INTERFACE_DEFINED__ #define __IAMCameraControl_INTERFACE_DEFINED__ /* interface IAMCameraControl */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IAMCameraControl; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("C6E13370-30AC-11d0-A18C-00A0C9118956") IAMCameraControl : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE GetRange( /* [in] */ long Property, /* [out] */ long *pMin, /* [out] */ long *pMax, /* [out] */ long *pSteppingDelta, /* [out] */ long *pDefault, /* [out] */ long *pCapsFlags) = 0; virtual HRESULT STDMETHODCALLTYPE Set( /* [in] */ long Property, /* [in] */ long lValue, /* [in] */ long Flags) = 0; virtual HRESULT STDMETHODCALLTYPE Get( /* [in] */ long Property, /* [out] */ long *lValue, /* [out] */ long *Flags) = 0; }; #else /* C style interface */ typedef struct IAMCameraControlVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMCameraControl * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMCameraControl * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMCameraControl * This); HRESULT ( STDMETHODCALLTYPE *GetRange )( IAMCameraControl * This, /* [in] */ long Property, /* [out] */ long *pMin, /* [out] */ long *pMax, /* [out] */ long *pSteppingDelta, /* [out] */ long *pDefault, /* [out] */ long *pCapsFlags); HRESULT ( STDMETHODCALLTYPE *Set )( IAMCameraControl * This, /* [in] */ long Property, /* [in] */ long lValue, /* [in] */ long Flags); HRESULT ( STDMETHODCALLTYPE *Get )( IAMCameraControl * This, /* [in] */ long Property, /* [out] */ long *lValue, /* [out] */ long *Flags); END_INTERFACE } IAMCameraControlVtbl; interface IAMCameraControl { CONST_VTBL struct IAMCameraControlVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMCameraControl_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMCameraControl_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMCameraControl_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMCameraControl_GetRange(This,Property,pMin,pMax,pSteppingDelta,pDefault,pCapsFlags) \ (This)->lpVtbl -> GetRange(This,Property,pMin,pMax,pSteppingDelta,pDefault,pCapsFlags) #define IAMCameraControl_Set(This,Property,lValue,Flags) \ (This)->lpVtbl -> Set(This,Property,lValue,Flags) #define IAMCameraControl_Get(This,Property,lValue,Flags) \ (This)->lpVtbl -> Get(This,Property,lValue,Flags) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMCameraControl_GetRange_Proxy( IAMCameraControl * This, /* [in] */ long Property, /* [out] */ long *pMin, /* [out] */ long *pMax, /* [out] */ long *pSteppingDelta, /* [out] */ long *pDefault, /* [out] */ long *pCapsFlags); void __RPC_STUB IAMCameraControl_GetRange_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMCameraControl_Set_Proxy( IAMCameraControl * This, /* [in] */ long Property, /* [in] */ long lValue, /* [in] */ long Flags); void __RPC_STUB IAMCameraControl_Set_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMCameraControl_Get_Proxy( IAMCameraControl * This, /* [in] */ long Property, /* [out] */ long *lValue, /* [out] */ long *Flags); void __RPC_STUB IAMCameraControl_Get_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMCameraControl_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0171 */ /* [local] */ typedef enum tagVideoControlFlags { VideoControlFlag_FlipHorizontal = 0x1, VideoControlFlag_FlipVertical = 0x2, VideoControlFlag_ExternalTriggerEnable = 0x4, VideoControlFlag_Trigger = 0x8 } VideoControlFlags; extern RPC_IF_HANDLE __MIDL_itf_strmif_0171_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0171_v0_0_s_ifspec; #ifndef __IAMVideoControl_INTERFACE_DEFINED__ #define __IAMVideoControl_INTERFACE_DEFINED__ /* interface IAMVideoControl */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IAMVideoControl; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("6a2e0670-28e4-11d0-a18c-00a0c9118956") IAMVideoControl : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE GetCaps( /* [in] */ IPin *pPin, /* [out] */ long *pCapsFlags) = 0; virtual HRESULT STDMETHODCALLTYPE SetMode( /* [in] */ IPin *pPin, /* [in] */ long Mode) = 0; virtual HRESULT STDMETHODCALLTYPE GetMode( /* [in] */ IPin *pPin, /* [out] */ long *Mode) = 0; virtual HRESULT STDMETHODCALLTYPE GetCurrentActualFrameRate( /* [in] */ IPin *pPin, /* [out] */ LONGLONG *ActualFrameRate) = 0; virtual HRESULT STDMETHODCALLTYPE GetMaxAvailableFrameRate( /* [in] */ IPin *pPin, /* [in] */ long iIndex, /* [in] */ SIZE Dimensions, /* [out] */ LONGLONG *MaxAvailableFrameRate) = 0; virtual HRESULT STDMETHODCALLTYPE GetFrameRateList( /* [in] */ IPin *pPin, /* [in] */ long iIndex, /* [in] */ SIZE Dimensions, /* [out] */ long *ListSize, /* [out] */ LONGLONG **FrameRates) = 0; }; #else /* C style interface */ typedef struct IAMVideoControlVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMVideoControl * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMVideoControl * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMVideoControl * This); HRESULT ( STDMETHODCALLTYPE *GetCaps )( IAMVideoControl * This, /* [in] */ IPin *pPin, /* [out] */ long *pCapsFlags); HRESULT ( STDMETHODCALLTYPE *SetMode )( IAMVideoControl * This, /* [in] */ IPin *pPin, /* [in] */ long Mode); HRESULT ( STDMETHODCALLTYPE *GetMode )( IAMVideoControl * This, /* [in] */ IPin *pPin, /* [out] */ long *Mode); HRESULT ( STDMETHODCALLTYPE *GetCurrentActualFrameRate )( IAMVideoControl * This, /* [in] */ IPin *pPin, /* [out] */ LONGLONG *ActualFrameRate); HRESULT ( STDMETHODCALLTYPE *GetMaxAvailableFrameRate )( IAMVideoControl * This, /* [in] */ IPin *pPin, /* [in] */ long iIndex, /* [in] */ SIZE Dimensions, /* [out] */ LONGLONG *MaxAvailableFrameRate); HRESULT ( STDMETHODCALLTYPE *GetFrameRateList )( IAMVideoControl * This, /* [in] */ IPin *pPin, /* [in] */ long iIndex, /* [in] */ SIZE Dimensions, /* [out] */ long *ListSize, /* [out] */ LONGLONG **FrameRates); END_INTERFACE } IAMVideoControlVtbl; interface IAMVideoControl { CONST_VTBL struct IAMVideoControlVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMVideoControl_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMVideoControl_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMVideoControl_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMVideoControl_GetCaps(This,pPin,pCapsFlags) \ (This)->lpVtbl -> GetCaps(This,pPin,pCapsFlags) #define IAMVideoControl_SetMode(This,pPin,Mode) \ (This)->lpVtbl -> SetMode(This,pPin,Mode) #define IAMVideoControl_GetMode(This,pPin,Mode) \ (This)->lpVtbl -> GetMode(This,pPin,Mode) #define IAMVideoControl_GetCurrentActualFrameRate(This,pPin,ActualFrameRate) \ (This)->lpVtbl -> GetCurrentActualFrameRate(This,pPin,ActualFrameRate) #define IAMVideoControl_GetMaxAvailableFrameRate(This,pPin,iIndex,Dimensions,MaxAvailableFrameRate) \ (This)->lpVtbl -> GetMaxAvailableFrameRate(This,pPin,iIndex,Dimensions,MaxAvailableFrameRate) #define IAMVideoControl_GetFrameRateList(This,pPin,iIndex,Dimensions,ListSize,FrameRates) \ (This)->lpVtbl -> GetFrameRateList(This,pPin,iIndex,Dimensions,ListSize,FrameRates) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMVideoControl_GetCaps_Proxy( IAMVideoControl * This, /* [in] */ IPin *pPin, /* [out] */ long *pCapsFlags); void __RPC_STUB IAMVideoControl_GetCaps_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMVideoControl_SetMode_Proxy( IAMVideoControl * This, /* [in] */ IPin *pPin, /* [in] */ long Mode); void __RPC_STUB IAMVideoControl_SetMode_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMVideoControl_GetMode_Proxy( IAMVideoControl * This, /* [in] */ IPin *pPin, /* [out] */ long *Mode); void __RPC_STUB IAMVideoControl_GetMode_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMVideoControl_GetCurrentActualFrameRate_Proxy( IAMVideoControl * This, /* [in] */ IPin *pPin, /* [out] */ LONGLONG *ActualFrameRate); void __RPC_STUB IAMVideoControl_GetCurrentActualFrameRate_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMVideoControl_GetMaxAvailableFrameRate_Proxy( IAMVideoControl * This, /* [in] */ IPin *pPin, /* [in] */ long iIndex, /* [in] */ SIZE Dimensions, /* [out] */ LONGLONG *MaxAvailableFrameRate); void __RPC_STUB IAMVideoControl_GetMaxAvailableFrameRate_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMVideoControl_GetFrameRateList_Proxy( IAMVideoControl * This, /* [in] */ IPin *pPin, /* [in] */ long iIndex, /* [in] */ SIZE Dimensions, /* [out] */ long *ListSize, /* [out] */ LONGLONG **FrameRates); void __RPC_STUB IAMVideoControl_GetFrameRateList_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMVideoControl_INTERFACE_DEFINED__ */ #ifndef __IAMCrossbar_INTERFACE_DEFINED__ #define __IAMCrossbar_INTERFACE_DEFINED__ /* interface IAMCrossbar */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IAMCrossbar; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("C6E13380-30AC-11d0-A18C-00A0C9118956") IAMCrossbar : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE get_PinCounts( /* [out] */ long *OutputPinCount, /* [out] */ long *InputPinCount) = 0; virtual HRESULT STDMETHODCALLTYPE CanRoute( /* [in] */ long OutputPinIndex, /* [in] */ long InputPinIndex) = 0; virtual HRESULT STDMETHODCALLTYPE Route( /* [in] */ long OutputPinIndex, /* [in] */ long InputPinIndex) = 0; virtual HRESULT STDMETHODCALLTYPE get_IsRoutedTo( /* [in] */ long OutputPinIndex, /* [out] */ long *InputPinIndex) = 0; virtual HRESULT STDMETHODCALLTYPE get_CrossbarPinInfo( /* [in] */ BOOL IsInputPin, /* [in] */ long PinIndex, /* [out] */ long *PinIndexRelated, /* [out] */ long *PhysicalType) = 0; }; #else /* C style interface */ typedef struct IAMCrossbarVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMCrossbar * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMCrossbar * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMCrossbar * This); HRESULT ( STDMETHODCALLTYPE *get_PinCounts )( IAMCrossbar * This, /* [out] */ long *OutputPinCount, /* [out] */ long *InputPinCount); HRESULT ( STDMETHODCALLTYPE *CanRoute )( IAMCrossbar * This, /* [in] */ long OutputPinIndex, /* [in] */ long InputPinIndex); HRESULT ( STDMETHODCALLTYPE *Route )( IAMCrossbar * This, /* [in] */ long OutputPinIndex, /* [in] */ long InputPinIndex); HRESULT ( STDMETHODCALLTYPE *get_IsRoutedTo )( IAMCrossbar * This, /* [in] */ long OutputPinIndex, /* [out] */ long *InputPinIndex); HRESULT ( STDMETHODCALLTYPE *get_CrossbarPinInfo )( IAMCrossbar * This, /* [in] */ BOOL IsInputPin, /* [in] */ long PinIndex, /* [out] */ long *PinIndexRelated, /* [out] */ long *PhysicalType); END_INTERFACE } IAMCrossbarVtbl; interface IAMCrossbar { CONST_VTBL struct IAMCrossbarVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMCrossbar_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMCrossbar_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMCrossbar_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMCrossbar_get_PinCounts(This,OutputPinCount,InputPinCount) \ (This)->lpVtbl -> get_PinCounts(This,OutputPinCount,InputPinCount) #define IAMCrossbar_CanRoute(This,OutputPinIndex,InputPinIndex) \ (This)->lpVtbl -> CanRoute(This,OutputPinIndex,InputPinIndex) #define IAMCrossbar_Route(This,OutputPinIndex,InputPinIndex) \ (This)->lpVtbl -> Route(This,OutputPinIndex,InputPinIndex) #define IAMCrossbar_get_IsRoutedTo(This,OutputPinIndex,InputPinIndex) \ (This)->lpVtbl -> get_IsRoutedTo(This,OutputPinIndex,InputPinIndex) #define IAMCrossbar_get_CrossbarPinInfo(This,IsInputPin,PinIndex,PinIndexRelated,PhysicalType) \ (This)->lpVtbl -> get_CrossbarPinInfo(This,IsInputPin,PinIndex,PinIndexRelated,PhysicalType) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMCrossbar_get_PinCounts_Proxy( IAMCrossbar * This, /* [out] */ long *OutputPinCount, /* [out] */ long *InputPinCount); void __RPC_STUB IAMCrossbar_get_PinCounts_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMCrossbar_CanRoute_Proxy( IAMCrossbar * This, /* [in] */ long OutputPinIndex, /* [in] */ long InputPinIndex); void __RPC_STUB IAMCrossbar_CanRoute_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMCrossbar_Route_Proxy( IAMCrossbar * This, /* [in] */ long OutputPinIndex, /* [in] */ long InputPinIndex); void __RPC_STUB IAMCrossbar_Route_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMCrossbar_get_IsRoutedTo_Proxy( IAMCrossbar * This, /* [in] */ long OutputPinIndex, /* [out] */ long *InputPinIndex); void __RPC_STUB IAMCrossbar_get_IsRoutedTo_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMCrossbar_get_CrossbarPinInfo_Proxy( IAMCrossbar * This, /* [in] */ BOOL IsInputPin, /* [in] */ long PinIndex, /* [out] */ long *PinIndexRelated, /* [out] */ long *PhysicalType); void __RPC_STUB IAMCrossbar_get_CrossbarPinInfo_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMCrossbar_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0173 */ /* [local] */ typedef enum tagAMTunerSubChannel { AMTUNER_SUBCHAN_NO_TUNE = -2, AMTUNER_SUBCHAN_DEFAULT = -1 } AMTunerSubChannel; typedef enum tagAMTunerSignalStrength { AMTUNER_HASNOSIGNALSTRENGTH = -1, AMTUNER_NOSIGNAL = 0, AMTUNER_SIGNALPRESENT = 1 } AMTunerSignalStrength; typedef enum tagAMTunerModeType { AMTUNER_MODE_DEFAULT = 0, AMTUNER_MODE_TV = 0x1, AMTUNER_MODE_FM_RADIO = 0x2, AMTUNER_MODE_AM_RADIO = 0x4, AMTUNER_MODE_DSS = 0x8 } AMTunerModeType; typedef enum tagAMTunerEventType { AMTUNER_EVENT_CHANGED = 0x1 } AMTunerEventType; extern RPC_IF_HANDLE __MIDL_itf_strmif_0173_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0173_v0_0_s_ifspec; #ifndef __IAMTuner_INTERFACE_DEFINED__ #define __IAMTuner_INTERFACE_DEFINED__ /* interface IAMTuner */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IAMTuner; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("211A8761-03AC-11d1-8D13-00AA00BD8339") IAMTuner : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE put_Channel( /* [in] */ long lChannel, /* [in] */ long lVideoSubChannel, /* [in] */ long lAudioSubChannel) = 0; virtual HRESULT STDMETHODCALLTYPE get_Channel( /* [out] */ long *plChannel, /* [out] */ long *plVideoSubChannel, /* [out] */ long *plAudioSubChannel) = 0; virtual HRESULT STDMETHODCALLTYPE ChannelMinMax( /* [out] */ long *lChannelMin, /* [out] */ long *lChannelMax) = 0; virtual HRESULT STDMETHODCALLTYPE put_CountryCode( /* [in] */ long lCountryCode) = 0; virtual HRESULT STDMETHODCALLTYPE get_CountryCode( /* [out] */ long *plCountryCode) = 0; virtual HRESULT STDMETHODCALLTYPE put_TuningSpace( /* [in] */ long lTuningSpace) = 0; virtual HRESULT STDMETHODCALLTYPE get_TuningSpace( /* [out] */ long *plTuningSpace) = 0; virtual /* [local] */ HRESULT STDMETHODCALLTYPE Logon( /* [in] */ HANDLE hCurrentUser) = 0; virtual HRESULT STDMETHODCALLTYPE Logout( void) = 0; virtual HRESULT STDMETHODCALLTYPE SignalPresent( /* [out] */ long *plSignalStrength) = 0; virtual HRESULT STDMETHODCALLTYPE put_Mode( /* [in] */ AMTunerModeType lMode) = 0; virtual HRESULT STDMETHODCALLTYPE get_Mode( /* [out] */ AMTunerModeType *plMode) = 0; virtual HRESULT STDMETHODCALLTYPE GetAvailableModes( /* [out] */ long *plModes) = 0; virtual HRESULT STDMETHODCALLTYPE RegisterNotificationCallBack( /* [in] */ IAMTunerNotification *pNotify, /* [in] */ long lEvents) = 0; virtual HRESULT STDMETHODCALLTYPE UnRegisterNotificationCallBack( /* [in] */ IAMTunerNotification *pNotify) = 0; }; #else /* C style interface */ typedef struct IAMTunerVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMTuner * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMTuner * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMTuner * This); HRESULT ( STDMETHODCALLTYPE *put_Channel )( IAMTuner * This, /* [in] */ long lChannel, /* [in] */ long lVideoSubChannel, /* [in] */ long lAudioSubChannel); HRESULT ( STDMETHODCALLTYPE *get_Channel )( IAMTuner * This, /* [out] */ long *plChannel, /* [out] */ long *plVideoSubChannel, /* [out] */ long *plAudioSubChannel); HRESULT ( STDMETHODCALLTYPE *ChannelMinMax )( IAMTuner * This, /* [out] */ long *lChannelMin, /* [out] */ long *lChannelMax); HRESULT ( STDMETHODCALLTYPE *put_CountryCode )( IAMTuner * This, /* [in] */ long lCountryCode); HRESULT ( STDMETHODCALLTYPE *get_CountryCode )( IAMTuner * This, /* [out] */ long *plCountryCode); HRESULT ( STDMETHODCALLTYPE *put_TuningSpace )( IAMTuner * This, /* [in] */ long lTuningSpace); HRESULT ( STDMETHODCALLTYPE *get_TuningSpace )( IAMTuner * This, /* [out] */ long *plTuningSpace); /* [local] */ HRESULT ( STDMETHODCALLTYPE *Logon )( IAMTuner * This, /* [in] */ HANDLE hCurrentUser); HRESULT ( STDMETHODCALLTYPE *Logout )( IAMTuner * This); HRESULT ( STDMETHODCALLTYPE *SignalPresent )( IAMTuner * This, /* [out] */ long *plSignalStrength); HRESULT ( STDMETHODCALLTYPE *put_Mode )( IAMTuner * This, /* [in] */ AMTunerModeType lMode); HRESULT ( STDMETHODCALLTYPE *get_Mode )( IAMTuner * This, /* [out] */ AMTunerModeType *plMode); HRESULT ( STDMETHODCALLTYPE *GetAvailableModes )( IAMTuner * This, /* [out] */ long *plModes); HRESULT ( STDMETHODCALLTYPE *RegisterNotificationCallBack )( IAMTuner * This, /* [in] */ IAMTunerNotification *pNotify, /* [in] */ long lEvents); HRESULT ( STDMETHODCALLTYPE *UnRegisterNotificationCallBack )( IAMTuner * This, /* [in] */ IAMTunerNotification *pNotify); END_INTERFACE } IAMTunerVtbl; interface IAMTuner { CONST_VTBL struct IAMTunerVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMTuner_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMTuner_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMTuner_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMTuner_put_Channel(This,lChannel,lVideoSubChannel,lAudioSubChannel) \ (This)->lpVtbl -> put_Channel(This,lChannel,lVideoSubChannel,lAudioSubChannel) #define IAMTuner_get_Channel(This,plChannel,plVideoSubChannel,plAudioSubChannel) \ (This)->lpVtbl -> get_Channel(This,plChannel,plVideoSubChannel,plAudioSubChannel) #define IAMTuner_ChannelMinMax(This,lChannelMin,lChannelMax) \ (This)->lpVtbl -> ChannelMinMax(This,lChannelMin,lChannelMax) #define IAMTuner_put_CountryCode(This,lCountryCode) \ (This)->lpVtbl -> put_CountryCode(This,lCountryCode) #define IAMTuner_get_CountryCode(This,plCountryCode) \ (This)->lpVtbl -> get_CountryCode(This,plCountryCode) #define IAMTuner_put_TuningSpace(This,lTuningSpace) \ (This)->lpVtbl -> put_TuningSpace(This,lTuningSpace) #define IAMTuner_get_TuningSpace(This,plTuningSpace) \ (This)->lpVtbl -> get_TuningSpace(This,plTuningSpace) #define IAMTuner_Logon(This,hCurrentUser) \ (This)->lpVtbl -> Logon(This,hCurrentUser) #define IAMTuner_Logout(This) \ (This)->lpVtbl -> Logout(This) #define IAMTuner_SignalPresent(This,plSignalStrength) \ (This)->lpVtbl -> SignalPresent(This,plSignalStrength) #define IAMTuner_put_Mode(This,lMode) \ (This)->lpVtbl -> put_Mode(This,lMode) #define IAMTuner_get_Mode(This,plMode) \ (This)->lpVtbl -> get_Mode(This,plMode) #define IAMTuner_GetAvailableModes(This,plModes) \ (This)->lpVtbl -> GetAvailableModes(This,plModes) #define IAMTuner_RegisterNotificationCallBack(This,pNotify,lEvents) \ (This)->lpVtbl -> RegisterNotificationCallBack(This,pNotify,lEvents) #define IAMTuner_UnRegisterNotificationCallBack(This,pNotify) \ (This)->lpVtbl -> UnRegisterNotificationCallBack(This,pNotify) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMTuner_put_Channel_Proxy( IAMTuner * This, /* [in] */ long lChannel, /* [in] */ long lVideoSubChannel, /* [in] */ long lAudioSubChannel); void __RPC_STUB IAMTuner_put_Channel_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTuner_get_Channel_Proxy( IAMTuner * This, /* [out] */ long *plChannel, /* [out] */ long *plVideoSubChannel, /* [out] */ long *plAudioSubChannel); void __RPC_STUB IAMTuner_get_Channel_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTuner_ChannelMinMax_Proxy( IAMTuner * This, /* [out] */ long *lChannelMin, /* [out] */ long *lChannelMax); void __RPC_STUB IAMTuner_ChannelMinMax_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTuner_put_CountryCode_Proxy( IAMTuner * This, /* [in] */ long lCountryCode); void __RPC_STUB IAMTuner_put_CountryCode_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTuner_get_CountryCode_Proxy( IAMTuner * This, /* [out] */ long *plCountryCode); void __RPC_STUB IAMTuner_get_CountryCode_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTuner_put_TuningSpace_Proxy( IAMTuner * This, /* [in] */ long lTuningSpace); void __RPC_STUB IAMTuner_put_TuningSpace_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTuner_get_TuningSpace_Proxy( IAMTuner * This, /* [out] */ long *plTuningSpace); void __RPC_STUB IAMTuner_get_TuningSpace_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); /* [local] */ HRESULT STDMETHODCALLTYPE IAMTuner_Logon_Proxy( IAMTuner * This, /* [in] */ HANDLE hCurrentUser); void __RPC_STUB IAMTuner_Logon_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTuner_Logout_Proxy( IAMTuner * This); void __RPC_STUB IAMTuner_Logout_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTuner_SignalPresent_Proxy( IAMTuner * This, /* [out] */ long *plSignalStrength); void __RPC_STUB IAMTuner_SignalPresent_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTuner_put_Mode_Proxy( IAMTuner * This, /* [in] */ AMTunerModeType lMode); void __RPC_STUB IAMTuner_put_Mode_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTuner_get_Mode_Proxy( IAMTuner * This, /* [out] */ AMTunerModeType *plMode); void __RPC_STUB IAMTuner_get_Mode_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTuner_GetAvailableModes_Proxy( IAMTuner * This, /* [out] */ long *plModes); void __RPC_STUB IAMTuner_GetAvailableModes_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTuner_RegisterNotificationCallBack_Proxy( IAMTuner * This, /* [in] */ IAMTunerNotification *pNotify, /* [in] */ long lEvents); void __RPC_STUB IAMTuner_RegisterNotificationCallBack_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTuner_UnRegisterNotificationCallBack_Proxy( IAMTuner * This, /* [in] */ IAMTunerNotification *pNotify); void __RPC_STUB IAMTuner_UnRegisterNotificationCallBack_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMTuner_INTERFACE_DEFINED__ */ #ifndef __IAMTunerNotification_INTERFACE_DEFINED__ #define __IAMTunerNotification_INTERFACE_DEFINED__ /* interface IAMTunerNotification */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IAMTunerNotification; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("211A8760-03AC-11d1-8D13-00AA00BD8339") IAMTunerNotification : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE OnEvent( /* [in] */ AMTunerEventType Event) = 0; }; #else /* C style interface */ typedef struct IAMTunerNotificationVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMTunerNotification * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMTunerNotification * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMTunerNotification * This); HRESULT ( STDMETHODCALLTYPE *OnEvent )( IAMTunerNotification * This, /* [in] */ AMTunerEventType Event); END_INTERFACE } IAMTunerNotificationVtbl; interface IAMTunerNotification { CONST_VTBL struct IAMTunerNotificationVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMTunerNotification_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMTunerNotification_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMTunerNotification_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMTunerNotification_OnEvent(This,Event) \ (This)->lpVtbl -> OnEvent(This,Event) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMTunerNotification_OnEvent_Proxy( IAMTunerNotification * This, /* [in] */ AMTunerEventType Event); void __RPC_STUB IAMTunerNotification_OnEvent_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMTunerNotification_INTERFACE_DEFINED__ */ #ifndef __IAMTVTuner_INTERFACE_DEFINED__ #define __IAMTVTuner_INTERFACE_DEFINED__ /* interface IAMTVTuner */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IAMTVTuner; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("211A8766-03AC-11d1-8D13-00AA00BD8339") IAMTVTuner : public IAMTuner { public: virtual HRESULT STDMETHODCALLTYPE get_AvailableTVFormats( /* [out] */ long *lAnalogVideoStandard) = 0; virtual HRESULT STDMETHODCALLTYPE get_TVFormat( /* [out] */ long *plAnalogVideoStandard) = 0; virtual HRESULT STDMETHODCALLTYPE AutoTune( /* [in] */ long lChannel, /* [out] */ long *plFoundSignal) = 0; virtual HRESULT STDMETHODCALLTYPE StoreAutoTune( void) = 0; virtual HRESULT STDMETHODCALLTYPE get_NumInputConnections( /* [out] */ long *plNumInputConnections) = 0; virtual HRESULT STDMETHODCALLTYPE put_InputType( /* [in] */ long lIndex, /* [in] */ TunerInputType InputType) = 0; virtual HRESULT STDMETHODCALLTYPE get_InputType( /* [in] */ long lIndex, /* [out] */ TunerInputType *pInputType) = 0; virtual HRESULT STDMETHODCALLTYPE put_ConnectInput( /* [in] */ long lIndex) = 0; virtual HRESULT STDMETHODCALLTYPE get_ConnectInput( /* [out] */ long *plIndex) = 0; virtual HRESULT STDMETHODCALLTYPE get_VideoFrequency( /* [out] */ long *lFreq) = 0; virtual HRESULT STDMETHODCALLTYPE get_AudioFrequency( /* [out] */ long *lFreq) = 0; }; #else /* C style interface */ typedef struct IAMTVTunerVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMTVTuner * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMTVTuner * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMTVTuner * This); HRESULT ( STDMETHODCALLTYPE *put_Channel )( IAMTVTuner * This, /* [in] */ long lChannel, /* [in] */ long lVideoSubChannel, /* [in] */ long lAudioSubChannel); HRESULT ( STDMETHODCALLTYPE *get_Channel )( IAMTVTuner * This, /* [out] */ long *plChannel, /* [out] */ long *plVideoSubChannel, /* [out] */ long *plAudioSubChannel); HRESULT ( STDMETHODCALLTYPE *ChannelMinMax )( IAMTVTuner * This, /* [out] */ long *lChannelMin, /* [out] */ long *lChannelMax); HRESULT ( STDMETHODCALLTYPE *put_CountryCode )( IAMTVTuner * This, /* [in] */ long lCountryCode); HRESULT ( STDMETHODCALLTYPE *get_CountryCode )( IAMTVTuner * This, /* [out] */ long *plCountryCode); HRESULT ( STDMETHODCALLTYPE *put_TuningSpace )( IAMTVTuner * This, /* [in] */ long lTuningSpace); HRESULT ( STDMETHODCALLTYPE *get_TuningSpace )( IAMTVTuner * This, /* [out] */ long *plTuningSpace); /* [local] */ HRESULT ( STDMETHODCALLTYPE *Logon )( IAMTVTuner * This, /* [in] */ HANDLE hCurrentUser); HRESULT ( STDMETHODCALLTYPE *Logout )( IAMTVTuner * This); HRESULT ( STDMETHODCALLTYPE *SignalPresent )( IAMTVTuner * This, /* [out] */ long *plSignalStrength); HRESULT ( STDMETHODCALLTYPE *put_Mode )( IAMTVTuner * This, /* [in] */ AMTunerModeType lMode); HRESULT ( STDMETHODCALLTYPE *get_Mode )( IAMTVTuner * This, /* [out] */ AMTunerModeType *plMode); HRESULT ( STDMETHODCALLTYPE *GetAvailableModes )( IAMTVTuner * This, /* [out] */ long *plModes); HRESULT ( STDMETHODCALLTYPE *RegisterNotificationCallBack )( IAMTVTuner * This, /* [in] */ IAMTunerNotification *pNotify, /* [in] */ long lEvents); HRESULT ( STDMETHODCALLTYPE *UnRegisterNotificationCallBack )( IAMTVTuner * This, /* [in] */ IAMTunerNotification *pNotify); HRESULT ( STDMETHODCALLTYPE *get_AvailableTVFormats )( IAMTVTuner * This, /* [out] */ long *lAnalogVideoStandard); HRESULT ( STDMETHODCALLTYPE *get_TVFormat )( IAMTVTuner * This, /* [out] */ long *plAnalogVideoStandard); HRESULT ( STDMETHODCALLTYPE *AutoTune )( IAMTVTuner * This, /* [in] */ long lChannel, /* [out] */ long *plFoundSignal); HRESULT ( STDMETHODCALLTYPE *StoreAutoTune )( IAMTVTuner * This); HRESULT ( STDMETHODCALLTYPE *get_NumInputConnections )( IAMTVTuner * This, /* [out] */ long *plNumInputConnections); HRESULT ( STDMETHODCALLTYPE *put_InputType )( IAMTVTuner * This, /* [in] */ long lIndex, /* [in] */ TunerInputType InputType); HRESULT ( STDMETHODCALLTYPE *get_InputType )( IAMTVTuner * This, /* [in] */ long lIndex, /* [out] */ TunerInputType *pInputType); HRESULT ( STDMETHODCALLTYPE *put_ConnectInput )( IAMTVTuner * This, /* [in] */ long lIndex); HRESULT ( STDMETHODCALLTYPE *get_ConnectInput )( IAMTVTuner * This, /* [out] */ long *plIndex); HRESULT ( STDMETHODCALLTYPE *get_VideoFrequency )( IAMTVTuner * This, /* [out] */ long *lFreq); HRESULT ( STDMETHODCALLTYPE *get_AudioFrequency )( IAMTVTuner * This, /* [out] */ long *lFreq); END_INTERFACE } IAMTVTunerVtbl; interface IAMTVTuner { CONST_VTBL struct IAMTVTunerVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMTVTuner_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMTVTuner_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMTVTuner_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMTVTuner_put_Channel(This,lChannel,lVideoSubChannel,lAudioSubChannel) \ (This)->lpVtbl -> put_Channel(This,lChannel,lVideoSubChannel,lAudioSubChannel) #define IAMTVTuner_get_Channel(This,plChannel,plVideoSubChannel,plAudioSubChannel) \ (This)->lpVtbl -> get_Channel(This,plChannel,plVideoSubChannel,plAudioSubChannel) #define IAMTVTuner_ChannelMinMax(This,lChannelMin,lChannelMax) \ (This)->lpVtbl -> ChannelMinMax(This,lChannelMin,lChannelMax) #define IAMTVTuner_put_CountryCode(This,lCountryCode) \ (This)->lpVtbl -> put_CountryCode(This,lCountryCode) #define IAMTVTuner_get_CountryCode(This,plCountryCode) \ (This)->lpVtbl -> get_CountryCode(This,plCountryCode) #define IAMTVTuner_put_TuningSpace(This,lTuningSpace) \ (This)->lpVtbl -> put_TuningSpace(This,lTuningSpace) #define IAMTVTuner_get_TuningSpace(This,plTuningSpace) \ (This)->lpVtbl -> get_TuningSpace(This,plTuningSpace) #define IAMTVTuner_Logon(This,hCurrentUser) \ (This)->lpVtbl -> Logon(This,hCurrentUser) #define IAMTVTuner_Logout(This) \ (This)->lpVtbl -> Logout(This) #define IAMTVTuner_SignalPresent(This,plSignalStrength) \ (This)->lpVtbl -> SignalPresent(This,plSignalStrength) #define IAMTVTuner_put_Mode(This,lMode) \ (This)->lpVtbl -> put_Mode(This,lMode) #define IAMTVTuner_get_Mode(This,plMode) \ (This)->lpVtbl -> get_Mode(This,plMode) #define IAMTVTuner_GetAvailableModes(This,plModes) \ (This)->lpVtbl -> GetAvailableModes(This,plModes) #define IAMTVTuner_RegisterNotificationCallBack(This,pNotify,lEvents) \ (This)->lpVtbl -> RegisterNotificationCallBack(This,pNotify,lEvents) #define IAMTVTuner_UnRegisterNotificationCallBack(This,pNotify) \ (This)->lpVtbl -> UnRegisterNotificationCallBack(This,pNotify) #define IAMTVTuner_get_AvailableTVFormats(This,lAnalogVideoStandard) \ (This)->lpVtbl -> get_AvailableTVFormats(This,lAnalogVideoStandard) #define IAMTVTuner_get_TVFormat(This,plAnalogVideoStandard) \ (This)->lpVtbl -> get_TVFormat(This,plAnalogVideoStandard) #define IAMTVTuner_AutoTune(This,lChannel,plFoundSignal) \ (This)->lpVtbl -> AutoTune(This,lChannel,plFoundSignal) #define IAMTVTuner_StoreAutoTune(This) \ (This)->lpVtbl -> StoreAutoTune(This) #define IAMTVTuner_get_NumInputConnections(This,plNumInputConnections) \ (This)->lpVtbl -> get_NumInputConnections(This,plNumInputConnections) #define IAMTVTuner_put_InputType(This,lIndex,InputType) \ (This)->lpVtbl -> put_InputType(This,lIndex,InputType) #define IAMTVTuner_get_InputType(This,lIndex,pInputType) \ (This)->lpVtbl -> get_InputType(This,lIndex,pInputType) #define IAMTVTuner_put_ConnectInput(This,lIndex) \ (This)->lpVtbl -> put_ConnectInput(This,lIndex) #define IAMTVTuner_get_ConnectInput(This,plIndex) \ (This)->lpVtbl -> get_ConnectInput(This,plIndex) #define IAMTVTuner_get_VideoFrequency(This,lFreq) \ (This)->lpVtbl -> get_VideoFrequency(This,lFreq) #define IAMTVTuner_get_AudioFrequency(This,lFreq) \ (This)->lpVtbl -> get_AudioFrequency(This,lFreq) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMTVTuner_get_AvailableTVFormats_Proxy( IAMTVTuner * This, /* [out] */ long *lAnalogVideoStandard); void __RPC_STUB IAMTVTuner_get_AvailableTVFormats_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTVTuner_get_TVFormat_Proxy( IAMTVTuner * This, /* [out] */ long *plAnalogVideoStandard); void __RPC_STUB IAMTVTuner_get_TVFormat_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTVTuner_AutoTune_Proxy( IAMTVTuner * This, /* [in] */ long lChannel, /* [out] */ long *plFoundSignal); void __RPC_STUB IAMTVTuner_AutoTune_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTVTuner_StoreAutoTune_Proxy( IAMTVTuner * This); void __RPC_STUB IAMTVTuner_StoreAutoTune_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTVTuner_get_NumInputConnections_Proxy( IAMTVTuner * This, /* [out] */ long *plNumInputConnections); void __RPC_STUB IAMTVTuner_get_NumInputConnections_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTVTuner_put_InputType_Proxy( IAMTVTuner * This, /* [in] */ long lIndex, /* [in] */ TunerInputType InputType); void __RPC_STUB IAMTVTuner_put_InputType_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTVTuner_get_InputType_Proxy( IAMTVTuner * This, /* [in] */ long lIndex, /* [out] */ TunerInputType *pInputType); void __RPC_STUB IAMTVTuner_get_InputType_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTVTuner_put_ConnectInput_Proxy( IAMTVTuner * This, /* [in] */ long lIndex); void __RPC_STUB IAMTVTuner_put_ConnectInput_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTVTuner_get_ConnectInput_Proxy( IAMTVTuner * This, /* [out] */ long *plIndex); void __RPC_STUB IAMTVTuner_get_ConnectInput_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTVTuner_get_VideoFrequency_Proxy( IAMTVTuner * This, /* [out] */ long *lFreq); void __RPC_STUB IAMTVTuner_get_VideoFrequency_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTVTuner_get_AudioFrequency_Proxy( IAMTVTuner * This, /* [out] */ long *lFreq); void __RPC_STUB IAMTVTuner_get_AudioFrequency_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMTVTuner_INTERFACE_DEFINED__ */ #ifndef __IBPCSatelliteTuner_INTERFACE_DEFINED__ #define __IBPCSatelliteTuner_INTERFACE_DEFINED__ /* interface IBPCSatelliteTuner */ /* [unique][uuid][local][object] */ EXTERN_C const IID IID_IBPCSatelliteTuner; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("211A8765-03AC-11d1-8D13-00AA00BD8339") IBPCSatelliteTuner : public IAMTuner { public: virtual HRESULT STDMETHODCALLTYPE get_DefaultSubChannelTypes( /* [out] */ long *plDefaultVideoType, /* [out] */ long *plDefaultAudioType) = 0; virtual HRESULT STDMETHODCALLTYPE put_DefaultSubChannelTypes( /* [in] */ long lDefaultVideoType, /* [in] */ long lDefaultAudioType) = 0; virtual HRESULT STDMETHODCALLTYPE IsTapingPermitted( void) = 0; }; #else /* C style interface */ typedef struct IBPCSatelliteTunerVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IBPCSatelliteTuner * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IBPCSatelliteTuner * This); ULONG ( STDMETHODCALLTYPE *Release )( IBPCSatelliteTuner * This); HRESULT ( STDMETHODCALLTYPE *put_Channel )( IBPCSatelliteTuner * This, /* [in] */ long lChannel, /* [in] */ long lVideoSubChannel, /* [in] */ long lAudioSubChannel); HRESULT ( STDMETHODCALLTYPE *get_Channel )( IBPCSatelliteTuner * This, /* [out] */ long *plChannel, /* [out] */ long *plVideoSubChannel, /* [out] */ long *plAudioSubChannel); HRESULT ( STDMETHODCALLTYPE *ChannelMinMax )( IBPCSatelliteTuner * This, /* [out] */ long *lChannelMin, /* [out] */ long *lChannelMax); HRESULT ( STDMETHODCALLTYPE *put_CountryCode )( IBPCSatelliteTuner * This, /* [in] */ long lCountryCode); HRESULT ( STDMETHODCALLTYPE *get_CountryCode )( IBPCSatelliteTuner * This, /* [out] */ long *plCountryCode); HRESULT ( STDMETHODCALLTYPE *put_TuningSpace )( IBPCSatelliteTuner * This, /* [in] */ long lTuningSpace); HRESULT ( STDMETHODCALLTYPE *get_TuningSpace )( IBPCSatelliteTuner * This, /* [out] */ long *plTuningSpace); /* [local] */ HRESULT ( STDMETHODCALLTYPE *Logon )( IBPCSatelliteTuner * This, /* [in] */ HANDLE hCurrentUser); HRESULT ( STDMETHODCALLTYPE *Logout )( IBPCSatelliteTuner * This); HRESULT ( STDMETHODCALLTYPE *SignalPresent )( IBPCSatelliteTuner * This, /* [out] */ long *plSignalStrength); HRESULT ( STDMETHODCALLTYPE *put_Mode )( IBPCSatelliteTuner * This, /* [in] */ AMTunerModeType lMode); HRESULT ( STDMETHODCALLTYPE *get_Mode )( IBPCSatelliteTuner * This, /* [out] */ AMTunerModeType *plMode); HRESULT ( STDMETHODCALLTYPE *GetAvailableModes )( IBPCSatelliteTuner * This, /* [out] */ long *plModes); HRESULT ( STDMETHODCALLTYPE *RegisterNotificationCallBack )( IBPCSatelliteTuner * This, /* [in] */ IAMTunerNotification *pNotify, /* [in] */ long lEvents); HRESULT ( STDMETHODCALLTYPE *UnRegisterNotificationCallBack )( IBPCSatelliteTuner * This, /* [in] */ IAMTunerNotification *pNotify); HRESULT ( STDMETHODCALLTYPE *get_DefaultSubChannelTypes )( IBPCSatelliteTuner * This, /* [out] */ long *plDefaultVideoType, /* [out] */ long *plDefaultAudioType); HRESULT ( STDMETHODCALLTYPE *put_DefaultSubChannelTypes )( IBPCSatelliteTuner * This, /* [in] */ long lDefaultVideoType, /* [in] */ long lDefaultAudioType); HRESULT ( STDMETHODCALLTYPE *IsTapingPermitted )( IBPCSatelliteTuner * This); END_INTERFACE } IBPCSatelliteTunerVtbl; interface IBPCSatelliteTuner { CONST_VTBL struct IBPCSatelliteTunerVtbl *lpVtbl; }; #ifdef COBJMACROS #define IBPCSatelliteTuner_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IBPCSatelliteTuner_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IBPCSatelliteTuner_Release(This) \ (This)->lpVtbl -> Release(This) #define IBPCSatelliteTuner_put_Channel(This,lChannel,lVideoSubChannel,lAudioSubChannel) \ (This)->lpVtbl -> put_Channel(This,lChannel,lVideoSubChannel,lAudioSubChannel) #define IBPCSatelliteTuner_get_Channel(This,plChannel,plVideoSubChannel,plAudioSubChannel) \ (This)->lpVtbl -> get_Channel(This,plChannel,plVideoSubChannel,plAudioSubChannel) #define IBPCSatelliteTuner_ChannelMinMax(This,lChannelMin,lChannelMax) \ (This)->lpVtbl -> ChannelMinMax(This,lChannelMin,lChannelMax) #define IBPCSatelliteTuner_put_CountryCode(This,lCountryCode) \ (This)->lpVtbl -> put_CountryCode(This,lCountryCode) #define IBPCSatelliteTuner_get_CountryCode(This,plCountryCode) \ (This)->lpVtbl -> get_CountryCode(This,plCountryCode) #define IBPCSatelliteTuner_put_TuningSpace(This,lTuningSpace) \ (This)->lpVtbl -> put_TuningSpace(This,lTuningSpace) #define IBPCSatelliteTuner_get_TuningSpace(This,plTuningSpace) \ (This)->lpVtbl -> get_TuningSpace(This,plTuningSpace) #define IBPCSatelliteTuner_Logon(This,hCurrentUser) \ (This)->lpVtbl -> Logon(This,hCurrentUser) #define IBPCSatelliteTuner_Logout(This) \ (This)->lpVtbl -> Logout(This) #define IBPCSatelliteTuner_SignalPresent(This,plSignalStrength) \ (This)->lpVtbl -> SignalPresent(This,plSignalStrength) #define IBPCSatelliteTuner_put_Mode(This,lMode) \ (This)->lpVtbl -> put_Mode(This,lMode) #define IBPCSatelliteTuner_get_Mode(This,plMode) \ (This)->lpVtbl -> get_Mode(This,plMode) #define IBPCSatelliteTuner_GetAvailableModes(This,plModes) \ (This)->lpVtbl -> GetAvailableModes(This,plModes) #define IBPCSatelliteTuner_RegisterNotificationCallBack(This,pNotify,lEvents) \ (This)->lpVtbl -> RegisterNotificationCallBack(This,pNotify,lEvents) #define IBPCSatelliteTuner_UnRegisterNotificationCallBack(This,pNotify) \ (This)->lpVtbl -> UnRegisterNotificationCallBack(This,pNotify) #define IBPCSatelliteTuner_get_DefaultSubChannelTypes(This,plDefaultVideoType,plDefaultAudioType) \ (This)->lpVtbl -> get_DefaultSubChannelTypes(This,plDefaultVideoType,plDefaultAudioType) #define IBPCSatelliteTuner_put_DefaultSubChannelTypes(This,lDefaultVideoType,lDefaultAudioType) \ (This)->lpVtbl -> put_DefaultSubChannelTypes(This,lDefaultVideoType,lDefaultAudioType) #define IBPCSatelliteTuner_IsTapingPermitted(This) \ (This)->lpVtbl -> IsTapingPermitted(This) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IBPCSatelliteTuner_get_DefaultSubChannelTypes_Proxy( IBPCSatelliteTuner * This, /* [out] */ long *plDefaultVideoType, /* [out] */ long *plDefaultAudioType); void __RPC_STUB IBPCSatelliteTuner_get_DefaultSubChannelTypes_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IBPCSatelliteTuner_put_DefaultSubChannelTypes_Proxy( IBPCSatelliteTuner * This, /* [in] */ long lDefaultVideoType, /* [in] */ long lDefaultAudioType); void __RPC_STUB IBPCSatelliteTuner_put_DefaultSubChannelTypes_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IBPCSatelliteTuner_IsTapingPermitted_Proxy( IBPCSatelliteTuner * This); void __RPC_STUB IBPCSatelliteTuner_IsTapingPermitted_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IBPCSatelliteTuner_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0177 */ /* [local] */ typedef enum tagTVAudioMode { AMTVAUDIO_MODE_MONO = 0x1, AMTVAUDIO_MODE_STEREO = 0x2, AMTVAUDIO_MODE_LANG_A = 0x10, AMTVAUDIO_MODE_LANG_B = 0x20, AMTVAUDIO_MODE_LANG_C = 0x40 } TVAudioMode; typedef enum tagAMTVAudioEventType { AMTVAUDIO_EVENT_CHANGED = 0x1 } AMTVAudioEventType; extern RPC_IF_HANDLE __MIDL_itf_strmif_0177_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0177_v0_0_s_ifspec; #ifndef __IAMTVAudio_INTERFACE_DEFINED__ #define __IAMTVAudio_INTERFACE_DEFINED__ /* interface IAMTVAudio */ /* [unique][uuid][local][object] */ EXTERN_C const IID IID_IAMTVAudio; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("83EC1C30-23D1-11d1-99E6-00A0C9560266") IAMTVAudio : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE GetHardwareSupportedTVAudioModes( /* [out] */ long *plModes) = 0; virtual HRESULT STDMETHODCALLTYPE GetAvailableTVAudioModes( /* [out] */ long *plModes) = 0; virtual HRESULT STDMETHODCALLTYPE get_TVAudioMode( /* [out] */ long *plMode) = 0; virtual HRESULT STDMETHODCALLTYPE put_TVAudioMode( /* [in] */ long lMode) = 0; virtual HRESULT STDMETHODCALLTYPE RegisterNotificationCallBack( /* [in] */ IAMTunerNotification *pNotify, /* [in] */ long lEvents) = 0; virtual HRESULT STDMETHODCALLTYPE UnRegisterNotificationCallBack( IAMTunerNotification *pNotify) = 0; }; #else /* C style interface */ typedef struct IAMTVAudioVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMTVAudio * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMTVAudio * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMTVAudio * This); HRESULT ( STDMETHODCALLTYPE *GetHardwareSupportedTVAudioModes )( IAMTVAudio * This, /* [out] */ long *plModes); HRESULT ( STDMETHODCALLTYPE *GetAvailableTVAudioModes )( IAMTVAudio * This, /* [out] */ long *plModes); HRESULT ( STDMETHODCALLTYPE *get_TVAudioMode )( IAMTVAudio * This, /* [out] */ long *plMode); HRESULT ( STDMETHODCALLTYPE *put_TVAudioMode )( IAMTVAudio * This, /* [in] */ long lMode); HRESULT ( STDMETHODCALLTYPE *RegisterNotificationCallBack )( IAMTVAudio * This, /* [in] */ IAMTunerNotification *pNotify, /* [in] */ long lEvents); HRESULT ( STDMETHODCALLTYPE *UnRegisterNotificationCallBack )( IAMTVAudio * This, IAMTunerNotification *pNotify); END_INTERFACE } IAMTVAudioVtbl; interface IAMTVAudio { CONST_VTBL struct IAMTVAudioVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMTVAudio_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMTVAudio_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMTVAudio_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMTVAudio_GetHardwareSupportedTVAudioModes(This,plModes) \ (This)->lpVtbl -> GetHardwareSupportedTVAudioModes(This,plModes) #define IAMTVAudio_GetAvailableTVAudioModes(This,plModes) \ (This)->lpVtbl -> GetAvailableTVAudioModes(This,plModes) #define IAMTVAudio_get_TVAudioMode(This,plMode) \ (This)->lpVtbl -> get_TVAudioMode(This,plMode) #define IAMTVAudio_put_TVAudioMode(This,lMode) \ (This)->lpVtbl -> put_TVAudioMode(This,lMode) #define IAMTVAudio_RegisterNotificationCallBack(This,pNotify,lEvents) \ (This)->lpVtbl -> RegisterNotificationCallBack(This,pNotify,lEvents) #define IAMTVAudio_UnRegisterNotificationCallBack(This,pNotify) \ (This)->lpVtbl -> UnRegisterNotificationCallBack(This,pNotify) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMTVAudio_GetHardwareSupportedTVAudioModes_Proxy( IAMTVAudio * This, /* [out] */ long *plModes); void __RPC_STUB IAMTVAudio_GetHardwareSupportedTVAudioModes_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTVAudio_GetAvailableTVAudioModes_Proxy( IAMTVAudio * This, /* [out] */ long *plModes); void __RPC_STUB IAMTVAudio_GetAvailableTVAudioModes_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTVAudio_get_TVAudioMode_Proxy( IAMTVAudio * This, /* [out] */ long *plMode); void __RPC_STUB IAMTVAudio_get_TVAudioMode_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTVAudio_put_TVAudioMode_Proxy( IAMTVAudio * This, /* [in] */ long lMode); void __RPC_STUB IAMTVAudio_put_TVAudioMode_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTVAudio_RegisterNotificationCallBack_Proxy( IAMTVAudio * This, /* [in] */ IAMTunerNotification *pNotify, /* [in] */ long lEvents); void __RPC_STUB IAMTVAudio_RegisterNotificationCallBack_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTVAudio_UnRegisterNotificationCallBack_Proxy( IAMTVAudio * This, IAMTunerNotification *pNotify); void __RPC_STUB IAMTVAudio_UnRegisterNotificationCallBack_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMTVAudio_INTERFACE_DEFINED__ */ #ifndef __IAMTVAudioNotification_INTERFACE_DEFINED__ #define __IAMTVAudioNotification_INTERFACE_DEFINED__ /* interface IAMTVAudioNotification */ /* [unique][uuid][local][object] */ EXTERN_C const IID IID_IAMTVAudioNotification; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("83EC1C33-23D1-11d1-99E6-00A0C9560266") IAMTVAudioNotification : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE OnEvent( /* [in] */ AMTVAudioEventType Event) = 0; }; #else /* C style interface */ typedef struct IAMTVAudioNotificationVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMTVAudioNotification * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMTVAudioNotification * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMTVAudioNotification * This); HRESULT ( STDMETHODCALLTYPE *OnEvent )( IAMTVAudioNotification * This, /* [in] */ AMTVAudioEventType Event); END_INTERFACE } IAMTVAudioNotificationVtbl; interface IAMTVAudioNotification { CONST_VTBL struct IAMTVAudioNotificationVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMTVAudioNotification_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMTVAudioNotification_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMTVAudioNotification_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMTVAudioNotification_OnEvent(This,Event) \ (This)->lpVtbl -> OnEvent(This,Event) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMTVAudioNotification_OnEvent_Proxy( IAMTVAudioNotification * This, /* [in] */ AMTVAudioEventType Event); void __RPC_STUB IAMTVAudioNotification_OnEvent_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMTVAudioNotification_INTERFACE_DEFINED__ */ #ifndef __IAMAnalogVideoEncoder_INTERFACE_DEFINED__ #define __IAMAnalogVideoEncoder_INTERFACE_DEFINED__ /* interface IAMAnalogVideoEncoder */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IAMAnalogVideoEncoder; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("C6E133B0-30AC-11d0-A18C-00A0C9118956") IAMAnalogVideoEncoder : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE get_AvailableTVFormats( /* [out] */ long *lAnalogVideoStandard) = 0; virtual HRESULT STDMETHODCALLTYPE put_TVFormat( /* [in] */ long lAnalogVideoStandard) = 0; virtual HRESULT STDMETHODCALLTYPE get_TVFormat( /* [out] */ long *plAnalogVideoStandard) = 0; virtual HRESULT STDMETHODCALLTYPE put_CopyProtection( /* [in] */ long lVideoCopyProtection) = 0; virtual HRESULT STDMETHODCALLTYPE get_CopyProtection( /* [out] */ long *lVideoCopyProtection) = 0; virtual HRESULT STDMETHODCALLTYPE put_CCEnable( /* [in] */ long lCCEnable) = 0; virtual HRESULT STDMETHODCALLTYPE get_CCEnable( /* [out] */ long *lCCEnable) = 0; }; #else /* C style interface */ typedef struct IAMAnalogVideoEncoderVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMAnalogVideoEncoder * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMAnalogVideoEncoder * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMAnalogVideoEncoder * This); HRESULT ( STDMETHODCALLTYPE *get_AvailableTVFormats )( IAMAnalogVideoEncoder * This, /* [out] */ long *lAnalogVideoStandard); HRESULT ( STDMETHODCALLTYPE *put_TVFormat )( IAMAnalogVideoEncoder * This, /* [in] */ long lAnalogVideoStandard); HRESULT ( STDMETHODCALLTYPE *get_TVFormat )( IAMAnalogVideoEncoder * This, /* [out] */ long *plAnalogVideoStandard); HRESULT ( STDMETHODCALLTYPE *put_CopyProtection )( IAMAnalogVideoEncoder * This, /* [in] */ long lVideoCopyProtection); HRESULT ( STDMETHODCALLTYPE *get_CopyProtection )( IAMAnalogVideoEncoder * This, /* [out] */ long *lVideoCopyProtection); HRESULT ( STDMETHODCALLTYPE *put_CCEnable )( IAMAnalogVideoEncoder * This, /* [in] */ long lCCEnable); HRESULT ( STDMETHODCALLTYPE *get_CCEnable )( IAMAnalogVideoEncoder * This, /* [out] */ long *lCCEnable); END_INTERFACE } IAMAnalogVideoEncoderVtbl; interface IAMAnalogVideoEncoder { CONST_VTBL struct IAMAnalogVideoEncoderVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMAnalogVideoEncoder_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMAnalogVideoEncoder_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMAnalogVideoEncoder_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMAnalogVideoEncoder_get_AvailableTVFormats(This,lAnalogVideoStandard) \ (This)->lpVtbl -> get_AvailableTVFormats(This,lAnalogVideoStandard) #define IAMAnalogVideoEncoder_put_TVFormat(This,lAnalogVideoStandard) \ (This)->lpVtbl -> put_TVFormat(This,lAnalogVideoStandard) #define IAMAnalogVideoEncoder_get_TVFormat(This,plAnalogVideoStandard) \ (This)->lpVtbl -> get_TVFormat(This,plAnalogVideoStandard) #define IAMAnalogVideoEncoder_put_CopyProtection(This,lVideoCopyProtection) \ (This)->lpVtbl -> put_CopyProtection(This,lVideoCopyProtection) #define IAMAnalogVideoEncoder_get_CopyProtection(This,lVideoCopyProtection) \ (This)->lpVtbl -> get_CopyProtection(This,lVideoCopyProtection) #define IAMAnalogVideoEncoder_put_CCEnable(This,lCCEnable) \ (This)->lpVtbl -> put_CCEnable(This,lCCEnable) #define IAMAnalogVideoEncoder_get_CCEnable(This,lCCEnable) \ (This)->lpVtbl -> get_CCEnable(This,lCCEnable) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMAnalogVideoEncoder_get_AvailableTVFormats_Proxy( IAMAnalogVideoEncoder * This, /* [out] */ long *lAnalogVideoStandard); void __RPC_STUB IAMAnalogVideoEncoder_get_AvailableTVFormats_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMAnalogVideoEncoder_put_TVFormat_Proxy( IAMAnalogVideoEncoder * This, /* [in] */ long lAnalogVideoStandard); void __RPC_STUB IAMAnalogVideoEncoder_put_TVFormat_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMAnalogVideoEncoder_get_TVFormat_Proxy( IAMAnalogVideoEncoder * This, /* [out] */ long *plAnalogVideoStandard); void __RPC_STUB IAMAnalogVideoEncoder_get_TVFormat_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMAnalogVideoEncoder_put_CopyProtection_Proxy( IAMAnalogVideoEncoder * This, /* [in] */ long lVideoCopyProtection); void __RPC_STUB IAMAnalogVideoEncoder_put_CopyProtection_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMAnalogVideoEncoder_get_CopyProtection_Proxy( IAMAnalogVideoEncoder * This, /* [out] */ long *lVideoCopyProtection); void __RPC_STUB IAMAnalogVideoEncoder_get_CopyProtection_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMAnalogVideoEncoder_put_CCEnable_Proxy( IAMAnalogVideoEncoder * This, /* [in] */ long lCCEnable); void __RPC_STUB IAMAnalogVideoEncoder_put_CCEnable_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMAnalogVideoEncoder_get_CCEnable_Proxy( IAMAnalogVideoEncoder * This, /* [out] */ long *lCCEnable); void __RPC_STUB IAMAnalogVideoEncoder_get_CCEnable_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMAnalogVideoEncoder_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0180 */ /* [local] */ typedef /* [public] */ enum __MIDL___MIDL_itf_strmif_0180_0001 { AMPROPERTY_PIN_CATEGORY = 0, AMPROPERTY_PIN_MEDIUM = AMPROPERTY_PIN_CATEGORY + 1 } AMPROPERTY_PIN; #ifndef _IKsPropertySet_ #define _IKsPropertySet_ #define KSPROPERTY_SUPPORT_GET 1 #define KSPROPERTY_SUPPORT_SET 2 extern RPC_IF_HANDLE __MIDL_itf_strmif_0180_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0180_v0_0_s_ifspec; #ifndef __IKsPropertySet_INTERFACE_DEFINED__ #define __IKsPropertySet_INTERFACE_DEFINED__ /* interface IKsPropertySet */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IKsPropertySet; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("31EFAC30-515C-11d0-A9AA-00AA0061BE93") IKsPropertySet : public IUnknown { public: virtual /* [local] */ HRESULT STDMETHODCALLTYPE Set( /* [in] */ REFGUID guidPropSet, /* [in] */ DWORD dwPropID, /* [size_is][in] */ LPVOID pInstanceData, /* [in] */ DWORD cbInstanceData, /* [size_is][in] */ LPVOID pPropData, /* [in] */ DWORD cbPropData) = 0; virtual /* [local] */ HRESULT STDMETHODCALLTYPE Get( /* [in] */ REFGUID guidPropSet, /* [in] */ DWORD dwPropID, /* [size_is][in] */ LPVOID pInstanceData, /* [in] */ DWORD cbInstanceData, /* [size_is][out] */ LPVOID pPropData, /* [in] */ DWORD cbPropData, /* [out] */ DWORD *pcbReturned) = 0; virtual HRESULT STDMETHODCALLTYPE QuerySupported( /* [in] */ REFGUID guidPropSet, /* [in] */ DWORD dwPropID, /* [out] */ DWORD *pTypeSupport) = 0; }; #else /* C style interface */ typedef struct IKsPropertySetVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IKsPropertySet * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IKsPropertySet * This); ULONG ( STDMETHODCALLTYPE *Release )( IKsPropertySet * This); /* [local] */ HRESULT ( STDMETHODCALLTYPE *Set )( IKsPropertySet * This, /* [in] */ REFGUID guidPropSet, /* [in] */ DWORD dwPropID, /* [size_is][in] */ LPVOID pInstanceData, /* [in] */ DWORD cbInstanceData, /* [size_is][in] */ LPVOID pPropData, /* [in] */ DWORD cbPropData); /* [local] */ HRESULT ( STDMETHODCALLTYPE *Get )( IKsPropertySet * This, /* [in] */ REFGUID guidPropSet, /* [in] */ DWORD dwPropID, /* [size_is][in] */ LPVOID pInstanceData, /* [in] */ DWORD cbInstanceData, /* [size_is][out] */ LPVOID pPropData, /* [in] */ DWORD cbPropData, /* [out] */ DWORD *pcbReturned); HRESULT ( STDMETHODCALLTYPE *QuerySupported )( IKsPropertySet * This, /* [in] */ REFGUID guidPropSet, /* [in] */ DWORD dwPropID, /* [out] */ DWORD *pTypeSupport); END_INTERFACE } IKsPropertySetVtbl; interface IKsPropertySet { CONST_VTBL struct IKsPropertySetVtbl *lpVtbl; }; #ifdef COBJMACROS #define IKsPropertySet_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IKsPropertySet_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IKsPropertySet_Release(This) \ (This)->lpVtbl -> Release(This) #define IKsPropertySet_Set(This,guidPropSet,dwPropID,pInstanceData,cbInstanceData,pPropData,cbPropData) \ (This)->lpVtbl -> Set(This,guidPropSet,dwPropID,pInstanceData,cbInstanceData,pPropData,cbPropData) #define IKsPropertySet_Get(This,guidPropSet,dwPropID,pInstanceData,cbInstanceData,pPropData,cbPropData,pcbReturned) \ (This)->lpVtbl -> Get(This,guidPropSet,dwPropID,pInstanceData,cbInstanceData,pPropData,cbPropData,pcbReturned) #define IKsPropertySet_QuerySupported(This,guidPropSet,dwPropID,pTypeSupport) \ (This)->lpVtbl -> QuerySupported(This,guidPropSet,dwPropID,pTypeSupport) #endif /* COBJMACROS */ #endif /* C style interface */ /* [call_as] */ HRESULT STDMETHODCALLTYPE IKsPropertySet_RemoteSet_Proxy( IKsPropertySet * This, /* [in] */ REFGUID guidPropSet, /* [in] */ DWORD dwPropID, /* [size_is][in] */ byte *pInstanceData, /* [in] */ DWORD cbInstanceData, /* [size_is][in] */ byte *pPropData, /* [in] */ DWORD cbPropData); void __RPC_STUB IKsPropertySet_RemoteSet_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); /* [call_as] */ HRESULT STDMETHODCALLTYPE IKsPropertySet_RemoteGet_Proxy( IKsPropertySet * This, /* [in] */ REFGUID guidPropSet, /* [in] */ DWORD dwPropID, /* [size_is][in] */ byte *pInstanceData, /* [in] */ DWORD cbInstanceData, /* [size_is][out] */ byte *pPropData, /* [in] */ DWORD cbPropData, /* [out] */ DWORD *pcbReturned); void __RPC_STUB IKsPropertySet_RemoteGet_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IKsPropertySet_QuerySupported_Proxy( IKsPropertySet * This, /* [in] */ REFGUID guidPropSet, /* [in] */ DWORD dwPropID, /* [out] */ DWORD *pTypeSupport); void __RPC_STUB IKsPropertySet_QuerySupported_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IKsPropertySet_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0181 */ /* [local] */ #endif // _IKsPropertySet_ extern RPC_IF_HANDLE __MIDL_itf_strmif_0181_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0181_v0_0_s_ifspec; #ifndef __IMediaPropertyBag_INTERFACE_DEFINED__ #define __IMediaPropertyBag_INTERFACE_DEFINED__ /* interface IMediaPropertyBag */ /* [unique][uuid][object] */ typedef IMediaPropertyBag *LPMEDIAPROPERTYBAG; EXTERN_C const IID IID_IMediaPropertyBag; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("6025A880-C0D5-11d0-BD4E-00A0C911CE86") IMediaPropertyBag : public IPropertyBag { public: virtual HRESULT STDMETHODCALLTYPE EnumProperty( /* [in] */ ULONG iProperty, /* [out][in] */ VARIANT *pvarPropertyName, /* [out][in] */ VARIANT *pvarPropertyValue) = 0; }; #else /* C style interface */ typedef struct IMediaPropertyBagVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IMediaPropertyBag * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IMediaPropertyBag * This); ULONG ( STDMETHODCALLTYPE *Release )( IMediaPropertyBag * This); /* [local] */ HRESULT ( STDMETHODCALLTYPE *Read )( IMediaPropertyBag * This, /* [in] */ LPCOLESTR pszPropName, /* [out][in] */ VARIANT *pVar, /* [in] */ IErrorLog *pErrorLog); HRESULT ( STDMETHODCALLTYPE *Write )( IMediaPropertyBag * This, /* [in] */ LPCOLESTR pszPropName, /* [in] */ VARIANT *pVar); HRESULT ( STDMETHODCALLTYPE *EnumProperty )( IMediaPropertyBag * This, /* [in] */ ULONG iProperty, /* [out][in] */ VARIANT *pvarPropertyName, /* [out][in] */ VARIANT *pvarPropertyValue); END_INTERFACE } IMediaPropertyBagVtbl; interface IMediaPropertyBag { CONST_VTBL struct IMediaPropertyBagVtbl *lpVtbl; }; #ifdef COBJMACROS #define IMediaPropertyBag_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IMediaPropertyBag_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IMediaPropertyBag_Release(This) \ (This)->lpVtbl -> Release(This) #define IMediaPropertyBag_Read(This,pszPropName,pVar,pErrorLog) \ (This)->lpVtbl -> Read(This,pszPropName,pVar,pErrorLog) #define IMediaPropertyBag_Write(This,pszPropName,pVar) \ (This)->lpVtbl -> Write(This,pszPropName,pVar) #define IMediaPropertyBag_EnumProperty(This,iProperty,pvarPropertyName,pvarPropertyValue) \ (This)->lpVtbl -> EnumProperty(This,iProperty,pvarPropertyName,pvarPropertyValue) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IMediaPropertyBag_EnumProperty_Proxy( IMediaPropertyBag * This, /* [in] */ ULONG iProperty, /* [out][in] */ VARIANT *pvarPropertyName, /* [out][in] */ VARIANT *pvarPropertyValue); void __RPC_STUB IMediaPropertyBag_EnumProperty_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IMediaPropertyBag_INTERFACE_DEFINED__ */ #ifndef __IPersistMediaPropertyBag_INTERFACE_DEFINED__ #define __IPersistMediaPropertyBag_INTERFACE_DEFINED__ /* interface IPersistMediaPropertyBag */ /* [unique][uuid][object] */ typedef IPersistMediaPropertyBag *LPPERSISTMEDIAPROPERTYBAG; EXTERN_C const IID IID_IPersistMediaPropertyBag; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("5738E040-B67F-11d0-BD4D-00A0C911CE86") IPersistMediaPropertyBag : public IPersist { public: virtual HRESULT STDMETHODCALLTYPE InitNew( void) = 0; virtual HRESULT STDMETHODCALLTYPE Load( /* [in] */ IMediaPropertyBag *pPropBag, /* [in] */ IErrorLog *pErrorLog) = 0; virtual HRESULT STDMETHODCALLTYPE Save( /* [in] */ IMediaPropertyBag *pPropBag, /* [in] */ BOOL fClearDirty, /* [in] */ BOOL fSaveAllProperties) = 0; }; #else /* C style interface */ typedef struct IPersistMediaPropertyBagVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IPersistMediaPropertyBag * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IPersistMediaPropertyBag * This); ULONG ( STDMETHODCALLTYPE *Release )( IPersistMediaPropertyBag * This); HRESULT ( STDMETHODCALLTYPE *GetClassID )( IPersistMediaPropertyBag * This, /* [out] */ CLSID *pClassID); HRESULT ( STDMETHODCALLTYPE *InitNew )( IPersistMediaPropertyBag * This); HRESULT ( STDMETHODCALLTYPE *Load )( IPersistMediaPropertyBag * This, /* [in] */ IMediaPropertyBag *pPropBag, /* [in] */ IErrorLog *pErrorLog); HRESULT ( STDMETHODCALLTYPE *Save )( IPersistMediaPropertyBag * This, /* [in] */ IMediaPropertyBag *pPropBag, /* [in] */ BOOL fClearDirty, /* [in] */ BOOL fSaveAllProperties); END_INTERFACE } IPersistMediaPropertyBagVtbl; interface IPersistMediaPropertyBag { CONST_VTBL struct IPersistMediaPropertyBagVtbl *lpVtbl; }; #ifdef COBJMACROS #define IPersistMediaPropertyBag_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IPersistMediaPropertyBag_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IPersistMediaPropertyBag_Release(This) \ (This)->lpVtbl -> Release(This) #define IPersistMediaPropertyBag_GetClassID(This,pClassID) \ (This)->lpVtbl -> GetClassID(This,pClassID) #define IPersistMediaPropertyBag_InitNew(This) \ (This)->lpVtbl -> InitNew(This) #define IPersistMediaPropertyBag_Load(This,pPropBag,pErrorLog) \ (This)->lpVtbl -> Load(This,pPropBag,pErrorLog) #define IPersistMediaPropertyBag_Save(This,pPropBag,fClearDirty,fSaveAllProperties) \ (This)->lpVtbl -> Save(This,pPropBag,fClearDirty,fSaveAllProperties) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IPersistMediaPropertyBag_InitNew_Proxy( IPersistMediaPropertyBag * This); void __RPC_STUB IPersistMediaPropertyBag_InitNew_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IPersistMediaPropertyBag_Load_Proxy( IPersistMediaPropertyBag * This, /* [in] */ IMediaPropertyBag *pPropBag, /* [in] */ IErrorLog *pErrorLog); void __RPC_STUB IPersistMediaPropertyBag_Load_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IPersistMediaPropertyBag_Save_Proxy( IPersistMediaPropertyBag * This, /* [in] */ IMediaPropertyBag *pPropBag, /* [in] */ BOOL fClearDirty, /* [in] */ BOOL fSaveAllProperties); void __RPC_STUB IPersistMediaPropertyBag_Save_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IPersistMediaPropertyBag_INTERFACE_DEFINED__ */ #ifndef __IAMPhysicalPinInfo_INTERFACE_DEFINED__ #define __IAMPhysicalPinInfo_INTERFACE_DEFINED__ /* interface IAMPhysicalPinInfo */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IAMPhysicalPinInfo; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("F938C991-3029-11cf-8C44-00AA006B6814") IAMPhysicalPinInfo : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE GetPhysicalType( /* [out] */ long *pType, /* [out] */ LPOLESTR *ppszType) = 0; }; #else /* C style interface */ typedef struct IAMPhysicalPinInfoVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMPhysicalPinInfo * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMPhysicalPinInfo * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMPhysicalPinInfo * This); HRESULT ( STDMETHODCALLTYPE *GetPhysicalType )( IAMPhysicalPinInfo * This, /* [out] */ long *pType, /* [out] */ LPOLESTR *ppszType); END_INTERFACE } IAMPhysicalPinInfoVtbl; interface IAMPhysicalPinInfo { CONST_VTBL struct IAMPhysicalPinInfoVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMPhysicalPinInfo_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMPhysicalPinInfo_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMPhysicalPinInfo_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMPhysicalPinInfo_GetPhysicalType(This,pType,ppszType) \ (This)->lpVtbl -> GetPhysicalType(This,pType,ppszType) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMPhysicalPinInfo_GetPhysicalType_Proxy( IAMPhysicalPinInfo * This, /* [out] */ long *pType, /* [out] */ LPOLESTR *ppszType); void __RPC_STUB IAMPhysicalPinInfo_GetPhysicalType_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMPhysicalPinInfo_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0328 */ /* [local] */ typedef IAMPhysicalPinInfo *PAMPHYSICALPININFO; extern RPC_IF_HANDLE __MIDL_itf_strmif_0328_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0328_v0_0_s_ifspec; #ifndef __IAMExtDevice_INTERFACE_DEFINED__ #define __IAMExtDevice_INTERFACE_DEFINED__ /* interface IAMExtDevice */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IAMExtDevice; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("B5730A90-1A2C-11cf-8C23-00AA006B6814") IAMExtDevice : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE GetCapability( /* [in] */ long Capability, /* [out] */ long *pValue, /* [out] */ double *pdblValue) = 0; virtual HRESULT STDMETHODCALLTYPE get_ExternalDeviceID( /* [out] */ LPOLESTR *ppszData) = 0; virtual HRESULT STDMETHODCALLTYPE get_ExternalDeviceVersion( /* [out] */ LPOLESTR *ppszData) = 0; virtual HRESULT STDMETHODCALLTYPE put_DevicePower( /* [in] */ long PowerMode) = 0; virtual HRESULT STDMETHODCALLTYPE get_DevicePower( /* [out] */ long *pPowerMode) = 0; virtual HRESULT STDMETHODCALLTYPE Calibrate( /* [in] */ HEVENT hEvent, /* [in] */ long Mode, /* [out] */ long *pStatus) = 0; virtual HRESULT STDMETHODCALLTYPE put_DevicePort( /* [in] */ long DevicePort) = 0; virtual HRESULT STDMETHODCALLTYPE get_DevicePort( /* [out] */ long *pDevicePort) = 0; }; #else /* C style interface */ typedef struct IAMExtDeviceVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMExtDevice * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMExtDevice * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMExtDevice * This); HRESULT ( STDMETHODCALLTYPE *GetCapability )( IAMExtDevice * This, /* [in] */ long Capability, /* [out] */ long *pValue, /* [out] */ double *pdblValue); HRESULT ( STDMETHODCALLTYPE *get_ExternalDeviceID )( IAMExtDevice * This, /* [out] */ LPOLESTR *ppszData); HRESULT ( STDMETHODCALLTYPE *get_ExternalDeviceVersion )( IAMExtDevice * This, /* [out] */ LPOLESTR *ppszData); HRESULT ( STDMETHODCALLTYPE *put_DevicePower )( IAMExtDevice * This, /* [in] */ long PowerMode); HRESULT ( STDMETHODCALLTYPE *get_DevicePower )( IAMExtDevice * This, /* [out] */ long *pPowerMode); HRESULT ( STDMETHODCALLTYPE *Calibrate )( IAMExtDevice * This, /* [in] */ HEVENT hEvent, /* [in] */ long Mode, /* [out] */ long *pStatus); HRESULT ( STDMETHODCALLTYPE *put_DevicePort )( IAMExtDevice * This, /* [in] */ long DevicePort); HRESULT ( STDMETHODCALLTYPE *get_DevicePort )( IAMExtDevice * This, /* [out] */ long *pDevicePort); END_INTERFACE } IAMExtDeviceVtbl; interface IAMExtDevice { CONST_VTBL struct IAMExtDeviceVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMExtDevice_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMExtDevice_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMExtDevice_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMExtDevice_GetCapability(This,Capability,pValue,pdblValue) \ (This)->lpVtbl -> GetCapability(This,Capability,pValue,pdblValue) #define IAMExtDevice_get_ExternalDeviceID(This,ppszData) \ (This)->lpVtbl -> get_ExternalDeviceID(This,ppszData) #define IAMExtDevice_get_ExternalDeviceVersion(This,ppszData) \ (This)->lpVtbl -> get_ExternalDeviceVersion(This,ppszData) #define IAMExtDevice_put_DevicePower(This,PowerMode) \ (This)->lpVtbl -> put_DevicePower(This,PowerMode) #define IAMExtDevice_get_DevicePower(This,pPowerMode) \ (This)->lpVtbl -> get_DevicePower(This,pPowerMode) #define IAMExtDevice_Calibrate(This,hEvent,Mode,pStatus) \ (This)->lpVtbl -> Calibrate(This,hEvent,Mode,pStatus) #define IAMExtDevice_put_DevicePort(This,DevicePort) \ (This)->lpVtbl -> put_DevicePort(This,DevicePort) #define IAMExtDevice_get_DevicePort(This,pDevicePort) \ (This)->lpVtbl -> get_DevicePort(This,pDevicePort) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMExtDevice_GetCapability_Proxy( IAMExtDevice * This, /* [in] */ long Capability, /* [out] */ long *pValue, /* [out] */ double *pdblValue); void __RPC_STUB IAMExtDevice_GetCapability_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMExtDevice_get_ExternalDeviceID_Proxy( IAMExtDevice * This, /* [out] */ LPOLESTR *ppszData); void __RPC_STUB IAMExtDevice_get_ExternalDeviceID_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMExtDevice_get_ExternalDeviceVersion_Proxy( IAMExtDevice * This, /* [out] */ LPOLESTR *ppszData); void __RPC_STUB IAMExtDevice_get_ExternalDeviceVersion_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMExtDevice_put_DevicePower_Proxy( IAMExtDevice * This, /* [in] */ long PowerMode); void __RPC_STUB IAMExtDevice_put_DevicePower_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMExtDevice_get_DevicePower_Proxy( IAMExtDevice * This, /* [out] */ long *pPowerMode); void __RPC_STUB IAMExtDevice_get_DevicePower_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMExtDevice_Calibrate_Proxy( IAMExtDevice * This, /* [in] */ HEVENT hEvent, /* [in] */ long Mode, /* [out] */ long *pStatus); void __RPC_STUB IAMExtDevice_Calibrate_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMExtDevice_put_DevicePort_Proxy( IAMExtDevice * This, /* [in] */ long DevicePort); void __RPC_STUB IAMExtDevice_put_DevicePort_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMExtDevice_get_DevicePort_Proxy( IAMExtDevice * This, /* [out] */ long *pDevicePort); void __RPC_STUB IAMExtDevice_get_DevicePort_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMExtDevice_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0329 */ /* [local] */ typedef IAMExtDevice *PEXTDEVICE; extern RPC_IF_HANDLE __MIDL_itf_strmif_0329_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0329_v0_0_s_ifspec; #ifndef __IAMExtTransport_INTERFACE_DEFINED__ #define __IAMExtTransport_INTERFACE_DEFINED__ /* interface IAMExtTransport */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IAMExtTransport; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("A03CD5F0-3045-11cf-8C44-00AA006B6814") IAMExtTransport : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE GetCapability( /* [in] */ long Capability, /* [out] */ long *pValue, /* [out] */ double *pdblValue) = 0; virtual HRESULT STDMETHODCALLTYPE put_MediaState( /* [in] */ long State) = 0; virtual HRESULT STDMETHODCALLTYPE get_MediaState( /* [out] */ long *pState) = 0; virtual HRESULT STDMETHODCALLTYPE put_LocalControl( /* [in] */ long State) = 0; virtual HRESULT STDMETHODCALLTYPE get_LocalControl( /* [out] */ long *pState) = 0; virtual HRESULT STDMETHODCALLTYPE GetStatus( /* [in] */ long StatusItem, /* [out] */ long *pValue) = 0; virtual HRESULT STDMETHODCALLTYPE GetTransportBasicParameters( /* [in] */ long Param, /* [out] */ long *pValue, /* [out] */ LPOLESTR *ppszData) = 0; virtual HRESULT STDMETHODCALLTYPE SetTransportBasicParameters( /* [in] */ long Param, /* [in] */ long Value, /* [in] */ LPCOLESTR pszData) = 0; virtual HRESULT STDMETHODCALLTYPE GetTransportVideoParameters( /* [in] */ long Param, /* [out] */ long *pValue) = 0; virtual HRESULT STDMETHODCALLTYPE SetTransportVideoParameters( /* [in] */ long Param, /* [in] */ long Value) = 0; virtual HRESULT STDMETHODCALLTYPE GetTransportAudioParameters( /* [in] */ long Param, /* [out] */ long *pValue) = 0; virtual HRESULT STDMETHODCALLTYPE SetTransportAudioParameters( /* [in] */ long Param, /* [in] */ long Value) = 0; virtual HRESULT STDMETHODCALLTYPE put_Mode( /* [in] */ long Mode) = 0; virtual HRESULT STDMETHODCALLTYPE get_Mode( /* [out] */ long *pMode) = 0; virtual HRESULT STDMETHODCALLTYPE put_Rate( /* [in] */ double dblRate) = 0; virtual HRESULT STDMETHODCALLTYPE get_Rate( /* [out] */ double *pdblRate) = 0; virtual HRESULT STDMETHODCALLTYPE GetChase( /* [out] */ long *pEnabled, /* [out] */ long *pOffset, /* [out] */ HEVENT *phEvent) = 0; virtual HRESULT STDMETHODCALLTYPE SetChase( /* [in] */ long Enable, /* [in] */ long Offset, /* [in] */ HEVENT hEvent) = 0; virtual HRESULT STDMETHODCALLTYPE GetBump( /* [out] */ long *pSpeed, /* [out] */ long *pDuration) = 0; virtual HRESULT STDMETHODCALLTYPE SetBump( /* [in] */ long Speed, /* [in] */ long Duration) = 0; virtual HRESULT STDMETHODCALLTYPE get_AntiClogControl( /* [out] */ long *pEnabled) = 0; virtual HRESULT STDMETHODCALLTYPE put_AntiClogControl( /* [in] */ long Enable) = 0; virtual HRESULT STDMETHODCALLTYPE GetEditPropertySet( /* [in] */ long EditID, /* [out] */ long *pState) = 0; virtual HRESULT STDMETHODCALLTYPE SetEditPropertySet( /* [out][in] */ long *pEditID, /* [in] */ long State) = 0; virtual HRESULT STDMETHODCALLTYPE GetEditProperty( /* [in] */ long EditID, /* [in] */ long Param, /* [out] */ long *pValue) = 0; virtual HRESULT STDMETHODCALLTYPE SetEditProperty( /* [in] */ long EditID, /* [in] */ long Param, /* [in] */ long Value) = 0; virtual HRESULT STDMETHODCALLTYPE get_EditStart( /* [out] */ long *pValue) = 0; virtual HRESULT STDMETHODCALLTYPE put_EditStart( /* [in] */ long Value) = 0; }; #else /* C style interface */ typedef struct IAMExtTransportVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMExtTransport * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMExtTransport * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMExtTransport * This); HRESULT ( STDMETHODCALLTYPE *GetCapability )( IAMExtTransport * This, /* [in] */ long Capability, /* [out] */ long *pValue, /* [out] */ double *pdblValue); HRESULT ( STDMETHODCALLTYPE *put_MediaState )( IAMExtTransport * This, /* [in] */ long State); HRESULT ( STDMETHODCALLTYPE *get_MediaState )( IAMExtTransport * This, /* [out] */ long *pState); HRESULT ( STDMETHODCALLTYPE *put_LocalControl )( IAMExtTransport * This, /* [in] */ long State); HRESULT ( STDMETHODCALLTYPE *get_LocalControl )( IAMExtTransport * This, /* [out] */ long *pState); HRESULT ( STDMETHODCALLTYPE *GetStatus )( IAMExtTransport * This, /* [in] */ long StatusItem, /* [out] */ long *pValue); HRESULT ( STDMETHODCALLTYPE *GetTransportBasicParameters )( IAMExtTransport * This, /* [in] */ long Param, /* [out] */ long *pValue, /* [out] */ LPOLESTR *ppszData); HRESULT ( STDMETHODCALLTYPE *SetTransportBasicParameters )( IAMExtTransport * This, /* [in] */ long Param, /* [in] */ long Value, /* [in] */ LPCOLESTR pszData); HRESULT ( STDMETHODCALLTYPE *GetTransportVideoParameters )( IAMExtTransport * This, /* [in] */ long Param, /* [out] */ long *pValue); HRESULT ( STDMETHODCALLTYPE *SetTransportVideoParameters )( IAMExtTransport * This, /* [in] */ long Param, /* [in] */ long Value); HRESULT ( STDMETHODCALLTYPE *GetTransportAudioParameters )( IAMExtTransport * This, /* [in] */ long Param, /* [out] */ long *pValue); HRESULT ( STDMETHODCALLTYPE *SetTransportAudioParameters )( IAMExtTransport * This, /* [in] */ long Param, /* [in] */ long Value); HRESULT ( STDMETHODCALLTYPE *put_Mode )( IAMExtTransport * This, /* [in] */ long Mode); HRESULT ( STDMETHODCALLTYPE *get_Mode )( IAMExtTransport * This, /* [out] */ long *pMode); HRESULT ( STDMETHODCALLTYPE *put_Rate )( IAMExtTransport * This, /* [in] */ double dblRate); HRESULT ( STDMETHODCALLTYPE *get_Rate )( IAMExtTransport * This, /* [out] */ double *pdblRate); HRESULT ( STDMETHODCALLTYPE *GetChase )( IAMExtTransport * This, /* [out] */ long *pEnabled, /* [out] */ long *pOffset, /* [out] */ HEVENT *phEvent); HRESULT ( STDMETHODCALLTYPE *SetChase )( IAMExtTransport * This, /* [in] */ long Enable, /* [in] */ long Offset, /* [in] */ HEVENT hEvent); HRESULT ( STDMETHODCALLTYPE *GetBump )( IAMExtTransport * This, /* [out] */ long *pSpeed, /* [out] */ long *pDuration); HRESULT ( STDMETHODCALLTYPE *SetBump )( IAMExtTransport * This, /* [in] */ long Speed, /* [in] */ long Duration); HRESULT ( STDMETHODCALLTYPE *get_AntiClogControl )( IAMExtTransport * This, /* [out] */ long *pEnabled); HRESULT ( STDMETHODCALLTYPE *put_AntiClogControl )( IAMExtTransport * This, /* [in] */ long Enable); HRESULT ( STDMETHODCALLTYPE *GetEditPropertySet )( IAMExtTransport * This, /* [in] */ long EditID, /* [out] */ long *pState); HRESULT ( STDMETHODCALLTYPE *SetEditPropertySet )( IAMExtTransport * This, /* [out][in] */ long *pEditID, /* [in] */ long State); HRESULT ( STDMETHODCALLTYPE *GetEditProperty )( IAMExtTransport * This, /* [in] */ long EditID, /* [in] */ long Param, /* [out] */ long *pValue); HRESULT ( STDMETHODCALLTYPE *SetEditProperty )( IAMExtTransport * This, /* [in] */ long EditID, /* [in] */ long Param, /* [in] */ long Value); HRESULT ( STDMETHODCALLTYPE *get_EditStart )( IAMExtTransport * This, /* [out] */ long *pValue); HRESULT ( STDMETHODCALLTYPE *put_EditStart )( IAMExtTransport * This, /* [in] */ long Value); END_INTERFACE } IAMExtTransportVtbl; interface IAMExtTransport { CONST_VTBL struct IAMExtTransportVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMExtTransport_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMExtTransport_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMExtTransport_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMExtTransport_GetCapability(This,Capability,pValue,pdblValue) \ (This)->lpVtbl -> GetCapability(This,Capability,pValue,pdblValue) #define IAMExtTransport_put_MediaState(This,State) \ (This)->lpVtbl -> put_MediaState(This,State) #define IAMExtTransport_get_MediaState(This,pState) \ (This)->lpVtbl -> get_MediaState(This,pState) #define IAMExtTransport_put_LocalControl(This,State) \ (This)->lpVtbl -> put_LocalControl(This,State) #define IAMExtTransport_get_LocalControl(This,pState) \ (This)->lpVtbl -> get_LocalControl(This,pState) #define IAMExtTransport_GetStatus(This,StatusItem,pValue) \ (This)->lpVtbl -> GetStatus(This,StatusItem,pValue) #define IAMExtTransport_GetTransportBasicParameters(This,Param,pValue,ppszData) \ (This)->lpVtbl -> GetTransportBasicParameters(This,Param,pValue,ppszData) #define IAMExtTransport_SetTransportBasicParameters(This,Param,Value,pszData) \ (This)->lpVtbl -> SetTransportBasicParameters(This,Param,Value,pszData) #define IAMExtTransport_GetTransportVideoParameters(This,Param,pValue) \ (This)->lpVtbl -> GetTransportVideoParameters(This,Param,pValue) #define IAMExtTransport_SetTransportVideoParameters(This,Param,Value) \ (This)->lpVtbl -> SetTransportVideoParameters(This,Param,Value) #define IAMExtTransport_GetTransportAudioParameters(This,Param,pValue) \ (This)->lpVtbl -> GetTransportAudioParameters(This,Param,pValue) #define IAMExtTransport_SetTransportAudioParameters(This,Param,Value) \ (This)->lpVtbl -> SetTransportAudioParameters(This,Param,Value) #define IAMExtTransport_put_Mode(This,Mode) \ (This)->lpVtbl -> put_Mode(This,Mode) #define IAMExtTransport_get_Mode(This,pMode) \ (This)->lpVtbl -> get_Mode(This,pMode) #define IAMExtTransport_put_Rate(This,dblRate) \ (This)->lpVtbl -> put_Rate(This,dblRate) #define IAMExtTransport_get_Rate(This,pdblRate) \ (This)->lpVtbl -> get_Rate(This,pdblRate) #define IAMExtTransport_GetChase(This,pEnabled,pOffset,phEvent) \ (This)->lpVtbl -> GetChase(This,pEnabled,pOffset,phEvent) #define IAMExtTransport_SetChase(This,Enable,Offset,hEvent) \ (This)->lpVtbl -> SetChase(This,Enable,Offset,hEvent) #define IAMExtTransport_GetBump(This,pSpeed,pDuration) \ (This)->lpVtbl -> GetBump(This,pSpeed,pDuration) #define IAMExtTransport_SetBump(This,Speed,Duration) \ (This)->lpVtbl -> SetBump(This,Speed,Duration) #define IAMExtTransport_get_AntiClogControl(This,pEnabled) \ (This)->lpVtbl -> get_AntiClogControl(This,pEnabled) #define IAMExtTransport_put_AntiClogControl(This,Enable) \ (This)->lpVtbl -> put_AntiClogControl(This,Enable) #define IAMExtTransport_GetEditPropertySet(This,EditID,pState) \ (This)->lpVtbl -> GetEditPropertySet(This,EditID,pState) #define IAMExtTransport_SetEditPropertySet(This,pEditID,State) \ (This)->lpVtbl -> SetEditPropertySet(This,pEditID,State) #define IAMExtTransport_GetEditProperty(This,EditID,Param,pValue) \ (This)->lpVtbl -> GetEditProperty(This,EditID,Param,pValue) #define IAMExtTransport_SetEditProperty(This,EditID,Param,Value) \ (This)->lpVtbl -> SetEditProperty(This,EditID,Param,Value) #define IAMExtTransport_get_EditStart(This,pValue) \ (This)->lpVtbl -> get_EditStart(This,pValue) #define IAMExtTransport_put_EditStart(This,Value) \ (This)->lpVtbl -> put_EditStart(This,Value) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMExtTransport_GetCapability_Proxy( IAMExtTransport * This, /* [in] */ long Capability, /* [out] */ long *pValue, /* [out] */ double *pdblValue); void __RPC_STUB IAMExtTransport_GetCapability_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMExtTransport_put_MediaState_Proxy( IAMExtTransport * This, /* [in] */ long State); void __RPC_STUB IAMExtTransport_put_MediaState_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMExtTransport_get_MediaState_Proxy( IAMExtTransport * This, /* [out] */ long *pState); void __RPC_STUB IAMExtTransport_get_MediaState_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMExtTransport_put_LocalControl_Proxy( IAMExtTransport * This, /* [in] */ long State); void __RPC_STUB IAMExtTransport_put_LocalControl_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMExtTransport_get_LocalControl_Proxy( IAMExtTransport * This, /* [out] */ long *pState); void __RPC_STUB IAMExtTransport_get_LocalControl_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMExtTransport_GetStatus_Proxy( IAMExtTransport * This, /* [in] */ long StatusItem, /* [out] */ long *pValue); void __RPC_STUB IAMExtTransport_GetStatus_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMExtTransport_GetTransportBasicParameters_Proxy( IAMExtTransport * This, /* [in] */ long Param, /* [out] */ long *pValue, /* [out] */ LPOLESTR *ppszData); void __RPC_STUB IAMExtTransport_GetTransportBasicParameters_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMExtTransport_SetTransportBasicParameters_Proxy( IAMExtTransport * This, /* [in] */ long Param, /* [in] */ long Value, /* [in] */ LPCOLESTR pszData); void __RPC_STUB IAMExtTransport_SetTransportBasicParameters_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMExtTransport_GetTransportVideoParameters_Proxy( IAMExtTransport * This, /* [in] */ long Param, /* [out] */ long *pValue); void __RPC_STUB IAMExtTransport_GetTransportVideoParameters_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMExtTransport_SetTransportVideoParameters_Proxy( IAMExtTransport * This, /* [in] */ long Param, /* [in] */ long Value); void __RPC_STUB IAMExtTransport_SetTransportVideoParameters_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMExtTransport_GetTransportAudioParameters_Proxy( IAMExtTransport * This, /* [in] */ long Param, /* [out] */ long *pValue); void __RPC_STUB IAMExtTransport_GetTransportAudioParameters_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMExtTransport_SetTransportAudioParameters_Proxy( IAMExtTransport * This, /* [in] */ long Param, /* [in] */ long Value); void __RPC_STUB IAMExtTransport_SetTransportAudioParameters_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMExtTransport_put_Mode_Proxy( IAMExtTransport * This, /* [in] */ long Mode); void __RPC_STUB IAMExtTransport_put_Mode_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMExtTransport_get_Mode_Proxy( IAMExtTransport * This, /* [out] */ long *pMode); void __RPC_STUB IAMExtTransport_get_Mode_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMExtTransport_put_Rate_Proxy( IAMExtTransport * This, /* [in] */ double dblRate); void __RPC_STUB IAMExtTransport_put_Rate_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMExtTransport_get_Rate_Proxy( IAMExtTransport * This, /* [out] */ double *pdblRate); void __RPC_STUB IAMExtTransport_get_Rate_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMExtTransport_GetChase_Proxy( IAMExtTransport * This, /* [out] */ long *pEnabled, /* [out] */ long *pOffset, /* [out] */ HEVENT *phEvent); void __RPC_STUB IAMExtTransport_GetChase_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMExtTransport_SetChase_Proxy( IAMExtTransport * This, /* [in] */ long Enable, /* [in] */ long Offset, /* [in] */ HEVENT hEvent); void __RPC_STUB IAMExtTransport_SetChase_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMExtTransport_GetBump_Proxy( IAMExtTransport * This, /* [out] */ long *pSpeed, /* [out] */ long *pDuration); void __RPC_STUB IAMExtTransport_GetBump_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMExtTransport_SetBump_Proxy( IAMExtTransport * This, /* [in] */ long Speed, /* [in] */ long Duration); void __RPC_STUB IAMExtTransport_SetBump_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMExtTransport_get_AntiClogControl_Proxy( IAMExtTransport * This, /* [out] */ long *pEnabled); void __RPC_STUB IAMExtTransport_get_AntiClogControl_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMExtTransport_put_AntiClogControl_Proxy( IAMExtTransport * This, /* [in] */ long Enable); void __RPC_STUB IAMExtTransport_put_AntiClogControl_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMExtTransport_GetEditPropertySet_Proxy( IAMExtTransport * This, /* [in] */ long EditID, /* [out] */ long *pState); void __RPC_STUB IAMExtTransport_GetEditPropertySet_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMExtTransport_SetEditPropertySet_Proxy( IAMExtTransport * This, /* [out][in] */ long *pEditID, /* [in] */ long State); void __RPC_STUB IAMExtTransport_SetEditPropertySet_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMExtTransport_GetEditProperty_Proxy( IAMExtTransport * This, /* [in] */ long EditID, /* [in] */ long Param, /* [out] */ long *pValue); void __RPC_STUB IAMExtTransport_GetEditProperty_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMExtTransport_SetEditProperty_Proxy( IAMExtTransport * This, /* [in] */ long EditID, /* [in] */ long Param, /* [in] */ long Value); void __RPC_STUB IAMExtTransport_SetEditProperty_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMExtTransport_get_EditStart_Proxy( IAMExtTransport * This, /* [out] */ long *pValue); void __RPC_STUB IAMExtTransport_get_EditStart_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMExtTransport_put_EditStart_Proxy( IAMExtTransport * This, /* [in] */ long Value); void __RPC_STUB IAMExtTransport_put_EditStart_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMExtTransport_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0330 */ /* [local] */ typedef IAMExtTransport *PIAMEXTTRANSPORT; #if 0 /* the following is what MIDL knows how to remote */ typedef struct tagTIMECODE { WORD wFrameRate; WORD wFrameFract; DWORD dwFrames; } TIMECODE; #else /* 0 */ #ifndef TIMECODE_DEFINED #define TIMECODE_DEFINED typedef union _timecode { struct { WORD wFrameRate; WORD wFrameFract; DWORD dwFrames; }; DWORDLONG qw; } TIMECODE; #endif /* TIMECODE_DEFINED */ #endif /* 0 */ typedef TIMECODE *PTIMECODE; typedef struct tagTIMECODE_SAMPLE { LONGLONG qwTick; TIMECODE timecode; DWORD dwUser; DWORD dwFlags; } TIMECODE_SAMPLE; typedef TIMECODE_SAMPLE *PTIMECODE_SAMPLE; extern RPC_IF_HANDLE __MIDL_itf_strmif_0330_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0330_v0_0_s_ifspec; #ifndef __IAMTimecodeReader_INTERFACE_DEFINED__ #define __IAMTimecodeReader_INTERFACE_DEFINED__ /* interface IAMTimecodeReader */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IAMTimecodeReader; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("9B496CE1-811B-11cf-8C77-00AA006B6814") IAMTimecodeReader : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE GetTCRMode( /* [in] */ long Param, /* [out] */ long *pValue) = 0; virtual HRESULT STDMETHODCALLTYPE SetTCRMode( /* [in] */ long Param, /* [in] */ long Value) = 0; virtual HRESULT STDMETHODCALLTYPE put_VITCLine( /* [in] */ long Line) = 0; virtual HRESULT STDMETHODCALLTYPE get_VITCLine( /* [out] */ long *pLine) = 0; virtual HRESULT STDMETHODCALLTYPE GetTimecode( /* [out] */ PTIMECODE_SAMPLE pTimecodeSample) = 0; }; #else /* C style interface */ typedef struct IAMTimecodeReaderVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMTimecodeReader * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMTimecodeReader * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMTimecodeReader * This); HRESULT ( STDMETHODCALLTYPE *GetTCRMode )( IAMTimecodeReader * This, /* [in] */ long Param, /* [out] */ long *pValue); HRESULT ( STDMETHODCALLTYPE *SetTCRMode )( IAMTimecodeReader * This, /* [in] */ long Param, /* [in] */ long Value); HRESULT ( STDMETHODCALLTYPE *put_VITCLine )( IAMTimecodeReader * This, /* [in] */ long Line); HRESULT ( STDMETHODCALLTYPE *get_VITCLine )( IAMTimecodeReader * This, /* [out] */ long *pLine); HRESULT ( STDMETHODCALLTYPE *GetTimecode )( IAMTimecodeReader * This, /* [out] */ PTIMECODE_SAMPLE pTimecodeSample); END_INTERFACE } IAMTimecodeReaderVtbl; interface IAMTimecodeReader { CONST_VTBL struct IAMTimecodeReaderVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMTimecodeReader_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMTimecodeReader_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMTimecodeReader_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMTimecodeReader_GetTCRMode(This,Param,pValue) \ (This)->lpVtbl -> GetTCRMode(This,Param,pValue) #define IAMTimecodeReader_SetTCRMode(This,Param,Value) \ (This)->lpVtbl -> SetTCRMode(This,Param,Value) #define IAMTimecodeReader_put_VITCLine(This,Line) \ (This)->lpVtbl -> put_VITCLine(This,Line) #define IAMTimecodeReader_get_VITCLine(This,pLine) \ (This)->lpVtbl -> get_VITCLine(This,pLine) #define IAMTimecodeReader_GetTimecode(This,pTimecodeSample) \ (This)->lpVtbl -> GetTimecode(This,pTimecodeSample) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMTimecodeReader_GetTCRMode_Proxy( IAMTimecodeReader * This, /* [in] */ long Param, /* [out] */ long *pValue); void __RPC_STUB IAMTimecodeReader_GetTCRMode_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTimecodeReader_SetTCRMode_Proxy( IAMTimecodeReader * This, /* [in] */ long Param, /* [in] */ long Value); void __RPC_STUB IAMTimecodeReader_SetTCRMode_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTimecodeReader_put_VITCLine_Proxy( IAMTimecodeReader * This, /* [in] */ long Line); void __RPC_STUB IAMTimecodeReader_put_VITCLine_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTimecodeReader_get_VITCLine_Proxy( IAMTimecodeReader * This, /* [out] */ long *pLine); void __RPC_STUB IAMTimecodeReader_get_VITCLine_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTimecodeReader_GetTimecode_Proxy( IAMTimecodeReader * This, /* [out] */ PTIMECODE_SAMPLE pTimecodeSample); void __RPC_STUB IAMTimecodeReader_GetTimecode_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMTimecodeReader_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0331 */ /* [local] */ typedef IAMTimecodeReader *PIAMTIMECODEREADER; extern RPC_IF_HANDLE __MIDL_itf_strmif_0331_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0331_v0_0_s_ifspec; #ifndef __IAMTimecodeGenerator_INTERFACE_DEFINED__ #define __IAMTimecodeGenerator_INTERFACE_DEFINED__ /* interface IAMTimecodeGenerator */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IAMTimecodeGenerator; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("9B496CE0-811B-11cf-8C77-00AA006B6814") IAMTimecodeGenerator : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE GetTCGMode( /* [in] */ long Param, /* [out] */ long *pValue) = 0; virtual HRESULT STDMETHODCALLTYPE SetTCGMode( /* [in] */ long Param, /* [in] */ long Value) = 0; virtual HRESULT STDMETHODCALLTYPE put_VITCLine( /* [in] */ long Line) = 0; virtual HRESULT STDMETHODCALLTYPE get_VITCLine( /* [out] */ long *pLine) = 0; virtual HRESULT STDMETHODCALLTYPE SetTimecode( /* [in] */ PTIMECODE_SAMPLE pTimecodeSample) = 0; virtual HRESULT STDMETHODCALLTYPE GetTimecode( /* [out] */ PTIMECODE_SAMPLE pTimecodeSample) = 0; }; #else /* C style interface */ typedef struct IAMTimecodeGeneratorVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMTimecodeGenerator * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMTimecodeGenerator * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMTimecodeGenerator * This); HRESULT ( STDMETHODCALLTYPE *GetTCGMode )( IAMTimecodeGenerator * This, /* [in] */ long Param, /* [out] */ long *pValue); HRESULT ( STDMETHODCALLTYPE *SetTCGMode )( IAMTimecodeGenerator * This, /* [in] */ long Param, /* [in] */ long Value); HRESULT ( STDMETHODCALLTYPE *put_VITCLine )( IAMTimecodeGenerator * This, /* [in] */ long Line); HRESULT ( STDMETHODCALLTYPE *get_VITCLine )( IAMTimecodeGenerator * This, /* [out] */ long *pLine); HRESULT ( STDMETHODCALLTYPE *SetTimecode )( IAMTimecodeGenerator * This, /* [in] */ PTIMECODE_SAMPLE pTimecodeSample); HRESULT ( STDMETHODCALLTYPE *GetTimecode )( IAMTimecodeGenerator * This, /* [out] */ PTIMECODE_SAMPLE pTimecodeSample); END_INTERFACE } IAMTimecodeGeneratorVtbl; interface IAMTimecodeGenerator { CONST_VTBL struct IAMTimecodeGeneratorVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMTimecodeGenerator_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMTimecodeGenerator_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMTimecodeGenerator_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMTimecodeGenerator_GetTCGMode(This,Param,pValue) \ (This)->lpVtbl -> GetTCGMode(This,Param,pValue) #define IAMTimecodeGenerator_SetTCGMode(This,Param,Value) \ (This)->lpVtbl -> SetTCGMode(This,Param,Value) #define IAMTimecodeGenerator_put_VITCLine(This,Line) \ (This)->lpVtbl -> put_VITCLine(This,Line) #define IAMTimecodeGenerator_get_VITCLine(This,pLine) \ (This)->lpVtbl -> get_VITCLine(This,pLine) #define IAMTimecodeGenerator_SetTimecode(This,pTimecodeSample) \ (This)->lpVtbl -> SetTimecode(This,pTimecodeSample) #define IAMTimecodeGenerator_GetTimecode(This,pTimecodeSample) \ (This)->lpVtbl -> GetTimecode(This,pTimecodeSample) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMTimecodeGenerator_GetTCGMode_Proxy( IAMTimecodeGenerator * This, /* [in] */ long Param, /* [out] */ long *pValue); void __RPC_STUB IAMTimecodeGenerator_GetTCGMode_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTimecodeGenerator_SetTCGMode_Proxy( IAMTimecodeGenerator * This, /* [in] */ long Param, /* [in] */ long Value); void __RPC_STUB IAMTimecodeGenerator_SetTCGMode_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTimecodeGenerator_put_VITCLine_Proxy( IAMTimecodeGenerator * This, /* [in] */ long Line); void __RPC_STUB IAMTimecodeGenerator_put_VITCLine_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTimecodeGenerator_get_VITCLine_Proxy( IAMTimecodeGenerator * This, /* [out] */ long *pLine); void __RPC_STUB IAMTimecodeGenerator_get_VITCLine_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTimecodeGenerator_SetTimecode_Proxy( IAMTimecodeGenerator * This, /* [in] */ PTIMECODE_SAMPLE pTimecodeSample); void __RPC_STUB IAMTimecodeGenerator_SetTimecode_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTimecodeGenerator_GetTimecode_Proxy( IAMTimecodeGenerator * This, /* [out] */ PTIMECODE_SAMPLE pTimecodeSample); void __RPC_STUB IAMTimecodeGenerator_GetTimecode_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMTimecodeGenerator_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0332 */ /* [local] */ typedef IAMTimecodeGenerator *PIAMTIMECODEGENERATOR; extern RPC_IF_HANDLE __MIDL_itf_strmif_0332_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0332_v0_0_s_ifspec; #ifndef __IAMTimecodeDisplay_INTERFACE_DEFINED__ #define __IAMTimecodeDisplay_INTERFACE_DEFINED__ /* interface IAMTimecodeDisplay */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IAMTimecodeDisplay; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("9B496CE2-811B-11cf-8C77-00AA006B6814") IAMTimecodeDisplay : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE GetTCDisplayEnable( /* [out] */ long *pState) = 0; virtual HRESULT STDMETHODCALLTYPE SetTCDisplayEnable( /* [in] */ long State) = 0; virtual HRESULT STDMETHODCALLTYPE GetTCDisplay( /* [in] */ long Param, /* [out] */ long *pValue) = 0; virtual HRESULT STDMETHODCALLTYPE SetTCDisplay( /* [in] */ long Param, /* [in] */ long Value) = 0; }; #else /* C style interface */ typedef struct IAMTimecodeDisplayVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMTimecodeDisplay * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMTimecodeDisplay * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMTimecodeDisplay * This); HRESULT ( STDMETHODCALLTYPE *GetTCDisplayEnable )( IAMTimecodeDisplay * This, /* [out] */ long *pState); HRESULT ( STDMETHODCALLTYPE *SetTCDisplayEnable )( IAMTimecodeDisplay * This, /* [in] */ long State); HRESULT ( STDMETHODCALLTYPE *GetTCDisplay )( IAMTimecodeDisplay * This, /* [in] */ long Param, /* [out] */ long *pValue); HRESULT ( STDMETHODCALLTYPE *SetTCDisplay )( IAMTimecodeDisplay * This, /* [in] */ long Param, /* [in] */ long Value); END_INTERFACE } IAMTimecodeDisplayVtbl; interface IAMTimecodeDisplay { CONST_VTBL struct IAMTimecodeDisplayVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMTimecodeDisplay_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMTimecodeDisplay_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMTimecodeDisplay_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMTimecodeDisplay_GetTCDisplayEnable(This,pState) \ (This)->lpVtbl -> GetTCDisplayEnable(This,pState) #define IAMTimecodeDisplay_SetTCDisplayEnable(This,State) \ (This)->lpVtbl -> SetTCDisplayEnable(This,State) #define IAMTimecodeDisplay_GetTCDisplay(This,Param,pValue) \ (This)->lpVtbl -> GetTCDisplay(This,Param,pValue) #define IAMTimecodeDisplay_SetTCDisplay(This,Param,Value) \ (This)->lpVtbl -> SetTCDisplay(This,Param,Value) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMTimecodeDisplay_GetTCDisplayEnable_Proxy( IAMTimecodeDisplay * This, /* [out] */ long *pState); void __RPC_STUB IAMTimecodeDisplay_GetTCDisplayEnable_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTimecodeDisplay_SetTCDisplayEnable_Proxy( IAMTimecodeDisplay * This, /* [in] */ long State); void __RPC_STUB IAMTimecodeDisplay_SetTCDisplayEnable_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTimecodeDisplay_GetTCDisplay_Proxy( IAMTimecodeDisplay * This, /* [in] */ long Param, /* [out] */ long *pValue); void __RPC_STUB IAMTimecodeDisplay_GetTCDisplay_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMTimecodeDisplay_SetTCDisplay_Proxy( IAMTimecodeDisplay * This, /* [in] */ long Param, /* [in] */ long Value); void __RPC_STUB IAMTimecodeDisplay_SetTCDisplay_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMTimecodeDisplay_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0333 */ /* [local] */ typedef IAMTimecodeDisplay *PIAMTIMECODEDISPLAY; extern RPC_IF_HANDLE __MIDL_itf_strmif_0333_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0333_v0_0_s_ifspec; #ifndef __IAMDevMemoryAllocator_INTERFACE_DEFINED__ #define __IAMDevMemoryAllocator_INTERFACE_DEFINED__ /* interface IAMDevMemoryAllocator */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IAMDevMemoryAllocator; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("c6545bf0-e76b-11d0-bd52-00a0c911ce86") IAMDevMemoryAllocator : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE GetInfo( /* [out] */ DWORD *pdwcbTotalFree, /* [out] */ DWORD *pdwcbLargestFree, /* [out] */ DWORD *pdwcbTotalMemory, /* [out] */ DWORD *pdwcbMinimumChunk) = 0; virtual HRESULT STDMETHODCALLTYPE CheckMemory( /* [in] */ const BYTE *pBuffer) = 0; virtual HRESULT STDMETHODCALLTYPE Alloc( /* [out] */ BYTE **ppBuffer, /* [out][in] */ DWORD *pdwcbBuffer) = 0; virtual HRESULT STDMETHODCALLTYPE Free( /* [in] */ BYTE *pBuffer) = 0; virtual HRESULT STDMETHODCALLTYPE GetDevMemoryObject( /* [out] */ IUnknown **ppUnkInnner, /* [in] */ IUnknown *pUnkOuter) = 0; }; #else /* C style interface */ typedef struct IAMDevMemoryAllocatorVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMDevMemoryAllocator * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMDevMemoryAllocator * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMDevMemoryAllocator * This); HRESULT ( STDMETHODCALLTYPE *GetInfo )( IAMDevMemoryAllocator * This, /* [out] */ DWORD *pdwcbTotalFree, /* [out] */ DWORD *pdwcbLargestFree, /* [out] */ DWORD *pdwcbTotalMemory, /* [out] */ DWORD *pdwcbMinimumChunk); HRESULT ( STDMETHODCALLTYPE *CheckMemory )( IAMDevMemoryAllocator * This, /* [in] */ const BYTE *pBuffer); HRESULT ( STDMETHODCALLTYPE *Alloc )( IAMDevMemoryAllocator * This, /* [out] */ BYTE **ppBuffer, /* [out][in] */ DWORD *pdwcbBuffer); HRESULT ( STDMETHODCALLTYPE *Free )( IAMDevMemoryAllocator * This, /* [in] */ BYTE *pBuffer); HRESULT ( STDMETHODCALLTYPE *GetDevMemoryObject )( IAMDevMemoryAllocator * This, /* [out] */ IUnknown **ppUnkInnner, /* [in] */ IUnknown *pUnkOuter); END_INTERFACE } IAMDevMemoryAllocatorVtbl; interface IAMDevMemoryAllocator { CONST_VTBL struct IAMDevMemoryAllocatorVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMDevMemoryAllocator_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMDevMemoryAllocator_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMDevMemoryAllocator_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMDevMemoryAllocator_GetInfo(This,pdwcbTotalFree,pdwcbLargestFree,pdwcbTotalMemory,pdwcbMinimumChunk) \ (This)->lpVtbl -> GetInfo(This,pdwcbTotalFree,pdwcbLargestFree,pdwcbTotalMemory,pdwcbMinimumChunk) #define IAMDevMemoryAllocator_CheckMemory(This,pBuffer) \ (This)->lpVtbl -> CheckMemory(This,pBuffer) #define IAMDevMemoryAllocator_Alloc(This,ppBuffer,pdwcbBuffer) \ (This)->lpVtbl -> Alloc(This,ppBuffer,pdwcbBuffer) #define IAMDevMemoryAllocator_Free(This,pBuffer) \ (This)->lpVtbl -> Free(This,pBuffer) #define IAMDevMemoryAllocator_GetDevMemoryObject(This,ppUnkInnner,pUnkOuter) \ (This)->lpVtbl -> GetDevMemoryObject(This,ppUnkInnner,pUnkOuter) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMDevMemoryAllocator_GetInfo_Proxy( IAMDevMemoryAllocator * This, /* [out] */ DWORD *pdwcbTotalFree, /* [out] */ DWORD *pdwcbLargestFree, /* [out] */ DWORD *pdwcbTotalMemory, /* [out] */ DWORD *pdwcbMinimumChunk); void __RPC_STUB IAMDevMemoryAllocator_GetInfo_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMDevMemoryAllocator_CheckMemory_Proxy( IAMDevMemoryAllocator * This, /* [in] */ const BYTE *pBuffer); void __RPC_STUB IAMDevMemoryAllocator_CheckMemory_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMDevMemoryAllocator_Alloc_Proxy( IAMDevMemoryAllocator * This, /* [out] */ BYTE **ppBuffer, /* [out][in] */ DWORD *pdwcbBuffer); void __RPC_STUB IAMDevMemoryAllocator_Alloc_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMDevMemoryAllocator_Free_Proxy( IAMDevMemoryAllocator * This, /* [in] */ BYTE *pBuffer); void __RPC_STUB IAMDevMemoryAllocator_Free_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMDevMemoryAllocator_GetDevMemoryObject_Proxy( IAMDevMemoryAllocator * This, /* [out] */ IUnknown **ppUnkInnner, /* [in] */ IUnknown *pUnkOuter); void __RPC_STUB IAMDevMemoryAllocator_GetDevMemoryObject_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMDevMemoryAllocator_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0334 */ /* [local] */ typedef IAMDevMemoryAllocator *PAMDEVMEMORYALLOCATOR; extern RPC_IF_HANDLE __MIDL_itf_strmif_0334_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0334_v0_0_s_ifspec; #ifndef __IAMDevMemoryControl_INTERFACE_DEFINED__ #define __IAMDevMemoryControl_INTERFACE_DEFINED__ /* interface IAMDevMemoryControl */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IAMDevMemoryControl; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("c6545bf1-e76b-11d0-bd52-00a0c911ce86") IAMDevMemoryControl : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE QueryWriteSync( void) = 0; virtual HRESULT STDMETHODCALLTYPE WriteSync( void) = 0; virtual HRESULT STDMETHODCALLTYPE GetDevId( /* [out] */ DWORD *pdwDevId) = 0; }; #else /* C style interface */ typedef struct IAMDevMemoryControlVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMDevMemoryControl * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMDevMemoryControl * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMDevMemoryControl * This); HRESULT ( STDMETHODCALLTYPE *QueryWriteSync )( IAMDevMemoryControl * This); HRESULT ( STDMETHODCALLTYPE *WriteSync )( IAMDevMemoryControl * This); HRESULT ( STDMETHODCALLTYPE *GetDevId )( IAMDevMemoryControl * This, /* [out] */ DWORD *pdwDevId); END_INTERFACE } IAMDevMemoryControlVtbl; interface IAMDevMemoryControl { CONST_VTBL struct IAMDevMemoryControlVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMDevMemoryControl_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMDevMemoryControl_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMDevMemoryControl_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMDevMemoryControl_QueryWriteSync(This) \ (This)->lpVtbl -> QueryWriteSync(This) #define IAMDevMemoryControl_WriteSync(This) \ (This)->lpVtbl -> WriteSync(This) #define IAMDevMemoryControl_GetDevId(This,pdwDevId) \ (This)->lpVtbl -> GetDevId(This,pdwDevId) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMDevMemoryControl_QueryWriteSync_Proxy( IAMDevMemoryControl * This); void __RPC_STUB IAMDevMemoryControl_QueryWriteSync_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMDevMemoryControl_WriteSync_Proxy( IAMDevMemoryControl * This); void __RPC_STUB IAMDevMemoryControl_WriteSync_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMDevMemoryControl_GetDevId_Proxy( IAMDevMemoryControl * This, /* [out] */ DWORD *pdwDevId); void __RPC_STUB IAMDevMemoryControl_GetDevId_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMDevMemoryControl_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0335 */ /* [local] */ typedef IAMDevMemoryControl *PAMDEVMEMORYCONTROL; enum _AMSTREAMSELECTINFOFLAGS { AMSTREAMSELECTINFO_ENABLED = 0x1, AMSTREAMSELECTINFO_EXCLUSIVE = 0x2 } ; enum _AMSTREAMSELECTENABLEFLAGS { AMSTREAMSELECTENABLE_ENABLE = 0x1, AMSTREAMSELECTENABLE_ENABLEALL = 0x2 } ; extern RPC_IF_HANDLE __MIDL_itf_strmif_0335_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0335_v0_0_s_ifspec; #ifndef __IAMStreamSelect_INTERFACE_DEFINED__ #define __IAMStreamSelect_INTERFACE_DEFINED__ /* interface IAMStreamSelect */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IAMStreamSelect; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("c1960960-17f5-11d1-abe1-00a0c905f375") IAMStreamSelect : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE Count( /* [out] */ DWORD *pcStreams) = 0; virtual HRESULT STDMETHODCALLTYPE Info( /* [in] */ long lIndex, /* [out] */ AM_MEDIA_TYPE **ppmt, /* [out] */ DWORD *pdwFlags, /* [out] */ LCID *plcid, /* [out] */ DWORD *pdwGroup, /* [out] */ WCHAR **ppszName, /* [out] */ IUnknown **ppObject, /* [out] */ IUnknown **ppUnk) = 0; virtual HRESULT STDMETHODCALLTYPE Enable( /* [in] */ long lIndex, /* [in] */ DWORD dwFlags) = 0; }; #else /* C style interface */ typedef struct IAMStreamSelectVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMStreamSelect * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMStreamSelect * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMStreamSelect * This); HRESULT ( STDMETHODCALLTYPE *Count )( IAMStreamSelect * This, /* [out] */ DWORD *pcStreams); HRESULT ( STDMETHODCALLTYPE *Info )( IAMStreamSelect * This, /* [in] */ long lIndex, /* [out] */ AM_MEDIA_TYPE **ppmt, /* [out] */ DWORD *pdwFlags, /* [out] */ LCID *plcid, /* [out] */ DWORD *pdwGroup, /* [out] */ WCHAR **ppszName, /* [out] */ IUnknown **ppObject, /* [out] */ IUnknown **ppUnk); HRESULT ( STDMETHODCALLTYPE *Enable )( IAMStreamSelect * This, /* [in] */ long lIndex, /* [in] */ DWORD dwFlags); END_INTERFACE } IAMStreamSelectVtbl; interface IAMStreamSelect { CONST_VTBL struct IAMStreamSelectVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMStreamSelect_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMStreamSelect_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMStreamSelect_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMStreamSelect_Count(This,pcStreams) \ (This)->lpVtbl -> Count(This,pcStreams) #define IAMStreamSelect_Info(This,lIndex,ppmt,pdwFlags,plcid,pdwGroup,ppszName,ppObject,ppUnk) \ (This)->lpVtbl -> Info(This,lIndex,ppmt,pdwFlags,plcid,pdwGroup,ppszName,ppObject,ppUnk) #define IAMStreamSelect_Enable(This,lIndex,dwFlags) \ (This)->lpVtbl -> Enable(This,lIndex,dwFlags) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMStreamSelect_Count_Proxy( IAMStreamSelect * This, /* [out] */ DWORD *pcStreams); void __RPC_STUB IAMStreamSelect_Count_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMStreamSelect_Info_Proxy( IAMStreamSelect * This, /* [in] */ long lIndex, /* [out] */ AM_MEDIA_TYPE **ppmt, /* [out] */ DWORD *pdwFlags, /* [out] */ LCID *plcid, /* [out] */ DWORD *pdwGroup, /* [out] */ WCHAR **ppszName, /* [out] */ IUnknown **ppObject, /* [out] */ IUnknown **ppUnk); void __RPC_STUB IAMStreamSelect_Info_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMStreamSelect_Enable_Proxy( IAMStreamSelect * This, /* [in] */ long lIndex, /* [in] */ DWORD dwFlags); void __RPC_STUB IAMStreamSelect_Enable_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMStreamSelect_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0336 */ /* [local] */ typedef IAMStreamSelect *PAMSTREAMSELECT; enum _AMRESCTL_RESERVEFLAGS { AMRESCTL_RESERVEFLAGS_RESERVE = 0, AMRESCTL_RESERVEFLAGS_UNRESERVE = 0x1 } ; extern RPC_IF_HANDLE __MIDL_itf_strmif_0336_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0336_v0_0_s_ifspec; #ifndef __IAMResourceControl_INTERFACE_DEFINED__ #define __IAMResourceControl_INTERFACE_DEFINED__ /* interface IAMResourceControl */ /* [local][unique][uuid][object] */ EXTERN_C const IID IID_IAMResourceControl; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("8389d2d0-77d7-11d1-abe6-00a0c905f375") IAMResourceControl : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE Reserve( /* [in] */ DWORD dwFlags, /* [in] */ PVOID pvReserved) = 0; }; #else /* C style interface */ typedef struct IAMResourceControlVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMResourceControl * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMResourceControl * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMResourceControl * This); HRESULT ( STDMETHODCALLTYPE *Reserve )( IAMResourceControl * This, /* [in] */ DWORD dwFlags, /* [in] */ PVOID pvReserved); END_INTERFACE } IAMResourceControlVtbl; interface IAMResourceControl { CONST_VTBL struct IAMResourceControlVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMResourceControl_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMResourceControl_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMResourceControl_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMResourceControl_Reserve(This,dwFlags,pvReserved) \ (This)->lpVtbl -> Reserve(This,dwFlags,pvReserved) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMResourceControl_Reserve_Proxy( IAMResourceControl * This, /* [in] */ DWORD dwFlags, /* [in] */ PVOID pvReserved); void __RPC_STUB IAMResourceControl_Reserve_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMResourceControl_INTERFACE_DEFINED__ */ #ifndef __IAMClockAdjust_INTERFACE_DEFINED__ #define __IAMClockAdjust_INTERFACE_DEFINED__ /* interface IAMClockAdjust */ /* [local][unique][uuid][object] */ EXTERN_C const IID IID_IAMClockAdjust; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("4d5466b0-a49c-11d1-abe8-00a0c905f375") IAMClockAdjust : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE SetClockDelta( /* [in] */ REFERENCE_TIME rtDelta) = 0; }; #else /* C style interface */ typedef struct IAMClockAdjustVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMClockAdjust * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMClockAdjust * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMClockAdjust * This); HRESULT ( STDMETHODCALLTYPE *SetClockDelta )( IAMClockAdjust * This, /* [in] */ REFERENCE_TIME rtDelta); END_INTERFACE } IAMClockAdjustVtbl; interface IAMClockAdjust { CONST_VTBL struct IAMClockAdjustVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMClockAdjust_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMClockAdjust_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMClockAdjust_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMClockAdjust_SetClockDelta(This,rtDelta) \ (This)->lpVtbl -> SetClockDelta(This,rtDelta) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMClockAdjust_SetClockDelta_Proxy( IAMClockAdjust * This, /* [in] */ REFERENCE_TIME rtDelta); void __RPC_STUB IAMClockAdjust_SetClockDelta_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMClockAdjust_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0338 */ /* [local] */ enum _AM_FILTER_MISC_FLAGS { AM_FILTER_MISC_FLAGS_IS_RENDERER = 0x1, AM_FILTER_MISC_FLAGS_IS_SOURCE = 0x2 } ; extern RPC_IF_HANDLE __MIDL_itf_strmif_0338_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0338_v0_0_s_ifspec; #ifndef __IAMFilterMiscFlags_INTERFACE_DEFINED__ #define __IAMFilterMiscFlags_INTERFACE_DEFINED__ /* interface IAMFilterMiscFlags */ /* [local][unique][uuid][object] */ EXTERN_C const IID IID_IAMFilterMiscFlags; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("2dd74950-a890-11d1-abe8-00a0c905f375") IAMFilterMiscFlags : public IUnknown { public: virtual ULONG STDMETHODCALLTYPE GetMiscFlags( void) = 0; }; #else /* C style interface */ typedef struct IAMFilterMiscFlagsVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMFilterMiscFlags * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMFilterMiscFlags * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMFilterMiscFlags * This); ULONG ( STDMETHODCALLTYPE *GetMiscFlags )( IAMFilterMiscFlags * This); END_INTERFACE } IAMFilterMiscFlagsVtbl; interface IAMFilterMiscFlags { CONST_VTBL struct IAMFilterMiscFlagsVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMFilterMiscFlags_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMFilterMiscFlags_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMFilterMiscFlags_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMFilterMiscFlags_GetMiscFlags(This) \ (This)->lpVtbl -> GetMiscFlags(This) #endif /* COBJMACROS */ #endif /* C style interface */ ULONG STDMETHODCALLTYPE IAMFilterMiscFlags_GetMiscFlags_Proxy( IAMFilterMiscFlags * This); void __RPC_STUB IAMFilterMiscFlags_GetMiscFlags_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMFilterMiscFlags_INTERFACE_DEFINED__ */ #ifndef __IDrawVideoImage_INTERFACE_DEFINED__ #define __IDrawVideoImage_INTERFACE_DEFINED__ /* interface IDrawVideoImage */ /* [unique][uuid][local][object] */ EXTERN_C const IID IID_IDrawVideoImage; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("48efb120-ab49-11d2-aed2-00a0c995e8d5") IDrawVideoImage : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE DrawVideoImageBegin( void) = 0; virtual HRESULT STDMETHODCALLTYPE DrawVideoImageEnd( void) = 0; virtual HRESULT STDMETHODCALLTYPE DrawVideoImageDraw( /* [in] */ HDC hdc, /* [in] */ LPRECT lprcSrc, /* [in] */ LPRECT lprcDst) = 0; }; #else /* C style interface */ typedef struct IDrawVideoImageVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IDrawVideoImage * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IDrawVideoImage * This); ULONG ( STDMETHODCALLTYPE *Release )( IDrawVideoImage * This); HRESULT ( STDMETHODCALLTYPE *DrawVideoImageBegin )( IDrawVideoImage * This); HRESULT ( STDMETHODCALLTYPE *DrawVideoImageEnd )( IDrawVideoImage * This); HRESULT ( STDMETHODCALLTYPE *DrawVideoImageDraw )( IDrawVideoImage * This, /* [in] */ HDC hdc, /* [in] */ LPRECT lprcSrc, /* [in] */ LPRECT lprcDst); END_INTERFACE } IDrawVideoImageVtbl; interface IDrawVideoImage { CONST_VTBL struct IDrawVideoImageVtbl *lpVtbl; }; #ifdef COBJMACROS #define IDrawVideoImage_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IDrawVideoImage_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IDrawVideoImage_Release(This) \ (This)->lpVtbl -> Release(This) #define IDrawVideoImage_DrawVideoImageBegin(This) \ (This)->lpVtbl -> DrawVideoImageBegin(This) #define IDrawVideoImage_DrawVideoImageEnd(This) \ (This)->lpVtbl -> DrawVideoImageEnd(This) #define IDrawVideoImage_DrawVideoImageDraw(This,hdc,lprcSrc,lprcDst) \ (This)->lpVtbl -> DrawVideoImageDraw(This,hdc,lprcSrc,lprcDst) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IDrawVideoImage_DrawVideoImageBegin_Proxy( IDrawVideoImage * This); void __RPC_STUB IDrawVideoImage_DrawVideoImageBegin_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDrawVideoImage_DrawVideoImageEnd_Proxy( IDrawVideoImage * This); void __RPC_STUB IDrawVideoImage_DrawVideoImageEnd_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDrawVideoImage_DrawVideoImageDraw_Proxy( IDrawVideoImage * This, /* [in] */ HDC hdc, /* [in] */ LPRECT lprcSrc, /* [in] */ LPRECT lprcDst); void __RPC_STUB IDrawVideoImage_DrawVideoImageDraw_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IDrawVideoImage_INTERFACE_DEFINED__ */ #ifndef __IDecimateVideoImage_INTERFACE_DEFINED__ #define __IDecimateVideoImage_INTERFACE_DEFINED__ /* interface IDecimateVideoImage */ /* [unique][uuid][local][object] */ EXTERN_C const IID IID_IDecimateVideoImage; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("2e5ea3e0-e924-11d2-b6da-00a0c995e8df") IDecimateVideoImage : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE SetDecimationImageSize( /* [in] */ long lWidth, /* [in] */ long lHeight) = 0; virtual HRESULT STDMETHODCALLTYPE ResetDecimationImageSize( void) = 0; }; #else /* C style interface */ typedef struct IDecimateVideoImageVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IDecimateVideoImage * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IDecimateVideoImage * This); ULONG ( STDMETHODCALLTYPE *Release )( IDecimateVideoImage * This); HRESULT ( STDMETHODCALLTYPE *SetDecimationImageSize )( IDecimateVideoImage * This, /* [in] */ long lWidth, /* [in] */ long lHeight); HRESULT ( STDMETHODCALLTYPE *ResetDecimationImageSize )( IDecimateVideoImage * This); END_INTERFACE } IDecimateVideoImageVtbl; interface IDecimateVideoImage { CONST_VTBL struct IDecimateVideoImageVtbl *lpVtbl; }; #ifdef COBJMACROS #define IDecimateVideoImage_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IDecimateVideoImage_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IDecimateVideoImage_Release(This) \ (This)->lpVtbl -> Release(This) #define IDecimateVideoImage_SetDecimationImageSize(This,lWidth,lHeight) \ (This)->lpVtbl -> SetDecimationImageSize(This,lWidth,lHeight) #define IDecimateVideoImage_ResetDecimationImageSize(This) \ (This)->lpVtbl -> ResetDecimationImageSize(This) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IDecimateVideoImage_SetDecimationImageSize_Proxy( IDecimateVideoImage * This, /* [in] */ long lWidth, /* [in] */ long lHeight); void __RPC_STUB IDecimateVideoImage_SetDecimationImageSize_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDecimateVideoImage_ResetDecimationImageSize_Proxy( IDecimateVideoImage * This); void __RPC_STUB IDecimateVideoImage_ResetDecimationImageSize_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IDecimateVideoImage_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0341 */ /* [local] */ typedef enum _DECIMATION_USAGE { DECIMATION_LEGACY = 0, DECIMATION_USE_DECODER_ONLY = DECIMATION_LEGACY + 1, DECIMATION_USE_VIDEOPORT_ONLY = DECIMATION_USE_DECODER_ONLY + 1, DECIMATION_USE_OVERLAY_ONLY = DECIMATION_USE_VIDEOPORT_ONLY + 1, DECIMATION_DEFAULT = DECIMATION_USE_OVERLAY_ONLY + 1 } DECIMATION_USAGE; extern RPC_IF_HANDLE __MIDL_itf_strmif_0341_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0341_v0_0_s_ifspec; #ifndef __IAMVideoDecimationProperties_INTERFACE_DEFINED__ #define __IAMVideoDecimationProperties_INTERFACE_DEFINED__ /* interface IAMVideoDecimationProperties */ /* [unique][uuid][local][object] */ EXTERN_C const IID IID_IAMVideoDecimationProperties; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("60d32930-13da-11d3-9ec6-c4fcaef5c7be") IAMVideoDecimationProperties : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE QueryDecimationUsage( /* [out] */ DECIMATION_USAGE *lpUsage) = 0; virtual HRESULT STDMETHODCALLTYPE SetDecimationUsage( /* [in] */ DECIMATION_USAGE Usage) = 0; }; #else /* C style interface */ typedef struct IAMVideoDecimationPropertiesVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMVideoDecimationProperties * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMVideoDecimationProperties * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMVideoDecimationProperties * This); HRESULT ( STDMETHODCALLTYPE *QueryDecimationUsage )( IAMVideoDecimationProperties * This, /* [out] */ DECIMATION_USAGE *lpUsage); HRESULT ( STDMETHODCALLTYPE *SetDecimationUsage )( IAMVideoDecimationProperties * This, /* [in] */ DECIMATION_USAGE Usage); END_INTERFACE } IAMVideoDecimationPropertiesVtbl; interface IAMVideoDecimationProperties { CONST_VTBL struct IAMVideoDecimationPropertiesVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMVideoDecimationProperties_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMVideoDecimationProperties_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMVideoDecimationProperties_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMVideoDecimationProperties_QueryDecimationUsage(This,lpUsage) \ (This)->lpVtbl -> QueryDecimationUsage(This,lpUsage) #define IAMVideoDecimationProperties_SetDecimationUsage(This,Usage) \ (This)->lpVtbl -> SetDecimationUsage(This,Usage) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMVideoDecimationProperties_QueryDecimationUsage_Proxy( IAMVideoDecimationProperties * This, /* [out] */ DECIMATION_USAGE *lpUsage); void __RPC_STUB IAMVideoDecimationProperties_QueryDecimationUsage_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMVideoDecimationProperties_SetDecimationUsage_Proxy( IAMVideoDecimationProperties * This, /* [in] */ DECIMATION_USAGE Usage); void __RPC_STUB IAMVideoDecimationProperties_SetDecimationUsage_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMVideoDecimationProperties_INTERFACE_DEFINED__ */ #ifndef __IVideoFrameStep_INTERFACE_DEFINED__ #define __IVideoFrameStep_INTERFACE_DEFINED__ /* interface IVideoFrameStep */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IVideoFrameStep; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("e46a9787-2b71-444d-a4b5-1fab7b708d6a") IVideoFrameStep : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE Step( DWORD dwFrames, /* [unique] */ IUnknown *pStepObject) = 0; virtual HRESULT STDMETHODCALLTYPE CanStep( long bMultiple, /* [unique] */ IUnknown *pStepObject) = 0; virtual HRESULT STDMETHODCALLTYPE CancelStep( void) = 0; }; #else /* C style interface */ typedef struct IVideoFrameStepVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IVideoFrameStep * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IVideoFrameStep * This); ULONG ( STDMETHODCALLTYPE *Release )( IVideoFrameStep * This); HRESULT ( STDMETHODCALLTYPE *Step )( IVideoFrameStep * This, DWORD dwFrames, /* [unique] */ IUnknown *pStepObject); HRESULT ( STDMETHODCALLTYPE *CanStep )( IVideoFrameStep * This, long bMultiple, /* [unique] */ IUnknown *pStepObject); HRESULT ( STDMETHODCALLTYPE *CancelStep )( IVideoFrameStep * This); END_INTERFACE } IVideoFrameStepVtbl; interface IVideoFrameStep { CONST_VTBL struct IVideoFrameStepVtbl *lpVtbl; }; #ifdef COBJMACROS #define IVideoFrameStep_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IVideoFrameStep_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IVideoFrameStep_Release(This) \ (This)->lpVtbl -> Release(This) #define IVideoFrameStep_Step(This,dwFrames,pStepObject) \ (This)->lpVtbl -> Step(This,dwFrames,pStepObject) #define IVideoFrameStep_CanStep(This,bMultiple,pStepObject) \ (This)->lpVtbl -> CanStep(This,bMultiple,pStepObject) #define IVideoFrameStep_CancelStep(This) \ (This)->lpVtbl -> CancelStep(This) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IVideoFrameStep_Step_Proxy( IVideoFrameStep * This, DWORD dwFrames, /* [unique] */ IUnknown *pStepObject); void __RPC_STUB IVideoFrameStep_Step_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVideoFrameStep_CanStep_Proxy( IVideoFrameStep * This, long bMultiple, /* [unique] */ IUnknown *pStepObject); void __RPC_STUB IVideoFrameStep_CanStep_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVideoFrameStep_CancelStep_Proxy( IVideoFrameStep * This); void __RPC_STUB IVideoFrameStep_CancelStep_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IVideoFrameStep_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0343 */ /* [local] */ enum _AM_PUSHSOURCE_FLAGS { AM_PUSHSOURCECAPS_INTERNAL_RM = 0x1, AM_PUSHSOURCECAPS_NOT_LIVE = 0x2, AM_PUSHSOURCECAPS_PRIVATE_CLOCK = 0x4, AM_PUSHSOURCEREQS_USE_STREAM_CLOCK = 0x10000 } ; extern RPC_IF_HANDLE __MIDL_itf_strmif_0343_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0343_v0_0_s_ifspec; #ifndef __IAMLatency_INTERFACE_DEFINED__ #define __IAMLatency_INTERFACE_DEFINED__ /* interface IAMLatency */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IAMLatency; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("62EA93BA-EC62-11d2-B770-00C04FB6BD3D") IAMLatency : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE GetLatency( /* [in] */ REFERENCE_TIME *prtLatency) = 0; }; #else /* C style interface */ typedef struct IAMLatencyVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMLatency * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMLatency * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMLatency * This); HRESULT ( STDMETHODCALLTYPE *GetLatency )( IAMLatency * This, /* [in] */ REFERENCE_TIME *prtLatency); END_INTERFACE } IAMLatencyVtbl; interface IAMLatency { CONST_VTBL struct IAMLatencyVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMLatency_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMLatency_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMLatency_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMLatency_GetLatency(This,prtLatency) \ (This)->lpVtbl -> GetLatency(This,prtLatency) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMLatency_GetLatency_Proxy( IAMLatency * This, /* [in] */ REFERENCE_TIME *prtLatency); void __RPC_STUB IAMLatency_GetLatency_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMLatency_INTERFACE_DEFINED__ */ #ifndef __IAMPushSource_INTERFACE_DEFINED__ #define __IAMPushSource_INTERFACE_DEFINED__ /* interface IAMPushSource */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IAMPushSource; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("F185FE76-E64E-11d2-B76E-00C04FB6BD3D") IAMPushSource : public IAMLatency { public: virtual HRESULT STDMETHODCALLTYPE GetPushSourceFlags( /* [out] */ ULONG *pFlags) = 0; virtual HRESULT STDMETHODCALLTYPE SetPushSourceFlags( /* [in] */ ULONG Flags) = 0; virtual HRESULT STDMETHODCALLTYPE SetStreamOffset( /* [in] */ REFERENCE_TIME rtOffset) = 0; virtual HRESULT STDMETHODCALLTYPE GetStreamOffset( /* [out] */ REFERENCE_TIME *prtOffset) = 0; virtual HRESULT STDMETHODCALLTYPE GetMaxStreamOffset( /* [out] */ REFERENCE_TIME *prtMaxOffset) = 0; virtual HRESULT STDMETHODCALLTYPE SetMaxStreamOffset( /* [in] */ REFERENCE_TIME rtMaxOffset) = 0; }; #else /* C style interface */ typedef struct IAMPushSourceVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMPushSource * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMPushSource * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMPushSource * This); HRESULT ( STDMETHODCALLTYPE *GetLatency )( IAMPushSource * This, /* [in] */ REFERENCE_TIME *prtLatency); HRESULT ( STDMETHODCALLTYPE *GetPushSourceFlags )( IAMPushSource * This, /* [out] */ ULONG *pFlags); HRESULT ( STDMETHODCALLTYPE *SetPushSourceFlags )( IAMPushSource * This, /* [in] */ ULONG Flags); HRESULT ( STDMETHODCALLTYPE *SetStreamOffset )( IAMPushSource * This, /* [in] */ REFERENCE_TIME rtOffset); HRESULT ( STDMETHODCALLTYPE *GetStreamOffset )( IAMPushSource * This, /* [out] */ REFERENCE_TIME *prtOffset); HRESULT ( STDMETHODCALLTYPE *GetMaxStreamOffset )( IAMPushSource * This, /* [out] */ REFERENCE_TIME *prtMaxOffset); HRESULT ( STDMETHODCALLTYPE *SetMaxStreamOffset )( IAMPushSource * This, /* [in] */ REFERENCE_TIME rtMaxOffset); END_INTERFACE } IAMPushSourceVtbl; interface IAMPushSource { CONST_VTBL struct IAMPushSourceVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMPushSource_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMPushSource_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMPushSource_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMPushSource_GetLatency(This,prtLatency) \ (This)->lpVtbl -> GetLatency(This,prtLatency) #define IAMPushSource_GetPushSourceFlags(This,pFlags) \ (This)->lpVtbl -> GetPushSourceFlags(This,pFlags) #define IAMPushSource_SetPushSourceFlags(This,Flags) \ (This)->lpVtbl -> SetPushSourceFlags(This,Flags) #define IAMPushSource_SetStreamOffset(This,rtOffset) \ (This)->lpVtbl -> SetStreamOffset(This,rtOffset) #define IAMPushSource_GetStreamOffset(This,prtOffset) \ (This)->lpVtbl -> GetStreamOffset(This,prtOffset) #define IAMPushSource_GetMaxStreamOffset(This,prtMaxOffset) \ (This)->lpVtbl -> GetMaxStreamOffset(This,prtMaxOffset) #define IAMPushSource_SetMaxStreamOffset(This,rtMaxOffset) \ (This)->lpVtbl -> SetMaxStreamOffset(This,rtMaxOffset) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMPushSource_GetPushSourceFlags_Proxy( IAMPushSource * This, /* [out] */ ULONG *pFlags); void __RPC_STUB IAMPushSource_GetPushSourceFlags_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMPushSource_SetPushSourceFlags_Proxy( IAMPushSource * This, /* [in] */ ULONG Flags); void __RPC_STUB IAMPushSource_SetPushSourceFlags_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMPushSource_SetStreamOffset_Proxy( IAMPushSource * This, /* [in] */ REFERENCE_TIME rtOffset); void __RPC_STUB IAMPushSource_SetStreamOffset_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMPushSource_GetStreamOffset_Proxy( IAMPushSource * This, /* [out] */ REFERENCE_TIME *prtOffset); void __RPC_STUB IAMPushSource_GetStreamOffset_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMPushSource_GetMaxStreamOffset_Proxy( IAMPushSource * This, /* [out] */ REFERENCE_TIME *prtMaxOffset); void __RPC_STUB IAMPushSource_GetMaxStreamOffset_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMPushSource_SetMaxStreamOffset_Proxy( IAMPushSource * This, /* [in] */ REFERENCE_TIME rtMaxOffset); void __RPC_STUB IAMPushSource_SetMaxStreamOffset_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMPushSource_INTERFACE_DEFINED__ */ #ifndef __IAMDeviceRemoval_INTERFACE_DEFINED__ #define __IAMDeviceRemoval_INTERFACE_DEFINED__ /* interface IAMDeviceRemoval */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IAMDeviceRemoval; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("f90a6130-b658-11d2-ae49-0000f8754b99") IAMDeviceRemoval : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE DeviceInfo( /* [out] */ CLSID *pclsidInterfaceClass, /* [out] */ WCHAR **pwszSymbolicLink) = 0; virtual HRESULT STDMETHODCALLTYPE Reassociate( void) = 0; virtual HRESULT STDMETHODCALLTYPE Disassociate( void) = 0; }; #else /* C style interface */ typedef struct IAMDeviceRemovalVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMDeviceRemoval * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMDeviceRemoval * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMDeviceRemoval * This); HRESULT ( STDMETHODCALLTYPE *DeviceInfo )( IAMDeviceRemoval * This, /* [out] */ CLSID *pclsidInterfaceClass, /* [out] */ WCHAR **pwszSymbolicLink); HRESULT ( STDMETHODCALLTYPE *Reassociate )( IAMDeviceRemoval * This); HRESULT ( STDMETHODCALLTYPE *Disassociate )( IAMDeviceRemoval * This); END_INTERFACE } IAMDeviceRemovalVtbl; interface IAMDeviceRemoval { CONST_VTBL struct IAMDeviceRemovalVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMDeviceRemoval_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMDeviceRemoval_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMDeviceRemoval_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMDeviceRemoval_DeviceInfo(This,pclsidInterfaceClass,pwszSymbolicLink) \ (This)->lpVtbl -> DeviceInfo(This,pclsidInterfaceClass,pwszSymbolicLink) #define IAMDeviceRemoval_Reassociate(This) \ (This)->lpVtbl -> Reassociate(This) #define IAMDeviceRemoval_Disassociate(This) \ (This)->lpVtbl -> Disassociate(This) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMDeviceRemoval_DeviceInfo_Proxy( IAMDeviceRemoval * This, /* [out] */ CLSID *pclsidInterfaceClass, /* [out] */ WCHAR **pwszSymbolicLink); void __RPC_STUB IAMDeviceRemoval_DeviceInfo_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMDeviceRemoval_Reassociate_Proxy( IAMDeviceRemoval * This); void __RPC_STUB IAMDeviceRemoval_Reassociate_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMDeviceRemoval_Disassociate_Proxy( IAMDeviceRemoval * This); void __RPC_STUB IAMDeviceRemoval_Disassociate_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMDeviceRemoval_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0345 */ /* [local] */ typedef /* [public][public][public] */ struct __MIDL___MIDL_itf_strmif_0345_0001 { DWORD dwDVAAuxSrc; DWORD dwDVAAuxCtl; DWORD dwDVAAuxSrc1; DWORD dwDVAAuxCtl1; DWORD dwDVVAuxSrc; DWORD dwDVVAuxCtl; DWORD dwDVReserved[ 2 ]; } DVINFO; typedef struct __MIDL___MIDL_itf_strmif_0345_0001 *PDVINFO; enum _DVENCODERRESOLUTION { DVENCODERRESOLUTION_720x480 = 2012, DVENCODERRESOLUTION_360x240 = 2013, DVENCODERRESOLUTION_180x120 = 2014, DVENCODERRESOLUTION_88x60 = 2015 } ; enum _DVENCODERVIDEOFORMAT { DVENCODERVIDEOFORMAT_NTSC = 2000, DVENCODERVIDEOFORMAT_PAL = 2001 } ; enum _DVENCODERFORMAT { DVENCODERFORMAT_DVSD = 2007, DVENCODERFORMAT_DVHD = 2008, DVENCODERFORMAT_DVSL = 2009 } ; extern RPC_IF_HANDLE __MIDL_itf_strmif_0345_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0345_v0_0_s_ifspec; #ifndef __IDVEnc_INTERFACE_DEFINED__ #define __IDVEnc_INTERFACE_DEFINED__ /* interface IDVEnc */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IDVEnc; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("d18e17a0-aacb-11d0-afb0-00aa00b67a42") IDVEnc : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE get_IFormatResolution( /* [out] */ int *VideoFormat, /* [out] */ int *DVFormat, /* [out] */ int *Resolution, /* [in] */ BYTE fDVInfo, /* [out] */ DVINFO *sDVInfo) = 0; virtual HRESULT STDMETHODCALLTYPE put_IFormatResolution( /* [in] */ int VideoFormat, /* [in] */ int DVFormat, /* [in] */ int Resolution, /* [in] */ BYTE fDVInfo, /* [in] */ DVINFO *sDVInfo) = 0; }; #else /* C style interface */ typedef struct IDVEncVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IDVEnc * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IDVEnc * This); ULONG ( STDMETHODCALLTYPE *Release )( IDVEnc * This); HRESULT ( STDMETHODCALLTYPE *get_IFormatResolution )( IDVEnc * This, /* [out] */ int *VideoFormat, /* [out] */ int *DVFormat, /* [out] */ int *Resolution, /* [in] */ BYTE fDVInfo, /* [out] */ DVINFO *sDVInfo); HRESULT ( STDMETHODCALLTYPE *put_IFormatResolution )( IDVEnc * This, /* [in] */ int VideoFormat, /* [in] */ int DVFormat, /* [in] */ int Resolution, /* [in] */ BYTE fDVInfo, /* [in] */ DVINFO *sDVInfo); END_INTERFACE } IDVEncVtbl; interface IDVEnc { CONST_VTBL struct IDVEncVtbl *lpVtbl; }; #ifdef COBJMACROS #define IDVEnc_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IDVEnc_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IDVEnc_Release(This) \ (This)->lpVtbl -> Release(This) #define IDVEnc_get_IFormatResolution(This,VideoFormat,DVFormat,Resolution,fDVInfo,sDVInfo) \ (This)->lpVtbl -> get_IFormatResolution(This,VideoFormat,DVFormat,Resolution,fDVInfo,sDVInfo) #define IDVEnc_put_IFormatResolution(This,VideoFormat,DVFormat,Resolution,fDVInfo,sDVInfo) \ (This)->lpVtbl -> put_IFormatResolution(This,VideoFormat,DVFormat,Resolution,fDVInfo,sDVInfo) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IDVEnc_get_IFormatResolution_Proxy( IDVEnc * This, /* [out] */ int *VideoFormat, /* [out] */ int *DVFormat, /* [out] */ int *Resolution, /* [in] */ BYTE fDVInfo, /* [out] */ DVINFO *sDVInfo); void __RPC_STUB IDVEnc_get_IFormatResolution_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDVEnc_put_IFormatResolution_Proxy( IDVEnc * This, /* [in] */ int VideoFormat, /* [in] */ int DVFormat, /* [in] */ int Resolution, /* [in] */ BYTE fDVInfo, /* [in] */ DVINFO *sDVInfo); void __RPC_STUB IDVEnc_put_IFormatResolution_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IDVEnc_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0346 */ /* [local] */ enum _DVDECODERRESOLUTION { DVDECODERRESOLUTION_720x480 = 1000, DVDECODERRESOLUTION_360x240 = 1001, DVDECODERRESOLUTION_180x120 = 1002, DVDECODERRESOLUTION_88x60 = 1003 } ; enum _DVRESOLUTION { DVRESOLUTION_FULL = 1000, DVRESOLUTION_HALF = 1001, DVRESOLUTION_QUARTER = 1002, DVRESOLUTION_DC = 1003 } ; extern RPC_IF_HANDLE __MIDL_itf_strmif_0346_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0346_v0_0_s_ifspec; #ifndef __IIPDVDec_INTERFACE_DEFINED__ #define __IIPDVDec_INTERFACE_DEFINED__ /* interface IIPDVDec */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IIPDVDec; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("b8e8bd60-0bfe-11d0-af91-00aa00b67a42") IIPDVDec : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE get_IPDisplay( /* [out] */ int *displayPix) = 0; virtual HRESULT STDMETHODCALLTYPE put_IPDisplay( /* [in] */ int displayPix) = 0; }; #else /* C style interface */ typedef struct IIPDVDecVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IIPDVDec * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IIPDVDec * This); ULONG ( STDMETHODCALLTYPE *Release )( IIPDVDec * This); HRESULT ( STDMETHODCALLTYPE *get_IPDisplay )( IIPDVDec * This, /* [out] */ int *displayPix); HRESULT ( STDMETHODCALLTYPE *put_IPDisplay )( IIPDVDec * This, /* [in] */ int displayPix); END_INTERFACE } IIPDVDecVtbl; interface IIPDVDec { CONST_VTBL struct IIPDVDecVtbl *lpVtbl; }; #ifdef COBJMACROS #define IIPDVDec_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IIPDVDec_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IIPDVDec_Release(This) \ (This)->lpVtbl -> Release(This) #define IIPDVDec_get_IPDisplay(This,displayPix) \ (This)->lpVtbl -> get_IPDisplay(This,displayPix) #define IIPDVDec_put_IPDisplay(This,displayPix) \ (This)->lpVtbl -> put_IPDisplay(This,displayPix) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IIPDVDec_get_IPDisplay_Proxy( IIPDVDec * This, /* [out] */ int *displayPix); void __RPC_STUB IIPDVDec_get_IPDisplay_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IIPDVDec_put_IPDisplay_Proxy( IIPDVDec * This, /* [in] */ int displayPix); void __RPC_STUB IIPDVDec_put_IPDisplay_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IIPDVDec_INTERFACE_DEFINED__ */ #ifndef __IDVRGB219_INTERFACE_DEFINED__ #define __IDVRGB219_INTERFACE_DEFINED__ /* interface IDVRGB219 */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IDVRGB219; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("58473A19-2BC8-4663-8012-25F81BABDDD1") IDVRGB219 : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE SetRGB219( /* [in] */ BOOL bState) = 0; }; #else /* C style interface */ typedef struct IDVRGB219Vtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IDVRGB219 * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IDVRGB219 * This); ULONG ( STDMETHODCALLTYPE *Release )( IDVRGB219 * This); HRESULT ( STDMETHODCALLTYPE *SetRGB219 )( IDVRGB219 * This, /* [in] */ BOOL bState); END_INTERFACE } IDVRGB219Vtbl; interface IDVRGB219 { CONST_VTBL struct IDVRGB219Vtbl *lpVtbl; }; #ifdef COBJMACROS #define IDVRGB219_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IDVRGB219_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IDVRGB219_Release(This) \ (This)->lpVtbl -> Release(This) #define IDVRGB219_SetRGB219(This,bState) \ (This)->lpVtbl -> SetRGB219(This,bState) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IDVRGB219_SetRGB219_Proxy( IDVRGB219 * This, /* [in] */ BOOL bState); void __RPC_STUB IDVRGB219_SetRGB219_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IDVRGB219_INTERFACE_DEFINED__ */ #ifndef __IDVSplitter_INTERFACE_DEFINED__ #define __IDVSplitter_INTERFACE_DEFINED__ /* interface IDVSplitter */ /* [uuid][object] */ EXTERN_C const IID IID_IDVSplitter; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("92a3a302-da7c-4a1f-ba7e-1802bb5d2d02") IDVSplitter : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE DiscardAlternateVideoFrames( /* [in] */ int nDiscard) = 0; }; #else /* C style interface */ typedef struct IDVSplitterVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IDVSplitter * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IDVSplitter * This); ULONG ( STDMETHODCALLTYPE *Release )( IDVSplitter * This); HRESULT ( STDMETHODCALLTYPE *DiscardAlternateVideoFrames )( IDVSplitter * This, /* [in] */ int nDiscard); END_INTERFACE } IDVSplitterVtbl; interface IDVSplitter { CONST_VTBL struct IDVSplitterVtbl *lpVtbl; }; #ifdef COBJMACROS #define IDVSplitter_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IDVSplitter_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IDVSplitter_Release(This) \ (This)->lpVtbl -> Release(This) #define IDVSplitter_DiscardAlternateVideoFrames(This,nDiscard) \ (This)->lpVtbl -> DiscardAlternateVideoFrames(This,nDiscard) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IDVSplitter_DiscardAlternateVideoFrames_Proxy( IDVSplitter * This, /* [in] */ int nDiscard); void __RPC_STUB IDVSplitter_DiscardAlternateVideoFrames_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IDVSplitter_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0349 */ /* [local] */ enum _AM_AUDIO_RENDERER_STAT_PARAM { AM_AUDREND_STAT_PARAM_BREAK_COUNT = 1, AM_AUDREND_STAT_PARAM_SLAVE_MODE = AM_AUDREND_STAT_PARAM_BREAK_COUNT + 1, AM_AUDREND_STAT_PARAM_SILENCE_DUR = AM_AUDREND_STAT_PARAM_SLAVE_MODE + 1, AM_AUDREND_STAT_PARAM_LAST_BUFFER_DUR = AM_AUDREND_STAT_PARAM_SILENCE_DUR + 1, AM_AUDREND_STAT_PARAM_DISCONTINUITIES = AM_AUDREND_STAT_PARAM_LAST_BUFFER_DUR + 1, AM_AUDREND_STAT_PARAM_SLAVE_RATE = AM_AUDREND_STAT_PARAM_DISCONTINUITIES + 1, AM_AUDREND_STAT_PARAM_SLAVE_DROPWRITE_DUR = AM_AUDREND_STAT_PARAM_SLAVE_RATE + 1, AM_AUDREND_STAT_PARAM_SLAVE_HIGHLOWERROR = AM_AUDREND_STAT_PARAM_SLAVE_DROPWRITE_DUR + 1, AM_AUDREND_STAT_PARAM_SLAVE_LASTHIGHLOWERROR = AM_AUDREND_STAT_PARAM_SLAVE_HIGHLOWERROR + 1, AM_AUDREND_STAT_PARAM_SLAVE_ACCUMERROR = AM_AUDREND_STAT_PARAM_SLAVE_LASTHIGHLOWERROR + 1, AM_AUDREND_STAT_PARAM_BUFFERFULLNESS = AM_AUDREND_STAT_PARAM_SLAVE_ACCUMERROR + 1, AM_AUDREND_STAT_PARAM_JITTER = AM_AUDREND_STAT_PARAM_BUFFERFULLNESS + 1 } ; extern RPC_IF_HANDLE __MIDL_itf_strmif_0349_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0349_v0_0_s_ifspec; #ifndef __IAMAudioRendererStats_INTERFACE_DEFINED__ #define __IAMAudioRendererStats_INTERFACE_DEFINED__ /* interface IAMAudioRendererStats */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IAMAudioRendererStats; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("22320CB2-D41A-11d2-BF7C-D7CB9DF0BF93") IAMAudioRendererStats : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE GetStatParam( /* [in] */ DWORD dwParam, /* [out] */ DWORD *pdwParam1, /* [out] */ DWORD *pdwParam2) = 0; }; #else /* C style interface */ typedef struct IAMAudioRendererStatsVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMAudioRendererStats * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMAudioRendererStats * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMAudioRendererStats * This); HRESULT ( STDMETHODCALLTYPE *GetStatParam )( IAMAudioRendererStats * This, /* [in] */ DWORD dwParam, /* [out] */ DWORD *pdwParam1, /* [out] */ DWORD *pdwParam2); END_INTERFACE } IAMAudioRendererStatsVtbl; interface IAMAudioRendererStats { CONST_VTBL struct IAMAudioRendererStatsVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMAudioRendererStats_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMAudioRendererStats_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMAudioRendererStats_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMAudioRendererStats_GetStatParam(This,dwParam,pdwParam1,pdwParam2) \ (This)->lpVtbl -> GetStatParam(This,dwParam,pdwParam1,pdwParam2) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMAudioRendererStats_GetStatParam_Proxy( IAMAudioRendererStats * This, /* [in] */ DWORD dwParam, /* [out] */ DWORD *pdwParam1, /* [out] */ DWORD *pdwParam2); void __RPC_STUB IAMAudioRendererStats_GetStatParam_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMAudioRendererStats_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0351 */ /* [local] */ enum _AM_INTF_SEARCH_FLAGS { AM_INTF_SEARCH_INPUT_PIN = 0x1, AM_INTF_SEARCH_OUTPUT_PIN = 0x2, AM_INTF_SEARCH_FILTER = 0x4 } ; extern RPC_IF_HANDLE __MIDL_itf_strmif_0351_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0351_v0_0_s_ifspec; #ifndef __IAMGraphStreams_INTERFACE_DEFINED__ #define __IAMGraphStreams_INTERFACE_DEFINED__ /* interface IAMGraphStreams */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IAMGraphStreams; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("632105FA-072E-11d3-8AF9-00C04FB6BD3D") IAMGraphStreams : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE FindUpstreamInterface( /* [in] */ IPin *pPin, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvInterface, /* [in] */ DWORD dwFlags) = 0; virtual HRESULT STDMETHODCALLTYPE SyncUsingStreamOffset( /* [in] */ BOOL bUseStreamOffset) = 0; virtual HRESULT STDMETHODCALLTYPE SetMaxGraphLatency( /* [in] */ REFERENCE_TIME rtMaxGraphLatency) = 0; }; #else /* C style interface */ typedef struct IAMGraphStreamsVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMGraphStreams * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMGraphStreams * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMGraphStreams * This); HRESULT ( STDMETHODCALLTYPE *FindUpstreamInterface )( IAMGraphStreams * This, /* [in] */ IPin *pPin, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvInterface, /* [in] */ DWORD dwFlags); HRESULT ( STDMETHODCALLTYPE *SyncUsingStreamOffset )( IAMGraphStreams * This, /* [in] */ BOOL bUseStreamOffset); HRESULT ( STDMETHODCALLTYPE *SetMaxGraphLatency )( IAMGraphStreams * This, /* [in] */ REFERENCE_TIME rtMaxGraphLatency); END_INTERFACE } IAMGraphStreamsVtbl; interface IAMGraphStreams { CONST_VTBL struct IAMGraphStreamsVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMGraphStreams_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMGraphStreams_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMGraphStreams_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMGraphStreams_FindUpstreamInterface(This,pPin,riid,ppvInterface,dwFlags) \ (This)->lpVtbl -> FindUpstreamInterface(This,pPin,riid,ppvInterface,dwFlags) #define IAMGraphStreams_SyncUsingStreamOffset(This,bUseStreamOffset) \ (This)->lpVtbl -> SyncUsingStreamOffset(This,bUseStreamOffset) #define IAMGraphStreams_SetMaxGraphLatency(This,rtMaxGraphLatency) \ (This)->lpVtbl -> SetMaxGraphLatency(This,rtMaxGraphLatency) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMGraphStreams_FindUpstreamInterface_Proxy( IAMGraphStreams * This, /* [in] */ IPin *pPin, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvInterface, /* [in] */ DWORD dwFlags); void __RPC_STUB IAMGraphStreams_FindUpstreamInterface_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMGraphStreams_SyncUsingStreamOffset_Proxy( IAMGraphStreams * This, /* [in] */ BOOL bUseStreamOffset); void __RPC_STUB IAMGraphStreams_SyncUsingStreamOffset_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMGraphStreams_SetMaxGraphLatency_Proxy( IAMGraphStreams * This, /* [in] */ REFERENCE_TIME rtMaxGraphLatency); void __RPC_STUB IAMGraphStreams_SetMaxGraphLatency_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMGraphStreams_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0352 */ /* [local] */ enum AMOVERLAYFX { AMOVERFX_NOFX = 0, AMOVERFX_MIRRORLEFTRIGHT = 0x2, AMOVERFX_MIRRORUPDOWN = 0x4, AMOVERFX_DEINTERLACE = 0x8 } ; extern RPC_IF_HANDLE __MIDL_itf_strmif_0352_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0352_v0_0_s_ifspec; #ifndef __IAMOverlayFX_INTERFACE_DEFINED__ #define __IAMOverlayFX_INTERFACE_DEFINED__ /* interface IAMOverlayFX */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IAMOverlayFX; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("62fae250-7e65-4460-bfc9-6398b322073c") IAMOverlayFX : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE QueryOverlayFXCaps( /* [out] */ DWORD *lpdwOverlayFXCaps) = 0; virtual HRESULT STDMETHODCALLTYPE SetOverlayFX( /* [in] */ DWORD dwOverlayFX) = 0; virtual HRESULT STDMETHODCALLTYPE GetOverlayFX( /* [out] */ DWORD *lpdwOverlayFX) = 0; }; #else /* C style interface */ typedef struct IAMOverlayFXVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMOverlayFX * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMOverlayFX * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMOverlayFX * This); HRESULT ( STDMETHODCALLTYPE *QueryOverlayFXCaps )( IAMOverlayFX * This, /* [out] */ DWORD *lpdwOverlayFXCaps); HRESULT ( STDMETHODCALLTYPE *SetOverlayFX )( IAMOverlayFX * This, /* [in] */ DWORD dwOverlayFX); HRESULT ( STDMETHODCALLTYPE *GetOverlayFX )( IAMOverlayFX * This, /* [out] */ DWORD *lpdwOverlayFX); END_INTERFACE } IAMOverlayFXVtbl; interface IAMOverlayFX { CONST_VTBL struct IAMOverlayFXVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMOverlayFX_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMOverlayFX_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMOverlayFX_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMOverlayFX_QueryOverlayFXCaps(This,lpdwOverlayFXCaps) \ (This)->lpVtbl -> QueryOverlayFXCaps(This,lpdwOverlayFXCaps) #define IAMOverlayFX_SetOverlayFX(This,dwOverlayFX) \ (This)->lpVtbl -> SetOverlayFX(This,dwOverlayFX) #define IAMOverlayFX_GetOverlayFX(This,lpdwOverlayFX) \ (This)->lpVtbl -> GetOverlayFX(This,lpdwOverlayFX) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMOverlayFX_QueryOverlayFXCaps_Proxy( IAMOverlayFX * This, /* [out] */ DWORD *lpdwOverlayFXCaps); void __RPC_STUB IAMOverlayFX_QueryOverlayFXCaps_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMOverlayFX_SetOverlayFX_Proxy( IAMOverlayFX * This, /* [in] */ DWORD dwOverlayFX); void __RPC_STUB IAMOverlayFX_SetOverlayFX_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMOverlayFX_GetOverlayFX_Proxy( IAMOverlayFX * This, /* [out] */ DWORD *lpdwOverlayFX); void __RPC_STUB IAMOverlayFX_GetOverlayFX_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMOverlayFX_INTERFACE_DEFINED__ */ #ifndef __IAMOpenProgress_INTERFACE_DEFINED__ #define __IAMOpenProgress_INTERFACE_DEFINED__ /* interface IAMOpenProgress */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IAMOpenProgress; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("8E1C39A1-DE53-11cf-AA63-0080C744528D") IAMOpenProgress : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE QueryProgress( /* [out] */ LONGLONG *pllTotal, /* [out] */ LONGLONG *pllCurrent) = 0; virtual HRESULT STDMETHODCALLTYPE AbortOperation( void) = 0; }; #else /* C style interface */ typedef struct IAMOpenProgressVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMOpenProgress * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMOpenProgress * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMOpenProgress * This); HRESULT ( STDMETHODCALLTYPE *QueryProgress )( IAMOpenProgress * This, /* [out] */ LONGLONG *pllTotal, /* [out] */ LONGLONG *pllCurrent); HRESULT ( STDMETHODCALLTYPE *AbortOperation )( IAMOpenProgress * This); END_INTERFACE } IAMOpenProgressVtbl; interface IAMOpenProgress { CONST_VTBL struct IAMOpenProgressVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMOpenProgress_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMOpenProgress_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMOpenProgress_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMOpenProgress_QueryProgress(This,pllTotal,pllCurrent) \ (This)->lpVtbl -> QueryProgress(This,pllTotal,pllCurrent) #define IAMOpenProgress_AbortOperation(This) \ (This)->lpVtbl -> AbortOperation(This) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMOpenProgress_QueryProgress_Proxy( IAMOpenProgress * This, /* [out] */ LONGLONG *pllTotal, /* [out] */ LONGLONG *pllCurrent); void __RPC_STUB IAMOpenProgress_QueryProgress_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMOpenProgress_AbortOperation_Proxy( IAMOpenProgress * This); void __RPC_STUB IAMOpenProgress_AbortOperation_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMOpenProgress_INTERFACE_DEFINED__ */ #ifndef __IMpeg2Demultiplexer_INTERFACE_DEFINED__ #define __IMpeg2Demultiplexer_INTERFACE_DEFINED__ /* interface IMpeg2Demultiplexer */ /* [unique][uuid][local][object] */ EXTERN_C const IID IID_IMpeg2Demultiplexer; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("436eee9c-264f-4242-90e1-4e330c107512") IMpeg2Demultiplexer : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE CreateOutputPin( /* [in] */ AM_MEDIA_TYPE *pMediaType, /* [in] */ LPWSTR pszPinName, /* [out] */ IPin **ppIPin) = 0; virtual HRESULT STDMETHODCALLTYPE SetOutputPinMediaType( /* [in] */ LPWSTR pszPinName, /* [in] */ AM_MEDIA_TYPE *pMediaType) = 0; virtual HRESULT STDMETHODCALLTYPE DeleteOutputPin( /* [in] */ LPWSTR pszPinName) = 0; }; #else /* C style interface */ typedef struct IMpeg2DemultiplexerVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IMpeg2Demultiplexer * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IMpeg2Demultiplexer * This); ULONG ( STDMETHODCALLTYPE *Release )( IMpeg2Demultiplexer * This); HRESULT ( STDMETHODCALLTYPE *CreateOutputPin )( IMpeg2Demultiplexer * This, /* [in] */ AM_MEDIA_TYPE *pMediaType, /* [in] */ LPWSTR pszPinName, /* [out] */ IPin **ppIPin); HRESULT ( STDMETHODCALLTYPE *SetOutputPinMediaType )( IMpeg2Demultiplexer * This, /* [in] */ LPWSTR pszPinName, /* [in] */ AM_MEDIA_TYPE *pMediaType); HRESULT ( STDMETHODCALLTYPE *DeleteOutputPin )( IMpeg2Demultiplexer * This, /* [in] */ LPWSTR pszPinName); END_INTERFACE } IMpeg2DemultiplexerVtbl; interface IMpeg2Demultiplexer { CONST_VTBL struct IMpeg2DemultiplexerVtbl *lpVtbl; }; #ifdef COBJMACROS #define IMpeg2Demultiplexer_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IMpeg2Demultiplexer_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IMpeg2Demultiplexer_Release(This) \ (This)->lpVtbl -> Release(This) #define IMpeg2Demultiplexer_CreateOutputPin(This,pMediaType,pszPinName,ppIPin) \ (This)->lpVtbl -> CreateOutputPin(This,pMediaType,pszPinName,ppIPin) #define IMpeg2Demultiplexer_SetOutputPinMediaType(This,pszPinName,pMediaType) \ (This)->lpVtbl -> SetOutputPinMediaType(This,pszPinName,pMediaType) #define IMpeg2Demultiplexer_DeleteOutputPin(This,pszPinName) \ (This)->lpVtbl -> DeleteOutputPin(This,pszPinName) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IMpeg2Demultiplexer_CreateOutputPin_Proxy( IMpeg2Demultiplexer * This, /* [in] */ AM_MEDIA_TYPE *pMediaType, /* [in] */ LPWSTR pszPinName, /* [out] */ IPin **ppIPin); void __RPC_STUB IMpeg2Demultiplexer_CreateOutputPin_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMpeg2Demultiplexer_SetOutputPinMediaType_Proxy( IMpeg2Demultiplexer * This, /* [in] */ LPWSTR pszPinName, /* [in] */ AM_MEDIA_TYPE *pMediaType); void __RPC_STUB IMpeg2Demultiplexer_SetOutputPinMediaType_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMpeg2Demultiplexer_DeleteOutputPin_Proxy( IMpeg2Demultiplexer * This, /* [in] */ LPWSTR pszPinName); void __RPC_STUB IMpeg2Demultiplexer_DeleteOutputPin_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IMpeg2Demultiplexer_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0355 */ /* [local] */ #define MPEG2_PROGRAM_STREAM_MAP 0x00000000 #define MPEG2_PROGRAM_ELEMENTARY_STREAM 0x00000001 #define MPEG2_PROGRAM_DIRECTORY_PES_PACKET 0x00000002 #define MPEG2_PROGRAM_PACK_HEADER 0x00000003 #define MPEG2_PROGRAM_PES_STREAM 0x00000004 #define MPEG2_PROGRAM_SYSTEM_HEADER 0x00000005 #define SUBSTREAM_FILTER_VAL_NONE 0x10000000 typedef /* [public][public] */ struct __MIDL___MIDL_itf_strmif_0355_0001 { ULONG stream_id; DWORD dwMediaSampleContent; ULONG ulSubstreamFilterValue; int iDataOffset; } STREAM_ID_MAP; extern RPC_IF_HANDLE __MIDL_itf_strmif_0355_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0355_v0_0_s_ifspec; #ifndef __IEnumStreamIdMap_INTERFACE_DEFINED__ #define __IEnumStreamIdMap_INTERFACE_DEFINED__ /* interface IEnumStreamIdMap */ /* [unique][uuid][local][object] */ EXTERN_C const IID IID_IEnumStreamIdMap; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("945C1566-6202-46fc-96C7-D87F289C6534") IEnumStreamIdMap : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE Next( /* [in] */ ULONG cRequest, /* [size_is][out][in] */ STREAM_ID_MAP *pStreamIdMap, /* [out] */ ULONG *pcReceived) = 0; virtual HRESULT STDMETHODCALLTYPE Skip( /* [in] */ ULONG cRecords) = 0; virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0; virtual HRESULT STDMETHODCALLTYPE Clone( /* [out] */ IEnumStreamIdMap **ppIEnumStreamIdMap) = 0; }; #else /* C style interface */ typedef struct IEnumStreamIdMapVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IEnumStreamIdMap * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IEnumStreamIdMap * This); ULONG ( STDMETHODCALLTYPE *Release )( IEnumStreamIdMap * This); HRESULT ( STDMETHODCALLTYPE *Next )( IEnumStreamIdMap * This, /* [in] */ ULONG cRequest, /* [size_is][out][in] */ STREAM_ID_MAP *pStreamIdMap, /* [out] */ ULONG *pcReceived); HRESULT ( STDMETHODCALLTYPE *Skip )( IEnumStreamIdMap * This, /* [in] */ ULONG cRecords); HRESULT ( STDMETHODCALLTYPE *Reset )( IEnumStreamIdMap * This); HRESULT ( STDMETHODCALLTYPE *Clone )( IEnumStreamIdMap * This, /* [out] */ IEnumStreamIdMap **ppIEnumStreamIdMap); END_INTERFACE } IEnumStreamIdMapVtbl; interface IEnumStreamIdMap { CONST_VTBL struct IEnumStreamIdMapVtbl *lpVtbl; }; #ifdef COBJMACROS #define IEnumStreamIdMap_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IEnumStreamIdMap_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IEnumStreamIdMap_Release(This) \ (This)->lpVtbl -> Release(This) #define IEnumStreamIdMap_Next(This,cRequest,pStreamIdMap,pcReceived) \ (This)->lpVtbl -> Next(This,cRequest,pStreamIdMap,pcReceived) #define IEnumStreamIdMap_Skip(This,cRecords) \ (This)->lpVtbl -> Skip(This,cRecords) #define IEnumStreamIdMap_Reset(This) \ (This)->lpVtbl -> Reset(This) #define IEnumStreamIdMap_Clone(This,ppIEnumStreamIdMap) \ (This)->lpVtbl -> Clone(This,ppIEnumStreamIdMap) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IEnumStreamIdMap_Next_Proxy( IEnumStreamIdMap * This, /* [in] */ ULONG cRequest, /* [size_is][out][in] */ STREAM_ID_MAP *pStreamIdMap, /* [out] */ ULONG *pcReceived); void __RPC_STUB IEnumStreamIdMap_Next_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IEnumStreamIdMap_Skip_Proxy( IEnumStreamIdMap * This, /* [in] */ ULONG cRecords); void __RPC_STUB IEnumStreamIdMap_Skip_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IEnumStreamIdMap_Reset_Proxy( IEnumStreamIdMap * This); void __RPC_STUB IEnumStreamIdMap_Reset_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IEnumStreamIdMap_Clone_Proxy( IEnumStreamIdMap * This, /* [out] */ IEnumStreamIdMap **ppIEnumStreamIdMap); void __RPC_STUB IEnumStreamIdMap_Clone_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IEnumStreamIdMap_INTERFACE_DEFINED__ */ #ifndef __IMPEG2StreamIdMap_INTERFACE_DEFINED__ #define __IMPEG2StreamIdMap_INTERFACE_DEFINED__ /* interface IMPEG2StreamIdMap */ /* [unique][uuid][local][object] */ EXTERN_C const IID IID_IMPEG2StreamIdMap; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("D0E04C47-25B8-4369-925A-362A01D95444") IMPEG2StreamIdMap : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE MapStreamId( /* [in] */ ULONG ulStreamId, /* [in] */ DWORD MediaSampleContent, /* [in] */ ULONG ulSubstreamFilterValue, /* [in] */ int iDataOffset) = 0; virtual HRESULT STDMETHODCALLTYPE UnmapStreamId( /* [in] */ ULONG culStreamId, /* [in] */ ULONG *pulStreamId) = 0; virtual HRESULT STDMETHODCALLTYPE EnumStreamIdMap( /* [out] */ IEnumStreamIdMap **ppIEnumStreamIdMap) = 0; }; #else /* C style interface */ typedef struct IMPEG2StreamIdMapVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IMPEG2StreamIdMap * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IMPEG2StreamIdMap * This); ULONG ( STDMETHODCALLTYPE *Release )( IMPEG2StreamIdMap * This); HRESULT ( STDMETHODCALLTYPE *MapStreamId )( IMPEG2StreamIdMap * This, /* [in] */ ULONG ulStreamId, /* [in] */ DWORD MediaSampleContent, /* [in] */ ULONG ulSubstreamFilterValue, /* [in] */ int iDataOffset); HRESULT ( STDMETHODCALLTYPE *UnmapStreamId )( IMPEG2StreamIdMap * This, /* [in] */ ULONG culStreamId, /* [in] */ ULONG *pulStreamId); HRESULT ( STDMETHODCALLTYPE *EnumStreamIdMap )( IMPEG2StreamIdMap * This, /* [out] */ IEnumStreamIdMap **ppIEnumStreamIdMap); END_INTERFACE } IMPEG2StreamIdMapVtbl; interface IMPEG2StreamIdMap { CONST_VTBL struct IMPEG2StreamIdMapVtbl *lpVtbl; }; #ifdef COBJMACROS #define IMPEG2StreamIdMap_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IMPEG2StreamIdMap_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IMPEG2StreamIdMap_Release(This) \ (This)->lpVtbl -> Release(This) #define IMPEG2StreamIdMap_MapStreamId(This,ulStreamId,MediaSampleContent,ulSubstreamFilterValue,iDataOffset) \ (This)->lpVtbl -> MapStreamId(This,ulStreamId,MediaSampleContent,ulSubstreamFilterValue,iDataOffset) #define IMPEG2StreamIdMap_UnmapStreamId(This,culStreamId,pulStreamId) \ (This)->lpVtbl -> UnmapStreamId(This,culStreamId,pulStreamId) #define IMPEG2StreamIdMap_EnumStreamIdMap(This,ppIEnumStreamIdMap) \ (This)->lpVtbl -> EnumStreamIdMap(This,ppIEnumStreamIdMap) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IMPEG2StreamIdMap_MapStreamId_Proxy( IMPEG2StreamIdMap * This, /* [in] */ ULONG ulStreamId, /* [in] */ DWORD MediaSampleContent, /* [in] */ ULONG ulSubstreamFilterValue, /* [in] */ int iDataOffset); void __RPC_STUB IMPEG2StreamIdMap_MapStreamId_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMPEG2StreamIdMap_UnmapStreamId_Proxy( IMPEG2StreamIdMap * This, /* [in] */ ULONG culStreamId, /* [in] */ ULONG *pulStreamId); void __RPC_STUB IMPEG2StreamIdMap_UnmapStreamId_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IMPEG2StreamIdMap_EnumStreamIdMap_Proxy( IMPEG2StreamIdMap * This, /* [out] */ IEnumStreamIdMap **ppIEnumStreamIdMap); void __RPC_STUB IMPEG2StreamIdMap_EnumStreamIdMap_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IMPEG2StreamIdMap_INTERFACE_DEFINED__ */ #ifndef __IRegisterServiceProvider_INTERFACE_DEFINED__ #define __IRegisterServiceProvider_INTERFACE_DEFINED__ /* interface IRegisterServiceProvider */ /* [unique][uuid][local][object] */ EXTERN_C const IID IID_IRegisterServiceProvider; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("7B3A2F01-0751-48DD-B556-004785171C54") IRegisterServiceProvider : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE RegisterService( /* [in] */ REFGUID guidService, /* [in] */ IUnknown *pUnkObject) = 0; }; #else /* C style interface */ typedef struct IRegisterServiceProviderVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IRegisterServiceProvider * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IRegisterServiceProvider * This); ULONG ( STDMETHODCALLTYPE *Release )( IRegisterServiceProvider * This); HRESULT ( STDMETHODCALLTYPE *RegisterService )( IRegisterServiceProvider * This, /* [in] */ REFGUID guidService, /* [in] */ IUnknown *pUnkObject); END_INTERFACE } IRegisterServiceProviderVtbl; interface IRegisterServiceProvider { CONST_VTBL struct IRegisterServiceProviderVtbl *lpVtbl; }; #ifdef COBJMACROS #define IRegisterServiceProvider_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IRegisterServiceProvider_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IRegisterServiceProvider_Release(This) \ (This)->lpVtbl -> Release(This) #define IRegisterServiceProvider_RegisterService(This,guidService,pUnkObject) \ (This)->lpVtbl -> RegisterService(This,guidService,pUnkObject) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IRegisterServiceProvider_RegisterService_Proxy( IRegisterServiceProvider * This, /* [in] */ REFGUID guidService, /* [in] */ IUnknown *pUnkObject); void __RPC_STUB IRegisterServiceProvider_RegisterService_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IRegisterServiceProvider_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0358 */ /* [local] */ #define AM_GETDECODERCAP_QUERY_VMR_SUPPORT 0x00000001 #define VMR_NOTSUPPORTED 0x00000000 #define VMR_SUPPORTED 0x00000001 #define AM_QUERY_DECODER_VMR_SUPPORT 0x00000001 #define AM_QUERY_DECODER_DXVA_1_SUPPORT 0x00000002 #define AM_QUERY_DECODER_DVD_SUPPORT 0x00000003 #define AM_QUERY_DECODER_ATSC_SD_SUPPORT 0x00000004 #define AM_QUERY_DECODER_ATSC_HD_SUPPORT 0x00000005 #define DECODER_CAP_NOTSUPPORTED 0x00000000 #define DECODER_CAP_SUPPORTED 0x00000001 extern RPC_IF_HANDLE __MIDL_itf_strmif_0358_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0358_v0_0_s_ifspec; #ifndef __IAMDecoderCaps_INTERFACE_DEFINED__ #define __IAMDecoderCaps_INTERFACE_DEFINED__ /* interface IAMDecoderCaps */ /* [unique][uuid][local][object] */ EXTERN_C const IID IID_IAMDecoderCaps; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("c0dff467-d499-4986-972b-e1d9090fa941") IAMDecoderCaps : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE GetDecoderCaps( /* [in] */ DWORD dwCapIndex, /* [out] */ DWORD *lpdwCap) = 0; }; #else /* C style interface */ typedef struct IAMDecoderCapsVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMDecoderCaps * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMDecoderCaps * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMDecoderCaps * This); HRESULT ( STDMETHODCALLTYPE *GetDecoderCaps )( IAMDecoderCaps * This, /* [in] */ DWORD dwCapIndex, /* [out] */ DWORD *lpdwCap); END_INTERFACE } IAMDecoderCapsVtbl; interface IAMDecoderCaps { CONST_VTBL struct IAMDecoderCapsVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMDecoderCaps_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMDecoderCaps_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMDecoderCaps_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMDecoderCaps_GetDecoderCaps(This,dwCapIndex,lpdwCap) \ (This)->lpVtbl -> GetDecoderCaps(This,dwCapIndex,lpdwCap) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMDecoderCaps_GetDecoderCaps_Proxy( IAMDecoderCaps * This, /* [in] */ DWORD dwCapIndex, /* [out] */ DWORD *lpdwCap); void __RPC_STUB IAMDecoderCaps_GetDecoderCaps_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMDecoderCaps_INTERFACE_DEFINED__ */ #ifndef __IAMClockSlave_INTERFACE_DEFINED__ #define __IAMClockSlave_INTERFACE_DEFINED__ /* interface IAMClockSlave */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IAMClockSlave; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("9FD52741-176D-4b36-8F51-CA8F933223BE") IAMClockSlave : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE SetErrorTolerance( /* [in] */ DWORD dwTolerance) = 0; virtual HRESULT STDMETHODCALLTYPE GetErrorTolerance( /* [out] */ DWORD *pdwTolerance) = 0; }; #else /* C style interface */ typedef struct IAMClockSlaveVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IAMClockSlave * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IAMClockSlave * This); ULONG ( STDMETHODCALLTYPE *Release )( IAMClockSlave * This); HRESULT ( STDMETHODCALLTYPE *SetErrorTolerance )( IAMClockSlave * This, /* [in] */ DWORD dwTolerance); HRESULT ( STDMETHODCALLTYPE *GetErrorTolerance )( IAMClockSlave * This, /* [out] */ DWORD *pdwTolerance); END_INTERFACE } IAMClockSlaveVtbl; interface IAMClockSlave { CONST_VTBL struct IAMClockSlaveVtbl *lpVtbl; }; #ifdef COBJMACROS #define IAMClockSlave_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IAMClockSlave_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IAMClockSlave_Release(This) \ (This)->lpVtbl -> Release(This) #define IAMClockSlave_SetErrorTolerance(This,dwTolerance) \ (This)->lpVtbl -> SetErrorTolerance(This,dwTolerance) #define IAMClockSlave_GetErrorTolerance(This,pdwTolerance) \ (This)->lpVtbl -> GetErrorTolerance(This,pdwTolerance) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IAMClockSlave_SetErrorTolerance_Proxy( IAMClockSlave * This, /* [in] */ DWORD dwTolerance); void __RPC_STUB IAMClockSlave_SetErrorTolerance_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IAMClockSlave_GetErrorTolerance_Proxy( IAMClockSlave * This, /* [out] */ DWORD *pdwTolerance); void __RPC_STUB IAMClockSlave_GetErrorTolerance_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IAMClockSlave_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0360 */ /* [local] */ #include typedef enum tagDVD_DOMAIN { DVD_DOMAIN_FirstPlay = 1, DVD_DOMAIN_VideoManagerMenu = DVD_DOMAIN_FirstPlay + 1, DVD_DOMAIN_VideoTitleSetMenu = DVD_DOMAIN_VideoManagerMenu + 1, DVD_DOMAIN_Title = DVD_DOMAIN_VideoTitleSetMenu + 1, DVD_DOMAIN_Stop = DVD_DOMAIN_Title + 1 } DVD_DOMAIN; typedef enum tagDVD_MENU_ID { DVD_MENU_Title = 2, DVD_MENU_Root = 3, DVD_MENU_Subpicture = 4, DVD_MENU_Audio = 5, DVD_MENU_Angle = 6, DVD_MENU_Chapter = 7 } DVD_MENU_ID; typedef enum tagDVD_DISC_SIDE { DVD_SIDE_A = 1, DVD_SIDE_B = 2 } DVD_DISC_SIDE; typedef enum tagDVD_PREFERRED_DISPLAY_MODE { DISPLAY_CONTENT_DEFAULT = 0, DISPLAY_16x9 = 1, DISPLAY_4x3_PANSCAN_PREFERRED = 2, DISPLAY_4x3_LETTERBOX_PREFERRED = 3 } DVD_PREFERRED_DISPLAY_MODE; typedef WORD DVD_REGISTER; typedef DVD_REGISTER GPRMARRAY[ 16 ]; typedef DVD_REGISTER SPRMARRAY[ 24 ]; typedef struct tagDVD_ATR { ULONG ulCAT; BYTE pbATRI[ 768 ]; } DVD_ATR; typedef BYTE DVD_VideoATR[ 2 ]; typedef BYTE DVD_AudioATR[ 8 ]; typedef BYTE DVD_SubpictureATR[ 6 ]; typedef enum tagDVD_FRAMERATE { DVD_FPS_25 = 1, DVD_FPS_30NonDrop = 3 } DVD_FRAMERATE; typedef struct tagDVD_TIMECODE { ULONG Hours1 :4; // Hours ULONG Hours10 :4; // Tens of Hours ULONG Minutes1 :4; // Minutes ULONG Minutes10:4; // Tens of Minutes ULONG Seconds1 :4; // Seconds ULONG Seconds10:4; // Tens of Seconds ULONG Frames1 :4; // Frames ULONG Frames10 :2; // Tens of Frames ULONG FrameRateCode: 2; // use DVD_FRAMERATE to indicate frames/sec and drop/non-drop } DVD_TIMECODE; typedef enum tagDVD_TIMECODE_FLAGS { DVD_TC_FLAG_25fps = 0x1, DVD_TC_FLAG_30fps = 0x2, DVD_TC_FLAG_DropFrame = 0x4, DVD_TC_FLAG_Interpolated = 0x8 } DVD_TIMECODE_FLAGS; typedef struct tagDVD_HMSF_TIMECODE { BYTE bHours; BYTE bMinutes; BYTE bSeconds; BYTE bFrames; } DVD_HMSF_TIMECODE; typedef struct tagDVD_PLAYBACK_LOCATION2 { ULONG TitleNum; ULONG ChapterNum; DVD_HMSF_TIMECODE TimeCode; ULONG TimeCodeFlags; } DVD_PLAYBACK_LOCATION2; typedef struct tagDVD_PLAYBACK_LOCATION { ULONG TitleNum; ULONG ChapterNum; ULONG TimeCode; } DVD_PLAYBACK_LOCATION; typedef DWORD VALID_UOP_SOMTHING_OR_OTHER; typedef /* [public] */ enum __MIDL___MIDL_itf_strmif_0360_0001 { UOP_FLAG_Play_Title_Or_AtTime = 0x1, UOP_FLAG_Play_Chapter = 0x2, UOP_FLAG_Play_Title = 0x4, UOP_FLAG_Stop = 0x8, UOP_FLAG_ReturnFromSubMenu = 0x10, UOP_FLAG_Play_Chapter_Or_AtTime = 0x20, UOP_FLAG_PlayPrev_Or_Replay_Chapter = 0x40, UOP_FLAG_PlayNext_Chapter = 0x80, UOP_FLAG_Play_Forwards = 0x100, UOP_FLAG_Play_Backwards = 0x200, UOP_FLAG_ShowMenu_Title = 0x400, UOP_FLAG_ShowMenu_Root = 0x800, UOP_FLAG_ShowMenu_SubPic = 0x1000, UOP_FLAG_ShowMenu_Audio = 0x2000, UOP_FLAG_ShowMenu_Angle = 0x4000, UOP_FLAG_ShowMenu_Chapter = 0x8000, UOP_FLAG_Resume = 0x10000, UOP_FLAG_Select_Or_Activate_Button = 0x20000, UOP_FLAG_Still_Off = 0x40000, UOP_FLAG_Pause_On = 0x80000, UOP_FLAG_Select_Audio_Stream = 0x100000, UOP_FLAG_Select_SubPic_Stream = 0x200000, UOP_FLAG_Select_Angle = 0x400000, UOP_FLAG_Select_Karaoke_Audio_Presentation_Mode = 0x800000, UOP_FLAG_Select_Video_Mode_Preference = 0x1000000 } VALID_UOP_FLAG; typedef /* [public] */ enum __MIDL___MIDL_itf_strmif_0360_0002 { DVD_CMD_FLAG_None = 0, DVD_CMD_FLAG_Flush = 0x1, DVD_CMD_FLAG_SendEvents = 0x2, DVD_CMD_FLAG_Block = 0x4, DVD_CMD_FLAG_StartWhenRendered = 0x8, DVD_CMD_FLAG_EndAfterRendered = 0x10 } DVD_CMD_FLAGS; typedef /* [public][public] */ enum __MIDL___MIDL_itf_strmif_0360_0003 { DVD_ResetOnStop = 1, DVD_NotifyParentalLevelChange = 2, DVD_HMSF_TimeCodeEvents = 3 } DVD_OPTION_FLAG; typedef /* [public][public] */ enum __MIDL___MIDL_itf_strmif_0360_0004 { DVD_Relative_Upper = 1, DVD_Relative_Lower = 2, DVD_Relative_Left = 3, DVD_Relative_Right = 4 } DVD_RELATIVE_BUTTON; typedef enum tagDVD_PARENTAL_LEVEL { DVD_PARENTAL_LEVEL_8 = 0x8000, DVD_PARENTAL_LEVEL_7 = 0x4000, DVD_PARENTAL_LEVEL_6 = 0x2000, DVD_PARENTAL_LEVEL_5 = 0x1000, DVD_PARENTAL_LEVEL_4 = 0x800, DVD_PARENTAL_LEVEL_3 = 0x400, DVD_PARENTAL_LEVEL_2 = 0x200, DVD_PARENTAL_LEVEL_1 = 0x100 } DVD_PARENTAL_LEVEL; typedef enum tagDVD_AUDIO_LANG_EXT { DVD_AUD_EXT_NotSpecified = 0, DVD_AUD_EXT_Captions = 1, DVD_AUD_EXT_VisuallyImpaired = 2, DVD_AUD_EXT_DirectorComments1 = 3, DVD_AUD_EXT_DirectorComments2 = 4 } DVD_AUDIO_LANG_EXT; typedef enum tagDVD_SUBPICTURE_LANG_EXT { DVD_SP_EXT_NotSpecified = 0, DVD_SP_EXT_Caption_Normal = 1, DVD_SP_EXT_Caption_Big = 2, DVD_SP_EXT_Caption_Children = 3, DVD_SP_EXT_CC_Normal = 5, DVD_SP_EXT_CC_Big = 6, DVD_SP_EXT_CC_Children = 7, DVD_SP_EXT_Forced = 9, DVD_SP_EXT_DirectorComments_Normal = 13, DVD_SP_EXT_DirectorComments_Big = 14, DVD_SP_EXT_DirectorComments_Children = 15 } DVD_SUBPICTURE_LANG_EXT; typedef enum tagDVD_AUDIO_APPMODE { DVD_AudioMode_None = 0, DVD_AudioMode_Karaoke = 1, DVD_AudioMode_Surround = 2, DVD_AudioMode_Other = 3 } DVD_AUDIO_APPMODE; typedef enum tagDVD_AUDIO_FORMAT { DVD_AudioFormat_AC3 = 0, DVD_AudioFormat_MPEG1 = 1, DVD_AudioFormat_MPEG1_DRC = 2, DVD_AudioFormat_MPEG2 = 3, DVD_AudioFormat_MPEG2_DRC = 4, DVD_AudioFormat_LPCM = 5, DVD_AudioFormat_DTS = 6, DVD_AudioFormat_SDDS = 7, DVD_AudioFormat_Other = 8 } DVD_AUDIO_FORMAT; typedef enum tagDVD_KARAOKE_DOWNMIX { DVD_Mix_0to0 = 0x1, DVD_Mix_1to0 = 0x2, DVD_Mix_2to0 = 0x4, DVD_Mix_3to0 = 0x8, DVD_Mix_4to0 = 0x10, DVD_Mix_Lto0 = 0x20, DVD_Mix_Rto0 = 0x40, DVD_Mix_0to1 = 0x100, DVD_Mix_1to1 = 0x200, DVD_Mix_2to1 = 0x400, DVD_Mix_3to1 = 0x800, DVD_Mix_4to1 = 0x1000, DVD_Mix_Lto1 = 0x2000, DVD_Mix_Rto1 = 0x4000 } DVD_KARAOKE_DOWNMIX; typedef struct tagDVD_AudioAttributes { DVD_AUDIO_APPMODE AppMode; BYTE AppModeData; DVD_AUDIO_FORMAT AudioFormat; LCID Language; DVD_AUDIO_LANG_EXT LanguageExtension; BOOL fHasMultichannelInfo; DWORD dwFrequency; BYTE bQuantization; BYTE bNumberOfChannels; DWORD dwReserved[ 2 ]; } DVD_AudioAttributes; typedef struct tagDVD_MUA_MixingInfo { BOOL fMixTo0; BOOL fMixTo1; BOOL fMix0InPhase; BOOL fMix1InPhase; DWORD dwSpeakerPosition; } DVD_MUA_MixingInfo; typedef struct tagDVD_MUA_Coeff { double log2_alpha; double log2_beta; } DVD_MUA_Coeff; typedef struct tagDVD_MultichannelAudioAttributes { DVD_MUA_MixingInfo Info[ 8 ]; DVD_MUA_Coeff Coeff[ 8 ]; } DVD_MultichannelAudioAttributes; typedef enum tagDVD_KARAOKE_CONTENTS { DVD_Karaoke_GuideVocal1 = 0x1, DVD_Karaoke_GuideVocal2 = 0x2, DVD_Karaoke_GuideMelody1 = 0x4, DVD_Karaoke_GuideMelody2 = 0x8, DVD_Karaoke_GuideMelodyA = 0x10, DVD_Karaoke_GuideMelodyB = 0x20, DVD_Karaoke_SoundEffectA = 0x40, DVD_Karaoke_SoundEffectB = 0x80 } DVD_KARAOKE_CONTENTS; typedef enum tagDVD_KARAOKE_ASSIGNMENT { DVD_Assignment_reserved0 = 0, DVD_Assignment_reserved1 = 1, DVD_Assignment_LR = 2, DVD_Assignment_LRM = 3, DVD_Assignment_LR1 = 4, DVD_Assignment_LRM1 = 5, DVD_Assignment_LR12 = 6, DVD_Assignment_LRM12 = 7 } DVD_KARAOKE_ASSIGNMENT; typedef struct tagDVD_KaraokeAttributes { BYTE bVersion; BOOL fMasterOfCeremoniesInGuideVocal1; BOOL fDuet; DVD_KARAOKE_ASSIGNMENT ChannelAssignment; WORD wChannelContents[ 8 ]; } DVD_KaraokeAttributes; typedef enum tagDVD_VIDEO_COMPRESSION { DVD_VideoCompression_Other = 0, DVD_VideoCompression_MPEG1 = 1, DVD_VideoCompression_MPEG2 = 2 } DVD_VIDEO_COMPRESSION; typedef struct tagDVD_VideoAttributes { BOOL fPanscanPermitted; BOOL fLetterboxPermitted; ULONG ulAspectX; ULONG ulAspectY; ULONG ulFrameRate; ULONG ulFrameHeight; DVD_VIDEO_COMPRESSION Compression; BOOL fLine21Field1InGOP; BOOL fLine21Field2InGOP; ULONG ulSourceResolutionX; ULONG ulSourceResolutionY; BOOL fIsSourceLetterboxed; BOOL fIsFilmMode; } DVD_VideoAttributes; typedef enum tagDVD_SUBPICTURE_TYPE { DVD_SPType_NotSpecified = 0, DVD_SPType_Language = 1, DVD_SPType_Other = 2 } DVD_SUBPICTURE_TYPE; typedef enum tagDVD_SUBPICTURE_CODING { DVD_SPCoding_RunLength = 0, DVD_SPCoding_Extended = 1, DVD_SPCoding_Other = 2 } DVD_SUBPICTURE_CODING; typedef struct tagDVD_SubpictureAttributes { DVD_SUBPICTURE_TYPE Type; DVD_SUBPICTURE_CODING CodingMode; LCID Language; DVD_SUBPICTURE_LANG_EXT LanguageExtension; } DVD_SubpictureAttributes; typedef enum tagDVD_TITLE_APPMODE { DVD_AppMode_Not_Specified = 0, DVD_AppMode_Karaoke = 1, DVD_AppMode_Other = 3 } DVD_TITLE_APPMODE; typedef struct tagDVD_TitleMainAttributes { DVD_TITLE_APPMODE AppMode; DVD_VideoAttributes VideoAttributes; ULONG ulNumberOfAudioStreams; DVD_AudioAttributes AudioAttributes[ 8 ]; DVD_MultichannelAudioAttributes MultichannelAudioAttributes[ 8 ]; ULONG ulNumberOfSubpictureStreams; DVD_SubpictureAttributes SubpictureAttributes[ 32 ]; } DVD_TitleAttributes; typedef struct tagDVD_MenuAttributes { BOOL fCompatibleRegion[ 8 ]; DVD_VideoAttributes VideoAttributes; BOOL fAudioPresent; DVD_AudioAttributes AudioAttributes; BOOL fSubpicturePresent; DVD_SubpictureAttributes SubpictureAttributes; } DVD_MenuAttributes; extern RPC_IF_HANDLE __MIDL_itf_strmif_0360_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0360_v0_0_s_ifspec; #ifndef __IDvdControl_INTERFACE_DEFINED__ #define __IDvdControl_INTERFACE_DEFINED__ /* interface IDvdControl */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IDvdControl; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("A70EFE61-E2A3-11d0-A9BE-00AA0061BE93") IDvdControl : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE TitlePlay( /* [in] */ ULONG ulTitle) = 0; virtual HRESULT STDMETHODCALLTYPE ChapterPlay( /* [in] */ ULONG ulTitle, /* [in] */ ULONG ulChapter) = 0; virtual HRESULT STDMETHODCALLTYPE TimePlay( /* [in] */ ULONG ulTitle, /* [in] */ ULONG bcdTime) = 0; virtual HRESULT STDMETHODCALLTYPE StopForResume( void) = 0; virtual HRESULT STDMETHODCALLTYPE GoUp( void) = 0; virtual HRESULT STDMETHODCALLTYPE TimeSearch( /* [in] */ ULONG bcdTime) = 0; virtual HRESULT STDMETHODCALLTYPE ChapterSearch( /* [in] */ ULONG ulChapter) = 0; virtual HRESULT STDMETHODCALLTYPE PrevPGSearch( void) = 0; virtual HRESULT STDMETHODCALLTYPE TopPGSearch( void) = 0; virtual HRESULT STDMETHODCALLTYPE NextPGSearch( void) = 0; virtual HRESULT STDMETHODCALLTYPE ForwardScan( /* [in] */ double dwSpeed) = 0; virtual HRESULT STDMETHODCALLTYPE BackwardScan( /* [in] */ double dwSpeed) = 0; virtual HRESULT STDMETHODCALLTYPE MenuCall( /* [in] */ DVD_MENU_ID MenuID) = 0; virtual HRESULT STDMETHODCALLTYPE Resume( void) = 0; virtual HRESULT STDMETHODCALLTYPE UpperButtonSelect( void) = 0; virtual HRESULT STDMETHODCALLTYPE LowerButtonSelect( void) = 0; virtual HRESULT STDMETHODCALLTYPE LeftButtonSelect( void) = 0; virtual HRESULT STDMETHODCALLTYPE RightButtonSelect( void) = 0; virtual HRESULT STDMETHODCALLTYPE ButtonActivate( void) = 0; virtual HRESULT STDMETHODCALLTYPE ButtonSelectAndActivate( /* [in] */ ULONG ulButton) = 0; virtual HRESULT STDMETHODCALLTYPE StillOff( void) = 0; virtual HRESULT STDMETHODCALLTYPE PauseOn( void) = 0; virtual HRESULT STDMETHODCALLTYPE PauseOff( void) = 0; virtual HRESULT STDMETHODCALLTYPE MenuLanguageSelect( /* [in] */ LCID Language) = 0; virtual HRESULT STDMETHODCALLTYPE AudioStreamChange( /* [in] */ ULONG ulAudio) = 0; virtual HRESULT STDMETHODCALLTYPE SubpictureStreamChange( /* [in] */ ULONG ulSubPicture, /* [in] */ BOOL bDisplay) = 0; virtual HRESULT STDMETHODCALLTYPE AngleChange( /* [in] */ ULONG ulAngle) = 0; virtual HRESULT STDMETHODCALLTYPE ParentalLevelSelect( /* [in] */ ULONG ulParentalLevel) = 0; virtual HRESULT STDMETHODCALLTYPE ParentalCountrySelect( /* [in] */ WORD wCountry) = 0; virtual HRESULT STDMETHODCALLTYPE KaraokeAudioPresentationModeChange( /* [in] */ ULONG ulMode) = 0; virtual HRESULT STDMETHODCALLTYPE VideoModePreferrence( /* [in] */ ULONG ulPreferredDisplayMode) = 0; virtual HRESULT STDMETHODCALLTYPE SetRoot( /* [in] */ LPCWSTR pszPath) = 0; virtual HRESULT STDMETHODCALLTYPE MouseActivate( /* [in] */ POINT point) = 0; virtual HRESULT STDMETHODCALLTYPE MouseSelect( /* [in] */ POINT point) = 0; virtual HRESULT STDMETHODCALLTYPE ChapterPlayAutoStop( /* [in] */ ULONG ulTitle, /* [in] */ ULONG ulChapter, /* [in] */ ULONG ulChaptersToPlay) = 0; }; #else /* C style interface */ typedef struct IDvdControlVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IDvdControl * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IDvdControl * This); ULONG ( STDMETHODCALLTYPE *Release )( IDvdControl * This); HRESULT ( STDMETHODCALLTYPE *TitlePlay )( IDvdControl * This, /* [in] */ ULONG ulTitle); HRESULT ( STDMETHODCALLTYPE *ChapterPlay )( IDvdControl * This, /* [in] */ ULONG ulTitle, /* [in] */ ULONG ulChapter); HRESULT ( STDMETHODCALLTYPE *TimePlay )( IDvdControl * This, /* [in] */ ULONG ulTitle, /* [in] */ ULONG bcdTime); HRESULT ( STDMETHODCALLTYPE *StopForResume )( IDvdControl * This); HRESULT ( STDMETHODCALLTYPE *GoUp )( IDvdControl * This); HRESULT ( STDMETHODCALLTYPE *TimeSearch )( IDvdControl * This, /* [in] */ ULONG bcdTime); HRESULT ( STDMETHODCALLTYPE *ChapterSearch )( IDvdControl * This, /* [in] */ ULONG ulChapter); HRESULT ( STDMETHODCALLTYPE *PrevPGSearch )( IDvdControl * This); HRESULT ( STDMETHODCALLTYPE *TopPGSearch )( IDvdControl * This); HRESULT ( STDMETHODCALLTYPE *NextPGSearch )( IDvdControl * This); HRESULT ( STDMETHODCALLTYPE *ForwardScan )( IDvdControl * This, /* [in] */ double dwSpeed); HRESULT ( STDMETHODCALLTYPE *BackwardScan )( IDvdControl * This, /* [in] */ double dwSpeed); HRESULT ( STDMETHODCALLTYPE *MenuCall )( IDvdControl * This, /* [in] */ DVD_MENU_ID MenuID); HRESULT ( STDMETHODCALLTYPE *Resume )( IDvdControl * This); HRESULT ( STDMETHODCALLTYPE *UpperButtonSelect )( IDvdControl * This); HRESULT ( STDMETHODCALLTYPE *LowerButtonSelect )( IDvdControl * This); HRESULT ( STDMETHODCALLTYPE *LeftButtonSelect )( IDvdControl * This); HRESULT ( STDMETHODCALLTYPE *RightButtonSelect )( IDvdControl * This); HRESULT ( STDMETHODCALLTYPE *ButtonActivate )( IDvdControl * This); HRESULT ( STDMETHODCALLTYPE *ButtonSelectAndActivate )( IDvdControl * This, /* [in] */ ULONG ulButton); HRESULT ( STDMETHODCALLTYPE *StillOff )( IDvdControl * This); HRESULT ( STDMETHODCALLTYPE *PauseOn )( IDvdControl * This); HRESULT ( STDMETHODCALLTYPE *PauseOff )( IDvdControl * This); HRESULT ( STDMETHODCALLTYPE *MenuLanguageSelect )( IDvdControl * This, /* [in] */ LCID Language); HRESULT ( STDMETHODCALLTYPE *AudioStreamChange )( IDvdControl * This, /* [in] */ ULONG ulAudio); HRESULT ( STDMETHODCALLTYPE *SubpictureStreamChange )( IDvdControl * This, /* [in] */ ULONG ulSubPicture, /* [in] */ BOOL bDisplay); HRESULT ( STDMETHODCALLTYPE *AngleChange )( IDvdControl * This, /* [in] */ ULONG ulAngle); HRESULT ( STDMETHODCALLTYPE *ParentalLevelSelect )( IDvdControl * This, /* [in] */ ULONG ulParentalLevel); HRESULT ( STDMETHODCALLTYPE *ParentalCountrySelect )( IDvdControl * This, /* [in] */ WORD wCountry); HRESULT ( STDMETHODCALLTYPE *KaraokeAudioPresentationModeChange )( IDvdControl * This, /* [in] */ ULONG ulMode); HRESULT ( STDMETHODCALLTYPE *VideoModePreferrence )( IDvdControl * This, /* [in] */ ULONG ulPreferredDisplayMode); HRESULT ( STDMETHODCALLTYPE *SetRoot )( IDvdControl * This, /* [in] */ LPCWSTR pszPath); HRESULT ( STDMETHODCALLTYPE *MouseActivate )( IDvdControl * This, /* [in] */ POINT point); HRESULT ( STDMETHODCALLTYPE *MouseSelect )( IDvdControl * This, /* [in] */ POINT point); HRESULT ( STDMETHODCALLTYPE *ChapterPlayAutoStop )( IDvdControl * This, /* [in] */ ULONG ulTitle, /* [in] */ ULONG ulChapter, /* [in] */ ULONG ulChaptersToPlay); END_INTERFACE } IDvdControlVtbl; interface IDvdControl { CONST_VTBL struct IDvdControlVtbl *lpVtbl; }; #ifdef COBJMACROS #define IDvdControl_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IDvdControl_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IDvdControl_Release(This) \ (This)->lpVtbl -> Release(This) #define IDvdControl_TitlePlay(This,ulTitle) \ (This)->lpVtbl -> TitlePlay(This,ulTitle) #define IDvdControl_ChapterPlay(This,ulTitle,ulChapter) \ (This)->lpVtbl -> ChapterPlay(This,ulTitle,ulChapter) #define IDvdControl_TimePlay(This,ulTitle,bcdTime) \ (This)->lpVtbl -> TimePlay(This,ulTitle,bcdTime) #define IDvdControl_StopForResume(This) \ (This)->lpVtbl -> StopForResume(This) #define IDvdControl_GoUp(This) \ (This)->lpVtbl -> GoUp(This) #define IDvdControl_TimeSearch(This,bcdTime) \ (This)->lpVtbl -> TimeSearch(This,bcdTime) #define IDvdControl_ChapterSearch(This,ulChapter) \ (This)->lpVtbl -> ChapterSearch(This,ulChapter) #define IDvdControl_PrevPGSearch(This) \ (This)->lpVtbl -> PrevPGSearch(This) #define IDvdControl_TopPGSearch(This) \ (This)->lpVtbl -> TopPGSearch(This) #define IDvdControl_NextPGSearch(This) \ (This)->lpVtbl -> NextPGSearch(This) #define IDvdControl_ForwardScan(This,dwSpeed) \ (This)->lpVtbl -> ForwardScan(This,dwSpeed) #define IDvdControl_BackwardScan(This,dwSpeed) \ (This)->lpVtbl -> BackwardScan(This,dwSpeed) #define IDvdControl_MenuCall(This,MenuID) \ (This)->lpVtbl -> MenuCall(This,MenuID) #define IDvdControl_Resume(This) \ (This)->lpVtbl -> Resume(This) #define IDvdControl_UpperButtonSelect(This) \ (This)->lpVtbl -> UpperButtonSelect(This) #define IDvdControl_LowerButtonSelect(This) \ (This)->lpVtbl -> LowerButtonSelect(This) #define IDvdControl_LeftButtonSelect(This) \ (This)->lpVtbl -> LeftButtonSelect(This) #define IDvdControl_RightButtonSelect(This) \ (This)->lpVtbl -> RightButtonSelect(This) #define IDvdControl_ButtonActivate(This) \ (This)->lpVtbl -> ButtonActivate(This) #define IDvdControl_ButtonSelectAndActivate(This,ulButton) \ (This)->lpVtbl -> ButtonSelectAndActivate(This,ulButton) #define IDvdControl_StillOff(This) \ (This)->lpVtbl -> StillOff(This) #define IDvdControl_PauseOn(This) \ (This)->lpVtbl -> PauseOn(This) #define IDvdControl_PauseOff(This) \ (This)->lpVtbl -> PauseOff(This) #define IDvdControl_MenuLanguageSelect(This,Language) \ (This)->lpVtbl -> MenuLanguageSelect(This,Language) #define IDvdControl_AudioStreamChange(This,ulAudio) \ (This)->lpVtbl -> AudioStreamChange(This,ulAudio) #define IDvdControl_SubpictureStreamChange(This,ulSubPicture,bDisplay) \ (This)->lpVtbl -> SubpictureStreamChange(This,ulSubPicture,bDisplay) #define IDvdControl_AngleChange(This,ulAngle) \ (This)->lpVtbl -> AngleChange(This,ulAngle) #define IDvdControl_ParentalLevelSelect(This,ulParentalLevel) \ (This)->lpVtbl -> ParentalLevelSelect(This,ulParentalLevel) #define IDvdControl_ParentalCountrySelect(This,wCountry) \ (This)->lpVtbl -> ParentalCountrySelect(This,wCountry) #define IDvdControl_KaraokeAudioPresentationModeChange(This,ulMode) \ (This)->lpVtbl -> KaraokeAudioPresentationModeChange(This,ulMode) #define IDvdControl_VideoModePreferrence(This,ulPreferredDisplayMode) \ (This)->lpVtbl -> VideoModePreferrence(This,ulPreferredDisplayMode) #define IDvdControl_SetRoot(This,pszPath) \ (This)->lpVtbl -> SetRoot(This,pszPath) #define IDvdControl_MouseActivate(This,point) \ (This)->lpVtbl -> MouseActivate(This,point) #define IDvdControl_MouseSelect(This,point) \ (This)->lpVtbl -> MouseSelect(This,point) #define IDvdControl_ChapterPlayAutoStop(This,ulTitle,ulChapter,ulChaptersToPlay) \ (This)->lpVtbl -> ChapterPlayAutoStop(This,ulTitle,ulChapter,ulChaptersToPlay) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IDvdControl_TitlePlay_Proxy( IDvdControl * This, /* [in] */ ULONG ulTitle); void __RPC_STUB IDvdControl_TitlePlay_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl_ChapterPlay_Proxy( IDvdControl * This, /* [in] */ ULONG ulTitle, /* [in] */ ULONG ulChapter); void __RPC_STUB IDvdControl_ChapterPlay_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl_TimePlay_Proxy( IDvdControl * This, /* [in] */ ULONG ulTitle, /* [in] */ ULONG bcdTime); void __RPC_STUB IDvdControl_TimePlay_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl_StopForResume_Proxy( IDvdControl * This); void __RPC_STUB IDvdControl_StopForResume_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl_GoUp_Proxy( IDvdControl * This); void __RPC_STUB IDvdControl_GoUp_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl_TimeSearch_Proxy( IDvdControl * This, /* [in] */ ULONG bcdTime); void __RPC_STUB IDvdControl_TimeSearch_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl_ChapterSearch_Proxy( IDvdControl * This, /* [in] */ ULONG ulChapter); void __RPC_STUB IDvdControl_ChapterSearch_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl_PrevPGSearch_Proxy( IDvdControl * This); void __RPC_STUB IDvdControl_PrevPGSearch_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl_TopPGSearch_Proxy( IDvdControl * This); void __RPC_STUB IDvdControl_TopPGSearch_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl_NextPGSearch_Proxy( IDvdControl * This); void __RPC_STUB IDvdControl_NextPGSearch_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl_ForwardScan_Proxy( IDvdControl * This, /* [in] */ double dwSpeed); void __RPC_STUB IDvdControl_ForwardScan_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl_BackwardScan_Proxy( IDvdControl * This, /* [in] */ double dwSpeed); void __RPC_STUB IDvdControl_BackwardScan_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl_MenuCall_Proxy( IDvdControl * This, /* [in] */ DVD_MENU_ID MenuID); void __RPC_STUB IDvdControl_MenuCall_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl_Resume_Proxy( IDvdControl * This); void __RPC_STUB IDvdControl_Resume_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl_UpperButtonSelect_Proxy( IDvdControl * This); void __RPC_STUB IDvdControl_UpperButtonSelect_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl_LowerButtonSelect_Proxy( IDvdControl * This); void __RPC_STUB IDvdControl_LowerButtonSelect_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl_LeftButtonSelect_Proxy( IDvdControl * This); void __RPC_STUB IDvdControl_LeftButtonSelect_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl_RightButtonSelect_Proxy( IDvdControl * This); void __RPC_STUB IDvdControl_RightButtonSelect_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl_ButtonActivate_Proxy( IDvdControl * This); void __RPC_STUB IDvdControl_ButtonActivate_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl_ButtonSelectAndActivate_Proxy( IDvdControl * This, /* [in] */ ULONG ulButton); void __RPC_STUB IDvdControl_ButtonSelectAndActivate_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl_StillOff_Proxy( IDvdControl * This); void __RPC_STUB IDvdControl_StillOff_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl_PauseOn_Proxy( IDvdControl * This); void __RPC_STUB IDvdControl_PauseOn_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl_PauseOff_Proxy( IDvdControl * This); void __RPC_STUB IDvdControl_PauseOff_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl_MenuLanguageSelect_Proxy( IDvdControl * This, /* [in] */ LCID Language); void __RPC_STUB IDvdControl_MenuLanguageSelect_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl_AudioStreamChange_Proxy( IDvdControl * This, /* [in] */ ULONG ulAudio); void __RPC_STUB IDvdControl_AudioStreamChange_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl_SubpictureStreamChange_Proxy( IDvdControl * This, /* [in] */ ULONG ulSubPicture, /* [in] */ BOOL bDisplay); void __RPC_STUB IDvdControl_SubpictureStreamChange_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl_AngleChange_Proxy( IDvdControl * This, /* [in] */ ULONG ulAngle); void __RPC_STUB IDvdControl_AngleChange_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl_ParentalLevelSelect_Proxy( IDvdControl * This, /* [in] */ ULONG ulParentalLevel); void __RPC_STUB IDvdControl_ParentalLevelSelect_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl_ParentalCountrySelect_Proxy( IDvdControl * This, /* [in] */ WORD wCountry); void __RPC_STUB IDvdControl_ParentalCountrySelect_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl_KaraokeAudioPresentationModeChange_Proxy( IDvdControl * This, /* [in] */ ULONG ulMode); void __RPC_STUB IDvdControl_KaraokeAudioPresentationModeChange_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl_VideoModePreferrence_Proxy( IDvdControl * This, /* [in] */ ULONG ulPreferredDisplayMode); void __RPC_STUB IDvdControl_VideoModePreferrence_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl_SetRoot_Proxy( IDvdControl * This, /* [in] */ LPCWSTR pszPath); void __RPC_STUB IDvdControl_SetRoot_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl_MouseActivate_Proxy( IDvdControl * This, /* [in] */ POINT point); void __RPC_STUB IDvdControl_MouseActivate_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl_MouseSelect_Proxy( IDvdControl * This, /* [in] */ POINT point); void __RPC_STUB IDvdControl_MouseSelect_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl_ChapterPlayAutoStop_Proxy( IDvdControl * This, /* [in] */ ULONG ulTitle, /* [in] */ ULONG ulChapter, /* [in] */ ULONG ulChaptersToPlay); void __RPC_STUB IDvdControl_ChapterPlayAutoStop_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IDvdControl_INTERFACE_DEFINED__ */ #ifndef __IDvdInfo_INTERFACE_DEFINED__ #define __IDvdInfo_INTERFACE_DEFINED__ /* interface IDvdInfo */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IDvdInfo; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("A70EFE60-E2A3-11d0-A9BE-00AA0061BE93") IDvdInfo : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE GetCurrentDomain( /* [out] */ DVD_DOMAIN *pDomain) = 0; virtual HRESULT STDMETHODCALLTYPE GetCurrentLocation( /* [out] */ DVD_PLAYBACK_LOCATION *pLocation) = 0; virtual HRESULT STDMETHODCALLTYPE GetTotalTitleTime( /* [out] */ ULONG *pulTotalTime) = 0; virtual HRESULT STDMETHODCALLTYPE GetCurrentButton( /* [out] */ ULONG *pulButtonsAvailable, /* [out] */ ULONG *pulCurrentButton) = 0; virtual HRESULT STDMETHODCALLTYPE GetCurrentAngle( /* [out] */ ULONG *pulAnglesAvailable, /* [out] */ ULONG *pulCurrentAngle) = 0; virtual HRESULT STDMETHODCALLTYPE GetCurrentAudio( /* [out] */ ULONG *pulStreamsAvailable, /* [out] */ ULONG *pulCurrentStream) = 0; virtual HRESULT STDMETHODCALLTYPE GetCurrentSubpicture( /* [out] */ ULONG *pulStreamsAvailable, /* [out] */ ULONG *pulCurrentStream, /* [out] */ BOOL *pIsDisabled) = 0; virtual HRESULT STDMETHODCALLTYPE GetCurrentUOPS( /* [out] */ VALID_UOP_SOMTHING_OR_OTHER *pUOP) = 0; virtual HRESULT STDMETHODCALLTYPE GetAllSPRMs( /* [out] */ SPRMARRAY *pRegisterArray) = 0; virtual HRESULT STDMETHODCALLTYPE GetAllGPRMs( /* [out] */ GPRMARRAY *pRegisterArray) = 0; virtual HRESULT STDMETHODCALLTYPE GetAudioLanguage( /* [in] */ ULONG ulStream, /* [out] */ LCID *pLanguage) = 0; virtual HRESULT STDMETHODCALLTYPE GetSubpictureLanguage( /* [in] */ ULONG ulStream, /* [out] */ LCID *pLanguage) = 0; virtual HRESULT STDMETHODCALLTYPE GetTitleAttributes( /* [in] */ ULONG ulTitle, /* [out] */ DVD_ATR *pATR) = 0; virtual HRESULT STDMETHODCALLTYPE GetVMGAttributes( /* [out] */ DVD_ATR *pATR) = 0; virtual HRESULT STDMETHODCALLTYPE GetCurrentVideoAttributes( /* [out] */ DVD_VideoATR *pATR) = 0; virtual HRESULT STDMETHODCALLTYPE GetCurrentAudioAttributes( /* [out] */ DVD_AudioATR *pATR) = 0; virtual HRESULT STDMETHODCALLTYPE GetCurrentSubpictureAttributes( /* [out] */ DVD_SubpictureATR *pATR) = 0; virtual HRESULT STDMETHODCALLTYPE GetCurrentVolumeInfo( /* [out] */ ULONG *pulNumOfVol, /* [out] */ ULONG *pulThisVolNum, /* [out] */ DVD_DISC_SIDE *pSide, /* [out] */ ULONG *pulNumOfTitles) = 0; virtual HRESULT STDMETHODCALLTYPE GetDVDTextInfo( /* [size_is][out] */ BYTE *pTextManager, /* [in] */ ULONG ulBufSize, /* [out] */ ULONG *pulActualSize) = 0; virtual HRESULT STDMETHODCALLTYPE GetPlayerParentalLevel( /* [out] */ ULONG *pulParentalLevel, /* [out] */ ULONG *pulCountryCode) = 0; virtual HRESULT STDMETHODCALLTYPE GetNumberOfChapters( /* [in] */ ULONG ulTitle, /* [out] */ ULONG *pulNumberOfChapters) = 0; virtual HRESULT STDMETHODCALLTYPE GetTitleParentalLevels( /* [in] */ ULONG ulTitle, /* [out] */ ULONG *pulParentalLevels) = 0; virtual HRESULT STDMETHODCALLTYPE GetRoot( /* [size_is][out] */ LPSTR pRoot, /* [in] */ ULONG ulBufSize, /* [out] */ ULONG *pulActualSize) = 0; }; #else /* C style interface */ typedef struct IDvdInfoVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IDvdInfo * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IDvdInfo * This); ULONG ( STDMETHODCALLTYPE *Release )( IDvdInfo * This); HRESULT ( STDMETHODCALLTYPE *GetCurrentDomain )( IDvdInfo * This, /* [out] */ DVD_DOMAIN *pDomain); HRESULT ( STDMETHODCALLTYPE *GetCurrentLocation )( IDvdInfo * This, /* [out] */ DVD_PLAYBACK_LOCATION *pLocation); HRESULT ( STDMETHODCALLTYPE *GetTotalTitleTime )( IDvdInfo * This, /* [out] */ ULONG *pulTotalTime); HRESULT ( STDMETHODCALLTYPE *GetCurrentButton )( IDvdInfo * This, /* [out] */ ULONG *pulButtonsAvailable, /* [out] */ ULONG *pulCurrentButton); HRESULT ( STDMETHODCALLTYPE *GetCurrentAngle )( IDvdInfo * This, /* [out] */ ULONG *pulAnglesAvailable, /* [out] */ ULONG *pulCurrentAngle); HRESULT ( STDMETHODCALLTYPE *GetCurrentAudio )( IDvdInfo * This, /* [out] */ ULONG *pulStreamsAvailable, /* [out] */ ULONG *pulCurrentStream); HRESULT ( STDMETHODCALLTYPE *GetCurrentSubpicture )( IDvdInfo * This, /* [out] */ ULONG *pulStreamsAvailable, /* [out] */ ULONG *pulCurrentStream, /* [out] */ BOOL *pIsDisabled); HRESULT ( STDMETHODCALLTYPE *GetCurrentUOPS )( IDvdInfo * This, /* [out] */ VALID_UOP_SOMTHING_OR_OTHER *pUOP); HRESULT ( STDMETHODCALLTYPE *GetAllSPRMs )( IDvdInfo * This, /* [out] */ SPRMARRAY *pRegisterArray); HRESULT ( STDMETHODCALLTYPE *GetAllGPRMs )( IDvdInfo * This, /* [out] */ GPRMARRAY *pRegisterArray); HRESULT ( STDMETHODCALLTYPE *GetAudioLanguage )( IDvdInfo * This, /* [in] */ ULONG ulStream, /* [out] */ LCID *pLanguage); HRESULT ( STDMETHODCALLTYPE *GetSubpictureLanguage )( IDvdInfo * This, /* [in] */ ULONG ulStream, /* [out] */ LCID *pLanguage); HRESULT ( STDMETHODCALLTYPE *GetTitleAttributes )( IDvdInfo * This, /* [in] */ ULONG ulTitle, /* [out] */ DVD_ATR *pATR); HRESULT ( STDMETHODCALLTYPE *GetVMGAttributes )( IDvdInfo * This, /* [out] */ DVD_ATR *pATR); HRESULT ( STDMETHODCALLTYPE *GetCurrentVideoAttributes )( IDvdInfo * This, /* [out] */ DVD_VideoATR *pATR); HRESULT ( STDMETHODCALLTYPE *GetCurrentAudioAttributes )( IDvdInfo * This, /* [out] */ DVD_AudioATR *pATR); HRESULT ( STDMETHODCALLTYPE *GetCurrentSubpictureAttributes )( IDvdInfo * This, /* [out] */ DVD_SubpictureATR *pATR); HRESULT ( STDMETHODCALLTYPE *GetCurrentVolumeInfo )( IDvdInfo * This, /* [out] */ ULONG *pulNumOfVol, /* [out] */ ULONG *pulThisVolNum, /* [out] */ DVD_DISC_SIDE *pSide, /* [out] */ ULONG *pulNumOfTitles); HRESULT ( STDMETHODCALLTYPE *GetDVDTextInfo )( IDvdInfo * This, /* [size_is][out] */ BYTE *pTextManager, /* [in] */ ULONG ulBufSize, /* [out] */ ULONG *pulActualSize); HRESULT ( STDMETHODCALLTYPE *GetPlayerParentalLevel )( IDvdInfo * This, /* [out] */ ULONG *pulParentalLevel, /* [out] */ ULONG *pulCountryCode); HRESULT ( STDMETHODCALLTYPE *GetNumberOfChapters )( IDvdInfo * This, /* [in] */ ULONG ulTitle, /* [out] */ ULONG *pulNumberOfChapters); HRESULT ( STDMETHODCALLTYPE *GetTitleParentalLevels )( IDvdInfo * This, /* [in] */ ULONG ulTitle, /* [out] */ ULONG *pulParentalLevels); HRESULT ( STDMETHODCALLTYPE *GetRoot )( IDvdInfo * This, /* [size_is][out] */ LPSTR pRoot, /* [in] */ ULONG ulBufSize, /* [out] */ ULONG *pulActualSize); END_INTERFACE } IDvdInfoVtbl; interface IDvdInfo { CONST_VTBL struct IDvdInfoVtbl *lpVtbl; }; #ifdef COBJMACROS #define IDvdInfo_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IDvdInfo_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IDvdInfo_Release(This) \ (This)->lpVtbl -> Release(This) #define IDvdInfo_GetCurrentDomain(This,pDomain) \ (This)->lpVtbl -> GetCurrentDomain(This,pDomain) #define IDvdInfo_GetCurrentLocation(This,pLocation) \ (This)->lpVtbl -> GetCurrentLocation(This,pLocation) #define IDvdInfo_GetTotalTitleTime(This,pulTotalTime) \ (This)->lpVtbl -> GetTotalTitleTime(This,pulTotalTime) #define IDvdInfo_GetCurrentButton(This,pulButtonsAvailable,pulCurrentButton) \ (This)->lpVtbl -> GetCurrentButton(This,pulButtonsAvailable,pulCurrentButton) #define IDvdInfo_GetCurrentAngle(This,pulAnglesAvailable,pulCurrentAngle) \ (This)->lpVtbl -> GetCurrentAngle(This,pulAnglesAvailable,pulCurrentAngle) #define IDvdInfo_GetCurrentAudio(This,pulStreamsAvailable,pulCurrentStream) \ (This)->lpVtbl -> GetCurrentAudio(This,pulStreamsAvailable,pulCurrentStream) #define IDvdInfo_GetCurrentSubpicture(This,pulStreamsAvailable,pulCurrentStream,pIsDisabled) \ (This)->lpVtbl -> GetCurrentSubpicture(This,pulStreamsAvailable,pulCurrentStream,pIsDisabled) #define IDvdInfo_GetCurrentUOPS(This,pUOP) \ (This)->lpVtbl -> GetCurrentUOPS(This,pUOP) #define IDvdInfo_GetAllSPRMs(This,pRegisterArray) \ (This)->lpVtbl -> GetAllSPRMs(This,pRegisterArray) #define IDvdInfo_GetAllGPRMs(This,pRegisterArray) \ (This)->lpVtbl -> GetAllGPRMs(This,pRegisterArray) #define IDvdInfo_GetAudioLanguage(This,ulStream,pLanguage) \ (This)->lpVtbl -> GetAudioLanguage(This,ulStream,pLanguage) #define IDvdInfo_GetSubpictureLanguage(This,ulStream,pLanguage) \ (This)->lpVtbl -> GetSubpictureLanguage(This,ulStream,pLanguage) #define IDvdInfo_GetTitleAttributes(This,ulTitle,pATR) \ (This)->lpVtbl -> GetTitleAttributes(This,ulTitle,pATR) #define IDvdInfo_GetVMGAttributes(This,pATR) \ (This)->lpVtbl -> GetVMGAttributes(This,pATR) #define IDvdInfo_GetCurrentVideoAttributes(This,pATR) \ (This)->lpVtbl -> GetCurrentVideoAttributes(This,pATR) #define IDvdInfo_GetCurrentAudioAttributes(This,pATR) \ (This)->lpVtbl -> GetCurrentAudioAttributes(This,pATR) #define IDvdInfo_GetCurrentSubpictureAttributes(This,pATR) \ (This)->lpVtbl -> GetCurrentSubpictureAttributes(This,pATR) #define IDvdInfo_GetCurrentVolumeInfo(This,pulNumOfVol,pulThisVolNum,pSide,pulNumOfTitles) \ (This)->lpVtbl -> GetCurrentVolumeInfo(This,pulNumOfVol,pulThisVolNum,pSide,pulNumOfTitles) #define IDvdInfo_GetDVDTextInfo(This,pTextManager,ulBufSize,pulActualSize) \ (This)->lpVtbl -> GetDVDTextInfo(This,pTextManager,ulBufSize,pulActualSize) #define IDvdInfo_GetPlayerParentalLevel(This,pulParentalLevel,pulCountryCode) \ (This)->lpVtbl -> GetPlayerParentalLevel(This,pulParentalLevel,pulCountryCode) #define IDvdInfo_GetNumberOfChapters(This,ulTitle,pulNumberOfChapters) \ (This)->lpVtbl -> GetNumberOfChapters(This,ulTitle,pulNumberOfChapters) #define IDvdInfo_GetTitleParentalLevels(This,ulTitle,pulParentalLevels) \ (This)->lpVtbl -> GetTitleParentalLevels(This,ulTitle,pulParentalLevels) #define IDvdInfo_GetRoot(This,pRoot,ulBufSize,pulActualSize) \ (This)->lpVtbl -> GetRoot(This,pRoot,ulBufSize,pulActualSize) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IDvdInfo_GetCurrentDomain_Proxy( IDvdInfo * This, /* [out] */ DVD_DOMAIN *pDomain); void __RPC_STUB IDvdInfo_GetCurrentDomain_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo_GetCurrentLocation_Proxy( IDvdInfo * This, /* [out] */ DVD_PLAYBACK_LOCATION *pLocation); void __RPC_STUB IDvdInfo_GetCurrentLocation_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo_GetTotalTitleTime_Proxy( IDvdInfo * This, /* [out] */ ULONG *pulTotalTime); void __RPC_STUB IDvdInfo_GetTotalTitleTime_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo_GetCurrentButton_Proxy( IDvdInfo * This, /* [out] */ ULONG *pulButtonsAvailable, /* [out] */ ULONG *pulCurrentButton); void __RPC_STUB IDvdInfo_GetCurrentButton_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo_GetCurrentAngle_Proxy( IDvdInfo * This, /* [out] */ ULONG *pulAnglesAvailable, /* [out] */ ULONG *pulCurrentAngle); void __RPC_STUB IDvdInfo_GetCurrentAngle_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo_GetCurrentAudio_Proxy( IDvdInfo * This, /* [out] */ ULONG *pulStreamsAvailable, /* [out] */ ULONG *pulCurrentStream); void __RPC_STUB IDvdInfo_GetCurrentAudio_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo_GetCurrentSubpicture_Proxy( IDvdInfo * This, /* [out] */ ULONG *pulStreamsAvailable, /* [out] */ ULONG *pulCurrentStream, /* [out] */ BOOL *pIsDisabled); void __RPC_STUB IDvdInfo_GetCurrentSubpicture_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo_GetCurrentUOPS_Proxy( IDvdInfo * This, /* [out] */ VALID_UOP_SOMTHING_OR_OTHER *pUOP); void __RPC_STUB IDvdInfo_GetCurrentUOPS_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo_GetAllSPRMs_Proxy( IDvdInfo * This, /* [out] */ SPRMARRAY *pRegisterArray); void __RPC_STUB IDvdInfo_GetAllSPRMs_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo_GetAllGPRMs_Proxy( IDvdInfo * This, /* [out] */ GPRMARRAY *pRegisterArray); void __RPC_STUB IDvdInfo_GetAllGPRMs_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo_GetAudioLanguage_Proxy( IDvdInfo * This, /* [in] */ ULONG ulStream, /* [out] */ LCID *pLanguage); void __RPC_STUB IDvdInfo_GetAudioLanguage_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo_GetSubpictureLanguage_Proxy( IDvdInfo * This, /* [in] */ ULONG ulStream, /* [out] */ LCID *pLanguage); void __RPC_STUB IDvdInfo_GetSubpictureLanguage_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo_GetTitleAttributes_Proxy( IDvdInfo * This, /* [in] */ ULONG ulTitle, /* [out] */ DVD_ATR *pATR); void __RPC_STUB IDvdInfo_GetTitleAttributes_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo_GetVMGAttributes_Proxy( IDvdInfo * This, /* [out] */ DVD_ATR *pATR); void __RPC_STUB IDvdInfo_GetVMGAttributes_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo_GetCurrentVideoAttributes_Proxy( IDvdInfo * This, /* [out] */ DVD_VideoATR *pATR); void __RPC_STUB IDvdInfo_GetCurrentVideoAttributes_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo_GetCurrentAudioAttributes_Proxy( IDvdInfo * This, /* [out] */ DVD_AudioATR *pATR); void __RPC_STUB IDvdInfo_GetCurrentAudioAttributes_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo_GetCurrentSubpictureAttributes_Proxy( IDvdInfo * This, /* [out] */ DVD_SubpictureATR *pATR); void __RPC_STUB IDvdInfo_GetCurrentSubpictureAttributes_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo_GetCurrentVolumeInfo_Proxy( IDvdInfo * This, /* [out] */ ULONG *pulNumOfVol, /* [out] */ ULONG *pulThisVolNum, /* [out] */ DVD_DISC_SIDE *pSide, /* [out] */ ULONG *pulNumOfTitles); void __RPC_STUB IDvdInfo_GetCurrentVolumeInfo_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo_GetDVDTextInfo_Proxy( IDvdInfo * This, /* [size_is][out] */ BYTE *pTextManager, /* [in] */ ULONG ulBufSize, /* [out] */ ULONG *pulActualSize); void __RPC_STUB IDvdInfo_GetDVDTextInfo_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo_GetPlayerParentalLevel_Proxy( IDvdInfo * This, /* [out] */ ULONG *pulParentalLevel, /* [out] */ ULONG *pulCountryCode); void __RPC_STUB IDvdInfo_GetPlayerParentalLevel_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo_GetNumberOfChapters_Proxy( IDvdInfo * This, /* [in] */ ULONG ulTitle, /* [out] */ ULONG *pulNumberOfChapters); void __RPC_STUB IDvdInfo_GetNumberOfChapters_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo_GetTitleParentalLevels_Proxy( IDvdInfo * This, /* [in] */ ULONG ulTitle, /* [out] */ ULONG *pulParentalLevels); void __RPC_STUB IDvdInfo_GetTitleParentalLevels_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo_GetRoot_Proxy( IDvdInfo * This, /* [size_is][out] */ LPSTR pRoot, /* [in] */ ULONG ulBufSize, /* [out] */ ULONG *pulActualSize); void __RPC_STUB IDvdInfo_GetRoot_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IDvdInfo_INTERFACE_DEFINED__ */ #ifndef __IDvdCmd_INTERFACE_DEFINED__ #define __IDvdCmd_INTERFACE_DEFINED__ /* interface IDvdCmd */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IDvdCmd; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("5a4a97e4-94ee-4a55-9751-74b5643aa27d") IDvdCmd : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE WaitForStart( void) = 0; virtual HRESULT STDMETHODCALLTYPE WaitForEnd( void) = 0; }; #else /* C style interface */ typedef struct IDvdCmdVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IDvdCmd * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IDvdCmd * This); ULONG ( STDMETHODCALLTYPE *Release )( IDvdCmd * This); HRESULT ( STDMETHODCALLTYPE *WaitForStart )( IDvdCmd * This); HRESULT ( STDMETHODCALLTYPE *WaitForEnd )( IDvdCmd * This); END_INTERFACE } IDvdCmdVtbl; interface IDvdCmd { CONST_VTBL struct IDvdCmdVtbl *lpVtbl; }; #ifdef COBJMACROS #define IDvdCmd_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IDvdCmd_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IDvdCmd_Release(This) \ (This)->lpVtbl -> Release(This) #define IDvdCmd_WaitForStart(This) \ (This)->lpVtbl -> WaitForStart(This) #define IDvdCmd_WaitForEnd(This) \ (This)->lpVtbl -> WaitForEnd(This) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IDvdCmd_WaitForStart_Proxy( IDvdCmd * This); void __RPC_STUB IDvdCmd_WaitForStart_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdCmd_WaitForEnd_Proxy( IDvdCmd * This); void __RPC_STUB IDvdCmd_WaitForEnd_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IDvdCmd_INTERFACE_DEFINED__ */ #ifndef __IDvdState_INTERFACE_DEFINED__ #define __IDvdState_INTERFACE_DEFINED__ /* interface IDvdState */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IDvdState; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("86303d6d-1c4a-4087-ab42-f711167048ef") IDvdState : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE GetDiscID( /* [out] */ ULONGLONG *pullUniqueID) = 0; virtual HRESULT STDMETHODCALLTYPE GetParentalLevel( /* [out] */ ULONG *pulParentalLevel) = 0; }; #else /* C style interface */ typedef struct IDvdStateVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IDvdState * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IDvdState * This); ULONG ( STDMETHODCALLTYPE *Release )( IDvdState * This); HRESULT ( STDMETHODCALLTYPE *GetDiscID )( IDvdState * This, /* [out] */ ULONGLONG *pullUniqueID); HRESULT ( STDMETHODCALLTYPE *GetParentalLevel )( IDvdState * This, /* [out] */ ULONG *pulParentalLevel); END_INTERFACE } IDvdStateVtbl; interface IDvdState { CONST_VTBL struct IDvdStateVtbl *lpVtbl; }; #ifdef COBJMACROS #define IDvdState_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IDvdState_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IDvdState_Release(This) \ (This)->lpVtbl -> Release(This) #define IDvdState_GetDiscID(This,pullUniqueID) \ (This)->lpVtbl -> GetDiscID(This,pullUniqueID) #define IDvdState_GetParentalLevel(This,pulParentalLevel) \ (This)->lpVtbl -> GetParentalLevel(This,pulParentalLevel) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IDvdState_GetDiscID_Proxy( IDvdState * This, /* [out] */ ULONGLONG *pullUniqueID); void __RPC_STUB IDvdState_GetDiscID_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdState_GetParentalLevel_Proxy( IDvdState * This, /* [out] */ ULONG *pulParentalLevel); void __RPC_STUB IDvdState_GetParentalLevel_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IDvdState_INTERFACE_DEFINED__ */ #ifndef __IDvdControl2_INTERFACE_DEFINED__ #define __IDvdControl2_INTERFACE_DEFINED__ /* interface IDvdControl2 */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IDvdControl2; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("33BC7430-EEC0-11D2-8201-00A0C9D74842") IDvdControl2 : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE PlayTitle( /* [in] */ ULONG ulTitle, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd) = 0; virtual HRESULT STDMETHODCALLTYPE PlayChapterInTitle( /* [in] */ ULONG ulTitle, /* [in] */ ULONG ulChapter, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd) = 0; virtual HRESULT STDMETHODCALLTYPE PlayAtTimeInTitle( /* [in] */ ULONG ulTitle, /* [in] */ DVD_HMSF_TIMECODE *pStartTime, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd) = 0; virtual HRESULT STDMETHODCALLTYPE Stop( void) = 0; virtual HRESULT STDMETHODCALLTYPE ReturnFromSubmenu( /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd) = 0; virtual HRESULT STDMETHODCALLTYPE PlayAtTime( /* [in] */ DVD_HMSF_TIMECODE *pTime, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd) = 0; virtual HRESULT STDMETHODCALLTYPE PlayChapter( /* [in] */ ULONG ulChapter, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd) = 0; virtual HRESULT STDMETHODCALLTYPE PlayPrevChapter( /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd) = 0; virtual HRESULT STDMETHODCALLTYPE ReplayChapter( /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd) = 0; virtual HRESULT STDMETHODCALLTYPE PlayNextChapter( /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd) = 0; virtual HRESULT STDMETHODCALLTYPE PlayForwards( /* [in] */ double dSpeed, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd) = 0; virtual HRESULT STDMETHODCALLTYPE PlayBackwards( /* [in] */ double dSpeed, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd) = 0; virtual HRESULT STDMETHODCALLTYPE ShowMenu( /* [in] */ DVD_MENU_ID MenuID, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd) = 0; virtual HRESULT STDMETHODCALLTYPE Resume( /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd) = 0; virtual HRESULT STDMETHODCALLTYPE SelectRelativeButton( DVD_RELATIVE_BUTTON buttonDir) = 0; virtual HRESULT STDMETHODCALLTYPE ActivateButton( void) = 0; virtual HRESULT STDMETHODCALLTYPE SelectButton( /* [in] */ ULONG ulButton) = 0; virtual HRESULT STDMETHODCALLTYPE SelectAndActivateButton( /* [in] */ ULONG ulButton) = 0; virtual HRESULT STDMETHODCALLTYPE StillOff( void) = 0; virtual HRESULT STDMETHODCALLTYPE Pause( /* [in] */ BOOL bState) = 0; virtual HRESULT STDMETHODCALLTYPE SelectAudioStream( /* [in] */ ULONG ulAudio, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd) = 0; virtual HRESULT STDMETHODCALLTYPE SelectSubpictureStream( /* [in] */ ULONG ulSubPicture, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd) = 0; virtual HRESULT STDMETHODCALLTYPE SetSubpictureState( /* [in] */ BOOL bState, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd) = 0; virtual HRESULT STDMETHODCALLTYPE SelectAngle( /* [in] */ ULONG ulAngle, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd) = 0; virtual HRESULT STDMETHODCALLTYPE SelectParentalLevel( /* [in] */ ULONG ulParentalLevel) = 0; virtual HRESULT STDMETHODCALLTYPE SelectParentalCountry( /* [in] */ BYTE bCountry[ 2 ]) = 0; virtual HRESULT STDMETHODCALLTYPE SelectKaraokeAudioPresentationMode( /* [in] */ ULONG ulMode) = 0; virtual HRESULT STDMETHODCALLTYPE SelectVideoModePreference( /* [in] */ ULONG ulPreferredDisplayMode) = 0; virtual HRESULT STDMETHODCALLTYPE SetDVDDirectory( /* [in] */ LPCWSTR pszwPath) = 0; virtual HRESULT STDMETHODCALLTYPE ActivateAtPosition( /* [in] */ POINT point) = 0; virtual HRESULT STDMETHODCALLTYPE SelectAtPosition( /* [in] */ POINT point) = 0; virtual HRESULT STDMETHODCALLTYPE PlayChaptersAutoStop( /* [in] */ ULONG ulTitle, /* [in] */ ULONG ulChapter, /* [in] */ ULONG ulChaptersToPlay, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd) = 0; virtual HRESULT STDMETHODCALLTYPE AcceptParentalLevelChange( /* [in] */ BOOL bAccept) = 0; virtual HRESULT STDMETHODCALLTYPE SetOption( /* [in] */ DVD_OPTION_FLAG flag, /* [in] */ BOOL fState) = 0; virtual HRESULT STDMETHODCALLTYPE SetState( /* [in] */ IDvdState *pState, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd) = 0; virtual HRESULT STDMETHODCALLTYPE PlayPeriodInTitleAutoStop( /* [in] */ ULONG ulTitle, /* [in] */ DVD_HMSF_TIMECODE *pStartTime, /* [in] */ DVD_HMSF_TIMECODE *pEndTime, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd) = 0; virtual HRESULT STDMETHODCALLTYPE SetGPRM( /* [in] */ ULONG ulIndex, /* [in] */ WORD wValue, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd) = 0; virtual HRESULT STDMETHODCALLTYPE SelectDefaultMenuLanguage( /* [in] */ LCID Language) = 0; virtual HRESULT STDMETHODCALLTYPE SelectDefaultAudioLanguage( /* [in] */ LCID Language, /* [in] */ DVD_AUDIO_LANG_EXT audioExtension) = 0; virtual HRESULT STDMETHODCALLTYPE SelectDefaultSubpictureLanguage( /* [in] */ LCID Language, /* [in] */ DVD_SUBPICTURE_LANG_EXT subpictureExtension) = 0; }; #else /* C style interface */ typedef struct IDvdControl2Vtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IDvdControl2 * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IDvdControl2 * This); ULONG ( STDMETHODCALLTYPE *Release )( IDvdControl2 * This); HRESULT ( STDMETHODCALLTYPE *PlayTitle )( IDvdControl2 * This, /* [in] */ ULONG ulTitle, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); HRESULT ( STDMETHODCALLTYPE *PlayChapterInTitle )( IDvdControl2 * This, /* [in] */ ULONG ulTitle, /* [in] */ ULONG ulChapter, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); HRESULT ( STDMETHODCALLTYPE *PlayAtTimeInTitle )( IDvdControl2 * This, /* [in] */ ULONG ulTitle, /* [in] */ DVD_HMSF_TIMECODE *pStartTime, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); HRESULT ( STDMETHODCALLTYPE *Stop )( IDvdControl2 * This); HRESULT ( STDMETHODCALLTYPE *ReturnFromSubmenu )( IDvdControl2 * This, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); HRESULT ( STDMETHODCALLTYPE *PlayAtTime )( IDvdControl2 * This, /* [in] */ DVD_HMSF_TIMECODE *pTime, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); HRESULT ( STDMETHODCALLTYPE *PlayChapter )( IDvdControl2 * This, /* [in] */ ULONG ulChapter, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); HRESULT ( STDMETHODCALLTYPE *PlayPrevChapter )( IDvdControl2 * This, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); HRESULT ( STDMETHODCALLTYPE *ReplayChapter )( IDvdControl2 * This, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); HRESULT ( STDMETHODCALLTYPE *PlayNextChapter )( IDvdControl2 * This, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); HRESULT ( STDMETHODCALLTYPE *PlayForwards )( IDvdControl2 * This, /* [in] */ double dSpeed, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); HRESULT ( STDMETHODCALLTYPE *PlayBackwards )( IDvdControl2 * This, /* [in] */ double dSpeed, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); HRESULT ( STDMETHODCALLTYPE *ShowMenu )( IDvdControl2 * This, /* [in] */ DVD_MENU_ID MenuID, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); HRESULT ( STDMETHODCALLTYPE *Resume )( IDvdControl2 * This, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); HRESULT ( STDMETHODCALLTYPE *SelectRelativeButton )( IDvdControl2 * This, DVD_RELATIVE_BUTTON buttonDir); HRESULT ( STDMETHODCALLTYPE *ActivateButton )( IDvdControl2 * This); HRESULT ( STDMETHODCALLTYPE *SelectButton )( IDvdControl2 * This, /* [in] */ ULONG ulButton); HRESULT ( STDMETHODCALLTYPE *SelectAndActivateButton )( IDvdControl2 * This, /* [in] */ ULONG ulButton); HRESULT ( STDMETHODCALLTYPE *StillOff )( IDvdControl2 * This); HRESULT ( STDMETHODCALLTYPE *Pause )( IDvdControl2 * This, /* [in] */ BOOL bState); HRESULT ( STDMETHODCALLTYPE *SelectAudioStream )( IDvdControl2 * This, /* [in] */ ULONG ulAudio, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); HRESULT ( STDMETHODCALLTYPE *SelectSubpictureStream )( IDvdControl2 * This, /* [in] */ ULONG ulSubPicture, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); HRESULT ( STDMETHODCALLTYPE *SetSubpictureState )( IDvdControl2 * This, /* [in] */ BOOL bState, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); HRESULT ( STDMETHODCALLTYPE *SelectAngle )( IDvdControl2 * This, /* [in] */ ULONG ulAngle, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); HRESULT ( STDMETHODCALLTYPE *SelectParentalLevel )( IDvdControl2 * This, /* [in] */ ULONG ulParentalLevel); HRESULT ( STDMETHODCALLTYPE *SelectParentalCountry )( IDvdControl2 * This, /* [in] */ BYTE bCountry[ 2 ]); HRESULT ( STDMETHODCALLTYPE *SelectKaraokeAudioPresentationMode )( IDvdControl2 * This, /* [in] */ ULONG ulMode); HRESULT ( STDMETHODCALLTYPE *SelectVideoModePreference )( IDvdControl2 * This, /* [in] */ ULONG ulPreferredDisplayMode); HRESULT ( STDMETHODCALLTYPE *SetDVDDirectory )( IDvdControl2 * This, /* [in] */ LPCWSTR pszwPath); HRESULT ( STDMETHODCALLTYPE *ActivateAtPosition )( IDvdControl2 * This, /* [in] */ POINT point); HRESULT ( STDMETHODCALLTYPE *SelectAtPosition )( IDvdControl2 * This, /* [in] */ POINT point); HRESULT ( STDMETHODCALLTYPE *PlayChaptersAutoStop )( IDvdControl2 * This, /* [in] */ ULONG ulTitle, /* [in] */ ULONG ulChapter, /* [in] */ ULONG ulChaptersToPlay, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); HRESULT ( STDMETHODCALLTYPE *AcceptParentalLevelChange )( IDvdControl2 * This, /* [in] */ BOOL bAccept); HRESULT ( STDMETHODCALLTYPE *SetOption )( IDvdControl2 * This, /* [in] */ DVD_OPTION_FLAG flag, /* [in] */ BOOL fState); HRESULT ( STDMETHODCALLTYPE *SetState )( IDvdControl2 * This, /* [in] */ IDvdState *pState, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); HRESULT ( STDMETHODCALLTYPE *PlayPeriodInTitleAutoStop )( IDvdControl2 * This, /* [in] */ ULONG ulTitle, /* [in] */ DVD_HMSF_TIMECODE *pStartTime, /* [in] */ DVD_HMSF_TIMECODE *pEndTime, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); HRESULT ( STDMETHODCALLTYPE *SetGPRM )( IDvdControl2 * This, /* [in] */ ULONG ulIndex, /* [in] */ WORD wValue, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); HRESULT ( STDMETHODCALLTYPE *SelectDefaultMenuLanguage )( IDvdControl2 * This, /* [in] */ LCID Language); HRESULT ( STDMETHODCALLTYPE *SelectDefaultAudioLanguage )( IDvdControl2 * This, /* [in] */ LCID Language, /* [in] */ DVD_AUDIO_LANG_EXT audioExtension); HRESULT ( STDMETHODCALLTYPE *SelectDefaultSubpictureLanguage )( IDvdControl2 * This, /* [in] */ LCID Language, /* [in] */ DVD_SUBPICTURE_LANG_EXT subpictureExtension); END_INTERFACE } IDvdControl2Vtbl; interface IDvdControl2 { CONST_VTBL struct IDvdControl2Vtbl *lpVtbl; }; #ifdef COBJMACROS #define IDvdControl2_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IDvdControl2_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IDvdControl2_Release(This) \ (This)->lpVtbl -> Release(This) #define IDvdControl2_PlayTitle(This,ulTitle,dwFlags,ppCmd) \ (This)->lpVtbl -> PlayTitle(This,ulTitle,dwFlags,ppCmd) #define IDvdControl2_PlayChapterInTitle(This,ulTitle,ulChapter,dwFlags,ppCmd) \ (This)->lpVtbl -> PlayChapterInTitle(This,ulTitle,ulChapter,dwFlags,ppCmd) #define IDvdControl2_PlayAtTimeInTitle(This,ulTitle,pStartTime,dwFlags,ppCmd) \ (This)->lpVtbl -> PlayAtTimeInTitle(This,ulTitle,pStartTime,dwFlags,ppCmd) #define IDvdControl2_Stop(This) \ (This)->lpVtbl -> Stop(This) #define IDvdControl2_ReturnFromSubmenu(This,dwFlags,ppCmd) \ (This)->lpVtbl -> ReturnFromSubmenu(This,dwFlags,ppCmd) #define IDvdControl2_PlayAtTime(This,pTime,dwFlags,ppCmd) \ (This)->lpVtbl -> PlayAtTime(This,pTime,dwFlags,ppCmd) #define IDvdControl2_PlayChapter(This,ulChapter,dwFlags,ppCmd) \ (This)->lpVtbl -> PlayChapter(This,ulChapter,dwFlags,ppCmd) #define IDvdControl2_PlayPrevChapter(This,dwFlags,ppCmd) \ (This)->lpVtbl -> PlayPrevChapter(This,dwFlags,ppCmd) #define IDvdControl2_ReplayChapter(This,dwFlags,ppCmd) \ (This)->lpVtbl -> ReplayChapter(This,dwFlags,ppCmd) #define IDvdControl2_PlayNextChapter(This,dwFlags,ppCmd) \ (This)->lpVtbl -> PlayNextChapter(This,dwFlags,ppCmd) #define IDvdControl2_PlayForwards(This,dSpeed,dwFlags,ppCmd) \ (This)->lpVtbl -> PlayForwards(This,dSpeed,dwFlags,ppCmd) #define IDvdControl2_PlayBackwards(This,dSpeed,dwFlags,ppCmd) \ (This)->lpVtbl -> PlayBackwards(This,dSpeed,dwFlags,ppCmd) #define IDvdControl2_ShowMenu(This,MenuID,dwFlags,ppCmd) \ (This)->lpVtbl -> ShowMenu(This,MenuID,dwFlags,ppCmd) #define IDvdControl2_Resume(This,dwFlags,ppCmd) \ (This)->lpVtbl -> Resume(This,dwFlags,ppCmd) #define IDvdControl2_SelectRelativeButton(This,buttonDir) \ (This)->lpVtbl -> SelectRelativeButton(This,buttonDir) #define IDvdControl2_ActivateButton(This) \ (This)->lpVtbl -> ActivateButton(This) #define IDvdControl2_SelectButton(This,ulButton) \ (This)->lpVtbl -> SelectButton(This,ulButton) #define IDvdControl2_SelectAndActivateButton(This,ulButton) \ (This)->lpVtbl -> SelectAndActivateButton(This,ulButton) #define IDvdControl2_StillOff(This) \ (This)->lpVtbl -> StillOff(This) #define IDvdControl2_Pause(This,bState) \ (This)->lpVtbl -> Pause(This,bState) #define IDvdControl2_SelectAudioStream(This,ulAudio,dwFlags,ppCmd) \ (This)->lpVtbl -> SelectAudioStream(This,ulAudio,dwFlags,ppCmd) #define IDvdControl2_SelectSubpictureStream(This,ulSubPicture,dwFlags,ppCmd) \ (This)->lpVtbl -> SelectSubpictureStream(This,ulSubPicture,dwFlags,ppCmd) #define IDvdControl2_SetSubpictureState(This,bState,dwFlags,ppCmd) \ (This)->lpVtbl -> SetSubpictureState(This,bState,dwFlags,ppCmd) #define IDvdControl2_SelectAngle(This,ulAngle,dwFlags,ppCmd) \ (This)->lpVtbl -> SelectAngle(This,ulAngle,dwFlags,ppCmd) #define IDvdControl2_SelectParentalLevel(This,ulParentalLevel) \ (This)->lpVtbl -> SelectParentalLevel(This,ulParentalLevel) #define IDvdControl2_SelectParentalCountry(This,bCountry) \ (This)->lpVtbl -> SelectParentalCountry(This,bCountry) #define IDvdControl2_SelectKaraokeAudioPresentationMode(This,ulMode) \ (This)->lpVtbl -> SelectKaraokeAudioPresentationMode(This,ulMode) #define IDvdControl2_SelectVideoModePreference(This,ulPreferredDisplayMode) \ (This)->lpVtbl -> SelectVideoModePreference(This,ulPreferredDisplayMode) #define IDvdControl2_SetDVDDirectory(This,pszwPath) \ (This)->lpVtbl -> SetDVDDirectory(This,pszwPath) #define IDvdControl2_ActivateAtPosition(This,point) \ (This)->lpVtbl -> ActivateAtPosition(This,point) #define IDvdControl2_SelectAtPosition(This,point) \ (This)->lpVtbl -> SelectAtPosition(This,point) #define IDvdControl2_PlayChaptersAutoStop(This,ulTitle,ulChapter,ulChaptersToPlay,dwFlags,ppCmd) \ (This)->lpVtbl -> PlayChaptersAutoStop(This,ulTitle,ulChapter,ulChaptersToPlay,dwFlags,ppCmd) #define IDvdControl2_AcceptParentalLevelChange(This,bAccept) \ (This)->lpVtbl -> AcceptParentalLevelChange(This,bAccept) #define IDvdControl2_SetOption(This,flag,fState) \ (This)->lpVtbl -> SetOption(This,flag,fState) #define IDvdControl2_SetState(This,pState,dwFlags,ppCmd) \ (This)->lpVtbl -> SetState(This,pState,dwFlags,ppCmd) #define IDvdControl2_PlayPeriodInTitleAutoStop(This,ulTitle,pStartTime,pEndTime,dwFlags,ppCmd) \ (This)->lpVtbl -> PlayPeriodInTitleAutoStop(This,ulTitle,pStartTime,pEndTime,dwFlags,ppCmd) #define IDvdControl2_SetGPRM(This,ulIndex,wValue,dwFlags,ppCmd) \ (This)->lpVtbl -> SetGPRM(This,ulIndex,wValue,dwFlags,ppCmd) #define IDvdControl2_SelectDefaultMenuLanguage(This,Language) \ (This)->lpVtbl -> SelectDefaultMenuLanguage(This,Language) #define IDvdControl2_SelectDefaultAudioLanguage(This,Language,audioExtension) \ (This)->lpVtbl -> SelectDefaultAudioLanguage(This,Language,audioExtension) #define IDvdControl2_SelectDefaultSubpictureLanguage(This,Language,subpictureExtension) \ (This)->lpVtbl -> SelectDefaultSubpictureLanguage(This,Language,subpictureExtension) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IDvdControl2_PlayTitle_Proxy( IDvdControl2 * This, /* [in] */ ULONG ulTitle, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); void __RPC_STUB IDvdControl2_PlayTitle_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_PlayChapterInTitle_Proxy( IDvdControl2 * This, /* [in] */ ULONG ulTitle, /* [in] */ ULONG ulChapter, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); void __RPC_STUB IDvdControl2_PlayChapterInTitle_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_PlayAtTimeInTitle_Proxy( IDvdControl2 * This, /* [in] */ ULONG ulTitle, /* [in] */ DVD_HMSF_TIMECODE *pStartTime, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); void __RPC_STUB IDvdControl2_PlayAtTimeInTitle_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_Stop_Proxy( IDvdControl2 * This); void __RPC_STUB IDvdControl2_Stop_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_ReturnFromSubmenu_Proxy( IDvdControl2 * This, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); void __RPC_STUB IDvdControl2_ReturnFromSubmenu_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_PlayAtTime_Proxy( IDvdControl2 * This, /* [in] */ DVD_HMSF_TIMECODE *pTime, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); void __RPC_STUB IDvdControl2_PlayAtTime_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_PlayChapter_Proxy( IDvdControl2 * This, /* [in] */ ULONG ulChapter, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); void __RPC_STUB IDvdControl2_PlayChapter_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_PlayPrevChapter_Proxy( IDvdControl2 * This, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); void __RPC_STUB IDvdControl2_PlayPrevChapter_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_ReplayChapter_Proxy( IDvdControl2 * This, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); void __RPC_STUB IDvdControl2_ReplayChapter_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_PlayNextChapter_Proxy( IDvdControl2 * This, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); void __RPC_STUB IDvdControl2_PlayNextChapter_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_PlayForwards_Proxy( IDvdControl2 * This, /* [in] */ double dSpeed, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); void __RPC_STUB IDvdControl2_PlayForwards_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_PlayBackwards_Proxy( IDvdControl2 * This, /* [in] */ double dSpeed, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); void __RPC_STUB IDvdControl2_PlayBackwards_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_ShowMenu_Proxy( IDvdControl2 * This, /* [in] */ DVD_MENU_ID MenuID, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); void __RPC_STUB IDvdControl2_ShowMenu_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_Resume_Proxy( IDvdControl2 * This, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); void __RPC_STUB IDvdControl2_Resume_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_SelectRelativeButton_Proxy( IDvdControl2 * This, DVD_RELATIVE_BUTTON buttonDir); void __RPC_STUB IDvdControl2_SelectRelativeButton_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_ActivateButton_Proxy( IDvdControl2 * This); void __RPC_STUB IDvdControl2_ActivateButton_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_SelectButton_Proxy( IDvdControl2 * This, /* [in] */ ULONG ulButton); void __RPC_STUB IDvdControl2_SelectButton_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_SelectAndActivateButton_Proxy( IDvdControl2 * This, /* [in] */ ULONG ulButton); void __RPC_STUB IDvdControl2_SelectAndActivateButton_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_StillOff_Proxy( IDvdControl2 * This); void __RPC_STUB IDvdControl2_StillOff_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_Pause_Proxy( IDvdControl2 * This, /* [in] */ BOOL bState); void __RPC_STUB IDvdControl2_Pause_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_SelectAudioStream_Proxy( IDvdControl2 * This, /* [in] */ ULONG ulAudio, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); void __RPC_STUB IDvdControl2_SelectAudioStream_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_SelectSubpictureStream_Proxy( IDvdControl2 * This, /* [in] */ ULONG ulSubPicture, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); void __RPC_STUB IDvdControl2_SelectSubpictureStream_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_SetSubpictureState_Proxy( IDvdControl2 * This, /* [in] */ BOOL bState, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); void __RPC_STUB IDvdControl2_SetSubpictureState_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_SelectAngle_Proxy( IDvdControl2 * This, /* [in] */ ULONG ulAngle, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); void __RPC_STUB IDvdControl2_SelectAngle_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_SelectParentalLevel_Proxy( IDvdControl2 * This, /* [in] */ ULONG ulParentalLevel); void __RPC_STUB IDvdControl2_SelectParentalLevel_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_SelectParentalCountry_Proxy( IDvdControl2 * This, /* [in] */ BYTE bCountry[ 2 ]); void __RPC_STUB IDvdControl2_SelectParentalCountry_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_SelectKaraokeAudioPresentationMode_Proxy( IDvdControl2 * This, /* [in] */ ULONG ulMode); void __RPC_STUB IDvdControl2_SelectKaraokeAudioPresentationMode_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_SelectVideoModePreference_Proxy( IDvdControl2 * This, /* [in] */ ULONG ulPreferredDisplayMode); void __RPC_STUB IDvdControl2_SelectVideoModePreference_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_SetDVDDirectory_Proxy( IDvdControl2 * This, /* [in] */ LPCWSTR pszwPath); void __RPC_STUB IDvdControl2_SetDVDDirectory_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_ActivateAtPosition_Proxy( IDvdControl2 * This, /* [in] */ POINT point); void __RPC_STUB IDvdControl2_ActivateAtPosition_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_SelectAtPosition_Proxy( IDvdControl2 * This, /* [in] */ POINT point); void __RPC_STUB IDvdControl2_SelectAtPosition_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_PlayChaptersAutoStop_Proxy( IDvdControl2 * This, /* [in] */ ULONG ulTitle, /* [in] */ ULONG ulChapter, /* [in] */ ULONG ulChaptersToPlay, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); void __RPC_STUB IDvdControl2_PlayChaptersAutoStop_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_AcceptParentalLevelChange_Proxy( IDvdControl2 * This, /* [in] */ BOOL bAccept); void __RPC_STUB IDvdControl2_AcceptParentalLevelChange_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_SetOption_Proxy( IDvdControl2 * This, /* [in] */ DVD_OPTION_FLAG flag, /* [in] */ BOOL fState); void __RPC_STUB IDvdControl2_SetOption_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_SetState_Proxy( IDvdControl2 * This, /* [in] */ IDvdState *pState, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); void __RPC_STUB IDvdControl2_SetState_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_PlayPeriodInTitleAutoStop_Proxy( IDvdControl2 * This, /* [in] */ ULONG ulTitle, /* [in] */ DVD_HMSF_TIMECODE *pStartTime, /* [in] */ DVD_HMSF_TIMECODE *pEndTime, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); void __RPC_STUB IDvdControl2_PlayPeriodInTitleAutoStop_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_SetGPRM_Proxy( IDvdControl2 * This, /* [in] */ ULONG ulIndex, /* [in] */ WORD wValue, /* [in] */ DWORD dwFlags, /* [out] */ IDvdCmd **ppCmd); void __RPC_STUB IDvdControl2_SetGPRM_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_SelectDefaultMenuLanguage_Proxy( IDvdControl2 * This, /* [in] */ LCID Language); void __RPC_STUB IDvdControl2_SelectDefaultMenuLanguage_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_SelectDefaultAudioLanguage_Proxy( IDvdControl2 * This, /* [in] */ LCID Language, /* [in] */ DVD_AUDIO_LANG_EXT audioExtension); void __RPC_STUB IDvdControl2_SelectDefaultAudioLanguage_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdControl2_SelectDefaultSubpictureLanguage_Proxy( IDvdControl2 * This, /* [in] */ LCID Language, /* [in] */ DVD_SUBPICTURE_LANG_EXT subpictureExtension); void __RPC_STUB IDvdControl2_SelectDefaultSubpictureLanguage_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IDvdControl2_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0371 */ /* [local] */ enum DVD_TextStringType { DVD_Struct_Volume = 0x1, DVD_Struct_Title = 0x2, DVD_Struct_ParentalID = 0x3, DVD_Struct_PartOfTitle = 0x4, DVD_Struct_Cell = 0x5, DVD_Stream_Audio = 0x10, DVD_Stream_Subpicture = 0x11, DVD_Stream_Angle = 0x12, DVD_Channel_Audio = 0x20, DVD_General_Name = 0x30, DVD_General_Comments = 0x31, DVD_Title_Series = 0x38, DVD_Title_Movie = 0x39, DVD_Title_Video = 0x3a, DVD_Title_Album = 0x3b, DVD_Title_Song = 0x3c, DVD_Title_Other = 0x3f, DVD_Title_Sub_Series = 0x40, DVD_Title_Sub_Movie = 0x41, DVD_Title_Sub_Video = 0x42, DVD_Title_Sub_Album = 0x43, DVD_Title_Sub_Song = 0x44, DVD_Title_Sub_Other = 0x47, DVD_Title_Orig_Series = 0x48, DVD_Title_Orig_Movie = 0x49, DVD_Title_Orig_Video = 0x4a, DVD_Title_Orig_Album = 0x4b, DVD_Title_Orig_Song = 0x4c, DVD_Title_Orig_Other = 0x4f, DVD_Other_Scene = 0x50, DVD_Other_Cut = 0x51, DVD_Other_Take = 0x52 } ; enum DVD_TextCharSet { DVD_CharSet_Unicode = 0, DVD_CharSet_ISO646 = 1, DVD_CharSet_JIS_Roman_Kanji = 2, DVD_CharSet_ISO8859_1 = 3, DVD_CharSet_ShiftJIS_Kanji_Roman_Katakana = 4 } ; #define DVD_TITLE_MENU 0x000 #define DVD_STREAM_DATA_CURRENT 0x800 #define DVD_STREAM_DATA_VMGM 0x400 #define DVD_STREAM_DATA_VTSM 0x401 #define DVD_DEFAULT_AUDIO_STREAM 0x0f typedef struct tagDVD_DECODER_CAPS { DWORD dwSize; DWORD dwAudioCaps; double dFwdMaxRateVideo; double dFwdMaxRateAudio; double dFwdMaxRateSP; double dBwdMaxRateVideo; double dBwdMaxRateAudio; double dBwdMaxRateSP; DWORD dwRes1; DWORD dwRes2; DWORD dwRes3; DWORD dwRes4; } DVD_DECODER_CAPS; #define DVD_AUDIO_CAPS_AC3 0x00000001 #define DVD_AUDIO_CAPS_MPEG2 0x00000002 #define DVD_AUDIO_CAPS_LPCM 0x00000004 #define DVD_AUDIO_CAPS_DTS 0x00000008 #define DVD_AUDIO_CAPS_SDDS 0x00000010 extern RPC_IF_HANDLE __MIDL_itf_strmif_0371_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0371_v0_0_s_ifspec; #ifndef __IDvdInfo2_INTERFACE_DEFINED__ #define __IDvdInfo2_INTERFACE_DEFINED__ /* interface IDvdInfo2 */ /* [unique][uuid][object] */ EXTERN_C const IID IID_IDvdInfo2; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("34151510-EEC0-11D2-8201-00A0C9D74842") IDvdInfo2 : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE GetCurrentDomain( /* [out] */ DVD_DOMAIN *pDomain) = 0; virtual HRESULT STDMETHODCALLTYPE GetCurrentLocation( /* [out] */ DVD_PLAYBACK_LOCATION2 *pLocation) = 0; virtual HRESULT STDMETHODCALLTYPE GetTotalTitleTime( /* [out] */ DVD_HMSF_TIMECODE *pTotalTime, /* [out] */ ULONG *ulTimeCodeFlags) = 0; virtual HRESULT STDMETHODCALLTYPE GetCurrentButton( /* [out] */ ULONG *pulButtonsAvailable, /* [out] */ ULONG *pulCurrentButton) = 0; virtual HRESULT STDMETHODCALLTYPE GetCurrentAngle( /* [out] */ ULONG *pulAnglesAvailable, /* [out] */ ULONG *pulCurrentAngle) = 0; virtual HRESULT STDMETHODCALLTYPE GetCurrentAudio( /* [out] */ ULONG *pulStreamsAvailable, /* [out] */ ULONG *pulCurrentStream) = 0; virtual HRESULT STDMETHODCALLTYPE GetCurrentSubpicture( /* [out] */ ULONG *pulStreamsAvailable, /* [out] */ ULONG *pulCurrentStream, /* [out] */ BOOL *pbIsDisabled) = 0; virtual HRESULT STDMETHODCALLTYPE GetCurrentUOPS( /* [out] */ ULONG *pulUOPs) = 0; virtual HRESULT STDMETHODCALLTYPE GetAllSPRMs( /* [out] */ SPRMARRAY *pRegisterArray) = 0; virtual HRESULT STDMETHODCALLTYPE GetAllGPRMs( /* [out] */ GPRMARRAY *pRegisterArray) = 0; virtual HRESULT STDMETHODCALLTYPE GetAudioLanguage( /* [in] */ ULONG ulStream, /* [out] */ LCID *pLanguage) = 0; virtual HRESULT STDMETHODCALLTYPE GetSubpictureLanguage( /* [in] */ ULONG ulStream, /* [out] */ LCID *pLanguage) = 0; virtual HRESULT STDMETHODCALLTYPE GetTitleAttributes( /* [in] */ ULONG ulTitle, /* [out] */ DVD_MenuAttributes *pMenu, /* [out] */ DVD_TitleAttributes *pTitle) = 0; virtual HRESULT STDMETHODCALLTYPE GetVMGAttributes( /* [out] */ DVD_MenuAttributes *pATR) = 0; virtual HRESULT STDMETHODCALLTYPE GetCurrentVideoAttributes( /* [out] */ DVD_VideoAttributes *pATR) = 0; virtual HRESULT STDMETHODCALLTYPE GetAudioAttributes( /* [in] */ ULONG ulStream, /* [out] */ DVD_AudioAttributes *pATR) = 0; virtual HRESULT STDMETHODCALLTYPE GetKaraokeAttributes( /* [in] */ ULONG ulStream, /* [out] */ DVD_KaraokeAttributes *pAttributes) = 0; virtual HRESULT STDMETHODCALLTYPE GetSubpictureAttributes( /* [in] */ ULONG ulStream, /* [out] */ DVD_SubpictureAttributes *pATR) = 0; virtual HRESULT STDMETHODCALLTYPE GetDVDVolumeInfo( /* [out] */ ULONG *pulNumOfVolumes, /* [out] */ ULONG *pulVolume, /* [out] */ DVD_DISC_SIDE *pSide, /* [out] */ ULONG *pulNumOfTitles) = 0; virtual HRESULT STDMETHODCALLTYPE GetDVDTextNumberOfLanguages( /* [out] */ ULONG *pulNumOfLangs) = 0; virtual HRESULT STDMETHODCALLTYPE GetDVDTextLanguageInfo( /* [in] */ ULONG ulLangIndex, /* [out] */ ULONG *pulNumOfStrings, /* [out] */ LCID *pLangCode, /* [out] */ enum DVD_TextCharSet *pbCharacterSet) = 0; virtual HRESULT STDMETHODCALLTYPE GetDVDTextStringAsNative( /* [in] */ ULONG ulLangIndex, /* [in] */ ULONG ulStringIndex, /* [out] */ BYTE *pbBuffer, /* [in] */ ULONG ulMaxBufferSize, /* [out] */ ULONG *pulActualSize, /* [out] */ enum DVD_TextStringType *pType) = 0; virtual HRESULT STDMETHODCALLTYPE GetDVDTextStringAsUnicode( /* [in] */ ULONG ulLangIndex, /* [in] */ ULONG ulStringIndex, /* [out] */ WCHAR *pchwBuffer, /* [in] */ ULONG ulMaxBufferSize, /* [out] */ ULONG *pulActualSize, /* [out] */ enum DVD_TextStringType *pType) = 0; virtual HRESULT STDMETHODCALLTYPE GetPlayerParentalLevel( /* [out] */ ULONG *pulParentalLevel, /* [out] */ BYTE pbCountryCode[ 2 ]) = 0; virtual HRESULT STDMETHODCALLTYPE GetNumberOfChapters( /* [in] */ ULONG ulTitle, /* [out] */ ULONG *pulNumOfChapters) = 0; virtual HRESULT STDMETHODCALLTYPE GetTitleParentalLevels( /* [in] */ ULONG ulTitle, /* [out] */ ULONG *pulParentalLevels) = 0; virtual HRESULT STDMETHODCALLTYPE GetDVDDirectory( /* [size_is][out] */ LPWSTR pszwPath, /* [in] */ ULONG ulMaxSize, /* [out] */ ULONG *pulActualSize) = 0; virtual HRESULT STDMETHODCALLTYPE IsAudioStreamEnabled( /* [in] */ ULONG ulStreamNum, /* [out] */ BOOL *pbEnabled) = 0; virtual HRESULT STDMETHODCALLTYPE GetDiscID( /* [in] */ LPCWSTR pszwPath, /* [out] */ ULONGLONG *pullDiscID) = 0; virtual HRESULT STDMETHODCALLTYPE GetState( /* [out] */ IDvdState **pStateData) = 0; virtual HRESULT STDMETHODCALLTYPE GetMenuLanguages( /* [out] */ LCID *pLanguages, /* [in] */ ULONG ulMaxLanguages, /* [out] */ ULONG *pulActualLanguages) = 0; virtual HRESULT STDMETHODCALLTYPE GetButtonAtPosition( /* [in] */ POINT point, /* [out] */ ULONG *pulButtonIndex) = 0; virtual HRESULT STDMETHODCALLTYPE GetCmdFromEvent( /* [in] */ LONG_PTR lParam1, /* [out] */ IDvdCmd **pCmdObj) = 0; virtual HRESULT STDMETHODCALLTYPE GetDefaultMenuLanguage( /* [out] */ LCID *pLanguage) = 0; virtual HRESULT STDMETHODCALLTYPE GetDefaultAudioLanguage( /* [out] */ LCID *pLanguage, /* [out] */ DVD_AUDIO_LANG_EXT *pAudioExtension) = 0; virtual HRESULT STDMETHODCALLTYPE GetDefaultSubpictureLanguage( /* [out] */ LCID *pLanguage, /* [out] */ DVD_SUBPICTURE_LANG_EXT *pSubpictureExtension) = 0; virtual HRESULT STDMETHODCALLTYPE GetDecoderCaps( /* [out] */ DVD_DECODER_CAPS *pCaps) = 0; virtual HRESULT STDMETHODCALLTYPE GetButtonRect( /* [in] */ ULONG ulButton, /* [out] */ RECT *pRect) = 0; virtual HRESULT STDMETHODCALLTYPE IsSubpictureStreamEnabled( /* [in] */ ULONG ulStreamNum, /* [out] */ BOOL *pbEnabled) = 0; }; #else /* C style interface */ typedef struct IDvdInfo2Vtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IDvdInfo2 * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IDvdInfo2 * This); ULONG ( STDMETHODCALLTYPE *Release )( IDvdInfo2 * This); HRESULT ( STDMETHODCALLTYPE *GetCurrentDomain )( IDvdInfo2 * This, /* [out] */ DVD_DOMAIN *pDomain); HRESULT ( STDMETHODCALLTYPE *GetCurrentLocation )( IDvdInfo2 * This, /* [out] */ DVD_PLAYBACK_LOCATION2 *pLocation); HRESULT ( STDMETHODCALLTYPE *GetTotalTitleTime )( IDvdInfo2 * This, /* [out] */ DVD_HMSF_TIMECODE *pTotalTime, /* [out] */ ULONG *ulTimeCodeFlags); HRESULT ( STDMETHODCALLTYPE *GetCurrentButton )( IDvdInfo2 * This, /* [out] */ ULONG *pulButtonsAvailable, /* [out] */ ULONG *pulCurrentButton); HRESULT ( STDMETHODCALLTYPE *GetCurrentAngle )( IDvdInfo2 * This, /* [out] */ ULONG *pulAnglesAvailable, /* [out] */ ULONG *pulCurrentAngle); HRESULT ( STDMETHODCALLTYPE *GetCurrentAudio )( IDvdInfo2 * This, /* [out] */ ULONG *pulStreamsAvailable, /* [out] */ ULONG *pulCurrentStream); HRESULT ( STDMETHODCALLTYPE *GetCurrentSubpicture )( IDvdInfo2 * This, /* [out] */ ULONG *pulStreamsAvailable, /* [out] */ ULONG *pulCurrentStream, /* [out] */ BOOL *pbIsDisabled); HRESULT ( STDMETHODCALLTYPE *GetCurrentUOPS )( IDvdInfo2 * This, /* [out] */ ULONG *pulUOPs); HRESULT ( STDMETHODCALLTYPE *GetAllSPRMs )( IDvdInfo2 * This, /* [out] */ SPRMARRAY *pRegisterArray); HRESULT ( STDMETHODCALLTYPE *GetAllGPRMs )( IDvdInfo2 * This, /* [out] */ GPRMARRAY *pRegisterArray); HRESULT ( STDMETHODCALLTYPE *GetAudioLanguage )( IDvdInfo2 * This, /* [in] */ ULONG ulStream, /* [out] */ LCID *pLanguage); HRESULT ( STDMETHODCALLTYPE *GetSubpictureLanguage )( IDvdInfo2 * This, /* [in] */ ULONG ulStream, /* [out] */ LCID *pLanguage); HRESULT ( STDMETHODCALLTYPE *GetTitleAttributes )( IDvdInfo2 * This, /* [in] */ ULONG ulTitle, /* [out] */ DVD_MenuAttributes *pMenu, /* [out] */ DVD_TitleAttributes *pTitle); HRESULT ( STDMETHODCALLTYPE *GetVMGAttributes )( IDvdInfo2 * This, /* [out] */ DVD_MenuAttributes *pATR); HRESULT ( STDMETHODCALLTYPE *GetCurrentVideoAttributes )( IDvdInfo2 * This, /* [out] */ DVD_VideoAttributes *pATR); HRESULT ( STDMETHODCALLTYPE *GetAudioAttributes )( IDvdInfo2 * This, /* [in] */ ULONG ulStream, /* [out] */ DVD_AudioAttributes *pATR); HRESULT ( STDMETHODCALLTYPE *GetKaraokeAttributes )( IDvdInfo2 * This, /* [in] */ ULONG ulStream, /* [out] */ DVD_KaraokeAttributes *pAttributes); HRESULT ( STDMETHODCALLTYPE *GetSubpictureAttributes )( IDvdInfo2 * This, /* [in] */ ULONG ulStream, /* [out] */ DVD_SubpictureAttributes *pATR); HRESULT ( STDMETHODCALLTYPE *GetDVDVolumeInfo )( IDvdInfo2 * This, /* [out] */ ULONG *pulNumOfVolumes, /* [out] */ ULONG *pulVolume, /* [out] */ DVD_DISC_SIDE *pSide, /* [out] */ ULONG *pulNumOfTitles); HRESULT ( STDMETHODCALLTYPE *GetDVDTextNumberOfLanguages )( IDvdInfo2 * This, /* [out] */ ULONG *pulNumOfLangs); HRESULT ( STDMETHODCALLTYPE *GetDVDTextLanguageInfo )( IDvdInfo2 * This, /* [in] */ ULONG ulLangIndex, /* [out] */ ULONG *pulNumOfStrings, /* [out] */ LCID *pLangCode, /* [out] */ enum DVD_TextCharSet *pbCharacterSet); HRESULT ( STDMETHODCALLTYPE *GetDVDTextStringAsNative )( IDvdInfo2 * This, /* [in] */ ULONG ulLangIndex, /* [in] */ ULONG ulStringIndex, /* [out] */ BYTE *pbBuffer, /* [in] */ ULONG ulMaxBufferSize, /* [out] */ ULONG *pulActualSize, /* [out] */ enum DVD_TextStringType *pType); HRESULT ( STDMETHODCALLTYPE *GetDVDTextStringAsUnicode )( IDvdInfo2 * This, /* [in] */ ULONG ulLangIndex, /* [in] */ ULONG ulStringIndex, /* [out] */ WCHAR *pchwBuffer, /* [in] */ ULONG ulMaxBufferSize, /* [out] */ ULONG *pulActualSize, /* [out] */ enum DVD_TextStringType *pType); HRESULT ( STDMETHODCALLTYPE *GetPlayerParentalLevel )( IDvdInfo2 * This, /* [out] */ ULONG *pulParentalLevel, /* [out] */ BYTE pbCountryCode[ 2 ]); HRESULT ( STDMETHODCALLTYPE *GetNumberOfChapters )( IDvdInfo2 * This, /* [in] */ ULONG ulTitle, /* [out] */ ULONG *pulNumOfChapters); HRESULT ( STDMETHODCALLTYPE *GetTitleParentalLevels )( IDvdInfo2 * This, /* [in] */ ULONG ulTitle, /* [out] */ ULONG *pulParentalLevels); HRESULT ( STDMETHODCALLTYPE *GetDVDDirectory )( IDvdInfo2 * This, /* [size_is][out] */ LPWSTR pszwPath, /* [in] */ ULONG ulMaxSize, /* [out] */ ULONG *pulActualSize); HRESULT ( STDMETHODCALLTYPE *IsAudioStreamEnabled )( IDvdInfo2 * This, /* [in] */ ULONG ulStreamNum, /* [out] */ BOOL *pbEnabled); HRESULT ( STDMETHODCALLTYPE *GetDiscID )( IDvdInfo2 * This, /* [in] */ LPCWSTR pszwPath, /* [out] */ ULONGLONG *pullDiscID); HRESULT ( STDMETHODCALLTYPE *GetState )( IDvdInfo2 * This, /* [out] */ IDvdState **pStateData); HRESULT ( STDMETHODCALLTYPE *GetMenuLanguages )( IDvdInfo2 * This, /* [out] */ LCID *pLanguages, /* [in] */ ULONG ulMaxLanguages, /* [out] */ ULONG *pulActualLanguages); HRESULT ( STDMETHODCALLTYPE *GetButtonAtPosition )( IDvdInfo2 * This, /* [in] */ POINT point, /* [out] */ ULONG *pulButtonIndex); HRESULT ( STDMETHODCALLTYPE *GetCmdFromEvent )( IDvdInfo2 * This, /* [in] */ LONG_PTR lParam1, /* [out] */ IDvdCmd **pCmdObj); HRESULT ( STDMETHODCALLTYPE *GetDefaultMenuLanguage )( IDvdInfo2 * This, /* [out] */ LCID *pLanguage); HRESULT ( STDMETHODCALLTYPE *GetDefaultAudioLanguage )( IDvdInfo2 * This, /* [out] */ LCID *pLanguage, /* [out] */ DVD_AUDIO_LANG_EXT *pAudioExtension); HRESULT ( STDMETHODCALLTYPE *GetDefaultSubpictureLanguage )( IDvdInfo2 * This, /* [out] */ LCID *pLanguage, /* [out] */ DVD_SUBPICTURE_LANG_EXT *pSubpictureExtension); HRESULT ( STDMETHODCALLTYPE *GetDecoderCaps )( IDvdInfo2 * This, /* [out] */ DVD_DECODER_CAPS *pCaps); HRESULT ( STDMETHODCALLTYPE *GetButtonRect )( IDvdInfo2 * This, /* [in] */ ULONG ulButton, /* [out] */ RECT *pRect); HRESULT ( STDMETHODCALLTYPE *IsSubpictureStreamEnabled )( IDvdInfo2 * This, /* [in] */ ULONG ulStreamNum, /* [out] */ BOOL *pbEnabled); END_INTERFACE } IDvdInfo2Vtbl; interface IDvdInfo2 { CONST_VTBL struct IDvdInfo2Vtbl *lpVtbl; }; #ifdef COBJMACROS #define IDvdInfo2_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IDvdInfo2_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IDvdInfo2_Release(This) \ (This)->lpVtbl -> Release(This) #define IDvdInfo2_GetCurrentDomain(This,pDomain) \ (This)->lpVtbl -> GetCurrentDomain(This,pDomain) #define IDvdInfo2_GetCurrentLocation(This,pLocation) \ (This)->lpVtbl -> GetCurrentLocation(This,pLocation) #define IDvdInfo2_GetTotalTitleTime(This,pTotalTime,ulTimeCodeFlags) \ (This)->lpVtbl -> GetTotalTitleTime(This,pTotalTime,ulTimeCodeFlags) #define IDvdInfo2_GetCurrentButton(This,pulButtonsAvailable,pulCurrentButton) \ (This)->lpVtbl -> GetCurrentButton(This,pulButtonsAvailable,pulCurrentButton) #define IDvdInfo2_GetCurrentAngle(This,pulAnglesAvailable,pulCurrentAngle) \ (This)->lpVtbl -> GetCurrentAngle(This,pulAnglesAvailable,pulCurrentAngle) #define IDvdInfo2_GetCurrentAudio(This,pulStreamsAvailable,pulCurrentStream) \ (This)->lpVtbl -> GetCurrentAudio(This,pulStreamsAvailable,pulCurrentStream) #define IDvdInfo2_GetCurrentSubpicture(This,pulStreamsAvailable,pulCurrentStream,pbIsDisabled) \ (This)->lpVtbl -> GetCurrentSubpicture(This,pulStreamsAvailable,pulCurrentStream,pbIsDisabled) #define IDvdInfo2_GetCurrentUOPS(This,pulUOPs) \ (This)->lpVtbl -> GetCurrentUOPS(This,pulUOPs) #define IDvdInfo2_GetAllSPRMs(This,pRegisterArray) \ (This)->lpVtbl -> GetAllSPRMs(This,pRegisterArray) #define IDvdInfo2_GetAllGPRMs(This,pRegisterArray) \ (This)->lpVtbl -> GetAllGPRMs(This,pRegisterArray) #define IDvdInfo2_GetAudioLanguage(This,ulStream,pLanguage) \ (This)->lpVtbl -> GetAudioLanguage(This,ulStream,pLanguage) #define IDvdInfo2_GetSubpictureLanguage(This,ulStream,pLanguage) \ (This)->lpVtbl -> GetSubpictureLanguage(This,ulStream,pLanguage) #define IDvdInfo2_GetTitleAttributes(This,ulTitle,pMenu,pTitle) \ (This)->lpVtbl -> GetTitleAttributes(This,ulTitle,pMenu,pTitle) #define IDvdInfo2_GetVMGAttributes(This,pATR) \ (This)->lpVtbl -> GetVMGAttributes(This,pATR) #define IDvdInfo2_GetCurrentVideoAttributes(This,pATR) \ (This)->lpVtbl -> GetCurrentVideoAttributes(This,pATR) #define IDvdInfo2_GetAudioAttributes(This,ulStream,pATR) \ (This)->lpVtbl -> GetAudioAttributes(This,ulStream,pATR) #define IDvdInfo2_GetKaraokeAttributes(This,ulStream,pAttributes) \ (This)->lpVtbl -> GetKaraokeAttributes(This,ulStream,pAttributes) #define IDvdInfo2_GetSubpictureAttributes(This,ulStream,pATR) \ (This)->lpVtbl -> GetSubpictureAttributes(This,ulStream,pATR) #define IDvdInfo2_GetDVDVolumeInfo(This,pulNumOfVolumes,pulVolume,pSide,pulNumOfTitles) \ (This)->lpVtbl -> GetDVDVolumeInfo(This,pulNumOfVolumes,pulVolume,pSide,pulNumOfTitles) #define IDvdInfo2_GetDVDTextNumberOfLanguages(This,pulNumOfLangs) \ (This)->lpVtbl -> GetDVDTextNumberOfLanguages(This,pulNumOfLangs) #define IDvdInfo2_GetDVDTextLanguageInfo(This,ulLangIndex,pulNumOfStrings,pLangCode,pbCharacterSet) \ (This)->lpVtbl -> GetDVDTextLanguageInfo(This,ulLangIndex,pulNumOfStrings,pLangCode,pbCharacterSet) #define IDvdInfo2_GetDVDTextStringAsNative(This,ulLangIndex,ulStringIndex,pbBuffer,ulMaxBufferSize,pulActualSize,pType) \ (This)->lpVtbl -> GetDVDTextStringAsNative(This,ulLangIndex,ulStringIndex,pbBuffer,ulMaxBufferSize,pulActualSize,pType) #define IDvdInfo2_GetDVDTextStringAsUnicode(This,ulLangIndex,ulStringIndex,pchwBuffer,ulMaxBufferSize,pulActualSize,pType) \ (This)->lpVtbl -> GetDVDTextStringAsUnicode(This,ulLangIndex,ulStringIndex,pchwBuffer,ulMaxBufferSize,pulActualSize,pType) #define IDvdInfo2_GetPlayerParentalLevel(This,pulParentalLevel,pbCountryCode) \ (This)->lpVtbl -> GetPlayerParentalLevel(This,pulParentalLevel,pbCountryCode) #define IDvdInfo2_GetNumberOfChapters(This,ulTitle,pulNumOfChapters) \ (This)->lpVtbl -> GetNumberOfChapters(This,ulTitle,pulNumOfChapters) #define IDvdInfo2_GetTitleParentalLevels(This,ulTitle,pulParentalLevels) \ (This)->lpVtbl -> GetTitleParentalLevels(This,ulTitle,pulParentalLevels) #define IDvdInfo2_GetDVDDirectory(This,pszwPath,ulMaxSize,pulActualSize) \ (This)->lpVtbl -> GetDVDDirectory(This,pszwPath,ulMaxSize,pulActualSize) #define IDvdInfo2_IsAudioStreamEnabled(This,ulStreamNum,pbEnabled) \ (This)->lpVtbl -> IsAudioStreamEnabled(This,ulStreamNum,pbEnabled) #define IDvdInfo2_GetDiscID(This,pszwPath,pullDiscID) \ (This)->lpVtbl -> GetDiscID(This,pszwPath,pullDiscID) #define IDvdInfo2_GetState(This,pStateData) \ (This)->lpVtbl -> GetState(This,pStateData) #define IDvdInfo2_GetMenuLanguages(This,pLanguages,ulMaxLanguages,pulActualLanguages) \ (This)->lpVtbl -> GetMenuLanguages(This,pLanguages,ulMaxLanguages,pulActualLanguages) #define IDvdInfo2_GetButtonAtPosition(This,point,pulButtonIndex) \ (This)->lpVtbl -> GetButtonAtPosition(This,point,pulButtonIndex) #define IDvdInfo2_GetCmdFromEvent(This,lParam1,pCmdObj) \ (This)->lpVtbl -> GetCmdFromEvent(This,lParam1,pCmdObj) #define IDvdInfo2_GetDefaultMenuLanguage(This,pLanguage) \ (This)->lpVtbl -> GetDefaultMenuLanguage(This,pLanguage) #define IDvdInfo2_GetDefaultAudioLanguage(This,pLanguage,pAudioExtension) \ (This)->lpVtbl -> GetDefaultAudioLanguage(This,pLanguage,pAudioExtension) #define IDvdInfo2_GetDefaultSubpictureLanguage(This,pLanguage,pSubpictureExtension) \ (This)->lpVtbl -> GetDefaultSubpictureLanguage(This,pLanguage,pSubpictureExtension) #define IDvdInfo2_GetDecoderCaps(This,pCaps) \ (This)->lpVtbl -> GetDecoderCaps(This,pCaps) #define IDvdInfo2_GetButtonRect(This,ulButton,pRect) \ (This)->lpVtbl -> GetButtonRect(This,ulButton,pRect) #define IDvdInfo2_IsSubpictureStreamEnabled(This,ulStreamNum,pbEnabled) \ (This)->lpVtbl -> IsSubpictureStreamEnabled(This,ulStreamNum,pbEnabled) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IDvdInfo2_GetCurrentDomain_Proxy( IDvdInfo2 * This, /* [out] */ DVD_DOMAIN *pDomain); void __RPC_STUB IDvdInfo2_GetCurrentDomain_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_GetCurrentLocation_Proxy( IDvdInfo2 * This, /* [out] */ DVD_PLAYBACK_LOCATION2 *pLocation); void __RPC_STUB IDvdInfo2_GetCurrentLocation_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_GetTotalTitleTime_Proxy( IDvdInfo2 * This, /* [out] */ DVD_HMSF_TIMECODE *pTotalTime, /* [out] */ ULONG *ulTimeCodeFlags); void __RPC_STUB IDvdInfo2_GetTotalTitleTime_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_GetCurrentButton_Proxy( IDvdInfo2 * This, /* [out] */ ULONG *pulButtonsAvailable, /* [out] */ ULONG *pulCurrentButton); void __RPC_STUB IDvdInfo2_GetCurrentButton_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_GetCurrentAngle_Proxy( IDvdInfo2 * This, /* [out] */ ULONG *pulAnglesAvailable, /* [out] */ ULONG *pulCurrentAngle); void __RPC_STUB IDvdInfo2_GetCurrentAngle_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_GetCurrentAudio_Proxy( IDvdInfo2 * This, /* [out] */ ULONG *pulStreamsAvailable, /* [out] */ ULONG *pulCurrentStream); void __RPC_STUB IDvdInfo2_GetCurrentAudio_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_GetCurrentSubpicture_Proxy( IDvdInfo2 * This, /* [out] */ ULONG *pulStreamsAvailable, /* [out] */ ULONG *pulCurrentStream, /* [out] */ BOOL *pbIsDisabled); void __RPC_STUB IDvdInfo2_GetCurrentSubpicture_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_GetCurrentUOPS_Proxy( IDvdInfo2 * This, /* [out] */ ULONG *pulUOPs); void __RPC_STUB IDvdInfo2_GetCurrentUOPS_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_GetAllSPRMs_Proxy( IDvdInfo2 * This, /* [out] */ SPRMARRAY *pRegisterArray); void __RPC_STUB IDvdInfo2_GetAllSPRMs_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_GetAllGPRMs_Proxy( IDvdInfo2 * This, /* [out] */ GPRMARRAY *pRegisterArray); void __RPC_STUB IDvdInfo2_GetAllGPRMs_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_GetAudioLanguage_Proxy( IDvdInfo2 * This, /* [in] */ ULONG ulStream, /* [out] */ LCID *pLanguage); void __RPC_STUB IDvdInfo2_GetAudioLanguage_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_GetSubpictureLanguage_Proxy( IDvdInfo2 * This, /* [in] */ ULONG ulStream, /* [out] */ LCID *pLanguage); void __RPC_STUB IDvdInfo2_GetSubpictureLanguage_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_GetTitleAttributes_Proxy( IDvdInfo2 * This, /* [in] */ ULONG ulTitle, /* [out] */ DVD_MenuAttributes *pMenu, /* [out] */ DVD_TitleAttributes *pTitle); void __RPC_STUB IDvdInfo2_GetTitleAttributes_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_GetVMGAttributes_Proxy( IDvdInfo2 * This, /* [out] */ DVD_MenuAttributes *pATR); void __RPC_STUB IDvdInfo2_GetVMGAttributes_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_GetCurrentVideoAttributes_Proxy( IDvdInfo2 * This, /* [out] */ DVD_VideoAttributes *pATR); void __RPC_STUB IDvdInfo2_GetCurrentVideoAttributes_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_GetAudioAttributes_Proxy( IDvdInfo2 * This, /* [in] */ ULONG ulStream, /* [out] */ DVD_AudioAttributes *pATR); void __RPC_STUB IDvdInfo2_GetAudioAttributes_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_GetKaraokeAttributes_Proxy( IDvdInfo2 * This, /* [in] */ ULONG ulStream, /* [out] */ DVD_KaraokeAttributes *pAttributes); void __RPC_STUB IDvdInfo2_GetKaraokeAttributes_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_GetSubpictureAttributes_Proxy( IDvdInfo2 * This, /* [in] */ ULONG ulStream, /* [out] */ DVD_SubpictureAttributes *pATR); void __RPC_STUB IDvdInfo2_GetSubpictureAttributes_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_GetDVDVolumeInfo_Proxy( IDvdInfo2 * This, /* [out] */ ULONG *pulNumOfVolumes, /* [out] */ ULONG *pulVolume, /* [out] */ DVD_DISC_SIDE *pSide, /* [out] */ ULONG *pulNumOfTitles); void __RPC_STUB IDvdInfo2_GetDVDVolumeInfo_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_GetDVDTextNumberOfLanguages_Proxy( IDvdInfo2 * This, /* [out] */ ULONG *pulNumOfLangs); void __RPC_STUB IDvdInfo2_GetDVDTextNumberOfLanguages_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_GetDVDTextLanguageInfo_Proxy( IDvdInfo2 * This, /* [in] */ ULONG ulLangIndex, /* [out] */ ULONG *pulNumOfStrings, /* [out] */ LCID *pLangCode, /* [out] */ enum DVD_TextCharSet *pbCharacterSet); void __RPC_STUB IDvdInfo2_GetDVDTextLanguageInfo_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_GetDVDTextStringAsNative_Proxy( IDvdInfo2 * This, /* [in] */ ULONG ulLangIndex, /* [in] */ ULONG ulStringIndex, /* [out] */ BYTE *pbBuffer, /* [in] */ ULONG ulMaxBufferSize, /* [out] */ ULONG *pulActualSize, /* [out] */ enum DVD_TextStringType *pType); void __RPC_STUB IDvdInfo2_GetDVDTextStringAsNative_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_GetDVDTextStringAsUnicode_Proxy( IDvdInfo2 * This, /* [in] */ ULONG ulLangIndex, /* [in] */ ULONG ulStringIndex, /* [out] */ WCHAR *pchwBuffer, /* [in] */ ULONG ulMaxBufferSize, /* [out] */ ULONG *pulActualSize, /* [out] */ enum DVD_TextStringType *pType); void __RPC_STUB IDvdInfo2_GetDVDTextStringAsUnicode_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_GetPlayerParentalLevel_Proxy( IDvdInfo2 * This, /* [out] */ ULONG *pulParentalLevel, /* [out] */ BYTE pbCountryCode[ 2 ]); void __RPC_STUB IDvdInfo2_GetPlayerParentalLevel_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_GetNumberOfChapters_Proxy( IDvdInfo2 * This, /* [in] */ ULONG ulTitle, /* [out] */ ULONG *pulNumOfChapters); void __RPC_STUB IDvdInfo2_GetNumberOfChapters_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_GetTitleParentalLevels_Proxy( IDvdInfo2 * This, /* [in] */ ULONG ulTitle, /* [out] */ ULONG *pulParentalLevels); void __RPC_STUB IDvdInfo2_GetTitleParentalLevels_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_GetDVDDirectory_Proxy( IDvdInfo2 * This, /* [size_is][out] */ LPWSTR pszwPath, /* [in] */ ULONG ulMaxSize, /* [out] */ ULONG *pulActualSize); void __RPC_STUB IDvdInfo2_GetDVDDirectory_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_IsAudioStreamEnabled_Proxy( IDvdInfo2 * This, /* [in] */ ULONG ulStreamNum, /* [out] */ BOOL *pbEnabled); void __RPC_STUB IDvdInfo2_IsAudioStreamEnabled_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_GetDiscID_Proxy( IDvdInfo2 * This, /* [in] */ LPCWSTR pszwPath, /* [out] */ ULONGLONG *pullDiscID); void __RPC_STUB IDvdInfo2_GetDiscID_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_GetState_Proxy( IDvdInfo2 * This, /* [out] */ IDvdState **pStateData); void __RPC_STUB IDvdInfo2_GetState_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_GetMenuLanguages_Proxy( IDvdInfo2 * This, /* [out] */ LCID *pLanguages, /* [in] */ ULONG ulMaxLanguages, /* [out] */ ULONG *pulActualLanguages); void __RPC_STUB IDvdInfo2_GetMenuLanguages_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_GetButtonAtPosition_Proxy( IDvdInfo2 * This, /* [in] */ POINT point, /* [out] */ ULONG *pulButtonIndex); void __RPC_STUB IDvdInfo2_GetButtonAtPosition_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_GetCmdFromEvent_Proxy( IDvdInfo2 * This, /* [in] */ LONG_PTR lParam1, /* [out] */ IDvdCmd **pCmdObj); void __RPC_STUB IDvdInfo2_GetCmdFromEvent_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_GetDefaultMenuLanguage_Proxy( IDvdInfo2 * This, /* [out] */ LCID *pLanguage); void __RPC_STUB IDvdInfo2_GetDefaultMenuLanguage_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_GetDefaultAudioLanguage_Proxy( IDvdInfo2 * This, /* [out] */ LCID *pLanguage, /* [out] */ DVD_AUDIO_LANG_EXT *pAudioExtension); void __RPC_STUB IDvdInfo2_GetDefaultAudioLanguage_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_GetDefaultSubpictureLanguage_Proxy( IDvdInfo2 * This, /* [out] */ LCID *pLanguage, /* [out] */ DVD_SUBPICTURE_LANG_EXT *pSubpictureExtension); void __RPC_STUB IDvdInfo2_GetDefaultSubpictureLanguage_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_GetDecoderCaps_Proxy( IDvdInfo2 * This, /* [out] */ DVD_DECODER_CAPS *pCaps); void __RPC_STUB IDvdInfo2_GetDecoderCaps_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_GetButtonRect_Proxy( IDvdInfo2 * This, /* [in] */ ULONG ulButton, /* [out] */ RECT *pRect); void __RPC_STUB IDvdInfo2_GetButtonRect_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdInfo2_IsSubpictureStreamEnabled_Proxy( IDvdInfo2 * This, /* [in] */ ULONG ulStreamNum, /* [out] */ BOOL *pbEnabled); void __RPC_STUB IDvdInfo2_IsSubpictureStreamEnabled_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IDvdInfo2_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0373 */ /* [local] */ typedef enum _AM_DVD_GRAPH_FLAGS { AM_DVD_HWDEC_PREFER = 0x1, AM_DVD_HWDEC_ONLY = 0x2, AM_DVD_SWDEC_PREFER = 0x4, AM_DVD_SWDEC_ONLY = 0x8, AM_DVD_NOVPE = 0x100 } AM_DVD_GRAPH_FLAGS; typedef enum _AM_DVD_STREAM_FLAGS { AM_DVD_STREAM_VIDEO = 0x1, AM_DVD_STREAM_AUDIO = 0x2, AM_DVD_STREAM_SUBPIC = 0x4 } AM_DVD_STREAM_FLAGS; typedef /* [public][public] */ struct __MIDL___MIDL_itf_strmif_0373_0001 { HRESULT hrVPEStatus; BOOL bDvdVolInvalid; BOOL bDvdVolUnknown; BOOL bNoLine21In; BOOL bNoLine21Out; int iNumStreams; int iNumStreamsFailed; DWORD dwFailedStreamsFlag; } AM_DVD_RENDERSTATUS; extern RPC_IF_HANDLE __MIDL_itf_strmif_0373_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0373_v0_0_s_ifspec; #ifndef __IDvdGraphBuilder_INTERFACE_DEFINED__ #define __IDvdGraphBuilder_INTERFACE_DEFINED__ /* interface IDvdGraphBuilder */ /* [unique][uuid][local][object] */ EXTERN_C const IID IID_IDvdGraphBuilder; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("FCC152B6-F372-11d0-8E00-00C04FD7C08B") IDvdGraphBuilder : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE GetFiltergraph( /* [out] */ IGraphBuilder **ppGB) = 0; virtual HRESULT STDMETHODCALLTYPE GetDvdInterface( /* [in] */ REFIID riid, /* [out] */ void **ppvIF) = 0; virtual HRESULT STDMETHODCALLTYPE RenderDvdVideoVolume( /* [in] */ LPCWSTR lpcwszPathName, /* [in] */ DWORD dwFlags, /* [out] */ AM_DVD_RENDERSTATUS *pStatus) = 0; }; #else /* C style interface */ typedef struct IDvdGraphBuilderVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IDvdGraphBuilder * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IDvdGraphBuilder * This); ULONG ( STDMETHODCALLTYPE *Release )( IDvdGraphBuilder * This); HRESULT ( STDMETHODCALLTYPE *GetFiltergraph )( IDvdGraphBuilder * This, /* [out] */ IGraphBuilder **ppGB); HRESULT ( STDMETHODCALLTYPE *GetDvdInterface )( IDvdGraphBuilder * This, /* [in] */ REFIID riid, /* [out] */ void **ppvIF); HRESULT ( STDMETHODCALLTYPE *RenderDvdVideoVolume )( IDvdGraphBuilder * This, /* [in] */ LPCWSTR lpcwszPathName, /* [in] */ DWORD dwFlags, /* [out] */ AM_DVD_RENDERSTATUS *pStatus); END_INTERFACE } IDvdGraphBuilderVtbl; interface IDvdGraphBuilder { CONST_VTBL struct IDvdGraphBuilderVtbl *lpVtbl; }; #ifdef COBJMACROS #define IDvdGraphBuilder_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IDvdGraphBuilder_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IDvdGraphBuilder_Release(This) \ (This)->lpVtbl -> Release(This) #define IDvdGraphBuilder_GetFiltergraph(This,ppGB) \ (This)->lpVtbl -> GetFiltergraph(This,ppGB) #define IDvdGraphBuilder_GetDvdInterface(This,riid,ppvIF) \ (This)->lpVtbl -> GetDvdInterface(This,riid,ppvIF) #define IDvdGraphBuilder_RenderDvdVideoVolume(This,lpcwszPathName,dwFlags,pStatus) \ (This)->lpVtbl -> RenderDvdVideoVolume(This,lpcwszPathName,dwFlags,pStatus) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IDvdGraphBuilder_GetFiltergraph_Proxy( IDvdGraphBuilder * This, /* [out] */ IGraphBuilder **ppGB); void __RPC_STUB IDvdGraphBuilder_GetFiltergraph_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdGraphBuilder_GetDvdInterface_Proxy( IDvdGraphBuilder * This, /* [in] */ REFIID riid, /* [out] */ void **ppvIF); void __RPC_STUB IDvdGraphBuilder_GetDvdInterface_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDvdGraphBuilder_RenderDvdVideoVolume_Proxy( IDvdGraphBuilder * This, /* [in] */ LPCWSTR lpcwszPathName, /* [in] */ DWORD dwFlags, /* [out] */ AM_DVD_RENDERSTATUS *pStatus); void __RPC_STUB IDvdGraphBuilder_RenderDvdVideoVolume_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IDvdGraphBuilder_INTERFACE_DEFINED__ */ #ifndef __IDDrawExclModeVideo_INTERFACE_DEFINED__ #define __IDDrawExclModeVideo_INTERFACE_DEFINED__ /* interface IDDrawExclModeVideo */ /* [unique][uuid][local][object] */ EXTERN_C const IID IID_IDDrawExclModeVideo; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("153ACC21-D83B-11d1-82BF-00A0C9696C8F") IDDrawExclModeVideo : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE SetDDrawObject( /* [in] */ IDirectDraw *pDDrawObject) = 0; virtual HRESULT STDMETHODCALLTYPE GetDDrawObject( /* [out] */ IDirectDraw **ppDDrawObject, /* [out] */ BOOL *pbUsingExternal) = 0; virtual HRESULT STDMETHODCALLTYPE SetDDrawSurface( /* [in] */ IDirectDrawSurface *pDDrawSurface) = 0; virtual HRESULT STDMETHODCALLTYPE GetDDrawSurface( /* [out] */ IDirectDrawSurface **ppDDrawSurface, /* [out] */ BOOL *pbUsingExternal) = 0; virtual HRESULT STDMETHODCALLTYPE SetDrawParameters( /* [in] */ const RECT *prcSource, /* [in] */ const RECT *prcTarget) = 0; virtual HRESULT STDMETHODCALLTYPE GetNativeVideoProps( /* [out] */ DWORD *pdwVideoWidth, /* [out] */ DWORD *pdwVideoHeight, /* [out] */ DWORD *pdwPictAspectRatioX, /* [out] */ DWORD *pdwPictAspectRatioY) = 0; virtual HRESULT STDMETHODCALLTYPE SetCallbackInterface( /* [in] */ IDDrawExclModeVideoCallback *pCallback, /* [in] */ DWORD dwFlags) = 0; }; #else /* C style interface */ typedef struct IDDrawExclModeVideoVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IDDrawExclModeVideo * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IDDrawExclModeVideo * This); ULONG ( STDMETHODCALLTYPE *Release )( IDDrawExclModeVideo * This); HRESULT ( STDMETHODCALLTYPE *SetDDrawObject )( IDDrawExclModeVideo * This, /* [in] */ IDirectDraw *pDDrawObject); HRESULT ( STDMETHODCALLTYPE *GetDDrawObject )( IDDrawExclModeVideo * This, /* [out] */ IDirectDraw **ppDDrawObject, /* [out] */ BOOL *pbUsingExternal); HRESULT ( STDMETHODCALLTYPE *SetDDrawSurface )( IDDrawExclModeVideo * This, /* [in] */ IDirectDrawSurface *pDDrawSurface); HRESULT ( STDMETHODCALLTYPE *GetDDrawSurface )( IDDrawExclModeVideo * This, /* [out] */ IDirectDrawSurface **ppDDrawSurface, /* [out] */ BOOL *pbUsingExternal); HRESULT ( STDMETHODCALLTYPE *SetDrawParameters )( IDDrawExclModeVideo * This, /* [in] */ const RECT *prcSource, /* [in] */ const RECT *prcTarget); HRESULT ( STDMETHODCALLTYPE *GetNativeVideoProps )( IDDrawExclModeVideo * This, /* [out] */ DWORD *pdwVideoWidth, /* [out] */ DWORD *pdwVideoHeight, /* [out] */ DWORD *pdwPictAspectRatioX, /* [out] */ DWORD *pdwPictAspectRatioY); HRESULT ( STDMETHODCALLTYPE *SetCallbackInterface )( IDDrawExclModeVideo * This, /* [in] */ IDDrawExclModeVideoCallback *pCallback, /* [in] */ DWORD dwFlags); END_INTERFACE } IDDrawExclModeVideoVtbl; interface IDDrawExclModeVideo { CONST_VTBL struct IDDrawExclModeVideoVtbl *lpVtbl; }; #ifdef COBJMACROS #define IDDrawExclModeVideo_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IDDrawExclModeVideo_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IDDrawExclModeVideo_Release(This) \ (This)->lpVtbl -> Release(This) #define IDDrawExclModeVideo_SetDDrawObject(This,pDDrawObject) \ (This)->lpVtbl -> SetDDrawObject(This,pDDrawObject) #define IDDrawExclModeVideo_GetDDrawObject(This,ppDDrawObject,pbUsingExternal) \ (This)->lpVtbl -> GetDDrawObject(This,ppDDrawObject,pbUsingExternal) #define IDDrawExclModeVideo_SetDDrawSurface(This,pDDrawSurface) \ (This)->lpVtbl -> SetDDrawSurface(This,pDDrawSurface) #define IDDrawExclModeVideo_GetDDrawSurface(This,ppDDrawSurface,pbUsingExternal) \ (This)->lpVtbl -> GetDDrawSurface(This,ppDDrawSurface,pbUsingExternal) #define IDDrawExclModeVideo_SetDrawParameters(This,prcSource,prcTarget) \ (This)->lpVtbl -> SetDrawParameters(This,prcSource,prcTarget) #define IDDrawExclModeVideo_GetNativeVideoProps(This,pdwVideoWidth,pdwVideoHeight,pdwPictAspectRatioX,pdwPictAspectRatioY) \ (This)->lpVtbl -> GetNativeVideoProps(This,pdwVideoWidth,pdwVideoHeight,pdwPictAspectRatioX,pdwPictAspectRatioY) #define IDDrawExclModeVideo_SetCallbackInterface(This,pCallback,dwFlags) \ (This)->lpVtbl -> SetCallbackInterface(This,pCallback,dwFlags) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IDDrawExclModeVideo_SetDDrawObject_Proxy( IDDrawExclModeVideo * This, /* [in] */ IDirectDraw *pDDrawObject); void __RPC_STUB IDDrawExclModeVideo_SetDDrawObject_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDDrawExclModeVideo_GetDDrawObject_Proxy( IDDrawExclModeVideo * This, /* [out] */ IDirectDraw **ppDDrawObject, /* [out] */ BOOL *pbUsingExternal); void __RPC_STUB IDDrawExclModeVideo_GetDDrawObject_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDDrawExclModeVideo_SetDDrawSurface_Proxy( IDDrawExclModeVideo * This, /* [in] */ IDirectDrawSurface *pDDrawSurface); void __RPC_STUB IDDrawExclModeVideo_SetDDrawSurface_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDDrawExclModeVideo_GetDDrawSurface_Proxy( IDDrawExclModeVideo * This, /* [out] */ IDirectDrawSurface **ppDDrawSurface, /* [out] */ BOOL *pbUsingExternal); void __RPC_STUB IDDrawExclModeVideo_GetDDrawSurface_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDDrawExclModeVideo_SetDrawParameters_Proxy( IDDrawExclModeVideo * This, /* [in] */ const RECT *prcSource, /* [in] */ const RECT *prcTarget); void __RPC_STUB IDDrawExclModeVideo_SetDrawParameters_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDDrawExclModeVideo_GetNativeVideoProps_Proxy( IDDrawExclModeVideo * This, /* [out] */ DWORD *pdwVideoWidth, /* [out] */ DWORD *pdwVideoHeight, /* [out] */ DWORD *pdwPictAspectRatioX, /* [out] */ DWORD *pdwPictAspectRatioY); void __RPC_STUB IDDrawExclModeVideo_GetNativeVideoProps_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDDrawExclModeVideo_SetCallbackInterface_Proxy( IDDrawExclModeVideo * This, /* [in] */ IDDrawExclModeVideoCallback *pCallback, /* [in] */ DWORD dwFlags); void __RPC_STUB IDDrawExclModeVideo_SetCallbackInterface_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IDDrawExclModeVideo_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0375 */ /* [local] */ enum _AM_OVERLAY_NOTIFY_FLAGS { AM_OVERLAY_NOTIFY_VISIBLE_CHANGE = 0x1, AM_OVERLAY_NOTIFY_SOURCE_CHANGE = 0x2, AM_OVERLAY_NOTIFY_DEST_CHANGE = 0x4 } ; extern RPC_IF_HANDLE __MIDL_itf_strmif_0375_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0375_v0_0_s_ifspec; #ifndef __IDDrawExclModeVideoCallback_INTERFACE_DEFINED__ #define __IDDrawExclModeVideoCallback_INTERFACE_DEFINED__ /* interface IDDrawExclModeVideoCallback */ /* [unique][uuid][local][object] */ EXTERN_C const IID IID_IDDrawExclModeVideoCallback; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("913c24a0-20ab-11d2-9038-00a0c9697298") IDDrawExclModeVideoCallback : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE OnUpdateOverlay( /* [in] */ BOOL bBefore, /* [in] */ DWORD dwFlags, /* [in] */ BOOL bOldVisible, /* [in] */ const RECT *prcOldSrc, /* [in] */ const RECT *prcOldDest, /* [in] */ BOOL bNewVisible, /* [in] */ const RECT *prcNewSrc, /* [in] */ const RECT *prcNewDest) = 0; virtual HRESULT STDMETHODCALLTYPE OnUpdateColorKey( /* [in] */ const COLORKEY *pKey, /* [in] */ DWORD dwColor) = 0; virtual HRESULT STDMETHODCALLTYPE OnUpdateSize( /* [in] */ DWORD dwWidth, /* [in] */ DWORD dwHeight, /* [in] */ DWORD dwARWidth, /* [in] */ DWORD dwARHeight) = 0; }; #else /* C style interface */ typedef struct IDDrawExclModeVideoCallbackVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IDDrawExclModeVideoCallback * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IDDrawExclModeVideoCallback * This); ULONG ( STDMETHODCALLTYPE *Release )( IDDrawExclModeVideoCallback * This); HRESULT ( STDMETHODCALLTYPE *OnUpdateOverlay )( IDDrawExclModeVideoCallback * This, /* [in] */ BOOL bBefore, /* [in] */ DWORD dwFlags, /* [in] */ BOOL bOldVisible, /* [in] */ const RECT *prcOldSrc, /* [in] */ const RECT *prcOldDest, /* [in] */ BOOL bNewVisible, /* [in] */ const RECT *prcNewSrc, /* [in] */ const RECT *prcNewDest); HRESULT ( STDMETHODCALLTYPE *OnUpdateColorKey )( IDDrawExclModeVideoCallback * This, /* [in] */ const COLORKEY *pKey, /* [in] */ DWORD dwColor); HRESULT ( STDMETHODCALLTYPE *OnUpdateSize )( IDDrawExclModeVideoCallback * This, /* [in] */ DWORD dwWidth, /* [in] */ DWORD dwHeight, /* [in] */ DWORD dwARWidth, /* [in] */ DWORD dwARHeight); END_INTERFACE } IDDrawExclModeVideoCallbackVtbl; interface IDDrawExclModeVideoCallback { CONST_VTBL struct IDDrawExclModeVideoCallbackVtbl *lpVtbl; }; #ifdef COBJMACROS #define IDDrawExclModeVideoCallback_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IDDrawExclModeVideoCallback_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IDDrawExclModeVideoCallback_Release(This) \ (This)->lpVtbl -> Release(This) #define IDDrawExclModeVideoCallback_OnUpdateOverlay(This,bBefore,dwFlags,bOldVisible,prcOldSrc,prcOldDest,bNewVisible,prcNewSrc,prcNewDest) \ (This)->lpVtbl -> OnUpdateOverlay(This,bBefore,dwFlags,bOldVisible,prcOldSrc,prcOldDest,bNewVisible,prcNewSrc,prcNewDest) #define IDDrawExclModeVideoCallback_OnUpdateColorKey(This,pKey,dwColor) \ (This)->lpVtbl -> OnUpdateColorKey(This,pKey,dwColor) #define IDDrawExclModeVideoCallback_OnUpdateSize(This,dwWidth,dwHeight,dwARWidth,dwARHeight) \ (This)->lpVtbl -> OnUpdateSize(This,dwWidth,dwHeight,dwARWidth,dwARHeight) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IDDrawExclModeVideoCallback_OnUpdateOverlay_Proxy( IDDrawExclModeVideoCallback * This, /* [in] */ BOOL bBefore, /* [in] */ DWORD dwFlags, /* [in] */ BOOL bOldVisible, /* [in] */ const RECT *prcOldSrc, /* [in] */ const RECT *prcOldDest, /* [in] */ BOOL bNewVisible, /* [in] */ const RECT *prcNewSrc, /* [in] */ const RECT *prcNewDest); void __RPC_STUB IDDrawExclModeVideoCallback_OnUpdateOverlay_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDDrawExclModeVideoCallback_OnUpdateColorKey_Proxy( IDDrawExclModeVideoCallback * This, /* [in] */ const COLORKEY *pKey, /* [in] */ DWORD dwColor); void __RPC_STUB IDDrawExclModeVideoCallback_OnUpdateColorKey_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IDDrawExclModeVideoCallback_OnUpdateSize_Proxy( IDDrawExclModeVideoCallback * This, /* [in] */ DWORD dwWidth, /* [in] */ DWORD dwHeight, /* [in] */ DWORD dwARWidth, /* [in] */ DWORD dwARHeight); void __RPC_STUB IDDrawExclModeVideoCallback_OnUpdateSize_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IDDrawExclModeVideoCallback_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0376 */ /* [local] */ extern RPC_IF_HANDLE __MIDL_itf_strmif_0376_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0376_v0_0_s_ifspec; #ifndef __IPinConnection_INTERFACE_DEFINED__ #define __IPinConnection_INTERFACE_DEFINED__ /* interface IPinConnection */ /* [unique][uuid][object][local] */ EXTERN_C const IID IID_IPinConnection; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("4a9a62d3-27d4-403d-91e9-89f540e55534") IPinConnection : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE DynamicQueryAccept( /* [in] */ const AM_MEDIA_TYPE *pmt) = 0; virtual HRESULT STDMETHODCALLTYPE NotifyEndOfStream( /* [in] */ HANDLE hNotifyEvent) = 0; virtual HRESULT STDMETHODCALLTYPE IsEndPin( void) = 0; virtual HRESULT STDMETHODCALLTYPE DynamicDisconnect( void) = 0; }; #else /* C style interface */ typedef struct IPinConnectionVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IPinConnection * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IPinConnection * This); ULONG ( STDMETHODCALLTYPE *Release )( IPinConnection * This); HRESULT ( STDMETHODCALLTYPE *DynamicQueryAccept )( IPinConnection * This, /* [in] */ const AM_MEDIA_TYPE *pmt); HRESULT ( STDMETHODCALLTYPE *NotifyEndOfStream )( IPinConnection * This, /* [in] */ HANDLE hNotifyEvent); HRESULT ( STDMETHODCALLTYPE *IsEndPin )( IPinConnection * This); HRESULT ( STDMETHODCALLTYPE *DynamicDisconnect )( IPinConnection * This); END_INTERFACE } IPinConnectionVtbl; interface IPinConnection { CONST_VTBL struct IPinConnectionVtbl *lpVtbl; }; #ifdef COBJMACROS #define IPinConnection_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IPinConnection_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IPinConnection_Release(This) \ (This)->lpVtbl -> Release(This) #define IPinConnection_DynamicQueryAccept(This,pmt) \ (This)->lpVtbl -> DynamicQueryAccept(This,pmt) #define IPinConnection_NotifyEndOfStream(This,hNotifyEvent) \ (This)->lpVtbl -> NotifyEndOfStream(This,hNotifyEvent) #define IPinConnection_IsEndPin(This) \ (This)->lpVtbl -> IsEndPin(This) #define IPinConnection_DynamicDisconnect(This) \ (This)->lpVtbl -> DynamicDisconnect(This) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IPinConnection_DynamicQueryAccept_Proxy( IPinConnection * This, /* [in] */ const AM_MEDIA_TYPE *pmt); void __RPC_STUB IPinConnection_DynamicQueryAccept_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IPinConnection_NotifyEndOfStream_Proxy( IPinConnection * This, /* [in] */ HANDLE hNotifyEvent); void __RPC_STUB IPinConnection_NotifyEndOfStream_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IPinConnection_IsEndPin_Proxy( IPinConnection * This); void __RPC_STUB IPinConnection_IsEndPin_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IPinConnection_DynamicDisconnect_Proxy( IPinConnection * This); void __RPC_STUB IPinConnection_DynamicDisconnect_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IPinConnection_INTERFACE_DEFINED__ */ #ifndef __IPinFlowControl_INTERFACE_DEFINED__ #define __IPinFlowControl_INTERFACE_DEFINED__ /* interface IPinFlowControl */ /* [unique][uuid][object][local] */ EXTERN_C const IID IID_IPinFlowControl; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("c56e9858-dbf3-4f6b-8119-384af2060deb") IPinFlowControl : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE Block( /* [in] */ DWORD dwBlockFlags, /* [in] */ HANDLE hEvent) = 0; }; #else /* C style interface */ typedef struct IPinFlowControlVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IPinFlowControl * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IPinFlowControl * This); ULONG ( STDMETHODCALLTYPE *Release )( IPinFlowControl * This); HRESULT ( STDMETHODCALLTYPE *Block )( IPinFlowControl * This, /* [in] */ DWORD dwBlockFlags, /* [in] */ HANDLE hEvent); END_INTERFACE } IPinFlowControlVtbl; interface IPinFlowControl { CONST_VTBL struct IPinFlowControlVtbl *lpVtbl; }; #ifdef COBJMACROS #define IPinFlowControl_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IPinFlowControl_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IPinFlowControl_Release(This) \ (This)->lpVtbl -> Release(This) #define IPinFlowControl_Block(This,dwBlockFlags,hEvent) \ (This)->lpVtbl -> Block(This,dwBlockFlags,hEvent) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IPinFlowControl_Block_Proxy( IPinFlowControl * This, /* [in] */ DWORD dwBlockFlags, /* [in] */ HANDLE hEvent); void __RPC_STUB IPinFlowControl_Block_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IPinFlowControl_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0378 */ /* [local] */ enum _AM_PIN_FLOW_CONTROL_BLOCK_FLAGS { AM_PIN_FLOW_CONTROL_BLOCK = 0x1 } ; typedef enum _AM_GRAPH_CONFIG_RECONNECT_FLAGS { AM_GRAPH_CONFIG_RECONNECT_DIRECTCONNECT = 0x1, AM_GRAPH_CONFIG_RECONNECT_CACHE_REMOVED_FILTERS = 0x2, AM_GRAPH_CONFIG_RECONNECT_USE_ONLY_CACHED_FILTERS = 0x4 } AM_GRAPH_CONFIG_RECONNECT_FLAGS; enum _REM_FILTER_FLAGS { REMFILTERF_LEAVECONNECTED = 0x1 } ; typedef enum _AM_FILTER_FLAGS { AM_FILTER_FLAGS_REMOVABLE = 0x1 } AM_FILTER_FLAGS; extern RPC_IF_HANDLE __MIDL_itf_strmif_0378_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0378_v0_0_s_ifspec; #ifndef __IGraphConfig_INTERFACE_DEFINED__ #define __IGraphConfig_INTERFACE_DEFINED__ /* interface IGraphConfig */ /* [unique][uuid][object][local] */ EXTERN_C const IID IID_IGraphConfig; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("03A1EB8E-32BF-4245-8502-114D08A9CB88") IGraphConfig : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE Reconnect( /* [in] */ IPin *pOutputPin, /* [in] */ IPin *pInputPin, /* [in] */ const AM_MEDIA_TYPE *pmtFirstConnection, /* [in] */ IBaseFilter *pUsingFilter, /* [in] */ HANDLE hAbortEvent, /* [in] */ DWORD dwFlags) = 0; virtual HRESULT STDMETHODCALLTYPE Reconfigure( /* [in] */ IGraphConfigCallback *pCallback, /* [in] */ PVOID pvContext, /* [in] */ DWORD dwFlags, /* [in] */ HANDLE hAbortEvent) = 0; virtual HRESULT STDMETHODCALLTYPE AddFilterToCache( /* [in] */ IBaseFilter *pFilter) = 0; virtual HRESULT STDMETHODCALLTYPE EnumCacheFilter( /* [out] */ IEnumFilters **pEnum) = 0; virtual HRESULT STDMETHODCALLTYPE RemoveFilterFromCache( /* [in] */ IBaseFilter *pFilter) = 0; virtual HRESULT STDMETHODCALLTYPE GetStartTime( /* [out] */ REFERENCE_TIME *prtStart) = 0; virtual HRESULT STDMETHODCALLTYPE PushThroughData( /* [in] */ IPin *pOutputPin, /* [in] */ IPinConnection *pConnection, /* [in] */ HANDLE hEventAbort) = 0; virtual HRESULT STDMETHODCALLTYPE SetFilterFlags( /* [in] */ IBaseFilter *pFilter, /* [in] */ DWORD dwFlags) = 0; virtual HRESULT STDMETHODCALLTYPE GetFilterFlags( /* [in] */ IBaseFilter *pFilter, /* [out] */ DWORD *pdwFlags) = 0; virtual HRESULT STDMETHODCALLTYPE RemoveFilterEx( /* [in] */ IBaseFilter *pFilter, DWORD Flags) = 0; }; #else /* C style interface */ typedef struct IGraphConfigVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IGraphConfig * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IGraphConfig * This); ULONG ( STDMETHODCALLTYPE *Release )( IGraphConfig * This); HRESULT ( STDMETHODCALLTYPE *Reconnect )( IGraphConfig * This, /* [in] */ IPin *pOutputPin, /* [in] */ IPin *pInputPin, /* [in] */ const AM_MEDIA_TYPE *pmtFirstConnection, /* [in] */ IBaseFilter *pUsingFilter, /* [in] */ HANDLE hAbortEvent, /* [in] */ DWORD dwFlags); HRESULT ( STDMETHODCALLTYPE *Reconfigure )( IGraphConfig * This, /* [in] */ IGraphConfigCallback *pCallback, /* [in] */ PVOID pvContext, /* [in] */ DWORD dwFlags, /* [in] */ HANDLE hAbortEvent); HRESULT ( STDMETHODCALLTYPE *AddFilterToCache )( IGraphConfig * This, /* [in] */ IBaseFilter *pFilter); HRESULT ( STDMETHODCALLTYPE *EnumCacheFilter )( IGraphConfig * This, /* [out] */ IEnumFilters **pEnum); HRESULT ( STDMETHODCALLTYPE *RemoveFilterFromCache )( IGraphConfig * This, /* [in] */ IBaseFilter *pFilter); HRESULT ( STDMETHODCALLTYPE *GetStartTime )( IGraphConfig * This, /* [out] */ REFERENCE_TIME *prtStart); HRESULT ( STDMETHODCALLTYPE *PushThroughData )( IGraphConfig * This, /* [in] */ IPin *pOutputPin, /* [in] */ IPinConnection *pConnection, /* [in] */ HANDLE hEventAbort); HRESULT ( STDMETHODCALLTYPE *SetFilterFlags )( IGraphConfig * This, /* [in] */ IBaseFilter *pFilter, /* [in] */ DWORD dwFlags); HRESULT ( STDMETHODCALLTYPE *GetFilterFlags )( IGraphConfig * This, /* [in] */ IBaseFilter *pFilter, /* [out] */ DWORD *pdwFlags); HRESULT ( STDMETHODCALLTYPE *RemoveFilterEx )( IGraphConfig * This, /* [in] */ IBaseFilter *pFilter, DWORD Flags); END_INTERFACE } IGraphConfigVtbl; interface IGraphConfig { CONST_VTBL struct IGraphConfigVtbl *lpVtbl; }; #ifdef COBJMACROS #define IGraphConfig_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IGraphConfig_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IGraphConfig_Release(This) \ (This)->lpVtbl -> Release(This) #define IGraphConfig_Reconnect(This,pOutputPin,pInputPin,pmtFirstConnection,pUsingFilter,hAbortEvent,dwFlags) \ (This)->lpVtbl -> Reconnect(This,pOutputPin,pInputPin,pmtFirstConnection,pUsingFilter,hAbortEvent,dwFlags) #define IGraphConfig_Reconfigure(This,pCallback,pvContext,dwFlags,hAbortEvent) \ (This)->lpVtbl -> Reconfigure(This,pCallback,pvContext,dwFlags,hAbortEvent) #define IGraphConfig_AddFilterToCache(This,pFilter) \ (This)->lpVtbl -> AddFilterToCache(This,pFilter) #define IGraphConfig_EnumCacheFilter(This,pEnum) \ (This)->lpVtbl -> EnumCacheFilter(This,pEnum) #define IGraphConfig_RemoveFilterFromCache(This,pFilter) \ (This)->lpVtbl -> RemoveFilterFromCache(This,pFilter) #define IGraphConfig_GetStartTime(This,prtStart) \ (This)->lpVtbl -> GetStartTime(This,prtStart) #define IGraphConfig_PushThroughData(This,pOutputPin,pConnection,hEventAbort) \ (This)->lpVtbl -> PushThroughData(This,pOutputPin,pConnection,hEventAbort) #define IGraphConfig_SetFilterFlags(This,pFilter,dwFlags) \ (This)->lpVtbl -> SetFilterFlags(This,pFilter,dwFlags) #define IGraphConfig_GetFilterFlags(This,pFilter,pdwFlags) \ (This)->lpVtbl -> GetFilterFlags(This,pFilter,pdwFlags) #define IGraphConfig_RemoveFilterEx(This,pFilter,Flags) \ (This)->lpVtbl -> RemoveFilterEx(This,pFilter,Flags) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IGraphConfig_Reconnect_Proxy( IGraphConfig * This, /* [in] */ IPin *pOutputPin, /* [in] */ IPin *pInputPin, /* [in] */ const AM_MEDIA_TYPE *pmtFirstConnection, /* [in] */ IBaseFilter *pUsingFilter, /* [in] */ HANDLE hAbortEvent, /* [in] */ DWORD dwFlags); void __RPC_STUB IGraphConfig_Reconnect_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IGraphConfig_Reconfigure_Proxy( IGraphConfig * This, /* [in] */ IGraphConfigCallback *pCallback, /* [in] */ PVOID pvContext, /* [in] */ DWORD dwFlags, /* [in] */ HANDLE hAbortEvent); void __RPC_STUB IGraphConfig_Reconfigure_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IGraphConfig_AddFilterToCache_Proxy( IGraphConfig * This, /* [in] */ IBaseFilter *pFilter); void __RPC_STUB IGraphConfig_AddFilterToCache_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IGraphConfig_EnumCacheFilter_Proxy( IGraphConfig * This, /* [out] */ IEnumFilters **pEnum); void __RPC_STUB IGraphConfig_EnumCacheFilter_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IGraphConfig_RemoveFilterFromCache_Proxy( IGraphConfig * This, /* [in] */ IBaseFilter *pFilter); void __RPC_STUB IGraphConfig_RemoveFilterFromCache_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IGraphConfig_GetStartTime_Proxy( IGraphConfig * This, /* [out] */ REFERENCE_TIME *prtStart); void __RPC_STUB IGraphConfig_GetStartTime_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IGraphConfig_PushThroughData_Proxy( IGraphConfig * This, /* [in] */ IPin *pOutputPin, /* [in] */ IPinConnection *pConnection, /* [in] */ HANDLE hEventAbort); void __RPC_STUB IGraphConfig_PushThroughData_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IGraphConfig_SetFilterFlags_Proxy( IGraphConfig * This, /* [in] */ IBaseFilter *pFilter, /* [in] */ DWORD dwFlags); void __RPC_STUB IGraphConfig_SetFilterFlags_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IGraphConfig_GetFilterFlags_Proxy( IGraphConfig * This, /* [in] */ IBaseFilter *pFilter, /* [out] */ DWORD *pdwFlags); void __RPC_STUB IGraphConfig_GetFilterFlags_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IGraphConfig_RemoveFilterEx_Proxy( IGraphConfig * This, /* [in] */ IBaseFilter *pFilter, DWORD Flags); void __RPC_STUB IGraphConfig_RemoveFilterEx_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IGraphConfig_INTERFACE_DEFINED__ */ #ifndef __IGraphConfigCallback_INTERFACE_DEFINED__ #define __IGraphConfigCallback_INTERFACE_DEFINED__ /* interface IGraphConfigCallback */ /* [unique][uuid][object][local] */ EXTERN_C const IID IID_IGraphConfigCallback; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("ade0fd60-d19d-11d2-abf6-00a0c905f375") IGraphConfigCallback : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE Reconfigure( PVOID pvContext, DWORD dwFlags) = 0; }; #else /* C style interface */ typedef struct IGraphConfigCallbackVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IGraphConfigCallback * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IGraphConfigCallback * This); ULONG ( STDMETHODCALLTYPE *Release )( IGraphConfigCallback * This); HRESULT ( STDMETHODCALLTYPE *Reconfigure )( IGraphConfigCallback * This, PVOID pvContext, DWORD dwFlags); END_INTERFACE } IGraphConfigCallbackVtbl; interface IGraphConfigCallback { CONST_VTBL struct IGraphConfigCallbackVtbl *lpVtbl; }; #ifdef COBJMACROS #define IGraphConfigCallback_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IGraphConfigCallback_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IGraphConfigCallback_Release(This) \ (This)->lpVtbl -> Release(This) #define IGraphConfigCallback_Reconfigure(This,pvContext,dwFlags) \ (This)->lpVtbl -> Reconfigure(This,pvContext,dwFlags) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IGraphConfigCallback_Reconfigure_Proxy( IGraphConfigCallback * This, PVOID pvContext, DWORD dwFlags); void __RPC_STUB IGraphConfigCallback_Reconfigure_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IGraphConfigCallback_INTERFACE_DEFINED__ */ #ifndef __IFilterChain_INTERFACE_DEFINED__ #define __IFilterChain_INTERFACE_DEFINED__ /* interface IFilterChain */ /* [unique][uuid][object][local] */ EXTERN_C const IID IID_IFilterChain; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("DCFBDCF6-0DC2-45f5-9AB2-7C330EA09C29") IFilterChain : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE StartChain( /* [in] */ IBaseFilter *pStartFilter, /* [in] */ IBaseFilter *pEndFilter) = 0; virtual HRESULT STDMETHODCALLTYPE PauseChain( /* [in] */ IBaseFilter *pStartFilter, /* [in] */ IBaseFilter *pEndFilter) = 0; virtual HRESULT STDMETHODCALLTYPE StopChain( /* [in] */ IBaseFilter *pStartFilter, /* [in] */ IBaseFilter *pEndFilter) = 0; virtual HRESULT STDMETHODCALLTYPE RemoveChain( /* [in] */ IBaseFilter *pStartFilter, /* [in] */ IBaseFilter *pEndFilter) = 0; }; #else /* C style interface */ typedef struct IFilterChainVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IFilterChain * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IFilterChain * This); ULONG ( STDMETHODCALLTYPE *Release )( IFilterChain * This); HRESULT ( STDMETHODCALLTYPE *StartChain )( IFilterChain * This, /* [in] */ IBaseFilter *pStartFilter, /* [in] */ IBaseFilter *pEndFilter); HRESULT ( STDMETHODCALLTYPE *PauseChain )( IFilterChain * This, /* [in] */ IBaseFilter *pStartFilter, /* [in] */ IBaseFilter *pEndFilter); HRESULT ( STDMETHODCALLTYPE *StopChain )( IFilterChain * This, /* [in] */ IBaseFilter *pStartFilter, /* [in] */ IBaseFilter *pEndFilter); HRESULT ( STDMETHODCALLTYPE *RemoveChain )( IFilterChain * This, /* [in] */ IBaseFilter *pStartFilter, /* [in] */ IBaseFilter *pEndFilter); END_INTERFACE } IFilterChainVtbl; interface IFilterChain { CONST_VTBL struct IFilterChainVtbl *lpVtbl; }; #ifdef COBJMACROS #define IFilterChain_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IFilterChain_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IFilterChain_Release(This) \ (This)->lpVtbl -> Release(This) #define IFilterChain_StartChain(This,pStartFilter,pEndFilter) \ (This)->lpVtbl -> StartChain(This,pStartFilter,pEndFilter) #define IFilterChain_PauseChain(This,pStartFilter,pEndFilter) \ (This)->lpVtbl -> PauseChain(This,pStartFilter,pEndFilter) #define IFilterChain_StopChain(This,pStartFilter,pEndFilter) \ (This)->lpVtbl -> StopChain(This,pStartFilter,pEndFilter) #define IFilterChain_RemoveChain(This,pStartFilter,pEndFilter) \ (This)->lpVtbl -> RemoveChain(This,pStartFilter,pEndFilter) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IFilterChain_StartChain_Proxy( IFilterChain * This, /* [in] */ IBaseFilter *pStartFilter, /* [in] */ IBaseFilter *pEndFilter); void __RPC_STUB IFilterChain_StartChain_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IFilterChain_PauseChain_Proxy( IFilterChain * This, /* [in] */ IBaseFilter *pStartFilter, /* [in] */ IBaseFilter *pEndFilter); void __RPC_STUB IFilterChain_PauseChain_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IFilterChain_StopChain_Proxy( IFilterChain * This, /* [in] */ IBaseFilter *pStartFilter, /* [in] */ IBaseFilter *pEndFilter); void __RPC_STUB IFilterChain_StopChain_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IFilterChain_RemoveChain_Proxy( IFilterChain * This, /* [in] */ IBaseFilter *pStartFilter, /* [in] */ IBaseFilter *pEndFilter); void __RPC_STUB IFilterChain_RemoveChain_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IFilterChain_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0381 */ /* [local] */ // Restore the previous setting for C4201 compiler warning #pragma warning(default:4201) #if 0 typedef DWORD *LPDIRECTDRAW7; typedef DWORD *LPDIRECTDRAWSURFACE7; typedef DWORD *LPDDPIXELFORMAT; typedef DWORD *LPBITMAPINFOHEADER; typedef /* [public][public][public][public][public][public] */ struct __MIDL___MIDL_itf_strmif_0381_0001 { DWORD dw1; DWORD dw2; } DDCOLORKEY; typedef DDCOLORKEY *LPDDCOLORKEY; #endif #include typedef /* [public] */ enum __MIDL___MIDL_itf_strmif_0381_0002 { VMRSample_SyncPoint = 0x1, VMRSample_Preroll = 0x2, VMRSample_Discontinuity = 0x4, VMRSample_TimeValid = 0x8 } VMRPresentationFlags; typedef struct tagVMRPRESENTATIONINFO { DWORD dwFlags; LPDIRECTDRAWSURFACE7 lpSurf; REFERENCE_TIME rtStart; REFERENCE_TIME rtEnd; SIZE szAspectRatio; RECT rcSrc; RECT rcDst; DWORD dwTypeSpecificFlags; DWORD dwInterlaceFlags; } VMRPRESENTATIONINFO; extern RPC_IF_HANDLE __MIDL_itf_strmif_0381_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0381_v0_0_s_ifspec; #ifndef __IVMRImagePresenter_INTERFACE_DEFINED__ #define __IVMRImagePresenter_INTERFACE_DEFINED__ /* interface IVMRImagePresenter */ /* [unique][helpstring][uuid][local][object][local] */ EXTERN_C const IID IID_IVMRImagePresenter; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("CE704FE7-E71E-41fb-BAA2-C4403E1182F5") IVMRImagePresenter : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE StartPresenting( /* [in] */ DWORD_PTR dwUserID) = 0; virtual HRESULT STDMETHODCALLTYPE StopPresenting( /* [in] */ DWORD_PTR dwUserID) = 0; virtual HRESULT STDMETHODCALLTYPE PresentImage( /* [in] */ DWORD_PTR dwUserID, /* [in] */ VMRPRESENTATIONINFO *lpPresInfo) = 0; }; #else /* C style interface */ typedef struct IVMRImagePresenterVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IVMRImagePresenter * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IVMRImagePresenter * This); ULONG ( STDMETHODCALLTYPE *Release )( IVMRImagePresenter * This); HRESULT ( STDMETHODCALLTYPE *StartPresenting )( IVMRImagePresenter * This, /* [in] */ DWORD_PTR dwUserID); HRESULT ( STDMETHODCALLTYPE *StopPresenting )( IVMRImagePresenter * This, /* [in] */ DWORD_PTR dwUserID); HRESULT ( STDMETHODCALLTYPE *PresentImage )( IVMRImagePresenter * This, /* [in] */ DWORD_PTR dwUserID, /* [in] */ VMRPRESENTATIONINFO *lpPresInfo); END_INTERFACE } IVMRImagePresenterVtbl; interface IVMRImagePresenter { CONST_VTBL struct IVMRImagePresenterVtbl *lpVtbl; }; #ifdef COBJMACROS #define IVMRImagePresenter_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IVMRImagePresenter_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IVMRImagePresenter_Release(This) \ (This)->lpVtbl -> Release(This) #define IVMRImagePresenter_StartPresenting(This,dwUserID) \ (This)->lpVtbl -> StartPresenting(This,dwUserID) #define IVMRImagePresenter_StopPresenting(This,dwUserID) \ (This)->lpVtbl -> StopPresenting(This,dwUserID) #define IVMRImagePresenter_PresentImage(This,dwUserID,lpPresInfo) \ (This)->lpVtbl -> PresentImage(This,dwUserID,lpPresInfo) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IVMRImagePresenter_StartPresenting_Proxy( IVMRImagePresenter * This, /* [in] */ DWORD_PTR dwUserID); void __RPC_STUB IVMRImagePresenter_StartPresenting_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRImagePresenter_StopPresenting_Proxy( IVMRImagePresenter * This, /* [in] */ DWORD_PTR dwUserID); void __RPC_STUB IVMRImagePresenter_StopPresenting_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRImagePresenter_PresentImage_Proxy( IVMRImagePresenter * This, /* [in] */ DWORD_PTR dwUserID, /* [in] */ VMRPRESENTATIONINFO *lpPresInfo); void __RPC_STUB IVMRImagePresenter_PresentImage_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IVMRImagePresenter_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0382 */ /* [local] */ typedef /* [public] */ enum __MIDL___MIDL_itf_strmif_0382_0001 { AMAP_PIXELFORMAT_VALID = 0x1, AMAP_3D_TARGET = 0x2, AMAP_ALLOW_SYSMEM = 0x4, AMAP_FORCE_SYSMEM = 0x8, AMAP_DIRECTED_FLIP = 0x10, AMAP_DXVA_TARGET = 0x20 } VMRSurfaceAllocationFlags; typedef struct tagVMRALLOCATIONINFO { DWORD dwFlags; LPBITMAPINFOHEADER lpHdr; LPDDPIXELFORMAT lpPixFmt; SIZE szAspectRatio; DWORD dwMinBuffers; DWORD dwMaxBuffers; DWORD dwInterlaceFlags; SIZE szNativeSize; } VMRALLOCATIONINFO; extern RPC_IF_HANDLE __MIDL_itf_strmif_0382_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0382_v0_0_s_ifspec; #ifndef __IVMRSurfaceAllocator_INTERFACE_DEFINED__ #define __IVMRSurfaceAllocator_INTERFACE_DEFINED__ /* interface IVMRSurfaceAllocator */ /* [unique][helpstring][uuid][local][object][local] */ EXTERN_C const IID IID_IVMRSurfaceAllocator; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("31ce832e-4484-458b-8cca-f4d7e3db0b52") IVMRSurfaceAllocator : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE AllocateSurface( /* [in] */ DWORD_PTR dwUserID, /* [in] */ VMRALLOCATIONINFO *lpAllocInfo, /* [out][in] */ DWORD *lpdwActualBuffers, /* [out] */ LPDIRECTDRAWSURFACE7 *lplpSurface) = 0; virtual HRESULT STDMETHODCALLTYPE FreeSurface( /* [in] */ DWORD_PTR dwID) = 0; virtual HRESULT STDMETHODCALLTYPE PrepareSurface( /* [in] */ DWORD_PTR dwUserID, /* [in] */ LPDIRECTDRAWSURFACE7 lpSurface, /* [in] */ DWORD dwSurfaceFlags) = 0; virtual HRESULT STDMETHODCALLTYPE AdviseNotify( /* [in] */ IVMRSurfaceAllocatorNotify *lpIVMRSurfAllocNotify) = 0; }; #else /* C style interface */ typedef struct IVMRSurfaceAllocatorVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IVMRSurfaceAllocator * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IVMRSurfaceAllocator * This); ULONG ( STDMETHODCALLTYPE *Release )( IVMRSurfaceAllocator * This); HRESULT ( STDMETHODCALLTYPE *AllocateSurface )( IVMRSurfaceAllocator * This, /* [in] */ DWORD_PTR dwUserID, /* [in] */ VMRALLOCATIONINFO *lpAllocInfo, /* [out][in] */ DWORD *lpdwActualBuffers, /* [out] */ LPDIRECTDRAWSURFACE7 *lplpSurface); HRESULT ( STDMETHODCALLTYPE *FreeSurface )( IVMRSurfaceAllocator * This, /* [in] */ DWORD_PTR dwID); HRESULT ( STDMETHODCALLTYPE *PrepareSurface )( IVMRSurfaceAllocator * This, /* [in] */ DWORD_PTR dwUserID, /* [in] */ LPDIRECTDRAWSURFACE7 lpSurface, /* [in] */ DWORD dwSurfaceFlags); HRESULT ( STDMETHODCALLTYPE *AdviseNotify )( IVMRSurfaceAllocator * This, /* [in] */ IVMRSurfaceAllocatorNotify *lpIVMRSurfAllocNotify); END_INTERFACE } IVMRSurfaceAllocatorVtbl; interface IVMRSurfaceAllocator { CONST_VTBL struct IVMRSurfaceAllocatorVtbl *lpVtbl; }; #ifdef COBJMACROS #define IVMRSurfaceAllocator_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IVMRSurfaceAllocator_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IVMRSurfaceAllocator_Release(This) \ (This)->lpVtbl -> Release(This) #define IVMRSurfaceAllocator_AllocateSurface(This,dwUserID,lpAllocInfo,lpdwActualBuffers,lplpSurface) \ (This)->lpVtbl -> AllocateSurface(This,dwUserID,lpAllocInfo,lpdwActualBuffers,lplpSurface) #define IVMRSurfaceAllocator_FreeSurface(This,dwID) \ (This)->lpVtbl -> FreeSurface(This,dwID) #define IVMRSurfaceAllocator_PrepareSurface(This,dwUserID,lpSurface,dwSurfaceFlags) \ (This)->lpVtbl -> PrepareSurface(This,dwUserID,lpSurface,dwSurfaceFlags) #define IVMRSurfaceAllocator_AdviseNotify(This,lpIVMRSurfAllocNotify) \ (This)->lpVtbl -> AdviseNotify(This,lpIVMRSurfAllocNotify) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IVMRSurfaceAllocator_AllocateSurface_Proxy( IVMRSurfaceAllocator * This, /* [in] */ DWORD_PTR dwUserID, /* [in] */ VMRALLOCATIONINFO *lpAllocInfo, /* [out][in] */ DWORD *lpdwActualBuffers, /* [out] */ LPDIRECTDRAWSURFACE7 *lplpSurface); void __RPC_STUB IVMRSurfaceAllocator_AllocateSurface_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRSurfaceAllocator_FreeSurface_Proxy( IVMRSurfaceAllocator * This, /* [in] */ DWORD_PTR dwID); void __RPC_STUB IVMRSurfaceAllocator_FreeSurface_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRSurfaceAllocator_PrepareSurface_Proxy( IVMRSurfaceAllocator * This, /* [in] */ DWORD_PTR dwUserID, /* [in] */ LPDIRECTDRAWSURFACE7 lpSurface, /* [in] */ DWORD dwSurfaceFlags); void __RPC_STUB IVMRSurfaceAllocator_PrepareSurface_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRSurfaceAllocator_AdviseNotify_Proxy( IVMRSurfaceAllocator * This, /* [in] */ IVMRSurfaceAllocatorNotify *lpIVMRSurfAllocNotify); void __RPC_STUB IVMRSurfaceAllocator_AdviseNotify_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IVMRSurfaceAllocator_INTERFACE_DEFINED__ */ #ifndef __IVMRSurfaceAllocatorNotify_INTERFACE_DEFINED__ #define __IVMRSurfaceAllocatorNotify_INTERFACE_DEFINED__ /* interface IVMRSurfaceAllocatorNotify */ /* [unique][helpstring][uuid][local][object][local] */ EXTERN_C const IID IID_IVMRSurfaceAllocatorNotify; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("aada05a8-5a4e-4729-af0b-cea27aed51e2") IVMRSurfaceAllocatorNotify : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE AdviseSurfaceAllocator( /* [in] */ DWORD_PTR dwUserID, /* [in] */ IVMRSurfaceAllocator *lpIVRMSurfaceAllocator) = 0; virtual HRESULT STDMETHODCALLTYPE SetDDrawDevice( /* [in] */ LPDIRECTDRAW7 lpDDrawDevice, /* [in] */ HMONITOR hMonitor) = 0; virtual HRESULT STDMETHODCALLTYPE ChangeDDrawDevice( /* [in] */ LPDIRECTDRAW7 lpDDrawDevice, /* [in] */ HMONITOR hMonitor) = 0; virtual HRESULT STDMETHODCALLTYPE RestoreDDrawSurfaces( void) = 0; virtual HRESULT STDMETHODCALLTYPE NotifyEvent( /* [in] */ LONG EventCode, /* [in] */ LONG_PTR Param1, /* [in] */ LONG_PTR Param2) = 0; virtual HRESULT STDMETHODCALLTYPE SetBorderColor( /* [in] */ COLORREF clrBorder) = 0; }; #else /* C style interface */ typedef struct IVMRSurfaceAllocatorNotifyVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IVMRSurfaceAllocatorNotify * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IVMRSurfaceAllocatorNotify * This); ULONG ( STDMETHODCALLTYPE *Release )( IVMRSurfaceAllocatorNotify * This); HRESULT ( STDMETHODCALLTYPE *AdviseSurfaceAllocator )( IVMRSurfaceAllocatorNotify * This, /* [in] */ DWORD_PTR dwUserID, /* [in] */ IVMRSurfaceAllocator *lpIVRMSurfaceAllocator); HRESULT ( STDMETHODCALLTYPE *SetDDrawDevice )( IVMRSurfaceAllocatorNotify * This, /* [in] */ LPDIRECTDRAW7 lpDDrawDevice, /* [in] */ HMONITOR hMonitor); HRESULT ( STDMETHODCALLTYPE *ChangeDDrawDevice )( IVMRSurfaceAllocatorNotify * This, /* [in] */ LPDIRECTDRAW7 lpDDrawDevice, /* [in] */ HMONITOR hMonitor); HRESULT ( STDMETHODCALLTYPE *RestoreDDrawSurfaces )( IVMRSurfaceAllocatorNotify * This); HRESULT ( STDMETHODCALLTYPE *NotifyEvent )( IVMRSurfaceAllocatorNotify * This, /* [in] */ LONG EventCode, /* [in] */ LONG_PTR Param1, /* [in] */ LONG_PTR Param2); HRESULT ( STDMETHODCALLTYPE *SetBorderColor )( IVMRSurfaceAllocatorNotify * This, /* [in] */ COLORREF clrBorder); END_INTERFACE } IVMRSurfaceAllocatorNotifyVtbl; interface IVMRSurfaceAllocatorNotify { CONST_VTBL struct IVMRSurfaceAllocatorNotifyVtbl *lpVtbl; }; #ifdef COBJMACROS #define IVMRSurfaceAllocatorNotify_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IVMRSurfaceAllocatorNotify_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IVMRSurfaceAllocatorNotify_Release(This) \ (This)->lpVtbl -> Release(This) #define IVMRSurfaceAllocatorNotify_AdviseSurfaceAllocator(This,dwUserID,lpIVRMSurfaceAllocator) \ (This)->lpVtbl -> AdviseSurfaceAllocator(This,dwUserID,lpIVRMSurfaceAllocator) #define IVMRSurfaceAllocatorNotify_SetDDrawDevice(This,lpDDrawDevice,hMonitor) \ (This)->lpVtbl -> SetDDrawDevice(This,lpDDrawDevice,hMonitor) #define IVMRSurfaceAllocatorNotify_ChangeDDrawDevice(This,lpDDrawDevice,hMonitor) \ (This)->lpVtbl -> ChangeDDrawDevice(This,lpDDrawDevice,hMonitor) #define IVMRSurfaceAllocatorNotify_RestoreDDrawSurfaces(This) \ (This)->lpVtbl -> RestoreDDrawSurfaces(This) #define IVMRSurfaceAllocatorNotify_NotifyEvent(This,EventCode,Param1,Param2) \ (This)->lpVtbl -> NotifyEvent(This,EventCode,Param1,Param2) #define IVMRSurfaceAllocatorNotify_SetBorderColor(This,clrBorder) \ (This)->lpVtbl -> SetBorderColor(This,clrBorder) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IVMRSurfaceAllocatorNotify_AdviseSurfaceAllocator_Proxy( IVMRSurfaceAllocatorNotify * This, /* [in] */ DWORD_PTR dwUserID, /* [in] */ IVMRSurfaceAllocator *lpIVRMSurfaceAllocator); void __RPC_STUB IVMRSurfaceAllocatorNotify_AdviseSurfaceAllocator_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRSurfaceAllocatorNotify_SetDDrawDevice_Proxy( IVMRSurfaceAllocatorNotify * This, /* [in] */ LPDIRECTDRAW7 lpDDrawDevice, /* [in] */ HMONITOR hMonitor); void __RPC_STUB IVMRSurfaceAllocatorNotify_SetDDrawDevice_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRSurfaceAllocatorNotify_ChangeDDrawDevice_Proxy( IVMRSurfaceAllocatorNotify * This, /* [in] */ LPDIRECTDRAW7 lpDDrawDevice, /* [in] */ HMONITOR hMonitor); void __RPC_STUB IVMRSurfaceAllocatorNotify_ChangeDDrawDevice_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRSurfaceAllocatorNotify_RestoreDDrawSurfaces_Proxy( IVMRSurfaceAllocatorNotify * This); void __RPC_STUB IVMRSurfaceAllocatorNotify_RestoreDDrawSurfaces_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRSurfaceAllocatorNotify_NotifyEvent_Proxy( IVMRSurfaceAllocatorNotify * This, /* [in] */ LONG EventCode, /* [in] */ LONG_PTR Param1, /* [in] */ LONG_PTR Param2); void __RPC_STUB IVMRSurfaceAllocatorNotify_NotifyEvent_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRSurfaceAllocatorNotify_SetBorderColor_Proxy( IVMRSurfaceAllocatorNotify * This, /* [in] */ COLORREF clrBorder); void __RPC_STUB IVMRSurfaceAllocatorNotify_SetBorderColor_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IVMRSurfaceAllocatorNotify_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0384 */ /* [local] */ typedef /* [public] */ enum __MIDL___MIDL_itf_strmif_0384_0001 { VMR_ARMODE_NONE = 0, VMR_ARMODE_LETTER_BOX = VMR_ARMODE_NONE + 1 } VMR_ASPECT_RATIO_MODE; extern RPC_IF_HANDLE __MIDL_itf_strmif_0384_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0384_v0_0_s_ifspec; #ifndef __IVMRWindowlessControl_INTERFACE_DEFINED__ #define __IVMRWindowlessControl_INTERFACE_DEFINED__ /* interface IVMRWindowlessControl */ /* [unique][helpstring][uuid][local][object][local] */ EXTERN_C const IID IID_IVMRWindowlessControl; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("0eb1088c-4dcd-46f0-878f-39dae86a51b7") IVMRWindowlessControl : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE GetNativeVideoSize( /* [out] */ LONG *lpWidth, /* [out] */ LONG *lpHeight, /* [out] */ LONG *lpARWidth, /* [out] */ LONG *lpARHeight) = 0; virtual HRESULT STDMETHODCALLTYPE GetMinIdealVideoSize( /* [out] */ LONG *lpWidth, /* [out] */ LONG *lpHeight) = 0; virtual HRESULT STDMETHODCALLTYPE GetMaxIdealVideoSize( /* [out] */ LONG *lpWidth, /* [out] */ LONG *lpHeight) = 0; virtual HRESULT STDMETHODCALLTYPE SetVideoPosition( /* [in] */ const LPRECT lpSRCRect, /* [in] */ const LPRECT lpDSTRect) = 0; virtual HRESULT STDMETHODCALLTYPE GetVideoPosition( /* [out] */ LPRECT lpSRCRect, /* [out] */ LPRECT lpDSTRect) = 0; virtual HRESULT STDMETHODCALLTYPE GetAspectRatioMode( /* [out] */ DWORD *lpAspectRatioMode) = 0; virtual HRESULT STDMETHODCALLTYPE SetAspectRatioMode( /* [in] */ DWORD AspectRatioMode) = 0; virtual HRESULT STDMETHODCALLTYPE SetVideoClippingWindow( /* [in] */ HWND hwnd) = 0; virtual HRESULT STDMETHODCALLTYPE RepaintVideo( /* [in] */ HWND hwnd, /* [in] */ HDC hdc) = 0; virtual HRESULT STDMETHODCALLTYPE DisplayModeChanged( void) = 0; virtual HRESULT STDMETHODCALLTYPE GetCurrentImage( /* [out] */ BYTE **lpDib) = 0; virtual HRESULT STDMETHODCALLTYPE SetBorderColor( /* [in] */ COLORREF Clr) = 0; virtual HRESULT STDMETHODCALLTYPE GetBorderColor( /* [out] */ COLORREF *lpClr) = 0; virtual HRESULT STDMETHODCALLTYPE SetColorKey( /* [in] */ COLORREF Clr) = 0; virtual HRESULT STDMETHODCALLTYPE GetColorKey( /* [out] */ COLORREF *lpClr) = 0; }; #else /* C style interface */ typedef struct IVMRWindowlessControlVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IVMRWindowlessControl * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IVMRWindowlessControl * This); ULONG ( STDMETHODCALLTYPE *Release )( IVMRWindowlessControl * This); HRESULT ( STDMETHODCALLTYPE *GetNativeVideoSize )( IVMRWindowlessControl * This, /* [out] */ LONG *lpWidth, /* [out] */ LONG *lpHeight, /* [out] */ LONG *lpARWidth, /* [out] */ LONG *lpARHeight); HRESULT ( STDMETHODCALLTYPE *GetMinIdealVideoSize )( IVMRWindowlessControl * This, /* [out] */ LONG *lpWidth, /* [out] */ LONG *lpHeight); HRESULT ( STDMETHODCALLTYPE *GetMaxIdealVideoSize )( IVMRWindowlessControl * This, /* [out] */ LONG *lpWidth, /* [out] */ LONG *lpHeight); HRESULT ( STDMETHODCALLTYPE *SetVideoPosition )( IVMRWindowlessControl * This, /* [in] */ const LPRECT lpSRCRect, /* [in] */ const LPRECT lpDSTRect); HRESULT ( STDMETHODCALLTYPE *GetVideoPosition )( IVMRWindowlessControl * This, /* [out] */ LPRECT lpSRCRect, /* [out] */ LPRECT lpDSTRect); HRESULT ( STDMETHODCALLTYPE *GetAspectRatioMode )( IVMRWindowlessControl * This, /* [out] */ DWORD *lpAspectRatioMode); HRESULT ( STDMETHODCALLTYPE *SetAspectRatioMode )( IVMRWindowlessControl * This, /* [in] */ DWORD AspectRatioMode); HRESULT ( STDMETHODCALLTYPE *SetVideoClippingWindow )( IVMRWindowlessControl * This, /* [in] */ HWND hwnd); HRESULT ( STDMETHODCALLTYPE *RepaintVideo )( IVMRWindowlessControl * This, /* [in] */ HWND hwnd, /* [in] */ HDC hdc); HRESULT ( STDMETHODCALLTYPE *DisplayModeChanged )( IVMRWindowlessControl * This); HRESULT ( STDMETHODCALLTYPE *GetCurrentImage )( IVMRWindowlessControl * This, /* [out] */ BYTE **lpDib); HRESULT ( STDMETHODCALLTYPE *SetBorderColor )( IVMRWindowlessControl * This, /* [in] */ COLORREF Clr); HRESULT ( STDMETHODCALLTYPE *GetBorderColor )( IVMRWindowlessControl * This, /* [out] */ COLORREF *lpClr); HRESULT ( STDMETHODCALLTYPE *SetColorKey )( IVMRWindowlessControl * This, /* [in] */ COLORREF Clr); HRESULT ( STDMETHODCALLTYPE *GetColorKey )( IVMRWindowlessControl * This, /* [out] */ COLORREF *lpClr); END_INTERFACE } IVMRWindowlessControlVtbl; interface IVMRWindowlessControl { CONST_VTBL struct IVMRWindowlessControlVtbl *lpVtbl; }; #ifdef COBJMACROS #define IVMRWindowlessControl_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IVMRWindowlessControl_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IVMRWindowlessControl_Release(This) \ (This)->lpVtbl -> Release(This) #define IVMRWindowlessControl_GetNativeVideoSize(This,lpWidth,lpHeight,lpARWidth,lpARHeight) \ (This)->lpVtbl -> GetNativeVideoSize(This,lpWidth,lpHeight,lpARWidth,lpARHeight) #define IVMRWindowlessControl_GetMinIdealVideoSize(This,lpWidth,lpHeight) \ (This)->lpVtbl -> GetMinIdealVideoSize(This,lpWidth,lpHeight) #define IVMRWindowlessControl_GetMaxIdealVideoSize(This,lpWidth,lpHeight) \ (This)->lpVtbl -> GetMaxIdealVideoSize(This,lpWidth,lpHeight) #define IVMRWindowlessControl_SetVideoPosition(This,lpSRCRect,lpDSTRect) \ (This)->lpVtbl -> SetVideoPosition(This,lpSRCRect,lpDSTRect) #define IVMRWindowlessControl_GetVideoPosition(This,lpSRCRect,lpDSTRect) \ (This)->lpVtbl -> GetVideoPosition(This,lpSRCRect,lpDSTRect) #define IVMRWindowlessControl_GetAspectRatioMode(This,lpAspectRatioMode) \ (This)->lpVtbl -> GetAspectRatioMode(This,lpAspectRatioMode) #define IVMRWindowlessControl_SetAspectRatioMode(This,AspectRatioMode) \ (This)->lpVtbl -> SetAspectRatioMode(This,AspectRatioMode) #define IVMRWindowlessControl_SetVideoClippingWindow(This,hwnd) \ (This)->lpVtbl -> SetVideoClippingWindow(This,hwnd) #define IVMRWindowlessControl_RepaintVideo(This,hwnd,hdc) \ (This)->lpVtbl -> RepaintVideo(This,hwnd,hdc) #define IVMRWindowlessControl_DisplayModeChanged(This) \ (This)->lpVtbl -> DisplayModeChanged(This) #define IVMRWindowlessControl_GetCurrentImage(This,lpDib) \ (This)->lpVtbl -> GetCurrentImage(This,lpDib) #define IVMRWindowlessControl_SetBorderColor(This,Clr) \ (This)->lpVtbl -> SetBorderColor(This,Clr) #define IVMRWindowlessControl_GetBorderColor(This,lpClr) \ (This)->lpVtbl -> GetBorderColor(This,lpClr) #define IVMRWindowlessControl_SetColorKey(This,Clr) \ (This)->lpVtbl -> SetColorKey(This,Clr) #define IVMRWindowlessControl_GetColorKey(This,lpClr) \ (This)->lpVtbl -> GetColorKey(This,lpClr) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IVMRWindowlessControl_GetNativeVideoSize_Proxy( IVMRWindowlessControl * This, /* [out] */ LONG *lpWidth, /* [out] */ LONG *lpHeight, /* [out] */ LONG *lpARWidth, /* [out] */ LONG *lpARHeight); void __RPC_STUB IVMRWindowlessControl_GetNativeVideoSize_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRWindowlessControl_GetMinIdealVideoSize_Proxy( IVMRWindowlessControl * This, /* [out] */ LONG *lpWidth, /* [out] */ LONG *lpHeight); void __RPC_STUB IVMRWindowlessControl_GetMinIdealVideoSize_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRWindowlessControl_GetMaxIdealVideoSize_Proxy( IVMRWindowlessControl * This, /* [out] */ LONG *lpWidth, /* [out] */ LONG *lpHeight); void __RPC_STUB IVMRWindowlessControl_GetMaxIdealVideoSize_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRWindowlessControl_SetVideoPosition_Proxy( IVMRWindowlessControl * This, /* [in] */ const LPRECT lpSRCRect, /* [in] */ const LPRECT lpDSTRect); void __RPC_STUB IVMRWindowlessControl_SetVideoPosition_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRWindowlessControl_GetVideoPosition_Proxy( IVMRWindowlessControl * This, /* [out] */ LPRECT lpSRCRect, /* [out] */ LPRECT lpDSTRect); void __RPC_STUB IVMRWindowlessControl_GetVideoPosition_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRWindowlessControl_GetAspectRatioMode_Proxy( IVMRWindowlessControl * This, /* [out] */ DWORD *lpAspectRatioMode); void __RPC_STUB IVMRWindowlessControl_GetAspectRatioMode_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRWindowlessControl_SetAspectRatioMode_Proxy( IVMRWindowlessControl * This, /* [in] */ DWORD AspectRatioMode); void __RPC_STUB IVMRWindowlessControl_SetAspectRatioMode_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRWindowlessControl_SetVideoClippingWindow_Proxy( IVMRWindowlessControl * This, /* [in] */ HWND hwnd); void __RPC_STUB IVMRWindowlessControl_SetVideoClippingWindow_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRWindowlessControl_RepaintVideo_Proxy( IVMRWindowlessControl * This, /* [in] */ HWND hwnd, /* [in] */ HDC hdc); void __RPC_STUB IVMRWindowlessControl_RepaintVideo_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRWindowlessControl_DisplayModeChanged_Proxy( IVMRWindowlessControl * This); void __RPC_STUB IVMRWindowlessControl_DisplayModeChanged_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRWindowlessControl_GetCurrentImage_Proxy( IVMRWindowlessControl * This, /* [out] */ BYTE **lpDib); void __RPC_STUB IVMRWindowlessControl_GetCurrentImage_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRWindowlessControl_SetBorderColor_Proxy( IVMRWindowlessControl * This, /* [in] */ COLORREF Clr); void __RPC_STUB IVMRWindowlessControl_SetBorderColor_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRWindowlessControl_GetBorderColor_Proxy( IVMRWindowlessControl * This, /* [out] */ COLORREF *lpClr); void __RPC_STUB IVMRWindowlessControl_GetBorderColor_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRWindowlessControl_SetColorKey_Proxy( IVMRWindowlessControl * This, /* [in] */ COLORREF Clr); void __RPC_STUB IVMRWindowlessControl_SetColorKey_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRWindowlessControl_GetColorKey_Proxy( IVMRWindowlessControl * This, /* [out] */ COLORREF *lpClr); void __RPC_STUB IVMRWindowlessControl_GetColorKey_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IVMRWindowlessControl_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0385 */ /* [local] */ typedef /* [public] */ enum __MIDL___MIDL_itf_strmif_0385_0001 { MixerPref_NoDecimation = 0x1, MixerPref_DecimateOutput = 0x2, MixerPref_DecimateMask = 0xf, MixerPref_BiLinearFiltering = 0x10, MixerPref_PointFiltering = 0x20, MixerPref_FilteringMask = 0xf0, MixerPref_RenderTargetRGB = 0x100, MixerPref_RenderTargetYUV420 = 0x200, MixerPref_RenderTargetYUV422 = 0x400, MixerPref_RenderTargetYUV444 = 0x800, MixerPref_RenderTargetReserved = 0xf000, MixerPref_RenderTargetMask = 0xff00 } VMRMixerPrefs; typedef struct _NORMALIZEDRECT { float left; float top; float right; float bottom; } NORMALIZEDRECT; typedef struct _NORMALIZEDRECT *PNORMALIZEDRECT; extern RPC_IF_HANDLE __MIDL_itf_strmif_0385_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0385_v0_0_s_ifspec; #ifndef __IVMRMixerControl_INTERFACE_DEFINED__ #define __IVMRMixerControl_INTERFACE_DEFINED__ /* interface IVMRMixerControl */ /* [unique][helpstring][uuid][local][object][local] */ EXTERN_C const IID IID_IVMRMixerControl; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("1c1a17b0-bed0-415d-974b-dc6696131599") IVMRMixerControl : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE SetAlpha( /* [in] */ DWORD dwStreamID, /* [in] */ float Alpha) = 0; virtual HRESULT STDMETHODCALLTYPE GetAlpha( /* [in] */ DWORD dwStreamID, /* [out] */ float *pAlpha) = 0; virtual HRESULT STDMETHODCALLTYPE SetZOrder( /* [in] */ DWORD dwStreamID, /* [in] */ DWORD dwZ) = 0; virtual HRESULT STDMETHODCALLTYPE GetZOrder( /* [in] */ DWORD dwStreamID, /* [out] */ DWORD *pZ) = 0; virtual HRESULT STDMETHODCALLTYPE SetOutputRect( /* [in] */ DWORD dwStreamID, /* [in] */ const NORMALIZEDRECT *pRect) = 0; virtual HRESULT STDMETHODCALLTYPE GetOutputRect( /* [in] */ DWORD dwStreamID, /* [out] */ NORMALIZEDRECT *pRect) = 0; virtual HRESULT STDMETHODCALLTYPE SetBackgroundClr( /* [in] */ COLORREF ClrBkg) = 0; virtual HRESULT STDMETHODCALLTYPE GetBackgroundClr( /* [in] */ COLORREF *lpClrBkg) = 0; virtual HRESULT STDMETHODCALLTYPE SetMixingPrefs( /* [in] */ DWORD dwMixerPrefs) = 0; virtual HRESULT STDMETHODCALLTYPE GetMixingPrefs( /* [out] */ DWORD *pdwMixerPrefs) = 0; }; #else /* C style interface */ typedef struct IVMRMixerControlVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IVMRMixerControl * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IVMRMixerControl * This); ULONG ( STDMETHODCALLTYPE *Release )( IVMRMixerControl * This); HRESULT ( STDMETHODCALLTYPE *SetAlpha )( IVMRMixerControl * This, /* [in] */ DWORD dwStreamID, /* [in] */ float Alpha); HRESULT ( STDMETHODCALLTYPE *GetAlpha )( IVMRMixerControl * This, /* [in] */ DWORD dwStreamID, /* [out] */ float *pAlpha); HRESULT ( STDMETHODCALLTYPE *SetZOrder )( IVMRMixerControl * This, /* [in] */ DWORD dwStreamID, /* [in] */ DWORD dwZ); HRESULT ( STDMETHODCALLTYPE *GetZOrder )( IVMRMixerControl * This, /* [in] */ DWORD dwStreamID, /* [out] */ DWORD *pZ); HRESULT ( STDMETHODCALLTYPE *SetOutputRect )( IVMRMixerControl * This, /* [in] */ DWORD dwStreamID, /* [in] */ const NORMALIZEDRECT *pRect); HRESULT ( STDMETHODCALLTYPE *GetOutputRect )( IVMRMixerControl * This, /* [in] */ DWORD dwStreamID, /* [out] */ NORMALIZEDRECT *pRect); HRESULT ( STDMETHODCALLTYPE *SetBackgroundClr )( IVMRMixerControl * This, /* [in] */ COLORREF ClrBkg); HRESULT ( STDMETHODCALLTYPE *GetBackgroundClr )( IVMRMixerControl * This, /* [in] */ COLORREF *lpClrBkg); HRESULT ( STDMETHODCALLTYPE *SetMixingPrefs )( IVMRMixerControl * This, /* [in] */ DWORD dwMixerPrefs); HRESULT ( STDMETHODCALLTYPE *GetMixingPrefs )( IVMRMixerControl * This, /* [out] */ DWORD *pdwMixerPrefs); END_INTERFACE } IVMRMixerControlVtbl; interface IVMRMixerControl { CONST_VTBL struct IVMRMixerControlVtbl *lpVtbl; }; #ifdef COBJMACROS #define IVMRMixerControl_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IVMRMixerControl_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IVMRMixerControl_Release(This) \ (This)->lpVtbl -> Release(This) #define IVMRMixerControl_SetAlpha(This,dwStreamID,Alpha) \ (This)->lpVtbl -> SetAlpha(This,dwStreamID,Alpha) #define IVMRMixerControl_GetAlpha(This,dwStreamID,pAlpha) \ (This)->lpVtbl -> GetAlpha(This,dwStreamID,pAlpha) #define IVMRMixerControl_SetZOrder(This,dwStreamID,dwZ) \ (This)->lpVtbl -> SetZOrder(This,dwStreamID,dwZ) #define IVMRMixerControl_GetZOrder(This,dwStreamID,pZ) \ (This)->lpVtbl -> GetZOrder(This,dwStreamID,pZ) #define IVMRMixerControl_SetOutputRect(This,dwStreamID,pRect) \ (This)->lpVtbl -> SetOutputRect(This,dwStreamID,pRect) #define IVMRMixerControl_GetOutputRect(This,dwStreamID,pRect) \ (This)->lpVtbl -> GetOutputRect(This,dwStreamID,pRect) #define IVMRMixerControl_SetBackgroundClr(This,ClrBkg) \ (This)->lpVtbl -> SetBackgroundClr(This,ClrBkg) #define IVMRMixerControl_GetBackgroundClr(This,lpClrBkg) \ (This)->lpVtbl -> GetBackgroundClr(This,lpClrBkg) #define IVMRMixerControl_SetMixingPrefs(This,dwMixerPrefs) \ (This)->lpVtbl -> SetMixingPrefs(This,dwMixerPrefs) #define IVMRMixerControl_GetMixingPrefs(This,pdwMixerPrefs) \ (This)->lpVtbl -> GetMixingPrefs(This,pdwMixerPrefs) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IVMRMixerControl_SetAlpha_Proxy( IVMRMixerControl * This, /* [in] */ DWORD dwStreamID, /* [in] */ float Alpha); void __RPC_STUB IVMRMixerControl_SetAlpha_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRMixerControl_GetAlpha_Proxy( IVMRMixerControl * This, /* [in] */ DWORD dwStreamID, /* [out] */ float *pAlpha); void __RPC_STUB IVMRMixerControl_GetAlpha_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRMixerControl_SetZOrder_Proxy( IVMRMixerControl * This, /* [in] */ DWORD dwStreamID, /* [in] */ DWORD dwZ); void __RPC_STUB IVMRMixerControl_SetZOrder_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRMixerControl_GetZOrder_Proxy( IVMRMixerControl * This, /* [in] */ DWORD dwStreamID, /* [out] */ DWORD *pZ); void __RPC_STUB IVMRMixerControl_GetZOrder_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRMixerControl_SetOutputRect_Proxy( IVMRMixerControl * This, /* [in] */ DWORD dwStreamID, /* [in] */ const NORMALIZEDRECT *pRect); void __RPC_STUB IVMRMixerControl_SetOutputRect_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRMixerControl_GetOutputRect_Proxy( IVMRMixerControl * This, /* [in] */ DWORD dwStreamID, /* [out] */ NORMALIZEDRECT *pRect); void __RPC_STUB IVMRMixerControl_GetOutputRect_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRMixerControl_SetBackgroundClr_Proxy( IVMRMixerControl * This, /* [in] */ COLORREF ClrBkg); void __RPC_STUB IVMRMixerControl_SetBackgroundClr_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRMixerControl_GetBackgroundClr_Proxy( IVMRMixerControl * This, /* [in] */ COLORREF *lpClrBkg); void __RPC_STUB IVMRMixerControl_GetBackgroundClr_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRMixerControl_SetMixingPrefs_Proxy( IVMRMixerControl * This, /* [in] */ DWORD dwMixerPrefs); void __RPC_STUB IVMRMixerControl_SetMixingPrefs_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRMixerControl_GetMixingPrefs_Proxy( IVMRMixerControl * This, /* [out] */ DWORD *pdwMixerPrefs); void __RPC_STUB IVMRMixerControl_GetMixingPrefs_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IVMRMixerControl_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0386 */ /* [local] */ typedef struct tagVMRGUID { +#ifdef __MINGW32_MAJOR_VERSION ::GUID *pGUID; ::GUID GUID; +#else + GUID *pGUID; GUID GUID; +#endif } VMRGUID; typedef struct tagVMRMONITORINFO { VMRGUID guid; RECT rcMonitor; HMONITOR hMon; DWORD dwFlags; wchar_t szDevice[ 32 ]; wchar_t szDescription[ 256 ]; LARGE_INTEGER liDriverVersion; DWORD dwVendorId; DWORD dwDeviceId; DWORD dwSubSysId; DWORD dwRevision; } VMRMONITORINFO; extern RPC_IF_HANDLE __MIDL_itf_strmif_0386_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0386_v0_0_s_ifspec; #ifndef __IVMRMonitorConfig_INTERFACE_DEFINED__ #define __IVMRMonitorConfig_INTERFACE_DEFINED__ /* interface IVMRMonitorConfig */ /* [unique][helpstring][uuid][local][object] */ EXTERN_C const IID IID_IVMRMonitorConfig; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("9cf0b1b6-fbaa-4b7f-88cf-cf1f130a0dce") IVMRMonitorConfig : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE SetMonitor( /* [in] */ const VMRGUID *pGUID) = 0; virtual HRESULT STDMETHODCALLTYPE GetMonitor( /* [out] */ VMRGUID *pGUID) = 0; virtual HRESULT STDMETHODCALLTYPE SetDefaultMonitor( /* [in] */ const VMRGUID *pGUID) = 0; virtual HRESULT STDMETHODCALLTYPE GetDefaultMonitor( /* [out] */ VMRGUID *pGUID) = 0; virtual HRESULT STDMETHODCALLTYPE GetAvailableMonitors( /* [size_is][out] */ VMRMONITORINFO *pInfo, /* [in] */ DWORD dwMaxInfoArraySize, /* [out] */ DWORD *pdwNumDevices) = 0; }; #else /* C style interface */ typedef struct IVMRMonitorConfigVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IVMRMonitorConfig * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IVMRMonitorConfig * This); ULONG ( STDMETHODCALLTYPE *Release )( IVMRMonitorConfig * This); HRESULT ( STDMETHODCALLTYPE *SetMonitor )( IVMRMonitorConfig * This, /* [in] */ const VMRGUID *pGUID); HRESULT ( STDMETHODCALLTYPE *GetMonitor )( IVMRMonitorConfig * This, /* [out] */ VMRGUID *pGUID); HRESULT ( STDMETHODCALLTYPE *SetDefaultMonitor )( IVMRMonitorConfig * This, /* [in] */ const VMRGUID *pGUID); HRESULT ( STDMETHODCALLTYPE *GetDefaultMonitor )( IVMRMonitorConfig * This, /* [out] */ VMRGUID *pGUID); HRESULT ( STDMETHODCALLTYPE *GetAvailableMonitors )( IVMRMonitorConfig * This, /* [size_is][out] */ VMRMONITORINFO *pInfo, /* [in] */ DWORD dwMaxInfoArraySize, /* [out] */ DWORD *pdwNumDevices); END_INTERFACE } IVMRMonitorConfigVtbl; interface IVMRMonitorConfig { CONST_VTBL struct IVMRMonitorConfigVtbl *lpVtbl; }; #ifdef COBJMACROS #define IVMRMonitorConfig_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IVMRMonitorConfig_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IVMRMonitorConfig_Release(This) \ (This)->lpVtbl -> Release(This) #define IVMRMonitorConfig_SetMonitor(This,pGUID) \ (This)->lpVtbl -> SetMonitor(This,pGUID) #define IVMRMonitorConfig_GetMonitor(This,pGUID) \ (This)->lpVtbl -> GetMonitor(This,pGUID) #define IVMRMonitorConfig_SetDefaultMonitor(This,pGUID) \ (This)->lpVtbl -> SetDefaultMonitor(This,pGUID) #define IVMRMonitorConfig_GetDefaultMonitor(This,pGUID) \ (This)->lpVtbl -> GetDefaultMonitor(This,pGUID) #define IVMRMonitorConfig_GetAvailableMonitors(This,pInfo,dwMaxInfoArraySize,pdwNumDevices) \ (This)->lpVtbl -> GetAvailableMonitors(This,pInfo,dwMaxInfoArraySize,pdwNumDevices) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IVMRMonitorConfig_SetMonitor_Proxy( IVMRMonitorConfig * This, /* [in] */ const VMRGUID *pGUID); void __RPC_STUB IVMRMonitorConfig_SetMonitor_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRMonitorConfig_GetMonitor_Proxy( IVMRMonitorConfig * This, /* [out] */ VMRGUID *pGUID); void __RPC_STUB IVMRMonitorConfig_GetMonitor_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRMonitorConfig_SetDefaultMonitor_Proxy( IVMRMonitorConfig * This, /* [in] */ const VMRGUID *pGUID); void __RPC_STUB IVMRMonitorConfig_SetDefaultMonitor_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRMonitorConfig_GetDefaultMonitor_Proxy( IVMRMonitorConfig * This, /* [out] */ VMRGUID *pGUID); void __RPC_STUB IVMRMonitorConfig_GetDefaultMonitor_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRMonitorConfig_GetAvailableMonitors_Proxy( IVMRMonitorConfig * This, /* [size_is][out] */ VMRMONITORINFO *pInfo, /* [in] */ DWORD dwMaxInfoArraySize, /* [out] */ DWORD *pdwNumDevices); void __RPC_STUB IVMRMonitorConfig_GetAvailableMonitors_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IVMRMonitorConfig_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0387 */ /* [local] */ typedef /* [public] */ enum __MIDL___MIDL_itf_strmif_0387_0001 { RenderPrefs_ForceOffscreen = 0x1, RenderPrefs_ForceOverlays = 0x2, RenderPrefs_AllowOverlays = 0, RenderPrefs_AllowOffscreen = 0, RenderPrefs_DoNotRenderColorKeyAndBorder = 0x8, RenderPrefs_RestrictToInitialMonitor = 0x10, RenderPrefs_PreferAGPMemWhenMixing = 0x20, RenderPrefs_Mask = 0x3f } VMRRenderPrefs; typedef /* [public] */ enum __MIDL___MIDL_itf_strmif_0387_0002 { VMRMode_Windowed = 0x1, VMRMode_Windowless = 0x2, VMRMode_Renderless = 0x4, VMRMode_Mask = 0x7 } VMRMode; enum __MIDL___MIDL_itf_strmif_0387_0003 { MAX_NUMBER_OF_STREAMS = 16 } ; extern RPC_IF_HANDLE __MIDL_itf_strmif_0387_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0387_v0_0_s_ifspec; #ifndef __IVMRFilterConfig_INTERFACE_DEFINED__ #define __IVMRFilterConfig_INTERFACE_DEFINED__ /* interface IVMRFilterConfig */ /* [unique][helpstring][uuid][local][object] */ EXTERN_C const IID IID_IVMRFilterConfig; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("9e5530c5-7034-48b4-bb46-0b8a6efc8e36") IVMRFilterConfig : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE SetImageCompositor( /* [in] */ IVMRImageCompositor *lpVMRImgCompositor) = 0; virtual HRESULT STDMETHODCALLTYPE SetNumberOfStreams( /* [in] */ DWORD dwMaxStreams) = 0; virtual HRESULT STDMETHODCALLTYPE GetNumberOfStreams( /* [out] */ DWORD *pdwMaxStreams) = 0; virtual HRESULT STDMETHODCALLTYPE SetRenderingPrefs( /* [in] */ DWORD dwRenderFlags) = 0; virtual HRESULT STDMETHODCALLTYPE GetRenderingPrefs( /* [out] */ DWORD *pdwRenderFlags) = 0; virtual HRESULT STDMETHODCALLTYPE SetRenderingMode( /* [in] */ DWORD Mode) = 0; virtual HRESULT STDMETHODCALLTYPE GetRenderingMode( /* [out] */ DWORD *pMode) = 0; }; #else /* C style interface */ typedef struct IVMRFilterConfigVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IVMRFilterConfig * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IVMRFilterConfig * This); ULONG ( STDMETHODCALLTYPE *Release )( IVMRFilterConfig * This); HRESULT ( STDMETHODCALLTYPE *SetImageCompositor )( IVMRFilterConfig * This, /* [in] */ IVMRImageCompositor *lpVMRImgCompositor); HRESULT ( STDMETHODCALLTYPE *SetNumberOfStreams )( IVMRFilterConfig * This, /* [in] */ DWORD dwMaxStreams); HRESULT ( STDMETHODCALLTYPE *GetNumberOfStreams )( IVMRFilterConfig * This, /* [out] */ DWORD *pdwMaxStreams); HRESULT ( STDMETHODCALLTYPE *SetRenderingPrefs )( IVMRFilterConfig * This, /* [in] */ DWORD dwRenderFlags); HRESULT ( STDMETHODCALLTYPE *GetRenderingPrefs )( IVMRFilterConfig * This, /* [out] */ DWORD *pdwRenderFlags); HRESULT ( STDMETHODCALLTYPE *SetRenderingMode )( IVMRFilterConfig * This, /* [in] */ DWORD Mode); HRESULT ( STDMETHODCALLTYPE *GetRenderingMode )( IVMRFilterConfig * This, /* [out] */ DWORD *pMode); END_INTERFACE } IVMRFilterConfigVtbl; interface IVMRFilterConfig { CONST_VTBL struct IVMRFilterConfigVtbl *lpVtbl; }; #ifdef COBJMACROS #define IVMRFilterConfig_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IVMRFilterConfig_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IVMRFilterConfig_Release(This) \ (This)->lpVtbl -> Release(This) #define IVMRFilterConfig_SetImageCompositor(This,lpVMRImgCompositor) \ (This)->lpVtbl -> SetImageCompositor(This,lpVMRImgCompositor) #define IVMRFilterConfig_SetNumberOfStreams(This,dwMaxStreams) \ (This)->lpVtbl -> SetNumberOfStreams(This,dwMaxStreams) #define IVMRFilterConfig_GetNumberOfStreams(This,pdwMaxStreams) \ (This)->lpVtbl -> GetNumberOfStreams(This,pdwMaxStreams) #define IVMRFilterConfig_SetRenderingPrefs(This,dwRenderFlags) \ (This)->lpVtbl -> SetRenderingPrefs(This,dwRenderFlags) #define IVMRFilterConfig_GetRenderingPrefs(This,pdwRenderFlags) \ (This)->lpVtbl -> GetRenderingPrefs(This,pdwRenderFlags) #define IVMRFilterConfig_SetRenderingMode(This,Mode) \ (This)->lpVtbl -> SetRenderingMode(This,Mode) #define IVMRFilterConfig_GetRenderingMode(This,pMode) \ (This)->lpVtbl -> GetRenderingMode(This,pMode) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IVMRFilterConfig_SetImageCompositor_Proxy( IVMRFilterConfig * This, /* [in] */ IVMRImageCompositor *lpVMRImgCompositor); void __RPC_STUB IVMRFilterConfig_SetImageCompositor_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRFilterConfig_SetNumberOfStreams_Proxy( IVMRFilterConfig * This, /* [in] */ DWORD dwMaxStreams); void __RPC_STUB IVMRFilterConfig_SetNumberOfStreams_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRFilterConfig_GetNumberOfStreams_Proxy( IVMRFilterConfig * This, /* [out] */ DWORD *pdwMaxStreams); void __RPC_STUB IVMRFilterConfig_GetNumberOfStreams_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRFilterConfig_SetRenderingPrefs_Proxy( IVMRFilterConfig * This, /* [in] */ DWORD dwRenderFlags); void __RPC_STUB IVMRFilterConfig_SetRenderingPrefs_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRFilterConfig_GetRenderingPrefs_Proxy( IVMRFilterConfig * This, /* [out] */ DWORD *pdwRenderFlags); void __RPC_STUB IVMRFilterConfig_GetRenderingPrefs_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRFilterConfig_SetRenderingMode_Proxy( IVMRFilterConfig * This, /* [in] */ DWORD Mode); void __RPC_STUB IVMRFilterConfig_SetRenderingMode_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRFilterConfig_GetRenderingMode_Proxy( IVMRFilterConfig * This, /* [out] */ DWORD *pMode); void __RPC_STUB IVMRFilterConfig_GetRenderingMode_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IVMRFilterConfig_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0388 */ /* [local] */ typedef struct _VMRALPHABITMAP { DWORD dwFlags; HDC hdc; LPDIRECTDRAWSURFACE7 pDDS; RECT rSrc; NORMALIZEDRECT rDest; FLOAT fAlpha; COLORREF clrSrcKey; } VMRALPHABITMAP; typedef struct _VMRALPHABITMAP *PVMRALPHABITMAP; #define VMRBITMAP_DISABLE 0x00000001 #define VMRBITMAP_HDC 0x00000002 #define VMRBITMAP_ENTIREDDS 0x00000004 #define VMRBITMAP_SRCCOLORKEY 0x00000008 #define VMRBITMAP_SRCRECT 0x00000010 extern RPC_IF_HANDLE __MIDL_itf_strmif_0388_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0388_v0_0_s_ifspec; #ifndef __IVMRMixerBitmap_INTERFACE_DEFINED__ #define __IVMRMixerBitmap_INTERFACE_DEFINED__ /* interface IVMRMixerBitmap */ /* [unique][helpstring][uuid][local][object] */ EXTERN_C const IID IID_IVMRMixerBitmap; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("1E673275-0257-40aa-AF20-7C608D4A0428") IVMRMixerBitmap : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE SetAlphaBitmap( /* [in] */ const VMRALPHABITMAP *pBmpParms) = 0; virtual HRESULT STDMETHODCALLTYPE UpdateAlphaBitmapParameters( /* [in] */ PVMRALPHABITMAP pBmpParms) = 0; virtual HRESULT STDMETHODCALLTYPE GetAlphaBitmapParameters( /* [out] */ PVMRALPHABITMAP pBmpParms) = 0; }; #else /* C style interface */ typedef struct IVMRMixerBitmapVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IVMRMixerBitmap * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IVMRMixerBitmap * This); ULONG ( STDMETHODCALLTYPE *Release )( IVMRMixerBitmap * This); HRESULT ( STDMETHODCALLTYPE *SetAlphaBitmap )( IVMRMixerBitmap * This, /* [in] */ const VMRALPHABITMAP *pBmpParms); HRESULT ( STDMETHODCALLTYPE *UpdateAlphaBitmapParameters )( IVMRMixerBitmap * This, /* [in] */ PVMRALPHABITMAP pBmpParms); HRESULT ( STDMETHODCALLTYPE *GetAlphaBitmapParameters )( IVMRMixerBitmap * This, /* [out] */ PVMRALPHABITMAP pBmpParms); END_INTERFACE } IVMRMixerBitmapVtbl; interface IVMRMixerBitmap { CONST_VTBL struct IVMRMixerBitmapVtbl *lpVtbl; }; #ifdef COBJMACROS #define IVMRMixerBitmap_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IVMRMixerBitmap_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IVMRMixerBitmap_Release(This) \ (This)->lpVtbl -> Release(This) #define IVMRMixerBitmap_SetAlphaBitmap(This,pBmpParms) \ (This)->lpVtbl -> SetAlphaBitmap(This,pBmpParms) #define IVMRMixerBitmap_UpdateAlphaBitmapParameters(This,pBmpParms) \ (This)->lpVtbl -> UpdateAlphaBitmapParameters(This,pBmpParms) #define IVMRMixerBitmap_GetAlphaBitmapParameters(This,pBmpParms) \ (This)->lpVtbl -> GetAlphaBitmapParameters(This,pBmpParms) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IVMRMixerBitmap_SetAlphaBitmap_Proxy( IVMRMixerBitmap * This, /* [in] */ const VMRALPHABITMAP *pBmpParms); void __RPC_STUB IVMRMixerBitmap_SetAlphaBitmap_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRMixerBitmap_UpdateAlphaBitmapParameters_Proxy( IVMRMixerBitmap * This, /* [in] */ PVMRALPHABITMAP pBmpParms); void __RPC_STUB IVMRMixerBitmap_UpdateAlphaBitmapParameters_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRMixerBitmap_GetAlphaBitmapParameters_Proxy( IVMRMixerBitmap * This, /* [out] */ PVMRALPHABITMAP pBmpParms); void __RPC_STUB IVMRMixerBitmap_GetAlphaBitmapParameters_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IVMRMixerBitmap_INTERFACE_DEFINED__ */ /* interface __MIDL_itf_strmif_0389 */ /* [local] */ typedef struct _VMRVIDEOSTREAMINFO { LPDIRECTDRAWSURFACE7 pddsVideoSurface; DWORD dwWidth; DWORD dwHeight; DWORD dwStrmID; FLOAT fAlpha; DDCOLORKEY ddClrKey; NORMALIZEDRECT rNormal; } VMRVIDEOSTREAMINFO; extern RPC_IF_HANDLE __MIDL_itf_strmif_0389_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_strmif_0389_v0_0_s_ifspec; #ifndef __IVMRImageCompositor_INTERFACE_DEFINED__ #define __IVMRImageCompositor_INTERFACE_DEFINED__ /* interface IVMRImageCompositor */ /* [unique][helpstring][uuid][local][object][local] */ EXTERN_C const IID IID_IVMRImageCompositor; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("7a4fb5af-479f-4074-bb40-ce6722e43c82") IVMRImageCompositor : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE InitCompositionTarget( /* [in] */ IUnknown *pD3DDevice, /* [in] */ LPDIRECTDRAWSURFACE7 pddsRenderTarget) = 0; virtual HRESULT STDMETHODCALLTYPE TermCompositionTarget( /* [in] */ IUnknown *pD3DDevice, /* [in] */ LPDIRECTDRAWSURFACE7 pddsRenderTarget) = 0; virtual HRESULT STDMETHODCALLTYPE SetStreamMediaType( /* [in] */ DWORD dwStrmID, /* [in] */ AM_MEDIA_TYPE *pmt, /* [in] */ BOOL fTexture) = 0; virtual HRESULT STDMETHODCALLTYPE CompositeImage( /* [in] */ IUnknown *pD3DDevice, /* [in] */ LPDIRECTDRAWSURFACE7 pddsRenderTarget, /* [in] */ AM_MEDIA_TYPE *pmtRenderTarget, /* [in] */ REFERENCE_TIME rtStart, /* [in] */ REFERENCE_TIME rtEnd, /* [in] */ DWORD dwClrBkGnd, /* [in] */ VMRVIDEOSTREAMINFO *pVideoStreamInfo, /* [in] */ UINT cStreams) = 0; }; #else /* C style interface */ typedef struct IVMRImageCompositorVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IVMRImageCompositor * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IVMRImageCompositor * This); ULONG ( STDMETHODCALLTYPE *Release )( IVMRImageCompositor * This); HRESULT ( STDMETHODCALLTYPE *InitCompositionTarget )( IVMRImageCompositor * This, /* [in] */ IUnknown *pD3DDevice, /* [in] */ LPDIRECTDRAWSURFACE7 pddsRenderTarget); HRESULT ( STDMETHODCALLTYPE *TermCompositionTarget )( IVMRImageCompositor * This, /* [in] */ IUnknown *pD3DDevice, /* [in] */ LPDIRECTDRAWSURFACE7 pddsRenderTarget); HRESULT ( STDMETHODCALLTYPE *SetStreamMediaType )( IVMRImageCompositor * This, /* [in] */ DWORD dwStrmID, /* [in] */ AM_MEDIA_TYPE *pmt, /* [in] */ BOOL fTexture); HRESULT ( STDMETHODCALLTYPE *CompositeImage )( IVMRImageCompositor * This, /* [in] */ IUnknown *pD3DDevice, /* [in] */ LPDIRECTDRAWSURFACE7 pddsRenderTarget, /* [in] */ AM_MEDIA_TYPE *pmtRenderTarget, /* [in] */ REFERENCE_TIME rtStart, /* [in] */ REFERENCE_TIME rtEnd, /* [in] */ DWORD dwClrBkGnd, /* [in] */ VMRVIDEOSTREAMINFO *pVideoStreamInfo, /* [in] */ UINT cStreams); END_INTERFACE } IVMRImageCompositorVtbl; interface IVMRImageCompositor { CONST_VTBL struct IVMRImageCompositorVtbl *lpVtbl; }; #ifdef COBJMACROS #define IVMRImageCompositor_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IVMRImageCompositor_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IVMRImageCompositor_Release(This) \ (This)->lpVtbl -> Release(This) #define IVMRImageCompositor_InitCompositionTarget(This,pD3DDevice,pddsRenderTarget) \ (This)->lpVtbl -> InitCompositionTarget(This,pD3DDevice,pddsRenderTarget) #define IVMRImageCompositor_TermCompositionTarget(This,pD3DDevice,pddsRenderTarget) \ (This)->lpVtbl -> TermCompositionTarget(This,pD3DDevice,pddsRenderTarget) #define IVMRImageCompositor_SetStreamMediaType(This,dwStrmID,pmt,fTexture) \ (This)->lpVtbl -> SetStreamMediaType(This,dwStrmID,pmt,fTexture) #define IVMRImageCompositor_CompositeImage(This,pD3DDevice,pddsRenderTarget,pmtRenderTarget,rtStart,rtEnd,dwClrBkGnd,pVideoStreamInfo,cStreams) \ (This)->lpVtbl -> CompositeImage(This,pD3DDevice,pddsRenderTarget,pmtRenderTarget,rtStart,rtEnd,dwClrBkGnd,pVideoStreamInfo,cStreams) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IVMRImageCompositor_InitCompositionTarget_Proxy( IVMRImageCompositor * This, /* [in] */ IUnknown *pD3DDevice, /* [in] */ LPDIRECTDRAWSURFACE7 pddsRenderTarget); void __RPC_STUB IVMRImageCompositor_InitCompositionTarget_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRImageCompositor_TermCompositionTarget_Proxy( IVMRImageCompositor * This, /* [in] */ IUnknown *pD3DDevice, /* [in] */ LPDIRECTDRAWSURFACE7 pddsRenderTarget); void __RPC_STUB IVMRImageCompositor_TermCompositionTarget_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRImageCompositor_SetStreamMediaType_Proxy( IVMRImageCompositor * This, /* [in] */ DWORD dwStrmID, /* [in] */ AM_MEDIA_TYPE *pmt, /* [in] */ BOOL fTexture); void __RPC_STUB IVMRImageCompositor_SetStreamMediaType_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRImageCompositor_CompositeImage_Proxy( IVMRImageCompositor * This, /* [in] */ IUnknown *pD3DDevice, /* [in] */ LPDIRECTDRAWSURFACE7 pddsRenderTarget, /* [in] */ AM_MEDIA_TYPE *pmtRenderTarget, /* [in] */ REFERENCE_TIME rtStart, /* [in] */ REFERENCE_TIME rtEnd, /* [in] */ DWORD dwClrBkGnd, /* [in] */ VMRVIDEOSTREAMINFO *pVideoStreamInfo, /* [in] */ UINT cStreams); void __RPC_STUB IVMRImageCompositor_CompositeImage_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IVMRImageCompositor_INTERFACE_DEFINED__ */ #ifndef __IVMRVideoStreamControl_INTERFACE_DEFINED__ #define __IVMRVideoStreamControl_INTERFACE_DEFINED__ /* interface IVMRVideoStreamControl */ /* [unique][helpstring][uuid][local][object] */ EXTERN_C const IID IID_IVMRVideoStreamControl; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("058d1f11-2a54-4bef-bd54-df706626b727") IVMRVideoStreamControl : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE SetColorKey( /* [in] */ LPDDCOLORKEY lpClrKey) = 0; virtual HRESULT STDMETHODCALLTYPE GetColorKey( /* [out] */ LPDDCOLORKEY lpClrKey) = 0; virtual HRESULT STDMETHODCALLTYPE SetStreamActiveState( /* [in] */ BOOL fActive) = 0; virtual HRESULT STDMETHODCALLTYPE GetStreamActiveState( /* [out] */ BOOL *lpfActive) = 0; }; #else /* C style interface */ typedef struct IVMRVideoStreamControlVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IVMRVideoStreamControl * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IVMRVideoStreamControl * This); ULONG ( STDMETHODCALLTYPE *Release )( IVMRVideoStreamControl * This); HRESULT ( STDMETHODCALLTYPE *SetColorKey )( IVMRVideoStreamControl * This, /* [in] */ LPDDCOLORKEY lpClrKey); HRESULT ( STDMETHODCALLTYPE *GetColorKey )( IVMRVideoStreamControl * This, /* [out] */ LPDDCOLORKEY lpClrKey); HRESULT ( STDMETHODCALLTYPE *SetStreamActiveState )( IVMRVideoStreamControl * This, /* [in] */ BOOL fActive); HRESULT ( STDMETHODCALLTYPE *GetStreamActiveState )( IVMRVideoStreamControl * This, /* [out] */ BOOL *lpfActive); END_INTERFACE } IVMRVideoStreamControlVtbl; interface IVMRVideoStreamControl { CONST_VTBL struct IVMRVideoStreamControlVtbl *lpVtbl; }; #ifdef COBJMACROS #define IVMRVideoStreamControl_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IVMRVideoStreamControl_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IVMRVideoStreamControl_Release(This) \ (This)->lpVtbl -> Release(This) #define IVMRVideoStreamControl_SetColorKey(This,lpClrKey) \ (This)->lpVtbl -> SetColorKey(This,lpClrKey) #define IVMRVideoStreamControl_GetColorKey(This,lpClrKey) \ (This)->lpVtbl -> GetColorKey(This,lpClrKey) #define IVMRVideoStreamControl_SetStreamActiveState(This,fActive) \ (This)->lpVtbl -> SetStreamActiveState(This,fActive) #define IVMRVideoStreamControl_GetStreamActiveState(This,lpfActive) \ (This)->lpVtbl -> GetStreamActiveState(This,lpfActive) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IVMRVideoStreamControl_SetColorKey_Proxy( IVMRVideoStreamControl * This, /* [in] */ LPDDCOLORKEY lpClrKey); void __RPC_STUB IVMRVideoStreamControl_SetColorKey_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRVideoStreamControl_GetColorKey_Proxy( IVMRVideoStreamControl * This, /* [out] */ LPDDCOLORKEY lpClrKey); void __RPC_STUB IVMRVideoStreamControl_GetColorKey_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRVideoStreamControl_SetStreamActiveState_Proxy( IVMRVideoStreamControl * This, /* [in] */ BOOL fActive); void __RPC_STUB IVMRVideoStreamControl_SetStreamActiveState_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRVideoStreamControl_GetStreamActiveState_Proxy( IVMRVideoStreamControl * This, /* [out] */ BOOL *lpfActive); void __RPC_STUB IVMRVideoStreamControl_GetStreamActiveState_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IVMRVideoStreamControl_INTERFACE_DEFINED__ */ #ifndef __IVMRSurface_INTERFACE_DEFINED__ #define __IVMRSurface_INTERFACE_DEFINED__ /* interface IVMRSurface */ /* [unique][helpstring][uuid][local][object][local] */ EXTERN_C const IID IID_IVMRSurface; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("a9849bbe-9ec8-4263-b764-62730f0d15d0") IVMRSurface : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE IsSurfaceLocked( void) = 0; virtual HRESULT STDMETHODCALLTYPE LockSurface( /* [out] */ BYTE **lpSurface) = 0; virtual HRESULT STDMETHODCALLTYPE UnlockSurface( void) = 0; virtual HRESULT STDMETHODCALLTYPE GetSurface( /* [out] */ LPDIRECTDRAWSURFACE7 *lplpSurface) = 0; }; #else /* C style interface */ typedef struct IVMRSurfaceVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IVMRSurface * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IVMRSurface * This); ULONG ( STDMETHODCALLTYPE *Release )( IVMRSurface * This); HRESULT ( STDMETHODCALLTYPE *IsSurfaceLocked )( IVMRSurface * This); HRESULT ( STDMETHODCALLTYPE *LockSurface )( IVMRSurface * This, /* [out] */ BYTE **lpSurface); HRESULT ( STDMETHODCALLTYPE *UnlockSurface )( IVMRSurface * This); HRESULT ( STDMETHODCALLTYPE *GetSurface )( IVMRSurface * This, /* [out] */ LPDIRECTDRAWSURFACE7 *lplpSurface); END_INTERFACE } IVMRSurfaceVtbl; interface IVMRSurface { CONST_VTBL struct IVMRSurfaceVtbl *lpVtbl; }; #ifdef COBJMACROS #define IVMRSurface_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IVMRSurface_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IVMRSurface_Release(This) \ (This)->lpVtbl -> Release(This) #define IVMRSurface_IsSurfaceLocked(This) \ (This)->lpVtbl -> IsSurfaceLocked(This) #define IVMRSurface_LockSurface(This,lpSurface) \ (This)->lpVtbl -> LockSurface(This,lpSurface) #define IVMRSurface_UnlockSurface(This) \ (This)->lpVtbl -> UnlockSurface(This) #define IVMRSurface_GetSurface(This,lplpSurface) \ (This)->lpVtbl -> GetSurface(This,lplpSurface) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IVMRSurface_IsSurfaceLocked_Proxy( IVMRSurface * This); void __RPC_STUB IVMRSurface_IsSurfaceLocked_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRSurface_LockSurface_Proxy( IVMRSurface * This, /* [out] */ BYTE **lpSurface); void __RPC_STUB IVMRSurface_LockSurface_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRSurface_UnlockSurface_Proxy( IVMRSurface * This); void __RPC_STUB IVMRSurface_UnlockSurface_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRSurface_GetSurface_Proxy( IVMRSurface * This, /* [out] */ LPDIRECTDRAWSURFACE7 *lplpSurface); void __RPC_STUB IVMRSurface_GetSurface_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IVMRSurface_INTERFACE_DEFINED__ */ #ifndef __IVMRImagePresenterConfig_INTERFACE_DEFINED__ #define __IVMRImagePresenterConfig_INTERFACE_DEFINED__ /* interface IVMRImagePresenterConfig */ /* [unique][helpstring][uuid][local][object][local] */ EXTERN_C const IID IID_IVMRImagePresenterConfig; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("9f3a1c85-8555-49ba-935f-be5b5b29d178") IVMRImagePresenterConfig : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE SetRenderingPrefs( /* [in] */ DWORD dwRenderFlags) = 0; virtual HRESULT STDMETHODCALLTYPE GetRenderingPrefs( /* [out] */ DWORD *dwRenderFlags) = 0; }; #else /* C style interface */ typedef struct IVMRImagePresenterConfigVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IVMRImagePresenterConfig * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IVMRImagePresenterConfig * This); ULONG ( STDMETHODCALLTYPE *Release )( IVMRImagePresenterConfig * This); HRESULT ( STDMETHODCALLTYPE *SetRenderingPrefs )( IVMRImagePresenterConfig * This, /* [in] */ DWORD dwRenderFlags); HRESULT ( STDMETHODCALLTYPE *GetRenderingPrefs )( IVMRImagePresenterConfig * This, /* [out] */ DWORD *dwRenderFlags); END_INTERFACE } IVMRImagePresenterConfigVtbl; interface IVMRImagePresenterConfig { CONST_VTBL struct IVMRImagePresenterConfigVtbl *lpVtbl; }; #ifdef COBJMACROS #define IVMRImagePresenterConfig_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IVMRImagePresenterConfig_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IVMRImagePresenterConfig_Release(This) \ (This)->lpVtbl -> Release(This) #define IVMRImagePresenterConfig_SetRenderingPrefs(This,dwRenderFlags) \ (This)->lpVtbl -> SetRenderingPrefs(This,dwRenderFlags) #define IVMRImagePresenterConfig_GetRenderingPrefs(This,dwRenderFlags) \ (This)->lpVtbl -> GetRenderingPrefs(This,dwRenderFlags) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IVMRImagePresenterConfig_SetRenderingPrefs_Proxy( IVMRImagePresenterConfig * This, /* [in] */ DWORD dwRenderFlags); void __RPC_STUB IVMRImagePresenterConfig_SetRenderingPrefs_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRImagePresenterConfig_GetRenderingPrefs_Proxy( IVMRImagePresenterConfig * This, /* [out] */ DWORD *dwRenderFlags); void __RPC_STUB IVMRImagePresenterConfig_GetRenderingPrefs_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IVMRImagePresenterConfig_INTERFACE_DEFINED__ */ #ifndef __IVMRImagePresenterExclModeConfig_INTERFACE_DEFINED__ #define __IVMRImagePresenterExclModeConfig_INTERFACE_DEFINED__ /* interface IVMRImagePresenterExclModeConfig */ /* [unique][helpstring][uuid][local][object][local] */ EXTERN_C const IID IID_IVMRImagePresenterExclModeConfig; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("e6f7ce40-4673-44f1-8f77-5499d68cb4ea") IVMRImagePresenterExclModeConfig : public IVMRImagePresenterConfig { public: virtual HRESULT STDMETHODCALLTYPE SetXlcModeDDObjAndPrimarySurface( /* [in] */ LPDIRECTDRAW7 lpDDObj, /* [in] */ LPDIRECTDRAWSURFACE7 lpPrimarySurf) = 0; virtual HRESULT STDMETHODCALLTYPE GetXlcModeDDObjAndPrimarySurface( /* [out] */ LPDIRECTDRAW7 *lpDDObj, /* [out] */ LPDIRECTDRAWSURFACE7 *lpPrimarySurf) = 0; }; #else /* C style interface */ typedef struct IVMRImagePresenterExclModeConfigVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IVMRImagePresenterExclModeConfig * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IVMRImagePresenterExclModeConfig * This); ULONG ( STDMETHODCALLTYPE *Release )( IVMRImagePresenterExclModeConfig * This); HRESULT ( STDMETHODCALLTYPE *SetRenderingPrefs )( IVMRImagePresenterExclModeConfig * This, /* [in] */ DWORD dwRenderFlags); HRESULT ( STDMETHODCALLTYPE *GetRenderingPrefs )( IVMRImagePresenterExclModeConfig * This, /* [out] */ DWORD *dwRenderFlags); HRESULT ( STDMETHODCALLTYPE *SetXlcModeDDObjAndPrimarySurface )( IVMRImagePresenterExclModeConfig * This, /* [in] */ LPDIRECTDRAW7 lpDDObj, /* [in] */ LPDIRECTDRAWSURFACE7 lpPrimarySurf); HRESULT ( STDMETHODCALLTYPE *GetXlcModeDDObjAndPrimarySurface )( IVMRImagePresenterExclModeConfig * This, /* [out] */ LPDIRECTDRAW7 *lpDDObj, /* [out] */ LPDIRECTDRAWSURFACE7 *lpPrimarySurf); END_INTERFACE } IVMRImagePresenterExclModeConfigVtbl; interface IVMRImagePresenterExclModeConfig { CONST_VTBL struct IVMRImagePresenterExclModeConfigVtbl *lpVtbl; }; #ifdef COBJMACROS #define IVMRImagePresenterExclModeConfig_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IVMRImagePresenterExclModeConfig_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IVMRImagePresenterExclModeConfig_Release(This) \ (This)->lpVtbl -> Release(This) #define IVMRImagePresenterExclModeConfig_SetRenderingPrefs(This,dwRenderFlags) \ (This)->lpVtbl -> SetRenderingPrefs(This,dwRenderFlags) #define IVMRImagePresenterExclModeConfig_GetRenderingPrefs(This,dwRenderFlags) \ (This)->lpVtbl -> GetRenderingPrefs(This,dwRenderFlags) #define IVMRImagePresenterExclModeConfig_SetXlcModeDDObjAndPrimarySurface(This,lpDDObj,lpPrimarySurf) \ (This)->lpVtbl -> SetXlcModeDDObjAndPrimarySurface(This,lpDDObj,lpPrimarySurf) #define IVMRImagePresenterExclModeConfig_GetXlcModeDDObjAndPrimarySurface(This,lpDDObj,lpPrimarySurf) \ (This)->lpVtbl -> GetXlcModeDDObjAndPrimarySurface(This,lpDDObj,lpPrimarySurf) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IVMRImagePresenterExclModeConfig_SetXlcModeDDObjAndPrimarySurface_Proxy( IVMRImagePresenterExclModeConfig * This, /* [in] */ LPDIRECTDRAW7 lpDDObj, /* [in] */ LPDIRECTDRAWSURFACE7 lpPrimarySurf); void __RPC_STUB IVMRImagePresenterExclModeConfig_SetXlcModeDDObjAndPrimarySurface_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVMRImagePresenterExclModeConfig_GetXlcModeDDObjAndPrimarySurface_Proxy( IVMRImagePresenterExclModeConfig * This, /* [out] */ LPDIRECTDRAW7 *lpDDObj, /* [out] */ LPDIRECTDRAWSURFACE7 *lpPrimarySurf); void __RPC_STUB IVMRImagePresenterExclModeConfig_GetXlcModeDDObjAndPrimarySurface_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IVMRImagePresenterExclModeConfig_INTERFACE_DEFINED__ */ #ifndef __IVPManager_INTERFACE_DEFINED__ #define __IVPManager_INTERFACE_DEFINED__ /* interface IVPManager */ /* [unique][helpstring][uuid][local][object][local] */ EXTERN_C const IID IID_IVPManager; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("aac18c18-e186-46d2-825d-a1f8dc8e395a") IVPManager : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE SetVideoPortIndex( /* [in] */ DWORD dwVideoPortIndex) = 0; virtual HRESULT STDMETHODCALLTYPE GetVideoPortIndex( /* [out] */ DWORD *pdwVideoPortIndex) = 0; }; #else /* C style interface */ typedef struct IVPManagerVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( IVPManager * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( IVPManager * This); ULONG ( STDMETHODCALLTYPE *Release )( IVPManager * This); HRESULT ( STDMETHODCALLTYPE *SetVideoPortIndex )( IVPManager * This, /* [in] */ DWORD dwVideoPortIndex); HRESULT ( STDMETHODCALLTYPE *GetVideoPortIndex )( IVPManager * This, /* [out] */ DWORD *pdwVideoPortIndex); END_INTERFACE } IVPManagerVtbl; interface IVPManager { CONST_VTBL struct IVPManagerVtbl *lpVtbl; }; #ifdef COBJMACROS #define IVPManager_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) #define IVPManager_AddRef(This) \ (This)->lpVtbl -> AddRef(This) #define IVPManager_Release(This) \ (This)->lpVtbl -> Release(This) #define IVPManager_SetVideoPortIndex(This,dwVideoPortIndex) \ (This)->lpVtbl -> SetVideoPortIndex(This,dwVideoPortIndex) #define IVPManager_GetVideoPortIndex(This,pdwVideoPortIndex) \ (This)->lpVtbl -> GetVideoPortIndex(This,pdwVideoPortIndex) #endif /* COBJMACROS */ #endif /* C style interface */ HRESULT STDMETHODCALLTYPE IVPManager_SetVideoPortIndex_Proxy( IVPManager * This, /* [in] */ DWORD dwVideoPortIndex); void __RPC_STUB IVPManager_SetVideoPortIndex_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); HRESULT STDMETHODCALLTYPE IVPManager_GetVideoPortIndex_Proxy( IVPManager * This, /* [out] */ DWORD *pdwVideoPortIndex); void __RPC_STUB IVPManager_GetVideoPortIndex_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase); #endif /* __IVPManager_INTERFACE_DEFINED__ */ /* Additional Prototypes for ALL interfaces */ unsigned long __RPC_USER VARIANT_UserSize( unsigned long *, unsigned long , VARIANT * ); unsigned char * __RPC_USER VARIANT_UserMarshal( unsigned long *, unsigned char *, VARIANT * ); unsigned char * __RPC_USER VARIANT_UserUnmarshal(unsigned long *, unsigned char *, VARIANT * ); void __RPC_USER VARIANT_UserFree( unsigned long *, VARIANT * ); /* [local] */ HRESULT STDMETHODCALLTYPE ICaptureGraphBuilder_FindInterface_Proxy( ICaptureGraphBuilder * This, /* [unique][in] */ const GUID *pCategory, /* [in] */ IBaseFilter *pf, /* [in] */ REFIID riid, /* [out] */ void **ppint); /* [call_as] */ HRESULT STDMETHODCALLTYPE ICaptureGraphBuilder_FindInterface_Stub( ICaptureGraphBuilder * This, /* [unique][in] */ const GUID *pCategory, /* [in] */ IBaseFilter *pf, /* [in] */ REFIID riid, /* [out] */ IUnknown **ppint); /* [local] */ HRESULT STDMETHODCALLTYPE ICaptureGraphBuilder2_FindInterface_Proxy( ICaptureGraphBuilder2 * This, /* [in] */ const GUID *pCategory, /* [in] */ const GUID *pType, /* [in] */ IBaseFilter *pf, /* [in] */ REFIID riid, /* [out] */ void **ppint); /* [call_as] */ HRESULT STDMETHODCALLTYPE ICaptureGraphBuilder2_FindInterface_Stub( ICaptureGraphBuilder2 * This, /* [in] */ const GUID *pCategory, /* [in] */ const GUID *pType, /* [in] */ IBaseFilter *pf, /* [in] */ REFIID riid, /* [out] */ IUnknown **ppint); /* [local] */ HRESULT STDMETHODCALLTYPE IKsPropertySet_Set_Proxy( IKsPropertySet * This, /* [in] */ REFGUID guidPropSet, /* [in] */ DWORD dwPropID, /* [size_is][in] */ LPVOID pInstanceData, /* [in] */ DWORD cbInstanceData, /* [size_is][in] */ LPVOID pPropData, /* [in] */ DWORD cbPropData); /* [call_as] */ HRESULT STDMETHODCALLTYPE IKsPropertySet_Set_Stub( IKsPropertySet * This, /* [in] */ REFGUID guidPropSet, /* [in] */ DWORD dwPropID, /* [size_is][in] */ byte *pInstanceData, /* [in] */ DWORD cbInstanceData, /* [size_is][in] */ byte *pPropData, /* [in] */ DWORD cbPropData); /* [local] */ HRESULT STDMETHODCALLTYPE IKsPropertySet_Get_Proxy( IKsPropertySet * This, /* [in] */ REFGUID guidPropSet, /* [in] */ DWORD dwPropID, /* [size_is][in] */ LPVOID pInstanceData, /* [in] */ DWORD cbInstanceData, /* [size_is][out] */ LPVOID pPropData, /* [in] */ DWORD cbPropData, /* [out] */ DWORD *pcbReturned); /* [call_as] */ HRESULT STDMETHODCALLTYPE IKsPropertySet_Get_Stub( IKsPropertySet * This, /* [in] */ REFGUID guidPropSet, /* [in] */ DWORD dwPropID, /* [size_is][in] */ byte *pInstanceData, /* [in] */ DWORD cbInstanceData, /* [size_is][out] */ byte *pPropData, /* [in] */ DWORD cbPropData, /* [out] */ DWORD *pcbReturned); /* end of Additional Prototypes */ #ifdef __cplusplus } #endif #endif \ No newline at end of file diff --git a/videoInputSrcAndDemos/libs/DShow/Include/strsafe.h b/videoInputSrcAndDemos/libs/DShow/Include/strsafe.h index cc573b4..061b3c4 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/strsafe.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/strsafe.h @@ -1,6611 +1,6611 @@ -/****************************************************************** -* * -* strsafe.h -- This module defines safer C library string * -* routine replacements. These are meant to make C * -* a bit more safe in reference to security and * -* robustness * -* * -* Copyright (c) Microsoft Corp. All rights reserved. * -* * -******************************************************************/ -#ifndef _STRSAFE_H_INCLUDED_ -#define _STRSAFE_H_INCLUDED_ -#pragma once - -#include // for _vsnprintf, _vsnwprintf, getc, getwc -#include // for memset -#include // for va_start, etc. - - -#ifndef _SIZE_T_DEFINED -#ifdef _WIN64 -typedef unsigned __int64 size_t; -#else -typedef __w64 unsigned int size_t; -#endif // !_WIN64 -#define _SIZE_T_DEFINED -#endif // !_SIZE_T_DEFINED - -#if !defined(_WCHAR_T_DEFINED) && !defined(_NATIVE_WCHAR_T_DEFINED) -typedef unsigned short wchar_t; -#define _WCHAR_T_DEFINED -#endif - -#ifndef _HRESULT_DEFINED -#define _HRESULT_DEFINED -typedef long HRESULT; -#endif // !_HRESULT_DEFINED - -#ifndef SUCCEEDED -#define SUCCEEDED(hr) ((HRESULT)(hr) >= 0) -#endif - -#ifndef FAILED -#define FAILED(hr) ((HRESULT)(hr) < 0) -#endif - -#ifndef S_OK -#define S_OK ((HRESULT)0x00000000L) -#endif - -#ifdef __cplusplus -#define _STRSAFE_EXTERN_C extern "C" -#else -#define _STRSAFE_EXTERN_C extern -#endif - -// If you do not want to use these functions inline (and instead want to link w/ strsafe.lib), then -// #define STRSAFE_LIB before including this header file. -#if defined(STRSAFE_LIB) -#define STRSAFEAPI _STRSAFE_EXTERN_C HRESULT __stdcall -#pragma comment(lib, "strsafe.lib") -#elif defined(STRSAFE_LIB_IMPL) -#define STRSAFEAPI _STRSAFE_EXTERN_C HRESULT __stdcall -#else -#define STRSAFEAPI __inline HRESULT __stdcall -#define STRSAFE_INLINE -#endif - -// Some functions always run inline because they use stdin and we want to avoid building multiple -// versions of strsafe lib depending on if you use msvcrt, libcmt, etc. -#define STRSAFE_INLINE_API __inline HRESULT __stdcall - -// The user can request no "Cb" or no "Cch" fuctions, but not both! -#if defined(STRSAFE_NO_CB_FUNCTIONS) && defined(STRSAFE_NO_CCH_FUNCTIONS) -#error cannot specify both STRSAFE_NO_CB_FUNCTIONS and STRSAFE_NO_CCH_FUNCTIONS !! -#endif - -// This should only be defined when we are building strsafe.lib -#ifdef STRSAFE_LIB_IMPL -#define STRSAFE_INLINE -#endif - - -// If both strsafe.h and ntstrsafe.h are included, only use definitions from one. -#ifndef _NTSTRSAFE_H_INCLUDED_ - -#define STRSAFE_MAX_CCH 2147483647 // max # of characters we support (same as INT_MAX) - -// Flags for controling the Ex functions -// -// STRSAFE_FILL_BYTE(0xFF) 0x000000FF // bottom byte specifies fill pattern -#define STRSAFE_IGNORE_NULLS 0x00000100 // treat null as TEXT("") -- don't fault on NULL buffers -#define STRSAFE_FILL_BEHIND_NULL 0x00000200 // fill in extra space behind the null terminator -#define STRSAFE_FILL_ON_FAILURE 0x00000400 // on failure, overwrite pszDest with fill pattern and null terminate it -#define STRSAFE_NULL_ON_FAILURE 0x00000800 // on failure, set *pszDest = TEXT('\0') -#define STRSAFE_NO_TRUNCATION 0x00001000 // instead of returning a truncated result, copy/append nothing to pszDest and null terminate it - -#define STRSAFE_VALID_FLAGS (0x000000FF | STRSAFE_IGNORE_NULLS | STRSAFE_FILL_BEHIND_NULL | STRSAFE_FILL_ON_FAILURE | STRSAFE_NULL_ON_FAILURE | STRSAFE_NO_TRUNCATION) - -// helper macro to set the fill character and specify buffer filling -#define STRSAFE_FILL_BYTE(x) ((unsigned long)((x & 0x000000FF) | STRSAFE_FILL_BEHIND_NULL)) -#define STRSAFE_FAILURE_BYTE(x) ((unsigned long)((x & 0x000000FF) | STRSAFE_FILL_ON_FAILURE)) - -#define STRSAFE_GET_FILL_PATTERN(dwFlags) ((int)(dwFlags & 0x000000FF)) - -#endif // _NTSTRSAFE_H_INCLUDED_ - -// STRSAFE error return codes -// -#define STRSAFE_E_INSUFFICIENT_BUFFER ((HRESULT)0x8007007AL) // 0x7A = 122L = ERROR_INSUFFICIENT_BUFFER -#define STRSAFE_E_INVALID_PARAMETER ((HRESULT)0x80070057L) // 0x57 = 87L = ERROR_INVALID_PARAMETER -#define STRSAFE_E_END_OF_FILE ((HRESULT)0x80070026L) // 0x26 = 38L = ERROR_HANDLE_EOF - -// prototypes for the worker functions -#ifdef STRSAFE_INLINE -STRSAFEAPI StringCopyWorkerA(char* pszDest, size_t cchDest, const char* pszSrc); -STRSAFEAPI StringCopyWorkerW(wchar_t* pszDest, size_t cchDest, const wchar_t* pszSrc); -STRSAFEAPI StringCopyExWorkerA(char* pszDest, size_t cchDest, size_t cbDest, const char* pszSrc, char** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags); -STRSAFEAPI StringCopyExWorkerW(wchar_t* pszDest, size_t cchDest, size_t cbDest, const wchar_t* pszSrc, wchar_t** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags); -STRSAFEAPI StringCopyNWorkerA(char* pszDest, size_t cchDest, const char* pszSrc, size_t cchSrc); -STRSAFEAPI StringCopyNWorkerW(wchar_t* pszDest, size_t cchDest, const wchar_t* pszSrc, size_t cchSrc); -STRSAFEAPI StringCopyNExWorkerA(char* pszDest, size_t cchDest, size_t cbDest, const char* pszSrc, size_t cchSrc, char** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags); -STRSAFEAPI StringCopyNExWorkerW(wchar_t* pszDest, size_t cchDest, size_t cbDest, const wchar_t* pszSrc, size_t cchSrc, wchar_t** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags); -STRSAFEAPI StringCatWorkerA(char* pszDest, size_t cchDest, const char* pszSrc); -STRSAFEAPI StringCatWorkerW(wchar_t* pszDest, size_t cchDest, const wchar_t* pszSrc); -STRSAFEAPI StringCatExWorkerA(char* pszDest, size_t cchDest, size_t cbDest, const char* pszSrc, char** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags); -STRSAFEAPI StringCatExWorkerW(wchar_t* pszDest, size_t cchDest, size_t cbDest, const wchar_t* pszSrc, wchar_t** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags); -STRSAFEAPI StringCatNWorkerA(char* pszDest, size_t cchDest, const char* pszSrc, size_t cchMaxAppend); -STRSAFEAPI StringCatNWorkerW(wchar_t* pszDest, size_t cchDest, const wchar_t* pszSrc, size_t cchMaxAppend); -STRSAFEAPI StringCatNExWorkerA(char* pszDest, size_t cchDest, size_t cbDest, const char* pszSrc, size_t cchMaxAppend, char** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags); -STRSAFEAPI StringCatNExWorkerW(wchar_t* pszDest, size_t cchDest, size_t cbDest, const wchar_t* pszSrc, size_t cchMaxAppend, wchar_t** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags); -STRSAFEAPI StringVPrintfWorkerA(char* pszDest, size_t cchDest, const char* pszFormat, va_list argList); -STRSAFEAPI StringVPrintfWorkerW(wchar_t* pszDest, size_t cchDest, const wchar_t* pszFormat, va_list argList); -STRSAFEAPI StringVPrintfExWorkerA(char* pszDest, size_t cchDest, size_t cbDest, char** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags, const char* pszFormat, va_list argList); -STRSAFEAPI StringVPrintfExWorkerW(wchar_t* pszDest, size_t cchDest, size_t cbDest, wchar_t** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags, const wchar_t* pszFormat, va_list argList); -STRSAFEAPI StringLengthWorkerA(const char* psz, size_t cchMax, size_t* pcch); -STRSAFEAPI StringLengthWorkerW(const wchar_t* psz, size_t cchMax, size_t* pcch); -#endif // STRSAFE_INLINE - -#ifndef STRSAFE_LIB_IMPL -// these functions are always inline -STRSAFE_INLINE_API StringGetsExWorkerA(char* pszDest, size_t cchDest, size_t cbDest, char** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags); -STRSAFE_INLINE_API StringGetsExWorkerW(wchar_t* pszDest, size_t cchDest, size_t cbDest, wchar_t** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags); -#endif - -#ifdef _NTSTRSAFE_H_INCLUDED_ -#pragma warning(push) -#pragma warning(disable : 4995) -#endif // _NTSTRSAFE_H_INCLUDED_ - - -#ifndef STRSAFE_NO_CCH_FUNCTIONS -/*++ - -STDAPI -StringCchCopy( - OUT LPTSTR pszDest, - IN size_t cchDest, - IN LPCTSTR pszSrc - ); - -Routine Description: - - This routine is a safer version of the C built-in function 'strcpy'. - The size of the destination buffer (in characters) is a parameter and - this function will not write past the end of this buffer and it will - ALWAYS null terminate the destination buffer (unless it is zero length). - - This routine is not a replacement for strncpy. That function will pad the - destination string with extra null termination characters if the count is - greater than the length of the source string, and it will fail to null - terminate the destination string if the source string length is greater - than or equal to the count. You can not blindly use this instead of strncpy: - it is common for code to use it to "patch" strings and you would introduce - errors if the code started null terminating in the middle of the string. - - This function returns a hresult, and not a pointer. It returns - S_OK if the string was copied without truncation and null terminated, - otherwise it will return a failure code. In failure cases as much of - pszSrc will be copied to pszDest as possible, and pszDest will be null - terminated. - -Arguments: - - pszDest - destination string - - cchDest - size of destination buffer in characters. - length must be = (_tcslen(src) + 1) to hold all of the - source including the null terminator - - pszSrc - source string which must be null terminated - -Notes: - Behavior is undefined if source and destination strings overlap. - - pszDest and pszSrc should not be NULL. See StringCchCopyEx if you require - the handling of NULL values. - -Return Value: - - S_OK - if there was source data and it was all copied and the - resultant dest string was null terminated - - failure - you can use the macro HRESULT_CODE() to get a win32 - error code for all hresult failure cases - - STRSAFE_E_INSUFFICIENT_BUFFER / - HRESULT_CODE(hr) == ERROR_INSUFFICIENT_BUFFER - - this return value is an indication that the copy - operation failed due to insufficient space. When this - error occurs, the destination buffer is modified to - contain a truncated version of the ideal result and is - null terminated. This is useful for situations where - truncation is ok - - It is strongly recommended to use the SUCCEEDED() / FAILED() macros to test the - return value of this function. - ---*/ - -STRSAFEAPI StringCchCopyA(char* pszDest, size_t cchDest, const char* pszSrc); -STRSAFEAPI StringCchCopyW(wchar_t* pszDest, size_t cchDest, const wchar_t* pszSrc); -#ifdef UNICODE -#define StringCchCopy StringCchCopyW -#else -#define StringCchCopy StringCchCopyA -#endif // !UNICODE - -#ifdef STRSAFE_INLINE -STRSAFEAPI StringCchCopyA(char* pszDest, size_t cchDest, const char* pszSrc) -{ - HRESULT hr; - - if (cchDest > STRSAFE_MAX_CCH) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - hr = StringCopyWorkerA(pszDest, cchDest, pszSrc); - } - - return hr; -} - -STRSAFEAPI StringCchCopyW(wchar_t* pszDest, size_t cchDest, const wchar_t* pszSrc) -{ - HRESULT hr; - - if (cchDest > STRSAFE_MAX_CCH) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - hr = StringCopyWorkerW(pszDest, cchDest, pszSrc); - } - - return hr; -} -#endif // STRSAFE_INLINE -#endif // !STRSAFE_NO_CCH_FUNCTIONS - - -#ifndef STRSAFE_NO_CB_FUNCTIONS -/*++ - -STDAPI -StringCbCopy( - OUT LPTSTR pszDest, - IN size_t cbDest, - IN LPCTSTR pszSrc - ); - -Routine Description: - - This routine is a safer version of the C built-in function 'strcpy'. - The size of the destination buffer (in bytes) is a parameter and this - function will not write past the end of this buffer and it will ALWAYS - null terminate the destination buffer (unless it is zero length). - - This routine is not a replacement for strncpy. That function will pad the - destination string with extra null termination characters if the count is - greater than the length of the source string, and it will fail to null - terminate the destination string if the source string length is greater - than or equal to the count. You can not blindly use this instead of strncpy: - it is common for code to use it to "patch" strings and you would introduce - errors if the code started null terminating in the middle of the string. - - This function returns a hresult, and not a pointer. It returns - S_OK if the string was copied without truncation and null terminated, - otherwise it will return a failure code. In failure cases as much of pszSrc - will be copied to pszDest as possible, and pszDest will be null terminated. - -Arguments: - - pszDest - destination string - - cbDest - size of destination buffer in bytes. - length must be = ((_tcslen(src) + 1) * sizeof(TCHAR)) to - hold all of the source including the null terminator - - pszSrc - source string which must be null terminated - -Notes: - Behavior is undefined if source and destination strings overlap. - - pszDest and pszSrc should not be NULL. See StringCbCopyEx if you require - the handling of NULL values. - -Return Value: - - S_OK - if there was source data and it was all copied and the - resultant dest string was null terminated - - failure - you can use the macro HRESULT_CODE() to get a win32 - error code for all hresult failure cases - - STRSAFE_E_INSUFFICIENT_BUFFER / - HRESULT_CODE(hr) == ERROR_INSUFFICIENT_BUFFER - - this return value is an indication that the copy - operation failed due to insufficient space. When this - error occurs, the destination buffer is modified to - contain a truncated version of the ideal result and is - null terminated. This is useful for situations where - truncation is ok - - It is strongly recommended to use the SUCCEEDED() / FAILED() macros to test the - return value of this function. - ---*/ - -STRSAFEAPI StringCbCopyA(char* pszDest, size_t cbDest, const char* pszSrc); -STRSAFEAPI StringCbCopyW(wchar_t* pszDest, size_t cbDest, const wchar_t* pszSrc); -#ifdef UNICODE -#define StringCbCopy StringCbCopyW -#else -#define StringCbCopy StringCbCopyA -#endif // !UNICODE - -#ifdef STRSAFE_INLINE -STRSAFEAPI StringCbCopyA(char* pszDest, size_t cbDest, const char* pszSrc) -{ - HRESULT hr; - size_t cchDest; - - // convert to count of characters - cchDest = cbDest / sizeof(char); - - if (cchDest > STRSAFE_MAX_CCH) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - hr = StringCopyWorkerA(pszDest, cchDest, pszSrc); - } - - return hr; -} - -STRSAFEAPI StringCbCopyW(wchar_t* pszDest, size_t cbDest, const wchar_t* pszSrc) -{ - HRESULT hr; - size_t cchDest; - - // convert to count of characters - cchDest = cbDest / sizeof(wchar_t); - - if (cchDest > STRSAFE_MAX_CCH) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - hr = StringCopyWorkerW(pszDest, cchDest, pszSrc); - } - - return hr; -} -#endif // STRSAFE_INLINE -#endif // !STRSAFE_NO_CB_FUNCTIONS - - -#ifndef STRSAFE_NO_CCH_FUNCTIONS -/*++ - -STDAPI -StringCchCopyEx( - OUT LPTSTR pszDest OPTIONAL, - IN size_t cchDest, - IN LPCTSTR pszSrc OPTIONAL, - OUT LPTSTR* ppszDestEnd OPTIONAL, - OUT size_t* pcchRemaining OPTIONAL, - IN DWORD dwFlags - ); - -Routine Description: - - This routine is a safer version of the C built-in function 'strcpy' with - some additional parameters. In addition to functionality provided by - StringCchCopy, this routine also returns a pointer to the end of the - destination string and the number of characters left in the destination string - including the null terminator. The flags parameter allows additional controls. - -Arguments: - - pszDest - destination string - - cchDest - size of destination buffer in characters. - length must be = (_tcslen(pszSrc) + 1) to hold all of - the source including the null terminator - - pszSrc - source string which must be null terminated - - ppszDestEnd - if ppszDestEnd is non-null, the function will return a - pointer to the end of the destination string. If the - function copied any data, the result will point to the - null termination character - - pcchRemaining - if pcchRemaining is non-null, the function will return the - number of characters left in the destination string, - including the null terminator - - dwFlags - controls some details of the string copy: - - STRSAFE_FILL_BEHIND_NULL - if the function succeeds, the low byte of dwFlags will be - used to fill the uninitialize part of destination buffer - behind the null terminator - - STRSAFE_IGNORE_NULLS - treat NULL string pointers like empty strings (TEXT("")). - this flag is useful for emulating functions like lstrcpy - - STRSAFE_FILL_ON_FAILURE - if the function fails, the low byte of dwFlags will be - used to fill all of the destination buffer, and it will - be null terminated. This will overwrite any truncated - string returned when the failure is - STRSAFE_E_INSUFFICIENT_BUFFER - - STRSAFE_NO_TRUNCATION / - STRSAFE_NULL_ON_FAILURE - if the function fails, the destination buffer will be set - to the empty string. This will overwrite any truncated string - returned when the failure is STRSAFE_E_INSUFFICIENT_BUFFER. - -Notes: - Behavior is undefined if source and destination strings overlap. - - pszDest and pszSrc should not be NULL unless the STRSAFE_IGNORE_NULLS flag - is specified. If STRSAFE_IGNORE_NULLS is passed, both pszDest and pszSrc - may be NULL. An error may still be returned even though NULLS are ignored - due to insufficient space. - -Return Value: - - S_OK - if there was source data and it was all copied and the - resultant dest string was null terminated - - failure - you can use the macro HRESULT_CODE() to get a win32 - error code for all hresult failure cases - - STRSAFE_E_INSUFFICIENT_BUFFER / - HRESULT_CODE(hr) == ERROR_INSUFFICIENT_BUFFER - - this return value is an indication that the copy - operation failed due to insufficient space. When this - error occurs, the destination buffer is modified to - contain a truncated version of the ideal result and is - null terminated. This is useful for situations where - truncation is ok. - - It is strongly recommended to use the SUCCEEDED() / FAILED() macros to test the - return value of this function - ---*/ - -STRSAFEAPI StringCchCopyExA(char* pszDest, size_t cchDest, const char* pszSrc, char** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags); -STRSAFEAPI StringCchCopyExW(wchar_t* pszDest, size_t cchDest, const wchar_t* pszSrc, wchar_t** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags); -#ifdef UNICODE -#define StringCchCopyEx StringCchCopyExW -#else -#define StringCchCopyEx StringCchCopyExA -#endif // !UNICODE - -#ifdef STRSAFE_INLINE -STRSAFEAPI StringCchCopyExA(char* pszDest, size_t cchDest, const char* pszSrc, char** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags) -{ - HRESULT hr; - - if (cchDest > STRSAFE_MAX_CCH) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - size_t cbDest; - - // safe to multiply cchDest * sizeof(char) since cchDest < STRSAFE_MAX_CCH and sizeof(char) is 1 - cbDest = cchDest * sizeof(char); - - hr = StringCopyExWorkerA(pszDest, cchDest, cbDest, pszSrc, ppszDestEnd, pcchRemaining, dwFlags); - } - - return hr; -} - -STRSAFEAPI StringCchCopyExW(wchar_t* pszDest, size_t cchDest, const wchar_t* pszSrc, wchar_t** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags) -{ - HRESULT hr; - - if (cchDest > STRSAFE_MAX_CCH) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - size_t cbDest; - - // safe to multiply cchDest * sizeof(wchar_t) since cchDest < STRSAFE_MAX_CCH and sizeof(wchar_t) is 2 - cbDest = cchDest * sizeof(wchar_t); - - hr = StringCopyExWorkerW(pszDest, cchDest, cbDest, pszSrc, ppszDestEnd, pcchRemaining, dwFlags); - } - - return hr; -} -#endif // STRSAFE_INLINE -#endif // !STRSAFE_NO_CCH_FUNCTIONS - - -#ifndef STRSAFE_NO_CB_FUNCTIONS -/*++ - -STDAPI -StringCbCopyEx( - OUT LPTSTR pszDest OPTIONAL, - IN size_t cbDest, - IN LPCTSTR pszSrc OPTIONAL, - OUT LPTSTR* ppszDestEnd OPTIONAL, - OUT size_t* pcbRemaining OPTIONAL, - IN DWORD dwFlags - ); - -Routine Description: - - This routine is a safer version of the C built-in function 'strcpy' with - some additional parameters. In addition to functionality provided by - StringCbCopy, this routine also returns a pointer to the end of the - destination string and the number of bytes left in the destination string - including the null terminator. The flags parameter allows additional controls. - -Arguments: - - pszDest - destination string - - cbDest - size of destination buffer in bytes. - length must be ((_tcslen(pszSrc) + 1) * sizeof(TCHAR)) to - hold all of the source including the null terminator - - pszSrc - source string which must be null terminated - - ppszDestEnd - if ppszDestEnd is non-null, the function will return a - pointer to the end of the destination string. If the - function copied any data, the result will point to the - null termination character - - pcbRemaining - pcbRemaining is non-null,the function will return the - number of bytes left in the destination string, - including the null terminator - - dwFlags - controls some details of the string copy: - - STRSAFE_FILL_BEHIND_NULL - if the function succeeds, the low byte of dwFlags will be - used to fill the uninitialize part of destination buffer - behind the null terminator - - STRSAFE_IGNORE_NULLS - treat NULL string pointers like empty strings (TEXT("")). - this flag is useful for emulating functions like lstrcpy - - STRSAFE_FILL_ON_FAILURE - if the function fails, the low byte of dwFlags will be - used to fill all of the destination buffer, and it will - be null terminated. This will overwrite any truncated - string returned when the failure is - STRSAFE_E_INSUFFICIENT_BUFFER - - STRSAFE_NO_TRUNCATION / - STRSAFE_NULL_ON_FAILURE - if the function fails, the destination buffer will be set - to the empty string. This will overwrite any truncated string - returned when the failure is STRSAFE_E_INSUFFICIENT_BUFFER. - -Notes: - Behavior is undefined if source and destination strings overlap. - - pszDest and pszSrc should not be NULL unless the STRSAFE_IGNORE_NULLS flag - is specified. If STRSAFE_IGNORE_NULLS is passed, both pszDest and pszSrc - may be NULL. An error may still be returned even though NULLS are ignored - due to insufficient space. - -Return Value: - - S_OK - if there was source data and it was all copied and the - resultant dest string was null terminated - - failure - you can use the macro HRESULT_CODE() to get a win32 - error code for all hresult failure cases - - STRSAFE_E_INSUFFICIENT_BUFFER / - HRESULT_CODE(hr) == ERROR_INSUFFICIENT_BUFFER - - this return value is an indication that the copy - operation failed due to insufficient space. When this - error occurs, the destination buffer is modified to - contain a truncated version of the ideal result and is - null terminated. This is useful for situations where - truncation is ok. - - It is strongly recommended to use the SUCCEEDED() / FAILED() macros to test the - return value of this function - ---*/ - -STRSAFEAPI StringCbCopyExA(char* pszDest, size_t cbDest, const char* pszSrc, char** ppszDestEnd, size_t* pcbRemaining, unsigned long dwFlags); -STRSAFEAPI StringCbCopyExW(wchar_t* pszDest, size_t cbDest, const wchar_t* pszSrc, wchar_t** ppszDestEnd, size_t* pcbRemaining, unsigned long dwFlags); -#ifdef UNICODE -#define StringCbCopyEx StringCbCopyExW -#else -#define StringCbCopyEx StringCbCopyExA -#endif // !UNICODE - -#ifdef STRSAFE_INLINE -STRSAFEAPI StringCbCopyExA(char* pszDest, size_t cbDest, const char* pszSrc, char** ppszDestEnd, size_t* pcbRemaining, unsigned long dwFlags) -{ - HRESULT hr; - size_t cchDest; - size_t cchRemaining = 0; - - cchDest = cbDest / sizeof(char); - - if (cchDest > STRSAFE_MAX_CCH) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - hr = StringCopyExWorkerA(pszDest, cchDest, cbDest, pszSrc, ppszDestEnd, &cchRemaining, dwFlags); - } - - if (SUCCEEDED(hr) || (hr == STRSAFE_E_INSUFFICIENT_BUFFER)) - { - if (pcbRemaining) - { - // safe to multiply cchRemaining * sizeof(char) since cchRemaining < STRSAFE_MAX_CCH and sizeof(char) is 1 - *pcbRemaining = (cchRemaining * sizeof(char)) + (cbDest % sizeof(char)); - } - } - - return hr; -} - -STRSAFEAPI StringCbCopyExW(wchar_t* pszDest, size_t cbDest, const wchar_t* pszSrc, wchar_t** ppszDestEnd, size_t* pcbRemaining, unsigned long dwFlags) -{ - HRESULT hr; - size_t cchDest; - size_t cchRemaining = 0; - - cchDest = cbDest / sizeof(wchar_t); - - if (cchDest > STRSAFE_MAX_CCH) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - hr = StringCopyExWorkerW(pszDest, cchDest, cbDest, pszSrc, ppszDestEnd, &cchRemaining, dwFlags); - } - - if (SUCCEEDED(hr) || (hr == STRSAFE_E_INSUFFICIENT_BUFFER)) - { - if (pcbRemaining) - { - // safe to multiply cchRemaining * sizeof(wchar_t) since cchRemaining < STRSAFE_MAX_CCH and sizeof(wchar_t) is 2 - *pcbRemaining = (cchRemaining * sizeof(wchar_t)) + (cbDest % sizeof(wchar_t)); - } - } - - return hr; -} -#endif // STRSAFE_INLINE -#endif // !STRSAFE_NO_CB_FUNCTIONS - - -#ifndef STRSAFE_NO_CCH_FUNCTIONS -/*++ - -STDAPI -StringCchCopyN( - OUT LPTSTR pszDest, - IN size_t cchDest, - IN LPCTSTR pszSrc, - IN size_t cchSrc - ); - -Routine Description: - - This routine is a safer version of the C built-in function 'strncpy'. - The size of the destination buffer (in characters) is a parameter and - this function will not write past the end of this buffer and it will - ALWAYS null terminate the destination buffer (unless it is zero length). - - This routine is meant as a replacement for strncpy, but it does behave - differently. This function will not pad the destination buffer with extra - null termination characters if cchSrc is greater than the length of pszSrc. - - This function returns a hresult, and not a pointer. It returns - S_OK if the entire string or the first cchSrc characters were copied - without truncation and the resultant destination string was null terminated, - otherwise it will return a failure code. In failure cases as much of pszSrc - will be copied to pszDest as possible, and pszDest will be null terminated. - -Arguments: - - pszDest - destination string - - cchDest - size of destination buffer in characters. - length must be = (_tcslen(src) + 1) to hold all of the - source including the null terminator - - pszSrc - source string - - cchSrc - maximum number of characters to copy from source string, - not including the null terminator. - -Notes: - Behavior is undefined if source and destination strings overlap. - - pszDest and pszSrc should not be NULL. See StringCchCopyNEx if you require - the handling of NULL values. - -Return Value: - - S_OK - if there was source data and it was all copied and the - resultant dest string was null terminated - - failure - you can use the macro HRESULT_CODE() to get a win32 - error code for all hresult failure cases - - STRSAFE_E_INSUFFICIENT_BUFFER / - HRESULT_CODE(hr) == ERROR_INSUFFICIENT_BUFFER - - this return value is an indication that the copy - operation failed due to insufficient space. When this - error occurs, the destination buffer is modified to - contain a truncated version of the ideal result and is - null terminated. This is useful for situations where - truncation is ok - - It is strongly recommended to use the SUCCEEDED() / FAILED() macros to test the - return value of this function. - ---*/ - -STRSAFEAPI StringCchCopyNA(char* pszDest, size_t cchDest, const char* pszSrc, size_t cchSrc); -STRSAFEAPI StringCchCopyNW(wchar_t* pszDest, size_t cchDest, const wchar_t* pszSrc, size_t cchSrc); -#ifdef UNICODE -#define StringCchCopyN StringCchCopyNW -#else -#define StringCchCopyN StringCchCopyNA -#endif // !UNICODE - -#ifdef STRSAFE_INLINE -STRSAFEAPI StringCchCopyNA(char* pszDest, size_t cchDest, const char* pszSrc, size_t cchSrc) -{ - HRESULT hr; - - if ((cchDest > STRSAFE_MAX_CCH) || - (cchSrc > STRSAFE_MAX_CCH)) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - hr = StringCopyNWorkerA(pszDest, cchDest, pszSrc, cchSrc); - } - - return hr; -} - -STRSAFEAPI StringCchCopyNW(wchar_t* pszDest, size_t cchDest, const wchar_t* pszSrc, size_t cchSrc) -{ - HRESULT hr; - - if ((cchDest > STRSAFE_MAX_CCH) || - (cchSrc > STRSAFE_MAX_CCH)) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - hr = StringCopyNWorkerW(pszDest, cchDest, pszSrc, cchSrc); - } - - return hr; -} -#endif // STRSAFE_INLINE -#endif // !STRSAFE_NO_CCH_FUNCTIONS - - -#ifndef STRSAFE_NO_CB_FUNCTIONS -/*++ - -STDAPI -StringCbCopyN( - OUT LPTSTR pszDest, - IN size_t cbDest, - IN LPCTSTR pszSrc, - IN size_t cbSrc - ); - -Routine Description: - - This routine is a safer version of the C built-in function 'strncpy'. - The size of the destination buffer (in bytes) is a parameter and this - function will not write past the end of this buffer and it will ALWAYS - null terminate the destination buffer (unless it is zero length). - - This routine is meant as a replacement for strncpy, but it does behave - differently. This function will not pad the destination buffer with extra - null termination characters if cbSrc is greater than the size of pszSrc. - - This function returns a hresult, and not a pointer. It returns - S_OK if the entire string or the first cbSrc characters were - copied without truncation and the resultant destination string was null - terminated, otherwise it will return a failure code. In failure cases as - much of pszSrc will be copied to pszDest as possible, and pszDest will be - null terminated. - -Arguments: - - pszDest - destination string - - cbDest - size of destination buffer in bytes. - length must be = ((_tcslen(src) + 1) * sizeof(TCHAR)) to - hold all of the source including the null terminator - - pszSrc - source string - - cbSrc - maximum number of bytes to copy from source string, - not including the null terminator. - -Notes: - Behavior is undefined if source and destination strings overlap. - - pszDest and pszSrc should not be NULL. See StringCbCopyEx if you require - the handling of NULL values. - -Return Value: - - S_OK - if there was source data and it was all copied and the - resultant dest string was null terminated - - failure - you can use the macro HRESULT_CODE() to get a win32 - error code for all hresult failure cases - - STRSAFE_E_INSUFFICIENT_BUFFER / - HRESULT_CODE(hr) == ERROR_INSUFFICIENT_BUFFER - - this return value is an indication that the copy - operation failed due to insufficient space. When this - error occurs, the destination buffer is modified to - contain a truncated version of the ideal result and is - null terminated. This is useful for situations where - truncation is ok - - It is strongly recommended to use the SUCCEEDED() / FAILED() macros to test the - return value of this function. - ---*/ - -STRSAFEAPI StringCbCopyNA(char* pszDest, size_t cbDest, const char* pszSrc, size_t cbSrc); -STRSAFEAPI StringCbCopyNW(wchar_t* pszDest, size_t cbDest, const wchar_t* pszSrc, size_t cbSrc); -#ifdef UNICODE -#define StringCbCopyN StringCbCopyNW -#else -#define StringCbCopyN StringCbCopyNA -#endif // !UNICODE - -#ifdef STRSAFE_INLINE -STRSAFEAPI StringCbCopyNA(char* pszDest, size_t cbDest, const char* pszSrc, size_t cbSrc) -{ - HRESULT hr; - size_t cchDest; - size_t cchSrc; - - // convert to count of characters - cchDest = cbDest / sizeof(char); - cchSrc = cbSrc / sizeof(char); - - if ((cchDest > STRSAFE_MAX_CCH) || - (cchSrc > STRSAFE_MAX_CCH)) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - hr = StringCopyNWorkerA(pszDest, cchDest, pszSrc, cchSrc); - } - - return hr; -} - -STRSAFEAPI StringCbCopyNW(wchar_t* pszDest, size_t cbDest, const wchar_t* pszSrc, size_t cbSrc) -{ - HRESULT hr; - size_t cchDest; - size_t cchSrc; - - // convert to count of characters - cchDest = cbDest / sizeof(wchar_t); - cchSrc = cbSrc / sizeof(wchar_t); - - if ((cchDest > STRSAFE_MAX_CCH) || - (cchSrc > STRSAFE_MAX_CCH)) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - hr = StringCopyNWorkerW(pszDest, cchDest, pszSrc, cchSrc); - } - - return hr; -} -#endif // STRSAFE_INLINE -#endif // !STRSAFE_NO_CB_FUNCTIONS - - -#ifndef STRSAFE_NO_CCH_FUNCTIONS -/*++ - -STDAPI -StringCchCopyNEx( - OUT LPTSTR pszDest OPTIONAL, - IN size_t cchDest, - IN LPCTSTR pszSrc OPTIONAL, - IN size_t cchSrc, - OUT LPTSTR* ppszDestEnd OPTIONAL, - OUT size_t* pcchRemaining OPTIONAL, - IN DWORD dwFlags - ); - -Routine Description: - - This routine is a safer version of the C built-in function 'strncpy' with - some additional parameters. In addition to functionality provided by - StringCchCopyN, this routine also returns a pointer to the end of the - destination string and the number of characters left in the destination - string including the null terminator. The flags parameter allows - additional controls. - - This routine is meant as a replacement for strncpy, but it does behave - differently. This function will not pad the destination buffer with extra - null termination characters if cchSrc is greater than the length of pszSrc. - -Arguments: - - pszDest - destination string - - cchDest - size of destination buffer in characters. - length must be = (_tcslen(pszSrc) + 1) to hold all of - the source including the null terminator - - pszSrc - source string - - cchSrc - maximum number of characters to copy from the source - string - - ppszDestEnd - if ppszDestEnd is non-null, the function will return a - pointer to the end of the destination string. If the - function copied any data, the result will point to the - null termination character - - pcchRemaining - if pcchRemaining is non-null, the function will return the - number of characters left in the destination string, - including the null terminator - - dwFlags - controls some details of the string copy: - - STRSAFE_FILL_BEHIND_NULL - if the function succeeds, the low byte of dwFlags will be - used to fill the uninitialize part of destination buffer - behind the null terminator - - STRSAFE_IGNORE_NULLS - treat NULL string pointers like empty strings (TEXT("")). - this flag is useful for emulating functions like lstrcpy - - STRSAFE_FILL_ON_FAILURE - if the function fails, the low byte of dwFlags will be - used to fill all of the destination buffer, and it will - be null terminated. This will overwrite any truncated - string returned when the failure is - STRSAFE_E_INSUFFICIENT_BUFFER - - STRSAFE_NO_TRUNCATION / - STRSAFE_NULL_ON_FAILURE - if the function fails, the destination buffer will be set - to the empty string. This will overwrite any truncated string - returned when the failure is STRSAFE_E_INSUFFICIENT_BUFFER. - -Notes: - Behavior is undefined if source and destination strings overlap. - - pszDest and pszSrc should not be NULL unless the STRSAFE_IGNORE_NULLS flag - is specified. If STRSAFE_IGNORE_NULLS is passed, both pszDest and pszSrc - may be NULL. An error may still be returned even though NULLS are ignored - due to insufficient space. - -Return Value: - - S_OK - if there was source data and it was all copied and the - resultant dest string was null terminated - - failure - you can use the macro HRESULT_CODE() to get a win32 - error code for all hresult failure cases - - STRSAFE_E_INSUFFICIENT_BUFFER / - HRESULT_CODE(hr) == ERROR_INSUFFICIENT_BUFFER - - this return value is an indication that the copy - operation failed due to insufficient space. When this - error occurs, the destination buffer is modified to - contain a truncated version of the ideal result and is - null terminated. This is useful for situations where - truncation is ok. - - It is strongly recommended to use the SUCCEEDED() / FAILED() macros to test the - return value of this function - ---*/ - -STRSAFEAPI StringCchCopyNExA(char* pszDest, size_t cchDest, const char* pszSrc, size_t cchSrc, char** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags); -STRSAFEAPI StringCchCopyNExW(wchar_t* pszDest, size_t cchDest, const wchar_t* pszSrc, size_t cchSrc, wchar_t** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags); -#ifdef UNICODE -#define StringCchCopyNEx StringCchCopyNExW -#else -#define StringCchCopyNEx StringCchCopyNExA -#endif // !UNICODE - -#ifdef STRSAFE_INLINE -STRSAFEAPI StringCchCopyNExA(char* pszDest, size_t cchDest, const char* pszSrc, size_t cchSrc, char** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags) -{ - HRESULT hr; - - if ((cchDest > STRSAFE_MAX_CCH) || - (cchSrc > STRSAFE_MAX_CCH)) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - size_t cbDest; - - // safe to multiply cchDest * sizeof(char) since cchDest < STRSAFE_MAX_CCH and sizeof(char) is 1 - cbDest = cchDest * sizeof(char); - - hr = StringCopyNExWorkerA(pszDest, cchDest, cbDest, pszSrc, cchSrc, ppszDestEnd, pcchRemaining, dwFlags); - } - - return hr; -} - -STRSAFEAPI StringCchCopyNExW(wchar_t* pszDest, size_t cchDest, const wchar_t* pszSrc, size_t cchSrc, wchar_t** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags) -{ - HRESULT hr; - - if ((cchDest > STRSAFE_MAX_CCH) || - (cchSrc > STRSAFE_MAX_CCH)) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - size_t cbDest; - - // safe to multiply cchDest * sizeof(wchar_t) since cchDest < STRSAFE_MAX_CCH and sizeof(wchar_t) is 2 - cbDest = cchDest * sizeof(wchar_t); - - hr = StringCopyNExWorkerW(pszDest, cchDest, cbDest, pszSrc, cchSrc, ppszDestEnd, pcchRemaining, dwFlags); - } - - return hr; -} -#endif // STRSAFE_INLINE -#endif // !STRSAFE_NO_CCH_FUNCTIONS - - -#ifndef STRSAFE_NO_CB_FUNCTIONS -/*++ - -STDAPI -StringCbCopyNEx( - OUT LPTSTR pszDest OPTIONAL, - IN size_t cbDest, - IN LPCTSTR pszSrc OPTIONAL, - IN size_t cbSrc, - OUT LPTSTR* ppszDestEnd OPTIONAL, - OUT size_t* pcbRemaining OPTIONAL, - IN DWORD dwFlags - ); - -Routine Description: - - This routine is a safer version of the C built-in function 'strncpy' with - some additional parameters. In addition to functionality provided by - StringCbCopyN, this routine also returns a pointer to the end of the - destination string and the number of bytes left in the destination string - including the null terminator. The flags parameter allows additional controls. - - This routine is meant as a replacement for strncpy, but it does behave - differently. This function will not pad the destination buffer with extra - null termination characters if cbSrc is greater than the size of pszSrc. - -Arguments: - - pszDest - destination string - - cbDest - size of destination buffer in bytes. - length must be ((_tcslen(pszSrc) + 1) * sizeof(TCHAR)) to - hold all of the source including the null terminator - - pszSrc - source string - - cbSrc - maximum number of bytes to copy from source string - - ppszDestEnd - if ppszDestEnd is non-null, the function will return a - pointer to the end of the destination string. If the - function copied any data, the result will point to the - null termination character - - pcbRemaining - pcbRemaining is non-null,the function will return the - number of bytes left in the destination string, - including the null terminator - - dwFlags - controls some details of the string copy: - - STRSAFE_FILL_BEHIND_NULL - if the function succeeds, the low byte of dwFlags will be - used to fill the uninitialize part of destination buffer - behind the null terminator - - STRSAFE_IGNORE_NULLS - treat NULL string pointers like empty strings (TEXT("")). - this flag is useful for emulating functions like lstrcpy - - STRSAFE_FILL_ON_FAILURE - if the function fails, the low byte of dwFlags will be - used to fill all of the destination buffer, and it will - be null terminated. This will overwrite any truncated - string returned when the failure is - STRSAFE_E_INSUFFICIENT_BUFFER - - STRSAFE_NO_TRUNCATION / - STRSAFE_NULL_ON_FAILURE - if the function fails, the destination buffer will be set - to the empty string. This will overwrite any truncated string - returned when the failure is STRSAFE_E_INSUFFICIENT_BUFFER. - -Notes: - Behavior is undefined if source and destination strings overlap. - - pszDest and pszSrc should not be NULL unless the STRSAFE_IGNORE_NULLS flag - is specified. If STRSAFE_IGNORE_NULLS is passed, both pszDest and pszSrc - may be NULL. An error may still be returned even though NULLS are ignored - due to insufficient space. - -Return Value: - - S_OK - if there was source data and it was all copied and the - resultant dest string was null terminated - - failure - you can use the macro HRESULT_CODE() to get a win32 - error code for all hresult failure cases - - STRSAFE_E_INSUFFICIENT_BUFFER / - HRESULT_CODE(hr) == ERROR_INSUFFICIENT_BUFFER - - this return value is an indication that the copy - operation failed due to insufficient space. When this - error occurs, the destination buffer is modified to - contain a truncated version of the ideal result and is - null terminated. This is useful for situations where - truncation is ok. - - It is strongly recommended to use the SUCCEEDED() / FAILED() macros to test the - return value of this function - ---*/ - -STRSAFEAPI StringCbCopyNExA(char* pszDest, size_t cbDest, const char* pszSrc, size_t cbSrc, char** ppszDestEnd, size_t* pcbRemaining, unsigned long dwFlags); -STRSAFEAPI StringCbCopyNExW(wchar_t* pszDest, size_t cbDest, const wchar_t* pszSrc, size_t cbSrc, wchar_t** ppszDestEnd, size_t* pcbRemaining, unsigned long dwFlags); -#ifdef UNICODE -#define StringCbCopyNEx StringCbCopyNExW -#else -#define StringCbCopyNEx StringCbCopyNExA -#endif // !UNICODE - -#ifdef STRSAFE_INLINE -STRSAFEAPI StringCbCopyNExA(char* pszDest, size_t cbDest, const char* pszSrc, size_t cbSrc, char** ppszDestEnd, size_t* pcbRemaining, unsigned long dwFlags) -{ - HRESULT hr; - size_t cchDest; - size_t cchSrc; - size_t cchRemaining = 0; - - cchDest = cbDest / sizeof(char); - cchSrc = cbSrc / sizeof(char); - - if ((cchDest > STRSAFE_MAX_CCH) || - (cchSrc > STRSAFE_MAX_CCH)) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - hr = StringCopyNExWorkerA(pszDest, cchDest, cbDest, pszSrc, cchSrc, ppszDestEnd, &cchRemaining, dwFlags); - } - - if (SUCCEEDED(hr) || (hr == STRSAFE_E_INSUFFICIENT_BUFFER)) - { - if (pcbRemaining) - { - // safe to multiply cchRemaining * sizeof(char) since cchRemaining < STRSAFE_MAX_CCH and sizeof(char) is 1 - *pcbRemaining = (cchRemaining * sizeof(char)) + (cbDest % sizeof(char)); - } - } - - return hr; -} - -STRSAFEAPI StringCbCopyNExW(wchar_t* pszDest, size_t cbDest, const wchar_t* pszSrc, size_t cbSrc, wchar_t** ppszDestEnd, size_t* pcbRemaining, unsigned long dwFlags) -{ - HRESULT hr; - size_t cchDest; - size_t cchSrc; - size_t cchRemaining = 0; - - cchDest = cbDest / sizeof(wchar_t); - cchSrc = cbSrc / sizeof(wchar_t); - - if ((cchDest > STRSAFE_MAX_CCH) || - (cchSrc > STRSAFE_MAX_CCH)) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - hr = StringCopyNExWorkerW(pszDest, cchDest, cbDest, pszSrc, cchSrc, ppszDestEnd, &cchRemaining, dwFlags); - } - - if (SUCCEEDED(hr) || (hr == STRSAFE_E_INSUFFICIENT_BUFFER)) - { - if (pcbRemaining) - { - // safe to multiply cchRemaining * sizeof(wchar_t) since cchRemaining < STRSAFE_MAX_CCH and sizeof(wchar_t) is 2 - *pcbRemaining = (cchRemaining * sizeof(wchar_t)) + (cbDest % sizeof(wchar_t)); - } - } - - return hr; -} -#endif // STRSAFE_INLINE -#endif // !STRSAFE_NO_CB_FUNCTIONS - - -#ifndef STRSAFE_NO_CCH_FUNCTIONS -/*++ - -STDAPI -StringCchCat( - IN OUT LPTSTR pszDest, - IN size_t cchDest, - IN LPCTSTR pszSrc - ); - -Routine Description: - - This routine is a safer version of the C built-in function 'strcat'. - The size of the destination buffer (in characters) is a parameter and this - function will not write past the end of this buffer and it will ALWAYS - null terminate the destination buffer (unless it is zero length). - - This function returns a hresult, and not a pointer. It returns - S_OK if the string was concatenated without truncation and null terminated, - otherwise it will return a failure code. In failure cases as much of pszSrc - will be appended to pszDest as possible, and pszDest will be null - terminated. - -Arguments: - - pszDest - destination string which must be null terminated - - cchDest - size of destination buffer in characters. - length must be = (_tcslen(pszDest) + _tcslen(pszSrc) + 1) - to hold all of the combine string plus the null - terminator - - pszSrc - source string which must be null terminated - -Notes: - Behavior is undefined if source and destination strings overlap. - - pszDest and pszSrc should not be NULL. See StringCchCatEx if you require - the handling of NULL values. - -Return Value: - - S_OK - if there was source data and it was all concatenated and - the resultant dest string was null terminated - - failure - you can use the macro HRESULT_CODE() to get a win32 - error code for all hresult failure cases - - STRSAFE_E_INSUFFICIENT_BUFFER / - HRESULT_CODE(hr) == ERROR_INSUFFICIENT_BUFFER - - this return value is an indication that the operation - failed due to insufficient space. When this error occurs, - the destination buffer is modified to contain a truncated - version of the ideal result and is null terminated. This - is useful for situations where truncation is ok. - - It is strongly recommended to use the SUCCEEDED() / FAILED() macros to test the - return value of this function - ---*/ - -STRSAFEAPI StringCchCatA(char* pszDest, size_t cchDest, const char* pszSrc); -STRSAFEAPI StringCchCatW(wchar_t* pszDest, size_t cchDest, const wchar_t* pszSrc); -#ifdef UNICODE -#define StringCchCat StringCchCatW -#else -#define StringCchCat StringCchCatA -#endif // !UNICODE - -#ifdef STRSAFE_INLINE -STRSAFEAPI StringCchCatA(char* pszDest, size_t cchDest, const char* pszSrc) -{ - HRESULT hr; - - if (cchDest > STRSAFE_MAX_CCH) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - hr = StringCatWorkerA(pszDest, cchDest, pszSrc); - } - - return hr; -} - -STRSAFEAPI StringCchCatW(wchar_t* pszDest, size_t cchDest, const wchar_t* pszSrc) -{ - HRESULT hr; - - if (cchDest > STRSAFE_MAX_CCH) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - hr = StringCatWorkerW(pszDest, cchDest, pszSrc); - } - - return hr; -} -#endif // STRSAFE_INLINE -#endif // !STRSAFE_NO_CCH_FUNCTIONS - - -#ifndef STRSAFE_NO_CB_FUNCTIONS -/*++ - -STDAPI -StringCbCat( - IN OUT LPTSTR pszDest, - IN size_t cbDest, - IN LPCTSTR pszSrc - ); - -Routine Description: - - This routine is a safer version of the C built-in function 'strcat'. - The size of the destination buffer (in bytes) is a parameter and this - function will not write past the end of this buffer and it will ALWAYS - null terminate the destination buffer (unless it is zero length). - - This function returns a hresult, and not a pointer. It returns - S_OK if the string was concatenated without truncation and null terminated, - otherwise it will return a failure code. In failure cases as much of pszSrc - will be appended to pszDest as possible, and pszDest will be null - terminated. - -Arguments: - - pszDest - destination string which must be null terminated - - cbDest - size of destination buffer in bytes. - length must be = ((_tcslen(pszDest) + _tcslen(pszSrc) + 1) * sizeof(TCHAR) - to hold all of the combine string plus the null - terminator - - pszSrc - source string which must be null terminated - -Notes: - Behavior is undefined if source and destination strings overlap. - - pszDest and pszSrc should not be NULL. See StringCbCatEx if you require - the handling of NULL values. - -Return Value: - - S_OK - if there was source data and it was all concatenated and - the resultant dest string was null terminated - - failure - you can use the macro HRESULT_CODE() to get a win32 - error code for all hresult failure cases - - STRSAFE_E_INSUFFICIENT_BUFFER / - HRESULT_CODE(hr) == ERROR_INSUFFICIENT_BUFFER - - this return value is an indication that the operation - failed due to insufficient space. When this error occurs, - the destination buffer is modified to contain a truncated - version of the ideal result and is null terminated. This - is useful for situations where truncation is ok. - - It is strongly recommended to use the SUCCEEDED() / FAILED() macros to test the - return value of this function - ---*/ - -STRSAFEAPI StringCbCatA(char* pszDest, size_t cbDest, const char* pszSrc); -STRSAFEAPI StringCbCatW(wchar_t* pszDest, size_t cbDest, const wchar_t* pszSrc); -#ifdef UNICODE -#define StringCbCat StringCbCatW -#else -#define StringCbCat StringCbCatA -#endif // !UNICODE - -#ifdef STRSAFE_INLINE -STRSAFEAPI StringCbCatA(char* pszDest, size_t cbDest, const char* pszSrc) -{ - HRESULT hr; - size_t cchDest; - - cchDest = cbDest / sizeof(char); - - if (cchDest > STRSAFE_MAX_CCH) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - hr = StringCatWorkerA(pszDest, cchDest, pszSrc); - } - - return hr; -} - -STRSAFEAPI StringCbCatW(wchar_t* pszDest, size_t cbDest, const wchar_t* pszSrc) -{ - HRESULT hr; - size_t cchDest; - - cchDest = cbDest / sizeof(wchar_t); - - if (cchDest > STRSAFE_MAX_CCH) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - hr = StringCatWorkerW(pszDest, cchDest, pszSrc); - } - - return hr; -} -#endif // STRSAFE_INLINE -#endif // !STRSAFE_NO_CB_FUNCTIONS - - -#ifndef STRSAFE_NO_CCH_FUNCTIONS -/*++ - -STDAPI -StringCchCatEx( - IN OUT LPTSTR pszDest OPTIONAL, - IN size_t cchDest, - IN LPCTSTR pszSrc OPTIONAL, - OUT LPTSTR* ppszDestEnd OPTIONAL, - OUT size_t* pcchRemaining OPTIONAL, - IN DWORD dwFlags - ); - -Routine Description: - - This routine is a safer version of the C built-in function 'strcat' with - some additional parameters. In addition to functionality provided by - StringCchCat, this routine also returns a pointer to the end of the - destination string and the number of characters left in the destination string - including the null terminator. The flags parameter allows additional controls. - -Arguments: - - pszDest - destination string which must be null terminated - - cchDest - size of destination buffer in characters - length must be (_tcslen(pszDest) + _tcslen(pszSrc) + 1) - to hold all of the combine string plus the null - terminator. - - pszSrc - source string which must be null terminated - - ppszDestEnd - if ppszDestEnd is non-null, the function will return a - pointer to the end of the destination string. If the - function appended any data, the result will point to the - null termination character - - pcchRemaining - if pcchRemaining is non-null, the function will return the - number of characters left in the destination string, - including the null terminator - - dwFlags - controls some details of the string copy: - - STRSAFE_FILL_BEHIND_NULL - if the function succeeds, the low byte of dwFlags will be - used to fill the uninitialize part of destination buffer - behind the null terminator - - STRSAFE_IGNORE_NULLS - treat NULL string pointers like empty strings (TEXT("")). - this flag is useful for emulating functions like lstrcat - - STRSAFE_FILL_ON_FAILURE - if the function fails, the low byte of dwFlags will be - used to fill all of the destination buffer, and it will - be null terminated. This will overwrite any pre-existing - or truncated string - - STRSAFE_NULL_ON_FAILURE - if the function fails, the destination buffer will be set - to the empty string. This will overwrite any pre-existing or - truncated string - - STRSAFE_NO_TRUNCATION - if the function returns STRSAFE_E_INSUFFICIENT_BUFFER, pszDest - will not contain a truncated string, it will remain unchanged. - -Notes: - Behavior is undefined if source and destination strings overlap. - - pszDest and pszSrc should not be NULL unless the STRSAFE_IGNORE_NULLS flag - is specified. If STRSAFE_IGNORE_NULLS is passed, both pszDest and pszSrc - may be NULL. An error may still be returned even though NULLS are ignored - due to insufficient space. - -Return Value: - - S_OK - if there was source data and it was all concatenated and - the resultant dest string was null terminated - - failure - you can use the macro HRESULT_CODE() to get a win32 - error code for all hresult failure cases - - STRSAFE_E_INSUFFICIENT_BUFFER / - HRESULT_CODE(hr) == ERROR_INSUFFICIENT_BUFFER - - this return value is an indication that the operation - failed due to insufficient space. When this error - occurs, the destination buffer is modified to contain - a truncated version of the ideal result and is null - terminated. This is useful for situations where - truncation is ok. - - It is strongly recommended to use the SUCCEEDED() / FAILED() macros to test the - return value of this function - ---*/ - -STRSAFEAPI StringCchCatExA(char* pszDest, size_t cchDest, const char* pszSrc, char** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags); -STRSAFEAPI StringCchCatExW(wchar_t* pszDest, size_t cchDest, const wchar_t* pszSrc, wchar_t** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags); -#ifdef UNICODE -#define StringCchCatEx StringCchCatExW -#else -#define StringCchCatEx StringCchCatExA -#endif // !UNICODE - -#ifdef STRSAFE_INLINE -STRSAFEAPI StringCchCatExA(char* pszDest, size_t cchDest, const char* pszSrc, char** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags) -{ - HRESULT hr; - - if (cchDest > STRSAFE_MAX_CCH) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - size_t cbDest; - - // safe to multiply cchDest * sizeof(char) since cchDest < STRSAFE_MAX_CCH and sizeof(char) is 1 - cbDest = cchDest * sizeof(char); - - hr = StringCatExWorkerA(pszDest, cchDest, cbDest, pszSrc, ppszDestEnd, pcchRemaining, dwFlags); - } - - return hr; -} - -STRSAFEAPI StringCchCatExW(wchar_t* pszDest, size_t cchDest, const wchar_t* pszSrc, wchar_t** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags) -{ - HRESULT hr; - - if (cchDest > STRSAFE_MAX_CCH) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - size_t cbDest; - - // safe to multiply cchDest * sizeof(wchar_t) since cchDest < STRSAFE_MAX_CCH and sizeof(wchar_t) is 2 - cbDest = cchDest * sizeof(wchar_t); - - hr = StringCatExWorkerW(pszDest, cchDest, cbDest, pszSrc, ppszDestEnd, pcchRemaining, dwFlags); - } - - return hr; -} -#endif // STRSAFE_INLINE -#endif // !STRSAFE_NO_CCH_FUNCTIONS - - -#ifndef STRSAFE_NO_CB_FUNCTIONS -/*++ - -STDAPI -StringCbCatEx( - IN OUT LPTSTR pszDest OPTIONAL, - IN size_t cbDest, - IN LPCTSTR pszSrc OPTIONAL, - OUT LPTSTR* ppszDestEnd OPTIONAL, - OUT size_t* pcbRemaining OPTIONAL, - IN DWORD dwFlags - ); - -Routine Description: - - This routine is a safer version of the C built-in function 'strcat' with - some additional parameters. In addition to functionality provided by - StringCbCat, this routine also returns a pointer to the end of the - destination string and the number of bytes left in the destination string - including the null terminator. The flags parameter allows additional controls. - -Arguments: - - pszDest - destination string which must be null terminated - - cbDest - size of destination buffer in bytes. - length must be ((_tcslen(pszDest) + _tcslen(pszSrc) + 1) * sizeof(TCHAR) - to hold all of the combine string plus the null - terminator. - - pszSrc - source string which must be null terminated - - ppszDestEnd - if ppszDestEnd is non-null, the function will return a - pointer to the end of the destination string. If the - function appended any data, the result will point to the - null termination character - - pcbRemaining - if pcbRemaining is non-null, the function will return - the number of bytes left in the destination string, - including the null terminator - - dwFlags - controls some details of the string copy: - - STRSAFE_FILL_BEHIND_NULL - if the function succeeds, the low byte of dwFlags will be - used to fill the uninitialize part of destination buffer - behind the null terminator - - STRSAFE_IGNORE_NULLS - treat NULL string pointers like empty strings (TEXT("")). - this flag is useful for emulating functions like lstrcat - - STRSAFE_FILL_ON_FAILURE - if the function fails, the low byte of dwFlags will be - used to fill all of the destination buffer, and it will - be null terminated. This will overwrite any pre-existing - or truncated string - - STRSAFE_NULL_ON_FAILURE - if the function fails, the destination buffer will be set - to the empty string. This will overwrite any pre-existing or - truncated string - - STRSAFE_NO_TRUNCATION - if the function returns STRSAFE_E_INSUFFICIENT_BUFFER, pszDest - will not contain a truncated string, it will remain unchanged. - -Notes: - Behavior is undefined if source and destination strings overlap. - - pszDest and pszSrc should not be NULL unless the STRSAFE_IGNORE_NULLS flag - is specified. If STRSAFE_IGNORE_NULLS is passed, both pszDest and pszSrc - may be NULL. An error may still be returned even though NULLS are ignored - due to insufficient space. - -Return Value: - - S_OK - if there was source data and it was all concatenated - and the resultant dest string was null terminated - - failure - you can use the macro HRESULT_CODE() to get a win32 - error code for all hresult failure cases - - STRSAFE_E_INSUFFICIENT_BUFFER / - HRESULT_CODE(hr) == ERROR_INSUFFICIENT_BUFFER - - this return value is an indication that the operation - failed due to insufficient space. When this error - occurs, the destination buffer is modified to contain - a truncated version of the ideal result and is null - terminated. This is useful for situations where - truncation is ok. - - It is strongly recommended to use the SUCCEEDED() / FAILED() macros to test the - return value of this function - ---*/ - -STRSAFEAPI StringCbCatExA(char* pszDest, size_t cbDest, const char* pszSrc, char** ppszDestEnd, size_t* pcbRemaining, unsigned long dwFlags); -STRSAFEAPI StringCbCatExW(wchar_t* pszDest, size_t cbDest, const wchar_t* pszSrc, wchar_t** ppszDestEnd, size_t* pcbRemaining, unsigned long dwFlags); -#ifdef UNICODE -#define StringCbCatEx StringCbCatExW -#else -#define StringCbCatEx StringCbCatExA -#endif // !UNICODE - -#ifdef STRSAFE_INLINE -STRSAFEAPI StringCbCatExA(char* pszDest, size_t cbDest, const char* pszSrc, char** ppszDestEnd, size_t* pcbRemaining, unsigned long dwFlags) -{ - HRESULT hr; - size_t cchDest; - size_t cchRemaining = 0; - - cchDest = cbDest / sizeof(char); - - if (cchDest > STRSAFE_MAX_CCH) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - hr = StringCatExWorkerA(pszDest, cchDest, cbDest, pszSrc, ppszDestEnd, &cchRemaining, dwFlags); - } - - if (SUCCEEDED(hr) || (hr == STRSAFE_E_INSUFFICIENT_BUFFER)) - { - if (pcbRemaining) - { - // safe to multiply cchRemaining * sizeof(char) since cchRemaining < STRSAFE_MAX_CCH and sizeof(char) is 1 - *pcbRemaining = (cchRemaining * sizeof(char)) + (cbDest % sizeof(char)); - } - } - - return hr; -} - -STRSAFEAPI StringCbCatExW(wchar_t* pszDest, size_t cbDest, const wchar_t* pszSrc, wchar_t** ppszDestEnd, size_t* pcbRemaining, unsigned long dwFlags) -{ - HRESULT hr; - size_t cchDest; - size_t cchRemaining = 0; - - cchDest = cbDest / sizeof(wchar_t); - - if (cchDest > STRSAFE_MAX_CCH) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - hr = StringCatExWorkerW(pszDest, cchDest, cbDest, pszSrc, ppszDestEnd, &cchRemaining, dwFlags); - } - - if (SUCCEEDED(hr) || (hr == STRSAFE_E_INSUFFICIENT_BUFFER)) - { - if (pcbRemaining) - { - // safe to multiply cchRemaining * sizeof(wchar_t) since cchRemaining < STRSAFE_MAX_CCH and sizeof(wchar_t) is 2 - *pcbRemaining = (cchRemaining * sizeof(wchar_t)) + (cbDest % sizeof(wchar_t)); - } - } - - return hr; -} -#endif // STRSAFE_INLINE -#endif // !STRSAFE_NO_CB_FUNCTIONS - - -#ifndef STRSAFE_NO_CCH_FUNCTIONS -/*++ - -STDAPI -StringCchCatN( - IN OUT LPTSTR pszDest, - IN size_t cchDest, - IN LPCTSTR pszSrc, - IN size_t cchMaxAppend - ); - -Routine Description: - - This routine is a safer version of the C built-in function 'strncat'. - The size of the destination buffer (in characters) is a parameter as well as - the maximum number of characters to append, excluding the null terminator. - This function will not write past the end of the destination buffer and it will - ALWAYS null terminate pszDest (unless it is zero length). - - This function returns a hresult, and not a pointer. It returns - S_OK if all of pszSrc or the first cchMaxAppend characters were appended - to the destination string and it was null terminated, otherwise it will - return a failure code. In failure cases as much of pszSrc will be appended - to pszDest as possible, and pszDest will be null terminated. - -Arguments: - - pszDest - destination string which must be null terminated - - cchDest - size of destination buffer in characters. - length must be (_tcslen(pszDest) + min(cchMaxAppend, _tcslen(pszSrc)) + 1) - to hold all of the combine string plus the null - terminator. - - pszSrc - source string - - cchMaxAppend - maximum number of characters to append - -Notes: - Behavior is undefined if source and destination strings overlap. - - pszDest and pszSrc should not be NULL. See StringCchCatNEx if you require - the handling of NULL values. - -Return Value: - - S_OK - if all of pszSrc or the first cchMaxAppend characters - were concatenated to pszDest and the resultant dest - string was null terminated - - failure - you can use the macro HRESULT_CODE() to get a win32 - error code for all hresult failure cases - - STRSAFE_E_INSUFFICIENT_BUFFER / - HRESULT_CODE(hr) == ERROR_INSUFFICIENT_BUFFER - - this return value is an indication that the operation - failed due to insufficient space. When this error - occurs, the destination buffer is modified to contain - a truncated version of the ideal result and is null - terminated. This is useful for situations where - truncation is ok. - - It is strongly recommended to use the SUCCEEDED() / FAILED() macros to test the - return value of this function - ---*/ - -STRSAFEAPI StringCchCatNA(char* pszDest, size_t cchDest, const char* pszSrc, size_t cchMaxAppend); -STRSAFEAPI StringCchCatNW(wchar_t* pszDest, size_t cchDest, const wchar_t* pszSrc, size_t cchMaxAppend); -#ifdef UNICODE -#define StringCchCatN StringCchCatNW -#else -#define StringCchCatN StringCchCatNA -#endif // !UNICODE - -#ifdef STRSAFE_INLINE -STRSAFEAPI StringCchCatNA(char* pszDest, size_t cchDest, const char* pszSrc, size_t cchMaxAppend) -{ - HRESULT hr; - - if (cchDest > STRSAFE_MAX_CCH) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - hr = StringCatNWorkerA(pszDest, cchDest, pszSrc, cchMaxAppend); - } - - return hr; -} - -STRSAFEAPI StringCchCatNW(wchar_t* pszDest, size_t cchDest, const wchar_t* pszSrc, size_t cchMaxAppend) -{ - HRESULT hr; - - if (cchDest > STRSAFE_MAX_CCH) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - hr = StringCatNWorkerW(pszDest, cchDest, pszSrc, cchMaxAppend); - } - - return hr; -} -#endif // STRSAFE_INLINE -#endif // !STRSAFE_NO_CCH_FUNCTIONS - - -#ifndef STRSAFE_NO_CB_FUNCTIONS -/*++ - -STDAPI -StringCbCatN( - IN OUT LPTSTR pszDest, - IN size_t cbDest, - IN LPCTSTR pszSrc, - IN size_t cbMaxAppend - ); - -Routine Description: - - This routine is a safer version of the C built-in function 'strncat'. - The size of the destination buffer (in bytes) is a parameter as well as - the maximum number of bytes to append, excluding the null terminator. - This function will not write past the end of the destination buffer and it will - ALWAYS null terminate pszDest (unless it is zero length). - - This function returns a hresult, and not a pointer. It returns - S_OK if all of pszSrc or the first cbMaxAppend bytes were appended - to the destination string and it was null terminated, otherwise it will - return a failure code. In failure cases as much of pszSrc will be appended - to pszDest as possible, and pszDest will be null terminated. - -Arguments: - - pszDest - destination string which must be null terminated - - cbDest - size of destination buffer in bytes. - length must be ((_tcslen(pszDest) + min(cbMaxAppend / sizeof(TCHAR), _tcslen(pszSrc)) + 1) * sizeof(TCHAR) - to hold all of the combine string plus the null - terminator. - - pszSrc - source string - - cbMaxAppend - maximum number of bytes to append - -Notes: - Behavior is undefined if source and destination strings overlap. - - pszDest and pszSrc should not be NULL. See StringCbCatNEx if you require - the handling of NULL values. - -Return Value: - - S_OK - if all of pszSrc or the first cbMaxAppend bytes were - concatenated to pszDest and the resultant dest string - was null terminated - - failure - you can use the macro HRESULT_CODE() to get a win32 - error code for all hresult failure cases - - STRSAFE_E_INSUFFICIENT_BUFFER / - HRESULT_CODE(hr) == ERROR_INSUFFICIENT_BUFFER - - this return value is an indication that the operation - failed due to insufficient space. When this error - occurs, the destination buffer is modified to contain - a truncated version of the ideal result and is null - terminated. This is useful for situations where - truncation is ok. - - It is strongly recommended to use the SUCCEEDED() / FAILED() macros to test the - return value of this function - ---*/ - -STRSAFEAPI StringCbCatNA(char* pszDest, size_t cbDest, const char* pszSrc, size_t cbMaxAppend); -STRSAFEAPI StringCbCatNW(wchar_t* pszDest, size_t cbDest, const wchar_t* pszSrc, size_t cbMaxAppend); -#ifdef UNICODE -#define StringCbCatN StringCbCatNW -#else -#define StringCbCatN StringCbCatNA -#endif // !UNICODE - -#ifdef STRSAFE_INLINE -STRSAFEAPI StringCbCatNA(char* pszDest, size_t cbDest, const char* pszSrc, size_t cbMaxAppend) -{ - HRESULT hr; - size_t cchDest; - - cchDest = cbDest / sizeof(char); - - if (cchDest > STRSAFE_MAX_CCH) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - size_t cchMaxAppend; - - cchMaxAppend = cbMaxAppend / sizeof(char); - - hr = StringCatNWorkerA(pszDest, cchDest, pszSrc, cchMaxAppend); - } - - return hr; -} - -STRSAFEAPI StringCbCatNW(wchar_t* pszDest, size_t cbDest, const wchar_t* pszSrc, size_t cbMaxAppend) -{ - HRESULT hr; - size_t cchDest; - - cchDest = cbDest / sizeof(wchar_t); - - if (cchDest > STRSAFE_MAX_CCH) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - size_t cchMaxAppend; - - cchMaxAppend = cbMaxAppend / sizeof(wchar_t); - - hr = StringCatNWorkerW(pszDest, cchDest, pszSrc, cchMaxAppend); - } - - return hr; -} -#endif // STRSAFE_INLINE -#endif // !STRSAFE_NO_CB_FUNCTIONS - - -#ifndef STRSAFE_NO_CCH_FUNCTIONS -/*++ - -STDAPI -StringCchCatNEx( - IN OUT LPTSTR pszDest OPTIONAL, - IN size_t cchDest, - IN LPCTSTR pszSrc OPTIONAL, - IN size_t cchMaxAppend, - OUT LPTSTR* ppszDestEnd OPTIONAL, - OUT size_t* pcchRemaining OPTIONAL, - IN DWORD dwFlags - ); - -Routine Description: - - This routine is a safer version of the C built-in function 'strncat', with - some additional parameters. In addition to functionality provided by - StringCchCatN, this routine also returns a pointer to the end of the - destination string and the number of characters left in the destination string - including the null terminator. The flags parameter allows additional controls. - -Arguments: - - pszDest - destination string which must be null terminated - - cchDest - size of destination buffer in characters. - length must be (_tcslen(pszDest) + min(cchMaxAppend, _tcslen(pszSrc)) + 1) - to hold all of the combine string plus the null - terminator. - - pszSrc - source string - - cchMaxAppend - maximum number of characters to append - - ppszDestEnd - if ppszDestEnd is non-null, the function will return a - pointer to the end of the destination string. If the - function appended any data, the result will point to the - null termination character - - pcchRemaining - if pcchRemaining is non-null, the function will return the - number of characters left in the destination string, - including the null terminator - - dwFlags - controls some details of the string copy: - - STRSAFE_FILL_BEHIND_NULL - if the function succeeds, the low byte of dwFlags will be - used to fill the uninitialize part of destination buffer - behind the null terminator - - STRSAFE_IGNORE_NULLS - treat NULL string pointers like empty strings (TEXT("")) - - STRSAFE_FILL_ON_FAILURE - if the function fails, the low byte of dwFlags will be - used to fill all of the destination buffer, and it will - be null terminated. This will overwrite any pre-existing - or truncated string - - STRSAFE_NULL_ON_FAILURE - if the function fails, the destination buffer will be set - to the empty string. This will overwrite any pre-existing or - truncated string - - STRSAFE_NO_TRUNCATION - if the function returns STRSAFE_E_INSUFFICIENT_BUFFER, pszDest - will not contain a truncated string, it will remain unchanged. - -Notes: - Behavior is undefined if source and destination strings overlap. - - pszDest and pszSrc should not be NULL unless the STRSAFE_IGNORE_NULLS flag - is specified. If STRSAFE_IGNORE_NULLS is passed, both pszDest and pszSrc - may be NULL. An error may still be returned even though NULLS are ignored - due to insufficient space. - -Return Value: - - S_OK - if all of pszSrc or the first cchMaxAppend characters - were concatenated to pszDest and the resultant dest - string was null terminated - - failure - you can use the macro HRESULT_CODE() to get a win32 - error code for all hresult failure cases - - STRSAFE_E_INSUFFICIENT_BUFFER / - HRESULT_CODE(hr) == ERROR_INSUFFICIENT_BUFFER - - this return value is an indication that the operation - failed due to insufficient space. When this error - occurs, the destination buffer is modified to contain - a truncated version of the ideal result and is null - terminated. This is useful for situations where - truncation is ok. - - It is strongly recommended to use the SUCCEEDED() / FAILED() macros to test the - return value of this function - ---*/ - -STRSAFEAPI StringCchCatNExA(char* pszDest, size_t cchDest, const char* pszSrc, size_t cchMaxAppend, char** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags); -STRSAFEAPI StringCchCatNExW(wchar_t* pszDest, size_t cchDest, const wchar_t* pszSrc, size_t cchMaxAppend, wchar_t** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags); -#ifdef UNICODE -#define StringCchCatNEx StringCchCatNExW -#else -#define StringCchCatNEx StringCchCatNExA -#endif // !UNICODE - -#ifdef STRSAFE_INLINE -STRSAFEAPI StringCchCatNExA(char* pszDest, size_t cchDest, const char* pszSrc, size_t cchMaxAppend, char** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags) -{ - HRESULT hr; - - if (cchDest > STRSAFE_MAX_CCH) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - size_t cbDest; - - // safe to multiply cchDest * sizeof(char) since cchDest < STRSAFE_MAX_CCH and sizeof(char) is 1 - cbDest = cchDest * sizeof(char); - - hr = StringCatNExWorkerA(pszDest, cchDest, cbDest, pszSrc, cchMaxAppend, ppszDestEnd, pcchRemaining, dwFlags); - } - - return hr; -} - -STRSAFEAPI StringCchCatNExW(wchar_t* pszDest, size_t cchDest, const wchar_t* pszSrc, size_t cchMaxAppend, wchar_t** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags) -{ - HRESULT hr; - - if (cchDest > STRSAFE_MAX_CCH) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - size_t cbDest; - - // safe to multiply cchDest * sizeof(wchar_t) since cchDest < STRSAFE_MAX_CCH and sizeof(wchar_t) is 2 - cbDest = cchDest * sizeof(wchar_t); - - hr = StringCatNExWorkerW(pszDest, cchDest, cbDest, pszSrc, cchMaxAppend, ppszDestEnd, pcchRemaining, dwFlags); - } - - return hr; -} -#endif // STRSAFE_INLINE -#endif // !STRSAFE_NO_CCH_FUNCTIONS - - -#ifndef STRSAFE_NO_CB_FUNCTIONS -/*++ - -STDAPI -StringCbCatNEx( - IN OUT LPTSTR pszDest OPTIONAL, - IN size_t cbDest, - IN LPCTSTR pszSrc OPTIONAL, - IN size_t cbMaxAppend, - OUT LPTSTR* ppszDestEnd OPTIONAL, - OUT size_t* pcchRemaining OPTIONAL, - IN DWORD dwFlags - ); - -Routine Description: - - This routine is a safer version of the C built-in function 'strncat', with - some additional parameters. In addition to functionality provided by - StringCbCatN, this routine also returns a pointer to the end of the - destination string and the number of bytes left in the destination string - including the null terminator. The flags parameter allows additional controls. - -Arguments: - - pszDest - destination string which must be null terminated - - cbDest - size of destination buffer in bytes. - length must be ((_tcslen(pszDest) + min(cbMaxAppend / sizeof(TCHAR), _tcslen(pszSrc)) + 1) * sizeof(TCHAR) - to hold all of the combine string plus the null - terminator. - - pszSrc - source string - - cbMaxAppend - maximum number of bytes to append - - ppszDestEnd - if ppszDestEnd is non-null, the function will return a - pointer to the end of the destination string. If the - function appended any data, the result will point to the - null termination character - - pcbRemaining - if pcbRemaining is non-null, the function will return the - number of bytes left in the destination string, - including the null terminator - - dwFlags - controls some details of the string copy: - - STRSAFE_FILL_BEHIND_NULL - if the function succeeds, the low byte of dwFlags will be - used to fill the uninitialize part of destination buffer - behind the null terminator - - STRSAFE_IGNORE_NULLS - treat NULL string pointers like empty strings (TEXT("")) - - STRSAFE_FILL_ON_FAILURE - if the function fails, the low byte of dwFlags will be - used to fill all of the destination buffer, and it will - be null terminated. This will overwrite any pre-existing - or truncated string - - STRSAFE_NULL_ON_FAILURE - if the function fails, the destination buffer will be set - to the empty string. This will overwrite any pre-existing or - truncated string - - STRSAFE_NO_TRUNCATION - if the function returns STRSAFE_E_INSUFFICIENT_BUFFER, pszDest - will not contain a truncated string, it will remain unchanged. - -Notes: - Behavior is undefined if source and destination strings overlap. - - pszDest and pszSrc should not be NULL unless the STRSAFE_IGNORE_NULLS flag - is specified. If STRSAFE_IGNORE_NULLS is passed, both pszDest and pszSrc - may be NULL. An error may still be returned even though NULLS are ignored - due to insufficient space. - -Return Value: - - S_OK - if all of pszSrc or the first cbMaxAppend bytes were - concatenated to pszDest and the resultant dest string - was null terminated - - failure - you can use the macro HRESULT_CODE() to get a win32 - error code for all hresult failure cases - - STRSAFE_E_INSUFFICIENT_BUFFER / - HRESULT_CODE(hr) == ERROR_INSUFFICIENT_BUFFER - - this return value is an indication that the operation - failed due to insufficient space. When this error - occurs, the destination buffer is modified to contain - a truncated version of the ideal result and is null - terminated. This is useful for situations where - truncation is ok. - - It is strongly recommended to use the SUCCEEDED() / FAILED() macros to test the - return value of this function - ---*/ - -STRSAFEAPI StringCbCatNExA(char* pszDest, size_t cbDest, const char* pszSrc, size_t cbMaxAppend, char** ppszDestEnd, size_t* pcbRemaining, unsigned long dwFlags); -STRSAFEAPI StringCbCatNExW(wchar_t* pszDest, size_t cbDest, const wchar_t* pszSrc, size_t cbMaxAppend, wchar_t** ppszDestEnd, size_t* pcbRemaining, unsigned long dwFlags); -#ifdef UNICODE -#define StringCbCatNEx StringCbCatNExW -#else -#define StringCbCatNEx StringCbCatNExA -#endif // !UNICODE - -#ifdef STRSAFE_INLINE -STRSAFEAPI StringCbCatNExA(char* pszDest, size_t cbDest, const char* pszSrc, size_t cbMaxAppend, char** ppszDestEnd, size_t* pcbRemaining, unsigned long dwFlags) -{ - HRESULT hr; - size_t cchDest; - size_t cchRemaining = 0; - - cchDest = cbDest / sizeof(char); - - if (cchDest > STRSAFE_MAX_CCH) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - size_t cchMaxAppend; - - cchMaxAppend = cbMaxAppend / sizeof(char); - - hr = StringCatNExWorkerA(pszDest, cchDest, cbDest, pszSrc, cchMaxAppend, ppszDestEnd, &cchRemaining, dwFlags); - } - - if (SUCCEEDED(hr) || (hr == STRSAFE_E_INSUFFICIENT_BUFFER)) - { - if (pcbRemaining) - { - // safe to multiply cchRemaining * sizeof(char) since cchRemaining < STRSAFE_MAX_CCH and sizeof(char) is 1 - *pcbRemaining = (cchRemaining * sizeof(char)) + (cbDest % sizeof(char)); - } - } - - return hr; -} - -STRSAFEAPI StringCbCatNExW(wchar_t* pszDest, size_t cbDest, const wchar_t* pszSrc, size_t cbMaxAppend, wchar_t** ppszDestEnd, size_t* pcbRemaining, unsigned long dwFlags) -{ - HRESULT hr; - size_t cchDest; - size_t cchRemaining = 0; - - cchDest = cbDest / sizeof(wchar_t); - - if (cchDest > STRSAFE_MAX_CCH) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - size_t cchMaxAppend; - - cchMaxAppend = cbMaxAppend / sizeof(wchar_t); - - hr = StringCatNExWorkerW(pszDest, cchDest, cbDest, pszSrc, cchMaxAppend, ppszDestEnd, &cchRemaining, dwFlags); - } - - if (SUCCEEDED(hr) || (hr == STRSAFE_E_INSUFFICIENT_BUFFER)) - { - if (pcbRemaining) - { - // safe to multiply cchRemaining * sizeof(wchar_t) since cchRemaining < STRSAFE_MAX_CCH and sizeof(wchar_t) is 2 - *pcbRemaining = (cchRemaining * sizeof(wchar_t)) + (cbDest % sizeof(wchar_t)); - } - } - - return hr; -} -#endif // STRSAFE_INLINE -#endif // !STRSAFE_NO_CB_FUNCTIONS - - -#ifndef STRSAFE_NO_CCH_FUNCTIONS -/*++ - -STDAPI -StringCchVPrintf( - OUT LPTSTR pszDest, - IN size_t cchDest, - IN LPCTSTR pszFormat, - IN va_list argList - ); - -Routine Description: - - This routine is a safer version of the C built-in function 'vsprintf'. - The size of the destination buffer (in characters) is a parameter and - this function will not write past the end of this buffer and it will - ALWAYS null terminate the destination buffer (unless it is zero length). - - This function returns a hresult, and not a pointer. It returns - S_OK if the string was printed without truncation and null terminated, - otherwise it will return a failure code. In failure cases it will return - a truncated version of the ideal result. - -Arguments: - - pszDest - destination string - - cchDest - size of destination buffer in characters - length must be sufficient to hold the resulting formatted - string, including the null terminator. - - pszFormat - format string which must be null terminated - - argList - va_list from the variable arguments according to the - stdarg.h convention - -Notes: - Behavior is undefined if destination, format strings or any arguments - strings overlap. - - pszDest and pszFormat should not be NULL. See StringCchVPrintfEx if you - require the handling of NULL values. - -Return Value: - - S_OK - if there was sufficient space in the dest buffer for - the resultant string and it was null terminated. - - failure - you can use the macro HRESULT_CODE() to get a win32 - error code for all hresult failure cases - - STRSAFE_E_INSUFFICIENT_BUFFER / - HRESULT_CODE(hr) == ERROR_INSUFFICIENT_BUFFER - - this return value is an indication that the print - operation failed due to insufficient space. When this - error occurs, the destination buffer is modified to - contain a truncated version of the ideal result and is - null terminated. This is useful for situations where - truncation is ok. - - It is strongly recommended to use the SUCCEEDED() / FAILED() macros to test the - return value of this function - ---*/ - -STRSAFEAPI StringCchVPrintfA(char* pszDest, size_t cchDest, const char* pszFormat, va_list argList); -STRSAFEAPI StringCchVPrintfW(wchar_t* pszDest, size_t cchDest, const wchar_t* pszFormat, va_list argList); -#ifdef UNICODE -#define StringCchVPrintf StringCchVPrintfW -#else -#define StringCchVPrintf StringCchVPrintfA -#endif // !UNICODE - -#ifdef STRSAFE_INLINE -STRSAFEAPI StringCchVPrintfA(char* pszDest, size_t cchDest, const char* pszFormat, va_list argList) -{ - HRESULT hr; - - if (cchDest > STRSAFE_MAX_CCH) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - hr = StringVPrintfWorkerA(pszDest, cchDest, pszFormat, argList); - } - - return hr; -} - -STRSAFEAPI StringCchVPrintfW(wchar_t* pszDest, size_t cchDest, const wchar_t* pszFormat, va_list argList) -{ - HRESULT hr; - - if (cchDest > STRSAFE_MAX_CCH) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - hr = StringVPrintfWorkerW(pszDest, cchDest, pszFormat, argList); - } - - return hr; -} -#endif // STRSAFE_INLINE -#endif // !STRSAFE_NO_CCH_FUNCTIONS - - -#ifndef STRSAFE_NO_CB_FUNCTIONS -/*++ - -STDAPI -StringCbVPrintf( - OUT LPTSTR pszDest, - IN size_t cbDest, - IN LPCTSTR pszFormat, - IN va_list argList - ); - -Routine Description: - - This routine is a safer version of the C built-in function 'vsprintf'. - The size of the destination buffer (in bytes) is a parameter and - this function will not write past the end of this buffer and it will - ALWAYS null terminate the destination buffer (unless it is zero length). - - This function returns a hresult, and not a pointer. It returns - S_OK if the string was printed without truncation and null terminated, - otherwise it will return a failure code. In failure cases it will return - a truncated version of the ideal result. - -Arguments: - - pszDest - destination string - - cbDest - size of destination buffer in bytes - length must be sufficient to hold the resulting formatted - string, including the null terminator. - - pszFormat - format string which must be null terminated - - argList - va_list from the variable arguments according to the - stdarg.h convention - -Notes: - Behavior is undefined if destination, format strings or any arguments - strings overlap. - - pszDest and pszFormat should not be NULL. See StringCbVPrintfEx if you - require the handling of NULL values. - - -Return Value: - - S_OK - if there was sufficient space in the dest buffer for - the resultant string and it was null terminated. - - failure - you can use the macro HRESULT_CODE() to get a win32 - error code for all hresult failure cases - - STRSAFE_E_INSUFFICIENT_BUFFER / - HRESULT_CODE(hr) == ERROR_INSUFFICIENT_BUFFER - - this return value is an indication that the print - operation failed due to insufficient space. When this - error occurs, the destination buffer is modified to - contain a truncated version of the ideal result and is - null terminated. This is useful for situations where - truncation is ok. - - It is strongly recommended to use the SUCCEEDED() / FAILED() macros to test the - return value of this function - ---*/ - -STRSAFEAPI StringCbVPrintfA(char* pszDest, size_t cbDest, const char* pszFormat, va_list argList); -STRSAFEAPI StringCbVPrintfW(wchar_t* pszDest, size_t cbDest, const wchar_t* pszFormat, va_list argList); -#ifdef UNICODE -#define StringCbVPrintf StringCbVPrintfW -#else -#define StringCbVPrintf StringCbVPrintfA -#endif // !UNICODE - -#ifdef STRSAFE_INLINE -STRSAFEAPI StringCbVPrintfA(char* pszDest, size_t cbDest, const char* pszFormat, va_list argList) -{ - HRESULT hr; - size_t cchDest; - - cchDest = cbDest / sizeof(char); - - if (cchDest > STRSAFE_MAX_CCH) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - hr = StringVPrintfWorkerA(pszDest, cchDest, pszFormat, argList); - } - - return hr; -} - -STRSAFEAPI StringCbVPrintfW(wchar_t* pszDest, size_t cbDest, const wchar_t* pszFormat, va_list argList) -{ - HRESULT hr; - size_t cchDest; - - cchDest = cbDest / sizeof(wchar_t); - - if (cchDest > STRSAFE_MAX_CCH) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - hr = StringVPrintfWorkerW(pszDest, cchDest, pszFormat, argList); - } - - return hr; -} -#endif // STRSAFE_INLINE -#endif // !STRSAFE_NO_CB_FUNCTIONS - - -#ifndef STRSAFE_NO_CCH_FUNCTIONS -/*++ - -STDAPI -StringCchPrintf( - OUT LPTSTR pszDest, - IN size_t cchDest, - IN LPCTSTR pszFormat, - ... - ); - -Routine Description: - - This routine is a safer version of the C built-in function 'sprintf'. - The size of the destination buffer (in characters) is a parameter and - this function will not write past the end of this buffer and it will - ALWAYS null terminate the destination buffer (unless it is zero length). - - This function returns a hresult, and not a pointer. It returns - S_OK if the string was printed without truncation and null terminated, - otherwise it will return a failure code. In failure cases it will return - a truncated version of the ideal result. - -Arguments: - - pszDest - destination string - - cchDest - size of destination buffer in characters - length must be sufficient to hold the resulting formatted - string, including the null terminator. - - pszFormat - format string which must be null terminated - - ... - additional parameters to be formatted according to - the format string - -Notes: - Behavior is undefined if destination, format strings or any arguments - strings overlap. - - pszDest and pszFormat should not be NULL. See StringCchPrintfEx if you - require the handling of NULL values. - -Return Value: - - S_OK - if there was sufficient space in the dest buffer for - the resultant string and it was null terminated. - - failure - you can use the macro HRESULT_CODE() to get a win32 - error code for all hresult failure cases - - STRSAFE_E_INSUFFICIENT_BUFFER / - HRESULT_CODE(hr) == ERROR_INSUFFICIENT_BUFFER - - this return value is an indication that the print - operation failed due to insufficient space. When this - error occurs, the destination buffer is modified to - contain a truncated version of the ideal result and is - null terminated. This is useful for situations where - truncation is ok. - - It is strongly recommended to use the SUCCEEDED() / FAILED() macros to test the - return value of this function - ---*/ - -STRSAFEAPI StringCchPrintfA(char* pszDest, size_t cchDest, const char* pszFormat, ...); -STRSAFEAPI StringCchPrintfW(wchar_t* pszDest, size_t cchDest, const wchar_t* pszFormat, ...); -#ifdef UNICODE -#define StringCchPrintf StringCchPrintfW -#else -#define StringCchPrintf StringCchPrintfA -#endif // !UNICODE - -#ifdef STRSAFE_INLINE -STRSAFEAPI StringCchPrintfA(char* pszDest, size_t cchDest, const char* pszFormat, ...) -{ - HRESULT hr; - - if (cchDest > STRSAFE_MAX_CCH) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - va_list argList; - - va_start(argList, pszFormat); - - hr = StringVPrintfWorkerA(pszDest, cchDest, pszFormat, argList); - - va_end(argList); - } - - return hr; -} - -STRSAFEAPI StringCchPrintfW(wchar_t* pszDest, size_t cchDest, const wchar_t* pszFormat, ...) -{ - HRESULT hr; - - if (cchDest > STRSAFE_MAX_CCH) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - va_list argList; - - va_start(argList, pszFormat); - - hr = StringVPrintfWorkerW(pszDest, cchDest, pszFormat, argList); - - va_end(argList); - } - - return hr; -} -#endif // STRSAFE_INLINE -#endif // !STRSAFE_NO_CCH_FUNCTIONS - - -#ifndef STRSAFE_NO_CB_FUNCTIONS -/*++ - -STDAPI -StringCbPrintf( - OUT LPTSTR pszDest, - IN size_t cbDest, - IN LPCTSTR pszFormat, - ... - ); - -Routine Description: - - This routine is a safer version of the C built-in function 'sprintf'. - The size of the destination buffer (in bytes) is a parameter and - this function will not write past the end of this buffer and it will - ALWAYS null terminate the destination buffer (unless it is zero length). - - This function returns a hresult, and not a pointer. It returns - S_OK if the string was printed without truncation and null terminated, - otherwise it will return a failure code. In failure cases it will return - a truncated version of the ideal result. - -Arguments: - - pszDest - destination string - - cbDest - size of destination buffer in bytes - length must be sufficient to hold the resulting formatted - string, including the null terminator. - - pszFormat - format string which must be null terminated - - ... - additional parameters to be formatted according to - the format string - -Notes: - Behavior is undefined if destination, format strings or any arguments - strings overlap. - - pszDest and pszFormat should not be NULL. See StringCbPrintfEx if you - require the handling of NULL values. - - -Return Value: - - S_OK - if there was sufficient space in the dest buffer for - the resultant string and it was null terminated. - - failure - you can use the macro HRESULT_CODE() to get a win32 - error code for all hresult failure cases - - STRSAFE_E_INSUFFICIENT_BUFFER / - HRESULT_CODE(hr) == ERROR_INSUFFICIENT_BUFFER - - this return value is an indication that the print - operation failed due to insufficient space. When this - error occurs, the destination buffer is modified to - contain a truncated version of the ideal result and is - null terminated. This is useful for situations where - truncation is ok. - - It is strongly recommended to use the SUCCEEDED() / FAILED() macros to test the - return value of this function - ---*/ - -STRSAFEAPI StringCbPrintfA(char* pszDest, size_t cbDest, const char* pszFormat, ...); -STRSAFEAPI StringCbPrintfW(wchar_t* pszDest, size_t cbDest, const wchar_t* pszFormat, ...); -#ifdef UNICODE -#define StringCbPrintf StringCbPrintfW -#else -#define StringCbPrintf StringCbPrintfA -#endif // !UNICODE - -#ifdef STRSAFE_INLINE -STRSAFEAPI StringCbPrintfA(char* pszDest, size_t cbDest, const char* pszFormat, ...) -{ - HRESULT hr; - size_t cchDest; - - cchDest = cbDest / sizeof(char); - - if (cchDest > STRSAFE_MAX_CCH) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - va_list argList; - - va_start(argList, pszFormat); - - hr = StringVPrintfWorkerA(pszDest, cchDest, pszFormat, argList); - - va_end(argList); - } - - return hr; -} - -STRSAFEAPI StringCbPrintfW(wchar_t* pszDest, size_t cbDest, const wchar_t* pszFormat, ...) -{ - HRESULT hr; - size_t cchDest; - - cchDest = cbDest / sizeof(wchar_t); - - if (cchDest > STRSAFE_MAX_CCH) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - va_list argList; - - va_start(argList, pszFormat); - - hr = StringVPrintfWorkerW(pszDest, cchDest, pszFormat, argList); - - va_end(argList); - } - - return hr; -} -#endif // STRSAFE_INLINE -#endif // !STRSAFE_NO_CB_FUNCTIONS - - -#ifndef STRSAFE_NO_CCH_FUNCTIONS -/*++ - -STDAPI -StringCchPrintfEx( - OUT LPTSTR pszDest OPTIONAL, - IN size_t cchDest, - OUT LPTSTR* ppszDestEnd OPTIONAL, - OUT size_t* pcchRemaining OPTIONAL, - IN DWORD dwFlags, - IN LPCTSTR pszFormat OPTIONAL, - ... - ); - -Routine Description: - - This routine is a safer version of the C built-in function 'sprintf' with - some additional parameters. In addition to functionality provided by - StringCchPrintf, this routine also returns a pointer to the end of the - destination string and the number of characters left in the destination string - including the null terminator. The flags parameter allows additional controls. - -Arguments: - - pszDest - destination string - - cchDest - size of destination buffer in characters. - length must be sufficient to contain the resulting - formatted string plus the null terminator. - - ppszDestEnd - if ppszDestEnd is non-null, the function will return a - pointer to the end of the destination string. If the - function printed any data, the result will point to the - null termination character - - pcchRemaining - if pcchRemaining is non-null, the function will return - the number of characters left in the destination string, - including the null terminator - - dwFlags - controls some details of the string copy: - - STRSAFE_FILL_BEHIND_NULL - if the function succeeds, the low byte of dwFlags will be - used to fill the uninitialize part of destination buffer - behind the null terminator - - STRSAFE_IGNORE_NULLS - treat NULL string pointers like empty strings (TEXT("")) - - STRSAFE_FILL_ON_FAILURE - if the function fails, the low byte of dwFlags will be - used to fill all of the destination buffer, and it will - be null terminated. This will overwrite any truncated - string returned when the failure is - STRSAFE_E_INSUFFICIENT_BUFFER - - STRSAFE_NO_TRUNCATION / - STRSAFE_NULL_ON_FAILURE - if the function fails, the destination buffer will be set - to the empty string. This will overwrite any truncated string - returned when the failure is STRSAFE_E_INSUFFICIENT_BUFFER. - - pszFormat - format string which must be null terminated - - ... - additional parameters to be formatted according to - the format string - -Notes: - Behavior is undefined if destination, format strings or any arguments - strings overlap. - - pszDest and pszFormat should not be NULL unless the STRSAFE_IGNORE_NULLS - flag is specified. If STRSAFE_IGNORE_NULLS is passed, both pszDest and - pszFormat may be NULL. An error may still be returned even though NULLS - are ignored due to insufficient space. - -Return Value: - - S_OK - if there was source data and it was all concatenated and - the resultant dest string was null terminated - - failure - you can use the macro HRESULT_CODE() to get a win32 - error code for all hresult failure cases - - STRSAFE_E_INSUFFICIENT_BUFFER / - HRESULT_CODE(hr) == ERROR_INSUFFICIENT_BUFFER - - this return value is an indication that the print - operation failed due to insufficient space. When this - error occurs, the destination buffer is modified to - contain a truncated version of the ideal result and is - null terminated. This is useful for situations where - truncation is ok. - - It is strongly recommended to use the SUCCEEDED() / FAILED() macros to test the - return value of this function - ---*/ - -STRSAFEAPI StringCchPrintfExA(char* pszDest, size_t cchDest, char** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags, const char* pszFormat, ...); -STRSAFEAPI StringCchPrintfExW(wchar_t* pszDest, size_t cchDest, wchar_t** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags, const wchar_t* pszFormat, ...); -#ifdef UNICODE -#define StringCchPrintfEx StringCchPrintfExW -#else -#define StringCchPrintfEx StringCchPrintfExA -#endif // !UNICODE - -#ifdef STRSAFE_INLINE -STRSAFEAPI StringCchPrintfExA(char* pszDest, size_t cchDest, char** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags, const char* pszFormat, ...) -{ - HRESULT hr; - - if (cchDest > STRSAFE_MAX_CCH) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - size_t cbDest; - va_list argList; - - // safe to multiply cchDest * sizeof(char) since cchDest < STRSAFE_MAX_CCH and sizeof(char) is 1 - cbDest = cchDest * sizeof(char); - va_start(argList, pszFormat); - - hr = StringVPrintfExWorkerA(pszDest, cchDest, cbDest, ppszDestEnd, pcchRemaining, dwFlags, pszFormat, argList); - - va_end(argList); - } - - return hr; -} - -STRSAFEAPI StringCchPrintfExW(wchar_t* pszDest, size_t cchDest, wchar_t** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags, const wchar_t* pszFormat, ...) -{ - HRESULT hr; - - if (cchDest > STRSAFE_MAX_CCH) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - size_t cbDest; - va_list argList; - - // safe to multiply cchDest * sizeof(wchar_t) since cchDest < STRSAFE_MAX_CCH and sizeof(wchar_t) is 2 - cbDest = cchDest * sizeof(wchar_t); - va_start(argList, pszFormat); - - hr = StringVPrintfExWorkerW(pszDest, cchDest, cbDest, ppszDestEnd, pcchRemaining, dwFlags, pszFormat, argList); - - va_end(argList); - } - - return hr; -} -#endif // STRSAFE_INLINE -#endif // !STRSAFE_NO_CCH_FUNCTIONS - - -#ifndef STRSAFE_NO_CB_FUNCTIONS -/*++ - -STDAPI -StringCbPrintfEx( - OUT LPTSTR pszDest OPTIONAL, - IN size_t cbDest, - OUT LPTSTR* ppszDestEnd OPTIONAL, - OUT size_t* pcbRemaining OPTIONAL, - IN DWORD dwFlags, - IN LPCTSTR pszFormat OPTIONAL, - ... - ); - -Routine Description: - - This routine is a safer version of the C built-in function 'sprintf' with - some additional parameters. In addition to functionality provided by - StringCbPrintf, this routine also returns a pointer to the end of the - destination string and the number of bytes left in the destination string - including the null terminator. The flags parameter allows additional controls. - -Arguments: - - pszDest - destination string - - cbDest - size of destination buffer in bytes. - length must be sufficient to contain the resulting - formatted string plus the null terminator. - - ppszDestEnd - if ppszDestEnd is non-null, the function will return a - pointer to the end of the destination string. If the - function printed any data, the result will point to the - null termination character - - pcbRemaining - if pcbRemaining is non-null, the function will return - the number of bytes left in the destination string, - including the null terminator - - dwFlags - controls some details of the string copy: - - STRSAFE_FILL_BEHIND_NULL - if the function succeeds, the low byte of dwFlags will be - used to fill the uninitialize part of destination buffer - behind the null terminator - - STRSAFE_IGNORE_NULLS - treat NULL string pointers like empty strings (TEXT("")) - - STRSAFE_FILL_ON_FAILURE - if the function fails, the low byte of dwFlags will be - used to fill all of the destination buffer, and it will - be null terminated. This will overwrite any truncated - string returned when the failure is - STRSAFE_E_INSUFFICIENT_BUFFER - - STRSAFE_NO_TRUNCATION / - STRSAFE_NULL_ON_FAILURE - if the function fails, the destination buffer will be set - to the empty string. This will overwrite any truncated string - returned when the failure is STRSAFE_E_INSUFFICIENT_BUFFER. - - pszFormat - format string which must be null terminated - - ... - additional parameters to be formatted according to - the format string - -Notes: - Behavior is undefined if destination, format strings or any arguments - strings overlap. - - pszDest and pszFormat should not be NULL unless the STRSAFE_IGNORE_NULLS - flag is specified. If STRSAFE_IGNORE_NULLS is passed, both pszDest and - pszFormat may be NULL. An error may still be returned even though NULLS - are ignored due to insufficient space. - -Return Value: - - S_OK - if there was source data and it was all concatenated and - the resultant dest string was null terminated - - failure - you can use the macro HRESULT_CODE() to get a win32 - error code for all hresult failure cases - - STRSAFE_E_INSUFFICIENT_BUFFER / - HRESULT_CODE(hr) == ERROR_INSUFFICIENT_BUFFER - - this return value is an indication that the print - operation failed due to insufficient space. When this - error occurs, the destination buffer is modified to - contain a truncated version of the ideal result and is - null terminated. This is useful for situations where - truncation is ok. - - It is strongly recommended to use the SUCCEEDED() / FAILED() macros to test the - return value of this function - ---*/ - -STRSAFEAPI StringCbPrintfExA(char* pszDest, size_t cbDest, char** ppszDestEnd, size_t* pcbRemaining, unsigned long dwFlags, const char* pszFormat, ...); -STRSAFEAPI StringCbPrintfExW(wchar_t* pszDest, size_t cbDest, wchar_t** ppszDestEnd, size_t* pcbRemaining, unsigned long dwFlags, const wchar_t* pszFormat, ...); -#ifdef UNICODE -#define StringCbPrintfEx StringCbPrintfExW -#else -#define StringCbPrintfEx StringCbPrintfExA -#endif // !UNICODE - -#ifdef STRSAFE_INLINE -STRSAFEAPI StringCbPrintfExA(char* pszDest, size_t cbDest, char** ppszDestEnd, size_t* pcbRemaining, unsigned long dwFlags, const char* pszFormat, ...) -{ - HRESULT hr; - size_t cchDest; - size_t cchRemaining = 0; - - cchDest = cbDest / sizeof(char); - - if (cchDest > STRSAFE_MAX_CCH) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - va_list argList; - - va_start(argList, pszFormat); - - hr = StringVPrintfExWorkerA(pszDest, cchDest, cbDest, ppszDestEnd, &cchRemaining, dwFlags, pszFormat, argList); - - va_end(argList); - } - - if (SUCCEEDED(hr) || (hr == STRSAFE_E_INSUFFICIENT_BUFFER)) - { - if (pcbRemaining) - { - // safe to multiply cchRemaining * sizeof(char) since cchRemaining < STRSAFE_MAX_CCH and sizeof(char) is 1 - *pcbRemaining = (cchRemaining * sizeof(char)) + (cbDest % sizeof(char)); - } - } - - return hr; -} - -STRSAFEAPI StringCbPrintfExW(wchar_t* pszDest, size_t cbDest, wchar_t** ppszDestEnd, size_t* pcbRemaining, unsigned long dwFlags, const wchar_t* pszFormat, ...) -{ - HRESULT hr; - size_t cchDest; - size_t cchRemaining = 0; - - cchDest = cbDest / sizeof(wchar_t); - - if (cchDest > STRSAFE_MAX_CCH) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - va_list argList; - - va_start(argList, pszFormat); - - hr = StringVPrintfExWorkerW(pszDest, cchDest, cbDest, ppszDestEnd, &cchRemaining, dwFlags, pszFormat, argList); - - va_end(argList); - } - - if (SUCCEEDED(hr) || (hr == STRSAFE_E_INSUFFICIENT_BUFFER)) - { - if (pcbRemaining) - { - // safe to multiply cchRemaining * sizeof(wchar_t) since cchRemaining < STRSAFE_MAX_CCH and sizeof(wchar_t) is 2 - *pcbRemaining = (cchRemaining * sizeof(wchar_t)) + (cbDest % sizeof(wchar_t)); - } - } - - return hr; -} -#endif // STRSAFE_INLINE -#endif // !STRSAFE_NO_CB_FUNCTIONS - - -#ifndef STRSAFE_NO_CCH_FUNCTIONS -/*++ - -STDAPI -StringCchVPrintfEx( - OUT LPTSTR pszDest OPTIONAL, - IN size_t cchDest, - OUT LPTSTR* ppszDestEnd OPTIONAL, - OUT size_t* pcchRemaining OPTIONAL, - IN DWORD dwFlags, - IN LPCTSTR pszFormat OPTIONAL, - IN va_list argList - ); - -Routine Description: - - This routine is a safer version of the C built-in function 'vsprintf' with - some additional parameters. In addition to functionality provided by - StringCchVPrintf, this routine also returns a pointer to the end of the - destination string and the number of characters left in the destination string - including the null terminator. The flags parameter allows additional controls. - -Arguments: - - pszDest - destination string - - cchDest - size of destination buffer in characters. - length must be sufficient to contain the resulting - formatted string plus the null terminator. - - ppszDestEnd - if ppszDestEnd is non-null, the function will return a - pointer to the end of the destination string. If the - function printed any data, the result will point to the - null termination character - - pcchRemaining - if pcchRemaining is non-null, the function will return - the number of characters left in the destination string, - including the null terminator - - dwFlags - controls some details of the string copy: - - STRSAFE_FILL_BEHIND_NULL - if the function succeeds, the low byte of dwFlags will be - used to fill the uninitialize part of destination buffer - behind the null terminator - - STRSAFE_IGNORE_NULLS - treat NULL string pointers like empty strings (TEXT("")) - - STRSAFE_FILL_ON_FAILURE - if the function fails, the low byte of dwFlags will be - used to fill all of the destination buffer, and it will - be null terminated. This will overwrite any truncated - string returned when the failure is - STRSAFE_E_INSUFFICIENT_BUFFER - - STRSAFE_NO_TRUNCATION / - STRSAFE_NULL_ON_FAILURE - if the function fails, the destination buffer will be set - to the empty string. This will overwrite any truncated string - returned when the failure is STRSAFE_E_INSUFFICIENT_BUFFER. - - pszFormat - format string which must be null terminated - - argList - va_list from the variable arguments according to the - stdarg.h convention - -Notes: - Behavior is undefined if destination, format strings or any arguments - strings overlap. - - pszDest and pszFormat should not be NULL unless the STRSAFE_IGNORE_NULLS - flag is specified. If STRSAFE_IGNORE_NULLS is passed, both pszDest and - pszFormat may be NULL. An error may still be returned even though NULLS - are ignored due to insufficient space. - -Return Value: - - S_OK - if there was source data and it was all concatenated and - the resultant dest string was null terminated - - failure - you can use the macro HRESULT_CODE() to get a win32 - error code for all hresult failure cases - - STRSAFE_E_INSUFFICIENT_BUFFER / - HRESULT_CODE(hr) == ERROR_INSUFFICIENT_BUFFER - - this return value is an indication that the print - operation failed due to insufficient space. When this - error occurs, the destination buffer is modified to - contain a truncated version of the ideal result and is - null terminated. This is useful for situations where - truncation is ok. - - It is strongly recommended to use the SUCCEEDED() / FAILED() macros to test the - return value of this function - ---*/ - -STRSAFEAPI StringCchVPrintfExA(char* pszDest, size_t cchDest, char** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags, const char* pszFormat, va_list argList); -STRSAFEAPI StringCchVPrintfExW(wchar_t* pszDest, size_t cchDest, wchar_t** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags, const wchar_t* pszFormat, va_list argList); -#ifdef UNICODE -#define StringCchVPrintfEx StringCchVPrintfExW -#else -#define StringCchVPrintfEx StringCchVPrintfExA -#endif // !UNICODE - -#ifdef STRSAFE_INLINE -STRSAFEAPI StringCchVPrintfExA(char* pszDest, size_t cchDest, char** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags, const char* pszFormat, va_list argList) -{ - HRESULT hr; - - if (cchDest > STRSAFE_MAX_CCH) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - size_t cbDest; - - // safe to multiply cchDest * sizeof(char) since cchDest < STRSAFE_MAX_CCH and sizeof(char) is 1 - cbDest = cchDest * sizeof(char); - - hr = StringVPrintfExWorkerA(pszDest, cchDest, cbDest, ppszDestEnd, pcchRemaining, dwFlags, pszFormat, argList); - } - - return hr; -} - -STRSAFEAPI StringCchVPrintfExW(wchar_t* pszDest, size_t cchDest, wchar_t** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags, const wchar_t* pszFormat, va_list argList) -{ - HRESULT hr; - - if (cchDest > STRSAFE_MAX_CCH) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - size_t cbDest; - - // safe to multiply cchDest * sizeof(wchar_t) since cchDest < STRSAFE_MAX_CCH and sizeof(wchar_t) is 2 - cbDest = cchDest * sizeof(wchar_t); - - hr = StringVPrintfExWorkerW(pszDest, cchDest, cbDest, ppszDestEnd, pcchRemaining, dwFlags, pszFormat, argList); - } - - return hr; -} -#endif // STRSAFE_INLINE -#endif // !STRSAFE_NO_CCH_FUNCTIONS - - -#ifndef STRSAFE_NO_CB_FUNCTIONS -/*++ - -STDAPI -StringCbVPrintfEx( - OUT LPTSTR pszDest OPTIONAL, - IN size_t cbDest, - OUT LPTSTR* ppszDestEnd OPTIONAL, - OUT size_t* pcbRemaining OPTIONAL, - IN DWORD dwFlags, - IN LPCTSTR pszFormat OPTIONAL, - IN va_list argList - ); - -Routine Description: - - This routine is a safer version of the C built-in function 'vsprintf' with - some additional parameters. In addition to functionality provided by - StringCbVPrintf, this routine also returns a pointer to the end of the - destination string and the number of characters left in the destination string - including the null terminator. The flags parameter allows additional controls. - -Arguments: - - pszDest - destination string - - cbDest - size of destination buffer in bytes. - length must be sufficient to contain the resulting - formatted string plus the null terminator. - - ppszDestEnd - if ppszDestEnd is non-null, the function will return - a pointer to the end of the destination string. If the - function printed any data, the result will point to the - null termination character - - pcbRemaining - if pcbRemaining is non-null, the function will return - the number of bytes left in the destination string, - including the null terminator - - dwFlags - controls some details of the string copy: - - STRSAFE_FILL_BEHIND_NULL - if the function succeeds, the low byte of dwFlags will be - used to fill the uninitialize part of destination buffer - behind the null terminator - - STRSAFE_IGNORE_NULLS - treat NULL string pointers like empty strings (TEXT("")) - - STRSAFE_FILL_ON_FAILURE - if the function fails, the low byte of dwFlags will be - used to fill all of the destination buffer, and it will - be null terminated. This will overwrite any truncated - string returned when the failure is - STRSAFE_E_INSUFFICIENT_BUFFER - - STRSAFE_NO_TRUNCATION / - STRSAFE_NULL_ON_FAILURE - if the function fails, the destination buffer will be set - to the empty string. This will overwrite any truncated string - returned when the failure is STRSAFE_E_INSUFFICIENT_BUFFER. - - pszFormat - format string which must be null terminated - - argList - va_list from the variable arguments according to the - stdarg.h convention - -Notes: - Behavior is undefined if destination, format strings or any arguments - strings overlap. - - pszDest and pszFormat should not be NULL unless the STRSAFE_IGNORE_NULLS - flag is specified. If STRSAFE_IGNORE_NULLS is passed, both pszDest and - pszFormat may be NULL. An error may still be returned even though NULLS - are ignored due to insufficient space. - -Return Value: - - S_OK - if there was source data and it was all concatenated and - the resultant dest string was null terminated - - failure - you can use the macro HRESULT_CODE() to get a win32 - error code for all hresult failure cases - - STRSAFE_E_INSUFFICIENT_BUFFER / - HRESULT_CODE(hr) == ERROR_INSUFFICIENT_BUFFER - - this return value is an indication that the print - operation failed due to insufficient space. When this - error occurs, the destination buffer is modified to - contain a truncated version of the ideal result and is - null terminated. This is useful for situations where - truncation is ok. - - It is strongly recommended to use the SUCCEEDED() / FAILED() macros to test the - return value of this function - ---*/ - -STRSAFEAPI StringCbVPrintfExA(char* pszDest, size_t cbDest, char** ppszDestEnd, size_t* pcbRemaining, unsigned long dwFlags, const char* pszFormat, va_list argList); -STRSAFEAPI StringCbVPrintfExW(wchar_t* pszDest, size_t cbDest, wchar_t** ppszDestEnd, size_t* pcbRemaining, unsigned long dwFlags, const wchar_t* pszFormat, va_list argList); -#ifdef UNICODE -#define StringCbVPrintfEx StringCbVPrintfExW -#else -#define StringCbVPrintfEx StringCbVPrintfExA -#endif // !UNICODE - -#ifdef STRSAFE_INLINE -STRSAFEAPI StringCbVPrintfExA(char* pszDest, size_t cbDest, char** ppszDestEnd, size_t* pcbRemaining, unsigned long dwFlags, const char* pszFormat, va_list argList) -{ - HRESULT hr; - size_t cchDest; - size_t cchRemaining = 0; - - cchDest = cbDest / sizeof(char); - - if (cchDest > STRSAFE_MAX_CCH) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - hr = StringVPrintfExWorkerA(pszDest, cchDest, cbDest, ppszDestEnd, &cchRemaining, dwFlags, pszFormat, argList); - } - - if (SUCCEEDED(hr) || (hr == STRSAFE_E_INSUFFICIENT_BUFFER)) - { - if (pcbRemaining) - { - // safe to multiply cchRemaining * sizeof(char) since cchRemaining < STRSAFE_MAX_CCH and sizeof(char) is 1 - *pcbRemaining = (cchRemaining * sizeof(char)) + (cbDest % sizeof(char)); - } - } - - return hr; -} - -STRSAFEAPI StringCbVPrintfExW(wchar_t* pszDest, size_t cbDest, wchar_t** ppszDestEnd, size_t* pcbRemaining, unsigned long dwFlags, const wchar_t* pszFormat, va_list argList) -{ - HRESULT hr; - size_t cchDest; - size_t cchRemaining = 0; - - cchDest = cbDest / sizeof(wchar_t); - - if (cchDest > STRSAFE_MAX_CCH) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - hr = StringVPrintfExWorkerW(pszDest, cchDest, cbDest, ppszDestEnd, &cchRemaining, dwFlags, pszFormat, argList); - } - - if (SUCCEEDED(hr) || (hr == STRSAFE_E_INSUFFICIENT_BUFFER)) - { - if (pcbRemaining) - { - // safe to multiply cchRemaining * sizeof(wchar_t) since cchRemaining < STRSAFE_MAX_CCH and sizeof(wchar_t) is 2 - *pcbRemaining = (cchRemaining * sizeof(wchar_t)) + (cbDest % sizeof(wchar_t)); - } - } - - return hr; -} -#endif // STRSAFE_INLINE -#endif // !STRSAFE_NO_CB_FUNCTIONS - - -#ifndef STRSAFE_NO_CCH_FUNCTIONS -/*++ - -STDAPI -StringCchGets( - OUT LPTSTR pszDest, - IN size_t cchDest - ); - -Routine Description: - - This routine is a safer version of the C built-in function 'gets'. - The size of the destination buffer (in characters) is a parameter and - this function will not write past the end of this buffer and it will - ALWAYS null terminate the destination buffer (unless it is zero length). - - This routine is not a replacement for fgets. That function does not replace - newline characters with a null terminator. - - This function returns a hresult, and not a pointer. It returns - S_OK if any characters were read from stdin and copied to pszDest and - pszDest was null terminated, otherwise it will return a failure code. - -Arguments: - - pszDest - destination string - - cchDest - size of destination buffer in characters. - -Notes: - pszDest should not be NULL. See StringCchGetsEx if you require the handling - of NULL values. - - cchDest must be > 1 for this function to succeed. - -Return Value: - - S_OK - data was read from stdin and copied, and the resultant - dest string was null terminated - - failure - you can use the macro HRESULT_CODE() to get a win32 - error code for all hresult failure cases - - STRSAFE_E_END_OF_FILE / - HRESULT_CODE(hr) == ERROR_HANDLE_EOF - - this return value indicates an error or end-of-file - condition, use feof or ferror to determine which one has - occured. - - STRSAFE_E_INSUFFICIENT_BUFFER / - HRESULT_CODE(hr) == ERROR_INSUFFICIENT_BUFFER - - this return value is an indication that there was - insufficient space in the destination buffer to copy any - data - - It is strongly recommended to use the SUCCEEDED() / FAILED() macros to test the - return value of this function. - ---*/ - -#ifndef STRSAFE_LIB_IMPL -STRSAFE_INLINE_API StringCchGetsA(char* pszDest, size_t cchDest); -STRSAFE_INLINE_API StringCchGetsW(wchar_t* pszDest, size_t cchDest); -#ifdef UNICODE -#define StringCchGets StringCchGetsW -#else -#define StringCchGets StringCchGetsA -#endif // !UNICODE - -STRSAFE_INLINE_API StringCchGetsA(char* pszDest, size_t cchDest) -{ - HRESULT hr; - - if (cchDest > STRSAFE_MAX_CCH) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - size_t cbDest; - - // safe to multiply cchDest * sizeof(char) since cchDest < STRSAFE_MAX_CCH and sizeof(char) is 1 - cbDest = cchDest * sizeof(char); - - hr = StringGetsExWorkerA(pszDest, cchDest, cbDest, NULL, NULL, 0); - } - - return hr; -} - -STRSAFE_INLINE_API StringCchGetsW(wchar_t* pszDest, size_t cchDest) -{ - HRESULT hr; - - if (cchDest > STRSAFE_MAX_CCH) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - size_t cbDest; - - // safe to multiply cchDest * sizeof(wchar_t) since cchDest < STRSAFE_MAX_CCH and sizeof(wchar_t) is 2 - cbDest = cchDest * sizeof(wchar_t); - - hr = StringGetsExWorkerW(pszDest, cchDest, cbDest, NULL, NULL, 0); - } - - return hr; -} -#endif // !STRSAFE_NO_CCH_FUNCTIONS -#endif // !STRSAFE_LIB_IMPL - -#ifndef STRSAFE_NO_CB_FUNCTIONS -/*++ - -STDAPI -StringCbGets( - OUT LPTSTR pszDest, - IN size_t cbDest - ); - -Routine Description: - - This routine is a safer version of the C built-in function 'gets'. - The size of the destination buffer (in bytes) is a parameter and - this function will not write past the end of this buffer and it will - ALWAYS null terminate the destination buffer (unless it is zero length). - - This routine is not a replacement for fgets. That function does not replace - newline characters with a null terminator. - - This function returns a hresult, and not a pointer. It returns - S_OK if any characters were read from stdin and copied to pszDest - and pszDest was null terminated, otherwise it will return a failure code. - -Arguments: - - pszDest - destination string - - cbDest - size of destination buffer in bytes. - -Notes: - pszDest should not be NULL. See StringCbGetsEx if you require the handling - of NULL values. - - cbDest must be > sizeof(TCHAR) for this function to succeed. - -Return Value: - - S_OK - data was read from stdin and copied, and the resultant - dest string was null terminated - - failure - you can use the macro HRESULT_CODE() to get a win32 - error code for all hresult failure cases - - STRSAFE_E_END_OF_FILE / - HRESULT_CODE(hr) == ERROR_HANDLE_EOF - - this return value indicates an error or end-of-file - condition, use feof or ferror to determine which one has - occured. - - STRSAFE_E_INSUFFICIENT_BUFFER / - HRESULT_CODE(hr) == ERROR_INSUFFICIENT_BUFFER - - this return value is an indication that there was - insufficient space in the destination buffer to copy any - data - - It is strongly recommended to use the SUCCEEDED() / FAILED() macros to test the - return value of this function. - ---*/ - -#ifndef STRSAFE_LIB_IMPL -STRSAFE_INLINE_API StringCbGetsA(char* pszDest, size_t cbDest); -STRSAFE_INLINE_API StringCbGetsW(wchar_t* pszDest, size_t cbDest); -#ifdef UNICODE -#define StringCbGets StringCbGetsW -#else -#define StringCbGets StringCbGetsA -#endif // !UNICODE - -STRSAFE_INLINE_API StringCbGetsA(char* pszDest, size_t cbDest) -{ - HRESULT hr; - size_t cchDest; - - // convert to count of characters - cchDest = cbDest / sizeof(char); - - if (cchDest > STRSAFE_MAX_CCH) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - hr = StringGetsExWorkerA(pszDest, cchDest, cbDest, NULL, NULL, 0); - } - - return hr; -} - -STRSAFE_INLINE_API StringCbGetsW(wchar_t* pszDest, size_t cbDest) -{ - HRESULT hr; - size_t cchDest; - - // convert to count of characters - cchDest = cbDest / sizeof(wchar_t); - - if (cchDest > STRSAFE_MAX_CCH) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - hr = StringGetsExWorkerW(pszDest, cchDest, cbDest, NULL, NULL, 0); - } - - return hr; -} -#endif // !STRSAFE_NO_CB_FUNCTIONS -#endif // !STRSAFE_LIB_IMPL - -#ifndef STRSAFE_NO_CCH_FUNCTIONS -/*++ - -STDAPI -StringCchGetsEx( - OUT LPTSTR pszDest OPTIONAL, - IN size_t cchDest, - OUT LPTSTR* ppszDestEnd OPTIONAL, - OUT size_t* pcchRemaining OPTIONAL, - IN DWORD dwFlags - ); - -Routine Description: - - This routine is a safer version of the C built-in function 'gets' with - some additional parameters. In addition to functionality provided by - StringCchGets, this routine also returns a pointer to the end of the - destination string and the number of characters left in the destination string - including the null terminator. The flags parameter allows additional controls. - -Arguments: - - pszDest - destination string - - cchDest - size of destination buffer in characters. - - ppszDestEnd - if ppszDestEnd is non-null, the function will return a - pointer to the end of the destination string. If the - function copied any data, the result will point to the - null termination character - - pcchRemaining - if pcchRemaining is non-null, the function will return the - number of characters left in the destination string, - including the null terminator - - dwFlags - controls some details of the string copy: - - STRSAFE_FILL_BEHIND_NULL - if the function succeeds, the low byte of dwFlags will be - used to fill the uninitialize part of destination buffer - behind the null terminator - - STRSAFE_IGNORE_NULLS - treat NULL string pointers like empty strings (TEXT("")). - - STRSAFE_FILL_ON_FAILURE - if the function fails, the low byte of dwFlags will be - used to fill all of the destination buffer, and it will - be null terminated. - - STRSAFE_NO_TRUNCATION / - STRSAFE_NULL_ON_FAILURE - if the function fails, the destination buffer will be set - to the empty string. - -Notes: - pszDest should not be NULL unless the STRSAFE_IGNORE_NULLS flag is specified. - If STRSAFE_IGNORE_NULLS is passed and pszDest is NULL, an error may still be - returned even though NULLS are ignored - - cchDest must be > 1 for this function to succeed. - -Return Value: - - S_OK - data was read from stdin and copied, and the resultant - dest string was null terminated - - failure - you can use the macro HRESULT_CODE() to get a win32 - error code for all hresult failure cases - - STRSAFE_E_END_OF_FILE / - HRESULT_CODE(hr) == ERROR_HANDLE_EOF - - this return value indicates an error or end-of-file - condition, use feof or ferror to determine which one has - occured. - - STRSAFE_E_INSUFFICIENT_BUFFER / - HRESULT_CODE(hr) == ERROR_INSUFFICIENT_BUFFER - - this return value is an indication that there was - insufficient space in the destination buffer to copy any - data - - It is strongly recommended to use the SUCCEEDED() / FAILED() macros to test the - return value of this function. - ---*/ - -#ifndef STRSAFE_LIB_IMPL -STRSAFE_INLINE_API StringCchGetsExA(char* pszDest, size_t cchDest, char** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags); -STRSAFE_INLINE_API StringCchGetsExW(wchar_t* pszDest, size_t cchDest, wchar_t** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags); -#ifdef UNICODE -#define StringCchGetsEx StringCchGetsExW -#else -#define StringCchGetsEx StringCchGetsExA -#endif // !UNICODE - -STRSAFE_INLINE_API StringCchGetsExA(char* pszDest, size_t cchDest, char** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags) -{ - HRESULT hr; - - if (cchDest > STRSAFE_MAX_CCH) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - size_t cbDest; - - // safe to multiply cchDest * sizeof(char) since cchDest < STRSAFE_MAX_CCH and sizeof(char) is 1 - cbDest = cchDest * sizeof(char); - - hr = StringGetsExWorkerA(pszDest, cchDest, cbDest, ppszDestEnd, pcchRemaining, dwFlags); - } - - return hr; -} - -STRSAFE_INLINE_API StringCchGetsExW(wchar_t* pszDest, size_t cchDest, wchar_t** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags) -{ - HRESULT hr; - - if (cchDest > STRSAFE_MAX_CCH) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - size_t cbDest; - - // safe to multiply cchDest * sizeof(wchar_t) since cchDest < STRSAFE_MAX_CCH and sizeof(wchar_t) is 2 - cbDest = cchDest * sizeof(wchar_t); - - hr = StringGetsExWorkerW(pszDest, cchDest, cbDest, ppszDestEnd, pcchRemaining, dwFlags); - } - - return hr; -} -#endif // !STRSAFE_NO_CCH_FUNCTIONS -#endif // !STRSAFE_LIB_IMPL - -#ifndef STRSAFE_NO_CB_FUNCTIONS -/*++ - -STDAPI -StringCbGetsEx( - OUT LPTSTR pszDest OPTIONAL, - IN size_t cbDest, - OUT LPTSTR* ppszDestEnd OPTIONAL, - OUT size_t* pcbRemaining OPTIONAL, - IN DWORD dwFlags - ); - -Routine Description: - - This routine is a safer version of the C built-in function 'gets' with - some additional parameters. In addition to functionality provided by - StringCbGets, this routine also returns a pointer to the end of the - destination string and the number of characters left in the destination string - including the null terminator. The flags parameter allows additional controls. - -Arguments: - - pszDest - destination string - - cbDest - size of destination buffer in bytes. - - ppszDestEnd - if ppszDestEnd is non-null, the function will return a - pointer to the end of the destination string. If the - function copied any data, the result will point to the - null termination character - - pcbRemaining - if pbRemaining is non-null, the function will return the - number of bytes left in the destination string, - including the null terminator - - dwFlags - controls some details of the string copy: - - STRSAFE_FILL_BEHIND_NULL - if the function succeeds, the low byte of dwFlags will be - used to fill the uninitialize part of destination buffer - behind the null terminator - - STRSAFE_IGNORE_NULLS - treat NULL string pointers like empty strings (TEXT("")). - - STRSAFE_FILL_ON_FAILURE - if the function fails, the low byte of dwFlags will be - used to fill all of the destination buffer, and it will - be null terminated. - - STRSAFE_NO_TRUNCATION / - STRSAFE_NULL_ON_FAILURE - if the function fails, the destination buffer will be set - to the empty string. - -Notes: - pszDest should not be NULL unless the STRSAFE_IGNORE_NULLS flag is specified. - If STRSAFE_IGNORE_NULLS is passed and pszDest is NULL, an error may still be - returned even though NULLS are ignored - - cbDest must be > sizeof(TCHAR) for this function to succeed - -Return Value: - - S_OK - data was read from stdin and copied, and the resultant - dest string was null terminated - - failure - you can use the macro HRESULT_CODE() to get a win32 - error code for all hresult failure cases - - STRSAFE_E_END_OF_FILE / - HRESULT_CODE(hr) == ERROR_HANDLE_EOF - - this return value indicates an error or end-of-file - condition, use feof or ferror to determine which one has - occured. - - STRSAFE_E_INSUFFICIENT_BUFFER / - HRESULT_CODE(hr) == ERROR_INSUFFICIENT_BUFFER - - this return value is an indication that there was - insufficient space in the destination buffer to copy any - data - - It is strongly recommended to use the SUCCEEDED() / FAILED() macros to test the - return value of this function. - ---*/ - -#ifndef STRSAFE_LIB_IMPL -STRSAFE_INLINE_API StringCbGetsExA(char* pszDest, size_t cbDest, char** ppszDestEnd, size_t* pbRemaining, unsigned long dwFlags); -STRSAFE_INLINE_API StringCbGetsExW(wchar_t* pszDest, size_t cbDest, wchar_t** ppszDestEnd, size_t* pcbRemaining, unsigned long dwFlags); -#ifdef UNICODE -#define StringCbGetsEx StringCbGetsExW -#else -#define StringCbGetsEx StringCbGetsExA -#endif // !UNICODE - -STRSAFE_INLINE_API StringCbGetsExA(char* pszDest, size_t cbDest, char** ppszDestEnd, size_t* pcbRemaining, unsigned long dwFlags) -{ - HRESULT hr; - size_t cchDest; - size_t cchRemaining = 0; - - cchDest = cbDest / sizeof(char); - - if (cchDest > STRSAFE_MAX_CCH) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - hr = StringGetsExWorkerA(pszDest, cchDest, cbDest, ppszDestEnd, &cchRemaining, dwFlags); - } - - if (SUCCEEDED(hr) || - (hr == STRSAFE_E_INSUFFICIENT_BUFFER) || - (hr == STRSAFE_E_END_OF_FILE)) - { - if (pcbRemaining) - { - // safe to multiply cchRemaining * sizeof(char) since cchRemaining < STRSAFE_MAX_CCH and sizeof(char) is 1 - *pcbRemaining = (cchRemaining * sizeof(char)) + (cbDest % sizeof(char)); - } - } - - return hr; -} - -STRSAFE_INLINE_API StringCbGetsExW(wchar_t* pszDest, size_t cbDest, wchar_t** ppszDestEnd, size_t* pcbRemaining, unsigned long dwFlags) -{ - HRESULT hr; - size_t cchDest; - size_t cchRemaining = 0; - - cchDest = cbDest / sizeof(wchar_t); - - if (cchDest > STRSAFE_MAX_CCH) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - hr = StringGetsExWorkerW(pszDest, cchDest, cbDest, ppszDestEnd, &cchRemaining, dwFlags); - } - - if (SUCCEEDED(hr) || - (hr == STRSAFE_E_INSUFFICIENT_BUFFER) || - (hr == STRSAFE_E_END_OF_FILE)) - { - if (pcbRemaining) - { - // safe to multiply cchRemaining * sizeof(wchar_t) since cchRemaining < STRSAFE_MAX_CCH and sizeof(wchar_t) is 2 - *pcbRemaining = (cchRemaining * sizeof(wchar_t)) + (cbDest % sizeof(wchar_t)); - } - } - - return hr; -} -#endif // !STRSAFE_NO_CB_FUNCTIONS -#endif // !STRSAFE_LIB_IMPL - -#ifndef STRSAFE_NO_CCH_FUNCTIONS -/*++ - -STDAPI -StringCchLength( - IN LPCTSTR psz, - IN size_t cchMax, - OUT size_t* pcch OPTIONAL - ); - -Routine Description: - - This routine is a safer version of the C built-in function 'strlen'. - It is used to make sure a string is not larger than a given length, and - it optionally returns the current length in characters not including - the null terminator. - - This function returns a hresult, and not a pointer. It returns - S_OK if the string is non-null and the length including the null - terminator is less than or equal to cchMax characters. - -Arguments: - - psz - string to check the length of - - cchMax - maximum number of characters including the null terminator - that psz is allowed to contain - - pcch - if the function succeeds and pcch is non-null, the current length - in characters of psz excluding the null terminator will be returned. - This out parameter is equivalent to the return value of strlen(psz) - -Notes: - psz can be null but the function will fail - - cchMax should be greater than zero or the function will fail - -Return Value: - - S_OK - psz is non-null and the length including the null - terminator is less than or equal to cchMax characters - - failure - you can use the macro HRESULT_CODE() to get a win32 - error code for all hresult failure cases - - It is strongly recommended to use the SUCCEEDED() / FAILED() macros to test the - return value of this function. - ---*/ - -STRSAFEAPI StringCchLengthA(const char* psz, size_t cchMax, size_t* pcch); -STRSAFEAPI StringCchLengthW(const wchar_t* psz, size_t cchMax, size_t* pcch); -#ifdef UNICODE -#define StringCchLength StringCchLengthW -#else -#define StringCchLength StringCchLengthA -#endif // !UNICODE - -#ifdef STRSAFE_INLINE -STRSAFEAPI StringCchLengthA(const char* psz, size_t cchMax, size_t* pcch) -{ - HRESULT hr; - - if ((psz == NULL) || (cchMax > STRSAFE_MAX_CCH)) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - hr = StringLengthWorkerA(psz, cchMax, pcch); - } - - return hr; -} - -STRSAFEAPI StringCchLengthW(const wchar_t* psz, size_t cchMax, size_t* pcch) -{ - HRESULT hr; - - if ((psz == NULL) || (cchMax > STRSAFE_MAX_CCH)) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - hr = StringLengthWorkerW(psz, cchMax, pcch); - } - - return hr; -} -#endif // STRSAFE_INLINE -#endif // !STRSAFE_NO_CCH_FUNCTIONS - - -#ifndef STRSAFE_NO_CB_FUNCTIONS -/*++ - -STDAPI -StringCbLength( - IN LPCTSTR psz, - IN size_t cbMax, - OUT size_t* pcb OPTIONAL - ); - -Routine Description: - - This routine is a safer version of the C built-in function 'strlen'. - It is used to make sure a string is not larger than a given length, and - it optionally returns the current length in bytes not including - the null terminator. - - This function returns a hresult, and not a pointer. It returns - S_OK if the string is non-null and the length including the null - terminator is less than or equal to cbMax bytes. - -Arguments: - - psz - string to check the length of - - cbMax - maximum number of bytes including the null terminator - that psz is allowed to contain - - pcb - if the function succeeds and pcb is non-null, the current length - in bytes of psz excluding the null terminator will be returned. - This out parameter is equivalent to the return value of strlen(psz) * sizeof(TCHAR) - -Notes: - psz can be null but the function will fail - - cbMax should be greater than or equal to sizeof(TCHAR) or the function will fail - -Return Value: - - S_OK - psz is non-null and the length including the null - terminator is less than or equal to cbMax bytes - - failure - you can use the macro HRESULT_CODE() to get a win32 - error code for all hresult failure cases - - It is strongly recommended to use the SUCCEEDED() / FAILED() macros to test the - return value of this function. - ---*/ - -STRSAFEAPI StringCbLengthA(const char* psz, size_t cchMax, size_t* pcch); -STRSAFEAPI StringCbLengthW(const wchar_t* psz, size_t cchMax, size_t* pcch); -#ifdef UNICODE -#define StringCbLength StringCbLengthW -#else -#define StringCbLength StringCbLengthA -#endif // !UNICODE - -#ifdef STRSAFE_INLINE -STRSAFEAPI StringCbLengthA(const char* psz, size_t cbMax, size_t* pcb) -{ - HRESULT hr; - size_t cchMax; - size_t cch = 0; - - cchMax = cbMax / sizeof(char); - - if ((psz == NULL) || (cchMax > STRSAFE_MAX_CCH)) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - hr = StringLengthWorkerA(psz, cchMax, &cch); - } - - if (SUCCEEDED(hr) && pcb) - { - // safe to multiply cch * sizeof(char) since cch < STRSAFE_MAX_CCH and sizeof(char) is 1 - *pcb = cch * sizeof(char); - } - - return hr; -} - -STRSAFEAPI StringCbLengthW(const wchar_t* psz, size_t cbMax, size_t* pcb) -{ - HRESULT hr; - size_t cchMax; - size_t cch = 0; - - cchMax = cbMax / sizeof(wchar_t); - - if ((psz == NULL) || (cchMax > STRSAFE_MAX_CCH)) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - hr = StringLengthWorkerW(psz, cchMax, &cch); - } - - if (SUCCEEDED(hr) && pcb) - { - // safe to multiply cch * sizeof(wchar_t) since cch < STRSAFE_MAX_CCH and sizeof(wchar_t) is 2 - *pcb = cch * sizeof(wchar_t); - } - - return hr; -} -#endif // STRSAFE_INLINE -#endif // !STRSAFE_NO_CB_FUNCTIONS - - -// these are the worker functions that actually do the work -#ifdef STRSAFE_INLINE -STRSAFEAPI StringCopyWorkerA(char* pszDest, size_t cchDest, const char* pszSrc) -{ - HRESULT hr = S_OK; - - if (cchDest == 0) - { - // can not null terminate a zero-byte dest buffer - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - while (cchDest && (*pszSrc != '\0')) - { - *pszDest++ = *pszSrc++; - cchDest--; - } - - if (cchDest == 0) - { - // we are going to truncate pszDest - pszDest--; - hr = STRSAFE_E_INSUFFICIENT_BUFFER; - } - - *pszDest= '\0'; - } - - return hr; -} - -STRSAFEAPI StringCopyWorkerW(wchar_t* pszDest, size_t cchDest, const wchar_t* pszSrc) -{ - HRESULT hr = S_OK; - - if (cchDest == 0) - { - // can not null terminate a zero-byte dest buffer - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - while (cchDest && (*pszSrc != L'\0')) - { - *pszDest++ = *pszSrc++; - cchDest--; - } - - if (cchDest == 0) - { - // we are going to truncate pszDest - pszDest--; - hr = STRSAFE_E_INSUFFICIENT_BUFFER; - } - - *pszDest= L'\0'; - } - - return hr; -} - -STRSAFEAPI StringCopyExWorkerA(char* pszDest, size_t cchDest, size_t cbDest, const char* pszSrc, char** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags) -{ - HRESULT hr = S_OK; - char* pszDestEnd = pszDest; - size_t cchRemaining = 0; - - // ASSERT(cbDest == (cchDest * sizeof(char)) || - // cbDest == (cchDest * sizeof(char)) + (cbDest % sizeof(char))); - - // only accept valid flags - if (dwFlags & (~STRSAFE_VALID_FLAGS)) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - if (dwFlags & STRSAFE_IGNORE_NULLS) - { - if (pszDest == NULL) - { - if ((cchDest != 0) || (cbDest != 0)) - { - // NULL pszDest and non-zero cchDest/cbDest is invalid - hr = STRSAFE_E_INVALID_PARAMETER; - } - } - - if (pszSrc == NULL) - { - pszSrc = ""; - } - } - - if (SUCCEEDED(hr)) - { - if (cchDest == 0) - { - pszDestEnd = pszDest; - cchRemaining = 0; - - // only fail if there was actually src data to copy - if (*pszSrc != '\0') - { - if (pszDest == NULL) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - hr = STRSAFE_E_INSUFFICIENT_BUFFER; - } - } - } - else - { - pszDestEnd = pszDest; - cchRemaining = cchDest; - - while (cchRemaining && (*pszSrc != '\0')) - { - *pszDestEnd++= *pszSrc++; - cchRemaining--; - } - - if (cchRemaining > 0) - { - if (dwFlags & STRSAFE_FILL_BEHIND_NULL) - { - memset(pszDestEnd + 1, STRSAFE_GET_FILL_PATTERN(dwFlags), ((cchRemaining - 1) * sizeof(char)) + (cbDest % sizeof(char))); - } - } - else - { - // we are going to truncate pszDest - pszDestEnd--; - cchRemaining++; - - hr = STRSAFE_E_INSUFFICIENT_BUFFER; - } - - *pszDestEnd = '\0'; - } - } - } - - if (FAILED(hr)) - { - if (pszDest) - { - if (dwFlags & STRSAFE_FILL_ON_FAILURE) - { - memset(pszDest, STRSAFE_GET_FILL_PATTERN(dwFlags), cbDest); - - if (STRSAFE_GET_FILL_PATTERN(dwFlags) == 0) - { - pszDestEnd = pszDest; - cchRemaining = cchDest; - } - else if (cchDest > 0) - { - pszDestEnd = pszDest + cchDest - 1; - cchRemaining = 1; - - // null terminate the end of the string - *pszDestEnd = '\0'; - } - } - - if (dwFlags & (STRSAFE_NULL_ON_FAILURE | STRSAFE_NO_TRUNCATION)) - { - if (cchDest > 0) - { - pszDestEnd = pszDest; - cchRemaining = cchDest; - - // null terminate the beginning of the string - *pszDestEnd = '\0'; - } - } - } - } - - if (SUCCEEDED(hr) || (hr == STRSAFE_E_INSUFFICIENT_BUFFER)) - { - if (ppszDestEnd) - { - *ppszDestEnd = pszDestEnd; - } - - if (pcchRemaining) - { - *pcchRemaining = cchRemaining; - } - } - - return hr; -} - -STRSAFEAPI StringCopyExWorkerW(wchar_t* pszDest, size_t cchDest, size_t cbDest, const wchar_t* pszSrc, wchar_t** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags) -{ - HRESULT hr = S_OK; - wchar_t* pszDestEnd = pszDest; - size_t cchRemaining = 0; - - // ASSERT(cbDest == (cchDest * sizeof(wchar_t)) || - // cbDest == (cchDest * sizeof(wchar_t)) + (cbDest % sizeof(wchar_t))); - - // only accept valid flags - if (dwFlags & (~STRSAFE_VALID_FLAGS)) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - if (dwFlags & STRSAFE_IGNORE_NULLS) - { - if (pszDest == NULL) - { - if ((cchDest != 0) || (cbDest != 0)) - { - // NULL pszDest and non-zero cchDest/cbDest is invalid - hr = STRSAFE_E_INVALID_PARAMETER; - } - } - - if (pszSrc == NULL) - { - pszSrc = L""; - } - } - - if (SUCCEEDED(hr)) - { - if (cchDest == 0) - { - pszDestEnd = pszDest; - cchRemaining = 0; - - // only fail if there was actually src data to copy - if (*pszSrc != L'\0') - { - if (pszDest == NULL) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - hr = STRSAFE_E_INSUFFICIENT_BUFFER; - } - } - } - else - { - pszDestEnd = pszDest; - cchRemaining = cchDest; - - while (cchRemaining && (*pszSrc != L'\0')) - { - *pszDestEnd++= *pszSrc++; - cchRemaining--; - } - - if (cchRemaining > 0) - { - if (dwFlags & STRSAFE_FILL_BEHIND_NULL) - { - memset(pszDestEnd + 1, STRSAFE_GET_FILL_PATTERN(dwFlags), ((cchRemaining - 1) * sizeof(wchar_t)) + (cbDest % sizeof(wchar_t))); - } - } - else - { - // we are going to truncate pszDest - pszDestEnd--; - cchRemaining++; - - hr = STRSAFE_E_INSUFFICIENT_BUFFER; - } - - *pszDestEnd = L'\0'; - } - } - } - - if (FAILED(hr)) - { - if (pszDest) - { - if (dwFlags & STRSAFE_FILL_ON_FAILURE) - { - memset(pszDest, STRSAFE_GET_FILL_PATTERN(dwFlags), cbDest); - - if (STRSAFE_GET_FILL_PATTERN(dwFlags) == 0) - { - pszDestEnd = pszDest; - cchRemaining = cchDest; - } - else if (cchDest > 0) - { - pszDestEnd = pszDest + cchDest - 1; - cchRemaining = 1; - - // null terminate the end of the string - *pszDestEnd = L'\0'; - } - } - - if (dwFlags & (STRSAFE_NULL_ON_FAILURE | STRSAFE_NO_TRUNCATION)) - { - if (cchDest > 0) - { - pszDestEnd = pszDest; - cchRemaining = cchDest; - - // null terminate the beginning of the string - *pszDestEnd = L'\0'; - } - } - } - } - - if (SUCCEEDED(hr) || (hr == STRSAFE_E_INSUFFICIENT_BUFFER)) - { - if (ppszDestEnd) - { - *ppszDestEnd = pszDestEnd; - } - - if (pcchRemaining) - { - *pcchRemaining = cchRemaining; - } - } - - return hr; -} - -STRSAFEAPI StringCopyNWorkerA(char* pszDest, size_t cchDest, const char* pszSrc, size_t cchSrc) -{ - HRESULT hr = S_OK; - - if (cchDest == 0) - { - // can not null terminate a zero-byte dest buffer - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - while (cchDest && cchSrc && (*pszSrc != '\0')) - { - *pszDest++= *pszSrc++; - cchDest--; - cchSrc--; - } - - if (cchDest == 0) - { - // we are going to truncate pszDest - pszDest--; - hr = STRSAFE_E_INSUFFICIENT_BUFFER; - } - - *pszDest= '\0'; - } - - return hr; -} - -STRSAFEAPI StringCopyNWorkerW(wchar_t* pszDest, size_t cchDest, const wchar_t* pszSrc, size_t cchSrc) -{ - HRESULT hr = S_OK; - - if (cchDest == 0) - { - // can not null terminate a zero-byte dest buffer - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - while (cchDest && cchSrc && (*pszSrc != L'\0')) - { - *pszDest++= *pszSrc++; - cchDest--; - cchSrc--; - } - - if (cchDest == 0) - { - // we are going to truncate pszDest - pszDest--; - hr = STRSAFE_E_INSUFFICIENT_BUFFER; - } - - *pszDest= L'\0'; - } - - return hr; -} - -STRSAFEAPI StringCopyNExWorkerA(char* pszDest, size_t cchDest, size_t cbDest, const char* pszSrc, size_t cchSrc, char** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags) -{ - HRESULT hr = S_OK; - char* pszDestEnd = pszDest; - size_t cchRemaining = 0; - - // ASSERT(cbDest == (cchDest * sizeof(char)) || - // cbDest == (cchDest * sizeof(char)) + (cbDest % sizeof(char))); - - // only accept valid flags - if (dwFlags & (~STRSAFE_VALID_FLAGS)) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - if (dwFlags & STRSAFE_IGNORE_NULLS) - { - if (pszDest == NULL) - { - if ((cchDest != 0) || (cbDest != 0)) - { - // NULL pszDest and non-zero cchDest/cbDest is invalid - hr = STRSAFE_E_INVALID_PARAMETER; - } - } - - if (pszSrc == NULL) - { - pszSrc = ""; - } - } - - if (SUCCEEDED(hr)) - { - if (cchDest == 0) - { - pszDestEnd = pszDest; - cchRemaining = 0; - - // only fail if there was actually src data to copy - if (*pszSrc != '\0') - { - if (pszDest == NULL) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - hr = STRSAFE_E_INSUFFICIENT_BUFFER; - } - } - } - else - { - pszDestEnd = pszDest; - cchRemaining = cchDest; - - while (cchRemaining && cchSrc && (*pszSrc != '\0')) - { - *pszDestEnd++= *pszSrc++; - cchRemaining--; - cchSrc--; - } - - if (cchRemaining > 0) - { - if (dwFlags & STRSAFE_FILL_BEHIND_NULL) - { - memset(pszDestEnd + 1, STRSAFE_GET_FILL_PATTERN(dwFlags), ((cchRemaining - 1) * sizeof(char)) + (cbDest % sizeof(char))); - } - } - else - { - // we are going to truncate pszDest - pszDestEnd--; - cchRemaining++; - - hr = STRSAFE_E_INSUFFICIENT_BUFFER; - } - - *pszDestEnd = '\0'; - } - } - } - - if (FAILED(hr)) - { - if (pszDest) - { - if (dwFlags & STRSAFE_FILL_ON_FAILURE) - { - memset(pszDest, STRSAFE_GET_FILL_PATTERN(dwFlags), cbDest); - - if (STRSAFE_GET_FILL_PATTERN(dwFlags) == 0) - { - pszDestEnd = pszDest; - cchRemaining = cchDest; - } - else if (cchDest > 0) - { - pszDestEnd = pszDest + cchDest - 1; - cchRemaining = 1; - - // null terminate the end of the string - *pszDestEnd = '\0'; - } - } - - if (dwFlags & (STRSAFE_NULL_ON_FAILURE | STRSAFE_NO_TRUNCATION)) - { - if (cchDest > 0) - { - pszDestEnd = pszDest; - cchRemaining = cchDest; - - // null terminate the beginning of the string - *pszDestEnd = '\0'; - } - } - } - } - - if (SUCCEEDED(hr) || (hr == STRSAFE_E_INSUFFICIENT_BUFFER)) - { - if (ppszDestEnd) - { - *ppszDestEnd = pszDestEnd; - } - - if (pcchRemaining) - { - *pcchRemaining = cchRemaining; - } - } - - return hr; -} - -STRSAFEAPI StringCopyNExWorkerW(wchar_t* pszDest, size_t cchDest, size_t cbDest, const wchar_t* pszSrc, size_t cchSrc, wchar_t** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags) -{ - HRESULT hr = S_OK; - wchar_t* pszDestEnd = pszDest; - size_t cchRemaining = 0; - - // ASSERT(cbDest == (cchDest * sizeof(wchar_t)) || - // cbDest == (cchDest * sizeof(wchar_t)) + (cbDest % sizeof(wchar_t))); - - // only accept valid flags - if (dwFlags & (~STRSAFE_VALID_FLAGS)) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - if (dwFlags & STRSAFE_IGNORE_NULLS) - { - if (pszDest == NULL) - { - if ((cchDest != 0) || (cbDest != 0)) - { - // NULL pszDest and non-zero cchDest/cbDest is invalid - hr = STRSAFE_E_INVALID_PARAMETER; - } - } - - if (pszSrc == NULL) - { - pszSrc = L""; - } - } - - if (SUCCEEDED(hr)) - { - if (cchDest == 0) - { - pszDestEnd = pszDest; - cchRemaining = 0; - - // only fail if there was actually src data to copy - if (*pszSrc != L'\0') - { - if (pszDest == NULL) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - hr = STRSAFE_E_INSUFFICIENT_BUFFER; - } - } - } - else - { - pszDestEnd = pszDest; - cchRemaining = cchDest; - - while (cchRemaining && cchSrc && (*pszSrc != L'\0')) - { - *pszDestEnd++= *pszSrc++; - cchRemaining--; - cchSrc--; - } - - if (cchRemaining > 0) - { - if (dwFlags & STRSAFE_FILL_BEHIND_NULL) - { - memset(pszDestEnd + 1, STRSAFE_GET_FILL_PATTERN(dwFlags), ((cchRemaining - 1) * sizeof(wchar_t)) + (cbDest % sizeof(wchar_t))); - } - } - else - { - // we are going to truncate pszDest - pszDestEnd--; - cchRemaining++; - - hr = STRSAFE_E_INSUFFICIENT_BUFFER; - } - - *pszDestEnd = L'\0'; - } - } - } - - if (FAILED(hr)) - { - if (pszDest) - { - if (dwFlags & STRSAFE_FILL_ON_FAILURE) - { - memset(pszDest, STRSAFE_GET_FILL_PATTERN(dwFlags), cbDest); - - if (STRSAFE_GET_FILL_PATTERN(dwFlags) == 0) - { - pszDestEnd = pszDest; - cchRemaining = cchDest; - } - else if (cchDest > 0) - { - pszDestEnd = pszDest + cchDest - 1; - cchRemaining = 1; - - // null terminate the end of the string - *pszDestEnd = L'\0'; - } - } - - if (dwFlags & (STRSAFE_NULL_ON_FAILURE | STRSAFE_NO_TRUNCATION)) - { - if (cchDest > 0) - { - pszDestEnd = pszDest; - cchRemaining = cchDest; - - // null terminate the beginning of the string - *pszDestEnd = L'\0'; - } - } - } - } - - if (SUCCEEDED(hr) || (hr == STRSAFE_E_INSUFFICIENT_BUFFER)) - { - if (ppszDestEnd) - { - *ppszDestEnd = pszDestEnd; - } - - if (pcchRemaining) - { - *pcchRemaining = cchRemaining; - } - } - - return hr; -} - -STRSAFEAPI StringCatWorkerA(char* pszDest, size_t cchDest, const char* pszSrc) -{ - HRESULT hr; - size_t cchDestCurrent; - - hr = StringLengthWorkerA(pszDest, cchDest, &cchDestCurrent); - - if (SUCCEEDED(hr)) - { - hr = StringCopyWorkerA(pszDest + cchDestCurrent, - cchDest - cchDestCurrent, - pszSrc); - } - - return hr; -} - -STRSAFEAPI StringCatWorkerW(wchar_t* pszDest, size_t cchDest, const wchar_t* pszSrc) -{ - HRESULT hr; - size_t cchDestCurrent; - - hr = StringLengthWorkerW(pszDest, cchDest, &cchDestCurrent); - - if (SUCCEEDED(hr)) - { - hr = StringCopyWorkerW(pszDest + cchDestCurrent, - cchDest - cchDestCurrent, - pszSrc); - } - - return hr; -} - -STRSAFEAPI StringCatExWorkerA(char* pszDest, size_t cchDest, size_t cbDest, const char* pszSrc, char** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags) -{ - HRESULT hr = S_OK; - char* pszDestEnd = pszDest; - size_t cchRemaining = 0; - - // ASSERT(cbDest == (cchDest * sizeof(char)) || - // cbDest == (cchDest * sizeof(char)) + (cbDest % sizeof(char))); - - // only accept valid flags - if (dwFlags & (~STRSAFE_VALID_FLAGS)) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - size_t cchDestCurrent; - - if (dwFlags & STRSAFE_IGNORE_NULLS) - { - if (pszDest == NULL) - { - if ((cchDest == 0) && (cbDest == 0)) - { - cchDestCurrent = 0; - } - else - { - // NULL pszDest and non-zero cchDest/cbDest is invalid - hr = STRSAFE_E_INVALID_PARAMETER; - } - } - else - { - hr = StringLengthWorkerA(pszDest, cchDest, &cchDestCurrent); - - if (SUCCEEDED(hr)) - { - pszDestEnd = pszDest + cchDestCurrent; - cchRemaining = cchDest - cchDestCurrent; - } - } - - if (pszSrc == NULL) - { - pszSrc = ""; - } - } - else - { - hr = StringLengthWorkerA(pszDest, cchDest, &cchDestCurrent); - - if (SUCCEEDED(hr)) - { - pszDestEnd = pszDest + cchDestCurrent; - cchRemaining = cchDest - cchDestCurrent; - } - } - - if (SUCCEEDED(hr)) - { - if (cchDest == 0) - { - // only fail if there was actually src data to append - if (*pszSrc != '\0') - { - if (pszDest == NULL) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - hr = STRSAFE_E_INSUFFICIENT_BUFFER; - } - } - } - else - { - // we handle the STRSAFE_FILL_ON_FAILURE and STRSAFE_NULL_ON_FAILURE cases below, so do not pass - // those flags through - hr = StringCopyExWorkerA(pszDestEnd, - cchRemaining, - (cchRemaining * sizeof(char)) + (cbDest % sizeof(char)), - pszSrc, - &pszDestEnd, - &cchRemaining, - dwFlags & (~(STRSAFE_FILL_ON_FAILURE | STRSAFE_NULL_ON_FAILURE))); - } - } - } - - if (FAILED(hr)) - { - if (pszDest) - { - // STRSAFE_NO_TRUNCATION is taken care of by StringCopyExWorkerA() - - if (dwFlags & STRSAFE_FILL_ON_FAILURE) - { - memset(pszDest, STRSAFE_GET_FILL_PATTERN(dwFlags), cbDest); - - if (STRSAFE_GET_FILL_PATTERN(dwFlags) == 0) - { - pszDestEnd = pszDest; - cchRemaining = cchDest; - } - else - if (cchDest > 0) - { - pszDestEnd = pszDest + cchDest - 1; - cchRemaining = 1; - - // null terminate the end of the string - *pszDestEnd = '\0'; - } - } - - if (dwFlags & STRSAFE_NULL_ON_FAILURE) - { - if (cchDest > 0) - { - pszDestEnd = pszDest; - cchRemaining = cchDest; - - // null terminate the beginning of the string - *pszDestEnd = '\0'; - } - } - } - } - - if (SUCCEEDED(hr) || (hr == STRSAFE_E_INSUFFICIENT_BUFFER)) - { - if (ppszDestEnd) - { - *ppszDestEnd = pszDestEnd; - } - - if (pcchRemaining) - { - *pcchRemaining = cchRemaining; - } - } - - return hr; -} - -STRSAFEAPI StringCatExWorkerW(wchar_t* pszDest, size_t cchDest, size_t cbDest, const wchar_t* pszSrc, wchar_t** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags) -{ - HRESULT hr = S_OK; - wchar_t* pszDestEnd = pszDest; - size_t cchRemaining = 0; - - // ASSERT(cbDest == (cchDest * sizeof(wchar_t)) || - // cbDest == (cchDest * sizeof(wchar_t)) + (cbDest % sizeof(wchar_t))); - - // only accept valid flags - if (dwFlags & (~STRSAFE_VALID_FLAGS)) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - size_t cchDestCurrent; - - if (dwFlags & STRSAFE_IGNORE_NULLS) - { - if (pszDest == NULL) - { - if ((cchDest == 0) && (cbDest == 0)) - { - cchDestCurrent = 0; - } - else - { - // NULL pszDest and non-zero cchDest/cbDest is invalid - hr = STRSAFE_E_INVALID_PARAMETER; - } - } - else - { - hr = StringLengthWorkerW(pszDest, cchDest, &cchDestCurrent); - - if (SUCCEEDED(hr)) - { - pszDestEnd = pszDest + cchDestCurrent; - cchRemaining = cchDest - cchDestCurrent; - } - } - - if (pszSrc == NULL) - { - pszSrc = L""; - } - } - else - { - hr = StringLengthWorkerW(pszDest, cchDest, &cchDestCurrent); - - if (SUCCEEDED(hr)) - { - pszDestEnd = pszDest + cchDestCurrent; - cchRemaining = cchDest - cchDestCurrent; - } - } - - if (SUCCEEDED(hr)) - { - if (cchDest == 0) - { - // only fail if there was actually src data to append - if (*pszSrc != L'\0') - { - if (pszDest == NULL) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - hr = STRSAFE_E_INSUFFICIENT_BUFFER; - } - } - } - else - { - // we handle the STRSAFE_FILL_ON_FAILURE and STRSAFE_NULL_ON_FAILURE cases below, so do not pass - // those flags through - hr = StringCopyExWorkerW(pszDestEnd, - cchRemaining, - (cchRemaining * sizeof(wchar_t)) + (cbDest % sizeof(wchar_t)), - pszSrc, - &pszDestEnd, - &cchRemaining, - dwFlags & (~(STRSAFE_FILL_ON_FAILURE | STRSAFE_NULL_ON_FAILURE))); - } - } - } - - if (FAILED(hr)) - { - if (pszDest) - { - // STRSAFE_NO_TRUNCATION is taken care of by StringCopyExWorkerW() - - if (dwFlags & STRSAFE_FILL_ON_FAILURE) - { - memset(pszDest, STRSAFE_GET_FILL_PATTERN(dwFlags), cbDest); - - if (STRSAFE_GET_FILL_PATTERN(dwFlags) == 0) - { - pszDestEnd = pszDest; - cchRemaining = cchDest; - } - else if (cchDest > 0) - { - pszDestEnd = pszDest + cchDest - 1; - cchRemaining = 1; - - // null terminate the end of the string - *pszDestEnd = L'\0'; - } - } - - if (dwFlags & STRSAFE_NULL_ON_FAILURE) - { - if (cchDest > 0) - { - pszDestEnd = pszDest; - cchRemaining = cchDest; - - // null terminate the beginning of the string - *pszDestEnd = L'\0'; - } - } - } - } - - if (SUCCEEDED(hr) || (hr == STRSAFE_E_INSUFFICIENT_BUFFER)) - { - if (ppszDestEnd) - { - *ppszDestEnd = pszDestEnd; - } - - if (pcchRemaining) - { - *pcchRemaining = cchRemaining; - } - } - - return hr; -} - -STRSAFEAPI StringCatNWorkerA(char* pszDest, size_t cchDest, const char* pszSrc, size_t cchMaxAppend) -{ - HRESULT hr; - size_t cchDestCurrent; - - hr = StringLengthWorkerA(pszDest, cchDest, &cchDestCurrent); - - if (SUCCEEDED(hr)) - { - hr = StringCopyNWorkerA(pszDest + cchDestCurrent, - cchDest - cchDestCurrent, - pszSrc, - cchMaxAppend); - } - - return hr; -} - -STRSAFEAPI StringCatNWorkerW(wchar_t* pszDest, size_t cchDest, const wchar_t* pszSrc, size_t cchMaxAppend) -{ - HRESULT hr; - size_t cchDestCurrent; - - hr = StringLengthWorkerW(pszDest, cchDest, &cchDestCurrent); - - if (SUCCEEDED(hr)) - { - hr = StringCopyNWorkerW(pszDest + cchDestCurrent, - cchDest - cchDestCurrent, - pszSrc, - cchMaxAppend); - } - - return hr; -} - -STRSAFEAPI StringCatNExWorkerA(char* pszDest, size_t cchDest, size_t cbDest, const char* pszSrc, size_t cchMaxAppend, char** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags) -{ - HRESULT hr = S_OK; - char* pszDestEnd = pszDest; - size_t cchRemaining = 0; - size_t cchDestCurrent = 0; - - // ASSERT(cbDest == (cchDest * sizeof(char)) || - // cbDest == (cchDest * sizeof(char)) + (cbDest % sizeof(char))); - - // only accept valid flags - if (dwFlags & (~STRSAFE_VALID_FLAGS)) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - if (dwFlags & STRSAFE_IGNORE_NULLS) - { - if (pszDest == NULL) - { - if ((cchDest == 0) && (cbDest == 0)) - { - cchDestCurrent = 0; - } - else - { - // NULL pszDest and non-zero cchDest/cbDest is invalid - hr = STRSAFE_E_INVALID_PARAMETER; - } - } - else - { - hr = StringLengthWorkerA(pszDest, cchDest, &cchDestCurrent); - - if (SUCCEEDED(hr)) - { - pszDestEnd = pszDest + cchDestCurrent; - cchRemaining = cchDest - cchDestCurrent; - } - } - - if (pszSrc == NULL) - { - pszSrc = ""; - } - } - else - { - hr = StringLengthWorkerA(pszDest, cchDest, &cchDestCurrent); - - if (SUCCEEDED(hr)) - { - pszDestEnd = pszDest + cchDestCurrent; - cchRemaining = cchDest - cchDestCurrent; - } - } - - if (SUCCEEDED(hr)) - { - if (cchDest == 0) - { - // only fail if there was actually src data to append - if (*pszSrc != '\0') - { - if (pszDest == NULL) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - hr = STRSAFE_E_INSUFFICIENT_BUFFER; - } - } - } - else - { - // we handle the STRSAFE_FILL_ON_FAILURE and STRSAFE_NULL_ON_FAILURE cases below, so do not pass - // those flags through - hr = StringCopyNExWorkerA(pszDestEnd, - cchRemaining, - (cchRemaining * sizeof(char)) + (cbDest % sizeof(char)), - pszSrc, - cchMaxAppend, - &pszDestEnd, - &cchRemaining, - dwFlags & (~(STRSAFE_FILL_ON_FAILURE | STRSAFE_NULL_ON_FAILURE))); - } - } - } - - if (FAILED(hr)) - { - if (pszDest) - { - // STRSAFE_NO_TRUNCATION is taken care of by StringCopyNExWorkerA() - - if (dwFlags & STRSAFE_FILL_ON_FAILURE) - { - memset(pszDest, STRSAFE_GET_FILL_PATTERN(dwFlags), cbDest); - - if (STRSAFE_GET_FILL_PATTERN(dwFlags) == 0) - { - pszDestEnd = pszDest; - cchRemaining = cchDest; - } - else if (cchDest > 0) - { - pszDestEnd = pszDest + cchDest - 1; - cchRemaining = 1; - - // null terminate the end of the string - *pszDestEnd = '\0'; - } - } - - if (dwFlags & (STRSAFE_NULL_ON_FAILURE)) - { - if (cchDest > 0) - { - pszDestEnd = pszDest; - cchRemaining = cchDest; - - // null terminate the beginning of the string - *pszDestEnd = '\0'; - } - } - } - } - - if (SUCCEEDED(hr) || (hr == STRSAFE_E_INSUFFICIENT_BUFFER)) - { - if (ppszDestEnd) - { - *ppszDestEnd = pszDestEnd; - } - - if (pcchRemaining) - { - *pcchRemaining = cchRemaining; - } - } - - return hr; -} - -STRSAFEAPI StringCatNExWorkerW(wchar_t* pszDest, size_t cchDest, size_t cbDest, const wchar_t* pszSrc, size_t cchMaxAppend, wchar_t** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags) -{ - HRESULT hr = S_OK; - wchar_t* pszDestEnd = pszDest; - size_t cchRemaining = 0; - size_t cchDestCurrent = 0; - - - // ASSERT(cbDest == (cchDest * sizeof(wchar_t)) || - // cbDest == (cchDest * sizeof(wchar_t)) + (cbDest % sizeof(wchar_t))); - - // only accept valid flags - if (dwFlags & (~STRSAFE_VALID_FLAGS)) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - if (dwFlags & STRSAFE_IGNORE_NULLS) - { - if (pszDest == NULL) - { - if ((cchDest == 0) && (cbDest == 0)) - { - cchDestCurrent = 0; - } - else - { - // NULL pszDest and non-zero cchDest/cbDest is invalid - hr = STRSAFE_E_INVALID_PARAMETER; - } - } - else - { - hr = StringLengthWorkerW(pszDest, cchDest, &cchDestCurrent); - - if (SUCCEEDED(hr)) - { - pszDestEnd = pszDest + cchDestCurrent; - cchRemaining = cchDest - cchDestCurrent; - } - } - - if (pszSrc == NULL) - { - pszSrc = L""; - } - } - else - { - hr = StringLengthWorkerW(pszDest, cchDest, &cchDestCurrent); - - if (SUCCEEDED(hr)) - { - pszDestEnd = pszDest + cchDestCurrent; - cchRemaining = cchDest - cchDestCurrent; - } - } - - if (SUCCEEDED(hr)) - { - if (cchDest == 0) - { - // only fail if there was actually src data to append - if (*pszSrc != L'\0') - { - if (pszDest == NULL) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - hr = STRSAFE_E_INSUFFICIENT_BUFFER; - } - } - } - else - { - // we handle the STRSAFE_FILL_ON_FAILURE and STRSAFE_NULL_ON_FAILURE cases below, so do not pass - // those flags through - hr = StringCopyNExWorkerW(pszDestEnd, - cchRemaining, - (cchRemaining * sizeof(wchar_t)) + (cbDest % sizeof(wchar_t)), - pszSrc, - cchMaxAppend, - &pszDestEnd, - &cchRemaining, - dwFlags & (~(STRSAFE_FILL_ON_FAILURE | STRSAFE_NULL_ON_FAILURE))); - } - } - } - - if (FAILED(hr)) - { - if (pszDest) - { - // STRSAFE_NO_TRUNCATION is taken care of by StringCopyNExWorkerW() - - if (dwFlags & STRSAFE_FILL_ON_FAILURE) - { - memset(pszDest, STRSAFE_GET_FILL_PATTERN(dwFlags), cbDest); - - if (STRSAFE_GET_FILL_PATTERN(dwFlags) == 0) - { - pszDestEnd = pszDest; - cchRemaining = cchDest; - } - else if (cchDest > 0) - { - pszDestEnd = pszDest + cchDest - 1; - cchRemaining = 1; - - // null terminate the end of the string - *pszDestEnd = L'\0'; - } - } - - if (dwFlags & (STRSAFE_NULL_ON_FAILURE)) - { - if (cchDest > 0) - { - pszDestEnd = pszDest; - cchRemaining = cchDest; - - // null terminate the beginning of the string - *pszDestEnd = L'\0'; - } - } - } - } - - if (SUCCEEDED(hr) || (hr == STRSAFE_E_INSUFFICIENT_BUFFER)) - { - if (ppszDestEnd) - { - *ppszDestEnd = pszDestEnd; - } - - if (pcchRemaining) - { - *pcchRemaining = cchRemaining; - } - } - - return hr; -} - -STRSAFEAPI StringVPrintfWorkerA(char* pszDest, size_t cchDest, const char* pszFormat, va_list argList) -{ - HRESULT hr = S_OK; - - if (cchDest == 0) - { - // can not null terminate a zero-byte dest buffer - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - int iRet; - size_t cchMax; - - // leave the last space for the null terminator - cchMax = cchDest - 1; - - iRet = _vsnprintf(pszDest, cchMax, pszFormat, argList); - // ASSERT((iRet < 0) || (((size_t)iRet) <= cchMax)); - - if ((iRet < 0) || (((size_t)iRet) > cchMax)) - { - // need to null terminate the string - pszDest += cchMax; - *pszDest = '\0'; - - // we have truncated pszDest - hr = STRSAFE_E_INSUFFICIENT_BUFFER; - } - else if (((size_t)iRet) == cchMax) - { - // need to null terminate the string - pszDest += cchMax; - *pszDest = '\0'; - } - } - - return hr; -} - -STRSAFEAPI StringVPrintfWorkerW(wchar_t* pszDest, size_t cchDest, const wchar_t* pszFormat, va_list argList) -{ - HRESULT hr = S_OK; - - if (cchDest == 0) - { - // can not null terminate a zero-byte dest buffer - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - int iRet; - size_t cchMax; - - // leave the last space for the null terminator - cchMax = cchDest - 1; - - iRet = _vsnwprintf(pszDest, cchMax, pszFormat, argList); - // ASSERT((iRet < 0) || (((size_t)iRet) <= cchMax)); - - if ((iRet < 0) || (((size_t)iRet) > cchMax)) - { - // need to null terminate the string - pszDest += cchMax; - *pszDest = L'\0'; - - // we have truncated pszDest - hr = STRSAFE_E_INSUFFICIENT_BUFFER; - } - else if (((size_t)iRet) == cchMax) - { - // need to null terminate the string - pszDest += cchMax; - *pszDest = L'\0'; - } - } - - return hr; -} - -STRSAFEAPI StringVPrintfExWorkerA(char* pszDest, size_t cchDest, size_t cbDest, char** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags, const char* pszFormat, va_list argList) -{ - HRESULT hr = S_OK; - char* pszDestEnd = pszDest; - size_t cchRemaining = 0; - - // ASSERT(cbDest == (cchDest * sizeof(char)) || - // cbDest == (cchDest * sizeof(char)) + (cbDest % sizeof(char))); - - // only accept valid flags - if (dwFlags & (~STRSAFE_VALID_FLAGS)) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - if (dwFlags & STRSAFE_IGNORE_NULLS) - { - if (pszDest == NULL) - { - if ((cchDest != 0) || (cbDest != 0)) - { - // NULL pszDest and non-zero cchDest/cbDest is invalid - hr = STRSAFE_E_INVALID_PARAMETER; - } - } - - if (pszFormat == NULL) - { - pszFormat = ""; - } - } - - if (SUCCEEDED(hr)) - { - if (cchDest == 0) - { - pszDestEnd = pszDest; - cchRemaining = 0; - - // only fail if there was actually a non-empty format string - if (*pszFormat != '\0') - { - if (pszDest == NULL) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - hr = STRSAFE_E_INSUFFICIENT_BUFFER; - } - } - } - else - { - int iRet; - size_t cchMax; - - // leave the last space for the null terminator - cchMax = cchDest - 1; - - iRet = _vsnprintf(pszDest, cchMax, pszFormat, argList); - // ASSERT((iRet < 0) || (((size_t)iRet) <= cchMax)); - - if ((iRet < 0) || (((size_t)iRet) > cchMax)) - { - // we have truncated pszDest - pszDestEnd = pszDest + cchMax; - cchRemaining = 1; - - // need to null terminate the string - *pszDestEnd = '\0'; - - hr = STRSAFE_E_INSUFFICIENT_BUFFER; - } - else if (((size_t)iRet) == cchMax) - { - // string fit perfectly - pszDestEnd = pszDest + cchMax; - cchRemaining = 1; - - // need to null terminate the string - *pszDestEnd = '\0'; - } - else if (((size_t)iRet) < cchMax) - { - // there is extra room - pszDestEnd = pszDest + iRet; - cchRemaining = cchDest - iRet; - - if (dwFlags & STRSAFE_FILL_BEHIND_NULL) - { - memset(pszDestEnd + 1, STRSAFE_GET_FILL_PATTERN(dwFlags), ((cchRemaining - 1) * sizeof(char)) + (cbDest % sizeof(char))); - } - } - } - } - } - - if (FAILED(hr)) - { - if (pszDest) - { - if (dwFlags & STRSAFE_FILL_ON_FAILURE) - { - memset(pszDest, STRSAFE_GET_FILL_PATTERN(dwFlags), cbDest); - - if (STRSAFE_GET_FILL_PATTERN(dwFlags) == 0) - { - pszDestEnd = pszDest; - cchRemaining = cchDest; - } - else if (cchDest > 0) - { - pszDestEnd = pszDest + cchDest - 1; - cchRemaining = 1; - - // null terminate the end of the string - *pszDestEnd = '\0'; - } - } - - if (dwFlags & (STRSAFE_NULL_ON_FAILURE | STRSAFE_NO_TRUNCATION)) - { - if (cchDest > 0) - { - pszDestEnd = pszDest; - cchRemaining = cchDest; - - // null terminate the beginning of the string - *pszDestEnd = '\0'; - } - } - } - } - - if (SUCCEEDED(hr) || (hr == STRSAFE_E_INSUFFICIENT_BUFFER)) - { - if (ppszDestEnd) - { - *ppszDestEnd = pszDestEnd; - } - - if (pcchRemaining) - { - *pcchRemaining = cchRemaining; - } - } - - return hr; -} - -STRSAFEAPI StringVPrintfExWorkerW(wchar_t* pszDest, size_t cchDest, size_t cbDest, wchar_t** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags, const wchar_t* pszFormat, va_list argList) -{ - HRESULT hr = S_OK; - wchar_t* pszDestEnd = pszDest; - size_t cchRemaining = 0; - - // ASSERT(cbDest == (cchDest * sizeof(wchar_t)) || - // cbDest == (cchDest * sizeof(wchar_t)) + (cbDest % sizeof(wchar_t))); - - // only accept valid flags - if (dwFlags & (~STRSAFE_VALID_FLAGS)) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - if (dwFlags & STRSAFE_IGNORE_NULLS) - { - if (pszDest == NULL) - { - if ((cchDest != 0) || (cbDest != 0)) - { - // NULL pszDest and non-zero cchDest/cbDest is invalid - hr = STRSAFE_E_INVALID_PARAMETER; - } - } - - if (pszFormat == NULL) - { - pszFormat = L""; - } - } - - if (SUCCEEDED(hr)) - { - if (cchDest == 0) - { - pszDestEnd = pszDest; - cchRemaining = 0; - - // only fail if there was actually a non-empty format string - if (*pszFormat != L'\0') - { - if (pszDest == NULL) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - hr = STRSAFE_E_INSUFFICIENT_BUFFER; - } - } - } - else - { - int iRet; - size_t cchMax; - - // leave the last space for the null terminator - cchMax = cchDest - 1; - - iRet = _vsnwprintf(pszDest, cchMax, pszFormat, argList); - // ASSERT((iRet < 0) || (((size_t)iRet) <= cchMax)); - - if ((iRet < 0) || (((size_t)iRet) > cchMax)) - { - // we have truncated pszDest - pszDestEnd = pszDest + cchMax; - cchRemaining = 1; - - // need to null terminate the string - *pszDestEnd = L'\0'; - - hr = STRSAFE_E_INSUFFICIENT_BUFFER; - } - else if (((size_t)iRet) == cchMax) - { - // string fit perfectly - pszDestEnd = pszDest + cchMax; - cchRemaining = 1; - - // need to null terminate the string - *pszDestEnd = L'\0'; - } - else if (((size_t)iRet) < cchMax) - { - // there is extra room - pszDestEnd = pszDest + iRet; - cchRemaining = cchDest - iRet; - - if (dwFlags & STRSAFE_FILL_BEHIND_NULL) - { - memset(pszDestEnd + 1, STRSAFE_GET_FILL_PATTERN(dwFlags), ((cchRemaining - 1) * sizeof(wchar_t)) + (cbDest % sizeof(wchar_t))); - } - } - } - } - } - - if (FAILED(hr)) - { - if (pszDest) - { - if (dwFlags & STRSAFE_FILL_ON_FAILURE) - { - memset(pszDest, STRSAFE_GET_FILL_PATTERN(dwFlags), cbDest); - - if (STRSAFE_GET_FILL_PATTERN(dwFlags) == 0) - { - pszDestEnd = pszDest; - cchRemaining = cchDest; - } - else if (cchDest > 0) - { - pszDestEnd = pszDest + cchDest - 1; - cchRemaining = 1; - - // null terminate the end of the string - *pszDestEnd = L'\0'; - } - } - - if (dwFlags & (STRSAFE_NULL_ON_FAILURE | STRSAFE_NO_TRUNCATION)) - { - if (cchDest > 0) - { - pszDestEnd = pszDest; - cchRemaining = cchDest; - - // null terminate the beginning of the string - *pszDestEnd = L'\0'; - } - } - } - } - - if (SUCCEEDED(hr) || (hr == STRSAFE_E_INSUFFICIENT_BUFFER)) - { - if (ppszDestEnd) - { - *ppszDestEnd = pszDestEnd; - } - - if (pcchRemaining) - { - *pcchRemaining = cchRemaining; - } - } - - return hr; -} - -STRSAFEAPI StringLengthWorkerA(const char* psz, size_t cchMax, size_t* pcch) -{ - HRESULT hr = S_OK; - size_t cchMaxPrev = cchMax; - - while (cchMax && (*psz != '\0')) - { - psz++; - cchMax--; - } - - if (cchMax == 0) - { - // the string is longer than cchMax - hr = STRSAFE_E_INVALID_PARAMETER; - } - - if (SUCCEEDED(hr) && pcch) - { - *pcch = cchMaxPrev - cchMax; - } - - return hr; -} - -STRSAFEAPI StringLengthWorkerW(const wchar_t* psz, size_t cchMax, size_t* pcch) -{ - HRESULT hr = S_OK; - size_t cchMaxPrev = cchMax; - - while (cchMax && (*psz != L'\0')) - { - psz++; - cchMax--; - } - - if (cchMax == 0) - { - // the string is longer than cchMax - hr = STRSAFE_E_INVALID_PARAMETER; - } - - if (SUCCEEDED(hr) && pcch) - { - *pcch = cchMaxPrev - cchMax; - } - - return hr; -} -#endif // STRSAFE_INLINE - -#ifndef STRSAFE_LIB_IMPL -STRSAFE_INLINE_API StringGetsExWorkerA(char* pszDest, size_t cchDest, size_t cbDest, char** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags) -{ - HRESULT hr = S_OK; - char* pszDestEnd = pszDest; - size_t cchRemaining = 0; - - // ASSERT(cbDest == (cchDest * sizeof(char)) || - // cbDest == (cchDest * sizeof(char)) + (cbDest % sizeof(char))); - - // only accept valid flags - if (dwFlags & (~STRSAFE_VALID_FLAGS)) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - if (dwFlags & STRSAFE_IGNORE_NULLS) - { - if (pszDest == NULL) - { - if ((cchDest != 0) || (cbDest != 0)) - { - // NULL pszDest and non-zero cchDest/cbDest is invalid - hr = STRSAFE_E_INVALID_PARAMETER; - } - } - } - - if (SUCCEEDED(hr)) - { - if (cchDest <= 1) - { - pszDestEnd = pszDest; - cchRemaining = cchDest; - - if (cchDest == 1) - { - *pszDestEnd = '\0'; - } - - hr = STRSAFE_E_INSUFFICIENT_BUFFER; - } - else - { - char ch; - - pszDestEnd = pszDest; - cchRemaining = cchDest; - - while ((cchRemaining > 1) && (ch = (char)getc(stdin)) != '\n') - { - if (ch == EOF) - { - if (pszDestEnd == pszDest) - { - // we failed to read anything from stdin - hr = STRSAFE_E_END_OF_FILE; - } - break; - } - - *pszDestEnd = ch; - - pszDestEnd++; - cchRemaining--; - } - - if (cchRemaining > 0) - { - // there is extra room - if (dwFlags & STRSAFE_FILL_BEHIND_NULL) - { - memset(pszDestEnd + 1, STRSAFE_GET_FILL_PATTERN(dwFlags), ((cchRemaining - 1) * sizeof(char)) + (cbDest % sizeof(char))); - } - } - - *pszDestEnd = '\0'; - } - } - } - - if (FAILED(hr)) - { - if (pszDest) - { - if (dwFlags & STRSAFE_FILL_ON_FAILURE) - { - memset(pszDest, STRSAFE_GET_FILL_PATTERN(dwFlags), cbDest); - - if (STRSAFE_GET_FILL_PATTERN(dwFlags) == 0) - { - pszDestEnd = pszDest; - cchRemaining = cchDest; - } - else if (cchDest > 0) - { - pszDestEnd = pszDest + cchDest - 1; - cchRemaining = 1; - - // null terminate the end of the string - *pszDestEnd = '\0'; - } - } - - if (dwFlags & (STRSAFE_NULL_ON_FAILURE | STRSAFE_NO_TRUNCATION)) - { - if (cchDest > 0) - { - pszDestEnd = pszDest; - cchRemaining = cchDest; - - // null terminate the beginning of the string - *pszDestEnd = '\0'; - } - } - } - } - - if (SUCCEEDED(hr) || - (hr == STRSAFE_E_INSUFFICIENT_BUFFER) || - (hr == STRSAFE_E_END_OF_FILE)) - { - if (ppszDestEnd) - { - *ppszDestEnd = pszDestEnd; - } - - if (pcchRemaining) - { - *pcchRemaining = cchRemaining; - } - } - - return hr; -} - -STRSAFE_INLINE_API StringGetsExWorkerW(wchar_t* pszDest, size_t cchDest, size_t cbDest, wchar_t** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags) -{ - HRESULT hr = S_OK; - wchar_t* pszDestEnd = pszDest; - size_t cchRemaining = 0; - - // ASSERT(cbDest == (cchDest * sizeof(char)) || - // cbDest == (cchDest * sizeof(char)) + (cbDest % sizeof(char))); - - // only accept valid flags - if (dwFlags & (~STRSAFE_VALID_FLAGS)) - { - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - if (dwFlags & STRSAFE_IGNORE_NULLS) - { - if (pszDest == NULL) - { - if ((cchDest != 0) || (cbDest != 0)) - { - // NULL pszDest and non-zero cchDest/cbDest is invalid - hr = STRSAFE_E_INVALID_PARAMETER; - } - } - } - - if (SUCCEEDED(hr)) - { - if (cchDest <= 1) - { - pszDestEnd = pszDest; - cchRemaining = cchDest; - - if (cchDest == 1) - { - *pszDestEnd = L'\0'; - } - - hr = STRSAFE_E_INSUFFICIENT_BUFFER; - } - else - { - wchar_t ch; - - pszDestEnd = pszDest; - cchRemaining = cchDest; - - while ((cchRemaining > 1) && (ch = (wchar_t)getwc(stdin)) != L'\n') - { - if (ch == EOF) - { - if (pszDestEnd == pszDest) - { - // we failed to read anything from stdin - hr = STRSAFE_E_END_OF_FILE; - } - break; - } - - *pszDestEnd = ch; - - pszDestEnd++; - cchRemaining--; - } - - if (cchRemaining > 0) - { - // there is extra room - if (dwFlags & STRSAFE_FILL_BEHIND_NULL) - { - memset(pszDestEnd + 1, STRSAFE_GET_FILL_PATTERN(dwFlags), ((cchRemaining - 1) * sizeof(wchar_t)) + (cbDest % sizeof(wchar_t))); - } - } - - *pszDestEnd = L'\0'; - } - } - } - - if (FAILED(hr)) - { - if (pszDest) - { - if (dwFlags & STRSAFE_FILL_ON_FAILURE) - { - memset(pszDest, STRSAFE_GET_FILL_PATTERN(dwFlags), cbDest); - - if (STRSAFE_GET_FILL_PATTERN(dwFlags) == 0) - { - pszDestEnd = pszDest; - cchRemaining = cchDest; - } - else if (cchDest > 0) - { - pszDestEnd = pszDest + cchDest - 1; - cchRemaining = 1; - - // null terminate the end of the string - *pszDestEnd = L'\0'; - } - } - - if (dwFlags & (STRSAFE_NULL_ON_FAILURE | STRSAFE_NO_TRUNCATION)) - { - if (cchDest > 0) - { - pszDestEnd = pszDest; - cchRemaining = cchDest; - - // null terminate the beginning of the string - *pszDestEnd = L'\0'; - } - } - } - } - - if (SUCCEEDED(hr) || - (hr == STRSAFE_E_INSUFFICIENT_BUFFER) || - (hr == STRSAFE_E_END_OF_FILE)) - { - if (ppszDestEnd) - { - *ppszDestEnd = pszDestEnd; - } - - if (pcchRemaining) - { - *pcchRemaining = cchRemaining; - } - } - - return hr; -} -#endif // !STRSAFE_LIB_IMPL - - -// Do not call these functions, they are worker functions for internal use within this file -#ifdef DEPRECATE_SUPPORTED -#pragma deprecated(StringCopyWorkerA) -#pragma deprecated(StringCopyWorkerW) -#pragma deprecated(StringCopyExWorkerA) -#pragma deprecated(StringCopyExWorkerW) -#pragma deprecated(StringCatWorkerA) -#pragma deprecated(StringCatWorkerW) -#pragma deprecated(StringCatExWorkerA) -#pragma deprecated(StringCatExWorkerW) -#pragma deprecated(StringCatNWorkerA) -#pragma deprecated(StringCatNWorkerW) -#pragma deprecated(StringCatNExWorkerA) -#pragma deprecated(StringCatNExWorkerW) -#pragma deprecated(StringVPrintfWorkerA) -#pragma deprecated(StringVPrintfWorkerW) -#pragma deprecated(StringVPrintfExWorkerA) -#pragma deprecated(StringVPrintfExWorkerW) -#pragma deprecated(StringLengthWorkerA) -#pragma deprecated(StringLengthWorkerW) -#else -#define StringCopyWorkerA StringCopyWorkerA_instead_use_StringCchCopyA_or_StringCchCopyExA; -#define StringCopyWorkerW StringCopyWorkerW_instead_use_StringCchCopyW_or_StringCchCopyExW; -#define StringCopyExWorkerA StringCopyExWorkerA_instead_use_StringCchCopyA_or_StringCchCopyExA; -#define StringCopyExWorkerW StringCopyExWorkerW_instead_use_StringCchCopyW_or_StringCchCopyExW; -#define StringCatWorkerA StringCatWorkerA_instead_use_StringCchCatA_or_StringCchCatExA; -#define StringCatWorkerW StringCatWorkerW_instead_use_StringCchCatW_or_StringCchCatExW; -#define StringCatExWorkerA StringCatExWorkerA_instead_use_StringCchCatA_or_StringCchCatExA; -#define StringCatExWorkerW StringCatExWorkerW_instead_use_StringCchCatW_or_StringCchCatExW; -#define StringCatNWorkerA StringCatNWorkerA_instead_use_StringCchCatNA_or_StrincCbCatNA; -#define StringCatNWorkerW StringCatNWorkerW_instead_use_StringCchCatNW_or_StringCbCatNW; -#define StringCatNExWorkerA StringCatNExWorkerA_instead_use_StringCchCatNExA_or_StringCbCatNExA; -#define StringCatNExWorkerW StringCatNExWorkerW_instead_use_StringCchCatNExW_or_StringCbCatNExW; -#define StringVPrintfWorkerA StringVPrintfWorkerA_instead_use_StringCchVPrintfA_or_StringCchVPrintfExA; -#define StringVPrintfWorkerW StringVPrintfWorkerW_instead_use_StringCchVPrintfW_or_StringCchVPrintfExW; -#define StringVPrintfExWorkerA StringVPrintfExWorkerA_instead_use_StringCchVPrintfA_or_StringCchVPrintfExA; -#define StringVPrintfExWorkerW StringVPrintfExWorkerW_instead_use_StringCchVPrintfW_or_StringCchVPrintfExW; -#define StringLengthWorkerA StringLengthWorkerA_instead_use_StringCchLengthA_or_StringCbLengthA; -#define StringLengthWorkerW StringLengthWorkerW_instead_use_StringCchLengthW_or_StringCbLengthW; -#endif // !DEPRECATE_SUPPORTED - - -#ifndef STRSAFE_NO_DEPRECATE -// Deprecate all of the unsafe functions to generate compiletime errors. If you do not want -// this then you can #define STRSAFE_NO_DEPRECATE before including this file. -#ifdef DEPRECATE_SUPPORTED - -// First all the names that are a/w variants (or shouldn't be #defined by now anyway). -#pragma deprecated(lstrcpyA) -#pragma deprecated(lstrcpyW) -#pragma deprecated(lstrcatA) -#pragma deprecated(lstrcatW) -#pragma deprecated(wsprintfA) -#pragma deprecated(wsprintfW) - -#pragma deprecated(StrCpyW) -#pragma deprecated(StrCatW) -#pragma deprecated(StrNCatA) -#pragma deprecated(StrNCatW) -#pragma deprecated(StrCatNA) -#pragma deprecated(StrCatNW) -#pragma deprecated(wvsprintfA) -#pragma deprecated(wvsprintfW) - -#pragma deprecated(strcpy) -#pragma deprecated(wcscpy) -#pragma deprecated(strcat) -#pragma deprecated(wcscat) -#pragma deprecated(sprintf) -#pragma deprecated(swprintf) -#pragma deprecated(vsprintf) -#pragma deprecated(vswprintf) -#pragma deprecated(_snprintf) -#pragma deprecated(_snwprintf) -#pragma deprecated(_vsnprintf) -#pragma deprecated(_vsnwprintf) -#pragma deprecated(gets) -#pragma deprecated(_getws) - -// Then all the windows.h names - we need to undef and redef based on UNICODE setting -#undef lstrcpy -#undef lstrcat -#undef wsprintf -#undef wvsprintf -#pragma deprecated(lstrcpy) -#pragma deprecated(lstrcat) -#pragma deprecated(wsprintf) -#pragma deprecated(wvsprintf) -#ifdef UNICODE -#define lstrcpy lstrcpyW -#define lstrcat lstrcatW -#define wsprintf wsprintfW -#define wvsprintf wvsprintfW -#else -#define lstrcpy lstrcpyA -#define lstrcat lstrcatA -#define wsprintf wsprintfA -#define wvsprintf wvsprintfA -#endif - -// Then the shlwapi names - they key off UNICODE also. -#undef StrCpyA -#undef StrCpy -#undef StrCatA -#undef StrCat -#undef StrNCat -#undef StrCatN -#pragma deprecated(StrCpyA) -#pragma deprecated(StrCatA) -#pragma deprecated(StrCatN) -#pragma deprecated(StrCpy) -#pragma deprecated(StrCat) -#pragma deprecated(StrNCat) -#define StrCpyA lstrcpyA -#define StrCatA lstrcatA -#define StrCatN StrNCat -#ifdef UNICODE -#define StrCpy StrCpyW -#define StrCat StrCatW -#define StrNCat StrNCatW -#else -#define StrCpy lstrcpyA -#define StrCat lstrcatA -#define StrNCat StrNCatA -#endif - -// Then all the CRT names - we need to undef/redef based on _UNICODE value. -#undef _tcscpy -#undef _ftcscpy -#undef _tcscat -#undef _ftcscat -#undef _stprintf -#undef _sntprintf -#undef _vstprintf -#undef _vsntprintf -#undef _getts -#pragma deprecated(_tcscpy) -#pragma deprecated(_ftcscpy) -#pragma deprecated(_tcscat) -#pragma deprecated(_ftcscat) -#pragma deprecated(_stprintf) -#pragma deprecated(_sntprintf) -#pragma deprecated(_vstprintf) -#pragma deprecated(_vsntprintf) -#pragma deprecated(_getts) -#ifdef _UNICODE -#define _tcscpy wcscpy -#define _ftcscpy wcscpy -#define _tcscat wcscat -#define _ftcscat wcscat -#define _stprintf swprintf -#define _sntprintf _snwprintf -#define _vstprintf vswprintf -#define _vsntprintf _vsnwprintf -#define _getts _getws -#else -#define _tcscpy strcpy -#define _ftcscpy strcpy -#define _tcscat strcat -#define _ftcscat strcat -#define _stprintf sprintf -#define _sntprintf _snprintf -#define _vstprintf vsprintf -#define _vsntprintf _vsnprintf -#define _getts gets -#endif - -#else // DEPRECATE_SUPPORTED - -#undef strcpy -#define strcpy strcpy_instead_use_StringCbCopyA_or_StringCchCopyA; - -#undef wcscpy -#define wcscpy wcscpy_instead_use_StringCbCopyW_or_StringCchCopyW; - -#undef strcat -#define strcat strcat_instead_use_StringCbCatA_or_StringCchCatA; - -#undef wcscat -#define wcscat wcscat_instead_use_StringCbCatW_or_StringCchCatW; - -#undef sprintf -#define sprintf sprintf_instead_use_StringCbPrintfA_or_StringCchPrintfA; - -#undef swprintf -#define swprintf swprintf_instead_use_StringCbPrintfW_or_StringCchPrintfW; - -#undef vsprintf -#define vsprintf vsprintf_instead_use_StringCbVPrintfA_or_StringCchVPrintfA; - -#undef vswprintf -#define vswprintf vswprintf_instead_use_StringCbVPrintfW_or_StringCchVPrintfW; - -#undef _snprintf -#define _snprintf _snprintf_instead_use_StringCbPrintfA_or_StringCchPrintfA; - -#undef _snwprintf -#define _snwprintf _snwprintf_instead_use_StringCbPrintfW_or_StringCchPrintfW; - -#undef _vsnprintf -#define _vsnprintf _vsnprintf_instead_use_StringCbVPrintfA_or_StringCchVPrintfA; - -#undef _vsnwprintf -#define _vsnwprintf _vsnwprintf_instead_use_StringCbVPrintfW_or_StringCchVPrintfW; - -#undef strcpyA -#define strcpyA strcpyA_instead_use_StringCbCopyA_or_StringCchCopyA; - -#undef strcpyW -#define strcpyW strcpyW_instead_use_StringCbCopyW_or_StringCchCopyW; - -#undef lstrcpy -#define lstrcpy lstrcpy_instead_use_StringCbCopy_or_StringCchCopy; - -#undef lstrcpyA -#define lstrcpyA lstrcpyA_instead_use_StringCbCopyA_or_StringCchCopyA; - -#undef lstrcpyW -#define lstrcpyW lstrcpyW_instead_use_StringCbCopyW_or_StringCchCopyW; - -#undef StrCpy -#define StrCpy StrCpy_instead_use_StringCbCopy_or_StringCchCopy; - -#undef StrCpyA -#define StrCpyA StrCpyA_instead_use_StringCbCopyA_or_StringCchCopyA; - -#undef StrCpyW -#define StrCpyW StrCpyW_instead_use_StringCbCopyW_or_StringCchCopyW; - -#undef _tcscpy -#define _tcscpy _tcscpy_instead_use_StringCbCopy_or_StringCchCopy; - -#undef _ftcscpy -#define _ftcscpy _ftcscpy_instead_use_StringCbCopy_or_StringCchCopy; - -#undef lstrcat -#define lstrcat lstrcat_instead_use_StringCbCat_or_StringCchCat; - -#undef lstrcatA -#define lstrcatA lstrcatA_instead_use_StringCbCatA_or_StringCchCatA; - -#undef lstrcatW -#define lstrcatW lstrcatW_instead_use_StringCbCatW_or_StringCchCatW; - -#undef StrCat -#define StrCat StrCat_instead_use_StringCbCat_or_StringCchCat; - -#undef StrCatA -#define StrCatA StrCatA_instead_use_StringCbCatA_or_StringCchCatA; - -#undef StrCatW -#define StrCatW StrCatW_instead_use_StringCbCatW_or_StringCchCatW; - -#undef StrNCat -#define StrNCat StrNCat_instead_use_StringCbCatN_or_StringCchCatN; - -#undef StrNCatA -#define StrNCatA StrNCatA_instead_use_StringCbCatNA_or_StringCchCatNA; - -#undef StrNCatW -#define StrNCatW StrNCatW_instead_use_StringCbCatNW_or_StringCchCatNW; - -#undef StrCatN -#define StrCatN StrCatN_instead_use_StringCbCatN_or_StringCchCatN; - -#undef StrCatNA -#define StrCatNA StrCatNA_instead_use_StringCbCatNA_or_StringCchCatNA; - -#undef StrCatNW -#define StrCatNW StrCatNW_instead_use_StringCbCatNW_or_StringCchCatNW; - -#undef _tcscat -#define _tcscat _tcscat_instead_use_StringCbCat_or_StringCchCat; - -#undef _ftcscat -#define _ftcscat _ftcscat_instead_use_StringCbCat_or_StringCchCat; - -#undef wsprintf -#define wsprintf wsprintf_instead_use_StringCbPrintf_or_StringCchPrintf; - -#undef wsprintfA -#define wsprintfA wsprintfA_instead_use_StringCbPrintfA_or_StringCchPrintfA; - -#undef wsprintfW -#define wsprintfW wsprintfW_instead_use_StringCbPrintfW_or_StringCchPrintfW; - -#undef wvsprintf -#define wvsprintf wvsprintf_instead_use_StringCbVPrintf_or_StringCchVPrintf; - -#undef wvsprintfA -#define wvsprintfA wvsprintfA_instead_use_StringCbVPrintfA_or_StringCchVPrintfA; - -#undef wvsprintfW -#define wvsprintfW wvsprintfW_instead_use_StringCbVPrintfW_or_StringCchVPrintfW; - -#undef _vstprintf -#define _vstprintf _vstprintf_instead_use_StringCbVPrintf_or_StringCchVPrintf; - -#undef _vsntprintf -#define _vsntprintf _vsntprintf_instead_use_StringCbVPrintf_or_StringCchVPrintf; - -#undef _stprintf -#define _stprintf _stprintf_instead_use_StringCbPrintf_or_StringCchPrintf; - -#undef _sntprintf -#define _sntprintf _sntprintf_instead_use_StringCbPrintf_or_StringCchPrintf; - -#undef _getts -#define _getts _getts_instead_use_StringCbGets_or_StringCchGets; - -#undef gets -#define gets _gets_instead_use_StringCbGetsA_or_StringCchGetsA; - -#undef _getws -#define _getws _getws_instead_use_StringCbGetsW_or_StringCchGetsW; - -#endif // !DEPRECATE_SUPPORTED -#endif // !STRSAFE_NO_DEPRECATE - -#ifdef _NTSTRSAFE_H_INCLUDED_ -#pragma warning(pop) -#endif // _NTSTRSAFE_H_INCLUDED_ - -#endif // _STRSAFE_H_INCLUDED_ +/****************************************************************** +* * +* strsafe.h -- This module defines safer C library string * +* routine replacements. These are meant to make C * +* a bit more safe in reference to security and * +* robustness * +* * +* Copyright (c) Microsoft Corp. All rights reserved. * +* * +******************************************************************/ +#ifndef _STRSAFE_H_INCLUDED_ +#define _STRSAFE_H_INCLUDED_ +#pragma once + +#include // for _vsnprintf, _vsnwprintf, getc, getwc +#include // for memset +#include // for va_start, etc. + + +#ifndef _SIZE_T_DEFINED +#ifdef _WIN64 +typedef unsigned __int64 size_t; +#else +typedef __w64 unsigned int size_t; +#endif // !_WIN64 +#define _SIZE_T_DEFINED +#endif // !_SIZE_T_DEFINED + +#if !defined(_WCHAR_T_DEFINED) && !defined(_NATIVE_WCHAR_T_DEFINED) +typedef unsigned short wchar_t; +#define _WCHAR_T_DEFINED +#endif + +#ifndef _HRESULT_DEFINED +#define _HRESULT_DEFINED +typedef long HRESULT; +#endif // !_HRESULT_DEFINED + +#ifndef SUCCEEDED +#define SUCCEEDED(hr) ((HRESULT)(hr) >= 0) +#endif + +#ifndef FAILED +#define FAILED(hr) ((HRESULT)(hr) < 0) +#endif + +#ifndef S_OK +#define S_OK ((HRESULT)0x00000000L) +#endif + +#ifdef __cplusplus +#define _STRSAFE_EXTERN_C extern "C" +#else +#define _STRSAFE_EXTERN_C extern +#endif + +// If you do not want to use these functions inline (and instead want to link w/ strsafe.lib), then +// #define STRSAFE_LIB before including this header file. +#if defined(STRSAFE_LIB) +#define STRSAFEAPI _STRSAFE_EXTERN_C HRESULT __stdcall +#pragma comment(lib, "strsafe.lib") +#elif defined(STRSAFE_LIB_IMPL) +#define STRSAFEAPI _STRSAFE_EXTERN_C HRESULT __stdcall +#else +#define STRSAFEAPI __inline HRESULT __stdcall +#define STRSAFE_INLINE +#endif + +// Some functions always run inline because they use stdin and we want to avoid building multiple +// versions of strsafe lib depending on if you use msvcrt, libcmt, etc. +#define STRSAFE_INLINE_API __inline HRESULT __stdcall + +// The user can request no "Cb" or no "Cch" fuctions, but not both! +#if defined(STRSAFE_NO_CB_FUNCTIONS) && defined(STRSAFE_NO_CCH_FUNCTIONS) +#error cannot specify both STRSAFE_NO_CB_FUNCTIONS and STRSAFE_NO_CCH_FUNCTIONS !! +#endif + +// This should only be defined when we are building strsafe.lib +#ifdef STRSAFE_LIB_IMPL +#define STRSAFE_INLINE +#endif + + +// If both strsafe.h and ntstrsafe.h are included, only use definitions from one. +#ifndef _NTSTRSAFE_H_INCLUDED_ + +#define STRSAFE_MAX_CCH 2147483647 // max # of characters we support (same as INT_MAX) + +// Flags for controling the Ex functions +// +// STRSAFE_FILL_BYTE(0xFF) 0x000000FF // bottom byte specifies fill pattern +#define STRSAFE_IGNORE_NULLS 0x00000100 // treat null as TEXT("") -- don't fault on NULL buffers +#define STRSAFE_FILL_BEHIND_NULL 0x00000200 // fill in extra space behind the null terminator +#define STRSAFE_FILL_ON_FAILURE 0x00000400 // on failure, overwrite pszDest with fill pattern and null terminate it +#define STRSAFE_NULL_ON_FAILURE 0x00000800 // on failure, set *pszDest = TEXT('\0') +#define STRSAFE_NO_TRUNCATION 0x00001000 // instead of returning a truncated result, copy/append nothing to pszDest and null terminate it + +#define STRSAFE_VALID_FLAGS (0x000000FF | STRSAFE_IGNORE_NULLS | STRSAFE_FILL_BEHIND_NULL | STRSAFE_FILL_ON_FAILURE | STRSAFE_NULL_ON_FAILURE | STRSAFE_NO_TRUNCATION) + +// helper macro to set the fill character and specify buffer filling +#define STRSAFE_FILL_BYTE(x) ((unsigned long)((x & 0x000000FF) | STRSAFE_FILL_BEHIND_NULL)) +#define STRSAFE_FAILURE_BYTE(x) ((unsigned long)((x & 0x000000FF) | STRSAFE_FILL_ON_FAILURE)) + +#define STRSAFE_GET_FILL_PATTERN(dwFlags) ((int)(dwFlags & 0x000000FF)) + +#endif // _NTSTRSAFE_H_INCLUDED_ + +// STRSAFE error return codes +// +#define STRSAFE_E_INSUFFICIENT_BUFFER ((HRESULT)0x8007007AL) // 0x7A = 122L = ERROR_INSUFFICIENT_BUFFER +#define STRSAFE_E_INVALID_PARAMETER ((HRESULT)0x80070057L) // 0x57 = 87L = ERROR_INVALID_PARAMETER +#define STRSAFE_E_END_OF_FILE ((HRESULT)0x80070026L) // 0x26 = 38L = ERROR_HANDLE_EOF + +// prototypes for the worker functions +#ifdef STRSAFE_INLINE +STRSAFEAPI StringCopyWorkerA(char* pszDest, size_t cchDest, const char* pszSrc); +STRSAFEAPI StringCopyWorkerW(wchar_t* pszDest, size_t cchDest, const wchar_t* pszSrc); +STRSAFEAPI StringCopyExWorkerA(char* pszDest, size_t cchDest, size_t cbDest, const char* pszSrc, char** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags); +STRSAFEAPI StringCopyExWorkerW(wchar_t* pszDest, size_t cchDest, size_t cbDest, const wchar_t* pszSrc, wchar_t** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags); +STRSAFEAPI StringCopyNWorkerA(char* pszDest, size_t cchDest, const char* pszSrc, size_t cchSrc); +STRSAFEAPI StringCopyNWorkerW(wchar_t* pszDest, size_t cchDest, const wchar_t* pszSrc, size_t cchSrc); +STRSAFEAPI StringCopyNExWorkerA(char* pszDest, size_t cchDest, size_t cbDest, const char* pszSrc, size_t cchSrc, char** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags); +STRSAFEAPI StringCopyNExWorkerW(wchar_t* pszDest, size_t cchDest, size_t cbDest, const wchar_t* pszSrc, size_t cchSrc, wchar_t** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags); +STRSAFEAPI StringCatWorkerA(char* pszDest, size_t cchDest, const char* pszSrc); +STRSAFEAPI StringCatWorkerW(wchar_t* pszDest, size_t cchDest, const wchar_t* pszSrc); +STRSAFEAPI StringCatExWorkerA(char* pszDest, size_t cchDest, size_t cbDest, const char* pszSrc, char** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags); +STRSAFEAPI StringCatExWorkerW(wchar_t* pszDest, size_t cchDest, size_t cbDest, const wchar_t* pszSrc, wchar_t** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags); +STRSAFEAPI StringCatNWorkerA(char* pszDest, size_t cchDest, const char* pszSrc, size_t cchMaxAppend); +STRSAFEAPI StringCatNWorkerW(wchar_t* pszDest, size_t cchDest, const wchar_t* pszSrc, size_t cchMaxAppend); +STRSAFEAPI StringCatNExWorkerA(char* pszDest, size_t cchDest, size_t cbDest, const char* pszSrc, size_t cchMaxAppend, char** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags); +STRSAFEAPI StringCatNExWorkerW(wchar_t* pszDest, size_t cchDest, size_t cbDest, const wchar_t* pszSrc, size_t cchMaxAppend, wchar_t** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags); +STRSAFEAPI StringVPrintfWorkerA(char* pszDest, size_t cchDest, const char* pszFormat, va_list argList); +STRSAFEAPI StringVPrintfWorkerW(wchar_t* pszDest, size_t cchDest, const wchar_t* pszFormat, va_list argList); +STRSAFEAPI StringVPrintfExWorkerA(char* pszDest, size_t cchDest, size_t cbDest, char** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags, const char* pszFormat, va_list argList); +STRSAFEAPI StringVPrintfExWorkerW(wchar_t* pszDest, size_t cchDest, size_t cbDest, wchar_t** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags, const wchar_t* pszFormat, va_list argList); +STRSAFEAPI StringLengthWorkerA(const char* psz, size_t cchMax, size_t* pcch); +STRSAFEAPI StringLengthWorkerW(const wchar_t* psz, size_t cchMax, size_t* pcch); +#endif // STRSAFE_INLINE + +#ifndef STRSAFE_LIB_IMPL +// these functions are always inline +STRSAFE_INLINE_API StringGetsExWorkerA(char* pszDest, size_t cchDest, size_t cbDest, char** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags); +STRSAFE_INLINE_API StringGetsExWorkerW(wchar_t* pszDest, size_t cchDest, size_t cbDest, wchar_t** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags); +#endif + +#ifdef _NTSTRSAFE_H_INCLUDED_ +#pragma warning(push) +#pragma warning(disable : 4995) +#endif // _NTSTRSAFE_H_INCLUDED_ + + +#ifndef STRSAFE_NO_CCH_FUNCTIONS +/*++ + +STDAPI +StringCchCopy( + OUT LPTSTR pszDest, + IN size_t cchDest, + IN LPCTSTR pszSrc + ); + +Routine Description: + + This routine is a safer version of the C built-in function 'strcpy'. + The size of the destination buffer (in characters) is a parameter and + this function will not write past the end of this buffer and it will + ALWAYS null terminate the destination buffer (unless it is zero length). + + This routine is not a replacement for strncpy. That function will pad the + destination string with extra null termination characters if the count is + greater than the length of the source string, and it will fail to null + terminate the destination string if the source string length is greater + than or equal to the count. You can not blindly use this instead of strncpy: + it is common for code to use it to "patch" strings and you would introduce + errors if the code started null terminating in the middle of the string. + + This function returns a hresult, and not a pointer. It returns + S_OK if the string was copied without truncation and null terminated, + otherwise it will return a failure code. In failure cases as much of + pszSrc will be copied to pszDest as possible, and pszDest will be null + terminated. + +Arguments: + + pszDest - destination string + + cchDest - size of destination buffer in characters. + length must be = (_tcslen(src) + 1) to hold all of the + source including the null terminator + + pszSrc - source string which must be null terminated + +Notes: + Behavior is undefined if source and destination strings overlap. + + pszDest and pszSrc should not be NULL. See StringCchCopyEx if you require + the handling of NULL values. + +Return Value: + + S_OK - if there was source data and it was all copied and the + resultant dest string was null terminated + + failure - you can use the macro HRESULT_CODE() to get a win32 + error code for all hresult failure cases + + STRSAFE_E_INSUFFICIENT_BUFFER / + HRESULT_CODE(hr) == ERROR_INSUFFICIENT_BUFFER + - this return value is an indication that the copy + operation failed due to insufficient space. When this + error occurs, the destination buffer is modified to + contain a truncated version of the ideal result and is + null terminated. This is useful for situations where + truncation is ok + + It is strongly recommended to use the SUCCEEDED() / FAILED() macros to test the + return value of this function. + +--*/ + +STRSAFEAPI StringCchCopyA(char* pszDest, size_t cchDest, const char* pszSrc); +STRSAFEAPI StringCchCopyW(wchar_t* pszDest, size_t cchDest, const wchar_t* pszSrc); +#ifdef UNICODE +#define StringCchCopy StringCchCopyW +#else +#define StringCchCopy StringCchCopyA +#endif // !UNICODE + +#ifdef STRSAFE_INLINE +STRSAFEAPI StringCchCopyA(char* pszDest, size_t cchDest, const char* pszSrc) +{ + HRESULT hr; + + if (cchDest > STRSAFE_MAX_CCH) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + hr = StringCopyWorkerA(pszDest, cchDest, pszSrc); + } + + return hr; +} + +STRSAFEAPI StringCchCopyW(wchar_t* pszDest, size_t cchDest, const wchar_t* pszSrc) +{ + HRESULT hr; + + if (cchDest > STRSAFE_MAX_CCH) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + hr = StringCopyWorkerW(pszDest, cchDest, pszSrc); + } + + return hr; +} +#endif // STRSAFE_INLINE +#endif // !STRSAFE_NO_CCH_FUNCTIONS + + +#ifndef STRSAFE_NO_CB_FUNCTIONS +/*++ + +STDAPI +StringCbCopy( + OUT LPTSTR pszDest, + IN size_t cbDest, + IN LPCTSTR pszSrc + ); + +Routine Description: + + This routine is a safer version of the C built-in function 'strcpy'. + The size of the destination buffer (in bytes) is a parameter and this + function will not write past the end of this buffer and it will ALWAYS + null terminate the destination buffer (unless it is zero length). + + This routine is not a replacement for strncpy. That function will pad the + destination string with extra null termination characters if the count is + greater than the length of the source string, and it will fail to null + terminate the destination string if the source string length is greater + than or equal to the count. You can not blindly use this instead of strncpy: + it is common for code to use it to "patch" strings and you would introduce + errors if the code started null terminating in the middle of the string. + + This function returns a hresult, and not a pointer. It returns + S_OK if the string was copied without truncation and null terminated, + otherwise it will return a failure code. In failure cases as much of pszSrc + will be copied to pszDest as possible, and pszDest will be null terminated. + +Arguments: + + pszDest - destination string + + cbDest - size of destination buffer in bytes. + length must be = ((_tcslen(src) + 1) * sizeof(TCHAR)) to + hold all of the source including the null terminator + + pszSrc - source string which must be null terminated + +Notes: + Behavior is undefined if source and destination strings overlap. + + pszDest and pszSrc should not be NULL. See StringCbCopyEx if you require + the handling of NULL values. + +Return Value: + + S_OK - if there was source data and it was all copied and the + resultant dest string was null terminated + + failure - you can use the macro HRESULT_CODE() to get a win32 + error code for all hresult failure cases + + STRSAFE_E_INSUFFICIENT_BUFFER / + HRESULT_CODE(hr) == ERROR_INSUFFICIENT_BUFFER + - this return value is an indication that the copy + operation failed due to insufficient space. When this + error occurs, the destination buffer is modified to + contain a truncated version of the ideal result and is + null terminated. This is useful for situations where + truncation is ok + + It is strongly recommended to use the SUCCEEDED() / FAILED() macros to test the + return value of this function. + +--*/ + +STRSAFEAPI StringCbCopyA(char* pszDest, size_t cbDest, const char* pszSrc); +STRSAFEAPI StringCbCopyW(wchar_t* pszDest, size_t cbDest, const wchar_t* pszSrc); +#ifdef UNICODE +#define StringCbCopy StringCbCopyW +#else +#define StringCbCopy StringCbCopyA +#endif // !UNICODE + +#ifdef STRSAFE_INLINE +STRSAFEAPI StringCbCopyA(char* pszDest, size_t cbDest, const char* pszSrc) +{ + HRESULT hr; + size_t cchDest; + + // convert to count of characters + cchDest = cbDest / sizeof(char); + + if (cchDest > STRSAFE_MAX_CCH) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + hr = StringCopyWorkerA(pszDest, cchDest, pszSrc); + } + + return hr; +} + +STRSAFEAPI StringCbCopyW(wchar_t* pszDest, size_t cbDest, const wchar_t* pszSrc) +{ + HRESULT hr; + size_t cchDest; + + // convert to count of characters + cchDest = cbDest / sizeof(wchar_t); + + if (cchDest > STRSAFE_MAX_CCH) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + hr = StringCopyWorkerW(pszDest, cchDest, pszSrc); + } + + return hr; +} +#endif // STRSAFE_INLINE +#endif // !STRSAFE_NO_CB_FUNCTIONS + + +#ifndef STRSAFE_NO_CCH_FUNCTIONS +/*++ + +STDAPI +StringCchCopyEx( + OUT LPTSTR pszDest OPTIONAL, + IN size_t cchDest, + IN LPCTSTR pszSrc OPTIONAL, + OUT LPTSTR* ppszDestEnd OPTIONAL, + OUT size_t* pcchRemaining OPTIONAL, + IN DWORD dwFlags + ); + +Routine Description: + + This routine is a safer version of the C built-in function 'strcpy' with + some additional parameters. In addition to functionality provided by + StringCchCopy, this routine also returns a pointer to the end of the + destination string and the number of characters left in the destination string + including the null terminator. The flags parameter allows additional controls. + +Arguments: + + pszDest - destination string + + cchDest - size of destination buffer in characters. + length must be = (_tcslen(pszSrc) + 1) to hold all of + the source including the null terminator + + pszSrc - source string which must be null terminated + + ppszDestEnd - if ppszDestEnd is non-null, the function will return a + pointer to the end of the destination string. If the + function copied any data, the result will point to the + null termination character + + pcchRemaining - if pcchRemaining is non-null, the function will return the + number of characters left in the destination string, + including the null terminator + + dwFlags - controls some details of the string copy: + + STRSAFE_FILL_BEHIND_NULL + if the function succeeds, the low byte of dwFlags will be + used to fill the uninitialize part of destination buffer + behind the null terminator + + STRSAFE_IGNORE_NULLS + treat NULL string pointers like empty strings (TEXT("")). + this flag is useful for emulating functions like lstrcpy + + STRSAFE_FILL_ON_FAILURE + if the function fails, the low byte of dwFlags will be + used to fill all of the destination buffer, and it will + be null terminated. This will overwrite any truncated + string returned when the failure is + STRSAFE_E_INSUFFICIENT_BUFFER + + STRSAFE_NO_TRUNCATION / + STRSAFE_NULL_ON_FAILURE + if the function fails, the destination buffer will be set + to the empty string. This will overwrite any truncated string + returned when the failure is STRSAFE_E_INSUFFICIENT_BUFFER. + +Notes: + Behavior is undefined if source and destination strings overlap. + + pszDest and pszSrc should not be NULL unless the STRSAFE_IGNORE_NULLS flag + is specified. If STRSAFE_IGNORE_NULLS is passed, both pszDest and pszSrc + may be NULL. An error may still be returned even though NULLS are ignored + due to insufficient space. + +Return Value: + + S_OK - if there was source data and it was all copied and the + resultant dest string was null terminated + + failure - you can use the macro HRESULT_CODE() to get a win32 + error code for all hresult failure cases + + STRSAFE_E_INSUFFICIENT_BUFFER / + HRESULT_CODE(hr) == ERROR_INSUFFICIENT_BUFFER + - this return value is an indication that the copy + operation failed due to insufficient space. When this + error occurs, the destination buffer is modified to + contain a truncated version of the ideal result and is + null terminated. This is useful for situations where + truncation is ok. + + It is strongly recommended to use the SUCCEEDED() / FAILED() macros to test the + return value of this function + +--*/ + +STRSAFEAPI StringCchCopyExA(char* pszDest, size_t cchDest, const char* pszSrc, char** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags); +STRSAFEAPI StringCchCopyExW(wchar_t* pszDest, size_t cchDest, const wchar_t* pszSrc, wchar_t** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags); +#ifdef UNICODE +#define StringCchCopyEx StringCchCopyExW +#else +#define StringCchCopyEx StringCchCopyExA +#endif // !UNICODE + +#ifdef STRSAFE_INLINE +STRSAFEAPI StringCchCopyExA(char* pszDest, size_t cchDest, const char* pszSrc, char** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags) +{ + HRESULT hr; + + if (cchDest > STRSAFE_MAX_CCH) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + size_t cbDest; + + // safe to multiply cchDest * sizeof(char) since cchDest < STRSAFE_MAX_CCH and sizeof(char) is 1 + cbDest = cchDest * sizeof(char); + + hr = StringCopyExWorkerA(pszDest, cchDest, cbDest, pszSrc, ppszDestEnd, pcchRemaining, dwFlags); + } + + return hr; +} + +STRSAFEAPI StringCchCopyExW(wchar_t* pszDest, size_t cchDest, const wchar_t* pszSrc, wchar_t** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags) +{ + HRESULT hr; + + if (cchDest > STRSAFE_MAX_CCH) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + size_t cbDest; + + // safe to multiply cchDest * sizeof(wchar_t) since cchDest < STRSAFE_MAX_CCH and sizeof(wchar_t) is 2 + cbDest = cchDest * sizeof(wchar_t); + + hr = StringCopyExWorkerW(pszDest, cchDest, cbDest, pszSrc, ppszDestEnd, pcchRemaining, dwFlags); + } + + return hr; +} +#endif // STRSAFE_INLINE +#endif // !STRSAFE_NO_CCH_FUNCTIONS + + +#ifndef STRSAFE_NO_CB_FUNCTIONS +/*++ + +STDAPI +StringCbCopyEx( + OUT LPTSTR pszDest OPTIONAL, + IN size_t cbDest, + IN LPCTSTR pszSrc OPTIONAL, + OUT LPTSTR* ppszDestEnd OPTIONAL, + OUT size_t* pcbRemaining OPTIONAL, + IN DWORD dwFlags + ); + +Routine Description: + + This routine is a safer version of the C built-in function 'strcpy' with + some additional parameters. In addition to functionality provided by + StringCbCopy, this routine also returns a pointer to the end of the + destination string and the number of bytes left in the destination string + including the null terminator. The flags parameter allows additional controls. + +Arguments: + + pszDest - destination string + + cbDest - size of destination buffer in bytes. + length must be ((_tcslen(pszSrc) + 1) * sizeof(TCHAR)) to + hold all of the source including the null terminator + + pszSrc - source string which must be null terminated + + ppszDestEnd - if ppszDestEnd is non-null, the function will return a + pointer to the end of the destination string. If the + function copied any data, the result will point to the + null termination character + + pcbRemaining - pcbRemaining is non-null,the function will return the + number of bytes left in the destination string, + including the null terminator + + dwFlags - controls some details of the string copy: + + STRSAFE_FILL_BEHIND_NULL + if the function succeeds, the low byte of dwFlags will be + used to fill the uninitialize part of destination buffer + behind the null terminator + + STRSAFE_IGNORE_NULLS + treat NULL string pointers like empty strings (TEXT("")). + this flag is useful for emulating functions like lstrcpy + + STRSAFE_FILL_ON_FAILURE + if the function fails, the low byte of dwFlags will be + used to fill all of the destination buffer, and it will + be null terminated. This will overwrite any truncated + string returned when the failure is + STRSAFE_E_INSUFFICIENT_BUFFER + + STRSAFE_NO_TRUNCATION / + STRSAFE_NULL_ON_FAILURE + if the function fails, the destination buffer will be set + to the empty string. This will overwrite any truncated string + returned when the failure is STRSAFE_E_INSUFFICIENT_BUFFER. + +Notes: + Behavior is undefined if source and destination strings overlap. + + pszDest and pszSrc should not be NULL unless the STRSAFE_IGNORE_NULLS flag + is specified. If STRSAFE_IGNORE_NULLS is passed, both pszDest and pszSrc + may be NULL. An error may still be returned even though NULLS are ignored + due to insufficient space. + +Return Value: + + S_OK - if there was source data and it was all copied and the + resultant dest string was null terminated + + failure - you can use the macro HRESULT_CODE() to get a win32 + error code for all hresult failure cases + + STRSAFE_E_INSUFFICIENT_BUFFER / + HRESULT_CODE(hr) == ERROR_INSUFFICIENT_BUFFER + - this return value is an indication that the copy + operation failed due to insufficient space. When this + error occurs, the destination buffer is modified to + contain a truncated version of the ideal result and is + null terminated. This is useful for situations where + truncation is ok. + + It is strongly recommended to use the SUCCEEDED() / FAILED() macros to test the + return value of this function + +--*/ + +STRSAFEAPI StringCbCopyExA(char* pszDest, size_t cbDest, const char* pszSrc, char** ppszDestEnd, size_t* pcbRemaining, unsigned long dwFlags); +STRSAFEAPI StringCbCopyExW(wchar_t* pszDest, size_t cbDest, const wchar_t* pszSrc, wchar_t** ppszDestEnd, size_t* pcbRemaining, unsigned long dwFlags); +#ifdef UNICODE +#define StringCbCopyEx StringCbCopyExW +#else +#define StringCbCopyEx StringCbCopyExA +#endif // !UNICODE + +#ifdef STRSAFE_INLINE +STRSAFEAPI StringCbCopyExA(char* pszDest, size_t cbDest, const char* pszSrc, char** ppszDestEnd, size_t* pcbRemaining, unsigned long dwFlags) +{ + HRESULT hr; + size_t cchDest; + size_t cchRemaining = 0; + + cchDest = cbDest / sizeof(char); + + if (cchDest > STRSAFE_MAX_CCH) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + hr = StringCopyExWorkerA(pszDest, cchDest, cbDest, pszSrc, ppszDestEnd, &cchRemaining, dwFlags); + } + + if (SUCCEEDED(hr) || (hr == STRSAFE_E_INSUFFICIENT_BUFFER)) + { + if (pcbRemaining) + { + // safe to multiply cchRemaining * sizeof(char) since cchRemaining < STRSAFE_MAX_CCH and sizeof(char) is 1 + *pcbRemaining = (cchRemaining * sizeof(char)) + (cbDest % sizeof(char)); + } + } + + return hr; +} + +STRSAFEAPI StringCbCopyExW(wchar_t* pszDest, size_t cbDest, const wchar_t* pszSrc, wchar_t** ppszDestEnd, size_t* pcbRemaining, unsigned long dwFlags) +{ + HRESULT hr; + size_t cchDest; + size_t cchRemaining = 0; + + cchDest = cbDest / sizeof(wchar_t); + + if (cchDest > STRSAFE_MAX_CCH) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + hr = StringCopyExWorkerW(pszDest, cchDest, cbDest, pszSrc, ppszDestEnd, &cchRemaining, dwFlags); + } + + if (SUCCEEDED(hr) || (hr == STRSAFE_E_INSUFFICIENT_BUFFER)) + { + if (pcbRemaining) + { + // safe to multiply cchRemaining * sizeof(wchar_t) since cchRemaining < STRSAFE_MAX_CCH and sizeof(wchar_t) is 2 + *pcbRemaining = (cchRemaining * sizeof(wchar_t)) + (cbDest % sizeof(wchar_t)); + } + } + + return hr; +} +#endif // STRSAFE_INLINE +#endif // !STRSAFE_NO_CB_FUNCTIONS + + +#ifndef STRSAFE_NO_CCH_FUNCTIONS +/*++ + +STDAPI +StringCchCopyN( + OUT LPTSTR pszDest, + IN size_t cchDest, + IN LPCTSTR pszSrc, + IN size_t cchSrc + ); + +Routine Description: + + This routine is a safer version of the C built-in function 'strncpy'. + The size of the destination buffer (in characters) is a parameter and + this function will not write past the end of this buffer and it will + ALWAYS null terminate the destination buffer (unless it is zero length). + + This routine is meant as a replacement for strncpy, but it does behave + differently. This function will not pad the destination buffer with extra + null termination characters if cchSrc is greater than the length of pszSrc. + + This function returns a hresult, and not a pointer. It returns + S_OK if the entire string or the first cchSrc characters were copied + without truncation and the resultant destination string was null terminated, + otherwise it will return a failure code. In failure cases as much of pszSrc + will be copied to pszDest as possible, and pszDest will be null terminated. + +Arguments: + + pszDest - destination string + + cchDest - size of destination buffer in characters. + length must be = (_tcslen(src) + 1) to hold all of the + source including the null terminator + + pszSrc - source string + + cchSrc - maximum number of characters to copy from source string, + not including the null terminator. + +Notes: + Behavior is undefined if source and destination strings overlap. + + pszDest and pszSrc should not be NULL. See StringCchCopyNEx if you require + the handling of NULL values. + +Return Value: + + S_OK - if there was source data and it was all copied and the + resultant dest string was null terminated + + failure - you can use the macro HRESULT_CODE() to get a win32 + error code for all hresult failure cases + + STRSAFE_E_INSUFFICIENT_BUFFER / + HRESULT_CODE(hr) == ERROR_INSUFFICIENT_BUFFER + - this return value is an indication that the copy + operation failed due to insufficient space. When this + error occurs, the destination buffer is modified to + contain a truncated version of the ideal result and is + null terminated. This is useful for situations where + truncation is ok + + It is strongly recommended to use the SUCCEEDED() / FAILED() macros to test the + return value of this function. + +--*/ + +STRSAFEAPI StringCchCopyNA(char* pszDest, size_t cchDest, const char* pszSrc, size_t cchSrc); +STRSAFEAPI StringCchCopyNW(wchar_t* pszDest, size_t cchDest, const wchar_t* pszSrc, size_t cchSrc); +#ifdef UNICODE +#define StringCchCopyN StringCchCopyNW +#else +#define StringCchCopyN StringCchCopyNA +#endif // !UNICODE + +#ifdef STRSAFE_INLINE +STRSAFEAPI StringCchCopyNA(char* pszDest, size_t cchDest, const char* pszSrc, size_t cchSrc) +{ + HRESULT hr; + + if ((cchDest > STRSAFE_MAX_CCH) || + (cchSrc > STRSAFE_MAX_CCH)) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + hr = StringCopyNWorkerA(pszDest, cchDest, pszSrc, cchSrc); + } + + return hr; +} + +STRSAFEAPI StringCchCopyNW(wchar_t* pszDest, size_t cchDest, const wchar_t* pszSrc, size_t cchSrc) +{ + HRESULT hr; + + if ((cchDest > STRSAFE_MAX_CCH) || + (cchSrc > STRSAFE_MAX_CCH)) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + hr = StringCopyNWorkerW(pszDest, cchDest, pszSrc, cchSrc); + } + + return hr; +} +#endif // STRSAFE_INLINE +#endif // !STRSAFE_NO_CCH_FUNCTIONS + + +#ifndef STRSAFE_NO_CB_FUNCTIONS +/*++ + +STDAPI +StringCbCopyN( + OUT LPTSTR pszDest, + IN size_t cbDest, + IN LPCTSTR pszSrc, + IN size_t cbSrc + ); + +Routine Description: + + This routine is a safer version of the C built-in function 'strncpy'. + The size of the destination buffer (in bytes) is a parameter and this + function will not write past the end of this buffer and it will ALWAYS + null terminate the destination buffer (unless it is zero length). + + This routine is meant as a replacement for strncpy, but it does behave + differently. This function will not pad the destination buffer with extra + null termination characters if cbSrc is greater than the size of pszSrc. + + This function returns a hresult, and not a pointer. It returns + S_OK if the entire string or the first cbSrc characters were + copied without truncation and the resultant destination string was null + terminated, otherwise it will return a failure code. In failure cases as + much of pszSrc will be copied to pszDest as possible, and pszDest will be + null terminated. + +Arguments: + + pszDest - destination string + + cbDest - size of destination buffer in bytes. + length must be = ((_tcslen(src) + 1) * sizeof(TCHAR)) to + hold all of the source including the null terminator + + pszSrc - source string + + cbSrc - maximum number of bytes to copy from source string, + not including the null terminator. + +Notes: + Behavior is undefined if source and destination strings overlap. + + pszDest and pszSrc should not be NULL. See StringCbCopyEx if you require + the handling of NULL values. + +Return Value: + + S_OK - if there was source data and it was all copied and the + resultant dest string was null terminated + + failure - you can use the macro HRESULT_CODE() to get a win32 + error code for all hresult failure cases + + STRSAFE_E_INSUFFICIENT_BUFFER / + HRESULT_CODE(hr) == ERROR_INSUFFICIENT_BUFFER + - this return value is an indication that the copy + operation failed due to insufficient space. When this + error occurs, the destination buffer is modified to + contain a truncated version of the ideal result and is + null terminated. This is useful for situations where + truncation is ok + + It is strongly recommended to use the SUCCEEDED() / FAILED() macros to test the + return value of this function. + +--*/ + +STRSAFEAPI StringCbCopyNA(char* pszDest, size_t cbDest, const char* pszSrc, size_t cbSrc); +STRSAFEAPI StringCbCopyNW(wchar_t* pszDest, size_t cbDest, const wchar_t* pszSrc, size_t cbSrc); +#ifdef UNICODE +#define StringCbCopyN StringCbCopyNW +#else +#define StringCbCopyN StringCbCopyNA +#endif // !UNICODE + +#ifdef STRSAFE_INLINE +STRSAFEAPI StringCbCopyNA(char* pszDest, size_t cbDest, const char* pszSrc, size_t cbSrc) +{ + HRESULT hr; + size_t cchDest; + size_t cchSrc; + + // convert to count of characters + cchDest = cbDest / sizeof(char); + cchSrc = cbSrc / sizeof(char); + + if ((cchDest > STRSAFE_MAX_CCH) || + (cchSrc > STRSAFE_MAX_CCH)) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + hr = StringCopyNWorkerA(pszDest, cchDest, pszSrc, cchSrc); + } + + return hr; +} + +STRSAFEAPI StringCbCopyNW(wchar_t* pszDest, size_t cbDest, const wchar_t* pszSrc, size_t cbSrc) +{ + HRESULT hr; + size_t cchDest; + size_t cchSrc; + + // convert to count of characters + cchDest = cbDest / sizeof(wchar_t); + cchSrc = cbSrc / sizeof(wchar_t); + + if ((cchDest > STRSAFE_MAX_CCH) || + (cchSrc > STRSAFE_MAX_CCH)) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + hr = StringCopyNWorkerW(pszDest, cchDest, pszSrc, cchSrc); + } + + return hr; +} +#endif // STRSAFE_INLINE +#endif // !STRSAFE_NO_CB_FUNCTIONS + + +#ifndef STRSAFE_NO_CCH_FUNCTIONS +/*++ + +STDAPI +StringCchCopyNEx( + OUT LPTSTR pszDest OPTIONAL, + IN size_t cchDest, + IN LPCTSTR pszSrc OPTIONAL, + IN size_t cchSrc, + OUT LPTSTR* ppszDestEnd OPTIONAL, + OUT size_t* pcchRemaining OPTIONAL, + IN DWORD dwFlags + ); + +Routine Description: + + This routine is a safer version of the C built-in function 'strncpy' with + some additional parameters. In addition to functionality provided by + StringCchCopyN, this routine also returns a pointer to the end of the + destination string and the number of characters left in the destination + string including the null terminator. The flags parameter allows + additional controls. + + This routine is meant as a replacement for strncpy, but it does behave + differently. This function will not pad the destination buffer with extra + null termination characters if cchSrc is greater than the length of pszSrc. + +Arguments: + + pszDest - destination string + + cchDest - size of destination buffer in characters. + length must be = (_tcslen(pszSrc) + 1) to hold all of + the source including the null terminator + + pszSrc - source string + + cchSrc - maximum number of characters to copy from the source + string + + ppszDestEnd - if ppszDestEnd is non-null, the function will return a + pointer to the end of the destination string. If the + function copied any data, the result will point to the + null termination character + + pcchRemaining - if pcchRemaining is non-null, the function will return the + number of characters left in the destination string, + including the null terminator + + dwFlags - controls some details of the string copy: + + STRSAFE_FILL_BEHIND_NULL + if the function succeeds, the low byte of dwFlags will be + used to fill the uninitialize part of destination buffer + behind the null terminator + + STRSAFE_IGNORE_NULLS + treat NULL string pointers like empty strings (TEXT("")). + this flag is useful for emulating functions like lstrcpy + + STRSAFE_FILL_ON_FAILURE + if the function fails, the low byte of dwFlags will be + used to fill all of the destination buffer, and it will + be null terminated. This will overwrite any truncated + string returned when the failure is + STRSAFE_E_INSUFFICIENT_BUFFER + + STRSAFE_NO_TRUNCATION / + STRSAFE_NULL_ON_FAILURE + if the function fails, the destination buffer will be set + to the empty string. This will overwrite any truncated string + returned when the failure is STRSAFE_E_INSUFFICIENT_BUFFER. + +Notes: + Behavior is undefined if source and destination strings overlap. + + pszDest and pszSrc should not be NULL unless the STRSAFE_IGNORE_NULLS flag + is specified. If STRSAFE_IGNORE_NULLS is passed, both pszDest and pszSrc + may be NULL. An error may still be returned even though NULLS are ignored + due to insufficient space. + +Return Value: + + S_OK - if there was source data and it was all copied and the + resultant dest string was null terminated + + failure - you can use the macro HRESULT_CODE() to get a win32 + error code for all hresult failure cases + + STRSAFE_E_INSUFFICIENT_BUFFER / + HRESULT_CODE(hr) == ERROR_INSUFFICIENT_BUFFER + - this return value is an indication that the copy + operation failed due to insufficient space. When this + error occurs, the destination buffer is modified to + contain a truncated version of the ideal result and is + null terminated. This is useful for situations where + truncation is ok. + + It is strongly recommended to use the SUCCEEDED() / FAILED() macros to test the + return value of this function + +--*/ + +STRSAFEAPI StringCchCopyNExA(char* pszDest, size_t cchDest, const char* pszSrc, size_t cchSrc, char** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags); +STRSAFEAPI StringCchCopyNExW(wchar_t* pszDest, size_t cchDest, const wchar_t* pszSrc, size_t cchSrc, wchar_t** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags); +#ifdef UNICODE +#define StringCchCopyNEx StringCchCopyNExW +#else +#define StringCchCopyNEx StringCchCopyNExA +#endif // !UNICODE + +#ifdef STRSAFE_INLINE +STRSAFEAPI StringCchCopyNExA(char* pszDest, size_t cchDest, const char* pszSrc, size_t cchSrc, char** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags) +{ + HRESULT hr; + + if ((cchDest > STRSAFE_MAX_CCH) || + (cchSrc > STRSAFE_MAX_CCH)) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + size_t cbDest; + + // safe to multiply cchDest * sizeof(char) since cchDest < STRSAFE_MAX_CCH and sizeof(char) is 1 + cbDest = cchDest * sizeof(char); + + hr = StringCopyNExWorkerA(pszDest, cchDest, cbDest, pszSrc, cchSrc, ppszDestEnd, pcchRemaining, dwFlags); + } + + return hr; +} + +STRSAFEAPI StringCchCopyNExW(wchar_t* pszDest, size_t cchDest, const wchar_t* pszSrc, size_t cchSrc, wchar_t** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags) +{ + HRESULT hr; + + if ((cchDest > STRSAFE_MAX_CCH) || + (cchSrc > STRSAFE_MAX_CCH)) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + size_t cbDest; + + // safe to multiply cchDest * sizeof(wchar_t) since cchDest < STRSAFE_MAX_CCH and sizeof(wchar_t) is 2 + cbDest = cchDest * sizeof(wchar_t); + + hr = StringCopyNExWorkerW(pszDest, cchDest, cbDest, pszSrc, cchSrc, ppszDestEnd, pcchRemaining, dwFlags); + } + + return hr; +} +#endif // STRSAFE_INLINE +#endif // !STRSAFE_NO_CCH_FUNCTIONS + + +#ifndef STRSAFE_NO_CB_FUNCTIONS +/*++ + +STDAPI +StringCbCopyNEx( + OUT LPTSTR pszDest OPTIONAL, + IN size_t cbDest, + IN LPCTSTR pszSrc OPTIONAL, + IN size_t cbSrc, + OUT LPTSTR* ppszDestEnd OPTIONAL, + OUT size_t* pcbRemaining OPTIONAL, + IN DWORD dwFlags + ); + +Routine Description: + + This routine is a safer version of the C built-in function 'strncpy' with + some additional parameters. In addition to functionality provided by + StringCbCopyN, this routine also returns a pointer to the end of the + destination string and the number of bytes left in the destination string + including the null terminator. The flags parameter allows additional controls. + + This routine is meant as a replacement for strncpy, but it does behave + differently. This function will not pad the destination buffer with extra + null termination characters if cbSrc is greater than the size of pszSrc. + +Arguments: + + pszDest - destination string + + cbDest - size of destination buffer in bytes. + length must be ((_tcslen(pszSrc) + 1) * sizeof(TCHAR)) to + hold all of the source including the null terminator + + pszSrc - source string + + cbSrc - maximum number of bytes to copy from source string + + ppszDestEnd - if ppszDestEnd is non-null, the function will return a + pointer to the end of the destination string. If the + function copied any data, the result will point to the + null termination character + + pcbRemaining - pcbRemaining is non-null,the function will return the + number of bytes left in the destination string, + including the null terminator + + dwFlags - controls some details of the string copy: + + STRSAFE_FILL_BEHIND_NULL + if the function succeeds, the low byte of dwFlags will be + used to fill the uninitialize part of destination buffer + behind the null terminator + + STRSAFE_IGNORE_NULLS + treat NULL string pointers like empty strings (TEXT("")). + this flag is useful for emulating functions like lstrcpy + + STRSAFE_FILL_ON_FAILURE + if the function fails, the low byte of dwFlags will be + used to fill all of the destination buffer, and it will + be null terminated. This will overwrite any truncated + string returned when the failure is + STRSAFE_E_INSUFFICIENT_BUFFER + + STRSAFE_NO_TRUNCATION / + STRSAFE_NULL_ON_FAILURE + if the function fails, the destination buffer will be set + to the empty string. This will overwrite any truncated string + returned when the failure is STRSAFE_E_INSUFFICIENT_BUFFER. + +Notes: + Behavior is undefined if source and destination strings overlap. + + pszDest and pszSrc should not be NULL unless the STRSAFE_IGNORE_NULLS flag + is specified. If STRSAFE_IGNORE_NULLS is passed, both pszDest and pszSrc + may be NULL. An error may still be returned even though NULLS are ignored + due to insufficient space. + +Return Value: + + S_OK - if there was source data and it was all copied and the + resultant dest string was null terminated + + failure - you can use the macro HRESULT_CODE() to get a win32 + error code for all hresult failure cases + + STRSAFE_E_INSUFFICIENT_BUFFER / + HRESULT_CODE(hr) == ERROR_INSUFFICIENT_BUFFER + - this return value is an indication that the copy + operation failed due to insufficient space. When this + error occurs, the destination buffer is modified to + contain a truncated version of the ideal result and is + null terminated. This is useful for situations where + truncation is ok. + + It is strongly recommended to use the SUCCEEDED() / FAILED() macros to test the + return value of this function + +--*/ + +STRSAFEAPI StringCbCopyNExA(char* pszDest, size_t cbDest, const char* pszSrc, size_t cbSrc, char** ppszDestEnd, size_t* pcbRemaining, unsigned long dwFlags); +STRSAFEAPI StringCbCopyNExW(wchar_t* pszDest, size_t cbDest, const wchar_t* pszSrc, size_t cbSrc, wchar_t** ppszDestEnd, size_t* pcbRemaining, unsigned long dwFlags); +#ifdef UNICODE +#define StringCbCopyNEx StringCbCopyNExW +#else +#define StringCbCopyNEx StringCbCopyNExA +#endif // !UNICODE + +#ifdef STRSAFE_INLINE +STRSAFEAPI StringCbCopyNExA(char* pszDest, size_t cbDest, const char* pszSrc, size_t cbSrc, char** ppszDestEnd, size_t* pcbRemaining, unsigned long dwFlags) +{ + HRESULT hr; + size_t cchDest; + size_t cchSrc; + size_t cchRemaining = 0; + + cchDest = cbDest / sizeof(char); + cchSrc = cbSrc / sizeof(char); + + if ((cchDest > STRSAFE_MAX_CCH) || + (cchSrc > STRSAFE_MAX_CCH)) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + hr = StringCopyNExWorkerA(pszDest, cchDest, cbDest, pszSrc, cchSrc, ppszDestEnd, &cchRemaining, dwFlags); + } + + if (SUCCEEDED(hr) || (hr == STRSAFE_E_INSUFFICIENT_BUFFER)) + { + if (pcbRemaining) + { + // safe to multiply cchRemaining * sizeof(char) since cchRemaining < STRSAFE_MAX_CCH and sizeof(char) is 1 + *pcbRemaining = (cchRemaining * sizeof(char)) + (cbDest % sizeof(char)); + } + } + + return hr; +} + +STRSAFEAPI StringCbCopyNExW(wchar_t* pszDest, size_t cbDest, const wchar_t* pszSrc, size_t cbSrc, wchar_t** ppszDestEnd, size_t* pcbRemaining, unsigned long dwFlags) +{ + HRESULT hr; + size_t cchDest; + size_t cchSrc; + size_t cchRemaining = 0; + + cchDest = cbDest / sizeof(wchar_t); + cchSrc = cbSrc / sizeof(wchar_t); + + if ((cchDest > STRSAFE_MAX_CCH) || + (cchSrc > STRSAFE_MAX_CCH)) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + hr = StringCopyNExWorkerW(pszDest, cchDest, cbDest, pszSrc, cchSrc, ppszDestEnd, &cchRemaining, dwFlags); + } + + if (SUCCEEDED(hr) || (hr == STRSAFE_E_INSUFFICIENT_BUFFER)) + { + if (pcbRemaining) + { + // safe to multiply cchRemaining * sizeof(wchar_t) since cchRemaining < STRSAFE_MAX_CCH and sizeof(wchar_t) is 2 + *pcbRemaining = (cchRemaining * sizeof(wchar_t)) + (cbDest % sizeof(wchar_t)); + } + } + + return hr; +} +#endif // STRSAFE_INLINE +#endif // !STRSAFE_NO_CB_FUNCTIONS + + +#ifndef STRSAFE_NO_CCH_FUNCTIONS +/*++ + +STDAPI +StringCchCat( + IN OUT LPTSTR pszDest, + IN size_t cchDest, + IN LPCTSTR pszSrc + ); + +Routine Description: + + This routine is a safer version of the C built-in function 'strcat'. + The size of the destination buffer (in characters) is a parameter and this + function will not write past the end of this buffer and it will ALWAYS + null terminate the destination buffer (unless it is zero length). + + This function returns a hresult, and not a pointer. It returns + S_OK if the string was concatenated without truncation and null terminated, + otherwise it will return a failure code. In failure cases as much of pszSrc + will be appended to pszDest as possible, and pszDest will be null + terminated. + +Arguments: + + pszDest - destination string which must be null terminated + + cchDest - size of destination buffer in characters. + length must be = (_tcslen(pszDest) + _tcslen(pszSrc) + 1) + to hold all of the combine string plus the null + terminator + + pszSrc - source string which must be null terminated + +Notes: + Behavior is undefined if source and destination strings overlap. + + pszDest and pszSrc should not be NULL. See StringCchCatEx if you require + the handling of NULL values. + +Return Value: + + S_OK - if there was source data and it was all concatenated and + the resultant dest string was null terminated + + failure - you can use the macro HRESULT_CODE() to get a win32 + error code for all hresult failure cases + + STRSAFE_E_INSUFFICIENT_BUFFER / + HRESULT_CODE(hr) == ERROR_INSUFFICIENT_BUFFER + - this return value is an indication that the operation + failed due to insufficient space. When this error occurs, + the destination buffer is modified to contain a truncated + version of the ideal result and is null terminated. This + is useful for situations where truncation is ok. + + It is strongly recommended to use the SUCCEEDED() / FAILED() macros to test the + return value of this function + +--*/ + +STRSAFEAPI StringCchCatA(char* pszDest, size_t cchDest, const char* pszSrc); +STRSAFEAPI StringCchCatW(wchar_t* pszDest, size_t cchDest, const wchar_t* pszSrc); +#ifdef UNICODE +#define StringCchCat StringCchCatW +#else +#define StringCchCat StringCchCatA +#endif // !UNICODE + +#ifdef STRSAFE_INLINE +STRSAFEAPI StringCchCatA(char* pszDest, size_t cchDest, const char* pszSrc) +{ + HRESULT hr; + + if (cchDest > STRSAFE_MAX_CCH) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + hr = StringCatWorkerA(pszDest, cchDest, pszSrc); + } + + return hr; +} + +STRSAFEAPI StringCchCatW(wchar_t* pszDest, size_t cchDest, const wchar_t* pszSrc) +{ + HRESULT hr; + + if (cchDest > STRSAFE_MAX_CCH) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + hr = StringCatWorkerW(pszDest, cchDest, pszSrc); + } + + return hr; +} +#endif // STRSAFE_INLINE +#endif // !STRSAFE_NO_CCH_FUNCTIONS + + +#ifndef STRSAFE_NO_CB_FUNCTIONS +/*++ + +STDAPI +StringCbCat( + IN OUT LPTSTR pszDest, + IN size_t cbDest, + IN LPCTSTR pszSrc + ); + +Routine Description: + + This routine is a safer version of the C built-in function 'strcat'. + The size of the destination buffer (in bytes) is a parameter and this + function will not write past the end of this buffer and it will ALWAYS + null terminate the destination buffer (unless it is zero length). + + This function returns a hresult, and not a pointer. It returns + S_OK if the string was concatenated without truncation and null terminated, + otherwise it will return a failure code. In failure cases as much of pszSrc + will be appended to pszDest as possible, and pszDest will be null + terminated. + +Arguments: + + pszDest - destination string which must be null terminated + + cbDest - size of destination buffer in bytes. + length must be = ((_tcslen(pszDest) + _tcslen(pszSrc) + 1) * sizeof(TCHAR) + to hold all of the combine string plus the null + terminator + + pszSrc - source string which must be null terminated + +Notes: + Behavior is undefined if source and destination strings overlap. + + pszDest and pszSrc should not be NULL. See StringCbCatEx if you require + the handling of NULL values. + +Return Value: + + S_OK - if there was source data and it was all concatenated and + the resultant dest string was null terminated + + failure - you can use the macro HRESULT_CODE() to get a win32 + error code for all hresult failure cases + + STRSAFE_E_INSUFFICIENT_BUFFER / + HRESULT_CODE(hr) == ERROR_INSUFFICIENT_BUFFER + - this return value is an indication that the operation + failed due to insufficient space. When this error occurs, + the destination buffer is modified to contain a truncated + version of the ideal result and is null terminated. This + is useful for situations where truncation is ok. + + It is strongly recommended to use the SUCCEEDED() / FAILED() macros to test the + return value of this function + +--*/ + +STRSAFEAPI StringCbCatA(char* pszDest, size_t cbDest, const char* pszSrc); +STRSAFEAPI StringCbCatW(wchar_t* pszDest, size_t cbDest, const wchar_t* pszSrc); +#ifdef UNICODE +#define StringCbCat StringCbCatW +#else +#define StringCbCat StringCbCatA +#endif // !UNICODE + +#ifdef STRSAFE_INLINE +STRSAFEAPI StringCbCatA(char* pszDest, size_t cbDest, const char* pszSrc) +{ + HRESULT hr; + size_t cchDest; + + cchDest = cbDest / sizeof(char); + + if (cchDest > STRSAFE_MAX_CCH) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + hr = StringCatWorkerA(pszDest, cchDest, pszSrc); + } + + return hr; +} + +STRSAFEAPI StringCbCatW(wchar_t* pszDest, size_t cbDest, const wchar_t* pszSrc) +{ + HRESULT hr; + size_t cchDest; + + cchDest = cbDest / sizeof(wchar_t); + + if (cchDest > STRSAFE_MAX_CCH) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + hr = StringCatWorkerW(pszDest, cchDest, pszSrc); + } + + return hr; +} +#endif // STRSAFE_INLINE +#endif // !STRSAFE_NO_CB_FUNCTIONS + + +#ifndef STRSAFE_NO_CCH_FUNCTIONS +/*++ + +STDAPI +StringCchCatEx( + IN OUT LPTSTR pszDest OPTIONAL, + IN size_t cchDest, + IN LPCTSTR pszSrc OPTIONAL, + OUT LPTSTR* ppszDestEnd OPTIONAL, + OUT size_t* pcchRemaining OPTIONAL, + IN DWORD dwFlags + ); + +Routine Description: + + This routine is a safer version of the C built-in function 'strcat' with + some additional parameters. In addition to functionality provided by + StringCchCat, this routine also returns a pointer to the end of the + destination string and the number of characters left in the destination string + including the null terminator. The flags parameter allows additional controls. + +Arguments: + + pszDest - destination string which must be null terminated + + cchDest - size of destination buffer in characters + length must be (_tcslen(pszDest) + _tcslen(pszSrc) + 1) + to hold all of the combine string plus the null + terminator. + + pszSrc - source string which must be null terminated + + ppszDestEnd - if ppszDestEnd is non-null, the function will return a + pointer to the end of the destination string. If the + function appended any data, the result will point to the + null termination character + + pcchRemaining - if pcchRemaining is non-null, the function will return the + number of characters left in the destination string, + including the null terminator + + dwFlags - controls some details of the string copy: + + STRSAFE_FILL_BEHIND_NULL + if the function succeeds, the low byte of dwFlags will be + used to fill the uninitialize part of destination buffer + behind the null terminator + + STRSAFE_IGNORE_NULLS + treat NULL string pointers like empty strings (TEXT("")). + this flag is useful for emulating functions like lstrcat + + STRSAFE_FILL_ON_FAILURE + if the function fails, the low byte of dwFlags will be + used to fill all of the destination buffer, and it will + be null terminated. This will overwrite any pre-existing + or truncated string + + STRSAFE_NULL_ON_FAILURE + if the function fails, the destination buffer will be set + to the empty string. This will overwrite any pre-existing or + truncated string + + STRSAFE_NO_TRUNCATION + if the function returns STRSAFE_E_INSUFFICIENT_BUFFER, pszDest + will not contain a truncated string, it will remain unchanged. + +Notes: + Behavior is undefined if source and destination strings overlap. + + pszDest and pszSrc should not be NULL unless the STRSAFE_IGNORE_NULLS flag + is specified. If STRSAFE_IGNORE_NULLS is passed, both pszDest and pszSrc + may be NULL. An error may still be returned even though NULLS are ignored + due to insufficient space. + +Return Value: + + S_OK - if there was source data and it was all concatenated and + the resultant dest string was null terminated + + failure - you can use the macro HRESULT_CODE() to get a win32 + error code for all hresult failure cases + + STRSAFE_E_INSUFFICIENT_BUFFER / + HRESULT_CODE(hr) == ERROR_INSUFFICIENT_BUFFER + - this return value is an indication that the operation + failed due to insufficient space. When this error + occurs, the destination buffer is modified to contain + a truncated version of the ideal result and is null + terminated. This is useful for situations where + truncation is ok. + + It is strongly recommended to use the SUCCEEDED() / FAILED() macros to test the + return value of this function + +--*/ + +STRSAFEAPI StringCchCatExA(char* pszDest, size_t cchDest, const char* pszSrc, char** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags); +STRSAFEAPI StringCchCatExW(wchar_t* pszDest, size_t cchDest, const wchar_t* pszSrc, wchar_t** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags); +#ifdef UNICODE +#define StringCchCatEx StringCchCatExW +#else +#define StringCchCatEx StringCchCatExA +#endif // !UNICODE + +#ifdef STRSAFE_INLINE +STRSAFEAPI StringCchCatExA(char* pszDest, size_t cchDest, const char* pszSrc, char** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags) +{ + HRESULT hr; + + if (cchDest > STRSAFE_MAX_CCH) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + size_t cbDest; + + // safe to multiply cchDest * sizeof(char) since cchDest < STRSAFE_MAX_CCH and sizeof(char) is 1 + cbDest = cchDest * sizeof(char); + + hr = StringCatExWorkerA(pszDest, cchDest, cbDest, pszSrc, ppszDestEnd, pcchRemaining, dwFlags); + } + + return hr; +} + +STRSAFEAPI StringCchCatExW(wchar_t* pszDest, size_t cchDest, const wchar_t* pszSrc, wchar_t** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags) +{ + HRESULT hr; + + if (cchDest > STRSAFE_MAX_CCH) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + size_t cbDest; + + // safe to multiply cchDest * sizeof(wchar_t) since cchDest < STRSAFE_MAX_CCH and sizeof(wchar_t) is 2 + cbDest = cchDest * sizeof(wchar_t); + + hr = StringCatExWorkerW(pszDest, cchDest, cbDest, pszSrc, ppszDestEnd, pcchRemaining, dwFlags); + } + + return hr; +} +#endif // STRSAFE_INLINE +#endif // !STRSAFE_NO_CCH_FUNCTIONS + + +#ifndef STRSAFE_NO_CB_FUNCTIONS +/*++ + +STDAPI +StringCbCatEx( + IN OUT LPTSTR pszDest OPTIONAL, + IN size_t cbDest, + IN LPCTSTR pszSrc OPTIONAL, + OUT LPTSTR* ppszDestEnd OPTIONAL, + OUT size_t* pcbRemaining OPTIONAL, + IN DWORD dwFlags + ); + +Routine Description: + + This routine is a safer version of the C built-in function 'strcat' with + some additional parameters. In addition to functionality provided by + StringCbCat, this routine also returns a pointer to the end of the + destination string and the number of bytes left in the destination string + including the null terminator. The flags parameter allows additional controls. + +Arguments: + + pszDest - destination string which must be null terminated + + cbDest - size of destination buffer in bytes. + length must be ((_tcslen(pszDest) + _tcslen(pszSrc) + 1) * sizeof(TCHAR) + to hold all of the combine string plus the null + terminator. + + pszSrc - source string which must be null terminated + + ppszDestEnd - if ppszDestEnd is non-null, the function will return a + pointer to the end of the destination string. If the + function appended any data, the result will point to the + null termination character + + pcbRemaining - if pcbRemaining is non-null, the function will return + the number of bytes left in the destination string, + including the null terminator + + dwFlags - controls some details of the string copy: + + STRSAFE_FILL_BEHIND_NULL + if the function succeeds, the low byte of dwFlags will be + used to fill the uninitialize part of destination buffer + behind the null terminator + + STRSAFE_IGNORE_NULLS + treat NULL string pointers like empty strings (TEXT("")). + this flag is useful for emulating functions like lstrcat + + STRSAFE_FILL_ON_FAILURE + if the function fails, the low byte of dwFlags will be + used to fill all of the destination buffer, and it will + be null terminated. This will overwrite any pre-existing + or truncated string + + STRSAFE_NULL_ON_FAILURE + if the function fails, the destination buffer will be set + to the empty string. This will overwrite any pre-existing or + truncated string + + STRSAFE_NO_TRUNCATION + if the function returns STRSAFE_E_INSUFFICIENT_BUFFER, pszDest + will not contain a truncated string, it will remain unchanged. + +Notes: + Behavior is undefined if source and destination strings overlap. + + pszDest and pszSrc should not be NULL unless the STRSAFE_IGNORE_NULLS flag + is specified. If STRSAFE_IGNORE_NULLS is passed, both pszDest and pszSrc + may be NULL. An error may still be returned even though NULLS are ignored + due to insufficient space. + +Return Value: + + S_OK - if there was source data and it was all concatenated + and the resultant dest string was null terminated + + failure - you can use the macro HRESULT_CODE() to get a win32 + error code for all hresult failure cases + + STRSAFE_E_INSUFFICIENT_BUFFER / + HRESULT_CODE(hr) == ERROR_INSUFFICIENT_BUFFER + - this return value is an indication that the operation + failed due to insufficient space. When this error + occurs, the destination buffer is modified to contain + a truncated version of the ideal result and is null + terminated. This is useful for situations where + truncation is ok. + + It is strongly recommended to use the SUCCEEDED() / FAILED() macros to test the + return value of this function + +--*/ + +STRSAFEAPI StringCbCatExA(char* pszDest, size_t cbDest, const char* pszSrc, char** ppszDestEnd, size_t* pcbRemaining, unsigned long dwFlags); +STRSAFEAPI StringCbCatExW(wchar_t* pszDest, size_t cbDest, const wchar_t* pszSrc, wchar_t** ppszDestEnd, size_t* pcbRemaining, unsigned long dwFlags); +#ifdef UNICODE +#define StringCbCatEx StringCbCatExW +#else +#define StringCbCatEx StringCbCatExA +#endif // !UNICODE + +#ifdef STRSAFE_INLINE +STRSAFEAPI StringCbCatExA(char* pszDest, size_t cbDest, const char* pszSrc, char** ppszDestEnd, size_t* pcbRemaining, unsigned long dwFlags) +{ + HRESULT hr; + size_t cchDest; + size_t cchRemaining = 0; + + cchDest = cbDest / sizeof(char); + + if (cchDest > STRSAFE_MAX_CCH) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + hr = StringCatExWorkerA(pszDest, cchDest, cbDest, pszSrc, ppszDestEnd, &cchRemaining, dwFlags); + } + + if (SUCCEEDED(hr) || (hr == STRSAFE_E_INSUFFICIENT_BUFFER)) + { + if (pcbRemaining) + { + // safe to multiply cchRemaining * sizeof(char) since cchRemaining < STRSAFE_MAX_CCH and sizeof(char) is 1 + *pcbRemaining = (cchRemaining * sizeof(char)) + (cbDest % sizeof(char)); + } + } + + return hr; +} + +STRSAFEAPI StringCbCatExW(wchar_t* pszDest, size_t cbDest, const wchar_t* pszSrc, wchar_t** ppszDestEnd, size_t* pcbRemaining, unsigned long dwFlags) +{ + HRESULT hr; + size_t cchDest; + size_t cchRemaining = 0; + + cchDest = cbDest / sizeof(wchar_t); + + if (cchDest > STRSAFE_MAX_CCH) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + hr = StringCatExWorkerW(pszDest, cchDest, cbDest, pszSrc, ppszDestEnd, &cchRemaining, dwFlags); + } + + if (SUCCEEDED(hr) || (hr == STRSAFE_E_INSUFFICIENT_BUFFER)) + { + if (pcbRemaining) + { + // safe to multiply cchRemaining * sizeof(wchar_t) since cchRemaining < STRSAFE_MAX_CCH and sizeof(wchar_t) is 2 + *pcbRemaining = (cchRemaining * sizeof(wchar_t)) + (cbDest % sizeof(wchar_t)); + } + } + + return hr; +} +#endif // STRSAFE_INLINE +#endif // !STRSAFE_NO_CB_FUNCTIONS + + +#ifndef STRSAFE_NO_CCH_FUNCTIONS +/*++ + +STDAPI +StringCchCatN( + IN OUT LPTSTR pszDest, + IN size_t cchDest, + IN LPCTSTR pszSrc, + IN size_t cchMaxAppend + ); + +Routine Description: + + This routine is a safer version of the C built-in function 'strncat'. + The size of the destination buffer (in characters) is a parameter as well as + the maximum number of characters to append, excluding the null terminator. + This function will not write past the end of the destination buffer and it will + ALWAYS null terminate pszDest (unless it is zero length). + + This function returns a hresult, and not a pointer. It returns + S_OK if all of pszSrc or the first cchMaxAppend characters were appended + to the destination string and it was null terminated, otherwise it will + return a failure code. In failure cases as much of pszSrc will be appended + to pszDest as possible, and pszDest will be null terminated. + +Arguments: + + pszDest - destination string which must be null terminated + + cchDest - size of destination buffer in characters. + length must be (_tcslen(pszDest) + min(cchMaxAppend, _tcslen(pszSrc)) + 1) + to hold all of the combine string plus the null + terminator. + + pszSrc - source string + + cchMaxAppend - maximum number of characters to append + +Notes: + Behavior is undefined if source and destination strings overlap. + + pszDest and pszSrc should not be NULL. See StringCchCatNEx if you require + the handling of NULL values. + +Return Value: + + S_OK - if all of pszSrc or the first cchMaxAppend characters + were concatenated to pszDest and the resultant dest + string was null terminated + + failure - you can use the macro HRESULT_CODE() to get a win32 + error code for all hresult failure cases + + STRSAFE_E_INSUFFICIENT_BUFFER / + HRESULT_CODE(hr) == ERROR_INSUFFICIENT_BUFFER + - this return value is an indication that the operation + failed due to insufficient space. When this error + occurs, the destination buffer is modified to contain + a truncated version of the ideal result and is null + terminated. This is useful for situations where + truncation is ok. + + It is strongly recommended to use the SUCCEEDED() / FAILED() macros to test the + return value of this function + +--*/ + +STRSAFEAPI StringCchCatNA(char* pszDest, size_t cchDest, const char* pszSrc, size_t cchMaxAppend); +STRSAFEAPI StringCchCatNW(wchar_t* pszDest, size_t cchDest, const wchar_t* pszSrc, size_t cchMaxAppend); +#ifdef UNICODE +#define StringCchCatN StringCchCatNW +#else +#define StringCchCatN StringCchCatNA +#endif // !UNICODE + +#ifdef STRSAFE_INLINE +STRSAFEAPI StringCchCatNA(char* pszDest, size_t cchDest, const char* pszSrc, size_t cchMaxAppend) +{ + HRESULT hr; + + if (cchDest > STRSAFE_MAX_CCH) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + hr = StringCatNWorkerA(pszDest, cchDest, pszSrc, cchMaxAppend); + } + + return hr; +} + +STRSAFEAPI StringCchCatNW(wchar_t* pszDest, size_t cchDest, const wchar_t* pszSrc, size_t cchMaxAppend) +{ + HRESULT hr; + + if (cchDest > STRSAFE_MAX_CCH) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + hr = StringCatNWorkerW(pszDest, cchDest, pszSrc, cchMaxAppend); + } + + return hr; +} +#endif // STRSAFE_INLINE +#endif // !STRSAFE_NO_CCH_FUNCTIONS + + +#ifndef STRSAFE_NO_CB_FUNCTIONS +/*++ + +STDAPI +StringCbCatN( + IN OUT LPTSTR pszDest, + IN size_t cbDest, + IN LPCTSTR pszSrc, + IN size_t cbMaxAppend + ); + +Routine Description: + + This routine is a safer version of the C built-in function 'strncat'. + The size of the destination buffer (in bytes) is a parameter as well as + the maximum number of bytes to append, excluding the null terminator. + This function will not write past the end of the destination buffer and it will + ALWAYS null terminate pszDest (unless it is zero length). + + This function returns a hresult, and not a pointer. It returns + S_OK if all of pszSrc or the first cbMaxAppend bytes were appended + to the destination string and it was null terminated, otherwise it will + return a failure code. In failure cases as much of pszSrc will be appended + to pszDest as possible, and pszDest will be null terminated. + +Arguments: + + pszDest - destination string which must be null terminated + + cbDest - size of destination buffer in bytes. + length must be ((_tcslen(pszDest) + min(cbMaxAppend / sizeof(TCHAR), _tcslen(pszSrc)) + 1) * sizeof(TCHAR) + to hold all of the combine string plus the null + terminator. + + pszSrc - source string + + cbMaxAppend - maximum number of bytes to append + +Notes: + Behavior is undefined if source and destination strings overlap. + + pszDest and pszSrc should not be NULL. See StringCbCatNEx if you require + the handling of NULL values. + +Return Value: + + S_OK - if all of pszSrc or the first cbMaxAppend bytes were + concatenated to pszDest and the resultant dest string + was null terminated + + failure - you can use the macro HRESULT_CODE() to get a win32 + error code for all hresult failure cases + + STRSAFE_E_INSUFFICIENT_BUFFER / + HRESULT_CODE(hr) == ERROR_INSUFFICIENT_BUFFER + - this return value is an indication that the operation + failed due to insufficient space. When this error + occurs, the destination buffer is modified to contain + a truncated version of the ideal result and is null + terminated. This is useful for situations where + truncation is ok. + + It is strongly recommended to use the SUCCEEDED() / FAILED() macros to test the + return value of this function + +--*/ + +STRSAFEAPI StringCbCatNA(char* pszDest, size_t cbDest, const char* pszSrc, size_t cbMaxAppend); +STRSAFEAPI StringCbCatNW(wchar_t* pszDest, size_t cbDest, const wchar_t* pszSrc, size_t cbMaxAppend); +#ifdef UNICODE +#define StringCbCatN StringCbCatNW +#else +#define StringCbCatN StringCbCatNA +#endif // !UNICODE + +#ifdef STRSAFE_INLINE +STRSAFEAPI StringCbCatNA(char* pszDest, size_t cbDest, const char* pszSrc, size_t cbMaxAppend) +{ + HRESULT hr; + size_t cchDest; + + cchDest = cbDest / sizeof(char); + + if (cchDest > STRSAFE_MAX_CCH) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + size_t cchMaxAppend; + + cchMaxAppend = cbMaxAppend / sizeof(char); + + hr = StringCatNWorkerA(pszDest, cchDest, pszSrc, cchMaxAppend); + } + + return hr; +} + +STRSAFEAPI StringCbCatNW(wchar_t* pszDest, size_t cbDest, const wchar_t* pszSrc, size_t cbMaxAppend) +{ + HRESULT hr; + size_t cchDest; + + cchDest = cbDest / sizeof(wchar_t); + + if (cchDest > STRSAFE_MAX_CCH) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + size_t cchMaxAppend; + + cchMaxAppend = cbMaxAppend / sizeof(wchar_t); + + hr = StringCatNWorkerW(pszDest, cchDest, pszSrc, cchMaxAppend); + } + + return hr; +} +#endif // STRSAFE_INLINE +#endif // !STRSAFE_NO_CB_FUNCTIONS + + +#ifndef STRSAFE_NO_CCH_FUNCTIONS +/*++ + +STDAPI +StringCchCatNEx( + IN OUT LPTSTR pszDest OPTIONAL, + IN size_t cchDest, + IN LPCTSTR pszSrc OPTIONAL, + IN size_t cchMaxAppend, + OUT LPTSTR* ppszDestEnd OPTIONAL, + OUT size_t* pcchRemaining OPTIONAL, + IN DWORD dwFlags + ); + +Routine Description: + + This routine is a safer version of the C built-in function 'strncat', with + some additional parameters. In addition to functionality provided by + StringCchCatN, this routine also returns a pointer to the end of the + destination string and the number of characters left in the destination string + including the null terminator. The flags parameter allows additional controls. + +Arguments: + + pszDest - destination string which must be null terminated + + cchDest - size of destination buffer in characters. + length must be (_tcslen(pszDest) + min(cchMaxAppend, _tcslen(pszSrc)) + 1) + to hold all of the combine string plus the null + terminator. + + pszSrc - source string + + cchMaxAppend - maximum number of characters to append + + ppszDestEnd - if ppszDestEnd is non-null, the function will return a + pointer to the end of the destination string. If the + function appended any data, the result will point to the + null termination character + + pcchRemaining - if pcchRemaining is non-null, the function will return the + number of characters left in the destination string, + including the null terminator + + dwFlags - controls some details of the string copy: + + STRSAFE_FILL_BEHIND_NULL + if the function succeeds, the low byte of dwFlags will be + used to fill the uninitialize part of destination buffer + behind the null terminator + + STRSAFE_IGNORE_NULLS + treat NULL string pointers like empty strings (TEXT("")) + + STRSAFE_FILL_ON_FAILURE + if the function fails, the low byte of dwFlags will be + used to fill all of the destination buffer, and it will + be null terminated. This will overwrite any pre-existing + or truncated string + + STRSAFE_NULL_ON_FAILURE + if the function fails, the destination buffer will be set + to the empty string. This will overwrite any pre-existing or + truncated string + + STRSAFE_NO_TRUNCATION + if the function returns STRSAFE_E_INSUFFICIENT_BUFFER, pszDest + will not contain a truncated string, it will remain unchanged. + +Notes: + Behavior is undefined if source and destination strings overlap. + + pszDest and pszSrc should not be NULL unless the STRSAFE_IGNORE_NULLS flag + is specified. If STRSAFE_IGNORE_NULLS is passed, both pszDest and pszSrc + may be NULL. An error may still be returned even though NULLS are ignored + due to insufficient space. + +Return Value: + + S_OK - if all of pszSrc or the first cchMaxAppend characters + were concatenated to pszDest and the resultant dest + string was null terminated + + failure - you can use the macro HRESULT_CODE() to get a win32 + error code for all hresult failure cases + + STRSAFE_E_INSUFFICIENT_BUFFER / + HRESULT_CODE(hr) == ERROR_INSUFFICIENT_BUFFER + - this return value is an indication that the operation + failed due to insufficient space. When this error + occurs, the destination buffer is modified to contain + a truncated version of the ideal result and is null + terminated. This is useful for situations where + truncation is ok. + + It is strongly recommended to use the SUCCEEDED() / FAILED() macros to test the + return value of this function + +--*/ + +STRSAFEAPI StringCchCatNExA(char* pszDest, size_t cchDest, const char* pszSrc, size_t cchMaxAppend, char** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags); +STRSAFEAPI StringCchCatNExW(wchar_t* pszDest, size_t cchDest, const wchar_t* pszSrc, size_t cchMaxAppend, wchar_t** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags); +#ifdef UNICODE +#define StringCchCatNEx StringCchCatNExW +#else +#define StringCchCatNEx StringCchCatNExA +#endif // !UNICODE + +#ifdef STRSAFE_INLINE +STRSAFEAPI StringCchCatNExA(char* pszDest, size_t cchDest, const char* pszSrc, size_t cchMaxAppend, char** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags) +{ + HRESULT hr; + + if (cchDest > STRSAFE_MAX_CCH) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + size_t cbDest; + + // safe to multiply cchDest * sizeof(char) since cchDest < STRSAFE_MAX_CCH and sizeof(char) is 1 + cbDest = cchDest * sizeof(char); + + hr = StringCatNExWorkerA(pszDest, cchDest, cbDest, pszSrc, cchMaxAppend, ppszDestEnd, pcchRemaining, dwFlags); + } + + return hr; +} + +STRSAFEAPI StringCchCatNExW(wchar_t* pszDest, size_t cchDest, const wchar_t* pszSrc, size_t cchMaxAppend, wchar_t** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags) +{ + HRESULT hr; + + if (cchDest > STRSAFE_MAX_CCH) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + size_t cbDest; + + // safe to multiply cchDest * sizeof(wchar_t) since cchDest < STRSAFE_MAX_CCH and sizeof(wchar_t) is 2 + cbDest = cchDest * sizeof(wchar_t); + + hr = StringCatNExWorkerW(pszDest, cchDest, cbDest, pszSrc, cchMaxAppend, ppszDestEnd, pcchRemaining, dwFlags); + } + + return hr; +} +#endif // STRSAFE_INLINE +#endif // !STRSAFE_NO_CCH_FUNCTIONS + + +#ifndef STRSAFE_NO_CB_FUNCTIONS +/*++ + +STDAPI +StringCbCatNEx( + IN OUT LPTSTR pszDest OPTIONAL, + IN size_t cbDest, + IN LPCTSTR pszSrc OPTIONAL, + IN size_t cbMaxAppend, + OUT LPTSTR* ppszDestEnd OPTIONAL, + OUT size_t* pcchRemaining OPTIONAL, + IN DWORD dwFlags + ); + +Routine Description: + + This routine is a safer version of the C built-in function 'strncat', with + some additional parameters. In addition to functionality provided by + StringCbCatN, this routine also returns a pointer to the end of the + destination string and the number of bytes left in the destination string + including the null terminator. The flags parameter allows additional controls. + +Arguments: + + pszDest - destination string which must be null terminated + + cbDest - size of destination buffer in bytes. + length must be ((_tcslen(pszDest) + min(cbMaxAppend / sizeof(TCHAR), _tcslen(pszSrc)) + 1) * sizeof(TCHAR) + to hold all of the combine string plus the null + terminator. + + pszSrc - source string + + cbMaxAppend - maximum number of bytes to append + + ppszDestEnd - if ppszDestEnd is non-null, the function will return a + pointer to the end of the destination string. If the + function appended any data, the result will point to the + null termination character + + pcbRemaining - if pcbRemaining is non-null, the function will return the + number of bytes left in the destination string, + including the null terminator + + dwFlags - controls some details of the string copy: + + STRSAFE_FILL_BEHIND_NULL + if the function succeeds, the low byte of dwFlags will be + used to fill the uninitialize part of destination buffer + behind the null terminator + + STRSAFE_IGNORE_NULLS + treat NULL string pointers like empty strings (TEXT("")) + + STRSAFE_FILL_ON_FAILURE + if the function fails, the low byte of dwFlags will be + used to fill all of the destination buffer, and it will + be null terminated. This will overwrite any pre-existing + or truncated string + + STRSAFE_NULL_ON_FAILURE + if the function fails, the destination buffer will be set + to the empty string. This will overwrite any pre-existing or + truncated string + + STRSAFE_NO_TRUNCATION + if the function returns STRSAFE_E_INSUFFICIENT_BUFFER, pszDest + will not contain a truncated string, it will remain unchanged. + +Notes: + Behavior is undefined if source and destination strings overlap. + + pszDest and pszSrc should not be NULL unless the STRSAFE_IGNORE_NULLS flag + is specified. If STRSAFE_IGNORE_NULLS is passed, both pszDest and pszSrc + may be NULL. An error may still be returned even though NULLS are ignored + due to insufficient space. + +Return Value: + + S_OK - if all of pszSrc or the first cbMaxAppend bytes were + concatenated to pszDest and the resultant dest string + was null terminated + + failure - you can use the macro HRESULT_CODE() to get a win32 + error code for all hresult failure cases + + STRSAFE_E_INSUFFICIENT_BUFFER / + HRESULT_CODE(hr) == ERROR_INSUFFICIENT_BUFFER + - this return value is an indication that the operation + failed due to insufficient space. When this error + occurs, the destination buffer is modified to contain + a truncated version of the ideal result and is null + terminated. This is useful for situations where + truncation is ok. + + It is strongly recommended to use the SUCCEEDED() / FAILED() macros to test the + return value of this function + +--*/ + +STRSAFEAPI StringCbCatNExA(char* pszDest, size_t cbDest, const char* pszSrc, size_t cbMaxAppend, char** ppszDestEnd, size_t* pcbRemaining, unsigned long dwFlags); +STRSAFEAPI StringCbCatNExW(wchar_t* pszDest, size_t cbDest, const wchar_t* pszSrc, size_t cbMaxAppend, wchar_t** ppszDestEnd, size_t* pcbRemaining, unsigned long dwFlags); +#ifdef UNICODE +#define StringCbCatNEx StringCbCatNExW +#else +#define StringCbCatNEx StringCbCatNExA +#endif // !UNICODE + +#ifdef STRSAFE_INLINE +STRSAFEAPI StringCbCatNExA(char* pszDest, size_t cbDest, const char* pszSrc, size_t cbMaxAppend, char** ppszDestEnd, size_t* pcbRemaining, unsigned long dwFlags) +{ + HRESULT hr; + size_t cchDest; + size_t cchRemaining = 0; + + cchDest = cbDest / sizeof(char); + + if (cchDest > STRSAFE_MAX_CCH) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + size_t cchMaxAppend; + + cchMaxAppend = cbMaxAppend / sizeof(char); + + hr = StringCatNExWorkerA(pszDest, cchDest, cbDest, pszSrc, cchMaxAppend, ppszDestEnd, &cchRemaining, dwFlags); + } + + if (SUCCEEDED(hr) || (hr == STRSAFE_E_INSUFFICIENT_BUFFER)) + { + if (pcbRemaining) + { + // safe to multiply cchRemaining * sizeof(char) since cchRemaining < STRSAFE_MAX_CCH and sizeof(char) is 1 + *pcbRemaining = (cchRemaining * sizeof(char)) + (cbDest % sizeof(char)); + } + } + + return hr; +} + +STRSAFEAPI StringCbCatNExW(wchar_t* pszDest, size_t cbDest, const wchar_t* pszSrc, size_t cbMaxAppend, wchar_t** ppszDestEnd, size_t* pcbRemaining, unsigned long dwFlags) +{ + HRESULT hr; + size_t cchDest; + size_t cchRemaining = 0; + + cchDest = cbDest / sizeof(wchar_t); + + if (cchDest > STRSAFE_MAX_CCH) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + size_t cchMaxAppend; + + cchMaxAppend = cbMaxAppend / sizeof(wchar_t); + + hr = StringCatNExWorkerW(pszDest, cchDest, cbDest, pszSrc, cchMaxAppend, ppszDestEnd, &cchRemaining, dwFlags); + } + + if (SUCCEEDED(hr) || (hr == STRSAFE_E_INSUFFICIENT_BUFFER)) + { + if (pcbRemaining) + { + // safe to multiply cchRemaining * sizeof(wchar_t) since cchRemaining < STRSAFE_MAX_CCH and sizeof(wchar_t) is 2 + *pcbRemaining = (cchRemaining * sizeof(wchar_t)) + (cbDest % sizeof(wchar_t)); + } + } + + return hr; +} +#endif // STRSAFE_INLINE +#endif // !STRSAFE_NO_CB_FUNCTIONS + + +#ifndef STRSAFE_NO_CCH_FUNCTIONS +/*++ + +STDAPI +StringCchVPrintf( + OUT LPTSTR pszDest, + IN size_t cchDest, + IN LPCTSTR pszFormat, + IN va_list argList + ); + +Routine Description: + + This routine is a safer version of the C built-in function 'vsprintf'. + The size of the destination buffer (in characters) is a parameter and + this function will not write past the end of this buffer and it will + ALWAYS null terminate the destination buffer (unless it is zero length). + + This function returns a hresult, and not a pointer. It returns + S_OK if the string was printed without truncation and null terminated, + otherwise it will return a failure code. In failure cases it will return + a truncated version of the ideal result. + +Arguments: + + pszDest - destination string + + cchDest - size of destination buffer in characters + length must be sufficient to hold the resulting formatted + string, including the null terminator. + + pszFormat - format string which must be null terminated + + argList - va_list from the variable arguments according to the + stdarg.h convention + +Notes: + Behavior is undefined if destination, format strings or any arguments + strings overlap. + + pszDest and pszFormat should not be NULL. See StringCchVPrintfEx if you + require the handling of NULL values. + +Return Value: + + S_OK - if there was sufficient space in the dest buffer for + the resultant string and it was null terminated. + + failure - you can use the macro HRESULT_CODE() to get a win32 + error code for all hresult failure cases + + STRSAFE_E_INSUFFICIENT_BUFFER / + HRESULT_CODE(hr) == ERROR_INSUFFICIENT_BUFFER + - this return value is an indication that the print + operation failed due to insufficient space. When this + error occurs, the destination buffer is modified to + contain a truncated version of the ideal result and is + null terminated. This is useful for situations where + truncation is ok. + + It is strongly recommended to use the SUCCEEDED() / FAILED() macros to test the + return value of this function + +--*/ + +STRSAFEAPI StringCchVPrintfA(char* pszDest, size_t cchDest, const char* pszFormat, va_list argList); +STRSAFEAPI StringCchVPrintfW(wchar_t* pszDest, size_t cchDest, const wchar_t* pszFormat, va_list argList); +#ifdef UNICODE +#define StringCchVPrintf StringCchVPrintfW +#else +#define StringCchVPrintf StringCchVPrintfA +#endif // !UNICODE + +#ifdef STRSAFE_INLINE +STRSAFEAPI StringCchVPrintfA(char* pszDest, size_t cchDest, const char* pszFormat, va_list argList) +{ + HRESULT hr; + + if (cchDest > STRSAFE_MAX_CCH) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + hr = StringVPrintfWorkerA(pszDest, cchDest, pszFormat, argList); + } + + return hr; +} + +STRSAFEAPI StringCchVPrintfW(wchar_t* pszDest, size_t cchDest, const wchar_t* pszFormat, va_list argList) +{ + HRESULT hr; + + if (cchDest > STRSAFE_MAX_CCH) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + hr = StringVPrintfWorkerW(pszDest, cchDest, pszFormat, argList); + } + + return hr; +} +#endif // STRSAFE_INLINE +#endif // !STRSAFE_NO_CCH_FUNCTIONS + + +#ifndef STRSAFE_NO_CB_FUNCTIONS +/*++ + +STDAPI +StringCbVPrintf( + OUT LPTSTR pszDest, + IN size_t cbDest, + IN LPCTSTR pszFormat, + IN va_list argList + ); + +Routine Description: + + This routine is a safer version of the C built-in function 'vsprintf'. + The size of the destination buffer (in bytes) is a parameter and + this function will not write past the end of this buffer and it will + ALWAYS null terminate the destination buffer (unless it is zero length). + + This function returns a hresult, and not a pointer. It returns + S_OK if the string was printed without truncation and null terminated, + otherwise it will return a failure code. In failure cases it will return + a truncated version of the ideal result. + +Arguments: + + pszDest - destination string + + cbDest - size of destination buffer in bytes + length must be sufficient to hold the resulting formatted + string, including the null terminator. + + pszFormat - format string which must be null terminated + + argList - va_list from the variable arguments according to the + stdarg.h convention + +Notes: + Behavior is undefined if destination, format strings or any arguments + strings overlap. + + pszDest and pszFormat should not be NULL. See StringCbVPrintfEx if you + require the handling of NULL values. + + +Return Value: + + S_OK - if there was sufficient space in the dest buffer for + the resultant string and it was null terminated. + + failure - you can use the macro HRESULT_CODE() to get a win32 + error code for all hresult failure cases + + STRSAFE_E_INSUFFICIENT_BUFFER / + HRESULT_CODE(hr) == ERROR_INSUFFICIENT_BUFFER + - this return value is an indication that the print + operation failed due to insufficient space. When this + error occurs, the destination buffer is modified to + contain a truncated version of the ideal result and is + null terminated. This is useful for situations where + truncation is ok. + + It is strongly recommended to use the SUCCEEDED() / FAILED() macros to test the + return value of this function + +--*/ + +STRSAFEAPI StringCbVPrintfA(char* pszDest, size_t cbDest, const char* pszFormat, va_list argList); +STRSAFEAPI StringCbVPrintfW(wchar_t* pszDest, size_t cbDest, const wchar_t* pszFormat, va_list argList); +#ifdef UNICODE +#define StringCbVPrintf StringCbVPrintfW +#else +#define StringCbVPrintf StringCbVPrintfA +#endif // !UNICODE + +#ifdef STRSAFE_INLINE +STRSAFEAPI StringCbVPrintfA(char* pszDest, size_t cbDest, const char* pszFormat, va_list argList) +{ + HRESULT hr; + size_t cchDest; + + cchDest = cbDest / sizeof(char); + + if (cchDest > STRSAFE_MAX_CCH) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + hr = StringVPrintfWorkerA(pszDest, cchDest, pszFormat, argList); + } + + return hr; +} + +STRSAFEAPI StringCbVPrintfW(wchar_t* pszDest, size_t cbDest, const wchar_t* pszFormat, va_list argList) +{ + HRESULT hr; + size_t cchDest; + + cchDest = cbDest / sizeof(wchar_t); + + if (cchDest > STRSAFE_MAX_CCH) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + hr = StringVPrintfWorkerW(pszDest, cchDest, pszFormat, argList); + } + + return hr; +} +#endif // STRSAFE_INLINE +#endif // !STRSAFE_NO_CB_FUNCTIONS + + +#ifndef STRSAFE_NO_CCH_FUNCTIONS +/*++ + +STDAPI +StringCchPrintf( + OUT LPTSTR pszDest, + IN size_t cchDest, + IN LPCTSTR pszFormat, + ... + ); + +Routine Description: + + This routine is a safer version of the C built-in function 'sprintf'. + The size of the destination buffer (in characters) is a parameter and + this function will not write past the end of this buffer and it will + ALWAYS null terminate the destination buffer (unless it is zero length). + + This function returns a hresult, and not a pointer. It returns + S_OK if the string was printed without truncation and null terminated, + otherwise it will return a failure code. In failure cases it will return + a truncated version of the ideal result. + +Arguments: + + pszDest - destination string + + cchDest - size of destination buffer in characters + length must be sufficient to hold the resulting formatted + string, including the null terminator. + + pszFormat - format string which must be null terminated + + ... - additional parameters to be formatted according to + the format string + +Notes: + Behavior is undefined if destination, format strings or any arguments + strings overlap. + + pszDest and pszFormat should not be NULL. See StringCchPrintfEx if you + require the handling of NULL values. + +Return Value: + + S_OK - if there was sufficient space in the dest buffer for + the resultant string and it was null terminated. + + failure - you can use the macro HRESULT_CODE() to get a win32 + error code for all hresult failure cases + + STRSAFE_E_INSUFFICIENT_BUFFER / + HRESULT_CODE(hr) == ERROR_INSUFFICIENT_BUFFER + - this return value is an indication that the print + operation failed due to insufficient space. When this + error occurs, the destination buffer is modified to + contain a truncated version of the ideal result and is + null terminated. This is useful for situations where + truncation is ok. + + It is strongly recommended to use the SUCCEEDED() / FAILED() macros to test the + return value of this function + +--*/ + +STRSAFEAPI StringCchPrintfA(char* pszDest, size_t cchDest, const char* pszFormat, ...); +STRSAFEAPI StringCchPrintfW(wchar_t* pszDest, size_t cchDest, const wchar_t* pszFormat, ...); +#ifdef UNICODE +#define StringCchPrintf StringCchPrintfW +#else +#define StringCchPrintf StringCchPrintfA +#endif // !UNICODE + +#ifdef STRSAFE_INLINE +STRSAFEAPI StringCchPrintfA(char* pszDest, size_t cchDest, const char* pszFormat, ...) +{ + HRESULT hr; + + if (cchDest > STRSAFE_MAX_CCH) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + va_list argList; + + va_start(argList, pszFormat); + + hr = StringVPrintfWorkerA(pszDest, cchDest, pszFormat, argList); + + va_end(argList); + } + + return hr; +} + +STRSAFEAPI StringCchPrintfW(wchar_t* pszDest, size_t cchDest, const wchar_t* pszFormat, ...) +{ + HRESULT hr; + + if (cchDest > STRSAFE_MAX_CCH) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + va_list argList; + + va_start(argList, pszFormat); + + hr = StringVPrintfWorkerW(pszDest, cchDest, pszFormat, argList); + + va_end(argList); + } + + return hr; +} +#endif // STRSAFE_INLINE +#endif // !STRSAFE_NO_CCH_FUNCTIONS + + +#ifndef STRSAFE_NO_CB_FUNCTIONS +/*++ + +STDAPI +StringCbPrintf( + OUT LPTSTR pszDest, + IN size_t cbDest, + IN LPCTSTR pszFormat, + ... + ); + +Routine Description: + + This routine is a safer version of the C built-in function 'sprintf'. + The size of the destination buffer (in bytes) is a parameter and + this function will not write past the end of this buffer and it will + ALWAYS null terminate the destination buffer (unless it is zero length). + + This function returns a hresult, and not a pointer. It returns + S_OK if the string was printed without truncation and null terminated, + otherwise it will return a failure code. In failure cases it will return + a truncated version of the ideal result. + +Arguments: + + pszDest - destination string + + cbDest - size of destination buffer in bytes + length must be sufficient to hold the resulting formatted + string, including the null terminator. + + pszFormat - format string which must be null terminated + + ... - additional parameters to be formatted according to + the format string + +Notes: + Behavior is undefined if destination, format strings or any arguments + strings overlap. + + pszDest and pszFormat should not be NULL. See StringCbPrintfEx if you + require the handling of NULL values. + + +Return Value: + + S_OK - if there was sufficient space in the dest buffer for + the resultant string and it was null terminated. + + failure - you can use the macro HRESULT_CODE() to get a win32 + error code for all hresult failure cases + + STRSAFE_E_INSUFFICIENT_BUFFER / + HRESULT_CODE(hr) == ERROR_INSUFFICIENT_BUFFER + - this return value is an indication that the print + operation failed due to insufficient space. When this + error occurs, the destination buffer is modified to + contain a truncated version of the ideal result and is + null terminated. This is useful for situations where + truncation is ok. + + It is strongly recommended to use the SUCCEEDED() / FAILED() macros to test the + return value of this function + +--*/ + +STRSAFEAPI StringCbPrintfA(char* pszDest, size_t cbDest, const char* pszFormat, ...); +STRSAFEAPI StringCbPrintfW(wchar_t* pszDest, size_t cbDest, const wchar_t* pszFormat, ...); +#ifdef UNICODE +#define StringCbPrintf StringCbPrintfW +#else +#define StringCbPrintf StringCbPrintfA +#endif // !UNICODE + +#ifdef STRSAFE_INLINE +STRSAFEAPI StringCbPrintfA(char* pszDest, size_t cbDest, const char* pszFormat, ...) +{ + HRESULT hr; + size_t cchDest; + + cchDest = cbDest / sizeof(char); + + if (cchDest > STRSAFE_MAX_CCH) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + va_list argList; + + va_start(argList, pszFormat); + + hr = StringVPrintfWorkerA(pszDest, cchDest, pszFormat, argList); + + va_end(argList); + } + + return hr; +} + +STRSAFEAPI StringCbPrintfW(wchar_t* pszDest, size_t cbDest, const wchar_t* pszFormat, ...) +{ + HRESULT hr; + size_t cchDest; + + cchDest = cbDest / sizeof(wchar_t); + + if (cchDest > STRSAFE_MAX_CCH) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + va_list argList; + + va_start(argList, pszFormat); + + hr = StringVPrintfWorkerW(pszDest, cchDest, pszFormat, argList); + + va_end(argList); + } + + return hr; +} +#endif // STRSAFE_INLINE +#endif // !STRSAFE_NO_CB_FUNCTIONS + + +#ifndef STRSAFE_NO_CCH_FUNCTIONS +/*++ + +STDAPI +StringCchPrintfEx( + OUT LPTSTR pszDest OPTIONAL, + IN size_t cchDest, + OUT LPTSTR* ppszDestEnd OPTIONAL, + OUT size_t* pcchRemaining OPTIONAL, + IN DWORD dwFlags, + IN LPCTSTR pszFormat OPTIONAL, + ... + ); + +Routine Description: + + This routine is a safer version of the C built-in function 'sprintf' with + some additional parameters. In addition to functionality provided by + StringCchPrintf, this routine also returns a pointer to the end of the + destination string and the number of characters left in the destination string + including the null terminator. The flags parameter allows additional controls. + +Arguments: + + pszDest - destination string + + cchDest - size of destination buffer in characters. + length must be sufficient to contain the resulting + formatted string plus the null terminator. + + ppszDestEnd - if ppszDestEnd is non-null, the function will return a + pointer to the end of the destination string. If the + function printed any data, the result will point to the + null termination character + + pcchRemaining - if pcchRemaining is non-null, the function will return + the number of characters left in the destination string, + including the null terminator + + dwFlags - controls some details of the string copy: + + STRSAFE_FILL_BEHIND_NULL + if the function succeeds, the low byte of dwFlags will be + used to fill the uninitialize part of destination buffer + behind the null terminator + + STRSAFE_IGNORE_NULLS + treat NULL string pointers like empty strings (TEXT("")) + + STRSAFE_FILL_ON_FAILURE + if the function fails, the low byte of dwFlags will be + used to fill all of the destination buffer, and it will + be null terminated. This will overwrite any truncated + string returned when the failure is + STRSAFE_E_INSUFFICIENT_BUFFER + + STRSAFE_NO_TRUNCATION / + STRSAFE_NULL_ON_FAILURE + if the function fails, the destination buffer will be set + to the empty string. This will overwrite any truncated string + returned when the failure is STRSAFE_E_INSUFFICIENT_BUFFER. + + pszFormat - format string which must be null terminated + + ... - additional parameters to be formatted according to + the format string + +Notes: + Behavior is undefined if destination, format strings or any arguments + strings overlap. + + pszDest and pszFormat should not be NULL unless the STRSAFE_IGNORE_NULLS + flag is specified. If STRSAFE_IGNORE_NULLS is passed, both pszDest and + pszFormat may be NULL. An error may still be returned even though NULLS + are ignored due to insufficient space. + +Return Value: + + S_OK - if there was source data and it was all concatenated and + the resultant dest string was null terminated + + failure - you can use the macro HRESULT_CODE() to get a win32 + error code for all hresult failure cases + + STRSAFE_E_INSUFFICIENT_BUFFER / + HRESULT_CODE(hr) == ERROR_INSUFFICIENT_BUFFER + - this return value is an indication that the print + operation failed due to insufficient space. When this + error occurs, the destination buffer is modified to + contain a truncated version of the ideal result and is + null terminated. This is useful for situations where + truncation is ok. + + It is strongly recommended to use the SUCCEEDED() / FAILED() macros to test the + return value of this function + +--*/ + +STRSAFEAPI StringCchPrintfExA(char* pszDest, size_t cchDest, char** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags, const char* pszFormat, ...); +STRSAFEAPI StringCchPrintfExW(wchar_t* pszDest, size_t cchDest, wchar_t** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags, const wchar_t* pszFormat, ...); +#ifdef UNICODE +#define StringCchPrintfEx StringCchPrintfExW +#else +#define StringCchPrintfEx StringCchPrintfExA +#endif // !UNICODE + +#ifdef STRSAFE_INLINE +STRSAFEAPI StringCchPrintfExA(char* pszDest, size_t cchDest, char** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags, const char* pszFormat, ...) +{ + HRESULT hr; + + if (cchDest > STRSAFE_MAX_CCH) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + size_t cbDest; + va_list argList; + + // safe to multiply cchDest * sizeof(char) since cchDest < STRSAFE_MAX_CCH and sizeof(char) is 1 + cbDest = cchDest * sizeof(char); + va_start(argList, pszFormat); + + hr = StringVPrintfExWorkerA(pszDest, cchDest, cbDest, ppszDestEnd, pcchRemaining, dwFlags, pszFormat, argList); + + va_end(argList); + } + + return hr; +} + +STRSAFEAPI StringCchPrintfExW(wchar_t* pszDest, size_t cchDest, wchar_t** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags, const wchar_t* pszFormat, ...) +{ + HRESULT hr; + + if (cchDest > STRSAFE_MAX_CCH) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + size_t cbDest; + va_list argList; + + // safe to multiply cchDest * sizeof(wchar_t) since cchDest < STRSAFE_MAX_CCH and sizeof(wchar_t) is 2 + cbDest = cchDest * sizeof(wchar_t); + va_start(argList, pszFormat); + + hr = StringVPrintfExWorkerW(pszDest, cchDest, cbDest, ppszDestEnd, pcchRemaining, dwFlags, pszFormat, argList); + + va_end(argList); + } + + return hr; +} +#endif // STRSAFE_INLINE +#endif // !STRSAFE_NO_CCH_FUNCTIONS + + +#ifndef STRSAFE_NO_CB_FUNCTIONS +/*++ + +STDAPI +StringCbPrintfEx( + OUT LPTSTR pszDest OPTIONAL, + IN size_t cbDest, + OUT LPTSTR* ppszDestEnd OPTIONAL, + OUT size_t* pcbRemaining OPTIONAL, + IN DWORD dwFlags, + IN LPCTSTR pszFormat OPTIONAL, + ... + ); + +Routine Description: + + This routine is a safer version of the C built-in function 'sprintf' with + some additional parameters. In addition to functionality provided by + StringCbPrintf, this routine also returns a pointer to the end of the + destination string and the number of bytes left in the destination string + including the null terminator. The flags parameter allows additional controls. + +Arguments: + + pszDest - destination string + + cbDest - size of destination buffer in bytes. + length must be sufficient to contain the resulting + formatted string plus the null terminator. + + ppszDestEnd - if ppszDestEnd is non-null, the function will return a + pointer to the end of the destination string. If the + function printed any data, the result will point to the + null termination character + + pcbRemaining - if pcbRemaining is non-null, the function will return + the number of bytes left in the destination string, + including the null terminator + + dwFlags - controls some details of the string copy: + + STRSAFE_FILL_BEHIND_NULL + if the function succeeds, the low byte of dwFlags will be + used to fill the uninitialize part of destination buffer + behind the null terminator + + STRSAFE_IGNORE_NULLS + treat NULL string pointers like empty strings (TEXT("")) + + STRSAFE_FILL_ON_FAILURE + if the function fails, the low byte of dwFlags will be + used to fill all of the destination buffer, and it will + be null terminated. This will overwrite any truncated + string returned when the failure is + STRSAFE_E_INSUFFICIENT_BUFFER + + STRSAFE_NO_TRUNCATION / + STRSAFE_NULL_ON_FAILURE + if the function fails, the destination buffer will be set + to the empty string. This will overwrite any truncated string + returned when the failure is STRSAFE_E_INSUFFICIENT_BUFFER. + + pszFormat - format string which must be null terminated + + ... - additional parameters to be formatted according to + the format string + +Notes: + Behavior is undefined if destination, format strings or any arguments + strings overlap. + + pszDest and pszFormat should not be NULL unless the STRSAFE_IGNORE_NULLS + flag is specified. If STRSAFE_IGNORE_NULLS is passed, both pszDest and + pszFormat may be NULL. An error may still be returned even though NULLS + are ignored due to insufficient space. + +Return Value: + + S_OK - if there was source data and it was all concatenated and + the resultant dest string was null terminated + + failure - you can use the macro HRESULT_CODE() to get a win32 + error code for all hresult failure cases + + STRSAFE_E_INSUFFICIENT_BUFFER / + HRESULT_CODE(hr) == ERROR_INSUFFICIENT_BUFFER + - this return value is an indication that the print + operation failed due to insufficient space. When this + error occurs, the destination buffer is modified to + contain a truncated version of the ideal result and is + null terminated. This is useful for situations where + truncation is ok. + + It is strongly recommended to use the SUCCEEDED() / FAILED() macros to test the + return value of this function + +--*/ + +STRSAFEAPI StringCbPrintfExA(char* pszDest, size_t cbDest, char** ppszDestEnd, size_t* pcbRemaining, unsigned long dwFlags, const char* pszFormat, ...); +STRSAFEAPI StringCbPrintfExW(wchar_t* pszDest, size_t cbDest, wchar_t** ppszDestEnd, size_t* pcbRemaining, unsigned long dwFlags, const wchar_t* pszFormat, ...); +#ifdef UNICODE +#define StringCbPrintfEx StringCbPrintfExW +#else +#define StringCbPrintfEx StringCbPrintfExA +#endif // !UNICODE + +#ifdef STRSAFE_INLINE +STRSAFEAPI StringCbPrintfExA(char* pszDest, size_t cbDest, char** ppszDestEnd, size_t* pcbRemaining, unsigned long dwFlags, const char* pszFormat, ...) +{ + HRESULT hr; + size_t cchDest; + size_t cchRemaining = 0; + + cchDest = cbDest / sizeof(char); + + if (cchDest > STRSAFE_MAX_CCH) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + va_list argList; + + va_start(argList, pszFormat); + + hr = StringVPrintfExWorkerA(pszDest, cchDest, cbDest, ppszDestEnd, &cchRemaining, dwFlags, pszFormat, argList); + + va_end(argList); + } + + if (SUCCEEDED(hr) || (hr == STRSAFE_E_INSUFFICIENT_BUFFER)) + { + if (pcbRemaining) + { + // safe to multiply cchRemaining * sizeof(char) since cchRemaining < STRSAFE_MAX_CCH and sizeof(char) is 1 + *pcbRemaining = (cchRemaining * sizeof(char)) + (cbDest % sizeof(char)); + } + } + + return hr; +} + +STRSAFEAPI StringCbPrintfExW(wchar_t* pszDest, size_t cbDest, wchar_t** ppszDestEnd, size_t* pcbRemaining, unsigned long dwFlags, const wchar_t* pszFormat, ...) +{ + HRESULT hr; + size_t cchDest; + size_t cchRemaining = 0; + + cchDest = cbDest / sizeof(wchar_t); + + if (cchDest > STRSAFE_MAX_CCH) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + va_list argList; + + va_start(argList, pszFormat); + + hr = StringVPrintfExWorkerW(pszDest, cchDest, cbDest, ppszDestEnd, &cchRemaining, dwFlags, pszFormat, argList); + + va_end(argList); + } + + if (SUCCEEDED(hr) || (hr == STRSAFE_E_INSUFFICIENT_BUFFER)) + { + if (pcbRemaining) + { + // safe to multiply cchRemaining * sizeof(wchar_t) since cchRemaining < STRSAFE_MAX_CCH and sizeof(wchar_t) is 2 + *pcbRemaining = (cchRemaining * sizeof(wchar_t)) + (cbDest % sizeof(wchar_t)); + } + } + + return hr; +} +#endif // STRSAFE_INLINE +#endif // !STRSAFE_NO_CB_FUNCTIONS + + +#ifndef STRSAFE_NO_CCH_FUNCTIONS +/*++ + +STDAPI +StringCchVPrintfEx( + OUT LPTSTR pszDest OPTIONAL, + IN size_t cchDest, + OUT LPTSTR* ppszDestEnd OPTIONAL, + OUT size_t* pcchRemaining OPTIONAL, + IN DWORD dwFlags, + IN LPCTSTR pszFormat OPTIONAL, + IN va_list argList + ); + +Routine Description: + + This routine is a safer version of the C built-in function 'vsprintf' with + some additional parameters. In addition to functionality provided by + StringCchVPrintf, this routine also returns a pointer to the end of the + destination string and the number of characters left in the destination string + including the null terminator. The flags parameter allows additional controls. + +Arguments: + + pszDest - destination string + + cchDest - size of destination buffer in characters. + length must be sufficient to contain the resulting + formatted string plus the null terminator. + + ppszDestEnd - if ppszDestEnd is non-null, the function will return a + pointer to the end of the destination string. If the + function printed any data, the result will point to the + null termination character + + pcchRemaining - if pcchRemaining is non-null, the function will return + the number of characters left in the destination string, + including the null terminator + + dwFlags - controls some details of the string copy: + + STRSAFE_FILL_BEHIND_NULL + if the function succeeds, the low byte of dwFlags will be + used to fill the uninitialize part of destination buffer + behind the null terminator + + STRSAFE_IGNORE_NULLS + treat NULL string pointers like empty strings (TEXT("")) + + STRSAFE_FILL_ON_FAILURE + if the function fails, the low byte of dwFlags will be + used to fill all of the destination buffer, and it will + be null terminated. This will overwrite any truncated + string returned when the failure is + STRSAFE_E_INSUFFICIENT_BUFFER + + STRSAFE_NO_TRUNCATION / + STRSAFE_NULL_ON_FAILURE + if the function fails, the destination buffer will be set + to the empty string. This will overwrite any truncated string + returned when the failure is STRSAFE_E_INSUFFICIENT_BUFFER. + + pszFormat - format string which must be null terminated + + argList - va_list from the variable arguments according to the + stdarg.h convention + +Notes: + Behavior is undefined if destination, format strings or any arguments + strings overlap. + + pszDest and pszFormat should not be NULL unless the STRSAFE_IGNORE_NULLS + flag is specified. If STRSAFE_IGNORE_NULLS is passed, both pszDest and + pszFormat may be NULL. An error may still be returned even though NULLS + are ignored due to insufficient space. + +Return Value: + + S_OK - if there was source data and it was all concatenated and + the resultant dest string was null terminated + + failure - you can use the macro HRESULT_CODE() to get a win32 + error code for all hresult failure cases + + STRSAFE_E_INSUFFICIENT_BUFFER / + HRESULT_CODE(hr) == ERROR_INSUFFICIENT_BUFFER + - this return value is an indication that the print + operation failed due to insufficient space. When this + error occurs, the destination buffer is modified to + contain a truncated version of the ideal result and is + null terminated. This is useful for situations where + truncation is ok. + + It is strongly recommended to use the SUCCEEDED() / FAILED() macros to test the + return value of this function + +--*/ + +STRSAFEAPI StringCchVPrintfExA(char* pszDest, size_t cchDest, char** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags, const char* pszFormat, va_list argList); +STRSAFEAPI StringCchVPrintfExW(wchar_t* pszDest, size_t cchDest, wchar_t** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags, const wchar_t* pszFormat, va_list argList); +#ifdef UNICODE +#define StringCchVPrintfEx StringCchVPrintfExW +#else +#define StringCchVPrintfEx StringCchVPrintfExA +#endif // !UNICODE + +#ifdef STRSAFE_INLINE +STRSAFEAPI StringCchVPrintfExA(char* pszDest, size_t cchDest, char** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags, const char* pszFormat, va_list argList) +{ + HRESULT hr; + + if (cchDest > STRSAFE_MAX_CCH) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + size_t cbDest; + + // safe to multiply cchDest * sizeof(char) since cchDest < STRSAFE_MAX_CCH and sizeof(char) is 1 + cbDest = cchDest * sizeof(char); + + hr = StringVPrintfExWorkerA(pszDest, cchDest, cbDest, ppszDestEnd, pcchRemaining, dwFlags, pszFormat, argList); + } + + return hr; +} + +STRSAFEAPI StringCchVPrintfExW(wchar_t* pszDest, size_t cchDest, wchar_t** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags, const wchar_t* pszFormat, va_list argList) +{ + HRESULT hr; + + if (cchDest > STRSAFE_MAX_CCH) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + size_t cbDest; + + // safe to multiply cchDest * sizeof(wchar_t) since cchDest < STRSAFE_MAX_CCH and sizeof(wchar_t) is 2 + cbDest = cchDest * sizeof(wchar_t); + + hr = StringVPrintfExWorkerW(pszDest, cchDest, cbDest, ppszDestEnd, pcchRemaining, dwFlags, pszFormat, argList); + } + + return hr; +} +#endif // STRSAFE_INLINE +#endif // !STRSAFE_NO_CCH_FUNCTIONS + + +#ifndef STRSAFE_NO_CB_FUNCTIONS +/*++ + +STDAPI +StringCbVPrintfEx( + OUT LPTSTR pszDest OPTIONAL, + IN size_t cbDest, + OUT LPTSTR* ppszDestEnd OPTIONAL, + OUT size_t* pcbRemaining OPTIONAL, + IN DWORD dwFlags, + IN LPCTSTR pszFormat OPTIONAL, + IN va_list argList + ); + +Routine Description: + + This routine is a safer version of the C built-in function 'vsprintf' with + some additional parameters. In addition to functionality provided by + StringCbVPrintf, this routine also returns a pointer to the end of the + destination string and the number of characters left in the destination string + including the null terminator. The flags parameter allows additional controls. + +Arguments: + + pszDest - destination string + + cbDest - size of destination buffer in bytes. + length must be sufficient to contain the resulting + formatted string plus the null terminator. + + ppszDestEnd - if ppszDestEnd is non-null, the function will return + a pointer to the end of the destination string. If the + function printed any data, the result will point to the + null termination character + + pcbRemaining - if pcbRemaining is non-null, the function will return + the number of bytes left in the destination string, + including the null terminator + + dwFlags - controls some details of the string copy: + + STRSAFE_FILL_BEHIND_NULL + if the function succeeds, the low byte of dwFlags will be + used to fill the uninitialize part of destination buffer + behind the null terminator + + STRSAFE_IGNORE_NULLS + treat NULL string pointers like empty strings (TEXT("")) + + STRSAFE_FILL_ON_FAILURE + if the function fails, the low byte of dwFlags will be + used to fill all of the destination buffer, and it will + be null terminated. This will overwrite any truncated + string returned when the failure is + STRSAFE_E_INSUFFICIENT_BUFFER + + STRSAFE_NO_TRUNCATION / + STRSAFE_NULL_ON_FAILURE + if the function fails, the destination buffer will be set + to the empty string. This will overwrite any truncated string + returned when the failure is STRSAFE_E_INSUFFICIENT_BUFFER. + + pszFormat - format string which must be null terminated + + argList - va_list from the variable arguments according to the + stdarg.h convention + +Notes: + Behavior is undefined if destination, format strings or any arguments + strings overlap. + + pszDest and pszFormat should not be NULL unless the STRSAFE_IGNORE_NULLS + flag is specified. If STRSAFE_IGNORE_NULLS is passed, both pszDest and + pszFormat may be NULL. An error may still be returned even though NULLS + are ignored due to insufficient space. + +Return Value: + + S_OK - if there was source data and it was all concatenated and + the resultant dest string was null terminated + + failure - you can use the macro HRESULT_CODE() to get a win32 + error code for all hresult failure cases + + STRSAFE_E_INSUFFICIENT_BUFFER / + HRESULT_CODE(hr) == ERROR_INSUFFICIENT_BUFFER + - this return value is an indication that the print + operation failed due to insufficient space. When this + error occurs, the destination buffer is modified to + contain a truncated version of the ideal result and is + null terminated. This is useful for situations where + truncation is ok. + + It is strongly recommended to use the SUCCEEDED() / FAILED() macros to test the + return value of this function + +--*/ + +STRSAFEAPI StringCbVPrintfExA(char* pszDest, size_t cbDest, char** ppszDestEnd, size_t* pcbRemaining, unsigned long dwFlags, const char* pszFormat, va_list argList); +STRSAFEAPI StringCbVPrintfExW(wchar_t* pszDest, size_t cbDest, wchar_t** ppszDestEnd, size_t* pcbRemaining, unsigned long dwFlags, const wchar_t* pszFormat, va_list argList); +#ifdef UNICODE +#define StringCbVPrintfEx StringCbVPrintfExW +#else +#define StringCbVPrintfEx StringCbVPrintfExA +#endif // !UNICODE + +#ifdef STRSAFE_INLINE +STRSAFEAPI StringCbVPrintfExA(char* pszDest, size_t cbDest, char** ppszDestEnd, size_t* pcbRemaining, unsigned long dwFlags, const char* pszFormat, va_list argList) +{ + HRESULT hr; + size_t cchDest; + size_t cchRemaining = 0; + + cchDest = cbDest / sizeof(char); + + if (cchDest > STRSAFE_MAX_CCH) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + hr = StringVPrintfExWorkerA(pszDest, cchDest, cbDest, ppszDestEnd, &cchRemaining, dwFlags, pszFormat, argList); + } + + if (SUCCEEDED(hr) || (hr == STRSAFE_E_INSUFFICIENT_BUFFER)) + { + if (pcbRemaining) + { + // safe to multiply cchRemaining * sizeof(char) since cchRemaining < STRSAFE_MAX_CCH and sizeof(char) is 1 + *pcbRemaining = (cchRemaining * sizeof(char)) + (cbDest % sizeof(char)); + } + } + + return hr; +} + +STRSAFEAPI StringCbVPrintfExW(wchar_t* pszDest, size_t cbDest, wchar_t** ppszDestEnd, size_t* pcbRemaining, unsigned long dwFlags, const wchar_t* pszFormat, va_list argList) +{ + HRESULT hr; + size_t cchDest; + size_t cchRemaining = 0; + + cchDest = cbDest / sizeof(wchar_t); + + if (cchDest > STRSAFE_MAX_CCH) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + hr = StringVPrintfExWorkerW(pszDest, cchDest, cbDest, ppszDestEnd, &cchRemaining, dwFlags, pszFormat, argList); + } + + if (SUCCEEDED(hr) || (hr == STRSAFE_E_INSUFFICIENT_BUFFER)) + { + if (pcbRemaining) + { + // safe to multiply cchRemaining * sizeof(wchar_t) since cchRemaining < STRSAFE_MAX_CCH and sizeof(wchar_t) is 2 + *pcbRemaining = (cchRemaining * sizeof(wchar_t)) + (cbDest % sizeof(wchar_t)); + } + } + + return hr; +} +#endif // STRSAFE_INLINE +#endif // !STRSAFE_NO_CB_FUNCTIONS + + +#ifndef STRSAFE_NO_CCH_FUNCTIONS +/*++ + +STDAPI +StringCchGets( + OUT LPTSTR pszDest, + IN size_t cchDest + ); + +Routine Description: + + This routine is a safer version of the C built-in function 'gets'. + The size of the destination buffer (in characters) is a parameter and + this function will not write past the end of this buffer and it will + ALWAYS null terminate the destination buffer (unless it is zero length). + + This routine is not a replacement for fgets. That function does not replace + newline characters with a null terminator. + + This function returns a hresult, and not a pointer. It returns + S_OK if any characters were read from stdin and copied to pszDest and + pszDest was null terminated, otherwise it will return a failure code. + +Arguments: + + pszDest - destination string + + cchDest - size of destination buffer in characters. + +Notes: + pszDest should not be NULL. See StringCchGetsEx if you require the handling + of NULL values. + + cchDest must be > 1 for this function to succeed. + +Return Value: + + S_OK - data was read from stdin and copied, and the resultant + dest string was null terminated + + failure - you can use the macro HRESULT_CODE() to get a win32 + error code for all hresult failure cases + + STRSAFE_E_END_OF_FILE / + HRESULT_CODE(hr) == ERROR_HANDLE_EOF + - this return value indicates an error or end-of-file + condition, use feof or ferror to determine which one has + occured. + + STRSAFE_E_INSUFFICIENT_BUFFER / + HRESULT_CODE(hr) == ERROR_INSUFFICIENT_BUFFER + - this return value is an indication that there was + insufficient space in the destination buffer to copy any + data + + It is strongly recommended to use the SUCCEEDED() / FAILED() macros to test the + return value of this function. + +--*/ + +#ifndef STRSAFE_LIB_IMPL +STRSAFE_INLINE_API StringCchGetsA(char* pszDest, size_t cchDest); +STRSAFE_INLINE_API StringCchGetsW(wchar_t* pszDest, size_t cchDest); +#ifdef UNICODE +#define StringCchGets StringCchGetsW +#else +#define StringCchGets StringCchGetsA +#endif // !UNICODE + +STRSAFE_INLINE_API StringCchGetsA(char* pszDest, size_t cchDest) +{ + HRESULT hr; + + if (cchDest > STRSAFE_MAX_CCH) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + size_t cbDest; + + // safe to multiply cchDest * sizeof(char) since cchDest < STRSAFE_MAX_CCH and sizeof(char) is 1 + cbDest = cchDest * sizeof(char); + + hr = StringGetsExWorkerA(pszDest, cchDest, cbDest, NULL, NULL, 0); + } + + return hr; +} + +STRSAFE_INLINE_API StringCchGetsW(wchar_t* pszDest, size_t cchDest) +{ + HRESULT hr; + + if (cchDest > STRSAFE_MAX_CCH) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + size_t cbDest; + + // safe to multiply cchDest * sizeof(wchar_t) since cchDest < STRSAFE_MAX_CCH and sizeof(wchar_t) is 2 + cbDest = cchDest * sizeof(wchar_t); + + hr = StringGetsExWorkerW(pszDest, cchDest, cbDest, NULL, NULL, 0); + } + + return hr; +} +#endif // !STRSAFE_NO_CCH_FUNCTIONS +#endif // !STRSAFE_LIB_IMPL + +#ifndef STRSAFE_NO_CB_FUNCTIONS +/*++ + +STDAPI +StringCbGets( + OUT LPTSTR pszDest, + IN size_t cbDest + ); + +Routine Description: + + This routine is a safer version of the C built-in function 'gets'. + The size of the destination buffer (in bytes) is a parameter and + this function will not write past the end of this buffer and it will + ALWAYS null terminate the destination buffer (unless it is zero length). + + This routine is not a replacement for fgets. That function does not replace + newline characters with a null terminator. + + This function returns a hresult, and not a pointer. It returns + S_OK if any characters were read from stdin and copied to pszDest + and pszDest was null terminated, otherwise it will return a failure code. + +Arguments: + + pszDest - destination string + + cbDest - size of destination buffer in bytes. + +Notes: + pszDest should not be NULL. See StringCbGetsEx if you require the handling + of NULL values. + + cbDest must be > sizeof(TCHAR) for this function to succeed. + +Return Value: + + S_OK - data was read from stdin and copied, and the resultant + dest string was null terminated + + failure - you can use the macro HRESULT_CODE() to get a win32 + error code for all hresult failure cases + + STRSAFE_E_END_OF_FILE / + HRESULT_CODE(hr) == ERROR_HANDLE_EOF + - this return value indicates an error or end-of-file + condition, use feof or ferror to determine which one has + occured. + + STRSAFE_E_INSUFFICIENT_BUFFER / + HRESULT_CODE(hr) == ERROR_INSUFFICIENT_BUFFER + - this return value is an indication that there was + insufficient space in the destination buffer to copy any + data + + It is strongly recommended to use the SUCCEEDED() / FAILED() macros to test the + return value of this function. + +--*/ + +#ifndef STRSAFE_LIB_IMPL +STRSAFE_INLINE_API StringCbGetsA(char* pszDest, size_t cbDest); +STRSAFE_INLINE_API StringCbGetsW(wchar_t* pszDest, size_t cbDest); +#ifdef UNICODE +#define StringCbGets StringCbGetsW +#else +#define StringCbGets StringCbGetsA +#endif // !UNICODE + +STRSAFE_INLINE_API StringCbGetsA(char* pszDest, size_t cbDest) +{ + HRESULT hr; + size_t cchDest; + + // convert to count of characters + cchDest = cbDest / sizeof(char); + + if (cchDest > STRSAFE_MAX_CCH) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + hr = StringGetsExWorkerA(pszDest, cchDest, cbDest, NULL, NULL, 0); + } + + return hr; +} + +STRSAFE_INLINE_API StringCbGetsW(wchar_t* pszDest, size_t cbDest) +{ + HRESULT hr; + size_t cchDest; + + // convert to count of characters + cchDest = cbDest / sizeof(wchar_t); + + if (cchDest > STRSAFE_MAX_CCH) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + hr = StringGetsExWorkerW(pszDest, cchDest, cbDest, NULL, NULL, 0); + } + + return hr; +} +#endif // !STRSAFE_NO_CB_FUNCTIONS +#endif // !STRSAFE_LIB_IMPL + +#ifndef STRSAFE_NO_CCH_FUNCTIONS +/*++ + +STDAPI +StringCchGetsEx( + OUT LPTSTR pszDest OPTIONAL, + IN size_t cchDest, + OUT LPTSTR* ppszDestEnd OPTIONAL, + OUT size_t* pcchRemaining OPTIONAL, + IN DWORD dwFlags + ); + +Routine Description: + + This routine is a safer version of the C built-in function 'gets' with + some additional parameters. In addition to functionality provided by + StringCchGets, this routine also returns a pointer to the end of the + destination string and the number of characters left in the destination string + including the null terminator. The flags parameter allows additional controls. + +Arguments: + + pszDest - destination string + + cchDest - size of destination buffer in characters. + + ppszDestEnd - if ppszDestEnd is non-null, the function will return a + pointer to the end of the destination string. If the + function copied any data, the result will point to the + null termination character + + pcchRemaining - if pcchRemaining is non-null, the function will return the + number of characters left in the destination string, + including the null terminator + + dwFlags - controls some details of the string copy: + + STRSAFE_FILL_BEHIND_NULL + if the function succeeds, the low byte of dwFlags will be + used to fill the uninitialize part of destination buffer + behind the null terminator + + STRSAFE_IGNORE_NULLS + treat NULL string pointers like empty strings (TEXT("")). + + STRSAFE_FILL_ON_FAILURE + if the function fails, the low byte of dwFlags will be + used to fill all of the destination buffer, and it will + be null terminated. + + STRSAFE_NO_TRUNCATION / + STRSAFE_NULL_ON_FAILURE + if the function fails, the destination buffer will be set + to the empty string. + +Notes: + pszDest should not be NULL unless the STRSAFE_IGNORE_NULLS flag is specified. + If STRSAFE_IGNORE_NULLS is passed and pszDest is NULL, an error may still be + returned even though NULLS are ignored + + cchDest must be > 1 for this function to succeed. + +Return Value: + + S_OK - data was read from stdin and copied, and the resultant + dest string was null terminated + + failure - you can use the macro HRESULT_CODE() to get a win32 + error code for all hresult failure cases + + STRSAFE_E_END_OF_FILE / + HRESULT_CODE(hr) == ERROR_HANDLE_EOF + - this return value indicates an error or end-of-file + condition, use feof or ferror to determine which one has + occured. + + STRSAFE_E_INSUFFICIENT_BUFFER / + HRESULT_CODE(hr) == ERROR_INSUFFICIENT_BUFFER + - this return value is an indication that there was + insufficient space in the destination buffer to copy any + data + + It is strongly recommended to use the SUCCEEDED() / FAILED() macros to test the + return value of this function. + +--*/ + +#ifndef STRSAFE_LIB_IMPL +STRSAFE_INLINE_API StringCchGetsExA(char* pszDest, size_t cchDest, char** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags); +STRSAFE_INLINE_API StringCchGetsExW(wchar_t* pszDest, size_t cchDest, wchar_t** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags); +#ifdef UNICODE +#define StringCchGetsEx StringCchGetsExW +#else +#define StringCchGetsEx StringCchGetsExA +#endif // !UNICODE + +STRSAFE_INLINE_API StringCchGetsExA(char* pszDest, size_t cchDest, char** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags) +{ + HRESULT hr; + + if (cchDest > STRSAFE_MAX_CCH) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + size_t cbDest; + + // safe to multiply cchDest * sizeof(char) since cchDest < STRSAFE_MAX_CCH and sizeof(char) is 1 + cbDest = cchDest * sizeof(char); + + hr = StringGetsExWorkerA(pszDest, cchDest, cbDest, ppszDestEnd, pcchRemaining, dwFlags); + } + + return hr; +} + +STRSAFE_INLINE_API StringCchGetsExW(wchar_t* pszDest, size_t cchDest, wchar_t** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags) +{ + HRESULT hr; + + if (cchDest > STRSAFE_MAX_CCH) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + size_t cbDest; + + // safe to multiply cchDest * sizeof(wchar_t) since cchDest < STRSAFE_MAX_CCH and sizeof(wchar_t) is 2 + cbDest = cchDest * sizeof(wchar_t); + + hr = StringGetsExWorkerW(pszDest, cchDest, cbDest, ppszDestEnd, pcchRemaining, dwFlags); + } + + return hr; +} +#endif // !STRSAFE_NO_CCH_FUNCTIONS +#endif // !STRSAFE_LIB_IMPL + +#ifndef STRSAFE_NO_CB_FUNCTIONS +/*++ + +STDAPI +StringCbGetsEx( + OUT LPTSTR pszDest OPTIONAL, + IN size_t cbDest, + OUT LPTSTR* ppszDestEnd OPTIONAL, + OUT size_t* pcbRemaining OPTIONAL, + IN DWORD dwFlags + ); + +Routine Description: + + This routine is a safer version of the C built-in function 'gets' with + some additional parameters. In addition to functionality provided by + StringCbGets, this routine also returns a pointer to the end of the + destination string and the number of characters left in the destination string + including the null terminator. The flags parameter allows additional controls. + +Arguments: + + pszDest - destination string + + cbDest - size of destination buffer in bytes. + + ppszDestEnd - if ppszDestEnd is non-null, the function will return a + pointer to the end of the destination string. If the + function copied any data, the result will point to the + null termination character + + pcbRemaining - if pbRemaining is non-null, the function will return the + number of bytes left in the destination string, + including the null terminator + + dwFlags - controls some details of the string copy: + + STRSAFE_FILL_BEHIND_NULL + if the function succeeds, the low byte of dwFlags will be + used to fill the uninitialize part of destination buffer + behind the null terminator + + STRSAFE_IGNORE_NULLS + treat NULL string pointers like empty strings (TEXT("")). + + STRSAFE_FILL_ON_FAILURE + if the function fails, the low byte of dwFlags will be + used to fill all of the destination buffer, and it will + be null terminated. + + STRSAFE_NO_TRUNCATION / + STRSAFE_NULL_ON_FAILURE + if the function fails, the destination buffer will be set + to the empty string. + +Notes: + pszDest should not be NULL unless the STRSAFE_IGNORE_NULLS flag is specified. + If STRSAFE_IGNORE_NULLS is passed and pszDest is NULL, an error may still be + returned even though NULLS are ignored + + cbDest must be > sizeof(TCHAR) for this function to succeed + +Return Value: + + S_OK - data was read from stdin and copied, and the resultant + dest string was null terminated + + failure - you can use the macro HRESULT_CODE() to get a win32 + error code for all hresult failure cases + + STRSAFE_E_END_OF_FILE / + HRESULT_CODE(hr) == ERROR_HANDLE_EOF + - this return value indicates an error or end-of-file + condition, use feof or ferror to determine which one has + occured. + + STRSAFE_E_INSUFFICIENT_BUFFER / + HRESULT_CODE(hr) == ERROR_INSUFFICIENT_BUFFER + - this return value is an indication that there was + insufficient space in the destination buffer to copy any + data + + It is strongly recommended to use the SUCCEEDED() / FAILED() macros to test the + return value of this function. + +--*/ + +#ifndef STRSAFE_LIB_IMPL +STRSAFE_INLINE_API StringCbGetsExA(char* pszDest, size_t cbDest, char** ppszDestEnd, size_t* pbRemaining, unsigned long dwFlags); +STRSAFE_INLINE_API StringCbGetsExW(wchar_t* pszDest, size_t cbDest, wchar_t** ppszDestEnd, size_t* pcbRemaining, unsigned long dwFlags); +#ifdef UNICODE +#define StringCbGetsEx StringCbGetsExW +#else +#define StringCbGetsEx StringCbGetsExA +#endif // !UNICODE + +STRSAFE_INLINE_API StringCbGetsExA(char* pszDest, size_t cbDest, char** ppszDestEnd, size_t* pcbRemaining, unsigned long dwFlags) +{ + HRESULT hr; + size_t cchDest; + size_t cchRemaining = 0; + + cchDest = cbDest / sizeof(char); + + if (cchDest > STRSAFE_MAX_CCH) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + hr = StringGetsExWorkerA(pszDest, cchDest, cbDest, ppszDestEnd, &cchRemaining, dwFlags); + } + + if (SUCCEEDED(hr) || + (hr == STRSAFE_E_INSUFFICIENT_BUFFER) || + (hr == STRSAFE_E_END_OF_FILE)) + { + if (pcbRemaining) + { + // safe to multiply cchRemaining * sizeof(char) since cchRemaining < STRSAFE_MAX_CCH and sizeof(char) is 1 + *pcbRemaining = (cchRemaining * sizeof(char)) + (cbDest % sizeof(char)); + } + } + + return hr; +} + +STRSAFE_INLINE_API StringCbGetsExW(wchar_t* pszDest, size_t cbDest, wchar_t** ppszDestEnd, size_t* pcbRemaining, unsigned long dwFlags) +{ + HRESULT hr; + size_t cchDest; + size_t cchRemaining = 0; + + cchDest = cbDest / sizeof(wchar_t); + + if (cchDest > STRSAFE_MAX_CCH) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + hr = StringGetsExWorkerW(pszDest, cchDest, cbDest, ppszDestEnd, &cchRemaining, dwFlags); + } + + if (SUCCEEDED(hr) || + (hr == STRSAFE_E_INSUFFICIENT_BUFFER) || + (hr == STRSAFE_E_END_OF_FILE)) + { + if (pcbRemaining) + { + // safe to multiply cchRemaining * sizeof(wchar_t) since cchRemaining < STRSAFE_MAX_CCH and sizeof(wchar_t) is 2 + *pcbRemaining = (cchRemaining * sizeof(wchar_t)) + (cbDest % sizeof(wchar_t)); + } + } + + return hr; +} +#endif // !STRSAFE_NO_CB_FUNCTIONS +#endif // !STRSAFE_LIB_IMPL + +#ifndef STRSAFE_NO_CCH_FUNCTIONS +/*++ + +STDAPI +StringCchLength( + IN LPCTSTR psz, + IN size_t cchMax, + OUT size_t* pcch OPTIONAL + ); + +Routine Description: + + This routine is a safer version of the C built-in function 'strlen'. + It is used to make sure a string is not larger than a given length, and + it optionally returns the current length in characters not including + the null terminator. + + This function returns a hresult, and not a pointer. It returns + S_OK if the string is non-null and the length including the null + terminator is less than or equal to cchMax characters. + +Arguments: + + psz - string to check the length of + + cchMax - maximum number of characters including the null terminator + that psz is allowed to contain + + pcch - if the function succeeds and pcch is non-null, the current length + in characters of psz excluding the null terminator will be returned. + This out parameter is equivalent to the return value of strlen(psz) + +Notes: + psz can be null but the function will fail + + cchMax should be greater than zero or the function will fail + +Return Value: + + S_OK - psz is non-null and the length including the null + terminator is less than or equal to cchMax characters + + failure - you can use the macro HRESULT_CODE() to get a win32 + error code for all hresult failure cases + + It is strongly recommended to use the SUCCEEDED() / FAILED() macros to test the + return value of this function. + +--*/ + +STRSAFEAPI StringCchLengthA(const char* psz, size_t cchMax, size_t* pcch); +STRSAFEAPI StringCchLengthW(const wchar_t* psz, size_t cchMax, size_t* pcch); +#ifdef UNICODE +#define StringCchLength StringCchLengthW +#else +#define StringCchLength StringCchLengthA +#endif // !UNICODE + +#ifdef STRSAFE_INLINE +STRSAFEAPI StringCchLengthA(const char* psz, size_t cchMax, size_t* pcch) +{ + HRESULT hr; + + if ((psz == NULL) || (cchMax > STRSAFE_MAX_CCH)) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + hr = StringLengthWorkerA(psz, cchMax, pcch); + } + + return hr; +} + +STRSAFEAPI StringCchLengthW(const wchar_t* psz, size_t cchMax, size_t* pcch) +{ + HRESULT hr; + + if ((psz == NULL) || (cchMax > STRSAFE_MAX_CCH)) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + hr = StringLengthWorkerW(psz, cchMax, pcch); + } + + return hr; +} +#endif // STRSAFE_INLINE +#endif // !STRSAFE_NO_CCH_FUNCTIONS + + +#ifndef STRSAFE_NO_CB_FUNCTIONS +/*++ + +STDAPI +StringCbLength( + IN LPCTSTR psz, + IN size_t cbMax, + OUT size_t* pcb OPTIONAL + ); + +Routine Description: + + This routine is a safer version of the C built-in function 'strlen'. + It is used to make sure a string is not larger than a given length, and + it optionally returns the current length in bytes not including + the null terminator. + + This function returns a hresult, and not a pointer. It returns + S_OK if the string is non-null and the length including the null + terminator is less than or equal to cbMax bytes. + +Arguments: + + psz - string to check the length of + + cbMax - maximum number of bytes including the null terminator + that psz is allowed to contain + + pcb - if the function succeeds and pcb is non-null, the current length + in bytes of psz excluding the null terminator will be returned. + This out parameter is equivalent to the return value of strlen(psz) * sizeof(TCHAR) + +Notes: + psz can be null but the function will fail + + cbMax should be greater than or equal to sizeof(TCHAR) or the function will fail + +Return Value: + + S_OK - psz is non-null and the length including the null + terminator is less than or equal to cbMax bytes + + failure - you can use the macro HRESULT_CODE() to get a win32 + error code for all hresult failure cases + + It is strongly recommended to use the SUCCEEDED() / FAILED() macros to test the + return value of this function. + +--*/ + +STRSAFEAPI StringCbLengthA(const char* psz, size_t cchMax, size_t* pcch); +STRSAFEAPI StringCbLengthW(const wchar_t* psz, size_t cchMax, size_t* pcch); +#ifdef UNICODE +#define StringCbLength StringCbLengthW +#else +#define StringCbLength StringCbLengthA +#endif // !UNICODE + +#ifdef STRSAFE_INLINE +STRSAFEAPI StringCbLengthA(const char* psz, size_t cbMax, size_t* pcb) +{ + HRESULT hr; + size_t cchMax; + size_t cch = 0; + + cchMax = cbMax / sizeof(char); + + if ((psz == NULL) || (cchMax > STRSAFE_MAX_CCH)) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + hr = StringLengthWorkerA(psz, cchMax, &cch); + } + + if (SUCCEEDED(hr) && pcb) + { + // safe to multiply cch * sizeof(char) since cch < STRSAFE_MAX_CCH and sizeof(char) is 1 + *pcb = cch * sizeof(char); + } + + return hr; +} + +STRSAFEAPI StringCbLengthW(const wchar_t* psz, size_t cbMax, size_t* pcb) +{ + HRESULT hr; + size_t cchMax; + size_t cch = 0; + + cchMax = cbMax / sizeof(wchar_t); + + if ((psz == NULL) || (cchMax > STRSAFE_MAX_CCH)) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + hr = StringLengthWorkerW(psz, cchMax, &cch); + } + + if (SUCCEEDED(hr) && pcb) + { + // safe to multiply cch * sizeof(wchar_t) since cch < STRSAFE_MAX_CCH and sizeof(wchar_t) is 2 + *pcb = cch * sizeof(wchar_t); + } + + return hr; +} +#endif // STRSAFE_INLINE +#endif // !STRSAFE_NO_CB_FUNCTIONS + + +// these are the worker functions that actually do the work +#ifdef STRSAFE_INLINE +STRSAFEAPI StringCopyWorkerA(char* pszDest, size_t cchDest, const char* pszSrc) +{ + HRESULT hr = S_OK; + + if (cchDest == 0) + { + // can not null terminate a zero-byte dest buffer + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + while (cchDest && (*pszSrc != '\0')) + { + *pszDest++ = *pszSrc++; + cchDest--; + } + + if (cchDest == 0) + { + // we are going to truncate pszDest + pszDest--; + hr = STRSAFE_E_INSUFFICIENT_BUFFER; + } + + *pszDest= '\0'; + } + + return hr; +} + +STRSAFEAPI StringCopyWorkerW(wchar_t* pszDest, size_t cchDest, const wchar_t* pszSrc) +{ + HRESULT hr = S_OK; + + if (cchDest == 0) + { + // can not null terminate a zero-byte dest buffer + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + while (cchDest && (*pszSrc != L'\0')) + { + *pszDest++ = *pszSrc++; + cchDest--; + } + + if (cchDest == 0) + { + // we are going to truncate pszDest + pszDest--; + hr = STRSAFE_E_INSUFFICIENT_BUFFER; + } + + *pszDest= L'\0'; + } + + return hr; +} + +STRSAFEAPI StringCopyExWorkerA(char* pszDest, size_t cchDest, size_t cbDest, const char* pszSrc, char** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags) +{ + HRESULT hr = S_OK; + char* pszDestEnd = pszDest; + size_t cchRemaining = 0; + + // ASSERT(cbDest == (cchDest * sizeof(char)) || + // cbDest == (cchDest * sizeof(char)) + (cbDest % sizeof(char))); + + // only accept valid flags + if (dwFlags & (~STRSAFE_VALID_FLAGS)) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + if (dwFlags & STRSAFE_IGNORE_NULLS) + { + if (pszDest == NULL) + { + if ((cchDest != 0) || (cbDest != 0)) + { + // NULL pszDest and non-zero cchDest/cbDest is invalid + hr = STRSAFE_E_INVALID_PARAMETER; + } + } + + if (pszSrc == NULL) + { + pszSrc = ""; + } + } + + if (SUCCEEDED(hr)) + { + if (cchDest == 0) + { + pszDestEnd = pszDest; + cchRemaining = 0; + + // only fail if there was actually src data to copy + if (*pszSrc != '\0') + { + if (pszDest == NULL) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + hr = STRSAFE_E_INSUFFICIENT_BUFFER; + } + } + } + else + { + pszDestEnd = pszDest; + cchRemaining = cchDest; + + while (cchRemaining && (*pszSrc != '\0')) + { + *pszDestEnd++= *pszSrc++; + cchRemaining--; + } + + if (cchRemaining > 0) + { + if (dwFlags & STRSAFE_FILL_BEHIND_NULL) + { + memset(pszDestEnd + 1, STRSAFE_GET_FILL_PATTERN(dwFlags), ((cchRemaining - 1) * sizeof(char)) + (cbDest % sizeof(char))); + } + } + else + { + // we are going to truncate pszDest + pszDestEnd--; + cchRemaining++; + + hr = STRSAFE_E_INSUFFICIENT_BUFFER; + } + + *pszDestEnd = '\0'; + } + } + } + + if (FAILED(hr)) + { + if (pszDest) + { + if (dwFlags & STRSAFE_FILL_ON_FAILURE) + { + memset(pszDest, STRSAFE_GET_FILL_PATTERN(dwFlags), cbDest); + + if (STRSAFE_GET_FILL_PATTERN(dwFlags) == 0) + { + pszDestEnd = pszDest; + cchRemaining = cchDest; + } + else if (cchDest > 0) + { + pszDestEnd = pszDest + cchDest - 1; + cchRemaining = 1; + + // null terminate the end of the string + *pszDestEnd = '\0'; + } + } + + if (dwFlags & (STRSAFE_NULL_ON_FAILURE | STRSAFE_NO_TRUNCATION)) + { + if (cchDest > 0) + { + pszDestEnd = pszDest; + cchRemaining = cchDest; + + // null terminate the beginning of the string + *pszDestEnd = '\0'; + } + } + } + } + + if (SUCCEEDED(hr) || (hr == STRSAFE_E_INSUFFICIENT_BUFFER)) + { + if (ppszDestEnd) + { + *ppszDestEnd = pszDestEnd; + } + + if (pcchRemaining) + { + *pcchRemaining = cchRemaining; + } + } + + return hr; +} + +STRSAFEAPI StringCopyExWorkerW(wchar_t* pszDest, size_t cchDest, size_t cbDest, const wchar_t* pszSrc, wchar_t** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags) +{ + HRESULT hr = S_OK; + wchar_t* pszDestEnd = pszDest; + size_t cchRemaining = 0; + + // ASSERT(cbDest == (cchDest * sizeof(wchar_t)) || + // cbDest == (cchDest * sizeof(wchar_t)) + (cbDest % sizeof(wchar_t))); + + // only accept valid flags + if (dwFlags & (~STRSAFE_VALID_FLAGS)) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + if (dwFlags & STRSAFE_IGNORE_NULLS) + { + if (pszDest == NULL) + { + if ((cchDest != 0) || (cbDest != 0)) + { + // NULL pszDest and non-zero cchDest/cbDest is invalid + hr = STRSAFE_E_INVALID_PARAMETER; + } + } + + if (pszSrc == NULL) + { + pszSrc = L""; + } + } + + if (SUCCEEDED(hr)) + { + if (cchDest == 0) + { + pszDestEnd = pszDest; + cchRemaining = 0; + + // only fail if there was actually src data to copy + if (*pszSrc != L'\0') + { + if (pszDest == NULL) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + hr = STRSAFE_E_INSUFFICIENT_BUFFER; + } + } + } + else + { + pszDestEnd = pszDest; + cchRemaining = cchDest; + + while (cchRemaining && (*pszSrc != L'\0')) + { + *pszDestEnd++= *pszSrc++; + cchRemaining--; + } + + if (cchRemaining > 0) + { + if (dwFlags & STRSAFE_FILL_BEHIND_NULL) + { + memset(pszDestEnd + 1, STRSAFE_GET_FILL_PATTERN(dwFlags), ((cchRemaining - 1) * sizeof(wchar_t)) + (cbDest % sizeof(wchar_t))); + } + } + else + { + // we are going to truncate pszDest + pszDestEnd--; + cchRemaining++; + + hr = STRSAFE_E_INSUFFICIENT_BUFFER; + } + + *pszDestEnd = L'\0'; + } + } + } + + if (FAILED(hr)) + { + if (pszDest) + { + if (dwFlags & STRSAFE_FILL_ON_FAILURE) + { + memset(pszDest, STRSAFE_GET_FILL_PATTERN(dwFlags), cbDest); + + if (STRSAFE_GET_FILL_PATTERN(dwFlags) == 0) + { + pszDestEnd = pszDest; + cchRemaining = cchDest; + } + else if (cchDest > 0) + { + pszDestEnd = pszDest + cchDest - 1; + cchRemaining = 1; + + // null terminate the end of the string + *pszDestEnd = L'\0'; + } + } + + if (dwFlags & (STRSAFE_NULL_ON_FAILURE | STRSAFE_NO_TRUNCATION)) + { + if (cchDest > 0) + { + pszDestEnd = pszDest; + cchRemaining = cchDest; + + // null terminate the beginning of the string + *pszDestEnd = L'\0'; + } + } + } + } + + if (SUCCEEDED(hr) || (hr == STRSAFE_E_INSUFFICIENT_BUFFER)) + { + if (ppszDestEnd) + { + *ppszDestEnd = pszDestEnd; + } + + if (pcchRemaining) + { + *pcchRemaining = cchRemaining; + } + } + + return hr; +} + +STRSAFEAPI StringCopyNWorkerA(char* pszDest, size_t cchDest, const char* pszSrc, size_t cchSrc) +{ + HRESULT hr = S_OK; + + if (cchDest == 0) + { + // can not null terminate a zero-byte dest buffer + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + while (cchDest && cchSrc && (*pszSrc != '\0')) + { + *pszDest++= *pszSrc++; + cchDest--; + cchSrc--; + } + + if (cchDest == 0) + { + // we are going to truncate pszDest + pszDest--; + hr = STRSAFE_E_INSUFFICIENT_BUFFER; + } + + *pszDest= '\0'; + } + + return hr; +} + +STRSAFEAPI StringCopyNWorkerW(wchar_t* pszDest, size_t cchDest, const wchar_t* pszSrc, size_t cchSrc) +{ + HRESULT hr = S_OK; + + if (cchDest == 0) + { + // can not null terminate a zero-byte dest buffer + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + while (cchDest && cchSrc && (*pszSrc != L'\0')) + { + *pszDest++= *pszSrc++; + cchDest--; + cchSrc--; + } + + if (cchDest == 0) + { + // we are going to truncate pszDest + pszDest--; + hr = STRSAFE_E_INSUFFICIENT_BUFFER; + } + + *pszDest= L'\0'; + } + + return hr; +} + +STRSAFEAPI StringCopyNExWorkerA(char* pszDest, size_t cchDest, size_t cbDest, const char* pszSrc, size_t cchSrc, char** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags) +{ + HRESULT hr = S_OK; + char* pszDestEnd = pszDest; + size_t cchRemaining = 0; + + // ASSERT(cbDest == (cchDest * sizeof(char)) || + // cbDest == (cchDest * sizeof(char)) + (cbDest % sizeof(char))); + + // only accept valid flags + if (dwFlags & (~STRSAFE_VALID_FLAGS)) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + if (dwFlags & STRSAFE_IGNORE_NULLS) + { + if (pszDest == NULL) + { + if ((cchDest != 0) || (cbDest != 0)) + { + // NULL pszDest and non-zero cchDest/cbDest is invalid + hr = STRSAFE_E_INVALID_PARAMETER; + } + } + + if (pszSrc == NULL) + { + pszSrc = ""; + } + } + + if (SUCCEEDED(hr)) + { + if (cchDest == 0) + { + pszDestEnd = pszDest; + cchRemaining = 0; + + // only fail if there was actually src data to copy + if (*pszSrc != '\0') + { + if (pszDest == NULL) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + hr = STRSAFE_E_INSUFFICIENT_BUFFER; + } + } + } + else + { + pszDestEnd = pszDest; + cchRemaining = cchDest; + + while (cchRemaining && cchSrc && (*pszSrc != '\0')) + { + *pszDestEnd++= *pszSrc++; + cchRemaining--; + cchSrc--; + } + + if (cchRemaining > 0) + { + if (dwFlags & STRSAFE_FILL_BEHIND_NULL) + { + memset(pszDestEnd + 1, STRSAFE_GET_FILL_PATTERN(dwFlags), ((cchRemaining - 1) * sizeof(char)) + (cbDest % sizeof(char))); + } + } + else + { + // we are going to truncate pszDest + pszDestEnd--; + cchRemaining++; + + hr = STRSAFE_E_INSUFFICIENT_BUFFER; + } + + *pszDestEnd = '\0'; + } + } + } + + if (FAILED(hr)) + { + if (pszDest) + { + if (dwFlags & STRSAFE_FILL_ON_FAILURE) + { + memset(pszDest, STRSAFE_GET_FILL_PATTERN(dwFlags), cbDest); + + if (STRSAFE_GET_FILL_PATTERN(dwFlags) == 0) + { + pszDestEnd = pszDest; + cchRemaining = cchDest; + } + else if (cchDest > 0) + { + pszDestEnd = pszDest + cchDest - 1; + cchRemaining = 1; + + // null terminate the end of the string + *pszDestEnd = '\0'; + } + } + + if (dwFlags & (STRSAFE_NULL_ON_FAILURE | STRSAFE_NO_TRUNCATION)) + { + if (cchDest > 0) + { + pszDestEnd = pszDest; + cchRemaining = cchDest; + + // null terminate the beginning of the string + *pszDestEnd = '\0'; + } + } + } + } + + if (SUCCEEDED(hr) || (hr == STRSAFE_E_INSUFFICIENT_BUFFER)) + { + if (ppszDestEnd) + { + *ppszDestEnd = pszDestEnd; + } + + if (pcchRemaining) + { + *pcchRemaining = cchRemaining; + } + } + + return hr; +} + +STRSAFEAPI StringCopyNExWorkerW(wchar_t* pszDest, size_t cchDest, size_t cbDest, const wchar_t* pszSrc, size_t cchSrc, wchar_t** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags) +{ + HRESULT hr = S_OK; + wchar_t* pszDestEnd = pszDest; + size_t cchRemaining = 0; + + // ASSERT(cbDest == (cchDest * sizeof(wchar_t)) || + // cbDest == (cchDest * sizeof(wchar_t)) + (cbDest % sizeof(wchar_t))); + + // only accept valid flags + if (dwFlags & (~STRSAFE_VALID_FLAGS)) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + if (dwFlags & STRSAFE_IGNORE_NULLS) + { + if (pszDest == NULL) + { + if ((cchDest != 0) || (cbDest != 0)) + { + // NULL pszDest and non-zero cchDest/cbDest is invalid + hr = STRSAFE_E_INVALID_PARAMETER; + } + } + + if (pszSrc == NULL) + { + pszSrc = L""; + } + } + + if (SUCCEEDED(hr)) + { + if (cchDest == 0) + { + pszDestEnd = pszDest; + cchRemaining = 0; + + // only fail if there was actually src data to copy + if (*pszSrc != L'\0') + { + if (pszDest == NULL) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + hr = STRSAFE_E_INSUFFICIENT_BUFFER; + } + } + } + else + { + pszDestEnd = pszDest; + cchRemaining = cchDest; + + while (cchRemaining && cchSrc && (*pszSrc != L'\0')) + { + *pszDestEnd++= *pszSrc++; + cchRemaining--; + cchSrc--; + } + + if (cchRemaining > 0) + { + if (dwFlags & STRSAFE_FILL_BEHIND_NULL) + { + memset(pszDestEnd + 1, STRSAFE_GET_FILL_PATTERN(dwFlags), ((cchRemaining - 1) * sizeof(wchar_t)) + (cbDest % sizeof(wchar_t))); + } + } + else + { + // we are going to truncate pszDest + pszDestEnd--; + cchRemaining++; + + hr = STRSAFE_E_INSUFFICIENT_BUFFER; + } + + *pszDestEnd = L'\0'; + } + } + } + + if (FAILED(hr)) + { + if (pszDest) + { + if (dwFlags & STRSAFE_FILL_ON_FAILURE) + { + memset(pszDest, STRSAFE_GET_FILL_PATTERN(dwFlags), cbDest); + + if (STRSAFE_GET_FILL_PATTERN(dwFlags) == 0) + { + pszDestEnd = pszDest; + cchRemaining = cchDest; + } + else if (cchDest > 0) + { + pszDestEnd = pszDest + cchDest - 1; + cchRemaining = 1; + + // null terminate the end of the string + *pszDestEnd = L'\0'; + } + } + + if (dwFlags & (STRSAFE_NULL_ON_FAILURE | STRSAFE_NO_TRUNCATION)) + { + if (cchDest > 0) + { + pszDestEnd = pszDest; + cchRemaining = cchDest; + + // null terminate the beginning of the string + *pszDestEnd = L'\0'; + } + } + } + } + + if (SUCCEEDED(hr) || (hr == STRSAFE_E_INSUFFICIENT_BUFFER)) + { + if (ppszDestEnd) + { + *ppszDestEnd = pszDestEnd; + } + + if (pcchRemaining) + { + *pcchRemaining = cchRemaining; + } + } + + return hr; +} + +STRSAFEAPI StringCatWorkerA(char* pszDest, size_t cchDest, const char* pszSrc) +{ + HRESULT hr; + size_t cchDestCurrent; + + hr = StringLengthWorkerA(pszDest, cchDest, &cchDestCurrent); + + if (SUCCEEDED(hr)) + { + hr = StringCopyWorkerA(pszDest + cchDestCurrent, + cchDest - cchDestCurrent, + pszSrc); + } + + return hr; +} + +STRSAFEAPI StringCatWorkerW(wchar_t* pszDest, size_t cchDest, const wchar_t* pszSrc) +{ + HRESULT hr; + size_t cchDestCurrent; + + hr = StringLengthWorkerW(pszDest, cchDest, &cchDestCurrent); + + if (SUCCEEDED(hr)) + { + hr = StringCopyWorkerW(pszDest + cchDestCurrent, + cchDest - cchDestCurrent, + pszSrc); + } + + return hr; +} + +STRSAFEAPI StringCatExWorkerA(char* pszDest, size_t cchDest, size_t cbDest, const char* pszSrc, char** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags) +{ + HRESULT hr = S_OK; + char* pszDestEnd = pszDest; + size_t cchRemaining = 0; + + // ASSERT(cbDest == (cchDest * sizeof(char)) || + // cbDest == (cchDest * sizeof(char)) + (cbDest % sizeof(char))); + + // only accept valid flags + if (dwFlags & (~STRSAFE_VALID_FLAGS)) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + size_t cchDestCurrent; + + if (dwFlags & STRSAFE_IGNORE_NULLS) + { + if (pszDest == NULL) + { + if ((cchDest == 0) && (cbDest == 0)) + { + cchDestCurrent = 0; + } + else + { + // NULL pszDest and non-zero cchDest/cbDest is invalid + hr = STRSAFE_E_INVALID_PARAMETER; + } + } + else + { + hr = StringLengthWorkerA(pszDest, cchDest, &cchDestCurrent); + + if (SUCCEEDED(hr)) + { + pszDestEnd = pszDest + cchDestCurrent; + cchRemaining = cchDest - cchDestCurrent; + } + } + + if (pszSrc == NULL) + { + pszSrc = ""; + } + } + else + { + hr = StringLengthWorkerA(pszDest, cchDest, &cchDestCurrent); + + if (SUCCEEDED(hr)) + { + pszDestEnd = pszDest + cchDestCurrent; + cchRemaining = cchDest - cchDestCurrent; + } + } + + if (SUCCEEDED(hr)) + { + if (cchDest == 0) + { + // only fail if there was actually src data to append + if (*pszSrc != '\0') + { + if (pszDest == NULL) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + hr = STRSAFE_E_INSUFFICIENT_BUFFER; + } + } + } + else + { + // we handle the STRSAFE_FILL_ON_FAILURE and STRSAFE_NULL_ON_FAILURE cases below, so do not pass + // those flags through + hr = StringCopyExWorkerA(pszDestEnd, + cchRemaining, + (cchRemaining * sizeof(char)) + (cbDest % sizeof(char)), + pszSrc, + &pszDestEnd, + &cchRemaining, + dwFlags & (~(STRSAFE_FILL_ON_FAILURE | STRSAFE_NULL_ON_FAILURE))); + } + } + } + + if (FAILED(hr)) + { + if (pszDest) + { + // STRSAFE_NO_TRUNCATION is taken care of by StringCopyExWorkerA() + + if (dwFlags & STRSAFE_FILL_ON_FAILURE) + { + memset(pszDest, STRSAFE_GET_FILL_PATTERN(dwFlags), cbDest); + + if (STRSAFE_GET_FILL_PATTERN(dwFlags) == 0) + { + pszDestEnd = pszDest; + cchRemaining = cchDest; + } + else + if (cchDest > 0) + { + pszDestEnd = pszDest + cchDest - 1; + cchRemaining = 1; + + // null terminate the end of the string + *pszDestEnd = '\0'; + } + } + + if (dwFlags & STRSAFE_NULL_ON_FAILURE) + { + if (cchDest > 0) + { + pszDestEnd = pszDest; + cchRemaining = cchDest; + + // null terminate the beginning of the string + *pszDestEnd = '\0'; + } + } + } + } + + if (SUCCEEDED(hr) || (hr == STRSAFE_E_INSUFFICIENT_BUFFER)) + { + if (ppszDestEnd) + { + *ppszDestEnd = pszDestEnd; + } + + if (pcchRemaining) + { + *pcchRemaining = cchRemaining; + } + } + + return hr; +} + +STRSAFEAPI StringCatExWorkerW(wchar_t* pszDest, size_t cchDest, size_t cbDest, const wchar_t* pszSrc, wchar_t** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags) +{ + HRESULT hr = S_OK; + wchar_t* pszDestEnd = pszDest; + size_t cchRemaining = 0; + + // ASSERT(cbDest == (cchDest * sizeof(wchar_t)) || + // cbDest == (cchDest * sizeof(wchar_t)) + (cbDest % sizeof(wchar_t))); + + // only accept valid flags + if (dwFlags & (~STRSAFE_VALID_FLAGS)) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + size_t cchDestCurrent; + + if (dwFlags & STRSAFE_IGNORE_NULLS) + { + if (pszDest == NULL) + { + if ((cchDest == 0) && (cbDest == 0)) + { + cchDestCurrent = 0; + } + else + { + // NULL pszDest and non-zero cchDest/cbDest is invalid + hr = STRSAFE_E_INVALID_PARAMETER; + } + } + else + { + hr = StringLengthWorkerW(pszDest, cchDest, &cchDestCurrent); + + if (SUCCEEDED(hr)) + { + pszDestEnd = pszDest + cchDestCurrent; + cchRemaining = cchDest - cchDestCurrent; + } + } + + if (pszSrc == NULL) + { + pszSrc = L""; + } + } + else + { + hr = StringLengthWorkerW(pszDest, cchDest, &cchDestCurrent); + + if (SUCCEEDED(hr)) + { + pszDestEnd = pszDest + cchDestCurrent; + cchRemaining = cchDest - cchDestCurrent; + } + } + + if (SUCCEEDED(hr)) + { + if (cchDest == 0) + { + // only fail if there was actually src data to append + if (*pszSrc != L'\0') + { + if (pszDest == NULL) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + hr = STRSAFE_E_INSUFFICIENT_BUFFER; + } + } + } + else + { + // we handle the STRSAFE_FILL_ON_FAILURE and STRSAFE_NULL_ON_FAILURE cases below, so do not pass + // those flags through + hr = StringCopyExWorkerW(pszDestEnd, + cchRemaining, + (cchRemaining * sizeof(wchar_t)) + (cbDest % sizeof(wchar_t)), + pszSrc, + &pszDestEnd, + &cchRemaining, + dwFlags & (~(STRSAFE_FILL_ON_FAILURE | STRSAFE_NULL_ON_FAILURE))); + } + } + } + + if (FAILED(hr)) + { + if (pszDest) + { + // STRSAFE_NO_TRUNCATION is taken care of by StringCopyExWorkerW() + + if (dwFlags & STRSAFE_FILL_ON_FAILURE) + { + memset(pszDest, STRSAFE_GET_FILL_PATTERN(dwFlags), cbDest); + + if (STRSAFE_GET_FILL_PATTERN(dwFlags) == 0) + { + pszDestEnd = pszDest; + cchRemaining = cchDest; + } + else if (cchDest > 0) + { + pszDestEnd = pszDest + cchDest - 1; + cchRemaining = 1; + + // null terminate the end of the string + *pszDestEnd = L'\0'; + } + } + + if (dwFlags & STRSAFE_NULL_ON_FAILURE) + { + if (cchDest > 0) + { + pszDestEnd = pszDest; + cchRemaining = cchDest; + + // null terminate the beginning of the string + *pszDestEnd = L'\0'; + } + } + } + } + + if (SUCCEEDED(hr) || (hr == STRSAFE_E_INSUFFICIENT_BUFFER)) + { + if (ppszDestEnd) + { + *ppszDestEnd = pszDestEnd; + } + + if (pcchRemaining) + { + *pcchRemaining = cchRemaining; + } + } + + return hr; +} + +STRSAFEAPI StringCatNWorkerA(char* pszDest, size_t cchDest, const char* pszSrc, size_t cchMaxAppend) +{ + HRESULT hr; + size_t cchDestCurrent; + + hr = StringLengthWorkerA(pszDest, cchDest, &cchDestCurrent); + + if (SUCCEEDED(hr)) + { + hr = StringCopyNWorkerA(pszDest + cchDestCurrent, + cchDest - cchDestCurrent, + pszSrc, + cchMaxAppend); + } + + return hr; +} + +STRSAFEAPI StringCatNWorkerW(wchar_t* pszDest, size_t cchDest, const wchar_t* pszSrc, size_t cchMaxAppend) +{ + HRESULT hr; + size_t cchDestCurrent; + + hr = StringLengthWorkerW(pszDest, cchDest, &cchDestCurrent); + + if (SUCCEEDED(hr)) + { + hr = StringCopyNWorkerW(pszDest + cchDestCurrent, + cchDest - cchDestCurrent, + pszSrc, + cchMaxAppend); + } + + return hr; +} + +STRSAFEAPI StringCatNExWorkerA(char* pszDest, size_t cchDest, size_t cbDest, const char* pszSrc, size_t cchMaxAppend, char** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags) +{ + HRESULT hr = S_OK; + char* pszDestEnd = pszDest; + size_t cchRemaining = 0; + size_t cchDestCurrent = 0; + + // ASSERT(cbDest == (cchDest * sizeof(char)) || + // cbDest == (cchDest * sizeof(char)) + (cbDest % sizeof(char))); + + // only accept valid flags + if (dwFlags & (~STRSAFE_VALID_FLAGS)) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + if (dwFlags & STRSAFE_IGNORE_NULLS) + { + if (pszDest == NULL) + { + if ((cchDest == 0) && (cbDest == 0)) + { + cchDestCurrent = 0; + } + else + { + // NULL pszDest and non-zero cchDest/cbDest is invalid + hr = STRSAFE_E_INVALID_PARAMETER; + } + } + else + { + hr = StringLengthWorkerA(pszDest, cchDest, &cchDestCurrent); + + if (SUCCEEDED(hr)) + { + pszDestEnd = pszDest + cchDestCurrent; + cchRemaining = cchDest - cchDestCurrent; + } + } + + if (pszSrc == NULL) + { + pszSrc = ""; + } + } + else + { + hr = StringLengthWorkerA(pszDest, cchDest, &cchDestCurrent); + + if (SUCCEEDED(hr)) + { + pszDestEnd = pszDest + cchDestCurrent; + cchRemaining = cchDest - cchDestCurrent; + } + } + + if (SUCCEEDED(hr)) + { + if (cchDest == 0) + { + // only fail if there was actually src data to append + if (*pszSrc != '\0') + { + if (pszDest == NULL) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + hr = STRSAFE_E_INSUFFICIENT_BUFFER; + } + } + } + else + { + // we handle the STRSAFE_FILL_ON_FAILURE and STRSAFE_NULL_ON_FAILURE cases below, so do not pass + // those flags through + hr = StringCopyNExWorkerA(pszDestEnd, + cchRemaining, + (cchRemaining * sizeof(char)) + (cbDest % sizeof(char)), + pszSrc, + cchMaxAppend, + &pszDestEnd, + &cchRemaining, + dwFlags & (~(STRSAFE_FILL_ON_FAILURE | STRSAFE_NULL_ON_FAILURE))); + } + } + } + + if (FAILED(hr)) + { + if (pszDest) + { + // STRSAFE_NO_TRUNCATION is taken care of by StringCopyNExWorkerA() + + if (dwFlags & STRSAFE_FILL_ON_FAILURE) + { + memset(pszDest, STRSAFE_GET_FILL_PATTERN(dwFlags), cbDest); + + if (STRSAFE_GET_FILL_PATTERN(dwFlags) == 0) + { + pszDestEnd = pszDest; + cchRemaining = cchDest; + } + else if (cchDest > 0) + { + pszDestEnd = pszDest + cchDest - 1; + cchRemaining = 1; + + // null terminate the end of the string + *pszDestEnd = '\0'; + } + } + + if (dwFlags & (STRSAFE_NULL_ON_FAILURE)) + { + if (cchDest > 0) + { + pszDestEnd = pszDest; + cchRemaining = cchDest; + + // null terminate the beginning of the string + *pszDestEnd = '\0'; + } + } + } + } + + if (SUCCEEDED(hr) || (hr == STRSAFE_E_INSUFFICIENT_BUFFER)) + { + if (ppszDestEnd) + { + *ppszDestEnd = pszDestEnd; + } + + if (pcchRemaining) + { + *pcchRemaining = cchRemaining; + } + } + + return hr; +} + +STRSAFEAPI StringCatNExWorkerW(wchar_t* pszDest, size_t cchDest, size_t cbDest, const wchar_t* pszSrc, size_t cchMaxAppend, wchar_t** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags) +{ + HRESULT hr = S_OK; + wchar_t* pszDestEnd = pszDest; + size_t cchRemaining = 0; + size_t cchDestCurrent = 0; + + + // ASSERT(cbDest == (cchDest * sizeof(wchar_t)) || + // cbDest == (cchDest * sizeof(wchar_t)) + (cbDest % sizeof(wchar_t))); + + // only accept valid flags + if (dwFlags & (~STRSAFE_VALID_FLAGS)) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + if (dwFlags & STRSAFE_IGNORE_NULLS) + { + if (pszDest == NULL) + { + if ((cchDest == 0) && (cbDest == 0)) + { + cchDestCurrent = 0; + } + else + { + // NULL pszDest and non-zero cchDest/cbDest is invalid + hr = STRSAFE_E_INVALID_PARAMETER; + } + } + else + { + hr = StringLengthWorkerW(pszDest, cchDest, &cchDestCurrent); + + if (SUCCEEDED(hr)) + { + pszDestEnd = pszDest + cchDestCurrent; + cchRemaining = cchDest - cchDestCurrent; + } + } + + if (pszSrc == NULL) + { + pszSrc = L""; + } + } + else + { + hr = StringLengthWorkerW(pszDest, cchDest, &cchDestCurrent); + + if (SUCCEEDED(hr)) + { + pszDestEnd = pszDest + cchDestCurrent; + cchRemaining = cchDest - cchDestCurrent; + } + } + + if (SUCCEEDED(hr)) + { + if (cchDest == 0) + { + // only fail if there was actually src data to append + if (*pszSrc != L'\0') + { + if (pszDest == NULL) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + hr = STRSAFE_E_INSUFFICIENT_BUFFER; + } + } + } + else + { + // we handle the STRSAFE_FILL_ON_FAILURE and STRSAFE_NULL_ON_FAILURE cases below, so do not pass + // those flags through + hr = StringCopyNExWorkerW(pszDestEnd, + cchRemaining, + (cchRemaining * sizeof(wchar_t)) + (cbDest % sizeof(wchar_t)), + pszSrc, + cchMaxAppend, + &pszDestEnd, + &cchRemaining, + dwFlags & (~(STRSAFE_FILL_ON_FAILURE | STRSAFE_NULL_ON_FAILURE))); + } + } + } + + if (FAILED(hr)) + { + if (pszDest) + { + // STRSAFE_NO_TRUNCATION is taken care of by StringCopyNExWorkerW() + + if (dwFlags & STRSAFE_FILL_ON_FAILURE) + { + memset(pszDest, STRSAFE_GET_FILL_PATTERN(dwFlags), cbDest); + + if (STRSAFE_GET_FILL_PATTERN(dwFlags) == 0) + { + pszDestEnd = pszDest; + cchRemaining = cchDest; + } + else if (cchDest > 0) + { + pszDestEnd = pszDest + cchDest - 1; + cchRemaining = 1; + + // null terminate the end of the string + *pszDestEnd = L'\0'; + } + } + + if (dwFlags & (STRSAFE_NULL_ON_FAILURE)) + { + if (cchDest > 0) + { + pszDestEnd = pszDest; + cchRemaining = cchDest; + + // null terminate the beginning of the string + *pszDestEnd = L'\0'; + } + } + } + } + + if (SUCCEEDED(hr) || (hr == STRSAFE_E_INSUFFICIENT_BUFFER)) + { + if (ppszDestEnd) + { + *ppszDestEnd = pszDestEnd; + } + + if (pcchRemaining) + { + *pcchRemaining = cchRemaining; + } + } + + return hr; +} + +STRSAFEAPI StringVPrintfWorkerA(char* pszDest, size_t cchDest, const char* pszFormat, va_list argList) +{ + HRESULT hr = S_OK; + + if (cchDest == 0) + { + // can not null terminate a zero-byte dest buffer + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + int iRet; + size_t cchMax; + + // leave the last space for the null terminator + cchMax = cchDest - 1; + + iRet = _vsnprintf(pszDest, cchMax, pszFormat, argList); + // ASSERT((iRet < 0) || (((size_t)iRet) <= cchMax)); + + if ((iRet < 0) || (((size_t)iRet) > cchMax)) + { + // need to null terminate the string + pszDest += cchMax; + *pszDest = '\0'; + + // we have truncated pszDest + hr = STRSAFE_E_INSUFFICIENT_BUFFER; + } + else if (((size_t)iRet) == cchMax) + { + // need to null terminate the string + pszDest += cchMax; + *pszDest = '\0'; + } + } + + return hr; +} + +STRSAFEAPI StringVPrintfWorkerW(wchar_t* pszDest, size_t cchDest, const wchar_t* pszFormat, va_list argList) +{ + HRESULT hr = S_OK; + + if (cchDest == 0) + { + // can not null terminate a zero-byte dest buffer + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + int iRet; + size_t cchMax; + + // leave the last space for the null terminator + cchMax = cchDest - 1; + + iRet = _vsnwprintf(pszDest, cchMax, pszFormat, argList); + // ASSERT((iRet < 0) || (((size_t)iRet) <= cchMax)); + + if ((iRet < 0) || (((size_t)iRet) > cchMax)) + { + // need to null terminate the string + pszDest += cchMax; + *pszDest = L'\0'; + + // we have truncated pszDest + hr = STRSAFE_E_INSUFFICIENT_BUFFER; + } + else if (((size_t)iRet) == cchMax) + { + // need to null terminate the string + pszDest += cchMax; + *pszDest = L'\0'; + } + } + + return hr; +} + +STRSAFEAPI StringVPrintfExWorkerA(char* pszDest, size_t cchDest, size_t cbDest, char** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags, const char* pszFormat, va_list argList) +{ + HRESULT hr = S_OK; + char* pszDestEnd = pszDest; + size_t cchRemaining = 0; + + // ASSERT(cbDest == (cchDest * sizeof(char)) || + // cbDest == (cchDest * sizeof(char)) + (cbDest % sizeof(char))); + + // only accept valid flags + if (dwFlags & (~STRSAFE_VALID_FLAGS)) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + if (dwFlags & STRSAFE_IGNORE_NULLS) + { + if (pszDest == NULL) + { + if ((cchDest != 0) || (cbDest != 0)) + { + // NULL pszDest and non-zero cchDest/cbDest is invalid + hr = STRSAFE_E_INVALID_PARAMETER; + } + } + + if (pszFormat == NULL) + { + pszFormat = ""; + } + } + + if (SUCCEEDED(hr)) + { + if (cchDest == 0) + { + pszDestEnd = pszDest; + cchRemaining = 0; + + // only fail if there was actually a non-empty format string + if (*pszFormat != '\0') + { + if (pszDest == NULL) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + hr = STRSAFE_E_INSUFFICIENT_BUFFER; + } + } + } + else + { + int iRet; + size_t cchMax; + + // leave the last space for the null terminator + cchMax = cchDest - 1; + + iRet = _vsnprintf(pszDest, cchMax, pszFormat, argList); + // ASSERT((iRet < 0) || (((size_t)iRet) <= cchMax)); + + if ((iRet < 0) || (((size_t)iRet) > cchMax)) + { + // we have truncated pszDest + pszDestEnd = pszDest + cchMax; + cchRemaining = 1; + + // need to null terminate the string + *pszDestEnd = '\0'; + + hr = STRSAFE_E_INSUFFICIENT_BUFFER; + } + else if (((size_t)iRet) == cchMax) + { + // string fit perfectly + pszDestEnd = pszDest + cchMax; + cchRemaining = 1; + + // need to null terminate the string + *pszDestEnd = '\0'; + } + else if (((size_t)iRet) < cchMax) + { + // there is extra room + pszDestEnd = pszDest + iRet; + cchRemaining = cchDest - iRet; + + if (dwFlags & STRSAFE_FILL_BEHIND_NULL) + { + memset(pszDestEnd + 1, STRSAFE_GET_FILL_PATTERN(dwFlags), ((cchRemaining - 1) * sizeof(char)) + (cbDest % sizeof(char))); + } + } + } + } + } + + if (FAILED(hr)) + { + if (pszDest) + { + if (dwFlags & STRSAFE_FILL_ON_FAILURE) + { + memset(pszDest, STRSAFE_GET_FILL_PATTERN(dwFlags), cbDest); + + if (STRSAFE_GET_FILL_PATTERN(dwFlags) == 0) + { + pszDestEnd = pszDest; + cchRemaining = cchDest; + } + else if (cchDest > 0) + { + pszDestEnd = pszDest + cchDest - 1; + cchRemaining = 1; + + // null terminate the end of the string + *pszDestEnd = '\0'; + } + } + + if (dwFlags & (STRSAFE_NULL_ON_FAILURE | STRSAFE_NO_TRUNCATION)) + { + if (cchDest > 0) + { + pszDestEnd = pszDest; + cchRemaining = cchDest; + + // null terminate the beginning of the string + *pszDestEnd = '\0'; + } + } + } + } + + if (SUCCEEDED(hr) || (hr == STRSAFE_E_INSUFFICIENT_BUFFER)) + { + if (ppszDestEnd) + { + *ppszDestEnd = pszDestEnd; + } + + if (pcchRemaining) + { + *pcchRemaining = cchRemaining; + } + } + + return hr; +} + +STRSAFEAPI StringVPrintfExWorkerW(wchar_t* pszDest, size_t cchDest, size_t cbDest, wchar_t** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags, const wchar_t* pszFormat, va_list argList) +{ + HRESULT hr = S_OK; + wchar_t* pszDestEnd = pszDest; + size_t cchRemaining = 0; + + // ASSERT(cbDest == (cchDest * sizeof(wchar_t)) || + // cbDest == (cchDest * sizeof(wchar_t)) + (cbDest % sizeof(wchar_t))); + + // only accept valid flags + if (dwFlags & (~STRSAFE_VALID_FLAGS)) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + if (dwFlags & STRSAFE_IGNORE_NULLS) + { + if (pszDest == NULL) + { + if ((cchDest != 0) || (cbDest != 0)) + { + // NULL pszDest and non-zero cchDest/cbDest is invalid + hr = STRSAFE_E_INVALID_PARAMETER; + } + } + + if (pszFormat == NULL) + { + pszFormat = L""; + } + } + + if (SUCCEEDED(hr)) + { + if (cchDest == 0) + { + pszDestEnd = pszDest; + cchRemaining = 0; + + // only fail if there was actually a non-empty format string + if (*pszFormat != L'\0') + { + if (pszDest == NULL) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + hr = STRSAFE_E_INSUFFICIENT_BUFFER; + } + } + } + else + { + int iRet; + size_t cchMax; + + // leave the last space for the null terminator + cchMax = cchDest - 1; + + iRet = _vsnwprintf(pszDest, cchMax, pszFormat, argList); + // ASSERT((iRet < 0) || (((size_t)iRet) <= cchMax)); + + if ((iRet < 0) || (((size_t)iRet) > cchMax)) + { + // we have truncated pszDest + pszDestEnd = pszDest + cchMax; + cchRemaining = 1; + + // need to null terminate the string + *pszDestEnd = L'\0'; + + hr = STRSAFE_E_INSUFFICIENT_BUFFER; + } + else if (((size_t)iRet) == cchMax) + { + // string fit perfectly + pszDestEnd = pszDest + cchMax; + cchRemaining = 1; + + // need to null terminate the string + *pszDestEnd = L'\0'; + } + else if (((size_t)iRet) < cchMax) + { + // there is extra room + pszDestEnd = pszDest + iRet; + cchRemaining = cchDest - iRet; + + if (dwFlags & STRSAFE_FILL_BEHIND_NULL) + { + memset(pszDestEnd + 1, STRSAFE_GET_FILL_PATTERN(dwFlags), ((cchRemaining - 1) * sizeof(wchar_t)) + (cbDest % sizeof(wchar_t))); + } + } + } + } + } + + if (FAILED(hr)) + { + if (pszDest) + { + if (dwFlags & STRSAFE_FILL_ON_FAILURE) + { + memset(pszDest, STRSAFE_GET_FILL_PATTERN(dwFlags), cbDest); + + if (STRSAFE_GET_FILL_PATTERN(dwFlags) == 0) + { + pszDestEnd = pszDest; + cchRemaining = cchDest; + } + else if (cchDest > 0) + { + pszDestEnd = pszDest + cchDest - 1; + cchRemaining = 1; + + // null terminate the end of the string + *pszDestEnd = L'\0'; + } + } + + if (dwFlags & (STRSAFE_NULL_ON_FAILURE | STRSAFE_NO_TRUNCATION)) + { + if (cchDest > 0) + { + pszDestEnd = pszDest; + cchRemaining = cchDest; + + // null terminate the beginning of the string + *pszDestEnd = L'\0'; + } + } + } + } + + if (SUCCEEDED(hr) || (hr == STRSAFE_E_INSUFFICIENT_BUFFER)) + { + if (ppszDestEnd) + { + *ppszDestEnd = pszDestEnd; + } + + if (pcchRemaining) + { + *pcchRemaining = cchRemaining; + } + } + + return hr; +} + +STRSAFEAPI StringLengthWorkerA(const char* psz, size_t cchMax, size_t* pcch) +{ + HRESULT hr = S_OK; + size_t cchMaxPrev = cchMax; + + while (cchMax && (*psz != '\0')) + { + psz++; + cchMax--; + } + + if (cchMax == 0) + { + // the string is longer than cchMax + hr = STRSAFE_E_INVALID_PARAMETER; + } + + if (SUCCEEDED(hr) && pcch) + { + *pcch = cchMaxPrev - cchMax; + } + + return hr; +} + +STRSAFEAPI StringLengthWorkerW(const wchar_t* psz, size_t cchMax, size_t* pcch) +{ + HRESULT hr = S_OK; + size_t cchMaxPrev = cchMax; + + while (cchMax && (*psz != L'\0')) + { + psz++; + cchMax--; + } + + if (cchMax == 0) + { + // the string is longer than cchMax + hr = STRSAFE_E_INVALID_PARAMETER; + } + + if (SUCCEEDED(hr) && pcch) + { + *pcch = cchMaxPrev - cchMax; + } + + return hr; +} +#endif // STRSAFE_INLINE + +#ifndef STRSAFE_LIB_IMPL +STRSAFE_INLINE_API StringGetsExWorkerA(char* pszDest, size_t cchDest, size_t cbDest, char** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags) +{ + HRESULT hr = S_OK; + char* pszDestEnd = pszDest; + size_t cchRemaining = 0; + + // ASSERT(cbDest == (cchDest * sizeof(char)) || + // cbDest == (cchDest * sizeof(char)) + (cbDest % sizeof(char))); + + // only accept valid flags + if (dwFlags & (~STRSAFE_VALID_FLAGS)) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + if (dwFlags & STRSAFE_IGNORE_NULLS) + { + if (pszDest == NULL) + { + if ((cchDest != 0) || (cbDest != 0)) + { + // NULL pszDest and non-zero cchDest/cbDest is invalid + hr = STRSAFE_E_INVALID_PARAMETER; + } + } + } + + if (SUCCEEDED(hr)) + { + if (cchDest <= 1) + { + pszDestEnd = pszDest; + cchRemaining = cchDest; + + if (cchDest == 1) + { + *pszDestEnd = '\0'; + } + + hr = STRSAFE_E_INSUFFICIENT_BUFFER; + } + else + { + char ch; + + pszDestEnd = pszDest; + cchRemaining = cchDest; + + while ((cchRemaining > 1) && (ch = (char)getc(stdin)) != '\n') + { + if (ch == EOF) + { + if (pszDestEnd == pszDest) + { + // we failed to read anything from stdin + hr = STRSAFE_E_END_OF_FILE; + } + break; + } + + *pszDestEnd = ch; + + pszDestEnd++; + cchRemaining--; + } + + if (cchRemaining > 0) + { + // there is extra room + if (dwFlags & STRSAFE_FILL_BEHIND_NULL) + { + memset(pszDestEnd + 1, STRSAFE_GET_FILL_PATTERN(dwFlags), ((cchRemaining - 1) * sizeof(char)) + (cbDest % sizeof(char))); + } + } + + *pszDestEnd = '\0'; + } + } + } + + if (FAILED(hr)) + { + if (pszDest) + { + if (dwFlags & STRSAFE_FILL_ON_FAILURE) + { + memset(pszDest, STRSAFE_GET_FILL_PATTERN(dwFlags), cbDest); + + if (STRSAFE_GET_FILL_PATTERN(dwFlags) == 0) + { + pszDestEnd = pszDest; + cchRemaining = cchDest; + } + else if (cchDest > 0) + { + pszDestEnd = pszDest + cchDest - 1; + cchRemaining = 1; + + // null terminate the end of the string + *pszDestEnd = '\0'; + } + } + + if (dwFlags & (STRSAFE_NULL_ON_FAILURE | STRSAFE_NO_TRUNCATION)) + { + if (cchDest > 0) + { + pszDestEnd = pszDest; + cchRemaining = cchDest; + + // null terminate the beginning of the string + *pszDestEnd = '\0'; + } + } + } + } + + if (SUCCEEDED(hr) || + (hr == STRSAFE_E_INSUFFICIENT_BUFFER) || + (hr == STRSAFE_E_END_OF_FILE)) + { + if (ppszDestEnd) + { + *ppszDestEnd = pszDestEnd; + } + + if (pcchRemaining) + { + *pcchRemaining = cchRemaining; + } + } + + return hr; +} + +STRSAFE_INLINE_API StringGetsExWorkerW(wchar_t* pszDest, size_t cchDest, size_t cbDest, wchar_t** ppszDestEnd, size_t* pcchRemaining, unsigned long dwFlags) +{ + HRESULT hr = S_OK; + wchar_t* pszDestEnd = pszDest; + size_t cchRemaining = 0; + + // ASSERT(cbDest == (cchDest * sizeof(char)) || + // cbDest == (cchDest * sizeof(char)) + (cbDest % sizeof(char))); + + // only accept valid flags + if (dwFlags & (~STRSAFE_VALID_FLAGS)) + { + hr = STRSAFE_E_INVALID_PARAMETER; + } + else + { + if (dwFlags & STRSAFE_IGNORE_NULLS) + { + if (pszDest == NULL) + { + if ((cchDest != 0) || (cbDest != 0)) + { + // NULL pszDest and non-zero cchDest/cbDest is invalid + hr = STRSAFE_E_INVALID_PARAMETER; + } + } + } + + if (SUCCEEDED(hr)) + { + if (cchDest <= 1) + { + pszDestEnd = pszDest; + cchRemaining = cchDest; + + if (cchDest == 1) + { + *pszDestEnd = L'\0'; + } + + hr = STRSAFE_E_INSUFFICIENT_BUFFER; + } + else + { + wchar_t ch; + + pszDestEnd = pszDest; + cchRemaining = cchDest; + + while ((cchRemaining > 1) && (ch = (wchar_t)getwc(stdin)) != L'\n') + { + if (ch == EOF) + { + if (pszDestEnd == pszDest) + { + // we failed to read anything from stdin + hr = STRSAFE_E_END_OF_FILE; + } + break; + } + + *pszDestEnd = ch; + + pszDestEnd++; + cchRemaining--; + } + + if (cchRemaining > 0) + { + // there is extra room + if (dwFlags & STRSAFE_FILL_BEHIND_NULL) + { + memset(pszDestEnd + 1, STRSAFE_GET_FILL_PATTERN(dwFlags), ((cchRemaining - 1) * sizeof(wchar_t)) + (cbDest % sizeof(wchar_t))); + } + } + + *pszDestEnd = L'\0'; + } + } + } + + if (FAILED(hr)) + { + if (pszDest) + { + if (dwFlags & STRSAFE_FILL_ON_FAILURE) + { + memset(pszDest, STRSAFE_GET_FILL_PATTERN(dwFlags), cbDest); + + if (STRSAFE_GET_FILL_PATTERN(dwFlags) == 0) + { + pszDestEnd = pszDest; + cchRemaining = cchDest; + } + else if (cchDest > 0) + { + pszDestEnd = pszDest + cchDest - 1; + cchRemaining = 1; + + // null terminate the end of the string + *pszDestEnd = L'\0'; + } + } + + if (dwFlags & (STRSAFE_NULL_ON_FAILURE | STRSAFE_NO_TRUNCATION)) + { + if (cchDest > 0) + { + pszDestEnd = pszDest; + cchRemaining = cchDest; + + // null terminate the beginning of the string + *pszDestEnd = L'\0'; + } + } + } + } + + if (SUCCEEDED(hr) || + (hr == STRSAFE_E_INSUFFICIENT_BUFFER) || + (hr == STRSAFE_E_END_OF_FILE)) + { + if (ppszDestEnd) + { + *ppszDestEnd = pszDestEnd; + } + + if (pcchRemaining) + { + *pcchRemaining = cchRemaining; + } + } + + return hr; +} +#endif // !STRSAFE_LIB_IMPL + + +// Do not call these functions, they are worker functions for internal use within this file +#ifdef DEPRECATE_SUPPORTED +#pragma deprecated(StringCopyWorkerA) +#pragma deprecated(StringCopyWorkerW) +#pragma deprecated(StringCopyExWorkerA) +#pragma deprecated(StringCopyExWorkerW) +#pragma deprecated(StringCatWorkerA) +#pragma deprecated(StringCatWorkerW) +#pragma deprecated(StringCatExWorkerA) +#pragma deprecated(StringCatExWorkerW) +#pragma deprecated(StringCatNWorkerA) +#pragma deprecated(StringCatNWorkerW) +#pragma deprecated(StringCatNExWorkerA) +#pragma deprecated(StringCatNExWorkerW) +#pragma deprecated(StringVPrintfWorkerA) +#pragma deprecated(StringVPrintfWorkerW) +#pragma deprecated(StringVPrintfExWorkerA) +#pragma deprecated(StringVPrintfExWorkerW) +#pragma deprecated(StringLengthWorkerA) +#pragma deprecated(StringLengthWorkerW) +#else +#define StringCopyWorkerA StringCopyWorkerA_instead_use_StringCchCopyA_or_StringCchCopyExA; +#define StringCopyWorkerW StringCopyWorkerW_instead_use_StringCchCopyW_or_StringCchCopyExW; +#define StringCopyExWorkerA StringCopyExWorkerA_instead_use_StringCchCopyA_or_StringCchCopyExA; +#define StringCopyExWorkerW StringCopyExWorkerW_instead_use_StringCchCopyW_or_StringCchCopyExW; +#define StringCatWorkerA StringCatWorkerA_instead_use_StringCchCatA_or_StringCchCatExA; +#define StringCatWorkerW StringCatWorkerW_instead_use_StringCchCatW_or_StringCchCatExW; +#define StringCatExWorkerA StringCatExWorkerA_instead_use_StringCchCatA_or_StringCchCatExA; +#define StringCatExWorkerW StringCatExWorkerW_instead_use_StringCchCatW_or_StringCchCatExW; +#define StringCatNWorkerA StringCatNWorkerA_instead_use_StringCchCatNA_or_StrincCbCatNA; +#define StringCatNWorkerW StringCatNWorkerW_instead_use_StringCchCatNW_or_StringCbCatNW; +#define StringCatNExWorkerA StringCatNExWorkerA_instead_use_StringCchCatNExA_or_StringCbCatNExA; +#define StringCatNExWorkerW StringCatNExWorkerW_instead_use_StringCchCatNExW_or_StringCbCatNExW; +#define StringVPrintfWorkerA StringVPrintfWorkerA_instead_use_StringCchVPrintfA_or_StringCchVPrintfExA; +#define StringVPrintfWorkerW StringVPrintfWorkerW_instead_use_StringCchVPrintfW_or_StringCchVPrintfExW; +#define StringVPrintfExWorkerA StringVPrintfExWorkerA_instead_use_StringCchVPrintfA_or_StringCchVPrintfExA; +#define StringVPrintfExWorkerW StringVPrintfExWorkerW_instead_use_StringCchVPrintfW_or_StringCchVPrintfExW; +#define StringLengthWorkerA StringLengthWorkerA_instead_use_StringCchLengthA_or_StringCbLengthA; +#define StringLengthWorkerW StringLengthWorkerW_instead_use_StringCchLengthW_or_StringCbLengthW; +#endif // !DEPRECATE_SUPPORTED + + +#ifndef STRSAFE_NO_DEPRECATE +// Deprecate all of the unsafe functions to generate compiletime errors. If you do not want +// this then you can #define STRSAFE_NO_DEPRECATE before including this file. +#ifdef DEPRECATE_SUPPORTED + +// First all the names that are a/w variants (or shouldn't be #defined by now anyway). +#pragma deprecated(lstrcpyA) +#pragma deprecated(lstrcpyW) +#pragma deprecated(lstrcatA) +#pragma deprecated(lstrcatW) +#pragma deprecated(wsprintfA) +#pragma deprecated(wsprintfW) + +#pragma deprecated(StrCpyW) +#pragma deprecated(StrCatW) +#pragma deprecated(StrNCatA) +#pragma deprecated(StrNCatW) +#pragma deprecated(StrCatNA) +#pragma deprecated(StrCatNW) +#pragma deprecated(wvsprintfA) +#pragma deprecated(wvsprintfW) + +#pragma deprecated(strcpy) +#pragma deprecated(wcscpy) +#pragma deprecated(strcat) +#pragma deprecated(wcscat) +#pragma deprecated(sprintf) +#pragma deprecated(swprintf) +#pragma deprecated(vsprintf) +#pragma deprecated(vswprintf) +#pragma deprecated(_snprintf) +#pragma deprecated(_snwprintf) +#pragma deprecated(_vsnprintf) +#pragma deprecated(_vsnwprintf) +#pragma deprecated(gets) +#pragma deprecated(_getws) + +// Then all the windows.h names - we need to undef and redef based on UNICODE setting +#undef lstrcpy +#undef lstrcat +#undef wsprintf +#undef wvsprintf +#pragma deprecated(lstrcpy) +#pragma deprecated(lstrcat) +#pragma deprecated(wsprintf) +#pragma deprecated(wvsprintf) +#ifdef UNICODE +#define lstrcpy lstrcpyW +#define lstrcat lstrcatW +#define wsprintf wsprintfW +#define wvsprintf wvsprintfW +#else +#define lstrcpy lstrcpyA +#define lstrcat lstrcatA +#define wsprintf wsprintfA +#define wvsprintf wvsprintfA +#endif + +// Then the shlwapi names - they key off UNICODE also. +#undef StrCpyA +#undef StrCpy +#undef StrCatA +#undef StrCat +#undef StrNCat +#undef StrCatN +#pragma deprecated(StrCpyA) +#pragma deprecated(StrCatA) +#pragma deprecated(StrCatN) +#pragma deprecated(StrCpy) +#pragma deprecated(StrCat) +#pragma deprecated(StrNCat) +#define StrCpyA lstrcpyA +#define StrCatA lstrcatA +#define StrCatN StrNCat +#ifdef UNICODE +#define StrCpy StrCpyW +#define StrCat StrCatW +#define StrNCat StrNCatW +#else +#define StrCpy lstrcpyA +#define StrCat lstrcatA +#define StrNCat StrNCatA +#endif + +// Then all the CRT names - we need to undef/redef based on _UNICODE value. +#undef _tcscpy +#undef _ftcscpy +#undef _tcscat +#undef _ftcscat +#undef _stprintf +#undef _sntprintf +#undef _vstprintf +#undef _vsntprintf +#undef _getts +#pragma deprecated(_tcscpy) +#pragma deprecated(_ftcscpy) +#pragma deprecated(_tcscat) +#pragma deprecated(_ftcscat) +#pragma deprecated(_stprintf) +#pragma deprecated(_sntprintf) +#pragma deprecated(_vstprintf) +#pragma deprecated(_vsntprintf) +#pragma deprecated(_getts) +#ifdef _UNICODE +#define _tcscpy wcscpy +#define _ftcscpy wcscpy +#define _tcscat wcscat +#define _ftcscat wcscat +#define _stprintf swprintf +#define _sntprintf _snwprintf +#define _vstprintf vswprintf +#define _vsntprintf _vsnwprintf +#define _getts _getws +#else +#define _tcscpy strcpy +#define _ftcscpy strcpy +#define _tcscat strcat +#define _ftcscat strcat +#define _stprintf sprintf +#define _sntprintf _snprintf +#define _vstprintf vsprintf +#define _vsntprintf _vsnprintf +#define _getts gets +#endif + +#else // DEPRECATE_SUPPORTED + +#undef strcpy +#define strcpy strcpy_instead_use_StringCbCopyA_or_StringCchCopyA; + +#undef wcscpy +#define wcscpy wcscpy_instead_use_StringCbCopyW_or_StringCchCopyW; + +#undef strcat +#define strcat strcat_instead_use_StringCbCatA_or_StringCchCatA; + +#undef wcscat +#define wcscat wcscat_instead_use_StringCbCatW_or_StringCchCatW; + +#undef sprintf +#define sprintf sprintf_instead_use_StringCbPrintfA_or_StringCchPrintfA; + +#undef swprintf +#define swprintf swprintf_instead_use_StringCbPrintfW_or_StringCchPrintfW; + +#undef vsprintf +#define vsprintf vsprintf_instead_use_StringCbVPrintfA_or_StringCchVPrintfA; + +#undef vswprintf +#define vswprintf vswprintf_instead_use_StringCbVPrintfW_or_StringCchVPrintfW; + +#undef _snprintf +#define _snprintf _snprintf_instead_use_StringCbPrintfA_or_StringCchPrintfA; + +#undef _snwprintf +#define _snwprintf _snwprintf_instead_use_StringCbPrintfW_or_StringCchPrintfW; + +#undef _vsnprintf +#define _vsnprintf _vsnprintf_instead_use_StringCbVPrintfA_or_StringCchVPrintfA; + +#undef _vsnwprintf +#define _vsnwprintf _vsnwprintf_instead_use_StringCbVPrintfW_or_StringCchVPrintfW; + +#undef strcpyA +#define strcpyA strcpyA_instead_use_StringCbCopyA_or_StringCchCopyA; + +#undef strcpyW +#define strcpyW strcpyW_instead_use_StringCbCopyW_or_StringCchCopyW; + +#undef lstrcpy +#define lstrcpy lstrcpy_instead_use_StringCbCopy_or_StringCchCopy; + +#undef lstrcpyA +#define lstrcpyA lstrcpyA_instead_use_StringCbCopyA_or_StringCchCopyA; + +#undef lstrcpyW +#define lstrcpyW lstrcpyW_instead_use_StringCbCopyW_or_StringCchCopyW; + +#undef StrCpy +#define StrCpy StrCpy_instead_use_StringCbCopy_or_StringCchCopy; + +#undef StrCpyA +#define StrCpyA StrCpyA_instead_use_StringCbCopyA_or_StringCchCopyA; + +#undef StrCpyW +#define StrCpyW StrCpyW_instead_use_StringCbCopyW_or_StringCchCopyW; + +#undef _tcscpy +#define _tcscpy _tcscpy_instead_use_StringCbCopy_or_StringCchCopy; + +#undef _ftcscpy +#define _ftcscpy _ftcscpy_instead_use_StringCbCopy_or_StringCchCopy; + +#undef lstrcat +#define lstrcat lstrcat_instead_use_StringCbCat_or_StringCchCat; + +#undef lstrcatA +#define lstrcatA lstrcatA_instead_use_StringCbCatA_or_StringCchCatA; + +#undef lstrcatW +#define lstrcatW lstrcatW_instead_use_StringCbCatW_or_StringCchCatW; + +#undef StrCat +#define StrCat StrCat_instead_use_StringCbCat_or_StringCchCat; + +#undef StrCatA +#define StrCatA StrCatA_instead_use_StringCbCatA_or_StringCchCatA; + +#undef StrCatW +#define StrCatW StrCatW_instead_use_StringCbCatW_or_StringCchCatW; + +#undef StrNCat +#define StrNCat StrNCat_instead_use_StringCbCatN_or_StringCchCatN; + +#undef StrNCatA +#define StrNCatA StrNCatA_instead_use_StringCbCatNA_or_StringCchCatNA; + +#undef StrNCatW +#define StrNCatW StrNCatW_instead_use_StringCbCatNW_or_StringCchCatNW; + +#undef StrCatN +#define StrCatN StrCatN_instead_use_StringCbCatN_or_StringCchCatN; + +#undef StrCatNA +#define StrCatNA StrCatNA_instead_use_StringCbCatNA_or_StringCchCatNA; + +#undef StrCatNW +#define StrCatNW StrCatNW_instead_use_StringCbCatNW_or_StringCchCatNW; + +#undef _tcscat +#define _tcscat _tcscat_instead_use_StringCbCat_or_StringCchCat; + +#undef _ftcscat +#define _ftcscat _ftcscat_instead_use_StringCbCat_or_StringCchCat; + +#undef wsprintf +#define wsprintf wsprintf_instead_use_StringCbPrintf_or_StringCchPrintf; + +#undef wsprintfA +#define wsprintfA wsprintfA_instead_use_StringCbPrintfA_or_StringCchPrintfA; + +#undef wsprintfW +#define wsprintfW wsprintfW_instead_use_StringCbPrintfW_or_StringCchPrintfW; + +#undef wvsprintf +#define wvsprintf wvsprintf_instead_use_StringCbVPrintf_or_StringCchVPrintf; + +#undef wvsprintfA +#define wvsprintfA wvsprintfA_instead_use_StringCbVPrintfA_or_StringCchVPrintfA; + +#undef wvsprintfW +#define wvsprintfW wvsprintfW_instead_use_StringCbVPrintfW_or_StringCchVPrintfW; + +#undef _vstprintf +#define _vstprintf _vstprintf_instead_use_StringCbVPrintf_or_StringCchVPrintf; + +#undef _vsntprintf +#define _vsntprintf _vsntprintf_instead_use_StringCbVPrintf_or_StringCchVPrintf; + +#undef _stprintf +#define _stprintf _stprintf_instead_use_StringCbPrintf_or_StringCchPrintf; + +#undef _sntprintf +#define _sntprintf _sntprintf_instead_use_StringCbPrintf_or_StringCchPrintf; + +#undef _getts +#define _getts _getts_instead_use_StringCbGets_or_StringCchGets; + +#undef gets +#define gets _gets_instead_use_StringCbGetsA_or_StringCchGetsA; + +#undef _getws +#define _getws _getws_instead_use_StringCbGetsW_or_StringCchGetsW; + +#endif // !DEPRECATE_SUPPORTED +#endif // !STRSAFE_NO_DEPRECATE + +#ifdef _NTSTRSAFE_H_INCLUDED_ +#pragma warning(pop) +#endif // _NTSTRSAFE_H_INCLUDED_ + +#endif // _STRSAFE_H_INCLUDED_ diff --git a/videoInputSrcAndDemos/libs/DShow/Include/sysclock.h b/videoInputSrcAndDemos/libs/DShow/Include/sysclock.h index 53c8e4c..d55015f 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/sysclock.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/sysclock.h @@ -1,39 +1,39 @@ -//------------------------------------------------------------------------------ -// File: SysClock.h -// -// Desc: DirectShow base classes - defines a system clock implementation of -// IReferenceClock. -// -// Copyright (c) Microsoft Corporation. All rights reserved. -//------------------------------------------------------------------------------ - - -#ifndef __SYSTEMCLOCK__ -#define __SYSTEMCLOCK__ - -// -// Base clock. Uses timeGetTime ONLY -// Uses most of the code in the base reference clock. -// Provides GetTime -// - -class CSystemClock : public CBaseReferenceClock, public IAMClockAdjust, public IPersist -{ -public: - // We must be able to create an instance of ourselves - static CUnknown * WINAPI CreateInstance(LPUNKNOWN pUnk, HRESULT *phr); - CSystemClock(TCHAR *pName, LPUNKNOWN pUnk, HRESULT *phr); - - DECLARE_IUNKNOWN - - STDMETHODIMP NonDelegatingQueryInterface(REFIID riid,void ** ppv); - - // Yield up our class id so that we can be persisted - // Implement required Ipersist method - STDMETHODIMP GetClassID(CLSID *pClsID); - - // IAMClockAdjust methods - STDMETHODIMP SetClockDelta(REFERENCE_TIME rtDelta); -}; //CSystemClock - -#endif /* __SYSTEMCLOCK__ */ +//------------------------------------------------------------------------------ +// File: SysClock.h +// +// Desc: DirectShow base classes - defines a system clock implementation of +// IReferenceClock. +// +// Copyright (c) Microsoft Corporation. All rights reserved. +//------------------------------------------------------------------------------ + + +#ifndef __SYSTEMCLOCK__ +#define __SYSTEMCLOCK__ + +// +// Base clock. Uses timeGetTime ONLY +// Uses most of the code in the base reference clock. +// Provides GetTime +// + +class CSystemClock : public CBaseReferenceClock, public IAMClockAdjust, public IPersist +{ +public: + // We must be able to create an instance of ourselves + static CUnknown * WINAPI CreateInstance(LPUNKNOWN pUnk, HRESULT *phr); + CSystemClock(TCHAR *pName, LPUNKNOWN pUnk, HRESULT *phr); + + DECLARE_IUNKNOWN + + STDMETHODIMP NonDelegatingQueryInterface(REFIID riid,void ** ppv); + + // Yield up our class id so that we can be persisted + // Implement required Ipersist method + STDMETHODIMP GetClassID(CLSID *pClsID); + + // IAMClockAdjust methods + STDMETHODIMP SetClockDelta(REFERENCE_TIME rtDelta); +}; //CSystemClock + +#endif /* __SYSTEMCLOCK__ */ diff --git a/videoInputSrcAndDemos/libs/DShow/Include/transfrm.h b/videoInputSrcAndDemos/libs/DShow/Include/transfrm.h index 55a07dc..d4873fa 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/transfrm.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/transfrm.h @@ -1,304 +1,304 @@ -//------------------------------------------------------------------------------ -// File: Transfrm.h -// -// Desc: DirectShow base classes - defines classes from which simple -// transform codecs may be derived. -// -// Copyright (c) Microsoft Corporation. All rights reserved. -//------------------------------------------------------------------------------ - - -// It assumes the codec has one input and one output stream, and has no -// interest in memory management, interface negotiation or anything else. -// -// derive your class from this, and supply Transform and the media type/format -// negotiation functions. Implement that class, compile and link and -// you're done. - - -#ifndef __TRANSFRM__ -#define __TRANSFRM__ - -// ====================================================================== -// This is the com object that represents a simple transform filter. It -// supports IBaseFilter, IMediaFilter and two pins through nested interfaces -// ====================================================================== - -class CTransformFilter; - -// ================================================== -// Implements the input pin -// ================================================== - -class CTransformInputPin : public CBaseInputPin -{ - friend class CTransformFilter; - -protected: - CTransformFilter *m_pTransformFilter; - - -public: - - CTransformInputPin( - TCHAR *pObjectName, - CTransformFilter *pTransformFilter, - HRESULT * phr, - LPCWSTR pName); -#ifdef UNICODE - CTransformInputPin( - char *pObjectName, - CTransformFilter *pTransformFilter, - HRESULT * phr, - LPCWSTR pName); -#endif - - STDMETHODIMP QueryId(LPWSTR * Id) - { - return AMGetWideString(L"In", Id); - } - - // Grab and release extra interfaces if required - - HRESULT CheckConnect(IPin *pPin); - HRESULT BreakConnect(); - HRESULT CompleteConnect(IPin *pReceivePin); - - // check that we can support this output type - HRESULT CheckMediaType(const CMediaType* mtIn); - - // set the connection media type - HRESULT SetMediaType(const CMediaType* mt); - - // --- IMemInputPin ----- - - // here's the next block of data from the stream. - // AddRef it yourself if you need to hold it beyond the end - // of this call. - STDMETHODIMP Receive(IMediaSample * pSample); - - // provide EndOfStream that passes straight downstream - // (there is no queued data) - STDMETHODIMP EndOfStream(void); - - // passes it to CTransformFilter::BeginFlush - STDMETHODIMP BeginFlush(void); - - // passes it to CTransformFilter::EndFlush - STDMETHODIMP EndFlush(void); - - STDMETHODIMP NewSegment( - REFERENCE_TIME tStart, - REFERENCE_TIME tStop, - double dRate); - - // Check if it's OK to process samples - virtual HRESULT CheckStreaming(); - - // Media type -public: - CMediaType& CurrentMediaType() { return m_mt; }; - -}; - -// ================================================== -// Implements the output pin -// ================================================== - -class CTransformOutputPin : public CBaseOutputPin -{ - friend class CTransformFilter; - -protected: - CTransformFilter *m_pTransformFilter; - -public: - - // implement IMediaPosition by passing upstream - IUnknown * m_pPosition; - - CTransformOutputPin( - TCHAR *pObjectName, - CTransformFilter *pTransformFilter, - HRESULT * phr, - LPCWSTR pName); -#ifdef UNICODE - CTransformOutputPin( - CHAR *pObjectName, - CTransformFilter *pTransformFilter, - HRESULT * phr, - LPCWSTR pName); -#endif - ~CTransformOutputPin(); - - // override to expose IMediaPosition - STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, void **ppv); - - // --- CBaseOutputPin ------------ - - STDMETHODIMP QueryId(LPWSTR * Id) - { - return AMGetWideString(L"Out", Id); - } - - // Grab and release extra interfaces if required - - HRESULT CheckConnect(IPin *pPin); - HRESULT BreakConnect(); - HRESULT CompleteConnect(IPin *pReceivePin); - - // check that we can support this output type - HRESULT CheckMediaType(const CMediaType* mtOut); - - // set the connection media type - HRESULT SetMediaType(const CMediaType *pmt); - - // called from CBaseOutputPin during connection to ask for - // the count and size of buffers we need. - HRESULT DecideBufferSize( - IMemAllocator * pAlloc, - ALLOCATOR_PROPERTIES *pProp); - - // returns the preferred formats for a pin - HRESULT GetMediaType(int iPosition,CMediaType *pMediaType); - - // inherited from IQualityControl via CBasePin - STDMETHODIMP Notify(IBaseFilter * pSender, Quality q); - - // Media type -public: - CMediaType& CurrentMediaType() { return m_mt; }; -}; - - -class AM_NOVTABLE CTransformFilter : public CBaseFilter -{ - -public: - - // map getpin/getpincount for base enum of pins to owner - // override this to return more specialised pin objects - - virtual int GetPinCount(); - virtual CBasePin * GetPin(int n); - STDMETHODIMP FindPin(LPCWSTR Id, IPin **ppPin); - - // override state changes to allow derived transform filter - // to control streaming start/stop - STDMETHODIMP Stop(); - STDMETHODIMP Pause(); - -public: - - CTransformFilter(TCHAR *, LPUNKNOWN, REFCLSID clsid); -#ifdef UNICODE - CTransformFilter(CHAR *, LPUNKNOWN, REFCLSID clsid); -#endif - ~CTransformFilter(); - - // ================================================================= - // ----- override these bits --------------------------------------- - // ================================================================= - - // These must be supplied in a derived class - - virtual HRESULT Transform(IMediaSample * pIn, IMediaSample *pOut); - - // check if you can support mtIn - virtual HRESULT CheckInputType(const CMediaType* mtIn) PURE; - - // check if you can support the transform from this input to this output - virtual HRESULT CheckTransform(const CMediaType* mtIn, const CMediaType* mtOut) PURE; - - // this goes in the factory template table to create new instances - // static CCOMObject * CreateInstance(LPUNKNOWN, HRESULT *); - - // call the SetProperties function with appropriate arguments - virtual HRESULT DecideBufferSize( - IMemAllocator * pAllocator, - ALLOCATOR_PROPERTIES *pprop) PURE; - - // override to suggest OUTPUT pin media types - virtual HRESULT GetMediaType(int iPosition, CMediaType *pMediaType) PURE; - - - - // ================================================================= - // ----- Optional Override Methods ----------------------- - // ================================================================= - - // you can also override these if you want to know about streaming - virtual HRESULT StartStreaming(); - virtual HRESULT StopStreaming(); - - // override if you can do anything constructive with quality notifications - virtual HRESULT AlterQuality(Quality q); - - // override this to know when the media type is actually set - virtual HRESULT SetMediaType(PIN_DIRECTION direction,const CMediaType *pmt); - - // chance to grab extra interfaces on connection - virtual HRESULT CheckConnect(PIN_DIRECTION dir,IPin *pPin); - virtual HRESULT BreakConnect(PIN_DIRECTION dir); - virtual HRESULT CompleteConnect(PIN_DIRECTION direction,IPin *pReceivePin); - - // chance to customize the transform process - virtual HRESULT Receive(IMediaSample *pSample); - - // Standard setup for output sample - HRESULT InitializeOutputSample(IMediaSample *pSample, IMediaSample **ppOutSample); - - // if you override Receive, you may need to override these three too - virtual HRESULT EndOfStream(void); - virtual HRESULT BeginFlush(void); - virtual HRESULT EndFlush(void); - virtual HRESULT NewSegment( - REFERENCE_TIME tStart, - REFERENCE_TIME tStop, - double dRate); - -#ifdef PERF - // Override to register performance measurement with a less generic string - // You should do this to avoid confusion with other filters - virtual void RegisterPerfId() - {m_idTransform = MSR_REGISTER(TEXT("Transform"));} -#endif // PERF - - -// implementation details - -protected: - -#ifdef PERF - int m_idTransform; // performance measuring id -#endif - BOOL m_bEOSDelivered; // have we sent EndOfStream - BOOL m_bSampleSkipped; // Did we just skip a frame - BOOL m_bQualityChanged; // Have we degraded? - - // critical section protecting filter state. - - CCritSec m_csFilter; - - // critical section stopping state changes (ie Stop) while we're - // processing a sample. - // - // This critical section is held when processing - // events that occur on the receive thread - Receive() and EndOfStream(). - // - // If you want to hold both m_csReceive and m_csFilter then grab - // m_csFilter FIRST - like CTransformFilter::Stop() does. - - CCritSec m_csReceive; - - // these hold our input and output pins - - friend class CTransformInputPin; - friend class CTransformOutputPin; - CTransformInputPin *m_pInput; - CTransformOutputPin *m_pOutput; -}; - -#endif /* __TRANSFRM__ */ - - +//------------------------------------------------------------------------------ +// File: Transfrm.h +// +// Desc: DirectShow base classes - defines classes from which simple +// transform codecs may be derived. +// +// Copyright (c) Microsoft Corporation. All rights reserved. +//------------------------------------------------------------------------------ + + +// It assumes the codec has one input and one output stream, and has no +// interest in memory management, interface negotiation or anything else. +// +// derive your class from this, and supply Transform and the media type/format +// negotiation functions. Implement that class, compile and link and +// you're done. + + +#ifndef __TRANSFRM__ +#define __TRANSFRM__ + +// ====================================================================== +// This is the com object that represents a simple transform filter. It +// supports IBaseFilter, IMediaFilter and two pins through nested interfaces +// ====================================================================== + +class CTransformFilter; + +// ================================================== +// Implements the input pin +// ================================================== + +class CTransformInputPin : public CBaseInputPin +{ + friend class CTransformFilter; + +protected: + CTransformFilter *m_pTransformFilter; + + +public: + + CTransformInputPin( + TCHAR *pObjectName, + CTransformFilter *pTransformFilter, + HRESULT * phr, + LPCWSTR pName); +#ifdef UNICODE + CTransformInputPin( + char *pObjectName, + CTransformFilter *pTransformFilter, + HRESULT * phr, + LPCWSTR pName); +#endif + + STDMETHODIMP QueryId(LPWSTR * Id) + { + return AMGetWideString(L"In", Id); + } + + // Grab and release extra interfaces if required + + HRESULT CheckConnect(IPin *pPin); + HRESULT BreakConnect(); + HRESULT CompleteConnect(IPin *pReceivePin); + + // check that we can support this output type + HRESULT CheckMediaType(const CMediaType* mtIn); + + // set the connection media type + HRESULT SetMediaType(const CMediaType* mt); + + // --- IMemInputPin ----- + + // here's the next block of data from the stream. + // AddRef it yourself if you need to hold it beyond the end + // of this call. + STDMETHODIMP Receive(IMediaSample * pSample); + + // provide EndOfStream that passes straight downstream + // (there is no queued data) + STDMETHODIMP EndOfStream(void); + + // passes it to CTransformFilter::BeginFlush + STDMETHODIMP BeginFlush(void); + + // passes it to CTransformFilter::EndFlush + STDMETHODIMP EndFlush(void); + + STDMETHODIMP NewSegment( + REFERENCE_TIME tStart, + REFERENCE_TIME tStop, + double dRate); + + // Check if it's OK to process samples + virtual HRESULT CheckStreaming(); + + // Media type +public: + CMediaType& CurrentMediaType() { return m_mt; }; + +}; + +// ================================================== +// Implements the output pin +// ================================================== + +class CTransformOutputPin : public CBaseOutputPin +{ + friend class CTransformFilter; + +protected: + CTransformFilter *m_pTransformFilter; + +public: + + // implement IMediaPosition by passing upstream + IUnknown * m_pPosition; + + CTransformOutputPin( + TCHAR *pObjectName, + CTransformFilter *pTransformFilter, + HRESULT * phr, + LPCWSTR pName); +#ifdef UNICODE + CTransformOutputPin( + CHAR *pObjectName, + CTransformFilter *pTransformFilter, + HRESULT * phr, + LPCWSTR pName); +#endif + ~CTransformOutputPin(); + + // override to expose IMediaPosition + STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, void **ppv); + + // --- CBaseOutputPin ------------ + + STDMETHODIMP QueryId(LPWSTR * Id) + { + return AMGetWideString(L"Out", Id); + } + + // Grab and release extra interfaces if required + + HRESULT CheckConnect(IPin *pPin); + HRESULT BreakConnect(); + HRESULT CompleteConnect(IPin *pReceivePin); + + // check that we can support this output type + HRESULT CheckMediaType(const CMediaType* mtOut); + + // set the connection media type + HRESULT SetMediaType(const CMediaType *pmt); + + // called from CBaseOutputPin during connection to ask for + // the count and size of buffers we need. + HRESULT DecideBufferSize( + IMemAllocator * pAlloc, + ALLOCATOR_PROPERTIES *pProp); + + // returns the preferred formats for a pin + HRESULT GetMediaType(int iPosition,CMediaType *pMediaType); + + // inherited from IQualityControl via CBasePin + STDMETHODIMP Notify(IBaseFilter * pSender, Quality q); + + // Media type +public: + CMediaType& CurrentMediaType() { return m_mt; }; +}; + + +class AM_NOVTABLE CTransformFilter : public CBaseFilter +{ + +public: + + // map getpin/getpincount for base enum of pins to owner + // override this to return more specialised pin objects + + virtual int GetPinCount(); + virtual CBasePin * GetPin(int n); + STDMETHODIMP FindPin(LPCWSTR Id, IPin **ppPin); + + // override state changes to allow derived transform filter + // to control streaming start/stop + STDMETHODIMP Stop(); + STDMETHODIMP Pause(); + +public: + + CTransformFilter(TCHAR *, LPUNKNOWN, REFCLSID clsid); +#ifdef UNICODE + CTransformFilter(CHAR *, LPUNKNOWN, REFCLSID clsid); +#endif + ~CTransformFilter(); + + // ================================================================= + // ----- override these bits --------------------------------------- + // ================================================================= + + // These must be supplied in a derived class + + virtual HRESULT Transform(IMediaSample * pIn, IMediaSample *pOut); + + // check if you can support mtIn + virtual HRESULT CheckInputType(const CMediaType* mtIn) PURE; + + // check if you can support the transform from this input to this output + virtual HRESULT CheckTransform(const CMediaType* mtIn, const CMediaType* mtOut) PURE; + + // this goes in the factory template table to create new instances + // static CCOMObject * CreateInstance(LPUNKNOWN, HRESULT *); + + // call the SetProperties function with appropriate arguments + virtual HRESULT DecideBufferSize( + IMemAllocator * pAllocator, + ALLOCATOR_PROPERTIES *pprop) PURE; + + // override to suggest OUTPUT pin media types + virtual HRESULT GetMediaType(int iPosition, CMediaType *pMediaType) PURE; + + + + // ================================================================= + // ----- Optional Override Methods ----------------------- + // ================================================================= + + // you can also override these if you want to know about streaming + virtual HRESULT StartStreaming(); + virtual HRESULT StopStreaming(); + + // override if you can do anything constructive with quality notifications + virtual HRESULT AlterQuality(Quality q); + + // override this to know when the media type is actually set + virtual HRESULT SetMediaType(PIN_DIRECTION direction,const CMediaType *pmt); + + // chance to grab extra interfaces on connection + virtual HRESULT CheckConnect(PIN_DIRECTION dir,IPin *pPin); + virtual HRESULT BreakConnect(PIN_DIRECTION dir); + virtual HRESULT CompleteConnect(PIN_DIRECTION direction,IPin *pReceivePin); + + // chance to customize the transform process + virtual HRESULT Receive(IMediaSample *pSample); + + // Standard setup for output sample + HRESULT InitializeOutputSample(IMediaSample *pSample, IMediaSample **ppOutSample); + + // if you override Receive, you may need to override these three too + virtual HRESULT EndOfStream(void); + virtual HRESULT BeginFlush(void); + virtual HRESULT EndFlush(void); + virtual HRESULT NewSegment( + REFERENCE_TIME tStart, + REFERENCE_TIME tStop, + double dRate); + +#ifdef PERF + // Override to register performance measurement with a less generic string + // You should do this to avoid confusion with other filters + virtual void RegisterPerfId() + {m_idTransform = MSR_REGISTER(TEXT("Transform"));} +#endif // PERF + + +// implementation details + +protected: + +#ifdef PERF + int m_idTransform; // performance measuring id +#endif + BOOL m_bEOSDelivered; // have we sent EndOfStream + BOOL m_bSampleSkipped; // Did we just skip a frame + BOOL m_bQualityChanged; // Have we degraded? + + // critical section protecting filter state. + + CCritSec m_csFilter; + + // critical section stopping state changes (ie Stop) while we're + // processing a sample. + // + // This critical section is held when processing + // events that occur on the receive thread - Receive() and EndOfStream(). + // + // If you want to hold both m_csReceive and m_csFilter then grab + // m_csFilter FIRST - like CTransformFilter::Stop() does. + + CCritSec m_csReceive; + + // these hold our input and output pins + + friend class CTransformInputPin; + friend class CTransformOutputPin; + CTransformInputPin *m_pInput; + CTransformOutputPin *m_pOutput; +}; + +#endif /* __TRANSFRM__ */ + + diff --git a/videoInputSrcAndDemos/libs/DShow/Include/transip.h b/videoInputSrcAndDemos/libs/DShow/Include/transip.h index 2c1e511..f9e014d 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/transip.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/transip.h @@ -1,250 +1,252 @@ -//------------------------------------------------------------------------------ -// File: TransIP.h -// -// Desc: DirectShow base classes - defines classes from which simple -// Transform-In-Place filters may be derived. -// -// Copyright (c) Microsoft Corporation. All rights reserved. -//------------------------------------------------------------------------------ - - -// -// The difference between this and Transfrm.h is that Transfrm copies the data. -// -// It assumes the filter has one input and one output stream, and has no -// interest in memory management, interface negotiation or anything else. -// -// Derive your class from this, and supply Transform and the media type/format -// negotiation functions. Implement that class, compile and link and -// you're done. - - -#ifndef __TRANSIP__ -#define __TRANSIP__ - -// ====================================================================== -// This is the com object that represents a simple transform filter. It -// supports IBaseFilter, IMediaFilter and two pins through nested interfaces -// ====================================================================== - -class CTransInPlaceFilter; - -// Several of the pin functions call filter functions to do the work, -// so you can often use the pin classes unaltered, just overriding the -// functions in CTransInPlaceFilter. If that's not enough and you want -// to derive your own pin class, override GetPin in the filter to supply -// your own pin classes to the filter. - -// ================================================== -// Implements the input pin -// ================================================== - -class CTransInPlaceInputPin : public CTransformInputPin -{ - -protected: - CTransInPlaceFilter * const m_pTIPFilter; // our filter - BOOL m_bReadOnly; // incoming stream is read only - -public: - - CTransInPlaceInputPin( - TCHAR *pObjectName, - CTransInPlaceFilter *pFilter, - HRESULT *phr, - LPCWSTR pName); - - // --- IMemInputPin ----- - - // Provide an enumerator for media types by getting one from downstream - STDMETHODIMP EnumMediaTypes( IEnumMediaTypes **ppEnum ); - - // Say whether media type is acceptable. - HRESULT CheckMediaType(const CMediaType* pmt); - - // Return our upstream allocator - STDMETHODIMP GetAllocator(IMemAllocator ** ppAllocator); - - // get told which allocator the upstream output pin is actually - // going to use. - STDMETHODIMP NotifyAllocator(IMemAllocator * pAllocator, - BOOL bReadOnly); - - // Allow the filter to see what allocator we have - // N.B. This does NOT AddRef - IMemAllocator * PeekAllocator() const - { return m_pAllocator; } - - // Pass this on downstream if it ever gets called. - STDMETHODIMP GetAllocatorRequirements(ALLOCATOR_PROPERTIES *pProps); - - HRESULT CompleteConnect(IPin *pReceivePin); - - inline const BOOL ReadOnly() { return m_bReadOnly ; } - -}; // CTransInPlaceInputPin - -// ================================================== -// Implements the output pin -// ================================================== - -class CTransInPlaceOutputPin : public CTransformOutputPin -{ - -protected: - // m_pFilter points to our CBaseFilter - CTransInPlaceFilter * const m_pTIPFilter; - -public: - - CTransInPlaceOutputPin( - TCHAR *pObjectName, - CTransInPlaceFilter *pFilter, - HRESULT *phr, - LPCWSTR pName); - - - // --- CBaseOutputPin ------------ - - // negotiate the allocator and its buffer size/count - // Insists on using our own allocator. (Actually the one upstream of us). - // We don't override this - instead we just agree the default - // then let the upstream filter decide for itself on reconnect - // virtual HRESULT DecideAllocator(IMemInputPin * pPin, IMemAllocator ** pAlloc); - - // Provide a media type enumerator. Get it from upstream. - STDMETHODIMP EnumMediaTypes( IEnumMediaTypes **ppEnum ); - - // Say whether media type is acceptable. - HRESULT CheckMediaType(const CMediaType* pmt); - - // This just saves the allocator being used on the output pin - // Also called by input pin's GetAllocator() - void SetAllocator(IMemAllocator * pAllocator); - - IMemInputPin * ConnectedIMemInputPin() - { return m_pInputPin; } - - // Allow the filter to see what allocator we have - // N.B. This does NOT AddRef - IMemAllocator * PeekAllocator() const - { return m_pAllocator; } - - HRESULT CompleteConnect(IPin *pReceivePin); - -}; // CTransInPlaceOutputPin - - -class AM_NOVTABLE CTransInPlaceFilter : public CTransformFilter -{ - -public: - - // map getpin/getpincount for base enum of pins to owner - // override this to return more specialised pin objects - - virtual CBasePin *GetPin(int n); - -public: - - // Set bModifiesData == false if your derived filter does - // not modify the data samples (for instance it's just copying - // them somewhere else or looking at the timestamps). - - CTransInPlaceFilter(TCHAR *, LPUNKNOWN, REFCLSID clsid, HRESULT *, - bool bModifiesData = true); -#ifdef UNICODE - CTransInPlaceFilter(CHAR *, LPUNKNOWN, REFCLSID clsid, HRESULT *, - bool bModifiesData = true); -#endif - // The following are defined to avoid undefined pure virtuals. - // Even if they are never called, they will give linkage warnings/errors - - // We override EnumMediaTypes to bypass the transform class enumerator - // which would otherwise call this. - HRESULT GetMediaType(int iPosition, CMediaType *pMediaType) - { DbgBreak("CTransInPlaceFilter::GetMediaType should never be called"); - return E_UNEXPECTED; - } - - // This is called when we actually have to provide out own allocator. - HRESULT DecideBufferSize(IMemAllocator*, ALLOCATOR_PROPERTIES *); - - // The functions which call this in CTransform are overridden in this - // class to call CheckInputType with the assumption that the type - // does not change. In Debug builds some calls will be made and - // we just ensure that they do not assert. - HRESULT CheckTransform(const CMediaType *mtIn, const CMediaType *mtOut) - { - return S_OK; - }; - - - // ================================================================= - // ----- You may want to override this ----------------------------- - // ================================================================= - - HRESULT CompleteConnect(PIN_DIRECTION dir,IPin *pReceivePin); - - // chance to customize the transform process - virtual HRESULT Receive(IMediaSample *pSample); - - // ================================================================= - // ----- You MUST override these ----------------------------------- - // ================================================================= - - virtual HRESULT Transform(IMediaSample *pSample) PURE; - - // this goes in the factory template table to create new instances - // static CCOMObject * CreateInstance(LPUNKNOWN, HRESULT *); - - -#ifdef PERF - // Override to register performance measurement with a less generic string - // You should do this to avoid confusion with other filters - virtual void RegisterPerfId() - {m_idTransInPlace = MSR_REGISTER(TEXT("TransInPlace"));} -#endif // PERF - - -// implementation details - -protected: - - IMediaSample * CTransInPlaceFilter::Copy(IMediaSample *pSource); - -#ifdef PERF - int m_idTransInPlace; // performance measuring id -#endif // PERF - bool m_bModifiesData; // Does this filter change the data? - - // these hold our input and output pins - - friend class CTransInPlaceInputPin; - friend class CTransInPlaceOutputPin; - - CTransInPlaceInputPin *InputPin() const - { - return (CTransInPlaceInputPin *)m_pInput; - }; - CTransInPlaceOutputPin *OutputPin() const - { - return (CTransInPlaceOutputPin *)m_pOutput; - }; - - // Helper to see if the input and output types match - BOOL TypesMatch() - { - return InputPin()->CurrentMediaType() == - OutputPin()->CurrentMediaType(); - } - - // Are the input and output allocators different? - BOOL UsingDifferentAllocators() const - { - return InputPin()->PeekAllocator() != OutputPin()->PeekAllocator(); - } -}; // CTransInPlaceFilter - -#endif /* __TRANSIP__ */ - +//------------------------------------------------------------------------------ +// File: TransIP.h +// +// Desc: DirectShow base classes - defines classes from which simple +// Transform-In-Place filters may be derived. +// +// Copyright (c) Microsoft Corporation. All rights reserved. +//------------------------------------------------------------------------------ + + +// +// The difference between this and Transfrm.h is that Transfrm copies the data. +// +// It assumes the filter has one input and one output stream, and has no +// interest in memory management, interface negotiation or anything else. +// +// Derive your class from this, and supply Transform and the media type/format +// negotiation functions. Implement that class, compile and link and +// you're done. + + +#ifndef __TRANSIP__ +#define __TRANSIP__ + +// ====================================================================== +// This is the com object that represents a simple transform filter. It +// supports IBaseFilter, IMediaFilter and two pins through nested interfaces +// ====================================================================== + +class CTransInPlaceFilter; + +// Several of the pin functions call filter functions to do the work, +// so you can often use the pin classes unaltered, just overriding the +// functions in CTransInPlaceFilter. If that's not enough and you want +// to derive your own pin class, override GetPin in the filter to supply +// your own pin classes to the filter. + +// ================================================== +// Implements the input pin +// ================================================== + +class CTransInPlaceInputPin : public CTransformInputPin +{ + +protected: + CTransInPlaceFilter * const m_pTIPFilter; // our filter + BOOL m_bReadOnly; // incoming stream is read only + +public: + + CTransInPlaceInputPin( + TCHAR *pObjectName, + CTransInPlaceFilter *pFilter, + HRESULT *phr, + LPCWSTR pName); + + // --- IMemInputPin ----- + + // Provide an enumerator for media types by getting one from downstream + STDMETHODIMP EnumMediaTypes( IEnumMediaTypes **ppEnum ); + + // Say whether media type is acceptable. + HRESULT CheckMediaType(const CMediaType* pmt); + + // Return our upstream allocator + STDMETHODIMP GetAllocator(IMemAllocator ** ppAllocator); + + // get told which allocator the upstream output pin is actually + // going to use. + STDMETHODIMP NotifyAllocator(IMemAllocator * pAllocator, + BOOL bReadOnly); + + // Allow the filter to see what allocator we have + // N.B. This does NOT AddRef + IMemAllocator * PeekAllocator() const + { return m_pAllocator; } + + // Pass this on downstream if it ever gets called. + STDMETHODIMP GetAllocatorRequirements(ALLOCATOR_PROPERTIES *pProps); + + HRESULT CompleteConnect(IPin *pReceivePin); + + inline const BOOL ReadOnly() { return m_bReadOnly ; } + +}; // CTransInPlaceInputPin + +// ================================================== +// Implements the output pin +// ================================================== + +class CTransInPlaceOutputPin : public CTransformOutputPin +{ + +protected: + // m_pFilter points to our CBaseFilter + CTransInPlaceFilter * const m_pTIPFilter; + +public: + + CTransInPlaceOutputPin( + TCHAR *pObjectName, + CTransInPlaceFilter *pFilter, + HRESULT *phr, + LPCWSTR pName); + + + // --- CBaseOutputPin ------------ + + // negotiate the allocator and its buffer size/count + // Insists on using our own allocator. (Actually the one upstream of us). + // We don't override this - instead we just agree the default + // then let the upstream filter decide for itself on reconnect + // virtual HRESULT DecideAllocator(IMemInputPin * pPin, IMemAllocator ** pAlloc); + + // Provide a media type enumerator. Get it from upstream. + STDMETHODIMP EnumMediaTypes( IEnumMediaTypes **ppEnum ); + + // Say whether media type is acceptable. + HRESULT CheckMediaType(const CMediaType* pmt); + + // This just saves the allocator being used on the output pin + // Also called by input pin's GetAllocator() + void SetAllocator(IMemAllocator * pAllocator); + + IMemInputPin * ConnectedIMemInputPin() + { return m_pInputPin; } + + // Allow the filter to see what allocator we have + // N.B. This does NOT AddRef + IMemAllocator * PeekAllocator() const + { return m_pAllocator; } + + HRESULT CompleteConnect(IPin *pReceivePin); + +}; // CTransInPlaceOutputPin + + +class AM_NOVTABLE CTransInPlaceFilter : public CTransformFilter +{ + +public: + + // map getpin/getpincount for base enum of pins to owner + // override this to return more specialised pin objects + + virtual CBasePin *GetPin(int n); + +public: + + // Set bModifiesData == false if your derived filter does + // not modify the data samples (for instance it's just copying + // them somewhere else or looking at the timestamps). + + CTransInPlaceFilter(TCHAR *, LPUNKNOWN, REFCLSID clsid, HRESULT *, + bool bModifiesData = true); +#ifdef UNICODE + CTransInPlaceFilter(CHAR *, LPUNKNOWN, REFCLSID clsid, HRESULT *, + bool bModifiesData = true); +#endif + // The following are defined to avoid undefined pure virtuals. + // Even if they are never called, they will give linkage warnings/errors + + // We override EnumMediaTypes to bypass the transform class enumerator + // which would otherwise call this. + HRESULT GetMediaType(int iPosition, CMediaType *pMediaType) + { DbgBreak("CTransInPlaceFilter::GetMediaType should never be called"); + return E_UNEXPECTED; + } + + // This is called when we actually have to provide out own allocator. + HRESULT DecideBufferSize(IMemAllocator*, ALLOCATOR_PROPERTIES *); + + // The functions which call this in CTransform are overridden in this + // class to call CheckInputType with the assumption that the type + // does not change. In Debug builds some calls will be made and + // we just ensure that they do not assert. + HRESULT CheckTransform(const CMediaType *mtIn, const CMediaType *mtOut) + { + return S_OK; + }; + + + // ================================================================= + // ----- You may want to override this ----------------------------- + // ================================================================= + + HRESULT CompleteConnect(PIN_DIRECTION dir,IPin *pReceivePin); + + // chance to customize the transform process + virtual HRESULT Receive(IMediaSample *pSample); + + // ================================================================= + // ----- You MUST override these ----------------------------------- + // ================================================================= + + virtual HRESULT Transform(IMediaSample *pSample) PURE; + + // this goes in the factory template table to create new instances + // static CCOMObject * CreateInstance(LPUNKNOWN, HRESULT *); + + +#ifdef PERF + // Override to register performance measurement with a less generic string + // You should do this to avoid confusion with other filters + virtual void RegisterPerfId() + {m_idTransInPlace = MSR_REGISTER(TEXT("TransInPlace"));} +#endif // PERF + + +// implementation details + +protected: +#ifdef __MINGW32_MAJOR_VERSION + IMediaSample * Copy(IMediaSample *pSource); +#else + IMediaSample * CTransInPlaceFilter::Copy(IMediaSample *pSource); +#endif +#ifdef PERF + int m_idTransInPlace; // performance measuring id +#endif // PERF + bool m_bModifiesData; // Does this filter change the data? + + // these hold our input and output pins + + friend class CTransInPlaceInputPin; + friend class CTransInPlaceOutputPin; + + CTransInPlaceInputPin *InputPin() const + { + return (CTransInPlaceInputPin *)m_pInput; + }; + CTransInPlaceOutputPin *OutputPin() const + { + return (CTransInPlaceOutputPin *)m_pOutput; + }; + + // Helper to see if the input and output types match + BOOL TypesMatch() + { + return InputPin()->CurrentMediaType() == + OutputPin()->CurrentMediaType(); + } + + // Are the input and output allocators different? + BOOL UsingDifferentAllocators() const + { + return InputPin()->PeekAllocator() != OutputPin()->PeekAllocator(); + } +}; // CTransInPlaceFilter + +#endif /* __TRANSIP__ */ + diff --git a/videoInputSrcAndDemos/libs/DShow/Include/tune.h b/videoInputSrcAndDemos/libs/DShow/Include/tune.h index 3118bfd..63920f9 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/tune.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/tune.h @@ -1,1107 +1,1107 @@ -//------------------------------------------------------------------------------ -// File: Tune.h -// -// Desc: Additional infrastructure to extend the tuner.idl. Works nicely -// from C++. -// -// Copyright (c) 1999 - 2001, Microsoft Corporation. All rights reserved. -//------------------------------------------------------------------------------ - - -#pragma once - -#ifndef TUNE_H -#define TUNE_H - -#include - -namespace BDATuningModel { - -const long DEFAULT_MIN_CHANNEL = 2; -const long DEFAULT_MAX_CHANNEL = 999; -const long DEFAULT_MIN_FREQUENCY = 535; //bottom us am -const long DEFAULT_MAX_FREQUENCY = 108000; // top us fm -const long DEFAULT_ANALOG_TUNER_COUNTRY_CODE = 1; //usa -const TunerInputType DEFAULT_ANALOG_TUNER_INPUT_TYPE = TunerInputCable; //usa - -typedef CComQIPtr PQTuningSpaceContainer; -typedef CComQIPtr PQTuningSpace; -typedef CComQIPtr PQAnalogRadioTuningSpace; -typedef CComQIPtr PQAnalogTVTuningSpace; -typedef CComQIPtr PQATSCTuningSpace; -typedef CComQIPtr PQTuneRequest; -typedef CComQIPtr PQChannelTuneRequest; -typedef CComQIPtr PQATSCChannelTuneRequest; -typedef CComQIPtr PQLocator; -typedef CComQIPtr PQATSCLocator; -typedef CComQIPtr PQDVBTuningSpace; -typedef CComQIPtr PQDVBTuneRequest; -typedef CComQIPtr PQDVBSLocator; -typedef CComQIPtr PQDVBTLocator; -typedef CComQIPtr PQDVBCLocator; -typedef CComQIPtr PQAuxInTuningSpace; - -// tuning space container -class TNTuningSpaceContainer : public PQTuningSpaceContainer { - TNTuningSpaceContainer() {} - TNTuningSpaceContainer(const PQTuningSpaceContainer &a) : PQTuningSpaceContainer(a) {} - TNTuningSpaceContainer(ITuningSpace *p) : PQTuningSpaceContainer(p) {} - TNTuningSpaceContainer(IUnknown *p) : PQTuningSpaceContainer(p) {} - TNTuningSpaceContainer(const TNTuningSpaceContainer &a) : PQTuningSpaceContainer(a) {} - TNTuningSpaceContainer& operator=(TNTuningSpaceContainer& rhs) { - PQTuningSpaceContainer::operator=(rhs); - return *this; - } - -}; - -// tuning spaces -template class TNTuningSpaceHelper : public TUNINGSPACETYPE { -public: - TNTuningSpaceHelper() {} - TNTuningSpaceHelper(const TUNINGSPACETYPE &a) : TUNINGSPACETYPE(a) {} - TNTuningSpaceHelper(ITuningSpace *p) : TUNINGSPACETYPE(p) {} - TNTuningSpaceHelper(IUnknown *p) : TUNINGSPACETYPE(p) {} - TNTuningSpaceHelper(const TNTuningSpaceHelper &a) : TUNINGSPACETYPE(a) {} - TNTuningSpaceHelper& operator=(TNTuningSpaceHelper& rhs) { - TUNINGSPACETYPE::operator=(rhs); - return *this; - } - TNTuningSpaceHelper& operator=(TUNINGSPACETYPE& rhs) { - TUNINGSPACETYPE::operator=(rhs); - return *this; - } - TNTuningSpaceHelper& operator=(IUnknown *rhs) { - TUNINGSPACETYPE::operator=(rhs); - return *this; - } - TNTuningSpaceHelper& operator=(ITuningSpace *rhs) { - TUNINGSPACETYPE::operator=(rhs); - return *this; - } - bool operator==(TUNINGSPACETYPE& rhs) { - CComBSTR rhsname; - HRESULT hr = rhs->get_UniqueName(&rhsname); - if (FAILED(hr)) { - return false; - } - CComBSTR name; - hr = (*this)->get_UniqueName(&name); - if (FAILED(hr)) { - return false; - } - return name == rhsname; - } - bool operator!=(TUNINGSPACETYPE& rhs) { - return !operator==(rhs); - } - PQTuneRequest CreateTuneRequest() { - PQTuneRequest p; - HRESULT hr = (*this)->CreateTuneRequest(&p); - if (FAILED(hr)) { - return PQTuneRequest(); - } - return p; - } - - PQLocator Locator() { - _ASSERT(*this); - PQLocator ts; - HRESULT hr = (*this)->get_DefaultLocator(&ts); - if (FAILED(hr)) { - return PQLocator(); - } - return ts; - } - - HRESULT Locator(PQLocator& l) { - _ASSERT(*this); - return (*this)->put_Locator(l); - } - - void Clone() { - PQTuningSpace t; - HRESULT hr = (*this)->Clone(&t); - if (FAILED(hr) || !t) { - Release(); // clone failed, clear ourselves - return; - } - TUNINGSPACETYPE::operator=(t); - } - -}; - -typedef TNTuningSpaceHelper TNTuningSpace; - -template class TNAnalogRadioTuningSpaceHelper : public TNTuningSpaceHelper { -public: - TNAnalogRadioTuningSpaceHelper() {} - TNAnalogRadioTuningSpaceHelper(const TUNINGSPACETYPE &a) : TNTuningSpaceHelper(a) {} - TNAnalogRadioTuningSpaceHelper(IUnknown *p) : TNTuningSpaceHelper(p) {} - TNAnalogRadioTuningSpaceHelper(const TNAnalogRadioTuningSpaceHelper &a) : TNTuningSpaceHelper(a) {} - TNAnalogRadioTuningSpaceHelper& operator=(TNAnalogRadioTuningSpaceHelper& rhs) { - TNTuningSpaceHelper::operator=(rhs); - return *this; - } - template TNAnalogRadioTuningSpaceHelper& operator=(TNTuningSpaceHelper& rhs) { - TNTuningSpaceHelper::operator=(TUNINGSPACETYPE(rhs)); - return *this; - } - TNAnalogRadioTuningSpaceHelper& operator=(TUNINGSPACETYPE& rhs) { - TNTuningSpaceHelper::operator=(rhs); - return *this; - } - TNAnalogRadioTuningSpaceHelper& operator=(IUnknown* rhs) { - TNTuningSpaceHelper::operator=(rhs); - return *this; - } - long MaxFrequency() { - _ASSERT(*this); - long freq; - HRESULT hr = (*this)->get_MaxFrequency(&freq); - if (FAILED(hr)) { - freq = DEFAULT_MAX_FREQUENCY; - } - return freq; - } - HRESULT MaxFrequency(long freq) { - _ASSERT(*this); - return (*this)->put_MaxFrequency(freq); - } - long MinFrequency() { - _ASSERT(*this); - long freq; - HRESULT hr = (*this)->get_MinFrequency(&freq); - if (FAILED(hr)) { - freq = DEFAULT_MIN_FREQUENCY; - } - return freq; - } - HRESULT MinFrequency(long freq) { - _ASSERT(*this); - return (*this)->put_MinFrequency(freq); - } -}; -typedef TNAnalogRadioTuningSpaceHelper TNAnalogRadioTuningSpace; - -template class TNAnalogTVTuningSpaceHelper : public TNTuningSpaceHelper { -public: - TNAnalogTVTuningSpaceHelper() {} - TNAnalogTVTuningSpaceHelper(const TUNINGSPACETYPE &a) : TNTuningSpaceHelper(a) {} - TNAnalogTVTuningSpaceHelper(IUnknown *p) : TNTuningSpaceHelper(p) {} - TNAnalogTVTuningSpaceHelper(const TNAnalogTVTuningSpaceHelper &a) : TNTuningSpaceHelper(a) {} - TNAnalogTVTuningSpaceHelper& operator=(TNAnalogTVTuningSpaceHelper& rhs) { - TNTuningSpaceHelper::operator=(rhs); - return *this; - } - template TNAnalogTVTuningSpaceHelper& operator=(TNTuningSpaceHelper& rhs) { - TNTuningSpaceHelper::operator=(TUNINGSPACETYPE(rhs)); - return *this; - } - TNAnalogTVTuningSpaceHelper& operator=(TUNINGSPACETYPE& rhs) { - TNTuningSpaceHelper::operator=(rhs); - return *this; - } - TNAnalogTVTuningSpaceHelper& operator=(IUnknown* rhs) { - TNTuningSpaceHelper::operator=(rhs); - return *this; - } - TunerInputType InputType() { - _ASSERT(*this); - TunerInputType ti; - HRESULT hr = (*this)->get_InputType(&ti); - if (FAILED(hr)) { - ti = DEFAULT_ANALOG_TUNER_INPUT_TYPE; - } - return ti; - } - HRESULT InputType(TunerInputType ti) { - _ASSERT(*this); - return (*this)->put_InputType(&ti); - } - long CountryCode() { - _ASSERT(*this); - long cc; - HRESULT hr = (*this)->get_CountryCode(&cc); - if (FAILED(hr)) { - cc = DEFAULT_ANALOG_TUNER_INPUT_TYPE; - } - return cc; - } - HRESULT CountryCode(long cc) { - _ASSERT(*this); - return (*this)->put_CountryCode(cc); - } - long MinChannel() { - _ASSERT(*this); - long chan; - HRESULT hr = (*this)->get_MinChannel(&chan); - if (FAILED(hr)) { - chan = DEFAULT_MIN_CHANNEL; - } - return chan; - } - HRESULT MinChannel(long chan) { - _ASSERT(*this); - return (*this)->put_MinChannel(chan); - } - long MaxChannel() { - _ASSERT(*this); - long chan; - HRESULT hr = (*this)->get_MaxChannel(&chan); - if (FAILED(hr)) { - chan = DEFAULT_MAX_CHANNEL; - } - return chan; - } - HRESULT MaxChannel(long chan) { - _ASSERT(*this); - return (*this)->put_MaxChannel(chan); - } -}; -typedef TNAnalogTVTuningSpaceHelper TNAnalogTVTuningSpace; - -template class TNAuxInTuningSpaceHelper : public TNTuningSpaceHelper { -public: - TNAuxInTuningSpaceHelper() {} - TNAuxInTuningSpaceHelper(const TUNINGSPACETYPE &a) : TNTuningSpaceHelper(a) {} - TNAuxInTuningSpaceHelper(IUnknown *p) : TNTuningSpaceHelper(p) {} - TNAuxInTuningSpaceHelper(const TNAuxInTuningSpaceHelper &a) : TNTuningSpaceHelper(a) {} - TNAuxInTuningSpaceHelper& operator=(TNAuxInTuningSpaceHelper& rhs) { - TNTuningSpaceHelper::operator=(rhs); - return *this; - } - template TNAuxInTuningSpaceHelper& operator=(TNTuningSpaceHelper& rhs) { - TNTuningSpaceHelper::operator=(TUNINGSPACETYPE(rhs)); - return *this; - } - TNAuxInTuningSpaceHelper& operator=(TUNINGSPACETYPE& rhs) { - TNTuningSpaceHelper::operator=(rhs); - return *this; - } - TNAuxInTuningSpaceHelper& operator=(IUnknown* rhs) { - TNTuningSpaceHelper::operator=(rhs); - return *this; - } -}; -typedef TNAuxInTuningSpaceHelper TNAuxInTuningSpace; - -template class TNATSCTuningSpaceHelper : public TNAnalogTVTuningSpaceHelper { -public: - TNATSCTuningSpaceHelper() {} - TNATSCTuningSpaceHelper(const TUNINGSPACETYPE &a) : TNAnalogTVTuningSpaceHelper(a) {} - TNATSCTuningSpaceHelper(IUnknown *p) : TNAnalogTVTuningSpaceHelper(p) {} - TNATSCTuningSpaceHelper(const TNATSCTuningSpaceHelper &a) : TNAnalogTVTuningSpaceHelper(a) {} - - TNATSCTuningSpaceHelper& operator=(TNATSCTuningSpaceHelper& rhs) { - TNAnalogTVTuningSpaceHelper::operator=(rhs); - return *this; - } - template TNATSCTuningSpaceHelper& operator=(TNTuningSpaceHelper& rhs) { - TNAnalogTVTuningSpaceHelper::operator=(TUNINGSPACETYPE(rhs)); - return *this; - } - TNATSCTuningSpaceHelper& operator=(TUNINGSPACETYPE& rhs) { - TNAnalogTVTuningSpaceHelper::operator=(rhs); - return *this; - } - TNATSCTuningSpaceHelper& operator=(IUnknown* rhs) { - TNAnalogTVTuningSpaceHelper::operator=(rhs); - return *this; - } - long MinMinorChannel() { - _ASSERT(*this); - long chan; - HRESULT hr = (*this)->get_MinMinorChannel(&chan); - if (FAILED(hr)) { - chan = DEFAULT_MIN_CHANNEL; - } - return chan; - } - HRESULT MinMinorChannel(long chan) { - _ASSERT(*this); - return (*this)->put_MinMinorChannel(chan); - } - - long MaxMinorChannel() { - _ASSERT(*this); - long chan; - HRESULT hr = (*this)->get_MaxMinorChannel(&chan); - if (FAILED(hr)) { - chan = DEFAULT_MAX_CHANNEL; - } - return chan; - } - HRESULT MaxMinorChannel(long chan) { - _ASSERT(*this); - return (*this)->put_MaxMinorChannel(chan); - } - long MinPhysicalChannel() { - _ASSERT(*this); - long chan; - HRESULT hr = (*this)->get_MinPhysicalChannel(&chan); - if (FAILED(hr)) { - chan = DEFAULT_MIN_CHANNEL; - } - return chan; - } - HRESULT MinPhysicalChannel(long chan) { - _ASSERT(*this); - return (*this)->put_MinPhysicalChannel(chan); - } - - long MaxPhysicalChannel() { - _ASSERT(*this); - long chan; - HRESULT hr = (*this)->get_MaxPhysicalChannel(&chan); - if (FAILED(hr)) { - chan = DEFAULT_MAX_CHANNEL; - } - return chan; - } - - HRESULT MaxPhysicalChannel(long chan) { - _ASSERT(*this); - return (*this)->put_MaxPhysicalChannel(chan); - } -}; -typedef TNATSCTuningSpaceHelper TNATSCTuningSpace; - -// dvb tuning space -template class TNDVBTuningSpaceHelper : public TNTuningSpaceHelper { -public: - TNDVBTuningSpaceHelper() {} - TNDVBTuningSpaceHelper(const TUNINGSPACETYPE &a) : TNTuningSpaceHelper(a) {} - TNDVBTuningSpaceHelper(IUnknown *p) : TNTuningSpaceHelper(p) {} - TNDVBTuningSpaceHelper(const TNDVBTuningSpaceHelper &a) : TNTuningSpaceHelper(a) {} - TNDVBTuningSpaceHelper& operator=(TNDVBTuningSpaceHelper& rhs) { - TNTuningSpaceHelper::operator=(rhs); - return *this; - } - template TNDVBTuningSpaceHelper& operator=(TNTuningSpaceHelper& rhs) { - TNTuningSpaceHelper::operator=(TUNINGSPACETYPE(rhs)); - return *this; - } - TNDVBTuningSpaceHelper& operator=(TUNINGSPACETYPE& rhs) { - TNTuningSpaceHelper::operator=(rhs); - return *this; - } - TNDVBTuningSpaceHelper& operator=(IUnknown* rhs) { - TNTuningSpaceHelper::operator=(rhs); - return *this; - } - DVBSystemType SystemType() const { - DVBSystemType st; - HRESULT hr = (*this)->get_SystemType(&st); - if (FAILED(hr)) { - return DVB_Cable; - } - return st; - } - HRESULT SystemType(DVBSystemType st) { - _ASSERT(*this); - return (*this)->put_SystemType(st); - } -}; -typedef TNDVBTuningSpaceHelper TNDVBTuningSpace; - -// locators -template class TNLocatorHelper : public LOCATORTYPE { -public: - TNLocatorHelper() {} - TNLocatorHelper(const LOCATORTYPE &a) : LOCATORTYPE(a) {} - TNLocatorHelper(IUnknown *p) : LOCATORTYPE(p) {} - TNLocatorHelper(const TNLocatorHelper &a) : LOCATORTYPE(a) {} - TNLocatorHelper(ILocator *p) : LOCATORTYPE(p) {} - TNLocatorHelper& operator=(TNLocatorHelper& rhs) { - LOCATORTYPE::operator=(rhs); - return *this; - } - TNLocatorHelper& operator=(LOCATORTYPE& rhs) { - LOCATORTYPE::operator=(rhs); - return *this; - } - TNLocatorHelper& operator=(ILocator* rhs) { - LOCATORTYPE::operator=(rhs); - return *this; - } - TNLocatorHelper& operator=(IUnknown* rhs) { - LOCATORTYPE::operator=(rhs); - return *this; - } - - void Clone() { - PQLocator t; - HRESULT hr = (*this)->Clone(&t); - if (FAILED(hr) || !t) { - Release(); // clone failed, clear ourselves - return; - } - LOCATORTYPE::operator=(t); - } - - long CarrierFrequency() { - _ASSERT(*this); - long f; - HRESULT hr = (*this)->get_CarrierFrequency(&f); - if (FAILED(hr)) { - return -1; - } - return f; - } - HRESULT CarrierFrequency(long f) { - _ASSERT(*this); - return (*this)->put_CarrierFrequency(f); - } - - FECMethod InnerFEC() { - _ASSERT(*this); - FECMethod f; - HRESULT hr = (*this)->get_InnerFEC(&f); - if (FAILED(hr)) { - return BDA_FEC_METHOD_NOT_SET; - } - return f; - } - HRESULT InnerFEC(FECMethod f) { - _ASSERT(*this); - return (*this)->put_InnerFEC(f); - } - BinaryConvolutionCodeRate InnerFECRate() { - _ASSERT(*this); - BinaryConvolutionCodeRate f; - HRESULT hr = (*this)->get_InnerFECRate(&f); - if (FAILED(hr)) { - return BDA_BCC_RATE_NOT_SET; - } - return f; - } - HRESULT InnerFECRate(BinaryConvolutionCodeRate f) { - _ASSERT(*this); - return (*this)->put_InnerFECRate(f); - } - FECMethod OuterFEC() { - _ASSERT(*this); - FECMethod f; - HRESULT hr = (*this)->get_OuterFEC(&f); - if (FAILED(hr)) { - return BDA_FEC_METHOD_NOT_SET; - } - return f; - } - HRESULT OuterFEC(FECMethod f) { - _ASSERT(*this); - return (*this)->put_OuterFEC(f); - } - BinaryConvolutionCodeRate OuterFECRate() { - _ASSERT(*this); - BinaryConvolutionCodeRate f; - HRESULT hr = (*this)->get_OuterFECRate(&f); - if (FAILED(hr)) { - return BDA_BCC_RATE_NOT_SET; - } - return f; - } - HRESULT OuterFECRate(BinaryConvolutionCodeRate f) { - _ASSERT(*this); - return (*this)->put_OuterFECRate(f); - } - ModulationType Modulation() { - _ASSERT(*this); - ModulationType f; - HRESULT hr = (*this)->get_Modulation(&f); - if (FAILED(hr)) { - return BDA_MOD_NOT_SET; - } - return f; - } - HRESULT Modulation(ModulationType f) { - _ASSERT(*this); - return (*this)->put_Modulation(f); - } - - long SymbolRate() { - _ASSERT(*this); - long f; - HRESULT hr = (*this)->get_SymbolRate(&f); - if (FAILED(hr)) { - return -1; - } - return f; - } - HRESULT SymbolRate(long f) { - _ASSERT(*this); - return (*this)->put_SymbolRate(f); - } - -}; -typedef TNLocatorHelper TNLocator; - -template class TNATSCLocatorHelper : public TNLocatorHelper { -public: - TNATSCLocatorHelper() {} - TNATSCLocatorHelper(const LOCATORTYPE &a) : TNLocatorHelper(a) {} - TNATSCLocatorHelper(IUnknown *p) : TNLocatorHelper(p) {} - TNATSCLocatorHelper(const TNATSCLocatorHelper &a) : TNLocatorHelper(a) {} - TNATSCLocatorHelper(IATSCLocator *p) : TNLocatorHelper(p) {} - TNATSCLocatorHelper(const TNLocatorHelper &a) : TNLocatorHelper(a) {} - TNATSCLocatorHelper& operator=(TNATSCLocatorHelper& rhs) { - TNLocatorHelper::operator=(rhs); - return *this; - } - TNATSCLocatorHelper& operator=(TNLocatorHelper& rhs) { - TNLocatorHelper::operator=(rhs); - return *this; - } - TNATSCLocatorHelper& operator=(LOCATORTYPE& rhs) { - TNLocatorHelper::operator=(rhs); - return *this; - } - TNATSCLocatorHelper& operator=(IATSCLocator* rhs) { - TNLocatorHelper::operator=(rhs); - return *this; - } - TNATSCLocatorHelper& operator=(IUnknown* rhs) { - TNLocatorHelper::operator=(rhs); - return *this; - } - - long PhysicalChannel() { - _ASSERT(*this); - long pc; - HRESULT hr = (*this)->get_PhysicalChannel(&pc); - if (FAILED(hr)) { - return -1; - } - return pc; - } - HRESULT PhysicalChannel(long pc) { - _ASSERT(*this); - return (*this)->put_PhysicalChannel(pc); - } - - long TSID() { - _ASSERT(*this); - long pc; - HRESULT hr = (*this)->get_TSID(&pc); - if (FAILED(hr)) { - return -1; - } - return pc; - } - HRESULT TSID(long pc) { - _ASSERT(*this); - return (*this)->put_TSID(pc); - } - - long ProgramNumber() { - _ASSERT(*this); - long pc; - HRESULT hr = (*this)->get_ProgramNumber(&pc); - if (FAILED(hr)) { - return -1; - } - return pc; - } - HRESULT ProgramNumber(long pc) { - _ASSERT(*this); - return (*this)->put_ProgramNumber(pc); - } -}; -typedef TNATSCLocatorHelper TNATSCLocator; - -template class TNDVBSLocatorHelper : public TNLocatorHelper { -public: - TNDVBSLocatorHelper() {} - TNDVBSLocatorHelper(const LOCATORTYPE &a) : TNLocatorHelper(a) {} - TNDVBSLocatorHelper(IUnknown *p) : TNLocatorHelper(p) {} - TNDVBSLocatorHelper(const TNDVBSLocatorHelper &a) : TNLocatorHelper(a) {} - TNDVBSLocatorHelper(IDVBSLocator *p) : TNLocatorHelper(p) {} - TNDVBSLocatorHelper(const TNLocatorHelper &a) : TNLocatorHelper(a) {} - TNDVBSLocatorHelper& operator=(TNDVBSLocatorHelper& rhs) { - TNLocatorHelper::operator=(rhs); - return *this; - } - TNDVBSLocatorHelper& operator=(TNLocatorHelper& rhs) { - TNLocatorHelper::operator=(rhs); - return *this; - } - TNDVBSLocatorHelper& operator=(LOCATORTYPE& rhs) { - TNLocatorHelper::operator=(rhs); - return *this; - } - TNDVBSLocatorHelper& operator=(IDVBSLocator* rhs) { - TNLocatorHelper::operator=(rhs); - return *this; - } - TNDVBSLocatorHelper& operator=(IUnknown* rhs) { - TNLocatorHelper::operator=(rhs); - return *this; - } - - Polarisation SignalPolarisation() { - _ASSERT(*this); - Polarisation pc; - HRESULT hr = (*this)->get_SignalPolarisation(&pc); - if (FAILED(hr)) { - return -1; - } - return pc; - } - HRESULT SignalPolarisation(Polarisation pc) { - _ASSERT(*this); - return (*this)->put_SignalPolarisation(pc); - } - - VARIANT_BOOL WestPosition() { - _ASSERT(*this); - VARIANT_BOOL pc; - HRESULT hr = (*this)->get_WestPosition(&pc); - if (FAILED(hr)) { - return -1; - } - return pc; - } - HRESULT WestPosition(VARIANT_BOOL pc) { - _ASSERT(*this); - return (*this)->put_WestPosition(pc); - } - - long OrbitalPosition() { - _ASSERT(*this); - long pc; - HRESULT hr = (*this)->get_OrbitalPosition(&pc); - if (FAILED(hr)) { - return -1; - } - return pc; - } - HRESULT OrbitalPosition(long pc) { - _ASSERT(*this); - return (*this)->put_OrbitalPosition(pc); - } - - long Azimuth() { - _ASSERT(*this); - long pc; - HRESULT hr = (*this)->get_Azimuth(&pc); - if (FAILED(hr)) { - return -1; - } - return pc; - } - HRESULT Azimuth(long pc) { - _ASSERT(*this); - return (*this)->put_Azimuth(pc); - } - - long Elevation() { - _ASSERT(*this); - long pc; - HRESULT hr = (*this)->get_Elevation(&pc); - if (FAILED(hr)) { - return -1; - } - return pc; - } - HRESULT Elevation(long pc) { - _ASSERT(*this); - return (*this)->put_Elevation(pc); - } - -}; -typedef TNDVBSLocatorHelper TNDVBSLocator; - - - -template class TNDVBTLocatorHelper : public TNLocatorHelper { -public: - TNDVBTLocatorHelper() {} - TNDVBTLocatorHelper(const LOCATORTYPE &a) : TNLocatorHelper(a) {} - TNDVBTLocatorHelper(IUnknown *p) : TNLocatorHelper(p) {} - TNDVBTLocatorHelper(const TNDVBTLocatorHelper &a) : TNLocatorHelper(a) {} - TNDVBTLocatorHelper(IDVBTLocator *p) : TNLocatorHelper(p) {} - TNDVBTLocatorHelper(const TNLocatorHelper &a) : TNLocatorHelper(a) {} - TNDVBTLocatorHelper& operator=(TNDVBTLocatorHelper& rhs) { - TNLocatorHelper::operator=(rhs); - return *this; - } - TNDVBTLocatorHelper& operator=(TNLocatorHelper& rhs) { - TNLocatorHelper::operator=(rhs); - return *this; - } - TNDVBTLocatorHelper& operator=(LOCATORTYPE& rhs) { - TNLocatorHelper::operator=(rhs); - return *this; - } - TNDVBTLocatorHelper& operator=(IDVBTLocator* rhs) { - TNLocatorHelper::operator=(rhs); - return *this; - } - TNDVBTLocatorHelper& operator=(IUnknown* rhs) { - TNLocatorHelper::operator=(rhs); - return *this; - } - - long BandWidth() { - _ASSERT(*this); - long pc; - HRESULT hr = (*this)->get_BandWidth(&pc); - if (FAILED(hr)) { - return -1; - } - return pc; - } - HRESULT BandWidth(long pc) { - _ASSERT(*this); - return (*this)->put_BandWidth(pc); - } - - FECMethod LPInnerFec() { - _ASSERT(*this); - FECMethod pc; - HRESULT hr = (*this)->get_LPInnerFec(&pc); - if (FAILED(hr)) { - return -1; - } - return pc; - } - HRESULT LPInnerFec(FECMethod pc) { - _ASSERT(*this); - return (*this)->put_LPInnerFec(pc); - } - - BinaryConvolutionCodeRate LPInnerFecRate() { - _ASSERT(*this); - BinaryConvolutionCodeRate pc; - HRESULT hr = (*this)->get_LPInnerFecRate(&pc); - if (FAILED(hr)) { - return -1; - } - return pc; - } - HRESULT LPInnerFecRate(BinaryConvolutionCodeRate pc) { - _ASSERT(*this); - return (*this)->put_LPInnerFecRate(pc); - } - - HierarchyAlpha HAlpha() { - _ASSERT(*this); - HierarchyAlpha pc; - HRESULT hr = (*this)->get_HAlpha(&pc); - if (FAILED(hr)) { - return -1; - } - return pc; - } - HRESULT HAlpha(HierarchyAlpha pc) { - _ASSERT(*this); - return (*this)->put_HAlpha(pc); - } - - GuardInterval Guard() { - _ASSERT(*this); - GuardInterval pc; - HRESULT hr = (*this)->get_Guard(&pc); - if (FAILED(hr)) { - return -1; - } - return pc; - } - HRESULT Guard(GuardInterval pc) { - _ASSERT(*this); - return (*this)->put_Guard(pc); - } - - TransmissionMode Mode() { - _ASSERT(*this); - TransmissionMode pc; - HRESULT hr = (*this)->get_Mode(&pc); - if (FAILED(hr)) { - return -1; - } - return pc; - } - HRESULT Mode(TransmissionMode pc) { - _ASSERT(*this); - return (*this)->put_Mode(pc); - } - - VARIANT_BOOL OtherFrequencyInUse() { - _ASSERT(*this); - VARIANT_BOOL pc; - HRESULT hr = (*this)->get_OtherFrequencyInUse(&pc); - if (FAILED(hr)) { - return -1; - } - return pc; - } - HRESULT OtherFrequencyInUse(VARIANT_BOOL pc) { - _ASSERT(*this); - return (*this)->put_OtherFrequencyInUse(pc); - } -}; -typedef TNDVBTLocatorHelper TNDVBTLocator; - -template class TNDVBCLocatorHelper : public TNLocatorHelper { -public: - TNDVBCLocatorHelper() {} - TNDVBCLocatorHelper(const LOCATORTYPE &a) : TNLocatorHelper(a) {} - TNDVBCLocatorHelper(IUnknown *p) : TNLocatorHelper(p) {} - TNDVBCLocatorHelper(const TNDVBCLocatorHelper &a) : TNLocatorHelper(a) {} - TNDVBCLocatorHelper(IDVBCLocator *p) : TNLocatorHelper(p) {} - TNDVBCLocatorHelper(const TNLocatorHelper &a) : TNLocatorHelper(a) {} - TNDVBCLocatorHelper& operator=(TNDVBCLocatorHelper& rhs) { - TNLocatorHelper::operator=(rhs); - return *this; - } - TNDVBCLocatorHelper& operator=(TNLocatorHelper& rhs) { - TNLocatorHelper::operator=(rhs); - return *this; - } - TNDVBCLocatorHelper& operator=(LOCATORTYPE& rhs) { - TNLocatorHelper::operator=(rhs); - return *this; - } - TNDVBCLocatorHelper& operator=(IDVBCLocator* rhs) { - TNLocatorHelper::operator=(rhs); - return *this; - } - TNDVBCLocatorHelper& operator=(IUnknown* rhs) { - TNLocatorHelper::operator=(rhs); - return *this; - } - -}; -typedef TNDVBCLocatorHelper TNDVBCLocator; - -// tune requests -template class TNTuneRequestHelper : public TUNEREQUESTTYPE { -public: - TNTuneRequestHelper() {} - TNTuneRequestHelper(const TUNEREQUESTTYPE &a) : TUNEREQUESTTYPE(a) {} - TNTuneRequestHelper(IUnknown *p) : TUNEREQUESTTYPE(p) {} - TNTuneRequestHelper(const TNTuneRequestHelper &a) : TUNEREQUESTTYPE(a) {} - TNTuneRequestHelper(ITuneRequest *p) : TUNEREQUESTTYPE(p) {} - TNTuneRequestHelper& operator=(TNTuneRequestHelper& rhs) { - TUNEREQUESTTYPE::operator=(rhs); - return *this; - } - TNTuneRequestHelper& operator=(TUNEREQUESTTYPE& rhs) { - TUNEREQUESTTYPE::operator=(rhs); - return *this; - } - TNTuneRequestHelper& operator=(ITuneRequest* rhs) { - TUNEREQUESTTYPE::operator=(rhs); - return *this; - } - TNTuneRequestHelper& operator=(IUnknown* rhs) { - TUNEREQUESTTYPE::operator=(rhs); - return *this; - } - // this function creates a new instance of the base ITuneRequest* and copies - // all the values of the current ITuneRequest and sets this to the new one - // this provides the value semantics needed by the network providers - void Clone() { - PQTuneRequest t; - HRESULT hr = (*this)->Clone(&t); - if (FAILED(hr) || !t) { - Release(); // clone failed, clear ourselves - return; - } - TUNEREQUESTTYPE::operator=(t); - } - - PQTuningSpace TuningSpace() { - _ASSERT(*this); - PQTuningSpace ts; - HRESULT hr = (*this)->get_TuningSpace(&ts); - if (FAILED(hr)) { - return PQTuningSpace(); - } - return ts; - } - - LOCATORTYPE Locator() { - _ASSERT(*this); - PQLocator pc; - HRESULT hr = (*this)->get_Locator(&pc); - if (FAILED(hr)) { - return PQLocator().p; - } - return pc.p; - } - HRESULT Locator(LOCATORTYPE& pc) { - _ASSERT(*this); - return (*this)->put_Locator(pc); - } -}; - -typedef TNTuneRequestHelper TNTuneRequest; - -template class TNChannelTuneRequestHelper : public TNTuneRequestHelper { -public: - TNChannelTuneRequestHelper() {} - TNChannelTuneRequestHelper(const TNTuneRequest &a) : TNTuneRequestHelper(a) {} - TNChannelTuneRequestHelper(IChannelTuneRequest *p) : TNTuneRequestHelper(p) {} - TNChannelTuneRequestHelper(IUnknown *p) : TNTuneRequestHelper(p) {} - TNChannelTuneRequestHelper(const TNTuneRequestHelper &a) : TNTuneRequestHelper(a) {} - TNChannelTuneRequestHelper(const TNChannelTuneRequestHelper &a) : TNTuneRequestHelper(a) {} - TNChannelTuneRequestHelper& operator=(TNChannelTuneRequestHelper& rhs) { - TNTuneRequestHelper::operator=(rhs); - return *this; - } - template TNChannelTuneRequestHelper& operator=(TNTuneRequestHelper& rhs) { - TNTuneRequestHelper::operator=(TUNEREQUESTTYPE(rhs)); - return *this; - } - TNChannelTuneRequestHelper& operator=(TUNEREQUESTTYPE& rhs) { - TNTuneRequestHelper::operator=(rhs); - return *this; - } - TNChannelTuneRequestHelper& operator=(IChannelTuneRequest* rhs) { - TNTuneRequestHelper::operator=(rhs); - return *this; - } - TNChannelTuneRequestHelper& operator=(IUnknown* rhs) { - TUNEREQUESTTYPE::operator=(rhs); - return *this; - } - long Channel() { - _ASSERT(*this); - long c; - HRESULT hr = (*this)->get_Channel(&c); - if (FAILED(hr)) { - return -1; - } - return c; - } - HRESULT Channel(long c) { - _ASSERT(*this); - return (*this)->put_Channel(c); - } -}; - -typedef TNChannelTuneRequestHelper TNChannelTuneRequest; - -template class TNATSCChannelTuneRequestHelper : public TNChannelTuneRequestHelper { -public: - TNATSCChannelTuneRequestHelper() {} - TNATSCChannelTuneRequestHelper(const TNTuneRequest &a) : TNChannelTuneRequestHelper(a) {} - TNATSCChannelTuneRequestHelper(IATSCChannelTuneRequest *p) : TNChannelTuneRequestHelper(p) {} - TNATSCChannelTuneRequestHelper(IUnknown *p) : TNChannelTuneRequestHelper(p) {} - TNATSCChannelTuneRequestHelper(const TNChannelTuneRequestHelper &a) : TNChannelTuneRequestHelper(a) {} - TNATSCChannelTuneRequestHelper(const TNATSCChannelTuneRequestHelper &a) : TNChannelTuneRequestHelper(a) {} - TNATSCChannelTuneRequestHelper& operator=(TNATSCChannelTuneRequestHelper& rhs) { - TNChannelTuneRequestHelper::operator=(rhs); - return *this; - } - templateTNATSCChannelTuneRequestHelper& operator=(TNTuneRequestHelper& rhs) { - TNChannelTuneRequestHelper::operator=(TR(rhs)); - return *this; - } - TNATSCChannelTuneRequestHelper& operator=(TUNEREQUESTTYPE& rhs) { - TNChannelTuneRequestHelper::operator=(rhs); - return *this; - } - TNATSCChannelTuneRequestHelper& operator=(IATSCChannelTuneRequest *rhs) { - TNChannelTuneRequestHelper::operator=(rhs); - return *this; - } - TNTuneRequestHelper& operator=(IUnknown* rhs) { - TUNEREQUESTTYPE::operator=(rhs); - return *this; - } - long MinorChannel() { - _ASSERT(*this); - long mc; - HRESULT hr = (*this)->get_MinorChannel(&mc); - if (FAILED(hr)) { - return -1; - } - return mc; - } - HRESULT MinorChannel(long mc) { - _ASSERT(*this); - return (*this)->put_MinorChannel(mc); - } -}; -typedef TNATSCChannelTuneRequestHelper TNATSCChannelTuneRequest; - -template class TNDVBTuneRequestHelper : public TNTuneRequestHelper { -public: - TNDVBTuneRequestHelper() {} - TNDVBTuneRequestHelper(const TNTuneRequest &a) : TNTuneRequestHelper(a) {} - TNDVBTuneRequestHelper(IDVBTuneRequest *p) : TNTuneRequestHelper(p) {} - TNDVBTuneRequestHelper(IUnknown *p) : TNTuneRequestHelper(p) {} - TNDVBTuneRequestHelper(const TNTuneRequestHelper &a) : TNTuneRequestHelper(a) {} - TNDVBTuneRequestHelper(const TNDVBTuneRequestHelper &a) : TNTuneRequestHelper(a) {} - TNDVBTuneRequestHelper& operator=(TNDVBTuneRequestHelper& rhs) { - TNTuneRequestHelper::operator=(rhs); - return *this; - } - template TNDVBTuneRequestHelper& operator=(TNTuneRequestHelper& rhs) { - TNTuneRequestHelper::operator=(TUNEREQUESTTYPE(rhs)); - return *this; - } - TNDVBTuneRequestHelper& operator=(TUNEREQUESTTYPE& rhs) { - TNTuneRequestHelper::operator=(rhs); - return *this; - } - TNDVBTuneRequestHelper& operator=(IDVBTuneRequest* rhs) { - TNTuneRequestHelper::operator=(rhs); - return *this; - } - TNDVBTuneRequestHelper& operator=(IUnknown* rhs) { - TUNEREQUESTTYPE::operator=(rhs); - return *this; - } - long ONID() { - _ASSERT(*this); - long c; - HRESULT hr = (*this)->get_ONID(&c); - if (FAILED(hr)) { - return -1; - } - return c; - } - HRESULT ONID(long c) { - _ASSERT(*this); - return (*this)->put_ONID(c); - } - long TSID() { - _ASSERT(*this); - long c; - HRESULT hr = (*this)->get_TSID(&c); - if (FAILED(hr)) { - return -1; - } - return c; - } - HRESULT TSID(long c) { - _ASSERT(*this); - return (*this)->put_TSID(c); - } - long SID() { - _ASSERT(*this); - long c; - HRESULT hr = (*this)->get_SID(&c); - if (FAILED(hr)) { - return -1; - } - return c; - } - HRESULT SID(long c) { - _ASSERT(*this); - return (*this)->put_SID(c); - } -}; -typedef TNDVBTuneRequestHelper TNDVBTuneRequest; -}; // namespace - -#ifndef NO_DEFAULT_BDATUNINGMODEL_NAMESPACE -using namespace BDATuningModel; -#endif - -#endif -// end of file - tune.h +//------------------------------------------------------------------------------ +// File: Tune.h +// +// Desc: Additional infrastructure to extend the tuner.idl. Works nicely +// from C++. +// +// Copyright (c) 1999 - 2001, Microsoft Corporation. All rights reserved. +//------------------------------------------------------------------------------ + + +#pragma once + +#ifndef TUNE_H +#define TUNE_H + +#include + +namespace BDATuningModel { + +const long DEFAULT_MIN_CHANNEL = 2; +const long DEFAULT_MAX_CHANNEL = 999; +const long DEFAULT_MIN_FREQUENCY = 535; //bottom us am +const long DEFAULT_MAX_FREQUENCY = 108000; // top us fm +const long DEFAULT_ANALOG_TUNER_COUNTRY_CODE = 1; //usa +const TunerInputType DEFAULT_ANALOG_TUNER_INPUT_TYPE = TunerInputCable; //usa + +typedef CComQIPtr PQTuningSpaceContainer; +typedef CComQIPtr PQTuningSpace; +typedef CComQIPtr PQAnalogRadioTuningSpace; +typedef CComQIPtr PQAnalogTVTuningSpace; +typedef CComQIPtr PQATSCTuningSpace; +typedef CComQIPtr PQTuneRequest; +typedef CComQIPtr PQChannelTuneRequest; +typedef CComQIPtr PQATSCChannelTuneRequest; +typedef CComQIPtr PQLocator; +typedef CComQIPtr PQATSCLocator; +typedef CComQIPtr PQDVBTuningSpace; +typedef CComQIPtr PQDVBTuneRequest; +typedef CComQIPtr PQDVBSLocator; +typedef CComQIPtr PQDVBTLocator; +typedef CComQIPtr PQDVBCLocator; +typedef CComQIPtr PQAuxInTuningSpace; + +// tuning space container +class TNTuningSpaceContainer : public PQTuningSpaceContainer { + TNTuningSpaceContainer() {} + TNTuningSpaceContainer(const PQTuningSpaceContainer &a) : PQTuningSpaceContainer(a) {} + TNTuningSpaceContainer(ITuningSpace *p) : PQTuningSpaceContainer(p) {} + TNTuningSpaceContainer(IUnknown *p) : PQTuningSpaceContainer(p) {} + TNTuningSpaceContainer(const TNTuningSpaceContainer &a) : PQTuningSpaceContainer(a) {} + TNTuningSpaceContainer& operator=(TNTuningSpaceContainer& rhs) { + PQTuningSpaceContainer::operator=(rhs); + return *this; + } + +}; + +// tuning spaces +template class TNTuningSpaceHelper : public TUNINGSPACETYPE { +public: + TNTuningSpaceHelper() {} + TNTuningSpaceHelper(const TUNINGSPACETYPE &a) : TUNINGSPACETYPE(a) {} + TNTuningSpaceHelper(ITuningSpace *p) : TUNINGSPACETYPE(p) {} + TNTuningSpaceHelper(IUnknown *p) : TUNINGSPACETYPE(p) {} + TNTuningSpaceHelper(const TNTuningSpaceHelper &a) : TUNINGSPACETYPE(a) {} + TNTuningSpaceHelper& operator=(TNTuningSpaceHelper& rhs) { + TUNINGSPACETYPE::operator=(rhs); + return *this; + } + TNTuningSpaceHelper& operator=(TUNINGSPACETYPE& rhs) { + TUNINGSPACETYPE::operator=(rhs); + return *this; + } + TNTuningSpaceHelper& operator=(IUnknown *rhs) { + TUNINGSPACETYPE::operator=(rhs); + return *this; + } + TNTuningSpaceHelper& operator=(ITuningSpace *rhs) { + TUNINGSPACETYPE::operator=(rhs); + return *this; + } + bool operator==(TUNINGSPACETYPE& rhs) { + CComBSTR rhsname; + HRESULT hr = rhs->get_UniqueName(&rhsname); + if (FAILED(hr)) { + return false; + } + CComBSTR name; + hr = (*this)->get_UniqueName(&name); + if (FAILED(hr)) { + return false; + } + return name == rhsname; + } + bool operator!=(TUNINGSPACETYPE& rhs) { + return !operator==(rhs); + } + PQTuneRequest CreateTuneRequest() { + PQTuneRequest p; + HRESULT hr = (*this)->CreateTuneRequest(&p); + if (FAILED(hr)) { + return PQTuneRequest(); + } + return p; + } + + PQLocator Locator() { + _ASSERT(*this); + PQLocator ts; + HRESULT hr = (*this)->get_DefaultLocator(&ts); + if (FAILED(hr)) { + return PQLocator(); + } + return ts; + } + + HRESULT Locator(PQLocator& l) { + _ASSERT(*this); + return (*this)->put_Locator(l); + } + + void Clone() { + PQTuningSpace t; + HRESULT hr = (*this)->Clone(&t); + if (FAILED(hr) || !t) { + Release(); // clone failed, clear ourselves + return; + } + TUNINGSPACETYPE::operator=(t); + } + +}; + +typedef TNTuningSpaceHelper TNTuningSpace; + +template class TNAnalogRadioTuningSpaceHelper : public TNTuningSpaceHelper { +public: + TNAnalogRadioTuningSpaceHelper() {} + TNAnalogRadioTuningSpaceHelper(const TUNINGSPACETYPE &a) : TNTuningSpaceHelper(a) {} + TNAnalogRadioTuningSpaceHelper(IUnknown *p) : TNTuningSpaceHelper(p) {} + TNAnalogRadioTuningSpaceHelper(const TNAnalogRadioTuningSpaceHelper &a) : TNTuningSpaceHelper(a) {} + TNAnalogRadioTuningSpaceHelper& operator=(TNAnalogRadioTuningSpaceHelper& rhs) { + TNTuningSpaceHelper::operator=(rhs); + return *this; + } + template TNAnalogRadioTuningSpaceHelper& operator=(TNTuningSpaceHelper& rhs) { + TNTuningSpaceHelper::operator=(TUNINGSPACETYPE(rhs)); + return *this; + } + TNAnalogRadioTuningSpaceHelper& operator=(TUNINGSPACETYPE& rhs) { + TNTuningSpaceHelper::operator=(rhs); + return *this; + } + TNAnalogRadioTuningSpaceHelper& operator=(IUnknown* rhs) { + TNTuningSpaceHelper::operator=(rhs); + return *this; + } + long MaxFrequency() { + _ASSERT(*this); + long freq; + HRESULT hr = (*this)->get_MaxFrequency(&freq); + if (FAILED(hr)) { + freq = DEFAULT_MAX_FREQUENCY; + } + return freq; + } + HRESULT MaxFrequency(long freq) { + _ASSERT(*this); + return (*this)->put_MaxFrequency(freq); + } + long MinFrequency() { + _ASSERT(*this); + long freq; + HRESULT hr = (*this)->get_MinFrequency(&freq); + if (FAILED(hr)) { + freq = DEFAULT_MIN_FREQUENCY; + } + return freq; + } + HRESULT MinFrequency(long freq) { + _ASSERT(*this); + return (*this)->put_MinFrequency(freq); + } +}; +typedef TNAnalogRadioTuningSpaceHelper TNAnalogRadioTuningSpace; + +template class TNAnalogTVTuningSpaceHelper : public TNTuningSpaceHelper { +public: + TNAnalogTVTuningSpaceHelper() {} + TNAnalogTVTuningSpaceHelper(const TUNINGSPACETYPE &a) : TNTuningSpaceHelper(a) {} + TNAnalogTVTuningSpaceHelper(IUnknown *p) : TNTuningSpaceHelper(p) {} + TNAnalogTVTuningSpaceHelper(const TNAnalogTVTuningSpaceHelper &a) : TNTuningSpaceHelper(a) {} + TNAnalogTVTuningSpaceHelper& operator=(TNAnalogTVTuningSpaceHelper& rhs) { + TNTuningSpaceHelper::operator=(rhs); + return *this; + } + template TNAnalogTVTuningSpaceHelper& operator=(TNTuningSpaceHelper& rhs) { + TNTuningSpaceHelper::operator=(TUNINGSPACETYPE(rhs)); + return *this; + } + TNAnalogTVTuningSpaceHelper& operator=(TUNINGSPACETYPE& rhs) { + TNTuningSpaceHelper::operator=(rhs); + return *this; + } + TNAnalogTVTuningSpaceHelper& operator=(IUnknown* rhs) { + TNTuningSpaceHelper::operator=(rhs); + return *this; + } + TunerInputType InputType() { + _ASSERT(*this); + TunerInputType ti; + HRESULT hr = (*this)->get_InputType(&ti); + if (FAILED(hr)) { + ti = DEFAULT_ANALOG_TUNER_INPUT_TYPE; + } + return ti; + } + HRESULT InputType(TunerInputType ti) { + _ASSERT(*this); + return (*this)->put_InputType(&ti); + } + long CountryCode() { + _ASSERT(*this); + long cc; + HRESULT hr = (*this)->get_CountryCode(&cc); + if (FAILED(hr)) { + cc = DEFAULT_ANALOG_TUNER_INPUT_TYPE; + } + return cc; + } + HRESULT CountryCode(long cc) { + _ASSERT(*this); + return (*this)->put_CountryCode(cc); + } + long MinChannel() { + _ASSERT(*this); + long chan; + HRESULT hr = (*this)->get_MinChannel(&chan); + if (FAILED(hr)) { + chan = DEFAULT_MIN_CHANNEL; + } + return chan; + } + HRESULT MinChannel(long chan) { + _ASSERT(*this); + return (*this)->put_MinChannel(chan); + } + long MaxChannel() { + _ASSERT(*this); + long chan; + HRESULT hr = (*this)->get_MaxChannel(&chan); + if (FAILED(hr)) { + chan = DEFAULT_MAX_CHANNEL; + } + return chan; + } + HRESULT MaxChannel(long chan) { + _ASSERT(*this); + return (*this)->put_MaxChannel(chan); + } +}; +typedef TNAnalogTVTuningSpaceHelper TNAnalogTVTuningSpace; + +template class TNAuxInTuningSpaceHelper : public TNTuningSpaceHelper { +public: + TNAuxInTuningSpaceHelper() {} + TNAuxInTuningSpaceHelper(const TUNINGSPACETYPE &a) : TNTuningSpaceHelper(a) {} + TNAuxInTuningSpaceHelper(IUnknown *p) : TNTuningSpaceHelper(p) {} + TNAuxInTuningSpaceHelper(const TNAuxInTuningSpaceHelper &a) : TNTuningSpaceHelper(a) {} + TNAuxInTuningSpaceHelper& operator=(TNAuxInTuningSpaceHelper& rhs) { + TNTuningSpaceHelper::operator=(rhs); + return *this; + } + template TNAuxInTuningSpaceHelper& operator=(TNTuningSpaceHelper& rhs) { + TNTuningSpaceHelper::operator=(TUNINGSPACETYPE(rhs)); + return *this; + } + TNAuxInTuningSpaceHelper& operator=(TUNINGSPACETYPE& rhs) { + TNTuningSpaceHelper::operator=(rhs); + return *this; + } + TNAuxInTuningSpaceHelper& operator=(IUnknown* rhs) { + TNTuningSpaceHelper::operator=(rhs); + return *this; + } +}; +typedef TNAuxInTuningSpaceHelper TNAuxInTuningSpace; + +template class TNATSCTuningSpaceHelper : public TNAnalogTVTuningSpaceHelper { +public: + TNATSCTuningSpaceHelper() {} + TNATSCTuningSpaceHelper(const TUNINGSPACETYPE &a) : TNAnalogTVTuningSpaceHelper(a) {} + TNATSCTuningSpaceHelper(IUnknown *p) : TNAnalogTVTuningSpaceHelper(p) {} + TNATSCTuningSpaceHelper(const TNATSCTuningSpaceHelper &a) : TNAnalogTVTuningSpaceHelper(a) {} + + TNATSCTuningSpaceHelper& operator=(TNATSCTuningSpaceHelper& rhs) { + TNAnalogTVTuningSpaceHelper::operator=(rhs); + return *this; + } + template TNATSCTuningSpaceHelper& operator=(TNTuningSpaceHelper& rhs) { + TNAnalogTVTuningSpaceHelper::operator=(TUNINGSPACETYPE(rhs)); + return *this; + } + TNATSCTuningSpaceHelper& operator=(TUNINGSPACETYPE& rhs) { + TNAnalogTVTuningSpaceHelper::operator=(rhs); + return *this; + } + TNATSCTuningSpaceHelper& operator=(IUnknown* rhs) { + TNAnalogTVTuningSpaceHelper::operator=(rhs); + return *this; + } + long MinMinorChannel() { + _ASSERT(*this); + long chan; + HRESULT hr = (*this)->get_MinMinorChannel(&chan); + if (FAILED(hr)) { + chan = DEFAULT_MIN_CHANNEL; + } + return chan; + } + HRESULT MinMinorChannel(long chan) { + _ASSERT(*this); + return (*this)->put_MinMinorChannel(chan); + } + + long MaxMinorChannel() { + _ASSERT(*this); + long chan; + HRESULT hr = (*this)->get_MaxMinorChannel(&chan); + if (FAILED(hr)) { + chan = DEFAULT_MAX_CHANNEL; + } + return chan; + } + HRESULT MaxMinorChannel(long chan) { + _ASSERT(*this); + return (*this)->put_MaxMinorChannel(chan); + } + long MinPhysicalChannel() { + _ASSERT(*this); + long chan; + HRESULT hr = (*this)->get_MinPhysicalChannel(&chan); + if (FAILED(hr)) { + chan = DEFAULT_MIN_CHANNEL; + } + return chan; + } + HRESULT MinPhysicalChannel(long chan) { + _ASSERT(*this); + return (*this)->put_MinPhysicalChannel(chan); + } + + long MaxPhysicalChannel() { + _ASSERT(*this); + long chan; + HRESULT hr = (*this)->get_MaxPhysicalChannel(&chan); + if (FAILED(hr)) { + chan = DEFAULT_MAX_CHANNEL; + } + return chan; + } + + HRESULT MaxPhysicalChannel(long chan) { + _ASSERT(*this); + return (*this)->put_MaxPhysicalChannel(chan); + } +}; +typedef TNATSCTuningSpaceHelper TNATSCTuningSpace; + +// dvb tuning space +template class TNDVBTuningSpaceHelper : public TNTuningSpaceHelper { +public: + TNDVBTuningSpaceHelper() {} + TNDVBTuningSpaceHelper(const TUNINGSPACETYPE &a) : TNTuningSpaceHelper(a) {} + TNDVBTuningSpaceHelper(IUnknown *p) : TNTuningSpaceHelper(p) {} + TNDVBTuningSpaceHelper(const TNDVBTuningSpaceHelper &a) : TNTuningSpaceHelper(a) {} + TNDVBTuningSpaceHelper& operator=(TNDVBTuningSpaceHelper& rhs) { + TNTuningSpaceHelper::operator=(rhs); + return *this; + } + template TNDVBTuningSpaceHelper& operator=(TNTuningSpaceHelper& rhs) { + TNTuningSpaceHelper::operator=(TUNINGSPACETYPE(rhs)); + return *this; + } + TNDVBTuningSpaceHelper& operator=(TUNINGSPACETYPE& rhs) { + TNTuningSpaceHelper::operator=(rhs); + return *this; + } + TNDVBTuningSpaceHelper& operator=(IUnknown* rhs) { + TNTuningSpaceHelper::operator=(rhs); + return *this; + } + DVBSystemType SystemType() const { + DVBSystemType st; + HRESULT hr = (*this)->get_SystemType(&st); + if (FAILED(hr)) { + return DVB_Cable; + } + return st; + } + HRESULT SystemType(DVBSystemType st) { + _ASSERT(*this); + return (*this)->put_SystemType(st); + } +}; +typedef TNDVBTuningSpaceHelper TNDVBTuningSpace; + +// locators +template class TNLocatorHelper : public LOCATORTYPE { +public: + TNLocatorHelper() {} + TNLocatorHelper(const LOCATORTYPE &a) : LOCATORTYPE(a) {} + TNLocatorHelper(IUnknown *p) : LOCATORTYPE(p) {} + TNLocatorHelper(const TNLocatorHelper &a) : LOCATORTYPE(a) {} + TNLocatorHelper(ILocator *p) : LOCATORTYPE(p) {} + TNLocatorHelper& operator=(TNLocatorHelper& rhs) { + LOCATORTYPE::operator=(rhs); + return *this; + } + TNLocatorHelper& operator=(LOCATORTYPE& rhs) { + LOCATORTYPE::operator=(rhs); + return *this; + } + TNLocatorHelper& operator=(ILocator* rhs) { + LOCATORTYPE::operator=(rhs); + return *this; + } + TNLocatorHelper& operator=(IUnknown* rhs) { + LOCATORTYPE::operator=(rhs); + return *this; + } + + void Clone() { + PQLocator t; + HRESULT hr = (*this)->Clone(&t); + if (FAILED(hr) || !t) { + Release(); // clone failed, clear ourselves + return; + } + LOCATORTYPE::operator=(t); + } + + long CarrierFrequency() { + _ASSERT(*this); + long f; + HRESULT hr = (*this)->get_CarrierFrequency(&f); + if (FAILED(hr)) { + return -1; + } + return f; + } + HRESULT CarrierFrequency(long f) { + _ASSERT(*this); + return (*this)->put_CarrierFrequency(f); + } + + FECMethod InnerFEC() { + _ASSERT(*this); + FECMethod f; + HRESULT hr = (*this)->get_InnerFEC(&f); + if (FAILED(hr)) { + return BDA_FEC_METHOD_NOT_SET; + } + return f; + } + HRESULT InnerFEC(FECMethod f) { + _ASSERT(*this); + return (*this)->put_InnerFEC(f); + } + BinaryConvolutionCodeRate InnerFECRate() { + _ASSERT(*this); + BinaryConvolutionCodeRate f; + HRESULT hr = (*this)->get_InnerFECRate(&f); + if (FAILED(hr)) { + return BDA_BCC_RATE_NOT_SET; + } + return f; + } + HRESULT InnerFECRate(BinaryConvolutionCodeRate f) { + _ASSERT(*this); + return (*this)->put_InnerFECRate(f); + } + FECMethod OuterFEC() { + _ASSERT(*this); + FECMethod f; + HRESULT hr = (*this)->get_OuterFEC(&f); + if (FAILED(hr)) { + return BDA_FEC_METHOD_NOT_SET; + } + return f; + } + HRESULT OuterFEC(FECMethod f) { + _ASSERT(*this); + return (*this)->put_OuterFEC(f); + } + BinaryConvolutionCodeRate OuterFECRate() { + _ASSERT(*this); + BinaryConvolutionCodeRate f; + HRESULT hr = (*this)->get_OuterFECRate(&f); + if (FAILED(hr)) { + return BDA_BCC_RATE_NOT_SET; + } + return f; + } + HRESULT OuterFECRate(BinaryConvolutionCodeRate f) { + _ASSERT(*this); + return (*this)->put_OuterFECRate(f); + } + ModulationType Modulation() { + _ASSERT(*this); + ModulationType f; + HRESULT hr = (*this)->get_Modulation(&f); + if (FAILED(hr)) { + return BDA_MOD_NOT_SET; + } + return f; + } + HRESULT Modulation(ModulationType f) { + _ASSERT(*this); + return (*this)->put_Modulation(f); + } + + long SymbolRate() { + _ASSERT(*this); + long f; + HRESULT hr = (*this)->get_SymbolRate(&f); + if (FAILED(hr)) { + return -1; + } + return f; + } + HRESULT SymbolRate(long f) { + _ASSERT(*this); + return (*this)->put_SymbolRate(f); + } + +}; +typedef TNLocatorHelper TNLocator; + +template class TNATSCLocatorHelper : public TNLocatorHelper { +public: + TNATSCLocatorHelper() {} + TNATSCLocatorHelper(const LOCATORTYPE &a) : TNLocatorHelper(a) {} + TNATSCLocatorHelper(IUnknown *p) : TNLocatorHelper(p) {} + TNATSCLocatorHelper(const TNATSCLocatorHelper &a) : TNLocatorHelper(a) {} + TNATSCLocatorHelper(IATSCLocator *p) : TNLocatorHelper(p) {} + TNATSCLocatorHelper(const TNLocatorHelper &a) : TNLocatorHelper(a) {} + TNATSCLocatorHelper& operator=(TNATSCLocatorHelper& rhs) { + TNLocatorHelper::operator=(rhs); + return *this; + } + TNATSCLocatorHelper& operator=(TNLocatorHelper& rhs) { + TNLocatorHelper::operator=(rhs); + return *this; + } + TNATSCLocatorHelper& operator=(LOCATORTYPE& rhs) { + TNLocatorHelper::operator=(rhs); + return *this; + } + TNATSCLocatorHelper& operator=(IATSCLocator* rhs) { + TNLocatorHelper::operator=(rhs); + return *this; + } + TNATSCLocatorHelper& operator=(IUnknown* rhs) { + TNLocatorHelper::operator=(rhs); + return *this; + } + + long PhysicalChannel() { + _ASSERT(*this); + long pc; + HRESULT hr = (*this)->get_PhysicalChannel(&pc); + if (FAILED(hr)) { + return -1; + } + return pc; + } + HRESULT PhysicalChannel(long pc) { + _ASSERT(*this); + return (*this)->put_PhysicalChannel(pc); + } + + long TSID() { + _ASSERT(*this); + long pc; + HRESULT hr = (*this)->get_TSID(&pc); + if (FAILED(hr)) { + return -1; + } + return pc; + } + HRESULT TSID(long pc) { + _ASSERT(*this); + return (*this)->put_TSID(pc); + } + + long ProgramNumber() { + _ASSERT(*this); + long pc; + HRESULT hr = (*this)->get_ProgramNumber(&pc); + if (FAILED(hr)) { + return -1; + } + return pc; + } + HRESULT ProgramNumber(long pc) { + _ASSERT(*this); + return (*this)->put_ProgramNumber(pc); + } +}; +typedef TNATSCLocatorHelper TNATSCLocator; + +template class TNDVBSLocatorHelper : public TNLocatorHelper { +public: + TNDVBSLocatorHelper() {} + TNDVBSLocatorHelper(const LOCATORTYPE &a) : TNLocatorHelper(a) {} + TNDVBSLocatorHelper(IUnknown *p) : TNLocatorHelper(p) {} + TNDVBSLocatorHelper(const TNDVBSLocatorHelper &a) : TNLocatorHelper(a) {} + TNDVBSLocatorHelper(IDVBSLocator *p) : TNLocatorHelper(p) {} + TNDVBSLocatorHelper(const TNLocatorHelper &a) : TNLocatorHelper(a) {} + TNDVBSLocatorHelper& operator=(TNDVBSLocatorHelper& rhs) { + TNLocatorHelper::operator=(rhs); + return *this; + } + TNDVBSLocatorHelper& operator=(TNLocatorHelper& rhs) { + TNLocatorHelper::operator=(rhs); + return *this; + } + TNDVBSLocatorHelper& operator=(LOCATORTYPE& rhs) { + TNLocatorHelper::operator=(rhs); + return *this; + } + TNDVBSLocatorHelper& operator=(IDVBSLocator* rhs) { + TNLocatorHelper::operator=(rhs); + return *this; + } + TNDVBSLocatorHelper& operator=(IUnknown* rhs) { + TNLocatorHelper::operator=(rhs); + return *this; + } + + Polarisation SignalPolarisation() { + _ASSERT(*this); + Polarisation pc; + HRESULT hr = (*this)->get_SignalPolarisation(&pc); + if (FAILED(hr)) { + return -1; + } + return pc; + } + HRESULT SignalPolarisation(Polarisation pc) { + _ASSERT(*this); + return (*this)->put_SignalPolarisation(pc); + } + + VARIANT_BOOL WestPosition() { + _ASSERT(*this); + VARIANT_BOOL pc; + HRESULT hr = (*this)->get_WestPosition(&pc); + if (FAILED(hr)) { + return -1; + } + return pc; + } + HRESULT WestPosition(VARIANT_BOOL pc) { + _ASSERT(*this); + return (*this)->put_WestPosition(pc); + } + + long OrbitalPosition() { + _ASSERT(*this); + long pc; + HRESULT hr = (*this)->get_OrbitalPosition(&pc); + if (FAILED(hr)) { + return -1; + } + return pc; + } + HRESULT OrbitalPosition(long pc) { + _ASSERT(*this); + return (*this)->put_OrbitalPosition(pc); + } + + long Azimuth() { + _ASSERT(*this); + long pc; + HRESULT hr = (*this)->get_Azimuth(&pc); + if (FAILED(hr)) { + return -1; + } + return pc; + } + HRESULT Azimuth(long pc) { + _ASSERT(*this); + return (*this)->put_Azimuth(pc); + } + + long Elevation() { + _ASSERT(*this); + long pc; + HRESULT hr = (*this)->get_Elevation(&pc); + if (FAILED(hr)) { + return -1; + } + return pc; + } + HRESULT Elevation(long pc) { + _ASSERT(*this); + return (*this)->put_Elevation(pc); + } + +}; +typedef TNDVBSLocatorHelper TNDVBSLocator; + + + +template class TNDVBTLocatorHelper : public TNLocatorHelper { +public: + TNDVBTLocatorHelper() {} + TNDVBTLocatorHelper(const LOCATORTYPE &a) : TNLocatorHelper(a) {} + TNDVBTLocatorHelper(IUnknown *p) : TNLocatorHelper(p) {} + TNDVBTLocatorHelper(const TNDVBTLocatorHelper &a) : TNLocatorHelper(a) {} + TNDVBTLocatorHelper(IDVBTLocator *p) : TNLocatorHelper(p) {} + TNDVBTLocatorHelper(const TNLocatorHelper &a) : TNLocatorHelper(a) {} + TNDVBTLocatorHelper& operator=(TNDVBTLocatorHelper& rhs) { + TNLocatorHelper::operator=(rhs); + return *this; + } + TNDVBTLocatorHelper& operator=(TNLocatorHelper& rhs) { + TNLocatorHelper::operator=(rhs); + return *this; + } + TNDVBTLocatorHelper& operator=(LOCATORTYPE& rhs) { + TNLocatorHelper::operator=(rhs); + return *this; + } + TNDVBTLocatorHelper& operator=(IDVBTLocator* rhs) { + TNLocatorHelper::operator=(rhs); + return *this; + } + TNDVBTLocatorHelper& operator=(IUnknown* rhs) { + TNLocatorHelper::operator=(rhs); + return *this; + } + + long BandWidth() { + _ASSERT(*this); + long pc; + HRESULT hr = (*this)->get_BandWidth(&pc); + if (FAILED(hr)) { + return -1; + } + return pc; + } + HRESULT BandWidth(long pc) { + _ASSERT(*this); + return (*this)->put_BandWidth(pc); + } + + FECMethod LPInnerFec() { + _ASSERT(*this); + FECMethod pc; + HRESULT hr = (*this)->get_LPInnerFec(&pc); + if (FAILED(hr)) { + return -1; + } + return pc; + } + HRESULT LPInnerFec(FECMethod pc) { + _ASSERT(*this); + return (*this)->put_LPInnerFec(pc); + } + + BinaryConvolutionCodeRate LPInnerFecRate() { + _ASSERT(*this); + BinaryConvolutionCodeRate pc; + HRESULT hr = (*this)->get_LPInnerFecRate(&pc); + if (FAILED(hr)) { + return -1; + } + return pc; + } + HRESULT LPInnerFecRate(BinaryConvolutionCodeRate pc) { + _ASSERT(*this); + return (*this)->put_LPInnerFecRate(pc); + } + + HierarchyAlpha HAlpha() { + _ASSERT(*this); + HierarchyAlpha pc; + HRESULT hr = (*this)->get_HAlpha(&pc); + if (FAILED(hr)) { + return -1; + } + return pc; + } + HRESULT HAlpha(HierarchyAlpha pc) { + _ASSERT(*this); + return (*this)->put_HAlpha(pc); + } + + GuardInterval Guard() { + _ASSERT(*this); + GuardInterval pc; + HRESULT hr = (*this)->get_Guard(&pc); + if (FAILED(hr)) { + return -1; + } + return pc; + } + HRESULT Guard(GuardInterval pc) { + _ASSERT(*this); + return (*this)->put_Guard(pc); + } + + TransmissionMode Mode() { + _ASSERT(*this); + TransmissionMode pc; + HRESULT hr = (*this)->get_Mode(&pc); + if (FAILED(hr)) { + return -1; + } + return pc; + } + HRESULT Mode(TransmissionMode pc) { + _ASSERT(*this); + return (*this)->put_Mode(pc); + } + + VARIANT_BOOL OtherFrequencyInUse() { + _ASSERT(*this); + VARIANT_BOOL pc; + HRESULT hr = (*this)->get_OtherFrequencyInUse(&pc); + if (FAILED(hr)) { + return -1; + } + return pc; + } + HRESULT OtherFrequencyInUse(VARIANT_BOOL pc) { + _ASSERT(*this); + return (*this)->put_OtherFrequencyInUse(pc); + } +}; +typedef TNDVBTLocatorHelper TNDVBTLocator; + +template class TNDVBCLocatorHelper : public TNLocatorHelper { +public: + TNDVBCLocatorHelper() {} + TNDVBCLocatorHelper(const LOCATORTYPE &a) : TNLocatorHelper(a) {} + TNDVBCLocatorHelper(IUnknown *p) : TNLocatorHelper(p) {} + TNDVBCLocatorHelper(const TNDVBCLocatorHelper &a) : TNLocatorHelper(a) {} + TNDVBCLocatorHelper(IDVBCLocator *p) : TNLocatorHelper(p) {} + TNDVBCLocatorHelper(const TNLocatorHelper &a) : TNLocatorHelper(a) {} + TNDVBCLocatorHelper& operator=(TNDVBCLocatorHelper& rhs) { + TNLocatorHelper::operator=(rhs); + return *this; + } + TNDVBCLocatorHelper& operator=(TNLocatorHelper& rhs) { + TNLocatorHelper::operator=(rhs); + return *this; + } + TNDVBCLocatorHelper& operator=(LOCATORTYPE& rhs) { + TNLocatorHelper::operator=(rhs); + return *this; + } + TNDVBCLocatorHelper& operator=(IDVBCLocator* rhs) { + TNLocatorHelper::operator=(rhs); + return *this; + } + TNDVBCLocatorHelper& operator=(IUnknown* rhs) { + TNLocatorHelper::operator=(rhs); + return *this; + } + +}; +typedef TNDVBCLocatorHelper TNDVBCLocator; + +// tune requests +template class TNTuneRequestHelper : public TUNEREQUESTTYPE { +public: + TNTuneRequestHelper() {} + TNTuneRequestHelper(const TUNEREQUESTTYPE &a) : TUNEREQUESTTYPE(a) {} + TNTuneRequestHelper(IUnknown *p) : TUNEREQUESTTYPE(p) {} + TNTuneRequestHelper(const TNTuneRequestHelper &a) : TUNEREQUESTTYPE(a) {} + TNTuneRequestHelper(ITuneRequest *p) : TUNEREQUESTTYPE(p) {} + TNTuneRequestHelper& operator=(TNTuneRequestHelper& rhs) { + TUNEREQUESTTYPE::operator=(rhs); + return *this; + } + TNTuneRequestHelper& operator=(TUNEREQUESTTYPE& rhs) { + TUNEREQUESTTYPE::operator=(rhs); + return *this; + } + TNTuneRequestHelper& operator=(ITuneRequest* rhs) { + TUNEREQUESTTYPE::operator=(rhs); + return *this; + } + TNTuneRequestHelper& operator=(IUnknown* rhs) { + TUNEREQUESTTYPE::operator=(rhs); + return *this; + } + // this function creates a new instance of the base ITuneRequest* and copies + // all the values of the current ITuneRequest and sets this to the new one + // this provides the value semantics needed by the network providers + void Clone() { + PQTuneRequest t; + HRESULT hr = (*this)->Clone(&t); + if (FAILED(hr) || !t) { + Release(); // clone failed, clear ourselves + return; + } + TUNEREQUESTTYPE::operator=(t); + } + + PQTuningSpace TuningSpace() { + _ASSERT(*this); + PQTuningSpace ts; + HRESULT hr = (*this)->get_TuningSpace(&ts); + if (FAILED(hr)) { + return PQTuningSpace(); + } + return ts; + } + + LOCATORTYPE Locator() { + _ASSERT(*this); + PQLocator pc; + HRESULT hr = (*this)->get_Locator(&pc); + if (FAILED(hr)) { + return PQLocator().p; + } + return pc.p; + } + HRESULT Locator(LOCATORTYPE& pc) { + _ASSERT(*this); + return (*this)->put_Locator(pc); + } +}; + +typedef TNTuneRequestHelper TNTuneRequest; + +template class TNChannelTuneRequestHelper : public TNTuneRequestHelper { +public: + TNChannelTuneRequestHelper() {} + TNChannelTuneRequestHelper(const TNTuneRequest &a) : TNTuneRequestHelper(a) {} + TNChannelTuneRequestHelper(IChannelTuneRequest *p) : TNTuneRequestHelper(p) {} + TNChannelTuneRequestHelper(IUnknown *p) : TNTuneRequestHelper(p) {} + TNChannelTuneRequestHelper(const TNTuneRequestHelper &a) : TNTuneRequestHelper(a) {} + TNChannelTuneRequestHelper(const TNChannelTuneRequestHelper &a) : TNTuneRequestHelper(a) {} + TNChannelTuneRequestHelper& operator=(TNChannelTuneRequestHelper& rhs) { + TNTuneRequestHelper::operator=(rhs); + return *this; + } + template TNChannelTuneRequestHelper& operator=(TNTuneRequestHelper& rhs) { + TNTuneRequestHelper::operator=(TUNEREQUESTTYPE(rhs)); + return *this; + } + TNChannelTuneRequestHelper& operator=(TUNEREQUESTTYPE& rhs) { + TNTuneRequestHelper::operator=(rhs); + return *this; + } + TNChannelTuneRequestHelper& operator=(IChannelTuneRequest* rhs) { + TNTuneRequestHelper::operator=(rhs); + return *this; + } + TNChannelTuneRequestHelper& operator=(IUnknown* rhs) { + TUNEREQUESTTYPE::operator=(rhs); + return *this; + } + long Channel() { + _ASSERT(*this); + long c; + HRESULT hr = (*this)->get_Channel(&c); + if (FAILED(hr)) { + return -1; + } + return c; + } + HRESULT Channel(long c) { + _ASSERT(*this); + return (*this)->put_Channel(c); + } +}; + +typedef TNChannelTuneRequestHelper TNChannelTuneRequest; + +template class TNATSCChannelTuneRequestHelper : public TNChannelTuneRequestHelper { +public: + TNATSCChannelTuneRequestHelper() {} + TNATSCChannelTuneRequestHelper(const TNTuneRequest &a) : TNChannelTuneRequestHelper(a) {} + TNATSCChannelTuneRequestHelper(IATSCChannelTuneRequest *p) : TNChannelTuneRequestHelper(p) {} + TNATSCChannelTuneRequestHelper(IUnknown *p) : TNChannelTuneRequestHelper(p) {} + TNATSCChannelTuneRequestHelper(const TNChannelTuneRequestHelper &a) : TNChannelTuneRequestHelper(a) {} + TNATSCChannelTuneRequestHelper(const TNATSCChannelTuneRequestHelper &a) : TNChannelTuneRequestHelper(a) {} + TNATSCChannelTuneRequestHelper& operator=(TNATSCChannelTuneRequestHelper& rhs) { + TNChannelTuneRequestHelper::operator=(rhs); + return *this; + } + templateTNATSCChannelTuneRequestHelper& operator=(TNTuneRequestHelper& rhs) { + TNChannelTuneRequestHelper::operator=(TR(rhs)); + return *this; + } + TNATSCChannelTuneRequestHelper& operator=(TUNEREQUESTTYPE& rhs) { + TNChannelTuneRequestHelper::operator=(rhs); + return *this; + } + TNATSCChannelTuneRequestHelper& operator=(IATSCChannelTuneRequest *rhs) { + TNChannelTuneRequestHelper::operator=(rhs); + return *this; + } + TNTuneRequestHelper& operator=(IUnknown* rhs) { + TUNEREQUESTTYPE::operator=(rhs); + return *this; + } + long MinorChannel() { + _ASSERT(*this); + long mc; + HRESULT hr = (*this)->get_MinorChannel(&mc); + if (FAILED(hr)) { + return -1; + } + return mc; + } + HRESULT MinorChannel(long mc) { + _ASSERT(*this); + return (*this)->put_MinorChannel(mc); + } +}; +typedef TNATSCChannelTuneRequestHelper TNATSCChannelTuneRequest; + +template class TNDVBTuneRequestHelper : public TNTuneRequestHelper { +public: + TNDVBTuneRequestHelper() {} + TNDVBTuneRequestHelper(const TNTuneRequest &a) : TNTuneRequestHelper(a) {} + TNDVBTuneRequestHelper(IDVBTuneRequest *p) : TNTuneRequestHelper(p) {} + TNDVBTuneRequestHelper(IUnknown *p) : TNTuneRequestHelper(p) {} + TNDVBTuneRequestHelper(const TNTuneRequestHelper &a) : TNTuneRequestHelper(a) {} + TNDVBTuneRequestHelper(const TNDVBTuneRequestHelper &a) : TNTuneRequestHelper(a) {} + TNDVBTuneRequestHelper& operator=(TNDVBTuneRequestHelper& rhs) { + TNTuneRequestHelper::operator=(rhs); + return *this; + } + template TNDVBTuneRequestHelper& operator=(TNTuneRequestHelper& rhs) { + TNTuneRequestHelper::operator=(TUNEREQUESTTYPE(rhs)); + return *this; + } + TNDVBTuneRequestHelper& operator=(TUNEREQUESTTYPE& rhs) { + TNTuneRequestHelper::operator=(rhs); + return *this; + } + TNDVBTuneRequestHelper& operator=(IDVBTuneRequest* rhs) { + TNTuneRequestHelper::operator=(rhs); + return *this; + } + TNDVBTuneRequestHelper& operator=(IUnknown* rhs) { + TUNEREQUESTTYPE::operator=(rhs); + return *this; + } + long ONID() { + _ASSERT(*this); + long c; + HRESULT hr = (*this)->get_ONID(&c); + if (FAILED(hr)) { + return -1; + } + return c; + } + HRESULT ONID(long c) { + _ASSERT(*this); + return (*this)->put_ONID(c); + } + long TSID() { + _ASSERT(*this); + long c; + HRESULT hr = (*this)->get_TSID(&c); + if (FAILED(hr)) { + return -1; + } + return c; + } + HRESULT TSID(long c) { + _ASSERT(*this); + return (*this)->put_TSID(c); + } + long SID() { + _ASSERT(*this); + long c; + HRESULT hr = (*this)->get_SID(&c); + if (FAILED(hr)) { + return -1; + } + return c; + } + HRESULT SID(long c) { + _ASSERT(*this); + return (*this)->put_SID(c); + } +}; +typedef TNDVBTuneRequestHelper TNDVBTuneRequest; +}; // namespace + +#ifndef NO_DEFAULT_BDATUNINGMODEL_NAMESPACE +using namespace BDATuningModel; +#endif + +#endif +// end of file - tune.h diff --git a/videoInputSrcAndDemos/libs/DShow/Include/tuner.h b/videoInputSrcAndDemos/libs/DShow/Include/tuner.h index d0a517c..cd08a15 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/tuner.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/tuner.h @@ -1,11640 +1,11640 @@ - -#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 tuner.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 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 -#endif // __RPCNDR_H_VERSION__ - -#ifndef COM_NO_WINDOWS_H -#include "windows.h" -#include "ole2.h" -#endif /*COM_NO_WINDOWS_H*/ - -#ifndef __tuner_h__ -#define __tuner_h__ - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -#pragma once -#endif - -/* Forward Declarations */ - -#ifndef __ITuningSpaces_FWD_DEFINED__ -#define __ITuningSpaces_FWD_DEFINED__ -typedef interface ITuningSpaces ITuningSpaces; -#endif /* __ITuningSpaces_FWD_DEFINED__ */ - - -#ifndef __ITuningSpaceContainer_FWD_DEFINED__ -#define __ITuningSpaceContainer_FWD_DEFINED__ -typedef interface ITuningSpaceContainer ITuningSpaceContainer; -#endif /* __ITuningSpaceContainer_FWD_DEFINED__ */ - - -#ifndef __ITuningSpace_FWD_DEFINED__ -#define __ITuningSpace_FWD_DEFINED__ -typedef interface ITuningSpace ITuningSpace; -#endif /* __ITuningSpace_FWD_DEFINED__ */ - - -#ifndef __IEnumTuningSpaces_FWD_DEFINED__ -#define __IEnumTuningSpaces_FWD_DEFINED__ -typedef interface IEnumTuningSpaces IEnumTuningSpaces; -#endif /* __IEnumTuningSpaces_FWD_DEFINED__ */ - - -#ifndef __IDVBTuningSpace_FWD_DEFINED__ -#define __IDVBTuningSpace_FWD_DEFINED__ -typedef interface IDVBTuningSpace IDVBTuningSpace; -#endif /* __IDVBTuningSpace_FWD_DEFINED__ */ - - -#ifndef __IDVBTuningSpace2_FWD_DEFINED__ -#define __IDVBTuningSpace2_FWD_DEFINED__ -typedef interface IDVBTuningSpace2 IDVBTuningSpace2; -#endif /* __IDVBTuningSpace2_FWD_DEFINED__ */ - - -#ifndef __IDVBSTuningSpace_FWD_DEFINED__ -#define __IDVBSTuningSpace_FWD_DEFINED__ -typedef interface IDVBSTuningSpace IDVBSTuningSpace; -#endif /* __IDVBSTuningSpace_FWD_DEFINED__ */ - - -#ifndef __IAuxInTuningSpace_FWD_DEFINED__ -#define __IAuxInTuningSpace_FWD_DEFINED__ -typedef interface IAuxInTuningSpace IAuxInTuningSpace; -#endif /* __IAuxInTuningSpace_FWD_DEFINED__ */ - - -#ifndef __IAnalogTVTuningSpace_FWD_DEFINED__ -#define __IAnalogTVTuningSpace_FWD_DEFINED__ -typedef interface IAnalogTVTuningSpace IAnalogTVTuningSpace; -#endif /* __IAnalogTVTuningSpace_FWD_DEFINED__ */ - - -#ifndef __IATSCTuningSpace_FWD_DEFINED__ -#define __IATSCTuningSpace_FWD_DEFINED__ -typedef interface IATSCTuningSpace IATSCTuningSpace; -#endif /* __IATSCTuningSpace_FWD_DEFINED__ */ - - -#ifndef __IAnalogRadioTuningSpace_FWD_DEFINED__ -#define __IAnalogRadioTuningSpace_FWD_DEFINED__ -typedef interface IAnalogRadioTuningSpace IAnalogRadioTuningSpace; -#endif /* __IAnalogRadioTuningSpace_FWD_DEFINED__ */ - - -#ifndef __ITuneRequest_FWD_DEFINED__ -#define __ITuneRequest_FWD_DEFINED__ -typedef interface ITuneRequest ITuneRequest; -#endif /* __ITuneRequest_FWD_DEFINED__ */ - - -#ifndef __IChannelTuneRequest_FWD_DEFINED__ -#define __IChannelTuneRequest_FWD_DEFINED__ -typedef interface IChannelTuneRequest IChannelTuneRequest; -#endif /* __IChannelTuneRequest_FWD_DEFINED__ */ - - -#ifndef __IATSCChannelTuneRequest_FWD_DEFINED__ -#define __IATSCChannelTuneRequest_FWD_DEFINED__ -typedef interface IATSCChannelTuneRequest IATSCChannelTuneRequest; -#endif /* __IATSCChannelTuneRequest_FWD_DEFINED__ */ - - -#ifndef __IDVBTuneRequest_FWD_DEFINED__ -#define __IDVBTuneRequest_FWD_DEFINED__ -typedef interface IDVBTuneRequest IDVBTuneRequest; -#endif /* __IDVBTuneRequest_FWD_DEFINED__ */ - - -#ifndef __IMPEG2TuneRequest_FWD_DEFINED__ -#define __IMPEG2TuneRequest_FWD_DEFINED__ -typedef interface IMPEG2TuneRequest IMPEG2TuneRequest; -#endif /* __IMPEG2TuneRequest_FWD_DEFINED__ */ - - -#ifndef __IMPEG2TuneRequestFactory_FWD_DEFINED__ -#define __IMPEG2TuneRequestFactory_FWD_DEFINED__ -typedef interface IMPEG2TuneRequestFactory IMPEG2TuneRequestFactory; -#endif /* __IMPEG2TuneRequestFactory_FWD_DEFINED__ */ - - -#ifndef __IMPEG2TuneRequestSupport_FWD_DEFINED__ -#define __IMPEG2TuneRequestSupport_FWD_DEFINED__ -typedef interface IMPEG2TuneRequestSupport IMPEG2TuneRequestSupport; -#endif /* __IMPEG2TuneRequestSupport_FWD_DEFINED__ */ - - -#ifndef __ITuner_FWD_DEFINED__ -#define __ITuner_FWD_DEFINED__ -typedef interface ITuner ITuner; -#endif /* __ITuner_FWD_DEFINED__ */ - - -#ifndef __IScanningTuner_FWD_DEFINED__ -#define __IScanningTuner_FWD_DEFINED__ -typedef interface IScanningTuner IScanningTuner; -#endif /* __IScanningTuner_FWD_DEFINED__ */ - - -#ifndef __IComponentType_FWD_DEFINED__ -#define __IComponentType_FWD_DEFINED__ -typedef interface IComponentType IComponentType; -#endif /* __IComponentType_FWD_DEFINED__ */ - - -#ifndef __ILanguageComponentType_FWD_DEFINED__ -#define __ILanguageComponentType_FWD_DEFINED__ -typedef interface ILanguageComponentType ILanguageComponentType; -#endif /* __ILanguageComponentType_FWD_DEFINED__ */ - - -#ifndef __IMPEG2ComponentType_FWD_DEFINED__ -#define __IMPEG2ComponentType_FWD_DEFINED__ -typedef interface IMPEG2ComponentType IMPEG2ComponentType; -#endif /* __IMPEG2ComponentType_FWD_DEFINED__ */ - - -#ifndef __IATSCComponentType_FWD_DEFINED__ -#define __IATSCComponentType_FWD_DEFINED__ -typedef interface IATSCComponentType IATSCComponentType; -#endif /* __IATSCComponentType_FWD_DEFINED__ */ - - -#ifndef __IEnumComponentTypes_FWD_DEFINED__ -#define __IEnumComponentTypes_FWD_DEFINED__ -typedef interface IEnumComponentTypes IEnumComponentTypes; -#endif /* __IEnumComponentTypes_FWD_DEFINED__ */ - - -#ifndef __IComponentTypes_FWD_DEFINED__ -#define __IComponentTypes_FWD_DEFINED__ -typedef interface IComponentTypes IComponentTypes; -#endif /* __IComponentTypes_FWD_DEFINED__ */ - - -#ifndef __IComponent_FWD_DEFINED__ -#define __IComponent_FWD_DEFINED__ -typedef interface IComponent IComponent; -#endif /* __IComponent_FWD_DEFINED__ */ - - -#ifndef __IMPEG2Component_FWD_DEFINED__ -#define __IMPEG2Component_FWD_DEFINED__ -typedef interface IMPEG2Component IMPEG2Component; -#endif /* __IMPEG2Component_FWD_DEFINED__ */ - - -#ifndef __IEnumComponents_FWD_DEFINED__ -#define __IEnumComponents_FWD_DEFINED__ -typedef interface IEnumComponents IEnumComponents; -#endif /* __IEnumComponents_FWD_DEFINED__ */ - - -#ifndef __IComponents_FWD_DEFINED__ -#define __IComponents_FWD_DEFINED__ -typedef interface IComponents IComponents; -#endif /* __IComponents_FWD_DEFINED__ */ - - -#ifndef __ILocator_FWD_DEFINED__ -#define __ILocator_FWD_DEFINED__ -typedef interface ILocator ILocator; -#endif /* __ILocator_FWD_DEFINED__ */ - - -#ifndef __IATSCLocator_FWD_DEFINED__ -#define __IATSCLocator_FWD_DEFINED__ -typedef interface IATSCLocator IATSCLocator; -#endif /* __IATSCLocator_FWD_DEFINED__ */ - - -#ifndef __IDVBTLocator_FWD_DEFINED__ -#define __IDVBTLocator_FWD_DEFINED__ -typedef interface IDVBTLocator IDVBTLocator; -#endif /* __IDVBTLocator_FWD_DEFINED__ */ - - -#ifndef __IDVBSLocator_FWD_DEFINED__ -#define __IDVBSLocator_FWD_DEFINED__ -typedef interface IDVBSLocator IDVBSLocator; -#endif /* __IDVBSLocator_FWD_DEFINED__ */ - - -#ifndef __IDVBCLocator_FWD_DEFINED__ -#define __IDVBCLocator_FWD_DEFINED__ -typedef interface IDVBCLocator IDVBCLocator; -#endif /* __IDVBCLocator_FWD_DEFINED__ */ - - -#ifndef __IBroadcastEvent_FWD_DEFINED__ -#define __IBroadcastEvent_FWD_DEFINED__ -typedef interface IBroadcastEvent IBroadcastEvent; -#endif /* __IBroadcastEvent_FWD_DEFINED__ */ - - -#ifndef __SystemTuningSpaces_FWD_DEFINED__ -#define __SystemTuningSpaces_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class SystemTuningSpaces SystemTuningSpaces; -#else -typedef struct SystemTuningSpaces SystemTuningSpaces; -#endif /* __cplusplus */ - -#endif /* __SystemTuningSpaces_FWD_DEFINED__ */ - - -#ifndef __TuningSpace_FWD_DEFINED__ -#define __TuningSpace_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class TuningSpace TuningSpace; -#else -typedef struct TuningSpace TuningSpace; -#endif /* __cplusplus */ - -#endif /* __TuningSpace_FWD_DEFINED__ */ - - -#ifndef __ATSCTuningSpace_FWD_DEFINED__ -#define __ATSCTuningSpace_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class ATSCTuningSpace ATSCTuningSpace; -#else -typedef struct ATSCTuningSpace ATSCTuningSpace; -#endif /* __cplusplus */ - -#endif /* __ATSCTuningSpace_FWD_DEFINED__ */ - - -#ifndef __AnalogRadioTuningSpace_FWD_DEFINED__ -#define __AnalogRadioTuningSpace_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class AnalogRadioTuningSpace AnalogRadioTuningSpace; -#else -typedef struct AnalogRadioTuningSpace AnalogRadioTuningSpace; -#endif /* __cplusplus */ - -#endif /* __AnalogRadioTuningSpace_FWD_DEFINED__ */ - - -#ifndef __AuxInTuningSpace_FWD_DEFINED__ -#define __AuxInTuningSpace_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class AuxInTuningSpace AuxInTuningSpace; -#else -typedef struct AuxInTuningSpace AuxInTuningSpace; -#endif /* __cplusplus */ - -#endif /* __AuxInTuningSpace_FWD_DEFINED__ */ - - -#ifndef __AnalogTVTuningSpace_FWD_DEFINED__ -#define __AnalogTVTuningSpace_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class AnalogTVTuningSpace AnalogTVTuningSpace; -#else -typedef struct AnalogTVTuningSpace AnalogTVTuningSpace; -#endif /* __cplusplus */ - -#endif /* __AnalogTVTuningSpace_FWD_DEFINED__ */ - - -#ifndef __DVBTuningSpace_FWD_DEFINED__ -#define __DVBTuningSpace_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class DVBTuningSpace DVBTuningSpace; -#else -typedef struct DVBTuningSpace DVBTuningSpace; -#endif /* __cplusplus */ - -#endif /* __DVBTuningSpace_FWD_DEFINED__ */ - - -#ifndef __DVBSTuningSpace_FWD_DEFINED__ -#define __DVBSTuningSpace_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class DVBSTuningSpace DVBSTuningSpace; -#else -typedef struct DVBSTuningSpace DVBSTuningSpace; -#endif /* __cplusplus */ - -#endif /* __DVBSTuningSpace_FWD_DEFINED__ */ - - -#ifndef __ComponentTypes_FWD_DEFINED__ -#define __ComponentTypes_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class ComponentTypes ComponentTypes; -#else -typedef struct ComponentTypes ComponentTypes; -#endif /* __cplusplus */ - -#endif /* __ComponentTypes_FWD_DEFINED__ */ - - -#ifndef __ComponentType_FWD_DEFINED__ -#define __ComponentType_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class ComponentType ComponentType; -#else -typedef struct ComponentType ComponentType; -#endif /* __cplusplus */ - -#endif /* __ComponentType_FWD_DEFINED__ */ - - -#ifndef __LanguageComponentType_FWD_DEFINED__ -#define __LanguageComponentType_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class LanguageComponentType LanguageComponentType; -#else -typedef struct LanguageComponentType LanguageComponentType; -#endif /* __cplusplus */ - -#endif /* __LanguageComponentType_FWD_DEFINED__ */ - - -#ifndef __MPEG2ComponentType_FWD_DEFINED__ -#define __MPEG2ComponentType_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class MPEG2ComponentType MPEG2ComponentType; -#else -typedef struct MPEG2ComponentType MPEG2ComponentType; -#endif /* __cplusplus */ - -#endif /* __MPEG2ComponentType_FWD_DEFINED__ */ - - -#ifndef __ATSCComponentType_FWD_DEFINED__ -#define __ATSCComponentType_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class ATSCComponentType ATSCComponentType; -#else -typedef struct ATSCComponentType ATSCComponentType; -#endif /* __cplusplus */ - -#endif /* __ATSCComponentType_FWD_DEFINED__ */ - - -#ifndef __Components_FWD_DEFINED__ -#define __Components_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class Components Components; -#else -typedef struct Components Components; -#endif /* __cplusplus */ - -#endif /* __Components_FWD_DEFINED__ */ - - -#ifndef __Component_FWD_DEFINED__ -#define __Component_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class Component Component; -#else -typedef struct Component Component; -#endif /* __cplusplus */ - -#endif /* __Component_FWD_DEFINED__ */ - - -#ifndef __MPEG2Component_FWD_DEFINED__ -#define __MPEG2Component_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class MPEG2Component MPEG2Component; -#else -typedef struct MPEG2Component MPEG2Component; -#endif /* __cplusplus */ - -#endif /* __MPEG2Component_FWD_DEFINED__ */ - - -#ifndef __TuneRequest_FWD_DEFINED__ -#define __TuneRequest_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class TuneRequest TuneRequest; -#else -typedef struct TuneRequest TuneRequest; -#endif /* __cplusplus */ - -#endif /* __TuneRequest_FWD_DEFINED__ */ - - -#ifndef __ChannelTuneRequest_FWD_DEFINED__ -#define __ChannelTuneRequest_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class ChannelTuneRequest ChannelTuneRequest; -#else -typedef struct ChannelTuneRequest ChannelTuneRequest; -#endif /* __cplusplus */ - -#endif /* __ChannelTuneRequest_FWD_DEFINED__ */ - - -#ifndef __ATSCChannelTuneRequest_FWD_DEFINED__ -#define __ATSCChannelTuneRequest_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class ATSCChannelTuneRequest ATSCChannelTuneRequest; -#else -typedef struct ATSCChannelTuneRequest ATSCChannelTuneRequest; -#endif /* __cplusplus */ - -#endif /* __ATSCChannelTuneRequest_FWD_DEFINED__ */ - - -#ifndef __MPEG2TuneRequest_FWD_DEFINED__ -#define __MPEG2TuneRequest_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class MPEG2TuneRequest MPEG2TuneRequest; -#else -typedef struct MPEG2TuneRequest MPEG2TuneRequest; -#endif /* __cplusplus */ - -#endif /* __MPEG2TuneRequest_FWD_DEFINED__ */ - - -#ifndef __MPEG2TuneRequestFactory_FWD_DEFINED__ -#define __MPEG2TuneRequestFactory_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class MPEG2TuneRequestFactory MPEG2TuneRequestFactory; -#else -typedef struct MPEG2TuneRequestFactory MPEG2TuneRequestFactory; -#endif /* __cplusplus */ - -#endif /* __MPEG2TuneRequestFactory_FWD_DEFINED__ */ - - -#ifndef __Locator_FWD_DEFINED__ -#define __Locator_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class Locator Locator; -#else -typedef struct Locator Locator; -#endif /* __cplusplus */ - -#endif /* __Locator_FWD_DEFINED__ */ - - -#ifndef __ATSCLocator_FWD_DEFINED__ -#define __ATSCLocator_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class ATSCLocator ATSCLocator; -#else -typedef struct ATSCLocator ATSCLocator; -#endif /* __cplusplus */ - -#endif /* __ATSCLocator_FWD_DEFINED__ */ - - -#ifndef __DVBTLocator_FWD_DEFINED__ -#define __DVBTLocator_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class DVBTLocator DVBTLocator; -#else -typedef struct DVBTLocator DVBTLocator; -#endif /* __cplusplus */ - -#endif /* __DVBTLocator_FWD_DEFINED__ */ - - -#ifndef __DVBSLocator_FWD_DEFINED__ -#define __DVBSLocator_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class DVBSLocator DVBSLocator; -#else -typedef struct DVBSLocator DVBSLocator; -#endif /* __cplusplus */ - -#endif /* __DVBSLocator_FWD_DEFINED__ */ - - -#ifndef __DVBCLocator_FWD_DEFINED__ -#define __DVBCLocator_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class DVBCLocator DVBCLocator; -#else -typedef struct DVBCLocator DVBCLocator; -#endif /* __cplusplus */ - -#endif /* __DVBCLocator_FWD_DEFINED__ */ - - -#ifndef __DVBTuneRequest_FWD_DEFINED__ -#define __DVBTuneRequest_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class DVBTuneRequest DVBTuneRequest; -#else -typedef struct DVBTuneRequest DVBTuneRequest; -#endif /* __cplusplus */ - -#endif /* __DVBTuneRequest_FWD_DEFINED__ */ - - -#ifndef __CreatePropBagOnRegKey_FWD_DEFINED__ -#define __CreatePropBagOnRegKey_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class CreatePropBagOnRegKey CreatePropBagOnRegKey; -#else -typedef struct CreatePropBagOnRegKey CreatePropBagOnRegKey; -#endif /* __cplusplus */ - -#endif /* __CreatePropBagOnRegKey_FWD_DEFINED__ */ - - -#ifndef __BroadcastEventService_FWD_DEFINED__ -#define __BroadcastEventService_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class BroadcastEventService BroadcastEventService; -#else -typedef struct BroadcastEventService BroadcastEventService; -#endif /* __cplusplus */ - -#endif /* __BroadcastEventService_FWD_DEFINED__ */ - - -/* header files for imported files */ -#include "oaidl.h" -#include "comcat.h" -#include "strmif.h" -#include "bdatypes.h" -#include "regbag.h" - -#ifdef __cplusplus -extern "C"{ -#endif - -void * __RPC_USER MIDL_user_allocate(size_t); -void __RPC_USER MIDL_user_free( void * ); - -/* interface __MIDL_itf_tuner_0000 */ -/* [local] */ - -//+------------------------------------------------------------------------- -// -// Microsoft Windows -// Copyright (C) Microsoft Corporation, 1999-2000. -// -//-------------------------------------------------------------------------- -#pragma once -#include - - - - - - - - - - - - - - - - - - - - - -enum __MIDL___MIDL_itf_tuner_0000_0001 - { DISPID_TUNER_TS_UNIQUENAME = 1, - DISPID_TUNER_TS_FRIENDLYNAME = 2, - DISPID_TUNER_TS_CLSID = 3, - DISPID_TUNER_TS_NETWORKTYPE = 4, - DISPID_TUNER_TS__NETWORKTYPE = 5, - DISPID_TUNER_TS_CREATETUNEREQUEST = 6, - DISPID_TUNER_TS_ENUMCATEGORYGUIDS = 7, - DISPID_TUNER_TS_ENUMDEVICEMONIKERS = 8, - DISPID_TUNER_TS_DEFAULTPREFERREDCOMPONENTTYPES = 9, - DISPID_TUNER_TS_FREQMAP = 10, - DISPID_TUNER_TS_DEFLOCATOR = 11, - DISPID_TUNER_TS_CLONE = 12, - DISPID_TUNER_TR_TUNINGSPACE = 1, - DISPID_TUNER_TR_COMPONENTS = 2, - DISPID_TUNER_TR_CLONE = 3, - DISPID_TUNER_TR_LOCATOR = 4, - DISPID_TUNER_CT_CATEGORY = 1, - DISPID_TUNER_CT_MEDIAMAJORTYPE = 2, - DISPID_TUNER_CT__MEDIAMAJORTYPE = 3, - DISPID_TUNER_CT_MEDIASUBTYPE = 4, - DISPID_TUNER_CT__MEDIASUBTYPE = 5, - DISPID_TUNER_CT_MEDIAFORMATTYPE = 6, - DISPID_TUNER_CT__MEDIAFORMATTYPE = 7, - DISPID_TUNER_CT_MEDIATYPE = 8, - DISPID_TUNER_CT_CLONE = 9, - DISPID_TUNER_LCT_LANGID = 100, - DISPID_TUNER_MP2CT_TYPE = 200, - DISPID_TUNER_ATSCCT_FLAGS = 300, - DISPID_TUNER_L_CARRFREQ = 1, - DISPID_TUNER_L_INNERFECMETHOD = 2, - DISPID_TUNER_L_INNERFECRATE = 3, - DISPID_TUNER_L_OUTERFECMETHOD = 4, - DISPID_TUNER_L_OUTERFECRATE = 5, - DISPID_TUNER_L_MOD = 6, - DISPID_TUNER_L_SYMRATE = 7, - DISPID_TUNER_L_CLONE = 8, - DISPID_TUNER_L_ATSC_PHYS_CHANNEL = 201, - DISPID_TUNER_L_ATSC_TSID = 202, - DISPID_TUNER_L_DVBT_BANDWIDTH = 301, - DISPID_TUNER_L_DVBT_LPINNERFECMETHOD = 302, - DISPID_TUNER_L_DVBT_LPINNERFECRATE = 303, - DISPID_TUNER_L_DVBT_GUARDINTERVAL = 304, - DISPID_TUNER_L_DVBT_HALPHA = 305, - DISPID_TUNER_L_DVBT_TRANSMISSIONMODE = 306, - DISPID_TUNER_L_DVBT_INUSE = 307, - DISPID_TUNER_L_DVBS_POLARISATION = 401, - DISPID_TUNER_L_DVBS_WEST = 402, - DISPID_TUNER_L_DVBS_ORBITAL = 403, - DISPID_TUNER_L_DVBS_AZIMUTH = 404, - DISPID_TUNER_L_DVBS_ELEVATION = 405, - DISPID_TUNER_C_TYPE = 1, - DISPID_TUNER_C_STATUS = 2, - DISPID_TUNER_C_LANGID = 3, - DISPID_TUNER_C_DESCRIPTION = 4, - DISPID_TUNER_C_CLONE = 5, - DISPID_TUNER_C_MP2_PID = 101, - DISPID_TUNER_C_MP2_PCRPID = 102, - DISPID_TUNER_C_MP2_PROGNO = 103, - DISPID_TUNER_TS_DVB_SYSTEMTYPE = 101, - DISPID_TUNER_TS_DVB2_NETWORK_ID = 102, - DISPID_TUNER_TS_DVBS_LOW_OSC_FREQ = 1001, - DISPID_TUNER_TS_DVBS_HI_OSC_FREQ = 1002, - DISPID_TUNER_TS_DVBS_LNB_SWITCH_FREQ = 1003, - DISPID_TUNER_TS_DVBS_INPUT_RANGE = 1004, - DISPID_TUNER_TS_DVBS_SPECTRAL_INVERSION = 1005, - DISPID_TUNER_TS_AR_MINFREQUENCY = 101, - DISPID_TUNER_TS_AR_MAXFREQUENCY = 102, - DISPID_TUNER_TS_AR_STEP = 103, - DISPID_TUNER_TS_ATV_MINCHANNEL = 101, - DISPID_TUNER_TS_ATV_MAXCHANNEL = 102, - DISPID_TUNER_TS_ATV_INPUTTYPE = 103, - DISPID_TUNER_TS_ATV_COUNTRYCODE = 104, - DISPID_TUNER_TS_ATSC_MINMINORCHANNEL = 201, - DISPID_TUNER_TS_ATSC_MAXMINORCHANNEL = 202, - DISPID_TUNER_TS_ATSC_MINPHYSCHANNEL = 203, - DISPID_TUNER_TS_ATSC_MAXPHYSCHANNEL = 204, - DISPID_CHTUNER_ATVAC_CHANNEL = 101, - DISPID_CHTUNER_ATVDC_SYSTEM = 101, - DISPID_CHTUNER_ATVDC_CONTENT = 102, - DISPID_CHTUNER_CTR_CHANNEL = 101, - DISPID_CHTUNER_ACTR_MINOR_CHANNEL = 201, - DISPID_DVBTUNER_DVBC_ATTRIBUTESVALID = 101, - DISPID_DVBTUNER_DVBC_PID = 102, - DISPID_DVBTUNER_DVBC_TAG = 103, - DISPID_DVBTUNER_DVBC_COMPONENTTYPE = 104, - DISPID_DVBTUNER_ONID = 101, - DISPID_DVBTUNER_TSID = 102, - DISPID_DVBTUNER_SID = 103, - DISPID_MP2TUNER_TSID = 101, - DISPID_MP2TUNER_PROGNO = 102, - DISPID_MP2TUNERFACTORY_CREATETUNEREQUEST = 1 - } ; - - -extern RPC_IF_HANDLE __MIDL_itf_tuner_0000_v0_0_c_ifspec; -extern RPC_IF_HANDLE __MIDL_itf_tuner_0000_v0_0_s_ifspec; - -#ifndef __ITuningSpaces_INTERFACE_DEFINED__ -#define __ITuningSpaces_INTERFACE_DEFINED__ - -/* interface ITuningSpaces */ -/* [unique][helpstring][nonextensible][oleautomation][dual][uuid][object] */ - - -EXTERN_C const IID IID_ITuningSpaces; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("901284E4-33FE-4b69-8D63-634A596F3756") - ITuningSpaces : public IDispatch - { - public: - virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_Count( - /* [retval][out] */ long *Count) = 0; - - virtual /* [restricted][hidden][id][propget] */ HRESULT STDMETHODCALLTYPE get__NewEnum( - /* [retval][out] */ IEnumVARIANT **NewEnum) = 0; - - virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Item( - /* [in] */ VARIANT varIndex, - /* [retval][out] */ ITuningSpace **TuningSpace) = 0; - - virtual /* [helpstring][restricted][hidden][propget] */ HRESULT STDMETHODCALLTYPE get_EnumTuningSpaces( - /* [retval][out] */ IEnumTuningSpaces **NewEnum) = 0; - - }; - -#else /* C style interface */ - - typedef struct ITuningSpacesVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - ITuningSpaces * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - ITuningSpaces * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - ITuningSpaces * This); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( - ITuningSpaces * This, - /* [out] */ UINT *pctinfo); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( - ITuningSpaces * This, - /* [in] */ UINT iTInfo, - /* [in] */ LCID lcid, - /* [out] */ ITypeInfo **ppTInfo); - - HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( - ITuningSpaces * This, - /* [in] */ REFIID riid, - /* [size_is][in] */ LPOLESTR *rgszNames, - /* [in] */ UINT cNames, - /* [in] */ LCID lcid, - /* [size_is][out] */ DISPID *rgDispId); - - /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( - ITuningSpaces * This, - /* [in] */ DISPID dispIdMember, - /* [in] */ REFIID riid, - /* [in] */ LCID lcid, - /* [in] */ WORD wFlags, - /* [out][in] */ DISPPARAMS *pDispParams, - /* [out] */ VARIANT *pVarResult, - /* [out] */ EXCEPINFO *pExcepInfo, - /* [out] */ UINT *puArgErr); - - /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Count )( - ITuningSpaces * This, - /* [retval][out] */ long *Count); - - /* [restricted][hidden][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get__NewEnum )( - ITuningSpaces * This, - /* [retval][out] */ IEnumVARIANT **NewEnum); - - /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Item )( - ITuningSpaces * This, - /* [in] */ VARIANT varIndex, - /* [retval][out] */ ITuningSpace **TuningSpace); - - /* [helpstring][restricted][hidden][propget] */ HRESULT ( STDMETHODCALLTYPE *get_EnumTuningSpaces )( - ITuningSpaces * This, - /* [retval][out] */ IEnumTuningSpaces **NewEnum); - - END_INTERFACE - } ITuningSpacesVtbl; - - interface ITuningSpaces - { - CONST_VTBL struct ITuningSpacesVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define ITuningSpaces_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define ITuningSpaces_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define ITuningSpaces_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define ITuningSpaces_GetTypeInfoCount(This,pctinfo) \ - (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) - -#define ITuningSpaces_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ - (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) - -#define ITuningSpaces_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ - (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) - -#define ITuningSpaces_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ - (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) - - -#define ITuningSpaces_get_Count(This,Count) \ - (This)->lpVtbl -> get_Count(This,Count) - -#define ITuningSpaces_get__NewEnum(This,NewEnum) \ - (This)->lpVtbl -> get__NewEnum(This,NewEnum) - -#define ITuningSpaces_get_Item(This,varIndex,TuningSpace) \ - (This)->lpVtbl -> get_Item(This,varIndex,TuningSpace) - -#define ITuningSpaces_get_EnumTuningSpaces(This,NewEnum) \ - (This)->lpVtbl -> get_EnumTuningSpaces(This,NewEnum) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE ITuningSpaces_get_Count_Proxy( - ITuningSpaces * This, - /* [retval][out] */ long *Count); - - -void __RPC_STUB ITuningSpaces_get_Count_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [restricted][hidden][id][propget] */ HRESULT STDMETHODCALLTYPE ITuningSpaces_get__NewEnum_Proxy( - ITuningSpaces * This, - /* [retval][out] */ IEnumVARIANT **NewEnum); - - -void __RPC_STUB ITuningSpaces_get__NewEnum_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE ITuningSpaces_get_Item_Proxy( - ITuningSpaces * This, - /* [in] */ VARIANT varIndex, - /* [retval][out] */ ITuningSpace **TuningSpace); - - -void __RPC_STUB ITuningSpaces_get_Item_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][restricted][hidden][propget] */ HRESULT STDMETHODCALLTYPE ITuningSpaces_get_EnumTuningSpaces_Proxy( - ITuningSpaces * This, - /* [retval][out] */ IEnumTuningSpaces **NewEnum); - - -void __RPC_STUB ITuningSpaces_get_EnumTuningSpaces_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __ITuningSpaces_INTERFACE_DEFINED__ */ - - -#ifndef __ITuningSpaceContainer_INTERFACE_DEFINED__ -#define __ITuningSpaceContainer_INTERFACE_DEFINED__ - -/* interface ITuningSpaceContainer */ -/* [unique][helpstring][nonextensible][hidden][oleautomation][dual][uuid][object] */ - - -EXTERN_C const IID IID_ITuningSpaceContainer; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("5B692E84-E2F1-11d2-9493-00C04F72D980") - ITuningSpaceContainer : public IDispatch - { - public: - virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_Count( - /* [retval][out] */ long *Count) = 0; - - virtual /* [restricted][hidden][id][propget] */ HRESULT STDMETHODCALLTYPE get__NewEnum( - /* [retval][out] */ IEnumVARIANT **NewEnum) = 0; - - virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Item( - /* [in] */ VARIANT varIndex, - /* [retval][out] */ ITuningSpace **TuningSpace) = 0; - - virtual /* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE put_Item( - /* [in] */ VARIANT varIndex, - /* [in] */ ITuningSpace *TuningSpace) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE TuningSpacesForCLSID( - /* [in] */ BSTR SpaceCLSID, - /* [retval][out] */ ITuningSpaces **NewColl) = 0; - - virtual /* [helpstring][restricted][hidden] */ HRESULT STDMETHODCALLTYPE _TuningSpacesForCLSID( - /* [in] */ REFCLSID SpaceCLSID, - /* [retval][out] */ ITuningSpaces **NewColl) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE TuningSpacesForName( - /* [in] */ BSTR Name, - /* [retval][out] */ ITuningSpaces **NewColl) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE FindID( - /* [in] */ ITuningSpace *TuningSpace, - /* [retval][out] */ long *ID) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Add( - /* [in] */ ITuningSpace *TuningSpace, - /* [retval][out] */ VARIANT *NewIndex) = 0; - - virtual /* [helpstring][restricted][hidden][propget] */ HRESULT STDMETHODCALLTYPE get_EnumTuningSpaces( - /* [retval][out] */ IEnumTuningSpaces **ppEnum) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Remove( - /* [in] */ VARIANT Index) = 0; - - virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_MaxCount( - /* [retval][out] */ long *MaxCount) = 0; - - virtual /* [helpstring][restricted][hidden][propput] */ HRESULT STDMETHODCALLTYPE put_MaxCount( - /* [in] */ long MaxCount) = 0; - - }; - -#else /* C style interface */ - - typedef struct ITuningSpaceContainerVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - ITuningSpaceContainer * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - ITuningSpaceContainer * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - ITuningSpaceContainer * This); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( - ITuningSpaceContainer * This, - /* [out] */ UINT *pctinfo); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( - ITuningSpaceContainer * This, - /* [in] */ UINT iTInfo, - /* [in] */ LCID lcid, - /* [out] */ ITypeInfo **ppTInfo); - - HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( - ITuningSpaceContainer * This, - /* [in] */ REFIID riid, - /* [size_is][in] */ LPOLESTR *rgszNames, - /* [in] */ UINT cNames, - /* [in] */ LCID lcid, - /* [size_is][out] */ DISPID *rgDispId); - - /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( - ITuningSpaceContainer * This, - /* [in] */ DISPID dispIdMember, - /* [in] */ REFIID riid, - /* [in] */ LCID lcid, - /* [in] */ WORD wFlags, - /* [out][in] */ DISPPARAMS *pDispParams, - /* [out] */ VARIANT *pVarResult, - /* [out] */ EXCEPINFO *pExcepInfo, - /* [out] */ UINT *puArgErr); - - /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Count )( - ITuningSpaceContainer * This, - /* [retval][out] */ long *Count); - - /* [restricted][hidden][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get__NewEnum )( - ITuningSpaceContainer * This, - /* [retval][out] */ IEnumVARIANT **NewEnum); - - /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Item )( - ITuningSpaceContainer * This, - /* [in] */ VARIANT varIndex, - /* [retval][out] */ ITuningSpace **TuningSpace); - - /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Item )( - ITuningSpaceContainer * This, - /* [in] */ VARIANT varIndex, - /* [in] */ ITuningSpace *TuningSpace); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *TuningSpacesForCLSID )( - ITuningSpaceContainer * This, - /* [in] */ BSTR SpaceCLSID, - /* [retval][out] */ ITuningSpaces **NewColl); - - /* [helpstring][restricted][hidden] */ HRESULT ( STDMETHODCALLTYPE *_TuningSpacesForCLSID )( - ITuningSpaceContainer * This, - /* [in] */ REFCLSID SpaceCLSID, - /* [retval][out] */ ITuningSpaces **NewColl); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *TuningSpacesForName )( - ITuningSpaceContainer * This, - /* [in] */ BSTR Name, - /* [retval][out] */ ITuningSpaces **NewColl); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *FindID )( - ITuningSpaceContainer * This, - /* [in] */ ITuningSpace *TuningSpace, - /* [retval][out] */ long *ID); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Add )( - ITuningSpaceContainer * This, - /* [in] */ ITuningSpace *TuningSpace, - /* [retval][out] */ VARIANT *NewIndex); - - /* [helpstring][restricted][hidden][propget] */ HRESULT ( STDMETHODCALLTYPE *get_EnumTuningSpaces )( - ITuningSpaceContainer * This, - /* [retval][out] */ IEnumTuningSpaces **ppEnum); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Remove )( - ITuningSpaceContainer * This, - /* [in] */ VARIANT Index); - - /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_MaxCount )( - ITuningSpaceContainer * This, - /* [retval][out] */ long *MaxCount); - - /* [helpstring][restricted][hidden][propput] */ HRESULT ( STDMETHODCALLTYPE *put_MaxCount )( - ITuningSpaceContainer * This, - /* [in] */ long MaxCount); - - END_INTERFACE - } ITuningSpaceContainerVtbl; - - interface ITuningSpaceContainer - { - CONST_VTBL struct ITuningSpaceContainerVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define ITuningSpaceContainer_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define ITuningSpaceContainer_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define ITuningSpaceContainer_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define ITuningSpaceContainer_GetTypeInfoCount(This,pctinfo) \ - (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) - -#define ITuningSpaceContainer_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ - (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) - -#define ITuningSpaceContainer_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ - (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) - -#define ITuningSpaceContainer_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ - (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) - - -#define ITuningSpaceContainer_get_Count(This,Count) \ - (This)->lpVtbl -> get_Count(This,Count) - -#define ITuningSpaceContainer_get__NewEnum(This,NewEnum) \ - (This)->lpVtbl -> get__NewEnum(This,NewEnum) - -#define ITuningSpaceContainer_get_Item(This,varIndex,TuningSpace) \ - (This)->lpVtbl -> get_Item(This,varIndex,TuningSpace) - -#define ITuningSpaceContainer_put_Item(This,varIndex,TuningSpace) \ - (This)->lpVtbl -> put_Item(This,varIndex,TuningSpace) - -#define ITuningSpaceContainer_TuningSpacesForCLSID(This,SpaceCLSID,NewColl) \ - (This)->lpVtbl -> TuningSpacesForCLSID(This,SpaceCLSID,NewColl) - -#define ITuningSpaceContainer__TuningSpacesForCLSID(This,SpaceCLSID,NewColl) \ - (This)->lpVtbl -> _TuningSpacesForCLSID(This,SpaceCLSID,NewColl) - -#define ITuningSpaceContainer_TuningSpacesForName(This,Name,NewColl) \ - (This)->lpVtbl -> TuningSpacesForName(This,Name,NewColl) - -#define ITuningSpaceContainer_FindID(This,TuningSpace,ID) \ - (This)->lpVtbl -> FindID(This,TuningSpace,ID) - -#define ITuningSpaceContainer_Add(This,TuningSpace,NewIndex) \ - (This)->lpVtbl -> Add(This,TuningSpace,NewIndex) - -#define ITuningSpaceContainer_get_EnumTuningSpaces(This,ppEnum) \ - (This)->lpVtbl -> get_EnumTuningSpaces(This,ppEnum) - -#define ITuningSpaceContainer_Remove(This,Index) \ - (This)->lpVtbl -> Remove(This,Index) - -#define ITuningSpaceContainer_get_MaxCount(This,MaxCount) \ - (This)->lpVtbl -> get_MaxCount(This,MaxCount) - -#define ITuningSpaceContainer_put_MaxCount(This,MaxCount) \ - (This)->lpVtbl -> put_MaxCount(This,MaxCount) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE ITuningSpaceContainer_get_Count_Proxy( - ITuningSpaceContainer * This, - /* [retval][out] */ long *Count); - - -void __RPC_STUB ITuningSpaceContainer_get_Count_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [restricted][hidden][id][propget] */ HRESULT STDMETHODCALLTYPE ITuningSpaceContainer_get__NewEnum_Proxy( - ITuningSpaceContainer * This, - /* [retval][out] */ IEnumVARIANT **NewEnum); - - -void __RPC_STUB ITuningSpaceContainer_get__NewEnum_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE ITuningSpaceContainer_get_Item_Proxy( - ITuningSpaceContainer * This, - /* [in] */ VARIANT varIndex, - /* [retval][out] */ ITuningSpace **TuningSpace); - - -void __RPC_STUB ITuningSpaceContainer_get_Item_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE ITuningSpaceContainer_put_Item_Proxy( - ITuningSpaceContainer * This, - /* [in] */ VARIANT varIndex, - /* [in] */ ITuningSpace *TuningSpace); - - -void __RPC_STUB ITuningSpaceContainer_put_Item_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE ITuningSpaceContainer_TuningSpacesForCLSID_Proxy( - ITuningSpaceContainer * This, - /* [in] */ BSTR SpaceCLSID, - /* [retval][out] */ ITuningSpaces **NewColl); - - -void __RPC_STUB ITuningSpaceContainer_TuningSpacesForCLSID_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][restricted][hidden] */ HRESULT STDMETHODCALLTYPE ITuningSpaceContainer__TuningSpacesForCLSID_Proxy( - ITuningSpaceContainer * This, - /* [in] */ REFCLSID SpaceCLSID, - /* [retval][out] */ ITuningSpaces **NewColl); - - -void __RPC_STUB ITuningSpaceContainer__TuningSpacesForCLSID_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE ITuningSpaceContainer_TuningSpacesForName_Proxy( - ITuningSpaceContainer * This, - /* [in] */ BSTR Name, - /* [retval][out] */ ITuningSpaces **NewColl); - - -void __RPC_STUB ITuningSpaceContainer_TuningSpacesForName_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE ITuningSpaceContainer_FindID_Proxy( - ITuningSpaceContainer * This, - /* [in] */ ITuningSpace *TuningSpace, - /* [retval][out] */ long *ID); - - -void __RPC_STUB ITuningSpaceContainer_FindID_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE ITuningSpaceContainer_Add_Proxy( - ITuningSpaceContainer * This, - /* [in] */ ITuningSpace *TuningSpace, - /* [retval][out] */ VARIANT *NewIndex); - - -void __RPC_STUB ITuningSpaceContainer_Add_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][restricted][hidden][propget] */ HRESULT STDMETHODCALLTYPE ITuningSpaceContainer_get_EnumTuningSpaces_Proxy( - ITuningSpaceContainer * This, - /* [retval][out] */ IEnumTuningSpaces **ppEnum); - - -void __RPC_STUB ITuningSpaceContainer_get_EnumTuningSpaces_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE ITuningSpaceContainer_Remove_Proxy( - ITuningSpaceContainer * This, - /* [in] */ VARIANT Index); - - -void __RPC_STUB ITuningSpaceContainer_Remove_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE ITuningSpaceContainer_get_MaxCount_Proxy( - ITuningSpaceContainer * This, - /* [retval][out] */ long *MaxCount); - - -void __RPC_STUB ITuningSpaceContainer_get_MaxCount_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][restricted][hidden][propput] */ HRESULT STDMETHODCALLTYPE ITuningSpaceContainer_put_MaxCount_Proxy( - ITuningSpaceContainer * This, - /* [in] */ long MaxCount); - - -void __RPC_STUB ITuningSpaceContainer_put_MaxCount_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __ITuningSpaceContainer_INTERFACE_DEFINED__ */ - - -#ifndef __ITuningSpace_INTERFACE_DEFINED__ -#define __ITuningSpace_INTERFACE_DEFINED__ - -/* interface ITuningSpace */ -/* [unique][helpstring][nonextensible][oleautomation][dual][uuid][object] */ - - -EXTERN_C const IID IID_ITuningSpace; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("061C6E30-E622-11d2-9493-00C04F72D980") - ITuningSpace : public IDispatch - { - public: - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_UniqueName( - /* [retval][out] */ BSTR *Name) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_UniqueName( - /* [in] */ BSTR Name) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_FriendlyName( - /* [retval][out] */ BSTR *Name) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_FriendlyName( - /* [in] */ BSTR Name) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_CLSID( - /* [retval][out] */ BSTR *SpaceCLSID) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_NetworkType( - /* [retval][out] */ BSTR *NetworkTypeGuid) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_NetworkType( - /* [in] */ BSTR NetworkTypeGuid) = 0; - - virtual /* [restricted][hidden][helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get__NetworkType( - /* [retval][out] */ GUID *NetworkTypeGuid) = 0; - - virtual /* [restricted][hidden][helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put__NetworkType( - /* [in] */ REFCLSID NetworkTypeGuid) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE CreateTuneRequest( - /* [retval][out] */ ITuneRequest **TuneRequest) = 0; - - virtual /* [restricted][hidden][id] */ HRESULT STDMETHODCALLTYPE EnumCategoryGUIDs( - /* [retval][out] */ IEnumGUID **ppEnum) = 0; - - virtual /* [restricted][hidden][id] */ HRESULT STDMETHODCALLTYPE EnumDeviceMonikers( - /* [retval][out] */ IEnumMoniker **ppEnum) = 0; - - virtual /* [id][propget] */ HRESULT STDMETHODCALLTYPE get_DefaultPreferredComponentTypes( - /* [retval][out] */ IComponentTypes **ComponentTypes) = 0; - - virtual /* [id][propput] */ HRESULT STDMETHODCALLTYPE put_DefaultPreferredComponentTypes( - /* [in] */ IComponentTypes *NewComponentTypes) = 0; - - virtual /* [id][propget] */ HRESULT STDMETHODCALLTYPE get_FrequencyMapping( - /* [retval][out] */ BSTR *pMapping) = 0; - - virtual /* [id][propput] */ HRESULT STDMETHODCALLTYPE put_FrequencyMapping( - BSTR Mapping) = 0; - - virtual /* [id][propget] */ HRESULT STDMETHODCALLTYPE get_DefaultLocator( - /* [retval][out] */ ILocator **LocatorVal) = 0; - - virtual /* [id][propput] */ HRESULT STDMETHODCALLTYPE put_DefaultLocator( - /* [in] */ ILocator *LocatorVal) = 0; - - virtual HRESULT STDMETHODCALLTYPE Clone( - /* [retval][out] */ ITuningSpace **NewTS) = 0; - - }; - -#else /* C style interface */ - - typedef struct ITuningSpaceVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - ITuningSpace * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - ITuningSpace * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - ITuningSpace * This); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( - ITuningSpace * This, - /* [out] */ UINT *pctinfo); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( - ITuningSpace * This, - /* [in] */ UINT iTInfo, - /* [in] */ LCID lcid, - /* [out] */ ITypeInfo **ppTInfo); - - HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( - ITuningSpace * This, - /* [in] */ REFIID riid, - /* [size_is][in] */ LPOLESTR *rgszNames, - /* [in] */ UINT cNames, - /* [in] */ LCID lcid, - /* [size_is][out] */ DISPID *rgDispId); - - /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( - ITuningSpace * This, - /* [in] */ DISPID dispIdMember, - /* [in] */ REFIID riid, - /* [in] */ LCID lcid, - /* [in] */ WORD wFlags, - /* [out][in] */ DISPPARAMS *pDispParams, - /* [out] */ VARIANT *pVarResult, - /* [out] */ EXCEPINFO *pExcepInfo, - /* [out] */ UINT *puArgErr); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_UniqueName )( - ITuningSpace * This, - /* [retval][out] */ BSTR *Name); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_UniqueName )( - ITuningSpace * This, - /* [in] */ BSTR Name); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_FriendlyName )( - ITuningSpace * This, - /* [retval][out] */ BSTR *Name); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_FriendlyName )( - ITuningSpace * This, - /* [in] */ BSTR Name); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_CLSID )( - ITuningSpace * This, - /* [retval][out] */ BSTR *SpaceCLSID); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_NetworkType )( - ITuningSpace * This, - /* [retval][out] */ BSTR *NetworkTypeGuid); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_NetworkType )( - ITuningSpace * This, - /* [in] */ BSTR NetworkTypeGuid); - - /* [restricted][hidden][helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get__NetworkType )( - ITuningSpace * This, - /* [retval][out] */ GUID *NetworkTypeGuid); - - /* [restricted][hidden][helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put__NetworkType )( - ITuningSpace * This, - /* [in] */ REFCLSID NetworkTypeGuid); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *CreateTuneRequest )( - ITuningSpace * This, - /* [retval][out] */ ITuneRequest **TuneRequest); - - /* [restricted][hidden][id] */ HRESULT ( STDMETHODCALLTYPE *EnumCategoryGUIDs )( - ITuningSpace * This, - /* [retval][out] */ IEnumGUID **ppEnum); - - /* [restricted][hidden][id] */ HRESULT ( STDMETHODCALLTYPE *EnumDeviceMonikers )( - ITuningSpace * This, - /* [retval][out] */ IEnumMoniker **ppEnum); - - /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_DefaultPreferredComponentTypes )( - ITuningSpace * This, - /* [retval][out] */ IComponentTypes **ComponentTypes); - - /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_DefaultPreferredComponentTypes )( - ITuningSpace * This, - /* [in] */ IComponentTypes *NewComponentTypes); - - /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_FrequencyMapping )( - ITuningSpace * This, - /* [retval][out] */ BSTR *pMapping); - - /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_FrequencyMapping )( - ITuningSpace * This, - BSTR Mapping); - - /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_DefaultLocator )( - ITuningSpace * This, - /* [retval][out] */ ILocator **LocatorVal); - - /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_DefaultLocator )( - ITuningSpace * This, - /* [in] */ ILocator *LocatorVal); - - HRESULT ( STDMETHODCALLTYPE *Clone )( - ITuningSpace * This, - /* [retval][out] */ ITuningSpace **NewTS); - - END_INTERFACE - } ITuningSpaceVtbl; - - interface ITuningSpace - { - CONST_VTBL struct ITuningSpaceVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define ITuningSpace_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define ITuningSpace_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define ITuningSpace_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define ITuningSpace_GetTypeInfoCount(This,pctinfo) \ - (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) - -#define ITuningSpace_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ - (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) - -#define ITuningSpace_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ - (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) - -#define ITuningSpace_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ - (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) - - -#define ITuningSpace_get_UniqueName(This,Name) \ - (This)->lpVtbl -> get_UniqueName(This,Name) - -#define ITuningSpace_put_UniqueName(This,Name) \ - (This)->lpVtbl -> put_UniqueName(This,Name) - -#define ITuningSpace_get_FriendlyName(This,Name) \ - (This)->lpVtbl -> get_FriendlyName(This,Name) - -#define ITuningSpace_put_FriendlyName(This,Name) \ - (This)->lpVtbl -> put_FriendlyName(This,Name) - -#define ITuningSpace_get_CLSID(This,SpaceCLSID) \ - (This)->lpVtbl -> get_CLSID(This,SpaceCLSID) - -#define ITuningSpace_get_NetworkType(This,NetworkTypeGuid) \ - (This)->lpVtbl -> get_NetworkType(This,NetworkTypeGuid) - -#define ITuningSpace_put_NetworkType(This,NetworkTypeGuid) \ - (This)->lpVtbl -> put_NetworkType(This,NetworkTypeGuid) - -#define ITuningSpace_get__NetworkType(This,NetworkTypeGuid) \ - (This)->lpVtbl -> get__NetworkType(This,NetworkTypeGuid) - -#define ITuningSpace_put__NetworkType(This,NetworkTypeGuid) \ - (This)->lpVtbl -> put__NetworkType(This,NetworkTypeGuid) - -#define ITuningSpace_CreateTuneRequest(This,TuneRequest) \ - (This)->lpVtbl -> CreateTuneRequest(This,TuneRequest) - -#define ITuningSpace_EnumCategoryGUIDs(This,ppEnum) \ - (This)->lpVtbl -> EnumCategoryGUIDs(This,ppEnum) - -#define ITuningSpace_EnumDeviceMonikers(This,ppEnum) \ - (This)->lpVtbl -> EnumDeviceMonikers(This,ppEnum) - -#define ITuningSpace_get_DefaultPreferredComponentTypes(This,ComponentTypes) \ - (This)->lpVtbl -> get_DefaultPreferredComponentTypes(This,ComponentTypes) - -#define ITuningSpace_put_DefaultPreferredComponentTypes(This,NewComponentTypes) \ - (This)->lpVtbl -> put_DefaultPreferredComponentTypes(This,NewComponentTypes) - -#define ITuningSpace_get_FrequencyMapping(This,pMapping) \ - (This)->lpVtbl -> get_FrequencyMapping(This,pMapping) - -#define ITuningSpace_put_FrequencyMapping(This,Mapping) \ - (This)->lpVtbl -> put_FrequencyMapping(This,Mapping) - -#define ITuningSpace_get_DefaultLocator(This,LocatorVal) \ - (This)->lpVtbl -> get_DefaultLocator(This,LocatorVal) - -#define ITuningSpace_put_DefaultLocator(This,LocatorVal) \ - (This)->lpVtbl -> put_DefaultLocator(This,LocatorVal) - -#define ITuningSpace_Clone(This,NewTS) \ - (This)->lpVtbl -> Clone(This,NewTS) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE ITuningSpace_get_UniqueName_Proxy( - ITuningSpace * This, - /* [retval][out] */ BSTR *Name); - - -void __RPC_STUB ITuningSpace_get_UniqueName_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE ITuningSpace_put_UniqueName_Proxy( - ITuningSpace * This, - /* [in] */ BSTR Name); - - -void __RPC_STUB ITuningSpace_put_UniqueName_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE ITuningSpace_get_FriendlyName_Proxy( - ITuningSpace * This, - /* [retval][out] */ BSTR *Name); - - -void __RPC_STUB ITuningSpace_get_FriendlyName_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE ITuningSpace_put_FriendlyName_Proxy( - ITuningSpace * This, - /* [in] */ BSTR Name); - - -void __RPC_STUB ITuningSpace_put_FriendlyName_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE ITuningSpace_get_CLSID_Proxy( - ITuningSpace * This, - /* [retval][out] */ BSTR *SpaceCLSID); - - -void __RPC_STUB ITuningSpace_get_CLSID_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE ITuningSpace_get_NetworkType_Proxy( - ITuningSpace * This, - /* [retval][out] */ BSTR *NetworkTypeGuid); - - -void __RPC_STUB ITuningSpace_get_NetworkType_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE ITuningSpace_put_NetworkType_Proxy( - ITuningSpace * This, - /* [in] */ BSTR NetworkTypeGuid); - - -void __RPC_STUB ITuningSpace_put_NetworkType_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [restricted][hidden][helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE ITuningSpace_get__NetworkType_Proxy( - ITuningSpace * This, - /* [retval][out] */ GUID *NetworkTypeGuid); - - -void __RPC_STUB ITuningSpace_get__NetworkType_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [restricted][hidden][helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE ITuningSpace_put__NetworkType_Proxy( - ITuningSpace * This, - /* [in] */ REFCLSID NetworkTypeGuid); - - -void __RPC_STUB ITuningSpace_put__NetworkType_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE ITuningSpace_CreateTuneRequest_Proxy( - ITuningSpace * This, - /* [retval][out] */ ITuneRequest **TuneRequest); - - -void __RPC_STUB ITuningSpace_CreateTuneRequest_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [restricted][hidden][id] */ HRESULT STDMETHODCALLTYPE ITuningSpace_EnumCategoryGUIDs_Proxy( - ITuningSpace * This, - /* [retval][out] */ IEnumGUID **ppEnum); - - -void __RPC_STUB ITuningSpace_EnumCategoryGUIDs_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [restricted][hidden][id] */ HRESULT STDMETHODCALLTYPE ITuningSpace_EnumDeviceMonikers_Proxy( - ITuningSpace * This, - /* [retval][out] */ IEnumMoniker **ppEnum); - - -void __RPC_STUB ITuningSpace_EnumDeviceMonikers_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [id][propget] */ HRESULT STDMETHODCALLTYPE ITuningSpace_get_DefaultPreferredComponentTypes_Proxy( - ITuningSpace * This, - /* [retval][out] */ IComponentTypes **ComponentTypes); - - -void __RPC_STUB ITuningSpace_get_DefaultPreferredComponentTypes_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [id][propput] */ HRESULT STDMETHODCALLTYPE ITuningSpace_put_DefaultPreferredComponentTypes_Proxy( - ITuningSpace * This, - /* [in] */ IComponentTypes *NewComponentTypes); - - -void __RPC_STUB ITuningSpace_put_DefaultPreferredComponentTypes_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [id][propget] */ HRESULT STDMETHODCALLTYPE ITuningSpace_get_FrequencyMapping_Proxy( - ITuningSpace * This, - /* [retval][out] */ BSTR *pMapping); - - -void __RPC_STUB ITuningSpace_get_FrequencyMapping_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [id][propput] */ HRESULT STDMETHODCALLTYPE ITuningSpace_put_FrequencyMapping_Proxy( - ITuningSpace * This, - BSTR Mapping); - - -void __RPC_STUB ITuningSpace_put_FrequencyMapping_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [id][propget] */ HRESULT STDMETHODCALLTYPE ITuningSpace_get_DefaultLocator_Proxy( - ITuningSpace * This, - /* [retval][out] */ ILocator **LocatorVal); - - -void __RPC_STUB ITuningSpace_get_DefaultLocator_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [id][propput] */ HRESULT STDMETHODCALLTYPE ITuningSpace_put_DefaultLocator_Proxy( - ITuningSpace * This, - /* [in] */ ILocator *LocatorVal); - - -void __RPC_STUB ITuningSpace_put_DefaultLocator_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE ITuningSpace_Clone_Proxy( - ITuningSpace * This, - /* [retval][out] */ ITuningSpace **NewTS); - - -void __RPC_STUB ITuningSpace_Clone_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __ITuningSpace_INTERFACE_DEFINED__ */ - - -#ifndef __IEnumTuningSpaces_INTERFACE_DEFINED__ -#define __IEnumTuningSpaces_INTERFACE_DEFINED__ - -/* interface IEnumTuningSpaces */ -/* [unique][uuid][object][restricted][hidden] */ - - -EXTERN_C const IID IID_IEnumTuningSpaces; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("8B8EB248-FC2B-11d2-9D8C-00C04F72D980") - IEnumTuningSpaces : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE Next( - /* [in] */ ULONG celt, - /* [length_is][size_is][out] */ ITuningSpace **rgelt, - /* [out] */ ULONG *pceltFetched) = 0; - - virtual HRESULT STDMETHODCALLTYPE Skip( - /* [in] */ ULONG celt) = 0; - - virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0; - - virtual HRESULT STDMETHODCALLTYPE Clone( - /* [out] */ IEnumTuningSpaces **ppEnum) = 0; - - }; - -#else /* C style interface */ - - typedef struct IEnumTuningSpacesVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IEnumTuningSpaces * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IEnumTuningSpaces * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IEnumTuningSpaces * This); - - HRESULT ( STDMETHODCALLTYPE *Next )( - IEnumTuningSpaces * This, - /* [in] */ ULONG celt, - /* [length_is][size_is][out] */ ITuningSpace **rgelt, - /* [out] */ ULONG *pceltFetched); - - HRESULT ( STDMETHODCALLTYPE *Skip )( - IEnumTuningSpaces * This, - /* [in] */ ULONG celt); - - HRESULT ( STDMETHODCALLTYPE *Reset )( - IEnumTuningSpaces * This); - - HRESULT ( STDMETHODCALLTYPE *Clone )( - IEnumTuningSpaces * This, - /* [out] */ IEnumTuningSpaces **ppEnum); - - END_INTERFACE - } IEnumTuningSpacesVtbl; - - interface IEnumTuningSpaces - { - CONST_VTBL struct IEnumTuningSpacesVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IEnumTuningSpaces_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IEnumTuningSpaces_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IEnumTuningSpaces_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IEnumTuningSpaces_Next(This,celt,rgelt,pceltFetched) \ - (This)->lpVtbl -> Next(This,celt,rgelt,pceltFetched) - -#define IEnumTuningSpaces_Skip(This,celt) \ - (This)->lpVtbl -> Skip(This,celt) - -#define IEnumTuningSpaces_Reset(This) \ - (This)->lpVtbl -> Reset(This) - -#define IEnumTuningSpaces_Clone(This,ppEnum) \ - (This)->lpVtbl -> Clone(This,ppEnum) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IEnumTuningSpaces_Next_Proxy( - IEnumTuningSpaces * This, - /* [in] */ ULONG celt, - /* [length_is][size_is][out] */ ITuningSpace **rgelt, - /* [out] */ ULONG *pceltFetched); - - -void __RPC_STUB IEnumTuningSpaces_Next_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IEnumTuningSpaces_Skip_Proxy( - IEnumTuningSpaces * This, - /* [in] */ ULONG celt); - - -void __RPC_STUB IEnumTuningSpaces_Skip_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IEnumTuningSpaces_Reset_Proxy( - IEnumTuningSpaces * This); - - -void __RPC_STUB IEnumTuningSpaces_Reset_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IEnumTuningSpaces_Clone_Proxy( - IEnumTuningSpaces * This, - /* [out] */ IEnumTuningSpaces **ppEnum); - - -void __RPC_STUB IEnumTuningSpaces_Clone_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IEnumTuningSpaces_INTERFACE_DEFINED__ */ - - -#ifndef __IDVBTuningSpace_INTERFACE_DEFINED__ -#define __IDVBTuningSpace_INTERFACE_DEFINED__ - -/* interface IDVBTuningSpace */ -/* [unique][uuid][nonextensible][oleautomation][dual][hidden][object] */ - - -EXTERN_C const IID IID_IDVBTuningSpace; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("ADA0B268-3B19-4e5b-ACC4-49F852BE13BA") - IDVBTuningSpace : public ITuningSpace - { - public: - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_SystemType( - /* [retval][out] */ DVBSystemType *SysType) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_SystemType( - /* [in] */ DVBSystemType SysType) = 0; - - }; - -#else /* C style interface */ - - typedef struct IDVBTuningSpaceVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IDVBTuningSpace * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IDVBTuningSpace * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IDVBTuningSpace * This); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( - IDVBTuningSpace * This, - /* [out] */ UINT *pctinfo); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( - IDVBTuningSpace * This, - /* [in] */ UINT iTInfo, - /* [in] */ LCID lcid, - /* [out] */ ITypeInfo **ppTInfo); - - HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( - IDVBTuningSpace * This, - /* [in] */ REFIID riid, - /* [size_is][in] */ LPOLESTR *rgszNames, - /* [in] */ UINT cNames, - /* [in] */ LCID lcid, - /* [size_is][out] */ DISPID *rgDispId); - - /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( - IDVBTuningSpace * This, - /* [in] */ DISPID dispIdMember, - /* [in] */ REFIID riid, - /* [in] */ LCID lcid, - /* [in] */ WORD wFlags, - /* [out][in] */ DISPPARAMS *pDispParams, - /* [out] */ VARIANT *pVarResult, - /* [out] */ EXCEPINFO *pExcepInfo, - /* [out] */ UINT *puArgErr); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_UniqueName )( - IDVBTuningSpace * This, - /* [retval][out] */ BSTR *Name); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_UniqueName )( - IDVBTuningSpace * This, - /* [in] */ BSTR Name); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_FriendlyName )( - IDVBTuningSpace * This, - /* [retval][out] */ BSTR *Name); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_FriendlyName )( - IDVBTuningSpace * This, - /* [in] */ BSTR Name); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_CLSID )( - IDVBTuningSpace * This, - /* [retval][out] */ BSTR *SpaceCLSID); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_NetworkType )( - IDVBTuningSpace * This, - /* [retval][out] */ BSTR *NetworkTypeGuid); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_NetworkType )( - IDVBTuningSpace * This, - /* [in] */ BSTR NetworkTypeGuid); - - /* [restricted][hidden][helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get__NetworkType )( - IDVBTuningSpace * This, - /* [retval][out] */ GUID *NetworkTypeGuid); - - /* [restricted][hidden][helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put__NetworkType )( - IDVBTuningSpace * This, - /* [in] */ REFCLSID NetworkTypeGuid); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *CreateTuneRequest )( - IDVBTuningSpace * This, - /* [retval][out] */ ITuneRequest **TuneRequest); - - /* [restricted][hidden][id] */ HRESULT ( STDMETHODCALLTYPE *EnumCategoryGUIDs )( - IDVBTuningSpace * This, - /* [retval][out] */ IEnumGUID **ppEnum); - - /* [restricted][hidden][id] */ HRESULT ( STDMETHODCALLTYPE *EnumDeviceMonikers )( - IDVBTuningSpace * This, - /* [retval][out] */ IEnumMoniker **ppEnum); - - /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_DefaultPreferredComponentTypes )( - IDVBTuningSpace * This, - /* [retval][out] */ IComponentTypes **ComponentTypes); - - /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_DefaultPreferredComponentTypes )( - IDVBTuningSpace * This, - /* [in] */ IComponentTypes *NewComponentTypes); - - /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_FrequencyMapping )( - IDVBTuningSpace * This, - /* [retval][out] */ BSTR *pMapping); - - /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_FrequencyMapping )( - IDVBTuningSpace * This, - BSTR Mapping); - - /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_DefaultLocator )( - IDVBTuningSpace * This, - /* [retval][out] */ ILocator **LocatorVal); - - /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_DefaultLocator )( - IDVBTuningSpace * This, - /* [in] */ ILocator *LocatorVal); - - HRESULT ( STDMETHODCALLTYPE *Clone )( - IDVBTuningSpace * This, - /* [retval][out] */ ITuningSpace **NewTS); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_SystemType )( - IDVBTuningSpace * This, - /* [retval][out] */ DVBSystemType *SysType); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_SystemType )( - IDVBTuningSpace * This, - /* [in] */ DVBSystemType SysType); - - END_INTERFACE - } IDVBTuningSpaceVtbl; - - interface IDVBTuningSpace - { - CONST_VTBL struct IDVBTuningSpaceVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IDVBTuningSpace_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IDVBTuningSpace_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IDVBTuningSpace_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IDVBTuningSpace_GetTypeInfoCount(This,pctinfo) \ - (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) - -#define IDVBTuningSpace_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ - (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) - -#define IDVBTuningSpace_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ - (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) - -#define IDVBTuningSpace_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ - (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) - - -#define IDVBTuningSpace_get_UniqueName(This,Name) \ - (This)->lpVtbl -> get_UniqueName(This,Name) - -#define IDVBTuningSpace_put_UniqueName(This,Name) \ - (This)->lpVtbl -> put_UniqueName(This,Name) - -#define IDVBTuningSpace_get_FriendlyName(This,Name) \ - (This)->lpVtbl -> get_FriendlyName(This,Name) - -#define IDVBTuningSpace_put_FriendlyName(This,Name) \ - (This)->lpVtbl -> put_FriendlyName(This,Name) - -#define IDVBTuningSpace_get_CLSID(This,SpaceCLSID) \ - (This)->lpVtbl -> get_CLSID(This,SpaceCLSID) - -#define IDVBTuningSpace_get_NetworkType(This,NetworkTypeGuid) \ - (This)->lpVtbl -> get_NetworkType(This,NetworkTypeGuid) - -#define IDVBTuningSpace_put_NetworkType(This,NetworkTypeGuid) \ - (This)->lpVtbl -> put_NetworkType(This,NetworkTypeGuid) - -#define IDVBTuningSpace_get__NetworkType(This,NetworkTypeGuid) \ - (This)->lpVtbl -> get__NetworkType(This,NetworkTypeGuid) - -#define IDVBTuningSpace_put__NetworkType(This,NetworkTypeGuid) \ - (This)->lpVtbl -> put__NetworkType(This,NetworkTypeGuid) - -#define IDVBTuningSpace_CreateTuneRequest(This,TuneRequest) \ - (This)->lpVtbl -> CreateTuneRequest(This,TuneRequest) - -#define IDVBTuningSpace_EnumCategoryGUIDs(This,ppEnum) \ - (This)->lpVtbl -> EnumCategoryGUIDs(This,ppEnum) - -#define IDVBTuningSpace_EnumDeviceMonikers(This,ppEnum) \ - (This)->lpVtbl -> EnumDeviceMonikers(This,ppEnum) - -#define IDVBTuningSpace_get_DefaultPreferredComponentTypes(This,ComponentTypes) \ - (This)->lpVtbl -> get_DefaultPreferredComponentTypes(This,ComponentTypes) - -#define IDVBTuningSpace_put_DefaultPreferredComponentTypes(This,NewComponentTypes) \ - (This)->lpVtbl -> put_DefaultPreferredComponentTypes(This,NewComponentTypes) - -#define IDVBTuningSpace_get_FrequencyMapping(This,pMapping) \ - (This)->lpVtbl -> get_FrequencyMapping(This,pMapping) - -#define IDVBTuningSpace_put_FrequencyMapping(This,Mapping) \ - (This)->lpVtbl -> put_FrequencyMapping(This,Mapping) - -#define IDVBTuningSpace_get_DefaultLocator(This,LocatorVal) \ - (This)->lpVtbl -> get_DefaultLocator(This,LocatorVal) - -#define IDVBTuningSpace_put_DefaultLocator(This,LocatorVal) \ - (This)->lpVtbl -> put_DefaultLocator(This,LocatorVal) - -#define IDVBTuningSpace_Clone(This,NewTS) \ - (This)->lpVtbl -> Clone(This,NewTS) - - -#define IDVBTuningSpace_get_SystemType(This,SysType) \ - (This)->lpVtbl -> get_SystemType(This,SysType) - -#define IDVBTuningSpace_put_SystemType(This,SysType) \ - (This)->lpVtbl -> put_SystemType(This,SysType) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDVBTuningSpace_get_SystemType_Proxy( - IDVBTuningSpace * This, - /* [retval][out] */ DVBSystemType *SysType); - - -void __RPC_STUB IDVBTuningSpace_get_SystemType_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDVBTuningSpace_put_SystemType_Proxy( - IDVBTuningSpace * This, - /* [in] */ DVBSystemType SysType); - - -void __RPC_STUB IDVBTuningSpace_put_SystemType_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IDVBTuningSpace_INTERFACE_DEFINED__ */ - - -#ifndef __IDVBTuningSpace2_INTERFACE_DEFINED__ -#define __IDVBTuningSpace2_INTERFACE_DEFINED__ - -/* interface IDVBTuningSpace2 */ -/* [unique][uuid][nonextensible][oleautomation][dual][hidden][object] */ - - -EXTERN_C const IID IID_IDVBTuningSpace2; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("843188B4-CE62-43db-966B-8145A094E040") - IDVBTuningSpace2 : public IDVBTuningSpace - { - public: - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_NetworkID( - /* [retval][out] */ long *NetworkID) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_NetworkID( - /* [in] */ long NetworkID) = 0; - - }; - -#else /* C style interface */ - - typedef struct IDVBTuningSpace2Vtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IDVBTuningSpace2 * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IDVBTuningSpace2 * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IDVBTuningSpace2 * This); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( - IDVBTuningSpace2 * This, - /* [out] */ UINT *pctinfo); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( - IDVBTuningSpace2 * This, - /* [in] */ UINT iTInfo, - /* [in] */ LCID lcid, - /* [out] */ ITypeInfo **ppTInfo); - - HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( - IDVBTuningSpace2 * This, - /* [in] */ REFIID riid, - /* [size_is][in] */ LPOLESTR *rgszNames, - /* [in] */ UINT cNames, - /* [in] */ LCID lcid, - /* [size_is][out] */ DISPID *rgDispId); - - /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( - IDVBTuningSpace2 * This, - /* [in] */ DISPID dispIdMember, - /* [in] */ REFIID riid, - /* [in] */ LCID lcid, - /* [in] */ WORD wFlags, - /* [out][in] */ DISPPARAMS *pDispParams, - /* [out] */ VARIANT *pVarResult, - /* [out] */ EXCEPINFO *pExcepInfo, - /* [out] */ UINT *puArgErr); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_UniqueName )( - IDVBTuningSpace2 * This, - /* [retval][out] */ BSTR *Name); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_UniqueName )( - IDVBTuningSpace2 * This, - /* [in] */ BSTR Name); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_FriendlyName )( - IDVBTuningSpace2 * This, - /* [retval][out] */ BSTR *Name); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_FriendlyName )( - IDVBTuningSpace2 * This, - /* [in] */ BSTR Name); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_CLSID )( - IDVBTuningSpace2 * This, - /* [retval][out] */ BSTR *SpaceCLSID); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_NetworkType )( - IDVBTuningSpace2 * This, - /* [retval][out] */ BSTR *NetworkTypeGuid); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_NetworkType )( - IDVBTuningSpace2 * This, - /* [in] */ BSTR NetworkTypeGuid); - - /* [restricted][hidden][helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get__NetworkType )( - IDVBTuningSpace2 * This, - /* [retval][out] */ GUID *NetworkTypeGuid); - - /* [restricted][hidden][helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put__NetworkType )( - IDVBTuningSpace2 * This, - /* [in] */ REFCLSID NetworkTypeGuid); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *CreateTuneRequest )( - IDVBTuningSpace2 * This, - /* [retval][out] */ ITuneRequest **TuneRequest); - - /* [restricted][hidden][id] */ HRESULT ( STDMETHODCALLTYPE *EnumCategoryGUIDs )( - IDVBTuningSpace2 * This, - /* [retval][out] */ IEnumGUID **ppEnum); - - /* [restricted][hidden][id] */ HRESULT ( STDMETHODCALLTYPE *EnumDeviceMonikers )( - IDVBTuningSpace2 * This, - /* [retval][out] */ IEnumMoniker **ppEnum); - - /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_DefaultPreferredComponentTypes )( - IDVBTuningSpace2 * This, - /* [retval][out] */ IComponentTypes **ComponentTypes); - - /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_DefaultPreferredComponentTypes )( - IDVBTuningSpace2 * This, - /* [in] */ IComponentTypes *NewComponentTypes); - - /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_FrequencyMapping )( - IDVBTuningSpace2 * This, - /* [retval][out] */ BSTR *pMapping); - - /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_FrequencyMapping )( - IDVBTuningSpace2 * This, - BSTR Mapping); - - /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_DefaultLocator )( - IDVBTuningSpace2 * This, - /* [retval][out] */ ILocator **LocatorVal); - - /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_DefaultLocator )( - IDVBTuningSpace2 * This, - /* [in] */ ILocator *LocatorVal); - - HRESULT ( STDMETHODCALLTYPE *Clone )( - IDVBTuningSpace2 * This, - /* [retval][out] */ ITuningSpace **NewTS); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_SystemType )( - IDVBTuningSpace2 * This, - /* [retval][out] */ DVBSystemType *SysType); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_SystemType )( - IDVBTuningSpace2 * This, - /* [in] */ DVBSystemType SysType); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_NetworkID )( - IDVBTuningSpace2 * This, - /* [retval][out] */ long *NetworkID); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_NetworkID )( - IDVBTuningSpace2 * This, - /* [in] */ long NetworkID); - - END_INTERFACE - } IDVBTuningSpace2Vtbl; - - interface IDVBTuningSpace2 - { - CONST_VTBL struct IDVBTuningSpace2Vtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IDVBTuningSpace2_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IDVBTuningSpace2_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IDVBTuningSpace2_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IDVBTuningSpace2_GetTypeInfoCount(This,pctinfo) \ - (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) - -#define IDVBTuningSpace2_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ - (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) - -#define IDVBTuningSpace2_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ - (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) - -#define IDVBTuningSpace2_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ - (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) - - -#define IDVBTuningSpace2_get_UniqueName(This,Name) \ - (This)->lpVtbl -> get_UniqueName(This,Name) - -#define IDVBTuningSpace2_put_UniqueName(This,Name) \ - (This)->lpVtbl -> put_UniqueName(This,Name) - -#define IDVBTuningSpace2_get_FriendlyName(This,Name) \ - (This)->lpVtbl -> get_FriendlyName(This,Name) - -#define IDVBTuningSpace2_put_FriendlyName(This,Name) \ - (This)->lpVtbl -> put_FriendlyName(This,Name) - -#define IDVBTuningSpace2_get_CLSID(This,SpaceCLSID) \ - (This)->lpVtbl -> get_CLSID(This,SpaceCLSID) - -#define IDVBTuningSpace2_get_NetworkType(This,NetworkTypeGuid) \ - (This)->lpVtbl -> get_NetworkType(This,NetworkTypeGuid) - -#define IDVBTuningSpace2_put_NetworkType(This,NetworkTypeGuid) \ - (This)->lpVtbl -> put_NetworkType(This,NetworkTypeGuid) - -#define IDVBTuningSpace2_get__NetworkType(This,NetworkTypeGuid) \ - (This)->lpVtbl -> get__NetworkType(This,NetworkTypeGuid) - -#define IDVBTuningSpace2_put__NetworkType(This,NetworkTypeGuid) \ - (This)->lpVtbl -> put__NetworkType(This,NetworkTypeGuid) - -#define IDVBTuningSpace2_CreateTuneRequest(This,TuneRequest) \ - (This)->lpVtbl -> CreateTuneRequest(This,TuneRequest) - -#define IDVBTuningSpace2_EnumCategoryGUIDs(This,ppEnum) \ - (This)->lpVtbl -> EnumCategoryGUIDs(This,ppEnum) - -#define IDVBTuningSpace2_EnumDeviceMonikers(This,ppEnum) \ - (This)->lpVtbl -> EnumDeviceMonikers(This,ppEnum) - -#define IDVBTuningSpace2_get_DefaultPreferredComponentTypes(This,ComponentTypes) \ - (This)->lpVtbl -> get_DefaultPreferredComponentTypes(This,ComponentTypes) - -#define IDVBTuningSpace2_put_DefaultPreferredComponentTypes(This,NewComponentTypes) \ - (This)->lpVtbl -> put_DefaultPreferredComponentTypes(This,NewComponentTypes) - -#define IDVBTuningSpace2_get_FrequencyMapping(This,pMapping) \ - (This)->lpVtbl -> get_FrequencyMapping(This,pMapping) - -#define IDVBTuningSpace2_put_FrequencyMapping(This,Mapping) \ - (This)->lpVtbl -> put_FrequencyMapping(This,Mapping) - -#define IDVBTuningSpace2_get_DefaultLocator(This,LocatorVal) \ - (This)->lpVtbl -> get_DefaultLocator(This,LocatorVal) - -#define IDVBTuningSpace2_put_DefaultLocator(This,LocatorVal) \ - (This)->lpVtbl -> put_DefaultLocator(This,LocatorVal) - -#define IDVBTuningSpace2_Clone(This,NewTS) \ - (This)->lpVtbl -> Clone(This,NewTS) - - -#define IDVBTuningSpace2_get_SystemType(This,SysType) \ - (This)->lpVtbl -> get_SystemType(This,SysType) - -#define IDVBTuningSpace2_put_SystemType(This,SysType) \ - (This)->lpVtbl -> put_SystemType(This,SysType) - - -#define IDVBTuningSpace2_get_NetworkID(This,NetworkID) \ - (This)->lpVtbl -> get_NetworkID(This,NetworkID) - -#define IDVBTuningSpace2_put_NetworkID(This,NetworkID) \ - (This)->lpVtbl -> put_NetworkID(This,NetworkID) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDVBTuningSpace2_get_NetworkID_Proxy( - IDVBTuningSpace2 * This, - /* [retval][out] */ long *NetworkID); - - -void __RPC_STUB IDVBTuningSpace2_get_NetworkID_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDVBTuningSpace2_put_NetworkID_Proxy( - IDVBTuningSpace2 * This, - /* [in] */ long NetworkID); - - -void __RPC_STUB IDVBTuningSpace2_put_NetworkID_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IDVBTuningSpace2_INTERFACE_DEFINED__ */ - - -#ifndef __IDVBSTuningSpace_INTERFACE_DEFINED__ -#define __IDVBSTuningSpace_INTERFACE_DEFINED__ - -/* interface IDVBSTuningSpace */ -/* [unique][uuid][nonextensible][oleautomation][dual][hidden][object] */ - - -EXTERN_C const IID IID_IDVBSTuningSpace; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("CDF7BE60-D954-42fd-A972-78971958E470") - IDVBSTuningSpace : public IDVBTuningSpace2 - { - public: - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_LowOscillator( - /* [retval][out] */ long *LowOscillator) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_LowOscillator( - /* [in] */ long LowOscillator) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_HighOscillator( - /* [retval][out] */ long *HighOscillator) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_HighOscillator( - /* [in] */ long HighOscillator) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_LNBSwitch( - /* [retval][out] */ long *LNBSwitch) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_LNBSwitch( - /* [in] */ long LNBSwitch) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_InputRange( - /* [retval][out] */ BSTR *InputRange) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_InputRange( - /* [in] */ BSTR InputRange) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_SpectralInversion( - /* [retval][out] */ SpectralInversion *SpectralInversionVal) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_SpectralInversion( - /* [in] */ SpectralInversion SpectralInversionVal) = 0; - - }; - -#else /* C style interface */ - - typedef struct IDVBSTuningSpaceVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IDVBSTuningSpace * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IDVBSTuningSpace * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IDVBSTuningSpace * This); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( - IDVBSTuningSpace * This, - /* [out] */ UINT *pctinfo); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( - IDVBSTuningSpace * This, - /* [in] */ UINT iTInfo, - /* [in] */ LCID lcid, - /* [out] */ ITypeInfo **ppTInfo); - - HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( - IDVBSTuningSpace * This, - /* [in] */ REFIID riid, - /* [size_is][in] */ LPOLESTR *rgszNames, - /* [in] */ UINT cNames, - /* [in] */ LCID lcid, - /* [size_is][out] */ DISPID *rgDispId); - - /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( - IDVBSTuningSpace * This, - /* [in] */ DISPID dispIdMember, - /* [in] */ REFIID riid, - /* [in] */ LCID lcid, - /* [in] */ WORD wFlags, - /* [out][in] */ DISPPARAMS *pDispParams, - /* [out] */ VARIANT *pVarResult, - /* [out] */ EXCEPINFO *pExcepInfo, - /* [out] */ UINT *puArgErr); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_UniqueName )( - IDVBSTuningSpace * This, - /* [retval][out] */ BSTR *Name); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_UniqueName )( - IDVBSTuningSpace * This, - /* [in] */ BSTR Name); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_FriendlyName )( - IDVBSTuningSpace * This, - /* [retval][out] */ BSTR *Name); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_FriendlyName )( - IDVBSTuningSpace * This, - /* [in] */ BSTR Name); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_CLSID )( - IDVBSTuningSpace * This, - /* [retval][out] */ BSTR *SpaceCLSID); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_NetworkType )( - IDVBSTuningSpace * This, - /* [retval][out] */ BSTR *NetworkTypeGuid); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_NetworkType )( - IDVBSTuningSpace * This, - /* [in] */ BSTR NetworkTypeGuid); - - /* [restricted][hidden][helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get__NetworkType )( - IDVBSTuningSpace * This, - /* [retval][out] */ GUID *NetworkTypeGuid); - - /* [restricted][hidden][helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put__NetworkType )( - IDVBSTuningSpace * This, - /* [in] */ REFCLSID NetworkTypeGuid); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *CreateTuneRequest )( - IDVBSTuningSpace * This, - /* [retval][out] */ ITuneRequest **TuneRequest); - - /* [restricted][hidden][id] */ HRESULT ( STDMETHODCALLTYPE *EnumCategoryGUIDs )( - IDVBSTuningSpace * This, - /* [retval][out] */ IEnumGUID **ppEnum); - - /* [restricted][hidden][id] */ HRESULT ( STDMETHODCALLTYPE *EnumDeviceMonikers )( - IDVBSTuningSpace * This, - /* [retval][out] */ IEnumMoniker **ppEnum); - - /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_DefaultPreferredComponentTypes )( - IDVBSTuningSpace * This, - /* [retval][out] */ IComponentTypes **ComponentTypes); - - /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_DefaultPreferredComponentTypes )( - IDVBSTuningSpace * This, - /* [in] */ IComponentTypes *NewComponentTypes); - - /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_FrequencyMapping )( - IDVBSTuningSpace * This, - /* [retval][out] */ BSTR *pMapping); - - /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_FrequencyMapping )( - IDVBSTuningSpace * This, - BSTR Mapping); - - /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_DefaultLocator )( - IDVBSTuningSpace * This, - /* [retval][out] */ ILocator **LocatorVal); - - /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_DefaultLocator )( - IDVBSTuningSpace * This, - /* [in] */ ILocator *LocatorVal); - - HRESULT ( STDMETHODCALLTYPE *Clone )( - IDVBSTuningSpace * This, - /* [retval][out] */ ITuningSpace **NewTS); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_SystemType )( - IDVBSTuningSpace * This, - /* [retval][out] */ DVBSystemType *SysType); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_SystemType )( - IDVBSTuningSpace * This, - /* [in] */ DVBSystemType SysType); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_NetworkID )( - IDVBSTuningSpace * This, - /* [retval][out] */ long *NetworkID); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_NetworkID )( - IDVBSTuningSpace * This, - /* [in] */ long NetworkID); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_LowOscillator )( - IDVBSTuningSpace * This, - /* [retval][out] */ long *LowOscillator); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_LowOscillator )( - IDVBSTuningSpace * This, - /* [in] */ long LowOscillator); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_HighOscillator )( - IDVBSTuningSpace * This, - /* [retval][out] */ long *HighOscillator); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_HighOscillator )( - IDVBSTuningSpace * This, - /* [in] */ long HighOscillator); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_LNBSwitch )( - IDVBSTuningSpace * This, - /* [retval][out] */ long *LNBSwitch); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_LNBSwitch )( - IDVBSTuningSpace * This, - /* [in] */ long LNBSwitch); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_InputRange )( - IDVBSTuningSpace * This, - /* [retval][out] */ BSTR *InputRange); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_InputRange )( - IDVBSTuningSpace * This, - /* [in] */ BSTR InputRange); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_SpectralInversion )( - IDVBSTuningSpace * This, - /* [retval][out] */ SpectralInversion *SpectralInversionVal); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_SpectralInversion )( - IDVBSTuningSpace * This, - /* [in] */ SpectralInversion SpectralInversionVal); - - END_INTERFACE - } IDVBSTuningSpaceVtbl; - - interface IDVBSTuningSpace - { - CONST_VTBL struct IDVBSTuningSpaceVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IDVBSTuningSpace_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IDVBSTuningSpace_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IDVBSTuningSpace_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IDVBSTuningSpace_GetTypeInfoCount(This,pctinfo) \ - (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) - -#define IDVBSTuningSpace_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ - (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) - -#define IDVBSTuningSpace_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ - (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) - -#define IDVBSTuningSpace_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ - (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) - - -#define IDVBSTuningSpace_get_UniqueName(This,Name) \ - (This)->lpVtbl -> get_UniqueName(This,Name) - -#define IDVBSTuningSpace_put_UniqueName(This,Name) \ - (This)->lpVtbl -> put_UniqueName(This,Name) - -#define IDVBSTuningSpace_get_FriendlyName(This,Name) \ - (This)->lpVtbl -> get_FriendlyName(This,Name) - -#define IDVBSTuningSpace_put_FriendlyName(This,Name) \ - (This)->lpVtbl -> put_FriendlyName(This,Name) - -#define IDVBSTuningSpace_get_CLSID(This,SpaceCLSID) \ - (This)->lpVtbl -> get_CLSID(This,SpaceCLSID) - -#define IDVBSTuningSpace_get_NetworkType(This,NetworkTypeGuid) \ - (This)->lpVtbl -> get_NetworkType(This,NetworkTypeGuid) - -#define IDVBSTuningSpace_put_NetworkType(This,NetworkTypeGuid) \ - (This)->lpVtbl -> put_NetworkType(This,NetworkTypeGuid) - -#define IDVBSTuningSpace_get__NetworkType(This,NetworkTypeGuid) \ - (This)->lpVtbl -> get__NetworkType(This,NetworkTypeGuid) - -#define IDVBSTuningSpace_put__NetworkType(This,NetworkTypeGuid) \ - (This)->lpVtbl -> put__NetworkType(This,NetworkTypeGuid) - -#define IDVBSTuningSpace_CreateTuneRequest(This,TuneRequest) \ - (This)->lpVtbl -> CreateTuneRequest(This,TuneRequest) - -#define IDVBSTuningSpace_EnumCategoryGUIDs(This,ppEnum) \ - (This)->lpVtbl -> EnumCategoryGUIDs(This,ppEnum) - -#define IDVBSTuningSpace_EnumDeviceMonikers(This,ppEnum) \ - (This)->lpVtbl -> EnumDeviceMonikers(This,ppEnum) - -#define IDVBSTuningSpace_get_DefaultPreferredComponentTypes(This,ComponentTypes) \ - (This)->lpVtbl -> get_DefaultPreferredComponentTypes(This,ComponentTypes) - -#define IDVBSTuningSpace_put_DefaultPreferredComponentTypes(This,NewComponentTypes) \ - (This)->lpVtbl -> put_DefaultPreferredComponentTypes(This,NewComponentTypes) - -#define IDVBSTuningSpace_get_FrequencyMapping(This,pMapping) \ - (This)->lpVtbl -> get_FrequencyMapping(This,pMapping) - -#define IDVBSTuningSpace_put_FrequencyMapping(This,Mapping) \ - (This)->lpVtbl -> put_FrequencyMapping(This,Mapping) - -#define IDVBSTuningSpace_get_DefaultLocator(This,LocatorVal) \ - (This)->lpVtbl -> get_DefaultLocator(This,LocatorVal) - -#define IDVBSTuningSpace_put_DefaultLocator(This,LocatorVal) \ - (This)->lpVtbl -> put_DefaultLocator(This,LocatorVal) - -#define IDVBSTuningSpace_Clone(This,NewTS) \ - (This)->lpVtbl -> Clone(This,NewTS) - - -#define IDVBSTuningSpace_get_SystemType(This,SysType) \ - (This)->lpVtbl -> get_SystemType(This,SysType) - -#define IDVBSTuningSpace_put_SystemType(This,SysType) \ - (This)->lpVtbl -> put_SystemType(This,SysType) - - -#define IDVBSTuningSpace_get_NetworkID(This,NetworkID) \ - (This)->lpVtbl -> get_NetworkID(This,NetworkID) - -#define IDVBSTuningSpace_put_NetworkID(This,NetworkID) \ - (This)->lpVtbl -> put_NetworkID(This,NetworkID) - - -#define IDVBSTuningSpace_get_LowOscillator(This,LowOscillator) \ - (This)->lpVtbl -> get_LowOscillator(This,LowOscillator) - -#define IDVBSTuningSpace_put_LowOscillator(This,LowOscillator) \ - (This)->lpVtbl -> put_LowOscillator(This,LowOscillator) - -#define IDVBSTuningSpace_get_HighOscillator(This,HighOscillator) \ - (This)->lpVtbl -> get_HighOscillator(This,HighOscillator) - -#define IDVBSTuningSpace_put_HighOscillator(This,HighOscillator) \ - (This)->lpVtbl -> put_HighOscillator(This,HighOscillator) - -#define IDVBSTuningSpace_get_LNBSwitch(This,LNBSwitch) \ - (This)->lpVtbl -> get_LNBSwitch(This,LNBSwitch) - -#define IDVBSTuningSpace_put_LNBSwitch(This,LNBSwitch) \ - (This)->lpVtbl -> put_LNBSwitch(This,LNBSwitch) - -#define IDVBSTuningSpace_get_InputRange(This,InputRange) \ - (This)->lpVtbl -> get_InputRange(This,InputRange) - -#define IDVBSTuningSpace_put_InputRange(This,InputRange) \ - (This)->lpVtbl -> put_InputRange(This,InputRange) - -#define IDVBSTuningSpace_get_SpectralInversion(This,SpectralInversionVal) \ - (This)->lpVtbl -> get_SpectralInversion(This,SpectralInversionVal) - -#define IDVBSTuningSpace_put_SpectralInversion(This,SpectralInversionVal) \ - (This)->lpVtbl -> put_SpectralInversion(This,SpectralInversionVal) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDVBSTuningSpace_get_LowOscillator_Proxy( - IDVBSTuningSpace * This, - /* [retval][out] */ long *LowOscillator); - - -void __RPC_STUB IDVBSTuningSpace_get_LowOscillator_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDVBSTuningSpace_put_LowOscillator_Proxy( - IDVBSTuningSpace * This, - /* [in] */ long LowOscillator); - - -void __RPC_STUB IDVBSTuningSpace_put_LowOscillator_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDVBSTuningSpace_get_HighOscillator_Proxy( - IDVBSTuningSpace * This, - /* [retval][out] */ long *HighOscillator); - - -void __RPC_STUB IDVBSTuningSpace_get_HighOscillator_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDVBSTuningSpace_put_HighOscillator_Proxy( - IDVBSTuningSpace * This, - /* [in] */ long HighOscillator); - - -void __RPC_STUB IDVBSTuningSpace_put_HighOscillator_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDVBSTuningSpace_get_LNBSwitch_Proxy( - IDVBSTuningSpace * This, - /* [retval][out] */ long *LNBSwitch); - - -void __RPC_STUB IDVBSTuningSpace_get_LNBSwitch_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDVBSTuningSpace_put_LNBSwitch_Proxy( - IDVBSTuningSpace * This, - /* [in] */ long LNBSwitch); - - -void __RPC_STUB IDVBSTuningSpace_put_LNBSwitch_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDVBSTuningSpace_get_InputRange_Proxy( - IDVBSTuningSpace * This, - /* [retval][out] */ BSTR *InputRange); - - -void __RPC_STUB IDVBSTuningSpace_get_InputRange_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDVBSTuningSpace_put_InputRange_Proxy( - IDVBSTuningSpace * This, - /* [in] */ BSTR InputRange); - - -void __RPC_STUB IDVBSTuningSpace_put_InputRange_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDVBSTuningSpace_get_SpectralInversion_Proxy( - IDVBSTuningSpace * This, - /* [retval][out] */ SpectralInversion *SpectralInversionVal); - - -void __RPC_STUB IDVBSTuningSpace_get_SpectralInversion_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDVBSTuningSpace_put_SpectralInversion_Proxy( - IDVBSTuningSpace * This, - /* [in] */ SpectralInversion SpectralInversionVal); - - -void __RPC_STUB IDVBSTuningSpace_put_SpectralInversion_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IDVBSTuningSpace_INTERFACE_DEFINED__ */ - - -#ifndef __IAuxInTuningSpace_INTERFACE_DEFINED__ -#define __IAuxInTuningSpace_INTERFACE_DEFINED__ - -/* interface IAuxInTuningSpace */ -/* [unique][uuid][nonextensible][oleautomation][dual][hidden][object] */ - - -EXTERN_C const IID IID_IAuxInTuningSpace; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("E48244B8-7E17-4f76-A763-5090FF1E2F30") - IAuxInTuningSpace : public ITuningSpace - { - public: - }; - -#else /* C style interface */ - - typedef struct IAuxInTuningSpaceVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IAuxInTuningSpace * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IAuxInTuningSpace * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IAuxInTuningSpace * This); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( - IAuxInTuningSpace * This, - /* [out] */ UINT *pctinfo); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( - IAuxInTuningSpace * This, - /* [in] */ UINT iTInfo, - /* [in] */ LCID lcid, - /* [out] */ ITypeInfo **ppTInfo); - - HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( - IAuxInTuningSpace * This, - /* [in] */ REFIID riid, - /* [size_is][in] */ LPOLESTR *rgszNames, - /* [in] */ UINT cNames, - /* [in] */ LCID lcid, - /* [size_is][out] */ DISPID *rgDispId); - - /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( - IAuxInTuningSpace * This, - /* [in] */ DISPID dispIdMember, - /* [in] */ REFIID riid, - /* [in] */ LCID lcid, - /* [in] */ WORD wFlags, - /* [out][in] */ DISPPARAMS *pDispParams, - /* [out] */ VARIANT *pVarResult, - /* [out] */ EXCEPINFO *pExcepInfo, - /* [out] */ UINT *puArgErr); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_UniqueName )( - IAuxInTuningSpace * This, - /* [retval][out] */ BSTR *Name); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_UniqueName )( - IAuxInTuningSpace * This, - /* [in] */ BSTR Name); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_FriendlyName )( - IAuxInTuningSpace * This, - /* [retval][out] */ BSTR *Name); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_FriendlyName )( - IAuxInTuningSpace * This, - /* [in] */ BSTR Name); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_CLSID )( - IAuxInTuningSpace * This, - /* [retval][out] */ BSTR *SpaceCLSID); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_NetworkType )( - IAuxInTuningSpace * This, - /* [retval][out] */ BSTR *NetworkTypeGuid); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_NetworkType )( - IAuxInTuningSpace * This, - /* [in] */ BSTR NetworkTypeGuid); - - /* [restricted][hidden][helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get__NetworkType )( - IAuxInTuningSpace * This, - /* [retval][out] */ GUID *NetworkTypeGuid); - - /* [restricted][hidden][helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put__NetworkType )( - IAuxInTuningSpace * This, - /* [in] */ REFCLSID NetworkTypeGuid); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *CreateTuneRequest )( - IAuxInTuningSpace * This, - /* [retval][out] */ ITuneRequest **TuneRequest); - - /* [restricted][hidden][id] */ HRESULT ( STDMETHODCALLTYPE *EnumCategoryGUIDs )( - IAuxInTuningSpace * This, - /* [retval][out] */ IEnumGUID **ppEnum); - - /* [restricted][hidden][id] */ HRESULT ( STDMETHODCALLTYPE *EnumDeviceMonikers )( - IAuxInTuningSpace * This, - /* [retval][out] */ IEnumMoniker **ppEnum); - - /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_DefaultPreferredComponentTypes )( - IAuxInTuningSpace * This, - /* [retval][out] */ IComponentTypes **ComponentTypes); - - /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_DefaultPreferredComponentTypes )( - IAuxInTuningSpace * This, - /* [in] */ IComponentTypes *NewComponentTypes); - - /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_FrequencyMapping )( - IAuxInTuningSpace * This, - /* [retval][out] */ BSTR *pMapping); - - /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_FrequencyMapping )( - IAuxInTuningSpace * This, - BSTR Mapping); - - /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_DefaultLocator )( - IAuxInTuningSpace * This, - /* [retval][out] */ ILocator **LocatorVal); - - /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_DefaultLocator )( - IAuxInTuningSpace * This, - /* [in] */ ILocator *LocatorVal); - - HRESULT ( STDMETHODCALLTYPE *Clone )( - IAuxInTuningSpace * This, - /* [retval][out] */ ITuningSpace **NewTS); - - END_INTERFACE - } IAuxInTuningSpaceVtbl; - - interface IAuxInTuningSpace - { - CONST_VTBL struct IAuxInTuningSpaceVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IAuxInTuningSpace_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IAuxInTuningSpace_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IAuxInTuningSpace_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IAuxInTuningSpace_GetTypeInfoCount(This,pctinfo) \ - (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) - -#define IAuxInTuningSpace_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ - (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) - -#define IAuxInTuningSpace_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ - (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) - -#define IAuxInTuningSpace_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ - (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) - - -#define IAuxInTuningSpace_get_UniqueName(This,Name) \ - (This)->lpVtbl -> get_UniqueName(This,Name) - -#define IAuxInTuningSpace_put_UniqueName(This,Name) \ - (This)->lpVtbl -> put_UniqueName(This,Name) - -#define IAuxInTuningSpace_get_FriendlyName(This,Name) \ - (This)->lpVtbl -> get_FriendlyName(This,Name) - -#define IAuxInTuningSpace_put_FriendlyName(This,Name) \ - (This)->lpVtbl -> put_FriendlyName(This,Name) - -#define IAuxInTuningSpace_get_CLSID(This,SpaceCLSID) \ - (This)->lpVtbl -> get_CLSID(This,SpaceCLSID) - -#define IAuxInTuningSpace_get_NetworkType(This,NetworkTypeGuid) \ - (This)->lpVtbl -> get_NetworkType(This,NetworkTypeGuid) - -#define IAuxInTuningSpace_put_NetworkType(This,NetworkTypeGuid) \ - (This)->lpVtbl -> put_NetworkType(This,NetworkTypeGuid) - -#define IAuxInTuningSpace_get__NetworkType(This,NetworkTypeGuid) \ - (This)->lpVtbl -> get__NetworkType(This,NetworkTypeGuid) - -#define IAuxInTuningSpace_put__NetworkType(This,NetworkTypeGuid) \ - (This)->lpVtbl -> put__NetworkType(This,NetworkTypeGuid) - -#define IAuxInTuningSpace_CreateTuneRequest(This,TuneRequest) \ - (This)->lpVtbl -> CreateTuneRequest(This,TuneRequest) - -#define IAuxInTuningSpace_EnumCategoryGUIDs(This,ppEnum) \ - (This)->lpVtbl -> EnumCategoryGUIDs(This,ppEnum) - -#define IAuxInTuningSpace_EnumDeviceMonikers(This,ppEnum) \ - (This)->lpVtbl -> EnumDeviceMonikers(This,ppEnum) - -#define IAuxInTuningSpace_get_DefaultPreferredComponentTypes(This,ComponentTypes) \ - (This)->lpVtbl -> get_DefaultPreferredComponentTypes(This,ComponentTypes) - -#define IAuxInTuningSpace_put_DefaultPreferredComponentTypes(This,NewComponentTypes) \ - (This)->lpVtbl -> put_DefaultPreferredComponentTypes(This,NewComponentTypes) - -#define IAuxInTuningSpace_get_FrequencyMapping(This,pMapping) \ - (This)->lpVtbl -> get_FrequencyMapping(This,pMapping) - -#define IAuxInTuningSpace_put_FrequencyMapping(This,Mapping) \ - (This)->lpVtbl -> put_FrequencyMapping(This,Mapping) - -#define IAuxInTuningSpace_get_DefaultLocator(This,LocatorVal) \ - (This)->lpVtbl -> get_DefaultLocator(This,LocatorVal) - -#define IAuxInTuningSpace_put_DefaultLocator(This,LocatorVal) \ - (This)->lpVtbl -> put_DefaultLocator(This,LocatorVal) - -#define IAuxInTuningSpace_Clone(This,NewTS) \ - (This)->lpVtbl -> Clone(This,NewTS) - - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __IAuxInTuningSpace_INTERFACE_DEFINED__ */ - - -#ifndef __IAnalogTVTuningSpace_INTERFACE_DEFINED__ -#define __IAnalogTVTuningSpace_INTERFACE_DEFINED__ - -/* interface IAnalogTVTuningSpace */ -/* [unique][uuid][nonextensible][oleautomation][dual][hidden][object] */ - - -EXTERN_C const IID IID_IAnalogTVTuningSpace; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("2A6E293C-2595-11d3-B64C-00C04F79498E") - IAnalogTVTuningSpace : public ITuningSpace - { - public: - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_MinChannel( - /* [retval][out] */ long *MinChannelVal) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_MinChannel( - /* [in] */ long NewMinChannelVal) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_MaxChannel( - /* [retval][out] */ long *MaxChannelVal) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_MaxChannel( - /* [in] */ long NewMaxChannelVal) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_InputType( - /* [retval][out] */ TunerInputType *InputTypeVal) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_InputType( - /* [in] */ TunerInputType NewInputTypeVal) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_CountryCode( - /* [retval][out] */ long *CountryCodeVal) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_CountryCode( - /* [in] */ long NewCountryCodeVal) = 0; - - }; - -#else /* C style interface */ - - typedef struct IAnalogTVTuningSpaceVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IAnalogTVTuningSpace * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IAnalogTVTuningSpace * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IAnalogTVTuningSpace * This); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( - IAnalogTVTuningSpace * This, - /* [out] */ UINT *pctinfo); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( - IAnalogTVTuningSpace * This, - /* [in] */ UINT iTInfo, - /* [in] */ LCID lcid, - /* [out] */ ITypeInfo **ppTInfo); - - HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( - IAnalogTVTuningSpace * This, - /* [in] */ REFIID riid, - /* [size_is][in] */ LPOLESTR *rgszNames, - /* [in] */ UINT cNames, - /* [in] */ LCID lcid, - /* [size_is][out] */ DISPID *rgDispId); - - /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( - IAnalogTVTuningSpace * This, - /* [in] */ DISPID dispIdMember, - /* [in] */ REFIID riid, - /* [in] */ LCID lcid, - /* [in] */ WORD wFlags, - /* [out][in] */ DISPPARAMS *pDispParams, - /* [out] */ VARIANT *pVarResult, - /* [out] */ EXCEPINFO *pExcepInfo, - /* [out] */ UINT *puArgErr); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_UniqueName )( - IAnalogTVTuningSpace * This, - /* [retval][out] */ BSTR *Name); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_UniqueName )( - IAnalogTVTuningSpace * This, - /* [in] */ BSTR Name); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_FriendlyName )( - IAnalogTVTuningSpace * This, - /* [retval][out] */ BSTR *Name); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_FriendlyName )( - IAnalogTVTuningSpace * This, - /* [in] */ BSTR Name); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_CLSID )( - IAnalogTVTuningSpace * This, - /* [retval][out] */ BSTR *SpaceCLSID); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_NetworkType )( - IAnalogTVTuningSpace * This, - /* [retval][out] */ BSTR *NetworkTypeGuid); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_NetworkType )( - IAnalogTVTuningSpace * This, - /* [in] */ BSTR NetworkTypeGuid); - - /* [restricted][hidden][helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get__NetworkType )( - IAnalogTVTuningSpace * This, - /* [retval][out] */ GUID *NetworkTypeGuid); - - /* [restricted][hidden][helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put__NetworkType )( - IAnalogTVTuningSpace * This, - /* [in] */ REFCLSID NetworkTypeGuid); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *CreateTuneRequest )( - IAnalogTVTuningSpace * This, - /* [retval][out] */ ITuneRequest **TuneRequest); - - /* [restricted][hidden][id] */ HRESULT ( STDMETHODCALLTYPE *EnumCategoryGUIDs )( - IAnalogTVTuningSpace * This, - /* [retval][out] */ IEnumGUID **ppEnum); - - /* [restricted][hidden][id] */ HRESULT ( STDMETHODCALLTYPE *EnumDeviceMonikers )( - IAnalogTVTuningSpace * This, - /* [retval][out] */ IEnumMoniker **ppEnum); - - /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_DefaultPreferredComponentTypes )( - IAnalogTVTuningSpace * This, - /* [retval][out] */ IComponentTypes **ComponentTypes); - - /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_DefaultPreferredComponentTypes )( - IAnalogTVTuningSpace * This, - /* [in] */ IComponentTypes *NewComponentTypes); - - /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_FrequencyMapping )( - IAnalogTVTuningSpace * This, - /* [retval][out] */ BSTR *pMapping); - - /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_FrequencyMapping )( - IAnalogTVTuningSpace * This, - BSTR Mapping); - - /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_DefaultLocator )( - IAnalogTVTuningSpace * This, - /* [retval][out] */ ILocator **LocatorVal); - - /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_DefaultLocator )( - IAnalogTVTuningSpace * This, - /* [in] */ ILocator *LocatorVal); - - HRESULT ( STDMETHODCALLTYPE *Clone )( - IAnalogTVTuningSpace * This, - /* [retval][out] */ ITuningSpace **NewTS); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_MinChannel )( - IAnalogTVTuningSpace * This, - /* [retval][out] */ long *MinChannelVal); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_MinChannel )( - IAnalogTVTuningSpace * This, - /* [in] */ long NewMinChannelVal); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_MaxChannel )( - IAnalogTVTuningSpace * This, - /* [retval][out] */ long *MaxChannelVal); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_MaxChannel )( - IAnalogTVTuningSpace * This, - /* [in] */ long NewMaxChannelVal); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_InputType )( - IAnalogTVTuningSpace * This, - /* [retval][out] */ TunerInputType *InputTypeVal); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_InputType )( - IAnalogTVTuningSpace * This, - /* [in] */ TunerInputType NewInputTypeVal); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_CountryCode )( - IAnalogTVTuningSpace * This, - /* [retval][out] */ long *CountryCodeVal); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_CountryCode )( - IAnalogTVTuningSpace * This, - /* [in] */ long NewCountryCodeVal); - - END_INTERFACE - } IAnalogTVTuningSpaceVtbl; - - interface IAnalogTVTuningSpace - { - CONST_VTBL struct IAnalogTVTuningSpaceVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IAnalogTVTuningSpace_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IAnalogTVTuningSpace_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IAnalogTVTuningSpace_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IAnalogTVTuningSpace_GetTypeInfoCount(This,pctinfo) \ - (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) - -#define IAnalogTVTuningSpace_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ - (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) - -#define IAnalogTVTuningSpace_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ - (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) - -#define IAnalogTVTuningSpace_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ - (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) - - -#define IAnalogTVTuningSpace_get_UniqueName(This,Name) \ - (This)->lpVtbl -> get_UniqueName(This,Name) - -#define IAnalogTVTuningSpace_put_UniqueName(This,Name) \ - (This)->lpVtbl -> put_UniqueName(This,Name) - -#define IAnalogTVTuningSpace_get_FriendlyName(This,Name) \ - (This)->lpVtbl -> get_FriendlyName(This,Name) - -#define IAnalogTVTuningSpace_put_FriendlyName(This,Name) \ - (This)->lpVtbl -> put_FriendlyName(This,Name) - -#define IAnalogTVTuningSpace_get_CLSID(This,SpaceCLSID) \ - (This)->lpVtbl -> get_CLSID(This,SpaceCLSID) - -#define IAnalogTVTuningSpace_get_NetworkType(This,NetworkTypeGuid) \ - (This)->lpVtbl -> get_NetworkType(This,NetworkTypeGuid) - -#define IAnalogTVTuningSpace_put_NetworkType(This,NetworkTypeGuid) \ - (This)->lpVtbl -> put_NetworkType(This,NetworkTypeGuid) - -#define IAnalogTVTuningSpace_get__NetworkType(This,NetworkTypeGuid) \ - (This)->lpVtbl -> get__NetworkType(This,NetworkTypeGuid) - -#define IAnalogTVTuningSpace_put__NetworkType(This,NetworkTypeGuid) \ - (This)->lpVtbl -> put__NetworkType(This,NetworkTypeGuid) - -#define IAnalogTVTuningSpace_CreateTuneRequest(This,TuneRequest) \ - (This)->lpVtbl -> CreateTuneRequest(This,TuneRequest) - -#define IAnalogTVTuningSpace_EnumCategoryGUIDs(This,ppEnum) \ - (This)->lpVtbl -> EnumCategoryGUIDs(This,ppEnum) - -#define IAnalogTVTuningSpace_EnumDeviceMonikers(This,ppEnum) \ - (This)->lpVtbl -> EnumDeviceMonikers(This,ppEnum) - -#define IAnalogTVTuningSpace_get_DefaultPreferredComponentTypes(This,ComponentTypes) \ - (This)->lpVtbl -> get_DefaultPreferredComponentTypes(This,ComponentTypes) - -#define IAnalogTVTuningSpace_put_DefaultPreferredComponentTypes(This,NewComponentTypes) \ - (This)->lpVtbl -> put_DefaultPreferredComponentTypes(This,NewComponentTypes) - -#define IAnalogTVTuningSpace_get_FrequencyMapping(This,pMapping) \ - (This)->lpVtbl -> get_FrequencyMapping(This,pMapping) - -#define IAnalogTVTuningSpace_put_FrequencyMapping(This,Mapping) \ - (This)->lpVtbl -> put_FrequencyMapping(This,Mapping) - -#define IAnalogTVTuningSpace_get_DefaultLocator(This,LocatorVal) \ - (This)->lpVtbl -> get_DefaultLocator(This,LocatorVal) - -#define IAnalogTVTuningSpace_put_DefaultLocator(This,LocatorVal) \ - (This)->lpVtbl -> put_DefaultLocator(This,LocatorVal) - -#define IAnalogTVTuningSpace_Clone(This,NewTS) \ - (This)->lpVtbl -> Clone(This,NewTS) - - -#define IAnalogTVTuningSpace_get_MinChannel(This,MinChannelVal) \ - (This)->lpVtbl -> get_MinChannel(This,MinChannelVal) - -#define IAnalogTVTuningSpace_put_MinChannel(This,NewMinChannelVal) \ - (This)->lpVtbl -> put_MinChannel(This,NewMinChannelVal) - -#define IAnalogTVTuningSpace_get_MaxChannel(This,MaxChannelVal) \ - (This)->lpVtbl -> get_MaxChannel(This,MaxChannelVal) - -#define IAnalogTVTuningSpace_put_MaxChannel(This,NewMaxChannelVal) \ - (This)->lpVtbl -> put_MaxChannel(This,NewMaxChannelVal) - -#define IAnalogTVTuningSpace_get_InputType(This,InputTypeVal) \ - (This)->lpVtbl -> get_InputType(This,InputTypeVal) - -#define IAnalogTVTuningSpace_put_InputType(This,NewInputTypeVal) \ - (This)->lpVtbl -> put_InputType(This,NewInputTypeVal) - -#define IAnalogTVTuningSpace_get_CountryCode(This,CountryCodeVal) \ - (This)->lpVtbl -> get_CountryCode(This,CountryCodeVal) - -#define IAnalogTVTuningSpace_put_CountryCode(This,NewCountryCodeVal) \ - (This)->lpVtbl -> put_CountryCode(This,NewCountryCodeVal) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IAnalogTVTuningSpace_get_MinChannel_Proxy( - IAnalogTVTuningSpace * This, - /* [retval][out] */ long *MinChannelVal); - - -void __RPC_STUB IAnalogTVTuningSpace_get_MinChannel_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IAnalogTVTuningSpace_put_MinChannel_Proxy( - IAnalogTVTuningSpace * This, - /* [in] */ long NewMinChannelVal); - - -void __RPC_STUB IAnalogTVTuningSpace_put_MinChannel_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IAnalogTVTuningSpace_get_MaxChannel_Proxy( - IAnalogTVTuningSpace * This, - /* [retval][out] */ long *MaxChannelVal); - - -void __RPC_STUB IAnalogTVTuningSpace_get_MaxChannel_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IAnalogTVTuningSpace_put_MaxChannel_Proxy( - IAnalogTVTuningSpace * This, - /* [in] */ long NewMaxChannelVal); - - -void __RPC_STUB IAnalogTVTuningSpace_put_MaxChannel_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IAnalogTVTuningSpace_get_InputType_Proxy( - IAnalogTVTuningSpace * This, - /* [retval][out] */ TunerInputType *InputTypeVal); - - -void __RPC_STUB IAnalogTVTuningSpace_get_InputType_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IAnalogTVTuningSpace_put_InputType_Proxy( - IAnalogTVTuningSpace * This, - /* [in] */ TunerInputType NewInputTypeVal); - - -void __RPC_STUB IAnalogTVTuningSpace_put_InputType_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IAnalogTVTuningSpace_get_CountryCode_Proxy( - IAnalogTVTuningSpace * This, - /* [retval][out] */ long *CountryCodeVal); - - -void __RPC_STUB IAnalogTVTuningSpace_get_CountryCode_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IAnalogTVTuningSpace_put_CountryCode_Proxy( - IAnalogTVTuningSpace * This, - /* [in] */ long NewCountryCodeVal); - - -void __RPC_STUB IAnalogTVTuningSpace_put_CountryCode_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IAnalogTVTuningSpace_INTERFACE_DEFINED__ */ - - -#ifndef __IATSCTuningSpace_INTERFACE_DEFINED__ -#define __IATSCTuningSpace_INTERFACE_DEFINED__ - -/* interface IATSCTuningSpace */ -/* [unique][uuid][nonextensible][oleautomation][dual][hidden][object] */ - - -EXTERN_C const IID IID_IATSCTuningSpace; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("0369B4E2-45B6-11d3-B650-00C04F79498E") - IATSCTuningSpace : public IAnalogTVTuningSpace - { - public: - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_MinMinorChannel( - /* [retval][out] */ long *MinMinorChannelVal) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_MinMinorChannel( - /* [in] */ long NewMinMinorChannelVal) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_MaxMinorChannel( - /* [retval][out] */ long *MaxMinorChannelVal) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_MaxMinorChannel( - /* [in] */ long NewMaxMinorChannelVal) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_MinPhysicalChannel( - /* [retval][out] */ long *MinPhysicalChannelVal) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_MinPhysicalChannel( - /* [in] */ long NewMinPhysicalChannelVal) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_MaxPhysicalChannel( - /* [retval][out] */ long *MaxPhysicalChannelVal) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_MaxPhysicalChannel( - /* [in] */ long NewMaxPhysicalChannelVal) = 0; - - }; - -#else /* C style interface */ - - typedef struct IATSCTuningSpaceVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IATSCTuningSpace * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IATSCTuningSpace * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IATSCTuningSpace * This); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( - IATSCTuningSpace * This, - /* [out] */ UINT *pctinfo); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( - IATSCTuningSpace * This, - /* [in] */ UINT iTInfo, - /* [in] */ LCID lcid, - /* [out] */ ITypeInfo **ppTInfo); - - HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( - IATSCTuningSpace * This, - /* [in] */ REFIID riid, - /* [size_is][in] */ LPOLESTR *rgszNames, - /* [in] */ UINT cNames, - /* [in] */ LCID lcid, - /* [size_is][out] */ DISPID *rgDispId); - - /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( - IATSCTuningSpace * This, - /* [in] */ DISPID dispIdMember, - /* [in] */ REFIID riid, - /* [in] */ LCID lcid, - /* [in] */ WORD wFlags, - /* [out][in] */ DISPPARAMS *pDispParams, - /* [out] */ VARIANT *pVarResult, - /* [out] */ EXCEPINFO *pExcepInfo, - /* [out] */ UINT *puArgErr); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_UniqueName )( - IATSCTuningSpace * This, - /* [retval][out] */ BSTR *Name); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_UniqueName )( - IATSCTuningSpace * This, - /* [in] */ BSTR Name); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_FriendlyName )( - IATSCTuningSpace * This, - /* [retval][out] */ BSTR *Name); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_FriendlyName )( - IATSCTuningSpace * This, - /* [in] */ BSTR Name); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_CLSID )( - IATSCTuningSpace * This, - /* [retval][out] */ BSTR *SpaceCLSID); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_NetworkType )( - IATSCTuningSpace * This, - /* [retval][out] */ BSTR *NetworkTypeGuid); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_NetworkType )( - IATSCTuningSpace * This, - /* [in] */ BSTR NetworkTypeGuid); - - /* [restricted][hidden][helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get__NetworkType )( - IATSCTuningSpace * This, - /* [retval][out] */ GUID *NetworkTypeGuid); - - /* [restricted][hidden][helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put__NetworkType )( - IATSCTuningSpace * This, - /* [in] */ REFCLSID NetworkTypeGuid); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *CreateTuneRequest )( - IATSCTuningSpace * This, - /* [retval][out] */ ITuneRequest **TuneRequest); - - /* [restricted][hidden][id] */ HRESULT ( STDMETHODCALLTYPE *EnumCategoryGUIDs )( - IATSCTuningSpace * This, - /* [retval][out] */ IEnumGUID **ppEnum); - - /* [restricted][hidden][id] */ HRESULT ( STDMETHODCALLTYPE *EnumDeviceMonikers )( - IATSCTuningSpace * This, - /* [retval][out] */ IEnumMoniker **ppEnum); - - /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_DefaultPreferredComponentTypes )( - IATSCTuningSpace * This, - /* [retval][out] */ IComponentTypes **ComponentTypes); - - /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_DefaultPreferredComponentTypes )( - IATSCTuningSpace * This, - /* [in] */ IComponentTypes *NewComponentTypes); - - /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_FrequencyMapping )( - IATSCTuningSpace * This, - /* [retval][out] */ BSTR *pMapping); - - /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_FrequencyMapping )( - IATSCTuningSpace * This, - BSTR Mapping); - - /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_DefaultLocator )( - IATSCTuningSpace * This, - /* [retval][out] */ ILocator **LocatorVal); - - /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_DefaultLocator )( - IATSCTuningSpace * This, - /* [in] */ ILocator *LocatorVal); - - HRESULT ( STDMETHODCALLTYPE *Clone )( - IATSCTuningSpace * This, - /* [retval][out] */ ITuningSpace **NewTS); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_MinChannel )( - IATSCTuningSpace * This, - /* [retval][out] */ long *MinChannelVal); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_MinChannel )( - IATSCTuningSpace * This, - /* [in] */ long NewMinChannelVal); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_MaxChannel )( - IATSCTuningSpace * This, - /* [retval][out] */ long *MaxChannelVal); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_MaxChannel )( - IATSCTuningSpace * This, - /* [in] */ long NewMaxChannelVal); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_InputType )( - IATSCTuningSpace * This, - /* [retval][out] */ TunerInputType *InputTypeVal); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_InputType )( - IATSCTuningSpace * This, - /* [in] */ TunerInputType NewInputTypeVal); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_CountryCode )( - IATSCTuningSpace * This, - /* [retval][out] */ long *CountryCodeVal); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_CountryCode )( - IATSCTuningSpace * This, - /* [in] */ long NewCountryCodeVal); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_MinMinorChannel )( - IATSCTuningSpace * This, - /* [retval][out] */ long *MinMinorChannelVal); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_MinMinorChannel )( - IATSCTuningSpace * This, - /* [in] */ long NewMinMinorChannelVal); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_MaxMinorChannel )( - IATSCTuningSpace * This, - /* [retval][out] */ long *MaxMinorChannelVal); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_MaxMinorChannel )( - IATSCTuningSpace * This, - /* [in] */ long NewMaxMinorChannelVal); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_MinPhysicalChannel )( - IATSCTuningSpace * This, - /* [retval][out] */ long *MinPhysicalChannelVal); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_MinPhysicalChannel )( - IATSCTuningSpace * This, - /* [in] */ long NewMinPhysicalChannelVal); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_MaxPhysicalChannel )( - IATSCTuningSpace * This, - /* [retval][out] */ long *MaxPhysicalChannelVal); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_MaxPhysicalChannel )( - IATSCTuningSpace * This, - /* [in] */ long NewMaxPhysicalChannelVal); - - END_INTERFACE - } IATSCTuningSpaceVtbl; - - interface IATSCTuningSpace - { - CONST_VTBL struct IATSCTuningSpaceVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IATSCTuningSpace_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IATSCTuningSpace_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IATSCTuningSpace_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IATSCTuningSpace_GetTypeInfoCount(This,pctinfo) \ - (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) - -#define IATSCTuningSpace_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ - (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) - -#define IATSCTuningSpace_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ - (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) - -#define IATSCTuningSpace_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ - (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) - - -#define IATSCTuningSpace_get_UniqueName(This,Name) \ - (This)->lpVtbl -> get_UniqueName(This,Name) - -#define IATSCTuningSpace_put_UniqueName(This,Name) \ - (This)->lpVtbl -> put_UniqueName(This,Name) - -#define IATSCTuningSpace_get_FriendlyName(This,Name) \ - (This)->lpVtbl -> get_FriendlyName(This,Name) - -#define IATSCTuningSpace_put_FriendlyName(This,Name) \ - (This)->lpVtbl -> put_FriendlyName(This,Name) - -#define IATSCTuningSpace_get_CLSID(This,SpaceCLSID) \ - (This)->lpVtbl -> get_CLSID(This,SpaceCLSID) - -#define IATSCTuningSpace_get_NetworkType(This,NetworkTypeGuid) \ - (This)->lpVtbl -> get_NetworkType(This,NetworkTypeGuid) - -#define IATSCTuningSpace_put_NetworkType(This,NetworkTypeGuid) \ - (This)->lpVtbl -> put_NetworkType(This,NetworkTypeGuid) - -#define IATSCTuningSpace_get__NetworkType(This,NetworkTypeGuid) \ - (This)->lpVtbl -> get__NetworkType(This,NetworkTypeGuid) - -#define IATSCTuningSpace_put__NetworkType(This,NetworkTypeGuid) \ - (This)->lpVtbl -> put__NetworkType(This,NetworkTypeGuid) - -#define IATSCTuningSpace_CreateTuneRequest(This,TuneRequest) \ - (This)->lpVtbl -> CreateTuneRequest(This,TuneRequest) - -#define IATSCTuningSpace_EnumCategoryGUIDs(This,ppEnum) \ - (This)->lpVtbl -> EnumCategoryGUIDs(This,ppEnum) - -#define IATSCTuningSpace_EnumDeviceMonikers(This,ppEnum) \ - (This)->lpVtbl -> EnumDeviceMonikers(This,ppEnum) - -#define IATSCTuningSpace_get_DefaultPreferredComponentTypes(This,ComponentTypes) \ - (This)->lpVtbl -> get_DefaultPreferredComponentTypes(This,ComponentTypes) - -#define IATSCTuningSpace_put_DefaultPreferredComponentTypes(This,NewComponentTypes) \ - (This)->lpVtbl -> put_DefaultPreferredComponentTypes(This,NewComponentTypes) - -#define IATSCTuningSpace_get_FrequencyMapping(This,pMapping) \ - (This)->lpVtbl -> get_FrequencyMapping(This,pMapping) - -#define IATSCTuningSpace_put_FrequencyMapping(This,Mapping) \ - (This)->lpVtbl -> put_FrequencyMapping(This,Mapping) - -#define IATSCTuningSpace_get_DefaultLocator(This,LocatorVal) \ - (This)->lpVtbl -> get_DefaultLocator(This,LocatorVal) - -#define IATSCTuningSpace_put_DefaultLocator(This,LocatorVal) \ - (This)->lpVtbl -> put_DefaultLocator(This,LocatorVal) - -#define IATSCTuningSpace_Clone(This,NewTS) \ - (This)->lpVtbl -> Clone(This,NewTS) - - -#define IATSCTuningSpace_get_MinChannel(This,MinChannelVal) \ - (This)->lpVtbl -> get_MinChannel(This,MinChannelVal) - -#define IATSCTuningSpace_put_MinChannel(This,NewMinChannelVal) \ - (This)->lpVtbl -> put_MinChannel(This,NewMinChannelVal) - -#define IATSCTuningSpace_get_MaxChannel(This,MaxChannelVal) \ - (This)->lpVtbl -> get_MaxChannel(This,MaxChannelVal) - -#define IATSCTuningSpace_put_MaxChannel(This,NewMaxChannelVal) \ - (This)->lpVtbl -> put_MaxChannel(This,NewMaxChannelVal) - -#define IATSCTuningSpace_get_InputType(This,InputTypeVal) \ - (This)->lpVtbl -> get_InputType(This,InputTypeVal) - -#define IATSCTuningSpace_put_InputType(This,NewInputTypeVal) \ - (This)->lpVtbl -> put_InputType(This,NewInputTypeVal) - -#define IATSCTuningSpace_get_CountryCode(This,CountryCodeVal) \ - (This)->lpVtbl -> get_CountryCode(This,CountryCodeVal) - -#define IATSCTuningSpace_put_CountryCode(This,NewCountryCodeVal) \ - (This)->lpVtbl -> put_CountryCode(This,NewCountryCodeVal) - - -#define IATSCTuningSpace_get_MinMinorChannel(This,MinMinorChannelVal) \ - (This)->lpVtbl -> get_MinMinorChannel(This,MinMinorChannelVal) - -#define IATSCTuningSpace_put_MinMinorChannel(This,NewMinMinorChannelVal) \ - (This)->lpVtbl -> put_MinMinorChannel(This,NewMinMinorChannelVal) - -#define IATSCTuningSpace_get_MaxMinorChannel(This,MaxMinorChannelVal) \ - (This)->lpVtbl -> get_MaxMinorChannel(This,MaxMinorChannelVal) - -#define IATSCTuningSpace_put_MaxMinorChannel(This,NewMaxMinorChannelVal) \ - (This)->lpVtbl -> put_MaxMinorChannel(This,NewMaxMinorChannelVal) - -#define IATSCTuningSpace_get_MinPhysicalChannel(This,MinPhysicalChannelVal) \ - (This)->lpVtbl -> get_MinPhysicalChannel(This,MinPhysicalChannelVal) - -#define IATSCTuningSpace_put_MinPhysicalChannel(This,NewMinPhysicalChannelVal) \ - (This)->lpVtbl -> put_MinPhysicalChannel(This,NewMinPhysicalChannelVal) - -#define IATSCTuningSpace_get_MaxPhysicalChannel(This,MaxPhysicalChannelVal) \ - (This)->lpVtbl -> get_MaxPhysicalChannel(This,MaxPhysicalChannelVal) - -#define IATSCTuningSpace_put_MaxPhysicalChannel(This,NewMaxPhysicalChannelVal) \ - (This)->lpVtbl -> put_MaxPhysicalChannel(This,NewMaxPhysicalChannelVal) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IATSCTuningSpace_get_MinMinorChannel_Proxy( - IATSCTuningSpace * This, - /* [retval][out] */ long *MinMinorChannelVal); - - -void __RPC_STUB IATSCTuningSpace_get_MinMinorChannel_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IATSCTuningSpace_put_MinMinorChannel_Proxy( - IATSCTuningSpace * This, - /* [in] */ long NewMinMinorChannelVal); - - -void __RPC_STUB IATSCTuningSpace_put_MinMinorChannel_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IATSCTuningSpace_get_MaxMinorChannel_Proxy( - IATSCTuningSpace * This, - /* [retval][out] */ long *MaxMinorChannelVal); - - -void __RPC_STUB IATSCTuningSpace_get_MaxMinorChannel_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IATSCTuningSpace_put_MaxMinorChannel_Proxy( - IATSCTuningSpace * This, - /* [in] */ long NewMaxMinorChannelVal); - - -void __RPC_STUB IATSCTuningSpace_put_MaxMinorChannel_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IATSCTuningSpace_get_MinPhysicalChannel_Proxy( - IATSCTuningSpace * This, - /* [retval][out] */ long *MinPhysicalChannelVal); - - -void __RPC_STUB IATSCTuningSpace_get_MinPhysicalChannel_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IATSCTuningSpace_put_MinPhysicalChannel_Proxy( - IATSCTuningSpace * This, - /* [in] */ long NewMinPhysicalChannelVal); - - -void __RPC_STUB IATSCTuningSpace_put_MinPhysicalChannel_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IATSCTuningSpace_get_MaxPhysicalChannel_Proxy( - IATSCTuningSpace * This, - /* [retval][out] */ long *MaxPhysicalChannelVal); - - -void __RPC_STUB IATSCTuningSpace_get_MaxPhysicalChannel_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IATSCTuningSpace_put_MaxPhysicalChannel_Proxy( - IATSCTuningSpace * This, - /* [in] */ long NewMaxPhysicalChannelVal); - - -void __RPC_STUB IATSCTuningSpace_put_MaxPhysicalChannel_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IATSCTuningSpace_INTERFACE_DEFINED__ */ - - -#ifndef __IAnalogRadioTuningSpace_INTERFACE_DEFINED__ -#define __IAnalogRadioTuningSpace_INTERFACE_DEFINED__ - -/* interface IAnalogRadioTuningSpace */ -/* [unique][uuid][nonextensible][oleautomation][dual][hidden][object] */ - - -EXTERN_C const IID IID_IAnalogRadioTuningSpace; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("2A6E293B-2595-11d3-B64C-00C04F79498E") - IAnalogRadioTuningSpace : public ITuningSpace - { - public: - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_MinFrequency( - /* [retval][out] */ long *MinFrequencyVal) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_MinFrequency( - /* [in] */ long NewMinFrequencyVal) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_MaxFrequency( - /* [retval][out] */ long *MaxFrequencyVal) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_MaxFrequency( - /* [in] */ long NewMaxFrequencyVal) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Step( - /* [retval][out] */ long *StepVal) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_Step( - /* [in] */ long NewStepVal) = 0; - - }; - -#else /* C style interface */ - - typedef struct IAnalogRadioTuningSpaceVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IAnalogRadioTuningSpace * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IAnalogRadioTuningSpace * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IAnalogRadioTuningSpace * This); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( - IAnalogRadioTuningSpace * This, - /* [out] */ UINT *pctinfo); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( - IAnalogRadioTuningSpace * This, - /* [in] */ UINT iTInfo, - /* [in] */ LCID lcid, - /* [out] */ ITypeInfo **ppTInfo); - - HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( - IAnalogRadioTuningSpace * This, - /* [in] */ REFIID riid, - /* [size_is][in] */ LPOLESTR *rgszNames, - /* [in] */ UINT cNames, - /* [in] */ LCID lcid, - /* [size_is][out] */ DISPID *rgDispId); - - /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( - IAnalogRadioTuningSpace * This, - /* [in] */ DISPID dispIdMember, - /* [in] */ REFIID riid, - /* [in] */ LCID lcid, - /* [in] */ WORD wFlags, - /* [out][in] */ DISPPARAMS *pDispParams, - /* [out] */ VARIANT *pVarResult, - /* [out] */ EXCEPINFO *pExcepInfo, - /* [out] */ UINT *puArgErr); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_UniqueName )( - IAnalogRadioTuningSpace * This, - /* [retval][out] */ BSTR *Name); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_UniqueName )( - IAnalogRadioTuningSpace * This, - /* [in] */ BSTR Name); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_FriendlyName )( - IAnalogRadioTuningSpace * This, - /* [retval][out] */ BSTR *Name); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_FriendlyName )( - IAnalogRadioTuningSpace * This, - /* [in] */ BSTR Name); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_CLSID )( - IAnalogRadioTuningSpace * This, - /* [retval][out] */ BSTR *SpaceCLSID); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_NetworkType )( - IAnalogRadioTuningSpace * This, - /* [retval][out] */ BSTR *NetworkTypeGuid); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_NetworkType )( - IAnalogRadioTuningSpace * This, - /* [in] */ BSTR NetworkTypeGuid); - - /* [restricted][hidden][helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get__NetworkType )( - IAnalogRadioTuningSpace * This, - /* [retval][out] */ GUID *NetworkTypeGuid); - - /* [restricted][hidden][helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put__NetworkType )( - IAnalogRadioTuningSpace * This, - /* [in] */ REFCLSID NetworkTypeGuid); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *CreateTuneRequest )( - IAnalogRadioTuningSpace * This, - /* [retval][out] */ ITuneRequest **TuneRequest); - - /* [restricted][hidden][id] */ HRESULT ( STDMETHODCALLTYPE *EnumCategoryGUIDs )( - IAnalogRadioTuningSpace * This, - /* [retval][out] */ IEnumGUID **ppEnum); - - /* [restricted][hidden][id] */ HRESULT ( STDMETHODCALLTYPE *EnumDeviceMonikers )( - IAnalogRadioTuningSpace * This, - /* [retval][out] */ IEnumMoniker **ppEnum); - - /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_DefaultPreferredComponentTypes )( - IAnalogRadioTuningSpace * This, - /* [retval][out] */ IComponentTypes **ComponentTypes); - - /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_DefaultPreferredComponentTypes )( - IAnalogRadioTuningSpace * This, - /* [in] */ IComponentTypes *NewComponentTypes); - - /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_FrequencyMapping )( - IAnalogRadioTuningSpace * This, - /* [retval][out] */ BSTR *pMapping); - - /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_FrequencyMapping )( - IAnalogRadioTuningSpace * This, - BSTR Mapping); - - /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_DefaultLocator )( - IAnalogRadioTuningSpace * This, - /* [retval][out] */ ILocator **LocatorVal); - - /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_DefaultLocator )( - IAnalogRadioTuningSpace * This, - /* [in] */ ILocator *LocatorVal); - - HRESULT ( STDMETHODCALLTYPE *Clone )( - IAnalogRadioTuningSpace * This, - /* [retval][out] */ ITuningSpace **NewTS); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_MinFrequency )( - IAnalogRadioTuningSpace * This, - /* [retval][out] */ long *MinFrequencyVal); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_MinFrequency )( - IAnalogRadioTuningSpace * This, - /* [in] */ long NewMinFrequencyVal); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_MaxFrequency )( - IAnalogRadioTuningSpace * This, - /* [retval][out] */ long *MaxFrequencyVal); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_MaxFrequency )( - IAnalogRadioTuningSpace * This, - /* [in] */ long NewMaxFrequencyVal); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Step )( - IAnalogRadioTuningSpace * This, - /* [retval][out] */ long *StepVal); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Step )( - IAnalogRadioTuningSpace * This, - /* [in] */ long NewStepVal); - - END_INTERFACE - } IAnalogRadioTuningSpaceVtbl; - - interface IAnalogRadioTuningSpace - { - CONST_VTBL struct IAnalogRadioTuningSpaceVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IAnalogRadioTuningSpace_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IAnalogRadioTuningSpace_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IAnalogRadioTuningSpace_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IAnalogRadioTuningSpace_GetTypeInfoCount(This,pctinfo) \ - (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) - -#define IAnalogRadioTuningSpace_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ - (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) - -#define IAnalogRadioTuningSpace_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ - (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) - -#define IAnalogRadioTuningSpace_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ - (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) - - -#define IAnalogRadioTuningSpace_get_UniqueName(This,Name) \ - (This)->lpVtbl -> get_UniqueName(This,Name) - -#define IAnalogRadioTuningSpace_put_UniqueName(This,Name) \ - (This)->lpVtbl -> put_UniqueName(This,Name) - -#define IAnalogRadioTuningSpace_get_FriendlyName(This,Name) \ - (This)->lpVtbl -> get_FriendlyName(This,Name) - -#define IAnalogRadioTuningSpace_put_FriendlyName(This,Name) \ - (This)->lpVtbl -> put_FriendlyName(This,Name) - -#define IAnalogRadioTuningSpace_get_CLSID(This,SpaceCLSID) \ - (This)->lpVtbl -> get_CLSID(This,SpaceCLSID) - -#define IAnalogRadioTuningSpace_get_NetworkType(This,NetworkTypeGuid) \ - (This)->lpVtbl -> get_NetworkType(This,NetworkTypeGuid) - -#define IAnalogRadioTuningSpace_put_NetworkType(This,NetworkTypeGuid) \ - (This)->lpVtbl -> put_NetworkType(This,NetworkTypeGuid) - -#define IAnalogRadioTuningSpace_get__NetworkType(This,NetworkTypeGuid) \ - (This)->lpVtbl -> get__NetworkType(This,NetworkTypeGuid) - -#define IAnalogRadioTuningSpace_put__NetworkType(This,NetworkTypeGuid) \ - (This)->lpVtbl -> put__NetworkType(This,NetworkTypeGuid) - -#define IAnalogRadioTuningSpace_CreateTuneRequest(This,TuneRequest) \ - (This)->lpVtbl -> CreateTuneRequest(This,TuneRequest) - -#define IAnalogRadioTuningSpace_EnumCategoryGUIDs(This,ppEnum) \ - (This)->lpVtbl -> EnumCategoryGUIDs(This,ppEnum) - -#define IAnalogRadioTuningSpace_EnumDeviceMonikers(This,ppEnum) \ - (This)->lpVtbl -> EnumDeviceMonikers(This,ppEnum) - -#define IAnalogRadioTuningSpace_get_DefaultPreferredComponentTypes(This,ComponentTypes) \ - (This)->lpVtbl -> get_DefaultPreferredComponentTypes(This,ComponentTypes) - -#define IAnalogRadioTuningSpace_put_DefaultPreferredComponentTypes(This,NewComponentTypes) \ - (This)->lpVtbl -> put_DefaultPreferredComponentTypes(This,NewComponentTypes) - -#define IAnalogRadioTuningSpace_get_FrequencyMapping(This,pMapping) \ - (This)->lpVtbl -> get_FrequencyMapping(This,pMapping) - -#define IAnalogRadioTuningSpace_put_FrequencyMapping(This,Mapping) \ - (This)->lpVtbl -> put_FrequencyMapping(This,Mapping) - -#define IAnalogRadioTuningSpace_get_DefaultLocator(This,LocatorVal) \ - (This)->lpVtbl -> get_DefaultLocator(This,LocatorVal) - -#define IAnalogRadioTuningSpace_put_DefaultLocator(This,LocatorVal) \ - (This)->lpVtbl -> put_DefaultLocator(This,LocatorVal) - -#define IAnalogRadioTuningSpace_Clone(This,NewTS) \ - (This)->lpVtbl -> Clone(This,NewTS) - - -#define IAnalogRadioTuningSpace_get_MinFrequency(This,MinFrequencyVal) \ - (This)->lpVtbl -> get_MinFrequency(This,MinFrequencyVal) - -#define IAnalogRadioTuningSpace_put_MinFrequency(This,NewMinFrequencyVal) \ - (This)->lpVtbl -> put_MinFrequency(This,NewMinFrequencyVal) - -#define IAnalogRadioTuningSpace_get_MaxFrequency(This,MaxFrequencyVal) \ - (This)->lpVtbl -> get_MaxFrequency(This,MaxFrequencyVal) - -#define IAnalogRadioTuningSpace_put_MaxFrequency(This,NewMaxFrequencyVal) \ - (This)->lpVtbl -> put_MaxFrequency(This,NewMaxFrequencyVal) - -#define IAnalogRadioTuningSpace_get_Step(This,StepVal) \ - (This)->lpVtbl -> get_Step(This,StepVal) - -#define IAnalogRadioTuningSpace_put_Step(This,NewStepVal) \ - (This)->lpVtbl -> put_Step(This,NewStepVal) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IAnalogRadioTuningSpace_get_MinFrequency_Proxy( - IAnalogRadioTuningSpace * This, - /* [retval][out] */ long *MinFrequencyVal); - - -void __RPC_STUB IAnalogRadioTuningSpace_get_MinFrequency_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IAnalogRadioTuningSpace_put_MinFrequency_Proxy( - IAnalogRadioTuningSpace * This, - /* [in] */ long NewMinFrequencyVal); - - -void __RPC_STUB IAnalogRadioTuningSpace_put_MinFrequency_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IAnalogRadioTuningSpace_get_MaxFrequency_Proxy( - IAnalogRadioTuningSpace * This, - /* [retval][out] */ long *MaxFrequencyVal); - - -void __RPC_STUB IAnalogRadioTuningSpace_get_MaxFrequency_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IAnalogRadioTuningSpace_put_MaxFrequency_Proxy( - IAnalogRadioTuningSpace * This, - /* [in] */ long NewMaxFrequencyVal); - - -void __RPC_STUB IAnalogRadioTuningSpace_put_MaxFrequency_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IAnalogRadioTuningSpace_get_Step_Proxy( - IAnalogRadioTuningSpace * This, - /* [retval][out] */ long *StepVal); - - -void __RPC_STUB IAnalogRadioTuningSpace_get_Step_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IAnalogRadioTuningSpace_put_Step_Proxy( - IAnalogRadioTuningSpace * This, - /* [in] */ long NewStepVal); - - -void __RPC_STUB IAnalogRadioTuningSpace_put_Step_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IAnalogRadioTuningSpace_INTERFACE_DEFINED__ */ - - -#ifndef __ITuneRequest_INTERFACE_DEFINED__ -#define __ITuneRequest_INTERFACE_DEFINED__ - -/* interface ITuneRequest */ -/* [unique][helpstring][oleautomation][dual][uuid][nonextensible][object] */ - - -EXTERN_C const IID IID_ITuneRequest; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("07DDC146-FC3D-11d2-9D8C-00C04F72D980") - ITuneRequest : public IDispatch - { - public: - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_TuningSpace( - /* [retval][out] */ ITuningSpace **TuningSpace) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Components( - /* [retval][out] */ IComponents **Components) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Clone( - /* [retval][out] */ ITuneRequest **NewTuneRequest) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Locator( - /* [retval][out] */ ILocator **Locator) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_Locator( - /* [in] */ ILocator *Locator) = 0; - - }; - -#else /* C style interface */ - - typedef struct ITuneRequestVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - ITuneRequest * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - ITuneRequest * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - ITuneRequest * This); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( - ITuneRequest * This, - /* [out] */ UINT *pctinfo); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( - ITuneRequest * This, - /* [in] */ UINT iTInfo, - /* [in] */ LCID lcid, - /* [out] */ ITypeInfo **ppTInfo); - - HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( - ITuneRequest * This, - /* [in] */ REFIID riid, - /* [size_is][in] */ LPOLESTR *rgszNames, - /* [in] */ UINT cNames, - /* [in] */ LCID lcid, - /* [size_is][out] */ DISPID *rgDispId); - - /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( - ITuneRequest * This, - /* [in] */ DISPID dispIdMember, - /* [in] */ REFIID riid, - /* [in] */ LCID lcid, - /* [in] */ WORD wFlags, - /* [out][in] */ DISPPARAMS *pDispParams, - /* [out] */ VARIANT *pVarResult, - /* [out] */ EXCEPINFO *pExcepInfo, - /* [out] */ UINT *puArgErr); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_TuningSpace )( - ITuneRequest * This, - /* [retval][out] */ ITuningSpace **TuningSpace); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Components )( - ITuneRequest * This, - /* [retval][out] */ IComponents **Components); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Clone )( - ITuneRequest * This, - /* [retval][out] */ ITuneRequest **NewTuneRequest); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Locator )( - ITuneRequest * This, - /* [retval][out] */ ILocator **Locator); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Locator )( - ITuneRequest * This, - /* [in] */ ILocator *Locator); - - END_INTERFACE - } ITuneRequestVtbl; - - interface ITuneRequest - { - CONST_VTBL struct ITuneRequestVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define ITuneRequest_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define ITuneRequest_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define ITuneRequest_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define ITuneRequest_GetTypeInfoCount(This,pctinfo) \ - (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) - -#define ITuneRequest_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ - (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) - -#define ITuneRequest_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ - (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) - -#define ITuneRequest_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ - (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) - - -#define ITuneRequest_get_TuningSpace(This,TuningSpace) \ - (This)->lpVtbl -> get_TuningSpace(This,TuningSpace) - -#define ITuneRequest_get_Components(This,Components) \ - (This)->lpVtbl -> get_Components(This,Components) - -#define ITuneRequest_Clone(This,NewTuneRequest) \ - (This)->lpVtbl -> Clone(This,NewTuneRequest) - -#define ITuneRequest_get_Locator(This,Locator) \ - (This)->lpVtbl -> get_Locator(This,Locator) - -#define ITuneRequest_put_Locator(This,Locator) \ - (This)->lpVtbl -> put_Locator(This,Locator) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE ITuneRequest_get_TuningSpace_Proxy( - ITuneRequest * This, - /* [retval][out] */ ITuningSpace **TuningSpace); - - -void __RPC_STUB ITuneRequest_get_TuningSpace_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE ITuneRequest_get_Components_Proxy( - ITuneRequest * This, - /* [retval][out] */ IComponents **Components); - - -void __RPC_STUB ITuneRequest_get_Components_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE ITuneRequest_Clone_Proxy( - ITuneRequest * This, - /* [retval][out] */ ITuneRequest **NewTuneRequest); - - -void __RPC_STUB ITuneRequest_Clone_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE ITuneRequest_get_Locator_Proxy( - ITuneRequest * This, - /* [retval][out] */ ILocator **Locator); - - -void __RPC_STUB ITuneRequest_get_Locator_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE ITuneRequest_put_Locator_Proxy( - ITuneRequest * This, - /* [in] */ ILocator *Locator); - - -void __RPC_STUB ITuneRequest_put_Locator_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __ITuneRequest_INTERFACE_DEFINED__ */ - - -#ifndef __IChannelTuneRequest_INTERFACE_DEFINED__ -#define __IChannelTuneRequest_INTERFACE_DEFINED__ - -/* interface IChannelTuneRequest */ -/* [unique][helpstring][oleautomation][dual][uuid][nonextensible][object] */ - - -EXTERN_C const IID IID_IChannelTuneRequest; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("0369B4E0-45B6-11d3-B650-00C04F79498E") - IChannelTuneRequest : public ITuneRequest - { - public: - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Channel( - /* [retval][out] */ long *Channel) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_Channel( - /* [in] */ long Channel) = 0; - - }; - -#else /* C style interface */ - - typedef struct IChannelTuneRequestVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IChannelTuneRequest * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IChannelTuneRequest * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IChannelTuneRequest * This); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( - IChannelTuneRequest * This, - /* [out] */ UINT *pctinfo); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( - IChannelTuneRequest * This, - /* [in] */ UINT iTInfo, - /* [in] */ LCID lcid, - /* [out] */ ITypeInfo **ppTInfo); - - HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( - IChannelTuneRequest * This, - /* [in] */ REFIID riid, - /* [size_is][in] */ LPOLESTR *rgszNames, - /* [in] */ UINT cNames, - /* [in] */ LCID lcid, - /* [size_is][out] */ DISPID *rgDispId); - - /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( - IChannelTuneRequest * This, - /* [in] */ DISPID dispIdMember, - /* [in] */ REFIID riid, - /* [in] */ LCID lcid, - /* [in] */ WORD wFlags, - /* [out][in] */ DISPPARAMS *pDispParams, - /* [out] */ VARIANT *pVarResult, - /* [out] */ EXCEPINFO *pExcepInfo, - /* [out] */ UINT *puArgErr); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_TuningSpace )( - IChannelTuneRequest * This, - /* [retval][out] */ ITuningSpace **TuningSpace); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Components )( - IChannelTuneRequest * This, - /* [retval][out] */ IComponents **Components); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Clone )( - IChannelTuneRequest * This, - /* [retval][out] */ ITuneRequest **NewTuneRequest); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Locator )( - IChannelTuneRequest * This, - /* [retval][out] */ ILocator **Locator); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Locator )( - IChannelTuneRequest * This, - /* [in] */ ILocator *Locator); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Channel )( - IChannelTuneRequest * This, - /* [retval][out] */ long *Channel); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Channel )( - IChannelTuneRequest * This, - /* [in] */ long Channel); - - END_INTERFACE - } IChannelTuneRequestVtbl; - - interface IChannelTuneRequest - { - CONST_VTBL struct IChannelTuneRequestVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IChannelTuneRequest_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IChannelTuneRequest_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IChannelTuneRequest_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IChannelTuneRequest_GetTypeInfoCount(This,pctinfo) \ - (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) - -#define IChannelTuneRequest_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ - (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) - -#define IChannelTuneRequest_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ - (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) - -#define IChannelTuneRequest_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ - (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) - - -#define IChannelTuneRequest_get_TuningSpace(This,TuningSpace) \ - (This)->lpVtbl -> get_TuningSpace(This,TuningSpace) - -#define IChannelTuneRequest_get_Components(This,Components) \ - (This)->lpVtbl -> get_Components(This,Components) - -#define IChannelTuneRequest_Clone(This,NewTuneRequest) \ - (This)->lpVtbl -> Clone(This,NewTuneRequest) - -#define IChannelTuneRequest_get_Locator(This,Locator) \ - (This)->lpVtbl -> get_Locator(This,Locator) - -#define IChannelTuneRequest_put_Locator(This,Locator) \ - (This)->lpVtbl -> put_Locator(This,Locator) - - -#define IChannelTuneRequest_get_Channel(This,Channel) \ - (This)->lpVtbl -> get_Channel(This,Channel) - -#define IChannelTuneRequest_put_Channel(This,Channel) \ - (This)->lpVtbl -> put_Channel(This,Channel) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IChannelTuneRequest_get_Channel_Proxy( - IChannelTuneRequest * This, - /* [retval][out] */ long *Channel); - - -void __RPC_STUB IChannelTuneRequest_get_Channel_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IChannelTuneRequest_put_Channel_Proxy( - IChannelTuneRequest * This, - /* [in] */ long Channel); - - -void __RPC_STUB IChannelTuneRequest_put_Channel_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IChannelTuneRequest_INTERFACE_DEFINED__ */ - - -#ifndef __IATSCChannelTuneRequest_INTERFACE_DEFINED__ -#define __IATSCChannelTuneRequest_INTERFACE_DEFINED__ - -/* interface IATSCChannelTuneRequest */ -/* [unique][helpstring][oleautomation][dual][uuid][nonextensible][object] */ - - -EXTERN_C const IID IID_IATSCChannelTuneRequest; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("0369B4E1-45B6-11d3-B650-00C04F79498E") - IATSCChannelTuneRequest : public IChannelTuneRequest - { - public: - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_MinorChannel( - /* [retval][out] */ long *MinorChannel) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_MinorChannel( - /* [in] */ long MinorChannel) = 0; - - }; - -#else /* C style interface */ - - typedef struct IATSCChannelTuneRequestVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IATSCChannelTuneRequest * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IATSCChannelTuneRequest * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IATSCChannelTuneRequest * This); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( - IATSCChannelTuneRequest * This, - /* [out] */ UINT *pctinfo); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( - IATSCChannelTuneRequest * This, - /* [in] */ UINT iTInfo, - /* [in] */ LCID lcid, - /* [out] */ ITypeInfo **ppTInfo); - - HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( - IATSCChannelTuneRequest * This, - /* [in] */ REFIID riid, - /* [size_is][in] */ LPOLESTR *rgszNames, - /* [in] */ UINT cNames, - /* [in] */ LCID lcid, - /* [size_is][out] */ DISPID *rgDispId); - - /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( - IATSCChannelTuneRequest * This, - /* [in] */ DISPID dispIdMember, - /* [in] */ REFIID riid, - /* [in] */ LCID lcid, - /* [in] */ WORD wFlags, - /* [out][in] */ DISPPARAMS *pDispParams, - /* [out] */ VARIANT *pVarResult, - /* [out] */ EXCEPINFO *pExcepInfo, - /* [out] */ UINT *puArgErr); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_TuningSpace )( - IATSCChannelTuneRequest * This, - /* [retval][out] */ ITuningSpace **TuningSpace); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Components )( - IATSCChannelTuneRequest * This, - /* [retval][out] */ IComponents **Components); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Clone )( - IATSCChannelTuneRequest * This, - /* [retval][out] */ ITuneRequest **NewTuneRequest); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Locator )( - IATSCChannelTuneRequest * This, - /* [retval][out] */ ILocator **Locator); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Locator )( - IATSCChannelTuneRequest * This, - /* [in] */ ILocator *Locator); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Channel )( - IATSCChannelTuneRequest * This, - /* [retval][out] */ long *Channel); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Channel )( - IATSCChannelTuneRequest * This, - /* [in] */ long Channel); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_MinorChannel )( - IATSCChannelTuneRequest * This, - /* [retval][out] */ long *MinorChannel); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_MinorChannel )( - IATSCChannelTuneRequest * This, - /* [in] */ long MinorChannel); - - END_INTERFACE - } IATSCChannelTuneRequestVtbl; - - interface IATSCChannelTuneRequest - { - CONST_VTBL struct IATSCChannelTuneRequestVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IATSCChannelTuneRequest_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IATSCChannelTuneRequest_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IATSCChannelTuneRequest_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IATSCChannelTuneRequest_GetTypeInfoCount(This,pctinfo) \ - (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) - -#define IATSCChannelTuneRequest_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ - (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) - -#define IATSCChannelTuneRequest_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ - (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) - -#define IATSCChannelTuneRequest_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ - (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) - - -#define IATSCChannelTuneRequest_get_TuningSpace(This,TuningSpace) \ - (This)->lpVtbl -> get_TuningSpace(This,TuningSpace) - -#define IATSCChannelTuneRequest_get_Components(This,Components) \ - (This)->lpVtbl -> get_Components(This,Components) - -#define IATSCChannelTuneRequest_Clone(This,NewTuneRequest) \ - (This)->lpVtbl -> Clone(This,NewTuneRequest) - -#define IATSCChannelTuneRequest_get_Locator(This,Locator) \ - (This)->lpVtbl -> get_Locator(This,Locator) - -#define IATSCChannelTuneRequest_put_Locator(This,Locator) \ - (This)->lpVtbl -> put_Locator(This,Locator) - - -#define IATSCChannelTuneRequest_get_Channel(This,Channel) \ - (This)->lpVtbl -> get_Channel(This,Channel) - -#define IATSCChannelTuneRequest_put_Channel(This,Channel) \ - (This)->lpVtbl -> put_Channel(This,Channel) - - -#define IATSCChannelTuneRequest_get_MinorChannel(This,MinorChannel) \ - (This)->lpVtbl -> get_MinorChannel(This,MinorChannel) - -#define IATSCChannelTuneRequest_put_MinorChannel(This,MinorChannel) \ - (This)->lpVtbl -> put_MinorChannel(This,MinorChannel) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IATSCChannelTuneRequest_get_MinorChannel_Proxy( - IATSCChannelTuneRequest * This, - /* [retval][out] */ long *MinorChannel); - - -void __RPC_STUB IATSCChannelTuneRequest_get_MinorChannel_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IATSCChannelTuneRequest_put_MinorChannel_Proxy( - IATSCChannelTuneRequest * This, - /* [in] */ long MinorChannel); - - -void __RPC_STUB IATSCChannelTuneRequest_put_MinorChannel_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IATSCChannelTuneRequest_INTERFACE_DEFINED__ */ - - -#ifndef __IDVBTuneRequest_INTERFACE_DEFINED__ -#define __IDVBTuneRequest_INTERFACE_DEFINED__ - -/* interface IDVBTuneRequest */ -/* [unique][helpstring][oleautomation][dual][uuid][nonextensible][object] */ - - -EXTERN_C const IID IID_IDVBTuneRequest; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("0D6F567E-A636-42bb-83BA-CE4C1704AFA2") - IDVBTuneRequest : public ITuneRequest - { - public: - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_ONID( - /* [retval][out] */ long *ONID) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_ONID( - /* [in] */ long ONID) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_TSID( - /* [retval][out] */ long *TSID) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_TSID( - /* [in] */ long TSID) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_SID( - /* [retval][out] */ long *SID) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_SID( - /* [in] */ long SID) = 0; - - }; - -#else /* C style interface */ - - typedef struct IDVBTuneRequestVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IDVBTuneRequest * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IDVBTuneRequest * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IDVBTuneRequest * This); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( - IDVBTuneRequest * This, - /* [out] */ UINT *pctinfo); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( - IDVBTuneRequest * This, - /* [in] */ UINT iTInfo, - /* [in] */ LCID lcid, - /* [out] */ ITypeInfo **ppTInfo); - - HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( - IDVBTuneRequest * This, - /* [in] */ REFIID riid, - /* [size_is][in] */ LPOLESTR *rgszNames, - /* [in] */ UINT cNames, - /* [in] */ LCID lcid, - /* [size_is][out] */ DISPID *rgDispId); - - /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( - IDVBTuneRequest * This, - /* [in] */ DISPID dispIdMember, - /* [in] */ REFIID riid, - /* [in] */ LCID lcid, - /* [in] */ WORD wFlags, - /* [out][in] */ DISPPARAMS *pDispParams, - /* [out] */ VARIANT *pVarResult, - /* [out] */ EXCEPINFO *pExcepInfo, - /* [out] */ UINT *puArgErr); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_TuningSpace )( - IDVBTuneRequest * This, - /* [retval][out] */ ITuningSpace **TuningSpace); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Components )( - IDVBTuneRequest * This, - /* [retval][out] */ IComponents **Components); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Clone )( - IDVBTuneRequest * This, - /* [retval][out] */ ITuneRequest **NewTuneRequest); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Locator )( - IDVBTuneRequest * This, - /* [retval][out] */ ILocator **Locator); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Locator )( - IDVBTuneRequest * This, - /* [in] */ ILocator *Locator); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_ONID )( - IDVBTuneRequest * This, - /* [retval][out] */ long *ONID); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_ONID )( - IDVBTuneRequest * This, - /* [in] */ long ONID); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_TSID )( - IDVBTuneRequest * This, - /* [retval][out] */ long *TSID); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_TSID )( - IDVBTuneRequest * This, - /* [in] */ long TSID); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_SID )( - IDVBTuneRequest * This, - /* [retval][out] */ long *SID); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_SID )( - IDVBTuneRequest * This, - /* [in] */ long SID); - - END_INTERFACE - } IDVBTuneRequestVtbl; - - interface IDVBTuneRequest - { - CONST_VTBL struct IDVBTuneRequestVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IDVBTuneRequest_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IDVBTuneRequest_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IDVBTuneRequest_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IDVBTuneRequest_GetTypeInfoCount(This,pctinfo) \ - (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) - -#define IDVBTuneRequest_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ - (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) - -#define IDVBTuneRequest_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ - (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) - -#define IDVBTuneRequest_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ - (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) - - -#define IDVBTuneRequest_get_TuningSpace(This,TuningSpace) \ - (This)->lpVtbl -> get_TuningSpace(This,TuningSpace) - -#define IDVBTuneRequest_get_Components(This,Components) \ - (This)->lpVtbl -> get_Components(This,Components) - -#define IDVBTuneRequest_Clone(This,NewTuneRequest) \ - (This)->lpVtbl -> Clone(This,NewTuneRequest) - -#define IDVBTuneRequest_get_Locator(This,Locator) \ - (This)->lpVtbl -> get_Locator(This,Locator) - -#define IDVBTuneRequest_put_Locator(This,Locator) \ - (This)->lpVtbl -> put_Locator(This,Locator) - - -#define IDVBTuneRequest_get_ONID(This,ONID) \ - (This)->lpVtbl -> get_ONID(This,ONID) - -#define IDVBTuneRequest_put_ONID(This,ONID) \ - (This)->lpVtbl -> put_ONID(This,ONID) - -#define IDVBTuneRequest_get_TSID(This,TSID) \ - (This)->lpVtbl -> get_TSID(This,TSID) - -#define IDVBTuneRequest_put_TSID(This,TSID) \ - (This)->lpVtbl -> put_TSID(This,TSID) - -#define IDVBTuneRequest_get_SID(This,SID) \ - (This)->lpVtbl -> get_SID(This,SID) - -#define IDVBTuneRequest_put_SID(This,SID) \ - (This)->lpVtbl -> put_SID(This,SID) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDVBTuneRequest_get_ONID_Proxy( - IDVBTuneRequest * This, - /* [retval][out] */ long *ONID); - - -void __RPC_STUB IDVBTuneRequest_get_ONID_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDVBTuneRequest_put_ONID_Proxy( - IDVBTuneRequest * This, - /* [in] */ long ONID); - - -void __RPC_STUB IDVBTuneRequest_put_ONID_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDVBTuneRequest_get_TSID_Proxy( - IDVBTuneRequest * This, - /* [retval][out] */ long *TSID); - - -void __RPC_STUB IDVBTuneRequest_get_TSID_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDVBTuneRequest_put_TSID_Proxy( - IDVBTuneRequest * This, - /* [in] */ long TSID); - - -void __RPC_STUB IDVBTuneRequest_put_TSID_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDVBTuneRequest_get_SID_Proxy( - IDVBTuneRequest * This, - /* [retval][out] */ long *SID); - - -void __RPC_STUB IDVBTuneRequest_get_SID_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDVBTuneRequest_put_SID_Proxy( - IDVBTuneRequest * This, - /* [in] */ long SID); - - -void __RPC_STUB IDVBTuneRequest_put_SID_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IDVBTuneRequest_INTERFACE_DEFINED__ */ - - -#ifndef __IMPEG2TuneRequest_INTERFACE_DEFINED__ -#define __IMPEG2TuneRequest_INTERFACE_DEFINED__ - -/* interface IMPEG2TuneRequest */ -/* [unique][helpstring][oleautomation][dual][uuid][nonextensible][object] */ - - -EXTERN_C const IID IID_IMPEG2TuneRequest; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("EB7D987F-8A01-42ad-B8AE-574DEEE44D1A") - IMPEG2TuneRequest : public ITuneRequest - { - public: - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_TSID( - /* [retval][out] */ long *TSID) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_TSID( - /* [in] */ long TSID) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_ProgNo( - /* [retval][out] */ long *ProgNo) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_ProgNo( - /* [in] */ long ProgNo) = 0; - - }; - -#else /* C style interface */ - - typedef struct IMPEG2TuneRequestVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IMPEG2TuneRequest * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IMPEG2TuneRequest * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IMPEG2TuneRequest * This); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( - IMPEG2TuneRequest * This, - /* [out] */ UINT *pctinfo); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( - IMPEG2TuneRequest * This, - /* [in] */ UINT iTInfo, - /* [in] */ LCID lcid, - /* [out] */ ITypeInfo **ppTInfo); - - HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( - IMPEG2TuneRequest * This, - /* [in] */ REFIID riid, - /* [size_is][in] */ LPOLESTR *rgszNames, - /* [in] */ UINT cNames, - /* [in] */ LCID lcid, - /* [size_is][out] */ DISPID *rgDispId); - - /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( - IMPEG2TuneRequest * This, - /* [in] */ DISPID dispIdMember, - /* [in] */ REFIID riid, - /* [in] */ LCID lcid, - /* [in] */ WORD wFlags, - /* [out][in] */ DISPPARAMS *pDispParams, - /* [out] */ VARIANT *pVarResult, - /* [out] */ EXCEPINFO *pExcepInfo, - /* [out] */ UINT *puArgErr); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_TuningSpace )( - IMPEG2TuneRequest * This, - /* [retval][out] */ ITuningSpace **TuningSpace); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Components )( - IMPEG2TuneRequest * This, - /* [retval][out] */ IComponents **Components); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Clone )( - IMPEG2TuneRequest * This, - /* [retval][out] */ ITuneRequest **NewTuneRequest); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Locator )( - IMPEG2TuneRequest * This, - /* [retval][out] */ ILocator **Locator); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Locator )( - IMPEG2TuneRequest * This, - /* [in] */ ILocator *Locator); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_TSID )( - IMPEG2TuneRequest * This, - /* [retval][out] */ long *TSID); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_TSID )( - IMPEG2TuneRequest * This, - /* [in] */ long TSID); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_ProgNo )( - IMPEG2TuneRequest * This, - /* [retval][out] */ long *ProgNo); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_ProgNo )( - IMPEG2TuneRequest * This, - /* [in] */ long ProgNo); - - END_INTERFACE - } IMPEG2TuneRequestVtbl; - - interface IMPEG2TuneRequest - { - CONST_VTBL struct IMPEG2TuneRequestVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IMPEG2TuneRequest_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IMPEG2TuneRequest_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IMPEG2TuneRequest_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IMPEG2TuneRequest_GetTypeInfoCount(This,pctinfo) \ - (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) - -#define IMPEG2TuneRequest_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ - (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) - -#define IMPEG2TuneRequest_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ - (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) - -#define IMPEG2TuneRequest_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ - (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) - - -#define IMPEG2TuneRequest_get_TuningSpace(This,TuningSpace) \ - (This)->lpVtbl -> get_TuningSpace(This,TuningSpace) - -#define IMPEG2TuneRequest_get_Components(This,Components) \ - (This)->lpVtbl -> get_Components(This,Components) - -#define IMPEG2TuneRequest_Clone(This,NewTuneRequest) \ - (This)->lpVtbl -> Clone(This,NewTuneRequest) - -#define IMPEG2TuneRequest_get_Locator(This,Locator) \ - (This)->lpVtbl -> get_Locator(This,Locator) - -#define IMPEG2TuneRequest_put_Locator(This,Locator) \ - (This)->lpVtbl -> put_Locator(This,Locator) - - -#define IMPEG2TuneRequest_get_TSID(This,TSID) \ - (This)->lpVtbl -> get_TSID(This,TSID) - -#define IMPEG2TuneRequest_put_TSID(This,TSID) \ - (This)->lpVtbl -> put_TSID(This,TSID) - -#define IMPEG2TuneRequest_get_ProgNo(This,ProgNo) \ - (This)->lpVtbl -> get_ProgNo(This,ProgNo) - -#define IMPEG2TuneRequest_put_ProgNo(This,ProgNo) \ - (This)->lpVtbl -> put_ProgNo(This,ProgNo) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IMPEG2TuneRequest_get_TSID_Proxy( - IMPEG2TuneRequest * This, - /* [retval][out] */ long *TSID); - - -void __RPC_STUB IMPEG2TuneRequest_get_TSID_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IMPEG2TuneRequest_put_TSID_Proxy( - IMPEG2TuneRequest * This, - /* [in] */ long TSID); - - -void __RPC_STUB IMPEG2TuneRequest_put_TSID_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IMPEG2TuneRequest_get_ProgNo_Proxy( - IMPEG2TuneRequest * This, - /* [retval][out] */ long *ProgNo); - - -void __RPC_STUB IMPEG2TuneRequest_get_ProgNo_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IMPEG2TuneRequest_put_ProgNo_Proxy( - IMPEG2TuneRequest * This, - /* [in] */ long ProgNo); - - -void __RPC_STUB IMPEG2TuneRequest_put_ProgNo_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IMPEG2TuneRequest_INTERFACE_DEFINED__ */ - - -#ifndef __IMPEG2TuneRequestFactory_INTERFACE_DEFINED__ -#define __IMPEG2TuneRequestFactory_INTERFACE_DEFINED__ - -/* interface IMPEG2TuneRequestFactory */ -/* [unique][helpstring][oleautomation][dual][uuid][hidden][nonextensible][object] */ - - -EXTERN_C const IID IID_IMPEG2TuneRequestFactory; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("14E11ABD-EE37-4893-9EA1-6964DE933E39") - IMPEG2TuneRequestFactory : public IDispatch - { - public: - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE CreateTuneRequest( - /* [in] */ ITuningSpace *TuningSpace, - /* [retval][out] */ IMPEG2TuneRequest **TuneRequest) = 0; - - }; - -#else /* C style interface */ - - typedef struct IMPEG2TuneRequestFactoryVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IMPEG2TuneRequestFactory * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IMPEG2TuneRequestFactory * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IMPEG2TuneRequestFactory * This); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( - IMPEG2TuneRequestFactory * This, - /* [out] */ UINT *pctinfo); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( - IMPEG2TuneRequestFactory * This, - /* [in] */ UINT iTInfo, - /* [in] */ LCID lcid, - /* [out] */ ITypeInfo **ppTInfo); - - HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( - IMPEG2TuneRequestFactory * This, - /* [in] */ REFIID riid, - /* [size_is][in] */ LPOLESTR *rgszNames, - /* [in] */ UINT cNames, - /* [in] */ LCID lcid, - /* [size_is][out] */ DISPID *rgDispId); - - /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( - IMPEG2TuneRequestFactory * This, - /* [in] */ DISPID dispIdMember, - /* [in] */ REFIID riid, - /* [in] */ LCID lcid, - /* [in] */ WORD wFlags, - /* [out][in] */ DISPPARAMS *pDispParams, - /* [out] */ VARIANT *pVarResult, - /* [out] */ EXCEPINFO *pExcepInfo, - /* [out] */ UINT *puArgErr); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *CreateTuneRequest )( - IMPEG2TuneRequestFactory * This, - /* [in] */ ITuningSpace *TuningSpace, - /* [retval][out] */ IMPEG2TuneRequest **TuneRequest); - - END_INTERFACE - } IMPEG2TuneRequestFactoryVtbl; - - interface IMPEG2TuneRequestFactory - { - CONST_VTBL struct IMPEG2TuneRequestFactoryVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IMPEG2TuneRequestFactory_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IMPEG2TuneRequestFactory_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IMPEG2TuneRequestFactory_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IMPEG2TuneRequestFactory_GetTypeInfoCount(This,pctinfo) \ - (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) - -#define IMPEG2TuneRequestFactory_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ - (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) - -#define IMPEG2TuneRequestFactory_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ - (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) - -#define IMPEG2TuneRequestFactory_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ - (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) - - -#define IMPEG2TuneRequestFactory_CreateTuneRequest(This,TuningSpace,TuneRequest) \ - (This)->lpVtbl -> CreateTuneRequest(This,TuningSpace,TuneRequest) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IMPEG2TuneRequestFactory_CreateTuneRequest_Proxy( - IMPEG2TuneRequestFactory * This, - /* [in] */ ITuningSpace *TuningSpace, - /* [retval][out] */ IMPEG2TuneRequest **TuneRequest); - - -void __RPC_STUB IMPEG2TuneRequestFactory_CreateTuneRequest_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IMPEG2TuneRequestFactory_INTERFACE_DEFINED__ */ - - -#ifndef __IMPEG2TuneRequestSupport_INTERFACE_DEFINED__ -#define __IMPEG2TuneRequestSupport_INTERFACE_DEFINED__ - -/* interface IMPEG2TuneRequestSupport */ -/* [unique][helpstring][uuid][nonextensible][restricted][hidden][object] */ - - -EXTERN_C const IID IID_IMPEG2TuneRequestSupport; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("1B9D5FC3-5BBC-4b6c-BB18-B9D10E3EEEBF") - IMPEG2TuneRequestSupport : public IUnknown - { - public: - }; - -#else /* C style interface */ - - typedef struct IMPEG2TuneRequestSupportVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IMPEG2TuneRequestSupport * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IMPEG2TuneRequestSupport * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IMPEG2TuneRequestSupport * This); - - END_INTERFACE - } IMPEG2TuneRequestSupportVtbl; - - interface IMPEG2TuneRequestSupport - { - CONST_VTBL struct IMPEG2TuneRequestSupportVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IMPEG2TuneRequestSupport_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IMPEG2TuneRequestSupport_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IMPEG2TuneRequestSupport_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __IMPEG2TuneRequestSupport_INTERFACE_DEFINED__ */ - - -#ifndef __ITuner_INTERFACE_DEFINED__ -#define __ITuner_INTERFACE_DEFINED__ - -/* interface ITuner */ -/* [unique][helpstring][uuid][nonextensible][hidden][object] */ - - -EXTERN_C const IID IID_ITuner; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("28C52640-018A-11d3-9D8E-00C04F72D980") - ITuner : public IUnknown - { - public: - virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_TuningSpace( - /* [retval][out] */ ITuningSpace **TuningSpace) = 0; - - virtual /* [helpstring][propput] */ HRESULT STDMETHODCALLTYPE put_TuningSpace( - /* [in] */ ITuningSpace *TuningSpace) = 0; - - virtual /* [helpstring][restricted][hidden] */ HRESULT STDMETHODCALLTYPE EnumTuningSpaces( - /* [retval][out] */ IEnumTuningSpaces **ppEnum) = 0; - - virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_TuneRequest( - /* [retval][out] */ ITuneRequest **TuneRequest) = 0; - - virtual /* [helpstring][propput] */ HRESULT STDMETHODCALLTYPE put_TuneRequest( - /* [in] */ ITuneRequest *TuneRequest) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE Validate( - /* [in] */ ITuneRequest *TuneRequest) = 0; - - virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_PreferredComponentTypes( - /* [retval][out] */ IComponentTypes **ComponentTypes) = 0; - - virtual /* [helpstring][propput] */ HRESULT STDMETHODCALLTYPE put_PreferredComponentTypes( - /* [in] */ IComponentTypes *ComponentTypes) = 0; - - virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_SignalStrength( - /* [retval][out] */ long *Strength) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE TriggerSignalEvents( - /* [in] */ long Interval) = 0; - - }; - -#else /* C style interface */ - - typedef struct ITunerVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - ITuner * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - ITuner * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - ITuner * This); - - /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_TuningSpace )( - ITuner * This, - /* [retval][out] */ ITuningSpace **TuningSpace); - - /* [helpstring][propput] */ HRESULT ( STDMETHODCALLTYPE *put_TuningSpace )( - ITuner * This, - /* [in] */ ITuningSpace *TuningSpace); - - /* [helpstring][restricted][hidden] */ HRESULT ( STDMETHODCALLTYPE *EnumTuningSpaces )( - ITuner * This, - /* [retval][out] */ IEnumTuningSpaces **ppEnum); - - /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_TuneRequest )( - ITuner * This, - /* [retval][out] */ ITuneRequest **TuneRequest); - - /* [helpstring][propput] */ HRESULT ( STDMETHODCALLTYPE *put_TuneRequest )( - ITuner * This, - /* [in] */ ITuneRequest *TuneRequest); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *Validate )( - ITuner * This, - /* [in] */ ITuneRequest *TuneRequest); - - /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_PreferredComponentTypes )( - ITuner * This, - /* [retval][out] */ IComponentTypes **ComponentTypes); - - /* [helpstring][propput] */ HRESULT ( STDMETHODCALLTYPE *put_PreferredComponentTypes )( - ITuner * This, - /* [in] */ IComponentTypes *ComponentTypes); - - /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_SignalStrength )( - ITuner * This, - /* [retval][out] */ long *Strength); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *TriggerSignalEvents )( - ITuner * This, - /* [in] */ long Interval); - - END_INTERFACE - } ITunerVtbl; - - interface ITuner - { - CONST_VTBL struct ITunerVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define ITuner_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define ITuner_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define ITuner_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define ITuner_get_TuningSpace(This,TuningSpace) \ - (This)->lpVtbl -> get_TuningSpace(This,TuningSpace) - -#define ITuner_put_TuningSpace(This,TuningSpace) \ - (This)->lpVtbl -> put_TuningSpace(This,TuningSpace) - -#define ITuner_EnumTuningSpaces(This,ppEnum) \ - (This)->lpVtbl -> EnumTuningSpaces(This,ppEnum) - -#define ITuner_get_TuneRequest(This,TuneRequest) \ - (This)->lpVtbl -> get_TuneRequest(This,TuneRequest) - -#define ITuner_put_TuneRequest(This,TuneRequest) \ - (This)->lpVtbl -> put_TuneRequest(This,TuneRequest) - -#define ITuner_Validate(This,TuneRequest) \ - (This)->lpVtbl -> Validate(This,TuneRequest) - -#define ITuner_get_PreferredComponentTypes(This,ComponentTypes) \ - (This)->lpVtbl -> get_PreferredComponentTypes(This,ComponentTypes) - -#define ITuner_put_PreferredComponentTypes(This,ComponentTypes) \ - (This)->lpVtbl -> put_PreferredComponentTypes(This,ComponentTypes) - -#define ITuner_get_SignalStrength(This,Strength) \ - (This)->lpVtbl -> get_SignalStrength(This,Strength) - -#define ITuner_TriggerSignalEvents(This,Interval) \ - (This)->lpVtbl -> TriggerSignalEvents(This,Interval) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE ITuner_get_TuningSpace_Proxy( - ITuner * This, - /* [retval][out] */ ITuningSpace **TuningSpace); - - -void __RPC_STUB ITuner_get_TuningSpace_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][propput] */ HRESULT STDMETHODCALLTYPE ITuner_put_TuningSpace_Proxy( - ITuner * This, - /* [in] */ ITuningSpace *TuningSpace); - - -void __RPC_STUB ITuner_put_TuningSpace_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][restricted][hidden] */ HRESULT STDMETHODCALLTYPE ITuner_EnumTuningSpaces_Proxy( - ITuner * This, - /* [retval][out] */ IEnumTuningSpaces **ppEnum); - - -void __RPC_STUB ITuner_EnumTuningSpaces_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE ITuner_get_TuneRequest_Proxy( - ITuner * This, - /* [retval][out] */ ITuneRequest **TuneRequest); - - -void __RPC_STUB ITuner_get_TuneRequest_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][propput] */ HRESULT STDMETHODCALLTYPE ITuner_put_TuneRequest_Proxy( - ITuner * This, - /* [in] */ ITuneRequest *TuneRequest); - - -void __RPC_STUB ITuner_put_TuneRequest_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE ITuner_Validate_Proxy( - ITuner * This, - /* [in] */ ITuneRequest *TuneRequest); - - -void __RPC_STUB ITuner_Validate_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE ITuner_get_PreferredComponentTypes_Proxy( - ITuner * This, - /* [retval][out] */ IComponentTypes **ComponentTypes); - - -void __RPC_STUB ITuner_get_PreferredComponentTypes_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][propput] */ HRESULT STDMETHODCALLTYPE ITuner_put_PreferredComponentTypes_Proxy( - ITuner * This, - /* [in] */ IComponentTypes *ComponentTypes); - - -void __RPC_STUB ITuner_put_PreferredComponentTypes_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE ITuner_get_SignalStrength_Proxy( - ITuner * This, - /* [retval][out] */ long *Strength); - - -void __RPC_STUB ITuner_get_SignalStrength_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE ITuner_TriggerSignalEvents_Proxy( - ITuner * This, - /* [in] */ long Interval); - - -void __RPC_STUB ITuner_TriggerSignalEvents_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __ITuner_INTERFACE_DEFINED__ */ - - -#ifndef __IScanningTuner_INTERFACE_DEFINED__ -#define __IScanningTuner_INTERFACE_DEFINED__ - -/* interface IScanningTuner */ -/* [unique][helpstring][uuid][nonextensible][hidden][object] */ - - -EXTERN_C const IID IID_IScanningTuner; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("1DFD0A5C-0284-11d3-9D8E-00C04F72D980") - IScanningTuner : public ITuner - { - public: - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SeekUp( void) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SeekDown( void) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE ScanUp( - /* [in] */ long MillisecondsPause) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE ScanDown( - /* [in] */ long MillisecondsPause) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE AutoProgram( void) = 0; - - }; - -#else /* C style interface */ - - typedef struct IScanningTunerVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IScanningTuner * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IScanningTuner * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IScanningTuner * This); - - /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_TuningSpace )( - IScanningTuner * This, - /* [retval][out] */ ITuningSpace **TuningSpace); - - /* [helpstring][propput] */ HRESULT ( STDMETHODCALLTYPE *put_TuningSpace )( - IScanningTuner * This, - /* [in] */ ITuningSpace *TuningSpace); - - /* [helpstring][restricted][hidden] */ HRESULT ( STDMETHODCALLTYPE *EnumTuningSpaces )( - IScanningTuner * This, - /* [retval][out] */ IEnumTuningSpaces **ppEnum); - - /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_TuneRequest )( - IScanningTuner * This, - /* [retval][out] */ ITuneRequest **TuneRequest); - - /* [helpstring][propput] */ HRESULT ( STDMETHODCALLTYPE *put_TuneRequest )( - IScanningTuner * This, - /* [in] */ ITuneRequest *TuneRequest); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *Validate )( - IScanningTuner * This, - /* [in] */ ITuneRequest *TuneRequest); - - /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_PreferredComponentTypes )( - IScanningTuner * This, - /* [retval][out] */ IComponentTypes **ComponentTypes); - - /* [helpstring][propput] */ HRESULT ( STDMETHODCALLTYPE *put_PreferredComponentTypes )( - IScanningTuner * This, - /* [in] */ IComponentTypes *ComponentTypes); - - /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_SignalStrength )( - IScanningTuner * This, - /* [retval][out] */ long *Strength); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *TriggerSignalEvents )( - IScanningTuner * This, - /* [in] */ long Interval); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SeekUp )( - IScanningTuner * This); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SeekDown )( - IScanningTuner * This); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *ScanUp )( - IScanningTuner * This, - /* [in] */ long MillisecondsPause); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *ScanDown )( - IScanningTuner * This, - /* [in] */ long MillisecondsPause); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *AutoProgram )( - IScanningTuner * This); - - END_INTERFACE - } IScanningTunerVtbl; - - interface IScanningTuner - { - CONST_VTBL struct IScanningTunerVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IScanningTuner_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IScanningTuner_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IScanningTuner_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IScanningTuner_get_TuningSpace(This,TuningSpace) \ - (This)->lpVtbl -> get_TuningSpace(This,TuningSpace) - -#define IScanningTuner_put_TuningSpace(This,TuningSpace) \ - (This)->lpVtbl -> put_TuningSpace(This,TuningSpace) - -#define IScanningTuner_EnumTuningSpaces(This,ppEnum) \ - (This)->lpVtbl -> EnumTuningSpaces(This,ppEnum) - -#define IScanningTuner_get_TuneRequest(This,TuneRequest) \ - (This)->lpVtbl -> get_TuneRequest(This,TuneRequest) - -#define IScanningTuner_put_TuneRequest(This,TuneRequest) \ - (This)->lpVtbl -> put_TuneRequest(This,TuneRequest) - -#define IScanningTuner_Validate(This,TuneRequest) \ - (This)->lpVtbl -> Validate(This,TuneRequest) - -#define IScanningTuner_get_PreferredComponentTypes(This,ComponentTypes) \ - (This)->lpVtbl -> get_PreferredComponentTypes(This,ComponentTypes) - -#define IScanningTuner_put_PreferredComponentTypes(This,ComponentTypes) \ - (This)->lpVtbl -> put_PreferredComponentTypes(This,ComponentTypes) - -#define IScanningTuner_get_SignalStrength(This,Strength) \ - (This)->lpVtbl -> get_SignalStrength(This,Strength) - -#define IScanningTuner_TriggerSignalEvents(This,Interval) \ - (This)->lpVtbl -> TriggerSignalEvents(This,Interval) - - -#define IScanningTuner_SeekUp(This) \ - (This)->lpVtbl -> SeekUp(This) - -#define IScanningTuner_SeekDown(This) \ - (This)->lpVtbl -> SeekDown(This) - -#define IScanningTuner_ScanUp(This,MillisecondsPause) \ - (This)->lpVtbl -> ScanUp(This,MillisecondsPause) - -#define IScanningTuner_ScanDown(This,MillisecondsPause) \ - (This)->lpVtbl -> ScanDown(This,MillisecondsPause) - -#define IScanningTuner_AutoProgram(This) \ - (This)->lpVtbl -> AutoProgram(This) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IScanningTuner_SeekUp_Proxy( - IScanningTuner * This); - - -void __RPC_STUB IScanningTuner_SeekUp_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IScanningTuner_SeekDown_Proxy( - IScanningTuner * This); - - -void __RPC_STUB IScanningTuner_SeekDown_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IScanningTuner_ScanUp_Proxy( - IScanningTuner * This, - /* [in] */ long MillisecondsPause); - - -void __RPC_STUB IScanningTuner_ScanUp_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IScanningTuner_ScanDown_Proxy( - IScanningTuner * This, - /* [in] */ long MillisecondsPause); - - -void __RPC_STUB IScanningTuner_ScanDown_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IScanningTuner_AutoProgram_Proxy( - IScanningTuner * This); - - -void __RPC_STUB IScanningTuner_AutoProgram_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IScanningTuner_INTERFACE_DEFINED__ */ - - -#ifndef __IComponentType_INTERFACE_DEFINED__ -#define __IComponentType_INTERFACE_DEFINED__ - -/* interface IComponentType */ -/* [unique][helpstring][oleautomation][dual][uuid][nonextensible][hidden][object] */ - - -EXTERN_C const IID IID_IComponentType; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("6A340DC0-0311-11d3-9D8E-00C04F72D980") - IComponentType : public IDispatch - { - public: - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Category( - /* [retval][out] */ ComponentCategory *Category) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_Category( - /* [in] */ ComponentCategory Category) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_MediaMajorType( - /* [retval][out] */ BSTR *MediaMajorType) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_MediaMajorType( - /* [in] */ BSTR MediaMajorType) = 0; - - virtual /* [restricted][hidden][helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get__MediaMajorType( - /* [retval][out] */ GUID *MediaMajorTypeGuid) = 0; - - virtual /* [restricted][hidden][helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put__MediaMajorType( - /* [in] */ REFCLSID MediaMajorTypeGuid) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_MediaSubType( - /* [retval][out] */ BSTR *MediaSubType) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_MediaSubType( - /* [in] */ BSTR MediaSubType) = 0; - - virtual /* [restricted][hidden][helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get__MediaSubType( - /* [retval][out] */ GUID *MediaSubTypeGuid) = 0; - - virtual /* [restricted][hidden][helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put__MediaSubType( - /* [in] */ REFCLSID MediaSubTypeGuid) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_MediaFormatType( - /* [retval][out] */ BSTR *MediaFormatType) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_MediaFormatType( - /* [in] */ BSTR MediaFormatType) = 0; - - virtual /* [restricted][hidden][helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get__MediaFormatType( - /* [retval][out] */ GUID *MediaFormatTypeGuid) = 0; - - virtual /* [restricted][hidden][helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put__MediaFormatType( - /* [in] */ REFCLSID MediaFormatTypeGuid) = 0; - - virtual /* [helpstring][restricted][hidden][id][propget] */ HRESULT STDMETHODCALLTYPE get_MediaType( - /* [retval][out] */ AM_MEDIA_TYPE *MediaType) = 0; - - virtual /* [helpstring][restricted][hidden][id][propput] */ HRESULT STDMETHODCALLTYPE put_MediaType( - /* [in] */ AM_MEDIA_TYPE *MediaType) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Clone( - /* [retval][out] */ IComponentType **NewCT) = 0; - - }; - -#else /* C style interface */ - - typedef struct IComponentTypeVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IComponentType * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IComponentType * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IComponentType * This); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( - IComponentType * This, - /* [out] */ UINT *pctinfo); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( - IComponentType * This, - /* [in] */ UINT iTInfo, - /* [in] */ LCID lcid, - /* [out] */ ITypeInfo **ppTInfo); - - HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( - IComponentType * This, - /* [in] */ REFIID riid, - /* [size_is][in] */ LPOLESTR *rgszNames, - /* [in] */ UINT cNames, - /* [in] */ LCID lcid, - /* [size_is][out] */ DISPID *rgDispId); - - /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( - IComponentType * This, - /* [in] */ DISPID dispIdMember, - /* [in] */ REFIID riid, - /* [in] */ LCID lcid, - /* [in] */ WORD wFlags, - /* [out][in] */ DISPPARAMS *pDispParams, - /* [out] */ VARIANT *pVarResult, - /* [out] */ EXCEPINFO *pExcepInfo, - /* [out] */ UINT *puArgErr); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Category )( - IComponentType * This, - /* [retval][out] */ ComponentCategory *Category); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Category )( - IComponentType * This, - /* [in] */ ComponentCategory Category); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_MediaMajorType )( - IComponentType * This, - /* [retval][out] */ BSTR *MediaMajorType); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_MediaMajorType )( - IComponentType * This, - /* [in] */ BSTR MediaMajorType); - - /* [restricted][hidden][helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get__MediaMajorType )( - IComponentType * This, - /* [retval][out] */ GUID *MediaMajorTypeGuid); - - /* [restricted][hidden][helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put__MediaMajorType )( - IComponentType * This, - /* [in] */ REFCLSID MediaMajorTypeGuid); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_MediaSubType )( - IComponentType * This, - /* [retval][out] */ BSTR *MediaSubType); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_MediaSubType )( - IComponentType * This, - /* [in] */ BSTR MediaSubType); - - /* [restricted][hidden][helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get__MediaSubType )( - IComponentType * This, - /* [retval][out] */ GUID *MediaSubTypeGuid); - - /* [restricted][hidden][helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put__MediaSubType )( - IComponentType * This, - /* [in] */ REFCLSID MediaSubTypeGuid); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_MediaFormatType )( - IComponentType * This, - /* [retval][out] */ BSTR *MediaFormatType); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_MediaFormatType )( - IComponentType * This, - /* [in] */ BSTR MediaFormatType); - - /* [restricted][hidden][helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get__MediaFormatType )( - IComponentType * This, - /* [retval][out] */ GUID *MediaFormatTypeGuid); - - /* [restricted][hidden][helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put__MediaFormatType )( - IComponentType * This, - /* [in] */ REFCLSID MediaFormatTypeGuid); - - /* [helpstring][restricted][hidden][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_MediaType )( - IComponentType * This, - /* [retval][out] */ AM_MEDIA_TYPE *MediaType); - - /* [helpstring][restricted][hidden][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_MediaType )( - IComponentType * This, - /* [in] */ AM_MEDIA_TYPE *MediaType); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Clone )( - IComponentType * This, - /* [retval][out] */ IComponentType **NewCT); - - END_INTERFACE - } IComponentTypeVtbl; - - interface IComponentType - { - CONST_VTBL struct IComponentTypeVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IComponentType_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IComponentType_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IComponentType_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IComponentType_GetTypeInfoCount(This,pctinfo) \ - (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) - -#define IComponentType_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ - (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) - -#define IComponentType_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ - (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) - -#define IComponentType_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ - (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) - - -#define IComponentType_get_Category(This,Category) \ - (This)->lpVtbl -> get_Category(This,Category) - -#define IComponentType_put_Category(This,Category) \ - (This)->lpVtbl -> put_Category(This,Category) - -#define IComponentType_get_MediaMajorType(This,MediaMajorType) \ - (This)->lpVtbl -> get_MediaMajorType(This,MediaMajorType) - -#define IComponentType_put_MediaMajorType(This,MediaMajorType) \ - (This)->lpVtbl -> put_MediaMajorType(This,MediaMajorType) - -#define IComponentType_get__MediaMajorType(This,MediaMajorTypeGuid) \ - (This)->lpVtbl -> get__MediaMajorType(This,MediaMajorTypeGuid) - -#define IComponentType_put__MediaMajorType(This,MediaMajorTypeGuid) \ - (This)->lpVtbl -> put__MediaMajorType(This,MediaMajorTypeGuid) - -#define IComponentType_get_MediaSubType(This,MediaSubType) \ - (This)->lpVtbl -> get_MediaSubType(This,MediaSubType) - -#define IComponentType_put_MediaSubType(This,MediaSubType) \ - (This)->lpVtbl -> put_MediaSubType(This,MediaSubType) - -#define IComponentType_get__MediaSubType(This,MediaSubTypeGuid) \ - (This)->lpVtbl -> get__MediaSubType(This,MediaSubTypeGuid) - -#define IComponentType_put__MediaSubType(This,MediaSubTypeGuid) \ - (This)->lpVtbl -> put__MediaSubType(This,MediaSubTypeGuid) - -#define IComponentType_get_MediaFormatType(This,MediaFormatType) \ - (This)->lpVtbl -> get_MediaFormatType(This,MediaFormatType) - -#define IComponentType_put_MediaFormatType(This,MediaFormatType) \ - (This)->lpVtbl -> put_MediaFormatType(This,MediaFormatType) - -#define IComponentType_get__MediaFormatType(This,MediaFormatTypeGuid) \ - (This)->lpVtbl -> get__MediaFormatType(This,MediaFormatTypeGuid) - -#define IComponentType_put__MediaFormatType(This,MediaFormatTypeGuid) \ - (This)->lpVtbl -> put__MediaFormatType(This,MediaFormatTypeGuid) - -#define IComponentType_get_MediaType(This,MediaType) \ - (This)->lpVtbl -> get_MediaType(This,MediaType) - -#define IComponentType_put_MediaType(This,MediaType) \ - (This)->lpVtbl -> put_MediaType(This,MediaType) - -#define IComponentType_Clone(This,NewCT) \ - (This)->lpVtbl -> Clone(This,NewCT) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IComponentType_get_Category_Proxy( - IComponentType * This, - /* [retval][out] */ ComponentCategory *Category); - - -void __RPC_STUB IComponentType_get_Category_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IComponentType_put_Category_Proxy( - IComponentType * This, - /* [in] */ ComponentCategory Category); - - -void __RPC_STUB IComponentType_put_Category_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IComponentType_get_MediaMajorType_Proxy( - IComponentType * This, - /* [retval][out] */ BSTR *MediaMajorType); - - -void __RPC_STUB IComponentType_get_MediaMajorType_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IComponentType_put_MediaMajorType_Proxy( - IComponentType * This, - /* [in] */ BSTR MediaMajorType); - - -void __RPC_STUB IComponentType_put_MediaMajorType_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [restricted][hidden][helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IComponentType_get__MediaMajorType_Proxy( - IComponentType * This, - /* [retval][out] */ GUID *MediaMajorTypeGuid); - - -void __RPC_STUB IComponentType_get__MediaMajorType_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [restricted][hidden][helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IComponentType_put__MediaMajorType_Proxy( - IComponentType * This, - /* [in] */ REFCLSID MediaMajorTypeGuid); - - -void __RPC_STUB IComponentType_put__MediaMajorType_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IComponentType_get_MediaSubType_Proxy( - IComponentType * This, - /* [retval][out] */ BSTR *MediaSubType); - - -void __RPC_STUB IComponentType_get_MediaSubType_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IComponentType_put_MediaSubType_Proxy( - IComponentType * This, - /* [in] */ BSTR MediaSubType); - - -void __RPC_STUB IComponentType_put_MediaSubType_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [restricted][hidden][helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IComponentType_get__MediaSubType_Proxy( - IComponentType * This, - /* [retval][out] */ GUID *MediaSubTypeGuid); - - -void __RPC_STUB IComponentType_get__MediaSubType_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [restricted][hidden][helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IComponentType_put__MediaSubType_Proxy( - IComponentType * This, - /* [in] */ REFCLSID MediaSubTypeGuid); - - -void __RPC_STUB IComponentType_put__MediaSubType_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IComponentType_get_MediaFormatType_Proxy( - IComponentType * This, - /* [retval][out] */ BSTR *MediaFormatType); - - -void __RPC_STUB IComponentType_get_MediaFormatType_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IComponentType_put_MediaFormatType_Proxy( - IComponentType * This, - /* [in] */ BSTR MediaFormatType); - - -void __RPC_STUB IComponentType_put_MediaFormatType_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [restricted][hidden][helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IComponentType_get__MediaFormatType_Proxy( - IComponentType * This, - /* [retval][out] */ GUID *MediaFormatTypeGuid); - - -void __RPC_STUB IComponentType_get__MediaFormatType_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [restricted][hidden][helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IComponentType_put__MediaFormatType_Proxy( - IComponentType * This, - /* [in] */ REFCLSID MediaFormatTypeGuid); - - -void __RPC_STUB IComponentType_put__MediaFormatType_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][restricted][hidden][id][propget] */ HRESULT STDMETHODCALLTYPE IComponentType_get_MediaType_Proxy( - IComponentType * This, - /* [retval][out] */ AM_MEDIA_TYPE *MediaType); - - -void __RPC_STUB IComponentType_get_MediaType_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][restricted][hidden][id][propput] */ HRESULT STDMETHODCALLTYPE IComponentType_put_MediaType_Proxy( - IComponentType * This, - /* [in] */ AM_MEDIA_TYPE *MediaType); - - -void __RPC_STUB IComponentType_put_MediaType_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IComponentType_Clone_Proxy( - IComponentType * This, - /* [retval][out] */ IComponentType **NewCT); - - -void __RPC_STUB IComponentType_Clone_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IComponentType_INTERFACE_DEFINED__ */ - - -#ifndef __ILanguageComponentType_INTERFACE_DEFINED__ -#define __ILanguageComponentType_INTERFACE_DEFINED__ - -/* interface ILanguageComponentType */ -/* [unique][helpstring][oleautomation][dual][uuid][nonextensible][hidden][object] */ - - -EXTERN_C const IID IID_ILanguageComponentType; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("B874C8BA-0FA2-11d3-9D8E-00C04F72D980") - ILanguageComponentType : public IComponentType - { - public: - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_LangID( - /* [retval][out] */ long *LangID) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_LangID( - /* [in] */ long LangID) = 0; - - }; - -#else /* C style interface */ - - typedef struct ILanguageComponentTypeVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - ILanguageComponentType * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - ILanguageComponentType * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - ILanguageComponentType * This); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( - ILanguageComponentType * This, - /* [out] */ UINT *pctinfo); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( - ILanguageComponentType * This, - /* [in] */ UINT iTInfo, - /* [in] */ LCID lcid, - /* [out] */ ITypeInfo **ppTInfo); - - HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( - ILanguageComponentType * This, - /* [in] */ REFIID riid, - /* [size_is][in] */ LPOLESTR *rgszNames, - /* [in] */ UINT cNames, - /* [in] */ LCID lcid, - /* [size_is][out] */ DISPID *rgDispId); - - /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( - ILanguageComponentType * This, - /* [in] */ DISPID dispIdMember, - /* [in] */ REFIID riid, - /* [in] */ LCID lcid, - /* [in] */ WORD wFlags, - /* [out][in] */ DISPPARAMS *pDispParams, - /* [out] */ VARIANT *pVarResult, - /* [out] */ EXCEPINFO *pExcepInfo, - /* [out] */ UINT *puArgErr); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Category )( - ILanguageComponentType * This, - /* [retval][out] */ ComponentCategory *Category); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Category )( - ILanguageComponentType * This, - /* [in] */ ComponentCategory Category); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_MediaMajorType )( - ILanguageComponentType * This, - /* [retval][out] */ BSTR *MediaMajorType); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_MediaMajorType )( - ILanguageComponentType * This, - /* [in] */ BSTR MediaMajorType); - - /* [restricted][hidden][helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get__MediaMajorType )( - ILanguageComponentType * This, - /* [retval][out] */ GUID *MediaMajorTypeGuid); - - /* [restricted][hidden][helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put__MediaMajorType )( - ILanguageComponentType * This, - /* [in] */ REFCLSID MediaMajorTypeGuid); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_MediaSubType )( - ILanguageComponentType * This, - /* [retval][out] */ BSTR *MediaSubType); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_MediaSubType )( - ILanguageComponentType * This, - /* [in] */ BSTR MediaSubType); - - /* [restricted][hidden][helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get__MediaSubType )( - ILanguageComponentType * This, - /* [retval][out] */ GUID *MediaSubTypeGuid); - - /* [restricted][hidden][helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put__MediaSubType )( - ILanguageComponentType * This, - /* [in] */ REFCLSID MediaSubTypeGuid); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_MediaFormatType )( - ILanguageComponentType * This, - /* [retval][out] */ BSTR *MediaFormatType); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_MediaFormatType )( - ILanguageComponentType * This, - /* [in] */ BSTR MediaFormatType); - - /* [restricted][hidden][helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get__MediaFormatType )( - ILanguageComponentType * This, - /* [retval][out] */ GUID *MediaFormatTypeGuid); - - /* [restricted][hidden][helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put__MediaFormatType )( - ILanguageComponentType * This, - /* [in] */ REFCLSID MediaFormatTypeGuid); - - /* [helpstring][restricted][hidden][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_MediaType )( - ILanguageComponentType * This, - /* [retval][out] */ AM_MEDIA_TYPE *MediaType); - - /* [helpstring][restricted][hidden][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_MediaType )( - ILanguageComponentType * This, - /* [in] */ AM_MEDIA_TYPE *MediaType); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Clone )( - ILanguageComponentType * This, - /* [retval][out] */ IComponentType **NewCT); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_LangID )( - ILanguageComponentType * This, - /* [retval][out] */ long *LangID); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_LangID )( - ILanguageComponentType * This, - /* [in] */ long LangID); - - END_INTERFACE - } ILanguageComponentTypeVtbl; - - interface ILanguageComponentType - { - CONST_VTBL struct ILanguageComponentTypeVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define ILanguageComponentType_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define ILanguageComponentType_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define ILanguageComponentType_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define ILanguageComponentType_GetTypeInfoCount(This,pctinfo) \ - (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) - -#define ILanguageComponentType_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ - (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) - -#define ILanguageComponentType_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ - (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) - -#define ILanguageComponentType_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ - (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) - - -#define ILanguageComponentType_get_Category(This,Category) \ - (This)->lpVtbl -> get_Category(This,Category) - -#define ILanguageComponentType_put_Category(This,Category) \ - (This)->lpVtbl -> put_Category(This,Category) - -#define ILanguageComponentType_get_MediaMajorType(This,MediaMajorType) \ - (This)->lpVtbl -> get_MediaMajorType(This,MediaMajorType) - -#define ILanguageComponentType_put_MediaMajorType(This,MediaMajorType) \ - (This)->lpVtbl -> put_MediaMajorType(This,MediaMajorType) - -#define ILanguageComponentType_get__MediaMajorType(This,MediaMajorTypeGuid) \ - (This)->lpVtbl -> get__MediaMajorType(This,MediaMajorTypeGuid) - -#define ILanguageComponentType_put__MediaMajorType(This,MediaMajorTypeGuid) \ - (This)->lpVtbl -> put__MediaMajorType(This,MediaMajorTypeGuid) - -#define ILanguageComponentType_get_MediaSubType(This,MediaSubType) \ - (This)->lpVtbl -> get_MediaSubType(This,MediaSubType) - -#define ILanguageComponentType_put_MediaSubType(This,MediaSubType) \ - (This)->lpVtbl -> put_MediaSubType(This,MediaSubType) - -#define ILanguageComponentType_get__MediaSubType(This,MediaSubTypeGuid) \ - (This)->lpVtbl -> get__MediaSubType(This,MediaSubTypeGuid) - -#define ILanguageComponentType_put__MediaSubType(This,MediaSubTypeGuid) \ - (This)->lpVtbl -> put__MediaSubType(This,MediaSubTypeGuid) - -#define ILanguageComponentType_get_MediaFormatType(This,MediaFormatType) \ - (This)->lpVtbl -> get_MediaFormatType(This,MediaFormatType) - -#define ILanguageComponentType_put_MediaFormatType(This,MediaFormatType) \ - (This)->lpVtbl -> put_MediaFormatType(This,MediaFormatType) - -#define ILanguageComponentType_get__MediaFormatType(This,MediaFormatTypeGuid) \ - (This)->lpVtbl -> get__MediaFormatType(This,MediaFormatTypeGuid) - -#define ILanguageComponentType_put__MediaFormatType(This,MediaFormatTypeGuid) \ - (This)->lpVtbl -> put__MediaFormatType(This,MediaFormatTypeGuid) - -#define ILanguageComponentType_get_MediaType(This,MediaType) \ - (This)->lpVtbl -> get_MediaType(This,MediaType) - -#define ILanguageComponentType_put_MediaType(This,MediaType) \ - (This)->lpVtbl -> put_MediaType(This,MediaType) - -#define ILanguageComponentType_Clone(This,NewCT) \ - (This)->lpVtbl -> Clone(This,NewCT) - - -#define ILanguageComponentType_get_LangID(This,LangID) \ - (This)->lpVtbl -> get_LangID(This,LangID) - -#define ILanguageComponentType_put_LangID(This,LangID) \ - (This)->lpVtbl -> put_LangID(This,LangID) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE ILanguageComponentType_get_LangID_Proxy( - ILanguageComponentType * This, - /* [retval][out] */ long *LangID); - - -void __RPC_STUB ILanguageComponentType_get_LangID_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE ILanguageComponentType_put_LangID_Proxy( - ILanguageComponentType * This, - /* [in] */ long LangID); - - -void __RPC_STUB ILanguageComponentType_put_LangID_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __ILanguageComponentType_INTERFACE_DEFINED__ */ - - -#ifndef __IMPEG2ComponentType_INTERFACE_DEFINED__ -#define __IMPEG2ComponentType_INTERFACE_DEFINED__ - -/* interface IMPEG2ComponentType */ -/* [unique][helpstring][oleautomation][dual][uuid][nonextensible][hidden][object] */ - - -EXTERN_C const IID IID_IMPEG2ComponentType; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("2C073D84-B51C-48c9-AA9F-68971E1F6E38") - IMPEG2ComponentType : public ILanguageComponentType - { - public: - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_StreamType( - /* [retval][out] */ MPEG2StreamType *MP2StreamType) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_StreamType( - /* [in] */ MPEG2StreamType MP2StreamType) = 0; - - }; - -#else /* C style interface */ - - typedef struct IMPEG2ComponentTypeVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IMPEG2ComponentType * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IMPEG2ComponentType * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IMPEG2ComponentType * This); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( - IMPEG2ComponentType * This, - /* [out] */ UINT *pctinfo); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( - IMPEG2ComponentType * This, - /* [in] */ UINT iTInfo, - /* [in] */ LCID lcid, - /* [out] */ ITypeInfo **ppTInfo); - - HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( - IMPEG2ComponentType * This, - /* [in] */ REFIID riid, - /* [size_is][in] */ LPOLESTR *rgszNames, - /* [in] */ UINT cNames, - /* [in] */ LCID lcid, - /* [size_is][out] */ DISPID *rgDispId); - - /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( - IMPEG2ComponentType * This, - /* [in] */ DISPID dispIdMember, - /* [in] */ REFIID riid, - /* [in] */ LCID lcid, - /* [in] */ WORD wFlags, - /* [out][in] */ DISPPARAMS *pDispParams, - /* [out] */ VARIANT *pVarResult, - /* [out] */ EXCEPINFO *pExcepInfo, - /* [out] */ UINT *puArgErr); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Category )( - IMPEG2ComponentType * This, - /* [retval][out] */ ComponentCategory *Category); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Category )( - IMPEG2ComponentType * This, - /* [in] */ ComponentCategory Category); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_MediaMajorType )( - IMPEG2ComponentType * This, - /* [retval][out] */ BSTR *MediaMajorType); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_MediaMajorType )( - IMPEG2ComponentType * This, - /* [in] */ BSTR MediaMajorType); - - /* [restricted][hidden][helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get__MediaMajorType )( - IMPEG2ComponentType * This, - /* [retval][out] */ GUID *MediaMajorTypeGuid); - - /* [restricted][hidden][helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put__MediaMajorType )( - IMPEG2ComponentType * This, - /* [in] */ REFCLSID MediaMajorTypeGuid); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_MediaSubType )( - IMPEG2ComponentType * This, - /* [retval][out] */ BSTR *MediaSubType); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_MediaSubType )( - IMPEG2ComponentType * This, - /* [in] */ BSTR MediaSubType); - - /* [restricted][hidden][helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get__MediaSubType )( - IMPEG2ComponentType * This, - /* [retval][out] */ GUID *MediaSubTypeGuid); - - /* [restricted][hidden][helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put__MediaSubType )( - IMPEG2ComponentType * This, - /* [in] */ REFCLSID MediaSubTypeGuid); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_MediaFormatType )( - IMPEG2ComponentType * This, - /* [retval][out] */ BSTR *MediaFormatType); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_MediaFormatType )( - IMPEG2ComponentType * This, - /* [in] */ BSTR MediaFormatType); - - /* [restricted][hidden][helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get__MediaFormatType )( - IMPEG2ComponentType * This, - /* [retval][out] */ GUID *MediaFormatTypeGuid); - - /* [restricted][hidden][helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put__MediaFormatType )( - IMPEG2ComponentType * This, - /* [in] */ REFCLSID MediaFormatTypeGuid); - - /* [helpstring][restricted][hidden][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_MediaType )( - IMPEG2ComponentType * This, - /* [retval][out] */ AM_MEDIA_TYPE *MediaType); - - /* [helpstring][restricted][hidden][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_MediaType )( - IMPEG2ComponentType * This, - /* [in] */ AM_MEDIA_TYPE *MediaType); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Clone )( - IMPEG2ComponentType * This, - /* [retval][out] */ IComponentType **NewCT); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_LangID )( - IMPEG2ComponentType * This, - /* [retval][out] */ long *LangID); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_LangID )( - IMPEG2ComponentType * This, - /* [in] */ long LangID); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_StreamType )( - IMPEG2ComponentType * This, - /* [retval][out] */ MPEG2StreamType *MP2StreamType); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_StreamType )( - IMPEG2ComponentType * This, - /* [in] */ MPEG2StreamType MP2StreamType); - - END_INTERFACE - } IMPEG2ComponentTypeVtbl; - - interface IMPEG2ComponentType - { - CONST_VTBL struct IMPEG2ComponentTypeVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IMPEG2ComponentType_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IMPEG2ComponentType_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IMPEG2ComponentType_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IMPEG2ComponentType_GetTypeInfoCount(This,pctinfo) \ - (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) - -#define IMPEG2ComponentType_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ - (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) - -#define IMPEG2ComponentType_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ - (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) - -#define IMPEG2ComponentType_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ - (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) - - -#define IMPEG2ComponentType_get_Category(This,Category) \ - (This)->lpVtbl -> get_Category(This,Category) - -#define IMPEG2ComponentType_put_Category(This,Category) \ - (This)->lpVtbl -> put_Category(This,Category) - -#define IMPEG2ComponentType_get_MediaMajorType(This,MediaMajorType) \ - (This)->lpVtbl -> get_MediaMajorType(This,MediaMajorType) - -#define IMPEG2ComponentType_put_MediaMajorType(This,MediaMajorType) \ - (This)->lpVtbl -> put_MediaMajorType(This,MediaMajorType) - -#define IMPEG2ComponentType_get__MediaMajorType(This,MediaMajorTypeGuid) \ - (This)->lpVtbl -> get__MediaMajorType(This,MediaMajorTypeGuid) - -#define IMPEG2ComponentType_put__MediaMajorType(This,MediaMajorTypeGuid) \ - (This)->lpVtbl -> put__MediaMajorType(This,MediaMajorTypeGuid) - -#define IMPEG2ComponentType_get_MediaSubType(This,MediaSubType) \ - (This)->lpVtbl -> get_MediaSubType(This,MediaSubType) - -#define IMPEG2ComponentType_put_MediaSubType(This,MediaSubType) \ - (This)->lpVtbl -> put_MediaSubType(This,MediaSubType) - -#define IMPEG2ComponentType_get__MediaSubType(This,MediaSubTypeGuid) \ - (This)->lpVtbl -> get__MediaSubType(This,MediaSubTypeGuid) - -#define IMPEG2ComponentType_put__MediaSubType(This,MediaSubTypeGuid) \ - (This)->lpVtbl -> put__MediaSubType(This,MediaSubTypeGuid) - -#define IMPEG2ComponentType_get_MediaFormatType(This,MediaFormatType) \ - (This)->lpVtbl -> get_MediaFormatType(This,MediaFormatType) - -#define IMPEG2ComponentType_put_MediaFormatType(This,MediaFormatType) \ - (This)->lpVtbl -> put_MediaFormatType(This,MediaFormatType) - -#define IMPEG2ComponentType_get__MediaFormatType(This,MediaFormatTypeGuid) \ - (This)->lpVtbl -> get__MediaFormatType(This,MediaFormatTypeGuid) - -#define IMPEG2ComponentType_put__MediaFormatType(This,MediaFormatTypeGuid) \ - (This)->lpVtbl -> put__MediaFormatType(This,MediaFormatTypeGuid) - -#define IMPEG2ComponentType_get_MediaType(This,MediaType) \ - (This)->lpVtbl -> get_MediaType(This,MediaType) - -#define IMPEG2ComponentType_put_MediaType(This,MediaType) \ - (This)->lpVtbl -> put_MediaType(This,MediaType) - -#define IMPEG2ComponentType_Clone(This,NewCT) \ - (This)->lpVtbl -> Clone(This,NewCT) - - -#define IMPEG2ComponentType_get_LangID(This,LangID) \ - (This)->lpVtbl -> get_LangID(This,LangID) - -#define IMPEG2ComponentType_put_LangID(This,LangID) \ - (This)->lpVtbl -> put_LangID(This,LangID) - - -#define IMPEG2ComponentType_get_StreamType(This,MP2StreamType) \ - (This)->lpVtbl -> get_StreamType(This,MP2StreamType) - -#define IMPEG2ComponentType_put_StreamType(This,MP2StreamType) \ - (This)->lpVtbl -> put_StreamType(This,MP2StreamType) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IMPEG2ComponentType_get_StreamType_Proxy( - IMPEG2ComponentType * This, - /* [retval][out] */ MPEG2StreamType *MP2StreamType); - - -void __RPC_STUB IMPEG2ComponentType_get_StreamType_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IMPEG2ComponentType_put_StreamType_Proxy( - IMPEG2ComponentType * This, - /* [in] */ MPEG2StreamType MP2StreamType); - - -void __RPC_STUB IMPEG2ComponentType_put_StreamType_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IMPEG2ComponentType_INTERFACE_DEFINED__ */ - - -#ifndef __IATSCComponentType_INTERFACE_DEFINED__ -#define __IATSCComponentType_INTERFACE_DEFINED__ - -/* interface IATSCComponentType */ -/* [unique][helpstring][oleautomation][dual][uuid][nonextensible][hidden][object] */ - - -EXTERN_C const IID IID_IATSCComponentType; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("FC189E4D-7BD4-4125-B3B3-3A76A332CC96") - IATSCComponentType : public IMPEG2ComponentType - { - public: - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Flags( - /* [retval][out] */ long *Flags) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_Flags( - /* [in] */ long flags) = 0; - - }; - -#else /* C style interface */ - - typedef struct IATSCComponentTypeVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IATSCComponentType * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IATSCComponentType * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IATSCComponentType * This); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( - IATSCComponentType * This, - /* [out] */ UINT *pctinfo); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( - IATSCComponentType * This, - /* [in] */ UINT iTInfo, - /* [in] */ LCID lcid, - /* [out] */ ITypeInfo **ppTInfo); - - HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( - IATSCComponentType * This, - /* [in] */ REFIID riid, - /* [size_is][in] */ LPOLESTR *rgszNames, - /* [in] */ UINT cNames, - /* [in] */ LCID lcid, - /* [size_is][out] */ DISPID *rgDispId); - - /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( - IATSCComponentType * This, - /* [in] */ DISPID dispIdMember, - /* [in] */ REFIID riid, - /* [in] */ LCID lcid, - /* [in] */ WORD wFlags, - /* [out][in] */ DISPPARAMS *pDispParams, - /* [out] */ VARIANT *pVarResult, - /* [out] */ EXCEPINFO *pExcepInfo, - /* [out] */ UINT *puArgErr); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Category )( - IATSCComponentType * This, - /* [retval][out] */ ComponentCategory *Category); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Category )( - IATSCComponentType * This, - /* [in] */ ComponentCategory Category); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_MediaMajorType )( - IATSCComponentType * This, - /* [retval][out] */ BSTR *MediaMajorType); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_MediaMajorType )( - IATSCComponentType * This, - /* [in] */ BSTR MediaMajorType); - - /* [restricted][hidden][helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get__MediaMajorType )( - IATSCComponentType * This, - /* [retval][out] */ GUID *MediaMajorTypeGuid); - - /* [restricted][hidden][helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put__MediaMajorType )( - IATSCComponentType * This, - /* [in] */ REFCLSID MediaMajorTypeGuid); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_MediaSubType )( - IATSCComponentType * This, - /* [retval][out] */ BSTR *MediaSubType); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_MediaSubType )( - IATSCComponentType * This, - /* [in] */ BSTR MediaSubType); - - /* [restricted][hidden][helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get__MediaSubType )( - IATSCComponentType * This, - /* [retval][out] */ GUID *MediaSubTypeGuid); - - /* [restricted][hidden][helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put__MediaSubType )( - IATSCComponentType * This, - /* [in] */ REFCLSID MediaSubTypeGuid); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_MediaFormatType )( - IATSCComponentType * This, - /* [retval][out] */ BSTR *MediaFormatType); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_MediaFormatType )( - IATSCComponentType * This, - /* [in] */ BSTR MediaFormatType); - - /* [restricted][hidden][helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get__MediaFormatType )( - IATSCComponentType * This, - /* [retval][out] */ GUID *MediaFormatTypeGuid); - - /* [restricted][hidden][helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put__MediaFormatType )( - IATSCComponentType * This, - /* [in] */ REFCLSID MediaFormatTypeGuid); - - /* [helpstring][restricted][hidden][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_MediaType )( - IATSCComponentType * This, - /* [retval][out] */ AM_MEDIA_TYPE *MediaType); - - /* [helpstring][restricted][hidden][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_MediaType )( - IATSCComponentType * This, - /* [in] */ AM_MEDIA_TYPE *MediaType); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Clone )( - IATSCComponentType * This, - /* [retval][out] */ IComponentType **NewCT); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_LangID )( - IATSCComponentType * This, - /* [retval][out] */ long *LangID); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_LangID )( - IATSCComponentType * This, - /* [in] */ long LangID); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_StreamType )( - IATSCComponentType * This, - /* [retval][out] */ MPEG2StreamType *MP2StreamType); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_StreamType )( - IATSCComponentType * This, - /* [in] */ MPEG2StreamType MP2StreamType); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Flags )( - IATSCComponentType * This, - /* [retval][out] */ long *Flags); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Flags )( - IATSCComponentType * This, - /* [in] */ long flags); - - END_INTERFACE - } IATSCComponentTypeVtbl; - - interface IATSCComponentType - { - CONST_VTBL struct IATSCComponentTypeVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IATSCComponentType_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IATSCComponentType_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IATSCComponentType_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IATSCComponentType_GetTypeInfoCount(This,pctinfo) \ - (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) - -#define IATSCComponentType_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ - (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) - -#define IATSCComponentType_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ - (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) - -#define IATSCComponentType_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ - (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) - - -#define IATSCComponentType_get_Category(This,Category) \ - (This)->lpVtbl -> get_Category(This,Category) - -#define IATSCComponentType_put_Category(This,Category) \ - (This)->lpVtbl -> put_Category(This,Category) - -#define IATSCComponentType_get_MediaMajorType(This,MediaMajorType) \ - (This)->lpVtbl -> get_MediaMajorType(This,MediaMajorType) - -#define IATSCComponentType_put_MediaMajorType(This,MediaMajorType) \ - (This)->lpVtbl -> put_MediaMajorType(This,MediaMajorType) - -#define IATSCComponentType_get__MediaMajorType(This,MediaMajorTypeGuid) \ - (This)->lpVtbl -> get__MediaMajorType(This,MediaMajorTypeGuid) - -#define IATSCComponentType_put__MediaMajorType(This,MediaMajorTypeGuid) \ - (This)->lpVtbl -> put__MediaMajorType(This,MediaMajorTypeGuid) - -#define IATSCComponentType_get_MediaSubType(This,MediaSubType) \ - (This)->lpVtbl -> get_MediaSubType(This,MediaSubType) - -#define IATSCComponentType_put_MediaSubType(This,MediaSubType) \ - (This)->lpVtbl -> put_MediaSubType(This,MediaSubType) - -#define IATSCComponentType_get__MediaSubType(This,MediaSubTypeGuid) \ - (This)->lpVtbl -> get__MediaSubType(This,MediaSubTypeGuid) - -#define IATSCComponentType_put__MediaSubType(This,MediaSubTypeGuid) \ - (This)->lpVtbl -> put__MediaSubType(This,MediaSubTypeGuid) - -#define IATSCComponentType_get_MediaFormatType(This,MediaFormatType) \ - (This)->lpVtbl -> get_MediaFormatType(This,MediaFormatType) - -#define IATSCComponentType_put_MediaFormatType(This,MediaFormatType) \ - (This)->lpVtbl -> put_MediaFormatType(This,MediaFormatType) - -#define IATSCComponentType_get__MediaFormatType(This,MediaFormatTypeGuid) \ - (This)->lpVtbl -> get__MediaFormatType(This,MediaFormatTypeGuid) - -#define IATSCComponentType_put__MediaFormatType(This,MediaFormatTypeGuid) \ - (This)->lpVtbl -> put__MediaFormatType(This,MediaFormatTypeGuid) - -#define IATSCComponentType_get_MediaType(This,MediaType) \ - (This)->lpVtbl -> get_MediaType(This,MediaType) - -#define IATSCComponentType_put_MediaType(This,MediaType) \ - (This)->lpVtbl -> put_MediaType(This,MediaType) - -#define IATSCComponentType_Clone(This,NewCT) \ - (This)->lpVtbl -> Clone(This,NewCT) - - -#define IATSCComponentType_get_LangID(This,LangID) \ - (This)->lpVtbl -> get_LangID(This,LangID) - -#define IATSCComponentType_put_LangID(This,LangID) \ - (This)->lpVtbl -> put_LangID(This,LangID) - - -#define IATSCComponentType_get_StreamType(This,MP2StreamType) \ - (This)->lpVtbl -> get_StreamType(This,MP2StreamType) - -#define IATSCComponentType_put_StreamType(This,MP2StreamType) \ - (This)->lpVtbl -> put_StreamType(This,MP2StreamType) - - -#define IATSCComponentType_get_Flags(This,Flags) \ - (This)->lpVtbl -> get_Flags(This,Flags) - -#define IATSCComponentType_put_Flags(This,flags) \ - (This)->lpVtbl -> put_Flags(This,flags) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IATSCComponentType_get_Flags_Proxy( - IATSCComponentType * This, - /* [retval][out] */ long *Flags); - - -void __RPC_STUB IATSCComponentType_get_Flags_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IATSCComponentType_put_Flags_Proxy( - IATSCComponentType * This, - /* [in] */ long flags); - - -void __RPC_STUB IATSCComponentType_put_Flags_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IATSCComponentType_INTERFACE_DEFINED__ */ - - -#ifndef __IEnumComponentTypes_INTERFACE_DEFINED__ -#define __IEnumComponentTypes_INTERFACE_DEFINED__ - -/* interface IEnumComponentTypes */ -/* [unique][uuid][object][restricted][hidden] */ - - -EXTERN_C const IID IID_IEnumComponentTypes; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("8A674B4A-1F63-11d3-B64C-00C04F79498E") - IEnumComponentTypes : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE Next( - /* [in] */ ULONG celt, - /* [length_is][size_is][out] */ IComponentType **rgelt, - /* [out] */ ULONG *pceltFetched) = 0; - - virtual HRESULT STDMETHODCALLTYPE Skip( - /* [in] */ ULONG celt) = 0; - - virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0; - - virtual HRESULT STDMETHODCALLTYPE Clone( - /* [out] */ IEnumComponentTypes **ppEnum) = 0; - - }; - -#else /* C style interface */ - - typedef struct IEnumComponentTypesVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IEnumComponentTypes * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IEnumComponentTypes * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IEnumComponentTypes * This); - - HRESULT ( STDMETHODCALLTYPE *Next )( - IEnumComponentTypes * This, - /* [in] */ ULONG celt, - /* [length_is][size_is][out] */ IComponentType **rgelt, - /* [out] */ ULONG *pceltFetched); - - HRESULT ( STDMETHODCALLTYPE *Skip )( - IEnumComponentTypes * This, - /* [in] */ ULONG celt); - - HRESULT ( STDMETHODCALLTYPE *Reset )( - IEnumComponentTypes * This); - - HRESULT ( STDMETHODCALLTYPE *Clone )( - IEnumComponentTypes * This, - /* [out] */ IEnumComponentTypes **ppEnum); - - END_INTERFACE - } IEnumComponentTypesVtbl; - - interface IEnumComponentTypes - { - CONST_VTBL struct IEnumComponentTypesVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IEnumComponentTypes_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IEnumComponentTypes_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IEnumComponentTypes_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IEnumComponentTypes_Next(This,celt,rgelt,pceltFetched) \ - (This)->lpVtbl -> Next(This,celt,rgelt,pceltFetched) - -#define IEnumComponentTypes_Skip(This,celt) \ - (This)->lpVtbl -> Skip(This,celt) - -#define IEnumComponentTypes_Reset(This) \ - (This)->lpVtbl -> Reset(This) - -#define IEnumComponentTypes_Clone(This,ppEnum) \ - (This)->lpVtbl -> Clone(This,ppEnum) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IEnumComponentTypes_Next_Proxy( - IEnumComponentTypes * This, - /* [in] */ ULONG celt, - /* [length_is][size_is][out] */ IComponentType **rgelt, - /* [out] */ ULONG *pceltFetched); - - -void __RPC_STUB IEnumComponentTypes_Next_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IEnumComponentTypes_Skip_Proxy( - IEnumComponentTypes * This, - /* [in] */ ULONG celt); - - -void __RPC_STUB IEnumComponentTypes_Skip_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IEnumComponentTypes_Reset_Proxy( - IEnumComponentTypes * This); - - -void __RPC_STUB IEnumComponentTypes_Reset_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IEnumComponentTypes_Clone_Proxy( - IEnumComponentTypes * This, - /* [out] */ IEnumComponentTypes **ppEnum); - - -void __RPC_STUB IEnumComponentTypes_Clone_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IEnumComponentTypes_INTERFACE_DEFINED__ */ - - -#ifndef __IComponentTypes_INTERFACE_DEFINED__ -#define __IComponentTypes_INTERFACE_DEFINED__ - -/* interface IComponentTypes */ -/* [unique][helpstring][oleautomation][dual][uuid][nonextensible][hidden][object] */ - - -EXTERN_C const IID IID_IComponentTypes; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("0DC13D4A-0313-11d3-9D8E-00C04F72D980") - IComponentTypes : public IDispatch - { - public: - virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_Count( - /* [retval][out] */ long *Count) = 0; - - virtual /* [restricted][hidden][id][propget] */ HRESULT STDMETHODCALLTYPE get__NewEnum( - /* [retval][out] */ IEnumVARIANT **ppNewEnum) = 0; - - virtual /* [helpstring][restricted][hidden] */ HRESULT STDMETHODCALLTYPE EnumComponentTypes( - /* [retval][out] */ IEnumComponentTypes **ppNewEnum) = 0; - - virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Item( - /* [in] */ VARIANT Index, - /* [retval][out] */ IComponentType **ComponentType) = 0; - - virtual /* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE put_Item( - /* [in] */ VARIANT Index, - /* [in] */ IComponentType *ComponentType) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Add( - /* [in] */ IComponentType *ComponentType, - /* [retval][out] */ VARIANT *NewIndex) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Remove( - /* [in] */ VARIANT Index) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE Clone( - /* [retval][out] */ IComponentTypes **NewList) = 0; - - }; - -#else /* C style interface */ - - typedef struct IComponentTypesVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IComponentTypes * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IComponentTypes * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IComponentTypes * This); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( - IComponentTypes * This, - /* [out] */ UINT *pctinfo); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( - IComponentTypes * This, - /* [in] */ UINT iTInfo, - /* [in] */ LCID lcid, - /* [out] */ ITypeInfo **ppTInfo); - - HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( - IComponentTypes * This, - /* [in] */ REFIID riid, - /* [size_is][in] */ LPOLESTR *rgszNames, - /* [in] */ UINT cNames, - /* [in] */ LCID lcid, - /* [size_is][out] */ DISPID *rgDispId); - - /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( - IComponentTypes * This, - /* [in] */ DISPID dispIdMember, - /* [in] */ REFIID riid, - /* [in] */ LCID lcid, - /* [in] */ WORD wFlags, - /* [out][in] */ DISPPARAMS *pDispParams, - /* [out] */ VARIANT *pVarResult, - /* [out] */ EXCEPINFO *pExcepInfo, - /* [out] */ UINT *puArgErr); - - /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Count )( - IComponentTypes * This, - /* [retval][out] */ long *Count); - - /* [restricted][hidden][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get__NewEnum )( - IComponentTypes * This, - /* [retval][out] */ IEnumVARIANT **ppNewEnum); - - /* [helpstring][restricted][hidden] */ HRESULT ( STDMETHODCALLTYPE *EnumComponentTypes )( - IComponentTypes * This, - /* [retval][out] */ IEnumComponentTypes **ppNewEnum); - - /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Item )( - IComponentTypes * This, - /* [in] */ VARIANT Index, - /* [retval][out] */ IComponentType **ComponentType); - - /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Item )( - IComponentTypes * This, - /* [in] */ VARIANT Index, - /* [in] */ IComponentType *ComponentType); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Add )( - IComponentTypes * This, - /* [in] */ IComponentType *ComponentType, - /* [retval][out] */ VARIANT *NewIndex); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Remove )( - IComponentTypes * This, - /* [in] */ VARIANT Index); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *Clone )( - IComponentTypes * This, - /* [retval][out] */ IComponentTypes **NewList); - - END_INTERFACE - } IComponentTypesVtbl; - - interface IComponentTypes - { - CONST_VTBL struct IComponentTypesVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IComponentTypes_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IComponentTypes_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IComponentTypes_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IComponentTypes_GetTypeInfoCount(This,pctinfo) \ - (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) - -#define IComponentTypes_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ - (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) - -#define IComponentTypes_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ - (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) - -#define IComponentTypes_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ - (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) - - -#define IComponentTypes_get_Count(This,Count) \ - (This)->lpVtbl -> get_Count(This,Count) - -#define IComponentTypes_get__NewEnum(This,ppNewEnum) \ - (This)->lpVtbl -> get__NewEnum(This,ppNewEnum) - -#define IComponentTypes_EnumComponentTypes(This,ppNewEnum) \ - (This)->lpVtbl -> EnumComponentTypes(This,ppNewEnum) - -#define IComponentTypes_get_Item(This,Index,ComponentType) \ - (This)->lpVtbl -> get_Item(This,Index,ComponentType) - -#define IComponentTypes_put_Item(This,Index,ComponentType) \ - (This)->lpVtbl -> put_Item(This,Index,ComponentType) - -#define IComponentTypes_Add(This,ComponentType,NewIndex) \ - (This)->lpVtbl -> Add(This,ComponentType,NewIndex) - -#define IComponentTypes_Remove(This,Index) \ - (This)->lpVtbl -> Remove(This,Index) - -#define IComponentTypes_Clone(This,NewList) \ - (This)->lpVtbl -> Clone(This,NewList) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IComponentTypes_get_Count_Proxy( - IComponentTypes * This, - /* [retval][out] */ long *Count); - - -void __RPC_STUB IComponentTypes_get_Count_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [restricted][hidden][id][propget] */ HRESULT STDMETHODCALLTYPE IComponentTypes_get__NewEnum_Proxy( - IComponentTypes * This, - /* [retval][out] */ IEnumVARIANT **ppNewEnum); - - -void __RPC_STUB IComponentTypes_get__NewEnum_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][restricted][hidden] */ HRESULT STDMETHODCALLTYPE IComponentTypes_EnumComponentTypes_Proxy( - IComponentTypes * This, - /* [retval][out] */ IEnumComponentTypes **ppNewEnum); - - -void __RPC_STUB IComponentTypes_EnumComponentTypes_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE IComponentTypes_get_Item_Proxy( - IComponentTypes * This, - /* [in] */ VARIANT Index, - /* [retval][out] */ IComponentType **ComponentType); - - -void __RPC_STUB IComponentTypes_get_Item_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE IComponentTypes_put_Item_Proxy( - IComponentTypes * This, - /* [in] */ VARIANT Index, - /* [in] */ IComponentType *ComponentType); - - -void __RPC_STUB IComponentTypes_put_Item_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IComponentTypes_Add_Proxy( - IComponentTypes * This, - /* [in] */ IComponentType *ComponentType, - /* [retval][out] */ VARIANT *NewIndex); - - -void __RPC_STUB IComponentTypes_Add_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IComponentTypes_Remove_Proxy( - IComponentTypes * This, - /* [in] */ VARIANT Index); - - -void __RPC_STUB IComponentTypes_Remove_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IComponentTypes_Clone_Proxy( - IComponentTypes * This, - /* [retval][out] */ IComponentTypes **NewList); - - -void __RPC_STUB IComponentTypes_Clone_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IComponentTypes_INTERFACE_DEFINED__ */ - - -#ifndef __IComponent_INTERFACE_DEFINED__ -#define __IComponent_INTERFACE_DEFINED__ - -/* interface IComponent */ -/* [unique][helpstring][oleautomation][dual][uuid][nonextensible][object] */ - - -EXTERN_C const IID IID_IComponent; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("1A5576FC-0E19-11d3-9D8E-00C04F72D980") - IComponent : public IDispatch - { - public: - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Type( - /* [retval][out] */ IComponentType **CT) = 0; - - virtual /* [helpstring][id][propput][restricted][hidden] */ HRESULT STDMETHODCALLTYPE put_Type( - /* [in] */ IComponentType *CT) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_DescLangID( - /* [retval][out] */ long *LangID) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_DescLangID( - /* [in] */ long LangID) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Status( - /* [retval][out] */ ComponentStatus *Status) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_Status( - /* [in] */ ComponentStatus Status) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Description( - /* [retval][out] */ BSTR *Description) = 0; - - virtual /* [helpstring][id][propput][restricted][hidden] */ HRESULT STDMETHODCALLTYPE put_Description( - /* [in] */ BSTR Description) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Clone( - /* [retval][out] */ IComponent **NewComponent) = 0; - - }; - -#else /* C style interface */ - - typedef struct IComponentVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IComponent * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IComponent * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IComponent * This); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( - IComponent * This, - /* [out] */ UINT *pctinfo); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( - IComponent * This, - /* [in] */ UINT iTInfo, - /* [in] */ LCID lcid, - /* [out] */ ITypeInfo **ppTInfo); - - HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( - IComponent * This, - /* [in] */ REFIID riid, - /* [size_is][in] */ LPOLESTR *rgszNames, - /* [in] */ UINT cNames, - /* [in] */ LCID lcid, - /* [size_is][out] */ DISPID *rgDispId); - - /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( - IComponent * This, - /* [in] */ DISPID dispIdMember, - /* [in] */ REFIID riid, - /* [in] */ LCID lcid, - /* [in] */ WORD wFlags, - /* [out][in] */ DISPPARAMS *pDispParams, - /* [out] */ VARIANT *pVarResult, - /* [out] */ EXCEPINFO *pExcepInfo, - /* [out] */ UINT *puArgErr); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Type )( - IComponent * This, - /* [retval][out] */ IComponentType **CT); - - /* [helpstring][id][propput][restricted][hidden] */ HRESULT ( STDMETHODCALLTYPE *put_Type )( - IComponent * This, - /* [in] */ IComponentType *CT); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_DescLangID )( - IComponent * This, - /* [retval][out] */ long *LangID); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_DescLangID )( - IComponent * This, - /* [in] */ long LangID); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Status )( - IComponent * This, - /* [retval][out] */ ComponentStatus *Status); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Status )( - IComponent * This, - /* [in] */ ComponentStatus Status); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Description )( - IComponent * This, - /* [retval][out] */ BSTR *Description); - - /* [helpstring][id][propput][restricted][hidden] */ HRESULT ( STDMETHODCALLTYPE *put_Description )( - IComponent * This, - /* [in] */ BSTR Description); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Clone )( - IComponent * This, - /* [retval][out] */ IComponent **NewComponent); - - END_INTERFACE - } IComponentVtbl; - - interface IComponent - { - CONST_VTBL struct IComponentVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IComponent_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IComponent_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IComponent_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IComponent_GetTypeInfoCount(This,pctinfo) \ - (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) - -#define IComponent_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ - (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) - -#define IComponent_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ - (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) - -#define IComponent_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ - (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) - - -#define IComponent_get_Type(This,CT) \ - (This)->lpVtbl -> get_Type(This,CT) - -#define IComponent_put_Type(This,CT) \ - (This)->lpVtbl -> put_Type(This,CT) - -#define IComponent_get_DescLangID(This,LangID) \ - (This)->lpVtbl -> get_DescLangID(This,LangID) - -#define IComponent_put_DescLangID(This,LangID) \ - (This)->lpVtbl -> put_DescLangID(This,LangID) - -#define IComponent_get_Status(This,Status) \ - (This)->lpVtbl -> get_Status(This,Status) - -#define IComponent_put_Status(This,Status) \ - (This)->lpVtbl -> put_Status(This,Status) - -#define IComponent_get_Description(This,Description) \ - (This)->lpVtbl -> get_Description(This,Description) - -#define IComponent_put_Description(This,Description) \ - (This)->lpVtbl -> put_Description(This,Description) - -#define IComponent_Clone(This,NewComponent) \ - (This)->lpVtbl -> Clone(This,NewComponent) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IComponent_get_Type_Proxy( - IComponent * This, - /* [retval][out] */ IComponentType **CT); - - -void __RPC_STUB IComponent_get_Type_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput][restricted][hidden] */ HRESULT STDMETHODCALLTYPE IComponent_put_Type_Proxy( - IComponent * This, - /* [in] */ IComponentType *CT); - - -void __RPC_STUB IComponent_put_Type_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IComponent_get_DescLangID_Proxy( - IComponent * This, - /* [retval][out] */ long *LangID); - - -void __RPC_STUB IComponent_get_DescLangID_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IComponent_put_DescLangID_Proxy( - IComponent * This, - /* [in] */ long LangID); - - -void __RPC_STUB IComponent_put_DescLangID_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IComponent_get_Status_Proxy( - IComponent * This, - /* [retval][out] */ ComponentStatus *Status); - - -void __RPC_STUB IComponent_get_Status_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IComponent_put_Status_Proxy( - IComponent * This, - /* [in] */ ComponentStatus Status); - - -void __RPC_STUB IComponent_put_Status_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IComponent_get_Description_Proxy( - IComponent * This, - /* [retval][out] */ BSTR *Description); - - -void __RPC_STUB IComponent_get_Description_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput][restricted][hidden] */ HRESULT STDMETHODCALLTYPE IComponent_put_Description_Proxy( - IComponent * This, - /* [in] */ BSTR Description); - - -void __RPC_STUB IComponent_put_Description_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IComponent_Clone_Proxy( - IComponent * This, - /* [retval][out] */ IComponent **NewComponent); - - -void __RPC_STUB IComponent_Clone_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IComponent_INTERFACE_DEFINED__ */ - - -#ifndef __IMPEG2Component_INTERFACE_DEFINED__ -#define __IMPEG2Component_INTERFACE_DEFINED__ - -/* interface IMPEG2Component */ -/* [unique][helpstring][oleautomation][dual][uuid][nonextensible][object] */ - - -EXTERN_C const IID IID_IMPEG2Component; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("1493E353-1EB6-473c-802D-8E6B8EC9D2A9") - IMPEG2Component : public IComponent - { - public: - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_PID( - /* [retval][out] */ long *PID) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_PID( - /* [in] */ long PID) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_PCRPID( - /* [retval][out] */ long *PCRPID) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_PCRPID( - /* [in] */ long PCRPID) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_ProgramNumber( - /* [retval][out] */ long *ProgramNumber) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_ProgramNumber( - /* [in] */ long ProgramNumber) = 0; - - }; - -#else /* C style interface */ - - typedef struct IMPEG2ComponentVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IMPEG2Component * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IMPEG2Component * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IMPEG2Component * This); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( - IMPEG2Component * This, - /* [out] */ UINT *pctinfo); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( - IMPEG2Component * This, - /* [in] */ UINT iTInfo, - /* [in] */ LCID lcid, - /* [out] */ ITypeInfo **ppTInfo); - - HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( - IMPEG2Component * This, - /* [in] */ REFIID riid, - /* [size_is][in] */ LPOLESTR *rgszNames, - /* [in] */ UINT cNames, - /* [in] */ LCID lcid, - /* [size_is][out] */ DISPID *rgDispId); - - /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( - IMPEG2Component * This, - /* [in] */ DISPID dispIdMember, - /* [in] */ REFIID riid, - /* [in] */ LCID lcid, - /* [in] */ WORD wFlags, - /* [out][in] */ DISPPARAMS *pDispParams, - /* [out] */ VARIANT *pVarResult, - /* [out] */ EXCEPINFO *pExcepInfo, - /* [out] */ UINT *puArgErr); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Type )( - IMPEG2Component * This, - /* [retval][out] */ IComponentType **CT); - - /* [helpstring][id][propput][restricted][hidden] */ HRESULT ( STDMETHODCALLTYPE *put_Type )( - IMPEG2Component * This, - /* [in] */ IComponentType *CT); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_DescLangID )( - IMPEG2Component * This, - /* [retval][out] */ long *LangID); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_DescLangID )( - IMPEG2Component * This, - /* [in] */ long LangID); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Status )( - IMPEG2Component * This, - /* [retval][out] */ ComponentStatus *Status); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Status )( - IMPEG2Component * This, - /* [in] */ ComponentStatus Status); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Description )( - IMPEG2Component * This, - /* [retval][out] */ BSTR *Description); - - /* [helpstring][id][propput][restricted][hidden] */ HRESULT ( STDMETHODCALLTYPE *put_Description )( - IMPEG2Component * This, - /* [in] */ BSTR Description); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Clone )( - IMPEG2Component * This, - /* [retval][out] */ IComponent **NewComponent); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_PID )( - IMPEG2Component * This, - /* [retval][out] */ long *PID); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_PID )( - IMPEG2Component * This, - /* [in] */ long PID); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_PCRPID )( - IMPEG2Component * This, - /* [retval][out] */ long *PCRPID); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_PCRPID )( - IMPEG2Component * This, - /* [in] */ long PCRPID); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_ProgramNumber )( - IMPEG2Component * This, - /* [retval][out] */ long *ProgramNumber); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_ProgramNumber )( - IMPEG2Component * This, - /* [in] */ long ProgramNumber); - - END_INTERFACE - } IMPEG2ComponentVtbl; - - interface IMPEG2Component - { - CONST_VTBL struct IMPEG2ComponentVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IMPEG2Component_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IMPEG2Component_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IMPEG2Component_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IMPEG2Component_GetTypeInfoCount(This,pctinfo) \ - (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) - -#define IMPEG2Component_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ - (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) - -#define IMPEG2Component_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ - (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) - -#define IMPEG2Component_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ - (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) - - -#define IMPEG2Component_get_Type(This,CT) \ - (This)->lpVtbl -> get_Type(This,CT) - -#define IMPEG2Component_put_Type(This,CT) \ - (This)->lpVtbl -> put_Type(This,CT) - -#define IMPEG2Component_get_DescLangID(This,LangID) \ - (This)->lpVtbl -> get_DescLangID(This,LangID) - -#define IMPEG2Component_put_DescLangID(This,LangID) \ - (This)->lpVtbl -> put_DescLangID(This,LangID) - -#define IMPEG2Component_get_Status(This,Status) \ - (This)->lpVtbl -> get_Status(This,Status) - -#define IMPEG2Component_put_Status(This,Status) \ - (This)->lpVtbl -> put_Status(This,Status) - -#define IMPEG2Component_get_Description(This,Description) \ - (This)->lpVtbl -> get_Description(This,Description) - -#define IMPEG2Component_put_Description(This,Description) \ - (This)->lpVtbl -> put_Description(This,Description) - -#define IMPEG2Component_Clone(This,NewComponent) \ - (This)->lpVtbl -> Clone(This,NewComponent) - - -#define IMPEG2Component_get_PID(This,PID) \ - (This)->lpVtbl -> get_PID(This,PID) - -#define IMPEG2Component_put_PID(This,PID) \ - (This)->lpVtbl -> put_PID(This,PID) - -#define IMPEG2Component_get_PCRPID(This,PCRPID) \ - (This)->lpVtbl -> get_PCRPID(This,PCRPID) - -#define IMPEG2Component_put_PCRPID(This,PCRPID) \ - (This)->lpVtbl -> put_PCRPID(This,PCRPID) - -#define IMPEG2Component_get_ProgramNumber(This,ProgramNumber) \ - (This)->lpVtbl -> get_ProgramNumber(This,ProgramNumber) - -#define IMPEG2Component_put_ProgramNumber(This,ProgramNumber) \ - (This)->lpVtbl -> put_ProgramNumber(This,ProgramNumber) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IMPEG2Component_get_PID_Proxy( - IMPEG2Component * This, - /* [retval][out] */ long *PID); - - -void __RPC_STUB IMPEG2Component_get_PID_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IMPEG2Component_put_PID_Proxy( - IMPEG2Component * This, - /* [in] */ long PID); - - -void __RPC_STUB IMPEG2Component_put_PID_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IMPEG2Component_get_PCRPID_Proxy( - IMPEG2Component * This, - /* [retval][out] */ long *PCRPID); - - -void __RPC_STUB IMPEG2Component_get_PCRPID_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IMPEG2Component_put_PCRPID_Proxy( - IMPEG2Component * This, - /* [in] */ long PCRPID); - - -void __RPC_STUB IMPEG2Component_put_PCRPID_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IMPEG2Component_get_ProgramNumber_Proxy( - IMPEG2Component * This, - /* [retval][out] */ long *ProgramNumber); - - -void __RPC_STUB IMPEG2Component_get_ProgramNumber_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IMPEG2Component_put_ProgramNumber_Proxy( - IMPEG2Component * This, - /* [in] */ long ProgramNumber); - - -void __RPC_STUB IMPEG2Component_put_ProgramNumber_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IMPEG2Component_INTERFACE_DEFINED__ */ - - -#ifndef __IEnumComponents_INTERFACE_DEFINED__ -#define __IEnumComponents_INTERFACE_DEFINED__ - -/* interface IEnumComponents */ -/* [unique][uuid][object][restricted][hidden] */ - - -EXTERN_C const IID IID_IEnumComponents; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("2A6E2939-2595-11d3-B64C-00C04F79498E") - IEnumComponents : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE Next( - /* [in] */ ULONG celt, - /* [length_is][size_is][out] */ IComponent **rgelt, - /* [out] */ ULONG *pceltFetched) = 0; - - virtual HRESULT STDMETHODCALLTYPE Skip( - /* [in] */ ULONG celt) = 0; - - virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0; - - virtual HRESULT STDMETHODCALLTYPE Clone( - /* [out] */ IEnumComponents **ppEnum) = 0; - - }; - -#else /* C style interface */ - - typedef struct IEnumComponentsVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IEnumComponents * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IEnumComponents * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IEnumComponents * This); - - HRESULT ( STDMETHODCALLTYPE *Next )( - IEnumComponents * This, - /* [in] */ ULONG celt, - /* [length_is][size_is][out] */ IComponent **rgelt, - /* [out] */ ULONG *pceltFetched); - - HRESULT ( STDMETHODCALLTYPE *Skip )( - IEnumComponents * This, - /* [in] */ ULONG celt); - - HRESULT ( STDMETHODCALLTYPE *Reset )( - IEnumComponents * This); - - HRESULT ( STDMETHODCALLTYPE *Clone )( - IEnumComponents * This, - /* [out] */ IEnumComponents **ppEnum); - - END_INTERFACE - } IEnumComponentsVtbl; - - interface IEnumComponents - { - CONST_VTBL struct IEnumComponentsVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IEnumComponents_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IEnumComponents_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IEnumComponents_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IEnumComponents_Next(This,celt,rgelt,pceltFetched) \ - (This)->lpVtbl -> Next(This,celt,rgelt,pceltFetched) - -#define IEnumComponents_Skip(This,celt) \ - (This)->lpVtbl -> Skip(This,celt) - -#define IEnumComponents_Reset(This) \ - (This)->lpVtbl -> Reset(This) - -#define IEnumComponents_Clone(This,ppEnum) \ - (This)->lpVtbl -> Clone(This,ppEnum) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IEnumComponents_Next_Proxy( - IEnumComponents * This, - /* [in] */ ULONG celt, - /* [length_is][size_is][out] */ IComponent **rgelt, - /* [out] */ ULONG *pceltFetched); - - -void __RPC_STUB IEnumComponents_Next_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IEnumComponents_Skip_Proxy( - IEnumComponents * This, - /* [in] */ ULONG celt); - - -void __RPC_STUB IEnumComponents_Skip_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IEnumComponents_Reset_Proxy( - IEnumComponents * This); - - -void __RPC_STUB IEnumComponents_Reset_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IEnumComponents_Clone_Proxy( - IEnumComponents * This, - /* [out] */ IEnumComponents **ppEnum); - - -void __RPC_STUB IEnumComponents_Clone_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IEnumComponents_INTERFACE_DEFINED__ */ - - -#ifndef __IComponents_INTERFACE_DEFINED__ -#define __IComponents_INTERFACE_DEFINED__ - -/* interface IComponents */ -/* [unique][helpstring][oleautomation][dual][uuid][nonextensible][object] */ - - -EXTERN_C const IID IID_IComponents; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("FCD01846-0E19-11d3-9D8E-00C04F72D980") - IComponents : public IDispatch - { - public: - virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_Count( - /* [retval][out] */ long *Count) = 0; - - virtual /* [restricted][hidden][id][propget] */ HRESULT STDMETHODCALLTYPE get__NewEnum( - /* [retval][out] */ IEnumVARIANT **ppNewEnum) = 0; - - virtual /* [helpstring][restricted][hidden] */ HRESULT STDMETHODCALLTYPE EnumComponents( - /* [retval][out] */ IEnumComponents **ppNewEnum) = 0; - - virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Item( - /* [in] */ VARIANT Index, - /* [retval][out] */ IComponent **ppComponent) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Add( - /* [in] */ IComponent *Component, - /* [retval][out] */ VARIANT *NewIndex) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Remove( - /* [in] */ VARIANT Index) = 0; - - virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE Clone( - /* [retval][out] */ IComponents **NewList) = 0; - - }; - -#else /* C style interface */ - - typedef struct IComponentsVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IComponents * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IComponents * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IComponents * This); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( - IComponents * This, - /* [out] */ UINT *pctinfo); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( - IComponents * This, - /* [in] */ UINT iTInfo, - /* [in] */ LCID lcid, - /* [out] */ ITypeInfo **ppTInfo); - - HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( - IComponents * This, - /* [in] */ REFIID riid, - /* [size_is][in] */ LPOLESTR *rgszNames, - /* [in] */ UINT cNames, - /* [in] */ LCID lcid, - /* [size_is][out] */ DISPID *rgDispId); - - /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( - IComponents * This, - /* [in] */ DISPID dispIdMember, - /* [in] */ REFIID riid, - /* [in] */ LCID lcid, - /* [in] */ WORD wFlags, - /* [out][in] */ DISPPARAMS *pDispParams, - /* [out] */ VARIANT *pVarResult, - /* [out] */ EXCEPINFO *pExcepInfo, - /* [out] */ UINT *puArgErr); - - /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Count )( - IComponents * This, - /* [retval][out] */ long *Count); - - /* [restricted][hidden][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get__NewEnum )( - IComponents * This, - /* [retval][out] */ IEnumVARIANT **ppNewEnum); - - /* [helpstring][restricted][hidden] */ HRESULT ( STDMETHODCALLTYPE *EnumComponents )( - IComponents * This, - /* [retval][out] */ IEnumComponents **ppNewEnum); - - /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Item )( - IComponents * This, - /* [in] */ VARIANT Index, - /* [retval][out] */ IComponent **ppComponent); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Add )( - IComponents * This, - /* [in] */ IComponent *Component, - /* [retval][out] */ VARIANT *NewIndex); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Remove )( - IComponents * This, - /* [in] */ VARIANT Index); - - /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *Clone )( - IComponents * This, - /* [retval][out] */ IComponents **NewList); - - END_INTERFACE - } IComponentsVtbl; - - interface IComponents - { - CONST_VTBL struct IComponentsVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IComponents_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IComponents_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IComponents_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IComponents_GetTypeInfoCount(This,pctinfo) \ - (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) - -#define IComponents_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ - (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) - -#define IComponents_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ - (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) - -#define IComponents_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ - (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) - - -#define IComponents_get_Count(This,Count) \ - (This)->lpVtbl -> get_Count(This,Count) - -#define IComponents_get__NewEnum(This,ppNewEnum) \ - (This)->lpVtbl -> get__NewEnum(This,ppNewEnum) - -#define IComponents_EnumComponents(This,ppNewEnum) \ - (This)->lpVtbl -> EnumComponents(This,ppNewEnum) - -#define IComponents_get_Item(This,Index,ppComponent) \ - (This)->lpVtbl -> get_Item(This,Index,ppComponent) - -#define IComponents_Add(This,Component,NewIndex) \ - (This)->lpVtbl -> Add(This,Component,NewIndex) - -#define IComponents_Remove(This,Index) \ - (This)->lpVtbl -> Remove(This,Index) - -#define IComponents_Clone(This,NewList) \ - (This)->lpVtbl -> Clone(This,NewList) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IComponents_get_Count_Proxy( - IComponents * This, - /* [retval][out] */ long *Count); - - -void __RPC_STUB IComponents_get_Count_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [restricted][hidden][id][propget] */ HRESULT STDMETHODCALLTYPE IComponents_get__NewEnum_Proxy( - IComponents * This, - /* [retval][out] */ IEnumVARIANT **ppNewEnum); - - -void __RPC_STUB IComponents_get__NewEnum_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][restricted][hidden] */ HRESULT STDMETHODCALLTYPE IComponents_EnumComponents_Proxy( - IComponents * This, - /* [retval][out] */ IEnumComponents **ppNewEnum); - - -void __RPC_STUB IComponents_EnumComponents_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE IComponents_get_Item_Proxy( - IComponents * This, - /* [in] */ VARIANT Index, - /* [retval][out] */ IComponent **ppComponent); - - -void __RPC_STUB IComponents_get_Item_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IComponents_Add_Proxy( - IComponents * This, - /* [in] */ IComponent *Component, - /* [retval][out] */ VARIANT *NewIndex); - - -void __RPC_STUB IComponents_Add_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IComponents_Remove_Proxy( - IComponents * This, - /* [in] */ VARIANT Index); - - -void __RPC_STUB IComponents_Remove_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring] */ HRESULT STDMETHODCALLTYPE IComponents_Clone_Proxy( - IComponents * This, - /* [retval][out] */ IComponents **NewList); - - -void __RPC_STUB IComponents_Clone_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IComponents_INTERFACE_DEFINED__ */ - - -#ifndef __ILocator_INTERFACE_DEFINED__ -#define __ILocator_INTERFACE_DEFINED__ - -/* interface ILocator */ -/* [unique][helpstring][oleautomation][dual][uuid][nonextensible][object] */ - - -EXTERN_C const IID IID_ILocator; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("286D7F89-760C-4F89-80C4-66841D2507AA") - ILocator : public IDispatch - { - public: - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_CarrierFrequency( - /* [retval][out] */ long *Frequency) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_CarrierFrequency( - /* [in] */ long Frequency) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_InnerFEC( - /* [retval][out] */ FECMethod *FEC) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_InnerFEC( - /* [in] */ FECMethod FEC) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_InnerFECRate( - /* [retval][out] */ BinaryConvolutionCodeRate *FEC) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_InnerFECRate( - /* [in] */ BinaryConvolutionCodeRate FEC) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_OuterFEC( - /* [retval][out] */ FECMethod *FEC) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_OuterFEC( - /* [in] */ FECMethod FEC) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_OuterFECRate( - /* [retval][out] */ BinaryConvolutionCodeRate *FEC) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_OuterFECRate( - /* [in] */ BinaryConvolutionCodeRate FEC) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Modulation( - /* [retval][out] */ ModulationType *Modulation) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_Modulation( - /* [in] */ ModulationType Modulation) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_SymbolRate( - /* [retval][out] */ long *Rate) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_SymbolRate( - /* [in] */ long Rate) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Clone( - /* [retval][out] */ ILocator **NewLocator) = 0; - - }; - -#else /* C style interface */ - - typedef struct ILocatorVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - ILocator * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - ILocator * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - ILocator * This); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( - ILocator * This, - /* [out] */ UINT *pctinfo); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( - ILocator * This, - /* [in] */ UINT iTInfo, - /* [in] */ LCID lcid, - /* [out] */ ITypeInfo **ppTInfo); - - HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( - ILocator * This, - /* [in] */ REFIID riid, - /* [size_is][in] */ LPOLESTR *rgszNames, - /* [in] */ UINT cNames, - /* [in] */ LCID lcid, - /* [size_is][out] */ DISPID *rgDispId); - - /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( - ILocator * This, - /* [in] */ DISPID dispIdMember, - /* [in] */ REFIID riid, - /* [in] */ LCID lcid, - /* [in] */ WORD wFlags, - /* [out][in] */ DISPPARAMS *pDispParams, - /* [out] */ VARIANT *pVarResult, - /* [out] */ EXCEPINFO *pExcepInfo, - /* [out] */ UINT *puArgErr); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_CarrierFrequency )( - ILocator * This, - /* [retval][out] */ long *Frequency); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_CarrierFrequency )( - ILocator * This, - /* [in] */ long Frequency); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_InnerFEC )( - ILocator * This, - /* [retval][out] */ FECMethod *FEC); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_InnerFEC )( - ILocator * This, - /* [in] */ FECMethod FEC); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_InnerFECRate )( - ILocator * This, - /* [retval][out] */ BinaryConvolutionCodeRate *FEC); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_InnerFECRate )( - ILocator * This, - /* [in] */ BinaryConvolutionCodeRate FEC); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_OuterFEC )( - ILocator * This, - /* [retval][out] */ FECMethod *FEC); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_OuterFEC )( - ILocator * This, - /* [in] */ FECMethod FEC); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_OuterFECRate )( - ILocator * This, - /* [retval][out] */ BinaryConvolutionCodeRate *FEC); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_OuterFECRate )( - ILocator * This, - /* [in] */ BinaryConvolutionCodeRate FEC); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Modulation )( - ILocator * This, - /* [retval][out] */ ModulationType *Modulation); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Modulation )( - ILocator * This, - /* [in] */ ModulationType Modulation); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_SymbolRate )( - ILocator * This, - /* [retval][out] */ long *Rate); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_SymbolRate )( - ILocator * This, - /* [in] */ long Rate); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Clone )( - ILocator * This, - /* [retval][out] */ ILocator **NewLocator); - - END_INTERFACE - } ILocatorVtbl; - - interface ILocator - { - CONST_VTBL struct ILocatorVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define ILocator_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define ILocator_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define ILocator_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define ILocator_GetTypeInfoCount(This,pctinfo) \ - (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) - -#define ILocator_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ - (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) - -#define ILocator_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ - (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) - -#define ILocator_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ - (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) - - -#define ILocator_get_CarrierFrequency(This,Frequency) \ - (This)->lpVtbl -> get_CarrierFrequency(This,Frequency) - -#define ILocator_put_CarrierFrequency(This,Frequency) \ - (This)->lpVtbl -> put_CarrierFrequency(This,Frequency) - -#define ILocator_get_InnerFEC(This,FEC) \ - (This)->lpVtbl -> get_InnerFEC(This,FEC) - -#define ILocator_put_InnerFEC(This,FEC) \ - (This)->lpVtbl -> put_InnerFEC(This,FEC) - -#define ILocator_get_InnerFECRate(This,FEC) \ - (This)->lpVtbl -> get_InnerFECRate(This,FEC) - -#define ILocator_put_InnerFECRate(This,FEC) \ - (This)->lpVtbl -> put_InnerFECRate(This,FEC) - -#define ILocator_get_OuterFEC(This,FEC) \ - (This)->lpVtbl -> get_OuterFEC(This,FEC) - -#define ILocator_put_OuterFEC(This,FEC) \ - (This)->lpVtbl -> put_OuterFEC(This,FEC) - -#define ILocator_get_OuterFECRate(This,FEC) \ - (This)->lpVtbl -> get_OuterFECRate(This,FEC) - -#define ILocator_put_OuterFECRate(This,FEC) \ - (This)->lpVtbl -> put_OuterFECRate(This,FEC) - -#define ILocator_get_Modulation(This,Modulation) \ - (This)->lpVtbl -> get_Modulation(This,Modulation) - -#define ILocator_put_Modulation(This,Modulation) \ - (This)->lpVtbl -> put_Modulation(This,Modulation) - -#define ILocator_get_SymbolRate(This,Rate) \ - (This)->lpVtbl -> get_SymbolRate(This,Rate) - -#define ILocator_put_SymbolRate(This,Rate) \ - (This)->lpVtbl -> put_SymbolRate(This,Rate) - -#define ILocator_Clone(This,NewLocator) \ - (This)->lpVtbl -> Clone(This,NewLocator) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE ILocator_get_CarrierFrequency_Proxy( - ILocator * This, - /* [retval][out] */ long *Frequency); - - -void __RPC_STUB ILocator_get_CarrierFrequency_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE ILocator_put_CarrierFrequency_Proxy( - ILocator * This, - /* [in] */ long Frequency); - - -void __RPC_STUB ILocator_put_CarrierFrequency_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE ILocator_get_InnerFEC_Proxy( - ILocator * This, - /* [retval][out] */ FECMethod *FEC); - - -void __RPC_STUB ILocator_get_InnerFEC_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE ILocator_put_InnerFEC_Proxy( - ILocator * This, - /* [in] */ FECMethod FEC); - - -void __RPC_STUB ILocator_put_InnerFEC_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE ILocator_get_InnerFECRate_Proxy( - ILocator * This, - /* [retval][out] */ BinaryConvolutionCodeRate *FEC); - - -void __RPC_STUB ILocator_get_InnerFECRate_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE ILocator_put_InnerFECRate_Proxy( - ILocator * This, - /* [in] */ BinaryConvolutionCodeRate FEC); - - -void __RPC_STUB ILocator_put_InnerFECRate_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE ILocator_get_OuterFEC_Proxy( - ILocator * This, - /* [retval][out] */ FECMethod *FEC); - - -void __RPC_STUB ILocator_get_OuterFEC_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE ILocator_put_OuterFEC_Proxy( - ILocator * This, - /* [in] */ FECMethod FEC); - - -void __RPC_STUB ILocator_put_OuterFEC_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE ILocator_get_OuterFECRate_Proxy( - ILocator * This, - /* [retval][out] */ BinaryConvolutionCodeRate *FEC); - - -void __RPC_STUB ILocator_get_OuterFECRate_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE ILocator_put_OuterFECRate_Proxy( - ILocator * This, - /* [in] */ BinaryConvolutionCodeRate FEC); - - -void __RPC_STUB ILocator_put_OuterFECRate_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE ILocator_get_Modulation_Proxy( - ILocator * This, - /* [retval][out] */ ModulationType *Modulation); - - -void __RPC_STUB ILocator_get_Modulation_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE ILocator_put_Modulation_Proxy( - ILocator * This, - /* [in] */ ModulationType Modulation); - - -void __RPC_STUB ILocator_put_Modulation_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE ILocator_get_SymbolRate_Proxy( - ILocator * This, - /* [retval][out] */ long *Rate); - - -void __RPC_STUB ILocator_get_SymbolRate_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE ILocator_put_SymbolRate_Proxy( - ILocator * This, - /* [in] */ long Rate); - - -void __RPC_STUB ILocator_put_SymbolRate_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE ILocator_Clone_Proxy( - ILocator * This, - /* [retval][out] */ ILocator **NewLocator); - - -void __RPC_STUB ILocator_Clone_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __ILocator_INTERFACE_DEFINED__ */ - - -#ifndef __IATSCLocator_INTERFACE_DEFINED__ -#define __IATSCLocator_INTERFACE_DEFINED__ - -/* interface IATSCLocator */ -/* [unique][helpstring][oleautomation][dual][uuid][nonextensible][hidden][object] */ - - -EXTERN_C const IID IID_IATSCLocator; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("BF8D986F-8C2B-4131-94D7-4D3D9FCC21EF") - IATSCLocator : public ILocator - { - public: - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_PhysicalChannel( - /* [retval][out] */ long *PhysicalChannel) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_PhysicalChannel( - /* [in] */ long PhysicalChannel) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_TSID( - /* [retval][out] */ long *TSID) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_TSID( - /* [in] */ long TSID) = 0; - - }; - -#else /* C style interface */ - - typedef struct IATSCLocatorVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IATSCLocator * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IATSCLocator * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IATSCLocator * This); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( - IATSCLocator * This, - /* [out] */ UINT *pctinfo); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( - IATSCLocator * This, - /* [in] */ UINT iTInfo, - /* [in] */ LCID lcid, - /* [out] */ ITypeInfo **ppTInfo); - - HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( - IATSCLocator * This, - /* [in] */ REFIID riid, - /* [size_is][in] */ LPOLESTR *rgszNames, - /* [in] */ UINT cNames, - /* [in] */ LCID lcid, - /* [size_is][out] */ DISPID *rgDispId); - - /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( - IATSCLocator * This, - /* [in] */ DISPID dispIdMember, - /* [in] */ REFIID riid, - /* [in] */ LCID lcid, - /* [in] */ WORD wFlags, - /* [out][in] */ DISPPARAMS *pDispParams, - /* [out] */ VARIANT *pVarResult, - /* [out] */ EXCEPINFO *pExcepInfo, - /* [out] */ UINT *puArgErr); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_CarrierFrequency )( - IATSCLocator * This, - /* [retval][out] */ long *Frequency); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_CarrierFrequency )( - IATSCLocator * This, - /* [in] */ long Frequency); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_InnerFEC )( - IATSCLocator * This, - /* [retval][out] */ FECMethod *FEC); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_InnerFEC )( - IATSCLocator * This, - /* [in] */ FECMethod FEC); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_InnerFECRate )( - IATSCLocator * This, - /* [retval][out] */ BinaryConvolutionCodeRate *FEC); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_InnerFECRate )( - IATSCLocator * This, - /* [in] */ BinaryConvolutionCodeRate FEC); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_OuterFEC )( - IATSCLocator * This, - /* [retval][out] */ FECMethod *FEC); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_OuterFEC )( - IATSCLocator * This, - /* [in] */ FECMethod FEC); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_OuterFECRate )( - IATSCLocator * This, - /* [retval][out] */ BinaryConvolutionCodeRate *FEC); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_OuterFECRate )( - IATSCLocator * This, - /* [in] */ BinaryConvolutionCodeRate FEC); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Modulation )( - IATSCLocator * This, - /* [retval][out] */ ModulationType *Modulation); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Modulation )( - IATSCLocator * This, - /* [in] */ ModulationType Modulation); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_SymbolRate )( - IATSCLocator * This, - /* [retval][out] */ long *Rate); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_SymbolRate )( - IATSCLocator * This, - /* [in] */ long Rate); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Clone )( - IATSCLocator * This, - /* [retval][out] */ ILocator **NewLocator); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_PhysicalChannel )( - IATSCLocator * This, - /* [retval][out] */ long *PhysicalChannel); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_PhysicalChannel )( - IATSCLocator * This, - /* [in] */ long PhysicalChannel); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_TSID )( - IATSCLocator * This, - /* [retval][out] */ long *TSID); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_TSID )( - IATSCLocator * This, - /* [in] */ long TSID); - - END_INTERFACE - } IATSCLocatorVtbl; - - interface IATSCLocator - { - CONST_VTBL struct IATSCLocatorVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IATSCLocator_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IATSCLocator_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IATSCLocator_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IATSCLocator_GetTypeInfoCount(This,pctinfo) \ - (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) - -#define IATSCLocator_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ - (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) - -#define IATSCLocator_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ - (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) - -#define IATSCLocator_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ - (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) - - -#define IATSCLocator_get_CarrierFrequency(This,Frequency) \ - (This)->lpVtbl -> get_CarrierFrequency(This,Frequency) - -#define IATSCLocator_put_CarrierFrequency(This,Frequency) \ - (This)->lpVtbl -> put_CarrierFrequency(This,Frequency) - -#define IATSCLocator_get_InnerFEC(This,FEC) \ - (This)->lpVtbl -> get_InnerFEC(This,FEC) - -#define IATSCLocator_put_InnerFEC(This,FEC) \ - (This)->lpVtbl -> put_InnerFEC(This,FEC) - -#define IATSCLocator_get_InnerFECRate(This,FEC) \ - (This)->lpVtbl -> get_InnerFECRate(This,FEC) - -#define IATSCLocator_put_InnerFECRate(This,FEC) \ - (This)->lpVtbl -> put_InnerFECRate(This,FEC) - -#define IATSCLocator_get_OuterFEC(This,FEC) \ - (This)->lpVtbl -> get_OuterFEC(This,FEC) - -#define IATSCLocator_put_OuterFEC(This,FEC) \ - (This)->lpVtbl -> put_OuterFEC(This,FEC) - -#define IATSCLocator_get_OuterFECRate(This,FEC) \ - (This)->lpVtbl -> get_OuterFECRate(This,FEC) - -#define IATSCLocator_put_OuterFECRate(This,FEC) \ - (This)->lpVtbl -> put_OuterFECRate(This,FEC) - -#define IATSCLocator_get_Modulation(This,Modulation) \ - (This)->lpVtbl -> get_Modulation(This,Modulation) - -#define IATSCLocator_put_Modulation(This,Modulation) \ - (This)->lpVtbl -> put_Modulation(This,Modulation) - -#define IATSCLocator_get_SymbolRate(This,Rate) \ - (This)->lpVtbl -> get_SymbolRate(This,Rate) - -#define IATSCLocator_put_SymbolRate(This,Rate) \ - (This)->lpVtbl -> put_SymbolRate(This,Rate) - -#define IATSCLocator_Clone(This,NewLocator) \ - (This)->lpVtbl -> Clone(This,NewLocator) - - -#define IATSCLocator_get_PhysicalChannel(This,PhysicalChannel) \ - (This)->lpVtbl -> get_PhysicalChannel(This,PhysicalChannel) - -#define IATSCLocator_put_PhysicalChannel(This,PhysicalChannel) \ - (This)->lpVtbl -> put_PhysicalChannel(This,PhysicalChannel) - -#define IATSCLocator_get_TSID(This,TSID) \ - (This)->lpVtbl -> get_TSID(This,TSID) - -#define IATSCLocator_put_TSID(This,TSID) \ - (This)->lpVtbl -> put_TSID(This,TSID) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IATSCLocator_get_PhysicalChannel_Proxy( - IATSCLocator * This, - /* [retval][out] */ long *PhysicalChannel); - - -void __RPC_STUB IATSCLocator_get_PhysicalChannel_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IATSCLocator_put_PhysicalChannel_Proxy( - IATSCLocator * This, - /* [in] */ long PhysicalChannel); - - -void __RPC_STUB IATSCLocator_put_PhysicalChannel_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IATSCLocator_get_TSID_Proxy( - IATSCLocator * This, - /* [retval][out] */ long *TSID); - - -void __RPC_STUB IATSCLocator_get_TSID_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IATSCLocator_put_TSID_Proxy( - IATSCLocator * This, - /* [in] */ long TSID); - - -void __RPC_STUB IATSCLocator_put_TSID_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IATSCLocator_INTERFACE_DEFINED__ */ - - -#ifndef __IDVBTLocator_INTERFACE_DEFINED__ -#define __IDVBTLocator_INTERFACE_DEFINED__ - -/* interface IDVBTLocator */ -/* [unique][helpstring][oleautomation][dual][uuid][nonextensible][hidden][object] */ - - -EXTERN_C const IID IID_IDVBTLocator; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("8664DA16-DDA2-42ac-926A-C18F9127C302") - IDVBTLocator : public ILocator - { - public: - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Bandwidth( - /* [retval][out] */ long *BandWidthVal) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_Bandwidth( - /* [in] */ long BandwidthVal) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_LPInnerFEC( - /* [retval][out] */ FECMethod *FEC) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_LPInnerFEC( - /* [in] */ FECMethod FEC) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_LPInnerFECRate( - /* [retval][out] */ BinaryConvolutionCodeRate *FEC) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_LPInnerFECRate( - /* [in] */ BinaryConvolutionCodeRate FEC) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_HAlpha( - /* [retval][out] */ HierarchyAlpha *Alpha) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_HAlpha( - /* [in] */ HierarchyAlpha Alpha) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Guard( - /* [retval][out] */ GuardInterval *GI) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_Guard( - /* [in] */ GuardInterval GI) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Mode( - /* [retval][out] */ TransmissionMode *mode) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_Mode( - /* [in] */ TransmissionMode mode) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_OtherFrequencyInUse( - /* [retval][out] */ VARIANT_BOOL *OtherFrequencyInUseVal) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_OtherFrequencyInUse( - /* [in] */ VARIANT_BOOL OtherFrequencyInUseVal) = 0; - - }; - -#else /* C style interface */ - - typedef struct IDVBTLocatorVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IDVBTLocator * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IDVBTLocator * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IDVBTLocator * This); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( - IDVBTLocator * This, - /* [out] */ UINT *pctinfo); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( - IDVBTLocator * This, - /* [in] */ UINT iTInfo, - /* [in] */ LCID lcid, - /* [out] */ ITypeInfo **ppTInfo); - - HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( - IDVBTLocator * This, - /* [in] */ REFIID riid, - /* [size_is][in] */ LPOLESTR *rgszNames, - /* [in] */ UINT cNames, - /* [in] */ LCID lcid, - /* [size_is][out] */ DISPID *rgDispId); - - /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( - IDVBTLocator * This, - /* [in] */ DISPID dispIdMember, - /* [in] */ REFIID riid, - /* [in] */ LCID lcid, - /* [in] */ WORD wFlags, - /* [out][in] */ DISPPARAMS *pDispParams, - /* [out] */ VARIANT *pVarResult, - /* [out] */ EXCEPINFO *pExcepInfo, - /* [out] */ UINT *puArgErr); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_CarrierFrequency )( - IDVBTLocator * This, - /* [retval][out] */ long *Frequency); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_CarrierFrequency )( - IDVBTLocator * This, - /* [in] */ long Frequency); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_InnerFEC )( - IDVBTLocator * This, - /* [retval][out] */ FECMethod *FEC); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_InnerFEC )( - IDVBTLocator * This, - /* [in] */ FECMethod FEC); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_InnerFECRate )( - IDVBTLocator * This, - /* [retval][out] */ BinaryConvolutionCodeRate *FEC); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_InnerFECRate )( - IDVBTLocator * This, - /* [in] */ BinaryConvolutionCodeRate FEC); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_OuterFEC )( - IDVBTLocator * This, - /* [retval][out] */ FECMethod *FEC); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_OuterFEC )( - IDVBTLocator * This, - /* [in] */ FECMethod FEC); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_OuterFECRate )( - IDVBTLocator * This, - /* [retval][out] */ BinaryConvolutionCodeRate *FEC); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_OuterFECRate )( - IDVBTLocator * This, - /* [in] */ BinaryConvolutionCodeRate FEC); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Modulation )( - IDVBTLocator * This, - /* [retval][out] */ ModulationType *Modulation); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Modulation )( - IDVBTLocator * This, - /* [in] */ ModulationType Modulation); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_SymbolRate )( - IDVBTLocator * This, - /* [retval][out] */ long *Rate); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_SymbolRate )( - IDVBTLocator * This, - /* [in] */ long Rate); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Clone )( - IDVBTLocator * This, - /* [retval][out] */ ILocator **NewLocator); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Bandwidth )( - IDVBTLocator * This, - /* [retval][out] */ long *BandWidthVal); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Bandwidth )( - IDVBTLocator * This, - /* [in] */ long BandwidthVal); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_LPInnerFEC )( - IDVBTLocator * This, - /* [retval][out] */ FECMethod *FEC); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_LPInnerFEC )( - IDVBTLocator * This, - /* [in] */ FECMethod FEC); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_LPInnerFECRate )( - IDVBTLocator * This, - /* [retval][out] */ BinaryConvolutionCodeRate *FEC); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_LPInnerFECRate )( - IDVBTLocator * This, - /* [in] */ BinaryConvolutionCodeRate FEC); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_HAlpha )( - IDVBTLocator * This, - /* [retval][out] */ HierarchyAlpha *Alpha); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_HAlpha )( - IDVBTLocator * This, - /* [in] */ HierarchyAlpha Alpha); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Guard )( - IDVBTLocator * This, - /* [retval][out] */ GuardInterval *GI); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Guard )( - IDVBTLocator * This, - /* [in] */ GuardInterval GI); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Mode )( - IDVBTLocator * This, - /* [retval][out] */ TransmissionMode *mode); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Mode )( - IDVBTLocator * This, - /* [in] */ TransmissionMode mode); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_OtherFrequencyInUse )( - IDVBTLocator * This, - /* [retval][out] */ VARIANT_BOOL *OtherFrequencyInUseVal); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_OtherFrequencyInUse )( - IDVBTLocator * This, - /* [in] */ VARIANT_BOOL OtherFrequencyInUseVal); - - END_INTERFACE - } IDVBTLocatorVtbl; - - interface IDVBTLocator - { - CONST_VTBL struct IDVBTLocatorVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IDVBTLocator_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IDVBTLocator_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IDVBTLocator_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IDVBTLocator_GetTypeInfoCount(This,pctinfo) \ - (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) - -#define IDVBTLocator_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ - (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) - -#define IDVBTLocator_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ - (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) - -#define IDVBTLocator_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ - (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) - - -#define IDVBTLocator_get_CarrierFrequency(This,Frequency) \ - (This)->lpVtbl -> get_CarrierFrequency(This,Frequency) - -#define IDVBTLocator_put_CarrierFrequency(This,Frequency) \ - (This)->lpVtbl -> put_CarrierFrequency(This,Frequency) - -#define IDVBTLocator_get_InnerFEC(This,FEC) \ - (This)->lpVtbl -> get_InnerFEC(This,FEC) - -#define IDVBTLocator_put_InnerFEC(This,FEC) \ - (This)->lpVtbl -> put_InnerFEC(This,FEC) - -#define IDVBTLocator_get_InnerFECRate(This,FEC) \ - (This)->lpVtbl -> get_InnerFECRate(This,FEC) - -#define IDVBTLocator_put_InnerFECRate(This,FEC) \ - (This)->lpVtbl -> put_InnerFECRate(This,FEC) - -#define IDVBTLocator_get_OuterFEC(This,FEC) \ - (This)->lpVtbl -> get_OuterFEC(This,FEC) - -#define IDVBTLocator_put_OuterFEC(This,FEC) \ - (This)->lpVtbl -> put_OuterFEC(This,FEC) - -#define IDVBTLocator_get_OuterFECRate(This,FEC) \ - (This)->lpVtbl -> get_OuterFECRate(This,FEC) - -#define IDVBTLocator_put_OuterFECRate(This,FEC) \ - (This)->lpVtbl -> put_OuterFECRate(This,FEC) - -#define IDVBTLocator_get_Modulation(This,Modulation) \ - (This)->lpVtbl -> get_Modulation(This,Modulation) - -#define IDVBTLocator_put_Modulation(This,Modulation) \ - (This)->lpVtbl -> put_Modulation(This,Modulation) - -#define IDVBTLocator_get_SymbolRate(This,Rate) \ - (This)->lpVtbl -> get_SymbolRate(This,Rate) - -#define IDVBTLocator_put_SymbolRate(This,Rate) \ - (This)->lpVtbl -> put_SymbolRate(This,Rate) - -#define IDVBTLocator_Clone(This,NewLocator) \ - (This)->lpVtbl -> Clone(This,NewLocator) - - -#define IDVBTLocator_get_Bandwidth(This,BandWidthVal) \ - (This)->lpVtbl -> get_Bandwidth(This,BandWidthVal) - -#define IDVBTLocator_put_Bandwidth(This,BandwidthVal) \ - (This)->lpVtbl -> put_Bandwidth(This,BandwidthVal) - -#define IDVBTLocator_get_LPInnerFEC(This,FEC) \ - (This)->lpVtbl -> get_LPInnerFEC(This,FEC) - -#define IDVBTLocator_put_LPInnerFEC(This,FEC) \ - (This)->lpVtbl -> put_LPInnerFEC(This,FEC) - -#define IDVBTLocator_get_LPInnerFECRate(This,FEC) \ - (This)->lpVtbl -> get_LPInnerFECRate(This,FEC) - -#define IDVBTLocator_put_LPInnerFECRate(This,FEC) \ - (This)->lpVtbl -> put_LPInnerFECRate(This,FEC) - -#define IDVBTLocator_get_HAlpha(This,Alpha) \ - (This)->lpVtbl -> get_HAlpha(This,Alpha) - -#define IDVBTLocator_put_HAlpha(This,Alpha) \ - (This)->lpVtbl -> put_HAlpha(This,Alpha) - -#define IDVBTLocator_get_Guard(This,GI) \ - (This)->lpVtbl -> get_Guard(This,GI) - -#define IDVBTLocator_put_Guard(This,GI) \ - (This)->lpVtbl -> put_Guard(This,GI) - -#define IDVBTLocator_get_Mode(This,mode) \ - (This)->lpVtbl -> get_Mode(This,mode) - -#define IDVBTLocator_put_Mode(This,mode) \ - (This)->lpVtbl -> put_Mode(This,mode) - -#define IDVBTLocator_get_OtherFrequencyInUse(This,OtherFrequencyInUseVal) \ - (This)->lpVtbl -> get_OtherFrequencyInUse(This,OtherFrequencyInUseVal) - -#define IDVBTLocator_put_OtherFrequencyInUse(This,OtherFrequencyInUseVal) \ - (This)->lpVtbl -> put_OtherFrequencyInUse(This,OtherFrequencyInUseVal) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDVBTLocator_get_Bandwidth_Proxy( - IDVBTLocator * This, - /* [retval][out] */ long *BandWidthVal); - - -void __RPC_STUB IDVBTLocator_get_Bandwidth_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDVBTLocator_put_Bandwidth_Proxy( - IDVBTLocator * This, - /* [in] */ long BandwidthVal); - - -void __RPC_STUB IDVBTLocator_put_Bandwidth_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDVBTLocator_get_LPInnerFEC_Proxy( - IDVBTLocator * This, - /* [retval][out] */ FECMethod *FEC); - - -void __RPC_STUB IDVBTLocator_get_LPInnerFEC_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDVBTLocator_put_LPInnerFEC_Proxy( - IDVBTLocator * This, - /* [in] */ FECMethod FEC); - - -void __RPC_STUB IDVBTLocator_put_LPInnerFEC_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDVBTLocator_get_LPInnerFECRate_Proxy( - IDVBTLocator * This, - /* [retval][out] */ BinaryConvolutionCodeRate *FEC); - - -void __RPC_STUB IDVBTLocator_get_LPInnerFECRate_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDVBTLocator_put_LPInnerFECRate_Proxy( - IDVBTLocator * This, - /* [in] */ BinaryConvolutionCodeRate FEC); - - -void __RPC_STUB IDVBTLocator_put_LPInnerFECRate_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDVBTLocator_get_HAlpha_Proxy( - IDVBTLocator * This, - /* [retval][out] */ HierarchyAlpha *Alpha); - - -void __RPC_STUB IDVBTLocator_get_HAlpha_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDVBTLocator_put_HAlpha_Proxy( - IDVBTLocator * This, - /* [in] */ HierarchyAlpha Alpha); - - -void __RPC_STUB IDVBTLocator_put_HAlpha_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDVBTLocator_get_Guard_Proxy( - IDVBTLocator * This, - /* [retval][out] */ GuardInterval *GI); - - -void __RPC_STUB IDVBTLocator_get_Guard_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDVBTLocator_put_Guard_Proxy( - IDVBTLocator * This, - /* [in] */ GuardInterval GI); - - -void __RPC_STUB IDVBTLocator_put_Guard_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDVBTLocator_get_Mode_Proxy( - IDVBTLocator * This, - /* [retval][out] */ TransmissionMode *mode); - - -void __RPC_STUB IDVBTLocator_get_Mode_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDVBTLocator_put_Mode_Proxy( - IDVBTLocator * This, - /* [in] */ TransmissionMode mode); - - -void __RPC_STUB IDVBTLocator_put_Mode_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDVBTLocator_get_OtherFrequencyInUse_Proxy( - IDVBTLocator * This, - /* [retval][out] */ VARIANT_BOOL *OtherFrequencyInUseVal); - - -void __RPC_STUB IDVBTLocator_get_OtherFrequencyInUse_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDVBTLocator_put_OtherFrequencyInUse_Proxy( - IDVBTLocator * This, - /* [in] */ VARIANT_BOOL OtherFrequencyInUseVal); - - -void __RPC_STUB IDVBTLocator_put_OtherFrequencyInUse_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IDVBTLocator_INTERFACE_DEFINED__ */ - - -#ifndef __IDVBSLocator_INTERFACE_DEFINED__ -#define __IDVBSLocator_INTERFACE_DEFINED__ - -/* interface IDVBSLocator */ -/* [unique][helpstring][oleautomation][dual][uuid][nonextensible][hidden][object] */ - - -EXTERN_C const IID IID_IDVBSLocator; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("3D7C353C-0D04-45f1-A742-F97CC1188DC8") - IDVBSLocator : public ILocator - { - public: - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_SignalPolarisation( - /* [retval][out] */ Polarisation *PolarisationVal) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_SignalPolarisation( - /* [in] */ Polarisation PolarisationVal) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_WestPosition( - /* [retval][out] */ VARIANT_BOOL *WestLongitude) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_WestPosition( - /* [in] */ VARIANT_BOOL WestLongitude) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_OrbitalPosition( - /* [retval][out] */ long *longitude) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_OrbitalPosition( - /* [in] */ long longitude) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Azimuth( - /* [retval][out] */ long *Azimuth) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_Azimuth( - /* [in] */ long Azimuth) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Elevation( - /* [retval][out] */ long *Elevation) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_Elevation( - /* [in] */ long Elevation) = 0; - - }; - -#else /* C style interface */ - - typedef struct IDVBSLocatorVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IDVBSLocator * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IDVBSLocator * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IDVBSLocator * This); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( - IDVBSLocator * This, - /* [out] */ UINT *pctinfo); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( - IDVBSLocator * This, - /* [in] */ UINT iTInfo, - /* [in] */ LCID lcid, - /* [out] */ ITypeInfo **ppTInfo); - - HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( - IDVBSLocator * This, - /* [in] */ REFIID riid, - /* [size_is][in] */ LPOLESTR *rgszNames, - /* [in] */ UINT cNames, - /* [in] */ LCID lcid, - /* [size_is][out] */ DISPID *rgDispId); - - /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( - IDVBSLocator * This, - /* [in] */ DISPID dispIdMember, - /* [in] */ REFIID riid, - /* [in] */ LCID lcid, - /* [in] */ WORD wFlags, - /* [out][in] */ DISPPARAMS *pDispParams, - /* [out] */ VARIANT *pVarResult, - /* [out] */ EXCEPINFO *pExcepInfo, - /* [out] */ UINT *puArgErr); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_CarrierFrequency )( - IDVBSLocator * This, - /* [retval][out] */ long *Frequency); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_CarrierFrequency )( - IDVBSLocator * This, - /* [in] */ long Frequency); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_InnerFEC )( - IDVBSLocator * This, - /* [retval][out] */ FECMethod *FEC); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_InnerFEC )( - IDVBSLocator * This, - /* [in] */ FECMethod FEC); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_InnerFECRate )( - IDVBSLocator * This, - /* [retval][out] */ BinaryConvolutionCodeRate *FEC); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_InnerFECRate )( - IDVBSLocator * This, - /* [in] */ BinaryConvolutionCodeRate FEC); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_OuterFEC )( - IDVBSLocator * This, - /* [retval][out] */ FECMethod *FEC); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_OuterFEC )( - IDVBSLocator * This, - /* [in] */ FECMethod FEC); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_OuterFECRate )( - IDVBSLocator * This, - /* [retval][out] */ BinaryConvolutionCodeRate *FEC); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_OuterFECRate )( - IDVBSLocator * This, - /* [in] */ BinaryConvolutionCodeRate FEC); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Modulation )( - IDVBSLocator * This, - /* [retval][out] */ ModulationType *Modulation); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Modulation )( - IDVBSLocator * This, - /* [in] */ ModulationType Modulation); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_SymbolRate )( - IDVBSLocator * This, - /* [retval][out] */ long *Rate); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_SymbolRate )( - IDVBSLocator * This, - /* [in] */ long Rate); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Clone )( - IDVBSLocator * This, - /* [retval][out] */ ILocator **NewLocator); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_SignalPolarisation )( - IDVBSLocator * This, - /* [retval][out] */ Polarisation *PolarisationVal); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_SignalPolarisation )( - IDVBSLocator * This, - /* [in] */ Polarisation PolarisationVal); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_WestPosition )( - IDVBSLocator * This, - /* [retval][out] */ VARIANT_BOOL *WestLongitude); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_WestPosition )( - IDVBSLocator * This, - /* [in] */ VARIANT_BOOL WestLongitude); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_OrbitalPosition )( - IDVBSLocator * This, - /* [retval][out] */ long *longitude); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_OrbitalPosition )( - IDVBSLocator * This, - /* [in] */ long longitude); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Azimuth )( - IDVBSLocator * This, - /* [retval][out] */ long *Azimuth); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Azimuth )( - IDVBSLocator * This, - /* [in] */ long Azimuth); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Elevation )( - IDVBSLocator * This, - /* [retval][out] */ long *Elevation); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Elevation )( - IDVBSLocator * This, - /* [in] */ long Elevation); - - END_INTERFACE - } IDVBSLocatorVtbl; - - interface IDVBSLocator - { - CONST_VTBL struct IDVBSLocatorVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IDVBSLocator_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IDVBSLocator_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IDVBSLocator_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IDVBSLocator_GetTypeInfoCount(This,pctinfo) \ - (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) - -#define IDVBSLocator_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ - (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) - -#define IDVBSLocator_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ - (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) - -#define IDVBSLocator_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ - (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) - - -#define IDVBSLocator_get_CarrierFrequency(This,Frequency) \ - (This)->lpVtbl -> get_CarrierFrequency(This,Frequency) - -#define IDVBSLocator_put_CarrierFrequency(This,Frequency) \ - (This)->lpVtbl -> put_CarrierFrequency(This,Frequency) - -#define IDVBSLocator_get_InnerFEC(This,FEC) \ - (This)->lpVtbl -> get_InnerFEC(This,FEC) - -#define IDVBSLocator_put_InnerFEC(This,FEC) \ - (This)->lpVtbl -> put_InnerFEC(This,FEC) - -#define IDVBSLocator_get_InnerFECRate(This,FEC) \ - (This)->lpVtbl -> get_InnerFECRate(This,FEC) - -#define IDVBSLocator_put_InnerFECRate(This,FEC) \ - (This)->lpVtbl -> put_InnerFECRate(This,FEC) - -#define IDVBSLocator_get_OuterFEC(This,FEC) \ - (This)->lpVtbl -> get_OuterFEC(This,FEC) - -#define IDVBSLocator_put_OuterFEC(This,FEC) \ - (This)->lpVtbl -> put_OuterFEC(This,FEC) - -#define IDVBSLocator_get_OuterFECRate(This,FEC) \ - (This)->lpVtbl -> get_OuterFECRate(This,FEC) - -#define IDVBSLocator_put_OuterFECRate(This,FEC) \ - (This)->lpVtbl -> put_OuterFECRate(This,FEC) - -#define IDVBSLocator_get_Modulation(This,Modulation) \ - (This)->lpVtbl -> get_Modulation(This,Modulation) - -#define IDVBSLocator_put_Modulation(This,Modulation) \ - (This)->lpVtbl -> put_Modulation(This,Modulation) - -#define IDVBSLocator_get_SymbolRate(This,Rate) \ - (This)->lpVtbl -> get_SymbolRate(This,Rate) - -#define IDVBSLocator_put_SymbolRate(This,Rate) \ - (This)->lpVtbl -> put_SymbolRate(This,Rate) - -#define IDVBSLocator_Clone(This,NewLocator) \ - (This)->lpVtbl -> Clone(This,NewLocator) - - -#define IDVBSLocator_get_SignalPolarisation(This,PolarisationVal) \ - (This)->lpVtbl -> get_SignalPolarisation(This,PolarisationVal) - -#define IDVBSLocator_put_SignalPolarisation(This,PolarisationVal) \ - (This)->lpVtbl -> put_SignalPolarisation(This,PolarisationVal) - -#define IDVBSLocator_get_WestPosition(This,WestLongitude) \ - (This)->lpVtbl -> get_WestPosition(This,WestLongitude) - -#define IDVBSLocator_put_WestPosition(This,WestLongitude) \ - (This)->lpVtbl -> put_WestPosition(This,WestLongitude) - -#define IDVBSLocator_get_OrbitalPosition(This,longitude) \ - (This)->lpVtbl -> get_OrbitalPosition(This,longitude) - -#define IDVBSLocator_put_OrbitalPosition(This,longitude) \ - (This)->lpVtbl -> put_OrbitalPosition(This,longitude) - -#define IDVBSLocator_get_Azimuth(This,Azimuth) \ - (This)->lpVtbl -> get_Azimuth(This,Azimuth) - -#define IDVBSLocator_put_Azimuth(This,Azimuth) \ - (This)->lpVtbl -> put_Azimuth(This,Azimuth) - -#define IDVBSLocator_get_Elevation(This,Elevation) \ - (This)->lpVtbl -> get_Elevation(This,Elevation) - -#define IDVBSLocator_put_Elevation(This,Elevation) \ - (This)->lpVtbl -> put_Elevation(This,Elevation) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDVBSLocator_get_SignalPolarisation_Proxy( - IDVBSLocator * This, - /* [retval][out] */ Polarisation *PolarisationVal); - - -void __RPC_STUB IDVBSLocator_get_SignalPolarisation_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDVBSLocator_put_SignalPolarisation_Proxy( - IDVBSLocator * This, - /* [in] */ Polarisation PolarisationVal); - - -void __RPC_STUB IDVBSLocator_put_SignalPolarisation_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDVBSLocator_get_WestPosition_Proxy( - IDVBSLocator * This, - /* [retval][out] */ VARIANT_BOOL *WestLongitude); - - -void __RPC_STUB IDVBSLocator_get_WestPosition_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDVBSLocator_put_WestPosition_Proxy( - IDVBSLocator * This, - /* [in] */ VARIANT_BOOL WestLongitude); - - -void __RPC_STUB IDVBSLocator_put_WestPosition_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDVBSLocator_get_OrbitalPosition_Proxy( - IDVBSLocator * This, - /* [retval][out] */ long *longitude); - - -void __RPC_STUB IDVBSLocator_get_OrbitalPosition_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDVBSLocator_put_OrbitalPosition_Proxy( - IDVBSLocator * This, - /* [in] */ long longitude); - - -void __RPC_STUB IDVBSLocator_put_OrbitalPosition_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDVBSLocator_get_Azimuth_Proxy( - IDVBSLocator * This, - /* [retval][out] */ long *Azimuth); - - -void __RPC_STUB IDVBSLocator_get_Azimuth_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDVBSLocator_put_Azimuth_Proxy( - IDVBSLocator * This, - /* [in] */ long Azimuth); - - -void __RPC_STUB IDVBSLocator_put_Azimuth_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDVBSLocator_get_Elevation_Proxy( - IDVBSLocator * This, - /* [retval][out] */ long *Elevation); - - -void __RPC_STUB IDVBSLocator_get_Elevation_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDVBSLocator_put_Elevation_Proxy( - IDVBSLocator * This, - /* [in] */ long Elevation); - - -void __RPC_STUB IDVBSLocator_put_Elevation_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IDVBSLocator_INTERFACE_DEFINED__ */ - - -#ifndef __IDVBCLocator_INTERFACE_DEFINED__ -#define __IDVBCLocator_INTERFACE_DEFINED__ - -/* interface IDVBCLocator */ -/* [unique][helpstring][oleautomation][dual][uuid][nonextensible][hidden][object] */ - - -EXTERN_C const IID IID_IDVBCLocator; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("6E42F36E-1DD2-43c4-9F78-69D25AE39034") - IDVBCLocator : public ILocator - { - public: - }; - -#else /* C style interface */ - - typedef struct IDVBCLocatorVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IDVBCLocator * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IDVBCLocator * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IDVBCLocator * This); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( - IDVBCLocator * This, - /* [out] */ UINT *pctinfo); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( - IDVBCLocator * This, - /* [in] */ UINT iTInfo, - /* [in] */ LCID lcid, - /* [out] */ ITypeInfo **ppTInfo); - - HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( - IDVBCLocator * This, - /* [in] */ REFIID riid, - /* [size_is][in] */ LPOLESTR *rgszNames, - /* [in] */ UINT cNames, - /* [in] */ LCID lcid, - /* [size_is][out] */ DISPID *rgDispId); - - /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( - IDVBCLocator * This, - /* [in] */ DISPID dispIdMember, - /* [in] */ REFIID riid, - /* [in] */ LCID lcid, - /* [in] */ WORD wFlags, - /* [out][in] */ DISPPARAMS *pDispParams, - /* [out] */ VARIANT *pVarResult, - /* [out] */ EXCEPINFO *pExcepInfo, - /* [out] */ UINT *puArgErr); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_CarrierFrequency )( - IDVBCLocator * This, - /* [retval][out] */ long *Frequency); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_CarrierFrequency )( - IDVBCLocator * This, - /* [in] */ long Frequency); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_InnerFEC )( - IDVBCLocator * This, - /* [retval][out] */ FECMethod *FEC); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_InnerFEC )( - IDVBCLocator * This, - /* [in] */ FECMethod FEC); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_InnerFECRate )( - IDVBCLocator * This, - /* [retval][out] */ BinaryConvolutionCodeRate *FEC); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_InnerFECRate )( - IDVBCLocator * This, - /* [in] */ BinaryConvolutionCodeRate FEC); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_OuterFEC )( - IDVBCLocator * This, - /* [retval][out] */ FECMethod *FEC); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_OuterFEC )( - IDVBCLocator * This, - /* [in] */ FECMethod FEC); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_OuterFECRate )( - IDVBCLocator * This, - /* [retval][out] */ BinaryConvolutionCodeRate *FEC); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_OuterFECRate )( - IDVBCLocator * This, - /* [in] */ BinaryConvolutionCodeRate FEC); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Modulation )( - IDVBCLocator * This, - /* [retval][out] */ ModulationType *Modulation); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Modulation )( - IDVBCLocator * This, - /* [in] */ ModulationType Modulation); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_SymbolRate )( - IDVBCLocator * This, - /* [retval][out] */ long *Rate); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_SymbolRate )( - IDVBCLocator * This, - /* [in] */ long Rate); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Clone )( - IDVBCLocator * This, - /* [retval][out] */ ILocator **NewLocator); - - END_INTERFACE - } IDVBCLocatorVtbl; - - interface IDVBCLocator - { - CONST_VTBL struct IDVBCLocatorVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IDVBCLocator_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IDVBCLocator_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IDVBCLocator_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IDVBCLocator_GetTypeInfoCount(This,pctinfo) \ - (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) - -#define IDVBCLocator_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ - (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) - -#define IDVBCLocator_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ - (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) - -#define IDVBCLocator_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ - (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) - - -#define IDVBCLocator_get_CarrierFrequency(This,Frequency) \ - (This)->lpVtbl -> get_CarrierFrequency(This,Frequency) - -#define IDVBCLocator_put_CarrierFrequency(This,Frequency) \ - (This)->lpVtbl -> put_CarrierFrequency(This,Frequency) - -#define IDVBCLocator_get_InnerFEC(This,FEC) \ - (This)->lpVtbl -> get_InnerFEC(This,FEC) - -#define IDVBCLocator_put_InnerFEC(This,FEC) \ - (This)->lpVtbl -> put_InnerFEC(This,FEC) - -#define IDVBCLocator_get_InnerFECRate(This,FEC) \ - (This)->lpVtbl -> get_InnerFECRate(This,FEC) - -#define IDVBCLocator_put_InnerFECRate(This,FEC) \ - (This)->lpVtbl -> put_InnerFECRate(This,FEC) - -#define IDVBCLocator_get_OuterFEC(This,FEC) \ - (This)->lpVtbl -> get_OuterFEC(This,FEC) - -#define IDVBCLocator_put_OuterFEC(This,FEC) \ - (This)->lpVtbl -> put_OuterFEC(This,FEC) - -#define IDVBCLocator_get_OuterFECRate(This,FEC) \ - (This)->lpVtbl -> get_OuterFECRate(This,FEC) - -#define IDVBCLocator_put_OuterFECRate(This,FEC) \ - (This)->lpVtbl -> put_OuterFECRate(This,FEC) - -#define IDVBCLocator_get_Modulation(This,Modulation) \ - (This)->lpVtbl -> get_Modulation(This,Modulation) - -#define IDVBCLocator_put_Modulation(This,Modulation) \ - (This)->lpVtbl -> put_Modulation(This,Modulation) - -#define IDVBCLocator_get_SymbolRate(This,Rate) \ - (This)->lpVtbl -> get_SymbolRate(This,Rate) - -#define IDVBCLocator_put_SymbolRate(This,Rate) \ - (This)->lpVtbl -> put_SymbolRate(This,Rate) - -#define IDVBCLocator_Clone(This,NewLocator) \ - (This)->lpVtbl -> Clone(This,NewLocator) - - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - - -#endif /* __IDVBCLocator_INTERFACE_DEFINED__ */ - - -#ifndef __IBroadcastEvent_INTERFACE_DEFINED__ -#define __IBroadcastEvent_INTERFACE_DEFINED__ - -/* interface IBroadcastEvent */ -/* [unique][helpstring][uuid][nonextensible][hidden][object] */ - - -EXTERN_C const IID IID_IBroadcastEvent; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("3B21263F-26E8-489d-AAC4-924F7EFD9511") - IBroadcastEvent : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE Fire( - GUID EventID) = 0; - - }; - -#else /* C style interface */ - - typedef struct IBroadcastEventVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IBroadcastEvent * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IBroadcastEvent * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IBroadcastEvent * This); - - HRESULT ( STDMETHODCALLTYPE *Fire )( - IBroadcastEvent * This, - GUID EventID); - - END_INTERFACE - } IBroadcastEventVtbl; - - interface IBroadcastEvent - { - CONST_VTBL struct IBroadcastEventVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IBroadcastEvent_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IBroadcastEvent_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IBroadcastEvent_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IBroadcastEvent_Fire(This,EventID) \ - (This)->lpVtbl -> Fire(This,EventID) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IBroadcastEvent_Fire_Proxy( - IBroadcastEvent * This, - GUID EventID); - - -void __RPC_STUB IBroadcastEvent_Fire_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IBroadcastEvent_INTERFACE_DEFINED__ */ - - - -#ifndef __TunerLib_LIBRARY_DEFINED__ -#define __TunerLib_LIBRARY_DEFINED__ - -/* library TunerLib */ -/* [helpstring][version][uuid] */ - -#define SID_SBroadcastEventService CLSID_BroadcastEventService - -EXTERN_C const IID LIBID_TunerLib; - -EXTERN_C const CLSID CLSID_SystemTuningSpaces; - -#ifdef __cplusplus - -class DECLSPEC_UUID("D02AAC50-027E-11d3-9D8E-00C04F72D980") -SystemTuningSpaces; -#endif - -EXTERN_C const CLSID CLSID_TuningSpace; - -#ifdef __cplusplus - -class DECLSPEC_UUID("5FFDC5E6-B83A-4b55-B6E8-C69E765FE9DB") -TuningSpace; -#endif - -EXTERN_C const CLSID CLSID_ATSCTuningSpace; - -#ifdef __cplusplus - -class DECLSPEC_UUID("A2E30750-6C3D-11d3-B653-00C04F79498E") -ATSCTuningSpace; -#endif - -EXTERN_C const CLSID CLSID_AnalogRadioTuningSpace; - -#ifdef __cplusplus - -class DECLSPEC_UUID("8A674B4C-1F63-11d3-B64C-00C04F79498E") -AnalogRadioTuningSpace; -#endif - -EXTERN_C const CLSID CLSID_AuxInTuningSpace; - -#ifdef __cplusplus - -class DECLSPEC_UUID("F9769A06-7ACA-4e39-9CFB-97BB35F0E77E") -AuxInTuningSpace; -#endif - -EXTERN_C const CLSID CLSID_AnalogTVTuningSpace; - -#ifdef __cplusplus - -class DECLSPEC_UUID("8A674B4D-1F63-11d3-B64C-00C04F79498E") -AnalogTVTuningSpace; -#endif - -EXTERN_C const CLSID CLSID_DVBTuningSpace; - -#ifdef __cplusplus - -class DECLSPEC_UUID("C6B14B32-76AA-4a86-A7AC-5C79AAF58DA7") -DVBTuningSpace; -#endif - -EXTERN_C const CLSID CLSID_DVBSTuningSpace; - -#ifdef __cplusplus - -class DECLSPEC_UUID("B64016F3-C9A2-4066-96F0-BD9563314726") -DVBSTuningSpace; -#endif - -EXTERN_C const CLSID CLSID_ComponentTypes; - -#ifdef __cplusplus - -class DECLSPEC_UUID("A1A2B1C4-0E3A-11d3-9D8E-00C04F72D980") -ComponentTypes; -#endif - -EXTERN_C const CLSID CLSID_ComponentType; - -#ifdef __cplusplus - -class DECLSPEC_UUID("823535A0-0318-11d3-9D8E-00C04F72D980") -ComponentType; -#endif - -EXTERN_C const CLSID CLSID_LanguageComponentType; - -#ifdef __cplusplus - -class DECLSPEC_UUID("1BE49F30-0E1B-11d3-9D8E-00C04F72D980") -LanguageComponentType; -#endif - -EXTERN_C const CLSID CLSID_MPEG2ComponentType; - -#ifdef __cplusplus - -class DECLSPEC_UUID("418008F3-CF67-4668-9628-10DC52BE1D08") -MPEG2ComponentType; -#endif - -EXTERN_C const CLSID CLSID_ATSCComponentType; - -#ifdef __cplusplus - -class DECLSPEC_UUID("A8DCF3D5-0780-4ef4-8A83-2CFFAACB8ACE") -ATSCComponentType; -#endif - -EXTERN_C const CLSID CLSID_Components; - -#ifdef __cplusplus - -class DECLSPEC_UUID("809B6661-94C4-49e6-B6EC-3F0F862215AA") -Components; -#endif - -EXTERN_C const CLSID CLSID_Component; - -#ifdef __cplusplus - -class DECLSPEC_UUID("59DC47A8-116C-11d3-9D8E-00C04F72D980") -Component; -#endif - -EXTERN_C const CLSID CLSID_MPEG2Component; - -#ifdef __cplusplus - -class DECLSPEC_UUID("055CB2D7-2969-45cd-914B-76890722F112") -MPEG2Component; -#endif - -EXTERN_C const CLSID CLSID_TuneRequest; - -#ifdef __cplusplus - -class DECLSPEC_UUID("B46E0D38-AB35-4a06-A137-70576B01B39F") -TuneRequest; -#endif - -EXTERN_C const CLSID CLSID_ChannelTuneRequest; - -#ifdef __cplusplus - -class DECLSPEC_UUID("0369B4E5-45B6-11d3-B650-00C04F79498E") -ChannelTuneRequest; -#endif - -EXTERN_C const CLSID CLSID_ATSCChannelTuneRequest; - -#ifdef __cplusplus - -class DECLSPEC_UUID("0369B4E6-45B6-11d3-B650-00C04F79498E") -ATSCChannelTuneRequest; -#endif - -EXTERN_C const CLSID CLSID_MPEG2TuneRequest; - -#ifdef __cplusplus - -class DECLSPEC_UUID("0955AC62-BF2E-4cba-A2B9-A63F772D46CF") -MPEG2TuneRequest; -#endif - -EXTERN_C const CLSID CLSID_MPEG2TuneRequestFactory; - -#ifdef __cplusplus - -class DECLSPEC_UUID("2C63E4EB-4CEA-41b8-919C-E947EA19A77C") -MPEG2TuneRequestFactory; -#endif - -EXTERN_C const CLSID CLSID_Locator; - -#ifdef __cplusplus - -class DECLSPEC_UUID("0888C883-AC4F-4943-B516-2C38D9B34562") -Locator; -#endif - -EXTERN_C const CLSID CLSID_ATSCLocator; - -#ifdef __cplusplus - -class DECLSPEC_UUID("8872FF1B-98FA-4d7a-8D93-C9F1055F85BB") -ATSCLocator; -#endif - -EXTERN_C const CLSID CLSID_DVBTLocator; - -#ifdef __cplusplus - -class DECLSPEC_UUID("9CD64701-BDF3-4d14-8E03-F12983D86664") -DVBTLocator; -#endif - -EXTERN_C const CLSID CLSID_DVBSLocator; - -#ifdef __cplusplus - -class DECLSPEC_UUID("1DF7D126-4050-47f0-A7CF-4C4CA9241333") -DVBSLocator; -#endif - -EXTERN_C const CLSID CLSID_DVBCLocator; - -#ifdef __cplusplus - -class DECLSPEC_UUID("C531D9FD-9685-4028-8B68-6E1232079F1E") -DVBCLocator; -#endif - -EXTERN_C const CLSID CLSID_DVBTuneRequest; - -#ifdef __cplusplus - -class DECLSPEC_UUID("15D6504A-5494-499c-886C-973C9E53B9F1") -DVBTuneRequest; -#endif - -EXTERN_C const CLSID CLSID_CreatePropBagOnRegKey; - -#ifdef __cplusplus - -class DECLSPEC_UUID("8A674B49-1F63-11d3-B64C-00C04F79498E") -CreatePropBagOnRegKey; -#endif - -EXTERN_C const CLSID CLSID_BroadcastEventService; - -#ifdef __cplusplus - -class DECLSPEC_UUID("0B3FFB92-0919-4934-9D5B-619C719D0202") -BroadcastEventService; -#endif -#endif /* __TunerLib_LIBRARY_DEFINED__ */ - -/* Additional Prototypes for ALL interfaces */ - -unsigned long __RPC_USER BSTR_UserSize( unsigned long *, unsigned long , BSTR * ); -unsigned char * __RPC_USER BSTR_UserMarshal( unsigned long *, unsigned char *, BSTR * ); -unsigned char * __RPC_USER BSTR_UserUnmarshal(unsigned long *, unsigned char *, BSTR * ); -void __RPC_USER BSTR_UserFree( unsigned long *, BSTR * ); - -unsigned long __RPC_USER VARIANT_UserSize( unsigned long *, unsigned long , VARIANT * ); -unsigned char * __RPC_USER VARIANT_UserMarshal( unsigned long *, unsigned char *, VARIANT * ); -unsigned char * __RPC_USER VARIANT_UserUnmarshal(unsigned long *, unsigned char *, VARIANT * ); -void __RPC_USER VARIANT_UserFree( unsigned long *, VARIANT * ); - -/* end of Additional Prototypes */ - -#ifdef __cplusplus -} -#endif - -#endif - - + +#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 tuner.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 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 +#endif // __RPCNDR_H_VERSION__ + +#ifndef COM_NO_WINDOWS_H +#include "windows.h" +#include "ole2.h" +#endif /*COM_NO_WINDOWS_H*/ + +#ifndef __tuner_h__ +#define __tuner_h__ + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#pragma once +#endif + +/* Forward Declarations */ + +#ifndef __ITuningSpaces_FWD_DEFINED__ +#define __ITuningSpaces_FWD_DEFINED__ +typedef interface ITuningSpaces ITuningSpaces; +#endif /* __ITuningSpaces_FWD_DEFINED__ */ + + +#ifndef __ITuningSpaceContainer_FWD_DEFINED__ +#define __ITuningSpaceContainer_FWD_DEFINED__ +typedef interface ITuningSpaceContainer ITuningSpaceContainer; +#endif /* __ITuningSpaceContainer_FWD_DEFINED__ */ + + +#ifndef __ITuningSpace_FWD_DEFINED__ +#define __ITuningSpace_FWD_DEFINED__ +typedef interface ITuningSpace ITuningSpace; +#endif /* __ITuningSpace_FWD_DEFINED__ */ + + +#ifndef __IEnumTuningSpaces_FWD_DEFINED__ +#define __IEnumTuningSpaces_FWD_DEFINED__ +typedef interface IEnumTuningSpaces IEnumTuningSpaces; +#endif /* __IEnumTuningSpaces_FWD_DEFINED__ */ + + +#ifndef __IDVBTuningSpace_FWD_DEFINED__ +#define __IDVBTuningSpace_FWD_DEFINED__ +typedef interface IDVBTuningSpace IDVBTuningSpace; +#endif /* __IDVBTuningSpace_FWD_DEFINED__ */ + + +#ifndef __IDVBTuningSpace2_FWD_DEFINED__ +#define __IDVBTuningSpace2_FWD_DEFINED__ +typedef interface IDVBTuningSpace2 IDVBTuningSpace2; +#endif /* __IDVBTuningSpace2_FWD_DEFINED__ */ + + +#ifndef __IDVBSTuningSpace_FWD_DEFINED__ +#define __IDVBSTuningSpace_FWD_DEFINED__ +typedef interface IDVBSTuningSpace IDVBSTuningSpace; +#endif /* __IDVBSTuningSpace_FWD_DEFINED__ */ + + +#ifndef __IAuxInTuningSpace_FWD_DEFINED__ +#define __IAuxInTuningSpace_FWD_DEFINED__ +typedef interface IAuxInTuningSpace IAuxInTuningSpace; +#endif /* __IAuxInTuningSpace_FWD_DEFINED__ */ + + +#ifndef __IAnalogTVTuningSpace_FWD_DEFINED__ +#define __IAnalogTVTuningSpace_FWD_DEFINED__ +typedef interface IAnalogTVTuningSpace IAnalogTVTuningSpace; +#endif /* __IAnalogTVTuningSpace_FWD_DEFINED__ */ + + +#ifndef __IATSCTuningSpace_FWD_DEFINED__ +#define __IATSCTuningSpace_FWD_DEFINED__ +typedef interface IATSCTuningSpace IATSCTuningSpace; +#endif /* __IATSCTuningSpace_FWD_DEFINED__ */ + + +#ifndef __IAnalogRadioTuningSpace_FWD_DEFINED__ +#define __IAnalogRadioTuningSpace_FWD_DEFINED__ +typedef interface IAnalogRadioTuningSpace IAnalogRadioTuningSpace; +#endif /* __IAnalogRadioTuningSpace_FWD_DEFINED__ */ + + +#ifndef __ITuneRequest_FWD_DEFINED__ +#define __ITuneRequest_FWD_DEFINED__ +typedef interface ITuneRequest ITuneRequest; +#endif /* __ITuneRequest_FWD_DEFINED__ */ + + +#ifndef __IChannelTuneRequest_FWD_DEFINED__ +#define __IChannelTuneRequest_FWD_DEFINED__ +typedef interface IChannelTuneRequest IChannelTuneRequest; +#endif /* __IChannelTuneRequest_FWD_DEFINED__ */ + + +#ifndef __IATSCChannelTuneRequest_FWD_DEFINED__ +#define __IATSCChannelTuneRequest_FWD_DEFINED__ +typedef interface IATSCChannelTuneRequest IATSCChannelTuneRequest; +#endif /* __IATSCChannelTuneRequest_FWD_DEFINED__ */ + + +#ifndef __IDVBTuneRequest_FWD_DEFINED__ +#define __IDVBTuneRequest_FWD_DEFINED__ +typedef interface IDVBTuneRequest IDVBTuneRequest; +#endif /* __IDVBTuneRequest_FWD_DEFINED__ */ + + +#ifndef __IMPEG2TuneRequest_FWD_DEFINED__ +#define __IMPEG2TuneRequest_FWD_DEFINED__ +typedef interface IMPEG2TuneRequest IMPEG2TuneRequest; +#endif /* __IMPEG2TuneRequest_FWD_DEFINED__ */ + + +#ifndef __IMPEG2TuneRequestFactory_FWD_DEFINED__ +#define __IMPEG2TuneRequestFactory_FWD_DEFINED__ +typedef interface IMPEG2TuneRequestFactory IMPEG2TuneRequestFactory; +#endif /* __IMPEG2TuneRequestFactory_FWD_DEFINED__ */ + + +#ifndef __IMPEG2TuneRequestSupport_FWD_DEFINED__ +#define __IMPEG2TuneRequestSupport_FWD_DEFINED__ +typedef interface IMPEG2TuneRequestSupport IMPEG2TuneRequestSupport; +#endif /* __IMPEG2TuneRequestSupport_FWD_DEFINED__ */ + + +#ifndef __ITuner_FWD_DEFINED__ +#define __ITuner_FWD_DEFINED__ +typedef interface ITuner ITuner; +#endif /* __ITuner_FWD_DEFINED__ */ + + +#ifndef __IScanningTuner_FWD_DEFINED__ +#define __IScanningTuner_FWD_DEFINED__ +typedef interface IScanningTuner IScanningTuner; +#endif /* __IScanningTuner_FWD_DEFINED__ */ + + +#ifndef __IComponentType_FWD_DEFINED__ +#define __IComponentType_FWD_DEFINED__ +typedef interface IComponentType IComponentType; +#endif /* __IComponentType_FWD_DEFINED__ */ + + +#ifndef __ILanguageComponentType_FWD_DEFINED__ +#define __ILanguageComponentType_FWD_DEFINED__ +typedef interface ILanguageComponentType ILanguageComponentType; +#endif /* __ILanguageComponentType_FWD_DEFINED__ */ + + +#ifndef __IMPEG2ComponentType_FWD_DEFINED__ +#define __IMPEG2ComponentType_FWD_DEFINED__ +typedef interface IMPEG2ComponentType IMPEG2ComponentType; +#endif /* __IMPEG2ComponentType_FWD_DEFINED__ */ + + +#ifndef __IATSCComponentType_FWD_DEFINED__ +#define __IATSCComponentType_FWD_DEFINED__ +typedef interface IATSCComponentType IATSCComponentType; +#endif /* __IATSCComponentType_FWD_DEFINED__ */ + + +#ifndef __IEnumComponentTypes_FWD_DEFINED__ +#define __IEnumComponentTypes_FWD_DEFINED__ +typedef interface IEnumComponentTypes IEnumComponentTypes; +#endif /* __IEnumComponentTypes_FWD_DEFINED__ */ + + +#ifndef __IComponentTypes_FWD_DEFINED__ +#define __IComponentTypes_FWD_DEFINED__ +typedef interface IComponentTypes IComponentTypes; +#endif /* __IComponentTypes_FWD_DEFINED__ */ + + +#ifndef __IComponent_FWD_DEFINED__ +#define __IComponent_FWD_DEFINED__ +typedef interface IComponent IComponent; +#endif /* __IComponent_FWD_DEFINED__ */ + + +#ifndef __IMPEG2Component_FWD_DEFINED__ +#define __IMPEG2Component_FWD_DEFINED__ +typedef interface IMPEG2Component IMPEG2Component; +#endif /* __IMPEG2Component_FWD_DEFINED__ */ + + +#ifndef __IEnumComponents_FWD_DEFINED__ +#define __IEnumComponents_FWD_DEFINED__ +typedef interface IEnumComponents IEnumComponents; +#endif /* __IEnumComponents_FWD_DEFINED__ */ + + +#ifndef __IComponents_FWD_DEFINED__ +#define __IComponents_FWD_DEFINED__ +typedef interface IComponents IComponents; +#endif /* __IComponents_FWD_DEFINED__ */ + + +#ifndef __ILocator_FWD_DEFINED__ +#define __ILocator_FWD_DEFINED__ +typedef interface ILocator ILocator; +#endif /* __ILocator_FWD_DEFINED__ */ + + +#ifndef __IATSCLocator_FWD_DEFINED__ +#define __IATSCLocator_FWD_DEFINED__ +typedef interface IATSCLocator IATSCLocator; +#endif /* __IATSCLocator_FWD_DEFINED__ */ + + +#ifndef __IDVBTLocator_FWD_DEFINED__ +#define __IDVBTLocator_FWD_DEFINED__ +typedef interface IDVBTLocator IDVBTLocator; +#endif /* __IDVBTLocator_FWD_DEFINED__ */ + + +#ifndef __IDVBSLocator_FWD_DEFINED__ +#define __IDVBSLocator_FWD_DEFINED__ +typedef interface IDVBSLocator IDVBSLocator; +#endif /* __IDVBSLocator_FWD_DEFINED__ */ + + +#ifndef __IDVBCLocator_FWD_DEFINED__ +#define __IDVBCLocator_FWD_DEFINED__ +typedef interface IDVBCLocator IDVBCLocator; +#endif /* __IDVBCLocator_FWD_DEFINED__ */ + + +#ifndef __IBroadcastEvent_FWD_DEFINED__ +#define __IBroadcastEvent_FWD_DEFINED__ +typedef interface IBroadcastEvent IBroadcastEvent; +#endif /* __IBroadcastEvent_FWD_DEFINED__ */ + + +#ifndef __SystemTuningSpaces_FWD_DEFINED__ +#define __SystemTuningSpaces_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class SystemTuningSpaces SystemTuningSpaces; +#else +typedef struct SystemTuningSpaces SystemTuningSpaces; +#endif /* __cplusplus */ + +#endif /* __SystemTuningSpaces_FWD_DEFINED__ */ + + +#ifndef __TuningSpace_FWD_DEFINED__ +#define __TuningSpace_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class TuningSpace TuningSpace; +#else +typedef struct TuningSpace TuningSpace; +#endif /* __cplusplus */ + +#endif /* __TuningSpace_FWD_DEFINED__ */ + + +#ifndef __ATSCTuningSpace_FWD_DEFINED__ +#define __ATSCTuningSpace_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class ATSCTuningSpace ATSCTuningSpace; +#else +typedef struct ATSCTuningSpace ATSCTuningSpace; +#endif /* __cplusplus */ + +#endif /* __ATSCTuningSpace_FWD_DEFINED__ */ + + +#ifndef __AnalogRadioTuningSpace_FWD_DEFINED__ +#define __AnalogRadioTuningSpace_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class AnalogRadioTuningSpace AnalogRadioTuningSpace; +#else +typedef struct AnalogRadioTuningSpace AnalogRadioTuningSpace; +#endif /* __cplusplus */ + +#endif /* __AnalogRadioTuningSpace_FWD_DEFINED__ */ + + +#ifndef __AuxInTuningSpace_FWD_DEFINED__ +#define __AuxInTuningSpace_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class AuxInTuningSpace AuxInTuningSpace; +#else +typedef struct AuxInTuningSpace AuxInTuningSpace; +#endif /* __cplusplus */ + +#endif /* __AuxInTuningSpace_FWD_DEFINED__ */ + + +#ifndef __AnalogTVTuningSpace_FWD_DEFINED__ +#define __AnalogTVTuningSpace_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class AnalogTVTuningSpace AnalogTVTuningSpace; +#else +typedef struct AnalogTVTuningSpace AnalogTVTuningSpace; +#endif /* __cplusplus */ + +#endif /* __AnalogTVTuningSpace_FWD_DEFINED__ */ + + +#ifndef __DVBTuningSpace_FWD_DEFINED__ +#define __DVBTuningSpace_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class DVBTuningSpace DVBTuningSpace; +#else +typedef struct DVBTuningSpace DVBTuningSpace; +#endif /* __cplusplus */ + +#endif /* __DVBTuningSpace_FWD_DEFINED__ */ + + +#ifndef __DVBSTuningSpace_FWD_DEFINED__ +#define __DVBSTuningSpace_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class DVBSTuningSpace DVBSTuningSpace; +#else +typedef struct DVBSTuningSpace DVBSTuningSpace; +#endif /* __cplusplus */ + +#endif /* __DVBSTuningSpace_FWD_DEFINED__ */ + + +#ifndef __ComponentTypes_FWD_DEFINED__ +#define __ComponentTypes_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class ComponentTypes ComponentTypes; +#else +typedef struct ComponentTypes ComponentTypes; +#endif /* __cplusplus */ + +#endif /* __ComponentTypes_FWD_DEFINED__ */ + + +#ifndef __ComponentType_FWD_DEFINED__ +#define __ComponentType_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class ComponentType ComponentType; +#else +typedef struct ComponentType ComponentType; +#endif /* __cplusplus */ + +#endif /* __ComponentType_FWD_DEFINED__ */ + + +#ifndef __LanguageComponentType_FWD_DEFINED__ +#define __LanguageComponentType_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class LanguageComponentType LanguageComponentType; +#else +typedef struct LanguageComponentType LanguageComponentType; +#endif /* __cplusplus */ + +#endif /* __LanguageComponentType_FWD_DEFINED__ */ + + +#ifndef __MPEG2ComponentType_FWD_DEFINED__ +#define __MPEG2ComponentType_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class MPEG2ComponentType MPEG2ComponentType; +#else +typedef struct MPEG2ComponentType MPEG2ComponentType; +#endif /* __cplusplus */ + +#endif /* __MPEG2ComponentType_FWD_DEFINED__ */ + + +#ifndef __ATSCComponentType_FWD_DEFINED__ +#define __ATSCComponentType_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class ATSCComponentType ATSCComponentType; +#else +typedef struct ATSCComponentType ATSCComponentType; +#endif /* __cplusplus */ + +#endif /* __ATSCComponentType_FWD_DEFINED__ */ + + +#ifndef __Components_FWD_DEFINED__ +#define __Components_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class Components Components; +#else +typedef struct Components Components; +#endif /* __cplusplus */ + +#endif /* __Components_FWD_DEFINED__ */ + + +#ifndef __Component_FWD_DEFINED__ +#define __Component_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class Component Component; +#else +typedef struct Component Component; +#endif /* __cplusplus */ + +#endif /* __Component_FWD_DEFINED__ */ + + +#ifndef __MPEG2Component_FWD_DEFINED__ +#define __MPEG2Component_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class MPEG2Component MPEG2Component; +#else +typedef struct MPEG2Component MPEG2Component; +#endif /* __cplusplus */ + +#endif /* __MPEG2Component_FWD_DEFINED__ */ + + +#ifndef __TuneRequest_FWD_DEFINED__ +#define __TuneRequest_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class TuneRequest TuneRequest; +#else +typedef struct TuneRequest TuneRequest; +#endif /* __cplusplus */ + +#endif /* __TuneRequest_FWD_DEFINED__ */ + + +#ifndef __ChannelTuneRequest_FWD_DEFINED__ +#define __ChannelTuneRequest_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class ChannelTuneRequest ChannelTuneRequest; +#else +typedef struct ChannelTuneRequest ChannelTuneRequest; +#endif /* __cplusplus */ + +#endif /* __ChannelTuneRequest_FWD_DEFINED__ */ + + +#ifndef __ATSCChannelTuneRequest_FWD_DEFINED__ +#define __ATSCChannelTuneRequest_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class ATSCChannelTuneRequest ATSCChannelTuneRequest; +#else +typedef struct ATSCChannelTuneRequest ATSCChannelTuneRequest; +#endif /* __cplusplus */ + +#endif /* __ATSCChannelTuneRequest_FWD_DEFINED__ */ + + +#ifndef __MPEG2TuneRequest_FWD_DEFINED__ +#define __MPEG2TuneRequest_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class MPEG2TuneRequest MPEG2TuneRequest; +#else +typedef struct MPEG2TuneRequest MPEG2TuneRequest; +#endif /* __cplusplus */ + +#endif /* __MPEG2TuneRequest_FWD_DEFINED__ */ + + +#ifndef __MPEG2TuneRequestFactory_FWD_DEFINED__ +#define __MPEG2TuneRequestFactory_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class MPEG2TuneRequestFactory MPEG2TuneRequestFactory; +#else +typedef struct MPEG2TuneRequestFactory MPEG2TuneRequestFactory; +#endif /* __cplusplus */ + +#endif /* __MPEG2TuneRequestFactory_FWD_DEFINED__ */ + + +#ifndef __Locator_FWD_DEFINED__ +#define __Locator_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class Locator Locator; +#else +typedef struct Locator Locator; +#endif /* __cplusplus */ + +#endif /* __Locator_FWD_DEFINED__ */ + + +#ifndef __ATSCLocator_FWD_DEFINED__ +#define __ATSCLocator_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class ATSCLocator ATSCLocator; +#else +typedef struct ATSCLocator ATSCLocator; +#endif /* __cplusplus */ + +#endif /* __ATSCLocator_FWD_DEFINED__ */ + + +#ifndef __DVBTLocator_FWD_DEFINED__ +#define __DVBTLocator_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class DVBTLocator DVBTLocator; +#else +typedef struct DVBTLocator DVBTLocator; +#endif /* __cplusplus */ + +#endif /* __DVBTLocator_FWD_DEFINED__ */ + + +#ifndef __DVBSLocator_FWD_DEFINED__ +#define __DVBSLocator_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class DVBSLocator DVBSLocator; +#else +typedef struct DVBSLocator DVBSLocator; +#endif /* __cplusplus */ + +#endif /* __DVBSLocator_FWD_DEFINED__ */ + + +#ifndef __DVBCLocator_FWD_DEFINED__ +#define __DVBCLocator_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class DVBCLocator DVBCLocator; +#else +typedef struct DVBCLocator DVBCLocator; +#endif /* __cplusplus */ + +#endif /* __DVBCLocator_FWD_DEFINED__ */ + + +#ifndef __DVBTuneRequest_FWD_DEFINED__ +#define __DVBTuneRequest_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class DVBTuneRequest DVBTuneRequest; +#else +typedef struct DVBTuneRequest DVBTuneRequest; +#endif /* __cplusplus */ + +#endif /* __DVBTuneRequest_FWD_DEFINED__ */ + + +#ifndef __CreatePropBagOnRegKey_FWD_DEFINED__ +#define __CreatePropBagOnRegKey_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class CreatePropBagOnRegKey CreatePropBagOnRegKey; +#else +typedef struct CreatePropBagOnRegKey CreatePropBagOnRegKey; +#endif /* __cplusplus */ + +#endif /* __CreatePropBagOnRegKey_FWD_DEFINED__ */ + + +#ifndef __BroadcastEventService_FWD_DEFINED__ +#define __BroadcastEventService_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class BroadcastEventService BroadcastEventService; +#else +typedef struct BroadcastEventService BroadcastEventService; +#endif /* __cplusplus */ + +#endif /* __BroadcastEventService_FWD_DEFINED__ */ + + +/* header files for imported files */ +#include "oaidl.h" +#include "comcat.h" +#include "strmif.h" +#include "bdatypes.h" +#include "regbag.h" + +#ifdef __cplusplus +extern "C"{ +#endif + +void * __RPC_USER MIDL_user_allocate(size_t); +void __RPC_USER MIDL_user_free( void * ); + +/* interface __MIDL_itf_tuner_0000 */ +/* [local] */ + +//+------------------------------------------------------------------------- +// +// Microsoft Windows +// Copyright (C) Microsoft Corporation, 1999-2000. +// +//-------------------------------------------------------------------------- +#pragma once +#include + + + + + + + + + + + + + + + + + + + + + +enum __MIDL___MIDL_itf_tuner_0000_0001 + { DISPID_TUNER_TS_UNIQUENAME = 1, + DISPID_TUNER_TS_FRIENDLYNAME = 2, + DISPID_TUNER_TS_CLSID = 3, + DISPID_TUNER_TS_NETWORKTYPE = 4, + DISPID_TUNER_TS__NETWORKTYPE = 5, + DISPID_TUNER_TS_CREATETUNEREQUEST = 6, + DISPID_TUNER_TS_ENUMCATEGORYGUIDS = 7, + DISPID_TUNER_TS_ENUMDEVICEMONIKERS = 8, + DISPID_TUNER_TS_DEFAULTPREFERREDCOMPONENTTYPES = 9, + DISPID_TUNER_TS_FREQMAP = 10, + DISPID_TUNER_TS_DEFLOCATOR = 11, + DISPID_TUNER_TS_CLONE = 12, + DISPID_TUNER_TR_TUNINGSPACE = 1, + DISPID_TUNER_TR_COMPONENTS = 2, + DISPID_TUNER_TR_CLONE = 3, + DISPID_TUNER_TR_LOCATOR = 4, + DISPID_TUNER_CT_CATEGORY = 1, + DISPID_TUNER_CT_MEDIAMAJORTYPE = 2, + DISPID_TUNER_CT__MEDIAMAJORTYPE = 3, + DISPID_TUNER_CT_MEDIASUBTYPE = 4, + DISPID_TUNER_CT__MEDIASUBTYPE = 5, + DISPID_TUNER_CT_MEDIAFORMATTYPE = 6, + DISPID_TUNER_CT__MEDIAFORMATTYPE = 7, + DISPID_TUNER_CT_MEDIATYPE = 8, + DISPID_TUNER_CT_CLONE = 9, + DISPID_TUNER_LCT_LANGID = 100, + DISPID_TUNER_MP2CT_TYPE = 200, + DISPID_TUNER_ATSCCT_FLAGS = 300, + DISPID_TUNER_L_CARRFREQ = 1, + DISPID_TUNER_L_INNERFECMETHOD = 2, + DISPID_TUNER_L_INNERFECRATE = 3, + DISPID_TUNER_L_OUTERFECMETHOD = 4, + DISPID_TUNER_L_OUTERFECRATE = 5, + DISPID_TUNER_L_MOD = 6, + DISPID_TUNER_L_SYMRATE = 7, + DISPID_TUNER_L_CLONE = 8, + DISPID_TUNER_L_ATSC_PHYS_CHANNEL = 201, + DISPID_TUNER_L_ATSC_TSID = 202, + DISPID_TUNER_L_DVBT_BANDWIDTH = 301, + DISPID_TUNER_L_DVBT_LPINNERFECMETHOD = 302, + DISPID_TUNER_L_DVBT_LPINNERFECRATE = 303, + DISPID_TUNER_L_DVBT_GUARDINTERVAL = 304, + DISPID_TUNER_L_DVBT_HALPHA = 305, + DISPID_TUNER_L_DVBT_TRANSMISSIONMODE = 306, + DISPID_TUNER_L_DVBT_INUSE = 307, + DISPID_TUNER_L_DVBS_POLARISATION = 401, + DISPID_TUNER_L_DVBS_WEST = 402, + DISPID_TUNER_L_DVBS_ORBITAL = 403, + DISPID_TUNER_L_DVBS_AZIMUTH = 404, + DISPID_TUNER_L_DVBS_ELEVATION = 405, + DISPID_TUNER_C_TYPE = 1, + DISPID_TUNER_C_STATUS = 2, + DISPID_TUNER_C_LANGID = 3, + DISPID_TUNER_C_DESCRIPTION = 4, + DISPID_TUNER_C_CLONE = 5, + DISPID_TUNER_C_MP2_PID = 101, + DISPID_TUNER_C_MP2_PCRPID = 102, + DISPID_TUNER_C_MP2_PROGNO = 103, + DISPID_TUNER_TS_DVB_SYSTEMTYPE = 101, + DISPID_TUNER_TS_DVB2_NETWORK_ID = 102, + DISPID_TUNER_TS_DVBS_LOW_OSC_FREQ = 1001, + DISPID_TUNER_TS_DVBS_HI_OSC_FREQ = 1002, + DISPID_TUNER_TS_DVBS_LNB_SWITCH_FREQ = 1003, + DISPID_TUNER_TS_DVBS_INPUT_RANGE = 1004, + DISPID_TUNER_TS_DVBS_SPECTRAL_INVERSION = 1005, + DISPID_TUNER_TS_AR_MINFREQUENCY = 101, + DISPID_TUNER_TS_AR_MAXFREQUENCY = 102, + DISPID_TUNER_TS_AR_STEP = 103, + DISPID_TUNER_TS_ATV_MINCHANNEL = 101, + DISPID_TUNER_TS_ATV_MAXCHANNEL = 102, + DISPID_TUNER_TS_ATV_INPUTTYPE = 103, + DISPID_TUNER_TS_ATV_COUNTRYCODE = 104, + DISPID_TUNER_TS_ATSC_MINMINORCHANNEL = 201, + DISPID_TUNER_TS_ATSC_MAXMINORCHANNEL = 202, + DISPID_TUNER_TS_ATSC_MINPHYSCHANNEL = 203, + DISPID_TUNER_TS_ATSC_MAXPHYSCHANNEL = 204, + DISPID_CHTUNER_ATVAC_CHANNEL = 101, + DISPID_CHTUNER_ATVDC_SYSTEM = 101, + DISPID_CHTUNER_ATVDC_CONTENT = 102, + DISPID_CHTUNER_CTR_CHANNEL = 101, + DISPID_CHTUNER_ACTR_MINOR_CHANNEL = 201, + DISPID_DVBTUNER_DVBC_ATTRIBUTESVALID = 101, + DISPID_DVBTUNER_DVBC_PID = 102, + DISPID_DVBTUNER_DVBC_TAG = 103, + DISPID_DVBTUNER_DVBC_COMPONENTTYPE = 104, + DISPID_DVBTUNER_ONID = 101, + DISPID_DVBTUNER_TSID = 102, + DISPID_DVBTUNER_SID = 103, + DISPID_MP2TUNER_TSID = 101, + DISPID_MP2TUNER_PROGNO = 102, + DISPID_MP2TUNERFACTORY_CREATETUNEREQUEST = 1 + } ; + + +extern RPC_IF_HANDLE __MIDL_itf_tuner_0000_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_tuner_0000_v0_0_s_ifspec; + +#ifndef __ITuningSpaces_INTERFACE_DEFINED__ +#define __ITuningSpaces_INTERFACE_DEFINED__ + +/* interface ITuningSpaces */ +/* [unique][helpstring][nonextensible][oleautomation][dual][uuid][object] */ + + +EXTERN_C const IID IID_ITuningSpaces; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("901284E4-33FE-4b69-8D63-634A596F3756") + ITuningSpaces : public IDispatch + { + public: + virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_Count( + /* [retval][out] */ long *Count) = 0; + + virtual /* [restricted][hidden][id][propget] */ HRESULT STDMETHODCALLTYPE get__NewEnum( + /* [retval][out] */ IEnumVARIANT **NewEnum) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Item( + /* [in] */ VARIANT varIndex, + /* [retval][out] */ ITuningSpace **TuningSpace) = 0; + + virtual /* [helpstring][restricted][hidden][propget] */ HRESULT STDMETHODCALLTYPE get_EnumTuningSpaces( + /* [retval][out] */ IEnumTuningSpaces **NewEnum) = 0; + + }; + +#else /* C style interface */ + + typedef struct ITuningSpacesVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ITuningSpaces * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ITuningSpaces * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ITuningSpaces * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + ITuningSpaces * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + ITuningSpaces * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + ITuningSpaces * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + ITuningSpaces * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Count )( + ITuningSpaces * This, + /* [retval][out] */ long *Count); + + /* [restricted][hidden][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get__NewEnum )( + ITuningSpaces * This, + /* [retval][out] */ IEnumVARIANT **NewEnum); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Item )( + ITuningSpaces * This, + /* [in] */ VARIANT varIndex, + /* [retval][out] */ ITuningSpace **TuningSpace); + + /* [helpstring][restricted][hidden][propget] */ HRESULT ( STDMETHODCALLTYPE *get_EnumTuningSpaces )( + ITuningSpaces * This, + /* [retval][out] */ IEnumTuningSpaces **NewEnum); + + END_INTERFACE + } ITuningSpacesVtbl; + + interface ITuningSpaces + { + CONST_VTBL struct ITuningSpacesVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ITuningSpaces_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define ITuningSpaces_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define ITuningSpaces_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define ITuningSpaces_GetTypeInfoCount(This,pctinfo) \ + (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) + +#define ITuningSpaces_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) + +#define ITuningSpaces_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) + +#define ITuningSpaces_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) + + +#define ITuningSpaces_get_Count(This,Count) \ + (This)->lpVtbl -> get_Count(This,Count) + +#define ITuningSpaces_get__NewEnum(This,NewEnum) \ + (This)->lpVtbl -> get__NewEnum(This,NewEnum) + +#define ITuningSpaces_get_Item(This,varIndex,TuningSpace) \ + (This)->lpVtbl -> get_Item(This,varIndex,TuningSpace) + +#define ITuningSpaces_get_EnumTuningSpaces(This,NewEnum) \ + (This)->lpVtbl -> get_EnumTuningSpaces(This,NewEnum) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE ITuningSpaces_get_Count_Proxy( + ITuningSpaces * This, + /* [retval][out] */ long *Count); + + +void __RPC_STUB ITuningSpaces_get_Count_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [restricted][hidden][id][propget] */ HRESULT STDMETHODCALLTYPE ITuningSpaces_get__NewEnum_Proxy( + ITuningSpaces * This, + /* [retval][out] */ IEnumVARIANT **NewEnum); + + +void __RPC_STUB ITuningSpaces_get__NewEnum_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE ITuningSpaces_get_Item_Proxy( + ITuningSpaces * This, + /* [in] */ VARIANT varIndex, + /* [retval][out] */ ITuningSpace **TuningSpace); + + +void __RPC_STUB ITuningSpaces_get_Item_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][restricted][hidden][propget] */ HRESULT STDMETHODCALLTYPE ITuningSpaces_get_EnumTuningSpaces_Proxy( + ITuningSpaces * This, + /* [retval][out] */ IEnumTuningSpaces **NewEnum); + + +void __RPC_STUB ITuningSpaces_get_EnumTuningSpaces_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __ITuningSpaces_INTERFACE_DEFINED__ */ + + +#ifndef __ITuningSpaceContainer_INTERFACE_DEFINED__ +#define __ITuningSpaceContainer_INTERFACE_DEFINED__ + +/* interface ITuningSpaceContainer */ +/* [unique][helpstring][nonextensible][hidden][oleautomation][dual][uuid][object] */ + + +EXTERN_C const IID IID_ITuningSpaceContainer; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("5B692E84-E2F1-11d2-9493-00C04F72D980") + ITuningSpaceContainer : public IDispatch + { + public: + virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_Count( + /* [retval][out] */ long *Count) = 0; + + virtual /* [restricted][hidden][id][propget] */ HRESULT STDMETHODCALLTYPE get__NewEnum( + /* [retval][out] */ IEnumVARIANT **NewEnum) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Item( + /* [in] */ VARIANT varIndex, + /* [retval][out] */ ITuningSpace **TuningSpace) = 0; + + virtual /* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE put_Item( + /* [in] */ VARIANT varIndex, + /* [in] */ ITuningSpace *TuningSpace) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE TuningSpacesForCLSID( + /* [in] */ BSTR SpaceCLSID, + /* [retval][out] */ ITuningSpaces **NewColl) = 0; + + virtual /* [helpstring][restricted][hidden] */ HRESULT STDMETHODCALLTYPE _TuningSpacesForCLSID( + /* [in] */ REFCLSID SpaceCLSID, + /* [retval][out] */ ITuningSpaces **NewColl) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE TuningSpacesForName( + /* [in] */ BSTR Name, + /* [retval][out] */ ITuningSpaces **NewColl) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE FindID( + /* [in] */ ITuningSpace *TuningSpace, + /* [retval][out] */ long *ID) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Add( + /* [in] */ ITuningSpace *TuningSpace, + /* [retval][out] */ VARIANT *NewIndex) = 0; + + virtual /* [helpstring][restricted][hidden][propget] */ HRESULT STDMETHODCALLTYPE get_EnumTuningSpaces( + /* [retval][out] */ IEnumTuningSpaces **ppEnum) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Remove( + /* [in] */ VARIANT Index) = 0; + + virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_MaxCount( + /* [retval][out] */ long *MaxCount) = 0; + + virtual /* [helpstring][restricted][hidden][propput] */ HRESULT STDMETHODCALLTYPE put_MaxCount( + /* [in] */ long MaxCount) = 0; + + }; + +#else /* C style interface */ + + typedef struct ITuningSpaceContainerVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ITuningSpaceContainer * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ITuningSpaceContainer * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ITuningSpaceContainer * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + ITuningSpaceContainer * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + ITuningSpaceContainer * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + ITuningSpaceContainer * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + ITuningSpaceContainer * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Count )( + ITuningSpaceContainer * This, + /* [retval][out] */ long *Count); + + /* [restricted][hidden][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get__NewEnum )( + ITuningSpaceContainer * This, + /* [retval][out] */ IEnumVARIANT **NewEnum); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Item )( + ITuningSpaceContainer * This, + /* [in] */ VARIANT varIndex, + /* [retval][out] */ ITuningSpace **TuningSpace); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Item )( + ITuningSpaceContainer * This, + /* [in] */ VARIANT varIndex, + /* [in] */ ITuningSpace *TuningSpace); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *TuningSpacesForCLSID )( + ITuningSpaceContainer * This, + /* [in] */ BSTR SpaceCLSID, + /* [retval][out] */ ITuningSpaces **NewColl); + + /* [helpstring][restricted][hidden] */ HRESULT ( STDMETHODCALLTYPE *_TuningSpacesForCLSID )( + ITuningSpaceContainer * This, + /* [in] */ REFCLSID SpaceCLSID, + /* [retval][out] */ ITuningSpaces **NewColl); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *TuningSpacesForName )( + ITuningSpaceContainer * This, + /* [in] */ BSTR Name, + /* [retval][out] */ ITuningSpaces **NewColl); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *FindID )( + ITuningSpaceContainer * This, + /* [in] */ ITuningSpace *TuningSpace, + /* [retval][out] */ long *ID); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Add )( + ITuningSpaceContainer * This, + /* [in] */ ITuningSpace *TuningSpace, + /* [retval][out] */ VARIANT *NewIndex); + + /* [helpstring][restricted][hidden][propget] */ HRESULT ( STDMETHODCALLTYPE *get_EnumTuningSpaces )( + ITuningSpaceContainer * This, + /* [retval][out] */ IEnumTuningSpaces **ppEnum); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Remove )( + ITuningSpaceContainer * This, + /* [in] */ VARIANT Index); + + /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_MaxCount )( + ITuningSpaceContainer * This, + /* [retval][out] */ long *MaxCount); + + /* [helpstring][restricted][hidden][propput] */ HRESULT ( STDMETHODCALLTYPE *put_MaxCount )( + ITuningSpaceContainer * This, + /* [in] */ long MaxCount); + + END_INTERFACE + } ITuningSpaceContainerVtbl; + + interface ITuningSpaceContainer + { + CONST_VTBL struct ITuningSpaceContainerVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ITuningSpaceContainer_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define ITuningSpaceContainer_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define ITuningSpaceContainer_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define ITuningSpaceContainer_GetTypeInfoCount(This,pctinfo) \ + (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) + +#define ITuningSpaceContainer_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) + +#define ITuningSpaceContainer_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) + +#define ITuningSpaceContainer_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) + + +#define ITuningSpaceContainer_get_Count(This,Count) \ + (This)->lpVtbl -> get_Count(This,Count) + +#define ITuningSpaceContainer_get__NewEnum(This,NewEnum) \ + (This)->lpVtbl -> get__NewEnum(This,NewEnum) + +#define ITuningSpaceContainer_get_Item(This,varIndex,TuningSpace) \ + (This)->lpVtbl -> get_Item(This,varIndex,TuningSpace) + +#define ITuningSpaceContainer_put_Item(This,varIndex,TuningSpace) \ + (This)->lpVtbl -> put_Item(This,varIndex,TuningSpace) + +#define ITuningSpaceContainer_TuningSpacesForCLSID(This,SpaceCLSID,NewColl) \ + (This)->lpVtbl -> TuningSpacesForCLSID(This,SpaceCLSID,NewColl) + +#define ITuningSpaceContainer__TuningSpacesForCLSID(This,SpaceCLSID,NewColl) \ + (This)->lpVtbl -> _TuningSpacesForCLSID(This,SpaceCLSID,NewColl) + +#define ITuningSpaceContainer_TuningSpacesForName(This,Name,NewColl) \ + (This)->lpVtbl -> TuningSpacesForName(This,Name,NewColl) + +#define ITuningSpaceContainer_FindID(This,TuningSpace,ID) \ + (This)->lpVtbl -> FindID(This,TuningSpace,ID) + +#define ITuningSpaceContainer_Add(This,TuningSpace,NewIndex) \ + (This)->lpVtbl -> Add(This,TuningSpace,NewIndex) + +#define ITuningSpaceContainer_get_EnumTuningSpaces(This,ppEnum) \ + (This)->lpVtbl -> get_EnumTuningSpaces(This,ppEnum) + +#define ITuningSpaceContainer_Remove(This,Index) \ + (This)->lpVtbl -> Remove(This,Index) + +#define ITuningSpaceContainer_get_MaxCount(This,MaxCount) \ + (This)->lpVtbl -> get_MaxCount(This,MaxCount) + +#define ITuningSpaceContainer_put_MaxCount(This,MaxCount) \ + (This)->lpVtbl -> put_MaxCount(This,MaxCount) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE ITuningSpaceContainer_get_Count_Proxy( + ITuningSpaceContainer * This, + /* [retval][out] */ long *Count); + + +void __RPC_STUB ITuningSpaceContainer_get_Count_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [restricted][hidden][id][propget] */ HRESULT STDMETHODCALLTYPE ITuningSpaceContainer_get__NewEnum_Proxy( + ITuningSpaceContainer * This, + /* [retval][out] */ IEnumVARIANT **NewEnum); + + +void __RPC_STUB ITuningSpaceContainer_get__NewEnum_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE ITuningSpaceContainer_get_Item_Proxy( + ITuningSpaceContainer * This, + /* [in] */ VARIANT varIndex, + /* [retval][out] */ ITuningSpace **TuningSpace); + + +void __RPC_STUB ITuningSpaceContainer_get_Item_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE ITuningSpaceContainer_put_Item_Proxy( + ITuningSpaceContainer * This, + /* [in] */ VARIANT varIndex, + /* [in] */ ITuningSpace *TuningSpace); + + +void __RPC_STUB ITuningSpaceContainer_put_Item_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE ITuningSpaceContainer_TuningSpacesForCLSID_Proxy( + ITuningSpaceContainer * This, + /* [in] */ BSTR SpaceCLSID, + /* [retval][out] */ ITuningSpaces **NewColl); + + +void __RPC_STUB ITuningSpaceContainer_TuningSpacesForCLSID_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][restricted][hidden] */ HRESULT STDMETHODCALLTYPE ITuningSpaceContainer__TuningSpacesForCLSID_Proxy( + ITuningSpaceContainer * This, + /* [in] */ REFCLSID SpaceCLSID, + /* [retval][out] */ ITuningSpaces **NewColl); + + +void __RPC_STUB ITuningSpaceContainer__TuningSpacesForCLSID_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE ITuningSpaceContainer_TuningSpacesForName_Proxy( + ITuningSpaceContainer * This, + /* [in] */ BSTR Name, + /* [retval][out] */ ITuningSpaces **NewColl); + + +void __RPC_STUB ITuningSpaceContainer_TuningSpacesForName_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE ITuningSpaceContainer_FindID_Proxy( + ITuningSpaceContainer * This, + /* [in] */ ITuningSpace *TuningSpace, + /* [retval][out] */ long *ID); + + +void __RPC_STUB ITuningSpaceContainer_FindID_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE ITuningSpaceContainer_Add_Proxy( + ITuningSpaceContainer * This, + /* [in] */ ITuningSpace *TuningSpace, + /* [retval][out] */ VARIANT *NewIndex); + + +void __RPC_STUB ITuningSpaceContainer_Add_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][restricted][hidden][propget] */ HRESULT STDMETHODCALLTYPE ITuningSpaceContainer_get_EnumTuningSpaces_Proxy( + ITuningSpaceContainer * This, + /* [retval][out] */ IEnumTuningSpaces **ppEnum); + + +void __RPC_STUB ITuningSpaceContainer_get_EnumTuningSpaces_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE ITuningSpaceContainer_Remove_Proxy( + ITuningSpaceContainer * This, + /* [in] */ VARIANT Index); + + +void __RPC_STUB ITuningSpaceContainer_Remove_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE ITuningSpaceContainer_get_MaxCount_Proxy( + ITuningSpaceContainer * This, + /* [retval][out] */ long *MaxCount); + + +void __RPC_STUB ITuningSpaceContainer_get_MaxCount_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][restricted][hidden][propput] */ HRESULT STDMETHODCALLTYPE ITuningSpaceContainer_put_MaxCount_Proxy( + ITuningSpaceContainer * This, + /* [in] */ long MaxCount); + + +void __RPC_STUB ITuningSpaceContainer_put_MaxCount_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __ITuningSpaceContainer_INTERFACE_DEFINED__ */ + + +#ifndef __ITuningSpace_INTERFACE_DEFINED__ +#define __ITuningSpace_INTERFACE_DEFINED__ + +/* interface ITuningSpace */ +/* [unique][helpstring][nonextensible][oleautomation][dual][uuid][object] */ + + +EXTERN_C const IID IID_ITuningSpace; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("061C6E30-E622-11d2-9493-00C04F72D980") + ITuningSpace : public IDispatch + { + public: + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_UniqueName( + /* [retval][out] */ BSTR *Name) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_UniqueName( + /* [in] */ BSTR Name) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_FriendlyName( + /* [retval][out] */ BSTR *Name) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_FriendlyName( + /* [in] */ BSTR Name) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_CLSID( + /* [retval][out] */ BSTR *SpaceCLSID) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_NetworkType( + /* [retval][out] */ BSTR *NetworkTypeGuid) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_NetworkType( + /* [in] */ BSTR NetworkTypeGuid) = 0; + + virtual /* [restricted][hidden][helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get__NetworkType( + /* [retval][out] */ GUID *NetworkTypeGuid) = 0; + + virtual /* [restricted][hidden][helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put__NetworkType( + /* [in] */ REFCLSID NetworkTypeGuid) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE CreateTuneRequest( + /* [retval][out] */ ITuneRequest **TuneRequest) = 0; + + virtual /* [restricted][hidden][id] */ HRESULT STDMETHODCALLTYPE EnumCategoryGUIDs( + /* [retval][out] */ IEnumGUID **ppEnum) = 0; + + virtual /* [restricted][hidden][id] */ HRESULT STDMETHODCALLTYPE EnumDeviceMonikers( + /* [retval][out] */ IEnumMoniker **ppEnum) = 0; + + virtual /* [id][propget] */ HRESULT STDMETHODCALLTYPE get_DefaultPreferredComponentTypes( + /* [retval][out] */ IComponentTypes **ComponentTypes) = 0; + + virtual /* [id][propput] */ HRESULT STDMETHODCALLTYPE put_DefaultPreferredComponentTypes( + /* [in] */ IComponentTypes *NewComponentTypes) = 0; + + virtual /* [id][propget] */ HRESULT STDMETHODCALLTYPE get_FrequencyMapping( + /* [retval][out] */ BSTR *pMapping) = 0; + + virtual /* [id][propput] */ HRESULT STDMETHODCALLTYPE put_FrequencyMapping( + BSTR Mapping) = 0; + + virtual /* [id][propget] */ HRESULT STDMETHODCALLTYPE get_DefaultLocator( + /* [retval][out] */ ILocator **LocatorVal) = 0; + + virtual /* [id][propput] */ HRESULT STDMETHODCALLTYPE put_DefaultLocator( + /* [in] */ ILocator *LocatorVal) = 0; + + virtual HRESULT STDMETHODCALLTYPE Clone( + /* [retval][out] */ ITuningSpace **NewTS) = 0; + + }; + +#else /* C style interface */ + + typedef struct ITuningSpaceVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ITuningSpace * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ITuningSpace * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ITuningSpace * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + ITuningSpace * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + ITuningSpace * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + ITuningSpace * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + ITuningSpace * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_UniqueName )( + ITuningSpace * This, + /* [retval][out] */ BSTR *Name); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_UniqueName )( + ITuningSpace * This, + /* [in] */ BSTR Name); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_FriendlyName )( + ITuningSpace * This, + /* [retval][out] */ BSTR *Name); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_FriendlyName )( + ITuningSpace * This, + /* [in] */ BSTR Name); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_CLSID )( + ITuningSpace * This, + /* [retval][out] */ BSTR *SpaceCLSID); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_NetworkType )( + ITuningSpace * This, + /* [retval][out] */ BSTR *NetworkTypeGuid); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_NetworkType )( + ITuningSpace * This, + /* [in] */ BSTR NetworkTypeGuid); + + /* [restricted][hidden][helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get__NetworkType )( + ITuningSpace * This, + /* [retval][out] */ GUID *NetworkTypeGuid); + + /* [restricted][hidden][helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put__NetworkType )( + ITuningSpace * This, + /* [in] */ REFCLSID NetworkTypeGuid); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *CreateTuneRequest )( + ITuningSpace * This, + /* [retval][out] */ ITuneRequest **TuneRequest); + + /* [restricted][hidden][id] */ HRESULT ( STDMETHODCALLTYPE *EnumCategoryGUIDs )( + ITuningSpace * This, + /* [retval][out] */ IEnumGUID **ppEnum); + + /* [restricted][hidden][id] */ HRESULT ( STDMETHODCALLTYPE *EnumDeviceMonikers )( + ITuningSpace * This, + /* [retval][out] */ IEnumMoniker **ppEnum); + + /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_DefaultPreferredComponentTypes )( + ITuningSpace * This, + /* [retval][out] */ IComponentTypes **ComponentTypes); + + /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_DefaultPreferredComponentTypes )( + ITuningSpace * This, + /* [in] */ IComponentTypes *NewComponentTypes); + + /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_FrequencyMapping )( + ITuningSpace * This, + /* [retval][out] */ BSTR *pMapping); + + /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_FrequencyMapping )( + ITuningSpace * This, + BSTR Mapping); + + /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_DefaultLocator )( + ITuningSpace * This, + /* [retval][out] */ ILocator **LocatorVal); + + /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_DefaultLocator )( + ITuningSpace * This, + /* [in] */ ILocator *LocatorVal); + + HRESULT ( STDMETHODCALLTYPE *Clone )( + ITuningSpace * This, + /* [retval][out] */ ITuningSpace **NewTS); + + END_INTERFACE + } ITuningSpaceVtbl; + + interface ITuningSpace + { + CONST_VTBL struct ITuningSpaceVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ITuningSpace_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define ITuningSpace_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define ITuningSpace_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define ITuningSpace_GetTypeInfoCount(This,pctinfo) \ + (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) + +#define ITuningSpace_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) + +#define ITuningSpace_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) + +#define ITuningSpace_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) + + +#define ITuningSpace_get_UniqueName(This,Name) \ + (This)->lpVtbl -> get_UniqueName(This,Name) + +#define ITuningSpace_put_UniqueName(This,Name) \ + (This)->lpVtbl -> put_UniqueName(This,Name) + +#define ITuningSpace_get_FriendlyName(This,Name) \ + (This)->lpVtbl -> get_FriendlyName(This,Name) + +#define ITuningSpace_put_FriendlyName(This,Name) \ + (This)->lpVtbl -> put_FriendlyName(This,Name) + +#define ITuningSpace_get_CLSID(This,SpaceCLSID) \ + (This)->lpVtbl -> get_CLSID(This,SpaceCLSID) + +#define ITuningSpace_get_NetworkType(This,NetworkTypeGuid) \ + (This)->lpVtbl -> get_NetworkType(This,NetworkTypeGuid) + +#define ITuningSpace_put_NetworkType(This,NetworkTypeGuid) \ + (This)->lpVtbl -> put_NetworkType(This,NetworkTypeGuid) + +#define ITuningSpace_get__NetworkType(This,NetworkTypeGuid) \ + (This)->lpVtbl -> get__NetworkType(This,NetworkTypeGuid) + +#define ITuningSpace_put__NetworkType(This,NetworkTypeGuid) \ + (This)->lpVtbl -> put__NetworkType(This,NetworkTypeGuid) + +#define ITuningSpace_CreateTuneRequest(This,TuneRequest) \ + (This)->lpVtbl -> CreateTuneRequest(This,TuneRequest) + +#define ITuningSpace_EnumCategoryGUIDs(This,ppEnum) \ + (This)->lpVtbl -> EnumCategoryGUIDs(This,ppEnum) + +#define ITuningSpace_EnumDeviceMonikers(This,ppEnum) \ + (This)->lpVtbl -> EnumDeviceMonikers(This,ppEnum) + +#define ITuningSpace_get_DefaultPreferredComponentTypes(This,ComponentTypes) \ + (This)->lpVtbl -> get_DefaultPreferredComponentTypes(This,ComponentTypes) + +#define ITuningSpace_put_DefaultPreferredComponentTypes(This,NewComponentTypes) \ + (This)->lpVtbl -> put_DefaultPreferredComponentTypes(This,NewComponentTypes) + +#define ITuningSpace_get_FrequencyMapping(This,pMapping) \ + (This)->lpVtbl -> get_FrequencyMapping(This,pMapping) + +#define ITuningSpace_put_FrequencyMapping(This,Mapping) \ + (This)->lpVtbl -> put_FrequencyMapping(This,Mapping) + +#define ITuningSpace_get_DefaultLocator(This,LocatorVal) \ + (This)->lpVtbl -> get_DefaultLocator(This,LocatorVal) + +#define ITuningSpace_put_DefaultLocator(This,LocatorVal) \ + (This)->lpVtbl -> put_DefaultLocator(This,LocatorVal) + +#define ITuningSpace_Clone(This,NewTS) \ + (This)->lpVtbl -> Clone(This,NewTS) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE ITuningSpace_get_UniqueName_Proxy( + ITuningSpace * This, + /* [retval][out] */ BSTR *Name); + + +void __RPC_STUB ITuningSpace_get_UniqueName_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE ITuningSpace_put_UniqueName_Proxy( + ITuningSpace * This, + /* [in] */ BSTR Name); + + +void __RPC_STUB ITuningSpace_put_UniqueName_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE ITuningSpace_get_FriendlyName_Proxy( + ITuningSpace * This, + /* [retval][out] */ BSTR *Name); + + +void __RPC_STUB ITuningSpace_get_FriendlyName_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE ITuningSpace_put_FriendlyName_Proxy( + ITuningSpace * This, + /* [in] */ BSTR Name); + + +void __RPC_STUB ITuningSpace_put_FriendlyName_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE ITuningSpace_get_CLSID_Proxy( + ITuningSpace * This, + /* [retval][out] */ BSTR *SpaceCLSID); + + +void __RPC_STUB ITuningSpace_get_CLSID_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE ITuningSpace_get_NetworkType_Proxy( + ITuningSpace * This, + /* [retval][out] */ BSTR *NetworkTypeGuid); + + +void __RPC_STUB ITuningSpace_get_NetworkType_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE ITuningSpace_put_NetworkType_Proxy( + ITuningSpace * This, + /* [in] */ BSTR NetworkTypeGuid); + + +void __RPC_STUB ITuningSpace_put_NetworkType_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [restricted][hidden][helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE ITuningSpace_get__NetworkType_Proxy( + ITuningSpace * This, + /* [retval][out] */ GUID *NetworkTypeGuid); + + +void __RPC_STUB ITuningSpace_get__NetworkType_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [restricted][hidden][helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE ITuningSpace_put__NetworkType_Proxy( + ITuningSpace * This, + /* [in] */ REFCLSID NetworkTypeGuid); + + +void __RPC_STUB ITuningSpace_put__NetworkType_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE ITuningSpace_CreateTuneRequest_Proxy( + ITuningSpace * This, + /* [retval][out] */ ITuneRequest **TuneRequest); + + +void __RPC_STUB ITuningSpace_CreateTuneRequest_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [restricted][hidden][id] */ HRESULT STDMETHODCALLTYPE ITuningSpace_EnumCategoryGUIDs_Proxy( + ITuningSpace * This, + /* [retval][out] */ IEnumGUID **ppEnum); + + +void __RPC_STUB ITuningSpace_EnumCategoryGUIDs_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [restricted][hidden][id] */ HRESULT STDMETHODCALLTYPE ITuningSpace_EnumDeviceMonikers_Proxy( + ITuningSpace * This, + /* [retval][out] */ IEnumMoniker **ppEnum); + + +void __RPC_STUB ITuningSpace_EnumDeviceMonikers_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][propget] */ HRESULT STDMETHODCALLTYPE ITuningSpace_get_DefaultPreferredComponentTypes_Proxy( + ITuningSpace * This, + /* [retval][out] */ IComponentTypes **ComponentTypes); + + +void __RPC_STUB ITuningSpace_get_DefaultPreferredComponentTypes_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][propput] */ HRESULT STDMETHODCALLTYPE ITuningSpace_put_DefaultPreferredComponentTypes_Proxy( + ITuningSpace * This, + /* [in] */ IComponentTypes *NewComponentTypes); + + +void __RPC_STUB ITuningSpace_put_DefaultPreferredComponentTypes_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][propget] */ HRESULT STDMETHODCALLTYPE ITuningSpace_get_FrequencyMapping_Proxy( + ITuningSpace * This, + /* [retval][out] */ BSTR *pMapping); + + +void __RPC_STUB ITuningSpace_get_FrequencyMapping_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][propput] */ HRESULT STDMETHODCALLTYPE ITuningSpace_put_FrequencyMapping_Proxy( + ITuningSpace * This, + BSTR Mapping); + + +void __RPC_STUB ITuningSpace_put_FrequencyMapping_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][propget] */ HRESULT STDMETHODCALLTYPE ITuningSpace_get_DefaultLocator_Proxy( + ITuningSpace * This, + /* [retval][out] */ ILocator **LocatorVal); + + +void __RPC_STUB ITuningSpace_get_DefaultLocator_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [id][propput] */ HRESULT STDMETHODCALLTYPE ITuningSpace_put_DefaultLocator_Proxy( + ITuningSpace * This, + /* [in] */ ILocator *LocatorVal); + + +void __RPC_STUB ITuningSpace_put_DefaultLocator_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ITuningSpace_Clone_Proxy( + ITuningSpace * This, + /* [retval][out] */ ITuningSpace **NewTS); + + +void __RPC_STUB ITuningSpace_Clone_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __ITuningSpace_INTERFACE_DEFINED__ */ + + +#ifndef __IEnumTuningSpaces_INTERFACE_DEFINED__ +#define __IEnumTuningSpaces_INTERFACE_DEFINED__ + +/* interface IEnumTuningSpaces */ +/* [unique][uuid][object][restricted][hidden] */ + + +EXTERN_C const IID IID_IEnumTuningSpaces; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("8B8EB248-FC2B-11d2-9D8C-00C04F72D980") + IEnumTuningSpaces : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE Next( + /* [in] */ ULONG celt, + /* [length_is][size_is][out] */ ITuningSpace **rgelt, + /* [out] */ ULONG *pceltFetched) = 0; + + virtual HRESULT STDMETHODCALLTYPE Skip( + /* [in] */ ULONG celt) = 0; + + virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE Clone( + /* [out] */ IEnumTuningSpaces **ppEnum) = 0; + + }; + +#else /* C style interface */ + + typedef struct IEnumTuningSpacesVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IEnumTuningSpaces * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IEnumTuningSpaces * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IEnumTuningSpaces * This); + + HRESULT ( STDMETHODCALLTYPE *Next )( + IEnumTuningSpaces * This, + /* [in] */ ULONG celt, + /* [length_is][size_is][out] */ ITuningSpace **rgelt, + /* [out] */ ULONG *pceltFetched); + + HRESULT ( STDMETHODCALLTYPE *Skip )( + IEnumTuningSpaces * This, + /* [in] */ ULONG celt); + + HRESULT ( STDMETHODCALLTYPE *Reset )( + IEnumTuningSpaces * This); + + HRESULT ( STDMETHODCALLTYPE *Clone )( + IEnumTuningSpaces * This, + /* [out] */ IEnumTuningSpaces **ppEnum); + + END_INTERFACE + } IEnumTuningSpacesVtbl; + + interface IEnumTuningSpaces + { + CONST_VTBL struct IEnumTuningSpacesVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IEnumTuningSpaces_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IEnumTuningSpaces_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IEnumTuningSpaces_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IEnumTuningSpaces_Next(This,celt,rgelt,pceltFetched) \ + (This)->lpVtbl -> Next(This,celt,rgelt,pceltFetched) + +#define IEnumTuningSpaces_Skip(This,celt) \ + (This)->lpVtbl -> Skip(This,celt) + +#define IEnumTuningSpaces_Reset(This) \ + (This)->lpVtbl -> Reset(This) + +#define IEnumTuningSpaces_Clone(This,ppEnum) \ + (This)->lpVtbl -> Clone(This,ppEnum) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IEnumTuningSpaces_Next_Proxy( + IEnumTuningSpaces * This, + /* [in] */ ULONG celt, + /* [length_is][size_is][out] */ ITuningSpace **rgelt, + /* [out] */ ULONG *pceltFetched); + + +void __RPC_STUB IEnumTuningSpaces_Next_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IEnumTuningSpaces_Skip_Proxy( + IEnumTuningSpaces * This, + /* [in] */ ULONG celt); + + +void __RPC_STUB IEnumTuningSpaces_Skip_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IEnumTuningSpaces_Reset_Proxy( + IEnumTuningSpaces * This); + + +void __RPC_STUB IEnumTuningSpaces_Reset_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IEnumTuningSpaces_Clone_Proxy( + IEnumTuningSpaces * This, + /* [out] */ IEnumTuningSpaces **ppEnum); + + +void __RPC_STUB IEnumTuningSpaces_Clone_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IEnumTuningSpaces_INTERFACE_DEFINED__ */ + + +#ifndef __IDVBTuningSpace_INTERFACE_DEFINED__ +#define __IDVBTuningSpace_INTERFACE_DEFINED__ + +/* interface IDVBTuningSpace */ +/* [unique][uuid][nonextensible][oleautomation][dual][hidden][object] */ + + +EXTERN_C const IID IID_IDVBTuningSpace; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("ADA0B268-3B19-4e5b-ACC4-49F852BE13BA") + IDVBTuningSpace : public ITuningSpace + { + public: + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_SystemType( + /* [retval][out] */ DVBSystemType *SysType) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_SystemType( + /* [in] */ DVBSystemType SysType) = 0; + + }; + +#else /* C style interface */ + + typedef struct IDVBTuningSpaceVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDVBTuningSpace * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDVBTuningSpace * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDVBTuningSpace * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IDVBTuningSpace * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IDVBTuningSpace * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IDVBTuningSpace * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IDVBTuningSpace * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_UniqueName )( + IDVBTuningSpace * This, + /* [retval][out] */ BSTR *Name); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_UniqueName )( + IDVBTuningSpace * This, + /* [in] */ BSTR Name); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_FriendlyName )( + IDVBTuningSpace * This, + /* [retval][out] */ BSTR *Name); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_FriendlyName )( + IDVBTuningSpace * This, + /* [in] */ BSTR Name); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_CLSID )( + IDVBTuningSpace * This, + /* [retval][out] */ BSTR *SpaceCLSID); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_NetworkType )( + IDVBTuningSpace * This, + /* [retval][out] */ BSTR *NetworkTypeGuid); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_NetworkType )( + IDVBTuningSpace * This, + /* [in] */ BSTR NetworkTypeGuid); + + /* [restricted][hidden][helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get__NetworkType )( + IDVBTuningSpace * This, + /* [retval][out] */ GUID *NetworkTypeGuid); + + /* [restricted][hidden][helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put__NetworkType )( + IDVBTuningSpace * This, + /* [in] */ REFCLSID NetworkTypeGuid); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *CreateTuneRequest )( + IDVBTuningSpace * This, + /* [retval][out] */ ITuneRequest **TuneRequest); + + /* [restricted][hidden][id] */ HRESULT ( STDMETHODCALLTYPE *EnumCategoryGUIDs )( + IDVBTuningSpace * This, + /* [retval][out] */ IEnumGUID **ppEnum); + + /* [restricted][hidden][id] */ HRESULT ( STDMETHODCALLTYPE *EnumDeviceMonikers )( + IDVBTuningSpace * This, + /* [retval][out] */ IEnumMoniker **ppEnum); + + /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_DefaultPreferredComponentTypes )( + IDVBTuningSpace * This, + /* [retval][out] */ IComponentTypes **ComponentTypes); + + /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_DefaultPreferredComponentTypes )( + IDVBTuningSpace * This, + /* [in] */ IComponentTypes *NewComponentTypes); + + /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_FrequencyMapping )( + IDVBTuningSpace * This, + /* [retval][out] */ BSTR *pMapping); + + /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_FrequencyMapping )( + IDVBTuningSpace * This, + BSTR Mapping); + + /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_DefaultLocator )( + IDVBTuningSpace * This, + /* [retval][out] */ ILocator **LocatorVal); + + /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_DefaultLocator )( + IDVBTuningSpace * This, + /* [in] */ ILocator *LocatorVal); + + HRESULT ( STDMETHODCALLTYPE *Clone )( + IDVBTuningSpace * This, + /* [retval][out] */ ITuningSpace **NewTS); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_SystemType )( + IDVBTuningSpace * This, + /* [retval][out] */ DVBSystemType *SysType); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_SystemType )( + IDVBTuningSpace * This, + /* [in] */ DVBSystemType SysType); + + END_INTERFACE + } IDVBTuningSpaceVtbl; + + interface IDVBTuningSpace + { + CONST_VTBL struct IDVBTuningSpaceVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDVBTuningSpace_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IDVBTuningSpace_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IDVBTuningSpace_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IDVBTuningSpace_GetTypeInfoCount(This,pctinfo) \ + (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) + +#define IDVBTuningSpace_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) + +#define IDVBTuningSpace_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) + +#define IDVBTuningSpace_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) + + +#define IDVBTuningSpace_get_UniqueName(This,Name) \ + (This)->lpVtbl -> get_UniqueName(This,Name) + +#define IDVBTuningSpace_put_UniqueName(This,Name) \ + (This)->lpVtbl -> put_UniqueName(This,Name) + +#define IDVBTuningSpace_get_FriendlyName(This,Name) \ + (This)->lpVtbl -> get_FriendlyName(This,Name) + +#define IDVBTuningSpace_put_FriendlyName(This,Name) \ + (This)->lpVtbl -> put_FriendlyName(This,Name) + +#define IDVBTuningSpace_get_CLSID(This,SpaceCLSID) \ + (This)->lpVtbl -> get_CLSID(This,SpaceCLSID) + +#define IDVBTuningSpace_get_NetworkType(This,NetworkTypeGuid) \ + (This)->lpVtbl -> get_NetworkType(This,NetworkTypeGuid) + +#define IDVBTuningSpace_put_NetworkType(This,NetworkTypeGuid) \ + (This)->lpVtbl -> put_NetworkType(This,NetworkTypeGuid) + +#define IDVBTuningSpace_get__NetworkType(This,NetworkTypeGuid) \ + (This)->lpVtbl -> get__NetworkType(This,NetworkTypeGuid) + +#define IDVBTuningSpace_put__NetworkType(This,NetworkTypeGuid) \ + (This)->lpVtbl -> put__NetworkType(This,NetworkTypeGuid) + +#define IDVBTuningSpace_CreateTuneRequest(This,TuneRequest) \ + (This)->lpVtbl -> CreateTuneRequest(This,TuneRequest) + +#define IDVBTuningSpace_EnumCategoryGUIDs(This,ppEnum) \ + (This)->lpVtbl -> EnumCategoryGUIDs(This,ppEnum) + +#define IDVBTuningSpace_EnumDeviceMonikers(This,ppEnum) \ + (This)->lpVtbl -> EnumDeviceMonikers(This,ppEnum) + +#define IDVBTuningSpace_get_DefaultPreferredComponentTypes(This,ComponentTypes) \ + (This)->lpVtbl -> get_DefaultPreferredComponentTypes(This,ComponentTypes) + +#define IDVBTuningSpace_put_DefaultPreferredComponentTypes(This,NewComponentTypes) \ + (This)->lpVtbl -> put_DefaultPreferredComponentTypes(This,NewComponentTypes) + +#define IDVBTuningSpace_get_FrequencyMapping(This,pMapping) \ + (This)->lpVtbl -> get_FrequencyMapping(This,pMapping) + +#define IDVBTuningSpace_put_FrequencyMapping(This,Mapping) \ + (This)->lpVtbl -> put_FrequencyMapping(This,Mapping) + +#define IDVBTuningSpace_get_DefaultLocator(This,LocatorVal) \ + (This)->lpVtbl -> get_DefaultLocator(This,LocatorVal) + +#define IDVBTuningSpace_put_DefaultLocator(This,LocatorVal) \ + (This)->lpVtbl -> put_DefaultLocator(This,LocatorVal) + +#define IDVBTuningSpace_Clone(This,NewTS) \ + (This)->lpVtbl -> Clone(This,NewTS) + + +#define IDVBTuningSpace_get_SystemType(This,SysType) \ + (This)->lpVtbl -> get_SystemType(This,SysType) + +#define IDVBTuningSpace_put_SystemType(This,SysType) \ + (This)->lpVtbl -> put_SystemType(This,SysType) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDVBTuningSpace_get_SystemType_Proxy( + IDVBTuningSpace * This, + /* [retval][out] */ DVBSystemType *SysType); + + +void __RPC_STUB IDVBTuningSpace_get_SystemType_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDVBTuningSpace_put_SystemType_Proxy( + IDVBTuningSpace * This, + /* [in] */ DVBSystemType SysType); + + +void __RPC_STUB IDVBTuningSpace_put_SystemType_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IDVBTuningSpace_INTERFACE_DEFINED__ */ + + +#ifndef __IDVBTuningSpace2_INTERFACE_DEFINED__ +#define __IDVBTuningSpace2_INTERFACE_DEFINED__ + +/* interface IDVBTuningSpace2 */ +/* [unique][uuid][nonextensible][oleautomation][dual][hidden][object] */ + + +EXTERN_C const IID IID_IDVBTuningSpace2; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("843188B4-CE62-43db-966B-8145A094E040") + IDVBTuningSpace2 : public IDVBTuningSpace + { + public: + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_NetworkID( + /* [retval][out] */ long *NetworkID) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_NetworkID( + /* [in] */ long NetworkID) = 0; + + }; + +#else /* C style interface */ + + typedef struct IDVBTuningSpace2Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDVBTuningSpace2 * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDVBTuningSpace2 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDVBTuningSpace2 * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IDVBTuningSpace2 * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IDVBTuningSpace2 * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IDVBTuningSpace2 * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IDVBTuningSpace2 * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_UniqueName )( + IDVBTuningSpace2 * This, + /* [retval][out] */ BSTR *Name); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_UniqueName )( + IDVBTuningSpace2 * This, + /* [in] */ BSTR Name); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_FriendlyName )( + IDVBTuningSpace2 * This, + /* [retval][out] */ BSTR *Name); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_FriendlyName )( + IDVBTuningSpace2 * This, + /* [in] */ BSTR Name); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_CLSID )( + IDVBTuningSpace2 * This, + /* [retval][out] */ BSTR *SpaceCLSID); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_NetworkType )( + IDVBTuningSpace2 * This, + /* [retval][out] */ BSTR *NetworkTypeGuid); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_NetworkType )( + IDVBTuningSpace2 * This, + /* [in] */ BSTR NetworkTypeGuid); + + /* [restricted][hidden][helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get__NetworkType )( + IDVBTuningSpace2 * This, + /* [retval][out] */ GUID *NetworkTypeGuid); + + /* [restricted][hidden][helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put__NetworkType )( + IDVBTuningSpace2 * This, + /* [in] */ REFCLSID NetworkTypeGuid); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *CreateTuneRequest )( + IDVBTuningSpace2 * This, + /* [retval][out] */ ITuneRequest **TuneRequest); + + /* [restricted][hidden][id] */ HRESULT ( STDMETHODCALLTYPE *EnumCategoryGUIDs )( + IDVBTuningSpace2 * This, + /* [retval][out] */ IEnumGUID **ppEnum); + + /* [restricted][hidden][id] */ HRESULT ( STDMETHODCALLTYPE *EnumDeviceMonikers )( + IDVBTuningSpace2 * This, + /* [retval][out] */ IEnumMoniker **ppEnum); + + /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_DefaultPreferredComponentTypes )( + IDVBTuningSpace2 * This, + /* [retval][out] */ IComponentTypes **ComponentTypes); + + /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_DefaultPreferredComponentTypes )( + IDVBTuningSpace2 * This, + /* [in] */ IComponentTypes *NewComponentTypes); + + /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_FrequencyMapping )( + IDVBTuningSpace2 * This, + /* [retval][out] */ BSTR *pMapping); + + /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_FrequencyMapping )( + IDVBTuningSpace2 * This, + BSTR Mapping); + + /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_DefaultLocator )( + IDVBTuningSpace2 * This, + /* [retval][out] */ ILocator **LocatorVal); + + /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_DefaultLocator )( + IDVBTuningSpace2 * This, + /* [in] */ ILocator *LocatorVal); + + HRESULT ( STDMETHODCALLTYPE *Clone )( + IDVBTuningSpace2 * This, + /* [retval][out] */ ITuningSpace **NewTS); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_SystemType )( + IDVBTuningSpace2 * This, + /* [retval][out] */ DVBSystemType *SysType); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_SystemType )( + IDVBTuningSpace2 * This, + /* [in] */ DVBSystemType SysType); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_NetworkID )( + IDVBTuningSpace2 * This, + /* [retval][out] */ long *NetworkID); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_NetworkID )( + IDVBTuningSpace2 * This, + /* [in] */ long NetworkID); + + END_INTERFACE + } IDVBTuningSpace2Vtbl; + + interface IDVBTuningSpace2 + { + CONST_VTBL struct IDVBTuningSpace2Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDVBTuningSpace2_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IDVBTuningSpace2_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IDVBTuningSpace2_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IDVBTuningSpace2_GetTypeInfoCount(This,pctinfo) \ + (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) + +#define IDVBTuningSpace2_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) + +#define IDVBTuningSpace2_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) + +#define IDVBTuningSpace2_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) + + +#define IDVBTuningSpace2_get_UniqueName(This,Name) \ + (This)->lpVtbl -> get_UniqueName(This,Name) + +#define IDVBTuningSpace2_put_UniqueName(This,Name) \ + (This)->lpVtbl -> put_UniqueName(This,Name) + +#define IDVBTuningSpace2_get_FriendlyName(This,Name) \ + (This)->lpVtbl -> get_FriendlyName(This,Name) + +#define IDVBTuningSpace2_put_FriendlyName(This,Name) \ + (This)->lpVtbl -> put_FriendlyName(This,Name) + +#define IDVBTuningSpace2_get_CLSID(This,SpaceCLSID) \ + (This)->lpVtbl -> get_CLSID(This,SpaceCLSID) + +#define IDVBTuningSpace2_get_NetworkType(This,NetworkTypeGuid) \ + (This)->lpVtbl -> get_NetworkType(This,NetworkTypeGuid) + +#define IDVBTuningSpace2_put_NetworkType(This,NetworkTypeGuid) \ + (This)->lpVtbl -> put_NetworkType(This,NetworkTypeGuid) + +#define IDVBTuningSpace2_get__NetworkType(This,NetworkTypeGuid) \ + (This)->lpVtbl -> get__NetworkType(This,NetworkTypeGuid) + +#define IDVBTuningSpace2_put__NetworkType(This,NetworkTypeGuid) \ + (This)->lpVtbl -> put__NetworkType(This,NetworkTypeGuid) + +#define IDVBTuningSpace2_CreateTuneRequest(This,TuneRequest) \ + (This)->lpVtbl -> CreateTuneRequest(This,TuneRequest) + +#define IDVBTuningSpace2_EnumCategoryGUIDs(This,ppEnum) \ + (This)->lpVtbl -> EnumCategoryGUIDs(This,ppEnum) + +#define IDVBTuningSpace2_EnumDeviceMonikers(This,ppEnum) \ + (This)->lpVtbl -> EnumDeviceMonikers(This,ppEnum) + +#define IDVBTuningSpace2_get_DefaultPreferredComponentTypes(This,ComponentTypes) \ + (This)->lpVtbl -> get_DefaultPreferredComponentTypes(This,ComponentTypes) + +#define IDVBTuningSpace2_put_DefaultPreferredComponentTypes(This,NewComponentTypes) \ + (This)->lpVtbl -> put_DefaultPreferredComponentTypes(This,NewComponentTypes) + +#define IDVBTuningSpace2_get_FrequencyMapping(This,pMapping) \ + (This)->lpVtbl -> get_FrequencyMapping(This,pMapping) + +#define IDVBTuningSpace2_put_FrequencyMapping(This,Mapping) \ + (This)->lpVtbl -> put_FrequencyMapping(This,Mapping) + +#define IDVBTuningSpace2_get_DefaultLocator(This,LocatorVal) \ + (This)->lpVtbl -> get_DefaultLocator(This,LocatorVal) + +#define IDVBTuningSpace2_put_DefaultLocator(This,LocatorVal) \ + (This)->lpVtbl -> put_DefaultLocator(This,LocatorVal) + +#define IDVBTuningSpace2_Clone(This,NewTS) \ + (This)->lpVtbl -> Clone(This,NewTS) + + +#define IDVBTuningSpace2_get_SystemType(This,SysType) \ + (This)->lpVtbl -> get_SystemType(This,SysType) + +#define IDVBTuningSpace2_put_SystemType(This,SysType) \ + (This)->lpVtbl -> put_SystemType(This,SysType) + + +#define IDVBTuningSpace2_get_NetworkID(This,NetworkID) \ + (This)->lpVtbl -> get_NetworkID(This,NetworkID) + +#define IDVBTuningSpace2_put_NetworkID(This,NetworkID) \ + (This)->lpVtbl -> put_NetworkID(This,NetworkID) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDVBTuningSpace2_get_NetworkID_Proxy( + IDVBTuningSpace2 * This, + /* [retval][out] */ long *NetworkID); + + +void __RPC_STUB IDVBTuningSpace2_get_NetworkID_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDVBTuningSpace2_put_NetworkID_Proxy( + IDVBTuningSpace2 * This, + /* [in] */ long NetworkID); + + +void __RPC_STUB IDVBTuningSpace2_put_NetworkID_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IDVBTuningSpace2_INTERFACE_DEFINED__ */ + + +#ifndef __IDVBSTuningSpace_INTERFACE_DEFINED__ +#define __IDVBSTuningSpace_INTERFACE_DEFINED__ + +/* interface IDVBSTuningSpace */ +/* [unique][uuid][nonextensible][oleautomation][dual][hidden][object] */ + + +EXTERN_C const IID IID_IDVBSTuningSpace; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("CDF7BE60-D954-42fd-A972-78971958E470") + IDVBSTuningSpace : public IDVBTuningSpace2 + { + public: + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_LowOscillator( + /* [retval][out] */ long *LowOscillator) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_LowOscillator( + /* [in] */ long LowOscillator) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_HighOscillator( + /* [retval][out] */ long *HighOscillator) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_HighOscillator( + /* [in] */ long HighOscillator) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_LNBSwitch( + /* [retval][out] */ long *LNBSwitch) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_LNBSwitch( + /* [in] */ long LNBSwitch) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_InputRange( + /* [retval][out] */ BSTR *InputRange) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_InputRange( + /* [in] */ BSTR InputRange) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_SpectralInversion( + /* [retval][out] */ SpectralInversion *SpectralInversionVal) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_SpectralInversion( + /* [in] */ SpectralInversion SpectralInversionVal) = 0; + + }; + +#else /* C style interface */ + + typedef struct IDVBSTuningSpaceVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDVBSTuningSpace * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDVBSTuningSpace * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDVBSTuningSpace * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IDVBSTuningSpace * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IDVBSTuningSpace * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IDVBSTuningSpace * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IDVBSTuningSpace * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_UniqueName )( + IDVBSTuningSpace * This, + /* [retval][out] */ BSTR *Name); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_UniqueName )( + IDVBSTuningSpace * This, + /* [in] */ BSTR Name); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_FriendlyName )( + IDVBSTuningSpace * This, + /* [retval][out] */ BSTR *Name); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_FriendlyName )( + IDVBSTuningSpace * This, + /* [in] */ BSTR Name); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_CLSID )( + IDVBSTuningSpace * This, + /* [retval][out] */ BSTR *SpaceCLSID); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_NetworkType )( + IDVBSTuningSpace * This, + /* [retval][out] */ BSTR *NetworkTypeGuid); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_NetworkType )( + IDVBSTuningSpace * This, + /* [in] */ BSTR NetworkTypeGuid); + + /* [restricted][hidden][helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get__NetworkType )( + IDVBSTuningSpace * This, + /* [retval][out] */ GUID *NetworkTypeGuid); + + /* [restricted][hidden][helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put__NetworkType )( + IDVBSTuningSpace * This, + /* [in] */ REFCLSID NetworkTypeGuid); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *CreateTuneRequest )( + IDVBSTuningSpace * This, + /* [retval][out] */ ITuneRequest **TuneRequest); + + /* [restricted][hidden][id] */ HRESULT ( STDMETHODCALLTYPE *EnumCategoryGUIDs )( + IDVBSTuningSpace * This, + /* [retval][out] */ IEnumGUID **ppEnum); + + /* [restricted][hidden][id] */ HRESULT ( STDMETHODCALLTYPE *EnumDeviceMonikers )( + IDVBSTuningSpace * This, + /* [retval][out] */ IEnumMoniker **ppEnum); + + /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_DefaultPreferredComponentTypes )( + IDVBSTuningSpace * This, + /* [retval][out] */ IComponentTypes **ComponentTypes); + + /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_DefaultPreferredComponentTypes )( + IDVBSTuningSpace * This, + /* [in] */ IComponentTypes *NewComponentTypes); + + /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_FrequencyMapping )( + IDVBSTuningSpace * This, + /* [retval][out] */ BSTR *pMapping); + + /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_FrequencyMapping )( + IDVBSTuningSpace * This, + BSTR Mapping); + + /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_DefaultLocator )( + IDVBSTuningSpace * This, + /* [retval][out] */ ILocator **LocatorVal); + + /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_DefaultLocator )( + IDVBSTuningSpace * This, + /* [in] */ ILocator *LocatorVal); + + HRESULT ( STDMETHODCALLTYPE *Clone )( + IDVBSTuningSpace * This, + /* [retval][out] */ ITuningSpace **NewTS); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_SystemType )( + IDVBSTuningSpace * This, + /* [retval][out] */ DVBSystemType *SysType); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_SystemType )( + IDVBSTuningSpace * This, + /* [in] */ DVBSystemType SysType); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_NetworkID )( + IDVBSTuningSpace * This, + /* [retval][out] */ long *NetworkID); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_NetworkID )( + IDVBSTuningSpace * This, + /* [in] */ long NetworkID); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_LowOscillator )( + IDVBSTuningSpace * This, + /* [retval][out] */ long *LowOscillator); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_LowOscillator )( + IDVBSTuningSpace * This, + /* [in] */ long LowOscillator); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_HighOscillator )( + IDVBSTuningSpace * This, + /* [retval][out] */ long *HighOscillator); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_HighOscillator )( + IDVBSTuningSpace * This, + /* [in] */ long HighOscillator); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_LNBSwitch )( + IDVBSTuningSpace * This, + /* [retval][out] */ long *LNBSwitch); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_LNBSwitch )( + IDVBSTuningSpace * This, + /* [in] */ long LNBSwitch); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_InputRange )( + IDVBSTuningSpace * This, + /* [retval][out] */ BSTR *InputRange); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_InputRange )( + IDVBSTuningSpace * This, + /* [in] */ BSTR InputRange); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_SpectralInversion )( + IDVBSTuningSpace * This, + /* [retval][out] */ SpectralInversion *SpectralInversionVal); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_SpectralInversion )( + IDVBSTuningSpace * This, + /* [in] */ SpectralInversion SpectralInversionVal); + + END_INTERFACE + } IDVBSTuningSpaceVtbl; + + interface IDVBSTuningSpace + { + CONST_VTBL struct IDVBSTuningSpaceVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDVBSTuningSpace_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IDVBSTuningSpace_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IDVBSTuningSpace_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IDVBSTuningSpace_GetTypeInfoCount(This,pctinfo) \ + (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) + +#define IDVBSTuningSpace_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) + +#define IDVBSTuningSpace_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) + +#define IDVBSTuningSpace_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) + + +#define IDVBSTuningSpace_get_UniqueName(This,Name) \ + (This)->lpVtbl -> get_UniqueName(This,Name) + +#define IDVBSTuningSpace_put_UniqueName(This,Name) \ + (This)->lpVtbl -> put_UniqueName(This,Name) + +#define IDVBSTuningSpace_get_FriendlyName(This,Name) \ + (This)->lpVtbl -> get_FriendlyName(This,Name) + +#define IDVBSTuningSpace_put_FriendlyName(This,Name) \ + (This)->lpVtbl -> put_FriendlyName(This,Name) + +#define IDVBSTuningSpace_get_CLSID(This,SpaceCLSID) \ + (This)->lpVtbl -> get_CLSID(This,SpaceCLSID) + +#define IDVBSTuningSpace_get_NetworkType(This,NetworkTypeGuid) \ + (This)->lpVtbl -> get_NetworkType(This,NetworkTypeGuid) + +#define IDVBSTuningSpace_put_NetworkType(This,NetworkTypeGuid) \ + (This)->lpVtbl -> put_NetworkType(This,NetworkTypeGuid) + +#define IDVBSTuningSpace_get__NetworkType(This,NetworkTypeGuid) \ + (This)->lpVtbl -> get__NetworkType(This,NetworkTypeGuid) + +#define IDVBSTuningSpace_put__NetworkType(This,NetworkTypeGuid) \ + (This)->lpVtbl -> put__NetworkType(This,NetworkTypeGuid) + +#define IDVBSTuningSpace_CreateTuneRequest(This,TuneRequest) \ + (This)->lpVtbl -> CreateTuneRequest(This,TuneRequest) + +#define IDVBSTuningSpace_EnumCategoryGUIDs(This,ppEnum) \ + (This)->lpVtbl -> EnumCategoryGUIDs(This,ppEnum) + +#define IDVBSTuningSpace_EnumDeviceMonikers(This,ppEnum) \ + (This)->lpVtbl -> EnumDeviceMonikers(This,ppEnum) + +#define IDVBSTuningSpace_get_DefaultPreferredComponentTypes(This,ComponentTypes) \ + (This)->lpVtbl -> get_DefaultPreferredComponentTypes(This,ComponentTypes) + +#define IDVBSTuningSpace_put_DefaultPreferredComponentTypes(This,NewComponentTypes) \ + (This)->lpVtbl -> put_DefaultPreferredComponentTypes(This,NewComponentTypes) + +#define IDVBSTuningSpace_get_FrequencyMapping(This,pMapping) \ + (This)->lpVtbl -> get_FrequencyMapping(This,pMapping) + +#define IDVBSTuningSpace_put_FrequencyMapping(This,Mapping) \ + (This)->lpVtbl -> put_FrequencyMapping(This,Mapping) + +#define IDVBSTuningSpace_get_DefaultLocator(This,LocatorVal) \ + (This)->lpVtbl -> get_DefaultLocator(This,LocatorVal) + +#define IDVBSTuningSpace_put_DefaultLocator(This,LocatorVal) \ + (This)->lpVtbl -> put_DefaultLocator(This,LocatorVal) + +#define IDVBSTuningSpace_Clone(This,NewTS) \ + (This)->lpVtbl -> Clone(This,NewTS) + + +#define IDVBSTuningSpace_get_SystemType(This,SysType) \ + (This)->lpVtbl -> get_SystemType(This,SysType) + +#define IDVBSTuningSpace_put_SystemType(This,SysType) \ + (This)->lpVtbl -> put_SystemType(This,SysType) + + +#define IDVBSTuningSpace_get_NetworkID(This,NetworkID) \ + (This)->lpVtbl -> get_NetworkID(This,NetworkID) + +#define IDVBSTuningSpace_put_NetworkID(This,NetworkID) \ + (This)->lpVtbl -> put_NetworkID(This,NetworkID) + + +#define IDVBSTuningSpace_get_LowOscillator(This,LowOscillator) \ + (This)->lpVtbl -> get_LowOscillator(This,LowOscillator) + +#define IDVBSTuningSpace_put_LowOscillator(This,LowOscillator) \ + (This)->lpVtbl -> put_LowOscillator(This,LowOscillator) + +#define IDVBSTuningSpace_get_HighOscillator(This,HighOscillator) \ + (This)->lpVtbl -> get_HighOscillator(This,HighOscillator) + +#define IDVBSTuningSpace_put_HighOscillator(This,HighOscillator) \ + (This)->lpVtbl -> put_HighOscillator(This,HighOscillator) + +#define IDVBSTuningSpace_get_LNBSwitch(This,LNBSwitch) \ + (This)->lpVtbl -> get_LNBSwitch(This,LNBSwitch) + +#define IDVBSTuningSpace_put_LNBSwitch(This,LNBSwitch) \ + (This)->lpVtbl -> put_LNBSwitch(This,LNBSwitch) + +#define IDVBSTuningSpace_get_InputRange(This,InputRange) \ + (This)->lpVtbl -> get_InputRange(This,InputRange) + +#define IDVBSTuningSpace_put_InputRange(This,InputRange) \ + (This)->lpVtbl -> put_InputRange(This,InputRange) + +#define IDVBSTuningSpace_get_SpectralInversion(This,SpectralInversionVal) \ + (This)->lpVtbl -> get_SpectralInversion(This,SpectralInversionVal) + +#define IDVBSTuningSpace_put_SpectralInversion(This,SpectralInversionVal) \ + (This)->lpVtbl -> put_SpectralInversion(This,SpectralInversionVal) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDVBSTuningSpace_get_LowOscillator_Proxy( + IDVBSTuningSpace * This, + /* [retval][out] */ long *LowOscillator); + + +void __RPC_STUB IDVBSTuningSpace_get_LowOscillator_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDVBSTuningSpace_put_LowOscillator_Proxy( + IDVBSTuningSpace * This, + /* [in] */ long LowOscillator); + + +void __RPC_STUB IDVBSTuningSpace_put_LowOscillator_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDVBSTuningSpace_get_HighOscillator_Proxy( + IDVBSTuningSpace * This, + /* [retval][out] */ long *HighOscillator); + + +void __RPC_STUB IDVBSTuningSpace_get_HighOscillator_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDVBSTuningSpace_put_HighOscillator_Proxy( + IDVBSTuningSpace * This, + /* [in] */ long HighOscillator); + + +void __RPC_STUB IDVBSTuningSpace_put_HighOscillator_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDVBSTuningSpace_get_LNBSwitch_Proxy( + IDVBSTuningSpace * This, + /* [retval][out] */ long *LNBSwitch); + + +void __RPC_STUB IDVBSTuningSpace_get_LNBSwitch_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDVBSTuningSpace_put_LNBSwitch_Proxy( + IDVBSTuningSpace * This, + /* [in] */ long LNBSwitch); + + +void __RPC_STUB IDVBSTuningSpace_put_LNBSwitch_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDVBSTuningSpace_get_InputRange_Proxy( + IDVBSTuningSpace * This, + /* [retval][out] */ BSTR *InputRange); + + +void __RPC_STUB IDVBSTuningSpace_get_InputRange_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDVBSTuningSpace_put_InputRange_Proxy( + IDVBSTuningSpace * This, + /* [in] */ BSTR InputRange); + + +void __RPC_STUB IDVBSTuningSpace_put_InputRange_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDVBSTuningSpace_get_SpectralInversion_Proxy( + IDVBSTuningSpace * This, + /* [retval][out] */ SpectralInversion *SpectralInversionVal); + + +void __RPC_STUB IDVBSTuningSpace_get_SpectralInversion_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDVBSTuningSpace_put_SpectralInversion_Proxy( + IDVBSTuningSpace * This, + /* [in] */ SpectralInversion SpectralInversionVal); + + +void __RPC_STUB IDVBSTuningSpace_put_SpectralInversion_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IDVBSTuningSpace_INTERFACE_DEFINED__ */ + + +#ifndef __IAuxInTuningSpace_INTERFACE_DEFINED__ +#define __IAuxInTuningSpace_INTERFACE_DEFINED__ + +/* interface IAuxInTuningSpace */ +/* [unique][uuid][nonextensible][oleautomation][dual][hidden][object] */ + + +EXTERN_C const IID IID_IAuxInTuningSpace; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("E48244B8-7E17-4f76-A763-5090FF1E2F30") + IAuxInTuningSpace : public ITuningSpace + { + public: + }; + +#else /* C style interface */ + + typedef struct IAuxInTuningSpaceVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IAuxInTuningSpace * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IAuxInTuningSpace * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IAuxInTuningSpace * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IAuxInTuningSpace * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IAuxInTuningSpace * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IAuxInTuningSpace * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IAuxInTuningSpace * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_UniqueName )( + IAuxInTuningSpace * This, + /* [retval][out] */ BSTR *Name); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_UniqueName )( + IAuxInTuningSpace * This, + /* [in] */ BSTR Name); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_FriendlyName )( + IAuxInTuningSpace * This, + /* [retval][out] */ BSTR *Name); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_FriendlyName )( + IAuxInTuningSpace * This, + /* [in] */ BSTR Name); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_CLSID )( + IAuxInTuningSpace * This, + /* [retval][out] */ BSTR *SpaceCLSID); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_NetworkType )( + IAuxInTuningSpace * This, + /* [retval][out] */ BSTR *NetworkTypeGuid); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_NetworkType )( + IAuxInTuningSpace * This, + /* [in] */ BSTR NetworkTypeGuid); + + /* [restricted][hidden][helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get__NetworkType )( + IAuxInTuningSpace * This, + /* [retval][out] */ GUID *NetworkTypeGuid); + + /* [restricted][hidden][helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put__NetworkType )( + IAuxInTuningSpace * This, + /* [in] */ REFCLSID NetworkTypeGuid); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *CreateTuneRequest )( + IAuxInTuningSpace * This, + /* [retval][out] */ ITuneRequest **TuneRequest); + + /* [restricted][hidden][id] */ HRESULT ( STDMETHODCALLTYPE *EnumCategoryGUIDs )( + IAuxInTuningSpace * This, + /* [retval][out] */ IEnumGUID **ppEnum); + + /* [restricted][hidden][id] */ HRESULT ( STDMETHODCALLTYPE *EnumDeviceMonikers )( + IAuxInTuningSpace * This, + /* [retval][out] */ IEnumMoniker **ppEnum); + + /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_DefaultPreferredComponentTypes )( + IAuxInTuningSpace * This, + /* [retval][out] */ IComponentTypes **ComponentTypes); + + /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_DefaultPreferredComponentTypes )( + IAuxInTuningSpace * This, + /* [in] */ IComponentTypes *NewComponentTypes); + + /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_FrequencyMapping )( + IAuxInTuningSpace * This, + /* [retval][out] */ BSTR *pMapping); + + /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_FrequencyMapping )( + IAuxInTuningSpace * This, + BSTR Mapping); + + /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_DefaultLocator )( + IAuxInTuningSpace * This, + /* [retval][out] */ ILocator **LocatorVal); + + /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_DefaultLocator )( + IAuxInTuningSpace * This, + /* [in] */ ILocator *LocatorVal); + + HRESULT ( STDMETHODCALLTYPE *Clone )( + IAuxInTuningSpace * This, + /* [retval][out] */ ITuningSpace **NewTS); + + END_INTERFACE + } IAuxInTuningSpaceVtbl; + + interface IAuxInTuningSpace + { + CONST_VTBL struct IAuxInTuningSpaceVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IAuxInTuningSpace_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IAuxInTuningSpace_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IAuxInTuningSpace_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IAuxInTuningSpace_GetTypeInfoCount(This,pctinfo) \ + (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) + +#define IAuxInTuningSpace_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) + +#define IAuxInTuningSpace_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) + +#define IAuxInTuningSpace_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) + + +#define IAuxInTuningSpace_get_UniqueName(This,Name) \ + (This)->lpVtbl -> get_UniqueName(This,Name) + +#define IAuxInTuningSpace_put_UniqueName(This,Name) \ + (This)->lpVtbl -> put_UniqueName(This,Name) + +#define IAuxInTuningSpace_get_FriendlyName(This,Name) \ + (This)->lpVtbl -> get_FriendlyName(This,Name) + +#define IAuxInTuningSpace_put_FriendlyName(This,Name) \ + (This)->lpVtbl -> put_FriendlyName(This,Name) + +#define IAuxInTuningSpace_get_CLSID(This,SpaceCLSID) \ + (This)->lpVtbl -> get_CLSID(This,SpaceCLSID) + +#define IAuxInTuningSpace_get_NetworkType(This,NetworkTypeGuid) \ + (This)->lpVtbl -> get_NetworkType(This,NetworkTypeGuid) + +#define IAuxInTuningSpace_put_NetworkType(This,NetworkTypeGuid) \ + (This)->lpVtbl -> put_NetworkType(This,NetworkTypeGuid) + +#define IAuxInTuningSpace_get__NetworkType(This,NetworkTypeGuid) \ + (This)->lpVtbl -> get__NetworkType(This,NetworkTypeGuid) + +#define IAuxInTuningSpace_put__NetworkType(This,NetworkTypeGuid) \ + (This)->lpVtbl -> put__NetworkType(This,NetworkTypeGuid) + +#define IAuxInTuningSpace_CreateTuneRequest(This,TuneRequest) \ + (This)->lpVtbl -> CreateTuneRequest(This,TuneRequest) + +#define IAuxInTuningSpace_EnumCategoryGUIDs(This,ppEnum) \ + (This)->lpVtbl -> EnumCategoryGUIDs(This,ppEnum) + +#define IAuxInTuningSpace_EnumDeviceMonikers(This,ppEnum) \ + (This)->lpVtbl -> EnumDeviceMonikers(This,ppEnum) + +#define IAuxInTuningSpace_get_DefaultPreferredComponentTypes(This,ComponentTypes) \ + (This)->lpVtbl -> get_DefaultPreferredComponentTypes(This,ComponentTypes) + +#define IAuxInTuningSpace_put_DefaultPreferredComponentTypes(This,NewComponentTypes) \ + (This)->lpVtbl -> put_DefaultPreferredComponentTypes(This,NewComponentTypes) + +#define IAuxInTuningSpace_get_FrequencyMapping(This,pMapping) \ + (This)->lpVtbl -> get_FrequencyMapping(This,pMapping) + +#define IAuxInTuningSpace_put_FrequencyMapping(This,Mapping) \ + (This)->lpVtbl -> put_FrequencyMapping(This,Mapping) + +#define IAuxInTuningSpace_get_DefaultLocator(This,LocatorVal) \ + (This)->lpVtbl -> get_DefaultLocator(This,LocatorVal) + +#define IAuxInTuningSpace_put_DefaultLocator(This,LocatorVal) \ + (This)->lpVtbl -> put_DefaultLocator(This,LocatorVal) + +#define IAuxInTuningSpace_Clone(This,NewTS) \ + (This)->lpVtbl -> Clone(This,NewTS) + + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IAuxInTuningSpace_INTERFACE_DEFINED__ */ + + +#ifndef __IAnalogTVTuningSpace_INTERFACE_DEFINED__ +#define __IAnalogTVTuningSpace_INTERFACE_DEFINED__ + +/* interface IAnalogTVTuningSpace */ +/* [unique][uuid][nonextensible][oleautomation][dual][hidden][object] */ + + +EXTERN_C const IID IID_IAnalogTVTuningSpace; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("2A6E293C-2595-11d3-B64C-00C04F79498E") + IAnalogTVTuningSpace : public ITuningSpace + { + public: + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_MinChannel( + /* [retval][out] */ long *MinChannelVal) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_MinChannel( + /* [in] */ long NewMinChannelVal) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_MaxChannel( + /* [retval][out] */ long *MaxChannelVal) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_MaxChannel( + /* [in] */ long NewMaxChannelVal) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_InputType( + /* [retval][out] */ TunerInputType *InputTypeVal) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_InputType( + /* [in] */ TunerInputType NewInputTypeVal) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_CountryCode( + /* [retval][out] */ long *CountryCodeVal) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_CountryCode( + /* [in] */ long NewCountryCodeVal) = 0; + + }; + +#else /* C style interface */ + + typedef struct IAnalogTVTuningSpaceVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IAnalogTVTuningSpace * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IAnalogTVTuningSpace * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IAnalogTVTuningSpace * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IAnalogTVTuningSpace * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IAnalogTVTuningSpace * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IAnalogTVTuningSpace * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IAnalogTVTuningSpace * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_UniqueName )( + IAnalogTVTuningSpace * This, + /* [retval][out] */ BSTR *Name); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_UniqueName )( + IAnalogTVTuningSpace * This, + /* [in] */ BSTR Name); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_FriendlyName )( + IAnalogTVTuningSpace * This, + /* [retval][out] */ BSTR *Name); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_FriendlyName )( + IAnalogTVTuningSpace * This, + /* [in] */ BSTR Name); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_CLSID )( + IAnalogTVTuningSpace * This, + /* [retval][out] */ BSTR *SpaceCLSID); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_NetworkType )( + IAnalogTVTuningSpace * This, + /* [retval][out] */ BSTR *NetworkTypeGuid); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_NetworkType )( + IAnalogTVTuningSpace * This, + /* [in] */ BSTR NetworkTypeGuid); + + /* [restricted][hidden][helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get__NetworkType )( + IAnalogTVTuningSpace * This, + /* [retval][out] */ GUID *NetworkTypeGuid); + + /* [restricted][hidden][helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put__NetworkType )( + IAnalogTVTuningSpace * This, + /* [in] */ REFCLSID NetworkTypeGuid); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *CreateTuneRequest )( + IAnalogTVTuningSpace * This, + /* [retval][out] */ ITuneRequest **TuneRequest); + + /* [restricted][hidden][id] */ HRESULT ( STDMETHODCALLTYPE *EnumCategoryGUIDs )( + IAnalogTVTuningSpace * This, + /* [retval][out] */ IEnumGUID **ppEnum); + + /* [restricted][hidden][id] */ HRESULT ( STDMETHODCALLTYPE *EnumDeviceMonikers )( + IAnalogTVTuningSpace * This, + /* [retval][out] */ IEnumMoniker **ppEnum); + + /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_DefaultPreferredComponentTypes )( + IAnalogTVTuningSpace * This, + /* [retval][out] */ IComponentTypes **ComponentTypes); + + /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_DefaultPreferredComponentTypes )( + IAnalogTVTuningSpace * This, + /* [in] */ IComponentTypes *NewComponentTypes); + + /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_FrequencyMapping )( + IAnalogTVTuningSpace * This, + /* [retval][out] */ BSTR *pMapping); + + /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_FrequencyMapping )( + IAnalogTVTuningSpace * This, + BSTR Mapping); + + /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_DefaultLocator )( + IAnalogTVTuningSpace * This, + /* [retval][out] */ ILocator **LocatorVal); + + /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_DefaultLocator )( + IAnalogTVTuningSpace * This, + /* [in] */ ILocator *LocatorVal); + + HRESULT ( STDMETHODCALLTYPE *Clone )( + IAnalogTVTuningSpace * This, + /* [retval][out] */ ITuningSpace **NewTS); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_MinChannel )( + IAnalogTVTuningSpace * This, + /* [retval][out] */ long *MinChannelVal); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_MinChannel )( + IAnalogTVTuningSpace * This, + /* [in] */ long NewMinChannelVal); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_MaxChannel )( + IAnalogTVTuningSpace * This, + /* [retval][out] */ long *MaxChannelVal); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_MaxChannel )( + IAnalogTVTuningSpace * This, + /* [in] */ long NewMaxChannelVal); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_InputType )( + IAnalogTVTuningSpace * This, + /* [retval][out] */ TunerInputType *InputTypeVal); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_InputType )( + IAnalogTVTuningSpace * This, + /* [in] */ TunerInputType NewInputTypeVal); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_CountryCode )( + IAnalogTVTuningSpace * This, + /* [retval][out] */ long *CountryCodeVal); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_CountryCode )( + IAnalogTVTuningSpace * This, + /* [in] */ long NewCountryCodeVal); + + END_INTERFACE + } IAnalogTVTuningSpaceVtbl; + + interface IAnalogTVTuningSpace + { + CONST_VTBL struct IAnalogTVTuningSpaceVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IAnalogTVTuningSpace_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IAnalogTVTuningSpace_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IAnalogTVTuningSpace_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IAnalogTVTuningSpace_GetTypeInfoCount(This,pctinfo) \ + (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) + +#define IAnalogTVTuningSpace_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) + +#define IAnalogTVTuningSpace_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) + +#define IAnalogTVTuningSpace_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) + + +#define IAnalogTVTuningSpace_get_UniqueName(This,Name) \ + (This)->lpVtbl -> get_UniqueName(This,Name) + +#define IAnalogTVTuningSpace_put_UniqueName(This,Name) \ + (This)->lpVtbl -> put_UniqueName(This,Name) + +#define IAnalogTVTuningSpace_get_FriendlyName(This,Name) \ + (This)->lpVtbl -> get_FriendlyName(This,Name) + +#define IAnalogTVTuningSpace_put_FriendlyName(This,Name) \ + (This)->lpVtbl -> put_FriendlyName(This,Name) + +#define IAnalogTVTuningSpace_get_CLSID(This,SpaceCLSID) \ + (This)->lpVtbl -> get_CLSID(This,SpaceCLSID) + +#define IAnalogTVTuningSpace_get_NetworkType(This,NetworkTypeGuid) \ + (This)->lpVtbl -> get_NetworkType(This,NetworkTypeGuid) + +#define IAnalogTVTuningSpace_put_NetworkType(This,NetworkTypeGuid) \ + (This)->lpVtbl -> put_NetworkType(This,NetworkTypeGuid) + +#define IAnalogTVTuningSpace_get__NetworkType(This,NetworkTypeGuid) \ + (This)->lpVtbl -> get__NetworkType(This,NetworkTypeGuid) + +#define IAnalogTVTuningSpace_put__NetworkType(This,NetworkTypeGuid) \ + (This)->lpVtbl -> put__NetworkType(This,NetworkTypeGuid) + +#define IAnalogTVTuningSpace_CreateTuneRequest(This,TuneRequest) \ + (This)->lpVtbl -> CreateTuneRequest(This,TuneRequest) + +#define IAnalogTVTuningSpace_EnumCategoryGUIDs(This,ppEnum) \ + (This)->lpVtbl -> EnumCategoryGUIDs(This,ppEnum) + +#define IAnalogTVTuningSpace_EnumDeviceMonikers(This,ppEnum) \ + (This)->lpVtbl -> EnumDeviceMonikers(This,ppEnum) + +#define IAnalogTVTuningSpace_get_DefaultPreferredComponentTypes(This,ComponentTypes) \ + (This)->lpVtbl -> get_DefaultPreferredComponentTypes(This,ComponentTypes) + +#define IAnalogTVTuningSpace_put_DefaultPreferredComponentTypes(This,NewComponentTypes) \ + (This)->lpVtbl -> put_DefaultPreferredComponentTypes(This,NewComponentTypes) + +#define IAnalogTVTuningSpace_get_FrequencyMapping(This,pMapping) \ + (This)->lpVtbl -> get_FrequencyMapping(This,pMapping) + +#define IAnalogTVTuningSpace_put_FrequencyMapping(This,Mapping) \ + (This)->lpVtbl -> put_FrequencyMapping(This,Mapping) + +#define IAnalogTVTuningSpace_get_DefaultLocator(This,LocatorVal) \ + (This)->lpVtbl -> get_DefaultLocator(This,LocatorVal) + +#define IAnalogTVTuningSpace_put_DefaultLocator(This,LocatorVal) \ + (This)->lpVtbl -> put_DefaultLocator(This,LocatorVal) + +#define IAnalogTVTuningSpace_Clone(This,NewTS) \ + (This)->lpVtbl -> Clone(This,NewTS) + + +#define IAnalogTVTuningSpace_get_MinChannel(This,MinChannelVal) \ + (This)->lpVtbl -> get_MinChannel(This,MinChannelVal) + +#define IAnalogTVTuningSpace_put_MinChannel(This,NewMinChannelVal) \ + (This)->lpVtbl -> put_MinChannel(This,NewMinChannelVal) + +#define IAnalogTVTuningSpace_get_MaxChannel(This,MaxChannelVal) \ + (This)->lpVtbl -> get_MaxChannel(This,MaxChannelVal) + +#define IAnalogTVTuningSpace_put_MaxChannel(This,NewMaxChannelVal) \ + (This)->lpVtbl -> put_MaxChannel(This,NewMaxChannelVal) + +#define IAnalogTVTuningSpace_get_InputType(This,InputTypeVal) \ + (This)->lpVtbl -> get_InputType(This,InputTypeVal) + +#define IAnalogTVTuningSpace_put_InputType(This,NewInputTypeVal) \ + (This)->lpVtbl -> put_InputType(This,NewInputTypeVal) + +#define IAnalogTVTuningSpace_get_CountryCode(This,CountryCodeVal) \ + (This)->lpVtbl -> get_CountryCode(This,CountryCodeVal) + +#define IAnalogTVTuningSpace_put_CountryCode(This,NewCountryCodeVal) \ + (This)->lpVtbl -> put_CountryCode(This,NewCountryCodeVal) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IAnalogTVTuningSpace_get_MinChannel_Proxy( + IAnalogTVTuningSpace * This, + /* [retval][out] */ long *MinChannelVal); + + +void __RPC_STUB IAnalogTVTuningSpace_get_MinChannel_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IAnalogTVTuningSpace_put_MinChannel_Proxy( + IAnalogTVTuningSpace * This, + /* [in] */ long NewMinChannelVal); + + +void __RPC_STUB IAnalogTVTuningSpace_put_MinChannel_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IAnalogTVTuningSpace_get_MaxChannel_Proxy( + IAnalogTVTuningSpace * This, + /* [retval][out] */ long *MaxChannelVal); + + +void __RPC_STUB IAnalogTVTuningSpace_get_MaxChannel_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IAnalogTVTuningSpace_put_MaxChannel_Proxy( + IAnalogTVTuningSpace * This, + /* [in] */ long NewMaxChannelVal); + + +void __RPC_STUB IAnalogTVTuningSpace_put_MaxChannel_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IAnalogTVTuningSpace_get_InputType_Proxy( + IAnalogTVTuningSpace * This, + /* [retval][out] */ TunerInputType *InputTypeVal); + + +void __RPC_STUB IAnalogTVTuningSpace_get_InputType_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IAnalogTVTuningSpace_put_InputType_Proxy( + IAnalogTVTuningSpace * This, + /* [in] */ TunerInputType NewInputTypeVal); + + +void __RPC_STUB IAnalogTVTuningSpace_put_InputType_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IAnalogTVTuningSpace_get_CountryCode_Proxy( + IAnalogTVTuningSpace * This, + /* [retval][out] */ long *CountryCodeVal); + + +void __RPC_STUB IAnalogTVTuningSpace_get_CountryCode_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IAnalogTVTuningSpace_put_CountryCode_Proxy( + IAnalogTVTuningSpace * This, + /* [in] */ long NewCountryCodeVal); + + +void __RPC_STUB IAnalogTVTuningSpace_put_CountryCode_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IAnalogTVTuningSpace_INTERFACE_DEFINED__ */ + + +#ifndef __IATSCTuningSpace_INTERFACE_DEFINED__ +#define __IATSCTuningSpace_INTERFACE_DEFINED__ + +/* interface IATSCTuningSpace */ +/* [unique][uuid][nonextensible][oleautomation][dual][hidden][object] */ + + +EXTERN_C const IID IID_IATSCTuningSpace; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("0369B4E2-45B6-11d3-B650-00C04F79498E") + IATSCTuningSpace : public IAnalogTVTuningSpace + { + public: + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_MinMinorChannel( + /* [retval][out] */ long *MinMinorChannelVal) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_MinMinorChannel( + /* [in] */ long NewMinMinorChannelVal) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_MaxMinorChannel( + /* [retval][out] */ long *MaxMinorChannelVal) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_MaxMinorChannel( + /* [in] */ long NewMaxMinorChannelVal) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_MinPhysicalChannel( + /* [retval][out] */ long *MinPhysicalChannelVal) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_MinPhysicalChannel( + /* [in] */ long NewMinPhysicalChannelVal) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_MaxPhysicalChannel( + /* [retval][out] */ long *MaxPhysicalChannelVal) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_MaxPhysicalChannel( + /* [in] */ long NewMaxPhysicalChannelVal) = 0; + + }; + +#else /* C style interface */ + + typedef struct IATSCTuningSpaceVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IATSCTuningSpace * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IATSCTuningSpace * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IATSCTuningSpace * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IATSCTuningSpace * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IATSCTuningSpace * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IATSCTuningSpace * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IATSCTuningSpace * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_UniqueName )( + IATSCTuningSpace * This, + /* [retval][out] */ BSTR *Name); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_UniqueName )( + IATSCTuningSpace * This, + /* [in] */ BSTR Name); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_FriendlyName )( + IATSCTuningSpace * This, + /* [retval][out] */ BSTR *Name); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_FriendlyName )( + IATSCTuningSpace * This, + /* [in] */ BSTR Name); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_CLSID )( + IATSCTuningSpace * This, + /* [retval][out] */ BSTR *SpaceCLSID); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_NetworkType )( + IATSCTuningSpace * This, + /* [retval][out] */ BSTR *NetworkTypeGuid); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_NetworkType )( + IATSCTuningSpace * This, + /* [in] */ BSTR NetworkTypeGuid); + + /* [restricted][hidden][helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get__NetworkType )( + IATSCTuningSpace * This, + /* [retval][out] */ GUID *NetworkTypeGuid); + + /* [restricted][hidden][helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put__NetworkType )( + IATSCTuningSpace * This, + /* [in] */ REFCLSID NetworkTypeGuid); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *CreateTuneRequest )( + IATSCTuningSpace * This, + /* [retval][out] */ ITuneRequest **TuneRequest); + + /* [restricted][hidden][id] */ HRESULT ( STDMETHODCALLTYPE *EnumCategoryGUIDs )( + IATSCTuningSpace * This, + /* [retval][out] */ IEnumGUID **ppEnum); + + /* [restricted][hidden][id] */ HRESULT ( STDMETHODCALLTYPE *EnumDeviceMonikers )( + IATSCTuningSpace * This, + /* [retval][out] */ IEnumMoniker **ppEnum); + + /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_DefaultPreferredComponentTypes )( + IATSCTuningSpace * This, + /* [retval][out] */ IComponentTypes **ComponentTypes); + + /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_DefaultPreferredComponentTypes )( + IATSCTuningSpace * This, + /* [in] */ IComponentTypes *NewComponentTypes); + + /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_FrequencyMapping )( + IATSCTuningSpace * This, + /* [retval][out] */ BSTR *pMapping); + + /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_FrequencyMapping )( + IATSCTuningSpace * This, + BSTR Mapping); + + /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_DefaultLocator )( + IATSCTuningSpace * This, + /* [retval][out] */ ILocator **LocatorVal); + + /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_DefaultLocator )( + IATSCTuningSpace * This, + /* [in] */ ILocator *LocatorVal); + + HRESULT ( STDMETHODCALLTYPE *Clone )( + IATSCTuningSpace * This, + /* [retval][out] */ ITuningSpace **NewTS); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_MinChannel )( + IATSCTuningSpace * This, + /* [retval][out] */ long *MinChannelVal); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_MinChannel )( + IATSCTuningSpace * This, + /* [in] */ long NewMinChannelVal); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_MaxChannel )( + IATSCTuningSpace * This, + /* [retval][out] */ long *MaxChannelVal); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_MaxChannel )( + IATSCTuningSpace * This, + /* [in] */ long NewMaxChannelVal); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_InputType )( + IATSCTuningSpace * This, + /* [retval][out] */ TunerInputType *InputTypeVal); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_InputType )( + IATSCTuningSpace * This, + /* [in] */ TunerInputType NewInputTypeVal); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_CountryCode )( + IATSCTuningSpace * This, + /* [retval][out] */ long *CountryCodeVal); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_CountryCode )( + IATSCTuningSpace * This, + /* [in] */ long NewCountryCodeVal); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_MinMinorChannel )( + IATSCTuningSpace * This, + /* [retval][out] */ long *MinMinorChannelVal); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_MinMinorChannel )( + IATSCTuningSpace * This, + /* [in] */ long NewMinMinorChannelVal); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_MaxMinorChannel )( + IATSCTuningSpace * This, + /* [retval][out] */ long *MaxMinorChannelVal); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_MaxMinorChannel )( + IATSCTuningSpace * This, + /* [in] */ long NewMaxMinorChannelVal); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_MinPhysicalChannel )( + IATSCTuningSpace * This, + /* [retval][out] */ long *MinPhysicalChannelVal); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_MinPhysicalChannel )( + IATSCTuningSpace * This, + /* [in] */ long NewMinPhysicalChannelVal); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_MaxPhysicalChannel )( + IATSCTuningSpace * This, + /* [retval][out] */ long *MaxPhysicalChannelVal); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_MaxPhysicalChannel )( + IATSCTuningSpace * This, + /* [in] */ long NewMaxPhysicalChannelVal); + + END_INTERFACE + } IATSCTuningSpaceVtbl; + + interface IATSCTuningSpace + { + CONST_VTBL struct IATSCTuningSpaceVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IATSCTuningSpace_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IATSCTuningSpace_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IATSCTuningSpace_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IATSCTuningSpace_GetTypeInfoCount(This,pctinfo) \ + (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) + +#define IATSCTuningSpace_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) + +#define IATSCTuningSpace_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) + +#define IATSCTuningSpace_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) + + +#define IATSCTuningSpace_get_UniqueName(This,Name) \ + (This)->lpVtbl -> get_UniqueName(This,Name) + +#define IATSCTuningSpace_put_UniqueName(This,Name) \ + (This)->lpVtbl -> put_UniqueName(This,Name) + +#define IATSCTuningSpace_get_FriendlyName(This,Name) \ + (This)->lpVtbl -> get_FriendlyName(This,Name) + +#define IATSCTuningSpace_put_FriendlyName(This,Name) \ + (This)->lpVtbl -> put_FriendlyName(This,Name) + +#define IATSCTuningSpace_get_CLSID(This,SpaceCLSID) \ + (This)->lpVtbl -> get_CLSID(This,SpaceCLSID) + +#define IATSCTuningSpace_get_NetworkType(This,NetworkTypeGuid) \ + (This)->lpVtbl -> get_NetworkType(This,NetworkTypeGuid) + +#define IATSCTuningSpace_put_NetworkType(This,NetworkTypeGuid) \ + (This)->lpVtbl -> put_NetworkType(This,NetworkTypeGuid) + +#define IATSCTuningSpace_get__NetworkType(This,NetworkTypeGuid) \ + (This)->lpVtbl -> get__NetworkType(This,NetworkTypeGuid) + +#define IATSCTuningSpace_put__NetworkType(This,NetworkTypeGuid) \ + (This)->lpVtbl -> put__NetworkType(This,NetworkTypeGuid) + +#define IATSCTuningSpace_CreateTuneRequest(This,TuneRequest) \ + (This)->lpVtbl -> CreateTuneRequest(This,TuneRequest) + +#define IATSCTuningSpace_EnumCategoryGUIDs(This,ppEnum) \ + (This)->lpVtbl -> EnumCategoryGUIDs(This,ppEnum) + +#define IATSCTuningSpace_EnumDeviceMonikers(This,ppEnum) \ + (This)->lpVtbl -> EnumDeviceMonikers(This,ppEnum) + +#define IATSCTuningSpace_get_DefaultPreferredComponentTypes(This,ComponentTypes) \ + (This)->lpVtbl -> get_DefaultPreferredComponentTypes(This,ComponentTypes) + +#define IATSCTuningSpace_put_DefaultPreferredComponentTypes(This,NewComponentTypes) \ + (This)->lpVtbl -> put_DefaultPreferredComponentTypes(This,NewComponentTypes) + +#define IATSCTuningSpace_get_FrequencyMapping(This,pMapping) \ + (This)->lpVtbl -> get_FrequencyMapping(This,pMapping) + +#define IATSCTuningSpace_put_FrequencyMapping(This,Mapping) \ + (This)->lpVtbl -> put_FrequencyMapping(This,Mapping) + +#define IATSCTuningSpace_get_DefaultLocator(This,LocatorVal) \ + (This)->lpVtbl -> get_DefaultLocator(This,LocatorVal) + +#define IATSCTuningSpace_put_DefaultLocator(This,LocatorVal) \ + (This)->lpVtbl -> put_DefaultLocator(This,LocatorVal) + +#define IATSCTuningSpace_Clone(This,NewTS) \ + (This)->lpVtbl -> Clone(This,NewTS) + + +#define IATSCTuningSpace_get_MinChannel(This,MinChannelVal) \ + (This)->lpVtbl -> get_MinChannel(This,MinChannelVal) + +#define IATSCTuningSpace_put_MinChannel(This,NewMinChannelVal) \ + (This)->lpVtbl -> put_MinChannel(This,NewMinChannelVal) + +#define IATSCTuningSpace_get_MaxChannel(This,MaxChannelVal) \ + (This)->lpVtbl -> get_MaxChannel(This,MaxChannelVal) + +#define IATSCTuningSpace_put_MaxChannel(This,NewMaxChannelVal) \ + (This)->lpVtbl -> put_MaxChannel(This,NewMaxChannelVal) + +#define IATSCTuningSpace_get_InputType(This,InputTypeVal) \ + (This)->lpVtbl -> get_InputType(This,InputTypeVal) + +#define IATSCTuningSpace_put_InputType(This,NewInputTypeVal) \ + (This)->lpVtbl -> put_InputType(This,NewInputTypeVal) + +#define IATSCTuningSpace_get_CountryCode(This,CountryCodeVal) \ + (This)->lpVtbl -> get_CountryCode(This,CountryCodeVal) + +#define IATSCTuningSpace_put_CountryCode(This,NewCountryCodeVal) \ + (This)->lpVtbl -> put_CountryCode(This,NewCountryCodeVal) + + +#define IATSCTuningSpace_get_MinMinorChannel(This,MinMinorChannelVal) \ + (This)->lpVtbl -> get_MinMinorChannel(This,MinMinorChannelVal) + +#define IATSCTuningSpace_put_MinMinorChannel(This,NewMinMinorChannelVal) \ + (This)->lpVtbl -> put_MinMinorChannel(This,NewMinMinorChannelVal) + +#define IATSCTuningSpace_get_MaxMinorChannel(This,MaxMinorChannelVal) \ + (This)->lpVtbl -> get_MaxMinorChannel(This,MaxMinorChannelVal) + +#define IATSCTuningSpace_put_MaxMinorChannel(This,NewMaxMinorChannelVal) \ + (This)->lpVtbl -> put_MaxMinorChannel(This,NewMaxMinorChannelVal) + +#define IATSCTuningSpace_get_MinPhysicalChannel(This,MinPhysicalChannelVal) \ + (This)->lpVtbl -> get_MinPhysicalChannel(This,MinPhysicalChannelVal) + +#define IATSCTuningSpace_put_MinPhysicalChannel(This,NewMinPhysicalChannelVal) \ + (This)->lpVtbl -> put_MinPhysicalChannel(This,NewMinPhysicalChannelVal) + +#define IATSCTuningSpace_get_MaxPhysicalChannel(This,MaxPhysicalChannelVal) \ + (This)->lpVtbl -> get_MaxPhysicalChannel(This,MaxPhysicalChannelVal) + +#define IATSCTuningSpace_put_MaxPhysicalChannel(This,NewMaxPhysicalChannelVal) \ + (This)->lpVtbl -> put_MaxPhysicalChannel(This,NewMaxPhysicalChannelVal) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IATSCTuningSpace_get_MinMinorChannel_Proxy( + IATSCTuningSpace * This, + /* [retval][out] */ long *MinMinorChannelVal); + + +void __RPC_STUB IATSCTuningSpace_get_MinMinorChannel_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IATSCTuningSpace_put_MinMinorChannel_Proxy( + IATSCTuningSpace * This, + /* [in] */ long NewMinMinorChannelVal); + + +void __RPC_STUB IATSCTuningSpace_put_MinMinorChannel_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IATSCTuningSpace_get_MaxMinorChannel_Proxy( + IATSCTuningSpace * This, + /* [retval][out] */ long *MaxMinorChannelVal); + + +void __RPC_STUB IATSCTuningSpace_get_MaxMinorChannel_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IATSCTuningSpace_put_MaxMinorChannel_Proxy( + IATSCTuningSpace * This, + /* [in] */ long NewMaxMinorChannelVal); + + +void __RPC_STUB IATSCTuningSpace_put_MaxMinorChannel_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IATSCTuningSpace_get_MinPhysicalChannel_Proxy( + IATSCTuningSpace * This, + /* [retval][out] */ long *MinPhysicalChannelVal); + + +void __RPC_STUB IATSCTuningSpace_get_MinPhysicalChannel_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IATSCTuningSpace_put_MinPhysicalChannel_Proxy( + IATSCTuningSpace * This, + /* [in] */ long NewMinPhysicalChannelVal); + + +void __RPC_STUB IATSCTuningSpace_put_MinPhysicalChannel_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IATSCTuningSpace_get_MaxPhysicalChannel_Proxy( + IATSCTuningSpace * This, + /* [retval][out] */ long *MaxPhysicalChannelVal); + + +void __RPC_STUB IATSCTuningSpace_get_MaxPhysicalChannel_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IATSCTuningSpace_put_MaxPhysicalChannel_Proxy( + IATSCTuningSpace * This, + /* [in] */ long NewMaxPhysicalChannelVal); + + +void __RPC_STUB IATSCTuningSpace_put_MaxPhysicalChannel_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IATSCTuningSpace_INTERFACE_DEFINED__ */ + + +#ifndef __IAnalogRadioTuningSpace_INTERFACE_DEFINED__ +#define __IAnalogRadioTuningSpace_INTERFACE_DEFINED__ + +/* interface IAnalogRadioTuningSpace */ +/* [unique][uuid][nonextensible][oleautomation][dual][hidden][object] */ + + +EXTERN_C const IID IID_IAnalogRadioTuningSpace; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("2A6E293B-2595-11d3-B64C-00C04F79498E") + IAnalogRadioTuningSpace : public ITuningSpace + { + public: + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_MinFrequency( + /* [retval][out] */ long *MinFrequencyVal) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_MinFrequency( + /* [in] */ long NewMinFrequencyVal) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_MaxFrequency( + /* [retval][out] */ long *MaxFrequencyVal) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_MaxFrequency( + /* [in] */ long NewMaxFrequencyVal) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Step( + /* [retval][out] */ long *StepVal) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_Step( + /* [in] */ long NewStepVal) = 0; + + }; + +#else /* C style interface */ + + typedef struct IAnalogRadioTuningSpaceVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IAnalogRadioTuningSpace * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IAnalogRadioTuningSpace * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IAnalogRadioTuningSpace * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IAnalogRadioTuningSpace * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IAnalogRadioTuningSpace * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IAnalogRadioTuningSpace * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IAnalogRadioTuningSpace * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_UniqueName )( + IAnalogRadioTuningSpace * This, + /* [retval][out] */ BSTR *Name); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_UniqueName )( + IAnalogRadioTuningSpace * This, + /* [in] */ BSTR Name); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_FriendlyName )( + IAnalogRadioTuningSpace * This, + /* [retval][out] */ BSTR *Name); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_FriendlyName )( + IAnalogRadioTuningSpace * This, + /* [in] */ BSTR Name); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_CLSID )( + IAnalogRadioTuningSpace * This, + /* [retval][out] */ BSTR *SpaceCLSID); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_NetworkType )( + IAnalogRadioTuningSpace * This, + /* [retval][out] */ BSTR *NetworkTypeGuid); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_NetworkType )( + IAnalogRadioTuningSpace * This, + /* [in] */ BSTR NetworkTypeGuid); + + /* [restricted][hidden][helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get__NetworkType )( + IAnalogRadioTuningSpace * This, + /* [retval][out] */ GUID *NetworkTypeGuid); + + /* [restricted][hidden][helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put__NetworkType )( + IAnalogRadioTuningSpace * This, + /* [in] */ REFCLSID NetworkTypeGuid); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *CreateTuneRequest )( + IAnalogRadioTuningSpace * This, + /* [retval][out] */ ITuneRequest **TuneRequest); + + /* [restricted][hidden][id] */ HRESULT ( STDMETHODCALLTYPE *EnumCategoryGUIDs )( + IAnalogRadioTuningSpace * This, + /* [retval][out] */ IEnumGUID **ppEnum); + + /* [restricted][hidden][id] */ HRESULT ( STDMETHODCALLTYPE *EnumDeviceMonikers )( + IAnalogRadioTuningSpace * This, + /* [retval][out] */ IEnumMoniker **ppEnum); + + /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_DefaultPreferredComponentTypes )( + IAnalogRadioTuningSpace * This, + /* [retval][out] */ IComponentTypes **ComponentTypes); + + /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_DefaultPreferredComponentTypes )( + IAnalogRadioTuningSpace * This, + /* [in] */ IComponentTypes *NewComponentTypes); + + /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_FrequencyMapping )( + IAnalogRadioTuningSpace * This, + /* [retval][out] */ BSTR *pMapping); + + /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_FrequencyMapping )( + IAnalogRadioTuningSpace * This, + BSTR Mapping); + + /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_DefaultLocator )( + IAnalogRadioTuningSpace * This, + /* [retval][out] */ ILocator **LocatorVal); + + /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_DefaultLocator )( + IAnalogRadioTuningSpace * This, + /* [in] */ ILocator *LocatorVal); + + HRESULT ( STDMETHODCALLTYPE *Clone )( + IAnalogRadioTuningSpace * This, + /* [retval][out] */ ITuningSpace **NewTS); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_MinFrequency )( + IAnalogRadioTuningSpace * This, + /* [retval][out] */ long *MinFrequencyVal); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_MinFrequency )( + IAnalogRadioTuningSpace * This, + /* [in] */ long NewMinFrequencyVal); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_MaxFrequency )( + IAnalogRadioTuningSpace * This, + /* [retval][out] */ long *MaxFrequencyVal); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_MaxFrequency )( + IAnalogRadioTuningSpace * This, + /* [in] */ long NewMaxFrequencyVal); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Step )( + IAnalogRadioTuningSpace * This, + /* [retval][out] */ long *StepVal); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Step )( + IAnalogRadioTuningSpace * This, + /* [in] */ long NewStepVal); + + END_INTERFACE + } IAnalogRadioTuningSpaceVtbl; + + interface IAnalogRadioTuningSpace + { + CONST_VTBL struct IAnalogRadioTuningSpaceVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IAnalogRadioTuningSpace_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IAnalogRadioTuningSpace_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IAnalogRadioTuningSpace_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IAnalogRadioTuningSpace_GetTypeInfoCount(This,pctinfo) \ + (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) + +#define IAnalogRadioTuningSpace_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) + +#define IAnalogRadioTuningSpace_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) + +#define IAnalogRadioTuningSpace_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) + + +#define IAnalogRadioTuningSpace_get_UniqueName(This,Name) \ + (This)->lpVtbl -> get_UniqueName(This,Name) + +#define IAnalogRadioTuningSpace_put_UniqueName(This,Name) \ + (This)->lpVtbl -> put_UniqueName(This,Name) + +#define IAnalogRadioTuningSpace_get_FriendlyName(This,Name) \ + (This)->lpVtbl -> get_FriendlyName(This,Name) + +#define IAnalogRadioTuningSpace_put_FriendlyName(This,Name) \ + (This)->lpVtbl -> put_FriendlyName(This,Name) + +#define IAnalogRadioTuningSpace_get_CLSID(This,SpaceCLSID) \ + (This)->lpVtbl -> get_CLSID(This,SpaceCLSID) + +#define IAnalogRadioTuningSpace_get_NetworkType(This,NetworkTypeGuid) \ + (This)->lpVtbl -> get_NetworkType(This,NetworkTypeGuid) + +#define IAnalogRadioTuningSpace_put_NetworkType(This,NetworkTypeGuid) \ + (This)->lpVtbl -> put_NetworkType(This,NetworkTypeGuid) + +#define IAnalogRadioTuningSpace_get__NetworkType(This,NetworkTypeGuid) \ + (This)->lpVtbl -> get__NetworkType(This,NetworkTypeGuid) + +#define IAnalogRadioTuningSpace_put__NetworkType(This,NetworkTypeGuid) \ + (This)->lpVtbl -> put__NetworkType(This,NetworkTypeGuid) + +#define IAnalogRadioTuningSpace_CreateTuneRequest(This,TuneRequest) \ + (This)->lpVtbl -> CreateTuneRequest(This,TuneRequest) + +#define IAnalogRadioTuningSpace_EnumCategoryGUIDs(This,ppEnum) \ + (This)->lpVtbl -> EnumCategoryGUIDs(This,ppEnum) + +#define IAnalogRadioTuningSpace_EnumDeviceMonikers(This,ppEnum) \ + (This)->lpVtbl -> EnumDeviceMonikers(This,ppEnum) + +#define IAnalogRadioTuningSpace_get_DefaultPreferredComponentTypes(This,ComponentTypes) \ + (This)->lpVtbl -> get_DefaultPreferredComponentTypes(This,ComponentTypes) + +#define IAnalogRadioTuningSpace_put_DefaultPreferredComponentTypes(This,NewComponentTypes) \ + (This)->lpVtbl -> put_DefaultPreferredComponentTypes(This,NewComponentTypes) + +#define IAnalogRadioTuningSpace_get_FrequencyMapping(This,pMapping) \ + (This)->lpVtbl -> get_FrequencyMapping(This,pMapping) + +#define IAnalogRadioTuningSpace_put_FrequencyMapping(This,Mapping) \ + (This)->lpVtbl -> put_FrequencyMapping(This,Mapping) + +#define IAnalogRadioTuningSpace_get_DefaultLocator(This,LocatorVal) \ + (This)->lpVtbl -> get_DefaultLocator(This,LocatorVal) + +#define IAnalogRadioTuningSpace_put_DefaultLocator(This,LocatorVal) \ + (This)->lpVtbl -> put_DefaultLocator(This,LocatorVal) + +#define IAnalogRadioTuningSpace_Clone(This,NewTS) \ + (This)->lpVtbl -> Clone(This,NewTS) + + +#define IAnalogRadioTuningSpace_get_MinFrequency(This,MinFrequencyVal) \ + (This)->lpVtbl -> get_MinFrequency(This,MinFrequencyVal) + +#define IAnalogRadioTuningSpace_put_MinFrequency(This,NewMinFrequencyVal) \ + (This)->lpVtbl -> put_MinFrequency(This,NewMinFrequencyVal) + +#define IAnalogRadioTuningSpace_get_MaxFrequency(This,MaxFrequencyVal) \ + (This)->lpVtbl -> get_MaxFrequency(This,MaxFrequencyVal) + +#define IAnalogRadioTuningSpace_put_MaxFrequency(This,NewMaxFrequencyVal) \ + (This)->lpVtbl -> put_MaxFrequency(This,NewMaxFrequencyVal) + +#define IAnalogRadioTuningSpace_get_Step(This,StepVal) \ + (This)->lpVtbl -> get_Step(This,StepVal) + +#define IAnalogRadioTuningSpace_put_Step(This,NewStepVal) \ + (This)->lpVtbl -> put_Step(This,NewStepVal) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IAnalogRadioTuningSpace_get_MinFrequency_Proxy( + IAnalogRadioTuningSpace * This, + /* [retval][out] */ long *MinFrequencyVal); + + +void __RPC_STUB IAnalogRadioTuningSpace_get_MinFrequency_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IAnalogRadioTuningSpace_put_MinFrequency_Proxy( + IAnalogRadioTuningSpace * This, + /* [in] */ long NewMinFrequencyVal); + + +void __RPC_STUB IAnalogRadioTuningSpace_put_MinFrequency_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IAnalogRadioTuningSpace_get_MaxFrequency_Proxy( + IAnalogRadioTuningSpace * This, + /* [retval][out] */ long *MaxFrequencyVal); + + +void __RPC_STUB IAnalogRadioTuningSpace_get_MaxFrequency_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IAnalogRadioTuningSpace_put_MaxFrequency_Proxy( + IAnalogRadioTuningSpace * This, + /* [in] */ long NewMaxFrequencyVal); + + +void __RPC_STUB IAnalogRadioTuningSpace_put_MaxFrequency_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IAnalogRadioTuningSpace_get_Step_Proxy( + IAnalogRadioTuningSpace * This, + /* [retval][out] */ long *StepVal); + + +void __RPC_STUB IAnalogRadioTuningSpace_get_Step_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IAnalogRadioTuningSpace_put_Step_Proxy( + IAnalogRadioTuningSpace * This, + /* [in] */ long NewStepVal); + + +void __RPC_STUB IAnalogRadioTuningSpace_put_Step_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IAnalogRadioTuningSpace_INTERFACE_DEFINED__ */ + + +#ifndef __ITuneRequest_INTERFACE_DEFINED__ +#define __ITuneRequest_INTERFACE_DEFINED__ + +/* interface ITuneRequest */ +/* [unique][helpstring][oleautomation][dual][uuid][nonextensible][object] */ + + +EXTERN_C const IID IID_ITuneRequest; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("07DDC146-FC3D-11d2-9D8C-00C04F72D980") + ITuneRequest : public IDispatch + { + public: + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_TuningSpace( + /* [retval][out] */ ITuningSpace **TuningSpace) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Components( + /* [retval][out] */ IComponents **Components) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Clone( + /* [retval][out] */ ITuneRequest **NewTuneRequest) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Locator( + /* [retval][out] */ ILocator **Locator) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_Locator( + /* [in] */ ILocator *Locator) = 0; + + }; + +#else /* C style interface */ + + typedef struct ITuneRequestVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ITuneRequest * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ITuneRequest * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ITuneRequest * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + ITuneRequest * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + ITuneRequest * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + ITuneRequest * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + ITuneRequest * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_TuningSpace )( + ITuneRequest * This, + /* [retval][out] */ ITuningSpace **TuningSpace); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Components )( + ITuneRequest * This, + /* [retval][out] */ IComponents **Components); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Clone )( + ITuneRequest * This, + /* [retval][out] */ ITuneRequest **NewTuneRequest); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Locator )( + ITuneRequest * This, + /* [retval][out] */ ILocator **Locator); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Locator )( + ITuneRequest * This, + /* [in] */ ILocator *Locator); + + END_INTERFACE + } ITuneRequestVtbl; + + interface ITuneRequest + { + CONST_VTBL struct ITuneRequestVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ITuneRequest_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define ITuneRequest_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define ITuneRequest_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define ITuneRequest_GetTypeInfoCount(This,pctinfo) \ + (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) + +#define ITuneRequest_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) + +#define ITuneRequest_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) + +#define ITuneRequest_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) + + +#define ITuneRequest_get_TuningSpace(This,TuningSpace) \ + (This)->lpVtbl -> get_TuningSpace(This,TuningSpace) + +#define ITuneRequest_get_Components(This,Components) \ + (This)->lpVtbl -> get_Components(This,Components) + +#define ITuneRequest_Clone(This,NewTuneRequest) \ + (This)->lpVtbl -> Clone(This,NewTuneRequest) + +#define ITuneRequest_get_Locator(This,Locator) \ + (This)->lpVtbl -> get_Locator(This,Locator) + +#define ITuneRequest_put_Locator(This,Locator) \ + (This)->lpVtbl -> put_Locator(This,Locator) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE ITuneRequest_get_TuningSpace_Proxy( + ITuneRequest * This, + /* [retval][out] */ ITuningSpace **TuningSpace); + + +void __RPC_STUB ITuneRequest_get_TuningSpace_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE ITuneRequest_get_Components_Proxy( + ITuneRequest * This, + /* [retval][out] */ IComponents **Components); + + +void __RPC_STUB ITuneRequest_get_Components_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE ITuneRequest_Clone_Proxy( + ITuneRequest * This, + /* [retval][out] */ ITuneRequest **NewTuneRequest); + + +void __RPC_STUB ITuneRequest_Clone_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE ITuneRequest_get_Locator_Proxy( + ITuneRequest * This, + /* [retval][out] */ ILocator **Locator); + + +void __RPC_STUB ITuneRequest_get_Locator_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE ITuneRequest_put_Locator_Proxy( + ITuneRequest * This, + /* [in] */ ILocator *Locator); + + +void __RPC_STUB ITuneRequest_put_Locator_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __ITuneRequest_INTERFACE_DEFINED__ */ + + +#ifndef __IChannelTuneRequest_INTERFACE_DEFINED__ +#define __IChannelTuneRequest_INTERFACE_DEFINED__ + +/* interface IChannelTuneRequest */ +/* [unique][helpstring][oleautomation][dual][uuid][nonextensible][object] */ + + +EXTERN_C const IID IID_IChannelTuneRequest; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("0369B4E0-45B6-11d3-B650-00C04F79498E") + IChannelTuneRequest : public ITuneRequest + { + public: + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Channel( + /* [retval][out] */ long *Channel) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_Channel( + /* [in] */ long Channel) = 0; + + }; + +#else /* C style interface */ + + typedef struct IChannelTuneRequestVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IChannelTuneRequest * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IChannelTuneRequest * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IChannelTuneRequest * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IChannelTuneRequest * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IChannelTuneRequest * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IChannelTuneRequest * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IChannelTuneRequest * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_TuningSpace )( + IChannelTuneRequest * This, + /* [retval][out] */ ITuningSpace **TuningSpace); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Components )( + IChannelTuneRequest * This, + /* [retval][out] */ IComponents **Components); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Clone )( + IChannelTuneRequest * This, + /* [retval][out] */ ITuneRequest **NewTuneRequest); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Locator )( + IChannelTuneRequest * This, + /* [retval][out] */ ILocator **Locator); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Locator )( + IChannelTuneRequest * This, + /* [in] */ ILocator *Locator); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Channel )( + IChannelTuneRequest * This, + /* [retval][out] */ long *Channel); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Channel )( + IChannelTuneRequest * This, + /* [in] */ long Channel); + + END_INTERFACE + } IChannelTuneRequestVtbl; + + interface IChannelTuneRequest + { + CONST_VTBL struct IChannelTuneRequestVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IChannelTuneRequest_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IChannelTuneRequest_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IChannelTuneRequest_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IChannelTuneRequest_GetTypeInfoCount(This,pctinfo) \ + (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) + +#define IChannelTuneRequest_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) + +#define IChannelTuneRequest_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) + +#define IChannelTuneRequest_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) + + +#define IChannelTuneRequest_get_TuningSpace(This,TuningSpace) \ + (This)->lpVtbl -> get_TuningSpace(This,TuningSpace) + +#define IChannelTuneRequest_get_Components(This,Components) \ + (This)->lpVtbl -> get_Components(This,Components) + +#define IChannelTuneRequest_Clone(This,NewTuneRequest) \ + (This)->lpVtbl -> Clone(This,NewTuneRequest) + +#define IChannelTuneRequest_get_Locator(This,Locator) \ + (This)->lpVtbl -> get_Locator(This,Locator) + +#define IChannelTuneRequest_put_Locator(This,Locator) \ + (This)->lpVtbl -> put_Locator(This,Locator) + + +#define IChannelTuneRequest_get_Channel(This,Channel) \ + (This)->lpVtbl -> get_Channel(This,Channel) + +#define IChannelTuneRequest_put_Channel(This,Channel) \ + (This)->lpVtbl -> put_Channel(This,Channel) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IChannelTuneRequest_get_Channel_Proxy( + IChannelTuneRequest * This, + /* [retval][out] */ long *Channel); + + +void __RPC_STUB IChannelTuneRequest_get_Channel_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IChannelTuneRequest_put_Channel_Proxy( + IChannelTuneRequest * This, + /* [in] */ long Channel); + + +void __RPC_STUB IChannelTuneRequest_put_Channel_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IChannelTuneRequest_INTERFACE_DEFINED__ */ + + +#ifndef __IATSCChannelTuneRequest_INTERFACE_DEFINED__ +#define __IATSCChannelTuneRequest_INTERFACE_DEFINED__ + +/* interface IATSCChannelTuneRequest */ +/* [unique][helpstring][oleautomation][dual][uuid][nonextensible][object] */ + + +EXTERN_C const IID IID_IATSCChannelTuneRequest; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("0369B4E1-45B6-11d3-B650-00C04F79498E") + IATSCChannelTuneRequest : public IChannelTuneRequest + { + public: + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_MinorChannel( + /* [retval][out] */ long *MinorChannel) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_MinorChannel( + /* [in] */ long MinorChannel) = 0; + + }; + +#else /* C style interface */ + + typedef struct IATSCChannelTuneRequestVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IATSCChannelTuneRequest * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IATSCChannelTuneRequest * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IATSCChannelTuneRequest * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IATSCChannelTuneRequest * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IATSCChannelTuneRequest * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IATSCChannelTuneRequest * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IATSCChannelTuneRequest * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_TuningSpace )( + IATSCChannelTuneRequest * This, + /* [retval][out] */ ITuningSpace **TuningSpace); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Components )( + IATSCChannelTuneRequest * This, + /* [retval][out] */ IComponents **Components); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Clone )( + IATSCChannelTuneRequest * This, + /* [retval][out] */ ITuneRequest **NewTuneRequest); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Locator )( + IATSCChannelTuneRequest * This, + /* [retval][out] */ ILocator **Locator); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Locator )( + IATSCChannelTuneRequest * This, + /* [in] */ ILocator *Locator); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Channel )( + IATSCChannelTuneRequest * This, + /* [retval][out] */ long *Channel); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Channel )( + IATSCChannelTuneRequest * This, + /* [in] */ long Channel); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_MinorChannel )( + IATSCChannelTuneRequest * This, + /* [retval][out] */ long *MinorChannel); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_MinorChannel )( + IATSCChannelTuneRequest * This, + /* [in] */ long MinorChannel); + + END_INTERFACE + } IATSCChannelTuneRequestVtbl; + + interface IATSCChannelTuneRequest + { + CONST_VTBL struct IATSCChannelTuneRequestVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IATSCChannelTuneRequest_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IATSCChannelTuneRequest_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IATSCChannelTuneRequest_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IATSCChannelTuneRequest_GetTypeInfoCount(This,pctinfo) \ + (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) + +#define IATSCChannelTuneRequest_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) + +#define IATSCChannelTuneRequest_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) + +#define IATSCChannelTuneRequest_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) + + +#define IATSCChannelTuneRequest_get_TuningSpace(This,TuningSpace) \ + (This)->lpVtbl -> get_TuningSpace(This,TuningSpace) + +#define IATSCChannelTuneRequest_get_Components(This,Components) \ + (This)->lpVtbl -> get_Components(This,Components) + +#define IATSCChannelTuneRequest_Clone(This,NewTuneRequest) \ + (This)->lpVtbl -> Clone(This,NewTuneRequest) + +#define IATSCChannelTuneRequest_get_Locator(This,Locator) \ + (This)->lpVtbl -> get_Locator(This,Locator) + +#define IATSCChannelTuneRequest_put_Locator(This,Locator) \ + (This)->lpVtbl -> put_Locator(This,Locator) + + +#define IATSCChannelTuneRequest_get_Channel(This,Channel) \ + (This)->lpVtbl -> get_Channel(This,Channel) + +#define IATSCChannelTuneRequest_put_Channel(This,Channel) \ + (This)->lpVtbl -> put_Channel(This,Channel) + + +#define IATSCChannelTuneRequest_get_MinorChannel(This,MinorChannel) \ + (This)->lpVtbl -> get_MinorChannel(This,MinorChannel) + +#define IATSCChannelTuneRequest_put_MinorChannel(This,MinorChannel) \ + (This)->lpVtbl -> put_MinorChannel(This,MinorChannel) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IATSCChannelTuneRequest_get_MinorChannel_Proxy( + IATSCChannelTuneRequest * This, + /* [retval][out] */ long *MinorChannel); + + +void __RPC_STUB IATSCChannelTuneRequest_get_MinorChannel_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IATSCChannelTuneRequest_put_MinorChannel_Proxy( + IATSCChannelTuneRequest * This, + /* [in] */ long MinorChannel); + + +void __RPC_STUB IATSCChannelTuneRequest_put_MinorChannel_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IATSCChannelTuneRequest_INTERFACE_DEFINED__ */ + + +#ifndef __IDVBTuneRequest_INTERFACE_DEFINED__ +#define __IDVBTuneRequest_INTERFACE_DEFINED__ + +/* interface IDVBTuneRequest */ +/* [unique][helpstring][oleautomation][dual][uuid][nonextensible][object] */ + + +EXTERN_C const IID IID_IDVBTuneRequest; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("0D6F567E-A636-42bb-83BA-CE4C1704AFA2") + IDVBTuneRequest : public ITuneRequest + { + public: + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_ONID( + /* [retval][out] */ long *ONID) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_ONID( + /* [in] */ long ONID) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_TSID( + /* [retval][out] */ long *TSID) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_TSID( + /* [in] */ long TSID) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_SID( + /* [retval][out] */ long *SID) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_SID( + /* [in] */ long SID) = 0; + + }; + +#else /* C style interface */ + + typedef struct IDVBTuneRequestVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDVBTuneRequest * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDVBTuneRequest * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDVBTuneRequest * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IDVBTuneRequest * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IDVBTuneRequest * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IDVBTuneRequest * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IDVBTuneRequest * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_TuningSpace )( + IDVBTuneRequest * This, + /* [retval][out] */ ITuningSpace **TuningSpace); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Components )( + IDVBTuneRequest * This, + /* [retval][out] */ IComponents **Components); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Clone )( + IDVBTuneRequest * This, + /* [retval][out] */ ITuneRequest **NewTuneRequest); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Locator )( + IDVBTuneRequest * This, + /* [retval][out] */ ILocator **Locator); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Locator )( + IDVBTuneRequest * This, + /* [in] */ ILocator *Locator); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_ONID )( + IDVBTuneRequest * This, + /* [retval][out] */ long *ONID); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_ONID )( + IDVBTuneRequest * This, + /* [in] */ long ONID); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_TSID )( + IDVBTuneRequest * This, + /* [retval][out] */ long *TSID); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_TSID )( + IDVBTuneRequest * This, + /* [in] */ long TSID); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_SID )( + IDVBTuneRequest * This, + /* [retval][out] */ long *SID); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_SID )( + IDVBTuneRequest * This, + /* [in] */ long SID); + + END_INTERFACE + } IDVBTuneRequestVtbl; + + interface IDVBTuneRequest + { + CONST_VTBL struct IDVBTuneRequestVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDVBTuneRequest_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IDVBTuneRequest_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IDVBTuneRequest_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IDVBTuneRequest_GetTypeInfoCount(This,pctinfo) \ + (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) + +#define IDVBTuneRequest_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) + +#define IDVBTuneRequest_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) + +#define IDVBTuneRequest_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) + + +#define IDVBTuneRequest_get_TuningSpace(This,TuningSpace) \ + (This)->lpVtbl -> get_TuningSpace(This,TuningSpace) + +#define IDVBTuneRequest_get_Components(This,Components) \ + (This)->lpVtbl -> get_Components(This,Components) + +#define IDVBTuneRequest_Clone(This,NewTuneRequest) \ + (This)->lpVtbl -> Clone(This,NewTuneRequest) + +#define IDVBTuneRequest_get_Locator(This,Locator) \ + (This)->lpVtbl -> get_Locator(This,Locator) + +#define IDVBTuneRequest_put_Locator(This,Locator) \ + (This)->lpVtbl -> put_Locator(This,Locator) + + +#define IDVBTuneRequest_get_ONID(This,ONID) \ + (This)->lpVtbl -> get_ONID(This,ONID) + +#define IDVBTuneRequest_put_ONID(This,ONID) \ + (This)->lpVtbl -> put_ONID(This,ONID) + +#define IDVBTuneRequest_get_TSID(This,TSID) \ + (This)->lpVtbl -> get_TSID(This,TSID) + +#define IDVBTuneRequest_put_TSID(This,TSID) \ + (This)->lpVtbl -> put_TSID(This,TSID) + +#define IDVBTuneRequest_get_SID(This,SID) \ + (This)->lpVtbl -> get_SID(This,SID) + +#define IDVBTuneRequest_put_SID(This,SID) \ + (This)->lpVtbl -> put_SID(This,SID) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDVBTuneRequest_get_ONID_Proxy( + IDVBTuneRequest * This, + /* [retval][out] */ long *ONID); + + +void __RPC_STUB IDVBTuneRequest_get_ONID_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDVBTuneRequest_put_ONID_Proxy( + IDVBTuneRequest * This, + /* [in] */ long ONID); + + +void __RPC_STUB IDVBTuneRequest_put_ONID_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDVBTuneRequest_get_TSID_Proxy( + IDVBTuneRequest * This, + /* [retval][out] */ long *TSID); + + +void __RPC_STUB IDVBTuneRequest_get_TSID_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDVBTuneRequest_put_TSID_Proxy( + IDVBTuneRequest * This, + /* [in] */ long TSID); + + +void __RPC_STUB IDVBTuneRequest_put_TSID_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDVBTuneRequest_get_SID_Proxy( + IDVBTuneRequest * This, + /* [retval][out] */ long *SID); + + +void __RPC_STUB IDVBTuneRequest_get_SID_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDVBTuneRequest_put_SID_Proxy( + IDVBTuneRequest * This, + /* [in] */ long SID); + + +void __RPC_STUB IDVBTuneRequest_put_SID_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IDVBTuneRequest_INTERFACE_DEFINED__ */ + + +#ifndef __IMPEG2TuneRequest_INTERFACE_DEFINED__ +#define __IMPEG2TuneRequest_INTERFACE_DEFINED__ + +/* interface IMPEG2TuneRequest */ +/* [unique][helpstring][oleautomation][dual][uuid][nonextensible][object] */ + + +EXTERN_C const IID IID_IMPEG2TuneRequest; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("EB7D987F-8A01-42ad-B8AE-574DEEE44D1A") + IMPEG2TuneRequest : public ITuneRequest + { + public: + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_TSID( + /* [retval][out] */ long *TSID) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_TSID( + /* [in] */ long TSID) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_ProgNo( + /* [retval][out] */ long *ProgNo) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_ProgNo( + /* [in] */ long ProgNo) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMPEG2TuneRequestVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMPEG2TuneRequest * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMPEG2TuneRequest * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMPEG2TuneRequest * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IMPEG2TuneRequest * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IMPEG2TuneRequest * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IMPEG2TuneRequest * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IMPEG2TuneRequest * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_TuningSpace )( + IMPEG2TuneRequest * This, + /* [retval][out] */ ITuningSpace **TuningSpace); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Components )( + IMPEG2TuneRequest * This, + /* [retval][out] */ IComponents **Components); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Clone )( + IMPEG2TuneRequest * This, + /* [retval][out] */ ITuneRequest **NewTuneRequest); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Locator )( + IMPEG2TuneRequest * This, + /* [retval][out] */ ILocator **Locator); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Locator )( + IMPEG2TuneRequest * This, + /* [in] */ ILocator *Locator); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_TSID )( + IMPEG2TuneRequest * This, + /* [retval][out] */ long *TSID); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_TSID )( + IMPEG2TuneRequest * This, + /* [in] */ long TSID); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_ProgNo )( + IMPEG2TuneRequest * This, + /* [retval][out] */ long *ProgNo); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_ProgNo )( + IMPEG2TuneRequest * This, + /* [in] */ long ProgNo); + + END_INTERFACE + } IMPEG2TuneRequestVtbl; + + interface IMPEG2TuneRequest + { + CONST_VTBL struct IMPEG2TuneRequestVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMPEG2TuneRequest_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IMPEG2TuneRequest_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IMPEG2TuneRequest_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IMPEG2TuneRequest_GetTypeInfoCount(This,pctinfo) \ + (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) + +#define IMPEG2TuneRequest_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) + +#define IMPEG2TuneRequest_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) + +#define IMPEG2TuneRequest_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) + + +#define IMPEG2TuneRequest_get_TuningSpace(This,TuningSpace) \ + (This)->lpVtbl -> get_TuningSpace(This,TuningSpace) + +#define IMPEG2TuneRequest_get_Components(This,Components) \ + (This)->lpVtbl -> get_Components(This,Components) + +#define IMPEG2TuneRequest_Clone(This,NewTuneRequest) \ + (This)->lpVtbl -> Clone(This,NewTuneRequest) + +#define IMPEG2TuneRequest_get_Locator(This,Locator) \ + (This)->lpVtbl -> get_Locator(This,Locator) + +#define IMPEG2TuneRequest_put_Locator(This,Locator) \ + (This)->lpVtbl -> put_Locator(This,Locator) + + +#define IMPEG2TuneRequest_get_TSID(This,TSID) \ + (This)->lpVtbl -> get_TSID(This,TSID) + +#define IMPEG2TuneRequest_put_TSID(This,TSID) \ + (This)->lpVtbl -> put_TSID(This,TSID) + +#define IMPEG2TuneRequest_get_ProgNo(This,ProgNo) \ + (This)->lpVtbl -> get_ProgNo(This,ProgNo) + +#define IMPEG2TuneRequest_put_ProgNo(This,ProgNo) \ + (This)->lpVtbl -> put_ProgNo(This,ProgNo) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IMPEG2TuneRequest_get_TSID_Proxy( + IMPEG2TuneRequest * This, + /* [retval][out] */ long *TSID); + + +void __RPC_STUB IMPEG2TuneRequest_get_TSID_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IMPEG2TuneRequest_put_TSID_Proxy( + IMPEG2TuneRequest * This, + /* [in] */ long TSID); + + +void __RPC_STUB IMPEG2TuneRequest_put_TSID_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IMPEG2TuneRequest_get_ProgNo_Proxy( + IMPEG2TuneRequest * This, + /* [retval][out] */ long *ProgNo); + + +void __RPC_STUB IMPEG2TuneRequest_get_ProgNo_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IMPEG2TuneRequest_put_ProgNo_Proxy( + IMPEG2TuneRequest * This, + /* [in] */ long ProgNo); + + +void __RPC_STUB IMPEG2TuneRequest_put_ProgNo_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IMPEG2TuneRequest_INTERFACE_DEFINED__ */ + + +#ifndef __IMPEG2TuneRequestFactory_INTERFACE_DEFINED__ +#define __IMPEG2TuneRequestFactory_INTERFACE_DEFINED__ + +/* interface IMPEG2TuneRequestFactory */ +/* [unique][helpstring][oleautomation][dual][uuid][hidden][nonextensible][object] */ + + +EXTERN_C const IID IID_IMPEG2TuneRequestFactory; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("14E11ABD-EE37-4893-9EA1-6964DE933E39") + IMPEG2TuneRequestFactory : public IDispatch + { + public: + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE CreateTuneRequest( + /* [in] */ ITuningSpace *TuningSpace, + /* [retval][out] */ IMPEG2TuneRequest **TuneRequest) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMPEG2TuneRequestFactoryVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMPEG2TuneRequestFactory * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMPEG2TuneRequestFactory * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMPEG2TuneRequestFactory * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IMPEG2TuneRequestFactory * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IMPEG2TuneRequestFactory * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IMPEG2TuneRequestFactory * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IMPEG2TuneRequestFactory * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *CreateTuneRequest )( + IMPEG2TuneRequestFactory * This, + /* [in] */ ITuningSpace *TuningSpace, + /* [retval][out] */ IMPEG2TuneRequest **TuneRequest); + + END_INTERFACE + } IMPEG2TuneRequestFactoryVtbl; + + interface IMPEG2TuneRequestFactory + { + CONST_VTBL struct IMPEG2TuneRequestFactoryVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMPEG2TuneRequestFactory_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IMPEG2TuneRequestFactory_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IMPEG2TuneRequestFactory_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IMPEG2TuneRequestFactory_GetTypeInfoCount(This,pctinfo) \ + (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) + +#define IMPEG2TuneRequestFactory_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) + +#define IMPEG2TuneRequestFactory_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) + +#define IMPEG2TuneRequestFactory_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) + + +#define IMPEG2TuneRequestFactory_CreateTuneRequest(This,TuningSpace,TuneRequest) \ + (This)->lpVtbl -> CreateTuneRequest(This,TuningSpace,TuneRequest) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IMPEG2TuneRequestFactory_CreateTuneRequest_Proxy( + IMPEG2TuneRequestFactory * This, + /* [in] */ ITuningSpace *TuningSpace, + /* [retval][out] */ IMPEG2TuneRequest **TuneRequest); + + +void __RPC_STUB IMPEG2TuneRequestFactory_CreateTuneRequest_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IMPEG2TuneRequestFactory_INTERFACE_DEFINED__ */ + + +#ifndef __IMPEG2TuneRequestSupport_INTERFACE_DEFINED__ +#define __IMPEG2TuneRequestSupport_INTERFACE_DEFINED__ + +/* interface IMPEG2TuneRequestSupport */ +/* [unique][helpstring][uuid][nonextensible][restricted][hidden][object] */ + + +EXTERN_C const IID IID_IMPEG2TuneRequestSupport; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("1B9D5FC3-5BBC-4b6c-BB18-B9D10E3EEEBF") + IMPEG2TuneRequestSupport : public IUnknown + { + public: + }; + +#else /* C style interface */ + + typedef struct IMPEG2TuneRequestSupportVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMPEG2TuneRequestSupport * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMPEG2TuneRequestSupport * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMPEG2TuneRequestSupport * This); + + END_INTERFACE + } IMPEG2TuneRequestSupportVtbl; + + interface IMPEG2TuneRequestSupport + { + CONST_VTBL struct IMPEG2TuneRequestSupportVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMPEG2TuneRequestSupport_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IMPEG2TuneRequestSupport_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IMPEG2TuneRequestSupport_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IMPEG2TuneRequestSupport_INTERFACE_DEFINED__ */ + + +#ifndef __ITuner_INTERFACE_DEFINED__ +#define __ITuner_INTERFACE_DEFINED__ + +/* interface ITuner */ +/* [unique][helpstring][uuid][nonextensible][hidden][object] */ + + +EXTERN_C const IID IID_ITuner; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("28C52640-018A-11d3-9D8E-00C04F72D980") + ITuner : public IUnknown + { + public: + virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_TuningSpace( + /* [retval][out] */ ITuningSpace **TuningSpace) = 0; + + virtual /* [helpstring][propput] */ HRESULT STDMETHODCALLTYPE put_TuningSpace( + /* [in] */ ITuningSpace *TuningSpace) = 0; + + virtual /* [helpstring][restricted][hidden] */ HRESULT STDMETHODCALLTYPE EnumTuningSpaces( + /* [retval][out] */ IEnumTuningSpaces **ppEnum) = 0; + + virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_TuneRequest( + /* [retval][out] */ ITuneRequest **TuneRequest) = 0; + + virtual /* [helpstring][propput] */ HRESULT STDMETHODCALLTYPE put_TuneRequest( + /* [in] */ ITuneRequest *TuneRequest) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE Validate( + /* [in] */ ITuneRequest *TuneRequest) = 0; + + virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_PreferredComponentTypes( + /* [retval][out] */ IComponentTypes **ComponentTypes) = 0; + + virtual /* [helpstring][propput] */ HRESULT STDMETHODCALLTYPE put_PreferredComponentTypes( + /* [in] */ IComponentTypes *ComponentTypes) = 0; + + virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_SignalStrength( + /* [retval][out] */ long *Strength) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE TriggerSignalEvents( + /* [in] */ long Interval) = 0; + + }; + +#else /* C style interface */ + + typedef struct ITunerVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ITuner * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ITuner * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ITuner * This); + + /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_TuningSpace )( + ITuner * This, + /* [retval][out] */ ITuningSpace **TuningSpace); + + /* [helpstring][propput] */ HRESULT ( STDMETHODCALLTYPE *put_TuningSpace )( + ITuner * This, + /* [in] */ ITuningSpace *TuningSpace); + + /* [helpstring][restricted][hidden] */ HRESULT ( STDMETHODCALLTYPE *EnumTuningSpaces )( + ITuner * This, + /* [retval][out] */ IEnumTuningSpaces **ppEnum); + + /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_TuneRequest )( + ITuner * This, + /* [retval][out] */ ITuneRequest **TuneRequest); + + /* [helpstring][propput] */ HRESULT ( STDMETHODCALLTYPE *put_TuneRequest )( + ITuner * This, + /* [in] */ ITuneRequest *TuneRequest); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *Validate )( + ITuner * This, + /* [in] */ ITuneRequest *TuneRequest); + + /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_PreferredComponentTypes )( + ITuner * This, + /* [retval][out] */ IComponentTypes **ComponentTypes); + + /* [helpstring][propput] */ HRESULT ( STDMETHODCALLTYPE *put_PreferredComponentTypes )( + ITuner * This, + /* [in] */ IComponentTypes *ComponentTypes); + + /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_SignalStrength )( + ITuner * This, + /* [retval][out] */ long *Strength); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *TriggerSignalEvents )( + ITuner * This, + /* [in] */ long Interval); + + END_INTERFACE + } ITunerVtbl; + + interface ITuner + { + CONST_VTBL struct ITunerVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ITuner_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define ITuner_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define ITuner_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define ITuner_get_TuningSpace(This,TuningSpace) \ + (This)->lpVtbl -> get_TuningSpace(This,TuningSpace) + +#define ITuner_put_TuningSpace(This,TuningSpace) \ + (This)->lpVtbl -> put_TuningSpace(This,TuningSpace) + +#define ITuner_EnumTuningSpaces(This,ppEnum) \ + (This)->lpVtbl -> EnumTuningSpaces(This,ppEnum) + +#define ITuner_get_TuneRequest(This,TuneRequest) \ + (This)->lpVtbl -> get_TuneRequest(This,TuneRequest) + +#define ITuner_put_TuneRequest(This,TuneRequest) \ + (This)->lpVtbl -> put_TuneRequest(This,TuneRequest) + +#define ITuner_Validate(This,TuneRequest) \ + (This)->lpVtbl -> Validate(This,TuneRequest) + +#define ITuner_get_PreferredComponentTypes(This,ComponentTypes) \ + (This)->lpVtbl -> get_PreferredComponentTypes(This,ComponentTypes) + +#define ITuner_put_PreferredComponentTypes(This,ComponentTypes) \ + (This)->lpVtbl -> put_PreferredComponentTypes(This,ComponentTypes) + +#define ITuner_get_SignalStrength(This,Strength) \ + (This)->lpVtbl -> get_SignalStrength(This,Strength) + +#define ITuner_TriggerSignalEvents(This,Interval) \ + (This)->lpVtbl -> TriggerSignalEvents(This,Interval) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE ITuner_get_TuningSpace_Proxy( + ITuner * This, + /* [retval][out] */ ITuningSpace **TuningSpace); + + +void __RPC_STUB ITuner_get_TuningSpace_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][propput] */ HRESULT STDMETHODCALLTYPE ITuner_put_TuningSpace_Proxy( + ITuner * This, + /* [in] */ ITuningSpace *TuningSpace); + + +void __RPC_STUB ITuner_put_TuningSpace_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][restricted][hidden] */ HRESULT STDMETHODCALLTYPE ITuner_EnumTuningSpaces_Proxy( + ITuner * This, + /* [retval][out] */ IEnumTuningSpaces **ppEnum); + + +void __RPC_STUB ITuner_EnumTuningSpaces_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE ITuner_get_TuneRequest_Proxy( + ITuner * This, + /* [retval][out] */ ITuneRequest **TuneRequest); + + +void __RPC_STUB ITuner_get_TuneRequest_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][propput] */ HRESULT STDMETHODCALLTYPE ITuner_put_TuneRequest_Proxy( + ITuner * This, + /* [in] */ ITuneRequest *TuneRequest); + + +void __RPC_STUB ITuner_put_TuneRequest_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE ITuner_Validate_Proxy( + ITuner * This, + /* [in] */ ITuneRequest *TuneRequest); + + +void __RPC_STUB ITuner_Validate_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE ITuner_get_PreferredComponentTypes_Proxy( + ITuner * This, + /* [retval][out] */ IComponentTypes **ComponentTypes); + + +void __RPC_STUB ITuner_get_PreferredComponentTypes_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][propput] */ HRESULT STDMETHODCALLTYPE ITuner_put_PreferredComponentTypes_Proxy( + ITuner * This, + /* [in] */ IComponentTypes *ComponentTypes); + + +void __RPC_STUB ITuner_put_PreferredComponentTypes_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE ITuner_get_SignalStrength_Proxy( + ITuner * This, + /* [retval][out] */ long *Strength); + + +void __RPC_STUB ITuner_get_SignalStrength_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE ITuner_TriggerSignalEvents_Proxy( + ITuner * This, + /* [in] */ long Interval); + + +void __RPC_STUB ITuner_TriggerSignalEvents_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __ITuner_INTERFACE_DEFINED__ */ + + +#ifndef __IScanningTuner_INTERFACE_DEFINED__ +#define __IScanningTuner_INTERFACE_DEFINED__ + +/* interface IScanningTuner */ +/* [unique][helpstring][uuid][nonextensible][hidden][object] */ + + +EXTERN_C const IID IID_IScanningTuner; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("1DFD0A5C-0284-11d3-9D8E-00C04F72D980") + IScanningTuner : public ITuner + { + public: + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SeekUp( void) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SeekDown( void) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE ScanUp( + /* [in] */ long MillisecondsPause) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE ScanDown( + /* [in] */ long MillisecondsPause) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE AutoProgram( void) = 0; + + }; + +#else /* C style interface */ + + typedef struct IScanningTunerVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IScanningTuner * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IScanningTuner * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IScanningTuner * This); + + /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_TuningSpace )( + IScanningTuner * This, + /* [retval][out] */ ITuningSpace **TuningSpace); + + /* [helpstring][propput] */ HRESULT ( STDMETHODCALLTYPE *put_TuningSpace )( + IScanningTuner * This, + /* [in] */ ITuningSpace *TuningSpace); + + /* [helpstring][restricted][hidden] */ HRESULT ( STDMETHODCALLTYPE *EnumTuningSpaces )( + IScanningTuner * This, + /* [retval][out] */ IEnumTuningSpaces **ppEnum); + + /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_TuneRequest )( + IScanningTuner * This, + /* [retval][out] */ ITuneRequest **TuneRequest); + + /* [helpstring][propput] */ HRESULT ( STDMETHODCALLTYPE *put_TuneRequest )( + IScanningTuner * This, + /* [in] */ ITuneRequest *TuneRequest); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *Validate )( + IScanningTuner * This, + /* [in] */ ITuneRequest *TuneRequest); + + /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_PreferredComponentTypes )( + IScanningTuner * This, + /* [retval][out] */ IComponentTypes **ComponentTypes); + + /* [helpstring][propput] */ HRESULT ( STDMETHODCALLTYPE *put_PreferredComponentTypes )( + IScanningTuner * This, + /* [in] */ IComponentTypes *ComponentTypes); + + /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_SignalStrength )( + IScanningTuner * This, + /* [retval][out] */ long *Strength); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *TriggerSignalEvents )( + IScanningTuner * This, + /* [in] */ long Interval); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SeekUp )( + IScanningTuner * This); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SeekDown )( + IScanningTuner * This); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *ScanUp )( + IScanningTuner * This, + /* [in] */ long MillisecondsPause); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *ScanDown )( + IScanningTuner * This, + /* [in] */ long MillisecondsPause); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *AutoProgram )( + IScanningTuner * This); + + END_INTERFACE + } IScanningTunerVtbl; + + interface IScanningTuner + { + CONST_VTBL struct IScanningTunerVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IScanningTuner_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IScanningTuner_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IScanningTuner_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IScanningTuner_get_TuningSpace(This,TuningSpace) \ + (This)->lpVtbl -> get_TuningSpace(This,TuningSpace) + +#define IScanningTuner_put_TuningSpace(This,TuningSpace) \ + (This)->lpVtbl -> put_TuningSpace(This,TuningSpace) + +#define IScanningTuner_EnumTuningSpaces(This,ppEnum) \ + (This)->lpVtbl -> EnumTuningSpaces(This,ppEnum) + +#define IScanningTuner_get_TuneRequest(This,TuneRequest) \ + (This)->lpVtbl -> get_TuneRequest(This,TuneRequest) + +#define IScanningTuner_put_TuneRequest(This,TuneRequest) \ + (This)->lpVtbl -> put_TuneRequest(This,TuneRequest) + +#define IScanningTuner_Validate(This,TuneRequest) \ + (This)->lpVtbl -> Validate(This,TuneRequest) + +#define IScanningTuner_get_PreferredComponentTypes(This,ComponentTypes) \ + (This)->lpVtbl -> get_PreferredComponentTypes(This,ComponentTypes) + +#define IScanningTuner_put_PreferredComponentTypes(This,ComponentTypes) \ + (This)->lpVtbl -> put_PreferredComponentTypes(This,ComponentTypes) + +#define IScanningTuner_get_SignalStrength(This,Strength) \ + (This)->lpVtbl -> get_SignalStrength(This,Strength) + +#define IScanningTuner_TriggerSignalEvents(This,Interval) \ + (This)->lpVtbl -> TriggerSignalEvents(This,Interval) + + +#define IScanningTuner_SeekUp(This) \ + (This)->lpVtbl -> SeekUp(This) + +#define IScanningTuner_SeekDown(This) \ + (This)->lpVtbl -> SeekDown(This) + +#define IScanningTuner_ScanUp(This,MillisecondsPause) \ + (This)->lpVtbl -> ScanUp(This,MillisecondsPause) + +#define IScanningTuner_ScanDown(This,MillisecondsPause) \ + (This)->lpVtbl -> ScanDown(This,MillisecondsPause) + +#define IScanningTuner_AutoProgram(This) \ + (This)->lpVtbl -> AutoProgram(This) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IScanningTuner_SeekUp_Proxy( + IScanningTuner * This); + + +void __RPC_STUB IScanningTuner_SeekUp_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IScanningTuner_SeekDown_Proxy( + IScanningTuner * This); + + +void __RPC_STUB IScanningTuner_SeekDown_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IScanningTuner_ScanUp_Proxy( + IScanningTuner * This, + /* [in] */ long MillisecondsPause); + + +void __RPC_STUB IScanningTuner_ScanUp_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IScanningTuner_ScanDown_Proxy( + IScanningTuner * This, + /* [in] */ long MillisecondsPause); + + +void __RPC_STUB IScanningTuner_ScanDown_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IScanningTuner_AutoProgram_Proxy( + IScanningTuner * This); + + +void __RPC_STUB IScanningTuner_AutoProgram_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IScanningTuner_INTERFACE_DEFINED__ */ + + +#ifndef __IComponentType_INTERFACE_DEFINED__ +#define __IComponentType_INTERFACE_DEFINED__ + +/* interface IComponentType */ +/* [unique][helpstring][oleautomation][dual][uuid][nonextensible][hidden][object] */ + + +EXTERN_C const IID IID_IComponentType; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("6A340DC0-0311-11d3-9D8E-00C04F72D980") + IComponentType : public IDispatch + { + public: + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Category( + /* [retval][out] */ ComponentCategory *Category) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_Category( + /* [in] */ ComponentCategory Category) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_MediaMajorType( + /* [retval][out] */ BSTR *MediaMajorType) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_MediaMajorType( + /* [in] */ BSTR MediaMajorType) = 0; + + virtual /* [restricted][hidden][helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get__MediaMajorType( + /* [retval][out] */ GUID *MediaMajorTypeGuid) = 0; + + virtual /* [restricted][hidden][helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put__MediaMajorType( + /* [in] */ REFCLSID MediaMajorTypeGuid) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_MediaSubType( + /* [retval][out] */ BSTR *MediaSubType) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_MediaSubType( + /* [in] */ BSTR MediaSubType) = 0; + + virtual /* [restricted][hidden][helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get__MediaSubType( + /* [retval][out] */ GUID *MediaSubTypeGuid) = 0; + + virtual /* [restricted][hidden][helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put__MediaSubType( + /* [in] */ REFCLSID MediaSubTypeGuid) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_MediaFormatType( + /* [retval][out] */ BSTR *MediaFormatType) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_MediaFormatType( + /* [in] */ BSTR MediaFormatType) = 0; + + virtual /* [restricted][hidden][helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get__MediaFormatType( + /* [retval][out] */ GUID *MediaFormatTypeGuid) = 0; + + virtual /* [restricted][hidden][helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put__MediaFormatType( + /* [in] */ REFCLSID MediaFormatTypeGuid) = 0; + + virtual /* [helpstring][restricted][hidden][id][propget] */ HRESULT STDMETHODCALLTYPE get_MediaType( + /* [retval][out] */ AM_MEDIA_TYPE *MediaType) = 0; + + virtual /* [helpstring][restricted][hidden][id][propput] */ HRESULT STDMETHODCALLTYPE put_MediaType( + /* [in] */ AM_MEDIA_TYPE *MediaType) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Clone( + /* [retval][out] */ IComponentType **NewCT) = 0; + + }; + +#else /* C style interface */ + + typedef struct IComponentTypeVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IComponentType * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IComponentType * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IComponentType * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IComponentType * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IComponentType * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IComponentType * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IComponentType * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Category )( + IComponentType * This, + /* [retval][out] */ ComponentCategory *Category); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Category )( + IComponentType * This, + /* [in] */ ComponentCategory Category); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_MediaMajorType )( + IComponentType * This, + /* [retval][out] */ BSTR *MediaMajorType); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_MediaMajorType )( + IComponentType * This, + /* [in] */ BSTR MediaMajorType); + + /* [restricted][hidden][helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get__MediaMajorType )( + IComponentType * This, + /* [retval][out] */ GUID *MediaMajorTypeGuid); + + /* [restricted][hidden][helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put__MediaMajorType )( + IComponentType * This, + /* [in] */ REFCLSID MediaMajorTypeGuid); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_MediaSubType )( + IComponentType * This, + /* [retval][out] */ BSTR *MediaSubType); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_MediaSubType )( + IComponentType * This, + /* [in] */ BSTR MediaSubType); + + /* [restricted][hidden][helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get__MediaSubType )( + IComponentType * This, + /* [retval][out] */ GUID *MediaSubTypeGuid); + + /* [restricted][hidden][helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put__MediaSubType )( + IComponentType * This, + /* [in] */ REFCLSID MediaSubTypeGuid); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_MediaFormatType )( + IComponentType * This, + /* [retval][out] */ BSTR *MediaFormatType); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_MediaFormatType )( + IComponentType * This, + /* [in] */ BSTR MediaFormatType); + + /* [restricted][hidden][helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get__MediaFormatType )( + IComponentType * This, + /* [retval][out] */ GUID *MediaFormatTypeGuid); + + /* [restricted][hidden][helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put__MediaFormatType )( + IComponentType * This, + /* [in] */ REFCLSID MediaFormatTypeGuid); + + /* [helpstring][restricted][hidden][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_MediaType )( + IComponentType * This, + /* [retval][out] */ AM_MEDIA_TYPE *MediaType); + + /* [helpstring][restricted][hidden][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_MediaType )( + IComponentType * This, + /* [in] */ AM_MEDIA_TYPE *MediaType); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Clone )( + IComponentType * This, + /* [retval][out] */ IComponentType **NewCT); + + END_INTERFACE + } IComponentTypeVtbl; + + interface IComponentType + { + CONST_VTBL struct IComponentTypeVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IComponentType_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IComponentType_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IComponentType_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IComponentType_GetTypeInfoCount(This,pctinfo) \ + (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) + +#define IComponentType_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) + +#define IComponentType_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) + +#define IComponentType_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) + + +#define IComponentType_get_Category(This,Category) \ + (This)->lpVtbl -> get_Category(This,Category) + +#define IComponentType_put_Category(This,Category) \ + (This)->lpVtbl -> put_Category(This,Category) + +#define IComponentType_get_MediaMajorType(This,MediaMajorType) \ + (This)->lpVtbl -> get_MediaMajorType(This,MediaMajorType) + +#define IComponentType_put_MediaMajorType(This,MediaMajorType) \ + (This)->lpVtbl -> put_MediaMajorType(This,MediaMajorType) + +#define IComponentType_get__MediaMajorType(This,MediaMajorTypeGuid) \ + (This)->lpVtbl -> get__MediaMajorType(This,MediaMajorTypeGuid) + +#define IComponentType_put__MediaMajorType(This,MediaMajorTypeGuid) \ + (This)->lpVtbl -> put__MediaMajorType(This,MediaMajorTypeGuid) + +#define IComponentType_get_MediaSubType(This,MediaSubType) \ + (This)->lpVtbl -> get_MediaSubType(This,MediaSubType) + +#define IComponentType_put_MediaSubType(This,MediaSubType) \ + (This)->lpVtbl -> put_MediaSubType(This,MediaSubType) + +#define IComponentType_get__MediaSubType(This,MediaSubTypeGuid) \ + (This)->lpVtbl -> get__MediaSubType(This,MediaSubTypeGuid) + +#define IComponentType_put__MediaSubType(This,MediaSubTypeGuid) \ + (This)->lpVtbl -> put__MediaSubType(This,MediaSubTypeGuid) + +#define IComponentType_get_MediaFormatType(This,MediaFormatType) \ + (This)->lpVtbl -> get_MediaFormatType(This,MediaFormatType) + +#define IComponentType_put_MediaFormatType(This,MediaFormatType) \ + (This)->lpVtbl -> put_MediaFormatType(This,MediaFormatType) + +#define IComponentType_get__MediaFormatType(This,MediaFormatTypeGuid) \ + (This)->lpVtbl -> get__MediaFormatType(This,MediaFormatTypeGuid) + +#define IComponentType_put__MediaFormatType(This,MediaFormatTypeGuid) \ + (This)->lpVtbl -> put__MediaFormatType(This,MediaFormatTypeGuid) + +#define IComponentType_get_MediaType(This,MediaType) \ + (This)->lpVtbl -> get_MediaType(This,MediaType) + +#define IComponentType_put_MediaType(This,MediaType) \ + (This)->lpVtbl -> put_MediaType(This,MediaType) + +#define IComponentType_Clone(This,NewCT) \ + (This)->lpVtbl -> Clone(This,NewCT) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IComponentType_get_Category_Proxy( + IComponentType * This, + /* [retval][out] */ ComponentCategory *Category); + + +void __RPC_STUB IComponentType_get_Category_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IComponentType_put_Category_Proxy( + IComponentType * This, + /* [in] */ ComponentCategory Category); + + +void __RPC_STUB IComponentType_put_Category_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IComponentType_get_MediaMajorType_Proxy( + IComponentType * This, + /* [retval][out] */ BSTR *MediaMajorType); + + +void __RPC_STUB IComponentType_get_MediaMajorType_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IComponentType_put_MediaMajorType_Proxy( + IComponentType * This, + /* [in] */ BSTR MediaMajorType); + + +void __RPC_STUB IComponentType_put_MediaMajorType_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [restricted][hidden][helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IComponentType_get__MediaMajorType_Proxy( + IComponentType * This, + /* [retval][out] */ GUID *MediaMajorTypeGuid); + + +void __RPC_STUB IComponentType_get__MediaMajorType_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [restricted][hidden][helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IComponentType_put__MediaMajorType_Proxy( + IComponentType * This, + /* [in] */ REFCLSID MediaMajorTypeGuid); + + +void __RPC_STUB IComponentType_put__MediaMajorType_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IComponentType_get_MediaSubType_Proxy( + IComponentType * This, + /* [retval][out] */ BSTR *MediaSubType); + + +void __RPC_STUB IComponentType_get_MediaSubType_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IComponentType_put_MediaSubType_Proxy( + IComponentType * This, + /* [in] */ BSTR MediaSubType); + + +void __RPC_STUB IComponentType_put_MediaSubType_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [restricted][hidden][helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IComponentType_get__MediaSubType_Proxy( + IComponentType * This, + /* [retval][out] */ GUID *MediaSubTypeGuid); + + +void __RPC_STUB IComponentType_get__MediaSubType_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [restricted][hidden][helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IComponentType_put__MediaSubType_Proxy( + IComponentType * This, + /* [in] */ REFCLSID MediaSubTypeGuid); + + +void __RPC_STUB IComponentType_put__MediaSubType_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IComponentType_get_MediaFormatType_Proxy( + IComponentType * This, + /* [retval][out] */ BSTR *MediaFormatType); + + +void __RPC_STUB IComponentType_get_MediaFormatType_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IComponentType_put_MediaFormatType_Proxy( + IComponentType * This, + /* [in] */ BSTR MediaFormatType); + + +void __RPC_STUB IComponentType_put_MediaFormatType_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [restricted][hidden][helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IComponentType_get__MediaFormatType_Proxy( + IComponentType * This, + /* [retval][out] */ GUID *MediaFormatTypeGuid); + + +void __RPC_STUB IComponentType_get__MediaFormatType_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [restricted][hidden][helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IComponentType_put__MediaFormatType_Proxy( + IComponentType * This, + /* [in] */ REFCLSID MediaFormatTypeGuid); + + +void __RPC_STUB IComponentType_put__MediaFormatType_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][restricted][hidden][id][propget] */ HRESULT STDMETHODCALLTYPE IComponentType_get_MediaType_Proxy( + IComponentType * This, + /* [retval][out] */ AM_MEDIA_TYPE *MediaType); + + +void __RPC_STUB IComponentType_get_MediaType_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][restricted][hidden][id][propput] */ HRESULT STDMETHODCALLTYPE IComponentType_put_MediaType_Proxy( + IComponentType * This, + /* [in] */ AM_MEDIA_TYPE *MediaType); + + +void __RPC_STUB IComponentType_put_MediaType_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IComponentType_Clone_Proxy( + IComponentType * This, + /* [retval][out] */ IComponentType **NewCT); + + +void __RPC_STUB IComponentType_Clone_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IComponentType_INTERFACE_DEFINED__ */ + + +#ifndef __ILanguageComponentType_INTERFACE_DEFINED__ +#define __ILanguageComponentType_INTERFACE_DEFINED__ + +/* interface ILanguageComponentType */ +/* [unique][helpstring][oleautomation][dual][uuid][nonextensible][hidden][object] */ + + +EXTERN_C const IID IID_ILanguageComponentType; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("B874C8BA-0FA2-11d3-9D8E-00C04F72D980") + ILanguageComponentType : public IComponentType + { + public: + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_LangID( + /* [retval][out] */ long *LangID) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_LangID( + /* [in] */ long LangID) = 0; + + }; + +#else /* C style interface */ + + typedef struct ILanguageComponentTypeVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ILanguageComponentType * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ILanguageComponentType * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ILanguageComponentType * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + ILanguageComponentType * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + ILanguageComponentType * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + ILanguageComponentType * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + ILanguageComponentType * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Category )( + ILanguageComponentType * This, + /* [retval][out] */ ComponentCategory *Category); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Category )( + ILanguageComponentType * This, + /* [in] */ ComponentCategory Category); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_MediaMajorType )( + ILanguageComponentType * This, + /* [retval][out] */ BSTR *MediaMajorType); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_MediaMajorType )( + ILanguageComponentType * This, + /* [in] */ BSTR MediaMajorType); + + /* [restricted][hidden][helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get__MediaMajorType )( + ILanguageComponentType * This, + /* [retval][out] */ GUID *MediaMajorTypeGuid); + + /* [restricted][hidden][helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put__MediaMajorType )( + ILanguageComponentType * This, + /* [in] */ REFCLSID MediaMajorTypeGuid); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_MediaSubType )( + ILanguageComponentType * This, + /* [retval][out] */ BSTR *MediaSubType); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_MediaSubType )( + ILanguageComponentType * This, + /* [in] */ BSTR MediaSubType); + + /* [restricted][hidden][helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get__MediaSubType )( + ILanguageComponentType * This, + /* [retval][out] */ GUID *MediaSubTypeGuid); + + /* [restricted][hidden][helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put__MediaSubType )( + ILanguageComponentType * This, + /* [in] */ REFCLSID MediaSubTypeGuid); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_MediaFormatType )( + ILanguageComponentType * This, + /* [retval][out] */ BSTR *MediaFormatType); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_MediaFormatType )( + ILanguageComponentType * This, + /* [in] */ BSTR MediaFormatType); + + /* [restricted][hidden][helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get__MediaFormatType )( + ILanguageComponentType * This, + /* [retval][out] */ GUID *MediaFormatTypeGuid); + + /* [restricted][hidden][helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put__MediaFormatType )( + ILanguageComponentType * This, + /* [in] */ REFCLSID MediaFormatTypeGuid); + + /* [helpstring][restricted][hidden][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_MediaType )( + ILanguageComponentType * This, + /* [retval][out] */ AM_MEDIA_TYPE *MediaType); + + /* [helpstring][restricted][hidden][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_MediaType )( + ILanguageComponentType * This, + /* [in] */ AM_MEDIA_TYPE *MediaType); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Clone )( + ILanguageComponentType * This, + /* [retval][out] */ IComponentType **NewCT); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_LangID )( + ILanguageComponentType * This, + /* [retval][out] */ long *LangID); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_LangID )( + ILanguageComponentType * This, + /* [in] */ long LangID); + + END_INTERFACE + } ILanguageComponentTypeVtbl; + + interface ILanguageComponentType + { + CONST_VTBL struct ILanguageComponentTypeVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ILanguageComponentType_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define ILanguageComponentType_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define ILanguageComponentType_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define ILanguageComponentType_GetTypeInfoCount(This,pctinfo) \ + (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) + +#define ILanguageComponentType_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) + +#define ILanguageComponentType_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) + +#define ILanguageComponentType_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) + + +#define ILanguageComponentType_get_Category(This,Category) \ + (This)->lpVtbl -> get_Category(This,Category) + +#define ILanguageComponentType_put_Category(This,Category) \ + (This)->lpVtbl -> put_Category(This,Category) + +#define ILanguageComponentType_get_MediaMajorType(This,MediaMajorType) \ + (This)->lpVtbl -> get_MediaMajorType(This,MediaMajorType) + +#define ILanguageComponentType_put_MediaMajorType(This,MediaMajorType) \ + (This)->lpVtbl -> put_MediaMajorType(This,MediaMajorType) + +#define ILanguageComponentType_get__MediaMajorType(This,MediaMajorTypeGuid) \ + (This)->lpVtbl -> get__MediaMajorType(This,MediaMajorTypeGuid) + +#define ILanguageComponentType_put__MediaMajorType(This,MediaMajorTypeGuid) \ + (This)->lpVtbl -> put__MediaMajorType(This,MediaMajorTypeGuid) + +#define ILanguageComponentType_get_MediaSubType(This,MediaSubType) \ + (This)->lpVtbl -> get_MediaSubType(This,MediaSubType) + +#define ILanguageComponentType_put_MediaSubType(This,MediaSubType) \ + (This)->lpVtbl -> put_MediaSubType(This,MediaSubType) + +#define ILanguageComponentType_get__MediaSubType(This,MediaSubTypeGuid) \ + (This)->lpVtbl -> get__MediaSubType(This,MediaSubTypeGuid) + +#define ILanguageComponentType_put__MediaSubType(This,MediaSubTypeGuid) \ + (This)->lpVtbl -> put__MediaSubType(This,MediaSubTypeGuid) + +#define ILanguageComponentType_get_MediaFormatType(This,MediaFormatType) \ + (This)->lpVtbl -> get_MediaFormatType(This,MediaFormatType) + +#define ILanguageComponentType_put_MediaFormatType(This,MediaFormatType) \ + (This)->lpVtbl -> put_MediaFormatType(This,MediaFormatType) + +#define ILanguageComponentType_get__MediaFormatType(This,MediaFormatTypeGuid) \ + (This)->lpVtbl -> get__MediaFormatType(This,MediaFormatTypeGuid) + +#define ILanguageComponentType_put__MediaFormatType(This,MediaFormatTypeGuid) \ + (This)->lpVtbl -> put__MediaFormatType(This,MediaFormatTypeGuid) + +#define ILanguageComponentType_get_MediaType(This,MediaType) \ + (This)->lpVtbl -> get_MediaType(This,MediaType) + +#define ILanguageComponentType_put_MediaType(This,MediaType) \ + (This)->lpVtbl -> put_MediaType(This,MediaType) + +#define ILanguageComponentType_Clone(This,NewCT) \ + (This)->lpVtbl -> Clone(This,NewCT) + + +#define ILanguageComponentType_get_LangID(This,LangID) \ + (This)->lpVtbl -> get_LangID(This,LangID) + +#define ILanguageComponentType_put_LangID(This,LangID) \ + (This)->lpVtbl -> put_LangID(This,LangID) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE ILanguageComponentType_get_LangID_Proxy( + ILanguageComponentType * This, + /* [retval][out] */ long *LangID); + + +void __RPC_STUB ILanguageComponentType_get_LangID_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE ILanguageComponentType_put_LangID_Proxy( + ILanguageComponentType * This, + /* [in] */ long LangID); + + +void __RPC_STUB ILanguageComponentType_put_LangID_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __ILanguageComponentType_INTERFACE_DEFINED__ */ + + +#ifndef __IMPEG2ComponentType_INTERFACE_DEFINED__ +#define __IMPEG2ComponentType_INTERFACE_DEFINED__ + +/* interface IMPEG2ComponentType */ +/* [unique][helpstring][oleautomation][dual][uuid][nonextensible][hidden][object] */ + + +EXTERN_C const IID IID_IMPEG2ComponentType; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("2C073D84-B51C-48c9-AA9F-68971E1F6E38") + IMPEG2ComponentType : public ILanguageComponentType + { + public: + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_StreamType( + /* [retval][out] */ MPEG2StreamType *MP2StreamType) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_StreamType( + /* [in] */ MPEG2StreamType MP2StreamType) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMPEG2ComponentTypeVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMPEG2ComponentType * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMPEG2ComponentType * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMPEG2ComponentType * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IMPEG2ComponentType * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IMPEG2ComponentType * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IMPEG2ComponentType * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IMPEG2ComponentType * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Category )( + IMPEG2ComponentType * This, + /* [retval][out] */ ComponentCategory *Category); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Category )( + IMPEG2ComponentType * This, + /* [in] */ ComponentCategory Category); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_MediaMajorType )( + IMPEG2ComponentType * This, + /* [retval][out] */ BSTR *MediaMajorType); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_MediaMajorType )( + IMPEG2ComponentType * This, + /* [in] */ BSTR MediaMajorType); + + /* [restricted][hidden][helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get__MediaMajorType )( + IMPEG2ComponentType * This, + /* [retval][out] */ GUID *MediaMajorTypeGuid); + + /* [restricted][hidden][helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put__MediaMajorType )( + IMPEG2ComponentType * This, + /* [in] */ REFCLSID MediaMajorTypeGuid); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_MediaSubType )( + IMPEG2ComponentType * This, + /* [retval][out] */ BSTR *MediaSubType); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_MediaSubType )( + IMPEG2ComponentType * This, + /* [in] */ BSTR MediaSubType); + + /* [restricted][hidden][helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get__MediaSubType )( + IMPEG2ComponentType * This, + /* [retval][out] */ GUID *MediaSubTypeGuid); + + /* [restricted][hidden][helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put__MediaSubType )( + IMPEG2ComponentType * This, + /* [in] */ REFCLSID MediaSubTypeGuid); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_MediaFormatType )( + IMPEG2ComponentType * This, + /* [retval][out] */ BSTR *MediaFormatType); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_MediaFormatType )( + IMPEG2ComponentType * This, + /* [in] */ BSTR MediaFormatType); + + /* [restricted][hidden][helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get__MediaFormatType )( + IMPEG2ComponentType * This, + /* [retval][out] */ GUID *MediaFormatTypeGuid); + + /* [restricted][hidden][helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put__MediaFormatType )( + IMPEG2ComponentType * This, + /* [in] */ REFCLSID MediaFormatTypeGuid); + + /* [helpstring][restricted][hidden][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_MediaType )( + IMPEG2ComponentType * This, + /* [retval][out] */ AM_MEDIA_TYPE *MediaType); + + /* [helpstring][restricted][hidden][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_MediaType )( + IMPEG2ComponentType * This, + /* [in] */ AM_MEDIA_TYPE *MediaType); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Clone )( + IMPEG2ComponentType * This, + /* [retval][out] */ IComponentType **NewCT); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_LangID )( + IMPEG2ComponentType * This, + /* [retval][out] */ long *LangID); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_LangID )( + IMPEG2ComponentType * This, + /* [in] */ long LangID); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_StreamType )( + IMPEG2ComponentType * This, + /* [retval][out] */ MPEG2StreamType *MP2StreamType); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_StreamType )( + IMPEG2ComponentType * This, + /* [in] */ MPEG2StreamType MP2StreamType); + + END_INTERFACE + } IMPEG2ComponentTypeVtbl; + + interface IMPEG2ComponentType + { + CONST_VTBL struct IMPEG2ComponentTypeVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMPEG2ComponentType_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IMPEG2ComponentType_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IMPEG2ComponentType_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IMPEG2ComponentType_GetTypeInfoCount(This,pctinfo) \ + (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) + +#define IMPEG2ComponentType_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) + +#define IMPEG2ComponentType_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) + +#define IMPEG2ComponentType_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) + + +#define IMPEG2ComponentType_get_Category(This,Category) \ + (This)->lpVtbl -> get_Category(This,Category) + +#define IMPEG2ComponentType_put_Category(This,Category) \ + (This)->lpVtbl -> put_Category(This,Category) + +#define IMPEG2ComponentType_get_MediaMajorType(This,MediaMajorType) \ + (This)->lpVtbl -> get_MediaMajorType(This,MediaMajorType) + +#define IMPEG2ComponentType_put_MediaMajorType(This,MediaMajorType) \ + (This)->lpVtbl -> put_MediaMajorType(This,MediaMajorType) + +#define IMPEG2ComponentType_get__MediaMajorType(This,MediaMajorTypeGuid) \ + (This)->lpVtbl -> get__MediaMajorType(This,MediaMajorTypeGuid) + +#define IMPEG2ComponentType_put__MediaMajorType(This,MediaMajorTypeGuid) \ + (This)->lpVtbl -> put__MediaMajorType(This,MediaMajorTypeGuid) + +#define IMPEG2ComponentType_get_MediaSubType(This,MediaSubType) \ + (This)->lpVtbl -> get_MediaSubType(This,MediaSubType) + +#define IMPEG2ComponentType_put_MediaSubType(This,MediaSubType) \ + (This)->lpVtbl -> put_MediaSubType(This,MediaSubType) + +#define IMPEG2ComponentType_get__MediaSubType(This,MediaSubTypeGuid) \ + (This)->lpVtbl -> get__MediaSubType(This,MediaSubTypeGuid) + +#define IMPEG2ComponentType_put__MediaSubType(This,MediaSubTypeGuid) \ + (This)->lpVtbl -> put__MediaSubType(This,MediaSubTypeGuid) + +#define IMPEG2ComponentType_get_MediaFormatType(This,MediaFormatType) \ + (This)->lpVtbl -> get_MediaFormatType(This,MediaFormatType) + +#define IMPEG2ComponentType_put_MediaFormatType(This,MediaFormatType) \ + (This)->lpVtbl -> put_MediaFormatType(This,MediaFormatType) + +#define IMPEG2ComponentType_get__MediaFormatType(This,MediaFormatTypeGuid) \ + (This)->lpVtbl -> get__MediaFormatType(This,MediaFormatTypeGuid) + +#define IMPEG2ComponentType_put__MediaFormatType(This,MediaFormatTypeGuid) \ + (This)->lpVtbl -> put__MediaFormatType(This,MediaFormatTypeGuid) + +#define IMPEG2ComponentType_get_MediaType(This,MediaType) \ + (This)->lpVtbl -> get_MediaType(This,MediaType) + +#define IMPEG2ComponentType_put_MediaType(This,MediaType) \ + (This)->lpVtbl -> put_MediaType(This,MediaType) + +#define IMPEG2ComponentType_Clone(This,NewCT) \ + (This)->lpVtbl -> Clone(This,NewCT) + + +#define IMPEG2ComponentType_get_LangID(This,LangID) \ + (This)->lpVtbl -> get_LangID(This,LangID) + +#define IMPEG2ComponentType_put_LangID(This,LangID) \ + (This)->lpVtbl -> put_LangID(This,LangID) + + +#define IMPEG2ComponentType_get_StreamType(This,MP2StreamType) \ + (This)->lpVtbl -> get_StreamType(This,MP2StreamType) + +#define IMPEG2ComponentType_put_StreamType(This,MP2StreamType) \ + (This)->lpVtbl -> put_StreamType(This,MP2StreamType) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IMPEG2ComponentType_get_StreamType_Proxy( + IMPEG2ComponentType * This, + /* [retval][out] */ MPEG2StreamType *MP2StreamType); + + +void __RPC_STUB IMPEG2ComponentType_get_StreamType_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IMPEG2ComponentType_put_StreamType_Proxy( + IMPEG2ComponentType * This, + /* [in] */ MPEG2StreamType MP2StreamType); + + +void __RPC_STUB IMPEG2ComponentType_put_StreamType_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IMPEG2ComponentType_INTERFACE_DEFINED__ */ + + +#ifndef __IATSCComponentType_INTERFACE_DEFINED__ +#define __IATSCComponentType_INTERFACE_DEFINED__ + +/* interface IATSCComponentType */ +/* [unique][helpstring][oleautomation][dual][uuid][nonextensible][hidden][object] */ + + +EXTERN_C const IID IID_IATSCComponentType; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("FC189E4D-7BD4-4125-B3B3-3A76A332CC96") + IATSCComponentType : public IMPEG2ComponentType + { + public: + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Flags( + /* [retval][out] */ long *Flags) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_Flags( + /* [in] */ long flags) = 0; + + }; + +#else /* C style interface */ + + typedef struct IATSCComponentTypeVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IATSCComponentType * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IATSCComponentType * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IATSCComponentType * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IATSCComponentType * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IATSCComponentType * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IATSCComponentType * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IATSCComponentType * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Category )( + IATSCComponentType * This, + /* [retval][out] */ ComponentCategory *Category); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Category )( + IATSCComponentType * This, + /* [in] */ ComponentCategory Category); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_MediaMajorType )( + IATSCComponentType * This, + /* [retval][out] */ BSTR *MediaMajorType); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_MediaMajorType )( + IATSCComponentType * This, + /* [in] */ BSTR MediaMajorType); + + /* [restricted][hidden][helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get__MediaMajorType )( + IATSCComponentType * This, + /* [retval][out] */ GUID *MediaMajorTypeGuid); + + /* [restricted][hidden][helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put__MediaMajorType )( + IATSCComponentType * This, + /* [in] */ REFCLSID MediaMajorTypeGuid); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_MediaSubType )( + IATSCComponentType * This, + /* [retval][out] */ BSTR *MediaSubType); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_MediaSubType )( + IATSCComponentType * This, + /* [in] */ BSTR MediaSubType); + + /* [restricted][hidden][helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get__MediaSubType )( + IATSCComponentType * This, + /* [retval][out] */ GUID *MediaSubTypeGuid); + + /* [restricted][hidden][helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put__MediaSubType )( + IATSCComponentType * This, + /* [in] */ REFCLSID MediaSubTypeGuid); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_MediaFormatType )( + IATSCComponentType * This, + /* [retval][out] */ BSTR *MediaFormatType); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_MediaFormatType )( + IATSCComponentType * This, + /* [in] */ BSTR MediaFormatType); + + /* [restricted][hidden][helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get__MediaFormatType )( + IATSCComponentType * This, + /* [retval][out] */ GUID *MediaFormatTypeGuid); + + /* [restricted][hidden][helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put__MediaFormatType )( + IATSCComponentType * This, + /* [in] */ REFCLSID MediaFormatTypeGuid); + + /* [helpstring][restricted][hidden][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_MediaType )( + IATSCComponentType * This, + /* [retval][out] */ AM_MEDIA_TYPE *MediaType); + + /* [helpstring][restricted][hidden][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_MediaType )( + IATSCComponentType * This, + /* [in] */ AM_MEDIA_TYPE *MediaType); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Clone )( + IATSCComponentType * This, + /* [retval][out] */ IComponentType **NewCT); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_LangID )( + IATSCComponentType * This, + /* [retval][out] */ long *LangID); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_LangID )( + IATSCComponentType * This, + /* [in] */ long LangID); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_StreamType )( + IATSCComponentType * This, + /* [retval][out] */ MPEG2StreamType *MP2StreamType); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_StreamType )( + IATSCComponentType * This, + /* [in] */ MPEG2StreamType MP2StreamType); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Flags )( + IATSCComponentType * This, + /* [retval][out] */ long *Flags); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Flags )( + IATSCComponentType * This, + /* [in] */ long flags); + + END_INTERFACE + } IATSCComponentTypeVtbl; + + interface IATSCComponentType + { + CONST_VTBL struct IATSCComponentTypeVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IATSCComponentType_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IATSCComponentType_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IATSCComponentType_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IATSCComponentType_GetTypeInfoCount(This,pctinfo) \ + (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) + +#define IATSCComponentType_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) + +#define IATSCComponentType_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) + +#define IATSCComponentType_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) + + +#define IATSCComponentType_get_Category(This,Category) \ + (This)->lpVtbl -> get_Category(This,Category) + +#define IATSCComponentType_put_Category(This,Category) \ + (This)->lpVtbl -> put_Category(This,Category) + +#define IATSCComponentType_get_MediaMajorType(This,MediaMajorType) \ + (This)->lpVtbl -> get_MediaMajorType(This,MediaMajorType) + +#define IATSCComponentType_put_MediaMajorType(This,MediaMajorType) \ + (This)->lpVtbl -> put_MediaMajorType(This,MediaMajorType) + +#define IATSCComponentType_get__MediaMajorType(This,MediaMajorTypeGuid) \ + (This)->lpVtbl -> get__MediaMajorType(This,MediaMajorTypeGuid) + +#define IATSCComponentType_put__MediaMajorType(This,MediaMajorTypeGuid) \ + (This)->lpVtbl -> put__MediaMajorType(This,MediaMajorTypeGuid) + +#define IATSCComponentType_get_MediaSubType(This,MediaSubType) \ + (This)->lpVtbl -> get_MediaSubType(This,MediaSubType) + +#define IATSCComponentType_put_MediaSubType(This,MediaSubType) \ + (This)->lpVtbl -> put_MediaSubType(This,MediaSubType) + +#define IATSCComponentType_get__MediaSubType(This,MediaSubTypeGuid) \ + (This)->lpVtbl -> get__MediaSubType(This,MediaSubTypeGuid) + +#define IATSCComponentType_put__MediaSubType(This,MediaSubTypeGuid) \ + (This)->lpVtbl -> put__MediaSubType(This,MediaSubTypeGuid) + +#define IATSCComponentType_get_MediaFormatType(This,MediaFormatType) \ + (This)->lpVtbl -> get_MediaFormatType(This,MediaFormatType) + +#define IATSCComponentType_put_MediaFormatType(This,MediaFormatType) \ + (This)->lpVtbl -> put_MediaFormatType(This,MediaFormatType) + +#define IATSCComponentType_get__MediaFormatType(This,MediaFormatTypeGuid) \ + (This)->lpVtbl -> get__MediaFormatType(This,MediaFormatTypeGuid) + +#define IATSCComponentType_put__MediaFormatType(This,MediaFormatTypeGuid) \ + (This)->lpVtbl -> put__MediaFormatType(This,MediaFormatTypeGuid) + +#define IATSCComponentType_get_MediaType(This,MediaType) \ + (This)->lpVtbl -> get_MediaType(This,MediaType) + +#define IATSCComponentType_put_MediaType(This,MediaType) \ + (This)->lpVtbl -> put_MediaType(This,MediaType) + +#define IATSCComponentType_Clone(This,NewCT) \ + (This)->lpVtbl -> Clone(This,NewCT) + + +#define IATSCComponentType_get_LangID(This,LangID) \ + (This)->lpVtbl -> get_LangID(This,LangID) + +#define IATSCComponentType_put_LangID(This,LangID) \ + (This)->lpVtbl -> put_LangID(This,LangID) + + +#define IATSCComponentType_get_StreamType(This,MP2StreamType) \ + (This)->lpVtbl -> get_StreamType(This,MP2StreamType) + +#define IATSCComponentType_put_StreamType(This,MP2StreamType) \ + (This)->lpVtbl -> put_StreamType(This,MP2StreamType) + + +#define IATSCComponentType_get_Flags(This,Flags) \ + (This)->lpVtbl -> get_Flags(This,Flags) + +#define IATSCComponentType_put_Flags(This,flags) \ + (This)->lpVtbl -> put_Flags(This,flags) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IATSCComponentType_get_Flags_Proxy( + IATSCComponentType * This, + /* [retval][out] */ long *Flags); + + +void __RPC_STUB IATSCComponentType_get_Flags_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IATSCComponentType_put_Flags_Proxy( + IATSCComponentType * This, + /* [in] */ long flags); + + +void __RPC_STUB IATSCComponentType_put_Flags_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IATSCComponentType_INTERFACE_DEFINED__ */ + + +#ifndef __IEnumComponentTypes_INTERFACE_DEFINED__ +#define __IEnumComponentTypes_INTERFACE_DEFINED__ + +/* interface IEnumComponentTypes */ +/* [unique][uuid][object][restricted][hidden] */ + + +EXTERN_C const IID IID_IEnumComponentTypes; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("8A674B4A-1F63-11d3-B64C-00C04F79498E") + IEnumComponentTypes : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE Next( + /* [in] */ ULONG celt, + /* [length_is][size_is][out] */ IComponentType **rgelt, + /* [out] */ ULONG *pceltFetched) = 0; + + virtual HRESULT STDMETHODCALLTYPE Skip( + /* [in] */ ULONG celt) = 0; + + virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE Clone( + /* [out] */ IEnumComponentTypes **ppEnum) = 0; + + }; + +#else /* C style interface */ + + typedef struct IEnumComponentTypesVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IEnumComponentTypes * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IEnumComponentTypes * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IEnumComponentTypes * This); + + HRESULT ( STDMETHODCALLTYPE *Next )( + IEnumComponentTypes * This, + /* [in] */ ULONG celt, + /* [length_is][size_is][out] */ IComponentType **rgelt, + /* [out] */ ULONG *pceltFetched); + + HRESULT ( STDMETHODCALLTYPE *Skip )( + IEnumComponentTypes * This, + /* [in] */ ULONG celt); + + HRESULT ( STDMETHODCALLTYPE *Reset )( + IEnumComponentTypes * This); + + HRESULT ( STDMETHODCALLTYPE *Clone )( + IEnumComponentTypes * This, + /* [out] */ IEnumComponentTypes **ppEnum); + + END_INTERFACE + } IEnumComponentTypesVtbl; + + interface IEnumComponentTypes + { + CONST_VTBL struct IEnumComponentTypesVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IEnumComponentTypes_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IEnumComponentTypes_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IEnumComponentTypes_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IEnumComponentTypes_Next(This,celt,rgelt,pceltFetched) \ + (This)->lpVtbl -> Next(This,celt,rgelt,pceltFetched) + +#define IEnumComponentTypes_Skip(This,celt) \ + (This)->lpVtbl -> Skip(This,celt) + +#define IEnumComponentTypes_Reset(This) \ + (This)->lpVtbl -> Reset(This) + +#define IEnumComponentTypes_Clone(This,ppEnum) \ + (This)->lpVtbl -> Clone(This,ppEnum) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IEnumComponentTypes_Next_Proxy( + IEnumComponentTypes * This, + /* [in] */ ULONG celt, + /* [length_is][size_is][out] */ IComponentType **rgelt, + /* [out] */ ULONG *pceltFetched); + + +void __RPC_STUB IEnumComponentTypes_Next_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IEnumComponentTypes_Skip_Proxy( + IEnumComponentTypes * This, + /* [in] */ ULONG celt); + + +void __RPC_STUB IEnumComponentTypes_Skip_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IEnumComponentTypes_Reset_Proxy( + IEnumComponentTypes * This); + + +void __RPC_STUB IEnumComponentTypes_Reset_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IEnumComponentTypes_Clone_Proxy( + IEnumComponentTypes * This, + /* [out] */ IEnumComponentTypes **ppEnum); + + +void __RPC_STUB IEnumComponentTypes_Clone_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IEnumComponentTypes_INTERFACE_DEFINED__ */ + + +#ifndef __IComponentTypes_INTERFACE_DEFINED__ +#define __IComponentTypes_INTERFACE_DEFINED__ + +/* interface IComponentTypes */ +/* [unique][helpstring][oleautomation][dual][uuid][nonextensible][hidden][object] */ + + +EXTERN_C const IID IID_IComponentTypes; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("0DC13D4A-0313-11d3-9D8E-00C04F72D980") + IComponentTypes : public IDispatch + { + public: + virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_Count( + /* [retval][out] */ long *Count) = 0; + + virtual /* [restricted][hidden][id][propget] */ HRESULT STDMETHODCALLTYPE get__NewEnum( + /* [retval][out] */ IEnumVARIANT **ppNewEnum) = 0; + + virtual /* [helpstring][restricted][hidden] */ HRESULT STDMETHODCALLTYPE EnumComponentTypes( + /* [retval][out] */ IEnumComponentTypes **ppNewEnum) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Item( + /* [in] */ VARIANT Index, + /* [retval][out] */ IComponentType **ComponentType) = 0; + + virtual /* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE put_Item( + /* [in] */ VARIANT Index, + /* [in] */ IComponentType *ComponentType) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Add( + /* [in] */ IComponentType *ComponentType, + /* [retval][out] */ VARIANT *NewIndex) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Remove( + /* [in] */ VARIANT Index) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE Clone( + /* [retval][out] */ IComponentTypes **NewList) = 0; + + }; + +#else /* C style interface */ + + typedef struct IComponentTypesVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IComponentTypes * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IComponentTypes * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IComponentTypes * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IComponentTypes * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IComponentTypes * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IComponentTypes * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IComponentTypes * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Count )( + IComponentTypes * This, + /* [retval][out] */ long *Count); + + /* [restricted][hidden][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get__NewEnum )( + IComponentTypes * This, + /* [retval][out] */ IEnumVARIANT **ppNewEnum); + + /* [helpstring][restricted][hidden] */ HRESULT ( STDMETHODCALLTYPE *EnumComponentTypes )( + IComponentTypes * This, + /* [retval][out] */ IEnumComponentTypes **ppNewEnum); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Item )( + IComponentTypes * This, + /* [in] */ VARIANT Index, + /* [retval][out] */ IComponentType **ComponentType); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Item )( + IComponentTypes * This, + /* [in] */ VARIANT Index, + /* [in] */ IComponentType *ComponentType); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Add )( + IComponentTypes * This, + /* [in] */ IComponentType *ComponentType, + /* [retval][out] */ VARIANT *NewIndex); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Remove )( + IComponentTypes * This, + /* [in] */ VARIANT Index); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *Clone )( + IComponentTypes * This, + /* [retval][out] */ IComponentTypes **NewList); + + END_INTERFACE + } IComponentTypesVtbl; + + interface IComponentTypes + { + CONST_VTBL struct IComponentTypesVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IComponentTypes_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IComponentTypes_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IComponentTypes_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IComponentTypes_GetTypeInfoCount(This,pctinfo) \ + (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) + +#define IComponentTypes_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) + +#define IComponentTypes_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) + +#define IComponentTypes_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) + + +#define IComponentTypes_get_Count(This,Count) \ + (This)->lpVtbl -> get_Count(This,Count) + +#define IComponentTypes_get__NewEnum(This,ppNewEnum) \ + (This)->lpVtbl -> get__NewEnum(This,ppNewEnum) + +#define IComponentTypes_EnumComponentTypes(This,ppNewEnum) \ + (This)->lpVtbl -> EnumComponentTypes(This,ppNewEnum) + +#define IComponentTypes_get_Item(This,Index,ComponentType) \ + (This)->lpVtbl -> get_Item(This,Index,ComponentType) + +#define IComponentTypes_put_Item(This,Index,ComponentType) \ + (This)->lpVtbl -> put_Item(This,Index,ComponentType) + +#define IComponentTypes_Add(This,ComponentType,NewIndex) \ + (This)->lpVtbl -> Add(This,ComponentType,NewIndex) + +#define IComponentTypes_Remove(This,Index) \ + (This)->lpVtbl -> Remove(This,Index) + +#define IComponentTypes_Clone(This,NewList) \ + (This)->lpVtbl -> Clone(This,NewList) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IComponentTypes_get_Count_Proxy( + IComponentTypes * This, + /* [retval][out] */ long *Count); + + +void __RPC_STUB IComponentTypes_get_Count_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [restricted][hidden][id][propget] */ HRESULT STDMETHODCALLTYPE IComponentTypes_get__NewEnum_Proxy( + IComponentTypes * This, + /* [retval][out] */ IEnumVARIANT **ppNewEnum); + + +void __RPC_STUB IComponentTypes_get__NewEnum_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][restricted][hidden] */ HRESULT STDMETHODCALLTYPE IComponentTypes_EnumComponentTypes_Proxy( + IComponentTypes * This, + /* [retval][out] */ IEnumComponentTypes **ppNewEnum); + + +void __RPC_STUB IComponentTypes_EnumComponentTypes_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE IComponentTypes_get_Item_Proxy( + IComponentTypes * This, + /* [in] */ VARIANT Index, + /* [retval][out] */ IComponentType **ComponentType); + + +void __RPC_STUB IComponentTypes_get_Item_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE IComponentTypes_put_Item_Proxy( + IComponentTypes * This, + /* [in] */ VARIANT Index, + /* [in] */ IComponentType *ComponentType); + + +void __RPC_STUB IComponentTypes_put_Item_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IComponentTypes_Add_Proxy( + IComponentTypes * This, + /* [in] */ IComponentType *ComponentType, + /* [retval][out] */ VARIANT *NewIndex); + + +void __RPC_STUB IComponentTypes_Add_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IComponentTypes_Remove_Proxy( + IComponentTypes * This, + /* [in] */ VARIANT Index); + + +void __RPC_STUB IComponentTypes_Remove_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IComponentTypes_Clone_Proxy( + IComponentTypes * This, + /* [retval][out] */ IComponentTypes **NewList); + + +void __RPC_STUB IComponentTypes_Clone_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IComponentTypes_INTERFACE_DEFINED__ */ + + +#ifndef __IComponent_INTERFACE_DEFINED__ +#define __IComponent_INTERFACE_DEFINED__ + +/* interface IComponent */ +/* [unique][helpstring][oleautomation][dual][uuid][nonextensible][object] */ + + +EXTERN_C const IID IID_IComponent; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("1A5576FC-0E19-11d3-9D8E-00C04F72D980") + IComponent : public IDispatch + { + public: + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Type( + /* [retval][out] */ IComponentType **CT) = 0; + + virtual /* [helpstring][id][propput][restricted][hidden] */ HRESULT STDMETHODCALLTYPE put_Type( + /* [in] */ IComponentType *CT) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_DescLangID( + /* [retval][out] */ long *LangID) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_DescLangID( + /* [in] */ long LangID) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Status( + /* [retval][out] */ ComponentStatus *Status) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_Status( + /* [in] */ ComponentStatus Status) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Description( + /* [retval][out] */ BSTR *Description) = 0; + + virtual /* [helpstring][id][propput][restricted][hidden] */ HRESULT STDMETHODCALLTYPE put_Description( + /* [in] */ BSTR Description) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Clone( + /* [retval][out] */ IComponent **NewComponent) = 0; + + }; + +#else /* C style interface */ + + typedef struct IComponentVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IComponent * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IComponent * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IComponent * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IComponent * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IComponent * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IComponent * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IComponent * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Type )( + IComponent * This, + /* [retval][out] */ IComponentType **CT); + + /* [helpstring][id][propput][restricted][hidden] */ HRESULT ( STDMETHODCALLTYPE *put_Type )( + IComponent * This, + /* [in] */ IComponentType *CT); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_DescLangID )( + IComponent * This, + /* [retval][out] */ long *LangID); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_DescLangID )( + IComponent * This, + /* [in] */ long LangID); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Status )( + IComponent * This, + /* [retval][out] */ ComponentStatus *Status); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Status )( + IComponent * This, + /* [in] */ ComponentStatus Status); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Description )( + IComponent * This, + /* [retval][out] */ BSTR *Description); + + /* [helpstring][id][propput][restricted][hidden] */ HRESULT ( STDMETHODCALLTYPE *put_Description )( + IComponent * This, + /* [in] */ BSTR Description); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Clone )( + IComponent * This, + /* [retval][out] */ IComponent **NewComponent); + + END_INTERFACE + } IComponentVtbl; + + interface IComponent + { + CONST_VTBL struct IComponentVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IComponent_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IComponent_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IComponent_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IComponent_GetTypeInfoCount(This,pctinfo) \ + (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) + +#define IComponent_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) + +#define IComponent_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) + +#define IComponent_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) + + +#define IComponent_get_Type(This,CT) \ + (This)->lpVtbl -> get_Type(This,CT) + +#define IComponent_put_Type(This,CT) \ + (This)->lpVtbl -> put_Type(This,CT) + +#define IComponent_get_DescLangID(This,LangID) \ + (This)->lpVtbl -> get_DescLangID(This,LangID) + +#define IComponent_put_DescLangID(This,LangID) \ + (This)->lpVtbl -> put_DescLangID(This,LangID) + +#define IComponent_get_Status(This,Status) \ + (This)->lpVtbl -> get_Status(This,Status) + +#define IComponent_put_Status(This,Status) \ + (This)->lpVtbl -> put_Status(This,Status) + +#define IComponent_get_Description(This,Description) \ + (This)->lpVtbl -> get_Description(This,Description) + +#define IComponent_put_Description(This,Description) \ + (This)->lpVtbl -> put_Description(This,Description) + +#define IComponent_Clone(This,NewComponent) \ + (This)->lpVtbl -> Clone(This,NewComponent) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IComponent_get_Type_Proxy( + IComponent * This, + /* [retval][out] */ IComponentType **CT); + + +void __RPC_STUB IComponent_get_Type_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput][restricted][hidden] */ HRESULT STDMETHODCALLTYPE IComponent_put_Type_Proxy( + IComponent * This, + /* [in] */ IComponentType *CT); + + +void __RPC_STUB IComponent_put_Type_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IComponent_get_DescLangID_Proxy( + IComponent * This, + /* [retval][out] */ long *LangID); + + +void __RPC_STUB IComponent_get_DescLangID_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IComponent_put_DescLangID_Proxy( + IComponent * This, + /* [in] */ long LangID); + + +void __RPC_STUB IComponent_put_DescLangID_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IComponent_get_Status_Proxy( + IComponent * This, + /* [retval][out] */ ComponentStatus *Status); + + +void __RPC_STUB IComponent_get_Status_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IComponent_put_Status_Proxy( + IComponent * This, + /* [in] */ ComponentStatus Status); + + +void __RPC_STUB IComponent_put_Status_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IComponent_get_Description_Proxy( + IComponent * This, + /* [retval][out] */ BSTR *Description); + + +void __RPC_STUB IComponent_get_Description_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput][restricted][hidden] */ HRESULT STDMETHODCALLTYPE IComponent_put_Description_Proxy( + IComponent * This, + /* [in] */ BSTR Description); + + +void __RPC_STUB IComponent_put_Description_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IComponent_Clone_Proxy( + IComponent * This, + /* [retval][out] */ IComponent **NewComponent); + + +void __RPC_STUB IComponent_Clone_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IComponent_INTERFACE_DEFINED__ */ + + +#ifndef __IMPEG2Component_INTERFACE_DEFINED__ +#define __IMPEG2Component_INTERFACE_DEFINED__ + +/* interface IMPEG2Component */ +/* [unique][helpstring][oleautomation][dual][uuid][nonextensible][object] */ + + +EXTERN_C const IID IID_IMPEG2Component; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("1493E353-1EB6-473c-802D-8E6B8EC9D2A9") + IMPEG2Component : public IComponent + { + public: + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_PID( + /* [retval][out] */ long *PID) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_PID( + /* [in] */ long PID) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_PCRPID( + /* [retval][out] */ long *PCRPID) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_PCRPID( + /* [in] */ long PCRPID) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_ProgramNumber( + /* [retval][out] */ long *ProgramNumber) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_ProgramNumber( + /* [in] */ long ProgramNumber) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMPEG2ComponentVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMPEG2Component * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMPEG2Component * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMPEG2Component * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IMPEG2Component * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IMPEG2Component * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IMPEG2Component * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IMPEG2Component * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Type )( + IMPEG2Component * This, + /* [retval][out] */ IComponentType **CT); + + /* [helpstring][id][propput][restricted][hidden] */ HRESULT ( STDMETHODCALLTYPE *put_Type )( + IMPEG2Component * This, + /* [in] */ IComponentType *CT); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_DescLangID )( + IMPEG2Component * This, + /* [retval][out] */ long *LangID); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_DescLangID )( + IMPEG2Component * This, + /* [in] */ long LangID); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Status )( + IMPEG2Component * This, + /* [retval][out] */ ComponentStatus *Status); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Status )( + IMPEG2Component * This, + /* [in] */ ComponentStatus Status); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Description )( + IMPEG2Component * This, + /* [retval][out] */ BSTR *Description); + + /* [helpstring][id][propput][restricted][hidden] */ HRESULT ( STDMETHODCALLTYPE *put_Description )( + IMPEG2Component * This, + /* [in] */ BSTR Description); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Clone )( + IMPEG2Component * This, + /* [retval][out] */ IComponent **NewComponent); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_PID )( + IMPEG2Component * This, + /* [retval][out] */ long *PID); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_PID )( + IMPEG2Component * This, + /* [in] */ long PID); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_PCRPID )( + IMPEG2Component * This, + /* [retval][out] */ long *PCRPID); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_PCRPID )( + IMPEG2Component * This, + /* [in] */ long PCRPID); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_ProgramNumber )( + IMPEG2Component * This, + /* [retval][out] */ long *ProgramNumber); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_ProgramNumber )( + IMPEG2Component * This, + /* [in] */ long ProgramNumber); + + END_INTERFACE + } IMPEG2ComponentVtbl; + + interface IMPEG2Component + { + CONST_VTBL struct IMPEG2ComponentVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMPEG2Component_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IMPEG2Component_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IMPEG2Component_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IMPEG2Component_GetTypeInfoCount(This,pctinfo) \ + (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) + +#define IMPEG2Component_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) + +#define IMPEG2Component_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) + +#define IMPEG2Component_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) + + +#define IMPEG2Component_get_Type(This,CT) \ + (This)->lpVtbl -> get_Type(This,CT) + +#define IMPEG2Component_put_Type(This,CT) \ + (This)->lpVtbl -> put_Type(This,CT) + +#define IMPEG2Component_get_DescLangID(This,LangID) \ + (This)->lpVtbl -> get_DescLangID(This,LangID) + +#define IMPEG2Component_put_DescLangID(This,LangID) \ + (This)->lpVtbl -> put_DescLangID(This,LangID) + +#define IMPEG2Component_get_Status(This,Status) \ + (This)->lpVtbl -> get_Status(This,Status) + +#define IMPEG2Component_put_Status(This,Status) \ + (This)->lpVtbl -> put_Status(This,Status) + +#define IMPEG2Component_get_Description(This,Description) \ + (This)->lpVtbl -> get_Description(This,Description) + +#define IMPEG2Component_put_Description(This,Description) \ + (This)->lpVtbl -> put_Description(This,Description) + +#define IMPEG2Component_Clone(This,NewComponent) \ + (This)->lpVtbl -> Clone(This,NewComponent) + + +#define IMPEG2Component_get_PID(This,PID) \ + (This)->lpVtbl -> get_PID(This,PID) + +#define IMPEG2Component_put_PID(This,PID) \ + (This)->lpVtbl -> put_PID(This,PID) + +#define IMPEG2Component_get_PCRPID(This,PCRPID) \ + (This)->lpVtbl -> get_PCRPID(This,PCRPID) + +#define IMPEG2Component_put_PCRPID(This,PCRPID) \ + (This)->lpVtbl -> put_PCRPID(This,PCRPID) + +#define IMPEG2Component_get_ProgramNumber(This,ProgramNumber) \ + (This)->lpVtbl -> get_ProgramNumber(This,ProgramNumber) + +#define IMPEG2Component_put_ProgramNumber(This,ProgramNumber) \ + (This)->lpVtbl -> put_ProgramNumber(This,ProgramNumber) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IMPEG2Component_get_PID_Proxy( + IMPEG2Component * This, + /* [retval][out] */ long *PID); + + +void __RPC_STUB IMPEG2Component_get_PID_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IMPEG2Component_put_PID_Proxy( + IMPEG2Component * This, + /* [in] */ long PID); + + +void __RPC_STUB IMPEG2Component_put_PID_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IMPEG2Component_get_PCRPID_Proxy( + IMPEG2Component * This, + /* [retval][out] */ long *PCRPID); + + +void __RPC_STUB IMPEG2Component_get_PCRPID_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IMPEG2Component_put_PCRPID_Proxy( + IMPEG2Component * This, + /* [in] */ long PCRPID); + + +void __RPC_STUB IMPEG2Component_put_PCRPID_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IMPEG2Component_get_ProgramNumber_Proxy( + IMPEG2Component * This, + /* [retval][out] */ long *ProgramNumber); + + +void __RPC_STUB IMPEG2Component_get_ProgramNumber_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IMPEG2Component_put_ProgramNumber_Proxy( + IMPEG2Component * This, + /* [in] */ long ProgramNumber); + + +void __RPC_STUB IMPEG2Component_put_ProgramNumber_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IMPEG2Component_INTERFACE_DEFINED__ */ + + +#ifndef __IEnumComponents_INTERFACE_DEFINED__ +#define __IEnumComponents_INTERFACE_DEFINED__ + +/* interface IEnumComponents */ +/* [unique][uuid][object][restricted][hidden] */ + + +EXTERN_C const IID IID_IEnumComponents; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("2A6E2939-2595-11d3-B64C-00C04F79498E") + IEnumComponents : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE Next( + /* [in] */ ULONG celt, + /* [length_is][size_is][out] */ IComponent **rgelt, + /* [out] */ ULONG *pceltFetched) = 0; + + virtual HRESULT STDMETHODCALLTYPE Skip( + /* [in] */ ULONG celt) = 0; + + virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE Clone( + /* [out] */ IEnumComponents **ppEnum) = 0; + + }; + +#else /* C style interface */ + + typedef struct IEnumComponentsVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IEnumComponents * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IEnumComponents * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IEnumComponents * This); + + HRESULT ( STDMETHODCALLTYPE *Next )( + IEnumComponents * This, + /* [in] */ ULONG celt, + /* [length_is][size_is][out] */ IComponent **rgelt, + /* [out] */ ULONG *pceltFetched); + + HRESULT ( STDMETHODCALLTYPE *Skip )( + IEnumComponents * This, + /* [in] */ ULONG celt); + + HRESULT ( STDMETHODCALLTYPE *Reset )( + IEnumComponents * This); + + HRESULT ( STDMETHODCALLTYPE *Clone )( + IEnumComponents * This, + /* [out] */ IEnumComponents **ppEnum); + + END_INTERFACE + } IEnumComponentsVtbl; + + interface IEnumComponents + { + CONST_VTBL struct IEnumComponentsVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IEnumComponents_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IEnumComponents_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IEnumComponents_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IEnumComponents_Next(This,celt,rgelt,pceltFetched) \ + (This)->lpVtbl -> Next(This,celt,rgelt,pceltFetched) + +#define IEnumComponents_Skip(This,celt) \ + (This)->lpVtbl -> Skip(This,celt) + +#define IEnumComponents_Reset(This) \ + (This)->lpVtbl -> Reset(This) + +#define IEnumComponents_Clone(This,ppEnum) \ + (This)->lpVtbl -> Clone(This,ppEnum) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IEnumComponents_Next_Proxy( + IEnumComponents * This, + /* [in] */ ULONG celt, + /* [length_is][size_is][out] */ IComponent **rgelt, + /* [out] */ ULONG *pceltFetched); + + +void __RPC_STUB IEnumComponents_Next_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IEnumComponents_Skip_Proxy( + IEnumComponents * This, + /* [in] */ ULONG celt); + + +void __RPC_STUB IEnumComponents_Skip_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IEnumComponents_Reset_Proxy( + IEnumComponents * This); + + +void __RPC_STUB IEnumComponents_Reset_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IEnumComponents_Clone_Proxy( + IEnumComponents * This, + /* [out] */ IEnumComponents **ppEnum); + + +void __RPC_STUB IEnumComponents_Clone_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IEnumComponents_INTERFACE_DEFINED__ */ + + +#ifndef __IComponents_INTERFACE_DEFINED__ +#define __IComponents_INTERFACE_DEFINED__ + +/* interface IComponents */ +/* [unique][helpstring][oleautomation][dual][uuid][nonextensible][object] */ + + +EXTERN_C const IID IID_IComponents; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("FCD01846-0E19-11d3-9D8E-00C04F72D980") + IComponents : public IDispatch + { + public: + virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_Count( + /* [retval][out] */ long *Count) = 0; + + virtual /* [restricted][hidden][id][propget] */ HRESULT STDMETHODCALLTYPE get__NewEnum( + /* [retval][out] */ IEnumVARIANT **ppNewEnum) = 0; + + virtual /* [helpstring][restricted][hidden] */ HRESULT STDMETHODCALLTYPE EnumComponents( + /* [retval][out] */ IEnumComponents **ppNewEnum) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Item( + /* [in] */ VARIANT Index, + /* [retval][out] */ IComponent **ppComponent) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Add( + /* [in] */ IComponent *Component, + /* [retval][out] */ VARIANT *NewIndex) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Remove( + /* [in] */ VARIANT Index) = 0; + + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE Clone( + /* [retval][out] */ IComponents **NewList) = 0; + + }; + +#else /* C style interface */ + + typedef struct IComponentsVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IComponents * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IComponents * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IComponents * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IComponents * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IComponents * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IComponents * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IComponents * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Count )( + IComponents * This, + /* [retval][out] */ long *Count); + + /* [restricted][hidden][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get__NewEnum )( + IComponents * This, + /* [retval][out] */ IEnumVARIANT **ppNewEnum); + + /* [helpstring][restricted][hidden] */ HRESULT ( STDMETHODCALLTYPE *EnumComponents )( + IComponents * This, + /* [retval][out] */ IEnumComponents **ppNewEnum); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Item )( + IComponents * This, + /* [in] */ VARIANT Index, + /* [retval][out] */ IComponent **ppComponent); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Add )( + IComponents * This, + /* [in] */ IComponent *Component, + /* [retval][out] */ VARIANT *NewIndex); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Remove )( + IComponents * This, + /* [in] */ VARIANT Index); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *Clone )( + IComponents * This, + /* [retval][out] */ IComponents **NewList); + + END_INTERFACE + } IComponentsVtbl; + + interface IComponents + { + CONST_VTBL struct IComponentsVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IComponents_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IComponents_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IComponents_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IComponents_GetTypeInfoCount(This,pctinfo) \ + (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) + +#define IComponents_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) + +#define IComponents_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) + +#define IComponents_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) + + +#define IComponents_get_Count(This,Count) \ + (This)->lpVtbl -> get_Count(This,Count) + +#define IComponents_get__NewEnum(This,ppNewEnum) \ + (This)->lpVtbl -> get__NewEnum(This,ppNewEnum) + +#define IComponents_EnumComponents(This,ppNewEnum) \ + (This)->lpVtbl -> EnumComponents(This,ppNewEnum) + +#define IComponents_get_Item(This,Index,ppComponent) \ + (This)->lpVtbl -> get_Item(This,Index,ppComponent) + +#define IComponents_Add(This,Component,NewIndex) \ + (This)->lpVtbl -> Add(This,Component,NewIndex) + +#define IComponents_Remove(This,Index) \ + (This)->lpVtbl -> Remove(This,Index) + +#define IComponents_Clone(This,NewList) \ + (This)->lpVtbl -> Clone(This,NewList) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IComponents_get_Count_Proxy( + IComponents * This, + /* [retval][out] */ long *Count); + + +void __RPC_STUB IComponents_get_Count_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [restricted][hidden][id][propget] */ HRESULT STDMETHODCALLTYPE IComponents_get__NewEnum_Proxy( + IComponents * This, + /* [retval][out] */ IEnumVARIANT **ppNewEnum); + + +void __RPC_STUB IComponents_get__NewEnum_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][restricted][hidden] */ HRESULT STDMETHODCALLTYPE IComponents_EnumComponents_Proxy( + IComponents * This, + /* [retval][out] */ IEnumComponents **ppNewEnum); + + +void __RPC_STUB IComponents_EnumComponents_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE IComponents_get_Item_Proxy( + IComponents * This, + /* [in] */ VARIANT Index, + /* [retval][out] */ IComponent **ppComponent); + + +void __RPC_STUB IComponents_get_Item_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IComponents_Add_Proxy( + IComponents * This, + /* [in] */ IComponent *Component, + /* [retval][out] */ VARIANT *NewIndex); + + +void __RPC_STUB IComponents_Add_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IComponents_Remove_Proxy( + IComponents * This, + /* [in] */ VARIANT Index); + + +void __RPC_STUB IComponents_Remove_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE IComponents_Clone_Proxy( + IComponents * This, + /* [retval][out] */ IComponents **NewList); + + +void __RPC_STUB IComponents_Clone_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IComponents_INTERFACE_DEFINED__ */ + + +#ifndef __ILocator_INTERFACE_DEFINED__ +#define __ILocator_INTERFACE_DEFINED__ + +/* interface ILocator */ +/* [unique][helpstring][oleautomation][dual][uuid][nonextensible][object] */ + + +EXTERN_C const IID IID_ILocator; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("286D7F89-760C-4F89-80C4-66841D2507AA") + ILocator : public IDispatch + { + public: + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_CarrierFrequency( + /* [retval][out] */ long *Frequency) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_CarrierFrequency( + /* [in] */ long Frequency) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_InnerFEC( + /* [retval][out] */ FECMethod *FEC) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_InnerFEC( + /* [in] */ FECMethod FEC) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_InnerFECRate( + /* [retval][out] */ BinaryConvolutionCodeRate *FEC) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_InnerFECRate( + /* [in] */ BinaryConvolutionCodeRate FEC) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_OuterFEC( + /* [retval][out] */ FECMethod *FEC) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_OuterFEC( + /* [in] */ FECMethod FEC) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_OuterFECRate( + /* [retval][out] */ BinaryConvolutionCodeRate *FEC) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_OuterFECRate( + /* [in] */ BinaryConvolutionCodeRate FEC) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Modulation( + /* [retval][out] */ ModulationType *Modulation) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_Modulation( + /* [in] */ ModulationType Modulation) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_SymbolRate( + /* [retval][out] */ long *Rate) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_SymbolRate( + /* [in] */ long Rate) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Clone( + /* [retval][out] */ ILocator **NewLocator) = 0; + + }; + +#else /* C style interface */ + + typedef struct ILocatorVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ILocator * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ILocator * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ILocator * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + ILocator * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + ILocator * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + ILocator * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + ILocator * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_CarrierFrequency )( + ILocator * This, + /* [retval][out] */ long *Frequency); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_CarrierFrequency )( + ILocator * This, + /* [in] */ long Frequency); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_InnerFEC )( + ILocator * This, + /* [retval][out] */ FECMethod *FEC); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_InnerFEC )( + ILocator * This, + /* [in] */ FECMethod FEC); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_InnerFECRate )( + ILocator * This, + /* [retval][out] */ BinaryConvolutionCodeRate *FEC); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_InnerFECRate )( + ILocator * This, + /* [in] */ BinaryConvolutionCodeRate FEC); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_OuterFEC )( + ILocator * This, + /* [retval][out] */ FECMethod *FEC); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_OuterFEC )( + ILocator * This, + /* [in] */ FECMethod FEC); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_OuterFECRate )( + ILocator * This, + /* [retval][out] */ BinaryConvolutionCodeRate *FEC); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_OuterFECRate )( + ILocator * This, + /* [in] */ BinaryConvolutionCodeRate FEC); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Modulation )( + ILocator * This, + /* [retval][out] */ ModulationType *Modulation); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Modulation )( + ILocator * This, + /* [in] */ ModulationType Modulation); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_SymbolRate )( + ILocator * This, + /* [retval][out] */ long *Rate); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_SymbolRate )( + ILocator * This, + /* [in] */ long Rate); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Clone )( + ILocator * This, + /* [retval][out] */ ILocator **NewLocator); + + END_INTERFACE + } ILocatorVtbl; + + interface ILocator + { + CONST_VTBL struct ILocatorVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ILocator_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define ILocator_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define ILocator_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define ILocator_GetTypeInfoCount(This,pctinfo) \ + (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) + +#define ILocator_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) + +#define ILocator_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) + +#define ILocator_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) + + +#define ILocator_get_CarrierFrequency(This,Frequency) \ + (This)->lpVtbl -> get_CarrierFrequency(This,Frequency) + +#define ILocator_put_CarrierFrequency(This,Frequency) \ + (This)->lpVtbl -> put_CarrierFrequency(This,Frequency) + +#define ILocator_get_InnerFEC(This,FEC) \ + (This)->lpVtbl -> get_InnerFEC(This,FEC) + +#define ILocator_put_InnerFEC(This,FEC) \ + (This)->lpVtbl -> put_InnerFEC(This,FEC) + +#define ILocator_get_InnerFECRate(This,FEC) \ + (This)->lpVtbl -> get_InnerFECRate(This,FEC) + +#define ILocator_put_InnerFECRate(This,FEC) \ + (This)->lpVtbl -> put_InnerFECRate(This,FEC) + +#define ILocator_get_OuterFEC(This,FEC) \ + (This)->lpVtbl -> get_OuterFEC(This,FEC) + +#define ILocator_put_OuterFEC(This,FEC) \ + (This)->lpVtbl -> put_OuterFEC(This,FEC) + +#define ILocator_get_OuterFECRate(This,FEC) \ + (This)->lpVtbl -> get_OuterFECRate(This,FEC) + +#define ILocator_put_OuterFECRate(This,FEC) \ + (This)->lpVtbl -> put_OuterFECRate(This,FEC) + +#define ILocator_get_Modulation(This,Modulation) \ + (This)->lpVtbl -> get_Modulation(This,Modulation) + +#define ILocator_put_Modulation(This,Modulation) \ + (This)->lpVtbl -> put_Modulation(This,Modulation) + +#define ILocator_get_SymbolRate(This,Rate) \ + (This)->lpVtbl -> get_SymbolRate(This,Rate) + +#define ILocator_put_SymbolRate(This,Rate) \ + (This)->lpVtbl -> put_SymbolRate(This,Rate) + +#define ILocator_Clone(This,NewLocator) \ + (This)->lpVtbl -> Clone(This,NewLocator) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE ILocator_get_CarrierFrequency_Proxy( + ILocator * This, + /* [retval][out] */ long *Frequency); + + +void __RPC_STUB ILocator_get_CarrierFrequency_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE ILocator_put_CarrierFrequency_Proxy( + ILocator * This, + /* [in] */ long Frequency); + + +void __RPC_STUB ILocator_put_CarrierFrequency_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE ILocator_get_InnerFEC_Proxy( + ILocator * This, + /* [retval][out] */ FECMethod *FEC); + + +void __RPC_STUB ILocator_get_InnerFEC_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE ILocator_put_InnerFEC_Proxy( + ILocator * This, + /* [in] */ FECMethod FEC); + + +void __RPC_STUB ILocator_put_InnerFEC_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE ILocator_get_InnerFECRate_Proxy( + ILocator * This, + /* [retval][out] */ BinaryConvolutionCodeRate *FEC); + + +void __RPC_STUB ILocator_get_InnerFECRate_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE ILocator_put_InnerFECRate_Proxy( + ILocator * This, + /* [in] */ BinaryConvolutionCodeRate FEC); + + +void __RPC_STUB ILocator_put_InnerFECRate_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE ILocator_get_OuterFEC_Proxy( + ILocator * This, + /* [retval][out] */ FECMethod *FEC); + + +void __RPC_STUB ILocator_get_OuterFEC_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE ILocator_put_OuterFEC_Proxy( + ILocator * This, + /* [in] */ FECMethod FEC); + + +void __RPC_STUB ILocator_put_OuterFEC_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE ILocator_get_OuterFECRate_Proxy( + ILocator * This, + /* [retval][out] */ BinaryConvolutionCodeRate *FEC); + + +void __RPC_STUB ILocator_get_OuterFECRate_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE ILocator_put_OuterFECRate_Proxy( + ILocator * This, + /* [in] */ BinaryConvolutionCodeRate FEC); + + +void __RPC_STUB ILocator_put_OuterFECRate_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE ILocator_get_Modulation_Proxy( + ILocator * This, + /* [retval][out] */ ModulationType *Modulation); + + +void __RPC_STUB ILocator_get_Modulation_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE ILocator_put_Modulation_Proxy( + ILocator * This, + /* [in] */ ModulationType Modulation); + + +void __RPC_STUB ILocator_put_Modulation_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE ILocator_get_SymbolRate_Proxy( + ILocator * This, + /* [retval][out] */ long *Rate); + + +void __RPC_STUB ILocator_get_SymbolRate_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE ILocator_put_SymbolRate_Proxy( + ILocator * This, + /* [in] */ long Rate); + + +void __RPC_STUB ILocator_put_SymbolRate_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE ILocator_Clone_Proxy( + ILocator * This, + /* [retval][out] */ ILocator **NewLocator); + + +void __RPC_STUB ILocator_Clone_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __ILocator_INTERFACE_DEFINED__ */ + + +#ifndef __IATSCLocator_INTERFACE_DEFINED__ +#define __IATSCLocator_INTERFACE_DEFINED__ + +/* interface IATSCLocator */ +/* [unique][helpstring][oleautomation][dual][uuid][nonextensible][hidden][object] */ + + +EXTERN_C const IID IID_IATSCLocator; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("BF8D986F-8C2B-4131-94D7-4D3D9FCC21EF") + IATSCLocator : public ILocator + { + public: + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_PhysicalChannel( + /* [retval][out] */ long *PhysicalChannel) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_PhysicalChannel( + /* [in] */ long PhysicalChannel) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_TSID( + /* [retval][out] */ long *TSID) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_TSID( + /* [in] */ long TSID) = 0; + + }; + +#else /* C style interface */ + + typedef struct IATSCLocatorVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IATSCLocator * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IATSCLocator * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IATSCLocator * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IATSCLocator * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IATSCLocator * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IATSCLocator * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IATSCLocator * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_CarrierFrequency )( + IATSCLocator * This, + /* [retval][out] */ long *Frequency); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_CarrierFrequency )( + IATSCLocator * This, + /* [in] */ long Frequency); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_InnerFEC )( + IATSCLocator * This, + /* [retval][out] */ FECMethod *FEC); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_InnerFEC )( + IATSCLocator * This, + /* [in] */ FECMethod FEC); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_InnerFECRate )( + IATSCLocator * This, + /* [retval][out] */ BinaryConvolutionCodeRate *FEC); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_InnerFECRate )( + IATSCLocator * This, + /* [in] */ BinaryConvolutionCodeRate FEC); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_OuterFEC )( + IATSCLocator * This, + /* [retval][out] */ FECMethod *FEC); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_OuterFEC )( + IATSCLocator * This, + /* [in] */ FECMethod FEC); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_OuterFECRate )( + IATSCLocator * This, + /* [retval][out] */ BinaryConvolutionCodeRate *FEC); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_OuterFECRate )( + IATSCLocator * This, + /* [in] */ BinaryConvolutionCodeRate FEC); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Modulation )( + IATSCLocator * This, + /* [retval][out] */ ModulationType *Modulation); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Modulation )( + IATSCLocator * This, + /* [in] */ ModulationType Modulation); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_SymbolRate )( + IATSCLocator * This, + /* [retval][out] */ long *Rate); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_SymbolRate )( + IATSCLocator * This, + /* [in] */ long Rate); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Clone )( + IATSCLocator * This, + /* [retval][out] */ ILocator **NewLocator); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_PhysicalChannel )( + IATSCLocator * This, + /* [retval][out] */ long *PhysicalChannel); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_PhysicalChannel )( + IATSCLocator * This, + /* [in] */ long PhysicalChannel); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_TSID )( + IATSCLocator * This, + /* [retval][out] */ long *TSID); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_TSID )( + IATSCLocator * This, + /* [in] */ long TSID); + + END_INTERFACE + } IATSCLocatorVtbl; + + interface IATSCLocator + { + CONST_VTBL struct IATSCLocatorVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IATSCLocator_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IATSCLocator_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IATSCLocator_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IATSCLocator_GetTypeInfoCount(This,pctinfo) \ + (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) + +#define IATSCLocator_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) + +#define IATSCLocator_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) + +#define IATSCLocator_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) + + +#define IATSCLocator_get_CarrierFrequency(This,Frequency) \ + (This)->lpVtbl -> get_CarrierFrequency(This,Frequency) + +#define IATSCLocator_put_CarrierFrequency(This,Frequency) \ + (This)->lpVtbl -> put_CarrierFrequency(This,Frequency) + +#define IATSCLocator_get_InnerFEC(This,FEC) \ + (This)->lpVtbl -> get_InnerFEC(This,FEC) + +#define IATSCLocator_put_InnerFEC(This,FEC) \ + (This)->lpVtbl -> put_InnerFEC(This,FEC) + +#define IATSCLocator_get_InnerFECRate(This,FEC) \ + (This)->lpVtbl -> get_InnerFECRate(This,FEC) + +#define IATSCLocator_put_InnerFECRate(This,FEC) \ + (This)->lpVtbl -> put_InnerFECRate(This,FEC) + +#define IATSCLocator_get_OuterFEC(This,FEC) \ + (This)->lpVtbl -> get_OuterFEC(This,FEC) + +#define IATSCLocator_put_OuterFEC(This,FEC) \ + (This)->lpVtbl -> put_OuterFEC(This,FEC) + +#define IATSCLocator_get_OuterFECRate(This,FEC) \ + (This)->lpVtbl -> get_OuterFECRate(This,FEC) + +#define IATSCLocator_put_OuterFECRate(This,FEC) \ + (This)->lpVtbl -> put_OuterFECRate(This,FEC) + +#define IATSCLocator_get_Modulation(This,Modulation) \ + (This)->lpVtbl -> get_Modulation(This,Modulation) + +#define IATSCLocator_put_Modulation(This,Modulation) \ + (This)->lpVtbl -> put_Modulation(This,Modulation) + +#define IATSCLocator_get_SymbolRate(This,Rate) \ + (This)->lpVtbl -> get_SymbolRate(This,Rate) + +#define IATSCLocator_put_SymbolRate(This,Rate) \ + (This)->lpVtbl -> put_SymbolRate(This,Rate) + +#define IATSCLocator_Clone(This,NewLocator) \ + (This)->lpVtbl -> Clone(This,NewLocator) + + +#define IATSCLocator_get_PhysicalChannel(This,PhysicalChannel) \ + (This)->lpVtbl -> get_PhysicalChannel(This,PhysicalChannel) + +#define IATSCLocator_put_PhysicalChannel(This,PhysicalChannel) \ + (This)->lpVtbl -> put_PhysicalChannel(This,PhysicalChannel) + +#define IATSCLocator_get_TSID(This,TSID) \ + (This)->lpVtbl -> get_TSID(This,TSID) + +#define IATSCLocator_put_TSID(This,TSID) \ + (This)->lpVtbl -> put_TSID(This,TSID) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IATSCLocator_get_PhysicalChannel_Proxy( + IATSCLocator * This, + /* [retval][out] */ long *PhysicalChannel); + + +void __RPC_STUB IATSCLocator_get_PhysicalChannel_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IATSCLocator_put_PhysicalChannel_Proxy( + IATSCLocator * This, + /* [in] */ long PhysicalChannel); + + +void __RPC_STUB IATSCLocator_put_PhysicalChannel_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IATSCLocator_get_TSID_Proxy( + IATSCLocator * This, + /* [retval][out] */ long *TSID); + + +void __RPC_STUB IATSCLocator_get_TSID_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IATSCLocator_put_TSID_Proxy( + IATSCLocator * This, + /* [in] */ long TSID); + + +void __RPC_STUB IATSCLocator_put_TSID_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IATSCLocator_INTERFACE_DEFINED__ */ + + +#ifndef __IDVBTLocator_INTERFACE_DEFINED__ +#define __IDVBTLocator_INTERFACE_DEFINED__ + +/* interface IDVBTLocator */ +/* [unique][helpstring][oleautomation][dual][uuid][nonextensible][hidden][object] */ + + +EXTERN_C const IID IID_IDVBTLocator; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("8664DA16-DDA2-42ac-926A-C18F9127C302") + IDVBTLocator : public ILocator + { + public: + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Bandwidth( + /* [retval][out] */ long *BandWidthVal) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_Bandwidth( + /* [in] */ long BandwidthVal) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_LPInnerFEC( + /* [retval][out] */ FECMethod *FEC) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_LPInnerFEC( + /* [in] */ FECMethod FEC) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_LPInnerFECRate( + /* [retval][out] */ BinaryConvolutionCodeRate *FEC) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_LPInnerFECRate( + /* [in] */ BinaryConvolutionCodeRate FEC) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_HAlpha( + /* [retval][out] */ HierarchyAlpha *Alpha) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_HAlpha( + /* [in] */ HierarchyAlpha Alpha) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Guard( + /* [retval][out] */ GuardInterval *GI) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_Guard( + /* [in] */ GuardInterval GI) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Mode( + /* [retval][out] */ TransmissionMode *mode) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_Mode( + /* [in] */ TransmissionMode mode) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_OtherFrequencyInUse( + /* [retval][out] */ VARIANT_BOOL *OtherFrequencyInUseVal) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_OtherFrequencyInUse( + /* [in] */ VARIANT_BOOL OtherFrequencyInUseVal) = 0; + + }; + +#else /* C style interface */ + + typedef struct IDVBTLocatorVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDVBTLocator * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDVBTLocator * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDVBTLocator * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IDVBTLocator * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IDVBTLocator * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IDVBTLocator * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IDVBTLocator * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_CarrierFrequency )( + IDVBTLocator * This, + /* [retval][out] */ long *Frequency); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_CarrierFrequency )( + IDVBTLocator * This, + /* [in] */ long Frequency); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_InnerFEC )( + IDVBTLocator * This, + /* [retval][out] */ FECMethod *FEC); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_InnerFEC )( + IDVBTLocator * This, + /* [in] */ FECMethod FEC); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_InnerFECRate )( + IDVBTLocator * This, + /* [retval][out] */ BinaryConvolutionCodeRate *FEC); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_InnerFECRate )( + IDVBTLocator * This, + /* [in] */ BinaryConvolutionCodeRate FEC); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_OuterFEC )( + IDVBTLocator * This, + /* [retval][out] */ FECMethod *FEC); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_OuterFEC )( + IDVBTLocator * This, + /* [in] */ FECMethod FEC); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_OuterFECRate )( + IDVBTLocator * This, + /* [retval][out] */ BinaryConvolutionCodeRate *FEC); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_OuterFECRate )( + IDVBTLocator * This, + /* [in] */ BinaryConvolutionCodeRate FEC); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Modulation )( + IDVBTLocator * This, + /* [retval][out] */ ModulationType *Modulation); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Modulation )( + IDVBTLocator * This, + /* [in] */ ModulationType Modulation); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_SymbolRate )( + IDVBTLocator * This, + /* [retval][out] */ long *Rate); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_SymbolRate )( + IDVBTLocator * This, + /* [in] */ long Rate); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Clone )( + IDVBTLocator * This, + /* [retval][out] */ ILocator **NewLocator); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Bandwidth )( + IDVBTLocator * This, + /* [retval][out] */ long *BandWidthVal); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Bandwidth )( + IDVBTLocator * This, + /* [in] */ long BandwidthVal); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_LPInnerFEC )( + IDVBTLocator * This, + /* [retval][out] */ FECMethod *FEC); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_LPInnerFEC )( + IDVBTLocator * This, + /* [in] */ FECMethod FEC); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_LPInnerFECRate )( + IDVBTLocator * This, + /* [retval][out] */ BinaryConvolutionCodeRate *FEC); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_LPInnerFECRate )( + IDVBTLocator * This, + /* [in] */ BinaryConvolutionCodeRate FEC); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_HAlpha )( + IDVBTLocator * This, + /* [retval][out] */ HierarchyAlpha *Alpha); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_HAlpha )( + IDVBTLocator * This, + /* [in] */ HierarchyAlpha Alpha); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Guard )( + IDVBTLocator * This, + /* [retval][out] */ GuardInterval *GI); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Guard )( + IDVBTLocator * This, + /* [in] */ GuardInterval GI); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Mode )( + IDVBTLocator * This, + /* [retval][out] */ TransmissionMode *mode); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Mode )( + IDVBTLocator * This, + /* [in] */ TransmissionMode mode); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_OtherFrequencyInUse )( + IDVBTLocator * This, + /* [retval][out] */ VARIANT_BOOL *OtherFrequencyInUseVal); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_OtherFrequencyInUse )( + IDVBTLocator * This, + /* [in] */ VARIANT_BOOL OtherFrequencyInUseVal); + + END_INTERFACE + } IDVBTLocatorVtbl; + + interface IDVBTLocator + { + CONST_VTBL struct IDVBTLocatorVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDVBTLocator_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IDVBTLocator_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IDVBTLocator_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IDVBTLocator_GetTypeInfoCount(This,pctinfo) \ + (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) + +#define IDVBTLocator_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) + +#define IDVBTLocator_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) + +#define IDVBTLocator_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) + + +#define IDVBTLocator_get_CarrierFrequency(This,Frequency) \ + (This)->lpVtbl -> get_CarrierFrequency(This,Frequency) + +#define IDVBTLocator_put_CarrierFrequency(This,Frequency) \ + (This)->lpVtbl -> put_CarrierFrequency(This,Frequency) + +#define IDVBTLocator_get_InnerFEC(This,FEC) \ + (This)->lpVtbl -> get_InnerFEC(This,FEC) + +#define IDVBTLocator_put_InnerFEC(This,FEC) \ + (This)->lpVtbl -> put_InnerFEC(This,FEC) + +#define IDVBTLocator_get_InnerFECRate(This,FEC) \ + (This)->lpVtbl -> get_InnerFECRate(This,FEC) + +#define IDVBTLocator_put_InnerFECRate(This,FEC) \ + (This)->lpVtbl -> put_InnerFECRate(This,FEC) + +#define IDVBTLocator_get_OuterFEC(This,FEC) \ + (This)->lpVtbl -> get_OuterFEC(This,FEC) + +#define IDVBTLocator_put_OuterFEC(This,FEC) \ + (This)->lpVtbl -> put_OuterFEC(This,FEC) + +#define IDVBTLocator_get_OuterFECRate(This,FEC) \ + (This)->lpVtbl -> get_OuterFECRate(This,FEC) + +#define IDVBTLocator_put_OuterFECRate(This,FEC) \ + (This)->lpVtbl -> put_OuterFECRate(This,FEC) + +#define IDVBTLocator_get_Modulation(This,Modulation) \ + (This)->lpVtbl -> get_Modulation(This,Modulation) + +#define IDVBTLocator_put_Modulation(This,Modulation) \ + (This)->lpVtbl -> put_Modulation(This,Modulation) + +#define IDVBTLocator_get_SymbolRate(This,Rate) \ + (This)->lpVtbl -> get_SymbolRate(This,Rate) + +#define IDVBTLocator_put_SymbolRate(This,Rate) \ + (This)->lpVtbl -> put_SymbolRate(This,Rate) + +#define IDVBTLocator_Clone(This,NewLocator) \ + (This)->lpVtbl -> Clone(This,NewLocator) + + +#define IDVBTLocator_get_Bandwidth(This,BandWidthVal) \ + (This)->lpVtbl -> get_Bandwidth(This,BandWidthVal) + +#define IDVBTLocator_put_Bandwidth(This,BandwidthVal) \ + (This)->lpVtbl -> put_Bandwidth(This,BandwidthVal) + +#define IDVBTLocator_get_LPInnerFEC(This,FEC) \ + (This)->lpVtbl -> get_LPInnerFEC(This,FEC) + +#define IDVBTLocator_put_LPInnerFEC(This,FEC) \ + (This)->lpVtbl -> put_LPInnerFEC(This,FEC) + +#define IDVBTLocator_get_LPInnerFECRate(This,FEC) \ + (This)->lpVtbl -> get_LPInnerFECRate(This,FEC) + +#define IDVBTLocator_put_LPInnerFECRate(This,FEC) \ + (This)->lpVtbl -> put_LPInnerFECRate(This,FEC) + +#define IDVBTLocator_get_HAlpha(This,Alpha) \ + (This)->lpVtbl -> get_HAlpha(This,Alpha) + +#define IDVBTLocator_put_HAlpha(This,Alpha) \ + (This)->lpVtbl -> put_HAlpha(This,Alpha) + +#define IDVBTLocator_get_Guard(This,GI) \ + (This)->lpVtbl -> get_Guard(This,GI) + +#define IDVBTLocator_put_Guard(This,GI) \ + (This)->lpVtbl -> put_Guard(This,GI) + +#define IDVBTLocator_get_Mode(This,mode) \ + (This)->lpVtbl -> get_Mode(This,mode) + +#define IDVBTLocator_put_Mode(This,mode) \ + (This)->lpVtbl -> put_Mode(This,mode) + +#define IDVBTLocator_get_OtherFrequencyInUse(This,OtherFrequencyInUseVal) \ + (This)->lpVtbl -> get_OtherFrequencyInUse(This,OtherFrequencyInUseVal) + +#define IDVBTLocator_put_OtherFrequencyInUse(This,OtherFrequencyInUseVal) \ + (This)->lpVtbl -> put_OtherFrequencyInUse(This,OtherFrequencyInUseVal) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDVBTLocator_get_Bandwidth_Proxy( + IDVBTLocator * This, + /* [retval][out] */ long *BandWidthVal); + + +void __RPC_STUB IDVBTLocator_get_Bandwidth_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDVBTLocator_put_Bandwidth_Proxy( + IDVBTLocator * This, + /* [in] */ long BandwidthVal); + + +void __RPC_STUB IDVBTLocator_put_Bandwidth_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDVBTLocator_get_LPInnerFEC_Proxy( + IDVBTLocator * This, + /* [retval][out] */ FECMethod *FEC); + + +void __RPC_STUB IDVBTLocator_get_LPInnerFEC_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDVBTLocator_put_LPInnerFEC_Proxy( + IDVBTLocator * This, + /* [in] */ FECMethod FEC); + + +void __RPC_STUB IDVBTLocator_put_LPInnerFEC_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDVBTLocator_get_LPInnerFECRate_Proxy( + IDVBTLocator * This, + /* [retval][out] */ BinaryConvolutionCodeRate *FEC); + + +void __RPC_STUB IDVBTLocator_get_LPInnerFECRate_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDVBTLocator_put_LPInnerFECRate_Proxy( + IDVBTLocator * This, + /* [in] */ BinaryConvolutionCodeRate FEC); + + +void __RPC_STUB IDVBTLocator_put_LPInnerFECRate_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDVBTLocator_get_HAlpha_Proxy( + IDVBTLocator * This, + /* [retval][out] */ HierarchyAlpha *Alpha); + + +void __RPC_STUB IDVBTLocator_get_HAlpha_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDVBTLocator_put_HAlpha_Proxy( + IDVBTLocator * This, + /* [in] */ HierarchyAlpha Alpha); + + +void __RPC_STUB IDVBTLocator_put_HAlpha_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDVBTLocator_get_Guard_Proxy( + IDVBTLocator * This, + /* [retval][out] */ GuardInterval *GI); + + +void __RPC_STUB IDVBTLocator_get_Guard_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDVBTLocator_put_Guard_Proxy( + IDVBTLocator * This, + /* [in] */ GuardInterval GI); + + +void __RPC_STUB IDVBTLocator_put_Guard_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDVBTLocator_get_Mode_Proxy( + IDVBTLocator * This, + /* [retval][out] */ TransmissionMode *mode); + + +void __RPC_STUB IDVBTLocator_get_Mode_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDVBTLocator_put_Mode_Proxy( + IDVBTLocator * This, + /* [in] */ TransmissionMode mode); + + +void __RPC_STUB IDVBTLocator_put_Mode_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDVBTLocator_get_OtherFrequencyInUse_Proxy( + IDVBTLocator * This, + /* [retval][out] */ VARIANT_BOOL *OtherFrequencyInUseVal); + + +void __RPC_STUB IDVBTLocator_get_OtherFrequencyInUse_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDVBTLocator_put_OtherFrequencyInUse_Proxy( + IDVBTLocator * This, + /* [in] */ VARIANT_BOOL OtherFrequencyInUseVal); + + +void __RPC_STUB IDVBTLocator_put_OtherFrequencyInUse_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IDVBTLocator_INTERFACE_DEFINED__ */ + + +#ifndef __IDVBSLocator_INTERFACE_DEFINED__ +#define __IDVBSLocator_INTERFACE_DEFINED__ + +/* interface IDVBSLocator */ +/* [unique][helpstring][oleautomation][dual][uuid][nonextensible][hidden][object] */ + + +EXTERN_C const IID IID_IDVBSLocator; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("3D7C353C-0D04-45f1-A742-F97CC1188DC8") + IDVBSLocator : public ILocator + { + public: + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_SignalPolarisation( + /* [retval][out] */ Polarisation *PolarisationVal) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_SignalPolarisation( + /* [in] */ Polarisation PolarisationVal) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_WestPosition( + /* [retval][out] */ VARIANT_BOOL *WestLongitude) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_WestPosition( + /* [in] */ VARIANT_BOOL WestLongitude) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_OrbitalPosition( + /* [retval][out] */ long *longitude) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_OrbitalPosition( + /* [in] */ long longitude) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Azimuth( + /* [retval][out] */ long *Azimuth) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_Azimuth( + /* [in] */ long Azimuth) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Elevation( + /* [retval][out] */ long *Elevation) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_Elevation( + /* [in] */ long Elevation) = 0; + + }; + +#else /* C style interface */ + + typedef struct IDVBSLocatorVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDVBSLocator * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDVBSLocator * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDVBSLocator * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IDVBSLocator * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IDVBSLocator * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IDVBSLocator * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IDVBSLocator * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_CarrierFrequency )( + IDVBSLocator * This, + /* [retval][out] */ long *Frequency); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_CarrierFrequency )( + IDVBSLocator * This, + /* [in] */ long Frequency); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_InnerFEC )( + IDVBSLocator * This, + /* [retval][out] */ FECMethod *FEC); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_InnerFEC )( + IDVBSLocator * This, + /* [in] */ FECMethod FEC); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_InnerFECRate )( + IDVBSLocator * This, + /* [retval][out] */ BinaryConvolutionCodeRate *FEC); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_InnerFECRate )( + IDVBSLocator * This, + /* [in] */ BinaryConvolutionCodeRate FEC); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_OuterFEC )( + IDVBSLocator * This, + /* [retval][out] */ FECMethod *FEC); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_OuterFEC )( + IDVBSLocator * This, + /* [in] */ FECMethod FEC); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_OuterFECRate )( + IDVBSLocator * This, + /* [retval][out] */ BinaryConvolutionCodeRate *FEC); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_OuterFECRate )( + IDVBSLocator * This, + /* [in] */ BinaryConvolutionCodeRate FEC); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Modulation )( + IDVBSLocator * This, + /* [retval][out] */ ModulationType *Modulation); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Modulation )( + IDVBSLocator * This, + /* [in] */ ModulationType Modulation); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_SymbolRate )( + IDVBSLocator * This, + /* [retval][out] */ long *Rate); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_SymbolRate )( + IDVBSLocator * This, + /* [in] */ long Rate); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Clone )( + IDVBSLocator * This, + /* [retval][out] */ ILocator **NewLocator); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_SignalPolarisation )( + IDVBSLocator * This, + /* [retval][out] */ Polarisation *PolarisationVal); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_SignalPolarisation )( + IDVBSLocator * This, + /* [in] */ Polarisation PolarisationVal); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_WestPosition )( + IDVBSLocator * This, + /* [retval][out] */ VARIANT_BOOL *WestLongitude); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_WestPosition )( + IDVBSLocator * This, + /* [in] */ VARIANT_BOOL WestLongitude); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_OrbitalPosition )( + IDVBSLocator * This, + /* [retval][out] */ long *longitude); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_OrbitalPosition )( + IDVBSLocator * This, + /* [in] */ long longitude); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Azimuth )( + IDVBSLocator * This, + /* [retval][out] */ long *Azimuth); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Azimuth )( + IDVBSLocator * This, + /* [in] */ long Azimuth); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Elevation )( + IDVBSLocator * This, + /* [retval][out] */ long *Elevation); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Elevation )( + IDVBSLocator * This, + /* [in] */ long Elevation); + + END_INTERFACE + } IDVBSLocatorVtbl; + + interface IDVBSLocator + { + CONST_VTBL struct IDVBSLocatorVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDVBSLocator_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IDVBSLocator_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IDVBSLocator_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IDVBSLocator_GetTypeInfoCount(This,pctinfo) \ + (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) + +#define IDVBSLocator_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) + +#define IDVBSLocator_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) + +#define IDVBSLocator_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) + + +#define IDVBSLocator_get_CarrierFrequency(This,Frequency) \ + (This)->lpVtbl -> get_CarrierFrequency(This,Frequency) + +#define IDVBSLocator_put_CarrierFrequency(This,Frequency) \ + (This)->lpVtbl -> put_CarrierFrequency(This,Frequency) + +#define IDVBSLocator_get_InnerFEC(This,FEC) \ + (This)->lpVtbl -> get_InnerFEC(This,FEC) + +#define IDVBSLocator_put_InnerFEC(This,FEC) \ + (This)->lpVtbl -> put_InnerFEC(This,FEC) + +#define IDVBSLocator_get_InnerFECRate(This,FEC) \ + (This)->lpVtbl -> get_InnerFECRate(This,FEC) + +#define IDVBSLocator_put_InnerFECRate(This,FEC) \ + (This)->lpVtbl -> put_InnerFECRate(This,FEC) + +#define IDVBSLocator_get_OuterFEC(This,FEC) \ + (This)->lpVtbl -> get_OuterFEC(This,FEC) + +#define IDVBSLocator_put_OuterFEC(This,FEC) \ + (This)->lpVtbl -> put_OuterFEC(This,FEC) + +#define IDVBSLocator_get_OuterFECRate(This,FEC) \ + (This)->lpVtbl -> get_OuterFECRate(This,FEC) + +#define IDVBSLocator_put_OuterFECRate(This,FEC) \ + (This)->lpVtbl -> put_OuterFECRate(This,FEC) + +#define IDVBSLocator_get_Modulation(This,Modulation) \ + (This)->lpVtbl -> get_Modulation(This,Modulation) + +#define IDVBSLocator_put_Modulation(This,Modulation) \ + (This)->lpVtbl -> put_Modulation(This,Modulation) + +#define IDVBSLocator_get_SymbolRate(This,Rate) \ + (This)->lpVtbl -> get_SymbolRate(This,Rate) + +#define IDVBSLocator_put_SymbolRate(This,Rate) \ + (This)->lpVtbl -> put_SymbolRate(This,Rate) + +#define IDVBSLocator_Clone(This,NewLocator) \ + (This)->lpVtbl -> Clone(This,NewLocator) + + +#define IDVBSLocator_get_SignalPolarisation(This,PolarisationVal) \ + (This)->lpVtbl -> get_SignalPolarisation(This,PolarisationVal) + +#define IDVBSLocator_put_SignalPolarisation(This,PolarisationVal) \ + (This)->lpVtbl -> put_SignalPolarisation(This,PolarisationVal) + +#define IDVBSLocator_get_WestPosition(This,WestLongitude) \ + (This)->lpVtbl -> get_WestPosition(This,WestLongitude) + +#define IDVBSLocator_put_WestPosition(This,WestLongitude) \ + (This)->lpVtbl -> put_WestPosition(This,WestLongitude) + +#define IDVBSLocator_get_OrbitalPosition(This,longitude) \ + (This)->lpVtbl -> get_OrbitalPosition(This,longitude) + +#define IDVBSLocator_put_OrbitalPosition(This,longitude) \ + (This)->lpVtbl -> put_OrbitalPosition(This,longitude) + +#define IDVBSLocator_get_Azimuth(This,Azimuth) \ + (This)->lpVtbl -> get_Azimuth(This,Azimuth) + +#define IDVBSLocator_put_Azimuth(This,Azimuth) \ + (This)->lpVtbl -> put_Azimuth(This,Azimuth) + +#define IDVBSLocator_get_Elevation(This,Elevation) \ + (This)->lpVtbl -> get_Elevation(This,Elevation) + +#define IDVBSLocator_put_Elevation(This,Elevation) \ + (This)->lpVtbl -> put_Elevation(This,Elevation) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDVBSLocator_get_SignalPolarisation_Proxy( + IDVBSLocator * This, + /* [retval][out] */ Polarisation *PolarisationVal); + + +void __RPC_STUB IDVBSLocator_get_SignalPolarisation_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDVBSLocator_put_SignalPolarisation_Proxy( + IDVBSLocator * This, + /* [in] */ Polarisation PolarisationVal); + + +void __RPC_STUB IDVBSLocator_put_SignalPolarisation_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDVBSLocator_get_WestPosition_Proxy( + IDVBSLocator * This, + /* [retval][out] */ VARIANT_BOOL *WestLongitude); + + +void __RPC_STUB IDVBSLocator_get_WestPosition_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDVBSLocator_put_WestPosition_Proxy( + IDVBSLocator * This, + /* [in] */ VARIANT_BOOL WestLongitude); + + +void __RPC_STUB IDVBSLocator_put_WestPosition_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDVBSLocator_get_OrbitalPosition_Proxy( + IDVBSLocator * This, + /* [retval][out] */ long *longitude); + + +void __RPC_STUB IDVBSLocator_get_OrbitalPosition_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDVBSLocator_put_OrbitalPosition_Proxy( + IDVBSLocator * This, + /* [in] */ long longitude); + + +void __RPC_STUB IDVBSLocator_put_OrbitalPosition_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDVBSLocator_get_Azimuth_Proxy( + IDVBSLocator * This, + /* [retval][out] */ long *Azimuth); + + +void __RPC_STUB IDVBSLocator_get_Azimuth_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDVBSLocator_put_Azimuth_Proxy( + IDVBSLocator * This, + /* [in] */ long Azimuth); + + +void __RPC_STUB IDVBSLocator_put_Azimuth_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IDVBSLocator_get_Elevation_Proxy( + IDVBSLocator * This, + /* [retval][out] */ long *Elevation); + + +void __RPC_STUB IDVBSLocator_get_Elevation_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IDVBSLocator_put_Elevation_Proxy( + IDVBSLocator * This, + /* [in] */ long Elevation); + + +void __RPC_STUB IDVBSLocator_put_Elevation_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IDVBSLocator_INTERFACE_DEFINED__ */ + + +#ifndef __IDVBCLocator_INTERFACE_DEFINED__ +#define __IDVBCLocator_INTERFACE_DEFINED__ + +/* interface IDVBCLocator */ +/* [unique][helpstring][oleautomation][dual][uuid][nonextensible][hidden][object] */ + + +EXTERN_C const IID IID_IDVBCLocator; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("6E42F36E-1DD2-43c4-9F78-69D25AE39034") + IDVBCLocator : public ILocator + { + public: + }; + +#else /* C style interface */ + + typedef struct IDVBCLocatorVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDVBCLocator * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDVBCLocator * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IDVBCLocator * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IDVBCLocator * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IDVBCLocator * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IDVBCLocator * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IDVBCLocator * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_CarrierFrequency )( + IDVBCLocator * This, + /* [retval][out] */ long *Frequency); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_CarrierFrequency )( + IDVBCLocator * This, + /* [in] */ long Frequency); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_InnerFEC )( + IDVBCLocator * This, + /* [retval][out] */ FECMethod *FEC); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_InnerFEC )( + IDVBCLocator * This, + /* [in] */ FECMethod FEC); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_InnerFECRate )( + IDVBCLocator * This, + /* [retval][out] */ BinaryConvolutionCodeRate *FEC); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_InnerFECRate )( + IDVBCLocator * This, + /* [in] */ BinaryConvolutionCodeRate FEC); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_OuterFEC )( + IDVBCLocator * This, + /* [retval][out] */ FECMethod *FEC); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_OuterFEC )( + IDVBCLocator * This, + /* [in] */ FECMethod FEC); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_OuterFECRate )( + IDVBCLocator * This, + /* [retval][out] */ BinaryConvolutionCodeRate *FEC); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_OuterFECRate )( + IDVBCLocator * This, + /* [in] */ BinaryConvolutionCodeRate FEC); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Modulation )( + IDVBCLocator * This, + /* [retval][out] */ ModulationType *Modulation); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Modulation )( + IDVBCLocator * This, + /* [in] */ ModulationType Modulation); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_SymbolRate )( + IDVBCLocator * This, + /* [retval][out] */ long *Rate); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_SymbolRate )( + IDVBCLocator * This, + /* [in] */ long Rate); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Clone )( + IDVBCLocator * This, + /* [retval][out] */ ILocator **NewLocator); + + END_INTERFACE + } IDVBCLocatorVtbl; + + interface IDVBCLocator + { + CONST_VTBL struct IDVBCLocatorVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDVBCLocator_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IDVBCLocator_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IDVBCLocator_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IDVBCLocator_GetTypeInfoCount(This,pctinfo) \ + (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) + +#define IDVBCLocator_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) + +#define IDVBCLocator_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) + +#define IDVBCLocator_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) + + +#define IDVBCLocator_get_CarrierFrequency(This,Frequency) \ + (This)->lpVtbl -> get_CarrierFrequency(This,Frequency) + +#define IDVBCLocator_put_CarrierFrequency(This,Frequency) \ + (This)->lpVtbl -> put_CarrierFrequency(This,Frequency) + +#define IDVBCLocator_get_InnerFEC(This,FEC) \ + (This)->lpVtbl -> get_InnerFEC(This,FEC) + +#define IDVBCLocator_put_InnerFEC(This,FEC) \ + (This)->lpVtbl -> put_InnerFEC(This,FEC) + +#define IDVBCLocator_get_InnerFECRate(This,FEC) \ + (This)->lpVtbl -> get_InnerFECRate(This,FEC) + +#define IDVBCLocator_put_InnerFECRate(This,FEC) \ + (This)->lpVtbl -> put_InnerFECRate(This,FEC) + +#define IDVBCLocator_get_OuterFEC(This,FEC) \ + (This)->lpVtbl -> get_OuterFEC(This,FEC) + +#define IDVBCLocator_put_OuterFEC(This,FEC) \ + (This)->lpVtbl -> put_OuterFEC(This,FEC) + +#define IDVBCLocator_get_OuterFECRate(This,FEC) \ + (This)->lpVtbl -> get_OuterFECRate(This,FEC) + +#define IDVBCLocator_put_OuterFECRate(This,FEC) \ + (This)->lpVtbl -> put_OuterFECRate(This,FEC) + +#define IDVBCLocator_get_Modulation(This,Modulation) \ + (This)->lpVtbl -> get_Modulation(This,Modulation) + +#define IDVBCLocator_put_Modulation(This,Modulation) \ + (This)->lpVtbl -> put_Modulation(This,Modulation) + +#define IDVBCLocator_get_SymbolRate(This,Rate) \ + (This)->lpVtbl -> get_SymbolRate(This,Rate) + +#define IDVBCLocator_put_SymbolRate(This,Rate) \ + (This)->lpVtbl -> put_SymbolRate(This,Rate) + +#define IDVBCLocator_Clone(This,NewLocator) \ + (This)->lpVtbl -> Clone(This,NewLocator) + + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDVBCLocator_INTERFACE_DEFINED__ */ + + +#ifndef __IBroadcastEvent_INTERFACE_DEFINED__ +#define __IBroadcastEvent_INTERFACE_DEFINED__ + +/* interface IBroadcastEvent */ +/* [unique][helpstring][uuid][nonextensible][hidden][object] */ + + +EXTERN_C const IID IID_IBroadcastEvent; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("3B21263F-26E8-489d-AAC4-924F7EFD9511") + IBroadcastEvent : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE Fire( + GUID EventID) = 0; + + }; + +#else /* C style interface */ + + typedef struct IBroadcastEventVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IBroadcastEvent * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IBroadcastEvent * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IBroadcastEvent * This); + + HRESULT ( STDMETHODCALLTYPE *Fire )( + IBroadcastEvent * This, + GUID EventID); + + END_INTERFACE + } IBroadcastEventVtbl; + + interface IBroadcastEvent + { + CONST_VTBL struct IBroadcastEventVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IBroadcastEvent_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IBroadcastEvent_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IBroadcastEvent_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IBroadcastEvent_Fire(This,EventID) \ + (This)->lpVtbl -> Fire(This,EventID) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IBroadcastEvent_Fire_Proxy( + IBroadcastEvent * This, + GUID EventID); + + +void __RPC_STUB IBroadcastEvent_Fire_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IBroadcastEvent_INTERFACE_DEFINED__ */ + + + +#ifndef __TunerLib_LIBRARY_DEFINED__ +#define __TunerLib_LIBRARY_DEFINED__ + +/* library TunerLib */ +/* [helpstring][version][uuid] */ + +#define SID_SBroadcastEventService CLSID_BroadcastEventService + +EXTERN_C const IID LIBID_TunerLib; + +EXTERN_C const CLSID CLSID_SystemTuningSpaces; + +#ifdef __cplusplus + +class DECLSPEC_UUID("D02AAC50-027E-11d3-9D8E-00C04F72D980") +SystemTuningSpaces; +#endif + +EXTERN_C const CLSID CLSID_TuningSpace; + +#ifdef __cplusplus + +class DECLSPEC_UUID("5FFDC5E6-B83A-4b55-B6E8-C69E765FE9DB") +TuningSpace; +#endif + +EXTERN_C const CLSID CLSID_ATSCTuningSpace; + +#ifdef __cplusplus + +class DECLSPEC_UUID("A2E30750-6C3D-11d3-B653-00C04F79498E") +ATSCTuningSpace; +#endif + +EXTERN_C const CLSID CLSID_AnalogRadioTuningSpace; + +#ifdef __cplusplus + +class DECLSPEC_UUID("8A674B4C-1F63-11d3-B64C-00C04F79498E") +AnalogRadioTuningSpace; +#endif + +EXTERN_C const CLSID CLSID_AuxInTuningSpace; + +#ifdef __cplusplus + +class DECLSPEC_UUID("F9769A06-7ACA-4e39-9CFB-97BB35F0E77E") +AuxInTuningSpace; +#endif + +EXTERN_C const CLSID CLSID_AnalogTVTuningSpace; + +#ifdef __cplusplus + +class DECLSPEC_UUID("8A674B4D-1F63-11d3-B64C-00C04F79498E") +AnalogTVTuningSpace; +#endif + +EXTERN_C const CLSID CLSID_DVBTuningSpace; + +#ifdef __cplusplus + +class DECLSPEC_UUID("C6B14B32-76AA-4a86-A7AC-5C79AAF58DA7") +DVBTuningSpace; +#endif + +EXTERN_C const CLSID CLSID_DVBSTuningSpace; + +#ifdef __cplusplus + +class DECLSPEC_UUID("B64016F3-C9A2-4066-96F0-BD9563314726") +DVBSTuningSpace; +#endif + +EXTERN_C const CLSID CLSID_ComponentTypes; + +#ifdef __cplusplus + +class DECLSPEC_UUID("A1A2B1C4-0E3A-11d3-9D8E-00C04F72D980") +ComponentTypes; +#endif + +EXTERN_C const CLSID CLSID_ComponentType; + +#ifdef __cplusplus + +class DECLSPEC_UUID("823535A0-0318-11d3-9D8E-00C04F72D980") +ComponentType; +#endif + +EXTERN_C const CLSID CLSID_LanguageComponentType; + +#ifdef __cplusplus + +class DECLSPEC_UUID("1BE49F30-0E1B-11d3-9D8E-00C04F72D980") +LanguageComponentType; +#endif + +EXTERN_C const CLSID CLSID_MPEG2ComponentType; + +#ifdef __cplusplus + +class DECLSPEC_UUID("418008F3-CF67-4668-9628-10DC52BE1D08") +MPEG2ComponentType; +#endif + +EXTERN_C const CLSID CLSID_ATSCComponentType; + +#ifdef __cplusplus + +class DECLSPEC_UUID("A8DCF3D5-0780-4ef4-8A83-2CFFAACB8ACE") +ATSCComponentType; +#endif + +EXTERN_C const CLSID CLSID_Components; + +#ifdef __cplusplus + +class DECLSPEC_UUID("809B6661-94C4-49e6-B6EC-3F0F862215AA") +Components; +#endif + +EXTERN_C const CLSID CLSID_Component; + +#ifdef __cplusplus + +class DECLSPEC_UUID("59DC47A8-116C-11d3-9D8E-00C04F72D980") +Component; +#endif + +EXTERN_C const CLSID CLSID_MPEG2Component; + +#ifdef __cplusplus + +class DECLSPEC_UUID("055CB2D7-2969-45cd-914B-76890722F112") +MPEG2Component; +#endif + +EXTERN_C const CLSID CLSID_TuneRequest; + +#ifdef __cplusplus + +class DECLSPEC_UUID("B46E0D38-AB35-4a06-A137-70576B01B39F") +TuneRequest; +#endif + +EXTERN_C const CLSID CLSID_ChannelTuneRequest; + +#ifdef __cplusplus + +class DECLSPEC_UUID("0369B4E5-45B6-11d3-B650-00C04F79498E") +ChannelTuneRequest; +#endif + +EXTERN_C const CLSID CLSID_ATSCChannelTuneRequest; + +#ifdef __cplusplus + +class DECLSPEC_UUID("0369B4E6-45B6-11d3-B650-00C04F79498E") +ATSCChannelTuneRequest; +#endif + +EXTERN_C const CLSID CLSID_MPEG2TuneRequest; + +#ifdef __cplusplus + +class DECLSPEC_UUID("0955AC62-BF2E-4cba-A2B9-A63F772D46CF") +MPEG2TuneRequest; +#endif + +EXTERN_C const CLSID CLSID_MPEG2TuneRequestFactory; + +#ifdef __cplusplus + +class DECLSPEC_UUID("2C63E4EB-4CEA-41b8-919C-E947EA19A77C") +MPEG2TuneRequestFactory; +#endif + +EXTERN_C const CLSID CLSID_Locator; + +#ifdef __cplusplus + +class DECLSPEC_UUID("0888C883-AC4F-4943-B516-2C38D9B34562") +Locator; +#endif + +EXTERN_C const CLSID CLSID_ATSCLocator; + +#ifdef __cplusplus + +class DECLSPEC_UUID("8872FF1B-98FA-4d7a-8D93-C9F1055F85BB") +ATSCLocator; +#endif + +EXTERN_C const CLSID CLSID_DVBTLocator; + +#ifdef __cplusplus + +class DECLSPEC_UUID("9CD64701-BDF3-4d14-8E03-F12983D86664") +DVBTLocator; +#endif + +EXTERN_C const CLSID CLSID_DVBSLocator; + +#ifdef __cplusplus + +class DECLSPEC_UUID("1DF7D126-4050-47f0-A7CF-4C4CA9241333") +DVBSLocator; +#endif + +EXTERN_C const CLSID CLSID_DVBCLocator; + +#ifdef __cplusplus + +class DECLSPEC_UUID("C531D9FD-9685-4028-8B68-6E1232079F1E") +DVBCLocator; +#endif + +EXTERN_C const CLSID CLSID_DVBTuneRequest; + +#ifdef __cplusplus + +class DECLSPEC_UUID("15D6504A-5494-499c-886C-973C9E53B9F1") +DVBTuneRequest; +#endif + +EXTERN_C const CLSID CLSID_CreatePropBagOnRegKey; + +#ifdef __cplusplus + +class DECLSPEC_UUID("8A674B49-1F63-11d3-B64C-00C04F79498E") +CreatePropBagOnRegKey; +#endif + +EXTERN_C const CLSID CLSID_BroadcastEventService; + +#ifdef __cplusplus + +class DECLSPEC_UUID("0B3FFB92-0919-4934-9D5B-619C719D0202") +BroadcastEventService; +#endif +#endif /* __TunerLib_LIBRARY_DEFINED__ */ + +/* Additional Prototypes for ALL interfaces */ + +unsigned long __RPC_USER BSTR_UserSize( unsigned long *, unsigned long , BSTR * ); +unsigned char * __RPC_USER BSTR_UserMarshal( unsigned long *, unsigned char *, BSTR * ); +unsigned char * __RPC_USER BSTR_UserUnmarshal(unsigned long *, unsigned char *, BSTR * ); +void __RPC_USER BSTR_UserFree( unsigned long *, BSTR * ); + +unsigned long __RPC_USER VARIANT_UserSize( unsigned long *, unsigned long , VARIANT * ); +unsigned char * __RPC_USER VARIANT_UserMarshal( unsigned long *, unsigned char *, VARIANT * ); +unsigned char * __RPC_USER VARIANT_UserUnmarshal(unsigned long *, unsigned char *, VARIANT * ); +void __RPC_USER VARIANT_UserFree( unsigned long *, VARIANT * ); + +/* end of Additional Prototypes */ + +#ifdef __cplusplus +} +#endif + +#endif + + diff --git a/videoInputSrcAndDemos/libs/DShow/Include/tvratings.h b/videoInputSrcAndDemos/libs/DShow/Include/tvratings.h index 329d6c8..53e6cfe 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/tvratings.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/tvratings.h @@ -1,702 +1,702 @@ - -#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 tvratings.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 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 -#endif // __RPCNDR_H_VERSION__ - -#ifndef COM_NO_WINDOWS_H -#include "windows.h" -#include "ole2.h" -#endif /*COM_NO_WINDOWS_H*/ - -#ifndef __tvratings_h__ -#define __tvratings_h__ - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -#pragma once -#endif - -/* Forward Declarations */ - -#ifndef __IXDSToRat_FWD_DEFINED__ -#define __IXDSToRat_FWD_DEFINED__ -typedef interface IXDSToRat IXDSToRat; -#endif /* __IXDSToRat_FWD_DEFINED__ */ - - -#ifndef __IEvalRat_FWD_DEFINED__ -#define __IEvalRat_FWD_DEFINED__ -typedef interface IEvalRat IEvalRat; -#endif /* __IEvalRat_FWD_DEFINED__ */ - - -#ifndef __XDSToRat_FWD_DEFINED__ -#define __XDSToRat_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class XDSToRat XDSToRat; -#else -typedef struct XDSToRat XDSToRat; -#endif /* __cplusplus */ - -#endif /* __XDSToRat_FWD_DEFINED__ */ - - -#ifndef __EvalRat_FWD_DEFINED__ -#define __EvalRat_FWD_DEFINED__ - -#ifdef __cplusplus -typedef class EvalRat EvalRat; -#else -typedef struct EvalRat EvalRat; -#endif /* __cplusplus */ - -#endif /* __EvalRat_FWD_DEFINED__ */ - - -/* header files for imported files */ -#include "oaidl.h" -#include "ocidl.h" - -#ifdef __cplusplus -extern "C"{ -#endif - -void * __RPC_USER MIDL_user_allocate(size_t); -void __RPC_USER MIDL_user_free( void * ); - -/* interface __MIDL_itf_tvratings_0000 */ -/* [local] */ - -typedef /* [public][public][public][public][public][public][public][public] */ -enum __MIDL___MIDL_itf_tvratings_0000_0001 - { MPAA = 0, - US_TV = 1, - Canadian_English = 2, - Canadian_French = 3, - Reserved4 = 4, - System5 = 5, - System6 = 6, - Reserved7 = 7, - TvRat_kSystems = 8, - TvRat_SystemDontKnow = 255 - } EnTvRat_System; - -typedef /* [public][public][public][public][public][public][public][public] */ -enum __MIDL___MIDL_itf_tvratings_0000_0002 - { 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, - TvRat_LevelDontKnow = 255 - } EnTvRat_GenericLevel; - -typedef /* [public] */ -enum __MIDL___MIDL_itf_tvratings_0000_0003 - { 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 /* [public] */ -enum __MIDL___MIDL_itf_tvratings_0000_0004 - { 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 /* [public] */ -enum __MIDL___MIDL_itf_tvratings_0000_0005 - { 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 /* [public] */ -enum __MIDL___MIDL_itf_tvratings_0000_0006 - { 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 /* [public] */ -enum __MIDL___MIDL_itf_tvratings_0000_0007 - { BfAttrNone = 0, - BfIsBlocked = 1, - BfIsAttr_1 = 2, - BfIsAttr_2 = 4, - BfIsAttr_3 = 8, - BfIsAttr_4 = 16, - BfIsAttr_5 = 32, - BfIsAttr_6 = 64, - BfIsAttr_7 = 128, - BfValidAttrSubmask = 255 - } BfEnTvRat_GenericAttributes; - -typedef /* [public] */ -enum __MIDL___MIDL_itf_tvratings_0000_0008 - { 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 - } BfEnTvRat_Attributes_US_TV; - -typedef /* [public] */ -enum __MIDL___MIDL_itf_tvratings_0000_0009 - { MPAA_IsBlocked = BfIsBlocked, - MPAA_ValidAttrSubmask = 1 - } BfEnTvRat_Attributes_MPAA; - -typedef /* [public] */ -enum __MIDL___MIDL_itf_tvratings_0000_0010 - { CAE_IsBlocked = BfIsBlocked, - CAE_ValidAttrSubmask = 1 - } BfEnTvRat_Attributes_CAE_TV; - -typedef /* [public] */ -enum __MIDL___MIDL_itf_tvratings_0000_0011 - { CAF_IsBlocked = BfIsBlocked, - CAF_ValidAttrSubmask = 1 - } BfEnTvRat_Attributes_CAF_TV; - - - -extern RPC_IF_HANDLE __MIDL_itf_tvratings_0000_v0_0_c_ifspec; -extern RPC_IF_HANDLE __MIDL_itf_tvratings_0000_v0_0_s_ifspec; - -#ifndef __IXDSToRat_INTERFACE_DEFINED__ -#define __IXDSToRat_INTERFACE_DEFINED__ - -/* interface IXDSToRat */ -/* [unique][helpstring][dual][uuid][object] */ - - -EXTERN_C const IID IID_IXDSToRat; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("C5C5C5B0-3ABC-11D6-B25B-00C04FA0C026") - IXDSToRat : public IDispatch - { - public: - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Init( void) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE ParseXDSBytePair( - /* [in] */ BYTE byte1, - /* [in] */ BYTE byte2, - /* [out] */ EnTvRat_System *pEnSystem, - /* [out] */ EnTvRat_GenericLevel *pEnLevel, - /* [out] */ LONG *plBfEnAttributes) = 0; - - }; - -#else /* C style interface */ - - typedef struct IXDSToRatVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IXDSToRat * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IXDSToRat * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IXDSToRat * This); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( - IXDSToRat * This, - /* [out] */ UINT *pctinfo); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( - IXDSToRat * This, - /* [in] */ UINT iTInfo, - /* [in] */ LCID lcid, - /* [out] */ ITypeInfo **ppTInfo); - - HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( - IXDSToRat * This, - /* [in] */ REFIID riid, - /* [size_is][in] */ LPOLESTR *rgszNames, - /* [in] */ UINT cNames, - /* [in] */ LCID lcid, - /* [size_is][out] */ DISPID *rgDispId); - - /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( - IXDSToRat * This, - /* [in] */ DISPID dispIdMember, - /* [in] */ REFIID riid, - /* [in] */ LCID lcid, - /* [in] */ WORD wFlags, - /* [out][in] */ DISPPARAMS *pDispParams, - /* [out] */ VARIANT *pVarResult, - /* [out] */ EXCEPINFO *pExcepInfo, - /* [out] */ UINT *puArgErr); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Init )( - IXDSToRat * This); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *ParseXDSBytePair )( - IXDSToRat * This, - /* [in] */ BYTE byte1, - /* [in] */ BYTE byte2, - /* [out] */ EnTvRat_System *pEnSystem, - /* [out] */ EnTvRat_GenericLevel *pEnLevel, - /* [out] */ LONG *plBfEnAttributes); - - END_INTERFACE - } IXDSToRatVtbl; - - interface IXDSToRat - { - CONST_VTBL struct IXDSToRatVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IXDSToRat_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IXDSToRat_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IXDSToRat_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IXDSToRat_GetTypeInfoCount(This,pctinfo) \ - (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) - -#define IXDSToRat_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ - (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) - -#define IXDSToRat_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ - (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) - -#define IXDSToRat_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ - (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) - - -#define IXDSToRat_Init(This) \ - (This)->lpVtbl -> Init(This) - -#define IXDSToRat_ParseXDSBytePair(This,byte1,byte2,pEnSystem,pEnLevel,plBfEnAttributes) \ - (This)->lpVtbl -> ParseXDSBytePair(This,byte1,byte2,pEnSystem,pEnLevel,plBfEnAttributes) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IXDSToRat_Init_Proxy( - IXDSToRat * This); - - -void __RPC_STUB IXDSToRat_Init_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IXDSToRat_ParseXDSBytePair_Proxy( - IXDSToRat * This, - /* [in] */ BYTE byte1, - /* [in] */ BYTE byte2, - /* [out] */ EnTvRat_System *pEnSystem, - /* [out] */ EnTvRat_GenericLevel *pEnLevel, - /* [out] */ LONG *plBfEnAttributes); - - -void __RPC_STUB IXDSToRat_ParseXDSBytePair_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IXDSToRat_INTERFACE_DEFINED__ */ - - -#ifndef __IEvalRat_INTERFACE_DEFINED__ -#define __IEvalRat_INTERFACE_DEFINED__ - -/* interface IEvalRat */ -/* [unique][helpstring][dual][uuid][object] */ - - -EXTERN_C const IID IID_IEvalRat; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("C5C5C5B1-3ABC-11D6-B25B-00C04FA0C026") - IEvalRat : public IDispatch - { - public: - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_BlockedRatingAttributes( - /* [in] */ EnTvRat_System enSystem, - /* [in] */ EnTvRat_GenericLevel enLevel, - /* [retval][out] */ LONG *plbfAttrs) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_BlockedRatingAttributes( - /* [in] */ EnTvRat_System enSystem, - /* [in] */ EnTvRat_GenericLevel enLevel, - /* [in] */ LONG lbfAttrs) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_BlockUnRated( - /* [retval][out] */ BOOL *pfBlockUnRatedShows) = 0; - - virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_BlockUnRated( - /* [in] */ BOOL fBlockUnRatedShows) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE MostRestrictiveRating( - /* [in] */ EnTvRat_System enSystem1, - /* [in] */ EnTvRat_GenericLevel enEnLevel1, - /* [in] */ LONG lbfEnAttr1, - /* [in] */ EnTvRat_System enSystem2, - /* [in] */ EnTvRat_GenericLevel enEnLevel2, - /* [in] */ LONG lbfEnAttr2, - /* [out] */ EnTvRat_System *penSystem, - /* [out] */ EnTvRat_GenericLevel *penEnLevel, - /* [out] */ LONG *plbfEnAttr) = 0; - - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE TestRating( - /* [in] */ EnTvRat_System enShowSystem, - /* [in] */ EnTvRat_GenericLevel enShowLevel, - /* [in] */ LONG lbfEnShowAttributes) = 0; - - }; - -#else /* C style interface */ - - typedef struct IEvalRatVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IEvalRat * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IEvalRat * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IEvalRat * This); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( - IEvalRat * This, - /* [out] */ UINT *pctinfo); - - HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( - IEvalRat * This, - /* [in] */ UINT iTInfo, - /* [in] */ LCID lcid, - /* [out] */ ITypeInfo **ppTInfo); - - HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( - IEvalRat * This, - /* [in] */ REFIID riid, - /* [size_is][in] */ LPOLESTR *rgszNames, - /* [in] */ UINT cNames, - /* [in] */ LCID lcid, - /* [size_is][out] */ DISPID *rgDispId); - - /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( - IEvalRat * This, - /* [in] */ DISPID dispIdMember, - /* [in] */ REFIID riid, - /* [in] */ LCID lcid, - /* [in] */ WORD wFlags, - /* [out][in] */ DISPPARAMS *pDispParams, - /* [out] */ VARIANT *pVarResult, - /* [out] */ EXCEPINFO *pExcepInfo, - /* [out] */ UINT *puArgErr); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_BlockedRatingAttributes )( - IEvalRat * This, - /* [in] */ EnTvRat_System enSystem, - /* [in] */ EnTvRat_GenericLevel enLevel, - /* [retval][out] */ LONG *plbfAttrs); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_BlockedRatingAttributes )( - IEvalRat * This, - /* [in] */ EnTvRat_System enSystem, - /* [in] */ EnTvRat_GenericLevel enLevel, - /* [in] */ LONG lbfAttrs); - - /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_BlockUnRated )( - IEvalRat * This, - /* [retval][out] */ BOOL *pfBlockUnRatedShows); - - /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_BlockUnRated )( - IEvalRat * This, - /* [in] */ BOOL fBlockUnRatedShows); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *MostRestrictiveRating )( - IEvalRat * This, - /* [in] */ EnTvRat_System enSystem1, - /* [in] */ EnTvRat_GenericLevel enEnLevel1, - /* [in] */ LONG lbfEnAttr1, - /* [in] */ EnTvRat_System enSystem2, - /* [in] */ EnTvRat_GenericLevel enEnLevel2, - /* [in] */ LONG lbfEnAttr2, - /* [out] */ EnTvRat_System *penSystem, - /* [out] */ EnTvRat_GenericLevel *penEnLevel, - /* [out] */ LONG *plbfEnAttr); - - /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *TestRating )( - IEvalRat * This, - /* [in] */ EnTvRat_System enShowSystem, - /* [in] */ EnTvRat_GenericLevel enShowLevel, - /* [in] */ LONG lbfEnShowAttributes); - - END_INTERFACE - } IEvalRatVtbl; - - interface IEvalRat - { - CONST_VTBL struct IEvalRatVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IEvalRat_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IEvalRat_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IEvalRat_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IEvalRat_GetTypeInfoCount(This,pctinfo) \ - (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) - -#define IEvalRat_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ - (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) - -#define IEvalRat_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ - (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) - -#define IEvalRat_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ - (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) - - -#define IEvalRat_get_BlockedRatingAttributes(This,enSystem,enLevel,plbfAttrs) \ - (This)->lpVtbl -> get_BlockedRatingAttributes(This,enSystem,enLevel,plbfAttrs) - -#define IEvalRat_put_BlockedRatingAttributes(This,enSystem,enLevel,lbfAttrs) \ - (This)->lpVtbl -> put_BlockedRatingAttributes(This,enSystem,enLevel,lbfAttrs) - -#define IEvalRat_get_BlockUnRated(This,pfBlockUnRatedShows) \ - (This)->lpVtbl -> get_BlockUnRated(This,pfBlockUnRatedShows) - -#define IEvalRat_put_BlockUnRated(This,fBlockUnRatedShows) \ - (This)->lpVtbl -> put_BlockUnRated(This,fBlockUnRatedShows) - -#define IEvalRat_MostRestrictiveRating(This,enSystem1,enEnLevel1,lbfEnAttr1,enSystem2,enEnLevel2,lbfEnAttr2,penSystem,penEnLevel,plbfEnAttr) \ - (This)->lpVtbl -> MostRestrictiveRating(This,enSystem1,enEnLevel1,lbfEnAttr1,enSystem2,enEnLevel2,lbfEnAttr2,penSystem,penEnLevel,plbfEnAttr) - -#define IEvalRat_TestRating(This,enShowSystem,enShowLevel,lbfEnShowAttributes) \ - (This)->lpVtbl -> TestRating(This,enShowSystem,enShowLevel,lbfEnShowAttributes) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IEvalRat_get_BlockedRatingAttributes_Proxy( - IEvalRat * This, - /* [in] */ EnTvRat_System enSystem, - /* [in] */ EnTvRat_GenericLevel enLevel, - /* [retval][out] */ LONG *plbfAttrs); - - -void __RPC_STUB IEvalRat_get_BlockedRatingAttributes_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IEvalRat_put_BlockedRatingAttributes_Proxy( - IEvalRat * This, - /* [in] */ EnTvRat_System enSystem, - /* [in] */ EnTvRat_GenericLevel enLevel, - /* [in] */ LONG lbfAttrs); - - -void __RPC_STUB IEvalRat_put_BlockedRatingAttributes_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IEvalRat_get_BlockUnRated_Proxy( - IEvalRat * This, - /* [retval][out] */ BOOL *pfBlockUnRatedShows); - - -void __RPC_STUB IEvalRat_get_BlockUnRated_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IEvalRat_put_BlockUnRated_Proxy( - IEvalRat * This, - /* [in] */ BOOL fBlockUnRatedShows); - - -void __RPC_STUB IEvalRat_put_BlockUnRated_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IEvalRat_MostRestrictiveRating_Proxy( - IEvalRat * This, - /* [in] */ EnTvRat_System enSystem1, - /* [in] */ EnTvRat_GenericLevel enEnLevel1, - /* [in] */ LONG lbfEnAttr1, - /* [in] */ EnTvRat_System enSystem2, - /* [in] */ EnTvRat_GenericLevel enEnLevel2, - /* [in] */ LONG lbfEnAttr2, - /* [out] */ EnTvRat_System *penSystem, - /* [out] */ EnTvRat_GenericLevel *penEnLevel, - /* [out] */ LONG *plbfEnAttr); - - -void __RPC_STUB IEvalRat_MostRestrictiveRating_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IEvalRat_TestRating_Proxy( - IEvalRat * This, - /* [in] */ EnTvRat_System enShowSystem, - /* [in] */ EnTvRat_GenericLevel enShowLevel, - /* [in] */ LONG lbfEnShowAttributes); - - -void __RPC_STUB IEvalRat_TestRating_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IEvalRat_INTERFACE_DEFINED__ */ - - - -#ifndef __TVRATINGSLib_LIBRARY_DEFINED__ -#define __TVRATINGSLib_LIBRARY_DEFINED__ - -/* library TVRATINGSLib */ -/* [helpstring][version][uuid] */ - - -EXTERN_C const IID LIBID_TVRATINGSLib; - -EXTERN_C const CLSID CLSID_XDSToRat; - -#ifdef __cplusplus - -class DECLSPEC_UUID("C5C5C5F0-3ABC-11D6-B25B-00C04FA0C026") -XDSToRat; -#endif - -EXTERN_C const CLSID CLSID_EvalRat; - -#ifdef __cplusplus - -class DECLSPEC_UUID("C5C5C5F1-3ABC-11D6-B25B-00C04FA0C026") -EvalRat; -#endif -#endif /* __TVRATINGSLib_LIBRARY_DEFINED__ */ - -/* Additional Prototypes for ALL interfaces */ - -/* end of Additional Prototypes */ - -#ifdef __cplusplus -} -#endif - -#endif - - + +#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 tvratings.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 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 +#endif // __RPCNDR_H_VERSION__ + +#ifndef COM_NO_WINDOWS_H +#include "windows.h" +#include "ole2.h" +#endif /*COM_NO_WINDOWS_H*/ + +#ifndef __tvratings_h__ +#define __tvratings_h__ + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#pragma once +#endif + +/* Forward Declarations */ + +#ifndef __IXDSToRat_FWD_DEFINED__ +#define __IXDSToRat_FWD_DEFINED__ +typedef interface IXDSToRat IXDSToRat; +#endif /* __IXDSToRat_FWD_DEFINED__ */ + + +#ifndef __IEvalRat_FWD_DEFINED__ +#define __IEvalRat_FWD_DEFINED__ +typedef interface IEvalRat IEvalRat; +#endif /* __IEvalRat_FWD_DEFINED__ */ + + +#ifndef __XDSToRat_FWD_DEFINED__ +#define __XDSToRat_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class XDSToRat XDSToRat; +#else +typedef struct XDSToRat XDSToRat; +#endif /* __cplusplus */ + +#endif /* __XDSToRat_FWD_DEFINED__ */ + + +#ifndef __EvalRat_FWD_DEFINED__ +#define __EvalRat_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class EvalRat EvalRat; +#else +typedef struct EvalRat EvalRat; +#endif /* __cplusplus */ + +#endif /* __EvalRat_FWD_DEFINED__ */ + + +/* header files for imported files */ +#include "oaidl.h" +#include "ocidl.h" + +#ifdef __cplusplus +extern "C"{ +#endif + +void * __RPC_USER MIDL_user_allocate(size_t); +void __RPC_USER MIDL_user_free( void * ); + +/* interface __MIDL_itf_tvratings_0000 */ +/* [local] */ + +typedef /* [public][public][public][public][public][public][public][public] */ +enum __MIDL___MIDL_itf_tvratings_0000_0001 + { MPAA = 0, + US_TV = 1, + Canadian_English = 2, + Canadian_French = 3, + Reserved4 = 4, + System5 = 5, + System6 = 6, + Reserved7 = 7, + TvRat_kSystems = 8, + TvRat_SystemDontKnow = 255 + } EnTvRat_System; + +typedef /* [public][public][public][public][public][public][public][public] */ +enum __MIDL___MIDL_itf_tvratings_0000_0002 + { 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, + TvRat_LevelDontKnow = 255 + } EnTvRat_GenericLevel; + +typedef /* [public] */ +enum __MIDL___MIDL_itf_tvratings_0000_0003 + { 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 /* [public] */ +enum __MIDL___MIDL_itf_tvratings_0000_0004 + { 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 /* [public] */ +enum __MIDL___MIDL_itf_tvratings_0000_0005 + { 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 /* [public] */ +enum __MIDL___MIDL_itf_tvratings_0000_0006 + { 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 /* [public] */ +enum __MIDL___MIDL_itf_tvratings_0000_0007 + { BfAttrNone = 0, + BfIsBlocked = 1, + BfIsAttr_1 = 2, + BfIsAttr_2 = 4, + BfIsAttr_3 = 8, + BfIsAttr_4 = 16, + BfIsAttr_5 = 32, + BfIsAttr_6 = 64, + BfIsAttr_7 = 128, + BfValidAttrSubmask = 255 + } BfEnTvRat_GenericAttributes; + +typedef /* [public] */ +enum __MIDL___MIDL_itf_tvratings_0000_0008 + { 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 + } BfEnTvRat_Attributes_US_TV; + +typedef /* [public] */ +enum __MIDL___MIDL_itf_tvratings_0000_0009 + { MPAA_IsBlocked = BfIsBlocked, + MPAA_ValidAttrSubmask = 1 + } BfEnTvRat_Attributes_MPAA; + +typedef /* [public] */ +enum __MIDL___MIDL_itf_tvratings_0000_0010 + { CAE_IsBlocked = BfIsBlocked, + CAE_ValidAttrSubmask = 1 + } BfEnTvRat_Attributes_CAE_TV; + +typedef /* [public] */ +enum __MIDL___MIDL_itf_tvratings_0000_0011 + { CAF_IsBlocked = BfIsBlocked, + CAF_ValidAttrSubmask = 1 + } BfEnTvRat_Attributes_CAF_TV; + + + +extern RPC_IF_HANDLE __MIDL_itf_tvratings_0000_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_tvratings_0000_v0_0_s_ifspec; + +#ifndef __IXDSToRat_INTERFACE_DEFINED__ +#define __IXDSToRat_INTERFACE_DEFINED__ + +/* interface IXDSToRat */ +/* [unique][helpstring][dual][uuid][object] */ + + +EXTERN_C const IID IID_IXDSToRat; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("C5C5C5B0-3ABC-11D6-B25B-00C04FA0C026") + IXDSToRat : public IDispatch + { + public: + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Init( void) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE ParseXDSBytePair( + /* [in] */ BYTE byte1, + /* [in] */ BYTE byte2, + /* [out] */ EnTvRat_System *pEnSystem, + /* [out] */ EnTvRat_GenericLevel *pEnLevel, + /* [out] */ LONG *plBfEnAttributes) = 0; + + }; + +#else /* C style interface */ + + typedef struct IXDSToRatVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IXDSToRat * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IXDSToRat * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IXDSToRat * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IXDSToRat * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IXDSToRat * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IXDSToRat * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IXDSToRat * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Init )( + IXDSToRat * This); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *ParseXDSBytePair )( + IXDSToRat * This, + /* [in] */ BYTE byte1, + /* [in] */ BYTE byte2, + /* [out] */ EnTvRat_System *pEnSystem, + /* [out] */ EnTvRat_GenericLevel *pEnLevel, + /* [out] */ LONG *plBfEnAttributes); + + END_INTERFACE + } IXDSToRatVtbl; + + interface IXDSToRat + { + CONST_VTBL struct IXDSToRatVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IXDSToRat_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IXDSToRat_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IXDSToRat_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IXDSToRat_GetTypeInfoCount(This,pctinfo) \ + (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) + +#define IXDSToRat_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) + +#define IXDSToRat_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) + +#define IXDSToRat_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) + + +#define IXDSToRat_Init(This) \ + (This)->lpVtbl -> Init(This) + +#define IXDSToRat_ParseXDSBytePair(This,byte1,byte2,pEnSystem,pEnLevel,plBfEnAttributes) \ + (This)->lpVtbl -> ParseXDSBytePair(This,byte1,byte2,pEnSystem,pEnLevel,plBfEnAttributes) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IXDSToRat_Init_Proxy( + IXDSToRat * This); + + +void __RPC_STUB IXDSToRat_Init_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IXDSToRat_ParseXDSBytePair_Proxy( + IXDSToRat * This, + /* [in] */ BYTE byte1, + /* [in] */ BYTE byte2, + /* [out] */ EnTvRat_System *pEnSystem, + /* [out] */ EnTvRat_GenericLevel *pEnLevel, + /* [out] */ LONG *plBfEnAttributes); + + +void __RPC_STUB IXDSToRat_ParseXDSBytePair_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IXDSToRat_INTERFACE_DEFINED__ */ + + +#ifndef __IEvalRat_INTERFACE_DEFINED__ +#define __IEvalRat_INTERFACE_DEFINED__ + +/* interface IEvalRat */ +/* [unique][helpstring][dual][uuid][object] */ + + +EXTERN_C const IID IID_IEvalRat; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("C5C5C5B1-3ABC-11D6-B25B-00C04FA0C026") + IEvalRat : public IDispatch + { + public: + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_BlockedRatingAttributes( + /* [in] */ EnTvRat_System enSystem, + /* [in] */ EnTvRat_GenericLevel enLevel, + /* [retval][out] */ LONG *plbfAttrs) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_BlockedRatingAttributes( + /* [in] */ EnTvRat_System enSystem, + /* [in] */ EnTvRat_GenericLevel enLevel, + /* [in] */ LONG lbfAttrs) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_BlockUnRated( + /* [retval][out] */ BOOL *pfBlockUnRatedShows) = 0; + + virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_BlockUnRated( + /* [in] */ BOOL fBlockUnRatedShows) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE MostRestrictiveRating( + /* [in] */ EnTvRat_System enSystem1, + /* [in] */ EnTvRat_GenericLevel enEnLevel1, + /* [in] */ LONG lbfEnAttr1, + /* [in] */ EnTvRat_System enSystem2, + /* [in] */ EnTvRat_GenericLevel enEnLevel2, + /* [in] */ LONG lbfEnAttr2, + /* [out] */ EnTvRat_System *penSystem, + /* [out] */ EnTvRat_GenericLevel *penEnLevel, + /* [out] */ LONG *plbfEnAttr) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE TestRating( + /* [in] */ EnTvRat_System enShowSystem, + /* [in] */ EnTvRat_GenericLevel enShowLevel, + /* [in] */ LONG lbfEnShowAttributes) = 0; + + }; + +#else /* C style interface */ + + typedef struct IEvalRatVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IEvalRat * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IEvalRat * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IEvalRat * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IEvalRat * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IEvalRat * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IEvalRat * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IEvalRat * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_BlockedRatingAttributes )( + IEvalRat * This, + /* [in] */ EnTvRat_System enSystem, + /* [in] */ EnTvRat_GenericLevel enLevel, + /* [retval][out] */ LONG *plbfAttrs); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_BlockedRatingAttributes )( + IEvalRat * This, + /* [in] */ EnTvRat_System enSystem, + /* [in] */ EnTvRat_GenericLevel enLevel, + /* [in] */ LONG lbfAttrs); + + /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_BlockUnRated )( + IEvalRat * This, + /* [retval][out] */ BOOL *pfBlockUnRatedShows); + + /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_BlockUnRated )( + IEvalRat * This, + /* [in] */ BOOL fBlockUnRatedShows); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *MostRestrictiveRating )( + IEvalRat * This, + /* [in] */ EnTvRat_System enSystem1, + /* [in] */ EnTvRat_GenericLevel enEnLevel1, + /* [in] */ LONG lbfEnAttr1, + /* [in] */ EnTvRat_System enSystem2, + /* [in] */ EnTvRat_GenericLevel enEnLevel2, + /* [in] */ LONG lbfEnAttr2, + /* [out] */ EnTvRat_System *penSystem, + /* [out] */ EnTvRat_GenericLevel *penEnLevel, + /* [out] */ LONG *plbfEnAttr); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *TestRating )( + IEvalRat * This, + /* [in] */ EnTvRat_System enShowSystem, + /* [in] */ EnTvRat_GenericLevel enShowLevel, + /* [in] */ LONG lbfEnShowAttributes); + + END_INTERFACE + } IEvalRatVtbl; + + interface IEvalRat + { + CONST_VTBL struct IEvalRatVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IEvalRat_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IEvalRat_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IEvalRat_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IEvalRat_GetTypeInfoCount(This,pctinfo) \ + (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) + +#define IEvalRat_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) + +#define IEvalRat_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) + +#define IEvalRat_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) + + +#define IEvalRat_get_BlockedRatingAttributes(This,enSystem,enLevel,plbfAttrs) \ + (This)->lpVtbl -> get_BlockedRatingAttributes(This,enSystem,enLevel,plbfAttrs) + +#define IEvalRat_put_BlockedRatingAttributes(This,enSystem,enLevel,lbfAttrs) \ + (This)->lpVtbl -> put_BlockedRatingAttributes(This,enSystem,enLevel,lbfAttrs) + +#define IEvalRat_get_BlockUnRated(This,pfBlockUnRatedShows) \ + (This)->lpVtbl -> get_BlockUnRated(This,pfBlockUnRatedShows) + +#define IEvalRat_put_BlockUnRated(This,fBlockUnRatedShows) \ + (This)->lpVtbl -> put_BlockUnRated(This,fBlockUnRatedShows) + +#define IEvalRat_MostRestrictiveRating(This,enSystem1,enEnLevel1,lbfEnAttr1,enSystem2,enEnLevel2,lbfEnAttr2,penSystem,penEnLevel,plbfEnAttr) \ + (This)->lpVtbl -> MostRestrictiveRating(This,enSystem1,enEnLevel1,lbfEnAttr1,enSystem2,enEnLevel2,lbfEnAttr2,penSystem,penEnLevel,plbfEnAttr) + +#define IEvalRat_TestRating(This,enShowSystem,enShowLevel,lbfEnShowAttributes) \ + (This)->lpVtbl -> TestRating(This,enShowSystem,enShowLevel,lbfEnShowAttributes) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IEvalRat_get_BlockedRatingAttributes_Proxy( + IEvalRat * This, + /* [in] */ EnTvRat_System enSystem, + /* [in] */ EnTvRat_GenericLevel enLevel, + /* [retval][out] */ LONG *plbfAttrs); + + +void __RPC_STUB IEvalRat_get_BlockedRatingAttributes_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IEvalRat_put_BlockedRatingAttributes_Proxy( + IEvalRat * This, + /* [in] */ EnTvRat_System enSystem, + /* [in] */ EnTvRat_GenericLevel enLevel, + /* [in] */ LONG lbfAttrs); + + +void __RPC_STUB IEvalRat_put_BlockedRatingAttributes_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE IEvalRat_get_BlockUnRated_Proxy( + IEvalRat * This, + /* [retval][out] */ BOOL *pfBlockUnRatedShows); + + +void __RPC_STUB IEvalRat_get_BlockUnRated_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE IEvalRat_put_BlockUnRated_Proxy( + IEvalRat * This, + /* [in] */ BOOL fBlockUnRatedShows); + + +void __RPC_STUB IEvalRat_put_BlockUnRated_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IEvalRat_MostRestrictiveRating_Proxy( + IEvalRat * This, + /* [in] */ EnTvRat_System enSystem1, + /* [in] */ EnTvRat_GenericLevel enEnLevel1, + /* [in] */ LONG lbfEnAttr1, + /* [in] */ EnTvRat_System enSystem2, + /* [in] */ EnTvRat_GenericLevel enEnLevel2, + /* [in] */ LONG lbfEnAttr2, + /* [out] */ EnTvRat_System *penSystem, + /* [out] */ EnTvRat_GenericLevel *penEnLevel, + /* [out] */ LONG *plbfEnAttr); + + +void __RPC_STUB IEvalRat_MostRestrictiveRating_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IEvalRat_TestRating_Proxy( + IEvalRat * This, + /* [in] */ EnTvRat_System enShowSystem, + /* [in] */ EnTvRat_GenericLevel enShowLevel, + /* [in] */ LONG lbfEnShowAttributes); + + +void __RPC_STUB IEvalRat_TestRating_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IEvalRat_INTERFACE_DEFINED__ */ + + + +#ifndef __TVRATINGSLib_LIBRARY_DEFINED__ +#define __TVRATINGSLib_LIBRARY_DEFINED__ + +/* library TVRATINGSLib */ +/* [helpstring][version][uuid] */ + + +EXTERN_C const IID LIBID_TVRATINGSLib; + +EXTERN_C const CLSID CLSID_XDSToRat; + +#ifdef __cplusplus + +class DECLSPEC_UUID("C5C5C5F0-3ABC-11D6-B25B-00C04FA0C026") +XDSToRat; +#endif + +EXTERN_C const CLSID CLSID_EvalRat; + +#ifdef __cplusplus + +class DECLSPEC_UUID("C5C5C5F1-3ABC-11D6-B25B-00C04FA0C026") +EvalRat; +#endif +#endif /* __TVRATINGSLib_LIBRARY_DEFINED__ */ + +/* Additional Prototypes for ALL interfaces */ + +/* end of Additional Prototypes */ + +#ifdef __cplusplus +} +#endif + +#endif + + diff --git a/videoInputSrcAndDemos/libs/DShow/Include/uuids.h b/videoInputSrcAndDemos/libs/DShow/Include/uuids.h index 66de010..c713d0d 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/uuids.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/uuids.h @@ -1,1527 +1,1527 @@ -//------------------------------------------------------------------------------ -// File: uuids.h -// -// Desc: Contains the GUIDs for the MediaType type, subtype fields and format -// types for standard media types, and also class ids for well-known -// components. -// -// Copyright (c) 1992 - 2002, Microsoft Corporation. All rights reserved. -//------------------------------------------------------------------------------ - - -// -// We want to use this list for generating strings for debugging too -// so we redefine OUR_GUID_ENTRY depending on what we want to do -// -// It is imperative that all entries in this file are declared using -// OUR_GUID_ENTRY as that macro might have been defined in advance of -// including this file. See wxdebug.cpp in sdk\classes\base. -// - -#ifndef OUR_GUID_ENTRY - #define OUR_GUID_ENTRY(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \ - DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8); -#endif - - -// -- to allow consistent labeling of Media types and subtypes -- - -#define MEDIATYPE_NULL GUID_NULL -#define MEDIASUBTYPE_NULL GUID_NULL - -// -- Use this subtype if you don't have a use for a subtype for your type -// e436eb8e-524f-11ce-9f53-0020af0ba770 MEDIASUBTYPE_None -OUR_GUID_ENTRY(MEDIASUBTYPE_None, -0xe436eb8e, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70) - - -// -- major types --- - - -// 73646976-0000-0010-8000-00AA00389B71 'vids' == MEDIATYPE_Video -OUR_GUID_ENTRY(MEDIATYPE_Video, -0x73646976, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) - -// 73647561-0000-0010-8000-00AA00389B71 'auds' == MEDIATYPE_Audio -OUR_GUID_ENTRY(MEDIATYPE_Audio, -0x73647561, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) - -// 73747874-0000-0010-8000-00AA00389B71 'txts' == MEDIATYPE_Text -OUR_GUID_ENTRY(MEDIATYPE_Text, -0x73747874, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) - -// 7364696D-0000-0010-8000-00AA00389B71 'mids' == MEDIATYPE_Midi -OUR_GUID_ENTRY(MEDIATYPE_Midi, -0x7364696D, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) - -// e436eb83-524f-11ce-9f53-0020af0ba770 MEDIATYPE_Stream -OUR_GUID_ENTRY(MEDIATYPE_Stream, -0xe436eb83, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70) - -// 73(s)76(v)61(a)69(i)-0000-0010-8000-00AA00389B71 'iavs' == MEDIATYPE_Interleaved -OUR_GUID_ENTRY(MEDIATYPE_Interleaved, -0x73766169, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) - -// 656c6966-0000-0010-8000-00AA00389B71 'file' == MEDIATYPE_File -OUR_GUID_ENTRY(MEDIATYPE_File, -0x656c6966, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) - -// 73636d64-0000-0010-8000-00AA00389B71 'scmd' == MEDIATYPE_ScriptCommand -OUR_GUID_ENTRY(MEDIATYPE_ScriptCommand, -0x73636d64, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) - -// 670AEA80-3A82-11d0-B79B-00AA003767A7 MEDIATYPE_AUXLine21Data -OUR_GUID_ENTRY(MEDIATYPE_AUXLine21Data, -0x670aea80, 0x3a82, 0x11d0, 0xb7, 0x9b, 0x0, 0xaa, 0x0, 0x37, 0x67, 0xa7) - -// F72A76E1-EB0A-11D0-ACE4-0000C0CC16BA MEDIATYPE_VBI -OUR_GUID_ENTRY(MEDIATYPE_VBI, -0xf72a76e1, 0xeb0a, 0x11d0, 0xac, 0xe4, 0x00, 0x00, 0xc0, 0xcc, 0x16, 0xba) - -// 0482DEE3-7817-11cf-8a03-00aa006ecb65 MEDIATYPE_Timecode -OUR_GUID_ENTRY(MEDIATYPE_Timecode, -0x482dee3, 0x7817, 0x11cf, 0x8a, 0x3, 0x0, 0xaa, 0x0, 0x6e, 0xcb, 0x65) - -// 74726c6d-0000-0010-8000-00AA00389B71 'lmrt' == MEDIATYPE_LMRT -OUR_GUID_ENTRY(MEDIATYPE_LMRT, -0x74726c6d, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) - -// 74726c6d-0000-0010-8000-00AA00389B71 'urls' == MEDIATYPE_URL_STREAM -OUR_GUID_ENTRY(MEDIATYPE_URL_STREAM, -0x736c7275, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) - -// -- sub types --- - -// 4C504C43-0000-0010-8000-00AA00389B71 'CLPL' == MEDIASUBTYPE_CLPL -OUR_GUID_ENTRY(MEDIASUBTYPE_CLPL, -0x4C504C43, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) - -// 56595559-0000-0010-8000-00AA00389B71 'YUYV' == MEDIASUBTYPE_YUYV -OUR_GUID_ENTRY(MEDIASUBTYPE_YUYV, -0x56595559, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) - -// 56555949-0000-0010-8000-00AA00389B71 'IYUV' == MEDIASUBTYPE_IYUV -OUR_GUID_ENTRY(MEDIASUBTYPE_IYUV, -0x56555949, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) - -// 39555659-0000-0010-8000-00AA00389B71 'YVU9' == MEDIASUBTYPE_YVU9 -OUR_GUID_ENTRY(MEDIASUBTYPE_YVU9, -0x39555659, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) - -// 31313459-0000-0010-8000-00AA00389B71 'Y411' == MEDIASUBTYPE_Y411 -OUR_GUID_ENTRY(MEDIASUBTYPE_Y411, -0x31313459, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) - -// 50313459-0000-0010-8000-00AA00389B71 'Y41P' == MEDIASUBTYPE_Y41P -OUR_GUID_ENTRY(MEDIASUBTYPE_Y41P, -0x50313459, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) - -// 32595559-0000-0010-8000-00AA00389B71 'YUY2' == MEDIASUBTYPE_YUY2 -OUR_GUID_ENTRY(MEDIASUBTYPE_YUY2, -0x32595559, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) - -// 55595659-0000-0010-8000-00AA00389B71 'YVYU' == MEDIASUBTYPE_YVYU -OUR_GUID_ENTRY(MEDIASUBTYPE_YVYU, -0x55595659, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) - -// 59565955-0000-0010-8000-00AA00389B71 'UYVY' == MEDIASUBTYPE_UYVY -OUR_GUID_ENTRY(MEDIASUBTYPE_UYVY, -0x59565955, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) - -// 31313259-0000-0010-8000-00AA00389B71 'Y211' == MEDIASUBTYPE_Y211 -OUR_GUID_ENTRY(MEDIASUBTYPE_Y211, -0x31313259, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) - -// 524a4c43-0000-0010-8000-00AA00389B71 'CLJR' == MEDIASUBTYPE_CLJR -OUR_GUID_ENTRY(MEDIASUBTYPE_CLJR, -0x524a4c43, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) - -// 39304649-0000-0010-8000-00AA00389B71 'IF09' == MEDIASUBTYPE_IF09 -OUR_GUID_ENTRY(MEDIASUBTYPE_IF09, -0x39304649, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) - -// 414c5043-0000-0010-8000-00AA00389B71 'CPLA' == MEDIASUBTYPE_CPLA -OUR_GUID_ENTRY(MEDIASUBTYPE_CPLA, -0x414c5043, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) - -// 47504A4D-0000-0010-8000-00AA00389B71 MEDIASUBTYPE_MJPG -OUR_GUID_ENTRY(MEDIASUBTYPE_MJPG, -0x47504A4D, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) - -// 4A4D5654-0000-0010-8000-00AA00389B71 MEDIASUBTYPE_TVMJ -OUR_GUID_ENTRY(MEDIASUBTYPE_TVMJ, -0x4A4D5654, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) - -// 454B4157-0000-0010-8000-00AA00389B71 MEDIASUBTYPE_WAKE -OUR_GUID_ENTRY(MEDIASUBTYPE_WAKE, -0x454B4157, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) - -// 43434643-0000-0010-8000-00AA00389B71 MEDIASUBTYPE_CFCC -OUR_GUID_ENTRY(MEDIASUBTYPE_CFCC, -0x43434643, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) - -// 47504A49-0000-0010-8000-00AA00389B71 MEDIASUBTYPE_IJPG -OUR_GUID_ENTRY(MEDIASUBTYPE_IJPG, -0x47504A49, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) - -// 6D756C50-0000-0010-8000-00AA00389B71 MEDIASUBTYPE_Plum -OUR_GUID_ENTRY(MEDIASUBTYPE_Plum, -0x6D756C50, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) - -// FAST DV-Master -// 53435644-0000-0010-8000-00AA00389B71 MEDIASUBTYPE_DVCS -OUR_GUID_ENTRY(MEDIASUBTYPE_DVCS, -0x53435644, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) - -// FAST DV-Master -// 44535644-0000-0010-8000-00AA00389B71 MEDIASUBTYPE_DVSD -OUR_GUID_ENTRY(MEDIASUBTYPE_DVSD, -0x44535644, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) - -// MIROVideo DV -// 4656444D-0000-0010-8000-00AA00389B71 MEDIASUBTYPE_MDVF -OUR_GUID_ENTRY(MEDIASUBTYPE_MDVF, -0x4656444D, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) - -// e436eb78-524f-11ce-9f53-0020af0ba770 MEDIASUBTYPE_RGB1 -// e436eb78-524f-11ce-9f53-0020af0ba770 MEDIASUBTYPE_RGB1 -OUR_GUID_ENTRY(MEDIASUBTYPE_RGB1, -0xe436eb78, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70) - -// e436eb79-524f-11ce-9f53-0020af0ba770 MEDIASUBTYPE_RGB4 -OUR_GUID_ENTRY(MEDIASUBTYPE_RGB4, -0xe436eb79, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70) - -// e436eb7a-524f-11ce-9f53-0020af0ba770 MEDIASUBTYPE_RGB8 -OUR_GUID_ENTRY(MEDIASUBTYPE_RGB8, -0xe436eb7a, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70) - -// e436eb7b-524f-11ce-9f53-0020af0ba770 MEDIASUBTYPE_RGB565 -OUR_GUID_ENTRY(MEDIASUBTYPE_RGB565, -0xe436eb7b, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70) - -// e436eb7c-524f-11ce-9f53-0020af0ba770 MEDIASUBTYPE_RGB555 -OUR_GUID_ENTRY(MEDIASUBTYPE_RGB555, -0xe436eb7c, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70) - -// e436eb7d-524f-11ce-9f53-0020af0ba770 MEDIASUBTYPE_RGB24 -OUR_GUID_ENTRY(MEDIASUBTYPE_RGB24, -0xe436eb7d, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70) - -// e436eb7e-524f-11ce-9f53-0020af0ba770 MEDIASUBTYPE_RGB32 -OUR_GUID_ENTRY(MEDIASUBTYPE_RGB32, -0xe436eb7e, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70) - - -// -// RGB surfaces that contain per pixel alpha values. -// - -// 297C55AF-E209-4cb3-B757-C76D6B9C88A8 MEDIASUBTYPE_ARGB1555 -OUR_GUID_ENTRY(MEDIASUBTYPE_ARGB1555, -0x297c55af, 0xe209, 0x4cb3, 0xb7, 0x57, 0xc7, 0x6d, 0x6b, 0x9c, 0x88, 0xa8) - -// 6E6415E6-5C24-425f-93CD-80102B3D1CCA MEDIASUBTYPE_ARGB4444 -OUR_GUID_ENTRY(MEDIASUBTYPE_ARGB4444, -0x6e6415e6, 0x5c24, 0x425f, 0x93, 0xcd, 0x80, 0x10, 0x2b, 0x3d, 0x1c, 0xca) - -// 773c9ac0-3274-11d0-B724-00aa006c1A01 MEDIASUBTYPE_ARGB32 -OUR_GUID_ENTRY(MEDIASUBTYPE_ARGB32, -0x773c9ac0, 0x3274, 0x11d0, 0xb7, 0x24, 0x0, 0xaa, 0x0, 0x6c, 0x1a, 0x1 ) - - -// 2f8bb76d-b644-4550-acf3-d30caa65d5c5 MEDIASUBTYPE_A2R10G10B10 -OUR_GUID_ENTRY(MEDIASUBTYPE_A2R10G10B10, -0x2f8bb76d, 0xb644, 0x4550, 0xac, 0xf3, 0xd3, 0x0c, 0xaa, 0x65, 0xd5, 0xc5) - -// 576f7893-bdf6-48c4-875f-ae7b81834567 MEDIASUBTYPE_A2B10G10R10 -OUR_GUID_ENTRY(MEDIASUBTYPE_A2B10G10R10, -0x576f7893, 0xbdf6, 0x48c4, 0x87, 0x5f, 0xae, 0x7b, 0x81, 0x83, 0x45, 0x67) - - -// 56555941-0000-0010-8000-00AA00389B71 'AYUV' == MEDIASUBTYPE_AYUV -// -// See the DX-VA header and documentation for a description of this format. -// -OUR_GUID_ENTRY(MEDIASUBTYPE_AYUV, -0x56555941, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) - -// 34344941-0000-0010-8000-00AA00389B71 'AI44' == MEDIASUBTYPE_AI44 -// -// See the DX-VA header and documentation for a description of this format. -// -OUR_GUID_ENTRY(MEDIASUBTYPE_AI44, -0x34344941, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) - -// 34344149-0000-0010-8000-00AA00389B71 'IA44' == MEDIASUBTYPE_IA44 -// -// See the DX-VA header and documentation for a description of this format. -// -OUR_GUID_ENTRY(MEDIASUBTYPE_IA44, -0x34344149, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) - - -// -// DirectX7 D3D Render Target media subtypes. -// - -// 32335237-0000-0010-8000-00AA00389B71 '7R32' == MEDIASUBTYPE_RGB32_D3D_DX7_RT -OUR_GUID_ENTRY(MEDIASUBTYPE_RGB32_D3D_DX7_RT, -0x32335237, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) - -// 36315237-0000-0010-8000-00AA00389B71 '7R16' == MEDIASUBTYPE_RGB16_D3D_DX7_RT -OUR_GUID_ENTRY(MEDIASUBTYPE_RGB16_D3D_DX7_RT, -0x36315237, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) - -// 38384137-0000-0010-8000-00AA00389B71 '7A88' == MEDIASUBTYPE_ARGB32_D3D_DX7_RT -OUR_GUID_ENTRY(MEDIASUBTYPE_ARGB32_D3D_DX7_RT, -0x38384137, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) - -// 34344137-0000-0010-8000-00AA00389B71 '7A44' == MEDIASUBTYPE_ARGB4444_D3D_DX7_RT -OUR_GUID_ENTRY(MEDIASUBTYPE_ARGB4444_D3D_DX7_RT, -0x34344137, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) - -// 35314137-0000-0010-8000-00AA00389B71 '7A15' == MEDIASUBTYPE_ARGB1555_D3D_DX7_RT -OUR_GUID_ENTRY(MEDIASUBTYPE_ARGB1555_D3D_DX7_RT, -0x35314137, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) - - -// -// DirectX9 D3D Render Target media subtypes. -// - -// 32335239-0000-0010-8000-00AA00389B71 '9R32' == MEDIASUBTYPE_RGB32_D3D_DX9_RT -OUR_GUID_ENTRY(MEDIASUBTYPE_RGB32_D3D_DX9_RT, -0x32335239, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) - -// 36315239-0000-0010-8000-00AA00389B71 '9R16' == MEDIASUBTYPE_RGB16_D3D_DX9_RT -OUR_GUID_ENTRY(MEDIASUBTYPE_RGB16_D3D_DX9_RT, -0x36315239, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) - -// 38384139-0000-0010-8000-00AA00389B71 '9A88' == MEDIASUBTYPE_ARGB32_D3D_DX9_RT -OUR_GUID_ENTRY(MEDIASUBTYPE_ARGB32_D3D_DX9_RT, -0x38384139, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) - -// 34344139-0000-0010-8000-00AA00389B71 '9A44' == MEDIASUBTYPE_ARGB4444_D3D_DX9_RT -OUR_GUID_ENTRY(MEDIASUBTYPE_ARGB4444_D3D_DX9_RT, -0x34344139, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) - -// 35314139-0000-0010-8000-00AA00389B71 '9A15' == MEDIASUBTYPE_ARGB1555_D3D_DX9_RT -OUR_GUID_ENTRY(MEDIASUBTYPE_ARGB1555_D3D_DX9_RT, -0x35314139, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) - - -#define MEDIASUBTYPE_HASALPHA(mt) ( ((mt).subtype == MEDIASUBTYPE_ARGB4444) || \ - ((mt).subtype == MEDIASUBTYPE_ARGB32) || \ - ((mt).subtype == MEDIASUBTYPE_AYUV) || \ - ((mt).subtype == MEDIASUBTYPE_AI44) || \ - ((mt).subtype == MEDIASUBTYPE_IA44) || \ - ((mt).subtype == MEDIASUBTYPE_ARGB1555) || \ - ((mt).subtype == MEDIASUBTYPE_ARGB32_D3D_DX7_RT) || \ - ((mt).subtype == MEDIASUBTYPE_ARGB4444_D3D_DX7_RT) || \ - ((mt).subtype == MEDIASUBTYPE_ARGB1555_D3D_DX7_RT) || \ - ((mt).subtype == MEDIASUBTYPE_ARGB32_D3D_DX9_RT) || \ - ((mt).subtype == MEDIASUBTYPE_ARGB4444_D3D_DX9_RT) || \ - ((mt).subtype == MEDIASUBTYPE_ARGB1555_D3D_DX9_RT) ) - -#define MEDIASUBTYPE_HASALPHA7(mt) (((mt).subtype == MEDIASUBTYPE_ARGB32_D3D_DX7_RT) || \ - ((mt).subtype == MEDIASUBTYPE_ARGB4444_D3D_DX7_RT) || \ - ((mt).subtype == MEDIASUBTYPE_ARGB1555_D3D_DX7_RT) ) - -#define MEDIASUBTYPE_D3D_DX7_RT(mt) (((mt).subtype == MEDIASUBTYPE_ARGB32_D3D_DX7_RT) || \ - ((mt).subtype == MEDIASUBTYPE_ARGB4444_D3D_DX7_RT) || \ - ((mt).subtype == MEDIASUBTYPE_ARGB1555_D3D_DX7_RT) || \ - ((mt).subtype == MEDIASUBTYPE_RGB32_D3D_DX7_RT) || \ - ((mt).subtype == MEDIASUBTYPE_RGB16_D3D_DX7_RT)) - -#define MEDIASUBTYPE_HASALPHA9(mt) (((mt).subtype == MEDIASUBTYPE_ARGB32_D3D_DX9_RT) || \ - ((mt).subtype == MEDIASUBTYPE_ARGB4444_D3D_DX9_RT) || \ - ((mt).subtype == MEDIASUBTYPE_ARGB1555_D3D_DX9_RT) ) - - -#define MEDIASUBTYPE_D3D_DX9_RT(mt) (((mt).subtype == MEDIASUBTYPE_ARGB32_D3D_DX9_RT) || \ - ((mt).subtype == MEDIASUBTYPE_ARGB4444_D3D_DX9_RT) || \ - ((mt).subtype == MEDIASUBTYPE_ARGB1555_D3D_DX9_RT) || \ - ((mt).subtype == MEDIASUBTYPE_RGB32_D3D_DX9_RT) || \ - ((mt).subtype == MEDIASUBTYPE_RGB16_D3D_DX9_RT)) - - -// -// DX-VA uncompressed surface formats -// - -// 32315659-0000-0010-8000-00AA00389B71 'YV12' == MEDIASUBTYPE_YV12 -OUR_GUID_ENTRY(MEDIASUBTYPE_YV12, -0x32315659, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) - -// 3231564E-0000-0010-8000-00AA00389B71 'NV12' == MEDIASUBTYPE_NV12 -OUR_GUID_ENTRY(MEDIASUBTYPE_NV12, -0x3231564E, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) - -// 31434D49-0000-0010-8000-00AA00389B71 'IMC1' == MEDIASUBTYPE_IMC1 -OUR_GUID_ENTRY(MEDIASUBTYPE_IMC1, -0x31434D49, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) - -// 32434d49-0000-0010-8000-00AA00389B71 'IMC2' == MEDIASUBTYPE_IMC2 -OUR_GUID_ENTRY(MEDIASUBTYPE_IMC2, -0x32434D49, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) - -// 33434d49-0000-0010-8000-00AA00389B71 'IMC3' == MEDIASUBTYPE_IMC3 -OUR_GUID_ENTRY(MEDIASUBTYPE_IMC3, -0x33434D49, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) - -// 34434d49-0000-0010-8000-00AA00389B71 'IMC4' == MEDIASUBTYPE_IMC4 -OUR_GUID_ENTRY(MEDIASUBTYPE_IMC4, -0x34434D49, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) - -// 30343353-0000-0010-8000-00AA00389B71 'S340' == MEDIASUBTYPE_S340 -OUR_GUID_ENTRY(MEDIASUBTYPE_S340, -0x30343353, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) - -// 32343353-0000-0010-8000-00AA00389B71 'S342' == MEDIASUBTYPE_S342 -OUR_GUID_ENTRY(MEDIASUBTYPE_S342, -0x32343353, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) - - -// e436eb7f-524f-11ce-9f53-0020af0ba770 MEDIASUBTYPE_Overlay -OUR_GUID_ENTRY(MEDIASUBTYPE_Overlay, -0xe436eb7f, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70) - -// e436eb80-524f-11ce-9f53-0020af0ba770 MEDIASUBTYPE_MPEGPacket -OUR_GUID_ENTRY(MEDIASUBTYPE_MPEG1Packet, -0xe436eb80, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70) - -// e436eb81-524f-11ce-9f53-0020af0ba770 MEDIASUBTYPE_MPEG1Payload -OUR_GUID_ENTRY(MEDIASUBTYPE_MPEG1Payload, -0xe436eb81, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70) - -// 00000050-0000-0010-8000-00AA00389B71 MEDIASUBTYPE_MPEG1AudioPayload -OUR_GUID_ENTRY(MEDIASUBTYPE_MPEG1AudioPayload, -0x00000050, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71) - -// e436eb82-524f-11ce-9f53-0020af0ba770 MEDIASUBTYPE_MPEG1SystemStream -OUR_GUID_ENTRY(MEDIATYPE_MPEG1SystemStream, -0xe436eb82, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70) - -// the next consecutive number is assigned to MEDIATYPE_Stream and appears higher up -// e436eb84-524f-11ce-9f53-0020af0ba770 MEDIASUBTYPE_MPEG1System -OUR_GUID_ENTRY(MEDIASUBTYPE_MPEG1System, -0xe436eb84, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70) - -// e436eb85-524f-11ce-9f53-0020af0ba770 MEDIASUBTYPE_MPEG1VideoCD -OUR_GUID_ENTRY(MEDIASUBTYPE_MPEG1VideoCD, -0xe436eb85, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70) - -// e436eb86-524f-11ce-9f53-0020af0ba770 MEDIASUBTYPE_MPEG1Video -OUR_GUID_ENTRY(MEDIASUBTYPE_MPEG1Video, -0xe436eb86, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70) - -// e436eb87-524f-11ce-9f53-0020af0ba770 MEDIASUBTYPE_MPEG1Audio -OUR_GUID_ENTRY(MEDIASUBTYPE_MPEG1Audio, -0xe436eb87, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70) - -// e436eb88-524f-11ce-9f53-0020af0ba770 MEDIASUBTYPE_Avi -OUR_GUID_ENTRY(MEDIASUBTYPE_Avi, -0xe436eb88, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70) - -// {3DB80F90-9412-11d1-ADED-0000F8754B99} MEDIASUBTYPE_Asf -OUR_GUID_ENTRY(MEDIASUBTYPE_Asf, -0x3db80f90, 0x9412, 0x11d1, 0xad, 0xed, 0x0, 0x0, 0xf8, 0x75, 0x4b, 0x99) - -// e436eb89-524f-11ce-9f53-0020af0ba770 MEDIASUBTYPE_QTMovie -OUR_GUID_ENTRY(MEDIASUBTYPE_QTMovie, -0xe436eb89, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70) - -// 617a7072-0000-0010-8000-00AA00389B71 MEDIASUBTYPE_Rpza -OUR_GUID_ENTRY(MEDIASUBTYPE_QTRpza, -0x617a7072, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) - -// 20636d73-0000-0010-8000-00AA00389B71 MEDIASUBTYPE_Smc -OUR_GUID_ENTRY(MEDIASUBTYPE_QTSmc, -0x20636d73, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) - -// 20656c72-0000-0010-8000-00AA00389B71 MEDIASUBTYPE_Rle -OUR_GUID_ENTRY(MEDIASUBTYPE_QTRle, -0x20656c72, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) - -// 6765706a-0000-0010-8000-00AA00389B71 MEDIASUBTYPE_Jpeg -OUR_GUID_ENTRY(MEDIASUBTYPE_QTJpeg, -0x6765706a, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) - -// e436eb8a-524f-11ce-9f53-0020af0ba770 MEDIASUBTYPE_PCMAudio_Obsolete -OUR_GUID_ENTRY(MEDIASUBTYPE_PCMAudio_Obsolete, -0xe436eb8a, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70) - -// 00000001-0000-0010-8000-00AA00389B71 MEDIASUBTYPE_PCM -OUR_GUID_ENTRY(MEDIASUBTYPE_PCM, -0x00000001, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71) - -// e436eb8b-524f-11ce-9f53-0020af0ba770 MEDIASUBTYPE_WAVE -OUR_GUID_ENTRY(MEDIASUBTYPE_WAVE, -0xe436eb8b, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70) - -// e436eb8c-524f-11ce-9f53-0020af0ba770 MEDIASUBTYPE_AU -OUR_GUID_ENTRY(MEDIASUBTYPE_AU, -0xe436eb8c, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70) - -// e436eb8d-524f-11ce-9f53-0020af0ba770 MEDIASUBTYPE_AIFF -OUR_GUID_ENTRY(MEDIASUBTYPE_AIFF, -0xe436eb8d, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70) - -// 64(d)73(s)76(v)64(d)-0000-0010-8000-00AA00389B71 'dvsd' == MEDIASUBTYPE_dvsd -OUR_GUID_ENTRY(MEDIASUBTYPE_dvsd, -0x64737664, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) - -// 64(d)68(h)76(v)64(d)-0000-0010-8000-00AA00389B71 'dvhd' == MEDIASUBTYPE_dvhd -OUR_GUID_ENTRY(MEDIASUBTYPE_dvhd, -0x64687664, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) - -// 6c(l)73(s)76(v)64(d)-0000-0010-8000-00AA00389B71 'dvsl' == MEDIASUBTYPE_dvsl -OUR_GUID_ENTRY(MEDIASUBTYPE_dvsl, -0x6c737664, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) - -// 35(5)32(2)76(v)64(d)-0000-0010-8000-00AA00389B71  'dv25' ==  MEDIASUBTYPE_dv25 -OUR_GUID_ENTRY(MEDIASUBTYPE_dv25, -0x35327664, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) - -// 30(0)35(5)76(v)64(d)-0000-0010-8000-00AA00389B71  'dv50' ==  MEDIASUBTYPE_dv50 -OUR_GUID_ENTRY(MEDIASUBTYPE_dv50, -0x30357664, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) - -// 31(1)68(h)76(v)64(d)-0000-0010-8000-00AA00389B71  'dvh1' ==  MEDIASUBTYPE_dvh1 -OUR_GUID_ENTRY(MEDIASUBTYPE_dvh1, -0x31687664, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) - -// 6E8D4A22-310C-11d0-B79A-00AA003767A7 MEDIASUBTYPE_Line21_BytePair -OUR_GUID_ENTRY(MEDIASUBTYPE_Line21_BytePair, -0x6e8d4a22, 0x310c, 0x11d0, 0xb7, 0x9a, 0x0, 0xaa, 0x0, 0x37, 0x67, 0xa7) - -// 6E8D4A23-310C-11d0-B79A-00AA003767A7 MEDIASUBTYPE_Line21_GOPPacket -OUR_GUID_ENTRY(MEDIASUBTYPE_Line21_GOPPacket, -0x6e8d4a23, 0x310c, 0x11d0, 0xb7, 0x9a, 0x0, 0xaa, 0x0, 0x37, 0x67, 0xa7) - -// 6E8D4A24-310C-11d0-B79A-00AA003767A7 MEDIASUBTYPE_Line21_VBIRawData -OUR_GUID_ENTRY(MEDIASUBTYPE_Line21_VBIRawData, -0x6e8d4a24, 0x310c, 0x11d0, 0xb7, 0x9a, 0x0, 0xaa, 0x0, 0x37, 0x67, 0xa7) - -// F72A76E3-EB0A-11D0-ACE4-0000C0CC16BA MEDIASUBTYPE_TELETEXT -OUR_GUID_ENTRY(MEDIASUBTYPE_TELETEXT, -0xf72a76e3, 0xeb0a, 0x11d0, 0xac, 0xe4, 0x00, 0x00, 0xc0, 0xcc, 0x16, 0xba) - -// 2791D576-8E7A-466F-9E90-5D3F3083738B MEDIASUBTYPE_WSS -OUR_GUID_ENTRY(MEDIASUBTYPE_WSS, -0x2791D576, 0x8E7A, 0x466F, 0x9E, 0x90, 0x5D, 0x3F, 0x30, 0x83, 0x73, 0x8B) - -// A1B3F620-9792-4d8d-81A4-86AF25772090 MEDIASUBTYPE_VPS -OUR_GUID_ENTRY(MEDIASUBTYPE_VPS, -0xa1b3f620, 0x9792, 0x4d8d, 0x81, 0xa4, 0x86, 0xaf, 0x25, 0x77, 0x20, 0x90) - -// derived from WAVE_FORMAT_DRM -// 00000009-0000-0010-8000-00aa00389b71 -OUR_GUID_ENTRY(MEDIASUBTYPE_DRM_Audio, -0x00000009, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) - -// derived from WAVE_FORMAT_IEEE_FLOAT -// 00000003-0000-0010-8000-00aa00389b71 -OUR_GUID_ENTRY(MEDIASUBTYPE_IEEE_FLOAT, -0x00000003, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) - -// derived from WAVE_FORMAT_DOLBY_AC3_SPDIF -// 00000092-0000-0010-8000-00aa00389b71 -OUR_GUID_ENTRY(MEDIASUBTYPE_DOLBY_AC3_SPDIF, -0x00000092, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) - -// derived from WAVE_FORMAT_RAW_SPORT -// 00000240-0000-0010-8000-00aa00389b71 -OUR_GUID_ENTRY(MEDIASUBTYPE_RAW_SPORT, -0x00000240, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) - -// derived from wave format tag 0x241, call it SPDIF_TAG_241h for now -// 00000241-0000-0010-8000-00aa00389b71 -OUR_GUID_ENTRY(MEDIASUBTYPE_SPDIF_TAG_241h, -0x00000241, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) - - - -// DirectShow DSS definitions - -// A0AF4F81-E163-11d0-BAD9-00609744111A -OUR_GUID_ENTRY(MEDIASUBTYPE_DssVideo, -0xa0af4f81, 0xe163, 0x11d0, 0xba, 0xd9, 0x0, 0x60, 0x97, 0x44, 0x11, 0x1a) - -// A0AF4F82-E163-11d0-BAD9-00609744111A -OUR_GUID_ENTRY(MEDIASUBTYPE_DssAudio, -0xa0af4f82, 0xe163, 0x11d0, 0xba, 0xd9, 0x0, 0x60, 0x97, 0x44, 0x11, 0x1a) - -// 5A9B6A40-1A22-11D1-BAD9-00609744111A -OUR_GUID_ENTRY(MEDIASUBTYPE_VPVideo, -0x5a9b6a40, 0x1a22, 0x11d1, 0xba, 0xd9, 0x0, 0x60, 0x97, 0x44, 0x11, 0x1a) - -// 5A9B6A41-1A22-11D1-BAD9-00609744111A -OUR_GUID_ENTRY(MEDIASUBTYPE_VPVBI, -0x5a9b6a41, 0x1a22, 0x11d1, 0xba, 0xd9, 0x0, 0x60, 0x97, 0x44, 0x11, 0x1a) - -// BF87B6E0-8C27-11d0-B3F0-00AA003761C5 Capture graph building -OUR_GUID_ENTRY(CLSID_CaptureGraphBuilder, -0xBF87B6E0, 0x8C27, 0x11d0, 0xB3, 0xF0, 0x0, 0xAA, 0x00, 0x37, 0x61, 0xC5) - -// BF87B6E1-8C27-11d0-B3F0-00AA003761C5 New Capture graph building -OUR_GUID_ENTRY(CLSID_CaptureGraphBuilder2, -0xBF87B6E1, 0x8C27, 0x11d0, 0xB3, 0xF0, 0x0, 0xAA, 0x00, 0x37, 0x61, 0xC5) - -// e436ebb0-524f-11ce-9f53-0020af0ba770 Prototype filtergraph -OUR_GUID_ENTRY(CLSID_ProtoFilterGraph, -0xe436ebb0, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70) - -// e436ebb1-524f-11ce-9f53-0020af0ba770 Reference clock -OUR_GUID_ENTRY(CLSID_SystemClock, -0xe436ebb1, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70) - -// e436ebb2-524f-11ce-9f53-0020af0ba770 Filter Mapper -OUR_GUID_ENTRY(CLSID_FilterMapper, -0xe436ebb2, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70) - -// e436ebb3-524f-11ce-9f53-0020af0ba770 Filter Graph -OUR_GUID_ENTRY(CLSID_FilterGraph, -0xe436ebb3, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70) - -// e436ebb8-524f-11ce-9f53-0020af0ba770 Filter Graph no thread -OUR_GUID_ENTRY(CLSID_FilterGraphNoThread, -0xe436ebb8, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70) - -// e4bbd160-4269-11ce-838d-00aa0055595a MPEG System stream -OUR_GUID_ENTRY(CLSID_MPEG1Doc, -0xe4bbd160, 0x4269, 0x11ce, 0x83, 0x8d, 0x0, 0xaa, 0x0, 0x55, 0x59, 0x5a) - -// 701722e0-8ae3-11ce-a85c-00aa002feab5 MPEG file reader -OUR_GUID_ENTRY(CLSID_FileSource, -0x701722e0, 0x8ae3, 0x11ce, 0xa8, 0x5c, 0x00, 0xaa, 0x00, 0x2f, 0xea, 0xb5) - -// 26C25940-4CA9-11ce-A828-00AA002FEAB5 Takes MPEG1 packets as input -OUR_GUID_ENTRY(CLSID_MPEG1PacketPlayer, -0x26c25940, 0x4ca9, 0x11ce, 0xa8, 0x28, 0x0, 0xaa, 0x0, 0x2f, 0xea, 0xb5) - -// 336475d0-942a-11ce-a870-00aa002feab5 MPEG splitter -OUR_GUID_ENTRY(CLSID_MPEG1Splitter, -0x336475d0, 0x942a, 0x11ce, 0xa8, 0x70, 0x00, 0xaa, 0x00, 0x2f, 0xea, 0xb5) - -// feb50740-7bef-11ce-9bd9-0000e202599c MPEG video decoder -OUR_GUID_ENTRY(CLSID_CMpegVideoCodec, -0xfeb50740, 0x7bef, 0x11ce, 0x9b, 0xd9, 0x0, 0x0, 0xe2, 0x2, 0x59, 0x9c) - -// 4a2286e0-7bef-11ce-9bd9-0000e202599c MPEG audio decoder -OUR_GUID_ENTRY(CLSID_CMpegAudioCodec, -0x4a2286e0, 0x7bef, 0x11ce, 0x9b, 0xd9, 0x0, 0x0, 0xe2, 0x2, 0x59, 0x9c) - -// e30629d3-27e5-11ce-875d-00608cb78066 Text renderer -OUR_GUID_ENTRY(CLSID_TextRender, -0xe30629d3, 0x27e5, 0x11ce, 0x87, 0x5d, 0x0, 0x60, 0x8c, 0xb7, 0x80, 0x66) - - - -// {F8388A40-D5BB-11d0-BE5A-0080C706568E} -OUR_GUID_ENTRY(CLSID_InfTee, -0xf8388a40, 0xd5bb, 0x11d0, 0xbe, 0x5a, 0x0, 0x80, 0xc7, 0x6, 0x56, 0x8e) - -// 1b544c20-fd0b-11ce-8c63-00aa0044b51e Avi Stream Splitter -OUR_GUID_ENTRY(CLSID_AviSplitter, -0x1b544c20, 0xfd0b, 0x11ce, 0x8c, 0x63, 0x0, 0xaa, 0x00, 0x44, 0xb5, 0x1e) - -// 1b544c21-fd0b-11ce-8c63-00aa0044b51e Avi File Reader -OUR_GUID_ENTRY(CLSID_AviReader, -0x1b544c21, 0xfd0b, 0x11ce, 0x8c, 0x63, 0x0, 0xaa, 0x00, 0x44, 0xb5, 0x1e) - -// 1b544c22-fd0b-11ce-8c63-00aa0044b51e Vfw 2.0 Capture Driver -OUR_GUID_ENTRY(CLSID_VfwCapture, -0x1b544c22, 0xfd0b, 0x11ce, 0x8c, 0x63, 0x0, 0xaa, 0x00, 0x44, 0xb5, 0x1e) - -OUR_GUID_ENTRY(CLSID_CaptureProperties, -0x1B544c22, 0xFD0B, 0x11ce, 0x8C, 0x63, 0x00, 0xAA, 0x00, 0x44, 0xB5, 0x1F) - -//e436ebb4-524f-11ce-9f53-0020af0ba770 Control Distributor -OUR_GUID_ENTRY(CLSID_FGControl, -0xe436ebb4, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70) - -// 44584800-F8EE-11ce-B2D4-00DD01101B85 .MOV reader (old) -OUR_GUID_ENTRY(CLSID_MOVReader, -0x44584800, 0xf8ee, 0x11ce, 0xb2, 0xd4, 0x00, 0xdd, 0x1, 0x10, 0x1b, 0x85) - -// D51BD5A0-7548-11cf-A520-0080C77EF58A QT Splitter -OUR_GUID_ENTRY(CLSID_QuickTimeParser, -0xd51bd5a0, 0x7548, 0x11cf, 0xa5, 0x20, 0x0, 0x80, 0xc7, 0x7e, 0xf5, 0x8a) - -// FDFE9681-74A3-11d0-AFA7-00AA00B67A42 QT Decoder -OUR_GUID_ENTRY(CLSID_QTDec, -0xfdfe9681, 0x74a3, 0x11d0, 0xaf, 0xa7, 0x0, 0xaa, 0x0, 0xb6, 0x7a, 0x42) - -// D3588AB0-0781-11ce-B03A-0020AF0BA770 AVIFile-based reader -OUR_GUID_ENTRY(CLSID_AVIDoc, -0xd3588ab0, 0x0781, 0x11ce, 0xb0, 0x3a, 0x00, 0x20, 0xaf, 0xb, 0xa7, 0x70) - -// 70e102b0-5556-11ce-97c0-00aa0055595a Video renderer -OUR_GUID_ENTRY(CLSID_VideoRenderer, -0x70e102b0, 0x5556, 0x11ce, 0x97, 0xc0, 0x00, 0xaa, 0x00, 0x55, 0x59, 0x5a) - -// 1643e180-90f5-11ce-97d5-00aa0055595a Colour space convertor -OUR_GUID_ENTRY(CLSID_Colour, -0x1643e180, 0x90f5, 0x11ce, 0x97, 0xd5, 0x00, 0xaa, 0x00, 0x55, 0x59, 0x5a) - -// 1da08500-9edc-11cf-bc10-00aa00ac74f6 VGA 16 color ditherer -OUR_GUID_ENTRY(CLSID_Dither, -0x1da08500, 0x9edc, 0x11cf, 0xbc, 0x10, 0x00, 0xaa, 0x00, 0xac, 0x74, 0xf6) - -// 07167665-5011-11cf-BF33-00AA0055595A Modex video renderer -OUR_GUID_ENTRY(CLSID_ModexRenderer, -0x7167665, 0x5011, 0x11cf, 0xbf, 0x33, 0x0, 0xaa, 0x0, 0x55, 0x59, 0x5a) - -// e30629d1-27e5-11ce-875d-00608cb78066 Waveout audio renderer -OUR_GUID_ENTRY(CLSID_AudioRender, -0xe30629d1, 0x27e5, 0x11ce, 0x87, 0x5d, 0x0, 0x60, 0x8c, 0xb7, 0x80, 0x66) - -// 05589faf-c356-11ce-bf01-00aa0055595a Audio Renderer Property Page -OUR_GUID_ENTRY(CLSID_AudioProperties, -0x05589faf, 0xc356, 0x11ce, 0xbf, 0x01, 0x0, 0xaa, 0x0, 0x55, 0x59, 0x5a) - -// 79376820-07D0-11cf-A24D-0020AFD79767 DSound audio renderer -OUR_GUID_ENTRY(CLSID_DSoundRender, -0x79376820, 0x07D0, 0x11CF, 0xA2, 0x4D, 0x0, 0x20, 0xAF, 0xD7, 0x97, 0x67) - -// e30629d2-27e5-11ce-875d-00608cb78066 Wavein audio recorder -OUR_GUID_ENTRY(CLSID_AudioRecord, -0xe30629d2, 0x27e5, 0x11ce, 0x87, 0x5d, 0x0, 0x60, 0x8c, 0xb7, 0x80, 0x66) - -// {2CA8CA52-3C3F-11d2-B73D-00C04FB6BD3D} IAMAudioInputMixer property page -OUR_GUID_ENTRY(CLSID_AudioInputMixerProperties, -0x2ca8ca52, 0x3c3f, 0x11d2, 0xb7, 0x3d, 0x0, 0xc0, 0x4f, 0xb6, 0xbd, 0x3d) - -// {CF49D4E0-1115-11ce-B03A-0020AF0BA770} AVI Decoder -OUR_GUID_ENTRY(CLSID_AVIDec, -0xcf49d4e0, 0x1115, 0x11ce, 0xb0, 0x3a, 0x0, 0x20, 0xaf, 0xb, 0xa7, 0x70) - -// {A888DF60-1E90-11cf-AC98-00AA004C0FA9} AVI ICDraw* wrapper -OUR_GUID_ENTRY(CLSID_AVIDraw, -0xa888df60, 0x1e90, 0x11cf, 0xac, 0x98, 0x0, 0xaa, 0x0, 0x4c, 0xf, 0xa9) - -// 6a08cf80-0e18-11cf-a24d-0020afd79767 ACM Wrapper -OUR_GUID_ENTRY(CLSID_ACMWrapper, -0x6a08cf80, 0x0e18, 0x11cf, 0xa2, 0x4d, 0x0, 0x20, 0xaf, 0xd7, 0x97, 0x67) - -// {e436ebb5-524f-11ce-9f53-0020af0ba770} Async File Reader -OUR_GUID_ENTRY(CLSID_AsyncReader, -0xe436ebb5, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70) - -// {e436ebb6-524f-11ce-9f53-0020af0ba770} Async URL Reader -OUR_GUID_ENTRY(CLSID_URLReader, -0xe436ebb6, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70) - -// {e436ebb7-524f-11ce-9f53-0020af0ba770} IPersistMoniker PID -OUR_GUID_ENTRY(CLSID_PersistMonikerPID, -0xe436ebb7, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70) - -// {D76E2820-1563-11cf-AC98-00AA004C0FA9} -OUR_GUID_ENTRY(CLSID_AVICo, -0xd76e2820, 0x1563, 0x11cf, 0xac, 0x98, 0x0, 0xaa, 0x0, 0x4c, 0xf, 0xa9) - -// {8596E5F0-0DA5-11d0-BD21-00A0C911CE86} -OUR_GUID_ENTRY(CLSID_FileWriter, -0x8596e5f0, 0xda5, 0x11d0, 0xbd, 0x21, 0x0, 0xa0, 0xc9, 0x11, 0xce, 0x86) - -// {E2510970-F137-11CE-8B67-00AA00A3F1A6} AVI mux filter -OUR_GUID_ENTRY(CLSID_AviDest, -0xe2510970, 0xf137, 0x11ce, 0x8b, 0x67, 0x0, 0xaa, 0x0, 0xa3, 0xf1, 0xa6) - -// {C647B5C0-157C-11d0-BD23-00A0C911CE86} -OUR_GUID_ENTRY(CLSID_AviMuxProptyPage, -0xc647b5c0, 0x157c, 0x11d0, 0xbd, 0x23, 0x0, 0xa0, 0xc9, 0x11, 0xce, 0x86) - -// {0A9AE910-85C0-11d0-BD42-00A0C911CE86} -OUR_GUID_ENTRY(CLSID_AviMuxProptyPage1, -0xa9ae910, 0x85c0, 0x11d0, 0xbd, 0x42, 0x0, 0xa0, 0xc9, 0x11, 0xce, 0x86) - -// {07b65360-c445-11ce-afde-00aa006c14f4} -OUR_GUID_ENTRY(CLSID_AVIMIDIRender, -0x07b65360, 0xc445, 0x11ce, 0xaf, 0xde, 0x00, 0xaa, 0x00, 0x6c, 0x14, 0xf4) - -// {187463A0-5BB7-11d3-ACBE-0080C75E246E} WMSDK-based ASF reader -OUR_GUID_ENTRY(CLSID_WMAsfReader, -0x187463a0, 0x5bb7, 0x11d3, 0xac, 0xbe, 0x0, 0x80, 0xc7, 0x5e, 0x24, 0x6e) - -// {7c23220e-55bb-11d3-8b16-00c04fb6bd3d} WMSDK-based ASF writer -OUR_GUID_ENTRY(CLSID_WMAsfWriter, -0x7c23220e, 0x55bb, 0x11d3, 0x8b, 0x16, 0x0, 0xc0, 0x4f, 0xb6, 0xbd, 0x3d) - -// {afb6c280-2c41-11d3-8a60-0000f81e0e4a} -OUR_GUID_ENTRY(CLSID_MPEG2Demultiplexer, -0xafb6c280, 0x2c41, 0x11d3, 0x8a, 0x60, 0x00, 0x00, 0xf8, 0x1e, 0x0e, 0x4a) - -// {3ae86b20-7be8-11d1-abe6-00a0c905f375} -OUR_GUID_ENTRY(CLSID_MMSPLITTER, -0x3ae86b20, 0x7be8, 0x11d1, 0xab, 0xe6, 0x00, 0xa0, 0xc9, 0x05, 0xf3, 0x75) - -// {2DB47AE5-CF39-43c2-B4D6-0CD8D90946F4} -OUR_GUID_ENTRY(CLSID_StreamBufferSink, -0x2db47ae5, 0xcf39, 0x43c2, 0xb4, 0xd6, 0xc, 0xd8, 0xd9, 0x9, 0x46, 0xf4) - -// {C9F5FE02-F851-4eb5-99EE-AD602AF1E619} -OUR_GUID_ENTRY(CLSID_StreamBufferSource, -0xc9f5fe02, 0xf851, 0x4eb5, 0x99, 0xee, 0xad, 0x60, 0x2a, 0xf1, 0xe6, 0x19) - -// {FA8A68B2-C864-4ba2-AD53-D3876A87494B} -OUR_GUID_ENTRY(CLSID_StreamBufferConfig, -0xfa8a68b2, 0xc864, 0x4ba2, 0xad, 0x53, 0xd3, 0x87, 0x6a, 0x87, 0x49, 0x4b) - -// {6CFAD761-735D-4aa5-8AFC-AF91A7D61EBA} -OUR_GUID_ENTRY(CLSID_Mpeg2VideoStreamAnalyzer, -0x6cfad761, 0x735d, 0x4aa5, 0x8a, 0xfc, 0xaf, 0x91, 0xa7, 0xd6, 0x1e, 0xba) - -// {CCAA63AC-1057-4778-AE92-1206AB9ACEE6} -OUR_GUID_ENTRY(CLSID_StreamBufferRecordingAttributes, -0xccaa63ac, 0x1057, 0x4778, 0xae, 0x92, 0x12, 0x6, 0xab, 0x9a, 0xce, 0xe6) - -// {D682C4BA-A90A-42fe-B9E1-03109849C423} -OUR_GUID_ENTRY(CLSID_StreamBufferComposeRecording, -0xd682c4ba, 0xa90a, 0x42fe, 0xb9, 0xe1, 0x3, 0x10, 0x98, 0x49, 0xc4, 0x23) - -// {B1B77C00-C3E4-11cf-AF79-00AA00B67A42} DV video decoder -OUR_GUID_ENTRY(CLSID_DVVideoCodec, -0xb1b77c00, 0xc3e4, 0x11cf, 0xaf, 0x79, 0x0, 0xaa, 0x0, 0xb6, 0x7a, 0x42) - -// {13AA3650-BB6F-11d0-AFB9-00AA00B67A42} DV video encoder -OUR_GUID_ENTRY(CLSID_DVVideoEnc, -0x13aa3650, 0xbb6f, 0x11d0, 0xaf, 0xb9, 0x0, 0xaa, 0x0, 0xb6, 0x7a, 0x42) - -// {4EB31670-9FC6-11cf-AF6E-00AA00B67A42} DV splitter -OUR_GUID_ENTRY(CLSID_DVSplitter, -0x4eb31670, 0x9fc6, 0x11cf, 0xaf, 0x6e, 0x0, 0xaa, 0x0, 0xb6, 0x7a, 0x42) - -// {129D7E40-C10D-11d0-AFB9-00AA00B67A42} DV muxer -OUR_GUID_ENTRY(CLSID_DVMux, -0x129d7e40, 0xc10d, 0x11d0, 0xaf, 0xb9, 0x0, 0xaa, 0x0, 0xb6, 0x7a, 0x42) - -// {060AF76C-68DD-11d0-8FC1-00C04FD9189D} -OUR_GUID_ENTRY(CLSID_SeekingPassThru, -0x60af76c, 0x68dd, 0x11d0, 0x8f, 0xc1, 0x0, 0xc0, 0x4f, 0xd9, 0x18, 0x9d) - -// 6E8D4A20-310C-11d0-B79A-00AA003767A7 Line21 (CC) Decoder -OUR_GUID_ENTRY(CLSID_Line21Decoder, -0x6e8d4a20, 0x310c, 0x11d0, 0xb7, 0x9a, 0x0, 0xaa, 0x0, 0x37, 0x67, 0xa7) - -// E4206432-01A1-4BEE-B3E1-3702C8EDC574 Line21 (CC) Decoder v2 -OUR_GUID_ENTRY(CLSID_Line21Decoder2, -0xe4206432, 0x01a1, 0x4bee, 0xb3, 0xe1, 0x37, 0x02, 0xc8, 0xed, 0xc5, 0x74) - -// {CD8743A1-3736-11d0-9E69-00C04FD7C15B} -OUR_GUID_ENTRY(CLSID_OverlayMixer, -0xcd8743a1, 0x3736, 0x11d0, 0x9e, 0x69, 0x0, 0xc0, 0x4f, 0xd7, 0xc1, 0x5b) - -// {814B9800-1C88-11d1-BAD9-00609744111A} -OUR_GUID_ENTRY(CLSID_VBISurfaces, -0x814b9800, 0x1c88, 0x11d1, 0xba, 0xd9, 0x0, 0x60, 0x97, 0x44, 0x11, 0x1a) - -// {70BC06E0-5666-11d3-A184-00105AEF9F33} WST Teletext Decoder -OUR_GUID_ENTRY(CLSID_WSTDecoder, -0x70bc06e0, 0x5666, 0x11d3, 0xa1, 0x84, 0x0, 0x10, 0x5a, 0xef, 0x9f, 0x33) - -// {301056D0-6DFF-11d2-9EEB-006008039E37} -OUR_GUID_ENTRY(CLSID_MjpegDec, -0x301056d0, 0x6dff, 0x11d2, 0x9e, 0xeb, 0x0, 0x60, 0x8, 0x3, 0x9e, 0x37) - -// {B80AB0A0-7416-11d2-9EEB-006008039E37} -OUR_GUID_ENTRY(CLSID_MJPGEnc, -0xb80ab0a0, 0x7416, 0x11d2, 0x9e, 0xeb, 0x0, 0x60, 0x8, 0x3, 0x9e, 0x37) - - - -// pnp objects and categories -// 62BE5D10-60EB-11d0-BD3B-00A0C911CE86 ICreateDevEnum -OUR_GUID_ENTRY(CLSID_SystemDeviceEnum, -0x62BE5D10,0x60EB,0x11d0,0xBD,0x3B,0x00,0xA0,0xC9,0x11,0xCE,0x86) - -// 4315D437-5B8C-11d0-BD3B-00A0C911CE86 -OUR_GUID_ENTRY(CLSID_CDeviceMoniker, -0x4315D437,0x5B8C,0x11d0,0xBD,0x3B,0x00,0xA0,0xC9,0x11,0xCE,0x86) - -// 860BB310-5D01-11d0-BD3B-00A0C911CE86 Video capture category -OUR_GUID_ENTRY(CLSID_VideoInputDeviceCategory, -0x860BB310,0x5D01,0x11d0,0xBD,0x3B,0x00,0xA0,0xC9,0x11,0xCE,0x86) -OUR_GUID_ENTRY(CLSID_CVidCapClassManager, -0x860BB310,0x5D01,0x11d0,0xBD,0x3B,0x00,0xA0,0xC9,0x11,0xCE,0x86) - -// 083863F1-70DE-11d0-BD40-00A0C911CE86 Filter category -OUR_GUID_ENTRY(CLSID_LegacyAmFilterCategory, -0x083863F1,0x70DE,0x11d0,0xBD,0x40,0x00,0xA0,0xC9,0x11,0xCE,0x86) -OUR_GUID_ENTRY(CLSID_CQzFilterClassManager, -0x083863F1,0x70DE,0x11d0,0xBD,0x40,0x00,0xA0,0xC9,0x11,0xCE,0x86) - -// 33D9A760-90C8-11d0-BD43-00A0C911CE86 -OUR_GUID_ENTRY(CLSID_VideoCompressorCategory, -0x33d9a760, 0x90c8, 0x11d0, 0xbd, 0x43, 0x0, 0xa0, 0xc9, 0x11, 0xce, 0x86) -OUR_GUID_ENTRY(CLSID_CIcmCoClassManager, -0x33d9a760, 0x90c8, 0x11d0, 0xbd, 0x43, 0x0, 0xa0, 0xc9, 0x11, 0xce, 0x86) - -// 33D9A761-90C8-11d0-BD43-00A0C911CE86 -OUR_GUID_ENTRY(CLSID_AudioCompressorCategory, -0x33d9a761, 0x90c8, 0x11d0, 0xbd, 0x43, 0x0, 0xa0, 0xc9, 0x11, 0xce, 0x86) -OUR_GUID_ENTRY(CLSID_CAcmCoClassManager, -0x33d9a761, 0x90c8, 0x11d0, 0xbd, 0x43, 0x0, 0xa0, 0xc9, 0x11, 0xce, 0x86) - -// 33D9A762-90C8-11d0-BD43-00A0C911CE86 Audio source cateogry -OUR_GUID_ENTRY(CLSID_AudioInputDeviceCategory, -0x33d9a762, 0x90c8, 0x11d0, 0xbd, 0x43, 0x0, 0xa0, 0xc9, 0x11, 0xce, 0x86) -OUR_GUID_ENTRY(CLSID_CWaveinClassManager, -0x33d9a762, 0x90c8, 0x11d0, 0xbd, 0x43, 0x0, 0xa0, 0xc9, 0x11, 0xce, 0x86) - -// E0F158E1-CB04-11d0-BD4E-00A0C911CE86 Audio renderer category -OUR_GUID_ENTRY(CLSID_AudioRendererCategory, -0xe0f158e1, 0xcb04, 0x11d0, 0xbd, 0x4e, 0x0, 0xa0, 0xc9, 0x11, 0xce, 0x86) -OUR_GUID_ENTRY(CLSID_CWaveOutClassManager, -0xe0f158e1, 0xcb04, 0x11d0, 0xbd, 0x4e, 0x0, 0xa0, 0xc9, 0x11, 0xce, 0x86) - -// 4EFE2452-168A-11d1-BC76-00C04FB9453B Midi renderer category -OUR_GUID_ENTRY(CLSID_MidiRendererCategory, -0x4EfE2452, 0x168A, 0x11d1, 0xBC, 0x76, 0x0, 0xc0, 0x4F, 0xB9, 0x45, 0x3B) -OUR_GUID_ENTRY(CLSID_CMidiOutClassManager, -0x4EfE2452, 0x168A, 0x11d1, 0xBC, 0x76, 0x0, 0xc0, 0x4F, 0xB9, 0x45, 0x3B) - -// CC7BFB41-F175-11d1-A392-00E0291F3959 External Renderers Category -OUR_GUID_ENTRY(CLSID_TransmitCategory, -0xcc7bfb41, 0xf175, 0x11d1, 0xa3, 0x92, 0x0, 0xe0, 0x29, 0x1f, 0x39, 0x59) - -// CC7BFB46-F175-11d1-A392-00E0291F3959 Device Control Filters -OUR_GUID_ENTRY(CLSID_DeviceControlCategory, -0xcc7bfb46, 0xf175, 0x11d1, 0xa3, 0x92, 0x0, 0xe0, 0x29, 0x1f, 0x39, 0x59) - -// DA4E3DA0-D07D-11d0-BD50-00A0C911CE86 -OUR_GUID_ENTRY(CLSID_ActiveMovieCategories, -0xda4e3da0, 0xd07d, 0x11d0, 0xbd, 0x50, 0x0, 0xa0, 0xc9, 0x11, 0xce, 0x86) - -// 2721AE20-7E70-11D0-A5D6-28DB04C10000 -OUR_GUID_ENTRY(CLSID_DVDHWDecodersCategory, -0x2721AE20, 0x7E70, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00) - -// 7D22E920-5CA9-4787-8C2B-A6779BD11781 Encoder API encoder category -OUR_GUID_ENTRY(CLSID_MediaEncoderCategory, -0x7D22E920, 0x5CA9, 0x4787, 0x8C, 0x2B, 0xA6, 0x77, 0x9B, 0xD1, 0x17, 0x81) - -// 236C9559-ADCE-4736-BF72-BAB34E392196 Encoder API multiplexer category -OUR_GUID_ENTRY(CLSID_MediaMultiplexerCategory, -0x236C9559, 0xADCE, 0x4736, 0xBF, 0x72, 0xBA, 0xB3, 0x4E, 0x39, 0x21, 0x96) - -// CDA42200-BD88-11d0-BD4E-00A0C911CE86 -OUR_GUID_ENTRY(CLSID_FilterMapper2, -0xcda42200, 0xbd88, 0x11d0, 0xbd, 0x4e, 0x0, 0xa0, 0xc9, 0x11, 0xce, 0x86) - - -// 1e651cc0-b199-11d0-8212-00c04fc32c45 -OUR_GUID_ENTRY(CLSID_MemoryAllocator, -0x1e651cc0, 0xb199, 0x11d0, 0x82, 0x12, 0x00, 0xc0, 0x4f, 0xc3, 0x2c, 0x45) - -// CDBD8D00-C193-11d0-BD4E-00A0C911CE86 -OUR_GUID_ENTRY(CLSID_MediaPropertyBag, -0xcdbd8d00, 0xc193, 0x11d0, 0xbd, 0x4e, 0x0, 0xa0, 0xc9, 0x11, 0xce, 0x86) - -// FCC152B7-F372-11d0-8E00-00C04FD7C08B -OUR_GUID_ENTRY(CLSID_DvdGraphBuilder, -0xFCC152B7, 0xF372, 0x11d0, 0x8E, 0x00, 0x00, 0xC0, 0x4F, 0xD7, 0xC0, 0x8B) - -// 9B8C4620-2C1A-11d0-8493-00A02438AD48 -OUR_GUID_ENTRY(CLSID_DVDNavigator, -0x9b8c4620, 0x2c1a, 0x11d0, 0x84, 0x93, 0x0, 0xa0, 0x24, 0x38, 0xad, 0x48) - -// f963c5cf-a659-4a93-9638-caf3cd277d13 -OUR_GUID_ENTRY(CLSID_DVDState, -0xf963c5cf, 0xa659, 0x4a93, 0x96, 0x38, 0xca, 0xf3, 0xcd, 0x27, 0x7d, 0x13) - -// CC58E280-8AA1-11d1-B3F1-00AA003761C5 -OUR_GUID_ENTRY(CLSID_SmartTee, -0xcc58e280, 0x8aa1, 0x11d1, 0xb3, 0xf1, 0x0, 0xaa, 0x0, 0x37, 0x61, 0xc5) - -// -- format types --- - -// 0F6417D6-C318-11D0-A43F-00A0C9223196 FORMAT_None -OUR_GUID_ENTRY(FORMAT_None, -0x0F6417D6, 0xc318, 0x11d0, 0xa4, 0x3f, 0x00, 0xa0, 0xc9, 0x22, 0x31, 0x96) - -// 05589f80-c356-11ce-bf01-00aa0055595a FORMAT_VideoInfo -OUR_GUID_ENTRY(FORMAT_VideoInfo, -0x05589f80, 0xc356, 0x11ce, 0xbf, 0x01, 0x00, 0xaa, 0x00, 0x55, 0x59, 0x5a) - -// F72A76A0-EB0A-11d0-ACE4-0000C0CC16BA FORMAT_VideoInfo2 -OUR_GUID_ENTRY(FORMAT_VideoInfo2, -0xf72a76A0, 0xeb0a, 0x11d0, 0xac, 0xe4, 0x00, 0x00, 0xc0, 0xcc, 0x16, 0xba) - -// 05589f81-c356-11ce-bf01-00aa0055595a FORMAT_WaveFormatEx -OUR_GUID_ENTRY(FORMAT_WaveFormatEx, -0x05589f81, 0xc356, 0x11ce, 0xbf, 0x01, 0x00, 0xaa, 0x00, 0x55, 0x59, 0x5a) - -// 05589f82-c356-11ce-bf01-00aa0055595a FORMAT_MPEGVideo -OUR_GUID_ENTRY(FORMAT_MPEGVideo, -0x05589f82, 0xc356, 0x11ce, 0xbf, 0x01, 0x00, 0xaa, 0x00, 0x55, 0x59, 0x5a) - -// 05589f83-c356-11ce-bf01-00aa0055595a FORMAT_MPEGStreams -OUR_GUID_ENTRY(FORMAT_MPEGStreams, -0x05589f83, 0xc356, 0x11ce, 0xbf, 0x01, 0x00, 0xaa, 0x00, 0x55, 0x59, 0x5a) - -// 05589f84-c356-11ce-bf01-00aa0055595a FORMAT_DvInfo, DVINFO -OUR_GUID_ENTRY(FORMAT_DvInfo, -0x05589f84, 0xc356, 0x11ce, 0xbf, 0x01, 0x00, 0xaa, 0x00, 0x55, 0x59, 0x5a) - - -// -- Video related GUIDs --- - - -// 944d4c00-dd52-11ce-bf0e-00aa0055595a -OUR_GUID_ENTRY(CLSID_DirectDrawProperties, -0x944d4c00, 0xdd52, 0x11ce, 0xbf, 0x0e, 0x00, 0xaa, 0x00, 0x55, 0x59, 0x5a) - -// 59ce6880-acf8-11cf-b56e-0080c7c4b68a -OUR_GUID_ENTRY(CLSID_PerformanceProperties, -0x59ce6880, 0xacf8, 0x11cf, 0xb5, 0x6e, 0x00, 0x80, 0xc7, 0xc4, 0xb6, 0x8a) - -// 418afb70-f8b8-11ce-aac6-0020af0b99a3 -OUR_GUID_ENTRY(CLSID_QualityProperties, -0x418afb70, 0xf8b8, 0x11ce, 0xaa, 0xc6, 0x00, 0x20, 0xaf, 0x0b, 0x99, 0xa3) - -// 61ded640-e912-11ce-a099-00aa00479a58 -OUR_GUID_ENTRY(IID_IBaseVideoMixer, -0x61ded640, 0xe912, 0x11ce, 0xa0, 0x99, 0x00, 0xaa, 0x00, 0x47, 0x9a, 0x58) - -// 36d39eb0-dd75-11ce-bf0e-00aa0055595a -OUR_GUID_ENTRY(IID_IDirectDrawVideo, -0x36d39eb0, 0xdd75, 0x11ce, 0xbf, 0x0e, 0x00, 0xaa, 0x00, 0x55, 0x59, 0x5a) - -// bd0ecb0-f8e2-11ce-aac6-0020af0b99a3 -OUR_GUID_ENTRY(IID_IQualProp, -0x1bd0ecb0, 0xf8e2, 0x11ce, 0xaa, 0xc6, 0x00, 0x20, 0xaf, 0x0b, 0x99, 0xa3) - -// {CE292861-FC88-11d0-9E69-00C04FD7C15B} -OUR_GUID_ENTRY(CLSID_VPObject, -0xce292861, 0xfc88, 0x11d0, 0x9e, 0x69, 0x0, 0xc0, 0x4f, 0xd7, 0xc1, 0x5b) - -// {CE292862-FC88-11d0-9E69-00C04FD7C15B} -OUR_GUID_ENTRY(IID_IVPObject, -0xce292862, 0xfc88, 0x11d0, 0x9e, 0x69, 0x0, 0xc0, 0x4f, 0xd7, 0xc1, 0x5b) - -// {25DF12C1-3DE0-11d1-9E69-00C04FD7C15B} -OUR_GUID_ENTRY(IID_IVPControl, -0x25df12c1, 0x3de0, 0x11d1, 0x9e, 0x69, 0x0, 0xc0, 0x4f, 0xd7, 0xc1, 0x5b) - -// {814B9801-1C88-11d1-BAD9-00609744111A} -OUR_GUID_ENTRY(CLSID_VPVBIObject, -0x814b9801, 0x1c88, 0x11d1, 0xba, 0xd9, 0x0, 0x60, 0x97, 0x44, 0x11, 0x1a) - -// {814B9802-1C88-11d1-BAD9-00609744111A} -OUR_GUID_ENTRY(IID_IVPVBIObject, -0x814b9802, 0x1c88, 0x11d1, 0xba, 0xd9, 0x0, 0x60, 0x97, 0x44, 0x11, 0x1a) - -// {BC29A660-30E3-11d0-9E69-00C04FD7C15B} -OUR_GUID_ENTRY(IID_IVPConfig, -0xbc29a660, 0x30e3, 0x11d0, 0x9e, 0x69, 0x0, 0xc0, 0x4f, 0xd7, 0xc1, 0x5b) - -// {C76794A1-D6C5-11d0-9E69-00C04FD7C15B} -OUR_GUID_ENTRY(IID_IVPNotify, -0xc76794a1, 0xd6c5, 0x11d0, 0x9e, 0x69, 0x0, 0xc0, 0x4f, 0xd7, 0xc1, 0x5b) - -// {EBF47183-8764-11d1-9E69-00C04FD7C15B} -OUR_GUID_ENTRY(IID_IVPNotify2, -0xebf47183, 0x8764, 0x11d1, 0x9e, 0x69, 0x0, 0xc0, 0x4f, 0xd7, 0xc1, 0x5b) - - -// {EC529B00-1A1F-11D1-BAD9-00609744111A} -OUR_GUID_ENTRY(IID_IVPVBIConfig, -0xec529b00, 0x1a1f, 0x11d1, 0xba, 0xd9, 0x0, 0x60, 0x97, 0x44, 0x11, 0x1a) - -// {EC529B01-1A1F-11D1-BAD9-00609744111A} -OUR_GUID_ENTRY(IID_IVPVBINotify, -0xec529b01, 0x1a1f, 0x11d1, 0xba, 0xd9, 0x0, 0x60, 0x97, 0x44, 0x11, 0x1a) - -// {593CDDE1-0759-11d1-9E69-00C04FD7C15B} -OUR_GUID_ENTRY(IID_IMixerPinConfig, -0x593cdde1, 0x759, 0x11d1, 0x9e, 0x69, 0x0, 0xc0, 0x4f, 0xd7, 0xc1, 0x5b) - -// {EBF47182-8764-11d1-9E69-00C04FD7C15B} -OUR_GUID_ENTRY(IID_IMixerPinConfig2, -0xebf47182, 0x8764, 0x11d1, 0x9e, 0x69, 0x0, 0xc0, 0x4f, 0xd7, 0xc1, 0x5b) - - -// This is a real pain in the neck. The OLE GUIDs are separated out into a -// different file from the main header files. The header files can then be -// included multiple times and are protected with the following statements, -// -// #ifndef __SOMETHING_DEFINED__ -// #define __SOMETHING_DEFINED__ -// all the header contents -// #endif // __SOMETHING_DEFINED__ -// -// When the actual GUIDs are to be defined (using initguid) the GUID header -// file can then be included to really define them just once. Unfortunately -// DirectDraw has the GUIDs defined in the main header file. So if the base -// classes bring in ddraw.h to get at the DirectDraw structures and so on -// nobody would then be able to really include ddraw.h to allocate the GUID -// memory structures because of the aforementioned header file protection -// Therefore the DirectDraw GUIDs are defined and allocated for real here - -#ifndef __DDRAW_INCLUDED__ -OUR_GUID_ENTRY(CLSID_DirectDraw, 0xD7B70EE0,0x4340,0x11CF,0xB0,0x63,0x00,0x20,0xAF,0xC2,0xCD,0x35) -OUR_GUID_ENTRY(CLSID_DirectDrawClipper, 0x593817A0,0x7DB3,0x11CF,0xA2,0xDE,0x00,0xAA,0x00,0xb9,0x33,0x56) -OUR_GUID_ENTRY(IID_IDirectDraw, 0x6C14DB80,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60) -OUR_GUID_ENTRY(IID_IDirectDraw2, 0xB3A6F3E0,0x2B43,0x11CF,0xA2,0xDE,0x00,0xAA,0x00,0xB9,0x33,0x56) -OUR_GUID_ENTRY(IID_IDirectDrawSurface, 0x6C14DB81,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60) -OUR_GUID_ENTRY(IID_IDirectDrawSurface2, 0x57805885,0x6eec,0x11cf,0x94,0x41,0xa8,0x23,0x03,0xc1,0x0e,0x27) -OUR_GUID_ENTRY(IID_IDirectDrawSurface3, 0xDA044E00,0x69B2,0x11D0,0xA1,0xD5,0x00,0xAA,0x00,0xB8,0xDF,0xBB) -OUR_GUID_ENTRY(IID_IDirectDrawSurface4, 0x0B2B8630,0xAD35,0x11D0,0x8E,0xA6,0x00,0x60,0x97,0x97,0xEA,0x5B) -OUR_GUID_ENTRY(IID_IDirectDrawSurface7, 0x06675a80,0x3b9b,0x11d2,0xb9,0x2f,0x00,0x60,0x97,0x97,0xea,0x5b) -OUR_GUID_ENTRY(IID_IDirectDrawPalette, 0x6C14DB84,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60) -OUR_GUID_ENTRY(IID_IDirectDrawClipper, 0x6C14DB85,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60) -OUR_GUID_ENTRY(IID_IDirectDrawColorControl, 0x4B9F0EE0,0x0D7E,0x11D0,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8) -#endif - -#ifndef __DVP_INCLUDED__ -OUR_GUID_ENTRY(IID_IDDVideoPortContainer, 0x6C142760,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60) -#endif - -#ifndef __DDKM_INCLUDED__ -OUR_GUID_ENTRY(IID_IDirectDrawKernel, 0x8D56C120,0x6A08,0x11D0,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8) -OUR_GUID_ENTRY(IID_IDirectDrawSurfaceKernel, 0x60755DA0,0x6A40,0x11D0,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8) -#endif - -// 0618aa30-6bc4-11cf-bf36-00aa0055595a -OUR_GUID_ENTRY(CLSID_ModexProperties, -0x0618aa30, 0x6bc4, 0x11cf, 0xbf, 0x36, 0x00, 0xaa, 0x00, 0x55, 0x59, 0x5a) - -// dd1d7110-7836-11cf-bf47-00aa0055595a -OUR_GUID_ENTRY(IID_IFullScreenVideo, -0xdd1d7110, 0x7836, 0x11cf, 0xbf, 0x47, 0x00, 0xaa, 0x00, 0x55, 0x59, 0x5a) - -// 53479470-f1dd-11cf-bc42-00aa00ac74f6 -OUR_GUID_ENTRY(IID_IFullScreenVideoEx, -0x53479470, 0xf1dd, 0x11cf, 0xbc, 0x42, 0x00, 0xaa, 0x00, 0xac, 0x74, 0xf6) - -// {101193C0-0BFE-11d0-AF91-00AA00B67A42} DV decoder property -OUR_GUID_ENTRY(CLSID_DVDecPropertiesPage, -0x101193c0, 0xbfe, 0x11d0, 0xaf, 0x91, 0x0, 0xaa, 0x0, 0xb6, 0x7a, 0x42) - -// {4150F050-BB6F-11d0-AFB9-00AA00B67A42} DV encoder property -OUR_GUID_ENTRY(CLSID_DVEncPropertiesPage, -0x4150f050, 0xbb6f, 0x11d0, 0xaf, 0xb9, 0x0, 0xaa, 0x0, 0xb6, 0x7a, 0x42) - -// {4DB880E0-C10D-11d0-AFB9-00AA00B67A42} DV Muxer property -OUR_GUID_ENTRY(CLSID_DVMuxPropertyPage, -0x4db880e0, 0xc10d, 0x11d0, 0xaf, 0xb9, 0x0, 0xaa, 0x0, 0xb6, 0x7a, 0x42) - - -// -- Direct Sound Audio related GUID --- - -// 546F4260-D53E-11cf-B3F0-00AA003761C5 -OUR_GUID_ENTRY(IID_IAMDirectSound, -0x546f4260, 0xd53e, 0x11cf, 0xb3, 0xf0, 0x0, 0xaa, 0x0, 0x37, 0x61, 0xc5) - -// -- MPEG audio decoder properties - -// {b45dd570-3c77-11d1-abe1-00a0c905f375} -OUR_GUID_ENTRY(IID_IMpegAudioDecoder, -0xb45dd570, 0x3c77, 0x11d1, 0xab, 0xe1, 0x00, 0xa0, 0xc9, 0x05, 0xf3, 0x75) - -// --- Line21 Decoder interface GUID --- - -// 6E8D4A21-310C-11d0-B79A-00AA003767A7 IID_IAMLine21Decoder -OUR_GUID_ENTRY(IID_IAMLine21Decoder, -0x6e8d4a21, 0x310c, 0x11d0, 0xb7, 0x9a, 0x0, 0xaa, 0x0, 0x37, 0x67, 0xa7) - -// --- WST Decoder interface GUID --- - -// C056DE21-75C2-11d3-A184-00105AEF9F33 IID_IAMWstDecoder -OUR_GUID_ENTRY(IID_IAMWstDecoder, -0xc056de21, 0x75c2, 0x11d3, 0xa1, 0x84, 0x0, 0x10, 0x5a, 0xef, 0x9f, 0x33) - -// --- WST Decoder Property Page --- - -// 04E27F80-91E4-11d3-A184-00105AEF9F33 WST Decoder Property Page -OUR_GUID_ENTRY(CLSID_WstDecoderPropertyPage, -0x4e27f80, 0x91e4, 0x11d3, 0xa1, 0x84, 0x0, 0x10, 0x5a, 0xef, 0x9f, 0x33) - - -// -- Analog video related GUIDs --- - - -// -- format types --- -// 0482DDE0-7817-11cf-8A03-00AA006ECB65 -OUR_GUID_ENTRY(FORMAT_AnalogVideo, -0x482dde0, 0x7817, 0x11cf, 0x8a, 0x3, 0x0, 0xaa, 0x0, 0x6e, 0xcb, 0x65) - - -// -- major type, Analog Video - -// 0482DDE1-7817-11cf-8A03-00AA006ECB65 -OUR_GUID_ENTRY(MEDIATYPE_AnalogVideo, -0x482dde1, 0x7817, 0x11cf, 0x8a, 0x3, 0x0, 0xaa, 0x0, 0x6e, 0xcb, 0x65) - - -// -- Analog Video subtypes, NTSC - -// 0482DDE2-7817-11cf-8A03-00AA006ECB65 -OUR_GUID_ENTRY(MEDIASUBTYPE_AnalogVideo_NTSC_M, -0x482dde2, 0x7817, 0x11cf, 0x8a, 0x3, 0x0, 0xaa, 0x0, 0x6e, 0xcb, 0x65) - -// -- Analog Video subtypes, PAL - -// 0482DDE5-7817-11cf-8A03-00AA006ECB65 -OUR_GUID_ENTRY(MEDIASUBTYPE_AnalogVideo_PAL_B, -0x482dde5, 0x7817, 0x11cf, 0x8a, 0x3, 0x0, 0xaa, 0x0, 0x6e, 0xcb, 0x65) - -// 0482DDE6-7817-11cf-8A03-00AA006ECB65 -OUR_GUID_ENTRY(MEDIASUBTYPE_AnalogVideo_PAL_D, -0x482dde6, 0x7817, 0x11cf, 0x8a, 0x3, 0x0, 0xaa, 0x0, 0x6e, 0xcb, 0x65) - -// 0482DDE7-7817-11cf-8A03-00AA006ECB65 -OUR_GUID_ENTRY(MEDIASUBTYPE_AnalogVideo_PAL_G, -0x482dde7, 0x7817, 0x11cf, 0x8a, 0x3, 0x0, 0xaa, 0x0, 0x6e, 0xcb, 0x65) - -// 0482DDE8-7817-11cf-8A03-00AA006ECB65 -OUR_GUID_ENTRY(MEDIASUBTYPE_AnalogVideo_PAL_H, -0x482dde8, 0x7817, 0x11cf, 0x8a, 0x3, 0x0, 0xaa, 0x0, 0x6e, 0xcb, 0x65) - -// 0482DDE9-7817-11cf-8A03-00AA006ECB65 -OUR_GUID_ENTRY(MEDIASUBTYPE_AnalogVideo_PAL_I, -0x482dde9, 0x7817, 0x11cf, 0x8a, 0x3, 0x0, 0xaa, 0x0, 0x6e, 0xcb, 0x65) - -// 0482DDEA-7817-11cf-8A03-00AA006ECB65 -OUR_GUID_ENTRY(MEDIASUBTYPE_AnalogVideo_PAL_M, -0x482ddea, 0x7817, 0x11cf, 0x8a, 0x3, 0x0, 0xaa, 0x0, 0x6e, 0xcb, 0x65) - -// 0482DDEB-7817-11cf-8A03-00AA006ECB65 -OUR_GUID_ENTRY(MEDIASUBTYPE_AnalogVideo_PAL_N, -0x482ddeb, 0x7817, 0x11cf, 0x8a, 0x3, 0x0, 0xaa, 0x0, 0x6e, 0xcb, 0x65) - -// 0482DDEC-7817-11cf-8A03-00AA006ECB65 -OUR_GUID_ENTRY(MEDIASUBTYPE_AnalogVideo_PAL_N_COMBO, -0x482ddec, 0x7817, 0x11cf, 0x8a, 0x3, 0x0, 0xaa, 0x0, 0x6e, 0xcb, 0x65) - -// -- Analog Video subtypes, SECAM - -// 0482DDF0-7817-11cf-8A03-00AA006ECB65 -OUR_GUID_ENTRY(MEDIASUBTYPE_AnalogVideo_SECAM_B, -0x482ddf0, 0x7817, 0x11cf, 0x8a, 0x3, 0x0, 0xaa, 0x0, 0x6e, 0xcb, 0x65) - -// 0482DDF1-7817-11cf-8A03-00AA006ECB65 -OUR_GUID_ENTRY(MEDIASUBTYPE_AnalogVideo_SECAM_D, -0x482ddf1, 0x7817, 0x11cf, 0x8a, 0x3, 0x0, 0xaa, 0x0, 0x6e, 0xcb, 0x65) - -// 0482DDF2-7817-11cf-8A03-00AA006ECB65 -OUR_GUID_ENTRY(MEDIASUBTYPE_AnalogVideo_SECAM_G, -0x482ddf2, 0x7817, 0x11cf, 0x8a, 0x3, 0x0, 0xaa, 0x0, 0x6e, 0xcb, 0x65) - -// 0482DDF3-7817-11cf-8A03-00AA006ECB65 -OUR_GUID_ENTRY(MEDIASUBTYPE_AnalogVideo_SECAM_H, -0x482ddf3, 0x7817, 0x11cf, 0x8a, 0x3, 0x0, 0xaa, 0x0, 0x6e, 0xcb, 0x65) - -// 0482DDF4-7817-11cf-8A03-00AA006ECB65 -OUR_GUID_ENTRY(MEDIASUBTYPE_AnalogVideo_SECAM_K, -0x482ddf4, 0x7817, 0x11cf, 0x8a, 0x3, 0x0, 0xaa, 0x0, 0x6e, 0xcb, 0x65) - -// 0482DDF5-7817-11cf-8A03-00AA006ECB65 -OUR_GUID_ENTRY(MEDIASUBTYPE_AnalogVideo_SECAM_K1, -0x482ddf5, 0x7817, 0x11cf, 0x8a, 0x3, 0x0, 0xaa, 0x0, 0x6e, 0xcb, 0x65) - -// 0482DDF6-7817-11cf-8A03-00AA006ECB65 -OUR_GUID_ENTRY(MEDIASUBTYPE_AnalogVideo_SECAM_L, -0x482ddf6, 0x7817, 0x11cf, 0x8a, 0x3, 0x0, 0xaa, 0x0, 0x6e, 0xcb, 0x65) - - -// -- External audio related GUIDs --- - -// -- major types, Analog Audio - -// 0482DEE1-7817-11cf-8a03-00aa006ecb65 -OUR_GUID_ENTRY(MEDIATYPE_AnalogAudio, -0x482dee1, 0x7817, 0x11cf, 0x8a, 0x3, 0x0, 0xaa, 0x0, 0x6e, 0xcb, 0x65) - -// -// DirectShow's include file based on ksmedia.h from WDM DDK -// -#include "ksuuids.h" - - -// -- Well known time format GUIDs --- - - -// 00000000-0000-0000-0000-000000000000 -OUR_GUID_ENTRY(TIME_FORMAT_NONE, -0L, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) - -// 7b785570-8c82-11cf-bc0c-00aa00ac74f6 -OUR_GUID_ENTRY(TIME_FORMAT_FRAME, -0x7b785570, 0x8c82, 0x11cf, 0xbc, 0xc, 0x0, 0xaa, 0x0, 0xac, 0x74, 0xf6) - -// 7b785571-8c82-11cf-bc0c-00aa00ac74f6 -OUR_GUID_ENTRY(TIME_FORMAT_BYTE, -0x7b785571, 0x8c82, 0x11cf, 0xbc, 0xc, 0x0, 0xaa, 0x0, 0xac, 0x74, 0xf6) - -// 7b785572-8c82-11cf-bc0c-00aa00ac74f6 -OUR_GUID_ENTRY(TIME_FORMAT_SAMPLE, -0x7b785572, 0x8c82, 0x11cf, 0xbc, 0xc, 0x0, 0xaa, 0x0, 0xac, 0x74, 0xf6) - -// 7b785573-8c82-11cf-bc0c-00aa00ac74f6 -OUR_GUID_ENTRY(TIME_FORMAT_FIELD, -0x7b785573, 0x8c82, 0x11cf, 0xbc, 0xc, 0x0, 0xaa, 0x0, 0xac, 0x74, 0xf6) - - -// 7b785574-8c82-11cf-bc0c-00aa00ac74f6 -OUR_GUID_ENTRY(TIME_FORMAT_MEDIA_TIME, -0x7b785574, 0x8c82, 0x11cf, 0xbc, 0xc, 0x0, 0xaa, 0x0, 0xac, 0x74, 0xf6) - - -// for IKsPropertySet - -// 9B00F101-1567-11d1-B3F1-00AA003761C5 -OUR_GUID_ENTRY(AMPROPSETID_Pin, -0x9b00f101, 0x1567, 0x11d1, 0xb3, 0xf1, 0x0, 0xaa, 0x0, 0x37, 0x61, 0xc5) - -// fb6c4281-0353-11d1-905f-0000c0cc16ba -OUR_GUID_ENTRY(PIN_CATEGORY_CAPTURE, -0xfb6c4281, 0x0353, 0x11d1, 0x90, 0x5f, 0x00, 0x00, 0xc0, 0xcc, 0x16, 0xba) - -// fb6c4282-0353-11d1-905f-0000c0cc16ba -OUR_GUID_ENTRY(PIN_CATEGORY_PREVIEW, -0xfb6c4282, 0x0353, 0x11d1, 0x90, 0x5f, 0x00, 0x00, 0xc0, 0xcc, 0x16, 0xba) - -// fb6c4283-0353-11d1-905f-0000c0cc16ba -OUR_GUID_ENTRY(PIN_CATEGORY_ANALOGVIDEOIN, -0xfb6c4283, 0x0353, 0x11d1, 0x90, 0x5f, 0x00, 0x00, 0xc0, 0xcc, 0x16, 0xba) - -// fb6c4284-0353-11d1-905f-0000c0cc16ba -OUR_GUID_ENTRY(PIN_CATEGORY_VBI, -0xfb6c4284, 0x0353, 0x11d1, 0x90, 0x5f, 0x00, 0x00, 0xc0, 0xcc, 0x16, 0xba) - -// fb6c4285-0353-11d1-905f-0000c0cc16ba -OUR_GUID_ENTRY(PIN_CATEGORY_VIDEOPORT, -0xfb6c4285, 0x0353, 0x11d1, 0x90, 0x5f, 0x00, 0x00, 0xc0, 0xcc, 0x16, 0xba) - -// fb6c4286-0353-11d1-905f-0000c0cc16ba -OUR_GUID_ENTRY(PIN_CATEGORY_NABTS, -0xfb6c4286, 0x0353, 0x11d1, 0x90, 0x5f, 0x00, 0x00, 0xc0, 0xcc, 0x16, 0xba) - -// fb6c4287-0353-11d1-905f-0000c0cc16ba -OUR_GUID_ENTRY(PIN_CATEGORY_EDS, -0xfb6c4287, 0x0353, 0x11d1, 0x90, 0x5f, 0x00, 0x00, 0xc0, 0xcc, 0x16, 0xba) - -// fb6c4288-0353-11d1-905f-0000c0cc16ba -OUR_GUID_ENTRY(PIN_CATEGORY_TELETEXT, -0xfb6c4288, 0x0353, 0x11d1, 0x90, 0x5f, 0x00, 0x00, 0xc0, 0xcc, 0x16, 0xba) - -// fb6c4289-0353-11d1-905f-0000c0cc16ba -OUR_GUID_ENTRY(PIN_CATEGORY_CC, -0xfb6c4289, 0x0353, 0x11d1, 0x90, 0x5f, 0x00, 0x00, 0xc0, 0xcc, 0x16, 0xba) - -// fb6c428a-0353-11d1-905f-0000c0cc16ba -OUR_GUID_ENTRY(PIN_CATEGORY_STILL, -0xfb6c428a, 0x0353, 0x11d1, 0x90, 0x5f, 0x00, 0x00, 0xc0, 0xcc, 0x16, 0xba) - -// fb6c428b-0353-11d1-905f-0000c0cc16ba -OUR_GUID_ENTRY(PIN_CATEGORY_TIMECODE, -0xfb6c428b, 0x0353, 0x11d1, 0x90, 0x5f, 0x00, 0x00, 0xc0, 0xcc, 0x16, 0xba) - -// fb6c428c-0353-11d1-905f-0000c0cc16ba -OUR_GUID_ENTRY(PIN_CATEGORY_VIDEOPORT_VBI, -0xfb6c428c, 0x0353, 0x11d1, 0x90, 0x5f, 0x00, 0x00, 0xc0, 0xcc, 0x16, 0xba) - - -// the following special GUIDS are used by ICaptureGraphBuilder::FindInterface - -// {AC798BE0-98E3-11d1-B3F1-00AA003761C5} -OUR_GUID_ENTRY(LOOK_UPSTREAM_ONLY, -0xac798be0, 0x98e3, 0x11d1, 0xb3, 0xf1, 0x0, 0xaa, 0x0, 0x37, 0x61, 0xc5) - -// {AC798BE1-98E3-11d1-B3F1-00AA003761C5} -OUR_GUID_ENTRY(LOOK_DOWNSTREAM_ONLY, -0xac798be1, 0x98e3, 0x11d1, 0xb3, 0xf1, 0x0, 0xaa, 0x0, 0x37, 0x61, 0xc5) - -// ------------------------------------------------------------------------- -// KSProxy GUIDS -// ------------------------------------------------------------------------- - -// {266EEE41-6C63-11cf-8A03-00AA006ECB65} -OUR_GUID_ENTRY(CLSID_TVTunerFilterPropertyPage, -0x266eee41, 0x6c63, 0x11cf, 0x8a, 0x3, 0x0, 0xaa, 0x0, 0x6e, 0xcb, 0x65) - -// {71F96461-78F3-11d0-A18C-00A0C9118956} -OUR_GUID_ENTRY(CLSID_CrossbarFilterPropertyPage, -0x71f96461, 0x78f3, 0x11d0, 0xa1, 0x8c, 0x0, 0xa0, 0xc9, 0x11, 0x89, 0x56) - -// {71F96463-78F3-11d0-A18C-00A0C9118956} -OUR_GUID_ENTRY(CLSID_TVAudioFilterPropertyPage, -0x71f96463, 0x78f3, 0x11d0, 0xa1, 0x8c, 0x0, 0xa0, 0xc9, 0x11, 0x89, 0x56) - -// {71F96464-78F3-11d0-A18C-00A0C9118956} -OUR_GUID_ENTRY(CLSID_VideoProcAmpPropertyPage, -0x71f96464, 0x78f3, 0x11d0, 0xa1, 0x8c, 0x0, 0xa0, 0xc9, 0x11, 0x89, 0x56) - -// {71F96465-78F3-11d0-A18C-00A0C9118956} -OUR_GUID_ENTRY(CLSID_CameraControlPropertyPage, -0x71f96465, 0x78f3, 0x11d0, 0xa1, 0x8c, 0x0, 0xa0, 0xc9, 0x11, 0x89, 0x56) - -// {71F96466-78F3-11d0-A18C-00A0C9118956} -OUR_GUID_ENTRY(CLSID_AnalogVideoDecoderPropertyPage, -0x71f96466, 0x78f3, 0x11d0, 0xa1, 0x8c, 0x0, 0xa0, 0xc9, 0x11, 0x89, 0x56) - -// {71F96467-78F3-11d0-A18C-00A0C9118956} -OUR_GUID_ENTRY(CLSID_VideoStreamConfigPropertyPage, -0x71f96467, 0x78f3, 0x11d0, 0xa1, 0x8c, 0x0, 0xa0, 0xc9, 0x11, 0x89, 0x56) - -// {37E92A92-D9AA-11d2-BF84-8EF2B1555AED} Audio Renderer Advanced Property Page -OUR_GUID_ENTRY(CLSID_AudioRendererAdvancedProperties, -0x37e92a92, 0xd9aa, 0x11d2, 0xbf, 0x84, 0x8e, 0xf2, 0xb1, 0x55, 0x5a, 0xed) - - -// ------------------------------------------------------------------------- -// VMR GUIDS -// ------------------------------------------------------------------------- - -// {B87BEB7B-8D29-423f-AE4D-6582C10175AC} -OUR_GUID_ENTRY(CLSID_VideoMixingRenderer, -0xB87BEB7B, 0x8D29, 0x423f, 0xAE, 0x4D, 0x65, 0x82, 0xC1, 0x01, 0x75, 0xAC) - -// {6BC1CFFA-8FC1-4261-AC22-CFB4CC38DB50} -OUR_GUID_ENTRY(CLSID_VideoRendererDefault, -0x6BC1CFFA, 0x8FC1, 0x4261, 0xAC, 0x22, 0xCF, 0xB4, 0xCC, 0x38, 0xDB, 0x50) - -// {99d54f63-1a69-41ae-aa4d-c976eb3f0713} -OUR_GUID_ENTRY(CLSID_AllocPresenter, -0x99d54f63, 0x1a69, 0x41ae, 0xaa, 0x4d, 0xc9, 0x76, 0xeb, 0x3f, 0x07, 0x13) - -// {4444ac9e-242e-471b-a3c7-45dcd46352bc} -OUR_GUID_ENTRY(CLSID_AllocPresenterDDXclMode, -0x4444ac9e, 0x242e, 0x471b, 0xa3, 0xc7, 0x45, 0xdc, 0xd4, 0x63, 0x52, 0xbc) - -// {6f26a6cd-967b-47fd-874a-7aed2c9d25a2} -OUR_GUID_ENTRY(CLSID_VideoPortManager, -0x6f26a6cd, 0x967b, 0x47fd, 0x87, 0x4a, 0x7a, 0xed, 0x2c, 0x9d, 0x25, 0xa2) - - -// ------------------------------------------------------------------------- -// VMR GUIDS for DX9 -// ------------------------------------------------------------------------- - -// {51b4abf3-748f-4e3b-a276-c828330e926a} -OUR_GUID_ENTRY(CLSID_VideoMixingRenderer9, -0x51b4abf3, 0x748f, 0x4e3b, 0xa2, 0x76, 0xc8, 0x28, 0x33, 0x0e, 0x92, 0x6a) - - - - -// ------------------------------------------------------------------------- -// BDA Network Provider GUIDS -// ------------------------------------------------------------------------- - -// {0DAD2FDD-5FD7-11D3-8F50-00C04F7971E2} -OUR_GUID_ENTRY(CLSID_ATSCNetworkProvider, -0x0dad2fdd, 0x5fd7, 0x11d3, 0x8f, 0x50, 0x00, 0xc0, 0x4f, 0x79, 0x71, 0xe2) - -// {E3444D16-5AC4-4386-88DF-13FD230E1DDA} -OUR_GUID_ENTRY(CLSID_ATSCNetworkPropertyPage, -0xe3444d16, 0x5ac4, 0x4386, 0x88, 0xdf, 0x13, 0xfd, 0x23, 0x0e, 0x1d, 0xda) - -// {FA4B375A-45B4-4d45-8440-263957B11623} -OUR_GUID_ENTRY(CLSID_DVBSNetworkProvider, -0xfa4b375a, 0x45b4, 0x4d45, 0x84, 0x40, 0x26, 0x39, 0x57, 0xb1, 0x16, 0x23) - -// {216C62DF-6D7F-4e9a-8571-05F14EDB766A} -OUR_GUID_ENTRY(CLSID_DVBTNetworkProvider, -0x216c62df, 0x6d7f, 0x4e9a, 0x85, 0x71, 0x5, 0xf1, 0x4e, 0xdb, 0x76, 0x6a) - -// {DC0C0FE7-0485-4266-B93F-68FBF80ED834} -OUR_GUID_ENTRY(CLSID_DVBCNetworkProvider, -0xdc0c0fe7, 0x485, 0x4266, 0xb9, 0x3f, 0x68, 0xfb, 0xf8, 0xe, 0xd8, 0x34) - - - - -// ------------------------------------------------------------------------- -// TVE Receiver filter guids -// ------------------------------------------------------------------------- - -// The CLSID used by the TVE Receiver filter -// {05500280-FAA5-4DF9-8246-BFC23AC5CEA8} -OUR_GUID_ENTRY(CLSID_DShowTVEFilter, -0x05500280, 0xFAA5, 0x4DF9, 0x82, 0x46, 0xBF, 0xC2, 0x3A, 0xC5, 0xCE, 0xA8) - -// {05500281-FAA5-4DF9-8246-BFC23AC5CEA8} -OUR_GUID_ENTRY(CLSID_TVEFilterTuneProperties, -0x05500281, 0xFAA5, 0x4DF9, 0x82, 0x46, 0xBF, 0xC2, 0x3A, 0xC5, 0xCE, 0xA8) - - -// {05500282-FAA5-4DF9-8246-BFC23AC5CEA8} -OUR_GUID_ENTRY(CLSID_TVEFilterCCProperties, -0x05500282, 0xFAA5, 0x4DF9, 0x82, 0x46, 0xBF, 0xC2, 0x3A, 0xC5, 0xCE, 0xA8) - -// {05500283-FAA5-4DF9-8246-BFC23AC5CEA8} -OUR_GUID_ENTRY(CLSID_TVEFilterStatsProperties, -0x05500283, 0xFAA5, 0x4DF9, 0x82, 0x46, 0xBF, 0xC2, 0x3A, 0xC5, 0xCE, 0xA8) - -// ------------------------------------------------------------------------- -// Defined ENCAPI parameter GUIDs -// ------------------------------------------------------------------------- - -// The CLSID for the original IVideoEncoder proxy plug-in -// {B43C4EEC-8C32-4791-9102-508ADA5EE8E7} -OUR_GUID_ENTRY(CLSID_IVideoEncoderProxy, -0xb43c4eec, 0x8c32, 0x4791, 0x91, 0x2, 0x50, 0x8a, 0xda, 0x5e, 0xe8, 0xe7) - -// The CLSID for the ICodecAPI proxy plug-in -// {7ff0997a-1999-4286-a73c-622b8814e7eb} -OUR_GUID_ENTRY(CLSID_ICodecAPIProxy, -0x7ff0997a, 0x1999, 0x4286, 0xa7, 0x3c, 0x62, 0x2b, 0x88, 0x14, 0xe7, 0xeb ) - -// The CLSID for the combination ICodecAPI/IVideoEncoder proxy plug-in -// {b05dabd9-56e5-4fdc-afa4-8a47e91f1c9c} -OUR_GUID_ENTRY(CLSID_IVideoEncoderCodecAPIProxy, -0xb05dabd9, 0x56e5, 0x4fdc, 0xaf, 0xa4, 0x8a, 0x47, 0xe9, 0x1f, 0x1c, 0x9c ) - -#ifndef __ENCODER_API_GUIDS__ -#define __ENCODER_API_GUIDS__ - -// {49CC4C43-CA83-4ad4-A9AF-F3696AF666DF} -OUR_GUID_ENTRY(ENCAPIPARAM_BITRATE, -0x49cc4c43, 0xca83, 0x4ad4, 0xa9, 0xaf, 0xf3, 0x69, 0x6a, 0xf6, 0x66, 0xdf) - -// {703F16A9-3D48-44a1-B077-018DFF915D19} -OUR_GUID_ENTRY(ENCAPIPARAM_PEAK_BITRATE, -0x703f16a9, 0x3d48, 0x44a1, 0xb0, 0x77, 0x1, 0x8d, 0xff, 0x91, 0x5d, 0x19) - -// {EE5FB25C-C713-40d1-9D58-C0D7241E250F} -OUR_GUID_ENTRY(ENCAPIPARAM_BITRATE_MODE, -0xee5fb25c, 0xc713, 0x40d1, 0x9d, 0x58, 0xc0, 0xd7, 0x24, 0x1e, 0x25, 0xf) - -// for kernel control - -// {62b12acf-f6b0-47d9-9456-96f22c4e0b9d} -OUR_GUID_ENTRY(CODECAPI_CHANGELISTS, -0x62b12acf, 0xf6b0, 0x47d9, 0x94, 0x56, 0x96, 0xf2, 0x2c, 0x4e, 0x0b, 0x9d) - -// {7112e8e1-3d03-47ef-8e60-03f1cf537301 } -OUR_GUID_ENTRY(CODECAPI_VIDEO_ENCODER, -0x7112e8e1, 0x3d03, 0x47ef, 0x8e, 0x60, 0x03, 0xf1, 0xcf, 0x53, 0x73, 0x01) - -// {b9d19a3e-f897-429c-bc46-8138b7272b2d } -OUR_GUID_ENTRY(CODECAPI_AUDIO_ENCODER, -0xb9d19a3e, 0xf897, 0x429c, 0xbc, 0x46, 0x81, 0x38, 0xb7, 0x27, 0x2b, 0x2d) - -// {6c5e6a7c-acf8-4f55-a999-1a628109051b } -OUR_GUID_ENTRY(CODECAPI_SETALLDEFAULTS, -0x6c5e6a7c, 0xacf8, 0x4f55, 0xa9, 0x99, 0x1a, 0x62, 0x81, 0x09, 0x05, 0x1b) - -// {6a577e92-83e1-4113-adc2-4fcec32f83a1 } -OUR_GUID_ENTRY(CODECAPI_ALLSETTINGS, -0x6a577e92, 0x83e1, 0x4113, 0xad, 0xc2, 0x4f, 0xce, 0xc3, 0x2f, 0x83, 0xa1) - -// {0581af97-7693-4dbd-9dca-3f9ebd6585a1 } -OUR_GUID_ENTRY(CODECAPI_SUPPORTSEVENTS, -0x0581af97, 0x7693, 0x4dbd, 0x9d, 0xca, 0x3f, 0x9e, 0xbd, 0x65, 0x85, 0xa1 ) - -// {1cb14e83-7d72-4657-83fd-47a2c5b9d13d } -OUR_GUID_ENTRY(CODECAPI_CURRENTCHANGELIST, -0x1cb14e83, 0x7d72, 0x4657, 0x83, 0xfd, 0x47, 0xa2, 0xc5, 0xb9, 0xd1, 0x3d ) - -#endif // __ENCODER_API_GUIDS__ - -#undef OUR_GUID_ENTRY +//------------------------------------------------------------------------------ +// File: uuids.h +// +// Desc: Contains the GUIDs for the MediaType type, subtype fields and format +// types for standard media types, and also class ids for well-known +// components. +// +// Copyright (c) 1992 - 2002, Microsoft Corporation. All rights reserved. +//------------------------------------------------------------------------------ + + +// +// We want to use this list for generating strings for debugging too +// so we redefine OUR_GUID_ENTRY depending on what we want to do +// +// It is imperative that all entries in this file are declared using +// OUR_GUID_ENTRY as that macro might have been defined in advance of +// including this file. See wxdebug.cpp in sdk\classes\base. +// + +#ifndef OUR_GUID_ENTRY + #define OUR_GUID_ENTRY(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \ + DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8); +#endif + + +// -- to allow consistent labeling of Media types and subtypes -- + +#define MEDIATYPE_NULL GUID_NULL +#define MEDIASUBTYPE_NULL GUID_NULL + +// -- Use this subtype if you don't have a use for a subtype for your type +// e436eb8e-524f-11ce-9f53-0020af0ba770 MEDIASUBTYPE_None +OUR_GUID_ENTRY(MEDIASUBTYPE_None, +0xe436eb8e, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70) + + +// -- major types --- + + +// 73646976-0000-0010-8000-00AA00389B71 'vids' == MEDIATYPE_Video +OUR_GUID_ENTRY(MEDIATYPE_Video, +0x73646976, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) + +// 73647561-0000-0010-8000-00AA00389B71 'auds' == MEDIATYPE_Audio +OUR_GUID_ENTRY(MEDIATYPE_Audio, +0x73647561, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) + +// 73747874-0000-0010-8000-00AA00389B71 'txts' == MEDIATYPE_Text +OUR_GUID_ENTRY(MEDIATYPE_Text, +0x73747874, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) + +// 7364696D-0000-0010-8000-00AA00389B71 'mids' == MEDIATYPE_Midi +OUR_GUID_ENTRY(MEDIATYPE_Midi, +0x7364696D, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) + +// e436eb83-524f-11ce-9f53-0020af0ba770 MEDIATYPE_Stream +OUR_GUID_ENTRY(MEDIATYPE_Stream, +0xe436eb83, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70) + +// 73(s)76(v)61(a)69(i)-0000-0010-8000-00AA00389B71 'iavs' == MEDIATYPE_Interleaved +OUR_GUID_ENTRY(MEDIATYPE_Interleaved, +0x73766169, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) + +// 656c6966-0000-0010-8000-00AA00389B71 'file' == MEDIATYPE_File +OUR_GUID_ENTRY(MEDIATYPE_File, +0x656c6966, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) + +// 73636d64-0000-0010-8000-00AA00389B71 'scmd' == MEDIATYPE_ScriptCommand +OUR_GUID_ENTRY(MEDIATYPE_ScriptCommand, +0x73636d64, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) + +// 670AEA80-3A82-11d0-B79B-00AA003767A7 MEDIATYPE_AUXLine21Data +OUR_GUID_ENTRY(MEDIATYPE_AUXLine21Data, +0x670aea80, 0x3a82, 0x11d0, 0xb7, 0x9b, 0x0, 0xaa, 0x0, 0x37, 0x67, 0xa7) + +// F72A76E1-EB0A-11D0-ACE4-0000C0CC16BA MEDIATYPE_VBI +OUR_GUID_ENTRY(MEDIATYPE_VBI, +0xf72a76e1, 0xeb0a, 0x11d0, 0xac, 0xe4, 0x00, 0x00, 0xc0, 0xcc, 0x16, 0xba) + +// 0482DEE3-7817-11cf-8a03-00aa006ecb65 MEDIATYPE_Timecode +OUR_GUID_ENTRY(MEDIATYPE_Timecode, +0x482dee3, 0x7817, 0x11cf, 0x8a, 0x3, 0x0, 0xaa, 0x0, 0x6e, 0xcb, 0x65) + +// 74726c6d-0000-0010-8000-00AA00389B71 'lmrt' == MEDIATYPE_LMRT +OUR_GUID_ENTRY(MEDIATYPE_LMRT, +0x74726c6d, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) + +// 74726c6d-0000-0010-8000-00AA00389B71 'urls' == MEDIATYPE_URL_STREAM +OUR_GUID_ENTRY(MEDIATYPE_URL_STREAM, +0x736c7275, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) + +// -- sub types --- + +// 4C504C43-0000-0010-8000-00AA00389B71 'CLPL' == MEDIASUBTYPE_CLPL +OUR_GUID_ENTRY(MEDIASUBTYPE_CLPL, +0x4C504C43, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) + +// 56595559-0000-0010-8000-00AA00389B71 'YUYV' == MEDIASUBTYPE_YUYV +OUR_GUID_ENTRY(MEDIASUBTYPE_YUYV, +0x56595559, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) + +// 56555949-0000-0010-8000-00AA00389B71 'IYUV' == MEDIASUBTYPE_IYUV +OUR_GUID_ENTRY(MEDIASUBTYPE_IYUV, +0x56555949, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) + +// 39555659-0000-0010-8000-00AA00389B71 'YVU9' == MEDIASUBTYPE_YVU9 +OUR_GUID_ENTRY(MEDIASUBTYPE_YVU9, +0x39555659, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) + +// 31313459-0000-0010-8000-00AA00389B71 'Y411' == MEDIASUBTYPE_Y411 +OUR_GUID_ENTRY(MEDIASUBTYPE_Y411, +0x31313459, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) + +// 50313459-0000-0010-8000-00AA00389B71 'Y41P' == MEDIASUBTYPE_Y41P +OUR_GUID_ENTRY(MEDIASUBTYPE_Y41P, +0x50313459, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) + +// 32595559-0000-0010-8000-00AA00389B71 'YUY2' == MEDIASUBTYPE_YUY2 +OUR_GUID_ENTRY(MEDIASUBTYPE_YUY2, +0x32595559, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) + +// 55595659-0000-0010-8000-00AA00389B71 'YVYU' == MEDIASUBTYPE_YVYU +OUR_GUID_ENTRY(MEDIASUBTYPE_YVYU, +0x55595659, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) + +// 59565955-0000-0010-8000-00AA00389B71 'UYVY' == MEDIASUBTYPE_UYVY +OUR_GUID_ENTRY(MEDIASUBTYPE_UYVY, +0x59565955, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) + +// 31313259-0000-0010-8000-00AA00389B71 'Y211' == MEDIASUBTYPE_Y211 +OUR_GUID_ENTRY(MEDIASUBTYPE_Y211, +0x31313259, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) + +// 524a4c43-0000-0010-8000-00AA00389B71 'CLJR' == MEDIASUBTYPE_CLJR +OUR_GUID_ENTRY(MEDIASUBTYPE_CLJR, +0x524a4c43, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) + +// 39304649-0000-0010-8000-00AA00389B71 'IF09' == MEDIASUBTYPE_IF09 +OUR_GUID_ENTRY(MEDIASUBTYPE_IF09, +0x39304649, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) + +// 414c5043-0000-0010-8000-00AA00389B71 'CPLA' == MEDIASUBTYPE_CPLA +OUR_GUID_ENTRY(MEDIASUBTYPE_CPLA, +0x414c5043, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) + +// 47504A4D-0000-0010-8000-00AA00389B71 MEDIASUBTYPE_MJPG +OUR_GUID_ENTRY(MEDIASUBTYPE_MJPG, +0x47504A4D, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) + +// 4A4D5654-0000-0010-8000-00AA00389B71 MEDIASUBTYPE_TVMJ +OUR_GUID_ENTRY(MEDIASUBTYPE_TVMJ, +0x4A4D5654, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) + +// 454B4157-0000-0010-8000-00AA00389B71 MEDIASUBTYPE_WAKE +OUR_GUID_ENTRY(MEDIASUBTYPE_WAKE, +0x454B4157, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) + +// 43434643-0000-0010-8000-00AA00389B71 MEDIASUBTYPE_CFCC +OUR_GUID_ENTRY(MEDIASUBTYPE_CFCC, +0x43434643, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) + +// 47504A49-0000-0010-8000-00AA00389B71 MEDIASUBTYPE_IJPG +OUR_GUID_ENTRY(MEDIASUBTYPE_IJPG, +0x47504A49, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) + +// 6D756C50-0000-0010-8000-00AA00389B71 MEDIASUBTYPE_Plum +OUR_GUID_ENTRY(MEDIASUBTYPE_Plum, +0x6D756C50, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) + +// FAST DV-Master +// 53435644-0000-0010-8000-00AA00389B71 MEDIASUBTYPE_DVCS +OUR_GUID_ENTRY(MEDIASUBTYPE_DVCS, +0x53435644, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) + +// FAST DV-Master +// 44535644-0000-0010-8000-00AA00389B71 MEDIASUBTYPE_DVSD +OUR_GUID_ENTRY(MEDIASUBTYPE_DVSD, +0x44535644, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) + +// MIROVideo DV +// 4656444D-0000-0010-8000-00AA00389B71 MEDIASUBTYPE_MDVF +OUR_GUID_ENTRY(MEDIASUBTYPE_MDVF, +0x4656444D, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) + +// e436eb78-524f-11ce-9f53-0020af0ba770 MEDIASUBTYPE_RGB1 +// e436eb78-524f-11ce-9f53-0020af0ba770 MEDIASUBTYPE_RGB1 +OUR_GUID_ENTRY(MEDIASUBTYPE_RGB1, +0xe436eb78, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70) + +// e436eb79-524f-11ce-9f53-0020af0ba770 MEDIASUBTYPE_RGB4 +OUR_GUID_ENTRY(MEDIASUBTYPE_RGB4, +0xe436eb79, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70) + +// e436eb7a-524f-11ce-9f53-0020af0ba770 MEDIASUBTYPE_RGB8 +OUR_GUID_ENTRY(MEDIASUBTYPE_RGB8, +0xe436eb7a, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70) + +// e436eb7b-524f-11ce-9f53-0020af0ba770 MEDIASUBTYPE_RGB565 +OUR_GUID_ENTRY(MEDIASUBTYPE_RGB565, +0xe436eb7b, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70) + +// e436eb7c-524f-11ce-9f53-0020af0ba770 MEDIASUBTYPE_RGB555 +OUR_GUID_ENTRY(MEDIASUBTYPE_RGB555, +0xe436eb7c, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70) + +// e436eb7d-524f-11ce-9f53-0020af0ba770 MEDIASUBTYPE_RGB24 +OUR_GUID_ENTRY(MEDIASUBTYPE_RGB24, +0xe436eb7d, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70) + +// e436eb7e-524f-11ce-9f53-0020af0ba770 MEDIASUBTYPE_RGB32 +OUR_GUID_ENTRY(MEDIASUBTYPE_RGB32, +0xe436eb7e, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70) + + +// +// RGB surfaces that contain per pixel alpha values. +// + +// 297C55AF-E209-4cb3-B757-C76D6B9C88A8 MEDIASUBTYPE_ARGB1555 +OUR_GUID_ENTRY(MEDIASUBTYPE_ARGB1555, +0x297c55af, 0xe209, 0x4cb3, 0xb7, 0x57, 0xc7, 0x6d, 0x6b, 0x9c, 0x88, 0xa8) + +// 6E6415E6-5C24-425f-93CD-80102B3D1CCA MEDIASUBTYPE_ARGB4444 +OUR_GUID_ENTRY(MEDIASUBTYPE_ARGB4444, +0x6e6415e6, 0x5c24, 0x425f, 0x93, 0xcd, 0x80, 0x10, 0x2b, 0x3d, 0x1c, 0xca) + +// 773c9ac0-3274-11d0-B724-00aa006c1A01 MEDIASUBTYPE_ARGB32 +OUR_GUID_ENTRY(MEDIASUBTYPE_ARGB32, +0x773c9ac0, 0x3274, 0x11d0, 0xb7, 0x24, 0x0, 0xaa, 0x0, 0x6c, 0x1a, 0x1 ) + + +// 2f8bb76d-b644-4550-acf3-d30caa65d5c5 MEDIASUBTYPE_A2R10G10B10 +OUR_GUID_ENTRY(MEDIASUBTYPE_A2R10G10B10, +0x2f8bb76d, 0xb644, 0x4550, 0xac, 0xf3, 0xd3, 0x0c, 0xaa, 0x65, 0xd5, 0xc5) + +// 576f7893-bdf6-48c4-875f-ae7b81834567 MEDIASUBTYPE_A2B10G10R10 +OUR_GUID_ENTRY(MEDIASUBTYPE_A2B10G10R10, +0x576f7893, 0xbdf6, 0x48c4, 0x87, 0x5f, 0xae, 0x7b, 0x81, 0x83, 0x45, 0x67) + + +// 56555941-0000-0010-8000-00AA00389B71 'AYUV' == MEDIASUBTYPE_AYUV +// +// See the DX-VA header and documentation for a description of this format. +// +OUR_GUID_ENTRY(MEDIASUBTYPE_AYUV, +0x56555941, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) + +// 34344941-0000-0010-8000-00AA00389B71 'AI44' == MEDIASUBTYPE_AI44 +// +// See the DX-VA header and documentation for a description of this format. +// +OUR_GUID_ENTRY(MEDIASUBTYPE_AI44, +0x34344941, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) + +// 34344149-0000-0010-8000-00AA00389B71 'IA44' == MEDIASUBTYPE_IA44 +// +// See the DX-VA header and documentation for a description of this format. +// +OUR_GUID_ENTRY(MEDIASUBTYPE_IA44, +0x34344149, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) + + +// +// DirectX7 D3D Render Target media subtypes. +// + +// 32335237-0000-0010-8000-00AA00389B71 '7R32' == MEDIASUBTYPE_RGB32_D3D_DX7_RT +OUR_GUID_ENTRY(MEDIASUBTYPE_RGB32_D3D_DX7_RT, +0x32335237, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) + +// 36315237-0000-0010-8000-00AA00389B71 '7R16' == MEDIASUBTYPE_RGB16_D3D_DX7_RT +OUR_GUID_ENTRY(MEDIASUBTYPE_RGB16_D3D_DX7_RT, +0x36315237, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) + +// 38384137-0000-0010-8000-00AA00389B71 '7A88' == MEDIASUBTYPE_ARGB32_D3D_DX7_RT +OUR_GUID_ENTRY(MEDIASUBTYPE_ARGB32_D3D_DX7_RT, +0x38384137, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) + +// 34344137-0000-0010-8000-00AA00389B71 '7A44' == MEDIASUBTYPE_ARGB4444_D3D_DX7_RT +OUR_GUID_ENTRY(MEDIASUBTYPE_ARGB4444_D3D_DX7_RT, +0x34344137, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) + +// 35314137-0000-0010-8000-00AA00389B71 '7A15' == MEDIASUBTYPE_ARGB1555_D3D_DX7_RT +OUR_GUID_ENTRY(MEDIASUBTYPE_ARGB1555_D3D_DX7_RT, +0x35314137, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) + + +// +// DirectX9 D3D Render Target media subtypes. +// + +// 32335239-0000-0010-8000-00AA00389B71 '9R32' == MEDIASUBTYPE_RGB32_D3D_DX9_RT +OUR_GUID_ENTRY(MEDIASUBTYPE_RGB32_D3D_DX9_RT, +0x32335239, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) + +// 36315239-0000-0010-8000-00AA00389B71 '9R16' == MEDIASUBTYPE_RGB16_D3D_DX9_RT +OUR_GUID_ENTRY(MEDIASUBTYPE_RGB16_D3D_DX9_RT, +0x36315239, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) + +// 38384139-0000-0010-8000-00AA00389B71 '9A88' == MEDIASUBTYPE_ARGB32_D3D_DX9_RT +OUR_GUID_ENTRY(MEDIASUBTYPE_ARGB32_D3D_DX9_RT, +0x38384139, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) + +// 34344139-0000-0010-8000-00AA00389B71 '9A44' == MEDIASUBTYPE_ARGB4444_D3D_DX9_RT +OUR_GUID_ENTRY(MEDIASUBTYPE_ARGB4444_D3D_DX9_RT, +0x34344139, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) + +// 35314139-0000-0010-8000-00AA00389B71 '9A15' == MEDIASUBTYPE_ARGB1555_D3D_DX9_RT +OUR_GUID_ENTRY(MEDIASUBTYPE_ARGB1555_D3D_DX9_RT, +0x35314139, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) + + +#define MEDIASUBTYPE_HASALPHA(mt) ( ((mt).subtype == MEDIASUBTYPE_ARGB4444) || \ + ((mt).subtype == MEDIASUBTYPE_ARGB32) || \ + ((mt).subtype == MEDIASUBTYPE_AYUV) || \ + ((mt).subtype == MEDIASUBTYPE_AI44) || \ + ((mt).subtype == MEDIASUBTYPE_IA44) || \ + ((mt).subtype == MEDIASUBTYPE_ARGB1555) || \ + ((mt).subtype == MEDIASUBTYPE_ARGB32_D3D_DX7_RT) || \ + ((mt).subtype == MEDIASUBTYPE_ARGB4444_D3D_DX7_RT) || \ + ((mt).subtype == MEDIASUBTYPE_ARGB1555_D3D_DX7_RT) || \ + ((mt).subtype == MEDIASUBTYPE_ARGB32_D3D_DX9_RT) || \ + ((mt).subtype == MEDIASUBTYPE_ARGB4444_D3D_DX9_RT) || \ + ((mt).subtype == MEDIASUBTYPE_ARGB1555_D3D_DX9_RT) ) + +#define MEDIASUBTYPE_HASALPHA7(mt) (((mt).subtype == MEDIASUBTYPE_ARGB32_D3D_DX7_RT) || \ + ((mt).subtype == MEDIASUBTYPE_ARGB4444_D3D_DX7_RT) || \ + ((mt).subtype == MEDIASUBTYPE_ARGB1555_D3D_DX7_RT) ) + +#define MEDIASUBTYPE_D3D_DX7_RT(mt) (((mt).subtype == MEDIASUBTYPE_ARGB32_D3D_DX7_RT) || \ + ((mt).subtype == MEDIASUBTYPE_ARGB4444_D3D_DX7_RT) || \ + ((mt).subtype == MEDIASUBTYPE_ARGB1555_D3D_DX7_RT) || \ + ((mt).subtype == MEDIASUBTYPE_RGB32_D3D_DX7_RT) || \ + ((mt).subtype == MEDIASUBTYPE_RGB16_D3D_DX7_RT)) + +#define MEDIASUBTYPE_HASALPHA9(mt) (((mt).subtype == MEDIASUBTYPE_ARGB32_D3D_DX9_RT) || \ + ((mt).subtype == MEDIASUBTYPE_ARGB4444_D3D_DX9_RT) || \ + ((mt).subtype == MEDIASUBTYPE_ARGB1555_D3D_DX9_RT) ) + + +#define MEDIASUBTYPE_D3D_DX9_RT(mt) (((mt).subtype == MEDIASUBTYPE_ARGB32_D3D_DX9_RT) || \ + ((mt).subtype == MEDIASUBTYPE_ARGB4444_D3D_DX9_RT) || \ + ((mt).subtype == MEDIASUBTYPE_ARGB1555_D3D_DX9_RT) || \ + ((mt).subtype == MEDIASUBTYPE_RGB32_D3D_DX9_RT) || \ + ((mt).subtype == MEDIASUBTYPE_RGB16_D3D_DX9_RT)) + + +// +// DX-VA uncompressed surface formats +// + +// 32315659-0000-0010-8000-00AA00389B71 'YV12' == MEDIASUBTYPE_YV12 +OUR_GUID_ENTRY(MEDIASUBTYPE_YV12, +0x32315659, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) + +// 3231564E-0000-0010-8000-00AA00389B71 'NV12' == MEDIASUBTYPE_NV12 +OUR_GUID_ENTRY(MEDIASUBTYPE_NV12, +0x3231564E, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) + +// 31434D49-0000-0010-8000-00AA00389B71 'IMC1' == MEDIASUBTYPE_IMC1 +OUR_GUID_ENTRY(MEDIASUBTYPE_IMC1, +0x31434D49, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) + +// 32434d49-0000-0010-8000-00AA00389B71 'IMC2' == MEDIASUBTYPE_IMC2 +OUR_GUID_ENTRY(MEDIASUBTYPE_IMC2, +0x32434D49, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) + +// 33434d49-0000-0010-8000-00AA00389B71 'IMC3' == MEDIASUBTYPE_IMC3 +OUR_GUID_ENTRY(MEDIASUBTYPE_IMC3, +0x33434D49, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) + +// 34434d49-0000-0010-8000-00AA00389B71 'IMC4' == MEDIASUBTYPE_IMC4 +OUR_GUID_ENTRY(MEDIASUBTYPE_IMC4, +0x34434D49, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) + +// 30343353-0000-0010-8000-00AA00389B71 'S340' == MEDIASUBTYPE_S340 +OUR_GUID_ENTRY(MEDIASUBTYPE_S340, +0x30343353, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) + +// 32343353-0000-0010-8000-00AA00389B71 'S342' == MEDIASUBTYPE_S342 +OUR_GUID_ENTRY(MEDIASUBTYPE_S342, +0x32343353, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) + + +// e436eb7f-524f-11ce-9f53-0020af0ba770 MEDIASUBTYPE_Overlay +OUR_GUID_ENTRY(MEDIASUBTYPE_Overlay, +0xe436eb7f, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70) + +// e436eb80-524f-11ce-9f53-0020af0ba770 MEDIASUBTYPE_MPEGPacket +OUR_GUID_ENTRY(MEDIASUBTYPE_MPEG1Packet, +0xe436eb80, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70) + +// e436eb81-524f-11ce-9f53-0020af0ba770 MEDIASUBTYPE_MPEG1Payload +OUR_GUID_ENTRY(MEDIASUBTYPE_MPEG1Payload, +0xe436eb81, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70) + +// 00000050-0000-0010-8000-00AA00389B71 MEDIASUBTYPE_MPEG1AudioPayload +OUR_GUID_ENTRY(MEDIASUBTYPE_MPEG1AudioPayload, +0x00000050, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71) + +// e436eb82-524f-11ce-9f53-0020af0ba770 MEDIASUBTYPE_MPEG1SystemStream +OUR_GUID_ENTRY(MEDIATYPE_MPEG1SystemStream, +0xe436eb82, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70) + +// the next consecutive number is assigned to MEDIATYPE_Stream and appears higher up +// e436eb84-524f-11ce-9f53-0020af0ba770 MEDIASUBTYPE_MPEG1System +OUR_GUID_ENTRY(MEDIASUBTYPE_MPEG1System, +0xe436eb84, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70) + +// e436eb85-524f-11ce-9f53-0020af0ba770 MEDIASUBTYPE_MPEG1VideoCD +OUR_GUID_ENTRY(MEDIASUBTYPE_MPEG1VideoCD, +0xe436eb85, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70) + +// e436eb86-524f-11ce-9f53-0020af0ba770 MEDIASUBTYPE_MPEG1Video +OUR_GUID_ENTRY(MEDIASUBTYPE_MPEG1Video, +0xe436eb86, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70) + +// e436eb87-524f-11ce-9f53-0020af0ba770 MEDIASUBTYPE_MPEG1Audio +OUR_GUID_ENTRY(MEDIASUBTYPE_MPEG1Audio, +0xe436eb87, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70) + +// e436eb88-524f-11ce-9f53-0020af0ba770 MEDIASUBTYPE_Avi +OUR_GUID_ENTRY(MEDIASUBTYPE_Avi, +0xe436eb88, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70) + +// {3DB80F90-9412-11d1-ADED-0000F8754B99} MEDIASUBTYPE_Asf +OUR_GUID_ENTRY(MEDIASUBTYPE_Asf, +0x3db80f90, 0x9412, 0x11d1, 0xad, 0xed, 0x0, 0x0, 0xf8, 0x75, 0x4b, 0x99) + +// e436eb89-524f-11ce-9f53-0020af0ba770 MEDIASUBTYPE_QTMovie +OUR_GUID_ENTRY(MEDIASUBTYPE_QTMovie, +0xe436eb89, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70) + +// 617a7072-0000-0010-8000-00AA00389B71 MEDIASUBTYPE_Rpza +OUR_GUID_ENTRY(MEDIASUBTYPE_QTRpza, +0x617a7072, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) + +// 20636d73-0000-0010-8000-00AA00389B71 MEDIASUBTYPE_Smc +OUR_GUID_ENTRY(MEDIASUBTYPE_QTSmc, +0x20636d73, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) + +// 20656c72-0000-0010-8000-00AA00389B71 MEDIASUBTYPE_Rle +OUR_GUID_ENTRY(MEDIASUBTYPE_QTRle, +0x20656c72, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) + +// 6765706a-0000-0010-8000-00AA00389B71 MEDIASUBTYPE_Jpeg +OUR_GUID_ENTRY(MEDIASUBTYPE_QTJpeg, +0x6765706a, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) + +// e436eb8a-524f-11ce-9f53-0020af0ba770 MEDIASUBTYPE_PCMAudio_Obsolete +OUR_GUID_ENTRY(MEDIASUBTYPE_PCMAudio_Obsolete, +0xe436eb8a, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70) + +// 00000001-0000-0010-8000-00AA00389B71 MEDIASUBTYPE_PCM +OUR_GUID_ENTRY(MEDIASUBTYPE_PCM, +0x00000001, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71) + +// e436eb8b-524f-11ce-9f53-0020af0ba770 MEDIASUBTYPE_WAVE +OUR_GUID_ENTRY(MEDIASUBTYPE_WAVE, +0xe436eb8b, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70) + +// e436eb8c-524f-11ce-9f53-0020af0ba770 MEDIASUBTYPE_AU +OUR_GUID_ENTRY(MEDIASUBTYPE_AU, +0xe436eb8c, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70) + +// e436eb8d-524f-11ce-9f53-0020af0ba770 MEDIASUBTYPE_AIFF +OUR_GUID_ENTRY(MEDIASUBTYPE_AIFF, +0xe436eb8d, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70) + +// 64(d)73(s)76(v)64(d)-0000-0010-8000-00AA00389B71 'dvsd' == MEDIASUBTYPE_dvsd +OUR_GUID_ENTRY(MEDIASUBTYPE_dvsd, +0x64737664, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) + +// 64(d)68(h)76(v)64(d)-0000-0010-8000-00AA00389B71 'dvhd' == MEDIASUBTYPE_dvhd +OUR_GUID_ENTRY(MEDIASUBTYPE_dvhd, +0x64687664, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) + +// 6c(l)73(s)76(v)64(d)-0000-0010-8000-00AA00389B71 'dvsl' == MEDIASUBTYPE_dvsl +OUR_GUID_ENTRY(MEDIASUBTYPE_dvsl, +0x6c737664, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) + +// 35(5)32(2)76(v)64(d)-0000-0010-8000-00AA00389B71  'dv25' ==  MEDIASUBTYPE_dv25 +OUR_GUID_ENTRY(MEDIASUBTYPE_dv25, +0x35327664, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) + +// 30(0)35(5)76(v)64(d)-0000-0010-8000-00AA00389B71  'dv50' ==  MEDIASUBTYPE_dv50 +OUR_GUID_ENTRY(MEDIASUBTYPE_dv50, +0x30357664, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) + +// 31(1)68(h)76(v)64(d)-0000-0010-8000-00AA00389B71  'dvh1' ==  MEDIASUBTYPE_dvh1 +OUR_GUID_ENTRY(MEDIASUBTYPE_dvh1, +0x31687664, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) + +// 6E8D4A22-310C-11d0-B79A-00AA003767A7 MEDIASUBTYPE_Line21_BytePair +OUR_GUID_ENTRY(MEDIASUBTYPE_Line21_BytePair, +0x6e8d4a22, 0x310c, 0x11d0, 0xb7, 0x9a, 0x0, 0xaa, 0x0, 0x37, 0x67, 0xa7) + +// 6E8D4A23-310C-11d0-B79A-00AA003767A7 MEDIASUBTYPE_Line21_GOPPacket +OUR_GUID_ENTRY(MEDIASUBTYPE_Line21_GOPPacket, +0x6e8d4a23, 0x310c, 0x11d0, 0xb7, 0x9a, 0x0, 0xaa, 0x0, 0x37, 0x67, 0xa7) + +// 6E8D4A24-310C-11d0-B79A-00AA003767A7 MEDIASUBTYPE_Line21_VBIRawData +OUR_GUID_ENTRY(MEDIASUBTYPE_Line21_VBIRawData, +0x6e8d4a24, 0x310c, 0x11d0, 0xb7, 0x9a, 0x0, 0xaa, 0x0, 0x37, 0x67, 0xa7) + +// F72A76E3-EB0A-11D0-ACE4-0000C0CC16BA MEDIASUBTYPE_TELETEXT +OUR_GUID_ENTRY(MEDIASUBTYPE_TELETEXT, +0xf72a76e3, 0xeb0a, 0x11d0, 0xac, 0xe4, 0x00, 0x00, 0xc0, 0xcc, 0x16, 0xba) + +// 2791D576-8E7A-466F-9E90-5D3F3083738B MEDIASUBTYPE_WSS +OUR_GUID_ENTRY(MEDIASUBTYPE_WSS, +0x2791D576, 0x8E7A, 0x466F, 0x9E, 0x90, 0x5D, 0x3F, 0x30, 0x83, 0x73, 0x8B) + +// A1B3F620-9792-4d8d-81A4-86AF25772090 MEDIASUBTYPE_VPS +OUR_GUID_ENTRY(MEDIASUBTYPE_VPS, +0xa1b3f620, 0x9792, 0x4d8d, 0x81, 0xa4, 0x86, 0xaf, 0x25, 0x77, 0x20, 0x90) + +// derived from WAVE_FORMAT_DRM +// 00000009-0000-0010-8000-00aa00389b71 +OUR_GUID_ENTRY(MEDIASUBTYPE_DRM_Audio, +0x00000009, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) + +// derived from WAVE_FORMAT_IEEE_FLOAT +// 00000003-0000-0010-8000-00aa00389b71 +OUR_GUID_ENTRY(MEDIASUBTYPE_IEEE_FLOAT, +0x00000003, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) + +// derived from WAVE_FORMAT_DOLBY_AC3_SPDIF +// 00000092-0000-0010-8000-00aa00389b71 +OUR_GUID_ENTRY(MEDIASUBTYPE_DOLBY_AC3_SPDIF, +0x00000092, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) + +// derived from WAVE_FORMAT_RAW_SPORT +// 00000240-0000-0010-8000-00aa00389b71 +OUR_GUID_ENTRY(MEDIASUBTYPE_RAW_SPORT, +0x00000240, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) + +// derived from wave format tag 0x241, call it SPDIF_TAG_241h for now +// 00000241-0000-0010-8000-00aa00389b71 +OUR_GUID_ENTRY(MEDIASUBTYPE_SPDIF_TAG_241h, +0x00000241, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71) + + + +// DirectShow DSS definitions + +// A0AF4F81-E163-11d0-BAD9-00609744111A +OUR_GUID_ENTRY(MEDIASUBTYPE_DssVideo, +0xa0af4f81, 0xe163, 0x11d0, 0xba, 0xd9, 0x0, 0x60, 0x97, 0x44, 0x11, 0x1a) + +// A0AF4F82-E163-11d0-BAD9-00609744111A +OUR_GUID_ENTRY(MEDIASUBTYPE_DssAudio, +0xa0af4f82, 0xe163, 0x11d0, 0xba, 0xd9, 0x0, 0x60, 0x97, 0x44, 0x11, 0x1a) + +// 5A9B6A40-1A22-11D1-BAD9-00609744111A +OUR_GUID_ENTRY(MEDIASUBTYPE_VPVideo, +0x5a9b6a40, 0x1a22, 0x11d1, 0xba, 0xd9, 0x0, 0x60, 0x97, 0x44, 0x11, 0x1a) + +// 5A9B6A41-1A22-11D1-BAD9-00609744111A +OUR_GUID_ENTRY(MEDIASUBTYPE_VPVBI, +0x5a9b6a41, 0x1a22, 0x11d1, 0xba, 0xd9, 0x0, 0x60, 0x97, 0x44, 0x11, 0x1a) + +// BF87B6E0-8C27-11d0-B3F0-00AA003761C5 Capture graph building +OUR_GUID_ENTRY(CLSID_CaptureGraphBuilder, +0xBF87B6E0, 0x8C27, 0x11d0, 0xB3, 0xF0, 0x0, 0xAA, 0x00, 0x37, 0x61, 0xC5) + +// BF87B6E1-8C27-11d0-B3F0-00AA003761C5 New Capture graph building +OUR_GUID_ENTRY(CLSID_CaptureGraphBuilder2, +0xBF87B6E1, 0x8C27, 0x11d0, 0xB3, 0xF0, 0x0, 0xAA, 0x00, 0x37, 0x61, 0xC5) + +// e436ebb0-524f-11ce-9f53-0020af0ba770 Prototype filtergraph +OUR_GUID_ENTRY(CLSID_ProtoFilterGraph, +0xe436ebb0, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70) + +// e436ebb1-524f-11ce-9f53-0020af0ba770 Reference clock +OUR_GUID_ENTRY(CLSID_SystemClock, +0xe436ebb1, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70) + +// e436ebb2-524f-11ce-9f53-0020af0ba770 Filter Mapper +OUR_GUID_ENTRY(CLSID_FilterMapper, +0xe436ebb2, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70) + +// e436ebb3-524f-11ce-9f53-0020af0ba770 Filter Graph +OUR_GUID_ENTRY(CLSID_FilterGraph, +0xe436ebb3, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70) + +// e436ebb8-524f-11ce-9f53-0020af0ba770 Filter Graph no thread +OUR_GUID_ENTRY(CLSID_FilterGraphNoThread, +0xe436ebb8, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70) + +// e4bbd160-4269-11ce-838d-00aa0055595a MPEG System stream +OUR_GUID_ENTRY(CLSID_MPEG1Doc, +0xe4bbd160, 0x4269, 0x11ce, 0x83, 0x8d, 0x0, 0xaa, 0x0, 0x55, 0x59, 0x5a) + +// 701722e0-8ae3-11ce-a85c-00aa002feab5 MPEG file reader +OUR_GUID_ENTRY(CLSID_FileSource, +0x701722e0, 0x8ae3, 0x11ce, 0xa8, 0x5c, 0x00, 0xaa, 0x00, 0x2f, 0xea, 0xb5) + +// 26C25940-4CA9-11ce-A828-00AA002FEAB5 Takes MPEG1 packets as input +OUR_GUID_ENTRY(CLSID_MPEG1PacketPlayer, +0x26c25940, 0x4ca9, 0x11ce, 0xa8, 0x28, 0x0, 0xaa, 0x0, 0x2f, 0xea, 0xb5) + +// 336475d0-942a-11ce-a870-00aa002feab5 MPEG splitter +OUR_GUID_ENTRY(CLSID_MPEG1Splitter, +0x336475d0, 0x942a, 0x11ce, 0xa8, 0x70, 0x00, 0xaa, 0x00, 0x2f, 0xea, 0xb5) + +// feb50740-7bef-11ce-9bd9-0000e202599c MPEG video decoder +OUR_GUID_ENTRY(CLSID_CMpegVideoCodec, +0xfeb50740, 0x7bef, 0x11ce, 0x9b, 0xd9, 0x0, 0x0, 0xe2, 0x2, 0x59, 0x9c) + +// 4a2286e0-7bef-11ce-9bd9-0000e202599c MPEG audio decoder +OUR_GUID_ENTRY(CLSID_CMpegAudioCodec, +0x4a2286e0, 0x7bef, 0x11ce, 0x9b, 0xd9, 0x0, 0x0, 0xe2, 0x2, 0x59, 0x9c) + +// e30629d3-27e5-11ce-875d-00608cb78066 Text renderer +OUR_GUID_ENTRY(CLSID_TextRender, +0xe30629d3, 0x27e5, 0x11ce, 0x87, 0x5d, 0x0, 0x60, 0x8c, 0xb7, 0x80, 0x66) + + + +// {F8388A40-D5BB-11d0-BE5A-0080C706568E} +OUR_GUID_ENTRY(CLSID_InfTee, +0xf8388a40, 0xd5bb, 0x11d0, 0xbe, 0x5a, 0x0, 0x80, 0xc7, 0x6, 0x56, 0x8e) + +// 1b544c20-fd0b-11ce-8c63-00aa0044b51e Avi Stream Splitter +OUR_GUID_ENTRY(CLSID_AviSplitter, +0x1b544c20, 0xfd0b, 0x11ce, 0x8c, 0x63, 0x0, 0xaa, 0x00, 0x44, 0xb5, 0x1e) + +// 1b544c21-fd0b-11ce-8c63-00aa0044b51e Avi File Reader +OUR_GUID_ENTRY(CLSID_AviReader, +0x1b544c21, 0xfd0b, 0x11ce, 0x8c, 0x63, 0x0, 0xaa, 0x00, 0x44, 0xb5, 0x1e) + +// 1b544c22-fd0b-11ce-8c63-00aa0044b51e Vfw 2.0 Capture Driver +OUR_GUID_ENTRY(CLSID_VfwCapture, +0x1b544c22, 0xfd0b, 0x11ce, 0x8c, 0x63, 0x0, 0xaa, 0x00, 0x44, 0xb5, 0x1e) + +OUR_GUID_ENTRY(CLSID_CaptureProperties, +0x1B544c22, 0xFD0B, 0x11ce, 0x8C, 0x63, 0x00, 0xAA, 0x00, 0x44, 0xB5, 0x1F) + +//e436ebb4-524f-11ce-9f53-0020af0ba770 Control Distributor +OUR_GUID_ENTRY(CLSID_FGControl, +0xe436ebb4, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70) + +// 44584800-F8EE-11ce-B2D4-00DD01101B85 .MOV reader (old) +OUR_GUID_ENTRY(CLSID_MOVReader, +0x44584800, 0xf8ee, 0x11ce, 0xb2, 0xd4, 0x00, 0xdd, 0x1, 0x10, 0x1b, 0x85) + +// D51BD5A0-7548-11cf-A520-0080C77EF58A QT Splitter +OUR_GUID_ENTRY(CLSID_QuickTimeParser, +0xd51bd5a0, 0x7548, 0x11cf, 0xa5, 0x20, 0x0, 0x80, 0xc7, 0x7e, 0xf5, 0x8a) + +// FDFE9681-74A3-11d0-AFA7-00AA00B67A42 QT Decoder +OUR_GUID_ENTRY(CLSID_QTDec, +0xfdfe9681, 0x74a3, 0x11d0, 0xaf, 0xa7, 0x0, 0xaa, 0x0, 0xb6, 0x7a, 0x42) + +// D3588AB0-0781-11ce-B03A-0020AF0BA770 AVIFile-based reader +OUR_GUID_ENTRY(CLSID_AVIDoc, +0xd3588ab0, 0x0781, 0x11ce, 0xb0, 0x3a, 0x00, 0x20, 0xaf, 0xb, 0xa7, 0x70) + +// 70e102b0-5556-11ce-97c0-00aa0055595a Video renderer +OUR_GUID_ENTRY(CLSID_VideoRenderer, +0x70e102b0, 0x5556, 0x11ce, 0x97, 0xc0, 0x00, 0xaa, 0x00, 0x55, 0x59, 0x5a) + +// 1643e180-90f5-11ce-97d5-00aa0055595a Colour space convertor +OUR_GUID_ENTRY(CLSID_Colour, +0x1643e180, 0x90f5, 0x11ce, 0x97, 0xd5, 0x00, 0xaa, 0x00, 0x55, 0x59, 0x5a) + +// 1da08500-9edc-11cf-bc10-00aa00ac74f6 VGA 16 color ditherer +OUR_GUID_ENTRY(CLSID_Dither, +0x1da08500, 0x9edc, 0x11cf, 0xbc, 0x10, 0x00, 0xaa, 0x00, 0xac, 0x74, 0xf6) + +// 07167665-5011-11cf-BF33-00AA0055595A Modex video renderer +OUR_GUID_ENTRY(CLSID_ModexRenderer, +0x7167665, 0x5011, 0x11cf, 0xbf, 0x33, 0x0, 0xaa, 0x0, 0x55, 0x59, 0x5a) + +// e30629d1-27e5-11ce-875d-00608cb78066 Waveout audio renderer +OUR_GUID_ENTRY(CLSID_AudioRender, +0xe30629d1, 0x27e5, 0x11ce, 0x87, 0x5d, 0x0, 0x60, 0x8c, 0xb7, 0x80, 0x66) + +// 05589faf-c356-11ce-bf01-00aa0055595a Audio Renderer Property Page +OUR_GUID_ENTRY(CLSID_AudioProperties, +0x05589faf, 0xc356, 0x11ce, 0xbf, 0x01, 0x0, 0xaa, 0x0, 0x55, 0x59, 0x5a) + +// 79376820-07D0-11cf-A24D-0020AFD79767 DSound audio renderer +OUR_GUID_ENTRY(CLSID_DSoundRender, +0x79376820, 0x07D0, 0x11CF, 0xA2, 0x4D, 0x0, 0x20, 0xAF, 0xD7, 0x97, 0x67) + +// e30629d2-27e5-11ce-875d-00608cb78066 Wavein audio recorder +OUR_GUID_ENTRY(CLSID_AudioRecord, +0xe30629d2, 0x27e5, 0x11ce, 0x87, 0x5d, 0x0, 0x60, 0x8c, 0xb7, 0x80, 0x66) + +// {2CA8CA52-3C3F-11d2-B73D-00C04FB6BD3D} IAMAudioInputMixer property page +OUR_GUID_ENTRY(CLSID_AudioInputMixerProperties, +0x2ca8ca52, 0x3c3f, 0x11d2, 0xb7, 0x3d, 0x0, 0xc0, 0x4f, 0xb6, 0xbd, 0x3d) + +// {CF49D4E0-1115-11ce-B03A-0020AF0BA770} AVI Decoder +OUR_GUID_ENTRY(CLSID_AVIDec, +0xcf49d4e0, 0x1115, 0x11ce, 0xb0, 0x3a, 0x0, 0x20, 0xaf, 0xb, 0xa7, 0x70) + +// {A888DF60-1E90-11cf-AC98-00AA004C0FA9} AVI ICDraw* wrapper +OUR_GUID_ENTRY(CLSID_AVIDraw, +0xa888df60, 0x1e90, 0x11cf, 0xac, 0x98, 0x0, 0xaa, 0x0, 0x4c, 0xf, 0xa9) + +// 6a08cf80-0e18-11cf-a24d-0020afd79767 ACM Wrapper +OUR_GUID_ENTRY(CLSID_ACMWrapper, +0x6a08cf80, 0x0e18, 0x11cf, 0xa2, 0x4d, 0x0, 0x20, 0xaf, 0xd7, 0x97, 0x67) + +// {e436ebb5-524f-11ce-9f53-0020af0ba770} Async File Reader +OUR_GUID_ENTRY(CLSID_AsyncReader, +0xe436ebb5, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70) + +// {e436ebb6-524f-11ce-9f53-0020af0ba770} Async URL Reader +OUR_GUID_ENTRY(CLSID_URLReader, +0xe436ebb6, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70) + +// {e436ebb7-524f-11ce-9f53-0020af0ba770} IPersistMoniker PID +OUR_GUID_ENTRY(CLSID_PersistMonikerPID, +0xe436ebb7, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70) + +// {D76E2820-1563-11cf-AC98-00AA004C0FA9} +OUR_GUID_ENTRY(CLSID_AVICo, +0xd76e2820, 0x1563, 0x11cf, 0xac, 0x98, 0x0, 0xaa, 0x0, 0x4c, 0xf, 0xa9) + +// {8596E5F0-0DA5-11d0-BD21-00A0C911CE86} +OUR_GUID_ENTRY(CLSID_FileWriter, +0x8596e5f0, 0xda5, 0x11d0, 0xbd, 0x21, 0x0, 0xa0, 0xc9, 0x11, 0xce, 0x86) + +// {E2510970-F137-11CE-8B67-00AA00A3F1A6} AVI mux filter +OUR_GUID_ENTRY(CLSID_AviDest, +0xe2510970, 0xf137, 0x11ce, 0x8b, 0x67, 0x0, 0xaa, 0x0, 0xa3, 0xf1, 0xa6) + +// {C647B5C0-157C-11d0-BD23-00A0C911CE86} +OUR_GUID_ENTRY(CLSID_AviMuxProptyPage, +0xc647b5c0, 0x157c, 0x11d0, 0xbd, 0x23, 0x0, 0xa0, 0xc9, 0x11, 0xce, 0x86) + +// {0A9AE910-85C0-11d0-BD42-00A0C911CE86} +OUR_GUID_ENTRY(CLSID_AviMuxProptyPage1, +0xa9ae910, 0x85c0, 0x11d0, 0xbd, 0x42, 0x0, 0xa0, 0xc9, 0x11, 0xce, 0x86) + +// {07b65360-c445-11ce-afde-00aa006c14f4} +OUR_GUID_ENTRY(CLSID_AVIMIDIRender, +0x07b65360, 0xc445, 0x11ce, 0xaf, 0xde, 0x00, 0xaa, 0x00, 0x6c, 0x14, 0xf4) + +// {187463A0-5BB7-11d3-ACBE-0080C75E246E} WMSDK-based ASF reader +OUR_GUID_ENTRY(CLSID_WMAsfReader, +0x187463a0, 0x5bb7, 0x11d3, 0xac, 0xbe, 0x0, 0x80, 0xc7, 0x5e, 0x24, 0x6e) + +// {7c23220e-55bb-11d3-8b16-00c04fb6bd3d} WMSDK-based ASF writer +OUR_GUID_ENTRY(CLSID_WMAsfWriter, +0x7c23220e, 0x55bb, 0x11d3, 0x8b, 0x16, 0x0, 0xc0, 0x4f, 0xb6, 0xbd, 0x3d) + +// {afb6c280-2c41-11d3-8a60-0000f81e0e4a} +OUR_GUID_ENTRY(CLSID_MPEG2Demultiplexer, +0xafb6c280, 0x2c41, 0x11d3, 0x8a, 0x60, 0x00, 0x00, 0xf8, 0x1e, 0x0e, 0x4a) + +// {3ae86b20-7be8-11d1-abe6-00a0c905f375} +OUR_GUID_ENTRY(CLSID_MMSPLITTER, +0x3ae86b20, 0x7be8, 0x11d1, 0xab, 0xe6, 0x00, 0xa0, 0xc9, 0x05, 0xf3, 0x75) + +// {2DB47AE5-CF39-43c2-B4D6-0CD8D90946F4} +OUR_GUID_ENTRY(CLSID_StreamBufferSink, +0x2db47ae5, 0xcf39, 0x43c2, 0xb4, 0xd6, 0xc, 0xd8, 0xd9, 0x9, 0x46, 0xf4) + +// {C9F5FE02-F851-4eb5-99EE-AD602AF1E619} +OUR_GUID_ENTRY(CLSID_StreamBufferSource, +0xc9f5fe02, 0xf851, 0x4eb5, 0x99, 0xee, 0xad, 0x60, 0x2a, 0xf1, 0xe6, 0x19) + +// {FA8A68B2-C864-4ba2-AD53-D3876A87494B} +OUR_GUID_ENTRY(CLSID_StreamBufferConfig, +0xfa8a68b2, 0xc864, 0x4ba2, 0xad, 0x53, 0xd3, 0x87, 0x6a, 0x87, 0x49, 0x4b) + +// {6CFAD761-735D-4aa5-8AFC-AF91A7D61EBA} +OUR_GUID_ENTRY(CLSID_Mpeg2VideoStreamAnalyzer, +0x6cfad761, 0x735d, 0x4aa5, 0x8a, 0xfc, 0xaf, 0x91, 0xa7, 0xd6, 0x1e, 0xba) + +// {CCAA63AC-1057-4778-AE92-1206AB9ACEE6} +OUR_GUID_ENTRY(CLSID_StreamBufferRecordingAttributes, +0xccaa63ac, 0x1057, 0x4778, 0xae, 0x92, 0x12, 0x6, 0xab, 0x9a, 0xce, 0xe6) + +// {D682C4BA-A90A-42fe-B9E1-03109849C423} +OUR_GUID_ENTRY(CLSID_StreamBufferComposeRecording, +0xd682c4ba, 0xa90a, 0x42fe, 0xb9, 0xe1, 0x3, 0x10, 0x98, 0x49, 0xc4, 0x23) + +// {B1B77C00-C3E4-11cf-AF79-00AA00B67A42} DV video decoder +OUR_GUID_ENTRY(CLSID_DVVideoCodec, +0xb1b77c00, 0xc3e4, 0x11cf, 0xaf, 0x79, 0x0, 0xaa, 0x0, 0xb6, 0x7a, 0x42) + +// {13AA3650-BB6F-11d0-AFB9-00AA00B67A42} DV video encoder +OUR_GUID_ENTRY(CLSID_DVVideoEnc, +0x13aa3650, 0xbb6f, 0x11d0, 0xaf, 0xb9, 0x0, 0xaa, 0x0, 0xb6, 0x7a, 0x42) + +// {4EB31670-9FC6-11cf-AF6E-00AA00B67A42} DV splitter +OUR_GUID_ENTRY(CLSID_DVSplitter, +0x4eb31670, 0x9fc6, 0x11cf, 0xaf, 0x6e, 0x0, 0xaa, 0x0, 0xb6, 0x7a, 0x42) + +// {129D7E40-C10D-11d0-AFB9-00AA00B67A42} DV muxer +OUR_GUID_ENTRY(CLSID_DVMux, +0x129d7e40, 0xc10d, 0x11d0, 0xaf, 0xb9, 0x0, 0xaa, 0x0, 0xb6, 0x7a, 0x42) + +// {060AF76C-68DD-11d0-8FC1-00C04FD9189D} +OUR_GUID_ENTRY(CLSID_SeekingPassThru, +0x60af76c, 0x68dd, 0x11d0, 0x8f, 0xc1, 0x0, 0xc0, 0x4f, 0xd9, 0x18, 0x9d) + +// 6E8D4A20-310C-11d0-B79A-00AA003767A7 Line21 (CC) Decoder +OUR_GUID_ENTRY(CLSID_Line21Decoder, +0x6e8d4a20, 0x310c, 0x11d0, 0xb7, 0x9a, 0x0, 0xaa, 0x0, 0x37, 0x67, 0xa7) + +// E4206432-01A1-4BEE-B3E1-3702C8EDC574 Line21 (CC) Decoder v2 +OUR_GUID_ENTRY(CLSID_Line21Decoder2, +0xe4206432, 0x01a1, 0x4bee, 0xb3, 0xe1, 0x37, 0x02, 0xc8, 0xed, 0xc5, 0x74) + +// {CD8743A1-3736-11d0-9E69-00C04FD7C15B} +OUR_GUID_ENTRY(CLSID_OverlayMixer, +0xcd8743a1, 0x3736, 0x11d0, 0x9e, 0x69, 0x0, 0xc0, 0x4f, 0xd7, 0xc1, 0x5b) + +// {814B9800-1C88-11d1-BAD9-00609744111A} +OUR_GUID_ENTRY(CLSID_VBISurfaces, +0x814b9800, 0x1c88, 0x11d1, 0xba, 0xd9, 0x0, 0x60, 0x97, 0x44, 0x11, 0x1a) + +// {70BC06E0-5666-11d3-A184-00105AEF9F33} WST Teletext Decoder +OUR_GUID_ENTRY(CLSID_WSTDecoder, +0x70bc06e0, 0x5666, 0x11d3, 0xa1, 0x84, 0x0, 0x10, 0x5a, 0xef, 0x9f, 0x33) + +// {301056D0-6DFF-11d2-9EEB-006008039E37} +OUR_GUID_ENTRY(CLSID_MjpegDec, +0x301056d0, 0x6dff, 0x11d2, 0x9e, 0xeb, 0x0, 0x60, 0x8, 0x3, 0x9e, 0x37) + +// {B80AB0A0-7416-11d2-9EEB-006008039E37} +OUR_GUID_ENTRY(CLSID_MJPGEnc, +0xb80ab0a0, 0x7416, 0x11d2, 0x9e, 0xeb, 0x0, 0x60, 0x8, 0x3, 0x9e, 0x37) + + + +// pnp objects and categories +// 62BE5D10-60EB-11d0-BD3B-00A0C911CE86 ICreateDevEnum +OUR_GUID_ENTRY(CLSID_SystemDeviceEnum, +0x62BE5D10,0x60EB,0x11d0,0xBD,0x3B,0x00,0xA0,0xC9,0x11,0xCE,0x86) + +// 4315D437-5B8C-11d0-BD3B-00A0C911CE86 +OUR_GUID_ENTRY(CLSID_CDeviceMoniker, +0x4315D437,0x5B8C,0x11d0,0xBD,0x3B,0x00,0xA0,0xC9,0x11,0xCE,0x86) + +// 860BB310-5D01-11d0-BD3B-00A0C911CE86 Video capture category +OUR_GUID_ENTRY(CLSID_VideoInputDeviceCategory, +0x860BB310,0x5D01,0x11d0,0xBD,0x3B,0x00,0xA0,0xC9,0x11,0xCE,0x86) +OUR_GUID_ENTRY(CLSID_CVidCapClassManager, +0x860BB310,0x5D01,0x11d0,0xBD,0x3B,0x00,0xA0,0xC9,0x11,0xCE,0x86) + +// 083863F1-70DE-11d0-BD40-00A0C911CE86 Filter category +OUR_GUID_ENTRY(CLSID_LegacyAmFilterCategory, +0x083863F1,0x70DE,0x11d0,0xBD,0x40,0x00,0xA0,0xC9,0x11,0xCE,0x86) +OUR_GUID_ENTRY(CLSID_CQzFilterClassManager, +0x083863F1,0x70DE,0x11d0,0xBD,0x40,0x00,0xA0,0xC9,0x11,0xCE,0x86) + +// 33D9A760-90C8-11d0-BD43-00A0C911CE86 +OUR_GUID_ENTRY(CLSID_VideoCompressorCategory, +0x33d9a760, 0x90c8, 0x11d0, 0xbd, 0x43, 0x0, 0xa0, 0xc9, 0x11, 0xce, 0x86) +OUR_GUID_ENTRY(CLSID_CIcmCoClassManager, +0x33d9a760, 0x90c8, 0x11d0, 0xbd, 0x43, 0x0, 0xa0, 0xc9, 0x11, 0xce, 0x86) + +// 33D9A761-90C8-11d0-BD43-00A0C911CE86 +OUR_GUID_ENTRY(CLSID_AudioCompressorCategory, +0x33d9a761, 0x90c8, 0x11d0, 0xbd, 0x43, 0x0, 0xa0, 0xc9, 0x11, 0xce, 0x86) +OUR_GUID_ENTRY(CLSID_CAcmCoClassManager, +0x33d9a761, 0x90c8, 0x11d0, 0xbd, 0x43, 0x0, 0xa0, 0xc9, 0x11, 0xce, 0x86) + +// 33D9A762-90C8-11d0-BD43-00A0C911CE86 Audio source cateogry +OUR_GUID_ENTRY(CLSID_AudioInputDeviceCategory, +0x33d9a762, 0x90c8, 0x11d0, 0xbd, 0x43, 0x0, 0xa0, 0xc9, 0x11, 0xce, 0x86) +OUR_GUID_ENTRY(CLSID_CWaveinClassManager, +0x33d9a762, 0x90c8, 0x11d0, 0xbd, 0x43, 0x0, 0xa0, 0xc9, 0x11, 0xce, 0x86) + +// E0F158E1-CB04-11d0-BD4E-00A0C911CE86 Audio renderer category +OUR_GUID_ENTRY(CLSID_AudioRendererCategory, +0xe0f158e1, 0xcb04, 0x11d0, 0xbd, 0x4e, 0x0, 0xa0, 0xc9, 0x11, 0xce, 0x86) +OUR_GUID_ENTRY(CLSID_CWaveOutClassManager, +0xe0f158e1, 0xcb04, 0x11d0, 0xbd, 0x4e, 0x0, 0xa0, 0xc9, 0x11, 0xce, 0x86) + +// 4EFE2452-168A-11d1-BC76-00C04FB9453B Midi renderer category +OUR_GUID_ENTRY(CLSID_MidiRendererCategory, +0x4EfE2452, 0x168A, 0x11d1, 0xBC, 0x76, 0x0, 0xc0, 0x4F, 0xB9, 0x45, 0x3B) +OUR_GUID_ENTRY(CLSID_CMidiOutClassManager, +0x4EfE2452, 0x168A, 0x11d1, 0xBC, 0x76, 0x0, 0xc0, 0x4F, 0xB9, 0x45, 0x3B) + +// CC7BFB41-F175-11d1-A392-00E0291F3959 External Renderers Category +OUR_GUID_ENTRY(CLSID_TransmitCategory, +0xcc7bfb41, 0xf175, 0x11d1, 0xa3, 0x92, 0x0, 0xe0, 0x29, 0x1f, 0x39, 0x59) + +// CC7BFB46-F175-11d1-A392-00E0291F3959 Device Control Filters +OUR_GUID_ENTRY(CLSID_DeviceControlCategory, +0xcc7bfb46, 0xf175, 0x11d1, 0xa3, 0x92, 0x0, 0xe0, 0x29, 0x1f, 0x39, 0x59) + +// DA4E3DA0-D07D-11d0-BD50-00A0C911CE86 +OUR_GUID_ENTRY(CLSID_ActiveMovieCategories, +0xda4e3da0, 0xd07d, 0x11d0, 0xbd, 0x50, 0x0, 0xa0, 0xc9, 0x11, 0xce, 0x86) + +// 2721AE20-7E70-11D0-A5D6-28DB04C10000 +OUR_GUID_ENTRY(CLSID_DVDHWDecodersCategory, +0x2721AE20, 0x7E70, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00) + +// 7D22E920-5CA9-4787-8C2B-A6779BD11781 Encoder API encoder category +OUR_GUID_ENTRY(CLSID_MediaEncoderCategory, +0x7D22E920, 0x5CA9, 0x4787, 0x8C, 0x2B, 0xA6, 0x77, 0x9B, 0xD1, 0x17, 0x81) + +// 236C9559-ADCE-4736-BF72-BAB34E392196 Encoder API multiplexer category +OUR_GUID_ENTRY(CLSID_MediaMultiplexerCategory, +0x236C9559, 0xADCE, 0x4736, 0xBF, 0x72, 0xBA, 0xB3, 0x4E, 0x39, 0x21, 0x96) + +// CDA42200-BD88-11d0-BD4E-00A0C911CE86 +OUR_GUID_ENTRY(CLSID_FilterMapper2, +0xcda42200, 0xbd88, 0x11d0, 0xbd, 0x4e, 0x0, 0xa0, 0xc9, 0x11, 0xce, 0x86) + + +// 1e651cc0-b199-11d0-8212-00c04fc32c45 +OUR_GUID_ENTRY(CLSID_MemoryAllocator, +0x1e651cc0, 0xb199, 0x11d0, 0x82, 0x12, 0x00, 0xc0, 0x4f, 0xc3, 0x2c, 0x45) + +// CDBD8D00-C193-11d0-BD4E-00A0C911CE86 +OUR_GUID_ENTRY(CLSID_MediaPropertyBag, +0xcdbd8d00, 0xc193, 0x11d0, 0xbd, 0x4e, 0x0, 0xa0, 0xc9, 0x11, 0xce, 0x86) + +// FCC152B7-F372-11d0-8E00-00C04FD7C08B +OUR_GUID_ENTRY(CLSID_DvdGraphBuilder, +0xFCC152B7, 0xF372, 0x11d0, 0x8E, 0x00, 0x00, 0xC0, 0x4F, 0xD7, 0xC0, 0x8B) + +// 9B8C4620-2C1A-11d0-8493-00A02438AD48 +OUR_GUID_ENTRY(CLSID_DVDNavigator, +0x9b8c4620, 0x2c1a, 0x11d0, 0x84, 0x93, 0x0, 0xa0, 0x24, 0x38, 0xad, 0x48) + +// f963c5cf-a659-4a93-9638-caf3cd277d13 +OUR_GUID_ENTRY(CLSID_DVDState, +0xf963c5cf, 0xa659, 0x4a93, 0x96, 0x38, 0xca, 0xf3, 0xcd, 0x27, 0x7d, 0x13) + +// CC58E280-8AA1-11d1-B3F1-00AA003761C5 +OUR_GUID_ENTRY(CLSID_SmartTee, +0xcc58e280, 0x8aa1, 0x11d1, 0xb3, 0xf1, 0x0, 0xaa, 0x0, 0x37, 0x61, 0xc5) + +// -- format types --- + +// 0F6417D6-C318-11D0-A43F-00A0C9223196 FORMAT_None +OUR_GUID_ENTRY(FORMAT_None, +0x0F6417D6, 0xc318, 0x11d0, 0xa4, 0x3f, 0x00, 0xa0, 0xc9, 0x22, 0x31, 0x96) + +// 05589f80-c356-11ce-bf01-00aa0055595a FORMAT_VideoInfo +OUR_GUID_ENTRY(FORMAT_VideoInfo, +0x05589f80, 0xc356, 0x11ce, 0xbf, 0x01, 0x00, 0xaa, 0x00, 0x55, 0x59, 0x5a) + +// F72A76A0-EB0A-11d0-ACE4-0000C0CC16BA FORMAT_VideoInfo2 +OUR_GUID_ENTRY(FORMAT_VideoInfo2, +0xf72a76A0, 0xeb0a, 0x11d0, 0xac, 0xe4, 0x00, 0x00, 0xc0, 0xcc, 0x16, 0xba) + +// 05589f81-c356-11ce-bf01-00aa0055595a FORMAT_WaveFormatEx +OUR_GUID_ENTRY(FORMAT_WaveFormatEx, +0x05589f81, 0xc356, 0x11ce, 0xbf, 0x01, 0x00, 0xaa, 0x00, 0x55, 0x59, 0x5a) + +// 05589f82-c356-11ce-bf01-00aa0055595a FORMAT_MPEGVideo +OUR_GUID_ENTRY(FORMAT_MPEGVideo, +0x05589f82, 0xc356, 0x11ce, 0xbf, 0x01, 0x00, 0xaa, 0x00, 0x55, 0x59, 0x5a) + +// 05589f83-c356-11ce-bf01-00aa0055595a FORMAT_MPEGStreams +OUR_GUID_ENTRY(FORMAT_MPEGStreams, +0x05589f83, 0xc356, 0x11ce, 0xbf, 0x01, 0x00, 0xaa, 0x00, 0x55, 0x59, 0x5a) + +// 05589f84-c356-11ce-bf01-00aa0055595a FORMAT_DvInfo, DVINFO +OUR_GUID_ENTRY(FORMAT_DvInfo, +0x05589f84, 0xc356, 0x11ce, 0xbf, 0x01, 0x00, 0xaa, 0x00, 0x55, 0x59, 0x5a) + + +// -- Video related GUIDs --- + + +// 944d4c00-dd52-11ce-bf0e-00aa0055595a +OUR_GUID_ENTRY(CLSID_DirectDrawProperties, +0x944d4c00, 0xdd52, 0x11ce, 0xbf, 0x0e, 0x00, 0xaa, 0x00, 0x55, 0x59, 0x5a) + +// 59ce6880-acf8-11cf-b56e-0080c7c4b68a +OUR_GUID_ENTRY(CLSID_PerformanceProperties, +0x59ce6880, 0xacf8, 0x11cf, 0xb5, 0x6e, 0x00, 0x80, 0xc7, 0xc4, 0xb6, 0x8a) + +// 418afb70-f8b8-11ce-aac6-0020af0b99a3 +OUR_GUID_ENTRY(CLSID_QualityProperties, +0x418afb70, 0xf8b8, 0x11ce, 0xaa, 0xc6, 0x00, 0x20, 0xaf, 0x0b, 0x99, 0xa3) + +// 61ded640-e912-11ce-a099-00aa00479a58 +OUR_GUID_ENTRY(IID_IBaseVideoMixer, +0x61ded640, 0xe912, 0x11ce, 0xa0, 0x99, 0x00, 0xaa, 0x00, 0x47, 0x9a, 0x58) + +// 36d39eb0-dd75-11ce-bf0e-00aa0055595a +OUR_GUID_ENTRY(IID_IDirectDrawVideo, +0x36d39eb0, 0xdd75, 0x11ce, 0xbf, 0x0e, 0x00, 0xaa, 0x00, 0x55, 0x59, 0x5a) + +// bd0ecb0-f8e2-11ce-aac6-0020af0b99a3 +OUR_GUID_ENTRY(IID_IQualProp, +0x1bd0ecb0, 0xf8e2, 0x11ce, 0xaa, 0xc6, 0x00, 0x20, 0xaf, 0x0b, 0x99, 0xa3) + +// {CE292861-FC88-11d0-9E69-00C04FD7C15B} +OUR_GUID_ENTRY(CLSID_VPObject, +0xce292861, 0xfc88, 0x11d0, 0x9e, 0x69, 0x0, 0xc0, 0x4f, 0xd7, 0xc1, 0x5b) + +// {CE292862-FC88-11d0-9E69-00C04FD7C15B} +OUR_GUID_ENTRY(IID_IVPObject, +0xce292862, 0xfc88, 0x11d0, 0x9e, 0x69, 0x0, 0xc0, 0x4f, 0xd7, 0xc1, 0x5b) + +// {25DF12C1-3DE0-11d1-9E69-00C04FD7C15B} +OUR_GUID_ENTRY(IID_IVPControl, +0x25df12c1, 0x3de0, 0x11d1, 0x9e, 0x69, 0x0, 0xc0, 0x4f, 0xd7, 0xc1, 0x5b) + +// {814B9801-1C88-11d1-BAD9-00609744111A} +OUR_GUID_ENTRY(CLSID_VPVBIObject, +0x814b9801, 0x1c88, 0x11d1, 0xba, 0xd9, 0x0, 0x60, 0x97, 0x44, 0x11, 0x1a) + +// {814B9802-1C88-11d1-BAD9-00609744111A} +OUR_GUID_ENTRY(IID_IVPVBIObject, +0x814b9802, 0x1c88, 0x11d1, 0xba, 0xd9, 0x0, 0x60, 0x97, 0x44, 0x11, 0x1a) + +// {BC29A660-30E3-11d0-9E69-00C04FD7C15B} +OUR_GUID_ENTRY(IID_IVPConfig, +0xbc29a660, 0x30e3, 0x11d0, 0x9e, 0x69, 0x0, 0xc0, 0x4f, 0xd7, 0xc1, 0x5b) + +// {C76794A1-D6C5-11d0-9E69-00C04FD7C15B} +OUR_GUID_ENTRY(IID_IVPNotify, +0xc76794a1, 0xd6c5, 0x11d0, 0x9e, 0x69, 0x0, 0xc0, 0x4f, 0xd7, 0xc1, 0x5b) + +// {EBF47183-8764-11d1-9E69-00C04FD7C15B} +OUR_GUID_ENTRY(IID_IVPNotify2, +0xebf47183, 0x8764, 0x11d1, 0x9e, 0x69, 0x0, 0xc0, 0x4f, 0xd7, 0xc1, 0x5b) + + +// {EC529B00-1A1F-11D1-BAD9-00609744111A} +OUR_GUID_ENTRY(IID_IVPVBIConfig, +0xec529b00, 0x1a1f, 0x11d1, 0xba, 0xd9, 0x0, 0x60, 0x97, 0x44, 0x11, 0x1a) + +// {EC529B01-1A1F-11D1-BAD9-00609744111A} +OUR_GUID_ENTRY(IID_IVPVBINotify, +0xec529b01, 0x1a1f, 0x11d1, 0xba, 0xd9, 0x0, 0x60, 0x97, 0x44, 0x11, 0x1a) + +// {593CDDE1-0759-11d1-9E69-00C04FD7C15B} +OUR_GUID_ENTRY(IID_IMixerPinConfig, +0x593cdde1, 0x759, 0x11d1, 0x9e, 0x69, 0x0, 0xc0, 0x4f, 0xd7, 0xc1, 0x5b) + +// {EBF47182-8764-11d1-9E69-00C04FD7C15B} +OUR_GUID_ENTRY(IID_IMixerPinConfig2, +0xebf47182, 0x8764, 0x11d1, 0x9e, 0x69, 0x0, 0xc0, 0x4f, 0xd7, 0xc1, 0x5b) + + +// This is a real pain in the neck. The OLE GUIDs are separated out into a +// different file from the main header files. The header files can then be +// included multiple times and are protected with the following statements, +// +// #ifndef __SOMETHING_DEFINED__ +// #define __SOMETHING_DEFINED__ +// all the header contents +// #endif // __SOMETHING_DEFINED__ +// +// When the actual GUIDs are to be defined (using initguid) the GUID header +// file can then be included to really define them just once. Unfortunately +// DirectDraw has the GUIDs defined in the main header file. So if the base +// classes bring in ddraw.h to get at the DirectDraw structures and so on +// nobody would then be able to really include ddraw.h to allocate the GUID +// memory structures because of the aforementioned header file protection +// Therefore the DirectDraw GUIDs are defined and allocated for real here + +#ifndef __DDRAW_INCLUDED__ +OUR_GUID_ENTRY(CLSID_DirectDraw, 0xD7B70EE0,0x4340,0x11CF,0xB0,0x63,0x00,0x20,0xAF,0xC2,0xCD,0x35) +OUR_GUID_ENTRY(CLSID_DirectDrawClipper, 0x593817A0,0x7DB3,0x11CF,0xA2,0xDE,0x00,0xAA,0x00,0xb9,0x33,0x56) +OUR_GUID_ENTRY(IID_IDirectDraw, 0x6C14DB80,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60) +OUR_GUID_ENTRY(IID_IDirectDraw2, 0xB3A6F3E0,0x2B43,0x11CF,0xA2,0xDE,0x00,0xAA,0x00,0xB9,0x33,0x56) +OUR_GUID_ENTRY(IID_IDirectDrawSurface, 0x6C14DB81,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60) +OUR_GUID_ENTRY(IID_IDirectDrawSurface2, 0x57805885,0x6eec,0x11cf,0x94,0x41,0xa8,0x23,0x03,0xc1,0x0e,0x27) +OUR_GUID_ENTRY(IID_IDirectDrawSurface3, 0xDA044E00,0x69B2,0x11D0,0xA1,0xD5,0x00,0xAA,0x00,0xB8,0xDF,0xBB) +OUR_GUID_ENTRY(IID_IDirectDrawSurface4, 0x0B2B8630,0xAD35,0x11D0,0x8E,0xA6,0x00,0x60,0x97,0x97,0xEA,0x5B) +OUR_GUID_ENTRY(IID_IDirectDrawSurface7, 0x06675a80,0x3b9b,0x11d2,0xb9,0x2f,0x00,0x60,0x97,0x97,0xea,0x5b) +OUR_GUID_ENTRY(IID_IDirectDrawPalette, 0x6C14DB84,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60) +OUR_GUID_ENTRY(IID_IDirectDrawClipper, 0x6C14DB85,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60) +OUR_GUID_ENTRY(IID_IDirectDrawColorControl, 0x4B9F0EE0,0x0D7E,0x11D0,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8) +#endif + +#ifndef __DVP_INCLUDED__ +OUR_GUID_ENTRY(IID_IDDVideoPortContainer, 0x6C142760,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60) +#endif + +#ifndef __DDKM_INCLUDED__ +OUR_GUID_ENTRY(IID_IDirectDrawKernel, 0x8D56C120,0x6A08,0x11D0,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8) +OUR_GUID_ENTRY(IID_IDirectDrawSurfaceKernel, 0x60755DA0,0x6A40,0x11D0,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8) +#endif + +// 0618aa30-6bc4-11cf-bf36-00aa0055595a +OUR_GUID_ENTRY(CLSID_ModexProperties, +0x0618aa30, 0x6bc4, 0x11cf, 0xbf, 0x36, 0x00, 0xaa, 0x00, 0x55, 0x59, 0x5a) + +// dd1d7110-7836-11cf-bf47-00aa0055595a +OUR_GUID_ENTRY(IID_IFullScreenVideo, +0xdd1d7110, 0x7836, 0x11cf, 0xbf, 0x47, 0x00, 0xaa, 0x00, 0x55, 0x59, 0x5a) + +// 53479470-f1dd-11cf-bc42-00aa00ac74f6 +OUR_GUID_ENTRY(IID_IFullScreenVideoEx, +0x53479470, 0xf1dd, 0x11cf, 0xbc, 0x42, 0x00, 0xaa, 0x00, 0xac, 0x74, 0xf6) + +// {101193C0-0BFE-11d0-AF91-00AA00B67A42} DV decoder property +OUR_GUID_ENTRY(CLSID_DVDecPropertiesPage, +0x101193c0, 0xbfe, 0x11d0, 0xaf, 0x91, 0x0, 0xaa, 0x0, 0xb6, 0x7a, 0x42) + +// {4150F050-BB6F-11d0-AFB9-00AA00B67A42} DV encoder property +OUR_GUID_ENTRY(CLSID_DVEncPropertiesPage, +0x4150f050, 0xbb6f, 0x11d0, 0xaf, 0xb9, 0x0, 0xaa, 0x0, 0xb6, 0x7a, 0x42) + +// {4DB880E0-C10D-11d0-AFB9-00AA00B67A42} DV Muxer property +OUR_GUID_ENTRY(CLSID_DVMuxPropertyPage, +0x4db880e0, 0xc10d, 0x11d0, 0xaf, 0xb9, 0x0, 0xaa, 0x0, 0xb6, 0x7a, 0x42) + + +// -- Direct Sound Audio related GUID --- + +// 546F4260-D53E-11cf-B3F0-00AA003761C5 +OUR_GUID_ENTRY(IID_IAMDirectSound, +0x546f4260, 0xd53e, 0x11cf, 0xb3, 0xf0, 0x0, 0xaa, 0x0, 0x37, 0x61, 0xc5) + +// -- MPEG audio decoder properties + +// {b45dd570-3c77-11d1-abe1-00a0c905f375} +OUR_GUID_ENTRY(IID_IMpegAudioDecoder, +0xb45dd570, 0x3c77, 0x11d1, 0xab, 0xe1, 0x00, 0xa0, 0xc9, 0x05, 0xf3, 0x75) + +// --- Line21 Decoder interface GUID --- + +// 6E8D4A21-310C-11d0-B79A-00AA003767A7 IID_IAMLine21Decoder +OUR_GUID_ENTRY(IID_IAMLine21Decoder, +0x6e8d4a21, 0x310c, 0x11d0, 0xb7, 0x9a, 0x0, 0xaa, 0x0, 0x37, 0x67, 0xa7) + +// --- WST Decoder interface GUID --- + +// C056DE21-75C2-11d3-A184-00105AEF9F33 IID_IAMWstDecoder +OUR_GUID_ENTRY(IID_IAMWstDecoder, +0xc056de21, 0x75c2, 0x11d3, 0xa1, 0x84, 0x0, 0x10, 0x5a, 0xef, 0x9f, 0x33) + +// --- WST Decoder Property Page --- + +// 04E27F80-91E4-11d3-A184-00105AEF9F33 WST Decoder Property Page +OUR_GUID_ENTRY(CLSID_WstDecoderPropertyPage, +0x4e27f80, 0x91e4, 0x11d3, 0xa1, 0x84, 0x0, 0x10, 0x5a, 0xef, 0x9f, 0x33) + + +// -- Analog video related GUIDs --- + + +// -- format types --- +// 0482DDE0-7817-11cf-8A03-00AA006ECB65 +OUR_GUID_ENTRY(FORMAT_AnalogVideo, +0x482dde0, 0x7817, 0x11cf, 0x8a, 0x3, 0x0, 0xaa, 0x0, 0x6e, 0xcb, 0x65) + + +// -- major type, Analog Video + +// 0482DDE1-7817-11cf-8A03-00AA006ECB65 +OUR_GUID_ENTRY(MEDIATYPE_AnalogVideo, +0x482dde1, 0x7817, 0x11cf, 0x8a, 0x3, 0x0, 0xaa, 0x0, 0x6e, 0xcb, 0x65) + + +// -- Analog Video subtypes, NTSC + +// 0482DDE2-7817-11cf-8A03-00AA006ECB65 +OUR_GUID_ENTRY(MEDIASUBTYPE_AnalogVideo_NTSC_M, +0x482dde2, 0x7817, 0x11cf, 0x8a, 0x3, 0x0, 0xaa, 0x0, 0x6e, 0xcb, 0x65) + +// -- Analog Video subtypes, PAL + +// 0482DDE5-7817-11cf-8A03-00AA006ECB65 +OUR_GUID_ENTRY(MEDIASUBTYPE_AnalogVideo_PAL_B, +0x482dde5, 0x7817, 0x11cf, 0x8a, 0x3, 0x0, 0xaa, 0x0, 0x6e, 0xcb, 0x65) + +// 0482DDE6-7817-11cf-8A03-00AA006ECB65 +OUR_GUID_ENTRY(MEDIASUBTYPE_AnalogVideo_PAL_D, +0x482dde6, 0x7817, 0x11cf, 0x8a, 0x3, 0x0, 0xaa, 0x0, 0x6e, 0xcb, 0x65) + +// 0482DDE7-7817-11cf-8A03-00AA006ECB65 +OUR_GUID_ENTRY(MEDIASUBTYPE_AnalogVideo_PAL_G, +0x482dde7, 0x7817, 0x11cf, 0x8a, 0x3, 0x0, 0xaa, 0x0, 0x6e, 0xcb, 0x65) + +// 0482DDE8-7817-11cf-8A03-00AA006ECB65 +OUR_GUID_ENTRY(MEDIASUBTYPE_AnalogVideo_PAL_H, +0x482dde8, 0x7817, 0x11cf, 0x8a, 0x3, 0x0, 0xaa, 0x0, 0x6e, 0xcb, 0x65) + +// 0482DDE9-7817-11cf-8A03-00AA006ECB65 +OUR_GUID_ENTRY(MEDIASUBTYPE_AnalogVideo_PAL_I, +0x482dde9, 0x7817, 0x11cf, 0x8a, 0x3, 0x0, 0xaa, 0x0, 0x6e, 0xcb, 0x65) + +// 0482DDEA-7817-11cf-8A03-00AA006ECB65 +OUR_GUID_ENTRY(MEDIASUBTYPE_AnalogVideo_PAL_M, +0x482ddea, 0x7817, 0x11cf, 0x8a, 0x3, 0x0, 0xaa, 0x0, 0x6e, 0xcb, 0x65) + +// 0482DDEB-7817-11cf-8A03-00AA006ECB65 +OUR_GUID_ENTRY(MEDIASUBTYPE_AnalogVideo_PAL_N, +0x482ddeb, 0x7817, 0x11cf, 0x8a, 0x3, 0x0, 0xaa, 0x0, 0x6e, 0xcb, 0x65) + +// 0482DDEC-7817-11cf-8A03-00AA006ECB65 +OUR_GUID_ENTRY(MEDIASUBTYPE_AnalogVideo_PAL_N_COMBO, +0x482ddec, 0x7817, 0x11cf, 0x8a, 0x3, 0x0, 0xaa, 0x0, 0x6e, 0xcb, 0x65) + +// -- Analog Video subtypes, SECAM + +// 0482DDF0-7817-11cf-8A03-00AA006ECB65 +OUR_GUID_ENTRY(MEDIASUBTYPE_AnalogVideo_SECAM_B, +0x482ddf0, 0x7817, 0x11cf, 0x8a, 0x3, 0x0, 0xaa, 0x0, 0x6e, 0xcb, 0x65) + +// 0482DDF1-7817-11cf-8A03-00AA006ECB65 +OUR_GUID_ENTRY(MEDIASUBTYPE_AnalogVideo_SECAM_D, +0x482ddf1, 0x7817, 0x11cf, 0x8a, 0x3, 0x0, 0xaa, 0x0, 0x6e, 0xcb, 0x65) + +// 0482DDF2-7817-11cf-8A03-00AA006ECB65 +OUR_GUID_ENTRY(MEDIASUBTYPE_AnalogVideo_SECAM_G, +0x482ddf2, 0x7817, 0x11cf, 0x8a, 0x3, 0x0, 0xaa, 0x0, 0x6e, 0xcb, 0x65) + +// 0482DDF3-7817-11cf-8A03-00AA006ECB65 +OUR_GUID_ENTRY(MEDIASUBTYPE_AnalogVideo_SECAM_H, +0x482ddf3, 0x7817, 0x11cf, 0x8a, 0x3, 0x0, 0xaa, 0x0, 0x6e, 0xcb, 0x65) + +// 0482DDF4-7817-11cf-8A03-00AA006ECB65 +OUR_GUID_ENTRY(MEDIASUBTYPE_AnalogVideo_SECAM_K, +0x482ddf4, 0x7817, 0x11cf, 0x8a, 0x3, 0x0, 0xaa, 0x0, 0x6e, 0xcb, 0x65) + +// 0482DDF5-7817-11cf-8A03-00AA006ECB65 +OUR_GUID_ENTRY(MEDIASUBTYPE_AnalogVideo_SECAM_K1, +0x482ddf5, 0x7817, 0x11cf, 0x8a, 0x3, 0x0, 0xaa, 0x0, 0x6e, 0xcb, 0x65) + +// 0482DDF6-7817-11cf-8A03-00AA006ECB65 +OUR_GUID_ENTRY(MEDIASUBTYPE_AnalogVideo_SECAM_L, +0x482ddf6, 0x7817, 0x11cf, 0x8a, 0x3, 0x0, 0xaa, 0x0, 0x6e, 0xcb, 0x65) + + +// -- External audio related GUIDs --- + +// -- major types, Analog Audio + +// 0482DEE1-7817-11cf-8a03-00aa006ecb65 +OUR_GUID_ENTRY(MEDIATYPE_AnalogAudio, +0x482dee1, 0x7817, 0x11cf, 0x8a, 0x3, 0x0, 0xaa, 0x0, 0x6e, 0xcb, 0x65) + +// +// DirectShow's include file based on ksmedia.h from WDM DDK +// +#include "ksuuids.h" + + +// -- Well known time format GUIDs --- + + +// 00000000-0000-0000-0000-000000000000 +OUR_GUID_ENTRY(TIME_FORMAT_NONE, +0L, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) + +// 7b785570-8c82-11cf-bc0c-00aa00ac74f6 +OUR_GUID_ENTRY(TIME_FORMAT_FRAME, +0x7b785570, 0x8c82, 0x11cf, 0xbc, 0xc, 0x0, 0xaa, 0x0, 0xac, 0x74, 0xf6) + +// 7b785571-8c82-11cf-bc0c-00aa00ac74f6 +OUR_GUID_ENTRY(TIME_FORMAT_BYTE, +0x7b785571, 0x8c82, 0x11cf, 0xbc, 0xc, 0x0, 0xaa, 0x0, 0xac, 0x74, 0xf6) + +// 7b785572-8c82-11cf-bc0c-00aa00ac74f6 +OUR_GUID_ENTRY(TIME_FORMAT_SAMPLE, +0x7b785572, 0x8c82, 0x11cf, 0xbc, 0xc, 0x0, 0xaa, 0x0, 0xac, 0x74, 0xf6) + +// 7b785573-8c82-11cf-bc0c-00aa00ac74f6 +OUR_GUID_ENTRY(TIME_FORMAT_FIELD, +0x7b785573, 0x8c82, 0x11cf, 0xbc, 0xc, 0x0, 0xaa, 0x0, 0xac, 0x74, 0xf6) + + +// 7b785574-8c82-11cf-bc0c-00aa00ac74f6 +OUR_GUID_ENTRY(TIME_FORMAT_MEDIA_TIME, +0x7b785574, 0x8c82, 0x11cf, 0xbc, 0xc, 0x0, 0xaa, 0x0, 0xac, 0x74, 0xf6) + + +// for IKsPropertySet + +// 9B00F101-1567-11d1-B3F1-00AA003761C5 +OUR_GUID_ENTRY(AMPROPSETID_Pin, +0x9b00f101, 0x1567, 0x11d1, 0xb3, 0xf1, 0x0, 0xaa, 0x0, 0x37, 0x61, 0xc5) + +// fb6c4281-0353-11d1-905f-0000c0cc16ba +OUR_GUID_ENTRY(PIN_CATEGORY_CAPTURE, +0xfb6c4281, 0x0353, 0x11d1, 0x90, 0x5f, 0x00, 0x00, 0xc0, 0xcc, 0x16, 0xba) + +// fb6c4282-0353-11d1-905f-0000c0cc16ba +OUR_GUID_ENTRY(PIN_CATEGORY_PREVIEW, +0xfb6c4282, 0x0353, 0x11d1, 0x90, 0x5f, 0x00, 0x00, 0xc0, 0xcc, 0x16, 0xba) + +// fb6c4283-0353-11d1-905f-0000c0cc16ba +OUR_GUID_ENTRY(PIN_CATEGORY_ANALOGVIDEOIN, +0xfb6c4283, 0x0353, 0x11d1, 0x90, 0x5f, 0x00, 0x00, 0xc0, 0xcc, 0x16, 0xba) + +// fb6c4284-0353-11d1-905f-0000c0cc16ba +OUR_GUID_ENTRY(PIN_CATEGORY_VBI, +0xfb6c4284, 0x0353, 0x11d1, 0x90, 0x5f, 0x00, 0x00, 0xc0, 0xcc, 0x16, 0xba) + +// fb6c4285-0353-11d1-905f-0000c0cc16ba +OUR_GUID_ENTRY(PIN_CATEGORY_VIDEOPORT, +0xfb6c4285, 0x0353, 0x11d1, 0x90, 0x5f, 0x00, 0x00, 0xc0, 0xcc, 0x16, 0xba) + +// fb6c4286-0353-11d1-905f-0000c0cc16ba +OUR_GUID_ENTRY(PIN_CATEGORY_NABTS, +0xfb6c4286, 0x0353, 0x11d1, 0x90, 0x5f, 0x00, 0x00, 0xc0, 0xcc, 0x16, 0xba) + +// fb6c4287-0353-11d1-905f-0000c0cc16ba +OUR_GUID_ENTRY(PIN_CATEGORY_EDS, +0xfb6c4287, 0x0353, 0x11d1, 0x90, 0x5f, 0x00, 0x00, 0xc0, 0xcc, 0x16, 0xba) + +// fb6c4288-0353-11d1-905f-0000c0cc16ba +OUR_GUID_ENTRY(PIN_CATEGORY_TELETEXT, +0xfb6c4288, 0x0353, 0x11d1, 0x90, 0x5f, 0x00, 0x00, 0xc0, 0xcc, 0x16, 0xba) + +// fb6c4289-0353-11d1-905f-0000c0cc16ba +OUR_GUID_ENTRY(PIN_CATEGORY_CC, +0xfb6c4289, 0x0353, 0x11d1, 0x90, 0x5f, 0x00, 0x00, 0xc0, 0xcc, 0x16, 0xba) + +// fb6c428a-0353-11d1-905f-0000c0cc16ba +OUR_GUID_ENTRY(PIN_CATEGORY_STILL, +0xfb6c428a, 0x0353, 0x11d1, 0x90, 0x5f, 0x00, 0x00, 0xc0, 0xcc, 0x16, 0xba) + +// fb6c428b-0353-11d1-905f-0000c0cc16ba +OUR_GUID_ENTRY(PIN_CATEGORY_TIMECODE, +0xfb6c428b, 0x0353, 0x11d1, 0x90, 0x5f, 0x00, 0x00, 0xc0, 0xcc, 0x16, 0xba) + +// fb6c428c-0353-11d1-905f-0000c0cc16ba +OUR_GUID_ENTRY(PIN_CATEGORY_VIDEOPORT_VBI, +0xfb6c428c, 0x0353, 0x11d1, 0x90, 0x5f, 0x00, 0x00, 0xc0, 0xcc, 0x16, 0xba) + + +// the following special GUIDS are used by ICaptureGraphBuilder::FindInterface + +// {AC798BE0-98E3-11d1-B3F1-00AA003761C5} +OUR_GUID_ENTRY(LOOK_UPSTREAM_ONLY, +0xac798be0, 0x98e3, 0x11d1, 0xb3, 0xf1, 0x0, 0xaa, 0x0, 0x37, 0x61, 0xc5) + +// {AC798BE1-98E3-11d1-B3F1-00AA003761C5} +OUR_GUID_ENTRY(LOOK_DOWNSTREAM_ONLY, +0xac798be1, 0x98e3, 0x11d1, 0xb3, 0xf1, 0x0, 0xaa, 0x0, 0x37, 0x61, 0xc5) + +// ------------------------------------------------------------------------- +// KSProxy GUIDS +// ------------------------------------------------------------------------- + +// {266EEE41-6C63-11cf-8A03-00AA006ECB65} +OUR_GUID_ENTRY(CLSID_TVTunerFilterPropertyPage, +0x266eee41, 0x6c63, 0x11cf, 0x8a, 0x3, 0x0, 0xaa, 0x0, 0x6e, 0xcb, 0x65) + +// {71F96461-78F3-11d0-A18C-00A0C9118956} +OUR_GUID_ENTRY(CLSID_CrossbarFilterPropertyPage, +0x71f96461, 0x78f3, 0x11d0, 0xa1, 0x8c, 0x0, 0xa0, 0xc9, 0x11, 0x89, 0x56) + +// {71F96463-78F3-11d0-A18C-00A0C9118956} +OUR_GUID_ENTRY(CLSID_TVAudioFilterPropertyPage, +0x71f96463, 0x78f3, 0x11d0, 0xa1, 0x8c, 0x0, 0xa0, 0xc9, 0x11, 0x89, 0x56) + +// {71F96464-78F3-11d0-A18C-00A0C9118956} +OUR_GUID_ENTRY(CLSID_VideoProcAmpPropertyPage, +0x71f96464, 0x78f3, 0x11d0, 0xa1, 0x8c, 0x0, 0xa0, 0xc9, 0x11, 0x89, 0x56) + +// {71F96465-78F3-11d0-A18C-00A0C9118956} +OUR_GUID_ENTRY(CLSID_CameraControlPropertyPage, +0x71f96465, 0x78f3, 0x11d0, 0xa1, 0x8c, 0x0, 0xa0, 0xc9, 0x11, 0x89, 0x56) + +// {71F96466-78F3-11d0-A18C-00A0C9118956} +OUR_GUID_ENTRY(CLSID_AnalogVideoDecoderPropertyPage, +0x71f96466, 0x78f3, 0x11d0, 0xa1, 0x8c, 0x0, 0xa0, 0xc9, 0x11, 0x89, 0x56) + +// {71F96467-78F3-11d0-A18C-00A0C9118956} +OUR_GUID_ENTRY(CLSID_VideoStreamConfigPropertyPage, +0x71f96467, 0x78f3, 0x11d0, 0xa1, 0x8c, 0x0, 0xa0, 0xc9, 0x11, 0x89, 0x56) + +// {37E92A92-D9AA-11d2-BF84-8EF2B1555AED} Audio Renderer Advanced Property Page +OUR_GUID_ENTRY(CLSID_AudioRendererAdvancedProperties, +0x37e92a92, 0xd9aa, 0x11d2, 0xbf, 0x84, 0x8e, 0xf2, 0xb1, 0x55, 0x5a, 0xed) + + +// ------------------------------------------------------------------------- +// VMR GUIDS +// ------------------------------------------------------------------------- + +// {B87BEB7B-8D29-423f-AE4D-6582C10175AC} +OUR_GUID_ENTRY(CLSID_VideoMixingRenderer, +0xB87BEB7B, 0x8D29, 0x423f, 0xAE, 0x4D, 0x65, 0x82, 0xC1, 0x01, 0x75, 0xAC) + +// {6BC1CFFA-8FC1-4261-AC22-CFB4CC38DB50} +OUR_GUID_ENTRY(CLSID_VideoRendererDefault, +0x6BC1CFFA, 0x8FC1, 0x4261, 0xAC, 0x22, 0xCF, 0xB4, 0xCC, 0x38, 0xDB, 0x50) + +// {99d54f63-1a69-41ae-aa4d-c976eb3f0713} +OUR_GUID_ENTRY(CLSID_AllocPresenter, +0x99d54f63, 0x1a69, 0x41ae, 0xaa, 0x4d, 0xc9, 0x76, 0xeb, 0x3f, 0x07, 0x13) + +// {4444ac9e-242e-471b-a3c7-45dcd46352bc} +OUR_GUID_ENTRY(CLSID_AllocPresenterDDXclMode, +0x4444ac9e, 0x242e, 0x471b, 0xa3, 0xc7, 0x45, 0xdc, 0xd4, 0x63, 0x52, 0xbc) + +// {6f26a6cd-967b-47fd-874a-7aed2c9d25a2} +OUR_GUID_ENTRY(CLSID_VideoPortManager, +0x6f26a6cd, 0x967b, 0x47fd, 0x87, 0x4a, 0x7a, 0xed, 0x2c, 0x9d, 0x25, 0xa2) + + +// ------------------------------------------------------------------------- +// VMR GUIDS for DX9 +// ------------------------------------------------------------------------- + +// {51b4abf3-748f-4e3b-a276-c828330e926a} +OUR_GUID_ENTRY(CLSID_VideoMixingRenderer9, +0x51b4abf3, 0x748f, 0x4e3b, 0xa2, 0x76, 0xc8, 0x28, 0x33, 0x0e, 0x92, 0x6a) + + + + +// ------------------------------------------------------------------------- +// BDA Network Provider GUIDS +// ------------------------------------------------------------------------- + +// {0DAD2FDD-5FD7-11D3-8F50-00C04F7971E2} +OUR_GUID_ENTRY(CLSID_ATSCNetworkProvider, +0x0dad2fdd, 0x5fd7, 0x11d3, 0x8f, 0x50, 0x00, 0xc0, 0x4f, 0x79, 0x71, 0xe2) + +// {E3444D16-5AC4-4386-88DF-13FD230E1DDA} +OUR_GUID_ENTRY(CLSID_ATSCNetworkPropertyPage, +0xe3444d16, 0x5ac4, 0x4386, 0x88, 0xdf, 0x13, 0xfd, 0x23, 0x0e, 0x1d, 0xda) + +// {FA4B375A-45B4-4d45-8440-263957B11623} +OUR_GUID_ENTRY(CLSID_DVBSNetworkProvider, +0xfa4b375a, 0x45b4, 0x4d45, 0x84, 0x40, 0x26, 0x39, 0x57, 0xb1, 0x16, 0x23) + +// {216C62DF-6D7F-4e9a-8571-05F14EDB766A} +OUR_GUID_ENTRY(CLSID_DVBTNetworkProvider, +0x216c62df, 0x6d7f, 0x4e9a, 0x85, 0x71, 0x5, 0xf1, 0x4e, 0xdb, 0x76, 0x6a) + +// {DC0C0FE7-0485-4266-B93F-68FBF80ED834} +OUR_GUID_ENTRY(CLSID_DVBCNetworkProvider, +0xdc0c0fe7, 0x485, 0x4266, 0xb9, 0x3f, 0x68, 0xfb, 0xf8, 0xe, 0xd8, 0x34) + + + + +// ------------------------------------------------------------------------- +// TVE Receiver filter guids +// ------------------------------------------------------------------------- + +// The CLSID used by the TVE Receiver filter +// {05500280-FAA5-4DF9-8246-BFC23AC5CEA8} +OUR_GUID_ENTRY(CLSID_DShowTVEFilter, +0x05500280, 0xFAA5, 0x4DF9, 0x82, 0x46, 0xBF, 0xC2, 0x3A, 0xC5, 0xCE, 0xA8) + +// {05500281-FAA5-4DF9-8246-BFC23AC5CEA8} +OUR_GUID_ENTRY(CLSID_TVEFilterTuneProperties, +0x05500281, 0xFAA5, 0x4DF9, 0x82, 0x46, 0xBF, 0xC2, 0x3A, 0xC5, 0xCE, 0xA8) + + +// {05500282-FAA5-4DF9-8246-BFC23AC5CEA8} +OUR_GUID_ENTRY(CLSID_TVEFilterCCProperties, +0x05500282, 0xFAA5, 0x4DF9, 0x82, 0x46, 0xBF, 0xC2, 0x3A, 0xC5, 0xCE, 0xA8) + +// {05500283-FAA5-4DF9-8246-BFC23AC5CEA8} +OUR_GUID_ENTRY(CLSID_TVEFilterStatsProperties, +0x05500283, 0xFAA5, 0x4DF9, 0x82, 0x46, 0xBF, 0xC2, 0x3A, 0xC5, 0xCE, 0xA8) + +// ------------------------------------------------------------------------- +// Defined ENCAPI parameter GUIDs +// ------------------------------------------------------------------------- + +// The CLSID for the original IVideoEncoder proxy plug-in +// {B43C4EEC-8C32-4791-9102-508ADA5EE8E7} +OUR_GUID_ENTRY(CLSID_IVideoEncoderProxy, +0xb43c4eec, 0x8c32, 0x4791, 0x91, 0x2, 0x50, 0x8a, 0xda, 0x5e, 0xe8, 0xe7) + +// The CLSID for the ICodecAPI proxy plug-in +// {7ff0997a-1999-4286-a73c-622b8814e7eb} +OUR_GUID_ENTRY(CLSID_ICodecAPIProxy, +0x7ff0997a, 0x1999, 0x4286, 0xa7, 0x3c, 0x62, 0x2b, 0x88, 0x14, 0xe7, 0xeb ) + +// The CLSID for the combination ICodecAPI/IVideoEncoder proxy plug-in +// {b05dabd9-56e5-4fdc-afa4-8a47e91f1c9c} +OUR_GUID_ENTRY(CLSID_IVideoEncoderCodecAPIProxy, +0xb05dabd9, 0x56e5, 0x4fdc, 0xaf, 0xa4, 0x8a, 0x47, 0xe9, 0x1f, 0x1c, 0x9c ) + +#ifndef __ENCODER_API_GUIDS__ +#define __ENCODER_API_GUIDS__ + +// {49CC4C43-CA83-4ad4-A9AF-F3696AF666DF} +OUR_GUID_ENTRY(ENCAPIPARAM_BITRATE, +0x49cc4c43, 0xca83, 0x4ad4, 0xa9, 0xaf, 0xf3, 0x69, 0x6a, 0xf6, 0x66, 0xdf) + +// {703F16A9-3D48-44a1-B077-018DFF915D19} +OUR_GUID_ENTRY(ENCAPIPARAM_PEAK_BITRATE, +0x703f16a9, 0x3d48, 0x44a1, 0xb0, 0x77, 0x1, 0x8d, 0xff, 0x91, 0x5d, 0x19) + +// {EE5FB25C-C713-40d1-9D58-C0D7241E250F} +OUR_GUID_ENTRY(ENCAPIPARAM_BITRATE_MODE, +0xee5fb25c, 0xc713, 0x40d1, 0x9d, 0x58, 0xc0, 0xd7, 0x24, 0x1e, 0x25, 0xf) + +// for kernel control + +// {62b12acf-f6b0-47d9-9456-96f22c4e0b9d} +OUR_GUID_ENTRY(CODECAPI_CHANGELISTS, +0x62b12acf, 0xf6b0, 0x47d9, 0x94, 0x56, 0x96, 0xf2, 0x2c, 0x4e, 0x0b, 0x9d) + +// {7112e8e1-3d03-47ef-8e60-03f1cf537301 } +OUR_GUID_ENTRY(CODECAPI_VIDEO_ENCODER, +0x7112e8e1, 0x3d03, 0x47ef, 0x8e, 0x60, 0x03, 0xf1, 0xcf, 0x53, 0x73, 0x01) + +// {b9d19a3e-f897-429c-bc46-8138b7272b2d } +OUR_GUID_ENTRY(CODECAPI_AUDIO_ENCODER, +0xb9d19a3e, 0xf897, 0x429c, 0xbc, 0x46, 0x81, 0x38, 0xb7, 0x27, 0x2b, 0x2d) + +// {6c5e6a7c-acf8-4f55-a999-1a628109051b } +OUR_GUID_ENTRY(CODECAPI_SETALLDEFAULTS, +0x6c5e6a7c, 0xacf8, 0x4f55, 0xa9, 0x99, 0x1a, 0x62, 0x81, 0x09, 0x05, 0x1b) + +// {6a577e92-83e1-4113-adc2-4fcec32f83a1 } +OUR_GUID_ENTRY(CODECAPI_ALLSETTINGS, +0x6a577e92, 0x83e1, 0x4113, 0xad, 0xc2, 0x4f, 0xce, 0xc3, 0x2f, 0x83, 0xa1) + +// {0581af97-7693-4dbd-9dca-3f9ebd6585a1 } +OUR_GUID_ENTRY(CODECAPI_SUPPORTSEVENTS, +0x0581af97, 0x7693, 0x4dbd, 0x9d, 0xca, 0x3f, 0x9e, 0xbd, 0x65, 0x85, 0xa1 ) + +// {1cb14e83-7d72-4657-83fd-47a2c5b9d13d } +OUR_GUID_ENTRY(CODECAPI_CURRENTCHANGELIST, +0x1cb14e83, 0x7d72, 0x4657, 0x83, 0xfd, 0x47, 0xa2, 0xc5, 0xb9, 0xd1, 0x3d ) + +#endif // __ENCODER_API_GUIDS__ + +#undef OUR_GUID_ENTRY diff --git a/videoInputSrcAndDemos/libs/DShow/Include/vfwmsgs.h b/videoInputSrcAndDemos/libs/DShow/Include/vfwmsgs.h index a0309f8..57852e9 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/vfwmsgs.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/vfwmsgs.h @@ -1,1365 +1,1365 @@ - // no longer used - but might get - // our own facility in the future? - // FacilityNames=(FACILITY_VFW=0x4) - // To add a message: - // - // The MessageId is the number of the message. - // Accepted severities are 'Success' and 'Warning'. - // - // Facility should be FACILITY_ITF (was FACILITY_VFW). - // - // The SymbolicName is the name used in the code to identify the message. - // The text of a message starts the line after 'Language=' and - // ends before a line with only a '.' in column one. -// -// 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 the severity codes -// - - -// -// MessageId: VFW_E_INVALIDMEDIATYPE -// -// MessageText: -// -// An invalid media type was specified.%0 -// -#define VFW_E_INVALIDMEDIATYPE ((HRESULT)0x80040200L) - -// -// MessageId: VFW_E_INVALIDSUBTYPE -// -// MessageText: -// -// An invalid media subtype was specified.%0 -// -#define VFW_E_INVALIDSUBTYPE ((HRESULT)0x80040201L) - -// -// MessageId: VFW_E_NEED_OWNER -// -// MessageText: -// -// This object can only be created as an aggregated object.%0 -// -#define VFW_E_NEED_OWNER ((HRESULT)0x80040202L) - -// -// MessageId: VFW_E_ENUM_OUT_OF_SYNC -// -// MessageText: -// -// The enumerator has become invalid.%0 -// -#define VFW_E_ENUM_OUT_OF_SYNC ((HRESULT)0x80040203L) - -// -// MessageId: VFW_E_ALREADY_CONNECTED -// -// MessageText: -// -// At least one of the pins involved in the operation is already connected.%0 -// -#define VFW_E_ALREADY_CONNECTED ((HRESULT)0x80040204L) - -// -// MessageId: VFW_E_FILTER_ACTIVE -// -// MessageText: -// -// This operation cannot be performed because the filter is active.%0 -// -#define VFW_E_FILTER_ACTIVE ((HRESULT)0x80040205L) - -// -// MessageId: VFW_E_NO_TYPES -// -// MessageText: -// -// One of the specified pins supports no media types.%0 -// -#define VFW_E_NO_TYPES ((HRESULT)0x80040206L) - -// -// MessageId: VFW_E_NO_ACCEPTABLE_TYPES -// -// MessageText: -// -// There is no common media type between these pins.%0 -// -#define VFW_E_NO_ACCEPTABLE_TYPES ((HRESULT)0x80040207L) - -// -// MessageId: VFW_E_INVALID_DIRECTION -// -// MessageText: -// -// Two pins of the same direction cannot be connected together.%0 -// -#define VFW_E_INVALID_DIRECTION ((HRESULT)0x80040208L) - -// -// MessageId: VFW_E_NOT_CONNECTED -// -// MessageText: -// -// The operation cannot be performed because the pins are not connected.%0 -// -#define VFW_E_NOT_CONNECTED ((HRESULT)0x80040209L) - -// -// MessageId: VFW_E_NO_ALLOCATOR -// -// MessageText: -// -// No sample buffer allocator is available.%0 -// -#define VFW_E_NO_ALLOCATOR ((HRESULT)0x8004020AL) - -// -// MessageId: VFW_E_RUNTIME_ERROR -// -// MessageText: -// -// A run-time error occurred.%0 -// -#define VFW_E_RUNTIME_ERROR ((HRESULT)0x8004020BL) - -// -// MessageId: VFW_E_BUFFER_NOTSET -// -// MessageText: -// -// No buffer space has been set.%0 -// -#define VFW_E_BUFFER_NOTSET ((HRESULT)0x8004020CL) - -// -// MessageId: VFW_E_BUFFER_OVERFLOW -// -// MessageText: -// -// The buffer is not big enough.%0 -// -#define VFW_E_BUFFER_OVERFLOW ((HRESULT)0x8004020DL) - -// -// MessageId: VFW_E_BADALIGN -// -// MessageText: -// -// An invalid alignment was specified.%0 -// -#define VFW_E_BADALIGN ((HRESULT)0x8004020EL) - -// -// MessageId: VFW_E_ALREADY_COMMITTED -// -// MessageText: -// -// Cannot change allocated memory while the filter is active.%0 -// -#define VFW_E_ALREADY_COMMITTED ((HRESULT)0x8004020FL) - -// -// MessageId: VFW_E_BUFFERS_OUTSTANDING -// -// MessageText: -// -// One or more buffers are still active.%0 -// -#define VFW_E_BUFFERS_OUTSTANDING ((HRESULT)0x80040210L) - -// -// MessageId: VFW_E_NOT_COMMITTED -// -// MessageText: -// -// Cannot allocate a sample when the allocator is not active.%0 -// -#define VFW_E_NOT_COMMITTED ((HRESULT)0x80040211L) - -// -// MessageId: VFW_E_SIZENOTSET -// -// MessageText: -// -// Cannot allocate memory because no size has been set.%0 -// -#define VFW_E_SIZENOTSET ((HRESULT)0x80040212L) - -// -// MessageId: VFW_E_NO_CLOCK -// -// MessageText: -// -// Cannot lock for synchronization because no clock has been defined.%0 -// -#define VFW_E_NO_CLOCK ((HRESULT)0x80040213L) - -// -// MessageId: VFW_E_NO_SINK -// -// MessageText: -// -// Quality messages could not be sent because no quality sink has been defined.%0 -// -#define VFW_E_NO_SINK ((HRESULT)0x80040214L) - -// -// MessageId: VFW_E_NO_INTERFACE -// -// MessageText: -// -// A required interface has not been implemented.%0 -// -#define VFW_E_NO_INTERFACE ((HRESULT)0x80040215L) - -// -// MessageId: VFW_E_NOT_FOUND -// -// MessageText: -// -// An object or name was not found.%0 -// -#define VFW_E_NOT_FOUND ((HRESULT)0x80040216L) - -// -// MessageId: VFW_E_CANNOT_CONNECT -// -// MessageText: -// -// No combination of intermediate filters could be found to make the connection.%0 -// -#define VFW_E_CANNOT_CONNECT ((HRESULT)0x80040217L) - -// -// MessageId: VFW_E_CANNOT_RENDER -// -// MessageText: -// -// No combination of filters could be found to render the stream.%0 -// -#define VFW_E_CANNOT_RENDER ((HRESULT)0x80040218L) - -// -// MessageId: VFW_E_CHANGING_FORMAT -// -// MessageText: -// -// Could not change formats dynamically.%0 -// -#define VFW_E_CHANGING_FORMAT ((HRESULT)0x80040219L) - -// -// MessageId: VFW_E_NO_COLOR_KEY_SET -// -// MessageText: -// -// No color key has been set.%0 -// -#define VFW_E_NO_COLOR_KEY_SET ((HRESULT)0x8004021AL) - -// -// MessageId: VFW_E_NOT_OVERLAY_CONNECTION -// -// MessageText: -// -// Current pin connection is not using the IOverlay transport.%0 -// -#define VFW_E_NOT_OVERLAY_CONNECTION ((HRESULT)0x8004021BL) - -// -// MessageId: VFW_E_NOT_SAMPLE_CONNECTION -// -// MessageText: -// -// Current pin connection is not using the IMemInputPin transport.%0 -// -#define VFW_E_NOT_SAMPLE_CONNECTION ((HRESULT)0x8004021CL) - -// -// MessageId: VFW_E_PALETTE_SET -// -// MessageText: -// -// Setting a color key would conflict with the palette already set.%0 -// -#define VFW_E_PALETTE_SET ((HRESULT)0x8004021DL) - -// -// MessageId: VFW_E_COLOR_KEY_SET -// -// MessageText: -// -// Setting a palette would conflict with the color key already set.%0 -// -#define VFW_E_COLOR_KEY_SET ((HRESULT)0x8004021EL) - -// -// MessageId: VFW_E_NO_COLOR_KEY_FOUND -// -// MessageText: -// -// No matching color key is available.%0 -// -#define VFW_E_NO_COLOR_KEY_FOUND ((HRESULT)0x8004021FL) - -// -// MessageId: VFW_E_NO_PALETTE_AVAILABLE -// -// MessageText: -// -// No palette is available.%0 -// -#define VFW_E_NO_PALETTE_AVAILABLE ((HRESULT)0x80040220L) - -// -// MessageId: VFW_E_NO_DISPLAY_PALETTE -// -// MessageText: -// -// Display does not use a palette.%0 -// -#define VFW_E_NO_DISPLAY_PALETTE ((HRESULT)0x80040221L) - -// -// MessageId: VFW_E_TOO_MANY_COLORS -// -// MessageText: -// -// Too many colors for the current display settings.%0 -// -#define VFW_E_TOO_MANY_COLORS ((HRESULT)0x80040222L) - -// -// MessageId: VFW_E_STATE_CHANGED -// -// MessageText: -// -// The state changed while waiting to process the sample.%0 -// -#define VFW_E_STATE_CHANGED ((HRESULT)0x80040223L) - -// -// MessageId: VFW_E_NOT_STOPPED -// -// MessageText: -// -// The operation could not be performed because the filter is not stopped.%0 -// -#define VFW_E_NOT_STOPPED ((HRESULT)0x80040224L) - -// -// MessageId: VFW_E_NOT_PAUSED -// -// MessageText: -// -// The operation could not be performed because the filter is not paused.%0 -// -#define VFW_E_NOT_PAUSED ((HRESULT)0x80040225L) - -// -// MessageId: VFW_E_NOT_RUNNING -// -// MessageText: -// -// The operation could not be performed because the filter is not running.%0 -// -#define VFW_E_NOT_RUNNING ((HRESULT)0x80040226L) - -// -// MessageId: VFW_E_WRONG_STATE -// -// MessageText: -// -// The operation could not be performed because the filter is in the wrong state.%0 -// -#define VFW_E_WRONG_STATE ((HRESULT)0x80040227L) - -// -// MessageId: VFW_E_START_TIME_AFTER_END -// -// MessageText: -// -// The sample start time is after the sample end time.%0 -// -#define VFW_E_START_TIME_AFTER_END ((HRESULT)0x80040228L) - -// -// MessageId: VFW_E_INVALID_RECT -// -// MessageText: -// -// The supplied rectangle is invalid.%0 -// -#define VFW_E_INVALID_RECT ((HRESULT)0x80040229L) - -// -// MessageId: VFW_E_TYPE_NOT_ACCEPTED -// -// MessageText: -// -// This pin cannot use the supplied media type.%0 -// -#define VFW_E_TYPE_NOT_ACCEPTED ((HRESULT)0x8004022AL) - -// -// MessageId: VFW_E_SAMPLE_REJECTED -// -// MessageText: -// -// This sample cannot be rendered.%0 -// -#define VFW_E_SAMPLE_REJECTED ((HRESULT)0x8004022BL) - -// -// MessageId: VFW_E_SAMPLE_REJECTED_EOS -// -// MessageText: -// -// This sample cannot be rendered because the end of the stream has been reached.%0 -// -#define VFW_E_SAMPLE_REJECTED_EOS ((HRESULT)0x8004022CL) - -// -// MessageId: VFW_E_DUPLICATE_NAME -// -// MessageText: -// -// An attempt to add a filter with a duplicate name failed.%0 -// -#define VFW_E_DUPLICATE_NAME ((HRESULT)0x8004022DL) - -// -// MessageId: VFW_S_DUPLICATE_NAME -// -// MessageText: -// -// An attempt to add a filter with a duplicate name succeeded with a modified name.%0 -// -#define VFW_S_DUPLICATE_NAME ((HRESULT)0x0004022DL) - -// -// MessageId: VFW_E_TIMEOUT -// -// MessageText: -// -// A time-out has expired.%0 -// -#define VFW_E_TIMEOUT ((HRESULT)0x8004022EL) - -// -// MessageId: VFW_E_INVALID_FILE_FORMAT -// -// MessageText: -// -// The file format is invalid.%0 -// -#define VFW_E_INVALID_FILE_FORMAT ((HRESULT)0x8004022FL) - -// -// MessageId: VFW_E_ENUM_OUT_OF_RANGE -// -// MessageText: -// -// The list has already been exhausted.%0 -// -#define VFW_E_ENUM_OUT_OF_RANGE ((HRESULT)0x80040230L) - -// -// MessageId: VFW_E_CIRCULAR_GRAPH -// -// MessageText: -// -// The filter graph is circular.%0 -// -#define VFW_E_CIRCULAR_GRAPH ((HRESULT)0x80040231L) - -// -// MessageId: VFW_E_NOT_ALLOWED_TO_SAVE -// -// MessageText: -// -// Updates are not allowed in this state.%0 -// -#define VFW_E_NOT_ALLOWED_TO_SAVE ((HRESULT)0x80040232L) - -// -// MessageId: VFW_E_TIME_ALREADY_PASSED -// -// MessageText: -// -// An attempt was made to queue a command for a time in the past.%0 -// -#define VFW_E_TIME_ALREADY_PASSED ((HRESULT)0x80040233L) - -// -// MessageId: VFW_E_ALREADY_CANCELLED -// -// MessageText: -// -// The queued command has already been canceled.%0 -// -#define VFW_E_ALREADY_CANCELLED ((HRESULT)0x80040234L) - -// -// MessageId: VFW_E_CORRUPT_GRAPH_FILE -// -// MessageText: -// -// Cannot render the file because it is corrupt.%0 -// -#define VFW_E_CORRUPT_GRAPH_FILE ((HRESULT)0x80040235L) - -// -// MessageId: VFW_E_ADVISE_ALREADY_SET -// -// MessageText: -// -// An overlay advise link already exists.%0 -// -#define VFW_E_ADVISE_ALREADY_SET ((HRESULT)0x80040236L) - -// -// MessageId: VFW_S_STATE_INTERMEDIATE -// -// MessageText: -// -// The state transition has not completed.%0 -// -#define VFW_S_STATE_INTERMEDIATE ((HRESULT)0x00040237L) - -// -// MessageId: VFW_E_NO_MODEX_AVAILABLE -// -// MessageText: -// -// No full-screen modes are available.%0 -// -#define VFW_E_NO_MODEX_AVAILABLE ((HRESULT)0x80040238L) - -// -// MessageId: VFW_E_NO_ADVISE_SET -// -// MessageText: -// -// This Advise cannot be canceled because it was not successfully set.%0 -// -#define VFW_E_NO_ADVISE_SET ((HRESULT)0x80040239L) - -// -// MessageId: VFW_E_NO_FULLSCREEN -// -// MessageText: -// -// A full-screen mode is not available.%0 -// -#define VFW_E_NO_FULLSCREEN ((HRESULT)0x8004023AL) - -// -// MessageId: VFW_E_IN_FULLSCREEN_MODE -// -// MessageText: -// -// Cannot call IVideoWindow methods while in full-screen mode.%0 -// -#define VFW_E_IN_FULLSCREEN_MODE ((HRESULT)0x8004023BL) - -// -// MessageId: VFW_E_UNKNOWN_FILE_TYPE -// -// MessageText: -// -// The media type of this file is not recognized.%0 -// -#define VFW_E_UNKNOWN_FILE_TYPE ((HRESULT)0x80040240L) - -// -// MessageId: VFW_E_CANNOT_LOAD_SOURCE_FILTER -// -// MessageText: -// -// The source filter for this file could not be loaded.%0 -// -#define VFW_E_CANNOT_LOAD_SOURCE_FILTER ((HRESULT)0x80040241L) - -// -// MessageId: VFW_S_PARTIAL_RENDER -// -// MessageText: -// -// Some of the streams in this movie are in an unsupported format.%0 -// -#define VFW_S_PARTIAL_RENDER ((HRESULT)0x00040242L) - -// -// MessageId: VFW_E_FILE_TOO_SHORT -// -// MessageText: -// -// A file appeared to be incomplete.%0 -// -#define VFW_E_FILE_TOO_SHORT ((HRESULT)0x80040243L) - -// -// MessageId: VFW_E_INVALID_FILE_VERSION -// -// MessageText: -// -// The version number of the file is invalid.%0 -// -#define VFW_E_INVALID_FILE_VERSION ((HRESULT)0x80040244L) - -// -// MessageId: VFW_S_SOME_DATA_IGNORED -// -// MessageText: -// -// The file contained some property settings that were not used.%0 -// -#define VFW_S_SOME_DATA_IGNORED ((HRESULT)0x00040245L) - -// -// MessageId: VFW_S_CONNECTIONS_DEFERRED -// -// MessageText: -// -// Some connections have failed and have been deferred.%0 -// -#define VFW_S_CONNECTIONS_DEFERRED ((HRESULT)0x00040246L) - -// -// MessageId: VFW_E_INVALID_CLSID -// -// MessageText: -// -// This file is corrupt: it contains an invalid class identifier.%0 -// -#define VFW_E_INVALID_CLSID ((HRESULT)0x80040247L) - -// -// MessageId: VFW_E_INVALID_MEDIA_TYPE -// -// MessageText: -// -// This file is corrupt: it contains an invalid media type.%0 -// -#define VFW_E_INVALID_MEDIA_TYPE ((HRESULT)0x80040248L) - - // Message id from WINWarning.H -// -// MessageId: VFW_E_BAD_KEY -// -// MessageText: -// -// A registry entry is corrupt.%0 -// -#define VFW_E_BAD_KEY ((HRESULT)0x800403F2L) - - // Message id from WINWarning.H -// -// MessageId: VFW_S_NO_MORE_ITEMS -// -// MessageText: -// -// The end of the list has been reached.%0 -// -#define VFW_S_NO_MORE_ITEMS ((HRESULT)0x00040103L) - -// -// MessageId: VFW_E_SAMPLE_TIME_NOT_SET -// -// MessageText: -// -// No time stamp has been set for this sample.%0 -// -#define VFW_E_SAMPLE_TIME_NOT_SET ((HRESULT)0x80040249L) - -// -// MessageId: VFW_S_RESOURCE_NOT_NEEDED -// -// MessageText: -// -// The resource specified is no longer needed.%0 -// -#define VFW_S_RESOURCE_NOT_NEEDED ((HRESULT)0x00040250L) - -// -// MessageId: VFW_E_MEDIA_TIME_NOT_SET -// -// MessageText: -// -// No media time stamp has been set for this sample.%0 -// -#define VFW_E_MEDIA_TIME_NOT_SET ((HRESULT)0x80040251L) - -// -// MessageId: VFW_E_NO_TIME_FORMAT_SET -// -// MessageText: -// -// No media time format has been selected.%0 -// -#define VFW_E_NO_TIME_FORMAT_SET ((HRESULT)0x80040252L) - -// -// MessageId: VFW_E_MONO_AUDIO_HW -// -// MessageText: -// -// Cannot change balance because audio device is mono only.%0 -// -#define VFW_E_MONO_AUDIO_HW ((HRESULT)0x80040253L) - -// -// MessageId: VFW_S_MEDIA_TYPE_IGNORED -// -// MessageText: -// -// A connection could not be made with the media type in the persistent graph,%0 -// but has been made with a negotiated media type.%0 -// -#define VFW_S_MEDIA_TYPE_IGNORED ((HRESULT)0x00040254L) - -// -// MessageId: VFW_E_NO_DECOMPRESSOR -// -// MessageText: -// -// Cannot play back the video stream: no suitable decompressor could be found.%0 -// -#define VFW_E_NO_DECOMPRESSOR ((HRESULT)0x80040255L) - -// -// MessageId: VFW_E_NO_AUDIO_HARDWARE -// -// MessageText: -// -// Cannot play back the audio stream: no audio hardware is available, or the hardware is not responding.%0 -// -#define VFW_E_NO_AUDIO_HARDWARE ((HRESULT)0x80040256L) - -// -// MessageId: VFW_S_VIDEO_NOT_RENDERED -// -// MessageText: -// -// Cannot play back the video stream: no suitable decompressor could be found.%0 -// -#define VFW_S_VIDEO_NOT_RENDERED ((HRESULT)0x00040257L) - -// -// MessageId: VFW_S_AUDIO_NOT_RENDERED -// -// MessageText: -// -// Cannot play back the audio stream: no audio hardware is available.%0 -// -#define VFW_S_AUDIO_NOT_RENDERED ((HRESULT)0x00040258L) - -// -// MessageId: VFW_E_RPZA -// -// MessageText: -// -// Cannot play back the video stream: format 'RPZA' is not supported.%0 -// -#define VFW_E_RPZA ((HRESULT)0x80040259L) - -// -// MessageId: VFW_S_RPZA -// -// MessageText: -// -// Cannot play back the video stream: format 'RPZA' is not supported.%0 -// -#define VFW_S_RPZA ((HRESULT)0x0004025AL) - -// -// MessageId: VFW_E_PROCESSOR_NOT_SUITABLE -// -// MessageText: -// -// ActiveMovie cannot play MPEG movies on this processor.%0 -// -#define VFW_E_PROCESSOR_NOT_SUITABLE ((HRESULT)0x8004025BL) - -// -// MessageId: VFW_E_UNSUPPORTED_AUDIO -// -// MessageText: -// -// Cannot play back the audio stream: the audio format is not supported.%0 -// -#define VFW_E_UNSUPPORTED_AUDIO ((HRESULT)0x8004025CL) - -// -// MessageId: VFW_E_UNSUPPORTED_VIDEO -// -// MessageText: -// -// Cannot play back the video stream: the video format is not supported.%0 -// -#define VFW_E_UNSUPPORTED_VIDEO ((HRESULT)0x8004025DL) - -// -// MessageId: VFW_E_MPEG_NOT_CONSTRAINED -// -// MessageText: -// -// ActiveMovie cannot play this video stream because it falls outside the constrained standard.%0 -// -#define VFW_E_MPEG_NOT_CONSTRAINED ((HRESULT)0x8004025EL) - -// -// MessageId: VFW_E_NOT_IN_GRAPH -// -// MessageText: -// -// Cannot perform the requested function on an object that is not in the filter graph.%0 -// -#define VFW_E_NOT_IN_GRAPH ((HRESULT)0x8004025FL) - -// -// MessageId: VFW_S_ESTIMATED -// -// MessageText: -// -// The value returned had to be estimated. It's accuracy can not be guaranteed.%0 -// -#define VFW_S_ESTIMATED ((HRESULT)0x00040260L) - -// -// MessageId: VFW_E_NO_TIME_FORMAT -// -// MessageText: -// -// Cannot get or set time related information on an object that is using a time format of TIME_FORMAT_NONE.%0 -// -#define VFW_E_NO_TIME_FORMAT ((HRESULT)0x80040261L) - -// -// MessageId: VFW_E_READ_ONLY -// -// MessageText: -// -// The connection cannot be made because the stream is read only and the filter alters the data.%0 -// -#define VFW_E_READ_ONLY ((HRESULT)0x80040262L) - -// -// MessageId: VFW_S_RESERVED -// -// MessageText: -// -// This success code is reserved for internal purposes within ActiveMovie.%0 -// -#define VFW_S_RESERVED ((HRESULT)0x00040263L) - -// -// MessageId: VFW_E_BUFFER_UNDERFLOW -// -// MessageText: -// -// The buffer is not full enough.%0 -// -#define VFW_E_BUFFER_UNDERFLOW ((HRESULT)0x80040264L) - -// -// MessageId: VFW_E_UNSUPPORTED_STREAM -// -// MessageText: -// -// Cannot play back the file. The format is not supported.%0 -// -#define VFW_E_UNSUPPORTED_STREAM ((HRESULT)0x80040265L) - -// -// MessageId: VFW_E_NO_TRANSPORT -// -// MessageText: -// -// Pins cannot connect due to not supporting the same transport.%0 -// -#define VFW_E_NO_TRANSPORT ((HRESULT)0x80040266L) - -// -// MessageId: VFW_S_STREAM_OFF -// -// MessageText: -// -// The stream has been turned off.%0 -// -#define VFW_S_STREAM_OFF ((HRESULT)0x00040267L) - -// -// MessageId: VFW_S_CANT_CUE -// -// MessageText: -// -// The graph can't be cued because of lack of or corrupt data.%0 -// -#define VFW_S_CANT_CUE ((HRESULT)0x00040268L) - -// -// MessageId: VFW_E_BAD_VIDEOCD -// -// MessageText: -// -// The Video CD can't be read correctly by the device or is the data is corrupt.%0 -// -#define VFW_E_BAD_VIDEOCD ((HRESULT)0x80040269L) - -// -// MessageId: VFW_S_NO_STOP_TIME -// -// MessageText: -// -// The stop time for the sample was not set.%0 -// -#define VFW_S_NO_STOP_TIME ((HRESULT)0x00040270L) - -// -// MessageId: VFW_E_OUT_OF_VIDEO_MEMORY -// -// MessageText: -// -// There is not enough Video Memory at this display resolution and number of colors. Reducing resolution might help.%0 -// -#define VFW_E_OUT_OF_VIDEO_MEMORY ((HRESULT)0x80040271L) - -// -// MessageId: VFW_E_VP_NEGOTIATION_FAILED -// -// MessageText: -// -// The VideoPort connection negotiation process has failed.%0 -// -#define VFW_E_VP_NEGOTIATION_FAILED ((HRESULT)0x80040272L) - -// -// MessageId: VFW_E_DDRAW_CAPS_NOT_SUITABLE -// -// MessageText: -// -// Either DirectDraw has not been installed or the Video Card capabilities are not suitable. Make sure the display is not in 16 color mode.%0 -// -#define VFW_E_DDRAW_CAPS_NOT_SUITABLE ((HRESULT)0x80040273L) - -// -// MessageId: VFW_E_NO_VP_HARDWARE -// -// MessageText: -// -// No VideoPort hardware is available, or the hardware is not responding.%0 -// -#define VFW_E_NO_VP_HARDWARE ((HRESULT)0x80040274L) - -// -// MessageId: VFW_E_NO_CAPTURE_HARDWARE -// -// MessageText: -// -// No Capture hardware is available, or the hardware is not responding.%0 -// -#define VFW_E_NO_CAPTURE_HARDWARE ((HRESULT)0x80040275L) - -// -// MessageId: VFW_E_DVD_OPERATION_INHIBITED -// -// MessageText: -// -// This User Operation is inhibited by DVD Content at this time.%0 -// -#define VFW_E_DVD_OPERATION_INHIBITED ((HRESULT)0x80040276L) - -// -// MessageId: VFW_E_DVD_INVALIDDOMAIN -// -// MessageText: -// -// This Operation is not permitted in the current domain.%0 -// -#define VFW_E_DVD_INVALIDDOMAIN ((HRESULT)0x80040277L) - -// -// MessageId: VFW_E_DVD_NO_BUTTON -// -// MessageText: -// -// The specified button is invalid or is not present at the current time, or there is no button present at the specified location.%0 -// -#define VFW_E_DVD_NO_BUTTON ((HRESULT)0x80040278L) - -// -// MessageId: VFW_E_DVD_GRAPHNOTREADY -// -// MessageText: -// -// DVD-Video playback graph has not been built yet.%0 -// -#define VFW_E_DVD_GRAPHNOTREADY ((HRESULT)0x80040279L) - -// -// MessageId: VFW_E_DVD_RENDERFAIL -// -// MessageText: -// -// DVD-Video playback graph building failed.%0 -// -#define VFW_E_DVD_RENDERFAIL ((HRESULT)0x8004027AL) - -// -// MessageId: VFW_E_DVD_DECNOTENOUGH -// -// MessageText: -// -// DVD-Video playback graph could not be built due to insufficient decoders.%0 -// -#define VFW_E_DVD_DECNOTENOUGH ((HRESULT)0x8004027BL) - -// -// MessageId: VFW_E_DDRAW_VERSION_NOT_SUITABLE -// -// MessageText: -// -// Version number of DirectDraw not suitable. Make sure to install dx5 or higher version.%0 -// -#define VFW_E_DDRAW_VERSION_NOT_SUITABLE ((HRESULT)0x8004027CL) - -// -// MessageId: VFW_E_COPYPROT_FAILED -// -// MessageText: -// -// Copy protection cannot be enabled. Please make sure any other copy protected content is not being shown now.%0 -// -#define VFW_E_COPYPROT_FAILED ((HRESULT)0x8004027DL) - -// -// MessageId: VFW_S_NOPREVIEWPIN -// -// MessageText: -// -// There was no preview pin available, so the capture pin output is being split to provide both capture and preview.%0 -// -#define VFW_S_NOPREVIEWPIN ((HRESULT)0x0004027EL) - -// -// MessageId: VFW_E_TIME_EXPIRED -// -// MessageText: -// -// This object cannot be used anymore as its time has expired.%0 -// -#define VFW_E_TIME_EXPIRED ((HRESULT)0x8004027FL) - -// -// MessageId: VFW_S_DVD_NON_ONE_SEQUENTIAL -// -// MessageText: -// -// The current title was not a sequential set of chapters (PGC), and the returned timing information might not be continuous.%0 -// -#define VFW_S_DVD_NON_ONE_SEQUENTIAL ((HRESULT)0x00040280L) - -// -// MessageId: VFW_E_DVD_WRONG_SPEED -// -// MessageText: -// -// The operation cannot be performed at the current playback speed.%0 -// -#define VFW_E_DVD_WRONG_SPEED ((HRESULT)0x80040281L) - -// -// MessageId: VFW_E_DVD_MENU_DOES_NOT_EXIST -// -// MessageText: -// -// The specified menu doesn't exist.%0 -// -#define VFW_E_DVD_MENU_DOES_NOT_EXIST ((HRESULT)0x80040282L) - -// -// MessageId: VFW_E_DVD_CMD_CANCELLED -// -// MessageText: -// -// The specified command was either cancelled or no longer exists.%0 -// -#define VFW_E_DVD_CMD_CANCELLED ((HRESULT)0x80040283L) - -// -// MessageId: VFW_E_DVD_STATE_WRONG_VERSION -// -// MessageText: -// -// The data did not contain a recognized version.%0 -// -#define VFW_E_DVD_STATE_WRONG_VERSION ((HRESULT)0x80040284L) - -// -// MessageId: VFW_E_DVD_STATE_CORRUPT -// -// MessageText: -// -// The state data was corrupt.%0 -// -#define VFW_E_DVD_STATE_CORRUPT ((HRESULT)0x80040285L) - -// -// MessageId: VFW_E_DVD_STATE_WRONG_DISC -// -// MessageText: -// -// The state data is from a different disc.%0 -// -#define VFW_E_DVD_STATE_WRONG_DISC ((HRESULT)0x80040286L) - -// -// MessageId: VFW_E_DVD_INCOMPATIBLE_REGION -// -// MessageText: -// -// The region was not compatible with the current drive.%0 -// -#define VFW_E_DVD_INCOMPATIBLE_REGION ((HRESULT)0x80040287L) - -// -// MessageId: VFW_E_DVD_NO_ATTRIBUTES -// -// MessageText: -// -// The requested DVD stream attribute does not exist.%0 -// -#define VFW_E_DVD_NO_ATTRIBUTES ((HRESULT)0x80040288L) - -// -// MessageId: VFW_E_DVD_NO_GOUP_PGC -// -// MessageText: -// -// Currently there is no GoUp (Annex J user function) program chain (PGC).%0 -// -#define VFW_E_DVD_NO_GOUP_PGC ((HRESULT)0x80040289L) - -// -// MessageId: VFW_E_DVD_LOW_PARENTAL_LEVEL -// -// MessageText: -// -// The current parental level was too low.%0 -// -#define VFW_E_DVD_LOW_PARENTAL_LEVEL ((HRESULT)0x8004028AL) - -// -// MessageId: VFW_E_DVD_NOT_IN_KARAOKE_MODE -// -// MessageText: -// -// The current audio is not karaoke content.%0 -// -#define VFW_E_DVD_NOT_IN_KARAOKE_MODE ((HRESULT)0x8004028BL) - -// -// MessageId: VFW_S_DVD_CHANNEL_CONTENTS_NOT_AVAILABLE -// -// MessageText: -// -// The audio stream did not contain sufficient information to determine the contents of each channel.%0 -// -#define VFW_S_DVD_CHANNEL_CONTENTS_NOT_AVAILABLE ((HRESULT)0x0004028CL) - -// -// MessageId: VFW_S_DVD_NOT_ACCURATE -// -// MessageText: -// -// The seek into the movie was not frame accurate.%0 -// -#define VFW_S_DVD_NOT_ACCURATE ((HRESULT)0x0004028DL) - -// -// MessageId: VFW_E_FRAME_STEP_UNSUPPORTED -// -// MessageText: -// -// Frame step is not supported on this configuration.%0 -// -#define VFW_E_FRAME_STEP_UNSUPPORTED ((HRESULT)0x8004028EL) - -// -// MessageId: VFW_E_DVD_STREAM_DISABLED -// -// MessageText: -// -// The specified stream is disabled and cannot be selected.%0 -// -#define VFW_E_DVD_STREAM_DISABLED ((HRESULT)0x8004028FL) - -// -// MessageId: VFW_E_DVD_TITLE_UNKNOWN -// -// MessageText: -// -// The operation depends on the current title number, however the navigator has not yet entered the VTSM or the title domains, -// so the 'current' title index is unknown.%0 -// -#define VFW_E_DVD_TITLE_UNKNOWN ((HRESULT)0x80040290L) - -// -// MessageId: VFW_E_DVD_INVALID_DISC -// -// MessageText: -// -// The specified path does not point to a valid DVD disc.%0 -// -#define VFW_E_DVD_INVALID_DISC ((HRESULT)0x80040291L) - -// -// MessageId: VFW_E_DVD_NO_RESUME_INFORMATION -// -// MessageText: -// -// There is currently no resume information.%0 -// -#define VFW_E_DVD_NO_RESUME_INFORMATION ((HRESULT)0x80040292L) - -// -// MessageId: VFW_E_PIN_ALREADY_BLOCKED_ON_THIS_THREAD -// -// MessageText: -// -// This thread has already blocked this output pin. There is no need to call IPinFlowControl::Block() again.%0 -// -#define VFW_E_PIN_ALREADY_BLOCKED_ON_THIS_THREAD ((HRESULT)0x80040293L) - -// -// MessageId: VFW_E_PIN_ALREADY_BLOCKED -// -// MessageText: -// -// IPinFlowControl::Block() has been called on another thread. The current thread cannot make any assumptions about this pin's block state.%0 -// -#define VFW_E_PIN_ALREADY_BLOCKED ((HRESULT)0x80040294L) - -// -// MessageId: VFW_E_CERTIFICATION_FAILURE -// -// MessageText: -// -// An operation failed due to a certification failure.%0 -// -#define VFW_E_CERTIFICATION_FAILURE ((HRESULT)0x80040295L) - -// -// MessageId: VFW_E_VMR_NOT_IN_MIXER_MODE -// -// MessageText: -// -// The VMR has not yet created a mixing component. That is, IVMRFilterConfig::SetNumberofStreams has not yet been called.%0 -// -#define VFW_E_VMR_NOT_IN_MIXER_MODE ((HRESULT)0x80040296L) - -// -// MessageId: VFW_E_VMR_NO_AP_SUPPLIED -// -// MessageText: -// -// The application has not yet provided the VMR filter with a valid allocator-presenter object.%0 -// -#define VFW_E_VMR_NO_AP_SUPPLIED ((HRESULT)0x80040297L) -// -// MessageId: VFW_E_VMR_NO_DEINTERLACE_HW -// -// MessageText: -// -// The VMR could not find any de-interlacing hardware on the current display device.%0 -// -#define VFW_E_VMR_NO_DEINTERLACE_HW ((HRESULT)0x80040298L) -// -// MessageId: VFW_E_VMR_NO_PROCAMP_HW -// -// MessageText: -// -// The VMR could not find any ProcAmp hardware on the current display device.%0 -// -#define VFW_E_VMR_NO_PROCAMP_HW ((HRESULT)0x80040299L) -// -// MessageId: VFW_E_DVD_VMR9_INCOMPATIBLEDEC -// -// MessageText: -// -// VMR9 does not work with VPE-based hardware decoders.%0 -// -#define VFW_E_DVD_VMR9_INCOMPATIBLEDEC ((HRESULT)0x8004029AL) -// -// MessageId: VFW_E_NO_COPP_HW -// -// MessageText: -// -// The current display device does not support Content Output Protection Protocol (COPP) H/W.%0 -// -#define VFW_E_NO_COPP_HW ((HRESULT)0x8004029BL) -// -// -// E_PROP_SET_UNSUPPORTED and E_PROP_ID_UNSUPPORTED are added here using -// HRESULT_FROM_WIN32() because VC5 doesn't have WinNT's new error codes -// from winerror.h, and because it is more convienent to have them already -// formed as HRESULTs. These should correspond to: -// HRESULT_FROM_WIN32(ERROR_NOT_FOUND) == E_PROP_ID_UNSUPPORTED -// HRESULT_FROM_WIN32(ERROR_SET_NOT_FOUND) == E_PROP_SET_UNSUPPORTED -#if !defined(E_PROP_SET_UNSUPPORTED) -// -// MessageId: E_PROP_SET_UNSUPPORTED -// -// MessageText: -// -// The Specified property set is not supported.%0 -// -#define E_PROP_SET_UNSUPPORTED ((HRESULT)0x80070492L) - -#endif //!defined(E_PROP_SET_UNSUPPORTED) -#if !defined(E_PROP_ID_UNSUPPORTED) -// -// MessageId: E_PROP_ID_UNSUPPORTED -// -// MessageText: -// -// The specified property ID is not supported for the specified property set.%0 -// -#define E_PROP_ID_UNSUPPORTED ((HRESULT)0x80070490L) - -#endif //!defined(E_PROP_ID_UNSUPPORTED) + // no longer used - but might get + // our own facility in the future? + // FacilityNames=(FACILITY_VFW=0x4) + // To add a message: + // + // The MessageId is the number of the message. + // Accepted severities are 'Success' and 'Warning'. + // + // Facility should be FACILITY_ITF (was FACILITY_VFW). + // + // The SymbolicName is the name used in the code to identify the message. + // The text of a message starts the line after 'Language=' and + // ends before a line with only a '.' in column one. +// +// 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 the severity codes +// + + +// +// MessageId: VFW_E_INVALIDMEDIATYPE +// +// MessageText: +// +// An invalid media type was specified.%0 +// +#define VFW_E_INVALIDMEDIATYPE ((HRESULT)0x80040200L) + +// +// MessageId: VFW_E_INVALIDSUBTYPE +// +// MessageText: +// +// An invalid media subtype was specified.%0 +// +#define VFW_E_INVALIDSUBTYPE ((HRESULT)0x80040201L) + +// +// MessageId: VFW_E_NEED_OWNER +// +// MessageText: +// +// This object can only be created as an aggregated object.%0 +// +#define VFW_E_NEED_OWNER ((HRESULT)0x80040202L) + +// +// MessageId: VFW_E_ENUM_OUT_OF_SYNC +// +// MessageText: +// +// The enumerator has become invalid.%0 +// +#define VFW_E_ENUM_OUT_OF_SYNC ((HRESULT)0x80040203L) + +// +// MessageId: VFW_E_ALREADY_CONNECTED +// +// MessageText: +// +// At least one of the pins involved in the operation is already connected.%0 +// +#define VFW_E_ALREADY_CONNECTED ((HRESULT)0x80040204L) + +// +// MessageId: VFW_E_FILTER_ACTIVE +// +// MessageText: +// +// This operation cannot be performed because the filter is active.%0 +// +#define VFW_E_FILTER_ACTIVE ((HRESULT)0x80040205L) + +// +// MessageId: VFW_E_NO_TYPES +// +// MessageText: +// +// One of the specified pins supports no media types.%0 +// +#define VFW_E_NO_TYPES ((HRESULT)0x80040206L) + +// +// MessageId: VFW_E_NO_ACCEPTABLE_TYPES +// +// MessageText: +// +// There is no common media type between these pins.%0 +// +#define VFW_E_NO_ACCEPTABLE_TYPES ((HRESULT)0x80040207L) + +// +// MessageId: VFW_E_INVALID_DIRECTION +// +// MessageText: +// +// Two pins of the same direction cannot be connected together.%0 +// +#define VFW_E_INVALID_DIRECTION ((HRESULT)0x80040208L) + +// +// MessageId: VFW_E_NOT_CONNECTED +// +// MessageText: +// +// The operation cannot be performed because the pins are not connected.%0 +// +#define VFW_E_NOT_CONNECTED ((HRESULT)0x80040209L) + +// +// MessageId: VFW_E_NO_ALLOCATOR +// +// MessageText: +// +// No sample buffer allocator is available.%0 +// +#define VFW_E_NO_ALLOCATOR ((HRESULT)0x8004020AL) + +// +// MessageId: VFW_E_RUNTIME_ERROR +// +// MessageText: +// +// A run-time error occurred.%0 +// +#define VFW_E_RUNTIME_ERROR ((HRESULT)0x8004020BL) + +// +// MessageId: VFW_E_BUFFER_NOTSET +// +// MessageText: +// +// No buffer space has been set.%0 +// +#define VFW_E_BUFFER_NOTSET ((HRESULT)0x8004020CL) + +// +// MessageId: VFW_E_BUFFER_OVERFLOW +// +// MessageText: +// +// The buffer is not big enough.%0 +// +#define VFW_E_BUFFER_OVERFLOW ((HRESULT)0x8004020DL) + +// +// MessageId: VFW_E_BADALIGN +// +// MessageText: +// +// An invalid alignment was specified.%0 +// +#define VFW_E_BADALIGN ((HRESULT)0x8004020EL) + +// +// MessageId: VFW_E_ALREADY_COMMITTED +// +// MessageText: +// +// Cannot change allocated memory while the filter is active.%0 +// +#define VFW_E_ALREADY_COMMITTED ((HRESULT)0x8004020FL) + +// +// MessageId: VFW_E_BUFFERS_OUTSTANDING +// +// MessageText: +// +// One or more buffers are still active.%0 +// +#define VFW_E_BUFFERS_OUTSTANDING ((HRESULT)0x80040210L) + +// +// MessageId: VFW_E_NOT_COMMITTED +// +// MessageText: +// +// Cannot allocate a sample when the allocator is not active.%0 +// +#define VFW_E_NOT_COMMITTED ((HRESULT)0x80040211L) + +// +// MessageId: VFW_E_SIZENOTSET +// +// MessageText: +// +// Cannot allocate memory because no size has been set.%0 +// +#define VFW_E_SIZENOTSET ((HRESULT)0x80040212L) + +// +// MessageId: VFW_E_NO_CLOCK +// +// MessageText: +// +// Cannot lock for synchronization because no clock has been defined.%0 +// +#define VFW_E_NO_CLOCK ((HRESULT)0x80040213L) + +// +// MessageId: VFW_E_NO_SINK +// +// MessageText: +// +// Quality messages could not be sent because no quality sink has been defined.%0 +// +#define VFW_E_NO_SINK ((HRESULT)0x80040214L) + +// +// MessageId: VFW_E_NO_INTERFACE +// +// MessageText: +// +// A required interface has not been implemented.%0 +// +#define VFW_E_NO_INTERFACE ((HRESULT)0x80040215L) + +// +// MessageId: VFW_E_NOT_FOUND +// +// MessageText: +// +// An object or name was not found.%0 +// +#define VFW_E_NOT_FOUND ((HRESULT)0x80040216L) + +// +// MessageId: VFW_E_CANNOT_CONNECT +// +// MessageText: +// +// No combination of intermediate filters could be found to make the connection.%0 +// +#define VFW_E_CANNOT_CONNECT ((HRESULT)0x80040217L) + +// +// MessageId: VFW_E_CANNOT_RENDER +// +// MessageText: +// +// No combination of filters could be found to render the stream.%0 +// +#define VFW_E_CANNOT_RENDER ((HRESULT)0x80040218L) + +// +// MessageId: VFW_E_CHANGING_FORMAT +// +// MessageText: +// +// Could not change formats dynamically.%0 +// +#define VFW_E_CHANGING_FORMAT ((HRESULT)0x80040219L) + +// +// MessageId: VFW_E_NO_COLOR_KEY_SET +// +// MessageText: +// +// No color key has been set.%0 +// +#define VFW_E_NO_COLOR_KEY_SET ((HRESULT)0x8004021AL) + +// +// MessageId: VFW_E_NOT_OVERLAY_CONNECTION +// +// MessageText: +// +// Current pin connection is not using the IOverlay transport.%0 +// +#define VFW_E_NOT_OVERLAY_CONNECTION ((HRESULT)0x8004021BL) + +// +// MessageId: VFW_E_NOT_SAMPLE_CONNECTION +// +// MessageText: +// +// Current pin connection is not using the IMemInputPin transport.%0 +// +#define VFW_E_NOT_SAMPLE_CONNECTION ((HRESULT)0x8004021CL) + +// +// MessageId: VFW_E_PALETTE_SET +// +// MessageText: +// +// Setting a color key would conflict with the palette already set.%0 +// +#define VFW_E_PALETTE_SET ((HRESULT)0x8004021DL) + +// +// MessageId: VFW_E_COLOR_KEY_SET +// +// MessageText: +// +// Setting a palette would conflict with the color key already set.%0 +// +#define VFW_E_COLOR_KEY_SET ((HRESULT)0x8004021EL) + +// +// MessageId: VFW_E_NO_COLOR_KEY_FOUND +// +// MessageText: +// +// No matching color key is available.%0 +// +#define VFW_E_NO_COLOR_KEY_FOUND ((HRESULT)0x8004021FL) + +// +// MessageId: VFW_E_NO_PALETTE_AVAILABLE +// +// MessageText: +// +// No palette is available.%0 +// +#define VFW_E_NO_PALETTE_AVAILABLE ((HRESULT)0x80040220L) + +// +// MessageId: VFW_E_NO_DISPLAY_PALETTE +// +// MessageText: +// +// Display does not use a palette.%0 +// +#define VFW_E_NO_DISPLAY_PALETTE ((HRESULT)0x80040221L) + +// +// MessageId: VFW_E_TOO_MANY_COLORS +// +// MessageText: +// +// Too many colors for the current display settings.%0 +// +#define VFW_E_TOO_MANY_COLORS ((HRESULT)0x80040222L) + +// +// MessageId: VFW_E_STATE_CHANGED +// +// MessageText: +// +// The state changed while waiting to process the sample.%0 +// +#define VFW_E_STATE_CHANGED ((HRESULT)0x80040223L) + +// +// MessageId: VFW_E_NOT_STOPPED +// +// MessageText: +// +// The operation could not be performed because the filter is not stopped.%0 +// +#define VFW_E_NOT_STOPPED ((HRESULT)0x80040224L) + +// +// MessageId: VFW_E_NOT_PAUSED +// +// MessageText: +// +// The operation could not be performed because the filter is not paused.%0 +// +#define VFW_E_NOT_PAUSED ((HRESULT)0x80040225L) + +// +// MessageId: VFW_E_NOT_RUNNING +// +// MessageText: +// +// The operation could not be performed because the filter is not running.%0 +// +#define VFW_E_NOT_RUNNING ((HRESULT)0x80040226L) + +// +// MessageId: VFW_E_WRONG_STATE +// +// MessageText: +// +// The operation could not be performed because the filter is in the wrong state.%0 +// +#define VFW_E_WRONG_STATE ((HRESULT)0x80040227L) + +// +// MessageId: VFW_E_START_TIME_AFTER_END +// +// MessageText: +// +// The sample start time is after the sample end time.%0 +// +#define VFW_E_START_TIME_AFTER_END ((HRESULT)0x80040228L) + +// +// MessageId: VFW_E_INVALID_RECT +// +// MessageText: +// +// The supplied rectangle is invalid.%0 +// +#define VFW_E_INVALID_RECT ((HRESULT)0x80040229L) + +// +// MessageId: VFW_E_TYPE_NOT_ACCEPTED +// +// MessageText: +// +// This pin cannot use the supplied media type.%0 +// +#define VFW_E_TYPE_NOT_ACCEPTED ((HRESULT)0x8004022AL) + +// +// MessageId: VFW_E_SAMPLE_REJECTED +// +// MessageText: +// +// This sample cannot be rendered.%0 +// +#define VFW_E_SAMPLE_REJECTED ((HRESULT)0x8004022BL) + +// +// MessageId: VFW_E_SAMPLE_REJECTED_EOS +// +// MessageText: +// +// This sample cannot be rendered because the end of the stream has been reached.%0 +// +#define VFW_E_SAMPLE_REJECTED_EOS ((HRESULT)0x8004022CL) + +// +// MessageId: VFW_E_DUPLICATE_NAME +// +// MessageText: +// +// An attempt to add a filter with a duplicate name failed.%0 +// +#define VFW_E_DUPLICATE_NAME ((HRESULT)0x8004022DL) + +// +// MessageId: VFW_S_DUPLICATE_NAME +// +// MessageText: +// +// An attempt to add a filter with a duplicate name succeeded with a modified name.%0 +// +#define VFW_S_DUPLICATE_NAME ((HRESULT)0x0004022DL) + +// +// MessageId: VFW_E_TIMEOUT +// +// MessageText: +// +// A time-out has expired.%0 +// +#define VFW_E_TIMEOUT ((HRESULT)0x8004022EL) + +// +// MessageId: VFW_E_INVALID_FILE_FORMAT +// +// MessageText: +// +// The file format is invalid.%0 +// +#define VFW_E_INVALID_FILE_FORMAT ((HRESULT)0x8004022FL) + +// +// MessageId: VFW_E_ENUM_OUT_OF_RANGE +// +// MessageText: +// +// The list has already been exhausted.%0 +// +#define VFW_E_ENUM_OUT_OF_RANGE ((HRESULT)0x80040230L) + +// +// MessageId: VFW_E_CIRCULAR_GRAPH +// +// MessageText: +// +// The filter graph is circular.%0 +// +#define VFW_E_CIRCULAR_GRAPH ((HRESULT)0x80040231L) + +// +// MessageId: VFW_E_NOT_ALLOWED_TO_SAVE +// +// MessageText: +// +// Updates are not allowed in this state.%0 +// +#define VFW_E_NOT_ALLOWED_TO_SAVE ((HRESULT)0x80040232L) + +// +// MessageId: VFW_E_TIME_ALREADY_PASSED +// +// MessageText: +// +// An attempt was made to queue a command for a time in the past.%0 +// +#define VFW_E_TIME_ALREADY_PASSED ((HRESULT)0x80040233L) + +// +// MessageId: VFW_E_ALREADY_CANCELLED +// +// MessageText: +// +// The queued command has already been canceled.%0 +// +#define VFW_E_ALREADY_CANCELLED ((HRESULT)0x80040234L) + +// +// MessageId: VFW_E_CORRUPT_GRAPH_FILE +// +// MessageText: +// +// Cannot render the file because it is corrupt.%0 +// +#define VFW_E_CORRUPT_GRAPH_FILE ((HRESULT)0x80040235L) + +// +// MessageId: VFW_E_ADVISE_ALREADY_SET +// +// MessageText: +// +// An overlay advise link already exists.%0 +// +#define VFW_E_ADVISE_ALREADY_SET ((HRESULT)0x80040236L) + +// +// MessageId: VFW_S_STATE_INTERMEDIATE +// +// MessageText: +// +// The state transition has not completed.%0 +// +#define VFW_S_STATE_INTERMEDIATE ((HRESULT)0x00040237L) + +// +// MessageId: VFW_E_NO_MODEX_AVAILABLE +// +// MessageText: +// +// No full-screen modes are available.%0 +// +#define VFW_E_NO_MODEX_AVAILABLE ((HRESULT)0x80040238L) + +// +// MessageId: VFW_E_NO_ADVISE_SET +// +// MessageText: +// +// This Advise cannot be canceled because it was not successfully set.%0 +// +#define VFW_E_NO_ADVISE_SET ((HRESULT)0x80040239L) + +// +// MessageId: VFW_E_NO_FULLSCREEN +// +// MessageText: +// +// A full-screen mode is not available.%0 +// +#define VFW_E_NO_FULLSCREEN ((HRESULT)0x8004023AL) + +// +// MessageId: VFW_E_IN_FULLSCREEN_MODE +// +// MessageText: +// +// Cannot call IVideoWindow methods while in full-screen mode.%0 +// +#define VFW_E_IN_FULLSCREEN_MODE ((HRESULT)0x8004023BL) + +// +// MessageId: VFW_E_UNKNOWN_FILE_TYPE +// +// MessageText: +// +// The media type of this file is not recognized.%0 +// +#define VFW_E_UNKNOWN_FILE_TYPE ((HRESULT)0x80040240L) + +// +// MessageId: VFW_E_CANNOT_LOAD_SOURCE_FILTER +// +// MessageText: +// +// The source filter for this file could not be loaded.%0 +// +#define VFW_E_CANNOT_LOAD_SOURCE_FILTER ((HRESULT)0x80040241L) + +// +// MessageId: VFW_S_PARTIAL_RENDER +// +// MessageText: +// +// Some of the streams in this movie are in an unsupported format.%0 +// +#define VFW_S_PARTIAL_RENDER ((HRESULT)0x00040242L) + +// +// MessageId: VFW_E_FILE_TOO_SHORT +// +// MessageText: +// +// A file appeared to be incomplete.%0 +// +#define VFW_E_FILE_TOO_SHORT ((HRESULT)0x80040243L) + +// +// MessageId: VFW_E_INVALID_FILE_VERSION +// +// MessageText: +// +// The version number of the file is invalid.%0 +// +#define VFW_E_INVALID_FILE_VERSION ((HRESULT)0x80040244L) + +// +// MessageId: VFW_S_SOME_DATA_IGNORED +// +// MessageText: +// +// The file contained some property settings that were not used.%0 +// +#define VFW_S_SOME_DATA_IGNORED ((HRESULT)0x00040245L) + +// +// MessageId: VFW_S_CONNECTIONS_DEFERRED +// +// MessageText: +// +// Some connections have failed and have been deferred.%0 +// +#define VFW_S_CONNECTIONS_DEFERRED ((HRESULT)0x00040246L) + +// +// MessageId: VFW_E_INVALID_CLSID +// +// MessageText: +// +// This file is corrupt: it contains an invalid class identifier.%0 +// +#define VFW_E_INVALID_CLSID ((HRESULT)0x80040247L) + +// +// MessageId: VFW_E_INVALID_MEDIA_TYPE +// +// MessageText: +// +// This file is corrupt: it contains an invalid media type.%0 +// +#define VFW_E_INVALID_MEDIA_TYPE ((HRESULT)0x80040248L) + + // Message id from WINWarning.H +// +// MessageId: VFW_E_BAD_KEY +// +// MessageText: +// +// A registry entry is corrupt.%0 +// +#define VFW_E_BAD_KEY ((HRESULT)0x800403F2L) + + // Message id from WINWarning.H +// +// MessageId: VFW_S_NO_MORE_ITEMS +// +// MessageText: +// +// The end of the list has been reached.%0 +// +#define VFW_S_NO_MORE_ITEMS ((HRESULT)0x00040103L) + +// +// MessageId: VFW_E_SAMPLE_TIME_NOT_SET +// +// MessageText: +// +// No time stamp has been set for this sample.%0 +// +#define VFW_E_SAMPLE_TIME_NOT_SET ((HRESULT)0x80040249L) + +// +// MessageId: VFW_S_RESOURCE_NOT_NEEDED +// +// MessageText: +// +// The resource specified is no longer needed.%0 +// +#define VFW_S_RESOURCE_NOT_NEEDED ((HRESULT)0x00040250L) + +// +// MessageId: VFW_E_MEDIA_TIME_NOT_SET +// +// MessageText: +// +// No media time stamp has been set for this sample.%0 +// +#define VFW_E_MEDIA_TIME_NOT_SET ((HRESULT)0x80040251L) + +// +// MessageId: VFW_E_NO_TIME_FORMAT_SET +// +// MessageText: +// +// No media time format has been selected.%0 +// +#define VFW_E_NO_TIME_FORMAT_SET ((HRESULT)0x80040252L) + +// +// MessageId: VFW_E_MONO_AUDIO_HW +// +// MessageText: +// +// Cannot change balance because audio device is mono only.%0 +// +#define VFW_E_MONO_AUDIO_HW ((HRESULT)0x80040253L) + +// +// MessageId: VFW_S_MEDIA_TYPE_IGNORED +// +// MessageText: +// +// A connection could not be made with the media type in the persistent graph,%0 +// but has been made with a negotiated media type.%0 +// +#define VFW_S_MEDIA_TYPE_IGNORED ((HRESULT)0x00040254L) + +// +// MessageId: VFW_E_NO_DECOMPRESSOR +// +// MessageText: +// +// Cannot play back the video stream: no suitable decompressor could be found.%0 +// +#define VFW_E_NO_DECOMPRESSOR ((HRESULT)0x80040255L) + +// +// MessageId: VFW_E_NO_AUDIO_HARDWARE +// +// MessageText: +// +// Cannot play back the audio stream: no audio hardware is available, or the hardware is not responding.%0 +// +#define VFW_E_NO_AUDIO_HARDWARE ((HRESULT)0x80040256L) + +// +// MessageId: VFW_S_VIDEO_NOT_RENDERED +// +// MessageText: +// +// Cannot play back the video stream: no suitable decompressor could be found.%0 +// +#define VFW_S_VIDEO_NOT_RENDERED ((HRESULT)0x00040257L) + +// +// MessageId: VFW_S_AUDIO_NOT_RENDERED +// +// MessageText: +// +// Cannot play back the audio stream: no audio hardware is available.%0 +// +#define VFW_S_AUDIO_NOT_RENDERED ((HRESULT)0x00040258L) + +// +// MessageId: VFW_E_RPZA +// +// MessageText: +// +// Cannot play back the video stream: format 'RPZA' is not supported.%0 +// +#define VFW_E_RPZA ((HRESULT)0x80040259L) + +// +// MessageId: VFW_S_RPZA +// +// MessageText: +// +// Cannot play back the video stream: format 'RPZA' is not supported.%0 +// +#define VFW_S_RPZA ((HRESULT)0x0004025AL) + +// +// MessageId: VFW_E_PROCESSOR_NOT_SUITABLE +// +// MessageText: +// +// ActiveMovie cannot play MPEG movies on this processor.%0 +// +#define VFW_E_PROCESSOR_NOT_SUITABLE ((HRESULT)0x8004025BL) + +// +// MessageId: VFW_E_UNSUPPORTED_AUDIO +// +// MessageText: +// +// Cannot play back the audio stream: the audio format is not supported.%0 +// +#define VFW_E_UNSUPPORTED_AUDIO ((HRESULT)0x8004025CL) + +// +// MessageId: VFW_E_UNSUPPORTED_VIDEO +// +// MessageText: +// +// Cannot play back the video stream: the video format is not supported.%0 +// +#define VFW_E_UNSUPPORTED_VIDEO ((HRESULT)0x8004025DL) + +// +// MessageId: VFW_E_MPEG_NOT_CONSTRAINED +// +// MessageText: +// +// ActiveMovie cannot play this video stream because it falls outside the constrained standard.%0 +// +#define VFW_E_MPEG_NOT_CONSTRAINED ((HRESULT)0x8004025EL) + +// +// MessageId: VFW_E_NOT_IN_GRAPH +// +// MessageText: +// +// Cannot perform the requested function on an object that is not in the filter graph.%0 +// +#define VFW_E_NOT_IN_GRAPH ((HRESULT)0x8004025FL) + +// +// MessageId: VFW_S_ESTIMATED +// +// MessageText: +// +// The value returned had to be estimated. It's accuracy can not be guaranteed.%0 +// +#define VFW_S_ESTIMATED ((HRESULT)0x00040260L) + +// +// MessageId: VFW_E_NO_TIME_FORMAT +// +// MessageText: +// +// Cannot get or set time related information on an object that is using a time format of TIME_FORMAT_NONE.%0 +// +#define VFW_E_NO_TIME_FORMAT ((HRESULT)0x80040261L) + +// +// MessageId: VFW_E_READ_ONLY +// +// MessageText: +// +// The connection cannot be made because the stream is read only and the filter alters the data.%0 +// +#define VFW_E_READ_ONLY ((HRESULT)0x80040262L) + +// +// MessageId: VFW_S_RESERVED +// +// MessageText: +// +// This success code is reserved for internal purposes within ActiveMovie.%0 +// +#define VFW_S_RESERVED ((HRESULT)0x00040263L) + +// +// MessageId: VFW_E_BUFFER_UNDERFLOW +// +// MessageText: +// +// The buffer is not full enough.%0 +// +#define VFW_E_BUFFER_UNDERFLOW ((HRESULT)0x80040264L) + +// +// MessageId: VFW_E_UNSUPPORTED_STREAM +// +// MessageText: +// +// Cannot play back the file. The format is not supported.%0 +// +#define VFW_E_UNSUPPORTED_STREAM ((HRESULT)0x80040265L) + +// +// MessageId: VFW_E_NO_TRANSPORT +// +// MessageText: +// +// Pins cannot connect due to not supporting the same transport.%0 +// +#define VFW_E_NO_TRANSPORT ((HRESULT)0x80040266L) + +// +// MessageId: VFW_S_STREAM_OFF +// +// MessageText: +// +// The stream has been turned off.%0 +// +#define VFW_S_STREAM_OFF ((HRESULT)0x00040267L) + +// +// MessageId: VFW_S_CANT_CUE +// +// MessageText: +// +// The graph can't be cued because of lack of or corrupt data.%0 +// +#define VFW_S_CANT_CUE ((HRESULT)0x00040268L) + +// +// MessageId: VFW_E_BAD_VIDEOCD +// +// MessageText: +// +// The Video CD can't be read correctly by the device or is the data is corrupt.%0 +// +#define VFW_E_BAD_VIDEOCD ((HRESULT)0x80040269L) + +// +// MessageId: VFW_S_NO_STOP_TIME +// +// MessageText: +// +// The stop time for the sample was not set.%0 +// +#define VFW_S_NO_STOP_TIME ((HRESULT)0x00040270L) + +// +// MessageId: VFW_E_OUT_OF_VIDEO_MEMORY +// +// MessageText: +// +// There is not enough Video Memory at this display resolution and number of colors. Reducing resolution might help.%0 +// +#define VFW_E_OUT_OF_VIDEO_MEMORY ((HRESULT)0x80040271L) + +// +// MessageId: VFW_E_VP_NEGOTIATION_FAILED +// +// MessageText: +// +// The VideoPort connection negotiation process has failed.%0 +// +#define VFW_E_VP_NEGOTIATION_FAILED ((HRESULT)0x80040272L) + +// +// MessageId: VFW_E_DDRAW_CAPS_NOT_SUITABLE +// +// MessageText: +// +// Either DirectDraw has not been installed or the Video Card capabilities are not suitable. Make sure the display is not in 16 color mode.%0 +// +#define VFW_E_DDRAW_CAPS_NOT_SUITABLE ((HRESULT)0x80040273L) + +// +// MessageId: VFW_E_NO_VP_HARDWARE +// +// MessageText: +// +// No VideoPort hardware is available, or the hardware is not responding.%0 +// +#define VFW_E_NO_VP_HARDWARE ((HRESULT)0x80040274L) + +// +// MessageId: VFW_E_NO_CAPTURE_HARDWARE +// +// MessageText: +// +// No Capture hardware is available, or the hardware is not responding.%0 +// +#define VFW_E_NO_CAPTURE_HARDWARE ((HRESULT)0x80040275L) + +// +// MessageId: VFW_E_DVD_OPERATION_INHIBITED +// +// MessageText: +// +// This User Operation is inhibited by DVD Content at this time.%0 +// +#define VFW_E_DVD_OPERATION_INHIBITED ((HRESULT)0x80040276L) + +// +// MessageId: VFW_E_DVD_INVALIDDOMAIN +// +// MessageText: +// +// This Operation is not permitted in the current domain.%0 +// +#define VFW_E_DVD_INVALIDDOMAIN ((HRESULT)0x80040277L) + +// +// MessageId: VFW_E_DVD_NO_BUTTON +// +// MessageText: +// +// The specified button is invalid or is not present at the current time, or there is no button present at the specified location.%0 +// +#define VFW_E_DVD_NO_BUTTON ((HRESULT)0x80040278L) + +// +// MessageId: VFW_E_DVD_GRAPHNOTREADY +// +// MessageText: +// +// DVD-Video playback graph has not been built yet.%0 +// +#define VFW_E_DVD_GRAPHNOTREADY ((HRESULT)0x80040279L) + +// +// MessageId: VFW_E_DVD_RENDERFAIL +// +// MessageText: +// +// DVD-Video playback graph building failed.%0 +// +#define VFW_E_DVD_RENDERFAIL ((HRESULT)0x8004027AL) + +// +// MessageId: VFW_E_DVD_DECNOTENOUGH +// +// MessageText: +// +// DVD-Video playback graph could not be built due to insufficient decoders.%0 +// +#define VFW_E_DVD_DECNOTENOUGH ((HRESULT)0x8004027BL) + +// +// MessageId: VFW_E_DDRAW_VERSION_NOT_SUITABLE +// +// MessageText: +// +// Version number of DirectDraw not suitable. Make sure to install dx5 or higher version.%0 +// +#define VFW_E_DDRAW_VERSION_NOT_SUITABLE ((HRESULT)0x8004027CL) + +// +// MessageId: VFW_E_COPYPROT_FAILED +// +// MessageText: +// +// Copy protection cannot be enabled. Please make sure any other copy protected content is not being shown now.%0 +// +#define VFW_E_COPYPROT_FAILED ((HRESULT)0x8004027DL) + +// +// MessageId: VFW_S_NOPREVIEWPIN +// +// MessageText: +// +// There was no preview pin available, so the capture pin output is being split to provide both capture and preview.%0 +// +#define VFW_S_NOPREVIEWPIN ((HRESULT)0x0004027EL) + +// +// MessageId: VFW_E_TIME_EXPIRED +// +// MessageText: +// +// This object cannot be used anymore as its time has expired.%0 +// +#define VFW_E_TIME_EXPIRED ((HRESULT)0x8004027FL) + +// +// MessageId: VFW_S_DVD_NON_ONE_SEQUENTIAL +// +// MessageText: +// +// The current title was not a sequential set of chapters (PGC), and the returned timing information might not be continuous.%0 +// +#define VFW_S_DVD_NON_ONE_SEQUENTIAL ((HRESULT)0x00040280L) + +// +// MessageId: VFW_E_DVD_WRONG_SPEED +// +// MessageText: +// +// The operation cannot be performed at the current playback speed.%0 +// +#define VFW_E_DVD_WRONG_SPEED ((HRESULT)0x80040281L) + +// +// MessageId: VFW_E_DVD_MENU_DOES_NOT_EXIST +// +// MessageText: +// +// The specified menu doesn't exist.%0 +// +#define VFW_E_DVD_MENU_DOES_NOT_EXIST ((HRESULT)0x80040282L) + +// +// MessageId: VFW_E_DVD_CMD_CANCELLED +// +// MessageText: +// +// The specified command was either cancelled or no longer exists.%0 +// +#define VFW_E_DVD_CMD_CANCELLED ((HRESULT)0x80040283L) + +// +// MessageId: VFW_E_DVD_STATE_WRONG_VERSION +// +// MessageText: +// +// The data did not contain a recognized version.%0 +// +#define VFW_E_DVD_STATE_WRONG_VERSION ((HRESULT)0x80040284L) + +// +// MessageId: VFW_E_DVD_STATE_CORRUPT +// +// MessageText: +// +// The state data was corrupt.%0 +// +#define VFW_E_DVD_STATE_CORRUPT ((HRESULT)0x80040285L) + +// +// MessageId: VFW_E_DVD_STATE_WRONG_DISC +// +// MessageText: +// +// The state data is from a different disc.%0 +// +#define VFW_E_DVD_STATE_WRONG_DISC ((HRESULT)0x80040286L) + +// +// MessageId: VFW_E_DVD_INCOMPATIBLE_REGION +// +// MessageText: +// +// The region was not compatible with the current drive.%0 +// +#define VFW_E_DVD_INCOMPATIBLE_REGION ((HRESULT)0x80040287L) + +// +// MessageId: VFW_E_DVD_NO_ATTRIBUTES +// +// MessageText: +// +// The requested DVD stream attribute does not exist.%0 +// +#define VFW_E_DVD_NO_ATTRIBUTES ((HRESULT)0x80040288L) + +// +// MessageId: VFW_E_DVD_NO_GOUP_PGC +// +// MessageText: +// +// Currently there is no GoUp (Annex J user function) program chain (PGC).%0 +// +#define VFW_E_DVD_NO_GOUP_PGC ((HRESULT)0x80040289L) + +// +// MessageId: VFW_E_DVD_LOW_PARENTAL_LEVEL +// +// MessageText: +// +// The current parental level was too low.%0 +// +#define VFW_E_DVD_LOW_PARENTAL_LEVEL ((HRESULT)0x8004028AL) + +// +// MessageId: VFW_E_DVD_NOT_IN_KARAOKE_MODE +// +// MessageText: +// +// The current audio is not karaoke content.%0 +// +#define VFW_E_DVD_NOT_IN_KARAOKE_MODE ((HRESULT)0x8004028BL) + +// +// MessageId: VFW_S_DVD_CHANNEL_CONTENTS_NOT_AVAILABLE +// +// MessageText: +// +// The audio stream did not contain sufficient information to determine the contents of each channel.%0 +// +#define VFW_S_DVD_CHANNEL_CONTENTS_NOT_AVAILABLE ((HRESULT)0x0004028CL) + +// +// MessageId: VFW_S_DVD_NOT_ACCURATE +// +// MessageText: +// +// The seek into the movie was not frame accurate.%0 +// +#define VFW_S_DVD_NOT_ACCURATE ((HRESULT)0x0004028DL) + +// +// MessageId: VFW_E_FRAME_STEP_UNSUPPORTED +// +// MessageText: +// +// Frame step is not supported on this configuration.%0 +// +#define VFW_E_FRAME_STEP_UNSUPPORTED ((HRESULT)0x8004028EL) + +// +// MessageId: VFW_E_DVD_STREAM_DISABLED +// +// MessageText: +// +// The specified stream is disabled and cannot be selected.%0 +// +#define VFW_E_DVD_STREAM_DISABLED ((HRESULT)0x8004028FL) + +// +// MessageId: VFW_E_DVD_TITLE_UNKNOWN +// +// MessageText: +// +// The operation depends on the current title number, however the navigator has not yet entered the VTSM or the title domains, +// so the 'current' title index is unknown.%0 +// +#define VFW_E_DVD_TITLE_UNKNOWN ((HRESULT)0x80040290L) + +// +// MessageId: VFW_E_DVD_INVALID_DISC +// +// MessageText: +// +// The specified path does not point to a valid DVD disc.%0 +// +#define VFW_E_DVD_INVALID_DISC ((HRESULT)0x80040291L) + +// +// MessageId: VFW_E_DVD_NO_RESUME_INFORMATION +// +// MessageText: +// +// There is currently no resume information.%0 +// +#define VFW_E_DVD_NO_RESUME_INFORMATION ((HRESULT)0x80040292L) + +// +// MessageId: VFW_E_PIN_ALREADY_BLOCKED_ON_THIS_THREAD +// +// MessageText: +// +// This thread has already blocked this output pin. There is no need to call IPinFlowControl::Block() again.%0 +// +#define VFW_E_PIN_ALREADY_BLOCKED_ON_THIS_THREAD ((HRESULT)0x80040293L) + +// +// MessageId: VFW_E_PIN_ALREADY_BLOCKED +// +// MessageText: +// +// IPinFlowControl::Block() has been called on another thread. The current thread cannot make any assumptions about this pin's block state.%0 +// +#define VFW_E_PIN_ALREADY_BLOCKED ((HRESULT)0x80040294L) + +// +// MessageId: VFW_E_CERTIFICATION_FAILURE +// +// MessageText: +// +// An operation failed due to a certification failure.%0 +// +#define VFW_E_CERTIFICATION_FAILURE ((HRESULT)0x80040295L) + +// +// MessageId: VFW_E_VMR_NOT_IN_MIXER_MODE +// +// MessageText: +// +// The VMR has not yet created a mixing component. That is, IVMRFilterConfig::SetNumberofStreams has not yet been called.%0 +// +#define VFW_E_VMR_NOT_IN_MIXER_MODE ((HRESULT)0x80040296L) + +// +// MessageId: VFW_E_VMR_NO_AP_SUPPLIED +// +// MessageText: +// +// The application has not yet provided the VMR filter with a valid allocator-presenter object.%0 +// +#define VFW_E_VMR_NO_AP_SUPPLIED ((HRESULT)0x80040297L) +// +// MessageId: VFW_E_VMR_NO_DEINTERLACE_HW +// +// MessageText: +// +// The VMR could not find any de-interlacing hardware on the current display device.%0 +// +#define VFW_E_VMR_NO_DEINTERLACE_HW ((HRESULT)0x80040298L) +// +// MessageId: VFW_E_VMR_NO_PROCAMP_HW +// +// MessageText: +// +// The VMR could not find any ProcAmp hardware on the current display device.%0 +// +#define VFW_E_VMR_NO_PROCAMP_HW ((HRESULT)0x80040299L) +// +// MessageId: VFW_E_DVD_VMR9_INCOMPATIBLEDEC +// +// MessageText: +// +// VMR9 does not work with VPE-based hardware decoders.%0 +// +#define VFW_E_DVD_VMR9_INCOMPATIBLEDEC ((HRESULT)0x8004029AL) +// +// MessageId: VFW_E_NO_COPP_HW +// +// MessageText: +// +// The current display device does not support Content Output Protection Protocol (COPP) H/W.%0 +// +#define VFW_E_NO_COPP_HW ((HRESULT)0x8004029BL) +// +// +// E_PROP_SET_UNSUPPORTED and E_PROP_ID_UNSUPPORTED are added here using +// HRESULT_FROM_WIN32() because VC5 doesn't have WinNT's new error codes +// from winerror.h, and because it is more convienent to have them already +// formed as HRESULTs. These should correspond to: +// HRESULT_FROM_WIN32(ERROR_NOT_FOUND) == E_PROP_ID_UNSUPPORTED +// HRESULT_FROM_WIN32(ERROR_SET_NOT_FOUND) == E_PROP_SET_UNSUPPORTED +#if !defined(E_PROP_SET_UNSUPPORTED) +// +// MessageId: E_PROP_SET_UNSUPPORTED +// +// MessageText: +// +// The Specified property set is not supported.%0 +// +#define E_PROP_SET_UNSUPPORTED ((HRESULT)0x80070492L) + +#endif //!defined(E_PROP_SET_UNSUPPORTED) +#if !defined(E_PROP_ID_UNSUPPORTED) +// +// MessageId: E_PROP_ID_UNSUPPORTED +// +// MessageText: +// +// The specified property ID is not supported for the specified property set.%0 +// +#define E_PROP_ID_UNSUPPORTED ((HRESULT)0x80070490L) + +#endif //!defined(E_PROP_ID_UNSUPPORTED) diff --git a/videoInputSrcAndDemos/libs/DShow/Include/vidcap.h b/videoInputSrcAndDemos/libs/DShow/Include/vidcap.h index e332a42..23d810b 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/vidcap.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/vidcap.h @@ -1,619 +1,619 @@ - -#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.0347 */ -/* Compiler settings for vidcap.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 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 -#endif // __RPCNDR_H_VERSION__ - -#ifndef COM_NO_WINDOWS_H -#include "windows.h" -#include "ole2.h" -#endif /*COM_NO_WINDOWS_H*/ - -#ifndef __vidcap_h__ -#define __vidcap_h__ - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -#pragma once -#endif - -/* Forward Declarations */ - -#ifndef __IKsTopologyInfo_FWD_DEFINED__ -#define __IKsTopologyInfo_FWD_DEFINED__ -typedef interface IKsTopologyInfo IKsTopologyInfo; -#endif /* __IKsTopologyInfo_FWD_DEFINED__ */ - - -#ifndef __ISelector_FWD_DEFINED__ -#define __ISelector_FWD_DEFINED__ -typedef interface ISelector ISelector; -#endif /* __ISelector_FWD_DEFINED__ */ - - -#ifndef __IKsNodeControl_FWD_DEFINED__ -#define __IKsNodeControl_FWD_DEFINED__ -typedef interface IKsNodeControl IKsNodeControl; -#endif /* __IKsNodeControl_FWD_DEFINED__ */ - - -/* header files for imported files */ -#include "unknwn.h" -#include "strmif.h" - -#ifdef __cplusplus -extern "C"{ -#endif - -void * __RPC_USER MIDL_user_allocate(size_t); -void __RPC_USER MIDL_user_free( void * ); - -/* interface __MIDL_itf_vidcap_0000 */ -/* [local] */ - -#include "ks.h" -#ifndef _KS_ -typedef /* [public][public] */ struct __MIDL___MIDL_itf_vidcap_0000_0001 - { - ULONG FromNode; - ULONG FromNodePin; - ULONG ToNode; - ULONG ToNodePin; - } KSTOPOLOGY_CONNECTION; - -typedef struct __MIDL___MIDL_itf_vidcap_0000_0001 *PKSTOPOLOGY_CONNECTION; - -#endif - - -extern RPC_IF_HANDLE __MIDL_itf_vidcap_0000_v0_0_c_ifspec; -extern RPC_IF_HANDLE __MIDL_itf_vidcap_0000_v0_0_s_ifspec; - -#ifndef __IKsTopologyInfo_INTERFACE_DEFINED__ -#define __IKsTopologyInfo_INTERFACE_DEFINED__ - -/* interface IKsTopologyInfo */ -/* [unique][uuid][local][object] */ - - -EXTERN_C const IID IID_IKsTopologyInfo; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("720D4AC0-7533-11D0-A5D6-28DB04C10000") - IKsTopologyInfo : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE get_NumCategories( - /* [out] */ DWORD *pdwNumCategories) = 0; - - virtual HRESULT STDMETHODCALLTYPE get_Category( - /* [in] */ DWORD dwIndex, - /* [out] */ GUID *pCategory) = 0; - - virtual HRESULT STDMETHODCALLTYPE get_NumConnections( - /* [out] */ DWORD *pdwNumConnections) = 0; - - virtual HRESULT STDMETHODCALLTYPE get_ConnectionInfo( - /* [in] */ DWORD dwIndex, - /* [out] */ KSTOPOLOGY_CONNECTION *pConnectionInfo) = 0; - - virtual HRESULT STDMETHODCALLTYPE get_NodeName( - /* [in] */ DWORD dwNodeId, - /* [out] */ WCHAR *pwchNodeName, - /* [in] */ DWORD dwBufSize, - /* [out] */ DWORD *pdwNameLen) = 0; - - virtual HRESULT STDMETHODCALLTYPE get_NumNodes( - /* [out] */ DWORD *pdwNumNodes) = 0; - - virtual HRESULT STDMETHODCALLTYPE get_NodeType( - /* [in] */ DWORD dwNodeId, - /* [out] */ GUID *pNodeType) = 0; - - virtual HRESULT STDMETHODCALLTYPE CreateNodeInstance( - /* [in] */ DWORD dwNodeId, - /* [in] */ REFIID iid, - /* [out] */ void **ppvObject) = 0; - - }; - -#else /* C style interface */ - - typedef struct IKsTopologyInfoVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IKsTopologyInfo * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IKsTopologyInfo * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IKsTopologyInfo * This); - - HRESULT ( STDMETHODCALLTYPE *get_NumCategories )( - IKsTopologyInfo * This, - /* [out] */ DWORD *pdwNumCategories); - - HRESULT ( STDMETHODCALLTYPE *get_Category )( - IKsTopologyInfo * This, - /* [in] */ DWORD dwIndex, - /* [out] */ GUID *pCategory); - - HRESULT ( STDMETHODCALLTYPE *get_NumConnections )( - IKsTopologyInfo * This, - /* [out] */ DWORD *pdwNumConnections); - - HRESULT ( STDMETHODCALLTYPE *get_ConnectionInfo )( - IKsTopologyInfo * This, - /* [in] */ DWORD dwIndex, - /* [out] */ KSTOPOLOGY_CONNECTION *pConnectionInfo); - - HRESULT ( STDMETHODCALLTYPE *get_NodeName )( - IKsTopologyInfo * This, - /* [in] */ DWORD dwNodeId, - /* [out] */ WCHAR *pwchNodeName, - /* [in] */ DWORD dwBufSize, - /* [out] */ DWORD *pdwNameLen); - - HRESULT ( STDMETHODCALLTYPE *get_NumNodes )( - IKsTopologyInfo * This, - /* [out] */ DWORD *pdwNumNodes); - - HRESULT ( STDMETHODCALLTYPE *get_NodeType )( - IKsTopologyInfo * This, - /* [in] */ DWORD dwNodeId, - /* [out] */ GUID *pNodeType); - - HRESULT ( STDMETHODCALLTYPE *CreateNodeInstance )( - IKsTopologyInfo * This, - /* [in] */ DWORD dwNodeId, - /* [in] */ REFIID iid, - /* [out] */ void **ppvObject); - - END_INTERFACE - } IKsTopologyInfoVtbl; - - interface IKsTopologyInfo - { - CONST_VTBL struct IKsTopologyInfoVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IKsTopologyInfo_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IKsTopologyInfo_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IKsTopologyInfo_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IKsTopologyInfo_get_NumCategories(This,pdwNumCategories) \ - (This)->lpVtbl -> get_NumCategories(This,pdwNumCategories) - -#define IKsTopologyInfo_get_Category(This,dwIndex,pCategory) \ - (This)->lpVtbl -> get_Category(This,dwIndex,pCategory) - -#define IKsTopologyInfo_get_NumConnections(This,pdwNumConnections) \ - (This)->lpVtbl -> get_NumConnections(This,pdwNumConnections) - -#define IKsTopologyInfo_get_ConnectionInfo(This,dwIndex,pConnectionInfo) \ - (This)->lpVtbl -> get_ConnectionInfo(This,dwIndex,pConnectionInfo) - -#define IKsTopologyInfo_get_NodeName(This,dwNodeId,pwchNodeName,dwBufSize,pdwNameLen) \ - (This)->lpVtbl -> get_NodeName(This,dwNodeId,pwchNodeName,dwBufSize,pdwNameLen) - -#define IKsTopologyInfo_get_NumNodes(This,pdwNumNodes) \ - (This)->lpVtbl -> get_NumNodes(This,pdwNumNodes) - -#define IKsTopologyInfo_get_NodeType(This,dwNodeId,pNodeType) \ - (This)->lpVtbl -> get_NodeType(This,dwNodeId,pNodeType) - -#define IKsTopologyInfo_CreateNodeInstance(This,dwNodeId,iid,ppvObject) \ - (This)->lpVtbl -> CreateNodeInstance(This,dwNodeId,iid,ppvObject) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IKsTopologyInfo_get_NumCategories_Proxy( - IKsTopologyInfo * This, - /* [out] */ DWORD *pdwNumCategories); - - -void __RPC_STUB IKsTopologyInfo_get_NumCategories_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IKsTopologyInfo_get_Category_Proxy( - IKsTopologyInfo * This, - /* [in] */ DWORD dwIndex, - /* [out] */ GUID *pCategory); - - -void __RPC_STUB IKsTopologyInfo_get_Category_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IKsTopologyInfo_get_NumConnections_Proxy( - IKsTopologyInfo * This, - /* [out] */ DWORD *pdwNumConnections); - - -void __RPC_STUB IKsTopologyInfo_get_NumConnections_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IKsTopologyInfo_get_ConnectionInfo_Proxy( - IKsTopologyInfo * This, - /* [in] */ DWORD dwIndex, - /* [out] */ KSTOPOLOGY_CONNECTION *pConnectionInfo); - - -void __RPC_STUB IKsTopologyInfo_get_ConnectionInfo_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IKsTopologyInfo_get_NodeName_Proxy( - IKsTopologyInfo * This, - /* [in] */ DWORD dwNodeId, - /* [out] */ WCHAR *pwchNodeName, - /* [in] */ DWORD dwBufSize, - /* [out] */ DWORD *pdwNameLen); - - -void __RPC_STUB IKsTopologyInfo_get_NodeName_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IKsTopologyInfo_get_NumNodes_Proxy( - IKsTopologyInfo * This, - /* [out] */ DWORD *pdwNumNodes); - - -void __RPC_STUB IKsTopologyInfo_get_NumNodes_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IKsTopologyInfo_get_NodeType_Proxy( - IKsTopologyInfo * This, - /* [in] */ DWORD dwNodeId, - /* [out] */ GUID *pNodeType); - - -void __RPC_STUB IKsTopologyInfo_get_NodeType_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IKsTopologyInfo_CreateNodeInstance_Proxy( - IKsTopologyInfo * This, - /* [in] */ DWORD dwNodeId, - /* [in] */ REFIID iid, - /* [out] */ void **ppvObject); - - -void __RPC_STUB IKsTopologyInfo_CreateNodeInstance_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IKsTopologyInfo_INTERFACE_DEFINED__ */ - - -#ifndef __ISelector_INTERFACE_DEFINED__ -#define __ISelector_INTERFACE_DEFINED__ - -/* interface ISelector */ -/* [unique][uuid][local][object] */ - - -EXTERN_C const IID IID_ISelector; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("1ABDAECA-68B6-4F83-9371-B413907C7B9F") - ISelector : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE get_NumSources( - /* [out] */ DWORD *pdwNumSources) = 0; - - virtual HRESULT STDMETHODCALLTYPE get_SourceNodeId( - /* [out] */ DWORD *pdwPinId) = 0; - - virtual HRESULT STDMETHODCALLTYPE put_SourceNodeId( - /* [in] */ DWORD dwPinId) = 0; - - }; - -#else /* C style interface */ - - typedef struct ISelectorVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - ISelector * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - ISelector * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - ISelector * This); - - HRESULT ( STDMETHODCALLTYPE *get_NumSources )( - ISelector * This, - /* [out] */ DWORD *pdwNumSources); - - HRESULT ( STDMETHODCALLTYPE *get_SourceNodeId )( - ISelector * This, - /* [out] */ DWORD *pdwPinId); - - HRESULT ( STDMETHODCALLTYPE *put_SourceNodeId )( - ISelector * This, - /* [in] */ DWORD dwPinId); - - END_INTERFACE - } ISelectorVtbl; - - interface ISelector - { - CONST_VTBL struct ISelectorVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define ISelector_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define ISelector_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define ISelector_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define ISelector_get_NumSources(This,pdwNumSources) \ - (This)->lpVtbl -> get_NumSources(This,pdwNumSources) - -#define ISelector_get_SourceNodeId(This,pdwPinId) \ - (This)->lpVtbl -> get_SourceNodeId(This,pdwPinId) - -#define ISelector_put_SourceNodeId(This,dwPinId) \ - (This)->lpVtbl -> put_SourceNodeId(This,dwPinId) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE ISelector_get_NumSources_Proxy( - ISelector * This, - /* [out] */ DWORD *pdwNumSources); - - -void __RPC_STUB ISelector_get_NumSources_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE ISelector_get_SourceNodeId_Proxy( - ISelector * This, - /* [out] */ DWORD *pdwPinId); - - -void __RPC_STUB ISelector_get_SourceNodeId_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE ISelector_put_SourceNodeId_Proxy( - ISelector * This, - /* [in] */ DWORD dwPinId); - - -void __RPC_STUB ISelector_put_SourceNodeId_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __ISelector_INTERFACE_DEFINED__ */ - - -#ifndef __IKsNodeControl_INTERFACE_DEFINED__ -#define __IKsNodeControl_INTERFACE_DEFINED__ - -/* interface IKsNodeControl */ -/* [unique][uuid][local][object] */ - - -EXTERN_C const IID IID_IKsNodeControl; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("11737C14-24A7-4bb5-81A0-0D003813B0C4") - IKsNodeControl : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE put_NodeId( - /* [in] */ DWORD dwNodeId) = 0; - - virtual HRESULT STDMETHODCALLTYPE put_KsControl( - /* [in] */ PVOID pKsControl) = 0; - - }; - -#else /* C style interface */ - - typedef struct IKsNodeControlVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IKsNodeControl * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IKsNodeControl * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IKsNodeControl * This); - - HRESULT ( STDMETHODCALLTYPE *put_NodeId )( - IKsNodeControl * This, - /* [in] */ DWORD dwNodeId); - - HRESULT ( STDMETHODCALLTYPE *put_KsControl )( - IKsNodeControl * This, - /* [in] */ PVOID pKsControl); - - END_INTERFACE - } IKsNodeControlVtbl; - - interface IKsNodeControl - { - CONST_VTBL struct IKsNodeControlVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IKsNodeControl_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IKsNodeControl_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IKsNodeControl_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IKsNodeControl_put_NodeId(This,dwNodeId) \ - (This)->lpVtbl -> put_NodeId(This,dwNodeId) - -#define IKsNodeControl_put_KsControl(This,pKsControl) \ - (This)->lpVtbl -> put_KsControl(This,pKsControl) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IKsNodeControl_put_NodeId_Proxy( - IKsNodeControl * This, - /* [in] */ DWORD dwNodeId); - - -void __RPC_STUB IKsNodeControl_put_NodeId_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IKsNodeControl_put_KsControl_Proxy( - IKsNodeControl * This, - /* [in] */ PVOID pKsControl); - - -void __RPC_STUB IKsNodeControl_put_KsControl_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IKsNodeControl_INTERFACE_DEFINED__ */ - - -/* Additional Prototypes for ALL interfaces */ - -/* end of Additional Prototypes */ - -#ifdef __cplusplus -} -#endif - -#endif - - + +#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.0347 */ +/* Compiler settings for vidcap.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 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 +#endif // __RPCNDR_H_VERSION__ + +#ifndef COM_NO_WINDOWS_H +#include "windows.h" +#include "ole2.h" +#endif /*COM_NO_WINDOWS_H*/ + +#ifndef __vidcap_h__ +#define __vidcap_h__ + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#pragma once +#endif + +/* Forward Declarations */ + +#ifndef __IKsTopologyInfo_FWD_DEFINED__ +#define __IKsTopologyInfo_FWD_DEFINED__ +typedef interface IKsTopologyInfo IKsTopologyInfo; +#endif /* __IKsTopologyInfo_FWD_DEFINED__ */ + + +#ifndef __ISelector_FWD_DEFINED__ +#define __ISelector_FWD_DEFINED__ +typedef interface ISelector ISelector; +#endif /* __ISelector_FWD_DEFINED__ */ + + +#ifndef __IKsNodeControl_FWD_DEFINED__ +#define __IKsNodeControl_FWD_DEFINED__ +typedef interface IKsNodeControl IKsNodeControl; +#endif /* __IKsNodeControl_FWD_DEFINED__ */ + + +/* header files for imported files */ +#include "unknwn.h" +#include "strmif.h" + +#ifdef __cplusplus +extern "C"{ +#endif + +void * __RPC_USER MIDL_user_allocate(size_t); +void __RPC_USER MIDL_user_free( void * ); + +/* interface __MIDL_itf_vidcap_0000 */ +/* [local] */ + +#include "ks.h" +#ifndef _KS_ +typedef /* [public][public] */ struct __MIDL___MIDL_itf_vidcap_0000_0001 + { + ULONG FromNode; + ULONG FromNodePin; + ULONG ToNode; + ULONG ToNodePin; + } KSTOPOLOGY_CONNECTION; + +typedef struct __MIDL___MIDL_itf_vidcap_0000_0001 *PKSTOPOLOGY_CONNECTION; + +#endif + + +extern RPC_IF_HANDLE __MIDL_itf_vidcap_0000_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_vidcap_0000_v0_0_s_ifspec; + +#ifndef __IKsTopologyInfo_INTERFACE_DEFINED__ +#define __IKsTopologyInfo_INTERFACE_DEFINED__ + +/* interface IKsTopologyInfo */ +/* [unique][uuid][local][object] */ + + +EXTERN_C const IID IID_IKsTopologyInfo; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("720D4AC0-7533-11D0-A5D6-28DB04C10000") + IKsTopologyInfo : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE get_NumCategories( + /* [out] */ DWORD *pdwNumCategories) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_Category( + /* [in] */ DWORD dwIndex, + /* [out] */ GUID *pCategory) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_NumConnections( + /* [out] */ DWORD *pdwNumConnections) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_ConnectionInfo( + /* [in] */ DWORD dwIndex, + /* [out] */ KSTOPOLOGY_CONNECTION *pConnectionInfo) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_NodeName( + /* [in] */ DWORD dwNodeId, + /* [out] */ WCHAR *pwchNodeName, + /* [in] */ DWORD dwBufSize, + /* [out] */ DWORD *pdwNameLen) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_NumNodes( + /* [out] */ DWORD *pdwNumNodes) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_NodeType( + /* [in] */ DWORD dwNodeId, + /* [out] */ GUID *pNodeType) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreateNodeInstance( + /* [in] */ DWORD dwNodeId, + /* [in] */ REFIID iid, + /* [out] */ void **ppvObject) = 0; + + }; + +#else /* C style interface */ + + typedef struct IKsTopologyInfoVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IKsTopologyInfo * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IKsTopologyInfo * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IKsTopologyInfo * This); + + HRESULT ( STDMETHODCALLTYPE *get_NumCategories )( + IKsTopologyInfo * This, + /* [out] */ DWORD *pdwNumCategories); + + HRESULT ( STDMETHODCALLTYPE *get_Category )( + IKsTopologyInfo * This, + /* [in] */ DWORD dwIndex, + /* [out] */ GUID *pCategory); + + HRESULT ( STDMETHODCALLTYPE *get_NumConnections )( + IKsTopologyInfo * This, + /* [out] */ DWORD *pdwNumConnections); + + HRESULT ( STDMETHODCALLTYPE *get_ConnectionInfo )( + IKsTopologyInfo * This, + /* [in] */ DWORD dwIndex, + /* [out] */ KSTOPOLOGY_CONNECTION *pConnectionInfo); + + HRESULT ( STDMETHODCALLTYPE *get_NodeName )( + IKsTopologyInfo * This, + /* [in] */ DWORD dwNodeId, + /* [out] */ WCHAR *pwchNodeName, + /* [in] */ DWORD dwBufSize, + /* [out] */ DWORD *pdwNameLen); + + HRESULT ( STDMETHODCALLTYPE *get_NumNodes )( + IKsTopologyInfo * This, + /* [out] */ DWORD *pdwNumNodes); + + HRESULT ( STDMETHODCALLTYPE *get_NodeType )( + IKsTopologyInfo * This, + /* [in] */ DWORD dwNodeId, + /* [out] */ GUID *pNodeType); + + HRESULT ( STDMETHODCALLTYPE *CreateNodeInstance )( + IKsTopologyInfo * This, + /* [in] */ DWORD dwNodeId, + /* [in] */ REFIID iid, + /* [out] */ void **ppvObject); + + END_INTERFACE + } IKsTopologyInfoVtbl; + + interface IKsTopologyInfo + { + CONST_VTBL struct IKsTopologyInfoVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IKsTopologyInfo_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IKsTopologyInfo_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IKsTopologyInfo_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IKsTopologyInfo_get_NumCategories(This,pdwNumCategories) \ + (This)->lpVtbl -> get_NumCategories(This,pdwNumCategories) + +#define IKsTopologyInfo_get_Category(This,dwIndex,pCategory) \ + (This)->lpVtbl -> get_Category(This,dwIndex,pCategory) + +#define IKsTopologyInfo_get_NumConnections(This,pdwNumConnections) \ + (This)->lpVtbl -> get_NumConnections(This,pdwNumConnections) + +#define IKsTopologyInfo_get_ConnectionInfo(This,dwIndex,pConnectionInfo) \ + (This)->lpVtbl -> get_ConnectionInfo(This,dwIndex,pConnectionInfo) + +#define IKsTopologyInfo_get_NodeName(This,dwNodeId,pwchNodeName,dwBufSize,pdwNameLen) \ + (This)->lpVtbl -> get_NodeName(This,dwNodeId,pwchNodeName,dwBufSize,pdwNameLen) + +#define IKsTopologyInfo_get_NumNodes(This,pdwNumNodes) \ + (This)->lpVtbl -> get_NumNodes(This,pdwNumNodes) + +#define IKsTopologyInfo_get_NodeType(This,dwNodeId,pNodeType) \ + (This)->lpVtbl -> get_NodeType(This,dwNodeId,pNodeType) + +#define IKsTopologyInfo_CreateNodeInstance(This,dwNodeId,iid,ppvObject) \ + (This)->lpVtbl -> CreateNodeInstance(This,dwNodeId,iid,ppvObject) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IKsTopologyInfo_get_NumCategories_Proxy( + IKsTopologyInfo * This, + /* [out] */ DWORD *pdwNumCategories); + + +void __RPC_STUB IKsTopologyInfo_get_NumCategories_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IKsTopologyInfo_get_Category_Proxy( + IKsTopologyInfo * This, + /* [in] */ DWORD dwIndex, + /* [out] */ GUID *pCategory); + + +void __RPC_STUB IKsTopologyInfo_get_Category_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IKsTopologyInfo_get_NumConnections_Proxy( + IKsTopologyInfo * This, + /* [out] */ DWORD *pdwNumConnections); + + +void __RPC_STUB IKsTopologyInfo_get_NumConnections_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IKsTopologyInfo_get_ConnectionInfo_Proxy( + IKsTopologyInfo * This, + /* [in] */ DWORD dwIndex, + /* [out] */ KSTOPOLOGY_CONNECTION *pConnectionInfo); + + +void __RPC_STUB IKsTopologyInfo_get_ConnectionInfo_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IKsTopologyInfo_get_NodeName_Proxy( + IKsTopologyInfo * This, + /* [in] */ DWORD dwNodeId, + /* [out] */ WCHAR *pwchNodeName, + /* [in] */ DWORD dwBufSize, + /* [out] */ DWORD *pdwNameLen); + + +void __RPC_STUB IKsTopologyInfo_get_NodeName_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IKsTopologyInfo_get_NumNodes_Proxy( + IKsTopologyInfo * This, + /* [out] */ DWORD *pdwNumNodes); + + +void __RPC_STUB IKsTopologyInfo_get_NumNodes_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IKsTopologyInfo_get_NodeType_Proxy( + IKsTopologyInfo * This, + /* [in] */ DWORD dwNodeId, + /* [out] */ GUID *pNodeType); + + +void __RPC_STUB IKsTopologyInfo_get_NodeType_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IKsTopologyInfo_CreateNodeInstance_Proxy( + IKsTopologyInfo * This, + /* [in] */ DWORD dwNodeId, + /* [in] */ REFIID iid, + /* [out] */ void **ppvObject); + + +void __RPC_STUB IKsTopologyInfo_CreateNodeInstance_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IKsTopologyInfo_INTERFACE_DEFINED__ */ + + +#ifndef __ISelector_INTERFACE_DEFINED__ +#define __ISelector_INTERFACE_DEFINED__ + +/* interface ISelector */ +/* [unique][uuid][local][object] */ + + +EXTERN_C const IID IID_ISelector; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("1ABDAECA-68B6-4F83-9371-B413907C7B9F") + ISelector : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE get_NumSources( + /* [out] */ DWORD *pdwNumSources) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_SourceNodeId( + /* [out] */ DWORD *pdwPinId) = 0; + + virtual HRESULT STDMETHODCALLTYPE put_SourceNodeId( + /* [in] */ DWORD dwPinId) = 0; + + }; + +#else /* C style interface */ + + typedef struct ISelectorVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ISelector * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ISelector * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ISelector * This); + + HRESULT ( STDMETHODCALLTYPE *get_NumSources )( + ISelector * This, + /* [out] */ DWORD *pdwNumSources); + + HRESULT ( STDMETHODCALLTYPE *get_SourceNodeId )( + ISelector * This, + /* [out] */ DWORD *pdwPinId); + + HRESULT ( STDMETHODCALLTYPE *put_SourceNodeId )( + ISelector * This, + /* [in] */ DWORD dwPinId); + + END_INTERFACE + } ISelectorVtbl; + + interface ISelector + { + CONST_VTBL struct ISelectorVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ISelector_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define ISelector_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define ISelector_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define ISelector_get_NumSources(This,pdwNumSources) \ + (This)->lpVtbl -> get_NumSources(This,pdwNumSources) + +#define ISelector_get_SourceNodeId(This,pdwPinId) \ + (This)->lpVtbl -> get_SourceNodeId(This,pdwPinId) + +#define ISelector_put_SourceNodeId(This,dwPinId) \ + (This)->lpVtbl -> put_SourceNodeId(This,dwPinId) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE ISelector_get_NumSources_Proxy( + ISelector * This, + /* [out] */ DWORD *pdwNumSources); + + +void __RPC_STUB ISelector_get_NumSources_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ISelector_get_SourceNodeId_Proxy( + ISelector * This, + /* [out] */ DWORD *pdwPinId); + + +void __RPC_STUB ISelector_get_SourceNodeId_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE ISelector_put_SourceNodeId_Proxy( + ISelector * This, + /* [in] */ DWORD dwPinId); + + +void __RPC_STUB ISelector_put_SourceNodeId_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __ISelector_INTERFACE_DEFINED__ */ + + +#ifndef __IKsNodeControl_INTERFACE_DEFINED__ +#define __IKsNodeControl_INTERFACE_DEFINED__ + +/* interface IKsNodeControl */ +/* [unique][uuid][local][object] */ + + +EXTERN_C const IID IID_IKsNodeControl; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("11737C14-24A7-4bb5-81A0-0D003813B0C4") + IKsNodeControl : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE put_NodeId( + /* [in] */ DWORD dwNodeId) = 0; + + virtual HRESULT STDMETHODCALLTYPE put_KsControl( + /* [in] */ PVOID pKsControl) = 0; + + }; + +#else /* C style interface */ + + typedef struct IKsNodeControlVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IKsNodeControl * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IKsNodeControl * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IKsNodeControl * This); + + HRESULT ( STDMETHODCALLTYPE *put_NodeId )( + IKsNodeControl * This, + /* [in] */ DWORD dwNodeId); + + HRESULT ( STDMETHODCALLTYPE *put_KsControl )( + IKsNodeControl * This, + /* [in] */ PVOID pKsControl); + + END_INTERFACE + } IKsNodeControlVtbl; + + interface IKsNodeControl + { + CONST_VTBL struct IKsNodeControlVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IKsNodeControl_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IKsNodeControl_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IKsNodeControl_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IKsNodeControl_put_NodeId(This,dwNodeId) \ + (This)->lpVtbl -> put_NodeId(This,dwNodeId) + +#define IKsNodeControl_put_KsControl(This,pKsControl) \ + (This)->lpVtbl -> put_KsControl(This,pKsControl) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IKsNodeControl_put_NodeId_Proxy( + IKsNodeControl * This, + /* [in] */ DWORD dwNodeId); + + +void __RPC_STUB IKsNodeControl_put_NodeId_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IKsNodeControl_put_KsControl_Proxy( + IKsNodeControl * This, + /* [in] */ PVOID pKsControl); + + +void __RPC_STUB IKsNodeControl_put_KsControl_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IKsNodeControl_INTERFACE_DEFINED__ */ + + +/* Additional Prototypes for ALL interfaces */ + +/* end of Additional Prototypes */ + +#ifdef __cplusplus +} +#endif + +#endif + + diff --git a/videoInputSrcAndDemos/libs/DShow/Include/videoacc.h b/videoInputSrcAndDemos/libs/DShow/Include/videoacc.h index e88ba68..7121ff4 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/videoacc.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/videoacc.h @@ -1,661 +1,661 @@ - -#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 videoacc.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 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 -#endif // __RPCNDR_H_VERSION__ - -#ifndef COM_NO_WINDOWS_H -#include "windows.h" -#include "ole2.h" -#endif /*COM_NO_WINDOWS_H*/ - -#ifndef __videoacc_h__ -#define __videoacc_h__ - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -#pragma once -#endif - -/* Forward Declarations */ - -#ifndef __IAMVideoAcceleratorNotify_FWD_DEFINED__ -#define __IAMVideoAcceleratorNotify_FWD_DEFINED__ -typedef interface IAMVideoAcceleratorNotify IAMVideoAcceleratorNotify; -#endif /* __IAMVideoAcceleratorNotify_FWD_DEFINED__ */ - - -#ifndef __IAMVideoAccelerator_FWD_DEFINED__ -#define __IAMVideoAccelerator_FWD_DEFINED__ -typedef interface IAMVideoAccelerator IAMVideoAccelerator; -#endif /* __IAMVideoAccelerator_FWD_DEFINED__ */ - - -/* header files for imported files */ -#include "unknwn.h" - -#ifdef __cplusplus -extern "C"{ -#endif - -void * __RPC_USER MIDL_user_allocate(size_t); -void __RPC_USER MIDL_user_free( void * ); - -/* interface __MIDL_itf_videoacc_0000 */ -/* [local] */ - -// -// The following declarations within the 'if 0' block are dummy typedefs used to make -// the motncomp.idl file build. The actual definitions are contained in ddraw.h and amva.h -// -#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; - -#endif -#include -#include - - -extern RPC_IF_HANDLE __MIDL_itf_videoacc_0000_v0_0_c_ifspec; -extern RPC_IF_HANDLE __MIDL_itf_videoacc_0000_v0_0_s_ifspec; - -#ifndef __IAMVideoAcceleratorNotify_INTERFACE_DEFINED__ -#define __IAMVideoAcceleratorNotify_INTERFACE_DEFINED__ - -/* interface IAMVideoAcceleratorNotify */ -/* [unique][helpstring][uuid][object][local] */ - - -EXTERN_C const IID IID_IAMVideoAcceleratorNotify; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("256A6A21-FBAD-11d1-82BF-00A0C9696C8F") - IAMVideoAcceleratorNotify : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE GetUncompSurfacesInfo( - /* [in] */ const GUID *pGuid, - /* [out][in] */ LPAMVAUncompBufferInfo pUncompBufferInfo) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetUncompSurfacesInfo( - /* [in] */ DWORD dwActualUncompSurfacesAllocated) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetCreateVideoAcceleratorData( - /* [in] */ const GUID *pGuid, - /* [out] */ LPDWORD pdwSizeMiscData, - /* [out] */ LPVOID *ppMiscData) = 0; - - }; - -#else /* C style interface */ - - typedef struct IAMVideoAcceleratorNotifyVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IAMVideoAcceleratorNotify * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IAMVideoAcceleratorNotify * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IAMVideoAcceleratorNotify * This); - - HRESULT ( STDMETHODCALLTYPE *GetUncompSurfacesInfo )( - IAMVideoAcceleratorNotify * This, - /* [in] */ const GUID *pGuid, - /* [out][in] */ LPAMVAUncompBufferInfo pUncompBufferInfo); - - HRESULT ( STDMETHODCALLTYPE *SetUncompSurfacesInfo )( - IAMVideoAcceleratorNotify * This, - /* [in] */ DWORD dwActualUncompSurfacesAllocated); - - HRESULT ( STDMETHODCALLTYPE *GetCreateVideoAcceleratorData )( - IAMVideoAcceleratorNotify * This, - /* [in] */ const GUID *pGuid, - /* [out] */ LPDWORD pdwSizeMiscData, - /* [out] */ LPVOID *ppMiscData); - - END_INTERFACE - } IAMVideoAcceleratorNotifyVtbl; - - interface IAMVideoAcceleratorNotify - { - CONST_VTBL struct IAMVideoAcceleratorNotifyVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IAMVideoAcceleratorNotify_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IAMVideoAcceleratorNotify_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IAMVideoAcceleratorNotify_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IAMVideoAcceleratorNotify_GetUncompSurfacesInfo(This,pGuid,pUncompBufferInfo) \ - (This)->lpVtbl -> GetUncompSurfacesInfo(This,pGuid,pUncompBufferInfo) - -#define IAMVideoAcceleratorNotify_SetUncompSurfacesInfo(This,dwActualUncompSurfacesAllocated) \ - (This)->lpVtbl -> SetUncompSurfacesInfo(This,dwActualUncompSurfacesAllocated) - -#define IAMVideoAcceleratorNotify_GetCreateVideoAcceleratorData(This,pGuid,pdwSizeMiscData,ppMiscData) \ - (This)->lpVtbl -> GetCreateVideoAcceleratorData(This,pGuid,pdwSizeMiscData,ppMiscData) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IAMVideoAcceleratorNotify_GetUncompSurfacesInfo_Proxy( - IAMVideoAcceleratorNotify * This, - /* [in] */ const GUID *pGuid, - /* [out][in] */ LPAMVAUncompBufferInfo pUncompBufferInfo); - - -void __RPC_STUB IAMVideoAcceleratorNotify_GetUncompSurfacesInfo_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IAMVideoAcceleratorNotify_SetUncompSurfacesInfo_Proxy( - IAMVideoAcceleratorNotify * This, - /* [in] */ DWORD dwActualUncompSurfacesAllocated); - - -void __RPC_STUB IAMVideoAcceleratorNotify_SetUncompSurfacesInfo_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IAMVideoAcceleratorNotify_GetCreateVideoAcceleratorData_Proxy( - IAMVideoAcceleratorNotify * This, - /* [in] */ const GUID *pGuid, - /* [out] */ LPDWORD pdwSizeMiscData, - /* [out] */ LPVOID *ppMiscData); - - -void __RPC_STUB IAMVideoAcceleratorNotify_GetCreateVideoAcceleratorData_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IAMVideoAcceleratorNotify_INTERFACE_DEFINED__ */ - - -#ifndef __IAMVideoAccelerator_INTERFACE_DEFINED__ -#define __IAMVideoAccelerator_INTERFACE_DEFINED__ - -/* interface IAMVideoAccelerator */ -/* [unique][helpstring][uuid][object][local] */ - - -EXTERN_C const IID IID_IAMVideoAccelerator; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("256A6A22-FBAD-11d1-82BF-00A0C9696C8F") - IAMVideoAccelerator : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE GetVideoAcceleratorGUIDs( - /* [out][in] */ LPDWORD pdwNumGuidsSupported, - /* [out][in] */ LPGUID pGuidsSupported) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetUncompFormatsSupported( - /* [in] */ const GUID *pGuid, - /* [out][in] */ LPDWORD pdwNumFormatsSupported, - /* [out][in] */ LPDDPIXELFORMAT pFormatsSupported) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetInternalMemInfo( - /* [in] */ const GUID *pGuid, - /* [in] */ const AMVAUncompDataInfo *pamvaUncompDataInfo, - /* [out][in] */ LPAMVAInternalMemInfo pamvaInternalMemInfo) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetCompBufferInfo( - /* [in] */ const GUID *pGuid, - /* [in] */ const AMVAUncompDataInfo *pamvaUncompDataInfo, - /* [out][in] */ LPDWORD pdwNumTypesCompBuffers, - /* [out] */ LPAMVACompBufferInfo pamvaCompBufferInfo) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetInternalCompBufferInfo( - /* [out][in] */ LPDWORD pdwNumTypesCompBuffers, - /* [out] */ LPAMVACompBufferInfo pamvaCompBufferInfo) = 0; - - virtual HRESULT STDMETHODCALLTYPE BeginFrame( - /* [in] */ const AMVABeginFrameInfo *amvaBeginFrameInfo) = 0; - - virtual HRESULT STDMETHODCALLTYPE EndFrame( - /* [in] */ const AMVAEndFrameInfo *pEndFrameInfo) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetBuffer( - /* [in] */ DWORD dwTypeIndex, - /* [in] */ DWORD dwBufferIndex, - /* [in] */ BOOL bReadOnly, - /* [out] */ LPVOID *ppBuffer, - /* [out] */ LONG *lpStride) = 0; - - virtual HRESULT STDMETHODCALLTYPE ReleaseBuffer( - /* [in] */ DWORD dwTypeIndex, - /* [in] */ DWORD dwBufferIndex) = 0; - - virtual HRESULT STDMETHODCALLTYPE Execute( - /* [in] */ DWORD dwFunction, - /* [in] */ LPVOID lpPrivateInputData, - /* [in] */ DWORD cbPrivateInputData, - /* [in] */ LPVOID lpPrivateOutputDat, - /* [in] */ DWORD cbPrivateOutputData, - /* [in] */ DWORD dwNumBuffers, - /* [in] */ const AMVABUFFERINFO *pamvaBufferInfo) = 0; - - virtual HRESULT STDMETHODCALLTYPE QueryRenderStatus( - /* [in] */ DWORD dwTypeIndex, - /* [in] */ DWORD dwBufferIndex, - /* [in] */ DWORD dwFlags) = 0; - - virtual HRESULT STDMETHODCALLTYPE DisplayFrame( - /* [in] */ DWORD dwFlipToIndex, - /* [in] */ IMediaSample *pMediaSample) = 0; - - }; - -#else /* C style interface */ - - typedef struct IAMVideoAcceleratorVtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IAMVideoAccelerator * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IAMVideoAccelerator * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IAMVideoAccelerator * This); - - HRESULT ( STDMETHODCALLTYPE *GetVideoAcceleratorGUIDs )( - IAMVideoAccelerator * This, - /* [out][in] */ LPDWORD pdwNumGuidsSupported, - /* [out][in] */ LPGUID pGuidsSupported); - - HRESULT ( STDMETHODCALLTYPE *GetUncompFormatsSupported )( - IAMVideoAccelerator * This, - /* [in] */ const GUID *pGuid, - /* [out][in] */ LPDWORD pdwNumFormatsSupported, - /* [out][in] */ LPDDPIXELFORMAT pFormatsSupported); - - HRESULT ( STDMETHODCALLTYPE *GetInternalMemInfo )( - IAMVideoAccelerator * This, - /* [in] */ const GUID *pGuid, - /* [in] */ const AMVAUncompDataInfo *pamvaUncompDataInfo, - /* [out][in] */ LPAMVAInternalMemInfo pamvaInternalMemInfo); - - HRESULT ( STDMETHODCALLTYPE *GetCompBufferInfo )( - IAMVideoAccelerator * This, - /* [in] */ const GUID *pGuid, - /* [in] */ const AMVAUncompDataInfo *pamvaUncompDataInfo, - /* [out][in] */ LPDWORD pdwNumTypesCompBuffers, - /* [out] */ LPAMVACompBufferInfo pamvaCompBufferInfo); - - HRESULT ( STDMETHODCALLTYPE *GetInternalCompBufferInfo )( - IAMVideoAccelerator * This, - /* [out][in] */ LPDWORD pdwNumTypesCompBuffers, - /* [out] */ LPAMVACompBufferInfo pamvaCompBufferInfo); - - HRESULT ( STDMETHODCALLTYPE *BeginFrame )( - IAMVideoAccelerator * This, - /* [in] */ const AMVABeginFrameInfo *amvaBeginFrameInfo); - - HRESULT ( STDMETHODCALLTYPE *EndFrame )( - IAMVideoAccelerator * This, - /* [in] */ const AMVAEndFrameInfo *pEndFrameInfo); - - HRESULT ( STDMETHODCALLTYPE *GetBuffer )( - IAMVideoAccelerator * This, - /* [in] */ DWORD dwTypeIndex, - /* [in] */ DWORD dwBufferIndex, - /* [in] */ BOOL bReadOnly, - /* [out] */ LPVOID *ppBuffer, - /* [out] */ LONG *lpStride); - - HRESULT ( STDMETHODCALLTYPE *ReleaseBuffer )( - IAMVideoAccelerator * This, - /* [in] */ DWORD dwTypeIndex, - /* [in] */ DWORD dwBufferIndex); - - HRESULT ( STDMETHODCALLTYPE *Execute )( - IAMVideoAccelerator * This, - /* [in] */ DWORD dwFunction, - /* [in] */ LPVOID lpPrivateInputData, - /* [in] */ DWORD cbPrivateInputData, - /* [in] */ LPVOID lpPrivateOutputDat, - /* [in] */ DWORD cbPrivateOutputData, - /* [in] */ DWORD dwNumBuffers, - /* [in] */ const AMVABUFFERINFO *pamvaBufferInfo); - - HRESULT ( STDMETHODCALLTYPE *QueryRenderStatus )( - IAMVideoAccelerator * This, - /* [in] */ DWORD dwTypeIndex, - /* [in] */ DWORD dwBufferIndex, - /* [in] */ DWORD dwFlags); - - HRESULT ( STDMETHODCALLTYPE *DisplayFrame )( - IAMVideoAccelerator * This, - /* [in] */ DWORD dwFlipToIndex, - /* [in] */ IMediaSample *pMediaSample); - - END_INTERFACE - } IAMVideoAcceleratorVtbl; - - interface IAMVideoAccelerator - { - CONST_VTBL struct IAMVideoAcceleratorVtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IAMVideoAccelerator_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IAMVideoAccelerator_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IAMVideoAccelerator_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IAMVideoAccelerator_GetVideoAcceleratorGUIDs(This,pdwNumGuidsSupported,pGuidsSupported) \ - (This)->lpVtbl -> GetVideoAcceleratorGUIDs(This,pdwNumGuidsSupported,pGuidsSupported) - -#define IAMVideoAccelerator_GetUncompFormatsSupported(This,pGuid,pdwNumFormatsSupported,pFormatsSupported) \ - (This)->lpVtbl -> GetUncompFormatsSupported(This,pGuid,pdwNumFormatsSupported,pFormatsSupported) - -#define IAMVideoAccelerator_GetInternalMemInfo(This,pGuid,pamvaUncompDataInfo,pamvaInternalMemInfo) \ - (This)->lpVtbl -> GetInternalMemInfo(This,pGuid,pamvaUncompDataInfo,pamvaInternalMemInfo) - -#define IAMVideoAccelerator_GetCompBufferInfo(This,pGuid,pamvaUncompDataInfo,pdwNumTypesCompBuffers,pamvaCompBufferInfo) \ - (This)->lpVtbl -> GetCompBufferInfo(This,pGuid,pamvaUncompDataInfo,pdwNumTypesCompBuffers,pamvaCompBufferInfo) - -#define IAMVideoAccelerator_GetInternalCompBufferInfo(This,pdwNumTypesCompBuffers,pamvaCompBufferInfo) \ - (This)->lpVtbl -> GetInternalCompBufferInfo(This,pdwNumTypesCompBuffers,pamvaCompBufferInfo) - -#define IAMVideoAccelerator_BeginFrame(This,amvaBeginFrameInfo) \ - (This)->lpVtbl -> BeginFrame(This,amvaBeginFrameInfo) - -#define IAMVideoAccelerator_EndFrame(This,pEndFrameInfo) \ - (This)->lpVtbl -> EndFrame(This,pEndFrameInfo) - -#define IAMVideoAccelerator_GetBuffer(This,dwTypeIndex,dwBufferIndex,bReadOnly,ppBuffer,lpStride) \ - (This)->lpVtbl -> GetBuffer(This,dwTypeIndex,dwBufferIndex,bReadOnly,ppBuffer,lpStride) - -#define IAMVideoAccelerator_ReleaseBuffer(This,dwTypeIndex,dwBufferIndex) \ - (This)->lpVtbl -> ReleaseBuffer(This,dwTypeIndex,dwBufferIndex) - -#define IAMVideoAccelerator_Execute(This,dwFunction,lpPrivateInputData,cbPrivateInputData,lpPrivateOutputDat,cbPrivateOutputData,dwNumBuffers,pamvaBufferInfo) \ - (This)->lpVtbl -> Execute(This,dwFunction,lpPrivateInputData,cbPrivateInputData,lpPrivateOutputDat,cbPrivateOutputData,dwNumBuffers,pamvaBufferInfo) - -#define IAMVideoAccelerator_QueryRenderStatus(This,dwTypeIndex,dwBufferIndex,dwFlags) \ - (This)->lpVtbl -> QueryRenderStatus(This,dwTypeIndex,dwBufferIndex,dwFlags) - -#define IAMVideoAccelerator_DisplayFrame(This,dwFlipToIndex,pMediaSample) \ - (This)->lpVtbl -> DisplayFrame(This,dwFlipToIndex,pMediaSample) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IAMVideoAccelerator_GetVideoAcceleratorGUIDs_Proxy( - IAMVideoAccelerator * This, - /* [out][in] */ LPDWORD pdwNumGuidsSupported, - /* [out][in] */ LPGUID pGuidsSupported); - - -void __RPC_STUB IAMVideoAccelerator_GetVideoAcceleratorGUIDs_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IAMVideoAccelerator_GetUncompFormatsSupported_Proxy( - IAMVideoAccelerator * This, - /* [in] */ const GUID *pGuid, - /* [out][in] */ LPDWORD pdwNumFormatsSupported, - /* [out][in] */ LPDDPIXELFORMAT pFormatsSupported); - - -void __RPC_STUB IAMVideoAccelerator_GetUncompFormatsSupported_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IAMVideoAccelerator_GetInternalMemInfo_Proxy( - IAMVideoAccelerator * This, - /* [in] */ const GUID *pGuid, - /* [in] */ const AMVAUncompDataInfo *pamvaUncompDataInfo, - /* [out][in] */ LPAMVAInternalMemInfo pamvaInternalMemInfo); - - -void __RPC_STUB IAMVideoAccelerator_GetInternalMemInfo_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IAMVideoAccelerator_GetCompBufferInfo_Proxy( - IAMVideoAccelerator * This, - /* [in] */ const GUID *pGuid, - /* [in] */ const AMVAUncompDataInfo *pamvaUncompDataInfo, - /* [out][in] */ LPDWORD pdwNumTypesCompBuffers, - /* [out] */ LPAMVACompBufferInfo pamvaCompBufferInfo); - - -void __RPC_STUB IAMVideoAccelerator_GetCompBufferInfo_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IAMVideoAccelerator_GetInternalCompBufferInfo_Proxy( - IAMVideoAccelerator * This, - /* [out][in] */ LPDWORD pdwNumTypesCompBuffers, - /* [out] */ LPAMVACompBufferInfo pamvaCompBufferInfo); - - -void __RPC_STUB IAMVideoAccelerator_GetInternalCompBufferInfo_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IAMVideoAccelerator_BeginFrame_Proxy( - IAMVideoAccelerator * This, - /* [in] */ const AMVABeginFrameInfo *amvaBeginFrameInfo); - - -void __RPC_STUB IAMVideoAccelerator_BeginFrame_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IAMVideoAccelerator_EndFrame_Proxy( - IAMVideoAccelerator * This, - /* [in] */ const AMVAEndFrameInfo *pEndFrameInfo); - - -void __RPC_STUB IAMVideoAccelerator_EndFrame_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IAMVideoAccelerator_GetBuffer_Proxy( - IAMVideoAccelerator * This, - /* [in] */ DWORD dwTypeIndex, - /* [in] */ DWORD dwBufferIndex, - /* [in] */ BOOL bReadOnly, - /* [out] */ LPVOID *ppBuffer, - /* [out] */ LONG *lpStride); - - -void __RPC_STUB IAMVideoAccelerator_GetBuffer_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IAMVideoAccelerator_ReleaseBuffer_Proxy( - IAMVideoAccelerator * This, - /* [in] */ DWORD dwTypeIndex, - /* [in] */ DWORD dwBufferIndex); - - -void __RPC_STUB IAMVideoAccelerator_ReleaseBuffer_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IAMVideoAccelerator_Execute_Proxy( - IAMVideoAccelerator * This, - /* [in] */ DWORD dwFunction, - /* [in] */ LPVOID lpPrivateInputData, - /* [in] */ DWORD cbPrivateInputData, - /* [in] */ LPVOID lpPrivateOutputDat, - /* [in] */ DWORD cbPrivateOutputData, - /* [in] */ DWORD dwNumBuffers, - /* [in] */ const AMVABUFFERINFO *pamvaBufferInfo); - - -void __RPC_STUB IAMVideoAccelerator_Execute_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IAMVideoAccelerator_QueryRenderStatus_Proxy( - IAMVideoAccelerator * This, - /* [in] */ DWORD dwTypeIndex, - /* [in] */ DWORD dwBufferIndex, - /* [in] */ DWORD dwFlags); - - -void __RPC_STUB IAMVideoAccelerator_QueryRenderStatus_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IAMVideoAccelerator_DisplayFrame_Proxy( - IAMVideoAccelerator * This, - /* [in] */ DWORD dwFlipToIndex, - /* [in] */ IMediaSample *pMediaSample); - - -void __RPC_STUB IAMVideoAccelerator_DisplayFrame_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IAMVideoAccelerator_INTERFACE_DEFINED__ */ - - -/* Additional Prototypes for ALL interfaces */ - -/* end of Additional Prototypes */ - -#ifdef __cplusplus -} -#endif - -#endif - - + +#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 videoacc.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 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 +#endif // __RPCNDR_H_VERSION__ + +#ifndef COM_NO_WINDOWS_H +#include "windows.h" +#include "ole2.h" +#endif /*COM_NO_WINDOWS_H*/ + +#ifndef __videoacc_h__ +#define __videoacc_h__ + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#pragma once +#endif + +/* Forward Declarations */ + +#ifndef __IAMVideoAcceleratorNotify_FWD_DEFINED__ +#define __IAMVideoAcceleratorNotify_FWD_DEFINED__ +typedef interface IAMVideoAcceleratorNotify IAMVideoAcceleratorNotify; +#endif /* __IAMVideoAcceleratorNotify_FWD_DEFINED__ */ + + +#ifndef __IAMVideoAccelerator_FWD_DEFINED__ +#define __IAMVideoAccelerator_FWD_DEFINED__ +typedef interface IAMVideoAccelerator IAMVideoAccelerator; +#endif /* __IAMVideoAccelerator_FWD_DEFINED__ */ + + +/* header files for imported files */ +#include "unknwn.h" + +#ifdef __cplusplus +extern "C"{ +#endif + +void * __RPC_USER MIDL_user_allocate(size_t); +void __RPC_USER MIDL_user_free( void * ); + +/* interface __MIDL_itf_videoacc_0000 */ +/* [local] */ + +// +// The following declarations within the 'if 0' block are dummy typedefs used to make +// the motncomp.idl file build. The actual definitions are contained in ddraw.h and amva.h +// +#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; + +#endif +#include +#include + + +extern RPC_IF_HANDLE __MIDL_itf_videoacc_0000_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_videoacc_0000_v0_0_s_ifspec; + +#ifndef __IAMVideoAcceleratorNotify_INTERFACE_DEFINED__ +#define __IAMVideoAcceleratorNotify_INTERFACE_DEFINED__ + +/* interface IAMVideoAcceleratorNotify */ +/* [unique][helpstring][uuid][object][local] */ + + +EXTERN_C const IID IID_IAMVideoAcceleratorNotify; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("256A6A21-FBAD-11d1-82BF-00A0C9696C8F") + IAMVideoAcceleratorNotify : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE GetUncompSurfacesInfo( + /* [in] */ const GUID *pGuid, + /* [out][in] */ LPAMVAUncompBufferInfo pUncompBufferInfo) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetUncompSurfacesInfo( + /* [in] */ DWORD dwActualUncompSurfacesAllocated) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetCreateVideoAcceleratorData( + /* [in] */ const GUID *pGuid, + /* [out] */ LPDWORD pdwSizeMiscData, + /* [out] */ LPVOID *ppMiscData) = 0; + + }; + +#else /* C style interface */ + + typedef struct IAMVideoAcceleratorNotifyVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IAMVideoAcceleratorNotify * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IAMVideoAcceleratorNotify * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IAMVideoAcceleratorNotify * This); + + HRESULT ( STDMETHODCALLTYPE *GetUncompSurfacesInfo )( + IAMVideoAcceleratorNotify * This, + /* [in] */ const GUID *pGuid, + /* [out][in] */ LPAMVAUncompBufferInfo pUncompBufferInfo); + + HRESULT ( STDMETHODCALLTYPE *SetUncompSurfacesInfo )( + IAMVideoAcceleratorNotify * This, + /* [in] */ DWORD dwActualUncompSurfacesAllocated); + + HRESULT ( STDMETHODCALLTYPE *GetCreateVideoAcceleratorData )( + IAMVideoAcceleratorNotify * This, + /* [in] */ const GUID *pGuid, + /* [out] */ LPDWORD pdwSizeMiscData, + /* [out] */ LPVOID *ppMiscData); + + END_INTERFACE + } IAMVideoAcceleratorNotifyVtbl; + + interface IAMVideoAcceleratorNotify + { + CONST_VTBL struct IAMVideoAcceleratorNotifyVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IAMVideoAcceleratorNotify_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IAMVideoAcceleratorNotify_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IAMVideoAcceleratorNotify_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IAMVideoAcceleratorNotify_GetUncompSurfacesInfo(This,pGuid,pUncompBufferInfo) \ + (This)->lpVtbl -> GetUncompSurfacesInfo(This,pGuid,pUncompBufferInfo) + +#define IAMVideoAcceleratorNotify_SetUncompSurfacesInfo(This,dwActualUncompSurfacesAllocated) \ + (This)->lpVtbl -> SetUncompSurfacesInfo(This,dwActualUncompSurfacesAllocated) + +#define IAMVideoAcceleratorNotify_GetCreateVideoAcceleratorData(This,pGuid,pdwSizeMiscData,ppMiscData) \ + (This)->lpVtbl -> GetCreateVideoAcceleratorData(This,pGuid,pdwSizeMiscData,ppMiscData) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IAMVideoAcceleratorNotify_GetUncompSurfacesInfo_Proxy( + IAMVideoAcceleratorNotify * This, + /* [in] */ const GUID *pGuid, + /* [out][in] */ LPAMVAUncompBufferInfo pUncompBufferInfo); + + +void __RPC_STUB IAMVideoAcceleratorNotify_GetUncompSurfacesInfo_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IAMVideoAcceleratorNotify_SetUncompSurfacesInfo_Proxy( + IAMVideoAcceleratorNotify * This, + /* [in] */ DWORD dwActualUncompSurfacesAllocated); + + +void __RPC_STUB IAMVideoAcceleratorNotify_SetUncompSurfacesInfo_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IAMVideoAcceleratorNotify_GetCreateVideoAcceleratorData_Proxy( + IAMVideoAcceleratorNotify * This, + /* [in] */ const GUID *pGuid, + /* [out] */ LPDWORD pdwSizeMiscData, + /* [out] */ LPVOID *ppMiscData); + + +void __RPC_STUB IAMVideoAcceleratorNotify_GetCreateVideoAcceleratorData_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IAMVideoAcceleratorNotify_INTERFACE_DEFINED__ */ + + +#ifndef __IAMVideoAccelerator_INTERFACE_DEFINED__ +#define __IAMVideoAccelerator_INTERFACE_DEFINED__ + +/* interface IAMVideoAccelerator */ +/* [unique][helpstring][uuid][object][local] */ + + +EXTERN_C const IID IID_IAMVideoAccelerator; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("256A6A22-FBAD-11d1-82BF-00A0C9696C8F") + IAMVideoAccelerator : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE GetVideoAcceleratorGUIDs( + /* [out][in] */ LPDWORD pdwNumGuidsSupported, + /* [out][in] */ LPGUID pGuidsSupported) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetUncompFormatsSupported( + /* [in] */ const GUID *pGuid, + /* [out][in] */ LPDWORD pdwNumFormatsSupported, + /* [out][in] */ LPDDPIXELFORMAT pFormatsSupported) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetInternalMemInfo( + /* [in] */ const GUID *pGuid, + /* [in] */ const AMVAUncompDataInfo *pamvaUncompDataInfo, + /* [out][in] */ LPAMVAInternalMemInfo pamvaInternalMemInfo) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetCompBufferInfo( + /* [in] */ const GUID *pGuid, + /* [in] */ const AMVAUncompDataInfo *pamvaUncompDataInfo, + /* [out][in] */ LPDWORD pdwNumTypesCompBuffers, + /* [out] */ LPAMVACompBufferInfo pamvaCompBufferInfo) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetInternalCompBufferInfo( + /* [out][in] */ LPDWORD pdwNumTypesCompBuffers, + /* [out] */ LPAMVACompBufferInfo pamvaCompBufferInfo) = 0; + + virtual HRESULT STDMETHODCALLTYPE BeginFrame( + /* [in] */ const AMVABeginFrameInfo *amvaBeginFrameInfo) = 0; + + virtual HRESULT STDMETHODCALLTYPE EndFrame( + /* [in] */ const AMVAEndFrameInfo *pEndFrameInfo) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetBuffer( + /* [in] */ DWORD dwTypeIndex, + /* [in] */ DWORD dwBufferIndex, + /* [in] */ BOOL bReadOnly, + /* [out] */ LPVOID *ppBuffer, + /* [out] */ LONG *lpStride) = 0; + + virtual HRESULT STDMETHODCALLTYPE ReleaseBuffer( + /* [in] */ DWORD dwTypeIndex, + /* [in] */ DWORD dwBufferIndex) = 0; + + virtual HRESULT STDMETHODCALLTYPE Execute( + /* [in] */ DWORD dwFunction, + /* [in] */ LPVOID lpPrivateInputData, + /* [in] */ DWORD cbPrivateInputData, + /* [in] */ LPVOID lpPrivateOutputDat, + /* [in] */ DWORD cbPrivateOutputData, + /* [in] */ DWORD dwNumBuffers, + /* [in] */ const AMVABUFFERINFO *pamvaBufferInfo) = 0; + + virtual HRESULT STDMETHODCALLTYPE QueryRenderStatus( + /* [in] */ DWORD dwTypeIndex, + /* [in] */ DWORD dwBufferIndex, + /* [in] */ DWORD dwFlags) = 0; + + virtual HRESULT STDMETHODCALLTYPE DisplayFrame( + /* [in] */ DWORD dwFlipToIndex, + /* [in] */ IMediaSample *pMediaSample) = 0; + + }; + +#else /* C style interface */ + + typedef struct IAMVideoAcceleratorVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IAMVideoAccelerator * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IAMVideoAccelerator * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IAMVideoAccelerator * This); + + HRESULT ( STDMETHODCALLTYPE *GetVideoAcceleratorGUIDs )( + IAMVideoAccelerator * This, + /* [out][in] */ LPDWORD pdwNumGuidsSupported, + /* [out][in] */ LPGUID pGuidsSupported); + + HRESULT ( STDMETHODCALLTYPE *GetUncompFormatsSupported )( + IAMVideoAccelerator * This, + /* [in] */ const GUID *pGuid, + /* [out][in] */ LPDWORD pdwNumFormatsSupported, + /* [out][in] */ LPDDPIXELFORMAT pFormatsSupported); + + HRESULT ( STDMETHODCALLTYPE *GetInternalMemInfo )( + IAMVideoAccelerator * This, + /* [in] */ const GUID *pGuid, + /* [in] */ const AMVAUncompDataInfo *pamvaUncompDataInfo, + /* [out][in] */ LPAMVAInternalMemInfo pamvaInternalMemInfo); + + HRESULT ( STDMETHODCALLTYPE *GetCompBufferInfo )( + IAMVideoAccelerator * This, + /* [in] */ const GUID *pGuid, + /* [in] */ const AMVAUncompDataInfo *pamvaUncompDataInfo, + /* [out][in] */ LPDWORD pdwNumTypesCompBuffers, + /* [out] */ LPAMVACompBufferInfo pamvaCompBufferInfo); + + HRESULT ( STDMETHODCALLTYPE *GetInternalCompBufferInfo )( + IAMVideoAccelerator * This, + /* [out][in] */ LPDWORD pdwNumTypesCompBuffers, + /* [out] */ LPAMVACompBufferInfo pamvaCompBufferInfo); + + HRESULT ( STDMETHODCALLTYPE *BeginFrame )( + IAMVideoAccelerator * This, + /* [in] */ const AMVABeginFrameInfo *amvaBeginFrameInfo); + + HRESULT ( STDMETHODCALLTYPE *EndFrame )( + IAMVideoAccelerator * This, + /* [in] */ const AMVAEndFrameInfo *pEndFrameInfo); + + HRESULT ( STDMETHODCALLTYPE *GetBuffer )( + IAMVideoAccelerator * This, + /* [in] */ DWORD dwTypeIndex, + /* [in] */ DWORD dwBufferIndex, + /* [in] */ BOOL bReadOnly, + /* [out] */ LPVOID *ppBuffer, + /* [out] */ LONG *lpStride); + + HRESULT ( STDMETHODCALLTYPE *ReleaseBuffer )( + IAMVideoAccelerator * This, + /* [in] */ DWORD dwTypeIndex, + /* [in] */ DWORD dwBufferIndex); + + HRESULT ( STDMETHODCALLTYPE *Execute )( + IAMVideoAccelerator * This, + /* [in] */ DWORD dwFunction, + /* [in] */ LPVOID lpPrivateInputData, + /* [in] */ DWORD cbPrivateInputData, + /* [in] */ LPVOID lpPrivateOutputDat, + /* [in] */ DWORD cbPrivateOutputData, + /* [in] */ DWORD dwNumBuffers, + /* [in] */ const AMVABUFFERINFO *pamvaBufferInfo); + + HRESULT ( STDMETHODCALLTYPE *QueryRenderStatus )( + IAMVideoAccelerator * This, + /* [in] */ DWORD dwTypeIndex, + /* [in] */ DWORD dwBufferIndex, + /* [in] */ DWORD dwFlags); + + HRESULT ( STDMETHODCALLTYPE *DisplayFrame )( + IAMVideoAccelerator * This, + /* [in] */ DWORD dwFlipToIndex, + /* [in] */ IMediaSample *pMediaSample); + + END_INTERFACE + } IAMVideoAcceleratorVtbl; + + interface IAMVideoAccelerator + { + CONST_VTBL struct IAMVideoAcceleratorVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IAMVideoAccelerator_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IAMVideoAccelerator_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IAMVideoAccelerator_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IAMVideoAccelerator_GetVideoAcceleratorGUIDs(This,pdwNumGuidsSupported,pGuidsSupported) \ + (This)->lpVtbl -> GetVideoAcceleratorGUIDs(This,pdwNumGuidsSupported,pGuidsSupported) + +#define IAMVideoAccelerator_GetUncompFormatsSupported(This,pGuid,pdwNumFormatsSupported,pFormatsSupported) \ + (This)->lpVtbl -> GetUncompFormatsSupported(This,pGuid,pdwNumFormatsSupported,pFormatsSupported) + +#define IAMVideoAccelerator_GetInternalMemInfo(This,pGuid,pamvaUncompDataInfo,pamvaInternalMemInfo) \ + (This)->lpVtbl -> GetInternalMemInfo(This,pGuid,pamvaUncompDataInfo,pamvaInternalMemInfo) + +#define IAMVideoAccelerator_GetCompBufferInfo(This,pGuid,pamvaUncompDataInfo,pdwNumTypesCompBuffers,pamvaCompBufferInfo) \ + (This)->lpVtbl -> GetCompBufferInfo(This,pGuid,pamvaUncompDataInfo,pdwNumTypesCompBuffers,pamvaCompBufferInfo) + +#define IAMVideoAccelerator_GetInternalCompBufferInfo(This,pdwNumTypesCompBuffers,pamvaCompBufferInfo) \ + (This)->lpVtbl -> GetInternalCompBufferInfo(This,pdwNumTypesCompBuffers,pamvaCompBufferInfo) + +#define IAMVideoAccelerator_BeginFrame(This,amvaBeginFrameInfo) \ + (This)->lpVtbl -> BeginFrame(This,amvaBeginFrameInfo) + +#define IAMVideoAccelerator_EndFrame(This,pEndFrameInfo) \ + (This)->lpVtbl -> EndFrame(This,pEndFrameInfo) + +#define IAMVideoAccelerator_GetBuffer(This,dwTypeIndex,dwBufferIndex,bReadOnly,ppBuffer,lpStride) \ + (This)->lpVtbl -> GetBuffer(This,dwTypeIndex,dwBufferIndex,bReadOnly,ppBuffer,lpStride) + +#define IAMVideoAccelerator_ReleaseBuffer(This,dwTypeIndex,dwBufferIndex) \ + (This)->lpVtbl -> ReleaseBuffer(This,dwTypeIndex,dwBufferIndex) + +#define IAMVideoAccelerator_Execute(This,dwFunction,lpPrivateInputData,cbPrivateInputData,lpPrivateOutputDat,cbPrivateOutputData,dwNumBuffers,pamvaBufferInfo) \ + (This)->lpVtbl -> Execute(This,dwFunction,lpPrivateInputData,cbPrivateInputData,lpPrivateOutputDat,cbPrivateOutputData,dwNumBuffers,pamvaBufferInfo) + +#define IAMVideoAccelerator_QueryRenderStatus(This,dwTypeIndex,dwBufferIndex,dwFlags) \ + (This)->lpVtbl -> QueryRenderStatus(This,dwTypeIndex,dwBufferIndex,dwFlags) + +#define IAMVideoAccelerator_DisplayFrame(This,dwFlipToIndex,pMediaSample) \ + (This)->lpVtbl -> DisplayFrame(This,dwFlipToIndex,pMediaSample) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IAMVideoAccelerator_GetVideoAcceleratorGUIDs_Proxy( + IAMVideoAccelerator * This, + /* [out][in] */ LPDWORD pdwNumGuidsSupported, + /* [out][in] */ LPGUID pGuidsSupported); + + +void __RPC_STUB IAMVideoAccelerator_GetVideoAcceleratorGUIDs_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IAMVideoAccelerator_GetUncompFormatsSupported_Proxy( + IAMVideoAccelerator * This, + /* [in] */ const GUID *pGuid, + /* [out][in] */ LPDWORD pdwNumFormatsSupported, + /* [out][in] */ LPDDPIXELFORMAT pFormatsSupported); + + +void __RPC_STUB IAMVideoAccelerator_GetUncompFormatsSupported_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IAMVideoAccelerator_GetInternalMemInfo_Proxy( + IAMVideoAccelerator * This, + /* [in] */ const GUID *pGuid, + /* [in] */ const AMVAUncompDataInfo *pamvaUncompDataInfo, + /* [out][in] */ LPAMVAInternalMemInfo pamvaInternalMemInfo); + + +void __RPC_STUB IAMVideoAccelerator_GetInternalMemInfo_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IAMVideoAccelerator_GetCompBufferInfo_Proxy( + IAMVideoAccelerator * This, + /* [in] */ const GUID *pGuid, + /* [in] */ const AMVAUncompDataInfo *pamvaUncompDataInfo, + /* [out][in] */ LPDWORD pdwNumTypesCompBuffers, + /* [out] */ LPAMVACompBufferInfo pamvaCompBufferInfo); + + +void __RPC_STUB IAMVideoAccelerator_GetCompBufferInfo_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IAMVideoAccelerator_GetInternalCompBufferInfo_Proxy( + IAMVideoAccelerator * This, + /* [out][in] */ LPDWORD pdwNumTypesCompBuffers, + /* [out] */ LPAMVACompBufferInfo pamvaCompBufferInfo); + + +void __RPC_STUB IAMVideoAccelerator_GetInternalCompBufferInfo_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IAMVideoAccelerator_BeginFrame_Proxy( + IAMVideoAccelerator * This, + /* [in] */ const AMVABeginFrameInfo *amvaBeginFrameInfo); + + +void __RPC_STUB IAMVideoAccelerator_BeginFrame_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IAMVideoAccelerator_EndFrame_Proxy( + IAMVideoAccelerator * This, + /* [in] */ const AMVAEndFrameInfo *pEndFrameInfo); + + +void __RPC_STUB IAMVideoAccelerator_EndFrame_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IAMVideoAccelerator_GetBuffer_Proxy( + IAMVideoAccelerator * This, + /* [in] */ DWORD dwTypeIndex, + /* [in] */ DWORD dwBufferIndex, + /* [in] */ BOOL bReadOnly, + /* [out] */ LPVOID *ppBuffer, + /* [out] */ LONG *lpStride); + + +void __RPC_STUB IAMVideoAccelerator_GetBuffer_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IAMVideoAccelerator_ReleaseBuffer_Proxy( + IAMVideoAccelerator * This, + /* [in] */ DWORD dwTypeIndex, + /* [in] */ DWORD dwBufferIndex); + + +void __RPC_STUB IAMVideoAccelerator_ReleaseBuffer_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IAMVideoAccelerator_Execute_Proxy( + IAMVideoAccelerator * This, + /* [in] */ DWORD dwFunction, + /* [in] */ LPVOID lpPrivateInputData, + /* [in] */ DWORD cbPrivateInputData, + /* [in] */ LPVOID lpPrivateOutputDat, + /* [in] */ DWORD cbPrivateOutputData, + /* [in] */ DWORD dwNumBuffers, + /* [in] */ const AMVABUFFERINFO *pamvaBufferInfo); + + +void __RPC_STUB IAMVideoAccelerator_Execute_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IAMVideoAccelerator_QueryRenderStatus_Proxy( + IAMVideoAccelerator * This, + /* [in] */ DWORD dwTypeIndex, + /* [in] */ DWORD dwBufferIndex, + /* [in] */ DWORD dwFlags); + + +void __RPC_STUB IAMVideoAccelerator_QueryRenderStatus_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IAMVideoAccelerator_DisplayFrame_Proxy( + IAMVideoAccelerator * This, + /* [in] */ DWORD dwFlipToIndex, + /* [in] */ IMediaSample *pMediaSample); + + +void __RPC_STUB IAMVideoAccelerator_DisplayFrame_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IAMVideoAccelerator_INTERFACE_DEFINED__ */ + + +/* Additional Prototypes for ALL interfaces */ + +/* end of Additional Prototypes */ + +#ifdef __cplusplus +} +#endif + +#endif + + diff --git a/videoInputSrcAndDemos/libs/DShow/Include/videoctl.h b/videoInputSrcAndDemos/libs/DShow/Include/videoctl.h index 3396dac..88b4450 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/videoctl.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/videoctl.h @@ -1,178 +1,180 @@ -//------------------------------------------------------------------------------ -// File: VideoCtl.h -// -// Desc: DirectShow base classes. -// -// Copyright (c) Microsoft Corporation. All rights reserved. -//------------------------------------------------------------------------------ - - -#ifndef __VIDEOCTL__ -#define __VIDEOCTL__ - -// These help with property page implementations. The first can be used to -// load any string from a resource file. The buffer to load into is passed -// as an input parameter. The same buffer is the return value if the string -// was found otherwise it returns TEXT(""). The GetDialogSize is passed the -// resource ID of a dialog box and returns the size of it in screen pixels - -#define STR_MAX_LENGTH 256 -TCHAR * WINAPI StringFromResource(TCHAR *pBuffer, int iResourceID); - -#ifdef UNICODE -#define WideStringFromResource StringFromResource -char* WINAPI StringFromResource(char*pBuffer, int iResourceID); -#else -WCHAR * WINAPI WideStringFromResource(WCHAR *pBuffer, int iResourceID); -#endif - - -BOOL WINAPI GetDialogSize(int iResourceID, // Dialog box resource identifier - DLGPROC pDlgProc, // Pointer to dialog procedure - LPARAM lParam, // Any user data wanted in pDlgProc - SIZE *pResult); // Returns the size of dialog box - -// Class that aggregates an IDirectDraw interface - -class CAggDirectDraw : public IDirectDraw, public CUnknown -{ -protected: - - LPDIRECTDRAW m_pDirectDraw; - -public: - - DECLARE_IUNKNOWN - STDMETHODIMP NonDelegatingQueryInterface(REFIID riid,void **ppv); - - // Constructor and destructor - - CAggDirectDraw(TCHAR *pName,LPUNKNOWN pUnk) : - CUnknown(pName,pUnk), - m_pDirectDraw(NULL) { }; - - virtual CAggDirectDraw::~CAggDirectDraw() { }; - - // Set the object we should be aggregating - void SetDirectDraw(LPDIRECTDRAW pDirectDraw) { - m_pDirectDraw = pDirectDraw; - } - - // IDirectDraw methods - - STDMETHODIMP Compact(); - STDMETHODIMP CreateClipper(DWORD dwFlags,LPDIRECTDRAWCLIPPER *lplpDDClipper,IUnknown *pUnkOuter); - STDMETHODIMP CreatePalette(DWORD dwFlags,LPPALETTEENTRY lpColorTable,LPDIRECTDRAWPALETTE *lplpDDPalette,IUnknown *pUnkOuter); - STDMETHODIMP CreateSurface(LPDDSURFACEDESC lpDDSurfaceDesc,LPDIRECTDRAWSURFACE *lplpDDSurface,IUnknown *pUnkOuter); - STDMETHODIMP DuplicateSurface(LPDIRECTDRAWSURFACE lpDDSurface,LPDIRECTDRAWSURFACE *lplpDupDDSurface); - STDMETHODIMP EnumDisplayModes(DWORD dwSurfaceDescCount,LPDDSURFACEDESC lplpDDSurfaceDescList,LPVOID lpContext,LPDDENUMMODESCALLBACK lpEnumCallback); - STDMETHODIMP EnumSurfaces(DWORD dwFlags,LPDDSURFACEDESC lpDDSD,LPVOID lpContext,LPDDENUMSURFACESCALLBACK lpEnumCallback); - STDMETHODIMP FlipToGDISurface(); - STDMETHODIMP GetCaps(LPDDCAPS lpDDDriverCaps,LPDDCAPS lpDDHELCaps); - STDMETHODIMP GetDisplayMode(LPDDSURFACEDESC lpDDSurfaceDesc); - STDMETHODIMP GetFourCCCodes(LPDWORD lpNumCodes,LPDWORD lpCodes); - STDMETHODIMP GetGDISurface(LPDIRECTDRAWSURFACE *lplpGDIDDSurface); - STDMETHODIMP GetMonitorFrequency(LPDWORD lpdwFrequency); - STDMETHODIMP GetScanLine(LPDWORD lpdwScanLine); - STDMETHODIMP GetVerticalBlankStatus(LPBOOL lpblsInVB); - STDMETHODIMP Initialize(GUID *lpGUID); - STDMETHODIMP RestoreDisplayMode(); - STDMETHODIMP SetCooperativeLevel(HWND hWnd,DWORD dwFlags); - STDMETHODIMP SetDisplayMode(DWORD dwWidth,DWORD dwHeight,DWORD dwBpp); - STDMETHODIMP WaitForVerticalBlank(DWORD dwFlags,HANDLE hEvent); -}; - - -// Class that aggregates an IDirectDrawSurface interface - -class CAggDrawSurface : public IDirectDrawSurface, public CUnknown -{ -protected: - - LPDIRECTDRAWSURFACE m_pDirectDrawSurface; - -public: - - DECLARE_IUNKNOWN - STDMETHODIMP NonDelegatingQueryInterface(REFIID riid,void **ppv); - - // Constructor and destructor - - CAggDrawSurface(TCHAR *pName,LPUNKNOWN pUnk) : - CUnknown(pName,pUnk), - m_pDirectDrawSurface(NULL) { }; - - virtual ~CAggDrawSurface() { }; - - // Set the object we should be aggregating - void SetDirectDrawSurface(LPDIRECTDRAWSURFACE pDirectDrawSurface) { - m_pDirectDrawSurface = pDirectDrawSurface; - } - - // IDirectDrawSurface methods - - STDMETHODIMP AddAttachedSurface(LPDIRECTDRAWSURFACE lpDDSAttachedSurface); - STDMETHODIMP AddOverlayDirtyRect(LPRECT lpRect); - STDMETHODIMP Blt(LPRECT lpDestRect,LPDIRECTDRAWSURFACE lpDDSrcSurface,LPRECT lpSrcRect,DWORD dwFlags,LPDDBLTFX lpDDBltFx); - STDMETHODIMP BltBatch(LPDDBLTBATCH lpDDBltBatch,DWORD dwCount,DWORD dwFlags); - STDMETHODIMP BltFast(DWORD dwX,DWORD dwY,LPDIRECTDRAWSURFACE lpDDSrcSurface,LPRECT lpSrcRect,DWORD dwTrans); - STDMETHODIMP DeleteAttachedSurface(DWORD dwFlags,LPDIRECTDRAWSURFACE lpDDSAttachedSurface); - STDMETHODIMP EnumAttachedSurfaces(LPVOID lpContext,LPDDENUMSURFACESCALLBACK lpEnumSurfacesCallback); - STDMETHODIMP EnumOverlayZOrders(DWORD dwFlags,LPVOID lpContext,LPDDENUMSURFACESCALLBACK lpfnCallback); - STDMETHODIMP Flip(LPDIRECTDRAWSURFACE lpDDSurfaceTargetOverride,DWORD dwFlags); - STDMETHODIMP GetAttachedSurface(LPDDSCAPS lpDDSCaps,LPDIRECTDRAWSURFACE *lplpDDAttachedSurface); - STDMETHODIMP GetBltStatus(DWORD dwFlags); - STDMETHODIMP GetCaps(LPDDSCAPS lpDDSCaps); - STDMETHODIMP GetClipper(LPDIRECTDRAWCLIPPER *lplpDDClipper); - STDMETHODIMP GetColorKey(DWORD dwFlags,LPDDCOLORKEY lpDDColorKey); - STDMETHODIMP GetDC(HDC *lphDC); - STDMETHODIMP GetFlipStatus(DWORD dwFlags); - STDMETHODIMP GetOverlayPosition(LPLONG lpdwX,LPLONG lpdwY); - STDMETHODIMP GetPalette(LPDIRECTDRAWPALETTE *lplpDDPalette); - STDMETHODIMP GetPixelFormat(LPDDPIXELFORMAT lpDDPixelFormat); - STDMETHODIMP GetSurfaceDesc(LPDDSURFACEDESC lpDDSurfaceDesc); - STDMETHODIMP Initialize(LPDIRECTDRAW lpDD,LPDDSURFACEDESC lpDDSurfaceDesc); - STDMETHODIMP IsLost(); - STDMETHODIMP Lock(LPRECT lpDestRect,LPDDSURFACEDESC lpDDSurfaceDesc,DWORD dwFlags,HANDLE hEvent); - STDMETHODIMP ReleaseDC(HDC hDC); - STDMETHODIMP Restore(); - STDMETHODIMP SetClipper(LPDIRECTDRAWCLIPPER lpDDClipper); - STDMETHODIMP SetColorKey(DWORD dwFlags,LPDDCOLORKEY lpDDColorKey); - STDMETHODIMP SetOverlayPosition(LONG dwX,LONG dwY); - STDMETHODIMP SetPalette(LPDIRECTDRAWPALETTE lpDDPalette); - STDMETHODIMP Unlock(LPVOID lpSurfaceData); - STDMETHODIMP UpdateOverlay(LPRECT lpSrcRect,LPDIRECTDRAWSURFACE lpDDDestSurface,LPRECT lpDestRect,DWORD dwFlags,LPDDOVERLAYFX lpDDOverlayFX); - STDMETHODIMP UpdateOverlayDisplay(DWORD dwFlags); - STDMETHODIMP UpdateOverlayZOrder(DWORD dwFlags,LPDIRECTDRAWSURFACE lpDDSReference); -}; - - -// DirectShow must work on multiple platforms. In particular, it also runs on -// Windows NT 3.51 which does not have DirectDraw capabilities. The filters -// cannot therefore link statically to the DirectDraw library. To make their -// lives that little bit easier we provide this class that manages loading -// and unloading the library and creating the initial IDirectDraw interface - -typedef DWORD (WINAPI *PGETFILEVERSIONINFOSIZE)(LPTSTR,LPDWORD); -typedef BOOL (WINAPI *PGETFILEVERSIONINFO)(LPTSTR,DWORD,DWORD,LPVOID); -typedef BOOL (WINAPI *PVERQUERYVALUE)(LPVOID,LPTSTR,LPVOID,PUINT); - -class CLoadDirectDraw -{ - LPDIRECTDRAW m_pDirectDraw; // The DirectDraw driver instance - HINSTANCE m_hDirectDraw; // Handle to the loaded library - -public: - - CLoadDirectDraw(); - ~CLoadDirectDraw(); - - HRESULT LoadDirectDraw(LPSTR szDevice); - void ReleaseDirectDraw(); - HRESULT IsDirectDrawLoaded(); - LPDIRECTDRAW GetDirectDraw(); - BOOL IsDirectDrawVersion1(); -}; - -#endif // __VIDEOCTL__ - +//------------------------------------------------------------------------------ +// File: VideoCtl.h +// +// Desc: DirectShow base classes. +// +// Copyright (c) Microsoft Corporation. All rights reserved. +//------------------------------------------------------------------------------ + + +#ifndef __VIDEOCTL__ +#define __VIDEOCTL__ + +// These help with property page implementations. The first can be used to +// load any string from a resource file. The buffer to load into is passed +// as an input parameter. The same buffer is the return value if the string +// was found otherwise it returns TEXT(""). The GetDialogSize is passed the +// resource ID of a dialog box and returns the size of it in screen pixels + +#define STR_MAX_LENGTH 256 +TCHAR * WINAPI StringFromResource(TCHAR *pBuffer, int iResourceID); + +#ifdef UNICODE +#define WideStringFromResource StringFromResource +char* WINAPI StringFromResource(char*pBuffer, int iResourceID); +#else +WCHAR * WINAPI WideStringFromResource(WCHAR *pBuffer, int iResourceID); +#endif + + +BOOL WINAPI GetDialogSize(int iResourceID, // Dialog box resource identifier + DLGPROC pDlgProc, // Pointer to dialog procedure + LPARAM lParam, // Any user data wanted in pDlgProc + SIZE *pResult); // Returns the size of dialog box + +// Class that aggregates an IDirectDraw interface + +class CAggDirectDraw : public IDirectDraw, public CUnknown +{ +protected: + + LPDIRECTDRAW m_pDirectDraw; + +public: + + DECLARE_IUNKNOWN + STDMETHODIMP NonDelegatingQueryInterface(REFIID riid,void **ppv); + + // Constructor and destructor + + CAggDirectDraw(TCHAR *pName,LPUNKNOWN pUnk) : + CUnknown(pName,pUnk), + m_pDirectDraw(NULL) { }; +#ifdef __MINGW32_MAJOR_VERSION + virtual ~CAggDirectDraw() { }; +#else + virtual CAggDirectDraw::~CAggDirectDraw() { }; +#endif + // Set the object we should be aggregating + void SetDirectDraw(LPDIRECTDRAW pDirectDraw) { + m_pDirectDraw = pDirectDraw; + } + + // IDirectDraw methods + + STDMETHODIMP Compact(); + STDMETHODIMP CreateClipper(DWORD dwFlags,LPDIRECTDRAWCLIPPER *lplpDDClipper,IUnknown *pUnkOuter); + STDMETHODIMP CreatePalette(DWORD dwFlags,LPPALETTEENTRY lpColorTable,LPDIRECTDRAWPALETTE *lplpDDPalette,IUnknown *pUnkOuter); + STDMETHODIMP CreateSurface(LPDDSURFACEDESC lpDDSurfaceDesc,LPDIRECTDRAWSURFACE *lplpDDSurface,IUnknown *pUnkOuter); + STDMETHODIMP DuplicateSurface(LPDIRECTDRAWSURFACE lpDDSurface,LPDIRECTDRAWSURFACE *lplpDupDDSurface); + STDMETHODIMP EnumDisplayModes(DWORD dwSurfaceDescCount,LPDDSURFACEDESC lplpDDSurfaceDescList,LPVOID lpContext,LPDDENUMMODESCALLBACK lpEnumCallback); + STDMETHODIMP EnumSurfaces(DWORD dwFlags,LPDDSURFACEDESC lpDDSD,LPVOID lpContext,LPDDENUMSURFACESCALLBACK lpEnumCallback); + STDMETHODIMP FlipToGDISurface(); + STDMETHODIMP GetCaps(LPDDCAPS lpDDDriverCaps,LPDDCAPS lpDDHELCaps); + STDMETHODIMP GetDisplayMode(LPDDSURFACEDESC lpDDSurfaceDesc); + STDMETHODIMP GetFourCCCodes(LPDWORD lpNumCodes,LPDWORD lpCodes); + STDMETHODIMP GetGDISurface(LPDIRECTDRAWSURFACE *lplpGDIDDSurface); + STDMETHODIMP GetMonitorFrequency(LPDWORD lpdwFrequency); + STDMETHODIMP GetScanLine(LPDWORD lpdwScanLine); + STDMETHODIMP GetVerticalBlankStatus(LPBOOL lpblsInVB); + STDMETHODIMP Initialize(GUID *lpGUID); + STDMETHODIMP RestoreDisplayMode(); + STDMETHODIMP SetCooperativeLevel(HWND hWnd,DWORD dwFlags); + STDMETHODIMP SetDisplayMode(DWORD dwWidth,DWORD dwHeight,DWORD dwBpp); + STDMETHODIMP WaitForVerticalBlank(DWORD dwFlags,HANDLE hEvent); +}; + + +// Class that aggregates an IDirectDrawSurface interface + +class CAggDrawSurface : public IDirectDrawSurface, public CUnknown +{ +protected: + + LPDIRECTDRAWSURFACE m_pDirectDrawSurface; + +public: + + DECLARE_IUNKNOWN + STDMETHODIMP NonDelegatingQueryInterface(REFIID riid,void **ppv); + + // Constructor and destructor + + CAggDrawSurface(TCHAR *pName,LPUNKNOWN pUnk) : + CUnknown(pName,pUnk), + m_pDirectDrawSurface(NULL) { }; + + virtual ~CAggDrawSurface() { }; + + // Set the object we should be aggregating + void SetDirectDrawSurface(LPDIRECTDRAWSURFACE pDirectDrawSurface) { + m_pDirectDrawSurface = pDirectDrawSurface; + } + + // IDirectDrawSurface methods + + STDMETHODIMP AddAttachedSurface(LPDIRECTDRAWSURFACE lpDDSAttachedSurface); + STDMETHODIMP AddOverlayDirtyRect(LPRECT lpRect); + STDMETHODIMP Blt(LPRECT lpDestRect,LPDIRECTDRAWSURFACE lpDDSrcSurface,LPRECT lpSrcRect,DWORD dwFlags,LPDDBLTFX lpDDBltFx); + STDMETHODIMP BltBatch(LPDDBLTBATCH lpDDBltBatch,DWORD dwCount,DWORD dwFlags); + STDMETHODIMP BltFast(DWORD dwX,DWORD dwY,LPDIRECTDRAWSURFACE lpDDSrcSurface,LPRECT lpSrcRect,DWORD dwTrans); + STDMETHODIMP DeleteAttachedSurface(DWORD dwFlags,LPDIRECTDRAWSURFACE lpDDSAttachedSurface); + STDMETHODIMP EnumAttachedSurfaces(LPVOID lpContext,LPDDENUMSURFACESCALLBACK lpEnumSurfacesCallback); + STDMETHODIMP EnumOverlayZOrders(DWORD dwFlags,LPVOID lpContext,LPDDENUMSURFACESCALLBACK lpfnCallback); + STDMETHODIMP Flip(LPDIRECTDRAWSURFACE lpDDSurfaceTargetOverride,DWORD dwFlags); + STDMETHODIMP GetAttachedSurface(LPDDSCAPS lpDDSCaps,LPDIRECTDRAWSURFACE *lplpDDAttachedSurface); + STDMETHODIMP GetBltStatus(DWORD dwFlags); + STDMETHODIMP GetCaps(LPDDSCAPS lpDDSCaps); + STDMETHODIMP GetClipper(LPDIRECTDRAWCLIPPER *lplpDDClipper); + STDMETHODIMP GetColorKey(DWORD dwFlags,LPDDCOLORKEY lpDDColorKey); + STDMETHODIMP GetDC(HDC *lphDC); + STDMETHODIMP GetFlipStatus(DWORD dwFlags); + STDMETHODIMP GetOverlayPosition(LPLONG lpdwX,LPLONG lpdwY); + STDMETHODIMP GetPalette(LPDIRECTDRAWPALETTE *lplpDDPalette); + STDMETHODIMP GetPixelFormat(LPDDPIXELFORMAT lpDDPixelFormat); + STDMETHODIMP GetSurfaceDesc(LPDDSURFACEDESC lpDDSurfaceDesc); + STDMETHODIMP Initialize(LPDIRECTDRAW lpDD,LPDDSURFACEDESC lpDDSurfaceDesc); + STDMETHODIMP IsLost(); + STDMETHODIMP Lock(LPRECT lpDestRect,LPDDSURFACEDESC lpDDSurfaceDesc,DWORD dwFlags,HANDLE hEvent); + STDMETHODIMP ReleaseDC(HDC hDC); + STDMETHODIMP Restore(); + STDMETHODIMP SetClipper(LPDIRECTDRAWCLIPPER lpDDClipper); + STDMETHODIMP SetColorKey(DWORD dwFlags,LPDDCOLORKEY lpDDColorKey); + STDMETHODIMP SetOverlayPosition(LONG dwX,LONG dwY); + STDMETHODIMP SetPalette(LPDIRECTDRAWPALETTE lpDDPalette); + STDMETHODIMP Unlock(LPVOID lpSurfaceData); + STDMETHODIMP UpdateOverlay(LPRECT lpSrcRect,LPDIRECTDRAWSURFACE lpDDDestSurface,LPRECT lpDestRect,DWORD dwFlags,LPDDOVERLAYFX lpDDOverlayFX); + STDMETHODIMP UpdateOverlayDisplay(DWORD dwFlags); + STDMETHODIMP UpdateOverlayZOrder(DWORD dwFlags,LPDIRECTDRAWSURFACE lpDDSReference); +}; + + +// DirectShow must work on multiple platforms. In particular, it also runs on +// Windows NT 3.51 which does not have DirectDraw capabilities. The filters +// cannot therefore link statically to the DirectDraw library. To make their +// lives that little bit easier we provide this class that manages loading +// and unloading the library and creating the initial IDirectDraw interface + +typedef DWORD (WINAPI *PGETFILEVERSIONINFOSIZE)(LPTSTR,LPDWORD); +typedef BOOL (WINAPI *PGETFILEVERSIONINFO)(LPTSTR,DWORD,DWORD,LPVOID); +typedef BOOL (WINAPI *PVERQUERYVALUE)(LPVOID,LPTSTR,LPVOID,PUINT); + +class CLoadDirectDraw +{ + LPDIRECTDRAW m_pDirectDraw; // The DirectDraw driver instance + HINSTANCE m_hDirectDraw; // Handle to the loaded library + +public: + + CLoadDirectDraw(); + ~CLoadDirectDraw(); + + HRESULT LoadDirectDraw(LPSTR szDevice); + void ReleaseDirectDraw(); + HRESULT IsDirectDrawLoaded(); + LPDIRECTDRAW GetDirectDraw(); + BOOL IsDirectDrawVersion1(); +}; + +#endif // __VIDEOCTL__ + diff --git a/videoInputSrcAndDemos/libs/DShow/Include/vmr9.h b/videoInputSrcAndDemos/libs/DShow/Include/vmr9.h index 35d2a98..0a4e1fe 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/vmr9.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/vmr9.h @@ -1,3203 +1,3203 @@ - -#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 vmr9.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 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 -#endif // __RPCNDR_H_VERSION__ - -#ifndef COM_NO_WINDOWS_H -#include "windows.h" -#include "ole2.h" -#endif /*COM_NO_WINDOWS_H*/ - -#ifndef __vmr9_h__ -#define __vmr9_h__ - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -#pragma once -#endif - -/* Forward Declarations */ - -#ifndef __IVMRImagePresenter9_FWD_DEFINED__ -#define __IVMRImagePresenter9_FWD_DEFINED__ -typedef interface IVMRImagePresenter9 IVMRImagePresenter9; -#endif /* __IVMRImagePresenter9_FWD_DEFINED__ */ - - -#ifndef __IVMRSurfaceAllocator9_FWD_DEFINED__ -#define __IVMRSurfaceAllocator9_FWD_DEFINED__ -typedef interface IVMRSurfaceAllocator9 IVMRSurfaceAllocator9; -#endif /* __IVMRSurfaceAllocator9_FWD_DEFINED__ */ - - -#ifndef __IVMRSurfaceAllocatorNotify9_FWD_DEFINED__ -#define __IVMRSurfaceAllocatorNotify9_FWD_DEFINED__ -typedef interface IVMRSurfaceAllocatorNotify9 IVMRSurfaceAllocatorNotify9; -#endif /* __IVMRSurfaceAllocatorNotify9_FWD_DEFINED__ */ - - -#ifndef __IVMRWindowlessControl9_FWD_DEFINED__ -#define __IVMRWindowlessControl9_FWD_DEFINED__ -typedef interface IVMRWindowlessControl9 IVMRWindowlessControl9; -#endif /* __IVMRWindowlessControl9_FWD_DEFINED__ */ - - -#ifndef __IVMRMixerControl9_FWD_DEFINED__ -#define __IVMRMixerControl9_FWD_DEFINED__ -typedef interface IVMRMixerControl9 IVMRMixerControl9; -#endif /* __IVMRMixerControl9_FWD_DEFINED__ */ - - -#ifndef __IVMRMixerBitmap9_FWD_DEFINED__ -#define __IVMRMixerBitmap9_FWD_DEFINED__ -typedef interface IVMRMixerBitmap9 IVMRMixerBitmap9; -#endif /* __IVMRMixerBitmap9_FWD_DEFINED__ */ - - -#ifndef __IVMRSurface9_FWD_DEFINED__ -#define __IVMRSurface9_FWD_DEFINED__ -typedef interface IVMRSurface9 IVMRSurface9; -#endif /* __IVMRSurface9_FWD_DEFINED__ */ - - -#ifndef __IVMRImagePresenterConfig9_FWD_DEFINED__ -#define __IVMRImagePresenterConfig9_FWD_DEFINED__ -typedef interface IVMRImagePresenterConfig9 IVMRImagePresenterConfig9; -#endif /* __IVMRImagePresenterConfig9_FWD_DEFINED__ */ - - -#ifndef __IVMRVideoStreamControl9_FWD_DEFINED__ -#define __IVMRVideoStreamControl9_FWD_DEFINED__ -typedef interface IVMRVideoStreamControl9 IVMRVideoStreamControl9; -#endif /* __IVMRVideoStreamControl9_FWD_DEFINED__ */ - - -#ifndef __IVMRFilterConfig9_FWD_DEFINED__ -#define __IVMRFilterConfig9_FWD_DEFINED__ -typedef interface IVMRFilterConfig9 IVMRFilterConfig9; -#endif /* __IVMRFilterConfig9_FWD_DEFINED__ */ - - -#ifndef __IVMRAspectRatioControl9_FWD_DEFINED__ -#define __IVMRAspectRatioControl9_FWD_DEFINED__ -typedef interface IVMRAspectRatioControl9 IVMRAspectRatioControl9; -#endif /* __IVMRAspectRatioControl9_FWD_DEFINED__ */ - - -#ifndef __IVMRMonitorConfig9_FWD_DEFINED__ -#define __IVMRMonitorConfig9_FWD_DEFINED__ -typedef interface IVMRMonitorConfig9 IVMRMonitorConfig9; -#endif /* __IVMRMonitorConfig9_FWD_DEFINED__ */ - - -#ifndef __IVMRDeinterlaceControl9_FWD_DEFINED__ -#define __IVMRDeinterlaceControl9_FWD_DEFINED__ -typedef interface IVMRDeinterlaceControl9 IVMRDeinterlaceControl9; -#endif /* __IVMRDeinterlaceControl9_FWD_DEFINED__ */ - - -#ifndef __IVMRImageCompositor9_FWD_DEFINED__ -#define __IVMRImageCompositor9_FWD_DEFINED__ -typedef interface IVMRImageCompositor9 IVMRImageCompositor9; -#endif /* __IVMRImageCompositor9_FWD_DEFINED__ */ - - -/* header files for imported files */ -#include "unknwn.h" - -#ifdef __cplusplus -extern "C"{ -#endif - -void * __RPC_USER MIDL_user_allocate(size_t); -void __RPC_USER MIDL_user_free( void * ); - -/* interface __MIDL_itf_vmr9_0000 */ -/* [local] */ - -#if 0 -typedef DWORD IDirect3DDevice9; - -typedef DWORD IDirect3DSurface9; - -typedef DWORD D3DFORMAT; - -typedef DWORD D3DCOLOR; - -typedef DWORD D3DPOOL; - -typedef LONGLONG REFERENCE_TIME; - -typedef DWORD *HMONITOR; - -typedef /* [public][public][public] */ struct __MIDL___MIDL_itf_vmr9_0000_0001 - { - DWORD dw1; - DWORD dw2; - } AM_MEDIA_TYPE; - -#endif - - - - - - - - - - - - - -typedef /* [public] */ -enum __MIDL___MIDL_itf_vmr9_0000_0002 - { VMR9Sample_SyncPoint = 0x1, - VMR9Sample_Preroll = 0x2, - VMR9Sample_Discontinuity = 0x4, - VMR9Sample_TimeValid = 0x8 - } VMR9PresentationFlags; - -typedef struct _VMR9PresentationInfo - { - DWORD dwFlags; - IDirect3DSurface9 *lpSurf; - REFERENCE_TIME rtStart; - REFERENCE_TIME rtEnd; - SIZE szAspectRatio; - RECT rcSrc; - RECT rcDst; - DWORD dwReserved1; - DWORD dwReserved2; - } VMR9PresentationInfo; - - - -extern RPC_IF_HANDLE __MIDL_itf_vmr9_0000_v0_0_c_ifspec; -extern RPC_IF_HANDLE __MIDL_itf_vmr9_0000_v0_0_s_ifspec; - -#ifndef __IVMRImagePresenter9_INTERFACE_DEFINED__ -#define __IVMRImagePresenter9_INTERFACE_DEFINED__ - -/* interface IVMRImagePresenter9 */ -/* [unique][helpstring][uuid][local][object][local] */ - - -EXTERN_C const IID IID_IVMRImagePresenter9; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("69188c61-12a3-40f0-8ffc-342e7b433fd7") - IVMRImagePresenter9 : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE StartPresenting( - /* [in] */ DWORD_PTR dwUserID) = 0; - - virtual HRESULT STDMETHODCALLTYPE StopPresenting( - /* [in] */ DWORD_PTR dwUserID) = 0; - - virtual HRESULT STDMETHODCALLTYPE PresentImage( - /* [in] */ DWORD_PTR dwUserID, - /* [in] */ VMR9PresentationInfo *lpPresInfo) = 0; - - }; - -#else /* C style interface */ - - typedef struct IVMRImagePresenter9Vtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IVMRImagePresenter9 * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IVMRImagePresenter9 * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IVMRImagePresenter9 * This); - - HRESULT ( STDMETHODCALLTYPE *StartPresenting )( - IVMRImagePresenter9 * This, - /* [in] */ DWORD_PTR dwUserID); - - HRESULT ( STDMETHODCALLTYPE *StopPresenting )( - IVMRImagePresenter9 * This, - /* [in] */ DWORD_PTR dwUserID); - - HRESULT ( STDMETHODCALLTYPE *PresentImage )( - IVMRImagePresenter9 * This, - /* [in] */ DWORD_PTR dwUserID, - /* [in] */ VMR9PresentationInfo *lpPresInfo); - - END_INTERFACE - } IVMRImagePresenter9Vtbl; - - interface IVMRImagePresenter9 - { - CONST_VTBL struct IVMRImagePresenter9Vtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IVMRImagePresenter9_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IVMRImagePresenter9_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IVMRImagePresenter9_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IVMRImagePresenter9_StartPresenting(This,dwUserID) \ - (This)->lpVtbl -> StartPresenting(This,dwUserID) - -#define IVMRImagePresenter9_StopPresenting(This,dwUserID) \ - (This)->lpVtbl -> StopPresenting(This,dwUserID) - -#define IVMRImagePresenter9_PresentImage(This,dwUserID,lpPresInfo) \ - (This)->lpVtbl -> PresentImage(This,dwUserID,lpPresInfo) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IVMRImagePresenter9_StartPresenting_Proxy( - IVMRImagePresenter9 * This, - /* [in] */ DWORD_PTR dwUserID); - - -void __RPC_STUB IVMRImagePresenter9_StartPresenting_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IVMRImagePresenter9_StopPresenting_Proxy( - IVMRImagePresenter9 * This, - /* [in] */ DWORD_PTR dwUserID); - - -void __RPC_STUB IVMRImagePresenter9_StopPresenting_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IVMRImagePresenter9_PresentImage_Proxy( - IVMRImagePresenter9 * This, - /* [in] */ DWORD_PTR dwUserID, - /* [in] */ VMR9PresentationInfo *lpPresInfo); - - -void __RPC_STUB IVMRImagePresenter9_PresentImage_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IVMRImagePresenter9_INTERFACE_DEFINED__ */ - - -/* interface __MIDL_itf_vmr9_0009 */ -/* [local] */ - -typedef /* [public] */ -enum __MIDL___MIDL_itf_vmr9_0009_0001 - { VMR9AllocFlag_3DRenderTarget = 0x1, - VMR9AllocFlag_DXVATarget = 0x2, - VMR9AllocFlag_TextureSurface = 0x4, - VMR9AllocFlag_OffscreenSurface = 0x8, - VMR9AllocFlag_UsageReserved = 0xf0, - VMR9AllocFlag_UsageMask = 0xff - } VMR9SurfaceAllocationFlags; - -typedef struct _VMR9AllocationInfo - { - DWORD dwFlags; - DWORD dwWidth; - DWORD dwHeight; - D3DFORMAT Format; - D3DPOOL Pool; - DWORD MinBuffers; - SIZE szAspectRatio; - SIZE szNativeSize; - } VMR9AllocationInfo; - - - -extern RPC_IF_HANDLE __MIDL_itf_vmr9_0009_v0_0_c_ifspec; -extern RPC_IF_HANDLE __MIDL_itf_vmr9_0009_v0_0_s_ifspec; - -#ifndef __IVMRSurfaceAllocator9_INTERFACE_DEFINED__ -#define __IVMRSurfaceAllocator9_INTERFACE_DEFINED__ - -/* interface IVMRSurfaceAllocator9 */ -/* [unique][helpstring][uuid][local][object][local] */ - - -EXTERN_C const IID IID_IVMRSurfaceAllocator9; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("8d5148ea-3f5d-46cf-9df1-d1b896eedb1f") - IVMRSurfaceAllocator9 : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE InitializeDevice( - /* [in] */ DWORD_PTR dwUserID, - /* [in] */ VMR9AllocationInfo *lpAllocInfo, - /* [out][in] */ DWORD *lpNumBuffers) = 0; - - virtual HRESULT STDMETHODCALLTYPE TerminateDevice( - /* [in] */ DWORD_PTR dwID) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetSurface( - /* [in] */ DWORD_PTR dwUserID, - /* [in] */ DWORD SurfaceIndex, - /* [in] */ DWORD SurfaceFlags, - /* [out] */ IDirect3DSurface9 **lplpSurface) = 0; - - virtual HRESULT STDMETHODCALLTYPE AdviseNotify( - /* [in] */ IVMRSurfaceAllocatorNotify9 *lpIVMRSurfAllocNotify) = 0; - - }; - -#else /* C style interface */ - - typedef struct IVMRSurfaceAllocator9Vtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IVMRSurfaceAllocator9 * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IVMRSurfaceAllocator9 * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IVMRSurfaceAllocator9 * This); - - HRESULT ( STDMETHODCALLTYPE *InitializeDevice )( - IVMRSurfaceAllocator9 * This, - /* [in] */ DWORD_PTR dwUserID, - /* [in] */ VMR9AllocationInfo *lpAllocInfo, - /* [out][in] */ DWORD *lpNumBuffers); - - HRESULT ( STDMETHODCALLTYPE *TerminateDevice )( - IVMRSurfaceAllocator9 * This, - /* [in] */ DWORD_PTR dwID); - - HRESULT ( STDMETHODCALLTYPE *GetSurface )( - IVMRSurfaceAllocator9 * This, - /* [in] */ DWORD_PTR dwUserID, - /* [in] */ DWORD SurfaceIndex, - /* [in] */ DWORD SurfaceFlags, - /* [out] */ IDirect3DSurface9 **lplpSurface); - - HRESULT ( STDMETHODCALLTYPE *AdviseNotify )( - IVMRSurfaceAllocator9 * This, - /* [in] */ IVMRSurfaceAllocatorNotify9 *lpIVMRSurfAllocNotify); - - END_INTERFACE - } IVMRSurfaceAllocator9Vtbl; - - interface IVMRSurfaceAllocator9 - { - CONST_VTBL struct IVMRSurfaceAllocator9Vtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IVMRSurfaceAllocator9_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IVMRSurfaceAllocator9_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IVMRSurfaceAllocator9_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IVMRSurfaceAllocator9_InitializeDevice(This,dwUserID,lpAllocInfo,lpNumBuffers) \ - (This)->lpVtbl -> InitializeDevice(This,dwUserID,lpAllocInfo,lpNumBuffers) - -#define IVMRSurfaceAllocator9_TerminateDevice(This,dwID) \ - (This)->lpVtbl -> TerminateDevice(This,dwID) - -#define IVMRSurfaceAllocator9_GetSurface(This,dwUserID,SurfaceIndex,SurfaceFlags,lplpSurface) \ - (This)->lpVtbl -> GetSurface(This,dwUserID,SurfaceIndex,SurfaceFlags,lplpSurface) - -#define IVMRSurfaceAllocator9_AdviseNotify(This,lpIVMRSurfAllocNotify) \ - (This)->lpVtbl -> AdviseNotify(This,lpIVMRSurfAllocNotify) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IVMRSurfaceAllocator9_InitializeDevice_Proxy( - IVMRSurfaceAllocator9 * This, - /* [in] */ DWORD_PTR dwUserID, - /* [in] */ VMR9AllocationInfo *lpAllocInfo, - /* [out][in] */ DWORD *lpNumBuffers); - - -void __RPC_STUB IVMRSurfaceAllocator9_InitializeDevice_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IVMRSurfaceAllocator9_TerminateDevice_Proxy( - IVMRSurfaceAllocator9 * This, - /* [in] */ DWORD_PTR dwID); - - -void __RPC_STUB IVMRSurfaceAllocator9_TerminateDevice_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IVMRSurfaceAllocator9_GetSurface_Proxy( - IVMRSurfaceAllocator9 * This, - /* [in] */ DWORD_PTR dwUserID, - /* [in] */ DWORD SurfaceIndex, - /* [in] */ DWORD SurfaceFlags, - /* [out] */ IDirect3DSurface9 **lplpSurface); - - -void __RPC_STUB IVMRSurfaceAllocator9_GetSurface_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IVMRSurfaceAllocator9_AdviseNotify_Proxy( - IVMRSurfaceAllocator9 * This, - /* [in] */ IVMRSurfaceAllocatorNotify9 *lpIVMRSurfAllocNotify); - - -void __RPC_STUB IVMRSurfaceAllocator9_AdviseNotify_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IVMRSurfaceAllocator9_INTERFACE_DEFINED__ */ - - -#ifndef __IVMRSurfaceAllocatorNotify9_INTERFACE_DEFINED__ -#define __IVMRSurfaceAllocatorNotify9_INTERFACE_DEFINED__ - -/* interface IVMRSurfaceAllocatorNotify9 */ -/* [unique][helpstring][uuid][local][object][local] */ - - -EXTERN_C const IID IID_IVMRSurfaceAllocatorNotify9; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("dca3f5df-bb3a-4d03-bd81-84614bfbfa0c") - IVMRSurfaceAllocatorNotify9 : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE AdviseSurfaceAllocator( - /* [in] */ DWORD_PTR dwUserID, - /* [in] */ IVMRSurfaceAllocator9 *lpIVRMSurfaceAllocator) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetD3DDevice( - /* [in] */ IDirect3DDevice9 *lpD3DDevice, - /* [in] */ HMONITOR hMonitor) = 0; - - virtual HRESULT STDMETHODCALLTYPE ChangeD3DDevice( - /* [in] */ IDirect3DDevice9 *lpD3DDevice, - /* [in] */ HMONITOR hMonitor) = 0; - - virtual HRESULT STDMETHODCALLTYPE AllocateSurfaceHelper( - /* [in] */ VMR9AllocationInfo *lpAllocInfo, - /* [out][in] */ DWORD *lpNumBuffers, - /* [out] */ IDirect3DSurface9 **lplpSurface) = 0; - - virtual HRESULT STDMETHODCALLTYPE NotifyEvent( - /* [in] */ LONG EventCode, - /* [in] */ LONG_PTR Param1, - /* [in] */ LONG_PTR Param2) = 0; - - }; - -#else /* C style interface */ - - typedef struct IVMRSurfaceAllocatorNotify9Vtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IVMRSurfaceAllocatorNotify9 * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IVMRSurfaceAllocatorNotify9 * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IVMRSurfaceAllocatorNotify9 * This); - - HRESULT ( STDMETHODCALLTYPE *AdviseSurfaceAllocator )( - IVMRSurfaceAllocatorNotify9 * This, - /* [in] */ DWORD_PTR dwUserID, - /* [in] */ IVMRSurfaceAllocator9 *lpIVRMSurfaceAllocator); - - HRESULT ( STDMETHODCALLTYPE *SetD3DDevice )( - IVMRSurfaceAllocatorNotify9 * This, - /* [in] */ IDirect3DDevice9 *lpD3DDevice, - /* [in] */ HMONITOR hMonitor); - - HRESULT ( STDMETHODCALLTYPE *ChangeD3DDevice )( - IVMRSurfaceAllocatorNotify9 * This, - /* [in] */ IDirect3DDevice9 *lpD3DDevice, - /* [in] */ HMONITOR hMonitor); - - HRESULT ( STDMETHODCALLTYPE *AllocateSurfaceHelper )( - IVMRSurfaceAllocatorNotify9 * This, - /* [in] */ VMR9AllocationInfo *lpAllocInfo, - /* [out][in] */ DWORD *lpNumBuffers, - /* [out] */ IDirect3DSurface9 **lplpSurface); - - HRESULT ( STDMETHODCALLTYPE *NotifyEvent )( - IVMRSurfaceAllocatorNotify9 * This, - /* [in] */ LONG EventCode, - /* [in] */ LONG_PTR Param1, - /* [in] */ LONG_PTR Param2); - - END_INTERFACE - } IVMRSurfaceAllocatorNotify9Vtbl; - - interface IVMRSurfaceAllocatorNotify9 - { - CONST_VTBL struct IVMRSurfaceAllocatorNotify9Vtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IVMRSurfaceAllocatorNotify9_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IVMRSurfaceAllocatorNotify9_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IVMRSurfaceAllocatorNotify9_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IVMRSurfaceAllocatorNotify9_AdviseSurfaceAllocator(This,dwUserID,lpIVRMSurfaceAllocator) \ - (This)->lpVtbl -> AdviseSurfaceAllocator(This,dwUserID,lpIVRMSurfaceAllocator) - -#define IVMRSurfaceAllocatorNotify9_SetD3DDevice(This,lpD3DDevice,hMonitor) \ - (This)->lpVtbl -> SetD3DDevice(This,lpD3DDevice,hMonitor) - -#define IVMRSurfaceAllocatorNotify9_ChangeD3DDevice(This,lpD3DDevice,hMonitor) \ - (This)->lpVtbl -> ChangeD3DDevice(This,lpD3DDevice,hMonitor) - -#define IVMRSurfaceAllocatorNotify9_AllocateSurfaceHelper(This,lpAllocInfo,lpNumBuffers,lplpSurface) \ - (This)->lpVtbl -> AllocateSurfaceHelper(This,lpAllocInfo,lpNumBuffers,lplpSurface) - -#define IVMRSurfaceAllocatorNotify9_NotifyEvent(This,EventCode,Param1,Param2) \ - (This)->lpVtbl -> NotifyEvent(This,EventCode,Param1,Param2) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IVMRSurfaceAllocatorNotify9_AdviseSurfaceAllocator_Proxy( - IVMRSurfaceAllocatorNotify9 * This, - /* [in] */ DWORD_PTR dwUserID, - /* [in] */ IVMRSurfaceAllocator9 *lpIVRMSurfaceAllocator); - - -void __RPC_STUB IVMRSurfaceAllocatorNotify9_AdviseSurfaceAllocator_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IVMRSurfaceAllocatorNotify9_SetD3DDevice_Proxy( - IVMRSurfaceAllocatorNotify9 * This, - /* [in] */ IDirect3DDevice9 *lpD3DDevice, - /* [in] */ HMONITOR hMonitor); - - -void __RPC_STUB IVMRSurfaceAllocatorNotify9_SetD3DDevice_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IVMRSurfaceAllocatorNotify9_ChangeD3DDevice_Proxy( - IVMRSurfaceAllocatorNotify9 * This, - /* [in] */ IDirect3DDevice9 *lpD3DDevice, - /* [in] */ HMONITOR hMonitor); - - -void __RPC_STUB IVMRSurfaceAllocatorNotify9_ChangeD3DDevice_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IVMRSurfaceAllocatorNotify9_AllocateSurfaceHelper_Proxy( - IVMRSurfaceAllocatorNotify9 * This, - /* [in] */ VMR9AllocationInfo *lpAllocInfo, - /* [out][in] */ DWORD *lpNumBuffers, - /* [out] */ IDirect3DSurface9 **lplpSurface); - - -void __RPC_STUB IVMRSurfaceAllocatorNotify9_AllocateSurfaceHelper_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IVMRSurfaceAllocatorNotify9_NotifyEvent_Proxy( - IVMRSurfaceAllocatorNotify9 * This, - /* [in] */ LONG EventCode, - /* [in] */ LONG_PTR Param1, - /* [in] */ LONG_PTR Param2); - - -void __RPC_STUB IVMRSurfaceAllocatorNotify9_NotifyEvent_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IVMRSurfaceAllocatorNotify9_INTERFACE_DEFINED__ */ - - -/* interface __MIDL_itf_vmr9_0011 */ -/* [local] */ - -typedef /* [public] */ -enum __MIDL___MIDL_itf_vmr9_0011_0001 - { VMR9ARMode_None = 0, - VMR9ARMode_LetterBox = VMR9ARMode_None + 1 - } VMR9AspectRatioMode; - - - -extern RPC_IF_HANDLE __MIDL_itf_vmr9_0011_v0_0_c_ifspec; -extern RPC_IF_HANDLE __MIDL_itf_vmr9_0011_v0_0_s_ifspec; - -#ifndef __IVMRWindowlessControl9_INTERFACE_DEFINED__ -#define __IVMRWindowlessControl9_INTERFACE_DEFINED__ - -/* interface IVMRWindowlessControl9 */ -/* [unique][helpstring][uuid][local][object][local] */ - - -EXTERN_C const IID IID_IVMRWindowlessControl9; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("8f537d09-f85e-4414-b23b-502e54c79927") - IVMRWindowlessControl9 : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE GetNativeVideoSize( - /* [out] */ LONG *lpWidth, - /* [out] */ LONG *lpHeight, - /* [out] */ LONG *lpARWidth, - /* [out] */ LONG *lpARHeight) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetMinIdealVideoSize( - /* [out] */ LONG *lpWidth, - /* [out] */ LONG *lpHeight) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetMaxIdealVideoSize( - /* [out] */ LONG *lpWidth, - /* [out] */ LONG *lpHeight) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetVideoPosition( - /* [in] */ const LPRECT lpSRCRect, - /* [in] */ const LPRECT lpDSTRect) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetVideoPosition( - /* [out] */ LPRECT lpSRCRect, - /* [out] */ LPRECT lpDSTRect) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetAspectRatioMode( - /* [out] */ DWORD *lpAspectRatioMode) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetAspectRatioMode( - /* [in] */ DWORD AspectRatioMode) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetVideoClippingWindow( - /* [in] */ HWND hwnd) = 0; - - virtual HRESULT STDMETHODCALLTYPE RepaintVideo( - /* [in] */ HWND hwnd, - /* [in] */ HDC hdc) = 0; - - virtual HRESULT STDMETHODCALLTYPE DisplayModeChanged( void) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetCurrentImage( - /* [out] */ BYTE **lpDib) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetBorderColor( - /* [in] */ COLORREF Clr) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetBorderColor( - /* [out] */ COLORREF *lpClr) = 0; - - }; - -#else /* C style interface */ - - typedef struct IVMRWindowlessControl9Vtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IVMRWindowlessControl9 * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IVMRWindowlessControl9 * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IVMRWindowlessControl9 * This); - - HRESULT ( STDMETHODCALLTYPE *GetNativeVideoSize )( - IVMRWindowlessControl9 * This, - /* [out] */ LONG *lpWidth, - /* [out] */ LONG *lpHeight, - /* [out] */ LONG *lpARWidth, - /* [out] */ LONG *lpARHeight); - - HRESULT ( STDMETHODCALLTYPE *GetMinIdealVideoSize )( - IVMRWindowlessControl9 * This, - /* [out] */ LONG *lpWidth, - /* [out] */ LONG *lpHeight); - - HRESULT ( STDMETHODCALLTYPE *GetMaxIdealVideoSize )( - IVMRWindowlessControl9 * This, - /* [out] */ LONG *lpWidth, - /* [out] */ LONG *lpHeight); - - HRESULT ( STDMETHODCALLTYPE *SetVideoPosition )( - IVMRWindowlessControl9 * This, - /* [in] */ const LPRECT lpSRCRect, - /* [in] */ const LPRECT lpDSTRect); - - HRESULT ( STDMETHODCALLTYPE *GetVideoPosition )( - IVMRWindowlessControl9 * This, - /* [out] */ LPRECT lpSRCRect, - /* [out] */ LPRECT lpDSTRect); - - HRESULT ( STDMETHODCALLTYPE *GetAspectRatioMode )( - IVMRWindowlessControl9 * This, - /* [out] */ DWORD *lpAspectRatioMode); - - HRESULT ( STDMETHODCALLTYPE *SetAspectRatioMode )( - IVMRWindowlessControl9 * This, - /* [in] */ DWORD AspectRatioMode); - - HRESULT ( STDMETHODCALLTYPE *SetVideoClippingWindow )( - IVMRWindowlessControl9 * This, - /* [in] */ HWND hwnd); - - HRESULT ( STDMETHODCALLTYPE *RepaintVideo )( - IVMRWindowlessControl9 * This, - /* [in] */ HWND hwnd, - /* [in] */ HDC hdc); - - HRESULT ( STDMETHODCALLTYPE *DisplayModeChanged )( - IVMRWindowlessControl9 * This); - - HRESULT ( STDMETHODCALLTYPE *GetCurrentImage )( - IVMRWindowlessControl9 * This, - /* [out] */ BYTE **lpDib); - - HRESULT ( STDMETHODCALLTYPE *SetBorderColor )( - IVMRWindowlessControl9 * This, - /* [in] */ COLORREF Clr); - - HRESULT ( STDMETHODCALLTYPE *GetBorderColor )( - IVMRWindowlessControl9 * This, - /* [out] */ COLORREF *lpClr); - - END_INTERFACE - } IVMRWindowlessControl9Vtbl; - - interface IVMRWindowlessControl9 - { - CONST_VTBL struct IVMRWindowlessControl9Vtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IVMRWindowlessControl9_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IVMRWindowlessControl9_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IVMRWindowlessControl9_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IVMRWindowlessControl9_GetNativeVideoSize(This,lpWidth,lpHeight,lpARWidth,lpARHeight) \ - (This)->lpVtbl -> GetNativeVideoSize(This,lpWidth,lpHeight,lpARWidth,lpARHeight) - -#define IVMRWindowlessControl9_GetMinIdealVideoSize(This,lpWidth,lpHeight) \ - (This)->lpVtbl -> GetMinIdealVideoSize(This,lpWidth,lpHeight) - -#define IVMRWindowlessControl9_GetMaxIdealVideoSize(This,lpWidth,lpHeight) \ - (This)->lpVtbl -> GetMaxIdealVideoSize(This,lpWidth,lpHeight) - -#define IVMRWindowlessControl9_SetVideoPosition(This,lpSRCRect,lpDSTRect) \ - (This)->lpVtbl -> SetVideoPosition(This,lpSRCRect,lpDSTRect) - -#define IVMRWindowlessControl9_GetVideoPosition(This,lpSRCRect,lpDSTRect) \ - (This)->lpVtbl -> GetVideoPosition(This,lpSRCRect,lpDSTRect) - -#define IVMRWindowlessControl9_GetAspectRatioMode(This,lpAspectRatioMode) \ - (This)->lpVtbl -> GetAspectRatioMode(This,lpAspectRatioMode) - -#define IVMRWindowlessControl9_SetAspectRatioMode(This,AspectRatioMode) \ - (This)->lpVtbl -> SetAspectRatioMode(This,AspectRatioMode) - -#define IVMRWindowlessControl9_SetVideoClippingWindow(This,hwnd) \ - (This)->lpVtbl -> SetVideoClippingWindow(This,hwnd) - -#define IVMRWindowlessControl9_RepaintVideo(This,hwnd,hdc) \ - (This)->lpVtbl -> RepaintVideo(This,hwnd,hdc) - -#define IVMRWindowlessControl9_DisplayModeChanged(This) \ - (This)->lpVtbl -> DisplayModeChanged(This) - -#define IVMRWindowlessControl9_GetCurrentImage(This,lpDib) \ - (This)->lpVtbl -> GetCurrentImage(This,lpDib) - -#define IVMRWindowlessControl9_SetBorderColor(This,Clr) \ - (This)->lpVtbl -> SetBorderColor(This,Clr) - -#define IVMRWindowlessControl9_GetBorderColor(This,lpClr) \ - (This)->lpVtbl -> GetBorderColor(This,lpClr) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IVMRWindowlessControl9_GetNativeVideoSize_Proxy( - IVMRWindowlessControl9 * This, - /* [out] */ LONG *lpWidth, - /* [out] */ LONG *lpHeight, - /* [out] */ LONG *lpARWidth, - /* [out] */ LONG *lpARHeight); - - -void __RPC_STUB IVMRWindowlessControl9_GetNativeVideoSize_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IVMRWindowlessControl9_GetMinIdealVideoSize_Proxy( - IVMRWindowlessControl9 * This, - /* [out] */ LONG *lpWidth, - /* [out] */ LONG *lpHeight); - - -void __RPC_STUB IVMRWindowlessControl9_GetMinIdealVideoSize_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IVMRWindowlessControl9_GetMaxIdealVideoSize_Proxy( - IVMRWindowlessControl9 * This, - /* [out] */ LONG *lpWidth, - /* [out] */ LONG *lpHeight); - - -void __RPC_STUB IVMRWindowlessControl9_GetMaxIdealVideoSize_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IVMRWindowlessControl9_SetVideoPosition_Proxy( - IVMRWindowlessControl9 * This, - /* [in] */ const LPRECT lpSRCRect, - /* [in] */ const LPRECT lpDSTRect); - - -void __RPC_STUB IVMRWindowlessControl9_SetVideoPosition_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IVMRWindowlessControl9_GetVideoPosition_Proxy( - IVMRWindowlessControl9 * This, - /* [out] */ LPRECT lpSRCRect, - /* [out] */ LPRECT lpDSTRect); - - -void __RPC_STUB IVMRWindowlessControl9_GetVideoPosition_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IVMRWindowlessControl9_GetAspectRatioMode_Proxy( - IVMRWindowlessControl9 * This, - /* [out] */ DWORD *lpAspectRatioMode); - - -void __RPC_STUB IVMRWindowlessControl9_GetAspectRatioMode_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IVMRWindowlessControl9_SetAspectRatioMode_Proxy( - IVMRWindowlessControl9 * This, - /* [in] */ DWORD AspectRatioMode); - - -void __RPC_STUB IVMRWindowlessControl9_SetAspectRatioMode_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IVMRWindowlessControl9_SetVideoClippingWindow_Proxy( - IVMRWindowlessControl9 * This, - /* [in] */ HWND hwnd); - - -void __RPC_STUB IVMRWindowlessControl9_SetVideoClippingWindow_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IVMRWindowlessControl9_RepaintVideo_Proxy( - IVMRWindowlessControl9 * This, - /* [in] */ HWND hwnd, - /* [in] */ HDC hdc); - - -void __RPC_STUB IVMRWindowlessControl9_RepaintVideo_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IVMRWindowlessControl9_DisplayModeChanged_Proxy( - IVMRWindowlessControl9 * This); - - -void __RPC_STUB IVMRWindowlessControl9_DisplayModeChanged_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IVMRWindowlessControl9_GetCurrentImage_Proxy( - IVMRWindowlessControl9 * This, - /* [out] */ BYTE **lpDib); - - -void __RPC_STUB IVMRWindowlessControl9_GetCurrentImage_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IVMRWindowlessControl9_SetBorderColor_Proxy( - IVMRWindowlessControl9 * This, - /* [in] */ COLORREF Clr); - - -void __RPC_STUB IVMRWindowlessControl9_SetBorderColor_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IVMRWindowlessControl9_GetBorderColor_Proxy( - IVMRWindowlessControl9 * This, - /* [out] */ COLORREF *lpClr); - - -void __RPC_STUB IVMRWindowlessControl9_GetBorderColor_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IVMRWindowlessControl9_INTERFACE_DEFINED__ */ - - -/* interface __MIDL_itf_vmr9_0012 */ -/* [local] */ - -typedef /* [public] */ -enum __MIDL___MIDL_itf_vmr9_0012_0001 - { MixerPref9_NoDecimation = 0x1, - MixerPref9_DecimateOutput = 0x2, - MixerPref9_DecimationReserved = 0xc, - MixerPref9_DecimateMask = 0xf, - MixerPref9_BiLinearFiltering = 0x10, - MixerPref9_PointFiltering = 0x20, - MixerPref9_AnisotropicFiltering = 0x40, - MixerPref9_PyramidalQuadFiltering = 0x80, - MixerPref9_GaussianQuadFiltering = 0x100, - MixerPref9_FilteringReserved = 0xe00, - MixerPref9_FilteringMask = 0xff0, - MixerPref9_RenderTargetRGB = 0x1000, - MixerPref9_RenderTargetReserved = 0xfe000, - MixerPref9_RenderTargetMask = 0xff000 - } VMR9MixerPrefs; - -typedef struct _VMR9NormalizedRect - { - float left; - float top; - float right; - float bottom; - } VMR9NormalizedRect; - -typedef /* [public][public][public] */ -enum __MIDL___MIDL_itf_vmr9_0012_0002 - { ProcAmpControl9_Brightness = 0x1, - ProcAmpControl9_Contrast = 0x2, - ProcAmpControl9_Hue = 0x4, - ProcAmpControl9_Saturation = 0x8, - ProcAmpControl9_Mask = 0xf - } VMR9ProcAmpControlFlags; - -typedef struct _VMR9ProcAmpControl - { - DWORD dwSize; - DWORD dwFlags; - float Brightness; - float Contrast; - float Hue; - float Saturation; - } VMR9ProcAmpControl; - -typedef struct _VMR9ProcAmpControlRange - { - DWORD dwSize; - VMR9ProcAmpControlFlags dwProperty; - float MinValue; - float MaxValue; - float DefaultValue; - float StepSize; - } VMR9ProcAmpControlRange; - - - -extern RPC_IF_HANDLE __MIDL_itf_vmr9_0012_v0_0_c_ifspec; -extern RPC_IF_HANDLE __MIDL_itf_vmr9_0012_v0_0_s_ifspec; - -#ifndef __IVMRMixerControl9_INTERFACE_DEFINED__ -#define __IVMRMixerControl9_INTERFACE_DEFINED__ - -/* interface IVMRMixerControl9 */ -/* [unique][helpstring][uuid][local][object][local] */ - - -EXTERN_C const IID IID_IVMRMixerControl9; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("1a777eaa-47c8-4930-b2c9-8fee1c1b0f3b") - IVMRMixerControl9 : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE SetAlpha( - /* [in] */ DWORD dwStreamID, - /* [in] */ float Alpha) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetAlpha( - /* [in] */ DWORD dwStreamID, - /* [out] */ float *pAlpha) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetZOrder( - /* [in] */ DWORD dwStreamID, - /* [in] */ DWORD dwZ) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetZOrder( - /* [in] */ DWORD dwStreamID, - /* [out] */ DWORD *pZ) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetOutputRect( - /* [in] */ DWORD dwStreamID, - /* [in] */ const VMR9NormalizedRect *pRect) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetOutputRect( - /* [in] */ DWORD dwStreamID, - /* [out] */ VMR9NormalizedRect *pRect) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetBackgroundClr( - /* [in] */ COLORREF ClrBkg) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetBackgroundClr( - /* [in] */ COLORREF *lpClrBkg) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetMixingPrefs( - /* [in] */ DWORD dwMixerPrefs) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetMixingPrefs( - /* [out] */ DWORD *pdwMixerPrefs) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetProcAmpControl( - /* [in] */ DWORD dwStreamID, - /* [in] */ VMR9ProcAmpControl *lpClrControl) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetProcAmpControl( - /* [in] */ DWORD dwStreamID, - /* [out][in] */ VMR9ProcAmpControl *lpClrControl) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetProcAmpControlRange( - /* [in] */ DWORD dwStreamID, - /* [out][in] */ VMR9ProcAmpControlRange *lpClrControl) = 0; - - }; - -#else /* C style interface */ - - typedef struct IVMRMixerControl9Vtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IVMRMixerControl9 * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IVMRMixerControl9 * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IVMRMixerControl9 * This); - - HRESULT ( STDMETHODCALLTYPE *SetAlpha )( - IVMRMixerControl9 * This, - /* [in] */ DWORD dwStreamID, - /* [in] */ float Alpha); - - HRESULT ( STDMETHODCALLTYPE *GetAlpha )( - IVMRMixerControl9 * This, - /* [in] */ DWORD dwStreamID, - /* [out] */ float *pAlpha); - - HRESULT ( STDMETHODCALLTYPE *SetZOrder )( - IVMRMixerControl9 * This, - /* [in] */ DWORD dwStreamID, - /* [in] */ DWORD dwZ); - - HRESULT ( STDMETHODCALLTYPE *GetZOrder )( - IVMRMixerControl9 * This, - /* [in] */ DWORD dwStreamID, - /* [out] */ DWORD *pZ); - - HRESULT ( STDMETHODCALLTYPE *SetOutputRect )( - IVMRMixerControl9 * This, - /* [in] */ DWORD dwStreamID, - /* [in] */ const VMR9NormalizedRect *pRect); - - HRESULT ( STDMETHODCALLTYPE *GetOutputRect )( - IVMRMixerControl9 * This, - /* [in] */ DWORD dwStreamID, - /* [out] */ VMR9NormalizedRect *pRect); - - HRESULT ( STDMETHODCALLTYPE *SetBackgroundClr )( - IVMRMixerControl9 * This, - /* [in] */ COLORREF ClrBkg); - - HRESULT ( STDMETHODCALLTYPE *GetBackgroundClr )( - IVMRMixerControl9 * This, - /* [in] */ COLORREF *lpClrBkg); - - HRESULT ( STDMETHODCALLTYPE *SetMixingPrefs )( - IVMRMixerControl9 * This, - /* [in] */ DWORD dwMixerPrefs); - - HRESULT ( STDMETHODCALLTYPE *GetMixingPrefs )( - IVMRMixerControl9 * This, - /* [out] */ DWORD *pdwMixerPrefs); - - HRESULT ( STDMETHODCALLTYPE *SetProcAmpControl )( - IVMRMixerControl9 * This, - /* [in] */ DWORD dwStreamID, - /* [in] */ VMR9ProcAmpControl *lpClrControl); - - HRESULT ( STDMETHODCALLTYPE *GetProcAmpControl )( - IVMRMixerControl9 * This, - /* [in] */ DWORD dwStreamID, - /* [out][in] */ VMR9ProcAmpControl *lpClrControl); - - HRESULT ( STDMETHODCALLTYPE *GetProcAmpControlRange )( - IVMRMixerControl9 * This, - /* [in] */ DWORD dwStreamID, - /* [out][in] */ VMR9ProcAmpControlRange *lpClrControl); - - END_INTERFACE - } IVMRMixerControl9Vtbl; - - interface IVMRMixerControl9 - { - CONST_VTBL struct IVMRMixerControl9Vtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IVMRMixerControl9_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IVMRMixerControl9_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IVMRMixerControl9_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IVMRMixerControl9_SetAlpha(This,dwStreamID,Alpha) \ - (This)->lpVtbl -> SetAlpha(This,dwStreamID,Alpha) - -#define IVMRMixerControl9_GetAlpha(This,dwStreamID,pAlpha) \ - (This)->lpVtbl -> GetAlpha(This,dwStreamID,pAlpha) - -#define IVMRMixerControl9_SetZOrder(This,dwStreamID,dwZ) \ - (This)->lpVtbl -> SetZOrder(This,dwStreamID,dwZ) - -#define IVMRMixerControl9_GetZOrder(This,dwStreamID,pZ) \ - (This)->lpVtbl -> GetZOrder(This,dwStreamID,pZ) - -#define IVMRMixerControl9_SetOutputRect(This,dwStreamID,pRect) \ - (This)->lpVtbl -> SetOutputRect(This,dwStreamID,pRect) - -#define IVMRMixerControl9_GetOutputRect(This,dwStreamID,pRect) \ - (This)->lpVtbl -> GetOutputRect(This,dwStreamID,pRect) - -#define IVMRMixerControl9_SetBackgroundClr(This,ClrBkg) \ - (This)->lpVtbl -> SetBackgroundClr(This,ClrBkg) - -#define IVMRMixerControl9_GetBackgroundClr(This,lpClrBkg) \ - (This)->lpVtbl -> GetBackgroundClr(This,lpClrBkg) - -#define IVMRMixerControl9_SetMixingPrefs(This,dwMixerPrefs) \ - (This)->lpVtbl -> SetMixingPrefs(This,dwMixerPrefs) - -#define IVMRMixerControl9_GetMixingPrefs(This,pdwMixerPrefs) \ - (This)->lpVtbl -> GetMixingPrefs(This,pdwMixerPrefs) - -#define IVMRMixerControl9_SetProcAmpControl(This,dwStreamID,lpClrControl) \ - (This)->lpVtbl -> SetProcAmpControl(This,dwStreamID,lpClrControl) - -#define IVMRMixerControl9_GetProcAmpControl(This,dwStreamID,lpClrControl) \ - (This)->lpVtbl -> GetProcAmpControl(This,dwStreamID,lpClrControl) - -#define IVMRMixerControl9_GetProcAmpControlRange(This,dwStreamID,lpClrControl) \ - (This)->lpVtbl -> GetProcAmpControlRange(This,dwStreamID,lpClrControl) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IVMRMixerControl9_SetAlpha_Proxy( - IVMRMixerControl9 * This, - /* [in] */ DWORD dwStreamID, - /* [in] */ float Alpha); - - -void __RPC_STUB IVMRMixerControl9_SetAlpha_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IVMRMixerControl9_GetAlpha_Proxy( - IVMRMixerControl9 * This, - /* [in] */ DWORD dwStreamID, - /* [out] */ float *pAlpha); - - -void __RPC_STUB IVMRMixerControl9_GetAlpha_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IVMRMixerControl9_SetZOrder_Proxy( - IVMRMixerControl9 * This, - /* [in] */ DWORD dwStreamID, - /* [in] */ DWORD dwZ); - - -void __RPC_STUB IVMRMixerControl9_SetZOrder_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IVMRMixerControl9_GetZOrder_Proxy( - IVMRMixerControl9 * This, - /* [in] */ DWORD dwStreamID, - /* [out] */ DWORD *pZ); - - -void __RPC_STUB IVMRMixerControl9_GetZOrder_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IVMRMixerControl9_SetOutputRect_Proxy( - IVMRMixerControl9 * This, - /* [in] */ DWORD dwStreamID, - /* [in] */ const VMR9NormalizedRect *pRect); - - -void __RPC_STUB IVMRMixerControl9_SetOutputRect_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IVMRMixerControl9_GetOutputRect_Proxy( - IVMRMixerControl9 * This, - /* [in] */ DWORD dwStreamID, - /* [out] */ VMR9NormalizedRect *pRect); - - -void __RPC_STUB IVMRMixerControl9_GetOutputRect_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IVMRMixerControl9_SetBackgroundClr_Proxy( - IVMRMixerControl9 * This, - /* [in] */ COLORREF ClrBkg); - - -void __RPC_STUB IVMRMixerControl9_SetBackgroundClr_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IVMRMixerControl9_GetBackgroundClr_Proxy( - IVMRMixerControl9 * This, - /* [in] */ COLORREF *lpClrBkg); - - -void __RPC_STUB IVMRMixerControl9_GetBackgroundClr_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IVMRMixerControl9_SetMixingPrefs_Proxy( - IVMRMixerControl9 * This, - /* [in] */ DWORD dwMixerPrefs); - - -void __RPC_STUB IVMRMixerControl9_SetMixingPrefs_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IVMRMixerControl9_GetMixingPrefs_Proxy( - IVMRMixerControl9 * This, - /* [out] */ DWORD *pdwMixerPrefs); - - -void __RPC_STUB IVMRMixerControl9_GetMixingPrefs_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IVMRMixerControl9_SetProcAmpControl_Proxy( - IVMRMixerControl9 * This, - /* [in] */ DWORD dwStreamID, - /* [in] */ VMR9ProcAmpControl *lpClrControl); - - -void __RPC_STUB IVMRMixerControl9_SetProcAmpControl_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IVMRMixerControl9_GetProcAmpControl_Proxy( - IVMRMixerControl9 * This, - /* [in] */ DWORD dwStreamID, - /* [out][in] */ VMR9ProcAmpControl *lpClrControl); - - -void __RPC_STUB IVMRMixerControl9_GetProcAmpControl_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IVMRMixerControl9_GetProcAmpControlRange_Proxy( - IVMRMixerControl9 * This, - /* [in] */ DWORD dwStreamID, - /* [out][in] */ VMR9ProcAmpControlRange *lpClrControl); - - -void __RPC_STUB IVMRMixerControl9_GetProcAmpControlRange_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IVMRMixerControl9_INTERFACE_DEFINED__ */ - - -/* interface __MIDL_itf_vmr9_0013 */ -/* [local] */ - -typedef struct _VMR9AlphaBitmap - { - DWORD dwFlags; - HDC hdc; - IDirect3DSurface9 *pDDS; - RECT rSrc; - VMR9NormalizedRect rDest; - FLOAT fAlpha; - COLORREF clrSrcKey; - DWORD dwFilterMode; - } VMR9AlphaBitmap; - -typedef /* [public] */ -enum __MIDL___MIDL_itf_vmr9_0013_0001 - { VMR9AlphaBitmap_Disable = 0x1, - VMR9AlphaBitmap_hDC = 0x2, - VMR9AlphaBitmap_EntireDDS = 0x4, - VMR9AlphaBitmap_SrcColorKey = 0x8, - VMR9AlphaBitmap_SrcRect = 0x10, - VMR9AlphaBitmap_FilterMode = 0x20 - } VMR9AlphaBitmapFlags; - - - -extern RPC_IF_HANDLE __MIDL_itf_vmr9_0013_v0_0_c_ifspec; -extern RPC_IF_HANDLE __MIDL_itf_vmr9_0013_v0_0_s_ifspec; - -#ifndef __IVMRMixerBitmap9_INTERFACE_DEFINED__ -#define __IVMRMixerBitmap9_INTERFACE_DEFINED__ - -/* interface IVMRMixerBitmap9 */ -/* [unique][helpstring][uuid][local][object] */ - - -EXTERN_C const IID IID_IVMRMixerBitmap9; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("ced175e5-1935-4820-81bd-ff6ad00c9108") - IVMRMixerBitmap9 : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE SetAlphaBitmap( - /* [in] */ const VMR9AlphaBitmap *pBmpParms) = 0; - - virtual HRESULT STDMETHODCALLTYPE UpdateAlphaBitmapParameters( - /* [in] */ const VMR9AlphaBitmap *pBmpParms) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetAlphaBitmapParameters( - /* [out] */ VMR9AlphaBitmap *pBmpParms) = 0; - - }; - -#else /* C style interface */ - - typedef struct IVMRMixerBitmap9Vtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IVMRMixerBitmap9 * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IVMRMixerBitmap9 * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IVMRMixerBitmap9 * This); - - HRESULT ( STDMETHODCALLTYPE *SetAlphaBitmap )( - IVMRMixerBitmap9 * This, - /* [in] */ const VMR9AlphaBitmap *pBmpParms); - - HRESULT ( STDMETHODCALLTYPE *UpdateAlphaBitmapParameters )( - IVMRMixerBitmap9 * This, - /* [in] */ const VMR9AlphaBitmap *pBmpParms); - - HRESULT ( STDMETHODCALLTYPE *GetAlphaBitmapParameters )( - IVMRMixerBitmap9 * This, - /* [out] */ VMR9AlphaBitmap *pBmpParms); - - END_INTERFACE - } IVMRMixerBitmap9Vtbl; - - interface IVMRMixerBitmap9 - { - CONST_VTBL struct IVMRMixerBitmap9Vtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IVMRMixerBitmap9_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IVMRMixerBitmap9_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IVMRMixerBitmap9_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IVMRMixerBitmap9_SetAlphaBitmap(This,pBmpParms) \ - (This)->lpVtbl -> SetAlphaBitmap(This,pBmpParms) - -#define IVMRMixerBitmap9_UpdateAlphaBitmapParameters(This,pBmpParms) \ - (This)->lpVtbl -> UpdateAlphaBitmapParameters(This,pBmpParms) - -#define IVMRMixerBitmap9_GetAlphaBitmapParameters(This,pBmpParms) \ - (This)->lpVtbl -> GetAlphaBitmapParameters(This,pBmpParms) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IVMRMixerBitmap9_SetAlphaBitmap_Proxy( - IVMRMixerBitmap9 * This, - /* [in] */ const VMR9AlphaBitmap *pBmpParms); - - -void __RPC_STUB IVMRMixerBitmap9_SetAlphaBitmap_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IVMRMixerBitmap9_UpdateAlphaBitmapParameters_Proxy( - IVMRMixerBitmap9 * This, - /* [in] */ const VMR9AlphaBitmap *pBmpParms); - - -void __RPC_STUB IVMRMixerBitmap9_UpdateAlphaBitmapParameters_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IVMRMixerBitmap9_GetAlphaBitmapParameters_Proxy( - IVMRMixerBitmap9 * This, - /* [out] */ VMR9AlphaBitmap *pBmpParms); - - -void __RPC_STUB IVMRMixerBitmap9_GetAlphaBitmapParameters_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IVMRMixerBitmap9_INTERFACE_DEFINED__ */ - - -#ifndef __IVMRSurface9_INTERFACE_DEFINED__ -#define __IVMRSurface9_INTERFACE_DEFINED__ - -/* interface IVMRSurface9 */ -/* [unique][helpstring][uuid][local][object][local] */ - - -EXTERN_C const IID IID_IVMRSurface9; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("dfc581a1-6e1f-4c3a-8d0a-5e9792ea2afc") - IVMRSurface9 : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE IsSurfaceLocked( void) = 0; - - virtual HRESULT STDMETHODCALLTYPE LockSurface( - /* [out] */ BYTE **lpSurface) = 0; - - virtual HRESULT STDMETHODCALLTYPE UnlockSurface( void) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetSurface( - /* [out] */ IDirect3DSurface9 **lplpSurface) = 0; - - }; - -#else /* C style interface */ - - typedef struct IVMRSurface9Vtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IVMRSurface9 * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IVMRSurface9 * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IVMRSurface9 * This); - - HRESULT ( STDMETHODCALLTYPE *IsSurfaceLocked )( - IVMRSurface9 * This); - - HRESULT ( STDMETHODCALLTYPE *LockSurface )( - IVMRSurface9 * This, - /* [out] */ BYTE **lpSurface); - - HRESULT ( STDMETHODCALLTYPE *UnlockSurface )( - IVMRSurface9 * This); - - HRESULT ( STDMETHODCALLTYPE *GetSurface )( - IVMRSurface9 * This, - /* [out] */ IDirect3DSurface9 **lplpSurface); - - END_INTERFACE - } IVMRSurface9Vtbl; - - interface IVMRSurface9 - { - CONST_VTBL struct IVMRSurface9Vtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IVMRSurface9_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IVMRSurface9_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IVMRSurface9_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IVMRSurface9_IsSurfaceLocked(This) \ - (This)->lpVtbl -> IsSurfaceLocked(This) - -#define IVMRSurface9_LockSurface(This,lpSurface) \ - (This)->lpVtbl -> LockSurface(This,lpSurface) - -#define IVMRSurface9_UnlockSurface(This) \ - (This)->lpVtbl -> UnlockSurface(This) - -#define IVMRSurface9_GetSurface(This,lplpSurface) \ - (This)->lpVtbl -> GetSurface(This,lplpSurface) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IVMRSurface9_IsSurfaceLocked_Proxy( - IVMRSurface9 * This); - - -void __RPC_STUB IVMRSurface9_IsSurfaceLocked_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IVMRSurface9_LockSurface_Proxy( - IVMRSurface9 * This, - /* [out] */ BYTE **lpSurface); - - -void __RPC_STUB IVMRSurface9_LockSurface_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IVMRSurface9_UnlockSurface_Proxy( - IVMRSurface9 * This); - - -void __RPC_STUB IVMRSurface9_UnlockSurface_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IVMRSurface9_GetSurface_Proxy( - IVMRSurface9 * This, - /* [out] */ IDirect3DSurface9 **lplpSurface); - - -void __RPC_STUB IVMRSurface9_GetSurface_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IVMRSurface9_INTERFACE_DEFINED__ */ - - -/* interface __MIDL_itf_vmr9_0015 */ -/* [local] */ - -typedef /* [public] */ -enum __MIDL___MIDL_itf_vmr9_0015_0001 - { RenderPrefs9_DoNotRenderBorder = 0x1, - RenderPrefs9_Mask = 0x1 - } VMR9RenderPrefs; - - - -extern RPC_IF_HANDLE __MIDL_itf_vmr9_0015_v0_0_c_ifspec; -extern RPC_IF_HANDLE __MIDL_itf_vmr9_0015_v0_0_s_ifspec; - -#ifndef __IVMRImagePresenterConfig9_INTERFACE_DEFINED__ -#define __IVMRImagePresenterConfig9_INTERFACE_DEFINED__ - -/* interface IVMRImagePresenterConfig9 */ -/* [unique][helpstring][uuid][local][object][local] */ - - -EXTERN_C const IID IID_IVMRImagePresenterConfig9; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("45c15cab-6e22-420a-8043-ae1f0ac02c7d") - IVMRImagePresenterConfig9 : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE SetRenderingPrefs( - /* [in] */ DWORD dwRenderFlags) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetRenderingPrefs( - /* [out] */ DWORD *dwRenderFlags) = 0; - - }; - -#else /* C style interface */ - - typedef struct IVMRImagePresenterConfig9Vtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IVMRImagePresenterConfig9 * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IVMRImagePresenterConfig9 * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IVMRImagePresenterConfig9 * This); - - HRESULT ( STDMETHODCALLTYPE *SetRenderingPrefs )( - IVMRImagePresenterConfig9 * This, - /* [in] */ DWORD dwRenderFlags); - - HRESULT ( STDMETHODCALLTYPE *GetRenderingPrefs )( - IVMRImagePresenterConfig9 * This, - /* [out] */ DWORD *dwRenderFlags); - - END_INTERFACE - } IVMRImagePresenterConfig9Vtbl; - - interface IVMRImagePresenterConfig9 - { - CONST_VTBL struct IVMRImagePresenterConfig9Vtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IVMRImagePresenterConfig9_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IVMRImagePresenterConfig9_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IVMRImagePresenterConfig9_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IVMRImagePresenterConfig9_SetRenderingPrefs(This,dwRenderFlags) \ - (This)->lpVtbl -> SetRenderingPrefs(This,dwRenderFlags) - -#define IVMRImagePresenterConfig9_GetRenderingPrefs(This,dwRenderFlags) \ - (This)->lpVtbl -> GetRenderingPrefs(This,dwRenderFlags) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IVMRImagePresenterConfig9_SetRenderingPrefs_Proxy( - IVMRImagePresenterConfig9 * This, - /* [in] */ DWORD dwRenderFlags); - - -void __RPC_STUB IVMRImagePresenterConfig9_SetRenderingPrefs_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IVMRImagePresenterConfig9_GetRenderingPrefs_Proxy( - IVMRImagePresenterConfig9 * This, - /* [out] */ DWORD *dwRenderFlags); - - -void __RPC_STUB IVMRImagePresenterConfig9_GetRenderingPrefs_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IVMRImagePresenterConfig9_INTERFACE_DEFINED__ */ - - -#ifndef __IVMRVideoStreamControl9_INTERFACE_DEFINED__ -#define __IVMRVideoStreamControl9_INTERFACE_DEFINED__ - -/* interface IVMRVideoStreamControl9 */ -/* [unique][helpstring][uuid][local][object] */ - - -EXTERN_C const IID IID_IVMRVideoStreamControl9; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("d0cfe38b-93e7-4772-8957-0400c49a4485") - IVMRVideoStreamControl9 : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE SetStreamActiveState( - /* [in] */ BOOL fActive) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetStreamActiveState( - /* [out] */ BOOL *lpfActive) = 0; - - }; - -#else /* C style interface */ - - typedef struct IVMRVideoStreamControl9Vtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IVMRVideoStreamControl9 * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IVMRVideoStreamControl9 * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IVMRVideoStreamControl9 * This); - - HRESULT ( STDMETHODCALLTYPE *SetStreamActiveState )( - IVMRVideoStreamControl9 * This, - /* [in] */ BOOL fActive); - - HRESULT ( STDMETHODCALLTYPE *GetStreamActiveState )( - IVMRVideoStreamControl9 * This, - /* [out] */ BOOL *lpfActive); - - END_INTERFACE - } IVMRVideoStreamControl9Vtbl; - - interface IVMRVideoStreamControl9 - { - CONST_VTBL struct IVMRVideoStreamControl9Vtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IVMRVideoStreamControl9_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IVMRVideoStreamControl9_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IVMRVideoStreamControl9_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IVMRVideoStreamControl9_SetStreamActiveState(This,fActive) \ - (This)->lpVtbl -> SetStreamActiveState(This,fActive) - -#define IVMRVideoStreamControl9_GetStreamActiveState(This,lpfActive) \ - (This)->lpVtbl -> GetStreamActiveState(This,lpfActive) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IVMRVideoStreamControl9_SetStreamActiveState_Proxy( - IVMRVideoStreamControl9 * This, - /* [in] */ BOOL fActive); - - -void __RPC_STUB IVMRVideoStreamControl9_SetStreamActiveState_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IVMRVideoStreamControl9_GetStreamActiveState_Proxy( - IVMRVideoStreamControl9 * This, - /* [out] */ BOOL *lpfActive); - - -void __RPC_STUB IVMRVideoStreamControl9_GetStreamActiveState_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IVMRVideoStreamControl9_INTERFACE_DEFINED__ */ - - -/* interface __MIDL_itf_vmr9_0017 */ -/* [local] */ - -typedef /* [public] */ -enum __MIDL___MIDL_itf_vmr9_0017_0001 - { VMR9Mode_Windowed = 0x1, - VMR9Mode_Windowless = 0x2, - VMR9Mode_Renderless = 0x4, - VMR9Mode_Mask = 0x7 - } VMR9Mode; - - - -extern RPC_IF_HANDLE __MIDL_itf_vmr9_0017_v0_0_c_ifspec; -extern RPC_IF_HANDLE __MIDL_itf_vmr9_0017_v0_0_s_ifspec; - -#ifndef __IVMRFilterConfig9_INTERFACE_DEFINED__ -#define __IVMRFilterConfig9_INTERFACE_DEFINED__ - -/* interface IVMRFilterConfig9 */ -/* [unique][helpstring][uuid][local][object] */ - - -EXTERN_C const IID IID_IVMRFilterConfig9; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("5a804648-4f66-4867-9c43-4f5c822cf1b8") - IVMRFilterConfig9 : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE SetImageCompositor( - /* [in] */ IVMRImageCompositor9 *lpVMRImgCompositor) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetNumberOfStreams( - /* [in] */ DWORD dwMaxStreams) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetNumberOfStreams( - /* [out] */ DWORD *pdwMaxStreams) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetRenderingPrefs( - /* [in] */ DWORD dwRenderFlags) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetRenderingPrefs( - /* [out] */ DWORD *pdwRenderFlags) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetRenderingMode( - /* [in] */ DWORD Mode) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetRenderingMode( - /* [out] */ DWORD *pMode) = 0; - - }; - -#else /* C style interface */ - - typedef struct IVMRFilterConfig9Vtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IVMRFilterConfig9 * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IVMRFilterConfig9 * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IVMRFilterConfig9 * This); - - HRESULT ( STDMETHODCALLTYPE *SetImageCompositor )( - IVMRFilterConfig9 * This, - /* [in] */ IVMRImageCompositor9 *lpVMRImgCompositor); - - HRESULT ( STDMETHODCALLTYPE *SetNumberOfStreams )( - IVMRFilterConfig9 * This, - /* [in] */ DWORD dwMaxStreams); - - HRESULT ( STDMETHODCALLTYPE *GetNumberOfStreams )( - IVMRFilterConfig9 * This, - /* [out] */ DWORD *pdwMaxStreams); - - HRESULT ( STDMETHODCALLTYPE *SetRenderingPrefs )( - IVMRFilterConfig9 * This, - /* [in] */ DWORD dwRenderFlags); - - HRESULT ( STDMETHODCALLTYPE *GetRenderingPrefs )( - IVMRFilterConfig9 * This, - /* [out] */ DWORD *pdwRenderFlags); - - HRESULT ( STDMETHODCALLTYPE *SetRenderingMode )( - IVMRFilterConfig9 * This, - /* [in] */ DWORD Mode); - - HRESULT ( STDMETHODCALLTYPE *GetRenderingMode )( - IVMRFilterConfig9 * This, - /* [out] */ DWORD *pMode); - - END_INTERFACE - } IVMRFilterConfig9Vtbl; - - interface IVMRFilterConfig9 - { - CONST_VTBL struct IVMRFilterConfig9Vtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IVMRFilterConfig9_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IVMRFilterConfig9_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IVMRFilterConfig9_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IVMRFilterConfig9_SetImageCompositor(This,lpVMRImgCompositor) \ - (This)->lpVtbl -> SetImageCompositor(This,lpVMRImgCompositor) - -#define IVMRFilterConfig9_SetNumberOfStreams(This,dwMaxStreams) \ - (This)->lpVtbl -> SetNumberOfStreams(This,dwMaxStreams) - -#define IVMRFilterConfig9_GetNumberOfStreams(This,pdwMaxStreams) \ - (This)->lpVtbl -> GetNumberOfStreams(This,pdwMaxStreams) - -#define IVMRFilterConfig9_SetRenderingPrefs(This,dwRenderFlags) \ - (This)->lpVtbl -> SetRenderingPrefs(This,dwRenderFlags) - -#define IVMRFilterConfig9_GetRenderingPrefs(This,pdwRenderFlags) \ - (This)->lpVtbl -> GetRenderingPrefs(This,pdwRenderFlags) - -#define IVMRFilterConfig9_SetRenderingMode(This,Mode) \ - (This)->lpVtbl -> SetRenderingMode(This,Mode) - -#define IVMRFilterConfig9_GetRenderingMode(This,pMode) \ - (This)->lpVtbl -> GetRenderingMode(This,pMode) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IVMRFilterConfig9_SetImageCompositor_Proxy( - IVMRFilterConfig9 * This, - /* [in] */ IVMRImageCompositor9 *lpVMRImgCompositor); - - -void __RPC_STUB IVMRFilterConfig9_SetImageCompositor_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IVMRFilterConfig9_SetNumberOfStreams_Proxy( - IVMRFilterConfig9 * This, - /* [in] */ DWORD dwMaxStreams); - - -void __RPC_STUB IVMRFilterConfig9_SetNumberOfStreams_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IVMRFilterConfig9_GetNumberOfStreams_Proxy( - IVMRFilterConfig9 * This, - /* [out] */ DWORD *pdwMaxStreams); - - -void __RPC_STUB IVMRFilterConfig9_GetNumberOfStreams_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IVMRFilterConfig9_SetRenderingPrefs_Proxy( - IVMRFilterConfig9 * This, - /* [in] */ DWORD dwRenderFlags); - - -void __RPC_STUB IVMRFilterConfig9_SetRenderingPrefs_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IVMRFilterConfig9_GetRenderingPrefs_Proxy( - IVMRFilterConfig9 * This, - /* [out] */ DWORD *pdwRenderFlags); - - -void __RPC_STUB IVMRFilterConfig9_GetRenderingPrefs_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IVMRFilterConfig9_SetRenderingMode_Proxy( - IVMRFilterConfig9 * This, - /* [in] */ DWORD Mode); - - -void __RPC_STUB IVMRFilterConfig9_SetRenderingMode_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IVMRFilterConfig9_GetRenderingMode_Proxy( - IVMRFilterConfig9 * This, - /* [out] */ DWORD *pMode); - - -void __RPC_STUB IVMRFilterConfig9_GetRenderingMode_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IVMRFilterConfig9_INTERFACE_DEFINED__ */ - - -#ifndef __IVMRAspectRatioControl9_INTERFACE_DEFINED__ -#define __IVMRAspectRatioControl9_INTERFACE_DEFINED__ - -/* interface IVMRAspectRatioControl9 */ -/* [unique][helpstring][uuid][local][object] */ - - -EXTERN_C const IID IID_IVMRAspectRatioControl9; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("00d96c29-bbde-4efc-9901-bb5036392146") - IVMRAspectRatioControl9 : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE GetAspectRatioMode( - /* [out] */ LPDWORD lpdwARMode) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetAspectRatioMode( - /* [in] */ DWORD dwARMode) = 0; - - }; - -#else /* C style interface */ - - typedef struct IVMRAspectRatioControl9Vtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IVMRAspectRatioControl9 * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IVMRAspectRatioControl9 * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IVMRAspectRatioControl9 * This); - - HRESULT ( STDMETHODCALLTYPE *GetAspectRatioMode )( - IVMRAspectRatioControl9 * This, - /* [out] */ LPDWORD lpdwARMode); - - HRESULT ( STDMETHODCALLTYPE *SetAspectRatioMode )( - IVMRAspectRatioControl9 * This, - /* [in] */ DWORD dwARMode); - - END_INTERFACE - } IVMRAspectRatioControl9Vtbl; - - interface IVMRAspectRatioControl9 - { - CONST_VTBL struct IVMRAspectRatioControl9Vtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IVMRAspectRatioControl9_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IVMRAspectRatioControl9_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IVMRAspectRatioControl9_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IVMRAspectRatioControl9_GetAspectRatioMode(This,lpdwARMode) \ - (This)->lpVtbl -> GetAspectRatioMode(This,lpdwARMode) - -#define IVMRAspectRatioControl9_SetAspectRatioMode(This,dwARMode) \ - (This)->lpVtbl -> SetAspectRatioMode(This,dwARMode) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IVMRAspectRatioControl9_GetAspectRatioMode_Proxy( - IVMRAspectRatioControl9 * This, - /* [out] */ LPDWORD lpdwARMode); - - -void __RPC_STUB IVMRAspectRatioControl9_GetAspectRatioMode_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IVMRAspectRatioControl9_SetAspectRatioMode_Proxy( - IVMRAspectRatioControl9 * This, - /* [in] */ DWORD dwARMode); - - -void __RPC_STUB IVMRAspectRatioControl9_SetAspectRatioMode_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IVMRAspectRatioControl9_INTERFACE_DEFINED__ */ - - -/* interface __MIDL_itf_vmr9_0019 */ -/* [local] */ - -typedef struct _VMR9MonitorInfo - { - UINT uDevID; - RECT rcMonitor; - HMONITOR hMon; - DWORD dwFlags; - wchar_t szDevice[ 32 ]; - wchar_t szDescription[ 512 ]; - LARGE_INTEGER liDriverVersion; - DWORD dwVendorId; - DWORD dwDeviceId; - DWORD dwSubSysId; - DWORD dwRevision; - } VMR9MonitorInfo; - - - -extern RPC_IF_HANDLE __MIDL_itf_vmr9_0019_v0_0_c_ifspec; -extern RPC_IF_HANDLE __MIDL_itf_vmr9_0019_v0_0_s_ifspec; - -#ifndef __IVMRMonitorConfig9_INTERFACE_DEFINED__ -#define __IVMRMonitorConfig9_INTERFACE_DEFINED__ - -/* interface IVMRMonitorConfig9 */ -/* [unique][helpstring][uuid][local][object] */ - - -EXTERN_C const IID IID_IVMRMonitorConfig9; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("46c2e457-8ba0-4eef-b80b-0680f0978749") - IVMRMonitorConfig9 : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE SetMonitor( - /* [in] */ UINT uDev) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetMonitor( - /* [out] */ UINT *puDev) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetDefaultMonitor( - /* [in] */ UINT uDev) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetDefaultMonitor( - /* [out] */ UINT *puDev) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetAvailableMonitors( - /* [size_is][out] */ VMR9MonitorInfo *pInfo, - /* [in] */ DWORD dwMaxInfoArraySize, - /* [out] */ DWORD *pdwNumDevices) = 0; - - }; - -#else /* C style interface */ - - typedef struct IVMRMonitorConfig9Vtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IVMRMonitorConfig9 * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IVMRMonitorConfig9 * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IVMRMonitorConfig9 * This); - - HRESULT ( STDMETHODCALLTYPE *SetMonitor )( - IVMRMonitorConfig9 * This, - /* [in] */ UINT uDev); - - HRESULT ( STDMETHODCALLTYPE *GetMonitor )( - IVMRMonitorConfig9 * This, - /* [out] */ UINT *puDev); - - HRESULT ( STDMETHODCALLTYPE *SetDefaultMonitor )( - IVMRMonitorConfig9 * This, - /* [in] */ UINT uDev); - - HRESULT ( STDMETHODCALLTYPE *GetDefaultMonitor )( - IVMRMonitorConfig9 * This, - /* [out] */ UINT *puDev); - - HRESULT ( STDMETHODCALLTYPE *GetAvailableMonitors )( - IVMRMonitorConfig9 * This, - /* [size_is][out] */ VMR9MonitorInfo *pInfo, - /* [in] */ DWORD dwMaxInfoArraySize, - /* [out] */ DWORD *pdwNumDevices); - - END_INTERFACE - } IVMRMonitorConfig9Vtbl; - - interface IVMRMonitorConfig9 - { - CONST_VTBL struct IVMRMonitorConfig9Vtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IVMRMonitorConfig9_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IVMRMonitorConfig9_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IVMRMonitorConfig9_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IVMRMonitorConfig9_SetMonitor(This,uDev) \ - (This)->lpVtbl -> SetMonitor(This,uDev) - -#define IVMRMonitorConfig9_GetMonitor(This,puDev) \ - (This)->lpVtbl -> GetMonitor(This,puDev) - -#define IVMRMonitorConfig9_SetDefaultMonitor(This,uDev) \ - (This)->lpVtbl -> SetDefaultMonitor(This,uDev) - -#define IVMRMonitorConfig9_GetDefaultMonitor(This,puDev) \ - (This)->lpVtbl -> GetDefaultMonitor(This,puDev) - -#define IVMRMonitorConfig9_GetAvailableMonitors(This,pInfo,dwMaxInfoArraySize,pdwNumDevices) \ - (This)->lpVtbl -> GetAvailableMonitors(This,pInfo,dwMaxInfoArraySize,pdwNumDevices) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IVMRMonitorConfig9_SetMonitor_Proxy( - IVMRMonitorConfig9 * This, - /* [in] */ UINT uDev); - - -void __RPC_STUB IVMRMonitorConfig9_SetMonitor_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IVMRMonitorConfig9_GetMonitor_Proxy( - IVMRMonitorConfig9 * This, - /* [out] */ UINT *puDev); - - -void __RPC_STUB IVMRMonitorConfig9_GetMonitor_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IVMRMonitorConfig9_SetDefaultMonitor_Proxy( - IVMRMonitorConfig9 * This, - /* [in] */ UINT uDev); - - -void __RPC_STUB IVMRMonitorConfig9_SetDefaultMonitor_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IVMRMonitorConfig9_GetDefaultMonitor_Proxy( - IVMRMonitorConfig9 * This, - /* [out] */ UINT *puDev); - - -void __RPC_STUB IVMRMonitorConfig9_GetDefaultMonitor_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IVMRMonitorConfig9_GetAvailableMonitors_Proxy( - IVMRMonitorConfig9 * This, - /* [size_is][out] */ VMR9MonitorInfo *pInfo, - /* [in] */ DWORD dwMaxInfoArraySize, - /* [out] */ DWORD *pdwNumDevices); - - -void __RPC_STUB IVMRMonitorConfig9_GetAvailableMonitors_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IVMRMonitorConfig9_INTERFACE_DEFINED__ */ - - -/* interface __MIDL_itf_vmr9_0020 */ -/* [local] */ - -typedef /* [public] */ -enum __MIDL___MIDL_itf_vmr9_0020_0001 - { DeinterlacePref9_NextBest = 0x1, - DeinterlacePref9_BOB = 0x2, - DeinterlacePref9_Weave = 0x4, - DeinterlacePref9_Mask = 0x7 - } VMR9DeinterlacePrefs; - -typedef /* [public][public][public] */ -enum __MIDL___MIDL_itf_vmr9_0020_0002 - { DeinterlaceTech9_Unknown = 0, - DeinterlaceTech9_BOBLineReplicate = 0x1, - DeinterlaceTech9_BOBVerticalStretch = 0x2, - DeinterlaceTech9_MedianFiltering = 0x4, - DeinterlaceTech9_EdgeFiltering = 0x10, - DeinterlaceTech9_FieldAdaptive = 0x20, - DeinterlaceTech9_PixelAdaptive = 0x40, - DeinterlaceTech9_MotionVectorSteered = 0x80 - } VMR9DeinterlaceTech; - -typedef struct _VMR9Frequency - { - DWORD dwNumerator; - DWORD dwDenominator; - } VMR9Frequency; - -typedef -enum _VMR9_SampleFormat - { VMR9_SampleReserved = 1, - VMR9_SampleProgressiveFrame = 2, - VMR9_SampleFieldInterleavedEvenFirst = 3, - VMR9_SampleFieldInterleavedOddFirst = 4, - VMR9_SampleFieldSingleEven = 5, - VMR9_SampleFieldSingleOdd = 6 - } VMR9_SampleFormat; - -typedef struct _VMR9VideoDesc - { - DWORD dwSize; - DWORD dwSampleWidth; - DWORD dwSampleHeight; - VMR9_SampleFormat SampleFormat; - DWORD dwFourCC; - VMR9Frequency InputSampleFreq; - VMR9Frequency OutputFrameFreq; - } VMR9VideoDesc; - -typedef struct _VMR9DeinterlaceCaps - { - DWORD dwSize; - DWORD dwNumPreviousOutputFrames; - DWORD dwNumForwardRefSamples; - DWORD dwNumBackwardRefSamples; - VMR9DeinterlaceTech DeinterlaceTechnology; - } VMR9DeinterlaceCaps; - - - -extern RPC_IF_HANDLE __MIDL_itf_vmr9_0020_v0_0_c_ifspec; -extern RPC_IF_HANDLE __MIDL_itf_vmr9_0020_v0_0_s_ifspec; - -#ifndef __IVMRDeinterlaceControl9_INTERFACE_DEFINED__ -#define __IVMRDeinterlaceControl9_INTERFACE_DEFINED__ - -/* interface IVMRDeinterlaceControl9 */ -/* [unique][helpstring][uuid][local][object] */ - - -EXTERN_C const IID IID_IVMRDeinterlaceControl9; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("a215fb8d-13c2-4f7f-993c-003d6271a459") - IVMRDeinterlaceControl9 : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE GetNumberOfDeinterlaceModes( - /* [in] */ VMR9VideoDesc *lpVideoDescription, - /* [out][in] */ LPDWORD lpdwNumDeinterlaceModes, - /* [out] */ LPGUID lpDeinterlaceModes) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetDeinterlaceModeCaps( - /* [in] */ LPGUID lpDeinterlaceMode, - /* [in] */ VMR9VideoDesc *lpVideoDescription, - /* [out] */ VMR9DeinterlaceCaps *lpDeinterlaceCaps) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetDeinterlaceMode( - /* [in] */ DWORD dwStreamID, - /* [out] */ LPGUID lpDeinterlaceMode) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetDeinterlaceMode( - /* [in] */ DWORD dwStreamID, - /* [in] */ LPGUID lpDeinterlaceMode) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetDeinterlacePrefs( - /* [out] */ LPDWORD lpdwDeinterlacePrefs) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetDeinterlacePrefs( - /* [in] */ DWORD dwDeinterlacePrefs) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetActualDeinterlaceMode( - /* [in] */ DWORD dwStreamID, - /* [out] */ LPGUID lpDeinterlaceMode) = 0; - - }; - -#else /* C style interface */ - - typedef struct IVMRDeinterlaceControl9Vtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IVMRDeinterlaceControl9 * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IVMRDeinterlaceControl9 * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IVMRDeinterlaceControl9 * This); - - HRESULT ( STDMETHODCALLTYPE *GetNumberOfDeinterlaceModes )( - IVMRDeinterlaceControl9 * This, - /* [in] */ VMR9VideoDesc *lpVideoDescription, - /* [out][in] */ LPDWORD lpdwNumDeinterlaceModes, - /* [out] */ LPGUID lpDeinterlaceModes); - - HRESULT ( STDMETHODCALLTYPE *GetDeinterlaceModeCaps )( - IVMRDeinterlaceControl9 * This, - /* [in] */ LPGUID lpDeinterlaceMode, - /* [in] */ VMR9VideoDesc *lpVideoDescription, - /* [out] */ VMR9DeinterlaceCaps *lpDeinterlaceCaps); - - HRESULT ( STDMETHODCALLTYPE *GetDeinterlaceMode )( - IVMRDeinterlaceControl9 * This, - /* [in] */ DWORD dwStreamID, - /* [out] */ LPGUID lpDeinterlaceMode); - - HRESULT ( STDMETHODCALLTYPE *SetDeinterlaceMode )( - IVMRDeinterlaceControl9 * This, - /* [in] */ DWORD dwStreamID, - /* [in] */ LPGUID lpDeinterlaceMode); - - HRESULT ( STDMETHODCALLTYPE *GetDeinterlacePrefs )( - IVMRDeinterlaceControl9 * This, - /* [out] */ LPDWORD lpdwDeinterlacePrefs); - - HRESULT ( STDMETHODCALLTYPE *SetDeinterlacePrefs )( - IVMRDeinterlaceControl9 * This, - /* [in] */ DWORD dwDeinterlacePrefs); - - HRESULT ( STDMETHODCALLTYPE *GetActualDeinterlaceMode )( - IVMRDeinterlaceControl9 * This, - /* [in] */ DWORD dwStreamID, - /* [out] */ LPGUID lpDeinterlaceMode); - - END_INTERFACE - } IVMRDeinterlaceControl9Vtbl; - - interface IVMRDeinterlaceControl9 - { - CONST_VTBL struct IVMRDeinterlaceControl9Vtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IVMRDeinterlaceControl9_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IVMRDeinterlaceControl9_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IVMRDeinterlaceControl9_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IVMRDeinterlaceControl9_GetNumberOfDeinterlaceModes(This,lpVideoDescription,lpdwNumDeinterlaceModes,lpDeinterlaceModes) \ - (This)->lpVtbl -> GetNumberOfDeinterlaceModes(This,lpVideoDescription,lpdwNumDeinterlaceModes,lpDeinterlaceModes) - -#define IVMRDeinterlaceControl9_GetDeinterlaceModeCaps(This,lpDeinterlaceMode,lpVideoDescription,lpDeinterlaceCaps) \ - (This)->lpVtbl -> GetDeinterlaceModeCaps(This,lpDeinterlaceMode,lpVideoDescription,lpDeinterlaceCaps) - -#define IVMRDeinterlaceControl9_GetDeinterlaceMode(This,dwStreamID,lpDeinterlaceMode) \ - (This)->lpVtbl -> GetDeinterlaceMode(This,dwStreamID,lpDeinterlaceMode) - -#define IVMRDeinterlaceControl9_SetDeinterlaceMode(This,dwStreamID,lpDeinterlaceMode) \ - (This)->lpVtbl -> SetDeinterlaceMode(This,dwStreamID,lpDeinterlaceMode) - -#define IVMRDeinterlaceControl9_GetDeinterlacePrefs(This,lpdwDeinterlacePrefs) \ - (This)->lpVtbl -> GetDeinterlacePrefs(This,lpdwDeinterlacePrefs) - -#define IVMRDeinterlaceControl9_SetDeinterlacePrefs(This,dwDeinterlacePrefs) \ - (This)->lpVtbl -> SetDeinterlacePrefs(This,dwDeinterlacePrefs) - -#define IVMRDeinterlaceControl9_GetActualDeinterlaceMode(This,dwStreamID,lpDeinterlaceMode) \ - (This)->lpVtbl -> GetActualDeinterlaceMode(This,dwStreamID,lpDeinterlaceMode) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IVMRDeinterlaceControl9_GetNumberOfDeinterlaceModes_Proxy( - IVMRDeinterlaceControl9 * This, - /* [in] */ VMR9VideoDesc *lpVideoDescription, - /* [out][in] */ LPDWORD lpdwNumDeinterlaceModes, - /* [out] */ LPGUID lpDeinterlaceModes); - - -void __RPC_STUB IVMRDeinterlaceControl9_GetNumberOfDeinterlaceModes_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IVMRDeinterlaceControl9_GetDeinterlaceModeCaps_Proxy( - IVMRDeinterlaceControl9 * This, - /* [in] */ LPGUID lpDeinterlaceMode, - /* [in] */ VMR9VideoDesc *lpVideoDescription, - /* [out] */ VMR9DeinterlaceCaps *lpDeinterlaceCaps); - - -void __RPC_STUB IVMRDeinterlaceControl9_GetDeinterlaceModeCaps_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IVMRDeinterlaceControl9_GetDeinterlaceMode_Proxy( - IVMRDeinterlaceControl9 * This, - /* [in] */ DWORD dwStreamID, - /* [out] */ LPGUID lpDeinterlaceMode); - - -void __RPC_STUB IVMRDeinterlaceControl9_GetDeinterlaceMode_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IVMRDeinterlaceControl9_SetDeinterlaceMode_Proxy( - IVMRDeinterlaceControl9 * This, - /* [in] */ DWORD dwStreamID, - /* [in] */ LPGUID lpDeinterlaceMode); - - -void __RPC_STUB IVMRDeinterlaceControl9_SetDeinterlaceMode_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IVMRDeinterlaceControl9_GetDeinterlacePrefs_Proxy( - IVMRDeinterlaceControl9 * This, - /* [out] */ LPDWORD lpdwDeinterlacePrefs); - - -void __RPC_STUB IVMRDeinterlaceControl9_GetDeinterlacePrefs_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IVMRDeinterlaceControl9_SetDeinterlacePrefs_Proxy( - IVMRDeinterlaceControl9 * This, - /* [in] */ DWORD dwDeinterlacePrefs); - - -void __RPC_STUB IVMRDeinterlaceControl9_SetDeinterlacePrefs_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IVMRDeinterlaceControl9_GetActualDeinterlaceMode_Proxy( - IVMRDeinterlaceControl9 * This, - /* [in] */ DWORD dwStreamID, - /* [out] */ LPGUID lpDeinterlaceMode); - - -void __RPC_STUB IVMRDeinterlaceControl9_GetActualDeinterlaceMode_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IVMRDeinterlaceControl9_INTERFACE_DEFINED__ */ - - -/* interface __MIDL_itf_vmr9_0021 */ -/* [local] */ - -typedef struct _VMR9VideoStreamInfo - { - IDirect3DSurface9 *pddsVideoSurface; - DWORD dwWidth; - DWORD dwHeight; - DWORD dwStrmID; - FLOAT fAlpha; - VMR9NormalizedRect rNormal; - REFERENCE_TIME rtStart; - REFERENCE_TIME rtEnd; - VMR9_SampleFormat SampleFormat; - } VMR9VideoStreamInfo; - - - -extern RPC_IF_HANDLE __MIDL_itf_vmr9_0021_v0_0_c_ifspec; -extern RPC_IF_HANDLE __MIDL_itf_vmr9_0021_v0_0_s_ifspec; - -#ifndef __IVMRImageCompositor9_INTERFACE_DEFINED__ -#define __IVMRImageCompositor9_INTERFACE_DEFINED__ - -/* interface IVMRImageCompositor9 */ -/* [unique][helpstring][uuid][local][object][local] */ - - -EXTERN_C const IID IID_IVMRImageCompositor9; - -#if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("4a5c89eb-df51-4654-ac2a-e48e02bbabf6") - IVMRImageCompositor9 : public IUnknown - { - public: - virtual HRESULT STDMETHODCALLTYPE InitCompositionDevice( - /* [in] */ IUnknown *pD3DDevice) = 0; - - virtual HRESULT STDMETHODCALLTYPE TermCompositionDevice( - /* [in] */ IUnknown *pD3DDevice) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetStreamMediaType( - /* [in] */ DWORD dwStrmID, - /* [in] */ AM_MEDIA_TYPE *pmt, - /* [in] */ BOOL fTexture) = 0; - - virtual HRESULT STDMETHODCALLTYPE CompositeImage( - /* [in] */ IUnknown *pD3DDevice, - /* [in] */ IDirect3DSurface9 *pddsRenderTarget, - /* [in] */ AM_MEDIA_TYPE *pmtRenderTarget, - /* [in] */ REFERENCE_TIME rtStart, - /* [in] */ REFERENCE_TIME rtEnd, - /* [in] */ D3DCOLOR dwClrBkGnd, - /* [in] */ VMR9VideoStreamInfo *pVideoStreamInfo, - /* [in] */ UINT cStreams) = 0; - - }; - -#else /* C style interface */ - - typedef struct IVMRImageCompositor9Vtbl - { - BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( - IVMRImageCompositor9 * This, - /* [in] */ REFIID riid, - /* [iid_is][out] */ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( - IVMRImageCompositor9 * This); - - ULONG ( STDMETHODCALLTYPE *Release )( - IVMRImageCompositor9 * This); - - HRESULT ( STDMETHODCALLTYPE *InitCompositionDevice )( - IVMRImageCompositor9 * This, - /* [in] */ IUnknown *pD3DDevice); - - HRESULT ( STDMETHODCALLTYPE *TermCompositionDevice )( - IVMRImageCompositor9 * This, - /* [in] */ IUnknown *pD3DDevice); - - HRESULT ( STDMETHODCALLTYPE *SetStreamMediaType )( - IVMRImageCompositor9 * This, - /* [in] */ DWORD dwStrmID, - /* [in] */ AM_MEDIA_TYPE *pmt, - /* [in] */ BOOL fTexture); - - HRESULT ( STDMETHODCALLTYPE *CompositeImage )( - IVMRImageCompositor9 * This, - /* [in] */ IUnknown *pD3DDevice, - /* [in] */ IDirect3DSurface9 *pddsRenderTarget, - /* [in] */ AM_MEDIA_TYPE *pmtRenderTarget, - /* [in] */ REFERENCE_TIME rtStart, - /* [in] */ REFERENCE_TIME rtEnd, - /* [in] */ D3DCOLOR dwClrBkGnd, - /* [in] */ VMR9VideoStreamInfo *pVideoStreamInfo, - /* [in] */ UINT cStreams); - - END_INTERFACE - } IVMRImageCompositor9Vtbl; - - interface IVMRImageCompositor9 - { - CONST_VTBL struct IVMRImageCompositor9Vtbl *lpVtbl; - }; - - - -#ifdef COBJMACROS - - -#define IVMRImageCompositor9_QueryInterface(This,riid,ppvObject) \ - (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) - -#define IVMRImageCompositor9_AddRef(This) \ - (This)->lpVtbl -> AddRef(This) - -#define IVMRImageCompositor9_Release(This) \ - (This)->lpVtbl -> Release(This) - - -#define IVMRImageCompositor9_InitCompositionDevice(This,pD3DDevice) \ - (This)->lpVtbl -> InitCompositionDevice(This,pD3DDevice) - -#define IVMRImageCompositor9_TermCompositionDevice(This,pD3DDevice) \ - (This)->lpVtbl -> TermCompositionDevice(This,pD3DDevice) - -#define IVMRImageCompositor9_SetStreamMediaType(This,dwStrmID,pmt,fTexture) \ - (This)->lpVtbl -> SetStreamMediaType(This,dwStrmID,pmt,fTexture) - -#define IVMRImageCompositor9_CompositeImage(This,pD3DDevice,pddsRenderTarget,pmtRenderTarget,rtStart,rtEnd,dwClrBkGnd,pVideoStreamInfo,cStreams) \ - (This)->lpVtbl -> CompositeImage(This,pD3DDevice,pddsRenderTarget,pmtRenderTarget,rtStart,rtEnd,dwClrBkGnd,pVideoStreamInfo,cStreams) - -#endif /* COBJMACROS */ - - -#endif /* C style interface */ - - - -HRESULT STDMETHODCALLTYPE IVMRImageCompositor9_InitCompositionDevice_Proxy( - IVMRImageCompositor9 * This, - /* [in] */ IUnknown *pD3DDevice); - - -void __RPC_STUB IVMRImageCompositor9_InitCompositionDevice_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IVMRImageCompositor9_TermCompositionDevice_Proxy( - IVMRImageCompositor9 * This, - /* [in] */ IUnknown *pD3DDevice); - - -void __RPC_STUB IVMRImageCompositor9_TermCompositionDevice_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IVMRImageCompositor9_SetStreamMediaType_Proxy( - IVMRImageCompositor9 * This, - /* [in] */ DWORD dwStrmID, - /* [in] */ AM_MEDIA_TYPE *pmt, - /* [in] */ BOOL fTexture); - - -void __RPC_STUB IVMRImageCompositor9_SetStreamMediaType_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - -HRESULT STDMETHODCALLTYPE IVMRImageCompositor9_CompositeImage_Proxy( - IVMRImageCompositor9 * This, - /* [in] */ IUnknown *pD3DDevice, - /* [in] */ IDirect3DSurface9 *pddsRenderTarget, - /* [in] */ AM_MEDIA_TYPE *pmtRenderTarget, - /* [in] */ REFERENCE_TIME rtStart, - /* [in] */ REFERENCE_TIME rtEnd, - /* [in] */ D3DCOLOR dwClrBkGnd, - /* [in] */ VMR9VideoStreamInfo *pVideoStreamInfo, - /* [in] */ UINT cStreams); - - -void __RPC_STUB IVMRImageCompositor9_CompositeImage_Stub( - IRpcStubBuffer *This, - IRpcChannelBuffer *_pRpcChannelBuffer, - PRPC_MESSAGE _pRpcMessage, - DWORD *_pdwStubPhase); - - - -#endif /* __IVMRImageCompositor9_INTERFACE_DEFINED__ */ - - -/* Additional Prototypes for ALL interfaces */ - -/* end of Additional Prototypes */ - -#ifdef __cplusplus -} -#endif - -#endif - - + +#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 vmr9.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 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 +#endif // __RPCNDR_H_VERSION__ + +#ifndef COM_NO_WINDOWS_H +#include "windows.h" +#include "ole2.h" +#endif /*COM_NO_WINDOWS_H*/ + +#ifndef __vmr9_h__ +#define __vmr9_h__ + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#pragma once +#endif + +/* Forward Declarations */ + +#ifndef __IVMRImagePresenter9_FWD_DEFINED__ +#define __IVMRImagePresenter9_FWD_DEFINED__ +typedef interface IVMRImagePresenter9 IVMRImagePresenter9; +#endif /* __IVMRImagePresenter9_FWD_DEFINED__ */ + + +#ifndef __IVMRSurfaceAllocator9_FWD_DEFINED__ +#define __IVMRSurfaceAllocator9_FWD_DEFINED__ +typedef interface IVMRSurfaceAllocator9 IVMRSurfaceAllocator9; +#endif /* __IVMRSurfaceAllocator9_FWD_DEFINED__ */ + + +#ifndef __IVMRSurfaceAllocatorNotify9_FWD_DEFINED__ +#define __IVMRSurfaceAllocatorNotify9_FWD_DEFINED__ +typedef interface IVMRSurfaceAllocatorNotify9 IVMRSurfaceAllocatorNotify9; +#endif /* __IVMRSurfaceAllocatorNotify9_FWD_DEFINED__ */ + + +#ifndef __IVMRWindowlessControl9_FWD_DEFINED__ +#define __IVMRWindowlessControl9_FWD_DEFINED__ +typedef interface IVMRWindowlessControl9 IVMRWindowlessControl9; +#endif /* __IVMRWindowlessControl9_FWD_DEFINED__ */ + + +#ifndef __IVMRMixerControl9_FWD_DEFINED__ +#define __IVMRMixerControl9_FWD_DEFINED__ +typedef interface IVMRMixerControl9 IVMRMixerControl9; +#endif /* __IVMRMixerControl9_FWD_DEFINED__ */ + + +#ifndef __IVMRMixerBitmap9_FWD_DEFINED__ +#define __IVMRMixerBitmap9_FWD_DEFINED__ +typedef interface IVMRMixerBitmap9 IVMRMixerBitmap9; +#endif /* __IVMRMixerBitmap9_FWD_DEFINED__ */ + + +#ifndef __IVMRSurface9_FWD_DEFINED__ +#define __IVMRSurface9_FWD_DEFINED__ +typedef interface IVMRSurface9 IVMRSurface9; +#endif /* __IVMRSurface9_FWD_DEFINED__ */ + + +#ifndef __IVMRImagePresenterConfig9_FWD_DEFINED__ +#define __IVMRImagePresenterConfig9_FWD_DEFINED__ +typedef interface IVMRImagePresenterConfig9 IVMRImagePresenterConfig9; +#endif /* __IVMRImagePresenterConfig9_FWD_DEFINED__ */ + + +#ifndef __IVMRVideoStreamControl9_FWD_DEFINED__ +#define __IVMRVideoStreamControl9_FWD_DEFINED__ +typedef interface IVMRVideoStreamControl9 IVMRVideoStreamControl9; +#endif /* __IVMRVideoStreamControl9_FWD_DEFINED__ */ + + +#ifndef __IVMRFilterConfig9_FWD_DEFINED__ +#define __IVMRFilterConfig9_FWD_DEFINED__ +typedef interface IVMRFilterConfig9 IVMRFilterConfig9; +#endif /* __IVMRFilterConfig9_FWD_DEFINED__ */ + + +#ifndef __IVMRAspectRatioControl9_FWD_DEFINED__ +#define __IVMRAspectRatioControl9_FWD_DEFINED__ +typedef interface IVMRAspectRatioControl9 IVMRAspectRatioControl9; +#endif /* __IVMRAspectRatioControl9_FWD_DEFINED__ */ + + +#ifndef __IVMRMonitorConfig9_FWD_DEFINED__ +#define __IVMRMonitorConfig9_FWD_DEFINED__ +typedef interface IVMRMonitorConfig9 IVMRMonitorConfig9; +#endif /* __IVMRMonitorConfig9_FWD_DEFINED__ */ + + +#ifndef __IVMRDeinterlaceControl9_FWD_DEFINED__ +#define __IVMRDeinterlaceControl9_FWD_DEFINED__ +typedef interface IVMRDeinterlaceControl9 IVMRDeinterlaceControl9; +#endif /* __IVMRDeinterlaceControl9_FWD_DEFINED__ */ + + +#ifndef __IVMRImageCompositor9_FWD_DEFINED__ +#define __IVMRImageCompositor9_FWD_DEFINED__ +typedef interface IVMRImageCompositor9 IVMRImageCompositor9; +#endif /* __IVMRImageCompositor9_FWD_DEFINED__ */ + + +/* header files for imported files */ +#include "unknwn.h" + +#ifdef __cplusplus +extern "C"{ +#endif + +void * __RPC_USER MIDL_user_allocate(size_t); +void __RPC_USER MIDL_user_free( void * ); + +/* interface __MIDL_itf_vmr9_0000 */ +/* [local] */ + +#if 0 +typedef DWORD IDirect3DDevice9; + +typedef DWORD IDirect3DSurface9; + +typedef DWORD D3DFORMAT; + +typedef DWORD D3DCOLOR; + +typedef DWORD D3DPOOL; + +typedef LONGLONG REFERENCE_TIME; + +typedef DWORD *HMONITOR; + +typedef /* [public][public][public] */ struct __MIDL___MIDL_itf_vmr9_0000_0001 + { + DWORD dw1; + DWORD dw2; + } AM_MEDIA_TYPE; + +#endif + + + + + + + + + + + + + +typedef /* [public] */ +enum __MIDL___MIDL_itf_vmr9_0000_0002 + { VMR9Sample_SyncPoint = 0x1, + VMR9Sample_Preroll = 0x2, + VMR9Sample_Discontinuity = 0x4, + VMR9Sample_TimeValid = 0x8 + } VMR9PresentationFlags; + +typedef struct _VMR9PresentationInfo + { + DWORD dwFlags; + IDirect3DSurface9 *lpSurf; + REFERENCE_TIME rtStart; + REFERENCE_TIME rtEnd; + SIZE szAspectRatio; + RECT rcSrc; + RECT rcDst; + DWORD dwReserved1; + DWORD dwReserved2; + } VMR9PresentationInfo; + + + +extern RPC_IF_HANDLE __MIDL_itf_vmr9_0000_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_vmr9_0000_v0_0_s_ifspec; + +#ifndef __IVMRImagePresenter9_INTERFACE_DEFINED__ +#define __IVMRImagePresenter9_INTERFACE_DEFINED__ + +/* interface IVMRImagePresenter9 */ +/* [unique][helpstring][uuid][local][object][local] */ + + +EXTERN_C const IID IID_IVMRImagePresenter9; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("69188c61-12a3-40f0-8ffc-342e7b433fd7") + IVMRImagePresenter9 : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE StartPresenting( + /* [in] */ DWORD_PTR dwUserID) = 0; + + virtual HRESULT STDMETHODCALLTYPE StopPresenting( + /* [in] */ DWORD_PTR dwUserID) = 0; + + virtual HRESULT STDMETHODCALLTYPE PresentImage( + /* [in] */ DWORD_PTR dwUserID, + /* [in] */ VMR9PresentationInfo *lpPresInfo) = 0; + + }; + +#else /* C style interface */ + + typedef struct IVMRImagePresenter9Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IVMRImagePresenter9 * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IVMRImagePresenter9 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IVMRImagePresenter9 * This); + + HRESULT ( STDMETHODCALLTYPE *StartPresenting )( + IVMRImagePresenter9 * This, + /* [in] */ DWORD_PTR dwUserID); + + HRESULT ( STDMETHODCALLTYPE *StopPresenting )( + IVMRImagePresenter9 * This, + /* [in] */ DWORD_PTR dwUserID); + + HRESULT ( STDMETHODCALLTYPE *PresentImage )( + IVMRImagePresenter9 * This, + /* [in] */ DWORD_PTR dwUserID, + /* [in] */ VMR9PresentationInfo *lpPresInfo); + + END_INTERFACE + } IVMRImagePresenter9Vtbl; + + interface IVMRImagePresenter9 + { + CONST_VTBL struct IVMRImagePresenter9Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IVMRImagePresenter9_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IVMRImagePresenter9_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IVMRImagePresenter9_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IVMRImagePresenter9_StartPresenting(This,dwUserID) \ + (This)->lpVtbl -> StartPresenting(This,dwUserID) + +#define IVMRImagePresenter9_StopPresenting(This,dwUserID) \ + (This)->lpVtbl -> StopPresenting(This,dwUserID) + +#define IVMRImagePresenter9_PresentImage(This,dwUserID,lpPresInfo) \ + (This)->lpVtbl -> PresentImage(This,dwUserID,lpPresInfo) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IVMRImagePresenter9_StartPresenting_Proxy( + IVMRImagePresenter9 * This, + /* [in] */ DWORD_PTR dwUserID); + + +void __RPC_STUB IVMRImagePresenter9_StartPresenting_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IVMRImagePresenter9_StopPresenting_Proxy( + IVMRImagePresenter9 * This, + /* [in] */ DWORD_PTR dwUserID); + + +void __RPC_STUB IVMRImagePresenter9_StopPresenting_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IVMRImagePresenter9_PresentImage_Proxy( + IVMRImagePresenter9 * This, + /* [in] */ DWORD_PTR dwUserID, + /* [in] */ VMR9PresentationInfo *lpPresInfo); + + +void __RPC_STUB IVMRImagePresenter9_PresentImage_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IVMRImagePresenter9_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_vmr9_0009 */ +/* [local] */ + +typedef /* [public] */ +enum __MIDL___MIDL_itf_vmr9_0009_0001 + { VMR9AllocFlag_3DRenderTarget = 0x1, + VMR9AllocFlag_DXVATarget = 0x2, + VMR9AllocFlag_TextureSurface = 0x4, + VMR9AllocFlag_OffscreenSurface = 0x8, + VMR9AllocFlag_UsageReserved = 0xf0, + VMR9AllocFlag_UsageMask = 0xff + } VMR9SurfaceAllocationFlags; + +typedef struct _VMR9AllocationInfo + { + DWORD dwFlags; + DWORD dwWidth; + DWORD dwHeight; + D3DFORMAT Format; + D3DPOOL Pool; + DWORD MinBuffers; + SIZE szAspectRatio; + SIZE szNativeSize; + } VMR9AllocationInfo; + + + +extern RPC_IF_HANDLE __MIDL_itf_vmr9_0009_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_vmr9_0009_v0_0_s_ifspec; + +#ifndef __IVMRSurfaceAllocator9_INTERFACE_DEFINED__ +#define __IVMRSurfaceAllocator9_INTERFACE_DEFINED__ + +/* interface IVMRSurfaceAllocator9 */ +/* [unique][helpstring][uuid][local][object][local] */ + + +EXTERN_C const IID IID_IVMRSurfaceAllocator9; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("8d5148ea-3f5d-46cf-9df1-d1b896eedb1f") + IVMRSurfaceAllocator9 : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE InitializeDevice( + /* [in] */ DWORD_PTR dwUserID, + /* [in] */ VMR9AllocationInfo *lpAllocInfo, + /* [out][in] */ DWORD *lpNumBuffers) = 0; + + virtual HRESULT STDMETHODCALLTYPE TerminateDevice( + /* [in] */ DWORD_PTR dwID) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetSurface( + /* [in] */ DWORD_PTR dwUserID, + /* [in] */ DWORD SurfaceIndex, + /* [in] */ DWORD SurfaceFlags, + /* [out] */ IDirect3DSurface9 **lplpSurface) = 0; + + virtual HRESULT STDMETHODCALLTYPE AdviseNotify( + /* [in] */ IVMRSurfaceAllocatorNotify9 *lpIVMRSurfAllocNotify) = 0; + + }; + +#else /* C style interface */ + + typedef struct IVMRSurfaceAllocator9Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IVMRSurfaceAllocator9 * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IVMRSurfaceAllocator9 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IVMRSurfaceAllocator9 * This); + + HRESULT ( STDMETHODCALLTYPE *InitializeDevice )( + IVMRSurfaceAllocator9 * This, + /* [in] */ DWORD_PTR dwUserID, + /* [in] */ VMR9AllocationInfo *lpAllocInfo, + /* [out][in] */ DWORD *lpNumBuffers); + + HRESULT ( STDMETHODCALLTYPE *TerminateDevice )( + IVMRSurfaceAllocator9 * This, + /* [in] */ DWORD_PTR dwID); + + HRESULT ( STDMETHODCALLTYPE *GetSurface )( + IVMRSurfaceAllocator9 * This, + /* [in] */ DWORD_PTR dwUserID, + /* [in] */ DWORD SurfaceIndex, + /* [in] */ DWORD SurfaceFlags, + /* [out] */ IDirect3DSurface9 **lplpSurface); + + HRESULT ( STDMETHODCALLTYPE *AdviseNotify )( + IVMRSurfaceAllocator9 * This, + /* [in] */ IVMRSurfaceAllocatorNotify9 *lpIVMRSurfAllocNotify); + + END_INTERFACE + } IVMRSurfaceAllocator9Vtbl; + + interface IVMRSurfaceAllocator9 + { + CONST_VTBL struct IVMRSurfaceAllocator9Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IVMRSurfaceAllocator9_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IVMRSurfaceAllocator9_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IVMRSurfaceAllocator9_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IVMRSurfaceAllocator9_InitializeDevice(This,dwUserID,lpAllocInfo,lpNumBuffers) \ + (This)->lpVtbl -> InitializeDevice(This,dwUserID,lpAllocInfo,lpNumBuffers) + +#define IVMRSurfaceAllocator9_TerminateDevice(This,dwID) \ + (This)->lpVtbl -> TerminateDevice(This,dwID) + +#define IVMRSurfaceAllocator9_GetSurface(This,dwUserID,SurfaceIndex,SurfaceFlags,lplpSurface) \ + (This)->lpVtbl -> GetSurface(This,dwUserID,SurfaceIndex,SurfaceFlags,lplpSurface) + +#define IVMRSurfaceAllocator9_AdviseNotify(This,lpIVMRSurfAllocNotify) \ + (This)->lpVtbl -> AdviseNotify(This,lpIVMRSurfAllocNotify) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IVMRSurfaceAllocator9_InitializeDevice_Proxy( + IVMRSurfaceAllocator9 * This, + /* [in] */ DWORD_PTR dwUserID, + /* [in] */ VMR9AllocationInfo *lpAllocInfo, + /* [out][in] */ DWORD *lpNumBuffers); + + +void __RPC_STUB IVMRSurfaceAllocator9_InitializeDevice_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IVMRSurfaceAllocator9_TerminateDevice_Proxy( + IVMRSurfaceAllocator9 * This, + /* [in] */ DWORD_PTR dwID); + + +void __RPC_STUB IVMRSurfaceAllocator9_TerminateDevice_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IVMRSurfaceAllocator9_GetSurface_Proxy( + IVMRSurfaceAllocator9 * This, + /* [in] */ DWORD_PTR dwUserID, + /* [in] */ DWORD SurfaceIndex, + /* [in] */ DWORD SurfaceFlags, + /* [out] */ IDirect3DSurface9 **lplpSurface); + + +void __RPC_STUB IVMRSurfaceAllocator9_GetSurface_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IVMRSurfaceAllocator9_AdviseNotify_Proxy( + IVMRSurfaceAllocator9 * This, + /* [in] */ IVMRSurfaceAllocatorNotify9 *lpIVMRSurfAllocNotify); + + +void __RPC_STUB IVMRSurfaceAllocator9_AdviseNotify_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IVMRSurfaceAllocator9_INTERFACE_DEFINED__ */ + + +#ifndef __IVMRSurfaceAllocatorNotify9_INTERFACE_DEFINED__ +#define __IVMRSurfaceAllocatorNotify9_INTERFACE_DEFINED__ + +/* interface IVMRSurfaceAllocatorNotify9 */ +/* [unique][helpstring][uuid][local][object][local] */ + + +EXTERN_C const IID IID_IVMRSurfaceAllocatorNotify9; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("dca3f5df-bb3a-4d03-bd81-84614bfbfa0c") + IVMRSurfaceAllocatorNotify9 : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE AdviseSurfaceAllocator( + /* [in] */ DWORD_PTR dwUserID, + /* [in] */ IVMRSurfaceAllocator9 *lpIVRMSurfaceAllocator) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetD3DDevice( + /* [in] */ IDirect3DDevice9 *lpD3DDevice, + /* [in] */ HMONITOR hMonitor) = 0; + + virtual HRESULT STDMETHODCALLTYPE ChangeD3DDevice( + /* [in] */ IDirect3DDevice9 *lpD3DDevice, + /* [in] */ HMONITOR hMonitor) = 0; + + virtual HRESULT STDMETHODCALLTYPE AllocateSurfaceHelper( + /* [in] */ VMR9AllocationInfo *lpAllocInfo, + /* [out][in] */ DWORD *lpNumBuffers, + /* [out] */ IDirect3DSurface9 **lplpSurface) = 0; + + virtual HRESULT STDMETHODCALLTYPE NotifyEvent( + /* [in] */ LONG EventCode, + /* [in] */ LONG_PTR Param1, + /* [in] */ LONG_PTR Param2) = 0; + + }; + +#else /* C style interface */ + + typedef struct IVMRSurfaceAllocatorNotify9Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IVMRSurfaceAllocatorNotify9 * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IVMRSurfaceAllocatorNotify9 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IVMRSurfaceAllocatorNotify9 * This); + + HRESULT ( STDMETHODCALLTYPE *AdviseSurfaceAllocator )( + IVMRSurfaceAllocatorNotify9 * This, + /* [in] */ DWORD_PTR dwUserID, + /* [in] */ IVMRSurfaceAllocator9 *lpIVRMSurfaceAllocator); + + HRESULT ( STDMETHODCALLTYPE *SetD3DDevice )( + IVMRSurfaceAllocatorNotify9 * This, + /* [in] */ IDirect3DDevice9 *lpD3DDevice, + /* [in] */ HMONITOR hMonitor); + + HRESULT ( STDMETHODCALLTYPE *ChangeD3DDevice )( + IVMRSurfaceAllocatorNotify9 * This, + /* [in] */ IDirect3DDevice9 *lpD3DDevice, + /* [in] */ HMONITOR hMonitor); + + HRESULT ( STDMETHODCALLTYPE *AllocateSurfaceHelper )( + IVMRSurfaceAllocatorNotify9 * This, + /* [in] */ VMR9AllocationInfo *lpAllocInfo, + /* [out][in] */ DWORD *lpNumBuffers, + /* [out] */ IDirect3DSurface9 **lplpSurface); + + HRESULT ( STDMETHODCALLTYPE *NotifyEvent )( + IVMRSurfaceAllocatorNotify9 * This, + /* [in] */ LONG EventCode, + /* [in] */ LONG_PTR Param1, + /* [in] */ LONG_PTR Param2); + + END_INTERFACE + } IVMRSurfaceAllocatorNotify9Vtbl; + + interface IVMRSurfaceAllocatorNotify9 + { + CONST_VTBL struct IVMRSurfaceAllocatorNotify9Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IVMRSurfaceAllocatorNotify9_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IVMRSurfaceAllocatorNotify9_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IVMRSurfaceAllocatorNotify9_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IVMRSurfaceAllocatorNotify9_AdviseSurfaceAllocator(This,dwUserID,lpIVRMSurfaceAllocator) \ + (This)->lpVtbl -> AdviseSurfaceAllocator(This,dwUserID,lpIVRMSurfaceAllocator) + +#define IVMRSurfaceAllocatorNotify9_SetD3DDevice(This,lpD3DDevice,hMonitor) \ + (This)->lpVtbl -> SetD3DDevice(This,lpD3DDevice,hMonitor) + +#define IVMRSurfaceAllocatorNotify9_ChangeD3DDevice(This,lpD3DDevice,hMonitor) \ + (This)->lpVtbl -> ChangeD3DDevice(This,lpD3DDevice,hMonitor) + +#define IVMRSurfaceAllocatorNotify9_AllocateSurfaceHelper(This,lpAllocInfo,lpNumBuffers,lplpSurface) \ + (This)->lpVtbl -> AllocateSurfaceHelper(This,lpAllocInfo,lpNumBuffers,lplpSurface) + +#define IVMRSurfaceAllocatorNotify9_NotifyEvent(This,EventCode,Param1,Param2) \ + (This)->lpVtbl -> NotifyEvent(This,EventCode,Param1,Param2) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IVMRSurfaceAllocatorNotify9_AdviseSurfaceAllocator_Proxy( + IVMRSurfaceAllocatorNotify9 * This, + /* [in] */ DWORD_PTR dwUserID, + /* [in] */ IVMRSurfaceAllocator9 *lpIVRMSurfaceAllocator); + + +void __RPC_STUB IVMRSurfaceAllocatorNotify9_AdviseSurfaceAllocator_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IVMRSurfaceAllocatorNotify9_SetD3DDevice_Proxy( + IVMRSurfaceAllocatorNotify9 * This, + /* [in] */ IDirect3DDevice9 *lpD3DDevice, + /* [in] */ HMONITOR hMonitor); + + +void __RPC_STUB IVMRSurfaceAllocatorNotify9_SetD3DDevice_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IVMRSurfaceAllocatorNotify9_ChangeD3DDevice_Proxy( + IVMRSurfaceAllocatorNotify9 * This, + /* [in] */ IDirect3DDevice9 *lpD3DDevice, + /* [in] */ HMONITOR hMonitor); + + +void __RPC_STUB IVMRSurfaceAllocatorNotify9_ChangeD3DDevice_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IVMRSurfaceAllocatorNotify9_AllocateSurfaceHelper_Proxy( + IVMRSurfaceAllocatorNotify9 * This, + /* [in] */ VMR9AllocationInfo *lpAllocInfo, + /* [out][in] */ DWORD *lpNumBuffers, + /* [out] */ IDirect3DSurface9 **lplpSurface); + + +void __RPC_STUB IVMRSurfaceAllocatorNotify9_AllocateSurfaceHelper_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IVMRSurfaceAllocatorNotify9_NotifyEvent_Proxy( + IVMRSurfaceAllocatorNotify9 * This, + /* [in] */ LONG EventCode, + /* [in] */ LONG_PTR Param1, + /* [in] */ LONG_PTR Param2); + + +void __RPC_STUB IVMRSurfaceAllocatorNotify9_NotifyEvent_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IVMRSurfaceAllocatorNotify9_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_vmr9_0011 */ +/* [local] */ + +typedef /* [public] */ +enum __MIDL___MIDL_itf_vmr9_0011_0001 + { VMR9ARMode_None = 0, + VMR9ARMode_LetterBox = VMR9ARMode_None + 1 + } VMR9AspectRatioMode; + + + +extern RPC_IF_HANDLE __MIDL_itf_vmr9_0011_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_vmr9_0011_v0_0_s_ifspec; + +#ifndef __IVMRWindowlessControl9_INTERFACE_DEFINED__ +#define __IVMRWindowlessControl9_INTERFACE_DEFINED__ + +/* interface IVMRWindowlessControl9 */ +/* [unique][helpstring][uuid][local][object][local] */ + + +EXTERN_C const IID IID_IVMRWindowlessControl9; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("8f537d09-f85e-4414-b23b-502e54c79927") + IVMRWindowlessControl9 : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE GetNativeVideoSize( + /* [out] */ LONG *lpWidth, + /* [out] */ LONG *lpHeight, + /* [out] */ LONG *lpARWidth, + /* [out] */ LONG *lpARHeight) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetMinIdealVideoSize( + /* [out] */ LONG *lpWidth, + /* [out] */ LONG *lpHeight) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetMaxIdealVideoSize( + /* [out] */ LONG *lpWidth, + /* [out] */ LONG *lpHeight) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetVideoPosition( + /* [in] */ const LPRECT lpSRCRect, + /* [in] */ const LPRECT lpDSTRect) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetVideoPosition( + /* [out] */ LPRECT lpSRCRect, + /* [out] */ LPRECT lpDSTRect) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetAspectRatioMode( + /* [out] */ DWORD *lpAspectRatioMode) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetAspectRatioMode( + /* [in] */ DWORD AspectRatioMode) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetVideoClippingWindow( + /* [in] */ HWND hwnd) = 0; + + virtual HRESULT STDMETHODCALLTYPE RepaintVideo( + /* [in] */ HWND hwnd, + /* [in] */ HDC hdc) = 0; + + virtual HRESULT STDMETHODCALLTYPE DisplayModeChanged( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetCurrentImage( + /* [out] */ BYTE **lpDib) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetBorderColor( + /* [in] */ COLORREF Clr) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetBorderColor( + /* [out] */ COLORREF *lpClr) = 0; + + }; + +#else /* C style interface */ + + typedef struct IVMRWindowlessControl9Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IVMRWindowlessControl9 * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IVMRWindowlessControl9 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IVMRWindowlessControl9 * This); + + HRESULT ( STDMETHODCALLTYPE *GetNativeVideoSize )( + IVMRWindowlessControl9 * This, + /* [out] */ LONG *lpWidth, + /* [out] */ LONG *lpHeight, + /* [out] */ LONG *lpARWidth, + /* [out] */ LONG *lpARHeight); + + HRESULT ( STDMETHODCALLTYPE *GetMinIdealVideoSize )( + IVMRWindowlessControl9 * This, + /* [out] */ LONG *lpWidth, + /* [out] */ LONG *lpHeight); + + HRESULT ( STDMETHODCALLTYPE *GetMaxIdealVideoSize )( + IVMRWindowlessControl9 * This, + /* [out] */ LONG *lpWidth, + /* [out] */ LONG *lpHeight); + + HRESULT ( STDMETHODCALLTYPE *SetVideoPosition )( + IVMRWindowlessControl9 * This, + /* [in] */ const LPRECT lpSRCRect, + /* [in] */ const LPRECT lpDSTRect); + + HRESULT ( STDMETHODCALLTYPE *GetVideoPosition )( + IVMRWindowlessControl9 * This, + /* [out] */ LPRECT lpSRCRect, + /* [out] */ LPRECT lpDSTRect); + + HRESULT ( STDMETHODCALLTYPE *GetAspectRatioMode )( + IVMRWindowlessControl9 * This, + /* [out] */ DWORD *lpAspectRatioMode); + + HRESULT ( STDMETHODCALLTYPE *SetAspectRatioMode )( + IVMRWindowlessControl9 * This, + /* [in] */ DWORD AspectRatioMode); + + HRESULT ( STDMETHODCALLTYPE *SetVideoClippingWindow )( + IVMRWindowlessControl9 * This, + /* [in] */ HWND hwnd); + + HRESULT ( STDMETHODCALLTYPE *RepaintVideo )( + IVMRWindowlessControl9 * This, + /* [in] */ HWND hwnd, + /* [in] */ HDC hdc); + + HRESULT ( STDMETHODCALLTYPE *DisplayModeChanged )( + IVMRWindowlessControl9 * This); + + HRESULT ( STDMETHODCALLTYPE *GetCurrentImage )( + IVMRWindowlessControl9 * This, + /* [out] */ BYTE **lpDib); + + HRESULT ( STDMETHODCALLTYPE *SetBorderColor )( + IVMRWindowlessControl9 * This, + /* [in] */ COLORREF Clr); + + HRESULT ( STDMETHODCALLTYPE *GetBorderColor )( + IVMRWindowlessControl9 * This, + /* [out] */ COLORREF *lpClr); + + END_INTERFACE + } IVMRWindowlessControl9Vtbl; + + interface IVMRWindowlessControl9 + { + CONST_VTBL struct IVMRWindowlessControl9Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IVMRWindowlessControl9_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IVMRWindowlessControl9_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IVMRWindowlessControl9_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IVMRWindowlessControl9_GetNativeVideoSize(This,lpWidth,lpHeight,lpARWidth,lpARHeight) \ + (This)->lpVtbl -> GetNativeVideoSize(This,lpWidth,lpHeight,lpARWidth,lpARHeight) + +#define IVMRWindowlessControl9_GetMinIdealVideoSize(This,lpWidth,lpHeight) \ + (This)->lpVtbl -> GetMinIdealVideoSize(This,lpWidth,lpHeight) + +#define IVMRWindowlessControl9_GetMaxIdealVideoSize(This,lpWidth,lpHeight) \ + (This)->lpVtbl -> GetMaxIdealVideoSize(This,lpWidth,lpHeight) + +#define IVMRWindowlessControl9_SetVideoPosition(This,lpSRCRect,lpDSTRect) \ + (This)->lpVtbl -> SetVideoPosition(This,lpSRCRect,lpDSTRect) + +#define IVMRWindowlessControl9_GetVideoPosition(This,lpSRCRect,lpDSTRect) \ + (This)->lpVtbl -> GetVideoPosition(This,lpSRCRect,lpDSTRect) + +#define IVMRWindowlessControl9_GetAspectRatioMode(This,lpAspectRatioMode) \ + (This)->lpVtbl -> GetAspectRatioMode(This,lpAspectRatioMode) + +#define IVMRWindowlessControl9_SetAspectRatioMode(This,AspectRatioMode) \ + (This)->lpVtbl -> SetAspectRatioMode(This,AspectRatioMode) + +#define IVMRWindowlessControl9_SetVideoClippingWindow(This,hwnd) \ + (This)->lpVtbl -> SetVideoClippingWindow(This,hwnd) + +#define IVMRWindowlessControl9_RepaintVideo(This,hwnd,hdc) \ + (This)->lpVtbl -> RepaintVideo(This,hwnd,hdc) + +#define IVMRWindowlessControl9_DisplayModeChanged(This) \ + (This)->lpVtbl -> DisplayModeChanged(This) + +#define IVMRWindowlessControl9_GetCurrentImage(This,lpDib) \ + (This)->lpVtbl -> GetCurrentImage(This,lpDib) + +#define IVMRWindowlessControl9_SetBorderColor(This,Clr) \ + (This)->lpVtbl -> SetBorderColor(This,Clr) + +#define IVMRWindowlessControl9_GetBorderColor(This,lpClr) \ + (This)->lpVtbl -> GetBorderColor(This,lpClr) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IVMRWindowlessControl9_GetNativeVideoSize_Proxy( + IVMRWindowlessControl9 * This, + /* [out] */ LONG *lpWidth, + /* [out] */ LONG *lpHeight, + /* [out] */ LONG *lpARWidth, + /* [out] */ LONG *lpARHeight); + + +void __RPC_STUB IVMRWindowlessControl9_GetNativeVideoSize_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IVMRWindowlessControl9_GetMinIdealVideoSize_Proxy( + IVMRWindowlessControl9 * This, + /* [out] */ LONG *lpWidth, + /* [out] */ LONG *lpHeight); + + +void __RPC_STUB IVMRWindowlessControl9_GetMinIdealVideoSize_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IVMRWindowlessControl9_GetMaxIdealVideoSize_Proxy( + IVMRWindowlessControl9 * This, + /* [out] */ LONG *lpWidth, + /* [out] */ LONG *lpHeight); + + +void __RPC_STUB IVMRWindowlessControl9_GetMaxIdealVideoSize_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IVMRWindowlessControl9_SetVideoPosition_Proxy( + IVMRWindowlessControl9 * This, + /* [in] */ const LPRECT lpSRCRect, + /* [in] */ const LPRECT lpDSTRect); + + +void __RPC_STUB IVMRWindowlessControl9_SetVideoPosition_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IVMRWindowlessControl9_GetVideoPosition_Proxy( + IVMRWindowlessControl9 * This, + /* [out] */ LPRECT lpSRCRect, + /* [out] */ LPRECT lpDSTRect); + + +void __RPC_STUB IVMRWindowlessControl9_GetVideoPosition_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IVMRWindowlessControl9_GetAspectRatioMode_Proxy( + IVMRWindowlessControl9 * This, + /* [out] */ DWORD *lpAspectRatioMode); + + +void __RPC_STUB IVMRWindowlessControl9_GetAspectRatioMode_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IVMRWindowlessControl9_SetAspectRatioMode_Proxy( + IVMRWindowlessControl9 * This, + /* [in] */ DWORD AspectRatioMode); + + +void __RPC_STUB IVMRWindowlessControl9_SetAspectRatioMode_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IVMRWindowlessControl9_SetVideoClippingWindow_Proxy( + IVMRWindowlessControl9 * This, + /* [in] */ HWND hwnd); + + +void __RPC_STUB IVMRWindowlessControl9_SetVideoClippingWindow_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IVMRWindowlessControl9_RepaintVideo_Proxy( + IVMRWindowlessControl9 * This, + /* [in] */ HWND hwnd, + /* [in] */ HDC hdc); + + +void __RPC_STUB IVMRWindowlessControl9_RepaintVideo_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IVMRWindowlessControl9_DisplayModeChanged_Proxy( + IVMRWindowlessControl9 * This); + + +void __RPC_STUB IVMRWindowlessControl9_DisplayModeChanged_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IVMRWindowlessControl9_GetCurrentImage_Proxy( + IVMRWindowlessControl9 * This, + /* [out] */ BYTE **lpDib); + + +void __RPC_STUB IVMRWindowlessControl9_GetCurrentImage_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IVMRWindowlessControl9_SetBorderColor_Proxy( + IVMRWindowlessControl9 * This, + /* [in] */ COLORREF Clr); + + +void __RPC_STUB IVMRWindowlessControl9_SetBorderColor_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IVMRWindowlessControl9_GetBorderColor_Proxy( + IVMRWindowlessControl9 * This, + /* [out] */ COLORREF *lpClr); + + +void __RPC_STUB IVMRWindowlessControl9_GetBorderColor_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IVMRWindowlessControl9_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_vmr9_0012 */ +/* [local] */ + +typedef /* [public] */ +enum __MIDL___MIDL_itf_vmr9_0012_0001 + { MixerPref9_NoDecimation = 0x1, + MixerPref9_DecimateOutput = 0x2, + MixerPref9_DecimationReserved = 0xc, + MixerPref9_DecimateMask = 0xf, + MixerPref9_BiLinearFiltering = 0x10, + MixerPref9_PointFiltering = 0x20, + MixerPref9_AnisotropicFiltering = 0x40, + MixerPref9_PyramidalQuadFiltering = 0x80, + MixerPref9_GaussianQuadFiltering = 0x100, + MixerPref9_FilteringReserved = 0xe00, + MixerPref9_FilteringMask = 0xff0, + MixerPref9_RenderTargetRGB = 0x1000, + MixerPref9_RenderTargetReserved = 0xfe000, + MixerPref9_RenderTargetMask = 0xff000 + } VMR9MixerPrefs; + +typedef struct _VMR9NormalizedRect + { + float left; + float top; + float right; + float bottom; + } VMR9NormalizedRect; + +typedef /* [public][public][public] */ +enum __MIDL___MIDL_itf_vmr9_0012_0002 + { ProcAmpControl9_Brightness = 0x1, + ProcAmpControl9_Contrast = 0x2, + ProcAmpControl9_Hue = 0x4, + ProcAmpControl9_Saturation = 0x8, + ProcAmpControl9_Mask = 0xf + } VMR9ProcAmpControlFlags; + +typedef struct _VMR9ProcAmpControl + { + DWORD dwSize; + DWORD dwFlags; + float Brightness; + float Contrast; + float Hue; + float Saturation; + } VMR9ProcAmpControl; + +typedef struct _VMR9ProcAmpControlRange + { + DWORD dwSize; + VMR9ProcAmpControlFlags dwProperty; + float MinValue; + float MaxValue; + float DefaultValue; + float StepSize; + } VMR9ProcAmpControlRange; + + + +extern RPC_IF_HANDLE __MIDL_itf_vmr9_0012_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_vmr9_0012_v0_0_s_ifspec; + +#ifndef __IVMRMixerControl9_INTERFACE_DEFINED__ +#define __IVMRMixerControl9_INTERFACE_DEFINED__ + +/* interface IVMRMixerControl9 */ +/* [unique][helpstring][uuid][local][object][local] */ + + +EXTERN_C const IID IID_IVMRMixerControl9; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("1a777eaa-47c8-4930-b2c9-8fee1c1b0f3b") + IVMRMixerControl9 : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE SetAlpha( + /* [in] */ DWORD dwStreamID, + /* [in] */ float Alpha) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetAlpha( + /* [in] */ DWORD dwStreamID, + /* [out] */ float *pAlpha) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetZOrder( + /* [in] */ DWORD dwStreamID, + /* [in] */ DWORD dwZ) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetZOrder( + /* [in] */ DWORD dwStreamID, + /* [out] */ DWORD *pZ) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetOutputRect( + /* [in] */ DWORD dwStreamID, + /* [in] */ const VMR9NormalizedRect *pRect) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetOutputRect( + /* [in] */ DWORD dwStreamID, + /* [out] */ VMR9NormalizedRect *pRect) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetBackgroundClr( + /* [in] */ COLORREF ClrBkg) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetBackgroundClr( + /* [in] */ COLORREF *lpClrBkg) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetMixingPrefs( + /* [in] */ DWORD dwMixerPrefs) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetMixingPrefs( + /* [out] */ DWORD *pdwMixerPrefs) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetProcAmpControl( + /* [in] */ DWORD dwStreamID, + /* [in] */ VMR9ProcAmpControl *lpClrControl) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetProcAmpControl( + /* [in] */ DWORD dwStreamID, + /* [out][in] */ VMR9ProcAmpControl *lpClrControl) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetProcAmpControlRange( + /* [in] */ DWORD dwStreamID, + /* [out][in] */ VMR9ProcAmpControlRange *lpClrControl) = 0; + + }; + +#else /* C style interface */ + + typedef struct IVMRMixerControl9Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IVMRMixerControl9 * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IVMRMixerControl9 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IVMRMixerControl9 * This); + + HRESULT ( STDMETHODCALLTYPE *SetAlpha )( + IVMRMixerControl9 * This, + /* [in] */ DWORD dwStreamID, + /* [in] */ float Alpha); + + HRESULT ( STDMETHODCALLTYPE *GetAlpha )( + IVMRMixerControl9 * This, + /* [in] */ DWORD dwStreamID, + /* [out] */ float *pAlpha); + + HRESULT ( STDMETHODCALLTYPE *SetZOrder )( + IVMRMixerControl9 * This, + /* [in] */ DWORD dwStreamID, + /* [in] */ DWORD dwZ); + + HRESULT ( STDMETHODCALLTYPE *GetZOrder )( + IVMRMixerControl9 * This, + /* [in] */ DWORD dwStreamID, + /* [out] */ DWORD *pZ); + + HRESULT ( STDMETHODCALLTYPE *SetOutputRect )( + IVMRMixerControl9 * This, + /* [in] */ DWORD dwStreamID, + /* [in] */ const VMR9NormalizedRect *pRect); + + HRESULT ( STDMETHODCALLTYPE *GetOutputRect )( + IVMRMixerControl9 * This, + /* [in] */ DWORD dwStreamID, + /* [out] */ VMR9NormalizedRect *pRect); + + HRESULT ( STDMETHODCALLTYPE *SetBackgroundClr )( + IVMRMixerControl9 * This, + /* [in] */ COLORREF ClrBkg); + + HRESULT ( STDMETHODCALLTYPE *GetBackgroundClr )( + IVMRMixerControl9 * This, + /* [in] */ COLORREF *lpClrBkg); + + HRESULT ( STDMETHODCALLTYPE *SetMixingPrefs )( + IVMRMixerControl9 * This, + /* [in] */ DWORD dwMixerPrefs); + + HRESULT ( STDMETHODCALLTYPE *GetMixingPrefs )( + IVMRMixerControl9 * This, + /* [out] */ DWORD *pdwMixerPrefs); + + HRESULT ( STDMETHODCALLTYPE *SetProcAmpControl )( + IVMRMixerControl9 * This, + /* [in] */ DWORD dwStreamID, + /* [in] */ VMR9ProcAmpControl *lpClrControl); + + HRESULT ( STDMETHODCALLTYPE *GetProcAmpControl )( + IVMRMixerControl9 * This, + /* [in] */ DWORD dwStreamID, + /* [out][in] */ VMR9ProcAmpControl *lpClrControl); + + HRESULT ( STDMETHODCALLTYPE *GetProcAmpControlRange )( + IVMRMixerControl9 * This, + /* [in] */ DWORD dwStreamID, + /* [out][in] */ VMR9ProcAmpControlRange *lpClrControl); + + END_INTERFACE + } IVMRMixerControl9Vtbl; + + interface IVMRMixerControl9 + { + CONST_VTBL struct IVMRMixerControl9Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IVMRMixerControl9_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IVMRMixerControl9_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IVMRMixerControl9_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IVMRMixerControl9_SetAlpha(This,dwStreamID,Alpha) \ + (This)->lpVtbl -> SetAlpha(This,dwStreamID,Alpha) + +#define IVMRMixerControl9_GetAlpha(This,dwStreamID,pAlpha) \ + (This)->lpVtbl -> GetAlpha(This,dwStreamID,pAlpha) + +#define IVMRMixerControl9_SetZOrder(This,dwStreamID,dwZ) \ + (This)->lpVtbl -> SetZOrder(This,dwStreamID,dwZ) + +#define IVMRMixerControl9_GetZOrder(This,dwStreamID,pZ) \ + (This)->lpVtbl -> GetZOrder(This,dwStreamID,pZ) + +#define IVMRMixerControl9_SetOutputRect(This,dwStreamID,pRect) \ + (This)->lpVtbl -> SetOutputRect(This,dwStreamID,pRect) + +#define IVMRMixerControl9_GetOutputRect(This,dwStreamID,pRect) \ + (This)->lpVtbl -> GetOutputRect(This,dwStreamID,pRect) + +#define IVMRMixerControl9_SetBackgroundClr(This,ClrBkg) \ + (This)->lpVtbl -> SetBackgroundClr(This,ClrBkg) + +#define IVMRMixerControl9_GetBackgroundClr(This,lpClrBkg) \ + (This)->lpVtbl -> GetBackgroundClr(This,lpClrBkg) + +#define IVMRMixerControl9_SetMixingPrefs(This,dwMixerPrefs) \ + (This)->lpVtbl -> SetMixingPrefs(This,dwMixerPrefs) + +#define IVMRMixerControl9_GetMixingPrefs(This,pdwMixerPrefs) \ + (This)->lpVtbl -> GetMixingPrefs(This,pdwMixerPrefs) + +#define IVMRMixerControl9_SetProcAmpControl(This,dwStreamID,lpClrControl) \ + (This)->lpVtbl -> SetProcAmpControl(This,dwStreamID,lpClrControl) + +#define IVMRMixerControl9_GetProcAmpControl(This,dwStreamID,lpClrControl) \ + (This)->lpVtbl -> GetProcAmpControl(This,dwStreamID,lpClrControl) + +#define IVMRMixerControl9_GetProcAmpControlRange(This,dwStreamID,lpClrControl) \ + (This)->lpVtbl -> GetProcAmpControlRange(This,dwStreamID,lpClrControl) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IVMRMixerControl9_SetAlpha_Proxy( + IVMRMixerControl9 * This, + /* [in] */ DWORD dwStreamID, + /* [in] */ float Alpha); + + +void __RPC_STUB IVMRMixerControl9_SetAlpha_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IVMRMixerControl9_GetAlpha_Proxy( + IVMRMixerControl9 * This, + /* [in] */ DWORD dwStreamID, + /* [out] */ float *pAlpha); + + +void __RPC_STUB IVMRMixerControl9_GetAlpha_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IVMRMixerControl9_SetZOrder_Proxy( + IVMRMixerControl9 * This, + /* [in] */ DWORD dwStreamID, + /* [in] */ DWORD dwZ); + + +void __RPC_STUB IVMRMixerControl9_SetZOrder_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IVMRMixerControl9_GetZOrder_Proxy( + IVMRMixerControl9 * This, + /* [in] */ DWORD dwStreamID, + /* [out] */ DWORD *pZ); + + +void __RPC_STUB IVMRMixerControl9_GetZOrder_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IVMRMixerControl9_SetOutputRect_Proxy( + IVMRMixerControl9 * This, + /* [in] */ DWORD dwStreamID, + /* [in] */ const VMR9NormalizedRect *pRect); + + +void __RPC_STUB IVMRMixerControl9_SetOutputRect_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IVMRMixerControl9_GetOutputRect_Proxy( + IVMRMixerControl9 * This, + /* [in] */ DWORD dwStreamID, + /* [out] */ VMR9NormalizedRect *pRect); + + +void __RPC_STUB IVMRMixerControl9_GetOutputRect_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IVMRMixerControl9_SetBackgroundClr_Proxy( + IVMRMixerControl9 * This, + /* [in] */ COLORREF ClrBkg); + + +void __RPC_STUB IVMRMixerControl9_SetBackgroundClr_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IVMRMixerControl9_GetBackgroundClr_Proxy( + IVMRMixerControl9 * This, + /* [in] */ COLORREF *lpClrBkg); + + +void __RPC_STUB IVMRMixerControl9_GetBackgroundClr_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IVMRMixerControl9_SetMixingPrefs_Proxy( + IVMRMixerControl9 * This, + /* [in] */ DWORD dwMixerPrefs); + + +void __RPC_STUB IVMRMixerControl9_SetMixingPrefs_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IVMRMixerControl9_GetMixingPrefs_Proxy( + IVMRMixerControl9 * This, + /* [out] */ DWORD *pdwMixerPrefs); + + +void __RPC_STUB IVMRMixerControl9_GetMixingPrefs_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IVMRMixerControl9_SetProcAmpControl_Proxy( + IVMRMixerControl9 * This, + /* [in] */ DWORD dwStreamID, + /* [in] */ VMR9ProcAmpControl *lpClrControl); + + +void __RPC_STUB IVMRMixerControl9_SetProcAmpControl_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IVMRMixerControl9_GetProcAmpControl_Proxy( + IVMRMixerControl9 * This, + /* [in] */ DWORD dwStreamID, + /* [out][in] */ VMR9ProcAmpControl *lpClrControl); + + +void __RPC_STUB IVMRMixerControl9_GetProcAmpControl_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IVMRMixerControl9_GetProcAmpControlRange_Proxy( + IVMRMixerControl9 * This, + /* [in] */ DWORD dwStreamID, + /* [out][in] */ VMR9ProcAmpControlRange *lpClrControl); + + +void __RPC_STUB IVMRMixerControl9_GetProcAmpControlRange_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IVMRMixerControl9_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_vmr9_0013 */ +/* [local] */ + +typedef struct _VMR9AlphaBitmap + { + DWORD dwFlags; + HDC hdc; + IDirect3DSurface9 *pDDS; + RECT rSrc; + VMR9NormalizedRect rDest; + FLOAT fAlpha; + COLORREF clrSrcKey; + DWORD dwFilterMode; + } VMR9AlphaBitmap; + +typedef /* [public] */ +enum __MIDL___MIDL_itf_vmr9_0013_0001 + { VMR9AlphaBitmap_Disable = 0x1, + VMR9AlphaBitmap_hDC = 0x2, + VMR9AlphaBitmap_EntireDDS = 0x4, + VMR9AlphaBitmap_SrcColorKey = 0x8, + VMR9AlphaBitmap_SrcRect = 0x10, + VMR9AlphaBitmap_FilterMode = 0x20 + } VMR9AlphaBitmapFlags; + + + +extern RPC_IF_HANDLE __MIDL_itf_vmr9_0013_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_vmr9_0013_v0_0_s_ifspec; + +#ifndef __IVMRMixerBitmap9_INTERFACE_DEFINED__ +#define __IVMRMixerBitmap9_INTERFACE_DEFINED__ + +/* interface IVMRMixerBitmap9 */ +/* [unique][helpstring][uuid][local][object] */ + + +EXTERN_C const IID IID_IVMRMixerBitmap9; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("ced175e5-1935-4820-81bd-ff6ad00c9108") + IVMRMixerBitmap9 : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE SetAlphaBitmap( + /* [in] */ const VMR9AlphaBitmap *pBmpParms) = 0; + + virtual HRESULT STDMETHODCALLTYPE UpdateAlphaBitmapParameters( + /* [in] */ const VMR9AlphaBitmap *pBmpParms) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetAlphaBitmapParameters( + /* [out] */ VMR9AlphaBitmap *pBmpParms) = 0; + + }; + +#else /* C style interface */ + + typedef struct IVMRMixerBitmap9Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IVMRMixerBitmap9 * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IVMRMixerBitmap9 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IVMRMixerBitmap9 * This); + + HRESULT ( STDMETHODCALLTYPE *SetAlphaBitmap )( + IVMRMixerBitmap9 * This, + /* [in] */ const VMR9AlphaBitmap *pBmpParms); + + HRESULT ( STDMETHODCALLTYPE *UpdateAlphaBitmapParameters )( + IVMRMixerBitmap9 * This, + /* [in] */ const VMR9AlphaBitmap *pBmpParms); + + HRESULT ( STDMETHODCALLTYPE *GetAlphaBitmapParameters )( + IVMRMixerBitmap9 * This, + /* [out] */ VMR9AlphaBitmap *pBmpParms); + + END_INTERFACE + } IVMRMixerBitmap9Vtbl; + + interface IVMRMixerBitmap9 + { + CONST_VTBL struct IVMRMixerBitmap9Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IVMRMixerBitmap9_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IVMRMixerBitmap9_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IVMRMixerBitmap9_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IVMRMixerBitmap9_SetAlphaBitmap(This,pBmpParms) \ + (This)->lpVtbl -> SetAlphaBitmap(This,pBmpParms) + +#define IVMRMixerBitmap9_UpdateAlphaBitmapParameters(This,pBmpParms) \ + (This)->lpVtbl -> UpdateAlphaBitmapParameters(This,pBmpParms) + +#define IVMRMixerBitmap9_GetAlphaBitmapParameters(This,pBmpParms) \ + (This)->lpVtbl -> GetAlphaBitmapParameters(This,pBmpParms) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IVMRMixerBitmap9_SetAlphaBitmap_Proxy( + IVMRMixerBitmap9 * This, + /* [in] */ const VMR9AlphaBitmap *pBmpParms); + + +void __RPC_STUB IVMRMixerBitmap9_SetAlphaBitmap_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IVMRMixerBitmap9_UpdateAlphaBitmapParameters_Proxy( + IVMRMixerBitmap9 * This, + /* [in] */ const VMR9AlphaBitmap *pBmpParms); + + +void __RPC_STUB IVMRMixerBitmap9_UpdateAlphaBitmapParameters_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IVMRMixerBitmap9_GetAlphaBitmapParameters_Proxy( + IVMRMixerBitmap9 * This, + /* [out] */ VMR9AlphaBitmap *pBmpParms); + + +void __RPC_STUB IVMRMixerBitmap9_GetAlphaBitmapParameters_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IVMRMixerBitmap9_INTERFACE_DEFINED__ */ + + +#ifndef __IVMRSurface9_INTERFACE_DEFINED__ +#define __IVMRSurface9_INTERFACE_DEFINED__ + +/* interface IVMRSurface9 */ +/* [unique][helpstring][uuid][local][object][local] */ + + +EXTERN_C const IID IID_IVMRSurface9; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("dfc581a1-6e1f-4c3a-8d0a-5e9792ea2afc") + IVMRSurface9 : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE IsSurfaceLocked( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE LockSurface( + /* [out] */ BYTE **lpSurface) = 0; + + virtual HRESULT STDMETHODCALLTYPE UnlockSurface( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetSurface( + /* [out] */ IDirect3DSurface9 **lplpSurface) = 0; + + }; + +#else /* C style interface */ + + typedef struct IVMRSurface9Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IVMRSurface9 * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IVMRSurface9 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IVMRSurface9 * This); + + HRESULT ( STDMETHODCALLTYPE *IsSurfaceLocked )( + IVMRSurface9 * This); + + HRESULT ( STDMETHODCALLTYPE *LockSurface )( + IVMRSurface9 * This, + /* [out] */ BYTE **lpSurface); + + HRESULT ( STDMETHODCALLTYPE *UnlockSurface )( + IVMRSurface9 * This); + + HRESULT ( STDMETHODCALLTYPE *GetSurface )( + IVMRSurface9 * This, + /* [out] */ IDirect3DSurface9 **lplpSurface); + + END_INTERFACE + } IVMRSurface9Vtbl; + + interface IVMRSurface9 + { + CONST_VTBL struct IVMRSurface9Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IVMRSurface9_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IVMRSurface9_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IVMRSurface9_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IVMRSurface9_IsSurfaceLocked(This) \ + (This)->lpVtbl -> IsSurfaceLocked(This) + +#define IVMRSurface9_LockSurface(This,lpSurface) \ + (This)->lpVtbl -> LockSurface(This,lpSurface) + +#define IVMRSurface9_UnlockSurface(This) \ + (This)->lpVtbl -> UnlockSurface(This) + +#define IVMRSurface9_GetSurface(This,lplpSurface) \ + (This)->lpVtbl -> GetSurface(This,lplpSurface) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IVMRSurface9_IsSurfaceLocked_Proxy( + IVMRSurface9 * This); + + +void __RPC_STUB IVMRSurface9_IsSurfaceLocked_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IVMRSurface9_LockSurface_Proxy( + IVMRSurface9 * This, + /* [out] */ BYTE **lpSurface); + + +void __RPC_STUB IVMRSurface9_LockSurface_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IVMRSurface9_UnlockSurface_Proxy( + IVMRSurface9 * This); + + +void __RPC_STUB IVMRSurface9_UnlockSurface_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IVMRSurface9_GetSurface_Proxy( + IVMRSurface9 * This, + /* [out] */ IDirect3DSurface9 **lplpSurface); + + +void __RPC_STUB IVMRSurface9_GetSurface_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IVMRSurface9_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_vmr9_0015 */ +/* [local] */ + +typedef /* [public] */ +enum __MIDL___MIDL_itf_vmr9_0015_0001 + { RenderPrefs9_DoNotRenderBorder = 0x1, + RenderPrefs9_Mask = 0x1 + } VMR9RenderPrefs; + + + +extern RPC_IF_HANDLE __MIDL_itf_vmr9_0015_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_vmr9_0015_v0_0_s_ifspec; + +#ifndef __IVMRImagePresenterConfig9_INTERFACE_DEFINED__ +#define __IVMRImagePresenterConfig9_INTERFACE_DEFINED__ + +/* interface IVMRImagePresenterConfig9 */ +/* [unique][helpstring][uuid][local][object][local] */ + + +EXTERN_C const IID IID_IVMRImagePresenterConfig9; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("45c15cab-6e22-420a-8043-ae1f0ac02c7d") + IVMRImagePresenterConfig9 : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE SetRenderingPrefs( + /* [in] */ DWORD dwRenderFlags) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetRenderingPrefs( + /* [out] */ DWORD *dwRenderFlags) = 0; + + }; + +#else /* C style interface */ + + typedef struct IVMRImagePresenterConfig9Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IVMRImagePresenterConfig9 * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IVMRImagePresenterConfig9 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IVMRImagePresenterConfig9 * This); + + HRESULT ( STDMETHODCALLTYPE *SetRenderingPrefs )( + IVMRImagePresenterConfig9 * This, + /* [in] */ DWORD dwRenderFlags); + + HRESULT ( STDMETHODCALLTYPE *GetRenderingPrefs )( + IVMRImagePresenterConfig9 * This, + /* [out] */ DWORD *dwRenderFlags); + + END_INTERFACE + } IVMRImagePresenterConfig9Vtbl; + + interface IVMRImagePresenterConfig9 + { + CONST_VTBL struct IVMRImagePresenterConfig9Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IVMRImagePresenterConfig9_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IVMRImagePresenterConfig9_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IVMRImagePresenterConfig9_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IVMRImagePresenterConfig9_SetRenderingPrefs(This,dwRenderFlags) \ + (This)->lpVtbl -> SetRenderingPrefs(This,dwRenderFlags) + +#define IVMRImagePresenterConfig9_GetRenderingPrefs(This,dwRenderFlags) \ + (This)->lpVtbl -> GetRenderingPrefs(This,dwRenderFlags) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IVMRImagePresenterConfig9_SetRenderingPrefs_Proxy( + IVMRImagePresenterConfig9 * This, + /* [in] */ DWORD dwRenderFlags); + + +void __RPC_STUB IVMRImagePresenterConfig9_SetRenderingPrefs_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IVMRImagePresenterConfig9_GetRenderingPrefs_Proxy( + IVMRImagePresenterConfig9 * This, + /* [out] */ DWORD *dwRenderFlags); + + +void __RPC_STUB IVMRImagePresenterConfig9_GetRenderingPrefs_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IVMRImagePresenterConfig9_INTERFACE_DEFINED__ */ + + +#ifndef __IVMRVideoStreamControl9_INTERFACE_DEFINED__ +#define __IVMRVideoStreamControl9_INTERFACE_DEFINED__ + +/* interface IVMRVideoStreamControl9 */ +/* [unique][helpstring][uuid][local][object] */ + + +EXTERN_C const IID IID_IVMRVideoStreamControl9; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("d0cfe38b-93e7-4772-8957-0400c49a4485") + IVMRVideoStreamControl9 : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE SetStreamActiveState( + /* [in] */ BOOL fActive) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetStreamActiveState( + /* [out] */ BOOL *lpfActive) = 0; + + }; + +#else /* C style interface */ + + typedef struct IVMRVideoStreamControl9Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IVMRVideoStreamControl9 * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IVMRVideoStreamControl9 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IVMRVideoStreamControl9 * This); + + HRESULT ( STDMETHODCALLTYPE *SetStreamActiveState )( + IVMRVideoStreamControl9 * This, + /* [in] */ BOOL fActive); + + HRESULT ( STDMETHODCALLTYPE *GetStreamActiveState )( + IVMRVideoStreamControl9 * This, + /* [out] */ BOOL *lpfActive); + + END_INTERFACE + } IVMRVideoStreamControl9Vtbl; + + interface IVMRVideoStreamControl9 + { + CONST_VTBL struct IVMRVideoStreamControl9Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IVMRVideoStreamControl9_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IVMRVideoStreamControl9_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IVMRVideoStreamControl9_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IVMRVideoStreamControl9_SetStreamActiveState(This,fActive) \ + (This)->lpVtbl -> SetStreamActiveState(This,fActive) + +#define IVMRVideoStreamControl9_GetStreamActiveState(This,lpfActive) \ + (This)->lpVtbl -> GetStreamActiveState(This,lpfActive) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IVMRVideoStreamControl9_SetStreamActiveState_Proxy( + IVMRVideoStreamControl9 * This, + /* [in] */ BOOL fActive); + + +void __RPC_STUB IVMRVideoStreamControl9_SetStreamActiveState_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IVMRVideoStreamControl9_GetStreamActiveState_Proxy( + IVMRVideoStreamControl9 * This, + /* [out] */ BOOL *lpfActive); + + +void __RPC_STUB IVMRVideoStreamControl9_GetStreamActiveState_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IVMRVideoStreamControl9_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_vmr9_0017 */ +/* [local] */ + +typedef /* [public] */ +enum __MIDL___MIDL_itf_vmr9_0017_0001 + { VMR9Mode_Windowed = 0x1, + VMR9Mode_Windowless = 0x2, + VMR9Mode_Renderless = 0x4, + VMR9Mode_Mask = 0x7 + } VMR9Mode; + + + +extern RPC_IF_HANDLE __MIDL_itf_vmr9_0017_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_vmr9_0017_v0_0_s_ifspec; + +#ifndef __IVMRFilterConfig9_INTERFACE_DEFINED__ +#define __IVMRFilterConfig9_INTERFACE_DEFINED__ + +/* interface IVMRFilterConfig9 */ +/* [unique][helpstring][uuid][local][object] */ + + +EXTERN_C const IID IID_IVMRFilterConfig9; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("5a804648-4f66-4867-9c43-4f5c822cf1b8") + IVMRFilterConfig9 : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE SetImageCompositor( + /* [in] */ IVMRImageCompositor9 *lpVMRImgCompositor) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetNumberOfStreams( + /* [in] */ DWORD dwMaxStreams) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetNumberOfStreams( + /* [out] */ DWORD *pdwMaxStreams) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetRenderingPrefs( + /* [in] */ DWORD dwRenderFlags) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetRenderingPrefs( + /* [out] */ DWORD *pdwRenderFlags) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetRenderingMode( + /* [in] */ DWORD Mode) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetRenderingMode( + /* [out] */ DWORD *pMode) = 0; + + }; + +#else /* C style interface */ + + typedef struct IVMRFilterConfig9Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IVMRFilterConfig9 * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IVMRFilterConfig9 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IVMRFilterConfig9 * This); + + HRESULT ( STDMETHODCALLTYPE *SetImageCompositor )( + IVMRFilterConfig9 * This, + /* [in] */ IVMRImageCompositor9 *lpVMRImgCompositor); + + HRESULT ( STDMETHODCALLTYPE *SetNumberOfStreams )( + IVMRFilterConfig9 * This, + /* [in] */ DWORD dwMaxStreams); + + HRESULT ( STDMETHODCALLTYPE *GetNumberOfStreams )( + IVMRFilterConfig9 * This, + /* [out] */ DWORD *pdwMaxStreams); + + HRESULT ( STDMETHODCALLTYPE *SetRenderingPrefs )( + IVMRFilterConfig9 * This, + /* [in] */ DWORD dwRenderFlags); + + HRESULT ( STDMETHODCALLTYPE *GetRenderingPrefs )( + IVMRFilterConfig9 * This, + /* [out] */ DWORD *pdwRenderFlags); + + HRESULT ( STDMETHODCALLTYPE *SetRenderingMode )( + IVMRFilterConfig9 * This, + /* [in] */ DWORD Mode); + + HRESULT ( STDMETHODCALLTYPE *GetRenderingMode )( + IVMRFilterConfig9 * This, + /* [out] */ DWORD *pMode); + + END_INTERFACE + } IVMRFilterConfig9Vtbl; + + interface IVMRFilterConfig9 + { + CONST_VTBL struct IVMRFilterConfig9Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IVMRFilterConfig9_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IVMRFilterConfig9_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IVMRFilterConfig9_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IVMRFilterConfig9_SetImageCompositor(This,lpVMRImgCompositor) \ + (This)->lpVtbl -> SetImageCompositor(This,lpVMRImgCompositor) + +#define IVMRFilterConfig9_SetNumberOfStreams(This,dwMaxStreams) \ + (This)->lpVtbl -> SetNumberOfStreams(This,dwMaxStreams) + +#define IVMRFilterConfig9_GetNumberOfStreams(This,pdwMaxStreams) \ + (This)->lpVtbl -> GetNumberOfStreams(This,pdwMaxStreams) + +#define IVMRFilterConfig9_SetRenderingPrefs(This,dwRenderFlags) \ + (This)->lpVtbl -> SetRenderingPrefs(This,dwRenderFlags) + +#define IVMRFilterConfig9_GetRenderingPrefs(This,pdwRenderFlags) \ + (This)->lpVtbl -> GetRenderingPrefs(This,pdwRenderFlags) + +#define IVMRFilterConfig9_SetRenderingMode(This,Mode) \ + (This)->lpVtbl -> SetRenderingMode(This,Mode) + +#define IVMRFilterConfig9_GetRenderingMode(This,pMode) \ + (This)->lpVtbl -> GetRenderingMode(This,pMode) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IVMRFilterConfig9_SetImageCompositor_Proxy( + IVMRFilterConfig9 * This, + /* [in] */ IVMRImageCompositor9 *lpVMRImgCompositor); + + +void __RPC_STUB IVMRFilterConfig9_SetImageCompositor_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IVMRFilterConfig9_SetNumberOfStreams_Proxy( + IVMRFilterConfig9 * This, + /* [in] */ DWORD dwMaxStreams); + + +void __RPC_STUB IVMRFilterConfig9_SetNumberOfStreams_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IVMRFilterConfig9_GetNumberOfStreams_Proxy( + IVMRFilterConfig9 * This, + /* [out] */ DWORD *pdwMaxStreams); + + +void __RPC_STUB IVMRFilterConfig9_GetNumberOfStreams_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IVMRFilterConfig9_SetRenderingPrefs_Proxy( + IVMRFilterConfig9 * This, + /* [in] */ DWORD dwRenderFlags); + + +void __RPC_STUB IVMRFilterConfig9_SetRenderingPrefs_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IVMRFilterConfig9_GetRenderingPrefs_Proxy( + IVMRFilterConfig9 * This, + /* [out] */ DWORD *pdwRenderFlags); + + +void __RPC_STUB IVMRFilterConfig9_GetRenderingPrefs_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IVMRFilterConfig9_SetRenderingMode_Proxy( + IVMRFilterConfig9 * This, + /* [in] */ DWORD Mode); + + +void __RPC_STUB IVMRFilterConfig9_SetRenderingMode_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IVMRFilterConfig9_GetRenderingMode_Proxy( + IVMRFilterConfig9 * This, + /* [out] */ DWORD *pMode); + + +void __RPC_STUB IVMRFilterConfig9_GetRenderingMode_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IVMRFilterConfig9_INTERFACE_DEFINED__ */ + + +#ifndef __IVMRAspectRatioControl9_INTERFACE_DEFINED__ +#define __IVMRAspectRatioControl9_INTERFACE_DEFINED__ + +/* interface IVMRAspectRatioControl9 */ +/* [unique][helpstring][uuid][local][object] */ + + +EXTERN_C const IID IID_IVMRAspectRatioControl9; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("00d96c29-bbde-4efc-9901-bb5036392146") + IVMRAspectRatioControl9 : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE GetAspectRatioMode( + /* [out] */ LPDWORD lpdwARMode) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetAspectRatioMode( + /* [in] */ DWORD dwARMode) = 0; + + }; + +#else /* C style interface */ + + typedef struct IVMRAspectRatioControl9Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IVMRAspectRatioControl9 * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IVMRAspectRatioControl9 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IVMRAspectRatioControl9 * This); + + HRESULT ( STDMETHODCALLTYPE *GetAspectRatioMode )( + IVMRAspectRatioControl9 * This, + /* [out] */ LPDWORD lpdwARMode); + + HRESULT ( STDMETHODCALLTYPE *SetAspectRatioMode )( + IVMRAspectRatioControl9 * This, + /* [in] */ DWORD dwARMode); + + END_INTERFACE + } IVMRAspectRatioControl9Vtbl; + + interface IVMRAspectRatioControl9 + { + CONST_VTBL struct IVMRAspectRatioControl9Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IVMRAspectRatioControl9_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IVMRAspectRatioControl9_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IVMRAspectRatioControl9_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IVMRAspectRatioControl9_GetAspectRatioMode(This,lpdwARMode) \ + (This)->lpVtbl -> GetAspectRatioMode(This,lpdwARMode) + +#define IVMRAspectRatioControl9_SetAspectRatioMode(This,dwARMode) \ + (This)->lpVtbl -> SetAspectRatioMode(This,dwARMode) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IVMRAspectRatioControl9_GetAspectRatioMode_Proxy( + IVMRAspectRatioControl9 * This, + /* [out] */ LPDWORD lpdwARMode); + + +void __RPC_STUB IVMRAspectRatioControl9_GetAspectRatioMode_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IVMRAspectRatioControl9_SetAspectRatioMode_Proxy( + IVMRAspectRatioControl9 * This, + /* [in] */ DWORD dwARMode); + + +void __RPC_STUB IVMRAspectRatioControl9_SetAspectRatioMode_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IVMRAspectRatioControl9_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_vmr9_0019 */ +/* [local] */ + +typedef struct _VMR9MonitorInfo + { + UINT uDevID; + RECT rcMonitor; + HMONITOR hMon; + DWORD dwFlags; + wchar_t szDevice[ 32 ]; + wchar_t szDescription[ 512 ]; + LARGE_INTEGER liDriverVersion; + DWORD dwVendorId; + DWORD dwDeviceId; + DWORD dwSubSysId; + DWORD dwRevision; + } VMR9MonitorInfo; + + + +extern RPC_IF_HANDLE __MIDL_itf_vmr9_0019_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_vmr9_0019_v0_0_s_ifspec; + +#ifndef __IVMRMonitorConfig9_INTERFACE_DEFINED__ +#define __IVMRMonitorConfig9_INTERFACE_DEFINED__ + +/* interface IVMRMonitorConfig9 */ +/* [unique][helpstring][uuid][local][object] */ + + +EXTERN_C const IID IID_IVMRMonitorConfig9; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("46c2e457-8ba0-4eef-b80b-0680f0978749") + IVMRMonitorConfig9 : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE SetMonitor( + /* [in] */ UINT uDev) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetMonitor( + /* [out] */ UINT *puDev) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetDefaultMonitor( + /* [in] */ UINT uDev) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetDefaultMonitor( + /* [out] */ UINT *puDev) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetAvailableMonitors( + /* [size_is][out] */ VMR9MonitorInfo *pInfo, + /* [in] */ DWORD dwMaxInfoArraySize, + /* [out] */ DWORD *pdwNumDevices) = 0; + + }; + +#else /* C style interface */ + + typedef struct IVMRMonitorConfig9Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IVMRMonitorConfig9 * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IVMRMonitorConfig9 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IVMRMonitorConfig9 * This); + + HRESULT ( STDMETHODCALLTYPE *SetMonitor )( + IVMRMonitorConfig9 * This, + /* [in] */ UINT uDev); + + HRESULT ( STDMETHODCALLTYPE *GetMonitor )( + IVMRMonitorConfig9 * This, + /* [out] */ UINT *puDev); + + HRESULT ( STDMETHODCALLTYPE *SetDefaultMonitor )( + IVMRMonitorConfig9 * This, + /* [in] */ UINT uDev); + + HRESULT ( STDMETHODCALLTYPE *GetDefaultMonitor )( + IVMRMonitorConfig9 * This, + /* [out] */ UINT *puDev); + + HRESULT ( STDMETHODCALLTYPE *GetAvailableMonitors )( + IVMRMonitorConfig9 * This, + /* [size_is][out] */ VMR9MonitorInfo *pInfo, + /* [in] */ DWORD dwMaxInfoArraySize, + /* [out] */ DWORD *pdwNumDevices); + + END_INTERFACE + } IVMRMonitorConfig9Vtbl; + + interface IVMRMonitorConfig9 + { + CONST_VTBL struct IVMRMonitorConfig9Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IVMRMonitorConfig9_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IVMRMonitorConfig9_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IVMRMonitorConfig9_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IVMRMonitorConfig9_SetMonitor(This,uDev) \ + (This)->lpVtbl -> SetMonitor(This,uDev) + +#define IVMRMonitorConfig9_GetMonitor(This,puDev) \ + (This)->lpVtbl -> GetMonitor(This,puDev) + +#define IVMRMonitorConfig9_SetDefaultMonitor(This,uDev) \ + (This)->lpVtbl -> SetDefaultMonitor(This,uDev) + +#define IVMRMonitorConfig9_GetDefaultMonitor(This,puDev) \ + (This)->lpVtbl -> GetDefaultMonitor(This,puDev) + +#define IVMRMonitorConfig9_GetAvailableMonitors(This,pInfo,dwMaxInfoArraySize,pdwNumDevices) \ + (This)->lpVtbl -> GetAvailableMonitors(This,pInfo,dwMaxInfoArraySize,pdwNumDevices) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IVMRMonitorConfig9_SetMonitor_Proxy( + IVMRMonitorConfig9 * This, + /* [in] */ UINT uDev); + + +void __RPC_STUB IVMRMonitorConfig9_SetMonitor_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IVMRMonitorConfig9_GetMonitor_Proxy( + IVMRMonitorConfig9 * This, + /* [out] */ UINT *puDev); + + +void __RPC_STUB IVMRMonitorConfig9_GetMonitor_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IVMRMonitorConfig9_SetDefaultMonitor_Proxy( + IVMRMonitorConfig9 * This, + /* [in] */ UINT uDev); + + +void __RPC_STUB IVMRMonitorConfig9_SetDefaultMonitor_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IVMRMonitorConfig9_GetDefaultMonitor_Proxy( + IVMRMonitorConfig9 * This, + /* [out] */ UINT *puDev); + + +void __RPC_STUB IVMRMonitorConfig9_GetDefaultMonitor_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IVMRMonitorConfig9_GetAvailableMonitors_Proxy( + IVMRMonitorConfig9 * This, + /* [size_is][out] */ VMR9MonitorInfo *pInfo, + /* [in] */ DWORD dwMaxInfoArraySize, + /* [out] */ DWORD *pdwNumDevices); + + +void __RPC_STUB IVMRMonitorConfig9_GetAvailableMonitors_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IVMRMonitorConfig9_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_vmr9_0020 */ +/* [local] */ + +typedef /* [public] */ +enum __MIDL___MIDL_itf_vmr9_0020_0001 + { DeinterlacePref9_NextBest = 0x1, + DeinterlacePref9_BOB = 0x2, + DeinterlacePref9_Weave = 0x4, + DeinterlacePref9_Mask = 0x7 + } VMR9DeinterlacePrefs; + +typedef /* [public][public][public] */ +enum __MIDL___MIDL_itf_vmr9_0020_0002 + { DeinterlaceTech9_Unknown = 0, + DeinterlaceTech9_BOBLineReplicate = 0x1, + DeinterlaceTech9_BOBVerticalStretch = 0x2, + DeinterlaceTech9_MedianFiltering = 0x4, + DeinterlaceTech9_EdgeFiltering = 0x10, + DeinterlaceTech9_FieldAdaptive = 0x20, + DeinterlaceTech9_PixelAdaptive = 0x40, + DeinterlaceTech9_MotionVectorSteered = 0x80 + } VMR9DeinterlaceTech; + +typedef struct _VMR9Frequency + { + DWORD dwNumerator; + DWORD dwDenominator; + } VMR9Frequency; + +typedef +enum _VMR9_SampleFormat + { VMR9_SampleReserved = 1, + VMR9_SampleProgressiveFrame = 2, + VMR9_SampleFieldInterleavedEvenFirst = 3, + VMR9_SampleFieldInterleavedOddFirst = 4, + VMR9_SampleFieldSingleEven = 5, + VMR9_SampleFieldSingleOdd = 6 + } VMR9_SampleFormat; + +typedef struct _VMR9VideoDesc + { + DWORD dwSize; + DWORD dwSampleWidth; + DWORD dwSampleHeight; + VMR9_SampleFormat SampleFormat; + DWORD dwFourCC; + VMR9Frequency InputSampleFreq; + VMR9Frequency OutputFrameFreq; + } VMR9VideoDesc; + +typedef struct _VMR9DeinterlaceCaps + { + DWORD dwSize; + DWORD dwNumPreviousOutputFrames; + DWORD dwNumForwardRefSamples; + DWORD dwNumBackwardRefSamples; + VMR9DeinterlaceTech DeinterlaceTechnology; + } VMR9DeinterlaceCaps; + + + +extern RPC_IF_HANDLE __MIDL_itf_vmr9_0020_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_vmr9_0020_v0_0_s_ifspec; + +#ifndef __IVMRDeinterlaceControl9_INTERFACE_DEFINED__ +#define __IVMRDeinterlaceControl9_INTERFACE_DEFINED__ + +/* interface IVMRDeinterlaceControl9 */ +/* [unique][helpstring][uuid][local][object] */ + + +EXTERN_C const IID IID_IVMRDeinterlaceControl9; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("a215fb8d-13c2-4f7f-993c-003d6271a459") + IVMRDeinterlaceControl9 : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE GetNumberOfDeinterlaceModes( + /* [in] */ VMR9VideoDesc *lpVideoDescription, + /* [out][in] */ LPDWORD lpdwNumDeinterlaceModes, + /* [out] */ LPGUID lpDeinterlaceModes) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetDeinterlaceModeCaps( + /* [in] */ LPGUID lpDeinterlaceMode, + /* [in] */ VMR9VideoDesc *lpVideoDescription, + /* [out] */ VMR9DeinterlaceCaps *lpDeinterlaceCaps) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetDeinterlaceMode( + /* [in] */ DWORD dwStreamID, + /* [out] */ LPGUID lpDeinterlaceMode) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetDeinterlaceMode( + /* [in] */ DWORD dwStreamID, + /* [in] */ LPGUID lpDeinterlaceMode) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetDeinterlacePrefs( + /* [out] */ LPDWORD lpdwDeinterlacePrefs) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetDeinterlacePrefs( + /* [in] */ DWORD dwDeinterlacePrefs) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetActualDeinterlaceMode( + /* [in] */ DWORD dwStreamID, + /* [out] */ LPGUID lpDeinterlaceMode) = 0; + + }; + +#else /* C style interface */ + + typedef struct IVMRDeinterlaceControl9Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IVMRDeinterlaceControl9 * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IVMRDeinterlaceControl9 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IVMRDeinterlaceControl9 * This); + + HRESULT ( STDMETHODCALLTYPE *GetNumberOfDeinterlaceModes )( + IVMRDeinterlaceControl9 * This, + /* [in] */ VMR9VideoDesc *lpVideoDescription, + /* [out][in] */ LPDWORD lpdwNumDeinterlaceModes, + /* [out] */ LPGUID lpDeinterlaceModes); + + HRESULT ( STDMETHODCALLTYPE *GetDeinterlaceModeCaps )( + IVMRDeinterlaceControl9 * This, + /* [in] */ LPGUID lpDeinterlaceMode, + /* [in] */ VMR9VideoDesc *lpVideoDescription, + /* [out] */ VMR9DeinterlaceCaps *lpDeinterlaceCaps); + + HRESULT ( STDMETHODCALLTYPE *GetDeinterlaceMode )( + IVMRDeinterlaceControl9 * This, + /* [in] */ DWORD dwStreamID, + /* [out] */ LPGUID lpDeinterlaceMode); + + HRESULT ( STDMETHODCALLTYPE *SetDeinterlaceMode )( + IVMRDeinterlaceControl9 * This, + /* [in] */ DWORD dwStreamID, + /* [in] */ LPGUID lpDeinterlaceMode); + + HRESULT ( STDMETHODCALLTYPE *GetDeinterlacePrefs )( + IVMRDeinterlaceControl9 * This, + /* [out] */ LPDWORD lpdwDeinterlacePrefs); + + HRESULT ( STDMETHODCALLTYPE *SetDeinterlacePrefs )( + IVMRDeinterlaceControl9 * This, + /* [in] */ DWORD dwDeinterlacePrefs); + + HRESULT ( STDMETHODCALLTYPE *GetActualDeinterlaceMode )( + IVMRDeinterlaceControl9 * This, + /* [in] */ DWORD dwStreamID, + /* [out] */ LPGUID lpDeinterlaceMode); + + END_INTERFACE + } IVMRDeinterlaceControl9Vtbl; + + interface IVMRDeinterlaceControl9 + { + CONST_VTBL struct IVMRDeinterlaceControl9Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IVMRDeinterlaceControl9_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IVMRDeinterlaceControl9_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IVMRDeinterlaceControl9_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IVMRDeinterlaceControl9_GetNumberOfDeinterlaceModes(This,lpVideoDescription,lpdwNumDeinterlaceModes,lpDeinterlaceModes) \ + (This)->lpVtbl -> GetNumberOfDeinterlaceModes(This,lpVideoDescription,lpdwNumDeinterlaceModes,lpDeinterlaceModes) + +#define IVMRDeinterlaceControl9_GetDeinterlaceModeCaps(This,lpDeinterlaceMode,lpVideoDescription,lpDeinterlaceCaps) \ + (This)->lpVtbl -> GetDeinterlaceModeCaps(This,lpDeinterlaceMode,lpVideoDescription,lpDeinterlaceCaps) + +#define IVMRDeinterlaceControl9_GetDeinterlaceMode(This,dwStreamID,lpDeinterlaceMode) \ + (This)->lpVtbl -> GetDeinterlaceMode(This,dwStreamID,lpDeinterlaceMode) + +#define IVMRDeinterlaceControl9_SetDeinterlaceMode(This,dwStreamID,lpDeinterlaceMode) \ + (This)->lpVtbl -> SetDeinterlaceMode(This,dwStreamID,lpDeinterlaceMode) + +#define IVMRDeinterlaceControl9_GetDeinterlacePrefs(This,lpdwDeinterlacePrefs) \ + (This)->lpVtbl -> GetDeinterlacePrefs(This,lpdwDeinterlacePrefs) + +#define IVMRDeinterlaceControl9_SetDeinterlacePrefs(This,dwDeinterlacePrefs) \ + (This)->lpVtbl -> SetDeinterlacePrefs(This,dwDeinterlacePrefs) + +#define IVMRDeinterlaceControl9_GetActualDeinterlaceMode(This,dwStreamID,lpDeinterlaceMode) \ + (This)->lpVtbl -> GetActualDeinterlaceMode(This,dwStreamID,lpDeinterlaceMode) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IVMRDeinterlaceControl9_GetNumberOfDeinterlaceModes_Proxy( + IVMRDeinterlaceControl9 * This, + /* [in] */ VMR9VideoDesc *lpVideoDescription, + /* [out][in] */ LPDWORD lpdwNumDeinterlaceModes, + /* [out] */ LPGUID lpDeinterlaceModes); + + +void __RPC_STUB IVMRDeinterlaceControl9_GetNumberOfDeinterlaceModes_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IVMRDeinterlaceControl9_GetDeinterlaceModeCaps_Proxy( + IVMRDeinterlaceControl9 * This, + /* [in] */ LPGUID lpDeinterlaceMode, + /* [in] */ VMR9VideoDesc *lpVideoDescription, + /* [out] */ VMR9DeinterlaceCaps *lpDeinterlaceCaps); + + +void __RPC_STUB IVMRDeinterlaceControl9_GetDeinterlaceModeCaps_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IVMRDeinterlaceControl9_GetDeinterlaceMode_Proxy( + IVMRDeinterlaceControl9 * This, + /* [in] */ DWORD dwStreamID, + /* [out] */ LPGUID lpDeinterlaceMode); + + +void __RPC_STUB IVMRDeinterlaceControl9_GetDeinterlaceMode_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IVMRDeinterlaceControl9_SetDeinterlaceMode_Proxy( + IVMRDeinterlaceControl9 * This, + /* [in] */ DWORD dwStreamID, + /* [in] */ LPGUID lpDeinterlaceMode); + + +void __RPC_STUB IVMRDeinterlaceControl9_SetDeinterlaceMode_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IVMRDeinterlaceControl9_GetDeinterlacePrefs_Proxy( + IVMRDeinterlaceControl9 * This, + /* [out] */ LPDWORD lpdwDeinterlacePrefs); + + +void __RPC_STUB IVMRDeinterlaceControl9_GetDeinterlacePrefs_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IVMRDeinterlaceControl9_SetDeinterlacePrefs_Proxy( + IVMRDeinterlaceControl9 * This, + /* [in] */ DWORD dwDeinterlacePrefs); + + +void __RPC_STUB IVMRDeinterlaceControl9_SetDeinterlacePrefs_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IVMRDeinterlaceControl9_GetActualDeinterlaceMode_Proxy( + IVMRDeinterlaceControl9 * This, + /* [in] */ DWORD dwStreamID, + /* [out] */ LPGUID lpDeinterlaceMode); + + +void __RPC_STUB IVMRDeinterlaceControl9_GetActualDeinterlaceMode_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IVMRDeinterlaceControl9_INTERFACE_DEFINED__ */ + + +/* interface __MIDL_itf_vmr9_0021 */ +/* [local] */ + +typedef struct _VMR9VideoStreamInfo + { + IDirect3DSurface9 *pddsVideoSurface; + DWORD dwWidth; + DWORD dwHeight; + DWORD dwStrmID; + FLOAT fAlpha; + VMR9NormalizedRect rNormal; + REFERENCE_TIME rtStart; + REFERENCE_TIME rtEnd; + VMR9_SampleFormat SampleFormat; + } VMR9VideoStreamInfo; + + + +extern RPC_IF_HANDLE __MIDL_itf_vmr9_0021_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_vmr9_0021_v0_0_s_ifspec; + +#ifndef __IVMRImageCompositor9_INTERFACE_DEFINED__ +#define __IVMRImageCompositor9_INTERFACE_DEFINED__ + +/* interface IVMRImageCompositor9 */ +/* [unique][helpstring][uuid][local][object][local] */ + + +EXTERN_C const IID IID_IVMRImageCompositor9; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("4a5c89eb-df51-4654-ac2a-e48e02bbabf6") + IVMRImageCompositor9 : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE InitCompositionDevice( + /* [in] */ IUnknown *pD3DDevice) = 0; + + virtual HRESULT STDMETHODCALLTYPE TermCompositionDevice( + /* [in] */ IUnknown *pD3DDevice) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetStreamMediaType( + /* [in] */ DWORD dwStrmID, + /* [in] */ AM_MEDIA_TYPE *pmt, + /* [in] */ BOOL fTexture) = 0; + + virtual HRESULT STDMETHODCALLTYPE CompositeImage( + /* [in] */ IUnknown *pD3DDevice, + /* [in] */ IDirect3DSurface9 *pddsRenderTarget, + /* [in] */ AM_MEDIA_TYPE *pmtRenderTarget, + /* [in] */ REFERENCE_TIME rtStart, + /* [in] */ REFERENCE_TIME rtEnd, + /* [in] */ D3DCOLOR dwClrBkGnd, + /* [in] */ VMR9VideoStreamInfo *pVideoStreamInfo, + /* [in] */ UINT cStreams) = 0; + + }; + +#else /* C style interface */ + + typedef struct IVMRImageCompositor9Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IVMRImageCompositor9 * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IVMRImageCompositor9 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IVMRImageCompositor9 * This); + + HRESULT ( STDMETHODCALLTYPE *InitCompositionDevice )( + IVMRImageCompositor9 * This, + /* [in] */ IUnknown *pD3DDevice); + + HRESULT ( STDMETHODCALLTYPE *TermCompositionDevice )( + IVMRImageCompositor9 * This, + /* [in] */ IUnknown *pD3DDevice); + + HRESULT ( STDMETHODCALLTYPE *SetStreamMediaType )( + IVMRImageCompositor9 * This, + /* [in] */ DWORD dwStrmID, + /* [in] */ AM_MEDIA_TYPE *pmt, + /* [in] */ BOOL fTexture); + + HRESULT ( STDMETHODCALLTYPE *CompositeImage )( + IVMRImageCompositor9 * This, + /* [in] */ IUnknown *pD3DDevice, + /* [in] */ IDirect3DSurface9 *pddsRenderTarget, + /* [in] */ AM_MEDIA_TYPE *pmtRenderTarget, + /* [in] */ REFERENCE_TIME rtStart, + /* [in] */ REFERENCE_TIME rtEnd, + /* [in] */ D3DCOLOR dwClrBkGnd, + /* [in] */ VMR9VideoStreamInfo *pVideoStreamInfo, + /* [in] */ UINT cStreams); + + END_INTERFACE + } IVMRImageCompositor9Vtbl; + + interface IVMRImageCompositor9 + { + CONST_VTBL struct IVMRImageCompositor9Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IVMRImageCompositor9_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define IVMRImageCompositor9_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define IVMRImageCompositor9_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define IVMRImageCompositor9_InitCompositionDevice(This,pD3DDevice) \ + (This)->lpVtbl -> InitCompositionDevice(This,pD3DDevice) + +#define IVMRImageCompositor9_TermCompositionDevice(This,pD3DDevice) \ + (This)->lpVtbl -> TermCompositionDevice(This,pD3DDevice) + +#define IVMRImageCompositor9_SetStreamMediaType(This,dwStrmID,pmt,fTexture) \ + (This)->lpVtbl -> SetStreamMediaType(This,dwStrmID,pmt,fTexture) + +#define IVMRImageCompositor9_CompositeImage(This,pD3DDevice,pddsRenderTarget,pmtRenderTarget,rtStart,rtEnd,dwClrBkGnd,pVideoStreamInfo,cStreams) \ + (This)->lpVtbl -> CompositeImage(This,pD3DDevice,pddsRenderTarget,pmtRenderTarget,rtStart,rtEnd,dwClrBkGnd,pVideoStreamInfo,cStreams) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +HRESULT STDMETHODCALLTYPE IVMRImageCompositor9_InitCompositionDevice_Proxy( + IVMRImageCompositor9 * This, + /* [in] */ IUnknown *pD3DDevice); + + +void __RPC_STUB IVMRImageCompositor9_InitCompositionDevice_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IVMRImageCompositor9_TermCompositionDevice_Proxy( + IVMRImageCompositor9 * This, + /* [in] */ IUnknown *pD3DDevice); + + +void __RPC_STUB IVMRImageCompositor9_TermCompositionDevice_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IVMRImageCompositor9_SetStreamMediaType_Proxy( + IVMRImageCompositor9 * This, + /* [in] */ DWORD dwStrmID, + /* [in] */ AM_MEDIA_TYPE *pmt, + /* [in] */ BOOL fTexture); + + +void __RPC_STUB IVMRImageCompositor9_SetStreamMediaType_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +HRESULT STDMETHODCALLTYPE IVMRImageCompositor9_CompositeImage_Proxy( + IVMRImageCompositor9 * This, + /* [in] */ IUnknown *pD3DDevice, + /* [in] */ IDirect3DSurface9 *pddsRenderTarget, + /* [in] */ AM_MEDIA_TYPE *pmtRenderTarget, + /* [in] */ REFERENCE_TIME rtStart, + /* [in] */ REFERENCE_TIME rtEnd, + /* [in] */ D3DCOLOR dwClrBkGnd, + /* [in] */ VMR9VideoStreamInfo *pVideoStreamInfo, + /* [in] */ UINT cStreams); + + +void __RPC_STUB IVMRImageCompositor9_CompositeImage_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IVMRImageCompositor9_INTERFACE_DEFINED__ */ + + +/* Additional Prototypes for ALL interfaces */ + +/* end of Additional Prototypes */ + +#ifdef __cplusplus +} +#endif + +#endif + + diff --git a/videoInputSrcAndDemos/libs/DShow/Include/vpconfig.h b/videoInputSrcAndDemos/libs/DShow/Include/vpconfig.h index c4046f0..776d99f 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/vpconfig.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/vpconfig.h @@ -1,135 +1,135 @@ -//------------------------------------------------------------------------------ -// File: VPConfig.h -// -// Desc: An interface exposed by the decoder to help it and the filter -// configuring the videoport to communicate. -// -// Copyright (c) 1992-2001, Microsoft Corporation. All rights reserved. -//------------------------------------------------------------------------------ - - -#ifndef __IVPConfig__ -#define __IVPConfig__ - -#ifdef __cplusplus -extern "C" { -#endif - -// IVPBaseConfig -DECLARE_INTERFACE_(IVPBaseConfig, IUnknown) -{ -public: - - // gets the various connection information structures (guid, portwidth) - // in an array of structures. If the pointer to the array is NULL, first - // parameter returns the total number of formats supported. - STDMETHOD (GetConnectInfo)(THIS_ - IN OUT LPDWORD pdwNumConnectInfo, - IN OUT LPDDVIDEOPORTCONNECT pddVPConnectInfo - ) PURE; - - // sets the connection entry chosen (0, 1, .. ,(dwNumProposedEntries-1)) - STDMETHOD (SetConnectInfo)(THIS_ - IN DWORD dwChosenEntry - ) PURE; - - // gets various data parameters, includes dimensionnal info - STDMETHOD (GetVPDataInfo)(THIS_ - IN OUT LPAMVPDATAINFO pamvpDataInfo - ) PURE; - - // retrives maximum pixels per second rate expected for a given - // format and a given scaling factor. If decoder does not support - // those scaling factors, then it gives the rate and the nearest - // scaling factors. - STDMETHOD (GetMaxPixelRate)(THIS_ - IN OUT LPAMVPSIZE pamvpSize, - OUT LPDWORD pdwMaxPixelsPerSecond - ) PURE; - - // informs the callee of the videoformats supported by the videoport - STDMETHOD (InformVPInputFormats)(THIS_ - IN DWORD dwNumFormats, - IN LPDDPIXELFORMAT pDDPixelFormats - ) PURE; - - // gets the various formats supported by the decoder in an array - // of structures. If the pointer to the array is NULL, first parameter - // returns the total number of formats supported. - STDMETHOD (GetVideoFormats)(THIS_ - IN OUT LPDWORD pdwNumFormats, - IN OUT LPDDPIXELFORMAT pddPixelFormats - ) PURE; - - // sets the format entry chosen (0, 1, .. ,(dwNumProposedEntries-1)) - STDMETHOD (SetVideoFormat)(THIS_ - IN DWORD dwChosenEntry - ) PURE; - - // asks the decoder to treat even fields like odd fields and visa versa - STDMETHOD (SetInvertPolarity)(THIS_ - ) PURE; - - // the mixer uses this function to determine if the callee wants - // the vpmixer to use its overlay surface and if so to get a pointer to it - STDMETHOD (GetOverlaySurface)(THIS_ - OUT LPDIRECTDRAWSURFACE* ppddOverlaySurface - ) PURE; - - // sets the direct draw kernel handle - STDMETHOD (SetDirectDrawKernelHandle)(THIS_ - IN ULONG_PTR dwDDKernelHandle - ) PURE; - - // sets the video port id - STDMETHOD (SetVideoPortID)(THIS_ - IN DWORD dwVideoPortID - ) PURE; - - // sets the direct draw surface kernel handle - STDMETHOD (SetDDSurfaceKernelHandles)(THIS_ - IN DWORD cHandles, - IN ULONG_PTR *rgDDKernelHandles - ) PURE; - - // Tells driver about surface created on its behalf by ovmixer/vbisurf and - // returned from videoport/ddraw. Should always return NOERROR or E_NOIMPL. - // dwPitch is the pitch of the surface (distance in pixels between the start - // pixels of two consecutive lines of the surface). (dwXOrigin, dwYOrigin) - // are the (X, Y) coordinates of the pixel at which valid data starts. - STDMETHOD (SetSurfaceParameters)(THIS_ - IN DWORD dwPitch, - IN DWORD dwXOrigin, - IN DWORD dwYOrigin - ) PURE; -}; - -// IVPConfig -DECLARE_INTERFACE_(IVPConfig, IVPBaseConfig) -{ -public: - // the mixer uses this function to determine if the callee wants - // the mixer to decimate VIDEO data at its own descrition - STDMETHOD (IsVPDecimationAllowed)(THIS_ - OUT LPBOOL pbIsDecimationAllowed - ) PURE; - - // sets the scaling factors. If decoder does not support these, - // then it sets the values to the nearest factors it can support - STDMETHOD (SetScalingFactors)(THIS_ - IN LPAMVPSIZE pamvpSize - ) PURE; -}; - -// IVPVBIConfig -DECLARE_INTERFACE_(IVPVBIConfig, IVPBaseConfig) -{ -public: -}; - -#ifdef __cplusplus -} -#endif - - -#endif // __IVPConfig__ +//------------------------------------------------------------------------------ +// File: VPConfig.h +// +// Desc: An interface exposed by the decoder to help it and the filter +// configuring the videoport to communicate. +// +// Copyright (c) 1992-2001, Microsoft Corporation. All rights reserved. +//------------------------------------------------------------------------------ + + +#ifndef __IVPConfig__ +#define __IVPConfig__ + +#ifdef __cplusplus +extern "C" { +#endif + +// IVPBaseConfig +DECLARE_INTERFACE_(IVPBaseConfig, IUnknown) +{ +public: + + // gets the various connection information structures (guid, portwidth) + // in an array of structures. If the pointer to the array is NULL, first + // parameter returns the total number of formats supported. + STDMETHOD (GetConnectInfo)(THIS_ + IN OUT LPDWORD pdwNumConnectInfo, + IN OUT LPDDVIDEOPORTCONNECT pddVPConnectInfo + ) PURE; + + // sets the connection entry chosen (0, 1, .. ,(dwNumProposedEntries-1)) + STDMETHOD (SetConnectInfo)(THIS_ + IN DWORD dwChosenEntry + ) PURE; + + // gets various data parameters, includes dimensionnal info + STDMETHOD (GetVPDataInfo)(THIS_ + IN OUT LPAMVPDATAINFO pamvpDataInfo + ) PURE; + + // retrives maximum pixels per second rate expected for a given + // format and a given scaling factor. If decoder does not support + // those scaling factors, then it gives the rate and the nearest + // scaling factors. + STDMETHOD (GetMaxPixelRate)(THIS_ + IN OUT LPAMVPSIZE pamvpSize, + OUT LPDWORD pdwMaxPixelsPerSecond + ) PURE; + + // informs the callee of the videoformats supported by the videoport + STDMETHOD (InformVPInputFormats)(THIS_ + IN DWORD dwNumFormats, + IN LPDDPIXELFORMAT pDDPixelFormats + ) PURE; + + // gets the various formats supported by the decoder in an array + // of structures. If the pointer to the array is NULL, first parameter + // returns the total number of formats supported. + STDMETHOD (GetVideoFormats)(THIS_ + IN OUT LPDWORD pdwNumFormats, + IN OUT LPDDPIXELFORMAT pddPixelFormats + ) PURE; + + // sets the format entry chosen (0, 1, .. ,(dwNumProposedEntries-1)) + STDMETHOD (SetVideoFormat)(THIS_ + IN DWORD dwChosenEntry + ) PURE; + + // asks the decoder to treat even fields like odd fields and visa versa + STDMETHOD (SetInvertPolarity)(THIS_ + ) PURE; + + // the mixer uses this function to determine if the callee wants + // the vpmixer to use its overlay surface and if so to get a pointer to it + STDMETHOD (GetOverlaySurface)(THIS_ + OUT LPDIRECTDRAWSURFACE* ppddOverlaySurface + ) PURE; + + // sets the direct draw kernel handle + STDMETHOD (SetDirectDrawKernelHandle)(THIS_ + IN ULONG_PTR dwDDKernelHandle + ) PURE; + + // sets the video port id + STDMETHOD (SetVideoPortID)(THIS_ + IN DWORD dwVideoPortID + ) PURE; + + // sets the direct draw surface kernel handle + STDMETHOD (SetDDSurfaceKernelHandles)(THIS_ + IN DWORD cHandles, + IN ULONG_PTR *rgDDKernelHandles + ) PURE; + + // Tells driver about surface created on its behalf by ovmixer/vbisurf and + // returned from videoport/ddraw. Should always return NOERROR or E_NOIMPL. + // dwPitch is the pitch of the surface (distance in pixels between the start + // pixels of two consecutive lines of the surface). (dwXOrigin, dwYOrigin) + // are the (X, Y) coordinates of the pixel at which valid data starts. + STDMETHOD (SetSurfaceParameters)(THIS_ + IN DWORD dwPitch, + IN DWORD dwXOrigin, + IN DWORD dwYOrigin + ) PURE; +}; + +// IVPConfig +DECLARE_INTERFACE_(IVPConfig, IVPBaseConfig) +{ +public: + // the mixer uses this function to determine if the callee wants + // the mixer to decimate VIDEO data at its own descrition + STDMETHOD (IsVPDecimationAllowed)(THIS_ + OUT LPBOOL pbIsDecimationAllowed + ) PURE; + + // sets the scaling factors. If decoder does not support these, + // then it sets the values to the nearest factors it can support + STDMETHOD (SetScalingFactors)(THIS_ + IN LPAMVPSIZE pamvpSize + ) PURE; +}; + +// IVPVBIConfig +DECLARE_INTERFACE_(IVPVBIConfig, IVPBaseConfig) +{ +public: +}; + +#ifdef __cplusplus +} +#endif + + +#endif // __IVPConfig__ diff --git a/videoInputSrcAndDemos/libs/DShow/Include/vpnotify.h b/videoInputSrcAndDemos/libs/DShow/Include/vpnotify.h index 48f4edd..2e1d1b6 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/vpnotify.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/vpnotify.h @@ -1,92 +1,92 @@ -//------------------------------------------------------------------------------ -// File: VPNotify.h -// -// Desc: -// -// Copyright (c) 1997-2001, Microsoft Corporation. All rights reserved. -//------------------------------------------------------------------------------ - - -#ifndef __IVPNotify__ -#define __IVPNotify__ - -#ifdef __cplusplus -extern "C" { -#endif - -// interface IVPBaseNotify -DECLARE_INTERFACE_(IVPBaseNotify, IUnknown) -{ -public: - // this function initializes the reconnection to the decoder. - STDMETHOD (RenegotiateVPParameters)(THIS_ - ) PURE; - -}; - -// interface IVPNotify -DECLARE_INTERFACE_(IVPNotify, IVPBaseNotify) -{ -public: - // function to set the mode (bob, weave etc) - STDMETHOD (SetDeinterlaceMode)(THIS_ - IN AMVP_MODE mode - ) PURE; - - // function to get the mode (bob, weave etc) - STDMETHOD (GetDeinterlaceMode)(THIS_ - OUT AMVP_MODE *pMode - ) PURE; -}; - -// interface IVPNotify -DECLARE_INTERFACE_(IVPNotify2, IVPNotify) -{ -public: -// function to set the mode (bob, weave etc) - STDMETHOD (SetVPSyncMaster)(THIS_ - IN BOOL bVPSyncMaster - ) PURE; - - // function to get the mode (bob, weave etc) - STDMETHOD (GetVPSyncMaster)(THIS_ - OUT BOOL *pbVPSyncMaster - ) PURE; - - /* - // this function sets the directdraw surface that the mixer is supposed to use. - STDMETHOD (SetDirectDrawSurface)(THIS_ - IN LPDIRECTDRAWSURFACE pDirectDrawSurface - ) PURE; - - // this function gets the directdraw surface that the mixer is using - STDMETHOD (GetDirectDrawSurface)(THIS_ - OUT LPDIRECTDRAWSURFACE *ppDirectDrawSurface - ) PURE; - - // this functions sets the color-controls, if the chip supports it. - STDMETHOD (SetVPColorControls)(THIS_ - IN LPDDCOLORCONTROL pColorControl - ) PURE; - - // this functions also returns the capability of the hardware in the dwFlags - // value of the struct. - STDMETHOD (GetVPColorControls)(THIS_ - OUT LPDDCOLORCONTROL *ppColorControl - ) PURE; - */ -}; - - -// interface IVPVBINotify -DECLARE_INTERFACE_(IVPVBINotify, IVPBaseNotify) -{ -public: -}; - -#ifdef __cplusplus -} -#endif - - -#endif // __IVPNotify__ +//------------------------------------------------------------------------------ +// File: VPNotify.h +// +// Desc: +// +// Copyright (c) 1997-2001, Microsoft Corporation. All rights reserved. +//------------------------------------------------------------------------------ + + +#ifndef __IVPNotify__ +#define __IVPNotify__ + +#ifdef __cplusplus +extern "C" { +#endif + +// interface IVPBaseNotify +DECLARE_INTERFACE_(IVPBaseNotify, IUnknown) +{ +public: + // this function initializes the reconnection to the decoder. + STDMETHOD (RenegotiateVPParameters)(THIS_ + ) PURE; + +}; + +// interface IVPNotify +DECLARE_INTERFACE_(IVPNotify, IVPBaseNotify) +{ +public: + // function to set the mode (bob, weave etc) + STDMETHOD (SetDeinterlaceMode)(THIS_ + IN AMVP_MODE mode + ) PURE; + + // function to get the mode (bob, weave etc) + STDMETHOD (GetDeinterlaceMode)(THIS_ + OUT AMVP_MODE *pMode + ) PURE; +}; + +// interface IVPNotify +DECLARE_INTERFACE_(IVPNotify2, IVPNotify) +{ +public: +// function to set the mode (bob, weave etc) + STDMETHOD (SetVPSyncMaster)(THIS_ + IN BOOL bVPSyncMaster + ) PURE; + + // function to get the mode (bob, weave etc) + STDMETHOD (GetVPSyncMaster)(THIS_ + OUT BOOL *pbVPSyncMaster + ) PURE; + + /* + // this function sets the directdraw surface that the mixer is supposed to use. + STDMETHOD (SetDirectDrawSurface)(THIS_ + IN LPDIRECTDRAWSURFACE pDirectDrawSurface + ) PURE; + + // this function gets the directdraw surface that the mixer is using + STDMETHOD (GetDirectDrawSurface)(THIS_ + OUT LPDIRECTDRAWSURFACE *ppDirectDrawSurface + ) PURE; + + // this functions sets the color-controls, if the chip supports it. + STDMETHOD (SetVPColorControls)(THIS_ + IN LPDDCOLORCONTROL pColorControl + ) PURE; + + // this functions also returns the capability of the hardware in the dwFlags + // value of the struct. + STDMETHOD (GetVPColorControls)(THIS_ + OUT LPDDCOLORCONTROL *ppColorControl + ) PURE; + */ +}; + + +// interface IVPVBINotify +DECLARE_INTERFACE_(IVPVBINotify, IVPBaseNotify) +{ +public: +}; + +#ifdef __cplusplus +} +#endif + + +#endif // __IVPNotify__ diff --git a/videoInputSrcAndDemos/libs/DShow/Include/vptype.h b/videoInputSrcAndDemos/libs/DShow/Include/vptype.h index 138724b..b03baae 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/vptype.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/vptype.h @@ -1,78 +1,78 @@ -//------------------------------------------------------------------------------ -// File: VPType.h -// -// Desc: This file includes all the data structures defined for the IVPConfig -// interface. -// -// Copyright (c) 1997-2001, Microsoft Corporation. All rights reserved. -//------------------------------------------------------------------------------ - - -#ifndef __IVPType__ -#define __IVPType__ - -#ifdef __cplusplus -extern "C" { -#endif - - // enum to specify the criterion, which the vpmixer is supposed to use - // in order to select the video format - typedef enum _AMVP_SELECT_FORMAT_BY - { - AMVP_DO_NOT_CARE, - AMVP_BEST_BANDWIDTH, - AMVP_INPUT_SAME_AS_OUTPUT - } AMVP_SELECT_FORMAT_BY; - - // enum to specify the various mode - typedef enum _AMVP_MODE - { - AMVP_MODE_WEAVE, - AMVP_MODE_BOBINTERLEAVED, - AMVP_MODE_BOBNONINTERLEAVED, - AMVP_MODE_SKIPEVEN, - AMVP_MODE_SKIPODD - } AMVP_MODE; - - // struct to specify the width and height. The context could be anything - // such as scaling cropping etc. - typedef struct _AMVPSIZE - { - DWORD dwWidth; // the width - DWORD dwHeight; // the height - } AMVPSIZE, *LPAMVPSIZE; - - // struct to specify the dimensional characteristics of the input stream - typedef struct _AMVPDIMINFO - { - DWORD dwFieldWidth; // Field height of the data - DWORD dwFieldHeight; // Field width of the data - DWORD dwVBIWidth; // Width of the VBI data - DWORD dwVBIHeight; // Height of the VBI data - RECT rcValidRegion; // The vaild rectangle, used for cropping - } AMVPDIMINFO, *LPAMVPDIMINFO; - - // struct to specify the various data specific characteristics of the input stream - typedef struct _AMVPDATAINFO - { - DWORD dwSize; // Size of the struct - DWORD dwMicrosecondsPerField; // Time taken by each field - AMVPDIMINFO amvpDimInfo; // Dimensional Information - DWORD dwPictAspectRatioX; // X dimension of Picture Aspect Ratio - DWORD dwPictAspectRatioY; // Y dimension of Picture Aspect Ratio - BOOL bEnableDoubleClock; // Videoport should enable double clocking - BOOL bEnableVACT; // Videoport should use an external VACT signal - BOOL bDataIsInterlaced; // Indicates that the signal is interlaced - LONG lHalfLinesOdd; // number of halflines in the odd field - BOOL bFieldPolarityInverted; // Device inverts the polarity by default - DWORD dwNumLinesInVREF; // Number of lines of data in VREF - LONG lHalfLinesEven; // number of halflines in the even field - DWORD dwReserved1; // Reserved for future use - } AMVPDATAINFO, *LPAMVPDATAINFO; - - -#ifdef __cplusplus -} -#endif - -#endif // __IVPType__ +//------------------------------------------------------------------------------ +// File: VPType.h +// +// Desc: This file includes all the data structures defined for the IVPConfig +// interface. +// +// Copyright (c) 1997-2001, Microsoft Corporation. All rights reserved. +//------------------------------------------------------------------------------ + + +#ifndef __IVPType__ +#define __IVPType__ + +#ifdef __cplusplus +extern "C" { +#endif + + // enum to specify the criterion, which the vpmixer is supposed to use + // in order to select the video format + typedef enum _AMVP_SELECT_FORMAT_BY + { + AMVP_DO_NOT_CARE, + AMVP_BEST_BANDWIDTH, + AMVP_INPUT_SAME_AS_OUTPUT + } AMVP_SELECT_FORMAT_BY; + + // enum to specify the various mode + typedef enum _AMVP_MODE + { + AMVP_MODE_WEAVE, + AMVP_MODE_BOBINTERLEAVED, + AMVP_MODE_BOBNONINTERLEAVED, + AMVP_MODE_SKIPEVEN, + AMVP_MODE_SKIPODD + } AMVP_MODE; + + // struct to specify the width and height. The context could be anything + // such as scaling cropping etc. + typedef struct _AMVPSIZE + { + DWORD dwWidth; // the width + DWORD dwHeight; // the height + } AMVPSIZE, *LPAMVPSIZE; + + // struct to specify the dimensional characteristics of the input stream + typedef struct _AMVPDIMINFO + { + DWORD dwFieldWidth; // Field height of the data + DWORD dwFieldHeight; // Field width of the data + DWORD dwVBIWidth; // Width of the VBI data + DWORD dwVBIHeight; // Height of the VBI data + RECT rcValidRegion; // The vaild rectangle, used for cropping + } AMVPDIMINFO, *LPAMVPDIMINFO; + + // struct to specify the various data specific characteristics of the input stream + typedef struct _AMVPDATAINFO + { + DWORD dwSize; // Size of the struct + DWORD dwMicrosecondsPerField; // Time taken by each field + AMVPDIMINFO amvpDimInfo; // Dimensional Information + DWORD dwPictAspectRatioX; // X dimension of Picture Aspect Ratio + DWORD dwPictAspectRatioY; // Y dimension of Picture Aspect Ratio + BOOL bEnableDoubleClock; // Videoport should enable double clocking + BOOL bEnableVACT; // Videoport should use an external VACT signal + BOOL bDataIsInterlaced; // Indicates that the signal is interlaced + LONG lHalfLinesOdd; // number of halflines in the odd field + BOOL bFieldPolarityInverted; // Device inverts the polarity by default + DWORD dwNumLinesInVREF; // Number of lines of data in VREF + LONG lHalfLinesEven; // number of halflines in the even field + DWORD dwReserved1; // Reserved for future use + } AMVPDATAINFO, *LPAMVPDATAINFO; + + +#ifdef __cplusplus +} +#endif + +#endif // __IVPType__ diff --git a/videoInputSrcAndDemos/libs/DShow/Include/vtrans.h b/videoInputSrcAndDemos/libs/DShow/Include/vtrans.h index a9c1d6b..05a8aef 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/vtrans.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/vtrans.h @@ -1,143 +1,143 @@ -//------------------------------------------------------------------------------ -// File: VTrans.h -// -// Desc: DirectShow base classes - defines a video transform class. -// -// Copyright (c) Microsoft Corporation. All rights reserved. -//------------------------------------------------------------------------------ - - -// This class is derived from CTransformFilter, but is specialised to handle -// the requirements of video quality control by frame dropping. -// This is a non-in-place transform, (i.e. it copies the data) such as a decoder. - -class CVideoTransformFilter : public CTransformFilter -{ - public: - - CVideoTransformFilter(TCHAR *, LPUNKNOWN, REFCLSID clsid); - ~CVideoTransformFilter(); - HRESULT EndFlush(); - - // ================================================================= - // ----- override these bits --------------------------------------- - // ================================================================= - // The following methods are in CTransformFilter which is inherited. - // They are mentioned here for completeness - // - // These MUST be supplied in a derived class - // - // NOTE: - // virtual HRESULT Transform(IMediaSample * pIn, IMediaSample *pOut); - // virtual HRESULT CheckInputType(const CMediaType* mtIn) PURE; - // virtual HRESULT CheckTransform - // (const CMediaType* mtIn, const CMediaType* mtOut) PURE; - // static CCOMObject * CreateInstance(LPUNKNOWN, HRESULT *); - // virtual HRESULT DecideBufferSize - // (IMemAllocator * pAllocator, ALLOCATOR_PROPERTIES *pprop) PURE; - // virtual HRESULT GetMediaType(int iPosition, CMediaType *pMediaType) PURE; - // - // These MAY also be overridden - // - // virtual HRESULT StopStreaming(); - // virtual HRESULT SetMediaType(PIN_DIRECTION direction,const CMediaType *pmt); - // virtual HRESULT CheckConnect(PIN_DIRECTION dir,IPin *pPin); - // virtual HRESULT BreakConnect(PIN_DIRECTION dir); - // virtual HRESULT CompleteConnect(PIN_DIRECTION direction,IPin *pReceivePin); - // virtual HRESULT EndOfStream(void); - // virtual HRESULT BeginFlush(void); - // virtual HRESULT EndFlush(void); - // virtual HRESULT NewSegment - // (REFERENCE_TIME tStart,REFERENCE_TIME tStop,double dRate); -#ifdef PERF - - // If you override this - ensure that you register all these ids - // as well as any of your own, - virtual void RegisterPerfId() { - m_idSkip = MSR_REGISTER(TEXT("Video Transform Skip frame")); - m_idFrameType = MSR_REGISTER(TEXT("Video transform frame type")); - m_idLate = MSR_REGISTER(TEXT("Video Transform Lateness")); - m_idTimeTillKey = MSR_REGISTER(TEXT("Video Transform Estd. time to next key")); - CTransformFilter::RegisterPerfId(); - } -#endif - - protected: - - // =========== QUALITY MANAGEMENT IMPLEMENTATION ======================== - // Frames are assumed to come in three types: - // Type 1: an AVI key frame or an MPEG I frame. - // This frame can be decoded with no history. - // Dropping this frame means that no further frame can be decoded - // until the next type 1 frame. - // Type 1 frames are sync points. - // Type 2: an AVI non-key frame or an MPEG P frame. - // This frame cannot be decoded unless the previous type 1 frame was - // decoded and all type 2 frames since have been decoded. - // Dropping this frame means that no further frame can be decoded - // until the next type 1 frame. - // Type 3: An MPEG B frame. - // This frame cannot be decoded unless the previous type 1 or 2 frame - // has been decoded AND the subsequent type 1 or 2 frame has also - // been decoded. (This requires decoding the frames out of sequence). - // Dropping this frame affects no other frames. This implementation - // does not allow for these. All non-sync-point frames are treated - // as being type 2. - // - // The spacing of frames of type 1 in a file is not guaranteed. There MUST - // be a type 1 frame at (well, near) the start of the file in order to start - // decoding at all. After that there could be one every half second or so, - // there could be one at the start of each scene (aka "cut", "shot") or - // there could be no more at all. - // If there is only a single type 1 frame then NO FRAMES CAN BE DROPPED - // without losing all the rest of the movie. There is no way to tell whether - // this is the case, so we find that we are in the gambling business. - // To try to improve the odds, we record the greatest interval between type 1s - // that we have seen and we bet on things being no worse than this in the - // future. - - // You can tell if it's a type 1 frame by calling IsSyncPoint(). - // there is no architected way to test for a type 3, so you should override - // the quality management here if you have B-frames. - - int m_nKeyFramePeriod; // the largest observed interval between type 1 frames - // 1 means every frame is type 1, 2 means every other. - - int m_nFramesSinceKeyFrame; // Used to count frames since the last type 1. - // becomes the new m_nKeyFramePeriod if greater. - - BOOL m_bSkipping; // we are skipping to the next type 1 frame - -#ifdef PERF - int m_idFrameType; // MSR id Frame type. 1=Key, 2="non-key" - int m_idSkip; // MSR id skipping - int m_idLate; // MSR id lateness - int m_idTimeTillKey; // MSR id for guessed time till next key frame. -#endif - - virtual HRESULT StartStreaming(); - - HRESULT AbortPlayback(HRESULT hr); // if something bad happens - - HRESULT Receive(IMediaSample *pSample); - - HRESULT AlterQuality(Quality q); - - BOOL ShouldSkipFrame(IMediaSample * pIn); - - int m_itrLate; // lateness from last Quality message - // (this overflows at 214 secs late). - int m_tDecodeStart; // timeGetTime when decode started. - int m_itrAvgDecode; // Average decode time in reference units. - - BOOL m_bNoSkip; // debug - no skipping. - - // We send an EC_QUALITY_CHANGE notification to the app if we have to degrade. - // We send one when we start degrading, not one for every frame, this means - // we track whether we've sent one yet. - BOOL m_bQualityChanged; - - // When non-zero, don't pass anything to renderer until next keyframe - // If there are few keys, give up and eventually draw something - int m_nWaitForKey; -}; +//------------------------------------------------------------------------------ +// File: VTrans.h +// +// Desc: DirectShow base classes - defines a video transform class. +// +// Copyright (c) Microsoft Corporation. All rights reserved. +//------------------------------------------------------------------------------ + + +// This class is derived from CTransformFilter, but is specialised to handle +// the requirements of video quality control by frame dropping. +// This is a non-in-place transform, (i.e. it copies the data) such as a decoder. + +class CVideoTransformFilter : public CTransformFilter +{ + public: + + CVideoTransformFilter(TCHAR *, LPUNKNOWN, REFCLSID clsid); + ~CVideoTransformFilter(); + HRESULT EndFlush(); + + // ================================================================= + // ----- override these bits --------------------------------------- + // ================================================================= + // The following methods are in CTransformFilter which is inherited. + // They are mentioned here for completeness + // + // These MUST be supplied in a derived class + // + // NOTE: + // virtual HRESULT Transform(IMediaSample * pIn, IMediaSample *pOut); + // virtual HRESULT CheckInputType(const CMediaType* mtIn) PURE; + // virtual HRESULT CheckTransform + // (const CMediaType* mtIn, const CMediaType* mtOut) PURE; + // static CCOMObject * CreateInstance(LPUNKNOWN, HRESULT *); + // virtual HRESULT DecideBufferSize + // (IMemAllocator * pAllocator, ALLOCATOR_PROPERTIES *pprop) PURE; + // virtual HRESULT GetMediaType(int iPosition, CMediaType *pMediaType) PURE; + // + // These MAY also be overridden + // + // virtual HRESULT StopStreaming(); + // virtual HRESULT SetMediaType(PIN_DIRECTION direction,const CMediaType *pmt); + // virtual HRESULT CheckConnect(PIN_DIRECTION dir,IPin *pPin); + // virtual HRESULT BreakConnect(PIN_DIRECTION dir); + // virtual HRESULT CompleteConnect(PIN_DIRECTION direction,IPin *pReceivePin); + // virtual HRESULT EndOfStream(void); + // virtual HRESULT BeginFlush(void); + // virtual HRESULT EndFlush(void); + // virtual HRESULT NewSegment + // (REFERENCE_TIME tStart,REFERENCE_TIME tStop,double dRate); +#ifdef PERF + + // If you override this - ensure that you register all these ids + // as well as any of your own, + virtual void RegisterPerfId() { + m_idSkip = MSR_REGISTER(TEXT("Video Transform Skip frame")); + m_idFrameType = MSR_REGISTER(TEXT("Video transform frame type")); + m_idLate = MSR_REGISTER(TEXT("Video Transform Lateness")); + m_idTimeTillKey = MSR_REGISTER(TEXT("Video Transform Estd. time to next key")); + CTransformFilter::RegisterPerfId(); + } +#endif + + protected: + + // =========== QUALITY MANAGEMENT IMPLEMENTATION ======================== + // Frames are assumed to come in three types: + // Type 1: an AVI key frame or an MPEG I frame. + // This frame can be decoded with no history. + // Dropping this frame means that no further frame can be decoded + // until the next type 1 frame. + // Type 1 frames are sync points. + // Type 2: an AVI non-key frame or an MPEG P frame. + // This frame cannot be decoded unless the previous type 1 frame was + // decoded and all type 2 frames since have been decoded. + // Dropping this frame means that no further frame can be decoded + // until the next type 1 frame. + // Type 3: An MPEG B frame. + // This frame cannot be decoded unless the previous type 1 or 2 frame + // has been decoded AND the subsequent type 1 or 2 frame has also + // been decoded. (This requires decoding the frames out of sequence). + // Dropping this frame affects no other frames. This implementation + // does not allow for these. All non-sync-point frames are treated + // as being type 2. + // + // The spacing of frames of type 1 in a file is not guaranteed. There MUST + // be a type 1 frame at (well, near) the start of the file in order to start + // decoding at all. After that there could be one every half second or so, + // there could be one at the start of each scene (aka "cut", "shot") or + // there could be no more at all. + // If there is only a single type 1 frame then NO FRAMES CAN BE DROPPED + // without losing all the rest of the movie. There is no way to tell whether + // this is the case, so we find that we are in the gambling business. + // To try to improve the odds, we record the greatest interval between type 1s + // that we have seen and we bet on things being no worse than this in the + // future. + + // You can tell if it's a type 1 frame by calling IsSyncPoint(). + // there is no architected way to test for a type 3, so you should override + // the quality management here if you have B-frames. + + int m_nKeyFramePeriod; // the largest observed interval between type 1 frames + // 1 means every frame is type 1, 2 means every other. + + int m_nFramesSinceKeyFrame; // Used to count frames since the last type 1. + // becomes the new m_nKeyFramePeriod if greater. + + BOOL m_bSkipping; // we are skipping to the next type 1 frame + +#ifdef PERF + int m_idFrameType; // MSR id Frame type. 1=Key, 2="non-key" + int m_idSkip; // MSR id skipping + int m_idLate; // MSR id lateness + int m_idTimeTillKey; // MSR id for guessed time till next key frame. +#endif + + virtual HRESULT StartStreaming(); + + HRESULT AbortPlayback(HRESULT hr); // if something bad happens + + HRESULT Receive(IMediaSample *pSample); + + HRESULT AlterQuality(Quality q); + + BOOL ShouldSkipFrame(IMediaSample * pIn); + + int m_itrLate; // lateness from last Quality message + // (this overflows at 214 secs late). + int m_tDecodeStart; // timeGetTime when decode started. + int m_itrAvgDecode; // Average decode time in reference units. + + BOOL m_bNoSkip; // debug - no skipping. + + // We send an EC_QUALITY_CHANGE notification to the app if we have to degrade. + // We send one when we start degrading, not one for every frame, this means + // we track whether we've sent one yet. + BOOL m_bQualityChanged; + + // When non-zero, don't pass anything to renderer until next keyframe + // If there are few keys, give up and eventually draw something + int m_nWaitForKey; +}; diff --git a/videoInputSrcAndDemos/libs/DShow/Include/winctrl.h b/videoInputSrcAndDemos/libs/DShow/Include/winctrl.h index c3e18da..a7c7f5c 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/winctrl.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/winctrl.h @@ -1,224 +1,224 @@ -//------------------------------------------------------------------------------ -// File: WinCtrl.h -// -// Desc: DirectShow base classes - defines classes for video control -// interfaces. -// -// Copyright (c) Microsoft Corporation. All rights reserved. -//------------------------------------------------------------------------------ - - -#ifndef __WINCTRL__ -#define __WINCTRL__ - -#define ABSOL(x) (x < 0 ? -x : x) -#define NEGAT(x) (x > 0 ? -x : x) - -// Helper -BOOL WINAPI PossiblyEatMessage(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam); - -class CBaseControlWindow : public CBaseVideoWindow, public CBaseWindow -{ -protected: - - CBaseFilter *m_pFilter; // Pointer to owning media filter - CBasePin *m_pPin; // Controls media types for connection - CCritSec *m_pInterfaceLock; // Externally defined critical section - COLORREF m_BorderColour; // Current window border colour - BOOL m_bAutoShow; // What happens when the state changes - HWND m_hwndOwner; // Owner window that we optionally have - HWND m_hwndDrain; // HWND to post any messages received - BOOL m_bCursorHidden; // Should we hide the window cursor - -public: - - // Internal methods for other objects to get information out - - HRESULT DoSetWindowStyle(long Style,long WindowLong); - HRESULT DoGetWindowStyle(long *pStyle,long WindowLong); - BOOL IsAutoShowEnabled() { return m_bAutoShow; }; - COLORREF GetBorderColour() { return m_BorderColour; }; - HWND GetOwnerWindow() { return m_hwndOwner; }; - BOOL IsCursorHidden() { return m_bCursorHidden; }; - - inline BOOL PossiblyEatMessage(UINT uMsg, WPARAM wParam, LPARAM lParam) - { - return ::PossiblyEatMessage(m_hwndDrain, uMsg, wParam, lParam); - } - - // Derived classes must call this to set the pin the filter is using - // We don't have the pin passed in to the constructor (as we do with - // the CBaseFilter object) because filters typically create the - // pins dynamically when requested in CBaseFilter::GetPin. This can - // not be called from our constructor because is is a virtual method - - void SetControlWindowPin(CBasePin *pPin) { - m_pPin = pPin; - } - -public: - - CBaseControlWindow(CBaseFilter *pFilter, // Owning media filter - CCritSec *pInterfaceLock, // Locking object - TCHAR *pName, // Object description - LPUNKNOWN pUnk, // Normal COM ownership - HRESULT *phr); // OLE return code - - // These are the properties we support - - STDMETHODIMP put_Caption(BSTR strCaption); - STDMETHODIMP get_Caption(BSTR *pstrCaption); - STDMETHODIMP put_AutoShow(long AutoShow); - STDMETHODIMP get_AutoShow(long *AutoShow); - STDMETHODIMP put_WindowStyle(long WindowStyle); - STDMETHODIMP get_WindowStyle(long *pWindowStyle); - STDMETHODIMP put_WindowStyleEx(long WindowStyleEx); - STDMETHODIMP get_WindowStyleEx(long *pWindowStyleEx); - STDMETHODIMP put_WindowState(long WindowState); - STDMETHODIMP get_WindowState(long *pWindowState); - STDMETHODIMP put_BackgroundPalette(long BackgroundPalette); - STDMETHODIMP get_BackgroundPalette(long *pBackgroundPalette); - STDMETHODIMP put_Visible(long Visible); - STDMETHODIMP get_Visible(long *pVisible); - STDMETHODIMP put_Left(long Left); - STDMETHODIMP get_Left(long *pLeft); - STDMETHODIMP put_Width(long Width); - STDMETHODIMP get_Width(long *pWidth); - STDMETHODIMP put_Top(long Top); - STDMETHODIMP get_Top(long *pTop); - STDMETHODIMP put_Height(long Height); - STDMETHODIMP get_Height(long *pHeight); - STDMETHODIMP put_Owner(OAHWND Owner); - STDMETHODIMP get_Owner(OAHWND *Owner); - STDMETHODIMP put_MessageDrain(OAHWND Drain); - STDMETHODIMP get_MessageDrain(OAHWND *Drain); - STDMETHODIMP get_BorderColor(long *Color); - STDMETHODIMP put_BorderColor(long Color); - STDMETHODIMP get_FullScreenMode(long *FullScreenMode); - STDMETHODIMP put_FullScreenMode(long FullScreenMode); - - // And these are the methods - - STDMETHODIMP SetWindowForeground(long Focus); - STDMETHODIMP NotifyOwnerMessage(OAHWND hwnd,long uMsg,LONG_PTR wParam,LONG_PTR lParam); - STDMETHODIMP GetMinIdealImageSize(long *pWidth,long *pHeight); - STDMETHODIMP GetMaxIdealImageSize(long *pWidth,long *pHeight); - STDMETHODIMP SetWindowPosition(long Left,long Top,long Width,long Height); - STDMETHODIMP GetWindowPosition(long *pLeft,long *pTop,long *pWidth,long *pHeight); - STDMETHODIMP GetRestorePosition(long *pLeft,long *pTop,long *pWidth,long *pHeight); - STDMETHODIMP HideCursor(long HideCursor); - STDMETHODIMP IsCursorHidden(long *CursorHidden); -}; - -// This class implements the IBasicVideo interface - -class CBaseControlVideo : public CBaseBasicVideo -{ -protected: - - CBaseFilter *m_pFilter; // Pointer to owning media filter - CBasePin *m_pPin; // Controls media types for connection - CCritSec *m_pInterfaceLock; // Externally defined critical section - -public: - - // Derived classes must provide these for the implementation - - virtual HRESULT IsDefaultTargetRect() PURE; - virtual HRESULT SetDefaultTargetRect() PURE; - virtual HRESULT SetTargetRect(RECT *pTargetRect) PURE; - virtual HRESULT GetTargetRect(RECT *pTargetRect) PURE; - virtual HRESULT IsDefaultSourceRect() PURE; - virtual HRESULT SetDefaultSourceRect() PURE; - virtual HRESULT SetSourceRect(RECT *pSourceRect) PURE; - virtual HRESULT GetSourceRect(RECT *pSourceRect) PURE; - virtual HRESULT GetStaticImage(long *pBufferSize,long *pDIBImage) PURE; - - // Derived classes must override this to return a VIDEOINFO representing - // the video format. We cannot call IPin ConnectionMediaType to get this - // format because various filters dynamically change the type when using - // DirectDraw such that the format shows the position of the logical - // bitmap in a frame buffer surface, so the size might be returned as - // 1024x768 pixels instead of 320x240 which is the real video dimensions - - virtual VIDEOINFOHEADER *GetVideoFormat() PURE; - - // Helper functions for creating memory renderings of a DIB image - - HRESULT GetImageSize(VIDEOINFOHEADER *pVideoInfo, - LONG *pBufferSize, - RECT *pSourceRect); - - HRESULT CopyImage(IMediaSample *pMediaSample, - VIDEOINFOHEADER *pVideoInfo, - LONG *pBufferSize, - BYTE *pVideoImage, - RECT *pSourceRect); - - // Override this if you want notifying when the rectangles change - virtual HRESULT OnUpdateRectangles() { return NOERROR; }; - virtual HRESULT OnVideoSizeChange(); - - // Derived classes must call this to set the pin the filter is using - // We don't have the pin passed in to the constructor (as we do with - // the CBaseFilter object) because filters typically create the - // pins dynamically when requested in CBaseFilter::GetPin. This can - // not be called from our constructor because is is a virtual method - - void SetControlVideoPin(CBasePin *pPin) { - m_pPin = pPin; - } - - // Helper methods for checking rectangles - virtual HRESULT CheckSourceRect(RECT *pSourceRect); - virtual HRESULT CheckTargetRect(RECT *pTargetRect); - -public: - - CBaseControlVideo(CBaseFilter *pFilter, // Owning media filter - CCritSec *pInterfaceLock, // Serialise interface - TCHAR *pName, // Object description - LPUNKNOWN pUnk, // Normal COM ownership - HRESULT *phr); // OLE return code - - // These are the properties we support - - STDMETHODIMP get_AvgTimePerFrame(REFTIME *pAvgTimePerFrame); - STDMETHODIMP get_BitRate(long *pBitRate); - STDMETHODIMP get_BitErrorRate(long *pBitErrorRate); - STDMETHODIMP get_VideoWidth(long *pVideoWidth); - STDMETHODIMP get_VideoHeight(long *pVideoHeight); - STDMETHODIMP put_SourceLeft(long SourceLeft); - STDMETHODIMP get_SourceLeft(long *pSourceLeft); - STDMETHODIMP put_SourceWidth(long SourceWidth); - STDMETHODIMP get_SourceWidth(long *pSourceWidth); - STDMETHODIMP put_SourceTop(long SourceTop); - STDMETHODIMP get_SourceTop(long *pSourceTop); - STDMETHODIMP put_SourceHeight(long SourceHeight); - STDMETHODIMP get_SourceHeight(long *pSourceHeight); - STDMETHODIMP put_DestinationLeft(long DestinationLeft); - STDMETHODIMP get_DestinationLeft(long *pDestinationLeft); - STDMETHODIMP put_DestinationWidth(long DestinationWidth); - STDMETHODIMP get_DestinationWidth(long *pDestinationWidth); - STDMETHODIMP put_DestinationTop(long DestinationTop); - STDMETHODIMP get_DestinationTop(long *pDestinationTop); - STDMETHODIMP put_DestinationHeight(long DestinationHeight); - STDMETHODIMP get_DestinationHeight(long *pDestinationHeight); - - // And these are the methods - - STDMETHODIMP GetVideoSize(long *pWidth,long *pHeight); - STDMETHODIMP SetSourcePosition(long Left,long Top,long Width,long Height); - STDMETHODIMP GetSourcePosition(long *pLeft,long *pTop,long *pWidth,long *pHeight); - STDMETHODIMP GetVideoPaletteEntries(long StartIndex,long Entries,long *pRetrieved,long *pPalette); - STDMETHODIMP SetDefaultSourcePosition(); - STDMETHODIMP IsUsingDefaultSource(); - STDMETHODIMP SetDestinationPosition(long Left,long Top,long Width,long Height); - STDMETHODIMP GetDestinationPosition(long *pLeft,long *pTop,long *pWidth,long *pHeight); - STDMETHODIMP SetDefaultDestinationPosition(); - STDMETHODIMP IsUsingDefaultDestination(); - STDMETHODIMP GetCurrentImage(long *pBufferSize,long *pVideoImage); -}; - -#endif // __WINCTRL__ - +//------------------------------------------------------------------------------ +// File: WinCtrl.h +// +// Desc: DirectShow base classes - defines classes for video control +// interfaces. +// +// Copyright (c) Microsoft Corporation. All rights reserved. +//------------------------------------------------------------------------------ + + +#ifndef __WINCTRL__ +#define __WINCTRL__ + +#define ABSOL(x) (x < 0 ? -x : x) +#define NEGAT(x) (x > 0 ? -x : x) + +// Helper +BOOL WINAPI PossiblyEatMessage(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam); + +class CBaseControlWindow : public CBaseVideoWindow, public CBaseWindow +{ +protected: + + CBaseFilter *m_pFilter; // Pointer to owning media filter + CBasePin *m_pPin; // Controls media types for connection + CCritSec *m_pInterfaceLock; // Externally defined critical section + COLORREF m_BorderColour; // Current window border colour + BOOL m_bAutoShow; // What happens when the state changes + HWND m_hwndOwner; // Owner window that we optionally have + HWND m_hwndDrain; // HWND to post any messages received + BOOL m_bCursorHidden; // Should we hide the window cursor + +public: + + // Internal methods for other objects to get information out + + HRESULT DoSetWindowStyle(long Style,long WindowLong); + HRESULT DoGetWindowStyle(long *pStyle,long WindowLong); + BOOL IsAutoShowEnabled() { return m_bAutoShow; }; + COLORREF GetBorderColour() { return m_BorderColour; }; + HWND GetOwnerWindow() { return m_hwndOwner; }; + BOOL IsCursorHidden() { return m_bCursorHidden; }; + + inline BOOL PossiblyEatMessage(UINT uMsg, WPARAM wParam, LPARAM lParam) + { + return ::PossiblyEatMessage(m_hwndDrain, uMsg, wParam, lParam); + } + + // Derived classes must call this to set the pin the filter is using + // We don't have the pin passed in to the constructor (as we do with + // the CBaseFilter object) because filters typically create the + // pins dynamically when requested in CBaseFilter::GetPin. This can + // not be called from our constructor because is is a virtual method + + void SetControlWindowPin(CBasePin *pPin) { + m_pPin = pPin; + } + +public: + + CBaseControlWindow(CBaseFilter *pFilter, // Owning media filter + CCritSec *pInterfaceLock, // Locking object + TCHAR *pName, // Object description + LPUNKNOWN pUnk, // Normal COM ownership + HRESULT *phr); // OLE return code + + // These are the properties we support + + STDMETHODIMP put_Caption(BSTR strCaption); + STDMETHODIMP get_Caption(BSTR *pstrCaption); + STDMETHODIMP put_AutoShow(long AutoShow); + STDMETHODIMP get_AutoShow(long *AutoShow); + STDMETHODIMP put_WindowStyle(long WindowStyle); + STDMETHODIMP get_WindowStyle(long *pWindowStyle); + STDMETHODIMP put_WindowStyleEx(long WindowStyleEx); + STDMETHODIMP get_WindowStyleEx(long *pWindowStyleEx); + STDMETHODIMP put_WindowState(long WindowState); + STDMETHODIMP get_WindowState(long *pWindowState); + STDMETHODIMP put_BackgroundPalette(long BackgroundPalette); + STDMETHODIMP get_BackgroundPalette(long *pBackgroundPalette); + STDMETHODIMP put_Visible(long Visible); + STDMETHODIMP get_Visible(long *pVisible); + STDMETHODIMP put_Left(long Left); + STDMETHODIMP get_Left(long *pLeft); + STDMETHODIMP put_Width(long Width); + STDMETHODIMP get_Width(long *pWidth); + STDMETHODIMP put_Top(long Top); + STDMETHODIMP get_Top(long *pTop); + STDMETHODIMP put_Height(long Height); + STDMETHODIMP get_Height(long *pHeight); + STDMETHODIMP put_Owner(OAHWND Owner); + STDMETHODIMP get_Owner(OAHWND *Owner); + STDMETHODIMP put_MessageDrain(OAHWND Drain); + STDMETHODIMP get_MessageDrain(OAHWND *Drain); + STDMETHODIMP get_BorderColor(long *Color); + STDMETHODIMP put_BorderColor(long Color); + STDMETHODIMP get_FullScreenMode(long *FullScreenMode); + STDMETHODIMP put_FullScreenMode(long FullScreenMode); + + // And these are the methods + + STDMETHODIMP SetWindowForeground(long Focus); + STDMETHODIMP NotifyOwnerMessage(OAHWND hwnd,long uMsg,LONG_PTR wParam,LONG_PTR lParam); + STDMETHODIMP GetMinIdealImageSize(long *pWidth,long *pHeight); + STDMETHODIMP GetMaxIdealImageSize(long *pWidth,long *pHeight); + STDMETHODIMP SetWindowPosition(long Left,long Top,long Width,long Height); + STDMETHODIMP GetWindowPosition(long *pLeft,long *pTop,long *pWidth,long *pHeight); + STDMETHODIMP GetRestorePosition(long *pLeft,long *pTop,long *pWidth,long *pHeight); + STDMETHODIMP HideCursor(long HideCursor); + STDMETHODIMP IsCursorHidden(long *CursorHidden); +}; + +// This class implements the IBasicVideo interface + +class CBaseControlVideo : public CBaseBasicVideo +{ +protected: + + CBaseFilter *m_pFilter; // Pointer to owning media filter + CBasePin *m_pPin; // Controls media types for connection + CCritSec *m_pInterfaceLock; // Externally defined critical section + +public: + + // Derived classes must provide these for the implementation + + virtual HRESULT IsDefaultTargetRect() PURE; + virtual HRESULT SetDefaultTargetRect() PURE; + virtual HRESULT SetTargetRect(RECT *pTargetRect) PURE; + virtual HRESULT GetTargetRect(RECT *pTargetRect) PURE; + virtual HRESULT IsDefaultSourceRect() PURE; + virtual HRESULT SetDefaultSourceRect() PURE; + virtual HRESULT SetSourceRect(RECT *pSourceRect) PURE; + virtual HRESULT GetSourceRect(RECT *pSourceRect) PURE; + virtual HRESULT GetStaticImage(long *pBufferSize,long *pDIBImage) PURE; + + // Derived classes must override this to return a VIDEOINFO representing + // the video format. We cannot call IPin ConnectionMediaType to get this + // format because various filters dynamically change the type when using + // DirectDraw such that the format shows the position of the logical + // bitmap in a frame buffer surface, so the size might be returned as + // 1024x768 pixels instead of 320x240 which is the real video dimensions + + virtual VIDEOINFOHEADER *GetVideoFormat() PURE; + + // Helper functions for creating memory renderings of a DIB image + + HRESULT GetImageSize(VIDEOINFOHEADER *pVideoInfo, + LONG *pBufferSize, + RECT *pSourceRect); + + HRESULT CopyImage(IMediaSample *pMediaSample, + VIDEOINFOHEADER *pVideoInfo, + LONG *pBufferSize, + BYTE *pVideoImage, + RECT *pSourceRect); + + // Override this if you want notifying when the rectangles change + virtual HRESULT OnUpdateRectangles() { return NOERROR; }; + virtual HRESULT OnVideoSizeChange(); + + // Derived classes must call this to set the pin the filter is using + // We don't have the pin passed in to the constructor (as we do with + // the CBaseFilter object) because filters typically create the + // pins dynamically when requested in CBaseFilter::GetPin. This can + // not be called from our constructor because is is a virtual method + + void SetControlVideoPin(CBasePin *pPin) { + m_pPin = pPin; + } + + // Helper methods for checking rectangles + virtual HRESULT CheckSourceRect(RECT *pSourceRect); + virtual HRESULT CheckTargetRect(RECT *pTargetRect); + +public: + + CBaseControlVideo(CBaseFilter *pFilter, // Owning media filter + CCritSec *pInterfaceLock, // Serialise interface + TCHAR *pName, // Object description + LPUNKNOWN pUnk, // Normal COM ownership + HRESULT *phr); // OLE return code + + // These are the properties we support + + STDMETHODIMP get_AvgTimePerFrame(REFTIME *pAvgTimePerFrame); + STDMETHODIMP get_BitRate(long *pBitRate); + STDMETHODIMP get_BitErrorRate(long *pBitErrorRate); + STDMETHODIMP get_VideoWidth(long *pVideoWidth); + STDMETHODIMP get_VideoHeight(long *pVideoHeight); + STDMETHODIMP put_SourceLeft(long SourceLeft); + STDMETHODIMP get_SourceLeft(long *pSourceLeft); + STDMETHODIMP put_SourceWidth(long SourceWidth); + STDMETHODIMP get_SourceWidth(long *pSourceWidth); + STDMETHODIMP put_SourceTop(long SourceTop); + STDMETHODIMP get_SourceTop(long *pSourceTop); + STDMETHODIMP put_SourceHeight(long SourceHeight); + STDMETHODIMP get_SourceHeight(long *pSourceHeight); + STDMETHODIMP put_DestinationLeft(long DestinationLeft); + STDMETHODIMP get_DestinationLeft(long *pDestinationLeft); + STDMETHODIMP put_DestinationWidth(long DestinationWidth); + STDMETHODIMP get_DestinationWidth(long *pDestinationWidth); + STDMETHODIMP put_DestinationTop(long DestinationTop); + STDMETHODIMP get_DestinationTop(long *pDestinationTop); + STDMETHODIMP put_DestinationHeight(long DestinationHeight); + STDMETHODIMP get_DestinationHeight(long *pDestinationHeight); + + // And these are the methods + + STDMETHODIMP GetVideoSize(long *pWidth,long *pHeight); + STDMETHODIMP SetSourcePosition(long Left,long Top,long Width,long Height); + STDMETHODIMP GetSourcePosition(long *pLeft,long *pTop,long *pWidth,long *pHeight); + STDMETHODIMP GetVideoPaletteEntries(long StartIndex,long Entries,long *pRetrieved,long *pPalette); + STDMETHODIMP SetDefaultSourcePosition(); + STDMETHODIMP IsUsingDefaultSource(); + STDMETHODIMP SetDestinationPosition(long Left,long Top,long Width,long Height); + STDMETHODIMP GetDestinationPosition(long *pLeft,long *pTop,long *pWidth,long *pHeight); + STDMETHODIMP SetDefaultDestinationPosition(); + STDMETHODIMP IsUsingDefaultDestination(); + STDMETHODIMP GetCurrentImage(long *pBufferSize,long *pVideoImage); +}; + +#endif // __WINCTRL__ + diff --git a/videoInputSrcAndDemos/libs/DShow/Include/winutil.h b/videoInputSrcAndDemos/libs/DShow/Include/winutil.h index ffe3024..50f7bf3 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/winutil.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/winutil.h @@ -1,413 +1,413 @@ -//------------------------------------------------------------------------------ -// File: WinUtil.h -// -// Desc: DirectShow base classes - defines generic handler classes. -// -// Copyright (c) Microsoft Corporation. All rights reserved. -//------------------------------------------------------------------------------ - - -// Make sure that you call PrepareWindow to initialise the window after -// the object has been constructed. It is a separate method so that -// derived classes can override useful methods like MessageLoop. Also -// any derived class must call DoneWithWindow in its destructor. If it -// doesn't a message may be retrieved and call a derived class member -// function while a thread is executing the base class destructor code - -#ifndef __WINUTIL__ -#define __WINUTIL__ - -const int DEFWIDTH = 320; // Initial window width -const int DEFHEIGHT = 240; // Initial window height -const int CAPTION = 256; // Maximum length of caption -const int TIMELENGTH = 50; // Maximum length of times -const int PROFILESTR = 128; // Normal profile string -const WORD PALVERSION = 0x300; // GDI palette version -const LONG PALETTE_VERSION = (LONG) 1; // Initial palette version -const COLORREF VIDEO_COLOUR = 0; // Defaults to black background -const HANDLE hMEMORY = (HANDLE) (-1); // Says to open as memory file - -#define WIDTH(x) ((*(x)).right - (*(x)).left) -#define HEIGHT(x) ((*(x)).bottom - (*(x)).top) -#define SHOWSTAGE TEXT("WM_SHOWSTAGE") -#define SHOWSTAGETOP TEXT("WM_SHOWSTAGETOP") -#define REALIZEPALETTE TEXT("WM_REALIZEPALETTE") - -class AM_NOVTABLE CBaseWindow -{ -protected: - - HINSTANCE m_hInstance; // Global module instance handle - HWND m_hwnd; // Handle for our window - HDC m_hdc; // Device context for the window - LONG m_Width; // Client window width - LONG m_Height; // Client window height - BOOL m_bActivated; // Has the window been activated - LPTSTR m_pClassName; // Static string holding class name - DWORD m_ClassStyles; // Passed in to our constructor - DWORD m_WindowStyles; // Likewise the initial window styles - DWORD m_WindowStylesEx; // And the extended window styles - UINT m_ShowStageMessage; // Have the window shown with focus - UINT m_ShowStageTop; // Makes the window WS_EX_TOPMOST - UINT m_RealizePalette; // Makes us realize our new palette - HDC m_MemoryDC; // Used for fast BitBlt operations - HPALETTE m_hPalette; // Handle to any palette we may have - BYTE m_bNoRealize; // Don't realize palette now - BYTE m_bBackground; // Should we realise in background - BYTE m_bRealizing; // already realizing the palette - CCritSec m_WindowLock; // Serialise window object access - BOOL m_bDoGetDC; // Should this window get a DC - bool m_bDoPostToDestroy; // Use PostMessage to destroy - CCritSec m_PaletteLock; // This lock protects m_hPalette. - // It should be held anytime the - // program use the value of m_hPalette. - - // Maps windows message procedure into C++ methods - friend LRESULT CALLBACK WndProc(HWND hwnd, // Window handle - UINT uMsg, // Message ID - WPARAM wParam, // First parameter - LPARAM lParam); // Other parameter - - virtual LRESULT OnPaletteChange(HWND hwnd, UINT Message); - -public: - - CBaseWindow(BOOL bDoGetDC = TRUE, bool bPostToDestroy = false); - -#ifdef DEBUG - virtual ~CBaseWindow(); -#endif - - virtual HRESULT DoneWithWindow(); - virtual HRESULT PrepareWindow(); - virtual HRESULT InactivateWindow(); - virtual HRESULT ActivateWindow(); - virtual BOOL OnSize(LONG Width, LONG Height); - virtual BOOL OnClose(); - virtual RECT GetDefaultRect(); - virtual HRESULT UninitialiseWindow(); - virtual HRESULT InitialiseWindow(HWND hwnd); - - HRESULT CompleteConnect(); - HRESULT DoCreateWindow(); - - HRESULT PerformanceAlignWindow(); - HRESULT DoShowWindow(LONG ShowCmd); - void PaintWindow(BOOL bErase); - void DoSetWindowForeground(BOOL bFocus); - virtual HRESULT SetPalette(HPALETTE hPalette); - void SetRealize(BOOL bRealize) - { - m_bNoRealize = !bRealize; - } - - // Jump over to the window thread to set the current palette - HRESULT SetPalette(); - void UnsetPalette(void); - virtual HRESULT DoRealisePalette(BOOL bForceBackground = FALSE); - - void LockPaletteLock(); - void UnlockPaletteLock(); - - virtual BOOL PossiblyEatMessage(UINT uMsg, WPARAM wParam, LPARAM lParam) - { return FALSE; }; - - // Access our window information - - bool WindowExists(); - LONG GetWindowWidth(); - LONG GetWindowHeight(); - HWND GetWindowHWND(); - HDC GetMemoryHDC(); - HDC GetWindowHDC(); - - #ifdef DEBUG - HPALETTE GetPalette(); - #endif // DEBUG - - // This is the window procedure the derived object should override - - virtual LRESULT OnReceiveMessage(HWND hwnd, // Window handle - UINT uMsg, // Message ID - WPARAM wParam, // First parameter - LPARAM lParam); // Other parameter - - // Must be overriden to return class and window styles - - virtual LPTSTR GetClassWindowStyles( - DWORD *pClassStyles, // Class styles - DWORD *pWindowStyles, // Window styles - DWORD *pWindowStylesEx) PURE; // Extended styles -}; - - -// This helper class is entirely subservient to the owning CBaseWindow object -// All this object does is to split out the actual drawing operation from the -// main object (because it was becoming too large). We have a number of entry -// points to set things like the draw device contexts, to implement the actual -// drawing and to set the destination rectangle in the client window. We have -// no critical section locking in this class because we are used exclusively -// by the owning window object which looks after serialising calls into us - -// If you want to use this class make sure you call NotifyAllocator once the -// allocate has been agreed, also call NotifyMediaType with a pointer to a -// NON stack based CMediaType once that has been set (we keep a pointer to -// the original rather than taking a copy). When the palette changes call -// IncrementPaletteVersion (easiest thing to do is to also call this method -// in the SetMediaType method most filters implement). Finally before you -// start rendering anything call SetDrawContext so that we can get the HDCs -// for drawing from the CBaseWindow object we are given during construction - -class CDrawImage -{ -protected: - - CBaseWindow *m_pBaseWindow; // Owning video window object - CRefTime m_StartSample; // Start time for the current sample - CRefTime m_EndSample; // And likewise it's end sample time - HDC m_hdc; // Main window device context - HDC m_MemoryDC; // Offscreen draw device context - RECT m_TargetRect; // Target destination rectangle - RECT m_SourceRect; // Source image rectangle - BOOL m_bStretch; // Do we have to stretch the images - BOOL m_bUsingImageAllocator; // Are the samples shared DIBSECTIONs - CMediaType *m_pMediaType; // Pointer to the current format - int m_perfidRenderTime; // Time taken to render an image - LONG m_PaletteVersion; // Current palette version cookie - - // Draw the video images in the window - - void SlowRender(IMediaSample *pMediaSample); - void FastRender(IMediaSample *pMediaSample); - void DisplaySampleTimes(IMediaSample *pSample); - void UpdateColourTable(HDC hdc,BITMAPINFOHEADER *pbmi); - void SetStretchMode(); - -public: - - // Used to control the image drawing - - CDrawImage(CBaseWindow *pBaseWindow); - BOOL DrawImage(IMediaSample *pMediaSample); - BOOL DrawVideoImageHere(HDC hdc, IMediaSample *pMediaSample, - LPRECT lprcSrc, LPRECT lprcDst); - void SetDrawContext(); - void SetTargetRect(RECT *pTargetRect); - void SetSourceRect(RECT *pSourceRect); - void GetTargetRect(RECT *pTargetRect); - void GetSourceRect(RECT *pSourceRect); - virtual RECT ScaleSourceRect(const RECT *pSource); - - // Handle updating palettes as they change - - LONG GetPaletteVersion(); - void ResetPaletteVersion(); - void IncrementPaletteVersion(); - - // Tell us media types and allocator assignments - - void NotifyAllocator(BOOL bUsingImageAllocator); - void NotifyMediaType(CMediaType *pMediaType); - BOOL UsingImageAllocator(); - - // Called when we are about to draw an image - - void NotifyStartDraw() { - MSR_START(m_perfidRenderTime); - }; - - // Called when we complete an image rendering - - void NotifyEndDraw() { - MSR_STOP(m_perfidRenderTime); - }; -}; - - -// This is the structure used to keep information about each GDI DIB. All the -// samples we create from our allocator will have a DIBSECTION allocated to -// them. When we receive the sample we know we can BitBlt straight to an HDC - -typedef struct tagDIBDATA { - - LONG PaletteVersion; // Current palette version in use - DIBSECTION DibSection; // Details of DIB section allocated - HBITMAP hBitmap; // Handle to bitmap for drawing - HANDLE hMapping; // Handle to shared memory block - BYTE *pBase; // Pointer to base memory address - -} DIBDATA; - - -// This class inherits from CMediaSample and uses all of it's methods but it -// overrides the constructor to initialise itself with the DIBDATA structure -// When we come to render an IMediaSample we will know if we are using our own -// allocator, and if we are, we can cast the IMediaSample to a pointer to one -// of these are retrieve the DIB section information and hence the HBITMAP - -class CImageSample : public CMediaSample -{ -protected: - - DIBDATA m_DibData; // Information about the DIBSECTION - BOOL m_bInit; // Is the DIB information setup - -public: - - // Constructor - - CImageSample(CBaseAllocator *pAllocator, - TCHAR *pName, - HRESULT *phr, - LPBYTE pBuffer, - LONG length); - - // Maintain the DIB/DirectDraw state - - void SetDIBData(DIBDATA *pDibData); - DIBDATA *GetDIBData(); -}; - - -// This is an allocator based on the abstract CBaseAllocator base class that -// allocates sample buffers in shared memory. The number and size of these -// are determined when the output pin calls Prepare on us. The shared memory -// blocks are used in subsequent calls to GDI CreateDIBSection, once that -// has been done the output pin can fill the buffers with data which will -// then be handed to GDI through BitBlt calls and thereby remove one copy - -class CImageAllocator : public CBaseAllocator -{ -protected: - - CBaseFilter *m_pFilter; // Delegate reference counts to - CMediaType *m_pMediaType; // Pointer to the current format - - // Used to create and delete samples - - HRESULT Alloc(); - void Free(); - - // Manage the shared DIBSECTION and DCI/DirectDraw buffers - - HRESULT CreateDIB(LONG InSize,DIBDATA &DibData); - STDMETHODIMP CheckSizes(ALLOCATOR_PROPERTIES *pRequest); - virtual CImageSample *CreateImageSample(LPBYTE pData,LONG Length); - -public: - - // Constructor and destructor - - CImageAllocator(CBaseFilter *pFilter,TCHAR *pName,HRESULT *phr); -#ifdef DEBUG - ~CImageAllocator(); -#endif - - STDMETHODIMP_(ULONG) NonDelegatingAddRef(); - STDMETHODIMP_(ULONG) NonDelegatingRelease(); - void NotifyMediaType(CMediaType *pMediaType); - - // Agree the number of buffers to be used and their size - - STDMETHODIMP SetProperties( - ALLOCATOR_PROPERTIES *pRequest, - ALLOCATOR_PROPERTIES *pActual); -}; - - -// This class is a fairly specialised helper class for image renderers that -// have to create and manage palettes. The CBaseWindow class looks after -// realising palettes once they have been installed. This class can be used -// to create the palette handles from a media format (which must contain a -// VIDEOINFO structure in the format block). We try to make the palette an -// identity palette to maximise performance and also only change palettes -// if actually required to (we compare palette colours before updating). -// All the methods are virtual so that they can be overriden if so required - -class CImagePalette -{ -protected: - - CBaseWindow *m_pBaseWindow; // Window to realise palette in - CBaseFilter *m_pFilter; // Media filter to send events - CDrawImage *m_pDrawImage; // Object who will be drawing - HPALETTE m_hPalette; // The palette handle we own - -public: - - CImagePalette(CBaseFilter *pBaseFilter, - CBaseWindow *pBaseWindow, - CDrawImage *pDrawImage); - -#ifdef DEBUG - virtual ~CImagePalette(); -#endif - - static HPALETTE MakePalette(const VIDEOINFOHEADER *pVideoInfo, LPSTR szDevice); - HRESULT RemovePalette(); - static HRESULT MakeIdentityPalette(PALETTEENTRY *pEntry,INT iColours, LPSTR szDevice); - HRESULT CopyPalette(const CMediaType *pSrc,CMediaType *pDest); - BOOL ShouldUpdate(const VIDEOINFOHEADER *pNewInfo,const VIDEOINFOHEADER *pOldInfo); - HRESULT PreparePalette(const CMediaType *pmtNew,const CMediaType *pmtOld,LPSTR szDevice); - - BOOL DrawVideoImageHere(HDC hdc, IMediaSample *pMediaSample, LPRECT lprcSrc, LPRECT lprcDst) - { - return m_pDrawImage->DrawVideoImageHere(hdc, pMediaSample, lprcSrc,lprcDst); - } -}; - - -// Another helper class really for video based renderers. Most such renderers -// need to know what the display format is to some degree or another. This -// class initialises itself with the display format. The format can be asked -// for through GetDisplayFormat and various other accessor functions. If a -// filter detects a display format change (perhaps it gets a WM_DEVMODECHANGE -// message then it can call RefreshDisplayType to reset that format). Also -// many video renderers will want to check formats as they are proposed by -// source filters. This class provides methods to check formats and only -// accept those video formats that can be efficiently drawn using GDI calls - -class CImageDisplay : public CCritSec -{ -protected: - - // This holds the display format; biSize should not be too big, so we can - // safely use the VIDEOINFO structure - VIDEOINFO m_Display; - - static DWORD CountSetBits(const DWORD Field); - static DWORD CountPrefixBits(const DWORD Field); - static BOOL CheckBitFields(const VIDEOINFO *pInput); - -public: - - // Constructor and destructor - - CImageDisplay(); - - // Used to manage BITMAPINFOHEADERs and the display format - - const VIDEOINFO *GetDisplayFormat(); - HRESULT RefreshDisplayType(LPSTR szDeviceName); - static BOOL CheckHeaderValidity(const VIDEOINFO *pInput); - static BOOL CheckPaletteHeader(const VIDEOINFO *pInput); - BOOL IsPalettised(); - WORD GetDisplayDepth(); - - // Provide simple video format type checking - - HRESULT CheckMediaType(const CMediaType *pmtIn); - HRESULT CheckVideoType(const VIDEOINFO *pInput); - HRESULT UpdateFormat(VIDEOINFO *pVideoInfo); - const DWORD *GetBitMasks(const VIDEOINFO *pVideoInfo); - - BOOL GetColourMask(DWORD *pMaskRed, - DWORD *pMaskGreen, - DWORD *pMaskBlue); -}; - -// Convert a FORMAT_VideoInfo to FORMAT_VideoInfo2 -STDAPI ConvertVideoInfoToVideoInfo2(AM_MEDIA_TYPE *pmt); - -#endif // __WINUTIL__ - +//------------------------------------------------------------------------------ +// File: WinUtil.h +// +// Desc: DirectShow base classes - defines generic handler classes. +// +// Copyright (c) Microsoft Corporation. All rights reserved. +//------------------------------------------------------------------------------ + + +// Make sure that you call PrepareWindow to initialise the window after +// the object has been constructed. It is a separate method so that +// derived classes can override useful methods like MessageLoop. Also +// any derived class must call DoneWithWindow in its destructor. If it +// doesn't a message may be retrieved and call a derived class member +// function while a thread is executing the base class destructor code + +#ifndef __WINUTIL__ +#define __WINUTIL__ + +const int DEFWIDTH = 320; // Initial window width +const int DEFHEIGHT = 240; // Initial window height +const int CAPTION = 256; // Maximum length of caption +const int TIMELENGTH = 50; // Maximum length of times +const int PROFILESTR = 128; // Normal profile string +const WORD PALVERSION = 0x300; // GDI palette version +const LONG PALETTE_VERSION = (LONG) 1; // Initial palette version +const COLORREF VIDEO_COLOUR = 0; // Defaults to black background +const HANDLE hMEMORY = (HANDLE) (-1); // Says to open as memory file + +#define WIDTH(x) ((*(x)).right - (*(x)).left) +#define HEIGHT(x) ((*(x)).bottom - (*(x)).top) +#define SHOWSTAGE TEXT("WM_SHOWSTAGE") +#define SHOWSTAGETOP TEXT("WM_SHOWSTAGETOP") +#define REALIZEPALETTE TEXT("WM_REALIZEPALETTE") + +class AM_NOVTABLE CBaseWindow +{ +protected: + + HINSTANCE m_hInstance; // Global module instance handle + HWND m_hwnd; // Handle for our window + HDC m_hdc; // Device context for the window + LONG m_Width; // Client window width + LONG m_Height; // Client window height + BOOL m_bActivated; // Has the window been activated + LPTSTR m_pClassName; // Static string holding class name + DWORD m_ClassStyles; // Passed in to our constructor + DWORD m_WindowStyles; // Likewise the initial window styles + DWORD m_WindowStylesEx; // And the extended window styles + UINT m_ShowStageMessage; // Have the window shown with focus + UINT m_ShowStageTop; // Makes the window WS_EX_TOPMOST + UINT m_RealizePalette; // Makes us realize our new palette + HDC m_MemoryDC; // Used for fast BitBlt operations + HPALETTE m_hPalette; // Handle to any palette we may have + BYTE m_bNoRealize; // Don't realize palette now + BYTE m_bBackground; // Should we realise in background + BYTE m_bRealizing; // already realizing the palette + CCritSec m_WindowLock; // Serialise window object access + BOOL m_bDoGetDC; // Should this window get a DC + bool m_bDoPostToDestroy; // Use PostMessage to destroy + CCritSec m_PaletteLock; // This lock protects m_hPalette. + // It should be held anytime the + // program use the value of m_hPalette. + + // Maps windows message procedure into C++ methods + friend LRESULT CALLBACK WndProc(HWND hwnd, // Window handle + UINT uMsg, // Message ID + WPARAM wParam, // First parameter + LPARAM lParam); // Other parameter + + virtual LRESULT OnPaletteChange(HWND hwnd, UINT Message); + +public: + + CBaseWindow(BOOL bDoGetDC = TRUE, bool bPostToDestroy = false); + +#ifdef DEBUG + virtual ~CBaseWindow(); +#endif + + virtual HRESULT DoneWithWindow(); + virtual HRESULT PrepareWindow(); + virtual HRESULT InactivateWindow(); + virtual HRESULT ActivateWindow(); + virtual BOOL OnSize(LONG Width, LONG Height); + virtual BOOL OnClose(); + virtual RECT GetDefaultRect(); + virtual HRESULT UninitialiseWindow(); + virtual HRESULT InitialiseWindow(HWND hwnd); + + HRESULT CompleteConnect(); + HRESULT DoCreateWindow(); + + HRESULT PerformanceAlignWindow(); + HRESULT DoShowWindow(LONG ShowCmd); + void PaintWindow(BOOL bErase); + void DoSetWindowForeground(BOOL bFocus); + virtual HRESULT SetPalette(HPALETTE hPalette); + void SetRealize(BOOL bRealize) + { + m_bNoRealize = !bRealize; + } + + // Jump over to the window thread to set the current palette + HRESULT SetPalette(); + void UnsetPalette(void); + virtual HRESULT DoRealisePalette(BOOL bForceBackground = FALSE); + + void LockPaletteLock(); + void UnlockPaletteLock(); + + virtual BOOL PossiblyEatMessage(UINT uMsg, WPARAM wParam, LPARAM lParam) + { return FALSE; }; + + // Access our window information + + bool WindowExists(); + LONG GetWindowWidth(); + LONG GetWindowHeight(); + HWND GetWindowHWND(); + HDC GetMemoryHDC(); + HDC GetWindowHDC(); + + #ifdef DEBUG + HPALETTE GetPalette(); + #endif // DEBUG + + // This is the window procedure the derived object should override + + virtual LRESULT OnReceiveMessage(HWND hwnd, // Window handle + UINT uMsg, // Message ID + WPARAM wParam, // First parameter + LPARAM lParam); // Other parameter + + // Must be overriden to return class and window styles + + virtual LPTSTR GetClassWindowStyles( + DWORD *pClassStyles, // Class styles + DWORD *pWindowStyles, // Window styles + DWORD *pWindowStylesEx) PURE; // Extended styles +}; + + +// This helper class is entirely subservient to the owning CBaseWindow object +// All this object does is to split out the actual drawing operation from the +// main object (because it was becoming too large). We have a number of entry +// points to set things like the draw device contexts, to implement the actual +// drawing and to set the destination rectangle in the client window. We have +// no critical section locking in this class because we are used exclusively +// by the owning window object which looks after serialising calls into us + +// If you want to use this class make sure you call NotifyAllocator once the +// allocate has been agreed, also call NotifyMediaType with a pointer to a +// NON stack based CMediaType once that has been set (we keep a pointer to +// the original rather than taking a copy). When the palette changes call +// IncrementPaletteVersion (easiest thing to do is to also call this method +// in the SetMediaType method most filters implement). Finally before you +// start rendering anything call SetDrawContext so that we can get the HDCs +// for drawing from the CBaseWindow object we are given during construction + +class CDrawImage +{ +protected: + + CBaseWindow *m_pBaseWindow; // Owning video window object + CRefTime m_StartSample; // Start time for the current sample + CRefTime m_EndSample; // And likewise it's end sample time + HDC m_hdc; // Main window device context + HDC m_MemoryDC; // Offscreen draw device context + RECT m_TargetRect; // Target destination rectangle + RECT m_SourceRect; // Source image rectangle + BOOL m_bStretch; // Do we have to stretch the images + BOOL m_bUsingImageAllocator; // Are the samples shared DIBSECTIONs + CMediaType *m_pMediaType; // Pointer to the current format + int m_perfidRenderTime; // Time taken to render an image + LONG m_PaletteVersion; // Current palette version cookie + + // Draw the video images in the window + + void SlowRender(IMediaSample *pMediaSample); + void FastRender(IMediaSample *pMediaSample); + void DisplaySampleTimes(IMediaSample *pSample); + void UpdateColourTable(HDC hdc,BITMAPINFOHEADER *pbmi); + void SetStretchMode(); + +public: + + // Used to control the image drawing + + CDrawImage(CBaseWindow *pBaseWindow); + BOOL DrawImage(IMediaSample *pMediaSample); + BOOL DrawVideoImageHere(HDC hdc, IMediaSample *pMediaSample, + LPRECT lprcSrc, LPRECT lprcDst); + void SetDrawContext(); + void SetTargetRect(RECT *pTargetRect); + void SetSourceRect(RECT *pSourceRect); + void GetTargetRect(RECT *pTargetRect); + void GetSourceRect(RECT *pSourceRect); + virtual RECT ScaleSourceRect(const RECT *pSource); + + // Handle updating palettes as they change + + LONG GetPaletteVersion(); + void ResetPaletteVersion(); + void IncrementPaletteVersion(); + + // Tell us media types and allocator assignments + + void NotifyAllocator(BOOL bUsingImageAllocator); + void NotifyMediaType(CMediaType *pMediaType); + BOOL UsingImageAllocator(); + + // Called when we are about to draw an image + + void NotifyStartDraw() { + MSR_START(m_perfidRenderTime); + }; + + // Called when we complete an image rendering + + void NotifyEndDraw() { + MSR_STOP(m_perfidRenderTime); + }; +}; + + +// This is the structure used to keep information about each GDI DIB. All the +// samples we create from our allocator will have a DIBSECTION allocated to +// them. When we receive the sample we know we can BitBlt straight to an HDC + +typedef struct tagDIBDATA { + + LONG PaletteVersion; // Current palette version in use + DIBSECTION DibSection; // Details of DIB section allocated + HBITMAP hBitmap; // Handle to bitmap for drawing + HANDLE hMapping; // Handle to shared memory block + BYTE *pBase; // Pointer to base memory address + +} DIBDATA; + + +// This class inherits from CMediaSample and uses all of it's methods but it +// overrides the constructor to initialise itself with the DIBDATA structure +// When we come to render an IMediaSample we will know if we are using our own +// allocator, and if we are, we can cast the IMediaSample to a pointer to one +// of these are retrieve the DIB section information and hence the HBITMAP + +class CImageSample : public CMediaSample +{ +protected: + + DIBDATA m_DibData; // Information about the DIBSECTION + BOOL m_bInit; // Is the DIB information setup + +public: + + // Constructor + + CImageSample(CBaseAllocator *pAllocator, + TCHAR *pName, + HRESULT *phr, + LPBYTE pBuffer, + LONG length); + + // Maintain the DIB/DirectDraw state + + void SetDIBData(DIBDATA *pDibData); + DIBDATA *GetDIBData(); +}; + + +// This is an allocator based on the abstract CBaseAllocator base class that +// allocates sample buffers in shared memory. The number and size of these +// are determined when the output pin calls Prepare on us. The shared memory +// blocks are used in subsequent calls to GDI CreateDIBSection, once that +// has been done the output pin can fill the buffers with data which will +// then be handed to GDI through BitBlt calls and thereby remove one copy + +class CImageAllocator : public CBaseAllocator +{ +protected: + + CBaseFilter *m_pFilter; // Delegate reference counts to + CMediaType *m_pMediaType; // Pointer to the current format + + // Used to create and delete samples + + HRESULT Alloc(); + void Free(); + + // Manage the shared DIBSECTION and DCI/DirectDraw buffers + + HRESULT CreateDIB(LONG InSize,DIBDATA &DibData); + STDMETHODIMP CheckSizes(ALLOCATOR_PROPERTIES *pRequest); + virtual CImageSample *CreateImageSample(LPBYTE pData,LONG Length); + +public: + + // Constructor and destructor + + CImageAllocator(CBaseFilter *pFilter,TCHAR *pName,HRESULT *phr); +#ifdef DEBUG + ~CImageAllocator(); +#endif + + STDMETHODIMP_(ULONG) NonDelegatingAddRef(); + STDMETHODIMP_(ULONG) NonDelegatingRelease(); + void NotifyMediaType(CMediaType *pMediaType); + + // Agree the number of buffers to be used and their size + + STDMETHODIMP SetProperties( + ALLOCATOR_PROPERTIES *pRequest, + ALLOCATOR_PROPERTIES *pActual); +}; + + +// This class is a fairly specialised helper class for image renderers that +// have to create and manage palettes. The CBaseWindow class looks after +// realising palettes once they have been installed. This class can be used +// to create the palette handles from a media format (which must contain a +// VIDEOINFO structure in the format block). We try to make the palette an +// identity palette to maximise performance and also only change palettes +// if actually required to (we compare palette colours before updating). +// All the methods are virtual so that they can be overriden if so required + +class CImagePalette +{ +protected: + + CBaseWindow *m_pBaseWindow; // Window to realise palette in + CBaseFilter *m_pFilter; // Media filter to send events + CDrawImage *m_pDrawImage; // Object who will be drawing + HPALETTE m_hPalette; // The palette handle we own + +public: + + CImagePalette(CBaseFilter *pBaseFilter, + CBaseWindow *pBaseWindow, + CDrawImage *pDrawImage); + +#ifdef DEBUG + virtual ~CImagePalette(); +#endif + + static HPALETTE MakePalette(const VIDEOINFOHEADER *pVideoInfo, LPSTR szDevice); + HRESULT RemovePalette(); + static HRESULT MakeIdentityPalette(PALETTEENTRY *pEntry,INT iColours, LPSTR szDevice); + HRESULT CopyPalette(const CMediaType *pSrc,CMediaType *pDest); + BOOL ShouldUpdate(const VIDEOINFOHEADER *pNewInfo,const VIDEOINFOHEADER *pOldInfo); + HRESULT PreparePalette(const CMediaType *pmtNew,const CMediaType *pmtOld,LPSTR szDevice); + + BOOL DrawVideoImageHere(HDC hdc, IMediaSample *pMediaSample, LPRECT lprcSrc, LPRECT lprcDst) + { + return m_pDrawImage->DrawVideoImageHere(hdc, pMediaSample, lprcSrc,lprcDst); + } +}; + + +// Another helper class really for video based renderers. Most such renderers +// need to know what the display format is to some degree or another. This +// class initialises itself with the display format. The format can be asked +// for through GetDisplayFormat and various other accessor functions. If a +// filter detects a display format change (perhaps it gets a WM_DEVMODECHANGE +// message then it can call RefreshDisplayType to reset that format). Also +// many video renderers will want to check formats as they are proposed by +// source filters. This class provides methods to check formats and only +// accept those video formats that can be efficiently drawn using GDI calls + +class CImageDisplay : public CCritSec +{ +protected: + + // This holds the display format; biSize should not be too big, so we can + // safely use the VIDEOINFO structure + VIDEOINFO m_Display; + + static DWORD CountSetBits(const DWORD Field); + static DWORD CountPrefixBits(const DWORD Field); + static BOOL CheckBitFields(const VIDEOINFO *pInput); + +public: + + // Constructor and destructor + + CImageDisplay(); + + // Used to manage BITMAPINFOHEADERs and the display format + + const VIDEOINFO *GetDisplayFormat(); + HRESULT RefreshDisplayType(LPSTR szDeviceName); + static BOOL CheckHeaderValidity(const VIDEOINFO *pInput); + static BOOL CheckPaletteHeader(const VIDEOINFO *pInput); + BOOL IsPalettised(); + WORD GetDisplayDepth(); + + // Provide simple video format type checking + + HRESULT CheckMediaType(const CMediaType *pmtIn); + HRESULT CheckVideoType(const VIDEOINFO *pInput); + HRESULT UpdateFormat(VIDEOINFO *pVideoInfo); + const DWORD *GetBitMasks(const VIDEOINFO *pVideoInfo); + + BOOL GetColourMask(DWORD *pMaskRed, + DWORD *pMaskGreen, + DWORD *pMaskBlue); +}; + +// Convert a FORMAT_VideoInfo to FORMAT_VideoInfo2 +STDAPI ConvertVideoInfoToVideoInfo2(AM_MEDIA_TYPE *pmt); + +#endif // __WINUTIL__ + diff --git a/videoInputSrcAndDemos/libs/DShow/Include/wxdebug.h b/videoInputSrcAndDemos/libs/DShow/Include/wxdebug.h index 4c967ad..5f89cd9 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/wxdebug.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/wxdebug.h @@ -1,393 +1,393 @@ -//------------------------------------------------------------------------------ -// File: WXDebug.h -// -// Desc: DirectShow base classes - provides debugging facilities. -// -// Copyright (c) Microsoft Corporation. All rights reserved. -//------------------------------------------------------------------------------ - - -#ifndef __WXDEBUG__ -#define __WXDEBUG__ - -// This library provides fairly straight forward debugging functionality, this -// is split into two main sections. The first is assertion handling, there are -// three types of assertions provided here. The most commonly used one is the -// ASSERT(condition) macro which will pop up a message box including the file -// and line number if the condition evaluates to FALSE. Then there is the -// EXECUTE_ASSERT macro which is the same as ASSERT except the condition will -// still be executed in NON debug builds. The final type of assertion is the -// KASSERT macro which is more suitable for pure (perhaps kernel) filters as -// the condition is printed onto the debugger rather than in a message box. -// -// The other part of the debug module facilties is general purpose logging. -// This is accessed by calling DbgLog(). The function takes a type and level -// field which define the type of informational string you are presenting and -// it's relative importance. The type field can be a combination (one or more) -// of LOG_TIMING, LOG_TRACE, LOG_MEMORY, LOG_LOCKING and LOG_ERROR. The level -// is a DWORD value where zero defines highest important. Use of zero as the -// debug logging level is to be encouraged ONLY for major errors or events as -// they will ALWAYS be displayed on the debugger. Other debug output has it's -// level matched against the current debug output level stored in the registry -// for this module and if less than the current setting it will be displayed. -// -// Each module or executable has it's own debug output level for each of the -// five types. These are read in when the DbgInitialise function is called -// for DLLs linking to STRMBASE.LIB this is done automatically when the DLL -// is loaded, executables must call it explicitely with the module instance -// handle given to them through the WINMAIN entry point. An executable must -// also call DbgTerminate when they have finished to clean up the resources -// the debug library uses, once again this is done automatically for DLLs - -// These are the five different categories of logging information - -enum { LOG_TIMING = 0x01, // Timing and performance measurements - LOG_TRACE = 0x02, // General step point call tracing - LOG_MEMORY = 0x04, // Memory and object allocation/destruction - LOG_LOCKING = 0x08, // Locking/unlocking of critical sections - LOG_ERROR = 0x10, // Debug error notification - LOG_CUSTOM1 = 0x20, - LOG_CUSTOM2 = 0x40, - LOG_CUSTOM3 = 0x80, - LOG_CUSTOM4 = 0x100, - LOG_CUSTOM5 = 0x200, -}; - -#define LOG_FORCIBLY_SET 0x80000000 - -enum { CDISP_HEX = 0x01, - CDISP_DEC = 0x02}; - -// For each object created derived from CBaseObject (in debug builds) we -// create a descriptor that holds it's name (statically allocated memory) -// and a cookie we assign it. We keep a list of all the active objects -// we have registered so that we can dump a list of remaining objects - -typedef struct tag_ObjectDesc { - const CHAR *m_szName; - const WCHAR *m_wszName; - DWORD m_dwCookie; - tag_ObjectDesc *m_pNext; -} ObjectDesc; - -#define DLLIMPORT __declspec(dllimport) -#define DLLEXPORT __declspec(dllexport) - -#ifdef DEBUG - - #define NAME(x) TEXT(x) - - // These are used internally by the debug library (PRIVATE) - - void WINAPI DbgInitKeyLevels(HKEY hKey, bool fTakeMax); - void WINAPI DbgInitGlobalSettings(bool fTakeMax); - void WINAPI DbgInitModuleSettings(bool fTakeMax); - void WINAPI DbgInitModuleName(); - DWORD WINAPI DbgRegisterObjectCreation( - const CHAR *szObjectName, const WCHAR *wszObjectName); - - BOOL WINAPI DbgRegisterObjectDestruction(DWORD dwCookie); - - // These are the PUBLIC entry points - - BOOL WINAPI DbgCheckModuleLevel(DWORD Type,DWORD Level); - void WINAPI DbgSetModuleLevel(DWORD Type,DWORD Level); - void WINAPI DbgSetAutoRefreshLevels(bool fAuto); - - // Initialise the library with the module handle - - void WINAPI DbgInitialise(HINSTANCE hInst); - void WINAPI DbgTerminate(); - - void WINAPI DbgDumpObjectRegister(); - - // Display error and logging to the user - - void WINAPI DbgAssert(const TCHAR *pCondition,const TCHAR *pFileName,INT iLine); - void WINAPI DbgBreakPoint(const TCHAR *pCondition,const TCHAR *pFileName,INT iLine); - void WINAPI DbgBreakPoint(const TCHAR *pFileName,INT iLine,const TCHAR* szFormatString,...); - - void WINAPI DbgKernelAssert(const TCHAR *pCondition,const TCHAR *pFileName,INT iLine); - void WINAPI DbgLogInfo(DWORD Type,DWORD Level,const TCHAR *pFormat,...); -#ifdef UNICODE - void WINAPI DbgLogInfo(DWORD Type,DWORD Level,const CHAR *pFormat,...); - void WINAPI DbgAssert(const CHAR *pCondition,const CHAR *pFileName,INT iLine); - void WINAPI DbgBreakPoint(const CHAR *pCondition,const CHAR *pFileName,INT iLine); - void WINAPI DbgKernelAssert(const CHAR *pCondition,const CHAR *pFileName,INT iLine); -#endif - void WINAPI DbgOutString(LPCTSTR psz); - - // Debug infinite wait stuff - DWORD WINAPI DbgWaitForSingleObject(HANDLE h); - DWORD WINAPI DbgWaitForMultipleObjects(DWORD nCount, - CONST HANDLE *lpHandles, - BOOL bWaitAll); - void WINAPI DbgSetWaitTimeout(DWORD dwTimeout); - -#ifdef __strmif_h__ - // Display a media type: Terse at level 2, verbose at level 5 - void WINAPI DisplayType(LPTSTR label, const AM_MEDIA_TYPE *pmtIn); - - // Dump lots of information about a filter graph - void WINAPI DumpGraph(IFilterGraph *pGraph, DWORD dwLevel); -#endif - - #define KASSERT(_x_) if (!(_x_)) \ - DbgKernelAssert(TEXT(#_x_),TEXT(__FILE__),__LINE__) - - // Break on the debugger without putting up a message box - // message goes to debugger instead - - #define KDbgBreak(_x_) \ - DbgKernelAssert(TEXT(#_x_),TEXT(__FILE__),__LINE__) - - // We chose a common name for our ASSERT macro, MFC also uses this name - // So long as the implementation evaluates the condition and handles it - // then we will be ok. Rather than override the behaviour expected we - // will leave whatever first defines ASSERT as the handler (i.e. MFC) - #ifndef ASSERT - #define ASSERT(_x_) if (!(_x_)) \ - DbgAssert(TEXT(#_x_),TEXT(__FILE__),__LINE__) - #endif - - #define DbgAssertAligned( _ptr_, _alignment_ ) ASSERT( ((DWORD_PTR) (_ptr_)) % (_alignment_) == 0) - - // Put up a message box informing the user of a halt - // condition in the program - - #define DbgBreak(_x_) \ - DbgBreakPoint(TEXT(#_x_),TEXT(__FILE__),__LINE__) - - #define EXECUTE_ASSERT(_x_) ASSERT(_x_) - #define DbgLog(_x_) DbgLogInfo _x_ - // MFC style trace macros - - #define NOTE(_x_) DbgLog((LOG_TRACE,5,TEXT(_x_))) - #define NOTE1(_x_,a) DbgLog((LOG_TRACE,5,TEXT(_x_),a)) - #define NOTE2(_x_,a,b) DbgLog((LOG_TRACE,5,TEXT(_x_),a,b)) - #define NOTE3(_x_,a,b,c) DbgLog((LOG_TRACE,5,TEXT(_x_),a,b,c)) - #define NOTE4(_x_,a,b,c,d) DbgLog((LOG_TRACE,5,TEXT(_x_),a,b,c,d)) - #define NOTE5(_x_,a,b,c,d,e) DbgLog((LOG_TRACE,5,TEXT(_x_),a,b,c,d,e)) - -#else - - // Retail builds make public debug functions inert - WARNING the source - // files do not define or build any of the entry points in debug builds - // (public entry points compile to nothing) so if you go trying to call - // any of the private entry points in your source they won't compile - - #define NAME(_x_) ((TCHAR *) NULL) - - #define DbgInitialise(hInst) - #define DbgTerminate() - #define DbgLog(_x_) 0 - #define DbgOutString(psz) - #define DbgAssertAligned( _ptr_, _alignment_ ) 0 - - #define DbgRegisterObjectCreation(pObjectName) - #define DbgRegisterObjectDestruction(dwCookie) - #define DbgDumpObjectRegister() - - #define DbgCheckModuleLevel(Type,Level) - #define DbgSetModuleLevel(Type,Level) - #define DbgSetAutoRefreshLevels(fAuto) - - #define DbgWaitForSingleObject(h) WaitForSingleObject(h, INFINITE) - #define DbgWaitForMultipleObjects(nCount, lpHandles, bWaitAll) \ - WaitForMultipleObjects(nCount, lpHandles, bWaitAll, INFINITE) - #define DbgSetWaitTimeout(dwTimeout) - - #define KDbgBreak(_x_) - #define DbgBreak(_x_) - - #define KASSERT(_x_) ((void)0) - #ifndef ASSERT - #define ASSERT(_x_) ((void)0) - #endif - #define EXECUTE_ASSERT(_x_) ((void)(_x_)) - - // MFC style trace macros - - #define NOTE(_x_) ((void)0) - #define NOTE1(_x_,a) ((void)0) - #define NOTE2(_x_,a,b) ((void)0) - #define NOTE3(_x_,a,b,c) ((void)0) - #define NOTE4(_x_,a,b,c,d) ((void)0) - #define NOTE5(_x_,a,b,c,d,e) ((void)0) - - #define DisplayType(label, pmtIn) ((void)0) - #define DumpGraph(pGraph, label) ((void)0) -#endif - - -// Checks a pointer which should be non NULL - can be used as follows. - -#define CheckPointer(p,ret) {if((p)==NULL) return (ret);} - -// HRESULT Foo(VOID *pBar) -// { -// CheckPointer(pBar,E_INVALIDARG) -// } -// -// Or if the function returns a boolean -// -// BOOL Foo(VOID *pBar) -// { -// CheckPointer(pBar,FALSE) -// } - -// These validate pointers when symbol VFWROBUST is defined -// This will normally be defined in debug not retail builds - -#ifdef DEBUG - #define VFWROBUST -#endif - -#ifdef VFWROBUST - - #define ValidateReadPtr(p,cb) \ - {if(IsBadReadPtr((PVOID)p,cb) == TRUE) \ - DbgBreak("Invalid read pointer");} - - #define ValidateWritePtr(p,cb) \ - {if(IsBadWritePtr((PVOID)p,cb) == TRUE) \ - DbgBreak("Invalid write pointer");} - - #define ValidateReadWritePtr(p,cb) \ - {ValidateReadPtr(p,cb) ValidateWritePtr(p,cb)} - - #define ValidateStringPtr(p) \ - {if(IsBadStringPtr((LPCTSTR)p,INFINITE) == TRUE) \ - DbgBreak("Invalid string pointer");} - - #define ValidateStringPtrA(p) \ - {if(IsBadStringPtrA((LPCSTR)p,INFINITE) == TRUE) \ - DbgBreak("Invalid ANSI string pointer");} - - #define ValidateStringPtrW(p) \ - {if(IsBadStringPtrW((LPCWSTR)p,INFINITE) == TRUE) \ - DbgBreak("Invalid UNICODE string pointer");} - -#else - #define ValidateReadPtr(p,cb) 0 - #define ValidateWritePtr(p,cb) 0 - #define ValidateReadWritePtr(p,cb) 0 - #define ValidateStringPtr(p) 0 - #define ValidateStringPtrA(p) 0 - #define ValidateStringPtrW(p) 0 -#endif - - -#ifdef _OBJBASE_H_ - - // Outputting GUID names. If you want to include the name - // associated with a GUID (eg CLSID_...) then - // - // GuidNames[yourGUID] - // - // Returns the name defined in uuids.h as a string - - typedef struct { - CHAR *szName; - GUID guid; - } GUID_STRING_ENTRY; - - class CGuidNameList { - public: - CHAR *operator [] (const GUID& guid); - }; - - extern CGuidNameList GuidNames; - -#endif - -#ifndef REMIND - // REMIND macro - generates warning as reminder to complete coding - // (eg) usage: - // - // #pragma message (REMIND("Add automation support")) - - - #define QUOTE(x) #x - #define QQUOTE(y) QUOTE(y) - #define REMIND(str) __FILE__ "(" QQUOTE(__LINE__) ") : " str -#endif - -// Method to display objects in a useful format -// -// eg If you want to display a LONGLONG ll in a debug string do (eg) -// -// DbgLog((LOG_TRACE, n, TEXT("Value is %s"), (LPCTSTR)CDisp(ll, CDISP_HEX))); - - -class CDispBasic -{ -public: - CDispBasic() { m_pString = m_String; }; - ~CDispBasic(); -protected: - PTCHAR m_pString; // normally points to m_String... unless too much data - TCHAR m_String[50]; -}; -class CDisp : public CDispBasic -{ -public: - CDisp(LONGLONG ll, int Format = CDISP_HEX); // Display a LONGLONG in CDISP_HEX or CDISP_DEC form - CDisp(REFCLSID clsid); // Display a GUID - CDisp(double d); // Display a floating point number -#ifdef __strmif_h__ -#ifdef __STREAMS__ - CDisp(CRefTime t); // Display a Reference Time -#endif - CDisp(IPin *pPin); // Display a pin as {filter clsid}(pin name) - CDisp(IUnknown *pUnk); // Display a filter or pin -#endif // __strmif_h__ - ~CDisp(); - - // Implement cast to (LPCTSTR) as parameter to logger - operator LPCTSTR() - { - return (LPCTSTR)m_pString; - }; -}; - - -#if defined(DEBUG) -class CAutoTrace -{ -private: - const TCHAR* _szBlkName; - const int _level; - static const TCHAR _szEntering[]; - static const TCHAR _szLeaving[]; -public: - CAutoTrace(const TCHAR* szBlkName, const int level = 15) - : _szBlkName(szBlkName), _level(level) - {DbgLog((LOG_TRACE, _level, _szEntering, _szBlkName));} - - ~CAutoTrace() - {DbgLog((LOG_TRACE, _level, _szLeaving, _szBlkName));} -}; - -#if defined (__FUNCTION__) - -#define AMTRACEFN() CAutoTrace __trace(TEXT(__FUNCTION__)) -#define AMTRACE(_x_) CAutoTrace __trace(TEXT(__FUNCTION__)) - -#else - -#define AMTRACE(_x_) CAutoTrace __trace _x_ -#define AMTRACEFN() - -#endif - -#else - -#define AMTRACE(_x_) -#define AMTRACEFN() - -#endif - -#endif // __WXDEBUG__ - - +//------------------------------------------------------------------------------ +// File: WXDebug.h +// +// Desc: DirectShow base classes - provides debugging facilities. +// +// Copyright (c) Microsoft Corporation. All rights reserved. +//------------------------------------------------------------------------------ + + +#ifndef __WXDEBUG__ +#define __WXDEBUG__ + +// This library provides fairly straight forward debugging functionality, this +// is split into two main sections. The first is assertion handling, there are +// three types of assertions provided here. The most commonly used one is the +// ASSERT(condition) macro which will pop up a message box including the file +// and line number if the condition evaluates to FALSE. Then there is the +// EXECUTE_ASSERT macro which is the same as ASSERT except the condition will +// still be executed in NON debug builds. The final type of assertion is the +// KASSERT macro which is more suitable for pure (perhaps kernel) filters as +// the condition is printed onto the debugger rather than in a message box. +// +// The other part of the debug module facilties is general purpose logging. +// This is accessed by calling DbgLog(). The function takes a type and level +// field which define the type of informational string you are presenting and +// it's relative importance. The type field can be a combination (one or more) +// of LOG_TIMING, LOG_TRACE, LOG_MEMORY, LOG_LOCKING and LOG_ERROR. The level +// is a DWORD value where zero defines highest important. Use of zero as the +// debug logging level is to be encouraged ONLY for major errors or events as +// they will ALWAYS be displayed on the debugger. Other debug output has it's +// level matched against the current debug output level stored in the registry +// for this module and if less than the current setting it will be displayed. +// +// Each module or executable has it's own debug output level for each of the +// five types. These are read in when the DbgInitialise function is called +// for DLLs linking to STRMBASE.LIB this is done automatically when the DLL +// is loaded, executables must call it explicitely with the module instance +// handle given to them through the WINMAIN entry point. An executable must +// also call DbgTerminate when they have finished to clean up the resources +// the debug library uses, once again this is done automatically for DLLs + +// These are the five different categories of logging information + +enum { LOG_TIMING = 0x01, // Timing and performance measurements + LOG_TRACE = 0x02, // General step point call tracing + LOG_MEMORY = 0x04, // Memory and object allocation/destruction + LOG_LOCKING = 0x08, // Locking/unlocking of critical sections + LOG_ERROR = 0x10, // Debug error notification + LOG_CUSTOM1 = 0x20, + LOG_CUSTOM2 = 0x40, + LOG_CUSTOM3 = 0x80, + LOG_CUSTOM4 = 0x100, + LOG_CUSTOM5 = 0x200, +}; + +#define LOG_FORCIBLY_SET 0x80000000 + +enum { CDISP_HEX = 0x01, + CDISP_DEC = 0x02}; + +// For each object created derived from CBaseObject (in debug builds) we +// create a descriptor that holds it's name (statically allocated memory) +// and a cookie we assign it. We keep a list of all the active objects +// we have registered so that we can dump a list of remaining objects + +typedef struct tag_ObjectDesc { + const CHAR *m_szName; + const WCHAR *m_wszName; + DWORD m_dwCookie; + tag_ObjectDesc *m_pNext; +} ObjectDesc; + +#define DLLIMPORT __declspec(dllimport) +#define DLLEXPORT __declspec(dllexport) + +#ifdef DEBUG + + #define NAME(x) TEXT(x) + + // These are used internally by the debug library (PRIVATE) + + void WINAPI DbgInitKeyLevels(HKEY hKey, bool fTakeMax); + void WINAPI DbgInitGlobalSettings(bool fTakeMax); + void WINAPI DbgInitModuleSettings(bool fTakeMax); + void WINAPI DbgInitModuleName(); + DWORD WINAPI DbgRegisterObjectCreation( + const CHAR *szObjectName, const WCHAR *wszObjectName); + + BOOL WINAPI DbgRegisterObjectDestruction(DWORD dwCookie); + + // These are the PUBLIC entry points + + BOOL WINAPI DbgCheckModuleLevel(DWORD Type,DWORD Level); + void WINAPI DbgSetModuleLevel(DWORD Type,DWORD Level); + void WINAPI DbgSetAutoRefreshLevels(bool fAuto); + + // Initialise the library with the module handle + + void WINAPI DbgInitialise(HINSTANCE hInst); + void WINAPI DbgTerminate(); + + void WINAPI DbgDumpObjectRegister(); + + // Display error and logging to the user + + void WINAPI DbgAssert(const TCHAR *pCondition,const TCHAR *pFileName,INT iLine); + void WINAPI DbgBreakPoint(const TCHAR *pCondition,const TCHAR *pFileName,INT iLine); + void WINAPI DbgBreakPoint(const TCHAR *pFileName,INT iLine,const TCHAR* szFormatString,...); + + void WINAPI DbgKernelAssert(const TCHAR *pCondition,const TCHAR *pFileName,INT iLine); + void WINAPI DbgLogInfo(DWORD Type,DWORD Level,const TCHAR *pFormat,...); +#ifdef UNICODE + void WINAPI DbgLogInfo(DWORD Type,DWORD Level,const CHAR *pFormat,...); + void WINAPI DbgAssert(const CHAR *pCondition,const CHAR *pFileName,INT iLine); + void WINAPI DbgBreakPoint(const CHAR *pCondition,const CHAR *pFileName,INT iLine); + void WINAPI DbgKernelAssert(const CHAR *pCondition,const CHAR *pFileName,INT iLine); +#endif + void WINAPI DbgOutString(LPCTSTR psz); + + // Debug infinite wait stuff + DWORD WINAPI DbgWaitForSingleObject(HANDLE h); + DWORD WINAPI DbgWaitForMultipleObjects(DWORD nCount, + CONST HANDLE *lpHandles, + BOOL bWaitAll); + void WINAPI DbgSetWaitTimeout(DWORD dwTimeout); + +#ifdef __strmif_h__ + // Display a media type: Terse at level 2, verbose at level 5 + void WINAPI DisplayType(LPTSTR label, const AM_MEDIA_TYPE *pmtIn); + + // Dump lots of information about a filter graph + void WINAPI DumpGraph(IFilterGraph *pGraph, DWORD dwLevel); +#endif + + #define KASSERT(_x_) if (!(_x_)) \ + DbgKernelAssert(TEXT(#_x_),TEXT(__FILE__),__LINE__) + + // Break on the debugger without putting up a message box + // message goes to debugger instead + + #define KDbgBreak(_x_) \ + DbgKernelAssert(TEXT(#_x_),TEXT(__FILE__),__LINE__) + + // We chose a common name for our ASSERT macro, MFC also uses this name + // So long as the implementation evaluates the condition and handles it + // then we will be ok. Rather than override the behaviour expected we + // will leave whatever first defines ASSERT as the handler (i.e. MFC) + #ifndef ASSERT + #define ASSERT(_x_) if (!(_x_)) \ + DbgAssert(TEXT(#_x_),TEXT(__FILE__),__LINE__) + #endif + + #define DbgAssertAligned( _ptr_, _alignment_ ) ASSERT( ((DWORD_PTR) (_ptr_)) % (_alignment_) == 0) + + // Put up a message box informing the user of a halt + // condition in the program + + #define DbgBreak(_x_) \ + DbgBreakPoint(TEXT(#_x_),TEXT(__FILE__),__LINE__) + + #define EXECUTE_ASSERT(_x_) ASSERT(_x_) + #define DbgLog(_x_) DbgLogInfo _x_ + // MFC style trace macros + + #define NOTE(_x_) DbgLog((LOG_TRACE,5,TEXT(_x_))) + #define NOTE1(_x_,a) DbgLog((LOG_TRACE,5,TEXT(_x_),a)) + #define NOTE2(_x_,a,b) DbgLog((LOG_TRACE,5,TEXT(_x_),a,b)) + #define NOTE3(_x_,a,b,c) DbgLog((LOG_TRACE,5,TEXT(_x_),a,b,c)) + #define NOTE4(_x_,a,b,c,d) DbgLog((LOG_TRACE,5,TEXT(_x_),a,b,c,d)) + #define NOTE5(_x_,a,b,c,d,e) DbgLog((LOG_TRACE,5,TEXT(_x_),a,b,c,d,e)) + +#else + + // Retail builds make public debug functions inert - WARNING the source + // files do not define or build any of the entry points in debug builds + // (public entry points compile to nothing) so if you go trying to call + // any of the private entry points in your source they won't compile + + #define NAME(_x_) ((TCHAR *) NULL) + + #define DbgInitialise(hInst) + #define DbgTerminate() + #define DbgLog(_x_) 0 + #define DbgOutString(psz) + #define DbgAssertAligned( _ptr_, _alignment_ ) 0 + + #define DbgRegisterObjectCreation(pObjectName) + #define DbgRegisterObjectDestruction(dwCookie) + #define DbgDumpObjectRegister() + + #define DbgCheckModuleLevel(Type,Level) + #define DbgSetModuleLevel(Type,Level) + #define DbgSetAutoRefreshLevels(fAuto) + + #define DbgWaitForSingleObject(h) WaitForSingleObject(h, INFINITE) + #define DbgWaitForMultipleObjects(nCount, lpHandles, bWaitAll) \ + WaitForMultipleObjects(nCount, lpHandles, bWaitAll, INFINITE) + #define DbgSetWaitTimeout(dwTimeout) + + #define KDbgBreak(_x_) + #define DbgBreak(_x_) + + #define KASSERT(_x_) ((void)0) + #ifndef ASSERT + #define ASSERT(_x_) ((void)0) + #endif + #define EXECUTE_ASSERT(_x_) ((void)(_x_)) + + // MFC style trace macros + + #define NOTE(_x_) ((void)0) + #define NOTE1(_x_,a) ((void)0) + #define NOTE2(_x_,a,b) ((void)0) + #define NOTE3(_x_,a,b,c) ((void)0) + #define NOTE4(_x_,a,b,c,d) ((void)0) + #define NOTE5(_x_,a,b,c,d,e) ((void)0) + + #define DisplayType(label, pmtIn) ((void)0) + #define DumpGraph(pGraph, label) ((void)0) +#endif + + +// Checks a pointer which should be non NULL - can be used as follows. + +#define CheckPointer(p,ret) {if((p)==NULL) return (ret);} + +// HRESULT Foo(VOID *pBar) +// { +// CheckPointer(pBar,E_INVALIDARG) +// } +// +// Or if the function returns a boolean +// +// BOOL Foo(VOID *pBar) +// { +// CheckPointer(pBar,FALSE) +// } + +// These validate pointers when symbol VFWROBUST is defined +// This will normally be defined in debug not retail builds + +#ifdef DEBUG + #define VFWROBUST +#endif + +#ifdef VFWROBUST + + #define ValidateReadPtr(p,cb) \ + {if(IsBadReadPtr((PVOID)p,cb) == TRUE) \ + DbgBreak("Invalid read pointer");} + + #define ValidateWritePtr(p,cb) \ + {if(IsBadWritePtr((PVOID)p,cb) == TRUE) \ + DbgBreak("Invalid write pointer");} + + #define ValidateReadWritePtr(p,cb) \ + {ValidateReadPtr(p,cb) ValidateWritePtr(p,cb)} + + #define ValidateStringPtr(p) \ + {if(IsBadStringPtr((LPCTSTR)p,INFINITE) == TRUE) \ + DbgBreak("Invalid string pointer");} + + #define ValidateStringPtrA(p) \ + {if(IsBadStringPtrA((LPCSTR)p,INFINITE) == TRUE) \ + DbgBreak("Invalid ANSI string pointer");} + + #define ValidateStringPtrW(p) \ + {if(IsBadStringPtrW((LPCWSTR)p,INFINITE) == TRUE) \ + DbgBreak("Invalid UNICODE string pointer");} + +#else + #define ValidateReadPtr(p,cb) 0 + #define ValidateWritePtr(p,cb) 0 + #define ValidateReadWritePtr(p,cb) 0 + #define ValidateStringPtr(p) 0 + #define ValidateStringPtrA(p) 0 + #define ValidateStringPtrW(p) 0 +#endif + + +#ifdef _OBJBASE_H_ + + // Outputting GUID names. If you want to include the name + // associated with a GUID (eg CLSID_...) then + // + // GuidNames[yourGUID] + // + // Returns the name defined in uuids.h as a string + + typedef struct { + CHAR *szName; + GUID guid; + } GUID_STRING_ENTRY; + + class CGuidNameList { + public: + CHAR *operator [] (const GUID& guid); + }; + + extern CGuidNameList GuidNames; + +#endif + +#ifndef REMIND + // REMIND macro - generates warning as reminder to complete coding + // (eg) usage: + // + // #pragma message (REMIND("Add automation support")) + + + #define QUOTE(x) #x + #define QQUOTE(y) QUOTE(y) + #define REMIND(str) __FILE__ "(" QQUOTE(__LINE__) ") : " str +#endif + +// Method to display objects in a useful format +// +// eg If you want to display a LONGLONG ll in a debug string do (eg) +// +// DbgLog((LOG_TRACE, n, TEXT("Value is %s"), (LPCTSTR)CDisp(ll, CDISP_HEX))); + + +class CDispBasic +{ +public: + CDispBasic() { m_pString = m_String; }; + ~CDispBasic(); +protected: + PTCHAR m_pString; // normally points to m_String... unless too much data + TCHAR m_String[50]; +}; +class CDisp : public CDispBasic +{ +public: + CDisp(LONGLONG ll, int Format = CDISP_HEX); // Display a LONGLONG in CDISP_HEX or CDISP_DEC form + CDisp(REFCLSID clsid); // Display a GUID + CDisp(double d); // Display a floating point number +#ifdef __strmif_h__ +#ifdef __STREAMS__ + CDisp(CRefTime t); // Display a Reference Time +#endif + CDisp(IPin *pPin); // Display a pin as {filter clsid}(pin name) + CDisp(IUnknown *pUnk); // Display a filter or pin +#endif // __strmif_h__ + ~CDisp(); + + // Implement cast to (LPCTSTR) as parameter to logger + operator LPCTSTR() + { + return (LPCTSTR)m_pString; + }; +}; + + +#if defined(DEBUG) +class CAutoTrace +{ +private: + const TCHAR* _szBlkName; + const int _level; + static const TCHAR _szEntering[]; + static const TCHAR _szLeaving[]; +public: + CAutoTrace(const TCHAR* szBlkName, const int level = 15) + : _szBlkName(szBlkName), _level(level) + {DbgLog((LOG_TRACE, _level, _szEntering, _szBlkName));} + + ~CAutoTrace() + {DbgLog((LOG_TRACE, _level, _szLeaving, _szBlkName));} +}; + +#if defined (__FUNCTION__) + +#define AMTRACEFN() CAutoTrace __trace(TEXT(__FUNCTION__)) +#define AMTRACE(_x_) CAutoTrace __trace(TEXT(__FUNCTION__)) + +#else + +#define AMTRACE(_x_) CAutoTrace __trace _x_ +#define AMTRACEFN() + +#endif + +#else + +#define AMTRACE(_x_) +#define AMTRACEFN() + +#endif + +#endif // __WXDEBUG__ + + diff --git a/videoInputSrcAndDemos/libs/DShow/Include/wxlist.h b/videoInputSrcAndDemos/libs/DShow/Include/wxlist.h index 7487f61..1e360f7 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/wxlist.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/wxlist.h @@ -1,545 +1,545 @@ -//------------------------------------------------------------------------------ -// File: WXList.h -// -// Desc: DirectShow base classes - defines a non-MFC generic template list -// class. -// -// Copyright (c) Microsoft Corporation. All rights reserved. -//------------------------------------------------------------------------------ - - -/* A generic list of pointers to objects. - No storage management or copying is done on the objects pointed to. - Objectives: avoid using MFC libraries in ndm kernel mode and - provide a really useful list type. - - The class is thread safe in that separate threads may add and - delete items in the list concurrently although the application - must ensure that constructor and destructor access is suitably - synchronised. An application can cause deadlock with operations - which use two lists by simultaneously calling - list1->Operation(list2) and list2->Operation(list1). So don't! - - The names must not conflict with MFC classes as an application - may use both. - */ - -#ifndef __WXLIST__ -#define __WXLIST__ - - /* A POSITION represents (in some fashion that's opaque) a cursor - on the list that can be set to identify any element. NULL is - a valid value and several operations regard NULL as the position - "one step off the end of the list". (In an n element list there - are n+1 places to insert and NULL is that "n+1-th" value). - The POSITION of an element in the list is only invalidated if - that element is deleted. Move operations may mean that what - was a valid POSITION in one list is now a valid POSITION in - a different list. - - Some operations which at first sight are illegal are allowed as - harmless no-ops. For instance RemoveHead is legal on an empty - list and it returns NULL. This allows an atomic way to test if - there is an element there, and if so, get it. The two operations - AddTail and RemoveHead thus implement a MONITOR (See Hoare's paper). - - Single element operations return POSITIONs, non-NULL means it worked. - whole list operations return a BOOL. TRUE means it all worked. - - This definition is the same as the POSITION type for MFCs, so we must - avoid defining it twice. - */ -#ifndef __AFX_H__ -struct __POSITION { int unused; }; -typedef __POSITION* POSITION; -#endif - -const int DEFAULTCACHE = 10; /* Default node object cache size */ - -/* A class representing one node in a list. - Each node knows a pointer to it's adjacent nodes and also a pointer - to the object that it looks after. - All of these pointers can be retrieved or set through member functions. -*/ -class CBaseList -#ifdef DEBUG - : public CBaseObject -#endif -{ - /* Making these classes inherit from CBaseObject does nothing - functionally but it allows us to check there are no memory - leaks in debug builds. - */ - -public: - -#ifdef DEBUG - class CNode : public CBaseObject { -#else - class CNode { -#endif - - CNode *m_pPrev; /* Previous node in the list */ - CNode *m_pNext; /* Next node in the list */ - void *m_pObject; /* Pointer to the object */ - - public: - - /* Constructor - initialise the object's pointers */ - CNode() -#ifdef DEBUG - : CBaseObject(NAME("List node")) -#endif - { - }; - - - /* Return the previous node before this one */ - CNode *Prev() const { return m_pPrev; }; - - - /* Return the next node after this one */ - CNode *Next() const { return m_pNext; }; - - - /* Set the previous node before this one */ - void SetPrev(CNode *p) { m_pPrev = p; }; - - - /* Set the next node after this one */ - void SetNext(CNode *p) { m_pNext = p; }; - - - /* Get the pointer to the object for this node */ - void *GetData() const { return m_pObject; }; - - - /* Set the pointer to the object for this node */ - void SetData(void *p) { m_pObject = p; }; - }; - - class CNodeCache - { - public: - CNodeCache(INT iCacheSize) : m_iCacheSize(iCacheSize), - m_pHead(NULL), - m_iUsed(0) - {}; - ~CNodeCache() { - CNode *pNode = m_pHead; - while (pNode) { - CNode *pCurrent = pNode; - pNode = pNode->Next(); - delete pCurrent; - } - }; - void AddToCache(CNode *pNode) - { - if (m_iUsed < m_iCacheSize) { - pNode->SetNext(m_pHead); - m_pHead = pNode; - m_iUsed++; - } else { - delete pNode; - } - }; - CNode *RemoveFromCache() - { - CNode *pNode = m_pHead; - if (pNode != NULL) { - m_pHead = pNode->Next(); - m_iUsed--; - ASSERT(m_iUsed >= 0); - } else { - ASSERT(m_iUsed == 0); - } - return pNode; - }; - private: - INT m_iCacheSize; - INT m_iUsed; - CNode *m_pHead; - }; - -protected: - - CNode* m_pFirst; /* Pointer to first node in the list */ - CNode* m_pLast; /* Pointer to the last node in the list */ - LONG m_Count; /* Number of nodes currently in the list */ - -private: - - CNodeCache m_Cache; /* Cache of unused node pointers */ - -private: - - /* These override the default copy constructor and assignment - operator for all list classes. They are in the private class - declaration section so that anybody trying to pass a list - object by value will generate a compile time error of - "cannot access the private member function". If these were - not here then the compiler will create default constructors - and assignment operators which when executed first take a - copy of all member variables and then during destruction - delete them all. This must not be done for any heap - allocated data. - */ - CBaseList(const CBaseList &refList); - CBaseList &operator=(const CBaseList &refList); - -public: - - CBaseList(TCHAR *pName, - INT iItems); - - CBaseList(TCHAR *pName); -#ifdef UNICODE - CBaseList(CHAR *pName, - INT iItems); - - CBaseList(CHAR *pName); -#endif - ~CBaseList(); - - /* Remove all the nodes from *this i.e. make the list empty */ - void RemoveAll(); - - - /* Return a cursor which identifies the first element of *this */ - POSITION GetHeadPositionI() const; - - - /* Return a cursor which identifies the last element of *this */ - POSITION GetTailPositionI() const; - - - /* Return the number of objects in *this */ - int GetCountI() const; - -protected: - /* Return the pointer to the object at rp, - Update rp to the next node in *this - but make it NULL if it was at the end of *this. - This is a wart retained for backwards compatibility. - GetPrev is not implemented. - Use Next, Prev and Get separately. - */ - void *GetNextI(POSITION& rp) const; - - - /* Return a pointer to the object at p - Asking for the object at NULL will return NULL harmlessly. - */ - void *GetI(POSITION p) const; - -public: - /* return the next / prev position in *this - return NULL when going past the end/start. - Next(NULL) is same as GetHeadPosition() - Prev(NULL) is same as GetTailPosition() - An n element list therefore behaves like a n+1 element - cycle with NULL at the start/end. - - !!WARNING!! - This handling of NULL is DIFFERENT from GetNext. - - Some reasons are: - 1. For a list of n items there are n+1 positions to insert - These are conveniently encoded as the n POSITIONs and NULL. - 2. If you are keeping a list sorted (fairly common) and you - search forward for an element to insert before and don't - find it you finish up with NULL as the element before which - to insert. You then want that NULL to be a valid POSITION - so that you can insert before it and you want that insertion - point to mean the (n+1)-th one that doesn't have a POSITION. - (symmetrically if you are working backwards through the list). - 3. It simplifies the algebra which the methods generate. - e.g. AddBefore(p,x) is identical to AddAfter(Prev(p),x) - in ALL cases. All the other arguments probably are reflections - of the algebraic point. - */ - POSITION Next(POSITION pos) const - { - if (pos == NULL) { - return (POSITION) m_pFirst; - } - CNode *pn = (CNode *) pos; - return (POSITION) pn->Next(); - } //Next - - // See Next - POSITION Prev(POSITION pos) const - { - if (pos == NULL) { - return (POSITION) m_pLast; - } - CNode *pn = (CNode *) pos; - return (POSITION) pn->Prev(); - } //Prev - - - /* Return the first position in *this which holds the given - pointer. Return NULL if the pointer was not not found. - */ -protected: - POSITION FindI( void * pObj) const; - - /* Remove the first node in *this (deletes the pointer to its - object from the list, does not free the object itself). - Return the pointer to its object. - If *this was already empty it will harmlessly return NULL. - */ - void *RemoveHeadI(); - - - /* Remove the last node in *this (deletes the pointer to its - object from the list, does not free the object itself). - Return the pointer to its object. - If *this was already empty it will harmlessly return NULL. - */ - void *RemoveTailI(); - - - /* Remove the node identified by p from the list (deletes the pointer - to its object from the list, does not free the object itself). - Asking to Remove the object at NULL will harmlessly return NULL. - Return the pointer to the object removed. - */ - void *RemoveI(POSITION p); - - /* Add single object *pObj to become a new last element of the list. - Return the new tail position, NULL if it fails. - If you are adding a COM objects, you might want AddRef it first. - Other existing POSITIONs in *this are still valid - */ - POSITION AddTailI(void * pObj); -public: - - - /* Add all the elements in *pList to the tail of *this. - This duplicates all the nodes in *pList (i.e. duplicates - all its pointers to objects). It does not duplicate the objects. - If you are adding a list of pointers to a COM object into the list - it's a good idea to AddRef them all it when you AddTail it. - Return TRUE if it all worked, FALSE if it didn't. - If it fails some elements may have been added. - Existing POSITIONs in *this are still valid - - If you actually want to MOVE the elements, use MoveToTail instead. - */ - BOOL AddTail(CBaseList *pList); - - - /* Mirror images of AddHead: */ - - /* Add single object to become a new first element of the list. - Return the new head position, NULL if it fails. - Existing POSITIONs in *this are still valid - */ -protected: - POSITION AddHeadI(void * pObj); -public: - - /* Add all the elements in *pList to the head of *this. - Same warnings apply as for AddTail. - Return TRUE if it all worked, FALSE if it didn't. - If it fails some of the objects may have been added. - - If you actually want to MOVE the elements, use MoveToHead instead. - */ - BOOL AddHead(CBaseList *pList); - - - /* Add the object *pObj to *this after position p in *this. - AddAfter(NULL,x) adds x to the start - equivalent to AddHead - Return the position of the object added, NULL if it failed. - Existing POSITIONs in *this are undisturbed, including p. - */ -protected: - POSITION AddAfterI(POSITION p, void * pObj); -public: - - /* Add the list *pList to *this after position p in *this - AddAfter(NULL,x) adds x to the start - equivalent to AddHead - Return TRUE if it all worked, FALSE if it didn't. - If it fails, some of the objects may be added - Existing POSITIONs in *this are undisturbed, including p. - */ - BOOL AddAfter(POSITION p, CBaseList *pList); - - - /* Mirror images: - Add the object *pObj to this-List after position p in *this. - AddBefore(NULL,x) adds x to the end - equivalent to AddTail - Return the position of the new object, NULL if it fails - Existing POSITIONs in *this are undisturbed, including p. - */ - protected: - POSITION AddBeforeI(POSITION p, void * pObj); - public: - - /* Add the list *pList to *this before position p in *this - AddAfter(NULL,x) adds x to the start - equivalent to AddHead - Return TRUE if it all worked, FALSE if it didn't. - If it fails, some of the objects may be added - Existing POSITIONs in *this are undisturbed, including p. - */ - BOOL AddBefore(POSITION p, CBaseList *pList); - - - /* Note that AddAfter(p,x) is equivalent to AddBefore(Next(p),x) - even in cases where p is NULL or Next(p) is NULL. - Similarly for mirror images etc. - This may make it easier to argue about programs. - */ - - - - /* The following operations do not copy any elements. - They move existing blocks of elements around by switching pointers. - They are fairly efficient for long lists as for short lists. - (Alas, the Count slows things down). - - They split the list into two parts. - One part remains as the original list, the other part - is appended to the second list. There are eight possible - variations: - Split the list {after/before} a given element - keep the {head/tail} portion in the original list - append the rest to the {head/tail} of the new list. - - Since After is strictly equivalent to Before Next - we are not in serious need of the Before/After variants. - That leaves only four. - - If you are processing a list left to right and dumping - the bits that you have processed into another list as - you go, the Tail/Tail variant gives the most natural result. - If you are processing in reverse order, Head/Head is best. - - By using NULL positions and empty lists judiciously either - of the other two can be built up in two operations. - - The definition of NULL (see Next/Prev etc) means that - degenerate cases include - "move all elements to new list" - "Split a list into two lists" - "Concatenate two lists" - (and quite a few no-ops) - - !!WARNING!! The type checking won't buy you much if you get list - positions muddled up - e.g. use a POSITION that's in a different - list and see what a mess you get! - */ - - /* Split *this after position p in *this - Retain as *this the tail portion of the original *this - Add the head portion to the tail end of *pList - Return TRUE if it all worked, FALSE if it didn't. - - e.g. - foo->MoveToTail(foo->GetHeadPosition(), bar); - moves one element from the head of foo to the tail of bar - foo->MoveToTail(NULL, bar); - is a no-op, returns NULL - foo->MoveToTail(foo->GetTailPosition, bar); - concatenates foo onto the end of bar and empties foo. - - A better, except excessively long name might be - MoveElementsFromHeadThroughPositionToOtherTail - */ - BOOL MoveToTail(POSITION pos, CBaseList *pList); - - - /* Mirror image: - Split *this before position p in *this. - Retain in *this the head portion of the original *this - Add the tail portion to the start (i.e. head) of *pList - - e.g. - foo->MoveToHead(foo->GetTailPosition(), bar); - moves one element from the tail of foo to the head of bar - foo->MoveToHead(NULL, bar); - is a no-op, returns NULL - foo->MoveToHead(foo->GetHeadPosition, bar); - concatenates foo onto the start of bar and empties foo. - */ - BOOL MoveToHead(POSITION pos, CBaseList *pList); - - - /* Reverse the order of the [pointers to] objects in *this - */ - void Reverse(); - - - /* set cursor to the position of each element of list in turn */ - #define TRAVERSELIST(list, cursor) \ - for ( cursor = (list).GetHeadPosition() \ - ; cursor!=NULL \ - ; cursor = (list).Next(cursor) \ - ) - - - /* set cursor to the position of each element of list in turn - in reverse order - */ - #define REVERSETRAVERSELIST(list, cursor) \ - for ( cursor = (list).GetTailPosition() \ - ; cursor!=NULL \ - ; cursor = (list).Prev(cursor) \ - ) - -}; // end of class declaration - -template class CGenericList : public CBaseList -{ -public: - CGenericList(TCHAR *pName, - INT iItems, - BOOL bLock = TRUE, - BOOL bAlert = FALSE) : - CBaseList(pName, iItems) { - UNREFERENCED_PARAMETER(bAlert); - UNREFERENCED_PARAMETER(bLock); - }; - CGenericList(TCHAR *pName) : - CBaseList(pName) { - }; - - POSITION GetHeadPosition() const { return (POSITION)m_pFirst; } - POSITION GetTailPosition() const { return (POSITION)m_pLast; } - int GetCount() const { return m_Count; } - - OBJECT *GetNext(POSITION& rp) const { return (OBJECT *) GetNextI(rp); } - - OBJECT *Get(POSITION p) const { return (OBJECT *) GetI(p); } - OBJECT *GetHead() const { return Get(GetHeadPosition()); } - - OBJECT *RemoveHead() { return (OBJECT *) RemoveHeadI(); } - - OBJECT *RemoveTail() { return (OBJECT *) RemoveTailI(); } - - OBJECT *Remove(POSITION p) { return (OBJECT *) RemoveI(p); } - POSITION AddBefore(POSITION p, OBJECT * pObj) { return AddBeforeI(p, pObj); } - POSITION AddAfter(POSITION p, OBJECT * pObj) { return AddAfterI(p, pObj); } - POSITION AddHead(OBJECT * pObj) { return AddHeadI(pObj); } - POSITION AddTail(OBJECT * pObj) { return AddTailI(pObj); } - BOOL AddTail(CGenericList *pList) - { return CBaseList::AddTail((CBaseList *) pList); } - BOOL AddHead(CGenericList *pList) - { return CBaseList::AddHead((CBaseList *) pList); } - BOOL AddAfter(POSITION p, CGenericList *pList) - { return CBaseList::AddAfter(p, (CBaseList *) pList); }; - BOOL AddBefore(POSITION p, CGenericList *pList) - { return CBaseList::AddBefore(p, (CBaseList *) pList); }; - POSITION Find( OBJECT * pObj) const { return FindI(pObj); } -}; // end of class declaration - - - -/* These define the standard list types */ - -typedef CGenericList CBaseObjectList; -typedef CGenericList CBaseInterfaceList; - -#endif /* __WXLIST__ */ - +//------------------------------------------------------------------------------ +// File: WXList.h +// +// Desc: DirectShow base classes - defines a non-MFC generic template list +// class. +// +// Copyright (c) Microsoft Corporation. All rights reserved. +//------------------------------------------------------------------------------ + + +/* A generic list of pointers to objects. + No storage management or copying is done on the objects pointed to. + Objectives: avoid using MFC libraries in ndm kernel mode and + provide a really useful list type. + + The class is thread safe in that separate threads may add and + delete items in the list concurrently although the application + must ensure that constructor and destructor access is suitably + synchronised. An application can cause deadlock with operations + which use two lists by simultaneously calling + list1->Operation(list2) and list2->Operation(list1). So don't! + + The names must not conflict with MFC classes as an application + may use both. + */ + +#ifndef __WXLIST__ +#define __WXLIST__ + + /* A POSITION represents (in some fashion that's opaque) a cursor + on the list that can be set to identify any element. NULL is + a valid value and several operations regard NULL as the position + "one step off the end of the list". (In an n element list there + are n+1 places to insert and NULL is that "n+1-th" value). + The POSITION of an element in the list is only invalidated if + that element is deleted. Move operations may mean that what + was a valid POSITION in one list is now a valid POSITION in + a different list. + + Some operations which at first sight are illegal are allowed as + harmless no-ops. For instance RemoveHead is legal on an empty + list and it returns NULL. This allows an atomic way to test if + there is an element there, and if so, get it. The two operations + AddTail and RemoveHead thus implement a MONITOR (See Hoare's paper). + + Single element operations return POSITIONs, non-NULL means it worked. + whole list operations return a BOOL. TRUE means it all worked. + + This definition is the same as the POSITION type for MFCs, so we must + avoid defining it twice. + */ +#ifndef __AFX_H__ +struct __POSITION { int unused; }; +typedef __POSITION* POSITION; +#endif + +const int DEFAULTCACHE = 10; /* Default node object cache size */ + +/* A class representing one node in a list. + Each node knows a pointer to it's adjacent nodes and also a pointer + to the object that it looks after. + All of these pointers can be retrieved or set through member functions. +*/ +class CBaseList +#ifdef DEBUG + : public CBaseObject +#endif +{ + /* Making these classes inherit from CBaseObject does nothing + functionally but it allows us to check there are no memory + leaks in debug builds. + */ + +public: + +#ifdef DEBUG + class CNode : public CBaseObject { +#else + class CNode { +#endif + + CNode *m_pPrev; /* Previous node in the list */ + CNode *m_pNext; /* Next node in the list */ + void *m_pObject; /* Pointer to the object */ + + public: + + /* Constructor - initialise the object's pointers */ + CNode() +#ifdef DEBUG + : CBaseObject(NAME("List node")) +#endif + { + }; + + + /* Return the previous node before this one */ + CNode *Prev() const { return m_pPrev; }; + + + /* Return the next node after this one */ + CNode *Next() const { return m_pNext; }; + + + /* Set the previous node before this one */ + void SetPrev(CNode *p) { m_pPrev = p; }; + + + /* Set the next node after this one */ + void SetNext(CNode *p) { m_pNext = p; }; + + + /* Get the pointer to the object for this node */ + void *GetData() const { return m_pObject; }; + + + /* Set the pointer to the object for this node */ + void SetData(void *p) { m_pObject = p; }; + }; + + class CNodeCache + { + public: + CNodeCache(INT iCacheSize) : m_iCacheSize(iCacheSize), + m_pHead(NULL), + m_iUsed(0) + {}; + ~CNodeCache() { + CNode *pNode = m_pHead; + while (pNode) { + CNode *pCurrent = pNode; + pNode = pNode->Next(); + delete pCurrent; + } + }; + void AddToCache(CNode *pNode) + { + if (m_iUsed < m_iCacheSize) { + pNode->SetNext(m_pHead); + m_pHead = pNode; + m_iUsed++; + } else { + delete pNode; + } + }; + CNode *RemoveFromCache() + { + CNode *pNode = m_pHead; + if (pNode != NULL) { + m_pHead = pNode->Next(); + m_iUsed--; + ASSERT(m_iUsed >= 0); + } else { + ASSERT(m_iUsed == 0); + } + return pNode; + }; + private: + INT m_iCacheSize; + INT m_iUsed; + CNode *m_pHead; + }; + +protected: + + CNode* m_pFirst; /* Pointer to first node in the list */ + CNode* m_pLast; /* Pointer to the last node in the list */ + LONG m_Count; /* Number of nodes currently in the list */ + +private: + + CNodeCache m_Cache; /* Cache of unused node pointers */ + +private: + + /* These override the default copy constructor and assignment + operator for all list classes. They are in the private class + declaration section so that anybody trying to pass a list + object by value will generate a compile time error of + "cannot access the private member function". If these were + not here then the compiler will create default constructors + and assignment operators which when executed first take a + copy of all member variables and then during destruction + delete them all. This must not be done for any heap + allocated data. + */ + CBaseList(const CBaseList &refList); + CBaseList &operator=(const CBaseList &refList); + +public: + + CBaseList(TCHAR *pName, + INT iItems); + + CBaseList(TCHAR *pName); +#ifdef UNICODE + CBaseList(CHAR *pName, + INT iItems); + + CBaseList(CHAR *pName); +#endif + ~CBaseList(); + + /* Remove all the nodes from *this i.e. make the list empty */ + void RemoveAll(); + + + /* Return a cursor which identifies the first element of *this */ + POSITION GetHeadPositionI() const; + + + /* Return a cursor which identifies the last element of *this */ + POSITION GetTailPositionI() const; + + + /* Return the number of objects in *this */ + int GetCountI() const; + +protected: + /* Return the pointer to the object at rp, + Update rp to the next node in *this + but make it NULL if it was at the end of *this. + This is a wart retained for backwards compatibility. + GetPrev is not implemented. + Use Next, Prev and Get separately. + */ + void *GetNextI(POSITION& rp) const; + + + /* Return a pointer to the object at p + Asking for the object at NULL will return NULL harmlessly. + */ + void *GetI(POSITION p) const; + +public: + /* return the next / prev position in *this + return NULL when going past the end/start. + Next(NULL) is same as GetHeadPosition() + Prev(NULL) is same as GetTailPosition() + An n element list therefore behaves like a n+1 element + cycle with NULL at the start/end. + + !!WARNING!! - This handling of NULL is DIFFERENT from GetNext. + + Some reasons are: + 1. For a list of n items there are n+1 positions to insert + These are conveniently encoded as the n POSITIONs and NULL. + 2. If you are keeping a list sorted (fairly common) and you + search forward for an element to insert before and don't + find it you finish up with NULL as the element before which + to insert. You then want that NULL to be a valid POSITION + so that you can insert before it and you want that insertion + point to mean the (n+1)-th one that doesn't have a POSITION. + (symmetrically if you are working backwards through the list). + 3. It simplifies the algebra which the methods generate. + e.g. AddBefore(p,x) is identical to AddAfter(Prev(p),x) + in ALL cases. All the other arguments probably are reflections + of the algebraic point. + */ + POSITION Next(POSITION pos) const + { + if (pos == NULL) { + return (POSITION) m_pFirst; + } + CNode *pn = (CNode *) pos; + return (POSITION) pn->Next(); + } //Next + + // See Next + POSITION Prev(POSITION pos) const + { + if (pos == NULL) { + return (POSITION) m_pLast; + } + CNode *pn = (CNode *) pos; + return (POSITION) pn->Prev(); + } //Prev + + + /* Return the first position in *this which holds the given + pointer. Return NULL if the pointer was not not found. + */ +protected: + POSITION FindI( void * pObj) const; + + /* Remove the first node in *this (deletes the pointer to its + object from the list, does not free the object itself). + Return the pointer to its object. + If *this was already empty it will harmlessly return NULL. + */ + void *RemoveHeadI(); + + + /* Remove the last node in *this (deletes the pointer to its + object from the list, does not free the object itself). + Return the pointer to its object. + If *this was already empty it will harmlessly return NULL. + */ + void *RemoveTailI(); + + + /* Remove the node identified by p from the list (deletes the pointer + to its object from the list, does not free the object itself). + Asking to Remove the object at NULL will harmlessly return NULL. + Return the pointer to the object removed. + */ + void *RemoveI(POSITION p); + + /* Add single object *pObj to become a new last element of the list. + Return the new tail position, NULL if it fails. + If you are adding a COM objects, you might want AddRef it first. + Other existing POSITIONs in *this are still valid + */ + POSITION AddTailI(void * pObj); +public: + + + /* Add all the elements in *pList to the tail of *this. + This duplicates all the nodes in *pList (i.e. duplicates + all its pointers to objects). It does not duplicate the objects. + If you are adding a list of pointers to a COM object into the list + it's a good idea to AddRef them all it when you AddTail it. + Return TRUE if it all worked, FALSE if it didn't. + If it fails some elements may have been added. + Existing POSITIONs in *this are still valid + + If you actually want to MOVE the elements, use MoveToTail instead. + */ + BOOL AddTail(CBaseList *pList); + + + /* Mirror images of AddHead: */ + + /* Add single object to become a new first element of the list. + Return the new head position, NULL if it fails. + Existing POSITIONs in *this are still valid + */ +protected: + POSITION AddHeadI(void * pObj); +public: + + /* Add all the elements in *pList to the head of *this. + Same warnings apply as for AddTail. + Return TRUE if it all worked, FALSE if it didn't. + If it fails some of the objects may have been added. + + If you actually want to MOVE the elements, use MoveToHead instead. + */ + BOOL AddHead(CBaseList *pList); + + + /* Add the object *pObj to *this after position p in *this. + AddAfter(NULL,x) adds x to the start - equivalent to AddHead + Return the position of the object added, NULL if it failed. + Existing POSITIONs in *this are undisturbed, including p. + */ +protected: + POSITION AddAfterI(POSITION p, void * pObj); +public: + + /* Add the list *pList to *this after position p in *this + AddAfter(NULL,x) adds x to the start - equivalent to AddHead + Return TRUE if it all worked, FALSE if it didn't. + If it fails, some of the objects may be added + Existing POSITIONs in *this are undisturbed, including p. + */ + BOOL AddAfter(POSITION p, CBaseList *pList); + + + /* Mirror images: + Add the object *pObj to this-List after position p in *this. + AddBefore(NULL,x) adds x to the end - equivalent to AddTail + Return the position of the new object, NULL if it fails + Existing POSITIONs in *this are undisturbed, including p. + */ + protected: + POSITION AddBeforeI(POSITION p, void * pObj); + public: + + /* Add the list *pList to *this before position p in *this + AddAfter(NULL,x) adds x to the start - equivalent to AddHead + Return TRUE if it all worked, FALSE if it didn't. + If it fails, some of the objects may be added + Existing POSITIONs in *this are undisturbed, including p. + */ + BOOL AddBefore(POSITION p, CBaseList *pList); + + + /* Note that AddAfter(p,x) is equivalent to AddBefore(Next(p),x) + even in cases where p is NULL or Next(p) is NULL. + Similarly for mirror images etc. + This may make it easier to argue about programs. + */ + + + + /* The following operations do not copy any elements. + They move existing blocks of elements around by switching pointers. + They are fairly efficient for long lists as for short lists. + (Alas, the Count slows things down). + + They split the list into two parts. + One part remains as the original list, the other part + is appended to the second list. There are eight possible + variations: + Split the list {after/before} a given element + keep the {head/tail} portion in the original list + append the rest to the {head/tail} of the new list. + + Since After is strictly equivalent to Before Next + we are not in serious need of the Before/After variants. + That leaves only four. + + If you are processing a list left to right and dumping + the bits that you have processed into another list as + you go, the Tail/Tail variant gives the most natural result. + If you are processing in reverse order, Head/Head is best. + + By using NULL positions and empty lists judiciously either + of the other two can be built up in two operations. + + The definition of NULL (see Next/Prev etc) means that + degenerate cases include + "move all elements to new list" + "Split a list into two lists" + "Concatenate two lists" + (and quite a few no-ops) + + !!WARNING!! The type checking won't buy you much if you get list + positions muddled up - e.g. use a POSITION that's in a different + list and see what a mess you get! + */ + + /* Split *this after position p in *this + Retain as *this the tail portion of the original *this + Add the head portion to the tail end of *pList + Return TRUE if it all worked, FALSE if it didn't. + + e.g. + foo->MoveToTail(foo->GetHeadPosition(), bar); + moves one element from the head of foo to the tail of bar + foo->MoveToTail(NULL, bar); + is a no-op, returns NULL + foo->MoveToTail(foo->GetTailPosition, bar); + concatenates foo onto the end of bar and empties foo. + + A better, except excessively long name might be + MoveElementsFromHeadThroughPositionToOtherTail + */ + BOOL MoveToTail(POSITION pos, CBaseList *pList); + + + /* Mirror image: + Split *this before position p in *this. + Retain in *this the head portion of the original *this + Add the tail portion to the start (i.e. head) of *pList + + e.g. + foo->MoveToHead(foo->GetTailPosition(), bar); + moves one element from the tail of foo to the head of bar + foo->MoveToHead(NULL, bar); + is a no-op, returns NULL + foo->MoveToHead(foo->GetHeadPosition, bar); + concatenates foo onto the start of bar and empties foo. + */ + BOOL MoveToHead(POSITION pos, CBaseList *pList); + + + /* Reverse the order of the [pointers to] objects in *this + */ + void Reverse(); + + + /* set cursor to the position of each element of list in turn */ + #define TRAVERSELIST(list, cursor) \ + for ( cursor = (list).GetHeadPosition() \ + ; cursor!=NULL \ + ; cursor = (list).Next(cursor) \ + ) + + + /* set cursor to the position of each element of list in turn + in reverse order + */ + #define REVERSETRAVERSELIST(list, cursor) \ + for ( cursor = (list).GetTailPosition() \ + ; cursor!=NULL \ + ; cursor = (list).Prev(cursor) \ + ) + +}; // end of class declaration + +template class CGenericList : public CBaseList +{ +public: + CGenericList(TCHAR *pName, + INT iItems, + BOOL bLock = TRUE, + BOOL bAlert = FALSE) : + CBaseList(pName, iItems) { + UNREFERENCED_PARAMETER(bAlert); + UNREFERENCED_PARAMETER(bLock); + }; + CGenericList(TCHAR *pName) : + CBaseList(pName) { + }; + + POSITION GetHeadPosition() const { return (POSITION)m_pFirst; } + POSITION GetTailPosition() const { return (POSITION)m_pLast; } + int GetCount() const { return m_Count; } + + OBJECT *GetNext(POSITION& rp) const { return (OBJECT *) GetNextI(rp); } + + OBJECT *Get(POSITION p) const { return (OBJECT *) GetI(p); } + OBJECT *GetHead() const { return Get(GetHeadPosition()); } + + OBJECT *RemoveHead() { return (OBJECT *) RemoveHeadI(); } + + OBJECT *RemoveTail() { return (OBJECT *) RemoveTailI(); } + + OBJECT *Remove(POSITION p) { return (OBJECT *) RemoveI(p); } + POSITION AddBefore(POSITION p, OBJECT * pObj) { return AddBeforeI(p, pObj); } + POSITION AddAfter(POSITION p, OBJECT * pObj) { return AddAfterI(p, pObj); } + POSITION AddHead(OBJECT * pObj) { return AddHeadI(pObj); } + POSITION AddTail(OBJECT * pObj) { return AddTailI(pObj); } + BOOL AddTail(CGenericList *pList) + { return CBaseList::AddTail((CBaseList *) pList); } + BOOL AddHead(CGenericList *pList) + { return CBaseList::AddHead((CBaseList *) pList); } + BOOL AddAfter(POSITION p, CGenericList *pList) + { return CBaseList::AddAfter(p, (CBaseList *) pList); }; + BOOL AddBefore(POSITION p, CGenericList *pList) + { return CBaseList::AddBefore(p, (CBaseList *) pList); }; + POSITION Find( OBJECT * pObj) const { return FindI(pObj); } +}; // end of class declaration + + + +/* These define the standard list types */ + +typedef CGenericList CBaseObjectList; +typedef CGenericList CBaseInterfaceList; + +#endif /* __WXLIST__ */ + diff --git a/videoInputSrcAndDemos/libs/DShow/Include/wxutil.h b/videoInputSrcAndDemos/libs/DShow/Include/wxutil.h index 7ceda9f..e9e4edc 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/wxutil.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/wxutil.h @@ -1,533 +1,534 @@ -//------------------------------------------------------------------------------ -// File: WXUtil.h -// -// Desc: DirectShow base classes - defines helper classes and functions for -// building multimedia filters. -// -// Copyright (c) Microsoft Corporation. All rights reserved. -//------------------------------------------------------------------------------ - - -#ifndef __WXUTIL__ -#define __WXUTIL__ - -// eliminate spurious "statement has no effect" warnings. -#pragma warning(disable: 4705) - -// wrapper for whatever critical section we have -class CCritSec { - - // make copy constructor and assignment operator inaccessible - - CCritSec(const CCritSec &refCritSec); - CCritSec &operator=(const CCritSec &refCritSec); - - CRITICAL_SECTION m_CritSec; - -#ifdef DEBUG -public: - DWORD m_currentOwner; - DWORD m_lockCount; - BOOL m_fTrace; // Trace this one -public: - CCritSec(); - ~CCritSec(); - void Lock(); - void Unlock(); -#else - -public: - CCritSec() { - InitializeCriticalSection(&m_CritSec); - }; - - ~CCritSec() { - DeleteCriticalSection(&m_CritSec); - }; - - void Lock() { - EnterCriticalSection(&m_CritSec); - }; - - void Unlock() { - LeaveCriticalSection(&m_CritSec); - }; -#endif -}; - -// -// To make deadlocks easier to track it is useful to insert in the -// code an assertion that says whether we own a critical section or -// not. We make the routines that do the checking globals to avoid -// having different numbers of member functions in the debug and -// retail class implementations of CCritSec. In addition we provide -// a routine that allows usage of specific critical sections to be -// traced. This is NOT on by default - there are far too many. -// - -#ifdef DEBUG - BOOL WINAPI CritCheckIn(CCritSec * pcCrit); - BOOL WINAPI CritCheckIn(const CCritSec * pcCrit); - BOOL WINAPI CritCheckOut(CCritSec * pcCrit); - BOOL WINAPI CritCheckOut(const CCritSec * pcCrit); - void WINAPI DbgLockTrace(CCritSec * pcCrit, BOOL fTrace); -#else - #define CritCheckIn(x) TRUE - #define CritCheckOut(x) TRUE - #define DbgLockTrace(pc, fT) -#endif - - -// locks a critical section, and unlocks it automatically -// when the lock goes out of scope -class CAutoLock { - - // make copy constructor and assignment operator inaccessible - - CAutoLock(const CAutoLock &refAutoLock); - CAutoLock &operator=(const CAutoLock &refAutoLock); - -protected: - CCritSec * m_pLock; - -public: - CAutoLock(CCritSec * plock) - { - m_pLock = plock; - m_pLock->Lock(); - }; - - ~CAutoLock() { - m_pLock->Unlock(); - }; -}; - - - -// wrapper for event objects -class CAMEvent -{ - - // make copy constructor and assignment operator inaccessible - - CAMEvent(const CAMEvent &refEvent); - CAMEvent &operator=(const CAMEvent &refEvent); - -protected: - HANDLE m_hEvent; -public: - CAMEvent(BOOL fManualReset = FALSE); - ~CAMEvent(); - - // Cast to HANDLE - we don't support this as an lvalue - operator HANDLE () const { return m_hEvent; }; - - void Set() {EXECUTE_ASSERT(SetEvent(m_hEvent));}; - BOOL Wait(DWORD dwTimeout = INFINITE) { - return (WaitForSingleObject(m_hEvent, dwTimeout) == WAIT_OBJECT_0); - }; - void Reset() { ResetEvent(m_hEvent); }; - BOOL Check() { return Wait(0); }; -}; - - -// wrapper for event objects that do message processing -// This adds ONE method to the CAMEvent object to allow sent -// messages to be processed while waiting - -class CAMMsgEvent : public CAMEvent -{ - -public: - - // Allow SEND messages to be processed while waiting - BOOL WaitMsg(DWORD dwTimeout = INFINITE); -}; - -// old name supported for the time being -#define CTimeoutEvent CAMEvent - -// support for a worker thread - -// simple thread class supports creation of worker thread, synchronization -// and communication. Can be derived to simplify parameter passing -class AM_NOVTABLE CAMThread { - - // make copy constructor and assignment operator inaccessible - - CAMThread(const CAMThread &refThread); - CAMThread &operator=(const CAMThread &refThread); - - CAMEvent m_EventSend; - CAMEvent m_EventComplete; - - DWORD m_dwParam; - DWORD m_dwReturnVal; - -protected: - HANDLE m_hThread; - - // thread will run this function on startup - // must be supplied by derived class - virtual DWORD ThreadProc() = 0; - -public: - CAMThread(); - virtual ~CAMThread(); - - CCritSec m_AccessLock; // locks access by client threads - CCritSec m_WorkerLock; // locks access to shared objects - - // thread initially runs this. param is actually 'this'. function - // just gets this and calls ThreadProc - static DWORD WINAPI InitialThreadProc(LPVOID pv); - - // start thread running - error if already running - BOOL Create(); - - // signal the thread, and block for a response - // - DWORD CallWorker(DWORD); - - // accessor thread calls this when done with thread (having told thread - // to exit) - void Close() { - HANDLE hThread = (HANDLE)InterlockedExchangePointer(&m_hThread, 0); - if (hThread) { - WaitForSingleObject(hThread, INFINITE); - CloseHandle(hThread); - } - }; - - // ThreadExists - // Return TRUE if the thread exists. FALSE otherwise - BOOL ThreadExists(void) const - { - if (m_hThread == 0) { - return FALSE; - } else { - return TRUE; - } - } - - // wait for the next request - DWORD GetRequest(); - - // is there a request? - BOOL CheckRequest(DWORD * pParam); - - // reply to the request - void Reply(DWORD); - - // If you want to do WaitForMultipleObjects you'll need to include - // this handle in your wait list or you won't be responsive - HANDLE GetRequestHandle() const { return m_EventSend; }; - - // Find out what the request was - DWORD GetRequestParam() const { return m_dwParam; }; - - // call CoInitializeEx (COINIT_DISABLE_OLE1DDE) if - // available. S_FALSE means it's not available. - static HRESULT CoInitializeHelper(); -}; - - -// CQueue -// -// Implements a simple Queue ADT. The queue contains a finite number of -// objects, access to which is controlled by a semaphore. The semaphore -// is created with an initial count (N). Each time an object is added -// a call to WaitForSingleObject is made on the semaphore's handle. When -// this function returns a slot has been reserved in the queue for the new -// object. If no slots are available the function blocks until one becomes -// available. Each time an object is removed from the queue ReleaseSemaphore -// is called on the semaphore's handle, thus freeing a slot in the queue. -// If no objects are present in the queue the function blocks until an -// object has been added. - -#define DEFAULT_QUEUESIZE 2 - -template class CQueue { -private: - HANDLE hSemPut; // Semaphore controlling queue "putting" - HANDLE hSemGet; // Semaphore controlling queue "getting" - CRITICAL_SECTION CritSect; // Thread seriallization - int nMax; // Max objects allowed in queue - int iNextPut; // Array index of next "PutMsg" - int iNextGet; // Array index of next "GetMsg" - T *QueueObjects; // Array of objects (ptr's to void) - - void Initialize(int n) { - iNextPut = iNextGet = 0; - nMax = n; - InitializeCriticalSection(&CritSect); - hSemPut = CreateSemaphore(NULL, n, n, NULL); - hSemGet = CreateSemaphore(NULL, 0, n, NULL); - QueueObjects = new T[n]; - } - - -public: - CQueue(int n) { - Initialize(n); - } - - CQueue() { - Initialize(DEFAULT_QUEUESIZE); - } - - ~CQueue() { - delete [] QueueObjects; - DeleteCriticalSection(&CritSect); - CloseHandle(hSemPut); - CloseHandle(hSemGet); - } - - T GetQueueObject() { - int iSlot; - T Object; - LONG lPrevious; - - // Wait for someone to put something on our queue, returns straight - // away is there is already an object on the queue. - // - WaitForSingleObject(hSemGet, INFINITE); - - EnterCriticalSection(&CritSect); - iSlot = iNextGet++ % nMax; - Object = QueueObjects[iSlot]; - LeaveCriticalSection(&CritSect); - - // Release anyone waiting to put an object onto our queue as there - // is now space available in the queue. - // - ReleaseSemaphore(hSemPut, 1L, &lPrevious); - return Object; - } - - void PutQueueObject(T Object) { - int iSlot; - LONG lPrevious; - - // Wait for someone to get something from our queue, returns straight - // away is there is already an empty slot on the queue. - // - WaitForSingleObject(hSemPut, INFINITE); - - EnterCriticalSection(&CritSect); - iSlot = iNextPut++ % nMax; - QueueObjects[iSlot] = Object; - LeaveCriticalSection(&CritSect); - - // Release anyone waiting to remove an object from our queue as there - // is now an object available to be removed. - // - ReleaseSemaphore(hSemGet, 1L, &lPrevious); - } -}; - -// miscellaneous string conversion functions -// NOTE: as we need to use the same binaries on Win95 as on NT this code should -// be compiled WITHOUT unicode being defined. Otherwise we will not pick up -// these internal routines and the binary will not run on Win95. - -int WINAPIV wsprintfWInternal(LPWSTR, LPCWSTR, ...); - -LPWSTR -WINAPI -lstrcpyWInternal( - LPWSTR lpString1, - LPCWSTR lpString2 - ); -LPWSTR -WINAPI -lstrcpynWInternal( - LPWSTR lpString1, - LPCWSTR lpString2, - int iMaxLength - ); -int -WINAPI -lstrcmpWInternal( - LPCWSTR lpString1, - LPCWSTR lpString2 - ); -int -WINAPI -lstrcmpiWInternal( - LPCWSTR lpString1, - LPCWSTR lpString2 - ); -int -WINAPI -lstrlenWInternal( - LPCWSTR lpString - ); - -#ifndef UNICODE -#define wsprintfW wsprintfWInternal -#define lstrcpyW lstrcpyWInternal -#define lstrcpynW lstrcpynWInternal -#define lstrcmpW lstrcmpWInternal -#define lstrcmpiW lstrcmpiWInternal -#define lstrlenW lstrlenWInternal -#endif - -extern "C" -void * __stdcall memmoveInternal(void *, const void *, size_t); - -inline void * __cdecl memchrInternal(const void *buf, int chr, size_t cnt) -{ -#ifdef _X86_ - void *pRet = NULL; - - _asm { - cld // make sure we get the direction right - mov ecx, cnt // num of bytes to scan - mov edi, buf // pointer byte stream - mov eax, chr // byte to scan for - repne scasb // look for the byte in the byte stream - jnz exit_memchr // Z flag set if byte found - dec edi // scasb always increments edi even when it - // finds the required byte - mov pRet, edi -exit_memchr: - } - return pRet; - -#else - while ( cnt && (*(unsigned char *)buf != (unsigned char)chr) ) { - buf = (unsigned char *)buf + 1; - cnt--; - } - - return(cnt ? (void *)buf : NULL); -#endif -} - -void WINAPI IntToWstr(int i, LPWSTR wstr); - -#define WstrToInt(sz) _wtoi(sz) -#define atoiW(sz) _wtoi(sz) -#define atoiA(sz) atoi(sz) - -// These are available to help managing bitmap VIDEOINFOHEADER media structures - -extern const DWORD bits555[3]; -extern const DWORD bits565[3]; -extern const DWORD bits888[3]; - -// These help convert between VIDEOINFOHEADER and BITMAPINFO structures - -STDAPI_(const GUID) GetTrueColorType(const BITMAPINFOHEADER *pbmiHeader); -STDAPI_(const GUID) GetBitmapSubtype(const BITMAPINFOHEADER *pbmiHeader); -STDAPI_(WORD) GetBitCount(const GUID *pSubtype); - -// strmbase.lib implements this for compatibility with people who -// managed to link to this directly. we don't want to advertise it. -// -// STDAPI_(/* T */ CHAR *) GetSubtypeName(const GUID *pSubtype); - -STDAPI_(CHAR *) GetSubtypeNameA(const GUID *pSubtype); -STDAPI_(WCHAR *) GetSubtypeNameW(const GUID *pSubtype); - -#ifdef UNICODE -#define GetSubtypeName GetSubtypeNameW -#else -#define GetSubtypeName GetSubtypeNameA -#endif - -STDAPI_(LONG) GetBitmapFormatSize(const BITMAPINFOHEADER *pHeader); -STDAPI_(DWORD) GetBitmapSize(const BITMAPINFOHEADER *pHeader); -STDAPI_(BOOL) ContainsPalette(const VIDEOINFOHEADER *pVideoInfo); -STDAPI_(const RGBQUAD *) GetBitmapPalette(const VIDEOINFOHEADER *pVideoInfo); - - -// Compares two interfaces and returns TRUE if they are on the same object -BOOL WINAPI IsEqualObject(IUnknown *pFirst, IUnknown *pSecond); - -// This is for comparing pins -#define EqualPins(pPin1, pPin2) IsEqualObject(pPin1, pPin2) - - -// Arithmetic helper functions - -// Compute (a * b + rnd) / c -LONGLONG WINAPI llMulDiv(LONGLONG a, LONGLONG b, LONGLONG c, LONGLONG rnd); -LONGLONG WINAPI Int64x32Div32(LONGLONG a, LONG b, LONG c, LONG rnd); - - -// Avoids us dyna-linking to SysAllocString to copy BSTR strings -STDAPI WriteBSTR(BSTR * pstrDest, LPCWSTR szSrc); -STDAPI FreeBSTR(BSTR* pstr); - -// Return a wide string - allocating memory for it -// Returns: -// S_OK - no error -// E_POINTER - ppszReturn == NULL -// E_OUTOFMEMORY - can't allocate memory for returned string -STDAPI AMGetWideString(LPCWSTR pszString, LPWSTR *ppszReturn); - -// Special wait for objects owning windows -DWORD WINAPI WaitDispatchingMessages( - HANDLE hObject, - DWORD dwWait, - HWND hwnd = NULL, - UINT uMsg = 0, - HANDLE hEvent = NULL); - -// HRESULT_FROM_WIN32 converts ERROR_SUCCESS to a success code, but in -// our use of HRESULT_FROM_WIN32, it typically means a function failed -// to call SetLastError(), and we still want a failure code. -// -#define AmHresultFromWin32(x) (MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, x)) - -// call GetLastError and return an HRESULT value that will fail the -// SUCCEEDED() macro. -HRESULT AmGetLastErrorToHResult(void); - -// duplicate of ATL's CComPtr to avoid linker conflicts. - -IUnknown* QzAtlComPtrAssign(IUnknown** pp, IUnknown* lp); - -template -class QzCComPtr -{ -public: - typedef T _PtrClass; - QzCComPtr() {p=NULL;} - QzCComPtr(T* lp) - { - if ((p = lp) != NULL) - p->AddRef(); - } - QzCComPtr(const QzCComPtr& lp) - { - if ((p = lp.p) != NULL) - p->AddRef(); - } - ~QzCComPtr() {if (p) p->Release();} - void Release() {if (p) p->Release(); p=NULL;} - operator T*() {return (T*)p;} - T& operator*() {ASSERT(p!=NULL); return *p; } - //The assert on operator& usually indicates a bug. If this is really - //what is needed, however, take the address of the p member explicitly. - T** operator&() { ASSERT(p==NULL); return &p; } - T* operator->() { ASSERT(p!=NULL); return p; } - T* operator=(T* lp){return (T*)QzAtlComPtrAssign((IUnknown**)&p, lp);} - T* operator=(const QzCComPtr& lp) - { - return (T*)QzAtlComPtrAssign((IUnknown**)&p, lp.p); - } -#if _MSC_VER>1020 - bool operator!(){return (p == NULL);} -#else - BOOL operator!(){return (p == NULL) ? TRUE : FALSE;} -#endif - T* p; -}; - -MMRESULT CompatibleTimeSetEvent( UINT uDelay, UINT uResolution, LPTIMECALLBACK lpTimeProc, DWORD_PTR dwUser, UINT fuEvent ); -bool TimeKillSynchronousFlagAvailable( void ); - -#endif /* __WXUTIL__ */ +//------------------------------------------------------------------------------ +// File: WXUtil.h +// +// Desc: DirectShow base classes - defines helper classes and functions for +// building multimedia filters. +// +// Copyright (c) Microsoft Corporation. All rights reserved. +//------------------------------------------------------------------------------ + + +#ifndef __WXUTIL__ +#define __WXUTIL__ + +// eliminate spurious "statement has no effect" warnings. +#pragma warning(disable: 4705) + +// wrapper for whatever critical section we have +class CCritSec { + + // make copy constructor and assignment operator inaccessible + + CCritSec(const CCritSec &refCritSec); + CCritSec &operator=(const CCritSec &refCritSec); + + CRITICAL_SECTION m_CritSec; + +#ifdef DEBUG +public: + DWORD m_currentOwner; + DWORD m_lockCount; + BOOL m_fTrace; // Trace this one +public: + CCritSec(); + ~CCritSec(); + void Lock(); + void Unlock(); +#else + +public: + CCritSec() { + InitializeCriticalSection(&m_CritSec); + }; + + ~CCritSec() { + DeleteCriticalSection(&m_CritSec); + }; + + void Lock() { + EnterCriticalSection(&m_CritSec); + }; + + void Unlock() { + LeaveCriticalSection(&m_CritSec); + }; +#endif +}; + +// +// To make deadlocks easier to track it is useful to insert in the +// code an assertion that says whether we own a critical section or +// not. We make the routines that do the checking globals to avoid +// having different numbers of member functions in the debug and +// retail class implementations of CCritSec. In addition we provide +// a routine that allows usage of specific critical sections to be +// traced. This is NOT on by default - there are far too many. +// + +#ifdef DEBUG + BOOL WINAPI CritCheckIn(CCritSec * pcCrit); + BOOL WINAPI CritCheckIn(const CCritSec * pcCrit); + BOOL WINAPI CritCheckOut(CCritSec * pcCrit); + BOOL WINAPI CritCheckOut(const CCritSec * pcCrit); + void WINAPI DbgLockTrace(CCritSec * pcCrit, BOOL fTrace); +#else + #define CritCheckIn(x) TRUE + #define CritCheckOut(x) TRUE + #define DbgLockTrace(pc, fT) +#endif + + +// locks a critical section, and unlocks it automatically +// when the lock goes out of scope +class CAutoLock { + + // make copy constructor and assignment operator inaccessible + + CAutoLock(const CAutoLock &refAutoLock); + CAutoLock &operator=(const CAutoLock &refAutoLock); + +protected: + CCritSec * m_pLock; + +public: + CAutoLock(CCritSec * plock) + { + m_pLock = plock; + m_pLock->Lock(); + }; + + ~CAutoLock() { + m_pLock->Unlock(); + }; +}; + + + +// wrapper for event objects +class CAMEvent +{ + + // make copy constructor and assignment operator inaccessible + + CAMEvent(const CAMEvent &refEvent); + CAMEvent &operator=(const CAMEvent &refEvent); + +protected: + HANDLE m_hEvent; +public: + CAMEvent(BOOL fManualReset = FALSE); + ~CAMEvent(); + + // Cast to HANDLE - we don't support this as an lvalue + operator HANDLE () const { return m_hEvent; }; + + void Set() {EXECUTE_ASSERT(SetEvent(m_hEvent));}; + BOOL Wait(DWORD dwTimeout = INFINITE) { + return (WaitForSingleObject(m_hEvent, dwTimeout) == WAIT_OBJECT_0); + }; + void Reset() { ResetEvent(m_hEvent); }; + BOOL Check() { return Wait(0); }; +}; + + +// wrapper for event objects that do message processing +// This adds ONE method to the CAMEvent object to allow sent +// messages to be processed while waiting + +class CAMMsgEvent : public CAMEvent +{ + +public: + + // Allow SEND messages to be processed while waiting + BOOL WaitMsg(DWORD dwTimeout = INFINITE); +}; + +// old name supported for the time being +#define CTimeoutEvent CAMEvent + +// support for a worker thread + +// simple thread class supports creation of worker thread, synchronization +// and communication. Can be derived to simplify parameter passing +class AM_NOVTABLE CAMThread { + + // make copy constructor and assignment operator inaccessible + + CAMThread(const CAMThread &refThread); + CAMThread &operator=(const CAMThread &refThread); + + CAMEvent m_EventSend; + CAMEvent m_EventComplete; + + DWORD m_dwParam; + DWORD m_dwReturnVal; + +protected: + HANDLE m_hThread; + + // thread will run this function on startup + // must be supplied by derived class + virtual DWORD ThreadProc() = 0; + +public: + CAMThread(); + virtual ~CAMThread(); + + CCritSec m_AccessLock; // locks access by client threads + CCritSec m_WorkerLock; // locks access to shared objects + + // thread initially runs this. param is actually 'this'. function + // just gets this and calls ThreadProc + static DWORD WINAPI InitialThreadProc(LPVOID pv); + + // start thread running - error if already running + BOOL Create(); + + // signal the thread, and block for a response + // + DWORD CallWorker(DWORD); + + // accessor thread calls this when done with thread (having told thread + // to exit) + void Close() { + HANDLE hThread = (HANDLE)InterlockedExchangePointer(&m_hThread, 0); + if (hThread) { + WaitForSingleObject(hThread, INFINITE); + CloseHandle(hThread); + } + }; + + // ThreadExists + // Return TRUE if the thread exists. FALSE otherwise + BOOL ThreadExists(void) const + { + if (m_hThread == 0) { + return FALSE; + } else { + return TRUE; + } + } + + // wait for the next request + DWORD GetRequest(); + + // is there a request? + BOOL CheckRequest(DWORD * pParam); + + // reply to the request + void Reply(DWORD); + + // If you want to do WaitForMultipleObjects you'll need to include + // this handle in your wait list or you won't be responsive + HANDLE GetRequestHandle() const { return m_EventSend; }; + + // Find out what the request was + DWORD GetRequestParam() const { return m_dwParam; }; + + // call CoInitializeEx (COINIT_DISABLE_OLE1DDE) if + // available. S_FALSE means it's not available. + static HRESULT CoInitializeHelper(); +}; + + +// CQueue +// +// Implements a simple Queue ADT. The queue contains a finite number of +// objects, access to which is controlled by a semaphore. The semaphore +// is created with an initial count (N). Each time an object is added +// a call to WaitForSingleObject is made on the semaphore's handle. When +// this function returns a slot has been reserved in the queue for the new +// object. If no slots are available the function blocks until one becomes +// available. Each time an object is removed from the queue ReleaseSemaphore +// is called on the semaphore's handle, thus freeing a slot in the queue. +// If no objects are present in the queue the function blocks until an +// object has been added. + +#define DEFAULT_QUEUESIZE 2 + +template class CQueue { +private: + HANDLE hSemPut; // Semaphore controlling queue "putting" + HANDLE hSemGet; // Semaphore controlling queue "getting" + CRITICAL_SECTION CritSect; // Thread seriallization + int nMax; // Max objects allowed in queue + int iNextPut; // Array index of next "PutMsg" + int iNextGet; // Array index of next "GetMsg" + T *QueueObjects; // Array of objects (ptr's to void) + + void Initialize(int n) { + iNextPut = iNextGet = 0; + nMax = n; + InitializeCriticalSection(&CritSect); + hSemPut = CreateSemaphore(NULL, n, n, NULL); + hSemGet = CreateSemaphore(NULL, 0, n, NULL); + QueueObjects = new T[n]; + } + + +public: + CQueue(int n) { + Initialize(n); + } + + CQueue() { + Initialize(DEFAULT_QUEUESIZE); + } + + ~CQueue() { + delete [] QueueObjects; + DeleteCriticalSection(&CritSect); + CloseHandle(hSemPut); + CloseHandle(hSemGet); + } + + T GetQueueObject() { + int iSlot; + T Object; + LONG lPrevious; + + // Wait for someone to put something on our queue, returns straight + // away is there is already an object on the queue. + // + WaitForSingleObject(hSemGet, INFINITE); + + EnterCriticalSection(&CritSect); + iSlot = iNextGet++ % nMax; + Object = QueueObjects[iSlot]; + LeaveCriticalSection(&CritSect); + + // Release anyone waiting to put an object onto our queue as there + // is now space available in the queue. + // + ReleaseSemaphore(hSemPut, 1L, &lPrevious); + return Object; + } + + void PutQueueObject(T Object) { + int iSlot; + LONG lPrevious; + + // Wait for someone to get something from our queue, returns straight + // away is there is already an empty slot on the queue. + // + WaitForSingleObject(hSemPut, INFINITE); + + EnterCriticalSection(&CritSect); + iSlot = iNextPut++ % nMax; + QueueObjects[iSlot] = Object; + LeaveCriticalSection(&CritSect); + + // Release anyone waiting to remove an object from our queue as there + // is now an object available to be removed. + // + ReleaseSemaphore(hSemGet, 1L, &lPrevious); + } +}; + +// miscellaneous string conversion functions +// NOTE: as we need to use the same binaries on Win95 as on NT this code should +// be compiled WITHOUT unicode being defined. Otherwise we will not pick up +// these internal routines and the binary will not run on Win95. + +int WINAPIV wsprintfWInternal(LPWSTR, LPCWSTR, ...); + +LPWSTR +WINAPI +lstrcpyWInternal( + LPWSTR lpString1, + LPCWSTR lpString2 + ); +LPWSTR +WINAPI +lstrcpynWInternal( + LPWSTR lpString1, + LPCWSTR lpString2, + int iMaxLength + ); +int +WINAPI +lstrcmpWInternal( + LPCWSTR lpString1, + LPCWSTR lpString2 + ); +int +WINAPI +lstrcmpiWInternal( + LPCWSTR lpString1, + LPCWSTR lpString2 + ); +int +WINAPI +lstrlenWInternal( + LPCWSTR lpString + ); + +#ifndef UNICODE +#define wsprintfW wsprintfWInternal +#define lstrcpyW lstrcpyWInternal +#define lstrcpynW lstrcpynWInternal +#define lstrcmpW lstrcmpWInternal +#define lstrcmpiW lstrcmpiWInternal +#define lstrlenW lstrlenWInternal +#endif + +extern "C" +void * __stdcall memmoveInternal(void *, const void *, size_t); + +inline void * __cdecl memchrInternal(const void *buf, int chr, size_t cnt) +{ +#if defined(_X86_) && !defined(__MINGW32_MAJOR_VERSION) + + void *pRet = NULL; + + _asm { + cld // make sure we get the direction right + mov ecx, cnt // num of bytes to scan + mov edi, buf // pointer byte stream + mov eax, chr // byte to scan for + repne scasb // look for the byte in the byte stream + jnz exit_memchr // Z flag set if byte found + dec edi // scasb always increments edi even when it + // finds the required byte + mov pRet, edi +exit_memchr: + } + return pRet; + +#else + while ( cnt && (*(unsigned char *)buf != (unsigned char)chr) ) { + buf = (unsigned char *)buf + 1; + cnt--; + } + + return(cnt ? (void *)buf : NULL); +#endif +} + +void WINAPI IntToWstr(int i, LPWSTR wstr); + +#define WstrToInt(sz) _wtoi(sz) +#define atoiW(sz) _wtoi(sz) +#define atoiA(sz) atoi(sz) + +// These are available to help managing bitmap VIDEOINFOHEADER media structures + +extern const DWORD bits555[3]; +extern const DWORD bits565[3]; +extern const DWORD bits888[3]; + +// These help convert between VIDEOINFOHEADER and BITMAPINFO structures + +STDAPI_(const GUID) GetTrueColorType(const BITMAPINFOHEADER *pbmiHeader); +STDAPI_(const GUID) GetBitmapSubtype(const BITMAPINFOHEADER *pbmiHeader); +STDAPI_(WORD) GetBitCount(const GUID *pSubtype); + +// strmbase.lib implements this for compatibility with people who +// managed to link to this directly. we don't want to advertise it. +// +// STDAPI_(/* T */ CHAR *) GetSubtypeName(const GUID *pSubtype); + +STDAPI_(CHAR *) GetSubtypeNameA(const GUID *pSubtype); +STDAPI_(WCHAR *) GetSubtypeNameW(const GUID *pSubtype); + +#ifdef UNICODE +#define GetSubtypeName GetSubtypeNameW +#else +#define GetSubtypeName GetSubtypeNameA +#endif + +STDAPI_(LONG) GetBitmapFormatSize(const BITMAPINFOHEADER *pHeader); +STDAPI_(DWORD) GetBitmapSize(const BITMAPINFOHEADER *pHeader); +STDAPI_(BOOL) ContainsPalette(const VIDEOINFOHEADER *pVideoInfo); +STDAPI_(const RGBQUAD *) GetBitmapPalette(const VIDEOINFOHEADER *pVideoInfo); + + +// Compares two interfaces and returns TRUE if they are on the same object +BOOL WINAPI IsEqualObject(IUnknown *pFirst, IUnknown *pSecond); + +// This is for comparing pins +#define EqualPins(pPin1, pPin2) IsEqualObject(pPin1, pPin2) + + +// Arithmetic helper functions + +// Compute (a * b + rnd) / c +LONGLONG WINAPI llMulDiv(LONGLONG a, LONGLONG b, LONGLONG c, LONGLONG rnd); +LONGLONG WINAPI Int64x32Div32(LONGLONG a, LONG b, LONG c, LONG rnd); + + +// Avoids us dyna-linking to SysAllocString to copy BSTR strings +STDAPI WriteBSTR(BSTR * pstrDest, LPCWSTR szSrc); +STDAPI FreeBSTR(BSTR* pstr); + +// Return a wide string - allocating memory for it +// Returns: +// S_OK - no error +// E_POINTER - ppszReturn == NULL +// E_OUTOFMEMORY - can't allocate memory for returned string +STDAPI AMGetWideString(LPCWSTR pszString, LPWSTR *ppszReturn); + +// Special wait for objects owning windows +DWORD WINAPI WaitDispatchingMessages( + HANDLE hObject, + DWORD dwWait, + HWND hwnd = NULL, + UINT uMsg = 0, + HANDLE hEvent = NULL); + +// HRESULT_FROM_WIN32 converts ERROR_SUCCESS to a success code, but in +// our use of HRESULT_FROM_WIN32, it typically means a function failed +// to call SetLastError(), and we still want a failure code. +// +#define AmHresultFromWin32(x) (MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, x)) + +// call GetLastError and return an HRESULT value that will fail the +// SUCCEEDED() macro. +HRESULT AmGetLastErrorToHResult(void); + +// duplicate of ATL's CComPtr to avoid linker conflicts. + +IUnknown* QzAtlComPtrAssign(IUnknown** pp, IUnknown* lp); + +template +class QzCComPtr +{ +public: + typedef T _PtrClass; + QzCComPtr() {p=NULL;} + QzCComPtr(T* lp) + { + if ((p = lp) != NULL) + p->AddRef(); + } + QzCComPtr(const QzCComPtr& lp) + { + if ((p = lp.p) != NULL) + p->AddRef(); + } + ~QzCComPtr() {if (p) p->Release();} + void Release() {if (p) p->Release(); p=NULL;} + operator T*() {return (T*)p;} + T& operator*() {ASSERT(p!=NULL); return *p; } + //The assert on operator& usually indicates a bug. If this is really + //what is needed, however, take the address of the p member explicitly. + T** operator&() { ASSERT(p==NULL); return &p; } + T* operator->() { ASSERT(p!=NULL); return p; } + T* operator=(T* lp){return (T*)QzAtlComPtrAssign((IUnknown**)&p, lp);} + T* operator=(const QzCComPtr& lp) + { + return (T*)QzAtlComPtrAssign((IUnknown**)&p, lp.p); + } +#if _MSC_VER>1020 + bool operator!(){return (p == NULL);} +#else + BOOL operator!(){return (p == NULL) ? TRUE : FALSE;} +#endif + T* p; +}; + +MMRESULT CompatibleTimeSetEvent( UINT uDelay, UINT uResolution, LPTIMECALLBACK lpTimeProc, DWORD_PTR dwUser, UINT fuEvent ); +bool TimeKillSynchronousFlagAvailable( void ); + +#endif /* __WXUTIL__ */ diff --git a/videoInputSrcAndDemos/libs/DShow/Include/xprtdefs.h b/videoInputSrcAndDemos/libs/DShow/Include/xprtdefs.h index 996a67b..7bdde24 100755 --- a/videoInputSrcAndDemos/libs/DShow/Include/xprtdefs.h +++ b/videoInputSrcAndDemos/libs/DShow/Include/xprtdefs.h @@ -1,742 +1,742 @@ -//=========================================================================== -// -// 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) Microsoft Corporation. All rights reserved. -// -//=========================================================================== -// -// filename XPrtDefs.h (Derived from edevdefs.h) -// -// External Device (like a VCR) control interface parameter and value definitions -// -// Note:new constants added: ED_BASE+800L -> ED_BASE+811L -// -// 1-30-98: -// New constant added for DVCR: ED_BASE+900L -> ED_BASE+1000L -// 7-15-03: -// Add new constants for device transports and device types: -// ED_BASE+1001L..ED_BASE+1037L -// - -#ifndef __XPRTDEFS__ -#define __XPRTDEFS__ - - -#define ED_BASE 0x1000L - -// this is used to tell the device communications object which -// physical communications port to use. -#define DEV_PORT_SIM 1 -#define DEV_PORT_COM1 2 // standard serial ports -#define DEV_PORT_COM2 3 -#define DEV_PORT_COM3 4 -#define DEV_PORT_COM4 5 -#define DEV_PORT_DIAQ 6 // Diaquest driver -#define DEV_PORT_ARTI 7 // ARTI driver -#define DEV_PORT_1394 8 // IEEE 1394 Serial Bus -#define DEV_PORT_USB 9 // Universal Serial Bus -#define DEV_PORT_MIN DEV_PORT_SIM -#define DEV_PORT_MAX DEV_PORT_USB - - -// IAMExtDevice Capability Items: unless otherwise specified, these items return -// OATRUE or OAFALSE. All return values are in pdwValue unless otherwise specified: - -#define ED_DEVCAP_CAN_RECORD ED_BASE+1L -#define ED_DEVCAP_CAN_RECORD_STROBE ED_BASE+2L // for multitrack devices: - // switches currently recording tracks off - // and selected non-recording tracks into record -#define ED_DEVCAP_HAS_AUDIO ED_BASE+3L -#define ED_DEVCAP_HAS_VIDEO ED_BASE+4L -#define ED_DEVCAP_USES_FILES ED_BASE+5L -#define ED_DEVCAP_CAN_SAVE ED_BASE+6L - -#define ED_DEVCAP_DEVICE_TYPE ED_BASE+7L // returns one of the following: -#define ED_DEVTYPE_VCR ED_BASE+8L -#define ED_DEVTYPE_LASERDISK ED_BASE+9L -#define ED_DEVTYPE_ATR ED_BASE+10L -#define ED_DEVTYPE_DDR ED_BASE+11L -#define ED_DEVTYPE_ROUTER ED_BASE+12L -#define ED_DEVTYPE_KEYER ED_BASE+13L -#define ED_DEVTYPE_MIXER_VIDEO ED_BASE+14L -#define ED_DEVTYPE_DVE ED_BASE+15L -#define ED_DEVTYPE_WIPEGEN ED_BASE+16L -#define ED_DEVTYPE_MIXER_AUDIO ED_BASE+17L -#define ED_DEVTYPE_CG ED_BASE+18L -#define ED_DEVTYPE_TBC ED_BASE+19L -#define ED_DEVTYPE_TCG ED_BASE+20L -#define ED_DEVTYPE_GPI ED_BASE+21L -#define ED_DEVTYPE_JOYSTICK ED_BASE+22L -#define ED_DEVTYPE_KEYBOARD ED_BASE+23L - -// returns mfr-specific ID from external device. -#define ED_DEVCAP_EXTERNAL_DEVICE_ID ED_BASE+24L - -#define ED_DEVCAP_TIMECODE_READ ED_BASE+25L -#define ED_DEVCAP_TIMECODE_WRITE ED_BASE+26L -// used for seekable non-timecode enabled devices -#define ED_DEVCAP_CTLTRK_READ ED_BASE+27L -// used for seekable non-timecode enabled devices -#define ED_DEVCAP_INDEX_READ ED_BASE+28L - -// returns device preroll time in current time format -#define ED_DEVCAP_PREROLL ED_BASE+29L -// returns device postroll time in current time format -#define ED_DEVCAP_POSTROLL ED_BASE+30L - -// returns indication of device’s synchronization accuracy. -#define ED_DEVCAP_SYNC_ACCURACY ED_BASE+31L // returns one of the following: -#define ED_SYNCACC_PRECISE ED_BASE+32L -#define ED_SYNCACC_FRAME ED_BASE+33L -#define ED_SYNCACC_ROUGH ED_BASE+34L - -// returns device’s normal framerate. -#define ED_DEVCAP_NORMAL_RATE ED_BASE+35L // returns one of the following: -#define ED_RATE_24 ED_BASE+36L -#define ED_RATE_25 ED_BASE+37L -#define ED_RATE_2997 ED_BASE+38L -#define ED_RATE_30 ED_BASE+39L - -#define ED_DEVCAP_CAN_PREVIEW ED_BASE+40L -#define ED_DEVCAP_CAN_MONITOR_SOURCES ED_BASE+41L - -// indicates implementation allows testing of methods/parameters by -// setting the hi bit of a parm that makes sense - see individual methods -// for details. -#define ED_DEVCAP_CAN_TEST ED_BASE+42L - -// indicates device accepts video as an input. -#define ED_DEVCAP_VIDEO_INPUTS ED_BASE+43L - -// indicates device accepts audio as an input. -#define ED_DEVCAP_AUDIO_INPUTS ED_BASE+44L - -#define ED_DEVCAP_NEEDS_CALIBRATING ED_BASE+45L - -#define ED_DEVCAP_SEEK_TYPE ED_BASE+46L // returns one of the following: -#define ED_SEEK_PERFECT ED_BASE+47L // indicates device can execute seek - // within 1 video frames without signal - // break (like a DDR) -#define ED_SEEK_FAST ED_BASE+48L // indicates device can move pretty quick - // with short break in signal -#define ED_SEEK_SLOW ED_BASE+49L // seeks like a tape transport - -#define ED_POWER_ON ED_BASE+50L -#define ED_POWER_OFF ED_BASE+51L -#define ED_POWER_STANDBY ED_BASE+52L - -#define ED_POWER_DEVICE_DEPENDENT ED_BASE+1033L // Power is on with limited functions - -#define ED_ACTIVE ED_BASE+53L -#define ED_INACTIVE ED_BASE+54L -#define ED_ALL ED_BASE+55L -#define ED_TEST ED_BASE+56L - -// IAMExtTransport Capability Items: unless otherwise specified, these items return -// OATRUE or OAFALSE. All return values are in pdwValue unless otherwise specified: - -#define ED_TRANSCAP_CAN_EJECT ED_BASE+100L -#define ED_TRANSCAP_CAN_BUMP_PLAY ED_BASE+101L // variable speed for synchronizing -#define ED_TRANSCAP_CAN_PLAY_BACKWARDS ED_BASE+102L // servo locked for use during an edit -#define ED_TRANSCAP_CAN_SET_EE ED_BASE+103L // show device’s input on its output -#define ED_TRANSCAP_CAN_SET_PB ED_BASE+104L // show media playback on device’s output -#define ED_TRANSCAP_CAN_DELAY_VIDEO_IN ED_BASE+105L // transport can do delayed-in video edits -#define ED_TRANSCAP_CAN_DELAY_VIDEO_OUT ED_BASE+106L // transport can do delayed-out video edits -#define ED_TRANSCAP_CAN_DELAY_AUDIO_IN ED_BASE+107L // transport can do delayed-in audio edits -#define ED_TRANSCAP_CAN_DELAY_AUDIO_OUT ED_BASE+108L // transport can do delayed-out audio edits -#define ED_TRANSCAP_FWD_VARIABLE_MAX ED_BASE+109L // max forward speed (multiple of play speed) - // in pdblValue -#define ED_TRANSCAP_FWD_VARIABLE_MIN ED_BASE+800L // min forward speed (multiple of play speed) - // in pdblValue -#define ED_TRANSCAP_REV_VARIABLE_MAX ED_BASE+110L // max reverse speed (multiple of play speed) in - // pdblValue -#define ED_TRANSCAP_REV_VARIABLE_MIN ED_BASE+801L // min reverse speed (multiple of play speed) - // in pdblValue -#define ED_TRANSCAP_FWD_SHUTTLE_MAX ED_BASE+802L // max forward speed in Shuttle mode (multiple - // of play speed) in pdblValue -#define ED_TRANSCAP_FWD_SHUTTLE_MIN ED_BASE+803L // min forward speed in Shuttle mode (multiple - // of play speed) in pdblValue -#define ED_TRANSCAP_REV_SHUTTLE_MAX ED_BASE+804L // max reverse speed in Shuttle mode (multiple - // of play speed) in pdblValue -#define ED_TRANSCAP_REV_SHUTTLE_MIN ED_BASE+805L // min reverse speed in Shuttle mode (multiple - // of play speed) in pdblValue -#define ED_TRANSCAP_NUM_AUDIO_TRACKS ED_BASE+111L // returns number of audio tracks -#define ED_TRANSCAP_LTC_TRACK ED_BASE+112L // returns track number of LTC timecode track. - // ED_ALL means no dedicated timecode track -#define ED_TRANSCAP_NEEDS_TBC ED_BASE+113L // device’s output not stable -#define ED_TRANSCAP_NEEDS_CUEING ED_BASE+114L // device must be cued prior to performing edit -#define ED_TRANSCAP_CAN_INSERT ED_BASE+115L -#define ED_TRANSCAP_CAN_ASSEMBLE ED_BASE+116L -#define ED_TRANSCAP_FIELD_STEP ED_BASE+117L // device responds to Frame Advance command by - // advancing one field -#define ED_TRANSCAP_CLOCK_INC_RATE ED_BASE+118L // VISCA command - keep for compatibility -#define ED_TRANSCAP_CAN_DETECT_LENGTH ED_BASE+119L -#define ED_TRANSCAP_CAN_FREEZE ED_BASE+120L -#define ED_TRANSCAP_HAS_TUNER ED_BASE+121L -#define ED_TRANSCAP_HAS_TIMER ED_BASE+122L -#define ED_TRANSCAP_HAS_CLOCK ED_BASE+123L -#define ED_TRANSCAP_MULTIPLE_EDITS ED_BASE+806L // OATRUE means device/filter can support - // multiple edit events -#define ED_TRANSCAP_IS_MASTER ED_BASE+807L // OATRUE means device is the master clock - // for synchronizing (this sets timecode-to- - // reference clock offset for editing) -#define ED_TRANSCAP_HAS_DT ED_BASE+814L // OATRUE means device has Dynamic Tracking - -// IAMExtTransport Media States -#define ED_MEDIA_SPIN_UP ED_BASE+130L -#define ED_MEDIA_SPIN_DOWN ED_BASE+131L -#define ED_MEDIA_UNLOAD ED_BASE+132L - -// IAMExtTransport Modes -#define ED_MODE_PLAY ED_BASE+200L // Forward playback at normal speed -#define ED_MODE_STOP ED_BASE+201L -#define ED_MODE_FREEZE ED_BASE+202L // Forward pause -#define ED_MODE_THAW ED_BASE+203L -#define ED_MODE_FF ED_BASE+204L // Fast forward -#define ED_MODE_REW ED_BASE+205L // Fast rewind -#define ED_MODE_RECORD ED_BASE+206L -#define ED_MODE_RECORD_STROBE ED_BASE+207L -#define ED_MODE_RECORD_FREEZE ED_BASE+808L // Pause recording -#define ED_MODE_STEP ED_BASE+208L // same as "jog" -#define ED_MODE_STEP_FWD ED_BASE+208L // same as ED_MODE_STEP - next frame -#define ED_MODE_STEP_REV ED_BASE+809L // Previous frame -#define ED_MODE_SHUTTLE ED_BASE+209L -#define ED_MODE_EDIT_CUE ED_BASE+210L -#define ED_MODE_VAR_SPEED ED_BASE+211L -#define ED_MODE_PERFORM ED_BASE+212L // returned status only -#define ED_MODE_LINK_ON ED_BASE+280L -#define ED_MODE_LINK_OFF ED_BASE+281L -#define ED_MODE_NOTIFY_ENABLE ED_BASE+810L -#define ED_MODE_NOTIFY_DISABLE ED_BASE+811L -#define ED_MODE_SHOT_SEARCH ED_BASE+812L - - -// IAMTimecodeReader/Generator/Display defines -// -// Timecode Generator Mode params and values: -// -#define ED_TCG_TIMECODE_TYPE ED_BASE+400L // can be one of the following: -#define ED_TCG_SMPTE_LTC ED_BASE+401L -#define ED_TCG_SMPTE_VITC ED_BASE+402L -#define ED_TCG_MIDI_QF ED_BASE+403L -#define ED_TCG_MIDI_FULL ED_BASE+404L - -#define ED_TCG_FRAMERATE ED_BASE+405L // can be one of the following: -#define ED_FORMAT_SMPTE_30 ED_BASE+406L -#define ED_FORMAT_SMPTE_30DROP ED_BASE+407L -#define ED_FORMAT_SMPTE_25 ED_BASE+408L -#define ED_FORMAT_SMPTE_24 ED_BASE+409L - -#define ED_TCG_SYNC_SOURCE ED_BASE+410L // can be one of the following: -#define ED_TCG_VIDEO ED_BASE+411L -#define ED_TCG_READER ED_BASE+412L -#define ED_TCG_FREE ED_BASE+413L - -#define ED_TCG_REFERENCE_SOURCE ED_BASE+414L // can have one these values: - // ED_TCG_FREE || ED_TCG_READER - // (for regen/jamsync) - -// TimeCodeReader Mode params and values: -#define ED_TCR_SOURCE ED_BASE+416L // can be one of the following: -// ED_TCG (already defined) -#define ED_TCR_LTC ED_BASE+417L -#define ED_TCR_VITC ED_BASE+418L -#define ED_TCR_CT ED_BASE+419L // Control Track -#define ED_TCR_FTC ED_BASE+420L // File TimeCode - for file-based devices - // that wish they were transports -// ED_MODE_NOTIFY_ENABLE can be OATRUE or OAFALSE (defined in transport mode -// section of this file). -#define ED_TCR_LAST_VALUE ED_BASE+421L // for notification mode - - // successive calls to GetTimecode - // return the last read value -// TimeCode Display Mode params and values: -// -#define ED_TCD_SOURCE ED_BASE+422L // can be one of the following: -#define ED_TCR ED_BASE+423L -#define ED_TCG ED_BASE+424L - -#define ED_TCD_SIZE ED_BASE+425L // can be one of the following: -#define ED_SMALL ED_BASE+426L -#define ED_MED ED_BASE+427L -#define ED_LARGE ED_BASE+428L - -#define ED_TCD_POSITION ED_BASE+429L // can be one of the following: -#define ED_TOP 0x0001 -#define ED_MIDDLE 0x0002 -#define ED_BOTTOM 0x0004 // or’d with -#define ED_LEFT 0x0100 -#define ED_CENTER 0x0200 -#define ED_RIGHT 0x0400 - -#define ED_TCD_INTENSITY ED_BASE+436L // can be one of the following: -#define ED_HIGH ED_BASE+437L -#define ED_LOW ED_BASE+438L - -#define ED_TCD_TRANSPARENCY ED_BASE+439L // 0-4, 0 is opaque - -#define ED_TCD_INVERT ED_BASE+440L // OATRUE=black on white - // OAFALSE=white on black -// IAMExtTransport defines -// -// Transport status, params and values -// - -// IAMExtTransport Status items and and values: -#define ED_MODE ED_BASE+500L // see ED_MODE_xxx values above -#define ED_ERROR ED_BASE+501L -#define ED_LOCAL ED_BASE+502L -#define ED_RECORD_INHIBIT ED_BASE+503L -#define ED_SERVO_LOCK ED_BASE+504L -#define ED_MEDIA_PRESENT ED_BASE+505L -#define ED_MEDIA_LENGTH ED_BASE+506L -#define ED_MEDIA_SIZE ED_BASE+507L -#define ED_MEDIA_TRACK_COUNT ED_BASE+508L -#define ED_MEDIA_TRACK_LENGTH ED_BASE+509L -#define ED_MEDIA_SIDE ED_BASE+510L - -#define ED_MEDIA_TYPE ED_BASE+511L // can be one of the following: -#define ED_MEDIA_VHS ED_BASE+512L -#define ED_MEDIA_SVHS ED_BASE+513L -#define ED_MEDIA_HI8 ED_BASE+514L -#define ED_MEDIA_UMATIC ED_BASE+515L -#define ED_MEDIA_DVC ED_BASE+516L -#define ED_MEDIA_1_INCH ED_BASE+517L -#define ED_MEDIA_D1 ED_BASE+518L -#define ED_MEDIA_D2 ED_BASE+519L -#define ED_MEDIA_D3 ED_BASE+520L -#define ED_MEDIA_D5 ED_BASE+521L -#define ED_MEDIA_DBETA ED_BASE+522L -#define ED_MEDIA_BETA ED_BASE+523L -#define ED_MEDIA_8MM ED_BASE+524L -#define ED_MEDIA_DDR ED_BASE+525L -#define ED_MEDIA_SX ED_BASE+813L -#define ED_MEDIA_OTHER ED_BASE+526L -#define ED_MEDIA_CLV ED_BASE+527L -#define ED_MEDIA_CAV ED_BASE+528L -#define ED_MEDIA_POSITION ED_BASE+529L - -#define ED_MEDIA_NEO ED_BASE+531L // Mini digital tape for MPEG2TS signal -#define ED_MEDIA_MICROMV ED_MEDIA_NEO - -#define ED_LINK_MODE ED_BASE+530L // OATRUE if transport controls - // are linked to graph's RUN, - // STOP, and PAUSE methods - -// IAMExtTransport Basic Parms -#define ED_TRANSBASIC_TIME_FORMAT ED_BASE+540L // can be one of the following: -#define ED_FORMAT_MILLISECONDS ED_BASE+541L -#define ED_FORMAT_FRAMES ED_BASE+542L -#define ED_FORMAT_REFERENCE_TIME ED_BASE+543L - -#define ED_FORMAT_HMSF ED_BASE+547L -#define ED_FORMAT_TMSF ED_BASE+548L - -#define ED_TRANSBASIC_TIME_REFERENCE ED_BASE+549L // can be one of the following: -#define ED_TIMEREF_TIMECODE ED_BASE+550L -#define ED_TIMEREF_CONTROL_TRACK ED_BASE+551L -#define ED_TIMEREF_INDEX ED_BASE+552L - -#define ED_TRANSBASIC_SUPERIMPOSE ED_BASE+553L // enable/disable onscreen display -#define ED_TRANSBASIC_END_STOP_ACTION ED_BASE+554L // can be one of: ED_MODE_STOP | - // ED_MODE_REWIND | ED_MODE_FREEZE -#define ED_TRANSBASIC_RECORD_FORMAT ED_BASE+555L // can be one of the following: -#define ED_RECORD_FORMAT_SP ED_BASE+556L -#define ED_RECORD_FORMAT_LP ED_BASE+557L -#define ED_RECORD_FORMAT_EP ED_BASE+558L - -#define ED_TRANSBASIC_STEP_COUNT ED_BASE+559L -#define ED_TRANSBASIC_STEP_UNIT ED_BASE+560L // can be one of the following: -#define ED_STEP_FIELD ED_BASE+561L -#define ED_STEP_FRAME ED_BASE+562L -#define ED_STEP_3_2 ED_BASE+563L - -#define ED_TRANSBASIC_PREROLL ED_BASE+564L -#define ED_TRANSBASIC_RECPREROLL ED_BASE+565L -#define ED_TRANSBASIC_POSTROLL ED_BASE+566L -#define ED_TRANSBASIC_EDIT_DELAY ED_BASE+567L -#define ED_TRANSBASIC_PLAYTC_DELAY ED_BASE+568L -#define ED_TRANSBASIC_RECTC_DELAY ED_BASE+569L -#define ED_TRANSBASIC_EDIT_FIELD ED_BASE+570L -#define ED_TRANSBASIC_FRAME_SERVO ED_BASE+571L -#define ED_TRANSBASIC_CF_SERVO ED_BASE+572L -#define ED_TRANSBASIC_SERVO_REF ED_BASE+573L // can be one of the following: -#define ED_REF_EXTERNAL ED_BASE+574L -#define ED_REF_INPUT ED_BASE+575L -#define ED_REF_INTERNAL ED_BASE+576L -#define ED_REF_AUTO ED_BASE+577L - -#define ED_TRANSBASIC_WARN_GL ED_BASE+578L -#define ED_TRANSBASIC_SET_TRACKING ED_BASE+579L // can be one of the following: -#define ED_TRACKING_PLUS ED_BASE+580L -#define ED_TRACKING_MINUS ED_BASE+581L -#define ED_TRACKING_RESET ED_BASE+582L - -#define ED_TRANSBASIC_SET_FREEZE_TIMEOUT ED_BASE+583L -#define ED_TRANSBASIC_VOLUME_NAME ED_BASE+584L -#define ED_TRANSBASIC_BALLISTIC_1 ED_BASE+585L // space for proprietary data -#define ED_TRANSBASIC_BALLISTIC_2 ED_BASE+586L -#define ED_TRANSBASIC_BALLISTIC_3 ED_BASE+587L -#define ED_TRANSBASIC_BALLISTIC_4 ED_BASE+588L -#define ED_TRANSBASIC_BALLISTIC_5 ED_BASE+589L -#define ED_TRANSBASIC_BALLISTIC_6 ED_BASE+590L -#define ED_TRANSBASIC_BALLISTIC_7 ED_BASE+591L -#define ED_TRANSBASIC_BALLISTIC_8 ED_BASE+592L -#define ED_TRANSBASIC_BALLISTIC_9 ED_BASE+593L -#define ED_TRANSBASIC_BALLISTIC_10 ED_BASE+594L -#define ED_TRANSBASIC_BALLISTIC_11 ED_BASE+595L -#define ED_TRANSBASIC_BALLISTIC_12 ED_BASE+596L -#define ED_TRANSBASIC_BALLISTIC_13 ED_BASE+597L -#define ED_TRANSBASIC_BALLISTIC_14 ED_BASE+598L -#define ED_TRANSBASIC_BALLISTIC_15 ED_BASE+599L -#define ED_TRANSBASIC_BALLISTIC_16 ED_BASE+600L -#define ED_TRANSBASIC_BALLISTIC_17 ED_BASE+601L -#define ED_TRANSBASIC_BALLISTIC_18 ED_BASE+602L -#define ED_TRANSBASIC_BALLISTIC_19 ED_BASE+603L -#define ED_TRANSBASIC_BALLISTIC_20 ED_BASE+604L - -// consumer VCR items -#define ED_TRANSBASIC_SETCLOCK ED_BASE+605L -#define ED_TRANSBASIC_SET_COUNTER_FORMAT ED_BASE+606L // uses time format flags -#define ED_TRANSBASIC_SET_COUNTER_VALUE ED_BASE+607L - -#define ED_TRANSBASIC_SETTUNER_CH_UP ED_BASE+608L -#define ED_TRANSBASIC_SETTUNER_CH_DN ED_BASE+609L -#define ED_TRANSBASIC_SETTUNER_SK_UP ED_BASE+610L -#define ED_TRANSBASIC_SETTUNER_SK_DN ED_BASE+611L -#define ED_TRANSBASIC_SETTUNER_CH ED_BASE+612L -#define ED_TRANSBASIC_SETTUNER_NUM ED_BASE+613L - -#define ED_TRANSBASIC_SETTIMER_EVENT ED_BASE+614L -#define ED_TRANSBASIC_SETTIMER_STARTDAY ED_BASE+615L -#define ED_TRANSBASIC_SETTIMER_STARTTIME ED_BASE+616L -#define ED_TRANSBASIC_SETTIMER_STOPDAY ED_BASE+617L -#define ED_TRANSBASIC_SETTIMER_STOPTIME ED_BASE+618L - -// IAMExtTransport video parameters -#define ED_TRANSVIDEO_SET_OUTPUT ED_BASE+630L // can be one of the following: -#define ED_E2E ED_BASE+631L -#define ED_PLAYBACK ED_BASE+632L -#define ED_OFF ED_BASE+633L - -#define ED_TRANSVIDEO_SET_SOURCE ED_BASE+634L - -// IAMExtTransport audio parameters -#define ED_TRANSAUDIO_ENABLE_OUTPUT ED_BASE+640L // can be the following: -#define ED_AUDIO_ALL 0x10000000 // or any of the following OR'd together -#define ED_AUDIO_1 0x0000001L -#define ED_AUDIO_2 0x0000002L -#define ED_AUDIO_3 0x0000004L -#define ED_AUDIO_4 0x0000008L -#define ED_AUDIO_5 0x0000010L -#define ED_AUDIO_6 0x0000020L -#define ED_AUDIO_7 0x0000040L -#define ED_AUDIO_8 0x0000080L -#define ED_AUDIO_9 0x0000100L -#define ED_AUDIO_10 0x0000200L -#define ED_AUDIO_11 0x0000400L -#define ED_AUDIO_12 0x0000800L -#define ED_AUDIO_13 0x0001000L -#define ED_AUDIO_14 0x0002000L -#define ED_AUDIO_15 0x0004000L -#define ED_AUDIO_16 0x0008000L -#define ED_AUDIO_17 0x0010000L -#define ED_AUDIO_18 0x0020000L -#define ED_AUDIO_19 0x0040000L -#define ED_AUDIO_20 0x0080000L -#define ED_AUDIO_21 0x0100000L -#define ED_AUDIO_22 0x0200000L -#define ED_AUDIO_23 0x0400000L -#define ED_AUDIO_24 0x0800000L -#define ED_VIDEO 0x2000000L // for Edit props below - -#define ED_TRANSAUDIO_ENABLE_RECORD ED_BASE+642L -#define ED_TRANSAUDIO_ENABLE_SELSYNC ED_BASE+643L -#define ED_TRANSAUDIO_SET_SOURCE ED_BASE+644L -#define ED_TRANSAUDIO_SET_MONITOR ED_BASE+645L - - -// Edit Property Set-related defs - -// The following values reflect (and control) the state of an -// edit property set -#define ED_INVALID ED_BASE+652L -#define ED_EXECUTING ED_BASE+653L -#define ED_REGISTER ED_BASE+654L -#define ED_DELETE ED_BASE+655L - -// Edit property set parameters and values -#define ED_EDIT_HEVENT ED_BASE+656L // event handle to signal event - // completion -#define ED_EDIT_TEST ED_BASE+657L // returns OAFALSE if filter thinks - // edit can be done, OATRUE if not -#define ED_EDIT_IMMEDIATE ED_BASE+658L // OATRUE means start put the - // device into edit mode (editing - // "on the fly") immediately upon - // execution of Mode(ED_MODE_EDIT_CUE) -#define ED_EDIT_MODE ED_BASE+659L -// can be one of the following values: -#define ED_EDIT_MODE_ASSEMBLE ED_BASE+660L -#define ED_EDIT_MODE_INSERT ED_BASE+661L -#define ED_EDIT_MODE_CRASH_RECORD ED_BASE+662L -#define ED_EDIT_MODE_BOOKMARK_TIME ED_BASE+663L // these two are for -#define ED_EDIT_MODE_BOOKMARK_CHAPTER ED_BASE+664L // laserdisks - -#define ED_EDIT_MASTER ED_BASE+666L // OATRUE causes device - // not to synchronize - -#define ED_EDIT_TRACK ED_BASE+667L -// can be one of the following possible OR'd values: -// ED_VIDEO, ED_AUDIO_1 thru ED_AUDIO_24 (or ED_AUDIO_ALL) - -#define ED_EDIT_SRC_INPOINT ED_BASE+668L // in current time format -#define ED_EDIT_SRC_OUTPOINT ED_BASE+669L // in current time format -#define ED_EDIT_REC_INPOINT ED_BASE+670L // in current time format -#define ED_EDIT_REC_OUTPOINT ED_BASE+671L // in current time format - -#define ED_EDIT_REHEARSE_MODE ED_BASE+672L -// can be one of the following possible values: -#define ED_EDIT_BVB ED_BASE+673L // means rehearse the edit with - // "black-video-black" -#define ED_EDIT_VBV ED_BASE+674L -#define ED_EDIT_VVV ED_BASE+675L -#define ED_EDIT_PERFORM ED_BASE+676L // means perform the edit with no - // rehearsal. - -// Set this property to OATRUE to kill the edit if in progress -#define ED_EDIT_ABORT ED_BASE+677L -// how long to wait for edit to complete -#define ED_EDIT_TIMEOUT ED_BASE+678L // in current time format - -// This property causes the device to seek to a point specified by -// ED_EDIT_SEEK_MODE (see below). NOTE: Only one event at a time can seek. -#define ED_EDIT_SEEK ED_BASE+679L // OATRUE means do it now. -#define ED_EDIT_SEEK_MODE ED_BASE+680L -//possible values: -#define ED_EDIT_SEEK_EDIT_IN ED_BASE+681L // seek to edit's inpoint -#define ED_EDIT_SEEK_EDIT_OUT ED_BASE+682L // seek to edit's outpoint -#define ED_EDIT_SEEK_PREROLL ED_BASE+683L // seek to edit's - // inpoint-preroll -#define ED_EDIT_SEEK_PREROLL_CT ED_BASE+684L // seek to preroll point - // using control track (used for tapes with - // discontinuoustimecode before edit point: seek - // to inpoint using timecode, then backup to - // preroll point using control track) -#define ED_EDIT_SEEK_BOOKMARK ED_BASE+685L // seek to bookmark (just like - // timecode search) -// This property is used for multiple-VCR systems where each machine must -// cue to a different location relative to the graph's reference clock. The -// basic idea is that an edit event is setup with an ED_EDIT_OFFSET property -// that tells the VCR what offset to maintain between it's timecode (converted -// to reference clock units) and the reference clock. -#define ED_EDIT_OFFSET ED_BASE+686L // in current time format - -#define ED_EDIT_PREREAD ED_BASE+815L // OATRUE means device supports - // pre-read (recorder can also be - // player - -// -// Some error codes: -// -// device could be in local mode -#define ED_ERR_DEVICE_NOT_READY ED_BASE+700L - - - - - - -// ************************************************** -// -// New constants -// -// ************************************************** - - -// -// Additional Device type -// -#define ED_DEVTYPE_CAMERA ED_BASE+900L - -#define ED_DEVTYPE_TUNER ED_BASE+901L - -#define ED_DEVTYPE_DVHS ED_BASE+902L // Digital VHS - -#define ED_DEVTYPE_UNKNOWN ED_BASE+903L // Driver cannot determine the device type - -#define ED_DEVTYPE_CAMERA_STORAGE ED_BASE+1034L // Storage for digital still images, short video files, etc. - -#define ED_DEVTYPE_DTV ED_BASE+1035L // DTV with serial bus interface - -#define ED_DEVTYPE_PC_VIRTUAL ED_BASE+1036L // Emulated device (virtual) on a PC - - - -// -// Unknownn capability -// Instead of return E_NOTIMPL, or S_OK with OAFALSE, it may return S_OK with _UNKNOWN -// -#define ED_CAPABILITY_UNKNOWN ED_BASE+910L - - -// -// Send raw 1394/AVC extenal device command via GetTransportBasicParameters() -// This is specifically for a 1394 AVC device connected with DEV_PORT_1394. -// -#define ED_RAW_EXT_DEV_CMD ED_BASE+920L - - -// -// MEDIUM INFO -// -#define ED_MEDIA_VHSC ED_BASE+925L // New media type -#define ED_MEDIA_UNKNOWN ED_BASE+926L // Unknown media -#define ED_MEDIA_NOT_PRESENT ED_BASE+927L - - -// -// Device Control command that can result in pending state. -// -#define ED_CONTROL_HEVENT_GET ED_BASE+928L // To get a sychronous event handle -#define ED_CONTROL_HEVENT_RELEASE ED_BASE+929L // To release sychronous event handle must match what it got - -#define ED_DEV_REMOVED_HEVENT_GET ED_BASE+960L // To be a notify event and will be signal if device is removed. -#define ED_DEV_REMOVED_HEVENT_RELEASE ED_BASE+961L // Release this event handle - - -// -// TRANSPORT STATE -// -#define ED_NOTIFY_HEVENT_GET ED_BASE+930L // To get a sychronous event handle -#define ED_NOTIFY_HEVENT_RELEASE ED_BASE+931L // To release sychronous event handle must match what it got -#define ED_MODE_CHANGE_NOTIFY ED_BASE+932L // This is asynchronous operation, wait for event. - -#define ED_MODE_PLAY_FASTEST_FWD ED_BASE+933L -#define ED_MODE_PLAY_SLOWEST_FWD ED_BASE+934L -#define ED_MODE_PLAY_FASTEST_REV ED_BASE+935L -#define ED_MODE_PLAY_SLOWEST_REV ED_BASE+936L - -#define ED_MODE_WIND ED_BASE+937L -#define ED_MODE_REW_FASTEST ED_BASE+938L // High speed rewind - -#define ED_MODE_REV_PLAY ED_BASE+939L // x1 speed reverse play - -// -// Additional play modes (added post Windows XP) -// - -#define ED_MODE_PLAY_SLOW_FWD_6 ED_BASE+1001L // Slow forward -#define ED_MODE_PLAY_SLOW_FWD_5 ED_BASE+1002L -#define ED_MODE_PLAY_SLOW_FWD_4 ED_BASE+1003L -#define ED_MODE_PLAY_SLOW_FWD_3 ED_BASE+1004L -#define ED_MODE_PLAY_SLOW_FWD_2 ED_BASE+1005L -#define ED_MODE_PLAY_SLOW_FWD_1 ED_BASE+1006L - -#define ED_MODE_PLAY_FAST_FWD_1 ED_BASE+1007L // Fast forward -#define ED_MODE_PLAY_FAST_FWD_2 ED_BASE+1008L -#define ED_MODE_PLAY_FAST_FWD_3 ED_BASE+1009L -#define ED_MODE_PLAY_FAST_FWD_4 ED_BASE+1010L -#define ED_MODE_PLAY_FAST_FWD_5 ED_BASE+1011L -#define ED_MODE_PLAY_FAST_FWD_6 ED_BASE+1012L - -#define ED_MODE_PLAY_SLOW_REV_6 ED_BASE+1013L // Slow reverse -#define ED_MODE_PLAY_SLOW_REV_5 ED_BASE+1014L -#define ED_MODE_PLAY_SLOW_REV_4 ED_BASE+1015L -#define ED_MODE_PLAY_SLOW_REV_3 ED_BASE+1016L -#define ED_MODE_PLAY_SLOW_REV_2 ED_BASE+1017L -#define ED_MODE_PLAY_SLOW_REV_1 ED_BASE+1018L - -#define ED_MODE_PLAY_FAST_REV_1 ED_BASE+1019L // Fast reverse -#define ED_MODE_PLAY_FAST_REV_2 ED_BASE+1020L -#define ED_MODE_PLAY_FAST_REV_3 ED_BASE+1021L -#define ED_MODE_PLAY_FAST_REV_4 ED_BASE+1022L -#define ED_MODE_PLAY_FAST_REV_5 ED_BASE+1023L -#define ED_MODE_PLAY_FAST_REV_6 ED_BASE+1024L - -#define ED_MODE_REVERSE ED_MODE_REV_PLAY // Same as Reverse playback -#define ED_MODE_REVERSE_FREEZE ED_BASE+1025L // Pause at reverse playback - -#define ED_MODE_PLAY_SLOW_FWD_X ED_BASE+1026L // Possible response for a trick play -#define ED_MODE_PLAY_FAST_FWD_X ED_BASE+1027L // Possible response for a trick play -#define ED_MODE_PLAY_SLOW_REV_X ED_BASE+1028L // Possible response for a trick play -#define ED_MODE_PLAY_FAST_REV_X ED_BASE+1029L // Possible response for a trick play - -#define ED_MODE_STOP_START ED_BASE+1030L // Indicate stopping at the begin of a tape -#define ED_MODE_STOP_END ED_BASE+1031L // Indicate stopping at the end of a tape -#define ED_MODE_STOP_EMERGENCY ED_BASE+1032L // Indicate stopping due to an emergency - -// -// TRANSPOSRTBASIC: input and output signal -// -#define ED_TRANSBASIC_INPUT_SIGNAL ED_BASE+940L -#define ED_TRANSBASIC_OUTPUT_SIGNAL ED_BASE+941L - -#define ED_TRANSBASIC_SIGNAL_525_60_SD ED_BASE+942L -#define ED_TRANSBASIC_SIGNAL_525_60_SDL ED_BASE+943L -#define ED_TRANSBASIC_SIGNAL_625_50_SD ED_BASE+944L -#define ED_TRANSBASIC_SIGNAL_625_50_SDL ED_BASE+945L - -#define ED_TRANSBASIC_SIGNAL_625_60_HD ED_BASE+947L -#define ED_TRANSBASIC_SIGNAL_625_50_HD ED_BASE+948L - -#define ED_TRANSBASIC_SIGNAL_MPEG2TS ED_BASE+946L - -#define ED_TRANSBASIC_SIGNAL_2500_60_MPEG ED_BASE+980L -#define ED_TRANSBASIC_SIGNAL_1250_60_MPEG ED_BASE+981L -#define ED_TRANSBASIC_SIGNAL_0625_60_MPEG ED_BASE+982L - -#define ED_TRANSBASIC_SIGNAL_2500_50_MPEG ED_BASE+985L -#define ED_TRANSBASIC_SIGNAL_1250_50_MPEG ED_BASE+986L -#define ED_TRANSBASIC_SIGNAL_0625_50_MPEG ED_BASE+987L - -#define ED_TRANSBASIC_SIGNAL_UNKNOWN ED_BASE+990L - -#define ED_TRANSBASIC_SIGNAL_525_60_DV25 ED_BASE+991L -#define ED_TRANSBASIC_SIGNAL_625_50_DV25 ED_BASE+992L - -#define ED_TRANSBASIC_SIGNAL_525_60_DV50 ED_BASE+993L -#define ED_TRANSBASIC_SIGNAL_625_50_DV50 ED_BASE+994L - -#define ED_TRANSBASIC_SIGNAL_HD_60_DVH1 ED_BASE+995L // DVCPRO 100: 1080i or 720p -#define ED_TRANSBASIC_SIGNAL_HD_50_DVH1 ED_BASE+996L // DVCPRO 100: 1080i only - - - -// -// TIMECODE/AbsoluteTrackNumber/RealTimeCounter read/seek/write -// -#define ED_DEVCAP_TIMECODE_SEEK ED_BASE+950L - -#define ED_DEVCAP_ATN_READ ED_BASE+951L -#define ED_DEVCAP_ATN_SEEK ED_BASE+952L -#define ED_DEVCAP_ATN_WRITE ED_BASE+953L - -#define ED_DEVCAP_RTC_READ ED_BASE+954L -#define ED_DEVCAP_RTC_SEEK ED_BASE+955L -#define ED_DEVCAP_RTC_WRITE ED_BASE+956L - -// -// Basic parameter -// -#define ED_TIMEREF_ATN ED_BASE+958L - - -// -// GUID used to identify a class driver -// - -#ifndef OUR_GUID_ENTRY - #define OUR_GUID_ENTRY(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \ - DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8); -#endif - -// 8C0F6AF2-0EDB-44c1-8AEB-59040BD830ED MSTapeDeviceGUID -OUR_GUID_ENTRY(MSTapeDeviceGUID, -0x8C0F6AF2, 0x0EDB, 0x44c1, 0x8A, 0xEB, 0x59, 0x04, 0x0B, 0xD8, 0x30, 0xED) - -#endif // __XPRTDEFS__ - -// eof XPrtDefs.h +//=========================================================================== +// +// 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) Microsoft Corporation. All rights reserved. +// +//=========================================================================== +// +// filename XPrtDefs.h (Derived from edevdefs.h) +// +// External Device (like a VCR) control interface parameter and value definitions +// +// Note:new constants added: ED_BASE+800L -> ED_BASE+811L +// +// 1-30-98: +// New constant added for DVCR: ED_BASE+900L -> ED_BASE+1000L +// 7-15-03: +// Add new constants for device transports and device types: +// ED_BASE+1001L..ED_BASE+1037L +// + +#ifndef __XPRTDEFS__ +#define __XPRTDEFS__ + + +#define ED_BASE 0x1000L + +// this is used to tell the device communications object which +// physical communications port to use. +#define DEV_PORT_SIM 1 +#define DEV_PORT_COM1 2 // standard serial ports +#define DEV_PORT_COM2 3 +#define DEV_PORT_COM3 4 +#define DEV_PORT_COM4 5 +#define DEV_PORT_DIAQ 6 // Diaquest driver +#define DEV_PORT_ARTI 7 // ARTI driver +#define DEV_PORT_1394 8 // IEEE 1394 Serial Bus +#define DEV_PORT_USB 9 // Universal Serial Bus +#define DEV_PORT_MIN DEV_PORT_SIM +#define DEV_PORT_MAX DEV_PORT_USB + + +// IAMExtDevice Capability Items: unless otherwise specified, these items return +// OATRUE or OAFALSE. All return values are in pdwValue unless otherwise specified: + +#define ED_DEVCAP_CAN_RECORD ED_BASE+1L +#define ED_DEVCAP_CAN_RECORD_STROBE ED_BASE+2L // for multitrack devices: + // switches currently recording tracks off + // and selected non-recording tracks into record +#define ED_DEVCAP_HAS_AUDIO ED_BASE+3L +#define ED_DEVCAP_HAS_VIDEO ED_BASE+4L +#define ED_DEVCAP_USES_FILES ED_BASE+5L +#define ED_DEVCAP_CAN_SAVE ED_BASE+6L + +#define ED_DEVCAP_DEVICE_TYPE ED_BASE+7L // returns one of the following: +#define ED_DEVTYPE_VCR ED_BASE+8L +#define ED_DEVTYPE_LASERDISK ED_BASE+9L +#define ED_DEVTYPE_ATR ED_BASE+10L +#define ED_DEVTYPE_DDR ED_BASE+11L +#define ED_DEVTYPE_ROUTER ED_BASE+12L +#define ED_DEVTYPE_KEYER ED_BASE+13L +#define ED_DEVTYPE_MIXER_VIDEO ED_BASE+14L +#define ED_DEVTYPE_DVE ED_BASE+15L +#define ED_DEVTYPE_WIPEGEN ED_BASE+16L +#define ED_DEVTYPE_MIXER_AUDIO ED_BASE+17L +#define ED_DEVTYPE_CG ED_BASE+18L +#define ED_DEVTYPE_TBC ED_BASE+19L +#define ED_DEVTYPE_TCG ED_BASE+20L +#define ED_DEVTYPE_GPI ED_BASE+21L +#define ED_DEVTYPE_JOYSTICK ED_BASE+22L +#define ED_DEVTYPE_KEYBOARD ED_BASE+23L + +// returns mfr-specific ID from external device. +#define ED_DEVCAP_EXTERNAL_DEVICE_ID ED_BASE+24L + +#define ED_DEVCAP_TIMECODE_READ ED_BASE+25L +#define ED_DEVCAP_TIMECODE_WRITE ED_BASE+26L +// used for seekable non-timecode enabled devices +#define ED_DEVCAP_CTLTRK_READ ED_BASE+27L +// used for seekable non-timecode enabled devices +#define ED_DEVCAP_INDEX_READ ED_BASE+28L + +// returns device preroll time in current time format +#define ED_DEVCAP_PREROLL ED_BASE+29L +// returns device postroll time in current time format +#define ED_DEVCAP_POSTROLL ED_BASE+30L + +// returns indication of device’s synchronization accuracy. +#define ED_DEVCAP_SYNC_ACCURACY ED_BASE+31L // returns one of the following: +#define ED_SYNCACC_PRECISE ED_BASE+32L +#define ED_SYNCACC_FRAME ED_BASE+33L +#define ED_SYNCACC_ROUGH ED_BASE+34L + +// returns device’s normal framerate. +#define ED_DEVCAP_NORMAL_RATE ED_BASE+35L // returns one of the following: +#define ED_RATE_24 ED_BASE+36L +#define ED_RATE_25 ED_BASE+37L +#define ED_RATE_2997 ED_BASE+38L +#define ED_RATE_30 ED_BASE+39L + +#define ED_DEVCAP_CAN_PREVIEW ED_BASE+40L +#define ED_DEVCAP_CAN_MONITOR_SOURCES ED_BASE+41L + +// indicates implementation allows testing of methods/parameters by +// setting the hi bit of a parm that makes sense - see individual methods +// for details. +#define ED_DEVCAP_CAN_TEST ED_BASE+42L + +// indicates device accepts video as an input. +#define ED_DEVCAP_VIDEO_INPUTS ED_BASE+43L + +// indicates device accepts audio as an input. +#define ED_DEVCAP_AUDIO_INPUTS ED_BASE+44L + +#define ED_DEVCAP_NEEDS_CALIBRATING ED_BASE+45L + +#define ED_DEVCAP_SEEK_TYPE ED_BASE+46L // returns one of the following: +#define ED_SEEK_PERFECT ED_BASE+47L // indicates device can execute seek + // within 1 video frames without signal + // break (like a DDR) +#define ED_SEEK_FAST ED_BASE+48L // indicates device can move pretty quick + // with short break in signal +#define ED_SEEK_SLOW ED_BASE+49L // seeks like a tape transport + +#define ED_POWER_ON ED_BASE+50L +#define ED_POWER_OFF ED_BASE+51L +#define ED_POWER_STANDBY ED_BASE+52L + +#define ED_POWER_DEVICE_DEPENDENT ED_BASE+1033L // Power is on with limited functions + +#define ED_ACTIVE ED_BASE+53L +#define ED_INACTIVE ED_BASE+54L +#define ED_ALL ED_BASE+55L +#define ED_TEST ED_BASE+56L + +// IAMExtTransport Capability Items: unless otherwise specified, these items return +// OATRUE or OAFALSE. All return values are in pdwValue unless otherwise specified: + +#define ED_TRANSCAP_CAN_EJECT ED_BASE+100L +#define ED_TRANSCAP_CAN_BUMP_PLAY ED_BASE+101L // variable speed for synchronizing +#define ED_TRANSCAP_CAN_PLAY_BACKWARDS ED_BASE+102L // servo locked for use during an edit +#define ED_TRANSCAP_CAN_SET_EE ED_BASE+103L // show device’s input on its output +#define ED_TRANSCAP_CAN_SET_PB ED_BASE+104L // show media playback on device’s output +#define ED_TRANSCAP_CAN_DELAY_VIDEO_IN ED_BASE+105L // transport can do delayed-in video edits +#define ED_TRANSCAP_CAN_DELAY_VIDEO_OUT ED_BASE+106L // transport can do delayed-out video edits +#define ED_TRANSCAP_CAN_DELAY_AUDIO_IN ED_BASE+107L // transport can do delayed-in audio edits +#define ED_TRANSCAP_CAN_DELAY_AUDIO_OUT ED_BASE+108L // transport can do delayed-out audio edits +#define ED_TRANSCAP_FWD_VARIABLE_MAX ED_BASE+109L // max forward speed (multiple of play speed) + // in pdblValue +#define ED_TRANSCAP_FWD_VARIABLE_MIN ED_BASE+800L // min forward speed (multiple of play speed) + // in pdblValue +#define ED_TRANSCAP_REV_VARIABLE_MAX ED_BASE+110L // max reverse speed (multiple of play speed) in + // pdblValue +#define ED_TRANSCAP_REV_VARIABLE_MIN ED_BASE+801L // min reverse speed (multiple of play speed) + // in pdblValue +#define ED_TRANSCAP_FWD_SHUTTLE_MAX ED_BASE+802L // max forward speed in Shuttle mode (multiple + // of play speed) in pdblValue +#define ED_TRANSCAP_FWD_SHUTTLE_MIN ED_BASE+803L // min forward speed in Shuttle mode (multiple + // of play speed) in pdblValue +#define ED_TRANSCAP_REV_SHUTTLE_MAX ED_BASE+804L // max reverse speed in Shuttle mode (multiple + // of play speed) in pdblValue +#define ED_TRANSCAP_REV_SHUTTLE_MIN ED_BASE+805L // min reverse speed in Shuttle mode (multiple + // of play speed) in pdblValue +#define ED_TRANSCAP_NUM_AUDIO_TRACKS ED_BASE+111L // returns number of audio tracks +#define ED_TRANSCAP_LTC_TRACK ED_BASE+112L // returns track number of LTC timecode track. + // ED_ALL means no dedicated timecode track +#define ED_TRANSCAP_NEEDS_TBC ED_BASE+113L // device’s output not stable +#define ED_TRANSCAP_NEEDS_CUEING ED_BASE+114L // device must be cued prior to performing edit +#define ED_TRANSCAP_CAN_INSERT ED_BASE+115L +#define ED_TRANSCAP_CAN_ASSEMBLE ED_BASE+116L +#define ED_TRANSCAP_FIELD_STEP ED_BASE+117L // device responds to Frame Advance command by + // advancing one field +#define ED_TRANSCAP_CLOCK_INC_RATE ED_BASE+118L // VISCA command - keep for compatibility +#define ED_TRANSCAP_CAN_DETECT_LENGTH ED_BASE+119L +#define ED_TRANSCAP_CAN_FREEZE ED_BASE+120L +#define ED_TRANSCAP_HAS_TUNER ED_BASE+121L +#define ED_TRANSCAP_HAS_TIMER ED_BASE+122L +#define ED_TRANSCAP_HAS_CLOCK ED_BASE+123L +#define ED_TRANSCAP_MULTIPLE_EDITS ED_BASE+806L // OATRUE means device/filter can support + // multiple edit events +#define ED_TRANSCAP_IS_MASTER ED_BASE+807L // OATRUE means device is the master clock + // for synchronizing (this sets timecode-to- + // reference clock offset for editing) +#define ED_TRANSCAP_HAS_DT ED_BASE+814L // OATRUE means device has Dynamic Tracking + +// IAMExtTransport Media States +#define ED_MEDIA_SPIN_UP ED_BASE+130L +#define ED_MEDIA_SPIN_DOWN ED_BASE+131L +#define ED_MEDIA_UNLOAD ED_BASE+132L + +// IAMExtTransport Modes +#define ED_MODE_PLAY ED_BASE+200L // Forward playback at normal speed +#define ED_MODE_STOP ED_BASE+201L +#define ED_MODE_FREEZE ED_BASE+202L // Forward pause +#define ED_MODE_THAW ED_BASE+203L +#define ED_MODE_FF ED_BASE+204L // Fast forward +#define ED_MODE_REW ED_BASE+205L // Fast rewind +#define ED_MODE_RECORD ED_BASE+206L +#define ED_MODE_RECORD_STROBE ED_BASE+207L +#define ED_MODE_RECORD_FREEZE ED_BASE+808L // Pause recording +#define ED_MODE_STEP ED_BASE+208L // same as "jog" +#define ED_MODE_STEP_FWD ED_BASE+208L // same as ED_MODE_STEP - next frame +#define ED_MODE_STEP_REV ED_BASE+809L // Previous frame +#define ED_MODE_SHUTTLE ED_BASE+209L +#define ED_MODE_EDIT_CUE ED_BASE+210L +#define ED_MODE_VAR_SPEED ED_BASE+211L +#define ED_MODE_PERFORM ED_BASE+212L // returned status only +#define ED_MODE_LINK_ON ED_BASE+280L +#define ED_MODE_LINK_OFF ED_BASE+281L +#define ED_MODE_NOTIFY_ENABLE ED_BASE+810L +#define ED_MODE_NOTIFY_DISABLE ED_BASE+811L +#define ED_MODE_SHOT_SEARCH ED_BASE+812L + + +// IAMTimecodeReader/Generator/Display defines +// +// Timecode Generator Mode params and values: +// +#define ED_TCG_TIMECODE_TYPE ED_BASE+400L // can be one of the following: +#define ED_TCG_SMPTE_LTC ED_BASE+401L +#define ED_TCG_SMPTE_VITC ED_BASE+402L +#define ED_TCG_MIDI_QF ED_BASE+403L +#define ED_TCG_MIDI_FULL ED_BASE+404L + +#define ED_TCG_FRAMERATE ED_BASE+405L // can be one of the following: +#define ED_FORMAT_SMPTE_30 ED_BASE+406L +#define ED_FORMAT_SMPTE_30DROP ED_BASE+407L +#define ED_FORMAT_SMPTE_25 ED_BASE+408L +#define ED_FORMAT_SMPTE_24 ED_BASE+409L + +#define ED_TCG_SYNC_SOURCE ED_BASE+410L // can be one of the following: +#define ED_TCG_VIDEO ED_BASE+411L +#define ED_TCG_READER ED_BASE+412L +#define ED_TCG_FREE ED_BASE+413L + +#define ED_TCG_REFERENCE_SOURCE ED_BASE+414L // can have one these values: + // ED_TCG_FREE || ED_TCG_READER + // (for regen/jamsync) + +// TimeCodeReader Mode params and values: +#define ED_TCR_SOURCE ED_BASE+416L // can be one of the following: +// ED_TCG (already defined) +#define ED_TCR_LTC ED_BASE+417L +#define ED_TCR_VITC ED_BASE+418L +#define ED_TCR_CT ED_BASE+419L // Control Track +#define ED_TCR_FTC ED_BASE+420L // File TimeCode - for file-based devices + // that wish they were transports +// ED_MODE_NOTIFY_ENABLE can be OATRUE or OAFALSE (defined in transport mode +// section of this file). +#define ED_TCR_LAST_VALUE ED_BASE+421L // for notification mode - + // successive calls to GetTimecode + // return the last read value +// TimeCode Display Mode params and values: +// +#define ED_TCD_SOURCE ED_BASE+422L // can be one of the following: +#define ED_TCR ED_BASE+423L +#define ED_TCG ED_BASE+424L + +#define ED_TCD_SIZE ED_BASE+425L // can be one of the following: +#define ED_SMALL ED_BASE+426L +#define ED_MED ED_BASE+427L +#define ED_LARGE ED_BASE+428L + +#define ED_TCD_POSITION ED_BASE+429L // can be one of the following: +#define ED_TOP 0x0001 +#define ED_MIDDLE 0x0002 +#define ED_BOTTOM 0x0004 // or’d with +#define ED_LEFT 0x0100 +#define ED_CENTER 0x0200 +#define ED_RIGHT 0x0400 + +#define ED_TCD_INTENSITY ED_BASE+436L // can be one of the following: +#define ED_HIGH ED_BASE+437L +#define ED_LOW ED_BASE+438L + +#define ED_TCD_TRANSPARENCY ED_BASE+439L // 0-4, 0 is opaque + +#define ED_TCD_INVERT ED_BASE+440L // OATRUE=black on white + // OAFALSE=white on black +// IAMExtTransport defines +// +// Transport status, params and values +// + +// IAMExtTransport Status items and and values: +#define ED_MODE ED_BASE+500L // see ED_MODE_xxx values above +#define ED_ERROR ED_BASE+501L +#define ED_LOCAL ED_BASE+502L +#define ED_RECORD_INHIBIT ED_BASE+503L +#define ED_SERVO_LOCK ED_BASE+504L +#define ED_MEDIA_PRESENT ED_BASE+505L +#define ED_MEDIA_LENGTH ED_BASE+506L +#define ED_MEDIA_SIZE ED_BASE+507L +#define ED_MEDIA_TRACK_COUNT ED_BASE+508L +#define ED_MEDIA_TRACK_LENGTH ED_BASE+509L +#define ED_MEDIA_SIDE ED_BASE+510L + +#define ED_MEDIA_TYPE ED_BASE+511L // can be one of the following: +#define ED_MEDIA_VHS ED_BASE+512L +#define ED_MEDIA_SVHS ED_BASE+513L +#define ED_MEDIA_HI8 ED_BASE+514L +#define ED_MEDIA_UMATIC ED_BASE+515L +#define ED_MEDIA_DVC ED_BASE+516L +#define ED_MEDIA_1_INCH ED_BASE+517L +#define ED_MEDIA_D1 ED_BASE+518L +#define ED_MEDIA_D2 ED_BASE+519L +#define ED_MEDIA_D3 ED_BASE+520L +#define ED_MEDIA_D5 ED_BASE+521L +#define ED_MEDIA_DBETA ED_BASE+522L +#define ED_MEDIA_BETA ED_BASE+523L +#define ED_MEDIA_8MM ED_BASE+524L +#define ED_MEDIA_DDR ED_BASE+525L +#define ED_MEDIA_SX ED_BASE+813L +#define ED_MEDIA_OTHER ED_BASE+526L +#define ED_MEDIA_CLV ED_BASE+527L +#define ED_MEDIA_CAV ED_BASE+528L +#define ED_MEDIA_POSITION ED_BASE+529L + +#define ED_MEDIA_NEO ED_BASE+531L // Mini digital tape for MPEG2TS signal +#define ED_MEDIA_MICROMV ED_MEDIA_NEO + +#define ED_LINK_MODE ED_BASE+530L // OATRUE if transport controls + // are linked to graph's RUN, + // STOP, and PAUSE methods + +// IAMExtTransport Basic Parms +#define ED_TRANSBASIC_TIME_FORMAT ED_BASE+540L // can be one of the following: +#define ED_FORMAT_MILLISECONDS ED_BASE+541L +#define ED_FORMAT_FRAMES ED_BASE+542L +#define ED_FORMAT_REFERENCE_TIME ED_BASE+543L + +#define ED_FORMAT_HMSF ED_BASE+547L +#define ED_FORMAT_TMSF ED_BASE+548L + +#define ED_TRANSBASIC_TIME_REFERENCE ED_BASE+549L // can be one of the following: +#define ED_TIMEREF_TIMECODE ED_BASE+550L +#define ED_TIMEREF_CONTROL_TRACK ED_BASE+551L +#define ED_TIMEREF_INDEX ED_BASE+552L + +#define ED_TRANSBASIC_SUPERIMPOSE ED_BASE+553L // enable/disable onscreen display +#define ED_TRANSBASIC_END_STOP_ACTION ED_BASE+554L // can be one of: ED_MODE_STOP | + // ED_MODE_REWIND | ED_MODE_FREEZE +#define ED_TRANSBASIC_RECORD_FORMAT ED_BASE+555L // can be one of the following: +#define ED_RECORD_FORMAT_SP ED_BASE+556L +#define ED_RECORD_FORMAT_LP ED_BASE+557L +#define ED_RECORD_FORMAT_EP ED_BASE+558L + +#define ED_TRANSBASIC_STEP_COUNT ED_BASE+559L +#define ED_TRANSBASIC_STEP_UNIT ED_BASE+560L // can be one of the following: +#define ED_STEP_FIELD ED_BASE+561L +#define ED_STEP_FRAME ED_BASE+562L +#define ED_STEP_3_2 ED_BASE+563L + +#define ED_TRANSBASIC_PREROLL ED_BASE+564L +#define ED_TRANSBASIC_RECPREROLL ED_BASE+565L +#define ED_TRANSBASIC_POSTROLL ED_BASE+566L +#define ED_TRANSBASIC_EDIT_DELAY ED_BASE+567L +#define ED_TRANSBASIC_PLAYTC_DELAY ED_BASE+568L +#define ED_TRANSBASIC_RECTC_DELAY ED_BASE+569L +#define ED_TRANSBASIC_EDIT_FIELD ED_BASE+570L +#define ED_TRANSBASIC_FRAME_SERVO ED_BASE+571L +#define ED_TRANSBASIC_CF_SERVO ED_BASE+572L +#define ED_TRANSBASIC_SERVO_REF ED_BASE+573L // can be one of the following: +#define ED_REF_EXTERNAL ED_BASE+574L +#define ED_REF_INPUT ED_BASE+575L +#define ED_REF_INTERNAL ED_BASE+576L +#define ED_REF_AUTO ED_BASE+577L + +#define ED_TRANSBASIC_WARN_GL ED_BASE+578L +#define ED_TRANSBASIC_SET_TRACKING ED_BASE+579L // can be one of the following: +#define ED_TRACKING_PLUS ED_BASE+580L +#define ED_TRACKING_MINUS ED_BASE+581L +#define ED_TRACKING_RESET ED_BASE+582L + +#define ED_TRANSBASIC_SET_FREEZE_TIMEOUT ED_BASE+583L +#define ED_TRANSBASIC_VOLUME_NAME ED_BASE+584L +#define ED_TRANSBASIC_BALLISTIC_1 ED_BASE+585L // space for proprietary data +#define ED_TRANSBASIC_BALLISTIC_2 ED_BASE+586L +#define ED_TRANSBASIC_BALLISTIC_3 ED_BASE+587L +#define ED_TRANSBASIC_BALLISTIC_4 ED_BASE+588L +#define ED_TRANSBASIC_BALLISTIC_5 ED_BASE+589L +#define ED_TRANSBASIC_BALLISTIC_6 ED_BASE+590L +#define ED_TRANSBASIC_BALLISTIC_7 ED_BASE+591L +#define ED_TRANSBASIC_BALLISTIC_8 ED_BASE+592L +#define ED_TRANSBASIC_BALLISTIC_9 ED_BASE+593L +#define ED_TRANSBASIC_BALLISTIC_10 ED_BASE+594L +#define ED_TRANSBASIC_BALLISTIC_11 ED_BASE+595L +#define ED_TRANSBASIC_BALLISTIC_12 ED_BASE+596L +#define ED_TRANSBASIC_BALLISTIC_13 ED_BASE+597L +#define ED_TRANSBASIC_BALLISTIC_14 ED_BASE+598L +#define ED_TRANSBASIC_BALLISTIC_15 ED_BASE+599L +#define ED_TRANSBASIC_BALLISTIC_16 ED_BASE+600L +#define ED_TRANSBASIC_BALLISTIC_17 ED_BASE+601L +#define ED_TRANSBASIC_BALLISTIC_18 ED_BASE+602L +#define ED_TRANSBASIC_BALLISTIC_19 ED_BASE+603L +#define ED_TRANSBASIC_BALLISTIC_20 ED_BASE+604L + +// consumer VCR items +#define ED_TRANSBASIC_SETCLOCK ED_BASE+605L +#define ED_TRANSBASIC_SET_COUNTER_FORMAT ED_BASE+606L // uses time format flags +#define ED_TRANSBASIC_SET_COUNTER_VALUE ED_BASE+607L + +#define ED_TRANSBASIC_SETTUNER_CH_UP ED_BASE+608L +#define ED_TRANSBASIC_SETTUNER_CH_DN ED_BASE+609L +#define ED_TRANSBASIC_SETTUNER_SK_UP ED_BASE+610L +#define ED_TRANSBASIC_SETTUNER_SK_DN ED_BASE+611L +#define ED_TRANSBASIC_SETTUNER_CH ED_BASE+612L +#define ED_TRANSBASIC_SETTUNER_NUM ED_BASE+613L + +#define ED_TRANSBASIC_SETTIMER_EVENT ED_BASE+614L +#define ED_TRANSBASIC_SETTIMER_STARTDAY ED_BASE+615L +#define ED_TRANSBASIC_SETTIMER_STARTTIME ED_BASE+616L +#define ED_TRANSBASIC_SETTIMER_STOPDAY ED_BASE+617L +#define ED_TRANSBASIC_SETTIMER_STOPTIME ED_BASE+618L + +// IAMExtTransport video parameters +#define ED_TRANSVIDEO_SET_OUTPUT ED_BASE+630L // can be one of the following: +#define ED_E2E ED_BASE+631L +#define ED_PLAYBACK ED_BASE+632L +#define ED_OFF ED_BASE+633L + +#define ED_TRANSVIDEO_SET_SOURCE ED_BASE+634L + +// IAMExtTransport audio parameters +#define ED_TRANSAUDIO_ENABLE_OUTPUT ED_BASE+640L // can be the following: +#define ED_AUDIO_ALL 0x10000000 // or any of the following OR'd together +#define ED_AUDIO_1 0x0000001L +#define ED_AUDIO_2 0x0000002L +#define ED_AUDIO_3 0x0000004L +#define ED_AUDIO_4 0x0000008L +#define ED_AUDIO_5 0x0000010L +#define ED_AUDIO_6 0x0000020L +#define ED_AUDIO_7 0x0000040L +#define ED_AUDIO_8 0x0000080L +#define ED_AUDIO_9 0x0000100L +#define ED_AUDIO_10 0x0000200L +#define ED_AUDIO_11 0x0000400L +#define ED_AUDIO_12 0x0000800L +#define ED_AUDIO_13 0x0001000L +#define ED_AUDIO_14 0x0002000L +#define ED_AUDIO_15 0x0004000L +#define ED_AUDIO_16 0x0008000L +#define ED_AUDIO_17 0x0010000L +#define ED_AUDIO_18 0x0020000L +#define ED_AUDIO_19 0x0040000L +#define ED_AUDIO_20 0x0080000L +#define ED_AUDIO_21 0x0100000L +#define ED_AUDIO_22 0x0200000L +#define ED_AUDIO_23 0x0400000L +#define ED_AUDIO_24 0x0800000L +#define ED_VIDEO 0x2000000L // for Edit props below + +#define ED_TRANSAUDIO_ENABLE_RECORD ED_BASE+642L +#define ED_TRANSAUDIO_ENABLE_SELSYNC ED_BASE+643L +#define ED_TRANSAUDIO_SET_SOURCE ED_BASE+644L +#define ED_TRANSAUDIO_SET_MONITOR ED_BASE+645L + + +// Edit Property Set-related defs + +// The following values reflect (and control) the state of an +// edit property set +#define ED_INVALID ED_BASE+652L +#define ED_EXECUTING ED_BASE+653L +#define ED_REGISTER ED_BASE+654L +#define ED_DELETE ED_BASE+655L + +// Edit property set parameters and values +#define ED_EDIT_HEVENT ED_BASE+656L // event handle to signal event + // completion +#define ED_EDIT_TEST ED_BASE+657L // returns OAFALSE if filter thinks + // edit can be done, OATRUE if not +#define ED_EDIT_IMMEDIATE ED_BASE+658L // OATRUE means start put the + // device into edit mode (editing + // "on the fly") immediately upon + // execution of Mode(ED_MODE_EDIT_CUE) +#define ED_EDIT_MODE ED_BASE+659L +// can be one of the following values: +#define ED_EDIT_MODE_ASSEMBLE ED_BASE+660L +#define ED_EDIT_MODE_INSERT ED_BASE+661L +#define ED_EDIT_MODE_CRASH_RECORD ED_BASE+662L +#define ED_EDIT_MODE_BOOKMARK_TIME ED_BASE+663L // these two are for +#define ED_EDIT_MODE_BOOKMARK_CHAPTER ED_BASE+664L // laserdisks + +#define ED_EDIT_MASTER ED_BASE+666L // OATRUE causes device + // not to synchronize + +#define ED_EDIT_TRACK ED_BASE+667L +// can be one of the following possible OR'd values: +// ED_VIDEO, ED_AUDIO_1 thru ED_AUDIO_24 (or ED_AUDIO_ALL) + +#define ED_EDIT_SRC_INPOINT ED_BASE+668L // in current time format +#define ED_EDIT_SRC_OUTPOINT ED_BASE+669L // in current time format +#define ED_EDIT_REC_INPOINT ED_BASE+670L // in current time format +#define ED_EDIT_REC_OUTPOINT ED_BASE+671L // in current time format + +#define ED_EDIT_REHEARSE_MODE ED_BASE+672L +// can be one of the following possible values: +#define ED_EDIT_BVB ED_BASE+673L // means rehearse the edit with + // "black-video-black" +#define ED_EDIT_VBV ED_BASE+674L +#define ED_EDIT_VVV ED_BASE+675L +#define ED_EDIT_PERFORM ED_BASE+676L // means perform the edit with no + // rehearsal. + +// Set this property to OATRUE to kill the edit if in progress +#define ED_EDIT_ABORT ED_BASE+677L +// how long to wait for edit to complete +#define ED_EDIT_TIMEOUT ED_BASE+678L // in current time format + +// This property causes the device to seek to a point specified by +// ED_EDIT_SEEK_MODE (see below). NOTE: Only one event at a time can seek. +#define ED_EDIT_SEEK ED_BASE+679L // OATRUE means do it now. +#define ED_EDIT_SEEK_MODE ED_BASE+680L +//possible values: +#define ED_EDIT_SEEK_EDIT_IN ED_BASE+681L // seek to edit's inpoint +#define ED_EDIT_SEEK_EDIT_OUT ED_BASE+682L // seek to edit's outpoint +#define ED_EDIT_SEEK_PREROLL ED_BASE+683L // seek to edit's + // inpoint-preroll +#define ED_EDIT_SEEK_PREROLL_CT ED_BASE+684L // seek to preroll point + // using control track (used for tapes with + // discontinuoustimecode before edit point: seek + // to inpoint using timecode, then backup to + // preroll point using control track) +#define ED_EDIT_SEEK_BOOKMARK ED_BASE+685L // seek to bookmark (just like + // timecode search) +// This property is used for multiple-VCR systems where each machine must +// cue to a different location relative to the graph's reference clock. The +// basic idea is that an edit event is setup with an ED_EDIT_OFFSET property +// that tells the VCR what offset to maintain between it's timecode (converted +// to reference clock units) and the reference clock. +#define ED_EDIT_OFFSET ED_BASE+686L // in current time format + +#define ED_EDIT_PREREAD ED_BASE+815L // OATRUE means device supports + // pre-read (recorder can also be + // player + +// +// Some error codes: +// +// device could be in local mode +#define ED_ERR_DEVICE_NOT_READY ED_BASE+700L + + + + + + +// ************************************************** +// +// New constants +// +// ************************************************** + + +// +// Additional Device type +// +#define ED_DEVTYPE_CAMERA ED_BASE+900L + +#define ED_DEVTYPE_TUNER ED_BASE+901L + +#define ED_DEVTYPE_DVHS ED_BASE+902L // Digital VHS + +#define ED_DEVTYPE_UNKNOWN ED_BASE+903L // Driver cannot determine the device type + +#define ED_DEVTYPE_CAMERA_STORAGE ED_BASE+1034L // Storage for digital still images, short video files, etc. + +#define ED_DEVTYPE_DTV ED_BASE+1035L // DTV with serial bus interface + +#define ED_DEVTYPE_PC_VIRTUAL ED_BASE+1036L // Emulated device (virtual) on a PC + + + +// +// Unknownn capability +// Instead of return E_NOTIMPL, or S_OK with OAFALSE, it may return S_OK with _UNKNOWN +// +#define ED_CAPABILITY_UNKNOWN ED_BASE+910L + + +// +// Send raw 1394/AVC extenal device command via GetTransportBasicParameters() +// This is specifically for a 1394 AVC device connected with DEV_PORT_1394. +// +#define ED_RAW_EXT_DEV_CMD ED_BASE+920L + + +// +// MEDIUM INFO +// +#define ED_MEDIA_VHSC ED_BASE+925L // New media type +#define ED_MEDIA_UNKNOWN ED_BASE+926L // Unknown media +#define ED_MEDIA_NOT_PRESENT ED_BASE+927L + + +// +// Device Control command that can result in pending state. +// +#define ED_CONTROL_HEVENT_GET ED_BASE+928L // To get a sychronous event handle +#define ED_CONTROL_HEVENT_RELEASE ED_BASE+929L // To release sychronous event handle must match what it got + +#define ED_DEV_REMOVED_HEVENT_GET ED_BASE+960L // To be a notify event and will be signal if device is removed. +#define ED_DEV_REMOVED_HEVENT_RELEASE ED_BASE+961L // Release this event handle + + +// +// TRANSPORT STATE +// +#define ED_NOTIFY_HEVENT_GET ED_BASE+930L // To get a sychronous event handle +#define ED_NOTIFY_HEVENT_RELEASE ED_BASE+931L // To release sychronous event handle must match what it got +#define ED_MODE_CHANGE_NOTIFY ED_BASE+932L // This is asynchronous operation, wait for event. + +#define ED_MODE_PLAY_FASTEST_FWD ED_BASE+933L +#define ED_MODE_PLAY_SLOWEST_FWD ED_BASE+934L +#define ED_MODE_PLAY_FASTEST_REV ED_BASE+935L +#define ED_MODE_PLAY_SLOWEST_REV ED_BASE+936L + +#define ED_MODE_WIND ED_BASE+937L +#define ED_MODE_REW_FASTEST ED_BASE+938L // High speed rewind + +#define ED_MODE_REV_PLAY ED_BASE+939L // x1 speed reverse play + +// +// Additional play modes (added post Windows XP) +// + +#define ED_MODE_PLAY_SLOW_FWD_6 ED_BASE+1001L // Slow forward +#define ED_MODE_PLAY_SLOW_FWD_5 ED_BASE+1002L +#define ED_MODE_PLAY_SLOW_FWD_4 ED_BASE+1003L +#define ED_MODE_PLAY_SLOW_FWD_3 ED_BASE+1004L +#define ED_MODE_PLAY_SLOW_FWD_2 ED_BASE+1005L +#define ED_MODE_PLAY_SLOW_FWD_1 ED_BASE+1006L + +#define ED_MODE_PLAY_FAST_FWD_1 ED_BASE+1007L // Fast forward +#define ED_MODE_PLAY_FAST_FWD_2 ED_BASE+1008L +#define ED_MODE_PLAY_FAST_FWD_3 ED_BASE+1009L +#define ED_MODE_PLAY_FAST_FWD_4 ED_BASE+1010L +#define ED_MODE_PLAY_FAST_FWD_5 ED_BASE+1011L +#define ED_MODE_PLAY_FAST_FWD_6 ED_BASE+1012L + +#define ED_MODE_PLAY_SLOW_REV_6 ED_BASE+1013L // Slow reverse +#define ED_MODE_PLAY_SLOW_REV_5 ED_BASE+1014L +#define ED_MODE_PLAY_SLOW_REV_4 ED_BASE+1015L +#define ED_MODE_PLAY_SLOW_REV_3 ED_BASE+1016L +#define ED_MODE_PLAY_SLOW_REV_2 ED_BASE+1017L +#define ED_MODE_PLAY_SLOW_REV_1 ED_BASE+1018L + +#define ED_MODE_PLAY_FAST_REV_1 ED_BASE+1019L // Fast reverse +#define ED_MODE_PLAY_FAST_REV_2 ED_BASE+1020L +#define ED_MODE_PLAY_FAST_REV_3 ED_BASE+1021L +#define ED_MODE_PLAY_FAST_REV_4 ED_BASE+1022L +#define ED_MODE_PLAY_FAST_REV_5 ED_BASE+1023L +#define ED_MODE_PLAY_FAST_REV_6 ED_BASE+1024L + +#define ED_MODE_REVERSE ED_MODE_REV_PLAY // Same as Reverse playback +#define ED_MODE_REVERSE_FREEZE ED_BASE+1025L // Pause at reverse playback + +#define ED_MODE_PLAY_SLOW_FWD_X ED_BASE+1026L // Possible response for a trick play +#define ED_MODE_PLAY_FAST_FWD_X ED_BASE+1027L // Possible response for a trick play +#define ED_MODE_PLAY_SLOW_REV_X ED_BASE+1028L // Possible response for a trick play +#define ED_MODE_PLAY_FAST_REV_X ED_BASE+1029L // Possible response for a trick play + +#define ED_MODE_STOP_START ED_BASE+1030L // Indicate stopping at the begin of a tape +#define ED_MODE_STOP_END ED_BASE+1031L // Indicate stopping at the end of a tape +#define ED_MODE_STOP_EMERGENCY ED_BASE+1032L // Indicate stopping due to an emergency + +// +// TRANSPOSRTBASIC: input and output signal +// +#define ED_TRANSBASIC_INPUT_SIGNAL ED_BASE+940L +#define ED_TRANSBASIC_OUTPUT_SIGNAL ED_BASE+941L + +#define ED_TRANSBASIC_SIGNAL_525_60_SD ED_BASE+942L +#define ED_TRANSBASIC_SIGNAL_525_60_SDL ED_BASE+943L +#define ED_TRANSBASIC_SIGNAL_625_50_SD ED_BASE+944L +#define ED_TRANSBASIC_SIGNAL_625_50_SDL ED_BASE+945L + +#define ED_TRANSBASIC_SIGNAL_625_60_HD ED_BASE+947L +#define ED_TRANSBASIC_SIGNAL_625_50_HD ED_BASE+948L + +#define ED_TRANSBASIC_SIGNAL_MPEG2TS ED_BASE+946L + +#define ED_TRANSBASIC_SIGNAL_2500_60_MPEG ED_BASE+980L +#define ED_TRANSBASIC_SIGNAL_1250_60_MPEG ED_BASE+981L +#define ED_TRANSBASIC_SIGNAL_0625_60_MPEG ED_BASE+982L + +#define ED_TRANSBASIC_SIGNAL_2500_50_MPEG ED_BASE+985L +#define ED_TRANSBASIC_SIGNAL_1250_50_MPEG ED_BASE+986L +#define ED_TRANSBASIC_SIGNAL_0625_50_MPEG ED_BASE+987L + +#define ED_TRANSBASIC_SIGNAL_UNKNOWN ED_BASE+990L + +#define ED_TRANSBASIC_SIGNAL_525_60_DV25 ED_BASE+991L +#define ED_TRANSBASIC_SIGNAL_625_50_DV25 ED_BASE+992L + +#define ED_TRANSBASIC_SIGNAL_525_60_DV50 ED_BASE+993L +#define ED_TRANSBASIC_SIGNAL_625_50_DV50 ED_BASE+994L + +#define ED_TRANSBASIC_SIGNAL_HD_60_DVH1 ED_BASE+995L // DVCPRO 100: 1080i or 720p +#define ED_TRANSBASIC_SIGNAL_HD_50_DVH1 ED_BASE+996L // DVCPRO 100: 1080i only + + + +// +// TIMECODE/AbsoluteTrackNumber/RealTimeCounter read/seek/write +// +#define ED_DEVCAP_TIMECODE_SEEK ED_BASE+950L + +#define ED_DEVCAP_ATN_READ ED_BASE+951L +#define ED_DEVCAP_ATN_SEEK ED_BASE+952L +#define ED_DEVCAP_ATN_WRITE ED_BASE+953L + +#define ED_DEVCAP_RTC_READ ED_BASE+954L +#define ED_DEVCAP_RTC_SEEK ED_BASE+955L +#define ED_DEVCAP_RTC_WRITE ED_BASE+956L + +// +// Basic parameter +// +#define ED_TIMEREF_ATN ED_BASE+958L + + +// +// GUID used to identify a class driver +// + +#ifndef OUR_GUID_ENTRY + #define OUR_GUID_ENTRY(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \ + DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8); +#endif + +// 8C0F6AF2-0EDB-44c1-8AEB-59040BD830ED MSTapeDeviceGUID +OUR_GUID_ENTRY(MSTapeDeviceGUID, +0x8C0F6AF2, 0x0EDB, 0x44c1, 0x8A, 0xEB, 0x59, 0x04, 0x0B, 0xD8, 0x30, 0xED) + +#endif // __XPRTDEFS__ + +// eof XPrtDefs.h diff --git a/videoInputSrcAndDemos/libs/DShow/lib/lib.zip b/videoInputSrcAndDemos/libs/DShow/lib/lib.zip deleted file mode 100755 index 9141284..0000000 Binary files a/videoInputSrcAndDemos/libs/DShow/lib/lib.zip and /dev/null differ diff --git a/videoInputSrcAndDemos/libs/extra/myqedit.h b/videoInputSrcAndDemos/libs/extra/myqedit.h new file mode 100644 index 0000000..bc54576 --- /dev/null +++ b/videoInputSrcAndDemos/libs/extra/myqedit.h @@ -0,0 +1,89 @@ +/////////////////////////////////////////////////////////////////////////////////// + +#ifndef __myqedit_h__ +#define __myqedit_h__ + +/////////////////////////////////////////////////////////////////////////////////// + +#pragma once + +/////////////////////////////////////////////////////////////////////////////////// + +interface +ISampleGrabberCB +: + public IUnknown +{ + virtual STDMETHODIMP SampleCB( double SampleTime, IMediaSample *pSample ) = 0; + virtual STDMETHODIMP BufferCB( double SampleTime, BYTE *pBuffer, long BufferLen ) = 0; +}; + +/////////////////////////////////////////////////////////////////////////////////// + +static +const +IID IID_ISampleGrabberCB = { 0x0579154A, 0x2B53, 0x4994, { 0xB0, 0xD0, 0xE7, 0x73, 0x14, 0x8E, 0xFF, 0x85 } }; + +/////////////////////////////////////////////////////////////////////////////////// + +interface +ISampleGrabber +: + public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE SetOneShot( BOOL OneShot ) = 0; + virtual HRESULT STDMETHODCALLTYPE SetMediaType( const AM_MEDIA_TYPE *pType ) = 0; + virtual HRESULT STDMETHODCALLTYPE GetConnectedMediaType( AM_MEDIA_TYPE *pType ) = 0; + virtual HRESULT STDMETHODCALLTYPE SetBufferSamples( BOOL BufferThem ) = 0; + virtual HRESULT STDMETHODCALLTYPE GetCurrentBuffer( long *pBufferSize, long *pBuffer ) = 0; + virtual HRESULT STDMETHODCALLTYPE GetCurrentSample( IMediaSample **ppSample ) = 0; + virtual HRESULT STDMETHODCALLTYPE SetCallback( ISampleGrabberCB *pCallback, long WhichMethodToCallback ) = 0; +}; + +/////////////////////////////////////////////////////////////////////////////////// + +static +const +IID IID_ISampleGrabber = { 0x6B652FFF, 0x11FE, 0x4fce, { 0x92, 0xAD, 0x02, 0x66, 0xB5, 0xD7, 0xC7, 0x8F } }; + +/////////////////////////////////////////////////////////////////////////////////// + +static +const +CLSID CLSID_SampleGrabber = { 0xC1F400A0, 0x3F08, 0x11d3, { 0x9F, 0x0B, 0x00, 0x60, 0x08, 0x03, 0x9E, 0x37 } }; + +/////////////////////////////////////////////////////////////////////////////////// + +static +const +CLSID CLSID_NullRenderer = { 0xC1F400A4, 0x3F08, 0x11d3, { 0x9F, 0x0B, 0x00, 0x60, 0x08, 0x03, 0x9E, 0x37 } }; + +/////////////////////////////////////////////////////////////////////////////////// + +static +const +CLSID CLSID_VideoEffects1Category = { 0xcc7bfb42, 0xf175, 0x11d1, { 0xa3, 0x92, 0x0, 0xe0, 0x29, 0x1f, 0x39, 0x59 } }; + +/////////////////////////////////////////////////////////////////////////////////// + +static +const +CLSID CLSID_VideoEffects2Category = { 0xcc7bfb43, 0xf175, 0x11d1, { 0xa3, 0x92, 0x0, 0xe0, 0x29, 0x1f, 0x39, 0x59 } }; + +/////////////////////////////////////////////////////////////////////////////////// + +static +const +CLSID CLSID_AudioEffects1Category = { 0xcc7bfb44, 0xf175, 0x11d1, { 0xa3, 0x92, 0x0, 0xe0, 0x29, 0x1f, 0x39, 0x59 } }; + +/////////////////////////////////////////////////////////////////////////////////// + +static +const +CLSID CLSID_AudioEffects2Category = { 0xcc7bfb45, 0xf175, 0x11d1, { 0xa3, 0x92, 0x0, 0xe0, 0x29, 0x1f, 0x39, 0x59 } }; + +/////////////////////////////////////////////////////////////////////////////////// + +#endif + +/////////////////////////////////////////////////////////////////////////////////// diff --git a/videoInputSrcAndDemos/libs/videoInput/videoInput.cpp b/videoInputSrcAndDemos/libs/videoInput/videoInput.cpp index 59b5d77..7a607b4 100755 --- a/videoInputSrcAndDemos/libs/videoInput/videoInput.cpp +++ b/videoInputSrcAndDemos/libs/videoInput/videoInput.cpp @@ -1,2335 +1,2472 @@ -//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -//IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -//FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -//AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -//LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -//OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -//THE SOFTWARE. - -#define DEBUG 1 -#define _DEBUG 1 - -#include "videoInput.h" -#include "tchar.h" - -//Include Directshow stuff here so we don't worry about needing all the h files. -#include "DShow.h" -#include "streams.h" -#include "qedit.h" -#include "vector" -#include "Aviriff.h" -#include "Windows.h" - -//for threading -#include - -/////////////////////////// HANDY FUNCTIONS ///////////////////////////// - -void MyFreeMediaType(AM_MEDIA_TYPE& mt){ - if (mt.cbFormat != 0) - { - CoTaskMemFree((PVOID)mt.pbFormat); - mt.cbFormat = 0; - mt.pbFormat = NULL; - } - if (mt.pUnk != NULL) - { - // Unecessary because pUnk should not be used, but safest. - mt.pUnk->Release(); - mt.pUnk = NULL; - } -} - -void MyDeleteMediaType(AM_MEDIA_TYPE *pmt) -{ - if (pmt != NULL) - { - MyFreeMediaType(*pmt); - CoTaskMemFree(pmt); - } -} - -////////////////////////////// CALLBACK //////////////////////////////// - -//Callback class -class SampleGrabberCallback : public ISampleGrabberCB{ -public: - - //------------------------------------------------ - SampleGrabberCallback(){ - InitializeCriticalSection(&critSection); - freezeCheck = 0; - - - bufferSetup = false; - newFrame = false; - latestBufferLength = 0; - - hEvent = CreateEvent(NULL, true, false, NULL); - } - - - //------------------------------------------------ - ~SampleGrabberCallback(){ - ptrBuffer = NULL; - DeleteCriticalSection(&critSection); - CloseHandle(hEvent); - if(bufferSetup){ - delete pixels; - } - } - - - //------------------------------------------------ - bool setupBuffer(int numBytesIn){ - if(bufferSetup){ - return false; - }else{ - numBytes = numBytesIn; - pixels = new unsigned char[numBytes]; - bufferSetup = true; - newFrame = false; - latestBufferLength = 0; - } - return true; - } - - - //------------------------------------------------ - STDMETHODIMP_(ULONG) AddRef() { return 1; } - STDMETHODIMP_(ULONG) Release() { return 2; } - - - //------------------------------------------------ - STDMETHODIMP QueryInterface(REFIID riid, void **ppvObject){ - *ppvObject = static_cast(this); - return S_OK; - } - - - //This method is meant to have less overhead - //------------------------------------------------ - STDMETHODIMP SampleCB(double Time, IMediaSample *pSample){ - if(WaitForSingleObject(hEvent, 0) == WAIT_OBJECT_0) return S_OK; - - HRESULT hr = pSample->GetPointer(&ptrBuffer); - - if(hr == S_OK){ - latestBufferLength = pSample->GetActualDataLength(); - if(latestBufferLength == numBytes){ - EnterCriticalSection(&critSection); - memcpy(pixels, ptrBuffer, latestBufferLength); - newFrame = true; - freezeCheck = 1; - LeaveCriticalSection(&critSection); - SetEvent(hEvent); - }else{ - printf("ERROR: SampleCB() - buffer sizes do not match\n"); - } - } - - return S_OK; - } - - - //This method is meant to have more overhead - STDMETHODIMP BufferCB(double Time, BYTE *pBuffer, long BufferLen){ - return E_NOTIMPL; - } - - int freezeCheck; - - int latestBufferLength; - int numBytes; - bool newFrame; - bool bufferSetup; - unsigned char * pixels; - unsigned char * ptrBuffer; - CRITICAL_SECTION critSection; - HANDLE hEvent; -}; - - -////////////////////////////// VIDEO DEVICE //////////////////////////////// - -// ---------------------------------------------------------------------- -// Should this class also be the callback? -// -// ---------------------------------------------------------------------- - -videoDevice::videoDevice(){ - - pCaptureGraph = NULL; // Capture graph builder object - pGraph = NULL; // Graph builder object - pControl = NULL; // Media control object - pVideoInputFilter = NULL; // Video Capture filter - pGrabber = NULL; // Grabs frame - pDestFilter = NULL; // Null Renderer Filter - pGrabberF = NULL; // Grabber Filter - pMediaEvent = NULL; - streamConf = NULL; - pAmMediaType = NULL; - - //This is our callback class that processes the frame. - sgCallback = new SampleGrabberCallback(); - sgCallback->newFrame = false; - - //Default values for capture type - videoType = MEDIASUBTYPE_RGB24; - connection = PhysConn_Video_Composite; - storeConn = 0; - - videoSize = 0; - width = 0; - height = 0; - tryWidth = 0; - tryHeight = 0; - nFramesForReconnect= 10000; - nFramesRunning = 0; - myID = -1; - - tryDiffSize = false; - useCrossbar = false; - readyToCapture = false; - sizeSet = false; - setupStarted = false; - specificFormat = false; - autoReconnect = false; - requestedFrameTime = -1; - - memset(wDeviceName, 0, sizeof(WCHAR) * 255); - memset(nDeviceName, 0, sizeof(char) * 255); - -} - - -// ---------------------------------------------------------------------- -// The only place we are doing new -// -// ---------------------------------------------------------------------- - -void videoDevice::setSize(int w, int h){ - if(sizeSet){ - if(verbose)printf("SETUP: Error device size should not be set more than once \n"); - } - else - { - width = w; - height = h; - videoSize = w*h*3; - sizeSet = true; - pixels = new unsigned char[videoSize]; - pBuffer = new char[videoSize]; - - memset(pixels, 0 , videoSize); - sgCallback->setupBuffer(videoSize); - - } -} - - -// ---------------------------------------------------------------------- -// Borrowed from the SDK, use it to take apart the graph from -// the capture device downstream to the null renderer -// ---------------------------------------------------------------------- - -void videoDevice::NukeDownstream(IBaseFilter *pBF){ - IPin *pP, *pTo; - ULONG u; - IEnumPins *pins = NULL; - PIN_INFO pininfo; - HRESULT hr = pBF->EnumPins(&pins); - pins->Reset(); - while (hr == NOERROR) - { - hr = pins->Next(1, &pP, &u); - if (hr == S_OK && pP) - { - pP->ConnectedTo(&pTo); - if (pTo) - { - hr = pTo->QueryPinInfo(&pininfo); - if (hr == NOERROR) - { - if (pininfo.dir == PINDIR_INPUT) - { - NukeDownstream(pininfo.pFilter); - pGraph->Disconnect(pTo); - pGraph->Disconnect(pP); - pGraph->RemoveFilter(pininfo.pFilter); - } - pininfo.pFilter->Release(); - pininfo.pFilter = NULL; - } - pTo->Release(); - } - pP->Release(); - } - } - if (pins) pins->Release(); -} - - -// ---------------------------------------------------------------------- -// Also from SDK -// ---------------------------------------------------------------------- - -void videoDevice::destroyGraph(){ - HRESULT hr = NULL; - int FuncRetval=0; - int NumFilters=0; - - int i = 0; - while (hr == NOERROR) - { - IEnumFilters * pEnum = 0; - ULONG cFetched; - - // We must get the enumerator again every time because removing a filter from the graph - // invalidates the enumerator. We always get only the first filter from each enumerator. - hr = pGraph->EnumFilters(&pEnum); - if (FAILED(hr)) { if(verbose)printf("SETUP: pGraph->EnumFilters() failed. \n"); return; } - - IBaseFilter * pFilter = NULL; - if (pEnum->Next(1, &pFilter, &cFetched) == S_OK) - { - FILTER_INFO FilterInfo={0}; - hr = pFilter->QueryFilterInfo(&FilterInfo); - FilterInfo.pGraph->Release(); - - int count = 0; - char buffer[255]; - memset(buffer, 0, 255 * sizeof(char)); - - while( FilterInfo.achName[count] != 0x00 ) - { - buffer[count] = FilterInfo.achName[count]; - count++; - } - - if(verbose)printf("SETUP: removing filter %s...\n", buffer); - hr = pGraph->RemoveFilter(pFilter); - if (FAILED(hr)) { if(verbose)printf("SETUP: pGraph->RemoveFilter() failed. \n"); return; } - if(verbose)printf("SETUP: filter removed %s \n",buffer); - - pFilter->Release(); - pFilter = NULL; - } - else break; - pEnum->Release(); - pEnum = NULL; - i++; - } - - return; -} - - -// ---------------------------------------------------------------------- -// Our deconstructor, attempts to tear down graph and release filters etc -// Does checking to make sure it only is freeing if it needs to -// Probably could be a lot cleaner! :) -// ---------------------------------------------------------------------- - -videoDevice::~videoDevice(){ - - if(setupStarted){ if(verbose)printf("\nSETUP: Disconnecting device %i\n", myID); } - else{ - if(sgCallback){ - sgCallback->Release(); - delete sgCallback; - } - return; - } - - HRESULT HR = NULL; - - //Stop the callback and free it - if( (sgCallback) && (pGrabber) ) - { - pGrabber->SetCallback(NULL, 1); - if(verbose)printf("SETUP: freeing Grabber Callback\n"); - sgCallback->Release(); - - //delete our pixels - if(sizeSet){ - delete[] pixels; - delete[] pBuffer; - } - - delete sgCallback; - } - - //Check to see if the graph is running, if so stop it. - if( (pControl) ) - { - HR = pControl->Pause(); - if (FAILED(HR)) if(verbose)printf("ERROR - Could not pause pControl\n"); - - HR = pControl->Stop(); - if (FAILED(HR)) if(verbose)printf("ERROR - Could not stop pControl\n"); - } - - //Disconnect filters from capture device - if( (pVideoInputFilter) )NukeDownstream(pVideoInputFilter); - - //Release and zero pointers to our filters etc - if( (pDestFilter) ){ if(verbose)printf("SETUP: freeing Renderer \n"); - (pDestFilter)->Release(); - (pDestFilter) = 0; - } - if( (pVideoInputFilter) ){ if(verbose)printf("SETUP: freeing Capture Source \n"); - (pVideoInputFilter)->Release(); - (pVideoInputFilter) = 0; - } - if( (pGrabberF) ){ if(verbose)printf("SETUP: freeing Grabber Filter \n"); - (pGrabberF)->Release(); - (pGrabberF) = 0; - } - if( (pGrabber) ){ if(verbose)printf("SETUP: freeing Grabber \n"); - (pGrabber)->Release(); - (pGrabber) = 0; - } - if( (pControl) ){ if(verbose)printf("SETUP: freeing Control \n"); - (pControl)->Release(); - (pControl) = 0; - } - if( (pMediaEvent) ){ if(verbose)printf("SETUP: freeing Media Event \n"); - (pMediaEvent)->Release(); - (pMediaEvent) = 0; - } - if( (streamConf) ){ if(verbose)printf("SETUP: freeing Stream \n"); - (streamConf)->Release(); - (streamConf) = 0; - } - - if( (pAmMediaType) ){ if(verbose)printf("SETUP: freeing Media Type \n"); - MyDeleteMediaType(pAmMediaType); - } - - if((pMediaEvent)){ - if(verbose)printf("SETUP: freeing Media Event \n"); - (pMediaEvent)->Release(); - (pMediaEvent) = 0; - } - - //Destroy the graph - if( (pGraph) )destroyGraph(); - - //Release and zero our capture graph and our main graph - if( (pCaptureGraph) ){ if(verbose)printf("SETUP: freeing Capture Graph \n"); - (pCaptureGraph)->Release(); - (pCaptureGraph) = 0; - } - if( (pGraph) ){ if(verbose)printf("SETUP: freeing Main Graph \n"); - (pGraph)->Release(); - (pGraph) = 0; - } - - //delete our pointers - delete pDestFilter; - delete pVideoInputFilter; - delete pGrabberF; - delete pGrabber; - delete pControl; - delete streamConf; - delete pMediaEvent; - delete pCaptureGraph; - delete pGraph; - - if(verbose)printf("SETUP: Device %i disconnected and freed\n\n",myID); -} - - -////////////////////////////// VIDEO INPUT //////////////////////////////// -//////////////////////////// PUBLIC METHODS /////////////////////////////// - - -// ---------------------------------------------------------------------- -// Constructor - creates instances of videoDevice and adds the various -// media subtypes to check. -// ---------------------------------------------------------------------- - -videoInput::videoInput(){ - //start com - comInit(); - - devicesFound = 0; - callbackSetCount = 0; - bCallback = true; - - //setup a max no of device objects - for(int i=0; i= VI_MAX_CAMERAS || VDList[deviceNumber]->readyToCapture) return; - - if( idealFramerate > 0 ){ - VDList[deviceNumber]->requestedFrameTime = (unsigned long)(10000000 / idealFramerate); - } -} - - -// ---------------------------------------------------------------------- -// Set the requested framerate - no guarantee you will get this -// -// ---------------------------------------------------------------------- - -void videoInput::setAutoReconnectOnFreeze(int deviceNumber, bool doReconnect, int numMissedFramesBeforeReconnect){ - if(deviceNumber >= VI_MAX_CAMERAS) return; - - VDList[deviceNumber]->autoReconnect = doReconnect; - VDList[deviceNumber]->nFramesForReconnect = numMissedFramesBeforeReconnect; - -} - - -// ---------------------------------------------------------------------- -// Setup a device with the default settings -// -// ---------------------------------------------------------------------- - -bool videoInput::setupDevice(int deviceNumber){ - if(deviceNumber >= VI_MAX_CAMERAS || VDList[deviceNumber]->readyToCapture) return false; - - if(setup(deviceNumber))return true; - return false; -} - - -// ---------------------------------------------------------------------- -// Setup a device with the default size but specify input type -// -// ---------------------------------------------------------------------- - -bool videoInput::setupDevice(int deviceNumber, int connection){ - if(deviceNumber >= VI_MAX_CAMERAS || VDList[deviceNumber]->readyToCapture) return false; - - setPhyCon(deviceNumber, connection); - if(setup(deviceNumber))return true; - return false; -} - - -// ---------------------------------------------------------------------- -// Setup a device with the default connection but specify size -// -// ---------------------------------------------------------------------- - -bool videoInput::setupDevice(int deviceNumber, int w, int h){ - if(deviceNumber >= VI_MAX_CAMERAS || VDList[deviceNumber]->readyToCapture) return false; - - setAttemptCaptureSize(deviceNumber,w,h); - if(setup(deviceNumber))return true; - return false; -} - - -// ---------------------------------------------------------------------- -// Setup a device with specific size and connection -// -// ---------------------------------------------------------------------- - -bool videoInput::setupDevice(int deviceNumber, int w, int h, int connection){ - if(deviceNumber >= VI_MAX_CAMERAS || VDList[deviceNumber]->readyToCapture) return false; - - setAttemptCaptureSize(deviceNumber,w,h); - setPhyCon(deviceNumber, connection); - if(setup(deviceNumber))return true; - return false; -} - - -// ---------------------------------------------------------------------- -// Setup the default video format of the device -// Must be called after setup! -// See #define formats in header file (eg VI_NTSC_M ) -// -// ---------------------------------------------------------------------- - -bool videoInput::setFormat(int deviceNumber, int format){ - if(deviceNumber >= VI_MAX_CAMERAS || !VDList[deviceNumber]->readyToCapture) return false; - - bool returnVal = false; - - if(format >= 0 && format < VI_NUM_FORMATS){ - VDList[deviceNumber]->formatType = formatTypes[format]; - VDList[deviceNumber]->specificFormat = true; - - if(VDList[deviceNumber]->specificFormat){ - - HRESULT hr = getDevice(&VDList[deviceNumber]->pVideoInputFilter, deviceNumber, VDList[deviceNumber]->wDeviceName, VDList[deviceNumber]->nDeviceName); - if(hr != S_OK){ - return false; - } - - IAMAnalogVideoDecoder *pVideoDec = NULL; - hr = VDList[deviceNumber]->pCaptureGraph->FindInterface(NULL, &MEDIATYPE_Video, VDList[deviceNumber]->pVideoInputFilter, IID_IAMAnalogVideoDecoder, (void **)&pVideoDec); - - //in case the settings window some how freed them first - if(VDList[deviceNumber]->pVideoInputFilter)VDList[deviceNumber]->pVideoInputFilter->Release(); - if(VDList[deviceNumber]->pVideoInputFilter)VDList[deviceNumber]->pVideoInputFilter = NULL; - - if(FAILED(hr)){ - printf("SETUP: couldn't set requested format\n"); - }else{ - long lValue = 0; - hr = pVideoDec->get_AvailableTVFormats(&lValue); - if( SUCCEEDED(hr) && (lValue & VDList[deviceNumber]->formatType) ) - { - hr = pVideoDec->put_TVFormat(VDList[deviceNumber]->formatType); - if( FAILED(hr) ){ - printf("SETUP: couldn't set requested format\n"); - }else{ - returnVal = true; - } - } - - pVideoDec->Release(); - pVideoDec = NULL; - } - } - } - - return returnVal; -} - -// ---------------------------------------------------------------------- -// Our static function for returning device names - thanks Peter! -// Must call listDevices first. -// -// ---------------------------------------------------------------------- -char videoInput::deviceNames[VI_MAX_CAMERAS][255]={{0}}; - -char * videoInput::getDeviceName(int deviceID){ - if( deviceID >= VI_MAX_CAMERAS ){ - return NULL; - } - return deviceNames[deviceID]; -} - - -// ---------------------------------------------------------------------- -// Our static function for finding num devices available etc -// -// ---------------------------------------------------------------------- - -int videoInput::listDevices(bool silent){ - - //COM Library Intialization - comInit(); - - if(!silent)printf("\nVIDEOINPUT SPY MODE!\n\n"); - - - ICreateDevEnum *pDevEnum = NULL; - IEnumMoniker *pEnum = NULL; - int deviceCounter = 0; - - HRESULT hr = CoCreateInstance(CLSID_SystemDeviceEnum, NULL, - CLSCTX_INPROC_SERVER, IID_ICreateDevEnum, - reinterpret_cast(&pDevEnum)); - - - if (SUCCEEDED(hr)) - { - // Create an enumerator for the video capture category. - hr = pDevEnum->CreateClassEnumerator( - CLSID_VideoInputDeviceCategory, - &pEnum, 0); - - if(hr == S_OK){ - - if(!silent)printf("SETUP: Looking For Capture Devices\n"); - IMoniker *pMoniker = NULL; - - while (pEnum->Next(1, &pMoniker, NULL) == S_OK){ - - IPropertyBag *pPropBag; - hr = pMoniker->BindToStorage(0, 0, IID_IPropertyBag, - (void**)(&pPropBag)); - - if (FAILED(hr)){ - pMoniker->Release(); - continue; // Skip this one, maybe the next one will work. - } - - - // Find the description or friendly name. - VARIANT varName; - VariantInit(&varName); - hr = pPropBag->Read(L"Description", &varName, 0); - - if (FAILED(hr)) hr = pPropBag->Read(L"FriendlyName", &varName, 0); - - if (SUCCEEDED(hr)){ - - hr = pPropBag->Read(L"FriendlyName", &varName, 0); - - int count = 0; - int maxLen = sizeof(deviceNames[0])/sizeof(deviceNames[0][0]) - 2; - while( varName.bstrVal[count] != 0x00 && count < maxLen) { - deviceNames[deviceCounter][count] = varName.bstrVal[count]; - count++; - } - deviceNames[deviceCounter][count] = 0; - - if(!silent)printf("SETUP: %i) %s \n",deviceCounter, deviceNames[deviceCounter]); - } - - pPropBag->Release(); - pPropBag = NULL; - - pMoniker->Release(); - pMoniker = NULL; - - deviceCounter++; - } - - pDevEnum->Release(); - pDevEnum = NULL; - - pEnum->Release(); - pEnum = NULL; - } - - if(!silent)printf("SETUP: %i Device(s) found\n\n", deviceCounter); - } - - comUnInit(); - - return deviceCounter; -} - - -// ---------------------------------------------------------------------- -// -// -// ---------------------------------------------------------------------- - -int videoInput::getWidth(int id){ - - if(isDeviceSetup(id)) - { - return VDList[id] ->width; - } - - return 0; - -} - - -// ---------------------------------------------------------------------- -// -// -// ---------------------------------------------------------------------- - -int videoInput::getHeight(int id){ - - if(isDeviceSetup(id)) - { - return VDList[id] ->height; - } - - return 0; - -} - - -// ---------------------------------------------------------------------- -// -// -// ---------------------------------------------------------------------- - -int videoInput::getSize(int id){ - - if(isDeviceSetup(id)) - { - return VDList[id] ->videoSize; - } - - return 0; - -} - - -// ---------------------------------------------------------------------- -// Uses a supplied buffer -// ---------------------------------------------------------------------- - -bool videoInput::getPixels(int id, unsigned char * dstBuffer, bool flipRedAndBlue, bool flipImage){ - - bool success = false; - - if(isDeviceSetup(id)){ - if(bCallback){ - //callback capture - - DWORD result = WaitForSingleObject(VDList[id]->sgCallback->hEvent, 1000); - if( result != WAIT_OBJECT_0) return false; - - //double paranoia - mutexing with both event and critical section - EnterCriticalSection(&VDList[id]->sgCallback->critSection); - - unsigned char * src = VDList[id]->sgCallback->pixels; - unsigned char * dst = dstBuffer; - int height = VDList[id]->height; - int width = VDList[id]->width; - - processPixels(src, dst, width, height, flipRedAndBlue, flipImage); - VDList[id]->sgCallback->newFrame = false; - - LeaveCriticalSection(&VDList[id]->sgCallback->critSection); - - ResetEvent(VDList[id]->sgCallback->hEvent); - - success = true; - - } - else{ - //regular capture method - long bufferSize = VDList[id]->videoSize; - HRESULT hr = VDList[id]->pGrabber->GetCurrentBuffer(&bufferSize, (long *)VDList[id]->pBuffer); - if(hr==S_OK){ - int numBytes = VDList[id]->videoSize; - if (numBytes == bufferSize){ - - unsigned char * src = (unsigned char * )VDList[id]->pBuffer; - unsigned char * dst = dstBuffer; - int height = VDList[id]->height; - int width = VDList[id]->width; - - processPixels(src, dst, width, height, flipRedAndBlue, flipImage); - success = true; - }else{ - if(verbose)printf("ERROR: GetPixels() - bufferSizes do not match!\n"); - } - }else{ - if(verbose)printf("ERROR: GetPixels() - Unable to grab frame for device %i\n", id); - } - } - } - - return success; -} - - -// ---------------------------------------------------------------------- -// Returns a buffer -// ---------------------------------------------------------------------- -unsigned char * videoInput::getPixels(int id, bool flipRedAndBlue, bool flipImage){ - - if(isDeviceSetup(id)){ - getPixels(id, VDList[id]->pixels, flipRedAndBlue, flipImage); - } - - return VDList[id]->pixels; -} - - - -// ---------------------------------------------------------------------- -// -// -// ---------------------------------------------------------------------- -bool videoInput::isFrameNew(int id){ - if(!isDeviceSetup(id)) return false; - if(!bCallback)return true; - - bool result = false; - bool freeze = false; - - //again super paranoia! - EnterCriticalSection(&VDList[id]->sgCallback->critSection); - result = VDList[id]->sgCallback->newFrame; - - //we need to give it some time at the begining to start up so lets check after 400 frames - if(VDList[id]->nFramesRunning > 400 && VDList[id]->sgCallback->freezeCheck > VDList[id]->nFramesForReconnect ){ - freeze = true; - } - - //we increment the freezeCheck var here - the callback resets it to 1 - //so as long as the callback is running this var should never get too high. - //if the callback is not running then this number will get high and trigger the freeze action below - VDList[id]->sgCallback->freezeCheck++; - LeaveCriticalSection(&VDList[id]->sgCallback->critSection); - - VDList[id]->nFramesRunning++; - - if(freeze && VDList[id]->autoReconnect){ - if(verbose)printf("ERROR: Device seems frozen - attempting to reconnect\n"); - if( !restartDevice(VDList[id]->myID) ){ - if(verbose)printf("ERROR: Unable to reconnect to device\n"); - }else{ - if(verbose)printf("SUCCESS: Able to reconnect to device\n"); - } - } - - return result; -} - - -// ---------------------------------------------------------------------- -// -// -// ---------------------------------------------------------------------- - -bool videoInput::isDeviceSetup(int id){ - - if(idreadyToCapture)return true; - else return false; - -} - - -// ---------------------------------------------------------------------- -// Gives us a little pop up window to adjust settings -// We do this in a seperate thread now! -// ---------------------------------------------------------------------- - - -void __cdecl videoInput::basicThread(void * objPtr){ - - //get a reference to the video device - //not a copy as we need to free the filter - videoDevice * vd = *( (videoDevice **)(objPtr) ); - ShowFilterPropertyPages(vd->pVideoInputFilter); - - //now we free the filter and make sure it set to NULL - if(vd->pVideoInputFilter)vd->pVideoInputFilter->Release(); - if(vd->pVideoInputFilter)vd->pVideoInputFilter = NULL; - - return; -} - -void videoInput::showSettingsWindow(int id){ - - if(isDeviceSetup(id)){ - - HANDLE myTempThread; - - //we reconnect to the device as we have freed our reference to it - //why have we freed our reference? because there seemed to be an issue - //with some mpeg devices if we didn't - HRESULT hr = getDevice(&VDList[id]->pVideoInputFilter, id, VDList[id]->wDeviceName, VDList[id]->nDeviceName); - if(hr == S_OK){ - myTempThread = (HANDLE)_beginthread(basicThread, 0, (void *)&VDList[id]); - } - } -} - - -// Set a video signal setting using IAMVideoProcAmp -bool videoInput::getVideoSettingFilter(int deviceID, long Property, long &min, long &max, long &SteppingDelta, long ¤tValue, long &flags, long &defaultValue){ - if( !isDeviceSetup(deviceID) )return false; - - HRESULT hr; - bool isSuccessful = false; - - videoDevice * VD = VDList[deviceID]; - - hr = getDevice(&VD->pVideoInputFilter, deviceID, VD->wDeviceName, VD->nDeviceName); - if (FAILED(hr)){ - printf("setVideoSetting - getDevice Error\n"); - return false; - } - - IAMVideoProcAmp *pAMVideoProcAmp = NULL; - - hr = VD->pVideoInputFilter->QueryInterface(IID_IAMVideoProcAmp, (void**)&pAMVideoProcAmp); - if(FAILED(hr)){ - printf("setVideoSetting - QueryInterface Error\n"); - if(VD->pVideoInputFilter)VD->pVideoInputFilter->Release(); - if(VD->pVideoInputFilter)VD->pVideoInputFilter = NULL; - return false; - } - - if (verbose) printf("Setting video setting %ld.\n", Property); - - pAMVideoProcAmp->GetRange(Property, &min, &max, &SteppingDelta, &defaultValue, &flags); - if (verbose) printf("Range for video setting %ld: Min:%ld Max:%ld SteppingDelta:%ld Default:%ld Flags:%ld\n", Property, min, max, SteppingDelta, defaultValue, flags); - pAMVideoProcAmp->Get(Property, ¤tValue, &flags); - - if(pAMVideoProcAmp)pAMVideoProcAmp->Release(); - if(VD->pVideoInputFilter)VD->pVideoInputFilter->Release(); - if(VD->pVideoInputFilter)VD->pVideoInputFilter = NULL; - - return true; - -} - - -// Set a video signal setting using IAMVideoProcAmp -bool videoInput::setVideoSettingFilterPct(int deviceID, long Property, float pctValue, long Flags){ - if( !isDeviceSetup(deviceID) )return false; - - long min, max, currentValue, flags, defaultValue, stepAmnt; - - if( !getVideoSettingFilter(deviceID, Property, min, max, stepAmnt, currentValue, flags, defaultValue) )return false; - - if(pctValue > 1.0)pctValue = 1.0; - else if(pctValue < 0)pctValue = 0.0; - - float range = (float)max - (float)min; - if(range <= 0)return false; - if(stepAmnt == 0) return false; - - long value = (long)( (float)min + range * pctValue ); - long rasterValue = value; - - //if the range is the stepAmnt then it is just a switch - //so we either set the value to low or high - if( range == stepAmnt ){ - if( pctValue < 0.5)rasterValue = min; - else rasterValue = max; - }else{ - //we need to rasterize the value to the stepping amnt - long mod = value % stepAmnt; - float halfStep = (float)stepAmnt * 0.5; - if( mod < halfStep ) rasterValue -= mod; - else rasterValue += stepAmnt - mod; - printf("RASTER - pctValue is %f - value is %i - step is %i - mod is %i - rasterValue is %i\n", pctValue, value, stepAmnt, mod, rasterValue); - } - - return setVideoSettingFilter(deviceID, Property, rasterValue, Flags, false); -} - - -// Set a video signal setting using IAMVideoProcAmp -bool videoInput::setVideoSettingFilter(int deviceID, long Property, long lValue, long Flags, bool useDefaultValue){ - if( !isDeviceSetup(deviceID) )return false; - - HRESULT hr; - bool isSuccessful = false; - - videoDevice * VD = VDList[deviceID]; - - hr = getDevice(&VD->pVideoInputFilter, deviceID, VD->wDeviceName, VD->nDeviceName); - if (FAILED(hr)){ - printf("setVideoSetting - getDevice Error\n"); - return false; - } - - IAMVideoProcAmp *pAMVideoProcAmp = NULL; - - hr = VD->pVideoInputFilter->QueryInterface(IID_IAMVideoProcAmp, (void**)&pAMVideoProcAmp); - if(FAILED(hr)){ - printf("setVideoSetting - QueryInterface Error\n"); - if(VD->pVideoInputFilter)VD->pVideoInputFilter->Release(); - if(VD->pVideoInputFilter)VD->pVideoInputFilter = NULL; - return false; - } - - if (verbose) printf("Setting video setting %ld.\n", Property); - long CurrVal, Min, Max, SteppingDelta, Default, CapsFlags, AvailableCapsFlags = 0; - - - pAMVideoProcAmp->GetRange(Property, &Min, &Max, &SteppingDelta, &Default, &AvailableCapsFlags); - if (verbose) printf("Range for video setting %ld: Min:%ld Max:%ld SteppingDelta:%ld Default:%ld Flags:%ld\n", Property, Min, Max, SteppingDelta, Default, AvailableCapsFlags); - pAMVideoProcAmp->Get(Property, &CurrVal, &CapsFlags); - - if (verbose) printf("Current value: %ld Flags %ld (%s)\n", CurrVal, CapsFlags, (CapsFlags == 1 ? "Auto" : (CapsFlags == 2 ? "Manual" : "Unknown"))); - - if (useDefaultValue) { - pAMVideoProcAmp->Set(Property, Default, VideoProcAmp_Flags_Auto); - } - else{ - // Perhaps add a check that lValue and Flags are within the range aquired from GetRange above - pAMVideoProcAmp->Set(Property, lValue, Flags); - } - - if(pAMVideoProcAmp)pAMVideoProcAmp->Release(); - if(VD->pVideoInputFilter)VD->pVideoInputFilter->Release(); - if(VD->pVideoInputFilter)VD->pVideoInputFilter = NULL; - - return true; - -} - - -bool videoInput::setVideoSettingCameraPct(int deviceID, long Property, float pctValue, long Flags){ - if( !isDeviceSetup(deviceID) )return false; - - long min, max, currentValue, flags, defaultValue, stepAmnt; - - if( !getVideoSettingCamera(deviceID, Property, min, max, stepAmnt, currentValue, flags, defaultValue) )return false; - - if(pctValue > 1.0)pctValue = 1.0; - else if(pctValue < 0)pctValue = 0.0; - - float range = (float)max - (float)min; - if(range <= 0)return false; - if(stepAmnt == 0) return false; - - long value = (long)( (float)min + range * pctValue ); - long rasterValue = value; - - //if the range is the stepAmnt then it is just a switch - //so we either set the value to low or high - if( range == stepAmnt ){ - if( pctValue < 0.5)rasterValue = min; - else rasterValue = max; - }else{ - //we need to rasterize the value to the stepping amnt - long mod = value % stepAmnt; - float halfStep = (float)stepAmnt * 0.5; - if( mod < halfStep ) rasterValue -= mod; - else rasterValue += stepAmnt - mod; - printf("RASTER - pctValue is %f - value is %i - step is %i - mod is %i - rasterValue is %i\n", pctValue, value, stepAmnt, mod, rasterValue); - } - - return setVideoSettingCamera(deviceID, Property, rasterValue, Flags, false); -} - - -bool videoInput::setVideoSettingCamera(int deviceID, long Property, long lValue, long Flags, bool useDefaultValue){ - IAMCameraControl *pIAMCameraControl; - if(isDeviceSetup(deviceID)) - { - HRESULT hr; - hr = getDevice(&VDList[deviceID]->pVideoInputFilter, deviceID, VDList[deviceID]->wDeviceName, VDList[deviceID]->nDeviceName); - - if (verbose) printf("Setting video setting %ld.\n", Property); - hr = VDList[deviceID]->pVideoInputFilter->QueryInterface(IID_IAMCameraControl, (void**)&pIAMCameraControl); - if (FAILED(hr)) { - printf("Error\n"); - return false; - } - else - { - long CurrVal, Min, Max, SteppingDelta, Default, CapsFlags, AvailableCapsFlags; - pIAMCameraControl->GetRange(Property, &Min, &Max, &SteppingDelta, &Default, &AvailableCapsFlags); - if (verbose) printf("Range for video setting %ld: Min:%ld Max:%ld SteppingDelta:%ld Default:%ld Flags:%ld\n", Property, Min, Max, SteppingDelta, Default, AvailableCapsFlags); - pIAMCameraControl->Get(Property, &CurrVal, &CapsFlags); - if (verbose) printf("Current value: %ld Flags %ld (%s)\n", CurrVal, CapsFlags, (CapsFlags == 1 ? "Auto" : (CapsFlags == 2 ? "Manual" : "Unknown"))); - if (useDefaultValue) { - pIAMCameraControl->Set(Property, Default, CameraControl_Flags_Auto); - } - else - { - // Perhaps add a check that lValue and Flags are within the range aquired from GetRange above - pIAMCameraControl->Set(Property, lValue, Flags); - } - pIAMCameraControl->Release(); - return true; - } - } - return false; -} - - - -bool videoInput::getVideoSettingCamera(int deviceID, long Property, long &min, long &max, long &SteppingDelta, long ¤tValue, long &flags, long &defaultValue){ - if( !isDeviceSetup(deviceID) )return false; - - HRESULT hr; - bool isSuccessful = false; - - videoDevice * VD = VDList[deviceID]; - - hr = getDevice(&VD->pVideoInputFilter, deviceID, VD->wDeviceName, VD->nDeviceName); - if (FAILED(hr)){ - printf("setVideoSetting - getDevice Error\n"); - return false; - } - - IAMCameraControl *pIAMCameraControl = NULL; - - hr = VD->pVideoInputFilter->QueryInterface(IID_IAMCameraControl, (void**)&pIAMCameraControl); - if(FAILED(hr)){ - printf("setVideoSetting - QueryInterface Error\n"); - if(VD->pVideoInputFilter)VD->pVideoInputFilter->Release(); - if(VD->pVideoInputFilter)VD->pVideoInputFilter = NULL; - return false; - } - - if (verbose) printf("Setting video setting %ld.\n", Property); - - pIAMCameraControl->GetRange(Property, &min, &max, &SteppingDelta, &defaultValue, &flags); - if (verbose) printf("Range for video setting %ld: Min:%ld Max:%ld SteppingDelta:%ld Default:%ld Flags:%ld\n", Property, min, max, SteppingDelta, defaultValue, flags); - pIAMCameraControl->Get(Property, ¤tValue, &flags); - - if(pIAMCameraControl)pIAMCameraControl->Release(); - if(VD->pVideoInputFilter)VD->pVideoInputFilter->Release(); - if(VD->pVideoInputFilter)VD->pVideoInputFilter = NULL; - - return true; - -} - - -// ---------------------------------------------------------------------- -// Shutsdown the device, deletes the object and creates a new object -// so it is ready to be setup again -// ---------------------------------------------------------------------- - -void videoInput::stopDevice(int id){ - if(id < VI_MAX_CAMERAS) - { - delete VDList[id]; - VDList[id] = new videoDevice(); - } - -} - -// ---------------------------------------------------------------------- -// Restarts the device with the same settings it was using -// -// ---------------------------------------------------------------------- - -bool videoInput::restartDevice(int id){ - if(isDeviceSetup(id)) - { - int conn = VDList[id]->storeConn; - int tmpW = VDList[id]->width; - int tmpH = VDList[id]->height; - - bool bFormat = VDList[id]->specificFormat; - long format = VDList[id]->formatType; - - int nReconnect = VDList[id]->nFramesForReconnect; - bool bReconnect = VDList[id]->autoReconnect; - - unsigned long avgFrameTime = VDList[id]->requestedFrameTime; - - stopDevice(id); - - //set our fps if needed - if( avgFrameTime != -1){ - VDList[id]->requestedFrameTime = avgFrameTime; - } - - if( setupDevice(id, tmpW, tmpH, conn) ){ - //reapply the format - ntsc / pal etc - if( bFormat ){ - setFormat(id, format); - } - if( bReconnect ){ - setAutoReconnectOnFreeze(id, true, nReconnect); - } - return true; - } - } - return false; -} - -// ---------------------------------------------------------------------- -// Shuts down all devices, deletes objects and unitializes com if needed -// -// ---------------------------------------------------------------------- -videoInput::~videoInput(){ - - for(int i = 0; i < VI_MAX_CAMERAS; i++) - { - delete VDList[i]; - } - //Unitialize com - comUnInit(); -} - - -////////////////////////////// VIDEO INPUT //////////////////////////////// -//////////////////////////// PRIVATE METHODS ////////////////////////////// - -// ---------------------------------------------------------------------- -// We only should init com if it hasn't been done so by our apps thread -// Use a static counter to keep track of other times it has been inited -// (do we need to worry about multithreaded apps?) -// ---------------------------------------------------------------------- - -bool videoInput::comInit(){ - HRESULT hr = NULL; - - //no need for us to start com more than once - if(comInitCount == 0 ){ - - // Initialize the COM library. - //CoInitializeEx so videoInput can run in another thread - #ifdef VI_COM_MULTI_THREADED - hr = CoInitializeEx(NULL,COINIT_MULTITHREADED); - #else - hr = CoInitialize(NULL); - #endif - //this is the only case where there might be a problem - //if another library has started com as single threaded - //and we need it multi-threaded - send warning but don't fail - if( hr == RPC_E_CHANGED_MODE){ - if(verbose)printf("SETUP - COM already setup - threaded VI might not be possible\n"); - } - } - - comInitCount++; - return true; -} - - -// ---------------------------------------------------------------------- -// Same as above but to unitialize com, decreases counter and frees com -// if no one else is using it -// ---------------------------------------------------------------------- - -bool videoInput::comUnInit(){ - if(comInitCount > 0)comInitCount--; //decrease the count of instances using com - - if(comInitCount == 0){ - CoUninitialize(); //if there are no instances left - uninitialize com - return true; - } - - return false; -} - - -// ---------------------------------------------------------------------- -// This is the size we ask for - we might not get it though :) -// -// ---------------------------------------------------------------------- - -void videoInput::setAttemptCaptureSize(int id, int w, int h){ - - VDList[id]->tryWidth = w; - VDList[id]->tryHeight = h; - VDList[id]->tryDiffSize = true; - -} - - -// ---------------------------------------------------------------------- -// Set the connection type -// (maybe move to private?) -// ---------------------------------------------------------------------- - -void videoInput::setPhyCon(int id, int conn){ - - switch(conn){ - - case 0: - VDList[id]->connection = PhysConn_Video_Composite; - break; - case 1: - VDList[id]->connection = PhysConn_Video_SVideo; - break; - case 2: - VDList[id]->connection = PhysConn_Video_Tuner; - break; - case 3: - VDList[id]->connection = PhysConn_Video_USB; - break; - case 4: - VDList[id]->connection = PhysConn_Video_1394; - break; - default: - return; //if it is not these types don't set crossbar - break; - } - - VDList[id]->storeConn = conn; - VDList[id]->useCrossbar = true; -} - - -// ---------------------------------------------------------------------- -// Check that we are not trying to setup a non-existant device -// Then start the graph building! -// ---------------------------------------------------------------------- - -bool videoInput::setup(int deviceNumber){ - devicesFound = getDeviceCount(); - - if(deviceNumber>devicesFound-1) - { - if(verbose)printf("SETUP: device[%i] not found - you have %i devices available\n", deviceNumber, devicesFound); - if(devicesFound>=0) if(verbose)printf("SETUP: this means that the last device you can use is device[%i] \n", devicesFound-1); - return false; - } - - if(VDList[deviceNumber]->readyToCapture) - { - if(verbose)printf("SETUP: can't setup, device %i is currently being used\n",VDList[deviceNumber]->myID); - return false; - } - - HRESULT hr = start(deviceNumber, VDList[deviceNumber]); - if(hr == S_OK)return true; - else return false; -} - - -// ---------------------------------------------------------------------- -// Does both vertical buffer flipping and bgr to rgb swapping -// You have any combination of those. -// ---------------------------------------------------------------------- - -void videoInput::processPixels(unsigned char * src, unsigned char * dst, int width, int height, bool bRGB, bool bFlip){ - - int widthInBytes = width * 3; - int numBytes = widthInBytes * height; - - if(!bRGB){ - - int x = 0; - int y = 0; - - if(bFlip){ - for(int y = 0; y < height; y++){ - memcpy(dst + (y * widthInBytes), src + ( (height -y -1) * widthInBytes), widthInBytes); - } - - }else{ - memcpy(dst, src, numBytes); - } - }else{ - if(bFlip){ - - int x = 0; - int y = (height - 1) * widthInBytes; - src += y; - - for(int i = 0; i < numBytes; i+=3){ - if(x >= width){ - x = 0; - src -= widthInBytes*2; - } - - *dst = *(src+2); - dst++; - - *dst = *(src+1); - dst++; - - *dst = *src; - dst++; - - src+=3; - x++; - } - } - else{ - for(int i = 0; i < numBytes; i+=3){ - *dst = *(src+2); - dst++; - - *dst = *(src+1); - dst++; - - *dst = *src; - dst++; - - src+=3; - } - } - } -} - - -//------------------------------------------------------------------------------------------ -void videoInput::getMediaSubtypeAsString(GUID type, char * typeAsString){ - - char tmpStr[8]; - if( type == MEDIASUBTYPE_RGB24) sprintf(tmpStr, "RGB24"); - else if(type == MEDIASUBTYPE_RGB32) sprintf(tmpStr, "RGB32"); - else if(type == MEDIASUBTYPE_RGB555)sprintf(tmpStr, "RGB555"); - else if(type == MEDIASUBTYPE_RGB565)sprintf(tmpStr, "RGB565"); - else if(type == MEDIASUBTYPE_YUY2) sprintf(tmpStr, "YUY2"); - else if(type == MEDIASUBTYPE_YVYU) sprintf(tmpStr, "YVYU"); - else if(type == MEDIASUBTYPE_YUYV) sprintf(tmpStr, "YUYV"); - else if(type == MEDIASUBTYPE_IYUV) sprintf(tmpStr, "IYUV"); - else if(type == MEDIASUBTYPE_UYVY) sprintf(tmpStr, "UYVY"); - else if(type == MEDIASUBTYPE_YV12) sprintf(tmpStr, "YV12"); - else if(type == MEDIASUBTYPE_YVU9) sprintf(tmpStr, "YVU9"); - else if(type == MEDIASUBTYPE_Y411) sprintf(tmpStr, "Y411"); - else if(type == MEDIASUBTYPE_Y41P) sprintf(tmpStr, "Y41P"); - else if(type == MEDIASUBTYPE_Y211) sprintf(tmpStr, "Y211"); - else if(type == MEDIASUBTYPE_AYUV) sprintf(tmpStr, "AYUV"); - else if(type == MEDIASUBTYPE_Y800) sprintf(tmpStr, "Y800"); - else if(type == MEDIASUBTYPE_Y8) sprintf(tmpStr, "Y8"); - else if(type == MEDIASUBTYPE_GREY) sprintf(tmpStr, "GREY"); - else sprintf(tmpStr, "OTHER"); - - memcpy(typeAsString, tmpStr, sizeof(char)*8); -} - -//------------------------------------------------------------------------------------------- -static void findClosestSizeAndSubtype(videoDevice * VD, int widthIn, int heightIn, int &widthOut, int &heightOut, GUID & mediatypeOut){ - HRESULT hr; - - //find perfect match or closest size - int nearW = 9999999; - int nearH = 9999999; - bool foundClosestMatch = true; - - int iCount = 0; - int iSize = 0; - hr = VD->streamConf->GetNumberOfCapabilities(&iCount, &iSize); - - if (iSize == sizeof(VIDEO_STREAM_CONFIG_CAPS)) - { - //For each format type RGB24 YUV2 etc - for (int iFormat = 0; iFormat < iCount; iFormat++) - { - VIDEO_STREAM_CONFIG_CAPS scc; - AM_MEDIA_TYPE *pmtConfig; - hr = VD->streamConf->GetStreamCaps(iFormat, &pmtConfig, (BYTE*)&scc); - - if (SUCCEEDED(hr)){ - - //his is how many diff sizes are available for the format - int stepX = scc.OutputGranularityX; - int stepY = scc.OutputGranularityY; - - int tempW = 999999; - int tempH = 999999; - - //Don't want to get stuck in a loop - if(stepX < 1 || stepY < 1) continue; - - //if(verbose)printf("min is %i %i max is %i %i - res is %i %i \n", scc.MinOutputSize.cx, scc.MinOutputSize.cy, scc.MaxOutputSize.cx, scc.MaxOutputSize.cy, stepX, stepY); - //if(verbose)printf("min frame duration is %i max duration is %i\n", scc.MinFrameInterval, scc.MaxFrameInterval); - - bool exactMatch = false; - bool exactMatchX = false; - bool exactMatchY = false; - - for(int x = scc.MinOutputSize.cx; x <= scc.MaxOutputSize.cx; x+= stepX){ - //If we find an exact match - if( widthIn == x ){ - exactMatchX = true; - tempW = x; - } - //Otherwise lets find the closest match based on width - else if( abs(widthIn-x) < abs(widthIn-tempW) ){ - tempW = x; - } - } - - for(int y = scc.MinOutputSize.cy; y <= scc.MaxOutputSize.cy; y+= stepY){ - //If we find an exact match - if( heightIn == y){ - exactMatchY = true; - tempH = y; - } - //Otherwise lets find the closest match based on height - else if( abs(heightIn-y) < abs(heightIn-tempH) ){ - tempH = y; - } - } - - //see if we have an exact match! - if(exactMatchX && exactMatchY){ - foundClosestMatch = false; - exactMatch = true; - - widthOut = widthIn; - heightOut = heightIn; - mediatypeOut = pmtConfig->subtype; - } - - //otherwise lets see if this filters closest size is the closest - //available. the closest size is determined by the sum difference - //of the widths and heights - else if( abs(widthIn - tempW) + abs(heightIn - tempH) < abs(widthIn - nearW) + abs(heightIn - nearH) ) - { - nearW = tempW; - nearH = tempH; - - widthOut = nearW; - heightOut = nearH; - mediatypeOut = pmtConfig->subtype; - } - - MyDeleteMediaType(pmtConfig); - - //If we have found an exact match no need to search anymore - if(exactMatch)break; - } - } - } - -} - - -//--------------------------------------------------------------------------------------------------- -static bool setSizeAndSubtype(videoDevice * VD, int attemptWidth, int attemptHeight, GUID mediatype){ - VIDEOINFOHEADER *pVih = reinterpret_cast(VD->pAmMediaType->pbFormat); - - //store current size - int tmpWidth = HEADER(pVih)->biWidth; - int tmpHeight = HEADER(pVih)->biHeight; - AM_MEDIA_TYPE * tmpType = NULL; - - HRESULT hr = VD->streamConf->GetFormat(&tmpType); - if(hr != S_OK)return false; - - //set new size: - //width and height - HEADER(pVih)->biWidth = attemptWidth; - HEADER(pVih)->biHeight = attemptHeight; - - VD->pAmMediaType->formattype = FORMAT_VideoInfo; - VD->pAmMediaType->majortype = MEDIATYPE_Video; - VD->pAmMediaType->subtype = mediatype; - - //buffer size - VD->pAmMediaType->lSampleSize = attemptWidth*attemptHeight*3; - - //set fps if requested - if( VD->requestedFrameTime != -1){ - pVih->AvgTimePerFrame = VD->requestedFrameTime; - } - - //okay lets try new size - hr = VD->streamConf->SetFormat(VD->pAmMediaType); - if(hr == S_OK){ - if( tmpType != NULL )MyDeleteMediaType(tmpType); - return true; - }else{ - VD->streamConf->SetFormat(tmpType); - if( tmpType != NULL )MyDeleteMediaType(tmpType); - } - - return false; -} - -// ---------------------------------------------------------------------- -// Where all the work happens! -// Attempts to build a graph for the specified device -// ---------------------------------------------------------------------- - -int videoInput::start(int deviceID, videoDevice *VD){ - - HRESULT hr = NULL; - VD->myID = deviceID; - VD->setupStarted = true; - CAPTURE_MODE = PIN_CATEGORY_CAPTURE; //Don't worry - it ends up being preview (which is faster) - callbackSetCount = 1; //make sure callback method is not changed after setup called - - if(verbose)printf("SETUP: Setting up device %i\n",deviceID); - - // CREATE THE GRAPH BUILDER // - // Create the filter graph manager and query for interfaces. - hr = CoCreateInstance(CLSID_CaptureGraphBuilder2, NULL, CLSCTX_INPROC_SERVER, IID_ICaptureGraphBuilder2, (void **)&VD->pCaptureGraph); - if (FAILED(hr)) // FAILED is a macro that tests the return value - { - if(verbose)printf("ERROR - Could not create the Filter Graph Manager\n"); - return hr; - } - - //FITLER GRAPH MANAGER// - // Create the Filter Graph Manager. - hr = CoCreateInstance(CLSID_FilterGraph, 0, CLSCTX_INPROC_SERVER,IID_IGraphBuilder, (void**)&VD->pGraph); - if (FAILED(hr)) - { - if(verbose)printf("ERROR - Could not add the graph builder!\n"); - stopDevice(deviceID); - return hr; - } - - //SET THE FILTERGRAPH// - hr = VD->pCaptureGraph->SetFiltergraph(VD->pGraph); - if (FAILED(hr)) - { - if(verbose)printf("ERROR - Could not set filtergraph\n"); - stopDevice(deviceID); - return hr; - } - - //MEDIA CONTROL (START/STOPS STREAM)// - // Using QueryInterface on the graph builder, - // Get the Media Control object. - hr = VD->pGraph->QueryInterface(IID_IMediaControl, (void **)&VD->pControl); - if (FAILED(hr)) - { - if(verbose)printf("ERROR - Could not create the Media Control object\n"); - stopDevice(deviceID); - return hr; - } - - - //FIND VIDEO DEVICE AND ADD TO GRAPH// - //gets the device specified by the second argument. - hr = getDevice(&VD->pVideoInputFilter, deviceID, VD->wDeviceName, VD->nDeviceName); - - if (SUCCEEDED(hr)){ - if(verbose)printf("SETUP: %s\n", VD->nDeviceName); - hr = VD->pGraph->AddFilter(VD->pVideoInputFilter, VD->wDeviceName); - }else{ - if(verbose)printf("ERROR - Could not find specified video device\n"); - stopDevice(deviceID); - return hr; - } - - //LOOK FOR PREVIEW PIN IF THERE IS NONE THEN WE USE CAPTURE PIN AND THEN SMART TEE TO PREVIEW - IAMStreamConfig *streamConfTest = NULL; - hr = VD->pCaptureGraph->FindInterface(&PIN_CATEGORY_PREVIEW, &MEDIATYPE_Video, VD->pVideoInputFilter, IID_IAMStreamConfig, (void **)&streamConfTest); - if(FAILED(hr)){ - if(verbose)printf("SETUP: Couldn't find preview pin using SmartTee\n"); - }else{ - CAPTURE_MODE = PIN_CATEGORY_PREVIEW; - streamConfTest->Release(); - streamConfTest = NULL; - } - - //CROSSBAR (SELECT PHYSICAL INPUT TYPE)// - //my own function that checks to see if the device can support a crossbar and if so it routes it. - //webcams tend not to have a crossbar so this function will also detect a webcams and not apply the crossbar - if(VD->useCrossbar) - { - if(verbose)printf("SETUP: Checking crossbar\n"); - routeCrossbar(&VD->pCaptureGraph, &VD->pVideoInputFilter, VD->connection, CAPTURE_MODE); - } - - - //we do this because webcams don't have a preview mode - hr = VD->pCaptureGraph->FindInterface(&CAPTURE_MODE, &MEDIATYPE_Video, VD->pVideoInputFilter, IID_IAMStreamConfig, (void **)&VD->streamConf); - if(FAILED(hr)){ - if(verbose)printf("ERROR: Couldn't config the stream!\n"); - stopDevice(deviceID); - return hr; - } - - //NOW LETS DEAL WITH GETTING THE RIGHT SIZE - hr = VD->streamConf->GetFormat(&VD->pAmMediaType); - if(FAILED(hr)){ - if(verbose)printf("ERROR: Couldn't getFormat for pAmMediaType!\n"); - stopDevice(deviceID); - return hr; - } - - VIDEOINFOHEADER *pVih = reinterpret_cast(VD->pAmMediaType->pbFormat); - int currentWidth = HEADER(pVih)->biWidth; - int currentHeight = HEADER(pVih)->biHeight; - - bool customSize = VD->tryDiffSize; - bool foundSize = false; - - if(customSize){ - if(verbose) printf("SETUP: Default Format is set to %i by %i \n", currentWidth, currentHeight); - - char guidStr[8]; - for(int i = 0; i < VI_NUM_TYPES; i++){ - - getMediaSubtypeAsString(mediaSubtypes[i], guidStr); - - if(verbose)printf("SETUP: trying format %s @ %i by %i\n", guidStr, VD->tryWidth, VD->tryHeight); - if( setSizeAndSubtype(VD, VD->tryWidth, VD->tryHeight, mediaSubtypes[i]) ){ - VD->setSize(VD->tryWidth, VD->tryHeight); - foundSize = true; - break; - } - } - - //if we didn't find the requested size - lets try and find the closest matching size - if( foundSize == false ){ - if( verbose )printf("SETUP: couldn't find requested size - searching for closest matching size\n"); - - int closestWidth = -1; - int closestHeight = -1; - GUID newMediaSubtype; - - findClosestSizeAndSubtype(VD, VD->tryWidth, VD->tryHeight, closestWidth, closestHeight, newMediaSubtype); - - if( closestWidth != -1 && closestHeight != -1){ - getMediaSubtypeAsString(newMediaSubtype, guidStr); - - if(verbose)printf("SETUP: closest supported size is %s @ %i %i\n", guidStr, closestWidth, closestHeight); - if( setSizeAndSubtype(VD, closestWidth, closestHeight, newMediaSubtype) ){ - VD->setSize(closestWidth, closestHeight); - foundSize = true; - } - } - } - } - - //if we didn't specify a custom size or if we did but couldn't find it lets setup with the default settings - if(customSize == false || foundSize == false){ - if( VD->requestedFrameTime != -1 ){ - pVih->AvgTimePerFrame = VD->requestedFrameTime; - hr = VD->streamConf->SetFormat(VD->pAmMediaType); - } - VD->setSize(currentWidth, currentHeight); - } - - //SAMPLE GRABBER (ALLOWS US TO GRAB THE BUFFER)// - // Create the Sample Grabber. - hr = CoCreateInstance(CLSID_SampleGrabber, NULL, CLSCTX_INPROC_SERVER,IID_IBaseFilter, (void**)&VD->pGrabberF); - if (FAILED(hr)){ - if(verbose)printf("Could not Create Sample Grabber - CoCreateInstance()\n"); - stopDevice(deviceID); - return hr; - } - - hr = VD->pGraph->AddFilter(VD->pGrabberF, L"Sample Grabber"); - if (FAILED(hr)){ - if(verbose)printf("Could not add Sample Grabber - AddFilter()\n"); - stopDevice(deviceID); - return hr; - } - - hr = VD->pGrabberF->QueryInterface(IID_ISampleGrabber, (void**)&VD->pGrabber); - if (FAILED(hr)){ - if(verbose)printf("ERROR: Could not query SampleGrabber\n"); - stopDevice(deviceID); - return hr; - } - - - //Set Params - One Shot should be false unless you want to capture just one buffer - hr = VD->pGrabber->SetOneShot(FALSE); - if(bCallback){ - hr = VD->pGrabber->SetBufferSamples(FALSE); - }else{ - hr = VD->pGrabber->SetBufferSamples(TRUE); - } - - if(bCallback){ - //Tell the grabber to use our callback function - 0 is for SampleCB and 1 for BufferCB - //We use SampleCB - hr = VD->pGrabber->SetCallback(VD->sgCallback, 0); - if (FAILED(hr)){ - if(verbose)printf("ERROR: problem setting callback\n"); - stopDevice(deviceID); - return hr; - }else{ - if(verbose)printf("SETUP: Capture callback set\n"); - } - } - - //MEDIA CONVERSION - //Get video properties from the stream's mediatype and apply to the grabber (otherwise we don't get an RGB image) - //zero the media type - lets try this :) - maybe this works? - AM_MEDIA_TYPE mt; - ZeroMemory(&mt,sizeof(AM_MEDIA_TYPE)); - - mt.majortype = MEDIATYPE_Video; - mt.subtype = MEDIASUBTYPE_RGB24; - mt.formattype = FORMAT_VideoInfo; - - //VD->pAmMediaType->subtype = VD->videoType; - hr = VD->pGrabber->SetMediaType(&mt); - - //lets try freeing our stream conf here too - //this will fail if the device is already running - if(VD->streamConf){ - VD->streamConf->Release(); - VD->streamConf = NULL; - }else{ - if(verbose)printf("ERROR: connecting device - prehaps it is already being used?\n"); - stopDevice(deviceID); - return S_FALSE; - } - - - //NULL RENDERER// - //used to give the video stream somewhere to go to. - hr = CoCreateInstance(CLSID_NullRenderer, NULL, CLSCTX_INPROC_SERVER, IID_IBaseFilter, (void**)(&VD->pDestFilter)); - if (FAILED(hr)){ - if(verbose)printf("ERROR: Could not create filter - NullRenderer\n"); - stopDevice(deviceID); - return hr; - } - - hr = VD->pGraph->AddFilter(VD->pDestFilter, L"NullRenderer"); - if (FAILED(hr)){ - if(verbose)printf("ERROR: Could not add filter - NullRenderer\n"); - stopDevice(deviceID); - return hr; - } - - //RENDER STREAM// - //This is where the stream gets put together. - hr = VD->pCaptureGraph->RenderStream(&PIN_CATEGORY_PREVIEW, &MEDIATYPE_Video, VD->pVideoInputFilter, VD->pGrabberF, VD->pDestFilter); - - if (FAILED(hr)){ - if(verbose)printf("ERROR: Could not connect pins - RenderStream()\n"); - stopDevice(deviceID); - return hr; - } - - - //EXP - lets try setting the sync source to null - and make it run as fast as possible - { - IMediaFilter *pMediaFilter = 0; - hr = VD->pGraph->QueryInterface(IID_IMediaFilter, (void**)&pMediaFilter); - if (FAILED(hr)){ - if(verbose)printf("ERROR: Could not get IID_IMediaFilter interface\n"); - }else{ - pMediaFilter->SetSyncSource(NULL); - pMediaFilter->Release(); - } - } - - - //LETS RUN THE STREAM! - hr = VD->pControl->Run(); - - if (FAILED(hr)){ - if(verbose)printf("ERROR: Could not start graph\n"); - stopDevice(deviceID); - return hr; - } - - - //MAKE SURE THE DEVICE IS SENDING VIDEO BEFORE WE FINISH - if(!bCallback){ - - long bufferSize = VD->videoSize; - - while( hr != S_OK){ - hr = VD->pGrabber->GetCurrentBuffer(&bufferSize, (long *)VD->pBuffer); - Sleep(10); - } - - } - - if(verbose)printf("SETUP: Device is setup and ready to capture.\n\n"); - VD->readyToCapture = true; - - //Release filters - seen someone else do this - //looks like it solved the freezes - - //if we release this then we don't have access to the settings - //we release our video input filter but then reconnect with it - //each time we need to use it - VD->pVideoInputFilter->Release(); - VD->pVideoInputFilter = NULL; - - VD->pGrabberF->Release(); - VD->pGrabberF = NULL; - - VD->pDestFilter->Release(); - VD->pDestFilter = NULL; - - return S_OK; -} - - -// ---------------------------------------------------------------------- -// Returns number of good devices -// -// ---------------------------------------------------------------------- - -int videoInput::getDeviceCount(){ - - - ICreateDevEnum *pDevEnum = NULL; - IEnumMoniker *pEnum = NULL; - int deviceCounter = 0; - - HRESULT hr = CoCreateInstance(CLSID_SystemDeviceEnum, NULL, - CLSCTX_INPROC_SERVER, IID_ICreateDevEnum, - reinterpret_cast(&pDevEnum)); - - - if (SUCCEEDED(hr)) - { - // Create an enumerator for the video capture category. - hr = pDevEnum->CreateClassEnumerator( - CLSID_VideoInputDeviceCategory, - &pEnum, 0); - - if(hr == S_OK){ - IMoniker *pMoniker = NULL; - while (pEnum->Next(1, &pMoniker, NULL) == S_OK){ - - IPropertyBag *pPropBag; - hr = pMoniker->BindToStorage(0, 0, IID_IPropertyBag, - (void**)(&pPropBag)); - - if (FAILED(hr)){ - pMoniker->Release(); - continue; // Skip this one, maybe the next one will work. - } - - pPropBag->Release(); - pPropBag = NULL; - - pMoniker->Release(); - pMoniker = NULL; - - deviceCounter++; - } - - pEnum->Release(); - pEnum = NULL; - } - - pDevEnum->Release(); - pDevEnum = NULL; - } - return deviceCounter; -} - - -// ---------------------------------------------------------------------- -// Do we need this? -// -// Enumerate all of the video input devices -// Return the filter with a matching friendly name -// ---------------------------------------------------------------------- - -HRESULT videoInput::getDevice(IBaseFilter** gottaFilter, int deviceId, WCHAR * wDeviceName, char * nDeviceName){ - BOOL done = false; - int deviceCounter = 0; - - // Create the System Device Enumerator. - ICreateDevEnum *pSysDevEnum = NULL; - HRESULT hr = CoCreateInstance(CLSID_SystemDeviceEnum, NULL, CLSCTX_INPROC_SERVER, IID_ICreateDevEnum, (void **)&pSysDevEnum); - if (FAILED(hr)) - { - return hr; - } - - // Obtain a class enumerator for the video input category. - IEnumMoniker *pEnumCat = NULL; - hr = pSysDevEnum->CreateClassEnumerator(CLSID_VideoInputDeviceCategory, &pEnumCat, 0); - - if (hr == S_OK) - { - // Enumerate the monikers. - IMoniker *pMoniker = NULL; - ULONG cFetched; - while ((pEnumCat->Next(1, &pMoniker, &cFetched) == S_OK) && (!done)) - { - if(deviceCounter == deviceId) - { - // Bind the first moniker to an object - IPropertyBag *pPropBag; - hr = pMoniker->BindToStorage(0, 0, IID_IPropertyBag, (void **)&pPropBag); - if (SUCCEEDED(hr)) - { - // To retrieve the filter's friendly name, do the following: - VARIANT varName; - VariantInit(&varName); - hr = pPropBag->Read(L"FriendlyName", &varName, 0); - if (SUCCEEDED(hr)) - { - - //copy the name to nDeviceName & wDeviceName - int count = 0; - while( varName.bstrVal[count] != 0x00 ) { - wDeviceName[count] = varName.bstrVal[count]; - nDeviceName[count] = (char)varName.bstrVal[count]; - count++; - } - - // We found it, so send it back to the caller - hr = pMoniker->BindToObject(NULL, NULL, IID_IBaseFilter, (void**)gottaFilter); - done = true; - } - VariantClear(&varName); - pPropBag->Release(); - pPropBag = NULL; - pMoniker->Release(); - pMoniker = NULL; - } - } - deviceCounter++; - } - pEnumCat->Release(); - pEnumCat = NULL; - } - pSysDevEnum->Release(); - pSysDevEnum = NULL; - - if (done) { - return hr; // found it, return native error - } else { - return VFW_E_NOT_FOUND; // didn't find it error - } -} - - -// ---------------------------------------------------------------------- -// Show the property pages for a filter -// This is stolen from the DX9 SDK -// ---------------------------------------------------------------------- - -HRESULT videoInput::ShowFilterPropertyPages(IBaseFilter *pFilter){ - - ISpecifyPropertyPages *pProp; - HRESULT hr = pFilter->QueryInterface(IID_ISpecifyPropertyPages, (void **)&pProp); - if (SUCCEEDED(hr)) - { - // Get the filter's name and IUnknown pointer. - FILTER_INFO FilterInfo; - hr = pFilter->QueryFilterInfo(&FilterInfo); - IUnknown *pFilterUnk; - pFilter->QueryInterface(IID_IUnknown, (void **)&pFilterUnk); - - // Show the page. - CAUUID caGUID; - pProp->GetPages(&caGUID); - pProp->Release(); - OleCreatePropertyFrame( - NULL, // Parent window - 0, 0, // Reserved - FilterInfo.achName, // Caption for the dialog box - 1, // Number of objects (just the filter) - &pFilterUnk, // Array of object pointers. - caGUID.cElems, // Number of property pages - caGUID.pElems, // Array of property page CLSIDs - 0, // Locale identifier - 0, NULL // Reserved - ); - - // Clean up. - if(pFilterUnk)pFilterUnk->Release(); - if(FilterInfo.pGraph)FilterInfo.pGraph->Release(); - CoTaskMemFree(caGUID.pElems); - } - return hr; -} - - -// ---------------------------------------------------------------------- -// This code was also brazenly stolen from the DX9 SDK -// Pass it a file name in wszPath, and it will save the filter graph to that file. -// ---------------------------------------------------------------------- - -HRESULT videoInput::SaveGraphFile(IGraphBuilder *pGraph, WCHAR *wszPath) { - const WCHAR wszStreamName[] = L"ActiveMovieGraph"; - HRESULT hr; - IStorage *pStorage = NULL; - - // First, create a document file which will hold the GRF file - hr = StgCreateDocfile( - wszPath, - STGM_CREATE | STGM_TRANSACTED | STGM_READWRITE | STGM_SHARE_EXCLUSIVE, - 0, &pStorage); - if(FAILED(hr)) - { - return hr; - } - - // Next, create a stream to store. - IStream *pStream; - hr = pStorage->CreateStream( - wszStreamName, - STGM_WRITE | STGM_CREATE | STGM_SHARE_EXCLUSIVE, - 0, 0, &pStream); - if (FAILED(hr)) - { - pStorage->Release(); - return hr; - } - - // The IPersistStream converts a stream into a persistent object. - IPersistStream *pPersist = NULL; - pGraph->QueryInterface(IID_IPersistStream, reinterpret_cast(&pPersist)); - hr = pPersist->Save(pStream, TRUE); - pStream->Release(); - pPersist->Release(); - if (SUCCEEDED(hr)) - { - hr = pStorage->Commit(STGC_DEFAULT); - } - pStorage->Release(); - return hr; -} - - -// ---------------------------------------------------------------------- -// For changing the input types -// -// ---------------------------------------------------------------------- - -HRESULT videoInput::routeCrossbar(ICaptureGraphBuilder2 **ppBuild, IBaseFilter **pVidInFilter, int conType, GUID captureMode){ - - //create local ICaptureGraphBuilder2 - ICaptureGraphBuilder2 *pBuild = NULL; - pBuild = *ppBuild; - - //create local IBaseFilter - IBaseFilter *pVidFilter = NULL; - pVidFilter = * pVidInFilter; - - // Search upstream for a crossbar. - IAMCrossbar *pXBar1 = NULL; - HRESULT hr = pBuild->FindInterface(&LOOK_UPSTREAM_ONLY, NULL, pVidFilter, - IID_IAMCrossbar, (void**)&pXBar1); - if (SUCCEEDED(hr)) - { - - bool foundDevice = false; - - if(verbose)printf("SETUP: You are not a webcam! Setting Crossbar\n"); - pXBar1->Release(); - - IAMCrossbar *Crossbar; - hr = pBuild->FindInterface(&captureMode, &MEDIATYPE_Interleaved, pVidFilter, IID_IAMCrossbar, (void **)&Crossbar); - - if(hr != NOERROR){ - hr = pBuild->FindInterface(&captureMode, &MEDIATYPE_Video, pVidFilter, IID_IAMCrossbar, (void **)&Crossbar); - } - - LONG lInpin, lOutpin; - hr = Crossbar->get_PinCounts(&lOutpin , &lInpin); - - BOOL IPin=TRUE; LONG pIndex=0 , pRIndex=0 , pType=0; - - while( pIndex < lInpin) - { - hr = Crossbar->get_CrossbarPinInfo( IPin , pIndex , &pRIndex , &pType); - - if( pType == conType){ - if(verbose)printf("SETUP: Found Physical Interface"); - - switch(conType){ - - case PhysConn_Video_Composite: - if(verbose)printf(" - Composite\n"); - break; - case PhysConn_Video_SVideo: - if(verbose)printf(" - S-Video\n"); - break; - case PhysConn_Video_Tuner: - if(verbose)printf(" - Tuner\n"); - break; - case PhysConn_Video_USB: - if(verbose)printf(" - USB\n"); - break; - case PhysConn_Video_1394: - if(verbose)printf(" - Firewire\n"); - break; - } - - foundDevice = true; - break; - } - pIndex++; - - } - - if(foundDevice){ - BOOL OPin=FALSE; LONG pOIndex=0 , pORIndex=0 , pOType=0; - while( pOIndex < lOutpin) - { - hr = Crossbar->get_CrossbarPinInfo( OPin , pOIndex , &pORIndex , &pOType); - if( pOType == PhysConn_Video_VideoDecoder) - break; - } - Crossbar->Route(pOIndex,pIndex); - }else{ - if(verbose)printf("SETUP: Didn't find specified Physical Connection type. Using Defualt. \n"); - } - - //we only free the crossbar when we close or restart the device - //we were getting a crash otherwise - //if(Crossbar)Crossbar->Release(); - //if(Crossbar)Crossbar = NULL; - - if(pXBar1)pXBar1->Release(); - if(pXBar1)pXBar1 = NULL; - - }else{ - if(verbose)printf("SETUP: You are a webcam or snazzy firewire cam! No Crossbar needed\n"); - return hr; - } - - return hr; -} - +//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +//IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +//FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +//AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +//LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +//OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +//THE SOFTWARE. +#include + +#include "videoInput.h" +#include + +//Include Directshow stuff here so we don't worry about needing all the h files. +#include +//#include "streams.h" +#pragma include_alias( "dxtrans.h", "qedit.h" ) +#define __IDxtCompositor_INTERFACE_DEFINED__ +#define __IDxtAlphaSetter_INTERFACE_DEFINED__ +#define __IDxtJpeg_INTERFACE_DEFINED__ +#define __IDxtKey_INTERFACE_DEFINED__ +#include +#include +#include + +//for threading +#include + +// Due to a missing qedit.h in recent Platform SDKs, we've replicated the relevant contents here +// #include +MIDL_INTERFACE("0579154A-2B53-4994-B0D0-E773148EFF85") +ISampleGrabberCB : public IUnknown +{ + public: + virtual HRESULT STDMETHODCALLTYPE SampleCB( + double SampleTime, + IMediaSample *pSample) = 0; + + virtual HRESULT STDMETHODCALLTYPE BufferCB( + double SampleTime, + BYTE *pBuffer, + long BufferLen) = 0; + +}; + +MIDL_INTERFACE("6B652FFF-11FE-4fce-92AD-0266B5D7C78F") +ISampleGrabber : public IUnknown +{ + public: + virtual HRESULT STDMETHODCALLTYPE SetOneShot( + BOOL OneShot) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetMediaType( + const AM_MEDIA_TYPE *pType) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetConnectedMediaType( + AM_MEDIA_TYPE *pType) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetBufferSamples( + BOOL BufferThem) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetCurrentBuffer( + /* [out][in] */ long *pBufferSize, + /* [out] */ long *pBuffer) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetCurrentSample( + /* [retval][out] */ IMediaSample **ppSample) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetCallback( + ISampleGrabberCB *pCallback, + long WhichMethodToCallback) = 0; + +}; +EXTERN_C const CLSID CLSID_SampleGrabber; +EXTERN_C const IID IID_ISampleGrabber; +EXTERN_C const CLSID CLSID_NullRenderer; + +//use videoInput::setVerbose to change +static bool verbose = true; + +//use videoInput::setComMultiThreaded to change +static bool VI_COM_MULTI_THREADED = false; + +/////////////////////////// HANDY FUNCTIONS ///////////////////////////// + +void MyFreeMediaType(AM_MEDIA_TYPE& mt){ + if (mt.cbFormat != 0) + { + CoTaskMemFree((PVOID)mt.pbFormat); + mt.cbFormat = 0; + mt.pbFormat = NULL; + } + if (mt.pUnk != NULL) + { + // Unecessary because pUnk should not be used, but safest. + mt.pUnk->Release(); + mt.pUnk = NULL; + } +} + +void MyDeleteMediaType(AM_MEDIA_TYPE *pmt) +{ + if (pmt != NULL) + { + MyFreeMediaType(*pmt); + CoTaskMemFree(pmt); + } +} + +////////////////////////////// CALLBACK //////////////////////////////// + +//Callback class +class SampleGrabberCallback : public ISampleGrabberCB{ +public: + + //------------------------------------------------ + SampleGrabberCallback(){ + InitializeCriticalSection(&critSection); + freezeCheck = 0; + + + bufferSetup = false; + newFrame = false; + latestBufferLength = 0; + + hEvent = CreateEvent(NULL, true, false, NULL); + } + + + //------------------------------------------------ + ~SampleGrabberCallback(){ + ptrBuffer = NULL; + DeleteCriticalSection(&critSection); + CloseHandle(hEvent); + if(bufferSetup){ + delete [] pixels; + } + } + + + //------------------------------------------------ + bool setupBuffer(int numBytesIn){ + if(bufferSetup){ + return false; + }else{ + numBytes = numBytesIn; + pixels = new unsigned char[numBytes]; + bufferSetup = true; + newFrame = false; + latestBufferLength = 0; + } + return true; + } + + + //------------------------------------------------ + STDMETHODIMP_(ULONG) AddRef() { return 1; } + STDMETHODIMP_(ULONG) Release() { return 2; } + + + //------------------------------------------------ + STDMETHODIMP QueryInterface(REFIID riid, void **ppvObject){ + *ppvObject = static_cast(this); + return S_OK; + } + + + //This method is meant to have less overhead + //------------------------------------------------ + STDMETHODIMP SampleCB(double Time, IMediaSample *pSample){ + if(WaitForSingleObject(hEvent, 0) == WAIT_OBJECT_0) return S_OK; + + HRESULT hr = pSample->GetPointer(&ptrBuffer); + + if(hr == S_OK){ + latestBufferLength = pSample->GetActualDataLength(); + if(latestBufferLength == numBytes){ + EnterCriticalSection(&critSection); + memcpy(pixels, ptrBuffer, latestBufferLength); + newFrame = true; + freezeCheck = 1; + LeaveCriticalSection(&critSection); + SetEvent(hEvent); + }else{ + printf("ERROR: SampleCB() - buffer sizes do not match\n"); + } + } + + return S_OK; + } + + + //This method is meant to have more overhead + STDMETHODIMP BufferCB(double Time, BYTE *pBuffer, long BufferLen){ + return E_NOTIMPL; + } + + int freezeCheck; + + int latestBufferLength; + int numBytes; + bool newFrame; + bool bufferSetup; + unsigned char * pixels; + unsigned char * ptrBuffer; + CRITICAL_SECTION critSection; + HANDLE hEvent; +}; + + +////////////////////////////// VIDEO DEVICE //////////////////////////////// + +// ---------------------------------------------------------------------- +// Should this class also be the callback? +// +// ---------------------------------------------------------------------- + +videoDevice::videoDevice(){ + + pCaptureGraph = NULL; // Capture graph builder object + pGraph = NULL; // Graph builder object + pControl = NULL; // Media control object + pVideoInputFilter = NULL; // Video Capture filter + pGrabber = NULL; // Grabs frame + pDestFilter = NULL; // Null Renderer Filter + pGrabberF = NULL; // Grabber Filter + pMediaEvent = NULL; + streamConf = NULL; + pAmMediaType = NULL; + + //This is our callback class that processes the frame. + sgCallback = new SampleGrabberCallback(); + sgCallback->newFrame = false; + + //Default values for capture type + videoType = MEDIASUBTYPE_RGB24; + connection = PhysConn_Video_Composite; + storeConn = 0; + + videoSize = 0; + width = 0; + height = 0; + tryWidth = 0; + tryHeight = 0; + nFramesForReconnect= 10000; + nFramesRunning = 0; + myID = -1; + + tryDiffSize = false; + useCrossbar = false; + readyToCapture = false; + sizeSet = false; + setupStarted = false; + specificFormat = false; + autoReconnect = false; + requestedFrameTime = -1; + + memset(wDeviceName, 0, sizeof(WCHAR) * 255); + memset(nDeviceName, 0, sizeof(char) * 255); + +} + + +// ---------------------------------------------------------------------- +// The only place we are doing new +// +// ---------------------------------------------------------------------- + +void videoDevice::setSize(int w, int h){ + if(sizeSet){ + if(verbose)printf("SETUP: Error device size should not be set more than once \n"); + } + else + { + width = w; + height = h; + videoSize = w*h*3; + sizeSet = true; + pixels = new unsigned char[videoSize]; + pBuffer = new char[videoSize]; + + memset(pixels, 0 , videoSize); + sgCallback->setupBuffer(videoSize); + + } +} + + +// ---------------------------------------------------------------------- +// Borrowed from the SDK, use it to take apart the graph from +// the capture device downstream to the null renderer +// ---------------------------------------------------------------------- + +void videoDevice::NukeDownstream(IBaseFilter *pBF){ + IPin *pP, *pTo; + ULONG u; + IEnumPins *pins = NULL; + PIN_INFO pininfo; + HRESULT hr = pBF->EnumPins(&pins); + pins->Reset(); + while (hr == NOERROR) + { + hr = pins->Next(1, &pP, &u); + if (hr == S_OK && pP) + { + pP->ConnectedTo(&pTo); + if (pTo) + { + hr = pTo->QueryPinInfo(&pininfo); + if (hr == NOERROR) + { + if (pininfo.dir == PINDIR_INPUT) + { + NukeDownstream(pininfo.pFilter); + pGraph->Disconnect(pTo); + pGraph->Disconnect(pP); + pGraph->RemoveFilter(pininfo.pFilter); + } + pininfo.pFilter->Release(); + pininfo.pFilter = NULL; + } + pTo->Release(); + } + pP->Release(); + } + } + if (pins) pins->Release(); +} + + +// ---------------------------------------------------------------------- +// Also from SDK +// ---------------------------------------------------------------------- + +void videoDevice::destroyGraph(){ + HRESULT hr = NULL; + int FuncRetval=0; + int NumFilters=0; + + int i = 0; + while (hr == NOERROR) + { + IEnumFilters * pEnum = 0; + ULONG cFetched; + + // We must get the enumerator again every time because removing a filter from the graph + // invalidates the enumerator. We always get only the first filter from each enumerator. + hr = pGraph->EnumFilters(&pEnum); + if (FAILED(hr)) { if(verbose)printf("SETUP: pGraph->EnumFilters() failed. \n"); return; } + + IBaseFilter * pFilter = NULL; + if (pEnum->Next(1, &pFilter, &cFetched) == S_OK) + { + FILTER_INFO FilterInfo={0}; + hr = pFilter->QueryFilterInfo(&FilterInfo); + FilterInfo.pGraph->Release(); + + int count = 0; + char buffer[255]; + memset(buffer, 0, 255 * sizeof(char)); + + while( FilterInfo.achName[count] != 0x00 ) + { + buffer[count] = FilterInfo.achName[count]; + count++; + } + + if(verbose)printf("SETUP: removing filter %s...\n", buffer); + hr = pGraph->RemoveFilter(pFilter); + if (FAILED(hr)) { if(verbose)printf("SETUP: pGraph->RemoveFilter() failed. \n"); return; } + if(verbose)printf("SETUP: filter removed %s \n",buffer); + + pFilter->Release(); + pFilter = NULL; + } + else break; + pEnum->Release(); + pEnum = NULL; + i++; + } + + return; +} + + +// ---------------------------------------------------------------------- +// Our deconstructor, attempts to tear down graph and release filters etc +// Does checking to make sure it only is freeing if it needs to +// Probably could be a lot cleaner! :) +// ---------------------------------------------------------------------- + +videoDevice::~videoDevice(){ + + if(setupStarted){ if(verbose)printf("\nSETUP: Disconnecting device %i\n", myID); } + else{ + if(sgCallback){ + sgCallback->Release(); + delete sgCallback; + } + return; + } + + HRESULT HR = NULL; + + //Stop the callback and free it + if( (sgCallback) && (pGrabber) ) + { + pGrabber->SetCallback(NULL, 1); + if(verbose)printf("SETUP: freeing Grabber Callback\n"); + sgCallback->Release(); + + //delete our pixels + if(sizeSet){ + delete[] pixels; + delete[] pBuffer; + } + + delete sgCallback; + } + + //Check to see if the graph is running, if so stop it. + if( (pControl) ) + { + HR = pControl->Pause(); + if (FAILED(HR)) if(verbose)printf("ERROR - Could not pause pControl\n"); + + HR = pControl->Stop(); + if (FAILED(HR)) if(verbose)printf("ERROR - Could not stop pControl\n"); + } + + //Disconnect filters from capture device + if( (pVideoInputFilter) )NukeDownstream(pVideoInputFilter); + + //Release and zero pointers to our filters etc + if( (pDestFilter) ){ if(verbose)printf("SETUP: freeing Renderer \n"); + (pDestFilter)->Release(); + (pDestFilter) = 0; + } + if( (pVideoInputFilter) ){ if(verbose)printf("SETUP: freeing Capture Source \n"); + (pVideoInputFilter)->Release(); + (pVideoInputFilter) = 0; + } + if( (pGrabberF) ){ if(verbose)printf("SETUP: freeing Grabber Filter \n"); + (pGrabberF)->Release(); + (pGrabberF) = 0; + } + if( (pGrabber) ){ if(verbose)printf("SETUP: freeing Grabber \n"); + (pGrabber)->Release(); + (pGrabber) = 0; + } + if( (pControl) ){ if(verbose)printf("SETUP: freeing Control \n"); + (pControl)->Release(); + (pControl) = 0; + } + if( (pMediaEvent) ){ if(verbose)printf("SETUP: freeing Media Event \n"); + (pMediaEvent)->Release(); + (pMediaEvent) = 0; + } + if( (streamConf) ){ if(verbose)printf("SETUP: freeing Stream \n"); + (streamConf)->Release(); + (streamConf) = 0; + } + + if( (pAmMediaType) ){ if(verbose)printf("SETUP: freeing Media Type \n"); + MyDeleteMediaType(pAmMediaType); + } + + if((pMediaEvent)){ + if(verbose)printf("SETUP: freeing Media Event \n"); + (pMediaEvent)->Release(); + (pMediaEvent) = 0; + } + + //Destroy the graph + if( (pGraph) )destroyGraph(); + + //Release and zero our capture graph and our main graph + if( (pCaptureGraph) ){ if(verbose)printf("SETUP: freeing Capture Graph \n"); + (pCaptureGraph)->Release(); + (pCaptureGraph) = 0; + } + if( (pGraph) ){ if(verbose)printf("SETUP: freeing Main Graph \n"); + (pGraph)->Release(); + (pGraph) = 0; + } + + //delete our pointers + delete pDestFilter; + delete pVideoInputFilter; + delete pGrabberF; + delete pGrabber; + delete pControl; + delete streamConf; + delete pMediaEvent; + delete pCaptureGraph; + delete pGraph; + + if(verbose)printf("SETUP: Device %i disconnected and freed\n\n",myID); +} + + +////////////////////////////// VIDEO INPUT //////////////////////////////// +//////////////////////////// PUBLIC METHODS /////////////////////////////// + + +// ---------------------------------------------------------------------- +// Constructor - creates instances of videoDevice and adds the various +// media subtypes to check. +// ---------------------------------------------------------------------- + +void makeGUID( GUID *guid, unsigned long Data1, unsigned short Data2, unsigned short Data3, + unsigned char b0, unsigned char b1, unsigned char b2, unsigned char b3, + unsigned char b4, unsigned char b5, unsigned char b6, unsigned char b7 ){ + guid->Data1 = Data1; + guid->Data2 = Data2; + guid->Data3 = Data3; + guid->Data4[0] = b0; guid->Data4[1] = b1; guid->Data4[2] = b2; guid->Data4[3] = b3; + guid->Data4[4] = b4; guid->Data4[5] = b5; guid->Data4[6] = b6; guid->Data4[7] = b7; +} + +videoInput::videoInput(){ + //start com + comInit(); + + devicesFound = 0; + callbackSetCount = 0; + bCallback = true; + requestedMediaSubType = MEDIASUBTYPE_RGB24; + + //setup a max no of device objects + for(int i=0; i 0){ + limit--; + } + comInit(); + } +} + +// ---------------------------------------------------------------------- +// change to use callback or regular capture +// callback tells you when a new frame has arrived +// but non-callback won't - but is single threaded +// ---------------------------------------------------------------------- +void videoInput::setUseCallback(bool useCallback){ + if(callbackSetCount == 0){ + bCallback = useCallback; + callbackSetCount = 1; + }else{ + printf("ERROR: setUseCallback can only be called before setup\n"); + } +} + +// ---------------------------------------------------------------------- +// Set the requested framerate - no guarantee you will get this +// +// ---------------------------------------------------------------------- + +void videoInput::setIdealFramerate(int deviceNumber, int idealFramerate){ + if(deviceNumber >= VI_MAX_CAMERAS || VDList[deviceNumber]->readyToCapture) return; + + if( idealFramerate > 0 ){ + VDList[deviceNumber]->requestedFrameTime = (unsigned long)(10000000 / idealFramerate); + } +} + + +// ---------------------------------------------------------------------- +// Set the requested framerate - no guarantee you will get this +// +// ---------------------------------------------------------------------- + +void videoInput::setAutoReconnectOnFreeze(int deviceNumber, bool doReconnect, int numMissedFramesBeforeReconnect){ + if(deviceNumber >= VI_MAX_CAMERAS) return; + + VDList[deviceNumber]->autoReconnect = doReconnect; + VDList[deviceNumber]->nFramesForReconnect = numMissedFramesBeforeReconnect; + +} + + +// ---------------------------------------------------------------------- +// Setup a device with the default settings +// +// ---------------------------------------------------------------------- + +bool videoInput::setupDevice(int deviceNumber){ + if(deviceNumber >= VI_MAX_CAMERAS || VDList[deviceNumber]->readyToCapture) return false; + + if(setup(deviceNumber))return true; + return false; +} + + +// ---------------------------------------------------------------------- +// Setup a device with the default size but specify input type +// +// ---------------------------------------------------------------------- + +bool videoInput::setupDevice(int deviceNumber, int connection){ + if(deviceNumber >= VI_MAX_CAMERAS || VDList[deviceNumber]->readyToCapture) return false; + + setPhyCon(deviceNumber, connection); + if(setup(deviceNumber))return true; + return false; +} + + +// ---------------------------------------------------------------------- +// Setup a device with the default connection but specify size +// +// ---------------------------------------------------------------------- + +bool videoInput::setupDevice(int deviceNumber, int w, int h){ + if(deviceNumber >= VI_MAX_CAMERAS || VDList[deviceNumber]->readyToCapture) return false; + + setAttemptCaptureSize(deviceNumber, w, h); + if(setup(deviceNumber))return true; + return false; +} + + +// ---------------------------------------------------------------------- +// Setup a device with specific size and connection +// +// ---------------------------------------------------------------------- + +bool videoInput::setupDevice(int deviceNumber, int w, int h, int connection){ + if(deviceNumber >= VI_MAX_CAMERAS || VDList[deviceNumber]->readyToCapture) return false; + + setAttemptCaptureSize(deviceNumber,w,h); + setPhyCon(deviceNumber, connection); + if(setup(deviceNumber))return true; + return false; +} + + +// ---------------------------------------------------------------------- +// Setup the default video format of the device +// Must be called after setup! +// See #define formats in header file (eg VI_NTSC_M ) +// +// ---------------------------------------------------------------------- + +bool videoInput::setFormat(int deviceNumber, int format){ + if(deviceNumber >= VI_MAX_CAMERAS || !VDList[deviceNumber]->readyToCapture) return false; + + bool returnVal = false; + + if(format >= 0 && format < VI_NUM_FORMATS){ + VDList[deviceNumber]->formatType = formatTypes[format]; + VDList[deviceNumber]->specificFormat = true; + + if(VDList[deviceNumber]->specificFormat){ + + HRESULT hr = getDevice(&VDList[deviceNumber]->pVideoInputFilter, deviceNumber, VDList[deviceNumber]->wDeviceName, VDList[deviceNumber]->nDeviceName); + if(hr != S_OK){ + return false; + } + + IAMAnalogVideoDecoder *pVideoDec = NULL; + hr = VDList[deviceNumber]->pCaptureGraph->FindInterface(NULL, &MEDIATYPE_Video, VDList[deviceNumber]->pVideoInputFilter, IID_IAMAnalogVideoDecoder, (void **)&pVideoDec); + + //in case the settings window some how freed them first + if(VDList[deviceNumber]->pVideoInputFilter)VDList[deviceNumber]->pVideoInputFilter->Release(); + if(VDList[deviceNumber]->pVideoInputFilter)VDList[deviceNumber]->pVideoInputFilter = NULL; + + if(FAILED(hr)){ + printf("SETUP: couldn't set requested format\n"); + }else{ + long lValue = 0; + hr = pVideoDec->get_AvailableTVFormats(&lValue); + if( SUCCEEDED(hr) && (lValue & VDList[deviceNumber]->formatType) ) + { + hr = pVideoDec->put_TVFormat(VDList[deviceNumber]->formatType); + if( FAILED(hr) ){ + printf("SETUP: couldn't set requested format\n"); + }else{ + returnVal = true; + } + } + + pVideoDec->Release(); + pVideoDec = NULL; + } + } + } + + return returnVal; +} + +// ---------------------------------------------------------------------- +// Our static function for returning device names - thanks Peter! +// Must call listDevices first. +// +// ---------------------------------------------------------------------- +char videoInput::deviceNames[VI_MAX_CAMERAS][255]={{0}}; + +char * videoInput::getDeviceName(int deviceID){ + if( deviceID >= VI_MAX_CAMERAS ){ + return NULL; + } + return deviceNames[deviceID]; +} + + +// ---------------------------------------------------------------------- +// Our static function for finding num devices available etc +// +// ---------------------------------------------------------------------- + +int videoInput::getDeviceIDFromName(char * name) { + + if (listDevices(true) == 0) return -1; + + int deviceID = -1; + + for (int i = 0; i < VI_MAX_CAMERAS; i++) { + if (deviceNames[i] == name) { + deviceID = i; + break; + } + } + + return deviceID; +} + +std::vector videoInput::getDeviceList(){ + int numDev = videoInput::listDevices(true); + std::vector deviceList; + for(int i = 0; i < numDev; i++){ + char * name = videoInput::getDeviceName(i); + if( name == NULL )break; + deviceList.push_back(name); + } + return deviceList; +} + +int videoInput::listDevices(bool silent){ + + //COM Library Intialization + comInit(); + + if(!silent)printf("\nVIDEOINPUT SPY MODE!\n\n"); + + + ICreateDevEnum *pDevEnum = NULL; + IEnumMoniker *pEnum = NULL; + int deviceCounter = 0; + + HRESULT hr = CoCreateInstance(CLSID_SystemDeviceEnum, NULL, + CLSCTX_INPROC_SERVER, IID_ICreateDevEnum, + reinterpret_cast(&pDevEnum)); + + + if (SUCCEEDED(hr)) + { + // Create an enumerator for the video capture category. + hr = pDevEnum->CreateClassEnumerator( + CLSID_VideoInputDeviceCategory, + &pEnum, 0); + + if(hr == S_OK){ + + if(!silent)printf("SETUP: Looking For Capture Devices\n"); + IMoniker *pMoniker = NULL; + + while (pEnum->Next(1, &pMoniker, NULL) == S_OK){ + + IPropertyBag *pPropBag; + hr = pMoniker->BindToStorage(0, 0, IID_IPropertyBag, + (void**)(&pPropBag)); + + if (FAILED(hr)){ + pMoniker->Release(); + continue; // Skip this one, maybe the next one will work. + } + + + // Find the description or friendly name. + VARIANT varName; + VariantInit(&varName); + hr = pPropBag->Read(L"Description", &varName, 0); + + if (FAILED(hr)) hr = pPropBag->Read(L"FriendlyName", &varName, 0); + + if (SUCCEEDED(hr)){ + + hr = pPropBag->Read(L"FriendlyName", &varName, 0); + + int count = 0; + int maxLen = sizeof(deviceNames[0])/sizeof(deviceNames[0][0]) - 2; + while( varName.bstrVal[count] != 0x00 && count < maxLen) { + deviceNames[deviceCounter][count] = varName.bstrVal[count]; + count++; + } + deviceNames[deviceCounter][count] = 0; + + if(!silent)printf("SETUP: %i) %s \n",deviceCounter, deviceNames[deviceCounter]); + } + + pPropBag->Release(); + pPropBag = NULL; + + pMoniker->Release(); + pMoniker = NULL; + + deviceCounter++; + } + + pDevEnum->Release(); + pDevEnum = NULL; + + pEnum->Release(); + pEnum = NULL; + } + + if(!silent)printf("SETUP: %i Device(s) found\n\n", deviceCounter); + } + + comUnInit(); + + return deviceCounter; +} + + +// ---------------------------------------------------------------------- +// +// +// ---------------------------------------------------------------------- + +int videoInput::getWidth(int id){ + + if(isDeviceSetup(id)) + { + return VDList[id] ->width; + } + + return 0; + +} + + +// ---------------------------------------------------------------------- +// +// +// ---------------------------------------------------------------------- + +int videoInput::getHeight(int id){ + + if(isDeviceSetup(id)) + { + return VDList[id] ->height; + } + + return 0; + +} + + +// ---------------------------------------------------------------------- +// +// +// ---------------------------------------------------------------------- + +int videoInput::getSize(int id){ + + if(isDeviceSetup(id)) + { + return VDList[id] ->videoSize; + } + + return 0; + +} + + +// ---------------------------------------------------------------------- +// Uses a supplied buffer +// ---------------------------------------------------------------------- + +bool videoInput::getPixels(int id, unsigned char * dstBuffer, bool flipRedAndBlue, bool flipImage){ + + bool success = false; + + if(isDeviceSetup(id)){ + if(bCallback){ + //callback capture + + DWORD result = WaitForSingleObject(VDList[id]->sgCallback->hEvent, 1000); + if( result != WAIT_OBJECT_0) return false; + + //double paranoia - mutexing with both event and critical section + EnterCriticalSection(&VDList[id]->sgCallback->critSection); + + unsigned char * src = VDList[id]->sgCallback->pixels; + unsigned char * dst = dstBuffer; + int height = VDList[id]->height; + int width = VDList[id]->width; + + processPixels(src, dst, width, height, flipRedAndBlue, flipImage); + VDList[id]->sgCallback->newFrame = false; + + LeaveCriticalSection(&VDList[id]->sgCallback->critSection); + + ResetEvent(VDList[id]->sgCallback->hEvent); + + success = true; + + } + else{ + //regular capture method + long bufferSize = VDList[id]->videoSize; + HRESULT hr = VDList[id]->pGrabber->GetCurrentBuffer(&bufferSize, (long *)VDList[id]->pBuffer); + if(hr==S_OK){ + int numBytes = VDList[id]->videoSize; + if (numBytes == bufferSize){ + + unsigned char * src = (unsigned char * )VDList[id]->pBuffer; + unsigned char * dst = dstBuffer; + int height = VDList[id]->height; + int width = VDList[id]->width; + + processPixels(src, dst, width, height, flipRedAndBlue, flipImage); + success = true; + }else{ + if(verbose)printf("ERROR: GetPixels() - bufferSizes do not match!\n"); + } + }else{ + if(verbose)printf("ERROR: GetPixels() - Unable to grab frame for device %i\n", id); + } + } + } + + return success; +} + + +// ---------------------------------------------------------------------- +// Returns a buffer +// ---------------------------------------------------------------------- +unsigned char * videoInput::getPixels(int id, bool flipRedAndBlue, bool flipImage){ + + if(isDeviceSetup(id)){ + getPixels(id, VDList[id]->pixels, flipRedAndBlue, flipImage); + } + + return VDList[id]->pixels; +} + + + +// ---------------------------------------------------------------------- +// +// +// ---------------------------------------------------------------------- +bool videoInput::isFrameNew(int id){ + if(!isDeviceSetup(id)) return false; + if(!bCallback)return true; + + bool result = false; + bool freeze = false; + + //again super paranoia! + EnterCriticalSection(&VDList[id]->sgCallback->critSection); + result = VDList[id]->sgCallback->newFrame; + + //we need to give it some time at the begining to start up so lets check after 400 frames + if(VDList[id]->nFramesRunning > 400 && VDList[id]->sgCallback->freezeCheck > VDList[id]->nFramesForReconnect ){ + freeze = true; + } + + //we increment the freezeCheck var here - the callback resets it to 1 + //so as long as the callback is running this var should never get too high. + //if the callback is not running then this number will get high and trigger the freeze action below + VDList[id]->sgCallback->freezeCheck++; + LeaveCriticalSection(&VDList[id]->sgCallback->critSection); + + VDList[id]->nFramesRunning++; + + if(freeze && VDList[id]->autoReconnect){ + if(verbose)printf("ERROR: Device seems frozen - attempting to reconnect\n"); + if( !restartDevice(VDList[id]->myID) ){ + if(verbose)printf("ERROR: Unable to reconnect to device\n"); + }else{ + if(verbose)printf("SUCCESS: Able to reconnect to device\n"); + } + } + + return result; +} + + +// ---------------------------------------------------------------------- +// +// +// ---------------------------------------------------------------------- + +bool videoInput::isDeviceSetup(int id){ + + if(idreadyToCapture)return true; + else return false; + +} + + +// ---------------------------------------------------------------------- +// Gives us a little pop up window to adjust settings +// We do this in a seperate thread now! +// ---------------------------------------------------------------------- + + +void __cdecl videoInput::basicThread(void * objPtr){ + + //get a reference to the video device + //not a copy as we need to free the filter + videoDevice * vd = *( (videoDevice **)(objPtr) ); + ShowFilterPropertyPages(vd->pVideoInputFilter); + + //now we free the filter and make sure it set to NULL + if(vd->pVideoInputFilter)vd->pVideoInputFilter->Release(); + if(vd->pVideoInputFilter)vd->pVideoInputFilter = NULL; + + return; +} + +void videoInput::showSettingsWindow(int id){ + + if(isDeviceSetup(id)){ + + HANDLE myTempThread; + + //we reconnect to the device as we have freed our reference to it + //why have we freed our reference? because there seemed to be an issue + //with some mpeg devices if we didn't + HRESULT hr = getDevice(&VDList[id]->pVideoInputFilter, id, VDList[id]->wDeviceName, VDList[id]->nDeviceName); + if(hr == S_OK){ + myTempThread = (HANDLE)_beginthread(basicThread, 0, (void *)&VDList[id]); + } + } +} + + +// Set a video signal setting using IAMVideoProcAmp +bool videoInput::getVideoSettingFilter(int deviceID, long Property, long &min, long &max, long &SteppingDelta, long ¤tValue, long &flags, long &defaultValue){ + if( !isDeviceSetup(deviceID) )return false; + + HRESULT hr; + bool isSuccessful = false; + + videoDevice * VD = VDList[deviceID]; + + hr = getDevice(&VD->pVideoInputFilter, deviceID, VD->wDeviceName, VD->nDeviceName); + if (FAILED(hr)){ + printf("setVideoSetting - getDevice Error\n"); + return false; + } + + IAMVideoProcAmp *pAMVideoProcAmp = NULL; + + hr = VD->pVideoInputFilter->QueryInterface(IID_IAMVideoProcAmp, (void**)&pAMVideoProcAmp); + if(FAILED(hr)){ + printf("setVideoSetting - QueryInterface Error\n"); + if(VD->pVideoInputFilter)VD->pVideoInputFilter->Release(); + if(VD->pVideoInputFilter)VD->pVideoInputFilter = NULL; + return false; + } + + if (verbose) printf("Setting video setting %ld.\n", Property); + + pAMVideoProcAmp->GetRange(Property, &min, &max, &SteppingDelta, &defaultValue, &flags); + if (verbose) printf("Range for video setting %ld: Min:%ld Max:%ld SteppingDelta:%ld Default:%ld Flags:%ld\n", Property, min, max, SteppingDelta, defaultValue, flags); + pAMVideoProcAmp->Get(Property, ¤tValue, &flags); + + if(pAMVideoProcAmp)pAMVideoProcAmp->Release(); + if(VD->pVideoInputFilter)VD->pVideoInputFilter->Release(); + if(VD->pVideoInputFilter)VD->pVideoInputFilter = NULL; + + return true; + +} + + +// Set a video signal setting using IAMVideoProcAmp +bool videoInput::setVideoSettingFilterPct(int deviceID, long Property, float pctValue, long Flags){ + if( !isDeviceSetup(deviceID) )return false; + + long min, max, currentValue, flags, defaultValue, stepAmnt; + + if( !getVideoSettingFilter(deviceID, Property, min, max, stepAmnt, currentValue, flags, defaultValue) )return false; + + if(pctValue > 1.0)pctValue = 1.0; + else if(pctValue < 0)pctValue = 0.0; + + float range = (float)max - (float)min; + if(range <= 0)return false; + if(stepAmnt == 0) return false; + + long value = (long)( (float)min + range * pctValue ); + long rasterValue = value; + + //if the range is the stepAmnt then it is just a switch + //so we either set the value to low or high + if( range == stepAmnt ){ + if( pctValue < 0.5)rasterValue = min; + else rasterValue = max; + }else{ + //we need to rasterize the value to the stepping amnt + long mod = value % stepAmnt; + double halfStep = stepAmnt * 0.5; + if( mod < halfStep ) rasterValue -= mod; + else rasterValue += stepAmnt - mod; + printf("RASTER - pctValue is %f - value is %i - step is %i - mod is %i - rasterValue is %i\n", pctValue, value, stepAmnt, mod, rasterValue); + } + + return setVideoSettingFilter(deviceID, Property, rasterValue, Flags, false); +} + + +// Set a video signal setting using IAMVideoProcAmp +bool videoInput::setVideoSettingFilter(int deviceID, long Property, long lValue, long Flags, bool useDefaultValue){ + if( !isDeviceSetup(deviceID) )return false; + + HRESULT hr; + bool isSuccessful = false; + + videoDevice * VD = VDList[deviceID]; + + hr = getDevice(&VD->pVideoInputFilter, deviceID, VD->wDeviceName, VD->nDeviceName); + if (FAILED(hr)){ + printf("setVideoSetting - getDevice Error\n"); + return false; + } + + IAMVideoProcAmp *pAMVideoProcAmp = NULL; + + hr = VD->pVideoInputFilter->QueryInterface(IID_IAMVideoProcAmp, (void**)&pAMVideoProcAmp); + if(FAILED(hr)){ + printf("setVideoSetting - QueryInterface Error\n"); + if(VD->pVideoInputFilter)VD->pVideoInputFilter->Release(); + if(VD->pVideoInputFilter)VD->pVideoInputFilter = NULL; + return false; + } + + if (verbose) printf("Setting video setting %ld.\n", Property); + long CurrVal, Min, Max, SteppingDelta, Default, CapsFlags, AvailableCapsFlags = 0; + + + pAMVideoProcAmp->GetRange(Property, &Min, &Max, &SteppingDelta, &Default, &AvailableCapsFlags); + if (verbose) printf("Range for video setting %ld: Min:%ld Max:%ld SteppingDelta:%ld Default:%ld Flags:%ld\n", Property, Min, Max, SteppingDelta, Default, AvailableCapsFlags); + pAMVideoProcAmp->Get(Property, &CurrVal, &CapsFlags); + + if (verbose) printf("Current value: %ld Flags %ld (%s)\n", CurrVal, CapsFlags, (CapsFlags == 1 ? "Auto" : (CapsFlags == 2 ? "Manual" : "Unknown"))); + + if (useDefaultValue) { + pAMVideoProcAmp->Set(Property, Default, VideoProcAmp_Flags_Auto); + } + else{ + // Perhaps add a check that lValue and Flags are within the range aquired from GetRange above + pAMVideoProcAmp->Set(Property, lValue, Flags); + } + + if(pAMVideoProcAmp)pAMVideoProcAmp->Release(); + if(VD->pVideoInputFilter)VD->pVideoInputFilter->Release(); + if(VD->pVideoInputFilter)VD->pVideoInputFilter = NULL; + + return true; + +} + + +bool videoInput::setVideoSettingCameraPct(int deviceID, long Property, float pctValue, long Flags){ + if( !isDeviceSetup(deviceID) )return false; + + long min, max, currentValue, flags, defaultValue, stepAmnt; + + if( !getVideoSettingCamera(deviceID, Property, min, max, stepAmnt, currentValue, flags, defaultValue) )return false; + + if(pctValue > 1.0)pctValue = 1.0; + else if(pctValue < 0)pctValue = 0.0; + + float range = (float)max - (float)min; + if(range <= 0)return false; + if(stepAmnt == 0) return false; + + long value = (long)( (float)min + range * pctValue ); + long rasterValue = value; + + //if the range is the stepAmnt then it is just a switch + //so we either set the value to low or high + if( range == stepAmnt ){ + if( pctValue < 0.5)rasterValue = min; + else rasterValue = max; + }else{ + //we need to rasterize the value to the stepping amnt + long mod = value % stepAmnt; + double halfStep = stepAmnt * 0.5; + if( mod < halfStep ) rasterValue -= mod; + else rasterValue += stepAmnt - mod; + printf("RASTER - pctValue is %f - value is %i - step is %i - mod is %i - rasterValue is %i\n", pctValue, value, stepAmnt, mod, rasterValue); + } + + return setVideoSettingCamera(deviceID, Property, rasterValue, Flags, false); +} + + +bool videoInput::setVideoSettingCamera(int deviceID, long Property, long lValue, long Flags, bool useDefaultValue){ + IAMCameraControl *pIAMCameraControl; + if(isDeviceSetup(deviceID)) + { + HRESULT hr; + hr = getDevice(&VDList[deviceID]->pVideoInputFilter, deviceID, VDList[deviceID]->wDeviceName, VDList[deviceID]->nDeviceName); + + if (verbose) printf("Setting video setting %ld.\n", Property); + hr = VDList[deviceID]->pVideoInputFilter->QueryInterface(IID_IAMCameraControl, (void**)&pIAMCameraControl); + if (FAILED(hr)) { + printf("Error\n"); + return false; + } + else + { + long CurrVal, Min, Max, SteppingDelta, Default, CapsFlags, AvailableCapsFlags; + pIAMCameraControl->GetRange(Property, &Min, &Max, &SteppingDelta, &Default, &AvailableCapsFlags); + if (verbose) printf("Range for video setting %ld: Min:%ld Max:%ld SteppingDelta:%ld Default:%ld Flags:%ld\n", Property, Min, Max, SteppingDelta, Default, AvailableCapsFlags); + pIAMCameraControl->Get(Property, &CurrVal, &CapsFlags); + if (verbose) printf("Current value: %ld Flags %ld (%s)\n", CurrVal, CapsFlags, (CapsFlags == 1 ? "Auto" : (CapsFlags == 2 ? "Manual" : "Unknown"))); + if (useDefaultValue) { + pIAMCameraControl->Set(Property, Default, CameraControl_Flags_Auto); + } + else + { + // Perhaps add a check that lValue and Flags are within the range aquired from GetRange above + pIAMCameraControl->Set(Property, lValue, Flags); + } + pIAMCameraControl->Release(); + return true; + } + } + return false; +} + + + +bool videoInput::getVideoSettingCamera(int deviceID, long Property, long &min, long &max, long &SteppingDelta, long ¤tValue, long &flags, long &defaultValue){ + if( !isDeviceSetup(deviceID) )return false; + + HRESULT hr; + bool isSuccessful = false; + + videoDevice * VD = VDList[deviceID]; + + hr = getDevice(&VD->pVideoInputFilter, deviceID, VD->wDeviceName, VD->nDeviceName); + if (FAILED(hr)){ + printf("setVideoSetting - getDevice Error\n"); + return false; + } + + IAMCameraControl *pIAMCameraControl = NULL; + + hr = VD->pVideoInputFilter->QueryInterface(IID_IAMCameraControl, (void**)&pIAMCameraControl); + if(FAILED(hr)){ + printf("setVideoSetting - QueryInterface Error\n"); + if(VD->pVideoInputFilter)VD->pVideoInputFilter->Release(); + if(VD->pVideoInputFilter)VD->pVideoInputFilter = NULL; + return false; + } + + if (verbose) printf("Setting video setting %ld.\n", Property); + + pIAMCameraControl->GetRange(Property, &min, &max, &SteppingDelta, &defaultValue, &flags); + if (verbose) printf("Range for video setting %ld: Min:%ld Max:%ld SteppingDelta:%ld Default:%ld Flags:%ld\n", Property, min, max, SteppingDelta, defaultValue, flags); + pIAMCameraControl->Get(Property, ¤tValue, &flags); + + if(pIAMCameraControl)pIAMCameraControl->Release(); + if(VD->pVideoInputFilter)VD->pVideoInputFilter->Release(); + if(VD->pVideoInputFilter)VD->pVideoInputFilter = NULL; + + return true; + +} + + +// ---------------------------------------------------------------------- +// Shutsdown the device, deletes the object and creates a new object +// so it is ready to be setup again +// ---------------------------------------------------------------------- + +void videoInput::stopDevice(int id){ + if(id < VI_MAX_CAMERAS) + { + delete VDList[id]; + VDList[id] = new videoDevice(); + } + +} + +// ---------------------------------------------------------------------- +// Restarts the device with the same settings it was using +// +// ---------------------------------------------------------------------- + +bool videoInput::restartDevice(int id){ + if(isDeviceSetup(id)) + { + int conn = VDList[id]->storeConn; + int tmpW = VDList[id]->width; + int tmpH = VDList[id]->height; + + bool bFormat = VDList[id]->specificFormat; + long format = VDList[id]->formatType; + + int nReconnect = VDList[id]->nFramesForReconnect; + bool bReconnect = VDList[id]->autoReconnect; + + unsigned long avgFrameTime = VDList[id]->requestedFrameTime; + + stopDevice(id); + + //set our fps if needed + if( avgFrameTime != -1){ + VDList[id]->requestedFrameTime = avgFrameTime; + } + + if( setupDevice(id, tmpW, tmpH, conn) ){ + //reapply the format - ntsc / pal etc + if( bFormat ){ + setFormat(id, format); + } + if( bReconnect ){ + setAutoReconnectOnFreeze(id, true, nReconnect); + } + return true; + } + } + return false; +} + +// ---------------------------------------------------------------------- +// Shuts down all devices, deletes objects and unitializes com if needed +// +// ---------------------------------------------------------------------- +videoInput::~videoInput(){ + + for(int i = 0; i < VI_MAX_CAMERAS; i++) + { + delete VDList[i]; + } + //Unitialize com + comUnInit(); +} + + +////////////////////////////// VIDEO INPUT //////////////////////////////// +//////////////////////////// PRIVATE METHODS ////////////////////////////// + +// ---------------------------------------------------------------------- +// We only should init com if it hasn't been done so by our apps thread +// Use a static counter to keep track of other times it has been inited +// (do we need to worry about multithreaded apps?) +// ---------------------------------------------------------------------- + +bool videoInput::comInit(){ + HRESULT hr = NULL; + + //no need for us to start com more than once + if(comInitCount == 0 ){ + + // Initialize the COM library. + //CoInitializeEx so videoInput can run in another thread + if( VI_COM_MULTI_THREADED ){ + hr = CoInitializeEx(NULL,COINIT_MULTITHREADED); + }else{ + hr = CoInitialize(NULL); + } + //this is the only case where there might be a problem + //if another library has started com as single threaded + //and we need it multi-threaded - send warning but don't fail + if( hr == RPC_E_CHANGED_MODE){ + if(verbose)printf("SETUP - COM already setup - threaded VI might not be possible\n"); + } + } + + comInitCount++; + return true; +} + + +// ---------------------------------------------------------------------- +// Same as above but to unitialize com, decreases counter and frees com +// if no one else is using it +// ---------------------------------------------------------------------- + +bool videoInput::comUnInit(){ + if(comInitCount > 0)comInitCount--; //decrease the count of instances using com + + if(comInitCount == 0){ + CoUninitialize(); //if there are no instances left - uninitialize com + return true; + } + + return false; +} + + +// ---------------------------------------------------------------------- +// This is the size we ask for - we might not get it though :) +// +// ---------------------------------------------------------------------- + +void videoInput::setAttemptCaptureSize(int id, int w, int h){ + + VDList[id]->tryWidth = w; + VDList[id]->tryHeight = h; + VDList[id]->tryDiffSize = true; + +} + + +// ---------------------------------------------------------------------- +// Set the connection type +// (maybe move to private?) +// ---------------------------------------------------------------------- + +void videoInput::setPhyCon(int id, int conn){ + + switch(conn){ + + case 0: + VDList[id]->connection = PhysConn_Video_Composite; + break; + case 1: + VDList[id]->connection = PhysConn_Video_SVideo; + break; + case 2: + VDList[id]->connection = PhysConn_Video_Tuner; + break; + case 3: + VDList[id]->connection = PhysConn_Video_USB; + break; + case 4: + VDList[id]->connection = PhysConn_Video_1394; + break; + default: + return; //if it is not these types don't set crossbar + break; + } + + VDList[id]->storeConn = conn; + VDList[id]->useCrossbar = true; +} + + +// ---------------------------------------------------------------------- +// Check that we are not trying to setup a non-existant device +// Then start the graph building! +// ---------------------------------------------------------------------- + +bool videoInput::setup(int deviceNumber){ + devicesFound = getDeviceCount(); + + if(deviceNumber>devicesFound-1) + { + if(verbose)printf("SETUP: device[%i] not found - you have %i devices available\n", deviceNumber, devicesFound); + if(devicesFound>=0) if(verbose)printf("SETUP: this means that the last device you can use is device[%i] \n", devicesFound-1); + return false; + } + + if(VDList[deviceNumber]->readyToCapture) + { + if(verbose)printf("SETUP: can't setup, device %i is currently being used\n",VDList[deviceNumber]->myID); + return false; + } + + HRESULT hr = start(deviceNumber, VDList[deviceNumber]); + if(hr == S_OK)return true; + else return false; +} + + +// ---------------------------------------------------------------------- +// Does both vertical buffer flipping and bgr to rgb swapping +// You have any combination of those. +// ---------------------------------------------------------------------- + +void videoInput::processPixels(unsigned char * src, unsigned char * dst, int width, int height, bool bRGB, bool bFlip){ + + int widthInBytes = width * 3; + int numBytes = widthInBytes * height; + + if(!bRGB){ + + int x = 0; + int y = 0; + + if(bFlip){ + for(int y = 0; y < height; y++){ + memcpy(dst + (y * widthInBytes), src + ( (height -y -1) * widthInBytes), widthInBytes); + } + + }else{ + memcpy(dst, src, numBytes); + } + }else{ + if(bFlip){ + + int x = 0; + int y = (height - 1) * widthInBytes; + src += y; + + for(int i = 0; i < numBytes; i+=3){ + if(x >= width){ + x = 0; + src -= widthInBytes*2; + } + + *dst = *(src+2); + dst++; + + *dst = *(src+1); + dst++; + + *dst = *src; + dst++; + + src+=3; + x++; + } + } + else{ + for(int i = 0; i < numBytes; i+=3){ + *dst = *(src+2); + dst++; + + *dst = *(src+1); + dst++; + + *dst = *src; + dst++; + + src+=3; + } + } + } +} + + +//------------------------------------------------------------------------------------------ +void videoInput::getMediaSubtypeAsString(GUID type, char * typeAsString){ + + static const int maxStr = 8; + char tmpStr[maxStr]; + if( type == MEDIASUBTYPE_RGB24) strncpy(tmpStr, "RGB24", maxStr); + else if(type == MEDIASUBTYPE_RGB32) strncpy(tmpStr, "RGB32", maxStr); + else if(type == MEDIASUBTYPE_RGB555)strncpy(tmpStr, "RGB555", maxStr); + else if(type == MEDIASUBTYPE_RGB565)strncpy(tmpStr, "RGB565", maxStr); + else if(type == MEDIASUBTYPE_YUY2) strncpy(tmpStr, "YUY2", maxStr); + else if(type == MEDIASUBTYPE_YVYU) strncpy(tmpStr, "YVYU", maxStr); + else if(type == MEDIASUBTYPE_YUYV) strncpy(tmpStr, "YUYV", maxStr); + else if(type == MEDIASUBTYPE_IYUV) strncpy(tmpStr, "IYUV", maxStr); + else if(type == MEDIASUBTYPE_UYVY) strncpy(tmpStr, "UYVY", maxStr); + else if(type == MEDIASUBTYPE_YV12) strncpy(tmpStr, "YV12", maxStr); + else if(type == MEDIASUBTYPE_YVU9) strncpy(tmpStr, "YVU9", maxStr); + else if(type == MEDIASUBTYPE_Y411) strncpy(tmpStr, "Y411", maxStr); + else if(type == MEDIASUBTYPE_Y41P) strncpy(tmpStr, "Y41P", maxStr); + else if(type == MEDIASUBTYPE_Y211) strncpy(tmpStr, "Y211", maxStr); + else if(type == MEDIASUBTYPE_AYUV) strncpy(tmpStr, "AYUV", maxStr); + else if(type == MEDIASUBTYPE_Y800) strncpy(tmpStr, "Y800", maxStr); + else if(type == MEDIASUBTYPE_Y8) strncpy(tmpStr, "Y8", maxStr); + else if(type == MEDIASUBTYPE_GREY) strncpy(tmpStr, "GREY", maxStr); + else strncpy(tmpStr, "OTHER", maxStr); + + memcpy(typeAsString, tmpStr, sizeof(char)*8); +} + +void videoInput::setRequestedMediaSubType(int mediatype) { + requestedMediaSubType = mediaSubtypes[mediatype]; +} + + +//------------------------------------------------------------------------------------------- +static void findClosestSizeAndSubtype(videoDevice * VD, int widthIn, int heightIn, int &widthOut, int &heightOut, GUID & mediatypeOut){ + HRESULT hr; + + //find perfect match or closest size + int nearW = 9999999; + int nearH = 9999999; + bool foundClosestMatch = true; + + int iCount = 0; + int iSize = 0; + hr = VD->streamConf->GetNumberOfCapabilities(&iCount, &iSize); + + if (iSize == sizeof(VIDEO_STREAM_CONFIG_CAPS)) + { + //For each format type RGB24 YUV2 etc + for (int iFormat = 0; iFormat < iCount; iFormat++) + { + VIDEO_STREAM_CONFIG_CAPS scc; + AM_MEDIA_TYPE *pmtConfig; + hr = VD->streamConf->GetStreamCaps(iFormat, &pmtConfig, (BYTE*)&scc); + + if (SUCCEEDED(hr)){ + + //his is how many diff sizes are available for the format + int stepX = scc.OutputGranularityX; + int stepY = scc.OutputGranularityY; + + int tempW = 999999; + int tempH = 999999; + + //Don't want to get stuck in a loop + if(stepX < 1 || stepY < 1) continue; + + //if(verbose)printf("min is %i %i max is %i %i - res is %i %i \n", scc.MinOutputSize.cx, scc.MinOutputSize.cy, scc.MaxOutputSize.cx, scc.MaxOutputSize.cy, stepX, stepY); + //if(verbose)printf("min frame duration is %i max duration is %i\n", scc.MinFrameInterval, scc.MaxFrameInterval); + + bool exactMatch = false; + bool exactMatchX = false; + bool exactMatchY = false; + + for(int x = scc.MinOutputSize.cx; x <= scc.MaxOutputSize.cx; x+= stepX){ + //If we find an exact match + if( widthIn == x ){ + exactMatchX = true; + tempW = x; + } + //Otherwise lets find the closest match based on width + else if( abs(widthIn-x) < abs(widthIn-tempW) ){ + tempW = x; + } + } + + for(int y = scc.MinOutputSize.cy; y <= scc.MaxOutputSize.cy; y+= stepY){ + //If we find an exact match + if( heightIn == y){ + exactMatchY = true; + tempH = y; + } + //Otherwise lets find the closest match based on height + else if( abs(heightIn-y) < abs(heightIn-tempH) ){ + tempH = y; + } + } + + //see if we have an exact match! + if(exactMatchX && exactMatchY){ + foundClosestMatch = false; + exactMatch = true; + + widthOut = widthIn; + heightOut = heightIn; + mediatypeOut = pmtConfig->subtype; + } + + //otherwise lets see if this filters closest size is the closest + //available. the closest size is determined by the sum difference + //of the widths and heights + else if( abs(widthIn - tempW) + abs(heightIn - tempH) < abs(widthIn - nearW) + abs(heightIn - nearH) ) + { + nearW = tempW; + nearH = tempH; + + widthOut = nearW; + heightOut = nearH; + mediatypeOut = pmtConfig->subtype; + } + + MyDeleteMediaType(pmtConfig); + + //If we have found an exact match no need to search anymore + if(exactMatch)break; + } + } + } + +} + + +//--------------------------------------------------------------------------------------------------- +static bool setSizeAndSubtype(videoDevice * VD, int attemptWidth, int attemptHeight, GUID mediatype){ + VIDEOINFOHEADER *pVih = reinterpret_cast(VD->pAmMediaType->pbFormat); + + //store current size + int tmpWidth = HEADER(pVih)->biWidth; + int tmpHeight = HEADER(pVih)->biHeight; + AM_MEDIA_TYPE * tmpType = NULL; + + HRESULT hr = VD->streamConf->GetFormat(&tmpType); + if(hr != S_OK)return false; + + //set new size: + //width and height + HEADER(pVih)->biWidth = attemptWidth; + HEADER(pVih)->biHeight = attemptHeight; + + VD->pAmMediaType->formattype = FORMAT_VideoInfo; + VD->pAmMediaType->majortype = MEDIATYPE_Video; + VD->pAmMediaType->subtype = mediatype; + + //buffer size + VD->pAmMediaType->lSampleSize = attemptWidth*attemptHeight*3; + + //set fps if requested + if( VD->requestedFrameTime != -1){ + pVih->AvgTimePerFrame = VD->requestedFrameTime; + } + + //okay lets try new size + hr = VD->streamConf->SetFormat(VD->pAmMediaType); + if(hr == S_OK){ + if( tmpType != NULL )MyDeleteMediaType(tmpType); + return true; + }else{ + VD->streamConf->SetFormat(tmpType); + if( tmpType != NULL )MyDeleteMediaType(tmpType); + } + + return false; +} + +// ---------------------------------------------------------------------- +// Where all the work happens! +// Attempts to build a graph for the specified device +// ---------------------------------------------------------------------- + +int videoInput::start(int deviceID, videoDevice *VD){ + + HRESULT hr = NULL; + VD->myID = deviceID; + VD->setupStarted = true; + CAPTURE_MODE = PIN_CATEGORY_CAPTURE; //Don't worry - it ends up being preview (which is faster) + callbackSetCount = 1; //make sure callback method is not changed after setup called + + if(verbose)printf("SETUP: Setting up device %i\n",deviceID); + + // CREATE THE GRAPH BUILDER // + // Create the filter graph manager and query for interfaces. + hr = CoCreateInstance(CLSID_CaptureGraphBuilder2, NULL, CLSCTX_INPROC_SERVER, IID_ICaptureGraphBuilder2, (void **)&VD->pCaptureGraph); + if (FAILED(hr)) // FAILED is a macro that tests the return value + { + if(verbose)printf("ERROR - Could not create the Filter Graph Manager\n"); + return hr; + } + + //FITLER GRAPH MANAGER// + // Create the Filter Graph Manager. + hr = CoCreateInstance(CLSID_FilterGraph, 0, CLSCTX_INPROC_SERVER,IID_IGraphBuilder, (void**)&VD->pGraph); + if (FAILED(hr)) + { + if(verbose)printf("ERROR - Could not add the graph builder!\n"); + stopDevice(deviceID); + return hr; + } + + //SET THE FILTERGRAPH// + hr = VD->pCaptureGraph->SetFiltergraph(VD->pGraph); + if (FAILED(hr)) + { + if(verbose)printf("ERROR - Could not set filtergraph\n"); + stopDevice(deviceID); + return hr; + } + + //MEDIA CONTROL (START/STOPS STREAM)// + // Using QueryInterface on the graph builder, + // Get the Media Control object. + hr = VD->pGraph->QueryInterface(IID_IMediaControl, (void **)&VD->pControl); + if (FAILED(hr)) + { + if(verbose)printf("ERROR - Could not create the Media Control object\n"); + stopDevice(deviceID); + return hr; + } + + + //FIND VIDEO DEVICE AND ADD TO GRAPH// + //gets the device specified by the second argument. + hr = getDevice(&VD->pVideoInputFilter, deviceID, VD->wDeviceName, VD->nDeviceName); + + if (SUCCEEDED(hr)){ + if(verbose)printf("SETUP: %s\n", VD->nDeviceName); + hr = VD->pGraph->AddFilter(VD->pVideoInputFilter, VD->wDeviceName); + }else{ + if(verbose)printf("ERROR - Could not find specified video device\n"); + stopDevice(deviceID); + return hr; + } + + //LOOK FOR PREVIEW PIN IF THERE IS NONE THEN WE USE CAPTURE PIN AND THEN SMART TEE TO PREVIEW + IAMStreamConfig *streamConfTest = NULL; + hr = VD->pCaptureGraph->FindInterface(&PIN_CATEGORY_PREVIEW, &MEDIATYPE_Video, VD->pVideoInputFilter, IID_IAMStreamConfig, (void **)&streamConfTest); + if(FAILED(hr)){ + if(verbose)printf("SETUP: Couldn't find preview pin using SmartTee\n"); + }else{ + CAPTURE_MODE = PIN_CATEGORY_PREVIEW; + streamConfTest->Release(); + streamConfTest = NULL; + } + + //CROSSBAR (SELECT PHYSICAL INPUT TYPE)// + //my own function that checks to see if the device can support a crossbar and if so it routes it. + //webcams tend not to have a crossbar so this function will also detect a webcams and not apply the crossbar + if(VD->useCrossbar) + { + if(verbose)printf("SETUP: Checking crossbar\n"); + routeCrossbar(&VD->pCaptureGraph, &VD->pVideoInputFilter, VD->connection, CAPTURE_MODE); + } + + + //we do this because webcams don't have a preview mode + hr = VD->pCaptureGraph->FindInterface(&CAPTURE_MODE, &MEDIATYPE_Video, VD->pVideoInputFilter, IID_IAMStreamConfig, (void **)&VD->streamConf); + if(FAILED(hr)){ + if(verbose)printf("ERROR: Couldn't config the stream!\n"); + stopDevice(deviceID); + return hr; + } + + //NOW LETS DEAL WITH GETTING THE RIGHT SIZE + hr = VD->streamConf->GetFormat(&VD->pAmMediaType); + if(FAILED(hr)){ + if(verbose)printf("ERROR: Couldn't getFormat for pAmMediaType!\n"); + stopDevice(deviceID); + return hr; + } + + VIDEOINFOHEADER *pVih = reinterpret_cast(VD->pAmMediaType->pbFormat); + int currentWidth = HEADER(pVih)->biWidth; + int currentHeight = HEADER(pVih)->biHeight; + + bool customSize = VD->tryDiffSize; + bool foundSize = false; + + if(customSize){ + if(verbose) printf("SETUP: Default Format is set to %i by %i \n", currentWidth, currentHeight); + + char guidStr[8]; + getMediaSubtypeAsString(requestedMediaSubType, guidStr); + + if(verbose)printf("SETUP: trying requested format %s @ %i by %i\n", guidStr, VD->tryWidth, VD->tryHeight); + if( setSizeAndSubtype(VD, VD->tryWidth, VD->tryHeight, requestedMediaSubType) ) { + VD->setSize(VD->tryWidth, VD->tryHeight); + foundSize = true; + } + + + if (!foundSize) { + + for(int i = 0; i < VI_NUM_TYPES; i++){ + + getMediaSubtypeAsString(mediaSubtypes[i], guidStr); + + if(verbose)printf("SETUP: trying format %s @ %i by %i\n", guidStr, VD->tryWidth, VD->tryHeight); + if( setSizeAndSubtype(VD, VD->tryWidth, VD->tryHeight, mediaSubtypes[i]) ){ + VD->setSize(VD->tryWidth, VD->tryHeight); + foundSize = true; + break; + } + } + + } + + + + + + //if we didn't find the requested size - lets try and find the closest matching size + if( foundSize == false ){ + if( verbose )printf("SETUP: couldn't find requested size - searching for closest matching size\n"); + + int closestWidth = -1; + int closestHeight = -1; + GUID newMediaSubtype; + + findClosestSizeAndSubtype(VD, VD->tryWidth, VD->tryHeight, closestWidth, closestHeight, newMediaSubtype); + + if( closestWidth != -1 && closestHeight != -1){ + getMediaSubtypeAsString(newMediaSubtype, guidStr); + + if(verbose)printf("SETUP: closest supported size is %s @ %i %i\n", guidStr, closestWidth, closestHeight); + if( setSizeAndSubtype(VD, closestWidth, closestHeight, newMediaSubtype) ){ + VD->setSize(closestWidth, closestHeight); + foundSize = true; + } + } + } + } + + //if we didn't specify a custom size or if we did but couldn't find it lets setup with the default settings + if(customSize == false || foundSize == false){ + if( VD->requestedFrameTime != -1 ){ + pVih->AvgTimePerFrame = VD->requestedFrameTime; + hr = VD->streamConf->SetFormat(VD->pAmMediaType); + } + VD->setSize(currentWidth, currentHeight); + } + + //SAMPLE GRABBER (ALLOWS US TO GRAB THE BUFFER)// + // Create the Sample Grabber. + hr = CoCreateInstance(CLSID_SampleGrabber, NULL, CLSCTX_INPROC_SERVER,IID_IBaseFilter, (void**)&VD->pGrabberF); + if (FAILED(hr)){ + if(verbose)printf("Could not Create Sample Grabber - CoCreateInstance()\n"); + stopDevice(deviceID); + return hr; + } + + hr = VD->pGraph->AddFilter(VD->pGrabberF, L"Sample Grabber"); + if (FAILED(hr)){ + if(verbose)printf("Could not add Sample Grabber - AddFilter()\n"); + stopDevice(deviceID); + return hr; + } + + hr = VD->pGrabberF->QueryInterface(IID_ISampleGrabber, (void**)&VD->pGrabber); + if (FAILED(hr)){ + if(verbose)printf("ERROR: Could not query SampleGrabber\n"); + stopDevice(deviceID); + return hr; + } + + + //Set Params - One Shot should be false unless you want to capture just one buffer + hr = VD->pGrabber->SetOneShot(FALSE); + if(bCallback){ + hr = VD->pGrabber->SetBufferSamples(FALSE); + }else{ + hr = VD->pGrabber->SetBufferSamples(TRUE); + } + + if(bCallback){ + //Tell the grabber to use our callback function - 0 is for SampleCB and 1 for BufferCB + //We use SampleCB + hr = VD->pGrabber->SetCallback(VD->sgCallback, 0); + if (FAILED(hr)){ + if(verbose)printf("ERROR: problem setting callback\n"); + stopDevice(deviceID); + return hr; + }else{ + if(verbose)printf("SETUP: Capture callback set\n"); + } + } + + //MEDIA CONVERSION + //Get video properties from the stream's mediatype and apply to the grabber (otherwise we don't get an RGB image) + //zero the media type - lets try this :) - maybe this works? + AM_MEDIA_TYPE mt; + ZeroMemory(&mt,sizeof(AM_MEDIA_TYPE)); + + mt.majortype = MEDIATYPE_Video; + mt.subtype = MEDIASUBTYPE_RGB24; + mt.formattype = FORMAT_VideoInfo; + + //VD->pAmMediaType->subtype = VD->videoType; + hr = VD->pGrabber->SetMediaType(&mt); + + //lets try freeing our stream conf here too + //this will fail if the device is already running + if(VD->streamConf){ + VD->streamConf->Release(); + VD->streamConf = NULL; + }else{ + if(verbose)printf("ERROR: connecting device - prehaps it is already being used?\n"); + stopDevice(deviceID); + return S_FALSE; + } + + + //NULL RENDERER// + //used to give the video stream somewhere to go to. + hr = CoCreateInstance(CLSID_NullRenderer, NULL, CLSCTX_INPROC_SERVER, IID_IBaseFilter, (void**)(&VD->pDestFilter)); + if (FAILED(hr)){ + if(verbose)printf("ERROR: Could not create filter - NullRenderer\n"); + stopDevice(deviceID); + return hr; + } + + hr = VD->pGraph->AddFilter(VD->pDestFilter, L"NullRenderer"); + if (FAILED(hr)){ + if(verbose)printf("ERROR: Could not add filter - NullRenderer\n"); + stopDevice(deviceID); + return hr; + } + + //RENDER STREAM// + //This is where the stream gets put together. + hr = VD->pCaptureGraph->RenderStream(&PIN_CATEGORY_PREVIEW, &MEDIATYPE_Video, VD->pVideoInputFilter, VD->pGrabberF, VD->pDestFilter); + + if (FAILED(hr)){ + if(verbose)printf("ERROR: Could not connect pins - RenderStream()\n"); + stopDevice(deviceID); + return hr; + } + + + //EXP - lets try setting the sync source to null - and make it run as fast as possible + { + IMediaFilter *pMediaFilter = 0; + hr = VD->pGraph->QueryInterface(IID_IMediaFilter, (void**)&pMediaFilter); + if (FAILED(hr)){ + if(verbose)printf("ERROR: Could not get IID_IMediaFilter interface\n"); + }else{ + pMediaFilter->SetSyncSource(NULL); + pMediaFilter->Release(); + } + } + + + //LETS RUN THE STREAM! + hr = VD->pControl->Run(); + + if (FAILED(hr)){ + if(verbose)printf("ERROR: Could not start graph\n"); + stopDevice(deviceID); + return hr; + } + + + //MAKE SURE THE DEVICE IS SENDING VIDEO BEFORE WE FINISH + if(!bCallback){ + + long bufferSize = VD->videoSize; + + while( hr != S_OK){ + hr = VD->pGrabber->GetCurrentBuffer(&bufferSize, (long *)VD->pBuffer); + Sleep(10); + } + + } + + if(verbose)printf("SETUP: Device is setup and ready to capture.\n\n"); + VD->readyToCapture = true; + + //Release filters - seen someone else do this + //looks like it solved the freezes + + //if we release this then we don't have access to the settings + //we release our video input filter but then reconnect with it + //each time we need to use it + VD->pVideoInputFilter->Release(); + VD->pVideoInputFilter = NULL; + + VD->pGrabberF->Release(); + VD->pGrabberF = NULL; + + VD->pDestFilter->Release(); + VD->pDestFilter = NULL; + + return S_OK; +} + + +// ---------------------------------------------------------------------- +// Returns number of good devices +// +// ---------------------------------------------------------------------- + +int videoInput::getDeviceCount(){ + + + ICreateDevEnum *pDevEnum = NULL; + IEnumMoniker *pEnum = NULL; + int deviceCounter = 0; + + HRESULT hr = CoCreateInstance(CLSID_SystemDeviceEnum, NULL, + CLSCTX_INPROC_SERVER, IID_ICreateDevEnum, + reinterpret_cast(&pDevEnum)); + + + if (SUCCEEDED(hr)) + { + // Create an enumerator for the video capture category. + hr = pDevEnum->CreateClassEnumerator( + CLSID_VideoInputDeviceCategory, + &pEnum, 0); + + if(hr == S_OK){ + IMoniker *pMoniker = NULL; + while (pEnum->Next(1, &pMoniker, NULL) == S_OK){ + + IPropertyBag *pPropBag; + hr = pMoniker->BindToStorage(0, 0, IID_IPropertyBag, + (void**)(&pPropBag)); + + if (FAILED(hr)){ + pMoniker->Release(); + continue; // Skip this one, maybe the next one will work. + } + + pPropBag->Release(); + pPropBag = NULL; + + pMoniker->Release(); + pMoniker = NULL; + + deviceCounter++; + } + + pEnum->Release(); + pEnum = NULL; + } + + pDevEnum->Release(); + pDevEnum = NULL; + } + return deviceCounter; +} + + +// ---------------------------------------------------------------------- +// Do we need this? +// +// Enumerate all of the video input devices +// Return the filter with a matching friendly name +// ---------------------------------------------------------------------- + +HRESULT videoInput::getDevice(IBaseFilter** gottaFilter, int deviceId, WCHAR * wDeviceName, char * nDeviceName){ + BOOL done = false; + int deviceCounter = 0; + + // Create the System Device Enumerator. + ICreateDevEnum *pSysDevEnum = NULL; + HRESULT hr = CoCreateInstance(CLSID_SystemDeviceEnum, NULL, CLSCTX_INPROC_SERVER, IID_ICreateDevEnum, (void **)&pSysDevEnum); + if (FAILED(hr)) + { + return hr; + } + + // Obtain a class enumerator for the video input category. + IEnumMoniker *pEnumCat = NULL; + hr = pSysDevEnum->CreateClassEnumerator(CLSID_VideoInputDeviceCategory, &pEnumCat, 0); + + if (hr == S_OK) + { + // Enumerate the monikers. + IMoniker *pMoniker = NULL; + ULONG cFetched; + while ((pEnumCat->Next(1, &pMoniker, &cFetched) == S_OK) && (!done)) + { + if(deviceCounter == deviceId) + { + // Bind the first moniker to an object + IPropertyBag *pPropBag; + hr = pMoniker->BindToStorage(0, 0, IID_IPropertyBag, (void **)&pPropBag); + if (SUCCEEDED(hr)) + { + // To retrieve the filter's friendly name, do the following: + VARIANT varName; + VariantInit(&varName); + hr = pPropBag->Read(L"FriendlyName", &varName, 0); + if (SUCCEEDED(hr)) + { + + //copy the name to nDeviceName & wDeviceName + int count = 0; + while( varName.bstrVal[count] != 0x00 ) { + wDeviceName[count] = varName.bstrVal[count]; + nDeviceName[count] = (char)varName.bstrVal[count]; + count++; + } + + // We found it, so send it back to the caller + hr = pMoniker->BindToObject(NULL, NULL, IID_IBaseFilter, (void**)gottaFilter); + done = true; + } + VariantClear(&varName); + pPropBag->Release(); + pPropBag = NULL; + pMoniker->Release(); + pMoniker = NULL; + } + } + deviceCounter++; + } + pEnumCat->Release(); + pEnumCat = NULL; + } + pSysDevEnum->Release(); + pSysDevEnum = NULL; + + if (done) { + return hr; // found it, return native error + } else { + return VFW_E_NOT_FOUND; // didn't find it error + } +} + + +// ---------------------------------------------------------------------- +// Show the property pages for a filter +// This is stolen from the DX9 SDK +// ---------------------------------------------------------------------- + +HRESULT videoInput::ShowFilterPropertyPages(IBaseFilter *pFilter){ + + ISpecifyPropertyPages *pProp; + HRESULT hr = pFilter->QueryInterface(IID_ISpecifyPropertyPages, (void **)&pProp); + if (SUCCEEDED(hr)) + { + // Get the filter's name and IUnknown pointer. + FILTER_INFO FilterInfo; + hr = pFilter->QueryFilterInfo(&FilterInfo); + IUnknown *pFilterUnk; + pFilter->QueryInterface(IID_IUnknown, (void **)&pFilterUnk); + + // Show the page. + CAUUID caGUID; + pProp->GetPages(&caGUID); + pProp->Release(); + OleCreatePropertyFrame( + NULL, // Parent window + 0, 0, // Reserved + FilterInfo.achName, // Caption for the dialog box + 1, // Number of objects (just the filter) + &pFilterUnk, // Array of object pointers. + caGUID.cElems, // Number of property pages + caGUID.pElems, // Array of property page CLSIDs + 0, // Locale identifier + 0, NULL // Reserved + ); + + // Clean up. + if(pFilterUnk)pFilterUnk->Release(); + if(FilterInfo.pGraph)FilterInfo.pGraph->Release(); + CoTaskMemFree(caGUID.pElems); + } + return hr; +} + + +// ---------------------------------------------------------------------- +// This code was also brazenly stolen from the DX9 SDK +// Pass it a file name in wszPath, and it will save the filter graph to that file. +// ---------------------------------------------------------------------- + +HRESULT videoInput::SaveGraphFile(IGraphBuilder *pGraph, WCHAR *wszPath) { + const WCHAR wszStreamName[] = L"ActiveMovieGraph"; + HRESULT hr; + IStorage *pStorage = NULL; + + // First, create a document file which will hold the GRF file + hr = StgCreateDocfile( + wszPath, + STGM_CREATE | STGM_TRANSACTED | STGM_READWRITE | STGM_SHARE_EXCLUSIVE, + 0, &pStorage); + if(FAILED(hr)) + { + return hr; + } + + // Next, create a stream to store. + IStream *pStream; + hr = pStorage->CreateStream( + wszStreamName, + STGM_WRITE | STGM_CREATE | STGM_SHARE_EXCLUSIVE, + 0, 0, &pStream); + if (FAILED(hr)) + { + pStorage->Release(); + return hr; + } + + // The IPersistStream converts a stream into a persistent object. + IPersistStream *pPersist = NULL; + pGraph->QueryInterface(IID_IPersistStream, reinterpret_cast(&pPersist)); + hr = pPersist->Save(pStream, TRUE); + pStream->Release(); + pPersist->Release(); + if (SUCCEEDED(hr)) + { + hr = pStorage->Commit(STGC_DEFAULT); + } + pStorage->Release(); + return hr; +} + + +// ---------------------------------------------------------------------- +// For changing the input types +// +// ---------------------------------------------------------------------- + +HRESULT videoInput::routeCrossbar(ICaptureGraphBuilder2 **ppBuild, IBaseFilter **pVidInFilter, int conType, GUID captureMode){ + + //create local ICaptureGraphBuilder2 + ICaptureGraphBuilder2 *pBuild = NULL; + pBuild = *ppBuild; + + //create local IBaseFilter + IBaseFilter *pVidFilter = NULL; + pVidFilter = * pVidInFilter; + + // Search upstream for a crossbar. + IAMCrossbar *pXBar1 = NULL; + HRESULT hr = pBuild->FindInterface(&LOOK_UPSTREAM_ONLY, NULL, pVidFilter, + IID_IAMCrossbar, (void**)&pXBar1); + if (SUCCEEDED(hr)) + { + + bool foundDevice = false; + + if(verbose)printf("SETUP: You are not a webcam! Setting Crossbar\n"); + pXBar1->Release(); + + IAMCrossbar *Crossbar; + hr = pBuild->FindInterface(&captureMode, &MEDIATYPE_Interleaved, pVidFilter, IID_IAMCrossbar, (void **)&Crossbar); + + if(hr != NOERROR){ + hr = pBuild->FindInterface(&captureMode, &MEDIATYPE_Video, pVidFilter, IID_IAMCrossbar, (void **)&Crossbar); + } + + LONG lInpin, lOutpin; + hr = Crossbar->get_PinCounts(&lOutpin , &lInpin); + + BOOL IPin=TRUE; LONG pIndex=0 , pRIndex=0 , pType=0; + + while( pIndex < lInpin) + { + hr = Crossbar->get_CrossbarPinInfo( IPin , pIndex , &pRIndex , &pType); + + if( pType == conType){ + if(verbose)printf("SETUP: Found Physical Interface"); + + switch(conType){ + + case PhysConn_Video_Composite: + if(verbose)printf(" - Composite\n"); + break; + case PhysConn_Video_SVideo: + if(verbose)printf(" - S-Video\n"); + break; + case PhysConn_Video_Tuner: + if(verbose)printf(" - Tuner\n"); + break; + case PhysConn_Video_USB: + if(verbose)printf(" - USB\n"); + break; + case PhysConn_Video_1394: + if(verbose)printf(" - Firewire\n"); + break; + } + + foundDevice = true; + break; + } + pIndex++; + + } + + if(foundDevice){ + BOOL OPin=FALSE; LONG pOIndex=0 , pORIndex=0 , pOType=0; + while( pOIndex < lOutpin) + { + hr = Crossbar->get_CrossbarPinInfo( OPin , pOIndex , &pORIndex , &pOType); + if( pOType == PhysConn_Video_VideoDecoder) + break; + } + Crossbar->Route(pOIndex,pIndex); + }else{ + if(verbose)printf("SETUP: Didn't find specified Physical Connection type. Using Defualt. \n"); + } + + //we only free the crossbar when we close or restart the device + //we were getting a crash otherwise + //if(Crossbar)Crossbar->Release(); + //if(Crossbar)Crossbar = NULL; + + if(pXBar1)pXBar1->Release(); + if(pXBar1)pXBar1 = NULL; + + }else{ + if(verbose)printf("SETUP: You are a webcam or snazzy firewire cam! No Crossbar needed\n"); + return hr; + } + + return hr; +} + diff --git a/videoInputSrcAndDemos/libs/videoInput/videoInput.h b/videoInputSrcAndDemos/libs/videoInput/videoInput.h index 4244902..369ed2c 100755 --- a/videoInputSrcAndDemos/libs/videoInput/videoInput.h +++ b/videoInputSrcAndDemos/libs/videoInput/videoInput.h @@ -1,385 +1,408 @@ -#ifndef _VIDEOINPUT -#define _VIDEOINPUT - -//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -//IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -//FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -//AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -//LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -//OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -//THE SOFTWARE. - -////////////////////////////////////////////////////////// -//Written by Theodore Watson - theo.watson@gmail.com // -//Do whatever you want with this code but if you find // -//a bug or make an improvement I would love to know! // -// // -//Warning This code is experimental // -//use at your own risk :) // -////////////////////////////////////////////////////////// -///////////////////////////////////////////////////////// -/* Shoutouts - -Thanks to: - - Dillip Kumar Kara for crossbar code. - Zachary Lieberman for getting me into this stuff - and for being so generous with time and code. - The guys at Potion Design for helping me with VC++ - Josh Fisher for being a serious C++ nerd :) - Golan Levin for helping me debug the strangest - and slowest bug in the world! - - And all the people using this library who send in - bugs, suggestions and improvements who keep me working on - the next version - yeah thanks a lot ;) - -*/ -///////////////////////////////////////////////////////// - - - -#include -#include -#include -#include -#include - -//this is for TryEnterCriticalSection -#ifndef _WIN32_WINNT - # define _WIN32_WINNT 0x400 -#endif -#include - - -//Example Usage -/* - //create a videoInput object - videoInput VI; - - //Prints out a list of available devices and returns num of devices found - int numDevices = VI.listDevices(); - - int device1 = 0; //this could be any deviceID that shows up in listDevices - int device2 = 1; //this could be any deviceID that shows up in listDevices - - //if you want to capture at a different frame rate (default is 30) - //specify it here, you are not guaranteed to get this fps though. - //VI.setIdealFramerate(dev, 60); - - //setup the first device - there are a number of options: - - VI.setupDevice(device1); //setup the first device with the default settings - //VI.setupDevice(device1, VI_COMPOSITE); //or setup device with specific connection type - //VI.setupDevice(device1, 320, 240); //or setup device with specified video size - //VI.setupDevice(device1, 320, 240, VI_COMPOSITE); //or setup device with video size and connection type - - //VI.setFormat(device1, VI_NTSC_M); //if your card doesn't remember what format it should be - //call this with the appropriate format listed above - //NOTE: must be called after setupDevice! - - //optionally setup a second (or third, fourth ...) device - same options as above - VI.setupDevice(device2); - - //As requested width and height can not always be accomodated - //make sure to check the size once the device is setup - - int width = VI.getWidth(device1); - int height = VI.getHeight(device1); - int size = VI.getSize(device1); - - unsigned char * yourBuffer1 = new unsigned char[size]; - unsigned char * yourBuffer2 = new unsigned char[size]; - - //to get the data from the device first check if the data is new - if(VI.isFrameNew(device1)){ - VI.getPixels(device1, yourBuffer1, false, false); //fills pixels as a BGR (for openCV) unsigned char array - no flipping - VI.getPixels(device1, yourBuffer2, true, true); //fills pixels as a RGB (for openGL) unsigned char array - flipping! - } - - //same applies to device2 etc - - //to get a settings dialog for the device - VI.showSettingsWindow(device1); - - - //Shut down devices properly - VI.stopDevice(device1); - VI.stopDevice(device2); -*/ - - -////////////////////////////////////// VARS AND DEFS ////////////////////////////////// - - -//STUFF YOU CAN CHANGE - -//change for verbose debug info -static bool verbose = true; - -//if you need VI to use multi threaded com -//#define VI_COM_MULTI_THREADED - -//STUFF YOU DON'T CHANGE - -//videoInput defines -#define VI_VERSION 0.1995 -#define VI_MAX_CAMERAS 20 -#define VI_NUM_TYPES 18 //DON'T TOUCH -#define VI_NUM_FORMATS 18 //DON'T TOUCH - -//defines for setPhyCon - tuner is not as well supported as composite and s-video -#define VI_COMPOSITE 0 -#define VI_S_VIDEO 1 -#define VI_TUNER 2 -#define VI_USB 3 -#define VI_1394 4 - -//defines for formats -#define VI_NTSC_M 0 -#define VI_PAL_B 1 -#define VI_PAL_D 2 -#define VI_PAL_G 3 -#define VI_PAL_H 4 -#define VI_PAL_I 5 -#define VI_PAL_M 6 -#define VI_PAL_N 7 -#define VI_PAL_NC 8 -#define VI_SECAM_B 9 -#define VI_SECAM_D 10 -#define VI_SECAM_G 11 -#define VI_SECAM_H 12 -#define VI_SECAM_K 13 -#define VI_SECAM_K1 14 -#define VI_SECAM_L 15 -#define VI_NTSC_M_J 16 -#define VI_NTSC_433 17 - - -//allows us to directShow classes here with the includes in the cpp -struct ICaptureGraphBuilder2; -struct IGraphBuilder; -struct IBaseFilter; -struct IAMCrossbar; -struct IMediaControl; -struct ISampleGrabber; -struct IMediaEventEx; -struct IAMStreamConfig; -struct _AMMediaType; -class SampleGrabberCallback; -typedef _AMMediaType AM_MEDIA_TYPE; - -//keeps track of how many instances of VI are being used -//don't touch -static int comInitCount = 0; - - -//////////////////////////////////////// VIDEO DEVICE /////////////////////////////////// - -class videoDevice{ - - - public: - - videoDevice(); - void setSize(int w, int h); - void NukeDownstream(IBaseFilter *pBF); - void destroyGraph(); - ~videoDevice(); - - int videoSize; - int width; - int height; - int tryWidth; - int tryHeight; - - ICaptureGraphBuilder2 *pCaptureGraph; // Capture graph builder object - IGraphBuilder *pGraph; // Graph builder object - IMediaControl *pControl; // Media control object - IBaseFilter *pVideoInputFilter; // Video Capture filter - IBaseFilter *pGrabberF; - IBaseFilter * pDestFilter; - IAMStreamConfig *streamConf; - ISampleGrabber * pGrabber; // Grabs frame - AM_MEDIA_TYPE * pAmMediaType; - - IMediaEventEx * pMediaEvent; - - GUID videoType; - long formatType; - - SampleGrabberCallback * sgCallback; - - bool tryDiffSize; - bool useCrossbar; - bool readyToCapture; - bool sizeSet; - bool setupStarted; - bool specificFormat; - bool autoReconnect; - int nFramesForReconnect; - unsigned long nFramesRunning; - int connection; - int storeConn; - int myID; - long requestedFrameTime; //ie fps - - char nDeviceName[255]; - WCHAR wDeviceName[255]; - - unsigned char * pixels; - char * pBuffer; - -}; - - - - -////////////////////////////////////// VIDEO INPUT ///////////////////////////////////// - - - -class videoInput{ - - public: - videoInput(); - ~videoInput(); - - //turns off console messages - default is to print messages - static void setVerbose(bool _verbose); - - //Functions in rough order they should be used. - static int listDevices(bool silent = false); - - //needs to be called after listDevices - otherwise returns NULL - static char * getDeviceName(int deviceID); - - //choose to use callback based capture - or single threaded - void setUseCallback(bool useCallback); - - //call before setupDevice - //directshow will try and get the closest possible framerate to what is requested - void setIdealFramerate(int deviceID, int idealFramerate); - - //some devices will stop delivering frames after a while - this method gives you the option to try and reconnect - //to a device if videoInput detects that a device has stopped delivering frames. - //you MUST CALL isFrameNew every app loop for this to have any effect - void setAutoReconnectOnFreeze(int deviceNumber, bool doReconnect, int numMissedFramesBeforeReconnect); - - //Choose one of these four to setup your device - bool setupDevice(int deviceID); - bool setupDevice(int deviceID, int w, int h); - - //These two are only for capture cards - //USB and Firewire cameras souldn't specify connection - bool setupDevice(int deviceID, int connection); - bool setupDevice(int deviceID, int w, int h, int connection); - - //If you need to you can set your NTSC/PAL/SECAM - //preference here. if it is available it will be used. - //see #defines above for available formats - eg VI_NTSC_M or VI_PAL_B - //should be called after setupDevice - //can be called multiple times - bool setFormat(int deviceNumber, int format); - - //Tells you when a new frame has arrived - you should call this if you have specified setAutoReconnectOnFreeze to true - bool isFrameNew(int deviceID); - - bool isDeviceSetup(int deviceID); - - //Returns the pixels - flipRedAndBlue toggles RGB/BGR flipping - and you can flip the image too - unsigned char * getPixels(int deviceID, bool flipRedAndBlue = true, bool flipImage = false); - - //Or pass in a buffer for getPixels to fill returns true if successful. - bool getPixels(int id, unsigned char * pixels, bool flipRedAndBlue = true, bool flipImage = false); - - //Launches a pop up settings window - //For some reason in GLUT you have to call it twice each time. - void showSettingsWindow(int deviceID); - - //Manual control over settings thanks..... - //These are experimental for now. - bool setVideoSettingFilter(int deviceID, long Property, long lValue, long Flags = NULL, bool useDefaultValue = false); - bool setVideoSettingFilterPct(int deviceID, long Property, float pctValue, long Flags = NULL); - bool getVideoSettingFilter(int deviceID, long Property, long &min, long &max, long &SteppingDelta, long ¤tValue, long &flags, long &defaultValue); - - bool setVideoSettingCamera(int deviceID, long Property, long lValue, long Flags = NULL, bool useDefaultValue = false); - bool setVideoSettingCameraPct(int deviceID, long Property, float pctValue, long Flags = NULL); - bool getVideoSettingCamera(int deviceID, long Property, long &min, long &max, long &SteppingDelta, long ¤tValue, long &flags, long &defaultValue); - - //bool setVideoSettingCam(int deviceID, long Property, long lValue, long Flags = NULL, bool useDefaultValue = false); - - //get width, height and number of pixels - int getWidth(int deviceID); - int getHeight(int deviceID); - int getSize(int deviceID); - - //completely stops and frees a device - void stopDevice(int deviceID); - - //as above but then sets it up with same settings - bool restartDevice(int deviceID); - - //number of devices available - int devicesFound; - - long propBrightness; - long propContrast; - long propHue; - long propSaturation; - long propSharpness; - long propGamma; - long propColorEnable; - long propWhiteBalance; - long propBacklightCompensation; - long propGain; - - long propPan; - long propTilt; - long propRoll; - long propZoom; - long propExposure; - long propIris; - long propFocus; - - - private: - void setPhyCon(int deviceID, int conn); - void setAttemptCaptureSize(int deviceID, int w, int h); - bool setup(int deviceID); - void processPixels(unsigned char * src, unsigned char * dst, int width, int height, bool bRGB, bool bFlip); - int start(int deviceID, videoDevice * VD); - int getDeviceCount(); - void getMediaSubtypeAsString(GUID type, char * typeAsString); - - HRESULT getDevice(IBaseFilter **pSrcFilter, int deviceID, WCHAR * wDeviceName, char * nDeviceName); - static HRESULT ShowFilterPropertyPages(IBaseFilter *pFilter); - HRESULT SaveGraphFile(IGraphBuilder *pGraph, WCHAR *wszPath); - HRESULT routeCrossbar(ICaptureGraphBuilder2 **ppBuild, IBaseFilter **pVidInFilter, int conType, GUID captureMode); - - //don't touch - static bool comInit(); - static bool comUnInit(); - - int connection; - int callbackSetCount; - bool bCallback; - - GUID CAPTURE_MODE; - - //Extra video subtypes - GUID MEDIASUBTYPE_Y800; - GUID MEDIASUBTYPE_Y8; - GUID MEDIASUBTYPE_GREY; - - videoDevice * VDList[VI_MAX_CAMERAS]; - GUID mediaSubtypes[VI_NUM_TYPES]; - long formatTypes[VI_NUM_FORMATS]; - - static void __cdecl basicThread(void * objPtr); - - static char deviceNames[VI_MAX_CAMERAS][255]; - -}; - - #endif +#ifndef _VIDEOINPUT +#define _VIDEOINPUT + +//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +//IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +//FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +//AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +//LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +//OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +//THE SOFTWARE. + +////////////////////////////////////////////////////////// +//Written by Theodore Watson - theo.watson@gmail.com // +//Do whatever you want with this code but if you find // +//a bug or make an improvement I would love to know! // +// // +//Warning This code is experimental // +//use at your own risk :) // +////////////////////////////////////////////////////////// +///////////////////////////////////////////////////////// +/* Shoutouts + +Thanks to: + + Dillip Kumar Kara for crossbar code. + Zachary Lieberman for getting me into this stuff + and for being so generous with time and code. + The guys at Potion Design for helping me with VC++ + Josh Fisher for being a serious C++ nerd :) + Golan Levin for helping me debug the strangest + and slowest bug in the world! + + And all the people using this library who send in + bugs, suggestions and improvements who keep me working on + the next version - yeah thanks a lot ;) + +*/ +///////////////////////////////////////////////////////// + + + +#include +#include +#include +#include +#include +#include +#include + +//this is for TryEnterCriticalSection +#ifndef _WIN32_WINNT + # define _WIN32_WINNT 0x400 +#endif +#include + + +//Example Usage +/* + //create a videoInput object + videoInput VI; + + //Prints out a list of available devices and returns num of devices found + int numDevices = VI.listDevices(); + + int device1 = 0; //this could be any deviceID that shows up in listDevices + int device2 = 1; //this could be any deviceID that shows up in listDevices + + //if you want to capture at a different frame rate (default is 30) + //specify it here, you are not guaranteed to get this fps though. + //VI.setIdealFramerate(dev, 60); + + //setup the first device - there are a number of options: + + VI.setupDevice(device1); //setup the first device with the default settings + //VI.setupDevice(device1, VI_COMPOSITE); //or setup device with specific connection type + //VI.setupDevice(device1, 320, 240); //or setup device with specified video size + //VI.setupDevice(device1, 320, 240, VI_COMPOSITE); //or setup device with video size and connection type + + //VI.setFormat(device1, VI_NTSC_M); //if your card doesn't remember what format it should be + //call this with the appropriate format listed above + //NOTE: must be called after setupDevice! + + //optionally setup a second (or third, fourth ...) device - same options as above + VI.setupDevice(device2); + + //As requested width and height can not always be accomodated + //make sure to check the size once the device is setup + + int width = VI.getWidth(device1); + int height = VI.getHeight(device1); + int size = VI.getSize(device1); + + unsigned char * yourBuffer1 = new unsigned char[size]; + unsigned char * yourBuffer2 = new unsigned char[size]; + + //to get the data from the device first check if the data is new + if(VI.isFrameNew(device1)){ + VI.getPixels(device1, yourBuffer1, false, false); //fills pixels as a BGR (for openCV) unsigned char array - no flipping + VI.getPixels(device1, yourBuffer2, true, true); //fills pixels as a RGB (for openGL) unsigned char array - flipping! + } + + //same applies to device2 etc + + //to get a settings dialog for the device + VI.showSettingsWindow(device1); + + + //Shut down devices properly + VI.stopDevice(device1); + VI.stopDevice(device2); +*/ + + +////////////////////////////////////// VARS AND DEFS ////////////////////////////////// + + +//STUFF YOU DON'T CHANGE + +//videoInput defines +#define VI_VERSION 0.200 +#define VI_MAX_CAMERAS 20 +#define VI_NUM_TYPES 19 //DON'T TOUCH +#define VI_NUM_FORMATS 18 //DON'T TOUCH + +//defines for setPhyCon - tuner is not as well supported as composite and s-video +#define VI_COMPOSITE 0 +#define VI_S_VIDEO 1 +#define VI_TUNER 2 +#define VI_USB 3 +#define VI_1394 4 + +//defines for formats +#define VI_NTSC_M 0 +#define VI_PAL_B 1 +#define VI_PAL_D 2 +#define VI_PAL_G 3 +#define VI_PAL_H 4 +#define VI_PAL_I 5 +#define VI_PAL_M 6 +#define VI_PAL_N 7 +#define VI_PAL_NC 8 +#define VI_SECAM_B 9 +#define VI_SECAM_D 10 +#define VI_SECAM_G 11 +#define VI_SECAM_H 12 +#define VI_SECAM_K 13 +#define VI_SECAM_K1 14 +#define VI_SECAM_L 15 +#define VI_NTSC_M_J 16 +#define VI_NTSC_433 17 + +// added by gameover +#define VI_MEDIASUBTYPE_RGB24 0 +#define VI_MEDIASUBTYPE_RGB32 1 +#define VI_MEDIASUBTYPE_RGB555 2 +#define VI_MEDIASUBTYPE_RGB565 3 +#define VI_MEDIASUBTYPE_YUY2 4 +#define VI_MEDIASUBTYPE_YVYU 5 +#define VI_MEDIASUBTYPE_YUYV 6 +#define VI_MEDIASUBTYPE_IYUV 7 +#define VI_MEDIASUBTYPE_UYVY 8 +#define VI_MEDIASUBTYPE_YV12 9 +#define VI_MEDIASUBTYPE_YVU9 10 +#define VI_MEDIASUBTYPE_Y411 11 +#define VI_MEDIASUBTYPE_Y41P 12 +#define VI_MEDIASUBTYPE_Y211 13 +#define VI_MEDIASUBTYPE_AYUV 14 +#define VI_MEDIASUBTYPE_Y800 15 +#define VI_MEDIASUBTYPE_Y8 16 +#define VI_MEDIASUBTYPE_GREY 17 +#define VI_MEDIASUBTYPE_MJPG 18 + +//allows us to directShow classes here with the includes in the cpp +struct ICaptureGraphBuilder2; +struct IGraphBuilder; +struct IBaseFilter; +struct IAMCrossbar; +struct IMediaControl; +struct ISampleGrabber; +struct IMediaEventEx; +struct IAMStreamConfig; +struct _AMMediaType; +class SampleGrabberCallback; +typedef _AMMediaType AM_MEDIA_TYPE; + +//keeps track of how many instances of VI are being used +//don't touch +static int comInitCount = 0; + + +//////////////////////////////////////// VIDEO DEVICE /////////////////////////////////// + +class videoDevice{ + + + public: + + videoDevice(); + void setSize(int w, int h); + void NukeDownstream(IBaseFilter *pBF); + void destroyGraph(); + ~videoDevice(); + + int videoSize; + int width; + int height; + int tryWidth; + int tryHeight; + + ICaptureGraphBuilder2 *pCaptureGraph; // Capture graph builder object + IGraphBuilder *pGraph; // Graph builder object + IMediaControl *pControl; // Media control object + IBaseFilter *pVideoInputFilter; // Video Capture filter + IBaseFilter *pGrabberF; + IBaseFilter * pDestFilter; + IAMStreamConfig *streamConf; + ISampleGrabber * pGrabber; // Grabs frame + AM_MEDIA_TYPE * pAmMediaType; + + IMediaEventEx * pMediaEvent; + + GUID videoType; + long formatType; + + SampleGrabberCallback * sgCallback; + + bool tryDiffSize; + bool useCrossbar; + bool readyToCapture; + bool sizeSet; + bool setupStarted; + bool specificFormat; + bool autoReconnect; + int nFramesForReconnect; + unsigned long nFramesRunning; + int connection; + int storeConn; + int myID; + long requestedFrameTime; //ie fps + + char nDeviceName[255]; + WCHAR wDeviceName[255]; + + unsigned char * pixels; + char * pBuffer; + +}; + + + + +////////////////////////////////////// VIDEO INPUT ///////////////////////////////////// + + + +class videoInput{ + + public: + videoInput(); + ~videoInput(); + + //turns off console messages - default is to print messages + static void setVerbose(bool _verbose); + + //this allows for multithreaded use of VI ( default is single threaded ). + //call this before any videoInput calls. + //note if your app has other COM calls then you should set VIs COM usage to match the other COM mode + static void setComMultiThreaded(bool bMulti); + + //Functions in rough order they should be used. + static int listDevices(bool silent = false); + static std::vector getDeviceList(); + + //needs to be called after listDevices - otherwise returns NULL + static char * getDeviceName(int deviceID); + static int getDeviceIDFromName(char * name); + + //choose to use callback based capture - or single threaded + void setUseCallback(bool useCallback); + + //call before setupDevice + //directshow will try and get the closest possible framerate to what is requested + void setIdealFramerate(int deviceID, int idealFramerate); + + //some devices will stop delivering frames after a while - this method gives you the option to try and reconnect + //to a device if videoInput detects that a device has stopped delivering frames. + //you MUST CALL isFrameNew every app loop for this to have any effect + void setAutoReconnectOnFreeze(int deviceNumber, bool doReconnect, int numMissedFramesBeforeReconnect); + + //Choose one of these four to setup your device + bool setupDevice(int deviceID); + bool setupDevice(int deviceID, int w, int h); + + //These two are only for capture cards + //USB and Firewire cameras souldn't specify connection + bool setupDevice(int deviceID, int connection); + bool setupDevice(int deviceID, int w, int h, int connection); + + //If you need to you can set your NTSC/PAL/SECAM + //preference here. if it is available it will be used. + //see #defines above for available formats - eg VI_NTSC_M or VI_PAL_B + //should be called after setupDevice + //can be called multiple times + bool setFormat(int deviceNumber, int format); + void setRequestedMediaSubType(int mediatype); // added by gameover + + //Tells you when a new frame has arrived - you should call this if you have specified setAutoReconnectOnFreeze to true + bool isFrameNew(int deviceID); + + bool isDeviceSetup(int deviceID); + + //Returns the pixels - flipRedAndBlue toggles RGB/BGR flipping - and you can flip the image too + unsigned char * getPixels(int deviceID, bool flipRedAndBlue = true, bool flipImage = false); + + //Or pass in a buffer for getPixels to fill returns true if successful. + bool getPixels(int id, unsigned char * pixels, bool flipRedAndBlue = true, bool flipImage = false); + + //Launches a pop up settings window + //For some reason in GLUT you have to call it twice each time. + void showSettingsWindow(int deviceID); + + //Manual control over settings thanks..... + //These are experimental for now. + bool setVideoSettingFilter(int deviceID, long Property, long lValue, long Flags = NULL, bool useDefaultValue = false); + bool setVideoSettingFilterPct(int deviceID, long Property, float pctValue, long Flags = NULL); + bool getVideoSettingFilter(int deviceID, long Property, long &min, long &max, long &SteppingDelta, long ¤tValue, long &flags, long &defaultValue); + + bool setVideoSettingCamera(int deviceID, long Property, long lValue, long Flags = NULL, bool useDefaultValue = false); + bool setVideoSettingCameraPct(int deviceID, long Property, float pctValue, long Flags = NULL); + bool getVideoSettingCamera(int deviceID, long Property, long &min, long &max, long &SteppingDelta, long ¤tValue, long &flags, long &defaultValue); + + //bool setVideoSettingCam(int deviceID, long Property, long lValue, long Flags = NULL, bool useDefaultValue = false); + + //get width, height and number of pixels + int getWidth(int deviceID); + int getHeight(int deviceID); + int getSize(int deviceID); + + //completely stops and frees a device + void stopDevice(int deviceID); + + //as above but then sets it up with same settings + bool restartDevice(int deviceID); + + //number of devices available + int devicesFound; + + long propBrightness; + long propContrast; + long propHue; + long propSaturation; + long propSharpness; + long propGamma; + long propColorEnable; + long propWhiteBalance; + long propBacklightCompensation; + long propGain; + + long propPan; + long propTilt; + long propRoll; + long propZoom; + long propExposure; + long propIris; + long propFocus; + + private: + + void setPhyCon(int deviceID, int conn); + void setAttemptCaptureSize(int deviceID, int w, int h); + bool setup(int deviceID); + void processPixels(unsigned char * src, unsigned char * dst, int width, int height, bool bRGB, bool bFlip); + int start(int deviceID, videoDevice * VD); + int getDeviceCount(); + void getMediaSubtypeAsString(GUID type, char * typeAsString); + + HRESULT getDevice(IBaseFilter **pSrcFilter, int deviceID, WCHAR * wDeviceName, char * nDeviceName); + static HRESULT ShowFilterPropertyPages(IBaseFilter *pFilter); + HRESULT SaveGraphFile(IGraphBuilder *pGraph, WCHAR *wszPath); + HRESULT routeCrossbar(ICaptureGraphBuilder2 **ppBuild, IBaseFilter **pVidInFilter, int conType, GUID captureMode); + + //don't touch + static bool comInit(); + static bool comUnInit(); + + int connection; + int callbackSetCount; + bool bCallback; + + GUID CAPTURE_MODE; + GUID requestedMediaSubType; + + //Extra video subtypes + GUID MEDIASUBTYPE_Y800; + GUID MEDIASUBTYPE_Y8; + GUID MEDIASUBTYPE_GREY; + + videoDevice * VDList[VI_MAX_CAMERAS]; + GUID mediaSubtypes[VI_NUM_TYPES]; + long formatTypes[VI_NUM_FORMATS]; + + static void __cdecl basicThread(void * objPtr); + + static char deviceNames[VI_MAX_CAMERAS][255]; + +}; + + #endif